在 Zynq MPSoC 上运行 DOOM 游戏
机器稍加扩展,就可以引入 HYPER 模式。HYPER 模式可以读/写所有初始寄存器(RegisterA、RegisterB、RegisterC、UserProgramCounter、RegisterSuper 和 SuperProgramCounter)以及两个附加寄存器:RegisterHyper 和 HyperProgramCounter。HYPER 模式下的指令包括初始集以及下面的斜体字。
ADD Register3 Register1 Register2 将 Register1 与 Register2 相加并把结果放在 Register3 中,即 Register3 = Register1 + Register2。
MOVTO Register2 Register1 将 Register1 中地址所指向的存储器内容移到 Register2。
MOVFROM Register2 Register1 将 Register1 的内容移到 Register2 中地址所指向的存储器。
MOVTOPHYS Register2 Register1 将 Register1 中物理地址指向的存储器内容移到 Register2。
MOVFROMPHYS Register2 Register1 将 Register1 的内容移到 Register2 中地址指向的物理存储器。
ENTERSUPER 进入处理器的 SUPER 模式。
EXITSUPER 退出 SUPER 模式并进入 USER 模式。
ENTERHYPER 进入处理器的 HYPER 模式。
EXITHYPER 退出处理器的 HYPER 模式。
SWITCHSUPER RegisterHyper 切换到 SUPER 程序,该程序将使用 RegisterHyper 中的值来执行下一个 SUPER 程序。
HYPER 模式中的附加指令和寄存器允许处理器切换哪个程序在 SUPER 模式中运行,就像 SUPER 模式允许处理器切换哪个程序在 USER 模式中运行一样。HYPER 模式的一个特性是能够切换哪个存储器 SUPER 模式能看到;当一个在 HYPER 模式中运行的程序执行 SWITCHSUPER RegisterHyper 时,底层存储器完全断开。这就是说当 HYPER 模式中的程序执行了 EXITHYPER 之后,下个 SUPER 程序运行之时,SUPER 模式看到的实际物理存储器与运行在 SUPER 模式中的另一个程序使用的物理存储器不同。SUPER 模式程序仍使用相同地址访问存储器,但是该地址指向不同的物理位置。图 1 显示了执行 SWITCHSUPER RegisterHyper 前后的处理器存储器视图。
HYPER 模式很有用,是因为它允许很多个 SUPER 程序运行。SUPER 模式中每个程序都可以是 OS;这些 OS 本身可以让很多 USER 程序并列运行.这意味着,我们可以在相同硬件上运行多个 OS,例如 Windows 和 Linux;在一个处理器上运行 20 个 Linux 实例;或者之间的任意组合。由于每个虚拟 OS 实例无法看到另一个 OS 实例,因此如果一个崩溃,不会使另一个实例也崩溃。HYPER 模式的特性还有其他应用:我们可以在多个 OS 之间对系统资源分区;监测 HYPER 模式下每个 OS 的执行,以在崩溃时重启;以及在虚拟 OS 运行时密切关注系统状态。
图 1:HYPER 模式下执行 SWITCHSUPER RegisterHyper 的前后区别
随着处理器从 USER 切换到 SUPER 模式,再从 SUPER 切换到 HYPER 模式,机器会赋予执行代码更多特权。本例中,USER 模式程序只有权使用四个寄存器(RegisterA、RegisterB、RegisterC 和 UserProgramCounter)和四个指令:(ADD、MOVTO、MOVFROM和ENTER-SUPER)。此外,USER 程序只能读写 0x0000_0100 至 0x0FFF_ FFFF 的存储器。一旦进入 SUPER 模式,处理器允许指令与 RegisterSuper 和 SuperProgramCounter 对话,并允许执行 EXITSUPER 和 ENTERHYPER。此外,SUPER 程序可以访问从 0x0000_0000 至 0x7FFF_FFFF 的存储器。
最后,一旦处理器进入 HYPER 模式,其指令就可以操作 RegisterHyper 和 HyperProgramCounter,而且程序可执行 SWITCH-SUPER 和 EXITHYPER。
图 2:各种模式如环形所示
HYPER 模式还允许处理器读写所有虚拟存储器,0x0000_0000 至 0xFFFF_FFFF,以及读写实际物理存储器。这些特权等级通常被直观地用环形来描述(图 2)。主环,即 HYPER 环为特权等级较低的环赋予权限,最终可控制整个系统。
理论结合实践
ARM® 创建处理器设计,供 ARM 合作伙伴构建芯片用。ARM 处理器包含一个或多个内核。每个内核实现一个 ARM 架构。例如,Zynq UltraScale+ MPSoC 包含一个 ARM Cortex™-A53 处理器及四个 ARMv8-A 物理内核(图 3)。
当查看 ARM 处理器的文档和代码时,这种区别很重要;为了全面理解具有一个 ARM 内核的“芯片”,可参考有关架构 (如 ARMv8-A) 和处理器 (如 Cortex-A53) 的文档。ARMv8 架构中有四个例外等级 (来源:ARM 架构参考手册,D1-1404):
1、例外等级 0 (EL0),无需特权即可执行;
2、例外等级 1 (EL1),执行 OS 以及任何执行特权指令的内容;
3、例外等级 2 (EL2),允许硬件被虚拟化;以及
4、例外等级 3 (EL3),允许在安全与非安全处理器状
- 基于Zynq的OLED驱动设计(10-04)
- 用Zynq-7000 EPP实现端到端广播(06-05)
- 采用Zynq SoC实现Power-Fingerprinting网络安全性(06-04)
- Zynq-7000的柔性直流输电桥臂控制器设计(09-12)
- 采用Zynq SoC实现Power-Fingerprinting 网络安全性(09-12)
- 采用 Zynq SoC 测试新型存储器技术芯片 (01-27)