深入理解计算机系统_第六章_存储器层次结构

本文详细介绍了计算机存储器层次结构,包括随机访问存储器(SRAM和DRAM)、磁盘和固态硬盘,强调了局部性原则在程序性能优化中的重要性。高速缓存作为CPU与主存之间的关键层次,通过直接映射、组相联和全相联三种方式管理数据。文章探讨了不同高速缓存策略及其对写操作的影响,并提供了编写高速缓存友好代码的建议,指出良好的时间与空间局部性可以显著提升程序性能。
摘要由CSDN通过智能技术生成

章前导读

到目前我们只看到了一个简化的计算机系统模型,其中CPU执行指令,而存储器系统为CPU存放指令和数据,实际上存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。CPU寄存器保存最常用的数据;靠近CPU的小的、快速的高速缓存存储器作为一部分存储在相对慢速的主存储器中数据和指令的缓冲区域;主存储器存储在容量较大的、慢速磁盘上的数据,这些磁盘可以作为存储在通过网络连接的其他机器的磁盘上的数据的缓冲区域。
如果理解了系统是如何将数据在存储器层次结构中上上下下移动的,那么你就可以编写自己的应用程序,使它们的数据项存储在层次结构中较高的地方,在那里CPU能更快地访问到它们。
这个思想称为局部性。具有良好局部性的程序运行的更快,因为它倾向于一次次地访问相同的数据项集合,或相邻的数据项集合。比如,Core i7系统,不同的矩阵乘法核心程序执行相同数量的算术操作,在不同局部性下,运行时间相差40倍。
接下来介绍一些基本的存储即使——SRAM、DRAM、ROM以及旋转的和固态的硬盘——并描述它们如何被组织成层次结构。我们将特别关注高速缓存存储器,它在CPU和主存之间,对程序性能影响最大。

存储技术

计算机技术的成功跟大程度源自于存储技术的巨大进步

随机访问存储器

随机访问存储器(Random-Access Memory,RAM)分两类:静态(SRAM)和动态(DRAM)。SRAM比DRAM更快,也更贵。SRAM用来作为高速缓存存储器。DRAM用来作为主存,以及图形系统的帧缓冲区。
1.SRAM
SRAM的每个维存储在一个双稳态存储器单元中,这种单元用六晶体管实现,并且可以无限期的保持在两个不同状态之一。所以只要有电,它就永远保持它的值。即使有干扰来扰乱电压,当干扰消除,电路就会恢复到稳定值。
2.DRAM
DRAM将每个位存储为对一个电容的充电。所以DRAM存储器单元对干扰非常敏感,被扰乱后就永远不会恢复,暴露在光线下会导致电容电压改变(数码相机和摄像机的传感器本质上就是DRAM单元阵列)。DRAM很容易漏电,导致数据丢失,所以内存系统必须周期性的读出-重写来刷新内存每一位。
在这里插入图片描述
3.传统DRAM
电路设计者把DRAM组织成了二维阵列而不是线型数组的一个原因是降低芯片上地址引脚的数量。比如128位(16单元 * 8位)DRAM组织成线性数组的话,地址为0 ~ 15,那么需要4个地址引脚,如果是二维阵列,就只需要2个(先发从行地址,再发送列地址)。二维阵列组织的缺点是必须分布发送地址,增加了访问时间。
每个DRAM芯片连接到内存控制器的电路,这个电路可以一次传送w位到每个DRAM芯片或一次从每个DRAM芯片传出w位(对于16 * 8的DRAM,w = 8)。为了读出(i,j)位置的内容,内存控制器先发送行地址i到DRAM,这时DRAM会把这一行的所有数值存在内部行缓冲区中,再发送列地址j到DRAM,然后DRAM就在内部行缓冲区中取出对应列的数值,这样DRAM就把(i,j)的内容发回给控制器了。行地址i称为RAS,列地址j称为CAS,RAS和CAS请求共享相同的DRAM地址引脚。
4.内存模块
DRAM芯片封装在内存模块中,插到主板的扩展槽上。下图是内存模块的基本思想。在这里插入图片描述
要取出内存地址A处的一个字,内存控制器将A转换成一个单元地址(i,j),并将地址发送到内存模块,内存模块将i和j广播到每个DRAM。作为响应,每个DRAM输出它的(i,j)单元的8位内容。模块中的电路收集这些输出,并把它们整合为一个64位字,再返回给内存控制器。
通过将多个内存模块连接到内存控制器,能够聚合成主存。这种情况下,当控制器收到一个地址A时,控制器选择包含A的模块k,将A转换成它的(i,j)形式,并将(i,j)发送给模块k。
5.增强DRAM
快页模式(FPM DRAM),传统的DRAM将一整行单元复制到内部行缓冲器中,使用一个,丢弃剩余。FPM DRAM允许对同一行连续地访问可以直接从行缓冲区得到,从而改进了这一点。
扩展数据输出(EDO DRAM),这是FPM DRAM的增强,允许各个CAS信号在时间上靠近的更紧密。
同步(SDRAM),就它们与内存控制器通信使用一组显式的控制信号来说,常规的、FPM和EDO DRAM都是异步的。SDRAM用与驱动内存控制器相同的外部时钟信号的上升沿来代替许多这样的控制信号,最终效果就是SDRAM能够比那些异步存储器更快的输出它的单元内容。
双倍数据速率同步(DDR SDRAM),DDR SDRAM是对SDRAM的一种增强,通过两个时钟沿作为控制信号,从而使DRAM的速度翻倍。不同的DDR用提高有效带宽的很小的预期缓冲区大小划分:DDR(2位)、DDR2(4位)、DDR3(8位)
视频RAM(VRAM),用于图形系统的帧缓冲区中,它与FPM DRAM类似,两个主要区别是:VRAM的输出是通过依次对内部缓冲区的整个内容进行移位得到的;VRAM允许对内存并行读写。
6.非易失性存储区
如果断电,DRAM和SRAM会丢失信息,所以是易失的非易失性存储区在断电后,依然保存信息。ROM中有的类型既可以读也可以写,但是它们整体上被称为只读寄存器(ROM)
可编程ROM PROM只能变成一次。
可擦写可编程ROM(EPROM)可以擦除和编程1000次,而EEPROM可以达到100000次。
闪存基于EEPROM,它为大量的电子设备提供快速而持久的非易失性存储,比如手机,笔记本等。之后还会研究新型的基于闪存的磁盘驱动器,称为固态硬盘(SSD),相对于传统旋转磁盘,SSD更快速。
存储在ROM设备中的程序通常被称为固件。当一个计算机系统通电后,它会运行存储在ROM中的固件。
7.访问主存
数据流通过称为总线的共享电子电路在处理器和DRAM主存之间来来回回。每次CPU和主存之间的数据传送都是通过一系列步骤完成的。这些步骤称为总线事务。从主存传数据到CPU是读事务,从CPU到主存是写事务。总线是一组并行导线,能携带地址、数据和控制信号。当然,可以根据总线的设计,数据和地址信号可以共享同一组导线,也可以使用不同的。两个以

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值