я кожні 10 ні, а всі функціональні блоки робили свою роботу також за 10 ні, то на щаблі 4 завжди функціонував би тільки один блок, що зробило б саму ідею конвеєра безглуздою. Як видно з малюнка 3.2, на щаблі 4 може бути кілька АЛП. p> Суперскалярні процесори мають:
- багаторівневу ієрархічну пам'ять, включно до трьох рівнів кеш-пам'яті;
- роздільні кеш-пам'яті команд і даних;
- пристрій вибірки команд, що забезпечує вибірку на виконання сукупності команд;
- таблиці передбачення переходів;
- перейменування регістрів;
- підтримку позачергового виконання команд;
- набір функціональних пристроїв для перетворення даних у форматах з фіксованою і плаваючою крапкою.
Суперскалярні машини використовують паралелізм на рівні команд шляхом посилки декількох команд з звичайного потоку команд у декілька функціональних пристроїв. Додатково, щоб зняти обмеження послідовного виконання команд, ці машини використовують механізми позачергової видачі та позачергового завершення команд, прогнозування переходів, кеші цільових адрес переходів і умовне (по припущенням) виконання команд. Зросла складність, реалізована цими механізмами, створює також проблеми реалізації точного переривання. p> У типовій суперскалярной машині апаратура може здійснювати видачу від однієї до шести команд в одному такті. Зазвичай ці команди повинні бути незалежними і задовольняти деяким обмеженням, наприклад таким, що в кожному такті не може видаватися більш однієї команди звернення до пам'яті. Якщо яка-небудь команда в потоці команд є логічно залежною або не задовольняє критеріям видачі, на виконання будуть видані тільки команди, що передують даній. Тому швидкість видачі команд в суперскалярних машинах є змінною. Це відрізняє їх від VLIW-машин, в яких повну відповідальність за формування пакета команд, які можуть видаватися одночасно, несе компілятор, а апаратура в динаміці не приймає ніяких рішень щодо видачі декількох команд. p> Припустимо, що машина може видавати на виконання дві команди в одному такті. Однією з таких команд може бути команда завантаження регістрів з пам'яті, запису регістрів на згадку, команда переходів, операції цілочисельного АЛП, а інший може бути будь-яка операція плаваючою точки (ПТ). Паралельна видача целочисленной операції та операції з плаваючою точкою набагато простіше, ніж видача двох довільних команд. У реальних системах (наприклад, в процесорах PA7100, hyperSPARC, Pentium та ін) застосовується саме такий підхід. У більш потужних процесорах (наприклад, MIPS R10000, UltraSPARC, PowerPC 620 та ін) реалізована видача до чотирьох команд у одному такті. p> Видача двох команд у кожному такті вимагає одночасної вибірки і декодування принаймні 64 біт. Щоб спростити декодування можна зажадати, щоб команди розташовувалися в пам'яті парами і були вирівняні по 64-бітовим кордонів. В іншому випадку необхідно аналізувати команди в процесі вибірки і, можливо, міняти їх місцями в момент пересилання в цілочисельне пристрій і в пристрій Пт При цьому виникають додаткові вимоги до схем виявлення конфліктів. У будь-якому разі друга команда може видаватися, тільки якщо може бути видана на виконання перша команда. Апаратура приймає такі рішення в динаміці, забезпечуючи видачу лише першої команди, якщо умови для одночасної видачі двох команд не дотримуються. У таблиці 3.1 представлена ​​діаграма роботи подібного конвеєра в ідеальному випадку, коли в кожному такті на виконання видається пара команд. p> Такий конвеєр дозволяє істотно збільшити швидкість видачі команд. Однак щоб він зміг так працювати, необхідно мати або повністю конвеєризований пристрої плаваючою точки, або відповідне число незалежних функціональних пристроїв. В іншому разі пристрій плаваючої крапки стане вузьким горлом і ефект, досягнутий за рахунок видачі в кожному такті пари команд, зведеться до мінімуму. p> Розглянемо наступні етапи виконання команди:
- вибірка команди - IF;
- декодування команди - ID;
- виконання операції - EX;
- звернення до пам'яті - MEM;
- запам'ятовування результату - WB. br/>
Тип команди
Сходинка конвеєра
Цілочисельна команда
IF
ID
EX
MEM
WB
Команда ПТ
IF
ID
EX
MEM
WB
Цілочисельна команда
IF
ID
EX
MEM
WB