用于调试的地址转换跟踪消息生成的制作方法

文档序号:6348912阅读:124来源:国知局
专利名称:用于调试的地址转换跟踪消息生成的制作方法
技术领域
本公开一般地涉及半导体,并且更具体地涉及实现操作的调试模式的数据处理
O
背景技术
被称为IEEE IST05001或Nexus调试标准的IEEE标准是支持实时调试消息生成的已制定的实时调试标准。Nexus调试标准指定了用于向外部跟踪重建工具标识系统内的预定操作条件的机制。调试处理也用于开发用于数据处理系统的代码。非常期望实时地提供调试信息,而不干扰数据处理系统的正常操作,以对系统的操作保持透明。调试消息包括由数据处理系统生成的跟踪消息。跟踪消息可以包含用于与指令执行顺序有关的程序事件(程序跟踪消息发送)或者数据事件(数据读取消息发送、数据写入消息发送)的地址和数据信息。地址信息通常为必须被转换以标识被称为物理地址的物理存储位置的虚拟地址信息。与调试消息有关的虚拟地址信息与物理地址信息的相关性使得调试工具直接转发机制能够经由在使用虚拟地址的静态编译和链接时获得的指令列表来跟踪程序。然而,当该列表对于诸如OS小区、库函数等的运行时执行的预编译软件模块来说不可用时,问题出现了。在该情况下,程序列表不可用使得难以在执行时正确地跟踪和解释这些代码片段。在该情况下,不能确定性地将虚拟地址转换为物理地址能够妨碍在执行时实时生成调试消息。


本发明通过示例来说明并且不由附图来限制,在附图中,相同的附图标记表示类似的元件。为了简单和清楚而示出图中的元件,并且其不一定按比例绘制。图1以框图形式示出了根据本公开的一种形式的具有调试消息生成的数据处理系统;图2以框图形式示出了根据本公开的一种形式的图1的调试模块;图3以框图形式示出了根据本公开的一种形式的图2的跟踪消息请求模块;图4以流程图形式示出了根据本公开的一种形式的方法;
图5以图示形式示出了根据本公开的一种形式的示例性跟踪消息;图6以图示形式示出了根据现有技术的示例性跟踪消息;图7以图示形式示出了根据现有技术的示例性跟踪消息;以及图8以流程图形式示出了根据本公开的一种形式的方法;图9以图示形式示出了根据现有技术的示例性跟踪消息;图10以图示形式示出了根据现有技术的示例性跟踪消息;以及图11以图示形式示出了根据现有技术的示例性跟踪消息。
具体实施方式
在操作的调试模式期间,在数据处理器处确定指令流已造成物理存储器处的页跨越。作为响应,执行同步事件以提供与页跨越有关的物理地址信息,以便便于外部跟踪重建工具处的指令跟踪。例如,包括在物理页跨越出现之后要被执行的指令的物理地址的跟踪消息可以被提供到数据处理器的外部端子以由外部调试工具使用。将参考下述的图1-8来更好地理解本公开的各个方面。图1中所示的是支持在操作的调试模式期间跟踪消息发送的数据处理系统10。在数据处理系统10内的是全局互连12。在一种形式中,全局互连12是系统总线。可以使用其他形式的互连,例如包括交叉开关(crossbar)、点到点连接、以及光学和无线传输技术。 总线接口单元(BIU) 14经由双向耦合被耦合到全局互连12。在一种形式中,双向耦合是双向多导体总线,其中这里的多导体总线用跨越导体的斜线来代表。BIU 14双向地耦合到存储器管理单元(MMU) 16。MMU 16经由双向多导体总线而耦合到全局控制电路18的第一输入/输出端子。全局控制电路18的第二输入/输出端子经由双向多导体总线耦合到指令获取单元20的第一输入/输出端子。指令获取单元20具有经由多导体总线而耦合到指令解码器22的输入的输出。指令解码器22的输出耦合到执行单元M的输入。在一种形式中,执行单元M包括至少一个算术逻辑单元、至少一个浮点单元和至少一个乘法器电路。 在执行单元M内的是寄存器文件25。指令解码器22的输入/输出端子耦合到全局控制电路18的第三输入/输出端子。执行单元M的第一输入/输出端子耦合到全局控制电路 18的第四输入/输出端子。执行单元M和指令获取单元20也双向地耦合到MMU 16。调试模块26包括跟踪消息请求逻辑62并且具有耦合到全局控制电路18的第五输入/输出端子的输入/输出端子。载入/存储单元观具有双向地耦合到全局控制电路18的第六输入/输出端子的第一输入/输出端子。载入/存储单元观具有耦合到BIU 14的第一输入 /输出端子的第二输入/输出端子。载入/存储单元观具有耦合到执行单元M的第二输入/输出端子的第三输入/输出端子。BIU 14的第二输入/输出端子耦合到全局控制电路18的第七输入/输出端子。载入/存储单元观的输出提供数据虚拟地址(D_VADDR)并且耦合到MMU 16的第一输入和调试模块沈的第一输入。指令获取单元20的输出提供指令虚拟地址(I_VADDR)并且耦合到MMU 16的第二输入和调试模块沈的第二输入。MMU 16 的第一输出提供数据物理地址(D_PADDR)并且耦合到BIU 14的第一输入以及调试模块沈的第三输入。MMU 16的第二输出提供指令物理地址(I_PADDR)并且耦合到BIU 14的第二输入以及调试模块26的第四输入。存储器30经由双向耦合而耦合到全局互连12。调试模块沈具有经由双向多导体而耦合到多个调试端子40的第二输入/输出端子。多个调试端子40耦合到作为通常称为调试器或外部调试器的外部调试工具的外部开发系统36。在所示出的形式中,BIU 14、MMU 16、全局控制电路18、指令获取单元20、指令解码器22、具有寄存器文件25的执行单元24、 调试模块26和载入/存储单元观共同地形成数据处理器42,如图1中的虚线组所示。尽管全局控制电路18在图1中被示出为在分开的位置中,应当很好理解,全局控制电路18以及其他模块的模块和功能控制也可以以分布的方式实现并且被包括在数据处理系统10的各种其他系统块中的任何一个。例如,图3的调试控制模块60处示出的存储单元602可以包括作为控制电路18和寄存器文件25的一部分的寄存器字段。此外,在所示的实施例中, 全局控制18包括存储用于当前执行的进程的进程标识符(PID)的进程标识符(PID)寄存器19。全局控制18还向MMU 16提供PID。在操作中,数据处理系统10经由全局互连12与设备(未示出)通信。与数据处理器42通信的信息通过BIU 14传送。指令获取单元20在全局控制电路18的控制下从BIU 14获取数据处理器指令(即,处理器指令)。在全局控制电路18的控制下,所取回的指令被顺序地通信到用于解码的指令解码器22。执行单元M执行指令并且生成数据,该数据经由穿过全局控制电路18、BIU 14和全局互连12的耦合而存储在高速缓存(未示出)中或置于存储器30中。数据处理器42和数据处理系统10的操作的调试通过使用调试模块 26来执行,调试模块沈生成调试消息以用于由外部开发系统36进行分析。响应于来自外部开发系统36的这种激活,进入操作的测试或调试模式。在示出的形式中,调试模块沈被配置为接收数据虚拟地址、数据物理地址、指令虚拟地址、指令物理地址、来自BIU 14和载入/存储单元观的数据信息、以及来自全局控制18的信息。数据地址为数据驻留的地址, 而指令地址为指令驻留的地址。指令虚拟地址从指令获取单元20被提供到调试模块沈和 MMU 16。虚拟地址是未转换的地址,其需要一些进一步的处理或转换来获得其中信息正在驻留的物理存储位置的经转换的地址。该经转换的地址被称作为物理地址。MMU 16通过将存储器的虚拟页地址转换为相应的物理页地址来向BIU 14和调试模块沈提供指令物理地址。存储器的页是分组的连续单元,并且通常具有的大小为2的乘方,例如诸如4K字节页面、16K字节页面、64K字节页面等。载入/存储单元观向调试模块沈以及MMU 16提供数据虚拟地址。MMU 16向BIU 14以及调试模块沈提供数据物理地址。调试模块沈基于在一个或多个所接收地址处的信息而形成用于外部开发系统36的调试消息,这将在下面更详细地论述。调试消息的格式可以改变,并且将在下面结合图2至8来论述示例。图2中所示的是图1的调试模块沈的一部分的示例实施例,包括调试控制模块 60、跟踪消息请求模块62、消息生成模块64、存储位置602和输入/输出(I/O)模块66。调试控制模块60包括先进先出存储电路(FIFO) 70并且双向耦合到消息生成模块64和I/O 模块66。调试控制模块60还接收来自全局控制电路18、寄存器文件25等的信息,信息可以包括存储位置602代表的寄存器信息。I/O模块66双向耦合到调试端子40。跟踪消息请求模块62双向耦合到消息生成模块64,并且包括页跨越检测模块626。跟踪消息请求模块62耦合到指令物理地址(I_PADDR)、指令虚拟地址(I_VADDR)以及全局控制18。在调试操作期间,跟踪消息请求模块62是确定何时由消息生成模块64生成诸如预定格式的跟踪消息的同步事件的逻辑模块。消息生成模块64基于来自跟踪消息请求模块62的消息生成请求来生成某些调试消息。压缩模块68可以对由消息生成模块64生成的部分或全部消息执行消息压缩。所生成的消息被提供到调试控制模块60,其中它们在被发送之前被存储在消息FIFO 70中。从消息FIFO 70,调试消息经由I/O模块66被路由到调试端子40。在一个实施例中,跟踪消息请求模块62包括页跨越检测模块626,所述页跨越检测模块6 监控物理和虚拟总线处的指令流以确定何时从存储器的一个页到另一个页出现页跨越,由此使得跟踪消息请求模块62能够确定是否为物理页跨越请求生成调试消息, 所述调试消息包括用于新物理页中指令流的指令的物理地址信息。将参考图3至8进一步描述跟踪消息请求模块62和页跨越检测模块626以便理解。图3中所示的是跟踪消息请求模块62的部分和存储位置602的一个实施例。跟踪消息请求模块62的部分包括探听模块621、存储位置622、存储位置623、存储位置624、 存储位置625、页跨越检测模块6 和请求生成模块627。页跨越检测模块6 包括比较模块6261、比较模块6262、存储位置6263和存储位置6264。存储位置602被示出为包括存储位置611-615,其可以代表寄存器字段。存储位置611存储被标记为PAGE_SUE的指示存储器页大小的信息。存储位置612存储标记为SEQ_INST的信息,该信息当被断言时指示当前执行的指令在虚拟地址空间中与前面执行的指令连续,由此指示由于被采用的分支或者遭遇的例外而不执行当前的指令。存储位置613存储标记为DIR_BR的信息,该信息当被断言时指示由于被采用的直接分支而执行当前的指令。存储位置614存储标记为PADDR_EN的信息,该信息当被断言时指示启用物理地址报告。存储位置615存储标记为TM_EN的信息, 该信息当被断言时指示调试模块26要生成跟踪消息。探听模块621连接到总线I_VADDR、总线I_PADDR和存储位置622-625。存储位置 622和623连接到比较模块6261。存储位置拟4和625连接到比较模块6262。页跨越检测模块6 连接到请求生成模块627 (未示出)。存储位置611-615连接到跟踪消息请求模块 62 (未示出)。在操作期间,探听模块621监控例如探听总线I_VADDR和I_PADDR的总线I_VADDR 和总线I_PADDR上的信息,以确定每个被请求指令的物理和虚拟地址。与总线I_PADDR处的当前指令相关联的物理地址被标记为“PAC
,,并且被存储在存储位置622。与总线1_ PADDR处被访问的先前指令相关联的物理地址被标记为“PAC[-1]并且被存储在存储位置 623。与转换为PAC
的当前指令相关联的虚拟地址从总线I_VADDR来取回,被标记为 “VAC
”,并且被存储在存储位置624。与被转换为PAC[-1]的当前指令相关联的虚拟地址从总线I_VADDR来取回,被标记为“VAC[-1]”,并且被存储在存储位置625。将会理解,由于预获取,可以访问未被执行的那些指令。然而,为了这里的描述,忽略预获取并且假设以访问的顺序来执行指令。页跨越检测模块626的比较模块6261将当前指令的物理地址与顺序执行的先前指令的物理地址进行比较以确定指令执行流的当前指令是否使得物理的存储器页被跨越。 可以通过以下等式在比较模块6261处确定所访问物理页之间的偏移量物理页偏移量=(PAC
/PAGE_SIZE) - (PAC [-1] /PAGE_SIZE),其中PAGE_SUE是存储位置611处存储的每一个存储器页的页大小,并且基于 PAGE_SIZE,丢弃PAC
和PAC[1]的低位页索引位,并且对剩下的高位页帧地址位进行比较以确定是否出现了物理页跨越。PAGE_SUE可以是可编程的,并且在一个实施例中,能够基于由MMU16执行的每个地址转换而动态地改变。非零页偏移量指示在物理存储器处已出现页跨越。在比较模块6261处计算的物理页偏移量存储在存储位置6263并且指示被跨越的物理页数目,其中零
值指示没有跨越物理页。页跨越检测模块626的比较模块6262将顺序执行的指令的虚拟地址进行比较以确定是否跨越了存储器的虚拟页。这可以通过实现以下等式来确定虚拟页偏移量=(VAC
/PAGE_SIZE)-(VAC[-1]/PAGE_SIZE)。其中基于PAGE_SIZE,丢弃VAC
和VAC[1]的低位页索引位,并且对剩下的高位虚拟页帧地址位进行比较以确定是否出现了虚拟页跨越。PAGE_SUE可以是可编程的,并且在一个实施例中,可以基于由MMU 16执行的每个地址转换而动态地改变。非零页偏移量指示在虚拟存储器处已出现页边界跨越。在比较模块6262处计算的虚拟页偏移量存储在存储位置6264并且指示被跨越的虚拟页数目,其中零
值指示没有跨越虚拟页边界。偏移量信息可以由消息请求模块627使用以确定是否要将消息请求发送到消息生成模块64,这将参考图4-8来更好地理解。图4中所示的是当例如存储位置615处的TM_EN被断言时的启用跟踪消息发送时使用的消息请求模块6 实现的方法的一个示例,来确定何时向消息生成逻辑64发送请求以生成跟踪消息。在框101处,确定是否跨越了物理页边界。如前所述,存储位置6263处 PPD的非零值表示跨越了物理页边界。例如,当目前的访问是针对物理存储器的第一物理地址并且先前的访问是针对处于不同页的物理存储器的第二物理地址时,PPD将具有非零值。 当跨越了物理页时,流进行到框102,否则流返回到框101。在框102处,确定造成物理页跨越的当前指令是否在虚拟存储器中与先前的指令连续。将会理解,在虚拟存储器中连续的指令被存储在连续的虚拟存储位置处,并且因此, 它们被背靠背地执行,除非采用了分支或出现了例外。在跟踪消息请求模块62处,存储位置612处的SEQ_INST被断言以指示当断言时当前指令在虚拟存储器中与先前指令连续。 当目前指令在虚拟存储器中与先前指令连续时,流从框102进行到框103,否则流进行到框 105。在框103处,确定页跨越的类型。例如,响应于页跨越的类型为顺序页跨越,流返回到框101,并且响应于页跨越的类型为非顺序页跨越,流进行到框104。如这里所使用的, 当正在被访问的当前页的最小地址与先前被访问的页的最大地址连续时,出现顺序页跨越。如这里所使用的,当正在被访问的当前页的最小地址与先前被访问的页的最大地址不连续时,出现非顺序页跨越。例如,在图3所述的实施例中,一 (1)的PPD值指示发生的物理页跨越是顺序页跨越。当检测到的物理页跨越是顺序页跨越时,流进行到框101。当检测到的物理页跨越是非顺序页跨越时,例如诸如当访问先前页时(例如由负PPD值指示),或者当跳过物理存储器中的顺序页时(例如由大于一(1)的PPD值指示),流进行到框104。在框104处,生成用地址指示符生成跟踪消息的请求,这将在下面更详细地论述。 返回参考框102,当目前的指令在虚拟存储器中与先前指令不连续时,流进行到框105。例如,响应于由于采用了分支或者出现例外而正执行当前指令,流将进行到框105。在框105 处,确定是否由于采用了直接分支而执行当前指令。直接分支是其目标直接用指令提供的分支,例如通过偏移量值,并且因此通常为可以基于程序指令值的知识由调试器来确定的静态值。在图3所描述的实施例中,响应于先前指令为被采用的直接分支来在存储位置613 处断言DIR_BR,由此使得当前指令被执行,例如当前指令在虚拟存储器中与先前指令不连续。如果非连续指令流是直接分支指令的结果,那么流进行到框106,否则流返回到框101。在框106处,确定是否启用物理地址报告。例如,存储位置614处的PADDR_EN可以指示是否启用物理寻址。当启用时,流进行到框107,否则流进行到框108,其中生成诸如直接分支跟踪消息的跟踪消息,而没有物理地址信息,这将在下面更详细地描述。在框107处,对是否满足条件做出确定,以指示应当请求具有物理地址信息的跟踪消息。如果是,则流进行到框109,否则流进行到框108。在一个实施例中,由于当前指令被执行,当物理和虚拟页增加了不同的数量时,即当PPD Φ VPD时,这表示当前物理页与先前物理页的偏移量和当前虚拟页与先前虚拟页的偏移量不同,则满足了条件。在另一个实施例中,当物理和虚拟页增加了不同的数量时,或者当物理和虚拟页增加了在期望范围之外的相同数量时,在框107处的条件满足。例如,当((PPD乒VPD)或(|PPD| >N))时,其中N为正整数,流可以进行到框109。例如,在一个实施例中,N = 1,由此使新的物理页被访问而不是序列中的下一页(例如PPD = 1)或序列中的前一页(例如PPD = -1)的任何直接分支将使得流从框107进行到框109。在另一个实施例中,在跨越物理页边界时满足条件。当图4中所示的方法的流到达框104、框108或框109时,生成请求以生成跟踪消息。例如,响应于虚拟存储器中连续的指令而造成非连续页跨越,将在框104处请求包括物理地址信息的跟踪消息。图5-7示出了可以被生成的各种TRACE MESSAGE。图5示出了被称作为程序跟踪相关性消息的跟踪消息80的示例,其可以在框104 处被请求以便于在程序跟踪期间的同步。跟踪消息80包含标记为传送代码(TRANSFER CODE (TCODE))的字段、标记为“源处理器(SOURCE PROCESSOR) ”的字段、标记为“事件代码 (EVENT CODE)”的字段、标记为“序列计数(SEQUENCE COUNT) ”的字段以及标记为“数据 (DATA)”的字段。字段TRANSFER CODE包括与消息相关联的值以将跟踪消息80标识为特定类型的调试消息,例如程序跟踪相关性消息(PROGRAM TRACE CORRELATION MESSAGE),其被认为具有特定的预定字段格式。当能够发送具有不同字段格式的跟踪消息时,TRANSFER CODE字段是有用的。跟踪消息80具有的TRANSFER CODE值为33以指示消息是程序跟踪相关性消息,其为已知类型的跟踪消息。字段SOURCE PROCESSOR标识多处理器系统中跟踪消息80所关联的处理器。字段EVENT CODE标识使得生成跟踪消息80的事件。根据本发明,响应于虚拟存储器空间中与先前指令连续的指令被执行,当前的EVENT CODE具有的值为13以指示由于跨越了非连续物理页,例如PPD兴1,而生成了消息。下面的表指示能够导致生成跟踪消息80的其他事件。表13-6.事件代码编码(TC0DE = 33)
权利要求
1.一种方法,包括在操作的调试模式期间在数据处理器处确定指令流已导致在物理存储器处出现物理页跨越;以及响应于所述确定,执行同步事件,所述同步事件提供用于外部跟踪重建工具的所述指令流的物理地址信息。
2.根据权利要求1所述的方法,其中,确定包括确定对所述物理存储器的第一物理地址的当前访问是针对于与对所述物理存储器的第二物理地址的先前访问不同的物理存储器页,并且所述物理地址信息包括所述第一物理地址的至少一部分的代表。
3.根据权利要求2所述的方法,其中,执行所述同步事件包括向所述数据处理器的外部端子提供包括所提供的物理地址信息的跟踪消息。
4.根据权利要求1所述的方法,其中,执行所述同步事件包括生成表示出现物理页跨越事件的跟踪消息。
5.根据权利要求4所述的方法,其中,表示出现物理页跨越事件的跟踪同步消息包括导致页跨越事件出现的所述物理地址的代表。
6.根据权利要求1所述的方法,其中,执行所述同步事件包括生成提供所述物理地址信息的跟踪消息。
7.根据权利要求6所述的方法,其中,所述物理地址的代表包括基于导致物理页跨越的所述物理地址的至少一部分生成的压缩值。
8.根据权利要求1所述的方法,其中,确定还包括确定在用于所述指令流的虚拟存储器处出现了虚拟页跨越。
9.根据权利要求1所述的方法,其中,在所述数据处理器处确定还包括确定所述物理页跨越是第一类型的物理页跨越或第二类型的物理页跨越中的一个。
10.根据权利要求9所述的方法,其中,所述第一类型的物理页跨越包括非顺序物理页跨越。
11.根据权利要求10所述的方法,还包括响应于在所述数据处理器处确定所述物理页跨越的出现包括顺序页跨越,而不执行任何同步事件。
12.根据权利要求10所述的方法,还包括响应于所述物理页跨越的出现是第二类型的物理页跨越,而执行不提供物理地址信息的用于由指令跟踪逻辑使用的同步事件。
13.根据权利要求1所述的方法,还包括响应于所述确定,如果物理地址报告被启用则执行提供物理地址信息的同步事件,并且如果物理地址报告被禁用则执行不提供物理地址信息的用于由指令跟踪逻辑使用的调试模式同步事件。
14.一种方法,包括确定用于指令流的虚拟存储器的第一页和用于所述指令流的虚拟存储器的先前页之间的第一偏移量,其中所述第一偏移量表示从虚拟存储器的所述当前页到虚拟存储器的所述先前页的页数目;确定对应于虚拟存储器的所述当前页的物理存储器的当前页与对应于虚拟存储器的所述先前页的物理存储器的先前页之间的第二偏移量,其中所述第二偏移量表示从物理存储器的所述当前页到物理存储器的所述先前页的页数目;响应于所述第一偏移量不同于所述第二偏移量,在操作的调试模式期间生成调试模式同步事件。
15.根据权利要求14所述的方法,其中,生成所述同步事件还响应于确定已采用分支指令。
16.根据权利要求14所述的方法,其中,生成所述同步事件还响应于确定已采用直接分支指令。
17.根据权利要求14所述的方法,其中,生成所述同步事件还响应于确定虚拟存储器中的顺序指令使得所述第一偏移量为一。
18.一种设备,包括指令获取模块,所述指令获取模块从虚拟存储器请求指令;存储器管理单元,所述存储器管理单元从物理存储器请求所述指令;以及跟踪消息请求模块,所述跟踪消息请求模块确定从物理存储器请求的指令导致物理页跨越,并且作为响应,所述跟踪消息请求模块请求生成提供导致所述物理页跨越的所述指令的物理地址信息的跟踪消息。
19.根据权利要求18所述的设备,其中,所述跟踪消息请求模块所请求的跟踪消息还响应于导致页跨越的指令顺序地存储在虚拟存储器中的指示来请求所述跟踪消息。
20.根据权利要求18所述的设备,其中,所述跟踪消息请求模块还响应于确定所述物理页跨越是顺序地存储在虚拟存储器中的指令执行造成的结果来请求所述跟踪消息为第一类型,并且所述跟踪消息请求模块响应于确定所述物理页跨越是非顺序地存储在虚拟存储器中的指令执行造成的结果来请求所述跟踪消息为第二类型。
全文摘要
数据处理系统(10)和方法通过允许外部调试工具(36)具有实时跟踪功能性来生成调试消息。数据处理器执行多个数据处理指令并且使用存储器(30)用于信息存储。调试模块(26)生成包括地址转换跟踪消息的调试消息。存储器管理单元(16)具有用于实现地址转换的地址转换逻辑,以在虚拟和物理形式之间转换地址。调试模块包括耦合到存储器管理单元的消息生成模块(64),所述消息生成模块(64)用于在一个或多个地址转换映射被修改时接收通知。消息生成模块响应于检测到发生了地址转换映射的修改而生成地址转换跟踪消息并且将地址转换跟踪消息提供到调试模块外部。
文档编号G06F9/06GK102395949SQ201080016420
公开日2012年3月28日 申请日期2010年4月15日 优先权日2009年5月5日
发明者威廉·C·莫耶, 理查德·G·柯林斯 申请人:飞思卡尔半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1