一、基础架构与核心概念 (1-50)
| 序号 | 术语 | 解释 |
|---|---|---|
| 1 | gem5 | 开源模块化计算机体系结构模拟器,支持多种 ISA 和详细微架构建模 |
| 2 | SimObject | gem5 的基础建模单元,所有模拟组件(CPU、缓存、内存)都继承自此基类 |
| 3 | Discrete Event Simulation (DES) | 离散事件模拟,gem5 的核心仿真机制,通过事件队列调度推进模拟时间 |
| 4 | Tick | gem5 的时间单位,通常 1 tick = 1 ps(皮秒),全局时钟频率为 10 12 10^{12} 1012 ticks/秒 |
| 5 | Event Queue | 事件队列,管理所有 SimObject 调度的事件,按时间顺序执行 |
| 6 | Event | 事件对象,包含执行时间和回调函数,是 DES 的基本调度单元 |
| 7 | Scheduling | 事件调度,通过 schedule() 方法将事件插入未来时间点 |
| 8 | Port | 端口接口,实现 SimObject 之间的模块化连接,支持任意内存组件互联 |
| 9 | Master Port | 主端口,发起内存请求(如 CPU 到缓存) |
| 10 | Slave Port | 从端口,接收并响应内存请求(如缓存到 CPU) |
| 11 | Request | 内存请求对象,包含地址、大小、类型(读/写)等元数据 |
| 12 | Packet | 数据包,封装请求/响应及实际数据,在端口间传递 |
| 13 | ISA (Instruction Set Architecture) | 指令集架构,gem5 支持 X86、ARM、RISC-V、Alpha、MIPS、SPARC、Power |
| 14 | SE Mode (Syscall Emulation) | 系统调用模拟模式,模拟用户态代码,系统调用转交给宿主机 OS |
| 15 | FS Mode (Full System) | 全系统模式,模拟完整硬件系统,运行未修改的 Linux 内核 |
| 16 | Execute-in-Execute | gem5 的执行语义,指令在流水线执行阶段才真正执行,区别于基于 Trace 的模拟 |
| 17 | Host | 宿主机,运行 gem5 模拟器的物理机器 |
| 18 | Guest | 客户机,被模拟的目标系统 |
| 19 | Target | 模拟目标,指被模拟的架构(如模拟 ARM 时 ARM 是 target) |
| 20 | Workload | 工作负载,指在模拟系统中运行的程序或基准测试 |
| 21 | Binary | 二进制可执行文件,SE 模式下直接加载运行 |
| 22 | Kernel | 内核镜像,FS 模式下启动操作系统所需的 Linux 内核文件 |
| 23 | Disk Image | 磁盘镜像,FS 模式下包含文件系统和应用程序的虚拟磁盘 |
| 24 | Checkpoint | 检查点,保存模拟状态以便后续恢复或快速前进 |
| 25 | Fast Forwarding | 快速前进,跳过不感兴趣的区域加速到达目标模拟点 |
| 26 | ROI (Region of Interest) | 感兴趣区域,研究者关注的模拟时间段 |
| 27 | Warmup | 预热阶段,在正式统计前运行一段时间使系统状态稳定 |
| 28 | Statistics (Stats) | 统计系统,记录模拟过程中各组件的性能计数器 |
| 29 | m5out/ | 默认输出目录,包含 stats.txt、config.ini、simout 等结果文件 |
| 30 | config.ini | 生成的配置文件,记录模拟系统的完整配置 |
| 31 | stats.txt | 统计结果文件,包含 tick 数、访存次数、IPC 等指标 |
| 32 | debug flags | 调试标志,用于控制调试输出粒度(如 --debug-flags=Cache) |
| 33 | Trace | 执行追踪,记录指令或事件的详细执行过程 |
| 34 | Python Configuration | Python 配置脚本,使用 Python API 实例化 SimObject 构建系统 |
| 35 | SCons | gem5 的构建系统,类似 Make,使用 SConstruct 文件定义编译规则 |
| 36 | Build Target | 编译目标,如 build/X86/gem5.opt 指定 ISA 和编译类型 |
| 37 | gem5.opt | 优化版本,启用编译优化,运行速度快但调试信息较少 |
| 38 | gem5.debug | 调试版本,包含完整调试符号,适合开发调试 |
| 39 | gem5.fast | 快速版本,移除统计和调试代码,速度最快但功能受限 |
| 40 | gem5.prof | 性能分析版本,支持 gprof 性能分析 |
| 41 | Cross Compilation | 交叉编译,在宿主机上生成目标 ISA 的可执行文件 |
| 42 | Static Binary | 静态链接二进制,SE 模式下推荐,不依赖动态库 |
| 43 | Dynamic Binary | 动态链接二进制,SE 模式下需要额外配置库路径 |
| 44 | Syscall Emulation | 系统调用仿真层,拦截 guest 系统调用并转给 host |
| 45 | Page Table | 页表,虚拟地址到物理地址的映射结构,FS 模式下完全模拟 |
| 46 | TLB (Translation Lookaside Buffer) | 地址转换后备缓冲,缓存近期页表项加速地址转换 |
| 47 | Virtual Memory | 虚拟内存,FS 模式下完整模拟,SE 模式下简化处理 |
| 48 | Physical Memory | 物理内存,模拟系统的实际 DRAM 地址空间 |
| 49 | Memory Map | 内存映射,定义物理地址空间的布局(如设备寄存器位置) |
| 50 | IO Device | 输入输出设备,FS 模式下模拟磁盘、网卡、显卡等 |
二、CPU 模型与微架构 (51-100)
| 序号 | 术语 | 解释 |
|---|---|---|
| 51 | AtomicSimpleCPU | 原子简单 CPU,功能模拟,内存访问瞬时完成,速度最快 |
| 52 | TimingSimpleCPU | 时序简单 CPU,功能模拟但考虑内存访问时序,用于快速时序分析 |
| 53 | O3CPU | 乱序执行 CPU,详细模拟 out-of-order 流水线,支持多发射、推测执行 |
| 54 | MinorCPU | 顺序流水线 CPU,模拟可配置的 in-order 流水线,适合教学 |
| 55 | InOrder CPU | 顺序执行 CPU(旧版),逐条执行指令,模拟简单流水线 |
| 56 | KVM CPU | 基于内核虚拟机的 CPU 模型,利用硬件虚拟化加速,接近原生速度 |
| 57 | DerivO3CPU | 派生 O3 CPU,O3CPU 的变体,支持 Ruby 内存系统 |
| 58 | Fetch Stage | 取指阶段,从 I-Cache 获取指令送入流水线 |
| 59 | Decode Stage | 译码阶段,解析指令并确定操作类型 |
| 60 | Rename Stage | 重命名阶段,将架构寄存器映射到物理寄存器,消除 WAW/WAR 冒险 |
| 61 | Issue Stage | 发射阶段,将指令分发到相应功能单元 |
| 62 | Execute Stage | 执行阶段,在功能单元中执行运算 |
| 63 | Writeback Stage | 写回阶段,将结果写回物理寄存器 |
| 64 | Commit Stage | 提交阶段,按序提交指令并更新架构状态 |
| 65 | Pipeline Stages | 流水线级数,O3CPU 默认 7 级但可配置延迟模拟不同深度 |
| 66 | Superscalar | 超标量,每周期发射多条指令,O3CPU 支持多发射宽度配置 |
| 67 | Instruction Queue (IQ) | 指令队列,存储等待发射的已译码指令 |
| 68 | Reorder Buffer (ROB) | 重排序缓冲,支持乱序执行和精确异常 |
| 69 | Load/Store Queue (LSQ) | 访存队列,管理未完成的 load/store 操作,维护内存序 |
| 70 | Physical Register File (PRF) | 物理寄存器堆,实现寄存器重命名和推测执行 |
| 71 | Branch Predictor | 分支预测器,预测跳转方向降低流水线气泡 |
| 72 | Tournament Predictor | 锦标赛预测器,组合多种预测算法,gem5 默认分支预测器 |
| 73 | BTB (Branch Target Buffer) | 分支目标缓冲,缓存分支指令的目标地址 |
| 74 | RAS (Return Address Stack) | 返回地址栈,预测函数返回地址 |
| 75 | Functional Unit | 功能单元,执行具体运算(ALU、FPU、Load/Store 等) |
| 76 | ALU | 算术逻辑单元,执行整数运算 |
| 77 | FPU | 浮点单元,执行浮点运算 |
| 78 | SIMD Unit | 单指令多数据单元,执行向量运算 |
| 79 | Load Unit | 加载单元,专门处理内存读操作 |
| 80 | Store Unit | 存储单元,专门处理内存写操作 |
| 81 | Operation Class | 操作类别,将指令分组到不同功能单元(如 IntALU、FloatMult) |
| 82 | Instruction Latency | 指令延迟,特定指令在功能单元中的执行周期数 |
| 83 | Pipelined Functional Unit | 流水线化功能单元,支持多指令重叠执行 |
| 84 | Non-pipelined Functional Unit | 非流水线功能单元,指令串行执行 |
| 85 | Issue Width | 发射宽度,每周期可同时发射的指令数 |
| 86 | Commit Width | 提交宽度,每周期可同时提交的指令数 |
| 87 | Fetch Width | 取指宽度,每周期可同时取指的指令数 |
| 88 | Speculation | 推测执行,预测分支后继续执行,错误时回滚 |
| 89 | Squash | 冲刷流水线,分支预测错误时取消推测指令 |
| 90 | Precise Exception | 精确异常,异常发生时架构状态与指令序一致 |
| 91 | Imprecise Exception | 非精确异常,乱序执行中异常点可能不确定 |
| 92 | Context Switch | 上下文切换,FS 模式下 OS 切换进程时的状态保存/恢复 |
| 93 | Thread Context | 线程上下文,包含 PC、寄存器、特权级等状态 |
| 94 | Hardware Thread | 硬件线程,SMT 中一个物理核支持的逻辑执行流 |
| 95 | SMT (Simultaneous Multithreading) | 同时多线程,单核同时执行多线程指令流 |
| 96 | CPU ID | CPU 标识符,区分系统中不同处理器核心 |
| 97 | Core Count | 核心数,系统中 CPU 核心的总数 |
| 98 | Thread Count | 线程数,系统中并发执行的线程总数 |
| 99 | CPI (Cycles Per Instruction) | 每指令周期数,性能指标,CPI = 总周期 / 指令数 |
| 100 | IPC (Instructions Per Cycle) | 每周期指令数,性能指标,IPC = 1/CPI |
三、内存系统 - Classic (101-150)
| 序号 | 术语 | 解释 |
|---|---|---|
| 101 | Classic Memory System | 经典内存系统,内置缓存层次结构,使用固定 MOESI 协议 |
| 102 | Cache Hierarchy | 缓存层次结构,多级缓存(L1/L2/L3)的组织方式 |
| 103 | L1 Cache | 一级缓存,分为 L1-I(指令)和 L1-D(数据) |
| 104 | L2 Cache | 二级缓存,通常作为 LLC(Last Level Cache) |
| 105 | L3 Cache | 三级缓存,多核共享的大容量缓存 |
| 106 | Private Cache | 私有缓存,专属于单个 CPU 核心 |
| 107 | Shared Cache | 共享缓存,多个核心共同访问 |
| 108 | Inclusive Cache | 包含式缓存,下级缓存内容必然存在于上级缓存 |
| 109 | Exclusive Cache | 排他式缓存,同级缓存内容互斥存在(如 MOESI_hammer) |
| 110 | Non-inclusive Cache | 非包含式缓存,不强制包含关系,更灵活但一致性复杂 |
| 111 | Cache Line | 缓存行,缓存的最小管理单元,通常 64 字节 |
| 112 | Cache Block | 缓存块,同 Cache Line |
| 113 | Cache Set | 缓存组,组相联缓存中索引相同的行集合 |
| 114 | Cache Way | 缓存路,组相联度,每组的行数 |
| 115 | Tag | 标记,标识缓存行对应的内存地址高位 |
| 116 | Index | 索引,用于定位缓存组 |
| 117 | Offset | 偏移,块内地址偏移 |
| 118 | Valid Bit | 有效位,标识缓存行数据是否有效 |
| 119 | Dirty Bit | 脏位,标识缓存行是否被修改(需写回) |
| 120 | Replacement Policy | 替换策略,组满时选择替换的算法(LRU、FIFO、Random) |
| 121 | LRU (Least Recently Used) | 最近最少使用,常用替换算法 |
| 122 | Write Policy | 写策略,Write-back(回写)或 Write-through(直写) |
| 123 | Write-back | 回写,修改只更新缓存,替换时写回内存 |
| 124 | Write-through | 直写,修改同时更新缓存和内存 |
| 125 | Write-allocate | 写分配,写缺失时加载整行到缓存 |
| 126 | No-write-allocate | 非写分配,写缺失时直接写内存不加载 |
| 127 | Cache Coherence | 缓存一致性,多核间缓存数据的一致性维护 |
| 128 | Coherence Protocol | 一致性协议,定义缓存行状态转换规则 |
| 129 | MOESI | 经典缓存一致性协议,包含 Modified/Owned/Exclusive/Shared/Invalid 状态 |
| 130 | Modified (M) | 修改状态,缓存行被修改且独占,需写回内存 |
| 131 | Owned (O) | 拥有状态,缓存行被修改但可共享,负责写回内存 |
| 132 | Exclusive (E) | 独占状态,缓存行与内存一致且独占,可静默修改 |
| 133 | Shared (S) | 共享状态,缓存行与内存一致且多副本存在 |
| 134 | Invalid (I) | 无效状态,缓存行不可用 |
| 135 | Snooping | 侦听,缓存通过监听总线请求维护一致性 |
| 136 | Bus | 总线,Classic 系统中连接缓存和内存的共享介质 |
| 137 | Crossbar | 交叉开关,多对多连接结构,Classic 缓存层次使用 |
| 138 | Point-to-Point | 点对点连接,直接连接两个组件 |
| 139 | Memory Side Port | 内存侧端口,缓存向下一级(靠近内存)连接的端口 |
| 140 | CPU Side Port | CPU 侧端口,缓存向上一级(靠近 CPU)连接的端口 |
| 141 | Cache Access Latency | 缓存访问延迟,命中时从请求到响应的周期数 |
| 142 | Miss Latency | 缺失延迟,从请求到数据到达的总时间 |
| 143 | Hit Rate | 命中率,访问命中缓存的比例 |
| 144 | Miss Rate | 缺失率,访问未命中缓存的比例 |
| 145 | Miss Penalty | 缺失惩罚,处理缺失所需的额外时间 |
| 146 | Prefetcher | 预取器,预测并提前加载未来可能访问的数据 |
| 147 | Stride Prefetcher | 步幅预取器,检测固定间隔访问模式 |
| 148 | Tagged Prefetcher | 标记预取器,为每个块维护预取状态 |
| 149 | DCPT (Delta Correlation Prediction Table) | 差值相关预测表,基于历史差值模式的预取 |
| 150 | Cache Flush | 缓存刷新,强制写回所有脏行并清空缓存 |
四、内存系统 - Ruby (151-200)
| 序号 | 术语 | 解释 |
|---|---|---|
| 151 | Ruby Memory System | Ruby 内存系统,来自 GEMS,支持灵活缓存一致性协议建模 |
| 152 | SLICC (Specification Language for Implementing Cache Coherence) | 缓存一致性协议领域专用语言,用于定义 Ruby 协议 |
| 153 | Protocol Definition | 协议定义,使用 SLICC 描述状态机和转换规则 |
| 154 | State Machine | 状态机,描述缓存行在不同事件下的状态转换 |
| 155 | Transient State | 瞬态,状态转换过程中的临时状态(如 IM、IS) |
| 156 | Stable State | 稳态,缓存行的长期稳定状态(如 M、S、I) |
| 157 | MI_example | Ruby 示例协议,单级缓存,用于教学 |
| 158 | MESI_CMP_directory | MESI 协议实现,单芯片 2 级缓存,严格包含层次 |
| 159 | MOESI_CMP_directory | MOESI 协议实现,多芯片 2 级缓存,非包含层次 |
| 160 | MOESI_CMP_token | MOESI Token 协议,基于令牌的缓存一致性 |
| 161 | MOESI_hammer | MOESI Hammer 协议,单芯片 2 级私有缓存,严格排他 |
| 162 | Directory Protocol | 目录协议,使用中央目录跟踪缓存行状态 |
| 163 | Snooping Protocol | 侦听协议,通过总线广播维护一致性 |
| 164 | Directory Controller | 目录控制器,管理目录项和转发请求 |
| 165 | Memory Controller | 内存控制器,管理 DRAM 访问调度 |
| 166 | Cache Controller | 缓存控制器,执行协议状态机逻辑 |
| 167 | Sequencer | 序列器,Ruby 中管理访存请求顺序的组件 |
| 168 | Request Message | 请求消息,缓存间通信的请求包 |
| 169 | Response Message | 响应消息,对请求的应答包 |
| 170 | Forward Message | 转发消息,将请求转发给其他缓存 |
| 171 | Data Message | 数据消息,携带实际缓存行数据 |
| 172 | Network Message | 网络消息,在网络上传输的基本单元 |
| 173 | Garnet | Ruby 的详细互连网络模型,支持拓扑和路由建模 |
| 174 | Simple Network | 简单网络模型,简化的网络延迟模型 |
| 175 | Topology | 网络拓扑,节点连接方式(Mesh、Torus、Crossbar) |
| 176 | Mesh Topology | 网格拓扑,二维阵列连接 |
| 177 | Torus Topology | 环面拓扑,带环绕连接的网格 |
| 178 | Crossbar Topology | 交叉开关拓扑,全连接结构 |
| 179 | Butterfly Topology | 蝶形拓扑,多级互连网络 |
| 180 | Router | 路由器,网络中转发消息的节点 |
| 181 | Virtual Channel (VC) | 虚拟通道,物理链路上的逻辑分离通道 |
| 182 | VC Allocator | 虚拟通道分配器,管理 VC 资源分配 |
| 183 | Switch Allocator | 开关分配器,管理交叉开关的输入输出连接 |
| 184 | Routing Algorithm | 路由算法,确定消息从源到目的的路径 |
| 185 | XY Routing | XY 路由,先 X 方向后 Y 方向的确定性路由 |
| 186 | West-first Routing | 西优先路由,自适应路由算法之一 |
| 187 | Flow Control | 流量控制,管理网络拥塞和资源分配 |
| 188 | Credit-based Flow Control | 基于信用的流控,下游向上游发送信用表示可用缓冲 |
| 189 | Link Latency | 链路延迟,消息经过一条链路的周期数 |
| 190 | Router Latency | 路由器延迟,消息经过路由器的周期数 |
| 191 | Network Latency | 网络延迟,消息从源到目的的总时间 |
| 192 | Injection Rate | 注入率,节点向网络发送消息的速率 |
| 193 | Saturation | 饱和,网络负载超过容量导致性能骤降 |
| 194 | Deadlock | 死锁,循环等待导致系统停滞 |
| 195 | Livelock | 活锁,消息持续转发但无法到达目的地 |
| 196 | Starvation | 饥饿,某些请求长期得不到服务 |
| 197 | Protocol Verification | 协议验证,检查协议正确性和无死锁 |
| 198 | Cache Block Size | 缓存块大小,Ruby 中可配置的块大小 |
| 199 | Machine Type | 机器类型,SLICC 中定义的处理单元类型(L1、L2、Directory) |
| 200 | In_port/Out_port | 输入/输出端口,SLICC 中定义的消息接口 |
五、DRAM 与存储系统 (201-240)
| 序号 | 术语 | 解释 |
|---|---|---|
| 201 | DRAM Model | DRAM 模型,gem5 的事件驱动内存控制器 |
| 202 | Memory Controller | 内存控制器,管理 DRAM 访问和调度 |
| 203 | Command Queue | 命令队列,存储待处理的 DRAM 命令 |
| 204 | Read Queue | 读队列,存储待处理的读请求 |
| 205 | Write Queue | 写队列,存储待处理的写请求 |
| 206 | Refresh | 刷新,定期刷新 DRAM 保持数据 |
| 207 | tCK | 时钟周期,DRAM 时钟的基本时间单位 |
| 208 | tRCD | 行地址到列地址延迟,激活到读/写的最小周期 |
| 209 | tRP | 行预充电时间,关闭当前行准备下一行的周期 |
| 210 | tRAS | 行激活时间,激活命令到预充电的最小周期 |
| 211 | tCL (CAS Latency) | 列地址选通延迟,读命令到数据输出的周期 |
| 212 | tCWL | 写命令到数据输入的延迟 |
| 213 | tRRD | 行到行激活延迟,连续激活命令的最小间隔 |
| 214 | tFAW | 四激活窗口,限制单位时间内的激活次数 |
| 215 | tRFC | 刷新周期,刷新命令的持续时间 |
| 216 | tWR | 写恢复时间,写完成到预充电的间隔 |
| 217 | tRTP | 读到预充电时间,读完成到预充电的间隔 |
| 218 | tWTR | 写到读时间,写完成到读命令的间隔 |
| 219 | Bank | 存储体,DRAM 芯片内的独立存储阵列 |
| 220 | Bank Group | 存储体组,DDR4 中进一步划分的组织单位 |
| 221 | Rank | 秩,共享地址/命令线的 DRAM 芯片组 |
| 222 | Channel | 通道,独立的 DRAM 数据通路 |
| 223 | DIMM | 双列直插内存模块,物理内存条 |
| 224 | Row Buffer | 行缓冲,DRAM 中缓存激活行的读出放大器 |
| 225 | Row Buffer Hit | 行缓冲命中,访问已激活行的快速访问 |
| 226 | Row Buffer Miss | 行缓冲缺失,需激活新行的慢速访问 |
| 227 | Closed Page Policy | 关闭页策略,访问后立即预充电 |
| 228 | Open Page Policy | 开放页策略,保持行开放以待后续访问 |
| 229 | Adaptive Page Policy | 自适应页策略,根据访问模式动态选择 |
| 230 | Request Scheduling | 请求调度,选择下一个执行的内存命令 |
| 231 | FR-FCFS (First-Ready First-Come-First-Serve) | 先准备好先服务,考虑数据就绪的调度算法 |
| 232 | FCFS (First-Come-First-Serve) | 先来先服务,简单调度算法 |
| 233 | Write Draining | 写排空,定期将写队列排空避免饥饿 |
| 234 | High Watermark | 高水位,触发写排空的写队列阈值 |
| 235 | Low Watermark | 低水位,停止写排空的写队列阈值 |
| 236 | DRAM Power Model | DRAM 功耗模型,模拟各种状态的功耗 |
| 237 | IDD | DRAM 电流,不同操作模式的电流值 |
| 238 | Power-down Mode | 低功耗模式,关闭部分电路节省能耗 |
| 239 | Self-refresh Mode | 自刷新模式,最低功耗保持数据状态 |
| 240 | DRAMSim2/DRAMSys | 第三方 DRAM 模拟器接口,gem5 可集成 |
六、系统配置与开发 (241-280)
| 序号 | 术语 | 解释 |
|---|---|---|
| 241 | Configuration Script | 配置脚本,Python 文件定义模拟系统 |
| 242 | stdlib (Standard Library) | 标准库,gem5 v21+ 引入的高级 Python API |
| 243 | Component | 组件,stdlib 中的可重用系统构建块 |
| 244 | Board | 主板组件,stdlib 中系统的基板(SimpleBoard、X86Board) |
| 245 | Processor | 处理器组件,封装 CPU 核心和缓存 |
| 246 | CacheHierarchy | 缓存层次组件,定义缓存拓扑 |
| 247 | Memory | 内存组件,定义 DRAM 配置 |
| 248 | Simulator | 模拟器对象,stdlib 中控制模拟执行的类 |
| 249 | SimObject Binding | SimObject 绑定,Python 对象与 C++ 对象的关联 |
| 250 | Param (Parameter) | 参数,SimObject 的可配置属性 |
| 251 | Default Value | 默认值,参数的预设值 |
| 252 | Vector Param | 向量参数,列表类型的参数(如多个地址范围) |
| 253 | Port Connection | 端口连接,通过 = 操作符连接两个端口 |
| 254 | Range | 地址范围,定义内存映射的连续区域 |
| 255 | AddrRange | 地址范围对象,指定起始地址和大小 |
| 256 | Interleaved Addressing | 交错寻址,地址分散到多个通道提高带宽 |
| 257 | Memory Map | 内存映射,定义物理地址空间布局 |
| 258 | IO Address Range | IO 地址范围,设备寄存器映射的地址空间 |
| 259 | Interrupt Controller | 中断控制器,管理设备中断请求 |
| 260 | PIC (Programmable Interrupt Controller) | 可编程中断控制器,x86 的中断管理单元 |
| 261 | GIC (Generic Interrupt Controller) | 通用中断控制器,ARM 的中断管理单元 |
| 262 | PLIC (Platform-Level Interrupt Controller) | 平台级中断控制器,RISC-V 的中断管理 |
| 263 | CLINT (Core Local Interruptor) | 核心本地中断器,RISC-V 的定时中断 |
| 264 | Timer | 定时器,提供周期性中断和时间基准 |
| 265 | UART (Universal Asynchronous Receiver-Transmitter) | 通用异步收发器,串口通信设备 |
| 266 | Terminal | 终端,FS 模式下与系统交互的串口界面 |
| 267 | VNC Server | 虚拟网络计算服务器,FS 模式下提供图形界面 |
| 268 | Disk Device | 磁盘设备,IDE/SATA/NVMe 存储设备模型 |
| 269 | Ethernet Device | 网卡设备,模拟网络接口控制器 |
| 270 | 9P File System | 9P 文件系统,FS 模式下 host-guest 文件共享 |
| 271 | m5 Ops | m5 操作指令,guest 中与模拟器交互的特殊指令 |
| 272 | m5 exit | 退出模拟,立即终止模拟 |
| 273 | m5 checkpoint | 创建检查点,保存当前状态 |
| 274 | m5 resetstats | 重置统计,清零性能计数器 |
| 275 | m5 dumpstats | 转储统计,输出当前统计值 |
| 276 | m5 readfile | 读取文件,从 host 读取文件内容 |
| 277 | m5 writefile | 写入文件,向 host 写入文件 |
| 278 | m5 initparam | 初始化参数,读取配置参数 |
| 279 | Pseudo Inst | 伪指令,m5 操作指令的底层实现 |
| 280 | SE Workload | SE 模式工作负载,封装二进制和参数 |
七、高级特性与扩展 (281-300)
| 序号 | 术语 | 解释 |
|---|---|---|
| 281 | Checkpointing | 检查点技术,保存/恢复模拟状态支持快速前进 |
| 282 | Sampling | 采样模拟,仅详细模拟感兴趣区域加速整体仿真 |
| 283 | SimPoint | SimPoint 算法,基于基本块向量识别程序阶段 |
| 284 | BBV (Basic Block Vector) | 基本块向量,表征程序执行特征用于阶段识别 |
| 285 | Warmup Instructions | 预热指令数,详细模拟前快速执行的指令数 |
| 286 | ROI Begin/End | 感兴趣区域起止,标记统计开始和结束点 |
| 287 | Deterministic Replay | 确定性回放,记录和重现非确定性事件 |
| 288 | Elastic Trace | 弹性追踪,记录内存请求用于后续回放 |
| 289 | Trace CPU | 追踪 CPU,从 trace 文件重放执行 |
| 290 | Power Model | 功耗模型,基于 McPAT 或其他框架估算功耗 |
| 291 | Thermal Model | 热模型,模拟芯片温度分布 |
| 292 | DVFS (Dynamic Voltage and Frequency Scaling) | 动态电压频率调节,模拟功耗管理技术 |
| 293 | Region of Interest (ROI) | 感兴趣区域,研究者关注的模拟时间段 |
| 294 | Fast Forward | 快速前进,使用快速 CPU 模型跳过非感兴趣区域 |
| 295 | Switching CPU | CPU 切换,在快速和详细模型间动态切换 |
| 296 | SystemC Integration | SystemC 集成,与 SystemC 模型协同仿真 |
| 297 | Co-simulation | 协同仿真,gem5 与 RTL 或其他模拟器联合 |
| 298 | Verilator Integration | Verilator 集成,与 RTL 设计协同仿真 |
| 299 | Transaction-Level Modeling (TLM) | 事务级建模,高抽象级别的系统建模 |
| 300 | Cycle-Accurate Modeling | 周期精确建模,精确到时钟周期的详细模拟 |
关键概念速查表
模拟模式对比
| 特性 | SE Mode | FS Mode |
|---|---|---|
| 系统调用 | 转给 Host OS | 完全模拟 |
| 需要内核 | 否 | 是 |
| 需要磁盘镜像 | 否 | 是 |
| 启动速度 | 快 | 慢(需启动 OS) |
| 精度 | 较低 | 高(含 OS 交互) |
| 适用场景 | CPU/内存研究 | 系统级研究、I/O 研究 |
CPU 模型精度与速度
| 模型 | 精度 | 速度 | 适用场景 |
|---|---|---|---|
| AtomicSimpleCPU | 功能级 | 最快 | 功能验证、warmup |
| TimingSimpleCPU | 时序级 | 快 | 快速时序分析 |
| MinorCPU | 流水线级 | 中等 | 顺序核研究 |
| O3CPU | 乱序级 | 慢 | 详细微架构研究 |
| KVM | 原生执行 | 极快 | 快速前进、启动 |
内存系统对比
| 特性 | Classic | Ruby |
|---|---|---|
| 一致性协议 | 固定 MOESI | 可定制(SLICC) |
| 网络模型 | 简单 Crossbar | Garnet 详细模型 |
| 配置复杂度 | 低 | 高 |
| 模拟速度 | 快 | 较慢 |
| 适用场景 | 通用研究 | 一致性/互连研究 |
这份术语表涵盖了 gem5 从基础概念到高级特性的完整体系。建议结合 gem5 官方文档 和 Learning gem5 教程 进行深入学习。