バレルシフタ

バレルシフタとは



バレルシフタは、デジタル回路における重要な構成要素であり、ワードデータ(一連のビット)を特定ビット数だけシフトさせる機能を持つ回路です。このシフト操作は、データの回転や位置調整に利用され、特に高速なデータ処理が求められる場面で重宝されます。

実装方法



バレルシフタは、複数のマルチプレクサを組み合わせることで実装されます。基本的な構成は、2入力1出力のマルチプレクサを段階的に接続し、各段のマルチプレクサがシフト量に応じて入力を選択する仕組みです。具体的には、nビットワードをシフトさせるには、およそn log2(n) 個のマルチプレクサが必要となります。

以下に、一般的なワードサイズと必要なマルチプレクサ数の例を示します。

64ビット: 64 log2(64) = 64 6 = 384個
32ビット: 32 log2(32) = 32 5 = 160個
16ビット: 16 log2(16) = 16 4 = 64個
8ビット: 8 log2(8) = 8 3 = 24個

動作原理



例えば、4ビットのバレルシフタを考えます。入力がA, B, C, D の場合、このバレルシフタはABCDの順でビットを回転させるようにシフトできます。つまり、右に3ビットシフトすると、DABCとなり、すべてのビットを循環させることが可能です。

バレルシフタは、2x1マルチプレクサをカスケード接続することで実現できます。例えば、シフト量が2ビットである場合、S[1]の値が1であれば、2ビットシフトされたデータを出力し、0であればそのままのデータを出力します。そして、この出力はS[0]の値によって、さらに1ビットシフトされるか、そのまま出力されます。

具体例として、以下の動作が挙げられます。

im = IN (if S[1] == 0)
im = IN << 2 (if S[1] == 1)
OUT = im (if S[0] == 0)
* OUT = im << 1 (if S[0] == 1)

より大きなバレルシフタでは、上記のようなステージが追加されます。

応用分野



バレルシフタは、マイクロプロセッサのALU(算術論理演算装置)において、シフト演算を高速に行うために不可欠な部品です。また、浮動小数点数の演算ハードウェアにも広く利用されています。浮動小数点数の加減算では、仮数部を正規化する必要があります。この正規化の際、小さい方の数を大きい方の数の指数部に合わせるために、仮数部を右シフトする操作が必要になります。バレルシフタを使用すれば、このシフト操作を1クロックサイクルで完了させることが可能となり、高速な演算処理に貢献します。

単純なシフタの場合、nビットシフトするのにnクロックサイクルが必要ですが、バレルシフタならば、どのようなシフト量でも1サイクルで処理できるため、計算速度の向上に大きく貢献します。

まとめ



バレルシフタは、デジタル回路において高速なデータシフトを可能にする重要な回路です。その効率的な構造と幅広い応用性から、様々な電子機器やコンピュータシステムで欠かせない要素となっています。特に、マイクロプロセッサの性能向上において、バレルシフタの役割は非常に大きいといえるでしょう。

参考文献


本記事は、2008年11月1日以前にFree On-line Dictionary of Computingから取得した項目を元に、GFDL バージョン1.3以降の「RELICENSING」(再ライセンス) 条件に基づいて組み込まれています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。