- 12
- 0
- 约6.92千字
- 约 11页
- 2017-08-20 发布于浙江
- 举报
simplescalar 使用说牡明
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,支持早期的分支预测失败的探测。
发射段(schedule)
(
原创力文档

文档评论(0)