Fansee
图文公开

第149章

他写完,把笔放下,转身看着屋里所有的人。欢呼声渐渐停了,所有人的目光都聚焦在他身上。先锋厂的工程师们脸上还带着胜利的喜悦,但眼神里多了一丝不解。 “测试结果很清楚。”林秋开口,声音平静得听不出一丝波澜,“现在,我们来讨论一个问题。‘龙芯一号’的ALU,我们该用哪一个方案?” “那还用问!当然是用马总工的!”一个年轻的先锋工程师脱口而出,脸上是理所当然的表情,“快了将近一倍!这是多大的提升!” 不少人都跟着点头附和。在他们的观念里,芯片设计,追求的就是更高、更快、更强。 老马挺直了腰板,虽然没说话,但脸上的神情已经说明了一切。 林秋的目光从那些兴奋的脸上扫过,最后落在了老马身上。“马总工,我想请教一下,我们这条0.8微米生产线,一个8英寸的晶圆,能切出多少颗芯片,是由什么决定的?” 老马一愣,没想到他会问这个。“当然是……由单颗芯片的面积,也就是DieSize决定的。芯片面积越小,一个晶圆上能切出的合格芯片就越多,成本就越低。” “说得对,是成本。”林秋重复了一遍,然后在“面积:2.5X”这几个字下面,重重地画了一道线。“那么,第二个问题,我们‘龙芯一号’,是一颗只有ALU的芯片吗?” 这个问题,让所有人都愣住了。 “我们除了ALU,还需要整数单元,需要寄存器堆,需要指令和数据的Cache,需要总线接口单元,需要时钟和电源管理的模块……”林秋每说一个词,就在白板的空白处画一个方框,“所有这些东西,都要放在一块小小的硅片上。我们这颗芯片的预算,或者说它的‘占地面积’,是有限的。” 他拿起笔,在代表“方案B”的ALU方框上,重重地涂黑,让它显得格外巨大。“现在,我们拥有了一个性能强悍的ALU,一个食量惊人、体格庞大的发动机。但是,它太大了,大到我们留给油箱(Cache)、车架(总线)、座位(其他逻辑单元)的空间,被严重挤压了。为了装下这个发动机,我们可能不得不把Cache做得非常小,小到几乎没有用处。或者,我们干脆把整个芯片的面积扩大两倍,那样一来,我们的成本会翻上好几番,一个晶圆上,可能切不出几颗合格的芯片。这样的CPU,就算能跑到50MHz,又有什么意义呢?” 林秋的话,不急不缓,却像一把手术刀,精准地剖开了问题的核心。 刚才还在欢呼的工程师们,脸上的笑容凝固了。他们是优秀的工匠,专注于自己负责的那个“零件”,追求极致的工艺。但他们很少有机会,从一个“产品经理”的角度,去思考整个“系统”的平衡、取舍与妥协。 成本、面积、功耗、性能……这些词,第一次在他们脑中,构成了一张相互制衡的、复杂的网。 老马脸上的光彩,一点点黯淡下去。他看着白板上那个被涂黑的、不成比例的巨大方框,心里五味杂陈。他一生追求的,是技术的极致,是性能的巅峰。他做到了。但今天,这个比他儿子还年轻的“总师”告诉他,你造出了一台全世界最强的发动机,但它大得只能安在拖拉机上。 这是一种比输了比赛更难受的感觉。他赢了战役,却好像输了整个战争。 周毅和他的组员们,慢慢抬起了头。他们看着林秋,眼神里充满了震惊和领悟。他们终于明白,林秋之前反复强调的“抽象”和“自动化”,其目的不仅仅是提高效率,更深层的意义,是在设计的早期,就能对整个系统的成本、功aho和性能进行宏观的、全局的掌控。而这,正是“老师傅经验”的盲区。 “所以,方案B不能用。”林秋给出了结论,但他的语气里没有丝毫的贬低,“但是,方案B给了我们一个无比宝贵的礼物。” 他走到老马面前,目光诚恳。“马总工,您和您的团队,用一个月的时间,向我们所有人证明了,在这条0.8微米的生产线上,一个32位的ALU,性能的极限,可以达到50MHz。这不是一个理论值,是一个被实践验证过的‘黄金标准’。这是我们未来所有自动化工具,要去追赶和逼近的目标。” “而方案A,”他又看向周毅,“它代表了‘自动化设计’的‘基准线’。它有优秀的面积和功耗控制,有快速的设计迭代能力,但它的性能,远远没有发掘出工艺的潜力。32MHz,这不是我们想要的结果。” 林秋回到白板前,在两个方案中间,画了一个巨大的问号。 “我们今天的讨论,不是为了分出胜负。而是要找到第三条路。”他的声音变得有力,“我们既要方案A的面积和自动化,又要方案B的性能和极致。我们怎么才能做到,让写代码的,能理解晶体管的脾气;让画版图的,能用更高效的语言,来传承他们的智慧?” “从今天起,ALU小组不分A、B队。”林秋宣布,“我们要成立一个‘性能优化小组’。马总工,我希望您来当这个组长。您的任务,不再是亲手去画版图,而是把您脑子里那些关于‘超前进位’、关于时序优化的宝贵经验,‘翻译’出来,教会我们,也教会我们的EDA工具。” “周毅,你和你的组员,任务就是当好这个‘翻译’的学生和助手。你们要研究,如何用硬件描述语言,去精确地、结构化地描述马总工提出的优化电路。你们要创造出一种新的代码风格,一种能够‘引导’综合工具,生成高性能电路的‘模板’。” “我们的目标,不是简单地在A和B之间做选择。而是创造一个全新的方案C。一个性能逼近50MHz,但面积和功耗都得到有效控制的,可以用自动化流程去实现和验证的ALU。” 林秋看着老马,又看看周毅,两个刚才还在“打擂台”的人,此刻都陷入了沉思。 “这叫……”林秋想了想,用了一个更通俗的比喻,“我们不能满足于软件自动生成的‘方便速食’,也不能完全依赖老师傅手工做的‘国宴大餐’。我们要做的,是建立一条标准化的,能生产出‘预制菜大餐’的中央厨房。马总工您,就是我们的‘行政总厨’,负责制定菜谱和标准。周毅你们,就是负责把菜谱,变成流水线上一个个标准的工艺流程。” “预制菜……”雷天君在旁边听得一愣一愣的,咂摸了一下这个词,突然一拍大腿,“这个比喻好!我听懂了!又快又好还要能批量生产!妈的,提气!” 会议室里,凝重的气氛被打破了。先锋厂的工程师们,虽然还有些懵懂,但他们看向老马的眼神,已经从单纯的祝贺,变成了期待。而周毅他们,眼中的沮丧一扫而空,取而代之的,是一种被委以重任的,混杂着压力和兴奋的光芒。 老马沉默了很久。他一辈子都是冲锋陷阵的兵,现在,让他当一个指点江山的“厨子”,他一时间有些转不过弯。但他看着白板上的数据,看着林秋那双清澈而坚定的眼睛,他知道,时代变了。靠一把刻刀画遍天下的日子,或许真的要过去了。 “好。”他终于开口,声音有些沙哑,但很稳,“我这把老骨头,就陪你们年轻人,再折腾一回。” “性能优化小组”成立的第一天,气氛有点尴尬。 办公室还是那个办公室,人还是那些人,但周毅和老马的角色,发生了奇妙的对调。之前是周毅写代码,老马在一旁挑刺。现在,是老马在一张大纸上画电路,周毅和几个年轻人围在旁边,像小学生一样听讲。 “看这里,”老马用铅笔头,指着一个由十几个逻辑门构成的复杂结构,“这就是‘超前进位’的核心。我们不用等低位的进位信号,像多米诺骨牌一样,一个一个传过来。我们用这个‘进位生成单元’,直接根据输入的A和B,把每一组的进位信号,‘预测’出来。” 他讲得兴起,唾沫星子横飞,眼睛里闪着光。这是他浸**了几十年的领域,每一个细节都烂熟于心。 周毅他们听得云里雾里。这些电路图,比教科书上的复杂一百倍,充满了各种巧妙的“野路子”。他们能理解单个逻辑门的功能,但当这些门以一种诡异的方式组合在一起时,他们就完全无法理解其背后的设计思想了。 “马总工,”周毅硬着头皮打断他,“您画的这个……这个‘进位生成’的逻辑,它的布尔表达式能写出来吗?” “写那玩意儿干啥?”老马眉头一皱,“多麻烦!你照着图,用代码把它‘翻译’出来不就行了?” 周毅的脸憋得通红:“问题是……我们不知道该怎么‘翻译’。Verilog里,没有一个叫‘马总工的进位生成单元’的现成模块。” “那就造一个!”老马理直气壮。 这句话,把周毅噎得半天说不出话。这简直就是鸡同鸭讲。老马的世界里,是具体的、看得见摸得着的晶体管和连线。而周毅的世界里,是抽象的、行为描述的代码。两者之间,隔着一道巨大的鸿沟。 一个下午过去,进展为零。老马画了一黑板的图,周毅他们记了满满一笔记本的笔记,但没有一行有效的代码被写出来。 晚上,吴佳栋把林秋拉到了一边,神色凝重。“小林,这样下去不行。他们这是两种思维体系的碰撞,根本不在一个频道上。老马想的是‘怎么搭’,周毅想的是‘怎么说’。这个问题不解决,那个‘方案C’永远也搞不出来。” 林秋点了点头,他白天也一直在观察。“我明白。我们不能强迫他们任何一方,去完全接受对方的体系。我们得找到一个‘中间语言’。” 第二天,林秋搬了一块小白板,坐到了优化小组的中间。 “马总工,我们换个玩法。”林秋说,“我们今天不聊整个32位的加法器,太复杂了。我们就聊一个4位的加法器。” 他转向周毅:“你,用你最熟悉的‘行波进位’方式,写一个4位加法器的代码。” 周毅很快就写好了,就是最简单的`assign C_out, Sum= A+ B;`。 “好。”林秋又转向老马,“马总工,请您也画一个,您心目中最优的4位加法器的电路图。” 老马拿起笔,很快也画好了,正是那个“超前进位”的微缩版。 林秋把两样东西放在一起。“现在,我们的任务,就是让周毅的代码,经过综合之后,生成的电路,能和马总工画的图,一模一样。” 这一下,目标变得具体而清晰。 “周毅,你看马总工的图。”林秋开始引导,“他这里,是不是先把每一位的‘进位生成信号’G和‘进位传递信号’P算出来了?G= A& B,P= A^ B。这个,用Verilog能描述吗?” “能。”周毅点头,这很简单。 “好。那下一步,马总工用G和P,去计算最终的进位信号C1, C2, C3, C4。比如C1= G0|(P0& C0)。这个逻辑,能描述吗?” “也能。” “最后,再用每一位的P和C,去计算最终的和Sum。Sum_i= P_i^ C_i-1。这个呢?” “也可以。” 林秋笑了:“你看,我们把马总工的‘设计思想’,一步步分解,翻译成了代码能够理解的‘逻辑步骤’。你现在把这些步骤组合起来,写成一个新的4位加法器模块,我们再来综合一次,看看结果。” 周毅和他的组员们恍然大悟。他们之前想的是如何一步到位地“描述”那个最终结果,却忘了可以把“过程”也描述出来。这是一种全新的编程思路,不是在写“行为”,而是在写“结构”。
1

评论 (0)

还没有评论

在下方写下第一条评论吧

?