SPARC V8处理器断点调试的设计与实现研究
的存储系统中,采用了分离的指令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和伪随机。这里以直接相联映射模式的指令缓存ICache为例,简述如何利用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加上虚拟地址Vad
SPARC V8处理器 cache MMU 断点调试 相关文章:
- 基于SPARC V8 的嵌入式星载计算机(04-09)
- Cache(高速缓存)技术详解(03-06)
- ARM920T的Cache(介绍Cache最好的一篇文章)(03-08)
- 多核处理器的九大关键技术(03-02)
- 一种带Cache的嵌入式CPU的设计与实现(07-30)
- 片上多处理器中Cache一致性协议的验证(07-24)