You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ARM HPI模型无法模拟SVE指令,gem5运行受阻于ptrue指令

解决gem5模拟SVE程序卡在ptrue指令的问题

问题背景

模拟包含SVE指令的Tower程序时,程序卡在ptrue指令处,调试日志显示该指令无法被任何功能单元(FU)执行:

27581250: system.cpu_cluster.cpus.execute.lsq.storeBuffer: StoreBuffer step numUnissuedAccesses: 0
27581250: system.cpu_cluster.cpus.execute: No interrupt controller
27581250: system.cpu_cluster.cpus.execute: [tid:0] thread_interrupted?=0 isInbetweenInsts?=1
27581250: system.cpu_cluster.cpus.execute: Attempting to issue [tid:0]
27581250: system.cpu_cluster.cpus.execute: Trying to issue inst: 0/437.569/2719/11034.12613 pc: 0x400e80 (ptrue) to FU: 0
27581250: system.cpu_cluster.cpus.execute: Can't issue as FU: 0 isn't capable
27581250: system.cpu_cluster.cpus.execute: Trying to issue inst: 0/437.569/2719/11034.12613 pc: 0x400e80 (ptrue) to FU: 1
27581250: system.cpu_cluster.cpus.execute: Can't issue as FU: 1 isn't capable
27581250: system.cpu_cluster.cpus.execute: Trying to issue inst: 0/437.569/2719/11034.12613 pc: 0x400e80 (ptrue) to FU: 2
27581250: system.cpu_cluster.cpus.execute: Can't issue as FU: 2 isn't capable
27581250: system.cpu_cluster.cpus.execute: Trying to issue inst: 0/437.569/2719/11034.12613 pc: 0x400e80 (ptrue) to FU: 3
27581250: system.cpu_cluster.cpus.execute: Can't issue as FU: 3 isn't capable
27581250: system.cpu_cluster.cpus.execute: Trying to issue inst: 0/437.569/2719/11034.12613 pc: 0x400e80 (ptrue) to FU: 4
27581250: system.cpu_cluster.cpus.execute: Can't issue as FU: 4 isn't capable
27581250: system.cpu_cluster.cpus.execute: Trying to issue inst: 0/437.569/2719/11034.12613 pc: 0x400e80 (ptrue) to FU: 5
27581250: system.cpu_cluster.cpus.execute: Can't issue as FU: 5 isn't capable
27581250: system.cpu_cluster.cpus.execute: Trying to issue inst: 0/437.569/2719/11034.12613 pc: 0x400e80 (ptrue) to FU: 6
27581250: system.cpu_cluster.cpus.execute: Can't issue as FU: 6 isn't capable
27581250: system.cpu_cluster.cpus.execute: Didn't issue inst: 0/437.569/2719/11034.12613 pc: 0x400e80 (ptrue)

测试环境:

  • 程序:Tower
  • 编译器:aarch64-linux-gnu-gcc
  • 编译参数:-O3 --static -march=armv8-a+sve
  • gem5运行命令:./build/ARM/gem5.opt -d ./se_results/$$test_prog ./configs/example/arm/starter_se.py --cpu="hpi" $$test_prog

解决方案

1. 启用CPU的SVE功能

HPI CPU默认未开启SVE支持,需在运行命令中添加--cpu-options="sv_en=True"参数,指定启用SVE:

./build/ARM/gem5.opt -d ./se_results/$$test_prog ./configs/example/arm/starter_se.py --cpu="hpi" --cpu-options="sv_en=True" $$test_prog

若需要指定SVE向量长度(如256位),可额外添加--sve-vl=256参数。

2. 确认gem5编译时已开启SVE支持

如果上述步骤无效,需检查gem5编译时是否启用了SVE特性,重新编译时添加对应选项:

scons build/ARM/gem5.opt -j$(nproc) CPU_MODELS=HPI ENABLE_SVE=1

不同gem5版本的编译选项可能略有差异,可参考对应版本的官方文档确认。

3. 验证SVE功能是否生效

启动gem5后,可查看初始化日志中是否包含SVE相关功能单元的信息,或通过调试命令确认CPU的SVE配置已启用。

内容的提问来源于stack exchange,提问作者Ling Yang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 19:18:36