实验3--SimpleScalar与程序优化

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验3SimpleScalar与程序优化201208010218路志桐计科二班一、简介:SimpleScalar是上世纪由威斯康辛大学发布的一款开源模拟器,具备良好的可移植性和可扩展性。作为一款时钟精确的模拟器,SimpleScalar采用执行驱动方式模拟,包含功能模拟和性能模拟。SimpleScalar的指令集架构采用C语言宏声明,目前3.0版本主要支持PISA指令集和Alpha指令集。根据模拟的目的不同,SimpleScalar包含多个模拟器实体,从最简单的Sim-fast到最为复杂的Sim-outorder,可分别用于功能模拟、Cache配置策略、流水线、前瞻预测等体系结构问题的全面研究。二、安装:1、首先从官网上下载相关的文件:Simpletools-2v0.tgz;Simplesim-3v0e.tar.gz;Simpleutils-990811.tar.gz;Gcc-2.7.2.3.ss_.tar.gz;2、然后安装flex,build-essential$sudoapt-getinstallflex;$sudoapt-getinstallbuild-essential;本来还需要bison的,不过之前安装过了,略过。另外除此之外我们还需要配置一下环境变量安装目录:$exportIDIR=/home/my/simplescalar设置主机:$exportHOST=i686-pc-linux设置目的机器成小字段机器:$exportTARGET=sslittle-na-sstrix3、设置完环境之后我们便可以安装simpletools了进入到目的地址后,我们用tarxzvf命令将之前下载下来的simpletools解压;由于simplescalar需要Gcc2.7以上版本支持,所以我们需要通过rm命令移除原先电脑自带的Gcc。$cd$IDIR$tarxzvfsimpletools-2v0.tgz$rm-rfgcc-2.6.34、其次是simpleutils$tarxzvfsimpleutils-990811.tar.gz$cdsimpleutils-990811然后编译前要打开simpleutils-990811/ld下的文件ldlex.l并且将里面全部的yy_current_buffer替换成大写,否则代码将会报错。然后就可以进行编译$./configure-host=$HOST-target=$TARGET-with-gnu-as-with-gnu-ld-prefix=$IDIR$make$makeinstall5、接下来安装simplesim3.0$cd$IDIR$tarxzvfsimplesim-3v0e.tgz$cdsimplesim-3.0$makeconfig-alpha$make6、最后安装gcc2.7编译器套件$cd$IDIR$tarxzvfgcc-2.7.2.3.ss.tar.gz$cdgcc-2.7.2.3$exportPATH=$PATH:/home/YOUR_USER_NAME/simplescalar/sslittle-na-sstrix/bin$./configure-host=$HOST-target=$TARGET-with-gnu-as-with-gnu-ld-prefix=$IDIR这里面有好几处代码需要修改,我们一一修改了相应的代码!修改代码:./MakefileLine130:增加-I/usr/include或-I./include——-I/usr/include!修改代码:./protoize.c$sudochmod+wprotoize.c!修改权限#includevarargs.h–#includestdarg.h!修改代码:./obstack.h$sudochmod+wobstack.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的权限$sudochmod+warranlib$sudochmod+xarranlib$cd$IDIR/gcc-2.7.2.3$make!修改代码:./insn-output.cLine675/750/823:末尾增加“\”$make!修改代码:./objc/sendmsg.c$sudochmod+wobjc/sendmsg.c!修改权限Line35:增加#defineSTRUCT_VALUE0$makeLANGUAGES=cc++CFLAGS=-OCC=gcc!若出错,修改./cxxmain.c,删掉2978-2979行,即:char*malloc();char*realloc();!若无cxxmain,返回上文./Makefile确认修改,再继续重复流程$makeLANGUAGES=cc++CFLAGS=-OCC=gcc$makeinstallLANGUAGES=cc++CFLAGS=-OCC=gcc最后安装完成之后随意写一个C语言代码进行测试。用如下命令编译$IDIR/bin/sslittle-na-sstrix-gcc-o11.c然后运行$IDIR/simplesim-3.0/sim-safe1发现可以运行,安装成功三、代码优化:比较各种分支预测技术的性能SimpleScalar分支预测的实现方法是:先确定是否采取分支,即进行分支方向探测,然后是生成分支地址,对于调用返回指令,就在RAS上直接作相关操作,普通分支指令则需要利用BTB来地址探测,如果命中的话则生成地址。然后对两步进行综合,地址命中且分支预测为采取,返回分支目标地址;地址不命中且分支预测为采取,返回1;只要分支预测为不采取,就返回0。包括在仿真器上运行的三个程序的结果统计数据表格,以及对各种分支预测方法的对比分析。每一列对应的运行参数分别为:(1)test-math./sim-bpred-bpredtakentests/bin.little/test-math./sim-bpred-bprednottakentests/bin.little/test-math./sim-bpred-bpredbimod-bpred:bimod512tests/bin.little/test-math./sim-bpred-bpredbimod-bpred:bimod1024tests/bin.little/test-math./sim-bpred-bpred2lev-bpred:2lev11024801tests/bin.little/test-math./sim-bpred-bpred2lev-bpred:2lev16461tests/bin.little/test-math./sim-bpred-bpredcomb-bpred:comb1024-bpred:2lev1102480-bpred:bimod1024tests/bin.little/test-mathalwaystakenalwaysnottakenbimod(512)bimod(1024)2-level(1,1024,8,0)2-level(1,64,6,1)comb(1024)(1,1024,8,0)(1024)sim_total_insn213688213688213688213688213688213688213688sim_total_refs56897568975689756897568975689756897sim_num_branches38591385913859138591385913859138591sim_elapsed_time1111111sim_inst_rate213688213688213688213688213688213688213688sim_IPB5.53725.53725.53725.53725.53725.53725.5372bpred_bimod.lookups38591385913859138591385913859138591bpred_bimod.updates38591385913859138591385913859138591bpred_bimod.addr_hits25661219383369234237342422784435570bpred_bimod.dir_hits25661219383419534732347942838736011bpred_bimod.misses1293016653439638593797102042580bpred_bimod.jr_hits3543354335283528352835283528bpred_bimod.jr_seen3543354335433543354335433543bpred_bimod.jr_non_ras_hits.PP354335432828282828bpred_bimod.jr_non_ras_seen.PP354335434141414141bpred_bimod.bpred_addr_rate0.66490.56850.87310.88720.88730.72150.9217bpred_bimod.bpred_dir_rate0.66490.56850.88610.90000.90160.73560.9331bpred_bimod.bpred_jr_rate1.00001.00000.99580.99580.99580.99850.9958bpred_bimod.bpred_jr_non_ras_rate.PP1.00001.00000.68290.68290.68290.68290.6829bpred_bimod.retstack_pushes0035043504350435043504bpred_bimod.retstack_pops0035023502350235023502bpred_bimod.used_ras.PP0035023502350235023502bpred_bimod.ras_hits.PP0035003500350035003500bpred_bimod.ras_rate.PPError:dividebyzeroError:dividbyzero0.99940.99940.99940.99940.9994根据得到的统计数据得知,在上述的分支预测器配置中,复合式的地址预测命中率与分支方向预测命中率最高。代码分析在sim-bpred.c中检查了输入的动态预测方法选项,并创建了相应的分支预测器。sim_check_options(structopt_odb_t*odb,intargc,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;#ifdefTARGET_ALPHAregs.regs_F.d[MD_REG_ZERO]=0.0;#endif/*获取下一条指令*/MD_FETCH_INST(inst,mem,regs.regs_PC);/*指令计数*/sim_num_insn++;/*setdefaultreferencea

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功