计算机组成原理完整学习笔记(三):存储器

前言

如果你对这篇文章可感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。


第三章 存储器

3.1 半导体存储器概述

3.1.1 半导体存储芯片基本结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gdsw3vu6-1597538371832)(media/15771678612115.jpg)]

其中片选信号是 C E ‾ \overline{CE} CE C S ‾ \overline{CS} CS,表示 chip select 或者 chip enable。

读/写控制线中 W E ‾ \overline{WE} WE 表示低电平写,高电平读; O E ‾ \overline{OE} OE 表示允许读, W E ‾ \overline{WE} WE 表示允许写。

3.1.2 半导体芯片的译码驱动

线选法

用一根字选择线直接选中存储单元,例如一个字节。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kMtR6zyM-1597538371838)(media/15771681273463.jpg)]

每个字都对应着一根地址线。

重合法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-buNcrVDI-1597538371840)(media/15771681930128.jpg)]

规模从 O ( n ) O(n) O(n) 缩减为 O ( n ) O(\sqrt{n}) O(n ),二维片选,减少了地址译码输出线的数目。

3.1.3 主存的技术指标

存储容量

  • 存储容量:主存能存放的二进制数的总位数
  • 存储器容量 = 存储单元个数 * 存储字长

访存周期

相邻两次存储器访问的时间间隔

存储器带宽

单位时间内存储器存取的信息量(字节/秒、位/秒、字/秒)

3.1.4 存储器分类

按存储介质分类

  1. 【易失】半导体存储器:TTL、MOS
    • 体积小、功耗低、存取时间短、易失
  2. 【非易失】磁表面存储器:磁盘、磁带、磁鼓
  3. 【非易失】磁芯存储器:硬磁材料的环状元件
  4. 【非易失】光盘存储器:激光、磁光

按数据保存方式分类

  1. 随机存储器(RAM)
    • 易失性
    • 静态随机存储器、动态随机存储器
  2. 只读存储器(ROM)
    • 非易失性

RAM 和 ROM 是一种分类,常见的还有一种分类是 Flash 和 Hard Disk。其中 Flash 指 Solid State drives(SSDs),Hard Disk 指硬盘。

按数据存取方式分类

  1. 直接访问
    • 访问时间不随访问位置而变化
    • 内存
  2. 串行访问
    • 访问时间随访问位置而变化
    • 磁带
  3. 部分串行访问
    • 介于上述二者之间
    • 磁盘(寻道直接,等待串行)

3.2 静态随机存储器(Cache)

3.2.1 MOS 管

MOS 管工作在开关状态:饱和导通 & 截止

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4CUC1rY8-1597538371844)(media/15771699944127.jpg)]

开关电路

在栅极加一个高电平时,MOS管就导通,低电平则截止。

NMOS 反相器(非门)

两个MOS管串联而成, T 1 T_1 T1 总是导通状态,且 T 1 T_1 T1 导通内阻是 T 2 T_2 T2 的 100 倍以上。

  1. T 2 T_2 T2 为高电平, T 2 T_2 T2 导通。由于分压, T 1 T_1 T1 分得大量电压,因此输出引脚变为低电平。
  2. T 2 T_2 T2 为低电平, T 2 T_2 T2 截止,其电阻变得非常大,因此 T 1 T_1 T1 分压极少,输出引脚变为高电平。
3.2.2 基本单元电路

基本单元电路

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iHrpUX69-1597538371845)(media/15771703876949.jpg)]

上述单元电路中,{ T 1 、 T 2 T_1、T_2 T1T2},{ T 3 、 T 4 T_3、T_4 T3T4},{ T 1 、 T 3 T_1、T_3 T1T3},{ T 4 、 T 2 T_4、T_2 T4T2} 均构成了一对 NMOS 反相器。

  1. A A A 为低电平,则 T 1 T_1 T1 截止, A ′ A' A 为高电平,则 T 2 T_2 T2 导通, A A A 为低电平。形成了互相制约的一种关系。
  2. A A A 为高电平,则如上述分析一致。

基本单元电路特性

  1. T 1 T_1 T1 T 4 T_4 T4 构成互锁的触发器, A A A A ′ A' A 点的电位总相反, A A A 点电位定义为二进制位的值。高电平则保存了逻辑 1 1 1,反之为逻辑 0 0 0
  2. T 5 T_5 T5 T 6 T_6 T6 也相当于一把锁,控制内部数值与外部的联系。
    • T 5 T_5 T5 T 6 T_6 T6 导通时,可通过位线改变其值。
    • T 5 T_5 T5 T 6 T_6 T6 截止时,只要不掉电,状态一直保持。
  3. 静态随机存储器靠寄存器来存储信息,因此不需要刷新。

基本单元电路扩展

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H08r8U7S-1597538371846)(media/15771709755981.jpg)]

T 5 T_5 T5 T 6 T_6 T6 外面再加两把锁 T 7 T_7 T7 T 8 T_8 T8,则保证除非两把锁都打开,互锁的触发器才可以和外界通信。否则只要不掉电,信息永久保持。

3.2.3 基本单元电路举例

读操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b7OEG74E-1597538371847)(media/15771714525380.jpg)]

先打开行、列片选信号,再另读选择有效。最后从 T 6 T_6 T6 将数据读出。

写操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-owlt9y36-1597538371848)(media/15771715348777.jpg)]

写操作要注意 A A A A ′ A' A 均要写,因此左边的写放输出需反向。

Intel 2114 举例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QHFAhsDT-1597538371849)(media/15771724549455.jpg)]

每个方框都是一个六管存储单元。因此行地址译码控制 T 5 T_5 T5 T 6 T_6 T6,列地址译码控制 T 7 T_7 T7 T 8 T_8 T8。其中 4096 个存储单元分为四组,每组 64 行,16列,采用重合法译码。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s050VA6W-1597538371849)(media/15771724868768.jpg)]

3.3 动态随机存储器

3.3.1 三管动态随机存储器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PSwtn9kS-1597538371850)(media/15771732320376.jpg)]

在上述基本电路中, T 4 T_4 T4 充电,电路开始工作。

读过程

  1. 读选择线置1, T 2 T_2 T2 导通;读数据线也置1
  2. C g C_g Cg 上为1,则 T 1 T_1 T1 导通,读数据线返回 0
  3. C g C_g Cg 上为0,则 T 1 T_1 T1 截止,读数据返回 1

写过程

  1. 写选择线置1, T 3 T_3 T3 导通
  2. 写数据线置1,则写入1;置0则写入0
3.3.2 单管动态随机存储器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yES6b9JW-1597538371851)(media/15771732320376.jpg)]

字线置1,表示片选到了这个单元。

读操作

  1. 电容上有电荷,则数据线上有电流,为1
  2. 电容上没有电荷,则数据线上没有电流,为0

写操作

  1. 数据线置为1,则给电容充电
  2. 数据线置为0,则对电容进行放电
3.3.3 动态随机存储器缺陷
  1. 上述两种电路,对这个基本单元电路的 “读” 都是一种破坏性的 “读”。
  2. 上述两种电路依靠电容充放电来保存信息。而电容存在漏电流,电荷会自动泄漏。
3.3.4 刷新

解决方案

  1. 读出放大器
    • 当读取动态随机存储器的一个二进制位时,电容充放电本身的电荷量非常小,因此需要一个读出放大器进行读取和放大。
    • 读出放大器会在读出数据后立刻写回到电容中,解决 “破坏性读出” 的问题。
  2. 刷新
    • 电容漏电的时间间隔为 2 m m 2mm 2mm,因此在 2 m m 2mm 2mm 内对每一个二进制进行一次读操作,即可保证电容数值不变。

集中刷新

集中刷新即是在一个刷新周期内,前面的时间均正常工作,而将最后的时间用于刷新。

下面给出一个例子,假设存取周期为 0.5 u s 0.5us 0.5us,128*128的矩阵,按行刷新,需要刷新 128 次。刷新周期为 2 m m 2mm 2mm,即可以存取 4000 次,因此我们将 0~3871 存取周期用于正常工作,3872~3999 这 128 个周期用于刷新。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qVZZw7st-1597538371851)(media/15771745721784.jpg)]

上述例子中,“死区” 为 0.5 u s ∗ 128 = 64 u s 0.5us*128=64us 0.5us128=64us,“死时间率” 为 128 4000 = 3.2 % \displaystyle\frac{128}{4000}=3.2\% 4000128=3.2%

分散刷新

将存取周期 t c t_c tc 分为两段,前半段用于工作,后半段用于刷新,即 t c = t M + t R t_c=t_M+t_R tc=tM+tR,不存在停止读、写操作的死时间,但效率低下。

无时无刻不在刷新, 0.5 u s 0.5us 0.5us 用于工作, 0.5 u s 0.5us 0.5us 用于刷新,因此每 128 u s 128us 128us 就全刷新一遍,浪费的效率达到了 50 % 50\% 50%

在这里插入图片描述

异步刷新

2 m m 2mm 2mm 时间内需刷新 128 次,因此每 15.6 u s 15.6us 15.6us 就刷新一行,死区时间仅为 0.5 u s 0.5us 0.5us

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YiQOGUEF-1597538371853)(media/15771753515475.jpg)]

指令的执行分别取指、译码、执行,因此如果把刷新安排在指令译码阶段,则不会出现 “死区”。

3.3.5 引脚复用技术

受封装技术的限制,无法保证在有限的芯片面积或周长的前提下引出这么多的引脚,因此动态随机存储器采用了一种引脚复用技术。

将芯片的地址引脚数目设置为需要数目的一半,分别通过两个时钟周期送入两批地址信号,然后在芯片内部将两批地址信号合并为完整的地址信息再去寻址。

3.4 存储器的扩展方式

3.4.1 字扩展

字扩展即是对于数据线进行扩展,具体扩展如下所示。

1 K ∗ 4 1K*4 1K4 芯片组成 1 K ∗ 8 1K*8 1K8 的存储器,对数据线进行扩展。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uF4UemWt-1597538371854)(media/15771803148501.jpg)]

3.4.2 位扩展

位扩展即是对于地址线进行扩展,具体扩展如下所示。

1 K ∗ 8 1K*8 1K8 芯片组成 2 K ∗ 8 2K*8 2K8 的存储器,对地址线进行扩展。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qmS7W4HC-1597538371854)(media/15771803419162.jpg)]

3.4.3 字、位扩展

字、位扩展即是对数据线和地址线同时进行扩展,具体扩展方式如下图所示。

1 K ∗ 4 1K*4 1K4 芯片组成 4 K ∗ 8 4K*8 4K8 的存储器,利用 2-4 译码器扩展地址线,同时扩展数据线实现字、位同时扩展。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f9sVHg8z-1597538371855)(media/15771803615782.jpg)]

3.5 Cache 的工作原理

3.5.1 Cache 的提出

问题提出原因

  1. 解决 CPU 和存储器速度差异的矛盾
  2. 解决 CPU 访存优先级低于 I/O 的问题
    • CPU 访存优先级低于 I/O 是因为,如果 I/O 中数据不及时取走,可能就会被冲刷掉。

理论基础

  1. 时间局部性原理
  2. 空间局部性原理
3.5.2 Cache 块替换算法
  1. 先进先出算法(FIFO)
  2. 最近最少使用算法
  3. 随机算法
3.5.3 Cache 工作过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tS05Krqn-1597538371855)(media/15771931164476.jpg)]

CPU 工作过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QVQKQUgQ-1597538371856)(media/15771974299957.jpg)]

3.5.4 Cache 映射方式

直接映射

最直接的映射方式,每4个对应一组进行分配。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nq47itIa-1597538371857)(media/15771939758559.jpg)]

全相连映射

多对多映射,主存中的任一块可以映射到 Cache 中的任一块。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WpS9tdma-1597538371857)(media/15771941714262.jpg)]

组相连映射

结合上述两种映射方式,划一个组专门用于存储 % 4 = 0 \%4=0 %4=0 的主存块。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z4nXMz0S-1597538371858)(media/15771943500801.jpg)]

三种方式比较

  1. 直接映射:某一主存块只能映射到唯一缓存块。映射方式简单,但是不够灵活,容易导致块冲突。
  2. 全相联映射:某一主存块可映射到任一缓存块,最灵活,不易冲突,但需要采用相联存储器。
  3. 组相联映射:某一主存块可映射到某一组中的任一块,兼顾了灵活性和成本。
3.5.5 Cache 的一致性问题

写直达法(Write - through)

  • 写操作时既写入Cache,也写入主存。
  • 写操作时间变为访问主存所需时间。

写回法(Write - back)

  • 写操作时只写入 Cache,不写入主存,当 Cache 被替换出去时才写回主存
  • 命中时读写操作时间就是访问 Cache 的时间

3.6 多模块存储器

3.6.1 单体多字系统

结构概述

一个存储体,但对每次读出的字长进行扩充。一个存取周期取出 4 个字,然后逐次送至 CPU 执行,适用于指令或数据在内存中连续存放的情况。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K8Xbw6qC-1597538371859)(media/15771965584112.jpg)]

优缺

  1. 取指冲突

    • 例如出现了转移指令,则之后多取出的指令均浪费
  2. 读操作数冲突

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LVvj7y2J-1597538371860)(media/15771967379518.jpg)]

    • 需要的两个操作数分别为 0x12 和 0x34,因此读了8个字,但只有2个字有效,其余均为浪费。

  3. 写数据冲突

    • 每次修改或写数据,都必须凑齐 n n n 个字才能写,或者 “读-改-写”
3.6.2 多体并行系统

存储体

存储体为具有独立地址寄存器、数据寄存器、地址译码、驱动电路、读写电路等功能的独立存储电路,可独立工作。

多体并行

存储器由多个存储体构成,各存储体有相同的容量和存取速度。

高位交叉编址

即对于每个体按顺序向下编址。

在这里插入图片描述

优缺点:

  1. 频繁访问单个存储体时,吞吐量无法提升
  2. 不同请求源可同时对各体发出请求,此时各体可同时工作
  3. 便于存储器扩充

低位交叉编址

即轮流依次编址。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SpmeIl0M-1597538371862)(media/15771971240349.jpg)]

优点:

  1. 在不改变存取周期和数据总线宽度的前提下,增加了存储器的带宽
  2. 可利用其它存储体寻址的时间继续操控其它存储体
    • 连续运行时,每个时钟周期即可完成一个数据传输

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8ocv0qqc-1597538371862)(media/15771972998701.jpg)]

3.7 数据校验码

3.7.1 码距

定义

一种编码体系中,任意两组合法编码之间不同的二进制位数的最小值,叫做这种编码的码距。

码距公式

码距决定了编码的纠错和检错能力。

L: 码距,D: 检错位数,C: 纠错位数
L − 1 = D + C L-1=D+C L1=D+C

所有的校验码(如奇偶校验码、循环冗余校验码、海明码)都是通过增加码距来提高纠错和检错能力。

3.7.2 模 2 运算

模 2 加减运算规则

按位模2相加减,不考虑进位和借位。

模 2 乘

按模 2 加求部分积之和。

模 2 除

按模 2 减求部分余数。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KTEy3fJU-1597538371863)(media/15772025068012.jpg)]

3.7.3 多项式和编码的对应关系

M ( x ) = C k − 1 x k − 1 + C k − 2 x k − 2 + . . . + C i x i + . . . + C 1 x + C 0 M(x)=C_{k-1}x^{k-1}+C_{k-2}x^{k-2}+...+C_{i}x^{i}+...+C_{1}x+C_0 M(x)=Ck1xk1+Ck2xk2+...+Cixi+...+C1x+C0

例如 M ( x ) = x 3 + x + 1 M(x)=x^3+x+1 M(x)=x3+x+1,对应编码为 1011。

编码左移 r r r 位,对应的多项式为 M ( x ) x r M(x)x^r M(x)xr

3.7.4 循环冗余校验码(CRC编码)

概念

  1. K K K 位信息码后再拼接 r r r 位的校验码,整个编码长度为 N N N 位,这种编码又叫 ( N , K ) (N,K) (N,K) 码。
  2. 对于一个给定的码,可以证明存在一个最高次幂为 N − K = r N-K=r NK=r 的多项式 G ( x ) G(x) G(x)。根据 G ( x ) G(x) G(x) 可以生成 r r r 位校验码,而 G ( x ) G(x) G(x) 叫做这个 CRC 码的生成多项式。

举例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TCZlM67M-1597538371864)(media/15772029203204.jpg)]

总结

  1. 确定生成多项式 G ( x ) G(x) G(x) 的最高次数为 r r r
  2. 原始报文 M ( x ) M(x) M(x) 左移 r r r
  3. 用左移后的报文 M ( x ) x r M(x)x^r M(x)xr 2 2 2 除以生成多项式,取余数 R ( x ) R(x) R(x)
  4. 将余数 R ( x ) R(x) R(x) 拼接在原始报文 M ( x ) M(x) M(x) 右侧,即得 CRC 编码

资料来源

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gene_INNOCENT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值