课程总览
CS 61C 课程名称是 Great Ideas in Computer Architecture (Machine Structures),毫无疑问核心内容就是这些 ideas,6 个 ideas 内容分别如下
- Abstraction
- Moore's Law
- Principle of Locality/Memory Hierarchy
- Parallelism
- Performace Measurement & Improvement
- Dependability via Redundancy
其中的重点是思想一(抽象)和思想三(局部性和Memory层次结构)。
一、万物皆可用0\1表示!
lec01: bits can represent anything. N bits == 2^N things.
- 十进制(Decimal)、二进制、十六进制(Hex)和八进制(Octal)的由来:
当我们用十根手指数数时,就是十进制;当我们只有两个手指时,数的就是二进制咯;同理,当我们只有十六根手指时,,,,是个八爪鱿鱼???
- sign and unsigned 以及补码(Two's Complement)和反码(One's Complement)。
- 如果你想要提升对位的理解,建议做一下CSAPP的datalab.
计算机是怎样进行乘法和除法的呢?
- 乘法——很简单,累加即可,但怎样提升计算速度呢?
- 除法——乘法的逆运算。其实,我们只需用小学老师叫我们的计算方法,就可以实现了!(算法)
lec05 C Memory Management
- 学习C,就是了解计算机系统的结构,在本讲,你将手动管理内存,千万不要让内存泄漏哦!
-
Valgrind:检查内存泄漏
从两个视角,理解内存分配:
- .c文件:理解为什么Heap需要malloc与free,Stack为什么不用?malloc和free的底层是什么?
- .s文件: 为什么递归时要注意寄存器的变化,到底是caller,还是callee?如何区分两者?
局部性原则/内存层次结构
不同层次的Memory查找东西的时间不同,以下的类比可谓是经典。
从lec07开始,从上至下介绍Memory Hierarchy(这将贯穿整门课程)和RISC-V指令集。
随着,内存层次结构和RISC-V指令的深入,为了更好的理解计算机是怎样运行的和构造的,我们实现了做一个CPU的项目(本节课,比做的项目)。
记得,jyy说过,任何真正的理解都应该用代码实现。同理,检验你是否理解了计算机的组成,就是把“CPU”做出来!