logo
AOM / Мельник А

5.2.1. Типи конфліктів за даними

Одним з чинників, який істотно впливає на продуктивність конвеєрних комп'юте­рів, є логічні залежності між командами. Такі залежності великою мірою обмежують потенційний паралелізм суміжних операцій виконання команд, що забезпечується від­повідними апаратними засобами. Ступінь впливу цих залежностей визначається як структурою комп'ютера (в основному, організацією керування конвеєром команд і ха­рактеристиками функціональних пристроїв), так і характеристиками програм.

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

Відомі три можливі конфлікти за даними залежно від порядку операцій читання і запису. Розглянемо дві команди - і та j,при цьому команда і передує команді j.Можливі наступні конфлікти:


2. RAW (read after write) - запис після читання. Команда jнамагається записати опе­ранд до регістра призначення ще до того, як попередній вміст цього регістра прочитає команда і (рис. 5.4). Якби не було конвеєра, то спочатку попередня команда і прочитала


1. WAR(writeafterread)- читання після запису. Команда jнамагається прочитати ще не оновлений командою і операнд (рис. 5.3). Якби не було конвеєра, то спочатку поперед­ня команда і записала б до комірки Xоперанд, який пізніше був би зчитаний командою). У випадку використання конвеєрного опрацювання команд, як це видно з рисунка, фаза читання команди jвиконується раніше фази запису команди і. Таким чином, команда jможе некоректно набути старого значення.

171

б з комірки Xоперанд, а пізніше до цієї комірки був би записаний інший операнд коман­дою j.У випадку використання конвеєрного опрацювання команд, як це видно з рисун­ка, фаза запису команди jвиконується раніше фази читання команди і. Таким чином, команда і може набути некоректного нового значення.

3. WAW (write after write) - запис після запису. Команда jнамагається записати опе-ранд до регістра призначення ще до того, як цей запис провела команда і, тобто записи закінчуються в неправильному порядку (рис. 5.5). Якби не було конвеєра, то спочатку попередня команда і записала б до комірки Xоперанд, а пізніше до цієї комірки був би записаний інший операнд командою j.У випадку використання конвеєрного опрацю­вання команд, як це видно з рисунка, фаза запису команди jвиконується раніше фази запису команди і. В результаті комірка тимчасово отримує некоректний вміст, чим може «скористатися» проміжна k-та команда.

Можливий також випадок RAR(readafterread)- читання після читання, але він не­безпеки не створює, і тому не розглядається. Означення, класифікацію та перші методи скасування конфліктів за даними (в оригіналі - datahazards)запропонував Роберт Кел-лер в 1975 році.