储存器层次结构 第六周10.18~10.25

 第六章 存储器体系结构

存储器系统是具有不同容量、成本和访问时间的存储器设备的层次结构。计算机程序具有局部性。

 6.1 存储技术

三种储存介质:RAM、ROM、磁盘

6.1.1随机访问存储器(RAM)

(1)静态RAM:用来作为高速缓存存储器,每个位存储在一个双稳态的存储器单元里。双稳态:电路可以无限期的保持在两个不同的电压配置或者状态之一。

(2)动态RAM:用来作为主存以及图形系统的帧缓冲区。将每个位存储为对一个电容的充电,当电容的电压被扰乱之后,他就永远都不会再恢复了。暴露在光线下会导致电容电压改变。

(3)传统的DRAM:DRAM芯片中的单元(位)被分成了d个超单元,每个超单元都由w个DRAM单元组成, 一个d*w的DRAM共存储dw位信息。超单元被组织成一个r行c列的长方形阵列,rc=d。每个超单元的地址用(i,j)来表示(从零开始)。

(4)存储器模块

双列直插存储器模块(DIMM):168个引脚,以64位为块传入/传出数据到存储控制器。

单列直插存储器模块(SIMM):72个引脚,以32位为块传入/传出数据到存储控制器。

(5)增强的DRAM

快页模式DRAM、扩展数据输出DRAM、同步DRAM、双倍数据速率同步DRAM、RambusDRAM、视频DRAM

(6)非易失性存储器

如果断电,DRAM和SRAM都会丢失信息。

PROM:只能被编程一次。PROM每个存储单元有一种熔丝,只能用高电流熔断一次。

可擦写可编程ROM(EPROM):紫外线光照射过窗口,EPROM就被清除为0,被擦除和重编程的次数为1000次。

电子可擦除ROM(EEPROM):不需要一个物理上独立的编程设备,因此可以直接在印制电路卡上编程,能够编程的次数为10^5。

闪存:基于EEPROM,为大量的电子设备提供快速而持久的非易失性存储。

6.1.2磁盘存储

(1)磁盘构造:磁盘由盘片构成,旋转速率大约为5400-15000每分钟。磁盘的每个表面是一组称为磁道的同心圆组成,每个磁道被划分为一组扇区,扇区之间由一些间隙隔开,间隙存储用来标识扇区的格式化位。

(2)磁盘容量由以下技术因素决定:

记录密度(位/英寸):磁道一英寸的段中可以放入的位数。

磁道密度(道/英寸):从盘片中心出发半径上一英寸的段内可以有的磁道数

面密度(位/平方英寸):记录密度与磁道密度的乘积。

 储存器层次结构 第六周10.18~10.25_第1张图片

 (3)磁盘操作:磁盘用读/写头来读写存储在磁性表面的位,而读写头连接到一个传动臂 一端,通过移动转动臂将读写头定位在磁道上的机械运动称为寻道。磁盘以扇区大小的块来读写数据,对扇区的访问时间有三个主要的组成部分:

寻道时间:转动臂将读/写头定位到包含目标扇区的磁道上所需时间。

旋转时间:驱动器等待目标扇区的第一个位旋转到读/写头下的时间。

传送时间:读写并传送该扇区内容的时间。

6.1.3固态硬盘

固态硬盘是一种基于闪存的存储技术。一个硬盘包由一个或者多个闪存芯片和内存翻译层组成,闪存芯片替代旋转磁盘中的机械驱动器,而闪存翻译层将对逻辑块的请求翻译成对底层物理设备的访问

6.1.4存储技术趋势

1.不同的存储技术有不同的价格和性能折中。

2.不同存储技术的价格和性能属性以截然不同的速率变化着

3.DRAM和磁盘的性能滞后于CPU的性能。

6.2局部性

局部性原理:一个编写良好的计算机程序倾向于引用邻近于其他最近引用过的数据项,或者最近引用过的数据项本身。有良好局部性的程序比局部性差的程序运行的更快,在硬件层引入高速缓存存储器就体现了局部性原理。

6.3存储器层次结构

储存器层次结构 第六周10.18~10.25_第2张图片

(1)缓存命中:当程序需要第k+1层的某个数据对象d时,首先在当前存储的第k层的一个块中查找d,如果d刚好在第k层中,则称为缓存命中。

(2)缓存不命中:如果k层中没有缓存数据d,则称为缓存不命中,此时要从k+1层取出包含d的块,可能会覆盖(替换/驱逐)现在的一个块(牺牲块)。

(3)缓存不命中的种类

强制性不命中/冷不命中:第k层缓存是空的(冷缓存),只是短暂的状态,不会在反复访问存储器使得缓存暖身之后的稳定状态出现。

冲突不命中:第k+1层的第i块,必须放置在第k层的块(i mod 4)中,这种限制性的放置策略引起冲突不命中。

6.4高速缓存存储器

6.4.1通用的高速缓存存储器结构

高速缓存被组织成一个有S=2^s个高速缓存组的数组,每个组包含E个高速缓存行,每个行是由一个B=2^b字节的数据块、一位有效位以及t=m-(b+s)个标记位组成,唯一标识存储在这个高速缓存行中的块。

高速缓存的结构用元组(S,E,B,m)来描述,高速缓存的大小C = S * E * B。

6.4.2直接映射的高速缓存

每组只有一行(E=1)的高速缓存称为直接映射高速缓存。

(1)直接映射高速缓存中的组选择:高速缓存从要抽取的字的地址中抽取出S个组索引位,这些位被解释成一个对应于一个组号的无符号整数。

(2)直接映射高速缓存中的行匹配:当且仅当设置了有效位,而且高速缓存行标记与w的地址中的行标记相匹配时,这一行中包含w的一个拷贝。

(3)直接映射高速缓存中的字抽取:块偏移位提供了所需要的字的第一个字节的偏移。

(4)直接映射高速缓存中不命中时的行替换:需要从存储器层次结构中的下一层取出被请求的块,将新的块存储在组索引位指示的组中的一个高速缓存行中。

6.4.3组相连高速缓存

组相连高速缓存中的组选择:与直接映射高速缓存中的组选择一样,组索引位标识组。

组相连高速缓存中的行匹配和字选择:把每个组看做一个小的相关联存储器,是一个(key,value)对的数组,以key为输入,返回对应数组中的value值。高速缓存必须搜索组中的每一行,寻找有效的行其标记与地址中的相匹配。

组相连高速缓存中不命中时的行替换:最简单的替换策略是随机选择要替换的行,其他复杂的策略则使用了局部性原理,例如最不常使用、最近最少使用,等。

6.4.7高速缓存参数的性能影响

影响性能的因素

高速缓存大小的影响:较大的高速缓存可能会提高命中率,但使大存储器运行的更快是更难一些的。

块大小的影响:较大的块能利用程序中可能存在的空间局部性,帮助提高命中率;但块越大意味着高速缓存行较少,损害时间局部性。

相联度的影响:相联度较大(E值较大)优点是降低了高速缓存由于冲突不命中出现抖动的可能性,但成本较高。

写策略的影响:直写高速缓存易实现,而且能使用独立于高速缓存的写缓冲区,用来更新存储器,不命中开销小。

感想:

本次学习学习到了基本的储存技术并知道了他们是如何被组织成层次结构的,学会了如何分析c程序的局部性,学会了如何改进自己所编写程序中局部性问题,对储存器山有了新的了解。

参考资料:

1.《深入理解计算机系统》

2.计算机体系结构——存储体系 - iwainfo的专栏 - 博客频道 - CSDN.NET

http://blog.csdn.net/iwainfo/article/details/216228

你可能感兴趣的:(储存器层次结构 第六周10.18~10.25)