《软件优化技术》课程网站
课程名:软件优化技术
讨论软件优化的核心概念、技术与实践,使学生:
- 了解软件优化的基本概念;
- 了解面向软件优化的体系结构支持,包括指令集风格、寄存器、缓存、分支预测等;
- 了解面向软件优化的操作系统支持,包括页面缓存、页面调度、文件目录缓存等;
- 了解面向软件优化的运行时支持,包括Just-in-time编译、基于运行时profiling的优化、内存管理、垃圾回收等;
- 了解面向软件优化的编译支持,包括常见的编译优化技术;
- 为从事全栈优化框架或者软硬件基础设施的研发打下基础。
课程概要
第0讲 课程介绍
- 课程介绍
- 软件优化的概念与目标
第1讲 专用计算系统及优化
- 例子
- 专用图灵机模型
- 专用图灵机模型上的性能优化
- 专用图灵机的实现及优化
第2讲 通用计算系统——CPU
- 通用图灵机模型
- 通用图灵机的实现——CPU
- CPU的性能优化概述
- 指令内并行优化
- 指令级并行优化
- 线程级并行优化
- 多处理器并行优化
- AI处理器优化
第4讲 访存优化1
- 存储技术概述
- 局部性与访存优化原理
- 寄存器分配优化
第5讲 访存优化2
- 缓存的组织结构和操作
- 缓存的性能度量
- 缓存访问优化
第6讲 编译过程及编译优化
- 编译流程概述
- C语言到汇编的翻译
- 编译优化概述
- 数据流分析
- link与load阶段
- 算法(模型)优化
- 硬件优化
- 软件优化
- 压缩(信息熵)
- 识别和删除无用代码
- 分时重用(swap)
- 指令层次的融合
- Loop层次的融合
- Function层次的融合
- 设计层次的融合
Todo
- 虚拟机优化(解释执行/JIT/AOT/GC)
考核方式:
- 课堂Presentation,以及课程报告
- 最后一次课之前完成ppt展示(50%)
- ppt时间为25~35分钟
- 鼓励提前完成(以免第最后一次课扎堆,时间不够)
- 期末之前完成课程报告(50%)
- 独立完成
丢分点:
- 禁止大幅抄袭博客或现有技术资料(本课程会对课程报告,进行网络查重和报告间查重)
- 切勿过泛过浅,缺乏细节展开
考核选题参考
从给定论文列表中选择一篇论文精读(不限一篇,需参考相关文献),也可以自选论文(需事先与老师沟通,并获同意),基本要求:
- 该问题的应用背景是什么
- 该领域的困难和挑战是什么
- 该领域的研究历史和现状如何
- 该论文的贡献是什么【尤其是经典论文的创新贡献是什么】
- 作者如何验证该方法的有效性,效果如何
- <font color=#00FF00>觉得可以在课堂上跟大家分享或讨论的至少2个点(必需)</font>
- 你认为该方法为什么有效(bonus)
- 论文工作的有待改进之处和展望(bonus)
- 要求
- 平时 + 讨论 20%
- 审稿及文字讨论 (30%)
- comments at least three papers online
- leading the discussion of one primary paper
- help comment at least two additional papers
- https://whu-softopti2023.hotcrp.com/
- PPT展示+讨论
- 解读primary paper,并给出自己的评分
- 跟另外2名同学协商,要不要统一意见/
从给定题目列表中选择一个题目,也可以自拟题目(需事先与老师沟通,并获同意),基本要求:
- 该问题的应用背景是什么
- 该领域的困难和挑战是什么
- 该题目领域的优化方法的历史与现状
- 重点展开讨论其中1-2个最有意思的优化方法
- 该题目领域后续的问题及解决思路展望
- <font color=#00FF00>觉得可以在课堂上跟大家分享或讨论的至少2个点(必需)</font>
- 有实验分析或实验对比(bonus)
- 有独到见解,并有支撑(bonus)
参考资料
1)Computer Systems: A Programmer’s Perspective
深入理解计算机系统(csapp),第3版,2016
- 作者:Randal E. Bryant and David R. O’Hallaron
- 教材官网:http://csapp.cs.cmu.edu
2)Computer Organization and Design:The Hardware/Software Interface
- 作者:David A.Patterson,John L.Hennessy
- 中文名:计算机组成与设计硬件/软件接口
3) Computer Architecture:A Quantitative Approach
- 作者:John L. Hennessy, David A. Patterson
- 中文名:计算机体系结构:一种量化方法