запоминающем пристрої, починаючи з такту 3, роботу конвейєра доведеться постійно призупиняти, оскільки різні команди в одному і тому ж такті звертаються до пам'яті на зчитування команди, вибірку операнда, запис результату.
Боротьба з конфліктами такого роду проводиться шляхом збільшення кількості однотипних функціональних пристроїв, які можуть одночасно виконувати одні й ті ж або схожі функції. Наприклад, зазвичай поділяють кеш-пам'ять для зберігання команд і кеш-пам'ять даних, а також використовують Багатопортовий схему доступу до реєстрової пам'яті, при якій до регістрів можна одночасно звертатися по одному каналу для запису, а по іншому - для зчитування інформації. Конфлікти через виконавчих пристроїв зазвичай згладжуються введенням до складу процесора додаткових блоків. p> У суперскалярних процесорах реалізована конвеєрна обробка та паралельне виконання команд. Кілька команд одночасно можуть виконатися протягом одного такту. У таблиці 2.4 представлена ​​послідовність виконання команд в процесорі, що має два конвеєра, за умови, що команді К1 вимагається 3 такти на етапі EX.
Таблиця 2.4
Етап
Такт
1
2
3
4
5
6
7
IF
K1
K2
K3
K4
K5
K6
K7
K8
K7
K9
K7
K10
K11
K12
ID
K1
K2
K3
K4
K5
K6
K5
K8
K5
K9
K7
K10
OR
K1
K2
K3
K4
K3
K6
K3
K8
K5
K9
EX
K1
K2
K1
K4
K1
K6
K3
K8
WB
K2
K4
K1
K6
При цьому команди будуть завершуватися в послідовності К2-К4-К1-К6-...
Отже, може порушитися вихідний порядок завершення команд програми. Недоліком суперскалярних процесорів є необхідність синхронного просування команд у кожному з конвеєрів. При виникненні затору в одному з конвеєрів повинні призупиняти свою роботу та інші. Але такі призупинення істотно знижують швидкодію процесора. Вирішення цієї ситуації полягає в тому, щоб дати можливість виконуватися командам в одному конвеєрі поза залежно від ситуації в інших конвеєрах. Це призводить до неупорядкованого виконання команд. При цьому команди, що стоять в програмі пізніше, можуть завершитися раніше команд, що стоять попереду. Апаратні засоби процесора повинні гарантувати, що результати виконаних команд будуть записані в приймач в тому порядку, в якому команди записані в програмі. Для цього в процесорі результати етапу виконання команди зазвичай зберігаються у буфері оновлення послідовності команд. Запис результату чергової команди з цього буфера в приймач результату проводиться лише після того, як виконані всі попередні команди й записані їх результати.
Конфлікти з управління виникають при конвейєризації команд переходів та інших команд, що змінюють значення лічил ка команд.
Суть конфліктів цієї групи найбільш зручно проілюструвати на прикладі команд умовного переходу. Нехай у програмі, представленої в таблиці 2.1, команда i +1 є командою умовного переходу, формує адресу наступної команди в Залежно від результату виконання команди i. Команда i завершить своє виконання в такті 5. У той же час команда умовного переходу уже в такті 3 повинна прочитати необхідні їй ознаки, щоб правильно сформувати адреса наступної команди....