课程大纲

课程大纲

编译原理(研讨课)

课程编码:B0911016Y 英文名称:Practice of Compiler Principles 课时:40 学分:2.00 课程属性:专业必修课 主讲教师:崔慧敏

中文介绍

英文介绍

教学目的要求
本课程为专业课程,在计算机人才的培养中作为编译原理课程必要的研讨课程,对于理解、巩固、应用编译原理课程的内容有重要的作用。编译原理研讨课以为学生提供与理论相结合的前沿编译技术和实用编译技术为目标,在课程设计上有兼顾前沿动态的了解和动手能力的提升。

预修课程
编译原理、计算机组成原理、汇编语言

主要内容

首先,本课程学习中,学生需要掌握LLVM中词法分析、语法分析、代码生成的基本流程,并能够进行简单的修改。我们围绕在工业界和学术界广泛使用的LLVM平台,设计了一系列与实际紧密结合的实验内容。为了体现我们的课程适应技术发展趋势的思想,我们在LLVM上精心设计了三个实验,可以让学生对编译器的前端词法语法分析、中间代码访问、中间代码生成三个重要阶段的原理都能有深入的理解。在实验过程中,学生还可以掌握从大型开源系统中梳理脉络、定位目标模块、扩展相应功能的本领,这是未来计算机行业不可或缺的重要技术。

其次,本课程学习中,学生需要理解实际编译器中对代码实施优化的经典手段和技术。我们通过7-8课时关于编译优化的介绍,作为编译原理理论课的外延进行讲授,让学生对编译器的常规优化(包括经典编译优化方法与时机、经典循环优化、经典访存优化)有较为深入的理解。

最后,我们在课程中讲授新型编译技术,使学生了解一门技术如何随着时代的发展而变迁,旨在培养学生在学术方向的前瞻敏感性。我们在研讨课中补充讲授了实际芯片编译器中常用的优化技术,对比几个不同的编译基础设施在优化方面的异同,同时也会介绍随着大数据、数据中心、智能化的发展,编译技术的新机会和新挑战。在讲授过程中,希望学生能够建立起学术上敏感性和前瞻性。

序号

授课内容

知识点

备注

1

课程介绍

  1. 课程基本信息
  2. 最新的编译研究
  3. 2-19周课程安排

 

2

Compiler, Assembler,

Loader and Linker

  1. ELF文件格式
  2. 动态链接
  3. 从编译到运行

布置课程实验内容,布置LLVM论文阅读

3

编译方法学

  1. 静态编译
  2. Profile制导的编译
  3. 链接时优化
  4. 动态编译
  5. 迭代编译

 

4

RISCV实验讲授

  1. Antlr介绍

选定各自组的实验内容

5

LLVM实验讲授

  1. LLVM的安装
  2. LLVM源代码框架介绍

学会LLVM的安装

6

经典编译器介绍

  1. GCC中关于重定向后端的设计理念
  2. Open64中多层IR的设计理念

学生汇报LLVM的报告

7

二进制编译技术

  1. 介绍二进制编译和源代码编译的区别
  2. 了解跨平台做指令集移植的常见问题及经典方案

 

8

LLVM实验研讨

RISCV实验研讨

  1. 完成LLVM前端对pragma的扩展
  2. RISCV实验的前端能够通过最简单的语法,生成AST

课程答疑,确定大家能够完成最简单的流程

部署实验下一步的要求

9

论文研讨

学生对最新的编译技术论文进行汇报和研讨

 

10

经典编译优化

  1. 常用的静态优化
  2. 经典循环优化(循环交换,循环分块,循环倾斜,特殊分块等)

 

11

实验研讨

学生对实验第一部分的内容进行研讨

 

12

LLVM实验研讨

RISCV实验研讨

 

  1. 介绍LLVM中类型检查的基本机制
  2. RISCV中由AST生成中间表示的过程

由助教老师进行详细的实验讲解

通过4课时的实验,学生可以基本清楚实验二流程

13

14

经典编译优化

  1. 常用的访存优化
  2. 提高数据重用
  3. 预取技术
  4. 带宽优化技术

 

15

实验研讨+论文研讨

学生对实验第二部分的内容进行研讨

学生对编译前沿论文进行研讨

 

16

LLVM实验研讨

RISCV实验研讨

 

1.介绍LLVM中代码生成机制,和我们实验的代码生成流程

2. RISCV的代码生成流程,引导学生完成最简单的代码生成

 

由助教老师进行详细的实验讲解

通过4课时的实验,学生可以走通实验三流程

17

18

19

RISCV实验指导

带领学生完成常用的两个优化

进行两个优化的实验讲解,通过4课时的实验,带领学生完成两个常用的优化,如循环不变量外提、公共子表达式删除、冗余指令删除等。

20

课时分配

章节/学时分配

讲课

习题课

实验课

上机课

讨论课

其它

第1课/2学时

2

 

 

 

 

 

第2课/2学时

2

 

 

 

 

 

第3课/2学时

2

 

 

 

 

 

第4课/2学时

 

 

2

 

 

 

第5课/2学时

 

 

2

 

 

 

第6课/2学时

2

 

 

 

 

 

第7课/2学时

2

 

 

 

 

 

第8课/2学时

 

 

2

 

 

 

第9课/2学时

 

 

 

 

2

 

第10课/2学时

2

 

 

 

 

 

第11课/2学时

 

 

2

 

 

 

第12课/2学时

 

 

2

 

 

 

第13课/2学时

 

 

 

 

2

 

第14课/2学时

2

 

 

 

 

 

第15课/2学时

 

 

2

 

 

 

第16课/2学时

 

 

2

 

 

 

第17课/2学时

 

 

 

 

2

 

第18课/2学时

2

 

 

 

 

 

第19课/2学时

 

 

2

 

 

 

第20课/2学时

 

 

2

 

 

 

课程思政
编译技术的发展与芯片发展息息相关,编译人才是我国发展芯片产
业亟需的高精尖人才,希望通过本课程的讲授,为学生灌输解决国产芯片卡脖
子关键问题的使命感,能够吸引学生产生投身国产编译软件研究开发的志向。

教材

参考文献

课程教师信息
崔慧敏研究员关注异构环境下的编程和编译方向,具体的研究领域包括:异构编程模型,异构编译优化,数据中心编程与编译技术等。

在异构编程方面,她关注于领域专用的编程与编译优化技术,包括面向AI领域、通信领域的编译优化,旨在解决异构为程序员带来的编程困扰,并充份发挥领域专用芯片的处理潜力。在数据中心编程与编译技术方面,她关注于解决混合负载场景下的编译优化策略,旨在解决数据中心深度软件栈环境下各层次间的协同优化。

其它说明
三个实验各占20%,共60%;课程讨论40%。