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

アクセスカウンタ

zoom RSS ぼくのかんがえたさいきょうCPU エンディアンとタグ付きデータの扱い

<<   作成日時 : 2012/02/09 22:36   >>

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

 高級言語サポートではタグによる属性を付けたデータを標準で扱えれば便利そうだ。ちょっと整理。

前回の検討:ぼくのかんがえたさいきょうCPU タグ付き演算命令

 まず、基本的なデータの扱いについて。ぼくのかんがえたさいきょうCPUではレジスタは32/64/128/256bit幅でLSB側を0とし、MSB側を31/63/127/255としている。メモリ上での配置はリトルエンディアンである。
 他にMSB側を0としてビッグエンディアンにするのも自然だが、命令を小さい番地から大きい番地の方向へ読み込むことを考えるとLSB=0/リトルエンディアンかな。

 リトルエンディアンだと32/64/128/256bit幅のデータを扱う場合に自然に拡張できる。ロード/ストアで指定する番地が最下位のバイトとなり、番地が増える方向に順に上位方向のデータが保存される。また、LSB側を0とするとビット列として見た場合も自然に拡張できる。

 ではタグはどこに付けようか?

 現在ではメモリ幅は32/64bit単位で扱うべきであり、これを外れると途端にコストが跳ね上がる。理由はメモリのモジュールが規格化されているためだ。(例外的にECCで保護されているメモリは64bit+8bitの構成で、保護部分の8bitの中の一部を使い、その分1bit訂正/2bitエラー検出といった機能を落とすことはできる)
 拡張性を考えるとLSB側に寄せてタグ領域を確保した方が都合が良い。またタグサイズも8bit(1バイト)を最小単位として拡張可能にしておく。

32bitレジスタの場合:24bitデータ+8bitタグ
64bitレジスタの場合:56bitデータ+8bitタグ、48bitデータ+16bitタグ
……

 データ部の演算については、加減算はタグ部分を0マスクすればそのまま演算器に流して結果を得られる。ただし数値の扱える範囲は狭くなる。論理演算やシフトについても同様。乗算も扱える範囲が狭くなる。SIMD命令もタグ部分を無視すればよい。タグ同士は一致しているかどうかを判断しなければならない。また、タグがデータ部無効を示している場合(GC対象など)も同様。トラップを発生させるか、条件判断で分岐させる。
 このように内部の演算器をいじらずに実現できるようにしておくと、命令を実装しなくてもエミュレーションが容易になる。例えばタグ付き加算命令TADDを想定すると、次の様になる。実装した場合は1サイクルに収まる回路になる。

TADD GR1,GR2,GR3 →命令エミュレーショントラップ発生。以降トラップハンドラ内
 GR1の下位1バイト抽出
 GR2の下位1バイト抽出
 XORを取って不一致なら 現在のトラップ状態を解除してTAG不一致トラップに分岐
 GR1の下位1バイトをマスク
 GR2の下位1バイトをマスク
 加算
 加算結果とタグ部分を結合してGR3に保存
 リターン

 SPARC V8では下位2bitをタグとしたタグ付き演算があるが、キャリーやその他の演算結果の条件を判断するのに余計な論理を付けたくなかったためと思われる。また64bit拡張も当時は考えていなかったはずで、64bit拡張のSPARC V9ではタグ付き演算命令は32bitのままになっている。
 高級言語マシンの実装ではMSB側にタグ領域を、残りをデータとして扱っているものしか見たことがないが、これはレジスタ幅が将来拡張されるということをまったく想定していないためと思われる。

まとめ:LSB=0/リトルエンディアン/TAG部もLSB側で演算器の修正いらずエミュレーション容易でみんな幸せ

参考:
・Shozo TAKEOKA's page
 エンディアンの話 (ワード編)
 エンディアンの話 (ビット編)

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(3件)

タイトル (本文) ブログ名/日時
ぼくのかんがえたさいきょうCPU エンディアンの設定
 デフォルトでbyte単位のリトルエンディアンと決めたが、任意に変更できるようにしたい。 ...続きを見る
竹下世界塔の計算機よもやま話
2012/07/27 15:22
ぼくのかんがえたさいきょうCPU タグアーキ
 データに属性を与えるタグだが、メモリのアクセス単位が32,64,128bit...となると扱うデータ幅を削るか別の場所にタグ領域を用意するしかない。 ...続きを見る
竹下世界塔の計算機よもやま話
2014/05/31 00:37
ぼくのかんがえたさいきょうCPU レジスタの属性、タグアーキ
 大和改できました。現在Lv62です。 ...続きを見る
竹下世界塔の計算機よもやま話
2015/03/19 02:33

トラックバック用URL help


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

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




ぼくのかんがえたさいきょうCPU エンディアンとタグ付きデータの扱い 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる