独占デビュー!openEuler メインラインは LuaJIT RISC-V JIT テクノロジーを統合

RISC-V SIG は、メインラインとともにリリースされる openEuler 23.09 の革新的なバージョンに LuaJIT RISC-V サポートが統合されることを期待しています。このリリースでは、完全な LuaJIT サポートと openResty などの関連ソフトウェアのサポートを備えた RISC-V 環境が提供されます。

RISC-V SIG メインラインの推進作業の進展に伴い、RISC-V アーキテクチャに基づく LuaJIT および関連ソフトウェアのサポートも openEuler メインライン コードに組み込まれました。これは、openEuler が、メインライン ブランチで RISC-V アーキテクチャ サポートを備えた LuaJIT を提供する最初のメインストリーム ディストリビューションになることを示しています。

LuaJITのメリットと特徴

LuaJIT は、効率的なインタプリタとエレガントなジャストインタイム コンパイル エンジンを備えた効率的な Lua5.1 実装であり、オリジナルの Lua5.1 の数倍の平均パフォーマンスを備えているだけでなく、FFI、Bitop などの機能も備えています。拡張機能と一部のハイエンド Lua バージョン。上記の理由により、LuaJIT は広く使用されており、事実上の Lua5.1/5.2 ランタイムとなっています。

LuaJIT RISC-V プロジェクトの背景

LuaJIT RISC-V (略して LJRV) は、LuaJIT を 64 ビット RISC-V プラットフォームに移植するプロジェクトで、RISC-V プラットフォームに効率的な Lua ランタイムを提供し、LuaJIT に依存するプロジェクトも実行できるようにすることを目的としています。 RISC-Vプラットフォーム上でも支障なく動作します。以前は、国内外のさまざまなオープンソース配布プラットフォームにおいて、関連する作業はまだ技術的に空白でした。

技術的な課題と作業の進捗状況

LuaJIT のコア部分はアセンブリで記述されているため、さまざまな命令セット プラットフォームへの移植の複雑さは非常に高くなります。特に、LuaJIT の JIT 部分は LLVM などの一般的なコンパイルフレームワークに依存しておらず、これまでは x86 や ARM などのプラットフォームにのみ移植されており、RISC-V 命令セットの移植作業はまだ始まっていません。 LuaJIT に依存するソフトウェア パッケージの多くは RISC-V アーキテクチャであり、Lua のさまざまなディストリビューションでは動作しない場合や、低速なオリジナルの Lua5.1 しか使用できない場合があります。

現在、中国科学院ソフトウェア研究所は、DynASM動的アセンブラ、インタプリタランタイム、RISC-Vバックエンドを含むLuaJITのほとんどの機能の移植に成功し、PUC Lua5.1回帰テストとLuaJIT回帰テストに合格しました。 。同時に、RISC-V 64 プラットフォーム上で実行できる LuaJIT に依存するプログラムには、Sysbench、Neovim、OpenResty、LÖVE などが含まれます。既知の問題は、Unwinding 関数が完全には移植されておらず、JIT にいくつかの未知のバグが発生する可能性があることです。関連する作業が完了して修復された後、プロジェクトはさらに上流に統合されます。

さらに、openEuler のメインラインでは、openResty、wrk など、luajit に依存するいくつかのパッケージが深く統合されており、移植作業にはさらなる適応が必要です。

openEuler メインラインにマージされました

LuaJIT 移植の結果に基づいて、RISC-V SIG は関連するパッチをパッケージ化し、それらを openEuler の LuaJIT マスター ブランチにマージします。これは、openEuler 23.09 の今後の革新的なバージョンから、openEuler は RISC-V プラットフォームの LuaJIT と関連するエコロジー ソフトウェア パッケージをネイティブにサポートすることを意味します。これは、メインライン ブランチで LuaJIT の RISC-V アーキテクチャ サポートを提供する最初のメインストリーム リリースになります。 。

同時に、LuaJIT 開発作業に基づいて、RISC-V SIG は、LuaJIT が強く依存する openResty およびその他のソフトウェア パッケージに対する対応するサポートも提供し、現在はメインラインに統合されています。下の図は、LuaJIT に依存するオープンソース ゲーム Minetest の動作のデモンストレーション図です。これをベースにした環境は、openEuler RISC-V プラットフォームと Unmatched 開発ボードです。ユーザーテストのフィードバックによると、ゲーム画面はスムーズで、操作遅延も少ないとのことです。

写真

性能比較と結果表示

VisionFive 2 と LicheePi 4A ではそれぞれ PUC Lua5.1、LJRV を使用して JIT をオフにし、LJRV を使用して JIT をオンにし、Lua-Benchmarks を実行しました。TH1520 および JH7110 環境での結果は次のとおりです。

写真

写真

おすすめ

転載: blog.csdn.net/openEuler_/article/details/132599432