主存储器详解


在这里插入图片描述

一、概述

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)
0x10000x12(MSB)0x78(LSB)
0x10010x340x56
0x10020x560x34
0x10030x78(LSB)0x12(MSB)

记忆口诀

  • 大端 = 高位在前(低地址)
  • 小端 = 低位在前(低地址)

4. 主存的技术指标

在这里插入图片描述
一般来说存取周期 > 存取时间,是因为:

存取周期 = 存取时间 + 恢复/准备时间(如恢复时间、预充电时间等)
即:完成一次完整读/写操作后,存储器需要一段时间“休息”或“重置”,才能开始下一次操作。


二、半导体存储芯片简介

1. 半导体存储芯片的基本结构

图1
图2
存储芯片片选信号的选择

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

2.1 线选法

在这里插入图片描述

2.2 重合法

在这里插入图片描述

它们的核心区别在于是否使用译码器以及地址空间的利用效率

  • 线选法
    直接用 CPU 地址总线的某一根高位地址线作为存储芯片的片选信号(CS),无需译码器。
    例如:A15 接芯片1的 CS,A14 接芯片2的 CS……

  • 重合法(全译码法)
    将高位地址线送入译码器(如 3-8 译码器),由译码器输出唯一的片选信号。
    例如:A15–A13 经译码器,Y0、Y1…分别控制不同芯片。

特性线选法重合法(全译码)
地址唯一性❌ 可能多个地址映射同一单元(地址重叠)✅ 每个地址唯一对应一个存储单元
地址连续性❌ 不连续,有空洞✅ 连续、紧凑
地址利用率

📌 举例:若用线选法选2片8KB ROM,可能地址 0x0000–0x1FFF0x8000–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. 高性能存储芯片

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值