内存中的“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.mzph.cn/web/79702.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习——聚类算法练习题

一、 随机创建不同二维数据集作为训练集 ,并结合k-means算法将其聚类 ,你可以尝试分别聚类不同数量的簇 ,并观察聚类 效果: 聚类参数n_cluster传值不同 ,得到的聚类结果不同 代码展示: from sklearn.da…

kafka----初步安装与配置

目录标题 ⭐kafka 与 zookeeper间的关系一.集群部署二.修改配置文件三.分发安装包四.启动与关闭 kafka 与 zookeeper 相同,是以集群的形式使用 ⭐kafka 与 zookeeper间的关系 kafka 的使用 要在 zookeeper 集群配置好的基础上 使用要想启动kafka 要先启动 zookeep…

进程与线程:07 CPU调度策略

一、课程内容概述 本节课程主要讲解操作系统的CPU调度策略,聚焦于基本操作系统上的调度算法,探讨其大致实现方式、需折中考虑的问题。CPU调度在不同场景下复杂程度不同,如卫星、导弹等实时性要求高的系统,需采用实时调度&#xf…

JPG与PDF格式转换器

该插件可实现JPG与PDF格式的互转。 MainForm.Designer.cs using System.Windows.Forms; namespace JpgToPdfConverter {partial class MainForm{private System.ComponentModel.IContainer components null;protected override void Dispose(bool disposing){if (disposing &…

LlamaIndex 第八篇 MilvusVectorStore

本指南演示了如何使用 LlamaIndex 和 Milvus 构建一个检索增强生成(RAG)系统。 RAG 系统将检索系统与生成模型相结合,根据给定的提示生成新的文本。该系统首先使用 Milvus 等向量相似性搜索引擎从语料库中检索相关文档,然后使用生…

浅聊一下数据库的索引优化

背景 这里的索引说的是关系数据库(MSSQL)中的索引。 本篇不是纯技术性的内容,只是聊一次性能调优的经历,包含到一些粗浅的实现和验证手段,所以,大神忽略即可。 额…对了,笔者对数据库的优化手段…

【android bluetooth 框架分析 02】【Module详解 7】【VendorSpecificEventManager 模块介绍】

1. 背景 我们在 gd_shim_module 介绍章节中&#xff0c;看到 我们将 VendorSpecificEventManager 模块加入到了 modules 中。 // system/main/shim/stack.cc modules.add<hci::VendorSpecificEventManager>();在 ModuleRegistry::Start 函数中我们对 加入的所有 module…

小刚说C语言刷题—1080质因子

1.题目描述 任意输入一正整数 N &#xff0c;求出它的所有质因子。如&#xff1a;10&#xff1d;25&#xff0c;20&#xff1d;225。 输入 输入只有一行&#xff0c;包括 11个整数 n (1≤n≤32768) 输出 输出若干行&#xff0c;按从小到大的顺序给出这个数的所有质因子&am…

C语言中的宏

1.防止头文件重复包含 1.#pragma once #pragma once 是一个编译器指令&#xff0c;用于防止头文件被重复包含。它的核心作用是通过简单语法替代传统的头文件保护宏&#xff08;#ifndef/#define/#endif&#xff09;&#xff0c;提升代码简洁性和可维护性。 作用详解 防止重复…

MapReduce 模型

‌引言‌ MapReduce 是分布式计算领域的里程碑式模型&#xff0c;由 Google 在 2004 年论文中首次提出&#xff0c;旨在简化海量数据处理的复杂性。其核心思想是通过函数式编程的 ‌Map‌ &#xff08;映射&#xff09;和 ‌Reduce‌ &#xff08;归约&#xff09;阶段&#x…

Linux文件编程——标准库函数fopen、fread、fwrite等函数

1. fopen — 打开文件 函数原型&#xff1a; FILE *fopen(const char *filename, const char *mode);参数&#xff1a; filename&#xff1a;要打开的文件名&#xff0c;可以是相对路径或绝对路径。 mode&#xff1a;文件打开模式&#xff0c;表示文件的操作方式&#xff08…

从 Git 到 GitHub - 使用 Git 进行版本控制 - Git 常用命令

希望本贴能从零开始带您一起学习如何使用 Git 进行版本控制&#xff0c;并结合远程仓库 GitHub。这会是一个循序渐进的指南&#xff0c;我们开始吧&#xff01; 学习 Git 和 GitHub 的路线图&#xff1a; 理解核心概念&#xff1a;什么是版本控制&#xff1f;Git 是什么&…

2025.05.11拼多多机考真题算法岗-第四题

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 04. 记忆碎片重组 问题描述 卢小姐正在开发一款名为"记忆碎片"的游戏,玩家需要分析混乱的记忆数据,推测出形成这些记忆的原始序列。游戏中,记忆数据存储在一个特殊的数…

Android Exoplayer多路不同时长音视频混合播放

在上一篇Android Exoplayer 实现多个音视频文件混合播放以及音轨切换中我们提到一个问题&#xff0c;如果视频和音频时长不一致&#xff0c;特别是想混合多个音频和多个视频时就会出问题&#xff0c;无法播放。报错如下&#xff1a; E/ExoPlayerImplInternal(11191): Playback…

Datawhale PyPOTS时间序列5月第1次笔记

课程原地址&#xff1a; https://github.com/WenjieDu/PyPOTS&#xff08;Package地址&#xff09; https://github.com/WenjieDu/BrewPOTS/tree/datawhale/202505_datawhale&#xff08;Tutorial地址&#xff09; 2.1 PyPOTS简介 PyPOTS 是一个专为处理部分观测时间序列&a…

网安学途—流量分析 attack.pcap

attack.pacp 使用Wireshark查看并分析虚拟机windows 7桌面下的attack.pcapng数据包文件&#xff0c;通过分析数据包attack.pcapng找出黑客的IP地址&#xff0c;并将黑客的IP地址作为FLAG &#xff08;形式&#xff1a;[IP地址]&#xff09;提交&#xff1a; 过滤器筛选&#x…

【大模型】DeepResearcher:通用智能体通过强化学习探索优化

DeepResearcher&#xff1a;通过强化学习在真实环境中扩展深度研究 一、引言二、技术原理&#xff08;一&#xff09;强化学习与深度研究代理&#xff08;二&#xff09;认知行为的出现&#xff08;三&#xff09;模型架构 三、实战运行方式&#xff08;一&#xff09;环境搭建…

go语言实现IP归属地查询

效果: 实现代码main.go package mainimport ("encoding/json""fmt""io/ioutil""net/http""os" )type AreaData struct {Continent string json:"continent"Country string json:"country"ZipCode …

基于STM32、HAL库的SGTL5000XNLA3R2音频接口芯片驱动程序设计

一、简介: SGTL5000XNLA3R2 是 Cirrus Logic 推出的高性能、低功耗音频编解码器,专为便携式和电池供电设备设计。它集成了立体声 ADC、DAC、麦克风前置放大器、耳机放大器和数字信号处理功能,支持 I2S/PCM 音频接口和 I2C 控制接口,非常适合与 STM32 微控制器配合使用。 二…

window 显示驱动开发-报告图形内存(一)

计算图形内存 在 VidMm 能够向客户端报告准确的帐户之前&#xff0c;它必须首先计算图形内存的总量。 VidMm 使用以下内存类型和公式来计算图形内存&#xff1a; 系统总内存 此值是操作系统可访问的系统内存总量。 BIOS 分配的内存不会出现在此数字中。 例如&#xff0c;一台…