Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
40
Добавлен:
30.03.2015
Размер:
387.58 Кб
Скачать

Многоядерные процессоры и программирование

Сегодняшнее программирование разделено на две практически непересекающиеся области: программирование высокоскоростных вычислений и создание программ общего назначения. До недавнего времени они мирно сосуществовали. При этом специалисты по высокопроизводительным вычислениям свысока посматривали на разработчиков из мира ПК, которые, в свою очередь, считали проблемы физического параллелизма вечным уделом малочисленных групп, финансируемых правительственными и военными структурами. Гром грянул, когда ведущие поставщики приступили к поставке двухъядерных процессоров и объявили о планах производства микросхем с сотнями ядер на одной подложке. Как это повлияет на программирование?

Десятилетиями программирование для персональных компьютеров существовало в оранжерейных условиях: оптимизация программ находилась если не на последнем, то далеко не на первом месте. Много внимания уделялось процессу групповой разработки, объектным паттернам программирования, сокращению времени создания программ. Считалось, что скорость работы программы увеличивается независимо от разработчика, просто в силу постоянного роста мощности процессора, ускорения обмена данными с памятью и периферией.

Действительно, примерно с 1970-го по 1985 год производительность процессоров росла преимущественно за счет совершенствования элементной базы и увеличения тактовой частоты. Затем, вплоть до 2000 года, основную роль стали играть архитектурные усовершенствования — конвейеризация, специализация, суперскалярность, спекулятивные вычисления, кэширование, увеличение разрядности. Все эти факторы не влияли на процесс проектирования большинства программ, которые продолжали оставаться прозрачными, линейными и преимущественно объектно-ориентированными. Даже без перекомпиляции они исполнялись на новых платформах значительно быстрее, и программисты считали, что так будет продолжаться вечно.

В 2001 году был исчерпан ресурс повышения тактовой частоты процессора. Для рядового пользователя это прошло незамеченным, поскольку организация массового производства процессоров с тактовой частотой более 3 ГГц растянулась на несколько лет. К 2005 году был освоен серийный выпуск 3-гигагерцевых процессоров, и оказались в основном исчерпанными ресурсы архитектурного совершенствования отдельно взятого процессора. В апреле 2005 года Intel и AMD одновременно приступили к продаже двухъядерных процессоров для персональных компьютеров — по сути, двух процессоров на одной подложке. Золотой век ПК закончился. Теперь забота о повышении скорости исполнения программ полностью ложится на плечи кодировщиков.

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

В погоне за супервычислителем

Программирование создавалось и развивалось как элитарная научная дисциплина, которая изучала способы разработки, проверки и улучшения программ для ЭВМ. Под программой понималась упорядоченная последовательность действий машины, реализующая алгоритм решения некоторой задачи. А под алгоритмом подразумевалось всякое точное предписание, которое задает вычислительный процесс, направленный на получение полностью определяемого результата по исходным данным. Речь шла исключительно о вычислительных алгоритмах, и, действительно, подавляющее число задач на заре программирования были именно такими: рассчитать траекторию полета ракеты, на основе метеорологических данных выдать прогноз погоды, найти экстремум функции в экономической задаче, оценить требуемую мощность электромагнита для циклотрона или вычислить интеграл с точностью до десятого знака.

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

Производительность суперкомпьютеров увеличивается за счет совершенствования элементной базы и архитектурных решений. Элементная база определяет быстродействие транзисторов и рассеиваемую мощность, а основные архитектурные изменения направлены на распараллеливание обработки данных, то есть одновременное выполнение нескольких действий [1].