第583章 电源肌骨(2/2)
6台存储机柜,48个抽屉,特种车跑了6趟,整整装了两天。
到第二天下午四点半,最后一台机柜的最后一个抽屉锁紧,吕辰才直起腰,拧开保温杯灌了一大口凉茶。
吴国华和郑长枫又开启紧张的检查工作。
直到晚上八点,更换了一块有疑虑的板卡后,全面通过。
开始上电,郑长枫依次推上六台机柜的空气开关。
六台机柜的绿色指示灯依次亮起来,像一排被点燃的引信,从最左边传到最右边。
汪涵教授在终端上敲了一行命令,加载存储控制器驱动。
屏幕上开始滚过一行行绿色的字符:
STE TROLLER INITIALIZING...
6 UNITS DETECTED.
CACHE COHERENCE PROTOCOL LOADED.
ADDRESS MAPPING TABLE INITIALIZED.
EABLED.
READY.
“驱动加载成功。”汪涵说。
“跑基础读写。”吕辰说。
钱兰在终端上敲了一组测试命令。
先写后读,地址递增,数据模式全0、全1、交替5A、A5。
屏幕上每完成一组测试,就跳出一个绿色的“PASS”。
30组基础测试,全部通过。
“写入全部主存,随机地址。”汪涵说。
这是第一道硬门槛,6台机柜的全部主存容量为28MB,在当时已是天文数字。
钱兰敲了一个脚本,终端机开始咔嗒咔嗒地响,探针矩阵一行一行地扫过二维卡。
机房里的气氛安静了下来。所有人都在等。
三分钟后,屏幕上跳出一行字:
WRITE PLETE. BYTES WRITTEN.
“读回校验。”
钱兰敲了读回命令。
又是一段漫长的等待。
屏幕上的字符开始滚动,每一行都是地址和数据比对的结果。
滚了大约两分钟,最后一行跳出来:
READ VERIFY PLETE. ALL DATA MATCHED. 0 ERRORS.
吴国华盯着那行字看了两秒,肩膀微微松了一下。
郑长枫在笔记本上记了一笔:“随机读写,零错误。”
真正考验存储子系统的是跨子系统协同。
1月10日下午,第一轮和第二轮之间的协同测试:存储+运算。
此时运算机柜还没有正式上架,但第一阶段最小系统里已经有一块运算板在机柜里跑着。汪涵决定用那块运算板做协同测试。
“从存储读取一个1024×1024的矩阵,做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台机柜照得锃亮,绿色的指示灯一排一排地亮着,像一座沉默的城市。