现代体系结构的优化编译器,ISBN:9787111141228,作者:(美)Randy Allen,(美)Ken Kennedy著;张兆庆等译;张兆庆译
第1章 高性能体系结构对编译器的挑战
1.1 概述和目标
1.2 流水线
1.2.1 流水线指令部件
1.2.2 流水线执行部件
1.2.3 并行功能部件
1.2.4 标量流水线编译
1.3 向量指令
1.3.1 向量硬件概述
1.3.2 向量流水线编译
1.4 超标量处理器和VLIW处理器
1.4.1 多发射指令部件
1.4.2 多发射处理器的编译
1.5 处理器并行性
1.5.1 处理器并行性概述
1.5.2 异步并行性的编译
1.6 存储层次结构
1.6.1 存储系统概述
1.6.2 存储层次结构的编译
1.7 实例研究:矩阵乘法
1.8 先进编译技术
1.8.1 依赖
1.8.2 变换
1.9 小结
1.10 实例研究
1.11 历史评述与参考文献
习题
第2章 依赖:理论与实践
2.1 引言
2.2 依赖及其性质
2.2.1 存-取分类
2.2.2 循环内的依赖
2.2.3 依赖和变换
2.2.4 距离向量和方向向量
2.2.5 循环携带依赖和循环无关依赖
2.3 简单的依赖测试
2.4 并行化和向量化
2.4.1 并行化
2.4.2 向量化
2.4.3 一个先进的向量化算法
2.5 小结
2.6 实例研究
2.7 历史评述与参考文献
习题
第3章 依赖测试
3.1 引言
3.2 依赖测试概述
3.2.1 下标划分
3.2.2 合并方向向量
3.3 单下标依赖测试
3.3.1 ZIV测试
3.3.2 SIV测试
3.3.3 多归纳变量测试
3.4 耦合组中的测试
3.4.1 Delta测试
3.4.2 更强有力的多下标测试
3.5 实验研究
3.6 各种测试的集成
3.7 小结
3.8 实例研究
3.9 历史评述与参考文献
习题
第4章 初等变换
4.1 引言
4.2 信息需求
4.3 循环正规化
4.4 数据流分析
4.4.1 定义-使用链
4.4.2 死代码消除
4.4.3 常数传播
4.4.4 静态单赋值形式
4.5 归纳变量暴露
4.5.1 前向表达式替换
4.5.2 归纳变量替换
4.5.3 驱动替换过程
4.6 小结
4.7 实例研究
4.8 历史评述与参考文献
习题
第5章 提高细粒度并行性
5.1 引言
5.2 循环交换
5.2.1 循环交换的安全性
5.2.2 循环交换的有利性
5.2.3 循环交换和向量化
5.3 标量扩展
5.4 标量和数组重命名
5.5 节点分裂
5.6 归约识别
5.7 索引集分裂
5.7.1 阈值分析
5.7.2 循环剥离
5.7.3 基于区域的分裂
5.8 运行时符号解析
5.9 循环倾斜
5.10 各种变换的集成
5.11 实际机器的复杂性
5.12 小结
5.13 实例研究
5.13.1 PFC
5.13.2 Ardent Titan编译器
5.13.3 向量化的性能
5.14 历史评述与参考文献
习题
第6章 开发粗粒度并行性
6.1 引言
6.2 单循环的处理方法
6.2.1 私有化
6.2.2 循环分布
6.2.3 对齐
6.2.4 代码复制
6.2.5 循环合并
6.3 紧嵌循环
6.3.1 为并行化的循环交换
6.3.2 循环选择
6.3.3 循环反转
6.3.4 为并行化的循环倾斜
6.3.5 幺模变换
6.3.6 基于有利性的并行化方法
6.4 非紧嵌循环套
6.4.1 多层循环合并
6.4.2 一个并行代码生成算法
6.5 一个扩充的例子
6.6 并行性的封装
6.6.1 循环分段
6.6.2 流水线并行性
6.6.3 调度并行任务
6.6.4 制导的自调度
6.7 小结
6.8 实例研究
6.8.1 PFC和ParaScope
6.8.2 Ardent Titan编译器
6.9 历史评述与参考文献
习题
第7章 处理控制流
7.1 引言
7.2 if转换
7.2.1 定义
7.2.2 分支的分类
7.2.3 前向分支
7.2.4 出口分支
7.2.5 后向分支
7.2.6 完全前向分支消除
7.2.7 化简
7.2.8 迭代依赖
7.2.9 if重构
7.3 控制依赖
7.3.1 构造控制依赖
7.3.2 循环中的控制依赖
7.3.3 控制依赖的一个执行模型
7.3.4 控制依赖在并行化中的应用
7.4 小结
7.5 实例研究
7.6 历史评述与参考文献
习题
第8章 改进寄存器的使用
8.1 引言
8.2 标量寄存器分配
8.2.1 面向寄存器重用的数据依赖
8.2.2 循环携带和循环无关的重用
8.2.3 寄存器分配的例子
8.3 标量替换
8.3.1 依赖图剪枝
8.3.2 简单替换
8.3.3 处理循环携带依赖
8.3.4 跨越多个迭代的依赖
8.3.5 删除标量拷贝
8.3.6 缓解寄存器压力
8.3.7 标量替换算法
8.3.8 实验数据
8.4 展开和压紧
8.4.1 展开和压紧的合法性
8.4.2 展开和压紧算法
8.4.3 展开和压紧的效果
8.5 面向寄存器重用的循环交换
8.5.1 对循环交换的考虑
8.5.2 循环交换算法
8.6 面向寄存器重用的循环合并
8.6.1 面向重用的有利的循环合并
8.6.2 面向合并的循环对齐
8.6.3 合并机制
8.6.4 加权循环合并算法
8.6.5 面向寄存器重用的多层循环合并
8.7 改进寄存器使用的变换综合
8.7.1 决定变换的顺序
8.7.2 例子:矩阵乘法
8.8 复杂的循环嵌套
8.8.1 包含if语句的循环
8.8.2 梯形循环
8.9 小结
8.10 实例研究
8.11 历史评述与参考文献
习题
第9章 管理高速缓存
9.1 引言
9.2 适合于空间局部性的循环交换
9.3 分块
9.3.1 非对齐的数据
9.3.2 分块的合法性
9.3.3 分块的有利性
9.3.4 一个简单的分块算法
9.3.5 带倾斜的分块
9.3.6 循环合并和对齐
9.3.7 结合其他变换的分块
9.3.8 有效性
9.4 复杂循环嵌套中的高速缓存管理
9.4.1 三角形的高速缓存分块
9.4.2 特殊用途的变换
9.5 软件预取
9.5.1 一个软件预取算法
9.5.2 软件预取的有效性
9.6 小结
9.7 实例研究
9.8 历史评述与参考文献
习题
第10章 调度
10.1 引言
10.2 指令调度
10.2.1 机器模型
10.2.2 直线型代码的图调度
10.2.3 表调度
10.2.4 踪迹调度
10.2.5 循环内的调度
10.3 向量部件调度
10.3.1 链接
10.3.2 协处理器
10.4 小结
10.5 实例研究
10.6 历史评述与参考文献
习题
第11章 过程间分析和优化
11.1 引言
11.2 过程间分析
11.2.1 过程间问题
11.2.2 过程间问题分类
11.2.3 流不敏感副作用分析
11.2.4 流不敏感别名分析
11.2.5 常数传播
11.2.6 注销分析
11.2.7 符号化分析
11.2.8 数组区域分析
11.2.9 调用图的构造
11.3 过程间优化
11.3.1 内联替换
11.3.2 过程克隆
11.3.3 混合优化
11.4 管理整个程序的编译
11.5 小结
11.6 实例研究
11.7 历史评述与参考文献
习题
第12章 C语言和硬件设计中的依赖
12.1 引言
12.2 优化C语言
12.2.1 指针
12.2.2 命名和结构
12.2.3 循环
12.2.4 作用域和静态变量
12.2.5 方言
12.2.6 其他问题
12.3 硬件设计
12.3.1 硬件描述语言
12.3.2 优化模拟
12.3.3 综合优化
12.4 小结
12.5 实例研究
12.6 历史评述与参考文献
习题
第13章 编译数组赋值
13.1 引言
13.2 简单的标量化
13.3 标量化变换
13.3.1 循环反转
13.3.2 输入预取
13.3.3 循环分裂
13.4 多维标量化
13.4.1 多维中的简单标量化
13.4.2 外层循环预取
13.4.3 用于标量化的循环交换
13.4.4 通用的多维标量化
13.4.5 一个标量化的例子
13.5 对向量机器的考虑
13.6 标量化后的循环交换和合并
13.7 小结
13.8 实例研究
13.9 历史评述与参考文献
习题
第14章 编译高性能Fortran
14.1 引言
14.2 HPF编译器概览
14.3 基本循环的编译技术
14.3.1 分布信息的传播和分析
14.3.2 迭代的划分
14.3.3 通信生成
14.4 优化
14.4.1 通信向量化
14.4.2 重叠通信和计算
14.4.3 对齐和复制
14.4.4 流水
14.4.5 一般依赖环的识别
14.4.6 存储管理
14.4.7 处理多个维
14.5 HPF的过程间优化
14.6 小结
14.7 实例研究
14.8 历史评述与参考文献
习题
附录 Fortran 90基础
参考文献
索引
《高信用社会:信托与信用制度》内容简介:“人无信不立,事无信不成,商无信不兴”。信用是社会运行的基石和商业成功的秘诀,而信托
《中古社会变迁与隋唐史研究(上下册)》内容简介:本书是吴宗国先生从教六十周年纪念论文集,分上下两册。上册研究篇,汇集了历年
《打造超级区块链社区:建设、运营、实践》内容简介:《打造超级区块链社区:建设、运营、实践》从社区、区块链、运营这3个方面重点
《两岸新编中国近代史·晚清卷(全2册)》内容简介:改革开放以来,随着大量过去深藏不露的档案文献史料的开放和全球化进程,以及国
《你的习惯错在哪里》内容简介:思维习惯上的惯性是错误的根源:每个人都有自己思考问题的方式、习惯,思维习惯决定着我们的思想和
《终极极客——“Android之父”安迪•鲁宾》内容简介:“极客”,美国俚语geek的音译,这个词代表着智慧超群,又代表着独特专行,从
书是讲述下一代编程语言Erlang的权威著作,主要涵盖顺序型编程、异常处理、编译和运行代码、并发编程、并发编程中的错误处理、分
Photoshop调色.超简单!-(附光盘) 本书特色 随着数码相机的日益普及,数码照片的调修也成为广大数码摄影爱好者不断深入学习的新技术。《photoshop...
《优势成长》内容简介:这是一本帮你锁定并提升个人核心竞争力的实用类的图书。活着的每一天,都是为了超越昨天的自己。给努力多一
《SEO教程搜索引擎优化入门与进阶》是作者从事搜索引擎优化5年以来的经验总结,书中深度剖析了搜索引擎优化的每个细节,包括关键
《基因科技成果利益分享研究》内容简介:基因衍生科技成果,必须对人体组织提供者的利益作出恰当配置,方能保证研发的有序规范进行
本书向我们介绍数字通信的基本概念,揭示了通信行业的发展历程,是通信修养专业的一本非常优秀的教材。在本书的全新版本中,作者
《ASP.NETMVC1.0高级编程》内容简介:ASP.NETMVC架构是以一些核心原则(可扩展性、可测试性和关注点分离)为指导从头设计而成的。
程序员增值合订本2002 本书特色 全套合订本适合开发者、项目经理 CTO&CIO、编程爱好者阅读收藏内含:精装大16开上、下两册,52个印张,832页,另附配...
MIMO和OFDM技术是B3G(LTE、LTE-A、4G)的关键物理层技术,该书详细介绍了该领域的概念和理论,并通过MATLAB程序进行仿真和验证。
《全面深化改革与世界经济》内容简介:“世界经济是失衡的”、“世界经济需要再平衡”这样的命题是当今的普遍共识,但对于“谁应当
《叶兆言散文》内容简介:叶兆言的散文以博识、才学、智趣见长。在他的笔下,家庭生活、读书、采风、故交等皆可成文,厚实的人文功
循序渐进DB2(第2版)——DBA系统管理、运维与应用案例 本书特色 国内*权威的db2图书,由业界领军人物牛新庄博士执笔针对db2技术的*新发展和上一版的读者...
《插画教室》内容简介:本书是专业插画设计基础教程。插画创作离不开植物、动物、人物、静物这些元素,本书便从这些元素入手,以几
《佳爷房谈:购房租房一本通》内容简介:本书分为房产基础知识、购买新房、购买二手房、租房四部分,采取问答形式,运用通俗易懂的