2012-06-07 3 views
9

Как выполняются битовые сдвиги на аппаратном уровне, когда число, которое нужно сдвинуть, неизвестно?Как выполняются сдвиги на аппаратном уровне?

Я не могу представить, что для каждого числа, которое вы можете сдвинуть (для 64-разрядных схем на 64-битной машине), будет отдельная схема, и я не могу себе представить, что это будет цикл сдвигов на один (это займет до 64 смены циклов на 64-битной машине). Это какой-то компромисс между ними или есть какой-то хитрый трюк?

+0

Если он использует ту же «схему», то это будет очень медленно :) смещение, как правило, один цикл работы на современном оборудовании , – leppie

+0

@leppie Вот почему я спрашиваю. – Matt

+1

Связанный вопрос: http://stackoverflow.com/questions/9083743/is-bit-shifting-o1-or-on –

ответ

10

Схема называется «barrel shifter» - это в основном загрузка мультиплексоров. Он имеет уровень на каждый адрес-бит-сдвиг-требуется, поэтому для 8-битного баррель-переключателя требуется три бита, чтобы сказать «сколько нужно сдвинуть» и, следовательно, 3 слоя мультиплексоров.

Вот картина 8-битном из http://www.globalspec.com/reference/55806/203279/chapter-9-additional-circuit-designs:

enter image description here

Смежные вопросы