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

アクセスカウンタ

zoom RSS SIMDを考慮したシフタ

<<   作成日時 : 2013/09/10 01:31   >>

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


 ただのおもいつきです。

 今のところほとんどのプロセッサの汎用レジスタは64bit長。SIMD専用レジスタは128や256や512bit長があるが、汎用レジスタと統合しようと考えた時にどうなるか。
 SIMD用としてレジスタを8/16/32/...bit長で分割して扱うことを考える。分割したものをここではパックと呼ぶ。レジスタ長が256bitの場合、8bit長のパックは32個、16bit長のパックは16個、32bit長のパックは8個、64bit長のパックは4個。

 で、シフト命令について考える。256bit長でシフト量を0〜256bit指定するのはバレルシフタだと大変なことになるのではないか?ちょっと前に実験してみたけど64bitで動作周波数・回路規模が急に大きくなる印象。
まごころせいじつ堂 バレルシフタ

 ではどうするか?そのようなシフトはあり得ないと避けても良いが、SIMDでのパック単位でデータ操作することを考えると0~8bitシフトとパック単位でのシフトを命令を分けて、シフト量が大きなものは明示的に命令の組み合わせでやってしまおう。

(1)汎用レジスタ全体に作用するもの:
SFTLL 論理左シフト 0〜8bit
SFTLR 論理右シフト 0〜8bit
SFTAR 算術右シフト 0〜8bit

(2)パック内でシフトするもの。自分以外のパックに影響することはない。
B,W,D,Q,O,Hはパックのサイズ(=8,16,32,64,128,256)
SFTLL{B|W|D|Q|O|H} 論理左シフト 0〜8bit
SFTLR{B|W|D|Q|O|H} 論理右シフト 0〜8bit
SFTAR{B|W|D|Q|O|H} 算術右シフト 0〜8bit

(3)パック単位でシフトするもの。
SFTPLL{B|W|D|Q|O|H} 論理左シフト 0〜8bit
SFTPLR{B|W|D|Q|O|H} 論理右シフト 0〜8bit
SFTPAR{B|W|D|Q|O|H} 算術右シフト 0〜8bit

いまシフト量を0〜8としたけど、8bit長のパック32個あたりを想定するとシフト量はもっと必要か。
あと、パックの操作としてはローテートがあるとよさそうかも。が、これはパックのシャッフルで対応できそうな気もする。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(0件)

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

トラックバック用URL help


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

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




SIMDを考慮したシフタ 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる