存储器


[TOC]

存储芯片的组成

  • 存储矩阵
  • 译码驱动
  • 读写电路
  • 读/写控制线
  • 片选线

RAM随机存储器

SRAM

原理:使用双稳态触发器(六管MOS)作为存储元

特点:

  1. 集成度低,功耗大

  2. 易失性半导体

  3. 一般用于高速缓存

DRAM

原理:使用栅极电容

特点:

  1. 采用地址复用技术。地址信号分行、列两次发送

  2. 容易集成、功耗低和容量大

  3. 用于组成大容量系统

  4. 需要刷新,每隔一段时间必须刷新。通常为2ms

    • 集中刷新:读写操作不受影响,但刷新时不能访问存储器(死区)
    • 分散刷新:只刷新一部分,另一部分正常。但会增加存取周期
    • 异步刷新:刷新周期/行数的时间间隔产生刷新请求
      1. 对CPU透明,不依赖于外部访问
      2. 刷新安排在译码阶段,不会增加存取周期也不会产生死区
      3. 刷新的单位是按行,刷新时只需要行地址
      4. 刷新时不需要选片,同时刷新。

ROM(只读存储器)

非易失性存储器,可靠性高

存储器的扩展

容量扩展

  1. 位扩展
  2. 字扩展
  3. 字位同时扩展

地址分配和片选

  1. 线选
  2. 片选

多模块存储器

  1. 单体多字
  2. 多提并行
    1. 高位交叉编址(顺序方式)
    2. 低位交叉编址(交叉方式)

高速缓冲存储器

原理:程序访问的局部性

建立在CPU-主存上

Cache和CPU之间的数据交换是以字为单位。Cache与内存的交换是以块为单位

Cache行的标志块包括有效位、一致性维护位(脏位)、替换算法位和标记位

Cache和主存的映射方式

  1. 直接映射

    主存的数据块只能装入Cache的唯一位置。需要主存标记块用于标记主存,因为一个Cache块可能放有不同的主存块。

    地址结构:主存标记块+Cache地址块+字块内地址

    检索流程

    1. 先通过Cache地址块找到Cache对应的行号。
    2. 使用主存标记块与该Cache的标记位进行对比。
    3. 若符合命中,则通过字内块地址读取所需要的字。否则,读取内存。
  2. 全相联映射

    主存数据块可以装入Cache的任何位置。

    地址结构:主存块标记+字块内地址

    检索流程:

    1. 直接使用主存块标记和Cache中所有行的标记位进行比较。
    2. 若符合命中,则通过字内块地址读取所需要的字。否则,读取内存。
  3. 组相连映射

    将Cache分成大小相同的组,主存数据块可以装入组内的任意位置。即组间采取直接映射,组内采取全相联映射。

    地址结构:主存字块地址+组地址+字块内地址

    检索流程

    1. 先用组地址找到对应的Cache组
    2. 再使用主存字块地址与该Cache组的所有行的标记位进行比较。
    3. 若符合命中,则通过字内块地址读取所需要的字。否则,读取内存。

Cache的替换算法

使用场景:全相联映射和组相联映射

  1. 随机算法
  2. FIFO
  3. LRU(近期最少使用算法)
  4. LFU(最不经常使用算法)

Cache写策略

Cache写命中时:

  1. 全写法

    写命中时写。必须同时写入Cache和主存

  2. 写回法

    Cache块换出时才写回主存。需要一个脏位来判断此块是否被修改过

Cache写不命中时

  1. 写分配法

    加载主存中的块到Cache中,然后更新这个块

  2. 非写分配法

    只写入主存,不调块

虚拟存储器

建立在主存-辅存上

使用离散分配的内存管理方式

实现方式

  1. 页式虚拟存储器

    地址结构:虚页号+页内地址

    地址转换流程:

    1. 使用虚页号和页表基址寄存器的起始地址拼接成页表项地址
    2. 去页表中查找该页表项的实页号。若没有,则从辅存调用主存后再使用
    3. 将实页号与页内地址拼接成实地址

    优点:页面长度固定,页表简单

    缺点:程序不可能正好是页面的整数倍,最后一页的零头无法利用而浪费,同时页不是逻辑上独立的实体。

  2. 段式虚拟存储器

    地址结构:段号+段号地址

    地址转换流程和页式虚拟存储器类型,只不过查找的是段表而不是页表。

    优点:段分界与程序的自然分界对应,具有逻辑独立性,便于多道程序共享

    缺点:段长度可变,分配空间不便,容易在段间留下碎片

  3. 段页式虚拟存储器

    地址结构:段号+段内页号|页内地址

    地址转换流程:

    1. 先使用段号和段表基址寄存器得到段表地址,从段表中找出页表起始地址
    2. 再根据段内起始地址和段内页号得到页表地址,从页表中找出实页号
    3. 将实页号与页内地址拼接成实地址

    优点:兼具页式和段式存储器的优点

    缺点:两次查表,开销大

快表

快表放在Cache中,慢表放在内存中。

在页式存储器和Cache的系统中。访问顺序为TLB->页表-> Cache->主存


文章作者: 彭峰
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 彭峰 !
  目录