亲,欢迎光临天天书吧!
错缺断章、加书:站内短信
后台有人,会尽快回复!
  • 主题模式:

  • 字体大小:

    -

    18

    +
  • 恢复默认

1月5日,清晨七点半。

计算机所机房门口,陈茂林已经站在那儿了,手里端着一个搪瓷缸子,缸子上的红字“抓革命促生产”被磨得只剩一半。

他今天穿了一件洗得发白的军便装,领口的扣子系得严严实实,头发梳得一丝不苟。

机房的门敞开着,里面传来暖通空调的低频嗡鸣。

吕辰到的时候,汪涵教授已经坐在了临时搬进来的长条桌旁,面前摊着那个黑皮本子,本子上密密麻麻写满了微程序清单。

他抬头看了吕辰一眼,没说话,又低下头继续写。

吴国华蹲在第一排机柜后面,万用表的表笔点在接地铜排上。

郑长枫站在他旁边,手里拿着一个文件夹,翻到空白页,铅笔夹在耳朵上。

秦无功从机房深处走出来,手里拎着一个水平仪,朝吕辰点了点头:“吕工,35台机柜全部就位,接地、供电、散热都确认过了。”

吕辰把帆布包放在长条桌上,看了一眼墙上新挂的那张“软硬件接口对照表”。

那是一张足有两米宽的白纸,上面画着一张巨大的表格,横轴是五大子系统。

电源、存储、I/o、运算、主控,纵轴是几百个接口项,每个格子都空着,等着被填满绿色的勾。

八点整,人齐了。

陈茂林敲了敲桌子。

“第二阶段,今天开始。”他开门见山,“第一阶段最小系统跑通了,证明能活。第二阶段要让它能跑、能算、能扛。35台机柜,五大子系统,25天之内,全部上架。”

他拿起一根粉笔,在黑板上画了一条时间线。

“1月5日到7日,第一轮,电源机柜,3台满配。”

“1月8日到11日,第二轮,存储机柜,6台满配。”

“1月12日到15日,第三轮,I/o机柜,2台满配。”

“1月16日到30日,第四轮,运算机柜21台加第二台主控机柜。”

“每轮之间,必须做跨子系统协同测试。软硬件接口对照表,完成一项打一个勾。谁有问题,现在说。”

没有人说话。

陈茂林点了点头,看向汪涵教授:“汪教授,微程序准备得怎么样了?”

汪涵翻开本子,念了一组数字:“电源管理微程序已就位,23条,覆盖电压监测、过压过流保护、热切换逻辑。存储控制器驱动正在做最后验证,预计明天完成。I/o通信协议栈还有两个bug,今天上午能改完。”他把本子合上,“软件不会拖硬件后腿。”

陈茂林又看向吕辰。

吕辰站起身:“陈工,电源机柜3台满配,冗余热切换,拔板不重启,电压跌落,备用电源0.1秒接管。今天是1月5日,宇文工、万工已驻红星厂把关,抽屉九点送达,第一轮电源上架。国华、郑老师和我上机柜。”

汪涵也站起身:“电源管理微程序今天必须在线,知南回院里守着,小钱跟我。”

上午九点,电源机柜的抽屉被押送到机房门口。

吕辰戴好白手套,打开货厢,从货架上抽出第一个抽屉。

那是电源机柜的主电源抽屉,550毫米超深型,比标准抽屉重了一倍不止。

里面集成了整流桥、滤波电容、dc-dc变换器和过压过流保护电路,板卡上密密麻麻焊着上百颗元件。

他双手托住抽屉底部,对准机柜插槽两侧的导轨,慢慢推进去。

滚珠导轨发出细微的、均匀的声响。

推到一半的时候,他停了一下,检查金手指和背板插槽的对位,确认无误,继续推进。

“咔嗒。”

锁紧机构弹起。第一个抽屉就位。

郑长枫、吴国华跟着动手。

然后是第二个、第三个……

每台电源机柜配了6个抽屉,3台一共18个抽屉。

推完最后一个,吕辰退后一步,额头上已经渗出了一层细汗。

开始检测。

吴国华蹲在机柜后面,手里拿着示波器的探头,夹在第一台电源机柜的远端测试点上。

郑长枫拿着万用表,蹲在旁边。

到了十点,所有检测通过。

“上电。”吕辰说。

郑长枫推上了第一台机柜的开关。

电磁接触器“嘭”地一声吸合。机柜前面板的绿色“电源正常”灯亮了,黄色的“待机”灯闪了两下,也稳住了。

示波器屏幕上跳出一个方波。

“+5V正常,纹波23毫伏。”吴国华报出数据。

“+12V正常,纹波25毫伏。”

“-12V正常。”

吴国华看着万用表:“远端电压4.88V,近端5.02V,压差在规格内。”

吕辰在本子上记了一组数据,然后说:“热切换测试。郑老师,拔一块电源板。”

郑长枫走到机柜侧面,伸手按住第二块电源抽屉的锁紧手柄,用力一扳。

锁紧机构弹开。

他把抽屉往外拉出一截,金手指与背板插槽脱离的瞬间,机柜前面板的一个黄色指示灯闪了一下,但绿色的“电源正常”灯没有灭,系统也没有重启。

示波器屏幕上的波形跳了一下,又稳住了。

吴国华盯着屏幕:“切换时间约50毫秒,远小于设计指标。”

郑长枫把抽屉重新推回去,“咔嗒”一声锁紧,系统依然稳定运行。

陈茂林站在旁边,双手抱在胸前,表情看不出什么,但嘴角微微动了一下。

吕辰继续:“电压跌落测试。模拟一路供电从5V跌到4V。”

郑长枫从工具台上拿起一个可调电源,串联在供电线路上,缓缓调低电压。

示波器屏幕上的电平线开始下降,当跌到4.2V的时候,机柜前面板的一个黄色指示灯亮了,紧接着另一路备用的电源指示灯亮起。

吴国华看着示波器的时间标尺:“切换时间约80毫秒,在0.1秒以内。”

“再测一次。”吕辰说。

郑长枫把电压调回正常,再重新跌落。

连续测试三次,每次切换时间都在70到90毫秒之间,全部达标。

陈茂林从兜里掏出烟,点了一根,吸了一口,没说话。

把最后一台电源机柜的测试数据记录完,吕辰直起腰,活动了一下僵硬的脖子。

“第一轮,三台电源机柜,热切换、电压跌落,全部通过。”

吕辰翻开本子,在第一轮任务下面写了一行字:“1月5日,电源机柜上架测试完成。”然后把本子递给陈茂林。

陈茂林看了一眼,签了字。

墙上的接口对照表,第一列“电源子系统”下面,三个格子被填上了绿色的勾。负责打勾的是秦无功,他用一支粗头的绿色记号笔,一笔一笔地涂,动作很慢,像是在完成某种仪式。

1月8日晨会,陈茂林开门见山。

“电源跑通了。第二轮,存储机柜,今天开始上架。汪教授,存储控制器驱动怎么样了?”

汪涵翻开本子:“昨天下午已经就位。缓存一致性协议微程序、Ecc纠错、地址映射,全部通过功能仿真。今天上午在模拟台上再跑一轮,中午之前可以加载到真机上。”

陈茂林点了点头,看向吕辰。

吕辰站起来,走到黑板前,在第二轮“存储机柜”下面写了几个字:

6台满配

Ecc纠错

单芯片故障屏蔽

“存储机柜6台,每台8个抽屉,每个抽屉8块板卡,每块板卡16颗存储芯片。今天上架3台,明天再上3台。上架完成后,先跑独立测试,然后做跨子系统协同。”

他顿了顿,又补了一句:“存储是整个系统的主存。它要是出问题,后面的运算都是空中楼阁。”

没有人质疑。

上午十点,存储抽屉到达机房。

存储机柜比电源机柜深一些,背板上的插槽更多。

抽屉是加深型450毫米,每个抽屉里装了8块存储子板,每块子板上16颗KL-SRAm芯片。

一个抽屉就是128颗芯片。

郑长枫把第一个存储抽屉推进插槽的时候,明显感觉阻力比电源抽屉大。

不是卡顿,是金手指与背板插槽的接触更紧密,插到底的时候能听到连续几声细微的“嗒嗒嗒”,那是多路信号同时接通的声音。

6台存储机柜,48个抽屉,特种车跑了6趟,整整装了两天。

到第二天下午四点半,最后一台机柜的最后一个抽屉锁紧,吕辰才直起腰,拧开保温杯灌了一大口凉茶。

吴国华和郑长枫又开启紧张的检查工作。

直到晚上八点,更换了一块有疑虑的板卡后,全面通过。

开始上电,郑长枫依次推上六台机柜的空气开关。

六台机柜的绿色指示灯依次亮起来,像一排被点燃的引信,从最左边传到最右边。

汪涵教授在终端上敲了一行命令,加载存储控制器驱动。

屏幕上开始滚过一行行绿色的字符:

StoRAGE coNtRoLLER INItIALIZING...

6 UNItS dEtEctEd.

cAchE cohERENcE pRotocoL LoAdEd.

AddRESS mAppING tAbLE INItIALIZEd.

Ecc ENAbLEd.

REAdY.

“驱动加载成功。”汪涵说。

“跑基础读写。”吕辰说。

钱兰在终端上敲了一组测试命令。

先写后读,地址递增,数据模式全0、全1、交替5A、A5。

屏幕上每完成一组测试,就跳出一个绿色的“pASS”。

30组基础测试,全部通过。

“写入全部主存,随机地址。”汪涵说。

这是第一道硬门槛,6台机柜的全部主存容量为28mb,在当时已是天文数字。

钱兰敲了一个脚本,终端机开始咔嗒咔嗒地响,探针矩阵一行一行地扫过二维卡。

机房里的气氛安静了下来。所有人都在等。

三分钟后,屏幕上跳出一行字:

wRItE pLEtE.

bYtES wRIttEN.

“读回校验。”

钱兰敲了读回命令。

又是一段漫长的等待。

屏幕上的字符开始滚动,每一行都是地址和数据比对的结果。

滚了大约两分钟,最后一行跳出来:

REAd VERIFY pLEtE. ALL dAtA mAtchEd. 0 ERRoRS.

吴国华盯着那行字看了两秒,肩膀微微松了一下。

郑长枫在笔记本上记了一笔:“随机读写,零错误。”

真正考验存储子系统的是跨子系统协同。

1月10日下午,第一轮和第二轮之间的协同测试:存储+运算。

此时运算机柜还没有正式上架,但第一阶段最小系统里已经有一块运算板在机柜里跑着。汪涵决定用那块运算板做协同测试。

“从存储读取一个1024x1024的矩阵,做FFt,写回存储。”

这是一个典型的科学计算场景。

运算单元从存储取数据,计算完再存回去。

路径上任何问题都会暴露。

汪涵亲自加载FFt微程序,那条微程序有三百多条指令,是向量计算库里最复杂的一个。

加载完成。

钱兰敲了运行命令。

运算板上的指示灯开始闪烁。黄色的总线占用灯闪得很快,绿色的运行灯一直亮着。存储机柜那边的指示灯也在闪,读写的频率很高,像某种急促的心跳。

三十秒后,屏幕上跳出一行字:

FFt pLEtE. dAtA VERIFIEd.

“比对一下原始数据和变换后的数据。”吕辰说。

钱兰又敲了一组命令。

屏幕上开始逐行比对,每一行都跳出一个绿色的“mAtch”。

滚了十几秒,最后一行:

ALL dAtA VERIFIEd. 0 ERRoRS.

汪涵靠在椅背上,把眼镜摘下来擦了擦。

他的手指在镜片上停了一下,像是在确认自己没有看错。

吕辰翻开本子,在“跨子系统协同:存储+运算”那一行写了两个字:通过。

秦无功拿着绿色记号笔走到接口对照表前,在“存储子系统”那一列下面,一口气打了六个勾。

第二轮测试中也不是一帆风顺。

1月11日上午,当第三台存储机柜上架后,系统出现了第一次重大故障。

总线死锁。

现象是:两个存储控制器同时向同一块内存区域发出读写请求,仲裁器没有处理好优先级,两条指令卡死在了总线上。系统不崩溃,但也无法继续执行。

示波器上能看到地址总线的电平卡在中间状态,既不归零也不跳变。

吴国华用逻辑分析仪抓了半个小时的波形,最后锁定在两组地址信号的重叠窗口。

“两个控制器同时申请同一个bank,仲裁器给的应答信号同时到达,谁也没等到对方的释放信号。”他用手指点着屏幕上的两条波形,“死锁了。”

钱兰听到这话立刻走到黑板前,画了一张仲裁状态转移图。

“现有的仲裁优先级是‘先来先服务’。如果两个请求同时到达,状态机没有定义这种情况,会进入一个非法状态。”她用粉笔在图上圈了一个圈,“这里,缺少一个‘同时到达’的处理分支。”

汪涵走过来看了看,点了点头:“微程序里加一条判断。两个请求同时到达时,默认给低地址bank的控制器优先级。不需要改硬件。”

他当场坐下,在终端上修改微程序,加了六个微指令,重新制作了二维卡,加载,重启。

死锁消失。

郑长枫重新跑了一遍28mb随机读写测试,全部通过。

吕辰在本子上记了一笔:“总线仲裁缺陷,微程序修复。已归档至故障模式库。”

墙上接口对照表的“存储仲裁”格子,被打上了一个绿勾,旁边用红笔标注了“已修复”。

1月12日下午,存储子系统独立测试全部完成。

六台机柜满配,Ecc纠错验证通过。

测试人员故意在写入数据后、读出前用信号发生器在总线上对某位进行单比特翻转,模拟存储单元软错误。

读回时屏幕上显示“ERR coRREctEd”,数据自动修复。

单芯片故障屏蔽测试:吴国华用镊子拔下一颗存储芯片。

诊断系统在0.3秒内报出故障板卡编号,七段数码管显示“06-03-02”,对应第六号机柜第三块板卡第二槽位。系统继续运行,没有死机,没有数据丢失。

陈茂林站在机柜前面,看着数码管上那串数字:“比指标快了0.2秒。”

吕辰点了点头。

汪涵合上笔记本,把《存储子系统联调报告》签了字,放在桌上。

报告很厚,足有30多页,记录了6台机柜、48个抽屉、6000多颗存储芯片的所有测试数据。

每一条数据后面都有测试人的签字。

陈茂林拿起报告翻了翻,没说话,把它递给了秦无功归档。

墙上的接口对照表,存储子系统那一列,十四个格子全部被打上了绿色的勾。

秦无功把最后一笔涂完,退后一步看了看,转身说:“第三轮,I/o,明天开始。”

吕辰看了一眼黑板上那条时间线。

1月12日,第二轮比计划提多用了一天。

他拿起粉笔,在“存储机柜”后面画了一个“+”。

窗外,天已经黑透了。

机房里的日光灯把35台机柜照得锃亮,绿色的指示灯一排一排地亮着,像一座沉默的城市。