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

Возможность одновременного выполнения компьютерных инструкций с правильными результатами

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

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

Обсуждение

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

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

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

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

е = а + бф = с + гм = е * ж

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

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

Ссылки

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

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

  • Aiken, Alex; Banerjee, Utpal; Kejariwal, Arun; Nicolau, Alexandru (2016-11-30). Параллелизм на уровне инструкций . Профессиональные вычисления (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 Архивировано 04.03.2016 на Wayback Machine
Взято с "https://en.wikipedia.org/w/index.php?title=Параллелизм_на_уровне_инструкций&oldid=1272060670"