高级编译器:自助式在线课程
摘要
CS 6120 是一门博士级别的自助式在线高级编译器课程,涵盖中间表示、数据流、优化,并包括论文阅读和使用 LLVM 和 Bril 的实现任务。
暂无内容
查看缓存全文
缓存时间: 2026/06/18 14:49
# CS 6120:自学课程
来源:https://www.cs.cornell.edu/courses/cs6120/2022sp/self-guided/
## CS 6120:高级编译器:自学在线课程
CS 6120 是由Adrian Sampson (https://www.cs.cornell.edu/%7Easampson/) 在康奈尔大学计算机系 (https://www.cs.cornell.edu/) 开设的一门博士级别课程,内容涉及编程语言实现。课程涵盖通用编译器主题,如中间表示、数据流和“经典”优化,以及更多研究风格的主题,如并行化、即时编译和垃圾回收。工作包括阅读论文和开源黑客任务,这些任务使用LLVM (https://llvm.org/) 和为本课程专门发明的一个教学IR (https://capra.cs.cornell.edu/bril/)。
本页面列出了在你想象中大学的课程学习大纲,共四个想象学分(无评分)。这是一个线性时间线,穿插了需要阅读的论文。每节课都有视频和书面笔记,部分课程还包含需要完成的*实现任务*。这些任务都是开放式的,旨在通过将抽象概念转化为实际代码来巩固你对它们的理解。这个顺序代表了视频观看和论文阅读的建议交错安排。
与“真实”CS 6120 的一些区别在于,你可以忽略任务截止日期,并且无法参与我们在Zulip上的讨论线程。真实的6120还有一个期末课程项目——在自学版本中,你的期末任务是利用编译器的魔力改变世界。
授课老师在视频制作方面是个新手,所以请原谅视频质量,尤其是在早期课程中。CS 6120 是开源项目,在GitHub上 (https://github.com/sampsyo/cs6120),如果发现问题,请提交错误报告。
完成课程后,请填写此反馈表格 (https://forms.gle/GuRiMa728DUvTbZQ7)。
## 第1课: (https://www.cs.cornell.edu/courses/cs6120/2022sp/lesson/1/) 欢迎与概述
- 视频 (https://vod.video.cornell.edu/media/0_bug89uok)
- 产生错误数据而不做任何明显错误的事情! (https://dl.acm.org/citation.cfm?id=1508275) Todd Mytkowicz, Amer Diwan, Matthias Hauswirth, 和 Peter F. Sweeney. ASPLOS 2009.
- SIGPLAN 实证评估指南 (https://www.sigplan.org/Resources/EmpiricalEvaluation/)
## 第2课: (https://www.cs.cornell.edu/courses/cs6120/2022sp/lesson/2/) 表示程序
- 表示程序 (https://vod.video.cornell.edu/media/1_vnx6laq9)
- Bril入门 (https://vod.video.cornell.edu/media/1_jc91ke0h)
## 第3课: (https://www.cs.cornell.edu/courses/cs6120/2022sp/lesson/3/) 局部分析与优化
- 简单死代码消除 (https://vod.video.cornell.edu/media/1_6k52flbg)
- 局部值编号 (https://vod.video.cornell.edu/media/1_i2gnhw41)
## 第4课: (https://www.cs.cornell.edu/courses/cs6120/2022sp/lesson/4/) 数据流
- 数据流 (https://vod.video.cornell.edu/media/1_72tqupsb)
- 实现任务 (https://vod.video.cornell.edu/media/1_mjy6lamo)
## 第5课: (https://www.cs.cornell.edu/courses/cs6120/2022sp/lesson/5/) 全局分析
- 全局分析与优化 (https://vod.video.cornell.edu/media/1_i5apfx6t)
- 高效路径剖析 (https://dl.acm.org/citation.cfm?id=243857) Thomas Ball 和 James R. Larus. MICRO 1996.
## 第6课: (https://www.cs.cornell.edu/courses/cs6120/2022sp/lesson/6/) 静态单赋值
- 静态单赋值 (https://vod.video.cornell.edu/media/1_130pq2fh)
- 使用Alive进行可证明正确的窥孔优化 (https://dl.acm.org/citation.cfm?id=2737965) Nuno P. Lopes, David Menendez, Santosh Nagarakatte, 和 John Regehr. PLDI 2015.
## 第7课: (https://www.cs.cornell.edu/courses/cs6120/2022sp/lesson/7/) LLVM
- LLVM简介 (https://vod.video.cornell.edu/media/1_f231lwkz)
- 编写LLVM Pass (https://vod.video.cornell.edu/media/1_4nrtmvc9)
## 第8课: (https://www.cs.cornell.edu/courses/cs6120/2022sp/lesson/8/) 循环优化
- 视频 (https://vod.video.cornell.edu/media/1_2shcxd1h)
## 第9课: (https://www.cs.cornell.edu/courses/cs6120/2022sp/lesson/9/) 过程间分析
- 视频 (https://vod.video.cornell.edu/media/1_9csov2la)
- 基于类型的别名分析 (https://dl.acm.org/citation.cfm?id=277670) Amer Diwan, Kathryn S. McKinley, 和 J. Eliot B. Moss.
## 第10课: (https://www.cs.cornell.edu/courses/cs6120/2022sp/lesson/10/) 别名分析
- 视频 (https://vod.video.cornell.edu/media/1_7ngps985)
- 垃圾回收的统一理论 (https://dl.acm.org/citation.cfm?id=1028982) David F. Bacon, Perry Cheng, 和 V. T. Rajan. OOPSLA 2004.
- 快速保守垃圾回收 (http://www.cs.utexas.edu/~mckinley/papers/conservative-gc-oopsla-2014.pdf) Rifat Shahriyar, Stephen M. Blackburn, 和 Kathryn S. McKinley. OOPSLA 2014.
## 第11课: (https://www.cs.cornell.edu/courses/cs6120/2022sp/lesson/11/) 内存管理
- 视频 (https://vod.video.cornell.edu/media/1_21p8mjsw)
- 基于原型的动态类型面向对象语言SELF的高效实现 (http://portal.acm.org/citation.cfm?id=74884) C. Chambers, D. Ungar, 和 E. Lee. OOPSLA 1989.
- 基于痕迹的动态语言即时类型特化 (https://dl.acm.org/citation.cfm?id=1542476.1542528) Andreas Gal, Brendan Eich, Mike Shaver, David Anderson, David Mandelin, Mohammad R. Haghighat, Blake Kaplan, Graydon Hoare, Boris Zbarsky, Jason Orendorff, Jesse Ruderman, Edwin W. Smith, Rick Reitmaier, Michael Bebenita, Mason Chang, 和 Michael Franz. PLDI 2009.
## 第12课: (https://www.cs.cornell.edu/courses/cs6120/2022sp/lesson/12/) 动态编译器
- 动态编译器 (https://vod.video.cornell.edu/media/1_ltb1t94i)
- 通过推测进行跟踪 (https://vod.video.cornell.edu/media/1_nk1o4hzm)
- 超级优化器:窥视最小程序 (https://courses.cs.washington.edu/courses/cse501/15sp/papers/massalin.pdf) Alexia Massalin. ASPLOS 1987.
- Chlorophyll:低功耗空间架构的合成辅助编译器 (https://dl.acm.org/citation.cfm?id=2594339) Phitchaya Mangpo Phothilimthana, Tikhon Jelvis, Rohin Shah, Nishant Totla, Sarah Chasins, 和 Rastislav Bodik. PLDI 2014.
## 第13课: (https://www.cs.cornell.edu/courses/cs6120/2022sp/lesson/13/) 程序合成
- 视频 (https://vod.video.cornell.edu/media/1_mxclvd8z)
- 线程无法作为库实现 (https://dl.acm.org/doi/10.1145/1065010.1065042) Hans-J. Boehm. PLDI 2005.
- 利用多媒体指令集开发超字级并行性 (https://dl.acm.org/doi/10.1145/358438.349320) Samuel Larsen 和 Saman Amarasinghe. PLDI 2000.
- 确定性并行Java的类型与效果系统 (http://dpj.cs.illinois.edu/DPJ/Publications_files/DPJ-OOPSLA-2009.pdf) Robert L. Bocchino, Vikram S. Adve, Danny Dig, Sarita V. Adve, Stephen Heumann, Rakesh Komuravelli, Jeffrey Overbey, Patrick Simmons, Hyojin Sung, 和 Mohsen Vakilian. OOPSLA 2009.
- 实际编译器的形式化验证 (https://dl.acm.org/citation.cfm?id=1538814) Xavier Leroy. CACM 2009.
## 第14课: (https://www.cs.cornell.edu/courses/cs6120/2022sp/lesson/14/) 并发与并行
- 视频 (https://vod.video.cornell.edu/media/1_8cpusna2)
相似文章
@vivekgalatage: 最优秀的课程之一 https://courses.csail.mit.edu/6.851/spring21/
麻省理工学院 Erik Demaine 教授的《高级数据结构》课程(6.851)已完全在线开放,包含视频讲座和协作式问题求解。
SBCL: 终极汇编代码面包板 (2014)
一篇技术博客文章,探讨如何使用SBCL作为汇编代码的面包板,重点介绍基于堆栈的虚拟机技术,如旋转堆栈和高效的原语操作分发,并引用了F18处理器和x87堆栈。
我讨厌编译器
一篇表达对编译器不满的个人观点文章,可能讨论其复杂性或缺点。
逐步 LLM 工程项目 (2026 版)
一个基于项目的路线图,通过构建从分词器到服务栈的关键组件来学习 LLM 工程,包括硬件基础和后训练技术。
FlowCompile:结构化LLM工作流的优化编译器
FlowCompile 是一个用于结构化LLM工作流的编译器,它在编译时探索配置以平衡准确性和延迟,无需重新训练即可实现最高6.4倍的加速。