[ARM] ARM處理器的7種工作模式和2種工作狀態
兩種工作狀態
1、ARM狀態:32位,ARM狀態執行字對齊的32位ARM指令。
2、Thumb狀態,16位,執行半字對齊的16位指令。
3、用Bx Rn指令來進行兩種狀態的切換:
其中Bx是跳轉指令,而Rn是暫存器(1個字,32位),如果Rn的位0為1,則進入Thumb狀態;如果Rn的位為0,這進入ARM狀態。(原 因:ARM指令的後兩位始終為0,沒有用,而Thumb指令的後一位始終為0,沒有用,因此採用位0來表示ARM指令與Thumb指令的切換標誌位。)
注:1、ARM和Thumb兩種狀態之間的切換不影響處理器的工作模式和暫存器的內容。
2、ARM處理器在處理異常時,不管處理器處於什麼狀態,則都將切換到ARM狀態。(**********)
另外:ARM的M系列主要用Thumb指令,ARM9和A系列主要用ARM指令
S3C2440.S啟動程式碼中根本就沒用Thumb指令
- 使用者模式(USR):正常程式執行模式,不能直接切換到其他模式
- 系統模式(SYS):執行作業系統的特權任務,與使用者模式類似,但具有可以直接切換到其他模式等特權
- 快中斷模式(FIQ):支援高速資料傳輸及通道處理,FIQ異常響應時進入此模式
- 中斷模式(IRQ):用於通用中斷處理,IRQ異常響應時進入此模式
- 管理模式(SVC):作業系統保護模式,系統復位和軟體中斷響應時進入此模式(由系統呼叫執行軟中斷SWI命令觸發)
- 中止模式(ABT):用於支援虛擬記憶體和/或儲存器保護,在ARM7TDMI沒有大用處
- 未定義模式(UND):支援硬體協處理器的軟體模擬,未定義指令異常響應時進入此模式
-
表3-1 ARM處理器工作模式
處理器工作模式
特權模式
異常模式
說明
使用者(user)模式
使用者程式執行模式
系統(system)模式
該組模式下可以任意訪問系統資源
執行特權級的作業系統任務
一般中斷(IRQ)模式
通常由系統異常狀態切換進該組模式
普通中斷模式
快速中斷(FIQ)模式
快速中斷模式
管理(supervisor)模式
提供作業系統使用的一種保護模式,swi命令狀態
中止(abort)模式
虛擬記憶體管理和記憶體資料訪問保護
未定義指令終止(undefined)模式
支援通過軟體模擬硬體的協處理
CPU的模式可以簡單的理解為當前CPU的工作狀態,比如:當前作業系統正在執行使用者程式,那麼當前CPU工作在使用者模式,這時網路卡上有資料到達,產生中斷訊號,CPU自動切換到一般中斷模式下處理網路卡資料(普通應用程式沒有許可權直接訪問硬體),處理完網路卡資料,返回到使用者模式下繼續執行使用者程式。
特權模式
除使用者模式外,其它模式均為特權模式(Privileged Modes)。ARM 內部暫存器 和一些 片內外設 在硬體設計上只允許(或者可選為只允許)特權模式下訪問。此外,特權模式可以自由的切換處理器模式,而使用者模式不能直接切換到別的模式。
異常模式
特權模式中除系統(system)模式之外的其他5種模式又統稱為異常模式。它們除了可以通過在特權下的程式切換進入外,也可以由特定的異常進入。比如硬體產生中斷訊號進入中斷異常模式,讀取沒有許可權資料進入中止異常模式,執行未定義指令時進入未定義指令中止異常模式。其中管理模式也稱為超級使用者模式,是為作業系統提供軟中斷的特有模式,正是由於有了軟中斷,使用者程式才可以通過系統呼叫切換到管理模式。
7種工作模式介紹
(1)使用者模式:
使用者模式是使用者程式的工作模式,它執行在作業系統的使用者態,它沒有許可權去操作其它硬體資源,只能執行處理自己的資料,也不能切換到其它模式下,要想訪問硬體資源或切換到其它模式只能通過軟中斷或產生異常。
(2)系統模式:
系統模式是特權模式,不受使用者模式的限制。使用者模式和系統模式共用一套暫存器,作業系統在該模式下可以方便的訪問使用者模式的暫存器,而且作業系統的一些特權任務可以使用這個模式訪問一些受控的資源。
說明:使用者模式與系統模式兩者使用相同的暫存器,都沒有SPSR(Saved Program Statement Register,已儲存程式狀態暫存器),但系統模式比使用者模式有更高的許可權,可以訪問所有系統資源。
(3)一般中斷模式:
一般中斷模式也叫普通中斷模式,用於處理一般的中斷請求,通常在硬體產生中斷訊號之後自動進入該模式,該模式為特權模式,可以自由訪問系統硬體資源。
(4)快速中斷模式:
快速中斷模式是相對一般中斷模式而言的,它是用來處理對時間要求比較緊急的中斷請求,主要用於高速資料傳輸及通道處理中。
(5)管理模式(Supervisor,SVC) :
管理模式是CPU上電後預設模式,因此在該模式下主要用來做系統的初始化,軟中斷處理也在該模式下。當使用者模式下的使用者程式請求使用硬體資源時,通過軟體中斷進入該模式。
說明:系統復位或開機、軟中斷時進入到SVC模式下。
(6)終止模式:
中止模式用於支援虛擬記憶體或儲存器保護,當使用者程式訪問非法地址,沒有許可權讀取的記憶體地址時,會進入該模式,linux下程式設計時經常出現的segment fault通常都是在該模式下丟擲返回的。
(7)未定義模式:
未定義模式用於支援硬體協處理器的軟體模擬,CPU在指令的譯碼階段不能識別該指令操作時,會進入未定義模式。
說明:
1、使用者模式外,其它6種模式稱為特權模式。所謂特權模式,即具有如下權利:
a.MRS(把狀態暫存器的內容放到通用暫存器);
b.MSR(把通用暫存器的內容放到狀態暫存器中)。
由於狀態暫存器中的內容不能夠改變,因此要先把內容複製到通用暫存器中,然後修改通用暫存器中的內容,再把通用暫存器中的內容複製給狀態暫存器中,即可完成“修改狀態暫存器”的任務。
2、剩下的六種模式中除去系統模式外,統稱為異常模式。
特權模式中除了系統模式以外的其餘5種模式稱為異常模式
大多數程式執行於使用者模式
進入特權模式是為了處理中斷、異常、或者訪問被保護的系統資源
- 大端格式:高位元組在低地址,低位元組在高地址
- 小端格式:高位元組在高地址,低位元組在低地址
- ARM狀態
- THumb狀態
接著,bootloader引導Linux核心,此時、Linux核心一樣執行在ARM的SVC即管理模式下;當核心啟動完畢、準備進入使用者態init程式時,核心將ARM的當前程式狀態CPSR暫存器M[4:0]設定為10000、進而使用者態程式只能執行在ARM的使用者模式。
由於ARM使用者模式下對資源的訪問受限,因此、可以達到保護Linux作業系統核心的目的。
需要強調的是:Linux核心態是從ARM的SVC即管理模式下啟動的,但在某些情況下、如:硬體中斷、程式異常(被動)等情況下進入ARM的其他特權模式,這時仍然可以進入核心態(因為就是可以操作核心了);同樣,Linux使用者態是從ARM使用者模式啟動的,但當進入ARM系統模式時、仍然可以操作Linux使用者態程式(進入使用者態,如init程式的啟動過程)。
即:Linux核心從ARM的SVC模式下啟動,但核心態不僅僅指ARM的SVC模式(還包括可以訪問核心空間的所有ARM模式);Linux使用者程式從ARM的使用者模式啟動,但使用者態不僅僅指ARM的使用者模式。
相關文章
- ARM 7種處理器模式及功能模式
- 021ARM處理器工作模式模式
- 英國ARM公司 &ARM處理器
- 8.ARM工作模式和暫存器及異常模式
- 處理物件的多種狀態及其相互轉換——狀態模式(五)物件模式
- 處理物件的多種狀態及其相互轉換——狀態模式(四)物件模式
- 處理物件的多種狀態及其相互轉換——狀態模式(一)物件模式
- Android與ARM處理器Android
- 改掉 6 種浪費生命的工作狀態
- ARM處理器:開放者的逆襲
- VisionMobile:ARM,Android處理器之王Android
- ARM的體系結構與程式設計系列部落格——ARM處理器系列介紹程式設計
- 關於Apache的兩種工作模式prefork和workerApache模式
- Oracle 資料庫的各種狀態和模式Oracle資料庫模式
- kube-proxy的三種工作模式模式
- 虛擬化的五種工作模式模式
- PyPy 2.1 beta 釋出,官方支援 ARM 處理器
- 64 位 ARM 處理器意味著什麼?
- 【iCore4 雙核心板_ARM】例程二:讀取ARM按鍵狀態
- ARM的體系結構與程式設計系列部落格——ARM體系變種程式設計
- 華夏芯推出新型處理器核心IP,對標Arm和CEVA
- Thrift server端的幾種工作模式分析Server模式
- Apache 工作的三種模式:Prefork、Worker、EventApache模式
- ARM系列處理器應用技術完全手冊
- 【iCore1S 雙核心板_ARM】例程二:讀取ARM按鍵狀態
- 4. ARM彙編定址模式-2模式
- 工作混沌狀態
- 工作流從無狀態切換到有狀態的好處
- 處理一份內心煎熬的工作有兩種方法——只有一種是正確的
- arm 中斷配置以及處理的原始碼分析原始碼
- 23種設計模式(七)-狀態設計模式設計模式
- MT7686處理器特點和工作原理
- oracle redo各種狀態(inactive、active、current)損壞的處理方式Oracle Redo
- React 4 種狀態型別及 N 種狀態管理React型別
- 監控Nginx的工作狀態Nginx
- 程式的3種狀態
- STM32 GPIO的8種工作模式及相關配置暫存器模式
- ARM釋出全新處理器,只為更好提升AI與機器學習效能AI機器學習