Loongson は以前、MIPS ISA にほぼ完全に基づいた CPU を発明しましたが、最近では Loongarch として知られる自社開発の ISA に切り替えていました。 この「最近の」ISA は、MIPS のセマンティクスのかなりの量を保持していますが、互換性のないエンコーディングを使用しています。 Loongarch はまた、実行可能な中国国内の CPU を構築するという Loongson の夢をより高く、より強力にするために長期化します。
Loongarch の LSX および LASX ベクトル拡張は、この顕著な例です。 LSX は、128 ビットのベクトル レジスタと対応する命令を備えた x86 上の SSE に比較的優れています。 LASX は、すべての拡張機能が 256 ビット ベクトルで動作するため、AVX2 とは対照的です。 SSE および AVX2 との不公平さから、LSX および LASX はもはや公に文書化されていません。 繰り返しになりますが、Loongnix は LSX/LASX の満足できるツールチェーンを提供しています。 これは、LSX と LASX の検査命令を所有して、それらをいじることができることを意味します。 私はこれらの ISA 拡張機能を完全にファイルする時間がないので、この記事では注目を集める重要なポイントをいくつか取り上げます.
暫定的な紹介
LSXは VR31 によって VR0 という名前の 128 ビット レジスタを提供し、LASX は XR31 によって XR0 という名前の 256 ビット レジスタを提供します。 SSE と AVX には本当に感服します。これらのレジスタは、それぞれにエイリアス化されています。 これらは 64 ビット FP レジスタ (F0 から F31) にもエイリアスされます。 つまり、F1 は XR1 の下位 64 ビットを指し、VR1 は下位 128 ビットを指します
。 すべての LSX と LASX は、ベクトルを操作するための異なる命令を提供します。 ファッショナブルなものは、ベクトルの足し算、掛け算を賞賛し、常識的な操作は、あなたが焦点を当てていることを正確に実行します。 浮動レベルの命令は FP32 または FP64 の両方のパーツで機能しますが、整数の命令は 8 ビット、16 ビット、32 ビット、または 64 ビットのパーツで機能します。 もちろん、128 ビットと 256 ビットのロード/ストア命令もあります。 算術命令のほかに、LASX には並べ替え、最小/最大、絶対コスト、およびロード アンド ブロードキャスト (何らかの目的で XVLDREPL として知られている) の命令があります。 間違いなく、これらのいずれかが決定された AVX2 相当物を所有していません。 今日を取り、対応する啓発の瞬間とすべての側面の最大値を返す最大命令(XVMAXI)のバリアントがあります。 その命令が5ビットの自己規律を使用してインスタントを2の補数の符号付きコストとしてエンコードするという事実にもかかわらず、それは適度に注目を集めています.15(または-15 より小さい)。 ファイル スクートの場合、LASX には、指定されたベクター レーンの値を reminiscence または GPR に渡す命令があります。ベクトル操作の有益な保護があります。 あたかも欠けているように見える明示的なものについては、ビデオエンコードを高速化するための絶対的な違いの合計を賞賛してください。 レジスタをエンコードしたMIPSとは不公平命令の中心である Loongarch は、レジスタ フィールドを最も重要度の低いビットに打ち込みます。 それは LSX と LASX にも当てはまります。 MIPS の伝統に歩調を合わせて、LSX/LASX 命令は非敵対的です。この機能は、プロビジョン レジスタ間で間違いなく上書きすることを好みません。 これは、融合乗算演算が FMA4 と同一であり、4 つのレジスタ フィールドが必要であることを意味します。 Loongarch は固定次元を使用するため、32 ビット命令は MIPS をかなり賞賛します。オペコードの自己規律は、3 つのレジスタ オペランドよりも多くのエンコーディングを有効にするために可変次元になるようです。 LSX と LASX のオペコードは 1 ビットずつ変化することがあります。命令は、128 ビットまたは 256 ビットのベクトル次元を対象としています。 しかし、それは普遍的な教育ではありません。 場合によっては、オペコードの下にある今日の一対のビットが情報形式を指定しているように見えます。 Loongson は、これらのバリエーションを LASX および LSX 命令プット拡張に組み込みました。 特に、Loongarch unruffled は、単一の命令で汚染、インデックス、およびスケールを追加で指定する可能性があることを示していません。 すべての x86 と ARM は、おそらく追加でそれを実行する可能性があることを示しており、より少ない命令で配列アクセスを廃止することができます. . 命令プットを完全に分析するつもりはもうありませんが、以下にいくつかの奇妙さの例を示します.命令のエンコード例
部分的なレジスタエントリ
まず、128 ビットの LSX 数学命令が 256 ビットの LASX レジスタ全体にマップされます。 すべての VFADD.S (パックされた FP32 部分を 128 ビット VR レジスタに追加する) および VADD.W (パックされた 32 ビット整数を 128 ビット ベクトル レジスタに追加する) は、 256 ビット レジスタのほとんどの場合、128 ビットの数学命令 (VFADD) は、オペコードが異なるという事実にもかかわらず、256 ビットの同一 (XVFADD) と同じように動作します。 x86 の動作とは異なり、256 ビットのベクトルに 128 ビットの演算を配置すると、上半分がそのまま残ります。
回想から部分的なレジスタ エイリアスにロードすると、さらに面白くなります。 それ以外の場合は常に、スカラー FP ロードによって 128 ビット レジスタの余分なビットがゼロになるという事実にもかかわらず、x86 は上位半分を保持したままにします。 Loongson では、レジスターの緩和に何が起こるかは、定義されておらず、合理的に予測できないように見えます。
Loongson の Loongarch リファレンス マニュアルには、64 ビット FP レジスタの過剰な 32 ビットは、FLD.S を使用した後に未定義になると書かれています。 FLD.S は、回想から FP32 コストをまとめて、ターゲット レジスタの最初の 32 ビットに配置します。 ビットの緩和は定義されていませんが、通常、次の 32 ビットには、回想からの次の 32 ビット コストが割り当てられます。 つまり、reminiscence サブシステムは 64 ビットの粒度でアクセスをネイティブに処理し、それより小さくすることは意図されていません
。
最初の 64 ビットより上で発生することは、完全にランダムであるように見えます。 パーツがゼロになることもあり、急速にガベージになることもあり、FLD.S 命令が急速に 256 ビット ロードとして機能することもあります。
FLD.S ロードを 16 KB ページの中断と同じくらい押し込むと、余分なものをロードするとページ境界が台無しになるため、ビット 32 から 63 も非常に予測不可能であることが判明します。 . 間違いなく、最新の結果はどちらもゼロであるか、キャッシュ ラインの先頭からロードされています。 時々、追加のアスペクトもロードされます。
256 ビットのレジスタを所有している場合、3A5000 は同様に奇妙な動作を示します。 VLD (128 ビット ベクター ロード) 付きの前半を 1 つずつ所有します。 着実に、VLD 命令は XVLD を称賛するように動作し、256 ビットをベクトル レジスタ全体にまとめます。 上位 128 ビットがページ境界をまたいでいる場合、結果は非常にランダムになります。
ここでのポイントは、Loongson の 3A5000 が、レジスターが 128 ビットまたは 256 ビットのコストを保持しているかどうかをヤーンに取り込むことです。 その場合、ベクトル レジスタの下位ビットを操作すると、上位ビットに予測できない影響が生じます。 Loongson は、レジスタのサブセットに対する操作の後、ベクトル レジスタの上位ビットが未定義であると考えているに違いありません。 理論的には、これにより効率が大幅に向上するか、廃止が簡素化されます。 一部の x86 CPU では、ベクトル レジスタの減少半分で作業しているときに、ベクトル レジスタの余分なビットを保持することに関連するペナルティが発生する可能性があります。 お知らせしますが、Sandy Bridge は、AVX YMM レジスタの上半分を宣言するように設計された「保存された啓発」との間で遷移するときに、70 サイクルのペナルティを被る可能性があります。
そしてまたもや、ロンソンがクリアペナルティーを食らう。 スカラー フローティング レベル操作がベクター操作の前にある場合、FP/ベクターの名前変更スキルは約 32 エントリ減少します。 レジスタがすべての異なるものにエイリアス化されていると仮定しても (F0-F31 は XR0-XR31 と同じアーキテクチャ レジスタを参照)、コアが一度に 1 つずつ格納する必要があることに感心しているように見えます。 Sandy Bridge はさらに悪化しており、スカラー演算とベクトル演算を混在させると、FP の名前変更スキルが大幅に低下します。 Skylake を称賛する最近の CPU の多くは、並べ替えスキルに影響を与えていません。より強くするため、ここではその FPU とベクトルの実装を見ていきます。 3A5000 にはツイン ポート FPU があり、256 ビット実行用にネイティブ メイクが強化されています。 すべての実行ユニットとレジスタは 256 ビットです。 実行ユニットにフィードするために、L1D はサイクルごとに 2 つの 256 ビット アクセスをアドレス指定できます。 それぞれが公正であり、大衆でもあり、公正であり、店でもあります。 Zen 1 とは異なり、256 ビットの命令を 2 つの 128 ビットのマイクロオペレーションに分割することはありません
。
ベクトル整数と常識的な操作は、すべてのパイプを使用できます。簡単な操作は提供され、ビットごとの操作は単一サイクルのレイテンシーを果たします。 より洗練された演算は、順列または整数の乗算を賞賛し、3 ~ 4 サイクルかかります。これは、比較的最初の支払いです。 浮動レベル操作の場合、ベクトル単位はあまり満足できません。 FP は、実際に理想的なパイプを提供し、増殖させ、Sandy Bridge や古い設計との類似点を作成します。 Loongson は独自の FMA メイクを強化していますが、すべてのパイプが 1 つの FMA ユニットを構成しています。 そのセットアップにより、FMA 操作は、FP の追加または FP の乗算と並行して苦悩することができます。 しかし、繰り返しになりますが、FP 加算、FP 乗算、および FMA 命令の最適な組み合わせは、2 IPC に合理的に到達しません。これは、おそらく、最適ではないパイプ割り当てと、共有 FMA ユニットの競合が原因であると考えられます
浮動レベルの実行ユニットは、整数のものよりも大きく、余分な活力を必要とする傾向があります。 Loongson のアプローチは、256 ビットのベクトル次元の利点を最大の効率性を実現するために活用することに間違いなく興奮していました。 フローティング レベルのスループットは、機能が 256 ビットのベクトルを使用できると仮定すると、Zen 1 と一致します。 ただし、3A5000 は、1 サイクルあたり 2 つの 256 ビット FMA 命令を実行する可能性がある Skylake の影響を受けます。 Loongson はレイテンシーにも悩まされています。 ファッショナブル FP 操作は 5 サイクルのレイテンシで実行されます。これは、特に 2.5 GHz の低いクロック速度で有益であるため強力です。 比較のために、Zen 1 は FP 提供を実行でき、3 サイクルのレイテンシで乗算します。 Zen 1 独自の 5 サイクル レイテンシでの FMA 操作。
3A5000 スループット/レイテンシ
毎回 xvmul.d パックされた 64 ビット整数との 256 ビット ベクトル乗算 2/サイクル
4サイクルレイテンシ いちいちxvxor.v
256 ビットのビット単位の見慣れない or2/サイクル 1 サイクル レイテンシいちいち xvsll.h
256- bit vector shift
1サイクルあたり2
1サイクルのレイテンシ 毎回 xvfadd.s パックされた FP32 パーツを使用した 256 ビットのベクトル加算 2 1 サイクルあたり
5 サイクル レイテンシ FADDパイプ
xvfmul.s
パックされた FP32 パーツを使用した 256 ビット ベクトル乗算 2/サイクル 5 サイクル レイテンシ )FMULパイプ
xvfmadd.d
パックされた FP64 パーツを使用した 256 ビット ベクトル融合乗加算 1サイクルあたり1 5 サイクル レイテンシ それぞれの、ただし最も効率的な 1 つの実行ユニット
xvpermi.d
256 ビット順列、インスタントで管理 2/サイクル 3サイクルレイテンシ いちいち
)この真実の結果、ロンソンは現れないベクトル実行ユニットで特に過度に狙いを定めているかのように。 Zen 1 には 128 ビットの実行ユニットがあるという事実にもかかわらず、3A5000 は Zen 1 よりもサイクルごとに余分なベクトル演算をプッシュすることはありません。 そのフローティング レベルの側面は、Intel および AMD の 2017 時代のテクノロジとは対照的に、過度のレイテンシと低いスループットを備えているため、あまり頑丈ではありません。 Intel と AMD が余分なポートと余分なスループットを自由に持ち運ぶことができるという事実にもかかわらず、非 FP 実行はより高くなります。エントリ FP スケジューラと 96 個のベクトル レジスタが手元にあり、名前を変更できます (上記の注意事項があるにもかかわらず)。 32 個の非投機的レジスターを追加すると、128 個のベクトル レジスター全体を調べることができます。 これらのレジスタは 256 ビットであり、ベクトル RF スキル全体で 4 KB を提供します。 Zen 1 は、統合された 36 エントリの FP スケジューラを使用し、その前に 64 エントリの非スケジューリング キューがあります。 したがって、AMD は、256 ビットの命令を 2 つのマイクロオペレーションに分割する必要がある場合でも、実行待ちの強力な追加オペレーションを検出できます。 Loongson は、レジスタ ファイル スキルで優位に立つことができます。なぜなら、最も効率的な AMD には 128 ビットの巨大なレジスタ (およびそれら全体で 160) があるからです。 しかし、その利点は、機能が 256 ビットのベクトルのロードを消費する場合に最も効率的であることを確認します。
実行ユニットの式とリソースのスケジューリングによって、3A5000 の FPU は過度の効率と低活力の実装の間のどこかに到達します。 それはもはや Zen 1 に匹敵するものではなく、Skylake に匹敵するものではありません。 Loongson の 256 ビットのベクトル幅と統合されたスケジューラーは、Ampere Altra よりも優れているはずですが、libx264 をチェックアウトしたところ、実際にはそうではありませんでした。 3A5000 は、Intel の以前の Goldmont Plus ベースのほぼ完全な Celeron J4125 を、同じビデオ エンコーディングで説得力を持って打ち負かしています。 それから、3A5000 よりも壮大な活力低下ターゲットのゴールドモント プラスの目標をもう一度、ゴールドモント プラスには AVX または FMA の指示がありません。
最終フレーズ
互換性のないエンコーディングを利用することで、Loongson は最新の ISA があることを知らせ、MIPS とは別にそれを作成することができます。 Loongarch と MIPS は、MIPS64 マニュアルを追加で費やす可能性があるレベルまでセマンティクスのかなりの山を構成しますが、MIPS の能力を理解して Loongarch と呼んでも、ISA の権利に対処することを好みません。 この形式はかなり理にかなっています。 セマンティクス機能を維持することで、Loongson は多くのツールチェーンをすばやく再利用できます。 最新の ISA のエンコーディング機能を変更し、ライセンスの制限に縛られていません。
AVX と SVE と並んで、Loongson の LASX は 128 ビットを超えるベクトル次元を取るもう 1 つの ISA 拡張機能です。 . さらに重要なことに、Loongson は、国内の CPU 能力を構築するための中国の取り組みの段階です。 LASX は、中国が過度の効率化を目指していることを示唆しています。なぜなら、128 ビットのベクトル実行は、活力の低い機能には十分であり、過度の効率化はもはや問題ではないからです.
しかし、Loongson 3A5000 の LASX 実装は決してAMD および Intel のデスクトップ CPU に相当する AVX2 の実装には、もはや積極的ではありません。 Skylake と Zen 1 はそれぞれ独自のより広いベクトル実行セットアップを備えており、レイテンシを吸収するために追加の操作を実行する可能性があります。 3A5000 の低クロックは、リモートで新しいデスクトップ CPU に完全に勝っていることを確認して、棺桶に大きな爪を置きます. 確かに、過剰なクロック速度で 256 ビットのベクトル実行ユニットを動作させることは、もはや簡単なことではありません。 しかし、AMD と Intel 自身が、それを差し控える有益なスキームを発見しました。
もしあなたが私たちの記事やジャーナリズムを賞賛し、私たちの努力で私たちをより強くしたいのであれば、私たちの
Patreon または当社の ペイパルあなたは私たちの式または暴露で一対のドルを投げることを所有することができます. 不和。
𝚆𝚊𝚝𝚌𝚑 𝙽𝙾𝚆 📺
4サイクルレイテンシ いちいち
xvxor.v
256 ビットのビット単位の見慣れない or2/サイクル 1 サイクル レイテンシいちいち xvsll.h
256- bit vector shift
1サイクルのレイテンシ
5 サイクル レイテンシ FADDパイプ
xvfmul.s
5 サイクル レイテンシ )FMULパイプ
xvfmadd.d
5 サイクル レイテンシ それぞれの、ただし最も効率的な 1 つの実行ユニット
xvpermi.d
いちいち
)この真実の結果、ロンソンは現れないベクトル実行ユニットで特に過度に狙いを定めているかのように。 Zen 1 には 128 ビットの実行ユニットがあるという事実にもかかわらず、3A5000 は Zen 1 よりもサイクルごとに余分なベクトル演算をプッシュすることはありません。 そのフローティング レベルの側面は、Intel および AMD の 2017 時代のテクノロジとは対照的に、過度のレイテンシと低いスループットを備えているため、あまり頑丈ではありません。 Intel と AMD が余分なポートと余分なスループットを自由に持ち運ぶことができるという事実にもかかわらず、非 FP 実行はより高くなります。エントリ FP スケジューラと 96 個のベクトル レジスタが手元にあり、名前を変更できます (上記の注意事項があるにもかかわらず)。 32 個の非投機的レジスターを追加すると、128 個のベクトル レジスター全体を調べることができます。 これらのレジスタは 256 ビットであり、ベクトル RF スキル全体で 4 KB を提供します。 Zen 1 は、統合された 36 エントリの FP スケジューラを使用し、その前に 64 エントリの非スケジューリング キューがあります。 したがって、AMD は、256 ビットの命令を 2 つのマイクロオペレーションに分割する必要がある場合でも、実行待ちの強力な追加オペレーションを検出できます。 Loongson は、レジスタ ファイル スキルで優位に立つことができます。なぜなら、最も効率的な AMD には 128 ビットの巨大なレジスタ (およびそれら全体で 160) があるからです。 しかし、その利点は、機能が 256 ビットのベクトルのロードを消費する場合に最も効率的であることを確認します。
実行ユニットの式とリソースのスケジューリングによって、3A5000 の FPU は過度の効率と低活力の実装の間のどこかに到達します。 それはもはや Zen 1 に匹敵するものではなく、Skylake に匹敵するものではありません。 Loongson の 256 ビットのベクトル幅と統合されたスケジューラーは、Ampere Altra よりも優れているはずですが、libx264 をチェックアウトしたところ、実際にはそうではありませんでした。 3A5000 は、Intel の以前の Goldmont Plus ベースのほぼ完全な Celeron J4125 を、同じビデオ エンコーディングで説得力を持って打ち負かしています。 それから、3A5000 よりも壮大な活力低下ターゲットのゴールドモント プラスの目標をもう一度、ゴールドモント プラスには AVX または FMA の指示がありません。
最終フレーズ
互換性のないエンコーディングを利用することで、Loongson は最新の ISA があることを知らせ、MIPS とは別にそれを作成することができます。 Loongarch と MIPS は、MIPS64 マニュアルを追加で費やす可能性があるレベルまでセマンティクスのかなりの山を構成しますが、MIPS の能力を理解して Loongarch と呼んでも、ISA の権利に対処することを好みません。 この形式はかなり理にかなっています。 セマンティクス機能を維持することで、Loongson は多くのツールチェーンをすばやく再利用できます。 最新の ISA のエンコーディング機能を変更し、ライセンスの制限に縛られていません。
AVX と SVE と並んで、Loongson の LASX は 128 ビットを超えるベクトル次元を取るもう 1 つの ISA 拡張機能です。 . さらに重要なことに、Loongson は、国内の CPU 能力を構築するための中国の取り組みの段階です。 LASX は、中国が過度の効率化を目指していることを示唆しています。なぜなら、128 ビットのベクトル実行は、活力の低い機能には十分であり、過度の効率化はもはや問題ではないからです.
しかし、Loongson 3A5000 の LASX 実装は決してAMD および Intel のデスクトップ CPU に相当する AVX2 の実装には、もはや積極的ではありません。 Skylake と Zen 1 はそれぞれ独自のより広いベクトル実行セットアップを備えており、レイテンシを吸収するために追加の操作を実行する可能性があります。 3A5000 の低クロックは、リモートで新しいデスクトップ CPU に完全に勝っていることを確認して、棺桶に大きな爪を置きます. 確かに、過剰なクロック速度で 256 ビットのベクトル実行ユニットを動作させることは、もはや簡単なことではありません。 しかし、AMD と Intel 自身が、それを差し控える有益なスキームを発見しました。
もしあなたが私たちの記事やジャーナリズムを賞賛し、私たちの努力で私たちをより強くしたいのであれば、私たちの