📔 Lecture01 Introduction and Basics
更新日期:2023.11.02
1. 机器结构的思考¶
-
CS61C is NOT about C Programming,是一门关于软硬件接口相关的课程。
- 对于这门课程来说,可以帮助程序员了解如何尽可能获得高性能。
-
和其他的语言(Python、Java等)相比,C语言更接近底层硬件
- 可以使用高层次的角度去讨论硬件的功能。
- 允许程序员可以通过底层硬件并行性来实现所需要的高性能指标。
-
对于车机、手机或者边缘设备等,只要是用户视角下的操作,都属于前端部分,但运算或者一些计算后台是后端部分。
1.1 课程不同时期的机器结构¶
-
早期的课程从自顶向下的角度:
- 课程CS61C从顶层通过C、编译器、汇编器到机器代码,通过指令集架构等各个抽象层角度,将其作为了软件和硬件之间的水平分界线。
-
现目前课程的角度,硬件位于右侧:
- 此时有很多并行性的设计。
- 可以同时对多个数据单元进行分块处理,通过使用指令并行设计,让很多不同的程序来进行执行操作。
- 例如:可以同时唤醒多台机器。
2. 计算机体系结构的6个伟大构想¶
- Abstraction (Layers ofRepresentation/Interpretation)
- Moore’s Law
- Principle of Locality/Memory Hierarchy
- Parallelism
- Performance Measurement &Improvement
- Dependability via Redundancy
2.1 抽象层(表示/解释层)¶
- 通过维护不同的抽象层,将相关的都传递到各自的上层。
- 对于微处理器内部的电路如何工作,我们并不需要去关注。
2.2 摩尔定律¶
在1965年时,Moore观察到,每个芯片的元器件数量(主要是元件和晶体管)在每一代芯片技术中都翻一番。并预测了未来会继续翻一番。从而后来创立了Intel公司。
在Jim Gray(图灵奖得主),在数据存储的角度,提出了“数据有多远(数据读取的延迟)?”。对于数据延迟(计算机系统从不同位置获取数据所需的时间,单位:ns),通过类比视图的方式如下:
2.3 局部性/内存层次结构原理¶
对于一些内容,也可以阅读CSAPP的存储器部分。
在微处理器芯片上有大量非常快的可用存储器,存储器都比较昂贵,而且容量较小。从CPU开始,Cache到磁盘驱动器,在每一层中,内存量都增加了大约一个或者更大的数量级。价格变得更便宜。但同时对应的读取速度也会慢相应的一个数量级。
2.4 并行性¶
计算机中的许多事情都是并行执行(同时发生)的。如下是流水线处理器的执行过程:
其中有三个指令中在时间片3的处理器上同时执行。
对于并行的方式有很多种,例如线程级别并行(多线程)。通过计算机硬件、计算机运行多个软件线程,在没有多个执行单元情况下,通过执行多个,从而来运行完整的程序。
对于一堆的文件要处理时,通过并行排序的方式将文件(数据)分发给下级。通过执行同样的方式(算法)进行处理,这就是数据级并行的原理。
2.5 性能衡量与改进¶
将应用程序和硬件进行匹配,从而达到想要的计算机系统的量化指标:
- Locality
- Parallelism
- 构建一些特殊的硬件功能(Special hardware features, like specialized instructions(e.g., matrix manipulation))
但是现在的计算机,衡量性能的一个重要指标:延迟和吞吐量(Latency/Throughput)
。
- 对于延迟来说,主要讨论完成任务所需的时间。
- 对于吞吐量,讨论在给定时间内可以完成的任务量。
2.6 通过冗余实现可靠性¶
就目前最火的概念:自动驾驶。这些新的系统往往都需要满足某些特定的标准:
- 冗余原则
- 表明一个失败的部分并不会影响整个系统的崩溃。
对于计算机系统来说,是如何随着时间的推移提高可靠性?
- 摩尔定律
- 增加晶体管密度可以降低冗余成本
就目前的冗余例子来看,从数据中心到存储到内存,都是利用冗余性的方式来解决所谓的可靠性:
-
冗余数据中心
- 即便是遇到不可抗性的因素,导致1个数据中心丢失,也不会影响互联网服务的在线。
-
冗余磁盘
- 丢失1个磁盘但不会完全丢失数据(冗余独立磁盘阵列/RAID系统)。
-
冗余内存位
- 丢失1个bit但不会丢失数据(纠错码/ECC内存)。
对于每个领域都需要异构系统:比如Apple 13等差异化系统的大量开发,它有多个处理器核心、GPUs、加速器、接口、内存。
3. 课程你需要知道的内容?¶
主要介绍了课程的安排和作业提交等。