06存储器层次结构

存储技术

易失性存储器/随机访问存储器(RAM)

断电后丢失它们的信息

静态RAM(SRAM)

更快、更贵、更稳定、功耗更大

SRAM将每个位存储在一个双稳态的存储器单元里

每个单元是用一个六晶体管电路实现,可以无限期地保持在两个不同的电压配置或状态之一,其它任何状态都是不稳定的——从不稳定状态开始,电路会迅速转移到两个稳定状态中的一个

即使有干扰,当干扰消除时,电路就会恢复到稳定值

动态RAM(DRAM)

DRAM将每个位存储位对一个电容的充电(大约只有30×1015F

每个单元是用一个电容和一个访问晶体管组成,DRAM存储器可以制造的非常密集

对干扰非常敏感,当电容的电压被扰乱之后,永远不会恢复

很多原因会导致漏电,使得DRAM单元在10100毫秒时间内失去电荷时(钟周期时纳秒来衡量),存储器系统必须周期性通过读出,然后重写来刷新存储器的每一位

传统DRAM

DRAM芯片中的单元(位)被分成了d超单元

每个超单元都由w个DRAM单元组成。一个d×w的DRAM总共存储了dw位信息

超单元被组织称一个rc列的阵列,d=rc,来降低芯片上地址引脚的数量,但是增加了访问时间

信息通过引脚的外部连接器流入和流出芯片,每个引脚携带一个1位的信号

每个DRAM芯片被连接到某个成为存储控制器的电路,这个电路可以一次传送w位到每个DRAM芯片或一次从每个DRAM芯片传出w

行地址i称为行访问选通脉冲(RAS)请求,列地址j称为列访问选通脉冲(CAS)请求,RAS和CAS请求共享相同的DRAM地址引脚

存储器模块

DRAM芯片包装在存储器模块中,它是插到主板扩展槽上的

常见的包装包括168引脚的双列直插存储器模块(DIMM),以64位为块传送数据,72引脚的单列直插存储器模块(SIMM),以32位为块传送数据

增强的DRAM

  • 快页模式DRAM(FPM DRAM)

    允许对同一行连续地访问可以直接从行缓冲区的到服务

  • 扩展数据输出DRAM(EDO DRAM)

    FPM DRAM增强形式,允许单独的CAS信号在时间上靠的更紧密

  • 同步DRAM(SDDRAM)

    与存储控制器通信使用一组显示的控制信号,能够比异步存储器更快地输出超单元内容

  • 双倍数据速率同步DRAM(DDR SDRAM)

    SDRAM的增强形式,使用两个时钟沿作为控制信号,使DRAM速度翻倍

    不同类型DDR SDRAM是用提高有效带宽的很小的预取缓冲区的大小来划分的:DDR(2位)、DDR2(4位)、DDR3(8位)

  • Rambus DRAM(RDRAM)

    私有技术,最大带宽比DDR SDRAM更高

  • 视频RAM(VRAM)

    用在图形系统的帧缓冲区

    输出是通过依次对内部缓冲区的整个内容的移位得到,允许并行地读和写

非易失性存储器/只读存储器(ROM)

关电后,仍然保存它们的信息

由于历史原因,ROM中有的类型既可以读,也可以写

  • 可编程ROM(PROM)

    只能被编程一次

    PROM每个存储器单元有一种熔丝,只能用高电流熔断一次

  • 可擦写可编程ROM(EPROM)

    有一个透明的石英窗口,紫外线光照射过窗口,EPROM单元被清除为0

    使用特殊设备完成

    EPROM被擦除和重编程的次数数量级达1000次

  • 电子可擦写可编程ROM(EEPROM)

    类似于EPROM,不需要独立的编程设备,可以直接在印制电路卡上编程

    EEPROM被擦除和重编程的次数数量级达100000次

  • 闪存(flash memory)

    基于EEPROM

    固态硬盘是一种新型的基于闪存的磁盘驱动器

存储在ROM设备中的程序通常称为固件

磁盘

磁盘组成

磁盘由盘片(platter)构成

盘片有两个表面(surface),*有一个可旋转的主轴(spindle)

表面有一组称为磁道(track)的同心圆组成

柱面(cylinder)是所有盘片表面到主轴中心距离相等的磁道的集合

磁道被划分成一组扇区(sector),扇区之间由间隙(gap)隔开

每个扇区包含相等数量的数据位

磁盘容量

=×××××

磁盘读写时间

  • 寻道时间

    平均值为39ms

  • 旋转时间

    最大旋转延迟Tmax rotation=1RPM×60secs1min

    平均旋转时间Tavg rotation=Tmax rotation

    平均旋转时间大致和寻道时间相等

  • 传送时间

    平均传送时间Tavg transfer=1RPM×1/×60secs1min

    远小于寻道时间

逻辑磁盘快

使用磁盘控制器维护逻辑块号和实际磁盘扇区之间的映射关系

控制器上的固件执行快速表查找,将逻辑块号翻译成一个(盘面,磁道,扇区)三元组,唯一标识了对应的物理扇区

连接到I/O设备

  • 通用串行总线(USB)
  • 图形卡(适配器)
  • 主机总线适配器

磁盘访问

CPU使用存储器映射I/O的技术向I/O设备发出命令,地址空间中有一块地址是为与I/O设备通信保留的,每个地址称为一个I/O端口

使用直接存储器访问(DMA)可以不需要CPU干涉读和写总线事务

固态硬盘(SSD)

基于闪存的存储技术

一个SSD包括一个或多个闪存芯片闪存翻译层

闪存芯片代替传统的旋转磁盘中的机械驱动器

闪存翻译层是一个硬件/固件设备,扮演与磁盘控制器相同的角色,将对逻辑块的请求翻译成对底层物理设备的访问

顺序读比顺序写稍微快一点,随机读比随机写块一个数量级,但都比顺序慢


局部性

  • 时间局部性

    被引用过一次的存储器位置很可能在不远的将来再被多次引用

  • 空间局部性

    被引用过一次附近的存储器位置很可能在不远的将来被引用

有良好局部性程序比局部性差的程序运行得更快

简单原则

  • 一个连续的向量中,每隔k个元素进行访问,被称为步长为k的引用模式k越小,空间局部性越好
  • 重复引用一个变量的程序有良好的时间局部性

缓存

访问命中与不命中

当程序需要的第k+1层的某个数据对象d时,首先在当前存储在第k层的一个块中找d,如果d刚好缓存在第k层,就说缓存命中,否则缓存不命中

覆盖一个现存块的过程称为替换驱逐,被驱逐的块称为牺牲块,由替换策略控制,常见替换策略有随机替换策略最近最少被使用策略(LRU)

空的缓存称为冷缓存,此类不命中称为强制性不命中冷不命中

由于限制性的防止策略引起的不明中,称为冲突不命中

写回策略

写分配加载相应位的低一层到高速缓存,然后更新高速缓存

非写分配避开高速缓存,直接在低一层修改

直写就是立即将修改后的值写回到高速缓存和紧接着的低一层,是非写分配的

写回只是在高速缓存中修改值,当替换算法要去住更新过的块时,才写到紧接着的低一层,是写分配的

缓存分类

  • 只保存指令的高速缓存(i-cache)
  • 只保存数据的高速缓存(d-cache)
  • 既保存指令又保存数据的统一高速缓存(unified cache)

06存储器层次结构

缓存的性能

衡量缓存性能的指标

  • 不命中率
  • 命中率
  • 命中时间
  • 不命中处罚

影响缓存性能的因素

  • 缓存大小——命中率、命中时间
  • 块大小——命中率、命中时间
  • 相连度——不命中处罚
  • 写策略——不命中处罚

利用高速缓存进行代码优化

基本方法

  • 让最常见的情况运行的越快

    注意力放在核心函数中的循环上

  • 在每个循环内部缓存不命中数量最小,尽可能减小步长k

  • 一旦从存储器读入了一个数据对象,尽可能多的使用它

矩阵乘法的优化

06存储器层次结构

06存储器层次结构