科技
类型
可以朗读
语音朗读
159千字
字数
2023-12-01
发行日期
展开全部
主编推荐语
提升软件性能的技术宝典,软件工程师的进阶之路。
内容简介
本书介绍了在现代计算机系统上充分利用微处理器计算能力以提高软件性能的主要优化方法,共分为七章。
本书融合了底层技术和软件优化技术两个层面的内容,以编程实践为核心,提供了较多的编程习题,旨在提升读者的编程能力。全书分为七章,第1章介绍了软件性能工程、延迟、吞吐率、加速比等基本概念和性能测试方法。后续章节围绕着CPU、SIMD指令系统、多线程、GPU、面向对象程序设计语言(C++和Java)、磁盘与网络等专题展开。
目录
- 版权信息
- 前言
- 第1章 引言
- 1.1 软件优化概述
- 1.1.1 软件优化的主要方法
- 1.1.2 软件性能工程
- 1.1.3 关于软件优化的一些观点
- 1.2 评价软件性能的指标和方法
- 1.2.1 延迟和吞吐率
- 1.2.2 加速比和效率
- 1.2.3 Amdahl定理
- 1.2.4 M/M/k模型
- 1.3 常用软件工具和时间测量方法
- 1.3.1 常用软件工具
- 1.3.2 时间测量
- 1.4 一个程序性能分析的实例
- 1.5 扩展阅读
- 1.6 习题
- 1.7 实验题
- 参考文献
- 第2章 CPU上的基本优化方法
- 2.1 计算机体系结构基础
- 2.1.1 指令集体系结构
- 2.1.2 指令铁律
- 2.1.3 流水线及其相关性
- 2.1.4 超标量和乱序执行
- 2.1.5 典型微处理器的微结构
- 2.2 针对算术逻辑指令的优化
- 2.2.1 现代微处理器的算术逻辑指令延迟与吞吐率
- 2.2.2 选择合适的数据类型
- 2.2.3 使用简单指令代替复杂指令
- 2.2.4 使用特殊指令
- 2.2.5 查表法
- 2.3 针对条件分支指令的优化
- 2.3.1 分支预测
- 2.3.2 消除分支
- 2.3.3 组合多个分支以提高分支预测的准确度
- 2.3.4 使用条件执行指令
- 2.3.5 合理使用switch语句
- 2.4 针对Cache的优化
- 2.4.1 现代微处理器的Cache
- 2.4.2 数据对齐
- 2.4.3 SoA的结构组织方式
- 2.4.4 数据分块以提升Cache命中率
- 2.4.5 Cache预取
- 2.5 针对循环结构的优化
- 2.5.1 消除循环
- 2.5.2 循环展开
- 2.6 综合实例
- 2.6.1 Linux内核中的ECC计算
- 2.6.2 Hash表的构建
- 2.7 扩展阅读
- 2.8 习题
- 2.9 实验题
- 参考文献
- 第3章 基于SIMD指令系统的优化方法
- 3.1 SIMD指令系统简介
- 3.1.1 SIMD指令系统概况
- 3.1.2 软件系统使用SIMD指令的方法
- 3.2 SIMD内嵌原语
- 3.2.1 内嵌原语的数据类型
- 3.2.2 向量设置操作
- 3.2.3 计算操作
- 3.2.4 比较操作
- 3.2.5 访存操作
- 3.2.6 数据排列操作
- 3.3 基于内嵌原语的SIMD程序设计
- 3.3.1 数据对齐和数据宽度
- 3.3.2 SoA结构
- 3.3.3 数据比较
- 3.3.4 特殊指令
- 3.3.5 寄存器数量
- 3.4 SIMD程序实例
- 3.4.1 使用SSE指令去除空格
- 3.4.2 基于SIMD指令的双调排序和归并排序
- 3.4.3 fftw的可移植设计
- 3.5 扩展阅读
- 3.6 习题
- 3.7 实验题
- 参考文献
- 第4章 基于多线程的优化方法
- 4.1 多核处理器体系结构
- 4.1.1 多线程处理器
- 4.1.2 多核处理器系统
- 4.1.3 Cache一致性协议
- 4.2操作系统级线程调用
- 4.2.1 线程
- 4.2.2 线程基本API
- 4.2.3 Linux的线程同步和互斥
- 4.2.4 Windows的线程同步和互斥
- 4.3 OpenMP
- 4.3.1 for编译制导语句
- 4.3.2 共享变量和私有变量
- 4.3.3 归约子句
- 4.3.4 nowait子句
- 4.3.5 single制导指令
- 4.3.6 critical子句
- 4.3.7 barrier子句
- 4.3.8 其他子句
- 4.4 多线程程序的一些问题
- 4.4.1 临界区
- 4.4.2 Cache伪共享
- 4.4.3 多线程的并行化设计方法
- 4.5 多线程并行化实例
- 4.5.1 Horner算法的并行化
- 4.5.2 构建Hash表
- 4.5.3 归并排序
- 4.6 扩展阅读
- 4.7 习题
- 4.8 实验题
- 参考文献
- 第5章 GPU的优化方法
- 5.1 GPU体系结构
- 5.1.1 面向吞吐率优化的异构计算
- 5.1.2 GPU总体结构
- 5.1.3 SIMT机制
- 5.1.4 存储器结构
- 5.2 GPU基本编程方法
- 5.2.1 线程的组织结构
- 5.2.2 GPU函数说明
- 5.2.3 存储器管理以及与主机的数据交换
- 5.2.4 GPU上线程之间的同步
- 5.2.5 OpenCL的程序对象和内核对象
- 5.2.6 程序实例
- 5.3 GPU程序优化方法
- 5.3.1 指令吞吐率
- 5.3.2 资源利用率
- 5.3.3 共享存储器
- 5.3.4 全局存储器
- 5.3.5 掩盖主机和GPU之间的数据传输延迟
- 5.3.6 动态并行机制
- 5.4 GPU程序实例
- 5.4.1 矩阵乘法
- 5.4.2 LU分解
- 5.5 扩展阅读
- 5.6 习题
- 5.7 实验题
- 参考文献
- 第6章 面向对象程序设计语言的优化方法
- 6.1 C++的性能优化
- 6.1.1 C++实现简介
- 6.1.2 STL
- 6.2 Java的性能优化
- 6.2.1 Java虚拟机简介
- 6.2.2 Java字节码的执行机制
- 6.2.3 Java本地接口
- 6.2.4 Java的多线程机制
- 6.3 垃圾回收
- 6.3.1 垃圾回收基本技术
- 6.3.2 HotSpot JVM中的垃圾回收
- 6.4 扩展阅读
- 6.5 习题
- 6.6 实验题
- 参考文献
- 第7章 系统级软件优化
- 7.1 硬盘系统与文件系统的性能优化
- 7.1.1 硬盘系统
- 7.1.2 文件系统
- 7.1.3 性能优化方法
- 7.1.4 实例:外排序
- 7.2 网络连接的性能优化
- 7.2.1 网络连接硬件
- 7.2.2 网络编程简介
- 7.2.3 性能优化方法
- 7.2.4 实例:Web服务器的结构
- 7.3 软件总体结构的设计考虑
- 7.3.1 用户友好性设计
- 7.3.2 可移植性设计
- 7.3.3 错误处理设计
- 7.3.4 系统可维护性设计
- 7.4 扩展阅读
- 7.5 习题
- 7.6 实验题
- 参考文献
展开全部
出版方
机械工业出版社
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。