资源预览内容
第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
亲,该文档总共3页全部预览完了,如果喜欢就下载吧!
资源描述
体系结构实验指导书INFOLAB1 共 3 页指令集并行指令集并行动态分支预测与推断执行动态分支预测与推断执行实验目的:1)了解动态分支预测的基本技术2)了解推断执行的基本过程3)比较各种分支预测技术的性能实验环境:linux 平台下 SimpleScalar 仿真器,详见 SimpleScalar 使用说明实验原理:SimpleScalar 分支预测的实现方法。流程:先进行分支方向探测,即是否采取分支(当然跳转指令和调用返回指令不用作这一步) ,接着是生成分支地址,对于调返指令,直接在 RAS 上作相关操作,普通分支指令则要利用 BTB 来进行地址探测,命中则生成地址。然后对两步综合,地址命中且分支预测为采取,返回分支目标地址;地址不命中且分支预测为采取,返回 1;只要分支预测为不采取,就返回 0。重点分析针对条件分支指令的方向探测方法,主要有 6种,三种静态:taken,not tanken,perfect;三种动态:bimod,2-level,comb。静态的方法顾名思义,只是 perfect 这种,按它的原薏是不预测,直接把真正采取的下一条指令填入npc,而且它确实不需要调用 pred-lookup 函数,但据有人说,这种方法有时性能不如bimod,另外在 sim-pred 中好象也没加入这种方法,只是在 sim-outorder 中有实现。对于三种动态方法,分别说明如下:bimod 是最普通的,即采用一个 2bit 宽的分支方向预测表,按分支地址查找,2bit 分支预测器的判断和更新与课本上的一致。这种方式只有一个参数,就是分支预测表的长度。2-level 要复杂一些,它采用两级表格式,第一级是分支历史表,存放各组分支历史寄存器的值,第二级是全局/局部分支模式表,(全局或局部应是由表长相对于分支历史寄存器的长决定) ,它存放各分支历史模式的2bit 预测器。在判断时用当前分支指令对应的历史寄存器值去索引二级表得到相应预测器值。更新时,把当前分支的方向左移入历史寄存器,并对使用过的 2bit 预测器作更新。它有四个参数,前三个是一级表长度,二级表长度,历史寄存器宽度,最后一个是异或标志。如果为 1,则将历史寄存器的值与当前分支指令地址异或,用其结果再去索引二级模式表。而 comb 方式则组合了以上两种方法,它再加入了一个 meta 表,这个表类似 bimod 的预测表,只是它预测的是采取 bimod 还是 2-level,也采用 2-bit 预测器,被采取的预测方法被定为第一方向,未被采取的定为第二方向。更新时,如果第一方向与第二方向不同则更新 meta 表,否则只更新两种方法各自的表即可。它共有三组参数,前两组即 bimod 和 two-level 的参数,第三组是关于 meta 表长度的说明。至于 BTB 的更新与 cache 的更新方式相同。实验步骤:1) 在 Windows 环境下运行 VMware 虚拟机。2) 在 VMware 虚拟机上运行 Linux 的命令行模式。3) 进入 SimpleScalar 目录(/home/fwang/tixijiegou/simplesim-3.0/) 。4) 用 sim-pred 仿真器运行提供的三个 benchmark 程序,分别采用五种不同的分支预测方法,即 bimod 方式,two-level adaptive 方式,always taken 方式,always not taken 方式,comb 方式,并对前两种分别使用下表中两种参数配置:分析仿真器输出的关于分支预体系结构实验指导书INFOLAB2 共 3 页测的统计参数集,填写表格,并对各仿真器的能力给出相应说明。模拟程序名 always takenalways not takenbimod (516)bimod (1024)2-level (1,1024,8,0)2-level (1,64,6,1)comb (1024) (1,1024,8,0) (1024) sim_total_insn sim_total_refs sim_num_branches sim_elapsed_time sim_inst_rate sim_IPB bpred_bimod.lookups bpred_bimod.updates bpred_bimod.addr_hits bpred_bimod.dir_hirts bpred_bimod.misses bpred_bimod.jr_hits bpred_bimod.jr_seen bpred_bimod.jr_non_ras _hits.PP bpred_bimod.jr_non_ras _seen.PP bpred_bimod.bpred_add r_rate bpred_bimod.bpred_dir _rate bpred_bimod.bpred_jr_r ate bpred_bimod.bpred_jr_n on_ras_rate.PP bpred_bimod.retstack_pu shes bpred_bimod.retstack_po ps bpred_bimod.used_ras.PP bpred_bimod.ras_hits.PP bpred_bimod.ras_rate.PP 说明:以上表格与参数配置仅供参考,实验时可略做调整。5) 命令格式为: ./sim-bpred -option executable_benchmark -argument其中 executable_benchmark 放在 tixijiegou/benchmark/目录下面,-argument 输入集在 tixijiegou/input 下面。三个 benchmark 程序的具体输入情况举例如下:GCC :./benchmark/cc1_base.pisa_little ./input/smred.c-iterate.i o ./input/ smred.c-iterate.cMcf :./benchmark/mcf_base.pisa_little ./input/smred.inGzip:./benchmark/ gzip_peak.pisa.little ./input/mdred.log 1预测方法统计结果体系结构实验指导书INFOLAB3 共 3 页实验报告:包括在仿真器上运行的三个程序的结果统计数据表格,以及对各种分支预测方法的对比分析。备注:1)仿真器的参数输入可以采用配置文件的方法,即修改提供的 cfgfile 文件中相应参数,并把这个文件作为仿真器的-config 参数,省去输入长指令的麻烦。2) 给仿真器的-redir:sim 参数填一个文件,它能够记录所有输出的统计信息,供分析结果所用。3) 统计参数的意义详见 SimpleScalar 使用说明。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号