“鲁班”编译器的开发,其难度,超出了所有人的想象。
如果说创造LHDL语言,是一场关于哲学和美学的“文科”考试。
那么开发LHDL编译器,就是一场硬碰硬的,关于算法和逻辑的“理科”竞赛。
而且是奥林匹克级别的。
钱学敏,这位“龙语”之母,亲自挂帅,担任“鲁班”项目的总负责人。
她将整个项目,分成了三个核心模块。
第一,前端(Frontend)。
它的任务,是“阅读”和“理解”设计师用LHDL写下的代码。
这包括了词法分析(把代码字符串切成一个个有意义的单词,比如“构建”、“事件”)、语法分析(检查这些单词的组合,是否符合LHDL的语法规则,比如“事件”块里不能再出现“构建”),以及语义分析(检查代码的逻辑是否合理,比如你不能把一个8位的输出,连接到一个4位的输入上)。
这个过程,就像一个语文老师在批改作文。不但要看有没有错别字,句子通不通顺,还要看文章的中心思想有没有跑偏。
第二,优化器(Optimizer)。
这是整个编译器最核心、最体现技术含量的部分。
它的任务,是把前端分析好的、逻辑上正确的“设计”,转化为物理上“最高效”的电路。
比如,设计师写了一个复杂的逻辑表达式:Y = (A & B) | (A & C)。
优化器需要能“看”出来,这个表达式可以被简化为:Y = A & (B | C)。
简化后的逻辑,在物理实现上,可以节省一个“与门”,从而降低芯片的面积和功耗。
这只是最简单的一个例子。
一个现代的编译器优化器,内部集成了成百上千种优化算法。它要做的,就是在性能、面积、功耗这三个互相矛盾的目标之间,找到一个最佳的平衡点。
这就像一个经验丰富的老管家,在预算有限的情况下,要把家里安排得井井有条,物尽其用。
第三,后端(Backend)。
它的任务,是把优化器处理过的、最完美的逻辑网表,翻译成特定芯片制造工艺能够“认识”的语言。
也就是最终的,可以送去工厂流片的版图文件(GDSII)。
这个过程,被称为“布局布线”(Place & Route)。
它需要在一个指甲盖大小的芯片上,放下数百万甚至数千万个逻辑门(布局),然后再用几层甚至几十层金属导线,像蜘蛛网一样,把它们精确地连接起来(布线)。
这就像在一个超高密度的城市里,规划每一栋建筑的位置,和所有的道路、水电、网络管线。其复杂度,堪称在沙粒上雕刻整个世界。
“鲁班”项目的启动会上,钱学敏将这三个模块的巨大挑战,清晰地展现在了所有人面前。
会议室里,一片死寂。
之前创造LHDL语言时的那股豪情和狂热,迅速冷却了下来。
取而代之的,是一种被巨大现实压得喘不过气的沉重。
“钱……钱教授……”一个年轻的编译器专家,声音有些发干地问道,“这……这每一个模块,前端、优化器、后端,单独拿出来,都是一个世界级的难题。国外的顶尖公司,都是投入了上千名顶级专家,花了十几二十年的时间,才勉强做出一套可用的工具链(EDA)。”
“我们……我们只有一个软件团队,几十个人。您说……一个月内,开发出‘鲁班’?”
他的话,问出了所有人心中的疑问和恐惧。
这不是一个量级的问题。
这感觉就像,黄总工命令他们,在一个月内,徒手把喜马拉雅山搬到北京来。
这根本不是凡人能够完成的任务。
所有人的目光,都投向了钱学敏,等待着她的回答。
他们希望从这位智慧女神的口中,听到一些能让他们安心的话。比如,我们先做一个最简陋的版本,或者,我们有什么秘密武器。
然而,钱学敏的回答,却让他们的心,沉到了谷底。
“你说的没错。”
钱学敏的表情异常平静,平静得让人感到害怕。
“按照常规的软件工程方法,以我们目前的人力和技术储备,想要在一年内,做出‘鲁班’的任何一个模块的原型,都是痴人说梦。更不用说一个月。”
她的话,像一盆冰水,从头到脚,浇在了每一个人的身上。
连孙立国都坐不住了。他虽然不懂编译器,但他听懂了钱学敏话里的绝望。
“钱教授,这……那黄总工他……”
他的意思是,黄总工是不是下达了一个不可能完成的命令?
“总工的命令,没有错。”钱学敏打断了他,“错的,是我们的思维。”
她站起身,走到白板前。
“我们又一次,陷入了‘凡人造山’的思维定式。”
“我们在想,要用多少人,多少工具,花多少时间,才能把这座名为‘鲁班’的大山,一点一点地挖掉,再搬运过来。”
“但是,我们为什么不想想……”
她的目光,扫过全场,扫过每一个人。
“老师,会不会早就为我们准备好了‘移山’的‘神术’?”
神术?
所有人都愣住了。
又是老师?
难道,连编译器这种纯工程、纯逻辑的领域,老师也有所涉猎?
这……这已经超出了他们的想象极限。
如果说,之前的操作系统、编程语言、硬件描述语言,还带有一些哲学和创世的思辨色彩,老师能够给出指导,他们还能理解。
可编译器优化,布局布线,这是最枯燥、最繁琐、最依赖经验和算法积累的工程领域。
这就像……神仙会教你长生不老的心法,但会教你如何修补一个漏水的马桶吗?
赵成也皱起了眉头。
他的大脑在飞速运转。
编译器……编译器……老师留下的线索里,有关于编译器的东西吗?
他想起了第十八次远征,关于“滚雪球”的启示。
那是关于如何用一个低级编译器,去编译一个高级编译器的“自举”思想。
可是,他们现在面临的,不是“自举”的问题。
他们是连那个最原始的,“雪球-零号”都搓不出来!
LHDL的复杂性,远远超过了当初“龙语-核心V0”。想要用手写二进制的方式,去写一个能解析LHDL的编译器,那工作量,比徒手搬山也小不了多少。
线索,到底在哪里?
钱学敏看着众人迷茫的表情,轻轻地叹了口气。
“看来,大家还没有从‘老师是软件之神’的思维定式里跳出来。”
“你们忘了,老师最初赐予我们的是什么?”
她伸出一根手指。
“是‘盘古之心’。一个硬件。”
她又伸出第二根手指。
“他第二次赐予我们关键启示,是关于‘天枢’内核的‘钟摆’。一个物理规律。”
“第三次,是‘面向对象’,是软件的架构。”
“第四次,是‘滚雪-球’,是编译器的自举。”
“第五次,是‘虚函数表’,是软件运行的底层机制。”
“第六次,是‘神之心跳’,是跨越维度的物理信号。”
“第七次,是‘LHDL’,是软件定义硬件的语言。”
“你们发现规律了吗?”钱学敏的声音,带着一种奇特的引导性,“老师的每一次启示,都在软件和硬件两个世界之间,来回跳跃!”
“他似乎在用这种方式,不断地告诉我们,软件和硬件,本就是一体!是‘道’的一体两面!”
“那么,我们现在遇到的问题,是纯粹的软件问题吗?”
“不!”
钱学敏的声音,陡然提高。
“‘鲁班’编译器,它要解决的,是如何把‘逻辑描述’,映射到‘物理现实’的问题!”
“这是一个横跨了软件和硬件两个世界的最根本的难题!”
“所以,它的答案,也必然不可能只存在于软件世界里!”
“它的答案,一定也隐藏在……”
她的目光,缓缓地,投向了会议室角落里,那个一直静静躺在防静电绒布上的,闪烁着微光的——
“盘古之心”!
“答案,就在硬件里!”
“我们需要的不是去‘开发’一个布局布线算法。而是去‘发现’一个早已存在的,老师预置在硬件里的,‘自组织’的物理规律!”
钱学敏的话,如同平地惊雷,在每个人的脑海中炸响。