问答题 某机按字节编制,主存容量为1MB,采用2路组相联方式(每组仅有2块)的Cache容量为64KB,每个数据块为256B。已知访问开始前第1组(从0开始编址)的地址阵列内容见下表。Cache采用LRU替换策略。
{{B}}第1组的地址阵列内容{{/B}}
0 00100(二进制)
1 01011(二进制)
问答题 分别说明主存地址中标记(Tag)、组号和块内地址3部分的位置和位数。
【正确答案】在采用全相联和组相联映射方式从主存向Cache传送一个新块,而Cache中的空间已被占满时,就需要把原来存储的一块替换掉。LRU算法(最近最少使用法)是把CPU近期最少使用的块作为被替换的块。
按字节编址,每个数据块为256B,则块内地址为8位;主存容量为1MB,则主存地址为20位:Cache容量为64KB,Cache共有256块,采用2路组相联,所以Cache共有128组(64K÷(2×256)),则组号为7位;标记(Tag)的位数为20-7-8=5位。主存和Cache的地址格式分别如图1和图2所示。
[*]

图1 主存的地址格式

[*]

图2 Cache的地址格式
【答案解析】
问答题 若CPU要顺序访问地址为20124H、58100H、60140H和60138H四个主存单元。上述4个数能否直接从Cache中读取,若能,请给出实际访问的Cache地址。第4个数访问结束时,表中的内容将如何变化。(Cache地址结构依次为:组号;组内块号;块内地址)
【正确答案】访问20124H时,主存地址分解为00100(标记)、0000001(组号)、00100100(块内地址)。对应的是Cache第2组。根据题目提供的第1组的地址阵列内容,第0块命中。那么形成的Cache地址应该是0000001(组号),0(组内块号),00100100(块内地址),即0224H。
访问58100H时,主存地址分解为01011(标记)、0000001(组号)、00000000(块内地址)。第1组第1块命中。那么形成的Cache地址应该是0000001(组号),1(组内块号),00000000(块内地址),即0300H。
访问60140H时,主存地址分解为01100(标记)、0000001(组号)、01000000(块内地址)。这个没有命中。要从主存中调入该块,调入后的标记为01100H。这时,Cache第0块绑定的标记位根据LRU要被替换掉,替换为01100H。第1组的地址阵列内容变化后如图3所示。
[*]

图3 第1组的地址阵列内容变化后的格式

访问60138H时,主存地址分解为01100(标记)、0000001(组号)、00111000(块内地址)。这个命中第0块。故而访问的Cache地址是(0000001)组号,(0)组内块号,00111000(块内地址),即0238H。第4个数访问结束时,地址阵列的内容与之前相同。
【答案解析】
问答题 若Cache完成存取的次数为5000次,主存完成存取的次数为200次。已知Cache的存取周期为40ns,主存的存取周期为160ns,求该Cache/主存系统的访问效率。(Cache和主存同时访问)
【正确答案】Cache的命中率h=5000/(5000+200)=5000/5200=25/26,Cache存取周期tc=40ns,主存存取周期tm=160ns。本题中,Cache和主存是同时访问的,故平均访问时间t=h×tc+(1-h)tm=25/26×40ns+1/26×160ns=44.6ns。
访问效率=Cache存取周期/平均访问时间=40ns/44.6ns=89.7%。
【答案解析】