1 Burst write
Burst write 的意思是突发写入,指的是在一次操作中连续写入多个数据单元,而不是每次只写一个。你可以把它理解成:一次“开门”,然后连续把很多数据一次性送进去,而不是每写一个数据就“开门关门”一次。
下面是更清晰的解释:
- 在存储设备(如 DDR、Flash、硬盘)中,读写通常需要一定的“启动开销”(例如地址建立、行激活等)。
- 如果要写很多连续的数据,用 burst write 可以避免重复的启动开销,从而大幅提升速度。
- 一次 burst 通常包含固定数量的数据节拍,比如 4 拍、8 拍、16 拍等。
举个简单例子,假设你要写 8 个 64 字节的数据:
- 不用 burst:需要 8 次独立写操作,每次都要发送地址 + 控制信号。
- 用 burst write:只发送一次起始地址,然后连续写 8 个数据块即可。
Burst write 常见于:
• DDR SDRAM
• PCIe、AXI、AHB 等总线
• NAND Flash
• GPU、DMA 传输
2 GDDR 交织(Interleaving)
[Memory Controller]
│
┌─────┴─────┐
│ Channel 0 │ Channel 1 ← 双通道 DDR
└─────┬─────┘
│
┌─────┴─────┐
│ Rank 0 │ Rank 1 ← 同一Channel下不同CS
└─────┬─────┘
│
┌───┬───┬───┬───┐
│B0│B1│B2│B3… │ Banks ← 内部存储体
└───┴───┴───┴───┘
│
┌───────────────┐
│ Row (行) │ ← 一整行读到row buffer
└───────────────┘
│
┌───────────────┐
│ Column (列) │ ← 最终读写数据
└───────────────┘
- GDDR 交织(Interleaving),就是把连续的显存地址打散交替放到不同的Bank/Rank/Channel,让 GPU 可以并行访问、隐藏 DRAM 延迟、榨干带宽。
- 下面讲得直白又够技术👇
一、核心思想(一句话)
正常:连续地址 → 同一个 Bank → 排队串行访问 → 慢、带宽低。
交织:连续地址 →Bank0 → Bank1 → Bank2 → Bank3 → …轮着来→ 多个 Bank 同时干活 →并行、延迟被隐藏、带宽翻倍。
二、GDDR 的三级交织(GPU 显存特有)
1)Bank 交织(最底层,芯片内)
- 1 颗 GDDR 芯片内部有很多 Bank(如 8/16 个)
- 连续地址轮流分配给不同 Bank
- 效果:一个 Bank 忙(充电/刷新)时,GPU 马上读下一个 Bank,流水线无等待
2)Rank 交织(单通道内)
- 1 个通道上有多颗 GDDR 芯片组成 Rank
- 地址跨芯片交错分布
- 效果:同一通道内多芯片并发,提高单通道利用率
3)Channel 交织(GPU 多通道,最重要)
- GPU 有 6/8/12 个独立显存通道(如 384bit = 12×32bit)
- 连续地址按 32B/64B 粒度轮流向各通道发请求
- 效果:真正并行,总带宽 = 单通道 × 通道数(比如 GDDR6 12 通道 → 12×单通道带宽)
三、举个例子(4 通道简化版)
逻辑地址(连续):0, 1, 2, 3, 4, 5, 6, 7...
交织后物理分布:
- 地址 0 → Channel 0
- 地址 1 → Channel 1
- 地址 2 → Channel 2
- 地址 3 → Channel 3
- 地址 4 → Channel 0
- 地址 5 → Channel 1 …
GPU 访问时:一次发 4 个请求到 4 个通道,同时返回数据,而不是等一个通道读完再读下一个。
四、为什么 GDDR 特别需要交织?
- GPU 是海量并行线程,对显存带宽需求极高(比 CPU 高几十倍)
- GDDR 频率极高(GDDR6 可达 20Gbps/pin),但单个 Bank 有忙周期
- 交织能把串行变并行、隐藏延迟、把带宽吃满,是 GPU 显存性能的核心技术
- GDDR Interleaving:地址分散到多通道/Bank,加速数据访问
完全不同层级,但都是提升内存性能的手段。
六、一句话总结
GDDR 交织 = 地址打散、多通道/Bank 并行、隐藏延迟、拉满带宽,是 GPU 显存高性能的基石。
你说的这个4/2/路交织,一般就是指GDDR / 显存的 3 级交织粒度:
4路交织 / 2路交织 / 路交织(Channel Interleaving)
我用最直白、驱动/硬件工程师都懂的方式讲清楚👇
1. 什么叫“路”?
路 = Channel = 显存通道
比如一块显卡是256bit,通常就是:
- 8 路 × 32bit
或者 - 4 路 × 64bit
“几路交织”就是地址在几个通道之间轮流发。
2. 4路交织(4-channel interleaving)
地址按4 个通道轮着来:
地址0 → CH0 地址1 → CH1 地址2 → CH2 地址3 → CH3 地址4 → CH0 地址5 → CH1 ...一次读写可以4 通道并行,带宽接近 ×4。
3. 2路交织(2-channel interleaving)
只在2 个通道之间轮:
CH0 → CH1 → CH0 → CH1...并行度只有 2,带宽比 4 路弱。
4. 路交织(Channel Interleaving)
就是最顶层、最大粒度的交织:
- 通道之间交织
- 决定最大显存带宽
它下面还有:
- Bank 交织(芯片内部)
- burst 交织
路交织是影响性能最大的一级。
5. 硬件/驱动里的实际意义
- 4路交织:高性能、带宽大,适合游戏卡、计算卡
- 2路交织:成本低、位宽窄,比如入门显卡、嵌入式 GPU
你在GPU 显存配置、DRAM 初始化寄存器、显存训练日志里看到的:
4-way interleaving 2-way interleaving简短总结
4/2/路交织 = 地址在 4 个 / 2 个 / 显存通道之间轮流分布,实现并行访问、提高带宽。
3 Aperture Base
Aperture Base(显存/PCIe 窗口基地址),是 GPU 驱动与硬件里的关键术语,指CPU 能直接访问的显存(VRAM)或 GART/GTT 地址窗口的起始物理地址。
一、核心定义
- Aperture:在计算机语境中,特指物理地址空间中的一段“窗口”,CPU 通过这段地址可直接读写设备内存(如 GPU 显存)。
- Base:即这段地址窗口的起始地址(基地址)。
全称:Aperture Base Address(窗口基地址)
作用:定义CPU 侧看到的显存映射起始地址。
二、GPU 里的两种 Aperture(你最常遇到)
1. VRAM Aperture(直接显存窗口)
- 功能:CPU 可直接读写物理显存(MMIO 方式)。
- 地址范围:
[Aperture Base, Aperture Base + 显存大小)。 - 典型场景:
- 旧显卡/AGP 时代:CPU 直接写显存。
- 现代 GPU:用于固件初始化、调试、特殊寄存器访问。
2. GART / GTT Aperture(页表映射窗口)
- GART/GTT:Graphics Address Remapping Table(GPU 页表)。
- 功能:CPU 访问一段连续虚拟地址 → 经 GPU 页表 → 映射到分散的物理显存或系统内存。
- 核心用途:
- 让 CPU 看到连续地址,硬件自动处理显存碎片化。
- 集成显卡(iGPU)共享内存时必备。
三、与 PCIe BAR 的关系(必懂)
Aperture Base 本质上就是 PCIe BAR 中被分配的基地址:
- GPU 在 PCIe 配置空间声明:我需要一大段地址(如 256MB/1GB/8GB)。
- 系统 BIOS/OS 枚举时,分配一段物理地址给它。
- 这个分配的起始地址→ 就是Aperture Base。
Linux 内核代码示例(AMDGPU):
// 显存窗口基地址与大小adev->gmc.vram_start=0xD0000000;// Aperture Baseadev->gmc.vram_end=0xDFFFFFFF;// Aperture Base + Size - 1四、为什么叫“Aperture(光圈/窗口)”?
- 比喻:像相机光圈打开一个窗口。
- 本质:CPU 地址空间 → 透过 Aperture → 看到 GPU 显存。
- 关键:CPU 不直接拥有显存物理地址,而是通过这个映射窗口访问。
五、驱动/硬件中的常见别名
- Aperture Base
- FB Base(Frame Buffer Base)
- GART Base / GTT Base
- PCIe BAR (Memory BAR) Base Address
六、一句话总结
Aperture Base = CPU 访问 GPU 显存/共享内存的“映射窗口”起始物理地址,是 PCIe BAR 分配的核心地址。
要不要我帮你整理一份Aperture Base、GART、BAR、VRAM 地址的核心区别与联系表格,方便你快速查阅?