1. 程式人生 > >ARM體系結構(一)

ARM體系結構(一)

ARM體系結構第一篇,主要是一些概念性的東西,需要仔細理解。

  1. 可程式設計器的程式設計特點和原理
    1. 在固定頻率的時鐘控制下有節奏的執行
    2. 可以通過匯流排獲取外部儲存中的二進位制指令,從而解碼執行
    3. 這些二進位制指令是CPU設計的時候決定的,由CPU的設計者定義,這就是CPU彙編指令集
  2. CPU的指令集
    1. 指令集就是ARM彙編指令集
    2. 組合語言相對C等高階語言比較複雜,且移植性差,不適合較大型的專案,但是組合語言效率高
    3. 組合語言的本質就是機器指令的助記符,是一種低階符號語言,我們常見的ABI就指的是機器指令的介面,我們就是通過這些ABI來呼叫CPU的機器指令介面
  3. RISC與CISC
    1. CISC又稱複雜指令集,設計的理念是使用最少的指令來完成任務,因此CISC設計複雜,工藝複雜,但是CISC的編譯器好設計,CISC指令出現比較早,並且一直沿用至今
    2. CISC的功能擴充套件依賴於指令集的擴充套件。是CPU內部邏輯組合電路的擴充套件
    3. RISC叫做精簡指令集,設計的理念是讓軟體來完成任務,CPU僅提供基本指令集,因此RISC僅有很少的指令,相對於CISC,設計和工藝簡單,但是編譯器的設計變的困難了,功能的擴充套件由使用CPU的人利用基礎架構來靈活實現
  4. 記憶體編址與CPU結構
    1. 記憶體IO編址分為同一編址與獨立編址
    2. CPU通過地址匯流排定址定位,通過資料匯流排進行讀寫,CPU的地址匯流排在CPU設計時就已經確定了所以一款CPU的定址範圍是一定的,而記憶體是需要佔用CPU的定址範圍的,
    3. IO的訪問方式有兩種,
      1. 一種是類似於記憶體的訪問方式,把外設的暫存器當做記憶體來操作,叫做IO與記憶體統一編址,這樣程式設計簡單,但是需要佔用一定的CPU地址空間
      2. 另外一種是隻用專用的CPU指令來訪問特定外設,叫做CPU與IO獨立編址,這種編址方式不佔用CPU地址空間,但是程式設計複雜
    4. 程式和資料都放在記憶體中,且彼此不分離的結構成為馮諾依曼結構,例如Intel的CISC,這種結構處理起來比較簡單,但是會影響安全和穩定性
    5. 程式和資料分開獨立放在不同的記憶體位置中,稱為哈佛結構例如ARM的CPU,程式一般放在ROM或者Flash中,資料放在RAM中,所以安全和穩定性高,缺點是需要統一規劃連結地址,處理起來比較複雜
  5. 暫存器
    1. 暫存器屬於CPU外設的硬體組成部分,CPU可以像訪問記憶體一樣訪問暫存器 ,暫存器是CPU的硬體設計者決定的,是留作外設被程式設計控制的”活動開關”
    2. 暫存器是外設硬體的軟體程式設計介面API,使用軟體程式設計控制某個硬體,其實就是讀寫該硬體的暫存器
    3. 程式設計操作暫存器類似於訪問記憶體,暫存器的每一位都有特定的含義,因此程式設計操作需要位操作,單個暫存器的位寬一般和CPU的位寬保持一致,以實現最佳訪問效率
    4. 暫存器一般分為通用暫存器與特殊功能暫存器SFR
    5. 通用暫存器是CPU的組成部分,CPU的很多功能需要通用暫存器參與
    6. SFR存在於CPU的外設中,我們通過訪問外設的SFR來操作該外設,這就是程式設計控制硬體
  6. ARM的CPU架構
    1. ARM屬於RISC架構
    2. 常用的ARM彙編指令只有二三十條
    3. ARM屬於低功耗CPU
    4. ARM架構適用於微控制器,嵌入式
    5. ARM是統一編址的,通過訪問外設的SFR暫存器,以類似於訪問記憶體的方式來訪問外設
    6. ARM屬於哈佛結構,保證了穩定性和安全性,但是ARM裸機程式使用了實體地址,所以連結起來比較麻煩,必須使用複雜的連結指令碼顯示的告訴連結器如何組織程式,但是,對於工作在虛擬地址的OS之上的程式,則不需要考慮這麼多

相關推薦

ARM體系結構()

ARM體系結構第一篇,主要是一些概念性的東西,需要仔細理解。 可程式設計器的程式設計特點和原理 在固定頻率的時鐘控制下有節奏的執行 可以通過匯流排獲取外部儲存中的二進位制指令,從而解碼執行 這些二

ARM體系結構總結

匯編指令集 cpu架構1. 匯編指令集 對於不同CPU的指令集則代表著CPU各自不同的編程特征,而CPU內部電路的設計是為了實現這些指令集的具體功能。2. CISC和RISC架構的區別 CISC,復雜指令集CPU,其設計的理念就是使用最少的指令來實現功能,所以CPU本身的設計就很復雜,其典型代表Inte

嵌入式開發學習(1)<ARM體系結構>

特點 如何 現在 訪問 任務 物聯網 嵌入 專用 arm1 SoC : 在cpu 裏內嵌了很多外設,現在所說的cpu 實際上都是SoC。 32位cpu指的是數據總線是32位的。 32位的地址總線尋址範圍是4G。2的32次方。 CISC complex instruction

ARM體系結構與程式設計學習筆記3

第三章 ARM指令集介紹 ARM的指令集可以分為6類,即跳轉指令,資料處理指令,程式狀態暫存器,Load/Store指令,協處理器指令,和異常中斷產生指令。 1:跳轉指令: 長跳轉: 直接向PC暫存器中寫入目標地址值可以實現4G地址空間的任意跳轉。MOV LR,PC 1:B:跳轉指令 2;B

ARM體系結構與程式設計學習筆記2

1:ARM指令分類 1:ARM指令集可以分為跳轉指令,資料處理指令,程式狀態暫存器(PSR)傳輸指令,load/Store指令,協處理指令和異常中斷產生指令 2:ARM指令集字長為固定的32位,一條典型的ARM指令編碼格式如下 opcode:指令助記符; 如ADD表示演算法加操作指令 c

ARM體系結構與程式設計學習筆記1

第一章 ARM概述與其基本程式設計模型 一、ARM資料型別 1、字(Word):在ARM體系結構中,字的長度為32位。 2、半字(Half-Word):在ARM體系結構中,半字的長度為16位。 3、位元組(Byte):在ARM體系結構中,位元組的長度為8位。 二、ARM處理器儲存

ARM體系結構與程式設計模型總結

ARM體系結構與程式設計模型 這裡寫圖片描述 ARM體系結構 一、ARM處理器簡介及RISC特點 ARM處理器簡介 ARM(Advanced RISC Machines)是一個32位RISC(精簡指令集)處理器架構,ARM處理器則是ARM架構下的微處理器。ARM處理器廣泛

ARM體系結構的相關硬體知識

1. ## 1.可程式設計器件的特點: CPU在固定頻率的時鐘控制下節奏性的執行,通過匯流排讀取外部儲存裝置中的二進位制指令集,然後解碼執行。 CPU機械型的進行:讀取 解碼 執行迴圈操作。 CPU的彙編指令就是可以被CPU解碼執行的二進位制

ARM裸機全集之ARM體系結構(學習筆記)

ARM體系結構與彙編指令 1.2.1 可程式設計器件的程式設計原理 1.2.1.1 電子器件的發展方向模擬器件-數字器件ASIC-可程式設計器件 1.2.1.2.可程式設計期間的特點CPU在固定頻率的

ARM體系結構中原子操作 ATOMIC 的實現

關於整數 的原子操作,對於Atomic_t型別,一直以來,記得書上說的都是要不CPU體系結構本身支援簡單的原子操作,要不提供了鎖記憶體匯流排功能,可以在操作期間,防止對資料的訪問發生。 今天突然想到,ARM架構本身不提供鎖記憶體匯流排功能,也沒有類似的原子操作的指令,那麼如何

【嵌入式Linux+ARMARM體系結構與程式設計(ARM概述)

ARM體系結構與程式設計 本文章記錄一些看《ARM體系結構與程式設計》這一本書的記錄; 個人覺得,學習ARM體系時,不需要死記硬背,只要把某些關鍵的大致記住,比如ARM暫存器(通用暫存器、PC、LR、

ARM體系結構(二)

ARM體系結構第二篇,主要理解CPU的記憶體介面,ARM啟動過程。 記憶體對映 S5PV210屬於Cortex-A8架構,有32位地址線和32位資料線,所以CPU的地址空間為4G,但是由於使用了統一編址,外設佔用了一部分地址空間,實際供記憶體使用的地

arm體系結構學習筆記 part1--處理器模式與暫存器

先來看看arm920t的處理器的七種模式: ARM920T supports seven modes of operation: · User (usr): The normal ARM program execution state · FIQ (fiq): Design

RISC處理器設計()------體系結構的選擇

這樣的 靈活高效 讀取 post 不同 內核 分配 選擇 模式 RISC處理器指令和變量數目非常少但結構復雜,因此RISC處理器可實現更高的並行性。本文設計的RISC處理機的特點如下: (1)指令簡單且數量較少 通過對程序的靜態指令進行靜態分析,最終只將最常見的指令在RIS

Oracle 數據庫 體系結構):存儲結構

意思 文件備份 觸發 歷史 tex 至少 設置 ctu 歷史記錄 目錄 為什麽要學習體系結構? 體系結構的定義 Oracle 物理結構 Oracle 邏輯結構 總結 為什麽要學習體系結構? 之前的文章有講解到 MySQL 、MongoDB 數據庫,這些數據庫我們

:.NET的體系結構

C#和.NET關係 C#語言不能孤立使用,必須和.NET Framework一起。C#編譯器基於.NE。也就是說C#所有程式碼總是使用.NET Framework執行 C#是一門專門為.NET Framework使用而設計的。 C#是一種基於現代面向物件設計的語言。 公共語言執行庫 .NET的核心是

Oracle 資料庫 體系結構):儲存結構

目錄 為什麼要學習體系結構? 體系結構的定義 Oracle 物理結構 Oracle 邏輯結構 總結 為什麼要學習體系結構? 之前的文章有講解到 MySQL 、MongoDB 資料庫,這些資料庫我們安裝好了就能拿來用,比如直接可以做一些:增、刪、改

)STL體系結構基礎介紹

  一、STL六大部件   容器(Containers):存放元素,記憶體由分配器搞定   分配器(Allocator):支援容器的記憶體分配   演算法:操作容器元素的函式。與OO不同(面向物件將元素與函式放到一個類裡),GP(模板程式設計)將資料放入容器,操作方法放入演算法中。   迭

GDB體系結構介紹(

GNU偵錯程式GDB是最早為自由軟體基金會編寫的程式之一,從那以後它一直是免費和開源軟體系統的主要部分。它最初設計為普通的Unix原始碼級偵錯程式,後來擴充套件到廣泛的用途,包括與許多嵌入式系統一起使用,並且從幾千行C增加到超過五十萬。 本章將深入研究GDB的整體內部結構,展示隨著新使用者需求和新功

、JAVA體系結構

本文參考資料: 深入理解JAVA虛擬機器:JVM高階特性與最佳實踐/周志明著 JAVA虛擬機器精講/高翔龍編著 我們這裡所提到的JAVA不僅僅代表JAVA這個程式語言,而是一套強大的技術體系平臺。 JAVA被分為3種結構獨立但又彼此依賴的技術體系分支:Java SE(標準版)、Java