Td>
КомандаПТ
IF
ID
EX
MEM
WB
Цілочисельна команда
IF
ID
EX
MEM
WB
Команда ПТ
IF
ID
EX
MEM
WB
Цілочисельна команда
IF
ID
EX
MEM
WB
Команда ПТ
IF
ID
EX
MEM
WB
Таблиця 3.1 Робота суперскалярного конвейєра
В
3.2 Труднощі реалізації
При паралельної видачі двох операцій (однієї целочисленной команди і однієї команди ПТ) потреба в додатковій апаратурі, крім звичайної логіки виявлення конфліктів, мінімальна: цілочисельні операції та операції ПТ використовують різні набори регістрів і різні функціональні пристрої. Єдина складність виникає, тільки якщо команди представляють собою команди завантаження, запису та пересилання чисел з плаваючою крапкою. Ці команди створюють конфлікти по портах регістрів ПТ, а також можуть призводити до нових конфліктів типу RAW, коли операція ПТ, яка могла б бути видана в тому ж такті, є залежною від першої команди в парі. p> Якщо пара команд складається з однієї команди завантаження з ПТ і однієї операції з ПТ, яка від неї залежить, необхідно виявляти подібний конфлікт і блокувати видачу операції з ПТ За винятком цього випадку, всі інші конфлікти природно можуть виникати, як і у звичайній машині, що забезпечує видачу однієї команди в кожному такті. Для запобігання непотрібних припинень можуть, правда, знадобитися додаткові ланцюги обходу. p> Іншою проблемою, яка може обмежити ефективність суперскалярной обробки, є затримка завантаження даних з пам'яті. У нашому прикладі простого конвеєра команди завантаження мали затримку в один такт, що не дозволяло наступній команді скористатися результатом команди завантаження без призупинення. У суперскалярное конвеєрі результат команди завантаження не може бути використаний у тому ж самому і в наступному такті. Це означає, що наступні три команди не можуть використовувати результат команди завантаження без призупинення. Затримка переходу також стає завдовжки в три команди, оскільки команда переходу повинна бути першою в парі команд. Щоб ефективно використовувати паралелізм, доступний на суперскалярной машині, потрібні більш складні методи планування потоку команд, використовувані компілятором або апаратними засобами, а також більш складні схеми декодування команд. p> У загальному випадку в суперскалярной системі команди можуть виконуватися паралельно і можливо не в спосіб, встановлений програмою. Якщо не вживати ніяких заходів, таке невпорядковане виконання команд і наявність безлічі функціональних пристроїв з різним часом виконання операцій можуть призводити до додаткових труднощам. Наприклад, при виконанні деякої довгою команди з плаваючою точкою (команди поділу або обчислення квадратного кореня) може виникнути виняткова ситуація вже після того, як завершилося виконання більш швидкої операції, виданої після цієї довгої команди. Для того, щоб підтримувати модель точних переривань, апаратура повинна гарантувати коректне стан процесору при перериванні для організації подальшого повернення. p> Зазвичай в машинах з неврегульованим виконанням команд передбачаються додаткові буферні схеми, що гарантують завершення виконання команд в строгому порядку, наказаному програмою. Такі схеми являють собою деякий буфер "Історії", тобто апаратну чергу, в яку при видачі потрапляють команди і поточні значення регістрів результату цих команд в заданому програмою порядку. br/>
3.3 Історична довідка
У 1993 році корпорація Intel впровадила в масове виробництво паралелізм на рівні команд, випустивши процесор Intel Pentium, що володів здатністю декодувати і виконувати команди обчислювального потоку паралельно. Роком пізніше фахівці Intel реалізували двопроцесорну обробку (два повноцінних процесора поміщалися в два роз'єми на одній системній платі), створивши апаратну багатопоточну середу для серверів і робочих станцій. У 1995 році був представлений процесор Intel ...