Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VPKS_v2_UKR_new.doc
Скачиваний:
21
Добавлен:
11.09.2019
Размер:
2.31 Mб
Скачать

5. Класифікація конфліктів за даними

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

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

  • RAW (читання після запису) - j намагається прочитати операнд-джерело даних перш, ніж i туди запише. Таким чином, j може некоректно одержати старе значення. Це найбільш загальний тип конфліктів, спосіб їхнього подолання за допомогою механізму "обходів" розглянутий раніше.

  • WAR (запис після читання) - j намагається записати результат у приймач перш, ніж він зчитується відтіля командою i, так що i може некоректно одержати нове значення. Цей тип конфліктів як правило не виникає в системах із централізованим керуванням потоком команд, що забезпечують виконання команд у порядку їхнього надходження, тому що наступний запис завжди виконується пізніше, ніж попереднє зчитування. Особливо часто конфлікти такого роду можуть виникати в системах, що допускають виконання команд не в порядку їхнього розташування в програмному коді.

  • WAW (запис після запису) - j намагається записати операнд перш, ніж буде записаний результат команди i, тобто записи закінчуються в неправильному порядку, залишаючи в приймачі значення, записане командою i, а не j. Цей тип конфліктів присутній тільки в конвеєрах, які виконують запис із багатьох щаблів (або дозволяють команді виконуватися навіть у випадку, коли попередня припинена).

6. Конфлікти за даними, що призводять до призупинки конвеєра

На жаль не всі потенційні конфлікти за даними можуть оброблятися за допомогою механізму "обходів". Розглянемо наступну послідовність команд (рис. 5.9):

Команда

IF

ID

EX

MEMWB

LW R1,32(R6)

IF

ID

EXMEMWB

ADD R4,R1,R7

IF

IDstallEXMEMWB

SUB R5,R1,R8

IF stallIDEXMEMWB

AND R6,R1,R7

stallIFIDEXMEMWB

Рис. 7. Послідовність команд із припиненням конвеєра

Цей випадок відрізняється від послідовності команд АЛУ, що йдуть підряд. Команда завантаження (LW) регістра R1 з пам'яті має затримку, що не може бути усунута звичайною "пересиланням". Замість цього нам потрібна додаткові апаратури, називана апаратурами внутрішніх блокувань конвеєра (pipeline interlook), щоб забезпечити коректне виконання приклада. Взагалі такого роду апаратури виявляє конфлікти й припиняє конвеєр доти, поки існує конфлікт. У цьому випадку ці апаратури припиняє конвеєр починаючи з команди, що хоче використати дані в той час, коли попередня команда, результат якої є операндом для нашої, виробляє цей результат. Ці апаратури викликає припинення конвеєра або поява "бульбашки" точно також, як і у випадку структурних конфліктів.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]