AMD Geode GX processor L2 TLB扩容验证方法
今年,关于AMD Geode GX processor项目中,我还从事了TLB扩容的验证,这里也对我在其中所做的工作做一个总结。
总结这次工作,我认为很有必要把处理器中TLB的工作原理解释清楚,因此,下文主要介绍一下AMD Geode GX processor中TLB的工作原理。
我们知道处理器运行过程中,程序计数器PC提供给处理器的是虚拟地址。虚拟地址经过MMU的转换后映射到相应的物理地址。这么做的原因是为了给每一个进程提供一个完整独立的地址空间,从而达到进程隔离的效果,提高计算机的安全性。每一个进程在诞生时,由操作系统生成一个对应的页表,该进程的虚拟地址到物理地址的映射关系就存放在其页表中。处理器在执行指令时,首先根据虚拟地址访问进程的页表,然后获取对应的物理地址,然后再根据物理地址获取指令。这样一来,处理器访问一次指令就要进行两次的访存操作,开销很大。为了降低开销,处理器有了TLB这个部件,这个部件相当于一个高速缓存,但是只能存放虚拟地址到物理地址的映射。
地址转换原理
在AMD Geode GX processor中有两级TLB,类似cache的结构和作用。Geode GX processor中使用的是二级页表的结构,其中一级页表基址存放在CR3寄存器中,如下图所示:
CR3寄存器指定一级页表基址,虚拟地址中的VPN1偏移索引一级页表项。该地址中的一级页表项中存放着二级页表的基址,根据二级页表基址加上虚拟地址中的VPN2偏移,索引得到某个二级页表项。该表项中存放的是对应的物理页号PPN。由PPN加上虚拟地址的offset就得到实际的物理地址。
L2 TLB扩容方案
AMD Geode GX processor中的两级TLB使用不同的组织结构。L1 TLB使用的是全相联结构,共8个表项。L2 TLB使用的是2路组相联,共32组,64个表项。现在对L2 TLB进行扩容,则采用4路组相联的结构,容量从64表项扩展到128表项。由于块内偏移是12位,因此一个块的容量是4K,即一个页表的大小。进一步计算,扩容之后的L2 TLB的容量是128*4KB = 512KB。
根据虚拟地址在L2 TLB中进行寻址,将虚拟地址的高20位划分成4等分,分别标志为V1、V2、V3、V4。如下图所示。
在TLB寻址过程中,AMD Geode GX processor中和其他的传统的寻址过程不同。传统的都是一个地址所以到一个set,然后从同属于一个set的不同way中进行选择。而这里,一个地址能够索引到两个set,然后从两个set中的way中进行选择。下表是根据虚拟地址进行索引的规则。
V3和V4或运算之后的值作为索引值,索引某一个set的way0和way2。V2和V4或运算之后的值作为索引值,索引某一个set的way1和way3。然后用V1、V2、V3、V4组成的20位的Tag域来进行选择,从4路中选择出一路作为目标项。该过程如下图所示。
替换算法
L2 TLB使用的替换算法是LRW。当一个虚拟地址索引到的四个way存在空闲状态时,使用轮询的方式存放;当四个way都是非空闲状态时,则替换掉上一次进行写操作的那个块。
验证策略略