首页/计算机组成原理/存储器/双端口RAM和多模块存储器 🔗 在 Obsidian 中打开
计算机组成原理 · 存储器

双端口RAM和多模块存储器

重要度 ⭐⭐⭐⭐存储器层次结构多模块存储器交叉存储顺序存储带宽存储器
速查
双端口 RAM两组独立端口可同时访问;多模块存储器用高位交叉(顺序)或低位交叉(交叉)编址提高带宽。低位交叉使连续地址分布在不同模块,可并行访问,大幅提升带宽。

速查

项目
双端口 RAM两个独立端口,可同时访问
多模块存储器高位交叉 / 低位交叉编址
低位交叉连续地址分布在不同模块,可并行

概述

单体单端口存储器每次只能进行一次访问,限制了带宽。双端口 RAM多模块存储器通过并行访问提高带宽,是解决 CPU 与存储器速度不匹配的重要手段。

双端口 RAM

  • 有两组完全独立的地址线、数据线和控制线
  • 两个端口可同时访问不同存储单元(同时读,或一个读一个写)

冲突处理

当两端口同时访问同一地址时:用 BUSY 信号延迟一方、或按优先级仲裁;两端口同时写同一地址会产生数据冲突(必须避免)。

应用:双核 CPU 共享数据、CPU 与 DMA 共享内存、多处理器通信。

多模块存储器

单体存储器带宽受限,多模块并行工作可提高带宽。带宽 = 数据宽度 $\times$ 模块数 / 存取周期。

顺序编址方式(Sequential)

地址高位选模块,低位选模块内地址;连续地址分布在同一模块

模块0:0, 1, 2, ..., m-1
模块1:m, m+1, ..., 2m-1
模块2:2m, 2m+1, ..., 3m-1
...
总地址 = [模块号(高)][模块内地址(低)]

连续访问同一模块 → 无并行;跨模块访问才可并行。适合随机访问。

交叉编址方式(Interleaved)⭐

地址低位选模块,高位选模块内地址;连续地址分布在不同模块

模块0:0, 4, 8, 12, ...
模块1:1, 5, 9, 13, ...
模块2:2, 6, 10, 14, ...
模块3:3, 7, 11, 15, ...
总地址 = [模块内地址(高)][模块号(低)]

连续访问不同模块 → 可并行,大幅提升带宽,适合突发访问。理想带宽 = m × (数据宽度 / T)。

例题4 模块、存取周期 200ns、总线周期 50ns:连续访问地址 0,1,2,3… 每 50ns 可访问一个地址,带宽提升 4 倍。

两种编址方式对比

特性顺序编址交叉编址
模块选择高位地址低位地址
连续地址同一模块不同模块
并行性
适合场景随机访问顺序 / 突发访问
冲突概率

多体并行存储器

高位交叉(顺序):地址格式 [模块号(高)][模块内地址(低)],高位译码选模块。

低位交叉(交叉)⭐:地址格式 [模块内地址(高)][模块号(低)],低位直接选模块。

实际应用

  • 现代内存条:DDR 多 Bank(DDR4/DDR5 有 16 个 Bank)结构,Bank 间可交叉访问
  • Cache 行填充:miss 时从主存取整行,交叉编址加速突发传输
  • NUMA 架构:每 CPU 有本地内存,远程内存延迟更高

存储器层次结构中的带宽匹配

CPU ←→ L1 ←→ L2 ←→ L3 ←→ 主存 ←→ 磁盘
快                                          慢
小                                          大
贵                                          便宜

易错点

必记
  1. 交叉编址用低位选模块,顺序编址用高位选模块
  2. 交叉编址的并行性要求访问地址连续且跨模块
  3. 双端口 RAM 同时写同地址会产生冲突
  4. 模块数通常是 2 的幂次(4 / 8 / 16)
  5. 实际带宽达不到理论值(有映射和冲突开销)
  6. 低位交叉编址比高位交叉编址性能好
  7. 存取周期 $\neq$ 总线传输周期(存取周期更长)

记忆卡片

交叉编址用什么位选模块?
低位地址选模块,连续地址分到不同模块。
顺序编址适合什么访问?
随机访问(连续地址挤在同一模块,无并行)。
双端口 RAM 同时写同地址会怎样?
产生数据冲突,必须避免(用 BUSY / 优先级)。
交叉编址带宽理想提升几倍?
m 个模块理想下提升约 m 倍(每 τ 访问一个)。
模块数为何常取 2 的幂?
方便用低位地址直接译码选择模块。
存取周期与总线传输周期关系?
存取周期更长;交叉编址靠 τ = T/m 重叠掩盖。

交互动画 · 编址方式与模块映射

地址 0 – 15(点击查看映射) 存储模块
选择编址方式并点击地址,查看它映射到哪个模块
顺序:模块 = 地址 / 4 | 交叉:模块 = 地址 mod 4

相关知识点

sram-and-dram dual-port-ram-and-multi-module

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。