(提示:此处由学生填写,学习过程,学习笔记,代码编译,运行结果,思考等)
第6章 存储器层次结构 6.1 存储技术 6.1.1随机访问存储器
- RAM
RAM
分为两类:静态和动态。
静态RAM(SRAM)比动态RAM(DRAM)更快,但也贵很多。
SRAM用来作为高速缓存存储器,即可以在CPU芯片上,也可以不在CPU芯片上。DRAM用来作为主存以及图形系统的帧缓冲区。
分类:SRAM(静态)、DRAM(动态)
存储单元的内容可按需随意取出或存入,这种存储器在断电时将丢失其存储内容,即掉电失忆(常说的电脑内存就是RAM的)。
特点:1.不需要刷新电路即能保存它内部存储的数据。2.集成度较低,需要很大的体积。3.存取快。4.抗干扰。
应用:一般用来作为计算机中的高速缓冲存储器。
优点:速度快,不必配合内存刷新电路,可提高整体的工作效率。
缺点:集成度低,功耗较大,相同的容量体积较大,而且价格较高,少量用于关键性系统以提高效率
特点:1.每个位存储为对电容的充电。2.周期性的用读出然后写回的方式刷新存储器每个位。
应用:主存以及图形系统的帧缓冲区。
2. ROM
分类:PROM、EPROM、E2PROM、FLASH
特点:一次写入,反复读取,即非易失性。
只能被编程一次。每个存储器单元有一种熔丝,只能用高电流熔断一次。
可重复擦除和编程次数达到1000次。
-
EEPROM(E2PROM电子可擦除可编程只读存储器)
不需要独立编程设备,可直接在印制电路卡上进行。编程次数可达100000次。
非易失性的内存,基于EEPROM。 6.1.2磁盘存储
由一些盘片构成,盘片的正反面都能存储数据,每个盘片分成许多的磁道,每个磁道分成一些扇区。(通常一个扇区为512B。) 表面:每个盘片有两个表面 主轴:盘片中央,可旋转 旋转速率:通常5400~15000/min 磁道:同心圆们 扇区:每个磁道被划分为一组扇区 数据位:每个扇区包含相等数量的~,通常为512字节 间隙:存储用来标识扇区的格式化位 磁盘驱动器-磁盘-旋转磁盘 柱面:所有盘片表面上到主轴中心的距离相等的磁道的集合。
磁盘的容量 = 每扇区大小*每磁道扇区数*磁道数 *2 * 盘片数量
磁盘容量是由以下技术因素决定的:
记录密度 磁道密度 面密度
(1)任何时刻,所有的读写头都位于同一柱面上。 (2)在传动臂末端的读/写头在磁盘表面高度约0.1微米处一层薄薄的气垫上飞翔,速度大约为80km/h。磁盘以扇区大小的块来读写数据。 (3)对扇区的访问时间有三个主要部分组成:
1.寻道时间(seek time):为了读取某个目标扇区的内容,传动臂把读/写头首先定位到包含目标扇区的磁道上。所需时间即为寻道时间,约等于最大旋转时间。 2.旋转时间(rotational latency):定位到期望的磁道后,驱动器等待目标扇区的第一个位旋转到读/写头下。 Tmax rotation = 1/最大旋转数率 Tavg rotation = (1/2) × Tmax rotation 3.传送时间(transfer time):Tavg transfer = (1/最大旋转数率) × (1/每磁道的平均扇区数)
6.1.3固态硬盘 固态硬盘是一种基于闪存的存储技术,在某些情况下是传统旋转磁盘的极有吸引力的替代产品。 6.2 局部性
局部性有两种形式:时间局部性(temporal locality)和空间局部性(spatial locality)。
在一个具有良好时间局部性的程序中,被引用过一次的存储器位置很可能在不远的将来再被多次引用;
在一个具有良好空间局部性的程序中,如果一个存储器位置被引用了一次,那么程序很可能在不远的将来引用附近的一个存储器位置。
6.2.1对程序数据引用的局部性  对于sum来说,有很好的时间局部性,因为sum是标量,对于sum来说,没有空间局部性;对于变量v,有很好的控件局部性,但是因为每个向量元素只被访问一次,因此时间局部性很差。因此,总体来说,sumvec函数有很好的局部性。
 6.2.2取指令的局部性 因为程序指令是存放在存储器中的,CPU必须取出这些指令,所以我们也能评价一个程序关于取指令的局部性。
1.重复引用同一个变量从的程序有良好的时间局部性;
2.对于步长为k的引用模式的程序,步长越小,空间局部性越好。具有步长为1的引用模式的程序有很好的空间局部性;
3.对于取指令来说,循环有很好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。
6.3 存储器层次结构 存储器层次结构示例如下图所示:  6.3.1存储器层次结构中的缓存 存储器层次结构的中心思想是,对于每个k,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备的缓存。 (每层存储设备都是下一层的“缓存”。) 数据总是以块大小作为传送单元在第k层和k+1层之间来回拷贝的。
若需要访问k+1层里的数据块d,如果d已经缓存在第k层,则称缓存命中。
若d不在第k层,则是缓存不命中。第k层缓存会从第k+1层缓存中取出包含d的那个块。如果第k层缓存已满,就可能会覆盖现存的一个块。
替换策略:1.随机替换策略-随机牺牲一个块。2.最少被使用替换策略LRU-牺牲最后被访问的时间距离现在最远的块。
1.强制性不命中(冷不命中)
一个空的缓存称为冷缓存,对任何数据对象的访问都不会命中。通常是短暂事件,不会在反复访问存储器使得缓存暖身之后的稳定状态中出现。
2.冲突不命中
限制性的放置策略——将第k+1层的某个块限制放置在第k层块的一个小的子集中。
3.容量不命中
当工作集的大小超过缓存的大小时,缓存会经历容量不命中,就是说缓存太小了,不能处理这个工作集。
6.3.2存储器层次结构概念小结 基于缓存的存储器层次结构行之有效,是因为较慢的存储设备比较快的存储设备更便宜,还因为程序往往展示局部性:
- 利用时间局部性:由于时间局部性,同数据对象可能会被多次使用,一旦一个数据对象在第一次不命中时被拷贝到缓存中,我们就会期望后面该目标有一系列的访问命中。因为缓存比低层的存储设备更快,对后面的命中的服务会比最开始的不命中快很多。
- 利用空间局部性:块通常包含有多个数据对象。由于空间局部性,我们会期望后面对话中其他对家的访问能够补偿不命中后拷贝该块的花费。
6.4 高速缓冲存储器 6.4.1通用的高速缓存存储器结构
有效位:每个行有一个有效位,指明这个行是否包含有意义的信息 标记位:t=m-(b+s)个,唯一标识了存储在这个高速缓存行中的块
将m个地址划分成了t个标记位,s个组索引位和b个块偏移位。
6.4.2直接映射高速缓存 每个组只有一行(E = 1)的高速缓存被称为直接映射高速缓存(direct-mapped cache)。
高速缓存确定一个请求是否命中,然后抽取出被请求的字的过程,分为三步
- 组选择
- 行匹配
- 字抽取
直接映射高速缓存中的组选择 如果把高速缓存看作一个关于组的一维数组,那么这些组索引就是一个到这个数组的索引。如果我们把块看作一个字节的数组,而字节偏移是这个数组的一个索引。
- 直接映射高速缓存中的行匹配
当且仅当设置了有效位,而且告诉缓存行中的标记与w的地址中标记相匹配时,这一行中包含w的一个拷贝。(有效位+标记)
- 直接映射高速缓存中的字选择
块偏移位提供了所需要的字的第一个字节的偏移。
- 直接映射高速缓存中不命中时的行替换
- 综合:运行中直接映射高速缓存
- 直接映射高速缓存中的冲突不命中
6.4.3组相连高速缓存
- 1 < E < C/B
- 每个组都保存有多于一个的高速缓存行。
6.4.4全相连高速缓存
- E = C/B
- 只有一个组,这个组包含所有的高速缓存行。
- 因为全相联高速缓存需要并行搜索许多相匹配的行,所以构造相对是困难的;因此只适合做小的高速缓存;如虚拟存储器系统中的TLB,它缓存页表项。
6.4.5有关写的问题 1.写命中: 直写:立即将w的高速缓存块写回到紧接着的低一层中。每次写都会引起总线流量。 写回:当替代算法要驱逐更新过的块时,才写到紧接着的低一层中。减少了总线流量,增加了复杂性,要有一个额外的修改位来表明这个高速缓存块是否被修改过。 2.写不命中: 写分配:加载低一层的块到高速缓存中,然后更新这个高速缓存块。 非写分配:直接把这个字写到低一层中。 6.4.6一个真实的高速缓存层次结构的解剖
- 到目前为止,我们一直假设高速缓存只保存程序数据。不过实际上,也保存指令。
- 只保存指令的高速缓存程序数据称为i-cache。只保存程序数据的高速缓存称为d-cache。既保存指令又包括数据的高速缓存称为统一的高速缓存。
- 现代处理器包括独立的i-cahce和d-cache。这样做有很多原因。有两个独立的高速缓存,处理器能够同时读一个指令字和一个数据字。i-caChe通常是只读的,因此比较简单。通常会对不同的访问模式来优化这两个高速缓存,它们可以有不同的块大小、相联度和容量。有不同的高速缓存也确保了数据访问不会与指令访问形成冲突不命中,反过来也是一样,代价就是可能会引起容量不命中增加。
6.4.7高速缓存参数的性能影响 有许多指标来衡量高速缓存的性能:
- 不命中率:它是这样计算的:不命中数量/引用数量
- 命中率:命中的存储器引用比率
- 命中时间:命中时间的数量级是几个时钟周期
- 不命中处罚
- 高速缓存大小的影响:
大——提高命中率,运行更慢,增加命中时间
大——提高命中率,损害时间局限性比空间局限性更好的程序中的命中率,不命中惩罚时间更长
E大——降低抖动可能性,成本高,运行慢,需要更多标记位,增加命中时间,增加不命中惩罚
直写:容易实现,能使用独立于高速缓存的写缓存区,读不命中开销没那么大 写回:缓存引起的传送较少,允许更多的到存储器的带宽用于执行DMA的I/O设备。 高速缓存越往下层越会使用写回。 参考:20135337朱荟潼 http://www.cnblogs.com/zzzz5/p/4906215.html |
重点练习题:6.2,6.3,6.4,6.8,6.9,6.10,6.11,6.12, 6.13
6.1 节
了解三种常见存储技术:RAM/ROM/磁盘;
RAM有SRAM和DRAM,特点和应用;
ROM有PROM,EPROM,E2PROM,FLASH;
磁盘是重点,涉及到后面的i/o和文件系统,做好相关练习
磁盘结构:盘片、磁道、扇区、间隙、柱面;磁盘驱动器
磁盘容量
访问时间:寻道、旋转、传送
逻辑磁盘块:这个很重要,内存可以看成字节数组、磁盘可以看成块数组
总线
数据总线、控制总线、地址总线
系统总线、存储总线、I/O总线:p395图要理解
读写事务:P389图要能理解
6.2 节
局部性原理:时间局部性、空间局部性,有能力者理解一下p429最后一段“存储器山”
数据引用局部性
取指令局部性
6.3 节
存储层次结构:系统观(1+1>2)(举一反三:对称不对称加密形成的混合加密系统,混合动力汽车...)
中心思想:每层存储设备都是下一层的“缓存”
对照p408的表理解
6.4节
高速缓存结构(S,E,B,m):高速缓存组、高速缓存行、块
映射
命中
缓存管理