- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SimpleScalar使用说明
1。基本内容介绍:
SimpleScalar是一组体系结构仿真器工具,他可以模拟一个程序在某种体系结构机器上的具体执行过程,给出该体系结构的功能和性能参数。
SimpleScalar工具集的组成如下:
fortran语言的代码先转成C语言的代码,普通的C程序需要利用工具集中自带的gcc编译成二进制代码,仿真器可以直接执行二进制代码。
SimpleScalar仿真器的特点如下
指令格式可扩展,能够支持多个指令集
可以运行在大多数类UNIX以及NT平台上
提供了大量参数来描述执行细节
包括多个仿真器。
它们是:
sim-fast ,sim-safe,sim-cache,sim-cheetah,sim-profile,sim-bpred,sim-eio和sim-outorder.
功能和特点如下:
sim-fast: 它是速度最快的仿真器,但是作为代价,它不进行指令的错误检查,所以当运行过程中出现错误时,你无法确定是仿真器本身出错还是指令出现了错误;
sim-safe: 是SimpleScalar所有仿真器中最简单的一个功能仿真器;它进行指令错误检查;
sim-profile: 可以使用符号和地址来产生程序代码的简要分析
sim-cache: 在这个仿真其中加入了cache,用户可以对cache及 TLB 进行设置,支持两级的cache和一级的TLB,第一级cache和TLB均分为数据和指令两部分;
sim-cheetah: sim-cheetah是为了Cheetah而实现的一个仿真器驱动。Cheetah是一个cache的仿真包,它可以对一个程序的某一次运行中的多级cache的仿真进行有效的仿真。此外,它还可以对某一级的组相连和全相连cache进行仿真。
sim-bpred:它是一个分支预测机制的分析器;
sim-eio: 它是一个最简单的仿真器,进行指令检查,主要是追求程序执行再现的清晰性,而不是执行的速度。EIO trace and checkpoint generator external I/O tracing module
sim-outorder: 实现了对一个非常详细的支持乱序发射,拥有一个二级的memory和推断执行的超标量处理器的仿真,本身拥有很高的性能,而且对整个程序执行期间流水线的状态都进行了记录,基本上包括了以上各种仿真器的全部功能。
SimpleScalar的仿真体系结构
指令集介绍:
类MIPS/DLX指令集,增加了新的地址模式,去掉了延迟槽的功能。
同时支持大尾端、小尾端两种格式
指令字长64位:
16位用于指令说明和扩展,8位寄存器描述符最多可支持256个通用寄存器。
指令类型有控制指令,load/store指令,整数算术逻辑指令,浮点指令以及syscall等,具体指令描述见实验指导书的附录。
寄存器及虚拟内存的状态如下:
寄存器的功能说明如下:
仿真器使用方法 在linux环境中,进入SimpleScalar的安装目录,输入如下格式指令:
sim-*** [-sim opts] program [-program opts]
相关的指令还有
编译一个C语言程序
sslittle-na-sstrix-gcc -g -O -o foo foo.c -lm
编译一个FORTRAN程序
ssbig-na-sstrix-f77 -g -O -o foo foo.f -lm
编译一个SimpleScalar汇编语言程序
ssbig-na-sstrix-gcc -g -O -o foo foo.s –lm
sim-outorder仿真器的使用
sim-outorder的指令执行流程
sim-outorder的动态调度方法基本上是加上了分支预测的Tomasulo算法,它的关键部件是寄存器更新部件RUU和存取缓冲队列LSQ。这两个部件的说明如下:
RUU:
RUU负责寄存器间的信息交换和同步,它包含保留站和再定序缓冲的功能,指令从Dispatch段进入,分配RUU,在commit段释RUU,作到乱序发射,顺序提交。RUU被组织成一个循环队列,之间通过总线交换信息。
LSQ:
LSQ负责存储器间的同步和信息交换,它包含了LOAD/STORE指令,指令被分成有效地址计算指令和真正的存取原语指令,前者位于RUU中。
流水段描述:
取指段(fetch)cache中取指令,并把它放入IFQ中。判断下一条指令是否是预测执行的指令,同时接收其他段送来的预测失败信息。
分派指令段(dispatch):
从LSQ中取指令解码,重命名寄存器,分配RUU和LSQ,支持早期的分支预测失败的探测。
发射
文档评论(0)