买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】执行内核的指令的方法、调试内核系统的方法和内核系统_三星电子株式会社_201810893707.8 

申请/专利权人:三星电子株式会社

申请日:2018-08-07

公开(公告)日:2024-04-19

公开(公告)号:CN109669722B

主分类号:G06F9/30

分类号:G06F9/30

优先权:["20171013 KR 10-2017-0133470"]

专利状态码:有效-授权

法律状态:2024.04.19#授权;2020.09.25#实质审查的生效;2019.04.23#公开

摘要:一种执行内核的指令的方法包括:调用第一函数;在第一函数中调用第二函数;以及基于与第二函数结束并返回到的位置相对应的第二函数返回地址来更新包括被调用函数的路径信息在内的路径标识符。

主权项:1.一种执行内核的指令的方法,所述方法包括:调用第一函数;使用与所述第一函数结束并返回到的位置相对应的第一函数返回地址来设置指示被调用函数的数量的调用深度和包括被调用函数的路径信息在内的路径标识符;在所述第一函数中调用第二函数;使用与所述第二函数结束并返回到的位置相对应的第二函数返回地址来更新所述路径标识符;将所述路径标识符存储在非易失性存储器中;以及通过将所述路径标识符和所述调用深度与调试设备中存储的简档中的每一项进行比较来提取所述路径信息,其中,所述简档包括将函数路径信息与所述路径标识符和所述调用深度相匹配的信息。

全文数据:执行内核的指令的方法、调试内核系统的方法和内核系统相关申请的交叉引用本申请要求于2017年10月13日在韩国知识产权局递交的韩国专利申请No.10-2017-0133470的优先权,在此通过全文引用将其公开内容并入本文中。技术领域符合示例实施例的方法和装置涉及内核系统,并且更具体地涉及执行内核的指令的方法、收集内核的调试信息的方法、以及使用该方法和装置的调试方法和设备。背景技术在包括计算系统在内的各种系统中,内核执行各种操作或指令或命令。当内核在执行在内存中不断增加的地址处存储的指令的同时调用函数时,内核跳转到存储该函数的地址并执行该函数。内核执行指令时可能发生各种错误。系统可执行包括错误分析在内的调试操作以确定错误及其原因。为了执行如上所述的调试操作,需要存储函数和指令的日志信息。发明内容一个或多个示例实施例提供了用于在包括内核在内的内核系统中存储指示在内核操作期间被调用函数的路径的信息并使用该信息来执行调试操作的方法和设备。根据示例实施例的一方面,提供了一种执行内核的指令的方法,该方法包括:调用第一函数;在第一函数中调用第二函数;基于与第二函数结束并返回到的位置相对应的第二函数返回地址来更新包括被调用函数的路径信息在内的路径标识符。根据另一示例实施例的一方面,提供了一种内核系统,包括:内核,被配置为执行指令并当调用第一函数时更新包括被调用函数的路径信息在内的路径标识符;非易失性存储器,被配置为存储用于执行指令的数据和路径标识符;以及调试逻辑单元,被配置为在调试模式下访问非易失性存储器并读取路径标识符,该内核还被配置为响应于备份事件,将路径标识符存储在非易失性存储器中。根据又一示例实施例的一方面,提供了一种对调试设备的内核系统进行调试的方法,该方法包括:向内核系统发送请求调试信息的调试控制信号;从内核系统接收包括与由内核系统调用的函数相对应的函数路径信息在内的路径标识符;以及将从内核系统接收的路径标识符与调试设备中存储的简档相比较,以及基于该比较从路径标识符中提取函数路径信息。附图说明根据结合附图给出的以下详细描述,将更清楚地理解示例实施例的以上和其他方面、特点和优点,在附图中:图1是根据示例实施例的内核系统的视图;图2是根据示例实施例的寄存器单元的视图;图3是根据示例实施例的指令执行处理的视图;图4是根据示例实施例的路径管理逻辑单元的视图;图5是根据示例实施例的内核的指令执行的流程图;图6是根据示例实施例的路径管理逻辑单元的视图;图7是根据示例实施例的更新路径管理逻辑单元的执行的流程图;图8是根据示例实施例的路径管理逻辑的视图;图9A是根据示例实施例的指令执行处理的视图;图9B是根据示例实施例的指令执行处理的视图;图9C是根据示例实施例的指令执行处理的视图;图10是根据示例实施例的内核系统和调试设备的视图;图11是根据示例实施例的调试设备的视图;图12是根据示例实施例的简档存储器的视图;图13是根据示例实施例的内核系统和调试设备的视图;以及图14是根据示例实施例的计算平台的视图。具体实施方式下文中,将参考附图来详细描述示例实施例。如本领域中常见的,以功能块、单元和或模块为单位在附图中描述并示出了示例实施例。本领域技术人员将意识到:这些块、单元和或模块是通过诸如逻辑电路、分立组件、微处理器、硬连线电路、存储器元件、布线连接等的电子或光学电路来物理实现的,其可以使用基于半导体的制造技术或其它制造技术来形成。在块、单元和或模块由微处理器或类似物实现的情况下,可以使用软件例如,微代码对它们进行编程以执行本文讨论的各种功能,并且可以可选地由固件和或软件驱动。备选地,每个块、单元和或模块可以通过专用硬件来实现或实现为执行一些功能的专用硬件和执行其他功能的处理器例如,一个或多个经编程的微处理器和相关联的电路的组合。此外,实施例的每个块、单元和或模块可以物理地分成两个或更多个交互和分立的块、单元和或模块。此外,块、单元和或模块可以物理地组合为更复杂的块、单元和或模块。图1示出了根据示例实施例的内核系统10。内核系统10可以包括内核100、调试逻辑单元200、非易失性存储器300和易失性存储器400。内核100可以包括解码器110、控制逻辑单元120、算术单元140、寄存器单元150和路径管理逻辑单元160。解码器110和控制逻辑单元120可被统称为控制逻辑单元130。解码器110可以对从外部接收的指令进行解码并向控制逻辑单元120提供经解码的指令。例如,内核100可以从内核100外部的非易失性存储器300接收指令,且也可以从易失性存储器400接收在易失性存储器400中高速缓存的指令。此外,例如,解码器110可以从寄存器单元150中包括的指令寄存器接收指令,该指令由指令寄存器从外部存储器接收,并且可以对接收到的指令进行解码以将其向控制逻辑单元120提供。控制逻辑单元120可以控制与经解码的指令相对应的操作。例如,控制逻辑单元120可以控制算术单元140来执行预定的计算操作。寄存器单元150可以包括其中存储各条寄存器信息的多个寄存器。各条寄存器信息可以分别存储在寄存器中。例如,寄存器单元150可以包括链接寄存器158,其存储指示函数被调用时返回的位置的返回地址RA。除了链接寄存器158之外,寄存器150还可以包括以下至少一项:指令寄存器、地址寄存器、数据寄存器、程序计数器寄存器、堆栈指针寄存器和程序状态寄存器。内核100可以基于寄存器单元150中存储的各条寄存器信息来执行指令,并因此可以执行包括多个指令在内的程序。将参照图2来更详细地描述寄存器单元150。当内核100正在执行指令的同时调用函数时,路径管理逻辑单元160可以管理与调用函数的路径有关的信息。例如,路径管理逻辑单元160可以从寄存器单元150的链接寄存器158接收返回地址RA,并且可以使用返回地址RA来生成并更新包括与被调用函数的路径有关的信息在内的路径标识符PI。当内核100中发生备份事件时,控制逻辑单元120可向路径管理逻辑单元160发送备份事件发生信号E_OCCUR,并且路径管理逻辑单元160可以基于备份事件发生信号E_OCCUR将存储的路径标识符PI和调用深度CD存储在非易失性存储器300中。响应于调试请求,可向调试逻辑单元200提供非易失性存储器300中存储的路径标识符PI和调用深度CD,并可将路径标识符PI和调用深度CD用于调试操作。将参照以下附图来描述路径管理逻辑单元160的更详细的操作。响应于从内核系统10外部的主机或者调试设备接收的调试控制信号,调试逻辑单元200可以向内核100和或非易失性存储器300提供用于请求调试信息的调试信息请求信号DBG_REQ1和DBG_REQ2。响应于第一调试信息请求信号DBG_REQ1,内核100可以向调试逻辑单元200提供各种调试信息DBG_INFO。响应于第二调试信息请求信号DBG_REQ2,非易失性存储器300可向调试逻辑单元200提供存储的路径标识符PI和调用深度CD。如上所述,调试逻辑单元200可以基于从外部主机接收到的调试控制信号向内核100和非易失性存储器300提供调试信息请求信号DBG_REQ1和DBG_REQ2,以接收调试信息DBG_INFO、路径标识符PI和调用深度CD。然而,示例实施例不限于此。例如,调试逻辑单元200可以按规律间隔向非易失性存储器300提供第二调试信息请求信号DBG_REQ2,以接收路径标识符PI和调用深度CD。非易失性存储器300可以存储内核100的操作所需的指令和数据。内核100可以基于寄存器单元150中存储的地址信息来访问非易失性存储器300,并且非易失性存储器300可以向内核100提供各种指令和或数据。非易失性存储器300可以包括以下至少一项:NAND闪存、垂直NANDVNAND、NOR闪存、电阻随机存取存储器RRAM、相变RAMPRAM、磁阻RAMMRAM、铁电RAMFRAM、自旋转移矩RAMSTT-RAM等。易失性存储器400存储在由内核100执行程序时具有高使用频率的数据,从而减少对具有比易失性存储器400相对较慢的输入输出速度的外部存储器设备的访问频率。易失性存储器400可以被实现为高速缓存,并且例如内核100可以在程序执行期间使用高速缓存400中存储的高速缓存数据。易失性存储器400可以包括以下至少一项:动态随机存取存储器DRAM、同步DRAMSDRAM、双倍数据速率DDRSDRAM、低功率双倍数据速率LPDDRSDRAM、图形双倍数据速率GDDRSDRAM、RambusDRAMRDRAM、静态RAMSRAM等。内核100、调试逻辑单元200和易失性存储器400可以被实现为单个设备。例如,应用处理器可以包括内核100、调试逻辑单元200和易失性存储器400,并且内核系统10可以包括应用处理器和应用处理器外部的非易失性存储器300。然而,示例实施例不限于此。例如,内核100、调试逻辑单元200、非易失性存储器300和易失性存储器400可以被实现为单个设备。例如,内核100、调试逻辑单元200、非易失性存储器300和易失性存储器400可被实现在单个板上。根据示例实施例,路径管理逻辑单元160可以使用内核100中的链接寄存器158中存储的返回地址RA来生成并更新包括将被调用的函数的信息在内的路径标识符PI,并且还可以生成并更新代表被调用的函数的数量的调用深度CD。当发生备份事件时,路径管理逻辑单元160可以基于由控制逻辑单元120提供的备份事件发生信号E_OCCUR,向非易失性存储器300存储路径标识符PI和调用深度CD。调试逻辑单元200可以根据外部主机的调试控制信号向非易失性存储器300提供第二调试信息请求信号DBG_REQ2,以接收路径标识符PI和调用深度CD。调试逻辑单元200可以向外部主机提供所接收的路径标识符PI和调用深度CD。外部主机可以使用路径标识符PI和调用深度CD来获得内核100中的被调用函数的路径。通过仅存储包括路径信息在内的路径标识符PI和调用深度CD,而不存储如上所述调用的所有函数的日志信息,仅少量的非易失性存储器300被用于存储调试必需的信息。图2是根据示例实施例的寄存器单元150的视图。寄存器单元150可以包括地址寄存器152、程序计数器PC寄存器154、堆栈指针SP寄存器156和链接寄存器158。图2中公开的寄存器单元150的配置仅仅是示例,并且寄存器单元150的配置可以仅包括图2中公开的一些组件,且还可以包括其他各种类型的寄存器。此外,例如,程序计数器寄存器154、堆栈指针寄存器156和链接寄存器158可以是一个寄存器组155中包括的寄存器。当向外部存储器写数据或从外部存储器读数据时,地址寄存器152可以存储指示数据的地址的值。程序计数器寄存器154可以存储指示内核当前正在执行的指令的地址的值。堆栈指针寄存器156可以存储最后压入当前使用的堆栈区域中的数据的地址。在内核的指令执行中,存储要由内核执行的指令的地址可以不断增加,并且程序计数器寄存器154中存储的值可以顺序地增加。然而,以下情况也可能发生:存储要由内核执行的指令的地址不是不断增加的,而是跳转到另一个地址。跳转到存储指令的地址可被称为地址跳转。例如,如果在正在执行指令时调用函数,则可以执行去往存储指令的地址的地址跳转。链接寄存器158可以存储指示函数结束和返回的位置的地址的返回地址。根据示例实施例,当调用函数时,内核可以通过使用链接寄存器158中存储的返回地址来生成包括被调用函数的路径信息在内的路径标识符。例如,参考图1,当调用函数时,内核100中的路径管理逻辑单元160可以从链接寄存器158接收链接寄存器158中存储的返回地址RA,并使用返回地址RA来生成或更新路径标识符PI。在内核100正在执行指令时,可调用多个函数。例如,可以调用第一函数,并且可在第一函数中调用第二函数。当调用第一函数时,路径管理逻辑单元160可以使用链接寄存器158中存储的返回地址来生成路径标识符,并当调用第二函数时,可以使用链接寄存器158中存储的返回地址来更新路径标识符。通过使用返回地址来简化和存储被调用函数的路径信息,可以减少在存储调试信息时所消耗的非易失性存储器的容量。图3是根据示例实施例的指令执行处理135的视图。内核可以顺序地执行多个指令。此外,在内核执行多个指令的指令执行处理135期间可以调用函数。图3示出了以下示例处理:其中,在指令执行处理135期间调用a函数,在a函数中调用b函数,并且在b函数中调用c函数。可以在内核的指令执行处理135期间调用a函数①。当调用a函数时,可以发生地址跳转。因此,当调用a函数时,可以在链接寄存器158中存储指示a函数结束和返回的位置的地址的第一返回地址RA_a。链接寄存器158可向易失性存储器400发送第一返回地址RA_a,并且易失性存储器400可以存储该第一返回地址RA_a。可以在a函数的指令执行处理期间调用b函数②。当调用b函数时,可以发生另一个地址跳转。因此,当调用b函数时,可以在链接寄存器158中存储指示b函数结束和返回的位置的地址的第二返回地址RA_b。链接寄存器158可向易失性存储器400发送第二返回地址RA_b,并且易失性存储器400可以存储该第二返回地址RA_b。可以在b函数的指令执行处理期间调用c函数③。当调用c函数时,可以发生另一个地址跳转。因此,当调用c函数时,可以在链接寄存器158中存储指示c函数结束和返回的位置的地址的第三返回地址RA_c。链接寄存器158可向易失性存储器400发送第三返回地址RA_c,并且易失性存储器400可以存储该第三返回地址RA_c。当如图3所示调用多个函数时,内核外部的调试设备可能需要在指令执行期间或之后执行与内核的指令执行有关的调试操作。对于调试操作,内核可以将被调用函数的路径信息存储在非易失性存储器中。路径信息可以包括与被调用函数的列表和顺序有关的信息。在被调用函数的路径信息被存储在非易失性存储器中时,在存储被调用函数的日志信息诸如自变量或者返回值或者存储所有返回地址RA_a、RA_b和RA_c的情况下,可以使用大容量的非易失性存储器。内核可以使用小容量的非易失性存储器来生成并更新路径标识符,以存储被调用的函数的路径信息。例如,参考图1,路径管理逻辑单元160可以使用返回地址RA来生成并更新路径标识符PI。将参考以下附图来更详细地描述路径标识符PI的生成和更新。图4是根据示例实施例的路径管理逻辑单元160a的视图。路径管理逻辑单元160a可以包括路径标识符生成器170a。路径标识符生成器170a可以包括路径标识符存储器171a和路径标识符更新逻辑单元172a。路径标识符更新逻辑单元172a可以包括函数调用逻辑单元173a和函数弹出逻辑单元174a。当调用函数时或者被调用函数结束时,路径标识符生成器170a可以生成或者更新路径标识符PI。路径标识符生成器170a可以以硬件、软件和固件的任意组合来实现。路径标识符存储器171a可以存储路径标识符PI。当调用新函数或者被调用的函数结束时,路径标识符存储器171a可以向路径标识符更新逻辑单元172a提供路径标识符存储器171a中存储的路径标识符PI。路径标识符存储器171a可以接收由路径标识符更新逻辑单元172a更新的路径标识符PI并且存储经更新的路径标识符PI。例如,当接收到经更新的路径标识符PI时,路径标识符存储器171a可以移除路径标识符存储器171a中之前存储的路径标识符PI并存储经更新的路径标识符PI。路径标识符生成器170a可以从内核中的控制逻辑单元接收备份事件发生信号E_OCCUR。当备份事件发生信号E_OCCUR指示发生备份事件时,路径标识符存储器171a可以向内核外部的非易失性存储器发送路径标识符存储器171a中存储的路径标识符PI并将其加以存储。路径标识符更新逻辑单元172a可以接收当前调用函数或结束函数的返回地址RA_CUR以及程序计数器寄存器中存储的PC值。如果在根据PC值的地址中存储的指令指示“函数调用”,则路径标识符PI可被路径标识符更新逻辑单元172a中的函数调用逻辑单元173a更新。如果在根据PC值的地址中存储的指令指示“函数结束”,则路径标识符PI可被路径标识符更新逻辑单元172a中的函数弹出逻辑单元174a更新。当调用函数时,函数调用逻辑单元173a可以使用当前调用函数的返回地址RA_CUR来更新从路径标识符存储器171a接收的路径标识符PI。例如,函数调用逻辑单元173a可以通过对从路径标识符存储器171a接收的路径标识符PI和返回地址RA_CUR执行第一算术运算来生成经更新的路径标识符PI。例如,函数调用逻辑单元173a可以通过对从路径标识符存储器171a接收的路径标识符PI和返回地址RA_CUR执行相加运算来生成经更新的路径标识符PI。当被调用的函数结束时,函数弹出逻辑单元174a可以使用当前结束函数的返回地址RA_CUR来更新从路径标识符存储器171a接收的路径标识符PI。例如,函数弹出逻辑单元174a可以通过对从路径标识符存储器171a接收的路径标识符PI和返回地址RA_CUR执行第二算术运算来生成经更新的路径标识符PI。第二算术运算可以是第一算术运算的逆运算。例如,函数弹出逻辑单元174a可以通过执行从路径标识符存储器171a接收的路径标识符PI中减去返回地址RA_CUR的运算来生成经更新的路径标识符PI。图5是根据示例实施例的内核的指令执行的流程图。图5示出了调用多个函数的示例实施例。具体地说,图5示出了当调用第一函数然后调用第二函数时内核的指令执行的流程图。图5可参考图1的内核系统10来描述。在操作S120中,内核100可以在指令执行期间调用第一函数。内核100可以执行第一函数中的至少一个指令,但不限于此。在第一函数调用操作S120之后,内核100可以继续进行下一操作而无需另一指令执行。在操作S140中,在内核100的操作期间调用第一函数后,在第一函数结束前可以在第一函数中调用第二函数。当调用第二函数时,链接寄存器158可以存储指示第二函数结束和返回的位置的第二函数的返回地址。内核100可以将第二函数的返回地址存储在内核100外部的易失性存储器400中。然而,示例实施例不限于此。当存在内核100中能够执行高速缓存功能的存储器时,内核100可以将第二函数的返回地址存储在内核100中执行高速缓存功能的存储器中。在操作S160中,内核100可以使用第二函数的返回地址来更新内核100中存储的路径标识符PI。例如,内核100中的路径管理逻辑单元160可以通过对路径管理逻辑单元160中存储的路径标识符PI和第二函数的返回地址执行算术运算来生成经更新的路径标识符PI。例如,内核100中的路径管理逻辑单元160可以通过对路径管理逻辑单元160中存储的路径标识符PI和第二函数的返回地址执行相加运算来生成经更新的路径标识符PI。在调用第二函数后,内核100可以通过将内核100中存储的调用深度CD增加1来更新呼叫深度CD。将参考图6和7更详细地描述调用深度。执行内核100的指令的方法还可以包括结束第二函数的操作,并且当第二函数结束时,内核100可以使用第二函数的返回地址来更新路径标识符和调用深度。例如,路径管理逻辑单元160可以通过执行从路径管理逻辑单元160中存储的路径标识符中减去第二函数的返回地址的运算来生成经更新的路径标识符,并且可以将所存储的调用深度减去1。当发生备份事件时,内核100可以在备份事件发生之前,将内核100中存储的路径标识符存储在内核100外部的非易失性存储器300中。备份事件可以包括不同类型的备份事件,这将参考图9A、9B和9C以更详细地描述。图6是根据示例实施例的路径管理逻辑单元160b的视图。路径管理逻辑单元160b可以包括路径标识符生成器170b和调用深度生成器180b。本文将不再给出对与图4相同的路径标识符生成器170b的重复描述。调用深度生成器180b可以包括调用深度存储器181b和调用深度更新逻辑单元182b。调用深度更新逻辑单元182b可以包括调用深度加法逻辑单元183b和调用深度减法逻辑单元184b。当在内核中调用函数或者函数结束时,调用深度生成器180b可以生成或者更新调用深度。调用深度生成器180b可以以硬件、软件和固件的任意组合来实现。调用深度存储器181b可以存储调用深度。当调用新的函数或者被调用的函数结束时,调用深度存储器181b可以向调用深度更新逻辑单元182b提供调用深度存储器181b中存储的调用深度CD。调用深度存储器181b可以接收由调用深度更新逻辑单元182b更新的调用深度CD并且存储该经更新的调用深度CD。例如,当接收到经更新的调用深度CD时,调用深度存储器181b可以移除调用深度存储器181b中之前存储的调用深度CD并存储经更新的调用深度CD。调用深度生成器180b可以从内核中的控制逻辑单元接收备份事件发生信号E_OCCUR。当备份事件发生信号E_OCCUR指示发生备份事件时,调用深度存储器181b可以向内核外部的非易失性存储器发送调用深度存储器181b中存储的调用深度CD并将其加以存储。调用深度更新逻辑单元182b可以接收程序计数器寄存器中存储的PC值。如果在根据PC值的地址中存储的指令指示“函数调用”,则调用深度CD可被调用深度更新逻辑单元182b中的调用深度加法逻辑单元183b更新。如果在根据PC值的地址中存储的指令指示“函数结束”,则调用深度CD可被调用深度更新逻辑单元182b中的调用深度减法逻辑单元184b更新。当调用函数时,调用深度加法逻辑单元183b可以将从调用深度存储器181b接收的调用深度CD增加1,以生成经更新的调用深度CD。当被调用的函数结束时,调用深度减法逻辑单元184b可以将从调用深度存储器181b接收的调用深度CD减去1,以生成经更新的调用深度CD。根据与图6一致的示例实施例,内核中的路径管理逻辑单元160b既执行在每次调用函数或者函数结束时的对路径标识符的更新操作,也执行对调用深度的更新操作,使得在发生备份事件时可以向非易失性存储器提供路径标识符和调用深度。在调试设备的请求下,可以向调试设备发送非易失性存储器中存储的路径标识符和调用深度。调试设备可以通过使用调用深度以及路径标识符来提取被调用的函数的路径信息。通过额外使用调用深度可以提高路径信息提取的可靠性。图7是根据示例实施例的对路径管理逻辑单元的执行加以更新的流程图。可参考图6对图7进行描述。在操作S210中,路径管理逻辑单元160b可以确定在与接收到的当前PC值相对应的位置中存储的指令是指示函数调用FC还是指示函数结束POP弹出。以下,可以通过将调用函数的情况INSTRUCTION@PC≡’FC’与被调用的函数结束的情况INSTRUCTION@PC≡’POP’进行划分来更新路径标识符和调用深度。在操作S220中,当在与当前PC值相对应的位置中存储的指令指示函数调用FC时,路径标识符生成器170b中的函数调用逻辑单元173b将当前被调用的函数的返回地址RA_CUR与路径标识符存储器171b中存储的路径标识符PI_EX相加,以生成经更新的路径标识符PI_UPD。在操作S230中,调用深度生成器180b中的调用深度加法逻辑单元183b可以将调用深度存储器181b中存储的调用深度CD_EX加上1,以生成经更新的调用深度CD_UPD。在操作S240中,当在与当前PC值相对应的位置中存储的指令指示函数结束POP时,路径标识符生成器170b中的函数弹出逻辑单元174b从路径标识符存储器171b中存储的路径标识符PI_EX中减去当前结束函数的返回地址RA_CUR,以生成经更新的路径标识符PI_UPD。在操作S250中,调用深度生成器180b中的调用深度减法逻辑单元184b可以将调用深度存储器181b中存储的调用深度CD_EX减去1,以生成经更新的调用深度CD_UPD。图8是根据示例实施例的路径管理逻辑单元160c的视图。路径管理逻辑单元160c可以包括路径标识符生成器170c和调用深度生成器180c。本文将不再给出与图4和6相同的路径标识符生成器170c和调用深度生成器180c的重复描述。如图8所示的路径标识符生成器170c可以使用第一运算来管理第一路径标识符PI_1并使用第二运算来管理第二路径标识符PI_2。例如,当调用函数时,函数调用逻辑单元173c可以对从路径标识符存储器171c接收的第一路径标识符PI_1和被调用的函数的返回地址RA_CUR执行第一运算,以生成经更新的第一路径标识符PI_1,并对从路径标识符存储器171c接收的第二路径标识符PI_2和被调用的函数的返回地址RA_CUR执行第二运算,以生成经更新的第二路径标识符PI_2。另外,例如,当被调用的函数结束时,函数弹出逻辑单元174c可以对从路径标识符存储器171c接收的第一路径标识符PI_1和结束的函数的返回地址RA_CUR执行第三运算,以生成经更新的第一路径标识符PI_1,并对从路径标识符存储器171c接收的第二路径标识符PI_2和结束的函数的返回地址RA_CUR执行第四运算,以生成经更新的第二路径标识符PI_2。第三运算可以是第一运算的逆运算,并且第四运算可以是第二运算的逆运算。路径标识符存储器171c可以存储如上描述被更新的第一路径标识符PI_1和第二路径标识符PI_2。路径标识符存储器171c可以基于从外部例如,控制逻辑单元接收的备份事件发生信号E_OCCUR来将存储的第一路径标识符PI_1和存储的第二路径标识符PI_2存储到非易失性存储器中。根据与图8一致的示例实施例,可以使用第一路径标识符PI_1和第二路径标识符PI_2,而不是一个路径标识符,并且调试设备可以通过使用第一路径标识符PI_1、第二路径标识符PI_2和调用深度CD来提取被调用的函数的路径信息。通过使用多个路径标识符来提取路径信息,可以提高路径信息提取的可靠性。图9A是根据示例实施例的指令执行处理135a的视图。内核可以顺序地执行多个指令。此外,在内核执行多个指令的指令执行处理135a期间可以调用多个函数。图9A示出了在指令执行处理135a期间在c函数被调用之前发生异常EXCEPTION的示例处理。如图所示,在a函数中调用b函数,并在b函数中调用c函数。可以在内核的指令执行处理135a期间调用a函数①。当调用a函数时,可以在链接寄存器158a和易失性存储器400a中存储第一返回地址RA_a。路径管理逻辑单元160a可以通过将路径标识符PI初始化为第一返回地址RA_a并将调用深度CD初始化为1来生成路径标识符PI。可以在a函数中调用b函数②。当调用b函数时,可以在链接寄存器158a和易失性存储器400a中存储第二返回地址RA_b。另外,路径管理逻辑单元160a可以通过将第二返回地址RA_b与先前存储的路径标识符PI相加来更新路径标识符PI。尽管运算被描述为是求和运算,示例实施例不限于此,并且可以使用各种算术运算。路径管理逻辑单元160a可以将调用深度CD通过增加1来更新为2。在b函数中调用c函数之前,可能发生EXCEPTION。EXCEPTION可以包括在指令执行期间在硬件或软件中发生错误的情况和或内核由于外部请求而进入特定操作模式的情况。内核的特定操作模式可以包括但不限于中断请求IRQ模式、快速中断请求FIQ模式、管理员调用SVC模式和ABorTABT模式。如果函数中发生EXCEPTION,则可以确定发生了第一类型的备份事件。当发生第一类型的备份事件时,外部主机或调试设备可以在发生第一类型的备份事件之前执行与内核的指令执行有关的调试操作。因此,内核中的控制逻辑单元可以向路径管理逻辑单元160a发送备份事件发生信号E_OCCUR。路径管理逻辑单元160a可以基于对备份事件发生信号E_OCCUR的接收在内核外部的非易失性存储器300a中存储所存储的路径标识符PI和调用深度CD。所存储的路径标识符PI可以是第一返回地址RA_a和第二返回地址RA_b之和,并且所存储的调用深度CD可以是2。当EXCEPTION如此发生时,即当发生第一类型的备份事件时,内核可以将包括被调用的函数的路径信息在内的路径标识符PI和指示被调用的函数的数量的调用深度CD存储在非易失性存储器中,直到EXCEPTION发生为止。内核外部的主机或调试设备可以从非易失性存储器获得存储的路径标识符PI和调用深度CD,并且使用它们来提取被调用的函数的路径信息,直到EXCEPTION发生为止。图9B是根据示例实施例的指令执行处理135b的视图。内核可以顺序地执行多个指令。此外,在内核执行多个指令的指令执行处理135b期间可以调用多个函数。图9B示出了以下示例处理:在指令执行处理135b期间调用a函数,在a函数中调用b函数,并且在b函数中调用c函数。图9B中描述的条件仅仅是为了便于解释,并且图9B的描述可以应用于调用多于一个函数时的所有情况。可以在内核的指令执行处理135b期间调用a函数①。当调用a函数时,可以在链接寄存器158b和易失性存储器400b中存储第一返回地址RA_a。路径管理逻辑单元160b可以通过将路径标识符PI初始化为第一返回地址RA_a并将调用深度CD初始化为1来生成路径标识符PI。可以在a函数中调用b函数②。当调用a函数时,可以在链接寄存器158b和易失性存储器400b中存储第二返回地址RA_b。另外,路径管理逻辑单元160b可以通过将第二返回地址RA_b与先前存储的路径标识符PI相加来更新路径标识符PI。尽管运算被描述为是求和运算,示例实施例不限于此,并且可以使用各种算术运算。路径管理逻辑单元160b可以将调用深度CD通过增加1来更新为2。可以在b函数中调用c函数③。当调用c函数时,可以在链接寄存器158b和易失性存储器400b中存储第三返回地址RA_c。另外,路径管理逻辑单元160b可以通过将第三返回地址RA_c与先前存储的路径标识符PI相加来更新路径标识符PI。路径管理逻辑单元160b可以将调用深度CD通过增加1来更新为3。c函数可以在c函数中不调用另一个函数的情况下结束④。当函数结束而在特定函数中不调用另一个函数时,该特定函数可被称为叶函数。当叶函数以这种方式结束时,可以说发生了第二类型的备份事件。当发生第二类型的备份事件时,内核中的控制逻辑单元可以向路径管理逻辑单元160b发送备份事件发生信号E_OCCUR。路径管理逻辑单元160b可以基于对备份事件发生信号E_OCCUR的接收在内核外部的非易失性存储器300b中存储所存储的路径标识符PI和调用深度CD。这里,所存储的路径标识符PI可以是第一返回地址RA_a、第二返回地址RA_b和第三返回地址RA_c之和,并且所存储的调用深度CD可以是3。当叶函数如此结束时,即当发生第二类型的备份事件时,内核可以将包括被调用的函数的路径信息在内的路径标识符PI和指示被调用的函数的数量的调用深度CD存储在非易失性存储器中,直到叶函数结束为止。内核外部的主机或调试设备可以从非易失性存储器获得存储的路径标识符PI和调用深度CD,并且使用它们来提取被调用的函数的路径信息,直到叶函数结束为止。图9C是根据示例实施例的指令执行处理135c的视图。内核可以顺序地执行多个指令。此外,在内核执行多个指令的指令执行处理135c期间可以调用多个函数。图9C示出了以下示例处理:在指令执行处理135c期间调用a函数,在a函数中调用b函数,在b函数中调用c函数,以及在c函数结束后在b函数中调用d函数。图9C中描述的条件仅仅是为了便于解释,并且图9C的描述可以应用于在一个函数中调用多个函数的所有情况。关于从调用a函数到发生c函数结束的备份事件的描述,请参考图9B的描述。当c函数结束时④,路径管理逻辑单元可以将在c函数结束之前存储的路径标识符PI和调用深度CD存储在非易失性存储器300c中。例如,非易失性存储器300c可以将RA_a+RA_b+RA_c的值存储在与第一路径PATH_1相对应的路径标识符PI中,并且可以将值3存储在与第一路径PATH_1相对应的调用深度CD中。当c函数结束时④,路径管理逻辑单元还可以更新路径标识符PI和调用深度CD。路径管理逻辑单元可以通过从先前的路径标识符RA_a+RA_b+RA_c中减去结束的c函数的返回地址,来生成经更新的路径标识符RA_a+RA_b,并且可以通过从先前的调用深度3减去1,来生成经更新的调用深度2。c函数可以结束并且可以在b函数中调用d函数⑤。当调用d函数时,可以在链接寄存器和易失性存储器中存储第四返回地址RA_d。另外,路径管理逻辑单元可以通过将第四返回地址RA_d与先前存储的路径标识符相加来更新路径标识符。路径管理逻辑单元可以通过将调用深度加1,来将调用深度更新为3。d函数可以在d函数中不调用另一个函数的情况下结束⑥。即,d函数可以对应于叶函数,并且d函数的结束也可以对应于第二类型的备份事件。当d函数结束时⑥,路径管理逻辑单元可以将在d函数结束之前存储的路径标识符PI和调用深度CD存储在非易失性存储器300c中。例如,非易失性存储器300c可以将RA_a+RA_b+RA_d的值存储在与第二路径PATH_2相对应的路径标识符PI中,并且可以将值3存储在与第二路径PATH_2相对应的调用深度CD中。当d函数结束时⑥,路径管理逻辑单元还可以更新路径标识符PI和调用深度CD。路径管理逻辑单元可以通过从先前的路径标识符RA_a+RA_b+RA_d中减去结束的d函数的返回地址,来生成经更新的路径标识符RA_a+RA_b,并且可以通过从先前的调用深度3减去1,来生成经更新的调用深度2。这样,当在b函数中分别调用c函数和d函数时,可以存储包括a函数、b函数和c函数在内的用于第一路径PATH_1的路径标识符PI和调用深度CD,并且可以存储包括a函数、b函数和d函数在内的用于第二路径PATH_2的路径标识符PI和调用深度CD。图10是根据示例实施例的内核系统20和调试设备1000的视图。内核系统20可以包括调试逻辑单元200和非易失性存储器300,其仅仅公开了描述所需的配置,但是可以另外包括任何其他组件。本文将不再给出与图1至9C相同的内核系统20的重复描述。当调试设备1000期望执行与内核系统20中的内核的指令执行有关的调试操作时,调试设备1000可以向内核系统20提供调试控制信号DBG_CTRL。然而,这是一个示例,并且调试设备1000可以周期性地从内核系统20接收调试所需的信息。根据示例实施例,调试设备1000可以从内核系统20接收在执行指令时包括被调用的函数的路径信息在内的路径标识符PI和指示被调用的函数的数量的调用深度CD。将参考图11和12更详细地描述调试设备1000的路径信息的提取。调试逻辑单元200可以基于从调试设备1000接收的调试控制信号DBG_CTRL来向非易失性存储器300发送第二调试信息请求信号DBG_REQ2。调试逻辑单元200可以基于第二调试信息请求信号DBG_REQ2来访问非易失性存储器300,以获得路径标识符PI和调用深度CD。调试逻辑单元200可以向调试设备1000发送获得的路径标识符PI和调用深度CD。然而,这是一个示例操作,并且调试逻辑单元200可以按规律间隔从非易失性存储器300中获得与存储的路径相对应的路径标识符PI和调用深度CD。可以在非易失性存储器300中存储与在内核的指令执行期间调用的函数的路径相对应的路径标识符PI和调用深度CD。例如,当备份事件对应于图9A至9C时,内核系统20中的内核可以将所存储的路径标识符PI和调用深度CD存储在非易失性存储器300中。调试设备1000通过使用作为简化数据的路径标识符PI和调用深度CD来提取被调用的函数的路径信息,由此减少用于调试的非易失性存储器300的容量。图11是根据示例实施例的调试设备1000的视图。调试设备1000可以包括路径分析器1200和调试单元1400。路径分析器1200可以从路径分析器1200外部的内核系统接收路径标识符PI和调用深度CD。路径分析器1200可以从接收到的路径标识符PI和调用深度CD中提取被调用的函数的路径信息。路径分析器1200可以包括简档存储器1240和比较逻辑单元1220。简档存储器1240可以存储将被调用的函数的路径信息与路径标识符PI和调用深度CD相匹配的简档信息PFL_INFO。调试设备1000可以使用内核系统中的内核使用的函数以及在执行调试操作之前预先存储函数的位置的地址,来将简档信息PFL_INFO存储在简档存储器1240中。简档存储器1240可以被实现为调试设备1000中的任何存储空间的一部分。将参考图12更详细地描述简档存储器1240中存储的简档信思PFL_INFO。比较逻辑单元1220可以从内核系统中的调试逻辑单元接收路径标识符PI和调用深度CD,并且可以从简档存储器1240接收简档信息PFL_INFO。比较逻辑单元1220可以将接收到的路径标识符PI和调用深度CD与简档信息PFL_INFO相比较,以提取与接收到的路径标识符PI和调用深度CD相匹配的函数路径信息PATH_INFO。比较逻辑单元1220可以向调试单元1400提供函数路径信息PATH_INFO。调试单元1400可以从路径分析器1200接收函数路径信息PATH_INFO。调试单元1400可以使用从路径分析器1200接收的函数路径信息PATH_INFO来执行调试操作。这样,调试设备1000可以通过存储简档信息PFL_INFO,使用作为简化信息的接收到的路径标识符PI和调用深度CD,来从内核提取被调用的函数的函数路径信息PATH_INFO。图12是根据示例实施例的简档存储器1240的视图。简档存储器1240可以是其中调试设备使用在内核系统中的内核中使用的函数和函数预先存储的位置的地址来存储简档信息的存储器。简档存储器1240可以是调试设备中的任何存储空间的一部分。简档信息可以包括将函数路径信息PATH_INFO与路径标识符PI和调用深度CD相匹配的信息。例如,简档信息可以存储分别与第一至第五路径PATH_1至PATH_5相匹配的路径标识符PI和调用深度CD。例如,与调用a函数之后调用b函数之后调用c函数的第一路径PATH_1相对应的路径标识符PI可以存储与a函数的返回地址RA_a、b函数的返回地址RA_b、以及c函数的返回地址RA_c之和相等的值RA,并且与第一路径PATH_1相对应的调用深度CD可以存储3,其是被调用的函数的数量。参考图12的表可以理解:第二至第五路径PATH_2至PATH_5也以相同的方式存储。调试设备可以存储如上所述的简档信息。即使调试设备仅接收作为简化数据的路径标识符PI和调用深度CD,调试设备也可以通过与简档信息的匹配操作来提取被调用的函数的函数路径信息PATH_INFO,并且可将函数路径信息PATH_INFO用于调试操作。图13是根据示例实施例的内核系统30和调试设备1000的视图。内核系统30可以包括内核100、调试逻辑单元200、和非易失性存储器300,且还可以包括易失性存储器。调试设备1000可以包括路径分析器1200和调试单元1400,且还可以包括预测逻辑单元1600。本文将不再给出与图1至12相同的内核系统30和调试设备1000的重复描述。路径分析器1200可以通过将从内核系统30接收的路径标识符PI和调用深度CD与简档存储器1240中存储的简档信息PFL_INFO相匹配,来获得被调用的函数的函数路径信息PATH_INFO,并且调试单元1400可以使用函数路径信息PATH_INFO来执行与内核100的指令执行有关的调试操作。路径分析器1200还可以向预测逻辑单元1600提供所获得的函数路径信息PATH_INFO。预测逻辑单元1600可以使用被调用的函数的函数路径信息PATH_INFO来预测之后要调用的函数的信息。存在用于调用函数的各种方式,但由内核100执行的指令序列可以具有典型的模式。因此,当执行典型模式的指令时,可以基于已经调用的函数路径信息PATH_INFO来预测之后要调用的函数或指令。如果被调用的函数路径信息PATH_INFO匹配特定模式,则预测逻辑单元1600可以预测之后调用的函数或指令,并且可向内核系统30提供预测信息。这样,如果调试设备1000使用路径标识符PI和调用深度CD获得函数路径信息PATH_INFO,则调试设备1000可以调试函数路径信息PATH_INFO和在被调用的函数之后要执行的函数或指令这二者,直到调试设备1000获得函数路径信息PATH_INFO为止。图14是根据示例实施例的计算平台2000的视图。计算平台2000可以包括中央处理单元CPU系统2100、接口块2200、存储器设备2300、无线接口块2400和显示器2500。CPU系统2100可以经由接口块2200与存储器设备2300、无线接口块2400或显示器2500通信。CPU系统2100可以是包括图1中的内核100、调试逻辑单元200和易失性存储器400在内的系统。另外,CPU系统2100可以管理与包括与在CPU的指令执行期间调用的函数有关的路径信息在内的路径标识符和调用深度的有关信息,并且当发生备份事件时,可以通过接口块2200将备份事件存储在存储器设备2300中。CPU系统2100可以是单个设备,诸如应用处理器。接口块2200可以包括能够执行各种接口控制功能的一个或多个电路块。控制功能可以包括存储器访问控制、图形控制、输入输出接口控制或无线网络访问控制。每个电路块可以是单独的独立芯片,实现为CPU系统2100的一部分,或者CPU系统2100中的单独块。存储器设备2300可以经由接口块2200与CPU系统2100交换数据。无线接口块2400可以经由天线将计算平台2000连接到诸如移动通信网络或无线局域网LAN之类的无线网络。尽管以上已经具体示出和描述了示例实施例的各方面,但是将理解:在不脱离所附权利要求的精神和范围的情况下,可以在其中进行形式和细节上的各种改变。

权利要求:1.一种执行内核的指令的方法,所述方法包括:调用第一函数;在所述第一函数中调用第二函数;以及基于与所述第二函数结束并返回到的位置相对应的第二函数返回地址来更新包括被调用函数的路径信息在内的路径标识符。2.根据权利要求1所述的方法,其中,对所述路径标识符的更新包括:对所述路径标识符和所述第二函数返回地址执行算术运算。3.根据权利要求2所述的方法,其中,所述算术运算包括将所述第二函数返回地址与所述路径标识符相加。4.根据权利要求1所述的方法,还包括:在调用所述第二函数之后,将指示被调用函数的数量的调用深度增加1。5.根据权利要求4所述的方法,其中,所述路径标识符被存储在所述内核中,以及其中,所述方法还包括:响应于所述内核中的备份事件将所述内核中存储的所述路径标识符存储在非易失性存储器中。6.根据权利要求5所述的方法,其中,所述备份事件响应于所述内核中的异常而发生。7.根据权利要求5所述的方法,其中,所述备份事件响应于叶函数在被调用之后结束而不调用另一函数而发生。8.根据权利要求5所述的方法,其中,所述调用深度被存储在所述内核中,以及其中,所述方法还包括:响应于所述备份事件将所述内核中存储的所述调用深度存储在所述非易失性存储器中。9.根据权利要求4所述的方法,还包括:结束所述第二函数;基于所述第二函数返回地址来更新所述路径标识符;以及将所述调用深度减去1。10.根据权利要求1所述的方法,还包括:将所述第二函数返回地址存储在所述内核的链接寄存器中;以及将所述第二函数返回地址存储在易失性存储器中。11.一种内核系统,包括:内核,被配置为执行指令并当调用第一函数时更新包括被调用函数的路径信息在内的路径标识符;非易失性存储器,被配置为存储所述路径标识符和用于执行所述指令的数据;以及调试逻辑单元,被配置为在调试模式下访问所述非易失性存储器并读取所述路径标识符,其中,所述内核还被配置为响应于备份事件,将所述路径标识符存储在所述非易失性存储器中。12.根据权利要求11所述的内核系统,其中,所述非易失性存储器中存储的所述路径标识符指示在所述备份事件之前被调用的函数的多个返回地址之和。13.根据权利要求12所述的内核系统,其中,所述备份事件响应于所述内核中的异常而发生。14.根据权利要求12所述的内核系统,其中,所述备份事件响应于叶函数在被调用之后结束而不调用另一函数而发生。15.根据权利要求12所述的内核系统,其中,所述内核被配置为:在所述备份事件发生时,将指示在所述备份事件之前被调用的函数的数量的调用深度存储在所述非易失性存储器中。16.根据权利要求15所述的内核系统,其中,所述内核包括:路径标识符生成器,被配置为基于所述内核中的程序计数器“PC”值和函数的多个返回地址来更新所述路径标识符;以及调用深度生成器,被配置为基于所述内核中的所述PC值来更新所述调用深度。17.根据权利要求15所述的内核系统,其中,所述内核还被配置为:响应于所述第一函数结束,从所述路径标识符中减去指示与所述第一函数结束并返回到的位置相对应的第一函数结束地址的第一返回地址,以及将所述调用深度减去1。18.一种对调试设备的内核系统进行调试的方法,所述方法包括:向所述内核系统发送请求调试信息的调试控制信号;从所述内核系统接收包括与由所述内核系统调用的函数相对应的函数路径信息在内的路径标识符;以及将从所述内核系统接收的所述路径标识符与所述调试设备中存储的简档相比较,以及基于所述比较从所述路径标识符中提取所述函数路径信息。19.根据权利要求18所述的方法,其中,所述简档包括将所述路径标识符与所述函数路径信息相匹配的表。20.根据权利要求18所述的方法,还包括:接收指示被调用函数的数量的调用深度,其中,提取所述函数路径信息包括:将每个路径标识符和调用深度与所述简档相比较。

百度查询: 三星电子株式会社 执行内核的指令的方法、调试内核系统的方法和内核系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。