第三章:存储器

一、存储器概述

1. 存储器的分类

  • 按存取方式
    • 随机存取存储器
      • 访问每个地址的时间都相同(RAM、ROM)(2011)
    • 顺序存取存储器
      • 信息顺序存放和读出(磁带)
    • 直接存取存储器
      • 兼有随机访问和顺序访问的特点(磁盘、光盘)
    • 相联存储器
      • 可以按照内容或地址寻找信息(快表)
  • 按可保护性
    • 断电后信息是否消失
      • (易失性)断电消失
        • RAM、cache
      • (非易失性)断电不消失
        • ROM、光、磁存储器
    • 读出后信息是否破坏
      • 破坏性读
        • 动态RAM
      • 非破坏性读
        • 静态RAM
  • 按存储介质
    • 磁表面存储器(磁盘、磁带)、半导体存储器(RAM、ROM)、光存储器(光盘)
  • 按层次结构
    • 主存
      • 由RAM(用户程序)和ROM(系统程序)构成
    • TLB
      • 采用相联存储器或SRAM(2018、2020)
    • 高速缓存(Cache)
      • 只能由SRAM构成
    • 内存(主存)
    • 辅存
      • 磁盘、磁带、光盘等

2. 存储器的性能指标

  • 存储容量
    • =存储字数*字长
  • 单位成本
    • =总成本/总容量
  • 存取速度
    • 又名数据传输率、主存带宽
  • 存取周期
    • 根本定义:进行一次完整读写操作所需要的时间或者连续两次访存所需的最小时间间隔
    • (存取周期往往大于存取时间) image

3. 多级层次的存储系统

  • (图示) image
  • 主存-Cache
    • 由硬件完成,主要解决CPU和主存速度不匹配的问题
  • 主存-辅存
    • 由硬件和操作系统完成,主要解决存储系统容量的问题

二、主存储器

1. 随机存储器(RAM)

  • 静态SRAM(Cache使用)
    • 原理:由双稳态触发器(六晶体管MOS)组成
    • 特点:存取速度快,集成度低、功耗大、价格昂贵
  • 动态DRAM(主存使用)
    • 原理:靠电容存储电荷的原理来寄存信息
    • 集成度高、容量大、功耗低、地址复用(地址线为原来的1/2,分两次传输)
    • 刷新
      • 刷新方式
        • 集中(利用一段连续时间,对所有行进行刷新)
          • 优点:读写操作不受刷新工作的影响
          • 缺点:存在死时间/死区(不能进行读/写操作)
        • 分散(每个系统工作周期先读写操作后刷新一行)
          • 优点:不存在死时间
          • 缺点:增加了系统存取周期,降低了机器速度
        • 异步(计算出刷新的时间间隔,每次刷新一行)
          • 折中方案,既可以减少刷新次数,又可以缩短死时间
      • 刷新特点
        • 刷新是一行行进行的,一次刷新只需占用一个存取周期(2018)
  • SDRAM
    • 升级版的DRAM,也是电荷存储信息需要刷新,但是与CPU之间采用同步方式交换数据,支持猝发传输(2015)
  • image

2. 只读存储器(ROM)

  • 掩膜ROM
    • 出厂时直接写入,任何人无法修改
  • PROM(一次可编程)
    • 用户可以编写一次,但之后不能修改
  • EPROM(可擦除可编程)
    • 可编程多次,但编程次数有限且写入时间较长
    • 改写方法
      • 用紫外线照射,擦除时芯片中所有信息都会消失
  • EEPROM(电可擦除)
    • 电可擦除,可以选择只删除个别字
  • FLASH(闪速存储器)
    • 特点
      • 属于ROM(存储元由MOS管组成),是半导体存储器,可随机存取(2012)
    • 操作
      • 编写
        • 所有存储元最开始都是“1”,需要改为“0”的地方充电即可
      • 擦除
        • 对所有存储元都放电,使所有存储元都是“1”
      • 读取
        • 读速度比写速度快很多(2012)
  • 固态硬盘SSD
    • 2022年考纲新加,会细讲

3. 并行存储器结构技术(按袁春风书来)

  • 双端口存储器
    • 一个存储器有两个读写端口
      • 若两个端口同时读写的地址不同,则正常读写互不影响
      • 若两个端口同时读写相同的地址则发生冲突,按照特定的优先顺序进行读写
  • 单体多字
    • 一个存储体,每个存储单元存储m个字,一次读出m个字
    • 缺点是指令和数据在主存内必须是连续存放的,否则效果就不明显
  • 多模块存储器
    • 连续编址方式

      • (注意高位地址表示体号) image
    • 交叉编址方式

      • (注意低位地址表示体号) image
      • 启动方式
        • 轮流启动
          • (图示)(2015考) image
          • 两个重要公式
            • m>=T/r

              • t=T+(m-1)r
        • 同时启动(2017)
          • image

三、主存储器与CPU的连接

1. 主存容量扩展

  • 字、位、字位扩展(经常考简单计算,扩展电路图从来不考)
  • 扩展后形成的地址空间
    • 扩展后编址默认是顺序编址(2010)

2. 片选法与线选法

  • 线选法
    • 高位地址信号直接连接各存储器的片选端
    • 地址空间不连续,不能充分利用系统的地址空间
  • 译码片选法
    • 通常地址线低位作为位选,高位作为片选信号
    • (高位地址信号经过地址译码器后再连接到各存储器的片选端) image

3. 芯片最小引脚数

  • SRAM
    • 通常使用一维地址,地址线=2^n
    • 总引脚=地址线+数据线+电源接地线+片选线1+读写线(1或2)
    • 地址线通过芯片容量计算;数据线通过存储字长计算;电源接地线往往不考虑;片选线一定为1;读写线看题目描述
  • DRAM
    • 通常使用二维地址,地址总线复用,引脚数减半
    • 总引脚=地址线/2+数据线+电源接地线+行选通信号1+列选通信号1+读写线(1或2)
    • 地址线通过芯片容量计算;数据线通过存储字长计算;电源接地线往往不考虑;行列选通信号和为2;读写线看题目描述(2014)

四、外部存储器

1. 磁盘存储器

  • 磁盘设备的组成
    • (磁盘存储器由磁盘控制器、磁盘驱动器和盘片组成) image
  • 磁记录原理
    • 磁头和磁性记录介质相对运动,通过电磁转换完成读写操作
    • 磁盘存储器的一个最小读写单位为扇区(2019)
  • 磁盘的性能指标
    • 平均存取时间(2013、2015)
      • 寻道时间
      • 旋转延迟时间
        • 转半周的时间
      • 传输时间
        • 按照读写速率和读写块的大小计算(2013)
        • 按照磁盘旋转n个扇区的时间计算(2015)
    • 记录密度
      • 道密度
        • 沿磁盘半径方向单位长度上的磁道数
      • 位密度
        • 磁道单位长度上能记录的二进制代码位数
      • 面密度
        • =位密度*道密度
    • 磁盘容量
      • 格式化容量比非格式化容量小(2019)(操作系统会细讲原理)
    • 数据传输率
      • 根据具体情况计算
  • 磁盘地址
    • 驱动器号+柱面号+盘面号+扇区号(操作系统部分大题会考到)
  • 硬盘的工作过程
    • 读写操作是串行的,不能同时读写,也不能同时读两组数据或写两组数据

2. 磁盘阵列

  • RAID(独立冗余磁盘阵列)
    • 由多个物理磁盘组成,数据交叉存储并行访问,有更好的存储性能、可靠性和安全性
  • 总结(2013)
    • 使用多个磁盘,提高了传输率
    • 通过多个磁盘并行存取,提高了数据吞吐量
    • 通过镜像功能,提高了安全可靠性
    • 通过数据校验,提高了容错能力

3. 固态硬盘(SSD)(2022考纲新加,需注意)

  • 基于闪存Flash,属于EEPROM
  • 以页为单位读写,以块为单位擦除
  • 读得快写得慢,但也比传统的机械硬盘快,且功耗低
  • 缺点就是容易磨损,使用磨损均衡技术延长使用寿命

五、高速缓冲存储器

1. 程序访问的局部性(按袁书)

  • 时间局部性
    • 被访问的某个存储单元在较短时间内很有可能又被访问(通常由于程序的循环执行)(2017)
  • 空间局部性
    • 被访问的某个存储单元的邻近单元在较短时间内很有可能被访问(通常由于程序的顺序执行,如访问数组)(2017)

2. Cache的基本工作原理

  • 通常由SRAM构成,Cache和主存划分为许多大小相同的快,每个块由若干字节组成
  • CPU访问地址命中Cache,则直接读Cache,若不命中则读主存同时把访问的字所在的主存块调入Cache
  • 若Cache满了,则调入主存块时需要执行替换算法进行替换
  • CPU与Cache之间的交换以字为单位,Cache与主存之间的交换以块为单位

3. Cache和主存的映射方式

  • (三种映射方式示意图) image
  • 地址结构划分(做题基础)
    • 首先根据题中映射方式确定地址结构
      • 直接映射
        • 地址:标记+Cache行号+块内地址
      • 全相联映射
        • 地址:标记+块内地址
      • 组相联映射
        • 地址:标记+Cache组号+块内地址
    • 块内地址位数a
      • 若为按字节编址,a=log2(主存块大小/字节长度)
      • 若为按字编址,a=log2(主存块大小/字的长度)
    • Cache行号位数b
      • b=log2(Cache容量/主存块大小)
    • Cache组号位数c
      • c=log2(Cache容量/每组的大小)
    • 标记位数d
      • d=地址位数-前面计算过的各项长度(经常考)
      • d=主存容量/Cache容量(不常用)
  • Cache总容量的计算(2015、2021)
    • (Cache总体结构示意图) image
    • 标记项长度计算
      • 有效位
        • 一定有有效位且长度为1位
      • 脏位
        • 采用回写法时长度为1位,否则长度为0
      • 替换控制e
        • 使用LRU替换算法时才会使用,一般在组相连映射中考察
        • e=log2(每组包含的Cache块数)【比如4路组相连时e=2,8路组相连时e=3】
      • 标记位长度
        • 上面已给出
    • Cache总容量=Cache块数*(每个Cache块标记项位数+数据位数)
  • Cache命中率的计算
    • 给出访存次数和访问Cache次数计算(2009)
    • 组相联+LRU替换策略下计算Cache缺失次数(2012)
    • 访问数组的Cache缺失率(2016)(修改数组一个单元的内容需要访问Cache两次即取出和存入)

4. Cache中主存快的替换算法

  • 先进先出(FIFO)
    • 选择最早调入的块进行替换
  • 随机法
    • 随机地选择块进行替换
  • 近期最少使用(LRU)
    • 符合程序访问的局部性原理
    • 当集中访问的存储区超过cache组大小时,会出现颠簸抖动现象,命中率非常低
    • 2^n路组相连,就需要n个LRU位(2018)

5. Cache写策略

  • 写命中时
    • 全写法
      • 对cache写命中时,必须把数据同时写入cache和主存
    • 回写法
      • 对cache写命中只修改Cache内容,等此块被换出再写入主存
      • 每个cache 需设置一个标志位,判断是否被CPU修改过(经常考)
  • 写不命中时
    • 写分配法
      • 更新主存并更换cache块
    • 非写分配法
      • 更新主存不更换cache块

6. Cache结构示意图

  • (了解现代计算机往往采用多级Cache,且有时数据Cache和指令Cache相分离) image
  • 指令Cache和数据Cache相分离的主要目的是减少指令流水线的冲突(2014)

六、虚拟存储器

1.虚拟存储器的基本概念

  • 主存和辅存共同构成了虚拟存储器,虚拟存储器具有主存的速度和辅存的容量
  • 虚地址(逻辑地址)
    • 用户编程允许涉及的地址
  • 实地址(物理地址)
    • 实际的主存单元地址
  • 虚拟存储机制采用全相联映射和回写法

2. 分类

  • 页式虚拟存储器
    • 页表
      • 作用是通过查表将虚页号转换为实页号
    • 各页大小相等,虚拟地址结构为虚页号+页内地址
    • 快表(TLB)
      • 页表存放在主存中访问速度较慢,因此把部分页表内容放入快表中加快访问速度
      • TLB使用相联存储器
      • 快表通常采用全相联或者组相联。全相联情况下TLB标记=虚页号;组相联情况下TLB标记+组号=虚页号
    • (TLB、page、Cache的访问情况组合)(2010) image
  • 段式虚拟存储器
    • 段式按照程序的逻辑结构划分,各段长度因程序而异
  • 段页式虚拟存储器
    • 把程序按逻辑分段,每段再划分为固定大小的页
    • 每个程序对应一个段表,每段对应一个页表
  • 最佳匹配
  • 最旧的
  • 最新的
  • 408
  • AI论文
  • hugo博客
  • 环境配置
  • git
  • hugo
  • markdown
  • python
  • pytorch
  • 操作系统
  • 浏览器
  • 计算机组成原理