« 命令セットアーキテクチャを考える1 (想定条件) | トップページ | 命令セットアーキテクチャを考える3 (特殊レジスタ) »

2014/06/09

命令セットアーキテクチャを考える2 (レジスタ)

レジスタ構成について、先の記事の最後の部分の再掲載から。

・64bit汎用レジスタ×64本、64bit(倍精度)浮動小数点レジスタ×64本
・R0はゼロレジスタ、FR0はゼロレジスタ
・連続する複数本のレジスタを使用する命令で、ゼロレジスタを指定された場合、ゼロレジスタが仮想的に拡張される(R1…,FR1…が使用されるわけではない)

レジスタ本数が64本と多いのは、後で説明するSIMD演算用にも使うため。SIMD演算用の特別なレジスタは持たない。

[General Register 64bit*64]

R0 Zero register(always zero)
R1

R63

・R0はゼロレジスタであり、読み込んだ際にはオールゼロビットが読み出され、書き込みは無視される。(命令は正常終了する)
・連続する複数本のレジスタを使用する命令で、ゼロレジスタを指定された場合、ゼロレジスタが仮想的に拡張される(R1…が使用されるわけではない)。
・byteモードの場合は下位8ビット、half wordモードの場合は下位16bit、wordモードの場合は下位32ビットのみが演算に用いられる。残りの上位ビットは変化しない。
・レジスタの上位ビットのみを参照したり変更するようなハードウェア命令はない。そのような処理が必要な場合は、シフト命令と組み合わせて実現する必要がある。
・SIMDモード命令の場合、8ビット*8、16ビット*4、32ビット×2として使用する。doble wordのSIMDモード命令はない。内部的にはエラーとはならないが、通常のdouble-wordの演算(64bit×1)と同じ演算結果が得られる。

[Floating point number Register 64bit*64]

FR0 Zero register(always zero)
FR1

FR63

・FR0はゼロレジスタであり、読み込んだ際にはプラスゼロ(オールビットゼロ)が読み出され、書き込みは無視される。(命令は正常終了する)
・連続する複数本のレジスタを使用する命令で、ゼロレジスタを指定された場合、ゼロレジスタが仮想的に拡張される(FR1…が使用されるわけではない)。
・単精度モードの場合は下位32ビットのみ演算に用いられる。残りの上位ビットは変化しない。
・連続する二つのレジスタを連結して四倍精度実数データを格納できる。
・SIMDモード命令の場合、連続する四本のレジスタを使って、単精度(32bit)*8、倍精度(64bit)*4、(四倍精度)128bit*2のデータとして演算に使用される。

・浮動小数点レジスタと汎用レジスタとのデータのコピー/変換命令を備える。

|

« 命令セットアーキテクチャを考える1 (想定条件) | トップページ | 命令セットアーキテクチャを考える3 (特殊レジスタ) »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 命令セットアーキテクチャを考える2 (レジスタ):

« 命令セットアーキテクチャを考える1 (想定条件) | トップページ | 命令セットアーキテクチャを考える3 (特殊レジスタ) »