8

爲什麼在設計個人電腦時,基於馮諾依曼體系結構的計算機體系結構優於哈佛體系結構;而哈佛架構用於設計基於微機的計算機系統和基於DSP的計算機系統?von neumann vs harvard architecture

回答

10

目前用於PC的CPU設計同時具有哈佛和馮諾依曼元素(,更多馮諾依曼,儘管)。

如果你看看L1緩存,你會發現在AMD,ARM和Intel系統中有指令L1緩存和數據L1緩存,可以獨立並行訪問。這是哈佛部分。但是,在L2,L3或DRAM中,數據和代碼是混合的。這是馮諾伊曼部分

那麼爲什麼不是採用PC的純哈佛架構?我的意見是它沒有意義。如果您對大多數應用程序進行概要分析,您會發現L1指令緩存未命中率非常小,爲。這意味着通常代碼大小不是問題。因此,爲代碼設計一個完全獨立的路徑是沒有意義的。數據可能變得非常大,但代碼不能真正。

在DSP中,使用單獨的代碼和數據路徑是有意義的。這是因爲DSP的工作主要是「流數據」,這意味着對緩存的需求相當小。此外,DSP代碼可以包含增加代碼大小的預先計算的係數。所以在數據大小和代碼大小之間取得平衡,這意味着使用哈佛架構是有意義的。

+1

*純粹*哈佛將意味着單獨的RAM(或ROM),而不僅僅是分割高速緩存。因此,您剛編譯的代碼可能必須從數據存儲器寫入磁盤,並從磁盤重新加載到程序存儲器中。只有當代碼是固定的,並在ROM中才有意義。 (即便如此,正如你指出的那樣,統一緩存在L1之前是有意義的)。拆分緩存的部分原因是吞吐量/延遲:您無法構建與兩個單獨的32k緩存的總吞吐量一樣快的64k緩存。 [也見這個答案](http://stackoverflow.com/a/38549736/224132)關於小緩存的速度技巧。 – 2016-09-21 01:37:18

4

馮諾依曼體系結構和哈佛體系結構之間的根本區別在於,在哈佛體系結構中,指令存儲器與數據存儲器不同,在馮諾依曼中它們是相同的。這反映了PC的實際情況(其中程序存儲和讀取來自同一介質的數據,通常是磁盤和RAM)以及微控制器(其中程序存儲在非易失性存儲器中,數據存儲在易失性存儲器中)。

相關問題