# 存储系统

# 存储器的层次结构

# 存储器的分类

# 按作用分类

  1. 主存储器(主存、内存)
    • 存放机损及运行期间所需的大量程序和数据
    • cpu 可直接访问,也可以和高速缓冲存储器交换数据
    • 容量较小、存取速度慢、每位价格较高
  2. 副助存储器(外存)
    • 存放当前暂时用不到的程序和数据,永久性保存的信息
    • 不能与 CPU 交换信息
    • 容量极大、存取速度慢、单位成本高
  3. 高速缓冲存储器(Cache)
    • 存放正在执行的程序段和数据
    • 容量小,价格高

# 按存储介质分类

  • 磁表面存储器
  • 磁芯存储器半导体存储器
  • 光存储器

# 按存取方式分类

  1. 随机存储器(RAM)
    • 任何一个单元的内容可以随机存取,存取时间与存储器单元的物理位置无关
    • 读写方便、使用灵活
    • 用作主存或高速缓冲存储器
    • 分为静态 RAM(触发器原理寄存信息)、动态 RAM(电容充电原理寄存器)
  2. 只读存储器(ROM)
    • 存储器的内容只能随机读出而不能写入
    • 信息一旦写入就固定不变
  3. 串行访问存储器
    • 按照物理位置的先后顺序寻址(磁带、磁盘)

# 按信息的可保存性分类

  1. 易失性存储器(RAM)
  2. 非易失性存储器(ROM)

# 存储器的性能指标

  • 存储容量:存储字长 x 字长
  • 单位成本:每位成本 = 总成本 / 总容量
  • 存储速度:数据传输率 = 数据的宽度 / 存储周期

# 存储器的层次化结构

# 多级存储系统

# 半导体随机存储器

# 半导体存储芯片

# 半导体存储芯片的基本结构

  1. 存储矩阵:大量相同的位存储单元组成
  2. 译码驱动电路:将地址总线的地址信号翻译成对应的存储单元的选通信号
  3. 读写电路:读写放大器 + 写入电路
  4. 读写控制线:决定芯片进行读 / 写操作
  5. 片选线:确定那个芯片被选中
  6. 地址线:单向输入,位数与存储字的个数有关
  7. 数据线:双向,位数与读出、写入的数据位数有关

# 74138 译码器

将二进制编码译码为 0~7 的十进制数值

# SRAM 和 DRAM

# SRAM 工作原理

  • 双稳态触发器(六管 MOS)来记忆信息
  • 只要电源被切断原来保存的信息就会丢失,属于易失性半导体存储器
  • 存取速度快,集成度低,功耗大,一般用来组成高速缓冲存储器

# DRAM 工作原理

  • 利用栅极电容上的电荷存储信息,分为三管式、单管式
  • 采用地址复用技术,地址信号分行、列两次传送
  • 容易集成、价位低、容量大、功耗低,存取速度比 SRAM 慢,组成大容量存储系统
# 刷新方式
  1. 集中刷新
    在一个刷新周期内,利用一段固定的时间,依次对所有行进行逐一再生
    • 优点: 读写操作时不受刷新工作的影响,存取速度高
    • 缺点:在集中刷新期间不能访问存储器
  2. 分散刷新
    把每行的刷新分散到各个工作周期中,一个存储器的系统工作周期前半部分用于正常读、写、保持,后半部分用于刷新某一行,增加了系统的存取周期
    • 优点: 没有死区
    • 缺点:加长了系统的存取周期,降低了整机的速度
  3. 异步刷新
    将刷新周期除以行数,得到两次刷新之间的时间间隔 t, 利用逻辑电路每隔 t 时间产生一次刷新请求
    • 避免 CPU 等待过长的时间,减少刷新的次数,提高整机效率

注意:

  • 刷新对 CPU 透明
  • 动态 RAM 刷新单位是行,刷新操作只需要行地址

# 存储器的读写周期

# 只读存储器

# 只读存储器(ROM)的特点

  1. 结构简单,位密度比可读写存储器高
  2. 具有非易失性,可靠性高

# ROM 的类型

  1. 掩模式只读存储器(MROM)
    可靠性高,集成度高,灵活性差
  2. 一次可编程只读存储器(PROM)
  3. 可擦除可编程只读存储器(EPROM)
    编程次数有限。写入时间过长
  4. 闪速存储器(Flash Memory)
  5. 固态硬盘(SSD)

# 主存储器与 CPU 的连接

# 连接原理

  1. 主存储器通过数据总线、地址总线、控制总线与 CPU 连接
  2. 数据总线的位数与工作频率的乘积正比于数据传输率
  3. 地址总线的位数决定了可寻址的最大内存空间
  4. 控制总线(读 / 写)指出了总线的周期类型好而本次输入输出操作的 完成时刻

# 主存容量的扩展

# 位扩展法

# 字扩展法

# 字位同时扩展法

# 存储芯片的地址分配和片选

# 线选法

芯片A14A_{14} ~ A_
1#1110
2#1101
3#1011
4#0111

优点:不需要译码器,线路简单
缺点:地址空间不连续,不能充分利用系统的存储器空间,造成地址资源的浪费

# 译码片选法

# 高速缓冲存储器

# 程序访问的局部性原理

  • 空间局部性
  • 时间局部性

# Cache 基本工作原理

  • 通常由 SRAM 构成
  • Cache 和主存都被分成若干大小相等的块,每块由若干子街组成,块的长度称为块长(Cache 行长)
  • 保留主存最活跃的若干块副本

# cache 和主存的映射方式

  • cache 要为每块增加一个标记,指明是主存那一块副本
  • 设置一个有效位说明标记是否有效

# 直接映射

j=i%2cj=i \% 2^c

jj:cache 块号
ii: 主存块号
2c2^c:Cache 总块数

地址结构:

主存字块标记cache 字块地址字块内地址

# 全相联映射

把主存数据块装入 cache 的任何位置

  • 优点:灵活,冲突概率低,空间利用率高
  • 缺点:地址变换速度慢,实现成本高

地址结构:

主存字块标记字块内地址

# 组相联映射

j=i%Qj=i\%Q

jj: 缓存的组号
ii: 主存的块号
QQ:cache 的组数

# 地址结构

主存字块标记组地址字块内地址

# Cache 中主存块的替换算法

  1. 随机替换算法
  2. 先进先出算法
  3. 近期最少使用算法
  4. 最不经常使用算法

# Cache 写策略

# 写命中

  1. 全写法
    把数据同时写入 cache 和主存
    • 优点: 实现简单,随时保持主存数据的正确性
    • 缺点:增加了访存次数,降低了 cache 的效率
  2. 写回法
    只有当此块被换出才写入主存
    • 存在不一致的隐患,必须设置一个标志位反映此块是否被 CPU 修改过

# 写不命中

  1. 写分配法
    加载主存中的块到 cache 中,更新这个 cache 块
    • 缺点:每次不命中都需要从主存中读取一块
  2. 非写分配法
    只写入主存,不进行调块