“我建议,”夏先生说,“我们立即把这个思路纳入设计研究。第一阶段,先定义一套标准的‘逻辑门单元’库;第二阶段,开发能自动组合这些单元的布局算法;第三阶段,扩展到更复杂的功能模块。”
这个提议获得一致通过。
随后,决定成立“集成电路设计自动化研究小组”,由数学系、计算所和红星所共同组成。
第一阶段目标就是基于二维网格编码和标准单元库的思想,开发能处理百晶体管级布局布线的算法原型。
到了第四个议题,高先生走到右边的黑板前。
他在黑板上画出两个对比表格,复杂指令集(CISC)和简化指令集,细数了国际上先进研究优缺点。
“我们该走哪条路?”高先生问,“是追随西方的主流,还是探索简化指令集这条新路?”
会议室里再次陷入激烈辩论。
支持CISC的一方认为,科学计算程序需要复杂的浮点运算、向量操作,CISC指令集能提供更直接的支持;而且现有的编译器、程序设计经验都基于CISC。
支持简化指令集的一方反驳,复杂指令在编译器中很少被直接使用,编译器更倾向于用简单指令的组合;简化指令集的规整性让流水线设计变得简单,能极大提高主频;而且简化指令集对编译器的优化更友好。
程教授再次展示那份算题统计,“我们分析了104计算机上运行的科学计算程序,发现80%的时间都在执行20%的指令,主要是取数、存数、加法和乘法。”
吕辰提出了一个“常用功能固化”的思路,说道:“高先生,如果统计是对的,80%时间执行20%的指令,那我们为什么不优化这20%的指令,让它们极快,其余指令用软件子程序实现?常用函数做成专用模块,不常用的临时组合。”
高先生眼睛一亮,他兴奋地在黑板上写下一系列原则。
指令长度固定(如16位或32位),格式规整;只有加载/存储指令可以访问内存,运算指令只操作寄存器;硬连线控制,不用微码;注重流水线设计,目标是一条指令一个周期。
“如果我们走这条路,我们可能和美国同行站在同一起跑线上。”高先生说,“甚至,因为我们的包袱更小,可能走得更快。”
辩论持续了一个小时。
最终,会议达成共识,“星河计划”首款芯片将采用“简约指令集”理念,设计一套名为“星河-1”的指令集架构。
由高先生牵头,数学组和电路组共同参与,三个月内完成指令集手册初稿。
很快就到了第五个议题,如何容错。
清华数学系的何教授主持,他是概率论与数理统计专家。
“同志们,当集成度提高,单个晶体管的失效率即使极低,整体芯片的失效概率也会累积升高。”
何教授在黑板上写下一个公式:P_system = 1 - (1 - p)^N
其中p是单个晶体管的失效率,N是晶体管总数。
“当N达到一万、十万、百万时,即使p很小,P_system也会变得不可接受。”何教授说,“我们必须用数学方法保证可靠性。”
他介绍了三个概念,冗余设计、纠错码、自测试,并介绍了这些概念方法。
“但这些方法都有代价。”何教授说,“冗余设计增加面积和功耗;纠错码增加存储开销和延迟;自测试需要额外的测试电路。我们需要在可靠性和成本之间寻找平衡。”
“这又是一个优化问题。”陈教授第三次轻声说道,“我们可以建立一个多目标优化模型,在面积、功耗、成本约束下,最大化芯片的可靠度。决策变量包括冗余度、纠错码方案、测试电路比例等。”
高先生又提到“模块化”思想:“何教授,我们能不能把容错也做成模块化的?设计一种‘带自检的标准单元’。每个逻辑门卡片都内置简单的自检电路。当这些卡片组合成芯片时,自检电路也自动连接成一个整体的测试网络。这样测试成本就分摊了。”
“好思路!”何教授点头,“而且可以根据模块的关键性,决定自检的粒度。关键模块,比如控制单元,用细粒度、高频次的自检;非关键模块用粗粒度、低频次的自检。这又是一个优化问题......”
“这需要体系结构专家、数学家、可靠性工程师的紧密合作。”高先生总结道。
会议进行到半夜,窗外已经全黑。
刘星海教授走到黑板前,他拿起粉笔,在那些物理公式、布尔代数、指令集表格之间画了一个大圈。
“今天的会议,让我看到了‘星河计划’最宝贵的财富——”他的声音不高,但异常清晰,“我们在从原理层思考问题。”
他转过身,面对所有人:“我们不是盲目模仿,而是在问:数学的本质是什么?物理的边界在哪里?计算的规律是什么?”
小主,这个章节后面还有哦,请点击下一页继续阅读,后面更精彩!