CS自学指南:ETH Zurich DDCA 数字设计与计算机体系结构,从晶体管到完整 MIPS CPU 的完整学习路线
本文基于 CS自学指南 仓库中的课程文档 DDCA(英文版) 与 DDCA(中文版),系统拆解 ETH Zurich(苏黎世联邦理工学院)这门面向自学者完全开源的体系结构课程:它讲什么、9 个 FPGA 实验如何从零拼出一台完整的 MIPS CPU、配套教材如何选择,以及它在自学体系中的定位。读完之后,你可以判断这门课是否匹配你的先修背景,准备好 Vivado 与 Basys 3 开发板等工具,并规划出约 100 小时的学习路径。
一、课程概览:以计算机设计者视角贯穿软硬边界
DDCA(Digital Design and Computer Architecture)由 ETH Zurich 开设,授课教师是体系结构领域的知名专家 Onur Mutlu。根据课程文档的设定,它的基本属性如下:
- 所属大学:ETH Zurich
- 先修要求:CS50 或同级别的计算机导论课程;最好具备 C 语言基础
- 涉及的语言/工具:C、Verilog、MIPS 汇编、LC3 汇编
- 课程难度:🌟🌟🌟(仓库课程页中的三星难度,介于零门槛的入门课与伯克利 CS61C 这类四星专业课之间)
- 预计学时:100 小时
- 开源程度:除实验答案与当期考试答案外,课程资料全部开源
这门课与普通"计算机组成原理"式课程最大的区别在于视角:它完全从计算机设计者的角度出发,从晶体管、逻辑门这样的物理起点讲起,一路推进到微架构、缓存(Cache)和虚拟内存,并且还会介绍体系结构领域的最新研究进展。也就是说,它的目标不是让你"理解 CPU 大概是怎么工作的",而是让你能够亲手设计并实现一台 CPU。
课程语言列表中同时出现了 MIPS 与 LC3,值得注意:从课程与教材的对应关系看(详见后文教材一节),LC3 大概率对应 Patt & Patel 教材中使用的教学指令集 LC-3,主要用于课程理论部分;而真正落在 FPGA 实验台上的则是 MIPS 指令集。
二、知识体系:从晶体管到虚拟内存的完整链条
结合课程文档的描述,可以把 DDCA 的知识脉络整理为如下链条,这也是自学时建议的推进顺序:
| 知识模块 | 核心内容 | 典型产出 |
|---|---|---|
| 晶体管与逻辑门 | 数字电路基础,从器件到门级电路 | 会用门电路搭建基本逻辑 |
| 组合与时序电路 | 加法器、寄存器、计数器、状态机 | 时序电路设计,Verilog 建模 |
| 硬件描述语言 | Verilog 语法、仿真与综合 | 可综合的 RTL 代码 |
| 指令集与汇编 | MIPS 指令集,C 与 MIPS 汇编之间的转换关系 | 手写/阅读 MIPS 汇编的能力 |
| CPU 数据通路与控制 | 单周期 CPU、多周期 CPU | 完整的 MIPS CPU 实现 |
| 流水线与性能分析 | 流水化改造、冒险处理、性能度量 | 流水线 CPU 及性能分析 |
| 存储层次 | Cache 的设计原理 | 缓存相关概念与实现 |
| 虚拟内存 | 地址翻译、虚拟内存机制 | 对现代内存子系统的整体理解 |
| 前沿研究 | 体系结构领域的最新研究进展 | 建立科研视野 |
中文版课程文档对学完后的能力有明确表述:掌握数字电路、Verilog 硬件描述语言、MIPS 与 C 之间的转换关系、MIPS 单周期/多周期/流水线 CPU 的设计和性能分析、缓存、虚拟内存等重要概念。这条"器件 → 电路 → 指令集 → CPU → 存储层次"的主线,正是现代计算机体系结构课程的标准骨架,而 DDCA 的特点是把这条骨架全部落到了可运行的硬件上。
三、9 个实验:用 FPGA 开发板从零拼出一台 MIPS CPU
DDCA 的实战部分由 9 个 lab 组成,是这门课区别于纯理论课程的核心。工具链与流程如下:
- 硬件载体:Basys 3 FPGA 开发板(文档注明可自行购买)。所有电路最终部署到真实 FPGA 芯片上运行,而不是停留在软件仿真里;
- EDA 工具:Xilinx 公司的 Vivado(可在官网免费下载使用),用于 Verilog 代码的设计、仿真与综合,生成可在 FPGA 上运行的比特流;
- 推进路线:从组合电路和时序电路开始,逐级搭建,最终组装出一个完整的 MIPS CPU。中文版文档的概括是"9 个实验从零开始设计 MIPS CPU"。
从课程文档给出的"starting from combinational and sequential circuits, and eventually assembly into a complete CPU"可以推断,实验的难度曲线是:先让学习者独立完成门级/部件级的组合与时序电路(如加法器、ALU 部件等),再组合成 CPU 的数据通路与控制逻辑,最后交付一台可运行的 CPU。
关于开源边界,文档表述得很清楚:除实验(及考试)答案外,全部课程资料开源——讲义、笔记、课程代码框架等都可以自由获取和用于学习,唯独不放出作业答案,这一点在自学时需要自行寻找讨论渠道或独立完成。
对自学者而言有两个实操要点:
- 预算:Vivado 免费,主要成本是一块 Basys 3 开发板,这是动手前需要准备的唯一硬件;
- 时间:9 个实验加上约 100 小时的理论内容,建议按一学期的节奏(每周固定投入 3~4 小时)推进,FPGA 实验的调试时间往往比预期长,尤其是时序电路与流水线的部分。
四、教材选择:两本经典互为补充
课程文档列出了两本指定教材:
- Patt and Patel, Introduction to Computing Systems:覆盖面较广的计算机体系结构与汇编编程教材,课程语言列表中的 LC3 即与其使用的教学指令集 LC-3 对应,主要支撑课程中汇编与体系结构理论部分的学习;
- Harris and Harris, Digital Design and Computer Architecture (MIPS Edition):书名与课程名几乎一致,且明确是 MIPS 版,从课程与教材的对应关系看可以推断,它是与 FPGA 实验线(Verilog 搭建 MIPS CPU)对齐的核心教材。该书的中文译本为《数字设计和计算机体系结构(原书第2版)》,中文自学者可以直接采用译本降低语言门槛。
两本书的分工可以这样理解:Harris & Harris 负责"数字设计 + MIPS CPU 设计"这条硬核主线,Patt & Patel 负责汇编编程与更完整的计算机系统视角。自学时不必把两本书都从头读到尾,以课程讲义为主线、按需查阅对应章节即可。
五、在自学路线中的定位:DDCA 前后接哪些课
在 CS自学指南 的整体课程体系中,体系结构板块共收录了四门课程(导航见 mkdocs.yml 的"体系结构"一节)。DDCA 在其中的位置可以从仓库内其他课程文档直接对比得出:
| 课程 | 开设机构 | 难度 | 预计学时 | 实践载体 | 实验规模 |
|---|---|---|---|---|---|
| Nand2Tetris | 希伯来大学(Coursera) | 🌟🌟🌟 | 40 小时 | 模拟器,无硬件要求 | 10 个 Project |
| DDCA(本文主题) | ETH Zurich | 🌟🌟🌟 | 100 小时 | Basys 3 FPGA + Vivado | 9 个 lab |
| CS61C | UC Berkeley | 🌟🌟🌟🌟 | 100 小时 | Logisim 等模拟工具,RISC-V | 4 个 Project |
| ETH CA | ETH Zurich | 🌟🌟🌟🌟 | 70 小时+ | Verilog + C 周期精确模拟器 | 5 个 Project |
几个关键结论:
- 入门衔接:如果你的目标是零门槛先建立全局观,仓库推荐先学 Nand2Tetris(从与非门造计算机,40 小时即可走完);DDCA 则要求 CS50 级别先修 + C 基础,定位是"有编程基础后真正动手设计 CPU"的一步;
- 同阶替代:CS61C(伯克利)与 DDCA 主题高度重叠(都是流水线、Cache、虚存 + 搭 CPU),但 CS61C 使用 RISC-V 且难度标注为四星;DDCA 用 FPGA 上真实硬件、且实验数量更多(9 个),偏好"真板子"体验的自学者可以选 DDCA;
- 进阶出口:仓库中的 ETH Computer Architecture 明确标注其先修要求就是 DDCA,由同一位教授 Onur Mutlu 授课,内容深入内存子系统、并行与异构计算等前沿方向。也就是说,DDCA 是这条"ETH 体系结构双课"路线的第一课,学完后可以直接衔接 CA 继续深造;
- 与系统课程的关系:体系结构之后通常进入操作系统(如 MIT 6.S081)或系统入门课 CMU 15-213 CSAPP,DDCA 中建立的 MIPS 汇编、CPU 设计与存储层次知识是它们的直接前置。整体选课逻辑可参考仓库的 CS 学习规划 中"体系结构"部分的入门课/专业课划分。
六、课程资源与学习建议
课程文档中列出的资源清单如下(具体访问地址以仓库课程页为准,这里说明其用途):
- 课程网站:ETH 官方课程页面,文档中同时收录了 2020 年与 2023 年两个学期的版本,是讲义、lab 说明与资料的总入口,9 个实验的具体要求也需在该网站查阅;
- 课程录影:官方在 YouTube 提供完整 lecture 播放列表;中文版文档另收录了 B 站搬运的 2020 年版本视频,方便国内网络环境下观看;
- 教材:前述 Patt & Patel 与 Harris & Harris 两本;
- 实验:9 个 lab,题目与说明详见课程网站。
基于以上内容,给自学者的执行建议是:
- 先备工具再开课:注册安装 Vivado,下单一块 Basys 3 开发板,跑通一次空工程的综合下载流程,确认硬件链路没问题;
- 讲义与视频并行:每周按课程网站公布的讲义推进,配合对应 lecture 视频;实验题目以课程网站的 lab 页面为准(实验不公开答案,需独立完成);
- 教材按需查:以课程讲义为主线,Harris & Harris(中译本《数字设计和计算机体系结构(原书第2版)》)用于数字设计与 MIPS CPU 部分的深入,Patt & Patel 用于汇编编程与 LC-3 部分;
- 学完即衔接:若希望继续向存储系统与前沿方向深入,直接接仓库收录的 ETH CA;若转向操作系统,则可进入 MIT 6.S081 或 UCB CS162 的练习。
七、小结
DDCA 是 CS自学指南 体系结构中"重实践"路线的代表:它用 100 小时、9 个 FPGA 实验,把学习者从晶体管一路带到完整的 MIPS CPU,并且课程资料除答案外全部开源。仓库文档 DDCA.en.md 与 DDCA.md 记录了课程的全部关键信息(先修、语言、难度、学时、工具链与资源),配合本文给出的知识链条、教材分工与前后课程衔接(Nand2Tetris → DDCA → ETH CA),即可作为一门从零设计 CPU 的完整自学方案来执行。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0623
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00