微處理器的兩種結構比較

来源:https://www.cnblogs.com/wy9264/archive/2019/03/11/10513627.html
-Advertisement-
Play Games

微處理器的兩種結構比較 馮·諾依曼結構 VS 哈佛結構 1、馮·諾依曼結構 馮·諾依曼結構又稱作普林斯頓體繫結構(Princetionarchitecture)。 1945年,馮·諾依曼首先提出了“存儲程式”的概念和二進位原理,後來,人們把利用這種概念和原理設計的電子電腦系統統稱為“馮·諾依曼型結 ...


 微處理器的兩種結構比較

 馮·諾依曼結構 VS 哈佛結構

1、馮·諾依曼結構
  馮·諾依曼結構又稱作普林斯頓體繫結構(Princetionarchitecture)。
  1945年,馮·諾依曼首先提出了“存儲程式”的概念和二進位原理,後來,人們把利用這種概念和原理設計的電子電腦系統統稱為“馮·諾依曼型結構”電腦。馮·諾依曼結構的處理器使用同一個存儲器,經由同一個匯流排傳輸。
  馮·諾依曼結構處理器具有以下幾個特點:
  必須有一個存儲器;
  必須有一個控制器;
  必須有一個運算器,用於完成算術運算和邏輯運算;
  必須有輸入和輸出設備,用於進行人機通信。
  馮·諾依曼的主要貢獻就是提出並實現了“存儲程式”的概念。由於指令和數據都是二進位碼,指令和操作數的地址又密切相關,因此,當初選擇這種結構是自然的。但是,這種指令和數據共用同一匯流排的結構,使得信息流的傳輸成為限制電腦性能的瓶頸,影響了數據處理速度的提高。
  在典型情況下,完成一條指令需要3個步驟,即:取指令、指令解碼和執行指令。從指令流的定時關係也可看出馮·諾依曼結構與哈佛結構處理方式的差別。舉一個最簡單的對存儲器進行讀寫操作的指令,指令1至指令3均為存、取數指令,對馮·諾依曼結構處理器,由於取指令和存取數據要從同一個存儲空間存取,經由同一匯流排傳輸,因而它們無法重疊執行,只有一個完成後再進行下一個。
  arm7系列的CPU有很多款,其中部分CPU沒有內部cache的,比如arm7TDMI,就是純粹的馮·諾依曼結構,其他有內部cache且數據和指令的cache分離的cpu則使用了哈弗結構。

2、哈佛結構
  哈佛結構是一種將程式指令存儲和數據存儲分開的存儲器結構,如圖1所示。中央處理器首先到程式指令存儲器中讀取程式指令內容,解碼後得到數據地址,再到相應的數據存儲器中讀取數據,併進行下一步的操作(通常是執行)。程式指令存儲和數據存儲分開,可以使指令和數據有不同的數據寬度,如Microchip公司的PIC16晶元的程式指令是14位寬度,而數據是8位寬度。

 

 

               圖1 哈佛體繫結構框圖


  哈佛結構的微處理器通常具有較高的執行效率。其程式指令和數據指令分開組織和存儲的,執行時可以預先讀取下一條指令。
  目前使用哈佛結構的中央處理器和微控制器有很多,除了Microchip公司的PIC系列晶元,還有摩托羅拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11。
  哈佛結構是指程式和數據空間獨立的體繫結構, 目的是為了減輕程式運行時的訪存瓶頸。
  例如最常見的捲積運算中, 一條指令同時取兩個操作數, 在流水線處理時, 同時還有一個取指操作, 如果程式和數據通過一條匯流排訪問, 取指和取數必會產生衝突, 而這對大運算量的迴圈的執行效率是很不利的。
  哈佛結構能基本上解決取指和取數的衝突問題。
  而對另一個操作數的訪問, 就只能採用Enhanced哈佛結構了, 例如像TI那樣,數據區再split, 並多一組匯流排。 或向AD那樣,採用指令cache, 指令區可存放一部分數據。
  在典型情況下,完成一條指令需要3個步驟,即:取指令、指令解碼和執行指令。從指令流的定時關係也可看出馮·諾依曼結構與哈佛結構處理方式的差別。舉一個最簡單的對存儲器進行讀寫操作的指令,指令1至指令3均為存、取數指令,對馮·諾依曼結構處理器,由於取指令和存取數據要從同一個存儲空間存取,經由同一匯流排傳輸,因而它們無法重疊執行,只有一個完成後再進行下一個。
  如果採用哈佛結構處理以上同樣的3條存取數指令,由於取指令和存取數據分別經由不同的存儲空間和不同的匯流排,使得各條指令可以重疊執行,這樣,也就剋服了數據流傳輸的瓶頸,提高了運算速度。

3、馮·諾依曼體系和哈佛匯流排體系的區別
  二者的區別就是程式空間和數據空間是否是一體的。馮·諾依曼結構數據空間和地址空間不分開,哈佛結構數據空間和地址空間是分開的。
  早期的微處理器大多採用馮·諾依曼結構,典型代表是Intel公司的X86微處理器。取指和取操作數都在同一匯流排上,通過分時服用的方式進行的。缺點是在高速運行時,不能達到同時取指令和取操作數,從而形成了傳輸過程的瓶頸。
  哈佛匯流排技術應用是以DSP和ARM為代表的。採用哈佛匯流排體繫結構的晶元內部程式空間和數據空間是分開的,這就允許同時取指和取操作數,從而大大提高了運算能力。
  DSP晶元硬體結構有馮·諾依曼結構和哈佛結構,兩者區別是地址空間和數據空間分開與否。一般DSP都是採用改進型哈佛結構,就是分開的數據空間和地址空間都不只是一條,而是有多條,這根據不同的生產廠商的DSP晶元有所不同。在對外定址方面從邏輯上來說也是一樣,因為外部引腳的原因,一般來說都是通過相應的空間選取來實現的。本質上是同樣的道理。

 

4.改進型的哈佛結構 與 哈佛體繫結構差別

與馮.諾曼結構處理器比較,哈佛結構處理器有兩個明顯的特點:
(1).使用兩個獨立的存儲器模塊,分別存儲指令和數據,每個存儲模塊都不允許指令和數據並存;
(2).使用獨立的兩條匯流排,分別作為CPU與每個存儲器之間的專用通信路徑,而這兩條匯流排之間毫無關聯。

後來,又提出了改進的哈佛結構,其結構特點為:
(1).使用兩個獨立的存儲器模塊,分別存儲指令和數據,每個存儲模塊都不允許指令和數據並存;
(2).具有一條獨立的地址匯流排和一條獨立的數據匯流排,利用公用地址匯流排訪問兩個存儲模塊(程式存儲模塊和數據存儲模塊),公用數據匯流排則被用來完成程式存儲模塊或數據存儲模塊與CPU之間的數據傳輸;
(3).兩條匯流排由程式存儲器和數據存儲器分時共用。

 

5.總結

體繫結構與採用的獨立與否的匯流排無關,與指令空間和數據空間的分開獨立與否有關。51單片機雖然數據指令存儲區是分開的,但匯流排是分時復用得,所以屬於改進型的哈佛結構。ARM9雖然是哈佛結構,但是之前的版本(例如ARM7)也還是馮·諾依曼結構。早期的X86能迅速占有市場,一條很重要的原因,正是靠了馮·諾依曼這種實現簡單,成本低的匯流排結構。現在的處理器雖然外部匯流排上看是諾依曼結構的,但是由於內部CACHE的存在,因此實際上內部來看已經 類似 改進型哈佛結構的了。至於優缺點,哈佛結構就是複雜,對外圍設備的連接與處理要求高,十分不適合外圍存儲器的擴展。所以早期通用CPU難以採用這種結構。而單片機,由於內部集成了所需的存儲器,所以採用哈佛結構也未嘗不可。現在的處理器,依托CACHE的存在,已經很好的將二者統一起來了。
---------------------
作者:飛翔2017
來源:CSDN
原文:https://blog.csdn.net/feixiang_john/article/details/7925672
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、創建項目 1.創建一個.netframework的控制台項目命名為Crawler 2.安裝nuget包搜索名稱Ivony.Html.AIO,使用該類庫什麼方便類似jqury的選擇器可以根據類名或者元素類型來匹配元素,無需要寫正則表達式。 3.創建一個圖片類Image 一、抓取頁面圖片 1.拿到所 ...
  • 假設Node和npm已經安裝 npm install -g @servicestack/cli 執行命令dotnet-new selfhost SSHost 這樣就創建了ServiceStack的控制台程式,用VS2017解決方案,添加如下代碼 項目SSHost里添加配置文件appsettings. ...
  • 上一篇咱們提到了在macOS下選進行開發。咱們已經把工具準備完成了。現在咱們做一個簡單的DEMO創建WEB程式之前咱們已經創建過WEB程式,並且成功的運行過數據現在咱們創建一個頁面,並顯示出來。在咱們的系統中,最常見的應該是Grid列表。下麵咱們創建一個列表界面Grid列表首先創建一個Model一... ...
  • 我基本上從0開始學習編程,運算符基本上跳過,因為知道了 “=”這個符號相當於賦值,然後“==”才是等於,其他和普通運算符號差不都,也就跳過了。 最基礎的賦值那種,我看了下代碼,似乎沒什麼難度,估計新手和我一樣,有一本書,大概看看就懂了,我從我遇到的問題開始。 我學習時候,發現C#接收用戶輸入的都是字 ...
  • 創建一個 swarm 服務: docker swarm init --listen-addr ip:port (default ) 查看加入 swarm 服務的命令: docker swarm join-token [worker|manager] 查看 swarm 節點命令:只能在manager上 ...
  • 0x00 背景最近公司的舊群暉伺服器Raid6,因為同時壞了兩塊硬碟存儲池損毀,所以領導決定買了Dell R730自己搭NAS,選來選去最後選了FreeNAS,這裡記錄一些踩過的坑。0x01 問題:“No Systemdisk”用UltraISO和FreeNas官網下的iso鏡像製作啟動盤後,出現“... ...
  • 轉載:https://www.cnblogs.com/little-white/p/3236548.html 一、大端模式和小端模式的起源 關於大端小端名詞的由來,有一個有趣的故事,來自於Jonathan Swift的《格利佛游記》:Lilliput和Blefuscu這兩個強國在過去的36個月中一直 ...
  • 1)介面區別:NOR FLASH地址線和數據線分開,來了地址和控制信號,數據就出來。NAND Flash地址線和數據線在一起,需要用程式來控制,才能出數據。通俗的說,就是光給地址不行,要先命令,再給地址,才能讀到NAND的數據。而且都是在一個匯流排完成的。結論是:ARM無法從NAND直接啟動。除非裝載 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...