computer architecture simulator汇总

本文概述了计算机架构模拟器的分类,如功能模拟器、定时模拟器与混合模型,以及按输入驱动(跟踪驱动和执行驱动)的区分。重点介绍了Pin/Sniper、Gem5、Champsim、Zsim等工具的优缺点,以及在不同场景下的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近读了【A Survey of Computer Architecture Simulation Techniques and Tools】,这篇文章汇总了常用的模拟器。

按照功能划分

Functional Simulator

在这里插入图片描述

Timing Simulator

在这里插入图片描述

Timing&Functional Simulator

将fucntional和timing功能结合在一起的simulator

  • 在指令执行的stage,执行指令的simulator即 execute-in-execute,比如Gem5
  • 基于functional model的timing simulaor如 SimFlex GEMS 基于Simics,Sniper基于Pin。这类simulator分为以下三种:
    在这里插入图片描述
  • Timing-directed timing model负责指导functional model的执行
  • Functional-first model function model先执行,因为function model永远是执行正确的分支,因此相对于上一种,无法模拟分支预测错误路径的执行
  • Timing first model,functional负责验证timing model的结果。

按照输入划分

Trace driven simulator

我们可以通过收集程序的trace,比如在程序执行的过程中,持续的收集程序发出的load store操作的地址,将地址保存在trace 文件中,收集过一次之后,将trace文件作为输入,传递给simulator,进行仿真。
常见的有champsim,输入address 的trace,传递给cache model,可以仿真cache miss hit,prefetcher的效果。
champsim相对于其他模拟器好上手,代码也很简洁,并且已经附带了spec2017的trace文件,不需要搭建繁杂的环境,感兴趣的可以看一下。

Execution driven simulator

大部分的模拟器都是execution driven的,因为trace driven的模拟器要收集trace,而且收集的trace往往很大,不如直接将编译好的二进制文件传输给模拟器。
在这里插入图片描述
在这里插入图片描述
最后比较一下我最近在使用的模拟器:

  • Pin/Sniper
    pin相对于gem5快了很多,仿真1000Billion的指令,如果是functional model,可以12h内跑完,毕竟pin是基于instruction instrumentation,类似于java虚拟机,实现了dynamic instruction translation,直接在cpu上真实的跑,还是很快的。
  • Gem5
    Gem5 即使atomic模式,12小时也只能25B,要是atomic模式跑1000B可能就要20天了。
    Gem5胜在对cpu内部架构的详细模拟,因为详细,所以跑起来慢。Gem5现在提供了kvm cpu,基于kvm,也是在真实的cpu上跑,效果2h 10B~100B,还是没有pin快。
  • linux perf
    linux perf工具也可以在真实的cpu上跑,不过只能是按照真实的intel的cpu得到真实的结果,这个肯定是最快的了。
  • ChampSim
    ChampSim的代码相对于Gem5简洁太多,又因为使用trace,所以不像gem5那样遇到不支持的指令束手无策,也有很多顶会的文章是基于champsim。
  • Zsim
    主要用于多核模拟,底层是基于pin,多核并发时,使用两阶段,bound-weave phase进行模拟,bound phase只是各个核内的执行,weave phase则对核间进行同步。这个survey里面介绍,zsim比gem5更加准确,还是有可能的。因为zsim基于pin,在真实的cpu上校验过,又是在真实的cpu上执行的,不像gem5很多内部设计的逻辑,只有intel和amd自己才知道。
    zsim和sniper的核内模拟的原理个人理解有些相似,有些像岳灵珊的”岱宗如何“,通过进行数学计算得到cpu内部流水线各个阶段stage的当前拍数。
    zsim核内:
    zsim核间同步:
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值