ARM體系結構及編程模型

Download Report

Transcript ARM體系結構及編程模型

嵌入式系统教案
武汉创维特信息技术有限公司
2020/4/30
提綱
第二章 ARM體系結構及編程模型
1
ARM技術的應用領域及特點
2 ARM微處理器系列
3 ARM處理器的工作狀態
4 ARM處理器的工作模式
5 ARM處理器的記憶體格式
6 ARM 處理器的暫存器組織
7
ARM 例外處理
2
ARM技術的應用領域及特點
ARM-Advanced RISC Machines
 ARM(Advanced RISC Machines),既可以認爲是
一個公司的名字,也可以認爲是對一類微處理器的通稱,
還可以認爲是一種技術的名字。
 1991年ARM公司成立於英國康橋,主要出售晶片設
計技術的授權。
3
ARM技術的應用領域及特點
ARM 公司的Chip less模式
 世界各大半導體生産商從ARM公司購買其設計的ARM微處
理器核,根據各自不同的應用領域,加入適當的週邊電路,
從而形成自己的ARM微處理器晶片進入市場。
 基於ARM技術的微處理器應用約佔據了32位RISC微處
理器75%以上的市場份額,ARM技術正在逐步滲入到我們
生活的各個方面。
 我國的中興積體電路、大唐電訊、中芯國際和上海華虹,
以及國外的一些公司如德州儀器、意法半導體、Philips、
Intel、Samsung等都推出了自己設計的基於ARM核的處理器。
4
ARM技術的應用領域及特點
ARM微處理器的應用領域
 到目前爲止,ARM微處理器及技術的應用已經廣泛深
入到國民經濟的各個領域
 工業控制領域:作爲32的RISC架構,基於ARM核的
微控制器晶片不但佔據了高階微控制器市場的大部
分市場份額,同時也逐漸向低階微控制器應用領域
擴展,ARM微控制器的低功耗、高性價比,向傳統
的8位/16位微控制器提出了挑戰。
5
ARM技術的應用領域及特點
ARM微處理器的應用領域
 網路應用:隨著寬頻技術的推廣,採用ARM技術的
ADSL晶片正逐步獲得競爭優勢。此外,ARM在語音及視頻
處理上作最佳化,並獲得廣泛支援,也對DSP的應用領域提
出了挑戰。
 消費類電子産品:ARM技術在目前流行的數位音頻播
放器、數位機上盒(Set-Top Box)和遊戲機中得到廣泛採用。
 影像和安全産品:現在流行的數位相機和印表機中絕大
部分採用ARM技術。手機中的32位SIM智慧卡也採用了
ARM技術。

……
6
ARM技術的應用領域及特點
ARM微處理器的特點—低功耗、低成本、高性能

低功耗、低成本、高性能
採用RISC指令集
全靜態操作,省電
使用大量的暫存器
ARM(32 Bits)/THUMB(16 Bits)指令支持
三(ARM7, Fetch->Decode->Execute,沒MMU)/五級管線
(ARM9, Fetch->Decode->Execute->Memory Access->Write
Register, 有MMU)
7
ARM技術的應用領域及特點
ARM微處理器的特點—採用RISC體系結構

採用RISC架構的ARM處理器一般具有如下特點:
 固定長度的指令格式,指令歸整、簡單、基 本定
址方式有2~3種;
 使用單周期指令(理想值,平均為1.5 CLK),便
於管線操作執行;
 大量使用暫存器,資料處理指令只對暫存器進行
操作,只有載入/儲存指令可以存取記憶體,以提高指
令的執行效率。
8
ARM技術的應用領域及特點
ARM微處理器的特點—大量使用暫存器
 ARM 處理器共有37個暫存器,被分爲若干個組,這些
暫存器包括:
 31個通用暫存器,包括程式計數器(PC 指標),
均爲32位的暫存器;
 6個狀態暫存器,用以標識CPU的工作狀態及程
式的操作狀態,均爲32位元。
9
ARM技術的應用領域及特點
ARM微處理器的特點—高效能的指令系統
 ARM微處理器支援兩種指令集:ARM指令集和Thumb
指令集。
 ARM指令爲32位元的長度,Thumb指令爲16位元長度。
Thumb指令集爲ARM指令集的功能子集,但與等價的ARM
代碼相比較,可節省30%~40%以上的記憶體空間,同時具
備32位代碼的所有優點,用於BIOS(省錢)。
10
ARM技術的應用領域及特點
ARM微處理器的特點—其他技術
 除此以外,ARM體系結構還採用了一些特別的技術,
在保證高性能的前提下儘量縮小晶片的面積,並降低功耗:
 所有的指令都可根據前面的執行結果決定是否被執行,
從而提高指令的執行效率。
 可用載入/儲存指令(為Memory MAP 特性)做批次傳輸資
料,以提高資料的傳輸效率。
 可在一條資料處理指令中同時完成邏輯處理和移位元處
理。
 在迴圈處理中使用地址的自動增減來提高操作效率。
11
ARM微處理器系列
ARM微處理器系列

ARM7系列

ARM9系列

ARM9E系列

ARM10E系列

SecurCore系列

Intel的Xscale
 其中,ARM7、ARM9、ARM9E和ARM10爲4個通用處
理器系列,每一個系列提供一套相對獨特的性能來滿足不同
應用領域的需求。SecurCore系列專門爲安全要求較高的應
用而設計,用於IC Card, Smart Card等,有防潙功能)。
12
ARM微處理器系列
ARM7微處理器系列
 ARM7系列是爲低功耗的32位RISC處理器,最適合用
於對價位和功耗要求較高的消費性應用。ARM7系列有如下
特點:
具有嵌入式ICE-RT邏輯,除錯開發方便;
極低的功耗,適合對功耗要求較高的應用,如攜帶型産品;
能夠提供0.9MIPS/MHz的三級管線結構;
代碼密度高,並相容16位元的Thumb指令集;
對作業系統的支援廣泛,如Windows CE、Linux、Palm OS等;
指令系統與ARM9系列、ARM9E系列和ARM10E系列相容,便
於用戶的産品升級換代;
主頻最高可達130M,高速的運算處理能力能勝任絕大多數的複
雜應用。
13
ARM微處理器系列
ARM7微處理器系列
 主要應用領域:工業控制、Internet設備、網路和數據
機設備、行動電話等多種多媒體和嵌入式應用。
 ARM7系列微處理器包括如下幾種類型的核心:
ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。其
中,ARM7TMDI是目前使用最廣泛的32位嵌入式RISC處理
器,屬低階ARM處理器核心。TDMI的基本含義爲:

T:支援16爲壓縮指令集Thumb;

D:支援晶片上Debug;

M:內嵌硬體乘法器(Multiplier, 32X32=64Bits)

I:嵌入式ICE,支援晶片上中斷點和除錯點;
14
ARM微處理器系列
ARM9微處理器系列
 ARM9系列微處理器在高性能和低功耗特性方面提供最
佳的表現。具有以下特點:
5級整數管線,指令執行效率更高。
提供1.1MIPS/MHz的哈佛結構。
支持32位ARM指令集和16位Thumb指令集。
支援32位元的高速AMBA匯流排界面。
全性能的MMU,支援Windows CE、Linux、Palm OS等多種
主流嵌入式作業系統。
MPU支援即時作業系統。
內含16K資料Cache和16K指令Cache,具有更高的指令和資料
處理能力 。
15
ARM微處理器系列
ARM9微處理器系列
ARM9系列微處理器主要應用於無線設備、儀器儀錶、
安全系統、機上盒、高階印表機、數位照相機和數位攝
影機等。
ARM9系列微處理器包含ARM920T、ARM922T和ARM940T三
種類型,以適用于不同的應用場合。
16
ARM微處理器系列
ARM9E微處理器系列
ARM9E系列微處理器的主要特點如下:
支援DSP指令集,適合於需要高速數位信號處理的場合。
5級整數管線,指令執行效率更高。
支援32位元ARM指令集和16位元Thumb指令集。
支援32位元的高速AMBA匯流排界面(AMBA=AHB[高速元
件]+APB [高速元件])。
支援VFP9浮點處理輔助運算器。
全性能的MMU,支援衆多主流嵌入式作業系統。
支援資料Cache和指令Cache,具有更高的處理能力。
主頻最高可達300M。
17
ARM微處理器系列
ARM9E微處理器系列
ARM9E系列微處理器主要應用於下一代無線設備、數位
消費品、影像設備、工業控制、儲存設備和網路設備等
領域。
ARM9E系列微處理器包含ARM926EJ-S、ARM946E-S和
ARM966E-S三種類型,以適用于不同的應用場合。
18
ARM微處理器系列
ARM10E微處理器系列
ARM10E系列微處理器的主要特點如下:
支援DSP指令集,適合於需要高速數位信號處理的場合。
6級整數管線,指令執行效率更高。
支持32位ARM指令集和16位Thumb指令集。
支援32位元的高速AMBA匯流排界面。
支援VFP10浮點處理輔助運算器。
全性能的MMU,支援衆多主流嵌入式作業系統。
內含資料Cache和指令Cache,具有更高的處理能力
主頻最高可達400M。
內嵌並行讀/寫操作物件。
19
ARM微處理器系列
ARM10E微處理器系列
ARM10E系列微處理器主要應用於下一代無線設備、數
位消費品、影像設備、工業控制、通信和資訊系統等領
域。
ARM10E系列微處理器包含ARM1020E、ARM1022E和
ARM1026EJ-S三種類型,以適用于不同的應用場合。
20
ARM微處理器系列
SecurCore微處理器系列
SecurCore系列微處理器除了具有ARM體系結構各種主
要特點外,還在系統安全方面具有如下的特點:
帶有靈活的保護單元,確保作業系統和應用資料的安全。
採用軟內核技術,防止外部對其進行掃描探測。
可整合用戶自己的安全特性和其他輔助運算器。
21
ARM微處理器系列
SecurCore微處理器系列
 SecurCore系列微處理器主要應用於一些對安全性要求
較高的應用産品及應用系統,如電子商務、電子政務、
電子銀行業務、網路和認證系統等領域。
 SecurCore系列微處理器包含SecurCore SC100、
SecurCore SC110、SecurCore SC200和SecurCore
SC210四種類型,以適用于不同的應用場合。
22
ARM微處理器系列
StrongARM微處理器系列
Intel StrongARM SA-1100處理器是採用ARM體系結構高
度整合的32位元RISC微處理器。它融合了Intel公司的設
計和處理技術以及ARM體系結構的電源效率,採用在軟體
上相容ARMv4體系結構、同時採用具有Intel技術優點的
體系結構。
Intel StrongARM處理器是攜帶型通訊産品和消費類電子
産品的理想選擇,已成功應用於多家公司的掌上電腦系
列產品。
23
ARM微處理器系列
Xscale處理器
Xscale 處理器是基於ARMv5TE體系結構的解決方案,是
一款全功能、高性能價格比、低功耗的處理器。它支援
16位元的Thumb指令和DSP指令集,已使用在數位行動電
話、個人數位助理和網路産品等場合。
Xscale 處理器是Intel目前主要推廣的一款ARM微處理器。
24
ARM微處理器的工作狀態
ARM微處理器的工作狀態
從程式執行的角度看,ARM微處理器的工作狀態一般有兩
種,並可在兩種狀態之間切換:
ARM狀態,此時處理器執行32位的字對齊的ARM指
令;
Thumb狀態,此時處理器執行16位的、半字對齊的
Thumb指令。
25
ARM微處理器的工作狀態
ARM與THUMB
 THUMB指令是ARM指令的子集
 可以相互調用,只要遵循一定的調用規則
 Thumb指令與ARM指令的時間效率和空間效率關係爲:
 記憶體空間約爲ARM代碼的60%~70%
 指令數比ARM代碼多約30%~40%
 記憶體爲32位時ARM代碼比Thumb代碼快約40%
 記憶體爲16位時Thumb比ARM代碼快約40~50%
 使用Thumb代碼,記憶體的功耗會降低約30%
26
ARM微處理器的工作狀態
狀態切換方法
 ARM指令集和Thumb指令集均有切換處理器狀態的指令,
並可在兩種工作狀態之間切換
 在開始執行代碼時,應該處於ARM狀態。
27
ARM微處理器的工作狀態
進入Thumb狀態
 當運算元暫存器的狀態位元(位元0)爲1時,可以採
用執行BX指令的方法,使微處理器從ARM狀態切換到
Thumb狀態 。如下
LDR
R0,=label+1
BX
R0
 當處理器處於Thumb狀態時發生例外(如IRQ、FIQ、
Undef、Abort、SWI等),則例外處理返回時,自動切
換到Thumb狀態 。
28
ARM微處理器的工作狀態
切換到ARM狀態
 當運算元暫存器的狀態位元爲0時,執行BX指令時可以
使微處理器從Thumb狀態切換到ARM狀態。如下
LDR
R0,=label
BX
R0
 在處理器進行例外處理時,把PC指標放入例外模式鏈
結暫存器中,並從例外向量位址開始執行程式,也可
以使處理器切換到ARM狀態。
29
ARM微處理器的工作模式
處理器模式
 usr:ARM處理器正常的程式執行狀態
 fiq:於高速資料傳輸或通道處理
 irq:用於通用的中斷處理
 svc:作業系統使用的保護模式
 abt:用於虛擬儲存及儲存保護
 und:當出現未定義指令終止時進入該模式
 sys:執行具有特權的作業系統任務
30
ARM微處理器的工作模式
用戶模式和特權模式
 除了用戶模式之外的其他6種處理器模式稱爲特權模式
 特權模式下,程式可以存取所有的系統資源,也可以
任意地進行處理器模式的切換。
 特權模式中,除系統模式外,其他5種模式又稱爲例外模式
 大多數的用戶程式操作在用戶模式下,此時,應用程
式不能夠存取一些受作業系統保護的系統資源,應用
程式也不能直接進行處理器模式的切換。
 用戶模式下,當需要進行處理器模式切換時,應用程
式可以産生例外處理,在例外處理中進行處理器模式
的切換。
31
ARM微處理器的工作模式
模式切换
 處理器模式可以通過軟體進行切換,也可以通過外部
中斷或者例外處理過程進行切換。
 當應用程式發生例外中斷時,處理器進入相應的例外
模式。在每一種例外模式下都有一組暫存器,供相應
的例外處理程式使用,這樣就可以保證在進入例外模
式時,用戶模式下的暫存器不被破壞。
 系統模式並不是通過例外進入的,它和用戶模式具有
完全一樣的暫存器。但是系統模式屬於特權模式,可
以存取所有的系統資源,也可以直接進行處理器模式
切換。它主要供作業系統任務使用。通常作業系統的
任務需要存取所有的系統資源,同時該任務仍然使用
用戶模式的暫存器組,而不是使用例外模式下相應的
暫存器組,這樣可以保證當例外中斷發生時任務狀態
不被破壞。
32
ARM微處理器的記憶體格式
ARM微處理器的記憶體格式
 ARM體系結構所支援的最大定址空間爲4GB(232位元組)
 ARM體系結構將記憶體看作是從零位址開始的位元組的
線性組合。從零位元組到三位元組放置第一個儲存的字
資料,從第四個位元組到第七個位元組放置第二個儲存
的字資料,依次排列。
 ARM體系結構可以用兩種方法儲存字資料,稱之爲大端格
式(Big-Endian, Intel)和小端格式(little-Endian,Motorola)
33
ARM微處理器的記憶體格式
ARM體系結構的記憶體格式—大端格式
 在這種格式中,字資料的高位元組儲存在低位址中,而
字資料的低位元組則存放在高位址中
34
ARM微處理器的記憶體格式
ARM體系結構的記憶體格式—小端格式
 與大端儲存格式相反,在小端儲存格式中,低位址中存放
的是字資料的低位元組,高位址存放的是字資料的高位元
組
35
ARM微處理器的記憶體格式
指令長度及資料類型
ARM微處理器的指令長度可以是32位元(在ARM狀態
下),也可以爲16位元(在Thumb狀態下)。
ARM微處理器中支援位元組(8位元)、半字(16位)、
字(32位)三種資料類型,其中,字需要4位元組對齊
(位址的低兩位爲0)、半字需要2位元組對齊(位址
的最低位爲0)
36
ARM微處理器的記憶體格式
非對齊的儲存存取操作
在ARM種,如果儲存單元的位址沒有遵守對齊規則,則
稱爲非對齊的儲存存取操作。
非對齊的指令預取操作
非對齊的資料存取操作
37
ARM微處理器的記憶體格式
非對齊的指令預取操作
當處理器處於ARM狀態期間,如果寫入到暫存器PC中的
值是非字對齊的,則指令執行的結果不可預知,該位
址值中最低兩位被忽略。
當處理器處於THUMB狀態期間,如果寫入到暫存器PC中
的值是非半字對齊的,則指令執行的結果不可預知,該
位址值中最低位被忽略。
38
ARM微處理器的記憶體格式
非對齊的資料存取操作
對於Load/Store操作,如果是非對齊的資料存取操作,
系統定義了三種可能的結果:
 執行的結果不可預知
 忽略字單元地址的低兩位元的值,即存取地址爲
(address AND 0XFFFFFFFC)的字單元;忽略半字單元
地址的最低位元的值,即存取地址爲(address AND
0XFFFFFFFE)的半字單元。
 忽略字單元地址的低兩位元的值;忽略半字單元地址
的最低位元的值;由儲存系統實現這種忽略。也就是
說,這時該位址值原封不動地送到儲存系統。
當發生非對齊地資料存取時,到底採用上述三種方法
中的哪一種,是由各指令指定的。
39
ARM微處理器的記憶體格式
暫存器組織
 ARM微處理器共有37個32位元暫存器,其中31個爲通用暫
存器,6個爲狀態暫存器。但是這些暫存器不能被同時存
取,具體哪些暫存器是可被程式存取的,取決微處理器的
工作狀態及具體的操作模式。但在任何時候,通用暫存器
R14~R0、程式計數器PC、一個或兩個狀態暫存器都是可
存取的。
40
ARM微處理器的記憶體格式
ARM狀態下的暫存器組織
 通用暫存器:通用暫存器包括R0~R15,可以分爲三類:
 未分組暫存器 R0~R7
 分組暫存器R8~R14
 程式計數器 PC(R15)
41
ARM微處理器的記憶體格式
ARM狀態下的暫存器組織
42
ARM微處理器的記憶體格式
未分組暫存器 R0~R7
 在所有的操作模式下,未分組暫存器都指向同一個真正
(物理)暫存器,他們未被系統用作特殊的用途。因此,在
中斷或例外處理進行操作模式轉換時,由於不同的處理器
操作模式均使用相同的物理暫存器,可能會造成暫存器中
資料的破壞,這一點在進行程式設計時應注意。
43
ARM微處理器的記憶體格式
分組暫存器 R8~R12
 每次所存取的物理暫存器與處理器當前的操作模式有關
 R8~R12:每個暫存器對應兩個不同的物理暫存器
 當使用fiq模式時,存取暫存器R8_fiq~R12_fiq;
 當使用除fiq模式以外的其他模式時,存取暫存器R8_usr
~R12_usr。
44
ARM微處理器的記憶體格式
分組暫存器 R13~R14
 R13、R14:每個暫存器對應6個不同的物理暫存器
 其中的一個是用戶模式與系統模式共用,另外5個物理暫
存器對應於其他5種不同的操作模式
 採用以下的記號來區分不同的物理暫存器:
 R13_<mode>
 R14_<mode>
 mode爲以下幾種之一 :usr、fiq、irq、svc、abt、und。
45
ARM微處理器的記憶體格式
堆疊指標—R13
 R13在ARM指令中常用作堆疊指標,但這只是一種習慣用
法,用戶也可使用其他的暫存器作爲堆疊指標。
 在Thumb指令集中,某些指令強制性的要求使用R13作爲
堆疊指標。
 由於處理器的每種操作模式均有自己獨立的物理暫存器
R13,在初始化部分,都要初始化每種模式下的R13,這
樣,當程式的操作進入例外模式時,可以將需要保護的暫
存器放入R13所指向的堆疊,而當程式從例外模式返回時,
則從對應的堆疊中恢復。
46
ARM微處理器的記憶體格式
副程式連接暫存器—R14
 R14也稱作副程式連接暫存器或連接暫存器LR。當執行
BL指令時,可以從R14中得到R15(程式計數器PC)的
備份。其他情況下,R14用作通用暫存器。
 在每一種操作模式下,都可用R14保存副程式的返回位址,
當使用BL或BLX指令時,將PC的當前值拷貝給R14,執
行完副程式後,又將R14的值拷貝回PC,即可完成副程
式的返回。
BL SUB1
……
SUB1:
STMFD SP!, {<regs>, LR} /*將R14存入堆疊 */
……
LDMFD
SP!,{<regs>,PC} 47
/*完成副程式返回 */
ARM微處理器的記憶體格式
程式計數器 PC(R15)
 ARM狀態下,位元[1:0]爲0,位[31:2]用於保存PC;
 Thumb狀態下,位元[0]爲0,位[31:1]用於保存PC;
 R15雖然也可用作通用暫存器,但一般不這麽使用,因爲
對R15的使用有一些特殊的限制,當違反了這些限制時,
程式的執行結果是未知的。
 由於ARM體系結構採用了多級管線技術,對於ARM指令
集而言,PC總是指向當前指令的下兩條指令的位址,即
PC的值爲當前指令的位址值加8個位元組。
48
ARM微處理器的記憶體格式
程式狀態暫存器 (CPSR/SPSR)
 暫存器R16用作CPSR(當前程式狀態暫存器),CPSR可在任
何操作模式下被存取,它包括條件標誌位元、中斷禁止位
元、當前處理器模式標誌位元,以及其他一些相關的控制
和狀態位元。
 每一種操作模式下又都有一個專用的物理狀態暫存器,
稱爲SPSR(備份的程式狀態暫存器),例外發生時,
SPSR用於保存CPSR的值,從例外返回時則可由SPSR
來恢復CPSR。
 由於用戶模式和系統模式不屬於例外模式,他們沒有SPSR,
當在這兩種模式下存取SPSR,結果是未知的。
49
ARM微處理器的記憶體格式
Thumb狀態下的暫存器組織
 Thumb狀態下的暫存器集是ARM狀態下暫存器集的一個子集
 程式可以直接存取8個通用暫存器(R7~R0)、程式計數
器(PC)、堆疊指標(SP)、連接暫存器(LR)和CPSR。
 同樣,每一種特權模式下都有一組SP、LR和SPSR。
50
ARM微處理器的記憶體格式
Thumb狀態下的暫存器組織圖
51
ARM微處理器的記憶體格式
Thumb狀態下的暫存器與ARM狀態下的暫存器關係
 Thumb狀態下和ARM狀態下的R0~R7是相同的 。
 Thumb狀態下和ARM狀態下的CPSR和所有的SPSR是相同的。
 Thumb狀態下的SP對應於ARM狀態下的R13。
 Thumb狀態下的LR對應於ARM狀態下的R14。
 Thumb狀態下的程式計數器對應於ARM狀態下R15。
52
ARM微處理器的記憶體格式
Thumb狀態下的暫存器與ARM狀態下的暫存器關係圖
53
ARM微處理器的記憶體格式
存取THUMB狀態下的高位暫存器(Hi-registers )
 在Thumb狀態下,高位暫存器R8~R15並不是標準暫存器集
的一部分,但可使用組合語言程式受限制的存取這些暫存
器,將其用做快速的暫存器。
 使用帶有特殊變數的MOV指令,資料可以在低位元暫存器
和高位暫存器之間進行傳送;高位暫存器的值可以使用
CMP和ADD指令進行比較或加上低位暫存器中的值。
54
ARM微處理器的記憶體格式
程式狀態暫存器
 ARM體系結構包含一個當前程式狀態暫存器(CPSR)和五
個備份的程式狀態暫存器(SPSRs)。備份的程式狀態暫
存器用來進行例外處理,其功能包括:
 保存ALU中的當前操作資訊
 控制允許和禁止中斷
 設置處理器的操作模式
55
ARM微處理器的記憶體格式
程式狀態暫存器的每一位元的安排
56
ARM微處理器的記憶體格式
程式狀態暫存器的條件碼標誌
 N、Z、C、V均爲條件碼標誌位元。它們的內容可被算術或
邏輯運算的結果所改變,並且可以決定某條指令是否被執
行
 在ARM狀態下,絕大多數的指令都是有條件執行的。
 在Thumb狀態下,僅有分支指令是有條件執行的。
57
ARM微處理器的記憶體格式
影響標誌位元的指令
標誌
位元
N
Z
含
義
當帶符號的兩個補數進行運算時,N=1 表示運算的結果
爲負數;N=0 表示運算的結果爲正數或零;
Z=1表示運算的結果爲零;Z=0表示運算的結果爲非零;
C
加法運算結果進位時,C=1,減法運算借位時,C=0;
移位元操作的非加/減運算指令,C爲移出的最後一位;
其他的非加/減運算指令,C的值通常不改變。
V
加/減法運算指令,V=1表示符號位元溢出。
對於其他的非加/減運算指令,C的值通常不改變。
Q
在ARM v5及以上版本的E系列處理器中,Q標誌指示DSP
運算指令是否溢出。在其他版本中,Q標誌位元無定義 。
58
ARM微處理器的記憶體格式
程式狀態暫存器的控制位元
狀態暫存器的低8位元(I、F、T和M[4:0])稱爲控制位
元,發生例外時,這些位元可以被改變。如果處理器操作於
特權模式,這些位元也可以由程式修改 。
中斷禁止位 I、F:
 I=1
禁止IRQ中斷 ;
 F=1
禁止FIQ中斷 。
T標誌位元 :該位元反映處理器的操作狀態
 ARM體系結構v5及以上的版本的T系列處理器,當該位
元爲1時,程式操作於Thumb狀態,否則操作於ARM狀
態 。
 ARM體系結構v5及以上的版本的非T系列處理器,當該
位爲1時,執行下一條指令以引起爲定義的指令例外;
當該位元爲0時,表示操作於ARM狀態 。
操作模式位元M[4:0]是模式位元,決定處理器的操作模
59
式
ARM微處理器的記憶體格式
處理器操作模式及可以存取的暫存器
M[4:0]
處理器模式
可存取的暫存器
0b10000
用户模式
PC,CPSR,R0-R14
0b10001
FIQ模式
0b10010
IRQ模式
0b10011
管理模式
0b10111
中止模式
0b11011
未定義模式
0b11111
系统模式
PC,CPSR, SPSR_fiq,R14_fiq-R8_fiq,
R7~R0
PC,CPSR, SPSR_irq,R14_irq, R13_irq,
R12~R0
PC,CPSR, SPSR_svc,R14_svc, R13_svc,
R12~R0,
PC,CPSR, SPSR_abt,R14_abt,R13_abt,
R12~R0,
PC,CPSR, SPSR_und,R14_und,
R13_und, R12~R0,
PC,CPSR(ARM v4及以上版本),
R14~R0
60
ARM例外處理
例外 (Exceptions)
 當正常的程式執行流程發生暫時的停止時,稱之爲例外,
例如處理一個外部的中斷請求。在處理例外之前,當前處
理器的狀態必須保留,這樣當例外處理完成之後,當前程
式可以繼續執行。處理器允許多個例外同時發生,它們將
會按固定的優先順序進行處理。
 ARM體系結構中的例外,與8位元/16位元體系結構的中斷
有很大的相似之處,但例外與中斷的概念並不完全等同。
61
ARM例外處理
ARM體系結構所支援的例外類型
例外類型
Reset
未定義指令
軟體中斷
指令預取中
止
資料中止
IRQ
FIQ
具體含義
Reset有效時,産生Reset例外,程式跳到
Reset處理程式處執行 。
遇到不能處理的指令時,産生未定義指令例
外 。
執行SWI指令産生,用於用戶模式下的程式調
用特權操作指令 。
處理器預取指令的位址不存在,或該位址不允
許當前指令存取,産生指令預取中止例外。
處理器資料存取指令的位址不存在,或該位址
不允許當前指令存取時,産生資料中止例外。
外部中斷請求有效,且CPSR中的I位爲0時,産
生IRQ例外 。
快速中斷請求引腳有效,且CPSR中的F位爲0
時,産生FIQ例外。
62
ARM例外處理
對例外的回應
 當一個例外出現以後,ARM微處理器會執行以下幾個步驟
 將下一條指令的位址存入相應連接暫存器LR,以便程式
在處理例外返回時能從正確的位置重新開始執行 。
 將CPSR複製到相應的SPSR中。
 根據例外類型,強制設置CPSR的操作模式位元。
 強制PC從相關的例外向量位址取下一條指令執行,從而
跳躍到相應的例外處理程式處 。
63
ARM例外處理
例外回應虛擬碼 (Pseudo Code)
 處理器處於Thumb狀態,則當例外向量位址載入入PC時,
處理器自動切換到ARM狀態。ARM微處理器對例外的回應過
程用虛擬碼可以描述爲 :
R14_<Exception_Mode> = Return Link
SPSR_<Exception_Mode> = CPSR
在ARM狀態下執行
CPSR[4:0] = Exception Mode Number
CPSR[5] = 0
禁止快速中断
If <Exception_Mode>
== Reset or FIQ then
禁止正常中断
CPSR[6] = 1
轉入例外入口地址
CPSR[7] = 1
PC = Exception Vector Address
64
ARM例外處理
從例外返回
 例外處理完畢之後,ARM微處理器會執行以下幾步驟,從
例外返回 :
 將連接暫存器LR的值減去相應的偏移量後送到PC中 。
 將SPSR複製回CPSR中 。
 若在進入例外處理時設置了中斷禁止位元,要在此清除 。
 可以認爲應用程式總是從Reset例外處理程式開始執行的,
因此Reset例外處理程式不需要返回 。
65
ARM例外處理
FIQ(Fast Interrupt Request)
 FIQ例外是爲了支援資料傳輸或者通道處理而設計的 。
 若將CPSR的F位置爲1,則會禁止FIQ中斷,若將CPSR的F位
元清為零,處理器會在指令執行時檢查FIQ的輸入。注意
只有在特權模式下才能改變F位元的狀態 。
 可由外部通過對處理器上的nFIQ接腳輸入低電位産生FIQ。
不管是在ARM狀態還是在Thumb狀態下進入FIQ模式,FIQ處
理程式均可以執行以下指令從FIQ模式返回 :
SUBS
PC,R14_fiq ,#4
66
ARM例外處理
IRQ(Interrupt Request)
 IRQ例外屬於正常的中斷請求,可通過對處理器的nIRQ引
腳輸入低電位産生,IRQ的優先順序低於FIQ,當程式執行
進入FIQ例外時,IRQ可能被遮罩 。
 若將CPSR的I位置爲1,則會禁止IRQ中斷,若將CPSR的I位
清零,處理器會在指令執行完之前檢查IRQ的輸入。注意
只有在特權模式下才能改變I位元的狀態 。
 不管是在ARM狀態還是在Thumb狀態下進入IRQ模式,IRQ處
理程式均可以執行以下指令從IRQ模式返回 :
SUBS PC , R14_irq , #4
67
ARM例外處理
ABORT(中止)
 産生中止例外意味著對記憶體的存取失敗。ARM微處理器
在記憶體存取周期內檢查是否發生中止例外。
 中止例外包括兩種類型 :
 指令預取中止:發生在指令預取時 。
 資料中止:發生在資料存取時 。
 當指令預取存取記憶體失敗時,記憶體系統向ARM處理器發出記憶體
中止(Abort)信號,預取的指令被記爲無效,但只有當處理器試圖
執行無效指令時,指令預取中止例外才會發生,如果指令未被執行,
例如在指令管線中發生了跳躍,則預取指令中止不會發生 。
 若資料中止發生,系統的回應與指令的類型有關 。
 當確定了中止的原因後,Abort處理程式均可以執行以下指令從中止
模式返回,無論是在ARM狀態還是Thumb狀態 :
SUBS PC, R14_abt, #4
;指令預取中止
SUBS PC, R14_abt, #8
;資料中止
68
ARM例外處理
Software Interrupt(軟體中斷)
軟體中斷指令(SWI)用於進入管理模式,常用於請求執
行特定的管理功能。無論是在ARM狀態還是Thumb狀態,下一
行指令可以從SWI模式返回:
MOVS PC , R14_svc
以上指令恢復PC(從R14_svc)和CPSR(從SPSR_svc)的值,
並返回到SWI的下一條指令。
69
ARM例外處理
Undefined Instruction(未定義指令 )
當ARM處理器遇到不能處理的指令時,會産生未定義指令
例外。採用這種機制,可以通過軟體模擬擴展ARM或Thumb指
令集。 。
處理器執行以下指令回返,無論是在ARM狀態還是Thumb狀
態:

MOVS PC, R14_und
 以上指令恢復PC(從R14_und)和CPSR(從SPSR_und)
的值,並返回到未定義指令後的下一條指令。
70
ARM例外處理
例外向量表 (Exception Vectors)
地 址
異 常
進入模式
0x00,0000
Reset
管理模式
0x00,0004
未定義指令
未定義模式
0x00,0008
軟體中斷
管理模式
0x00,000C
中止(預取指令 ) 中止模式
0x00,0010
中止(資料)
中止模式
0x00,0014
保留
保留
0x00,0018
IRQ
IRQ
0x00,001C
FIQ
FIQ
71
ARM例外處理
例外優先順序 (Exception Priorities)
優先順序
異
常
1(最高)
Reset
2
資料中止
3
FIQ
4
IRQ
5
預取指令中止
6(最低)
未定義指令 、SWI
72
ARM例外處理
應用程式中的例外處理
當系統操作時,例外可能會隨時發生,爲保證在ARM處理
器發生例外時不至於處於未知狀態,在應用程式的設計中,
首先要進行例外處理,採用的方式是在例外向量表中的特定
位置放置一條跳躍指令,跳躍到例外處理程式,當ARM處理
器發生例外時,程式計數器PC會被強制設置爲對應的例外向
量,從而跳躍到例外處理程式,當例外處理完成以後,返回
到主程序繼續執行。
73