跳转至

📔 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. 课程你需要知道的内容?

主要介绍了课程的安排和作业提交等。