【知识回顾】
https://blog.csdn.net/qq_35812205/article/details/104526406
之前总结的虚实地址转换&访存细节。
【真题1】
(1)求字段A~G的位数,TLB中B字段存啥信息
【解析】简单板子题。页大小2^13B即页内偏移13bit
A=32-13=19bit,C=24-13=11bit
主存块=64B=2^6B,所以块内偏移=6bit=G
物理地址拆分成EFG(分别为Tag、组号、块内偏移6bit)共24bit
因为是Cache是二路组,而共64KB/(2×64B)=2^9组,所以F=9bit,E=24-F-G=24-9-6=9bit
即(Tag9bit、组号9bit、块内偏移6bit)
由于TLB是虚页号和实页号的映射,所以B虚页号=A=19bit。
(2)将块号为4099的主存块装入Cache时,求所映射的Cache组号,求H
【解析】
法一(十进制角度):由于组相联是组间直接映射,组内全相联映射(即先对每组第一个依次存,再对每组第二个依次存...以此类推),由(1)已知Cache共2^9组,4099%2^9=3,所以组号为3。
法二(二进制角度):块号4099=00 0001 0000 0000 0011(写出18bit),根据末尾的9位0 0000 0011B=3为组号。
从法二的前9位字段Tag知道H=00 0001 000B=0 0000 1000B。
(3)是Cache缺失/缺页处理的时间开销大?why
【解析】缺页处理开销大,因为缺页处理需要访问磁盘,而Cache缺失只需要访问主存。
(4)why Cache可用直写策略,修改页面内容总用回写策略
【解析】因为采用直写策略需要同时写快速存储器和慢速存储器,而写磁盘比写主存慢很多,所以在Cache-主存层次,Cache可以用直写策略,而在主存-外存(磁盘)层次,修改页面时总采用回写策略。
【注意】学习如何表述。。
【真题2】
【解析】
(1)物理地址位数
物理地址=实页号+页内地址=16+12=28bit或=tag+组号+块内地址=20+3+5=28bit
(2)TLB映射、SRAM
TLB用全相联映射(可以把页表内容调入任意一块空TLB项中,TLB的每项都有一个比较器,没有映射规则,只要该项空闲就能占用);TLB用用SRAM(静态存储器~读写速度快,成本高,多用于容量小的高速缓存)
(3)Cache容量 有效位
Cache中每组有2行,所以是二路组相联。每行再需要1bit的LRU位和1bit的脏位(一致性维护位~判断数据是否被更新,若为1则需要写回内存)。
Cache容量=标记阵列容量+data=16×(20+1+1+1)bit+16×2^5 ×8bit=4464bit。
Cache中有效位为1说明所在Cache行的信息有效,0则反之。
(4)虚实地址转换
【解析】0008 CH在TLB对应的实页号为0040H(有效位为1,说明存在),所以物理地址为0040 040H.
该物理地址在Cache中不命中。
原因:tag为0040 0H虽然和一个Cache行的tag相同,但其有效位为0,而另一Cache行的tag与00400H不相同。
【求虚拟地址为0007 C260H的Cache组号】
不要觉得条件不够就慌!
根据Cache块的主存地址的后8位中的前3位为组号,又虚拟地址和物理地址的页内地址是相同的(为260H即二进制位0010 0110 0000B,数这串鬼东西的后8位的前3位为011即十进制为3),所以组号为3.
注意:适当描述虚实地址转换的过程(题目说要说明理由)。
来源:oschina
链接:https://my.oschina.net/u/4303145/blog/4486982