Compiler Optimization on VLIW Instruction Scheduling for Low Power
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相关推荐
- LLVM 编译器学习笔记之三十六-- 指令调度Instruction scheduling
1.参考Instruction scheduling in LLVM - 知乎,在中.后端均存在指令调度 GenericScheduler:: 做寄存器压力感知的指令调度 PostGenericSch ...
- [论文研读]Compiler Optimization of Accelerator Data Transfers
文章目录 Introduction (一个愉快的小例子) Motivating Example (一个专业一点的例子) Data Transfer Analysis and Scheduling 3. ...
- 论文详解:The Correctness-Security Gap in Compiler Optimization
论文原文链接:The Correctness-Security Gap in Compiler Optimization 论文详解:The Correctness-Security Gap in Co ...
- Low Power Design in SoC Using Arm IP
Low Power Design in SoC Using Arm IP Documentation – Arm Developer Documentation – Arm Developer By ...
- signature=0e42fe6b348b65f88748ba8ecefece12,Low power BIST
摘要: In the last years designers have mainly concentrated on low power consumption in mobile computin ...
- Low Power概念介绍<Level Shifter>
今天我们要介绍的Low Power概念是Level Shifter(电平转换单元).该单元主要用于多电源多电压(MSMV)技术中,它通常不具备逻辑功能,只是用于不同电压值的Voltage Area之间 ...
- DSP芯片倍频太大导致low power mode,无法连接JTAG
在调试DSP28377s芯片时,倍频太大超过400MHz,导致low power mode,无法连接JTAG,重启板子也没用. 解决办法:给板子上电,用短线将X1引脚与板子的地相连,即可解除low p ...
- 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 ...
- Low Power之CPF/UPF
1 CPF The Common Power Format is a standard promoted by the Low Power Coalition at Si2. CPF is also ...
- Low Power概念介绍SRPG Cell
今天我们要介绍的Low Power概念是SRPG Cell,全称State Retention Power Gating Cell(状态保持电源门控单元).这是一种特殊的寄存器,对于一般的寄存器来说, ...
最新文章
- js 为false的几种情况
- 让你直呼哇塞的API管理神器!
- LeetCode Algorithm 129. 求根节点到叶节点数字之和
- CNN结构:SPP-Net为CNNs添加空间尺度卷积-神经元层
- Angular 依赖注入里factory函数的调用时机
- python gis 实例_用Python作GIS之五:从示例入手—example函数
- sqli-lab——Writeup21~38(各种过滤绕过WAF和)
- java 改为matlab_用面向对象的方法将一段JAVA代码转化为matlab
- jQuery学习笔记--JqGrid相关操作 方法列表(上)
- android 播放器 直播,通过android中的mediaplayer直播
- c++ 基本知识汇总
- 【统计学】数据描述方法(均值、中位数、众数、标准差、离差、四分位数)
- 查找bug的方法(随笔)
- HDU4489 动归解决
- Excel VBA:设置行高与列宽
- 研究心得:调研文献“快而全“的三步
- 移远串口调试软件QCOM下载
- 秀!学妹看见都惊呆的 Python 小项目!【界面应用项目及游戏开发】
- 广东公立二本计算机专业比较好,广东2a大学计算机专业比较好排名
- 软件测试梳理 第九节 缺陷和缺陷报告
热门文章
- 计算机远程控制阀门开启,阀门远程控制系统
- pikachu靶场打靶分析
- 应用程序正常初始化(0xc0000160)失败
- python计算均线斜率_一根20日均线闯天下——量化回测“压箱底指标”,值得读十遍!...
- 4、混合、股票型基金
- Win10/win11系统如何禁用笔记本自带键盘、笔记本键盘禁用后无法恢复解决办法【靠谱】
- 北四环的杰西·利弗莫尔:一个中国投机客的传说
- linux 搜狗输入法隐藏状态栏
- 计算机桌面上的声音图标没了怎么办,右下角小喇叭不见了-电脑桌面右下角有一个调整声音的小喇叭图标没有了,怎么能调出来,电? 爱问知识人...
- bin to npy