SiFive は、RISC-V を主流のプロセッサ アーキテクチャにするための取り組みの一環として、ベクトル演算を高速化できる VIU75 CPU コアを本日リリースします。
AIアルゴリズムや関連分析といったベクトル演算を多用する演算をCPU以外のプロセッサコア、典型的にはGPUや専用の機械学習エンジンにオフロードし、ワークロードの実行速度を向上させるのが現在流行しています。しかし、IntelとAMDのCPUコアにはAVXが、ArmにはNEONとSVEが、データ配列を効率的に処理する上で重要な役割を果たしていることを忘れてはなりません。
つまり、すべてのベクトル演算を外部ユニットにオフロードする必要はありません。必要に応じて、CPUコアが提供するベクトル命令(そのような機能が利用可能であれば)を使用して、高速に実行できます。これにより、データを別のユニットに出力し、その結果を何らかのバス経由でコピーバックする必要がなく、システムオンチップ(SoC)やコンピュータ設計に別途アクセラレータを組み込む必要もありません。負荷に対応できるCPUコアが十分にあれば、専用のハードウェアを追加することなく処理を実行できるため、ニーズを満たすことができます。場合によっては、別のユニットを使用する方が合理的です。
いずれにせよ、ここでは SiFive の VIU75 を紹介します。これは、アプリケーション コードを実行し、アーキテクチャのベクトル拡張命令セットを実装して、データの配列を最適に処理する 64 ビット RISC-V (RV64GCV) CPU コアです。
彼らは何をしたのか? 彼をねじ曲げたのか? 元クアルコム副社長がSiFiveのCEOに就任、開発者向けRISC-V PCを予告
続きを読む
RISC-Vのベクトル拡張(RVVと略されることもあります)は現在、バージョン0.9のドラフト段階にあり、アーキテクチャの公式団体であるRISC-V Internationalによる承認をまだ受けていません。しかし、SiFiveは、VIU75のライセンスを取得してシステムオンチップ(SoC)で使用する頃には、コアが承認済みの拡張バージョン1.0をサポートすると確信しているようです。
この承認により、ベクトル拡張を実装したすべてのRISC-V CPUコアはバイナリ実行レベルで互換性を持つことになります。つまり、SiFiveのRV64GCVコアで実行されるコードは、例えばAndesのRV64GCVコアでも実行できます。RISC-Vアーキテクチャの共同創設者の多くはSiFiveで働いているので、ここで何をしているのかはおそらく理解しているでしょう。
アセンブリレベルでRVVコードの作成方法を学ぶには、Georg Sauthoff氏による素晴らしいガイドが参考になります。とはいえ、ベクター拡張を利用するためにそこまで低レベルまで到達する必要はありません。GCCおよびLLVMツールチェーン用の組み込み関数が開発されており、アップストリーム化される予定です。つまり、高レベルコードから命令セット拡張にアクセスできるということです。また、LLVMはコードをRVV命令に自動ベクター化します。つまり、RVVをターゲットとする場合、通常の移植可能なソースコードを書くだけで、LLVMはコンパイル時に適切なベクター命令を自動的に使用します。LLVMの発明者であるChris Lattner氏は現在SiFiveで働いているので、ここでも彼らはおそらく何をしているのか分かっているでしょう。
スーパーコンピュータ用の RISC-V ベースのアクセラレータを設計し、RVV ソフトウェア サポートで SiFive と協力した European Processor Initiative では、拡張機能のより詳しい概要をここで説明しています。
ベクトル拡張セットに期待される通り、配列データを高速に入力し、その要素を同時に演算し、結果を一度に出力するように設計されています。プロセッサ設計の第一人者David Patterson氏とSiFiveのチーフエンジニアAndrew Waterman氏によるこの記事では、RVVはx86やMIPSの対応するSIMD命令セットよりも洗練され、効率的であると主張しています。
RVVの重要な特徴は、可変長ベクトルをサポートし、他のアーキテクチャよりも一般的に柔軟性が高いことです。例えばRISC-Vのように、配列サイズが128ビット、256ビット、または512ビットに固定されることはありません。つまり、ベクトルの最後の数要素をスカラー命令で計算する必要がなくなったり、配列が固定長にぴったり収まらない場合でも結果を破棄する必要がなくなったりするのです。これにより、ソフトウェアルーチンの複雑さが軽減されます。
これらに加え、VIU75は標準的なRISC-Vアプリケーションコアであり、Linuxやアーキテクチャ向けに構築された他のオペレーティングシステムを実行でき、MMU(SV39またはSV48)と、ファームウェアレベルコード用のマシンモード、カーネル用のスーパーバイザ、アプリケーション用のユーザーといった通常の特権モードを備えています。VIU75は、8~64ビットの浮動小数点、固定小数点、整数などのデータ型を使用して、クロックサイクルあたり最大256ビットで動作可能な分離ベクターユニットを備えた、控えめな8ステージのデュアルイシューインオーダーパイプラインを備えていると説明されています。以下は、4つのVIU75 CPUコアと、システムメンテナンスタスク用に予約されたオプションの非RVV 64ビットコアを使用したシステムオンチップのブロック図の例です。
VI7 システムオンチップのブロック図 ... 出典: SiFive
CLINT と PLIC は割り込みコントローラ、Debg はデバッグインターフェイス、PMP は CPU コア間のハードウェア強制分離の追加のオプションレイヤーを提供する物理メモリ保護ユニットです。
以下は各VIU75コアの内部です。512ビットのベクター演算1回の実行には2サイクルかかり、L2キャッシュはロード・トゥ・ユースのペナルティなしでプライマリメモリとして扱われるとのことです。SiFiveは、CPU設計の評価にはXilinxのVirtex UltraScale+ VCU118 FPGAボードの使用を推奨しています。このキットには4GBのRAM、SDカードスロット、USB、PCIeなどに加え、コアを実装するための強力なFPGAが搭載されています。ただし、これはプロ仕様の機器であるため、7,000ドル(約7,000ドル)かかることをお忘れなく。
VIU75のパイプラインを示す図...出典:SiFive
SiFiveは本日、今年のLinley Fall Processor ConferenceでVIU75コアを発表します。Andes Technologyも、96GFLOPSの性能を誇るアウトオブオーダー・ベクター対応RISC-VプロセッサコアNX27Vについて発表します。®