第一臺繼電器式計算機由康德拉.楚澤制造(1910-1995),這臺機器使用了二進制數,但早期版本中使用的是機械存儲器而非繼電器,使用老式35毫米電影膠片進行穿孔編程。
同一時期,哈佛大學研究生霍華德.艾肯 要尋找大量的重復計算的方法,正式他的這一需求促使哈佛與IBM合作,并最終在1943年創造出一臺自動連續可控計算機,也就是聞名于世的Harvard Mark I。這是一臺可以打印表格的數字計算機。Mard II 是最大的繼電式計算機,使用了13000個繼電器。哈佛大學計算機實驗室當時的主任是艾肯,也正式他講授了計算機科學的第一次課。
繼電器不是完美的,因為他們是機械性的,利用金屬片的彎曲和伸直狀態進行工作,而頻繁的工作可能導致其斷裂。1947年人們在MarkII計算機的繼電器中發現了一只飛蛾。格蕾絲.莫瑞.赫柏于1944加入艾肯的團隊,他將上面提到的那只飛蛾用帶子綁在計算機日志上,并在其邊上著名“第一個被發現有生命的bug”。
?
真空管是一種可以替代繼電器的元件,它由約翰.安布羅斯.弗萊明 和 李.德.福雷斯特 在進行無線電通信鏈接時研發出來的。到20世紀40年代,真空管已廣泛應用于放大電話信號,那時期,美國的幾乎美國家庭都有一臺帶有發光二極管可控收音機。他們能放大無線信號,并且把他們變成還原為人們能聽見的聲音。真空管同樣可以鏈接成與門、或門、與非門,以及與或門——這點很像繼電器。
真空管價格昂貴、耗電量大、以及產生的熱量太多、最大的問題是真空管最終會被燒壞。擁有真空管收音機的人們習慣于定期更換真空管。一臺計算機擁有數量巨大的真空管,按統計學來分析,每隔幾分鐘就會燒壞一個。
用真空管最大的好處在于真空管的狀態可以在百萬分之一秒內發生轉變,速度比繼電器快1000倍。不過當時,速度并不在主要考慮范圍內。
1945年,真空管已經完全取代了繼電器。雖然繼電器計算機被稱為電動機械計算機,但真空管是第一臺電子計算機的基礎。
在英國,巨像計算機用來破譯德國名為“Enigma”代碼生成器產生的代碼,艾倫.M.圖靈 為這個項目做出了巨大的貢獻,圖靈撰寫了兩篇非常有影響的論文,這使他如今成為計算機領域的鼎鼎大名的人物。第一篇論文發表于1937年,首次提出了“可計算性”這個概念,用來分析哪些事情計算機可以做到,哪些做不到。他為計算機構想了一個抽象模型,這就是現在為人所熟知的圖靈機。圖靈第二篇非常有名的論文是關于人工智能的,這篇論文中,他介紹了一種測試機器智能的方法,即現在為人熟知的圖靈測試法。
在摩爾電子工程學院,J.普利斯普.埃克特和約翰.莫克利設計了ENIAC(電子數字積分計算機),使用了18000個真空管并最終在1945年底完成。按全部噸位算(大約30噸),ENIAC是曾經(或許也是以后)制造出來的最大計算機。到1977年,人們可以在Radio Shack買到速度更快的計算機。埃克特和莫克利想為計算機申請專利,可是卻被競爭者約翰.V.安塔納索夫阻擾了,他更早一步設計了一臺電子計算機,但它運行得并不順暢。
ENIAC吸引了數學家約翰.馮.諾依曼的眼球,從1930年開始,出生在匈牙利的馮.諾依曼就定居在美國。作為一名令公眾矚目的任務,因僅憑自己的大腦就能進行復雜的數學計算而聞名。馮諾依曼當時是普林斯頓高級研究院的一名數學教授,研究范圍很廣,從量子力學到游戲應用,甚至到經濟理論。
約翰.馮.諾依曼協助設計的ENIAC的后續產品EDVAC。在1946年與亞瑟.W.博克斯和何曼.葛思庭共同執筆的題為“電子計算器件邏輯設計的初步分析與討論“的論文中,他描述了EDVAC比ENIAC更加先進的特點。EDVAC的設計者們感覺計算機內部應當使用二進制數,而ENIAC使用的是十進制數。同時他們認為計算機中應當擁有盡可能大容量的存儲器,這些存儲器應該用來存儲程序代碼和程序執行中產生的數據(這些在ENIAC中都不能實現,對于ENIAC來說,編程不過是扳動開關和插拔電線的事情)。這些指令在存儲器中是順序存放的,而且可以由程序計數器進行尋址,但允許條件跳轉。這就是著名的”存儲程序概念“。
這些設計上的決策是計算機歷史中非常重要的一個進化階段,現在我們稱之為”馮.諾依曼結構“。前一節介紹的就是經典的馮.諾依曼計算機,伴隨著馮.諾依曼結構,又出現馮.諾依曼瓶頸。在馮.諾依曼計算機中,為了執行指令通常需要花費大量的時間先將這些指令從存儲器中取出來,我們回憶一下,前一節中,最后設計的計算機需要花費3/4的時間用來取指令。
?
克勞德.香農是另外一個非常有影響力的思想家,他的1938年的碩士論文,確定了開關、繼電器以及布爾代數之間的關系。1948年為貝爾實驗室工作期間,他發表了一篇為”通信過程中的代數理論“的文章,這篇文章中,他不僅將”位“的概念介紹給世界,更開創了一個新的研究領域,即著名的”信息論“。信息論研究的是數字信息在有噪聲的情況下傳輸,如何彌補因噪聲產生的損失。1949年,他撰寫了第一篇關于如何編程可以讓計算機下棋的文章,1952年他設計了一個通過繼電器控制的機械鼠,它可以在一個迷宮中記住路徑。
諾博爾特.韋納從哈佛大學獲得數學博士學位時只有18歲,其撰寫的Cybernetics,or Control and Communication in the Animal and Machine(1948年)一書使他聞名于世。他使用新詞匯”控制論“(cybernetics:源于希臘語舵手)表示人類和動物的生物過程同計算機和機器人原理之間的關系。大眾文化中,人們普遍使用cyber作為前綴表示與計算機相關的一切,最著名的一個詞,數百萬臺計算機通過因特網相連被稱作”cyberspace“(網絡空間),這個次源于計算機科幻小說作家威廉.吉布森在1984年發表的小說Neuromancer中的“cyberpunk”一詞。
1948年,埃克特與莫奇利計算機公司(后來成為雷明頓蘭德公司一部分)開始開發第一臺商用計算機——通用自動計算機,或者成為UNIVAC。這臺計算機與1951年完成,此后就被送到了人口普查局。UNIVAC在網絡應用方面的首次亮相在哥倫比亞廣播公司,它被用來測試1952年的總統選舉結果。沃爾特.克朗凱特將UNIVAC稱作“electronic brain”(電腦)。同樣是在1952年,IBM發布了其第一個商用計算機系統,代號701.
自此開始了漫長的公司和政府計算機歷史。盡管這段歷史很有趣,但我們要追蹤另一段歷史——如何縮減計算機成本和體積以及讓其走入尋常百姓家,這開始于1947年一個鮮為人知的電子技術突破。
當時AT&T(美國電話電報公司)正式將科學與技術的研究同其他業務分割時,1925年1月1日成立了貝爾實驗室。最初目的是發展改良電話系統相關技術,幸運的是在這種非常模糊的目標下可以研究很多技術,對于電話系統而言,一個顯而易見的長期目標是通過電線不失真的傳播語音信號。
從1912年開始,貝爾系統致力于真空放大器的研究,為了能讓電話系統使用真空管,對其進行了相當數量的研究和設計方面的改進。盡管做了大量的工作,真空管仍然有許多必須改進的地方。真空管體積太大、耗能大,并且最終會燒毀,但是,它們在當時是唯一的選擇。
1947年12月16日,當貝爾實驗室的兩個物理學家 約翰·巴丁和沃爾特·布蘭坦制作出另一種放大器時,所有一切都發生了改變。這種新型的放大器用一塊鎘(一種半導體元素)平板和一條黃金薄片制成。一周之后,他們將這個東西演示給他們的老板威廉·肖克利。這就是第一個“晶體管”,它被一些人稱作20世紀最重要的發明之一。
晶體管并不是憑空產生的,早在8年前(1939年12月29日)肖克利在他的筆記本上寫道“今天我突然想到,使用半導體來制作放大器從原理上講比真空管更為可能”在晶體管誕生后的幾十年里,人們不斷完善它。1956年肖克利、巴丁和布蘭坦“因為他們在半導體上的研究以及晶體管效應的發現”獲得了當年的諾貝爾物理學獎。
導體因為它們可以有利于電流的通過而得名。銅、銀以及金都是很好的導體,元素周期表中這三種元素同屬一列并非巧合。
原子中的電子分布在原子核外,并圍繞原子核運動。這三種導體的共同特征是在原子核最外層都有一個單獨的電子,而這個電子可以很容易的與原子中的其他電子剝離,因此可以自由移動形成電流。與導體對應的是絕緣體——比如橡膠和塑料——幾乎不能導電。
鎘元素和硅元素(以及一些化合物)被稱為“半導體”,因為他們的導電系數可以通過多種方式操控而得名。半導體的原子核在最外層有4個電子,是外層所能擁有的最大電子數目的一半。純半導體中,原子之間形成穩定的化學鍵以及類似金剛石的結構。這種半導體不是良好的半導體。
但是半導體可以摻入一些雜質,即與某些雜質組合。一種類型的雜質稱作N型(N表示negative)半導體,他們為原子之間的結合提供額外的電子。另一種雜質被稱作P型半導體。
把一P型半導體夾在兩個N型半導體之間可以使之成為一個放大器。這就是著名的NPN晶體管,其三部分分別為集電極、基極以及發射極。
下面的NPN晶體管的原理示意圖
在基極施加微小的電壓就可以控制非常大的電壓從集電極到發射極。如果在基極沒有施加電壓,那么晶體管將不起作用。
晶體管通常封裝在直徑為四分之一英寸的小金屬罐中,并伸出三根金屬線,外形如下:
晶體管開創了固態電子器件的時代,即指晶體管不再需要真空而是使用固體制造,尤其是使用半導體以及當今最為常見的硅來制造。除了體積比真空管更小,晶體管需要的電量更小,產生的熱量更少,而且持久耐用。1954年,德州儀器公司,半導體革命中一個非常重要的公司,制作了第一批可以隨身攜帶的晶體管收音機。
可是,晶體管真正的商業應用卻始于助聽器,為了紀念亞歷山大·格雷厄姆·貝爾為聾人奉獻畢生精力,AT&T公司允許助聽器制造商無償使用晶體管技術。晶體管電視機誕生于1960年,到現在的電子管的應用幾乎已經消失了(一些高保真音響愛好者以及電子吉他彈奏者熱衷于真空管放大器產生的音質),1956年,肖克利離開了貝爾實驗室成立的肖克利半導體實驗室。他回到了自己出生的地方,加利福尼亞帕羅奧圖市,他的公司是第一個落戶于該地區的大公司。其他半導體和計算機公司立刻也在該地區建立基業,舊金山南部的這個地區現在被人們成為硅谷。
開發真空管的目的是為了放大電信號,但是他們同樣可以應用在邏輯門的開關上,作用與晶體管一樣。下面是非常類似于繼電器形式的由晶體管構造的與門。
繼電器、真空管以及晶體管最初都是為了開發放大器設計的,但是通過相似的方式可以組成邏輯門,而計算機則是由這些部件構成的。1956年誕生了第一臺晶體管計算機。
晶體管可以在更小的空間里安裝更多的邏輯門,但是無法將計算機結構變得更簡單。晶體管更加小而且不容易控制。
一對晶體管可以連接成門,而門常常可以連接成振蕩器、加法器、選擇器以及解碼器。振蕩器可以組成多位鎖存器或者RAM陣列。如果把晶體管預先連接成常見的構件,再用其來組裝計算機會更加容易。
這種設想由英國物理學家杰利佛在1952年5月一次演講中提出。
1958年7月,德州儀器公司的杰克·基爾比想到了一個可以在一塊硅片制造出多個晶體管、電阻和其他電子元件的方法,而且他并不知道杰里佛預言。6個月過后,也就是1959年1月,羅伯特·諾伊斯也想到了類似的方法。諾伊斯起初是為肖克利半導體實驗室工作,但在1957年,他與其他7位科學家離開了肖克利半導體實驗室創辦了仙童半導體公司。
在技術發展史中,同時產生一項發明是較常見的,這可能超出了人們的想象。盡管基爾比 比 諾伊斯早6個月發明了這種設備,而且德州儀器公司先于仙童公司申請專利,但卻是諾伊斯首先獲得了專利。因此產生了法律的糾紛,但過了10年后,問題才得到令雙方都滿意的解決。盡管基爾比和諾伊斯并沒有在一起共事,但他們倆被稱為集成電路,或者叫做IC的共同發明者。
?集成電路需要經過非常復雜的工藝流程才可以制造出來,包括將硅片分層,然后非常精確的摻入雜質以及蝕刻不同的區域形成微小組件。開發一種新的集成電路盡管很昂貴,但可以大量生產中獲得效益——產量越大,價格就越便宜。
實際上,硅片是薄而且易碎的,因此它必須被安全的封裝起來,這樣不僅可以起到保護作用,還可以為芯片內部的部件與其他芯片之間的連接提供某種便利。集成電路有幾種不同的封裝方式,但最為常見的是采用矩形塑料雙排直插式(DIP),提供14、16或者40個管腳。
上圖,芯片凹槽朝左,從左下角開始,環繞到右端,依次為1-16.管腳之間的距離正好是1/10英寸。
1965年,戈登·E·摩爾(當時在仙童工作,后來成為英特爾合伙創辦人)發現從1959年以后,技術以這樣一種方式在發展:同一塊芯片上可以集成的晶體管數目每年翻一倍。他預測這種趨勢將會持續。真實的發展速度比摩爾發現稍慢一些,因此摩爾定律被修正為:每18個月同一塊芯片上集成的晶體管數目就會翻一倍。這仍是一個令人吃驚的速度,它解釋了為什么剛剛過了幾年,家用的計算機好像已經過時了。
20世紀70年代中期,有兩個制作集成電路的組件的”家族“盛行:TTL和CMOS
TTL代表transistor-transistor logic(晶體管-晶體管邏輯)。20世紀70年代中期,數字電路設計師人手一本《TTL工程師設計數據手冊》,下面簡稱《TTL數據手冊》。這是一本德州儀器和其他幾個公司出售的TTL集成電路7400系列完整的參考書,這樣稱呼因為這個IC”家族“的每一名”成員“都是以數字74開頭。
7400系列中的每一個集成電路都是由特定方式連接的預留邏輯門組成。一些芯片提供簡單的預留的邏輯門,設計者可以利用它們來組成更大規模的組件;另外一些芯片則提供通用組件,例如:觸發器、加法器、選擇器以及解碼器。
7400系列中第一個集成電路標號即為7400,在《TTL數據手冊》中這樣描述它——”四個雙輸入正與非門“。這意味著這個特殊的集成電路包含四個雙輸入與非們。”正“與門則是指1對應為有電壓,而0對應沒有電壓。下面是一個14管腳的芯片,數據手冊中的一張小圖顯示了管腳對應的輸入與輸出。
上圖為芯片俯視圖,小凹槽在左邊。
14管腳Vcc,與符號V一樣,用來表示電壓(大寫字母V的雙下標代表電壓源。下標字幕C指晶體管的電壓輸入端,即集電極,collector)。GND代表接地。
拿TTL7400系列來說,Vcc值必須介于4.75V和5.25V之間。換句話講,電壓必須在5V±5%的范圍。電壓低于4.75V時,芯片將無法工作。高于5.25V,芯片將被燒壞。即便有個5V電池也不能用來對TTL進行供電,因為電池的電壓不可能剛好適合這些芯片。通常情況下,TTL需要從墻上接入電源。
7400芯片中每一個與非門有兩個輸入端和一個輸出端,且相互獨立工作。輸入端電壓0-0.8v區間為邏輯0,2~5v區間為邏輯1。0.8~2V范圍電壓應當避免。
TTL典型輸出是以0.2V表示邏輯“0”,以3.4V表示邏輯“1”。考慮到電壓不穩定,有時會有一些波動,集成電路的輸入和輸出端有時不用“0”和“1”表示,而是用“低”和“高”表示。此外,有時候低電壓可以表示邏輯“1”,而高電壓則可以表示邏輯“0”,這種配置稱為“負邏輯”。7400是正邏輯。
?TTL的典型輸出0.2V代表邏輯“0”,3.4V代表邏輯“1”,那么這個輸出是TTL可以隔離噪聲的原因。
影響一個集成電路性能最重要的因素可以認為是傳播時間,也就是輸入端發生變化引起輸出端發生相應變化所需要的時間。
通常以納秒來衡量芯片的傳播時間,縮寫為nsec,即ns。十億分之一秒被稱為納秒。7400芯片中與非門的傳播時間應該保證小于22ns。
納秒使計算機成為可能,計算機處理器遲鈍的做著簡單的事情——從存儲器取出一個字節放到寄存器,再將兩個字節相加,然后再將結果存放回存儲器,沒有納秒是很慢的。
繼續閱讀《TTL數據手冊》會發現書中很多熟悉的小條目。7402芯片有4個雙輸入或非門,7404芯片有6個反相器,7408芯片有4個雙輸入與門,7432芯片有4個雙輸入或門,以及7430芯片有一個8輸入與非門,如下圖:
Nc表示無連接(no connection)。
7474芯片是另一個較熟悉的芯片,它是一個“帶預置和清零的雙D型正邊沿觸發器”,如下圖:
《TTL數據手冊》中甚至還囊括了這個芯片中每個觸發器的邏輯圖:
邏輯表如下:
繼續閱讀《TTL數據手冊》會發現,7483芯片是一個4位二進制全加法器,74151是一個8-1的數據選擇器,74154芯片是一個4-16的解碼器,74161芯片是一個4位同步二進制計數器,以及74175芯片是一個帶清零的4輸入D型觸發器。從上述芯片中挑出兩種可以制作一個8位鎖存器。
將TTL反相器的輸出連接到輸入,就會獲得一個振蕩器,而且其震蕩頻率更容易計算。這種振蕩器使用石英晶體制造相當簡單,石英晶體放在帶有兩個引線的密封小扁罐中。這些石英晶體的震蕩頻率在一個特定的值,通常情況下是每秒至少振蕩一百萬個周期,稱1兆赫茲,縮寫為MHz。如果要使用TTL制造前面說的計算機,需要時鐘頻率為10MHz才可以使其運行良好,每條指令執行時間為400ns。
芯片家族中另一位明星(至今仍是)是CMOS,CMOS表示互補金屬氧化物半導體。相應的有一本20世紀70年代中期的《CMOS數據手冊》。書中涵蓋了CMOS家族中的4000系列的IC的信息。
TTL供電電壓要求在4.75~5.25V范圍內。而對于CMOS來說,范圍在3~18V內的電壓均可,非常靈活。此外,CMOS相比TTL需要更少的能量,這使得電池運行小型CMOS電路變得可行。CMOS的缺點是速度慢,比如,在供電電壓為5V的情況下,CMOS4008 4位全加器可以保證的傳播時間只有750ns,但仍不能與TTL4位加法器的24ns的傳播時間相媲美(今天TTL已經擁有了低功率版本而CMOS也有了告訴版本)。
在實際應用中,芯片的連接是在一個塑料“面包板”完成的,如下:
每一短行有5個孔,在塑料板背面這5個孔通過電線相連。把芯片插入到面包板中,芯片將橫跨在中間長槽兩側,芯片的管腳則分別插到槽兩側的孔里,這樣芯片的每一個管腳都會與其他四個孔里的管腳相連接,通過在孔之間連接電線可以實現芯片之間的連接。
使用一種叫“鋼絲包裝”的技術可以使芯片之間的連接更加牢固,芯片插入到帶有幾個長長的方柱的插槽中,如下:
每個柱體對應一個管腳,插口本身插入到事先穿孔的薄板中。在板子另一面,使用特殊的鋼絲包裝槍將每一個柱體周圍緊緊包上絕緣線。柱體的直角邊緣則從絕緣線中破出,與導線相連。
如果實際應用中使用的集成電路制造一個特定的電路,那可能會用到“印刷電路板”。很久以前,這是集成電路愛好者做的事情。這種電路板上布滿了洞,并且被一層薄銅片覆蓋。基本上,可以讓防酸物質覆蓋銅片上所有你想保護的地方,而使用酸蝕刻剩余的部分,接著就可以將集成電路的插口(或者是集成電路本身)直接焊接到電路板上的銅片上,但由于集成電路中存在很多相互連接,僅覆蓋一層銅片通常情況下無法完成電路,所以商業制造的印刷電路板有多層互連。
到20世紀70年代早期,使用集成電路在一塊電路板上制造一個完整的計算機處理器變得可能,實際上這距離將整個處理器放入一塊芯片中,只是一個時間問題。雖然德州儀器公司在1971年為一塊單芯片計算機提交了專利申請,但真正制造出一塊這種單片機芯片的榮譽卻屬于英特爾公司。1970年,英特爾發售了第一款產品,一個可以存儲1024位數據的芯片,在當時這是單一芯片中可以存儲的最大位數。
英特爾在為日本吉康公司生產的可編程計算器設計芯片過程中,決定采取一種不同的方法。正如英特爾工程師特德·霍夫說的:我想讓它成為一個具有通用功能的計算機,進而可以通過編程成為一個計算器,而不是使這個設備成為一個只有一些編程能力的計算器。 ? 這導致了Intel4004的產生,它是第一塊”計算機芯片“或者叫”微處理器“。1971年11月,4040芯片已經可以得到試用,它擁有2300個晶體管(摩爾定律)。
我們已經知道4004芯片包含的晶體管數目,下面是4004芯片另外三種重要的特征。自4004芯片開始,在比較微處理器性能時,通常采用三個衡量標準。
第一個標準:4004是一個4位微處理器,意味著處理器中數據通路寬度只有4位。每次做加、減運算時,它只能處理4位數字。對比看來,之前我們說的計算機數據通路是8位,因此被稱為8位處理器。我們即將看到8位處理器很快就超越了4位處理器。但技術并沒有停止。20世紀70年代末期,16位微處理器已經得到應用。回想之前講的8位處理器中進行兩個16位加法所必須的指令碼,就知道16位處理器帶來的優勢。到20世紀80年代中期,32位微處理器誕生了。
第二個標準:4004每秒最大的時鐘頻率為108000周期,即108KHz。始終頻率是指連接到微處理器并驅動它運行的振蕩器的最大頻率,超過此時鐘頻率,微處理器將不能正常工作。到1999年,家用計算機的微處理器已經達到了500MHz——比4004要快5000倍。
第三個標準:4004的可尋址存儲器只有640字節,現在來看這個數字小得有點荒唐,但這與當時可得的存儲芯片的容量是一致的。1999年英特爾生產的芯片可以尋址 64TB的空間。
上述三個數字指標并不能影響一臺計算機的計算能力。比如,4位處理器同樣可以實現32位數字加法,只不過是將其簡單拆分為4位的數來進行。某種意義上講,所有的數字計算機都是相同的,如果一臺處理器從硬件上無法做到另外一臺可以做到的事情,那么它可以通過軟件途徑做到,最終他們可以完成相同的事情,這是1937年圖靈在論文里面關于可計算性的一種定義。
然而,速度是處理器之間的根本不同點,同事速度也是我們使用計算機的一大原因。
最大時鐘頻率,也成為主頻,是影響處理器速度的決定性因素之一。始終頻率決定了執行一條指令所需要的時間,處理器的數據位寬也影響處理器的速度。盡管4位處理器可以完成32位數字的加法,但速度是不能與32位處理器想媲美的。然而,令人感到迷惑的是,處理器可尋址存儲器的最大空間對處理器速度也是有影響的,首先,可尋址存儲器看上去只反映了處理器的某些能力,尤其是在需要大容量存儲器的前提下進行數據處理能力,而與處理器速度無關。但其實,處理器可以利用某些存儲器地址去控制其他的介質來存取信息,這樣就繞開了存儲器容量的限制。可是這種處理方法會降低整個計算機的速度。
20世紀70年代中期,雖然4004有很多局限性,但畢竟只是個開始。1972年4月,英特爾發布了8008芯片——一個時鐘頻率為200KHz、可尋址空間為16KB的8位微處理器。1974年5月,英特爾公司和摩托羅拉公司同時發布8008微處理器的改進版,正是兩款芯片改變了整個世界。