Fumadocs

计算机底层原理

从半导体、晶体管和逻辑门到 CPU 的完整计算机底层原理。

一、先看完整链条:从沙子到计算机运算

计算机底层可以理解为下面这条层次链:

硅材料 → 半导体 → 晶体管 → 与、或、非等逻辑门 → 加法器、选择器、译码器 → 锁存器、触发器、寄存器 → ALU、缓存、控制器 → CPU、GPU、内存等芯片 → 操作系统和程序

最核心的物理元件其实是晶体管。

晶体管能够在电压控制下表现为:

  • 导通:近似一根连接的导线;
  • 截止:近似断开的开关。

因此可以用晶体管搭建复杂的开关网络,再用高低电压表示 0 和 1,就得到了逻辑运算。


二、半导体是什么

1. 导体、绝缘体和半导体

不同材料中的电子,脱离原子束缚并参与导电的难易程度不同。

材料导电情况常见例子
导体大量电子可以自由移动铜、铝、银
绝缘体电子很难自由移动玻璃、橡胶、二氧化硅
半导体导电能力可以被人为调节硅、锗、砷化镓

半导体最重要的特点不是“导电能力位于两者中间”,而是:

它的导电能力可以通过掺杂、电场、光照和温度进行控制。

现代数字芯片主要使用硅。


2. 为什么硅适合制造芯片

硅原子最外层有 4 个价电子。

在纯硅晶体中,每个硅原子会和周围的 4 个硅原子形成共价键:

      Si
       |
Si —  Si — Si
       |
      Si

在理想情况下,这些电子被束缚在共价键中,不容易自由移动,因此纯硅导电能力不强。

但硅有几个很重要的优点:

  1. 可以通过掺杂精确改变导电性质;
  2. 可以形成稳定的二氧化硅绝缘层;
  3. 原料丰富;
  4. 工艺成熟;
  5. 适合制造极小的晶体管。

三、什么是掺杂

所谓掺杂,就是在高纯度硅中加入极少量其他元素,从而改变其中载流子的数量。

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。

栅极输入NMOSPMOS
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

非门的逻辑关系为:

Y=¬AY=\neg A

真值表:

AY
01
10

这就是物理电路为什么能实现逻辑非:

输入电压控制两个互补晶体管,决定输出最终接到电源还是接到地。


八、与非门 NAND 是怎样实现的

CMOS 与非门通常使用:

  • 两个 PMOS 并联;
  • 两个 NMOS 串联。
                 VDD
                  |
           ┌──────┴──────┐
         PMOS A         PMOS B
           |              |
           └──────┬───────┘
                  |
                输出 Y
                  |
                NMOS A
                  |
                NMOS B
                  |
                 GND

1. 为什么 NMOS 要串联

NMOS 在输入为 1 时导通。

两个 NMOS 串联,只有在:

A = 1
并且
B = 1

时,从输出到地的通路才完全接通。

所以只有两个输入都为 1,输出才被拉到 0。

2. 为什么 PMOS 要并联

PMOS 在输入为 0 时导通。

只要 A 或 B 中至少有一个为 0,就至少有一只 PMOS 导通,输出会被拉到 1。

因此:

Y=¬(A∧B)Y=\neg(A\land B)

真值表:

ABNAND 输出
001
011
101
110

九、与门 AND 是怎样实现的

CMOS 中通常不会直接用最简单的晶体管网络实现与门,而是:

先做一个 NAND,再接一个 NOT。

A∧B=¬(¬(A∧B))A\land B=\neg\bigl(\neg(A\land B)\bigr)

结构:

A ──┐
    ├── NAND ── NOT ── Y
B ──┘

真值表:

ABAND 输出
000
010
100
111

物理意义是:

只有 A 和 B 都为高电平时,输出才是高电平。


十、或非门 NOR 是怎样实现的

NOR 门和 NAND 门的串并联关系相反:

  • PMOS 串联;
  • NMOS 并联。
                 VDD
                  |
                PMOS A
                  |
                PMOS B
                  |
                输出 Y
                  |
           ┌──────┴──────┐
         NMOS A         NMOS B
           |              |
           └──────┬───────┘
                  |
                 GND

NMOS 输入为 1 时导通,因此只要 A 或 B 有一个为 1,就会有一条通路把输出拉到地。

只有 A、B 都为 0:

  • 两个 NMOS 都截止;
  • 两个 PMOS 都导通;
  • 输出才被拉高。

因此:

Y=¬(A∨B)Y=\neg(A\lor B)

真值表:

ABNOR 输出
001
010
100
110

十一、或门 OR 是怎样实现的

或门通常由 NOR 门后接非门构成:

A∨B=¬(¬(A∨B))A\lor B=\neg\bigl(\neg(A\lor B)\bigr)

结构:

A ──┐
    ├── NOR ── NOT ── Y
B ──┘

真值表:

ABOR 输出
000
011
101
111

结合上面的真值表,可以直接比较不同输入对应的逻辑门输出。


十二、异或 XOR 是怎样实现的

异或表示“两个输入不同”。

Y=A⊕BY=A\oplus B

等价表达式为:

Y=(A∧¬B)∨(¬A∧B)Y=(A\land\neg B)\lor(\neg A\land B)

真值表:

ABXOR 输出
000
011
101
110

所以异或可以使用:

  • 两个非门;
  • 两个与门;
  • 一个或门;

组合实现:

          ┌── NOT ─────┐
B ───────▶│            ▼
A ─────────────────── AND ──┐
                            ├── OR ── Y
A ───────▶ NOT ──┐          │
                 ▼          │
B ───────────── AND ─────────┘

实际芯片中会使用经过优化的晶体管级 XOR 电路,不一定真的按照五个独立门排列。


十三、同或 XNOR

同或表示“两个输入相同”。

Y=¬(A⊕B)Y=\neg(A\oplus B)

真值表:

ABXNOR 输出
001
010
100
111

它常用于:

  • 位相等比较;
  • 比较器;
  • 校验电路;
  • 状态检测。

十四、为什么 NAND 或 NOR 可以构造所有逻辑运算

NAND 门和 NOR 门都具有功能完备性。

意思是:

只使用 NAND 门,就可以构造任意布尔逻辑电路。

例如只用 NAND 构造非门:

¬A=ANAND⁡A\neg A=A\operatorname{NAND}A

只用 NAND 构造与门:

A∧B=¬(ANAND⁡B)A\land B= \neg(A\operatorname{NAND}B)

再利用德摩根律构造或门:

A∨B=¬(¬A∧¬B)A\lor B=\neg(\neg A\land\neg B)

而非、与、或又可以表达任意布尔函数。

因此,从理论上说,一种 NAND 门就足够制造完整计算机。

实际设计中仍然会同时使用:

  • NOT;
  • NAND;
  • NOR;
  • XOR;
  • 多路选择器;
  • 传输门;
  • 各种复合逻辑门;

因为这样面积更小、速度更快、功耗更低。


十五、多个逻辑门怎样形成加法器

1. 半加器

半加器计算两个一位二进制数 A 和 B 的和。

它有两个输出:

  • 和 Sum;
  • 进位 Carry。

和由异或产生:

S=A⊕BS=A\oplus B

进位由与运算产生:

C=A∧BC=A\land B

真值表:

AB和 S进位 C
0000
0110
1010
1101

因为:

0 + 0 = 00
0 + 1 = 01
1 + 0 = 01
1 + 1 = 10

2. 全加器

实际多位加法还要考虑低位传来的进位。

全加器输入:

  • A;
  • B;
  • 低位进位 Cin。

输出:

  • 本位和 S;
  • 向高位进位 Cout。
S=A⊕B⊕CinS=A\oplus B\oplus C_{\mathrm{in}} Cout=(A∧B)∨(Cin∧(A⊕B))C_{\mathrm{out}} =(A\land B) \lor \bigl(C_{\mathrm{in}}\land(A\oplus B)\bigr)

半加器负责计算两个输入位,全加器则在此基础上额外处理来自低位的进位。

把多个全加器串起来,就可以形成多位加法器:

最低位                         最高位
 A0 B0      A1 B1      A2 B2      A3 B3
  │ │        │ │        │ │        │ │
┌─────┐    ┌─────┐    ┌─────┐    ┌─────┐
│全加器│───▶│全加器│───▶│全加器│───▶│全加器│
└─────┘    └─────┘    └─────┘    └─────┘
  S0         S1         S2         S3

进位逐级传播,这就是最简单的串行进位加法器。

CPU 中会使用更复杂的超前进位、前缀加法器等结构来提高速度。


十六、多路选择器是怎样实现的

多路选择器 MUX 的作用是:

根据控制信号,从多个输入中选择一个输出。

一个二选一多路选择器:

  • 输入为 A、B;
  • 选择信号为 S;
  • S 为 0 时选择 A;
  • S 为 1 时选择 B。

逻辑表达式:

Y=(¬S∧A)∨(S∧B)Y=(\neg S\land A)\lor(S\land B)

结构:

              ┌── NOT ──┐
S ───────────▶│         AND ◀── A
              │          │
              │          ├── OR ── Y
              └──────── AND ◀── B

MUX 在 CPU 中极其重要,例如:

  • 选择 ALU 的输入;
  • 选择下一条指令地址;
  • 选择寄存器写回数据;
  • 选择是否跳转;
  • 选择不同运算结果。

十七、译码器是怎样实现的

假设输入为两位 A、B,那么共有四种组合:

00
01
10
11

二到四译码器会为每种组合产生一根独立输出:

Y0=¬A∧¬BY_0=\neg A\land\neg B Y1=¬A∧BY_1=\neg A\land B Y2=A∧¬BY_2=A\land\neg B Y3=A∧BY_3=A\land B

任何时刻通常只有一根输出有效。

译码器可以用于:

  • 选择寄存器;
  • 选择内存地址;
  • 指令译码;
  • 选择功能单元;
  • 控制芯片内部设备。

十八、比较器是怎样实现的

判断两个位是否相等,可以使用 XNOR:

E=¬(A⊕B)E=\neg(A\oplus B)

判断两个多位二进制数是否完全相等,只需让对应位分别进行 XNOR,再把所有结果相与。

例如两个四位数:

E=¬(A3⊕B3)∧¬(A2⊕B2)∧¬(A1⊕B1)∧¬(A0⊕B0)E= \neg(A_3\oplus B_3) \land \neg(A_2\oplus B_2) \land \neg(A_1\oplus B_1) \land \neg(A_0\oplus B_0)

所有位都相等,最终结果才为 1。


十九、移位是怎样用硬件实现的

逻辑移位并不一定是一个数字依次移动很多次。

硬件可以使用多级多路选择器构成桶形移位器。

例如一个 8 位桶形移位器,可以分为三层:

第 1 层:决定是否移动 1 位
第 2 层:决定是否移动 2 位
第 3 层:决定是否移动 4 位

因为:

0∼70\sim7

范围内的任意移位量,都可以由 1、2、4 三种位移组合得到。

例如移动 5 位:

5=4+15=4+1

所以控制“移动 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 Q0

8 个触发器可以形成 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 ──▶ 移位器 ───┘

控制信号告诉多路选择器选择哪一个结果。

例如:

控制码运算
000AND
001OR
010XOR
011ADD
100SUB
101SHIFT

所以 CPU 所谓的“执行一条加法指令”,本质上是:

  1. 指令译码器识别加法指令;
  2. 从寄存器读取操作数;
  3. 控制信号让 ALU 选择加法器;
  4. 加法器中的晶体管网络产生结果;
  5. 结果在时钟边沿写回寄存器。

二十四、减法为什么也能用加法器

计算机使用补码表示有符号整数。

减法可以转化成加法:

A−B=A+¬B+1A-B=A+\neg B+1

因此加法器不需要单独制造一套减法硬件。

只需:

  1. 根据控制信号决定是否将 B 的每一位取反;
  2. 最低位进位输入设置为 1;
  3. 使用同一个加法器完成运算。

通常使用 XOR 控制是否取反:

Bi′=Bi⊕SUBB_i'=B_i\oplus \mathrm{SUB}

当 SUB 为 0:

Bi′=BiB_i'=B_i

执行加法。

当 SUB 为 1:

Bi′=¬BiB_i'=\neg B_i

同时令最低位进位为 1,就执行减法。


二十五、时钟是什么

芯片内部大量触发器需要在统一时刻更新,因此需要时钟信号。

时钟是一种周期变化的电压:

高   ┌────┐    ┌────┐    ┌────┐
     │    │    │    │    │    │
低 ──┘    └────┘    └────┘    └──
      ↑         ↑         ↑
    上升沿     上升沿     上升沿

在两个时钟边沿之间:

  • 组合逻辑计算;
  • 信号通过多个逻辑门传播;
  • 最终结果到达下一级触发器。

到达时钟边沿时,触发器保存结果。

因此同步数字电路可以理解为:

寄存器
  ↓
组合逻辑进行计算
  ↓
下一级寄存器
  ↓
再次计算

时钟周期必须足够长,使最慢的组合逻辑路径有时间稳定下来。


二十六、逻辑门不是瞬间完成运算的

晶体管内部存在电阻和电容,所以信号传播需要时间。

输出节点可以近似看成一个电容:

晶体管导通
   ↓
给输出电容充电或放电
   ↓
输出电压逐渐变化
   ↓
跨过逻辑门阈值
   ↓
下一级识别为 0 或 1

因此逻辑门存在传播延迟。

一个逻辑门可能只有几皮秒到几十皮秒级别的延迟,但当信号连续经过许多级逻辑门时,延迟会累积。

这也是 CPU 频率不能无限提高的原因之一。


二十七、CMOS 为什么功耗较低

在稳定状态下,CMOS 反相器通常是:

  • PMOS 导通、NMOS 截止;
  • 或 PMOS 截止、NMOS 导通。

理论上不会同时存在从 VDD 到 GND 的完整直流通路。

因此静态功耗较小。

但输出切换时,需要给寄生电容充电或放电,产生动态功耗。

动态功耗可近似表示为:

Pdynamic≈αCV2fP_{\mathrm{dynamic}} \approx \alpha C V^2 f

其中:

  • (\alpha) 表示信号翻转活跃程度;
  • (C) 表示等效电容;
  • (V) 表示电源电压;
  • (f) 表示时钟频率。

这说明:

  • 电压越高,功耗增长很快;
  • 频率越高,功耗越大;
  • 晶体管和连线越多,电容越大;
  • 信号翻转越频繁,功耗越大。

现代芯片即使在稳定状态下也存在明显漏电,因此实际还有静态漏电功耗。


二十八、芯片到底是怎样制造出来的

芯片并不是把一个个肉眼可见的晶体管焊接起来,而是在一整块硅片上,通过微纳加工制造大量极小的晶体管和金属连线。

1. 制造高纯度硅

从石英砂等原料中提取硅,经过多次提纯,得到极高纯度的电子级硅。

2. 生长单晶硅棒

将高纯硅熔化,通过拉晶等方法生长成晶体结构排列整齐的圆柱形单晶硅棒。

硅熔液
  ↓
拉出晶种
  ↓
形成长圆柱形单晶硅

3. 切成晶圆

把硅棒切成一片片很薄的圆片,称为晶圆 Wafer。

常见晶圆直径可达到约 300 mm。

每块晶圆上会同时制造许多个相同芯片。


4. 氧化

在硅表面形成二氧化硅层。

二氧化硅可以作为:

  • 绝缘层;
  • 掩膜;
  • 栅极介质的一部分;
  • 器件隔离材料。

5. 涂覆光刻胶

在晶圆表面涂一层对光敏感的材料,称为光刻胶。

光刻胶
────────
材料层
────────
硅晶圆

6. 光刻曝光

使用掩膜版和光把设计图案投影到晶圆表面。

可以把它类比为极其精密的投影和显影过程。

曝光后,特定区域的光刻胶性质发生变化。


7. 显影和刻蚀

去除一部分光刻胶,使下面的材料暴露出来。

再通过化学或等离子体刻蚀,把图形转移到材料层中。

光刻决定“哪些位置保留”
刻蚀决定“哪些位置被去除”

8. 离子注入

把硼、磷、砷等杂质离子加速后注入硅中,在特定区域形成 P 型或 N 型半导体。

这样可以制造:

  • 源极;
  • 漏极;
  • 阱区;
  • 各种掺杂结构。

9. 沉积材料

在晶圆表面沉积不同材料:

  • 绝缘材料;
  • 多晶硅;
  • 金属;
  • 高介电常数材料;
  • 阻挡层。

每次沉积、光刻、刻蚀,都会形成一个新的结构层。


10. 制造金属互连

晶体管制造好之后,还必须使用金属线路连接起来。

芯片上通常有多层金属互连:

顶部粗金属层:电源、时钟、长距离连接
中间金属层:模块间连接
底部细金属层:局部晶体管连接
晶体管层:MOSFET
硅衬底

不同金属层之间通过垂直通孔连接。

现代芯片看起来像一个巨大的三维线路网络。


11. 切割晶圆

一块晶圆上有许多个芯片单元,称为 die。

制造完成后:

  1. 对每个 die 进行测试;
  2. 标记不合格区域;
  3. 将晶圆切割成独立裸片;
  4. 把合格裸片封装起来。

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 导通或截止
↓
输出节点完成充放电
↓
产生二进制结果
↓
结果写回寄存器

所以从最高层看是一个加法语句,从最底层看则是:

大量晶体管受到电压控制,按照预先设计好的连接关系进行导通、截止以及电容充放电。


三十二、最核心的理解

可以把整个数字计算机浓缩为四句话:

  1. 半导体让导电能力可以被控制。
  2. MOSFET 把电压变成导通或截止状态。
  3. 晶体管网络把导通和截止组合成与、或、非等逻辑。
  4. 逻辑门进一步构成运算、存储和控制电路。

因此,计算机的“逻辑”并不是某种脱离物理世界的神秘能力。

它实际上是:

用连续的电压和电流实现稳定的离散状态,再用这些离散状态模拟数学上的 0、1 和布尔逻辑。

On this page

一、先看完整链条:从沙子到计算机运算二、半导体是什么1. 导体、绝缘体和半导体2. 为什么硅适合制造芯片三、什么是掺杂1. N 型半导体2. P 型半导体四、PN 结和二极管五、MOSFET:芯片中最核心的开关1. NMOS2. PMOS六、0 和 1 在芯片中是什么七、CMOS 非门是怎样实现的情况一:输入 A 为 0情况二:输入 A 为 1八、与非门 NAND 是怎样实现的1. 为什么 NMOS 要串联2. 为什么 PMOS 要并联九、与门 AND 是怎样实现的十、或非门 NOR 是怎样实现的十一、或门 OR 是怎样实现的十二、异或 XOR 是怎样实现的十三、同或 XNOR十四、为什么 NAND 或 NOR 可以构造所有逻辑运算十五、多个逻辑门怎样形成加法器1. 半加器2. 全加器十六、多路选择器是怎样实现的十七、译码器是怎样实现的十八、比较器是怎样实现的十九、移位是怎样用硬件实现的二十、仅有逻辑门为什么不能记住数据二十一、锁存器怎样记住一位数据二十二、触发器、寄存器和内存1. D 触发器2. 寄存器3. SRAM4. DRAM二十三、ALU 是怎样形成的二十四、减法为什么也能用加法器二十五、时钟是什么二十六、逻辑门不是瞬间完成运算的二十七、CMOS 为什么功耗较低二十八、芯片到底是怎样制造出来的1. 制造高纯度硅2. 生长单晶硅棒3. 切成晶圆4. 氧化5. 涂覆光刻胶6. 光刻曝光7. 显影和刻蚀8. 离子注入9. 沉积材料10. 制造金属互连11. 切割晶圆12. 封装二十九、芯片设计时是不是人工画每个晶体管1. 功能设计2. RTL 描述3. 逻辑综合4. 标准单元映射5. 布局布线6. 物理验证三十、为什么这种结构真的能进行任意计算第一层:物理层第二层:逻辑层第三层:计算层三十一、一个程序最终是怎样落到晶体管上的三十二、最核心的理解