Android

Многоядерные чипы создают следующий большой вызов для отрасли

Настя и сборник весёлых историй

Настя и сборник весёлых историй
Anonim

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

Большинство программных продуктов по-прежнему написано для одноядерных чипов, и их необходимо будет переписать или обновить, чтобы использовать преимущества растущего числа ядер, которые Intel, Sun Microsystems и другие производители чипов добавляют к их продукты, сказал Linley Gwennap, президент и главный аналитик The Linley Group.

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

Производители чипов и системные разработчики приступили к обучению разработчиков и предоставлению им лучших инструментов для многоядерного программирования. Год назад Intel и Microsoft заявили, что они вложит 20 миллионов долларов США в открытие двух исследовательских центров в университетах США, посвященных решению проблемы. Отсутствие инструментов многоядерного программирования для основных разработчиков - это, пожалуй, самая большая проблема, с которой сталкивается индустрия сегодня, сказал Гвеннап.

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

Но в последние годы Intel и Advanced Micro Devices добавили ядра в качестве более энергоэффективного способа повышения производительность чипов, заметно изменилась с их традиционной практикой увеличения тактовой частоты. Intel строит восемь ядер в своих новых чипах Nehalem-EX, а AMD разрабатывает 12-ядерные чипы для серверов. Они также добавляют возможности многопоточности, которые позволяют каждому из ядер работать на нескольких строках кода в одно и то же время.

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

Доступны несколько инструментов параллельного программирования, таких как Parallel Studio Intel для C и C ++. Другими поставщиками в этом пространстве являются Codeplay, Polycore Software и Clik Arts. Существует также новая модель параллельного программирования на основе C под названием OpenCL, разработанная The Khronos Group и поддерживаемая Apple, Intel, AMD, Nvidia и другими.

Но многие из доступных инструментов все еще находятся в процессе разработки, участники сказал Multicore Expo. Программные компиляторы должны иметь возможность идентифицировать код, который можно распараллелить, а затем выполнять распараллеливание без ручного вмешательства программистов, сказал Шей Гал-он, директор по разработке программного обеспечения в EEMBC, некоммерческой организации, которая разрабатывает тесты для встроенных чипов.

Несмотря на отсутствие инструментов, некоторые поставщики программного обеспечения сочли относительно простым создание параллельного кода для простых вычислений, таких как обработка изображений и видео, сказал Гвеннапп. Adobe переписала Photoshop таким образом, что может назначать такие функции, как увеличение и фильтрация изображений, на конкретные ядра x86, повышая производительность в три-четыре раза, сказал он.

«Если вы делаете видео или графику, вы можете использовать разные наборы пикселей и назначать их для разных ЦП. Таким образом, вы можете получить много параллелизма », - сказал он. Но для более сложных задач трудно найти один подход для определения последовательности вычислений, которые могут быть распараллелены, а затем делить их.

В то время как сторона программирования может представлять большую проблему, также требуются аппаратные изменения, чтобы преодолеть такие проблемы, как латентность памяти и медленная скорость шины. «Когда вы добавляете все больше и больше процессоров на чипе, вам нужна пропускная способность памяти для резервного копирования», - сказал Гвеннап.

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

Бремя ответственности в конечном итоге может заключаться в том, что разработчики могут преодолеть разрыв между аппаратное и программное обеспечение для написания лучших параллельных программ. По словам Галза, многие кодеры не справляются с последними разработками в области аппаратного дизайна. Он должен открыть листы данных и изучить архитектуры чипов, чтобы понять, как их код может работать лучше, сказал он.