框架设计
DESCRIPTION
框架设计. 龚军. 内容. CPU2006 数据采集 构架设计. 内容. CPU2006 数据采集 构架设计. CPU2006 数据采集. 测试 CPU2006 Train 测试集 动静结合 加 EBO 选项的运行时间 不加 EBO 选项的运行时间 目的 找到受到 EBO 选项影响最大的 CPU2006 中的例子,这样便于有针对性地选取优化方法. CPU2006 数据采集. 测试结果. CPU2006 数据采集. 问题 加 EBO 选项和不加 EBO 选项的时间差别不是很大( 470.lbm 的效果好像还不错) - PowerPoint PPT PresentationTRANSCRIPT
框架设计龚军
CPU2006 数据采集 构架设计
内容
CPU2006 数据采集 构架设计
内容
测试 CPU2006 Train 测试集◦ 动静结合
加 EBO 选项的运行时间 不加 EBO 选项的运行时间
◦ 目的 找到受到 EBO 选项影响最大的 CPU2006 中的例子,这样便
于有针对性地选取优化方法
CPU2006数据采集
测试结果
CPU2006数据采集
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
动静结合运行时间 ( 不加 EBO 选项 )
动静结合运行时间 ( 加 EBO 选项 )
问题◦ 加 EBO 选项和不加 EBO 选项的时间差别不是很大
( 470.lbm 的效果好像还不错)◦ 有的例子 Train 的时间太短,可能需要用 Ref 测(不过测
Ref 时间应该很长,不利于做重复运行进行分析 )◦ 现有的最新的 Qemu-n32 版本,有几个例子会出错
CPU2006数据采集
CPU2006 数据采集 构架设计
内容
框架设计
插桩◦ 热代码一般是热循环或者被频繁调用的函数◦ 基于上述事实,所以插桩方法如下:
对于跳转 / 分支指令,如果其目标地址小于该指令的地址( PC ),就有可能是一个循环,对其进行插桩
对于 Call 指令的目标地址所在的 Block 进行插桩不能处理 Callin 情况,因为目标地址未知(如:对于 C++ 中的
多态函数,就能不处理),另外对于 JMP/JMPIN 到一个函数的情况也不能进行处理
◦ 如果做 Trace 优化,则还需要统计每个 Block 的执行次数
插桩◦ 插桩指令
# 对 tb->times 进行加 1Lui a4, tb>>16Ori a4, tb & 0xFFFFLw a0, (a4)->timesAdd a0, a0, 1Sw a0, tb->times# 比较是否超过阈值Lw a1, THRESHOLDSub a0, a1Blez a0, NormalPath# 此时 tb 的地址放在 a4中Jr ra NormalPath: …..
热代码◦ 当 Block 执行到阈值 (Threshold) 时,会跳回本地码,将
此 TB 放入待优化队列
从待优化队列中取出 TB ,进行优化,并修改 TB的状态
优化线程
问题◦ 对热循环 / 热函数做优化,可能比较复杂,另外根据以前
做 Trace 优化的经验,效果好像不太好◦ 优化产生的本地码
如何管理本地码 由于该优化后的本地码是独立存放的,可能影响代码局部性
优化线程
Thank You!