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