Конвеєризація обробки даних
Звичайні арифметичні операції легко піддаються конвеєризації. Розглянемо кілька прикладів.
Конвеєрний суматор цілих чисел
В основі алгоритму підсумовування цілих чисел лежить підсумовування одного двійкового розряду (рис. 1).
Подаємо операцію в наступному вигляді (рис. 2).
![]() |
Тут і - значення відповідного розряду в першому і другому доданків, - перенесення з молодшого розряду, - значення в розряді після складання, - значення перенесення в старший розряд.
Розглянута операція може бути представлена таблицею:
З використанням даного алгоритму легко можна побудувати класичний суматор цілих чисел з послідовним переносом (рис. 3).
![]() |
Цей суматор виконує операцію .
У даному суматорі підсумовування розрядів проводиться послідовно, оскільки для підсумовування кожного наступного розряду необхідно знати біт перенесення, отриманий під час підсумовування попереднього розряду. Якщо час підсумовування кожного розряду складає, то загальний час підсумовування двох-розрядних чисел становить
Такий самий суматор у конвеєрному варіанті виглядає наступним чином (рис. 4):
![]() |
Як видно із рис. 4, на кожному кроці конвеєра відбувається підсумовування одного розряду. Інші розряди залишаються незмінними, зберігаються у спеціальних фіксаторах. Такий конвеєр дозволяє виконувати підсумовування потоку цілих чисел - у той час як відбувається додавання другого розряду першої пари чисел, може вже починатися підсумовування першого розряду другої пари чисел. Важливо зауважити, що час підсумовуванняоднієї пари не змінюється - воно залишається рівним. Але інтервал сходу результатів із суматора тепер дорівнює не як раніше, а . Тобто під час підсумовування потоку даних конвеєрний суматор у раз швидше.
Конвеєрний суматор чисел у форматі з плаваючою комою
У форматі з плаваючою комою подання числа складається з двох складових - порядку та мантиси (рис. 5).
![]() |
У обчислювальних системах числа з плаваючою комою завжди подаються в нормалізованій формі - після точки завжди стоїть цифра, відмінна від нуля. Це дозволяє позбутися неоднозначності подання у такому форматі. Оскільки ліворуч від точки завжди стоїть нуль, не зберігається у пам'яті ЕОМ, як і сама точка. Подання числа у форматі з плаваючою комою в ЕОМ має вигляд (рис. 6):
Під уявлення числа відводиться певну кількість розрядів (мінімум 32). Найстарший розряд кодує знак числа, далі розташована мантиса і за нею — порядок, також зі знаком.
Для складання двох чисел у форматі з плаваючою комою, представлених у нормалізованій формі, необхідно:
- Здійснити вирівнювання порядків по більшому з чисел, "зрушивши" мантису меншого числа праворуч на відповідне число розрядів.
- Так як у отриманих чисел порядки однакові, їх додавання зводиться до складання мантис як звичайних цілих чисел (мантіса - ціле число).
- Після складання необхідно подати отриману суму в нормалізованій формі, скоригувавши мантису та порядок.
Конвеєризований суматор, що працює за таким алгоритмом, представлений на рис. 7.
![]() |
Отже, на вхід конвеєра надходять два числа у форматі з плаваючоюкомою (і).
На першому ступені конвеєра відбувається порівняння порядків та визначення максимального з двох чисел, а також різниці порядків. На виході проміжні значення фіксуються у фіксаторах: F1 – старший порядок, F2 – мантиса числа зі старшим порядком, F3 – мантиса числа з молодшим порядком, F4 – різниця порядків.
На другому ступені конвеєра відбувається приведення чисел до одного порядку шляхом зсуву мантиси меншого числа праворуч. На виході проміжні значення фіксуються у фіксаторах: F1 - порядок (він тепер однаковий для обох чисел), F2 - мантиса першого доданку, F5 - мантиса другого доданку.
На третьому ступені виконується цілісне підсумовування мантис. Використовуваний при цьому цілісний суматор може бути конвеєризований. На виході маємо F1 – порядок суми, F6 – мантиса суми.
На четвертому ступені виконується приведення отриманої суми до нормалізованої форми з корекцією мантиси та порядку. На виході: F1 – порядок суми після приведення до нормалізованої форми, F6 – мантиса суми після приведення до нормалізованої форми. В результаті отримали число у форматі з плаваючою комою, яка буде сумою вихідних чисел і .




