WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

Параллелизм на уровне команд (англ. Instruction-level parallelism — ILP) является мерой того, какое множество операций в компьютерной программе может выполняться одновременно. Потенциальное совмещение выполнения команд называется «параллелизмом на уровне команд».

Описание

Есть два подхода к выявлению параллелизма (parallelism extraction) на уровне команд:

  • аппаратные средства — выявлением параллелизма в потоке операций занимаются специальные схемы процессора при исполнении кода программ;
  • программное обеспечение — выявлением параллелизма занимается компилятор, который формирует исполняемый код программы под специальный процессор.

Уровень аппаратного обеспечения работает на динамическом параллелизме, тогда как уровень программного обеспечения работает на статическом параллелизме. Современные высокопроизводительные процессоры x86 (Intel Pentium 4, Intel Core) работают на динамической последовательности параллельного выполнения (Внеочередное исполнение команд). Статический параллелизм применялся в процессорах Itanium (однако в Itanium 2 применяется гибридный подход).

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

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

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

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

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

Аппаратные методы выявления и использования параллелизма:

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

Потоковые архитектуры представляют собой другой класс архитектур, где ILP явно указаны, см., например, архитектуру TRIPS.

Реализации

Ранние реализации ILP в таких мейнфреймах, как IBM System/360 Model 91, использовали методы ILP, чтобы преодолеть ограничения, налагаемые относительно небольшим регистровым файлом.

В микропроцессорах различные формы параллелизма на уровне инструкций стали применяться с конца 1980-х. В качестве примера первых суперскалярных процессоров можно привести Intel 960CA (1989 год[1]), IBM Power RS/6000 (1990 год), DEC Alpha 21064 (1992 год)[2]. Внеочередное исполнение команд и переименование регистров в микропроцессорах впервые было реализовано в IBM POWER1 (1990 г.).

Первым IA-32-процессором с конвейером стал Intel 80486 (1989 г.); первым суперскалярным IA-32-процессором стал Intel Pentium (1993 г); первый IA-32-процессор с внеочередным исполнением команд и переименованием регистров — Intel Pentium Pro (1995 г.),

В период с 1999 по 2005 год компании AMD и Intel вели активную конкурентную борьбу по выпуску все более и более производительных микропроцессоров для массового потребительского и серверного рынков. В процессорах, выпущенных за этот период, обеими компаниями активно совершенствовались техники эксплуатации параллелизма на уровне команд. Например, в архитектуре NetBurst компания Intel наращивала стадии вычислительного конвейера, доведя их число в Pentium 4 Prescott до 31. Обе компании повышали тактовую частоту процессоров (т. н. «гонка гигагерцев»), уменьшали техпроцесс, чтобы поместить ещё больше транзисторов на подложке процессора с целью использовать их для ещё большего повышения эффективности работы суперскалярных конвейеров.

К концу 2005 года стало ясно, что все эти способы и методы себя исчерпали. Закон масштабирования Деннарда перестал работать. При неизменных темпах увеличения количества транзисторов производительность самих процессоров повышалась незначительно, но при этом росло энергопотребление процессоров и их тепловыделение, приблизившись к ограничениям недорогих систем теплоотвода (power ceiling, power wall[3][4]).

С конца 2005 года рост тактовых частот и однопоточной производительности значительно замедлились[5][6][7] и отрасль производства микропроцессоров начала движение в сторону использования других уровней параллелизма, а именно параллелизма на уровне потоков и задач, реализованого в многопроцессорности, многоядерности и аппаратной многопоточности[8]. Это отразилось в свою очередь на подходах к программированию[9].

См. также

Примечания

  1. Ron Copeland. Intel Ready to Announce i960CA Microprocessor With 66 MIPS // InfoWorld. — 1989. Т. 11, № 36. С. 19. (англ.)
  2. Kai Hwang, Naresh Jotwani. Advanced Computer Architecture. — second edition. — McGraw-Hill Education, 2011. — С. 152. — 723 с. ISBN 978-0-07-070210-3. (англ.)
  3. Christopher Mims. Why CPUs Aren't Getting Any Faster (англ.). MIT Technology review (October 12, 2010). — «power wall (the chip’s overall temperature and power consumption). .. arguably the defining limit of the power of the modern CPU.». Проверено 3 сентября 2016.
  4. Russell Fish. Future of computers - Part 2: The Power Wall (англ.). EDN (January 06, 2012). Проверено 3 сентября 2016.
  5. DATA PROCESSING IN EXASCALE-CLASS COMPUTER SYSTEMS, Chuck Moore (AMD), The Salishan Conference on High Speed Computing (LANL / LLNL / SNL) April 27, 2011
  6. The death of CPU scaling: From one core to many — and why we’re still stuck, Joel Hruska on February 1, 2012
  7. A Look Back at Single-Threaded CPU Performance, 2012 — после 2004 г рост однопоточной производительности по SpecInt составляет около 15-20 % в год, вместо 50 % в предыдущие десять лет
  8. Intel Developer Forum in 2005 — Intel President Paul Otellini — «We are dedicating all of our future product development to multicore designs. We believe this is a key inflection point for the industry».
  9. Herb Sutter. The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software

Литература

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии