/logicDesign-HW1

NCNU_CSIE-LogicDesign-Homework1 翻譯History-computer Relay computers of George Stibitz一文

暨南大學 資工系 1082邏輯設計與實驗(一) 作業一

George Stibitz的中繼計算機

貝爾實驗室在1925年成立,其作為貝爾系統的基礎研究設施。這設施的成立成為了物理、化學和其他現代科學的基礎研究以及令人興奮的研究的同義詞。在這個令人興奮的地方在接下來的數十年間完成了大量讓許多科學家取得諾貝爾獎的研究。許多在資訊科學領域的研究也在這裡完成,這裡僅提及第一個有二極管的邏輯架構(1942)、點晶體管(1947)、第一個完整的晶體管計算機(TRADIC,1955)、第一個數據機(1960)、第一個單晶片的32位元處理器(1980)、作業系統UNIX(1969)、程式語言C以及C++(1983)等等。

在1937年十一月的一個夜裡,一名貝爾研究室的數學家—George Stibitz離開工作地要回家,並拿走了貝爾實驗室裡倉庫的兩個電話繼電器、一個手電筒以及一條纜線以及電線和乾電池。他坐在家中廚房的桌子後方,開始組裝一個簡單的邏輯裝置,這個裝置由上述的部件以及一個由菸草罐所製程的開關。他很快的完成他的設備,這設備被視為第一個繼電器二進位加法器,而亮的燈泡代表著二進制的1,而沒有亮的燈泡代表著二進制的0,他的太太Dorothea以「廚房餐桌」將它命名為K-model。第二天Stibitz將K-model帶到實驗室展示給同事們看,他們推測這有可能發展成一個大體積的繼電器計算機。他的同事認為任何使用二進制的繼電計算機都需要上百個繼電器,因此與當時在實驗使裡使用的商業機械計算機相比,它既笨重又昂貴。

但George Sitbitz意識到,繼電計算機不僅可以執行單一個計算,也可以進行一系列的計算。另外中繼電路也可以指揮命令並且視需求而儲存暫時的結果。特別的是,它可以執行乘法以及除法所需的一系列行動。乘法和除法是貝爾研究是其他地方研究人員在長距離電路的濾波器和放大器設計中常用的兩個運算符號。實驗室在1930年代,一滿屋子的人類「計算機」使用商用計算機計算出複數的商和乘積。計算本身是簡單的:複數的乘法運算需要約6個簡單的運算,然而複數的除法需要大約12個運算,而每一個運算都需要一些暫時的儲存空間給中間產物的結果儲存。

Stibitz不知道的是—在德國柏林的Konrad Zuse在同一時間正在做著跟他幾乎一樣的事情。然而Stibitz知道Claude Shannon在麻省理工學院當研究生的期間也在研究邏輯符號以及二進制中繼電路的對應關係。Shannon以這個題目發布畢業論文(公佈於1938),然後去了貝爾實驗室,在那裡他和Stibitz了解對方的工作,但是Shannon並沒有積極參與Stibitz計算機的設計。顯然地,使用繼電器來實現二進位邏輯在1930年代末期的想法很普遍(在日本也有類似的發現)。

當Stibitz第一次展示他的K-model電腦給公司高層時,他們並沒有非常感到印象深刻。沒有煙火,沒有香檳,就像他後來記得的一樣。然而不到一年的時間,貝爾實驗室的高層們改變了他們對Stibitz發明的想法。做出這個決定的重要的原因是—貝爾實驗室需要找出解決複雜數學運算的方法的壓力逐漸增長。公司同意資助Stibitz所發明的大型實驗模型。Stibitz在1938年的二月完成了設計,並且在1939年的四月貝爾實驗室的交換工程師—Samuel Williams負責機器的架設,最終產品在十月準備完成並且在1940年1月8日第一次運行,一直使用到1949年。當貝爾實驗室在戰爭時期在建設其他的中繼計算機,它的名字從一開始的「複數計算機」改成了「模型一」,他花費了大約兩萬美金。

再依開始,複數計算機紙處理複數的乘法以及除法,但是後來經過修改,他也可以進行加法和減法。它使用了大約400500個二進制繼電器、68個面板和10個多位置、多極繼電器,也被稱為「交叉開關」,被用來暫存數字。機器使用十進位系統,並且在每個數字前面都有小數點。在內部,四個二進制繼電器對每個數字進行編碼,使用一個編碼n+3的二進制數字代表一個十位數字n。這簡化了數字進位以及減法的問題(在今日,「超三碼」進行十進位編碼仍然被稱為「Stibitz-code」)機器在暫存器中處理十位數數字,然而只能顯示八位數數字(範圍為??0.99999999)。這使用「前綴」表示法,先輸入運算符號再輸入運算數字。舉例來說:要乘兩個複數(2+3i)和(4+5i),操作人員需要輸入(需要參考上方的鍵盤圖):M+.2+i.3+.4-i.5=

字母M代表乘法(鍵盤上的字母D是代表除法)。請注意小數點的位置在四個數字的每個數字前面。機器將會計算(0.3+0.5i)x(0.4-0.2i),並輸出達旦0.07000000+i0.22000000。操作人員必須將結果調整成相應的規模(乘以100)。一個簡單的加法運算大約需要100毫秒,然而兩個複數的乘法需要大約45秒的時間。

計算單元有4個暫存器而且它分成輸入/輸出兩個單元,是一些特殊的終端機,機器本身被放在實驗室裡的一個偏僻的房間,很少人能看到它。操作員使用三台修改過的電報機(鍵盤以及打印設備)遠端使用它,電報機透過多線的匯流排拓撲連線到處理器,並放置在其他的地方,然而他無法同時作業。

Stibitz進一步發展了遠端、複數存取計算機的想法。在1940年9月11號,美國數學學會在新罕布什爾州漢諾威市的達特茅斯學院會面,那是在紐約的貝爾實驗室北方幾百英哩遠的地方,是複數計算機所在的地方。Stibitz安排了要透過電話線(28線的電報機電纜)連接到安裝在那裡的電傳設備。複數計算機運作的很好,而且毫無疑問的他驚豔了在場使用過他的人。這場會面有許多美國最傑出的數學家出席,以及後來領導過一些知名的電腦科學項目的個人(例如:John von Neumann, John Mauchly, Norbert Wiener 和Garrett Birkhoff)。達特茅斯學院示範並預言遠端計算的流行時代,但是這類型的遠端操作在後面的十幾年間沒有再次執行。

複數計算機沒辦法寫程式,繼電電路的集合永遠控制一連串的計算。這些繼電器與用於處理數字的繼電器是相同的類型,但是這機器沒有單獨的、明確的定義哪些區塊負責控制運算的順序,(貝爾實驗室的電腦在後來有達成),在複數計算機被建成後,建造者發現計算機的基礎運算被電路所過份控制,因為必須控制電路才可以作更複雜的運算,這才讓貝爾實驗室有了可寫程式性的觀念。(除了複數運算外,他們也嘗試要讓機器作多項式運算,複數的運算是個特別的項目,但是這對電腦來說太過限制了)

複數計算機的成功鼓舞了Stibitz提出更有雄新的設計,包含了能用打孔膠卷更改計算機的操作方式。在一開始,實驗室駁回他的提議時但在1941年美國加入第二次世界大戰時,貝爾實驗室改變了他們的優先權,改向軍事項目發展,這讓更多的運算需求多過於和平時期的研究。在戰爭時期,他們的研究成果幾乎都是在設計電腦的模型,但是他們還建造了五個軍事用途的數位中繼計算機,戰爭結束後有造了一台自己使用的數位中繼計算機,總共見了七台的數位計算機供計算複數。

第一個軍事用計算機是中繼插值機,這個插值機在1943年安裝在華盛頓特區,後來被稱為「模型二」。他由440個繼電器組成,儲存容量為7個數字。乘法運算的速度為4秒鐘(乘法是通過重複加法)。它主要解決防空襲的運算問題,需要透過紙帶提供數值給機器進行插值。就像複數計算機一樣,這是個特殊用途的機器。然而,他的運算排序並不是永久依靠連接的電線,而是靠著「公式帶」的輸入(五通道的紙帶)。不同的帶子可以讓人們採用不同的插值方法。「模型二」雖然不能作插值以外的事情,然而他本身可以解決許多科學以及工程上許多的問題。因此戰爭後,它被許多其他的政府部門所採用。

接下來的兩台是由Stibitz所設計的彈道計算機以及錯誤偵測機編號22(後來以模型三、四所聞名),他們是相同的機器,第一台在1944年安裝,位於德克薩斯州的布力斯堡,第二台在1945年初所安裝,在華盛頓特區(每台花費65000美金)他們都包含了1400個繼電器,並且可以儲存10個數字。乘法運算的速度約為1秒鐘(乘法使用查表法)。這兩台機器也使用紙帶提供資料以及公式的輸入。算式順序也是用紙帶循環提供。模型三號、四號跟模型二號一樣,都可以解決許多防空砲瞄準以及追蹤所需要的運算。但是他們是更複雜的機器,不僅可以進行插值運算,而且還有評估彈道的方程式,能夠推測目標飛機和砲彈的彈道路徑。附加的紙帶可以命令機器要使用哪些功能。因此,模型三號和四號是第一個貝爾實驗室具有一定程度可編寫程式的數字計算機。雖然並不是可完全通用的計算機,但是他們的儲存空間以及運算單元有了適當的能力:精確度到小數點第六位,每台機器都能儲存十個數字。

這個系列最大的計算機也是最晚的,是Stibitz所設計的「模型五號」,是貝爾實驗室所建造的兩台用於軍事的機器,鑑於1946 1947年。他是一個很大(重約十頓)而且昂貴(50萬美金)的機器。每一個機器都包含超過九千個繼電器而且可顯示科學記號。可以儲存30個數字,而且紙帶輸入棄可以同時輸入程式順序以及數字。乘法運算的速度為0.8秒,模型五號最令人驚訝的設計是他分成兩個運算單元,每個運算單元都有屬於自己的暫存器和輸入、輸出設備。小規模的問題可以同時在機器裡平行運作,可以省下時間,而較大的問題可以同時使用兩個處理器。 跟兩個處理器相關聯(使用現代術語)的是15個暫存器,總共機器裡有30個暫存器。主控制單元可以根據使用需求將命令丟給一個或者兩個的處理器。這個控制單元跟負責處理運算、儲存以及輸入輸出的單元分離,「他控制處理單元」,可以這麼說(Stibitz稱他為「超級分支」功能)因此從真正意義上來看,模型五號擁有所謂的「作業系統」—一個控制單元可以監督及管理通過計算機的作業流程。

除了可編程性,後來貝爾計算機也有可承受極端壓力的可靠性。繼電器,作為邏輯與記憶單元的基本元件,有著間歇性故障的趨勢。如果在兩個繼電器之間有灰塵堆積,電路就會無法運作,就算是繼電器其他區塊是正常的。經過幾次的循環,灰塵顆粒可能會自己鬆落,這時候機器才會恢復正常。因此整個計算可能會有偏差,而在機器檢查時間卻無法發現機器錯誤。

貝爾實驗是的工程師設計了新的計算機電路來自行檢測計算中的每個步驟是否正確。這電路並非只有設計在加法、減法、儲存數字等等,他們也被設計用來確認他們正確的完成動作,否則就會將機器停止。貝爾實驗室的工程師們也有過去設計電話電路的經驗為例子,這些電話電路必須在長期無人管理的極端環境運作。這些電路設計通常由半熟練的技術人員所維修。工程師都會在有電話線鬆脫或者客戶的電話壞掉的時候被通知,這是「電話服務」。然而電話服務的成本很高。貝爾實驗是的模型二號到模型四號使用的系統中,每個用作十進位數字編碼的並非四個而是七個的二進制繼電器。他們分為兩個組別,分別有2個和5個繼電器。十進位編碼如下所示:

貝爾實驗室稱這個系統為「二五進制記法」因為繼電器分別有兩個權重:1和5。實際上,這不是這些數字編碼的組合。而是一個七位元,混合著十進制的編碼。所有貝爾實驗室的繼電計算機都是以十進制進行運算。一個特殊的電路每次啟動兩個繼電器,而且只能是兩個。另外一個電路可以確認每個群組只有啟動一個繼電器且只能有一個,這避免了兩個分離的錯誤互相抵銷,雖然仍然有一些異常組合無法被檢測到。

補充單字

  • relay:中繼、接力、驛站

  • incorporated:合併

  • frontiers:邊疆、邊境

  • diodes:二極管

  • transistor;晶體管

  • modem:調製機、數據機

  • assemble:組裝

  • tobacco:菸草

  • interim:臨時、過渡時期

  • amplifier:擴音機、擴大器

  • champagne:香檳酒、香檳色的

  • foreshadowed:預言

  • interpolator:內插器

  • interpolated內插

  • aiming:瞄準

  • tracking:追蹤

  • antiaircraft:防空的

  • sophisticated:複雜的、尖端的

  • bi-quinary:二五進制記法