CS61C: Great Ideas in Computer Architecture
课程简介
- 所属大学:UC Berkeley
- 先修要求:CS61A, CS61B
- 编程语言:C
- 课程难度:🌟🌟🌟🌟
- 预计学时:100 小时
伯克利 CS61 系列的最后一门课程,深入计算机的硬件细节,带领学生逐步理解 C 语言是如何一步步转化为 RISC-V 汇编并在 CPU 上执行的。和 Nand2Tetris 不同,这门课 在难度和深度上都会提高很多,具体会涉及到流水线、Cache、虚存以及并发相关的内容。
这门课的 Project 也非常新颖有趣。Project1 会让你用 C 语言写一个小程序,20 年秋季学期是著名的游戏 Game of Life。Project2 会让你用 RISC-V 汇编编写一个神经网络,用来 识别 MNIST 手写数字,非常锻炼你对汇编代码的理解和运用。Project3 中你会用 Logisim 这个数字电路模拟软件搭建出一个二级流水线的 CPU,并在上面运行 RISC-V 汇编代码。Project4 会让你使用 OpenMP, SIMD 等方法并行优化矩阵运算,实现一个简易的 Numpy。
总而言之,这是个人上过的最好的计算机体系结构的课程。
课程资源
- 课程网站:https://cs61c.org/su20/
- 课程视频:B 站, Youtube
- 课程教材:无
- 课程作业:11 个 Lab,4 个 Project,具体要求详见课程网站
资源汇总
@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 PKUFlyingPig/CS61C-summer20 - GitHub 中。
CS61C: Great Ideas in Computer Architecture
Descriptions
- Offered by: UC Berkeley
- Prerequisites: CS61A, CS61B
- Programming Languages: C
- Difficulty: 🌟🌟🌟🌟
- Class Hour: 100 hours
This is the last course in Berkeley's CS61 series, which dives into the internal of computer architecture and will make you understand how the C language is translated into RISC-V assembly language and executed on the CPU. Unlike Nand2Tetris, this course is much more difficult and more in-depth, covering pipelining, cache, virtual memory, and concurrency-related content.
The projects are very innovative and interesting. Project1 is a warmup assignment in C. In 2020Fall, you will implement the famous Game of Life. Project2 requires you to write a fully-connected neural network in RISC-V assembly to classify handwritten digits in MNIST dataset, which is a great exercise to write assembly code. In Project3, you will use Logisim, a digital circuit simulation software, to build a two-stage pipeline CPU from scratch and run RISC-V assembly code on it. In Project4 you will implement a toy version of Numpy, using OpenMP, SIMD, and other techniques to speed up matrix operations.
In a word, this is the best computer architecture course I have ever taken.
Course Resources
- Course Website: https://cs61c.org/su20/
- Recordings: Youtube
- Textbook: None
- Assignments: 11 Labs, 4 Projects, the course website has specific requirements
Personal Resources
All the resources and assignments used by @PKUFlyingPig in this course are maintained in PKUFlyingPig/- summer20 - GitHub
Digital Design and Computer Architecture
课程简介
- 所属大学:ETH Zurich
- 先修要求:CS50 或同阶课程,最好有 C 语言基础。
- 编程语言:C,Verilog,MIPS 汇编,LC3 汇编
- 课程难度:🌟🌟🌟
- 预计学时:100 小时
体系结构领域的大牛 Onur Mutlu 来教你数字电路和计算机体系结构。课程完全从计算机设计的角度出发,从晶体管、逻辑门开始,一直讲解到微架构、缓存和虚拟内存,还会介绍 很多体系结构领域最新的研究进展。课程共有 9 个 lab,使用 Basys 3 FPGA 开发板(可自行购买)和 Xilinx 公司的 Vivado 软件(可在官网免费下载使用)进行电路设计,从组合电路 和时序电路开始,一直到最后部署一个完整的 CPU。课程资料除了 lab 答案和当期考试答案之外全部开源,学完之后你可以掌握计算机相关的数字电路,Verilog 硬件描述语言,MIPS 与 C 之间的转换关系,MIPS 单周期多周期流水线 CPU 的设计和性能分析,缓存,虚拟内存等重要概念。
课程资源
- 课程网站:https://safari.ethz.ch/digitaltechnik/spring2020/
- 课程视频:https://www.youtube.com/playlist?list=PL5Q2soXY2Zi_FRrloMa2fUYWPGiZUBQo2
- 课程教材1:Patt and Patel, Introduction to Computing Systems
- 课程教材2:Harris and Harris, Digital Design and Computer Architecture (MIPS Edition)
- 课程实验:9 个实验从零开始设计 MIPS CPU,详见课程网站
Digital Design and Computer Architecture
Descriptions
- Offered by: ETH Zurich
- Prerequisites: CS50 or same level course; Better have a basic knowledge of C
- Programming Languages: C, Verilog, MIPS, LC3
- Difficulty: 🌟🌟🌟
- Class Hour: 100 hours
In this course, Onur Mutlu, a great expert in the field of Computer Architecture, will teach you about digital circuits and computer architecture. The course is entirely from the perspective of a computer designer, starting with transistors and logic gates and extending to microarchitecture, caches, and virtual memory. It also covers many of the latest research advances in the field of computer architecture. After learning, you will master digital circuits, hardware description language Verilog, MIPS instruction set, CPU design and performance analysis, pipelining, cache, virtual memory, and so on.
There are 9 labs in the course. You will use the Basys 3 FPGA board and Vivado to design and synthesize the circuits, starting from combinational and sequential circuits, and eventually assembly into a complete CPU. Except for assignment solutions, all the course materials are open source.
Course Resources
- Course Website: https://safari.ethz.ch/digitaltechnik/spring2020/
- Recordings: https://www.youtube.com/playlist?list=PL5Q2soXY2Zi_FRrloMa2fUYWPGiZUBQo2
- Textbook1: Patt and Patel, Introduction to Computing Systems
- Textbook2: Harris and Harris, Digital Design and Computer Architecture (MIPS Edition)
- Assignments: refer to the course website