FPGA開発日記

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

RISC-Vベクトル拡張仕様書 v1.0 を読み直す (25. ベクトル標準プロファイル)

RISC-Vベクトル拡張仕様書の読み直し。ベクトル拡張の標準プロファイルについて。

ベクトル拡張のバリエーションとしていくつかのサブセットが定義されている。組み込み向けにはいくつかの機能を省略することができるという仕組みだ。

github.com

github.com


18. 標準ベクトル拡張

このセクションでは、パブリックレビューのために提案される標準ベクトル拡張について説明します。 組み込み用途を目的とした小規模な拡張機能のセットには "Zve "という接頭辞を付け、 アプリケーションプロセッサ向けに設計された大規模なベクター拡張機能には1文字のVという拡張子を付けています。

初期のベクトル拡張は、暗号や機械学習などの様々な領域で追加のベクトル拡張を行うためのベースとして設計されています。

18.1. Zve*: 組み込みプロセッサ用のベクトル拡張

以下の5つの標準的な拡張機能は、さまざまな程度のベクトルサポートを提供するために定義されており、 組み込みプロセッサでの使用を目的としています。 これらの拡張機能は、XLEN=32 または XLEN=64 のベース ISA に追加することができます。 表には、各拡張機能の最小VLENとサポートされるEEW、およびサポートされる浮動小数点型を示しています。

組み込みベクトル拡張

拡張 最小VLEN サポートされるEEW FP32 FP64
Zve32x 32 8, 16, 32 N N
Zve32f 32 8, 16, 32 Y N
Zve64x 64 8, 16, 32, 64 N N
Zve64f 64 8, 16, 32, 64 Y N
Zve64d 64 8, 16, 32, 64 Y Y

全ての Zve* 拡張は正確な例外を持ちます。

Note: 現在、不正確例外を処理するための標準的なサポートはありませんので、標準的な拡張機能は正確なトラップを提供する必要があります。 すべてのZve拡張は、8,16,32のEEWをサポートしており、Zve64拡張は64のEEWもサポートしています。

すべての Zve* 拡張機能は、ベクトル構成命令 (コンフィグレーション設定命令 (vsetvli/vsetivl/vsetvl) 節) をサポートしています。

全ての Zve 拡張は全てのベクトルロード・ストア命令(ベクトルロード・ストア命令節)をサポートしていますが、 Zve64 拡張は XLEN=32 の時のインデックス値に対する EEW=64 をサポートしていません。

すべての Zve 拡張は、すべてのベクトル整数命令 (ベクトル整数算術演算命令節) をサポートしています。 ただし、積の上位ワードを返す vmulh 整数乗算バリエーション (vmulh.vv, vmulh.vx, vmulhu.vv, vmulhu.vx, vmulhsu.vv, vmulhsu.vx ) は、Zve64 では EEW=64 に対応していません。

Note: 積の上位ワードを生成するには、EEWが大きい場合、かなりの追加回路が必要になります。 すべてのZve拡張は、すべてのベクトル固定小数点演算命令(ベクトル固定小数点算術演算命令)をサポートしています。 ただし、 vsmul.vv と vsmul.vx は、Zve64のEEW=64ではサポートされていません。

Note: vmulh と同様に、vsmul は大量の追加論理を必要とし、64 ビットの固定小数点乗算はの使用頻度は比較的まれです。 すべての Zve* 拡張は、すべてのベクトル整数の単一幅および幅拡張および幅縮小操作をサポートします (ベクトル単一幅整数リダクション命令節, ベクトル幅拡張整数リダクション命令節)。

全ての Zve* 拡張は全てのベクトルマスク命令をサポートします (ベクトルマスク命令節)。

Zve32x と Zve64x が浮動小数点スカラ移動命令を実装していないことを除いて、 すべての Zve* 拡張はすべてのベクトル組み合わせ命令 (ベクトル組み合わせ命令節) をサポートしています。

Zve32fおよびZve64f拡張は、スカラ・プロセッサがF拡張を実装し、EEW=32の浮動小数オペランドに対するすべてのベクトル浮動小数点命令(ベクトル浮動小数点命令節)を実装することを要求し、 サポートされているすべての整数EEWとの間の変換命令が提供されています。 EEW=32のベクトル単幅浮動小数点演算(ベクトル単一幅浮動小数点リダクション命令節)をサポートしています。

Zve32d および Zve64d 拡張は、スカラ・プロセッサが D 拡張を実装し、EEW=32 または EEW=64 の浮動小数オペランドに対するすべてのベクトル浮動小数点命令 (ベクトル浮動小数点命令節) を実装する必要があります (幅拡張命令および FP32 と FP64 の間の変換を含む)。 EEW=32およびEEW=64のベクトル単幅浮動小数点演算(ベクトル単一幅浮動小数点リダクション命令節)がサポートされており、 FP32からFP64への幅拡張リダクションもサポートされています。