计算机底层原理
从半导体、晶体管和逻辑门到 CPU 的完整计算机底层原理。
一、先看完整链条:从沙子到计算机运算
计算机底层可以理解为下面这条层次链:
硅材料 → 半导体 → 晶体管 → 与、或、非等逻辑门 → 加法器、选择器、译码器 → 锁存器、触发器、寄存器 → ALU、缓存、控制器 → CPU、GPU、内存等芯片 → 操作系统和程序
最核心的物理元件其实是晶体管。
晶体管能够在电压控制下表现为:
- 导通:近似一根连接的导线;
- 截止:近似断开的开关。
因此可以用晶体管搭建复杂的开关网络,再用高低电压表示 0 和 1,就得到了逻辑运算。
二、半导体是什么
1. 导体、绝缘体和半导体
不同材料中的电子,脱离原子束缚并参与导电的难易程度不同。
| 材料 | 导电情况 | 常见例子 |
|---|---|---|
| 导体 | 大量电子可以自由移动 | 铜、铝、银 |
| 绝缘体 | 电子很难自由移动 | 玻璃、橡胶、二氧化硅 |
| 半导体 | 导电能力可以被人为调节 | 硅、锗、砷化镓 |
半导体最重要的特点不是“导电能力位于两者中间”,而是:
它的导电能力可以通过掺杂、电场、光照和温度进行控制。
现代数字芯片主要使用硅。
2. 为什么硅适合制造芯片
硅原子最外层有 4 个价电子。
在纯硅晶体中,每个硅原子会和周围的 4 个硅原子形成共价键:
Si
|
Si — Si — Si
|
Si在理想情况下,这些电子被束缚在共价键中,不容易自由移动,因此纯硅导电能力不强。
但硅有几个很重要的优点:
- 可以通过掺杂精确改变导电性质;
- 可以形成稳定的二氧化硅绝缘层;
- 原料丰富;
- 工艺成熟;
- 适合制造极小的晶体管。
三、什么是掺杂
所谓掺杂,就是在高纯度硅中加入极少量其他元素,从而改变其中载流子的数量。
1. N 型半导体
在硅中掺入磷、砷等具有 5 个价电子的元素。
其中 4 个电子参与共价键,额外多出的 1 个电子比较容易自由移动。
磷原子:5 个价电子
其中 4 个形成键
剩余 1 个成为较自由的电子这种材料称为 N 型半导体。
其中主要载流子是电子。
这里的 N 来自 negative,即负电荷载流子较多,但整个材料总体仍然保持电中性。
2. P 型半导体
在硅中掺入硼等只有 3 个价电子的元素。
由于缺少一个电子,会出现一个没有被填满的共价键位置,称为空穴。
邻近电子可以移动过来填补这个空穴,于是原来的位置又出现新空穴。宏观上看,就像空穴在材料中移动。
这种材料称为 P 型半导体。
其中主要载流子是空穴。
空穴不是一种真正独立的基本粒子,而是“缺少电子的状态”。
四、PN 结和二极管
把 P 型半导体和 N 型半导体接在一起,会形成 PN 结。
刚接触时:
- N 区中的电子会向 P 区扩散;
- P 区中的空穴会向 N 区扩散;
- 电子和空穴在交界处复合;
- 交界处形成缺少自由载流子的耗尽层;
- 耗尽层内部形成电场。
这个内部电场会阻碍载流子继续扩散。
PN 结具有明显的单向导电特性,因此可以制造二极管:
正向电压:容易导通
反向电压:通常截止不过现代 CPU 的主要逻辑元件不是普通二极管,而是 MOSFET 晶体管。
五、MOSFET:芯片中最核心的开关
MOSFET 全称是:
金属—氧化物—半导体场效应晶体管
它通常有四个部分:
- 栅极 Gate;
- 源极 Source;
- 漏极 Drain;
- 衬底 Body。
简化结构如下:
栅极 Gate
┌───────────┐
│ 导体层 │
└───────────┘
绝缘层
─────────────────
源极 S 半导体 漏极 D
██████ ██████栅极和下面的半导体之间隔着一层很薄的绝缘材料,所以栅极本身几乎不直接向沟道输入电流。
栅极主要通过电场控制源极与漏极之间是否形成导电沟道。
1. NMOS
对于 NMOS,可以粗略理解为:
- 栅极电压低:晶体管截止;
- 栅极电压高:晶体管导通。
Gate = 0:Source 和 Drain 断开
Gate = 1:Source 和 Drain 连通因此 NMOS 很适合把输出拉向地线 GND,也就是逻辑 0。
2. PMOS
PMOS 的控制规律基本相反:
- 栅极电压低:晶体管导通;
- 栅极电压高:晶体管截止。
因此 PMOS 很适合把输出连接到电源 VDD,也就是逻辑 1。
| 栅极输入 | NMOS | PMOS |
|---|---|---|
| 0 | 截止 | 导通 |
| 1 | 导通 | 截止 |
真实晶体管并不是完美开关:
- 导通时存在电阻;
- 截止时存在漏电流;
- 开关需要时间;
- 内部存在寄生电容。
但在逻辑分析中,可以先将其近似为理想开关。
六、0 和 1 在芯片中是什么
芯片中的 0 和 1 本质上不是数学符号,而是电压范围。
假设芯片电源电压为 1 V,可以规定:
- 接近 0 V:逻辑 0;
- 接近 1 V:逻辑 1。
但通常不是要求电压必须精确等于 0 V 或 1 V,而是设置一个范围,例如:
0 V ~ 0.3 V:认为是 0
0.7 V ~ 1.0 V:认为是 1
中间区域:不确定区域具体阈值由芯片工艺和电路标准决定。
这样设计可以抵抗一定程度的噪声。例如逻辑 1 因干扰从 1 V 降到 0.85 V,仍然会被识别为 1。
这称为噪声容限。
因此,数字电路不是说电压只有两个精确值,而是:
把连续变化的模拟电压划分成逻辑 0 和逻辑 1 两个稳定区间。
七、CMOS 非门是怎样实现的
CMOS 是现代数字芯片中最常见的电路形式。
CMOS 非门使用:
- 上方一个 PMOS;
- 下方一个 NMOS。
VDD
|
┌─────┐
输入 A ───▶│ PMOS│
└─────┘
|
├──── 输出 Y
|
┌─────┐
输入 A ───▶│ NMOS│
└─────┘
|
GND情况一:输入 A 为 0
- PMOS 导通;
- NMOS 截止;
- 输出被连接到 VDD;
- 输出为 1。
VDD ── PMOS 导通 ── 输出
GND ── NMOS 截止所以:
A = 0,Y = 1情况二:输入 A 为 1
- PMOS 截止;
- NMOS 导通;
- 输出被连接到 GND;
- 输出为 0。
VDD ── PMOS 截止
输出 ── NMOS 导通 ── GND所以:
A = 1,Y = 0非门的逻辑关系为:
真值表:
| A | Y |
|---|---|
| 0 | 1 |
| 1 | 0 |
这就是物理电路为什么能实现逻辑非:
输入电压控制两个互补晶体管,决定输出最终接到电源还是接到地。
八、与非门 NAND 是怎样实现的
CMOS 与非门通常使用:
- 两个 PMOS 并联;
- 两个 NMOS 串联。
VDD
|
┌──────┴──────┐
PMOS A PMOS B
| |
└──────┬───────┘
|
输出 Y
|
NMOS A
|
NMOS B
|
GND1. 为什么 NMOS 要串联
NMOS 在输入为 1 时导通。
两个 NMOS 串联,只有在:
A = 1
并且
B = 1时,从输出到地的通路才完全接通。
所以只有两个输入都为 1,输出才被拉到 0。
2. 为什么 PMOS 要并联
PMOS 在输入为 0 时导通。
只要 A 或 B 中至少有一个为 0,就至少有一只 PMOS 导通,输出会被拉到 1。
因此:
真值表:
| A | B | NAND 输出 |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
九、与门 AND 是怎样实现的
CMOS 中通常不会直接用最简单的晶体管网络实现与门,而是:
先做一个 NAND,再接一个 NOT。
结构:
A ──┐
├── NAND ── NOT ── Y
B ──┘真值表:
| A | B | AND 输出 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
物理意义是:
只有 A 和 B 都为高电平时,输出才是高电平。
十、或非门 NOR 是怎样实现的
NOR 门和 NAND 门的串并联关系相反:
- PMOS 串联;
- NMOS 并联。
VDD
|
PMOS A
|
PMOS B
|
输出 Y
|
┌──────┴──────┐
NMOS A NMOS B
| |
└──────┬───────┘
|
GNDNMOS 输入为 1 时导通,因此只要 A 或 B 有一个为 1,就会有一条通路把输出拉到地。
只有 A、B 都为 0:
- 两个 NMOS 都截止;
- 两个 PMOS 都导通;
- 输出才被拉高。
因此:
真值表:
| A | B | NOR 输出 |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 0 |
十一、或门 OR 是怎样实现的
或门通常由 NOR 门后接非门构成:
结构:
A ──┐
├── NOR ── NOT ── Y
B ──┘真值表:
| A | B | OR 输出 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
结合上面的真值表,可以直接比较不同输入对应的逻辑门输出。
十二、异或 XOR 是怎样实现的
异或表示“两个输入不同”。
等价表达式为:
真值表:
| A | B | XOR 输出 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
所以异或可以使用:
- 两个非门;
- 两个与门;
- 一个或门;
组合实现:
┌── NOT ─────┐
B ───────▶│ ▼
A ─────────────────── AND ──┐
├── OR ── Y
A ───────▶ NOT ──┐ │
▼ │
B ───────────── AND ─────────┘实际芯片中会使用经过优化的晶体管级 XOR 电路,不一定真的按照五个独立门排列。
十三、同或 XNOR
同或表示“两个输入相同”。
真值表:
| A | B | XNOR 输出 |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
它常用于:
- 位相等比较;
- 比较器;
- 校验电路;
- 状态检测。
十四、为什么 NAND 或 NOR 可以构造所有逻辑运算
NAND 门和 NOR 门都具有功能完备性。
意思是:
只使用 NAND 门,就可以构造任意布尔逻辑电路。
例如只用 NAND 构造非门:
只用 NAND 构造与门:
再利用德摩根律构造或门:
而非、与、或又可以表达任意布尔函数。
因此,从理论上说,一种 NAND 门就足够制造完整计算机。
实际设计中仍然会同时使用:
- NOT;
- NAND;
- NOR;
- XOR;
- 多路选择器;
- 传输门;
- 各种复合逻辑门;
因为这样面积更小、速度更快、功耗更低。
十五、多个逻辑门怎样形成加法器
1. 半加器
半加器计算两个一位二进制数 A 和 B 的和。
它有两个输出:
- 和 Sum;
- 进位 Carry。
和由异或产生:
进位由与运算产生:
真值表:
| A | B | 和 S | 进位 C |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
因为:
0 + 0 = 00
0 + 1 = 01
1 + 0 = 01
1 + 1 = 102. 全加器
实际多位加法还要考虑低位传来的进位。
全加器输入:
- A;
- B;
- 低位进位 Cin。
输出:
- 本位和 S;
- 向高位进位 Cout。
半加器负责计算两个输入位,全加器则在此基础上额外处理来自低位的进位。
把多个全加器串起来,就可以形成多位加法器:
最低位 最高位
A0 B0 A1 B1 A2 B2 A3 B3
│ │ │ │ │ │ │ │
┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐
│全加器│───▶│全加器│───▶│全加器│───▶│全加器│
└─────┘ └─────┘ └─────┘ └─────┘
S0 S1 S2 S3进位逐级传播,这就是最简单的串行进位加法器。
CPU 中会使用更复杂的超前进位、前缀加法器等结构来提高速度。
十六、多路选择器是怎样实现的
多路选择器 MUX 的作用是:
根据控制信号,从多个输入中选择一个输出。
一个二选一多路选择器:
- 输入为 A、B;
- 选择信号为 S;
- S 为 0 时选择 A;
- S 为 1 时选择 B。
逻辑表达式:
结构:
┌── NOT ──┐
S ───────────▶│ AND ◀── A
│ │
│ ├── OR ── Y
└──────── AND ◀── BMUX 在 CPU 中极其重要,例如:
- 选择 ALU 的输入;
- 选择下一条指令地址;
- 选择寄存器写回数据;
- 选择是否跳转;
- 选择不同运算结果。
十七、译码器是怎样实现的
假设输入为两位 A、B,那么共有四种组合:
00
01
10
11二到四译码器会为每种组合产生一根独立输出:
任何时刻通常只有一根输出有效。
译码器可以用于:
- 选择寄存器;
- 选择内存地址;
- 指令译码;
- 选择功能单元;
- 控制芯片内部设备。
十八、比较器是怎样实现的
判断两个位是否相等,可以使用 XNOR:
判断两个多位二进制数是否完全相等,只需让对应位分别进行 XNOR,再把所有结果相与。
例如两个四位数:
所有位都相等,最终结果才为 1。
十九、移位是怎样用硬件实现的
逻辑移位并不一定是一个数字依次移动很多次。
硬件可以使用多级多路选择器构成桶形移位器。
例如一个 8 位桶形移位器,可以分为三层:
第 1 层:决定是否移动 1 位
第 2 层:决定是否移动 2 位
第 3 层:决定是否移动 4 位因为:
范围内的任意移位量,都可以由 1、2、4 三种位移组合得到。
例如移动 5 位:
所以控制“移动 4 位”和“移动 1 位”的两层即可。
这种设计能让多位移位在少数几级逻辑延迟内完成。
二十、仅有逻辑门为什么不能记住数据
与、或、非等普通组合逻辑具有一个特点:
输出只由当前输入决定。
例如输入撤掉后,输出也随之改变,它本身没有记忆能力。
要保存数据,需要使用反馈结构。
二十一、锁存器怎样记住一位数据
两个 NOR 门交叉连接,可以形成 SR 锁存器:
┌─────────┐
S ────▶│ NOR ├──── Q
└────┬────┘
│
│反馈
│
┌────▼────┐
R ────▶│ NOR ├──── Q̅
└────┬────┘
│
└────────反馈到上方关键是输出会反馈到另一个门的输入。
某一状态一旦建立,即使外部控制信号恢复,反馈仍然会维持当前状态。
这就是电路产生“记忆”的根本原因:
输出不仅依赖外部输入,也依赖电路之前的输出状态。
二十二、触发器、寄存器和内存
1. D 触发器
D 触发器通常会在时钟的某个边沿保存输入 D。
例如在上升沿到来时:
D 的值被保存到 Q
随后即使 D 改变
Q 仍然保持原值
直到下一次有效时钟边沿2. 寄存器
一个 D 触发器存一位。
多个 D 触发器并排,就构成多位寄存器:
D7 D6 D5 D4 D3 D2 D1 D0
│ │ │ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
8 个触发器
│ │ │ │ │ │ │ │
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q08 个触发器可以形成 8 位寄存器。
3. SRAM
CPU 高速缓存通常使用 SRAM 单元。
经典 SRAM 单元通常由 6 个晶体管构成,因此称为 6T SRAM。
其核心是两个反相器交叉连接,形成能够维持 0 或 1 的稳定状态。
4. DRAM
内存条通常使用 DRAM。
一个 DRAM 存储单元主要由:
- 一个晶体管;
- 一个微小电容;
组成。
电容有电荷表示 1,没有足够电荷表示 0。
但电容会漏电,因此 DRAM 需要周期性刷新。
二十三、ALU 是怎样形成的
ALU 是算术逻辑单元,可以执行:
- 与;
- 或;
- 异或;
- 加法;
- 减法;
- 比较;
- 移位。
一种简化思路是并行计算多个结果:
A、B ──▶ 与电路 ───┐
A、B ──▶ 或电路 ───┤
A、B ──▶ 异或电路 ─┤
A、B ──▶ 加法器 ───┼──▶ 多路选择器 ──▶ 最终结果
A、B ──▶ 移位器 ───┘控制信号告诉多路选择器选择哪一个结果。
例如:
| 控制码 | 运算 |
|---|---|
| 000 | AND |
| 001 | OR |
| 010 | XOR |
| 011 | ADD |
| 100 | SUB |
| 101 | SHIFT |
所以 CPU 所谓的“执行一条加法指令”,本质上是:
- 指令译码器识别加法指令;
- 从寄存器读取操作数;
- 控制信号让 ALU 选择加法器;
- 加法器中的晶体管网络产生结果;
- 结果在时钟边沿写回寄存器。
二十四、减法为什么也能用加法器
计算机使用补码表示有符号整数。
减法可以转化成加法:
因此加法器不需要单独制造一套减法硬件。
只需:
- 根据控制信号决定是否将 B 的每一位取反;
- 最低位进位输入设置为 1;
- 使用同一个加法器完成运算。
通常使用 XOR 控制是否取反:
当 SUB 为 0:
执行加法。
当 SUB 为 1:
同时令最低位进位为 1,就执行减法。
二十五、时钟是什么
芯片内部大量触发器需要在统一时刻更新,因此需要时钟信号。
时钟是一种周期变化的电压:
高 ┌────┐ ┌────┐ ┌────┐
│ │ │ │ │ │
低 ──┘ └────┘ └────┘ └──
↑ ↑ ↑
上升沿 上升沿 上升沿在两个时钟边沿之间:
- 组合逻辑计算;
- 信号通过多个逻辑门传播;
- 最终结果到达下一级触发器。
到达时钟边沿时,触发器保存结果。
因此同步数字电路可以理解为:
寄存器
↓
组合逻辑进行计算
↓
下一级寄存器
↓
再次计算时钟周期必须足够长,使最慢的组合逻辑路径有时间稳定下来。
二十六、逻辑门不是瞬间完成运算的
晶体管内部存在电阻和电容,所以信号传播需要时间。
输出节点可以近似看成一个电容:
晶体管导通
↓
给输出电容充电或放电
↓
输出电压逐渐变化
↓
跨过逻辑门阈值
↓
下一级识别为 0 或 1因此逻辑门存在传播延迟。
一个逻辑门可能只有几皮秒到几十皮秒级别的延迟,但当信号连续经过许多级逻辑门时,延迟会累积。
这也是 CPU 频率不能无限提高的原因之一。
二十七、CMOS 为什么功耗较低
在稳定状态下,CMOS 反相器通常是:
- PMOS 导通、NMOS 截止;
- 或 PMOS 截止、NMOS 导通。
理论上不会同时存在从 VDD 到 GND 的完整直流通路。
因此静态功耗较小。
但输出切换时,需要给寄生电容充电或放电,产生动态功耗。
动态功耗可近似表示为:
其中:
- (\alpha) 表示信号翻转活跃程度;
- (C) 表示等效电容;
- (V) 表示电源电压;
- (f) 表示时钟频率。
这说明:
- 电压越高,功耗增长很快;
- 频率越高,功耗越大;
- 晶体管和连线越多,电容越大;
- 信号翻转越频繁,功耗越大。
现代芯片即使在稳定状态下也存在明显漏电,因此实际还有静态漏电功耗。
二十八、芯片到底是怎样制造出来的
芯片并不是把一个个肉眼可见的晶体管焊接起来,而是在一整块硅片上,通过微纳加工制造大量极小的晶体管和金属连线。
1. 制造高纯度硅
从石英砂等原料中提取硅,经过多次提纯,得到极高纯度的电子级硅。
2. 生长单晶硅棒
将高纯硅熔化,通过拉晶等方法生长成晶体结构排列整齐的圆柱形单晶硅棒。
硅熔液
↓
拉出晶种
↓
形成长圆柱形单晶硅3. 切成晶圆
把硅棒切成一片片很薄的圆片,称为晶圆 Wafer。
常见晶圆直径可达到约 300 mm。
每块晶圆上会同时制造许多个相同芯片。
4. 氧化
在硅表面形成二氧化硅层。
二氧化硅可以作为:
- 绝缘层;
- 掩膜;
- 栅极介质的一部分;
- 器件隔离材料。
5. 涂覆光刻胶
在晶圆表面涂一层对光敏感的材料,称为光刻胶。
光刻胶
────────
材料层
────────
硅晶圆6. 光刻曝光
使用掩膜版和光把设计图案投影到晶圆表面。
可以把它类比为极其精密的投影和显影过程。
曝光后,特定区域的光刻胶性质发生变化。
7. 显影和刻蚀
去除一部分光刻胶,使下面的材料暴露出来。
再通过化学或等离子体刻蚀,把图形转移到材料层中。
光刻决定“哪些位置保留”
刻蚀决定“哪些位置被去除”8. 离子注入
把硼、磷、砷等杂质离子加速后注入硅中,在特定区域形成 P 型或 N 型半导体。
这样可以制造:
- 源极;
- 漏极;
- 阱区;
- 各种掺杂结构。
9. 沉积材料
在晶圆表面沉积不同材料:
- 绝缘材料;
- 多晶硅;
- 金属;
- 高介电常数材料;
- 阻挡层。
每次沉积、光刻、刻蚀,都会形成一个新的结构层。
10. 制造金属互连
晶体管制造好之后,还必须使用金属线路连接起来。
芯片上通常有多层金属互连:
顶部粗金属层:电源、时钟、长距离连接
中间金属层:模块间连接
底部细金属层:局部晶体管连接
晶体管层:MOSFET
硅衬底不同金属层之间通过垂直通孔连接。
现代芯片看起来像一个巨大的三维线路网络。
11. 切割晶圆
一块晶圆上有许多个芯片单元,称为 die。
制造完成后:
- 对每个 die 进行测试;
- 标记不合格区域;
- 将晶圆切割成独立裸片;
- 把合格裸片封装起来。
12. 封装
裸片本身非常小而且脆弱,需要封装。
封装的作用包括:
- 保护芯片;
- 提供外部焊点;
- 连接主板;
- 帮助散热;
- 提供机械支撑。
因此我们看到的 CPU 外壳并不是硅芯片本身。
实际结构大致是:
散热顶盖
封装基板
硅裸片 die
微小焊点
主板插槽或焊盘二十九、芯片设计时是不是人工画每个晶体管
早期简单芯片可以手工设计大量细节,但现代复杂芯片不可能逐个手动画出所有晶体管。
设计流程通常分为多个抽象层次。
1. 功能设计
先确定芯片需要做什么,例如:
- CPU 指令系统;
- 流水线结构;
- 缓存大小;
- 运算单元数量;
- 接口协议。
2. RTL 描述
工程师使用 Verilog、SystemVerilog 或 VHDL 描述寄存器之间的数据传输和逻辑关系。
例如概念上:
if (enable)
result <= a + b;这里描述的是功能,不是逐个放置晶体管。
3. 逻辑综合
EDA 软件把 RTL 转换成逻辑门网络:
加法
→ XOR、AND、OR
→ 全加器
→ 标准单元4. 标准单元映射
芯片制造厂会提供标准单元库,例如:
- 反相器;
- NAND;
- NOR;
- XOR;
- 触发器;
- 多路选择器;
- 时钟缓冲器。
每个标准单元都已经设计好了晶体管布局。
综合工具会选择合适的单元。
5. 布局布线
EDA 软件完成:
- 把单元放到芯片区域中;
- 用金属线连接;
- 布置时钟网络;
- 布置电源网络;
- 优化时序;
- 优化面积和功耗。
6. 物理验证
检查:
- 图形是否符合制造规则;
- 电路连接是否正确;
- 时序是否满足要求;
- 电压降是否过大;
- 信号完整性是否有问题;
- 发热是否可接受。
最后生成用于制造的版图数据。
三十、为什么这种结构真的能进行任意计算
可以从三个层次理解。
第一层:物理层
电压可以控制晶体管导通或截止。
输入电压
→ 改变电场
→ 改变导电沟道
→ 决定输出节点充电还是放电因此晶体管可以构成受控开关。
第二层:逻辑层
开关网络可以实现布尔运算:
- 与;
- 或;
- 非;
- 异或;
- 选择;
- 比较。
NAND 或 NOR 又可以构造任意布尔函数。
第三层:计算层
布尔逻辑可以构造:
- 加法器;
- 乘法器;
- 比较器;
- 寄存器;
- 状态机;
- 存储器;
- 控制器。
这些部件组合起来,可以实现取指、译码、执行、访存和写回。
只要提供足够的存储空间和控制能力,就可以执行各种算法。
三十一、一个程序最终是怎样落到晶体管上的
假设程序中写:
c = a + b;它可能经历:
高级语言
↓
编译器
↓
机器指令
↓
CPU 取出指令
↓
指令译码器产生控制信号
↓
寄存器输出 a、b
↓
ALU 选择加法器
↓
全加器中的逻辑门工作
↓
逻辑门中的 MOSFET 导通或截止
↓
输出节点完成充放电
↓
产生二进制结果
↓
结果写回寄存器所以从最高层看是一个加法语句,从最底层看则是:
大量晶体管受到电压控制,按照预先设计好的连接关系进行导通、截止以及电容充放电。
三十二、最核心的理解
可以把整个数字计算机浓缩为四句话:
- 半导体让导电能力可以被控制。
- MOSFET 把电压变成导通或截止状态。
- 晶体管网络把导通和截止组合成与、或、非等逻辑。
- 逻辑门进一步构成运算、存储和控制电路。
因此,计算机的“逻辑”并不是某种脱离物理世界的神秘能力。
它实际上是:
用连续的电压和电流实现稳定的离散状态,再用这些离散状态模拟数学上的 0、1 和布尔逻辑。