来源:半导体行业观察
2025-10-14 09:04:08
(原标题:汇编才是最懂芯片的)
公众号记得加星标,第一时间看推送不会错过。
来源 :内容 编译自 Wired 。
1999年,《过山车大亨》(Rollercoaster Tycoon)或许算不上最火爆的电脑游戏。但如果你深入探究像素之下——摇摇晃晃的游乐设施,饥肠辘辘、口渴难耐、呕吐不止的人群(以及在他们身后拖地的清洁工)——深入代码层面,你会看到这款游戏对工艺的执着近乎疯狂。游戏的唯一开发者克里斯·索耶(Chris Sawyer)用汇编语言编写了整款游戏。
某些编程语言,例如 Python、Go 或 C++,之所以被称为“高级”语言,是因为它们的工作方式有点像人类语言,用命令和习语编写,这些命令和习语在诗歌朗诵会上或许会用得上。一般来说,像编译器这样的软件会将这些语言转换成机器真正能读懂的东西:由 1 和 0(或者可能是十六进制)组成的数据块,用来告诉实际的晶体管如何工作。汇编语言是“低级”语言中最低级的一种,它与机器的母语几乎一一对应。它直接在机器上编码。用汇编语言开发一款复杂的电脑游戏就像用脱落的猫毛编织挂毯。
为什么有人会这么做?效率是原因之一。在 20 世纪 90 年代,高级编程的工具并不齐全。编译器非常慢。调试器也很糟糕。索耶可以通过使用英特尔芯片的通用语言 x86 汇编语言来避免这些问题。
但我们都知道,这并非真正的原因。真正的原因是热爱。在转向过山车之前,开发者Sawyer 用汇编语言编写了另一款游戏《运输大亨》(Transport Tycoon)。玩家将负责管理城市的道路、火车站、跑道和港口。我(指代本文作者Gregory Barber,下同)想象 Sawyer 是一位模型火车爱好者——铺设每一段轨道,手工缝制人造草皮,每个细节都是一种选择,也是一种苦差事。为了将这些精心制作的像素从位图移动到显示器上,Sawyer 必须充分发挥芯片的潜力。“我之所以创作《过山车大亨》,是因为我了解可能性的极限,”他告诉我。
在极限内工作?在这个数字资源丰富的时代,在 AI 训练算法中调用一个函数就能调动数百万个 GPU,这或许是一个陌生的想法。而使用汇编语言,你只能得到一件事,那就是你想要的东西——即使它是错的,正如许多程序员从惨痛经历中吸取的教训。汇编语言正是如此残酷而美丽。它要求你准确地表达你的意思。
我辜负了汇编语言的创造者。他们希望事情变得更简单,而不是更难。我想他们一定厌倦了在他们的蒸汽朋克巨兽身上加载穿孔卡和拨动开关。也许他们梦想着一个像我们这样的世界,计算机只需极少的指导就能做很多事情。
第一种汇编语言是由凯瑟琳·布斯(Kathleen Booth)在 20 世纪 40 年代创建的(尽管令人惊讶的是,她并不总是得到应有的重视),它几乎不像语言。代码代替了代码。要告诉机器执行某个操作——比如用机器码输入“0,0111”——你需要使用一系列字母和符号,然后一种名为汇编程序的新软件会将其转换为二进制。很快,这些命令就变成了更人性化的助记符,比如“MOV”。
了解汇编就等于了解 CPU 本身——它能做什么,甚至不能做什么。芯片的物理设计,即连接“与”和“异或”逻辑门的电路是如何布局的,决定了它是如何工作的。它的功能非常基础,将指令分解成几个基本步骤:从内存中获取数据并将其放入一个称为寄存器的临时空间中。在那里对其进行解码。执行一些操作,例如比较两个值或将它们相加。将数据从内存中返回。
随着芯片的进步,新的汇编语言也应运而生。将人类首次送上月球的代码就是汇编语言——它只为一款芯片设计——那就是阿波罗11号制导计算机。如果你想阅读泄露的Furby源代码,你需要精通6502。要破解你的Ti-83计算器,你需要z80。学习一种芯片的语言——比如英特尔的x86——然后转向Arm,就像在贝鲁特学习阿拉伯语,然后试图在突尼斯或喀土穆混日子一样。祝你好运。
我在大学里学习了x86汇编,当时我是一个数学难民。我的同学们似乎都喜欢枯燥乏味的Java代码,而我却热爱汇编这种逻辑游戏。汇编很容易出错,但如果你看看电路和寄存器,就会明白为什么会出错。我感觉自己能够熟练地使用这种不太像语言的简单命令来编写代码;但我也知道这种熟练是多么脆弱。也就是说,把这些字节放在那里——不,放在那里,放在那个寄存器里,放在那些电容器里。记住这一点。忘掉那一点。继续努力,一个接一个地绘制每一个小雕像。
诚然,在日常编码工作中使用汇编语言已经没有多大意义了。高级语言效率极高,它们的抽象几乎总是更受欢迎。就连汇编语言的发明者也转向了其他领域;Booth 在 20 世纪 90 年代的一篇最后论文中,就使用了神经网络来匹配海豹的叫声。Sawyer 也转行了。他最近开始涉足家庭自动化领域——灯光、温度传感器、音响系统等等,都是用 Python 在树莓派上编写的。他告诉我,一开始觉得 Python “挺让人反感的”。但即使在那个微型处理器上,Python 也能很好地完成工作。
然后出现了像 DeepSeek 这样的东西,提醒你人类仍然可以更好地与硬件沟通。今年早些时候,一家制造了这些高效人工智能模型的中国公司颠覆了人工智能进步只能依靠更多芯片和更多能源的陈词滥调。汇编语言就是一个令人惊讶的原因。 DeepSeek 的工程师们深入 Nvidia 芯片底层,命令每台机器在恰当的时机将数据从 32 位压缩到 8 位——牺牲精度换取效率。旁观者惊呆了。你能做到?DeepSeek 的工程师们掌握了一门大多数人都忘却的艺术。
同样让我震惊的是,2023 年,DeepMind 的研究人员教会了一台机器 x86 汇编语言,然后让它改进 C 语言中长期存在的 sort() 函数。AI 做出了一些奇怪且违反直觉的选择,在寄存器之间进行奇怪的跳转,最终却精确地减少了一步。或许节省了不到一毫秒的时间。但自从新算法正式采用以来,这种情况每天都在发生无数次。
对我来说,这提醒了我,我们人类创造了这些机器,即使它们似乎变得越来越复杂,超出了我们的理解范围,它们仍然在我们的掌控之中。我们总能让它们更好地工作。这就像 Sawyer 讲述他最近用 Raspberry Pi 在家编程实验时说的那样。他想,这可能只是他的错觉,但显示有点卡。他说,如果可以的话,他会重写代码。可惜的是,Sawyer 和这台机器使用的汇编语言不一样。
https://www.wired.com/story/programming-assembly-artificial-intelligence/
*免责声明:本文由作者原创。文章内容系作者个人观点,半导体行业观察转载仅为了传达一种不同的观点,不代表半导体行业观察对该观点赞同或支持,如果有任何异议,欢迎联系半导体行业观察。
今天是《半导体行业观察》为您分享的第4194期内容,欢迎关注。
加星标第一时间看推送,小号防走丢
求推荐
半导体行业观察
2025-10-16
半导体行业观察
2025-10-16
半导体行业观察
2025-10-16
半导体行业观察
2025-10-16
半导体行业观察
2025-10-16
半导体行业观察
2025-10-16
证券之星资讯
2025-10-16
证券之星资讯
2025-10-16
证券之星资讯
2025-10-16