实验3--SimpleScalar与程序优化_第1页
实验3--SimpleScalar与程序优化_第2页
实验3--SimpleScalar与程序优化_第3页
实验3--SimpleScalar与程序优化_第4页
实验3--SimpleScalar与程序优化_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验实验 3 SimpleScalar 与程序优化与程序优化 201208010218 路志桐路志桐 计科二班计科二班 1 简介 简介 SimpleScalar 是上世纪由威斯康辛大学发布的一款开源模拟器 具备良好 的可移植性和可扩展性 作为一款时钟精确的模拟器 SimpleScalar 采用执行驱动方式模拟 包含 功能模拟和性能模拟 SimpleScalar 的指令集架构采用 C 语言宏声明 目前 3 0 版本主要支持 PISA 指令集和 Alpha 指令集 根据模拟的目的不同 SimpleScalar 包含多个模拟器实体 从最简单的 Sim fast 到最为复杂的 Sim outorder 可分别用于功能模拟 Cache 配置策略 流水线 前瞻预测等体系 结构问题的全面研究 2 安装 安装 1 首先从官网上下载相关的文件 Simpletools 2v0 tgz Simplesim 3v0e tar gz Simpleutils 990811 tar gz Gcc 2 7 2 3 ss tar gz 2 然后安装 flex build essential sudo apt get install flex sudo apt get install build essential 本来还需要 bison 的 不过之前安装过了 略过 另外除此之外我们还需要配置一下环境变量 安装目录 export IDIR home my simplescalar 设置主机 export HOST i686 pc linux 设置目的机器成小字段机器 export TARGET sslittle na sstrix 3 设置完环境之后我们便可以安装 simpletools 了 进入到目的地址后 我们用 tar xzvf 命令将之前下载下来的 simpletools 解压 由于 simplescalar 需要 Gcc2 7 以上版本支持 所以我们需要通过 rm 命令 移除原先电脑自带的 Gcc cd IDIR tar xzvf simpletools 2v0 tgz rm rf gcc 2 6 3 4 其次是 simpleutils tar xzvf simpleutils 990811 tar gz cd simpleutils 990811 然后编译前要打开 simpleutils 990811 ld 下的文件 ldlex l 并且将里面全 部的yy current buffer 替换成大写 否则代码将会报错 然后就可以进行编译 configure host HOST target TARGET with gnu as with gnu ld prefix IDIR make make install 5 接下来安装 simplesim3 0 cd IDIR tar xzvf simplesim 3v0e tgz cd simplesim 3 0 make config alpha make 6 最后安装 gcc2 7 编译器套件 cd IDIR tar xzvf gcc 2 7 2 3 ss tar gz cd gcc 2 7 2 3 export PATH PATH home YOUR USER NAME simplescalar sslittle na sstrix bin configure host HOST target TARGET with gnu as with gnu ld prefix IDIR 这里面有好几处代码需要修改 我们一一修改了相应的代码 修改代码 Makefile Line130 增加 I usr include 或 I include I usr include 修改代码 protoize c sudo chmod w protoize c 修改权限 include include 修改代码 obstack h sudo chmod w obstack h 修改权限 void o next free void datum void o next free void datum 复制补丁文件 cp patched sys cdefs h sslittle na sstrix include sys cdefs h cp sslittle na sstrix lib libc a lib cp sslittle na sstrix lib crt0 o lib 解压 ar ranlib tar gz 到 IDIR sslittle na sstrix bin 修改 ar 及 ranlib 的权限 sudo chmod w ar ranlib sudo chmod x ar ranlib cd IDIR gcc 2 7 2 3 make 修改代码 insn output c Line 675 750 823 末尾增加 make 修改代码 objc sendmsg c sudo chmod w objc sendmsg c 修改权限 Line35 增加 define STRUCT VALUE 0 make LANGUAGES c c CFLAGS O CC gcc 若出错 修改 cxxmain c 删掉 2978 2979 行 即 char malloc char realloc 若无 cxxmain 返回上文 Makefile 确认修改 再继续重复流程 make LANGUAGES c c CFLAGS O CC gcc make install LANGUAGES c c CFLAGS O CC gcc 最后安装完成之后随意写一个 C 语言代码进行测试 用如下命令编译 IDIR bin sslittle na sstrix gcc o 1 1 c 然后运行 IDIR simplesim 3 0 sim safe 1 发现可以运行 安装成功 3 代码优化 比较各种分支预测技术的性能代码优化 比较各种分支预测技术的性能 SimpleScalar 分支预测的实现方法是 先确定是否采取分支 即进行分支 方向探测 然后是生成分支地址 对于调用返回指令 就在 RAS 上直接作相关 操作 普通分支指令则需要利用 BTB 来地址探测 如果命中的话则生成地址 然后对两步进行综合 地址命中且分支预测为采取 返回分支目标地址 地址 不命中且分支预测为采取 返回 1 只要分支预测为不采取 就返回 0 包括在仿真器上运行的三个程序的结果统计数据表格 以及对各种分支预测方法 的对比分析 每一列对应的运行参数分别为 1 test math sim bpred bpred taken tests bin little test math sim bpred bpred nottaken tests bin little test math sim bpred bpred bimod bpred bimod 512 tests bin little test math sim bpred bpred bimod bpred bimod 1024 tests bin little test math sim bpred bpred 2lev bpred 2lev 1 1024 8 01 tests bin little test math sim bpred bpred 2lev bpred 2lev 1 64 6 1 tests bin little test math sim bpred bpred comb bpred comb 1024 bpred 2lev 1 1024 8 0 bpred bimod 1024 tests bin little test math always taken always not taken bimod 512 bimod 1024 2 level 1 1024 8 0 2 level 1 64 6 1 comb 1024 1 1024 8 0 1024 sim total insn213688213688213688213688213688213688213688 sim total refs56897568975689756897568975689756897 sim num branches38591385913859138591385913859138591 sim elapsed time1111111 sim inst rate213688213688213688213688213688213688213688 sim IPB5 53725 53725 53725 53725 53725 53725 5372 bpred bimod lookups38591385913859138591385913859138591 bpred bimod updates38591385913859138591385913859138591 bpred bimod addr hits25661219383369234237342422784435570 bpred bimod dir hits25661219383419534732347942838736011 bpred bimod misses1293016653439638593797102042580 bpred bimod jr hits3543354335283528352835283528 bpred bimod jr seen3543354335433543354335433543 bpred bimod jr non ras hits PP354335432828282828 bpred bimod jr non ras seen PP354335434141414141 bpred bimod bpred addr rate0 66490 56850 87310 88720 88730 72150 9217 bpred bimod bpred dir rate0 66490 56850 88610 90000 90160 73560 9331 bpred bimod bpred jr rate1 00001 00000 99580 99580 99580 99850 9958 bpred bimod bpred jr non ras rate PP1 00001 00000 68290 68290 68290 68290 6829 bpred bimod retstack pushes0035043504350435043504 bpred bimod retstack pops0035023502350235023502 bpred bimod used ras PP0035023502350235023502 bpred bimod ras hits PP0035003500350035003500 bpred bimod ras rate PPError divide by zero Error divid by zero 0 99940 99940 99940 99940 9994 根据得到的统计数据得知 在上述的分支预测器配置中 复合式的地址预测命中 率与分支方向预测命中率最高 代码分析代码分析 在 sim bpred c 中检查了输入的动态预测方法选项 并创建了相应的分支预 测器 sim check options struct opt odb t odb int argc char argv 函数中 if mystricmp pred type taken 创建预测器实例 bpred bpred create BPredTaken 0 0 0 0 0 0 0 0 0 在 sim main 函数中 while TRUE regs regs R MD REG ZERO 0 ifdef TARGET ALPHA regs regs F d MD REG ZERO 0 0 endif 获取下一条指令 MD FETCH INST inst mem regs regs PC 指令计数 sim num insn set default reference address and access mode addr 0 is write FALSE set default fault none fault md fault none 对指令译码 MD SET OPCODE op inst 执行指令 switch op define DEFINST OP MSK NAME OPFORM RES FLAGS O1 O2 I1 I2 I3 case OP SYMCAT OP IMPL break define DEFLINK OP MSK NAME MASK SHIFT case OP panic attempted to execute a linking opcode define CONNECT OP define DECLARE FAULT FAULT fault FAULT break include machine def default panic attempted to execute a bogus opcode if fault md fault none fatal fault d detected 0 x 08p fault regs regs PC if MD OP FLAGS op if MD OP FLAGS op if MD OP FLAGS op struct bpred update t update rec sim num branches if pred 如果分支预测器创建成功 获取预测的下条指令的地址 pred PC bpred lookup pred 分支地址 regs regs PC 目的地址 target PC 指令操作码 op call MD IS CALL op return MD IS RETURN op stash an update ptr 判断从分支预测器返回的下条指令地址是否合法 i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论