您的位置 首页 主动

SPARC V8处理器断点调试的规划与完成研讨

以一款SPARC V8处理器为例,分析了处理器分级存储系统中Cache和MMU对断点调试实现的影响,提出有效的解决办法,并成功应用到该处理器的调试工具中。该方法也适用于其他具有Cache和MMU的处理

在嵌入式的穿插调试进程中,开发人员的调试手法有断点、触发和盯梢三种,其间断点是常常运用的调试手法。开发人员运用断点操控所要调试程序的运转和中止,使程序运转到自己想要调试的方位,经过调查在断点处的程序变量以及寄存器和存储器的值,检测所调试的程序运转是否正确。

  断点依照其完结办法分为软件断点和硬件断点,本文研讨对象是软件断点调试。关于不同的嵌入式处理器或调试东西而言,软件断点的完结办法根本相同,都是经过在所要设置断点的地址大将其内存内容替换为指令圈套,当这个指令被履行时就会发生软件中止,使处理器进入调试状况(或监控状况)。

  跟着嵌入式计算机使用的开展,现在大部分处理器都内嵌有高速缓存(Cache)和内存办理单元(MMU),并由Cache、主存和磁盘构成三级存储体系。穿插调试中止点的完结与处理器中存储体系的构成有严密的联系。MMU的存在使设置/移除断点时要考虑断点地址是虚拟地址仍是物理地址,假如是虚拟地址则要进行真假地址的转化。Cache的存在使设置/移除断点时要考虑Cache共同性的问题。假如所要设置的断点地址被Cache射中,则当用特定指令替换断点地址上的内存内容来完结断点功用时,就会使主存上的内容与Cache对应单元中的内容不共同,然后形成Cache与主存的不共同问题。这些问题的存在直接影响断点功用的正确完结。

  断点功用是穿插调试器的重要组成部分,在开发穿插调试器的进程中不可避免地会遇到上述问题。本文分析了一款具有Cache和MMU的SPARC V8处理器,首要研讨其分级存储体系对完结断点功用的影响,提出了卓有成效的处理办法,并使用到该处理器的调试东西中。

1 Cache和MMU引起的断点调试问题

1.1 Cache引起的断点调试问题

  Cache是一种高速缓冲存储器,在存储体系的层次结构中引进Cache是为了处理CPU与主存之间的速度差异,以进步CPU作业功率。经过在主存和高速CPU之间设置一个小容量的高速存储器,并在其间贮存一份CPU最近拜访的主存储器“内容复制”,使CPU在重复读取这部分内容时能够经过拜访Cache完结数据的读写。因为Cache的速度快于主存的速度,然后缩短了数据读写的等待时刻,体系的全体功用也得到进步。但一起它又带来了一些其他问题,如本文说到的共同性问题。

  Cache由操控部分和存储器部分组成,如图1所示,虚框内为操控部分。操控部分将来自CPU的数据读写恳求传递给存储器进行相应处理。操控部分的首要功用是判别要拜访的数据是否在Cache中射中。射中时进行Cache的寻址;未射中则依照替换战略将主存中的数据块载入到Cache存储器对应的数据块中。

在某个内存地址上设置软件断点时,用软中止指令替换设置断点处的内存指令后,还要考虑该地址是否曾Cache射中,不然就会形成Cache不共同的问题。Cache数据与主存不共同是指:在选用Cache的体系中,相同一个数据或许存在于Cache中,也存在于主存中,两者数据相同则具有共同性,数据不相同就叫做不共同性。假如不能确保数据的共同性,则程序的运转就会犯错。因而完结软件断点有必要处理Cache共同性问题。

1.2 MMU引起的断点调试问题

  现代计算机体系遍及选用了分级存储与虚拟存储技能相结合的存储办理体系。虚拟存储是在存储层次结构基础上,经过存储器办理部件MMU进行虚拟地址和物理地址主动改换而完结的,对每个编程者是通明的。MMU首要完结以下作业:(1)虚拟地址到物理地址的映射;(2)存储器拜访权限的操控;(3)设置虚拟存储空间的Cache特性。

  在进行真假地址转化时,处理器宣布虚拟地址给MMU并被锁存于一个内部寄存器中。该虚拟地址与TLB中的虚拟地址标志进行比较。假如匹配,则TLB射中,物理地址能够直接发生;假如不匹配,则进行TLB行未射中处理,这时MMU会发生一个Table walk的动作,从CPU接收地址和数据总线,经过到主存查询页表的办法完结从虚拟地址到物理地址的转化,一起经过替换算法将新的地址信息存于TLB中[1][5]。

  启用MMU存储办理单元的处理器上运转的程序选用虚拟地址,调试时设置的断点地址用的是程序中的地址,也即虚拟地址。而CPU拜访数据或读取指令的地址为物理地址。一般虚拟地址和物理地址不相同,调试器需用软件完结从虚拟地址到物理地址的转化,才能使断点设置在对应的物理地址上,完结断点调试的功用。

2 存在问题的处理办法

  本文以一款SPARC V8结构的处理器为例,具体分析怎么处理层次存储体系对断点完结所发生的影响。该处理器包含了一个32位的整数单元(IU)、Cache子体系、SRMMU(SPARC reference MMU)、AMBA总线、存储操控器、UART和Watchdog等。

  在该处理器的存储体系中,选用了别离的指令Cache和数据Cache,即哈佛结构。哈佛结构消除了取数和取指之间的竞赛,进步了Cache的射中率和处理器的功用。处理器存储体系的安排办法为虚拟地址Cache,如图2所示。在射中时能够省去MMU真假地址转化的时刻。但虚拟Cache或许会导致同一物理地址有不同的虚拟地址来拜访,而且当体系进程切换时,同一虚拟地址能够指向不同的物理地址。因而在一个地址标识(Tag)中要添加一个进程标识(context number)。这样多个进程的数据能够放在一个Cache中,由进程标识来确认Cache中各行的数据是归于哪个进程。

2.1 CACHE共同性问题的处理办法

  用软中止指令替换设置断点处的内存指令完结断点调试功用的一起,会形成Cache共同性的问题。尽管关掉Cache就能够处理共同性的问题,而且能够减小程序开发的复杂度,可是一个高功用的体系是需求Cache的,关掉Cache会大大下降体系的功用。因而,能够选用以下办法处理设置/移除断点时Cache共同性的问题:

  (1)使用MMU将或许呈现共同性问题的存储区设为Cache不能拜访的区域,即non-cacheable area。这种办法尽管比较保存,彻底与Cache的规划初衷相悖,可是这种办法最为稳妥。

  (2)让存储此断点地址数据的Cache存储单元失效,使CPU从头读取主存的内容来更新Cache,确保Cache中的内容与主存的内容共同,以此来处理Cache共同性的问题。明显第二种办法功率比第一种高,能够发挥Cache的处理才能。

在本文评论的SPARC架构处理器中,能够使用Cache Tag寄存器完结处理Cache共同性问题的第二种计划。经过检测Cache Tag寄存器,判别设置/移除断点的地址是否曾Cache射中。假如Cache射中,则使用Cache Tag寄存器中的Valid有用位将存储此地址数据的Cache行置为无效;假如没有射中,则不对Cache做任何处理。

在该处理器中,Cache可装备的形式有直接映射形式和2~4组相联的多组映射形式;可选的替换算法是LRU、LRR和伪随机。这儿以直接相联映射形式的指令缓存%&&&&&%ache为例,简述怎么使用Cache Tag寄存器处理设置/移除断点时Cache的共同性问题。

在直接相联映射办法中,存储器中的每个区巨细与Cache存储器的巨细持平,区中的行与Cache存储器中的行一一对应。Cache分为Tag部分和Data部分,Tag部分用来存储标志位,与内存地址的标志位比较来判别Cache是否射中;Data部分用来存储与地址相对应的数据。如图3所示,ITag寄存器中的Valid[7:0]标明IData中相应的word是否有用;W0~W7标明IData中一行有8个word。当在某个地址设置/移除断点时,根据这个地址拜访相对应的ITag寄存器,找到相对应的行,并将该行的ATAG位及有用位Valid取出。将ATAG位与地址中的Tag位进行比较,假如两者持平且对应的有用位为1,则标明拜访的指令/数据在Data中,即Cache射中。Cache射中时要将该有用位清0,使Cache中的该行失效,然后再进行内存指令的替换。假如不持平或有用位为0,则拜访的数据不在Data中,即Cache未射中,这时就直接进行内存指令的替换。


本文经过使断点地址射中的Cache失效的办法,使处理器拜访断点地址时拜访主存,然后处理了断点调试中Cache的共同性问题,而且最大程度地发挥了Cache的效果。

2.2 MMU地址转化问题的处理办法

  处理器启用MMU后,在调试器中设置软件断点发生了真假地址转化问题。该问题的处理办法便是根据MMU的作业原理,在调试器中完结虚拟地址与物理地址的转化功用,获得虚拟地址对应的物理地址,并在该地址设置软中止指令,完结断点调试的功用。

  本文研讨的处理器选用SRMMU来办理内存。SRMMU选用页式存储办理,主存中的3级页表用来存储悉数的地址转化信息,经过页表中页表项的最低两位ET来判别是否要继续查找页表。SRMMU可完结不同级数的页表的拜访,最少1级,最多4级[1]。

  SRMMU中虚拟地址到物理地址的转化进程如图4所示。虚拟地址Vaddr为所要设置/移除的断点地址;CTP和CTXNR都是SRMMU的寄存器,其间CTP为进程表的首地址,CTXNR为进程号;页表中的存储项如为PTD(Page Table Descriptors),则PTD是指向下一级页表的指针,如为PTE(Page Table Entry),则PTE是实地址的页号。在查找进程中由CTP和CTXNR得到页表的进口地址,读取该地址的内存内容判别是PTD仍是PTE。假如得到PTE则不需再查找,这样每页有4GB的寻址空间;假如在level-1找到PTE,,则每页有16MB的寻址空间;假如在level-2找到PTE,则每页有256KB的寻址空间;假如在level-3找到PTE,则每页有4KB的寻址空间;假如找不到PTE,则提示过错。得到PTE后,由PTE中的Physical Page Number加上虚拟地址Vaddr的offset偏移地址,就能够得出实践的物理地址。

在完结断点调试功用时,本文根据上述SRMMU真假地址的转化原理,完结了一个软件SRMMU模块,用于仿真处理器硬件SRMMU的页表查询处理进程,在调试器中完结了真假地址转化的功用。经过该办法,本文处理了断点调试中MMU发生的真假地址转化问题,使规划的调试器能够正确处理用虚拟地址设置的断点。

  为了进步存储器的速度和存储容量,现在大部分处理器中,既有MMU也有Cache。本文经过对Cache的作业原理和MMU履行机制的具体研讨,分析了开发人员在完结断点功用时所遇到的Cache共同性和MMU的地址转化等问题,并以一款SPARC V8处理器为例,分析了软件断点的完结办法,并成功使用到该处理器的调试器规划中。本文尽管仅评论SPARC V8架构的存储体系规划对软件断点功用完结的影响,但关于研讨其他选用层次存储体系架构处理器的软件断点的规划完结也具有必定的参考价值。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/zhudong/198677.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部