馮紐曼架構與哈佛架構的差異:比較指令與資料的處理
在馮紐曼架構中,指令與資料共用一個記憶體與一條匯流排,因此處理器無法同時進行指令的擷取與資料的存取。這個限制就是馮紐曼瓶頸。在哈佛架構中,指令與資料位於不同的記憶體,並有各自的匯流排,因此可以同時存取。現代大多數 CPU 結合了這兩者。主記憶體是共通的,但 L1 快取分成指令用與資料用。這稱為修正式哈佛架構。
| 項目 | 馮紐曼架構 | 哈佛架構 |
|---|---|---|
| 記憶體 | 一個記憶體同時存放指令與資料 | 指令用與資料用各有獨立的記憶體 |
| 匯流排 | 共用的一條 | 各自獨立的匯流排 |
| 指令擷取與資料存取 | 爭用同一條匯流排(馮紐曼瓶頸) | 可以同時進行 |
| 傳輸量 | 在相同匯流排速度下較低 | 高。可以平行存取 |
| 靈活性 | 高。因為程式就是資料,所以容易載入、產生與修改 | 較低。程式碼與資料是分開的 |
| 記憶體的分配 | 程式碼與資料的比例可以靈活改變 | 各個記憶體的大小是固定的 |
| 硬體複雜度 | 簡單 | 複雜。兩個記憶體與兩條匯流排 |
| 代表性裝置 | 通用電腦 | 數位訊號處理器與許多微控制器(AVR 與 PIC 等) |
| 在現代 CPU 中 | 共通的主記憶體 | L1 的指令快取與資料快取是分開的(修正式哈佛架構) |
數值為具代表性的大致參考值,會因世代或產品而異。