Appearance
从单个门到大规模集成
概念
前面六章讲的是一个器件:一个 PN 结、一个 MOSFET、一个非门、一个与非门。
这一章要回答的是:怎么把 1 个门变成 100 亿个门,还让它能用、买得起、不烧掉。
它有三个相互咬合的约束——集成度(能塞多少)、功耗(会不会烧)、良率(做出来几个是好的)。三者的拉扯,直接决定了今天 CPU 是"多核低频"而不是"单核 10 GHz"。
一句话:摩尔定律不是"自然规律",而是一部工艺、功耗、成本三国演义。这一章是 L0 的收口,把"物理"交棒给"电路"。
原理
一、先算清楚:一个门值几个晶体管
CMOS 的规矩是每个输入对应一对管子(NMOS 上拉网络 + PMOS 下拉网络的镜像),静态时两条通路必有一条断开。
| 门 | 结构 | 晶体管数 |
|---|---|---|
| NOT | 1 PMOS + 1 NMOS | 2 |
| NAND2 | 2 PMOS 并联 + 2 NMOS 串联 | 4 |
| NOR2 | 2 PMOS 串联 + 2 NMOS 并联 | 4 |
| AND2 | NAND2 + NOT | 6 |
| OR2 | NOR2 + NOT | 6 |
| XOR2 | 标准 CMOS 实现约 8~10 管(含反相器缓冲) | 10 |
注意:NAND 比 AND 便宜(4 管 vs 6 管),NOR 比 OR 便宜。这就是为什么工业界习惯说"用 NAND 搭一切",也是为什么综合工具默认往 NAND 走。
往上数:1 位全加器 = 2 个 XOR + 2 个 AND + 1 个 OR(进位与和的标准 SOP 实现)
32 位行波进位加法器:
规模阶梯(数量级):
1 个门 ~10 管
1 位全加器 38 管
32 位加法器 1216 管 ← 到这里还是"手画得下"
一个 8 位 ALU ~5 000 管
Intel 4004 (1971) 2 300 管 ← 第一个商用微处理器
Intel 8086 (1978) 29 000 管
Pentium (1993) 3 100 000 管 ← 300 万
Core i7 (2008) ~7 亿
旗舰 SoC (2017) ~200 亿二、摩尔定律:一句被误读了 50 年的话
戈登·摩尔 1965 年的原文说的是:在最低成本的条件下,芯片上的元件数量每年翻一番(1975 年修订为每两年)。业界后来普遍采用 18~24 个月翻一番的口径。
它不是物理定律,是一条经验性产业路线图。真正的含义是:半导体行业每两年左右把"能经济制造的最小器件"缩小约
用数字验证一下:
约 193 亿管——对照 2017 年旗舰 SoC 的约 200 亿管,符合度惊人。
反推等效翻倍周期:
也就是说,从 4004 到 2017 年,"每 24 个月翻一番"这话,实测等效周期就是 23.9 个月。这不是巧合,而是行业拿它当目标在追。
三、Dennard 缩放:让摩尔定律"免费"的二十年
光把管子变小没用——变小之后功耗会不会爆?1974 年 Dennard 等人给出了让人安心的答案。
设每一代把线性尺寸乘以因子
| 量 | 推导 | 缩放倍数( |
|---|---|---|
| 线性尺寸 | 定义 | |
| 面积 | ||
| 电容 | ||
| 延迟 | ||
| 频率 | ||
| 电压 | 同比例降低 | |
| 单管功耗 | ||
| 功率密度 | ||
| 集成度(每 mm² 管数) |
核心结论:面积减半、频率提高 43%、而单位面积的功耗一动不动。
这意味着:每一代你都能白拿 2 倍的晶体管数和 1.43 倍的频率,散热方案一点不用改。 这是 1974–2005 年计算机性能狂飙的全部秘密。
注意
这一步最容易算错。直觉上"面积 ,电容也该 "——但电容的公式是 ,氧化层厚度 也在同比例变薄,两相抵消只剩一个 。
四、2005 年之后的转弯:Dennard 缩放失效
Dennard 缩放成立有个前提:电压能跟着尺寸一起降。这个前提在 65 nm 附近崩了。
原因有两条:
- 阈值电压不能无限降。
降到 0.3 V 以下,亚阈值漏电呈指数暴涨——管子"关不断"了。为压住漏电, 必须停在 0.3 V 上下,于是 也就停在 1 V 附近降不下去。 - 电压不降,
里的 就是死数。频率每翻一倍,功耗也翻一倍。散热能力却是恒定的(风冷约 100 W/cm² 量级)。
结果:频率墙。约 2005 年起,单核主频卡在 3~4 GHz 不再上涨,行业转向多核 + 并行。
算一笔账(
| 方案 | 参数 | 功耗 |
|---|---|---|
| 单核 3 GHz | 6.00 W | |
| 单核 6 GHz | 同上,频率翻倍 | 12.00 W(功耗线性涨,散热封顶) |
| 单核降压 0.7 V | 2.94 W( | |
| 4 核 ×1.5 GHz | 每核 | 每核 0.75 W,合计 3.00 W |
读这张表:把"想要 6 GHz"变成"4 个 1.5 GHz",功耗从 12 W 掉到 3 W,而对可并行的负载吞吐率还更高。这就是多核的路。
但并行有天花板——Amdahl 定律。所以行业同时走了三条路:多核(并行)、专用加速器(GPU/NPU,牺牲通用性换能效)、近阈值与三维集成(继续压
或用垂直方向换面积)。
五、工艺节点:数字早已不是尺寸
"7 nm"、"3 nm"、"5 nm"这些数字,从 28 nm 之后就不再对应任何一条真实物理尺寸。
| 年代叫法 | 它实际指什么 |
|---|---|
| 早期(>1 μm) | 真实的栅极长度(gate length) |
| 约 250~45 nm | 半节距(half pitch)等折中定义 |
| 2011 年后(<28 nm) | 营销名,本质是"等效密度节点",只用来标代际 |
真实的尺寸另有其名:
| 术语 | 含义 |
|---|---|
| 物理栅长(FinFET 时代栅是立体包裹的,单值说不清) | |
| CPP / MMP | 接触栅极节距 / 最小金属节距(决定密度) |
| 标准单元面积单位,SRAM 位单元常写作 | |
| MTr/mm² | 每平方毫米晶体管数——唯一可比的真数字 |
结论:比较两代工艺,看
MTr/mm²和SRAM bitcell 面积,不要看节点名。5 nm 和 7 nm 的实际密度差可能只有 1.5 倍,而节点名给人的感觉是 1.4 倍——方向对,倍数不可信。
六、良率与成本:大芯片为什么贵得离谱
第一层:一片晶圆能切几个 die。
对直径
第二项扣掉边缘切不出完整 die 的部分。
| die 面积 | 理论上限 | 实际可切 |
|---|---|---|
| 50 mm² | 1414 | 约 1319 |
| 100 mm² | 707 | 约 640 |
| 400 mm² | 177 | 约 143 |
| 800 mm² | 88 | 约 65 |
第二层:良率。 芯片面积越大,上面落一个缺陷就整个报废的概率越高。最常用的 Poisson 模型:
| die 面积 \ | 0.001 | 0.005 | 0.010 |
|---|---|---|---|
| 50 mm² | 95.1% | 77.9% | 60.7% |
| 100 mm² | 90.5% | 60.7% | 36.8% |
| 400 mm² | 67.0% | 13.5% | 1.8% |
这就是"大芯片贵"的全部逻辑:面积 ×4,可切 die 数 ÷4 还多,良率又掉一半以上 → 单颗好 die 的成本涨 10 倍以上。
这也解释了为什么小芯片(chiplet)会流行:把一个大 die 拆成几个小 die,各自良率都高,再把好的拼起来。面积换良率,是成熟的商业决定,不是技术炫技。
七、把三层约束串起来
┌──────────── 摩尔定律(集成度)────────────┐
│ 每 24 个月翻倍,靠缩小尺寸实现 │
└────────────────┬─────────────────────────┘
│ 尺寸↓
┌────────────▼────────────┐
┌─────────┤ 面积↓ 频率↑ 电压↓ ├─────────┐
│ └────────────┬────────────┘ │
│ │ │
┌────▼─────┐ ┌──────▼──────┐ ┌──────▼─────┐
│ 功耗约束 │ │ 电压降不动 │ │ 良率约束 │
│ P=CV²f │────────▶│ → 频率墙 │ │ Y=e^{-AD} │
└──────────┘ │ → 多核转向 │ └──────┬─────┘
└─────────────┘ │
┌─────▼──────┐
│ chiplet 拆分│
└────────────┘示例
例 1:从门数估算晶体管数与芯片面积(完整计算)
某设计含 200 万个 2 输入 NAND、50 万个 NOT、30 万个 XOR2、10 万个 D 触发器(每个 20 管)。工艺为 7 nm 级,密度 90 MTr/mm²,含互连与填充的实际利用率 60%。求晶体管数与 die 面积。
第一步:按门型算管数。
结论:1400 万管。
第二步:算有效面积。 逻辑区实际占用密度 = 标称密度 × 利用率:
第三步:加上 SRAM 与模拟区。 若片上还有 16 MB SRAM,位单元 0.021 μm²、外围开销 1.5 倍:
关键观察:逻辑只占 5%,SRAM 占 80%。这正是今天芯片的真实画像——"计算"很小,"存数的地"很大。也是"存算一体"研究热的原因。
例 2:良率与成本(完整计算)
接例 1,
。缺陷密度 。300 mm 晶圆单片成本 5000 元。求单颗好 die 的成本。
第一步:可切 die 数。
第二步:良率。
第三步:单颗成本。
结论:约 0.39 元。
对比:若把面积放大到
同一种工艺,面积涨了 75 倍,单颗成本涨了 660 倍。 这就是良率的杠杆。
例 3:Dennard 缩放的收益(完整计算)
某工艺一代
。求各量缩放倍数,并判断这对设计者意味着什么。
结论:同面积可放
但换个条件:若电压因阈值限制无法降低(
结论:功率密度每代翻倍。风冷撑不过 3 代。 这就是 2005 年之后发生的事。
用程序复算
#include <stdio.h>
#include <math.h>
#define PI 3.14159265358979323846
/* die 数近似(工业常用)*/
double dies(double D, double S) {
return PI * (D/2) * (D/2) / S - PI * D / sqrt(2.0 * S);
}
int main(void) {
/* --- 1. 门 -> 晶体管 --- */
printf("--- 门到晶体管 ---\n");
const char *nm[] = {"NOT", "NAND2", "NOR2", "AND2", "OR2", "XOR2"};
int t[] = {2, 4, 4, 6, 6, 10};
for (int i = 0; i < 6; i++) printf(" %-6s = %2d 管\n", nm[i], t[i]);
int fa = 2*10 + 2*6 + 6;
printf(" 1 位全加器 = %d 管 -> 32 位行波进位 = %d 管\n", fa, 32*fa);
/* --- 2. 摩尔定律 --- */
printf("--- 摩尔定律 ---\n");
double n0 = 2300.0, years = 2017 - 1971;
double pred = n0 * pow(2.0, years * 12 / 24);
printf(" 4004=%.0f 管, 24月翻倍 -> 2017 推得 %.3e 管 (%.1f 亿)\n",
n0, pred, pred / 1e8);
double ratio = 2e10 / 2300.0;
printf(" 由 2300 -> 2e10: 翻倍 %.2f 次, 等效周期 %.1f 个月\n",
log2(ratio), years * 12 / log2(ratio));
/* --- 3. Dennard 缩放 --- */
printf("--- Dennard 缩放 k=0.7 ---\n");
double k = 0.7;
printf(" 面积 %.3f 频率 %.3f 单管功耗 %.3f 功率密度 %.3f\n",
k*k, 1/k, k*k, (k*k)/(k*k));
printf(" 集成度 %.3f\n", 1/(k*k));
/* --- 4. die 数与良率 --- */
printf("--- 300mm 晶圆 ---\n");
double S[] = {50, 100, 400, 800};
for (int i = 0; i < 4; i++)
printf(" 面积 %4.0f mm^2 -> %.0f 个 die\n", S[i], dies(300, S[i]));
printf("--- 良率 Y=exp(-A*D0) ---\n");
double A[] = {50, 100, 400}, D0[] = {0.001, 0.005, 0.010};
for (int i = 0; i < 3; i++) {
printf(" A=%4.0f mm^2:", A[i]);
for (int j = 0; j < 3; j++)
printf(" D0=%.3f:%.1f%%", D0[j], exp(-A[i]*D0[j]) * 100);
printf("\n");
}
/* --- 5. 功耗墙 --- */
printf("--- 功耗墙 P=alpha*C*V^2*f ---\n");
double al = 0.1, C = 20e-9;
printf(" 单核 V=1.0 f=3GHz -> %.2f W\n", al*C*1.0*1.0*3e9);
printf(" 单核 V=1.0 f=6GHz -> %.2f W\n", al*C*1.0*1.0*6e9);
printf(" 单核 V=0.7 f=3GHz -> %.2f W\n", al*C*0.7*0.7*3e9);
printf(" 4核 每核 C=5nF V=1.0 f=1.5GHz -> 每核 %.2f W, 合计 %.2f W\n",
al*5e-9*1.0*1.0*1.5e9, 4*al*5e-9*1.0*1.0*1.5e9);
return 0;
}
c 本站为静态站,不提供在线运行;可复制到本地用 gcc / python 执行
import math
def dies(D, S):
return math.pi * (D/2)**2 / S - math.pi * D / math.sqrt(2 * S)
print("--- 门到晶体管 ---")
gates = {"NOT": 2, "NAND2": 4, "NOR2": 4, "AND2": 6, "OR2": 6, "XOR2": 10}
for k, v in gates.items():
print(f" {k:6s} = {v:2d} 管")
fa = 2*10 + 2*6 + 6
print(f" 1 位全加器 = {fa} 管 -> 32 位行波进位 = {32*fa} 管")
print("--- 摩尔定律 ---")
n0, years = 2300, 2017 - 1971
pred = n0 * 2 ** (years * 12 / 24)
print(f" 4004={n0} 管, 24月翻倍 -> 2017 推得 {pred:.3e} 管 ({pred/1e8:.1f} 亿)")
ratio = 2e10 / n0
print(f" 由 2300 -> 2e10: 翻倍 {math.log2(ratio):.2f} 次, "
f"等效周期 {years*12/math.log2(ratio):.1f} 个月")
print("--- Dennard 缩放 k=0.7 ---")
k = 0.7
print(f" 面积 {k*k:.3f} 频率 {1/k:.3f} 单管功耗 {k*k:.3f} "
f"功率密度 {(k*k)/(k*k):.3f} 集成度 {1/(k*k):.3f}")
print("--- 300mm 晶圆 die 数 ---")
for S in (50, 100, 400, 800):
print(f" 面积 {S:4d} mm^2 -> {dies(300, S):.0f} 个 die")
print("--- 良率 Y=exp(-A*D0) ---")
for A in (50, 100, 400):
row = " ".join(f"D0={d:.3f}:{math.exp(-A*d)*100:5.1f}%" for d in (0.001, 0.005, 0.010))
print(f" A={A:4d} mm^2 {row}")
print("--- 功耗墙 P=alpha*C*V^2*f ---")
al, C = 0.1, 20e-9
print(f" 单核 V=1.0 f=3GHz -> {al*C*1.0*1.0*3e9:.2f} W")
print(f" 单核 V=1.0 f=6GHz -> {al*C*1.0*1.0*6e9:.2f} W")
print(f" 单核 V=0.7 f=3GHz -> {al*C*0.7*0.7*3e9:.2f} W")
per = al * 5e-9 * 1.0 * 1.0 * 1.5e9
print(f" 4核 每核 C=5nF f=1.5GHz -> 每核 {per:.2f} W, 合计 {4*per:.2f} W")
python 本站为静态站,不提供在线运行;可复制到本地用 gcc / python 执行
输出(节选):
1 位全加器 = 38 管 -> 32 位行波进位 = 1216 管
4004=2300 管, 24月翻倍 -> 2017 推得 1.929e+10 管 (192.9 亿)
由 2300 -> 2e10: 翻倍 23.05 次, 等效周期 23.9 个月
面积 0.490 频率 1.429 单管功耗 0.490 功率密度 1.000 集成度 2.041
面积 100 mm^2 -> 640 个 die
A= 100 mm^2 D0=0.001: 90.5% D0=0.005: 60.7% D0=0.010: 36.8%
单核 V=1.0 f=6GHz -> 12.00 W
4核 每核 C=5nF f=1.5GHz -> 每核 0.75 W, 合计 3.00 W考点
考点
1. 摩尔定律的准确表述(最容易背错)
| 说法 | 判定 |
|---|---|
| "晶体管数每 18 个月翻一番" | 摩尔原文是每年(1965),1975 改为每两年;18 个月是 Intel 的性能口径 |
| "集成电路上的元件数约每两年翻一番" | ✅ 这是准确表述 |
| "摩尔定律是物理定律" | ❌ 是经验性产业规律,靠工程投入维持 |
| "晶体管变小就会更快" | ❌ 缩小本身不带来速度, |
2. Dennard 缩放(必考推导)
- 易错点:把电容也算成
。一定要记住 , 和 同时缩。 - 失效原因:阈值电压受亚阈值漏电限制不能继续降 →
降不下去 → 功率密度按 上升 → 频率墙 → 多核。 - 常考问法:"若电压不随尺寸缩放,功率密度如何变化?" → 答
,每代翻倍。
3. 门 → 晶体管数
| 门 | 管数 |
|---|---|
| NOT | 2 |
| NAND2 / NOR2 | 4 |
| AND2 / OR2 | 6(= NAND/NOR + NOT) |
| XOR2 | ≈ 10 |
结论:NAND 最便宜,所以"用 NAND 搭一切"。NAND/NOR 之间是对偶关系(串联↔并联、NMOS↔PMOS)。
4. die 数与良率(计算大题)
- 面积翻倍,成本涨得远不止两倍:die 数减半 × 良率下降 = 超线性。
- 记牢典型值:
、 → (约 )。 是最好记的锚点。
5. 功耗公式三兄弟
- 降压是平方收益:
功耗降到 倍。 - 降频是线性收益。
- 多核:
核 低频,功耗线性涨而散热不变 → 能撑住;但并行度受 Amdahl 限制。
6. 工艺节点名不可比
"7 nm" 不等于任何一条实际尺寸。比密度看 MTr/mm²,比存储看 SRAM bitcell 面积(μm²)。这是近年真题和面试的常见陷阱。
7. 其他易错点
- "CMOS 没有静态功耗"是错的。原意是"理想 CMOS 静态功耗可忽略";纳米节点下亚阈值漏电已成首要功耗来源之一。
- 面积大的芯片不是因为"技术落后"才良率低,是缺陷统计的必然结果(大数定律)。
- chiplet 不是为了省钱才拆,核心动机是良率——拆分后每颗小 die 的
都高得多。 - 片上面积大头往往是 SRAM 不是逻辑,估面积时别只算逻辑门。
小结
- 门与晶体管数:NOT 2 管、NAND/NOR 4 管、AND/OR 6 管、XOR 10 管;NAND 最便宜。
- 摩尔定律是"元件数每两年翻一番"的经验规律,实测等效周期约 23.9 个月。
- Dennard 缩放:尺寸
→ 面积 、电容 、频率 、电压 、单管功耗 、功率密度不变。注意电容只缩一个 。 - 失效于阈值电压受限 → 电压降不动 → 功率密度每代翻倍 → 频率墙 → 多核。
- 良率
:面积是超线性成本杠杆;大芯片贵、chiplet 流行,都源于此。 - 工艺节点名不等于尺寸,比密度用 MTr/mm²。
本层到此收口。 回看这条链:硅 → 掺杂 → PN 结 → MOSFET → CMOS → 逻辑门 → 亿级集成。L0 回答的问题是——"0 和 1 是用什么物理实现的"。
从下一篇开始进入 L1 电路与数字逻辑,要回答的是——"这些门连起来,怎么变成加法器、寄存器、状态机",也就是从"器件"跨到"功能"。
评论(0)
当前浏览器不允许本地存储,评论无法保存。
还没有评论,来说两句。