ARM システム上で x86 ゲームを実行できるようにする Box64 および Box86 エミュレーターの新しいバージョン

Box86 0.2.6 および Box64 0.1.8 エミュレータのリリースは、ARM、ARM86、PPC86LE、および RISC-V プロセッサ上の x64 および x64_64 アーキテクチャ用に構築された Linux プログラムを実行するために公開されています。 プロジェクトは 86 つの開発チームと同期して開発されます。Box32 は 86 ビット x64 アプリケーションを実行する機能に限定されていますが、Box64 は 86 ビット実行可能ファイルを実行する機能を提供します。 このプロジェクトは、wine と Proton を介して Windows ビルドを起動する機能など、ゲーム アプリケーションの起動を組織することに細心の注意を払っています。 プロジェクトのソース テキストは C 言語で書かれており、MIT ライセンスに基づいて配布されます (Box64、BoxXNUMX)。

このプロジェクトの特徴は、アプリケーション自体のマシンコードと特定のライブラリにのみエミュレーションを適用するハイブリッド実行モデルの使用です。 libc、libm、GTK、SDL、Vulkan、OpenGL などの汎用システム ライブラリは、ターゲット プラットフォームのネイティブなバリアントに置き換えられます。 したがって、ライブラリ呼び出しはエミュレーションなしで実行されるため、パフォーマンスが大幅に向上します。

ターゲット プラットフォームのネイティブ置換がないコードのエミュレーションは、ある機械命令セットから別の機械命令セットへの動的再コンパイル (DynaRec) 手法を使用して実行されます。 機械語命令の解釈と比較して、動的再コンパイルは 5 ~ 10 倍のパフォーマンスを示します。

パフォーマンス テストでは、Armhf および Aarch86 プラットフォームで実行した場合、Box64 および Box64 エミュレーターは QEMU および FEX-emu プロジェクトを大幅に上回り、一部のテスト (glmark2、openarena) では、ターゲット プラットフォームのネイティブ アセンブリを実行するのと同等のパフォーマンスを達成しました。 。 コンピューティング集約型の 7-zip および dav1d ベンチマークでは、Box64 のパフォーマンスはネイティブ アプリケーションのパフォーマンスの 27% ~ 53% でした (QEMU の 5 ~ 16%、FEX-emu の 13 ~ 26% と比較)。 さらに、Apple が ARM M2 チップを搭載したシステムで x86 コードを実行するために使用している Rosetta 1 エミュレータとの比較も行われました。 Rosetta 2 は、7zip ベースのテストをネイティブ ビルドの 71% で実行し、Box64 は 57% で実行しました。

ARM システム上で x86 ゲームを実行できるようにする Box64 および Box86 エミュレーターの新しいバージョン

アプリケーションの互換性に関しては、テストした 165 のゲームのうち、約 70% で成功しました。 作業量は約 10% 増加しますが、一定の予約と制限があります。 サポートされているゲームには、WorldOfGoo、Airline Tycoon Deluxe、FTL、Undertale、A Risk of Rain、Cook Serve Delicious、およびほとんどの GameMaker ゲームが含まれます。 問題が指摘されているゲームのうち、Unity3D エンジンをベースにしたゲームが挙げられています。これは Mono パッケージに関連付けられていますが、Mono で使用される JIT コンパイルのため、そのエミュレーションはまだ機能しない場合があり、グラフィックもかなり高いです。 ARM ボードでは必ずしも達成できるとは限らない要件。 GTK アプリケーション ライブラリの置き換えは現在 GTK2 に限定されています (GTK3/4 の置き換えは完全には実装されていません)。

新しいリリースの主な変更点:

  • Vulkan ライブラリのバインディングを追加しました。 Vulkan および DXVK グラフィックス API のサポートが追加されました (Vulkan 上での DXGI、Direct3D 9、10、11 の実装)。
  • GTK ライブラリのバインディングが改善されました。 GTK アプリケーションで一般的に使用される gstreamer とライブラリのバインディングを追加しました。
  • RISC-V および PPC64LE アーキテクチャの初期サポート (これまでのところ解釈モードのみ) を追加しました。
  • SteamPlay サポートと Proton レイヤーを改善するためにバグ修正が行われました。 Raspberry Pi 64 や 3 などの AArch4 ボード上で Steam の多くの Linux および Windows ゲームを実行することができます。
  • メモリ管理、mmap の動作、メモリ保護違反の監視が改善されました。
  • libc でのクローン システム コールのサポートが改善されました。 新しいシステムコールのサポートが追加されました。
  • 動的再コンパイル エンジンでは、SSE/x87 レジスタの動作が改善され、新しいマシン コードのサポートが追加され、float および double 数値の変換が最適化され、内部ジャンプの処理が改善され、新しいアーキテクチャがサポートされました。簡略化された。
  • ELF ファイル アップローダーが改善されました。

出所: オープンネット.ru

コメントを追加します