您的当前位置:首页正文

simplescalar使用说明(已处理)

2023-07-23 来源:爱go旅游网


SimpleScalar使用说明 1基本内容介绍

SimpleScalar是一组体系结构仿真器工具他可以模拟一个程序在某种体系结构机器上的具体执行过程给出该体系结构的功能和性能参数

SimpleScalar工具集的组成如下

fortran语言的代码先转成C语言的代码普通的C程序需要利用工具集中自带的gcc编译成二进制代码仿真器可以直接执行二进制代码

SimpleScalar仿真器的特点如下 指令格式可扩展能够支持多个指令集 可以运行在大多数类UNIX以及NT平台上 提供了大量参数来描述执行细节 包括多个仿真器 它们是 sim-fast

sim

safesim-cachesim-cheetahsim-profilesim-bpredsim-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 IO tracing module

sim-outorder 实现了对一个非常详细的支持乱序发射拥有一个二级的memory和推断执行的超标量处理器的仿真本身拥有很高的性能而且对整个程序执行期间流水线的状态都进行了记录基本上包括了以上各种仿真器的全部功能

SimpleScalar的仿真体系结构 指令集介绍

类MIPSDLX指令集增加了新的地址模式去掉了延迟槽的功能 同时支持大尾端小尾端两种格式 指令字长64位

16位用于指令说明和扩展8位寄存器描述符最多可支持256个通用寄存器 指令类型有控制指令loadstore指令整数算术逻辑指令浮点指令以及syscall等具体指令描述见实验指导书的附录

寄存器及虚拟内存的状态如下

寄存器的功能说明如下 仿真器使用方法

在linux环境中进入SimpleScalar的安装目录输入如下格式指令

sim-*** [-sim opts] program [-program opts] 相关的指令还有 编译一个C语言程序

sslittle-na-sstrix-gcc -g -O -o foo fooc -lm 编译一个FORTRAN程序

ssbig-na-sstrix-f77 -g -O -o foo foof -lm 编译一个SimpleScalar汇编语言程序

ssbig-na-sstrix-gcc -g -O -o foo foos –lm sim-outorder仿真器的使用 sim-outorder的指令执行流程

sim-outorder的动态调度方法基本上是加上了分支预测的Tomasulo算法它的关键部件是寄存器更新部件RUU和存取缓冲队列LSQ这两个部件的说明如下

RUU

RUU负责寄存器间的信息交换和同步它包含保留站和再定序缓冲的功能指令从Dispatch段进入分配RUU在commit段释RUU作到乱序发射顺序提交RUU被组织成一个循环队列之间通过总线交换信息

LSQ

LSQ负责存储器间的同步和信息交换它包含了LOADSTORE指令指令被分成有效地址计算指令和真正的存取原语指令前者位于RUU中

流水段描述

取指段fetchcache中取指令并把它放入IFQ中判断下一条指令是否是预测执行的指令同时接收其他段送来的预测失败信息

分派指令段 dispatch

从LSQ中取指令解码重命名寄存器分配RUU和LSQ支持早期的分支预测失败的探测

发射段schedule executionmem

指令执行输出寄存器/存储器写回事件 写回段write-back

执行写回事件发出操作数可用信息到总线触发分支预测失败的恢复事件 提交段commit

指令结束释放RUU和LSQ 指令执行时流水线状态描述

利用仿真器自带的PERL程序可以看outorder的流水线中每个cycle的状态记录方法如下

在执行时加入-ptrace 参数将结果存入file指定的文件中

用pipeviewpl 来浏览

sim-outorder中的设置选项及参数描述

sim-outorder包括了几乎所有的仿真器参数其他仿真器都是它的子集现对它的参数按类进行说明

使用格式sim-outorder -option executable_benchmark argument

option attributes default description -config 从一个文件中载入设置 -dumpconfig 将目前的设置写入文件中 -h turefalse false 打印帮助信息

-v turefalse false 详细地显示执行的所有指令的列表 -d turefalse false 显示调试信息 -I turefalse false 启动 Dlite 调试器 -seed 1 设置产生随机数的种子 -q turefalse false 进行初始化并立即结束 -chkpt 从一个文件中恢复 EIO 跟踪程序的执行 -redirsim 将仿真器的输入写入一个文件中

-redirprog 将benchmark程序的输入写入到一个文件中 -nice 0 设置仿真器的调度优先级 -inst 0 设置仿真器最多执行的指令条数 -fsstfwd 0 开始计时前跳过的指令的条数 -ptrace 生成流水线的状态信息

filenamestdoutstderr sim-outorder的程序执行统计参数描述

参数表示 参数说明 的指令条数

sim_num_insn 确认 committed

sim_num_loads

sim_num_refs 确认的 loadstore的个数

sim_num_stores

确认的load操作的个数 确认的store操作的个sim_elapsed_time 程

数 sim_num_branches 确认的分支操作的个数

序执行的时间 以秒为单位

sim_inst_rate 程序执行的速度 条指令秒

一共执行的指令的条数

sim_total_loads

sim_total_insn

sim_total_refs 一共执行的loadstore的次数

一共执行的load个数 sim_total_branches

sim_IPC

sim_total_stores 一共执行的store个数

sim_cycle 一共执

sim_CPI

一共执行的branch个数

行的周期数 平均每个周期执行的指令条数

sim_exec_BW

均每条指令执行的周期数 平均每个周期实际执行的指令

sim_IPB

平均多少条指

条数 包括分支预测错误时执行的无用的指令 令中有一条分支指令

IFQ_count cumulative IFQ occupancy

ifq_occupancy avg

IFQ_fcount cumulative IFQ full count

IFQ occupancy insts

ifq_latency

ifq_rate IFQ的平均发射速率 指令周期

ifq_fullRUU_count

avf IFQ occupant latency cycles

fraction of time cycles IFQ was full

RUU_fcount

ruu_occupancy

7404

ruu_rate RUU的平均发ruu_full

射速率 指令周期

ruu_latency

LSQ_count LSQ_fcount lsq_occupancy

lsq_latency

lsq_rate LSQ的平均发射速率 指令周期 lsq_full

sim_slip

avg_sim_slip

bpred_bimodlookups 一共进行了多少次分支预测

bpred_bimodaddr_hits

bpred_bimodupdates 分支预测表更新的次数

分支目标地址预测命中的次数 预测命中的次数

bpred_bimoddir_hirts 分支目标方向

bpred_bimodmisses 分支预测错误的次数

bpred_bimodjr_hits

JR型分支目标地址预测命中的次数

JR型分支出现的次数

non_RAS JR型分支目标地址预测命中的

non_RAS JR型分支出现的次数

bpred_bimodjr_seen

bpred_bimodjr_non_ras_hitsPP

次数

bpred_bimodjr_non_ras_seenPP

bpred_bimodbpred_addr_rate 分支目标地址预测的命中率 bpred_bimodbpred_dir_rate

分支目标方向预测的命中率

bpred_bimodbpred_jr_rate JR型分支目标地址预测的命中率

bpred_bimodbpred_jr_non_ras_ratePP non_RAS JR型分支目标地址预测的命中率

bpred_bimodretstack_pushes 向RAS中压入的地址的个数

bpred_bcom

bpred_bimodretstack_pops 从RAS中弹出的地址的个数

RAS 预测使用的总次数

bpred_bcom RAS 预测命中的次数

il1accesses

il1访问的

bpred_bcom RAS 预测的命中率 次数

il1hits

il1命中的次数 il1misses il1不命中的次数 il1writebacks il1写回的次数 il1miss_rate il1失效率 不命中

il1replacements il1替换的次数 il1invalidations il1无效的次数 次数访问次数

il1repl_rate il1替换率 替换次数访问次数

il1inv_rate

il1无效率

il1wb_rate il1写回率 写回次数访问次数 无效次数访问次数

dl1hits

dl1accesses dl1访问的次数

dl1命中的次数 dl1misses dl1不命中的次数

dl1writebacks dl1写回的次数 dl1miss_rate dl1失效率 不命中

dl1replacements dl1替换的次数 dl1invalidations dl1无效的次数 次数访问次数

dl1repl_rate dl1替换率 替换次数访问次数

dl1wb_rate dl1写回率 写回次数访问次数 无效次数访问次数

ul2hits

dl1inv_rate dl1无效率

ul2accesses ul2访问的次数

ul2命中的次数 ul2misses ul2不命中的次数

ul2writebacks ul2写回的次数 ul2miss_rate ul2失效率 不命中

ul2replacements ul2替换的次数 ul2invalidations ul2无效的次数 次数访问次数

ul2repl_rate ul2替换率 替换次数访问次数

ul2inv_rate

ul2无效率

ul2wb_rate ul2写回率 写回次数访问次数 无效次数访问次数

itlbaccesses itlb访问的次数

itlbmisses itlb不命中的次数

itlbwritebacks

itlb写回

itlbhits itlb命中的次数

itlbreplacements itlb替换的次数

的次数 itlbinvalidations itlb无效的次数 itlbmiss_rate itlb

失效率 不命中次数访问次数

次数

itlbwb_rate

itlbrepl_rate itlb替换率 替换次数访问itlb写回率 写回次数访问次数

itlbinv_rate itlb无效率 无效次数访问次数

dtlbaccesses dtlb访问的次数 dtlbmisses dtlb不命中的次数

dtlbwritebacks

dtlbhits dtlb命中的次数

dtlbreplacements dtlb替换的次数

dtlbinvalidations dtlb

dtlb写回的次数

无效的次数

dtlbmiss_rate dtlb失效率 不命中次数访问次数

dtlbwb_rate

dtlbrepl_rate dtlb替换率 替换次数访问次数 dtlb写回率 写回次数访问次数 次数访问次数

dtlbinv_rate dtlb无效率 无效

sim_invalid_addrs

ld_text_base 程序的代码段的基地址 ld_text_size 程序的代码段

的大小 ld_data_base 程序的数据段的基地址

ld_data_size 开始时

程序的数据端的大小

ld_stack_base 程序的堆栈的基地址 高端地址

ld_prog_entry 程序的

ld_stack_size 开始时程序的堆栈的大小 入口点 初始的 pc值

ld_environ_base 程序环境的基地址

ld_target_big_endian benchmark程序是小尾端还是大尾端 非零表示大围

mempage_count 一共分配的页数

memptab_misses

mempage_mem

序运行过程中分配内存的大小 的次数

访问第一级页表的失效memptab_miss_rate 第

memptab_accesses 访问页表的总次数

一级页表的失效率

因篇幅问题不能全部显示,请点此查看更多更全内容