В статье рассматриваются принципы распределения вычислительной нагрузки в многопроцессорных системах на примере использования архитектур Cypress PSoC 3 и PSoC 5, в которые входят центральные процессоры с архитектурой 8051 и ARM Cortex M3, блоки ПДП и массив универсальных цифровых блоков UDB (Universal Digital Blocks).
В настоящее время SMP (симметричные мультипроцессорные системы) стали привычными в мире ПК. В среде встраиваемых компьютерных систем такого распространения SMP не наблюдается. В то же время некоторые новые разновидности встраиваемых архитектур существенно расширяют возможности разработчиков в распределении вычислительной нагрузки.
Рассмотрим принципы построения такой распределенной системы на примере использования архитектур Cypress PSoC 3 и PSoC 5, в которые входят центральные процессоры с архитектурой 8051 и ARM Cortex M3, блоки ПДП и массив универсальных цифровых блоков UDB (Universal Digital Blocks).
UDB представляют собой массив минипроцессоров. За счёт распределения вычислительных функций в пределах такой системы инженер может существенно повысить ее эффективность. Такое рассредоточение вычислительной нагрузки обеспечивает множество преимуществ, главным из которых является снижение энергопотребления в активном режиме. При снижении нагрузки на ЦП при обработке длительных, хотя и несложных с точки зрения математики расчётов, например, обработки прерываний, можно существенно снизить тактовую частоту, т.к. процессор при этом уже не должен «жечь» драгоценные процессорные такты на выполнение несложной, но утомительной работы в дополнение к отработке основного приложения.
Снижение энергопотребления достигается двумя путями. Первый очевиден — понижение тактовой частоты линейно снижает потребление в активном режиме, что характерно для КМОП-логики.
Второй путь, возможно, почти столь же значимый, состоит в том, что в состав ЦП входит почти в 10 раз больше логических элементов (ЛЭ), чем в UDB, поэтому при переносе нагрузки из ЦП в UDB во столько же раз снижается и количество переключающихся ЛЭ, что, естественно, уменьшает потребление энергии для выполнения задачи.
Помимо снижения потребляемой мощности ещё одно существенное преимущество заключается в том, что ЦП освобождается для выполнения более важных задач. Теперь он может сконцентрировать всю свою вычислительную мощь на тех функциях, которые выполняет наиболее эффективно, например, на участках алгоритма, требующих множества операций умножения и деления.
Структура программируемых систем на кристалле PSoC 3/5
PSoC3 и PSoC 5 имеют одинаковую структуру, что означает, что в них используется по большому счёту одинаковая аппаратная часть. Каждое семейство базируется на 4 основных функциональных блоках:
Подсистема ЦП
Содержит основной ЦП (с архитектурой 8051 или Cortex M3), а также соответствующие узлы поддержки: контроллер прерываний, аппаратуру отладки и контроллер ПДП. Кроме того, здесь же сконцентрированы и остальные системные узлы — формирователи тактовых сигналов, управление энергопотреблением и системная память. ЦП вместе с контроллером ПДП являются ключевыми компонентами распределённой вычислительной системы.
Цифровая подсистема
Ещё одним ключевым элементом является цифровая подсистема, которая, собственно, и обеспечивает распределённую цифровую обработку. Фактически эта подсистема представляет собой массив программируемых цифровых блоков UDB.
Как показано на рисунке 1, каждый UDB содержит узел обработки сигнала, представляющий собой 8-разрядный микроконтроллер, способный выполнять типовые процессорные функции типа сдвига, сложения и сравнения. Помимо этого, UDB содержит программируемую логическую схему, которая может использоваться для реализации пользовательских логических функций и даже функциональных таблиц, используемых собственно процессорным элементом.
| Рис. 1. Блок-схема UDB, включающая ПЛМ и 8-разрядный процессор |
![]() |
В таком UDB можно реализовать не только множество типовых периферийных узлов наподобие ШИМ-формирователей, таймеров, контроллеров SPI, но и нестандартные, задаваемые пользователем функции. Такая гибкость позволяет легко реализовывать распределённые встраиваемые системы именно на базе PSoC.
В массив UDB входит до 24 однотипных узлов, а также настраиваемая матрица коммутации сигналов (см. рис. 2), что позволяет реализовывать даже сложные и ресурсоёмкие пользовательские функции.
| Рис. 2. Структура цифровой подсистемы, включающей до 24 блоков UDB и коммутационную матрицу |
![]() |
Аналоговая подсистема
Помимо уже перечисленного, в состав PSoC 3 и PSoC 5 входит высокопроизводительная и настраиваемая аналоговая подсистема, позволяющая реализовать полноценную систему обработки аналогового сигнала, включающую 20-разрядный АЦП, блок цифровой фильтрации для кондиционирования преобразованного сигнала и блок цифро-аналогового преобразования.
В контексте обсуждаемой распределённой обработки аналоговая подсистема может выполнять задачи предварительной обработки аналогового сигнала и преобразования его в цифровую форму перед отсылкой в ЦП для дальнейшей обработки.
Программируемая матрица связей
Показанная на периферии блок-схемы системы программируемая матрица связей содержит узлы, необходимые для обеспечения связи блоков ввода/вывода, аналоговой и цифровой подсистем и ЦП между собой. Этот функциональный блок обеспечивает пользователю возможность задания пути, по которому будет проходить сигнал в процессе обработки, что и позволяет реализовать распределение задач среди множества подсистем.
Пример реализации распределённой встраиваемой системы
Одним из наиболее распространённых устройств, которые помогут наглядно продемонстрировать преимущества данной архитектуры, являются системы управления бесколлекторных электродвигателей с датчиками.
Традиционные методы управления основываются на том, что в процессе работы двигателя логические уровни на выходе трёх датчиков Холла периодически меняются. В типовой микроконтроллерной системе управления при каждом изменении состояния датчика возбуждается прерывание. При обработке прерывания ЦП вычисляет, какая обмотка двигателя должна быть задействована, и подключает её к выходу ШИМ-контроллера. Такой подход требует большой работы по обработке прерываний, вынуждая ЦП тратить на неё драгоценное процессорное время вместо того, чтобы решать другие задачи, которые могут требоваться для нормальной работы системы.
Кроме того, чем быстрее вращается мотор, тем чаще прерывается работа ЦП. Мало того, добавление к системе дополнительных двигателей представляет серьёзную проблему, т.к. очень сложно синхронизировать работу двух (или более) двигателей, чтобы их датчики Холла не срабатывали бы непрерывно, вызывая последовательный — и независимый — поток прерываний с одним и тем же уровнем приоритета.
Напрашивается мысль, что должен быть какой-то другой способ решить данную проблему. Конечно, такой способ есть, и состоит он в использовании предлагаемой Cypress архитектуры PSoC 3 или 5. Эти системы представляют собой прекрасный пример того, как распределение нагрузки на целый массив микроконтроллеров «разгружает» ЦП от рутинной работы по отслеживанию множества прерываний. Простая реализация конечного автомата в программируемой матрице UDB позволяет избавиться от необходимости использования прерываний работы ЦП.
Вместо направления сигналов датчиков Холла на входы запроса прерывания мы используем их в качестве входных сигналов таблицы состояния, выходы которой определяют, какая обмотка двигателя должна быть подключена при данной комбинации сигналов датчиков, и коммутируют на неё сигнал ШИМ. При такой реализации прерывания возбуждаются только тогда, когда меняется скорость вращения.
Если мы запрограммируем таблицу состояний и используем процессорный элемент UDB в операциях сравнения, то тогда вообще не нужно будет задействовать ЦП в процедурах обработки прерываний от датчиков.
Ещё одним примером приложения, в котором использование распределённой обработки упрощает жизнь инженерам, является использование каналов ПДП в устройствах с массированным обменом данными, например, преобразование интерфейса I2S в USB (запись звука) и обратно (воспроизведение звука). За счёт реализации интерфейса I2S в блоке UDB и использования контроллера ПДП для пересылки данных между периферийными блоками (с использованием встроенного ОЗУ в качестве промежуточного буфера) можно свести к абсолютному минимуму количество тактов ЦП, используемых в процессе передачи данных. Такое использование ПДП крайне эффективно, когда один из коммуникационных протоколов использует пакетную передачу данных (как USB), а второй — синхронную с постоянной скоростью потока (как I2S).



