系列文章目录
组成原理(一):基本概述
组成原理(二):总线
组成原理(三):存储器(上)
组成原理(三):存储器(中)
前言
哈工大计组网课的笔记,教材是《计算机组成原理》(唐朔飞)
4.只读存储器
4.1.发展历程:
- 早期的只读存储器----在厂家就写好内容
- 改进1:用户可以自己写----一次性,破坏性的,无法修改
- 改进2:可以多次写----能对信息进行擦除,但是擦除麻烦,还需要单独购买特殊设备进行擦除
- 改进3:电可擦写----需要特定设备
- 改进4:电可擦写----直接连接到计算机进行擦写
4.2.掩膜ROM(MROM)
- 行列选择交叉处有MOS管----“1”
- 行列选择交叉处无MOS管----“0”
4.3.PROM(一次性编程)
- 熔丝断----“0”
- 熔丝未断----“1”
4.4.EPROM(多次性编程)
- D端加25v正电压,形成浮动栅,S与D不导通----“0”
- D段不加正电压,不形成浮动栅,S与D导通----“1”
用紫外线进行全部擦洗,擦洗时间长,且不能对个别需改写的单元进行擦写,不方便。
4.5.EEPROM(多次性编程)
- 电可擦写
- 可局部擦写
- 可全部擦写
在联机的条件下,用字擦除方式或页擦除方式,既可局部擦除,也可以全部擦除,这种EPROM就叫EEPROM。
4.6.Flash Memory(闪速型存储器)
比EEPROM更快,已具备RAM功能
5.存储器与CPU的连接
5.1.存储器容量的扩展
5.1.1.位扩展(字长不够)
增加存储字长。
用2片1K x 4位存储芯片组成1K x 8位的存储器
10根地址线,8根数据线,如上图。
5.1.2.字扩展(容量不够)
增加存储字的数量。
用2片1K x 8位存储芯片组成2K x 8位的存储器
十一根地址线,8根数据线,如上图。
这两块芯片不能同时进行工作,否则数据会产生混乱,所以需要A10做片选信号。
5.1.3.字、位扩展
用8片1K x 4位存储芯片组成4K x 8位的存储器
十二根地址线,8根数据线,如上图。
5.2.存储器与CPU的连接
5.2.1.地址线的连接
存储芯片不同,地址线的数量也不同,CPU的地址线数量往往大于存储芯片的地址线数量,通常是将地址的低位作为地址送入存储器的地址线中,高位作为芯片的片选信号。
5.2.1.数据线的连接
CPU的数据线的条数可能比存储器的数据线条数多,此时就要做位拓展,使存储器输入输出的信息满足CPU的要求。
5.2.3.读/写命令线的连接
CPU的读写命令线通常直接与存储芯片的读写控制端相连,通常高电平为读,低电平为写。
5.2.4.片选线的连接
片选线决定这次访问具体是哪几个存储芯片上。
注意:在访问时,要确认CPU访问的是存储器,不是IO,所以存储器的访问信号,一定要在片选信号当中进行体现。
每一个内存芯片都有自己的地址范围,这个地址范围要满足CPU的要求,即每一根地址线都要用到,一些地址作为存储芯片的内部地址输入到每一个存储芯片当中,有一些地址要用作片选信号来保证对某一个芯片的访问一定是在给定的地址范围之内的访问,
5.2.5.合理的选择存储芯片
5.2.5.1.芯片类型
ROM:保存系统程序,配置信息
RAM:用户的程序,系统程序运行的区域
5.2.5.2.芯片参数
芯片数量尽可能少,片选逻辑尽可能简单。
5.2.6.其他、时序、负载
5.3.例题
5.3.1例题1
步骤:
- 写出对应的二进制地址码,并确定总容量。
- 确定芯片的数量和类型
一片2K x 8位的ROM----系统程序区
两片1K x 4位的RAM----用户程序区
- 分配地址线
A10~A0接2K x 8位ROM的地址线
A9~A0接两片1K x 4位的RAM的地址线
- 确定片选信号
5.3.2.例题2
步骤:
- 写出对应的二进制地址码
- 确定芯片的数量及类型
- 地址线的分配
- 确定片选信号(访存信号和地址信号都要体现在片选信号中)
- 确定片选逻辑
6.存储器的校验
1.为什么要对存储器进行校验?
以内存为例,信息保存在电容或触发器内,如果存储器所处电磁条件很复杂,或者在空间中遭受带电粒子的打击,就可能使电容充放电或使触发器反转导致信息错误,这个错误往往可能出现致命错误或失效,所以要对存储器信息进行校验。
2.如何进行编码?
3.检错纠错能力与什么因素有关?
6.1.编码最小距离
合法代码集合:
- {000,001,010,011,100,101,110,111}----检0位错,纠0位错
- {000,011,101,110}----检1位错,纠0位错
- {000,111}----检1位错,纠1位错
- {0000,1111}----检2位错,纠1位错
- {00000,11111}----检2位错,纠2位错
- ······
检错和纠错能力,与任意两组合法代码之间二进制的最少差异数有关,称为最小编程距离。即在一组合法代码集合中,将一个合法代码改成另一个合法代码最少需要改变的位数。最小编程距离越大,检错和纠错能力越强。
4.检错后如何纠错?
L
−
1
=
D
+
C
(
D
≥
C
)
L - 1 = D + C(D\ge C)
L−1=D+C(D≥C)
- L----编码最小距离
- D----检查错误的位数
- C----纠正错误的位数
6.2.汉明码
- 汉明码采用奇偶校验
- 汉明码采用分组校验
- 汉明码的分组是一种非划分方式
6.2.1.汉明码的三要素
汉明码的组成需要添加检测位数:
2
k
≥
N
+
K
+
1
2^k\ge N+K+1
2k≥N+K+1
检测位的位置:
2
i
(
i
=
1
,
2
,
3
⋅
⋅
⋅
)
2^i(i = 1,2,3···)
2i(i=1,2,3⋅⋅⋅)
检测位的取值:
检测位的取值与该位所在检测组承担的奇偶检验任务有关
各检测位
C
i
C_i
Ci所承担的检测小组为:
- C 1 C_1 C1检测的 g 1 g_1 g1小组包括第1,3,5,7,9····· ----位置的二进制编码为X…XXX1
- C 2 C_2 C2检测的 g 2 g_2 g2小组包括第2,3,6,7,10····· ----位置的二进制编码为X…XX1X
- C 4 C_4 C4检测的 g 3 g_3 g3小组包括第4,5,6,7,10····· ----位置的二进制编码为X…X1XX
- C 8 C_8 C8检测的 g 3 g_3 g3小组包括第8,9,10,11,12····· ----位置的二进制编码为X…1XXX
各小组的关系:
- g i g_i gi小组独占第 2 i − 1 2^{i-1} 2i−1位
- g i g_i gi和 g j g_j gj小组共同占用第 2 i − 1 2^{i-1} 2i−1和 2 j − 1 2^{j-1} 2j−1位
- g i g_i gi、 g j g_j gj和 g l g_l gl小组共同占用第 2 i − 1 2^{i-1} 2i−1、 2 j − 1 2^{j-1} 2j−1和 2 l − 1 2^{l-1} 2l−1位
6.2.2.例题:
6.2.3.汉明码纠错过程
形成新的检验位
P
i
P_i
Pi,其位数与增添的检测位有关
7.提高访存速度的措施(解决存储墙)
- 采用高速器件
- 采用层次结构Cache-主存
- 调整主存结构(详)
7.1.单体多字系统(整体存取)
加长存储器存储字长,CPU每次访问存储器可以一次取多个值,取出后放在数据寄存器中,下次取值可在数据寄存器中取。
存在问题:
- 写数据不方便,如果要实现CPU字长的写入,还要有专门的硬件,使存储器更加复杂。
- 如果要取的数据不连续,则取数据效率低。
7.2.多体并行系统
7.2.1.高位交叉
将存储器分为多个存储体,每个存储体都有各自的控制电路(MAR、MDR),对所有存储体进行编号,使各存储体独立,使其可以并行使用。
存在问题
程序在计算机当中是按顺序进行存储,所以虽然存储器实现了并行的基础,但是按照程序或数据的存储特征来说,会造成一个存储体非常繁忙,其他存储体空闲的问题。
这种方式的本质其实与存储器容量扩展的方法一致,但是只适用于存储器的容量扩展,并不适合提高存储器的带宽(存储器缓存速度)。
7.2.2.低位交叉
特点:在不改变存取周期的前提下,增加存储器的带宽。
总结:
- 高位交叉:存储器容量的扩展
- 低位交叉:存储器带宽的扩展