什麼是哈佛建築?
為什麼指令和資料要分開儲存?
該部落格上撰寫的文章是出於教學目的而創建的。 另外,文章中的資訊可能不正確,請謹慎。
電腦必須將程式指令和程式使用的資料儲存在某處並讀取它們。 此時,將指令和資料分別儲存在不同記憶體中的結構稱為哈佛架構。
指令和資料是分開的
在哈佛架構中,指令記憶體和資料記憶體在實體上是分開的。 總線,也就是通往CPU的通道,也是單獨使用的。
指令記憶體-指令匯流排-┐
CPU
資料記憶體-資料匯流排--┘
CPU在取下指令的同時,也可以同時讀取目前指令所需的資料。 與指令和資料交替使用一條路徑的結構相比,可以減少瓶頸。
另外,兩個記憶體的規格可以設計不同。 指令可以放置在唯讀記憶體中,資料可以儲存在讀寫記憶體中,或者指令和資料的位元寬可以不同。
它與馮諾依曼結構有何不同?
馮諾依曼架構將指令和資料放置在同一記憶體和匯流排中。
哈佛結構
指令存儲器─┐
CPU
資料存儲器 ─┘
馮諾依曼結構
指令+資料記憶體-CPU
馮諾依曼結構只有一個記憶體空間,因此程式設計和硬體配置都比較簡單。 然而,取指令和讀取資料使用相同的路徑,因此很難同時處理它們。
相反,哈佛結構有利於同時訪問,但很難透過使用資料而不是空指令記憶體來靈活利用空間。 由於記憶體和總線必須單獨創建,因此硬體變得更加複雜。
在哪裡使用它?
哈佛結構在需要快速反應輸入的微控制器或 DSP 中很容易看到。 它非常適合定義程式並且同時處理命令和資料很重要的環境。
很難精確定位現代 PC 中的某個 CPU。 主存將指令和資料儲存在一起,但在CPU附近,經常使用改進的哈佛架構,它將指令快取和資料快取分開。
也就是說,哈佛架構的核心並不是簡單的有兩個記憶體。 可以理解為一種透過指令和資料使用不同的儲存空間和路徑,讓CPU同時執行兩項任務的結構。