4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Многоядерные процессоры и проблемы параллельной обработки

Многоядерные процессоры и проблемы параллельной обработки

Почему параллельная обработка приложений на основе потоков неадекватна эпохе многоядерных процессоров

Закон Мура — сделанное в 1965 году Гордоном Муром предсказание, что число компонентов интегральных схем будет удваиваться каждые 18-24 месяца — оказался верным, и ожидается, что он будет соблюдаться до 2015-2020 года (см. раздел Ресурсы). До 2005 года тактовая частота процессоров тоже постоянно повышалась, и этого было достаточно для повышения производительности всех приложений, выполняемых этими процессорами. Сообщество разработчиков приложений получало дотацию на повышение производительности, мало или вообще ничего не вкладывая в улучшение алгоритмов.

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

Куда мы идем?

О том, почему параллелизм на основе акторов становится все более популярной и необходимой альтернативой традиционному Java-параллелизму, ― в учебном курсе Использование параллелизма на основе акторов при создании Java-приложений (developerWorks, май 2012 г.).

В этом подкасте developerWorksЭнди Гловер берет интервью у эксперта в области параллельной обработки Алекса Миллера.

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

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

Модель программирования на основе потоков

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

Параллелизм на основе потоков имеет следующие преимущества:

  • это хорошо освоенная модель программирования;
  • сообщество разработчиков приложений хорошо понимает, как создавать, планировать, исполнять потоки и управлять ими;
  • разработчики привыкли к последовательному порядку алгоритмической архитектуры. Модель потоков просто распространяет тот же подход на параллелизм.

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

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector