假定 某系统主存容量为8KB,高速缓存容量为256B,数据块大小为64B,按字节编址,高速缓存采用直接映像方式。试回答以下问题: •(1)试给出主存和高速缓存的地址格式,标明各字段的名称及位数。 (2)假定初始高速缓存中没有有效数据,CPU依次读取地址为0021H,0023H, 0005H, 003FH, 0063H,0082H的内存单元,这些操作完成后,地址变换表的4个单元的内容是什么?(未使用的单元其值为空)以上6次访存操作的命中率是多少?
时间: 2023-09-30 16:08:36 浏览: 443
论文研究-高速大容量固态存储系统中的缓存机制研究 .pdf
(1)主存地址格式:
| 标志位 | 块号 | 偏移量 |
| ------ | ---- | ------ |
| 2 bit | 11 bit | 3 bit |
高速缓存地址格式:
| 标志位 | 块号 | 偏移量 |
| ------ | ---- | ------ |
| 1 bit | 4 bit | 6 bit |
其中,标志位用于区分是主存地址还是高速缓存地址;块号指示所访问的数据块的编号;偏移量指示所访问的字节在数据块内的偏移量。
(2)根据题意,高速缓存采用直接映像方式,因此主存中每个数据块只能映射到高速缓存中的一个数据块。数据块大小为64B,高速缓存容量为256B,因此高速缓存中只能存储4个数据块。则高速缓存中每个数据块的块号为0~3。
CPU依次读取地址为0021H,0023H, 0005H, 003FH, 0063H,0082H的内存单元时,按照主存地址格式计算出它们所在的数据块编号和字节偏移量,得到以下结果:
| 主存地址 | 数据块编号 | 字节偏移量 |
| --------- | ---------- | ---------- |
| 0021H | 2 | 1 |
| 0023H | 2 | 3 |
| 0005H | 0 | 5 |
| 003FH | 3 | F |
| 0063H | 6 | 3 |
| 0082H | 8 | 2 |
对于每个主存地址,首先检查高速缓存中是否已经缓存了对应的数据块。如果已经缓存,则直接从高速缓存中获取数据;否则,需要将对应的数据块从主存中加载到高速缓存中。
第一次访问主存地址0021H时,数据块编号为2,未命中高速缓存。因此需要将主存中2号数据块加载到高速缓存中的0号数据块。此时地址变换表的内容为:
| 块号 | 标志位 | 标记 |
| ---- | ------ | ---- |
| 0 | 1 | 2 |
| | | |
| | | |
| | | |
第二次访问主存地址0023H时,数据块编号为2,已经在高速缓存中。因此可以直接从高速缓存中获取数据。此时地址变换表的内容为:
| 块号 | 标志位 | 标记 |
| ---- | ------ | ---- |
| 0 | 1 | 2 |
| | | |
| | | |
| | | |
第三次访问主存地址0005H时,数据块编号为0,未命中高速缓存。因此需要将主存中0号数据块加载到高速缓存中的1号数据块。此时地址变换表的内容为:
| 块号 | 标志位 | 标记 |
| ---- | ------ | ---- |
| 0 | 1 | 2 |
| 1 | 1 | 0 |
| | | |
| | | |
第四次访问主存地址003FH时,数据块编号为3,未命中高速缓存。因此需要将主存中3号数据块加载到高速缓存中的2号数据块。此时地址变换表的内容为:
| 块号 | 标志位 | 标记 |
| ---- | ------ | ---- |
| 0 | 1 | 2 |
| 1 | 1 | 0 |
| 2 | 1 | 3 |
| | | |
第五次访问主存地址0063H时,数据块编号为6,不在主存容量范围内,因此无法访问。
第六次访问主存地址0082H时,数据块编号为8,不在主存容量范围内,因此无法访问。
以上6次访存操作的命中率为2/6=33.33%。其中,第二次和第四次命中了高速缓存,其他操作都未命中。
阅读全文