• computer architecture simulator汇总


    最近读了【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核间同步:
      在这里插入图片描述
      在这里插入图片描述
  • 相关阅读:
    搭建Prometheus+Grafana框架监控Hyperledger Fabric的运行
    工程师职称评审有关安排
    [英语学习] 理解实例:晶振;时钟
    卡码网语言基础课 |判断集合成员
    法语初级学习笔记-04-单词
    postgis limit 和 offset 的使用
    windows“你尚未连接代理服务器可能有问题”解决方法
    Office/WPS 好用的PPT插件-智能选择布局
    RK3399平台开发系列讲解(电源管理篇)11.11、调节器消费者接口
    LeetCode - 102. 二叉树的层序遍历;110. 平衡二叉树;098. 验证二叉搜索树
  • 原文地址:https://blog.csdn.net/hit_shaoqi/article/details/127858626