news 2026/6/10 15:31:29

DDR[内存基础]--Prefetch Burst Length

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DDR[内存基础]--Prefetch Burst Length

前言:在学习DDR刚刚打开JEDEC,就看到Prefetch(预取)和Burst Length(突发长度),这些都是什么东西,被一堆术语搞得云里雾里:

  • 预取是怎么做到的?
  • 突发长度到底在控制什么?
  • 它们和DDR速率提升有什么关系?

本文将用通俗的语言把这两个概念解释清楚


1 核心概念Prefetch&Burst Length(BL)

在上一篇文章中,我梳理了DDR内存中Channel、Rank、Bank Group和Bank的架构层次。今天,我们将深入探究驱动DDR性能飞跃的另外两个核心机制:预取(Prefetch)和突发长度(Burst Length)。理解它们,是看懂内存性能参数的关键。

1.1 简单理解 Prefetch & BL

可以把内存系统想象成一个大型物流仓库,而Prefetch & BL定义了其内部的高效工作流程。

  • Prefetch:是仓库分拣系统的工作模式。它指的是,当接到一个货物请求时,仓库工人(DRAM内核)不是只拿取一件,而是一次性从货架上取出多个连续地址的货物

  • Burst Length:是快递包裹的标准化尺寸。它规定了快递员(内存I/O接口)一次送货,必须按几个货物为一组进行打包和运输


2 Prefetch&BL对于DDR的演进的影响

Prefetch是DDR不同代之间性能提升的核心驱动力。它巧妙地解决了DRAM存储单元(慢)与处理器需求(快)之间的根本矛盾。

2.1 理解DDR速率和带宽

我们经常可以看到说这个LP5X产品速率是8533/9600这样,还有提到这个DDR的总带宽可以达到多少?这实际上是在说什么意思呢?

2.1.1 DDR的等效速率

DDR的等效数据速率(即我们在规格书上看到的max frequency如“8533”)这个代表的意义是单个数据引脚每秒完成多少次的传输,可以通过一个核心公式理解:

I/O 数据速率= 核心频率 × 预取长度 × 2(上下沿都传输数据所以*2)

我们会在一些规格书上看到如下的内容,其实它表示的不是总带宽而是指每个引脚的传输率其实约等于MT/s

9600 Mbps (tWCK=0.2083 ns)

所以从公式可以看出,在核心频率提升困难的情况下,增加预取长度成为了提升接口速率最有效的杠杆。从下图可以看到在DDR演进的过程中Prefetch的增加

PS:实际产品的核心频率也会逐步提升,但预取倍数的增长是早期性能跃升的主要来源

LPDDR5X通过将预取增至16,并辅以更高核心频率和先进信号技术,实现了8533 MT/s乃至10.7 Gbps的速率。

2.1.2 DDR的带宽

DDR的总带宽,是指整个芯片所有引脚加起来,每秒能传输的数据量。

DDR理论带宽= 速率 * 位宽

例如一个有两个channel,每个channel16bit的LPDDR5X产品,他的最高速率可以达到8533Mbps, 那么他的理论带宽可以达到8533Mbps*32/8/1000≈34.1GB/s

2.2 关于BL的简单说明

Burst Length 不改变 I/O 速率或理论峰值带宽,但它通过决定每次命令传输的数据量,影响总线的有效利用率和实际能达到的有效带宽。

所以 BL 对带宽的影响是“效率层面”的——它决定了数据总线有多少时间在传有效数据,多少时间在传可能被丢弃的数据。

  • 连续大块访问(如拷贝大文件、加载游戏场景):用长 BL,效率高

  • 随机小访问(如数据库查询、链表遍历):用短 BL,减少浪费


3 总结

结合上一讲的内容和prefetch和BL,下面总结一下,他们对于DDR有什么影响

4 疑问以及解答

Q1: prefetch是对bank单位来说的吗?

是的,Prefetch 是以单个 Bank 为单位来实现和描述的,但它最终的效益体现在整个芯片的数据输出上。为什么是以 Bank 为单位?原因在于 Prefetch 操作发生在单个 Bank 内部的行激活和列读取过程中。访问 DRAM 的一个 Bank 有三个关键步骤:

  1. 激活(ACTIVATE):将选中的一行数据从存储阵列读取到该 Bank 的行缓冲器中。

  2. 读取/写入(READ/WRITE):从行缓冲器中选取特定的进行数据访问。

  3. 预充电(PRECHARGE):关闭该行,为下一次激活做准备。

Prefetch 就发生在第 2 步(读操作)中。当一个 Bank 收到一个 READ 命令时,它内部的行地址译码器不仅仅选通一个列(一个存储单元),而是一次性从行缓冲器中选通连续的多个列(例如 8 个或 16 个),并将这些列对应的数据并行地传输到该 Bank 的 I/O 缓冲区中。

因此,Prefetch 长度描述的就是:单个 Bank 在一次 READ 操作中,从其行缓冲器中并行读取的连续列的数量。 不同 Bank 的 Prefetch 操作是独立的,可以并行发生(尤其在多 Bank Group 架构下)。


Q2: Prefetch怎么实现一次性拿8个?

A:关键点在于,这8个数据来自同一行(Row)里的连续8列(Column)。

· Bank激活一行后,整行数据被复制到由无数个灵敏放大器构成的行缓冲器中。
· Prefetch=8意味着,列地址解码器会同时选中8个连续的灵敏放大器,通过一条非常宽的内部数据总线(比如64位宽),将8个数据并行地送到I/O缓冲区。
· 所以,Prefetch的并行,是“从一行中并行取多列”的空间并行,而不是同时激活多行。如果数据不在同一行或者同一bank,那么就是随机读取的情况其实就没有办法一次性prefetch。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 15:25:59

照着做就行了!超详细的App开发落地SOP,项目经理必备

作为App开发项目经理,最头疼的就是“流程混乱、责任不清、工期失控”——需求反复变更、技术团队进度滞后、测试环节遗漏,最终导致项目延期、成本超支。其实,解决这些问题的核心,是拥有一套标准化的App开发落地SOP(标准…

作者头像 李华
网站建设 2026/6/10 15:17:42

深度学习中的Wise-IoU(WIoU)损失函数:从理论到实践的全方位详解

第一章:绪论 - 目标检测中的损失函数与挑战 1.1 目标检测与边界框回归 目标检测是计算机视觉领域的核心任务之一,其目标是在图像或视频中定位并识别出感兴趣的物体。一个典型的检测器输出通常包含两部分信息:物体的类别和其所在位置的边界框&…

作者头像 李华
网站建设 2026/6/10 15:13:04

Sqlplus无法本地登录分析

Sqlplus无法本地登录Strace后,日志文件发现ora-00600报错部分文件找不到是正常现象查看数据库目录$ ls -lrt total 4 drwxrwxr-x. 74 grid oinstall 4096 Mar 23 09:09 dbhome_1修改权限为oracle:oinstall 后正常。 $ chown oracle:oinstall dbhome_1/参考文档&…

作者头像 李华
网站建设 2026/6/10 15:12:15

一、进一、进程管一、进一、进程管理:从 systemd 开始\n1. 理解 systemd:系一、进程管理:从 systemd 开始\n1. 理解 systemd:系统的在 RHEL9 中一、进程管理

一、进一、进程管理:从 systemd 开始\n1. 理解 systemd:系一、进程管理:从 systemd 开始\n1. 理解 systemd:系统的 “总管家”\n在 RHEL9 中一、进程管理一、进一、进程管理:从 systemd 开始\n1. 理解 systemd&#xf…

作者头像 李华