《CSDiy》笔记
计算机系统认知的鸿蒙初辟:从CS110到Nand2Tetris的融会贯通
在探寻计算机系统奥秘的旅程中,《CSDiy》如同一盏明灯,指引着我们从斯坦福CS110的宏观视野,逐步深入到Nand2Tetris的微观世界。CS110以其对大型系统设计的精辟见解、对跨机器软件构建的深刻剖析以及对并行计算的独到理解,为我们描绘了一幅波澜壮阔的系统工程画卷。课程不仅涵盖了程序与计算机系统组件的映射关系,还深入探讨了程序行为与执行的内在逻辑,更重要的是,它教会我们如何在复杂的设计中权衡利弊,编写跨越物理界限的软件,以及如何在单机上实现并行计算的卓越性能。通过每周精心设计的实验,我们得以亲身实践,逐步掌握计算机系统的各个方面,而公开的答案则如同灯塔,照亮我们前进的道路,确保我们对关键知识点的理解深刻而透彻。
如果说CS110是鸟瞰全局,那么Nand2Tetris则是一次精妙绝伦的“庖丁解牛”。这门课程以其独特的魅力,引领我们从最基础的与非门出发,一步一个脚印地构建出一台功能完备的计算机,并在其上运行我们自己编写的俄罗斯方块游戏。这种“从零到一”的体验,不仅让我们对计算机的体系结构有了全局且深刻的理解,更让我们体会到了计算机的优雅与神奇。课程分为硬件和软件两个部分,硬件部分让我们沉浸在0和1的世界中,用逻辑电路搭建CPU,运行简易汇编代码;软件部分则引导我们编写编译器,将Jack高级语言编译为虚拟机字节码,再翻译为汇编代码,最终开发出一个简易的操作系统,实现图形界面的输入输出。整个过程宛如一场精密的交响乐,每一个音符都由我们亲自谱写,最终汇聚成一曲动人心弦的乐章。例如,我们可以想象一下,用自己搭建的CPU运行俄罗斯方块游戏,那种成就感是无与伦比的。就像用乐高积木搭建了一个可以演奏音乐的机器人🤖,既有趣又充满挑战。
从C语言的精妙到RISC-V汇编的底层探索:CS61C的深度解析
在掌握了CS110的系统级思维和Nand2Tetris的硬件构建之后,UC Berkeley的CS61C课程则带领我们进一步深入计算机的硬件细节,探索C语言如何一步步转化为RISC-V汇编并在CPU上执行的奥秘。与Nand2Tetris相比,CS61C在难度和深度上都有了显著的提升,涵盖了流水线、Cache、虚存以及并发等核心概念。课程的Project也极具创新性和趣味性,例如,用C语言编写“Game of Life”游戏,用RISC-V汇编编写神经网络来识别MNIST手写数字,用Logisim搭建二级流水线的CPU,以及使用OpenMP和SIMD等方法并行优化矩阵运算,实现一个简易的Numpy。这些Project不仅锻炼了我们对汇编代码的理解和运用,更让我们深刻体会到了计算机体系结构的精妙之处。我们可以想象一下,用自己编写的神经网络识别手写数字,就像训练了一个人工智能助手🎓,能够识别我们的笔迹,这种感觉既神奇又充满未来感。
数字电路的精雕细琢:ETH Zurich课程的实践与创新
如果说CS61C侧重于软件与硬件的结合,那么ETH Zurich的“Digital Design and Computer Architecture”课程则更加专注于数字电路的精雕细琢。这门课程由体系结构领域的大牛Onur Mutlu亲自授课,从晶体管、逻辑门开始,一直讲解到微架构、缓存和虚拟内存,还会介绍体系结构领域最新的研究进展。课程共有9个lab,使用Basys 3 FPGA开发板和Xilinx公司的Vivado软件进行电路设计,从组合电路和时序电路开始,一直Verilog语言编写一个CPU,就像用乐高积木搭建了一个可以运行程序的机器人🤖,既充满挑战又充满乐趣。这门课程不仅让我们掌握了理论知识,更让我们具备了实践能力,为我们未来的职业发展奠定了坚实的基础。