存储系统相关笔记¶
一些知识点¶
1. 为什么\(256\textrm{MB}\)=\(2^{28}\textrm{B}\) , 但\(800\textrm{MB}\)=\(8\times 10^8\textrm{B}\)?¶
这是一个单位定义不同导致的经典问题,本质原因只有一句话:
256MB 用的是“二进制意义上的 MB”,而 800MB 用的是“十进制意义上的 MB”。
其具体单位应该如下表示:
| 名称 | 定义 |
|---|---|
| 1 MiB(mebibyte) | 2²⁰ B |
| 1 MB(megabyte) | 10⁶ B |
也就是说:
- 256 MiB = 2²⁸ B(严格)
- 800 MB = 8×10⁸ B(严格)
但现实中大家还是混着用
只需记住:
凡是内存、缓存、页大小 → 默认二进制(2 的幂)
凡是硬盘、文件大小、带宽 → 默认十进制(10 的幂)
- 256MB = 2²⁸ B
- 800MB = 8×10⁸ B
即可
2. Cache缺失后的访问时间为访问Cache的时间+访问主存的时间¶
3. TLB采用SRAM实现¶
大题¶
1 Cache的访问流程¶
第三问中的内容:
- 指令Cache初始为空,因此各Cache行中有效位均为0,表示Cache行中信息无效
- 根据指令所在主存地址中的Cache组索引(0000 00)索引到Cache组0,此时因为有效位为0,因此访问未命中,数据缺失
- 载入指令地址所在的主存数据块到组0的任意一行的数据副本缓冲区,把这一行的LRU位设为000,有效位设为1,tag设置为主存分区号,然后根据指令所在的主存地址的块内偏移字段得到块内偏移位(00 0011),从数据块副本中取出该指令

