计算机组成原理—第四章:存储器

4.1 概述

4.1.1 存储器分类

存取时间与物理地址无关:
(1)随机存储器(2)只读存储器
存取时间与物理地址有关:
(1)顺序存取存储器(磁带)(2)直接存取存储器(磁盘)

1. 按存储介质分类

  1. 半导体存储器
  2. 磁表面存储器
  3. 磁芯存储器
  4. 光盘存储器

2. 按存取方式分类

  1. 随机存储器(RAM)
  2. 只读存储器(ROM)
  3. 串行访问存储器:
    (1)顺序存取存储器(磁带)(2)直接存取存储器(磁盘)
  4. 按在计算机中的作用分类
    在这里插入图片描述

4.1.2 存储器的层次结构

在这里插入图片描述

  1. 存储系统结构层次主要体现在缓存—主存和主存—辅存这两个存储层次上
    在这里插入图片描述

  2. 缓存—主存层次主要解决CPU和主存速度不匹配的问题。使用硬件方法连接到一个整体(对程序员透明,即不需要了解),速度较快,解决CPU和主存之间速度差距较大的问题,缓存即为cache,CPU可以直接从缓存调用数据,cache和主存也进行数据交换。使用主存储器的实地址和物理地址。

  3. 主存—辅存层次主要解决存储系统的容量问题。使用软硬件结合方式连接,容量较大,解决容量不足问题。这个层次称为虚拟存储器,使用虚地址和逻辑地址。

4.2 主存储器

4.2.1 概述

  1. 主存的基本结构
    在这里插入图片描述

  2. 主存与CPU之间的联系
    在这里插入图片描述

1. 主存中存储单位地址的分配

每个字节(8位)一个地址,如果一个存储单元存储32位,即四个字节为一个字,可以将高位字节/低位字节,放在小的地址作为字地址。

2. 主存的技术指标

技术指标具体描述
存储容量主存能存放二进制代码的总位数
存储速度存取时间和存取周期组成
存储器带宽单位i时间内存储器存取的信息量

4.2.2 半导体存储芯片简介

1. 基本结构

在这里插入图片描述

  • 地址线(单向)给出地址,经过译码驱动电路来选择指定的存储单元,完成数据的读写操作(数据线双向)。
  • 片选线是芯片选择信号,给出这次选择的地址是不是这个芯片的地址。
  • 读写控制线,控制操作允许读还是写。
  • 根据地址线和数据线条数,可以计算出芯片容量。如果地址线10条,数据线4条,那么芯片容量则为1K×4位。即1K个地址,每个地址数据4位。

2. 译码驱动方式

  1. 线选法
  • 使用地址译码器,给定输入,输出只有一根线(字线)是有效的,图中一根线中是8个芯片组合成一个字,那么只有一根线的这一组芯片有效。
  • 这种方法,每个字的存储单元都需要一根线,当容量较大的时候,很麻烦。
  1. 重合法
    在这里插入图片描述
  • 将所有存储单元布置成二维的阵列,使用两个地址译码器XY,一组(X,Y)对应一个存储单元。
  • 这样会大大降低所需要的线数量。

4.2.3 随机存取存储器

1. 静态RAM(SRAM)

  1. SRAM的基本电路:
    在这里插入图片描述
  • 使用触发器T1-T4来存储0/1,T5、T6控制存储单元读写,实际中会有许多虚线框进行堆叠,T7、T8列开关,一列共用。同样,可以横向进行堆叠,那么行地址选择的这一行,所有存储单元的T5和T6都会导通,但是只有对应列也有效的那个存储单元才进行读写。
  • 通过行选和列选,选中进行读写操作的存储单元。
  1. SRAM芯片举例(Intel 2114):
    在这里插入图片描述
  • WE读写控制信号,CS片选信号,A0-A9为地址线,4个I/O数据线。
  • 10根地址线,使用重合法,6线为行地址,4线为列地址,每个列信号控制四列,这样一次就可以选择4位,将这4位看做是一个存储单元。就完成了1K×4位的选择。

2. 动态RAM(DRAM)

  1. DRAM基本电路
    在这里插入图片描述
  • 利用电容,如果电容保存了电荷,则认为保存是1,没有电,则认为是0。
  • 保存在Cg上,T1、T2、T3是控制管。
  • 读出信息与原信息相反,需要加非门。
  • 写入信息与输入信息相同。
  1. 单管动态RAM:
    在这里插入图片描述
  • 读出数据时,数据线有电,则为1。
  • 写入时,Cs充电为1,放电为0。
  1. 三管DRAM芯片举例(Intel 1103):
    在这里插入图片描述
  • 因为电容会漏电,刷新放大器会定时对存储的信息进行刷新。
  1. 单管DRAM芯片举例(Intel 4116 16k×1位):
    在这里插入图片描述
  • 只有7根地址线,通过两次,来接受行地址和列地址,存放到对应的缓存器中。
  • 通过行时钟、列时钟、写时钟来控制读写。
  1. 动态RAM的刷新
  • 每一次刷新只与行地址有关,与列地址没有关系,每次刷新一行。
  • 集中刷新(在某段时间集中刷新所有的电容),这段时间DRAM是不可用的,称为死区。
  • 分散刷新(每次读写操作之后,将某一行刷新),相当于将原来的读写操作的时间变长,把刷新操作放在读写操作中,这样就不存在死区。分散刷新比较频繁,有点过度刷新了。
  • 异步刷新(将上面两种结合),则每隔一段时间对某一行进行刷新,即多个读写操作加一个刷新操作。

3. 两种RAM的比较

在这里插入图片描述

  • DRAM的集成度较高,每个存储单元复杂度较低。
  • SRAM的速度较快,一般用作缓存。

4.2.4 只读存储器

ROM中一般保存系统信息或系统程序。早期是只读的,不可以写,经过多年的发展和改进,现在的ROM可以自己多次读写。

  1. 掩模ROM(MROM):只读,不能修改。行列选择线交叉处有MOS管则为1,没有则为0。
  2. PROM(一次性编程):熔丝断了,则为0,否则为1。可以一次性的破坏性编程。
  3. EPROM(可以多次编程):N型沟道浮动栅MOS电路。S与D导通为1,不导通为0。紫外线全部擦除(过于麻烦)。
  4. EEPROM(多次性编程):电可擦写、局部擦写、全部擦写。
  5. Flash Memory(闪存型存储器):比EEPROM快,具有RAM的一些功能。

4.2.5 CPU与存储器的连接

  1. 存储器容量扩展可以通过位扩展(增加存储字长)、字扩展(增加存储字的数量)、同时扩展。
  2. CPU与存储器的连接:
  • 地址线的连接:低位作为地址,高位作为片选信号。
  • 数据线的连接
  • 读写命令控制线的连接
  • 片选线的连接:MREQ信号(表示该信号是连接存储器还是I/O接口)一定要连接到片选信号中,使得只有这个信号有效,才是CPU和内存连接工作。
  • 合理选择存储芯片(ROM/RAM,芯片的性能参数)
  • 其他:时序、负载

4.2.6 存储器的校验

校验,检测合法代码,对非法代码进行纠错。

  • 编码的纠错、检错能力与编码的最小距离有关。最小距离为任意两组合法代码之间二进制位数的最小差异。 L − 1 = D + C   ( D ≥ C ) L-1 = D + C\ (D≥C) L1=D+C (DC) L为最小距离,D为检测错误的位数,C为纠正错误的位数
  • 汉明码是具有一位纠错能力的编码,汉明码都采用了奇偶校验和分组校验(分组的奇偶校验,分组之间是有重叠的,校验位放在2 ^ k处,k=0,1,2,3…)。
  • 汉明码的分组,将代码中每一位进行分组(1,2,3,4,5,6,7序号),将每一位的序号进行分组,序号的二进制最右边一位为1的,第一组,右边第二位为1的,第二组…
  • 最后的校验结果,哪一位是1,那么这位对应的那组中的那个序号的代码位出错。如果出现了多个1,那么就是这几个组中公共的那位出错了。

4.2.7 提高主存的访问和存储速度

CPU速度提升很快,但是存储器的速度提升较慢。
我们可以采用高速器件,采用层次结构(Cache-主存),调整主存结构。

  1. 单体多字系统:使得存储器的存储字长大于CPU的字长(比如是CPU字长的4倍),这样一次读取就可以读取多个指令,存放到数据寄存器当中。但是这样会导致存储器结构复杂, 而且,如果需要执行的指令不是连续存放的,会更麻烦。
  2. 多体并行方式
  • 高位交叉:对各个存储体进行编号,存储体内部自行编号,每个存储体独立,有自己的控制编号。这样CPU给出的地址是体号+体内地址,各个存储体可以并行处理。(类似存储器容量的扩展)如果程序指令存方式顺序的,实际上还是在一个存储体中,并无法提升存储体速度。(高位交叉本质上还是容量的扩展)
  • 低位交叉:体内地址+体号,使用横向的编码,比如存储体为M0-M3,那么第一个地址为M0的第一个位置,第二个地址为M1的第一个位置…这样M0中所有地址后两位都为00,M1都为01,M2都为10,M3都为11。后两位给出了存储体的选择地址。这样如果程序指令顺序存放的地址,实际上是不同存储体并行处理,这样就提升了效率,流水操作。(低位交叉实现分离式通信)
  1. 使用高性能的芯片
  • SDRAM(同步DRAM)
  • RDRAM
  • 带Cache的DRAM:如果行数不变,则直接在Cache中读取数据,如果行数改变,则刷新Cache

4.3 高速缓冲存储器(Cache)

4.3.1 概述

  1. 问题的提出
    CPU与主存(DRAM)之间存在速度差异,为了避免CPU“空等”的现象,使用cache。
    在这里插入图片描述
  • 必须保证CPU需要访问的数据或者指令大多数情况下都能在Cache中取得
    程序访问的局部性原理:
  • 时间的局部性:当前正在使用的指令或数据,会在不久的将来还会使用到,那么应该把这种数据或指令放在缓存中。
  • 空间的局部性:当前正在使用的指令或数据,不久的将来,相邻的指令或数据会使用到,那么应该把当前和相邻的指令和数据放到缓存中。
  1. Cache的工作原理
  • 把主存和cache分成大小相等的块,每个块大小相等,主存的块数量远远大于Cache的块数量。主存与cache之间的信息传送是按块传送,块内地址不变,cache的每个块的标记,标记了这个块是主存的哪个块。
  • 主存块调入了缓存(即cache标记了),称为命中,CPU可直接在缓存中取得数据;如果没有调入,CPU必须要到主存中找数据,称为未命中。
    在这里插入图片描述
  • 我们希望,每次执行程序,都尽可能的在cache中提取数据,这样速度会很快。CPU欲访问的信息在Cache中的比率称为命中率,命中率与Cache的容量和块长有关。一般每块取4-8个字,一般为一个存取周期内从主存调出的信息长度。
  • cache与主存的访问效率:
    这里面平均访问时间为每次访问的平均时间(可能从cache,可能从主存)。访问效率在tc/tm——1之间。
    这个公式是CPU与Cache同时并行访问的公式。
    在这里插入图片描述
Cache交叉体数块长
CRAY_116体交叉块长取16个存储字
IBM370/1684体交叉块长取4个存储字
  1. Cache的基本结构和读写操作
  • 基本结构
    在这里插入图片描述
  • 地址映射,变换机构:主存中的某一个块要被放入Cache中时可以放入Cache中的哪一个块(映射)并把主存的块号转换为Cache的块号或者把主存的地址转换为Cache的地址(变换)
  • 替换机构:执行替换算法决定主存中哪个块要从Cache中退出
  • 读写操作
    在这里插入图片描述
    在这里插入图片描述
  • 主要时针对写操作(需要有一致性):前者时刻保持了cache和主存的一致,后者当Cache中存有需要执行写操作的内存块时,只写cache中,当cache中退出时才写回主存(保证不了Cache和主存一致性)。
  • cache的改进:
    (1)增加cache的级数:片内cache(离CPU近的直接做在CPU中),片外cache。
    (2)分立缓存:指令cache,数据cache(指令和数据不放在一个存储器中)。

4.3.3 Cache—主存地址映射

即主存的任意一块加载到cache中的哪块。

  1. 直接映射
    即主存中任意一个块,只能映射到指定的一个cache块中,cache块可以是一对多的。相当于将主存分区,每个区内的这些块,对应于cache的所有块;这样在cache的标记中,有t位的标记,表示当前该cache块存放的是主存哪个区的对应位置信息。
    在这里插入图片描述
  • 这种方法cache块的利用率比较低,且可能会冲突。可能存在有很多的块处于空闲状态,但由于时一一映射必须放到指定的块中
  1. 全相联映射
    主存中任意一个块,可以被放入cache中的任意一个块中。
    在这里插入图片描述
  • 这样的话,虽然块的利用率高了,但是因为块可以映射到任意一个位置,如果查询某个主存块是否已经放入cache,需要比较所有的cache标记,速度较慢。参加比较的位数较长(即标记位特别长)(任何一个块可以被放在Cache中的任何一个位置)
  1. 组相联映射
    与直接映射相似,将cache分组,每个组可以有多个块;将主存分区,每个区的大小为cache的组数。这样每个区的第0块,可以放入cache第0组的任何一个位置,因为每个组有多个块,解决了直接映射的冲突问题;想查询某个主存的块是否放入了cache,只需要在对应的组进行查询即可,解决了全相联映射的问题。
    在这里插入图片描述
    在这里插入图片描述
  • 在靠近CPU的层次由于要求高速度因此可以采用直接相联或者块数比较少的组相联
  • 中间的采用组相联
  • 距离CPU最远则采用全相联

4.3.4 替换算法

如果Cache中可以放入的内存块满了,如何替换,将谁弹出。

  • 先进先出(FIFO)算法
  • 近期最少使用(LRU)算法:最近一段时间内使用最少的块,将来也用的比较少

4.4 辅助寄存器

4.4.1 概述

  1. 辅助存储器的主要作用是保存程序、文档和影音资料,不能直接与CPU交换信息,需要调入主存才能进行读写。
  2. 磁表面存储器的技术指标
  • 记录密度 道密度、位密度
  • 存储容量
  • 平均寻址时间:找到给定的磁道的时间+等到磁盘转到给定的扇区
  • 数据传输率
  • 误码率
  1. 磁记录原理
  • 表面磁化方向不同用来区分0和1
  • 磁场切割形成电流
  1. 硬磁盘存储器:固定磁头和移动磁头、可换盘和固定盘
    包括磁盘存储器和光盘存储器等。
  2. 光盘存储器:采用光存储技术,利用激光写入和读出
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值