一.知识回顾
1.快表TLB(Translation Look-aside Buffer的运行机制
1:CPU给出逻辑地址后,由硬件进行地址转换,将页号送入高速缓冲寄存器,并将此页号与快表中的所有页号进行比较。
2:若找到匹配的页号,说明要访问的页表项在快表中,则直接从中取出该页对应的页框号,与页内偏移量拼接形成物理地址。这样存取数据仅一次访存便可实现。
3:若未找到匹配的页号,则需要访问主存中的页表,在读出页表项后,应同时将其存入快表,以便后面可能的再次访问。但若快表已满,则必须按照一定的算法对旧的页表项进行替换。
(2)TLB采用什么映射方式?TLB是用SRAM还是DRAM实现?
仔细观察TLB,我们会发现只有一组TLB,所以为全相联映射。
TLB采用全相联映射,可以把页表内容调入任一块空TLB项中,TLB每项都有一个比较器,没有映射规则,只要空闲就行。
TLB用SRAM实现,读写速度快,但成本高,多用于容量较小的高速缓冲寄存器,一般为相联寄存器,可以实现按照内容寻址。
2.Cache的运行机制
1.Cache总容量计算
1.数据部分,由块内物理地址数*每块地址所容纳的数据位
2.Tag标记部分,由物理地址最高Tag位组成,位数与Tag位相同
3.其他部分:修改位,有效位,LRU位等
2.LRU的Cache机制
(1)什么是LRU Cache
LRU 是 Least Recently Used 的缩写,意思是最近最少使用,它是一种 Cache 替换算法。 什么是 Cache ?狭义的Cache 指的是位于 CPU 和主存间的快速 RAM , 通常它不像系统主存那样使用 DRAM 技术,而使用昂贵但较快速的SRAM 技术。 广义上的 Cache 指的是位于速度相差较大的两种硬件之间, 用于协调两者数据传输速度差异的结构。除了CPU 与主存之间有 Cache , 内存与硬盘之间也有 Cache ,乃至在硬盘与网络之间也有某种意义上的Cache ── 称为 Internet 临时文件夹或网络内容缓存等。
Cache 的容量有限,因此当 Cache 的容量用完后,而又有新的内容需要添加进来时, 就需要挑选并舍弃原有 的部分内容,从而腾出空间来放新内容。 LRU Cache 的替换原则就是将最近最少使用的内容替换掉 。其实,LRU译成最久未使用会更形象, 因为该算法每次替换掉的就是一段时间内最久没有使用过的内容。
我们知道,LRU算法从图中可以看到,cache中每组有两行,故采用2路组相联映射方式。因为是2路组相联并采用LRU替换算法,所以每行需要1位LRU位;而在全相联映射和直接映射机制中,LRU的位数则为log2n位,n为Cache的块数,因为采用回写策略,所以每行有1位修改位,根据脏位判断数据是否被更新,若脏位为1则需要写回内存。
二.解题步骤
(1)主存物理地址由实页号和页内地址组成,实页号一共16位,页内地址一共12位,占28位.
(2)TLB采用的映射方式为全相联映射方式,TLB使用SRAM实现.
(3)Cache采用的映射方式为二路组相联映射方式,还有的附加位为1位修改位,一组为2块Cache,则需要1位LRU位.Tag有20位,Cache块内地址一共2^5=32个地址,每一块Cache的容量为32*8+20+1+1+=279位,一共有八组,每组有两块Cache块,一共有16块,容量一共有4464位.Cache中有效位的作用是访存时检查该内存块在Cache中是否有副本以加快访存.
(4)对应的物理地址为0040040H,在Cache中是没有命中的.0007 C260的后八位地址为60H,即0110 0000,映射到的组号为011,即为3.