大规模RTL设计最高19.94倍仿真加速!GSIM 模拟器创新三级优化突破仿真瓶颈,实现香山处理器Linux启动7.34倍提速

微信视频号:sph0RgSyDYV47z6
快手号:4874645212
抖音号:dy0so323fq2w
小红书号:95619019828
为加速 RTL 仿真,GSIM 采用了一系列优化技术,有些技术可能在改进一个因素的同时降低另一个因素的性能。在这种情况下,GSIM 通过相应策略平衡这些因素之间的权衡。
关键词:RTL simulation、optimization、large-scale designs、GSIM、supernode、node level、bit level
 
 
添加图片注释,不超过 140 字(可选)
  • GSIM: Accelerating RTL Simulation for Large-Scale Designs
  • https://arxiv.org/abs/2508.02236
寄存器传输级(RTL,硬件设计中用于描述寄存器之间数据传输和逻辑运算的抽象级别)仿真在硬件设计的设计空间探索、验证、调试和初步性能评估中被广泛使用。
在各种 RTL 仿真方法中,软件仿真因其灵活性高、成本低且易于调试而被最广泛使用。然而,复杂设计的仿真速度缓慢已成为设计流程中的瓶颈。
在本工作中,我们探究了 RTL 仿真计算开销的来源,并将其归纳为四个因素。为了优化这些因素,我们在超节点级、节点级和比特级提出了多种技术。
最后,我们在一款新型 RTL 仿真器 GSIM 中实现了这些技术。GSIM 成功仿真了香山(XiangShan)——一款最先进的开源 RISC-V 处理器。
此外,与 Verilator(一种开源 RTL 仿真器)相比,GSIM 在香山处理器上启动 Linux 时实现了 7.34 倍的加速比,在 Rocket 处理器上运行 CoreMark 时实现了 19.94 倍的加速比。
 
 
添加图片注释,不超过 140 字(可选)
unsetunset关键问题unsetunset
问题 1. GSIM 在超级节点级优化中采用增强型 Kernighan 算法划分节点,其通过“保护强关联节点不被拆分”来平衡超级节点大小与活动因子(activity factor),但论文中仅提及基于节点入度、出度和兄弟节点关系的规则,这些规则的具体量化标准(如如何定义“强关联”)以及算法在不同复杂度电路中(如从 stuCore 到 XiangShan)的自适应调整机制是什么?
作者提到,增强型 Kernighan 算法的“强关联节点”规则基于结构特征而非具体量化阈值,包括:
  1. 出度为 1 的节点通常与其后继同时激活;
  2. 入度为 1 的节点通常在前驱激活时激活;
  3. 有相同前驱的兄弟节点总是同时激活。这些规则通过先保护强关联节点不被拆分,再结合原始 Kernighan 算法构建超级节点。
自适应调整方面,超级节点的最大大小可通过命令行参数控制,且最优大小因电路设计而异,在测试的设计中范围为 20 到 50,以此平衡激活开销和活动因子。
问题 2. 论文显示 GSIM 在 XiangShan 启动 Linux 时比 Verilator 快 7.34 倍,在 Rocket 运行 CoreMark 时快 19.94 倍,且远超 Verilator 多线程版本。这种性能优势是否与 workload 特性(如 CoreMark 的热点集中 vs Linux 的分散负载)或电路结构(如乱序执行处理器的节点关联性)强相关?其优化技术对其他类型硬件设计(如 GPU、FPGA 逻辑)是否仍能保持显著加速?
性能优势与 workload 特性相关:
  • CoreMark 存在热点(集中负载),GSIM 在 Rocket 上实现 19.94x 加速;
  • Linux 负载分散,XiangShan 上加速为 7.34x,说明集中负载下优化效果更显著。
与电路结构相关:比特级拆分对乱序执行的 BOOM 和 XiangShan 提升显著,对简单的 stuCore 和 Rocket 影响较小,表明节点关联性强的复杂电路更受益。
对于其他硬件(如 GPU、FPGA),作者未验证,但 GSIM 的优化技术具有通用性,理论上可能适用,但未提供具体数据支持。
问题 3. 论文提到 GSIM 通过比特级拆分节点进一步降低活动因子,但拆分可能增加节点总数(N)。在节点总数大幅增加的极端情况下(如高比特宽、高拆分频率的电路),GSIM 的节点级优化(如冗余节点消除、内联成本模型)能否有效抵消 N 增加带来的计算开销?这种平衡机制的阈值是什么?
比特级拆分可能增加节点总数(N),但 GSIM 的节点级优化(如冗余节点消除、内联/提取成本模型)可有效抵消这一开销。
性能分解显示,比特级拆分对 BOOM 和 XiangShan 带来显著提升,说明节点级优化能平衡 N 增加的影响。
平衡阈值方面,作者未明确数值,但超级节点最优大小(20-50)和活动因子(如 XiangShan 运行 CoreMark 时约 4.61%)间接反映了节点数与计算开销的平衡范围。
unsetunset本文目录unsetunset
  • 关键问题
  • 本文目录
  • 一、引言
  • 二、背景与分析
  • A. RTL 仿真
  • B. 建模与分析
  • 三、GSIM 设计
  • A. 超级节点级优化
  • B. 节点级优化
  • C. 位级优化
  • D. 实现细节
  • 四、实验评估
  • A. 评估设置
  • B. 整体性能
  • C. 运行 SPEC CPU2006
  • D. 性能分解
  • E. 选择超级节点的最大规模
  • F. 构建超级节点的不同算法
  • G. 资源使用
  • 五、相关工作
  • 六、结论
  • 参考文献
 
 
添加图片注释,不超过 140 字(可选)
unsetunset一、引言unsetunset
寄存器传输级(RTL)仿真在硬件设计中至关重要。它被广泛应用于多个方面,包括设计空间探索、验证、调试和初步性能评估[1][2][3]。它已成为芯片开发流程中不可或缺的一步。
当前 RTL 仿真主要有三种方法:软件仿真、FPGA 原型验证和硬件仿真。
  • 其中,FPGA 原型验证速度最快,但调试工具有限;
  • 硬件仿真速度快且调试能力强,但成本极高;
  • 软件仿真提供 100%的信号可见性、成本低且易于调试,但效率最低。尽管存在这一缺点,软件仿真仍然是最常用的 RTL 仿真方法[2]。
 
 
添加图片注释,不超过 140 字(可选)
随着现代数字电路规模的不断扩大,软件仿真方法的速度急剧下降,成为验证环节的瓶颈[4]。表 I 展示了使用 Verilator[5](一款广泛使用的开源仿真器)对不同规模处理器的仿真速度。在该表中,“IR 节点”指 RTL 图中的节点(包括寄存器和逻辑单元),“IR 边”表示节点之间的连接数量,二者共同反映了每个处理器的复杂度。如图所示,大规模设计的仿真速度通常仅为几千赫兹。因此,加速 RTL 仿真将显著改善大规模设计的工作流程。
然而,加速大规模设计的 RTL 仿真是一项挑战。软件 RTL 仿真器必须通过计算来模拟电路中所有节点的信号传播。繁重的计算是 RTL 仿真速度缓慢的主要原因。ESSENT[3]提出了一种关键信号仿真方法,显著加速了 RTL 仿真。
我们旨在进一步探索减少计算需求的可能性。
 
 
添加图片注释,不超过 140 字(可选)
为了确定计算的来源,我们进一步分析了关键信号仿真方法。列表 2 展示了单周期仿真的行为。每个节点都关联一个活跃位。在每个周期中,仿真器遍历图中的所有节点。
  • 如果节点的活跃位未被设置(第 7 行),则其值可被复用,从而跳过评估以减少计算;
  • 否则,需要评估该节点的值(第 3 行)。
  • 如果评估后的值发生变化,则其后续节点将被激活(第 4-5 行)。
通过上述分析,计算开销的来源可归纳为四个因素:❶ 活跃位的访问(包括检查和更新);❷ 每个节点中的值评估;❸ 节点总数;❹ 活动因子(活跃节点与总节点的比例)。
本文提出了一款新型 RTL 仿真器,其旨在通过超节点级、节点级和比特级三个粒度级别,减少上述四个因素的开销。
在超节点级,一个挑战是确定哪些节点应被分组到超节点中。超节点是一组同时被激活的节点,其目的是减少激活开销,但可能会增加活动因子。为了平衡这一权衡,我们提出了一种新型分区算法,将具有强相关性的节点分组。这种方法在保持低活动因子的同时减少了激活开销。
在节点级,GSIM 采用了多种技术
  • 首先,GSIM 通过数据流分析消除冗余节点并优化值评估过程中的表达式。
  • 其次,我们观察到,虽然将一个节点的值评估内联到另一个节点中有助于减少节点数量,但可能会引入额外计算。为了确定内联是否有益,GSIM 构建了一个成本模型,并选择成本较低的方案。
  • 最后,GSIM 将复位处理移至慢路径,这将复位信号的检查次数减少了多个数量级。
在比特级,我们发现每个节点内的比特可能不会被同时访问。通过对每个比特应用数据流分析,并根据其访问模式拆分节点,GSIM 可以进一步降低活动因子。
GSIM 成功仿真了香山[8]——一款最先进的开源 RISC-V 处理器
  • 在香山处理器上启动 Linux 时,GSIM 相比 Verilator 实现了 7.34 倍的加速比;
  • 在 Rocket[6]处理器上运行 CoreMark[9]时,GSIM 达到了 Verilator 的 19.94 倍,比 ESSENT[3]和 Arcillator[10]中的最佳结果还要高出 2.52 倍。
unsetunset二、背景与分析unsetunset
A. RTL 仿真
为进行 RTL 仿真,输入设计被表示为有向图。在该图中,每个节点对应一个寄存器或逻辑单元,每条边表示节点间的信号传播。
仿真过程中,电路行为被建模为信号值沿边在节点间传播的评估过程。确定节点评估顺序的工作称为调度。 根据调度策略,RTL 仿真可分为两类[11]。
事件驱动仿真
在事件驱动仿真中,节点在运行时动态调度,信号变化以事件形式传播。当节点值发生变化时,会生成事件并发送给所有后继节点。这种方法能灵活建模任意延迟,广泛用于综合后的门级仿真。但在复杂设计中,频繁的调度会带来高额开销。像 VCS[12]这样的商用仿真器就采用了事件驱动仿真模型。
全周期仿真
相反,全周期仿真中,节点在编译时静态调度,运行时按固定顺序评估。这消除了运行时调度的开销。尽管仿真的最小粒度是一个时钟周期,但对于处理器等大规模设计的功能验证来说已经足够。开源仿真器 Verilator[5]采用全周期仿真。通常,全周期仿真比事件驱动仿真更快[13]。
在全周期仿真的基本实现中,为构建有向无环图(DAG),寄存器通常被拆分为两个节点(一个用于读取,一个用于写入)以打破图中的循环。然后对该图进行拓扑排序。每个周期内,所有节点按拓扑顺序评估,如清单 1 所示。Verilator 就采用了这种方法。
 
 
添加图片注释,不超过 140 字(可选)
为进一步提高全周期仿真的效率,ESSENT[3]引入了必要信号仿真方法这种方法很有效,因为一个周期内只有少数节点的值会发生变化。清单 2 展示了其实现。每个节点都关联一个活跃位。每个周期内,会检查所有活跃位。只有当节点的活跃位被设置时,才会评估该节点的值。如果评估后值发生变化,其后续节点会被激活(第 4-5 行)。
B. 建模与分析
受 ESSENT 启发,我们通过识别计算来源进一步探索优化潜力。根据清单 2 中的仿真框架,每个周期的仿真开销 T 可建模为:
其中,是节点值评估的计算开销,是激活后继节点的开销,是活动因子(活跃节点与总节点数的比例),是检查活跃位的开销,是节点总数。
表示根据前驱节点评估节点值所需的计算,包括算术、移位、按位和条件等多种操作。和由必要信号仿真方法引入。每个节点评估前需要额外检查,评估后需要激活步骤。前者增加一条分支指令,后者涉及一条分支和几条内存访问指令。和由电路设计决定,它们共同表示一个周期内活跃位被设置(需要评估)的节点数量。随着电路复杂度的增加,可能大幅增长,但大多数设计中仍然较低。根据我们的评估,在香山处理器上运行 CoreMark 时,约为 4.61%。
尽管、、和看似微不足道,但它们对的影响会被较大的放大。因此,减少能显著提升仿真性能。此外,对其他因素的微小改进也能带来显著的性能提升。例如,在香山仿真过程中,82.26%的已执行分支指令用于检查活跃位。因此,进一步优化这些因素很重要。
unsetunset三、GSIM 设计unsetunset
为加速 RTL 仿真,GSIM 采用了一系列优化技术,针对上述因素从三个层面进行优化:超级节点级、节点级和位级。注意,有些技术可能在改进一个因素的同时降低另一个因素的性能。在这种情况下,GSIM 通过相应策略平衡这些因素之间的权衡。
A. 超级节点级优化
单独检查每个节点的活跃位会导致的高额开销(清单 2)。为减少,节点通常被分组为超级节点[3]。每个超级节点关联一个活跃位,内部节点共享该活跃位并一起评估(清单 3)。
 
 
添加图片注释,不超过 140 字(可选)
因此,激活超级节点内的任何节点都会导致该超级节点内所有节点被评估。我们将超级节点的大小定义为其包含的节点数量。更大的超级节点有助于减少,但可能会增加。
 
 
添加图片注释,不超过 140 字(可选)
为保持较低的,GSIM 尝试将可能同时被激活的节点分组到同一个超级节点中。我们观察到,RTL 图中位置接近的节点通常具有强相关性,且倾向于一起被激活。为找到此类节点,传统的图分区算法(如 Kernighan 算法[14])可能是一种解决方案。但传统算法的目标通常与构建超级节点相冲突。因为传统算法试图最小化分区间的割边数量,倾向于将边数少的节点分到不同分区(图 1 左侧)。然而,这些节点在仿真过程中可能一起被激活,应该被分组到同一个超级节点中(图 1 右侧)。
为解决这一挑战,GSIM 采用了增强版的 Kernighan 算法。具体来说,增强算法首先根据特定规则将具有强相关性的节点分组,防止它们在后续步骤中被分到不同超级节点。这些规则源于以下观察:
❶ 出度为 1 的节点通常与其后继节点一起被激活;
❷ 入度为 1 的节点通常在前驱节点被激活时被激活;
❸ 具有相同前驱的兄弟节点总是同时被激活。
随后,GSIM 采用原始的 Kernighan 算法构建超级节点。超级节点的最大大小可通过算法中的参数控制。
 
 
添加图片注释,不超过 140 字(可选)
此外,为利用低的优势,GSIM 推测多个活跃位为 0,并在快速路径上用单个条件检查它们(清单 4 第 1 行)。如果条件成立,GSIM 可以跳过对每个活跃位的单独检查,从而减少。
B. 节点级优化
冗余节点消除
 
 
 
添加图片注释,不超过 140 字(可选)
为减少,我们通过数据流分析消除以下类型的冗余节点(图 2):
❶ 别名节点(表示同一信号的重复节点);
❷ 无用节点(不被其他节点使用的节点);
❸ 短路节点(因其他信号而未被选中的节点);
❹ 未使用寄存器(不被其他节点使用但可能自我更新的寄存器)。
节点内联与提取
对于非冗余节点,GSIM 会考虑是否将一个节点的评估内联到其后继节点中。这是和之间的权衡。提取评估的公共部分可以通过重用额外中间节点中存储的值来减少。
 
 
添加图片注释,不超过 140 字(可选)
例如,在图 3 左侧,节点 B 存储 f(A)的结果,其后继节点(C 和 D)可以直接使用 B 的值,而无需重新评估 f(A)。相反,减少可能会增加。如图 3 右侧所示,没有中间节点时,节点 C 和 D 必须重新评估 f(A)。
为解决上述权衡,GSIM 对每个决策的成本进行建模并选择最优方案。具体来说,GSIM 估算 f(A)的评估开销(cost(f(A)))、引入新节点的开销(,基于涉及的操作符数量)以及 f(A)的引用计数()。
  • 如果,则将 f(A)提取为额外节点以减少;
  • 否则,将 f(A)内联以减少。
激活开销优化
为优化,ESSENT 用逻辑操作替代条件检查(清单 2 第 4-5 行),以减轻主机分支预测器的压力[3]。但我们发现,当需要激活的后继节点过多时,这种技术可能导致性能下降,因为它会为每个要激活的后继节点引入额外操作
为处理这种权衡,GSIM 对每个决策的成本进行建模并选择最优方案,方法与上述类似。
重置处理优化
在评估每个带重置端口的寄存器时,每个周期都必须检查重置信号以确定要写入的值(清单 5)。
 
 
添加图片注释,不超过 140 字(可选)
但重置信号的数量通常很少,且在仿真过程中几乎无效。基于这一观察,GSIM 首先推测不会发生重置,并根据前驱节点评估的值更新寄存器(清单 6)。这可以将重置信号检查从评估的快速路径中移除,有助于减少。之后,在每个周期结束时检查重置信号。通过这种方式,GSIM 可以将重置信号的检查次数从带重置端口的寄存器数量级减少到设计中的重置信号数量级。
表达式简化
GSIM 采用多种技术优化评估过程中的表达式,如常量传播和复杂模式识别。例如,在 RTL 设计中,生成独热信号并检查其每个位是很常见的。这可能会产生两个节点:一个评估,另一个评估(其中 k 是常数)。GSIM 检测到这种模式并将其优化为。
C. 位级优化
如果评估后节点的值保持不变,则无需激活。我们发现,在许多长信号中,每个周期只有特定的位会变化。如果后继节点只使用未变化的位,激活它就是不必要的。
 
 
添加图片注释,不超过 140 字(可选)
如图 4 左侧所示,如果节点 A 变化而 B 和 C 未激活,D 和 E 都会变化,导致 F 和 G 被激活。但 G 的值保持不变(因为它不依赖 A),因此激活 G 是不必要的。根据我们的统计,在香山处理器的多比特节点中,23.7%由其他节点的拼接组成,23.2%的引用只访问这些节点的部分位。
为解决这一问题,GSIM 采用位级节点拆分策略。具体来说,GSIM 对每个位进行数据流分析。对于节点,如果存在中的位集和路径,且不依赖于(中的补位集),则 GSIM 可以根据和拆分路径上的所有节点。这样,当只有中的位变化时,可以避免节点的不必要激活,从而减少。如图 4 右侧所示,节点 A 将不再触发 G 的激活。
 
 
添加图片注释,不超过 140 字(可选)
注意,尽管拆分节点可能会增加,但我们可以对生成的节点应用上述节点级优化技术。
D. 实现细节
GSIM 接受 Firrtl[15]格式的电路,Firrtl 是一种硬件中间表示,多种硬件描述语言(HDL)都可转换为该格式。GSIM 包含一个 Firrtl 解析器,将输入设计转换为抽象语法树(AST),并进一步转换为图。大多数优化都在该图上执行。优化后,GSIM 生成 C++仿真代码。此外,GSIM 允许用户从命令行调整超级节点的最大大小。
unsetunset四、实验评估unsetunset
A. 评估设置
我们将 GSIM 与以下模拟器进行对比。
❶Verilator[5]是应用最广泛的开源 Verilog 模拟器。我们使用 v5.026 版本,通过-O3 标志生成 C++文件。它还支持多线程仿真。
❷Arcilator[10]是基于 MLIR[16]的模拟器,作为 CIRCT[17]项目的一部分开发。
❸ESSENT 是单线程 Firrtl[15]模拟器,通过-O3 标志生成 C++文件。
 
 
添加图片注释,不超过 140 字(可选)
 
 
添加图片注释,不超过 140 字(可选)
我们在表 I 中的处理器上评估这些模拟器。表 II 展示了它们的版本。所有处理器主要基于 Chisel[18]开发。对于少数 Verilog 模块,我们用 Chisel 实现替换了它们。
 
 
添加图片注释,不超过 140 字(可选)
如图 5 所示,每个设计首先转换为 Chirrtl IR,然后通过 FIRRTL[15]编译器或 CIRCT[17]编译器转换为 Firrtl、Verilog 和 MLIR 文件。ESSENT 和 GSIM 接受 Firrtl 作为输入,Verilator 接受 Verilog,Arcilator 接受 MLIR。
我们选择 CoreMark[9]和 Linux 作为软件工作负载。前者存在热点,而后者没有。主机配置为 3.60GHz 的英特尔 8 核 i9-9900K CPU,配备 64GB 内存。主机操作系统为 Debian 12。
B. 整体性能
图 6 展示了不同模拟器在各种处理器和软件工作负载上的性能。
 
 
添加图片注释,不超过 140 字(可选)
由于 Verilator 是应用最广泛的开源 RTL 模拟器,并且成功仿真了所有选定的处理器,我们以 Verilator 为基准,将其他结果归一化到该基准。
  • 在正确性方面,除了 Verilator,GSIM 是唯一能成功仿真香山(XiangShan)处理器的模拟器。ESSENT 和 Arcilator 由于生成 C++文件时出错或仿真结果错误,无法仿真部分设计。
  • 在性能方面,GSIM 在香山处理器上启动 Linux 时实现了 7.34 倍的加速比,在 Rocket 处理器上运行 CoreMark 时实现了 19.94 倍的加速比。
我们还评估了多线程版本的 Verilator。GSIM 在大多数设计上显著优于多线程 Verilator。
C. 运行 SPEC CPU2006
在 CPU 仿真中,检查点(用于在仿真过程中保存状态,以便后续从该状态继续,加速性能评估)长期以来被用于加速性能评估[8][19]。我们使用 SimPoint[21]对 SPEC CPU2006[20]进行采样,提取 4000 万条指令的片段来创建检查点。选定的基准测试涵盖了各种工作负载类型,包括流式和不规则内存访问、整数和浮点计算、分支密集型操作以及指令缓存密集型操作[22]。我们在香山处理器上使用 Verilator 和 GSIM 运行这些检查点。
 
 
添加图片注释,不超过 140 字(可选)
如图 7 所示,GSIM 平均比单线程 Verilator 快 3.72 倍,平均达到 8 线程 Verilator 的 1.18 倍。
D. 性能分解
为了评估 GSIM 中采用的每种优化技术的贡献,我们从无优化的基准开始,逐步应用所有技术。通过这种方式,我们得到一系列性能数据。
 
 
添加图片注释,不超过 140 字(可选)
在图 8 中,第 i 种技术对应的柱高计算为。如图所示,引入超级节点对所有设计的性能都有显著提升。位级节点拆分对 BOOM 有显著提升,对香山有明显增益,但对 stuCore 和 Rocket 影响不大。
E. 选择超级节点的最大规模
我们还研究了超级节点的最大规模与仿真性能之间的关系。
如上所述,更大的超级节点规模会减少,但会增加活动因子()。最佳规模取决于电路设计。为了找到最佳规模,我们在启用所有其他优化技术的情况下尝试了不同的规模。对于我们选定的设计,最佳规模在 20 到 50 之间,如图 9 所示。
 
 
添加图片注释,不超过 140 字(可选)
F. 构建超级节点的不同算法
我们将 GSIM 中使用的增强分区算法与原始的 Kernighan 算法和 ESSENT 的分区算法(记为基于 MFFC 的算法)进行了对比。
这些算法在 GSIM 上实现,且禁用所有其他优化技术以展示其有效性。在各自的最佳参数下,通过在 BOOM 上运行 CoreMark 来评估它们。我们测量超级节点的数量、激活后继节点的次数以及活跃节点的数量这些指标分别可以反映、和 E。
 
 
添加图片注释,不超过 140 字(可选)
如表 III 所示,我们的算法在仿真速度方面表现最佳,因为它在上述三个因素之间实现了更好的平衡。
G. 资源使用
  • 对于生成时间,我们测量生成仿真文件所需的时间。
如表 IV 所示,尽管 GSIM 性能优于 Verilator,但 GSIM 的生成时间与 Verilator 相当。ESSENT 生成 C++文件需要更多时间。一个原因可能是 Scala 程序的执行速度较慢。Arcilator 生成 BOOM 的代码需要超过 100GB 内存,这导致访问交换空间,生成时间很长。它甚至因内存不足而无法生成香山的代码。
 
 
添加图片注释,不超过 140 字(可选)
  • 对于代码大小,我们测量 readelf 报告的二进制文件的.text 段大小。如表 IV 所示,由于采用了更多优化技术,GSIM 在所有模拟器中生成的代码量最少。
  • 对于数据大小,我们使用 sizeof 获取 C++文件中顶级设计类的大小,其成员包含仿真所用的所有变量,并且我们排除了用于仿真主内存(128MB)的数组。如表 IV 所示,GSIM 生成的数据比 Verilator 略大。
unsetunset五、相关工作unsetunset
  • Verilator[5]是一种广泛使用的开源全周期 RTL 模拟器。它通过对 RTL 设计进行分区来支持多线程。
  • Arcilator[10]是基于 CIRCT 的 RTL 模拟器,在各种 IR 级别应用优化。它们都在每个周期评估电路中的所有信号,并通过各种表达式优化技术提高仿真速度。
相比之下,GSIM 在信号不活跃时会跳过其评估
  • Khronos[2]采用跨周期优化来减少仿真过程中的内存访问开销,这在具有许多流水线寄存器的电路中表现良好。
然而,GSIM 针对更通用的设计。
  • ESSENT[3]利用电路中的低活动因子,对设计进行分区并过滤掉不活跃区域,以有效减少计算开销。
GSIM 进一步探索了加速 RTL 仿真的潜力。它通过三个级别的优化技术减少了四个因素的计算开销。
  • RepCut[1]是基于 ESSENT 的多线程 RTL 模拟器。它通过引入冗余计算来减少线程间同步开销。
  • [13]提出了一种粗粒度电路去重方法,以提高一批仿真任务的吞吐量。
GSIM 专注于提高单个任务下单线程仿真的性能。这些工作与 GSIM 互补,并为未来的工作提供了方向。
unsetunset六、结论unsetunset
本文提出了 GSIM,一种基于必要信号仿真方法的新型 RTL 模拟器。
GSIM 在超级节点级、节点级和位级采用了一系列优化技术。GSIM 成功仿真了最先进的开源 RISC-V 处理器香山。
  • 与 Verilator 相比,GSIM 在香山处理器上启动 Linux 时实现了 7.34 倍的加速比,
  • 在 Rocket 处理器上运行 CoreMark 时实现了 19.94 倍的加速比。
 
 
微信视频号:sph0RgSyDYV47z6
快手号:4874645212
抖音号:dy0so323fq2w
小红书号:95619019828
B站:UID:3546863642871878
 
参考文献链接
参考文献unsetunset
 
 
添加图片注释,不超过 140 字(可选)
 
 
添加图片注释,不超过 140 字(可选)
 
posted @ 2025-08-16 08:14  吴建明wujianming  阅读(11)  评论(0)    收藏  举报