馮 諾伊曼模型

2021-08-22 13:28:20 字數 2994 閱讀 1914

計算機執行有兩個前提:任務描述(以程式或**方式表述)和計算機本身的執行能力(任務的執行者)

程式是計算機指令的集合,每條指令就是乙個計算機的基本動作,

指令是程式的最小單位(原子操作),即要麼都執行,要麼都不執行,不可能只執行一部分。計算機就是通過一條條的執行指令來完成工作任務的。

馮·諾依曼模型包括五個部分:記憶體,處理單元,控制單元, 輸入,輸出

記憶體單元包括mar(memory address register 記憶體位址暫存器)和mdr(memory data register 記憶體資料暫存器)組成

寫:   將被訪問的記憶體單元的位址放入mar,然後將要寫入的資料放入mdr,接著傳送寫訊號通知記憶體,這樣,mdr中的內容將被寫入mar(注意,寫入過程會把之前mar指向的位址內存放的資料內容覆蓋,並且無法還原)

處理單元是資訊被真正處理的地方,目前的計算機處理單元已經非常複雜,由很多個處理單元組成,alu(算術邏輯單元)是最簡單的功能單元,也是馮諾依曼體系的唯一處理單元,alu包括基本運算(add subtract)和基本的邏輯操作(and or not)

alu單次所能處理的資料的長度(書上叫size of quantity)通常被稱為計算機的字長,通常所說的32位機器和64位機器就分別代表不同機器的字長。(書上翻譯為量化大小,個人感覺表述為能單次處理的資料長度更為合適,比如16位機器單次就只能操作16個bit位的資料。但是請注意,這並不表示不能處理更多位數的資料,比如兩個64位數相加,在64位機器上只需執行一次加操作,但是在16位上執行4次加操作也能獲得結果。這也和書開篇指出的計算機能完成所有計算,不同的配置影響的只是獲得結果的快慢而已)

通常在alu附近會配置少量的儲存器,用於存放中間結果,原因是用臨時儲存空間可以減少不必要的記憶體訪問,記憶體訪問和計算過程耗時相比花費的時間通常都更多,這在很多時候都是不能接受的。臨時儲存器常見設計方式就是一組暫存器,具體數量由不同的結構決定,而暫存器的寬度和計算機的字長是一致的,寬度為1個字。

輸入\輸出

資訊能夠被處理的前提是「資訊事先需要輸入到計算機」,這個通過輸入裝置完成。(鍵盤,滑鼠等)

同時,處理結果需要通過不同的方式輸出到計算機外部。這個通過輸出裝置來完成。(顯示器等)

控制單元

控制單元就是計算機的大腦,在程式的逐步執行過程中,即負責控制程式執行過程的每一步,有負責控制其中每條指令執行的每一步。

控制單元中有幾個特殊的暫存器

ir(instruction register 指令暫存器) 儲存正在執行的指令

馮諾依曼模型的乙個例項

指令處理

馮諾依曼模型的核心思想就是程式和資料都是以bit流的方式存放在計算機記憶體中,程式在控制單元的控制下,依次完成指令的讀取和執行。

指令是程式的最小單位,指令本身由操作碼(opcode)和運算元兩部分組成。

操作碼表示該指令是做什麼的,運算元表明是對哪些資料做操作。

指令週期

指令在控制單元的控制下,精確的一步一步的完成,這個執行步驟順序為指令週期,週期中的每一步稱為節拍。

乙個指令週期包括6個節拍(大多數計算機設計都是如此,但也不是全部)

1.取指令(fetch)

這就是裝載需要執行的指令到ir的過程。首先將pc暫存器的內容裝入mar,並且將pc暫存器的值+1(因為我們完成當前這一條指令之後還需要繼續進行下一條,就是通過這種方式來實現指令的順序執行的)。

然後將位址指向的內容裝入mdr,最後控制單元將mdr中的內容送入ir,至此,我們完成了指令的讀取

2解碼(decode)

解碼操作就是分析,檢查指令的型別,同時確定對應的微結構的操作細節。

3位址計算(evaluate address)

如果指令執行存在位址操作,則在此節拍完成(這一步不是必須)

4取運算元(fetch operand)

該節拍負責讀取指令處理所需要的源運算元

5執行(execute)

該節拍負責指令的執行操作,不同的操作碼該節拍操作不同,甚至可能不需要在這一步做任何操作。

6存放結果(store result)

指令執行的最後節拍,將之前的結果寫入目的暫存器。

在存放結果節拍完成之後,控制單元復位指令週期,即從取指令節拍重新開始下乙個指令的處理。

前後指令在儲存空間是順序存放的,所以我們稱計算機的執行方式是順序執行的。

當然,我們可以通過控制指令來改變執行順序。

控制指令

指令週期控制

節拍的所有子步驟需要順序執行(不可並行),如取指令先將pc值裝入mar,然後讀記憶體將內容裝入mdr,最後將mdr的內容送入ir。 這個過程的順序受控於控制單元中的有限狀態機。

停機操作

計算機一條一條的執行指令,好像永遠不會停止,那要如何停止呢?

使用者程式的停止好辦,只需要在使用者程式結束處埋放一條控制指令,任務是修改pc暫存器,使之跳回作業系統,而作業系統也常常借助於這一時刻啟動乙個新的使用者程式。

但是,對於計算機來講,作業系統本身也是一條指令一條指令的執行,和使用者程式並沒有什麼不同,那怎麼樣才能真正停止呢?

答案是終止「時鐘」。

時鐘就是機器週期,乙個機器週期的開始,意味著節拍中下乙個步驟的開始,或當前指令週期中下乙個節拍的開始。因此,終止時鐘,就終止了指令的執行。

要終止時鐘,只需要將run狀態清0即可。lc-3和大多數機器一樣由作業系統來控制完成這個步驟的。(老機器有halt指令)

halt能夠清零run鎖存器,時鐘停止,但是無法設計出指令來設定run鎖存器來重啟指令週期,因為這個時候指令已經無法執行了!!!!!! 這種情況必須要有乙個外部的輸入來重啟指令,如中斷訊號

大佬feng 諾伊曼與馮 諾依曼機

大佬 馮 諾伊曼機 1945年,數學家馮 諾伊曼在研究edvac機時提出了 儲存程式 的概念。以此概念為基礎的各類計算機統稱為馮 諾依曼機。馮 諾依曼計算機的特點 num1?計算機由運算器 儲存器 控制器 輸入裝置 輸出裝置五大部件組成。num2?指令和資料以同等地位存放於儲存器內,並可按位址訪問。...

約翰 馮 諾依曼及馮諾伊曼式計算機簡介

馮 諾依曼 1 john von neumann,1903 1957 原籍匈牙利,布達佩斯大學數學博士。20世紀最重要的數學家之一1,在現代 計算機 博弈論 核 和 生化 等領域內的科學全才之一,被後人稱為 計算機之父 和 博弈論之父 涯傑 2 先後執教於 柏林大學和 漢堡大學,1930年前往美國,...