哈佛體系結構是一種計算機體系結構,具有用於代碼和數據存儲器的獨立總線。該體系結構是指RAM或ROM中的代碼存儲器(用於微控制器)。當架構說代碼內存時,我感到困惑。據我所知,對於小規模嵌入式系統,代碼將始終從ROM執行,而在中規模和高級嵌入式系統中,代碼存儲器可以從ROM傳輸到RAM以加快執行速度。如果是這種情況,RAM連接兩條總線,一條用於代碼,另一條用於數據存儲器。任何人都可以幫助我理解這一點。哈佛體系結構中的代碼內存在哪裏引用?
回答
您可能希望看到這個 https://en.wikipedia.org/wiki/Modified_Harvard_architecture
我第一次碰到這個哈佛結構的事情是在太平洋島國來了,他們也有自己的RAM和ROM上的2個不同的地址空間分離。但似乎這不是唯一的辦法。關鍵是可以同時訪問代碼&。例如,將單個RAM存儲空間虛擬分區以單獨存儲代碼&數據,但可同時由處理器訪問。這不是一個純粹的哈佛架構系統,但足夠接近。
這就是世界通常的工作方式。學術界以外的真正的哈佛大學架構是不實際的,你不能擁有引導程序,操作系統等(因爲你必須做數據傳輸來將程序加載到指令空間,但它們在不同的總線上)。所以有些文件會說哈佛的意思是修改哈佛,真的不應該說什麼因爲它不相關,總線規格是總線規格,完成。 –
哈佛與RAM或ROM幾乎沒有關係 - 它只是說,原則上,指令讀取和數據讀取/寫入是通過單獨的總線完成的。
這只是意味着至少需要在指令存儲器總線上找到ROM(引導代碼) - 其餘的可以是RAM。非指令總線也可以訪問RAM或ROM - ROM可以保存常量數據。然而,在像AVR MCU這樣的「真正」實現中,指令總線尋址Flash ROM,而非指令總線(我故意不寫「數據總線」,這是不同的)尋址SRAM。你甚至不用AVR「看」這些總線 - 它們純粹是內部的大多數這些MCU。
哈佛大學建築大部分是學術活動。首先,你必須問他們如何確定四條巴士的拆分?一個由地址分裂的內部馮·諾曼?許多馮諾依曼實現,如果不是所有的按地址拆分,如果你畫一個更大的盒子,你會看到許多獨立的總線,有時數據和指令加入,有時不會。
因爲你不能使用純哈佛作爲引導程序或操作系統,它實際上只是一個心理練習。像馮·諾曼這樣的標籤,人們喜歡折騰如果沒有其他原因造成混亂。現實世界介於兩者之間。 AMBA/AXI和其他總線被標記爲修改哈佛,因爲它們標記數據和指令事務本身,但共享相同的總線(在這些總線上不存在單獨的總線,其中有單獨的讀取地址,讀取數據,寫入地址,寫入數據)。處理器在很長時間內並不是處理器和這些總線的瓶頸,因此您可以在同一組總線上有指令和數據以及外設的空間,特別是如果您將讀地址,讀數據,寫地址,將數據寫入單獨的總線,使用id標籤連接點和完成事務。
就像維基百科上提到的那樣,您真正要在真實世界中看到的最接近的就像是微控制器。而當他們談論內存時,真正意義上的地址空間在總線的另一端可能是sram,dram,flash,eeprom等或其組合。在任何一方,以及該巴士上的所有外圍設備。因此,在微控制器中,指令在此模型中處於閃存狀態,並且sram是數據,如果是純哈佛架構,則無法加載代碼以便在其中運行並執行代碼,同樣,您也不能使用數據總線來編程閃存或者爲了緩衝要刷新的數據,rom/flash通過在硬件體系結構路徑上未顯示的方式進行神奇加載。可能是I/O總線資源和指令總線資源之間的交叉,它們被稱爲修改哈佛。對於馮諾依曼,你有早期的地址解碼器,將總線分配爲指令,數據,I/O和子分區,可能數據和指令保持組合,但是你沒有一個純粹的單一總線結束。不實用。
看看維基百科上的圖片,瞭解一個人擁有單獨的公交車,而另一個公交車則與另一個公交車相結合。通過測試並忘記你不需要的術語後,他們並不真正相關。
- 1. 哪些體系結構是哈佛,哪些是馮諾依曼?
- 2. 哈佛體系結構計算機是否可以免受任意代碼注入和執行攻擊?
- 3. Swift的iOS代碼結構,所有代碼在哪裏?
- 4. 哈佛引用乳膠在r sweave
- 5. 在scrum過程中哪裏討論了編程體系結構?
- 6. g結構在golang源代碼中定義在哪裏?
- 7. 哪些代碼應該去哪裏在MVC結構
- 8. Spring Boot API Versioning(代碼體系結構)
- 9. 跨平臺C++代碼體系結構
- 10. javascript代碼體系結構問題
- 11. C++內存分配器體系結構
- 12. 位於應用程序體系結構中的微型orm工具在哪裏
- 13. 當我在GWT設置中使用Spring Roo時,MVC體系結構在哪裏?
- 14. 這個PHP代碼片段中的內存泄漏在哪裏?
- 15. 此代碼中的內存錯誤在哪裏?
- 16. 在結構體內使用結構體
- 17. 應用程序代碼中的DB訪問體系結構
- 18. 在哪裏存儲jQuery的html代碼?
- 19. 實體代碼第一,我的DB文件存儲在哪裏?
- 20. 所有Android源代碼都存儲在哪裏?內存?閃?
- 21. 在ASP MVC體系結構中正確放置代碼?
- 22. 如何以及在哪裏解決微服務體系結構中的外鍵
- 23. 在MVP(或任何體系結構)中,數據轉換髮生在哪裏?
- 24. 這個XAML代碼中的IsEmpty引用/成員在哪裏?
- 25. Symfony2:在哪裏存儲代碼顏色?
- 26. Sage在哪裏存儲代碼?
- 27. svn在哪裏存儲項目代碼?
- 28. 概述/瞭解Eclipse中的體系結構代碼
- 29. 示例代碼說明了iOS中的MVC體系結構
- 30. LLVM支持哪些ARM體系結構?
對於較大的系統,代碼和數據通常在同一個RAM中,術語「哈佛體系結構」有時用來表示它們被不同的管道和不同的緩存提取。通常會有一個仲裁器讓兩個子系統訪問單個外部存儲器總線。這樣做的實際重要性在於,在這些平臺上使用「自我修改」代碼(包括引導加載程序等)並不是一件簡單的事情:只要您想覆蓋您打算的代碼,就需要一系列特殊的緩存刷新操作執行。 – NickJH
感謝您的回覆尼克。馮諾依曼體系結構是將程序指令與這些指令操作的數據一起存儲在存儲器中的能力。這個內存是指RAM還是ROM? – user145485