MIPSアーキテクチャRelease5 SIMD拡張

 今週のAndo's Processor Information Pageで知った情報。
 MIPS Architecture R5でVZE(仮想化)、MSA(SIMD)、MT(マルチスレッド)、DSPの拡張が行われている。(DSPは以前からあったかも)
この図によるとMIPS64に限るわけではなくMIPS32から使えるようだ。
http://www.mips.com/global/images/products/R5_Diagram_HR.jpg
このうちSIMD命令拡張について読んでみた。

MIPS Architecture Release 5: Keeping it Simple.
ここから概要のpdfをダウンロードできる(要登録)

 SIMD拡張はMSA(MIPS SIMD Architecture)と呼ばれ、150個の新しい命令を持つ。
 MSAの浮動小数点演算はIEEE754-2008準拠。
 128bit長のベクターレジスタ32本を持ち、浮動小数点レジスタと同じ場所にある。ただし64bit長の浮動小数点レジスタでなければMSAとFPUは共存できない。
 従来の浮動小数点を操作した場合は単精度のとき下位32bitが操作され、残りの上位はall0、倍精度のとき下位64bitが操作され残りの上位はall0となる。
 条件コードを保存するレジスタなどは持たない。元々のMIPSアーキと同じ様に、条件判断の結果を0またはall1でベクターレジスタの対応するエレメントに保存し、それを見て分岐などする。
 MSAコントロールレジスタは存在する。

 マルチスレッド関連でVPE(Virtual Processing Elements)というのが最大9基ある。RegisterPartitioningで、4基のVPEがある場合、4スレッドで32×4=128本のベクターレジスタが必要になる所を72本で実現できる、らしい。(このあたりは論理レジスタと物理レジスタの対応付けの様で、SIMD命令そのものとはあんまり関係ない。どちらかといえば実装の話)

 ベクターレジスタはByte、Halfword、Word、Doublewordごとにエレメントに分けられる。
Byte(8bit)エレメントはMSB側から15,14,13...,0の16個、
Halfword(16bit)エレメントはMSB側から7,6,5,..,0の8個、
Word(32bit)エレメントはMSB側から3,2,1,0の4個、
DoubleWord(64bit)エレメントはMSB側から1,0の2個。
 それぞれ、 .B、.H、.W、.D のサフィックスを付けて扱うデータを区別する。(.Vはわからなかった)

 整数演算命令、シフト/ビット演算命令、条件判断、分岐、ロードストア、浮動小数点演算命令とひととおりある。
以下、目新しいもの。
整数演算命令は飽和演算命令、積和命令など。
ビット演算命令はPopulationCount(1が立っている数を数える)、Leading One Bits Count、Leading Zero Bits Countなど。
浮動小数点命令は2を底としたlogやべき乗、丸め付き/なしの積和/積差命令。
ロードストア命令には対メモリに加え、汎用レジスタとのやりとりやMSAコントロールレジスタの読み書きも含まれる。
あと、ベクターレジスタのエレメントの順序を操作する命令。シャッフルなど。

 命令別の詳細がまだないのでわからないが、これほとんど独立したプロセッサだよね?特にMSAコントロールレジスタの値の操作がベクターレジスタ経由ということから感じた。実装イメージとしてはメインのMIPSプロセッサに対して複数のVPEが付き、それらが物理ベクターレジスタを操作してソフト側からはスレッドごとに独立したレジスタに見せているという感じ。

ブログ気持玉

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

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

→ログインへ

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

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック