
一、概述
1. 主存的基本组成

2. 主存与CPU之间的联系

3. 主存中存储单元地址的分配

3.1 大端模式(Big-Endian)
- 高位字节(MSB)存放在低地址,低位字节(LSB)存放在高地址。
- 符合人类阅读习惯(从左到右:高位 → 低位)。
- 网络传输标准(TCP/IP 使用大端,也叫“网络字节序”)。
3.2 小端模式(Little-Endian)
- 低位字节(LSB)存放在低地址,高位字节(MSB)存放在高地址。
- 符合 CPU 运算习惯(从低位开始计算)。
- 主流 CPU 架构默认使用(如 x86、x86_64、ARM 默认小端)。
举例说明(以 0x12345678 为例)
假设该 32 位整数从内存地址 0x1000 开始存储:
| 地址 | 大端(Big-Endian) | 小端(Little-Endian) |
|---|---|---|
0x1000 | 0x12(MSB) | 0x78(LSB) |
0x1001 | 0x34 | 0x56 |
0x1002 | 0x56 | 0x34 |
0x1003 | 0x78(LSB) | 0x12(MSB) |
✅ 记忆口诀:
- 大端 = 高位在前(低地址)
- 小端 = 低位在前(低地址)
4. 主存的技术指标

一般来说存取周期 > 存取时间,是因为:
存取周期 = 存取时间 + 恢复/准备时间(如恢复时间、预充电时间等)
即:完成一次完整读/写操作后,存储器需要一段时间“休息”或“重置”,才能开始下一次操作。
二、半导体存储芯片简介
1. 半导体存储芯片的基本结构


存储芯片片选信号的选择

2. 半导体存储芯片的译码驱动方式
2.1 线选法

2.2 重合法

它们的核心区别在于是否使用译码器以及地址空间的利用效率。
-
线选法:
直接用 CPU 地址总线的某一根高位地址线作为存储芯片的片选信号(CS),无需译码器。
例如:A15 接芯片1的 CS,A14 接芯片2的 CS…… -
重合法(全译码法):
将高位地址线送入译码器(如 3-8 译码器),由译码器输出唯一的片选信号。
例如:A15–A13 经译码器,Y0、Y1…分别控制不同芯片。
| 特性 | 线选法 | 重合法(全译码) |
|---|---|---|
| 地址唯一性 | ❌ 可能多个地址映射同一单元(地址重叠) | ✅ 每个地址唯一对应一个存储单元 |
| 地址连续性 | ❌ 不连续,有空洞 | ✅ 连续、紧凑 |
| 地址利用率 | 低 | 高 |
📌 举例:若用线选法选2片8KB ROM,可能地址
0x0000–0x1FFF和0x8000–0x9FFF都能访问第一片,造成重叠。
2.3. 适用场景
-
线选法:
- 优点:电路简单,成本低。
- 缺点:不可靠,易冲突。
- 适用于小容量、简单系统(如单片机实验、教学演示)
-
重合法:
- 优点:地址精准,系统稳定。
- 缺点:需额外译码器,连线稍多。
- 适用于正式系统、大容量存储器扩展(如PC内存、嵌入式系统)
三、随机存取存储器(RAM)
1. 静态RAM(SRAM)
六管静态RAM
图中所示叫做“六管静态RAM”,T1~T6六管会组成“双稳态触发器”保存0或1。
在 SRAM 中,用的是最简单的触发器:由两个反相器(非门)交叉连接而成。
“稳态” = 电路能自己维持、不会乱变的状态。
双稳态触发器详细内容

读操作

写操作

Intel 2114 RAM 读操作示例

Intel 2114 RAM 写操作示例

2. 动态RAM(DRAM)

三管
Intel 1103 读操作

Intel 1103 写操作

单管
动态 RAM 4116 特性
14位地址分两次分别放入行地址缓存器、列地址缓存器,经过译码,最后进入I/O缓存器

读操作
读放大器左端,电容有电1,通过读放大器(跷跷板电路),读出变成0;
读放大器右端,电容有电1,读出仍然为1。

写操作
向读放大器左端写入1,通过读放大器(跷跷板电路),写入电容中变成0;
向读放大器右端写入1,写入电容中仍然为1。

刷新
动态RAM是利用电容存储电荷的方式来保存信息的,电容非常小,容易漏电。所以我们经过一段时间,就要对电容进行充电——刷新。
对动态RAM刷新,只和行地址有关,和列地址没关系,所以每次刷新都是对一行的所有基本单元电路进行操作
集中刷新

分散刷新

tM就是读写周期,tR就是某一行的刷新时间,tC就是刷新一行所需的时间。
每1微秒刷新一行,128微秒刷新完。2 ms 中平均每行刷新15.6次。
刷新次数太过频繁导致性能下降,是过度刷新。
异步刷新(分散刷新与集中刷新相结合)

2 ms(毫秒)要刷新128行,我们将这段时间分成128份,平均15.6微妙刷新一行即可。
- 相对于15.6微妙这一段来说,它是集中刷新
- 相对于2 ms 来说,它是分散刷新
“死区”安排得当的话,并不会影响CPU和IO对动态RAM读写,例如将刷新安排在指令译码阶段,或者CPU和IO不访存的时候。
3. 动态RAM和静态RAM比较

DRAM 集成度更高,适合做大容量主存;SRAM 集成度低但速度快,适合做小容量高速缓存。
在存储器(如 DRAM vs SRAM)的场景中,功能的基本单位是“1 bit 存储单元”,而不是晶体管本身。所以判断集成度高低,看的是 每平方毫米能存多少 bit,而不是用了多少个晶体管。
四、只读存储器(ROM)
一般同于保存系统程序或者系统的配置信息,只读存储器的发展非常好地体现了人们追求创新。
1. 发展历程
- 早期的ROM,商家写好了内容
- 改进1,用户可以自己写,一次性
- 改进2,可以多次写,要用特定设备擦除,很不方便
- 改进3,电可擦写,特定设备,也不是很方便
- 改进4,点可擦写,直接连到计算机上


芯片上存在石英窗口,紫外线通过石英窗口完成对浮动栅的驱散操作,但是擦除很麻烦。

2. 对比总结表
| 类型 | 编程方式 | 擦除方式 | 可重复编程? | 擦除粒度 | 典型应用 |
|---|---|---|---|---|---|
| MROM | 制造时掩膜写入 | 不可擦除 | 否 | — | 大批量固件 |
| PROM | 用户一次性编程 | 不可擦除 | 否 | — | 小批量定制 |
| EPROM | 用户编程 | 紫外线整片擦除 | 是 | 整片 | 开发/调试阶段 |
| EEPROM | 用户编程 | 电信号按字节擦除 | 是 | 字节/页 | 配置存储、小数据保存 |
Flash Memory(闪存)是 EEPROM 的一种改进形式,支持大块擦除(扇区/块),速度更快、密度更高,广泛用于 U 盘、SSD、手机存储等。
详细内容:MROM、PROM、EPROM 和 EEPROM、Flash Memory
五、存储器与CPU的连接
1. 存储器容量的扩展
位扩展

字扩展

同时扩展

2.存储器与CPU的连接
- 地址线的连接
- 数据线的连接
- 读/写命令线的连接
- 片选线的连接
- 合理选择存储芯片
- 其他——时序(CPU和时序和存储器的时序要能相互配合)、负载(CPU能带动多少个存储芯片)
T1


三八译码器电路分析:
有圈就取反,输入进前反,输出出前反
T2




六、存储器的校验

问:编码的检测能力和纠错能力和什么有关?
答:任意两组合法代码之间二进制位的最少差异数,例如,
- 第一组中一个合法代码变成另外一个合法代码,它依然是合法代码,不存在检测能力
- 第二组一个合法代码变成另外一个,至少要变2位,检错位+纠错位=1+0=1
- 第三组一个合法代码变成另外一个,至少要变3位,检错位+纠错位=1+1=2
- 第四组一个合法代码变成另外一个,至少要变4位,检错位+纠错位=2+1=3
- 第五组一个合法代码变成另外一个,至少要变5位,检错位+纠错位=2+2=4
- 所以任意两组合法代码之间二进制位数差的越多,检错能力和纠错能力越强
1. 编码的最小距离

2. 汉明码的组成
七、提高访存速度的措施
- 采用高速器件
- 采用层次结构 Cache-主存
- 调整主存结构
本部分主要讲解第三种方式——调整主存结构
1. 单体多字系统

1. 基本概念
- “单体”:指只有一个存储体(memory module)。
- “多字”:一次可以读/写多个字(word),即 CPU 与主存之间的数据通路宽度大于一个字长。比如,CPU字长16位,存储器的存储字长为64位。
2. 工作方式
- 主存按 块(如4字为一块) 组织。
- CPU 发出一个地址后,主存一次性返回连续的多个字(比如4个字)。
- 这些字通常位于连续地址中。
3. 优点
- 提高了数据传输带宽,因为一次访存可获得多个字。
- 简化了控制逻辑(只有一个存储体)。
4. 缺点
- 灵活性差:只能高效访问连续地址的数据。如果程序访问的是非连续地址(如跳转、指针等),会造成带宽浪费。
- 无法支持并行访问不同地址。
举例:假设字长为32位,主存一次可读取4个字(128位)。CPU 请求地址 0x100,主存返回 0x100、0x104、0x108、0x10C 四个字。但是跳转访问后,会造成带宽浪费
2. 多体并行系统
为克服单体系统的局限性,采用 多个存储体(module) 并行工作,每个体可独立访问。
根据地址映射方式不同,分为两类:
2.1 高位交叉(顺序编址)

这种方式适合存储器容量进行扩展,但是不适合提高存储器的带宽。
1. 地址划分
- 高位地址用于选择存储体(module number)。
- 低位地址表示体内的字地址。
例如:4个体(M0~M3),地址格式如下:
| 体号(高位) | 体内地址(低位) |
|---- 2位 ----|----- n位 -------|
2. 存储布局
- 连续地址集中在同一个体中。
- M0:0, 1, 2, 3, …
- M1:N, N+1, N+2, …
- (其中 N = 每个体的容量)
3. 特点
- 适合于大块连续数据的顺序访问(如数组处理)。
- 不适合并行访问相邻地址(因为它们在同一个体,不能同时访问)。
- 由于是顺序访问,可能会造成某个存储体非常繁忙,其他存储体空闲的问题
❌ 举例:要同时读取地址 0、1、2、3 → 全在 M0,无法并行!
2.2 低位交叉(各个体轮流编址)


这种方式相当于以流水的方式来访问不同的存储体。


图解:先启动M0,经过T/4时间启动M1,然后依次经过相同时间启动M2、M3,最后经过一个周期T,M0会给出 存/取 一个结果,完成存取操作。后边按照流水线执行。
1. 地址划分
- 低位地址用于选择存储体。
- 高位地址表示体内的字地址。
例如:4个体,地址格式:
| 体内地址(高位) | 体号(低位) |
|----- n位 -------|---- 2位 ----|
2. 存储布局
- 连续地址分散在不同体中:
- 地址 0 → M0
- 地址 1 → M1
- 地址 2 → M2
- 地址 3 → M3
- 地址 4 → M0
- 地址 5 → M1
- …
3. 特点
- 支持流水线式并行访问连续地址。
- 各体可重叠操作:当 M0 正在处理地址 0 时,M1 可开始处理地址 1(只要满足时间错开)。
- 提高有效带宽,特别适合向量处理、循环展开等场景。
✅ 举例:CPU 要读取 0~3 四个连续地址 → 分别由 M0~M3 并行提供,效率高!
4. 实现方式
- 通常配合交叉存取(Interleaved Access) 和 存取周期错位。
- 假设每个体存取时间为 T,则连续字的访问间隔可缩短为 T/m(m 为体数),形成流水。
3. 高性能存储芯片


37

被折叠的 条评论
为什么被折叠?



