Продолжается подписка на наши издания! Вы не забыли подписаться?

Бесплатные завтраки кончились: фундаментальный поворот к параллелизму в программном обеспечении

Автор: Герб Саттер (Herb Sutter)
http://www.gotw.ca/publications/concurrency-ddj.htm
Опубликовано: 26.02.2006

Бесплатные завтраки скоро кончатся. Что вы можете с этим поделать? А что делаете?

Основные производители и архитекторы процессоров, от Intel и AMD до Sparc и PowerPC, практически исчерпали большинство традиционных направлений увеличения производительности процессоров. От поднятия тактовой частоты и пропусканной способности массово поворачиваются в сторону многопоточности и многоядерных архитектур. И то, и другое уже доступно на современных процессорах; в частности, многоядерность уже есть в современных процессорах PowerPC и Sparc IV, а в 2005 году появится у Intel и AMD (так и вышло – прим.ред.). Действительно, главной темой In-Stat/MDR Fall Processor Forum в 2004 были многоядерные устройства. Оглядываясь назад, можно без особого преувеличения назвать 2004 годом многоядерности.

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

Вполне возможно, что бесплатные завтраки кончились уже год или два назад, а мы только что это заметили.

...

Заключение

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

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

Благодаря продолжающемуся росту размера кеша и, вероятно, еще нескольким прямолинейным оптимизациям потока управления, бесплатные завтраки еще немного продолжатся; но с сегодняшнего дня в буфете будет только одно блюдо и один десерт. Филе-миньон выигрышей от повышения производительности все еще в меню, но теперь оно стоит больше – лишних усилий при разработке, лишних сложности кода и лишних затрат на тестирование. Хорошие новости в том, что для многих классов приложений дополнительные усилия будут оправданы, поскольку параллелизм позволит им полностью задействовать продолжающийся экспоненциальный рост производительности процессоров.

ПРИМЕЧАНИЕ

Оригинал статьи расположен по адресу http://www.gotw.ca/publications/concurrency-ddj.htm. Впервые статья была опубликована в Dr. Dobb's Journal, 30(3), March 2005.

........................
"С полным содержанием данной статьи можно ознакомиться в печатной версии журнала"

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

Copyright © 1994-2016 ООО "К-Пресс"