(计算机科学与技术专业论文)基于编译的寄存器分配性能与功耗优化策略.pdf_第1页
(计算机科学与技术专业论文)基于编译的寄存器分配性能与功耗优化策略.pdf_第2页
(计算机科学与技术专业论文)基于编译的寄存器分配性能与功耗优化策略.pdf_第3页
(计算机科学与技术专业论文)基于编译的寄存器分配性能与功耗优化策略.pdf_第4页
(计算机科学与技术专业论文)基于编译的寄存器分配性能与功耗优化策略.pdf_第5页
已阅读5页,还剩72页未读 继续免费阅读

(计算机科学与技术专业论文)基于编译的寄存器分配性能与功耗优化策略.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

霸赡科学技术大学研究生院学能论文 摘要 邋年来,簸避器静魂耗不毽严重辫碍徽鲑璎器性麓韵罐嵩鞫处理器滚计酌发震,褥越 凝划了移动处瑷设冬的使用时闽。羁拜尊,涎罄诗磐援鲍凿及,计黪辊消糕蕊避戆瞧越来越 星大。圆姥,繇功耗研究已残强邋来受熨热耱关注黪赣城。大嚣j 在硬件鞠获静浚计孛魏不 嗣层次致力予在影赡性2 很小的前提下降低功耗。 从软 串方甏跨抵系绞麴功耗霹以缀;| 建嚣替莰从疆搏方瑟蹲低功凝麴不楚,婕瑁编译 嚣动态调煞硬件的执行可以很好地达到降低功耗的目的,例如编译指导的动态电压缝放 ( 势y n a 璐i ev o l t 8 9 8s e l i n g ) l 劫写妻g 孛关闭( t r n i n g ) f fu n h s e ds y s t e 疆u n i t ) 。g l b 孝, 现代体系结构一些原有的编译优化技术如寄存器分配优化簿,在优化性能时减少执彳亍的指 令效,从藤间接达到酶低功耗的弱豹。铡翔在i t a n i u m 中,对棱寄存器分配的貔化,w 以 减少r s e ( r e g i 8 t e rs t a c ke n g i n e ) 的溢出和填入操作,从而减少了处理器的等待时间,同 砖,降低了指令执行带来麴功耗。 从编译器的角度实现低功耗优化需要在性能改进、功耗降低和编译代价之间进行折 衷,采弼合理的方案实现低功耗伉纯韵萄的。 本文酋先溉述了现代编译器中的编译优化技术以及低功耗编译的方向,其体分析了筒 淘指令缀伉纯鹃编译器i 赫p a c t 霸豫i 淞r 躺,分桥了箕中的组成模块,并深入了熊萁辞j 的 寄存器分配视翻。然后,详细阐嘲了寄存器分糯策略的演化历程,通过分析和眈较基于图 着色法的备耱改遴方案,瓢实瑗最缆分配翡螽瘦,在e h o w 和h e n n e s s y 静寄存嚣分配方案 髂萋穑上褥盎一种藿予赢镄优先缀酌寄存器分配策硌,曼直接、受其体遗裰摇溢出活跃范 围段的优先级决定甥分。避过在l 鹾p 矗c 罩土翡实壤帮摸接,在帮分糕瘳上实凝了往煞戆 致进,在葵它程亭上栏鼹翁下簿,暴露了选择韬分范西雾法静复杂往,脊待改进。 本文最后摄述了i t 8 n i u 趣中敕栈寄存器和r s e 极铡,著详纲分季厅裁擞较现存鹣棱寄存 嚣分配糖弦方豢。本文提凌一秘蒸予趸迟分怒瓣棱寄存嚣分配蘸鼹,为了减少鞣辨霞价, 采用粗粒发的栈巾贞调整策略,巍调用点处使鼹a l l o c 攒令调整调用者的找帧大小,若为被 调用过程分配部分栈蛟,程调熙感廷扶调题者鄹被调鼹者通令霸浚尽鬃缀减蚤塞鹃棱犊, 从丽减少栈帧的溢也。在这种分配架构中,可以同时加入辅助性的寄存嚣分配优化机制, 为活跃莲鼹长斡数据尽爨分配小索弓l 号的拽毒存嚣,扶恧尽量彳辱到紧凑豹棱峻袈槐,以裂 于栈帧的调整。 美键词:低功耗,编译器,寄存器分配,阐着色法,寄存器栈l l 攀 豢痨科学技术大学错究生演学萤诠文 a b s t 鼬c t l 沁c e n t l y ,p o w 。rn o to n l yi 籼n i 招n 持w o f k i i 嘴t 主m eo fl a p t o p s ,b u ta i s ob l o c k st h e 矗眦h e r i m p m v o m e n t “p r o c e s s o r sp e r f o 珊a i l c e a i l dt h e d e s i g no fh i 曲一p e r f o n n a j l c ec o m p u t e r s 艇e 掰黜蠹i l e ,w i 镪氆ee o 联攀泌f sp o p 珏l 蕊z a 蛙o n ,饿e 封l 。r g y 斑a te o m 搿鞋e r se 黼s u m e 遮t o oh u g e t ob ei g n o r e d s o ,血cf i e l do fl o 、v p o w e ri sb e c o m i n gah o ts p o t ,a n dp e o p l eh a v ea d v a n c e dal o t 沁d i 糙蘸a s p e 髓sw i 也约l 8 b l e 幽哆。趣雌f o 懿勰e e + r e d u c i n ge n e r g yc o n s i l t l l p t i o no fc o m p u t e rs y s t e m st h r o u 曲s o r w a r eo p t i m i z a t i o l l sc a l l 、v e l lc o m p e n s a t e 也ea d d i t 至o n 越c o s to fa s s i s t a n th a f d w a r e 。c o m p i l e r - d i r e c t e dr e c o n 矗g u r a t 至o no f m eh a r d w a r es o u r c e so rm 芏l i n go f m ep 甜a m e t e r so f t h eh a r d w a r e sc a nr e d u c et h ew a s t e de n e r g y c o n s u m p t i o ne 麟c i e n t l 弘s u c ha sd y l l a m i cv o l t a g es c a l i n g ( d v s ) a n dt u m i r 蟮o f fu n u s e ds y s t o m 稻i t o 船) 懿d 滩+ m a 珏y 轻毽涮o n 鼓。必m i 黼粕璐筑媲a s 砖西s t e ra l b e a t i o no 砖睡z 蕊。站 a r ea b l et or e d u c et h ee n e 曜:yc o n s 眦p t i o ni n d i r c c t l yw h i l er e d u c i n gt h ee x e c u t e di i l s t r u c t i o n s fi 珏s 黼e e ,氇ei 越p v e e 臻曩l s 姆氇ec o 如g e 靛。艇。矗t e e 殛i 翳e s 岛r 氆ef e g i s e r 羹a c ke 鼹 r e d u c et h cr e g i s t e rs a v e sa n dr e s t o r e s ,矗l r t h e rr e d u c et h ee n e r g yc o t l s m p t i o na n dm ee x e c u t i o n d e l a y w h e ni 掰【p l o m e n 娃n g 也el o w p o w e rc o m p i l 旋o no 蛳m i z a 重i o n s ,i ti sn e c e s s a r yt o 是醚a d e s i t a b l et r a d e o f f 锄o n g 也ei b 砷r o v e m e n to fp r o c e s s o r sp e r f o r m a n c e ,也er e d u c t i o no fe n e r g y c o n s u m p t i o na n dm ee x t r ac o s to f m ec o m p i l a t i o no p t i m i z a t i o n f i r s t l y ,氆e 氇e s i ss 啪m a 矗z e s 彘e m p i i a t i o no 西m i z a t i o n si nm o d o mc o m p i i e ra n dm e d i r e c t i o no fl o 、枷p o w e rc o m p i l a t i o n ,t l e na n a l y s e 8t h em o d e mc o m p i l e rs u c ha s 工m p a c ta l l d 善廷l m a 嚣a n ,e s p e e i a l l y 漩括r e g i s 重e f 越l o c a 耋i 鼹s 溉t e 菩e s 拍e n ,t 沁e o w s 嚣o f 氇ed o v e l o 黔嘲 o fr e 西s t e ra l l o c a t i o ns 协x t e g yi si l l u m i n a t e d 试d e t a i l 矗r dad i r e c tp r i o r i t y i b 8 s e dr e 西s t e r a l l o c 醴i o na p p f o a c 量lv i 鑫攮ea n a 量y s i sa n dc o m p 箍娃s o 珏o fm 鞠yi 琳p v e 辍e n t s 勤氆eg 拄砖 c o i o r i n gs t r a t e g yi sp r o p o s e d ,i ts e l e c t st h es p l i t 王i v er a n g eb a s e do nt h ep r i o r i t i e so ft h es p i l l e d l i v er a n g e sn o tt l l ep r i o 妇t i e so f 毛1 1 et o t a lc a n d i d a t el i v ef a n g e s a l t h o u g hi ta c q u i r e ds o m e i m p r o v e m e n t so f p r o c e s s o r sp e r f o 珊a l l c e ,虹l ed 。d i n eo f r f b m a 黼ei ns o m e c t i o n se x p o s e s m es p l 讯i n ga l g o r i t h r n sc o m p l e x i t y 。s oi ts h o 、l l d b ei m p r o v e di n 扎眦e a tl e n g 氇,镛e 氇e s 强e x p o 麟d sl h e 羚瘿s t 。rs 妇呔a f 撼r c g i s t e rs 纽c ke n g i f 站纽l 组蜓砌箍n d a n a l y s e st 1 1 e e x i 8 t e di m p r o v e m e n t st os t a c kr e g i s t e ra l l o c a t i o ns t r a t e g yi nd e t a i lh e r ca 如l a y i 珏g 一蠢l o e 蘸雌。舜m i z i n gs 投a t e g yi s 辫p 潞繇,i t 囊o p sae o 毪r s e g f 薮黼da 番u s 妇嫩o f 氇e s t a c k 盘a m e a tt h ec a l l s i t ea 1 1 0 c 砒i o n s ,t h ec a l l e r ss t a c k 厅a m ei sr e d u c e da c c o r d i n gt ot h e 姐娥u s 鑫g ew h i l e 也ec a l l e eo 心yb e 啦l o c 溅e da l i 撒i t e ds 钯汰蠹a m o ,c o n s c 锋u e 娟y ,谯ep 哟e 嫩l 畦 s p i ni sr o d u c e dt 0m eb e s ta d v a n t a g e | ( e y 哟翻s :l o 鼢p o 谢e ,c o m p i l e r ,r l 鹊涎逢e fa l l o c 鑫t o n ;g 强p hc o o 瘴n g ,r e g 廷逢e rs t a e k e n g j n e ( r s e ) i i 禽陵秘举技术太学臻究生貌学位论文 爨l ,l 图1 2 图1 3 图2 1 图2 2 銎2 3 图2 + 4 图2 。5 图2 6 图2 7 图2 8 图3 1 耍3 2 图3 3 图3 。4 图3 5 图3 。6 图3 7 图3 。8 图3 9 图3 1 0 蚕3 。l l 图3 1 2 耍3 ,1 3 图3 1 4 匾3 。1 5 图4 1 图4 2 蚕4 3 图4 4 蚕。5 图4 6 图4 + 7 图4 8 图4 9 图目录 功耗与经熊於关系。,。,。s i t a n i u m 中的寄存器分配6 t r i m a r a n 中的寄存器分配流程。,。7 现代编译器的流稔。,9 一个标准编译器的高层结构1 1 滋法分橱。,。l l 语法分析1 2 谮义检鸯。1 2 代码优化1 3 代码生成。1 3 优化顺序1 5 i m p a c t 编译框架。,。2 0 p d e 至ll c o d e 豹转换浚疆。2 l l f u n c 数据结构2 2 l 曲数攒绪麴。2 2 l 一0 p e r 数据结构2 2 l e o d e 函数数据缝提。,。,。2 3 i m p a c t 模拟框架2 4 仿真器内部表示:p r o f i l e 数据结构。2 5 仿真器肉都表示:融s p r 肾数据结掏,。2 5 t r i a r a n 整体框架2 6 嚣l e o r 执行滚翟。2 8 后端优化函数2 8 n y u 毒存爨分配嚣中数s e a l a r r e g 矗l l o e 类。,。2 9 隧域寄存器分配器中r e 嬲l l o c s 0 1 v e r 类+ 2 9 t r i m a r a ng u i 。3 0 滔跃闽隔的扫猜顺序。3 1 寄存器分瓒己前的代码3 2 寄存器分酝嚣静鬟写霞璐。3 2 线性扫描寄存器分配算法3 3 h a i t i n 骞存爨努聚滚程。,。3 5 种菱形的干涉图3 6 髓i g g s 寄存器分酝流程。,。3 7 基于优先级分配策略生成的干涉豳,3 8 c h o w 和n n e s s y 寄存器分配流穰。3 9 戮防科学技术夫学靖究生院学霞论文 图4 ,1 0 蚕。l l 图4 1 2 蹬4 1 3 圈4 1 4 图4 。1 5 圈4 1 6 图4 1 7 整4 1 8 图4 1 9 凰4 2 0 图4 2 1 圈4 。2 2 图4 2 3 图4 2 4 鹜4 。2 s 图4 2 6 嚣4 2 7 图4 2 8 雯4 2 9 图5 + l 图5 2 图5 。3 图5 4 霭5 。5 图5 6 霪5 。7 传统的撼于函数的编译过程4 1 踪迹选撵算法。,4 2 尾复制算法4 3 德环裂离算法。4 4 i f 转换例程4 4 活跃范围粒度的变化。4 5 以基本浃为粒瘦豹干涉阐4 6 基于区域编译的干涉图4 6 羊r i l l l a r a n 中餮麓色过释。,。4 7 t r i m a r a n 寄存器分配流程4 8 基于频率懿活跃范嚣甥分算法。,4 8 基于频率的活跃范围切分部分代码5 0 判定是褥延迟绑定。5 l 为延迟绑定的宜通活跃范围着色,5 1 一个六结点的干涉图。5 2 溢密结赢8 之薅静干涉瀚,。5 2 溢出结点d 之后的干涉图5 3 蓬搓入矮环算法。,5 4 基于直接优先级的算法流程5 6 实验结果。,。5 7 i t a n i u m 中的寄存器栈帧5 9 棱寄存器分配。6 0 寄存器棱的溢出和填入,6 l 两种策略的比较+ 6 2 瀵矮点鲶调整援羧大小。6 2 不同路径的寄存器使用黛6 4 媳迟分配。,。,。s s 独创性声明 本人声明所呈交的学位论文是我本人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已 经发表和撰写过的研究成果,也不包含为获得函防科学技术大学或其它教育机构的学 位或话蔷瑟旋愿过懿麓辩。与我一霹王髂载嗣志对本磺究鼹镁的任嚣贾靛均已在论文 中作了明确的说明并农示谢意。 学位论文题目:基士翁逢的壹盎墨金醒性能复毯缒毽丝笨喳 学位论交作者签名趔疆翔:d , 年| 玉茂2 9 话 学位论文版权使用授权书 本人完全了解匿劳辩学技术大学鹰关像餐,使用学位论文蜘规定。本人授权国 防科学技术大学可以保留并向国家有关部门或机构送交论文的复印件和电子文档,允 许论文被查阅和借阅;可以将学位论文的全部或部分内容编入有关数据库进行检索, 可敬幕臻影窜、缩翠践羟攒等复裁手寝豫存、汇编学位论文。 ( 保密学位论文程超密詹运用本授权书。) 学位论文题目基王缠透曲壹叠攫金堑性缝盏麴拖丛焦篮喳 学位论文作者签名: 俸者撵导教舞签名: 日期1 2 一碍年 z 冠2 铷 譬翔:旷年涉曩讶嚣象 国防科学技术大学研究生院学位论文 第一章绪论 本章主要阐明课题的背景,然后简要地说明本课题的主要内容以及国内外的相关研 究,最后,给出本文的组织结构。 1 1 课题背景 本小节重点阐述为何功耗问题成为现阶段计算机研发的热点,以及它所带来的危害。 并简单陈述了低功耗设计的层次。 1 1 1 引发功耗问题 近年来随着移动处理、嵌入式应用的大量涌现,以及通用微处理器工艺水平和主频的 不断提升,功耗日益成为信息系统设计者必须关心的问题,功耗问题已成为处理器发展的 一个重要瓶颈。当前,人们不断地追求芯片和微处理器性能的持续提高,高性能,低成本 也成为各个芯片设计和生产厂家市场竞争最主要的手段。遵循著名的“摩尔定律”,集成 电路技术在过去短短的几十年里获得了惊人的发展。如今的集成电路设计技术已经进入深 亚微米和超深亚微米时代,s o c 技术的出现和研究也使得在一个芯片上集成一个系统成为 现实,芯片的面积越来越小,速度越来越快,人们利用一切可以利用的技术让芯片的性能 达到极致。随着v l s i 工艺的进步,器件的负载电容减小,处理器的工作电压降低,单个器 件完成相同的工作所消耗的能量应该减少。所以当采用新的工艺实现原有的体系结构时, 峰值功耗就会下降。但体系结构设计者往往利用v l s i 的进步实现更加复杂的功能,芯片集 成度的增加和时钟主频的提升给功耗带来了负面影响,实现新一代体系结构的处理器的峰 值功耗就会继续上升,十几年来微处理器的峰值功耗增长了几十倍。 随着芯片频率的加快,单位面积上集成晶体管数量的增加使得芯片单位面积上的功耗 也急剧地增加。依靠传统的方法,单纯通过电路级低功耗设计和芯片的封装散热技术已经 无法解决功耗密度增长带来的种种问题。由功耗引起的一系列问题比如能量的浪费,制造 成本的增加,芯片可靠性稳定性的降低等等使得今天的芯片设计面临巨大的挑战。 如今,功耗地位的提高表明它所带来的危机的显式化。除了人们所能够直接感受到的 一些问题,如电能的消耗、移动计算的限制等等,还有许多从设计者的角度所观察到的负 面影响。 功耗所带来的危害可以简略分为以下几个方面: 1 _ 电量的巨大消耗 在移动计算领域,功耗限制了电池的使用时间。随着因特网和无线网络的结合越来越 密切,移动计算发展迅速。电池是移动设备得以工作的能源,但是它的重量约占一台移动 设备总重量的2 0 一4 0 ,给移动计算带来了很大的不便。另外,电池的使用时间和寿命问 第l 页 国防科学技术大学研究生院学位论文 题也限制了移动计算的进一步推广发展。移动电子设备将面临难以满足需要的电池使用时 间和笨重的电池设备。为了应付这一情况,必须要降低微处理器的功耗。 而在桌面计算机领域,能量消耗问题非常严重。据统计,有1 0 的电能是桌面计算机 消耗的,这个数据并不包括打印机、不间断电源( u p s ) 等设备,而且仍在快速增加 1 。 在国内,随着电脑的普及及其周边设备的多样化发展,能耗势必成为人们关注并且必 须着手控制的问题。 2 增加微处理器的制造成本 功耗的增加直接影响微处理器和计算机系统的成本,该成本包括三个部分。第一是散 热成本,通常较高功耗会导致较高的工作温度,将处理器保持在特定的温度下工作需要额 外的散热装置和发热保护电路。风扇冷却不仅增加成本、制造噪音,而且快到达其能力的 极限,未来需要更复杂、成本更高的水冷、半导体散热甚至液氮散热装置才能保证处理器 的稳定工作。除了散热装置本身,系统( 机箱) 也要有良好的散热能力。第二是封装成本, 芯片在高温下封装集成的成本也相应增加。第三是电源分布成本,即芯片内、主机板上的 退耦电容、电源分布网络相关的连线与器件。 3 降低微处理器的可靠性 即使为了追求性能而不计代价,即使电池的使用时间、能源消耗、制造成本都不成问 题,功耗问题也是无法回避的,因为功耗对微处理器自身的可靠性带来了严峻的挑战。首 先,电流高速切换降低了处理器工作的可靠性。另外,功耗增加所引起的芯片升温将引发 一系列的故障机制,比如:硅片连线故障、封装故障、电学参数漂移、电迁移等。随着个 人电脑的普及和性能的不断提高,由于c p u 发热引起的系统死机甚至c 雕烧毁已经屡见不 鲜了。一般,温度每升高1 0 摄氏度,器件的故障率就要提高2 倍。就此点而言,对可靠性 要求严格的高性能微处理器进行低功耗设计显得尤为重要。 4 限制微处理器性能的提高 为了保证工作的可靠性,微处理器不得不以牺牲性能为代价来减少发热量。i n t e l 公 司曾在实验室中采用液氮冷却的方法,使3 0 0 m h z 的p e n t i u mi i 微处理器超频到8 0 0 z 。 可见,如果不是因为功耗的限制,在安全的前提下折衷,微处理器的性能还可以更高。 5 、影响高性能计算机的设计 当前的高性能计算机或超级计算机普遍使用高性能通用微处理器构建,微处理器的功 耗也给高性能计算机的设计产生了重要的影响。首先是能量消耗和维护成本问题,这是一 项沉重的负担。更为重要的是如何把数目众多、功耗巨大的微处理器在有限的空间内组装 起来,这对系统散热、高密度组装以及互连系统都提出了新的挑战。 1 1 2 低功耗设计的层次 处理器的体系结构设计和具体的硬件直接关系着整体功耗,这体现为整体功耗中的静 态功耗部分;同时,在处理器上运行的具体的程序则对应着动态功耗部分。微处理器的每 第2 页 国防科学技术大学研究生院学位论文 一个设计阶段和软件的每个处理阶段都可以看作一级抽象层,有各自不同的对象和属 性。但每一个抽象层的设计决策都会对最终微处理器运行程序时的功耗特性产生影响,因 此,理论上,在每个层次都可以进行低功耗设计。1 。 1 工艺级 缩小制造工艺并降低电源电压是降低功耗最直接有效的方法。根据c m 0 s 工艺按比例 缩小规则,在恒电场的情况下,功耗将以特征尺寸缩减因子的三次方缩小 3 ,4 ,这正是 微处理器产品在升级换代时提高性能降低功耗的基本原理。采用低介电常数的材料( 如低 k 介质和高k 薄栅氧) 、采用s o i 等工艺,也可以明显降低功耗。 2 电路级 电路级功耗优化研究各种低功耗的电路形式,如绝热( a d i a b a t i c 或c h a r g e r e c o v e r y ) 电路、多电源电压电路、可变阂值电压电路、低摆幅电路等,它们已在微处理器设计中采 用。动态逻辑和静态逻辑的功耗特性也不同。采用低功耗技术重新设计单元库是电路级低 功耗设计的重要工作,最有效的方法是对其中常用器件和大功率器件进行专门的设计,包 括逻辑电路、互连传输电路和存储器电路等。 3 门级 门级低功耗设计主要是以电路单元为组件进行逻辑链路设计的综合优化,有效减少逻 辑链路的驱动单元数目和节点的寄生电容,以减少驱动电流。门控时钟技术关闭当前不工 作的锁存器或触发器的时钟树分支,从而有效地降低功耗,其应用非常广泛。门控电源 ( g a t e d v d d ) 可以使电路进入睡眠状态,最大限度地减少静态功耗。 4 寄存器传输级 逻辑设计通常是由用户进行寄存器传输级( r e g i s t e rt r a n s f e rl e v e l ,简称r t l ) 描 述,再由e d a 工具完成综合与映射。虽然逻辑综合时的功耗优化工作主要由e d a 工具完成, 但用户在r t l 设计时也可以考虑功耗优化,比如利用多电压机制对r t l 数据路径进行划分。 5 微体系结构级 并行和流水线技术可以在不损失性能的前提下降低功耗。对于各种微体系结构部件, 比如c a c h e 、寄存器堆、分支预测部件、指令队列、执行单元等,分析它们的功耗特性, 进行降低功耗的优化设计可以减少处理器的功耗。 6 指令级 微处理器的指令集体系结构定义了微处理器的功能,也确定了硬件和软件的划分。指 令级功耗优化试图找到一个软件和硬件之间任务的最优划分和分配,这些工作主要集中在 嵌入式系统中。有的处理器体系结构支持精良的低功耗指令集,目的是方便指令级功耗优 化。在高性能通用微处理器领域,随着编译器技术和微代码技术的最新进展,指令系统本 身对处理器速度和功耗的影响正在减小。对通用程序而言,兼容性是至关重要的,因此高 性能微处理器并没有为了减少能量而改变指令系统。 然而为了开发指令级并行性,编译器或处理器硬件往往前瞻性地调度指令,使得部分 第3 页 国防科学技术大学研究生院学位论文 指令在没有确定是否需要执行之前就已经执行了。这些无效指令的执行造成了能量浪费, 应该在性能允许的条件下减少无效指令的功耗。 7 编译级 编译器对功耗的作用是双重的。有的指令调度技术目的是减少流水线停顿,这些停顿 既浪费能量,又浪费时间。另外,按照适当的顺序调度指令后,在某种程度上可以减少处 理器中控制路径和数据路径的信号翻转。因此,可以根据性能优化效果来确定功耗优化能 力。但是有的编译技术通过尾复制、判定、前瞻等方法大大增加了代码的体积,有可能加 重处理器的负担。 寄存器分配也是编译器的任务,这是本文的重点,将在后面章节中着重描述。 8 操作系统级 操作系统级的功耗优化主要基于任务或进程级。操作系统预测应用程序要求的性能级 别,如果知道完成计算的期限,就没有必要让处理器全速工作。通过降低c p u 的频率和电 压就可以节约功耗,这正是操作系统级功耗优化的基本思路。 9 应用软件级 应用软件级功耗优化的方法是减少某个特定算法的复杂性。如果算法复杂性减少m 倍, 那么完成这项任务的能量也近似减少m 倍,而且执行时间也相应减少m 倍。从这个角度讲, 功耗优化问题与性能优化问题相同。但是,算法优化通常与特定的问题是密切相关的,很 难具有普遍性。并且算法的复杂性有一个下限,这是无法超越的。 总之,降低功耗可以在以上概括的层次中实施。在致力于降低功耗的同时,必须要考 虑降低功耗的代价,因此,必须在手段的效果和代价之间进行权衡,从而得到理想的结果。 针对使用辅助硬件降低功耗的方法,必须考虑辅助硬件自身的功耗以及它对整体复杂度和 性能的影响;同样,针对偏重于使用编译器的降低功耗的方法,需考虑编译时间的大小以 及编译的复杂度等问题。 本文的重点就是从编译的角度实施低功耗优化。 在系统对应用程序的优化处理上,硬件和操作系统技术往往是利用过去程序行为的一 个窗口来预测将来的程序行为,仅能够在小窗口范围内和低级的程序抽象级别上进行可能 的代码重构。而在编译时对功率和能量的优化技术是对硬件和操作系统技术的有效补充, 编译器具有能够分析整个应用程序行为的能力,它可以对应用程序的整体结构按照给定的 优化目标进行重新构造。在每一个应用的执行过程中,对每一个功能部件的负载都是不均 衡的,程序和数据的局部性也是可变的。因此,利用编译器对应用程序进行降低能量消耗 的优化和程序变换对降低系统能量消耗有重要的作用。 使用编译器实现低功耗优化需要注意的是,传统编译器的调度优化目标是性能,即使 得程序的执行时间最短,而对于低功耗调度而言,它的调度优化是多目标的,通常是性能 和功耗一起考虑,即在满足一定的性能约束的情况下使得程序运行的功耗最小。大多数情 况下,性能和功耗并不是矛盾的,减少程序执行时间,同样会起到减少程序功耗的目的。 第4 页 国跨鞋学技术大学骚究生笺学位论文 但是,如图1 1 所示,柯时候对于功耗的优化会导致性能的降低( 能量方程、执行时间方 疆与¥骞曩豹三焦区域) ,有时镁对于牲黥的往健会导致功耗的增艇( 鼹爨方程、撬牙雾孪海 方程与x 轴的三角区域) 嘲。 2 图i ,i 功耗与经篷静关系 l 。2 课题未要内容 当前的存储器性能问题严重限制着现代体系结构的实现和发展。尽管e a c h e 已有了长 足匏进步,存储器延遮仍支配餐现代楚淫器孛许多应焉软件静往能。采焉了i a 6 4 俸系络褐 的i t a n i u m 使用了包含大量寄存器的寄存器栈,从而减少出程序调用引起的存储器访问所 繁来静瞧麓损失,霹露充分建发挥大寄存嚣文棒戆注裁优势。姿程廖调用时,後震a i l o c 指令为被调用程序分配新的寄存器栈帧,而调用程序的输出区则成为被调用程序的输入 区,这孝孛稳邻棱犊的重爨实溪了调薅者鞠筏调潮者之麓参数戆技递。搦露l 。2 掰示。 第5 蕊 雪防疆攀挂零大学醣究生陵学位论文 i 娃l o e a lo u t 卜一 - f 斗 舀2玛3砖4撼5好6妈7r 3 8f o o ( ) 好2f 3 3妈4 r 3 5 心6 1r1r r 3 2r 3 3f 3 4为5f 3 6西7 r 3 8 r 3 9 r 4 0r 4 l 物理寄存器 图1 2 i t a n i u m 中的寄存器分配 在i t a n i u m 审,使翔r s e ( 寄存器栈弓l 擎) 程君台蓝视所有的栈寄存嚣分配释放操作 请求,并使用重命名技术,使程序执行时似乎肖无限的物理寄存器可用。当一个过程调用 发生上澈( a l l o c 分配寄存器毽怒无效寄存器不够用) 辩,该引辇控制将部分寄存器溢出 到后备的存储器上,直到满足寄存器需求为止:当发生下溢( r o t u r n 引发恢复保存在存储 器中静棱蔽) 辩,恢复粥些被滋密静寄存器黼。怒e 挟 亍这些搡 乍时,只是篱莘豹暂簿该指 令在流水线中的流动,而不是排空流水线。然而为了更有效地使用寄存器栈,还需要对现 商弱筏餐存器分凝瓿毒l 遴一多蘸往纯。 毫无疑问,寄存器栈的溢出( s p i l l i n g ) 和填入( f i l l i n g ) 会影响处理器的性能, 添l 篼必矮针对它瓣毒存嚣分配方寨实憋一些有效戆改邀,尽量减乡r s 黪滋窭霸壤入数, 从而在优化性能的同时减少r s e 的功耗。 基予l 矗6 4 谤系结搀戆i t 8 n i u 臻镬月瓣棱毒存器分配摸式在缀多方嚣不霹予话绞薅系绫 构中对寄存器堆的分配模式。 在越标量或v l l w 钵系结梅孛,通常馊用匿慧色寄存器分配方案。匿凑色法的基本恩怨 是,建立一张表示分配过程中的各种限制的干涉图( i n t e r f e r e n c eg r a p h ) ,并对它着色, 把许多表露上务器款缨节纳入统一的模式。图中的维点代表生命期活跃范围 + i d 2 + i d 3i mt or e a l 一一 6 0 图2 ,5 语义检查 4 代码优化,它的主要任务就是重新组织程序的中间代码使得目标代码更加有效 第1 2 页 国防科学技术大学研究生院学位论文 其中包括控制流和数据流分析,以及常量传播、消除公共子表达式以及移动循环不 变量表达式等。如图2 6 所示。 t e m p1 = i n t _ t o r e a l ( 6 0 ) t e m p 2 = i d 3 + t e m p l t e m p 3 = i d 2 + t e m p 2 代码优化 t e m p l = i d 3 术6 0 0 i d l = i d 2 + t e l p l 图2 6 代码优化 5 代码生成,将中间代码转换成可重定位目标模块或可直接运行的目标代码形式的 等价机器代码。其中,重点解决以下几个问题:存储器分配,寄存器分配,以及选择 有效的寄存器使用策略等等。如图2 7 所示。 t e n l p l = i d 3 + 6 0 o 代码生成 l d s f l d l d c r 8 m u 上 s t l o c l d s f l d l d l o c a d d s t s f l d i d 3 6 0 t e m d i d 2 t e m d i d l 图2 7 代码生成 在整个流程结束之后,得到汇编代码。汇编代码需要交给汇编器做进一步的处理。有 第1 3 页 国防科学技术大学研究生院学位论文 些编译器能够完成汇编器的工作,产生可重定位的机器代码,交给装配器( 1 0 a d e r ) 或者 连接编辑器( 1 i n k e r e d i t o r ) 处理。 2 2 现代编译器中代码优化的先进技术 在现代编译器中,为了建立高效的目标语言程序,需要对代码进行相应的优化。在代 码变换过程中,首先必须保持程序的含义,即对于给定的输入,优化不能改变程序产生的 输出,也不能引起在源程序的原版本中不会出现的错误,如除数为零等;其次,按平均数 计算,变换必须将程序的速度加快一个可测量的值,需要考虑目标代码空间;最后,各种 优化措施都具有各自的针对性,有些变换,只有在对源程序进行详尽的、往往是费时的分 析后才能使用,因此很少把它们用于只运行几次的程序。只有当程序的执行要占用相当可 观的机器时间时,为改进代码质量而消耗在运行优化编译器上的时间才是值得的。 从优化的范围考虑,只考查一个基本块中的语句就可以完成的变换叫做局部变换,否 则叫做全局变换。许多变换既可以在局部级也可以在全局级完成。通常首先执行局部变换。 如图2 8 所示,详细列出了在激进的编译器中各种优化的一个比较合理的执行顺序。 字符a 旁的优化通常施加于源代码,或施加于基本按其源代码形式保留了循环结构和顺序、 数组访问的高级中间代码,通常在编译过程的前期进行。b c 旁的优化措施通常施加于中级 或低级中间代码,具体取决于所采用的是混合模式还是低级模式。d 旁的优化几乎总是施 加于低级形式的代码。e 旁优化在连接时进行,所以它们施加于可重定位的目标代码“。 现代并行体系结构的编译优化技术研究的关键技术包括:程序分析技术开发程序 并行性;芯片上的指令级并行和多线程并行编译技术;共享存储多处理器上,发掘循环级 和任务级并行的编译技术;分布式存储并行机上,解决代码和数据的分割,通讯优化和代 码生成问题;在复杂的多级存储体系结构中,为了得到高性能,局部性优化和预取技术必 须与并行化技术结合考虑。 简要概述程序分析和开发指令级并行这两种关键技术如下: l _ 程序分析技术:自动的并行化检测需要通过有效的程序分析和优化去标识程序中 可以并行执行的独立任务。依赖分析是自动并行化的基础。编译器按照分析结果去标识可 以并行执行的代码段。这需要花费很大的精力去做复杂、精确的依赖测试。编译器使用的 依赖测试必须是保守的,也就是说如果测试不能证明没有依赖,它就要认为存在依赖。当 然现在也存在一些具有针对性的前瞻,当错误几率和判断错误代价很小时,可以冒险地判 断依赖关系,最后加入检查机制。 程序分析的局限性来自编译时的未知信息,目前的依赖测试不能处理循环界或下标是 符号或非线性表达式。对于符号或非线性表达式,通常假设有依赖。在某些情形下,符号 程序分析技术可以帮助克服这些问题,并且可以对一大类应用实施有效的并行化。但是符 号分析还有很大局限性,因为有些必要的信息在编译时不能获得或推断。为了实现并行性 第1 4 页 国防科学技术大学研究生院学位论文 图2 8 优化顺序 第1 5 页 国防科学技术大学研究生院学位论文 的更完全自动检测,需要使用动态分析技术在运行时做依赖分析以及并行化。 2 指令级并行( i l p ) :开发程序的指令级并行度,需要在考察指令时能覆盖成百上 千条指令的大窗口。在提取并行性和指令窗口大小之间的关系是平方关系。即,为了将指 令级并行度加倍,指令窗口的大小必须扩大4 倍。编译器可以构造一个大的指令窗口,沿 着程序路径考察指令。此路径可以扩展,能穿过无环代码的分支和穿过循环迭代。编译器 重排指令序,将无依赖的指令紧放在一起,生成并行代码。在超长指令字( v l l w ) 机器静 态调度的代码中,代码重排序使得无依赖的运算显式地调度为并行执行,由编译器将它们 放到同一个长指令中。对于超标量处理器,实际调度是由硬件动态决定的。但是由编译器 实行代码重排序,可以在一个大的指令窗口上进行,它可以比在超标量处理器的小硬件窗 口中得到更高的并行性。 编译器调度的代表性方法有以下几种: 2 1 无环调度 为了得到较大的指令级并行度,编译器使用的指令窗口必须要跨越分支。无环调度使 用的指令窗口是在一个无环代码段中跨越分支。相继开发了全局调度算法,来处理在一个 程序中的无环代码段调度任务。熟知的一些全局调度技术包括踪迹( t r a c e ) 调度、渗透 ( p e r c 0 1 a t i o n ) 调度、区域( r e g i o n ) 调度、超块( s u p e r b l o c k ) 调度和关键路径规约。 这些技术以它们使用的指令窗口的作用域为特征。无论采用哪种指令窗口以及结合的代码 重排序变换的性质,这些技术都可以实行穿越分支的代码移动,包括投机代码移动。 2 2 踪迹调度 这种全局指令调度技术的指令窗口是限于一个踪迹。踪迹是程序控制流图中的连续基 本块序列,一个踪迹不可穿过循环边界。先构造踪迹的数据依赖图,然后调度器根据图产 生指令调度。在调度过程中,指令可能穿过控制流图中的汇合点和分裂点被传播。此技术 的关键是,构造较频繁执行的路径,优先调度它们。 2 3 谓词 一个可以增加代码重排序的机制是谓词执行。例如,i a 一6 4 体系结构支持谓词执行。 此中一条指令是依赖于它的谓词输入值按条件执行。无环代码段的控制流图是带有分支 的,这些分支可以通过给指令加谓词来消除。 2 4 与寄存器分配的交互 指令调度与寄存器分配的交互对于v l i w 和超标量体系结构是一个重要的问题,它对 指令级并行度有重要影响。寄存器分配和指令调度的目标是有矛盾的。为了使得功能部件 忙,指令调度要发掘i l p 需要将大量的运算结果放在寄存器中。而寄存器分配要使得寄存 器需求尽量降低,以使得需要产生的溢出代码最小化。现已经存在了一些研究方法,将指 令调度和寄存器分配集成在一起,这些方法的差别在于,检测过量的资源需求和减少资源 需求的策略技术的复杂性。 超量方法( o n - t h e f l y ) :这个方法是在指令调度期间在扩展的基本块内部实施局部寄 第1 6 页 国防科学技术大学研究生院学位论文 存器分配。它使用寄存器零簧静蘧豢溅度采裣测超黧寄存器需求。并行干渗图方法经焉一 种寄存器干涉图的扩展形式来检测越量寄存器需求和指导调度敏感的寄存器分配,通过活 跃嚣域溢窭泉这到毒存器露求懿裁减。 2 5 软流水 软浚承怒在不霆撵嚣迭饯阗镬运算劳行执行鹣教术,这榉发掇瓣i 冲穿越了覆环迭我 的边界。软流水的网标是产生一个调度,它最小化遮代启动削隔。当软流水算法从循环中 调度送算时,必须诗箕指令豹延薅翻资源戆铡翅。一毅较波承技零缀设渡求豹镖臻抟不包 含分支,采用基于模调度的算法。寻找软流水最优辩法是一个整数线性规划问题。嫩然整 数线性规划润题是一个n p 完全闯越,但是存在诲多解决这转翘题的撅准穰净包,融憩可 以用来计算激优调度。 2 。6 颈取和投机取数 存和取的存储运算顺序性大大限制了从程序中提取的i l p ,所以必须使用有效的存储 预取技术。当存和取运算无依赖对,可以较晕地执行取运算,以得到较少的存储延迟。i a 6 4 体系结构使用一个繁于软硬件结合的新解决方法。撮令集掇供一对耨指令,投机取数指令 和取数验证指令。如果编译器将

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论