在 Zynq MPSoC 上运行 DOOM 游戏
通过这篇有趣的教程,熟悉运行在赛灵思ZynqUltraScale+MPSoC上的 Xen 管理程序。
本文引用地址://m.amcfsurvey.com/article/201608/294978.htm赛灵思和 DornerWorks 的系统软件团队在赛灵思的Zynq® Ultrascale+™MPSoC上启动 Xen Project 管理程序时,我们发现可通过运行当年叱诧一时的流行电子游戏 Doom 来演示和测试系统。
![](http://m.amcfsurvey.com/editerupload/201608/7d1bfb9239156a4144a2136e964a425c.png)
神马?!你不知道 DOOM??(CS 你总知道吧 -__-||)
如何针对ZynqUltraScale+MPSoC通过 QEMU 在 Xen 上运行 Doom 呢,在详细介绍具体步骤之前,我们先来了解什么是管理程序,以及它们如何与 Zynq UltraScale+ MPSoC 上的处理器协同工作。
管理程序及其工作原理
管理程序是一种可虚拟化处理器的计算机程序。运行在虚拟化处理器上的应用程序和操作系统似乎完全拥有系统,但事实上管理程序负责管理虚拟处理器对物理机资源(例如存储器和处理内核)的访问。管理程序之所以流行,是因为能实现设计分区以及系统上运行的独立软件元素之间的隔离。
为了支持虚拟化,物理处理器必须提供一个供管理程序运行的特殊“模式”。因此,介绍处理器模式有助于理解管理程序如何完成处理器魔法。
所有处理器都有一些指令,这些指令可操作寄存器中存储的值,并可读写存储器。处理器的模式是指令和寄存器的集合,以及利用指令访问寄存器和存储器时要遵守的规则。为了便于解释,我们以通用处理器为例来介绍,并使用与结构无关的术语。在这个实例中,处理器具有特定的寄存器、指令和模式。寄存器包括 RegisterA、RegisterB、RegisterC、UserProgramCounter、Register-Super 和 SuperProgramCounter。指令包括以下内容。
ADD Register3 Register1 Register2 将 Register1 与 Register2 相加,并把结果存入 Register3,即 Register3 = Register1 + Register2。
MOVTO Register2 Register1 将 Register1 中地址所指向的存储器内容移动到 Register2。
MOVFROM Register2 Register1 将 Register1 的内容移动到 Register2 中地址所指向的存储器。
ENTERSUPER 进入处理器的 SUPER 模式。
EXITSUPER 退出 SUPER 模式并进入 USER 模式。
在 USER 模式下,处理器的指令的功能受到限制。本例中,指令可对除 RegisterSuper 和 SuperProgramCounter 以外的所有寄存器进行读和写操作,处理器可执行除 EXITSUPER 以外的所有指令。
此外,在 USER 模式下,所有指令只能读和写一部分存储器,例如从地址 0x0000_0100 到 0x0FFF_FFFF。在 USER 模式下,如果程序尝试执行不应该执行的指令,或者访问无权访问的寄存器或存储器位置,那么处理器将暂停出错指令 (offending instruction)。
SUPER 模式下,处理器的指令可以读/写上述所有寄存器,包括 RegisterSuper 和 SuperProgramCounter。以上所列的所有指令,包括 EXITSUPER,都可以执行,另外,附加的指令 ENTERHYPER 也可执行(后面详细介绍该指令)。此外,在 SUPER 模式下,指令可以访问系统中的全部存储器(从 0x0000_0000 到 0x7FFF_ FFFF)。
采用带模式的处理器,使我们可以利用设计分区来更简单地解决软件工程设计问题。以上实例中,只有一种方法进入 SUPER 模式:执行 ENTERSUPER 指令。同样,只有一种方法退出 SUPER 模式:执行 EXITSUPER。此外,在 USER 模式下程序只能访问机器的部分存储器。有了这种方案,我们可编写一个程序让处理器同时运行多个 USER 模式程序。这个“操作系统”(OS) 程序运行在 SUPER 模式,并管理在 USER 模式中运行的程序。
当 OS 运行时,会查看需要运行的所有 USER 模式程序,选择一个运行,然后使用 EXITSUPER 这样的指令通知处理器切换到 USER 模式以运行程序。所选的程序会一直运行,直到有事件导致处理器切回 SUPER 模式。这类事件可以是来自 USER 模式程序的 ENTERSUPER 指令,或外部事件,例如定时器,它可以不提醒正在 USER 模式下运行的程序将处理器切换到 SUPER 模式。无论切换如何发生,每当事件发生时,我们都可构建 OS 以根据相应策略相继选择和运行程序。当切换快速进行时,用户认为 USER 程序同时运行。
USER HYPER 模式的用处是让很多 SUPER 程序运行。SUPER 模式下的每个程序都可以是 OS;这些 OS 本身会让很多 USER 程序并行运行。
SUPER 处理器模式还能防止 USER 程序干扰运行在 SUPER 模式的程序或其他 USER 模式程序。USER 模式程序的任何错误或违规都可被控制在该程序自身的实例中,不会破坏或干扰为 SUPER 模式操作保留的系统存储器和寄存器。
评论