《深入理解计算机系统》 第六章 存储器层次结构 读书笔记

0、存储器层次结构的主要思想

存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构,主要由CPU、高速缓存存储器、主存、磁盘构成。一个存储器层次是下一层次的缓存(从集合论上看可理解为子集)。

由于成本原因,主存无法用快速访问的SRAM制造。又由于编写良好的程序具有局部性的特点,它更倾向于频繁访问某一层次上的存储设备。所以与CPU直接访问DRAM主存相比,利用存储器层次化的系统在(少数次)访问底层存储设备的更大开销(指的是CPU等待存取的时钟周期)可以通过多数次访问高速缓存得到补偿。存储器层次结构的整体效果就是存储器池的成本与层次结构底层最便宜的存储设备相当,但是却以接近于层次结构顶部存储设备的高速率向程序提供数据。


1、存储技术

1.0、易失性存储器

1.0.0、SRAM和DRAM

1.0.1、传统的DRAM与增强的DRAM

传统DRAM

     如下图,每个方块代表由w位(一般为8位,这样一个超单元就表示一个字节)bit组成的超单元,整个DRAM由d个超单元组织成二维阵列构成。DRAM中的数据以超单元为单位访问。通过地址引脚传入的RAS(行访问选通脉冲)和CAS(列访问选通脉冲)访问某个超单元,然后加载目标所在行到内部行缓冲区,通过8位的数据引脚输出目标。

     之所以将超单元组织成二维阵列而非线性数组,是为了减少地址的位数,尽管需要付出增加一个传入地址的代价。

增强的DRAM:快页模式DRAM(FPM DRAM) ,扩展数据输出DRAM (EDO DRAM),同步DRAM(SDRAM),双倍数据速率同步DRAM(DDR SDRAM)

1.0.2、存储器模块:

将b个DRAM芯片包装成一个存储器模块,b字节数据被同时存取。缓存中常提到的块就是这样一个存储器模块的一个访问单位。



1.0.3、访问主存:数据流通过称为总线的共享电子电路在处理器和DRAM主存之间来来回回。总线间数据传送的步骤称为总线事务。

1.1、非易失性存储器

1.1.0、ROM(只读存储器)

       实际上ROM中有的类型既可以读也可以写,仍称之为“只读存储器”是历史原因。存在ROM中的程序称为固件,当一个计算机系统通电以后,它会运行存储在ROM中的固件。一些系统在固件中提供了少量基本的输入输出函数。

ROM可按照它们能够被重编程的次数和对它们进行重编程所用的机制分类为:

PROM(可编程ROM),EPROM(可擦写可编程ROM),闪存(基于EEPROM),固态硬盘(SSD,基于闪存)


1.1.1、磁盘

1.1.1.0、磁盘构造


1.1.1.1、磁盘操作

寻道、旋转、读取

时间开销主要是寻道时间和旋转延迟造成。

1.1.1.2、逻辑磁盘块

磁盘中有一个小的硬件/固件设备,称为磁盘之气空啊,维护着逻辑块号和实际物理磁盘扇区之间的映射关系。

1.1.2、固态硬盘(SSD)

固态硬盘结构:闪存翻译层与磁盘控制器作用相同,一个闪存由B个块序列组成,每个块由P页组成。通常页的大小是512~4KB,块是由32~128页组成。数据是以页为单位读写

的。只有在一页所属的整个块被擦除后(有效内容拷贝到其他块)才可写这一页。


闪存由半导体存储器构成,没有移动的部件,因而随机访问时间比旋转磁盘快,能耗更低,同时也更结实。不过闪存块在反复读写后会磨损,所以闪存块有使用寿命

1.2、存储技术趋势


2、程序的局部性

时间局部性:被引用过一次的存储器位置很可能在不远的将来再被多次引用。

空间局部性:被引用过一次的存储器位置附近的数据可能在不远的将来被引用。

取指令的局部性:指令也是存储在存储器中的,循环的时间和空间局部性是好的。循环体越小,迭代次数越多,局部性越好。


3、存储器的层次结构



3.0、缓存

3.0.0、概念

第k+1层的存储器被划分成连续的数据对象片,称为块。每个块都有唯一的地址或名字以区别于其他块。数据总以块大小为传送单元在第k层和第k+1层之间来回拷贝。虽然在层析结构中任何一对相邻的层次之间块大小是固定的,但是其他的层次对之间可以有不同的块大小。第k层存储的块集合是第k+1层的子集的拷贝。

3.0.1、缓存不命中

类别:冷不命中,冲突不命中,容量不命中。

策略:替换(或称驱逐)一个现存块,替换策略有随机替换策略、最近最少被使用替换策略等。

3.1、通用的高速缓存存储器结构(层次对间地址空间“多对少”的映射策略)

3.1.0、可用(S,E,B,m)来描述一个高速缓存的结构。如下图,右图每种不同色代表一个块,且块映射到不同组。


3.1.1、分类:直接映射高速缓存、全相联高速缓存、组相联高速缓存(前两者的折中)

3.1.2、访问某个存储器地址的过程:逐级访问各存储器层次,进行三步——组选择,行匹配,字抽取(若命中)——直到命中

3.2、关于写操作

直写与非写分配:直写是指命中后立即将目标字所在命中块写回到紧接着低一层中;非写分配是指不命中时直接将目标字写到低一层中。

写回与写分配:写回是指命中后延迟更新低一层直到命中块被驱逐;写分配是指不命中时加载响应的低一层中的块到高速缓存中,然后更新这一高速缓存块(试图利用写的空间局部性)。

3.3、高速缓存参数的性能影响:

与性能相关的一些量化指标:不命中率、命中率、命中时间、不命中处罚。

高速缓存参数对性能的影响:缓存大小的影响,块大小的影响,相联度的影响,写策略的影响。


4、一个真实的高速缓存层次结构:


5、编写高速缓存友好代码:a、让最常见的情况运行得快;b、在每个循环(程序的时间开销主要在循环,多重循环主要看内层循环)内部缓存不命中的数量最小

6、存储器系统的性能----存储器山





  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值