龍芯經過指令系統二進制翻譯運行視窗系統(windows)

文章轉帖自《電子發燒友》網站。數據庫

  發展以CPU 和操做系統爲核心的自主軟硬件已經成爲中國的國家戰略。 通過自「十五」 以來的十餘年努力, 以「龍芯」、「飛騰」、「申威」 爲表明的中國自主CPU 研發取得了長足的進展, 部分設計技術達到了世界先進水平, 並在實際應用方面取得了若干突破, 出現了良好的發展勢頭。 隨着自主CPU應用和產業化的不斷深刻, 相關的軟硬件生態問題變得愈來愈突出。 雖然自主CPU 都在不一樣程度上採起了與國外CPU 兼容的技術路線, 如「龍芯」 在取得MIPS 架構受權的基礎上採起與MIPS 兼容的策略, 但比起主流的軟硬件生態, 如X86 在桌面/服務器領域的軟件生態以及ARM 在手持終端領域的軟件生態, 自主CPU 在軟硬件生態方面還處在很初級的水平, 嚴重製約了自主CPU 的產業化。服務器

  二進制翻譯技術是實現跨指令系統兼容的重要手段。 二進制翻譯技術在宿主機(host) 上用軟件模擬出一個目標機/客戶機(guest) 指令系統兼容的CPU 來, 從而在宿主機上執行客戶機的二進制代碼, 達到兼容的目的。 如在MIPS 計算機上模擬X86 指令系統, 從而實現與X86 兼容。 二進制翻譯的最大問題是效率問題, 用軟件模擬的CPU 比硬件直接實現的CPU 慢不少。 如在MIPS 計算機上使用二進制翻譯的方法運行X86 二進制程序, 比起把該程序直接從源代碼編譯成MIPS 指令並在MIPS計算機上執行, 運行速度通常有數量級的差別。架構

  經過硬件支持和軟硬件協同能夠有效提升二進制翻譯的效率。 雖然不一樣的通用指令系統結構在功能上都是完備的, 能夠經過指令組合實現各類複雜的功能, 但指令的具體定義不一樣, 翻譯起來就會走彎路。 例如, X86 的每條運算指令都要產生EFLAG 標誌位, 若是用MIPS 指令來模擬產生EFLAG 標誌, 至少須要幾十條指令, 若是在MIPS 中增長專門產生EFLAG 的指令, 則翻譯起來就能夠作到一一對應。 又如, 訪存指令都須要進行虛實地址轉換, 從X86 到MIPS 的二進制翻譯中, 要先把X86 的虛地址轉換成X86 的物理地址, 再把X86 的物理地址做爲MIPS 的虛地址轉換成MIPS 的物理地址,上述轉換過程若是由軟件實現, 須要十多條指令, 若是在MIPS 的TLB (translaTIon lookahead buffer)中增長一些特定的支持, 就能夠直接把X86 的虛地址翻譯成MIPS 的物理地址, 完全消除虛實地址轉換的開銷。性能

  龍芯CPU 在兼容MIPS 指令系統的基礎上經過MIPS 指令系統的UDI (user defined interface)進行擴充, 增長MIPS 中不具有但X86 和ARM 具有的核心功能, 造成龍芯指令系統LoongISA, 使得從X86 和ARM 的二進制到龍芯CPU 的二進制翻譯更加方便。 經過軟硬結合的二進制翻譯, 在龍芯CPU 上流暢運行X86 和ARM 的主流系統及應用, 以彌補MIPS 架構軟件生態的不足。 具體地說:(1) 在Linux 操做系統上進行從X86 到LoongISA 的系統級二進制翻譯, 以運行MS Windows 系統及其應用。 (2) 在Linux 操做系統上進行從X86 到LoongISA 的應用級二進制翻譯, 以運行基於Linux 的X86 應用。 雖然Linux 上的多數應用均可以從開源社區得到並編譯到MIPS 環境下執行, 但有少數關鍵商業應用如Oracle 數據庫沒有開源版本, 須要創建基於Linux 的從X86 到LoongISA 的二進制翻譯。 (3) 在Android 操做系統上進行從ARM 到LoongISA 的應用級二進制翻譯, 以運行基於Android的ARM 二進制應用。 Android 系統支持MIPS 指令集, 且其多數應用是基於Dalvik 虛擬機的, 在MIPS 系統上運行沒有障礙。 但有少許對性能要求較高的應用中插入了ARM 二進制碼, 在MIPS 指令系統上沒法直接運行, 所以須要創建從ARM 到LoongISA 的應用級二進制翻譯。 龍芯CPU 與X86及ARM 兼容策略如圖1 所示。網站

  龍芯二進制翻譯系統以LoongISA 指令集兼容不一樣形態的X86, ARM 指令集, 經過技術手段消除單一指令系統的壁壘, 使得MIPS, X86, ARM 等不一樣指令集的系統及應用軟件可以融合到統一的LoongISA 平臺上, 不加區別地運行。 做爲中間層的二進制翻譯器, 充分利用本地硬件支持最大化地提升模擬效率, 對上層應用軟件提供目標指令集的虛擬運行環境。 不一樣二進制的應用軟件與運行的硬件平臺之間再也不具備決定關係, 用於支持軟件開發的編譯器、彙編器, 以往被綁定在各自特定的CPU 之上, 如今都能爲LoongISA 平臺提供軟件資源。 實驗結果代表, 龍芯軟硬結合的二進制翻譯技術能夠成數量級地提升從X86/ARM 到MIPS 的二進制翻譯效率。操作系統

相關文章
相關標籤/搜索