第152章 芯片火种
作品:《 香江:从破产电器厂到全球巨头》曙光一号项目正式启动之后,林知夏几乎住在了实验室里。他把角落那张旧木桌改成了自己的固定工位,桌上堆满了手绘的时序图和从美国带回来的芯片设计手册,有些手册的边角已经被反复翻阅磨得起了毛边。实验室的白板被他画满了流水线架构图、中断优先级分配表和总线协议的时序波形,不同颜色的记号笔交替使用——蓝色是数据通路,红色是控制信号,绿色是时钟树。他画图的习惯很特别,不是从左往右画,而是从中间开始往外扩,像一棵树从树干长出枝条。他说芯片架构的本质是时钟树的分布——时钟信号从中央锁相环出发,沿着平衡路径均匀分配到每一个寄存器,任何一条路径上多走一毫米的铜箔延迟,都会让整颗芯片的时序崩溃。所以画图也要从时钟源开始往外画,每一级分叉都必须严格对称。阿强有一次在旁边看了很久,说这就跟他做磁鼓底座的液压腔一样——油路从中心活塞往两边分,任何一侧多走一丝,接触压力曲线就会波动。林知夏抬起头看着他,说对,就是这个道理。两个在不同领域里各自做到了极致精度的人,隔着实验台相视笑了一下,那笑容极短,但意味深长。
李家港每天晚上在实验台前调试完视霸改进版的电源模块之后,都会走到白板前逐行核对林知夏当天的设计进度。他发现一个规律:林知夏的设计稿上几乎从不出现在架构层面的颠覆性改动。他不像有些工程师那样每隔几天就把之前的方案推翻了重来,宣称找到了“更优架构”。他每天做的都是同一个动作——把昨天的设计再推敲一遍,不是否定自己,而是把同样一个逻辑门用更少的晶体管实现。一个八位的多路选择器,第一版用了二十几个晶体管,第二版减了一些,第三版又减了一些,到最新一版时只剩一半不到,而功能完全等价。
“精简指令集的精髓不是指令少,”林知夏指着最新版的多路选择器电路图说,“是把每一个指令的执行周期压缩到不能再压缩。精简的不是指令数量,是每个指令背后消耗的晶体管开关次数。”他在CPU前端设计的第三版草图上已经完成了五级流水线的全部时序分配,正在攻关执行单元里条件分支指令的延迟槽优化——这是精简指令集架构中最核心的技术难点之一。所谓延迟槽,是指当处理器遇到条件分支指令时,在分支结果还没有被计算出来之前,流水线需要继续取入下一条指令。这个被提前取入的指令位置就是延迟槽。如果编译器能够在延迟槽里填入一条不受分支结果影响的有效指令,流水线就不会因为等待分支结果而停顿;如果填不进去,延迟槽只能被浪费掉,白白消耗一个时钟周期。他在硅谷时写的博士论文就是关于延迟槽填充算法的优化,但那是在有成熟EDA工具和参考设计库的条件下进行的。现在他要从零开始,用门级逻辑图一行一行地搭建整个分支预测单元。他在草图上画了好几个版本的延迟槽填充逻辑,每一个版本旁边都注了对应的流水线气泡数和处理器周期效率。最新一版的周期效率已经逼近理论极限,但他在某个版本的备注中写了一条提醒——他认为还可以再优化一级,只是目前还没有找到合适的逻辑简化路径。
李家港从实验室档案柜里拿出当年他在宝安无线电厂留给方工的那套中周变压器手绘图纸的影印件,把图纸摊在林知夏的设计稿旁边。这套图纸是他多年前亲手画的,每一张都是铅笔手绘,磁芯配比、烧结温度曲线、绕线圈手势全部标注得清清楚楚。方工在宝安那间旧仓库改造的实验室里对着这套图纸反复研读了很久,后来用了一两个月就突破了Q值八十。而他和阿强在实验台前熬了无数个晚上,试了两百多次才绕出第一枚Q值八十九的变压器。那些失败的数据全部记在阿强的记录本上——每一次失败的原因、每一次修正的参数、每一次接近成功又掉回去的Q值曲线。
“当年绕中周变压器绕了两百多次才成功,每一次失败都记在本子上——不是因为不知道原理,是因为从原理到实现的每一步都藏着无数个细节。”他指着图纸上那些密密麻麻的烧结温度曲线和绕线圈手势标注,“方工拿到图纸之后很快就突破了Q值八十,而那些细节我们熬了无数个晚上。现在你在设计的这颗处理器,比中周变压器复杂几个数量级——中周只有几十圈铜线和一个磁芯,处理器有成千上万个逻辑门,每一个逻辑门都可能因为一个晶体管尺寸偏差导致整条流水线崩溃。但原理是一样的。延迟槽填充的逻辑简化,本质上和绕线圈时调整虎口送线角度是同一件事——都是在最关键的那一步上,找到最省力的解法。”
林知夏低头看着那张发黄的图纸,用手指沿着烧结温度曲线的每一个拐点慢慢划过。他说那就把每一个细节都记下来,以后给别人用。他说在硅谷时他参与过一款处理器的设计,整个团队几十个人,但他离开时没有人问他那些设计笔记要不要归档。他把那些笔记从硅谷带回来的纸箱里翻出来,挑出与延迟槽优化相关的几页,贴在曙光一号白板旁边,在角落里标注了日期和原始出处。他说这些笔记以后会和品控手册一样公开给所有参与曙光一号的工程师查阅——不管是谁接手这个项目,都能沿着这些笔记追溯到每一个设计决策的起点。
李家港从白板旁边拿起红笔,在曙光一号项目代号下方画了一条线,线下写了一行字:“本项目的所有技术资料——包括架构设计稿、时序图、逻辑门级电路图、延迟槽优化笔记——全部归档至实验室档案柜,任何授权工程师均可查阅。设计决策必须附带书面理由,修改记录必须保留历史版本。”他把红笔放下,对林知夏说以后不管是曙光一号还是未来任何一颗芯片,这个规矩不变——核心技术不能只装在一个人脑子里,要装在档案柜里。
阿强把一摞新打印好的磁鼓底座长周期耐久测试数据放在实验台上,说品控手册里所有测试标准都已经同步更新到曙光一号的验证流程里。他在手册附录里新增了一章,标题是“芯片设计验证的品控标准”,逐项列明了从门级仿真到时序收敛、从指令集兼容性测试到功耗分析的全套标准。他在这一章的开头写道:“芯片设计验证与磁鼓底座测试在底层逻辑上完全一致——每一项设计指标都必须可量化、可追溯、可复现。不可复现的测试等于没有测试。”他把这一章复印了一份贴在曙光一号白板旁边,在下面签了自己的名字。
刘师傅从注塑车间探出头,说曙光一号的外壳模具他已经开始画图了。他在一张旧图纸上用游标卡尺逐寸标注了外壳的尺寸公差,每一项公差旁边都注了对应的注塑机锁模力上限和排气槽深度。他说计算机外壳和收音机不一样——收音机可以圆润,计算机要方方正正,方的东西边角最容易翘曲变形,所以排气槽要走一条和星辰外壳完全不同的水路线。他在纸边随手画了一条水路的草图,弯道处被他用红笔反复描了好几遍。方洁瑛从设计工作室过来,把一张刚画完的外壳配色方案放在刘师傅的图纸旁边。她说曙光一号的外壳颜色不用天蓝也不用落日橙——计算机是放在办公桌上的,需要更冷静的色调。她调了几个版本的灰蓝色,在纸上一字排开,在灯下反复比对不同色温下的视觉效果,在版本旁边的备注中写下了不同使用场景下的色差测试建议。
那枚Q值八十九的中周变压器被阿强端端正正地搁在曙光一号白板旁边。它是创世纪第一个里程碑——从第两百多次失败中诞生的第一枚自主绕制的变压器。现在白板上的架构图比当年那张收音机电路图复杂了不知多少倍,但所有的方框和箭头最终都指向同一件事——核心之物,必出于己手。窗外九龙塘的夜色已经完全沉降,实验室里的灯还亮着。林知夏在角落那张旧木桌前继续修改CPU前端设计的第四版草图,阿强在实验台前逐只核对明天要发往新加坡的磁鼓底座,刘师傅在注塑车间调试曙光一号外壳模具的第一版水路线。方洁瑛在设计工作室里对着灰蓝色色样反复比对炭笔标注,然后把启明从婴儿床里抱起来,让他看白板上那些密密麻麻的方框和箭头。启明伸出手想去抓那些彩色的线条,她轻轻把他的小手拢回来,说那是芯片架构图,等你长大了阿爸会教你画。窗外那颗启明星正低悬在飞鹅岭上方,白板上的架构图在灯光下泛着极淡的光泽——那是创世纪从模拟电路时代跨入数字逻辑时代的第一张蓝图,也是一颗正在被点燃的芯片火种。
