RISC-V SIG 預(yù)期隨主線發(fā)布的 openEuler 23.09 創(chuàng)新版本會集成 LuaJIT RISC-V 支持。本次發(fā)版將提供帶有完整 LuaJIT 支持的 RISC-V 環(huán)境并帶有相關(guān)軟件如 openResty 等軟件的支持。
隨著 RISC-V SIG 主線推動工作的進(jìn)展,LuaJIT 和相關(guān)軟件在 RISC-V 架構(gòu)下的支持也被合入到 openEuler 主線代碼中。這標(biāo)志著,openEuler 將成為首個在主線分支為 LuaJIT 提供 RISC-V 架構(gòu)支持的主流發(fā)行版。
LuaJIT 的優(yōu)勢與特點
LuaJIT 是一個高效的 Lua5.1 實現(xiàn),有高效的解釋器與優(yōu)雅的即時編譯引擎,擁有相較原版 Lua5.1 平均數(shù)倍的性能,不僅如此,它也有諸如 FFI、Bitop 擴(kuò)展和部分 Lua 高版本的特性。基于以上原因,LuaJIT 被廣泛使用,成為了事實上的 Lua5.1/5.2 運行時。
LuaJIT RISC-V 項目背景
LuaJIT RISC-V(簡稱 LJRV)是將 LuaJIT 移植到 64 位 RISC-V 平臺上的項目,旨在為 RISC-V 平臺提供一個高效的 Lua 運行時,讓依賴 LuaJIT 的項目在 RISC-V 平臺上也能無障礙運行。此前,相關(guān)工作在國內(nèi)外各個開源發(fā)行版平臺仍然屬于技術(shù)空白。
技術(shù)挑戰(zhàn)與工作進(jìn)展
由于 LuaJIT 的核心部分使用匯編編寫,移植到不同指令集平臺中的復(fù)雜性很大。尤其是 LuaJIT 的 JIT 部分不依賴于如 LLVM 的通用編譯框架,此前僅在 x86、ARM 等平臺完成移植,而 RISC-V 指令集的移植工作尚未開始,大量依賴 LuaJIT 的軟件包在 RISC-V 架構(gòu)的各個發(fā)行版上或無法運行,或只能使用低速的原版 Lua5.1。
目前,中科院軟件所成功移植了 LuaJIT 的大部分功能,包括 DynASM 動態(tài)匯編器,解釋器運行時和 RISC-V 后端,現(xiàn)已通過 PUC Lua5.1 回歸測試與 LuaJIT 回歸測試。同時,可以在 RISC-V 64 平臺上運行依賴 LuaJIT 的程序有 Sysbench,Neovim,OpenResty,L?VE 等。已知存在的問題是 Unwinding 功能尚未充分移植,JIT 可能會出現(xiàn)一些未知的 bug。待相關(guān)工作完成與修復(fù)后,工程會進(jìn)一步合入上游。
另外在 openEuler 主線上,一些依賴 luajit 的包,都是深度集成形式的,如 openResty,wrk 等,移植工作需要進(jìn)行進(jìn)一步適配。
合入 openEuler 主線
基于 LuaJIT 的移植成果,RISC-V SIG 打包了相關(guān) patch 并且合入了 openEuler 的 LuaJIT master 分支。這意味著從即將發(fā)布的 openEuler 23.09 創(chuàng)新版本開始,openEuler 將原生支持 RISC-V 平臺的 LuaJIT 以及相關(guān)生態(tài)軟件包,這將是首個在主線分支為 LuaJIT 提供 RISC-V 架構(gòu)支持的主流發(fā)行版。
同時,在 LuaJIT 開發(fā)工作的基礎(chǔ)上,RISC-V SIG 也為 openResty 等 LuaJIT 強(qiáng)依賴的軟件包提供了相應(yīng)的支持,目前已合入主線。下圖是依賴 LuaJIT 的開源游戲 Minetest 的運行演示圖,基于的環(huán)境是 openEuler RISC-V 平臺和 Unmatched 開發(fā)板。根據(jù)用戶測試反饋,游戲畫面流暢,操作延遲低。
性能對比及結(jié)果展示
我們在 VisionFive 2 和 LicheePi 4A 上分別使用 PUC Lua5.1、LJRV 關(guān)閉 JIT、LJRV 開啟 JIT,運行了 Lua-Benchmarks。在 TH1520 和 JH7110 環(huán)境的結(jié)果如下:
聯(lián)系我們
如果您對 RISC-V 感興趣,歡迎加入 RISC-V SIG 交流群,討論更多關(guān)于 RISC-V 的更多內(nèi)容,為推動 openEuler & RISC-V 生態(tài)貢獻(xiàn)力量
關(guān)于作者
楊延玲,中科院軟件所 PLCT 實驗室實習(xí)生,歐拉開源社區(qū) RISC-V SIG 成員,目前在溫州大學(xué)讀研二,負(fù)責(zé)協(xié)助 RISC-V SIG 和 ROS SIG 的日常運營。
審核編輯:湯梓紅
-
移植
+關(guān)注
關(guān)注
1文章
379瀏覽量
28130 -
代碼
+關(guān)注
關(guān)注
30文章
4788瀏覽量
68603 -
RISC-V
+關(guān)注
關(guān)注
45文章
2277瀏覽量
46158 -
openEuler
+關(guān)注
關(guān)注
2文章
313瀏覽量
5877
原文標(biāo)題:獨家首發(fā)!openEuler 主線集成 LuaJIT RISC-V JIT 技術(shù)
文章出處:【微信號:openEulercommunity,微信公眾號:openEuler】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論