哈佛架構
此條目沒有列出任何參考或來源。 (2019年6月14日) |
哈佛架構(英語:Harvard architecture)是一種將程式指令與資料儲存分別儲存、分別使用資料匯流排的電腦架構[1]。這一架構經常拿來與馮諾伊曼架構做對比,後者的程式指令與資料共享儲存與匯流排。哈佛架構經常被用於即時處理及低功耗應用[2][3]。
「哈佛架構」一詞通常被描述為起源於Harvard I 型 繼電器式電腦[4],它在紙帶上儲存24位元指令、在機電計數器上儲存資料。早期機型將資料記憶體整個包含在中央記憶體中,並且無法以資料的形式取得指令儲存。程式需要由操作員載入,處理器也不能將自身初始化。然而,在唯一經由同行評議的相關論文——出版於IEEE計算史年鑑的《哈佛架構的迷思》[5]中,作者卻這樣闡釋:
「在微控制器設計領域,『哈佛架構』這一名詞在數十年後才被創造」且僅僅是「追加給哈佛電腦,隨後又將獨立快取的RISC微處理器冠以此名」
「所謂的『哈佛』與『馮諾伊曼』架構經常被描繪為對立的;但許多冠以前者之名的裝置上,與後者(馮諾伊曼架構)擁有的相似點遠多於這兩個架構的共通點」
「總而言之,它(哈佛架構)並不是一個架構,並且它並不誕生自哈佛大學的研究工作」
在Harvald I型工作時,中央處理器首先到程式指令儲存器中讀取程式指令內容,解碼後得到資料位址,再到相應的資料儲存器中讀取資料,並進行下一步的操作(通常是執行)。程式指令儲存和資料儲存分開,資料和指令的儲存可以同時進行,可以使指令和資料有不同的資料寬度,如Microchip公司的PIC16晶片的程式指令是14位元寬度,而資料是8位元寬度。程式需要由操作者載入;處理器無法自行初始化。
如今,大多數處理器由於效能原因實現了這種獨立訊號通路的結構,但實際上大多是應用了改進的哈佛結構,所以它們可以支援從磁碟將一個程式作為資料載入並執行的任務。
哈佛架構的微處理器通常具有較高的執行效率。其程式指令和資料指令分開組織和儲存的,執行時可以預先讀取下一條指令。
目前使用哈佛架構的中央處理器和微控制器有很多,除了上面提到的Microchip公司的PIC系列晶片,還有摩托羅拉公司的MC68系列、Zilog公司的Z8系列、Atmel公司的AVR系列和安謀公司的ARM9、ARM10和ARM11。
主記憶體的詳細資訊
編輯在哈佛架構,兩個暫存器不需要有共同的特徵。特別是,字寬、定時、實現技術和主記憶體位址都可以不同。在一些系統中,指令可以儲存在唯讀記憶體(ROM)中,而資料記憶體一般需要讀寫記憶體(RAM等)。在一些系統中,指令記憶體比資料記憶體多,因此指令位址比資料位址更寬。
與馮諾伊曼架構的對比
編輯純馮諾伊曼架構下的CPU可以讀取指令或讀/寫主記憶體資料,它們都不能使指令和資料同時使用同一個的匯流排系統。使用哈佛結構的電腦中CPU,即使沒有快取的情況下也可以在讀取指令的同時進行資料訪問。由於指令和資料訪問不使用同一個主記憶體通道,因此哈佛結構的電腦可以在相同的電路複雜度下有更好的表現。
同時,哈佛架構機擁有不同的代碼和資料的位址空間:指令的零位址和資料的零位址是不同的。指令的零位址可能是二十四位的值,而資料的零位址可能是一個八位位元組,而非二十四位值的一部分。
與改進的哈佛架構的對比
編輯改進的哈佛架構機與原來的哈佛架構機並無兩樣,但它鬆綁了指令和資料之間嚴格分離的這一特徵,仍然允許CPU同時訪問兩個(或更多)主記憶體匯流排。最常見的修改包括由公共位址空間支援的單獨指令和資料快取。當它作為一個純粹的哈佛機時,CPU通過快取來執行指令。當訪問外部記憶體時,它的作用就像一個馮·諾依曼機(代碼可以像資料一樣移動,像是一個功能強大的技能)。這一改良在現代處理器是普遍存在的,例如ARM體系結構、Power Architecture和x86處理器。它有時被稱為哈佛架構,忽略了它實際上被「修改」的事實。
另一種修改提供了指令記憶體(例如ROM或快閃記憶體)與CPU之間的通路,以允許來自指令記憶體的字被視為唯讀資料。該技術用於某些微控制器,包括Atmel的AVR。這允許訪問諸如文字字串或函式表之類的常數資料,而無需首先將其複製到資料記憶體中,從而為讀/寫變數保留稀缺(且耗電的)資料記憶體。特殊的機器語言指令提供了從指令記憶體中讀取資料的功能。(這是不同於指令本身嵌入常數的資料,雖然對於單個常數來說,兩種機制可以相互替代。)
速度
編輯近年來,CPU的速度已經提速了許多次以同步主記憶體的存取速度。要注意減少主記憶體訪問次數的數量以保持效能。例如,每一個指令在CPU執行需要訪問主記憶體,增加電腦CPU沒有任何速度提升的問題叫做主記憶體限制。可能使主記憶體非常快,但由於主記憶體成本,電源和訊號路由的原因這類主記憶體數目很少。解決的辦法是提供少量的快速記憶體稱為CPU快取以存放最近訪問過的資料。CPU提取快取中的資料速度要比快取提取主要暫存器資料的速度更快。
內部與外部的設計
編輯現代高效能CPU晶片在設計上包含了哈佛和馮諾伊曼結構的特點。特別是,「拆分快取」這種改進型的哈佛架構版本是很常見的。 CPU的快取分為指令快取和資料快取。CPU訪問快取時使用哈佛體系結構。然而當快取未命中時,資料從主記憶體中檢索,卻並不分為獨立的指令和資料部分,雖然它有獨立的主記憶體控制器用於訪問RAM,ROM和(NOR)快閃記憶體。 因此,在一些情況下可以看到馮諾伊曼架構,比如當資料和代碼通過相同的主記憶體控制器時,這種硬體通過哈佛架構在快取訪問或至少主主記憶體訪問方面提高了執行效率。 此外,在寫非快取區之後,CPU經常擁有寫快取使CPU可以繼續執行。當指令被CPU當作資料寫入,且軟體必須確保在試圖執行這些剛寫入的指令之前,快取(指令和資料)和寫快取是同步的,這時馮諾伊曼結構的主記憶體特點就出現了。
哈佛結構的現代應用
編輯純粹的哈佛架構同時訪問多個儲存系統的主要優點是由哈佛處理器利用現代CPU快取系統。相對純的哈佛架構機主要用於在應用中的取捨,就像忽略快取的成本和節省功率,大於編程在不同的代碼和資料的位址空間的不利。
- 數位訊號處理器(DSPs) 一般執行少,高度最佳化的音訊或影片處理演算法。他們避免快取,因為他們的行為必須非常重現。應對多位址空間的困難,執行速度是次要的問題。因此,一些DSP功能在不同的位址空間的多個資料記憶體便於SIMD和VLIW處理。德克薩斯儀器TMS320 C55x處理器,具有多個並列資料匯流排(雙寫,三讀)和指令匯流排。
- 微控制器的特點是具有少量的程式(快閃記憶體)、資料記憶體(SRAM),沒有快取,並利用哈佛架構的並列高速處理指令和資料的訪問。分開儲存的程式和資料記憶體可能具有不同的位寬,例如使用16位元指令和8位元寬的資料。這也意味著指令預取可以與其他活動同時進行。例子包括,Atmel的AVR和Microchip的 PIC。
即使在這種情況下,它是為了訪問程式記憶體唯讀表的資料使用特殊指令或重新編程;這些處理器是改進的哈佛架構的處理器。
參見
編輯- ^ Noergaard, Tammy. Embedded Systems Architecture: A Comprehensive Guide for Engineers and Programmers. Newnes. 2005. ISBN 978-0-7506-7792-9 (英語).
- ^ Kong, J. H.; Ang, L.-M.; Seng, K. P. Minimal Instruction Set AES Processor using Harvard Architecture. 2010 3rd International Conference on Computer Science and Information Technology (IEEE). 2010-07. doi:10.1109/iccsit.2010.5564522.
- ^ Venkatesan, Chandran; Sulthana, M. Thabsera; Sumithra, M. G.; Suriya, M. Design of a 16-Bit Harvard Structure RISC Processor in Cadence 45nm Technology. IEEE. 2019-03. ISBN 978-1-5386-9531-9. doi:10.1109/ICACCS.2019.8728479.
- ^ Furber, S. B. VLSI Risc Architecture and Organization. Routledge. 2017-09-19. ISBN 978-1-351-40537-9 (英語).
- ^ Pawson, Richard. The Myth of the Harvard Architecture. IEEE Annals of the History of Computing. 2022-07-01, 44 (3). ISSN 1058-6180. doi:10.1109/MAHC.2022.3175612.