第六章存储器层次结构 学习报告
第六章 存储器层次结构
在简单模型中,存储器系统是一个线性的字节数组,而CPU能够在一个常数时间内访问每个存储器位置。
实际上,存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。CPU寄存器保存着最常用的数据。靠近CPU的小的、快速的高度缓存存储器作为一部分存储在相对慢速的主存储器中的数据和指令的缓冲区域。
存储器层次结构是可行的。
6.1 存储技术
6.1.1 随机访问存储器
随机反问存储器分为两类:静态的(SRAM)和动态的(DRAM)。
1.静态RAM
SRAM将每个位存储在一个双稳态的存储单元里。只要有电,他就会永远保持他的值。即使有干扰来扰乱电压,当干扰消除时,电路就会恢复稳定值。
2.动态RAM
DRAM将每个位存储为对一个电容的充电。与SRAM不同,DRAM存储单元易受干扰。当电容的电压被扰乱后,他就永远不会恢复了。
总结:
- 只要供电SRAM就会保持不变。
- SRAM的存取比DRAM快。
- SRAM对干扰不敏感
- SRAM单元比DRAM单元使用更多晶体管,密度较低,更贵,功耗更大。
3.传统的DRAM
DRAM芯片中的单元被分成d个超单元,每个超单元都由w个DRAM单元组成。一个d*w的DRAM总共存储了dw位信息。
4.存储器模块
DRAM芯片包装在存储器模块中,他是插到主板的扩展槽位上的。常见的包括168个引脚的双列直插存储器模块,他以64位为块传送数据到存储控制器和从存储控制器传出数据,还包括72个引脚的单列直插存储器模块,他以32位为块传送数据。
5.增强的DRAM
- 快页模式DRAM
- 扩展数据输出DRAM
- 同步DRAM
- 双倍数据速率同步DRAM
- Rambus DRAM
- 视频RAM
6.非易失性存储器
如果断电,DRAM和SRAM会丢失他们的信息,所以他们是易失的。
非易失性存储器,即使是在关电以后,也仍然保存着他们的信息。他们整体上都称为只读存储器(ROM)。
ROM以他们能够被重新编程的次数和对他们进行重编程所用的机制来区分的。
- PROM 只能被编程一次。
- 可擦可编程ROM,有个透明的石英窗口,允许光到达存储单元。
- 闪存,是一类非易失性存储器,基于EEPROM,他已经成为了一种重要的存储技术。
存储在ROM中的程序通常称为固件。
7.访问主存
数据流通过称为总线(bus)的共享电子电路在处理器和DRAM主存之间来来回回。每次CPU和主存之间的数据传送都是通过一系列步骤来完成的,这些步骤称为总线事务。
读事务从主存传送数据到CPU。
写事务从CPU传送数据到主存。
总线是一组并行的导线,能携带地址、数据和控制信号。
数据和地址能共享一组导线,也可以使用不同的。两个以上的设备也能共享同一导线。
6.1.2 磁盘存储
磁盘是保存大量数据的存储设备。
1.磁盘构造
磁盘是由盘片构成的。每个盘片有两个盘面,表面覆盖着磁性记录材料。盘片中央有个可以旋转的主轴,使得盘片以固定的旋转速率旋转。
每个表面由一组称为磁道的同心圆组成的。每个磁道被划分为一组扇区,每个扇区包含相等数量的数据位,这些数据编码在扇区上的磁性材料中,扇区由一些间隙隔开,间隙存储用来标识扇区的格式化,不存储数据位。
2.磁盘容量
3.磁盘操作
磁盘用读/写头来读写存储在磁性表面的位,而读写头连接到一个传送臂一端,如图:
通过沿着半径轴前后移动这个传送臂。驱动器可以将读/写头定位在盘面的任何磁道上。这样的机械运动称为寻道。
3.逻辑磁盘块(重要)
4.连接到I/O设备
像图形卡、监视器、鼠标键盘和磁盘这样的输入/输出(I/O)设备,都是通过I/O总线连接到CPU和主存的。
虽然I/O总线比系统总线和存储器总线慢,但它可以容纳种类繁多的第三方I/O设备。
6.2 局限性
一个编写良好的计算机程序通常具有良好的局部性。他们倾向于引用邻近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。这种倾向称为局部性原理。
局部性有两种不同形式:时间局部性和空间局部性。
有良好局部性的程序比局部性差的程序运行的更快。
6.2.1 对程序数据引用的局部性
*阅读书上402的例题
6.2.2 取指令的局部性
6.3 存储器层次结构
6.4 高速缓存存储器
高速缓存结构(S,E,B,m):高速缓存组、高速缓存行、块映射
一般而言,高速缓存的结构可以用元组(S,E,B,m)来描述。高速缓存的大小(或容量)C指的是所有块的大小的和。标记位和有效位不包括在内。因此,C=S*E*B.
6.4.2 直接映射高速缓存
高速缓存确认一个请求是否命中,然后抽取出被请求的字的过程,分为三步:组选择、行匹配、字抽取
根据E(每个组的高速缓存行数)高速缓存被分为不同的类。每个组只有一行的高速缓存被称为直接映射高速缓存。
1.直接映射高速缓存中的组选择
2.直接映射高速缓存中的行匹配和字选择
3.直接映射高速缓存中不命中时的行替换
如果缓存不命中,那么需要从存储器层次结构中的下一层取出被请求的块,然后将新的块存储在组索引位指示的组中的一个高速缓行中。
替换规则:用新取出的行替换当前的行。
6.4.3 组相联高速缓存
每个组都保存有多于一个的高速缓存行
1.组相联高速缓存中的组选择
与直接映射高速缓存一样,组索引位标识组。
2.组相联高速缓存中的行匹配和字选择
比直接映射高速缓存更复杂
3.组相联高速缓存中不命中时的行替换
6.4.4 全相联高速缓存
一个全相联高速缓存是由一个包含所有高速缓行的组(E=C/B)组成的。
基本结构:
1.全相联高速缓存中的组选择
只有一个组,所以很简单
2.全相联高速缓存中的行匹配和字选择
全相联高速缓存与组相联高速缓存一样
问题:组相联高速缓存中不命中时的行替换这一点感觉书上没有详细说明,因此没有看懂。