99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ARM體系結(jié)構(gòu)與編程模型的總結(jié)

Q4MP_gh_c472c21 ? 來源:未知 ? 作者:李倩 ? 2018-03-13 15:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、ARM處理器簡介及RISC特點

ARM處理器簡介

ARM(Advanced RISC Machines)是一個32位RISC(精簡指令集)處理器架構(gòu),ARM處理器則是ARM架構(gòu)下的微處理器。ARM處理器廣泛的使用在許多嵌入式系統(tǒng)。ARM處理器的特點有指令長度固定,執(zhí)行效率高,低成本等。

RISC設計主要特點

1、指令集——RISC減少了指令集的種類,通常一個周期一條指令,采用固定長度的指令格式,編譯器或程序員通過幾條指令完成一個復雜的操作。而CISC指令集的指令長度通常不固定。

2、流水線——RISC采用單周期指令,且指令長度固定,便于流水線操作執(zhí)行。

3、寄存器——RISC的處理器擁有更多的通用寄存器,寄存器操作較多。例如ARM處理器具有37個寄存器。

4、Load/Store結(jié)構(gòu)——使用加載/存儲指令批量從內(nèi)存中讀寫數(shù)據(jù),提高數(shù)據(jù)的傳輸效率。

5、尋址方式簡化,指令長度固定,指令格式和尋址方式種類減少。

二、ARM指令集特點

ARM處理器是基于RISC的,但不是純粹的RISC體系結(jié)構(gòu)。為了使ARM處理器能夠更好的滿足嵌入式系統(tǒng)的需要,ARM指令集和單純的RISC指令集有以下幾點不同:

1、一些特定的指令周期數(shù)可變。例如多寄存器裝載或存儲的Load/Store指令執(zhí)行周期就是不確定的,這個會根據(jù)相關(guān)的寄存器個數(shù)而定。如果是訪問連續(xù)的內(nèi)存地址,就可以改善性能,因為連續(xù)的內(nèi)存訪問比隨機訪問要快。根據(jù)這個特點,由于在函數(shù)的起始和結(jié)尾通常會有多個寄存器與內(nèi)存進行數(shù)據(jù)交換的操作,因此相應操作的指令條數(shù)會減少,提高了代碼的密度。

2、內(nèi)嵌的桶形移位寄存器產(chǎn)生了更復雜的指令。桶形移位寄存器是一個硬件部件,在一個寄存器被一條指令使用之前,桶形移位寄存器可以處理這個寄存器中的數(shù)據(jù)。桶形移位寄存器擴展了許多指令的功能,以此改善內(nèi)核的性能,提高代碼密度。

3、Thumb16位指令集。ARM處理器有兩種工作狀態(tài),一種是ARM狀態(tài),一種是Thumb狀態(tài)。ARM狀態(tài)下指令長度為32位,Thumb狀態(tài)下指令長度為16位。這種特點使得ARM既能執(zhí)行16位指令,又能執(zhí)行32位指令,從而增強了ARM內(nèi)核的功能。

4、條件執(zhí)行。只有當某個特定條件滿足時指令才會被執(zhí)行。這個特性可以減少分支指令的數(shù)目,從而改善性能,提高代碼密度。

5、增強指令。一些功能強大的數(shù)字信號處理器(DSP)指令被加入到標準的ARM指令中,以支持快速的16*16乘法操作及飽和運算。ARM的這些增強指令,使得ARM處理器不需要加上DSP即可實現(xiàn)。

三、ARM處理器特點

1、ARM指令都是32位定長的

2、寄存器數(shù)量豐富(37個寄存器)

3、普通的Load/Store指令

4、多寄存器的Load/Store指令

5、指令的條件執(zhí)行

6、單時鐘周期中的單條指令完成數(shù)據(jù)移位操作和ALU操作

7、通過變種和協(xié)處理器來擴展ARM處理器的功能

8、擴展了16位的Thumb指令來提高代碼密度

四、ARM處理器命名規(guī)則

ARM編程模型

一、ARM數(shù)據(jù)類型

1、字(Word):在ARM體系結(jié)構(gòu)中,字的長度為32位。

2、半字(Half-Word):在ARM體系結(jié)構(gòu)中,半字的長度為16位。

3、字節(jié)(Byte):在ARM體系結(jié)構(gòu)中,字節(jié)的長度為8位。

二、ARM處理器存儲格式

ARM體系結(jié)構(gòu)將存儲器看作是從0地址開始的字節(jié)的線性組合。作為32位的微處理器,ARM體系結(jié)構(gòu)所支持的最大尋址空間為4GB。

ARM體系結(jié)構(gòu)可以用兩種方法存儲字數(shù)據(jù),分別為大端模式和小端模式。

大端模式(高地高低):字的高字節(jié)存儲在低地址字節(jié)單元中,字的低字節(jié)存儲在高地址字節(jié)單元中。

小端模式(高高低低):字的高字節(jié)存儲在高地址字節(jié)單元中,字的低字節(jié)存儲在低地址字節(jié)單元中。

三、ARM處理器工作狀態(tài)

從編程的角度來看,ARM微處理器的工作狀態(tài)一般ARM和Thumb有兩種,并可在兩種狀態(tài)之間切換。

1、ARM狀態(tài):此時處理器執(zhí)行32位的字對齊ARM指令,絕大部分工作在此狀態(tài)。

2、Thumb狀態(tài):此時處理器執(zhí)行16位的半字對齊的Thumb指令。

四、ARM處理器工作模式

1、用戶模式(usr,User Mode):ARM處理器正常的程序執(zhí)行狀態(tài)。

2、快速中斷模式(fiq,F(xiàn)ast Interrupt Request Mode):用于高速數(shù)據(jù)傳輸或通道處理。當觸發(fā)快速中斷時進入此模式。

3、外部中斷模式(irq,Interrupt Request Mode):用于通用的中斷處理。當觸發(fā)外部中斷時進入此模式。

4、管理模式(svc,Supervisor Mode):操作系統(tǒng)使用的保護模式。在系統(tǒng)復位或執(zhí)行軟件中斷指令SWI時進入。

5、數(shù)據(jù)訪問中止模式(abt,Abort Mode):當數(shù)據(jù)或指令預取中止時進入該模式,可用于虛擬存儲及存儲保護。

6、系統(tǒng)模式(sys,System Mode):運行具有特權(quán)的操作系統(tǒng)任務。

7、未定義指令中止模式(und,Undefined Mode):當未定義的指令執(zhí)行時進入該模式,可用于支持硬件協(xié)處理器的軟件仿真。

除了用戶模式之外,其余六種模式都是特權(quán)模式。除了用戶模式和系統(tǒng)模式之外,其余五種模式都是異常模式。

在特權(quán)模式下程序可以訪問所有的系統(tǒng)資源。非特權(quán)模式和特權(quán)模式之間的區(qū)別在于有些操作只能在特權(quán)模式下才被允許,例如直接改變模式和中斷使能等。而且為了保證數(shù)據(jù)安全,一般MMU會對地址空間進行劃分,只有特權(quán)模式才能訪問所有的地址空間。而用戶模式如果需要訪問硬件,必須切換到特權(quán)模式下,才允許訪問硬件。

五、ARM處理器寄存器組織

ARM共有37個32位寄存器,其中31個為通用寄存器,6個為狀態(tài)寄存器,包括R0-R15,R8_fiq-R14_fiq,R13_svc,R14_svc,R13_abt,R14_abt,R13_irq,R14_irq,R13_und,R14_und,CPSR,SPSR_fiq,SPSR_svc,SPSR_abt,SPSR_irq,SPSR_und。如圖。

通用寄存器包括R0-R15,可以分為3類:

1、未分組寄存器R0-R7

在所有運行模式下,未分組寄存器都指向同一個物理寄存器,他們未被系統(tǒng)用作特殊的用途。因此在中斷或異常處理進行異常模式轉(zhuǎn)換時,由于不同的處理器運行模式均使用相同的物理寄存器,所以可能造成寄存器中數(shù)據(jù)的破壞。

2、分組寄存器R8-R14

對于分組寄存器,他們每次所訪問的物理寄存器都與當前的處理器運行模式相關(guān)。具體如上圖。

R13常用作存放堆棧指針,用戶也可以使用其他寄存器存放堆棧指針,但在Thumb指令集下,某些指令強制要求使用R13存放堆棧指針。

R14稱為鏈接寄存器(LR,Link Register),當執(zhí)行子程序時,R14可得到R15(PC)的備份,執(zhí)行完子程序后,又將R14的值復制回PC,即使用R14保存返回地址。

3、程序計數(shù)器PC(R15)

寄存器R15用作程序計數(shù)器(PC),在ARM狀態(tài)下,位[1:0]為0,位[31:2]用于保存PC;在Thumb狀態(tài)下,位[0]為0,位[31:1]用于保存PC。

由于ARM體系結(jié)構(gòu)采用了多級流水線技術(shù),對于ARM指令集而言,PC總是指向當前指令的下兩條指令的地址,即PC的值為當前指令的地址值加8個字節(jié)。

六、程序狀態(tài)寄存器CPSR和SPSR

CPSR(Current Program Status Register,當前程序狀態(tài)寄存器),CPSR可在任何運行模式下被訪問,它包括條件標志位、中斷禁止位、當前處理器模式標志位以及其他一些相關(guān)的控制和狀態(tài)位。

每一種運行模式下都有一個專用的物理狀態(tài)寄存器,稱為SPSR(Saved Program Status Register,備份的程序狀態(tài)寄存器),當異常發(fā)生時,SPSR用于保存當前CPSR的值,從異常退出時則可由SPSR來恢復CPSR。

由于用戶模式和系統(tǒng)模式不屬于異常模式,這兩種狀態(tài)下沒有SPSR,因此在這兩種狀態(tài)下訪問SPSR,結(jié)果是未知的。

CPSR保存數(shù)據(jù)的結(jié)構(gòu):

1、N(Negative):當用兩個補碼表示的帶符號數(shù)進行運算時,N=1表示結(jié)果為負,N=0表示結(jié)果為正數(shù)或零

2、Z(Zero):Z=1表示運算結(jié)果為0,Z=0表示運算結(jié)果非零

3、C(Carry):有4種方法可以設置C的值:

(1)加法指令(包括比較指令CMP)

(2)當運算產(chǎn)生進位時(無符號數(shù)溢出),C=1,否則C=0

(3)減法運算(包括比較指令CMP)

(4)當運算產(chǎn)生了借位(無符號數(shù)溢出),C=0,否則C=1

對于包含移位操作的非加/減運算指令,C為移出值的最后一位。對于其他的非加/減運算指令,C的值通常不變。

4、V(Overflow):有2種方法設置V的值:

(1)對于加/減法運算指令,當操作數(shù)和運算結(jié)果為二進制的補碼表示的帶符號數(shù)時,V=1表示符號位溢出。

(2)對于其他的非加減法運算指令,V的值通常不變。

5、I(Interrupt Request):I=1表示禁止響應irq,I=0表示允許響應

6、F(Fast Interrupt Request):F=1表示禁止響應fiq,F(xiàn)=0表示允許響應

7、T(Thumb):T=0表示當前狀態(tài)位ARM狀態(tài),T=1表示為Thumb狀態(tài)

8、M4-M0:表示當前處理器的工作模式,如圖:

七、工作模式的切換

(1)執(zhí)行軟中斷(SWI)或復位命令(Reset)指令。如果在用戶模式下執(zhí)行SWI指令,CPU就進入管理(Supervisor)模式。當然,在其他模式下執(zhí)行SWI,也會進入該模式,不過一般操作系統(tǒng)不會這么做,因為除了用戶模式屬于非特權(quán)模式,其他模式都屬于特權(quán)模式。執(zhí)行SWI指令一般是為了訪問系統(tǒng)資源,而在特權(quán)模式下可以訪問所有的系統(tǒng)資源。SWI指令一般用來為操作系統(tǒng)提供API接口。

(2)有外部中斷發(fā)生。如果發(fā)生了外部中斷,CPU就會進入IRQ或FIQ模式。

(3)CPU執(zhí)行過程中產(chǎn)生異常。最典型的異常是由于MMU保護所引起的內(nèi)存訪問異常,此時CPU會切換到Abort模式。如果是無效指令,則會進入Undefined模式。

(4)有一種模式是CPU無法自動進入的,這種模式就是System模式,要進入System模式必須由程序員編寫指令來實現(xiàn)。要進入System模式只需改變CPSR的模式位為System模式對應的模式位即可。進入System模式一般是為了利用System模式和用戶模式下的寄存器相同的特點,因此一般情況下,操作系統(tǒng)在通過SWI進入Supervisor模式后,做一些操作后,就進入System模式。

(5)在任何特權(quán)模式下,都可以通過修改CPSR的MODE域來進入其他模式。不過需要注意的是由于修改的CPSR是該模式下的影子CPSR,即SPSR,因此并不是實際的CPSR,所以一般的做法是修改影子CPSR,然后執(zhí)行一個MOVS指令來恢復執(zhí)行某個斷點并切換到新模式。

推薦閱讀:

1.從一個不起眼的小公司逐漸成為半導體行業(yè)巨頭,Microchip CEO史蒂夫桑吉不一般的“擴張”之路

2.這是一篇非常不錯的介紹U-boot工作機制的好文

3.我們吃蛋糕,手中的盤子小,卻可以吃掉大蛋糕,RAM就是這樣運行比自身更大的程序

4.超實用!一位嵌入式高手摸索出的Linux內(nèi)核編譯步驟和經(jīng)驗

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19896

    瀏覽量

    235288
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9353

    瀏覽量

    377631
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3689

    瀏覽量

    95264

原文標題:圖文并茂?一圖了解?其實這是一個ARM體系結(jié)構(gòu)與編程模型的總結(jié)

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    ARM體系結(jié)構(gòu)編程

    ;><strong>ARM體系結(jié)構(gòu)編程<br/></strong></font&
    發(fā)表于 11-24 17:19

    ARM體系結(jié)構(gòu)編程

    本帖最后由 eehome 于 2013-1-5 09:47 編輯 ARM體系結(jié)構(gòu)編程
    發(fā)表于 12-04 03:35

    ARM體系結(jié)構(gòu)是怎樣的?

    ARM體系結(jié)構(gòu)是怎樣的?
    發(fā)表于 11-05 06:40

    Microarchitecture指令集體系結(jié)構(gòu)

    第二章 ARM微處理器概述與編程模型ARM體系結(jié)構(gòu)及其發(fā)展歷史處理器的體系結(jié)構(gòu)處理器微架構(gòu) Mi
    發(fā)表于 12-14 07:13

    了解體系結(jié)構(gòu) - 介紹 Arm 體系結(jié)構(gòu)

    。該體系結(jié)構(gòu)為軟件開發(fā)人員公開了一個通用的指令集和工作流程,也稱為程序員模型。這有助于確保架構(gòu)的不同實現(xiàn)之間的互操作性,以便軟件可以在不同的 Arm 設備上運行。本指南為任何對此感興趣的人介紹了
    發(fā)表于 08-01 14:35

    Arm的DRTM體系結(jié)構(gòu)規(guī)范

    本規(guī)范定義了基于Arm A配置文件體系結(jié)構(gòu)的處理器的動態(tài)測量信任根(DRTM)體系結(jié)構(gòu)。本規(guī)范基于TCG D-RTM體系結(jié)構(gòu)[4]的概念,但作為一個獨立的獨立文檔發(fā)揮作用。它使用了TC
    發(fā)表于 08-08 07:45

    ARM體系結(jié)構(gòu)編程模型

    ARM體系結(jié)構(gòu)編程模型              
    發(fā)表于 12-20 14:47 ?35次下載

    ARM SoC體系結(jié)構(gòu)(中文版)

    ARM SoC體系結(jié)構(gòu)(中文版)的主要內(nèi)容: 第1章 處理器設計導論 第2章 ARM體系結(jié)構(gòu) 第3章 ARM匯編語言
    發(fā)表于 07-25 17:53 ?0次下載

    ARM體系結(jié)構(gòu)編程

    ARM體系結(jié)構(gòu)編程
    發(fā)表于 02-11 09:35 ?169次下載
    <b class='flag-5'>ARM</b><b class='flag-5'>體系結(jié)構(gòu)</b>與<b class='flag-5'>編程</b>

    ARM體系結(jié)構(gòu)編程_杜春雷

    本書分14章對ARM處理器的體系結(jié)構(gòu)、指令系統(tǒng)和開發(fā)工具作了比較全面的介紹。其中包括ARM體系介紹、ARM程序設計
    發(fā)表于 09-13 17:52 ?0次下載
    <b class='flag-5'>ARM</b><b class='flag-5'>體系結(jié)構(gòu)</b>與<b class='flag-5'>編程</b>_杜春雷

    ARM體系結(jié)構(gòu)與程序設計

    ARM體系結(jié)構(gòu)與程序設計》是ARM體系結(jié)構(gòu)與程序設計的一本實用指導書籍,通過案例詳細介紹了ARM體系結(jié)
    發(fā)表于 10-27 16:37 ?2465次閱讀

    105ARM體系結(jié)構(gòu)-編程模型_EXTI

    ARM體系結(jié)構(gòu)-編程模型_EXTI。。。。。
    發(fā)表于 11-17 15:35 ?7次下載

    ARM體系結(jié)構(gòu)講解

    ARM體系結(jié)構(gòu),感興趣的小伙伴們可以看看。
    發(fā)表于 11-08 18:13 ?3次下載

    ARM體系結(jié)構(gòu)和應用系統(tǒng)設計示例

    ARM體系結(jié)構(gòu)和應用系統(tǒng)設計示例
    發(fā)表于 10-30 09:38 ?4次下載
    <b class='flag-5'>ARM</b><b class='flag-5'>體系結(jié)構(gòu)</b>和應用系統(tǒng)設計示例

    米爾科技ARM體系結(jié)構(gòu)編程介紹

    ARM體系結(jié)構(gòu)編程》分14章對ARM處理器的體系結(jié)構(gòu)、指令系統(tǒng)和開發(fā)工具作了比較全面的介紹。
    的頭像 發(fā)表于 11-25 09:18 ?2358次閱讀
    米爾科技<b class='flag-5'>ARM</b><b class='flag-5'>體系結(jié)構(gòu)</b>與<b class='flag-5'>編程</b>介紹