【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

相关推荐
wanzhong233312 小时前
ArcGIS学习-19 实战-表面分析
学习
我命由我1234512 小时前
Photoshop - Photoshop 创建文档
学习·ui·课程设计·设计·photoshop·ps·美工
@ZzHhXx13 小时前
嵌入式学习---(硬件)
学习
励志不掉头发的内向程序员13 小时前
C++进阶——多态
开发语言·c++·学习
西猫雷婶14 小时前
scikit-learn/sklearn学习|广义线性回归损失函数的基本表达式
深度学习·神经网络·学习·机器学习·线性回归·scikit-learn·概率论
Lynnxiaowen14 小时前
今天继续学习shell脚本
linux·运维·学习·云计算·bash
落羽的落羽15 小时前
【C++】C++11的包装器:function与bind简介
c++·学习
sucool_lb15 小时前
GEM5学习(5): ARM 架构功耗仿真
arm开发·学习
尚久龙15 小时前
安卓学习 之 图片控件和图片按钮
android·java·学习·手机·android studio·安卓
守.护16 小时前
云计算学习笔记——HTTP服务、NFS服务篇
笔记·学习·云计算