Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How are shifts implemented on the hardware level?

How are bit shifts implemented at the hardware level when the number to shift by is unknown?

I can't imagine that there would be a separate circuit for each number you can shift by (that would 64 shift circuits on a 64-bit machine), nor can I imagine that it would be a loop of shifts by one (that would take up to 64 shift cycles on a 64-bit machine). Is it some sort of compromise between the two or is there some clever trick?

like image 335
Matt Avatar asked Jun 07 '12 13:06

Matt


People also ask

How is bit shifting implemented?

Bit shifting means moving the position of the bits in the left direction or in the right direction. For example, if we write in binary form the decimal number 23 , we get 00010111 . If we shift all bits left with one position, we'll get 00101110 . Bit 7 (MSB) was replaced by bit 6, bit 6 by bit 5 and so on.

What is shifter in computer architecture?

Shifters and rotators move bits and multiply or divide by powers of 2. As the name implies, a shifter shifts a binary number left or right by a specified number of positions. Several kinds of commonly used shifters exist: Logical shifter—shifts the number to the left or right and fills empty spots with 0's.

How does a barrel shifter work?

A barrel shifter is a digital circuit that can shift a data word by a specified number of bits without the use of any sequential logic, only pure combinational logic, i.e. it inherently provides a binary operation.

How many cycles does a bit shift take?

In general just one. But the correct answer is it depends of the CPU architecture, specifically of its arithmetic and logical unit. Then, if the ALU implements a sequential shift register, then it will take so cycles as bits in the register.


1 Answers

The circuit is called a "barrel shifter" - it's a load of multiplexers basically. It has a layer per address-bit-of-shift-required, so an 8-bit barrel shifter needs three bits to say "how much to shift by" and hence 3 layers of muxes.

Here's a picture of an 8-bit one from http://www.globalspec.com/reference/55806/203279/chapter-9-additional-circuit-designs:

enter image description here

like image 103
Martin Thompson Avatar answered Sep 21 '22 19:09

Martin Thompson