Параллелизм на уровне инструкций

редактировать
способность компьютерных команд выполняться одновременно с правильными результатами

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

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

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

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

Существует два подхода к параллелизму на уровне команд: Аппаратное обеспечение и Программное обеспечение.

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

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

1 e = a + b 2 f = c + d 3 m = e * f

Операция 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, чтобы выдерживать даже такие задержки памяти, связанные с этим затраты на ресурсы и рассеиваемую мощность непропорциональны. Более того, сложность и часто задержка лежащих в основе аппаратных структур приводит к снижению рабочей частоты, что еще больше снижает любые преимущества. Следовательно, вышеупомянутые методы оказываются неадекватными для предотвращения зависания ЦП из-за данных вне кристалла. Вместо этого отрасль движется к использованию более высоких уровней параллелизма, которые можно использовать с помощью таких методов, как многопроцессорность и многопоточность.

Содержание
  • 1 См. Также
  • 2 Ссылки
  • 3 Дополнительная литература
  • 4 Внешние ссылки
См. Также
Ссылки
Дополнительная литература
  • Aiken, Alex ; Банерджи, Утпал; Кеджаривал, Арун; Николау, Александру (30 ноября 2016 г.). Параллелизм на уровне инструкций. Профессиональные вычисления (1-е изд.). Springer. ISBN 978-1-4899-7795-3. ISBN 1-4899-7795-3.(276 страниц)
Внешние ссылки
Последняя правка сделана 2021-05-24 03:39:29
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте