Многоядерные процессоры, такие как Core 2 Extreme от Intel и двуядерный Athlon 64 от AMD принесли с собой повышенную производительность, лучшее управление электропитанием, и возможность для отрасли освободиться от рабской преданности чистой тактовой частоте.
Однако, многоядерная архитектура процессоров является ночным кошмаром для программистов, особенно для тех, кто хочет использовать все возможности новых чипов. Результат? Потенциал вашего нового процессора не используется, подобно необразованному мозгу.
С тех пор, как отрасль концентрировалась лишь на тактовой частоте, произошли существенные изменения. Раньше разработчики ПО получали «бесплатный проезд», говорит директор по управлению технологиями Микропроцессорной лаборатории Intel Джерри Ботиста (Jerry Bautista).
«Даже если программисты ничего не делали, а тактовая частота удваивалась, их программы начинали работать намного быстрее», говорит он о временах мегагерцовых войн. «Но когда мы выбрали путь параллелизма, время бесплатных проездов закончилось».
Помощь уже в пути. Производители чипов высылают кавалерию… в виде средств разработки.
В общем, «многоядерные» чипы состоят из двух и более ядер — центральных процессоров, размещенных на одном кремнии. Это позволяет правильно написанным программам разбивать вычислительные задачи на отдельные части, называемые «потоками», и обрабатывать их одновременно, т.е. параллельно, в отличие от старых одноядерных чипов, которые требовали последовательной обработки.
Несмотря на то, что многоядерные платформы уже давно используются в научном сообществе, их коммерческое использование началось немногим более двух лет назад, благодаря таким компаниям, как Sun Microsystems, IBM, Intel и AMD. Однако, программы, которые работают на этих процессорах, серьезно «тормозят». За исключением игровой индустрии, подавляющее большинство издателей ПО не пишет под многопоточные чипы.
И в самом деле, потенциальное преимущество многоядерных чипов не будет использовано, если программы не будут написаны так, чтобы задействовать их уникальность: а именно, параллелизм.
Другими словами, чтобы программы работали с максимальной скоростью, программистам придется писать многопоточные приложения. А, по словам Алана Цайчика (Alan Zeichick), президента и главного аналитика консалтинговой компании Camden Associates, это трудно — так же трудно, как получить степень доктора философии в области вычислительной техники.
Обычные программисты, работающие с 9 до 5, привыкшие к написанию однопоточных приложений, плохо подготовлены для работы с такими вещами, как блокировка памяти или задержка вычислений. К этому также добавляются сложности масштабируемости: код, написанный для 8-, 16- или 32-ядерных систем не обязательно будет работать на системах с 64 ядрами — как недавно анонсированная система компании Tilera Tile64 — или больше.
Теперь два крупнейших мировых производителя процессоров прилагают двойные усилия, чтобы помочь программистам угнаться за железом.
На сегодняшний день меры, принятые компаниями AMD и Intel, включают в себя все: от гибридных программно-аппаратных решений до разработки новых средств, тестов и компиляторов, которыми программисты могут пользоваться для масштабирования и отладки кода под многоядерные системы. Например, инициатива компании AMD «Аппаратные расширения для программного параллелизма» нацелена на улучшение интеграции программного и аппаратного обеспечения для реализации программного параллелизма.
Что касается Intel, ее новый шаг к продвижению и упрощению разработки ПО для многоядерных платформ особенно хорошо виден по исследовательскому блогу компании. За последние несколько недель исследователи Intel опубликовали ряд документов, описывающих план компании по заполнению внушительных пустот в разработке программ под многоядерные платформы.
Недавно компания выпустила библиотеку Threading Building Blocks C++ (Блоки организации многопоточной обработки данных на C++) — проект с открытым исходным кодом, предоставляющий программистам типовой код, который реализует «задачи» вместо «потоков». Intel заявляет, что библиотека разрабатывалась «на будущее» и будет поддерживать 4-, 8- и (когда-нибудь) даже 100-ядерные процессоры компании.
Основная философия, по словам Ботиста, заключается в том, чтобы подойти к этой проблеме как с аппаратной, так и с программной стороны, и попытаться при помощи грантов и других поощрений развить более научное исследование параллелизма — то, чего не хватало в последние годы.
Так как таких многоядерных чипов с массовым параллелизмом пока не существует, Ботиста признает, что у Intel нет ответов на все вопросы.
Честно говоря, ответов нет и у младшего соперника Intel компании AMD, даже, несмотря на ее новую инициативу «Аппаратные расширения для программного параллелизма». Как и Intel, AMD строит свою философию на том, чтобы закинуть сети как можно шире, засеивая все сообщество разработчиков средствами, необходимыми для параллельного программирования, также решая эту проблему с программной и аппаратной стороны.
В этой связи компания на прошлой неделе выпустила Light-Weight Profiling (LWP) — средство анализа оптимизации приложений для многоядерных платформ в реальном времени.
В сущности, LWP позволяет программе самой «на лету» решать, как лучше повысить производительность в параллельной среде.
«Мы хотим сделать так, чтобы тюнинг происходил автоматически во время прогона программы», сказал вице-президент AMD по разработке ПО Эрл Стал (Earl Stahl), добавляя, что такой метод будет особенно эффективен для многопоточных программных сред, таких как Java Virtual Machine от Sun Microsystems и .Net Framework от Microsoft.
По словам Цайчика, решение этой проблемы может заключаться как раз в подобных самооптимизирующихся средах. Он говорит, что и AMD и Intel пытаются сделать так, чтобы разработчики операционных систем (Microsoft, Apple и поставщики Linux-систем) начали встраивать эти технологии в свои системы сами — ход, который позволит производителям чипов сэкономить миллионы на разработке ПО.
«В конце концов, я думаю, им это удастся. Возьмем Microsoft или Red Hat — они должны масштабировать свои системы. Все просто. Продавцы платформ заинтересованы в этом… даже больше, чем кто-либо другой», говорит он.
Произойдет это или нет, но AMD и Intel, конечно же, должны придумать, как закрыть огромный разрыв между ПО и железом, возникший за прошедшие два года. Если они этого не сделают, то они рискуют, что все их четырех-, восьми-, и многоядерные платформы будут публике просто «по барабану».
Как говорит Ботиста: «Вопрос не в железе, а в том, что можно делать с этим железом — вот, что на самом деле интересно».
Плохо видно, но на этом чипе, который является последней разработкой Intel, располагаются 80 простых ядер с плавающей точкой. Пока он находится в экспериментальной стадии, однако, компания намеревается пустить его в промышленное производство в течение ближайших пяти лет. Вопрос: будет ли кто-нибудь использовать его по максимуму?