四大发明技术关系总览
四项发明从不同层面解决 GPU 地址翻译和内存管理问题,形成完整的技术栈:
图 1: 四大发明技术关系图 — 从硬件层到算法层的完整地址翻译优化栈
US20240202136A1 - 硬件层
MMU 页表遍历引擎,将随机地址翻译请求转换为批量顺序访存命令,大幅提升 DRAM Row Buffer 命中率。
US9514559B2 - 架构层
统一内存架构,CPU 和 GPU 共享虚拟地址空间和页表,实现零拷贝数据共享,简化编程模型。
US11620256B2 - 缓存层
动态地址重映射技术,将频繁访问的虚拟地址映射到缓存友好的物理地址,减少 TLB Miss。
LATPC - 算法层
Locality-Aware TLB 预取 + MSHR 压缩,通过空间局部性预测预取 TLB 条目,压缩 MSHR 条目减少冲突。
原文链接
US20240202136A1 MMU 页表遍历引擎
核心问题: GPU 地址翻译中的页表遍历(Page Table Walk)通常产生大量随机内存访问,导致 DRAM Row Buffer 命中率低下,成为地址翻译的性能瓶颈。
发明原理
该专利提出一种 MMU 页表遍历引擎,将随机地址翻译请求重新组织为批量顺序访存命令。核心思想是将多个虚拟地址的页表遍历路径分组,使得对同一页表层的访问可以批量顺序执行,从而提升 DRAM 访问效率。
图 2: 传统随机访存 vs 本发明批量顺序访存 — 批量方式大幅提升 Row Buffer 命中率
技术细节
- 批量翻译命令 (Batch Translation Commands): 将多个虚拟地址的页表遍历请求分组,生成批量翻译命令,每个命令包含一组虚拟地址和对应的页表遍历路径
- 顺序访存优化 (Sequential Memory Access): 对同一页表层的多个条目访问合并为连续内存读取,利用 DRAM 预取机制
- 页表层分组 (Page Table Level Grouping): 按页表层级(PML4、PDPT、PD、PT)分组遍历请求,每层批量处理后再进入下一层
- 硬件实现: 在 MMU 中增加批处理引擎,包含命令队列、地址排序单元和批量请求生成器
性能提升分析:
传统方式: N 次独立页表遍历 → 4×N 次随机 DRAM 访问 (4 级页表)
Row Buffer Miss 率 ≈ 80-90%
本发明: 批量翻译命令 → ~N 次顺序 DRAM 访问
Row Buffer Hit 率提升至 ≈ 70-80%
地址翻译延迟降低 30-50%
US9514559B2 统一内存架构
核心问题: 传统 GPU 编程模型中,CPU 和 GPU 拥有独立的虚拟地址空间,数据在 CPU 和 GPU 之间传输需要显式拷贝(cudaMemcpy),增加了编程复杂性和运行时开销。
发明原理
该专利提出统一内存架构(Unified Memory Architecture),使 CPU 和 GPU 共享同一个虚拟地址空间和页表。CPU 和 GPU 可以使用相同的虚拟地址访问同一块内存,无需显式数据拷贝,硬件自动处理页迁移和一致性。
图 3: 统一内存架构 — CPU 和 GPU 共享虚拟地址空间和页表,实现零拷贝数据访问
核心技术
- 共享页表 (Shared Page Tables): CPU 和 GPU 使用相同的页表结构,页表更新对两端同时可见
- 按需页迁移 (On-Demand Page Migration): 当 GPU 访问不在显存的页面时,硬件自动触发页迁移,无需软件干预
- 统一虚拟地址 (Unified Virtual Addressing): 64 位虚拟地址空间中,CPU 和 GPU 指针可以互换使用
- 内存一致性 (Memory Coherence): 通过硬件机制保证 CPU 和 GPU 对共享内存的访问一致性
代码对比:
传统方式:
cudaMemcpy(d_dst, h_src, size, cudaMemcpyHostToDevice); // 显式拷贝
cudaDeviceSynchronize();
统一内存:
// 直接访问同一地址,无需拷贝
gpu_kernel<<<...>>>(ptr); // ptr 在 CPU 和 GPU 端有效
US11620256B2 缓存效率优化
核心问题: GPU 缓存(L1/L2)和 TLB 的命中率受虚拟地址到物理地址的映射关系影响。随机映射导致缓存行和 TLB 条目利用率低下。
发明原理
该专利提出动态地址重映射技术,将频繁共同访问的虚拟地址映射到缓存友好的物理地址区域,使得这些地址在缓存中能够共存于不同的缓存行和不同的 TLB 条目中,减少冲突 Miss。
图 4: 动态地址重映射 — 将共同访问的虚拟地址映射到不同的缓存行,消除冲突 Miss
技术细节
- 访问热度分析 (Access Hotness Analysis): 硬件计数器跟踪虚拟地址的访问频率和共同访问模式
- 动态重映射 (Dynamic Remapping): 将热点地址重新映射到缓存友好的物理地址区域
- 缓存感知映射 (Cache-Aware Mapping): 确保共同访问的地址映射到不同的缓存 Set 和 TLB 条目
- 增量式更新 (Incremental Update): 重映射操作在后台进行,不影响正在进行的计算
技术原理详解
LATPC 论文 Locality-Aware TLB Prefetching and MSHR Compression
核心贡献: 提出两种互补技术提升 GPU 地址翻译效率:(1) Locality-Aware TLB 预取,利用空间局部性预测预取 TLB 条目;(2) MSHR 压缩,减少 Miss Status Handling Register 条目占用。
技术一: Locality-Aware TLB Prefetching
GPU 内存访问通常表现出强烈的空间局部性(相邻地址连续访问)。LATPC 利用这一特性,当检测到连续的虚拟地址访问模式时,主动预取相邻的 TLB 条目,减少 TLB Miss 导致的页表遍历。
图 5: LATPC TLB 预取机制 — 检测连续访问模式并主动预取 TLB 条目
技术二: MSHR Compression
MSHR (Miss Status Handling Register) 用于跟踪未完成的内存请求。当多个请求映射到同一页表条目时,LATPC 将它们压缩到单个 MSHR 条目中,减少 MSHR 冲突和溢出。
MSHR 压缩效果:
传统: N 个相邻地址 Miss → N 个 MSHR 条目
LATPC: N 个相邻地址 Miss → 1 个 MSHR 条目 (带偏移列表)
MSHR 条目占用减少 60-80%
压缩原理
实验结果
- 在 GPU 基准测试中,LATPC 平均减少 47% 的 TLB Miss
- MSHR 压缩减少 65% 的 MSHR 条目占用
- 综合地址翻译性能提升 35-55%
- 对内存密集型工作负载(如 GEMM、卷积)效果尤为显著