欢迎来到电脑的心脏!

在本章中,我们将探索中央处理器(Central Processing Unit,简称 CPU)。你可以把 CPU 想象成电脑的“大脑”。就像你的大脑接收感官信息并指挥身体作出反应一样,CPU 会接收数据、进行处理,并告诉其他硬件该做什么。

如果一开始觉得某些组件名称听起来像外语,不必担心。当你读完这些笔记后,你会发现 CPU 其实只是一个运行极快、非常有条理,且不断重复执行简单步骤的机器。

1. 处理器的内部组件

处理器并非单一的区块,它是由几个相互协作的专门组件所组成。以下是你需要认识的几位主角:

算术逻辑单元 (ALU)

ALU 是 CPU 中的“数学家”。它主要执行两类任务:
1. 算术运算: 加、减、乘、除等数学运算。
2. 逻辑运算: 进行比较,例如检查一个数字是否“大于”另一个数字,或是使用 ANDORNOT 逻辑门。

控制单元 (CU)

如果把 CPU 比作厨房,控制单元就是主厨。它不负责“烹饪”(那是 ALU 的工作),但它负责协调一切。它会向处理器的其他部分发送控制信号,指挥它们何时读取数据、何时写入数据,以及下一步该执行什么指令。

系统时钟 (System Clock)

时钟就像一个节拍器。它会持续发出电信号脉冲。时钟每“滴答”一声,CPU 就能完成任务的一个步骤。时钟频率越快,CPU 每秒能处理的指令就越多。

寄存器 (Registers):CPU 的“便利贴”

寄存器是 CPU 内部极小且速度极快的存储位置。由于它们位于处理器内部,访问速度远比主内存(RAM)快得多。你可以把 RAM 想象成放在另一个房间的巨大书架,而寄存器则是拿在你手上的便利贴

通用寄存器与专用寄存器

通用寄存器 (General-Purpose Registers): CPU 在进行计算时,用来暂存数据(例如存储加法运算的结果)。

专用寄存器 (Dedicated Registers): 这些寄存器有特定的职责。你必须学会以下这五个:

1. 程序计数器 (Program Counter, PC): 存储下一个要获取的指令的地址**。
2. 当前指令寄存器 (Current Instruction Register, CIR): 存储当前**正在解码和执行的指令。
3. 内存地址寄存器 (Memory Address Register, MAR): 存储 CPU 需要读取或写入的内存位置的地址**。
4. 内存缓冲寄存器 (Memory Buffer Register, MBR): 也称为内存数据寄存器。它存放刚从内存获取,或即将发送到内存的数据**或指令。
5. 状态寄存器 (Status Register, SR): 存储一些“标志”(flags),用来向 CPU 反映运算结果(例如结果是否为负数,或是否发生了错误)。

记忆口诀:MAR 想象成信封上的“地址”,而 MBR 就是信封里的“信件”(即数据)。

重点总结: ALU 负责运算,CU 负责指挥交通,而寄存器则为特定任务提供闪电般的存储空间。

2. 提取-执行周期 (Fetch-Execute Cycle)

CPU 在一个称为提取-执行周期 (Fetch-Execute Cycle) 的连续循环中运作。它每秒会进行数十亿次这样的过程。

步骤拆解:

1. 提取 (Fetch):
- PC 中的地址被复制到 MAR
- CPU 向 RAM 发送信号以寻找该地址。
- 该地址中的指令被传送到 MBR
- PC 会递增(加 1),以便为下一个指令做好准备。
- 指令从 MBR 移动到 CIR

2. 解码 (Decode):
- 控制单元查看 CIR 中的指令,并判断其含义(例如:“这是 ADD 还是 STORE 指令?”)。

3. 执行 (Execute):
- 执行该指令。这可能涉及 ALU 进行计算,或是数据在寄存器之间的移动。

快速复习:
PC -> MAR -> MBR -> CIR。这就是指令进入“大脑”并被理解的路径!

3. 处理器指令集

指令集 (Instruction Set) 是特定处理器能够理解的所有指令的完整集合。每个 CPU 都有其独特的“词汇”。

指令的结构

机器码指令通常由两个部分组成:
1. 操作码 (Opcode): “做什么”。这是要执行的操作(如 ADD、LOAD 或 STOP)。它还包含了寻址模式 (Addressing Mode)
2. 操作数 (Operand): “在哪里/对谁”。这是被使用的数据,或是数据所在的内存地址。

寻址模式

CPU 如何知道操作数中的数字是一个实际值还是一个地址呢?它会查看寻址模式**:
- 立即寻址 (Immediate Addressing): 操作数本身就是要使用的实际数值。(例如:ADD 5 意味着将数字 5 加进去)。
- 直接寻址 (Direct Addressing): 操作数是存储该数值的内存地址。(例如:ADD 5 意味着前往内存位置 5,查看该处的数字,然后将其加进去)。

你知道吗? 电脑只懂 1 和 0。当我们写下 ADD 时,电脑实际看到的是像 0110 这样的二进制模式。这被称为机器码 (Machine Code)

重点总结: 操作码 = 动词(要做什么);操作数 = 名词(对什么做)。

4. 常见机器码操作

你应该熟悉汇编语言中常用的这些基本操作:

- LOAD: 从内存中取出数值并放入寄存器。
- STORE: 从寄存器中取出数值并存储到内存中。
- ADD/SUBTRACT: 使用 ALU 进行数学运算。
- BRANCH (条件式/非条件式): 跳转到程序的不同部分。
- COMPARE: 检查两个值是否相等。
- HALT: 停止程序。

5. 影响处理器性能的因素

为什么高端游戏 PC 比旧款笔记本电脑快?这受到几个因素影响:

时钟速度 (Clock Speed)

单位为 赫兹 (Hz)。3GHz 的处理器每秒有 30 亿次时钟滴答。时钟速度越快,每秒处理的指令就越多。

核心数量 (Number of Cores)

“核心”基本上就是一个完整的 CPU。双核心 (Dual-core) 处理器拥有两个“大脑”,可以同时处理两个不同的任务(并行运算)。

高速缓存 (Cache Memory)

高速缓存 (Cache) 是 CPU 内部少量速度极快的内存。它存储你经常使用的数据,这样 CPU 就不必等待速度较慢的 RAM。

字长 (Word Length)

CPU 作为一个单位可以处理的位元数量。64 位元 CPU 一次能处理比 32 位元 CPU 更大的数字和更多的内存地址。

总线宽度 (Bus Width)

总线是组件之间传输数据的“高速公路”。
- 地址总线 (Address Bus): 若越宽,CPU 就能访问更多的内存位置。
- 数据总线 (Data Bus): 若越宽,CPU 一次能移动的数据就越多(就像为高速公路增加更多车道一样)。

常见误区: 增加核心数量并不总是让速度倍增。有些软件并未设计为能同时使用多个核心!

重点总结: 要让 CPU 更快,你可以让它的“心跳”更快(时钟速度)、给它更多“大脑”(核心)、给它更好的“短期记忆”(高速缓存),或是提供更宽的“路”来传输数据(总线宽度)。