在 Zynq MPSoC 上運行 DOOM 游戲
聽(tīng)起來(lái)很好,但能否用另一個(gè)模式實(shí)現一些功能?
本文引用地址:http://dyxdggzs.com/article/201608/294978.htm對我們的機器稍加擴展,就可以引入 HYPER 模式。HYPER 模式可以讀/寫(xiě)所有初始寄存器(RegisterA、RegisterB、RegisterC、UserProgramCounter、RegisterSuper 和 SuperProgramCounter)以及兩個(gè)附加寄存器: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 進(jìn)入處理器的 SUPER 模式。
EXITSUPER 退出 SUPER 模式并進(jìn)入 USER 模式。
ENTERHYPER 進(jìn)入處理器的 HYPER 模式。
EXITHYPER 退出處理器的 HYPER 模式。
SWITCHSUPER RegisterHyper 切換到 SUPER 程序,該程序將使用 RegisterHyper 中的值來(lái)執行下一個(gè) SUPER 程序。
HYPER 模式中的附加指令和寄存器允許處理器切換哪個(gè)程序在 SUPER 模式中運行,就像 SUPER 模式允許處理器切換哪個(gè)程序在 USER 模式中運行一樣。HYPER 模式的一個(gè)特性是能夠切換哪個(gè)存儲器 SUPER 模式能看到;當一個(gè)在 HYPER 模式中運行的程序執行 SWITCHSUPER RegisterHyper 時(shí),底層存儲器完全斷開(kāi)。這就是說(shuō)當 HYPER 模式中的程序執行了 EXITHYPER 之后,下個(gè) SUPER 程序運行之時(shí),SUPER 模式看到的實(shí)際物理存儲器與運行在 SUPER 模式中的另一個(gè)程序使用的物理存儲器不同。SUPER 模式程序仍使用相同地址訪(fǎng)問(wèn)存儲器,但是該地址指向不同的物理位置。圖 1 顯示了執行 SWITCHSUPER RegisterHyper 前后的處理器存儲器視圖。
HYPER 模式很有用,是因為它允許很多個(gè) SUPER 程序運行。SUPER 模式中每個(gè)程序都可以是 OS;這些 OS 本身可以讓很多 USER 程序并列運行.這意味著(zhù),我們可以在相同硬件上運行多個(gè) OS,例如 Windows 和 Linux;在一個(gè)處理器上運行 20 個(gè) Linux 實(shí)例;或者之間的任意組合。由于每個(gè)虛擬 OS 實(shí)例無(wú)法看到另一個(gè) OS 實(shí)例,因此如果一個(gè)崩潰,不會(huì )使另一個(gè)實(shí)例也崩潰。HYPER 模式的特性還有其他應用:我們可以在多個(gè) OS 之間對系統資源分區;監測 HYPER 模式下每個(gè) OS 的執行,以在崩潰時(shí)重啟;以及在虛擬 OS 運行時(shí)密切關(guān)注系統狀態(tài)。

圖 1:HYPER 模式下執行 SWITCHSUPER RegisterHyper 的前后區別
隨著(zhù)處理器從 USER 切換到 SUPER 模式,再從 SUPER 切換到 HYPER 模式,機器會(huì )賦予執行代碼更多特權。本例中,USER 模式程序只有權使用四個(gè)寄存器(RegisterA、RegisterB、RegisterC 和 UserProgramCounter)和四個(gè)指令:(ADD、MOVTO、MOVFROM和ENTER-SUPER)。此外,USER 程序只能讀寫(xiě) 0x0000_0100 至 0x0FFF_ FFFF 的存儲器。一旦進(jìn)入 SUPER 模式,處理器允許指令與 RegisterSuper 和 SuperProgramCounter 對話(huà),并允許執行 EXITSUPER 和 ENTERHYPER。此外,SUPER 程序可以訪(fǎng)問(wèn)從 0x0000_0000 至 0x7FFF_FFFF 的存儲器。
評論