Compiler Optimization on VLIW Instruction Scheduling for Low Power

ChingRen Lee, Jenq Kuen Lee, TingTing Hwang

National Tsing-Hua University, Taiwan

ACM Transactions on Design Automation of Electronic Systems, 2003

CSDN图片审核,我把博文上传到资源里,需要的朋友可以在这里下载。

多DSP核心(VLIW架构)的嵌入式系统,往往要求高性能与低功耗。本文侧重后者,基于VLIW架构做指令总线上指令调度的优化,编译器的改造工作。

以上公式表明,编译器优化,要么减小T,要么减小D,本文关注后者。

先来一张架构图,看看总线模型:

图1. 一个VLIW机器架构和总线模型

ü  建模

采用Hamming码作为代价函数:   

其中X,Y是连续的两条k-way发射的VLIW指令,Xi、Yi分别为X、Y的指令分量,H(X, Y)表示两指令间的汉明码距离,即两指令有几位不一样的。

图2. 汉明码示意

ü  指令调度策略

分两个阶段,一阶段采用list scheduling做性能优化,而后我们reschedule这份指令以降低功耗。可做水平调度和垂直调度,水平调度指一条指令里的各“微指令”间水平方向上的交换,垂直调度指上下连续若干条指令里的各“微指令”间垂直方向上的交换。

a)         水平调度

给出一种贪心机制(greedy bipartite-matching scheme),并证明在给定的VLIW指令调度策略基础上该机制总是最优的,给出最优的指令总线切换活动。

图3. 水平调度的bipartite-matching示意图

建立bipartite matching图,赋边权"-Hamming"。这里求最优方案最大值,故取各汉明码的相反数。很简单的贪心算法,每次贪最大的(也即Hamming最小的,指令间区别最小的)则最后全局最大,形成最优方案。理论证明很简单,反证,如果能找到更优的,那么我们的当前阶段一定某个阶段非最优的,与每阶段最优矛盾。

伪码如下:

图4. 水平调度伪码

b)         指令调度策略之垂直调度

证明这是一个NP难问题,继而给出一个启发式算法。

输入还有DDG的critical path,关键路径上的节点往往很高贵需要特殊待遇(这里指关键路径上的节点只允许做水平调度,垂直方向不可以)。

图5. 垂直调度伪码与图解

ü  如何做实验

实验环境:Alpha-based VLIW arch,  a compiler based on SUIF + machSUIF + our scheme,  an ATOM simulator on the DEC Alpha UNIX v4.0(插入代价模型即汉明距离)

图6. 将代码注入编译器(in phase 3)

ü  实验结果

与常规的list scheduling相比,水平调度:4-way issue arch平均提高了13.30%,对于8-way issue arch,平均提高了20.15%。水平调度+垂直调度:window size = 4时平均提高了7.66%,window size = 8时,平均提高了10.55%.

Compiler Optimization on VLIW Instruction Scheduling for Low Power相关推荐

  1. LLVM 编译器学习笔记之三十六-- 指令调度Instruction scheduling

    1.参考Instruction scheduling in LLVM - 知乎,在中.后端均存在指令调度 GenericScheduler:: 做寄存器压力感知的指令调度 PostGenericSch ...

  2. [论文研读]Compiler Optimization of Accelerator Data Transfers

    文章目录 Introduction (一个愉快的小例子) Motivating Example (一个专业一点的例子) Data Transfer Analysis and Scheduling 3. ...

  3. 论文详解:The Correctness-Security Gap in Compiler Optimization

    论文原文链接:The Correctness-Security Gap in Compiler Optimization 论文详解:The Correctness-Security Gap in Co ...

  4. Low Power Design in SoC Using Arm IP

    Low Power Design in SoC Using Arm IP Documentation – Arm Developer Documentation – Arm Developer By ...

  5. signature=0e42fe6b348b65f88748ba8ecefece12,Low power BIST

    摘要: In the last years designers have mainly concentrated on low power consumption in mobile computin ...

  6. Low Power概念介绍<Level Shifter>

    今天我们要介绍的Low Power概念是Level Shifter(电平转换单元).该单元主要用于多电源多电压(MSMV)技术中,它通常不具备逻辑功能,只是用于不同电压值的Voltage Area之间 ...

  7. DSP芯片倍频太大导致low power mode,无法连接JTAG

    在调试DSP28377s芯片时,倍频太大超过400MHz,导致low power mode,无法连接JTAG,重启板子也没用. 解决办法:给板子上电,用短线将X1引脚与板子的地相连,即可解除low p ...

  8. FS61C低电压检测IC芯片 series Low Power Voltage Detector

    FS61C低电压检测IC芯片常规CMOS输出检测电压有1V 1.2V 1.5V 1.8V 2V 2.1V 2.2V 2.4V 2.5V 2.7V 2.8V 3V 3.3V 3.5V 3.6V 4V 5 ...

  9. Low Power之CPF/UPF

    1 CPF The Common Power Format is a standard promoted by the Low Power Coalition at Si2. CPF is also ...

  10. Low Power概念介绍SRPG Cell

    今天我们要介绍的Low Power概念是SRPG Cell,全称State Retention Power Gating Cell(状态保持电源门控单元).这是一种特殊的寄存器,对于一般的寄存器来说, ...

最新文章

  1. js 为false的几种情况
  2. 让你直呼哇塞的API管理神器!
  3. LeetCode Algorithm 129. 求根节点到叶节点数字之和
  4. CNN结构:SPP-Net为CNNs添加空间尺度卷积-神经元层
  5. Angular 依赖注入里factory函数的调用时机
  6. python gis 实例_用Python作GIS之五:从示例入手—example函数
  7. sqli-lab——Writeup21~38(各种过滤绕过WAF和)
  8. java 改为matlab_用面向对象的方法将一段JAVA代码转化为matlab
  9. jQuery学习笔记--JqGrid相关操作 方法列表(上)
  10. android 播放器 直播,通过android中的mediaplayer直播
  11. c++ 基本知识汇总
  12. 【统计学】数据描述方法(均值、中位数、众数、标准差、离差、四分位数)
  13. 查找bug的方法(随笔)
  14. HDU4489 动归解决
  15. Excel VBA:设置行高与列宽
  16. 研究心得:调研文献“快而全“的三步
  17. 移远串口调试软件QCOM下载
  18. 秀!学妹看见都惊呆的 Python 小项目!【界面应用项目及游戏开发】
  19. 广东公立二本计算机专业比较好,广东2a大学计算机专业比较好排名
  20. 软件测试梳理 第九节 缺陷和缺陷报告

热门文章

  1. 计算机远程控制阀门开启,阀门远程控制系统
  2. pikachu靶场打靶分析
  3. 应用程序正常初始化(0xc0000160)失败
  4. python计算均线斜率_一根20日均线闯天下——量化回测“压箱底指标”,值得读十遍!...
  5. 4、混合、股票型基金
  6. Win10/win11系统如何禁用笔记本自带键盘、笔记本键盘禁用后无法恢复解决办法【靠谱】
  7. 北四环的杰西·利弗莫尔:一个中国投机客的传说
  8. linux 搜狗输入法隐藏状态栏
  9. 计算机桌面上的声音图标没了怎么办,右下角小喇叭不见了-电脑桌面右下角有一个调整声音的小喇叭图标没有了,怎么能调出来,电? 爱问知识人...
  10. bin to npy