Є два підходи до виявлення паралелізму (parallelism extraction) на рівні команд:
- апаратні засоби - виявленням паралелізму в потоці операцій займаються спеціальні схеми процесора при виконанні коду програм;
- програмне забезпечення - виявленням паралелізму займається компілятор, який формує виконуваний код програми під спеціальний процесор.
Рівень апаратного забезпечення працює на динамічному паралелізм. тоді як, рівень програмного забезпечення працює на статичному паралелізм. Сучасні високопродуктивні процесори x86 (Intel Pentium 4. Intel Core) працюють на динамічної послідовності паралельного виконання (Позачергове виконання команд). Статичний паралелізм застосовувався в процесорах Itanium (проте в Itanium 2 застосовується гібридний підхід).
Розглянемо наступну програму:
Операція 3 залежить від результатів 1 і 2, тому вона не може бути розрахована, поки обидві з них не будуть завершені. Однак операції 1 і 2 цієї статті не залежать від будь-якої іншої операції, так що вони можуть бути обчислені одночасно. Якщо припустити, що кожна операція може бути завершена в одну одиницю часу, то ці три інструкції можуть бути завершені в цілому за дві одиниці часу, даючи ILP 3/2.
Мета розробників компілятора і процесора. полягає у виявленні та отриманні від ILP максимально можливої вигоди. Звичайні програми, як правило, написана під послідовну модель виконання, де команди виконуються одна за одною в порядку, встановленому програмістом. ILP дозволяє компілятору і / або процесору перекривати виконання декількох інструкцій або навіть змінити порядок, в якому команди виконуються.
Скільки ILP існує в програмах - сильно залежить від області застосування програми. У деяких областях, таких як комп'ютерна графіка та наукові обчислення, число може бути дуже великим. Проте, робочі навантаження, такі як криптографія. можуть проявляти набагато менше паралелізму.
Апаратні методи виявлення і використання паралелізму:
- Обчислювальний конвеєр. де виконання декількох інструкцій може частково перекриватися;
- Суперскалярное виконання операцій, в якій кілька функціональних блоків використовуються для виконання декількох команд одночасно;
- Позачергове виконання. де інструкції виконуються в будь-якому порядку, що не порушує залежності даних. Зверніть увагу, що цей метод не залежить ні від конвеєра, ні від суперскаляра. Поточна реалізація позачергового виконання динамічно (тобто, в той час як програма виконується і без будь-якої допомоги з боку компілятора) витягує ILP від звичайних програм. В якості альтернативи можна витягти цей паралелізм під час компіляції і якось передати цю інформацію до апаратного забезпечення. Через складність техніки перерахунку позачергового виконання, промисловість переглянула набір команд. які явно кодують кілька незалежних операцій в інструкції;
- Перейменування регістрів. яке посилається на метод, який використовується, щоб уникнути непотрібної сериализации операцій, вироблених програмою, які накладають повторне використання регістрів за цими операціями, використовується для позачергового виконання;
- Спекулятивне виконання, яке дозволяє виконання повних інструкцій або частин інструкцій переконатися, чи слід цього виконання відбутися. Часто використовується формою спекулятивного виконання є припущення управління потоком, де інструкції пропускають управління потоком інструкцій (наприклад, перехід) і виконуються до того як визначиться мета потоку управління інструкцій. Кілька інші форми спекулятивного виконання були запропоновані і використовуються в тому числі для спекулятивного виконання, обумовлені прогнозуванням значення, прогнозування залежності пам'яті і прогнозування латентності кеш;
- Передбачення переходів. який використовується, щоб уникнути припинення контролю залежностей, які необхідно вирішити. Провісник переходів використовується зі спекулятивним виконанням.
Потокові архітектури є інший клас архітектур, де ILP чітко зазначених у них, див. Наприклад, архітектуру TRIPS.
Ранні реалізації ILP, в таких основному комплекті як IBM System / 360 Model 91. використовували методи ILP, щоб подолати обмеження, що накладаються відносно невеликим реєстрових файлом.