Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Компьютер Атанасова – Берри , первый компьютер с параллельной обработкой данных [1]

Параллелизм на уровне инструкций ( ILP ) - это мера того, сколько инструкций в компьютерной программе могут выполняться одновременно.

ILP не следует путать с параллелизмом :

  • ИЛП является параллельное выполнение последовательности команд , относящихся к конкретному потока исполнения в виде процесса (работающую программу с набором ресурсов: адресное пространство , набор регистров , его идентификаторы, его состояния, программного счетчика (ака указатель команды ), и больше).
  • С другой стороны, параллелизм включает в себя назначение потоков одного или разных процессов ядру ЦП в строгом чередовании или в истинном параллелизме, если имеется достаточно ядер ЦП, в идеале по одному ядру на каждый выполняемый поток.

Существует два подхода к параллелизму на уровне команд: аппаратный и программный .

Аппаратный уровень работает с динамическим параллелизмом, тогда как программный уровень работает с статическим параллелизмом. Динамический параллелизм означает, что процессор решает во время выполнения, какие инструкции выполнять параллельно, тогда как статический параллелизм означает, что компилятор решает, какие инструкции выполнять параллельно. [2] [ требуется пояснение ] Процессор Pentium работает с динамической последовательностью параллельного выполнения, а процессор Itanium работает на статическом уровне параллелизма.

Рассмотрим следующую программу:

 е = а + Ь f = c + d м = е * е

Операция 3 зависит от результатов операций 1 и 2, поэтому ее нельзя рассчитать, пока обе они не будут выполнены. Однако операции 1 и 2 не зависят от других операций, поэтому их можно вычислять одновременно. Если предположить, что каждая операция может быть завершена за одну единицу времени, тогда эти три инструкции могут быть выполнены в общей сложности за две единицы времени, что дает ILP 3/2.

Задача разработчиков компиляторов и процессоров - определить и использовать как можно больше ILP. Обычные программы обычно пишутся в рамках модели последовательного выполнения, когда инструкции выполняются одна за другой и в порядке, указанном программистом. ILP позволяет компилятору и процессору перекрывать выполнение нескольких инструкций или даже изменять порядок, в котором выполняются инструкции.

Степень использования ILP в программах зависит от конкретного приложения. В определенных областях, таких как графика и научные вычисления, сумма может быть очень большой. Однако такие рабочие нагрузки, как криптография, могут демонстрировать гораздо меньший параллелизм.

Микроархитектурные методы, которые используются для использования ILP, включают:

  • Конвейерная обработка инструкций, при которой выполнение нескольких инструкций может частично перекрываться.
  • Суперскалярное выполнение, VLIW и тесно связанные концепции вычисления явно параллельных команд , в которых несколько исполнительных модулей используются для параллельного выполнения нескольких инструкций.
  • Выполнение вне очереди, когда инструкции выполняются в любом порядке, который не нарушает зависимости данных. Обратите внимание, что этот метод не зависит ни от конвейерной обработки, ни от суперскалярного выполнения. Текущие реализации внеочередного выполнения динамически (т. Е. Во время выполнения программы и без какой-либо помощи компилятора) извлекают ILP из обычных программ. Альтернативой является извлечение этого параллелизма во время компиляции и передача этой информации аппаратным средствам. Из-за сложности масштабирования техники выполнения вне очереди промышленность пересмотрела наборы команд, которые явно кодируют несколько независимых операций для каждой инструкции.
  • Переименование регистров, которое относится к методике, используемой для предотвращения ненужной сериализации программных операций, вызванной повторным использованием регистров этими операциями, используемых для обеспечения выполнения вне очереди.
  • Спекулятивное выполнение, которое позволяет выполнять полные инструкции или части инструкций, прежде чем будет определено, должно ли это выполнение иметь место. Обычно используемая форма спекулятивного исполнения - это предположение о потоке управления, когда инструкции, следующие за инструкцией потока управления (например, ветвление), выполняются до того, как будет определена цель инструкции потока управления. Несколько других формы спекулятивного исполнения, были предложены и используется в том числе спекулятивного исполнения ведомого путем прогнозирования значения , прогнозированием зависимости памяти и предсказание кэш латентности .
  • Предсказание ветвления, которое используется, чтобы избежать остановки при разрешении управляющих зависимостей. Прогнозирование ветвлений используется со спекулятивным исполнением.

Известно, что ILP используется как компилятором, так и аппаратной поддержкой, но компилятор также предоставляет аппаратному обеспечению внутреннюю и неявную ILP в программах путем оптимизации компиляции. Некоторые методы оптимизации для извлечения доступной ILP в программах могут включать планирование, выделение / переименование регистров и оптимизацию доступа к памяти.

Архитектуры потоков данных - это еще один класс архитектур, в которых ILP явно указывается, последний пример см. В архитектуре TRIPS .

В последние годы методы ILP использовались для повышения производительности, несмотря на растущее несоответствие между рабочими частотами процессора и временем доступа к памяти (ранние разработки ILP, такие как IBM System / 360 Model 91использовали методы ILP для преодоления ограничений, накладываемых относительно небольшим файлом регистров). В настоящее время штраф за пропуск кэша в основную память стоит несколько сотен циклов процессора. Хотя в принципе можно использовать ILP, чтобы выдерживать даже такие задержки памяти, связанные с этим затраты на ресурсы и рассеиваемую мощность непропорциональны. Более того, сложность и часто задержка лежащих в основе аппаратных структур приводит к снижению рабочей частоты, что еще больше снижает любые преимущества. Следовательно, вышеупомянутые методы оказываются неадекватными для предотвращения зависания ЦП из-за данных вне кристалла. Вместо этого отрасль движется к использованию более высоких уровней параллелизма, которые можно использовать с помощью таких методов, как многопроцессорность и многопоточность . [3]

См. Также [ править ]

  • Зависимость от данных
  • Параллелизм на уровне памяти (MLP)

Ссылки [ править ]

  1. ^ "История вычислительной техники" . mason.gmu.edu . Проверено 24 марта 2019 .
  2. ^ Хеннесси, Джон Л .; Паттерсон, Дэвид А. Компьютерная архитектура: количественный подход .
  3. ^ Размышления о стене памяти

Дальнейшее чтение [ править ]

  • Айкен, Алекс; Банерджи, Утпал; Кеджаривал, Арун; Николау, Александру (30 ноября 2016 г.). Параллелизм на уровне инструкций . Профессиональные вычисления (1-е изд.). Springer. ISBN 978-1-4899-7795-3. ISBN 1-4899-7795-3 .  (276 стр.)

Внешние ссылки [ править ]

  • Подходы к преодолению стены памяти
  • Статья из журнала Wired, относящаяся к указанной выше статье.
  • https://www.scribd.com/doc/33700101/Instruction-Level-Parallelism#scribd
  • http://www.hpl.hp.com/techreports/92/HPL-92-132.pdf