為了增強arm架構(gòu)的安全性,aarch64一共實現(xiàn)了secure和non-secure兩種安全狀態(tài)。通過一系列硬件擴展,在cpu執(zhí)行狀態(tài)、總線、內(nèi)存、外設(shè)、中斷、tlb、cache等方面都實現(xiàn)了兩種狀態(tài)之間的隔離。
在這種機制下,secure空間的程序可以訪問所有secure和non-secure的資源,而non-secure空間的程序只能訪問non-secure資源,卻不能訪問secure資源。從而可以將一些安全關(guān)鍵的資源放到secure空間,以增強其安全性。
為此aarch64實現(xiàn)了4個異常等級,其中EL3工作在secure空間,而EL0 – EL2既可以工作于secure空間,又可以工作于non-secure空間。不同異常等級及不同secure狀態(tài)的模式下可運行不同類型軟件。
如secure EL1和El0用于運行trust os內(nèi)核及其用戶態(tài)程序,non-secure EL1和El0用于運行普通操作系統(tǒng)內(nèi)核(如linux)及其用戶態(tài)程序,EL2用于運行虛擬機的hypervisor。
而EL3運行secure monitor程序(通常為bl31),其功能為執(zhí)行secure和non
secure狀態(tài)切換、消息轉(zhuǎn)發(fā)以及提供類似psci等secure空間服務(wù)。
以下為其示意圖:
psci是工作于non secure EL1(linux內(nèi)核)和EL3(bl31)之間的一組電源管理接口,其目的是讓linux實現(xiàn)具體的電源管理策略,而由bl31管理底層硬件相關(guān)的操作。從而將cpu電源控制這種影響系統(tǒng)安全的控制權(quán)限放到安全等級更高的層級中,從而提升系統(tǒng)的整體安全性。
那么psci如何從EL1調(diào)用EL3的服務(wù)呢?其實它和系統(tǒng)調(diào)用是類似的,只是系統(tǒng)調(diào)用是用戶態(tài)程序陷入操作系統(tǒng)內(nèi)核,而psci是從操作系統(tǒng)內(nèi)核陷入secure monitor。armv8提供了一條smc異常指令,內(nèi)核只需要提供合適的參數(shù)后,觸發(fā)該指令即可通過異常的方式進入secure monitor。
-
電源
+關(guān)注
關(guān)注
185文章
18368瀏覽量
256270 -
ARM
+關(guān)注
關(guān)注
134文章
9352瀏覽量
377516 -
cpu
+關(guān)注
關(guān)注
68文章
11080瀏覽量
217051 -
SMP
+關(guān)注
關(guān)注
0文章
78瀏覽量
20281
發(fā)布評論請先 登錄
ARMv8架構(gòu)資料分享
ARMv8架構(gòu)概述
Armv7和Armv8系統(tǒng)中跟蹤的高級視圖詳解
ARMv8-A TrustZone軟件對實施SVE的系統(tǒng)的影響
ARM推新品:ARMv8首次支援64位元指令集
64位ARMv8架構(gòu)交易敲定 ARM助力Cavium進軍新領(lǐng)域
TRACE32支持ARMv8架構(gòu)
從軟件開發(fā)的角度概述ARMv8處理器架構(gòu)中的虛擬化操作

ARMv8處理器體系結(jié)構(gòu)中的虛擬化功能

Armv8架構(gòu)及虛擬化介紹
rk3588是armv8嗎?rk3588硬件資料
ARMv8工作模式有哪些

armv8 u-boot的啟動介紹

評論