关键词:硬件预取、内存墙、大语言模型、CPU 微架构、硬件-软件协同设计
在追求单核性能的征途上,CPU 设计师们正面临一道难以逾越的天堑——“内存墙”。这道墙的另一边,是主存(DRAM)动辄数百个周期的访问延迟,而 CPU 核心的运算速度却已逼近物理极限。为了填平这道墙,现代处理器普遍采用了一项关键技术:硬件数据预取。它像一个未卜先知的预言家,提前将程序未来可能用到的数据从主存搬进高速缓存,让 CPU 核心无需“空等”。
然而,现有的硬件预取器正面临一个根本性的困境。它们就像一群只会特定技能的工匠,有的擅长识别步长固定的模式(Stride),有的精于抓取连续的流式访问(Stream),有的则对复杂的空间模式(Spatial)情有独钟。但真实世界的程序是千变万化的,不同阶段会展现出迥异的访问模式。就好比让一个只会做木工活的工匠去修理一台精密汽车,结果可想而知。
为了解决这个问题,学术界提出了“预取器集成”的思路,即组合多个专业的“工匠”,并设置一个“调度中心”来动态分配任务。但以往的调度策略,例如 Alecto 或 DOL,都依赖于在线学习,这带来了两个致命缺陷:
* 一是需要漫长的试错才能收敛,面对瞬息万变的程序阶段常常“慢半拍”;
* 二是受限于芯片上的严苛面积和延迟约束,只能采用非常简单的启发式规则,难以做出真正“聪明”的决策。
这不禁让人深思:一个经验丰富的开发者,在阅读一段代码时,能否一眼就看出其中数据访问的模式,从而知道该用什么策略去预取?

图 1:银行账户管理 C 代码的内存访问模式示例。此图展示了四种可轻松识别的内存访问模式:(a) 原子操作的无预取;(b) 结构体数组遍历的步幅预取;(c) 结构体成员访问的空间预取;(d) 字符串顺序读取的流预取。该图直观验证了研究的核心洞察——静态代码上下文包含足够的内存访问模式信息,人类开发者可识别的模式,经过微调的 LLM 同样能学习捕捉。
“我们的核心洞见是,一条加载指令的最优预取策略,往往可以从其静态的代码上下文中推断出来——而这恰恰是经验丰富的开发者所擅长的。”这正是本文作者的核心思考。受此启发,他们提出了一个关键问题:既然人类开发者可以,那么现代的大语言模型能否自动完成这项任务?

基于此,来自香港科技大学、杜克大学等机构的研究者,首次提出了 PF-LLM,一个经过微调的大语言模型,它能在离线状态下,深度分析程序的汇编代码,为每一条加载指令精准地预测出最优的预取策略。在运行时,一个轻量级的硬件预取器 LMHint Prefetcher 只需“按图索骥”,根据 PF-LLM 离线生成的“提示”执行即可。
这一思路,本质上是将复杂的“何时、如何、以多大力度预取”的决策过程,从运行时受限的硬件,转移到了离线、不受限的大模型分析中。这使得在线硬件预取器几乎拥有了“零延迟、先知级”的能力,总是能遵循最佳策略。

图 3:PF-LLM 方法总览。(a) 利用架构仿真得到的真实预取策略作为标注,微调 PF-LLM 大语言模型;(b) 训练完成的 PF-LLM 从应用程序的汇编代码中,离线生成预取提示;(c) LMHint 硬件预取器在程序运行时,加载并利用这些预取提示做出精准的预取决策。
实验结果表明,这种“软硬结合”的新范式效果显著:
* 在内存密集型 SPEC 2017 基准测试上,PF-LLM 指导下的 LMHint Prefetcher,相比最先进的单个预取器,指令每周期数(IPC)平均提升了 9.8%;
* 而相比最先进的集成式预取器 Alecto,IPC 平均提升了 18.9%。
这证明了利用大语言模型来指导微架构决策的巨大潜力,为 AI 与计算机体系结构协同设计开辟了一条新路径。
一、核心挑战:硬件预取器的“先天局限”与“后天困境”
在深入探讨 PF-LLM 的技术细节前,首先需要明确其旨在解决的核心问题。硬件预取器的核心目标在于“预测”并“隐藏”内存访问延迟。
为实现这一目标,学术界与工业界已发展出多种预取器,它们各自擅长处理不同的内存访问模式。本研究在实验部分选取了 12 种具有代表性的预取器,其特性如下表所示:

表 2:所选子预取器及其目标访问模式。注:带星号 () 的预取器(如 Pythia、Bingo)因其内部状态复杂,在 PF-LLM 中被排除在“需求请求过滤”机制之外,以避免其内部状态被无关请求破坏。*
这种多样性引出了一个根本性问题:在单一程序中,没有任何一个预取器能在所有阶段始终保持最佳性能。例如,程序前期可能以数组遍历(步长模式)为主,而后期可能转为链表访问(不规则模式)。若仅采用单一预取器,必然在某些阶段表现不佳。
集成式预取器正是为解决此问题而设计。它通过一个“编排层”来协调多个子预取器协同工作。

图 2:预取器集成的编排层架构。(a) 需求请求的路由环节;(b) 预取请求的下发环节;(c) 编排器(包含路由器与多路复用器)作为核心控制模块。
如图 2 所示,编排层需做出两个关键决策:
1. 路由决策:当一个来自处理器的需求请求到达时,应将其发送给哪个(或哪些)子预取器进行训练?
2. 选择决策:当多个子预取器同时发出预取请求时,应选择哪一个下发至下一级缓存?
然而,现有集成方法(如 Alecto、DOL)的调度策略主要依赖在线学习。它们试图在运行时通过观察各子预取器的表现(如 IPC、命中率)来动态调整策略。这种在线学习机制存在两大缺陷:
* 适应性差:在线学习需要收敛时间。当程序阶段快速切换时,策略无法立即适应新模式,总是“事后诸葛亮”。
* 精度受限:受芯片面积与功耗限制,在线学习策略只能采用简单的硬件逻辑(如基于置信度的计数器或简单马尔可夫模型),无法利用更广泛的程序上下文(如代码结构、语义)做出更优决策。
这些瓶颈促使研究者思考新的方向:能否利用不受硬件资源限制的离线分析,为在线预取器提供精准指导?
二、创新破局:PF-LLM——基于代码静态分析的智能预取
PF-LLM 的核心思想是将复杂的“理解与决策”任务转移至离线阶段完成。其创新在于首次将大语言模型的代码理解能力与硬件预取器的实时执行能力相结合,构建了“离线分析,在线执行”的新架构。

图 3:PF-LLM 方法总览。(a) 利用架构仿真得到的真实最优预取策略作为标注数据,对 PF-LLM 模型进行微调;(b) 训练完成的模型从应用程序汇编代码中离线生成预取提示;(c) LMHint 硬件预取器在程序运行时加载并利用这些预取提示做出决策。
PF-LLM 的工作流程分为三个阶段:
1. 数据集生成:使用架构模拟器,通过穷举模拟所有可能的预取器配置,为每条加载指令找到理想情况下的最优预取策略,作为训练的“标准答案”。
2. 模型微调:使用包含汇编代码上下文及其对应“标准答案”的数据集,对一个专精于代码的小型大语言模型进行微调,使其学会根据代码预测预取策略。
3. 离线推理与在线执行:使用微调后的模型为新程序的二进制文件离线生成“预取提示表”。运行时,轻量级硬件预取器 LMHint 加载此表,并据此指导其在线行为。
2.1 PF-LLM 模型:基于汇编代码的预测
PF-LLM 选择 Qwen-2.5-Coder-0.5B-Instruct 作为基座模型。该模型参数量较小,保证了快速的推理速度,同时在代码任务上表现优异。模型输入是围绕目标加载指令的 257 行汇编代码(指令前后各 128 行)。选择汇编代码而非源代码主要基于两点考虑:
* 通用性:可直接应用于任何已编译的二进制文件,无需源代码。
* 精确性:汇编代码直接反映硬件运行时行为,避免了编译器优化引入的额外抽象层,与最终输出的硬件提示关联更紧密。
模型输出是一个结构化的 JSON 对象,包含三个关键提示:
* PFSel:指定由哪个子预取器为该加载指令发起预取。
* PF Degree:控制所选预取器的激进程度(归一化为 1、2、3),该值会被映射到各子预取器自身的度数范围。
* Filter:指定一个子预取器,使其忽略此加载指令的需求请求,避免无关数据污染其内部状态。
为有效训练模型,研究者设计了一个精妙的提示模板。

代码清单:PF-LLM 训练使用的提示模板。该模板基于官方对话格式,使用特殊令牌 <load> 和 </load> 精准定位目标指令,并要求模型输出结构化 JSON,降低了模型学习难度,加速了收敛。
2.2 数据集生成:通过穷举模拟构建真值数据集
获取每条加载指令的“标准答案”是训练模型的关键。研究者采用了一种系统性的方法:
2.2 数据集生成:从模拟到标注
为了构建PF-LLM的训练数据集,研究团队设计了一套系统性的数据生成流程,其核心步骤如下:
- 全配置模拟:针对每个基准程序,对“子预取器”与“预取度”的所有可能组合进行完整的硬件模拟。对于支持多档预取度的预取器(如保守、适中、激进),分别进行模拟;对于不支持度数控制的预取器,则进行单次模拟。模拟次数根据预取器特性动态确定,确保全面覆盖所有配置组合。
- 性能指标采集:在每次模拟中,记录下每一条由程序计数器(PC)标识的加载指令的平均内存访问时间(Average Memory Access Time, AMAT)。AMAT是衡量内存子系统性能的关键指标,其值越低代表性能越好。
- 最优/最差策略标注:对于每一条加载指令,在所有模拟结果中,筛选出AMAT最低的配置,将其对应的预取器类型和预取度标注为该指令的“最优策略”。同时,筛选出AMAT最高的配置,将其对应的预取器标注为需要“过滤”的对象(除非该预取器内部状态过于复杂,例如Pythia)。

表1:数据集生成过程。针对每个加载指令的程序计数器(PC),从平均内存访问时间(AMAT)最优的配置中选取最佳预取器类型及预取程度;从AMAT最差的配置中筛选出待剔除的预取器。该流程是PF-LLM训练数据集的核心生成依据。
通过上述流程,生成的训练数据完美地包含了“上下文”(程序代码片段)和“答案”(最优预取策略及需过滤的策略)。需要强调的是,训练数据全部来自SPEC 2006基准测试集,而SPEC 2017则被完全保留用于最终模型测试,以确保模型在评估时面对的是全新的、未见过的程序。
2.3 LMHint预取器硬件:高效执行“提示”的引擎
PF-LLM模型生成的预取提示,最终被加载到内存中的一张大表——预取提示表(Prefetch Hint Table, PHT)中。PHT以加载指令的虚拟PC地址为索引,每个条目存储一个8位的提示数据(包含4位用于选择预取器,2位用于选择预取度,2位用于选择过滤器)。
为了在运行时实现极低延迟的访问,LMHint预取器在芯片上设计了一个容量为256项的预取提示缓冲区(Prefetch Hint Buffer, PHB),用于缓存最近使用过的提示条目。PHB的功能类似于TLB缓存页表项,但PHB缓存的是从PC到预取提示的映射关系,而非虚拟地址到物理地址的翻译。当一条加载指令执行时,硬件使用其PC快速查询PHB:
- 命中:立即获取其对应的预取提示,并据此控制相应的子预取器。只有被选中的子预取器才能为该指令发起预取请求;同时,被指定为过滤器的子预取器将不会收到该指令的预取训练请求。
- 未命中:向内存中的PHT发送填充请求以获取提示。在此期间,系统使用一个默认的保守预取策略。
这一硬件设计非常精简,确保了查表操作能够在单周期甚至更短的延迟内完成,完全不会成为CPU流水线的性能瓶颈。
三、实验评估
理论需由数据验证。研究在ChampSim模拟器上进行了详尽的实验,模拟了一个接近Arm Neoverse N2核心的现代处理器配置。训练集使用SPEC 2006,测试集则使用全新的SPEC 2017,确保模型在测试时面对的是完全未知的程序。

表2:ChampSim仿真系统配置与工作负载编译环境。仿真核心配置模拟了主流的Arm Neoverse N2核心;所有工作负载均在统一的x86-64架构环境中编译。模型训练使用8张H20 GPU和BF16精度;每次仿真运行2亿条指令,以确保采集数据的统计有效性。将SPEC2006用于训练、SPEC2017用于测试,严格避免了数据泄露,保证了实验结论的可靠性。
3.1 PF-LLM的预测准确率
首先,评估PF-LLM模型本身的预测能力。经过训练,模型在验证集上的预测准确率最终达到了95%,如图4所示。

图4:PF-LLM模型训练收敛曲线。纵轴分别为训练损失和评估准确率,横轴为训练进度。模型最终的测试集预测准确率达到95.0%。
更为关键的是,当模型预测错误时,其预测结果常常是次优选项,如图5(a)的混淆矩阵所示。这意味着即使预测并非绝对最优,也通常是接近最优的策略,对最终硬件性能的影响微乎其微。

图5:PF-LLM性能评估。(a) 预取策略预测的混淆矩阵;(b) 各子预取器在程序中成为最优策略的频率分布。混淆矩阵显示错误预测多集中在功能相似的预取器之间。频率分布表明最优策略存在明显偏斜,为硬件精简提供了依据。
3.2 LMHint预取器的性能提升
在SPEC 2017测试集上,LMHint预取器表现卓越。图6展示了其相对于“无预取”基线的指令吞吐率(IPC)提升。

图6:LMHint预取器性能评估。(a) LMHint与现有顶尖单预取器相比的IPC提升百分比;(b) LMHint与现有预取器集成方法相比的IPC提升百分比。SW Prefetch为软件预取,Conf. Based为基于置信度的集成方法,Random为随机选择的朴素基线。
从图6(b)的几何平均结果可以得出:
- LMHint-SDF(全功能版)的平均性能,比最好的单预取器(Sandbox)高9.8%,比最好的传统集成方法(Alecto)高18.9%。这一提升幅度显著。
- LMHint-SDFR(精简版,仅包含4个最常用的子预取器)的性能与全功能版几乎持平。这证明,通过LLM的分析,可以大幅精简硬件设计,而无需牺牲性能。
3.3 深度剖析:LMHint 性能优势来源
为了深入理解性能提升的来源,我们对程序 654.roms_r 的 IPC 轨迹进行了分析。

图 9 展示了 654.roms_r 工作负载相对无预取基线的 IPC 加速比轨迹。该图与图 6 共享颜色图例。其中,(b) 图显示了传统预取器的 IPC 轨迹,(a) 图在其基础上叠加了 LMHint 预取器的轨迹。图中高亮的三个区域直观展示了 LMHint 超越传统基线的性能表现。
该图清晰地揭示了 LMHint 预取器的零延迟动态适配优势。其 IPC 轨迹能够紧密跟踪各个子预取器的性能上界。相比之下,传统预取器由于采用固定策略,无法适应程序运行过程中动态变化的内存访问模式。具体而言:
* 在内存访问模式多样的 区域 1,LMHint 通过细粒度的指令级策略编排,实现了各子预取器性能的叠加效应,从而超越了所有单一预取器。
* 在 区域 2 和 3,LMHint 能够瞬时切换至对应场景的最优预取器。
这一结果直接证明了离线 LLM 分析生成的提示,能使硬件预取器实现近乎“先知”的策略选择,从根本上解决了传统预取器动态适配滞后的核心问题。
图 9 的分析揭示了 PF-LLM 方法的两个关键优势:
1. 即时适配能力:在区域 ①、②、③ 中,LMHint 能够立即匹配上当前性能最优的单预取器,避免了在线学习或切换策略带来的延迟。
2. 超越单预取器极限:在区域 ①,LMHint 的性能甚至超过了所有单预取器。这是因为 PF-LLM 的提示允许它对不同指令进行精细编排,例如在某些阶段用 Stride 预取器处理一部分指令,同时用 Stream 预取器处理另一部分指令,并过滤掉不相关的请求。这种协同效应实现了“1+1 > 2”的性能提升。
3.4 可行性分析:推理开销评估
为了评估 PF-LLM 方法的实际部署可行性,我们对离线推理阶段的开销进行了量化分析。

图 10 为 PF-LLM 推理开销分析图,包含三个子图:(a) 不同 GPU 类型下的推理吞吐量(请求/秒);(b) 模型输入的汇编代码上下文长度分布;(c) SPEC2017 基准测试中,模型推理时间与应用程序二进制大小的关系。
分析结果表明,PF-LLM 的离线开销处于可接受范围,具备工程实用性:
* 推理效率高:在英伟达 H20 GPU 上,推理吞吐量达到 234 请求/秒。结合短且集中的汇编上下文长度,生成整个 SPEC2017 基准测试集的预取提示仅需约 38.5 分钟,与程序编译时间相当。
* 存储开销低:生成的提示信息存储开销仅为程序二进制文件大小的 7.26%,处于硬件可接受的范围内。
* 性价比突出:相较于该方法带来的 10-20% 的 IPC 性能提升,这一离线开销极具性价比。
该分析从工程角度证明了 PF-LLM 在性能提升与系统开销之间取得了良好平衡,缓解了学术界和工业界对引入 LLM 带来额外开销的担忧,为其实际部署提供了有力支持。
四、相关工作对比
为了更清晰地定位 PF-LLM 的贡献,我们将其与以下三类相关工作进行比较:
- 传统硬件预取器:如 Stride、Stream、Sandbox 等。它们是完全在线的硬件模块,仅依赖运行时地址流,缺乏对程序高层语义的理解。PF-LLM 则通过离线静态分析获得了这种语义理解能力。
- 编译器/Profile-Guided 的软件预取:如 GCC 的自动预取或 RPG。这类方法也进行离线分析,但严重依赖源代码或特定输入数据,且只能插入软件预取指令,无法直接控制硬件预取器。PF-LLM 的分析对象是二进制代码,并通过“提示”直接控制硬件的多个预取器单元。
- 集成式预取器:如 Alecto、DOL。它们试图在线学习并集成多个预取策略,但受限于硬件实现复杂度和策略收敛速度。PF-LLM 将复杂的“学习”过程完全离线化,在线部分仅执行轻量级的策略选择,从根本上解决了这两个问题。
从图 5(b)和图 7 的结果可以看出,Alecto 等在线集成方法的性能甚至可能不如最好的单预取器。这是因为其在线学习逻辑在面对复杂的空间预取器时,可能会干扰和破坏预取器的内部状态。PF-LLM 通过离线生成的“过滤”提示,可以完美地避免这一问题。
五、未来展望与挑战
PF-LLM 开创性地展示了 LLM 指导硬件微架构设计的潜力,但这仅仅是一个开端。未来仍有诸多方向值得探索:
- 通用性与扩展性:如何训练一个能适应不同缓存大小、内存带宽等机器配置的通用模型?一种可能的方案是将机器配置作为额外的提示信息输入模型。
- 对新指令集架构的支持:本文工作主要验证于 x86-64 架构。对于 ARM、RISC-V 等其他指令集,可以通过微调或迁移学习来使模型适应。
- 应对地址随机化与即时编译:
- 地址空间布局随机化(ASLR):论文提出了一种可行方案,即与操作系统加载器协同,对提示表应用与代码段相同的随机化偏移。但需注意,当前原型尚未实现此机制,这属于未来的工作方向。
- 即时编译(JIT):对于 JIT 生成的代码,可能需要在更底层的中间表示(IR)级别进行分析。
- 更广阔的应用领域:既然 LLM 能有效指导预取,那么它是否也能用于指导分支预测、缓存替换策略,甚至乱序执行调度?这为未来的“AI for Architecture”研究开辟了新的可能性。
结语
PF-LLM 的成功,不仅仅是性能指标的提升,更代表了一种全新的硬件-软件协同设计范式。它表明,我们可以利用强大的 AI 模型在离线阶段进行复杂的程序分析与优化规划,然后将最优策略“编译”成极简的提示信息,交由在线的硬件高效执行。这种方法既突破了硬件在复杂度与功耗上的限制,又获得了 AI 带来的智能优势。
通过为硬件预取器提供前瞻性的洞察,PF-LLM 在破解“内存墙”难题的道路上迈出了坚实的一步。随着 AI 技术的持续发展,我们相信未来将有越来越多的微架构决策会得到 AI 模型的辅助,共同推动构建更强大、更智能的计算系统。
- ISCA’25 | AMALI:一种面向GPU大语言模型推理的性能建模方法。该工作通过张量核心优化与Warp分布分析,构建了比GCoM误差更低的GPU推理性能分析模型。
- OSDI’25 | 顺序性能优化的系统化框架。该研究提出了包含三大原则与八大方法的优化框架,并基于此训练了SysGPT建议模型,其优化建议准确率超过GPT-4达64.6%。
- 大语言模型推理的极限建模。一项研究提出了一个综合性的性能建模视角,指出带宽、计算、同步和容量是影响LLM推理性能的关键要素。

关注“鲸栖”小程序,掌握最新AI资讯
本文来自网络搜集,不代表鲸林向海立场,如有侵权,联系删除。转载请注明出处:https://www.itsolotime.com/archives/27922


