Fansee
图文公开

第160章

林秋静静地听着,没有反驳。他知道,这是他们最真实的想法,也是“经验模型化”这个项目,要面对的第一个,也是最大的障碍——两种思维方式的鸿沟。 “王师傅,我明白您的意思。”林秋说,“我没指望让您和马总工,去当大学老师,写一本教科书出来。我们换个方式。” 他看向老马:“马总工,我问您一个问题。您在手工优化ALU那块版图的时候,遇到一个关键路径,时序总是差一点点。您会怎么做?” 老马想了想,说:“看情况。先看看这条路径上,是哪个门的延迟最大。如果是连线延迟,就想办法把线走得更短,更宽,或者在中间加个‘中继器’(Buffer)。如果是单元延迟,就看看能不能换个驱动能力更强的单元,或者把这个单元里的晶体管尺寸,调大一点。” “好。”林秋接着问,“那‘调大一点’,是调大多少?10%?还是20%?为什么是这个数,而不是另一个数?” 老马被问住了。他皱着眉,似乎在回忆当时的操作。“……凭感觉。调一下,仿真一次,看看结果。不行,就再调。有时候调大了,速度是上去了,但功耗也上去了,或者对旁边的信号线产生了干扰,还得再调回来。来来回回,试个十几次,总能找到一个差不多的点。” “问题就在这儿。”林秋一针见血,“您说的‘凭感觉’,还有这‘来来回回十几次’的尝试,在您的大脑里,其实是一个非常复杂的,非线性的优化过程。您可能没有意识到,但您的大脑,在瞬间就综合考虑了速度、功耗、面积、串扰等十几个变量,然后给出了一个‘感觉上’最优的解。而周毅他们要做的,就是把您这个‘黑箱’一样的大脑决策过程,用数学的方式,‘翻译’出来。” “这怎么翻译?”王师傅还是觉得不可思议。 “不是让您来翻译。”林秋笑了,“是让周毅他们,像学生一样,来‘学习’您的操作。从明天开始,周毅会带一个小组,进驻你们的办公室。他们的任务不是设计,而是‘记录’。” “记录?” “对。马总工,我需要您和您的团队,重新做一遍‘龙芯一号’里,那几个最关键模块的手工优化。但是,这一次,你们的每一个操作,都要被记录下来。你们在屏幕上的每一次点击,每一次修改,每一次仿真,以及你们做出这个修改时的‘想法’,哪怕只是一句‘我感觉这里不太对劲’,都要被录音、录像,整理成文档。” “周毅的小组,就像一群拍纪录片的。他们会把你们工作的全过程,变成海量的原始数据。然后,他们会在这些数据里,去寻找规律,去建立模型。比如,他们会发现,当一个单元的负载超过某个阈值,同时它的输入信号的跳变时间又低于某个值的时候,马总工您,有80%的概率,会选择将它的驱动晶体管宽度,增加15%。这个,就是我们要找的‘规则’。” 林秋的这番话,让老马和几个老师傅恍然大悟。他们终于明白了,不是要他们去“写书”,而是要他们去“表演”,去当那个被研究的“样本”。这让他们心里的包袱,一下子轻了很多。 “就只是……让我们再做一遍?”老马确认道。 “对。而且,这一次,你们可以更大胆一点。”林秋的眼睛里闪着光,“忘了功耗,忘了面积,我只要一个指标——速度。我要你们把每一个模块,都压榨到物理极限。我要看看,我们这群‘老司机’,在不考虑任何交规和油耗的情况下,到底能把车开多快。你们负责把油门踩到底,周毅他们负责在旁边,测量你们的发动机转速、进气量和轮胎磨损。” 老马的眼中,重新燃起了一股斗志。这种纯粹的、不计后果的性能挑战,正是他骨子里最喜欢的事情。他感觉自己仿佛又回到了几十年前,在简陋的车间里,为了攻克一个技术难题,不眠不休地做着各种极限实验。 “好!”老马端起了面前的酒杯,那杯他嫌有“酱油味”的茅台,他仰起头,一饮而尽。“林总师,这活,我们接了!” 庆功宴在深夜结束。大部分人都喝得东倒西歪,被互相搀扶着送回了宿舍。 周毅没有喝酒,他带着他的小组,连夜就把办公室搬到了老马他们隔壁。两间办公室中间的墙壁,被连夜凿开了一个窗口,拉了十几根视频线和音频线。一台全新的、高性能的图形工作站,也搬了进去,专门用来记录和处理即将产生的海量数据。 第二天一早,当老马和他的团队走进办公室时,看到的就是这样一幅景象。周毅和他的几个博士生、硕士生,像严阵以待的战场记录员,每个人面前都摆着好几个显示器,一个显示着老马他们工作站的实时镜像,一个显示着密密麻麻的数据记录窗口,还有一个,则准备用来做笔记。 “马总工,王师傅,各位老师,早上好。”周毅站起来,态度恭敬得像个小学生,“我们都准备好了。这是录音笔,麻烦各位师傅一人一个,别在领口。你们工作的时候,不用管我们,就当我们在开会,你们有什么想法,自言自语说出来就行。” 老马看着这阵仗,感觉自己不像是在上班,倒像是在医院里做一次全身的核磁共振,浑身上下都贴满了传感器,每一个细胞的活动都要被记录分析。他有些不自在,但还是依言把录音笔别在了工作服上。 工作开始了。 老马打开了熟悉的版图设计工具,调出了ALU的核心模块。他很快就进入了状态,几十年的肌肉记忆,让他几乎忘记了隔壁还有一双双眼睛在盯着他。 “嗯……这条进位链太长了,延迟肯定好不了。”他一边移动着鼠标,一边下意识地自言自语,“得把它断开,加一个先行进位(Carry-Lookahead)的逻辑进去。” 隔壁,周毅立刻在键盘上飞速敲打:“记录:上午9点15分,目标模块‘ALU_CARRY_CHAIN’。马总工识别出‘长进位链’问题,提出‘先行进位’优化方案。” 一个年轻的博士生低声问:“师兄,这个优化,我们的逻辑综合工具其实也能做。” “不一样。”周毅头也不抬,“工具做,是根据教科书的标准算法。你看马总工的实现方式。” 屏幕上,老马没有使用工具库里标准的先行进位单元,而是用一堆最基础的与非门和异或门,手动“搭建”了一个结构。那个结构看起来有些“野路子”,不符合常规的设计范式,但却巧妙地利用了上下游单元的布局位置,使得连线长度被缩短到了极致。 “他把物理布局信息,耦合到逻辑设计里去了。”周毅看得入了神,“我们的工具,是先做逻辑,再做布局,两步是分开的。而马总工的大脑里,这两步是同时完成的。他在搭逻辑的时候,就已经想好了每一个门,应该放在芯片的哪个角落。我的天……这简直是‘四维设计’。” 在接下来的几个小时里,周毅和他的团队,见证了一场晶体管级别的“艺术创作”。 老马他们,就像一群经验丰富的雕塑家。他们时而大刀阔斧,将整个模块的结构推倒重来;时而精雕细琢,为了0.1个皮秒(ps)的延迟,去微调某个晶体管的宽度。他们嘴里不断念叨着一些周毅他们听着耳熟、但又似是而非的“黑话”。 “这个地方‘太软了’,得让它‘硬’一点。”(信号跳变时间太长,需要增强驱动能力) “这根线‘太胖’,会把旁边的信号‘带跑偏’。”(连线电容太大,会产生串扰) “给这个门‘喂饱’一点,让它跑快点。”(适当提高该单元的供电电压) 周毅的团队,一开始还试图把这些“黑话”,翻译成标准的学术术语。但他们很快发现,这根本做不到。因为老马他们的很多操作,是“反直觉”的,甚至是“反常规”的。比如,他们会故意在一个非关键路径上,使用一个速度很慢、功耗很低的单元,目的仅仅是为了“骗”综合工具,让它把更多的优化资源,留给真正需要的地方。 这是一种充满了“狡黠”和“智慧”的工程艺术。 到了下午,矛盾开始出现了。 王师傅在优化一个寄存器堆的读端口时,为了追求极致的速度,用了一个非常激进的电路结构。这个结构在仿真时,性能数据好得惊人,比标准设计快了将近30%。 隔壁的周毅小组,却炸开了锅。 “不行!这个电路结构,在PVT(工艺、电压、温度)的某些极端角(corner)下,是有功能性风险的!”一个博士生指着自己的仿真波形图,激动地喊道,“你们看,在低温、高电压的条件下,这里会产生‘竞争冒险’(Race Condition),有千分之一的概率,会读出错误的数据!” 周毅也皱起了眉。从学术的角度看,这确实是一个“错误”的设计。任何有概率出错的设计,在商业芯片里,都是不可接受的。 他拿着自己的仿真结果,通过那个小窗口,递给了王师傅。“王师傅,您看,您这个设计,在‘Fast-Fast Corner’下,会出错。” 王师傅拿过来看了一眼,满不在乎地摆了摆手:“什么‘Fast-Fast’?我知道。这个问题,我三十年前在做大型机的时候就遇到过。你放心,在实际的芯片里,这种情况根本不会出现。” “为什么?”博士生不服气地问。 “因为芯片在跑起来的时候,会发热!”王师傅敲了敲桌子,像在教训一个不懂事的孩子,“你说的那个‘低温’条件,只有在上电的百万分之一秒内,才可能存在。等芯片的核心温度一上来,所有的晶体管速度都会变慢,这个‘竞争’的问题,自然就消失了。我们做设计的,不能只看你那仿真软件画出来的理想线,要考虑实际情况!这叫‘工程裕量’!” 博士生被噎得说不出话来。他觉得王师傅是在“狡辩”,是在用一个不可靠的“经验”,去掩盖一个明确的“设计缺陷”。而王师傅则觉得这帮年轻人,是书呆子,只知道死抱着理论,不懂得实际工程中的取舍和权衡。 气氛,第一次变得有些尴尬和紧张。 两代工程师,两种知识体系,在这一刻,发生了最直接的碰撞。 “王师傅,我理解您的意思。”周毅开口,试图缓和气氛,“您是说,利用芯片工作时的温升,来规避掉低温下的时序风险。这在工程上,是一种很巧妙的思路。” 他话锋一转:“但是,我们这个项目的目标,是‘模型化’。而‘模型’,要求的是普适性和确定性。我们不能把一个设计的正确性,建立在‘芯片一定会发热’这种不确定的物理现象上。万一,我们的芯片用在了北极的科考站,或者卫星上呢?那里的环境温度本身就很低。” 王师傅被问得一滞,他确实没想过这么极端的应用场景。在他几十年的职业生涯里,他做的东西,都是在正常的机房环境下运行的。 “再说了,”周毅继续说,“就算在常规环境下,芯片的功耗也不是一成不变的。它在空闲的时候,温度就会降下来。如果这时候,突然来一个高强度的计算任务,那么在核心温度爬升起来之前的那一小段时间里,您说的那个‘竞争冒险’,理论上还是有可能发生。哪怕概率只有百万分之一,但对于一颗每秒运算一亿次的CPU来说,一秒钟就可能发生一百次错误。这是灾难性的。” 周毅的这番分析,有理有据,让王师傅无法反驳。他张了张嘴,最后只是闷闷地说了一句:“那你们说怎么办?又要快,又这里不行,那里不行。那干脆用工具自动生成的好了,保证不出错,也保证跑不快!”
1

评论 (0)

还没有评论

在下方写下第一条评论吧

?