在数字技术飞速发展的今天,计算机底层系统能力已经成为计算机、软件工程、电子信息、芯片设计、嵌入式开发等领域的核心竞争力。重要的技术突破往往源于对系统底层机制的深刻理解:从代码运行到硬件执行,从编译器优化到 CPU 架构设计,每一环都决定着技术创新的上限。但是,系统能力的培养门槛高、资料散、实战难,很多学习者停留在应用开发层面,难以打通高级语言→编译→链接→执行→硬件的完整链路,更缺少从理论到工程、从软件到硬件的全流程实战机会。
为了填补这一缺口,湖南大学杨科华副教授、赵欢教授领衔推出《计算机系统实践》新形态、开源式、智慧型实战课程。本课程由国家超级计算长沙中心与湖南先进技术研究院联合打造,依托GitLink超算开源社区正式推出,由头歌教学研究中心提供技术支持。课程以计算机系统核心知识的贯通实践为主线,融合经典系统实验、VSCPU 硬布线控制器设计、VSPM 自创原型机实现、miniCC编译器等阶梯式项目,让你真正吃透位运算、CPU 设计、编译器等核心知识,将一个c代码编译到自己的CPU上运行,从零构建底层系统思维与工程创新能力。
无论你是在校学生、技术自学者,还是向系统软件、芯片、嵌入式转型的职场人,这门课都能帮你夯实底层根基,实现从 “会写代码”到“懂透系统” 的蜕变。
《计算机系统实践》课程网址:
https://gitlink.educoder.net/paths/fyka9x35
立即扫码学习课程
01
《计算机系统实践》课程主页
计算机系统底层机制、编译原理与CPU体系结构是计算机类专业的核心实践方向。本课程以计算机系统核心知识的贯通实践为主线,涵盖数据位运算、指令集架构、CPU设计与实现、编译器实现等关键知识。通过《深入理解计算机系统》经典实验、VSCPU硬布线控制器设计、VSPM自创原型机实现、miniCC编译器全流程开发等层层递进的实操项目,帮助学生打通从高级语言代码到硬件执行的完整链路,培养底层系统思维与工程创新能力。
02
本课程的教学目标如下:
目标1:理解数据位运算、高速缓存原理、内存管理、指令流水线等底层机制,能针对软硬件协同设计需求分析指令集架构对CPU性能的影响,运用系统能力对计算机系统及嵌入式领域的复杂问题进行正确建模与分析。
目标2:能够运用Java及编译原理知识,完成编译器(词法/语法/语义分析到代码生成)或CPU原型机(数据通路、控制单元、微程序)等模块的设计与实现,理解编译器优化与硬件并行度的权衡关系,具备独立开发与调试软硬件系统的能力。
目标3:能够分析从高级语言程序到处理器指令执行的全链路工程问题,给出软硬件协同设计、编译器与CPU联合优化的解决方案,完成从需求分析、模块划分到系统集成的完整项目落地。
03
课程特色
课程聚焦两大技术主线:
1、《深入理解计算机系统》经典实验
依托《深入理解计算机系统》(Computer Systems: A Programmer's Perspective, CS:APP)课程的经典实验体系,本方案采用由表及里、逐层递进的层次化教学设计,系统性地培养与夯实学习者的底层系统能力。具体而言:
在Data Lab中,学习者通过受限的位级运算操作(bit-level arithmetic and logic operations)实现整数与浮点数运算函数,深入理解IEEE 754浮点数编码规范、整数溢出语义及类型转换的底层机制,建立对数据在机器级表示的精确认知。
在Bomb Lab与Attack Lab中,前者以逆向工程(reverse engineering)为核心方法论,要求学习者对剥离符号表的二进制可执行文件进行静态分析与动态调试,逐层破解"二进制炸弹"(Binary Bomb)的各阶段密码,从而训练汇编级代码阅读与运行时行为推断能力;后者则在掌握栈缓冲区溢出(stack buffer overflow)原理的基础上,进一步实践代码注入攻击与返回导向编程(Return-Oriented Programming, ROP)等高级利用技术,深入剖析程序运行时安全机制、调用栈布局及内存安全(memory safety)的脆弱性本质。
在Cache Lab中,学习者需设计并实现一个高速缓存(Cache)模拟器,结合时间局部性(temporal locality)与空间局部性(spatial locality)原理,通过定量分析不同缓存容量、块大小、映射策略(如直接映射、组相联映射)及替换策略对缓存命中率(hit rate)与访问延迟的影响,建立对存储器层次结构(memory hierarchy)性能评估的系统化思维。
在Malloc Lab中,学习者基于给定的接口规范实现一个动态内存分配器(dynamic memory allocator),涉及显式/隐式空闲链表(explicit/implicit free list)管理、边界标记(boundary tags)、分离存储(segregated storage)等堆管理策略,深入理解虚拟内存空间布局、地址对齐约束及内部碎片(internal fragmentation)与外部碎片(external fragmentation)的权衡机制,从而掌握用户级内存管理的核心原理与工程实践。
2、计算机系统核心知识的贯通实践
课程首先从指令集结构入手,讲解指令格式、设计原则、冯·诺依曼结构、总线与CPU指令周期,建立完整的硬件抽象模型;通过8085微处理器及RISC-V等拓展案例,加深对CISC与RISC差异的理解。学习寄存器传输语言(RTL),掌握数字系统的形式化描述方法。
在此基础上,设计图灵完备的12条指令VSCPU,并以硬布线的方式,逐步完成状态图分析、ALU设计、数据通路构建、控制单元设计及控制信号生成,并进行仿真验证与FPGA演示;同时学习微程序控制器设计方法,涵盖微指令格式与微程序跳转逻辑,让学生亲手搭建一台可运行的处理器。课程提供完整设计文档、10个递进实验PPT(从开发板环境熟悉到组合部件、时序部件、控制信号产生,直至模型机集成与测试)以及多个FPGA演示视频(累加求和、流水线执行等)。拓展部分分析简单CPU的局限性,并深入对比8085CPU体系结构。课程配套课件与讨论题,便于复习与深度研讨。
VSPM 1.0 采用 Java 语言实现了 VSCPU 的体系结构模拟器,并基于 JavaCC(Java Compiler Compiler)工具构建了一个面向 C 语言子集的编译器原型 miniCC 1.0。该编译器可将符合文法规范的 C 语言源代码翻译为面向 VSCPU 指令集架构的自定义汇编指令序列,生成的目标代码既可在 VSPM 模拟器上执行,亦可部署于 VSCPU 硬件平台以获得运行结果。VSPM 1.0 与 miniCC 1.0 的代码规模均控制在千余行左右,且整体架构采用模块化关卡(Level-based)设计,通过渐进式难度递增有效降低认知负荷,平滑学习曲线。在此基础上,以支持函数调用机制为核心目标,对 VSPM 1.0 的指令集架构及运行时环境、以及 miniCC 1.0 的语法分析、语义检查与代码生成模块进行了系统性扩展。扩展后的系统延续了关卡式(Gamified Level-based)学习范式,使学习者能够在逐层递进的任务驱动下,逐步掌握函数定义、参数传递、栈帧管理、返回地址保存及控制流恢复等关键编译原理与计算机体系结构概念。
整体而言,本课程从位运算到编译器、从逻辑门到处理器,层层递进构建起完整的计算机系统实践体系,以系统能力培养为核心,帮助学习者全面掌握底层系统软件与CPU设计的核心能力,能够独立完成从编译器开发到处理器实现的全流程项目,为从事系统软件研发、芯片设计、嵌入式开发等方向打下扎实的技术基础,切实提升学生核心竞争力。
04
课程章节
第一章 综合实践
本章以经典系统编程实验与编译器开发为核心,依托Datalab、Bomb Lab、Attack Lab、Cache Lab及Malloc Lab等CS:APP实验,从位运算、逆向工程到缓存模拟与内存分配,逐层深入程序底层行为与漏洞机理。
1-1 课程实验
1-1-1《深入理解计算机系统》之datalab实验(一)
1-1-2《深入理解计算机系统》Lab2:Bomb Lab
1-1-3《深入理解计算机系统》:Attack Lab
1-1-4ICS-LAB6 Cachelab高速缓冲器模拟
1-1-5《深入理解计算机系统》Lab5:Malloc Lab
1-2 拓展实验
1-2-1 符号解析
1-2-2 重定位
1-2-3 elf深入理解——获得最小hello world
第二章 CPU设计
本章围绕指令集架构、RTL描述与CPU原型机设计展开,从指令格式、冯·诺依曼结构到CPU指令周期建立硬件抽象模型,通过VSCPU的硬布线控制与微程序控制器设计,逐步完成状态图分析、ALU、数据通路、控制单元及控制信号生成与验证;同时依托VSPM自创原型机,提供完整设计文档、递进实验PPT及FPGA板级演示,让学生亲手搭建可运行的处理器,并结合8085体系结构对比分析,培养从指令集设计到硬件实现的完整CPU工程能力。
2-1 指令集结构及计算机硬件基本组成
2-1-1 指令集结构概述
2-1-2 指令格式概述
2-1-3 拓展-指令格式设计原则
2-1-4 指令集结构设计原则
2-1-5 自学-RSCPU的指令集结构
2-1-6 拓展-8085微处理器的指令集结构
2-1-7 冯诺依曼结构
...
(其他4个视频详见平台)
2-2 RTL语言及其数字系统描述
2-2-1 寄存器传输语言1
2-2-2 寄存器传输语言2
2-3 CPU设计规范
2-3-1 CPU设计规范
2-4 VSCPU设计
2-4-1 硬布线方式-状态图分析
2-4-2 硬布线方式-ALU设计
2-4-3 硬布线方式-数据通路设计
2-4-4 硬布线方式-控制单元设计
2-4-5 硬布线方式-控制信号的产生
2-4-6 硬布线方式-设计验证&演示
...
(其他4个视频详见平台)
2-5 VSPM(自创原型机)的设计与实现
2-5-1 模型机的设计
2-5-2 PPT课件
2-5-2-1 实验一 熟悉鲲鹏Pro开发板的运行环境
2-5-2-2 实验二 模型机组合部件的实现(一)
2-5-2-3 实验二 模型机组合部件的实现(二)
2-5-2-4 实验四 模型机时序部件的实现(一)
2-5-2-5 实验五 模型机时序部件的实现(二)
2-5-2-6 实验六 控制信号产生逻辑的实现
...
(其他4个课件详见平台)
2-5-3演示视频
2-5-3-1 FPGA板上累加求和演示
2-5-3-2 流水线模型机执行演示
2-5-3-3 模拟器演示
2-5-3-4 模型机_累加求和
2-5-3-5 模型机执行演示
2-6 拓展-简单CPU的缺点&8085CPU
2-6-1 简单CPU的缺点&8085CPU
2-7 本章课件
2-7-1 指令集结构与计算机组成
2-7-2 CPU设计1-寄存器传送语言
2-7-3 CPU设计2-非常简单CPU设计
2-7-4 CPU设计3-微序列控制单元设计
2-8 本章讨论题
2-8-1 讨论:CPU设计
第三章 VSPM与miniCC
通过编译器、VSPM 模拟器的递进设计与优化,覆盖词法分析、语法分析、语义分析、中间代码生成与目标代码生成及指令级模拟执行的完整流程,帮助学生打通从源代码到可执行文件的编译—链接—执行全链路,夯实系统软件开发与调试能力。
3-1 VSPM1.0
3-1-1 VSPM
3-2 miniCC1.0
3-2-1 非常简单编译器c1
3-3 VSPM2.0
3-3-1 VSPM2.0
3-4 miniCC2.0
3-4-1 简单的编译器c2
3-5 miniCC3.0
3-5-1 编译器c3
学习导航
(1)课程网址:
https://gitlink.educoder.net/paths/fyka9x35
对于学生,点击上面链接,可进入对应页面,在章节目录下点击“开始实战”即可进行关卡实践。左侧提供了相应的任务要求,包括详细的知识点讲解,右侧进行实验操作。
教师团队
杨科华
赵欢
赵欢,湖南大学二级教授、博士生导师。国家万人计划教学名师,宝钢优秀教师特等奖、霍英东教育基金会教育教学奖获得者。牵头的教学成果获2022年国家级教学成果二等奖,国家级一流本科专业、国家级一流本科课程、国家精品课程和国家级精品资源共享课负责人,主编出版国家级规划教材8本。带领团队长期致力于学生系统能力培养教育教学改革,教育部首批虚拟教研室负责人。
肖雄仁
刘彦
刘彦,湖南大学副教授,博士生导师,国家一流课程《计算机系统》骨干教师,嵌入式与网络计算湖南省重点实验室副主任,主要从事计算机体系结构、面向人工智能的系统级优化等研究,发表高水平学术论文10余篇,主持或完成国家自然科学基金3项、湖南省自然科学基金2项,获湖南省科技进步一等奖和教育部科技进步二等奖各一次。
往期推荐
点击阅读原文 立即学习课程
点击“阅读原文”,加入CCF。
