从程序员的角度看cache(二)
同样的物理地址在不同的任务中可能被描述成不同的虚拟地址。这可能导致同样的物理地址被存入到高速缓存两个不同的数据项。许多MIPS CPU没有硬件来检测或者避免这种高速缓存重影(cache alias)而把问题留给操作系统的内存管理程序来解决。
大多数现代的 MIPS CPU拥有回写式、虚拟索引、物理标签、两路或者四路组相连的一级高速缓存。高速缓存管理通过一条特殊的cache指令进行。
地址空间的内容是数据,地址空间的属性是地址,我们可以得出每个数据有多个地址。因此,每一个数据元数都可以有一个虚拟地址和物理空间(数学中映射的概念)。
Memory 作为disk的缓存,其数据也是以固定的data block(一般称为页)进行缓存的,disk的数据被划分成数个大小相同的data block,而memoryt也被划分成数个大小相同的data block。VM system将虚拟内存划分成一个一个的固定大小的块,称为virtual pages(VPs)。物理内存也被划分成physical pages(PPs),物理页也被称为页帧(page frames)。虚拟页被划分成三个子集:Unallocated(还没有创建的页)、cached(已创建了页,且已分配物理内存)、Uncached(创建了页,但是没有相应的物理内存)。由于从disk到memory一级的cache miss(此处一般称为page fault) 的peanlty太大,因此我们对于memory采用fully associative方式,而且采用更好的替换策略,我们也会采用write-back策略对待向memory中写入数据。
同一般意义上的cache一样,VM system需要决定virtual page是否被缓存进physcial page、被缓存进那个physical page,以及当发生miss时该采用何种策略进行替换。这一系列的事情不同于硬件上的cache,而是与操作系统软件、MMU、以及存放在物理内存上的page table相关(page 决定将virtual page映射至哪个physical page)。page table 是有page entry组成的数组,每个page entry含有一个标志位(指示是否有效),还有一个数值。若有效位是0,则当数值是一个NULL时表示unallocated,若是其他值表示allocated;当有效位是1,则数值表示cached,对应的physical page的物理起始地址。当我们使用库函数malloc时仅仅是在将page table的page entry的有效位仍保持为0,但是数值位却被指向disk上相应page的首地址(allocated)。操作系统为每个进程都维护这一个page table和一个virtual address space。
基本参数:

2^n虚拟地址空间范围,2^m物理地址空间范围,P=2^p物理页数。虚拟地址的构成:VPO:virtual page offset VPN:virtual page number TLBI:tlb index TLBT:tlb tag 物理地址构成:PPO:physical page offset PPN:physical page number CO:byte offset within cache block CI:cache index CT:cache tag
每个CPU中有个控制寄存器,PTBR指向相应进程的页表基址。

我们考虑一下当没有TLB时的page hits 与page faults 过程:

TLB组成(书上讲TLB是由page table entry组成,但是与其以后讲的内容有些不符)

CPU发出VA,取其高位部分TLBI进行选择哪个条目,TLBT进行匹配。


结合下图就可以基本了解其操作过程:


关于cache alias问题:
操作系统中,页的大小通常为4KB,故VPA与PPA的低十二位相同。对于一级cache而言,我们采用VPA作为索引,而PPA作tag,因此当S*B<=2^12时是不会出现cache alias 问题的。当S*B>2^12时会出现cache alias问题,这一点在管理cache时尤其需要注意。
关于对于一级cache用VPA作索引,而PPA作tag解释:
mips都是用虚拟地址为一级高速缓存提供快速索引,用物理地址标记每一个高速缓存行。对应高速缓存行的物理地址是唯一的而且效率更高,因为这样的设计允许CPU在查找高速缓存的同时进行程序地址到物理地址的转换。这可以加速cache的操作过程。假设S*B=2^12,故可以用VPA的低12位作为索引(VPA的低十二位此时与PPA的低十二位相同)。当我们从PTE中获取PPN时,此时PPN即可作为tag,与预先从cache中已经索引出的数据进行匹配,所以……
浙公网安备 33010602011771号