首頁 > 軟體

龍芯二進位制翻譯技術專家答疑

2021-05-31 14:31:12

龍芯為了相容x86和ARM應用程式,對二進位制翻譯技術進行了多年的研究和實驗,並把成果整合在了自主設計的LoongArch架構中,即將釋出的3A5000是首款支援LoongArch指令集的桌面CPU。由於龍芯支援二進位制翻譯的產品尚未上市,許多開發者和使用者對此存在一些疑問,最近龍芯生態培訓工作組特別邀請了龍芯實驗室主任張福新博士,為參加生態應用遷移培訓的學員們答疑,主要內容如下:

二進位制翻譯是軟體技術還是晶片之上的過渡技術?

答:簡單的說二進位制翻譯技術是一種用軟體實現的技術。之前都是使用軟體來模擬一個CPU,在軟體中通過使用各種技術把指令進行翻譯,達到能夠在目標機器上運行的效果。嚴格的說二進位制翻譯並不完全是軟體翻譯技術,比如龍芯就在晶片內部做了一些配合工作,在龍芯CPU內部有一部分指令是用於二進位制翻譯的,所以可以說二進位制翻譯是一種軟硬體結合的技術。

Arm 架構可以利用二進位制翻譯嗎?

答:理論上來講都能夠實現從一個架構到另一個架構的翻譯。只不過是每一種架構之間的翻譯難易程度、複雜程度和開發工作量不同。

3A4000平臺很多老印表機沒驅動,有辦法在麒麟、統信上解決嗎?

答:目前已經有了一些解決方案,並應用在了一些使用者的辦公場景中,現在方案正在產品化的過程中。

龍芯上二進位制翻譯跑程式需要事先轉譯嗎?

答:二進位制翻譯有很多種方法,事先轉譯是一種做法,但是事先轉譯有一定的侷限性,它不能保證所有的指令能夠安全無誤地翻譯,所以一般也都是需要事先轉譯和動態轉譯結合的手段來進行。現在的商業系統包括蘋果的Rosetta基本都是這樣,都是事先轉譯加動態轉譯,如果這個程式從來沒跑過,那麼第一次跑的時候會慢一點,要先花時間轉譯,但是也可以一邊轉譯一邊跑,等到跑過一遍(也就是翻譯過一遍)再次跑就速度就會變快,一般都是這樣的一個策略。

國產作業系統內建二進位制翻譯了嗎?

答:目前還沒有。目前我們也都在跟作業系統廠商密切溝通和配合,隨著我們產品釋出之後,二進位制翻譯系統也會跟著國產作業系統出來。

龍芯的二進位制翻譯和蘋果的 Rosetta 有什麼異同?

答:龍芯目前做了好幾種二進位制翻譯系統,就應用層面二進位制翻譯系統來說,跟Rosetta系統的做法是非常類似的,這也是主流商用的一般做法。因為應用級別的二進位制翻譯系統的執行效率相對較高。當然,不同的地方也有很多,比如Rosetta是一種閉源的內部系統,我們也是內部系統,大家在具體實現的很多細節上也都有所不同,他們是做的從X86到ARM的翻譯,我們自己是從X86到LoongArch的翻譯。

AVX/SSE 加速模組怎麼解決的?

答:現在有很多軟體為了提高效能,使用多媒體加速指令來實現,比如在intel平臺上有AVX和SSE,在原始碼裡都可以使用編寫彙編程式碼的方式來實現,再有就是用軟體移植的方式。當然我們自己也有相應的解決方法,我們的二進位制翻譯有專門針對AVX和SSE的指令來模擬替代這種技術,實現的效率比較高。

依賴分析怎麼做的?人為去看還是有工具?

答:如果是做翻譯裡面的依賴分析,實際上在二進位制翻譯做到裡面的優化模組跟編譯器是非常相似的,每條指令翻譯出幾條指令來,如果僅僅是這樣的話效率肯定是比較差的,可以一片指令一片指令的翻譯,然後再儘量優化掉一些冗餘的指令,這樣就能夠做到幾乎一對一的翻譯,這裡面也涉及很多編譯的分析技術,大部分都是演算法做的,而演算法本身是人為設計的。

龍芯伺服器上部署 Web 程式比如 war 包,一般是 x86編譯還是需要在龍芯電腦編譯?

答:這個問題其實跟二進位制翻譯技術關係不大,web大部分技術都是跨平臺的,war包應該是java程式相關的包,龍芯平臺的JDK也是很成熟的,基本上跟x86是可以通用的,也就是說在龍芯平臺上編譯和在X86上編都是可以的。

瀏覽器的 ocx 插件能二進位制翻譯嗎?

答:從技術上來說是沒有問題的,對插件的支援和普通應用的支援稍微有些不同,這些問題我們這邊也有相應的考慮。


IT145.com E-mail:sddin#qq.com