运行特权等级¶
灵犀指令集架构的程序运行等级通过访问控制环(Access Control Ring)进行管理,并对所运行的软件角色进行功能访问权限控制。灵犀逻辑核支持最多16种特权等级,以分配给不同的软件角色。在ACR机制中,每个具有不同权限的软件使用不同的ACR,例如一个原生操作系统内核和虚拟机中的操作系统内核,需要使用不同的ACR,因为两者对软件使用的权限是不同的。
不同的特权等级分别用ACR{n}表示,n可以是[0..15]。灵犀核在复位的时候默认处于ACR0状态,只能通过特定的事件被改变,而且只能遵循特定的路径改变,由ACR切换具体定义这种改变规则。
当前版本已经使用的ACR功能包括:
| ACR ID | |
|---|---|
| 0 | 根优先级,具有全系统最高权限。通常用于固件和初始化程序 |
| 1 | 主系统优先级,通常可以用作Host OS或者Hypervisor |
| 2 | 主系统用户优先级,通常用做Host的用户程序 |
| 3 | Guest OS系统优先级,通常用于Guest OS的内核 |
| 4 | Guest用户优先级,通常用于Guest OS的用户态程序 |
ACR{n}(n=[0..2])是所有实现必须提供的特权级,其他特权级仅在特定的扩展使能后才会支持。
所有被支持的ACR总是被组织成一颗以ACR0为根的树,对于包含ACR0, 1, 2和可选3和4的实现,ACR定义为如下树结构:

在ACR树中,父节点具有比子节点更高的特权级,相同的ACR节点被认为具有“相等”的特权级。这两种情况,都被认为两个特权级是“可比”的。 否则,在不同树分支上的ACR,被认为是“不可比”的。ACR切换只能发生在两个可比的ACR之间。
如果ACRn和ACRm可比:
- 如果ACRn比ACRm的特权高,则描述为:“n p> m” 或者 “m p< n”。
- 如果ARCn比ACRm的特权级高或者两者相等,则描述为:“n p>= m” 或者 “m p<= n”。
- 如果ARCn和ACRm的特权级相等,则描述为:“n p= m” 或者 “m p= n”。
灵犀指令集架构根据ACR决定如何提供功能,部分指令(包括而不限于对SSR内容的访问)因为ACR的不同,行为也会有所不同。