Параллелизм на уровне инструкций
Параллелизм на уровне инструкций (ILP) — это потенциал для одновременного выполнения нескольких инструкций из одной программы, используемый суперскалярными процессорами и процессорами со сверхдлинным командным словом (VLIW), которые выдают и завершают несколько инструкций за такт.
Definition
Параллелизм на уровне инструкций — это степень, в которой инструкции одной программы могут выполняться параллельно; процессоры используют его, выдавая, выполняя и завершая более одной инструкции за тактовый цикл, с учетом зависимостей по данным и управлению.
Scope
Эта тема охватывает параллелизм, доступный в одном потоке инструкций, и то, как аппаратное обеспечение и компиляторы его извлекают: суперскалярная выдача нескольких инструкций за такт, конструкции со сверхдлинным командным словом (VLIW), анализ зависимостей, переименование регистров и спекулятивное выполнение. Она также охватывает ограничения доступного ILP. Исключаются параллелизм на уровне потоков и данных между ядрами и линиями (параллельная и многоядерная архитектура) и базовый однопоточный конвейер (конвейеризация и опасности).
Core questions
- Сколько параллелизма изначально доступно среди инструкций типичной программы?
- Как суперскалярные процессоры решают, какие инструкции могут быть выданы вместе?
- Как конструкции VLIW переносят бремя поиска параллелизма на компилятор?
- Какие зависимости и опасности ограничивают объем реализуемого ILP?
Key concepts
- суперскалярная выдача
- сверхдлинное командное слово (VLIW)
- зависимости по данным и именам
- переименование регистров
- множественные функциональные блоки
- спекулятивное выполнение
- пределы ILP
- инструкций за такт (IPC)
Key theories
- Динамическое планирование инструкций
- Аппаратное обеспечение может обнаруживать и использовать ILP во время выполнения, отслеживая зависимости и планируя готовые инструкции на несколько функциональных блоков; алгоритм Томасуло, с резервационными станциями и переименованием регистров, является каноническим механизмом, обеспечивающим внеочередную, параллельную выдачу.
Mechanisms
Суперскалярные процессоры извлекают и декодируют несколько инструкций за такт, проверяют их зависимости, переименовывают регистры для устранения ложных зависимостей и выдают независимые инструкции на несколько функциональных блоков. Конструкции VLIW вместо этого полагаются на компилятор, который объединяет независимые операции в широкие командные слова. Истинные зависимости по данным и поток управления устанавливают верхнюю границу для реализуемого параллелизма, которую спекулятивное выполнение и большие окна инструкций пытаются расширить.
Clinical relevance
Методы ILP способствовали десятилетиям роста производительности однопоточных вычислений и остаются центральными для высокопроизводительных ядер ЦП. Их убывающая отдача — по мере достижения пределов доступного параллелизма и сложности — была ключевой причиной, по которой отрасль обратилась к многоядерным и явным параллельным вычислениям для дальнейшего масштабирования.
History
Множественные функциональные блоки и динамическое планирование появились в CDC 6600 и IBM System/360 Model 91 в 1960-х годах. Суперскалярные конструкции стали мейнстримом в 1990-х годах, а архитектуры VLIW, такие как Intel Itanium, стремились к параллелизму, управляемому компилятором. Исследования пределов ILP в начале 1990-х годов прояснили, почему параллелизм в одном потоке ограничен.
Debates
- Аппаратный против компиляторно-управляемого ILP
- Суперскалярное внеочередное аппаратное обеспечение динамически находит параллелизм ценой сложности и энергопотребления, тогда как VLIW полагается на компилятор для статического планирования параллелизма; опыт показал, что динамические подходы более надежны для различных рабочих нагрузок, в то время как статические подходы остаются привлекательными для предсказуемых, маломощных конструкций.
Key figures
- Robert Tomasulo
- Yale Patt
- John L. Hennessy
- Joseph A. Fisher
- James E. Smith
Related topics
Seminal works
- hennessy2019
- tomasulo1967
Frequently asked questions
- В чем разница между суперскалярным и VLIW?
- Оба выполняют несколько операций за такт. Суперскалярный процессор решает на аппаратном уровне, во время выполнения, какие инструкции могут быть выданы вместе; процессор VLIW полагается на компилятор, который заранее группирует независимые операции в широкие инструкции, что упрощает аппаратное обеспечение, но требует большего от компилятора.
- Почему существует предел параллелизма на уровне инструкций?
- Реальные программы имеют истинные зависимости по данным и частые ветвления, которые ограничивают количество инструкций, которые могут выполняться параллельно. За пределами определенного окна достижимый параллелизм насыщается, поэтому извлечение большего ILP дает убывающую отдачу относительно добавленной сложности аппаратного обеспечения и энергопотребления.