上篇:第三章:系统总线
下篇:第五章:输入输出系统
存储器是计算机系统中的记忆设备,用来存放程序和数据。是计算机系统中最重要的组件之一,执行程序时所需要的指令、数据都来自于存储器,程序的执行结果也保存在存储器当中,另外,各种文档、音频资料等也是保存在存储器当中。
按存储介质
分类
易失
性存储器。
磁头
在磁层
上进行读写操作,不易失。
按存取方式
分类
存储器的三个特性:速度
、容量
和价格/位(简称位价)
。
存储器分层结构图:
CPU 不能直接访问辅存,辅存只能与主存交换信息,因此辅存的速度可以比主存慢得多。
存储器的层次结构主要体现在缓冲---主存
和主存---辅存
这两个存储层次上。
从 CPU 角度来看,缓存—主存 这一层次的速度接近于缓存,高于主存;主存–辅存 这一层次,从整体分析,其速度接近主存,容量接近于辅存。现代的计算机系统几乎都具有这两个存储层次,构成了缓存、主存、辅存三级存储系统。
主存—辅存这一层次形成了虚拟存储系统
。在这个系统中,程序员编程的地址范围与虚拟存储器
的地址空间相对应。虚拟存储器中用到的地址叫作虚地址
(虚存地址、虚拟地址)或叫逻辑地址
,而主存的实际地址称为物理地址
或实地址
。
主存储器
是存储器子系统中的一类,用来存放程序和数据,它可以直接
与CPU
交换信息。
主存中还必须配置两个寄存器 MAR
和 MDR
。
驱动器、译码器和读写电路均制作在存储芯片中,而 MAR 和 MDR 制作在 CPU 芯片内,存储芯片和 CPU 芯片可通过总线连接。
实际上,根据 MAR 中的地址访问某个存储单元时,还需要经过地址译码、驱动等电路,才能找到所需访问的单元。读出时,需经过读出放大器,才能将被选中单元的存储字送到 MDR。写入时,MDR 中的数据也必须经过电路才能真正写入到被选中的单元中。
主存和 CPU 的联系:
CPU 和主存之间的连接信号分成:数据总线、控制总线和地址总线。
数据总线完成 CPU 和主存之间的信息传输,所以数据总线直接连在 MDR 寄存器上,是双向的,可能读出也可能进行写入;地址总线连接在 MAR 寄存器和主存之间,给出要访问内存单元的地址,从 CPU 送到主存,所以是单向的;控制总线也是单向的,由 CPU 送至主存储器。
主存中存储单元地址的分配:
主存各存储单元的空间位置是由单元地址号来表示的,而地址总线是用来指出存储单元地址号的,根据该地址可读出一个存储字。
在主存中数据的存放可以按照:① 以高位字节地址为字地址;② 以低位字节地址为字地址。两种方式进行存放。它的原理可参考博客:【主存中存储单元地址的分配】
主存的技术指标:
存储芯片是通过地址总线、数据总线和控制总线与外部连接:
地址线和数据线共同反映存储芯片的容量。
地址线 | 数据线 | 芯片容量 |
---|---|---|
10 | 4 | 210× 4 = 1K × 4 位 |
14 | 1 | 214× 1 = 16K × 1 位 |
13 | 8 | 213× 8 = 8K × 8 位 |
半导体存储芯片的译码驱动方式:
半导体存储芯片的译码驱动方式有两种:线选法
和重合法
。关于译码不太理解的可以去看:《数字逻辑设计-哈工大:P35》
随机存储器按存储信息原理的不同可分为:静态 RAM
和动态 RAM
。
静态 RAM(Static RAM 或记作 SRAM):
存储器中用于寄存 “0” 和 “1” 代码的电路叫做存储器的基本单元电路。
(1)静态 RAM 的基本单元电路
静态 RAM 基本单元的 读操作
:① 行选 – > T5、T6 开;② 列选 – > T7、T8 开;③ 读选择有效;④ VA – > T6 – > T8 – > 读放 – > DOUT
静态 RAM 基本单元的 写操作
:① 行选 – > T5、T6 开;② 列选 – > T7、T8 开;③ 写选择有效;④ DIN – > 两个写放 (左:DIN – > 相反 – > T7 – > T5 – > A’;右:DIN – > T8 – > T6 – > A)
(2)静态 RAM 芯片举例(Intel 2114 芯片)
动态 RAM(Dynamic RAM 或 DRAM):
动态 RAM 都是靠电容存储电荷的原理来寄存信息的,若电容上存有足够多的电荷表示存 “1”,电容上无电荷表示存 “0”。
(1)动态 RAM 的基本单元电路
常见动态 RAM 的基本单元电路可分为三管式
和单管式
两种。
(2)动态 RAM 芯片举例
1K×1 位三管 MOS 动态 RAM 结构示意图:
4116 动态 RAM(16K×1位)芯片结构:
(3)动态 RAM 的刷新
动态 RAM 是利用电容存储电荷的方式来保存信息的,电容很容易漏电
,在一段时间之内,如果不对电容当中的信息进行进行再生的话,电容信息就会丢失,因此,必须采用定时刷新的方法,在一定的时间内,对动态 RAM 的全部基本单元电路必作一次刷新,一般取 2ms,这个时间叫作刷新周期
,或再生周期
。
对动态 RAM 的刷新只和行地址
有关,和列地址无关,也就是说每一次刷新操作,刷新的是动态 RAM 当中的每行所有的基本单元电路。
动态 RAM 的刷新有三种方法:
动态 RAM 和 静态 RAM 的比较:
比较项目 | DRAM | SRAM |
---|---|---|
存储原理 | 电容 | 触发器 |
集成度 | 高 | 低 |
芯片引脚 | 少 | 多 |
功耗 | 小 | 大 |
价格 | 低 | 高 |
速度 | 慢 | 快 |
刷新 | 有 | 无 |
按 ROM 的原始定义,一旦注入原始信息后是不能改变的,但随着用户的需要,希望能修改 ROM 原始信息,便出现了用户可以一次性写的 ROM,之后又出现了能对信息进行擦除,并且可以多次写的 ROM。
1. 掩膜 ROM(MROM)
掩膜 ROM(MacroRead Only Memory),中文全称掩膜式只读存储器
。掩膜式只读存储器中的信息是已经被生产厂家制作到芯片中的,是不可更改的
,使用者不能对其进行编写。
行列选择线交叉处有 MOS 管为 “1”,行列选择线交叉处无 MOS 管为 “0”。
2. PROM(一次性编程)
PROM 是可以实现一次性编程
的只读存储器。
如上图所示是一个 双极型镍铬熔丝式单元电路 ,这里面有一个熔丝
,如果进行读出或者写入的话,就可以通过熔丝通和断来保存信息,熔丝断为 “0”,熔丝未断为 “1”,熔丝断了之后是不能再给它接回去的,所以是一次性编程的 ROM。
3. EPROM(多次性编程)
EPROM 是一种可擦洗可编程的只读存储器。它可以由用户对其所存信息作任意次的改写。
目前用得较多的 EPROM 是用浮动栅雪崩注入型 MOS 管构成,又称 FAMOS 型 EPROM。
D 端加正电压 – > 形成浮动栅 – > S 与 D 不导通为 “0”
D 端不加正电压 – > 不形成浮动栅 – > S 与 D 导通为 “1”
如果需要进行重新写入的话,就需要驱散浮动栅,浮动栅的驱散可以直接使用紫外线
照射。
4. EEPROM(多次性编程)
EEPROM 是指带电可擦可编程只读存储器
,是一种掉电
后数据
不丢失的存储芯片。EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程,一般用在即插即用。
快闪存储器(英语:flash memory),是一种电子式可清除程序化
只读存储器的形式,允许在操作中被多次擦或写的存储器。这种科技主要用于一般性数据存储
,以及在计算机与其他数字产品
间交换传输数据,如储存卡
与U盘
。闪存是一种特殊的、以宏块
抹写的 EPROM
。早期的闪存进行一次抹除,就会清除掉整颗芯片上的数据。
1. 存储容器的扩展
由于单片存储芯片的容量总是有限的,很难满足实际的需要,因此,必须将若干存储芯片连在一起才能组成足够容量的存储器,这就叫存储容量的扩展
,通常有位扩展
和字扩展
。
(1)位扩展
位扩展
是指增加存储字长
,如 2 片 1K×4 位的芯片,可组成 1K×8 位的存储器。
又如,将 8 片 16K×1 位的存储芯片连接,可组成一个 16K×8 位的存储器。
(2)字扩展
字扩展
是指增加存储器字的数量
,如用 2 片 1K×8 位的存储芯片,可组成一个 2K×8 位的存储器。
(3)字、位扩展
字、位扩展
是指既增加存储字的数量,又增加存储字长,如用 8 片 1K×4 位的芯片组成 4K×8 位的存储器。
2. 存储器与 CPU 的连接
在计算机运行过程中,由于种种原因致使数据在存储过程中可能出现差错,所以需要对存储器中的信息进行校验。
编码的检测能力和纠错能力和什么有关?
任意两组合法代码之间二进制位
的最少差异数
,也就是编码的最小距离
。
纠错理论公式:
L - 1 = D + C
(PS:D>=C)
- L — 编码的最小距离
- D — 检测错误的位数
- C — 纠正错误的位数
1. 海明码的组成
海明码
又称汉明码
,是由 Richard Hanming 于 1950 年提出的,它具有一位纠错能力
。
P3P2P1 | 校验结果 |
---|---|
000 | 无差错 |
001 | P1 出错 |
101 | P5 出错 |
110 | P6 出错 |
111 | P7 出错 |
校验位是只对一组数据进行校验,不会和其它组共有位置,所以海明码的校验位在 P1、P2、P4 ,也就是 2x 位上。
组成海明码的三要素:
举例:求 0101 按 “偶校验” 配置海明码
解:因为 n = 4 ,根据 2k>= n + k + 1 可得 k = 3
汉明码排序如下:
C1 对应 P1、P3、P5、P7 所在的组,P3、P5、P7 中有1个0和2个1,由于是偶校验,所以C1 为 0,同理可得 C2 为1,C4 为 0
即 0101 的汉明码为 0100101
2. 海明码的纠错
海明码的纠错过程实际上是对传送后的海明码形成新的检测位 Pi( i = 0,1,2,4,8,…),根据 Pi 的状态,便可直接指出错误的位置。Pi 的状态是由原检测位 Ci 及其所在小组内 “1” 的个数确定的。
举例:已知接收到的汉明码为 0100111,按偶配原则配置,原本传送的信息是什么?
则新的检测位为
即 P4P2P1 = 110
第 6 位出错,可纠正为 010010
1
故要求传送的信息为 0101
PS:这一块东西可能有点难以理解,可参见博客:《汉明码(海明码)》通俗易懂,或者是看:B站:计算机组成原理(唐朔飞)-P36~P38
在计算机的发展过程中,CPU 速度的提高是非常快的,但是存储器速度的提升却非常的有限,两者之间的差在逐渐的增大,CPU 执行程序时所需要的指令、数据都来自于内存,运行结果也要保存到内存当中,如果存储器很慢,CPU 再快也无法提高整机的速度,这种现象在计算机结构领域称为存储墙
,是目前影响计算机性能的主要因素之一。
为了解决此类问题,可通过以下几种方式去解决:
高速缓冲存储器是存在于主存(DRAM)
与CPU
之间的一级存储器, 由静态存储芯片(SRAM)
组成,容量比较小
但速度比主存高得多, 接近于CPU的速度
。在计算机存储系统的层次结构
中,是介于中央处理器
和主存储器
之间的高速小容量存储器。它和主存储器一起构成一级的存储器。高速缓冲存储器和主存储器之间信息的调度和传送是由硬件自动进行的。
程序访问的局部性原理
:程序访问的局部性原理包括时间局部性
和空间局部性
。时间局部性
是指在最近的未来要用到的信息,很可能是现在正在使用的信息,因为程序中存在循环。空间局部性
是指在最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间上是连续的,因为指令通常是顺序存放、顺序执行的,数据一般也是以向量、数组等形式簇聚地存储在一起的。
高速缓冲技术就是利用程序访问的局部性原理,把程序中正在使用的部分存放在一个高速的、容量较小的Cache 中,使 CPU 的访存操作大多针对 Cache 进行,从而大大提高程序的执行速度。
Cache 的工作原理:
缓存块 C 远小于主存的块数 M,内存块和 Cache 块的大小是相同的,所以块内地址位数也是相同的,另外,一个块在内存和 Cache 之间进行传送的时候是整体进行传送,块内字节的顺序不会发生任何变化,即内存的块内地址部分和 Cache 的块内地址部分的指是完全相等的。Cache 上有一个标记,它标记的是主存块和 Cache 块之间的对应关系,如果一个主存块调用到 Cache 当中,就能将主存块号写到标记当中,将来 CPU 给出一个内存地址,它希望在 Cache 当中访问到这个数据,首先要确定这个块是否已经被送到 Cache 当中,就会拿给出地址的主存块号和 Cache 中的标记进行对比,如果和某一个标记正好相等并且 Cache 块是有效的,这个 Cache 块中就保存了需要在内存中访问的信息。
主存和缓存之间是按照块
进行存储的,按块进行传送的、块的大小是相同的、块内地址也是完全相同的。
任何时刻都有一些主存块处于缓存块中。CPU 欲读取主存某字时,有两种可能;一种时所需要的数已在缓存中,即可直接访问 Cache;另一种事所需的数不在 Cache 内,此时需将该数所在的主存整个字块一次调入 Cache 种。第一种情况称为 CPU 访问 Cache 命中,第二种情况称 CPU 访问 Cache 不命中,通常用命中率来衡量 Cache 的效率,命中率
是指 CPU 要访问的信息已在 Cache 内的比率,它是高速缓冲存储器最重要
的技术指标,命中率与 Cache 的容量
与块长
有关,一般而言,Cache 容量越大,其 CPU 的命中率就越高。
块长取一个存取周期内从主存调出信息长度。
Cache - 主存系统的效率:效率 e
与 命中率
有关,e = (访问 Cache 的时间 / 平均访问时间) × 100%
Cache 的基本结构:
Cache 的读操作:
Cache 写操作:
在对 Cache 块内写入信息的时候,必须与被映射象的主存块内的信息完全一致。通常有以下几种方法来保证 Cache 与主存内容保持一致性的问题。
Cache 的改进:
片载(片内)缓存
:单一缓存,缓存直接与 CPU 制作在同一个芯片内
片外缓存
:两级缓存,在主存和片内缓存之间,再加一级缓存
统一缓存
:是指指令和数据都存放在同一缓存内的 Cache分开缓存
:是指指令和数据分别存放在两个缓存中,一个叫指令 Cache,一个叫数据 Cache由主存地址映象到 Cache 地址称为地址映象
,可分为:① 直接映象
;② 全相联映象
;③ 组相联映象
;④ 段相联映象
。
直接映射:是指主存当中任意一个给定的块
,它只能映射到,或者是只能装载到某一个指定的 Cache 块当中。
每个缓存块 i
可以和若干
个主存块
对应,但是每个主存块 j
只能和一个缓存块
对应全相联映射:允许主存中每一字块映象到 Cache 中任何
一块位置上。
某一主存块 j
按模 Q
映射到缓存
的第 i 组
中的任一块
段相联映射:是直接映象和全相联映象两者结合的又一种方式。它是将主存和 Cache 都分成若干段,且使它们每段都包含的块数相等,段之间采用全相联映象,段内块之间采用直接映象。
当新的主存块需要调入 Cache 并且它的可用空间位置又被占满时,就产生了一个替换算法问题。
先进先出(FIFO)算法
近期最少使用(LRU)算法
辅助存储器作为主存的后援设备,又称作外部存储器,简称外存
,它与主存一起组成了存储器系统的 主存 --- 辅存层次
,与主存相比,辅存具有容量大、速度慢、价格低、可脱机保持信息等特点,属 “非易失性” 存储器。
特点
:不直接参与 CPU 交换信息
目前,广泛用于计算机系统的辅助存储器有硬磁盘、软磁盘、磁带、光盘等。前三种均属磁表面存储器
。
磁表面存储器是在不同形状(如盘状、带状等)的载体上,涂有磁性材料层,工作时,靠载磁体高速运动,由磁头在磁层上进行读写操作,信息被记录在磁层上,这些信息的轨迹就是磁道
。
磁表面存储器的主要技术指标:
记录密度
:是指单位长度内所存储的二进制信息量。存储容量
:是指外存能存储的二进制信息总数量,一般以位或字节为单位。平均寻址时间
:分为两个部分,一个是磁头寻找到目标磁道的寻道时间,其二是磁头等待欲读写的磁道区段旋转到磁头下方所需要的等待时间。数据传输率
:是指单位时间内磁表面存储器向主机传送数据的位数或字节数。误码率
:是衡量磁表面存储器出错概率的参数,它等于从辅存出错时,出错信息位数和读出的总信息位数之比。磁记录原理:
磁表面存储器通过磁头和记录介质的相对运动完成读写操作。
磁表面存储器的记录方式:
评价记录方式的主要指标为:① 编码效率;② 自同步能力
硬磁盘存储器的类型:
按照磁头是否固定可划分为:
按硬盘盘片是否可更换分为:
硬磁盘存储器的结构:
硬磁盘存储器是由磁盘驱动器
、磁盘控制器
和盘片
组成。
硬磁盘的磁道记录格式:
软磁盘存储器的盘片是用类似塑料薄膜唱片的柔性材料制成的,简称软盘
。
与硬盘的比较:
硬盘 | 软盘 | |
---|---|---|
速度 | 高 | 低 |
磁头 | 固定、活动 | 活动 |
读写过程 | 靠浮动磁头读写,磁头不接触盘片 | 直接接触盘片进行读写 |
盘片 | 固定盘、盘组大部分不可换 | 可换盘片 |
价格 | 高 | 低 |
环境 | 苛刻 | 要求不苛刻 |
磁带存储器也属磁表面存储器,其记录原理方式与磁盘存储器是相同的。从存取方式来看,磁盘存储器属于直接存取设备,而磁带存储器必须按顺序进行存取,既磁带上的文件是按磁带头顺序存放的。由于磁带容量比较大,位价格也比磁盘低,格式统一便于互换,因此仍是一种用于脱机存储的后备存储器。
磁带存储器是由磁带
和磁带机
两部分组成。
磁表面存储器由于磁介质表面的缺陷、尘埃等原因,致使出现多个错误码。CRC (Cyclic Redundancy Check)码可以发现并纠正信息在存储或传送过程中连续出现的多位错误代码。因此 CRC校验码在磁介质存储器和计算机之间通信方面得到广泛应用。
光盘存储器采用光存储技术
,利用激光
写入和读出。
光盘的存储原理:
光盘存储器利用激光束在记录表面上存储信息,根据激光束和反射光的强弱不同,可实现信息的读写。
热作用
(物理或化学变化)热磁效应
上篇:第三章:系统总线
下篇:第五章:输入输出系统