(1) 方法一:观察TLB和虚拟地...
(1) 方法一:观察TLB和虚拟地址
观察TLB中实页号项,例如F800H=1111 1000 0000 0000B,最高位为1,没有填充0,可知实页号占16位,观察虚拟地址中页内地址项,可知页内地址占12位,物理地址格式为 ,可得物理地址占16+12=28位。为了防止实页号项高位被填充0,采用下面一种方法更加合适。
方法二:观察物理地址映射到Cache后的地址
物理地址映射到Cache后的地址位数不变,观察映射到Cache后的地址结构,可得物理地址占20+3+5=28位。
(2) 第一问。TLB采用全相联映射,可以把页表内容调入任一块空TLB项中,TLB中每项都有一个比较器,没有映射规则,只要空闲就行。
第二问。TLB采用静态存储器SRAM,读写速度快,但成本高,多用于容量较小的高速缓冲存储器。可以用Cache类比TLB,Cache是主存的缓存,TLB是页表的缓存,两者都要求读写速度快,Cache采用静态存储器SRAM,因此TLB采用静态存储器SRAM。
(3) 第一问。根据题44图,Cache中每组有两行,采用2路组相联映射方式。
第二问。若Cache采用LRU替换算法和回写(Write Back)策略,则Cache每行中除数据(Data)、Tag和有效位外,还应有替换算法控制位和一致性维护位。
考虑 n 路组相联并采用LRU替换算法,需要记录若某组不命中时,则按照LRU替换算法规则查找该组中最久未被访问的一行进行替换,组内每一行都需要记录一个和组内其它行不同的秩,用来表示该行的未被访问的时间排名,每组最多有 n 个秩,范围为 0∼n−1 ,需要 logn 位来表示,所以LRU需要的替换算法控制位数为 ⌈logn⌉ ,本题为2路组相连,所以每行需要 ⌈log2⌉=1 位替换算法控制位。
不同替换算法需要的替换算法控制位总结如下:
因为采用回写策略,所以每行有1位脏位,根据脏位判断数据是否被更新,如果脏位为1则需要写回内存。
不同写策略需要的脏位位数总结如下:
第三问。Cache组相联映射的地址结构中,主存字块标记占20位,组号占3位,Cache中有 2^3=8 组,每组有两行,Cache中有8×2=16行,块内地址占5位,计算机按字节编址,Cache块大小为 2^5×1B=32B。
Cache每行标记位数=主存字块标记位数+有效位位数+替换算法控制位位数+脏位位数=(20+1+1+1)bit=23bit。
Cache每行数据位数=32B=32×8bit=256bit。
Cache总容量=(Cache每行标记位数+Cache每行数据位数)×Cache行数=(23bit+256bit)×16=558B。
Cache总容量是558字节。
第四问。Cache中有效位用来指出所在Cache行中的信息是否有效。即用于指示Cache行中的数据是否有效或者说是为了标识Cache行是否包含了当前正在被请求的数据。当有效位被设置为有效(即设置为1)时,表示Cache行中的数据是最新的、有效的,并且可用于响应对应的读取请求。相反,当有效位被设置为无效(即设置为0)时,表示Cache行中的数据无效,无法被使用,需要重新从主存或其他更低层级的缓存中获取最新的数据。
(4) 第一问。虚拟地址格式为 ,物理地址格式为 ,利用虚拟地址的虚页号部分去查找TLB表(缺失时从页表调入),将实页号取出后和虚拟地址的页内地址拼接,就形成了物理地址。
虚拟地址 ,查找TLB表中Tag为0008CH的项,有效位为1,实页号为0040H,得到0008C040H所在的物理地址为 。
第二问。Cache组相联映射的地址格式为 ,物理地址高20位对应主存字块标记,所以物理地址 ,查Cache表表中Tag为00400H的项,左边一个存在Tag为00400H的项,但有效位为0,右边一个不存在Tag为00400H的项,所以访问Cache不命中。
第三问。因为物理地址的低12位与虚拟地址低12位相同,对于虚拟地址为0007C260H,低12位为260H=0010 0110 0000B 。根据物理地址的结构,物理地址的后八位01100000B的前三位011B是组号,因此该地址所在的主存映射到Cache组号为011B=3。
登录后提交答案
暂无评论,来抢沙发