1. 程式人生 > >馮·諾依曼結構與哈佛結構

馮·諾依曼結構與哈佛結構

馮·諾依曼結構(von Neumann architecture)

  馮·諾依曼結構也稱作普林斯頓結構,是一種將程式(指令序列的集合)和資料存放在同一儲存器的不同地址的電腦設計概念結構。這是建立在馮·諾依曼原理,即程式可看做一種特殊的“資料”,同樣地可以被處理和儲存,故兩者可存放在同一儲存器中,採用單一的地址匯流排和資料匯流排。

特點:

第一,程式和資料存放在同一儲存器的不同地址上;

第二,儲存單元線性排列,且其位數固定;

第三,順序執行,即程式/資料—>記憶體—>取指令執行指令;

  順序執行程式。執行前,將需要的程式和資料先放入儲存器(PC為記憶體)。當執行時把要執行的程式和要處理的資料按順序從儲存器中取出指令一條一條地執行,稱作順序執行程式。

第四,組成上有運算器,儲存器,控制器,輸入/輸出裝置。如下圖:

  馮·諾依曼體系結構的特點決定了它可以最大限度地利用資源。怎麼理解呢?你資料和程式放在同一個地方,不用花銷太多的資源就能取到資料和程式。這也算是馮氏結構的一大優點吧。可是由於程式和資料存放在同一儲存區,存取程式和資料間時共享同一匯流排,導致了馮·諾依曼瓶頸。

 

哈佛結構

  與馮氏結構相對的是哈佛結構,即將程式和資料分開儲存的結構。其過程CPU首先到程式指令儲存器中讀取程式指令內容,解碼後得到資料地址,再到相應的資料儲存器中讀取資料,並進行下一步的操作(通常是執行)。程式指令儲存和資料儲存分開,資料和指令的儲存可以同時進行,可以使指令和資料有不同的資料寬度。如下圖:

  聯絡馮氏結構的瓶頸,我們很快能想到哈佛結構能夠完成指令和資料的併發操作,減輕了程式執行時的訪存瓶頸,也就是提高吞吐量,是一種並行結構;而馮氏結構只能是順序操作,是一種序列的處理方式。原始的馮·諾依曼體系結構,通過引入流水線技術(Pipeline)提高吞吐量。

  流水線技術與並行處理有所區別,流水線是在順序指令流計算機中實現處理時間重疊的技術。流水線的並行處理是指完成對一條指令的不同操作(取指令、解碼指令、執行指令)的各個部件在時間上是可以同時重疊工作(三級流水線)。CPU是按照取指令、解碼指令、執行指令來完成一條指令的操作,當CPU取完第一條指令後,接著解碼第一條指令,同時CPU取第二條指令,該步完成後,CPU執行第一條指令,同時解碼第二條指令、取第三條指令,如此重疊操作。

  因此,各部件同時處理是針對不同指令而言的,各部件分別同時為多條指令的不同部分(step、stage)進行工作,以提高各部件的利用率來提高指令的平均執行速度。但是這樣雖然提高了系統的速率,由於流水線結構使得不容易計算程式執行的時間,對一些時序要求很嚴的情況,該結構還是存有弊端的。所以在一些實時性很強的嵌入式系統採用哈佛結構可以高速資料處理,同時讀取指令和資料,大大提高了資料吞吐率,保證了系統的可靠性。