Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Конвеєрна обробка

Читайте также:
  1. Паралельна обробка

У попередньому прикладі для виконання однієї операції складання пристрій блокувався на п'ять тактів і ніякої іншої роботи не виконував. Чи виправдано це і чи можна організувати процес обробки всіх елементи вхідних масивів ефективніше? Для відповіді на це питання потрібно пам'ятати представлення дійсних чисел в комп'ютері. Складання кожної пари чисел виконується у вигляді послідовності мікрооперацій, таких як порівняння порядків, вирівнювання порядків, складання мантис, нормалізація і т.п. В процесі обробки кожної пари вхідних даних мікрооперації виконуються тільки один раз і завжди в одному і тому ж порядку: одна за за іншою. Це, зокрема, означає, що якщо перша мікрооперація виконала свою роботу і передала результати іншій, то для обробки поточної пари вона більше не знадобиться, і значить, вона цілком може починати обробку наступної очікуючої на вході пристрою пари аргументів.

Виходячи їх цих міркувань, сконструюємо пристрій таким чином. Кожну мікрооперацію виділимо в окрему частину пристрою і розташуємо їх у порядку виконання. У перший момент часу вхідні дані поступають для обробки першої частиною. Після виконання першої мікрооперації перша частина передає результати свій роботи другій частини, а сама бере нову пару. Коли вхідні аргументи пройдуть через всі етапи обробки, на виході пристрою з'явиться результат виконання операції.

Такий спосіб організації обчислень і носить назву конвеєрної обробки. Кожна частина пристрою називається кроком конвеєра, а загальне число кроків — довжиною конвеєра. Припустимо, що для виконання операції складання дійсних чисел спроектований конвеєрний пристрій, що складається з п'яти ступенів, що спрацьовують за один такт кожна. Час виконання однієї операції конвеєрним пристроєм рівний сумі часів спрацьовування всіх ступенів конвеєра. Це значить, що одна операція складання двох чисел виконається за п'ять тактів, тобто за стільки ж часу, за скільки така ж операція виконувалася і на послідовному пристрої у попередньому випадку.

Тепер розглянемо процес складання двох масивів (рис. 3). Як і раніше, через п'ять тактів буде одержаний результат складання першої пари. Але помітимо, що одночасно з першою парою пройшли часткову обробку і інші елементи. Кожен подальший такт (!) на виході конвеєрного пристрою з'являтиметься сума чергових елементів. На виконання всієї операції потрібно 104 такти, замість 500 тактів при використовуванні послідовного пристрою — виграш в часі майже в п'ять разів.

Приблизно так само буде і в загальному випадку. Якщо конвеєрний пристрій містить l кроків, а кожен крок спрацьовує за одну одиницю часу, то час обробки п незалежних операцій цим пристроєм складе l + п - 1 одиниць. Якщо це ж пристрій використовувати в монопольному режимі (як послідовний), то час обробки буде рівний l*п. В результаті для великих значень п дістали прискорення майже в l раз за рахунок використання конвеєрної обробки даних.

.

Рис. 3. Підсумовування векторів C = А + B за допомогою конвеєрного пристрою. Кожний з п'яти ступенів конвеєра спрацьовує за один такт

 

Команда, у якої всі аргументи повинні бути тільки скалярними величинами, називається скалярною командою. Якщо хоча б один аргумент команди може бути вектором, то така команда називається векторною командою.

Як і раніше, вважатимемо, що конвеєрний пристрій складається з l кроків, що спрацьовують за один такт. Два вектори з n елементів можна або скласти однією векторною командою, або виконати підряд n скалярних команд складання елементів цих векторів. Якщо n скалярних команд одна за одною виконуються на такому пристрої, то, згідно загальному закону, вони будуть оброблені за l + n - 1 тактів. Разом з тим, на практиці витримати ритм, визначуваний цією формулою, досить складно: кожен такт потрібно забезпечувати нові вхідні дані, зберігати результат, перевіряти необхідність повторної ітерації, мабуть збільшувати значення індексів і т.д. і т.п. У результаті, необхідність виконання безлічі допоміжних операцій призводить до того, що стає неможливим кожен такт подавати вхідні дані на вхід конвеєрного пристрою. У конвеєрі з'являються "міхури", а значить, на виході вже не кожен такт з'являються результати, і ефективність роботи пристрою знижується.

При використанні векторних команд у формулі додається ще один доданок: σ + l+ n - 1, де σ — це час, необхідний для ініціалізації векторної команди. Виконання векторної команди не вимагає практично ніяких допоміжних дій, окрім моменту її ініціалізації або підтримки сегментації. Проте присутність σ визначає той факт, що для невеликих значень n відповідні векторні команди вигідніше виконувати не у векторному, а в звичному скалярному режимі.

Оскільки ні σ, ні l не залежать від значення n, то із збільшенням довжини вхідних векторів ефективність конвеєрної обробки зростає. Якщо під ефективністю обробки розуміти реальну продуктивність Преал конвеєрного пристрою, рівну відношенню числа виконаних операцій п до часу їх виконання t, то залежність продуктивності від довжини вхідних векторів визначається наступним співвідношенням:

 

де τ — це час такту роботи комп'ютера.

На рис.4 показаний приблизний вид цієї залежності. Із збільшенням числа вхідних даних реальна продуктивність конвеєрного пристрою всебільше і більше наближається до його пікової продуктивності. Однак у цього факту є і виключно важлива зворотна сторона — пікова продуктивність будь-якого конвеєрного пристрою ніколи недосяжна на практиці.

Рис. 4. Залежність продуктивності конвеєрного пристрою, від довжини вхідного набору даних


Дата добавления: 2015-11-30; просмотров: 68 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.007 сек.)