第162章 林知夏的世界
作品:《 香江:从破产电器厂到全球巨头》曙光一号进入物理设计阶段之后,林知夏的作息变得更加不可预测。他有时候连续好几天不出实验室,困了就在角落那张旧藤椅上靠一会儿——那张藤椅是福伯从传达室搬上来的,椅面上还留着福伯多年来坐出的凹印,正好能容下他瘦削的肩胛骨。他蜷在里面睡觉的姿势和他蹲在原型板前调试时序时一模一样:膝盖蜷到胸口,一只手枕在脑袋下面,另一只手还攥着记号笔,笔尖的墨迹已经在指缝间干成了极淡的蓝色。醒来之后他会先盯着天花板看几秒——那是他在硅谷养成的习惯,用来在脑子里重新加载昨晚画到一半的时序图——然后翻身坐起来走到白板前,拿起板擦把某一条数据通路擦掉,重新画。
福伯每天晚上把搪瓷缸端上来放在他手边,第二天早上来收缸子时发现茶只喝了一小口,剩下的全凉透了,缸底凝着一圈深褐色的茶渍。他不忍心倒掉,就把凉茶端回传达室,在小煤炉上重新热一遍,再端上去。方洁瑛有好几次半夜起来给启明喂奶,从走廊经过时看到实验室门缝里漏出的灯光,知道那是林知夏在熬他的时序图。她在传达室放了一只搪瓷缸,每晚临走前往里面泡好普洱茶,让福伯半夜端上去。那只搪瓷缸的缸身上贴着一小截胶带,胶带上用铅笔写着“林”,字迹和她画在收音机说明书上的紫荆花标签一模一样。有一次她半夜经过实验室,发现门虚掩着,里面传出一阵极轻的敲击声——是他用指节在桌上打着节拍,嘴里反复念叨同一个数字,像一个卡在某个循环里的节拍器。她站在门口听了一会儿,没有推门进去,只是回画室把启明哄睡之后,又去传达室往那只搪瓷缸里续了些热水。
他在实验台下面放了几个纸箱,里面全是画废的稿纸。有些是延迟槽逻辑走了死胡同——他在分支预测单元里尝试了一种新的历史表更新策略,画了好几版门级逻辑之后发现这条路在物理实现上会占用太多晶体管,不得不放弃。有些是流水线冲突点算错了周期数——数据前推路径从执行单元回写到译码级时,他漏算了一级缓冲的时钟延迟,导致整条路径的时序偏移了不到一个周期,波形在仿真器里跑了很久才发现。有些干脆是他自己不满意推翻了重来——他会在完成某一版设计后隔几天再回头看,发现自己当初的某些判断可以更简洁,然后毫不犹豫地擦掉。他不扔这些废稿,每一张都按失败原因分类压在纸箱里,用橡皮筋分捆成小束,每捆最上面贴一张标签,标注失败类型和日期。阿强有一次去实验室送新一批磁鼓底座的抽检数据,看到他在整理这些废稿,问这些垃圾纸留来做乜。他从纸箱里抽出一张被揉皱又摊平的稿纸,上面画着一个已经被推翻的延迟槽填充逻辑,旁边用红笔密密麻麻写满了失败原因分析。他说以后可以给新人看——看别人是怎么犯错的,比看教科书有用。教科书只告诉你正确的答案,不告诉你每一个错误长什么样。阿强把那页稿纸接过来看了半天,说他绕线圈的时候也是这么做的——每次绕断都记在本子上,断口形状、绕线角度、虎口松紧,全记下来。他把稿纸还给林知夏,说你们这些画芯片的和我们绕线圈的,原来用的是同一本笔记。
他的世界和车间里其他人的世界在物理空间上只隔着一扇实验室的门,但在感知上完全不同。阿强每天在实验台前逐只抽检磁鼓底座的接触压力曲线,示波器屏幕上那条平稳的正弦波无声跳动,他能在几百次重复测量中听出注塑机液压泵每一次压力脉动引起的极细微的波形漂移;方洁瑛在设计工作室里对着新一批磁带标签的配色方案反复比对炭笔色卡,她能分辨出同一种天蓝色在哑光ABS和亮面聚苯乙烯上呈现出的色差,能把这种色差用炭笔在试色卡上逐级标注;刘师傅在注塑机旁边调试曙光一号外壳模具的第一版水路线,他能用指尖摸出模具表面温度的变化,温差只需要极小的幅度他就能感觉到,然后据此调整冷却水路的阀门开度。这些工作林知夏都知道——他每天从实验室窗户能看到阿强蹲在实验台前的背影,能听到刘师傅在注塑机旁边喊师弟拿扳手的声音,能在深夜经过设计工作室时看到方洁瑛工作台上那盏还没熄灭的台灯。但他很少主动走进车间,就像阿强很少主动走进实验室一样。不是冷漠,是各自在自己的精度世界里入了定。这种入了定的状态在旁人看来近乎孤僻,但他们彼此都知道——你不来打扰我,是因为你也在自己的示波器屏幕前盯着同一条永远不会静止的波形。
唯一的例外是阿强那枚Q值八十九的中周变压器。有一次他在白板上画中断优先级矩阵时卡住了——矩阵里几个中断源被分配到不同优先级,但有一个来自音频处理器的中断信号无论如何都找不到合适的优先级位置:放在高优先级会干扰显示控制器的帧刷新时序,放在低优先级又会导致音频输出出现间歇性卡顿,不管怎么排都会和其他信号产生冲突。他在白板前站了很久,把优先级矩阵擦掉重画,画到第三次还是卡在同一个位置。然后他放下记号笔,推门走出实验室,在走廊里来回踱步。他的脚步声在空荡荡的走廊里回响,踱到阿强实验台前时停住了。
示波器屏幕上那条平稳的正弦波正无声跳动着——每一个周期都分毫不差,波峰与波谷的间距精确得像是用尺子画出来的,波形的上升沿和下降沿完全对称,没有任何可察觉的过冲或振铃。他盯着那条波形看了很久——不是在看它的电气特性,是在看它的节奏。然后他忽然开口,声音很低,像是自言自语。他说你看这条线——每一个周期都分毫不差,是因为你的每一圈铜丝都排得足够紧密,匝与匝之间的分布电容被你压到了最低。中断信号也一样——每一个优先级窗口都是固定的时钟周期,要压到最低才能不冲突。音频中断和显示中断之间的窗口应该像你的线圈匝间距一样,不留任何多余的空隙。
阿强沉默了片刻,把探头拔下来放在桌上。“你把那个中断信号画出来我看看。”两个人在实验台旁边铺开一张空白稿纸,阿强用他绕了无数圈中周变压器的手势把几个中断信号的时序波形逐条画出来。他的手腕极稳,铅笔在纸面上画出的每一条线都笔直而均匀——这是多年绕线圈练出来的肌肉记忆,铜丝在骨架上走直线时手不能有一丝一毫的抖动。他在旁边逐条标注对应的优先级窗口和时钟周期数,画到音频中断和显示中断时停了一下——两个中断信号之间的空隙刚好够一个最小优先级窗口,但这个窗口太小了,只要音频中断稍微延迟就会撞上显示中断的边缘。阿强把这个空隙用铅笔重重涂了一下,说这里绕不过去——不是优先级不够,是两个信号撞在了同一拍上。他对着那个被涂黑的空隙看了很久,然后抬头看着林知夏,说他在绕线圈的时候也遇到过类似的问题。两条铜丝靠得太近,分布电容会干扰信号。解决办法不是把两条铜丝拉开——拉开意味着线圈匝数不够,Q值会掉。解决办法是在两条铜丝之间加一层极薄的绝缘纸,让它们物理上隔绝,但间距不变。他说这个空隙应该是一样的道理——两个中断信号之间的窗口就是那两条靠得太近的铜丝,仲裁逻辑就是那层绝缘纸。
林知夏盯着那个被涂黑的空隙,忽然拿起笔在旁边画了一个新的小方框——仲裁控制器。他说让仲裁控制器在这两个中断之间强制插入一级缓冲,把同时到达的信号错开一拍。这个方法不是从芯片设计教科书上学来的——教科书上会说中断优先级应该按固定优先级排序,不会告诉你当两个中断信号在时间轴上撞在一起时应该怎么拆。是从中周变压器线圈匝间绝缘的分布电容控制原理里类推出来的——当物理间距无法增加时,增加介质隔离。他在中断优先级矩阵里正式加入了仲裁控制器模块,在方框旁边用铅笔注了一行字,字体和他画架构图的笔迹一样简练。这张草稿后来被他夹进曙光一号的设计档案,和那些被反复翻阅磨得起毛边的时序图放在一起。阿强回到实验台前继续测下一批磁鼓底座,示波器屏幕上那条平稳的正弦波还在无声跳动。他拿起探头夹上下一只底座,忽然对着屏幕自言自语:“芯都系一样嘅道理——唔畀佢哋撞埋一齐。”
窗外九龙塘的夜色已经完全沉降,方洁瑛半夜起来给启明喂奶时从走廊经过,看到实验室门缝里漏出的灯光里有一个瘦削的身影正站在白板前,手里握着一支红笔,在中断优先级矩阵旁边画下最后一个仲裁信号。她低头看了看怀里已经睡着的启明——他今晚没有抓她的头发,只是把脸埋在她肩窝里,呼吸均匀而轻柔。她轻轻推开门把那只搪瓷缸里的凉茶换成新泡的热普洱,然后带上门走了。他在白板前一直站到启明星升起——窗外那颗最亮的星正低悬在飞鹅岭上方,光度比往日更亮,把他投在墙上的影子拉得又长又直,和白板上那些被反复擦改的架构图叠在一起。实验室里的灯还亮着,他拿起红笔在那道刚画完的仲裁信号旁边写下今天的日期,然后走到实验台前把那只搪瓷缸端起来喝了一口——茶还是热的,陈皮香从喉底慢慢回甘。他把缸子放在阿强那枚Q值八十九中周变压器旁边,看着窗外那颗启明星。从这里到白板只隔着一个走廊,但这两个世界正在被同一个原理连在一起。他把记号笔放回笔筒,回到白板前继续画下一条数据通路。楼下注塑机还在有节奏地运转,刘师傅在模具侧面那块白漆记录板上写下新一行保压参数。曙光一号的时钟树正在这张白板上悄然生长,每一根枝杈都指向同一颗星。
