彭民德:《電子計算60年》(7)DJS 21機的結構和用機環境

彭民德發表於2016-06-17

在成功仿製兩款蘇聯電子管機器後,國人立即著手第二代計算機的研製。就世界範圍說,通常認為第二代計算機從1957年開始,以IBM 7000為代表,其基本特徵是採用了電晶體電子器件。我國要晚一些。1958年中科院計算所開始研製電晶體計算機,隨後華北計算所於1962年,哈軍工於1963年,四機部下屬的北京有線電廠於1964年,陸續開始研製電晶體計算機。比較有影響的有中科院計算所的109乙機,哈軍工的441B,北京有線電廠的108乙(參見郭平欣:《計算機發展與展望》P17,光明日報出版社,1987年1月)。國防科大的441B機,為首研製的是學部委員慈雲桂先生。航天部的108乙機,後來叫DJS-6,每秒5萬次,是單地址格式指令,指令數61條,記憶體32K單元,字長48位。1965年起,DJS 21機總共生產了130臺,是最早進行批量生產的電晶體計算機,因此可以當作我國第二代計算機的代表。 108乙機1967年通過鑑定並投產,總生產臺數達156臺(參見同上),使用的範圍更為擴大了。

當時世界處於冷戰時期,我們無法接觸西方先進的機器,西方已經是第三代機了,1972年的IBM 370已經是三代半機器了。中蘇在1960年開始反目,蘇聯的援華專家撤走,我們再也沒有機會引進蘇聯後續的計算機。因此,上面提到的幾款計算機,在世界上雖然技術上並不算先進,但對於我國建設,特別是國防建設,無比地珍貴。DJS 21機有明顯的自力更生烙印,當改革開放後引進西方的新型機器時,無論硬體軟體都不相容,不但硬體無法繼續使用,在其上寫的程式也不能再用。據查,DJS 21機留下的公開資料很少,在此用兩小節的篇幅,具體地記錄一下其結構和用機環境,也許是必要的。

DJS 21機,簡稱121機。D、J、S分別是漢語拼音電子、電晶體、數字三個詞的字頭。這款電子計算機當時被叫做中小型電晶體通用電子數字計算機,由貴州凱里南豐機械廠生產。據老專家郭平欣的書記載,該機由北京有線電廠研製,1965年12月通過鑑定後投產。稍後我們研究所也有了用於空空導彈設計計算的DJS 21。該機採用當時國際上流行的基本電路,有了第二代機標誌性特徵的中斷等功能,“是我國最早能進行批量生產的第二代計算機”,“效能較104機大為提高,而價格則有一個數量級下降”(郭平欣:《中國計算機工業概覽》P159 電子工業出版社 1985.5)。

121機的體積像第一代機,依然是個龐然大物。主機就有好幾個立式機櫃。光電輸入機、紙帶印表機體積都很大。磁鼓外形確實像一面鼓,鼓圈表面的一條條平行的磁軌上記錄著資料和程式,需要連續不停地轉動,以便把電磁式記錄的資料和程式轉送到讀寫頭附近以支援讀寫。控制檯體積像時下的一張大書桌,也不秀氣。機櫃裡和地板下的導線束,讓人眼花繚亂,佔用許多空間。機器要多人服侍才能運作,人的活動空間也不能少。機器隔壁還要設專門的穿孔機房,程式設計師和工程師們溝通準備,等候緩衝用房等等。因此還要為這個龐然大物專門建大樓,設警衛,那是所裡大事。我直接參與了籌建計算機和自動控制大樓的建設,做調研,協調各方需求,派技術骨幹到貴州凱里考察機器,學習機器的安裝、使用與維護。對機房建設做整體規劃,畫設計圖紙,跟施工單位溝通,擬定機房規章制度等等,前後延續好幾年時間。121機的佈局可用圖表示。

enter image description here

記憶體儲器採用磁芯式儲存。衡量記憶體容量當時沒有“多少K”的叫法,也沒有位元組的概念,以單元和單元長度表示記憶體容量。該機記憶體8192(可擴充至16384)個單元,每個單元長42位。指令和資料長度都是21位,每個單元可以存放兩條指令或者兩個數。單元內兩條指令從低地址到高地址分別叫做左指令和右指令,程式執行時可以依序執行。

當時的運算器和控制器雖然放在一個叫運控櫃的機櫃裡,但概念上是分離的,沒有CPU的概念。運、控器是計算機的大腦,平均運算速度為每秒3萬條指令。採用單地址指令系統,指令共59條。

運算器的功能是實現全機的各種算術運算和邏輯運算。運算器包括階碼運算器和數碼運算器兩部分。各由3個暫存器和全加器組成。第Ⅰ暫存器是結果暫存器,第Ⅱ暫存器是乘商暫存器,第Ⅲ暫存器兼有指令暫存器和變址暫存器的功能。

控制器由脈衝分配器、指令計數器、譯碼器、中央控制器、中斷控制器組成。其功能是根據各種不同的操作要求,通過控制器傳送一系列相應的控制訊號,控制全機自動工作。

有磁鼓機和磁帶機作為外儲存器。配G-3磁鼓兩臺,稱為0鼓和1鼓。每臺容量為32×512個字。磁帶採用頻寬為25.4mm的寬磁帶機兩臺。每臺磁帶分成若干組,每組2048個單元。

配有光電輸入機與電傳打字機輸入裝置。光電輸入機採用RG-2型5單位光電輸入機兩臺,其輸入速度為每秒1000個符號。光電輸入機用於將穿孔紙帶上的程式和資料送至內、外存。電傳打字機採用國產55型5單位電傳打字機。輸入速度最快為每秒7個字元,用於聯機除錯時輸入控制訊號。

輸出裝置包括窄行快速印表機、55型電傳打字機和寬行輸出機各一臺。窄行印表機每行15個字元,列印速度每秒15行。寬行輸出機每行列印80個字元,每秒可印10行。

跟第一代計算機相比,電子器件由以往的電子管改為電晶體,速度有了明顯提高。資料提高到21位二進位制位表示,精度提高了。體積有所縮小,但這方面並不明顯,它依然是個龐然大物。

上機操作的過程是,首先程式設計師另用穿孔機把自己的程式和資料穿在紙帶上,當時計算機的操作說明書要用好幾頁交待怎麼穿孔。這已是一件很麻煩的事情,也有專設的穿孔員擔任這一工作。

121機所配的鍵盤有別於後來見到的西式鍵盤。它只能接受數字0到10(有意思的是,不是0到9,鍵盤上有“10”鍵,跟大寫的H同位,如圖所示)和數的加減乘除四則運算子號以及圓括號、方括號、小數點等,用5個2進位制數位就可以區分32種不同的值,採用“號碼”(數字)和“字母”換擋鍵,可以同時支援數字和26個大寫的英文字母。5單位穿孔機5Z-3型有如圖所示的鍵盤,對應每個符號的編碼如表所示。(資料來源,原三機部612研究所編寫和翻印的《DJS-21數位電子計算機使用說明》)

enter image description here

控制檯操作相當複雜,它不但要起到今天的鍵盤加顯示器功能,還要直接控制記憶體和外設。沒有顯示器,靠一排排氖燈顯示主機對應部分和各外設的工作狀態,沒有今天的鍵盤,操作員只能經由控制檯的板鍵開關對程式進行除錯和執行控制。

enter image description here

在控制檯上操作的過程是,當前的用機人員,為程式和資料分配記憶體。指揮外部控制器用光電輸入機,把紙帶上的程式碼和資料讀到記憶體。從控制檯指定程式的記憶體首地址,啟動程式執行。指揮控制器控制運算器,根據程式碼內發出從哪裡取數和做什麼運算的命令。運算器接到命令後進行指定的運算操作。控制器再發出把運算結果送到某個單元或通過輸出部分列印的命令。控制器和運算器,按照儲存的程式連續工作,直至列印完運算結果,停機。程式設計師取下輸出結果,清理現場,離開。機房管理員再通知下一個技術員用機。

這種工作方式的序列性和資源獨佔性特點是顯然的。而對於程式設計師來說,沒有軟體,在計算機面前的孤立無助,是最傷腦筋的。機房管理員、算題的技術人員都吃夠了苦頭。

enter image description here

在計算機面前,你什麼都得事必親躬:規劃記憶體;親自裝紙帶;親自啟動紙帶機把程式讀到記憶體指定的地方;啟動計算;管理輸出;隨時注視著控制檯氖燈觀察機器的狀態。由於當時沒有程式的編輯工具和除錯工具,程式的許多問題都是在機器上計算時才暴露出來。暴露出來的問題又無法立即聯機修改,一般只能下機後分析,再修改源程式和穿孔紙帶,再申報機時,再計算。

下機後的分析也不輕鬆。雖然列印到紙帶上的數,是用十進位制表示的數,但是紙帶上除了符號0到9,什麼都沒有,依然是天書一卷。那些資料誰也看不懂,不知道其中的每個數都代表什麼,只有程式設計的工程人員自己慢慢地去看懂。比如,一個空對空導彈設計計算,處理的是導彈追蹤飛機目標的運動過程,解算的是一組符合質點運動的理論力學、飛行動力學和自動控制理論的微分方程組。在初始發射時的位置、速度、距離、重量等邊界條件下,隨時求得導彈的瞬時位置、距離等一批引數。程式中安排好記錄這些引數相對次序,在計算的同時按某個時間間隔∆t,從紙帶上把它們的瞬時值列印出來。面對紙帶上的資料,只有從事導彈設計並實際程式設計的工程技術人員自己才知道,哪個是位置、速度、距離、重量等。

列印的資料是否正確呢?工程人員要將15或者80行紙帶上的資料在座標紙上描圖,比如描出飛行的彈道圖。根據圖形做分析,可能還要與其他方面的技術人員討論。要是結果與實驗資料不一致,或者與理論上預期目標不一致,就要找出問題。而問題可能出在前面的每一個環節上,包括數學模型、程式設計、穿孔、除錯的各個步驟。計算機又是鐵面無私的,錯一個數字或者符號也可能會使你差之毫釐而失之千里。一個程式往往長時間處在“試算除錯”階段,算題週期很長。

當時的計算機依然只有硬體,沒有軟體,實驗室所提供的只是一臺裸機,這一點跟一代機沒有區別。實驗室專業人員的職責就是保證機器五大部件都能正常工作。在技術人員中開始用機面很小,僅僅是總體研究室理論計算組、空氣動力學設計組和導彈制導研究室的部分人員,其中有些還是像我這樣學數學和計算數學比較專門的人,因為用機器語言程式設計序實在是件困難的事。

當然,處在深閨中的計算無論多麼乏味困苦,穿著白大褂陪伴在計算機旁工作,也自有它的樂趣。比如,計算機用磁鼓作為輔助儲存,而磁鼓的磁軌和讀寫頭是裸露的,故對環境溫度、溼度、空氣質量要求極高,稍有不慎磁鼓上的資料就會失去可靠性,甚至機械部分被灰塵卡死,機器就可能癱瘓。實驗室工作人員和來上機的技術人員,在吃夠了機器苦頭的同時,也與機器同享恆溫恆溼之福。工作人員穿工作服,清掃衛生,上機者換拖鞋等都有很嚴格的制度。所裡還有過一個故事。某次所領導陪同北京來的部長到實驗室視察,雖然所裡陪同的領導層人員都遵章換了拖鞋,為了不讓部長太麻煩,所裡領導請部長不脫鞋進去算了。可實驗室負責人老鄭不執行所領導此時的口頭指示,他唯恐部長的皮鞋帶進灰塵影響機器工作,不怕得罪領導,當場拿拖鞋請部長換,部長只好換了。這在今天看來,這位負責人似乎小題大做了。現在不但微機不要求如此苛刻的環境條件,連高階機也不嬌氣了。

(與本文相關的更多內容,可參看 彭民德《電子計算60年》第3章 二代計算硬體獨唱 電子工業出版社)

相關文章