框架设计

14
框框框框 龚龚

description

框架设计. 龚军. 内容. CPU2006 数据采集 构架设计. 内容. CPU2006 数据采集 构架设计. CPU2006 数据采集. 测试 CPU2006 Train 测试集 动静结合 加 EBO 选项的运行时间 不加 EBO 选项的运行时间 目的 找到受到 EBO 选项影响最大的 CPU2006 中的例子,这样便于有针对性地选取优化方法. CPU2006 数据采集. 测试结果. CPU2006 数据采集. 问题 加 EBO 选项和不加 EBO 选项的时间差别不是很大( 470.lbm 的效果好像还不错) - PowerPoint PPT Presentation

Transcript of 框架设计

Page 1: 框架设计

框架设计龚军

Page 2: 框架设计

CPU2006 数据采集 构架设计

内容

Page 3: 框架设计

CPU2006 数据采集 构架设计

内容

Page 4: 框架设计

测试 CPU2006 Train 测试集◦ 动静结合

加 EBO 选项的运行时间 不加 EBO 选项的运行时间

◦ 目的 找到受到 EBO 选项影响最大的 CPU2006 中的例子,这样便

于有针对性地选取优化方法

CPU2006数据采集

Page 5: 框架设计

测试结果

CPU2006数据采集

0

1000

2000

3000

4000

5000

6000

7000

8000

9000

动静结合运行时间 ( 不加 EBO 选项 )

动静结合运行时间 ( 加 EBO 选项 )

Page 6: 框架设计

问题◦ 加 EBO 选项和不加 EBO 选项的时间差别不是很大

( 470.lbm 的效果好像还不错)◦ 有的例子 Train 的时间太短,可能需要用 Ref 测(不过测

Ref 时间应该很长,不利于做重复运行进行分析 )◦ 现有的最新的 Qemu-n32 版本,有几个例子会出错

CPU2006数据采集

Page 7: 框架设计

CPU2006 数据采集 构架设计

内容

Page 8: 框架设计

框架设计

Page 9: 框架设计

插桩◦ 热代码一般是热循环或者被频繁调用的函数◦ 基于上述事实,所以插桩方法如下:

对于跳转 / 分支指令,如果其目标地址小于该指令的地址( PC ),就有可能是一个循环,对其进行插桩

对于 Call 指令的目标地址所在的 Block 进行插桩不能处理 Callin 情况,因为目标地址未知(如:对于 C++ 中的

多态函数,就能不处理),另外对于 JMP/JMPIN 到一个函数的情况也不能进行处理

◦ 如果做 Trace 优化,则还需要统计每个 Block 的执行次数

Page 10: 框架设计

插桩◦ 插桩指令

# 对 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: …..

Page 11: 框架设计

热代码◦ 当 Block 执行到阈值 (Threshold) 时,会跳回本地码,将

此 TB 放入待优化队列

Page 12: 框架设计

从待优化队列中取出 TB ,进行优化,并修改 TB的状态

优化线程

Page 13: 框架设计

问题◦ 对热循环 / 热函数做优化,可能比较复杂,另外根据以前

做 Trace 优化的经验,效果好像不太好◦ 优化产生的本地码

如何管理本地码 由于该优化后的本地码是独立存放的,可能影响代码局部性

优化线程

Page 14: 框架设计

Thank You!