从沙漠中的一粒沙到南极企鹅Tux:计算机系统漫谈
本文最后更新于:2023年4月27日 晚上
从沙漠中的一粒沙到南极企鹅Tux:计算机系统漫谈
沙砾和Intel
相信很多人都听说过,计算机芯片是用沙子造出来的。事实确实如此,通常如果想要得到硅晶圆,就需要通过碳粉还原反应将沙子中的二氧化硅转化为高纯度的单质硅,于是就有了“沙砾造芯片”的说法。那么抛开事实的戏剧性不谈,准确来说沙子中的硅元素才是造芯片的关键。
回想初三化学课知识,我们都知道硅元素是经典的半导体元素,但是它为什么因此就如此特殊?甚至于整个芯片都是基于硅单质的?
需要说明的一点是,现代的计算机芯片工业基本上都是采用MOSFET来完成集成电路(此处不包括更为先进的3nm及以下制程),而这个类型的晶体管(或者说所有的晶体管)有一对不可或缺的化学结构,那就是P/N型半导体。这一对半导体的制作原理就是通过在单质硅中掺杂(通常是硼元素,磷元素等),于是做出的半导体一边电子相对多,一边电子相对少,就可以形成P/N结…(此处具体流程省略一千字)。简单来说,如果有了MOSFET,就有了门电路,集成后就有了CPU等芯片,然而这一切的一切都是建立在单质硅这种朴素的工业材料上的。
当然,有了单质硅,并不是就能轻松制造出CPU了。除了之前提到的掺杂的步骤,还有很多工业步骤和课题需要完成。Intel在youtube上的官方帐号在很久以前放出过一段Intel芯片制作视频,其中就简要地演示了Intel芯片的制作流程。
光刻是什么?我们凭什么被“卡脖子”?
光刻是之前提到过的制造芯片的步骤之一,除此之外的步骤主要包括:抛光、扩散、刻蚀、离子注入、薄膜沉淀、金属化(可能不太准确)。
光刻使用的是紫外线光照,其目的是将特定区域的材料变质,从而在刻蚀阶段精准地将那部分区域去除。其中的难点在于精度的控制。需要意识到的一点是,现代计算机芯片的晶体管尺度是在纳米级别,而通常水分子的大小在0.4纳米左右,这意味着晶体管在尺度上已经接近于一般分子,也就是说我们是在微观粒子世界控制电路!如果想要看清楚一块Intel芯片中的一个门电路,甚至就需要用到电子显微镜,这个视频或许能够直观地告诉你芯片微观结构的震撼之处。
光刻机就是能够完成光刻步骤的工业机器。它需要做到发射光线,透过掩膜,通过光学仪器精准地打击到硅晶圆指定的区域。这里的掩膜就像是我们设计的电路蓝图,它作为模板让指定区域的光线透过,就像缩印一样在硅晶圆上打印出一份小得多的电路图。当然,掩膜不是关键难题,化腐朽为神奇的光学投影仪器才是。怎样将特定光线透光率提高,怎么将分辨率降到纳米级别都是非常困难的工业课题。在这个问题的研究之路上,需要的是成百上千的专业团队和一套跨国的庞大工业链。所以并不是哪一个公司或者国家可以独立生产的,就算当今的主流芯片制造商(台积电,三星)也不能单独承担光刻机的制造,而是向ASML公司订购。
问题在于,因为《瓦森纳协定》,我们是买不到光刻机的。也就是说,就算我们设计出了制造芯片的图纸并且理解芯片的所有制作流程,但还是不能自己动手制造出来,而是去请第三方公司让他们按照我们画的图纸造出芯片给我们运过来。处于这种尴尬的境地,我们很容易陷入被动的制裁中,最后通过封锁芯片将导致我们整个计算机网络的瘫痪。所以,如果用毛主席的话来说就是,“光刻机,一万年也要搞出来!”
与非门创造一切
在历史上,对于计算机的诞生,有三个人功不可没:图灵,冯-诺依曼,香农。其中号称智商高过爱因斯坦的香农发表了号称史上最强硕士论文《A Symbolic Analysis of Relay and Switching Circuits》,由此代表着二进制的逻辑运算成为了电子计算机的底层基础。
那么,为什么仅仅是零和一的逻辑电路就能构成计算机呢?简单来说,逻辑电路能够通过对输入信号进行处理,得到一串新的输出信号,从而改变CPU的中指定元件的状态,计算机因此就可以实现计算或者逻辑控制等等一系列宏观操作。而逻辑电路中基本单位是逻辑门(logic gate),理论上来说,我们只需要在物理上实现了与非门(NAND),就可以组合成我们需要的任意逻辑门,从而组成复杂由庞大的整个集成电路。
部分人第一次听到这个观点可能会觉得不可思议(通常会认为需要与门,或门,非门才能组成任意逻辑门),那我们来分析一下与非门为什么是万千电路之始。
假设与非门的函数定义为$NAND(a, b, out)$,其中$a$和$b$表示两个输入信号,$out$是输出信号。如果把$a$和$b$用相同的导线相连,也就是两个输入值始终相等,就有$NAND(a, a, out)$。通过分析,这里的$out$必定等于$a$的非,于是一个非门(NOT)就做好了。有了非门之后,在与非门之后加一个非门,那么与门(AND)也做好了。接着先将$a$和$b$分别通过非门后结果与一个与非门相连,那么或门(OR)也做好了。在之后不管是全加器,还是ALU,亦或是时序逻辑电路,乃至于整片CPU,都可以通过这些基本门电路逐渐组合而构造出来。
Multics计划和太空旅行游戏
在1965年,贝尔实验室加入到了Multics计划当中。该计划旨在打造一套多用户、多任务、多层次的操作系统,但该系统所支持的特性过于复杂庞大,开发进展十分缓慢。看到没有实质性成果之后,贝尔实验室于1969年退出该计划。
最后才加入到计划中的肯汤普逊当时肯定疑惑,为啥他一进组组里就退出了。不过他可能不在意这些,他更在乎的是有没有机器可以让他开发他的太空旅行游戏。于是在组里的GE-645也被搬走了之后,他在一台PDP-7上继续开发游戏。更多的组内人员加入进来,其中当时有一位名叫丹尼斯里奇的程序员也加入到他的摸鱼队伍中,开始共同捣鼓有没有可能在此基础上开发一个操作系统出来…再之后的故事大家应该都熟悉了,Unix(对于Multics的调侃)被开发出来,并使用里奇编写的名叫C语言的编程语言进行了重写和优化。
Unix和C语言的出现,很大程度上加速了计算机和软件的发展。很多计算机领域的大工程都离不开Unix操作系统,比如现今的互联网系统就是运行在Unix操作系统之上的。Unix的故事和它的各种特性,也让它成为了计算机科学领域的传奇经典,这里有一段AT&T介绍Unix系统的宣传视频可以感受一下那个时代的计算机风格。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!