GEM5是性能仿真的首选工具,封装了很多外部依赖和相干工具提升仿真效率和便捷性。但是这也为定制和效率优化设置了障碍
分析GEM5的结构,对关键能力做拆解,找到核心仿真逻辑(总量近170w行,超过110w行有效代码,核心71w,其中ISA近半)

关键仿真框架
| 核心模块 | 文件数 | 有效代码 | 占核心 |
|---|---|---|---|
| src/arch(ISA 与译码) | 1,101 | 354,957 | 50.0% |
| src/mem(内存与一致性) | 660 | 130,688 | 18.4% |
| src/dev(设备模型) | 402 | 69,120 | 9.7% |
| src/cpu(CPU 模型) | 344 | 58,441 | 8.2% |
| src/python(配置层) | 256 | 30,426 | 4.3% |
| src/base(基础设施) | 194 | 29,134 | 4.1% |
| src/sim(事件内核) | 173 | 19,673 | 2.8% |
| src/gpu-compute(GPU 管线) | 73 | 15,569 | 2.2% |
| 其余(kern、proto、sst) | 25 | 1,923 | 0.3% |
GEM5指令部分,自带了6组ISA指令,包括ARM(多代:SVE\SME\SME2)、AMDGPU(Vega\CDNA3)、x86-64、RISC-V、SPRAC、MIPS、POWER
功能组件
指令
执行(计算)
- CPU 侧提供 AtomicSimple、TimingSimple、NonCachingSimple、O3、Minor 五类时序模型,外加 KVM、TraceCPU 与 Checker;分支预测覆盖 LocalBP、TournamentBP、BiModeBP、TAGE、LTAGE、TAGE-SC-L,v26 新增 ITTAGE;预取器有 Stride、Tagged、AMPM、DCPT、ISB、BOP、SMS、SBOOE、STeMS、PIF、SignaturePath、FetchDirected 等十余类。精度梯度从“一拍一指令”一直铺到乱序执行,这是 gem5 最难被替代的能力之一。
存储与一致性(经典模式与Ruby方法)
- 多种经典存储模型与一致性方案。涵盖 DDR3/4/5、GDDR5、HBM、LPDDR2/3/5与WideIO,并且导入了DRAMsim2、DRAMsim3、DRAMSys外部模型。
- Ruby路径采用SLICC描述一致性协议,包含11套协议,包括MI_example、MESI两级/三级、MESI三级HTM、MOESI CMP directory/token、MOESI hammer、MOESI AMD、Garnet standalone、GPU VIPER与CHI
设备层
- 有 28 个直接继承 SimObject 的模型,覆盖 PCI/PCIe、virtio(block、net、9p、input)、8250/PL011 串口、PS/2、I2C、RTC、8254 定时器、IDE/存储、网卡、帧缓冲、DMA 与 GIC/IOAPIC 中断控制器,足以支撑 Linux 全系统启动。GPU 侧由 src/arch/amdgpu、src/gpu-compute、src/dev/amdgpu 与 GPU_VIPER 协议组成,合计约 19.0 万行;v26 的 GPUFS 可在 MI300X 上启动 ROCm 7.2/7.14,并补充了 Triton 使用的指令与矩阵操作。但代码库中没有 NVIDIA 或 Intel GPU 模型,这是硬边界。系统集成层提供 SystemC/TLM 协同仿真(119 个文件、2.4 万行有效代码),v26 新增 CHI-TLM 与 mesh 拓扑;SST 集成则保持在较小的规模
配置、统计与构建
- 可配置性由 Python 层承载:149 个直接继承 SimObject 的类、1,426 个类定义、2,577 个 Param 声明,配合 pybind11 在运行时构建 C++ 对象图;统计框架在核心代码中约有 2,700 处注册点。构建侧使用 154 个 SConscript、28 个 Kconfig 文件与 C++20 标准,最终产出 build/ALL/gem5.opt。参数化程度高是优点,但也意味着同一份拓扑要在 Python 与 C++ 两侧维护,排障链路更长。
7 个 ISA、5 类 CPU 模型、11 套 Ruby 协议、28 个设备模型与 AMDGPU 全系统,构成了从指令到平台的完整覆盖;
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/kkk12344/article/details/170247958



