バレルシフタのソースを表示
←
バレルシフタ
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{出典の明記|date=2016-09-23}} '''バレルシフタ'''({{lang-en-short|barrel shifter}})は、ある特定の[[ビット]]数分だけ[[ワード]]データを[[ビット演算#ビットシフト|シフト]]できるデジタル回路である。これは[[マルチプレクサ]]を並べたものとして実装できる。この実装では一つのマルチプレクサの出力はシフト距離に依存するウェイ数分離れた段のマルチプレクサの入力に接続されている。必要なマルチプレクサの数はnビットワードに対しては、''n''*log<sub>2</sub>(''n'')である。よくある4つのワードサイズとそれに必要なマルチプレクサの数を以下に示す。 * 64-bit — <math>64*\log_2(64) = 64*6 = 384</math> * 32-bit — <math>32*\log_2(32) = 32*5 = 160</math> * 16-bit — <math>16*\log_2(16) = 16*4 = 64</math> * 8-bit — <math>8*\log_2(8) = 8*3 = 24</math> 例えば、4入力A、B、C、Dを持つ4ビットのバレルシフタは、ABCDの順にビットを回転させることができる。つまり、3つのビット位置をすべて右にシフトすることができる(したがってA、B、C、Dのいずれも循環させることができる)。バレルシフタは([[演算論理装置|ALU]]と並んで)[[マイクロプロセッサ]]内の非常に重要なパーツに含まれ、様々な分野に応用されている。 ==実装== しばしばバレルシフタは並列に並べた2x1マルチプレクサをカスケード接続することで実装されている。中間の信号は、2ビットシフトするか同じデータを出力するか、S[1]の値によってどちらかを選択するかに使われる。この信号はS[0]によって制御される別のマルチプレクサによってシフトされる。 im = IN, if S[1] == 0 = IN << 2, if S[1] == 1 OUT = im, if S[0] == 0 = im << 1, if S[0] == 1 より大きなバレルシフタは追加のステージを持っている。 ==使用法== バレルシフタは浮動小数点ハードウェアに使われている。浮動小数点の加減算では、数の仮数部は必ず正規化されていなければならず、大きい方の数の指数部に合うまで小さい方の数を右シフトしてその数の指数部を増やさないといけない。これにより指数部の引き算が行われ、1サイクルで、仮数部の差を計算するためにバレルシフタを使って小さい方の数を右シフトする。もし単純なシフタが使われたならば、nビットシフトするのにnクロック必要になる。 == 参考文献 == {{FOLDOC}} {{DEFAULTSORT:はれるしふた}} [[Category:デジタル回路]] [[Category:コンピュータの算術]]
このページで使用されているテンプレート:
テンプレート:FOLDOC
(
ソースを閲覧
)
テンプレート:Lang-en-short
(
ソースを閲覧
)
テンプレート:出典の明記
(
ソースを閲覧
)
バレルシフタ
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報