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

下载本文档

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

文档简介

实验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!修改权限#include<varargs.h>–>#include<stdarg.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:末尾增加“\”#defineDECLARE_FAULT(FAULT)

\

{fault=(FAULT);break;}#include"machine.def"

default:

panic("attemptedtoexecuteabogusopcode");}

if(fault!=md_fault_none)fatal("fault(%d)detected@0x%08p",fault,regs.regs_PC);

if(MD_OP_FLAGS(op)&F_MEM){

sim_num_refs++;

if(MD_OP_FLAGS(op)&F_STORE)

is_write=TRUE;

}

if(MD_OP_FLAGS(op)&F_CTRL)

{

md_addr_tpred_PC;

structbpred_update_tupdate_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),

/*stashanupdateptr*/&update_rec,

/*stashreturnstackptr*/&stack_idx);

/*判断从分支预测器返回的下条指令地址是否合法*/

if(!pred_PC)//不合法,(当返回0时,表示采用分支不转移预测)

{

/*分支不转移,pc直接加一*/

pred_PC=regs.regs_PC+sizeof(md_inst_t);

}

/*根据指令执行的实际结果,来更新分支预测器*/

bpred_update(pred,

/*分支地址*/regs.regs_PC,

/*resolvedbranchtarget*/regs.regs_NPC,

/*分支是否转移*/regs.regs_NPC!=(regs.regs_PC+

sizeof(md_inst_t)),

/*predtaken?*/pred_PC!=(regs.regs_PC+

sizeof(md_inst_t)),

/*correctpred?*/pred_PC==regs.regs_NPC,

/*opcode*/op,

/*predictorupdatepointer*/&update_rec);

}

}

/*checkforDLitedebuggerentrycondition*/

if(dlite_check_break(regs.regs_NPC,

is_write?ACCESS_WRITE:ACCESS_READ,

addr,sim_num_insn,sim_num_insn))

dlite_main(regs.regs_PC

温馨提示

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

评论

0/150

提交评论