一、女贞路,1993年9月7日
两个摄魂怪被守护神咒击退,慌忙逃窜。银白色的光芒在身后紧追不舍,它们穿过女贞路的树影,翻过几排屋顶,顺着一条无人的街道飘向伦敦深处。其中一缕碎片被冲击波震散,在慌乱中脱离主体,像一片被扯破的黑色纱帘,在高空中失去了方向。
那片碎片没有目的地,只是被风推着走。飞过泰晤士河,滑过几排亮着灯的窗户。
它已经没有"意识"了。没有了饥饿,没有了方向,甚至没有了"摄魂怪"这个身份。它只剩下一件东西:一个纯粹的动作残余。
那个动作曾经被翻译为"吸取"。在物理世界里,它表现为寒冷、空洞、黑暗。在数据世界里,这个动作的等价物是------"一次性覆盖多个对象"。当摄魂怪飘过人群,它一次性吻了所有人。它不挑食,不分先后,只是张开嘴,呼气,然后所有被覆盖的人都空了。
它带着这个动作的残余,飘进了伦敦某街区一家不起眼的酒店里。
二、伦敦某酒店,凌晨两点四十一分
英特尔工程师斯坦利·马祖尔从浅睡中醒来。他摸了一下自己的后颈------温的,但指尖残留的触感告诉他,刚才那里是凉的。
白天刚结束一场欧洲的学术会议,明天就要飞回加州。他睡不着,索性打开笔记本电脑,翻看白天收到的内部文档。
团队在争论一个方案:"能不能让一条指令同时处理多条数据?"
理论上是可行的。但所有人都觉得这个想法"太贪婪了"------处理器一次只做一件事,这是冯·诺依曼架构的体面。一次性做多件事,那不成怪物了?
斯坦利盯着屏幕,光标在空行上闪烁。
那一刻,房间的温度下降了半度。窗外伦敦的夜空下,有一缕极其微弱的黑色纱幕飘过他的窗台。它已经没有"意识"了,只剩下那个动作的残余------呼出一口寒气,覆盖整个房间,然后离开。
斯坦利只觉得后颈的毛孔又缩了一下。然后他的手指开始敲键盘。
他写下了一行注释:
```
; TODO: 单指令多数据流 (SIMD) --- 一次处理多个数据元素
; 内部代号:贪婪模式 (Greedy Mode)
```
他不知道"贪婪"这个词是从哪来的。他只是觉得这个名字"刚好合适"。
他存了文件,关上电脑,躺回去。那缕碎片已经飘远,消失在伦敦凌晨的雾里。
斯坦利闭上眼睛,再没想起这件事。
三、酒店外的街道
清晨六点,保洁员在酒店门口的垃圾桶旁捡到一张报纸。头版右下角有一条不起眼的本地新闻:
"女贞路区域昨夜发生短暂电力异常,居民报告一阵不明寒潮,气象局称系低空冷锋过境。"
保洁员把报纸叠好,扔进了回收袋。
没有人知道,那片黑色的纱幕已经搭上了凌晨第一班跨洋航班的经济舱------但不是以任何实体形态。它附着在某个乘客的笔记本电脑的散热口上,随着飞机向西飞去。
三周后,斯坦利在加州办公室的会议室里向团队展示了那份草稿。当有人问到"贪婪模式"这个代号时,他愣了一下:
"这是我写的吗?......行吧,反正我们不会用这个名字。"
最终发布的名称是MMX------MultiMedia eXtension,人畜无害,干净体面。
但在英特尔内部的设计文档版本历史里,第一版的作者注释依然保留着一行小字:
"初始方案,代号:贪婪模式。1993.09.07,02:41,伦敦。"
版本历史可以编辑,但那行注释从来没人删过。
四、后来的事
MMX发布后,程序员们很快发现了一个特性:一次处理8个数据元素,速度提升明显,但执行单元的温度会急剧上升。连续使用MMX指令,处理器会发热、降频、甚至死机。
后来的SIMD指令集升级,一次吞噬的数据越来越多------16个、32个、64个。每一次升级都意味着更烫的散热器和更吵的风扇。
没有工程师把这些现象和1993年伦敦某条街道上的寒潮联系起来。
但如果你在深夜拆开一台运行AVX-512指令集的服务器,在它执行高强度计算任务的瞬间,把手放在CPU散热器的铜管上------你会感觉到一种短暂的、微弱的、像叹息一样的热风。
那不是热风。
那是某片碎了的黑色纱幕,在一个不知自己属于魔法还是硅晶的角落里,反复练习着它唯一会做的事:张开嘴,覆盖所有东西,然后离开。