图灵奖得主 Alan Kay 近日在 Quora 上回答了一个看似基础却极易引发误解的问题:诞生于二战时期的巨型计算机 ENIAC,究竟有没有 BIOS?Kay 给出的答案十分决绝:ENIAC 既没有 BIOS,也不存在任何类似的基础输入输出机制。他甚至更进一步表示,自己始终倾向于不把早期的 ENIAC 归类为严格意义上的存储程序计算机。
在现代认知体系中,计算机只要接通电源,屏幕上就会跳出主板自检界面,这一流程被绝大多数从业者视为理所当然的基建。然而把 BIOS 的概念生搬硬套给 ENIAC 是一种典型的时空错位。作为底层引导与硬件抽象的交汇点,BIOS 从来不是计算体系与生俱来的器官,而是经历了整整 35 年的软硬件博弈,才从昂贵存储与工程妥协的夹缝中成形。
ENIAC 的物理脉冲本质与无代码现实
1945 年至 1946 年投入使用的原始 ENIAC 是一台纯粹依靠电子脉冲流动的十进制并行巨兽。机身内部布设了 20 个十位累加器、高速乘法器、3 个函数表以及主程序员单元,但整套系统里完全不存在用于存放操作码的指令内存。
工程师在调度 ENIAC 时,并不是向芯片写入一段程序,而是由操作员手持密密麻麻的数字电缆与脉冲程序电缆,在机柜间物理插拔。程序逻辑直接对应物理连线的通断,算法运行则由 Cycling Unit 统一发放的时序脉冲驱动。若想启动系统,依靠的是配有电源、清零和启动按钮的 Initiating Unit,其本质是给各部件接通高压直流电并发出首个触发电平,与所谓的通用引导程序毫无交集。
学界对 ENIAC 计算属性的争论长达半个世纪。1948 年 9 月,数学家 Richard Clippinger 在报告《A Logical Coding System Applied to the ENIAC》中提出了一套改造方案:利用约 60 种基本指令与脉冲转换器,把机器原有的函数表临时挪作只读指令存储器。这次改动确实让 ENIAC 勉强拥有了集中编码计算机的特征,但这一后天加装的临时体系,离现代由固件托底的微机架构依然相差万里。
零代码死机环境与人工自举
进入 1960 年代,以磁芯为核心的计算机在断电后虽能保住部分数据,但在机器初次通电或彻底清零时,内存里依然是 空无一物。由于当时只读存储器(ROM)的制造成本极其昂贵,硬件设计者并没有留出安放引导程序的固化空间,不得不将这一复杂度转嫁给一线操作员。
没有片上代码的年代,机器是冰冷的物理堆叠,第一口气必须由人类手工注入。
在 DEC 推出的 PDP-8 小型机上,操作员在开机时需要对照代码表,一格一格拨动前面板上的微型开关,手动输入长约几十行的 RIM(Read-In Mode)自举程序,才能让纸带阅读机把后续的大型加载程序拉入内存。随后的 PDP-11 早期型号依然维持着这套繁重的面板操作流程,直到后来配上 32 字二极管 ROM 模块,硬件才终于学会自动读取存储介质。
Kay 特别提到的 CDC 6600 超级计算机,同样采用了这套思路。机房前端装有一块 12×12 的开关矩阵。外界往往误以为这个面板是直接拨给主处理器的,但实际上当时由西摩·克雷操刀的设计十分冷峻:这 144 个开关排出的 12 条 12 位指令,在按下启动键瞬间直接灌入 0 号外围处理器(PP0)内存的 0001 地址,由 PP0 这个辅控芯片去驱动外部磁带机,再反手将操作系统装载进那颗 60 位的主中央处理器。
- 结论.冷启动的开关面板看似具备早期朋克式的机械美感,实则是半导体储存技术尚未成熟前,工程师面对硬件失忆状态不得不付出的体力代价。
抽象分离与 1981 年的硬件定稿
很多人将 BIOS 的诞生算在 IBM 头上,这同样忽略了软件工程的真实源头。BIOS 这一缩写最早由 Gary Kildall 在 1974 至 1975 年研发 CP/M 操作系统期间确立,1975 年的代码档案中已清晰载有其全称标识。
在 1976 年的 CP/M 1.3 版本中,Kildall 做了一项分工切割:将负责通用逻辑的 BDOS 与处理终端、软驱接口的 BIOS 彻底解耦。此时的 BIOS 并不是一块芯片,而是一段动态载入内存的纯软件抽象层。第三方硬件厂商只要按照规范写好这几百个字节的 I/O 跳转表,就能在自己的 8080 或 Z80 机器上流畅运行 CP/M,计算机工业的兼容生态自此萌芽。
真正的现代形态一直等到个人电脑浪潮爆发才告成型。1981 年 8 月 12 日,IBM 发布 Model 5150 个人电脑。为了建立软硬件标准分界线,工程师将此前定稿于 1981 年 4 月 24 日的底层汇编代码,烧录入主板位于物理地址 F0000h 的 ROM 芯片中,并在官方技术手册 Pub 6025008 中附上了完整的源代码清单。
这颗仅有 8KB 容量的 ROM 确立了软硬件交接的标准契约:上电自检(POST)、初始化硬件、设立 INT 10h 到 INT 16h 等中断向量,最后移交执行权。从此,底层硬件驱动不再需要操作员拨动开关,也不必依赖磁盘引导区的第一张扇区临时写入。这套被牢牢焊死在主板上的只读机制,奠定了后世 30 年微机运作的通用基座。
