Barrel shifter

Barrel shifter (пристрій швидкого зсуву) — цифрова електронна схема, яка виконує зсув даних на вказане число позицій за один такт синхронізації. Пристрій швидкого зсуву також може виконувати циклічний зсув і розширення знакового біта.

Принцип роботи

Принцип дії пристрою швидкого зсуву

На вхід пристрою подається дві групи вхідних даних по N біт кожна і N керуючих сигналів, на виході з'являється N біт даних. Кількість розрядів, на які виконується зсув, визначається позицією керуючого сигналу високого рівня (всі інші керуючі сигнали повинні мати низький рівень), операція, яку необхідно виконати, визначається подачею вхідних даних. Наприклад:

  • при подачі даних на «вхід 1» і нулів на «вхід 0» буде здійснений правий зсув;
  • при подачі даних на обидва входи буде здійснений циклічний зсув.

Пристрій швидкого зсуву застосовується в цілочисельних арифметичних операціях (де зсув на один розряд еквівалентний множенню або діленню на два) і в операціях над числами з рухомою комою для вирівнювання операндів при виконанні додавання і віднімання. Мантиса числа, що має менший порядок, зсувається вправо, кількість позицій, на які проводиться зсув, дорівнює різниці порядків чисел. Після зсуву порядки чисел стають рівними.

Недоліки (для циклічного barrel shifter'а)[1]:

  • Вхідна ємність пропорційна розрядності N.
  • Кількість транзисторів пропорційна квадрату розрядності N2
  • Потрібен декодер для формування керуючих сигналів.

В процесорах x86 пристрої зсуву застосовуються, починаючи з Intel 80386.[2]

Ресурсомісткість

Кількість мультиплексорів, необхідних для реалізації n-бітового пристрою зсуву за схемою barrel shifter становить n log 2 n {\displaystyle \scriptstyle n\log _{2}n} [3] Для п'яти найчастіше використовуваних розмірів кількість мультиплексорів становить:

  • 128-біт — 128 × log 2 ( 128 ) = 128 × 7 = 896 {\displaystyle \scriptstyle 128\times \log _{2}(128)=128\times 7=896}
  • 64-біт — 64 × log 2 ( 64 ) = 64 × 6 = 384 {\displaystyle \scriptstyle 64\times \log _{2}(64)=64\times 6=384}
  • 32-біт — 32 × log 2 ( 32 ) = 32 × 5 = 160 {\displaystyle \scriptstyle 32\times \log _{2}(32)=32\times 5=160}
  • 16-біт — 16 × log 2 ( 16 ) = 16 × 4 = 64 {\displaystyle \scriptstyle 16\times \log _{2}(16)=16\times 4=64} [3]
  • 8-біт — 8 × log 2 ( 8 ) = 8 × 3 = 24 {\displaystyle \scriptstyle 8\times \log _{2}(8)=8\times 3=24} [3]

Застосування

Пристрої бітового зсуву найчастіше використовуються для апаратної реалізації арифметики над числами з рухомою комою.

Див. також

Примітки

  1. An Interconnect-Centric Approach to Cyclic Shifter Design: slide 6
  2. iXBT.com: Методы увеличения вычислительной производительности [Архівовано 10 серпня 2019 у Wayback Machine.](рос.)
  3. а б в * VLSI Implementation of a Barrel Shifter [Архівовано 2 жовтень 2013 у Wayback Machine.] // Proceedings of SPIT-IEEE Colloquium and International Conference, Mumbai, India Vol2, 150
  • п
  • о
  • р
Архітектура
Архітектура системи команд
Розрядність
Виконання інструкцій
Паралельні обчислення
Багатонитевість
Таксономія Флінна
Типи
Складові
Управління живленням[en]
  • APM
  • ACPI
  • Динамічна зміна частоти[en]
  • Динамічна зміна напруги[en]
  • Clock gating