芯片戰爭-14:如果沒有存儲器,人類就沒有硅文明

​中國半導體產業的思考—隨筆之《芯片戰爭——亮劍!國運之戰》

芯片戰爭14—如果沒有存儲器,人類就沒有硅文明

(混沌之際,1932-1949年)

馮.諾依曼結構明確“存儲程序”概念,哈佛結構提出“程序和數據分別存儲”的技術要求,這為存儲器這一計算機工業時代最偉大的發明指明前進道路。從磁鼓存儲器到磁芯存儲器,再到半導體存儲器DRAM,人類社會的硅週期之文明時代就此拉開了歷史的畫卷。

第一章 混沌之際

第十二節:如果沒有存儲器,人類就沒有硅文明

在沒有存儲器的時代,人們修改程序的時候就是通過“插拔零件”進行的,這就使得程序修改工作變得極為複雜和繁瑣,進而極大程度的制約了現代電子計算機的向前發展。

當我們今天享受著各種各樣的軟件應用程序所帶來的不同體驗、各種便利,以及通過各種應用程序接觸著外部世界多姿多彩的信息時代之時,我們需要清醒的記得,如果沒有存儲器這一計算機工業的最偉大發明,那麼也就沒有了今天移動互聯網時代的一切。

這不是危言聳聽,我們再次回溯歷史,看看存儲器這一概念又是如何提出的,又將如何改變了人類社會的“硅文明”時代。

早期的科學家們對通用型計算機的追求,從圖靈機到馮.諾依曼,再到哈佛結構,存儲器應運而生。

隨筆在前文中談到,大眾情人—ENIAC大型計算機是全球第一臺數字計算機,並且是全球第一臺“電子多用途功能和能力”的數字式計算機。這裡的電子多用途功能和能力的計算機如何理解?最簡答的理解就是通用型計算機。

相比於更早期的ABC計算機的最大進步之處就在於ENIAC是一臺通用型計算機,因此,當它1946年7月正式交付給美國軍方時,雖然二戰已經結束,但是ENIAC仍可在其它方面發揮著巨大威力。雖然研製它的初衷是計算炮彈的彈道表,但是它的第一次實際應用,並不是計算彈道表,而是應用於研製氫彈的科學計算方面。

通用型計算機得概念最早源自於英國數學家查爾斯.巴貝奇(Charles Babbage)。1922年,巴貝奇花了十年時間完成了他的第一臺“差分機”的製造。但在研製第二代“差分機”和功能更為強大的“分析機”的過程中,巴貝奇耗盡了所有財富和精力,都未能成功製造出一臺可運行的樣機,最後鬱鬱而終。

儘管巴貝奇的“分析機”未能最終完成,但在他的設計中首次提出了通用計算機的概念和邏輯結構,因此巴貝奇一直被視為計算機的理念先驅。

巴貝奇關於通用計算機的思想在那時倍受嘲諷,唯一能真正理解他思想的恐怕就只有他的妻子Ada了。Ada是詩人拜倫的女兒,同時也是一位數學天才。Ada比巴貝奇小24歲,巴貝奇晚年時已講不出話,關於“分析機”的文字材料幾乎都由Ada替他完成。Ada與她父親拜倫一樣,死於36歲。後來,美國國防部研製的計算機語言ADA,就是為了紀念這位偉大的女性。

巴貝奇之後,計算機時代最傑出的天才—圖靈提出了“圖靈機

”,可以說,這才是現代通用型計算機的最原始的理論模型。

圖:圖靈機的模型

芯片戰爭-14:如果沒有存儲器,人類就沒有硅文明

本質上,圖靈機是圖靈構想出來的一臺虛擬“計算機”,邏輯結構上圖靈機有四個部分組成:

第一是紙帶,一個無限長的存儲帶,帶子由一個個連續的存儲格子組成,每個格子可以存儲一個數字或符號,紙帶被劃分為一個個小格子,每格格子上面有一個符號。符號數量是有限的,但是紙帶是無限長。

第二是讀寫頭,讀寫頭可以在存儲帶上左右移動,並可以讀取、修改存儲格上的數字或符號。

第三是內部狀態寄存器,該存儲器可以記錄圖靈機的當前狀態,並且有一種特殊狀態為停機狀態。

第四是控制器,它根據讀寫頭讀出的符號來確定讀寫頭下一步的動作,並改變狀態寄存器的值。也即是說控制器就是控制程序指令,指令可以根據當前狀態以及當前讀寫頭所指的格子上的符號來確定讀寫頭下一步的動作(左移還是右移),並改變狀態存儲器的值,令機器進入一個新的狀態或保持狀態不變。

通用圖靈機,其實是一種特殊的圖靈機,它可以模擬任意圖靈機的指令序列。現代電子計算機本質上就是一種通用圖靈機的模擬。隨筆在此之所以說是模擬,是因為現實中的計算機的存儲器的容量都是有限的,不會有“無限長的紙帶”。

圖靈機之後,隨著現代電子計算機研製工作的推進,馮.諾依曼體系結構和哈佛結構分別得到了提出,並反過來極大的推動了全球現代電子計算機的向前發展。

馮.諾依曼體系結構(von Neumann architecture),也稱普林斯頓結構,是一種將程序指令存儲器和數據存儲器合併在一起的電腦設計概念結構。馮.諾依曼體系結構描述的是一種實際上通用圖靈機的計算裝置,以及一種相對於平行計算的序列式結構參考模型(referential model)。

馮.諾依曼體系結構結構中明確了將儲存裝置(存儲器)與中央處理器(CPU)分開的設計理念,因此馮.諾依曼結構設計出的計算機又稱儲存程序型計算機,可以說,現代的通用計算機的研究工作又得以向前邁進了一大步。

圖:馮.諾依曼體系結構(on Neumann architecture)示意圖

芯片戰爭-14:如果沒有存儲器,人類就沒有硅文明

最早的計算機器僅有內涵固定用途的程式,現代的某些計算機依然維持這樣的設計方式,通常是為了簡化或教育之目的。例如一個計算器僅有固定的數學計算程式,它不能拿來當作文書處理軟件,更不能拿來玩遊戲。若想要改變此機器的程式,必須更改線路、更改結構甚至重新設計此機器。當然最早的計算機並沒有設計的那個可編程化。當時所謂的“重寫程式”很可能指的是紙筆設計程式步驟,接著制訂工程細節,再施工將機器的電路配線或結構改變。

而儲存程式型電腦的概念改變了這一切。藉由創造一組指令集結構,並將所謂的運算轉化成一串程式指令的執行細節,讓此機器更有彈性。藉著將指令當成一種特別型態的靜態資料,一臺儲存程式型電腦可輕易改變其程式,並在程控下改變其運算內容。可以說,馮·諾伊曼結構與儲存程式型電腦是互相通用的名詞。

儲存程式型概念也可讓程式執行時自我修改程式的運算內容。這一概念的設計動機之一就是可讓程式自行增加內容或改變程式指令的內存位置,因為早期的設計都要使用者手動修改。但隨著索引暫存器與間接位置存取變成硬件結構的必備機制後,這一功能就不如以往重要了。而程式自我修改這項特色也被現代程式設計所放棄,因為它會造成理解與除錯的難度,且現代中央處理器的管線與快取機制會讓此功能效率降低。

從整體而言,將指令當成資料的概念使得組合語言、編譯器與其他自動編程工具得以實現,可以用這些“自動編程的程式”,以人類較易理解的方式編寫程式。從局部來看,強調I/O的機器,例如Bitblt,想要修改畫面上的圖樣,以往是認為若沒有客製化硬件就辦不到。但之後顯示這些功能可以藉由“執行中編譯”技術而有效達到。

此結構當然有所缺陷,除了下列講述的馮·諾伊曼瓶頸之外,修改程式最主要的問題就是程序設計的問題,無論是有意還是無意的設計錯誤。在一個簡單的儲存程式型電腦上,一個設計不良的程式可能會傷害自己、其他程式甚或是操作系統,導致當機,這就對於程序員提出了更高的要求。

緩衝區溢位就是一個典型例子,而創造或更改其他程式的能力也導致了惡意軟件的出現。利用緩衝區溢位,一個惡意程式可以覆蓋呼叫堆棧(Call stack)並覆寫程式碼,並且修改其他程式檔案以造成連鎖破壞。內存保護機制及其他形式的存取控制可以保護意外或惡意的程式碼更動。

總而言之,馮.諾依曼結構的最大貢獻就是“存儲程序”這一概念的提出,緊隨其後的則是哈佛結構,可以說,哈佛結構是今天桌面互聯網和移動互利網時代的最主要的標準結構。

哈佛結構(Harvardarchitecture),是一種將程序指令儲存和數據儲存分開的存儲器結構。中央處理器首先到程序指令儲存器中讀取程序指令內容,解碼後得到數據地址,再到相應的數據儲存器中讀取數據,並進行下一步的操作(通常是執行)。程序指令儲存和數據儲存分開,數據和指令的儲存可以同時進行,可以使指令和數據有不同的數據寬度,比如曾經享譽全球的Microchip公司的PIC16系列芯片的程序指令是14位寬度,而數據是8位寬度。Microchip公司的PIC16系列芯片,隨筆後文會為小夥伴們講述之。

哈佛結構的微處理器通常具有較高的執行效率。其程序指令和數據指令分開組織和儲存的,執行時可以預先讀取下一條指令。目前使用哈佛結構的中央處理器和微控制器有很多,除了上面提到的Microchip公司的PIC系列芯片,還有早期摩托羅拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11等等芯片系列。

雖然,哈佛結構是一種將程式資料與普通資料分開儲存的設計概念,但是,它並未完全突破馮.諾伊曼架構。

圖:哈佛結構示意圖

芯片戰爭-14:如果沒有存儲器,人類就沒有硅文明

從巴貝奇的分析機,到圖靈機,到ENIAC大型數字計算機,到並行結構的旋風計算機,再到馮.諾依曼結構、哈佛結構,我們可以清晰的看到一條主線,那就是通用型計算機的逐步發展和演進的過程

透過通用型計算機技術演進,我們可以進一步深刻的揭開現代數字式電子計算機最為核心的一個偉大的設想“存儲程序”,在這一概念的指導之下,存儲器的研製,特別是讀取速度更快,存儲容量更大的存儲器的研製就成為了全球計算機工業的發展歷史進程大事件。

通過上文的敘述,我們可以清楚的看到,馮.諾依曼結構到哈佛結構的演進過程成為了全球計算機工業發展歷史進程中的一個關鍵節點,在此,隨筆為您進一步揭開馮.諾依曼結構曾經塵封的歷史往事,以及充分展現了現代電子計算機發展縮影的馬克計算機。

塵封的往事—“101頁報告”,馮.諾依曼結構提出的來由。

第二次世界大戰期間,馮.諾依曼參與了美國秘密研究原子彈的曼哈頓計劃。一直從事純理論研究的馮.諾依曼深深感覺到,即使只是為了得到定性的結果,單靠解析研究已經遠遠不夠,必須輔之以數值計算。而進行手工計算或使用臺式計算器所需化費的時間是令人難以容忍的,洛斯阿拉莫斯國家實驗室儘管已聘請大量的“Woman Computer”不分晝夜地進行計算,還是無法滿足需要。這種困境與戈德斯坦中尉在彈道實驗室所遇到的問題如出一轍。

巧合的是,馮.諾依曼與戈德斯坦這兩位本沒有什麼交集的人,竟在1944年夏天,在馬里蘭州的一個火車站有了一段美麗的“邂逅”。戈德斯坦戰前是密歇根大學的數學教授,他當然認識大名鼎鼎的馮.諾依曼。他主動上前與馮.諾依曼打招呼,尤如粉絲見到偶像一般,戈德斯坦興奮地向馮.諾依曼表達了滔滔不絕的敬仰之情。

真正的大師都是非常“nice”的,兩人就在站臺隨意的攀談了起來。戈德斯坦此時正在負責ENIAC建造項目,他趁著這難得的機會向眼前這位數學泰斗請教了一系列關於數字計算機的問題。馮.諾依曼是何許人物,漸漸地他從談話中敏感地覺察到戈德斯坦正在進行某個關於計算機的研究項目,於是他反過來連珠炮式地向戈德斯坦提出一連串問題。戈德斯坦後來回憶說,馮.諾依曼拳拳到肉的提問令他覺得比博士論文答辯時還要恐怖。

當得知馮.諾依曼是“自己人”後,戈德斯坦向他透露了正在製造中的ENIAC的詳細情況,並希望他能給予指導。也在為研製核彈過程中的巨量運算而感到頭痛不已馮.諾依曼欣然答應了戈德斯坦的請求,幾天之後,他來到了摩爾學院。

在摩爾學院,馮.諾依曼看到了正在全力趕製中的ENIAC。在靜靜也聽完了總工程師埃克特的大致介紹後,諾依曼立即詢問了ENIAC的邏輯架構。埃克特與戈德斯坦相視一笑。原來在諾依曼到來之前,埃克特就曾對戈德斯坦說過,他能從馮.諾依曼提出的第一個問題,判斷出他是否真如傳說般厲害。如果諾依曼首先問到的是ENIAC的邏輯架構,那麼他真的是個天才,如果他問的是其它問題,恐怕只是徒有虛名而已。

馮.諾依曼提出的第一個問題就戳中了ENIAC在邏輯架構上的“痛點”。由於沒有程序存儲功能,使得ENIAC在執行不同程序時變得相當麻煩。不過,埃克特自豪地告訴馮.諾依曼,他們已經著手準備開始另一個計算機項目EDVAC(Electronic Discrete variable Automatic Computer,離散變量自動電子計算機)的研製工作。

EDVAC同樣是美國陸軍軍械部彈道研究室與賓夕法尼亞大學合作的電子計算機項目,負責這一項目的,仍然莫契利與埃克特。與ENIAC相比,EDVAC將會採用二進制,並且增加程序存儲功能。聽罷埃克特的介紹,馮.諾依曼當即對EDVAC產生了濃厚的興趣,在接下來的幾個月時間裡,他一有空閒便思考EDVAC,更準確地說是思考現代計算機應該具有怎麼樣的邏輯結構。

1945年的春天,二戰結束前夕,馮.諾依曼起草了一份長達101頁的偉大報告——《關於EDVAC的報告草案》,這就是現代計算機發展史上非常著名的“101頁報告”。在報告中,馮.諾依曼闡述了“存儲程序”的概念和二進制運算原理,並提出計算機應該包括五大組件,即:

A、輸入設備:負責輸人數據和程序;

B、存儲器:負責存儲數據和程序;

C、運算器:負責數據處理;

D、控制器:負責程序執行;

E、輸出設備:負責輸出結果。

當我們回顧歷史,不得不感慨萬千,“101頁報告”影響深遠,意義非凡,諾依曼就此成為系統論述電子計算機邏輯結構的第一人。

不過客觀地說,報告中的很多觀點,馮.諾依曼都不是最早的提出者,例如斯蒂比茲和楚澤的電磁式計算機以及阿塔納索夫和貝利的ABC計算機,就已採用了二進制原理,而報告中的最大亮點—“存儲程序”的概念,不僅德國科學家楚澤早在1936年就提到過,而且莫契利、埃克特在研製ENIAC時也曾經提及過,並希望能在EDVAC上實現。

然而不知道什麼原因,戈德斯坦收到這篇報告拿去刊印的時候,卻只署了馮.諾依曼一個人的名字。這也成為莫契利後來與戈德斯坦和馮.諾依曼關係交惡的重要原因。儘管事後馮.諾依曼坦承這並非他一個人的思想,但歷史最終還是不容分說地將這一偉大的計算機結構稱為“馮.諾依曼結構”,把利用這種概念和原理設計的電子計算機系統統稱為“馮.諾依曼型”計算機。

圖:101頁的《關於EDVAC的報告草案》,由摩爾學院在1945年6月30日油印出版,署名只有馮.諾依曼一人

芯片戰爭-14:如果沒有存儲器,人類就沒有硅文明

從數字計算機發展之初,馮.諾依曼體系結構就佔據著主導地位。直到今天,我們絕大多計算機仍然屬於“馮.諾依曼型”計算機,頂多只是對其作了一些改進而已,並沒有從根本上突破馮.諾依曼體系結構,直到今天的第四次硅含量提升週期。

近年來,隨著計算機應用範圍的不斷擴大,對計算機運算速度的要求也越來越高,馮.諾依曼體系一些侷限性也開始逐漸顯現出來,因而開始發展出並行計算機結構、數據流計算機結構等“非馮.諾依曼體系結構”。這些新的體系結構,雖有其先進性,但在依舊強大的馮.諾依曼體系面前,目前還都只能被劃為“非主流”,並未有得到實際廣泛的應用。

需要說明的是,隨著最近人工智能AI為代表的第四次硅含量提升週期的興起,“非馮體系結構”逐漸成為了全球科學界和工業界研究的重點,並且在“非馮體系結構”中存儲器的功能和能力得到更進一步的加強和提高。

EDVAC是第一臺依照馮.諾依曼體系結構建造的計算機,1949年8月交付使用。EDVAC最終研製費用與ENIAC一樣,達到50萬美金。性能方面

EDVAC大大優於ENIAC,其中最大的改進當然就是採用了“存儲程序”和“二進制”。不過,交付使用後的EDVAC卻發現存在一系列的問題,因此直到1951年才最終投入正式運行。而之所以出了那麼多問題,拖了那麼長時間,其中一個重要的原因就是馮.諾依曼、莫契利、埃克特、戈德斯坦、伯克斯等人都先後離開了EDVAC項目組。

馮.諾依曼雖然是EDVAC項目組的顧問,但在完成了“101頁報告”後,他就回到洛斯阿拉莫斯國家實驗室,全身心投入到原子彈研製的最後衝刺階段。戰後,馮.諾依曼預感到美蘇兩個超級大國之間的對抗已不可避免,而要在這場對抗中佔得優勢,一是要繼續發展核武器,以取得絕對優勢的核威懾力量;而另一個關鍵是則是發展大型計算機。諾依曼決定回普林斯頓,促使美國高等研究院(IAS)開展電子計算機的研製工作。

圖:馮.諾依曼與IAS計算機,計算機下方一排圓筒狀的物體為威廉姆斯管存儲器

芯片戰爭-14:如果沒有存儲器,人類就沒有硅文明

高等研究院缺少實踐型的人才,為此馮.諾依曼向戈德斯坦、伯克斯和埃克特發出邀請,希望他們可以來高等研究院主持計算機的研製工作。戈德斯坦與伯克斯二話不說,立馬追隨馮.諾依曼而去。

但埃克特拒絕了,因為馮.諾依曼沒有邀請莫契利。此時的莫契利在摩爾學院已成為極不受待見的人物了,在別人眼裡,莫契利傲慢自大、不懂禮貌,喜歡指手劃腳卻又無真才實學。沒人喜歡和莫契利相處,除了埃克特。埃克特始終認為,莫契利對他有知遇之恩。如果不是莫契利,他一個連碩士學位都還沒拿到手的毛頭小子,是無論如何也不能有今天的成就的。因此,不管別人怎麼看待莫契利,他都會一直追隨著莫契利。

圖:EDVAC計算機,第一臺馮.諾依曼結構的計算機

芯片戰爭-14:如果沒有存儲器,人類就沒有硅文明

EDVAC計算機是由:運算器、控制器、存儲器、輸入裝置、輸出裝置五個基本部分組成,是第一臺馮.諾依曼結構的計算機。1949年8月交付使用,1951年正式開始運行,其後幾經硬件升級,一直正常運行到1961年。

我們再看看艾肯博士主導的馬克(Mark)計算機的研製,可以說,馬克計算機以及相應的系列產品上,完整的展現了現代計算機以及存儲器從無到有的發展歷程。或者說,馬克計算機就是這一時期現代計算機工業和存儲器行業的發展之縮影。

塵封往事—艾肯博士和馬克計算機,早期現代計算機工業和存儲器行業的發展之縮影。

在IBM公司雄厚資金的支持下,艾肯博士負責的Mark I計算機成功研製。隨後,在1946到1952年間,艾肯博士帶領著“小夥伴們”一口氣推出了Mark Ⅱ、Mark Ⅲ、Mark Ⅳ三款產品。

Mark Ⅱ計算機採用了高速電磁式繼電器,乘法運算速度比Mark I要快上8倍。

Mark Ⅲ計算機則開始採用了電子管技術,屬於半電子半機電式的計算機,而存儲器部分則使用了磁鼓存儲器。Mark Ⅲ是程序存儲計算機,不過卻不屬於馮.諾依曼體系結構,Mark Ⅲ的程序指令存儲和數據存儲是分開的,也即是採用了“哈佛結構”(Harvard architecture)。

圖:1950年1月,時代雜誌封面上的Mark III

芯片戰爭-14:如果沒有存儲器,人類就沒有硅文明

1950年1月的美國時代雜誌封面,漫畫化的Mark III是一個戴著海軍帽的獨眼軍官,兩隻機械臂正在操作著電傳打字機。下面的配圖文字為:Mark III Can man build a superman?

Mark Ⅳ計算機,1952年推出,它同樣是一臺“哈佛結構”的計算機,同是也是艾肯設計的第一臺電子計算機。Mark Ⅳ使用了中國人王安設計磁芯存儲器,成為最早使用磁芯存儲器的計算機。

圖:Mark Ⅳ計算機上使用的磁芯存儲器,中國人王安所發明

芯片戰爭-14:如果沒有存儲器,人類就沒有硅文明

在現代電子計算機發展歷史上,艾肯博士佔據著非常重要的一席之地。

圖:艾肯博士

芯片戰爭-14:如果沒有存儲器,人類就沒有硅文明

從1939到1952,從Mark I到Mark Ⅳ,艾肯由一個初出茅廬的大叔級博士畢業生變成了當時計算機領域最矚目的實力派明星。不過,艾肯對於計算機技術發展所作出的貢獻,並不僅僅在於此。在隨筆看來,艾肯對於推廣計算機技術、培養計算機人才方面所作的貢獻,要遠遠勝於馬克系列計算機的研製。

1946年,艾肯從海軍退役,在哈佛大學創立了計算機實驗室,並擔任實驗室的主任。在艾肯的領導下,哈佛計算機實驗室成為當時美國領先的計算機技術研究中心和人才培訓基地。此外,艾肯還在哈佛大學率先開設了“大型數學計算機”這一課程,隨後又引入了計算機研究生課程,使得哈佛大學成為了最早授予計算機碩士和博士學位的大學。

艾肯本人帶出了15名博士生,還有一批在研製Mark系列計算機時的助手,後來,這些人如同蒲公英種子一般分散各處,並且大都成為了日後全球計算機技術領域的“大宗師”。

馮.諾依曼結構以報告的形式明確提出了“存儲程序”的概念,而哈佛結構則更進一步的提出了程序指令和數據指令分別存儲的技術要求,可以說,這更進一步的為存儲器這一計算機工業時代最偉大的發明的提出指明瞭前進的道路。從磁鼓存儲器到磁芯存儲器,從磁芯存儲器到今天的半導體存儲器DRAM,人類社會的硅含量提升週期之文明時代就此拉開了精彩紛呈的歷史的畫卷。

感謝您一直以來、長期持續關注《中國半導體產業的思考——隨筆》和《芯片戰爭——亮劍!國運之戰》相關係列報告以及敬請您持續關注後續系列!

注1:本文部分圖表、數據等引用於互聯網、公司公告等;

注2:本文相關專利信息和說明等引用於互聯網以及國家相關專利機構等;

注3:本文相關公司信息、產品等引用於互聯網,外媒、公司公告等;

注4:本文相關行業數據、產業信息等來自國家統計局、工信部等。


分享到:


相關文章: