爲什麼在設計個人電腦時,基於馮諾依曼體系結構的計算機體系結構優於哈佛體系結構;而哈佛架構用於設計基於微機的計算機系統和基於DSP的計算機系統?von neumann vs harvard architecture
8
A
回答
10
目前用於PC的CPU設計同時具有哈佛和馮諾依曼元素(,更多馮諾依曼,儘管)。
如果你看看L1緩存,你會發現在AMD,ARM和Intel系統中有指令L1緩存和數據L1緩存,可以獨立並行訪問。這是哈佛部分。但是,在L2,L3或DRAM中,數據和代碼是混合的。這是馮諾伊曼部分。
那麼爲什麼不是採用PC的純哈佛架構?我的意見是它沒有意義。如果您對大多數應用程序進行概要分析,您會發現L1指令緩存未命中率非常小,爲。這意味着通常代碼大小不是問題。因此,爲代碼設計一個完全獨立的路徑是沒有意義的。數據可能變得非常大,但代碼不能真正。
在DSP中,使用單獨的代碼和數據路徑是有意義的。這是因爲DSP的工作主要是「流數據」,這意味着對緩存的需求相當小。此外,DSP代碼可以包含增加代碼大小的預先計算的係數。所以在數據大小和代碼大小之間取得平衡,這意味着使用哈佛架構是有意義的。
4
馮諾依曼體系結構和哈佛體系結構之間的根本區別在於,在哈佛體系結構中,指令存儲器與數據存儲器不同,在馮諾依曼中它們是相同的。這反映了PC的實際情況(其中程序存儲和讀取來自同一介質的數據,通常是磁盤和RAM)以及微控制器(其中程序存儲在非易失性存儲器中,數據存儲在易失性存儲器中)。
相關問題
- 1. Hortonworks vs Cloudera Architecture Difference
- 2. 如何使用von Neumann鄰域在3D空間中設置索引?
- 3. asp.net中的Connected vs Disconnected Architecture
- 4. CLRMD Architecture MisMatch
- 5. Android Clean Architecture
- 6. win forms architecture c#
- 7. SSAS Dimension architecture
- 8. Domain-Event-Driven Architecture
- 9. 創建通用靜態庫時使用lipo vs「valid architecture」
- 10. Neumann的隨機生成器 - Python 3
- 11. S#arp Architecture + NHibernate.Search + DocumentId
- 12. Ubuntu:dpkg --add-architecture i386拋出錯誤--add-architecture未知選項
- 13. Flux Architecture如何比MVC更好
- 14. T4 for Sharp Architecture/Northwind問題
- 15. 在Clean Architecture中使用NSFetchedResultsController
- 16. S#arp Architecture + SharpModelBinder with custom repository
- 17. 如何尊重Android Clean Architecture
- 18. 更新命令-architecture問題
- 19. Flux Architecture中的測試店
- 20. PHP/nginx瀏覽器差異:下載文件「Architecture 8th Edition.pdf」as「Architecture%208th%20Edition.pdf」
- 21. Wordpress - Harvard Gazette - 他們是怎麼做X的?
- 22. 如何使用Ajax從Harvard GSD獲取壓光機?
- 23. 從文本文件創建Python字典
- 24. 在黃瓜html-head中搜索von字符串
- 25. 字體「Herr Von Muellerhoff Regular」被截斷(Slider Revolution - Wordpress)
- 26. OpenStack Grizzly Architecture中的消息隊列
- 27. Sharp Architecture Repository中的實體驗證
- 28. 使用Android Architecture組件查詢MediaStore.Audio.Media?
- 29. S#arp Architecture Repository.DbContext.CommitTransaction()不尋常的行爲
- 30. 製作WCF Northwind Sharp Architecture作品
*純粹*哈佛將意味着單獨的RAM(或ROM),而不僅僅是分割高速緩存。因此,您剛編譯的代碼可能必須從數據存儲器寫入磁盤,並從磁盤重新加載到程序存儲器中。只有當代碼是固定的,並在ROM中才有意義。 (即便如此,正如你指出的那樣,統一緩存在L1之前是有意義的)。拆分緩存的部分原因是吞吐量/延遲:您無法構建與兩個單獨的32k緩存的總吞吐量一樣快的64k緩存。 [也見這個答案](http://stackoverflow.com/a/38549736/224132)關於小緩存的速度技巧。 – 2016-09-21 01:37:18