Schalthebel - Barrel shifter

Schema eines 4-Bit-Crossbar-Barrel-Shifters. 'x' bezeichnet Eingangsbits und y bezeichnet Ausgangsbits.

Ein Barrel-Shifter ist eine digitale Schaltung , die ein Datenwort ohne die Verwendung einer sequentiellen Logik , nur einer reinen Kombinationslogik , um eine bestimmte Anzahl von Bits verschieben kann , dh sie liefert von Natur aus eine binäre Operation . Es kann jedoch theoretisch auch verwendet werden, um unäre Operationen zu implementieren , wie beispielsweise logisches Verschieben nach links , in Fällen, in denen durch einen festen Betrag (zB für die Adresserzeugungseinheit ) durch einen festen Betrag begrenzt wird. Eine Möglichkeit, einen Barrel-Shifter zu implementieren, ist eine Folge von Multiplexern, bei der der Ausgang eines Multiplexers mit dem Eingang des nächsten Multiplexers in einer von der Verschiebungsdistanz abhängigen Weise verbunden wird. Ein Barrel-Shifter wird häufig verwendet, um n-Bits in modernen Mikroprozessoren zu verschieben und zu rotieren, typischerweise innerhalb eines einzigen Taktzyklus .

Nehmen wir zum Beispiel einen Vier-Bit-Barrel-Shifter mit den Eingängen A, B, C und D. Der Shifter kann die Reihenfolge der Bits ABCD als DABC , CDAB oder BCDA durchlaufen ; in diesem Fall gehen keine Bits verloren. Das heißt, er kann alle Ausgänge um bis zu drei Positionen nach rechts verschieben (und somit eine beliebige zyklische Kombination von A, B, C und D vornehmen). Der Barrel-Shifter hat eine Vielzahl von Anwendungen, einschließlich einer nützlichen Komponente in Mikroprozessoren (neben der ALU ).

Implementierung

Ein Barrel-Shifter wird oft als Kaskade paralleler 2×1-Multiplexer implementiert. Für einen 8-Bit-Barrel-Shifter werden zwei Zwischensignale verwendet, die basierend auf dem Wert von S[2] und S[1] um vier und zwei Bits verschieben oder die gleichen Daten durchlassen. Dieses Signal wird dann von einem anderen Multiplexer verschoben, der von S[0] gesteuert wird:

 int1  = IN       , if S[2] == 0
       = IN   << 4, if S[2] == 1
 int2  = int1     , if S[1] == 0
       = int1 << 2, if S[1] == 1
 OUT   = int2     , if S[0] == 0
       = int2 << 1, if S[0] == 1

Größere Barrel-Shifter haben zusätzliche Stufen.

Kosten

Die Anzahl der für ein n- Bit-Wort erforderlichen Multiplexer beträgt . Nachfolgend sind fünf gängige Wortgrößen und die Anzahl der benötigten Multiplexer aufgeführt:

  • 128-Bit —
  • 64-Bit —
  • 32-Bit —
  • 16-Bit —
  • 8 Bit -

Kosten des kritischen Pfades in FO4 (geschätzt, ohne Drahtverzögerung):

  • 32-Bit: von 18 FO4 bis 14 FO4

Verwendet

Eine übliche Verwendung eines Barrel-Shifters ist die Hardware-Implementierung von Gleitkomma-Arithmetik . Für eine Gleitkomma-Additions- oder -Subtraktionsoperation müssen die Signifikanden der beiden Zahlen ausgerichtet werden, was erfordert, dass die kleinere Zahl nach rechts verschoben und ihr Exponent erhöht wird , bis sie mit dem Exponenten der größeren Zahl übereinstimmt. Dies geschieht durch Subtrahieren der Exponenten und Verwenden des Barrel-Shifters, um die kleinere Zahl in einem Zyklus um die Differenz nach rechts zu verschieben. Wenn ein einfacher Schieber verwendet würde, würde das Verschieben um n Bitpositionen n Taktzyklen erfordern .

Siehe auch

Verweise

Weiterlesen

Externe Links