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

ARMv8處理器體系結構中的虛擬化功能

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

armv8 u-boot的啟動介紹

評論