Arm 上の Windows では x86 変換はどのように機能しますか?

Windows アプリケーションの多くは x86 用に作成されていますが、Arm CPU 上でも動作します。 その方法は次のとおりです。

Windows は常に、 Intel および AMD の x86 CPUしかし、10 年前にスマートフォン用の Windows RT が登場して以来、このオペレーティング システムは徐々に、より使いやすいものになってきました。 アームCPU. 現在、Windows 10 と Windows 11 はどちらも Arm CPU を完全にサポートしていますが、落とし穴があります。 オペレーティング システム自体はこれらの CPU 上で問題なく動作しますが、ほとんどのアプリケーションは Arm 互換バージョンをリリースしていません。 Windows は Arm チップ上で実行できますが、実際に使用するプログラムが少ないのは問題です。

ただし、Microsoft は次のような巧妙なトリックを用意しています。 Arm ベースのマシン上で x86 アプリを実行するためのエミュレーター. これは、2017 年にトランスレーターが登場して以来、Windows on Arm に勢いを与えてきた重要な要素です。 ここでは、エミュレータがどのように動作するのか、そして Arm PC が x86 チップ用に作られたソフトウェアを実行したい場合にエミュレータを使用する必要がある理由を説明します。

Arm CPU の x86 コードをリアルタイムでエミュレート

ある種類のプロセッサ用に作成されたコードをエミュレートして、別の種類のプロセッサでも実行できるようにするというアイデアは、何も新しいものではありません。 これは、ゲーム エミュレーションの仕組みであり、古いビデオ ゲームを、大幅に異なるハードウェアを備えた新しいデバイスで実行するためによく使用されます。 Arm PC 上で x86 アプリを実行すると、Windows はアプリのコードのブロックを取得し、それを Arm チップ上で実行できるものにコンパイルします。 これはすべてリアルタイムで行われ、Windows は翻訳されたすべてのコードをキャッシュする必要があるため、何度も再翻訳する必要はありません。

残念ながら、エミュレートされたアプリでは、ハードウェア用に設計されたコードと比較してパフォーマンスが低下します。 テスト データが非常に少ないため、Windows 上でエミュレートされたコードを実行するとどの程度パフォーマンスが低下するかを言うのは困難ですが、比較のために、

Apple の Rosetta 2 トランスレーター (x86 アプリも Arm に変換します) 約 20% 損失します。 この数値を減らすことは可能ですが、通常、エミュレーションと変換では、何があってもパフォーマンスが低下します。

x86 アプリケーションがエミュレーションなしでは Arm で実行できない理由

なぜソフトウェアを x86、Arm、その他の種類の CPU 向けに特別に作成する必要があるのか​​疑問に思われるかもしれません。 それは、 アーキテクチャの違い、この場合は、命令セット アーキテクチャ (ISA) について話しています。 これらはプロセッサの最も基本的な設計であり、乗算のような単純なものか、AVX のような複雑なものをネイティブに実行できるかどうかを決定します。 ISA を変更すると、CPU が読み取る基本的な 1 やゼロに至るまで、ソフトウェアがハードウェアと対話する最も基本的な方法に影響します。

x86 は Intel および AMD CPU の ISA であり、歴史的には Windows が実行できる唯一の CPU でした。 一方、Arm は主にスマートフォンに使用されており、PC ソフトウェアと電話ソフトウェアの重複部分はほとんどありません。 当然のことながら、ほとんどのプログラムは x86 または Arm 用に作成されており、Arm 上の Windows の場合、これは大きな問題でした。 翻訳版は 2020 年にリリースされませんでしたが、Windows RT (Arm をサポートする最初の Windows バージョン) は 2020 年にリリースされました。 2012.

Windows が Arm をサポートし始めてから約 10 年が経過しましたが、ネイティブ アプリはどこにあるのでしょうか? 主な問題は、特に開発者がそれをうまくやりたい場合、別の ISA 用にソフトウェアを書き直すには時間と専門知識が必要なことです。 開発者がある ISA から別の ISA にアプリを移植する際に適切な注意を払わないと、不具合やバグが発生する可能性があります。 この好例は、Arm 上の Windows 用 Photoshop です。 Arm上のWindows上でネイティブに動作します。 Lenovo Thinkpad X13s のレビューはまだ続きます、OpenCLとOpenGLがサポートされていないといういくつかのエラーと多くの警告が発生しました。 Windows 上で Arm を使用するユーザー ベースがはるかに少ないことと相まって、開発者が気にするインセンティブは少なくなります。

したがって、開発者がネイティブ ソフトウェアの作成にリソースを費やすことができない、または費やすつもりがない場合、代替手段はエミュレーションです。 Arm 上の Windows 用の x86 アプリの変換は完璧ではありませんが、それがまったく機能することは印象的であり、場合によってはパフォーマンスが低下することもありますが、アプリが期待どおりに実行されることを知っておく価値はあります。 少なくとも、開発者が Windows on Arm を無視できなくなるまでは、翻訳とエミュレーションによって、ハードウェアとソフトウェアのエコシステムに切望されていた強化がもたらされます。