Skip to content

计算机组成与设计

1. 计算机的组成与架构

  • 解释:计算机由五大主要部件组成:输入、输出、存储器、控制器和运算器。它们通过总线进行连接和通信。
  • 简化:计算机是一台可以接收输入、进行计算、存储信息并输出结果的设备。所有操作都通过硬件和软件来协作完成。
  • 查漏补缺:理解不同计算机架构(如冯·诺依曼架构和哈佛架构)如何影响数据流和性能。

概念

  1. 输入设备: 将外部信息转换为计算机可以理解的数字信号。比如:键盘、鼠标、扫描仪、摄像头等。
  • 数据流:用户通过输入设备提供指令或数据,数据通过总线传输到存储器或直接送入控制器进行处理。
  1. 输出设备: 将计算机处理后的数字信号转换为人类可以理解的形式,如显示、声音等。比如:显示器、打印机、扬声器等。
  • 数据流:CPU 处理后的结果通过总线送到输出设备,呈现给用户。
  1. 存储器: 存储数据和指令,分为主存储器(RAM)辅存储器(硬盘等)
  • 工作流程:存储器保存当前正在执行的程序和数据。当需要处理时,数据从存储器传递到 CPU 进行运算,运算结果可以再次存储或发送到输出设备。
  1. 控制器: 负责控制和协调计算机的所有操作,指挥各组件按照指令的要求执行任务。它通过 指令周期(取指、译码、执行) 控制执行流程。
  • 具体流程:
    • 取指(Fetch):从存储器中获取指令。
    • 译码(Decode):将指令翻译为 CPU 可以执行的操作。
    • 执行(Execute):根据译码的结果,执行相关操作。
  1. 运算器(ALU - Arithmetic Logic Unit): 负责执行所有的算术和逻辑运算,如加法、减法、与或非操作等。
  • 数据流:存储器将数据送到 ALU 进行计算,运算结果传回存储器或发送到输出设备。

程序执行流程图:

  • 程序加载:程序从存储设备(硬盘、SSD 等)加载到主存储器(RAM)。
  • 取指(Fetch):CPU 从内存中获取下一条指令。
  • 译码(Decode):CPU 对取到的指令进行解析,确定执行的类型(例如运算、跳转、内存访问等)。
  • 执行(Execute):执行指令,可能是算术运算、逻辑运算、内存操作、或控制跳转。
  • 存储结果(Write Back):如果指令有结果需要保存,CPU 将结果写回寄存器或存储器。
    • 概念:寄存器是 CPU 内部的高速存储单元,用于临时存放数据和指令。它们通常比内存(RAM)快很多。
    • 常见寄存器:程序计数器(PC)、指令寄存器(IR)、数据寄存器(DR)、累加器(ACC)等。
  • 检查是否结束:CPU 检查程序是否还有指令未执行。如果有,则转到下一个指令,继续执行。
  • 程序结束:所有指令执行完毕,程序结束。

2. 数据表示

  • 解释:计算机以二进制形式(0 和 1)存储和处理数据。常见的数值表示包括无符号整数、补码、浮点数等。
  • 简化:计算机只能理解“开”和“关”,因此所有数据都用 0 和 1 来表示。不管是数字、字符,还是图像,都被转换成二进制。
  • 查漏补缺:理解不同进制之间的转换(如二进制、十六进制)、浮点数的 IEEE 标准。

概念

  • 原码(True form): 原码是整数的二进制表示,最高位用来表示符号(0 表示正数,1 表示负数),其余位表示数值的大小。
    • 例如:+7 的原码是 0000 0111,-7 的原码是 1000 0111
  • 反码(Ones' complement): 反码是在原码的基础上,正数的反码与原码相同,负数的反码则是原码除符号位外,各位取反。
    • 例如:-7 的反码是 1111 1000
  • 补码(Twos' complement): 补码是反码加 1,正数的补码与原码相同,负数的补码是在其反码的基础上加 1。
    • 例如:-7 的补码是 1111 1001

2.1 原码、反码、补码的对比

类型最高位正数表示负数表示0 的表示计算特点+7 的表示-7 的表示
原码符号位与二进制相同符号位为 1,数值位不变+0 和 -0加减法复杂01111111
反码符号位与二进制相同数值位取反+0 和 -0需要进位循环01111000
补码符号位与二进制相同反码 + 1只有一个 0加减法统一01111001

正数在原码、反码和补码下都相同,原因是:
1)符号位为 0,表示正数,无需取反或做其他操作。
2)数值部分直接使用正数的二进制形式。

2.2 总结

  • 原码:直观但运算复杂,存在 -0 和 +0 的问题。
  • 反码:消除了运算中的符号处理问题,但仍存在 -0 和 +0 的问题。
  • 补码:消除冗余零,并且将加法和减法统一为加法运算,是现代计算机系统中广泛使用的整数表示方式。

2.3 其他

  • IEEE 754 浮点数表示
  • BCD(Binary-Coded Decimal,二进制编码十进制)
  • 移码(Excess-N Code / Bias Representation)
  • 海明码(Hamming Code)
  • 奇偶校验(Parity Check)

3. 指令集架构 (ISA)

  • 解释:指令集架构是计算机可以理解并执行的基本操作的集合。它决定了 CPU 可以执行哪些指令,如加法、存储、跳转等。
  • 简化:指令集是 CPU 的“语言”。它规定 CPU 能做的所有事情,比如“加法”、“复制数据”、“跳转到某个位置继续运行”。
  • 查漏补缺:熟悉 RISC(精简指令集)和 CISC(复杂指令集)的区别。
    • (情景模式 1) 想象你是一名建筑工地的工人,需要把一堆砖搬到二楼去。现在有两种方法:
      • 方法一(RISC):你一次只搬一块砖,但你跑得非常快,上下楼的速度很快。
      • 方法二(CISC):你一次搬很多砖,可能是十块,但因为太重了,你走得很慢,而且可能会累得更快。
    • (情景模式 2) 快餐店与高级餐厅:
      • 快餐店(RISC):菜单简单,每道菜都是标准化的,制作步骤少,出餐速度快。
      • 高级餐厅(CISC):菜单丰富,每道菜制作复杂,需要很多步骤,出餐时间长。
    • 总结
      • RISC:适用于需要高效率、低功耗的场合,如手机、平板等移动设备。
      • CISC:适用于需要复杂计算和兼容性的场合,如个人电脑和服务器。

4. 中央处理器 (CPU)

  • 解释:CPU 是计算机的大脑,它负责执行指令。CPU 包含多个组件,如算术逻辑单元 (ALU)、寄存器和控制单元。
  • 简化:CPU 负责执行所有任务。它读取指令,然后依次完成每个任务,比如算数操作或移动数据。
  • 查漏补缺:了解 CPU 的执行周期(取指、译码、执行)、流水线技术以及超标量处理器的工作原理。

5. 存储层次结构

  • 解释:计算机的存储系统从快速但昂贵的存储(如寄存器、缓存)到较慢但容量大的存储(如内存、硬盘)分层组织。
  • 简化:存储系统就像一个架子,有快速的小架子(寄存器、缓存)和慢速的大架子(硬盘、云存储)。我们常用的东西放在快的地方,不常用的放在慢的地方。
  • 查漏补缺:理解不同存储介质的特性、缓存一致性问题和存储分层对性能的影响。

6. 流水线技术

  • 解释:流水线是一种提高 CPU 执行效率的技术,将指令分为多个阶段,并让不同阶段的指令同时进行,从而增加并行度。
  • 简化:像流水线一样,CPU 可以同时处理多个指令的不同部分,从而加快工作速度。
  • 查漏补缺:了解流水线的关键阶段(取指、译码、执行等)、潜在的流水线冲突(结构、数据、控制)和如何解决冲突(如分支预测)。

7. 内存管理

  • 解释:内存管理指的是如何有效地分配和使用计算机内存。虚拟内存允许程序使用比物理内存更多的空间。
  • 简化:计算机把内存分成小块,程序可以按需使用这些块。虚拟内存就像一个临时“借来的”存储空间,用来防止内存不够用。
  • 查漏补缺:深入理解页表、分段、交换以及虚拟内存的实现原理。

8. 输入输出 (I/O) 系统

  • 解释:输入输出系统负责设备(如键盘、显示器、硬盘)和计算机之间的数据交换。I/O 系统通过中断机制实现效率最大化。
  • 简化:输入输出系统是计算机与外界沟通的桥梁,它管理如何从键盘输入文字,以及如何在显示器上显示图像。
  • 查漏补缺:理解中断处理、I/O 端口、DMA(直接存储器访问)等高级概念。

9. 总线系统

  • 解释:总线是一种共享的数据通道,计算机内的各个组件通过总线传输数据。常见的有数据总线、地址总线、控制总线。
  • 简化:总线就像数据“高速公路”,计算机内部的所有数据都通过它们传输,不同设备可以“搭车”进行交流。
  • 查漏补缺:了解总线的种类、总线仲裁机制、数据吞吐量对计算机性能的影响。

10. 并行处理与多核技术

  • 解释:并行处理指的是同时执行多个任务。多核处理器包含多个独立的核心,可以同时处理多个指令流,从而提高性能。
  • 简化:就像多个人同时做不同的任务,计算机的多核处理器可以同时执行多个程序,速度会更快。
  • 查漏补缺:熟悉并行编程模型、共享内存、分布式计算以及多核间的通信和同步机制。