上一期中我們介紹了armv8-a架構裡作業系統常用的暫存器的基本使用情況,這一期中我們將介紹armv8-a架構中的執行狀態。
armv8-a有兩種執行模式,一種是aarch64執行模式,另一種是aarch32執行模式。執行狀態定義處理單元(processing element, pe)的執行環境,包括以下內容:
支援的暫存器寬度
支援的指令集
異常模型
虛擬儲存系統(virtual memory system architecture, vmsa)架構
程式設計師模型
aarch64為64位執行狀態。對應上述內容,此執行狀態:
提供31個64位通用暫存器,其中x30用作過程鏈結暫存器(procedure link register)。
提供64位程式計數器(pc)、堆疊指標(sp)和異常鏈結暫存器(elrs)。
提供32個128位暫存器以支援simd向量和標量浮點運算。
提供單一指令集a64。
定義armv8異常模型,該模型最多有四個異常級別el0-el3,它們提供執行許可權層次結構。
支援64位虛擬定址。
定義一系列與pstate相關的暫存器。a64指令集包括能直接操作各種pstate暫存器的指令。
使用字尾命名每個系統暫存器,該字尾指示可以訪問暫存器的最低異常級別。
aarch32為32位執行狀態。對應上述內容,此執行狀態:
提供13個32位通用暫存器和乙個32位pc、乙個32位sp暫存器和乙個32位鏈結暫存器(link register, lr)。鏈結暫存器用作異常鏈結暫存器和過程鏈結暫存器。其中一些暫存器有多個備份暫存器,用於不同的處理器工作模式。我們在上一期提到過,同乙個功能的暫存器在不同的處理器執行模式下可能對應不同的物理暫存器,這些暫存器被稱為備份暫存器。
為從hyp(hypervisor)模式返回的異常提供乙個異常鏈結暫存器。
提供32個64位暫存器,用於對高階simd向量和標量浮點計算的支援。
提供兩個指令集,a32和t32。
支援基於處理器工作模式的armv7-a異常模型,並將其對映到基於異常級別的armv8異常模型。
使用32位虛擬位址。
使用單個當前程式狀態暫存器(cpsr)儲存處理器狀態。
在aarch64和aarch32執行狀態之間進行轉換稱為內部處理(interprocessing)。
本期我們介紹了armv8-a的執行狀態。下一期我們將介紹armv8-a的異常級別和安全狀態。
參考文獻
[1] arm® architecture reference manual armv8, for armv8-a architecture profile
ARM體系結構與程式設計 3
arm儲存系統 arm中用於儲存管理的系統控制協處理器cp15 包含16個32位暫存器,其編號為0到15。實際上對於某些編號的暫存器可能對應有多個物理暫存器。訪問cp15暫存器的指令 mrc mcr。cp15中的暫存器c0和c1 c0中存放arm相關的一些標示符 c1是乙個控制暫存器,用於禁止 使能...
第3章 ARM體系結構
arm體系結構還提供一些獨特的特性 處理器模式 縮寫模式編碼 描述user usr0b10000 普通的程式執行模式 fiqfiq 0b10001 支援快速的資料搬移或通道處理 irqirq 0b10010 用於通用的中斷處理 supervisor svc0b10011 用於作業系統的保護模式 ab...
華為雲技術分享 ARM體系結構基礎 3
上一期中我們介紹了armv8 a架構裡作業系統常用的暫存器的基本使用情況,這一期中我們將介紹armv8 a架構中的執行狀態。armv8 a有兩種執行模式,一種是aarch64執行模式,另一種是aarch32執行模式。執行狀態定義處理單元 processing element,pe 的執行環境,包括以...