Подписка на новости

Опрос

Нужны ли комментарии к статьям? Комментировали бы вы?

Реклама

 

2010 №1

Многоядерные вычисления во встраиваемых системах

Глубоков Алексей  
Кальман Роберт (Robert Kalman)  

В 1965 г. был провозглашен закон Мура, согласно которому производительность интегральных схем будет удваиваться каждые 18 месяцев. Из-за многочисленных препятствий на этом пути прогресс оказался не столь гладким, но инженерная смекалка всегда подсказывала решение, обеспечивавшее дальнейший рост производительности. Изменения в технологическом процессе литографии, внедрение новых подзатворных диэлектриков и использование медных соединителей — вот всего несколько примеров производственно-технологического характера, обеспечивших долговечность закона Мура. Однако давно было признано, что у технологии производства есть свой предел возможностей.

В мире суперкомпьютеров, где стоит задача добиться максимально возможного быстродействия, параллельные вычисления — как в смысле параллельного выполнения команд, так и в смысле реализации множества параллельных алгоритмов на множестве процессоров — рассматриваются как единственный способ достижения необходимой производительности.

Что такое многоядерные вычисления?

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

В широком смысле многоядерные архитектуры можно разделить на два сегмента: с симметричной многозадачной обработкой (Symmetric MultiProcessing, SMP) и с асимметричной многозадачной обработкой (Asymmetric MultiProcessing, AMP).

Системы с симметричной многозадачной обработкой (SMP-системы), пожалуй, наиболее просты для понимания, и именно их чаще всего представляют себе пользователи, когда речь заходит о многоядерности. Для симметричной многозадачной обработки характерно наличие одной «всемогущей» операционной системы, которая «знает» аппаратную структуру вычислительной системы и использует алгоритмы динамического балансирования нагрузки для назначения конкретных задач или функций вычислительным ядрам исходя из загрузки последних в конкретный момент времени. Огромное преимущество этого варианта в том, что он дает пользователям возможность взять существующее программное обеспечение, написанное для одноядерной системы, и получить непосредственный рост производительности.

Иначе дело обстоит в системах с асимметричной многозадачной обработкой (AMP-сис-темах). На каждом ядре работает своя, независимая операционная система (ОС) — необязательно та же самая, что и на других ядрах. На самом деле, необязательно даже, чтобы на каждом ядре работала какая-то операционная система. По сути, ядра не осведомлены друг о друге. Такая система, однако, требует более существенных изменений в прикладном программном обеспечении, чем SMP-система. В ней отсутствует операционная система, управляющая балансированием нагрузки между ядрами для пользователя.

Применение многоядерных вычислений

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

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

Однако на рынке встраиваемых систем сегодня очень мало ниш, в которых на практике используются двухъядерные или многоядерные устройства. Скоро эта ситуация изменится.

Преимущества и технические трудности

Наиболее очевидным преимуществом двух- или многоядерной системы является рост производительности. Казалось бы, в двухъядерной системе пользователь должен получить вдвое большую производительность при той же тактовой частоте. Это не всегда так и зависит от выбора AMP-или SMP-системы, но некоторый прирост производительности наблюдается.

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

Есть одна проблема, которая не может быть легко преодолена путем использования системы с многозадачной обработкой (симметричной или асимметричной), — это проблема соревнования за ресурсы. Проектировщики программного обеспечения, разработчики компиляторов и системные архитекторы должны знать о связанных с этим потенциальных трудностях. Если ядро A ожидает освобождения периферийного Ethernet-устройства, чтобы передать сообщение по шине Ethernet и обновить некоторое значение в ОЗУ, а ядро B ждет, пока это же значение обновится, чтобы затем освободить данное периферийное устройство, возникает взаимная блокировка. В SMP-системах эту проблему решить гораздо труднее, чем в AMP-системах, но в обоих случаях последствия для прикладной программы будут катастрофическими.

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

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

Недетерминистическое поведение — пожалуй, самая значительная проблема в сфере встраиваемых систем. В SMP-системе трудно рассчитать максимально возможную задержку отклика, поскольку алгоритм балансирования нагрузки чрезвычайно сложен, а вероятность перехода системы в непредвиденное состояние относительно высока. Во встраиваемых системах, обязательными требованиями к которым являются отклик в реальном времени и предсказуемые временные характеристики, пренебречь этим никак нельзя.

Еще одно следствие того обстоятельства, что такая система может перейти в несколько различных состояний, — это трудность обеспечения отказоустойчивости и воспроизведения сбоев. Пускай устройство с четырьмя ядрами имеет сбой в одном из ядер, заключающийся в неверном результате вычислений при запуске приложения A непосредственно после приложения F. Трудность локализации и воспроизведения сбоя возрастает экспоненциально с ростом параллелизма.

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

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

В AMP-системе каждая задача или приложение выполняются на своем ядре. Это может весьма ограничить прирост производительности в случае ненадлежащего распределения задач между ядрами. После настройки системы динамическое назначение задач не производится, поэтому единственно возможным способом переназначения задач является полное перепрограммирование устройства. AMP-подход требует тщательного учета временных смещений между выполнением тех или иных задач и приложений на каждом ядре.

С другой стороны, частично облегчается бремя, налагаемое на систему в рамках SMP-подхода. AMP-система достаточно хорошо масштабируется до тех пор, пока выполняемые задачи поддаются разбиению на самостоятельные подзадачи. Она также в большей степени детерминирована, а воспроизведение сбоев в ней существенно облегчено. Это помогает при отладке.

Перспективы внедрения

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

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

Например, перед пуском электродвигателя можно проверить решение микроконтроллера на его пуск, чтобы удостовериться в правильности работы программного обеспечения. Кроме того, второе ядро может использоваться для проверки других параметров в реальном времени. Например, можно проверять программный стек в ОЗУ на предмет переполнения. Если второе ядро знает максимально допустимый размер стека, оно может проверять его, не прерывая работу основной программы. Если стек будет явно близок к переполнению, система примет соответствующие меры, но в большинстве случаев такой ситуации не возникнет, и выполнение будет продолжаться в обычном порядке.

Будущее принесет нам сюрпризы — в этом можно быть точно уверенным! — и второе ядро поможет справиться с этими сюрпризами. Второе ядро можно использовать во встраиваемых системах для «эмуляции периферии» или «расширения периферии». Один из примеров — обработка данных с АЦП: второе ядро считывает данные с АЦП, вычисляет среднее значение и сохраняет результат вычисления в области оперативной памяти, доступной для главного процессора. За счет этого расширяется функциональность АЦП и повышается удобство пользования решением. Можно также программным способом создавать «с нуля» новые периферийные устройства. При таком подходе решение со вторым ядром будет обладать достаточным запасом гибкости для адаптации к будущим требованиям, не ухудшая уже детерминированные характеристики основного контроллера.

В сфере управления производственными процессами многие приложения работают в реальном времени и при этом имеют графический интерфейс пользователя. Очевидно, что есть прямой смысл реализовывать такие системы в рамках AMP-подхода, когда на одном ядре работает специализированная ОС реального времени для управления производственным процессом или, например, электродвигателем, а на втором — более «дружественная к графическим интерфейсам» ОС, такая как uCLinux. Интерес к этой области быстро растет, и можно быть уверенным, что в не столь отдаленном времени такие системы станут обычными на рынке.

Новейшее двухъядерное решение

Новейшим пополнением в семействе микроконтроллеров SuperH компании Renesas стал микроконтроллер SH7205. Он имеет два суперскалярных ядра SH2A, каждое из которых оборудовано встроенным модулем обработки операций с плавающей запятой. Каждое ядро работает на тактовой частоте до 200 МГц с производительностью 480 DMIPS, обеспечивая теоретическую производительность почти в 1000 DMIPS.

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

Устройство оборудовано контроллером USB 2.0 (host и function), многочисленными стандартными каналами связи и простой двумерной графической подсистемой с цифровым видеовыходом. Это делает его пригодным для работы со звуком и визуализации. Кроме того, устройство оснащено таймерами управления электродвигателями и АЦП, что позволяет применять его в инверторах. Сочетание этих двух наборов периферийных устройств в одном микроконтроллере дает возможность применять его в упомянутых выше системах управления производственным процессом, работающих в реальном времени и имеющих графический интерфейс пользователя.

Заключение

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

XX века. Использование двухъядерных процессоров сопряжено со значительными техническими трудностями и проблемами, но при этом несет и существенные преимущества.

В настоящее время на рынке существует две основные программные парадигмы: асимметричная многозадачная обработка (AMP) и симметричная многозадачная обработка (SMP). В парадигме SMP бремя распределения задач возлагается на операционную систему, а в парадигме AMP таким распределением занимается инженер-программист на ранних стадиях проекта.

SH7205 — новейший микроконтроллер семейства SuperH компании Renesas с двумя ядрами SH2A, представляющий собой новое решение старой проблемы повышения производительности встраиваемой системы.

Литература

1. http://www.intel.com/pressroom/archive/releases/20070128comp.htm

2. http://www.neoseeker.com/Articles/Hardware/Reports/amd_dualcore/index.html

3. http:// arstechnica.com/articles/paedia/cpu/moore.ars/

4. http://www.embedded.com/columns/technicalinsights/173402824?printable=true

5. http://www.embeddedtechmag.com/content/view/111/120/

Скачать статью в формате PDF  Скачать статью Компоненты и технологии PDF

 


Другие статьи по данной теме:

Сообщить об ошибке