馮.諾依曼體系結構對計算機發展的限制
劉愛貴
( 高能物理研究所計算中心 北京 2023年)
摘要: 本文簡單介紹了傳統馮 . 諾依曼體系結構的原理和特點,從計算模型和儲存模型兩個方面分析了這種體系結構的侷限性,並對目前非馮體系結構的發展情況作了淺出的分析和展望。
從計算機誕生那天起,馮 . 諾依曼體系結構佔據著主導地位,幾十年來計算機體系結構理論並沒有新理論出現。隨著計算機應用範圍的迅速擴大,使用計算機解決的問題規模也越來越大,因此對計算機運算速度的要求也越來越高。而改進計算機的體系結構是提高計算機速度的重要途徑,從而促進了計算機體系結構的發展,出現了諸如資料流結構、並行邏輯結構、歸約結構等新的非馮諾依曼體系結構。
馮 . 諾依曼體系結構是現代計算機的基礎,現在大多計算機仍是馮 . 諾依曼計算機的組織結構,只是作了一些改進而已,並沒有從根本上突破馮體系結構的束縛。馮 . 諾依曼也因此被人們稱為「計算機之父」。然而由於傳統馮 . 諾依曼計算機體系結構天然所具有的侷限性,從根本上限制了計算機的發展。
馮 . 諾依曼型計算機以儲存程式原理為基礎。儲存程式原理的基本思想是指令驅動(或控制驅動),指令和資料混合儲存。程式執行時, cpu 就能按照程式指定的邏輯順序逐條把指令和資料從儲存器中取出並加以執行,自動地完成由程式所描述的處理工作。馮 . 諾依曼型計算機主要由控制器、運算器、儲存器、輸入和輸出裝置五大部件組成,以運算器為中心,系統內各部件間的資訊傳送都要經過運算器中的暫存器。馮 . 諾依曼體系結構的基本特徵有:
(1) 採用儲存程式方式,指令和資料不加區別混合儲存在同乙個儲存器中,指令和資料都可以送到運算器進行運算,即由指令組成的程式是可以修改的。
(2) 儲存器是按位址訪問的線性編址的一維結構,每個單元的位數是固定的。
(3) 指令由操作碼和位址組成。操作碼指明本指令的操作型別 , 位址碼指明運算元和位址。運算元本身無資料型別的標誌,它的資料型別由操作碼確定。
(4) 通過執行指令直接發出控制訊號控制計算機的操作。指令在儲存器中按其執行順序存放,由指令計數器指明要執行的指令所在的單元位址。指令計數器只有乙個,一般按順序遞增,但執行順序可按運算結果或當時的外界條件而改變。
(5) 以運算器為中心, i/o 裝置與儲存器間的資料傳送都要經過運算器。
(6) 資料以二進位制表示。
從本質上講,馮 . 諾依曼體系結構的本徵屬性就是二個一維性,即一維的計算模型和一維的儲存模型,簡單地說「儲存程式」是不確切的。而正是這二個一維性,成就了現代計算機的輝煌,也限制了計算機的進一步的發展,真可謂「成也馮,敗也馮」。
馮·諾依曼計算機的軟體和硬體完全分離,適用於作數值計算。這種計算機的機器語言同高階語言在語義上存在很大的間隔,稱之為馮 . 依曼語義間隔。造成這個差距的其中乙個重要原因就是儲存器組織方式不同,馮·諾依曼機儲存器是一維的線性排列的單元,按順序排列的位址訪問。而高階語言表示的儲存器則是一組有名字的變數,按名字呼叫變數,不考慮訪問方法,而且資料結構經常是多維的(如陣列,**)。另外,在大多數高階語言中,資料和指令截然不同,並無指令可以像資料一樣進行運算操作的概念。同時,高階語言中的每種操作對於任何資料型別都是通用的,資料型別屬於資料本身,而馮 . 諾依曼機的資料本身沒有屬性標誌,同一種操作要用不同的操作碼來對資料加以區分。這些因素導致了語義的差距。如何消除如此大的語義間隔,這成了計算機面臨的一大難題和發展障礙。
高階語言程式設計的過程,就是乙個「分析問題——建立數學模型——選擇資料結構——設計演算法——翻譯成計算機語言」的過程。最後通過編譯器編譯成機器識別的可執行**由計算機執行。在馮諾依曼體系結構中,程式就是資料和**的集合,資料是程式操縱的物件,其組織方式就是資料結構;**則是程式的控制流程,負責對資料作某種變換,建立輸入和輸出資料之間的某種一一對映關係,這種對映變換的流就是所謂的演算法步驟。由於機器語言與高階語言存在嚴重的語義間隔,不管你在高階語言中採用何種資料結構,多維陣列、二叉樹還是圖,最終在儲存器上都將轉換成一維的線性儲存模型進行儲存。因而將高階語言翻譯成機器語言就需要設計複雜的演算法來進行對映,將高階語言的指令和資料結構變換成能被計算機識別的指令和資料。這些語義差距間的變換工作絕大部分要由編譯程式來承擔,從而給編譯程式增加了很多的工作量。
馮 . 諾依曼計算機一維儲存模型要求 cpu 訪問 memory 時嚴格按照位址順序,從頭至尾進行查詢訪問。而指令和資料是離散地儲存在儲存器上的,造成記憶體訪問 50% 以上的微操作都是空操作,只作位址變化,而沒有進行實際的訪問操作。並且每次只能對乙個儲存單元進行操作,指令需要多個資料就必須事先從 memory 中乙個乙個儲存單元取出,而無法一次性取出,等所需資料全部就緒後指令才能得以執行。指令寫儲存器操作也是如此,只能乙個乙個儲存單元寫回,不可以一次完成多個儲存單元的寫操作。這些都浪費了大量的處理器時間。雖然高階語言支援各種資料結構,但是這是提供給程式設計師使用的,機器並不識別,只有通過編譯程式進行複雜的語義轉換,本質上沒有改變這種儲存模型。
馮 . 諾依曼體系結構的最大特點是「共享資料,序列執行」的一維計算模型。按照這種結構,指令和資料存放在共享的儲存器中內, cpu 從中取出指令和資料進行相應的運算。由於儲存器訪問速度遠低於 cpu 運算速度,而且每一時刻只能訪問儲存器的乙個單元,從而使計算機的運算速度受到很大限制, cpu 與共享儲存器間的資料交換造成了影響高速計算和系統效能的「瓶頸」。在馮 . 諾依曼機結構中,指令的執行次序受計數器的控制。 cpu 根據計數器指出的儲存器位址訪問相應的單元,指令計數器值增 1 指向下一條指令,因而指令是序列執行的。這種計算方式稱為「控制驅動」,就是說由指令控制器控制指令執行的次序和時機,當它指向某條指令時才驅動該指令的執行。在實際程式中雖然可能存在大量的可以並行執行的指令,但是馮 . 諾依曼體系結構卻難以支援這些指令的並行執行。這種順序控制流結構從根本上限制了計算過程並行性的開發和利用,迫使程式設計師受制於「逐字思維方式」的傳統程式設計風格的缺陷,語言臃腫無力,缺少必要的數學性質,從而使程式複雜性無法控制,軟體質量無法保證,生產率無法提高。所以從理論上講,不存在真正意義上的並行計算機,這就從根本上限制了計算機效能的提高。
在實際的程式中可能大量存在這樣的指令序列:前面的某些指令所需的運算元據還沒到,正在等待或正在進行 memory 訪問;然而之後的若干指令所需要的運算元據已在前面取出,或者就是無運算元指令。原本後面的指令可以提前或者併發執行,由於馮 . 諾依曼計算機一維的計算模型,指令只能序列執行,使得這種可能成為了不可能,指令序列只能按照事先按排好的次序順序地執行。這樣的計算模型嚴重浪費了有限的計算機資源,不僅工作效率低而且容易形成提高效能的系統瓶頸,使得計算機的運算速度很難從根本上得到提高,成了制約計算機發展的枷鎖。
馮 . 諾依曼體系結構的侷限嚴重束縛了現代計算機的進一步發展,而非數值處理應用領域對計算機效能的要求越來越高,這就亟待需要突破傳統計算機體系結構的框架,尋求新的體系結構來解決實際應用問題。目前在體系結構方面已經有了重大的變化和改進,如文章開頭提到的並行計算機、資料流計算機以及量子計算機、 dna 計算機等非馮計算機,它們部分或完全不同於傳統的馮 . 諾依曼型計算機,很大程度上提高了計算機的計算效能。
如並行計算機,它採用一種所謂的平行計算模型,將並行處理引入了計算機體系結構設計中。並行處理將乙個傳統序列處理的任務分解開來,並採用並行演算法將其分配給多個處理器同時處理,即在同一時間間隔內增加計算機的運算元量。直覺上,我們認為序列計算模型解決不了的問題完全可以用平行計算模型來解決,甚至會想,並行計算機系統求解問題的速度將隨著處理器數目的不斷增加而不斷提高,從而解決難解性問題,其實這是一種誤解。當將乙個問題分解到多個處理器解決時,由於演算法中不可避免地存在必須序列執行的操作,從而大大限制了並行計算機系統的加速能力。根據阿達爾定律,當序列操作僅佔全部操作 1% 時,即使 cpu 數目無窮多,也只能獲得 100 倍序列執行的加速比。
這些新的非馮計算機體系結構,於傳統馮 . 諾依曼體系結構相比較,在提高計算機效能上顯現出了很大的優勢。但仍然存在許多需要改進和突破的地方,計算機體系結構領域存在著很多發展機遇和挑戰。
[1] 電腦科學與技術方** 董榮勝、古天龍著――人民郵電出版社
[2] 計算機系統結構 孫強南、孫昱東著――科學出版社
[3] 並行計算機系統結構 白中英、楊旭東著――科學出版社
馮 諾依曼體系結構對計算機發展的限制
馮 諾依曼體系結構對計算機發展的限制 劉愛貴 高能物理研究所計算中心 北京 2003年 摘要 本文簡單介紹了傳統馮 諾依曼體系結構的原理和特點,從計算模型和儲存模型兩個方面分析了這種體系結構的侷限性,並對目前非馮體系結構的發展情況作了淺出的分析和展望。從計算機誕生那天起,馮 諾依曼體系結構佔據著主導...
馮諾依曼計算機體系結構
體系結構特點為 儲存程式和二進位制。儲存程式的基本思想 任何複雜的運算都可以分解成一系列簡單的操作步驟,這些簡單操作應是計算機能一直接實現的被稱為 指令 的基本操作,如加法指令 減法指令等。解算乙個新題目時,先確定分解的演算法,編制運算過程,選取能實現其操作的適當指令,組成所謂 程式 如果把程式和處...
馮諾依曼體系結構
cui 馮諾依曼體系機構 說到計算機的發展,就不能不提到德國科學家馮諾依曼。從20世紀初,物理學和電子學科學家們就在爭論製造可以進行數值計算的機器應該採用什麼樣的結構。人們被十進位制這個人類習慣的計數方法所困擾。所以,那時以研製模擬計算機的呼聲更為響亮和有力。20世紀30年代中期,德國科學家馮諾依曼...