科学:为什么只有0和1的计算机,就能让我们做这么多事?计算到底是指什么?
发布时间:2026-11-09来源:图灵人工智能
引言
编者按:引言部分先回答一下题目的大概,正文在下面。本文也很长,很多人说为什么都是长文,应该是因为文章基本都涉及历史梳理,以及小故事,所以没法总结成小短文,大家可以接住AI总结。
计算机的“0 和 1”从来不是“只能表达两件事”,而是用两种最容易被物理器件稳定区分的状态,去编码任意多的符号、规则和结构。它能处理这么多事情,靠的不是 0 和 1 本身有多神奇,而是下面几层东西叠在一起。
第一,0 和 1 是最小字母表,但位数可以无限扩展。
一位只有两种状态,两位就有四种组合,三位有八种,n位就有 2的n次方种组合。字母、数字、颜色、坐标、指令,都可以被编码成不同长度的 0/1 串。所以“只有两个符号”不等于“只有两种信息”,就像只有 26 个字母也能写出无数文本。
第二,0 和 1 对应的是可靠的物理区分。
高电压/低电压、通/断、有电/没电,这种二值状态抗干扰强、容易级联、容易规模化。计算机不是先有“0 和 1 的哲学”,而是工程上发现:把连续世界离散成二值,再用大量二值组合去逼近复杂计算,最稳、最便宜、最容易做大。
第三,逻辑可以被电路化。
布尔代数把“与、或、非”变成可运算的规则;香农又指出,开关的串联、并联、反接正好对应这些逻辑。于是“推理”被翻译成“门电路的输出”。加法器、比较器、寄存器,都是逻辑门按规则组合出来的。机器并不理解加法,它只是让电信号按照门电路的结构稳定地产生结果。
第四,通用性来自“程序也是数据”。
图灵机证明了:只要具备读写符号、按规则改写、条件跳转这些基本能力,一台机器就能模拟其他机器的规则。存储程序架构更进一步:指令和数据放在同一个内存里,机器按节拍取指、译码、执行。于是同一堆硬件,换一串 0/1,就能变成计算器、播放器、游戏机。它什么都不会,只会执行下一条指令;而“只会执行下一条指令”恰恰就是万能的基础。
第五,复杂来自分层抽象。
人不可能直接对着晶体管写游戏。于是有汇编、C、Python、游戏引擎、图形 API。每一层都把下层的复杂性藏起来,向上提供更干净的接口。你写一行“角色向前移动”,下面可能经过编译器、操作系统、驱动、CPU 指令、逻辑门、晶体管通断。0 和 1 是底层字母,抽象层是语法,二者合起来才能处理复杂事情。
第六,很多“连续”的东西是被离散化和近似出来的。
声音被采样成数字,图像被分成像素,物理被切成每帧 16.6 毫秒的状态更新。计算机并不直接处理“连续的世界”,它处理的是足够细的离散切片。切片够密、更新够快,人看到的就是连续的画面和流畅的交互。
所以,一台只有 0 和 1 的计算机能处理这么多事情,根本原因可以压缩成一句话:0 和 1 提供最小、最可靠的物理符号;逻辑门把符号变成运算;程序把运算组织成规则;存储程序让同一台机器可换规则;抽象分层让人能驾驭复杂性;高速时钟和并行硬件让海量符号变换快到足以模拟世界。
机器负责的始终只是“按规则改写符号”。意义、目标和体验,是人赋予的。计算机之所以万能,不是因为它懂一切,而是因为它可以被组织成执行任何可描述规则的系统。 正文
1962年,麻省理工学院的机房里刚搬来一台 PDP-1 小型机(Programmed Data Processor-1),是迪吉多公司(DEC)于1960年推出的首款商用小型计算机。

DEC 公司把它送到学校,原本指望研究员们拿它做点正经研究,然而有一帮人,他们却在琢磨着怎样在计算机上做一些更好玩,更酷的事。他们平日里捣鼓各种电子元器件,爱搞恶作剧,在编程时会弄点小把戏。其中,在MIT,有一个学生社团叫“铁路模型技术俱乐部”,他们的俱乐部里摆满了各种电线、零部件、模型。

铁路模型俱乐部那帮小伙子上手干的第一件大事,是给它写了个游戏,主要负责人就是史蒂夫·拉塞尔。他们在这台机器上造出两艘飞船,两名玩家各自操控一艘,它们是以针形和楔形图形代表的太空船,用导弹(或鱼雷)相互攻击,直至击毁对方,这就是《太空大战》。

早在1952年,剑桥的 EDSAC 上就跑过一个井字棋程序,OXO。可那只是个验证算法的演示品。真正让玩家头一回面对面实时对轰,让“电脑游戏”这个词有了灵魂的,是它。机房从早到晚挤满围观的人,排队上机的队伍比选课还长。
现在把镜头怼进这台机器子。PDP-1 不懂什么叫飞船,不懂什么叫引力,更不懂什么叫游戏。它这辈子只认识一样东西:高电压和低电压,也就是0和1。你的飞船是一串0101,引力公式是一串0101,连按下开火键这个动作,进了机器照样是一串0101。问题就在这:一堆0和1,凭什么能让你打游戏?
要回答这个问题,得先离开机房,去看人类文明最底层的几条线索。说到底,人类文明可以压缩成三大原理:扔石头、烧开水、关开关。扔石头是力学。初速度达到每秒7.9公里,石头就绕着地球转圈,不再落地。火箭卫星全在这一扔里。烧开水是能源,甭管烧煤、烧油还是核反应堆,终点都是推着蒸汽轮机转。关开关是信息,通是1,断是0。整个数字文明从这两个状态里长出来。
计算到底是什么?
一万年前没有计算机,但计算的雏形已经有了。想象一个原始部落的采集者,每天背着一个皮袋出去采野果,晚上背着皮袋回来。他得搞清楚一件事:出去时袋子里装了多少颗备用的石子,回来时就要对应多少颗果子。数对不上,第二天部落里多半会有人饿肚子。
可那时候还没有数字。他连数都不会数,办法照样有。每采到一颗果子,他就往另一个小袋里丢一颗石子;晚上清点果子,取出一颗就扔掉一颗石子。石子全扔完,果子一颗不少,齐了。
石子在这里干的事,就是计算最底层的那个动作:映射。现实世界的果子又多又乱,没法直接摆弄,那就拿另一套方便摆弄的东西去对应它,在对应物上做推演,推演完了再对应回现实。果子和石子一一对应,石子的状态就是果子的状态。
后来果子越采越多,小袋里的石子不够使了。这位采集者又发明新招:每凑齐五颗石子,就换一个贝壳放到另一边。晚上对账,一个贝壳抵五颗果子,进制就这么出来了。他的账本天然就是五进制。语言、数字、账本,人类整套符号系统,全是这么一层一层映射搭出来的。
既然计算能映射到石子、贝壳和绳结上,那它当然也能映射到机器上。这个念头一旦出现,剩下的问题就是:用什么材料来承载“对应物”,用什么结构来执行“推演”。

二进制,机器开始替人推演
1642年,法国数学家、物理学家布莱兹·帕斯卡刚刚19岁,看他父亲收税收得焦头烂额,便造出一台加法器,一排刻着0—9的齿轮。先转到3,再转5格,指针就停在8。进位也有办法:一个齿轮转满一圈,旁边的拨爪就把高位齿轮推一格。数字映射成齿轮的角度,加法映射成齿轮的咬合,机器替你推演,你把结果读回来。

帕斯卡的机器只会加,但是只能做加减运算。1694年,莱布尼兹在德国将其改进成可以进行乘除的计算器,之后(1703年)还正式发表论文,把二进制整理成完整体系,0和1,逢2进1。后来他通过在华传教士接触到中国的易经,一看64卦,阴爻阳爻排起来同自己的二进制是一个路数。他激动不已,认定远古的东方圣人早就摸到了宇宙的密码。二进制此后成为一切数字机器的通用语言。
但机械计算器有个硬伤:每种计算都得单独设计一套齿轮。规矩焊死在铁器械里,想让它干别的,只能回炉重造。
1804年,法国人约瑟夫·玛丽·雅卡尔(Joseph Marie Jacquard,1752年-1834年)给织布机装上打孔卡片,卡片上一排孔洞决定织机的动作。换一叠卡片,同一台织机就织出完全不同的花纹。机器要干什么,第一次软硬件分了家:硬件不动,换张卡就行。他只想快点织布,却一不小心成了计算机发展的引领者。他的发明受到大家的奖赏和赞许,但他为了躲避织布工匠的追捕而亡命他乡,逃离了里昂城—因为工匠们害怕他的发明会砸了大家的饭碗。然而,织布机最终还是越来越流行。他逝世时,里昂市的织布机总量已超过30000台。

巴贝奇盯上这套卡片,要造一台靠打孔卡片下达指令的分析机。他的合作者阿达·洛芙莱斯,在给机器写的注释里,顺手编出人类历史上第一段程序。可惜巴贝奇到死也没把机器造完。但“程序存在卡片上,机器读卡执行”这个念头已经起了眉目。真正把这个念头实现的,是1936年,一个24岁的剑桥学生。
什么是可计算?
事情的起因是数学界的领头人希尔伯特在1928年抛出一个野心勃勃的问题:能不能找到一套机械流程,往里丢任何数学命题,它都能按部就班地判定真伪?图灵在《论可计算数》里给出了否定的答案。而为了将“机械流程”这四个字钉死,他被迫先回答一个更根本的问题:什么叫可计算?
答案是一台假想的机器:一条无限长的纸带,一个读写头。读写头每次只做三件事:读格子上的符号、照一张规则表改写符号、或者往右挪一格。就是这样简陋的机器,图灵告诉我们,凡是能算的东西,它都能算。它还更进一步:把别的机器的规则表也写在纸带上,这台机器就能模拟那台机器。一台机器模拟一切机器,读写符号加读写头跳转,就能衍生出世界上所有的计算。今天你的手机、超算、AI服务器,论能算什么,全都没超出这条纸带。
纸带听着科幻,其实你小时候多半玩过它的亲戚——八音盒。那种纸带式八音盒,纸上一排排孔,有孔是1,没孔是0。探杆扫到孔就拨动对应的簧片,一行孔就是一条指令。照这个思路,完全可以造这么一台机器:第一位有孔就加红茶,第二位有孔加绿茶,第五位有孔扔大珍珠,第六位扔小珍珠,第七位加香草,最后一位有孔就盖盖子。打几行孔,机器一路读下来,一杯加了大珍珠和香草的红茶就做好了。
不过,八音盒离图灵机还差关键一口气:它只会顺着纸带往下读,读写头不会跳。图灵机的读写头能跳来跳去,就多出这一个本事,机器就从一张固定菜单变成了万能机器。顺序执行加条件跳转,天底下所有程序,包括你硬盘里那几百个G的游戏,拆到底都是这两样。
图灵为了把“机械流程”说清楚,构造了“通用图灵机”:一台机器模拟一切机器。
这里的关键不是纸带多神奇,而是它把“计算”拆成了两个最基本的动作:顺序执行和条件跳转。八音盒只会顺着纸带往下读,所以它是一张固定菜单;图灵机的读写头能根据当前符号跳到不同规则,所以它从固定菜单变成了万能机器。天底下所有程序,包括你硬盘里的游戏,拆到底都是这两样。
所以“可计算”的严格含义通常指:存在一个图灵机,能在有限步内对给定输入产生指定输出。一个问题“可判定”,则是指存在机械流程,对任何输入都能在有限步内回答是或否。希尔伯特想要的是这样一种万能判定流程;图灵和丘奇等人的工作表明,并非所有数学问题都能这样机械判定,停机问题就是典型例子。
一句话概括:可计算,就是能被一套有限、确定、机械的规则在有限步内完成;图灵机是这套直觉的形式化,而“顺序执行加条件跳转”是它之所以万能的关键。
从布尔到香农,机器长出了逻辑
理论到位了,还差物理实现。图灵机活在纸上,怎么造一台真的?这里要先补一块逻辑的拼图。乔治·布尔(George Boole,1815年11月2日-1864年12月8日),英国数学家,出生于英格兰林肯 ,他是皮匠的儿子。

1854年,乔治·布尔出版《思维规律的研究》提出布尔代数,也称逻辑代数,将真和假变成可以算的东西。真与真得真,真或假得真,非真即假。逻辑推理在他手里成了代数,能列式,能化简。当时没人觉得这玩意有用,纯属数学家自娱自乐。
80多年后,一个21岁的年轻人把这门没用的学问和电路焊在了一起,他就是克劳德.香农。

1937年,香农在麻省理工写硕士论文,题目平平无奇:《继电器与开关电路的符号分析》,内容却石破天惊。其中涉及内容开关的通和断,正好对应布尔代数的真和假。两个开关串联,两个都通电才有输出,这就是“与”;两个开关并联,通一个就有输出,这就是“或”;反接一下,通变断、断变通,这就是“非”。
逻辑代数里的每一条规则,都能拿开关电路原样搭出来。这篇论文后来被叫做20世纪最重要的硕士论文。
从这一刻起,电的开和关,正是模拟的真和假。计算机全部的秘密就这一句话,剩下的一切都是它的推论。
ps:11年后,还是这位香农,又写出《通信的数学理论》,一手开创了信息论。
开关用什么做?电子管?晶体管?
开关用什么做,又折腾了几十年。早期用继电器,电磁铁吸合触点,咔哒咔哒响,1秒切换几十次。1941年,德国人楚泽用2000多个继电器造出 Z3,人类第一台能跑程序的自动计算机,读的是打了孔的胶片。后来换上电子管。1904年弗莱明搞出二极管,1906年德福雷斯特搞出三极管,抽成真空的玻璃泡,靠电极电压控制电子流,一秒能开关上万次。
1946年2月14日,世界上第一台通用电子数字计算机“埃尼阿克”(ENIAC,全称电子数字积分计算机)在美国宣告诞生,并于次日正式对外公布 [3]。该计算机由物理学家莫克利(J.Mauchly)与工程师埃克特(J.P.Eckert)领导的团队研发,它18000个电子管,30吨重,每秒5000次加法,比此前任何机器快上千倍。

代价是电子管跟灯泡一个命,18000根管子平均隔几小时就烧一根,维护人员满屋子换管子。它还有个要命的毛病:脑子里没有程序的概念。
让它算弹道,得靠6位女程序员趴在地上重新插几百根线缆,拧几千个开关,换个任务就折腾好几天。机器快得飞起,人趴在电缆堆里。顺便说一句,这6位女性就是人类最早的程序员之一,她们的合影在宾大的档案里躺了40年才被人翻出来。6位程序员分别是Jean Jennings Bartik、Betty Holberton、Marlyn Wescoff、Kathleen McNulty、Ruth Teitelbaum和Frances Spence,均出身宾夕法尼亚大学摩尔学院,最初被招来从事弹道计算,因数学能力突出被选为ENIAC的首批程序员。
没有编程语言、没有编译器、没有操作手册,她们只能对着巨大的“蹬板表单”在纸上追踪每一步程序逻辑,再手动插拔几百根线缆、拨动几千个开关来物理配置机器。 换一个计算任务,整套过程就得重来,往往耗时几个星期。 就是在这样原始的条件下,她们发明了子程序和程序嵌套等基础编程技术,为后来的软件工程埋下种子。

1947年12月,贝尔实验室的巴丁和布拉顿用锗做出点接触式晶体管。肖克利随后搞出更实用的结式晶体管。三个人9年后一起拿了诺贝尔奖。晶体管用半导体做开关,没有玻璃泡,没有灯丝,靠控制极上的电压决定导通还是断开,体积一路往小里做。今天的3纳米工艺,一块指甲盖大的硅片上能塞几百亿个。每个晶体管只干一件事:通或者断。高电压记作1,低电压记作0,没有第三种状态,没有例外。芯片的原料是硅,硅来自沙子。你电脑里那个战天斗地的世界,祖上真是一粒沙子。
加法器、寄存器、内存
有了晶体管,就可以按照香农的思路搭建逻辑门。逻辑门一旦具备,计算能力就不再是外加的东西,而是从电路结构中自然生长出来的。很多人以为加法是一种高级运算,其实只要把几个逻辑门组合起来,加法就会自己浮现。二进制加法只有四条基本规则:0+0 得 0,0+1 得 1,1+0 得 1,1+1 得 10。
把它拆开看,当前位的结果是,两个输入不同则为 1,这正好由异或门完成;进位则是两个输入都为 1 才进位,这正好由与门完成。一个异或门加一个与门,就能在物理层面实现一位二进制加法,这个组合叫半加器。把若干个半加器连接起来,并处理好进位信号,就得到全加器。再把 64 个全加器排成一行,就构成能执行 64 位加法的电路。
晶体管 → 逻辑门 → 半加器 → 全加器 → 多位加法电路。它想说明的不是“加法很高级”,而是“加法可以被拆成最基础的逻辑判断,然后由电路直接长出来”。
在代码里敲下一句 A = B + C,看似只是一行普通表达式;但在硬件层面,真实发生的是两股电信号同时涌进那组逻辑门,经过几纳秒的传播延迟后,输出端稳定为一个结果电平。减法怎么实现?把减数变成负数再相加。乘法呢?本质上可以拆成反复相加。除法呢?可以理解为反复相减。所以从某种意义上说,只要有了加法,其他算术运算都能在此基础上构造出来。
算术逻辑单元(arithmetic and logic unit) 是能实现多组算术运算和逻辑运算的组合逻辑电路,简称ALU。它没有任何玄学,就是一堆门电路按数学规则焊死的网。要想亲手把这层楼搭一遍,《图灵完备》(Turing Complete)是 Steam 上一款以“从零手搓 CPU”为核心玩法的硬核教育游戏,从与非门起步,加法器、寄存器、指令解码,一路搭到能跑汇编的 CPU,通关约等于亲手造出一台计算机。大学那几门数电、计组、汇编学起来如履平地。当然,大多数人卡在加法器那关就烂尾了。
光会算还不行。算完的结果是一堆电信号,输入一撤,结果瞬间消失。这种电路没有记忆,没有记忆就没有变量,没有存档,没有游戏。
工程师给逻辑门接了个诡异的回路,把输出端绕回输入端。这种结构一旦进入某个状态,就靠内部反馈死咬住不放,撤掉输入也不松口,直到下一个写入信号进来,这叫触发器。
64个触发器排成一排,就能记住一个64位的数,这就是寄存器。寄存器贴着运算器放,信号传输距离最短,快得离谱,也贵得离谱。CPU 里统共只有那么一点点,存大东西得靠内存。
DRAM (Dynamic Random Access Memory,中文叫动态随机存取存储器)做法简单粗暴:一个小电容,有电是1,没电是0。一个晶体管配一个电容存一位,结构极简,容量能堆很大。代价是电容漏电,漏得像破筛子,几毫秒就能漏干。存的1悄没声息变成0,主板上的控制电路只好每隔几十毫秒把全部数据读出来,再原样写回去,一刻不停地续命。你在游戏里读存档,背后是几十亿个破筛子,以每秒几十次的频率集体“补水”。断电即丢,这才需要硬盘和 SSD 这种断电不丢的仓库。
快、大、便宜,存储界的不可能三角。越靠近 CPU 越快、越小、越贵,80年没变过。内存再快,跟 CPU 比还是慢。CPU 一个周期不到1纳秒,去内存取一趟数据要几十上百纳秒,等于每取一次货就空转上百个节拍。算得越快,等得越痛,这就是著名的冯·诺依曼瓶颈。
工程师几十年来全在给这个死穴打补丁:案板旁边加个小抽屉,常用数据放手边,这叫缓存;趁等数据的空档,先把下一条指令拆开处理,这叫流水线;一个厨子不够就往屋里塞,这叫多核。这些补丁后面还会出场。先记住一件事:计算机80年的一大半功夫,都耗在怎么少搬数据、少等数据上。
程序和数据
零件到这就齐了:加法器会算,寄存器和内存会记。但这是一堆死物,谁先动谁后动,没人指挥。1945年6月,冯·诺依曼写下那份 EDVAC 报告初稿,给出整个故事里最关键的一条:把程序和数据塞进同一个仓库。在这以前,程序和数据是两种东西。数据进机器,程序攥在人手里,是女程序员手里的线缆,是织机上的打孔卡。冯·诺依曼的方案是:指令也编码成0和1,和数据存在同一个内存里,机器自己一条一条读出来执行。
这个设计有个初看平平无奇、细想后背发凉的后果:指令和数据在物理上没有任何区别。同一个格子里的0011001,你告诉机器这是指令,它就去执行;告诉它这是数据,它就拿去算加法。换句话说,程序可以修改程序自己,一段代码能生成另一段代码,写进内存,让机器跑过去执行刚生成的新东西。程序从一份死剧本变成能在运行中改写自己的活物。计算机就此从一台固定用途的机器,变成一台可以模拟任何机器的机器。
1948年6月21日,曼彻斯特大学的“婴儿机”(Baby,即小型实验机SSEM)首次成功运行了存储在电子内存中的程序,这是存储程序架构(Stored-Program Concept)的第一次实际验证,被视为现代计算的诞生。
今天我们电脑里的操作系统、浏览器等,本质上全是内存里的一串0和1。换一串0和1,同一台机器就变成完全不同的东西,硬件连一个晶体管都不用动。你买一台电脑什么都能干,恰恰因为它什么都不会,只会无脑执行下一条指令。而这个“什么都不会”,就是万能本身。顺带一提,这份报告当年只署了冯·诺依曼一个人的名,真正造出 ENIAC 的埃克特和莫奇利被认为才是存储程序想法的首创者。不过目前,这个还没有定性,还在争论。
CPU的节拍
这台机器运行起来的方式其实非常单调。主板上有一枚石英晶振,一通电就开始打拍子,一秒不停。芯片内部的电路再把这个基准节拍逐级放大到标称的 4GHz,也就是每秒 40 亿次节拍。所有晶体管都跟着这个节拍动作,不多一拍,不少一拍。
每个节拍里,CPU 主要做三件事:先取址,把程序计数器里的地址发给内存,把那串 0 和 1 取回来;再译码,由控制单元识别这串位模式对应哪条指令,并激活相应的电路通路;最后执行,该运算的运算,该存储的存储,同时程序计数器自动加 1。取址、译码、执行、加一,就这样循环往复,每秒几十亿次,从不停歇。
整个过程没有任何“思考”,只有一个不断重复的死循环。你写下的每一行看起来优雅的代码,最终都会被编译器拆成这种枯燥的指令,在这个循环里一条一条跑完。
游戏为什么能从这堆死循环里长出来?关键在于软件是一层一层搭上去的。直接对着机器发 0101 的电报,人受不了,于是先有了汇编,给每串位模式起一个人能认的名字。汇编还是太碎,于是有了 C 语言;C 写起来仍嫌麻烦,又有了 Java、Python;再往上就是游戏引擎,开发者拖拖拽拽,就能摆出一个世界。
这里别忘了前面那个结论:程序可以生成程序。编译器就是一个“读人话、吐机器码”的程序;游戏引擎则是一个替你生成亿万条指令的程序。它们全是冯·诺依曼“程序和数据放在同一个仓库里”那一跳的后代。每一层都是对下层的封装。你敲下的每一行高级逻辑,拨开层层包装,最后都会被碾成最原始的电信号,钻进硅片里,重复一成不变的通断。抽象的好处是程序员不必关心电子怎么流;抽象的代价是,大多数人到最后也确实不知道电子怎么流。
游戏是一个每秒转60圈的状态机
再看游戏本身。拆到底,一个游戏就是一个巨大的状态机,每秒转60圈,读你的输入,按规则更新整个世界的状态,再把新状态画到屏幕上。你的位置是一串0和1,怪物的血量是一串0和1,天空的颜色还是一串0和1。循环每转一圈,这批0和1就被按规则改写一遍。每一圈的预算只有16.6毫秒,所有的输入、处理、物理推演、画面绘制都得在这点时间里交卷。超时一毫秒,你眼前就卡一下。改写够快,你看到的就成了一个连续运转的世界。
这条链路你自己每天都在跑。你按下键盘上的 A 键,以为很简单,其实这一毫秒里,一个电信号至少穿越6层抽象。键盘里没有字母,只有开关。你的手指闭合了一个电路。键盘上上百个键不可能各拉一根线,控制器用矩阵扫描快速轮询行和列,锁定你的位置,生成一个扫描码。
A 键是 0X1E。CPU 每秒执行几十亿条指令,不可能时时刻刻盯着你按没按键。键盘控制器直接拍过去一个中断信号,CPU 暂停手头的活,查表找到处理程序,把扫描码读进内存缓冲区。操作系统按键盘布局把它翻译成字符,扔进消息队列。
游戏程序读到你按了 A,改写人物的状态,渲染引擎再把新状态画成像素,写进显存。显卡每秒几十次把显存里的数据泼向显示器,你看到了画面。物理开关、扫描码、中断、内存、字符、像素。每一层只做一件事:接住下层的输出,给上层一个干净的接口。电竞选手抠的就是这条链路上每一层的毫秒。
3D 游戏的世界,在机器眼里是一堆顶点坐标。你转身,是所有顶点乘一个矩阵;弹道向量乘一个矩阵;光影流动还是矩阵。游戏画面的本质是每秒几亿次矩阵乘法。
这种活逻辑简单到发指:乘加乘加,没有复杂分支,可量大的吓人。CPU 是为复杂逻辑设计的,大块面积给了分支预测和控制电路。让它跑这个,等于让一个精通流程管理的项目总监去亲自搬砖,一次搬一块,搬之前还得先分析砖头质量。
GPU 的思路完全相反:砍掉复杂控制,省下的地方全塞满最简陋的计算单元,成千上万的核心,同一个节拍一起干活。一屋子只会切菜的伙计,对付成吨的烂菜叶刚刚好。
1999年英伟达发布的 GeForce 256,是历史上第一款被称作 GPU 的产品。

游戏画面的军备竞赛就此开打,一路卷到今天 AI 机房里的专业计算卡。卷到后来显存带宽都不够用了,几千个计算核心干瞪眼等数据,工程师干脆把内存和计算核心封在同一块基板上,暴力改良,搞出 HBM。
从帕斯卡那个进位拨爪,到每秒千万亿次运算,快400年过去,干的事一字没变:让0和1按规则改写0和1。
回到1962年的那间机房
现在,如果我们回到1962年那间机房,就能看懂《太空大战》在干什么了。拉塞尔他们把飞船的位置写成内存里的0和1,把引力公式写成指令里的0和1,让那台只会取指执行的机器一圈一圈循环。算一遍引力,改一遍坐标,画一遍像素。两艘飞船就在 PDP-1 的屏幕上,被一堆0和1拽着转圈。
机器不懂游戏,机器也不需要懂游戏。人类负责把世界映射成0和1,机器负责以每秒几十亿次的速度推演,人类再把结果映射回来。计算的祖先是那根对着羊伸出的手指。一万年过去,手指换成了晶体管,道理一个字没改。
1958年,布鲁克海文国家实验室的锡金博坦用模拟计算机和示波器实现过一个双人网球。真正把数字游戏点着的人,还在大学机房排队。
1971年,一个叫布什内尔的工程师在犹他大学的机房里玩到《太空大战》,惊为天人,在学习之余,他也在这款游戏上耗费了不少精力,不过最终做出了《电脑空间》。
这个过程中,他逐渐意识到了其中蕴含的商业价值。后来一次采访中他说:“那时我在一个游乐园中打工,对比之下不难看出,计算机的娱乐潜力远远高于当时游乐园街机厅里所有的玩意。”。
但当时他做出投币街机《电脑空间》,操作太复杂,很多人玩不明白,卖得很惨。他不死心,转头创办雅达利。让自己的工程师阿尔康做个简单到不能再简单的练习品:两个球拍,一个光点,来回弹。该游戏在当年可谓家喻户晓,复刻过无数版本。
不过,1972年9月,这台机器叫pong,乓被抬进森尼韦尔的一家酒吧。没过几天,酒吧老板打来电话,说机器坏了,赶紧来修。阿尔康跑去拆开一看,机器没坏,是投币箱被硬币撑爆,卡死了。人类历史上第一台因为赚钱太多而罢工的游戏机。肚子里装的还是那套东西:高电压、低电压,取址、译码、执行。
从那一箱子硬币起步,50多年,游戏长成一个上千亿美元的产业。而这个产业的每一个像素,追到最底下,都是硅片上一次卑微的通断。一堆0和1凭什么能让你打游戏?凭一万年前那根手指立下的规矩:把世界映射成符号,让机器替我们推演,再把推演的结果变成你眼里的光。
结尾
屏幕上的飞船、爆炸和实时对抗,很容易让人把电子游戏当成一种魔法。但魔法只是表面。真正值得追问的是:为什么一堆本不理解“游戏”的物理器件,能够承载一个可玩的世界?
这个问题看似只属于计算机,实际上牵连着一条很长的思想线索:人类如何把现实压缩成可操作的符号,如何把规则交给机器执行,又如何让机器的高速运转重新变成人能看见、能操作的结果。
本文是从一台早期机器上的游戏出发,沿着计算、逻辑、电路、存储和图形处理的路径往下走,不是为了罗列技术名词,而是为了看清一个黑箱如何被一层层拆开,又如何在每一层重新组合成我们熟悉的东西。
回望这条线索,游戏只是一个入口。它提醒我们:任何看似“凭空出现”的数字体验,背后都有可追溯的层次结构。每一层都隐藏下层的复杂性,同时向上提供更干净的接口;每一层都既是抽象,也是约定。理解计算,不在于记住多少术语,而在于看见一个想法如何被编码、被执行、被加速,最终变成屏幕上的反馈。人类负责赋予符号意义,机器负责以远超手工的速度改写符号。二者之间那条漫长的工程链条,才是数字世界真正的底座。
Ending~











转载说明:本文系转载内容,版权归原作者及原出处所有。转载目的在于传递更多行业信息,文章观点仅代表原作者本人,与本平台立场无关。若涉及作品版权问题,请原作者或相关权利人及时与本平台联系,我们将在第一时间核实后移除相关内容。
