7月6日清晨,天剛矇矇亮,呂辰就從床上爬了起來。
婁曉娥還在睡,小呂曉晚上不老實,她半夜起來了兩次。
呂辰輕手輕腳穿好衣服,到院子裡洗了把冷水臉。
今天是個大日子。
崑崙工程的所有核心成員,將在計算機所召開第一次技術方案論證會。
各組要拿出自己的技術思路,擺在桌面上,接受所有人的質詢。
這是崑崙工程從構想走向圖紙的關鍵一步。
呂辰推著腳踏車出門的時候,何雨柱已經在廚房忙活了。
他探出頭來:“小辰,不吃早飯了?”
“不吃了,要提早趕去開會。”呂辰跨上車,“表哥,一會告訴曉娥,今天會開得晚,中午不回來。”
他蹬著車,穿過清晨的衚衕,往計算機所的方向騎去。
七點半,呂辰趕到計算機所。
門口的衛兵站得筆直,呂辰出示了證件,登記完畢,推車進去。
院子裡已經停了不少吉普車、腳踏車。
熟悉的面孔三三兩兩往裡走,包康建、秦世襄、陳光遠、宋顏、謝凱......
每個人都拎著厚厚的檔案袋,臉色鄭重。
呂辰停好車,跟著人流走進二樓大會議室。
此時,主席臺上放著一塊巨大的黑板,旁邊支著幾個木架,用來掛圖紙。
臺下是一排排長條桌,鋪著白布,每個座位前擺著一個搪瓷缸子。
呂辰在後排找了個位置坐下。
他今天不是主講,是來聽的。
但劉星海教授特意叮囑他:“這是難得的學習機會,必須來。”
八點整,會議室的門關上了。
主席臺上,劉星海教授站起來,掃視全場。
“同志們,今天這個會,是崑崙工程第一次技術方案論證會。”
他的聲音清晰有力:“從4月13號到現在,將近三個月。二十七個組,一百多家單位,每個人都拿出了自己的方案。今天,我們要把這些方案擺在一起,一個一個過,一條一條問,看它們能不能拼成一臺機器。”
他頓了頓:“崑崙工程是甚麼?是一臺向量計算機。是咱們國家第一次,用自己的晶片,用自己的架構,去造一臺能解決實際問題的機器。”
“這不是實驗室裡的玩具,是要裝進機櫃,插上電,跑起來的。是要給魏知遠教授的數字孿生用的,是要給氣象局預報天氣用的,是要給國防科委算彈道用的。”
“所以,今天問的問題,不能客氣。能問多深問多深,能問多狠問多狠。現在暴露的問題越多,將來機器跑起來之後出的問題就越少。”
他坐下,看向第一排的宋顏教授:“宋教授,你先來。”
宋顏站起來,走上主席臺。
他穿著洗得發白的藍色中山裝,袖口有些磨毛,但整個人收拾得乾乾淨淨。
手裡拿著一疊圖紙,厚厚一摞,用牛皮紙袋裝著。
他把圖紙一張一張掛在黑板上方的木架上,然後轉過身,面向全場。
“各位同志,我現在代表紅星所積體電路實驗室,向大家彙報,崑崙運算核心的設計方案。”
他拿起一根教鞭,指著第一張圖紙。
那是一張系統框圖,上面畫著八個方塊,用線條連線著。
中間一個方塊標著“KL-01”,周圍七個方塊標著“KL-PE1”到“KL-PE7”。
“這是崑崙運算核心的整體架構。一個控制晶片,加七個運算晶片。”
臺下安靜下來,所有人都盯著那張圖。
宋顏的教鞭指向中間那個方塊:“KL-01,控制晶片。它的核心功能有四塊:指令譯碼、微程式控制、時鐘分發、中斷處理。”
他指向周圍那七個方塊:“KL-PE1到PE7,運算晶片。每顆晶片整合八個獨立的運算單元。七顆晶片加起來,一共五十六個運算單元。”
他把教鞭放下,轉過身:“這是一個典型的SIMD架構,單指令多資料流。所有運算單元在同一時鐘節拍執行同一條指令,但處理各自的資料。”
臺下有人舉手,是數學所的陳教授。
“宋教授,我問一個問題。”陳教授站起來,“你這個七顆晶片、五十六個單元的設計,是基於甚麼考慮?為甚麼是七顆,不是六顆,不是八顆?”
宋顏點點頭:“陳教授問得好。這個數字,是反覆算出來的。”
他走到黑板前,拿起粉筆,寫下一行字:“魏知遠教授數字孿生需求×1024網格,每步運算量約10^7次。”
他轉過身:“我們算過,如果每顆晶片整合八個單元,七顆晶片就是五十六個單元同時算,可以在可接受的時間內完成一個時間步的迭代。八顆當然更快,但晶片面積會更大,良率會更低。六顆勉強夠,但餘量不足,將來演算法升級可能吃力。”
他把粉筆放下:“七顆,是目前技術條件下,效能和可行性的平衡點。”
陳教授點點頭,坐下。
宋顏繼續講。
他走到第二張圖紙前,那是一張更詳細的框圖,標著“KL-01內部結構”。
“控制晶片KL-01,相當於整個系統的大腦。按現在的設計,需要整合大約400到500個邏輯閘。”
他用教鞭指著圖紙上的幾個方塊。
“這是微程式控制器,存放崑崙的微指令序列。每條微指令同時驅動所有運算晶片,告訴它們這拍該幹甚麼。”
“這是指令暫存器與譯碼器。從外部來的指令,在這裡被解析,轉化成微程式的入口地址。”
“這是時鐘分發網路。主時鐘訊號進來,在這裡整形、放大,然後分發給七顆運算晶片。”
“這是狀態暫存器。記錄每個運算晶片當前是忙是閒,有沒有出錯。”
“這是中斷控制器。處理運算溢位、除零這些異常情況。”
他放下教鞭,看向臺下:“這個設計,參考了夏先生他們搞103機、104機的經驗,也參考了西軍電秦教授他們搞雷達訊號處理的經驗。微程式控制的好處是靈活,以後要加新指令,改微程式就行,不用改硬體。”
秦世襄舉手:“宋教授,微程式的容量有多大?能存多少條?”
“初步設計是256條。”宋顏說,“夠用。崑崙的指令集不會太複雜,向量運算就那麼幾種。”
秦世襄點點頭:“256條,400門,差不多。再大,晶片面積受不了。”
宋顏走到第三張圖紙前。
那是“KL-PE運算晶片”的內部結構圖。
圖紙上畫著八個相同的方塊,每個方塊裡面又有更小的方塊。
“這是運算晶片的內部設計。”他用教鞭指著其中一個方塊,“每顆晶片整合八個獨立的處理單元,我們叫PE,Processing Element。”
他看向第四張圖,這是其中一個方塊的放大版,指著裡面的結構。
“每個PE包含三個部分:暫存器檔案、算術邏輯單元、區域性資料快取。暫存器檔案用來暫存中間結果,算術邏輯單元負責算數運算和邏輯運算,區域性資料快取用來存放當前需要處理的資料。”
他放下教鞭,看向臺下:“每個PE的邏輯閘規模,大約80個邏輯閘。八顆PE加起來,加上晶片內部的控制邏輯、資料通路、時鐘緩衝,整顆KL-PE的總規模大約400個邏輯閘。”
臺下響起一陣低低的議論聲。
400門。
這個數字,在場的人都明白意味著甚麼。
陳光遠舉手了。
“宋教授,我問一個工藝問題。”他站起來,“400個邏輯閘,在5微米工藝下,能不能實現?”
宋顏看著他:“陳廠長,這個問題,應該問你。”
陳光遠點點頭,走到臺上。
他接過教鞭,指著那張圖紙。
“我簡單說幾句。”
“800個邏輯閘,按5微米工藝,每個門大概佔多大面積?按我們現在能做到的整合度,一個門大約需要0.1到平方毫米。400個門,就是40到60平方毫米。”
臺下安靜下來。
陳光遠在空中比劃了一下:“這麼大面積的晶片,良率會很低。按6305廠現在的工藝水平,100平方毫米的晶片,良率可能只有百分之十幾。也就是說,做100顆,能用的只有十幾顆。”
“但這不是不能做。”他話鋒一轉,“陶瓷封裝可以支援這麼大面積的晶片。功耗方面,如果設計合理,每顆晶片可以控制在兩瓦以內。七顆運算晶片加一顆控制晶片,總功耗十五瓦左右,風冷可以解決。”
他看向宋顏:“宋教授,我需要你保證一件事,晶片內部的功耗分佈要均勻。不能有的地方熱死,有的地方涼快。否則陶瓷封裝也救不了。”
宋顏點點頭:“這個我們設計的時候會考慮。每個PE的功耗差不多,佈局的時候均勻分佈。”
陳光遠把教鞭還給他,回到座位。
宋顏繼續講。
他走到第五張圖紙前,那是一張更細的圖,畫著晶片的引腳分配。
“晶片間的互聯,我們採用物理互聯。”他用教鞭指著圖紙上的引腳,“每顆晶片用雙列直插式封裝,陶瓷的,可靠性高,適合軍工級應用。”
他放下教鞭,念出一串數字:“引腳數,我們定在48個。間距2.5毫米。”
臺下有人記筆記。
宋顏繼續念:“這48個引腳的分配是:電源兩個,地線兩個,資料匯流排二十四個,地址匯流排八個,控制線八個,保留測試四個。”
夏先生舉手:“宋教授,二十四條資料匯流排,是單向還是雙向?”
“雙向。”宋顏說,“控制晶片和運算晶片之間要交換資料,必須雙向。”
“那衝突怎麼解決?”夏先生問,“同一時刻,兩邊同時往匯流排上發資料,不就燒了?”
宋顏點點頭:“夏先生問得好。這個問題,我們在設計匯流排控制器的時候會考慮。基本原則是,控制晶片掌握匯流排控制權。運算晶片要發資料,必須先申請,控制晶片同意之後才能發。”
夏先生點點頭,在本子上記了一筆。
陳教授又舉手了:“宋教授,我問一個邏輯層面的問題。你這八個晶片,用甚麼樣的邏輯互聯方式?是匯流排式,還是點對點?”
宋顏走到第六張圖紙前。
那是一張拓撲圖,畫著一箇中心方塊,周圍七個方塊,全部用線條連線到中心。
“匯流排式星型拓撲。”他用教鞭指著圖紙,“所有通訊,都透過控制晶片中轉。”
他把教鞭放在中心方塊上:“全域性指令匯流排,16位,從控制晶片廣播到所有運算晶片。這條匯流排上攜帶的,是當前要執行的指令操作碼。所有PE同時接收,同時執行。”
他把教鞭移到周圍的一個方塊上:“區域性資料匯流排,16位,雙向,用於控制晶片與運算晶片之間的資料交換。每次只能和一個運算晶片交換資料,透過片選線選擇。”
他指著另外幾條線:“片選線,7根,控制晶片用它們單獨選中某個運算晶片。全域性時鐘線,1根,所有晶片共用同一個時鐘源。”
他放下教鞭:“這套方案的好處是簡單。所有PE聽同一個指令,步調一致。資料交換雖然要分時進行,但對向量運算來說夠了。大部分時候,PE只跟自己的區域性快取打交道,不需要頻繁跟控制晶片換資料。”
秦世襄舉手:“宋教授,時鐘同步的問題,你打算怎麼解決?”
宋顏走到第七張圖紙前。
那是一張時鐘分發網路的示意圖。
圖上畫著一個晶振,然後一根線分叉成7根,每一根都畫得彎彎曲曲,長度一樣。
“秦教授問到了關鍵。”宋顏說,“向量運算的精髓,就是‘步伐一致’。所有PE必須在同一個時鐘節拍執行同一條指令。差幾納秒都不行。”
他用教鞭指著那個晶振:“時鐘源,我們準備用秦教授你們西軍電研製的石英晶體振盪器。溫漂控制在百萬分之一以內,穩定性沒問題。”
他指著那些彎彎曲曲的線:“時鐘分發,我們從控制晶片出發,透過等長的蛇形走線,分發給七顆運算晶片。所有走線長度一模一樣,確保傳輸延遲一致。”
他指著接收端:“在每個運算晶片內部,我們設計了時鐘緩衝與整形電路,消除訊號在傳輸過程中可能產生的畸變。”
他放下教鞭:“秦教授,這套方案,您認為可行嗎?”
秦世襄點點頭,沒說話。
包康建舉手了:“宋教授,我問一個資料互動的問題。資料從磁碟到晶片,再從晶片回磁碟,這個流程怎麼走?”
宋顏走到第八張圖紙前。
那是一張時序圖,畫著幾條橫線,上面標著各種時間刻度。
“包教授,這個問題,我們是這樣設計的。”
他用教鞭指著第一條橫線:“廣播指令。從控制晶片發起,透過指令匯流排同時廣播到所有PE。這個過程,一個時鐘週期內完成。”
他指著第二條橫線:“載入資料。從控制晶片發起,透過資料匯流排送到指定PE。這個過程需要地址譯碼,哪個PE,哪個暫存器,都要指定。所以慢一點,兩到四個時鐘週期。”
他指著第三條橫線:“讀取結果。從指定PE,透過資料匯流排送回控制晶片。同樣需要兩到四個時鐘週期。”
他把教鞭放下:“至於PE之間的直接通訊,我們這個版本不支援。向量運算的特點是‘資料並行’,每個PE處理自己那一塊資料,不需要跟鄰居交換。需要交換的時候,透過控制晶片中轉。”
包康建點點頭:“明白了。”
夏先生站起來,走到臺上。
他接過宋顏手裡的教鞭,面對全場。
“同志們,宋教授剛才講的這個方案,我聽了,也問了。現在我說幾句我的看法。”
他用教鞭指著那張系統框圖。
“八個晶片,一個控制,七個運算。五十六個運算單元。800的整合度。五微米工藝。雙列直插陶瓷封裝。匯流排式星型拓撲。等長蛇形走線時鐘分發。”
他一口氣唸完,然後轉過身。
“這個方案,在當前的技術條件下,是極具雄心的。但它不是空中樓閣。它建立在6305廠的工藝能力上,建立在西軍電的晶振技術上,建立在我們計算機所十幾年搞計算機的經驗上。”
他頓了頓:“如果這個方案能成功,這將是完全自主的、達到國際前沿水平的中國第一代向量處理系統。”
臺下響起一陣掌聲。