图书介绍
现代体系结构的优化编译器PDF|Epub|txt|kindle电子书版本网盘下载
![现代体系结构的优化编译器](https://www.shukui.net/cover/44/30891964.jpg)
- (美)Randy Allen,(美)Ken Kennedy著;张兆庆等译 著
- 出版社: 北京:机械工业出版社
- ISBN:7111141229
- 出版时间:2004
- 标注页数:573页
- 文件大小:32MB
- 文件页数:596页
- 主题词:编译程序-程序设计
PDF下载
下载说明
现代体系结构的优化编译器PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
目录出版者的话专家指导委员会序致中国读者译者序前言作者简介第1章 高性能体系结构对编译器的挑战1
1.1 概述和目标1
1.2 流水线3
1.2.1 流水线指令部件3
1.2.2 流水线执行部件4
1.2.3 并行功能部件5
1.2.4 标量流水线编译5
1.3 向量指令7
1.3.1 向量硬件概述7
1.3.2 向量流水线编译8
1.4 超标量处理器和VLIW处理器9
1.4.1 多发射指令部件9
1.4.2 多发射处理器的编译10
1.5 处理器并行性11
1.5.1 处理器并行性概述11
1.5.2 异步并行性的编译12
1.6.1 存储系统概述14
1.6 存储层次结构14
1.6.2 存储层次结构的编译15
1.7 实例研究:矩阵乘法15
1.8 先进编译技术19
1.8.1 依赖19
1.8.2 变换20
1.9 小结21
1.10 实例研究21
1.11 历史评述与参考文献21
习题22
第2章 依赖:理论与实践23
2.1 引言23
2.2 依赖及其性质23
2.2.1 存-取分类24
2.2.2 循环内的依赖25
2.2.3 依赖和变换26
2.2.4 距离向量和方向向量29
2.2.5 循环携带依赖和循环无关依赖31
2.3 简单的依赖测试36
2.4.1 并行化38
2.4 并行化和向量化38
2.4.2 向量化39
2.4.3 一个先进的向量化算法41
2.5 小结44
2.6 实例研究44
2.7 历史评述与参考文献44
习题45
3.1 引言47
第3章 依赖测试47
3.2 依赖测试概述51
3.2.1 下标划分51
3.2.2 合并方向向量52
3.3 单下标依赖测试52
3.3.1 ZIV测试53
3.3.2 SIV测试53
3.3.3 多归纳变量测试61
3.4 耦合组中的测试73
3.4.1 Delta测试73
3.4.2 更强有力的多下标测试79
3.5 实验研究80
3.6 各种测试的集成81
3.7 小结86
3.8 实例研究86
3.9 历史评述与参考文献87
习题87
第4章 初等变换91
4.1 引言91
4.2 信息需求92
4.3 循环正规化93
4.4 数据流分析95
4.4.1 定义-使用链95
4.4.2 死代码消除97
4.4.3 常数传播98
4.4.4 静态单赋值形式100
4.5 归纳变量暴露105
4.5.1 前向表达式替换105
4.5.2 归纳变量替换107
4.5.3 驱动替换过程111
4.7 实例研究113
4.6 小结113
4.8 历史评述与参考文献114
习题114
第5章 提高细粒度并行性117
5.1 引言117
5.2 循环交换118
5.2.1 循环交换的安全性119
5.2.2 循环交换的有利性121
5.2.3 循环交换和向量化122
5.3 标量扩展126
5.4 标量和数组重命名133
5.5 节点分裂138
5.6 归约识别140
5.7 索引集分裂143
5.7.1 阈值分析143
5.7.2 循环剥离144
5.7.3 基于区域的分裂145
5.8 运行时符号解析146
5.9 循环倾斜147
5.10 各种变换的集成150
5.11 实际机器的复杂性155
5.12 小结157
5.13 实例研究157
5.13.1 PFC158
5.13.2 ArdentTitan编译器158
5.13.3 向量化的性能159
5.14 历史评述与参考文献161
习题161
6.2 单循环的处理方法163
第6章 开发粗粒度并行性163
6.1 引言163
6.2.1 私有化164
6.2.2 循环分布167
6.2.3 对齐167
6.2.4 代码复制170
6.2.5 循环合并173
6.3 紧嵌循环套184
6.3.1 为并行化的循环交换184
6.3.2 循环选择186
6.3.3 循环反转189
6.3.4 为并行化的循环倾斜190
6.3.5 幺模变换193
6.3.6 基于有利性的并行化方法194
6.4 非紧嵌循环套196
6.4.1 多层循环合并196
6.4.2 一个并行代码生成算法199
6.5 一个扩充的例子202
6.6.1 循环分段204
6.6 并行性的封装204
6.6.2 流水线并行性205
6.6.3 调度并行任务207
6.6.4 制导的自调度209
6.7 小结210
6.8 实例研究211
6.8.1 PFC和ParaScope211
6.8.2 ArdentTitan编译器212
6.9 历史评述与参考文献214
习题215
第7章 处理控制流217
7.1 引言217
7.2 if转换218
7.2.1 定义218
7.2.2 分支的分类219
7.2.3 前向分支219
7.2.4 出口分支222
7.2.5 后向分支227
7.2.6 完全前向分支消除229
7.2.7 化简230
7.2.8 迭代依赖234
7.2.9 if重构237
7.3 控制依赖238
7.3.1 构造控制依赖240
7.3.2 循环中的控制依赖241
7.3.3 控制依赖的一个执行模型242
7.3.4 控制依赖在并行化中的应用244
7.4 小结254
7.5 实例研究254
习题255
7.6 历史评述与参考文献255
第8章 改进寄存器的使用257
8.1 引言257
8.2 标量寄存器分配257
8.2.1 面向寄存器重用的数据依赖258
8.2.2 循环携带和循环无关的重用259
8.2.3 寄存器分配的例子260
8.3 标量替换260
8.3.1 依赖图剪枝261
8.3.2 简单替换264
8.3.3 处理循环携带依赖264
8.3.4 跨越多个迭代的依赖265
8.3.5 删除标量拷贝265
8.3.6 缓解寄存器压力266
8.3.7 标量替换算法267
8.3.8 实验数据270
8.4 展开和压紧272
8.4.1 展开和压紧的合法性274
8.4.2 展开和压紧算法276
8.4.3 展开和压紧的效果279
8.5 面向寄存器重用的循环交换281
8.5.1 对循环交换的考虑283
8.5.2 循环交换算法284
8.6 面向寄存器重用的循环合并285
8.6.1 面向重用的有利的循环合并285
8.6.2 面向合并的循环对齐287
8.6.3 合并机制291
8.6.4 加权循环合并算法295
8.6.5 面向寄存器重用的多层循环合并306
8.7 改进寄存器使用的变换综合308
8.7.1 决定变换的顺序308
8.7.2 例子:矩阵乘法309
8.8 复杂的循环嵌套310
8.8.1 包含if语句的循环310
8.8.2 梯形循环312
8.9 小结316
8.10 实例研究317
8.11 历史评述与参考文献317
习题318
第9章 管理高速缓存319
9.1 引言319
9.2 适合于空间局部性的循环交换320
9.3 分块325
9.3.1 非对齐的数据326
9.3.2 分块的合法性327
9.3.3 分块的有利性327
9.3.4 一个简单的分块算法329
9.3.5 带倾斜的分块330
9.3.6 循环合并和对齐332
9.3.7 结合其他变换的分块333
9.3.8 有效性335
9.4 复杂循环嵌套中的高速缓存管理335
9.4.1 三角形的高速缓存分块335
9.4.2 特殊用途的变换336
9.5 软件预取338
9.5.1 一个软件预取算法339
9.5.2 软件预取的有效性346
9.7 实例研究347
9.6 小结347
9.8 历史评述与参考文献348
习题349
第10章 调度351
10.1 引言351
10.2 指令调度351
10.2.1 机器模型353
10.2.2 直线型代码的图调度353
10.2.3 表调度354
10.2.4 踪迹调度356
10.2.5 循环内的调度359
10.3 向量部件调度367
10.3.1 链接368
10.3.2 协处理器370
10.4 小结372
10.5 实例研究372
10.6 历史评述与参考文献374
习题375
11.2.1 过程间问题377
11.2 过程间分析377
11.1 引言377
第11章 过程间分析和优化377
11.2.2 过程间问题分类382
11.2.3 流不敏感副作用分析384
11.2.4 流不敏感别名分析390
11.2.5 常数传播394
11.2.6 注销分析397
11.2.7 符号化分析400
11.2.8 数组区域分析402
11.2.9 调用图的构造404
11.3 过程间优化406
11.3.1 内联替换407
11.3.2 过程克隆408
11.3.3 混合优化409
11.4 管理整个程序的编译409
11.5 小结411
11.6 实例研究411
11.7 历史评述与参考文献413
习题414
12.2 优化C语言417
12.1 引言417
第12章 C语言和硬件设计中的依赖417
12.2.1 指针418
12.2.2 命名和结构420
12.2.3 循环421
12.2.4 作用域和静态变量422
12.2.5 方言422
12.2.6 其他问题423
12.3 硬件设计424
12.3.1 硬件描述语言426
12.3.2 优化模拟428
12.3.3 综合优化439
12.4 小结448
12.5 实例研究448
12.6 历史评述与参考文献449
习题449
第13章 编译数组赋值451
13.1 引言451
13.2 简单的标量化451
13.3.1 循环反转454
13.3 标量化变换454
13.3.2 输入预取455
13.3.3 循环分裂458
13.4 多维标量化461
13.4.1 多维中的简单标量化461
13.4.2 外层循环预取462
13.4.3 用于标量化的循环交换464
13.4.4 通用的多维标量化467
13.4.5 一个标量化的例子469
13.6 标量化后的循环交换和合并471
13.5 对向量机器的考虑471
13.7 小结473
13.8 实例研究474
13.9 历史评述与参考文献474
习题474
第14章 编译高性能Fortran475
14.1 引言475
14.2 HPF编译器概览478
14.3.1 分布信息的传播和分析481
14.3 基本循环的编译技术481
14.3.2 迭代的划分482
14.3.3 通信生成485
14.4 优化489
14.4.1 通信向量化489
14.4.2 重叠通信和计算494
14.4.3 对齐和复制495
14.4.4 流水496
14.4.5 一般依赖环的识别498
14.4.6 存储管理499
14.4.7 处理多个维501
14.5 HPF的过程间优化503
14.6 小结504
14.7 实例研究504
14.8 历史评述与参考文献506
习题506
附录 Fortran 90基础509
参考文献515
索引535