POWER ISA 3.1の追加命令

 POWER ISA 3.1が発表された。以下のページの下の方にPDFのリンクがある。
IBM Releases Power ISA v3.1; To Present POWER10 At Hot Chips 32(WikiChip)

 目立つのはプレフィックス命令の追加で8バイト命令ができた。主に即値フィールドの追加に使われる。半精度のbinary16フォーマットはあったがさらにbfloat16フォーマットや4bit(nibble)の演算命令、その他色々な命令が追加。

1.6.3 Instruction Prefix Formats
5種類が定義されている。既存の命令の前に付いてオペランドを拡張するものはアセンブラではこれらの命令の先頭にpがつく。
・Type00(ST=0) 8byte Load/Store(8LS)
・Type01(ST=0) 8byte Register to Register(8RR)
・Type10(ST=0) Modified Load/Store(MLS)
・Type11(ST=0) Modified Register to Register(MRR)
・Type11(ST=9) Modified Masked Immediate Register to Register(MMIRR)

8LSはロードストア命令において実効アドレスの指定を拡張する。
MLSは8LSの実効アドレス拡張に加えaddi命令の即値フィールドを拡張。←これなんとなくアドレス計算の演算器の流用っぽい雰囲気ですね。
8RR、MMIRRはVSX Vector命令として使用。
MRRはpnop命令で使用。


3.3.1 64-bit Fixed-Point Logical Instructions

Count Leading Zero / Count Trailling Zeroのビットマスク付き命令。
Centrifuge命令 これ何に使うのかようわかりません。MSBとLSBにデータが偏るような動作。
Parallel Bits Extract/Deposit命令 マスクしたデータに対するExtract/Deposit命令の様 (※疑似コードによる説明が間違っている)

3.3.16 Byte-Reverse Instructions
バイト入れ替え命令。HalfWord(2バイト)/Word(4バイト)/DoubleWord(8バイト)単位でおこなう。

3.3.18 Move To/From System Register Instructions
固定小数点演算の条件フラグは4bitで、32bitのレジスタCRにCR0,CR1,...CR7として格納される。
Set Boolean Condition命令 CRの任意のビットをチェックし、結果を0/1 または0/-1として固定小数点レジスタに格納する。

3.3.19 Prefixed No-Operation Instruction
何もしないpnop命令で、MRRプレフィックスに続く4バイトは任意の値。

浮動小数点演算についてはプレフィックスによるロードストアのアドレス拡張のみ。

6.8.7 Vector Shift Instructions
Vector Shift Left Double by Bit Immiediate / Vector Shift Right Double by Bit Immediateが追加。


6.8.8.3 Vector Extract Double Element to VSR using GPR-specified Index Instructions

6.8.9.2 Vector Insert Double Element to VSR using GPR-specified Index Instructions
レジスタVRを使ったExtract/Insertが追加。

6.9.1.3 Vector Intefet Multiply Instructions
DoubleWord同士の乗算→QuadWord
Word同士の符号付き・符号なし乗算の結果の上位
DoubleWord同士の符号付き・符号なし乗算の結果の上位
DoubleWord同士の乗算の結果の下位
Vector Multiply-Sum & write Carry-out Unsigned Doubleword FMA命令の結果の和の桁あふれ分を返す

6.9.1.5 Vector Integer Divide Instructions
ベクタ形式の除算と剰余の命令が追加

6.9.3 Vector Integer Compare Instructions
6.9.5 Vector Integer Rotate Instructions
6.9.6 Vector Integer Shift Instructions
QuadWord単位での比較・ローテート・シフト命令が追加


6.12.1 Vector Gather Bits Instructions

従来の8bit単位のギャザー命令に加え2~7bit単位の命令が追加

6.12.2 Vector Count Leading Zeros Instructions

6.12.3 Vector Count Trailing Zeros Instructions

Count Leading Zero / Count Trailling Zeroのビットマスク付き命令。3.3.1と同等。

6.12.5 Vector Bit Insert/Extract Instructions

Parallel Bits Extract/Deposit命令 3.3.1と同等。

6.12.6 Vector Centrifuge Instruction

3.3.1と同等。

6.13 Vector Mask Manipulation Instructions

新規追加 固定小数点レジスタによるマスク指定など。

6.14 Vector String Instructions
新規追加 \0を終端とした文字列コピーまたはサイズ指定のコピー後終端を\0にする。

7章のVector Scalar命令は理解が及ばないので省略。

VSXのレジスタセットは128bitのVSR[0]~VSR[63]で構成され、従来のFPRとVRを包含する。VSRは4本ずつセットで512bitのACC[0]~ACC[7]として新規追加命令でオペランドとして指定される。参考まで。



マルちゃん 白い力もちうどん 109g×3個
マルちゃん 白い力もちうどん 109g×3個

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント