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

アクセスカウンタ

zoom RSS ぼくのかんがえたさいきょうCPU ロード/ストア命令でバイト/ワードサポート,LL/SC

<<   作成日時 : 2009/10/02 22:25   >>

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

 Alphaの資料21064を調べていたら、32bit/64bitロード/ストアしか持っていないのでバイト操作命令が充実していた。バイトシフト、バイト挿入、バイトマスク、バイト比較など。
しかし、次の21164の資料にあたったらなんとバイト/ワードのロード/ストア命令が追加されていた。よっぽど評判が悪かったのだろうか。ということで追加できるかどうか検討した。

・ロード/ストア命令
01fsnnwwppLLLLRxxxxxRbbbbbRddddd
[31:30] ..01 ロード/ストア命令
[29:26] fsnn .. ロード/ストア命令(4bit)
バイト入れ換え不要な命令は LLLL がデコードに使える(fsnn="1111"のとき有効)
[25:24] ww .. ビット幅 00..S(32bit) 01..D(64bit) 10..Q(128bit) 11..O(256bit)
[23:22] pp .. 00..即値指定 01..GRx指定 10..ポストインクリメント 11..プリデクリメント
[21:18] LLLL .. バイト入れ換え/ASI番号レジスタ [21]..8バイト [20]..4バイト [19]..2バイト [18]..1バイト
[17:12] 符号付き即値6ビット "00" ゲタはかせ バイトアクセスのとき-32〜+31 ※ちょっと少ないね
[17:12] GRx インデックス
[11:6] GRb ベース
[5:0] Rd ロード/ストアするレジスタ
w={S,D,Q,O}それぞれ4バイト(32ビット)、8バイト(64ビット)、16バイト(128ビット)、32バイト(256ビット)幅のアクセス
浮動小数点レジスタの場合は単精度(32ビット)、倍精度 or 単精度×2(64ビット)、倍精度×2 or 単精度×4(128ビット)、倍精度×4 or 単精度×8(256ビット)

・ロード命令 コンディションコードは変化する。(ゼロ、負のみ)

デコード
fsnn
0000 load signed
0001 load byte signed
0010 load word signed

0100 store
0101 store byte
0110 store word

0011 load-locked
0111 store-conditional

1000 float load
1100 float store

1001 load byte unsigned
1010 load word unsigned
1011 load unsigned

1101 Undefined(ASI store?またはLLLL)
1110 Undefined(ASI load?またはLLLL)

1111 LLLL拡張 以下はバイトスワップが不要な命令
LLLL=0000 LEA
LLLL=0001 BLR(サブルーチンコールとリターン)
LLLL=0010 BLRI(割り込み状態をクリアしてから戻ればいいので、要らないかも)
LLLL=0011 PREFETCH
...等

 1バイト対応のためアドレッシングモードでのゲタ履かせ"00"もなくす。ただし、ワード(16ビット)アクセスは"0"、32ビットアクセス以上は"00"、というようにゲタ履かせをする。

 メモリコンシステンシモデルはSO(StrongOrdering)とRMO(Relax Memory Ordering)と定義していたが、新たにTSO(Total Store Ordering)を追加したい。※TSO(Total Store Ordering)ロード同士は順序を守る。ストア同士は順序を守り、ストアはロードを追い越さない。RMOだとバリア命令が多くなって面倒そうだし、SPARC64V以降でもTSOしかサポートしていない。ステータスレジスタSR.mcで定義する。

・排他制御について - Wikipediaより
排他制御
セマフォ
Lock-freeとWait-freeアルゴリズム
テスト・アンド・セット
フェッチ・アンド・アッド
コンペア・アンド・スワップ
Load-Link/Store-Conditional

 AlphaやPowerPCでも使われているLoad-Link/Store-Conditionalを採用する。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(0件)

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

トラックバック用URL help


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

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
URL(任意)
本 文




ぼくのかんがえたさいきょうCPU ロード/ストア命令でバイト/ワードサポート,LL/SC 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる