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

2023-11-09

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • win 下 c++ 编译环境配置

    文章目录 一 安装 CMake 二 安装 MinGW w64 三 安装 vscode 四 编译运行 1 code 2 编译 linux 下使用 cmake 编译 c 啥的还挺简单的 win就麻烦些 这里记录一下 一 安装 CMake 地址在
  • erp登录显示内部服务器错误,错误openerp.addons.website.models.ir_http:500内部服务器错误:从od注销后...

    我用的是odoov9社区在ubuntu14 04安装完成后是完美的所有工作 在 但是当我安装了odoo的网站模块 当我从odoo注销后 会出现以下错误 500 内部服务器错误 我的日志 Traceback most recent call
  • linux中grub详解

    grub Grand Unified Bootloader grub 0 x grub legacy grub 1 x grub2 grub legacy stage1 mbr stage1 5 mbr之后的扇区 让storage1中的bo
  • QML debugging is enabled. Only use this in a safe environment.

    系列文章目录 文章目录 系列文章目录 前言 一 Qt Quick是什么 1 QML核心 二 使用步骤 1 main cpp 3 运行结果 前言 因为有个需求 C 和web交互 初步想到在Qt中使用QWebChannel 今天第一次使用Qt
  • Elasticsearch在thinkphp5中的使用增删改查(模糊查询、批量查询)

    Elasticsearch在thinkphp5中的使用 模糊查询 需要安装elasticsearch elastic header master kibana analysis ik四个包 如下图所示 需要的包直接去github上搜索就可以
  • 一年月份大小月口诀_农历大小月卦口诀详解(最新版)

    农历大小月卦口诀详解篇一 天干地支推算口诀 天干地支推算口诀 推算年干支口诀 掌上推算年干支 支子花甲起根源 阳支都是旬开始 天干为甲尾四年 隔位逆推十年正 顺推年尾五零三 逐支加减六十数 掌上推算千万年 推算方法 掌上推算年干支 支子花甲
  • MySQL 查询数据并修改符合条件的字段的显示内容

    笔记 MySQL 查询数据并修改符合条件的字段的显示内容 SELECT A CASE A Status WHEN 2 THEN ELSE B Name END AS Name CASE A Status WHEN 2 THEN ELSE B
  • 给浏览器设置一个图片背景/主题

    先看看效果图 此方法适用于 谷歌浏览器 chrome 火狐浏览器 firefox 360极速浏览器 QQ浏览器 360安全浏览器请移步 给360安全浏览器添加一个图片背景 主题 实现步骤 1 先在你的浏览器的插件商城里面搜索安装styluh
  • Activity 启动模式及常见启动Flag总结

    本文部分参考自 http blog csdn net mayingcai1987 article details 6200909 部分内容自己总结 错误之处请指正 一 Activity的4种启动模式 1 android launchMode
  • 【hello Linux】Linux第一个小程序 - 进度条

    目录 先来区分两个标识符 回车和换行 1 倒计时 2 进度条 Linux 下面来编写Linux系统下的第一个小程序 进度条 先来区分两个标识符 回车和换行 r 和 n r 回车 代表回到本行的开头 n 换行 代表回到光标的下一行的光标处 我
  • 静态分析工具Cppcheck在Windows上的使用

    之前在https blog csdn net fengbingchun article details 8887843 介绍过Cppcheck 那时还是1 x版本 现在已到2 x版本 这里再总结下 Cppcheck是一个用于C C 代码的静
  • (二叉树)从中序和后序遍历构造树

    题目描述 根据一棵树的中序遍历与后序遍历构造二叉树 注意 你可以假设树中没有重复的元素 例如 给出 中序遍历 inorder 9 3 15 20 7 后序遍历 postorder 9 15 7 20 3 返回如下的二叉树 3 9 20 nu
  • 交换a,b, 不使用中间变量

    第一种方法 a a b b a b a a b printf a d b d n a b 第二种方法 swap69 a b a b printf a d b d n a b void swap69 int a int b int pa in
  • 黑盒测试与白盒测试各自的优缺点

    黑盒测试的优点 1 比较简单 不需要了解程序内部的代码及实现 2 与软件的内部实现无关 3 从用户角度出发 能很容易的知道用户会用到哪些功能 会遇到哪些问题 4 基于软件开发文档 所以也能知道软件实现了文档中的哪些功能 5 在做软件自动化测
  • 使用 husky 进行Git提交前的代码校验和 commit msg检查

    husky 是一个 Git Hooks 工具 借助 husky 我们可以在 git 流程的不同生命周期进行一些自动化操作 本文主要介绍提交前 eslint 校验和提交时 commit 信息的规范校验 什么是 Git Hooks Git Ho
  • c调用python库_c中嵌入的python代码 – 导入python库时出错

    我试图使用嵌入在C程序中的 Python 3 5解释器从C接收图像 并将其用作我训练的张量流模型的输入 首先 我将我的图像转换为numpy数组 然后将其发送到python 这是我的简化代码 工作正常 从 here采用的代码 Python代码
  • web测试,App测试,小程序测试区别

    最近项目真的太忙了 不过 今天无论如何我都要更文章了 谢谢大家的支持 不断努力进步 这篇文章 我就是要梳理一下 web测试 app测试 和小程序的区别 话不多说 上主题 web测试 App测试 小程序测试 一 web测试 1 1 什么是we
  • JS时间戳转换方式

    前言 在js中将时间戳转换为常用的时间格式 有三种主要的方式 1 使用JS中已有的函数 例如getFullYear getMonth 等 将时间戳直接转换成对应的年月 2 创建时间过滤器 在其他的页面中直接调用该过滤器 转换时间戳 3 使用
  • 使用trtexec工具多batch推理tensorrt模型(trt模型)

    文章目录 零 pt转onnx模型 一 onnx转trt模型 二 推理trt模型 零 pt转onnx模型 参考 https github com ultralytics yolov5 用根目录下的export py可以转pt为onnx模型 命
  • Gem5模拟器,详解官网教程的statistics and output(三)

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