当前位置: 首页 > news >正文

内存中的“BANK”

一、BANK的定义与物理结构
  1. 基本概念
    BANK(存储体) 是内存芯片内部的一个逻辑或物理分区,每个BANK由存储单元阵列、地址解码电路和缓冲器组成,用于分块管理内存操作。

    • 作用:通过并行操作减少访问冲突,提升内存吞吐量。

  2. 物理实现

    • DRAM BANK结构

      • 存储阵列:由行(Row)和列(Column)组成的电容矩阵。

      • 行解码器:激活特定行(行地址)。

      • 灵敏放大器:读取时放大电容电荷信号。

      • 列解码器:选择目标列(列地址)。

    • 典型BANK数量

      • DDR4:16-32个BANK(分4-8组BANK Group)。

      • GDDR6:16-32个独立BANK。


二、BANK的核心意义
  1. 提升并行性与带宽

    • 并行操作:多个BANK可同时执行激活、读写或预充电操作。

    • 带宽增益公式
      带宽提升倍数 ≈ BANK数量 / 平均访问间隔周期
      (例如:4个BANK交错访问,带宽提升3-4倍)

  2. 减少访问延迟

    • 隐藏预充电时间(tRP):当一个BANK预充电时,其他BANK可继续操作。

    • Bank Interleaving(交错访问):轮流访问不同BANK,减少行冲突。

  3. 降低功耗

    • 局部激活:仅激活目标BANK的行,减少电容充放电范围。

    • 动态功耗公式
      P_dynamic = α * C_eff * V_DD^2 * f
      (C_eff与激活的BANK数量正相关)


三、BANK的工作原理与访问流程
  1. 地址映射

    • 地址组成
      物理地址 = BANK地址 + 行地址 + 列地址
      (例如:DDR4地址格式为 BG:BANK:ROW:COL

  2. 典型操作流程

    • 步骤1:激活目标BANK的行(ACT命令)。

    • 步骤2:读取或写入数据(RD/WR命令)。

    • 步骤3:预充电当前行(PRE命令),准备下次访问。

  3. 多BANK并行示例

    • 时序重叠:BANK0激活(tRCD=15ns)期间,BANK1可读取数据(tCAS=10ns)。


四、BANK对系统性能的影响
  1. Bank Conflict(存储体冲突)

    • 定义:连续访问同一BANK的不同行,需频繁预充电,增加延迟。

    • 冲突概率公式
      P_conflict = 1 / BANK数量
      (例如:16个BANK的冲突概率≈6.25%)

  2. 优化手段

    • 增加BANK数量:DDR4通过BANK Group技术(4 Groups × 4 BANKs)降低冲突。

    • 地址交错算法:控制器将连续地址映射到不同BANK。


五、不同内存技术中的BANK设计
内存类型BANK结构特点典型应用场景
DDR416-32 BANKs,分4-8 BANK Groups服务器、PC主内存
LPDDR516 BANKs,支持Bank Group Refresh手机、低功耗设备
HBM28-16垂直堆叠BANKs,通过TSV互联高性能计算、AI加速卡
GDDR616-32独立BANKs,高并发访问优化显卡显存

六、设计注意事项
  1. 信号完整性

    • BANK地址(BA)信号需等长布线(偏差≤50mil),防止解码错误。

  2. 时序约束

    • 同一BANK的两次行激活间隔需满足 tRC(Row Cycle Time)(DDR4-3200的tRC≈45ns)。

  3. 功耗管理

    • 多BANK同时激活时,配置低ESR去耦电容(如每BANK组1μF)。

  4. 控制器调度算法

    • 采用 FR-FCFS(First-Ready First-Come-First-Serve) 策略,优先处理无冲突请求。


总结
BANK是内存实现高效并行的核心架构,通过分块管理提升带宽并降低延迟。设计时需优化BANK数量、地址映射策略及控制器调度,以最大化性能并规避冲突。随着3D堆叠(如HBM)技术发展,BANK的物理结构与控制逻辑将持续演进。

http://www.xdnf.cn/news/418735.html

相关文章:

  • 125.在 Vue3 中使用 OpenLayers 实现通过 WebGLVector 的方式添加海量点
  • MapReduce打包运行
  • 基于大模型预测胸椎管狭窄诊疗全流程的研究报告
  • 基于开源AI大模型AI智能名片S2B2C商城小程序的零售结算技术创新研究——以京东AI与香港冯氏零售集团智能结算台为例
  • 深入理解 JVM:StackOverFlow、OOM 与 GC overhead limit exceeded 的本质剖析及 Stack 与 Heap 的差异
  • 逆强化学习IRL在医疗行为模式研究中的应用
  • Three.js模型材质调整与性能优化实战
  • JPG与PDF格式转换器
  • 【论文阅读】Dip-based Deep Embedded Clustering with k-Estimation
  • 如何优化MCU中断响应时间
  • 【Ubuntu】neovim Lazyvim安装与卸载
  • coze平台实现文生视频和图生视频(阿里云版)工作流
  • OpenCV进阶操作:风格迁移以及DNN模块解析
  • 【计算机视觉】OpenCV实战项目:基于OpenCV的车牌识别系统深度解析
  • Kafka、RabbitMQ、RocketMQ的区别
  • 加速AI在k8s上使用GPU卡
  • WPS一旦打开,就会修改默认打开方式,怎么解?
  • 【OpenCV】网络模型推理的简单流程分析(readNetFromONNX、setInput和forward等)
  • React+Webpack 脚手架、前端组件库搭建
  • Ansys 计算刚柔耦合矩阵系数
  • Linux之初见进程
  • 使用光标测量,使用 TDR 测量 pH 和 fF
  • day 24
  • 智能手表整机装配作业指导书(SOP)
  • Vue.js---分支切换与cleanup
  • 第六章 GPIO输入——按键检测
  • 工业4G路由器IR5000公交站台物联网应用解决方案
  • 游戏引擎学习第275天:将旋转和剪切传递给渲染器
  • 【Linux】简单设计libc库
  • Spring Boot之Web服务器的启动流程分析