第6章 存储器层次结构
知识点
1、RAM随机访问存储器
分类:SRAM(静态)、DRAM(动态)
特点:存储单元的内容可按需随意取出或存入,这种存储器在断电时将丢失其存储内容,即掉电失忆(常说的电脑内存就是RAM的)。
(1)SRAM
1.特点:1.不需要刷新电路即能保存它内部存储的数据。2.集成度较低,需要很大的体积。3.存取快。4.抗干扰。
2.应用:一般用来作为计算机中的高速缓冲存储器
优点:速度快,不必配合内存刷新电路,可提高整体的工作效率。
缺点:集成度低,功耗较大,相同的容量体积较大,而且价格较高,少量用于关键性系统以提高效率
(2)DRAM
1.特点:1.每个位存储为对电容的充电。2.周期性的用读出然后写回的方式刷新存储器每个位。
2.应用:一般用来作为计算机中的高速缓冲存储器
2、ROM只读存储器
1.分类:PROM、EPROM、E2PROM、FLASH
2.特点:一次写入,反复读取,即非易失性。
(1)PROM(可编程只读存储器)
只能被编程一次。每个存储器单元有一种熔丝,只能用高电流熔断一次。
(2)EPROM(可擦写可编程只读存储器)
可重复擦除和编程次数达到1000次。
(3)EEPROM(E2PROM电子可擦除可编程只读存储器)
1.不需要独立编程设备,可直接在印制电路卡上进行。
2.编程次数可达100000次。
(4)FLASH(闪存)
非易失性的内存,基于EEPROM。
3、磁盘
(1)结构、容量
由一些盘片构成,盘片的正反面都能存储数据,每个盘片分成许多的磁道,每个磁道分成一些扇区。(通常一个扇区为512B。)
• 表面:每个盘片有两个表面
• 主轴:盘片中央,可旋转
• 旋转速率:通常5400~15000/min
• 磁道:同心圆们
• 扇区:每个磁道被划分为一组扇区
• 数据位:每个扇区包含相等数量的~,通常为512字节
• 间隙:存储用来标识扇区的格式化位
• 磁盘驱动器-磁盘-旋转磁盘
• 柱面:所有盘片表面上到主轴中心的距离相等的磁道的集合。
磁盘的容量 = 每扇区大小*每磁道扇区数*磁道数 *2 * 盘片数量
(2)访问时间
1.对扇区的访问时间包括:寻道时间,旋转时间和传送时间
1.寻道时间:将读写磁头放在包含要访问的扇区的磁道上。T(seek),取决于磁头以前的位置和传动臂移动的速度。
2.旋转时间:定位到磁道后,转动盘片,直到指定的扇区到达磁头下。取决于读写头到达目标磁道时的位置和盘片的转速。
最大旋转时间就是盘片转一圈的时间了。
3.传送时间:读扇区内容需花费的时间。取决于转速和每条磁道的扇区数目。
2.计算时间公式
T(max rotation)=1/RPM * 60secs/1min ——最大旋转延迟时间
T(avg rotation)=1/2 * T(max rotation) ——平均延迟时间
T(avg transfer)=1/RPM * 1/(平均扇区数/磁道) * 60secs/1min ——平均传送时间
T(access)=T(avg seek)+T(avg rotation)+T(avg transfer) ——整个估计的访问时间
总结:访问一个磁盘扇区中512字节主要花在寻道时间和旋转延迟
(3)逻辑磁盘块
1.磁盘控制器,维护逻辑块号和物理磁盘扇区之间的映射关系。
2.要执行I/O操作时,操作系统发送一个命令到磁盘控制器,执行一个快速表查找,将一个逻辑块号翻译成一个三元组(盘面,磁道,扇区),唯一标识列对应的物理扇区。
3.解释三元组:将读写头移动到适当柱面,等待山区移动到读写头下,将读写头感知到的位放到控制器上的小缓冲区中,将它们拷贝到主存中。
(4)总线
数据总线、控制总线、地址总线、系统总线、存储总线、I/O总线
(这部分主要采用了对各个名词“百度”的方式进行学习了解)
存储总线:1.并行传递方式。
2.指令和数据向CPU传递时的通道。
3.细分为三组:数据总线(用于传递数据);地址总线(用于传递主存储器的地址);控制总线(用于各种内部控制指令的传递)。
系统总线:1.传送的信息包括数据信息、地址信息、控制信息。
2.数据总线(用于传送数据信息);地址总线(用来传送地址的,地址只能从CPU传向外部存储器或I/O端口, 地址总线总是单向三态的,这与数据总线不同。地址总线的位数决定了CPU可直接寻址的内存空间大小);控制总线(用来传送控制信号和时序信号)。
I/O总线:指缆线和连接器系统,用来传输I/O路径技术指定的数据和控制信号。
4、局部性
1.有良好局部性的程序比局部性差的程序运行的更快。
2.分为时间、空间局部性
(1)数据引用局部性
对于sum来说,有很好的时间局部性,因为sum是标量,对于sum来说,没有空间局部性;对于变量v,有很好的控件局部性,但是因为每个向量元素只被访问一次,因此时间局部性很差。因此,总体来说,sumvec函数有很好的局部性。
(2)取指令局部性
上述一维数组示例中,for循环中的指令是按照连续的存储器顺序执行的,因此循环有良好的空间局部性。因为循环体会被执行多次,所以也有很好的时间局部性。
(3)局部性小结
评价一个程序中局部性的简单原则:
1.重复引用同一个变量从的程序有良好的时间局部性;
2.对于步长为k的引用模式的程序,步长越小,空间局部性越好。具有步长为1的引用模式的程序有很好的空间局部性;
3.对于取指令来说,循环有很好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。
5、存储层次结构
1.中心思想:每层存储设备都是下一层的“缓存”。
2.任何时刻,第k层的缓存包含第k+1层块的一个子集的拷贝。
(1)缓存命中
若需要访问k+1层里的数据块d,如果d已经缓存在第k层,则称缓存命中。
(2)缓存不命中
若d不在第k层,则是缓存不命中。第k层缓存会从第k+1层缓存中取出包含d的那个块。如果第k层缓存已满,就可能会覆盖现存的一个块。
替换策略:1.随机替换策略-随机牺牲一个块。2.最少被使用替换策略LRU-牺牲最后被访问的时间距离现在最远的块。
(3)缓存不命中的种类
1.强制性不命中(冷不命中)
一个空的缓存称为冷缓存,对任何数据对象的访问都不会命中。通常是短暂事件,不会在反复访问存储器使得缓存暖身之后的稳定状态中出现。
2.冲突不命中
限制性的放置策略——将第k+1层的某个块限制放置在第k层块的一个小的子集中。
3.容量不命中
当工作集的大小超过缓存的大小时,缓存会经历容量不命中,就是说缓存太小了,不能处理这个工作集。
6、高速缓存结构
(1)通用的高速缓存存储器结构
。
有效位:每个行有一个有效位,指明这个行是否包含有意义的信息
标记位:t=m-(b+s)个,唯一标识了存储在这个高速缓存行中的块
将m个地址划分成了t个标记位,s个组索引位和b个块偏移位。
(2)直接映射高速缓存
1.每组只有一行的高速缓存叫直接映射高速缓存。
2.高速缓存确定一个请求是否命中,然后抽取出被请求的字的过程,分为三步:1)组选择 2)行匹配 3)字抽取
a)组选择
如果把高速缓存看做一个关于组的一维数组,那么这些组的索引位就是一个到这个数组的索引。
b)直接映射高速缓存行匹配
当且仅当设置了有效位,而且告诉缓存行中的标记与w的地址中标记相匹配时,这一行中包含w的一个拷贝。(有效位+标记)
c)直接映射高速缓存中的子选择
块偏移位提供了所需要的字的第一个字节的偏移。
d)直接影射高速缓存中时的行替换
如果缓存不命中,那么它需要从存储器层次结构的下一层去除被请求的块,然后将新的块存储在组索引位指示的组中的一个高速缓存行中。
(3)组相联高速缓存
1.组选择
与直接映射高速缓存中的组选择一样,组索引位标识组。
2.行匹配和字选择
把每个组看做一个小的相关联存储器,是一个(key,value)对的数组,以key为输入,返回对应数组中的value值。高速缓存必须搜索组中的每一行,寻找有效的行其标记与地址中的相匹配。
形式是(key, value),用key作为标记和有效位去匹配,匹配上了之后返回value。
组中的任意一行都可以包含任何映射到这个组的存储器块,所以告诉缓存必须搜索组中的每一行。
3.组相连高速缓存中不命中时的行替换:
随机替换
最不常使用策略LFU:替换在过去某个时间窗口内引用次数最少的那一行。
最近最少使用策略LRU:替换最后一次访问时间最久远的那一行。
(4)全相连高速缓存
1.组选择
只有一个组,没有组索引位。
2.行匹配和字选择
与组相连高速缓存是一样的,但规模大很多,因此只适合做小的高速缓存,例如虚拟存储系统中的翻译备用缓冲器。
遇到问题及解决
1.书上说:DRAM每个位存储为对电容的充电。
解决:我理解的意思是:电容里有电就是1,没电就是0。
2.针对书上图6-20为什么行扫描是"i<N","j<M"?
解决:我发现小组中有同学提问。我的理解是i的循环先进一次到j的循环,直到j的条件不满足再次进行i的循环,所以是:先i<N,再j<M(j率先完成一轮循环——即是行扫描)。
其他
总结体会
看本章第一节内容时感觉小的知识点很多,学起来没有清晰的线路,之后按照老师的教材导读给出的知识点进行学习是比较清晰的。
参考资料
《深入理解计算机系统》