【DDR 内存学习专栏 1.4 -- DDR 的 Bank Group】

文章目录

Bankgroup

Bankgroup是DDR4及后续标准(DDR5)中引入的一个更高层次的组织结构。它将多个Bank组合在一起形成一个Bankgroup,目的是为了进一步提高内存访问的并行性和带宽。

我们每次发送的读写命令都是操作的各个颗粒里面同一个位置的bank。比如chip0的bank3,chip1的bank3,chip2的bank3...

DDR的bankgroup可以理解为是将颗粒分成了group进行操作,也可以抽象成是把黑色颗粒chip内又独立成了各个单独的小颗粒,即各个bankgroup。

Bankgroup 与 Bank 的关系

层级关系:Bankgroup包含多个Bank,可以理解为Bank的上一级组织结构

  • 内存芯片 → Bankgroups → Banks → 行/列

访问特性

  • 同一Bankgroup内的Bank共享某些资源
  • 不同Bankgroup之间的操作可以更高程度地并行
  • 访问不同Bankgroup的延迟小于访问同一Bankgroup内不同Bank的延迟

设目的

  • 减少Bank冲突
  • 提高命令总线利用率
  • 增加并行数据访问能力

DDR4 中的 Bankgroup

典型配置: 4个Bankgroup,每个Bankgroup 包含 4个Bank (标记为BG0-BG3)

不同 Bankgroup 可以同时激活不同的行

同一Bankgroup内的Bank共享行激活资源

DDR4-3200 8Gb芯片为例

组织结构

如上图所示:

  • 4个Bankgroup(BG0-BG3)
  • 每个Bankgroup包含4个Bank
  • 共16个Bank(4BG×4B)
访问场景

场景1:连续访问BG0-Bank0和BG1-Bank0

  • 可以快速连续执行,因为属于不同Bankgroup
  • 几乎无额外延迟

场景2:连续访问BG0-Bank0和BG0-Bank1

  • 需要额外延迟(tCCD_L)
  • 因为属于同一Bankgroup,共享资源

性能影响

优化内存访问模式应尽量跨Bankgroup访问

操作系统和内存控制器会尽量将数据分布在不同的Bankgroup

实际应用示例

当CPU需要读取大量连续数据时,内存控制器会将数据分布到不同的Bankgroup中。例如:

  • 地址A: BG0-Bank2
  • 地址A+64B: BG1-Bank3
  • 地址A+128B: BG2-Bank1
  • 地址A+192B: BG3-Bank0

这样安排可以实现几乎并行的数据读取,大大提高内存带宽利用率。

推荐阅读

https://www.elecfans.com/consume/1958193.html

相关推荐
有个人神神叨叨7 分钟前
Agent 记忆学习笔记-1.1
笔记·学习
俏皮小混子1 小时前
山东大学软件学院项目实训-创新实训-计科智伴(五)——个人博客(从接口对接到边界问题修复的完整记录)
笔记·学习·状态模式·山东大学
AugustRed1 小时前
Flyway 数据库版本迁移 零基础完整学习文档
数据库·学习
我的xiaodoujiao1 小时前
API 接口自动化测试详细图文教程学习系列23--结合Pytest框架使用4-前后置处理
python·学习·测试工具·pytest
USC-XiangLuXun1 小时前
局部科技小创新是有意义的
科技·学习·生活
Upsy-Daisy1 小时前
IOTA 学习笔记(三):IOTA 的技术演进路线
笔记·学习
有个人神神叨叨1 小时前
Agent Memory 学习笔记-1.0
笔记·学习
一只肥瘫瘫2 小时前
STM32 程序升级学习笔记:Bootloader、IAP 与串口升级流程
笔记·stm32·学习
qq_571099352 小时前
学习周报四十七
学习
凉、介2 小时前
深入理解 ARMv8-A|异常/中断处理
笔记·学习·嵌入式·arm