- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图染色法的寄存器分配 - 北京大学教务部欢迎您
图染色法的寄存器分配 - 北京大学教务部欢迎您
自己收藏的
觉得很有用
故上传到百度
与大家一起分享!
图染色法的寄存器分配
计算机科学与技术系98级 吴汉唐
摘要
本文讲述了寄存器分配的图染色法理论
Chaitin 和他的同伴
在IBM 的Yorktown Heights研究中心
实现了第一个基于图染色法的全局的寄存器分配器
后来
Rice 大学的Preston Briggs对Chaitin的算法进行了改进和扩展
Chaitin的算法悲观地假设任何高度数的结点都不能被染色
只能被抛出(spilled)
Briggs的算法乐观地认为高度数的结点有可能被染色
从而获得更低的抛出开销(spill costs)
和更快的代码
一 介绍
(一) 编译器和优化
一个优化编译器分为三个层次:
* 前端把源语言转换为中间代码
这个转换依赖于源语言的结构
需要几遍扫描(pass)代码才能完成
编译时的错误检查就在这一层
我们可以理想地认为前端是只与语言有关的、与机器无关的
* 优化器包含几遍的扫描(pass)
每一遍扫描对中间代码执行特定的转换
我们感兴趣的是全局优化
就是从整个函数搜集有用信息
再去做优化
一般的全局优化包括强度削减(strength reduction)
循环不变量移动(loop-invariant code motion)和公共子表达式消除(common subexpression elimination)
优化器最好是与语言和机器都无关的
* 后端把中间代码转换为针对特定机器的目标代码
这个转换过程又称为代码生成
也需要几遍扫描才能完成
这几遍扫描包括指令选择(instruction selection),指令调度(instruction scheduling),寄存器分配(register allocation)
后端在很大程度上是与语言无关的
与机器有关的
这个划分简化了每一个层次的开发和维护
使得在不同的编译器中复用每个层次成为可能
例如
一个完全与机器无关的FORTRAN语言前端可以用到为不同机器设计的编译器中
当然
这还是一个理想的观点
在实际中
每个层次都表现出既与语言相关又与机器相关
这些相关限制复用和维护
也成为编译器设计人员努力要克服的难关
(二)优化和寄存器分配
寄存器是位于CPU内部的少量的高速存储器
寄存器与内存有很大的不同:
* 寄存器很少
一个寄存器可以用几个比特直接定位
内存空间很大
内存的定位一般是通过间接的寻址方式
其中可能包含一个或多个对寄存器的引用
* 寄存器很快
在一个周期内
可以同时读两个寄存器
写第三个寄存器
内存要慢些
一次访问就需要几个周期
因为寄存器的个数受限和高速度
它们成为大多数计算机体系结构中的关键资源之一
寄存器分配器作为后端的一个模块
控制寄存器的分配和使用
寄存器很重要
最简单的情况
每条机器指令的操作数要放在寄存器里
在计算复杂表达式的过程中产生的中间结果也要在寄存器里
更复杂的编译器会把经常使用的变量放在寄存器里
来避免反复地存取
如果是一个带优化的编译器
它会把公共子表达式消除或者循环不变量移动以后的重用值
放在寄存器里
分配寄存器的任务有几个层次
* 寄存器只在一个表达式的范围内分配
这是一项为了减少寄存器需求量的指令调度的技术
* 更先进的分配器可以在一个基本块的范围内管理寄存器
* 全局分配器在一个函数的范围内工作
Chaitin 的分配器就在这样的例子
* 程序间的寄存器分配是对一些函数工作
通常是一个完整的程序
为了支持全局的优化
全局的寄存器分配是必须的
(三)寄存器分配和图染色法
实现好的寄存器分配总是很困难
即使是最简单的实现也会因为机器的特殊细节变得复杂
可靠的分配器必要能很好地对付复杂的程序和稀少的寄存器的情况
图染色法提供了一种简化的抽象
它建立一张表示分配过程中的各种限制的冲突图(interference graph)
并对它染色
把许多表面上各异的细节纳入统一的模式
图中的结点代表生命期(live range)
边代表生命期之间的冲突关系
一般说来
如果两个生命期在函数的某一点是同时活跃(live)的
它们就相互冲突
不能占有同一个寄存器
假设k 就是机器中可供分配的寄存器数目
如果图中的所有结点可以用k 种或者更少的颜色染色
有边相连的一对顶点接受不同的颜色
那么这种图染色方案对应一种寄存器分配方案
如果找不到一种k-染色方案
只好修改代码重新染色
1. 使寄存器使用率最小
寄存器分配的目标是使不得不执行的load 和store指令的数目最小
您可能关注的文档
- 十(中南大学现代远程教育课程考试(专科)复习题.doc
- 升上小一生对小宝贝而言.doc
- 华为启示录.doc
- 十个失落的世界.doc
- 华侨大学暑期社会实践-福建省高校社团发展状况调研策划.doc
- 华泰长城交易软件.doc
- 华谊集团谋整体上市 或成上海国企改革首批试点单位.doc
- 单一选择题:42.doc
- 单亲家庭,蜜月都得带上婆婆!.doc
- 单亲子女教育.doc
- 10《那一年,面包飘香》教案.docx
- 13 花钟 教学设计-2023-2024学年三年级下册语文统编版.docx
- 2024-2025学年中职学校心理健康教育与霸凌预防的设计.docx
- 2024-2025学年中职生反思与行动的反霸凌教学设计.docx
- 2023-2024学年人教版小学数学一年级上册5.docx
- 4.1.1 线段、射线、直线 教学设计 2024-2025学年北师大版七年级数学上册.docx
- 川教版(2024)三年级上册 2.2在线导航选路线 教案.docx
- Unit 8 Dolls (教学设计)-2024-2025学年译林版(三起)英语四年级上册.docx
- 高一上学期体育与健康人教版 “贪吃蛇”耐久跑 教案.docx
- 第1课时 亿以内数的认识(教学设计)-2024-2025学年四年级上册数学人教版.docx
文档评论(0)