multi2sim 编译与使用(2)-详细运行时信息的获取
2013-04-17 14:57
1196 查看
1. 生成详细的CPU运行报告
很多时候我们需要知道CPU在运行某个程序时的各种细节,比如分支预测的准确度,各种类型的指令分别执行了多少次,此次仿真过程当中CPU的各种配置细节等等。这个时候需要使用multi2sim提供的--x86-report
功能。 使用此功能时必须让仿真器处于时序仿真状态即使用--x86-sim detailed 选项。
具体命令如下:
./m2s
--x86-sim detailed --x86-report report.txt hello
生成的详细报告将存放在report.txt 文件当中。现在对该文件的重要内容进行大致的说明:
multi2sim 生成的所有报告文件都是以ini文件格式进行存放的。
在中括号[]当中表示的字段是段落名,之后所有的数据都属于该段落直到遇到下一个段落为止。
report 首先会给出关于此次仿真的详细参数配置:
在report.txt当中首先看到的段落是[
Config.General ],该段落显示出一般性的处理器配置信息比如CPU核心的个数:Cores = 1,每个处理器核心的硬件线程数:Threads = 1。ROB的恢复方式:RecoverKind = Writeback等等。
之后的段落为[ Config.Pipeline
],给出了关于处理器pipeline的一系列配置参数比如fetch,dispatch,issue,commit各个流水线级的发射宽度:DecodeWidth = 4等等。
段落[ Config.Queues ]给出了CPU当中各级队列的size的设置,段落[ Config.FunctionalUnits ]给出了CPU当中各个功能模块的个数,
在标志“Simulation Statistics“之后即真正的仿真结果统计:
[ Global ]段给出了全局的统计参数,包括总共执行的时钟周期数等等,其中Dispatch.Uop.move
= 9961 表示在dispatch级总共发射了9961个move指令(微指令),其他类似的参数想依次类推。
在“Committed branches“标志之后记录了此次运行总共进行了多少次分支预测以及分支预测的准确程度。
2. 生成详细的内存结构运行报告
很多时候我们需要知道此次程序运行总共进行了多少次内存读写,其中L1cache和L2cache各自的hit比例是多少。multi2sim同样提供了相应的报告工具来生成内存系统的详细运行报告,参数为--mem-report。实际运行指令为:
./m2s --x86-sim detailed --mem-report report.txt hello
在生成的report.txt文件当中便可以对内存系统的运行状态一览无余。其中段落明的命名规则为
mm: main memory
l1: L1 cache
l2: L2 cache
x86-l1-0: L1 cache of core 0
x86-l2: shared L2 cache
知道了这些命名规则我们便可以轻松找到相应内存模块的运行参数,比如要知道core0的L1cache的hit rate我们首先找到[x86-l1-0]段,然后找到HitRatio
= 0.7455即表示hit率位0.7455。其他的各种参数以此类推。
该文件后面的类似[Network.x86-net-l1-l2.Node.Switch]段的数据是针对内存结构当中的互联网络进行的运行时统计数据,关于互联网络的话题将在后面的文章当中详细介绍。
待续。。。
参考文献:
[1] “multi2sim user guide”http://www.multi2sim.org/files/multi2sim-r311.pdf
很多时候我们需要知道CPU在运行某个程序时的各种细节,比如分支预测的准确度,各种类型的指令分别执行了多少次,此次仿真过程当中CPU的各种配置细节等等。这个时候需要使用multi2sim提供的--x86-report
功能。 使用此功能时必须让仿真器处于时序仿真状态即使用--x86-sim detailed 选项。
具体命令如下:
./m2s
--x86-sim detailed --x86-report report.txt hello
生成的详细报告将存放在report.txt 文件当中。现在对该文件的重要内容进行大致的说明:
multi2sim 生成的所有报告文件都是以ini文件格式进行存放的。
在中括号[]当中表示的字段是段落名,之后所有的数据都属于该段落直到遇到下一个段落为止。
report 首先会给出关于此次仿真的详细参数配置:
在report.txt当中首先看到的段落是[
Config.General ],该段落显示出一般性的处理器配置信息比如CPU核心的个数:Cores = 1,每个处理器核心的硬件线程数:Threads = 1。ROB的恢复方式:RecoverKind = Writeback等等。
之后的段落为[ Config.Pipeline
],给出了关于处理器pipeline的一系列配置参数比如fetch,dispatch,issue,commit各个流水线级的发射宽度:DecodeWidth = 4等等。
段落[ Config.Queues ]给出了CPU当中各级队列的size的设置,段落[ Config.FunctionalUnits ]给出了CPU当中各个功能模块的个数,
在标志“Simulation Statistics“之后即真正的仿真结果统计:
[ Global ]段给出了全局的统计参数,包括总共执行的时钟周期数等等,其中Dispatch.Uop.move
= 9961 表示在dispatch级总共发射了9961个move指令(微指令),其他类似的参数想依次类推。
在“Committed branches“标志之后记录了此次运行总共进行了多少次分支预测以及分支预测的准确程度。
2. 生成详细的内存结构运行报告
很多时候我们需要知道此次程序运行总共进行了多少次内存读写,其中L1cache和L2cache各自的hit比例是多少。multi2sim同样提供了相应的报告工具来生成内存系统的详细运行报告,参数为--mem-report。实际运行指令为:
./m2s --x86-sim detailed --mem-report report.txt hello
在生成的report.txt文件当中便可以对内存系统的运行状态一览无余。其中段落明的命名规则为
mm: main memory
l1: L1 cache
l2: L2 cache
x86-l1-0: L1 cache of core 0
x86-l2: shared L2 cache
知道了这些命名规则我们便可以轻松找到相应内存模块的运行参数,比如要知道core0的L1cache的hit rate我们首先找到[x86-l1-0]段,然后找到HitRatio
= 0.7455即表示hit率位0.7455。其他的各种参数以此类推。
该文件后面的类似[Network.x86-net-l1-l2.Node.Switch]段的数据是针对内存结构当中的互联网络进行的运行时统计数据,关于互联网络的话题将在后面的文章当中详细介绍。
待续。。。
参考文献:
[1] “multi2sim user guide”http://www.multi2sim.org/files/multi2sim-r311.pdf
相关文章推荐
- 使用Android studio打包应用程序出现如下错误: 注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
- android出现注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用了未经检查或不安全的操作。 注
- 使用GetLogicalProcessorInformation获取逻辑处理器的详细信息(NUMA节点数、物理CPU数、CPU核心数、逻辑CPU数、各级Cache)
- 使用 traceback 获取详细的异常信息
- java 泛型 编译警告:使用了未经检查或不安全的操作。 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
- 使用WMI获取远程机器操作系统的详细信息
- 使用GetLogicalProcessorInformation获取逻辑处理器的详细信息(NUMA节点数、物理CPU数、CPU核心数、逻辑CPU数、各级Cache)
- android出现注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用了未经检查或不安全的操作。 注
- Windows客户端开发--使用WMI获取显卡详细信息(win32控制台程序)
- 高德地图使用(一)在页面中通过自动提示选择位置,标点及获取详细信息
- Windows客户端开发--使用WMI获取显卡详细信息(win32控制台程序)
- 使用CreateToolhelp32Snapshot获取指定进程详细信息的方法
- 获取系统运行进程信息——PSAPI介绍使用 .
- 要了解详细信息,请使用-xlint:unchecked重新编译
- 1 开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你。 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的原则已经被许多现有的JDBC应用程序编译运行并验证过。 这些指导原则包括: 正确的使用数据库MetaData方法 只获取需要的数据 选用最佳性能的功能 管理连
- 使用HD/IDE layer的ioctl接口获取磁盘详细信息device_identify
- android出现注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用了未经检查或不安全的操作。 注
- android出现注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用了未经检查或不安全的操作。
- 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
- 6.5 分页列表详细信息标签预编译sql获取数据功能