7月14日,计算机所。
技术研讨室,60余人坐得满满当当,空气中带着一丝闷热。
主席台上方挂着一条红色横幅,上面写着“昆仑工程技术研讨会”几个白色大字,简洁庄重。
台下坐着的,是来自17个单位的代表。
红星所、6305厂、红光厂、微程序设计院、昆仑1机超算中心、国防科委、真空所、四机部、工业部……
每一个单位的铭牌后面,都坐着这个领域最顶尖的人。
吕辰坐在红星所代表席的第二排,旁边是钱兰和诸葛彪。
他的面前摊着一个厚厚的牛皮纸文件夹,封面上印着“701工程可行性研究报告”几个字。
这份报告他写了两个月,改了七稿,直到三天前,才终于定了稿。
赵长河坐在他前面一排,穿着一件洗得发白的浅灰色短袖衬衫,头发梳得整整齐齐,腰板挺得很直。
他面前的桌上也摊着一个文件夹,里面是通讯科学实验室的人员名单和组织架构图。
两个星期前,他们还在固安的农场里种地、养猪、扫院子。
现在,他们坐在计算机所的会议室里,讨论的是中国第一代科研数据网络的建设。
赵长河端起搪瓷缸子喝了一口水,水有些烫,他吹了吹,又喝了一口。
他的手很稳,但心里有些恍惚。
吕辰等人离开国营沙河田农场仅仅一周,他就成了红星所的人。
红星所挂牌成立了通讯科学实验室,将他们30余人,和工业监测实验室无线微波通信团队20余人为班底一起调入,成了这个实验室的班底,他也成了这个实验室的主任。
那20多位专家也被安置到星河计划各单位,为星河计划向亚微米工艺进军开始基础研究。
不仅如此,还将红星轧钢厂老厂区的后勤中心的一栋楼,和两个大仓库给了他们办公,眼见各种实验设备、物资到场,他仿佛又年轻了几岁。
通讯科学实验室将作为701工程的科研实体存在,承接701工程的技术攻关工作,接受总装电信总局的业务指导。
所以今天的会议,他们来到了现场。
赵长河看了看会场的布标,又看了看座位前的水牌,这种感觉,像做梦一样。
八点整,会议室的门关上了。
夏先生已经在主席台前就坐。
他的头发根根雪白,犹如葱根,整个人看起来比平时精神了不少。
“同志们,昆仑工程技术研讨会,现在开始。”
他的声音在会议室里回荡,带着一种主持重大会议时才有的庄重。
“昆仑1机已经交付军方使用,超算中心已正式挂牌,但是昆仑工程不能,技术不能停。今天这个会,有三个议题。”
“第一,昆仑2机的技术指标发布和架构设计讨论。”
“第二,昆仑汇编语言设计规则汇报。”
“第三,701工程可行性方案汇报和论证。”
他放下稿子,目光扫过全场。
“下面,进行第一项议程。请昆仑工程接口与架构小组组长陈茂林同志,汇报昆仑2机的初步设计指标。”
陈茂林走到白板前,拿起记号笔,在白板上写了几行数字。
他的字迹工整,每一个数字都写得很大,让在场的人都能看清。
“昆仑2机的初步设计指标,我们列了一个框架。”
他在白板上写下了第一行:主频为20-25 mhz(昆仑1为10 mhz)
“主频提升一倍以上。这需要2微米工艺的全面成熟,以及更精细的时序设计。”
第二行:向量运算单元:64个(昆仑1为21个)
“向量单元数量提升三倍。这不仅仅是简单复制,还要解决64个单元并行时的数据一致性、总线竞争、负载均衡问题。”
第三行:峰值算力:2-3 GFLopS(昆仑1为450 mFLopS)
“算力提升五到六倍。昆仑1的450兆次,我们用了21个单元。昆仑2要达到2到3个G,64个单元还不够,还需要提高主频、优化向量长度。”
第四行:主存容量256 mb(昆仑1为28 mb)
“主存容量提升九倍。存储系统的设计将是昆仑2的最大挑战之一。256兆字节,需要多少颗存储芯片?以单颗芯片4Kbit计算,需要超过50万颗。这显然不行。所以,昆仑2必须用更大容量的存储芯片,至少单颗16Kbit,甚至64Kbit。”
第五行:存储带宽1.5-2 Gb/s(昆仑1为360 mb/s)
“带宽提升四到五倍。存储墙问题会越来越严重。cpU算得再快,数据喂不进去,也是白搭。所以昆仑2的存储系统必须重新设计,引入多体交叉、缓存预取、甚至缓存一致性协议。”
第六行:I/o带宽128 mb/s(昆仑1为16 mb/s)
“I/o带宽提升八倍。昆仑2要连接更多的高速外设,磁盘、磁带、绘图仪、通信设备,I/o通道不能成为瓶颈。”
他放下记号笔,转过身,看着台下。
“这些数字,是根据未来五年国防科研的需求倒推出来的。弹道计算需要更高精度的网格剖分,气象预报需要更大规模的数值模拟,核物理需要更复杂的中子输运方程求解。昆仑1的450兆次,再过三四年,就不够用了。”
台下安静了一瞬。
有人在笔记本上飞快地记,有人皱着眉头盯着白板上那些数字,有人靠在椅背上闭着眼睛在思考。
陈茂林继续说:“除了指标的提升,昆仑2的架构也会有重大变化。”
他拿起记号笔,在白板上画了一张架构图。
“昆仑1是双核心架构,主核心负责计算,辅核心负责冗余校验和状态监控。昆仑2在这个基础上,增加专用协处理器。”
他在图上画了一个新的方块,标注了“协处理器”三个字。
“协处理器负责特定类型的计算任务,比如FFt、矩阵运算、卷积。这些任务在科学计算中频繁出现,用通用核心算效率低,用专用硬件算速度快一个数量级。”
他顿了顿,又画了一个箭头。
“向量长度从64位扩展到128位。一条向量指令,同时处理128位数据,相当于四个32位浮点数,或者两个64位浮点数。指令级并行度提升一倍。”
“缓存一致性协议。昆仑2有64个向量单元,每个单元有自己的缓存。多个缓存同时访问主存,数据不一致怎么办?必须有一套硬件协一来保证各个缓存看到的数据是一致的。”
“存储层级优化。L1缓存、L2缓存、主存、外存,四级存储架构。L1缓存紧贴核心,延迟1-2个时钟周期。L2缓存共享,延迟10-20个时钟周期。主存延迟几百个时钟周期。外存延迟毫秒级。软件要能感知这个层级,把最常用的数据放在最快的存储器里。”
他放下记号笔,转过身。
“芯片工艺,2微米为主,1微米为辅。昆仑1的KL-VU向量运算单元,集成了2万多个晶体管。昆仑2的控制核心芯片,复杂度预计8到10万晶体管。2微米工艺能不能做出来?能做。但良率能到多少?不知道。”
“所以,我们建议推进1微米工艺的预研。昆仑2的第一版流片用2微米,验证架构。第二版如果能用上1微米,那性能就能再上一个台阶。”
他合上笔记本,看着台下。
“时间表。1970年底,完成架构设计。1971年,完成逻辑设计和仿真。1972年,第一版流片。1973年,整机集成。1974年,交付。”
他顿了顿,声音提高了一些。
“这个时间表,很紧。但昆仑1我们从1965年到1970年,五年走完了。昆仑2,我们争取四年。”
掌声落下去之后,台下有人举手了。
是6305厂的陈光远。
他站起来,手里拿着一个笔记本,翻到某一页。
“陈工,我问几个问题。”
“陈厂长请讲。”
“2微米工艺,做8到10万晶体管的芯片,面积多大?功耗多大?散热怎么解决?”
陈茂林显然想过这个问题。
他走到白板前,拿起记号笔,在空白处画了一个矩形。
“以KL-VU为参照,2万个晶体管,芯片面积约5毫米乘5毫米,功耗约2瓦。8到10万晶体管,面积约10毫米乘10毫米,功耗约8到10瓦。”
他顿了顿,在矩形旁边画了一个散热片的简图。
“单颗芯片8到10瓦,风冷不够,必须加散热片,甚至水冷。我们在机柜设计上会预留散热通道,芯片封装也要用陶瓷封装,导热系数比塑料高一个数量级。”
陈光远点了点头,又问了第二个问题。
“64个向量单元并行,总线带宽够不够?总线仲裁怎么做?”
陈茂林在白板上画了一条总线,又在上面画了64个小方块,代表64个向量单元。
“昆仑2的总线,我们计划采用分层总线架构。核心总线,点对点连接主核心和协处理器,带宽足够。存储总线,分成四个独立通道,每个通道带宽500兆字节每秒,四个通道并行,总带宽2G字节每秒。向量单元访问存储时,自动分配到不同的通道,避免冲突。”
他顿了顿,又补了一句。
“仲裁器也要升级。昆仑1的总线仲裁器是集中式,一个仲裁器管所有。昆仑2要改用分布式仲裁,每个向量单元有自己的仲裁逻辑,总线请求在单元之间协商解决,避免单点瓶颈。”
陈光远想了想,点了点头,坐下。
台下又有人举手了。
是哈工大的包康建教授:“陈工,昆仑2的指令集,和昆仑1兼容吗?”
陈茂林摇了摇头。
“不完全兼容。昆仑1的指令集是为21个单元、64位向量长度设计的。昆仑2是64个单元、128位向量长度,指令格式必须变。但是,我们会保持‘源代码级兼容’。也就是说,昆仑1上写的汇编程序,重新编译一下,就能在昆仑2上跑。不需要重写。”
包教授追问:“翻译器的效率呢?重新编译后的代码,性能损失多少?”
陈茂林想了想:“目标是损失不超过10%。这个目标不低,需要微程序设计师和编译器的开发者紧密配合。”
包教授点了点头,没再追问。
陈茂林回到座位上。
汪涵教授站起来,走到主席台前。
他鬓角的白发又多了几根,眼睛下面的青黑已经扩展到整个眼眶,显然一直在熬夜。
“同志们,下面我汇报昆仑汇编语言的设计规则。”
他翻开笔记本,念了一段。
“昆仑1机的4863条微程序,是‘机器语言’。只有极少数人能写。要让昆仑系列被全国工程师使用,必须有一套统一的汇编语言。”
他放下笔记本,走到白板前,拿起记号笔。
“昆仑1是向量机,指令集与标量机完全不同。各单位自研的小型机指令集互不兼容,工程师写一套代码,只能在特定机器上跑,重复劳动。我们要做的是,一套汇编语言,能在昆仑1上跑,能在昆仑2上跑,能在以后所有的昆仑机上跑。”
他在白板上写了三个词:可读性、正交性、可扩展性。
“第一条,可读性。汇编指令不是给机器看的,是给人看的。每条指令要有直观的助记符。工程师看到moV就知道是数据传送,看到Add就知道是加法,看到Jmp就知道是跳转。不需要查手册。”
“第二条,正交性。指令格式要统一,操作数的组合要规整。不能让工程师背几十种特殊规则。比如,所有算术指令的格式都是‘op 目标, 源’。moV是‘moV 目标, 源’,Add也是‘Add 目标, 源’。格式一致,学一条就会一百条。”
“第三条,可扩展性。昆仑2之后还有昆仑3、昆仑4。汇编语言要能向后兼容。昆仑2上写的程序,到了昆仑3不能重写。所以指令编码要留余量,操作码不能塞满,要给未来预留空间。”
他在白板上画了一个表格。
“指令类型,我们分了五大类。”
“第一,数据传输。负责寄存器和存储器之间的数据搬移。”
“第二,算数运算。数数和浮点的加减乘除。”
“第三,逻辑运算。位运算和移位。”
“第四,转移控制。条件跳转、无条件跳转、子程序调用。”
“第五,输入输出。从I/o端口读数据、写数据。”
他放下记号笔:“一条汇编指令,通过翻译器,对应若干条微程序。工程师写moV,翻译器自动生成取数据、送数据、存数据、更新指针的微程序序列。工程师不需要知道微程序长什么样,他只需要知道moV是干什么的。”
四机部某院的一位专家举手,他骨瘦如柴,脸上老人斑密布,站起来颤巍巍的:“小汪,翻译器的规范,和汇编语言同步制定?”
“对。”汪涵教授点了点头,“翻译器是连接‘工程师语言’和‘机器语言’的桥梁。汇编语言定了,翻译器的规范也要同步定。没有翻译器,汇编语言就是纸上谈兵。”
老专家又问:“翻译器谁来写?”
汪涵教授想了想:“‘微程序生成’‘语法分析’和‘代码优化’都由微程序设计院来写。”
老专家点了点头。
汪涵教授继续说道:“1970年底,技术白皮书定稿。1971年,翻译器原型开发。1972年,在昆仑1机上验证运行。1973年,向全国发布。”
他合上笔记本,看着台下。
“汇编语言的事,我就汇报到这里。”
台下掌声响起来,汪涵教授回到座位上,端起搪瓷缸子喝了一口水。
茶已经凉了,但他喝得很踏实。