stringtranslate.com

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

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

Параллелизм на уровне инструкций ( ILP ) — это параллельное или одновременное выполнение последовательности инструкций в компьютерной программе . Более конкретно, ILP относится к среднему количеству инструкций, выполняемых на шаге этого параллельного выполнения. [2] : 5 

Обсуждение

ILP не следует путать с параллелизмом . В ILP существует один конкретный поток выполнения процесса . С другой стороны, параллелизм предполагает назначение нескольких потоков ядру ЦП в строгом чередовании или при истинном параллелизме, если имеется достаточно ядер ЦП, в идеале по одному ядру на каждый работающий поток.

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

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

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

е = а + бе = с + dм = е * ж

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

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

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

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

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

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

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

Смотрите также

Рекомендации

  1. ^ «История вычислений». mason.gmu.edu . Проверено 24 марта 2019 г.
  2. ^ Гуссенс, Бернард; Ланглуа, Филипп; Парелло, Дэвид; Пети, Эрик (2012). «PerPI: инструмент для измерения параллелизма на уровне инструкций». Прикладные параллельные и научные вычисления . Конспекты лекций по информатике. Том. 7133. стр. 270–281. дои : 10.1007/978-3-642-28151-8_27. ISBN 978-3-642-28150-1. S2CID  26665479.
  3. ^ Хеннесси, Джон Л.; Паттерсон, Дэвид А. (1996). Компьютерная архитектура: количественный подход .
  4. ^ Размышления о стене памяти

дальнейшее чтение

Внешние ссылки