第六章 存储器层次结构
存储器系统是一个具有不同容量、成本、和访问时间的存储设备的层次结构。
6.1存储技术
随机访问存储器分为两类:静态和动态。静态SRAM比动态DRAM更快,但也贵的多。
CPU寄存器、高速缓存存储器、主存储器、磁盘。
1、静态RAM
SRAM将每个位存储在一个双稳态的存储器单元里。每个单元是用一个六晶体管电路来实现。
2、动态RAM
DRAM将每个位存储为对一个电容的充电。
关于两种存储器中的特性书384页图6-2有示
3、传统DRAM
DRAM芯片中的单元(位)被分成d个超单元,每个超单元都由w个DRAM单元组成。
一个d*w的DRAM总共存储了dw位信息。
将DRAM组织成二维阵列而不是线性数组的一个原因是降低芯片上地址引脚的数量,
信息通过引脚流入流出芯片,每个引脚携带一个1位的信号。
4、存储器模块
DRAM芯片包装在存储器模块中,它是插到主板的扩展槽上的。常见的包装包括168个引脚的双列直插存储器模块,它以64位为块传送数据到存储控制器和从存储控制器传出数据,还包括72个引脚的单列直插存储器模块,它以32位块传送数据。
通过将多个存储器模块连接到存储控制器,能够聚合主存,当控制器收到一个地址A时,控制器选择包含A的模块k,将A转换为它的(i, j)的模式,并将(i, j)发送到模块k。
5、增强的DRAM
快页模式DRAM
扩展数据输出DRAM
双倍数据速率同步DRAM
6、非易失性存储器
如果断电,DRAM和SRAM会丢失它们的信息,它们是意识的。而非易失性存储器ROM是以它们能被重编程的次数和它们进行重编程所用的机制来区分。
PROM只能被编程一次,它只能用高电流熔断一次。
可擦写可编程ROM,允许光到底存储单元。
闪存是一类非易失性存储器,基于EEPROM,它已经成为了一种重要的存储技术。
存储在ROM设备中的程序通常称为固件。
7、访问主存
总线是一组并行的导线,能携带地址、数据和控制信号。I/O桥将系统总线的电子信号翻译成存储器总线的电子信号,也将系统总线和存储器总线连接到I/O总线。
二、磁盘存储
1、磁盘是由一个或者多个叠放在一起的盘片组成,它们被封装在一个密封的包装里。整个装置通常称为磁盘驱动器,简称为磁盘。
将柱面的集合分割成不相交的子集合(记录区),每个区包含一组连续的柱面;
一个区中的每个柱面的每条磁道都有相同数量的扇区,这个扇区的数量由该区中最里面的磁道所能包含的扇区数确定
磁盘容量:记录密度;磁道密度;面密度
磁盘操作:对扇区的访问时间有三个主要的部分,寻道时间,旋转时间,和传送时间。
2、盘面,磁道,扇区,这个三元组唯一的标识了对应的物理扇区。
类比:内存可以看成字节数组、磁盘可以看成块数组。连接到I/O设备(I/O总线)I/O总线连接了CPU,主存和I/O设备。
顺序读写:速度相当,顺序读比顺序写稍微快一点
随机读写:写比读慢一个数量级
原因:底层闪存基本属性决定。
一个闪存由B个块的序列组成,每个块由P页组成。通常页的大小是512~4kb,块是由32~128页组成的,块的大小为16kb~512kb。
数据是以页为单位由半导体构成,没有移动的零件
6.2局部性
局部性原理:
一个编写良好的计算机程序,常常倾向于引用临近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。
分类:
- 时间局部性
- 空间局部性
1.硬件层:
通过引入高速缓存存储器来保存最近被引用的指令和数据项,从而提高对主存的访问速度。
步长为k的引用模式:一个连续变量中,每隔k个元素进行访问,就被称为步长为k的引用模式。
步长为1的引用模式:就是顺序访问一个向量的每个元素,有时也被称为顺序引用模式,它是程序中 空间局部性常见和重要的来源。
一般来说,随着步长增加,空间局部性下降。
2.取指令的局部性
程序指令是存放在存储器中的,CPU必须取出(读出)这些指令。
但是代码区别于程序数据的一个重要属性是:在运行时它是不能被修改的。
6.3存储器层次结构
即:每层存储设备都是下一层的“缓存”
高速缓存:是一个小而快速的存储设备,它作为存储在更大、更慢的设备中的数据对象的缓冲区域。
缓存:使用高速缓存的过程称为缓存。
数据总是以块大小为传送单元在第k层与第k+1层之间来回拷贝。任一对相邻的层次之间块大小是固定的,但是其他的层次对之间可以有不同的块大小。
一般来说:层越低,块越大。
1.缓存命中:当程序需要第k+1层的某个数据对象d时,首先在当前存储在第k层的一个块中查找d,如果d刚好缓存在第k层中,就称为缓存命中。
该程序直接从第k层读取d,比从第k+1层中读取d更快。
2.缓存不命中:即第k层中没有缓存数据对象d。
这时第k层缓存会从第k+1层缓存中取出包含d的那个块。如果第k层缓存已满,就可能会覆盖现存的一个块
覆盖——替换/驱逐
替换策略:随机替换策略-随机牺牲一个块;最近最少被使用替换策略LRU-牺牲最后被访问的时间距离现在最远的块。
缓存不命中的种类:强制性不命中/冷不命中
第k层的缓存是空的(称为冷缓存),对任何数据对象的访问都不会命中。
通常是短暂事件,不会在反复访问存储器使得缓存暖身(理解为反复访问存储器,使得存储器不为空?)之后的稳定状态中出现。
冲突不命中:将第k+1层的某个块限制放置在第k层块的一个小的子集中,这就会导致缓存没有满,但是那个对应的块满了,就会不命中。
容量不命中:当工作集的大小超过缓存的大小时,缓存会经历容量不命中,就是说缓存太小了,不能处理这个工作集。
6.4高速缓存存储器
一、通用的高速缓存存储器结构
C=SxExB
二、直接映射高速缓存
组选择,行匹配,字抽取
高速缓存从w的地址中间抽取出s个组索引位
组选择:组索引位:一个对应于一个组号的无符号整数。类比:高速缓存-关于组的一位数组,组索引位就是到这个数组的索引。
行匹配:判断缓存命中有两个充分必要条件该行设置了有效位,高速缓存行中的标记和w的地址中的标记相匹配
字抽取:块-关于字节的数组,字节偏移是到这个数组的一个索引。
心得:这一章的概念比较易懂,练习题也比之前的好理解,给人这一章是让人重新捡回信心的感觉?本人还要多细心,要下功夫钻研,毕竟积分已经落后同学们太多,不懂的可以多多请教同学,加油。
来源:https://www.cnblogs.com/java44/p/4908746.html