FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

"RISC-V Instruction Set Architecture Extension: A Survey"を読む (2. イントロダクション)

ieeexplore.ieee.org

IEEE Explorerにて、上記の論文が公開されていた。最近の命令拡張の動向についてあまりよく知らなかったので、せっかくなので読んでみることにした。 続き。


  • Section I. Introduction
  • Section II. RISC-V Application
    • Embedded Microprocessor
      • ある程度揃ってきている。
      • 組み込み向けは消費電力の要求が厳しい。効率的な浮動小数点演算拡張や、AIベクトル演算拡張などを定義し、アプリケーションの要求を満たすことが急務。
    • Domain specific Processor
      • グラフィックス向けでは、汎用GPUとしてVortexを提案している。
        • ピーク性能は26.5GFlops
      • 浮動小数点演算用のプロセッサであるManticoreを提案している。
    • High-Performance Processor
      • Alibaba T-HeadによるXuanTie C910
      • MIPSによるeVocore
      • BerkeleyによるオープンソースOoOコアはBOOM
      • 中国科学院計算研究所による Xiangshan 。SPECInt 7/GHz.
      • これらだけでなく、様々なタスクをこなすための命令が必要である。
  • Section III. Progress of official RISC-V ISA extension specification
    • Non-privileged ISA extension
      • M拡張:整数乗除算命令セット拡張
      • A拡張:アトミック命令セット拡張。Atomic Fetch & Memory Operation, Load-Reserved & Store Conditional
      • F拡張:単精度浮動小数点命令と、ステータスレジスタ浮動小数レジスタ
      • D拡張:倍精度浮動小数点命令
      • Q拡張:4倍精度浮動小数点命令
      • L拡張:10進数浮動小数点命令。現在ドラフト段階であり、RISC-V Internationalは未承認の状態
      • C拡張:圧縮命令セット拡張
      • Counter拡張:読み取り専用CSRレジスタによる、最大32個の64ビットカウンタ。CYCLE, TIME, INSTRETに加えて、プログラマブルイベントカウンタが定義されている。
      • B拡張:ビット操作命令セット拡張。zba, zbb, zbc, zbsなどのサブ拡張から構成される。ビットカウント、シフト、ローテート、ビット挿入、ビット抽出、Permutationなど。
      • J拡張:動的に変換される命令を含んでいる。Just In Time Compilationなどで使用される。動的チェック、ガベージコレクションJITアクセラレーションなどをの機能をサポートする
      • T拡張:トランザクションメモリ拡張。トランザクションメモリ操作をサポートするための命令を提供する。
      • P拡張:Packed Single Instruction Multiple Data (Packed-SIMD)命令拡張。整数・固定小数点SIMD/DSP命令を提供する。
      • V拡張:ベクトル拡張。現在産学両面での研究のホットスポットとなっている。
      • Zcsr拡張:CSR命令セットの拡張。CSRをアトミックに読み書きするための命令を提供している。
      • Zfencei拡張:命令フェッチ・フェンス拡張。FENCE.Iという命令のみを規定しており、命令メモリへの書き込みと、命令フェッチを明示的に同期させることができる。
      • Zam拡張:Misaligned Atomic命令セット拡張。ミスアラインのアトミックメモリ操作をサポートするための拡張。
      • Ztso拡張:トータルストアオーダリング拡張。Weak Memoryオーダリングとは異なり、RISC-V Total Store Ordering (RVTSO)メモリモデルを提供することにより、SPARCx86で採用されているものと小津陽な、厳密な順序付けのルールを備えている。
    • Privileged ISA extension
      • ハイパーバイザー拡張:ゲストOSをType-1、Type-2、ハイパーバイザーの下で実行できるようにすること、および再帰的仮想化を提供することである。
        • スーパーバイザーモード(S-mode)→ ハイパーバイザー拡張スーパーバイザーモード(HS-mode)
        • 仮想スーパーバイザーモード(VS-mode)および仮想ユーザーモード(VU-mode)を導入する
        • ハイパーバイザーはHSモードで、ゲストオペレーティングシステムはVSモードで、ユーザーアプリケーションはVU-モードで実行される
      • 仮想メモリ拡張:
        • RISC-Vはメモリ仮想化の実装を支援するために、Svnapot、Svpbmt、Svinvalといった仮想メモリ拡張を提供している。
        • Svnapot拡張:スーパーバイザレベルISAのNAPOT(Naturally Aligned Power-of-Two)
          • 仮想アドレスから物理アドレスへの連続変換を実現でき、変換範囲はベースページサイズより大きなNAPOT粒度でなければならない。
        • Svpbmt拡張:スーパーバイザレベルISAのページベースメモリタイプ拡張で、キャッシュ可能性、べき乗、順序などの属性が異なる複数のメモリタイプを指定するものである。
        • Svinval拡張は、fine-grained address-translation cache invalidation拡張である
          • スーパーバイザーモードとハイパーバイザーモードのメモリフェンス命令を、より正確な無効化処理と順序付け処理に分割し、特定の高性能実装クラスでより効率的にバッチ処理またはパイプライン処理できるようにするものである。