Гибридные технологии уже достаточно давно и успешно проникают в различные сферы деятельности человека: автомобили с гибридными двигателями, гибридные велосипеды, гибридные операционные [1] и даже гибридные термоядерные реакторы [2]. Если же ограничиться рассмотрением вычислительной техники, то достаточно быстро становится очевидным, что и в этом направлении научной мысли гибридные концепции имеют порой незаметные, но весьма ощутимые проявления.
Идею функционального разделения исполнительных устройств и интерфейсного сопряжения сейчас можно смело называть классической. С другой стороны, относительно новой является тенденция совмещения в едином модуле либо микросхеме устройств с принципиально отличающейся спецификой. В качестве наиболее ярких примеров имеет смысл отметить:
- гибридные накопители, совмещающие в себе традиционные HDD и кэш-память, выполненную по технологии SSD;
- гибридные ЦП с интегрированным графическим процессором (англ. Graphics Processing Unit, GPU), реализующие гетерогенно-однородный доступ к памяти (от англ. heterogeneous Uniform Memory Access, hUMA [3]);
- гибридные сигнальные процессоры и математические сопроцессоры, а также гибридную по своей сути технологию GPGPU (англ. General-purpose GPU, графические процессоры общего назначения).
Будущие вычислительные архитектуры будут преимущественно гибридными системами, состоящими из параллельных графических ядер, работающих в тандеме с многоядерными процессорами».
Современные модели доступа к памяти, ориентированные на мультипроцессорные архитектуры
Вопрос поддержки гибридных технологий в различных программных системах достаточно тесно связан с рассмотрением механизмов управления ресурсами памяти. В настоящее время известны следующие основные модели доступа к памяти.
Однородный доступ к памяти (англ. Uniform Me-mory Access, UMA). Данный подход подразумевает единообразную и одновременную доступность ресурсов памяти для всех процессорных модулей системы. При этом подразумевается гомогенная природа всего многообразия центральных вычислителей. Основной отличительной особенностью UMA является независимость времени доступа к ресурсу от того, какой конкретно модуль его запрашивает. Указанная модель доступа настолько прочно ассоциируется с симметричным мультипроцессированием (англ. Symmetric Multiprocessing, SMP), что в большинстве случаев говорят об SMP/UMA-системах.
Модель неоднородного доступа к памяти (англ. Non-Uniform Memory Access, NUMA). Здесь определяющим фактором является геометрия системы, которая характеризует различное время доступа к ресурсам памяти для разных вычислителей. Можно легко продемонстрировать данный подход на примере современной гетерогенной системы (рис. 1).
Модель неоднородного доступа к памяти с контролем когерентности кэш-памяти (англ. Cache coherent NUMA, ccNUMA). В отличие от классического подхода данная модель подразумевает дополнительное аппаратное обеспечение, гарантирующее целостность данных (когерентность кэш-памяти).
Гетерогенно-однородный доступ к памяти (hUMA) [3]. Концепция подразумевает адаптацию модели UMA для применения в гибридных системах. Скорость доступа к памяти для различных вычислителей обеспечивается их совмещением на одном кристалле. Необходимо отдельно отметить, что на данный момент рассматриваемая модель реализована лишь в гибридных графических процессорах. Например, GPU производства AMD реализуют технологию за счёт архитектуры HSA (от англ. Heterogeneous System Architecture). Традиционные способы реализации вычислений средствами графических процессоров подразумевают исполнение специального программного обеспечения, именуемого подпрограммами-шейдерами, а также подготовку и копирование исходных данных посредством ЦП. Гетерогенно-однородный доступ к памяти позволяет передавать гибридному контроллеру данные по физическому адресу, избегая избыточного копирования и привлечения для этих целей дополнительного аппаратного обеспечения.
Безусловно, такой фундаментальный аспект, как возможность поддержки гибридных технологий и различных моделей доступа к памяти, важен и для систем реального времени (СРВ). Остановимся на этих системах подробнее.
Гибридные технологии и механизмы доступа к памяти в контексте ОС РВ QNX Neutrino и ЗОСРВ «Нейтрино» КПДА.10964-01
С момента начала официальной поддержки мультипроцессорных архитектур в ядро ОС РВ QNX Neutrino была заложена и поддержка однородного доступа к памяти. Реализация модели UMA получила развитие как для SMP-систем, так и для ASMP (асимметричное мультипроцессирование). Данный механизм был унаследован от предшественника и в защищённой версии ОС РВ (ЗОСРВ «Нейтрино» КПДА.10964-01), которая в настоящий момент широко применяется в отечественной промышленности.
Для модели неоднородного доступа ситуация не столь однозначная. С одной стороны, для функционирования ОС РВ в системе, поддерживающей лишь модель NUMA, принципиальных ограничений нет. Модуль управления памятью – в терминологии QNX Neutrino это часть микроядра ОС РВ, именуемая менеджером памяти, – даже при реализации классической модели UMA будет успешно обслуживать запросы программного обеспечения в подобных системах, но осуществляться это будет заведомо неэффективно. С другой стороны, на прошедшем 17 апреля 2014 г. семинаре «Технологии QNX в России» было анонсировано проведение ООО «СВД Встраиваемые Системы» работ по поддержке отечественных процессоров с архитектурой Эльбрус (производства ЗАО «МЦСТ») в ЗОСРВ «Нейтрино» КПДА. 10964-01. На семинаре были представлены имеющиеся на данном этапе результаты начальной стадии поддержки аппаратного обеспечения, а также заявлены планы по поддержке модели NUMA [4] в рамках задачи оптимального управления памятью.
По своей сути QNX Neutrino обладает в определённом смысле безотносительностью к подавляющему большинству поддерживаемых технологий. Достигается данный эффект за счёт микроядерной архитектуры, позволяющей выносить на прикладной уровень всё функциональное многообразие, в явном виде не требующееся для эффективного функционирования ядра ОС РВ. В терминологии рассматриваемой системы объекты, которые предоставляют программный интерфейс к той или иной функциональности, именуются менеджерами ресурсов (англ. Resource Manager, resmgr) и выполняются в пространстве пользовательских задач.
Можно привести наглядный пример упомянутой особенности данной ОС РВ. На рис. 1 была представлена широко применяемая реализация модели NUMA в гетерогенной вычислительной системе. Поскольку графическая подсистема не является критической в плане функционирования ядра, данный функционал вынесен за рамки микроядра и реализован в виде менеджера графической подсистемы. При этом, невзирая на тот факт, что микроядро управляет памятью согласно модели UMA, графическая подсистема может не менее эффективно адресоваться к ресурсам, время доступа к которым кардинально отличается от ОЗУ (рис. 2).
Редким исключением из принципа безотносительности ядра ОС РВ является, например, заявленная поддержка модели NUMA на уровне менеджера памяти. Очевидно, что в данном случае модификации базовых модулей системы избежать достаточно сложно.
В общем случае поддержка гибридных технологий внесения подобных изменений не требует. Например, для различных гибридных систем на кристалле успешно разрабатываются и внедряются менеджеры ресурсов, обеспечивающие поддержку желаемого аппаратного обеспечения в рамках обозначенной методики. Рассмотрим особенности проектирования менеджера ресурсов на примере гибридного математического сопроцессора системы на кристалле и наглядно убедимся в справедливости заявленной особенности ОС РВ QNX Neutrino.
Проектирование управляемого менеджера ресурсов в рамках концепции безотносительности микроядра
Существенное число систем на кристалле, применяющихся во встраиваемых системах и СРВ, предназначены для решения задач обработки сигналов и имеют в своём составе математические сопроцессоры, которые способны эффективно выполнять ресурсоёмкие вычисления над числами с плавающей точкой и комплексными величинами.
В гибридных системах подобные сопроцессоры не расширяют систему команд основного вычислителя и направлены на выполнение отдельных подпрограмм, загружаемых в их память управляющим программным модулем.
Схематично можно обозначить конфигурацию данного класса систем (рис. 3) следующим образом (в рамках данной статьи для краткости будем именовать гибридный математический сопроцессор ГСП).
Математический сопроцессор в данных системах зачастую проектируется в соответствии с Гарвардской архитектурой, что обуславливает разделение в памяти массива данных и инструкций подпрограмм.
Возникает резонный вопрос: как обеспечивается структурирование программного обеспечения ГСП? Поскольку ресурс памяти у сопроцессора крайне ограничен, задача декомпозиции целиком ложится на плечи программиста.
Подразумевается, что структурированное ПО сопроцессора должно быть разбито на небольшие подпрограммы, которые связаны между собой на уровне аргументов и возвращаемого результата. В случае математического сопроцессора подпрограммой является функция, составленная в соответствии с регламентированным машинным языком, имеющим однозначное представление, соответствующее спецификации. Управляющий программный модуль должен обеспечивать возможность последовательного вызова подпрограмм ГСП, тем самым объединяя разрозненные исполняемые единицы в единое математическое обеспечение в соответствии с классическими представлениями структурного программирования.
Поддержка в ОС РВ QNX Neutrino международного стандарта POSIX и принцип безотносительности микроядра позволяют разработать менеджер ресурсов для гибридного сопроцессора, который предоставлял бы прикладным приложениям следующий функционал.
- Возможность обращаться к ГСП посредством стандартного POSIX-совместимого API: открытие потока данных и команд – вызов open(); чтение и запись данных для обработки – вызовы read()/write() и передача инструкций подпрограмм – вызов devctl().
- Механизм загрузки подпрограмм в память ГСП.
- Обеспечение передачи сопроцессору массивов данных без выгрузки подпрограммы.
- Запуск подпрограммы на исполнение в автономном режиме и ожидание её завершения без привлечения вычислительных ресурсов центрального вычислителя.
- Получение результатов работы сопроцессора и уведомление прикладного приложения о поступлении данных для считывания.
При выполнении перечисленных условий справедливо утверждение о том, что гибридный сопроцессор рассматриваемого типа можно схематично представить в виде следующего простейшего математического отображения (рис. 4):
Z=f(X,Y),
где X – последовательность инструкций подпрограммы, Y – поток входных данных для обработки и Z – массив выходных данных, доступный прикладному ПО и являющийся вероятной основой для дальнейших вычислений. Необходимо отдельно отметить, что оператор f характеризуется исключительно функциональными возможностями ГСП.
Очевидно, имеет смысл предусмотреть возможность пошагового исполнения одиночных команд, что в перспективе позволит прикладному математическому обеспечению отслеживать состояние сопроцессора во время исполнения инструкций, а также существенно расширит возможности отладки подпрограмм.
С учётом всего перечисленного набора требований к функциональности менеджера ресурсов структуру математического обеспечения гибридной системы на кристалле можно представить в следующем виде (рис. 5).
Можно убедиться, что менеджер ресурсов полностью освобождает прикладное программное обеспечение от необходимости непосредственного управления гибридным сопроцессором, предоставляет возможность абстрагироваться от языка низкоуровневых инструкций и при этом совершенно не ограничивает структурную сложность исходного математического алгоритма, который должен быть обеспечен аппаратной поддержкой со стороны ГСП.
Рассмотренные идеи являются концептуальной основой функционирования ОС РВ QNX Neutrino и ЗОСРВ «Нейтрино» КПДА.10964-01, что можно смело назвать одной из причин существенного числа внедрений этих систем в отечественной промышленности и неослабевающего интереса со стороны профессионального сообщества. Необходимо также отметить, что технология управления аппаратным обеспечением посредством непривилегированных программных модулей (внешних по отношению к микроядру ОС РВ) не исчерпывается математическими сопроцессорами, что, в свою очередь, подтверждается, например, в рамках активно развивающегося проекта по поддержке 3D-графики в QNX Neutrino, известного как QNX Mesa 3D [5].
Таким образом, становится очевидным, что технология менеджеров ресурсов действительно позволяет ядру ОС РВ оставаться безотносительным к функциональному наполнению разрабатываемой системы. В то же время она позволяет прикладному ПО оставаться независимым от конструктивных особенностей и механизмов управления конкретным аппаратным обеспечением, оперируя при этом исключительно исходными алгоритмически обусловленными категориями. ●
Литература
- Гибридная операционная на базе технологий Philips [Электронный ресурс] // Официальный сайт компании Philips. – Режим доступа: http://www.healthcare.philips.com/ru_ru/products/interventional_xray/product/systems/hybrid_operatin....
- Азизов Э.А., Алексеев П.Н., Кутеев Б.В. Коррекция дорожной карты Российской термоядерной стратегии // XLI Международная (Звенигородская) конференция по физике плазмы и УТС. – Звенигород, 10–14 февраля 2014 г.
- Hanjin Chu. AMD heterogeneous Uniform Memory Access // APU 13th developer summit. – San Jose, 11–13 November, 2013.
- Гилязов С.С., Кравцунов Е.М., Пантелеев П.В. Оптимизация ядра ОС LINUX для архитектуры «Эльбрус» с поддержкой NUMA [Электронный ресурс] // Официальный сайт ЗАО МЦСТ. – Режим доступа: http://mcst.ru/doc/110329/giljazov.doc.
- Докучаев А.Н. Разработка графического интерфейса бортового устройства с применением 3D-технологий // Семинар «Технологии QNX в России». – Москва, 17 апреля 2014 г.