
コンピューティングにおいて、バレルシフタとは、バイナリ入力値によって指定された可変ビット数だけデータワードをシフトできる組み合わせ論理回路です。出力ワードの空ビットをゼロにして論理シフト演算(例:論理左シフト)を実行したり、設計上または1つ以上の機能選択入力によって指定された入力ワードの全ビットを回転したりできます。
バレルシフタはマイクロプロセッサ内でワードをシフトしたり回転したりするためによく使用され、[ 1 ]通常は1クロックサイクル内で実行されます。
例えば、入力A、B、C、Dを持つ4ビットのバレルシフタを考えてみましょう。このシフタは、ビットABCDの順序をDABC、CDAB、またはBCDAと循環させることができます。この場合、ビットは失われません。つまり、すべての出力を最大3つ右にシフトできます(したがって、A、B、C、Dの任意の循環的な組み合わせを作成できます)。バレルシフタは、ALUと並んでマイクロプロセッサの便利なコンポーネントとして使用されるなど、さまざまな用途があります。
実装
[編集]バレル シフタを実装する 1 つの方法は、シフト距離に応じて 1 つのマルチプレクサの出力が次のマルチプレクサの入力に接続される、マルチプレクサのシーケンスとして実装することです。
最高速のシフタは、上に示した 4 ビット シフタに似た方法で、より大きなフル クロスバーとして実装されます。これらは遅延が最も少なく、出力は常にシフトされる入力より 1 ゲート遅延遅れます (シフト カウント デコーダが安定するのに必要なわずかな時間を考慮した後。このペナルティはシフト カウントが変化する場合にのみ発生します)。ただし、これらのクロスバー シフタでは、nビット シフトにn 2ゲートが必要です。このため、バレル シフタは多くの場合、代わりに並列 2×1 マルチプレクサのカスケードとして実装され、ゲート数を大幅に削減してn log nのみで増加できます。一方、伝播遅延は大きくなり、log nで増加します(クロスバー シフタのように一定ではありません)。
8ビットバレルシフタでは、S[2]とS[1]の値に基づいて、4ビットと2ビットシフトするか、同じデータを渡すかの2つの中間信号が使用されます。この信号は、S[0]によって制御される別のマルチプレクサによってシフトされます。
int1 = IN 、 S[2] == 0 の場合 = IN << 4、S[2] == 1の場合 int2 = int1 、 S[1] == 0 の場合 = int1 << 2、S[1] == 1の場合 OUT = int2 、 S[0] == 0 の場合 = int2 << 1、S[0] == 1の場合
大型のバレル シフターには追加のステージがあります。
カスケード シフタには、シフト カウント用のデコード ロジックを必要としないという、フル クロスバー シフタに対するさらなる利点があります。
料金
[編集]nビットワードに必要なマルチプレクサの数は[ 2 ]である。5 つの一般的なワードサイズと必要なマルチプレクサの数は以下のとおりである。
- 128ビット —
- 64ビット —
- 32ビット —
- 16ビット —
- 8ビット —
FO4におけるクリティカル パスのコスト(配線遅延なしの推定値):
- 32ビット: 18 FO4から14 FO4へ[ 3 ]
用途
[編集]バレルシフタの一般的な用途は、浮動小数点演算のハードウェア実装です。浮動小数点加算または減算演算では、 2つの数値の仮数部を揃える必要があります。そのため、小さい方の数値を右にシフトし、その指数を増やして、大きい方の数値の指数と一致するまでシフトする必要があります。これは、指数を減算し、バレルシフタを用いて小さい方の数値をその差だけ右にシフトするという、1サイクルで実行されます。
参照
[編集]参考文献
[編集]- ^ Abhilasha; Sudharshan; Anusha, SL (2015). 「可逆ロジックベースのバレルシフタを用いた高性能8ビットヴェーダ乗算器の設計とFPGA実装」 .第2回信号処理、画像処理、VLSIに関する国際会議議事録. シンガポール: Research Publishing Services. pp. 991– 999. doi : 10.3850/978-981-09-6200-5_vlsi-74 . ISBN 978-981-09-6200-5。
- ^ クローニング、ダニエル;ストリッチマン、オファー (2008)。決定手順。スプリンガー。 p. 159.ISBN 978-3-540-74104-6。
- ^ Wang, David T. (2002年8月15日). 「FO4指標の再考」 . 2016年5月19日閲覧。
さらに読む
[編集]- クローニング、ダニエル。ストリッチマン、オファー (2008)。決定手順。スプリンガー。ISBN 978-3-540-74104-6。
外部リンク
[編集]- バレルシフター(8ビット)、ハンブルク大学
- 乗算器を使用したバレルシフターの実装(Paul Gigliotti、2004-08-17)