双端口RAM与多模块存储器,一文讲透“并行”的艺术
摘要/导语
上一期我们搞懂了SRAM和DRAM的区别(<点击查看上期>),也回顾了ROM的前世今生(<点击查看上上期>)。但还有一个灵魂拷问:CPU的速度是法拉利,内存如果是自行车怎么办?
今天这篇,我们不谈芯片材质,只谈架构设计。带你解锁“提升主存速度” 的两大杀手锏——双端口RAM和多模块存储器。文末附带经典408真题,建议反复研读!
🚀 正文内容
⏱️ 前置知识:什么是“存取周期 T”?
在开始提速之前,我们必须先理解一个拦路虎:存取周期T TT。
很多同学容易混淆“存取时间”和“存取周期”。我们可以把它想象成去银行柜台办业务:
- 存取时间 (r rr):你坐在柜台前,柜员帮你办理业务的时间(比如数钱、敲键盘)。
- 恢复时间:你办完走了,柜员需要整理桌面、叫下一个号、系统刷新状态的时间。
- 存取周期 (T TT)=存取时间 (r rr)+恢复时间。
💡 划重点:
只有等整个周期T TT结束,存储器才能响应下一次请求。如果CPU想连续读写,必须得等这个“冷却CD”。为了让CPU少等一会儿,工程师们想了两个绝招!
🛠️ 第一招:双端口 RAM —— “左右互搏”术
普通的RAM就像只有一扇门的房间,一次只能进一个人(一个CPU)。而双端口RAM,顾名思义,就是给存储体装了两套独立的读写电路(左端口和右端口)。
这就好比一家餐厅开了两个大门,支持两个CPU同时访问!
🤔 它能同时干嘛?(和谐共处)
- ✅各玩各的:左边读A单元,右边写B单元。(完全没问题,井水不犯河水)
- ✅一起看:左边读A单元,右边也读A单元。(也没问题,大家只是看看,不破坏东西,数据是稳定的)
❌ 它不能干嘛?(冲突时刻)
- ❌抢地盘(写-写冲突):左边要写A单元,右边也要写A单元。(这就打架了!数据到底听谁的?)
- ❌边看边改(读-写冲突):左边在读A单元,右边突然要改写A单元。(读到的数据可能是旧的,也可能是写到一半的乱码)。
⚠️ 冲突了怎么办?
这时候硬件逻辑会介入,发出一个“BUSY”信号。
- 通常原则是:“写优先”或者“先来后到”。
- 结果就是:其中一个CPU的访问端口会被暂时关闭,必须等待另一个操作完成后才能继续。
🎓 考点提炼:
双端口RAM虽然有两个口,但并不是所有时候都能并行。只有在访问不同存储单元,或者同时读同一单元时,才是真正的并行。
🏗️ 第二招:多模块存储器 —— “人多力量大”
既然单个存储器慢,那我们就用多个存储器拼起来!这就是多模块存储器。这里分为两种流派:单体多字和多体并行。
1. 单体多字存储器:一次拿一摞![]()
这种方案比较简单粗暴。
- 原理:虽然还是一个存储体,但我把数据线加宽!以前一次读1个字(比如32位),现在我一次并行读出m mm个连续的字。
- 代价:总线宽度也要扩展为m mm个字宽。
- 比喻:以前你去取快递,一次拿一个盒子;现在给你换了一辆大卡车,一次拉走一排盒子。
2. 多体并行存储器:真正的“流水线”![]()
这是考试的重头戏!它有多个独立的存储模块(Module 0, Module 1…),每个模块都有自己的地址寄存器和读写电路。
这里涉及到一个关键概念:编址方式。
(1) 高位交叉编址(顺序编址)![]()
- 怎么分:地址的高位决定去哪个模块,低位决定模块内的位置。
- 效果:Module 0 存 0~1023号,Module 1 存 1024~2047号…
- 评价:这本质上只是扩大了容量,并没有提高速度。因为CPU通常是顺序执行指令的(0, 1, 2, 3…),这意味着CPU会一直盯着 Module 0 猛操,其他模块都在围观。实际效果相当于单纯的扩容。
(2) 低位交叉编址(多体并行,重点!)![]()
- 怎么分:地址的低位决定去哪个模块。
- 效果:
- 地址0 -> Module 0
- 地址1 -> Module 1
- …
- 地址m -> Module 0 (轮回来了!)
- 优势:当CPU连续读取指令或数据时(0, 1, 2, 3…),它会依次激活不同的模块。
- t 1 t_1t1时刻:启动 Module 0
- t 2 t_2t2时刻:启动 Module 1 (此时 Module 0 正在恢复中,互不干扰)
- …
- 结论:微观上,每个模块还是串行工作的;但在宏观上,每隔T / m T/mT/m的时间就能吐出一个数据,实现了流水线的无缝衔接!
🧮 黄金公式(必背):
要想流水线不间断,存储模块数m mm必须满足:
m ≥ T r m \ge \frac{T}{r}m≥rT
即:模块数量≥ \ge≥存取周期 / 存取时间。
如果m mm太小,前面的模块还没恢复好,新的请求又来了,流水线就会断档(气泡)。
📝 总结一张图
| 特性 | 双端口 RAM | 单体多字 | 多体并行 (低位交叉) |
|---|---|---|---|
| 核心思路 | 增加接口,空间并行 | 增加带宽,单次吞吐大 | 轮流启动,时间重叠 |
| 适用场景 | 双CPU共享内存 | 向量处理机 | 通用高性能计算机 |
| 冲突处理 | BUSY信号挂起 | 无 | 只要m ≥ T / r m \ge T/rm≥T/r就不冲突 |
🔥 实战演练:408 & 高校期末真题
【真题 1】(2015年408统考真题·单选)
某计算机存储器按字节编址,采用低位多体交叉编址方式,由4个存储体组成,设每个存储体的存取周期为200ns,则连续读取4个字所需的最短时间为?
A. 200ns
B. 400ns
C. 500ns
D. 800ns
💬 解析:
看到“低位多体交叉”,马上想到流水线!
标准答案选 A (200ns)。
理由:在多体并行存储器中,若模块数m mm足够多,使得流水线不间断,那么在一个存取周期T TT内,可以并行地读出m mm个字。所以读4个字(刚好等于模块数)的时间理论上等于一个存取周期T TT。
【真题 2】(某高校期末题·判断)
双端口存储器之所以能提高速度,是因为它有两个端口,可以同时读写同一个存储单元。
( )
💬 解析:
错 (×)。
根据定义:双端口RAM不能同时写(或一读一写)同一个单元。如果发生这种情况,会产生冲突,导致其中一个端口暂停(BUSY),反而降低了效率。它提速的前提是访问不同的单元。
【真题 3】(概念填空)
为了提高存储器的带宽,可以采用多体并行存储器。其中______编址方式主要用于扩大存储容量,而______编址方式可以提高存储器的存取速度。
💬 解析:
第一空填:高位交叉(顺序编址)。
第二空填:低位交叉(多体并行)。
💬 互动话题
你觉得现在的电脑内存(DDR4/DDR5)用的是哪种技术更多呢?欢迎在评论区留言讨论!如果觉得这篇文章对你有帮助,别忘了点赞+在看,你的支持是我更新的最大动力!