技術狀態凍結會議後,總整合方案也隨後敲定的。
方案定了調子:硬體分層上架,微程式逐級喚醒,作業系統最後就位。
不是一口氣把所有板卡塞進機櫃、一次性上電。
那是蠻幹。
任何一個連線虛了、任何一顆晶片壞了、任何一條微程式寫錯了,整臺機器都可能起不來。
出了問題,連從哪兒查都不知道。
所以方案定的是層級推進。
最小系統先跑起來,然後是功能子系統,最後才是全系統。
每個層級都有明確的硬體配置狀態、對應的微程式集、驗收標準。
一步一確認,確認一項,往前走一步。
1970年1月1日,凌晨五點,京城還在沉睡。
一輛躍進130卡車亮著昏黃的車燈,停在紅星軋鋼廠防靜電車間門口。
躍進130的車廂上馱著一個墨綠色的鐵皮貨箱,那是雷應元帶著毛建華、鄒明等人趕製出來的板卡集運貨箱,四四方方,稜角分明,側面用白漆噴著幾個字:“特種運輸·崑崙專用”。
貨箱的側壁上有兩個小觀察窗,雙層玻璃,裡面掛著乾溼球溫度計。
透過玻璃,隱約能看見貨箱裡三層貨架上整整齊齊碼放著的抽屜。
銀白色的鋼製框架,前面板裝著鎖緊手柄和狀態指示燈,每一個抽屜上都貼著標籤。
電源、時鐘、主控、運算、儲存、I/O……
六個抽屜,今天要用的全部都在。
宇文坤德戴著白手套,一顆螺絲一顆螺絲地確認,一塊板卡一塊板卡地看,所有抽屜的鎖緊機構都反覆開合了三次,確認彈起有力、鎖止可靠。
萬人敵拿著萬用表,把每個抽屜背面的金手指都測了一遍接觸電阻,資料全部記錄在案。
吳國華最後走了一遍自檢程式,六塊板卡全部透過,指示燈亮得整整齊齊。
呂辰站在貨箱前面。
“封箱,出發。”
躍進130發動,緩緩駛出紅星軋鋼廠的大門。
後面跟著兩輛嘎斯,全副武裝的軍人隨隊押車。
引擎聲低沉地嗡鳴著,在空曠的街道上回蕩。
呂辰和吳國華坐在一輛嘎斯上。
呂辰懷裡抱著一個帆布包,包裡裝著今天的《最小系統上架清單》和幾份已經簽過字的技術確認書。
他盯著前方的路,路燈的光一盞一盞地從車頂上滑過去。
“幾點了?”
“五點四十二,師傅,開慢點,不著急。”吳國華看了一眼手錶。
“機房那邊七點才開門,到了也得等著。”
開車的戰士應了一聲,把車速又降了一些。
車輪碾過結霜的路面,發出細碎的嘎吱聲。
車隊過西直門的時候,遠處的天際線已經染上一線魚肚白。
呂辰從帆布包裡掏出一個保溫杯,擰開蓋子喝了一口,熱茶燙得他嘶了一聲。
把保溫杯擰上蓋子,裹緊了棉襖。
車隊拐進中關村,計算機所的灰磚樓在晨霧裡漸漸顯現。
計算機所機房的門已經開啟了,秦無功他穿著防靜電工裝,腳上套著鞋套,手裡拎著水平儀,蹲在一號機櫃前面做最後的檢查。
35臺機櫃已經全部就位,但今天只用第一臺,那臺被特意漆成淺灰色、與其他機櫃顏色稍有不同的“一號機櫃”。
機櫃的正面,16個抽屜插槽排列整齊,每個插槽兩側都有滾珠導軌,底部有鎖緊機構的卡槽。
機櫃後面的匯流排背板早已固定好,墨綠色的掐絲琺琅板在燈光下泛著內斂的光澤,金手指插槽一排排地張著嘴。
背板上的電源分配網路和資料匯流排已經過三輪測試,每一根線的通斷、每一組訊號的完整性,都有記錄可查。
秦無功站起來,把水平儀收進工具包,在機櫃正面貼了一張紙:“最小系統專用機櫃·硬體狀態確認”。
呂辰和吳國華、宇文坤德、萬人敵走了進來。
“秦工,早。”
“各們早,機櫃準備好了。”
秦無功走過來,把手裡那份檢查記錄遞給呂辰。
“導軌水平度、背板插槽接觸電阻、接地電阻、供電母線電壓,全部在規格內。”
呂辰接過記錄,一項一項地看。
導軌水平度每米不超過毫米,比指標還高了一倍。
背板插槽接觸電阻最大8毫歐,指標是10毫歐。
接地電阻0.8歐姆。供電母線電壓三相平衡,波動在±1%以內。
他合上記錄,點了點頭。
七點半,汪涵教授到了。
他今天換了一身乾淨的中山裝,領口的扣子系得嚴嚴實實,帶著一種大戰將至時才有的沉著。
他身後跟著衛知南和錢蘭。
衛知南抱著一臺行動式程式設計機,那臺機器比午馬機小一號,銀灰色的外殼,正面有一個鍵盤和一個七段數碼管顯示器。
錢蘭手裡拿著一個防靜電盒,盒子裡是三顆已經燒錄好的只讀儲存晶片,Bootloader、最小自檢程式、基礎IO驅動和看門狗餵狗程式,全部固化在裡面,今天要插到主控板的晶片插座上。
呂辰看了一眼手錶,站在一號機櫃前面,轉過身。
“開始吧。”
貨箱卸車,抽屜上架。
卡車已經倒進了機房門口的卸貨區。
貨箱的四條摺疊支腿放下來,穩穩地撐在地上。
宇文坤德拉開貨箱的側門,貨箱裡的溫度和溼度保持得很好,底板上的防靜電橡膠墊乾乾淨淨,三組貨架上六個抽屜整整齊齊地排列著,每一個抽屜的鎖緊機構都處於鎖止狀態,防止運輸中滑出。
他跳上貨箱,戴好防靜電手套,從第一層貨架上抽出第一個抽屜。
那塊銀白色的鋼製抽屜,前面板上貼著“電源·PWR-01”的標籤。
抽屜的分量不輕,裡面已經整合好了電源板,整流橋、濾波電容、DC-DC變換器全部固定在板卡上,板卡又透過導軌固定在抽屜裡。
他雙手托住抽屜兩側,走下貨箱,走進機房,來到一號機櫃正面。
所有人都在看他。
他沒有急著推。
先把抽屜底部的定位銷對準機櫃插槽兩側的導軌槽,然後用拇指按了一下抽屜前面板的釋放鈕,鎖緊機構處於開啟狀態。
他穩住呼吸,雙手均勻用力,將抽屜沿著導軌緩緩推進去。
導軌發出細微的滾珠滾動聲,像某種精密的、溫順的呼吸。
推到一半的時候,他停了一下。
沒有卡頓。
繼續推。
抽屜後部的金手指無聲地插入背板的插槽中,宇文坤德感覺到了一股輕微的阻力,那是金手指與插槽簧片接觸的觸感,均勻、穩定。
他繼續推進,直到抽屜前端面板與機櫃立柱平齊。
然後他用力一按。
“咔嗒。”
鎖緊機構彈起,抽屜被牢牢鎖死在機櫃裡。
宇文坤德退後一步,在手中的《硬體上架確認單》上打了一個勾。
第二個抽屜,時鐘板,推進第二個插槽。“咔嗒。”
第三個,主控板,推進第三個插槽。“咔嗒。”
第四個,運算板,推進第四個插槽。“咔嗒。”
第五個,儲存板,推進第五個插槽。“咔嗒。”
第六個,I/O板,推進第六個插槽。“咔嗒。”
六個抽屜,六個插槽,六聲“咔嗒”,間隔均勻,像某種機械的、不容置疑的心跳。
宇文坤德退後,看著那一排抽屜的前面板。
六個鎖緊手柄整齊地彈起,狀態一致。
他從兜裡掏出手帕擦了擦額頭,然後把確認單遞給呂辰。
呂辰接過單子,看了一眼,簽了字。
“硬體上架完成。”他說。“上電前檢查。”
這是最小系統的第一道測試關,但嚴格來說,還不是“系統”在跑,只是給機櫃通電,確認供電和時鐘基礎正常。
吳國華蹲在機櫃後面,手裡拿著示波器的探頭,夾在電源板的遠端測試點上。
萬人敵站在機櫃側面,萬用表的表筆點在了時鐘板的供電入口。
宇文坤德站在配電盒旁邊,左手搭在空氣開關上,右手拿著電筆,最後確認了一遍接地。
汪涵教授靠在工作臺邊,雙手抱在胸前,眼睛盯著示波器的螢幕。
“接地正常。輸入電壓三相平衡。”宇文坤德報狀態。
“上電。”呂辰說。
宇文坤德推上了空氣開關。
電磁接觸器“嘭”地一聲吸合。
機櫃前面板的幾個指示燈依次亮了起來,綠色的電源正常燈亮得最快,幾乎沒有延遲;黃色的匯流排空閒燈閃了兩下,也穩住了;紅色的故障燈沒有亮。
示波器螢幕上跳出一個方波。
吳國華盯著螢幕看了三秒。
“+5V正常。紋波22毫伏,在指標內。”他把探頭移到另一個測試點。“+12V正常。紋波24毫伏。”
萬人敵看著萬用表的讀數,唸了出來:“時鐘板供電伏,紋波21毫伏。OK。”
汪涵教授從工作臺上直起身,走到示波器前面,親自看了看波形。
他看得很仔細,從時域看到頻域,從上升沿看到下降沿,足足看了半分鐘。
“時鐘穩定。晶振起振正常,頻率10兆赫,偏差±%。”他直起腰,點了點頭。
呂辰在本子上記了一組資料,然後抬起頭。
“供電和時鐘基礎正常。下一步,插入主控抽屜,燒錄載入程式。”
宇文坤德將主控抽屜從貨箱裡取出來,第三個抽屜,銀白色框架,前面板上貼著“主控·CU-01”的標籤。
他雙手托住抽屜兩側,對準機櫃的第三個插槽,推進去。
“咔嗒。”
鎖緊機構彈起,KL-CU核心晶片正在等待它的靈魂。
衛知南從防靜電盒裡取出第一顆只讀儲存晶片,那顆銀灰色封裝的晶片上,已經燒錄好了Bootloader和最小自檢程式。
他開啟主控抽屜前面板的一個小蓋板,露出裡面的晶片插座,用鑷子夾住晶片,對準插座,輕輕壓下去。
又是“咔嗒”一聲,微小而清脆。
汪涵教授親自走到機櫃前面,檢查了晶片的安裝方向。
“載入。”
衛知南在一臺午馬機終端上敲了幾行命令。
螢幕上一行行綠色的字元跳出來:BOOTLOADER LOADING... LOAD COMPLETE. CHECKSUM PASSED.
“校驗透過。”
“上電覆位。”
宇文坤德按下了機櫃前面板上的復位按鈕。
主控抽屜前面板的指示燈閃了一下。
然後,機櫃正面那個巴掌大的診斷面板亮了起來。
綠色的“電源正常”燈亮了。
黃色的“時鐘正常”燈閃了兩下,也亮了。
紅色的“故障”燈沒有亮。
七段數碼管顯示了一個數字:0。
汪涵教授盯著那個“0”看了兩秒。
“POST透過了。”
最小自檢程式在主控核心上電後自動執行,檢測了核心晶片的暫存器、快取、匯流排介面。
如果檢測到故障,數碼管會顯示故障程式碼,紅色的故障燈會亮。
但它是0。
一切正常。
十點二十分,I/O抽屜就位,載入驅動,第一個指示燈亮起。
宇文坤德取出I/O抽屜,推進第六個插槽。
“咔嗒”一聲,板卡到位。
I/O抽屜的前面板上有八個撥碼開關和八個指示燈,整整齊齊地排成兩行。
衛知南取出第二顆只讀儲存晶片。
這顆晶片上寫好了基礎I/O驅動的微程式,讀撥碼開關的狀態,點亮對應的指示燈。
只有幾十條微指令,但這是崑崙1機第一次“做”一件事。
他把晶片插到主控板的另一個插座上。
汪涵教授走到終端前,手指懸在回車鍵上方。
停了大約兩秒,然後他按了下去。
螢幕上跳出一行行字元。
微程式被逐條載入到主控核心的微程式儲存器裡。
LOAD COMPLETE. 47 LOADED.
汪涵教授直起腰,退後一步。
他看著呂辰。
呂辰站在機櫃前面,右手食指懸在I/O抽屜前面板上的第一個撥碼開關上方。
他轉過頭,看了看汪涵教授。
汪涵教授點了點頭。
他看了看吳國華。
吳國華把示波器的探頭夾在了I/O板的輸出引腳上,螢幕上的波形穩定。
他點了點頭。
他看了看宇文坤德。
宇文坤德站在配電盒旁邊,手搭在空氣開關上,隨時準備斷電。
他點了點頭。
呂辰吸了一口氣。
“點火。”他撥動了第一個開關。
機房裡的空氣彷彿凝固了一瞬。
然後,I/O抽屜前面板上的第一個指示燈,最左邊的那一顆亮了。
綠色的光,在昏暗的機房裡格外醒目。
它沒有閃爍,沒有遲疑,就那麼穩穩地亮了,像一顆被點燃的星星。
汪涵教授站在機櫃前面,盯著那顆指示燈,一動不動。
他的手垂在身側,手指微微蜷著。
他沒有說話,但他的嘴唇在微微發抖。
吳國華盯著示波器的螢幕。
波形沒有異常,輸出訊號乾淨。
他沒有說話,但他的手指在桌面上輕輕叩了兩下。
宇文坤德站在配電盒旁邊,手裡攥著電筆,手背上青筋暴起。
呂辰看著那顆指示燈,過了幾秒,他撥動了第二個開關。
第二個指示燈亮了。
第三個、第四個、第五個……
他一口氣撥動了八個開關。
八個指示燈依次亮了起來,從左到右,像一排被點燃的引信。
他停下來,轉過身,看著汪涵教授。
“汪教授,I/O驅動通了。”
汪涵教授站在機櫃前面,過了好幾秒,他的嘴角動了一下,聲音沙啞。
“通了。”
呂辰翻開筆記本,在最下面寫了一行字年1月4日10時31分,崑崙1機最小系統I/O驅動載入成功,第一個指示燈點亮。
然後他把筆記本舉起來,讓在場的人都看見。
“各位,籤個字。”
不知道誰帶頭鼓的掌。
掌聲從機房的某個角落響起來,先是稀稀拉拉的,然後匯成一片,在空曠的機房裡迴盪。
沒有歡呼,沒有人說話,就是鼓掌。
下午,儲存抽屜、運算抽屜依次就位。
儲存抽屜推進第五個插槽,記憶體讀寫測試程式載入。
十組常規測試全部透過,邊界條件測試,全0地址、全1地址、地址線翻轉臨界點,全部透過。
終端機上跳出一行綠色的字元:BOUNDARY TEST PASSED. ALL 48 CASES VERIFIED.
汪涵教授點了點頭。
運算抽屜推進第四個插槽。
這是今天最難的一道坎。
KL-VU向量運算單元,上萬只電晶體,一次能處理一組向量資料。
今天只跑最簡單的:1.0+2.0=3.0。
浮點加法微程式載入。
終端機上開始滾過一行行編譯資訊。
LINKING... LOADING... LOAD COMPLETE. 128 LOADED.
“載入完成。”衛知南確認。
錢蘭敲了執行命令。
三秒後。
螢幕上跳出一行綠色的字元:RESULT: 0 TEST PASSED.
呂辰盯著那行字,把“0”看了兩遍。
“汪教授,1.0加2.0,等於3.0。”
汪涵教授走到終端機前面,親自敲了重新執行的命令。
螢幕上再次顯示0。
他又敲了一遍。
還是0。
他直起腰,退後一步。
“這個加法,我算了半輩子。今天我們終於把它算在了崑崙1上。”
下午四點,全最小系統穩定執行。
六塊板卡,電源、時鐘、主控、運算、儲存、I/O,全部線上。
系統沒有跑複雜的任務,只是迴圈跑著今天載入的所有微程式:讀寫儲存器的邊界測試、浮點加法、I/O驅動。
每隔一小時,宇文坤德測一組資料:電壓、溫度、時鐘波形。
萬人敵記錄在筆記本上,一筆一劃,工工整整。
下午六點,第一組穩定執行的資料出來了。
電壓最低點(儲存板遠端),最高點(電源板近端),全部在的指標範圍內。
時鐘毛刺最大幅度,沒有超過閾值。
機櫃內部溫度28度(環境溫度22度),溫升6度,在預期內。
所有節點,全部在規格內。
呂辰把這份資料從頭到尾看了一遍,合上本子。
“先跑24小時。明天下午這個時間,如果一切正常,最小系統,就通了。”
第二天下午五點,呂辰從工業部專家黨支部學習回來,第一時間來到崑崙1機房。
機櫃上,綠色的電源燈亮著,黃色的匯流排燈穩著,紅色的故障燈暗著,七段數碼管顯示著“0”。
沒有任何異常。
宇文坤德靠在牆角,手裡攥著一個搪瓷缸子,缸子裡的茶已經涼了。
見呂辰進來,他站起來,從桌上拿起那個記錄了24小時資料的筆記本,遞過去。
“呂工,24小時,零故障。”
呂辰接過本子,一頁一頁地翻。
電壓、溫度、時鐘波形、匯流排誤位元速率、中斷響應時間,每一項資料都在規格內,沒有一條超標,沒有一次異常。
他翻到最後一頁,上面寫著宇文坤德的簽字和衛知南的簽字。
“確認最小系統24小時穩定執行。”
呂辰把本子合上。
二十分鐘後,硬體板卡整合小組、軟體與微程式小組的人到齊了。
呂辰站在一號機櫃前面,手裡拿著那份記錄了24小時資料的筆記本。
“最小系統第一階段,透過了。”他翻開本子,一頁一頁地念那些資料。
不是念給誰聽,是確認。
唸完之後,他把本子放在桌上。
他拿起桌上第一沓檔案,那是《最小系統硬體狀態確認書》。
上面列出了最小系統的硬體配置,一臺主控機櫃、六個抽屜(電源、時鐘、主控、運算、儲存、I/O)、匯流排背板,以及每一項硬體引數的實測資料。
“最小系統硬體狀態確認書。確認最小系統的機械安裝、電氣連線、電源、時鐘、散熱,全部在規格內。”
他把檔案遞給宇文坤德。
宇文坤德接過去,簽了字。
汪教授拿起第二沓檔案,那是《底層驅動微程式包V1.0》的技術文件。
裡面記錄了今天載入的所有微程式,Bootloader、POST、基礎IO驅動、看門狗餵狗程式、記憶體讀寫測試程式、浮點加法微程式,每一條微程式的版本、功能描述、測試結果。
“底層驅動微程式包V1.0。確認微程式的版本、功能、測試結果,全部透過。”
汪涵教授在最後一頁簽了字。
呂辰拿起第三樣東西,那本記錄了24小時資料的筆記本。
“基線資料。最小系統下,所有關鍵節點的電壓、溫度、時鐘波形。這是崑崙1機的第一份健康檔案。以後每一次測試、每一次故障排查、每一次升級,都要對比這份基線。”
三樣東西,全部交付。
崑崙1的最小系統,通了。