Конфлікти управління

Матеріал з Вікіпедії — вільної енциклопедії.

КОНФЛІКТИ УПРАВЛІННЯ (сontrol hazards) - різновид конфліктів в конвеєрі, спричинених особливостями конвеєрного виконання команд передачі управління.

Нехай i та j - дві машинні команди, і j в програмі є наступною за i. Кажуть, що j залежить по управлінню від i, коли рішення про необхідність виконання чи невиконання j приймається на основі результату, отриманого під час виконання i. Тобто, j залежить від i по управлінню, якщо i - команда передачі управління.

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

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


Комп'ютер Це незавершена стаття про комп'ютери.
Ви можете допомогти проекту, виправивши або дописавши її.