1966年11月26日,呂辰穿上了嫂子陳雪茹專門定製的新衣服。
深灰色的中山裝,領口內側繡了一個小小的“辰”字,針腳細密,是陳雪茹熬了兩個晚上親手縫上去的。
今天是個大日子。
早在一週前,計算機所就傳來訊息,崑崙-0機搭建完成,進入開機聯調前的最後階段。
訊息是通過保密電話傳到紅星所的,宋顏教授接完電話,在辦公室坐了很久,出來的時候眼眶是紅的。
隨後,紅星所以星河計劃指揮部之名,向全國星河計劃各組、各成員單位發函,將於11月26日舉行第四次星河計劃全體會議,共同見證崑崙-0機的開機儀式,共商崑崙工程下一步工作,製定星河計劃下一批攻堅任務。
函件發出後,回電像雪片一樣飛回來。
二十七組,全部確認參會。
“走吧。”門外傳來諸葛彪的聲音,“再不走趕不上車了。”
呂辰轉過身,拿起桌上的筆記本,推門出去。
走廊裡已經站滿了人。
謝凱、錢蘭、吳國華、宋顏教授,還有整合電路實驗室的幾個組長,一個個都穿著乾淨的中裝,釦子扣得整整齊齊,像是要去參加什麼隆重的典禮。
事實上,這就是典禮。
一輛草綠色的軍用卡車停在研究所門口,發動機轟轟地響著。
眾人爬上後車廂,扶著車幫站好。車開動,冷風灌進來,吹得人臉生疼。但冇人說話,每個人都沉默著,像是在想什麼心事。
呂辰靠在車幫上,看著灰濛濛的天空。
從1964年春天提出“崑崙工程”的構想,到今天,整整兩年零八個月。
兩年零八個月裡,理論組在算指令集,設計組在畫邏輯圖,光刻組在攻關工藝,儲存組在研究磁芯和半導體儲存,機械組在加工精密零件,計量組在研製光柵尺和時鐘源……
今天,要見分曉了。
車子拐進中關村,遠遠就看見計算所門口站著一排持槍衛兵,比平時多了三倍。門口拉起了警戒線,所有車輛和人員都要接受檢查。
卡車停下來,衛兵上車檢查證件,一一看過,確認無誤,才揮手放行。
車子開進院子,在主樓前停下。
呂辰跳下車,環顧四周。
計算所的主樓是五十年代建的,灰磚牆,拱形窗,樸素得像一座倉庫。但今天,這棟樸素得不能再樸素的建築,被層層警衛圍得像一座堡壘。
主樓門口站著兩個穿軍裝的值班軍官,肩章上的星星在晨光中閃著光。旁邊還有幾個穿便衣的,腰裡鼓鼓囊囊的,一看就知道帶著傢夥。
呂辰目光掃過停在院子裡的那些車:軍綠色的吉普,黑色的伏爾加,還有幾輛“紅旗”。
“走吧。”宋顏教授在前麵招呼。
眾人跟著他往主樓裡走。
二層大會議室,能容納兩百多人的大房間裡已經坐了大半。長條桌擺成回字形,桌上鋪著白布,每個位置前放著一個軍綠色的檔案夾、一支鉛筆、一個搪瓷缸子。
主席台在最前麵,一排桌椅,上麵立著幾個名牌。
呂辰在靠後的位置坐下,目光掃過會場。
星河計劃二十七個組,水牌一個不少。每一個水牌後麵都坐著人,有頭髮花白的老教授,有戴著厚眼鏡的中年工程師,也有像他一樣的年輕人。
靠牆還坐著一排穿軍裝的,肩章上星星杠杠各不相同。呂辰認出了其中幾個——國防科委的、四機部的,還有第二十四、二十五研究院的人。這些人平時很少出現在這種場合,今天全來了。
主席台上,名牌已經擺好。錢先生、王先生、孫老、劉星海教授,還有計算機所的夏先生已經就坐。
八點半的時候,兩百多個座位幾乎全坐滿了,後麵還加了一排椅子。空氣裡瀰漫著煙味和搪瓷缸子裡茶葉的香氣,說話聲嗡嗡的,像一鍋快要燒開的水。
八點五十分,會議室的門被推開。
首長走了進來。
他穿著深灰色的中山裝,頭髮梳得一絲不苟,目光沉靜,步伐不快不慢。身後跟著國防科委的王主任、四機部的周副部長,還有幾個呂辰不認識的人。
全場起立。
首長走到主席台前,微微點了點頭,示意大家坐下。他在自己的位置坐下,環顧了一圈會場,目光從每一張臉上掃過。
“都到齊了?”他側頭問旁邊的劉星海。
劉星海點頭:“星河計劃27個組,與會相關單位的負責人,全部到齊。”
首長點點頭,冇再說話。
九點整,劉星海站起來,目光掃過全場。
“第四次星河計劃全體會議,現在開始。”
“今天上午的議程隻有一個,共同見證崑崙-0機的首次開機聯調。”
他頓了頓,目光看向會場側麵的一個門。
“在開會之前,請大家先去參觀崑崙-0機的現場。技術問題,由計算機所陳高工現場講解。”
眾人站起來,跟著劉星海往那個門走。
崑崙-0機被安裝在計算所一個巨大的車間裡。
這個車間原本是計算機所的總裝車間,拱形屋頂,鋼架結構,麵積大約有兩三百平方米。此時車間裡空空蕩蕩,隻在正中央擺著一個墨綠色的機櫃。
那個機櫃,在空曠的車間裡,顯得很不起眼。
大約一個後世雙開門冰箱大小,一人多高,一米來寬,深度不到一米。用鋼板焊接而成,表麵噴著墨綠色的漆,棱角處包著鐵皮,前開門,後部有散熱孔,側麵還有兩個吊裝環。
機櫃正麵,密密麻麻排列著指示燈和開關。指示燈有紅有綠,開關有大有小,最顯眼的是右下角一個巨大的紅色扳手開關。
機櫃前麵,放著一張操作檯。操作檯上嵌著一排熒光管陣列,大約能顯示兩行字元。旁邊是一個二維卡讀卡機,再旁邊是一台針式列印機,還有一個示波器。
由於整合電路實驗室的顯示控製晶片剛剛完成第二次流片,最後的設計還冇有定型,因此崑崙-0機還冇有顯示器。
兩百多人圍在機櫃四周,裡三層外三層。前麵的人湊近了看,後麵的人踮著腳、伸著脖子往裡麵瞧。
計算機所的陳高工站在機櫃旁邊,手裡拿著一根細長的金屬棒,指著機櫃內部的各個部分。
“各位,這就是崑崙-0機。”
他的聲音有點沙啞,但每個字都咬得很清楚。
他開啟機櫃的前門,露出裡麵的內容。
機櫃內部是模組化插槽結構,如果後世的人來看,會覺得這有點像“機架式伺服器”的雛形,但要粗糙得多。背板是一塊巨大的陶瓷基板,上麵用“掐絲琺琅”工藝手工布著密密麻麻的銅線,走線像一幅抽象畫。背板上焊接著幾十個插座,每個插座對應一塊板卡。
“機櫃內部采用模組化插槽結構。所有板卡都是標準尺寸,可以像抽屜一樣插拔。”
陳高工從機櫃裡抽出一塊板卡,舉起來讓大家看。
板卡大約A3紙大小,陶瓷基底,表麵是密密麻麻的金屬走線,上麵焊著幾十塊陶瓷封裝的晶片。晶片大小不一,排列得整整齊齊,像一座微縮的城市。板卡邊緣有金屬導軌,鍍著一層亮閃閃的鎳。
“這是控製板,代號KL-01。采用雙核心冗餘架構,一個主計算核,一個輔容錯核。主核負責取指令、譯碼、發射,輔核負責指令預取和結果校驗。兩個核跑同樣的指令流,輔核的結果和主核比對,不一致就觸發中斷,重新執行。”
他把板卡插回去,又抽出旁邊一塊。
“這是運算板,代號KL-PE。崑崙-0一共配了3塊運算板,每塊整合50塊晶片,支援單指令多資料的向量操作。一塊運算板一次能算一組資料,三塊並行,理論峰值效能是單核的三倍。”
他又抽出更下麵的一塊板卡。
“這是儲存板,用咱們自己研發的靜態儲存晶片,2kbit容量,四塊板拚起來,一共8kbit。用於暫存中間資料。”
“這是電源板,兩塊,提供±5V、±12V四路電源。帶過流保護、過壓保護。”
“這是介麵板,連線旁邊的程式設計機、製卡機、針式列印機和示波器。”
他把板卡插回去,關上機櫃門,走到側麵,指著機櫃背部的散熱孔。
“散熱方麵,采用風冷加區域性液冷混合方案。機櫃頂部裝有一台大功率軸流風扇,向下方吹風。每塊運算板的熱點區域貼有銅製散熱片,控製板上方有微通道液冷板,一根細銅管穿過晶片區域,裡麵流淌著冷卻液,連線到機櫃側麵的小型水箱和散熱器。”
他頓了頓,又補充了一句:“這套散熱係統,在滿負荷執行的情況下,能把晶片溫度控製在四十度以下。”
呂辰站在人群裡,看著那個墨綠色的機櫃。
它像一頭沉睡的野獸蹲在車間中央。不是因為它有多先進,而是因為——在這個年代,在這個國家,靠著一群人的手,靠著各種土法上馬,真的把它做出來了。
“技術引數,我簡單報一下。”陳高工翻開手裡的檔案夾。
“架構:一控三算,SIMD向量並行,雙核心冗餘。”
“主頻:1MHz,基於恒溫晶體振盪器,頻率穩定度±5ppm。”
“字長:16位定點運算,浮點運算用軟體模擬。”
“儲存:8kbit暫存儲存器晶片陣列,外接磁帶機和磁碟機做大規模資料儲存。”
“指令集:精簡指令集,共四十七條指令,由理論組設計。”
“整機功耗:約八百瓦。”
“整機重量:約四百公斤。”
他合上檔案夾,抬起頭。
“各位,這就是崑崙-0。它不是一台完整意義上的計算機,它是崑崙一機的縮比驗證機。它隻有四塊板子,一控三算。目標是跑通指令集,證明向量架構可行。”
首長站在最前麵,聽得非常認真。等陳高工說完,他開口問了一句:“和崑崙1機有什麼區彆?”
夏先生道:“首長,崑崙-0不是崑崙1機的縮小版。它是一個架構驗證平台。”
他頓了頓,像是在組織語言。
“打個比方,我們要造一座大樓。崑崙1機是那座大樓,而崑崙-0,是那個地基的縮比模型。它的任務,不是住人,是證明這個地基能撐得住。”
他伸出三根手指:“它要證明三件事。第一,證明單指令多資料的向量並行架構能跑通。一個指令,驅動多個運算單元同時乾活——這個想法,理論上可行,但冇人做過。崑崙-0要做的,就是把它做出來,跑起來。”
“第二,證明雙核心冗餘機製能工作。主核和輔核同時跑,結果比對,不一致就報錯、重跑。這個機製,在電路圖上畫得出來,但真到了機器上,能不能跑通?不知道。崑崙-0要回答這個問題。”
“第三,證明五微米工藝的晶片能拚成一個可用的係統。每一塊晶片,良率隻有百分之五六十。但把幾百塊晶片拚在一起,能不能穩定執行?這是係統整合的問題,也是最大的未知數。”
他放下手指,看著首長。
“換句話說,崑崙-0是為了證明,這條路,能走通。”
首長沉默了幾秒,然後點了點頭:“好,那就開始吧。”
夏先生引著首長、錢先生、王先生、孫老、劉星海教授來到崑崙-0機的操作麵板前站定。
操作麵板在機櫃正麵,大約兩尺見方,上麵密密麻麻排列著開關、旋鈕和指示燈。
最顯眼的是右下角那個巨大的紅色扳手開關,足有巴掌長,用黃銅鑄造,表麵磨得鋥亮。
陳高工站在操作檯旁邊:“各組,彙報狀態。”
“電力組報告,市電輸入正常,穩壓器輸出正常,±5V、±12V電源正常,紋波小於10毫伏。可以上電。”
“散熱組報告,軸流風扇運轉正常,液冷迴圈泵運轉正常,冷卻液流量正常,水箱水位正常。可以上電。”
“環境組報告,車間溫度18度,濕度45%,符合執行標準。可以上電。”
陳高工看向夏先生。
夏先生看向首長:“首長,一切就緒。”
首長點了點頭,走到操作麵板前。
他看了看那個紅色扳手開關,伸出手,握住。
全場安靜了。
兩百多個人,冇有一個人說話。連呼吸都放輕了,像是怕驚擾了什麼。車間裡安靜得能聽見自己的心跳,還有風扇低沉的嗡鳴。
呂辰站在人群後麵,屏住呼吸。
首長深吸一口氣,用力拉下了那個紅色扳手開關。
“哢嗒——”
清脆的一聲響,像子彈上膛。
機櫃正麵的指示燈,一排一排地亮了起來。綠色的,黃色的,紅色的——像多米諾骨牌,從第一排開始,一路往下亮,一直亮到最下麵一排。
“嗡——”
軸流風扇開始轉動,發出低沉的轟鳴聲,像一頭沉睡的野獸被喚醒。
“咕嚕嚕——”
液冷迴圈泵開始工作,冷卻液在銅管裡流動,發出細微的水聲。
各組彙報再次開始。
“電力組報告,上電正常,各路電壓穩定。”
“散熱組報告,風扇運轉正常,液冷迴圈正常,晶片溫度開始上升,當前25度。”
“控製板報告,KL-01自檢通過,主核正常,輔核正常,雙核心冗餘機製啟用。”
“運算板1報告,KL-PE01自檢通過,五十塊晶片全部正常。”
“運算板2報告,KL-PE02自檢通過,四十九塊晶片正常,一塊晶片溫度偏高,已降頻執行。”
“運算板3報告,KL-PE03自檢通過,五十塊晶片全部正常。”
“儲存板報告,四塊儲存板全部正常,暫存儲存器可讀寫。”
“介麵板報告,外設連線正常。程式設計機線上,製卡機線上,列印機線上,示波器線上。”
陳高工一個個聽著,臉上的表情一點點鬆弛下來。
他轉向首長:“首長,自檢完成,係統狀態正常。可以進行載入測試。”
首長點點頭,退後一步。
陳高工走到操作檯前,從旁邊的檔案架上取出一張二維卡。卡片大約明信片大小,硬紙板材質,上麵密密麻麻打滿了孔。孔位排列得整整齊齊,80×80的矩陣,每個孔代表一個位元。
“這是崑崙-0的引導程式。”陳高工舉起卡片,讓全場的人都能看見,“它負責載入微程式、初始化暫存器、自檢外設。一共六十四條指令,全部在這張卡片上。”
他把卡片放入讀卡機,按下“載入”按鈕。
讀卡機“哢嗒”一聲,把卡片吞了進去。探針矩陣開始工作,掃描電路指示燈開始閃爍。
操作檯上的熒光管陣列開始顯示字元。
“LOADING……”
“MICROCODELOADING……”
“INITIALIZINGREGISTERS……”
“SELFTEST……”
一行一行字元,在灰白色的熒光管上跳動。
示波器上,波形開始跳動。方方正正的脈衝,整整齊齊,像士兵的腳步。
“引導程式載入完成。”陳高工看了一眼示波器,又看了一眼操作檯上的指示燈。
他轉過身,從檔案架上又取出一張二維卡。
“這是第一個測試程式,斐波那契數列計算。用崑崙-0的向量指令集寫的,計算前20項斐波那契數。”
他把卡片插入讀卡機,按下“載入”按鈕。讀卡機再次“哢嗒”一聲。
然後,陳高工走到旁邊的磁帶機前,按下啟動鍵。磁帶開始轉動,發出“嗡嗡”的聲音。
“測試資料在磁帶上。”陳高工解釋,“斐波那契數列的初始值,F0=0,F1=1,存在磁帶裡。崑崙-0從磁帶讀資料,用向量指令平行計算,結果存在儲存板裡,最後輸出到熒光管陣列和列印機。”
他回到操作檯前,看著熒光管陣列。
“準備就緒。”他按下了“執行”鍵。
機櫃裡的指示燈開始瘋狂閃爍。綠色、黃色、紅色,交替亮滅,速度快得像呼吸。風扇的轟鳴聲變得更響了。示波器上的波形開始加速,從慢悠悠的跳動變成了密密麻麻的脈衝。
熒光管陣列上的字元開始滾動。
“VECTORLOAD……OK”
“VECTORADD……OK”
“VECTORSTORE……OK”
“ITERATION1……F1=1……OK”
“ITERATION2……F2=1……OK”
“ITERATION3……F3=2……OK”
字元一行一行往上滾動,每出現一行,就往上頂一行,最上麵的一行消失在熒光管的邊緣。
呂辰盯著那些字元,心跳越來越快。
“ITERATION10……F10=55……OK”
“ITERATION15……F15=610……OK”
“ITERATION20……F20=6765……OK”
最後一行出現在熒光管陣列上——
“TESTCOMPLETE。ALLVECTORSVERIFIED。ERRORS:0。”
全場安靜了。
兩百多個人,冇有一個人說話。連風扇的轟鳴聲都彷彿消失了,隻剩下那行綠色的字元,在熒光管上安靜地亮著。
車間裡安靜了很長時間。
也許是幾秒鐘,也許是幾個世紀。
然後,夏先生摘下眼鏡,用袖口擦了擦鏡片,重新戴上。他的聲音有點啞,但每個字都像刻在石頭上:
“它活了。”
三個字,很輕。但在安靜的車間裡,每個人都聽見了。
然後,掌聲響起來。
不是那種熱烈的、喧鬨的掌聲,是一種很沉的、很重的掌聲,像潮水一樣,從人群最前麵湧起來,一路往後推,最後填滿了整個車間。
呂辰看見,人群最前麵,一個頭髮花白的老工程師蹲下來,伸手摸了摸機櫃的鐵皮,像摸自己的孩子。他旁邊那個戴眼鏡的年輕人,嘴唇抖了幾下,冇說出話,隻是使勁拍著旁邊人的肩膀。
有人摘下眼鏡擦眼淚,有人站在那裡看著那個墨綠色的機櫃,嘴唇微微顫抖。
首長轉過身,和夏先生握手:“夏先生,辛苦了。”
夏先生搖搖頭,冇說話,隻是用力握了握首長的手。
掌聲持續了很久,才慢慢落下去。
陳高工站在操作檯前,等掌聲停了,又開口了。
“各位,斐波那契數列隻是最簡單的驗證。我再跑一個程式,讓大家看看崑崙-0的真正實力。”
他從檔案架上取出一張更大的二維卡,比剛纔那張大了一圈,孔位更密。
“這是矩陣乘法程式。兩個8×8的整數矩陣相乘。傳統單覈計算機,要算一百多個指令週期。崑崙-0用向量指令,三條指令就能算完一行。”
他把卡片插入讀卡機,按下“載入”按鈕。然後走到磁帶機前,換了一盤磁帶。
“資料在磁帶上。兩個8×8矩陣,數值隨機生成。”
他按下磁帶機的啟動鍵,又回到操作檯前,按下“執行”鍵。
指示燈再次瘋狂閃爍。熒光管陣列上的字元開始滾動:
“VECTORLOAD……OK”
“VECTORMULTIPLY……OK”
“VECTORACCUMULATE……OK”
“ROW1COMPLETE……OK”
“ROW2COMPLETE……OK”
“ROW8COMPLETE……OK”
“TESTCOMPLETE。MATRIXMULTIPLYVERIFIED。CYCLES:47。ERRORS:0。”
四十七個指令週期。如果是單覈計算機,至少需要一百五十個以上。三倍的效能提升,向量並行架構,真的能跑通。
陳高工又換了一個程式:快速傅裡葉變換。這是“電子耳朵”專案組提出來的需求,用於訊號處理。
又是四十七個指令週期。
又一行“ERRORS:0”。
熒光管陣列上的那行字,在灰白色的熒光裡安靜地亮著,像一個沉默的宣判。
車間裡再次安靜下來。
然後,掌聲又響起來了。這一次,比剛纔更響,也更長。
首長轉過身,看著全場的人。
他的目光從一張張臉上掃過,從那些花白的頭髮上掃過,從那些通紅的眼眶上掃過,從那些粗糙的、佈滿老繭的手上掃過。
“同誌們,你們做了一件了不起的事。”
他頓了頓,看著那個墨綠色的機櫃。
“兩年前,有人跟我說,中國人做不出自己的計算機。我說,試試看。兩年後,你們告訴我,試成了。”
他轉過身,看著劉星海,看著夏先生,看著錢先生,看著王先生,看著陳高工,看著那些站在人群裡的、叫不出名字的年輕人。
“這不是一台機器。這是一條路。一條我們自己走出來的路。”
他宣佈:“從今天起,中國人有自己的向量計算機。從今天起,在這個領域,我們不再是跟在彆人後麵跑,是自己在前麵走。”
他走回操作檯前,看著那行“ERRORS:0”。
“這條路,能走通。”他說,“接下來,就是走下去。”
車間裡又響起掌聲。
這一次,有人笑了,有人哭了,有人拍著旁邊人的肩膀說不出話。
那掌聲裡,有一種說不清的東西,像是一塊石頭終於落地,又像是一口氣終於吐出來。