gem5是一个计算机模拟器,它可以用来模拟不同类型的计算机系统,以帮助计算机科学家和工程师更好地理解和优化计算机系统的性能。gem5提供了许多统计信息和输出功能,可以帮助用户更好地了解模拟的计算机系统的性能情况。

gem5的统计信息可以通过访问Stats.txt文件来获取。这个文件中包含了gem5模拟过程中产生的各种统计信息,例如计算机系统中每个部件的执行次数、每个指令的执行时间等。用户可以通过分析这些统计信息来评估模拟计算机系统的性能情况。

gem5的输出功能可以通过命令行参数来控制。例如,用户可以使用--debug-flags命令行参数来指定gem5在模拟过程中输出哪些调试信息。例如,使用--debug-flags=Exec、Cache或者--debug-flags=Exec+Cache+Memory等命令行参数,可以让gem5输出有关指令执行、缓存和内存的调试信息。这些调试信息可以帮助用户更好地理解模拟计算机系统的工作原理。


目录

一、运行gem5会生成哪些文件?有什么作用?

二、经常出现的tick是啥?

三、stats.txt中的输出都是啥意思?

四、怎么看SimObjects’ statistics?

(1)以CPU为例:

(2)以存储器为例

五、如何通过比较gem5的输出来判断哪种模型性能更好呢?


一、运行gem5会生成哪些文件?有什么作用?

运行gem5时,会根据配置文件和程序的不同,生成不同的文件。常见的文件包括:

  • config.ini:gem5的主配置文件,包含了各种参数和设置,用于定义模拟器如何运行。
  • config.json:JSON格式的配置文件,用于覆盖config.ini中的设置。
  • stats.txt:存储模拟器运行时的性能统计信息,用于分析和研究系统性能行为。
  • system.prv:存储模拟器运行时的指令和事件信息,可以用于进一步分析系统的行为。
  • system.pim:存储模拟器运行时的状态和内存信息,可以用于进一步分析系统的行为。
  • system.map:存储模拟器运行时的地址映射信息,可以用于进一步分析系统的行为。
  • system.ptx:存储模拟器运行时的指令流信息,可以用于进一步分析系统的行为。

这些文件的作用各不相同

二、经常出现的tick是啥?

在gem5中,tick是指模拟器模拟的时间单位。它用于指定模拟器每次迭代执行的时间间隔。这个时间间隔是可以通过配置文件来设定的。例如,如果在config.ini中将tick设定为1ns,那么每次迭代模拟器就会执行1ns的时间。

tick在gem5中扮演着重要的角色,因为它可以用来控制模拟的精度和速度。如果将tick设定的更小,那么模拟器就会更加精确但同时也会更慢。反之,如果将tick设定的更大,那么模拟器就会更快,但同时也会更不精确。因此,在使用gem5时,需要合理地调整tick的值,以达到最佳的模拟精度和速度。

三、stats.txt中的输出都是啥意思?

---------- Begin Simulation Statistics ----------
simSeconds                                   0.000057                       # Number of seconds simulated (Second)
simTicks                                     57467000                       # Number of ticks simulated (Tick)
finalTick                                    57467000                       # Number of ticks from beginning of simulation (restored from checkpoints and never reset) (Tick)
simFreq                                  1000000000000                       # The number of ticks per simulated second ((Tick/Second))
hostSeconds                                      0.03                       # Real time elapsed on the host (Second)
hostTickRate                               2295882330                       # The number of ticks simulated per host second (ticks/s) ((Tick/Second))
hostMemory                                     665792                       # Number of bytes of host memory used (Byte)
simInsts                                         6225                       # Number of instructions simulated (Count)
simOps                                          11204                       # Number of ops (including micro ops) simulated (Count)
hostInstRate                                   247382                       # Simulator instruction rate (inst/s) ((Count/Second))
hostOpRate                                     445086                       # Simulator op (including micro ops) rate (op/s) ((Count/Second))
  • simSeconds 表示模拟的秒数。这个值表示模拟的时钟的累计时间。
  • simTicks 表示模拟的时钟滴答数,可以看作时钟周期。滴答(tick)是模拟中使用的最小时间单位。
  • finalTick 表示模拟从开始到结束的时钟滴答数,即总的时钟周期数。注意,这个值不会重置,即使模拟从检查点恢复。
  • simFreq 表示模拟时钟的频率。它表示每秒钟有多少滴答(时钟周期)。
  • hostSeconds 指在宿主机上,表示真实时间中的秒数。这个值表示主机上实际流逝的时间。
  • hostTickRate 指在宿主机上,表示每秒钟模拟的时钟周期数。它反映了模拟的速度。
  • hostMemory 表示模拟器在宿主机上使用了多少字节的内存。
  • simInsts:指模拟器模拟了多少条指令。指令(instruction)是计算机中执行的最小单位。这个数值越大,表明模拟器的性能越好。
  • simOps:指模拟器模拟了多少个操作(包括微操作)。这个数值越大,表明模拟器的性能越好。
  • hostInstRate:指模拟器的指令模拟速率,单位是指令/秒。这个数值越大,表明模拟器的性能越好。
  • hostOpRate:指模拟器的操作模拟速率(包括微操作),单位是操作/秒。这个数值越大,表明模拟器的性能越好。

四、怎么看SimObjects’ statistics?

(1)以CPU为例:

system.clk_domain.clock                          1000                       # Clock period in ticks (Tick)
system.clk_domain.voltage_domain.voltage            1                       # Voltage in Volts (Volt)
system.cpu.numCycles                            57467                       # Number of cpu cycles simulated (Cycle)
system.cpu.numWorkItemsStarted                      0                       # Number of work items this cpu started (Count)
system.cpu.numWorkItemsCompleted                    0                       # Number of work items this cpu completed (Count)
system.cpu.dcache.demandHits::cpu.data           1941                       # number of demand (read+write) hits (Count)
system.cpu.dcache.demandHits::total              1941                       # number of demand (read+write) hits (Count)
system.cpu.dcache.overallHits::cpu.data          1941                       # number of overall hits (Count)

上面这些输出是一组性能指标,每个指标都对应着一个数字。比如,system.clk_domain.clock 表示时钟周期,它对应的数字是 1000,这意味着时钟的频率是 1000 ticks/second。另一个例子是 system.cpu.dcache.demandHits::cpu.data,它表示 CPU 数据高速缓存的需求命中次数,它对应的数字是 1941,这意味着在模拟过程中,CPU 数据高速缓存有 1941 次需求命中。用户可以比较不同模型的吞吐量、延迟、命中率等参数来评估模型的好坏。

(2)以存储器为例

system.mem_ctrl.bytesReadWrQ                        0                       # Total number of bytes read from write queue (Byte)
system.mem_ctrl.bytesReadSys                    23168                       # Total read bytes from the system interface side (Byte)
system.mem_ctrl.bytesWrittenSys                     0                       # Total written bytes from the system interface side (Byte)
system.mem_ctrl.avgRdBWSys               403153113.96105593                       # Average system read bandwidth in Byte/s ((Byte/Second))
system.mem_ctrl.avgWrBWSys                 0.00000000                       # Average system write bandwidth in Byte/s ((Byte/Second))
system.mem_ctrl.totGap                       57336000                       # Total gap between requests (Tick)
system.mem_ctrl.avgGap                      158386.74                       # Average gap between requests ((Tick/Count))
system.mem_ctrl.requestorReadBytes::cpu.inst        14656                       # Per-requestor bytes read from memory (Byte)
system.mem_ctrl.requestorReadBytes::cpu.data         8512                       # Per-requestor bytes read from memory (Byte)
system.mem_ctrl.requestorReadRate::cpu.inst 255033323.472601681948                       # Per-requestor bytes read from memory rate ((Byte/Second))
system.mem_ctrl.requestorReadRate::cpu.data 148119790.488454252481                       # Per-requestor bytes read from memory rate ((Byte/Second))
system.mem_ctrl.requestorReadAccesses::cpu.inst          229                       # Per-requestor read serviced memory accesses (Count)
system.mem_ctrl.requestorReadAccesses::cpu.data          133                       # Per-requestor read serviced memory accesses (Count)
system.mem_ctrl.requestorReadTotalLat::cpu.inst      6234000                       # Per-requestor read total memory access latency (Tick)
system.mem_ctrl.requestorReadTotalLat::cpu.data      4141000                       # Per-requestor read total memory access latency (Tick)
system.mem_ctrl.requestorReadAvgLat::cpu.inst     27222.71                       # Per-requestor read average memory access latency ((Tick/Count))
system.mem_ctrl.requestorReadAvgLat::cpu.data     31135.34                       # Per-requestor read average memory access latency ((Tick/Count))
system.mem_ctrl.dram.bytesRead::cpu.inst        14656                       # Number of bytes read from this memory (Byte)

上面这些输出是一组性能指标,每个指标都对应着一个数字。举个例子,system.mem_ctrl.avgRdBWSys 表示系统接口侧读取的平均带宽,它对应的数字是 403153113.96105593,这意味着在模拟过程中,系统接口侧的读取带宽平均为 403153113.96105593 Bytes/second。另一个例子是 system.mem_ctrl.requestorReadAccesses::cpu.data,它表示 CPU 数据请求方的读取访问次数,它对应的数字是 133,这意味着 CPU 数据请求方在模拟过程中有 133 次读取访问。

五、如何通过比较gem5的输出来判断哪种模型性能更好呢?

gem5的输出可以通过分析统计信息和调试信息来评估模拟计算机系统的性能。用户可以通过比较不同模型的统计信息和调试信息来判断哪种模型的性能更好。

在分析统计信息时,用户可以比较不同模型的吞吐量、延迟、命中率等参数,以评估模型的性能。例如,用户可以通过比较不同模型的吞吐量来评估模型的处理能力;可以通过比较不同模型的延迟来评估模型的响应能力;可以通过比较不同模型的命中率来评估模型的存储能力。在分析调试信息时,用户可以比较不同模型的调度策略、内存管理策略等参数,以评估模型的性能。

Gem5模拟器,详解官网教程的statistics and output(三)相关推荐

  1. Gem5模拟器,详解官网教程Event-driven programming(五)

    目录 一.解释一下gem5中的event-driven? 二.Creating a simple event callback (1)定义一个新的 C++ 类,并继承自 SimObject 抽象基类 ...

  2. Gem5模拟器,详解官网教程Debugging gem5(四)

    目录 一.Gem5中的多种debug模式 二.gem5中的调试标志 三.介绍一下DPRINTF是啥? 四.如何添加一个新的debug flag 五.关于Debuug output gem5是一种用于模 ...

  3. GitHub使用教程详解——官网操作指南(翻译)

    GitHub使用教程详解--官网操作指南(翻译) GitHub使用指南 原文地址:GitHub官网 示例项目:Hello World 十分钟轻松教学 在学习计算机语言编程的过程中创建Hello Wor ...

  4. 海岛奇兵服务器修改,海岛奇兵NPC刷新详解 官网阐述未来更改变动

    海岛奇兵NPC刷新机制到底是怎么样的呢?如何加快NPC的刷新速度呢?赶紧一起来看看海岛奇兵官方的讲解吧! 一.当前版本规则说明 1.敌方入侵数量上限,包括PVP玩家基地以及NPC基地. 2.敌方入侵数 ...

  5. yolov5——detect.py代码【注释、详解、使用教程】

    yolov5--detect.py代码[注释.详解.使用教程] yolov5--detect.py代码[注释.详解.使用教程] 1. 函数parse_opt() 2. 函数main() 3. 函数ru ...

  6. lammps输出MSD(均方根位移)详解及示例教程

    [lammps第十五讲]lammps输出MSD(均方根位移)详解及示例教程 原创 一直陪着你的 LAMMPS交流站 2021-10-23 11:45 收录于话题 #lammps21个内容 #lammp ...

  7. Spring Boot 2.0 的配置详解(图文教程)

    本文来自作者 泥瓦匠 @ bysocket.com 在 GitChat 上分享 「Spring Boot 2.0 的配置详解(图文教程)」 编辑 | 哈比 Spring Boot 配置,包括自动配置和 ...

  8. MNE溯源fieldtrip官网教程

    MNE溯源fieldtrip官网教程 Introduction 在本教程中,您可以找到有关如何使用最小范数估计进行源重构的信息,以重构单个主题的事件相关字段(MEG).我们将使用预处理教程中描述的数据 ...

  9. vlan配置实例详解_网工知识角|MUXVLAN技术详解,基本原理一篇搞定

    学网络,就在IE-LAB 国内高端网络工程师培养基地 MUX VLAN(Multiplex VLAN )提供了一种通过VLAN进行网络资源控制的机制.通过MUX VLAN提供的二层流量隔离的机制可以实 ...

最新文章

  1. 开发日记-20190514 关键词 汇编语言(七)
  2. 使用docker安装部署Spark集群来训练CNN(含Python实例)
  3. 提高ASP.NET应用程序性能的几招方法
  4. 入坑推荐系统,从Google这篇开始
  5. java替换html特殊字符,HTML特殊字符替换问题 html escape相关
  6. 服务提供者和服务消费者
  7. IDEA常用快捷键【win-mac对比】
  8. python定制框架知识点_python框架中flask知识点总结
  9. 数据库 外键 优缺点_不同数据格式的优缺点:键值与元组
  10. iconfont使用
  11. android 中LayoutInflater 的使用
  12. ProcExp和TaskMgr的列对比
  13. 自动控制原理3.3---二阶系统的时域分析
  14. 计算机四分位数公式,上四分位数(上下四分位数计算公式)
  15. WiFi的单频和双频
  16. 微信公众号素材下载之java
  17. 我是如何保护 70000 ETH 并赢得 600 万漏洞赏金的
  18. vant 框架使用方式H5
  19. 【FTK Imager篇】FTK Imager中文设置教程
  20. photoshop中为什么会出现不能使用文字工具,因为暂存盘已满?

热门文章

  1. 数据不满足正态分布,方差齐性怎么办?
  2. 解读SPSS重复测量方差分析的检验结果
  3. 浏览器用什么电商插件好?
  4. Java工程师必备技能有哪些?
  5. (DES)Single-Shot Object Detection with Enriched Semantics
  6. php 五舍六入,四舍五入计算器 四舍五入、四舍六入五取偶(双)算法 - 数学公式 - 房贷计算器...
  7. linux修改X2APIC参数,虚拟机对x2apic destination mode的选择
  8. 基于胜任力模型为集团企业构建动态信息安全培训课程体系
  9. 梳妆谐振器的matlab实现,基于HOPF振荡器的CPG单元模型matlab实现
  10. 四核处理器_戴尔这款笔记本彪悍,配置四核处理器,双内存插槽,不足4000元...