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

DDR-怎么计算存储空间-什么是预取(Pre-fetch)

问题一:怎么计算DDR SRAM存储空间

比如镁光这款:

Meg:Mega 兆    Gig:Gigab 吉

存储空间-计算公式:

  • 128*4*8=4069
  • 64*8*8=4096
  • 32*16*8=4096

会发现,他们都是4Gbit(4096Mbit)的存储空间,就数据位宽不同,X4 X8 X16(传输带宽差异)

那“32Meg”,“x16”,“8Banks”代表什么?

以及DDR的工作原理是什么?

举个例子:

型号MT41K256M16: 32Meg *16 *8Bank

已知:地址线有A[14:0],  数据线D[15:0],  BANK是BA[2:0]

  • 页 / 行 / 列结构

    • 单个 bank 包含 32Meg 存储单元,按 “行(row)× 列(column)” 矩阵排列;
    • 1 行 = 1 页,页大小(page size)= 2KB(即 1 行包含 2048 字节存储单元);
    • 行地址范围:32K(A [14:0]),即每个 bank 有 32768 行;
    • 列地址范围:1K(A [9:0]),即 1 行内有 1024 格(每“格”有16 bit=2 字节数据)。

  • 突发长度(BL):支持固定 BL8(突发传输 8 个数据项)和 BC4(突发截断为 4 个,有4个被掩码了),可通过 A12 引脚动态切换(OTF)。

  • 预取架构:8n-bit prefetch(8 位预取,“n” 为外部数据总线宽度),内核一次从存储阵列读取 8 位数据(同时进行),每列16bit同时输出,也就是128位内部总线!

  • 时钟频率:以速度等级 “-125” 为例,对应 DDR3-1600,数据速率 1600 MT/s,外部时钟(CK)频率 = 800 MHz(因 DDR 技术每时钟周期传输 2 次数据)。

        外部传输带宽:800MHz*2(DDR)*16bit(外部数据总线)=25600Mbit/s

  • 内核频率:内核频率 =200 MHz,工艺上,内核频率很难提升,所以发明了8n-bit prefetch预取机制:

        内部传输带宽:200MHz(单沿)*128bit(内部数据总线)=25600bit/s

        内核与内部 FIFO 之间的数据传输通过 128bit 并行总线完成,

        依赖硬件并行设计而非速率翻倍。

例子:读取 16 字节连续数据

假设 CPU 需要读取内存中 “bank 0、行地址 0x1234、列地址 0x000” 开始的 16 字节连续数据(该数据在同一页内),过程如下:

(地址线是时分复用,先行激活 + 再列访问

1. 激活行(打开页)
  • 内存控制器发送ACTIVATE 命令,通过 bank 地址(BA [2:0]=0)选中 bank 0,通过行地址 A [14:0]=0x1234 选中目标行(页)。
  • 该操作将整行(2KB)数据从存储阵列载入行缓冲器(临时缓存),耗时满足tRCD(行到列延迟,文档中 - 125 等级对应 13.75ns)。
2. 发送读取命令,指定突发长度和列地址
  • 行激活后,控制器发送READ 命令,通过列地址 A [9:0]=0x000 指定起始列,并通过 A12=1 选择BL8(A12=0,则BC4)

BL8 本质是一次命令触发对 8 个连续列的访问,访问起始列地址后,内存会自动连续访问后续 7 个列,提升效率)

寻址就完成了,开始搬运16字节数据啦

已知外部数据位宽D[15:0],有16位。

8n-bit prefetch(8 位预取,“n” 为外部数据总线宽度)

3. 预取(Pre-fetch)与内核数据准备(预取操作由内核完成,不受外部时钟直接控制)
  • Core内核(存储阵列)以200 MHz 频率工作,也就是一个周期5ns,收到读取请求后,启动8n-bit预取架构
  • 内核周期:200MHz 内核的 1 个周期为 5ns,在此期间,内核通过 “8n-bit 预取” 机制从存储阵列的 8 个连续列中并行读取 128bit 数据(8×16bit),即5ns搬运128bit。

4. 外部时钟同步传输
  • 预取的 8 位数据通过内部逻辑拆分,配合外部800 MHz 时钟(CK) 传输:
    • DDR 技术支持每时钟周期上升沿 + 下降沿各传输 1 次数据(即 1 时钟周期 = 2 次传输);
  • 外部时钟与 FIFO 读取:外部时钟为 800MHz(1.25ns / 周期),通过 DDR 的双沿传输特性(每周期传输 2 次 16bit 数据),从 FIFO 中读取数据:
    • 128bit 数据需要 8 次 16bit 传输(128÷16=8),对应 4 个外部周期(8÷2=4),总耗时 4×1.25ns=5ns。
    • 这与内核写入 FIFO 的时间(5ns)完全同步,即 FIFO 在被外部接口读完数据的同时,内核已准备好下一批 128bit 数据(若有连续访问需求)。
5. 数据传输完成
  • 16 字节数据通过 16 个数据引脚(x16 配置)连续传输到 CPU,整个过程中因数据在同一页内,无需重新激活行,仅需列地址 + 突发传输即可完成,大幅降低延迟。

总结

此例中,页(行)是数据激活的基本单位(2KB),列地址定位页内起始位置BL8 确保连续 8 个数据项高效传输8 位预取实现内核与外部接口的速率匹配,800 MHz 外部时钟200 MHz 内核频率通过预取机制协同,最终实现 16 字节数据在约 5ns 内完成传输(不含激活延迟),体现了 DDR3 的高速传输特性。


所以你明白什么是突发长度,什么是预取了吗?

BL=8: 加快了寻址(只需要访问一次起始列地址,自动给后面7列,节省时间)

8n预取架构:加快了数据运输(内核)

知识补充:

一)200MHz 内核预取8列,每列 16bit 列数据的详细过程

1. 存储阵列的硬件结构支持

内存的存储阵列(行列矩阵)中,同一行(页)的列地址是连续排列的(如列 0x000、0x001、…、0x3FF),且硬件上支持连续列的并行 / 快速访问。当内核收到读取命令(包含起始列地址)后,会通过内部地址解码器定位到起始列,并自动激活后续连续列的访问逻辑。

2. 内核在 1 个周期内完成 8 个 16bit 列的预取

200MHz 内核的 1 个周期(5ns)内,会执行以下操作:

  • 地址递增:以内核时钟为基准,从起始列地址(如 0x000)开始,地址逻辑自动生成后续 7 个连续列地址(0x001~0x007),无需额外命令;
  • 并行读取:存储阵列的硬件电路同时(或在极短时间内连续)读取这 8 个列的 16bit 数据(每个列 16bit,8 列共 128bit);
  • 数据汇聚:读取的 8×16bit 数据通过内部总线汇聚成 128bit 的 “预取块”,存入内核的预取缓冲区(Prefetch Buffer)。
3. 预取与内核时钟的匹配
  • 内核以 200MHz 工作,意味着每 5ns 就能完成一次 128bit 的预取(包含 8 个 16bit 列数据);
  • 这个速度与外部接口的传输需求完全匹配:外部时钟 800MHz(1.25ns / 周期),通过 DDR 双沿传输(每周期传输 2 次 16bit),4 个外部周期(5ns)刚好传输完 128bit(8×16bit),与内核预取的时间完全同步。

核心逻辑:为什么 200MHz 能高效预取 16bit 列数据?

  • 硬件并行性:存储阵列的物理结构允许连续列的并行访问,避免了单个列逐一读取的延迟;
  • 预取块设计:8n-bit 预取机制将 8 个 16bit 列数据打包为一个 128bit 的 “预取块”,刚好匹配内核 1 个周期的处理能力;
  • 时钟协同:200MHz 内核周期(5ns)与外部 800MHz 时钟的 4 个周期(5ns)时间对齐,确保预取的数据能被外部接口无延迟地传输出去。

其他DDR的内核频率-预取-外部时钟频率的关系:

DDR4多了个Bank group功能(2个8bit预取),DDR5是16n-bit预取~

二)什么是ODT技术:

ODT(On-Die Termination)即片上端接技术,是从 DDR2 SDRAM 时代开始新增的功能。以下是关于 ODT 技术的详细介绍:

  • 工作原理:ODT 技术将终结电阻集成到内存芯片内部。在内存芯片工作时,系统会把终结电阻器屏蔽,而对于暂时不工作的内存芯片则打开终结电阻器以减少信号的反射。内存控制器可以通过 ODT 同时管理所有内存引脚的信号终结,并且阻抗值有多种选择,如 0Ω、50Ω、75Ω、150Ω 等,可根据系统内干扰信号的强度自动调整阻值大小。
  • 作用:在 DDR 通道中,通常会挂接多个 Rank,数据线、地址线等共用,数据信号传递到线路末端时会产生波形反射,影响原始信号。ODT 的目的是让 DQS、RDQS、DQ 和 DM 等信号在终结电阻处消耗完,防止这些信号在电路上形成反射,进而增强信号完整性。
  • 优势:一是降低主板制造成本,去掉了主板上的终结电阻器等电器元件,使主板设计更简洁;二是减少内存闲置时的功率消耗,它可以迅速开启和关闭空闲的内存芯片;三是减少内存的延迟等待时间,芯片内部终结比主板终结更及时有效,也使得进一步提高内存的工作频率成为可能。
  • 校准:工艺、电压和温度(PVT)的变化会导致 ODT 元件的电阻特性不稳定,ODT 校准可确定最佳端接阻抗,以减少信号反射并补偿 PVT 的变化。校准通过建立与外部精密电阻成正比的 ODT 阻抗来实现,ODT 校准控制器将 ODT 电阻网络上的压降与所表示的外部电阻器上的压降进行比较,通过粗调和微调对电阻网络进行修改,以实现与外部基准电阻非常接近的阻抗值。

那终端电阻还加不加?

DDR2/DDR3的地址总线需要加终端匹配电阻上拉到VTT~

  1. DDR2/DDR3 时代
    地址线(Address)和控制线(Command)通常需要在主板上外接终端电阻到 VTT。

    • 原因是此时 ODT 技术仅用于数据线(DQ、DQS 等),地址 / 控制信号的端接依赖主板上的外部电阻,通过匹配传输线阻抗(通常 50Ω)来减少反射。
    • VTT 是专门为终端电阻设计的参考电压(通常为电源电压的一半,如 DDR3 的 VTT=0.75V),确保端接效果稳定。
  2. DDR4 及以后
    地址线的外部终端电阻需求大幅减少,甚至被 ODT 取代:

    • DDR4 中,地址 / 控制总线(CA)开始支持片上 ODT(通过模式寄存器配置),可通过内存芯片内部的端接电路实现阻抗匹配,无需外接电阻到 VTT。
    • DDR5 进一步优化,地址 / 控制信号(CA、CK 等)的 ODT 功能更完善,完全依赖内部端接,主板上无需额外的 VTT 终端电阻。

喜欢 谢工碎碎念 的内容,给个关注,收藏~

http://www.dtcms.com/a/321720.html

相关文章:

  • 【世纪龙科技】汽车车身测量虚拟实训软件-虚境精测全维赋能
  • 应急响应流程
  • vue2-scoped关键字、组件通信
  • Qwen-Image擅长文字渲染的创作利器
  • 用 Go 写个极简反向代理,把 CC 攻击挡在业务容器之外
  • 深入浅出:掌握银河麒麟桌面操作系统的防火墙管理艺术
  • 3- Python 网络爬虫 — 如何抓取动态加载数据?Ajax 原理与实战全解析
  • Redis:集群(Cluster)
  • eNSP 模拟器安装教程
  • 深入理解模板方法模式:框架设计的“骨架”艺术
  • [激光原理与应用-180]:测量仪器 - 频谱型 - 干涉仪的定义、功能、原理、组成
  • 目标检测数据集 - 番茄叶病虫害检测数据集下载「包含VOC、COCO、YOLO三种格式
  • LeetCode盛最多水的容器
  • 线程死锁相关知识点
  • Pygame音频播放的最简框架代码示例
  • C#中LINQ to DataSet操作及DataTable与LINQ相互转换
  • 【问题解决】Mysql连接报错:1130-host ... is not allowed to connect to this MySql server
  • 快速入门flask应用(从入门到实战)
  • CPO-SVM分类预测+特征贡献SHAP分析,通过特征贡献分析增强模型透明度,Matlab代码实现,引入SHAP方法打破黑箱限制,提供全局及局部双重解释视角
  • Uber的MySQL实践(一)——学习笔记
  • Xiphos Q8 SDR DOCK子板 AD9361 宽带收发器的 SDR 模块。
  • 【AI论文】高效智能体:在降低成本的同时构建高效能智能体
  • latex基础
  • GPT-5 不仅是版本升级,它标志着 推理能力的商业化 和 Agent操作系统 的崛起,开启了 AI革命时代。
  • 二、RuoYi-Cloud-Plus 拉取到本地的准备和注意事项
  • wordpress的wp-config.php文件的详解
  • 虚幻GAS底层原理解剖九 (内存管理)
  • Jetpack Compose 主题系统全解析:从基础配置到动态切换
  • 商品、股指、ETF期权五档Tick分时历史行情数据解析
  • 数据库设计简述