馮·諾依曼結構(von Neumann architecture)html
馮·諾依曼結構也稱做普林斯頓結構,是一種將程序(指令序列的集合)和數據存放在同一存儲器的不一樣地址的電腦設計概念結構。這是創建在馮·諾依曼原理,即程序可看作一種特殊的「數據」,一樣地能夠被處理和存儲,故二者可存放在同一存儲器中,採用單一的地址總線和數據總線。web
特色:架構
第一,程序和數據存放在同一存儲器的不一樣地址上;併發
第二,存儲單元線性排列,且其位數固定;post
第三,順序執行,即程序/數據—>內存—>取指令執行指令;url
順序執行程序。執行前,將須要的程序和數據先放入存儲器(PC爲內存)。當執行時把要執行的程序和要處理的數據按順序從存儲器中取出指令一條一條地執行,稱做順序執行程序。spa
第四,組成上有運算器,存儲器,控制器,輸入/輸出設備。以下圖:.net
馮·諾依曼體系結構的特色決定了它能夠最大限度地利用資源。怎麼理解呢?你數據和程序放在同一個地方,不用花銷太多的資源就能取到數據和程序。這也算是馮氏結構的一大優勢吧。但是因爲程序和數據存放在同一存儲區,存取程序和數據間時共享同一總線,致使了馮·諾依曼瓶頸。設計
哈佛結構htm
與馮氏結構相對的是哈佛結構,即將程序和數據分開存儲的結構。其過程CPU首先到程序指令儲存器中讀取程序指令內容,解碼後獲得數據地址,再到相應的數據儲存器中讀取數據,並進行下一步的操做(一般是執行)。程序指令儲存和數據儲存分開,數據和指令的儲存能夠同時進行,能夠使指令和數據有不一樣的數據寬度。以下圖:
聯繫馮氏結構的瓶頸,咱們很快能想到哈佛結構可以完成指令和數據的併發操做,減輕了程序運行時的訪存瓶頸,也就是提升吞吐量,是一種並行結構;而馮氏結構只能是順序操做,是一種串行的處理方式。原始的馮·諾依曼體系結構,經過引入流水線技術(Pipeline)提升吞吐量。
流水線技術與並行處理有所區別,流水線是在順序指令流計算機中實現處理時間重疊的技術。流水線的並行處理是指完成對一條指令的不一樣操做(取指令、解碼指令、執行指令)的各個部件在時間上是能夠同時重疊工做(三級流水線)。CPU是按照取指令、解碼指令、執行指令來完成一條指令的操做,當CPU取完第一條指令後,接着解碼第一條指令,同時CPU取第二條指令,該步完成後,CPU執行第一條指令,同時解碼第二條指令、取第三條指令,如此重疊操做。
所以,各部件同時處理是針對不一樣指令而言的,各部件分別同時爲多條指令的不一樣部分(step、stage)進行工做,以提升各部件的利用率來提升指令的平均執行速度。可是這樣雖然提升了系統的速率,因爲流水線結構使得不容易計算程序運行的時間,對一些時序要求很嚴的狀況,該結構仍是存有弊端的。因此在一些實時性很強的嵌入式系統採用哈佛結構能夠高速數據處理,同時讀取指令和數據,大大提升了數據吞吐率,保證了系統的可靠性。
http://www.weboch.com.cn/ARM/neumann-harvard.asp
http://blog.csdn.net/souljaven/article/details/47667831?locationNum=3&fps=1
關於ARM的一些概念