1

Ryujit は SSE 命令をサポートしますが、Ryujit は 64 ビット専用です。

ほとんどの顧客は、会社のポリシーと予算 (テスト コストのため) のために、Windows 32 ビット OS に固執します。

私の理解では、Ryujit は新しい「64 ビットに最適化された JIT スキーム」です。

ただし、ご存知のように、SSE 命令セットは 32 ビットと 64 ビットに存在します。

Mono.Simd は、x86 または Arm 32 ビット プロセッサで動作します。

(Java SIMD 呼び出しは x86 および 64 ビットで動作するようです)。

私たちのプロジェクトはすべての CPU を対象としているため、「SSE をサポートしている Mono を使用するか、CPU と OS を変更してください」と顧客に伝えることは非常に困難です。

なぜ MS .NET Framework for x86 は SSE コマンドをサポートしていないのに、Ryujit はサポートしているのでしょうか?

(私はCPUの専門家ではありませんが、.NETに「このコマンドでSSEを強制する(可能であれば)」を選択するオプションがあることを願っています)

4

3 に答える 3

2

考えてみると、私にとっての理由は次のとおりです。

A) Ryujit はゼロから構築された新しい JIT コンパイラであるため、新しくて素晴らしいことができます。彼らはおそらくビルドを容易にするために64ビットに制限しました.64ビットの「現在の」JITは32ビットバージョンよりも遅い場合があったため、64ビットでは「より必要」でした.

B) 新しくてピカピカなので、新しい関数/拡張ポイント (SIMD 関数など) を簡単に含めることができます。

C) Microsoft は、「古い」.NET コンパイラについても考えたくないようです (彼らが .NET 4.5 で行ったことを、バックグラウンド スレッドに移動したことを「考えすぎ」とは考えていません)。 )。よく見ると、.NET のアセンブリ言語である CIL (Common Intermediate Language) に新しい OpCode を追加していないことがわかります (GC と .NET ライブラリに変更を加えましたが、これらは異なります。 「もの」)、そして明らかに SIMD 関数を追加するには、変更を行う必要があります

D) Mono JIT は、.NET JIT の「現在の」コンパイラよりも「新しい」ものです (Mono は後で「誕生」したため)。これは、SIMD をサポートする理由を正当化できます。

于 2015-03-21T18:14:39.720 に答える