竹下世界塔の計算機よもやま話

アクセスカウンタ

zoom RSS ロードストアアーキテクチャでもデータの加工はあるよという話

<<   作成日時 : 2016/02/03 07:10   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

 ロードストアアーキテクチャはRISCの特徴のひとつで演算はすべてレジスタ間で行い、演算に必要な値はメモリ→レジスタへロードするだけ、演算結果をメモリに保存するときはレジスタ→メモリへストアするだけという方式のこと。
 ではロードストア時にデータの加工はまったく行われないかというとそうではない。

 大容量DRAMから1バイトを読み込む場合。特定の番地の1バイトだけ読むという操作をすると、そのデータを含んだ64bitなり128bitなりまとまった単位のデータ(ライン)が一気にアクセスされる。通常、レジスタのbit幅よりもこのアクセス単位は大きく、レジスタ幅の2のn乗サイズである。このラインはキャッシュに保存され、ロードストアはこのキャッシュ上にあるデータに対して行われる。なおこのラインサイズはキャッシュのラインサイズと同じほうがキャッシュシステムとしては管理しやすい。

以下の様に0x1000番地から0xAA,0xBB,0xCC,0xDDのデータがあり、レジスタ幅は32bit(4バイト)、リトルエンディアンとする。

0x1000:0xAA
0x1001:0xBB
0x1002:0xCC
0x1003:0xDD

 0x1000番地に対して4バイトロードをおこなった場合はレジスタの値は0xDDCCBBAAとなる。

 0x1003番地に対して1バイトロードをおこなった場合はどうなるか?
下位2bitを0にして0x1000を求める。これは32bitのレジスタ幅にアライメントを合わせたアドレス。そして0x1000番地に対して32bitロードを行う。
次に、下位2bitの値分右シフトする。そして0x000000FFとandを取り、0x000000DDを得る。実際にはこの論理演算をそのまま行っているのではなく、同等の結果になるようターゲットとなる部分をセレクトしてレジスタ下位にセットすればよい。

 レジスタ幅よりも小さい値のロード命令で符号拡張を行うものもある。先ほどの1バイトロード後、レジスタのbit7の値を上位にコピーする。結果は0xFFFFFFDDとなる。

 ここではリトルエンディアンを仮定したが、バイエンディアンでバイト単位の入れ換えを行うこともある。ビッグエンディアンに変換した場合、0x1000番地からの4バイトロードの結果は0xAABBCCDDとなる。またエンディアン変換はロードだけでなくストアのときも行われる。

 これらの操作はロード後に加工してもよくて、Alphaの最初のバージョンは32bitと64bitのロードストアしかなくバイト単位の操作は明に命令で加工していた。しかし不評だったようでバイト単位のロードストアが後から追加されている。そういった意味では最初のAlphaだけが真のロードストアアーキテクチャだったかもしれない。

 こうして見ると、ロードデータに対して汎用レジスタを参照したデータの加工はないが、ロード時の指定によっては決まったデータの加工が行われる。またエンディアン変換はロードストア時に行われ、その設定はなんらかの専用レジスタの値によって指定される。汎用レジスタを参照して演算するようになるとCISC系のMOV命令とかわらなくなってしまう。

 これを書こうと思ったきっかけはIA-32のSIMD命令にあるgather命令で、例えばバイト単位で歯抜けのロードを行う事ができるのを知り、こういうのは新規のロード命令じゃなかろうかと感じたのでちょっと整理してみたかった。

おまけ:
 ストア動作の場合。ストア対象のアドレスラインがキャッシュにない場合はいったん当該ラインがキャッシュに補充され、ストア対象の場所が書き換えられる。
おまけ2:
 バイト単位のロードを実行してもライン単位でのアクセスが発生するため、例えばメモリにエラーが発生した場合はロード命令でアクセスしたバイトが該当箇所とは限らない。ストア命令でも先程のとおりロードが行われるので、書き込み動作なのにリード時のエラーが起こりうる。

おまけ3:
 以上はメモリに対するアクセスであり、I/Oについてはキャッシュに乗らず1バイト単位でのアクセス可。


テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




ロードストアアーキテクチャでもデータの加工はあるよという話 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる