CSAPP:第六章 存储器层次结构

存储器层次结构

关键点:内存

6.1 随机访问存储器6.2 局部性6.3 存储器层次结构

6.1 随机访问存储器

  随机访问存储器(Random-Access Memory,RAM)分为两类:静态的和动态的。静态RAM(SRAM)比动态RAM(DRAM)更快,但也贵的多。SRAM用来作为高速缓存存储器,既可以在CPU芯片上,也可以在片下。DRAM用来做主存以及图形系统的帧缓冲区。

  • 1. 静态RAM
      SRAM将每个位存储在一个双稳态的存储器单元里,具有双稳态性,只要有电,它就会永远地保持它的值。即使有干扰来扰乱电压,当干扰消除时,又会恢复到稳定状态
  • 2. 动态RAM
      DRAM将每个位存储为对一个电容的充电。DRAM存储器可以制造得非常密集--每个单元由一个电容和一个访问晶体管组成。但是与SRAM不同,DRAM存储器单元对干扰非常敏感。当电容的电压被扰乱后,它就不会恢复了
  • 3. 传统的DRAM
      DRAM芯片中的单元(位)被分成d个超单元,每个超单元都由w个DRAM单元组成。一个d * w的DRAM总共存储了dw位信息。超单元被组织成一个r行c列的长方型阵列,这里rc = d。每个超单元有形如(i,j)的地址,这里的i表示行,j表示列。

      如图6-3展示的是一个16x8的DRAM芯片组织,有d = 16个超单元,每个超单元有w = 8位,r = 4行,c = 4列。带有阴影的方框表示地址(2,1)处的超单元,信息通过称为引脚(pin)的外部链接器流入和流出芯片。每个引脚携带一个1位信号。
  • 4. 内存模块
      DRAM芯片封装在内存模块中,它插到主板的扩展槽上。如下图展示了一个内存模块的基本思想。示例模块用8个64Mbit的8M x 8的DRAM芯片,总共存储64MB,这8个芯片编号为0~7.每个超单元存储主存的一个字节,而相应超单元地址为(i,j)的8个超单元来表示主存中字节地址A处的64位字。
      要取出内存地址A处的一个字,内存控制器将A转化成一个超单元地址(i,j),并将它发送到内存模块,然后内存模块再将i和j广播到每个DRAM。作为响应,每个DRAM输出它的(i,j)超单元的8位内容,模块中的电路收集这些输出,并把它们合并成一个64位字,再返回给内存控制器。
  • 5. 增强的DRAM
    • 快页模式DRAM(异步)
    • 扩展数据输出DRAM(异步)
    • 同步DRAM(SDRAM)
    • 双倍速率同步DRAM(Double Data-Rate Synchronous DRAM,DDR SDRAM).
    • 视频RAM(VRAM)
  • 6. 非易失性存储器   如果断电SRAM和DRAM会丢失它们的信息,从某种意义上说,它们是易失性的。非易失性存储器,即使在掉电后,仍然保存着它们的信息。现在有很多种非易失性存储器,但是整体上都被称为只读存储器(Read-only Memory,ROM).
    • PROM(可编程ROM)
    • EPROM(可擦写可编程,Erasable Programmable ROM)
    • EEPROM(电子可擦除PROM)
    • FLASH(闪存,SSD就是基于闪存的磁盘驱动器)
        存储在ROM设备中的程序通常被称为固件(fireware)。当一个计算机通电后,它会运行在ROM中的固件。
  • 7. 访问主存
      数据流通过总线的共享电子电路在处理器和DRAM主存之间来来回回。每次CPU和主存之间的数据传输都是通过一系列步骤完成的,这些步骤称为总线事务。读事务(从主存传送数据到CPU),写事务(从CPU传送数据到主存)

6.2 局部性

  一个良好的计算机程序常常具有良好的局部性。也就是它们倾向于引用临近于其他最近引用过的数据和数据项。这种倾向被称为局部性原理。

  • 时间局部性:在一个具有良好时间局部性的程序中,被引用过一次的内存位置,很可能在不远的将来再次多次被引用。
  • 空间局部性:在一个具有良好空间局部性的程序中,被引用过一次的内存位置,很可能在不远的将来引用附近其他位置的内存。

6.3 存储器层次结构

  计算机存储结构如下图,一般而言从高层往底层走,存储设备变得更慢、更便宜和更大。在最高层是L0,是少量快速的CPU寄存器,CPU可以在一个时钟周期访问它们,接下来是一个或者多个中型基于SRAM的高速缓存存储器,可以在几个时钟周期访问。然后是一个大的基于DRAM的主存,可在几十到几百个时钟周期内访问,接下来是慢速的本地磁盘,最后系统可能还包含了远程服务器。

猜你喜欢

转载自www.cnblogs.com/ywx123/p/10053191.html