按照圖靈(Alan Turing)給出的計算機模型,計算機是由一個有限狀態讀寫頭和一個儲存器構成。有限狀態讀寫頭從一個初始狀態開始,對儲存器上的(輸入)資料進行讀或寫操作,經過有限步操作之後停機,此時儲存器上的(輸出)資料就是計算結果。這樣的計算機模型叫做圖靈機。下面是一個非常簡單的圖靈機例子:它會從左至右掃描一串二進位制數字,如果該數字能夠被3整除(是3的倍數)則在該數字串的末尾寫出Y,否則寫出N,然後停機。
—————————
| 有限狀態讀寫頭 |
—————————
這個讀寫頭共有3個狀態,“狀態一”為初始狀態,按如下方法從左至右掃描儲存帶上的數字或寫出字元:
狀態一:讀入為0,留在狀態一,讀入為1,進入狀態二,讀入為空,寫Y, 停機。
狀態二:讀入為0,進入狀態三,讀入為1,進入狀態一,讀入為空,寫N, 停機。
狀態三:讀入為0,進入狀態二,讀入為1,留在狀態三,讀入為空,寫N, 停機。
例子中儲存帶上的輸入二進位制字串代表十進位制數21,是3的倍數,的確讀寫頭掃描完畢後會寫出Y並停機。
圖靈機模型對於一大類有限步數可計算問題給出了一個普適性的定義。每一個這樣的問題都存在一個圖靈機可對其進行計算給出答案。我們知道對有些問題隨機方法比確定的方法要快。比如用桿秤秤重時,隨機撥動秤砣的方法要比任何確定性的撥動秤砣方法更快地找到所秤物體的重量。隨機計算方法的圖靈機模型可以在基本圖靈機上外加上一條儲存帶,儲存著隨機數串供有限狀態讀寫頭讀取。
在如上圖靈機的例子中我們可以把有限狀態讀寫頭看作是機器的程式執行程式碼,而儲存帶上存的只是被處理的資料。圖靈在描述他的另一個機器模型Universal(通用)機器時還提出了可以把有限狀態指令也存放在儲存帶上,讓讀寫頭根據讀入的指令進行下一步操作。可以證明這樣儲存有指令的通用圖靈機能夠實現任何一個圖靈機,比如我們在上面給出的專用圖靈機,也就是說可以解決任意一個圖靈可計算問題。現在我們廣泛使用的計算機的確就是採用了儲存指令這一原理因而可以解決“萬能”計算問題的。具體實現方法是:對於需要解決的問題用軟體編制程式,再把程式和資料都存放在同一個儲存器(記憶體)裡,由中央處理器(CPU)根據指令對資料進行操作。這樣的機器也叫做“儲存程式計算機”(stored program computer)。在為第一臺儲存程式計算機EDVAC研發計劃做顧問時,約翰·馮·諾伊曼(John von Neumann)寫了一個草案報告描述了這種帶有中央處理器、記憶體、I/O、匯流排的儲存程式計算機。所以儲存程式計算機還有另外一個學名,叫做馮·諾伊曼體系架構(Von Neumann Architecture)。
在我們今天使用的儲存程式計算機裡,與中央處理器直接發生操作關係的儲存器通常叫做記憶體。記憶體的讀寫速度快,能夠與中央處理器的速度相匹配,但是價格昂貴,而且是揮發式的,即斷電時所儲存的內容立刻丟失。所以外部儲存器(外存)就成了現代計算機發展過程中的一個不可缺少的組成部分。低速、大容量、非揮發、廉價的外存對應於高速、小容量、揮發、昂貴的記憶體,前者對於後者是一個非常有效的補充。兩者通過I/O進行互動。早期的外存有穿孔紙帶、卡片、磁帶,後來又有軟、硬磁碟、光碟,如今發展到半導體固態外存(如快閃記憶體)。
值得注意的是,半導體固態外存的速度越來越快,相信以後新技術的出現一定可以使這類外存的速度與記憶體的無甚差別,而且固態外存的價格也正在飛速下降(從08年一季度到09年一季度快閃記憶體硬碟價格環比下降了76%)。於是我們自然就有了如下的想法:未來的計算機是否還需要有內、外儲存器之分呢?
如果把一臺機器看作為單個處理器,從這個角度來看,我相信內、外儲存器用I/O相連的這種現代計算機體系架構將會逐漸消失。圖靈本來給出的計算模型就根本沒有內、外儲存器之分的概念。我想外存的發展完全是由於記憶體在實現技術上存在著發展過程上的侷限性所造成的。內、外儲存器之分並非計算的本質。所以與之有關的技術如AutoSave, Swap, Checkpoint等等也會隨著內、外儲存器區別的消失而消失。
然而通訊早就成為現代計算機體系架構中的一個極其重要的組成部分。計算機由於互聯通訊而應用價值大大增加。在現代計算機的通訊模型上,內、外儲存器在概念上和使用上還會有很明顯的差別。在當前正在發生的雲端計算的模式上,計算機的通訊模型又有很有意思的發展。將在下文討論。