圖靈機的變體與邱奇-圖靈論題

儲存程式概念(stored-program concept)

早期的機器每換一項新任務就要重新接線:要讓它們做別的事,工程師得實際重插線纜、撥動開關,這工作可能耗上好幾天。儲存程式概念(stored-program concept)就是那個如今看來理所當然、卻把計算帶出黑暗時代的想法:把程式與資料放在同一塊記憶體裡,於是要執行不同任務,你只要載入不同的指令,完全不必重新接線。程式變成了機器讀取的另一種資料。

具體而言,在儲存程式(馮諾伊曼,von Neumann)電腦中,程式的指令與它所處理的資料都住在同一塊可定址的記憶體裡。處理器重複一個簡單的迴圈:從記憶體取出下一條指令、解碼它要求什麼、執行它(可能讀寫資料,或跳到另一條指令),然後重複。因為指令像其他位元組一樣坐在記憶體裡,程式甚至能讀取或修改指令,包括它自己的。載入新程式不過是把新的位元組寫進記憶體罷了。

這是通用圖靈機的工程實現。圖靈的通用機把任何機器 M 的描述當作輸入資料,然後表現得像 M;儲存程式電腦把程式當作輸入資料,然後依該程式的指示行事——同一個想法、同一種「程式只是一串字串」的自我套用,只是用電晶體而非紙帶造成。這正是為什麼同一台筆電在同一套硬體上既能是文書處理器、遊戲,也能是編譯器。誠實的提醒兼具歷史與概念性:馮諾伊曼設計是一種有影響力的架構,而非唯一可能的架構(哈佛架構把程式與資料放在分離的記憶體裡),而且「儲存程式」談的是彈性與通用性,而非速度。

當你雙擊一個應用程式時,作業系統把那程式的位元組從磁碟複製進記憶體,然後讓處理器開始執行它們。沒有重新接任何線;剛剛跑你上一個程式的同一顆 CPU 現在跑這一個,正如通用圖靈機依被遞上的 <M> 而切換行為。

程式即資料:載入不同的位元組就得到不同的行為——這是用電晶體造成的通用機。

儲存程式想法是通用性的實務後裔,而非另一種能力。而馮諾伊曼佈局只是眾多架構之一(例如程式與資料記憶體分離的哈佛架構),選用它是為了彈性,而非因為它是唯一選擇。

又称
von Neumann architectureprogram as datastored-program computer范紐曼架構馮諾伊曼架構