SRAM,DRAM

某一个SRAM芯片容量为1024×8位,该芯片地址引脚和数据引脚总数至少为多少?莱储存容量为32k,乘以16位,则地址线为多少根?数据线又有多少根?

答案先给出来:

SRAM 芯片容量为 1024 × 8 位,地址引脚和数据引脚总数至少为:

10 + 8 = 18 根

若存储容量为 32K × 16 位,则:

地址线为 15 根,数据线为 16 根


这类题的核心看法

存储芯片容量通常写成:

存储单元个数 × 每个存储单元的位数

也就是:

字数 × 字长

例如:

1024 × 8 位

表示这个 SRAM 芯片内部有 1024 个存储单元,每个存储单元存放 8 bit 数据。

所以它不是总共有 1024 位,而是总容量为:

1024 × 8 bit = 8192 bit = 8 Kbit

但在求地址线和数据线时,不需要先算总 bit 数,直接看两个部分即可。


地址线怎么求

地址线的作用是“选中哪一个存储单元”。

如果芯片有 N 个存储单元,那么需要满足:

2 的地址线根数 ≥ N

也就是:

地址线根数 = log₂N

1024 × 8 位 中,存储单元个数是 1024

因为:

1024 = 2¹⁰

所以地址线需要:

10 根

这 10 根地址线可以表示:

0000000000 ~ 1111111111

一共 2¹⁰ = 1024 个地址,刚好选中 1024 个存储单元。


数据线怎么求

数据线的作用是“一次读出或写入多少位数据”。

芯片容量写成 1024 × 8 位,后面的 8 位 表示每个存储单元宽度为 8 bit。

所以一次访问一个地址,可以读出或写入 8 位数据。

因此数据线需要:

8 根

所以这道题问“地址引脚和数据引脚总数至少为多少”,就是:

地址线 10 根 + 数据线 8 根 = 18 根

注意题目说“至少”,一般是因为一个实际 SRAM 芯片还可能有片选线 CS、读写控制线 WE/OE 等控制引脚,但题目只让算地址引脚和数据引脚,所以最少只算这两类。


32K × 16 位怎么做

对于:

32K × 16 位

含义是:

共有 32K 个存储单元,每个存储单元 16 位

在计算机组成原理中:

1K = 1024 = 2¹⁰

所以:

32K = 32 × 1024
    = 2⁵ × 2¹⁰
    = 2¹⁵

因此它有 2¹⁵ 个存储单元。

地址线数量为:

15 根

因为 15 根地址线可以表示:

2¹⁵ = 32768 = 32K

后面的 16 位 表示每个存储单元宽度为 16 bit,所以数据线数量为:

16 根

所以:

32K × 16 位
地址线:15 根
数据线:16 根

如果也问地址引脚和数据引脚总数,则为:

15 + 16 = 31 根

快速套公式

这种题直接套:

若芯片容量为 2ⁿ × m 位

地址线 = n 根
数据线 = m 根
地址线 + 数据线 = n + m 根

例如:

1024 × 8 位
1024 = 2¹⁰
地址线 = 10
数据线 = 8
总数 = 18

再比如:

32K × 16 位
32K = 2¹⁵
地址线 = 15
数据线 = 16
总数 = 31

考研中最容易错的地方

第一,容易把总容量拿去求地址线。

比如 1024 × 8 位,有人会先算:

1024 × 8 = 8192 = 2¹³

然后误以为地址线是 13 根。

这是错的。

因为地址线不是用来寻址“每一个 bit”的,而是用来寻址“每一个存储单元”的。每个地址对应一个 8 位存储单元,而不是对应一个 bit。

所以:

地址线看前面:1024
数据线看后面:8 位

第二,容易把 K 当成 1000。

在计组存储器题中:

1K = 1024 = 2¹⁰

所以:

32K = 32 × 1024 = 2⁵ × 2¹⁰ = 2¹⁵

不能按十进制的 32000 去算。

第三,容易混淆“存储容量”和“芯片组织形式”。

1024 × 8 位 是芯片组织形式,也可以理解为:

1024 个字,每个字 8 位

它的总容量是:

8192 bit = 8 Kbit = 1 KB

但求地址线和数据线时,重点不是总容量,而是“有多少个地址”和“一次输出多少位”。


一句话记忆

看到 A × B 位

A 决定地址线,B 决定数据线。

更具体地说:

A = 2ⁿ,则地址线 n 根;
B 位,则数据线 B 根。

所以:

1024 × 8 位 → 地址线 10 根,数据线 8 根,总数 18 根

32K × 16 位 → 地址线 15 根,数据线 16 根,总数 31 根

一、先抓住这章的主线:SRAM 快,DRAM 大

计算机存储器这一块,最容易被各种名词绕乱:SRAM、DRAM、SDRAM、刷新、行列地址、突发传送、Cache、Bank、阵列优化……但从考研 408 的角度看,主线其实很清楚:

存储器首先要解决的是“一个二进制位 0/1 怎么保存”;然后要解决“很多个存储位怎么组成一个芯片”;接着要解决“芯片容量很大时,怎样减少引脚、降低成本、提高访问速度”;最后再看 SRAM 和 DRAM 在存储体系中的分工。

最核心的一句话是:

SRAM 用触发器保存信息,速度快、成本高、集成度低,常用于 Cache;DRAM 用电容电荷保存信息,速度较慢、成本低、集成度高,但需要刷新,常用于主存。

这句话基本就是 SRAM 与 DRAM 比较题的总纲。


二、SRAM 的工作原理:用触发器“稳稳地记住 0/1”

SRAM 全称是 Static RAM,静态随机存储器。这里的“静态”不是说它不需要供电,而是说只要不断电,存储单元里的信息就能一直保持,不需要像 DRAM 那样周期性刷新。

SRAM 的一个存储位通常由双稳态触发器构成,典型结构是 6 个 MOS 管,也就是常说的 6T SRAM 单元。它本质上是两个反相器交叉耦合,形成两个稳定状态:

一个稳定状态表示 1,另一个稳定状态表示 0。

因为它是靠触发器状态保存数据,所以读出时一般不会破坏原来的信息,不需要读后恢复,也不需要周期性刷新。这就是 SRAM 快的根本原因。

在访问 SRAM 时,大致流程是:地址线送入地址译码器,选中某一行或某一存储单元;读操作时,存储单元通过位线把数据送到读出放大器,再送到数据线;写操作时,外部数据通过数据线和写控制信号写入被选中的单元。

从做题角度看,SRAM 常考三个点:

第一,SRAM 不需要刷新。

第二,SRAM 速度快,常用作 Cache。

第三,SRAM 每位存储单元晶体管数多,所以成本高、集成度低、容量不容易做得很大。


三、DRAM 的工作原理:用电容“临时存住电荷”

DRAM 全称是 Dynamic RAM,动态随机存储器。这里的“动态”指的是它保存的信息会随时间逐渐丢失,必须周期性刷新。

DRAM 的一个基本存储单元通常由 1 个晶体管和 1 个电容组成,即 1T1C 结构。电容中有电荷,可以表示 1;电荷少或没有电荷,可以表示 0。晶体管相当于一个开关,用来控制这个存储单元是否与位线连通。

因此,DRAM 的本质是:

用电容是否带电来表示二进制信息。

但是电容会漏电。即使不访问,电荷也会慢慢消失,所以 DRAM 必须刷新。并且 DRAM 读操作往往具有破坏性,因为读出过程会改变电容上的电荷状态,所以读出后还需要恢复原来的信息。

这就是 DRAM 比 SRAM 麻烦的地方。

DRAM 的读过程可以粗略理解为:先选中某一行,存储单元中的微弱电荷影响位线电压;由于这个电压变化很小,需要灵敏放大器检测并放大;读出的同时,原单元电荷被扰动,因此还要把信息重新写回去。

所以 DRAM 常见表述是:

DRAM 读出是破坏性读出,读后需要恢复;DRAM 还必须周期性刷新。

这句话在选择题里很常见。


四、存储芯片的基本组成:存储阵列 + 译码 + 控制 + I/O

不管是 SRAM 还是 DRAM,一个存储芯片都不是只有存储单元。它通常包括以下几个部分:

存储阵列是主体,用来真正保存二进制信息。阵列通常按行、列组织,每个交叉位置附近对应一个或多个存储位。

地址译码器根据外部输入的地址选择具体的存储单元、字线或列线。存储容量越大,地址译码越复杂。

读写控制电路根据读信号、写信号、片选信号等决定当前是读操作还是写操作。

I/O 电路负责数据输入输出,包括数据缓冲器、三态门、读出放大器等。

对于 DRAM,还会有更明显的行地址锁存、列地址锁存、刷新控制、灵敏放大器等结构。

可以把存储芯片理解为:

外部给地址,芯片内部译码找到位置;外部给读写控制,芯片决定读出还是写入;数据通过数据引脚输入或输出。

408 中常见的容量题,比如“1024 × 8 位 SRAM 芯片需要多少地址引脚和数据引脚”,本质就是从这个结构来的。

如果芯片容量是 1024 × 8 位,表示有 1024 个存储单元,每个单元 8 位。地址线数量由单元个数决定:

1024 = 210

所以地址线需要 10 根。每次读写一个 8 位字,所以数据线需要 8 根。地址引脚和数据引脚总数至少是:

10 + 8 = 18 根

这里不要把总容量 1024 × 8 = 8192 位直接拿去求地址线。地址线管的是“有多少个可寻址单元”,数据线管的是“每个单元一次输出多少位”。


五、DRAM 为什么要用行列地址:为了减少地址引脚

DRAM 容量通常很大。如果直接把完整地址一次性送入芯片,需要很多地址引脚。为了减少芯片引脚数,DRAM 常采用行列地址复用。

也就是说,一个完整地址被拆成行地址和列地址,先送行地址,再送列地址。它们复用同一组地址引脚。

例如一个 DRAM 芯片内部有 220 个地址位置,如果直接传入完整地址,需要 20 根地址线。但如果把地址分为 10 位行地址和 10 位列地址,那么外部只需要 10 根地址引脚,先传行地址,再传列地址。

这就是 DRAM 中常见的 RAS 和 CAS:

RAS:行地址选通信号,用来锁存行地址。

CAS:列地址选通信号,用来锁存列地址。

所以 DRAM 的典型访问过程可以理解为:

先送行地址,用 RAS 锁存;再送列地址,用 CAS 锁存;行列共同确定具体存储单元。

这也是 DRAM 比 SRAM 控制复杂的一个原因。SRAM 通常可以直接给完整地址,访问过程更简单。

考题里如果问“DRAM 采用地址复用的目的”,优先答:

减少地址引脚数,降低芯片封装成本。

不要答成“提高存储容量”。地址复用不是让同样的存储单元变多,而是让同样容量的芯片所需地址引脚减少。


六、DRAM 的刷新机制:刷新本质是“重新充电”

DRAM 中电容会漏电,所以必须在数据丢失之前把信息重新读出并写回,这个过程叫刷新。刷新不是改写新数据,而是保持原数据。

刷新有几个关键特点。

第一,刷新按行进行。因为 DRAM 的存储阵列按行列组织,刷新时通常一次刷新一整行,而不是一个一个单元刷新。

第二,刷新期间不能正常访问被刷新的存储阵列,因此刷新会占用一定存储器时间。

第三,刷新与 CPU 是否访问该单元无关。即使 CPU 完全不读写主存,DRAM 也必须刷新。

第四,刷新通常由存储器控制器完成,不需要程序员手动控制。

常见刷新方式有三类。

集中刷新是指在一个刷新周期内,集中拿出一段时间连续刷新所有行。它的优点是控制简单,缺点是这段时间内存储器不能正常访问,会产生较长的“死区”。

分散刷新是指把刷新操作分散到每个存储周期中,比如每次正常读写后顺带刷新一行。它的优点是没有明显死区,缺点是每个存储周期都被拉长。

异步刷新,也常叫分布式刷新,是在规定刷新周期内,把各行刷新均匀分散到不同时间点。它综合了集中刷新和分散刷新的特点,是考题中经常认为较合理的一种方式。

可以用一个典型计算来理解。假设 DRAM 有 8192 行,要求 64 ms 内全部刷新一遍,那么平均每隔多久刷新一行?

计算为:

64 ms / 8192 = 7.8125 μs

也就是说,平均大约每 7.8 μs 刷新一行。

这类题的模板是:

每行刷新间隔 = 最大刷新周期 / 行数

注意这里除的是“行数”,不是存储单元总数,也不是总容量位数。


七、DRAM 的阵列设计优化:核心是“大容量下尽量快、尽量省引脚”

DRAM 容量大,如果按最直观的方式设计,地址线多、译码复杂、访问慢。因此 DRAM 会采用一系列阵列设计优化。

最基础的是二维阵列结构。把存储单元排成行和列,可以通过行译码器和列译码器共同选中一个位置。这样比一维线性译码更适合大容量芯片。

其次是行列地址复用。前面已经说过,它的主要目的是减少地址引脚数。这是 DRAM 芯片很重要的硬件特征。

再次是灵敏放大器和行缓冲区。DRAM 单元中的电容很小,读出信号非常弱,必须靠灵敏放大器放大。并且当某一行被激活后,整行数据会进入行缓冲区。之后如果连续访问同一行中的不同列,就可以直接从行缓冲区中取数据,速度会更快。

这一点可以理解为 DRAM 内部存在一种“行缓存”机制。它不是 CPU Cache,但思想类似:利用局部性,尽量让后续访问命中已经打开的行。

再往后就是多 Bank 设计。DRAM 可以划分成多个 Bank,不同 Bank 可以交错工作。一个 Bank 正在预充电或等待时,另一个 Bank 可以进行访问,从而提高整体吞吐率。

所以 DRAM 优化的思路不是把单个电容变得像 SRAM 一样快,而是通过阵列结构、行缓冲、多 Bank、流水化、突发传送等方式提高连续访问效率。


八、DRAM 的访问过程:激活、读写、预充电

理解 SDRAM、DDR 和突发传送之前,最好先理解现代 DRAM 的基本访问动作。

第一步是激活,也就是 Activate。存储器控制器选中某个 Bank 的某一行,把这一整行打开,并送入行缓冲区。

第二步是读或写。此时再根据列地址访问行缓冲区中的某一列或连续若干列。

第三步是预充电,也就是 Precharge。访问结束后,需要关闭当前行,为下一次打开其他行做准备。

所以 DRAM 访问并不是简单地“给一个地址,马上得到数据”。它往往涉及:

打开行 → 访问列 → 关闭行

如果下一次访问仍然在已经打开的同一行,就比较快,这叫行命中。若下一次访问在别的行,就可能要先关闭当前行,再打开新行,延迟更大。

这也是为什么连续地址访问在 DRAM 中更有优势。


九、缓存机制:这里要区分 CPU Cache 和 DRAM 行缓冲

“缓存机制”这个词在这一章里容易混淆,至少有两个层面的含义。

第一个是 CPU Cache。CPU Cache 通常由 SRAM 构成,位于 CPU 和主存 DRAM 之间。它利用程序访问的时间局部性和空间局部性,把主存中最近使用或相邻的数据块复制到 Cache 中。CPU 先访问 Cache,命中则快速得到数据,未命中才访问主存。

所以 SRAM 和 DRAM 在存储层次中的经典分工是:

SRAM 用于 Cache,DRAM 用于主存。

第二个是 DRAM 内部的行缓冲。DRAM 激活某一行后,会把整行送入灵敏放大器/行缓冲区。如果接下来访问同一行的其他列,就不必重新打开行,速度更快。这种机制也利用了空间局部性,但它属于 DRAM 芯片内部访问优化,不等同于 CPU Cache。

考研题如果问“Cache 一般由什么组成”,通常答 SRAM。

如果问“DRAM 中访问同一行连续列为什么快”,则要想到行缓冲和突发传送。


十、突发传送机制:一次给首地址,连续传多个数据

突发传送,也叫 Burst Transfer,核心思想是:不必每传一个数据都重新给完整地址,而是给出一个起始地址后,连续传送一串相邻数据。

这和 Cache 的工作方式密切相关。CPU Cache 和主存之间不是一个字节一个字节地搬,而通常以块为单位搬运。比如 Cache 未命中时,主存会把包含目标地址的一整块数据送入 Cache。这个块常被称为 Cache 块或 Cache line。

因为程序通常具有空间局部性:访问某个地址后,很可能马上访问附近地址。所以一次性连续传输多个相邻数据是划算的。

在 DRAM 中,突发传送尤其适合已经打开某一行之后连续访问多个列地址。SDRAM/DDR SDRAM 都支持突发长度设置,比如连续传 4 个、8 个数据等。

突发传送提高的不是第一个数据的初始访问延迟,而是提高连续数据传输的带宽。换句话说,第一个数据可能仍然要经历行激活、列访问等延迟,但后面的数据可以连续快速输出。

所以考题中如果问突发传送的优势,可以答:

利用空间局部性,减少连续访问时的地址和控制开销,提高存储器带宽,适合 Cache 块传送。


十一、SDRAM:用系统时钟统一控制 DRAM 操作

SDRAM 是 Synchronous DRAM,同步动态随机存储器。它和早期异步 DRAM 的重要区别是:SDRAM 的操作与系统时钟同步,命令、地址、数据都按照时钟节拍组织。

普通 DRAM 更偏向异步控制,通过 RAS、CAS 等信号配合完成访问;SDRAM 则在时钟控制下接收命令,如激活、读、写、预充电、刷新等。

SDRAM 的优点是更适合流水化和高速总线传输。它可以在一个操作等待时安排另一个 Bank 的操作,也可以通过突发传送连续输出数据。

需要注意:SDRAM 仍然是 DRAM,仍然靠电容保存信息,仍然需要刷新。它的“同步”只是控制方式同步,不是说它变成了 SRAM,也不是说不需要刷新。

DDR SDRAM 是 SDRAM 的进一步发展。DDR 的意思是 Double Data Rate,双倍数据率。它可以在时钟上升沿和下降沿都传输数据,因此在同样时钟频率下,理论数据传输率更高。

考研一般不要求深入 DDR 的工程细节,但要知道:

SDRAM 是同步 DRAM;DDR SDRAM 在时钟上升沿和下降沿都传输数据;它们本质上仍属于 DRAM,需要刷新。


十二、SRAM 和 DRAM 的系统比较

SRAM 和 DRAM 的比较是这部分最常考的内容,可以整理成一张表。

比较项目SRAMDRAM
存储原理触发器保存状态电容电荷保存信息
单元结构通常 6T通常 1T1C
是否需要刷新不需要刷新需要周期性刷新
读出是否破坏一般非破坏性读出常为破坏性读出,读后需恢复
速度较慢
集成度
成本
功耗特点单元复杂,静态功耗相对明显单元简单,但刷新带来额外开销
常见用途Cache、高速缓冲主存
控制复杂度较简单较复杂,需要刷新、行列控制等

最稳定的记忆方式是从存储单元出发:

SRAM 一个 bit 用触发器,结构复杂,所以快但贵。

DRAM 一个 bit 用电容,结构简单,所以便宜容量大,但电容漏电,所以要刷新。


十三、这部分常见考法

第一类是概念判断题。比如问 SRAM 是否需要刷新,DRAM 读出是否破坏,Cache 通常由什么构成,主存通常由什么构成。这类题直接套结论。

SRAM 不刷新,DRAM 刷新。Cache 多用 SRAM,主存多用 DRAM。DRAM 读出通常是破坏性读出,读后需要恢复。

第二类是容量、地址线、数据线计算题。比如芯片容量为 32K × 16 位,求地址线和数据线。

32K 表示 32 × 1024 = 32768 = 215 个可寻址单元,所以地址线为 15 根。每个单元 16 位,所以数据线为 16 根。

这类题要抓住:

地址线看“有多少个地址单元”,数据线看“每个地址单元多少位”。

第三类是 DRAM 刷新计算题。比如给出总行数和刷新周期,求刷新间隔;或者给出每次刷新时间,求刷新开销。

基本公式是:

每行刷新间隔 = 最大刷新周期 / 行数

刷新总时间 = 行数 × 每行刷新所需时间

刷新开销比例 = 刷新总时间 / 最大刷新周期

这类题容易错在把“总存储单元数”当成“行数”。

第四类是 DRAM 地址复用题。问为什么 DRAM 要把地址分成行地址和列地址,答案通常是减少地址引脚数。若问行地址和列地址如何确定,则根据阵列规模判断。

比如某 DRAM 有 210 行、210 列,那么完整地址共 20 位,但如果行列地址复用,地址引脚只需 10 根,而不是 20 根。

第五类是突发传送和 Cache 块传输题。看到“连续地址”“块传送”“Cache line”“空间局部性”“带宽”这些关键词,就要想到突发传送。

突发传送适合连续数据,不一定降低第一个数据的访问延迟,但能提高连续数据的传输效率。


十四、最容易混淆的地方

第一,不要把“静态 RAM”理解成“不用供电”。SRAM 只是不需要刷新,只要断电,信息同样会丢失。

第二,不要把“DRAM 动态”理解成“访问速度快”。动态指的是电容电荷会变化,需要刷新,不是说它比 SRAM 更灵活或更快。

第三,不要把 DRAM 的刷新理解成 CPU 执行程序刷新。刷新通常由硬件控制器完成,和程序正常执行不是一个层面的概念。

第四,不要把地址线和数据线混在一起。芯片容量写成 M × W 时,M 决定地址线,W 决定数据线。总位数 M × W 不能直接拿来求地址线。

第五,不要把 SDRAM 当成 SRAM。SDRAM 名字里有 SRAM 的字母组合,但它是 Synchronous DRAM,本质仍然是 DRAM。

第六,不要把 CPU Cache 和 DRAM 行缓冲混为一谈。CPU Cache 是存储层次中的高速缓存,通常由 SRAM 实现;DRAM 行缓冲是 DRAM 芯片内部为了提高行命中访问效率而设计的结构。


十五、这一块可以形成一条复习链

这部分复习时,建议按下面这条逻辑串起来:

先理解存储位:SRAM 用触发器,DRAM 用电容。

再理解存储芯片:大量存储单元组成阵列,通过地址译码和读写控制实现访问。

再理解 DRAM 的特殊问题:电容漏电,所以要刷新;读出扰动电荷,所以读后恢复;容量大,所以行列地址复用。

再理解 DRAM 的优化:二维阵列、行缓冲、多 Bank、同步控制、突发传送。

最后回到存储体系:SRAM 快但贵,用作 Cache;DRAM 慢但容量大,用作主存;Cache 和突发传送共同利用局部性提高访问效率。

这一章真正的考点不在于背很多名词,而在于能从“存储单元结构”推出后面的性质。只要抓住“SRAM = 触发器,DRAM = 电容”这个根,速度、刷新、成本、集成度、用途这些结论基本都能顺着推出来。

一、非易失性存储器先解决什么问题?

在计算机组成原理的存储系统中,存储器可以按是否断电丢失信息分为两大类:

易失性存储器:断电后信息丢失,例如 SRAM、DRAM。

非易失性存储器:断电后信息仍能保持,例如 ROM、Flash、磁盘、固态硬盘等。

这里要先纠正一个容易混淆的点:非易失性存储器不等于“只能读不能写”。“非易失性”强调的是断电后信息是否保留;“只读存储器 ROM”强调的是传统意义上写入不方便、主要用于读出。后来出现的 EEPROM、Flash 都属于非易失性存储器,但它们是可以擦写的,只是写入方式、擦除单位、速度和寿命与 RAM 不同。

在 408 语境下,这一块常考的主线是:

ROM 用于保存固定程序或系统启动程序;Flash 是可电擦写的非易失性半导体存储器;SSD 用 Flash 芯片作为存储介质,通过控制器管理擦写、磨损均衡和地址映射。


二、ROM 的基本特点

ROM 是 Read Only Memory,即只读存储器。传统 ROM 的特点是信息一旦写入后,正常使用过程中主要用于读取,不像 RAM 那样频繁随机读写。

ROM 的核心特点可以概括为以下几个方面。

第一,ROM 是非易失性的。断电后,存储内容不会丢失。这一点是 ROM 与 SRAM、DRAM 的最重要区别。

第二,ROM 读出方便,写入不方便。传统 ROM 在制造时或专门编程时写入数据,普通运行过程中主要读出。因此它适合保存固定不变或很少改变的内容。

第三,ROM 通常用于存放固化程序。比如计算机启动时最早执行的 BIOS/UEFI 固件、嵌入式系统中的启动代码、设备控制程序等,都适合放在 ROM 或类 ROM 的非易失性存储器中。

第四,ROM 随机访问能力通常较强。这里的“ROM”在组成原理中一般是半导体存储器,可以按地址访问,不要把它和光盘 CD-ROM 混在一起。CD-ROM 也是只读介质,但它属于外部存储设备,不是这里讨论的半导体 ROM 芯片主线。

考题中如果问 ROM 的用途,标准表达通常是:

ROM 主要用于存放固定程序、系统引导程序、微程序、固件等,断电后内容不丢失。


三、ROM 的几种类型:从不可改到可电擦写

ROM 不是单一类型,而是一类非易失性半导体存储器。按写入和擦除方式,可以分成几种常见形式。

1. 掩模式 ROM:MROM

MROM 是 Mask ROM,掩模式 ROM。它在芯片制造过程中就把信息写死,出厂后用户不能修改。

它的优点是成本低、可靠性高,适合大批量生产固定内容。缺点是灵活性差,一旦内容设计错误或需要升级,就无法修改。

可以理解为:

MROM = 制造时写入,出厂后不可修改。

这种 ROM 在考研中常作为“真正意义上的只读存储器”出现。

2. PROM:一次可编程 ROM

PROM 是 Programmable ROM,可编程 ROM。它出厂时是空白的,用户可以使用专门设备写入一次。写入后就不能再改。

PROM 的特点是:

可以由用户写一次,但只能写一次。

它比 MROM 灵活,因为不需要在制造芯片时就确定内容;但它仍然不支持反复修改。

3. EPROM:紫外线擦除 ROM

EPROM 是 Erasable Programmable ROM,可擦除可编程 ROM。它可以用紫外线照射来擦除内容,然后再重新写入。

EPROM 的特点是:

可以多次擦写,但擦除需要紫外线,通常要整片擦除,操作不方便。

早期 EPROM 芯片上常有一个透明窗口,用来让紫外线照射芯片内部。

4. EEPROM:电擦除 ROM

EEPROM 是 Electrically Erasable Programmable ROM,电可擦除可编程 ROM。它可以用电信号进行擦除和重写,不需要紫外线。

EEPROM 的特点是:

可以电擦写,通常可按字节或较小单位擦写,灵活性更高,但写入速度较慢,成本相对较高。

它适合保存一些容量不大、需要偶尔修改的配置数据,比如设备参数、固件配置等。

5. Flash:闪存

Flash Memory,闪存,本质上可以看作 EEPROM 的一种发展形式。它也是电可擦写的非易失性半导体存储器,但它通常按块擦除,而不是像普通 EEPROM 那样方便地按字节擦除。

Flash 的特点是:

非易失、可电擦写、擦除通常以块为单位、读速度较快、写入和擦除相对较慢、擦写次数有限。

这也是后面 SSD 的基础。


四、ROM 类型比较表

类型是否可由用户写入是否可擦除擦除方式典型特点
MROM制造时固定成本低,适合大批量固定内容
PROM可以写一次熔丝/反熔丝等方式用户一次编程
EPROM可以多次写入可以紫外线擦除可重写但不方便
EEPROM可以多次写入可以电擦除可按较小单位改写
Flash可以多次写入可以电擦除,通常按块擦除容量大,适合 U 盘、SSD、存储卡

这张表是选择题和判断题的高频内容。尤其要注意:

PROM 只能写一次。

EPROM 用紫外线擦除。

EEPROM 用电擦除。

Flash 也是电擦除,但通常按块擦除,容量更大,适合做大容量存储。


五、Flash 存储器的基本原理与特点

Flash 存储器属于非易失性半导体存储器。它的存储单元一般通过浮栅晶体管或类似结构保存电荷。有没有电荷、或者电荷多少,会影响晶体管的阈值电压,从而表示不同的数据状态。

从考研角度,不必深究器件物理结构,只要抓住几个性质。

第一,Flash 断电后数据不丢失,所以属于非易失性存储器。

第二,Flash 可以电擦写,不需要紫外线。

第三,Flash 读取速度较快,但写入和擦除速度比读取慢。

第四,Flash 擦除通常以块为单位,写入通常以页为单位。

第五,Flash 有擦写寿命限制。每个存储块不能无限次擦除重写,达到一定次数后可靠性会下降。

第六,Flash 写入前通常需要先擦除。也就是说,不能像 SRAM、DRAM 那样简单地直接覆盖某个位置。Flash 中某些位从一种状态变成另一种状态可能可以通过写入完成,但反向变化往往需要先擦除整个块。

因此 Flash 的关键矛盾是:

读很方便,写和擦除比较麻烦;容量可以很大,但擦写寿命有限。

这就解释了为什么 SSD 需要复杂控制器来管理 Flash。


六、NOR Flash 与 NAND Flash

Flash 常见有两大类:NOR Flash 和 NAND Flash。

NOR Flash 的特点是支持较快的随机读取,适合存放启动代码、固件程序等。CPU 可以较方便地从 NOR Flash 中读取指令,因此它常用于嵌入式系统中的程序存储。

NAND Flash 的特点是容量大、成本低、适合顺序读写和块设备存储,但随机访问粒度和控制复杂度不如 NOR Flash。U 盘、存储卡、SSD 大多使用 NAND Flash。

从考研做题角度,可以这样记:

NOR Flash 更适合代码存储和随机读。

NAND Flash 更适合大容量数据存储,如 U 盘、SSD。

如果题目问“SSD 通常采用哪类 Flash”,优先答 NAND Flash。


七、Flash 与 RAM 的区别

Flash 和 RAM 都是半导体存储器,但性质差别很大。

RAM 主要指 SRAM 和 DRAM,特点是可快速随机读写,但断电丢失。Flash 是非易失性存储器,断电保存,但写入和擦除比 RAM 慢,且擦写次数有限。

所以不能因为 Flash 是半导体存储器,就把它当成内存使用。它更常作为外存介质,而不是主存直接替代品。

比较项目SRAM/DRAMFlash
是否易失易失非易失
读写速度读较快,写/擦较慢
是否适合频繁随机写适合不适合频繁小粒度随机写
写入寿命通常不按擦写次数限制理解擦写次数有限
典型用途Cache、主存U 盘、SSD、存储卡、固件

这类比较题容易出判断:“Flash 可以取代 DRAM 作为主存吗?”一般不能简单说可以。Flash 虽然非易失、容量大,但写入速度、擦除机制、寿命、访问延迟等都不适合直接完全替代 DRAM 作为传统主存。


八、固态硬盘 SSD 的基本概念

SSD 是 Solid State Drive,固态硬盘。它是一种外部存储设备,通常使用 NAND Flash 作为主要存储介质。

SSD 之所以叫“固态”,是因为它没有机械运动部件。传统机械硬盘 HDD 依靠磁盘旋转和磁头移动来读写数据;SSD 内部主要由 Flash 芯片和控制器组成,不需要磁头寻道和盘片旋转。

SSD 的基本组成包括:

Flash 存储芯片:真正保存数据。

SSD 控制器:负责地址映射、读写调度、磨损均衡、坏块管理、垃圾回收、纠错等。

缓存:有些 SSD 使用 DRAM 或 SRAM 作为缓存,用来保存映射表或加速数据访问。

接口:如 SATA、PCIe、NVMe 等,用于和主机通信。

在组成原理中,重点不是背接口参数,而是理解:

SSD 是以 Flash 为介质的外存,它比机械硬盘随机访问快,因为没有机械寻道和旋转延迟。


九、SSD 为什么需要控制器?

如果 Flash 像普通 RAM 一样可以随便覆盖写入,那么 SSD 控制器就不需要那么复杂。但 Flash 有几个麻烦特性:

第一,写入前通常要先擦除。

第二,擦除单位是块,写入单位是页,二者粒度不同。

第三,每个块的擦写寿命有限。

第四,Flash 芯片可能存在坏块,使用过程中也可能产生新坏块。

第五,小粒度随机写会带来额外搬移和擦除开销。

因此 SSD 不能直接把“逻辑地址”简单固定对应到某个物理 Flash 单元。它需要控制器在中间做管理。

这就引出几个常见技术:FTL、磨损均衡、垃圾回收、TRIM、坏块管理、纠错码。


十、FTL:把逻辑地址映射到物理 Flash 地址

FTL 是 Flash Translation Layer,闪存转换层。它负责把主机看到的逻辑块地址映射到 SSD 内部真实的 Flash 物理位置。

操作系统以为自己在写某个逻辑地址,比如 LBA 1000。但 SSD 内部可能并不是直接覆盖原来的物理位置,而是把新数据写到另一个空闲页,并把映射表更新为:

LBA 1000 → 新物理页

原来的旧物理页则标记为无效页,等待以后垃圾回收。

这叫异地更新,也可以理解为“写新位置,改映射,不原地覆盖”。

这样做的原因是 Flash 不能像 RAM 那样方便地原地覆盖写入。


十一、磨损均衡:避免某些块被写坏

Flash 块有擦写寿命限制。如果总是反复擦写某几个物理块,这些块会很快损坏,而其他块却很少使用。

磨损均衡,Wear Leveling,就是让擦写操作尽量均匀分布到不同物理块上,避免局部块过早达到寿命上限。

磨损均衡可以分为动态磨损均衡和静态磨损均衡。

动态磨损均衡主要在新写入数据时选择擦写次数较少的块。

静态磨损均衡还会考虑那些长期不变的冷数据,把冷数据适当搬移,让原来占着低磨损块的冷数据腾出空间,从而让所有块磨损更均匀。

考研一般不要求展开到这么细,但需要知道:

SSD 需要磨损均衡,是因为 Flash 的擦写次数有限。


十二、垃圾回收:整理无效页,腾出可用块

由于 SSD 常采用异地更新,旧数据不会马上被覆盖,而是变成无效页。随着写入次数增加,一个块中可能同时有有效页和无效页。

但是 Flash 擦除必须按块进行,不能只擦除某几个无效页。所以 SSD 控制器会执行垃圾回收:

先把某个块中的有效页搬到其他位置,再擦除整个块,使这个块重新变为空闲块。

垃圾回收会带来额外写入,这叫写放大。也就是说,主机写入一份数据,SSD 内部可能需要搬移更多数据,实际写入量大于主机写入量。

所以 SSD 的性能和寿命不仅取决于 Flash 芯片本身,也取决于控制器算法。


十三、TRIM:告诉 SSD 哪些数据已经无效

操作系统删除文件时,传统上只是修改文件系统元数据,标记这些空间可重用,并不一定马上把数据真正清除。对于机械硬盘,这通常问题不大。

但对 SSD 来说,如果 SSD 不知道哪些逻辑块已经无效,就可能在垃圾回收时把已经删除的数据也当作有效数据搬来搬去,降低效率。

TRIM 命令的作用就是:

操作系统通知 SSD:这些逻辑块已经不再使用,可以在内部回收时当作无效数据处理。

TRIM 可以减少不必要的数据搬移,提高垃圾回收效率,降低写放大,有助于维持 SSD 性能和寿命。


十四、SSD 与机械硬盘 HDD 的比较

SSD 和 HDD 都是外存,但底层原理差别很大。

HDD 是磁表面存储器,依靠磁头寻道、盘片旋转和扇区读写。它有机械部件,所以访问时间中包含寻道时间和旋转等待时间。随机访问性能受机械运动限制明显。

SSD 使用 Flash 芯片,没有机械运动部件,因此随机访问延迟远小于 HDD,抗震性也更好,噪声更低,功耗通常也较低。

但是 SSD 也有自己的问题,比如写入前擦除、擦写寿命限制、垃圾回收导致性能波动、数据恢复难度较高、成本相对较高等。

比较项目HDDSSD
存储介质磁盘盘片NAND Flash
是否有机械部件
随机访问性能较差较好
顺序读写性能依型号而定通常较好
抗震性较弱较强
噪声有机械噪声基本无噪声
写入寿命问题不按擦写次数理解Flash 擦写次数有限
主要管理问题寻道、旋转调度等FTL、磨损均衡、垃圾回收、坏块管理

408 中如果问 SSD 为什么随机访问性能好,答案不要写成“转速快”。SSD 没有盘片旋转,也没有磁头寻道,这是关键。


十五、非易失性存储器在存储层次中的位置

在计算机存储系统中,可以粗略形成这样的层次:

寄存器:最快,容量最小,位于 CPU 内部。

Cache:通常由 SRAM 构成,速度快,容量较小。

主存:通常由 DRAM 构成,容量较大,断电丢失。

辅助存储器:如 SSD、HDD,容量更大,非易失,速度低于主存。

ROM/Flash 固件存储:用于保存启动程序、固件、配置等,非易失。

这里要注意,ROM 和 SSD 都是非易失性的,但它们在系统中的角色不同。

ROM 更强调固化程序、启动代码、固件。

SSD 更强调大容量外部存储,用于保存操作系统、应用程序、文件数据等。

Flash 既可以用作固件存储,也可以作为 SSD、U 盘、存储卡的介质。


十六、常见考点与易错点

第一,ROM 是非易失性的,RAM 通常是易失性的。这里的 RAM 包括 SRAM 和 DRAM。不要因为 SRAM 有“静态”二字,就认为它断电不丢失。SRAM 断电同样丢失。

第二,PROM 只能写一次。EPROM 可以擦除后重写,但擦除方式是紫外线。EEPROM 和 Flash 都可以电擦除。

第三,Flash 不是普通 RAM。它虽然可以读写,但写入和擦除机制复杂,不能像 DRAM 一样直接随机覆盖写入。

第四,Flash 擦除通常按块进行,写入通常按页进行。这个粒度差异是 SSD 控制器复杂的根源之一。

第五,SSD 用的是 Flash,不是 SRAM,也不是 DRAM。SSD 中可能有 DRAM 缓存,但它的主要存储介质是 NAND Flash。

第六,SSD 随机访问快的原因是没有机械寻道和旋转等待,而不是因为它完全没有访问延迟。

第七,SSD 也需要管理寿命。磨损均衡的原因是 Flash 擦写次数有限;垃圾回收的原因是异地更新和块擦除机制;TRIM 的作用是通知 SSD 哪些逻辑块已经无效。


十七、这一块可以这样记

这部分最适合按演化关系记忆:

最早的 ROM:内容固定,主要读出,断电不丢失。

PROM:用户可以写一次。

EPROM:可以擦除重写,但要紫外线。

EEPROM:可以电擦除重写。

Flash:电擦除,容量大,通常按块擦除,适合做 U 盘、SSD、存储卡。

SSD:用 NAND Flash 做介质,再加控制器,把复杂的 Flash 擦写管理封装成操作系统看到的块设备。

最后形成一句总复习结论:

ROM/Flash/SSD 都属于非易失性存储相关内容;ROM 偏固化程序,Flash 是可电擦写的大容量非易失半导体存储器,SSD 则是在 NAND Flash 基础上通过控制器实现的大容量高速外存。

一、先理解“多模块存储器”为什么要出现

在计算机组成原理中,主存并不一定只由一个存储模块构成。为了扩大容量、提高带宽,主存常被划分成多个存储模块,也叫多个存储体、多个 Bank。

假设有 4 个存储模块 M0、M1、M2、M3,每个模块都能独立完成一次读写。如果只用一个模块,那么连续读多个地址时,只能一个一个等;如果能让多个模块轮流工作,就可以在一个模块还没完成访问时,让另一个模块开始访问,从而提高连续访问速度。

因此,多模块存储器的核心问题就是:

地址如何分配到不同模块中?

这就引出两种典型方式:

连续编址方式,也叫顺序编址方式、高位交叉编址方式。

交叉编址方式,通常指低位交叉编址方式。

这两个名字容易混,但本质区别很简单:

连续编址:相邻地址大多放在同一个模块中。

交叉编址:相邻地址依次分布到不同模块中。


二、连续编址方式:一个模块装一整段连续地址

连续编址方式的思想是:先把一个模块的地址范围填满,再使用下一个模块。

假设有 4 个模块,每个模块有 8 个存储单元,总容量为 32 个存储单元,地址范围为 0~31。

采用连续编址时,地址分配如下:

地址范围所在模块
0~7M0
8~15M1
16~23M2
24~31M3

也就是说,M0 存放最前面一段连续地址,M1 存放下一段连续地址,M2 再存放下一段,依此类推。

如果 CPU 连续访问地址 0、1、2、3,那么它们都在 M0 中。这样虽然地址分配很直观,但连续访问时无法充分利用多个模块的并行性,因为这些地址集中在同一个模块里。

所以连续编址方式的特点是:

地址组织简单,扩容直观,但连续访问时并行性较差。


三、连续编址方式的地址划分

假设主存总地址有 n 位,共有 m 个模块,且 m = 2k。那么需要 k 位来表示模块号,剩下 n – k 位表示模块内地址。

在连续编址方式中:

高位地址表示模块号,低位地址表示模块内地址。

例如总共有 32 个地址,需要 5 位地址,写作 A4 A3 A2 A1 A0。现在有 4 个模块,4 = 22,所以需要 2 位表示模块号,每个模块有 8 个单元,需要 3 位表示模块内地址。

连续编址时:

地址格式:模块号 + 模块内地址

A4 A3 | A2 A1 A0
 模块号 | 模块内地址

例如地址 13:

13 的二进制是 01101。

按连续编址划分:

01 | 101

高 2 位 01 表示模块 M1,低 3 位 101 表示模块内地址 5。

所以地址 13 在 M1 的第 5 个单元中。

从公式看:

模块号 = 地址 / 每个模块的容量
模块内地址 = 地址 % 每个模块的容量

对于上面的例子,每个模块容量为 8:

地址 13:

模块号 = 13 / 8 = 1
模块内地址 = 13 % 8 = 5

所以地址 13 位于 M1,模块内地址为 5。


四、交叉编址方式:相邻地址分散到不同模块

交叉编址方式的思想是:把连续地址轮流分配给不同模块。

仍然假设有 4 个模块 M0、M1、M2、M3,总地址范围为 0~31。采用交叉编址时,地址分配如下:

地址所在模块
0M0
1M1
2M2
3M3
4M0
5M1
6M2
7M3
8M0
9M1

可以看到,相邻地址被分散到了不同模块中。

如果 CPU 连续访问地址 0、1、2、3,那么访问顺序是:

0 → M0
1 → M1
2 → M2
3 → M3

这样四个模块可以交替工作。M0 正在访问地址 0 时,M1 可以开始准备访问地址 1,M2 可以准备访问地址 2,M3 可以准备访问地址 3。只要安排得当,就能提高连续读写的吞吐率。

所以交叉编址方式的核心优势是:

适合连续地址访问,可以提高存储器带宽。


五、交叉编址方式的地址划分

在交叉编址方式中:

低位地址表示模块号,高位地址表示模块内地址。

仍然使用 32 个地址、4 个模块的例子。总地址 5 位,4 个模块需要 2 位模块号,每个模块 8 个单元,需要 3 位模块内地址。

交叉编址时:

地址格式:模块内地址 + 模块号

A4 A3 A2 | A1 A0
模块内地址 | 模块号

例如地址 13:

13 的二进制是 01101。

按交叉编址划分:

011 | 01

低 2 位 01 表示模块 M1,高 3 位 011 表示模块内地址 3。

所以地址 13 在 M1 的第 3 个单元中。

从公式看:

模块号 = 地址 % 模块数
模块内地址 = 地址 / 模块数

对于 4 个模块:

地址 13:

模块号 = 13 % 4 = 1
模块内地址 = 13 / 4 = 3

所以地址 13 位于 M1,模块内地址为 3。

这和连续编址的结果不同。连续编址下,地址 13 在 M1 的第 5 个单元;交叉编址下,地址 13 在 M1 的第 3 个单元。


六、连续编址与交叉编址的直观对比

还是用 4 个模块、每个模块 8 个单元来对比。

连续编址:

模块存放的地址
M00, 1, 2, 3, 4, 5, 6, 7
M18, 9, 10, 11, 12, 13, 14, 15
M216, 17, 18, 19, 20, 21, 22, 23
M324, 25, 26, 27, 28, 29, 30, 31

交叉编址:

模块存放的地址
M00, 4, 8, 12, 16, 20, 24, 28
M11, 5, 9, 13, 17, 21, 25, 29
M22, 6, 10, 14, 18, 22, 26, 30
M33, 7, 11, 15, 19, 23, 27, 31

这个表非常重要。看懂这个表,基本就不会混了。

连续编址是“一段地址归一个模块”。

交叉编址是“相邻地址轮流归不同模块”。


七、为什么交叉编址能提高速度?

存储器访问有一个重要概念:存储周期。一个模块完成一次完整读写需要一定时间。在这个时间内,这个模块不能立即再访问下一次。

假设某个存储模块的存储周期是 T,数据总线每隔 τ 可以传送一个字。若只用一个模块,连续访问多个字时,必须等同一个模块恢复好才能继续访问。

但如果有多个模块,并且连续地址分布在不同模块中,就可以流水式访问。

例如有 4 个模块,连续访问地址 0、1、2、3、4、5、6、7:

地址 0 → M0
地址 1 → M1
地址 2 → M2
地址 3 → M3
地址 4 → M0
地址 5 → M1
地址 6 → M2
地址 7 → M3

当 M0 访问地址 0 后,需要等待一个存储周期才能再次访问。但在 M0 恢复期间,M1、M2、M3 可以分别访问地址 1、2、3。等轮回到地址 4 时,M0 可能已经恢复,可以继续访问。

所以交叉编址不是让单个模块变快,而是让多个模块交替工作,提高连续访问的吞吐率。

考研中常见表述是:

低位交叉编址可以实现多模块流水并行访问,提高存储器带宽。


八、连续编址为什么不利于连续访问?

连续编址下,连续地址大多在同一个模块中。

例如连续访问地址 0、1、2、3,它们都在 M0 中:

地址 0 → M0
地址 1 → M0
地址 2 → M0
地址 3 → M0

这就导致 M0 被连续请求,而 M1、M2、M3 空闲。由于同一个模块不能无限连续访问,所以多个模块的并行性没有发挥出来。

只有当访问跨越模块边界时,比如从地址 7 访问到地址 8,才从 M0 变到 M1。但这种切换太少,不适合提高连续访问带宽。

因此连续编址更像是容量扩展方式,交叉编址更像是带宽优化方式。


九、连续编址与交叉编址的本质区别:看模块号来自高位还是低位

这类题最有效的判断方法是看“模块号由地址的哪几位决定”。

如果模块号由高位地址决定,就是连续编址,也叫高位交叉编址。

如果模块号由低位地址决定,就是交叉编址,也叫低位交叉编址。

可以这样记:

高位决定模块号 → 连续编址 → 相邻地址在同一模块 → 并行性差

低位决定模块号 → 交叉编址 → 相邻地址在不同模块 → 并行性好

为什么低位决定模块号时,相邻地址会落到不同模块?

因为连续地址每加 1,最低位变化最频繁。若低位作为模块号,那么地址每加 1,模块号就跟着变化,于是相邻地址会轮流进入不同模块。

为什么高位决定模块号时,相邻地址会留在同一模块?

因为高位变化慢。只有当低位全部变化完,地址跨过一大段范围时,高位模块号才改变。所以一个模块会保存一整段连续地址。


十、常见计算题怎么做?

这类题通常给出模块数、每个模块容量、地址,然后问该地址位于哪个模块、模块内地址是多少。

做题时先判断编址方式。

例 1:连续编址

有 4 个模块,每个模块 8 个字,按连续编址。问地址 22 位于哪个模块,模块内地址是多少?

连续编址公式:

模块号 = 地址 / 每模块容量
模块内地址 = 地址 % 每模块容量

代入:

模块号 = 22 / 8 = 2
模块内地址 = 22 % 8 = 6

所以地址 22 位于 M2,模块内地址为 6。

也可以看地址范围:

M0:0~7
M1:8~15
M2:16~23
M3:24~31

地址 22 在 16~23 之间,所以属于 M2,偏移为 22 – 16 = 6。

例 2:交叉编址

有 4 个模块,每个模块 8 个字,按交叉编址。问地址 22 位于哪个模块,模块内地址是多少?

交叉编址公式:

模块号 = 地址 % 模块数
模块内地址 = 地址 / 模块数

代入:

模块号 = 22 % 4 = 2
模块内地址 = 22 / 4 = 5

所以地址 22 位于 M2,模块内地址为 5。

注意这里的除法取整数商。


十一、与“高位交叉、低位交叉”的对应关系

有些教材或题目不说“连续编址”和“交叉编址”,而说“高位交叉编址”和“低位交叉编址”。

它们的对应关系一般是:

说法一说法二模块号由谁决定地址分布特点
连续编址高位交叉编址高位地址一个模块存一段连续地址
交叉编址低位交叉编址低位地址连续地址分布在不同模块

严格说,“高位交叉”这个名字容易让人误以为也有很强的交叉效果。但从地址分布上看,它就是顺序方式、连续编址方式。408 做题时更重要的是掌握实际地址分布,而不是纠结名称。


十二、这部分最常见的易错点

第一,容易把“模块数”和“每个模块容量”混在一起。连续编址时,要用“每个模块容量”去除地址;交叉编址时,要用“模块数”去模地址。

第二,容易把高位和低位记反。连续编址是高位作为模块号;交叉编址是低位作为模块号。

第三,容易以为交叉编址能减少单个存储模块的访问时间。它并不能让单个模块变快,而是让多个模块并行交替工作,提高连续访问吞吐率。

第四,容易以为交叉编址对所有访问模式都一定有效。它主要适合连续地址访问。如果访问地址本身随机,或者频繁落入同一个模块,效果就会下降。

第五,容易忘记交叉编址和 Cache 块传送、指令顺序取指有关系。程序常常顺序取指、顺序访问数组,这些都是连续地址访问,所以低位交叉编址能发挥作用。


十三、快速记忆方法

这部分可以用一句话记:

连续编址看“段”,交叉编址看“轮”。

连续编址是:

M0 放一段,M1 放一段,M2 放一段……

交叉编址是:

M0、M1、M2、M3 轮流放连续地址……

再配合两个公式:

连续编址:
模块号 = 地址 / 每模块容量
模块内地址 = 地址 % 每模块容量

交叉编址:
模块号 = 地址 % 模块数
模块内地址 = 地址 / 模块数

最后再记住考点结论:

连续编址结构简单,便于容量扩展,但连续访问并行性差。

交叉编址适合连续访问,可以让多个模块交替工作,提高存储器带宽,是多体并行存储器提高速度的常用方式。

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇