- •Многоядерные процессоры и программирование
- •В погоне за супервычислителем
- •Физический параллелизм
- •Программирование физически параллельных систем
- •Операционные системы
- •Преимущества «мелкозернистого» логического параллелизма
- •Многопоточный логический параллелизм
- •Логический и физический параллелизм
- •Как преодолеть кризис?
- •Время переосмыслить концепции
- •Литература
Время переосмыслить концепции
На сегодняшний день достигнут технологический предел увеличения вычислительной мощности отдельно взятого процессора. Это подрывает статус-кво в отношениях между производителями аппаратуры, системного и прикладного программного обеспечения и конечными пользователями, а соответственно, угрожает динамике ИТ-индустрии в целом.
Ведущие изготовители микроэлектронных компонентов, пытаясь сохранить тенденцию роста производительности, предлагают радикальные изменения в базовой архитектуре персональных компьютеров — многоядерные процессоры. Эти архитектурные изменения предполагают коррекцию подходов к созданию программ, а именно — активное использование физического параллелизма. Однако он, с одной стороны, неприменим к большому классу существующих последовательных алгоритмов, а с другой, означает возврат к низкоуровневому программированию со всеми вытекающими отсюда последствиями (от повышения квалификационных требований к разработчикам до увеличения затрат на создание и реинжиниринг программ).
Все это позволяет охарактеризовать нынешнюю ситуацию как кризисную. Пришло время переосмыслить базовые концепции организации и распространенные техники разработки системного программного обеспечения с целью создания высокоуровневых методик и языков программирования, не предполагающих отдельного рассмотрения вопросов физического параллелизма.
Литература
Воеводин В.В. Параллельная обработка данных. Курс лекций. — Лаборатория параллельных информационных технологий НИВЦ МГУ, 2000.
Макконнелл Дж. Основы современных алгоритмов. — М.: Техносфера, 2004.
Легалов А., Кузьмин Д., Казаков Ф., Привалихин Д. На пути к переносимым параллельным программам
Зюбин В.Е., Петухов А.Д. Распределение вычислительных ресурсов в средах c многопоточной реализацией гипер-автомата // Труды III Международной конференции «Идентификация систем и задачи управления» SICPRO’04. — Москва, 2004.
Sutter H. The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software. Dr. Dobb’s Journal, March 2005.
Владимир Зюбин (mailto:zyubin%40iae.nsk.su) — сотрудник Института автоматики и электрометрии СО РАН (Новосибирск).
Osp.ru
Перенос существующих приложений на многоядерные процессоры |
По сравнению с традиционными процессорами многоядерные кристаллы обеспечивают значительно более высокую производительность, потребляют меньше энергии и занимают меньшую площадь на плате. Тем не менее, перед использованием многоядерного оборудования системотехники и разработчики программного обеспечения должны выбрать модель многопроцессорной обработки, которая способна обеспечить максимальный прирост производительности и свести к минимуму модификацию существующих программных компонентов. С течением времени многопроцессорные системы стали значительно компактнее. Десять лет назад типичная многопроцессорная система включала в себя несколько соединённых между собой плат, на каждой из которых располагался один процессор. Позже появились системы, в которых все процессоры подключались к единственной плате через отдельные разъёмы. В настоящее время с изобретением многоядерных процессоров многопроцессорные системы включают в себя несколько ядер, которые интегрированы в единый кристалл. Выпущено множество публикаций о том, что новое поколение многопроцессорных кристаллов приведёт к развитию настольных персональных компьютеров, корпоративных серверов, игровых консолей и домашних мультимедийных центров. Однако если говорить о развитии, то возможности многопроцессорных кристаллов полезнее в оборонной и авиакосмической промышленности. Как и системы в любой другой индустрии, военные компьютеры и подсистемы управления радарами, полётами и объединения датчиков становятся всё более сложными и потребляют значительную вычислительную мощность. Тем не менее, эти системы должны удовлетворять строгим требованиям лёгкости, низкого энергопотребления и теплоотдачи, а также соответствовать спецификациям существующих конструктивов, объединительных плат и корпусов. Многоядерные кристаллы отвечают этим требованиям, обеспечивая значительно более высокую производительность на единицу мощности, веса и площади, чем традиционные однопроцессорные микросхемы. Кроме того, платы на основе многоядерных кристаллов уменьшают число разъёмов в системе, а, следовательно, снижают её вес и энергопотребление, уменьшают размер корпуса и сокращают расходы на создание системы. Системотехники и разработчики программного обеспечения должны освоить использование многоядерной технологии не только из-за её преимуществ, но и потому, что многоядерная технология быстро становится основой всё большего числа новых процессорных архитектур. Тем не менее, многоядерность создаёт существенную проблему переноса программного обеспечения, которая обусловлена двумя причинами: во-первых, мало разработчиков в оборонной и авиакосмической промышленности имеет опыт создания многопроцессорных систем, а, во-вторых, подавляющее большинство кода существующих оборонных и авиакосмических систем предназначено для однопроцессорных, а не многопроцессорных, сред. Разработчики должны перейти от модели последовательного исполнения, в которой задачи по очереди выполняются на единственном процессоре, к модели параллельного исполнения, в которой задачи выполняются одновременно. Чем более высокого уровня параллелизма достигают разработчики, тем выше производительность многоядерной системы. Первое и самое важное решение, которое разработчики должны принять при переходе к многоядерной технологии — это выбор типа параллельной обработки в соответствии с требованиями приложения. Этот выбор определяет, насколько легко будет обеспечить максимальный уровень параллельной работы нового и существующего кода. Как показано в табл. 1, существует три основных типа многопроцессорной обработки: асимметричная многопроцессорность (asymmetric multiprocessing — AMP), симметричная многопроцессорность (symmetric multiprocessing — SMP) и исключительная многопроцессорность (bound multiprocessing — BMP).
Табл. 1 Дружественная среда Среда исполнения систем с асимметричной многопроцессорностью похожа на среду исполнения традиционных однопроцессорных систем. По этой причине переносить существующий код в AMP-системы относительно просто. Кроме того, асимметричная многопроцессорность позволяет разработчикам непосредственно контролировать использование каждого ядра центрального процессора и, как правило, даёт возможность применять стандартные инструменты и методы отладки. Асимметричная многопроцессорность может быть однородной и неоднородной; в однородных AMP-системах на всех ядрах работают операционные системы одного типа и версии, а в неоднородных AMP-системах операционные системы различаются по типу или версии. В однородной среде разработчики могут максимально эффективно использовать множественные ядра, выбрав операционную систему (например, ОСРВ QNX Neutrino), которая поддерживает модель распределённого программирования. При надлежащей реализации этой модели приложения, которые выполняются на одном ядре, могут прозрачно взаимодействовать с приложениями и службами (к примеру, драйверами устройств, стеками протоколов и т. д.), работающими на других ядрах, без интенсивного использования процессора, которое характерно для традиционных методов межпроцессорного взаимодействия. Неоднородная среда предъявляет несколько иные требования. Разработчики должны либо реализовать собственную схему взаимодействия процессоров, либо выбрать две операционные системы, которые используют одни и те же протоколы межпроцессорного взаимодействия (как правило, на основе стека IP). Для разрешения конфликтов при использовании ресурсов обе операционные системы также должны обеспечивать стандартизованные механизмы доступа к общим аппаратным компонентам. Несмотря на то, что асимметричная многопроцессорность полезна для многих, особенно действующих, приложений, в AMP-системах возможно неполное использование процессорных ядер. Например, если одно ядро предельно загружено, то приложения, которые выполняются на нём, как правило, не могут перейти на более свободные ядра. Несмотря на то, что такой динамический перенос приложений возможен, он обычно включает в себя сложную операцию сохранения состояния приложения и может приводить к прерыванию обслуживания при остановке приложения на одном ядре и его перезапуске на другом ядре. Если ядра управляются разными операционными системами, то перенос приложений становится ещё более сложным или вовсе невозможным. При асимметричной многопроцессорности ни одна операционная система не управляет всей системой. По этой причине решение сложной задачи управления общими аппаратными ресурсами, в том числе физической памятью и периферийными устройствами, а также обработки прерываний, возлагается на разработчика приложений, а не на операционную систему. Конкуренция за ресурсы может иметь место при инициализации системы, в процессе обычной работы, во время прерываний, а также при совершении ошибок. Разработчик приложений должен учитывать все перечисленные ситуации при проектировании системы. Эта задача значительно усложняется при добавлении в систему новых ядер, что делает асимметричную многопроцессорность непригодной для процессоров, которые включают в себя более двух ядер. Прозрачное управление ресурсами Выделение ресурсов в многоядерной архитектуре может быть сложным, особенно если многочисленные программные компоненты не располагают информацией о том, как ресурсы используются другими компонентами системы. В симметричной многопроцессорности эта проблема решается использованием единственной копии операционной системы на всех ядрах кристалла. Поскольку операционная система непрерывно наблюдает за всеми системными элементами, она может:
Дополнительным преимуществом симметричной многопроцессорности является возможность сбора статистики работы всего многоядерного кристалла с помощью инструментов системной трассировки, благодаря которой разработчики получают важную информацию для оптимизации и отладки приложений. Разработчики могут следить за перемещением потоков между ядрами, использованием примитивов операционной системы, планированием событий и передачей сообщений между ядрами, а также получать другую информацию для обеспечения максимальной загрузки каждого ядра. В AMP-системах разработчикам необходимо собирать такую информацию с каждого ядра в отдельности, а затем каким-либо образом объединять её для анализа. На рис. 1 показано использование инструмента системной трассировки, системного профайлера комплекта разработчика QNX Momentics, для анализа четырёхъядерной SMP-системы. Рис. 1. На рис. 2 гидроакустический комплекс работает в режиме симметричной многопроцессорности, позволяя выполнять любой поток любого процесса (сбора данных, обработки сигналов, слежения за целью и др.) на любом ядре. К примеру, поток слежения за целью может работать на одном ядре, в то время как поток обработки сигналов выполняет интенсивные вычисления на другом ядре. В такой системе необходимо высокоскоростное взаимодействие между потоками, для реализации которого разработчики могут воспользоваться примитивами локальной операционной системы или синхронизованными защищёнными структурами общедоступной памяти. Рис. 2. Несмотря на многочисленные преимущества, симметричная многопроцессорность не является панацеей от всех проблем. В частности, существующие приложения с недостаточно развитой синхронизацией потоков могут некорректно работать в SMP-среде с полностью параллельной обработкой. Это не обязательно приводит к проблемам в работе программ внутренней разработки, но может создать сложности в системах, которые должны поддерживать программное обеспечение многочисленных сторонних поставщиков. Сочетание преимуществ Асимметричная многопроцессорность даёт разработчикам больший контроль над ядрами и обеспечивает совместимость системы с существующим кодом, а симметричная многопроцессорность обладает большей масштабируемостью и более простым управлением ресурсами. Третий подход, исключительная многопроцессорность, сочетает преимущества первых двух. В BMP-системах, как и в системах с симметричной многопроцессорностью, единственная копия операционной системы наблюдает за всем системными ресурсами. Это означает, что BMP-системы обладают всеми преимуществами симметричной многопроцессорности. Тем не менее, исключительная многопроцессорность расширяет возможности симметричной многопроцессорности, позволяя разработчикам привязывать любые приложения к конкретным ядрам. Это создаёт несколько преимуществ:
Как и в исключительной многопроцессорности, операционная система наблюдает за действиями каждого ядра, что делает информацию о производительности всей BMP-системы доступной инструментам системной трассировки. С помощью этой информации разработчики могут локализовать возможные проблемы параллельной обработки на уровне приложений и потоков. Устранение этих проблем способно обеспечить полностью параллельную работу даже существующих программ, благодаря чему преимущества производительности многоядерных процессоров используются в полной мере. На рис. 3 подсистема управления беспилотным летательным аппаратом работает в BMP-режиме на двуядерном процессоре, где вычисления, связанные с аэронавигацией и расчётом курса привязаны к одному ядру, а системное управление — к другому ядру. Поток сбора дистанционных измерений, который имеет менее жёсткие требования к обработке, может динамически перемещаться на ядро с максимальным количеством свободного процессорного времени. Рис. 3. Выбор операционной системы Операционная система играет ключевую роль в использовании аппаратного параллелизма многоядерных процессоров. К сожалению, существующие операционные системы реального времени, которые применяются в большинстве оборонных и аэрокосмических приложений, не обеспечивают полную поддержку нескольких процессоров, работающих на единой компьютерной платформе, плате или кристалле. Как правило, ядра этих операционных систем способны одновременно управлять только одним процессором или процессорным ядром. Системы с независимыми узлами допускают такое ограничение, но лишаются архитектурной гибкости и не позволяют разработчикам использовать важные преимущества симметричной и исключительной многопроцессорности. Таким образом, важно, чтобы операционная система реального времени, которая выбрана для многоядерной архитектуры, могла одновременно управлять несколькими ядрами и обеспечивала надёжную поддержку всех моделей многопроцессорной обработки, давая разработчикам возможность выбрать оптимальный тип многопроцессорности для решения поставленной задачи. Как показывает табл. 2, гибкость в выборе моделей многопроцессорности позволяет разработчикам достичь наилучшего сочетания производительности, масштабируемости и простоты переноса приложений.
Табл. 2 Роберт Крейг (Robert Craig) – старший инженер-программист группы разработки ядер операционной системы компании QNX Software Systems. Роберт Крейг обладает более чем 12-летним опытом разработки встраиваемых систем. Он активно работал в качестве архитектора программного обеспечения и руководителя команды разработчиков в различных телекоммуникационных компаниях. Роберту Крейгу присвоена степень бакалавра компьютерных технологий и физики, а также степень доктора философии по физике со специализацией по оптическим компьютерным технологиям. Поль Леру (Paul Leroux) – технический аналитик компании QNX Software Systems. К сфере его деятельности относятся разработка систем высокой готовности, многопроцессорные системы и архитектура ядер операционных систем. |
|
http://www.thg.ru/game/200507101/index.html
Двуядерные процессоры и будущие игры: новая эпоха? |
Введение Будут ли игры, использующие мощь двуядерных процессоров, так хороши? Объявления двуядерных процессоров Intel и AMD могут знаменовать новую эру в компьютерах, но пока эти архитектуры не слишком сильно повлияли на качество игр. Как показало наше тестирование Pentium D 840, двуядерные процессоры в играх работают с такой же скоростью, что и одноядерные Pentium Extreme Edition с равной тактовой частотой. А Pentium Extreme Edition с более высокой тактовой частотой работает быстрее, чем двуядерный Pentium D. В то же время, не будем забывать, что Windows XP уже использует преимущество двуядерных дизайнов AMD и Intel, распределяя программные потоки между ними. То есть, в дополнение к многочисленным фоновым программам, вы можете, в отличие от одноядерной платформы, запустить больше ресурсоёмких приложений, не особо опасаясь замедления ПК. К примеру, вы можете отстреливать монстров в Doom III, параллельно скачивая видеофайл, почту Outlook Express, сохраняя открытыми с десяток web-страниц и документов Word. Вместе с тем, двуядерные процессоры, подобно 64-битным вычислениям, страдают из-за отсутствия приложений, которые бы в полной мере использовали их силу. Но, по утверждению AMD и Intel, производителей графических процессоров и игровых разработчиков, уже через несколько месяцев мы должны увидеть, как 3D-игры поднимутся на новый уровень по искусственному интеллекту и производительности. |