天天看點

馮 • 諾依曼體系結構

文章目錄

  • ​​馮•諾依曼體系結構推導​​
  • ​​記憶體提高馮•諾依曼體系結構效率的方法​​
  • ​​你用QQ和朋友聊天時資料的流動過程​​
  • ​​與馮•諾依曼體系結構相關的一些知識​​
馮 • 諾依曼體系結構

馮•諾依曼體系結構推導

計算機的作用就是為了解決人的問題,而要解決問題,首先需要将資料或是問題輸入到計算機當中,是以計算機必須要有輸入裝置。計算機解決完問題後還需要将計算結果輸出顯示出來,是以計算機必須要有輸出裝置。計算機通過輸入裝置得到資料,資料在計算機當中進行一系列的算術運算和邏輯運算後,通過輸出裝置進行輸出,于是就得到了以下流程圖。

馮 • 諾依曼體系結構

但是計算機當中隻有算術運算功能和邏輯運算功能是不夠的,還需要有控制功能,控制何時從輸入裝置擷取資料,何時輸出資料到輸出裝置等。對應到C語言當中,算術運算就完成一系列的加減乘除,而邏輯運算就對應于一系列的邏輯與邏輯或等,控制功能就對應于C語言當中的判斷、循環以及各個函數之間的跳轉等等。

馮 • 諾依曼體系結構

而我們後人就将這個具有算術運算功能、邏輯運算功能以及控制功能的這個子產品稱為中央處理器,簡稱CPU。但是輸入裝置和輸出裝置相對于中央處理器來說是非常慢的,于是在目前這個體系整體呈現出來的就是,輸入裝置和輸出裝置很慢,而CPU很快,根據木桶原理,那麼最終整個體系所呈現出來的速度将會是很慢的。

馮 • 諾依曼體系結構

是以目前這個體系結構顯然是不合适的,于是我們就不讓輸入裝置和輸出裝置直接與CPU進行互動,而在這中間加入了記憶體。

馮 • 諾依曼體系結構

記憶體有個特點就是,比輸入裝置和輸出裝置要快很多,但是比CPU又要慢。現在記憶體就處于慢裝置和快裝置之間,是一個不快也不慢的裝置,能夠在該體系結構當中就起到一個緩沖的作用。

現在該體系的運作流程就是:使用者輸入的資料先放到記憶體當中,CPU讀取資料的時候就直接從記憶體當中讀取,CPU處理完資料後又寫回記憶體當中,然後記憶體再将資料輸出到輸出裝置當中,最後由輸出裝置進行輸出顯示。

于是就形成了最終的馮諾依曼體系結構。

馮 • 諾依曼體系結構

注意: 這裡存儲器隻是記憶體,不包括外存。

記憶體提高馮•諾依曼體系結構效率的方法

在這裡大多數人有一個疑惑就是,先将輸入裝置的資料交給記憶體,再由記憶體将資料交給CPU,這個過程真的比CPU直接從輸入裝置擷取資料更快嗎?

說明這個問題之前,我們首先需要知道:記憶體具有資料存儲的能力。雖然記憶體的大小隻有4G/8G,但是既然記憶體有大小,那麼它就有預裝資料的能力,而這就是提高該體系結構效率的秘訣。

這裡不得不說到的就是局部性原理:根據統計學原理,當一個資料正在被通路時,那麼下一次有很大可能會通路其周圍的資料。是以當CPU需要擷取某一行資料時,記憶體可以将該行資料之後的資料一同加載進來,而CPU處理資料和記憶體加載資料是可以同時進行的,這樣下次CPU就可以直接從記憶體當中擷取資料。

輸出資料的時候也一樣,CPU處理完資料後直接将資料放到記憶體當中,當輸出裝置需要時再在記憶體當中擷取即可,這也就有了我們平常所說的緩沖區的概念。例如,緩沖區滿了才将資料列印到螢幕上,使用fflush函數将緩沖區當中的資料直接輸出之類的,都是将記憶體當中的資料直接拿到輸出裝置當中進行顯示輸出。

你用QQ和朋友聊天時資料的流動過程

要使用QQ,首先需要聯網,而你和你的朋友的電腦都是馮諾依曼體系結構,在你向朋友發送消息這個過程中,你的電腦當中的鍵盤充當輸入裝置、顯示器和網卡充當輸出裝置,你朋友的電腦當中的網卡充當輸入裝置、顯示器充當輸出裝置。

馮 • 諾依曼體系結構

剛開始你在鍵盤當中輸入消息,鍵盤将消息加載到記憶體,此時你的顯示器就可以從記憶體擷取消息進而顯示在你自己的顯示器上,此時你就能在你自己的電腦上看到你所發的消息了。

在鍵盤将消息加載到記憶體後,CPU從記憶體擷取到消息後對消息進行各種封裝,然後再将其寫回記憶體,此時你的網卡就可以從記憶體擷取已經封裝好的消息,然後在網絡當中經過一系列處理(這裡忽略網絡處理細節),之後你朋友的網卡從網絡當中擷取到你所發的消息後,将該消息加載到記憶體當中,你朋友的CPU再從記憶體當中擷取消息并對消息進行解包操作,然後将解包好的消息寫回記憶體,最後你朋友的顯示器從記憶體當中擷取消息并顯示在他的電腦上。

馮 • 諾依曼體系結構

與馮•諾依曼體系結構相關的一些知識

馮 • 諾依曼體系結構

根據馮諾依曼體系結構圖,我們可以知道,站在硬體角度或是資料層面上,CPU隻和記憶體打交道,外設也隻和記憶體打交道。到這裡我們也可以說明一個問題:為什麼程式運作之前必須先加載到記憶體?

因為可執行程式(檔案)是在硬碟(外設)上的,而CPU隻能從記憶體當中擷取資料,是以必須先将硬碟上的資料加載到記憶體,也就是必須先将程式加載到記憶體。

常見的輸入裝置和輸出裝置(拓展):

 輸入裝置:鍵盤、滑鼠、網卡、硬碟、話筒、攝像頭、掃描器等。

 輸出裝置:顯示器、音響、網卡、硬碟、列印機等。

注意: 同種裝置在不同場景下可能屬于輸入裝置,也可能屬于輸入裝置。

繼續閱讀