Классификация современных приложений и многоядерных систем
Сферы применения многоядерных процессоров
Широкое внедрение многоядерных технологий позволяет по-новому взглянуть на вычислительные возможности компьютеров и порождает всплеск творческой активности по созданию инновационных решений. Разработчики клиентских приложений могут исследовать новые способы применения многозадачности, которые в прошлом не имели практического значения или были сложны в реализации. Например, важные системные задачи теперь могут выполняться постоянно — непрерывный и упреждающий поиск вирусов, автоматическое резервное копирование, гарантирующее сохранение всех рабочих файлов, интеллектуальная система мониторинга потоков работ, способная прогнозировать потребности пользователя и выдавать информацию в реальном времени по запросу. С ростом распространения многоядерных клиентских ПК список полезных приложений, которые могут непрерывно выполняться в фоновом режиме, будет постоянно расти.
Можно выделить несколько классов приложений, которые требуют значительных вычислительных ресурсов и могут быть соотнесены с термином " HPC -приложения" [5].
Приложения, обрабатывающие большие файлы данных:
- 2D/3D САПР;
- системы моделирования, средства работы с анимацией;
- средства обработки цифровых изображений;
- электронные издательские системы;
- средства видеомонтажа/рендеринга;
- компьютерные игры (на клиентских компьютерах и серверах);
- средства поиска/индексирования;
- системы потокового мультимедиа;
- средства защиты и криптографии.
Приложения, нуждающиеся в увеличенном адресном пространстве ОЗУ:
- финансовое моделирование;
- научные и технические расчеты;
- исполняющиеся на сервере приложения, обслуживающие множество пользователей настольных машин, или тонких клиентов.
Приложения, работающие с большими массами транзакций/пользователей:
- СУБД;
- веб-серверы;
- серверы электронной почты.
Если рассмотреть данные классы приложений с точки зрения возможностей распараллеливания или организации многопоточного режима ( таблица 2.1), можно получить пространство HPC-приложений ( рис. 2.1) [6].
Было показано, что многоядерные процессоры позволяют существенно снизить потребление энергии при сохранении производительности. Это, в свою очередь, открывает новые области применения:
- СУБД;
- веб-серверы;
- серверы электронной почты.
Было показано, что многоядерные процессоры позволяют существенно снизить потребление энергии при сохранении производительности. Это, в свою очередь, открывает новые области применения:
- компактные высокопроизводительные устройства с низким тепловым излучением;
- серверные помещения, позволяющие снизить расход электроэнергии и требования к кондиционированию воздуха;
- решения для мобильных ПК с увеличенным временем автономной работы батарей;
- решения для дома и офиса, реализация которых раньше была физически невозможна при использовании процессоров предыдущих поколений.
Обеспечение энергосберегающей производительности, основа которой — переход на многоядерные вычисления, принесет выгоды практически для всех платформ.
По мере появления дополнительных вычислительных возможностей перед разработчиками откроются перспективы, лежащие далеко за пределами простого повышения быстродействия приложений. Голосовое управление, IP-телефония и видеотелефония, новые электронные секретари, доступ к информации в реальном времени, расширенные возможности управления через IP, многоуровневые функции поиска и извлечения данных, — вот лишь несколько примеров преимуществ, которые могут получить пользователи мощных вычислительных систем с быстрым реагированием. Эта программная экосистема готова к внедрению дополнительных инновационных моделей использования, охватывающих совершенно новые области.
Основные классы многоядерных процессоров (many-core, multi-core, MIMD, SIMD, SMP, MMP)
Как известно, наиболее распространенным подходом является распараллеливание "потока команд" и/или "потока данных". Распараллеливание данных — это применение одной операции сразу к нескольким элементам массива данных. Параллелизм задач предусматривает разбиение вычислительного процесса на несколько самостоятельных подзадач (процессов, потоков), каждая из которых выполняется на своем ядре (процессоре). Многоядерные системы (в соответствии с классификацией Флинна) можно отнести к так называемым системам класса MIMD (Multiple Instruction — Multiple Data), в которых несколько программных ветвей выполняются одновременно и независимо друг от друга, но в определенные моменты времени обмениваются данными
В основном представленные на сегодняшний день процессоры имеют MIMD-архитектуру, но есть также группа процессоров, построенных как SIMD -системы, — это так называемые потоковые или графические процессоры.
Среди многоядерных процессоров к данному моменту можно выделить процессоры, предназначенные в основном для встраиваемых и мобильных приложений, в которых большое внимание разработчиков было уделено средствам и методам снижения энергопотребления, процессоры для вычислительных или графических станций, где вопросы энергопотребления не столь критичны, процессоры и т. н. мейнстрима широкого назначения — нацеленные на использование в серверных, рабочих станциях и персональных компьютерах.
Также можно классифицировать многоядерные процессоры по архитектуре или структуре их ядер.
Структура ядер важна с точки зрения программирования на нижнем уровне, в проектировании и оптимизации приложений, определяет возможности процессора в плане вычислений. Большинство многоядерных процессоров имеют в своей основе RISC-ядра; конечно, есть центральная группа мощных процесссров с CISC-ядрами, встречаются и MISC-ядра.
Возможна классификация и по энергопотреблению. Перед разработчиками многоядерных процессоров, как правило, помимо задач повышения производительности и эффективности процессора стоят задачи уменьшения рассеиваемой мощности при малой загрузке процессора либо во время его простоя или ожидания результатов вычислений от ядер процессора. В этой классификации удобно выделить классы просто по абсолютному уровню потребляемой мощности и классы по способам управления энергопотреблением.
Также необходимо предусмотреть доступ к разделяемой памяти и эффективные коммуникации между ядрами.
Наличие внутрикристальной памяти и ее организация влияют на парадигму программирования, частоту обращений к внешней памяти, а также определяют способы синхронизации программ и данных.
Одной из проблем, стоящих перед разработчиками приложений для многоядерных процессоров, — распределение или передача данных между ядрами. Среда передачи данных должна обладать широкой полосой пропускания, малыми временами задержки соединения и распространения данных. Пропускная способность среды передачи, ее топология повлияют на производительность процессора на многопоточных приложениях, будут определять накладные расходы процессорного времени, задержки распространения данных.
Внешние интерфейсы определяют возможности взаимодействия процессора с памятью, внешними устройствами, и возможности наращивания количества процессоров.
При рассмотрении многоядерных процессоров в основном пользуются классификацией Флинна, принятой для параллельных систем, с той лишь разницей, что в качестве узлов или машин выступают вычислительные ядра, находящиеся на одном кристалле или в одном корпусе.
Стоит выделить также мультиядерные процессоры — в этом случае предполагается, что ядра являются высокопроизводительными и их относительно немного; и многоядерные процессоры — на кристалле располагается большое (от нескольких десятков до нескольких сотен) количество вычислительных ядер, имеющих более простую структуру, объединенных некоторой сетевой инфраструктурой.
Краткие итоги
Можно выделить примерно пять типов приложений, в зависимости от их требований к вычислительной системе: обработка больших массивов данных; высокопроизводительные вычисления, в том числе в реальном времени; серверы приложений; веб-сервисы; вычислительные задачи.
Одно из явных преимуществ при переходе на многоядерные процессоры — снижение энергопотребления, что в итоге сказывается на стоимости владения вычислительной системой.
Основой при классификации многоядерных процессоров остается классификация Флинна для параллельных вычислительных систем.
Контрольные вопросы
- Каковы основные классы современных приложений?
- Каковы основные признаки, применяющиеся при классификации многоядерных процессоров?
Упражнения
- Оцените параметры прикладного программного обеспечения, наиболее часто вами используемого.