博海拾贝 文摘 为什么说 CPU 是人造物的巅峰?

为什么说 CPU 是人造物的巅峰?

7.jpg

作者 / Dunkirk

沙子的主要成分是二氧化硅。

把它提纯、熔化、再结晶,就可以得到一根硅柱。只不过这个提纯的要求有点高,1/1000000000,意思是每十亿个硅原子里,杂质不能超过一个。

这根硅柱随后被切成薄薄的圆片,直径约 30 厘米,厚度不到 1 毫米,叫做晶圆。它就是 CPU 的白纸,后续所有都发生在这张纸上。

最小的开关

要理解 CPU,就要先理解它的最基本单元,晶体管。

晶体管本质上是一个开关。通电,电流通过,代表 1;断电,电流截断,代表 0。仅此而已。计算机所有的计算,追根溯源都是无数个 0 和 1 在以极快的速度切换。

那这个开关有多小?一根头发丝的直径大约是 70000 纳米。而现代 CPU 的晶体管的加工工艺是 3 纳米。一颗 CPU 里,最高能有超过 1000 亿个这样的晶体管。

光刻

这么小的东西怎么造出来?

人手肯定不行,答案是用光来雕刻,光刻。

这个过程有点像老式照相的底片冲洗。在晶圆表面涂上一层对光敏感的材料,用一张刻有电路图案的模板,让光透过它照在晶圆上。被光照到的地方发生化学变化,可以被洗掉,再用化学品腐蚀或者注入其他元素,就可以形成电路结构。

一颗 CPU 的芯片大小大概是一张邮票的四分之一。但在这块面积上,如果把里面的电路全部展开,总长度超过几十公里。里面有几十层结构,每一层都是独立的图案,层与层之间必须精确对齐,允许的误差是几个原子的宽度。

极紫外光

普通光根本画不了 3 纳米这么细的线,就像马克笔没法写出头发丝那么细的字一样,这受制于光的波长。

所以人们发明了 EUV,也就是极紫外光,波长只有 13.5 纳米,比可见光短几十倍。

想要产生这束光并不容易,需要把一颗直径 30 微米的锡液滴,用激光以每秒 5 万次的频率精准射击,使其产生等离子体,从而释放出极紫外光。

有了光之后,还有三个额外的挑战。

第一,这束光不能在空气中传播。EUV 光会被氧气分子吸收,走不了几厘米就消失。所以整个光刻机内部必须维持接近完美的真空。

第二,没有任何镜片能透过这束光。普通玻璃会直接将其吸收,所以光刻机里没有透镜,只有用弯曲镜面来聚焦和引导光线。这些镜面的平整度要求是这样的:如果把镜子放大到德国的大小,它表面最高的起伏不能超过 1 毫米。这是目前人类能制造的最光滑的表面。

第三,对齐的问题。晶圆在机器里移动、旋转、加热冷却,每一个环节都在引入误差。为了补偿这些误差,光刻机用激光干涉仪实时测量晶圆位置,精度达到亚纳米级别,同时用主动减震系统隔绝来自地面的任何振动。

光刻机

制造这台机器的公司全球只有一家,荷兰的 ASML。一台机器造价超过 3 亿美元,重达 180 吨,零部件来自全球数百家供应商,需要整架飞机来运输。

当芯片工艺从 7 纳米推进到 5 纳米再到 3 纳米,光刻机就必须整体重新设计。芯片设计师需要知道光刻机能达到什么精度,光刻机工程师需要知道芯片需要什么精度。

没有更先进的光刻机,就没有更先进的芯片。没有对更先进芯片的需求,就没有人愿意投入几十亿美元去造更先进的光刻机。芯片和光刻机就在这个循环中不断进步,同时进入每个人的生活。

从开关到思考

现在我们有了 1000 亿个晶体管,也就是 1000 亿个开关。但这一堆开关,是怎么变得会思考的?

逻辑门

几个晶体管组合在一起,可以做逻辑判断,这叫逻辑门。

与门:A 和 B 都是 1 时,结果才是 1。
或门:A 或 B 有一个是 1,结果就是 1。
非门:输入 1 输出 0,输入 0 输出 1。

通过这 3 种基础的门,还能够组合出一个非常常用的异或门:两个输入不同则输出 1 ,相同则输出 0 。

1930 年代,香农证明所有的逻辑运算最终都可以用真值表来描述,而所有的真值表,都可以用与、或、非三种门的组合来实现。

这就把电路和逻辑学连接在了一起,是整个计算机的理论基础。

运算

以最简单的加法为例:1+1 等于几?

在计算机里只有 0 和 1,所以 1+1 等于 10,也就是十进制里的 2。这个运算需要两个输出:本位和进位。

AB进位本位
0000
0101
1001
1110

看本位这列的规律,只有 A 和 B 不同时结果才是 1,相同则是 0,这正好是异或门的定义。

再看进位这列的规律,只有 A 和 B 都是 1 时结果才是 1,这正好是与门的定义。

所以,一个异或门加上一个与门,就是一个加法器。

多个一位加法器串联可以做多位加法,加法反复执行可以做乘法,做减法然后看结果正负可以比较大小,根据比较结果决定下一条指令的地址就是条件跳转。

每一步都只是上一步的组合,没有任何神秘之处。但组合的层数多到一定程度,整体就涌现出了强大的计算能力。

复杂

1950 年代,第一批晶体管计算机,工程师可以手工画出每一根导线的走向,电路图铺在桌子上就能看完,用铅笔就能修改。

1970 年代,芯片上有了几千个晶体管,开始用软件辅助设计,但工程师仍然能大致理解整体。

1990 年代,晶体管数量达到百万级,没有任何人能读完整份电路图了。

今天,超过 1000 亿个晶体管,不可能有任何人、任何团队能够理解这颗芯片在晶体管层面上究竟发生了什么。

但它还是被设计出来了,而且每隔几年就会出现更好的版本,这究竟是怎么做到的?

分层抽象

人类解决复杂度超出理解范围这个问题,只有一个办法,分层抽象。每一层只需要理解自己这一层到底在干嘛,完全不需要知道上下层的问题。

一个程序员写下一行代码:

print(“hello world”)

他完全理解这行代码的意思,让屏幕上打印出一段文字。但他不一定知道,也不需要知道这行代码在被执行之前,Python 解释器会把它翻译成一种叫字节码的中间格式,字节码再被翻译成操作系统能够理解的系统调用,系统调用再往下是操作系统的内核在处理输出请求,内核再往下是驱动程序在和显示硬件打交道,再往下是显卡或者显示控制器在操纵像素点亮,而所有这些,最终都落到了 CPU 在执行一条一条的机器指令上。

一行 print,从代码到屏幕,中间穿越了至少七八个抽象层,每一层都有人能够理解,但没有任何一个人同时理解全部。

设计到加工

CPU 也是如此,没有人真正理解它的全部,也不需要理解它的全部。它的分层抽象大概是这样的:

第一层是物理和工艺层。材料科学家和工艺工程师负责,他们研究的问题是如何在硅上制造出一个可靠的晶体管,这个晶体管的电气特性是什么。然后把答案交给上一层,说你们可以把它当成一个开关来用。

第二层是电路层。电路工程师不关心晶体管怎么造,只关心怎么把晶体管组合成逻辑门,再组合成加法器、寄存器这些基本模块。他们把这些模块交给上一层,说你们可以直接用。

第三层是微架构层。这是 CPU 设计工程师的核心工作,他们设计这些指令怎么被取出、怎么被解码、怎么被分配给哪个运算单元、结果怎么被写回。他们用硬件描述语言来写代码,是的,设计芯片就是在写代码,只不过这些代码描述的是电路的行为,而不是程序的步骤。

第四层是 EDA 工具层。工程师写完硬件描述语言之后,把它交给一类叫做电子设计自动化的软件。这个软件做的事情是把高层的电路描述,自动翻译成具体的门电路连接,再进一步翻译成具体的晶体管排列,最终生成光刻用的图案文件。

在真正制造之前,整颗芯片会在计算机上被模拟运行,检查每一条指令在每一种情况下的输出是否正确。

验证通过后,图案文件被送到晶圆代工厂,以光刻机为核心,配合沉积、蚀刻、清洗等设备,完成从图案到真实芯片的全部工序,大约 1000 到 1500 道,历时三四个月,再经过切割、封装、测试,一块 CPU 就诞生了。

来源;知乎日报

本文来自网络,不代表博海拾贝立场,转载请注明出处:https://www.bohaishibei.com/post/112284/
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
Telegram
返回顶部