04:承载“0和1”的物理躯壳

04:承载“0和1”的物理躯壳

第四篇信奥基础知识科普:在前三篇确立了计算机的“通用灵魂”与“0和1”的数据基础后,这一篇我们回到构成计算的物理躯壳,了解第一篇中那台 30 吨重的庞然大物,是如何经历“四代”疯狂缩小的微缩奇迹的。正是因为硬件的极致进化,才为后来庞大的软件生态铺平了道路。

写在前面的话:这是一系列专为对信奥(信息学奥赛)感兴趣的中小学生及家长朋友们准备的业余科普文章。笔者并非计算机历史学专家,受自身学识所限,文中若存在不严谨或考证疏漏之处,还望各位读者海涵并指正。

推出本系列的初衷主要有三点:

  1. 拓宽视野:在动手敲代码之前,全面了解计算机软硬件的发展脉络。
  2. 激发兴趣:通过深入浅出地讲述前沿技术与历史故事,希望能点燃中小学生对计算机科学的好奇心。
  3. 课余读物:哪怕只是作为打发闲暇时光的休闲阅读,也能让大家在轻松的氛围中收获知识。

本系列文章往期回顾:

引子:为什么 ENIAC 会有 30 吨重?

在冯·诺依曼确立了“存储程序”架构后,第一台计算机 ENIAC 虽然展示出了惊人的计算能力,但它的体型同样令人咋舌:占地面积相当于一套大平层(170平方米),体重相当于几头大象(30吨)。

为什么它会这么重?

我们在之前的文章里提到过,计算机底层其实是在用不计其数、只有 0 和 1 两种状态的“电子开关”在进行二进制计算。 而在当时的技术条件下,用来做这种开关的物理元件,叫作真空电子管 (Vacuum Tube)

为了让大家更直观地理解接下来几十年的硬件进化狂奔,我们不妨带着这一个核心概念往下看:四代计算机的发展史,其实就是这颗“电子开关”从“巨无霸”变成“分子颗粒”的微缩魔法史。

一、 第一代(约1946-1957年):发烧的灯泡(电子管计算机)

第一代计算机的物理核心,是密麻麻几万个的真空电子管。 你可以把电子管想象成早期家里用的老式玻璃白炽灯泡

工作原理与短板: 真空电子管能够在“通电亮起(导通,即 1)”和“断电熄灭(截止,即 0)”之间极速切换,它当做纯电子开关来使用,彻底淘汰了慢吞吞的机械齿轮。 由于它没有机械摩擦,ENIAC 能做到一秒钟 5000 次加法。

当时的 CPU、内存和硬盘分别长什么样?是怎么跑程序的?

在这个“开荒”时代,如果你打开 ENIAC 的机房大门,是找不到今天主板上那种结构分明、界限清晰的硬件块的。

  • 硬盘(永久存储):当时的计算机根本没有可以长期存储电子信号的“硬盘”。如果机器一关机,所有数据灰飞烟灭。如果程序员写好了程序或者要长久保存数据,唯一的物理硬盘就是那一厚叠手工打满孔的硬纸卡(或者纸带)。这叠带有几万个 1 和 0 的纸卡,就是那个年代工程师随身携带的“大容量 U 盘”。
  • 内存(临时记忆):当时的内存机制十分昂贵且“奇葩”。早期 ENIAC 只能直接用一部分电子管的亮灭状态来充当少得可怜的临时记事本(最多只能记住几十个十进制数字)。后来有些同期的早期计算机,甚至脑洞大开地使用装满水银的铁管(利用声音在水银中传播的物理延迟时间差)、或是阴极射线管来当做短期存放数字的内存。
  • CPU(计算大脑):就是那几万个电子管本身以及复杂至极的手工接线组成的庞大迷宫。电信号的走向就是加减算数。

这三大硬件组合起来的整体运行过程,犹如一场宏大的物理舞台剧:

  1. 喂入纸带(输入端):操作员抬着厚厚一箱打孔纸卡,塞进机器的光电读取设备中。读取设备发现有小孔的就通电变成 1,没有小孔的就断电产生 0
  2. 奔腾计算(中央处理器与内存端):这海量的电信号潮水般涌入那片庞大发热的“电子管森林(CPU)”中。当无数个电信号“接力跑”穿过这些由“电灯泡”组成的开关阵列时,加法或减法的逻辑便在电路上自动完成了。运算过程中产生的临时数字,被暂存在水银管或者那些当作“内存”的管子里。
  3. 输出结果(输出端):当复杂的计算(比如炸弹抛物线)像多米诺骨牌一样走到了终点,结果电信号要么直接点亮机器面板上那一排排闪烁的霓虹指示灯,让操作员肉眼逆向翻译出最终数字;要么驱动旁边的打卡机,咔哒咔哒地把结果打孔变成一张新的输出纸卡

然而,这种“大点灯”的短板极其致命:

  1. 极度耗电与发热:几万个灯泡同时亮着,让机房热得像桑拿房,必须要配置巨型空调组降温。
  2. 寿命极短:灯丝动不动就会烧断。据记载,ENIAC 最开始运行时,平均每隔几个小时就会烧断一个管子,工程师们疲于奔命地去满机房找坏管子更换。
  3. “Bug”的真实起源:因为电子管极度发热发光,经常会吸引机房外的飞蛾扑进去,导致电路短路(这就是程序错误被称为“Bug/虫子”的真实起源故事之一)。

二、 第二代(约1958-1964年):黄豆大小的冷兵器(晶体管计算机)

科学家们意识到,用玻璃灯管做开关简直是死路一条。 1956 年的诺贝尔物理学奖颁给了由威廉·肖克利 (William Shockley) 带领的三人小组,因为他们搞出了20世纪最伟大的物理发明之一:晶体管 (Transistor)

微缩魔法的第一层: 这是一种利用“半导体材料(如锗和硅)”制成的固体电子元件。 你可以把晶体管想象成一种只有大米粒或黄豆大小的、永不发烫的冷光 LED。它不需要抽真空的玻璃灯罩,也不需要易断的金属灯丝。

革命性蜕变: 当科学家把那几万个庞大的玻璃管子,全换成了黄豆大小的晶体管后,奇迹发生了:

  1. 计算机从“一栋大房子”瞬间缩小成了“几个大铁架子/大衣柜”。
  2. 开关速度翻了几百倍。
  3. 功耗极低,几乎不发热,终于可以长时间稳定运行而不需要频繁换管子了。

三、 第三代(约1965-1970年):印照片的技术(中小规模集成电路)

晶体管虽然小,但如果你要造一台需要几万、几十万个晶体管的更庞大的超级电脑,工程师还是得依靠人手,拿着镊子和电烙铁,把这些“黄豆”一颗颗焊接到电路板上,不仅极其低效,焊点也容易松动。

难道不能批量生产吗?

于是,工程师们从底片洗相片的工艺中找到了灵感,发明了光刻技术与集成电路(Integrated Circuit, 简称 IC)

微缩魔法的第二层: 大家不再一颗颗地安装晶体管了,而是直接在一小片极其平整的硅晶圆(俗称硅片)上,用光线像冲洗照片一样,把成百上千个微小的晶体管开关及连线,直接“印/刻”在这张薄片上!

💡 延伸阅读:把电路“洗”出来的光刻魔法

第三代集成电路的灵魂就在于光刻技术 (Photolithography)。过去拼凑几万个管子和线缆需要纯手工焊接,效率极低且极易出错;而光刻技术的原理,和早年间我们在暗房里用黑白胶卷底片洗出照片极其相似:

  1. 涂上一层“相纸”:在这块极平整的硅片表面,涂上一层薄薄的、遇到光就会发生化学变化变软的材料,叫作光刻胶
  2. 准备“底片”:工程师在电脑里设计好错综复杂的微细电路网,并把它绘制在一块玻璃板上:需要保留的电路连线画成“不透明的黑色”,其余空白区域保持“透明”。这块板子就叫掩膜版 (Mask),它就是这套工艺的专属“底片”。
  3. 强光“曝光”:用特定波长的极其强烈的紫外线,隔着这块“底片”去照射涂了光刻胶的硅片。光线只能穿透玻璃板上透明的空白区域,把底下的光刻胶照得“发生化学变化(变软溶解)”;而躲在黑色电路连线阴影下的光刻胶则安然无恙。
  4. 显影与“雕刻”:像洗照片一样,用化学药水把那些变软的光刻胶洗掉。此时你会发现,只有没被光照到的光刻胶完好无损地保留下来了,它们完美地“复印”了底片上的黑色电路图案!接着,工程师用强酸去腐蚀硅片,由于仅存的光刻胶具有抗腐蚀性,刚刚被洗掉光刻胶的“空白裸露区域”会被酸液刻出一道道沟槽,而躲在光刻胶保护层正下方的硅则完好无损。最后,工程师洗掉这层充当保护壳的光刻胶,极其复杂的“微观电路实体连线”就成功凸显、雕刻在了纯净的硅片上!

这项技术极其伟大,因为不管这块硅片上的电路网有多深不可测(哪怕有数百万、数亿根极其微小的连线),只要光线一闪,经历一次冲洗,一瞬间就能全部精细地“复印”雕刻完毕! 晶体管的大批量、工业化微缩生产由此拉开序幕。

此时,计算机的各个组件高度集成。整个计算机的体积进一步压缩到了一个“书桌”般大小。大型机在这时极度繁荣,而这也为第一代操作系统的萌芽提供了物理基础

四、 第四代(约1971年至今):微观世界的基建狂魔(大/超大规模集成电路)

第三代光刻技术一诞生,人类就在微缩化的赛道上彻底“杀疯了”。

你可能听过著名的 “摩尔定律”——大约每隔18到24个月,芯片上能容纳的晶体管数量就会翻一倍。

微缩魔法的终极形态: 从那时起,集成电路进入了大规模 (LSI)超大规模 (VLSI) 时代。工程师们在刻印精度上不断突破物理极限(从微米级突破到了今天的纳米级,相当于头发丝几千分之一的细度)。

今天,就在你这台看文章的电脑或手机手机里,那一块仅仅指甲盖大小的 CPU(微处理器) 上,已经密密麻麻地被印上了几十亿甚至上百亿个超级微型晶体管开关! 你可以想象一下,这难度堪比在第一张邮票上,用画笔极其精确地画出整个纽约市复杂迷幻的三维立体交通网图,且不能画错一笔。

正是这极其恐怖的超大规模集成技术,直接造就了极其轻薄、极其便携的个人电脑 (PC)智能手机的诞生。让计算机真正走进了千家万户的口袋里。

考试相关:在 GESP 或 CSP 等信息学考试初赛中,常考察四代计算机的核心元器件:1. 电子管;2. 晶体管;3. 中小规模集成电路;4. 大规模、超大规模集成电路。只要记住了我们比喻的“体型变化规律”,这些选择题/判断题就能稳拿。


衍生思考:硬件进化与软件爆发有什么因果联系?

通过这一节,我们清晰地看到了半个多世纪以来的硬件变迁。但很多同学会问:“我是来学 C++ 软件编程的,为什么非要深入了解硬件的发展?”

这里的底层逻辑就在于:高级语言编程生态的繁荣,本质上是靠着硬件过剩的“算力”堆出来的!

大家试想一下:像 C++ 的“翻译官(编译器)”和电脑里的“大管家(Windows操作系统)”,本身就是包含了上百万行命令的极其庞大的软件程序代码! 在第一代电子管时代,极其可怜的几 KB 内存资源,连存放几十行基本的弹道计算数学指令都非常费劲,根本不可能“奢侈”到去长期运行这样一个专门负责后勤管理的庞大系统级代码。

只有当晶体管变成了比面粉分子还小的几十亿个纳米开关,让硬件算力和存贮空间出现了成千上万倍的暴涨后,机器才终于“有资格、有余力”将极富余的算力资源腾出来,放心地交还给你写的高级软件语言去消耗。

下期预告

我们花了整整第四篇文章,梳理并解决完了底层的物理元件迭代。现在,那座坚实的指甲盖城市(VLSI级硬件底座)已经全部竣工。

接下来,轮到软件工程师了!一连串枯燥的、只能在纸带上打孔的早期机器码,要变成人类看得懂的高级语言(如 C++),中间仍隔着一道巨大的“鸿沟”——那是硬件指令与人类自然逻辑之间的巨大差异。

下一期,我们将探讨填平这道鸿沟的魔法:高级语言和操作系统


本文由coderli.com原创,按照CC BY-NC-SA 4.0 进行授权

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

luogu-”系列题目可在 洛谷题库 在线评测。

bcqm-”系列题目可在 编程启蒙题库 在线评测。

GESP/CSP认证交流QQ群: 688906745

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
最后更新于