好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Introduction_of_Gem5.pdf

8页
  • 卖家[上传人]:油条
  • 文档编号:20236783
  • 上传时间:2017-09-08
  • 文档格式:PDF
  • 文档大小:864.13KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • GEM5 简明 使用 文档 一.简介 GEM5, 是一款高度可配 置 、 集成多种 ISA( X86, ARM, ALPHA, MIPS, SPARC 等 ) 和多 种 CPU 模型的体系结构模拟器 官方网站 : http://www.gem5.org/Main_Page GEM5详细介绍 : http://www.gem5.org/Documentation 二.安装 GEM5 本机环境为 ubuntu 12.04, 运行环境要 求 : ( 强 烈 建议仔细阅读 http://www.m5sim.org/Compiling_M5)  Gcc/g++ 4.2+(or clang 2.9+)  Python 2.4+  Scons 0.98.1+  Swig 1.3.40+( Swig 2.0.9 和 Swig 2.0.10 不支 持 )  Zlib  M4  Protobuf 1. 针对 ubuntu 系 统 , 只需 在 终 端 ( terminal) 中运行下述命 令 (注意顺 序 ), 即可 完 成 安 装上述所有软件: s udo a pt-get i ns tall python-dev s cons m4 bui ld-es sential g++ s wig zlib1g-dev libprotobuf-dev 效果如下图: 若非 ubuntu 系统,则需要依次下载上述软件的源码文件, http://www.m5sim.org/Compiling_M5#Required_Software 中有对应文件 下 载地址, 然后进行手工编译和安装。

      具体安装步骤可参考这篇博客: 2. 下载 gem5 源 码文件 ( 1)利用 mercurial 下载最新的 gem5 源代码 , 相关命令如下: sudo apt-get install mercurial cd ~ sudo hg clone http://repo.gem5.org/gem5 (运行完这条命令后,会在 主目 录 夹 下生成包含 gem5 源代 码 的文件夹 gem5) ( 2)鉴于下载时间太长 , gem5 源代码已上传到嵌入式学科组服务器, 下载链接: 然后把下载 文件 gem5.tar.bz2 放 到 主 目录下 然后运行下面命令进行解压: cd ~ tar -xvf gem5.tar.bz2 mv gem5-st….xxxxx gem5(重命 名 ) 3. 编译安装 gem5命 令 如下: cd ~/gem5 sudo scons build/X86/gem5.opt (此步 骤需耗时 30—50min) ; 4. 验证 gem5 是 否安装成功,输入以下命令 cd ~/gem5 build/X86/gem5.opt configs/example/se.py -c tests/test-progs/hello/bin/x86/linux/hello 效果如下图,说明安装成功。

      三.编写并测试自己的程序,获 得 相关 统 计信息 1. 编写程序源文 件 : 假设文件名称为 test.c 2. 编译: gcc -o test test.c --static 注意: 要编译成静态程序 3. 用 gem5 运行程序,并得到相关统计信息 cd ~/gem5 build/x86/gem5.opt configs/example/se.py -c /xxxxxx/test 注意: 参数 -c 后 面 跟着的是编译所 获 得程 序 (此处为 test)的路径 (建议使用绝对路径)详细参数 配置看下一节 四.查看程序的统计信息 统计信息默认放在 gem5 安装目录下 ( ~/gem5)的 m5out 文件夹下 其中 config.init 为相 关 的配置信息 stats.txt 就是运行程序的统计信息可 通 过 vim stats.txt (or gedit stats.txt) 命 令 进行查看,统计信息太多,此处仅列举部分 内容: //全局 Simseconds : #所测试程序的运行时间,单位为 s Sim_insts: #模拟运行的指令数 //内存统 计 信息 system.me m_ctrls.b ytes_rea d::cpu.inst #从此内存读的所有指令字节数 system.mem_ctrls.bytes_read::cpu.data#从此内存读的所有数据字节数 System.mem_ctrls.bytes_read::total#从此内存读的所有字节 数 , 包括指令和数据 system.mem_ctrls.bytes_w ritten::cpu.data#向此内存写的所有数据字节数 system.mem_ctrls.bytes_w ritten::total#向此内存写的所有字节数 //cache 统计信息 system.cpu.icache.tags.replacements #icache 替换次数 system.cpu.icache.overall_hits::total #icache 总共命中次数 system.cpu.icache.overall_misses::total #icache 总 共 未命中次数 system.cpu.icache.overall_miss_rate::total #icache 未命中率 system.cpu.dcache.tags.replacements #dcache 替换次数 system.cpu.dcache.overall_hits::total #dcache 总 命 中次数 system.cpu.dcache.overall_misses::total #dcache 总未命中次数 system.cpu.dcache.overall_miss_rate::total #dache 未命中率 注意 : stats.txt 中的内容因相关参数配置而不同,比如没有添加 cache,则没有 cache 的 统 计信息。

      四.参数配置 运行 gem5 命令的通用形式: build/X86/gem5.opt configs/example/se.py 共有两 处 配置参数 的 地方: 和 ,先前我 们 只用 到 了 中的 –c 参数,用以指定要测试程序的路径 1. 在终端中输入 build/X86/gem5.opt - -help 就可 输 出所 有 中的内容 效果如下图: 其中有些参数如果不指定,就使用默认值比如先前所说的统计信息所放的 m5out 文 件夹,就是 参 数 --outdir 的默认 值 可以查 看 /gem5/src/python/m5/main.py 文件获得 中的各参 数默认 值 如果要指定统计信息放 到 statsout 文件夹下,则命令如下: build/X86/gem5.opt - -outdir=statsout configs/example/se.py –c hello 这里重点讲一下 : Debugging Options 运行下述命令,可输出所有的 debug-flags build/X86/gem5.opt - -debug-help 比如我们想获得在程序运行过程 中 , cache 中的内容相关变 化 , 则可使用 debug-flags = Cache 进行获得。

      命令如下: buid/X86/gem5.opt --outdir=m5_cache.out - -debug-flags=Cache - -debug-file=cache.out configs/example/se.py - -caches -c hello --outdir:指定统计信息输出目录 --debug-flags:指定想要获取的 debug 信息内容 --debug-file: 指定 debug 信息内容存放的文件名称,它放 在 —outdir 指定的文件夹下 --caches : 指定含有 l1cache,如果没有 cache,当然 cache.out 信息为空 -c hello : 所测试的程序为 hello. Cache.out 部分内容如下: 其相应的默认参数配置文件为: /gem5/configs/commom/Options.py 如果要得到程序运行的每一条指令,则可以设置 debug-flags=Exec, 就 可以得到 build/X86/gem5.opt - -outdir=m5_exec.out - -debug-flags=Exec - -debug-file=exec.out configs/example.se.py - -caches -c hello Exec.out 部分内容如下: 2. 在终 端 中输入 build/X86/gem5.opt configs/example/se.py - -help 就可输 出 所有 中的 内容。

      效果图如下: -c ,最开始用的参数,用于指定要运行的程序 其中涉及 cache 参数的内容如下: 由 上 可 知 , 最 多 可 以 添 加 到 三 级 cache 指 定 参 数 - -caches , 添 加 一 级 cache ,指令 cache(l1i_cache)和数据 cache(l1d_cache)分开 ;指定 参 数 - -num-l2caches, 添 加 二级 cache,如果 要指定多个二级 cache,则 - -num-l2caches=NUM,NUM 即要制定 L2cache 的数目 , l2cache 不分 指令和数据 cache 三级 cache 与二级 cache 一 样 . 其中各级 cache 的大小和组相联度都有默认值,比如一级数据 cache 的大小为 64kB(注意 k 小写 ),相联度为 2更改默认值则有两种方法,一是在这个文件中修改,就是修改 default 值另一个就是在命令行中指定,比如我想指定含有 2 级 cache,一 级 指令 cache 为 64kB,相 联度为 4,其余默认,则命令如下: build/X86/gem5.opt configs/example/se.py - -caches - -num-l2caches - -l1i_size=64kB - -l1i_assoc=4 –c hello 最后一个参 数 - -cacheline_size, 则是 指 每一个 cache 行的大 小 , 默认为 64B。

      修 改 方法同 上, 两种方法 另外一组参数: -o ,是给要运行 的 程序传递的参数,比 如 给程序中 的 数 组 动态指定大小传递多个参 数 ,最 好用引号括起 来 , “ “, 不用括也是可以 的 , 这与通常向程序传递参数一 致 , 只是加 –o, 用 以声明后面列出的内容是传给测试程序的参数,而不是给 gem5. -i 是指 定 从某个文件读 入 参 数 ,使用 方 法 -i “a.txt“ , 是双 引 号, 不 是 = --output 是指定存放。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.