在哈佛架構,兩個暫存器不需要有共同的特徵。特別是,字寬、定時、實現技術和主記憶體位址都可以不同。在一些系統中,指令可以儲存在唯讀記憶體(ROM)中,而資料記憶體一般需要讀寫記憶體(RAM等)。在一些系統中,指令記憶體比資料記憶體多,因此指令位址比資料位址更寬。
與馮·諾伊曼架構的對比
編輯
純馮·諾伊曼架構下的CPU可以讀取指令或讀/寫主記憶體資料,它們都不能使指令和資料同時使用同一個的匯流排系統。使用哈佛結構的電腦中CPU,即使沒有快取的情況下也可以在讀取指令的同時進行資料訪問。由於指令和資料訪問不使用同一個主記憶體通道,因此哈佛結構的電腦可以在相同的電路複雜度下有更好的表現。
同時,哈佛架構機擁有不同的代碼和資料的位址空間:指令的零位址和資料的零位址是不同的。指令的零位址可能是二十四位的值,而資料的零位址可能是一個八位位元組,而非二十四位值的一部分。
與改進的哈佛架構的對比
編輯
改進的哈佛架構機與原來的哈佛架構機並無兩樣,但它鬆綁了指令和資料之間嚴格分離的這一特徵,仍然允許CPU同時訪問兩個(或更多)主記憶體匯流排。最常見的修改包括由公共位址空間支援的單獨指令和資料快取。當它作為一個純粹的哈佛機時,CPU通過快取來執行指令。當訪問外部記憶體時,它的作用就像一個馮·諾伊曼機(代碼可以像資料一樣移動,像是一個功能強大的技能)。這一改良在現代處理器是普遍存在的,例如ARM體系結構、Power Architecture和x86處理器。它有時被稱為哈佛架構,忽略了它實際上被「修改」的事實。
另一種修改提供了指令記憶體(例如ROM或快閃記憶體)與CPU之間的通路,以允許來自指令記憶體的字被視為唯讀資料。該技術用於某些微控制器,包括Atmel的AVR。這允許訪問諸如文字字串或函式表之類的常數資料,而無需首先將其複製到資料記憶體中,從而為讀/寫變數保留稀缺(且耗電的)資料記憶體。特殊的機器語言指令提供了從指令記憶體中讀取資料的功能。(這是不同於指令本身嵌入常數的資料,雖然對於單個常數來說,兩種機制可以相互替代。)