Практический подход
к резервированию вычислительно-управляющей системы средствами сети SpaceWire
Сергей КАРПОВ Александр ПОПОВИЧ
Вследствие тяжелых условий эксплуатации космических аппаратов, которые включают в себя радиацию, значительные перепады температур и большие механические нагрузки, к вычислительно-управляющим системам предъявляются высокие требования по надежности. Простой и широко распространенный метод обеспечения надежности — это тройное резервирование и применение ко всем исходящим сигналам схемы голосования по принципу «2 из 3». Отказ одного устройства в любом случае парируется, поскольку два оставшихся синхронно работающих исправных устройства обеспечивают правильный результат голосования. Обеспечение полной синхронности работы 3 и более сложнофункциональных узлов достигается различными программными или аппаратными средствами. Развитие высокоскоростных сетевых технологий позволяет реализовать резервирование в информационном пространстве и возложить функцию синхронизации на сетевое оборудование.
Рассматриваемый далее вариант построения резервированной микропроцессорной системы базируется на функциональном методе резервирования с применением патентованного* способа синхронизации бортовых компьютеров, параллельно работающих в сети SpaceWire.
Интерфейс между модулями системы на функциональном уровне позволяет объединить элементы системы, реализованные на различной аппаратной платформе. Использование решений в рамках существующих международных стандартов обеспечивает возможность применения оборудования, поддерживающего эти стандарты, в том числе сторонних отечественных и зарубежных производителей, без необходимости согласования интерфейсов. Как следствие, значительно сокращается время разработки новых проектов и облегчается интеграция новых разработок в уже существующие системы.
Развитием стандарта IEEE 1355-1995 (определяющего семейство решений для организации высоконадежных последовательных соединений (Heterogeneous InterConect) на основе медных проводников) являются поддерживаемый европейским космическим агентством стандарт ECSS-E-50-^С SpaceWire и вспомогательный стандарт ECSS-E-50-11 SpaceWire/RMAP, которые находят все более широкое применение в отечественной и зарубежной космической технике.
* Положительное решение о выдаче патента по заявке 2008146151/09(060313) получено в декабре 2009 года.
Современный сетевой стандарт SpaceWire объединяет в себе простоту физической реализации, высокую скорость передачи данных, легкую масштабируемость сети, возможность динамической реконфигурации топологии сети и многие другие возможности, ранее труднодостижимые на борту космических аппаратов.
Рассмотрим обобщенную структуру резервированного блока (рис. 1), который, для примера, включает в себя три идентичных процессорных модуля, выполняющих синхронно одну и ту же программу. Все три модуля подключаются к специализированному маршрутизатору с блоком мажорирования пакетов.
При штатной работе всех модулей отправляемые ими пакеты теоретически должны быть синхронны и идентичны и, следовательно, могут быть мажорированы по принципу «2 из 3». В случае потери или повреждения одного из пакетов от любого процессорного модуля маршрутизатор обеспечивает бесперебойную работу системы. Информационные пакеты, адресованные данному блоку, размножаются в маршрутизаторе и одновременно передаются всем модулям резервированной системы. Для всех остальных узлов сети резервированный модуль «виден» как один узел. Применение подобного метода позволяет использовать и более трех модулей для
Блоки, модули и маршрутизаторы системы
Блоки, модули и маршрутизаторы системы
Сеть SpaceWire
Маршрутизатор
Мультиплексор
каналов
J
Модуль 1.1 (ЦП1) Модуль 1.2 (ЦП2) Модуль 1.3 (ЦПЗ)
Сеть SpaceWire
Маршрутизатор
Блок мажорирования 2 изЗ
I 1
Модуль 1.1 (ЦП1) Модуль 1.2 (ЦП2) Модуль 1.3 (ЦПЗ)
Рис. 1. Обобщенная структура резервированного блока
Модуль 1.1 Тта] ^ Пакет N ^ Принятие решения і
Модуль 1.2 Пакет N і
Выход блока мажорирования маршрутизатора — \ 2изЗ )
Рис. 2. Мажорирование пакетов в интервале времени
голосования, а также обеспечивает возможность применения практически любого аппаратного решения для реализации модулей, входящих в состав резервированного блока. Особо следует отметить тот факт, что программное обеспечение всех резервируемых модулей идентично и не должно содержать каких-либо средств межмодульного обмена в штатном режиме, поскольку каждый модуль «считает», что он работает автономно, а не в составе многократно резервированной синхронной системы.
Для функционирования системы мажорирование пакетов должно осуществляться в ограниченном интервале времени (рис. 2). По приходу первого пакета от любого процессорного модуля маршрутизатор ожидает прихода идентичных пакетов от двух других модулей резервированной системы в течение заданного интервала времени Тmaj.
Пакет, принятый по истечении интервала, игнорируется, и фиксируется ошибка для данного канала. Также игнорируется пакет, отличный от двух остальных, в случае своевременного прихода трех информационных пакетов.
Для того чтобы система функционировала правильно, необходимо, чтобы процессорные модули работали синхронно. Однако при отсутствии системы синхронизации со временем будет происходить «разбежка» в работе процессоров из-за погрешностей генераторов тактовой частоты, что приведет к нарушению работы системы в целом.
Для решения этой проблемы предлагается формировать внутри резервированной сети локальные широковещательные синхропакеты и синхронизировать модули по первому принятому пакету. Это решение не нарушает выбранного принципа функционального резервирования и не требует дополнительных связей между модулями. Синхронизация программного обеспечения в таком случае осуществляется выделением одинакового количества тактов на исполнение программ в период между синхронизациями и последующим остановом процессора.
Рассмотрим более подробно предлагаемый принцип (рис. 3).
Для отсчета времени между посылкой синхропакетов в каждом модуле присутствует таймер отсчетов циклов синхронизации.
Каждый процессорный модуль периодически по этому таймеру передает по сети SpaceWire широковещательный синхропакет всем модулям резервированного блока. Синхронизация осуществляется по приходу первого синхропакета. По первому принятому синхропакету все таймеры в модулях перезапускают отсчет времени, и синхронизация завершается.
Однако при этом таймер «отставшего» модуля отсчитает меньшее количество тактов частоты, а следовательно, процессор выполнит меньше инструкций. Для синхронизации работы программного обеспечения необходимо, чтобы в каждом цикле между синхронизациями процессоры в модулях выполнили одинаковое количество инструкций и остановились
в одной и той же точке программы. Решением проблемы может являться кратковременный останов каждого процессора (рис. 4). В каждом процессорном модуле по завершении работы таймера циклов синхронизации процессор останавливается и запускается таймер времени останова процессора. По приему синхропакета, который формируется по окончании работы таймера останова, запускается таймер циклов синхронизации, который привязан к тактовой частоте модуля.
Синхронизация достигается выполнением одинакового количества инструкций программы каждым процессором между пакетами синхронизации и одновременным запуском ПО (рис. 5).
Перезапуск
таймера
Окончание отсчета таймером и формирование сигнала прерывания
Рис. 4. Остановка процессора для синхронизации
Синхропакет Г г1 1
Модуль 1.1 ^ \ /1 г і
Модуль 1.2 С Рабочий цикл программы X Останов р N И / к 71 N N ’ і *
Модуль 1.3 \ К ^ ^ К/1 К N 1 И *,
\ 1/ N 1/ Чі 1
Рис. 5. Синхронизация ПО трех модулей резервированной системы
Рис. 6. Структурная схема процессорного модуля резервированной системы
ОЗУ/ПЗУ
ЕЕ
Контроллер 5-^ ПРОЦЕССОР
памяти
Процессорный
блок
Тактовая частота на процессорный блок
Тактовая частота с генератора
Таймер 1 Таймер 2
>4*
>н
Контроллер
прерываний
Блокировка тактовой частоты процессора
Тактовая частота на контроллер врасеУУіге и блок синхронизации
.81
Интегрированное
ОЗУ
ПЛИС
Контроллер
8расе\Уіге
Контроллер ЗрасеУУіге с дешифратором пакетов
БрасеМ/іге Канал 1 БрасеУ/іге Канал 2
Контроллер
синхронизации
Таймер
синхронизации
Таймер
периода
синхронизации
ПРОЦЕССОР
ОЗУ/ПЗУ
Рис. 7. Реализация процессорного модуля: а) на основе ^-ядра, б) на основе отдельной микросхемы процессора
В рассматриваемой схеме каждый процессорный модуль работает от отдельного тактового генератора. Реальные частоты тактовых генераторов в каждом модуле будут отличаться, поэтому со временем неизбежна «раз-
бежка» процессоров, и на практике останов работы процессоров будет происходить не одновременно. В модуле, имеющем более высокую тактовую частоту, по окончании работы таймера синхронизации будет сформирован
пакет синхронизации, который будет передан через маршрутизатор одновременно всем модулям резервированной системы, включая и модуль-отправитель. Более «медленные» модули примут синхропакет либо во время передачи, либо до нее в локальную сеть собственных синхропакетов. По приему синхропакета во всех модулях разрешается работа процессора. Если началась передача собственного синхропакета, то она будет закончена, чтобы не формировать ошибку пакета в сети, но сам синхропакет будет проигнорирован.
Несложный расчет показывает, что для существующих погрешностей кварцевых генераторов потери вычислительного ресурса системы из-за простоев для периодической синхронизации вышеизложенным способом не превысят 1%.
Структурная схема процессорного модуля для реализации данного способа резервирования представлена на рис. 6. Схема включает в себя стандартный процессорный блок (процессор и контроллеры) и контроллер SpaceWire с блоком синхронизации. Контроллер синхронизации управляет работой таймеров синхронизации и останова, формирует пакет синхронизации для передачи по сети SpaceWire и сигнал прерывания на контроллер прерываний процессора. Останов процессора может быть осуществлен, например, посредством отключения тактовой частоты от процессорного блока.
Алгоритм работы схемы включает в себя два типа синхронизации: первичную и периодическую. При включении питающего напряжения или перезапуске модуля осуществляется синхронизация работы модуля, находящегося в состоянии инициализации с другими модулями резервированной системы. Выполняется синхронизация как исполнения ПО, так и данных, чтобы обеспечить идентичность выполнения алгоритмов работы. Для синхронизации данных может быть использован протокол удаленного доступа в память RMAP, который позволяет скопировать данные из памяти одного узла сети SpaceWire в память другого узла без участия процессора и программного обеспечения штатными средствами сети SpaceWire. Протокол RMAP также может использоваться для восстановления поврежденного блока памяти в одном из модулей центрального процессора посредством его копирования из памяти исправного модуля. В процессе работы выполняется периодическая синхронизация модулей по прерыванию от таймера циклов синхронизации. При срабатывании таймера на процессор поступает сигнал прерывания, по которому вызывается подпрограмма обработки этого прерывания. В подпрограмме обработки выставляется программный флаг запроса выполнения синхронизации. В основной программе циклически вызывается подпрограмма синхронизации, в которой проверяется состояние этого флага. При его сраба-
Рис. 8. Вариант реализации системы на одной плате
тывании осуществляется процедура запуска цикла синхронизации с остановом процессора. При нормальном функционировании резервированной системы все процессоры теоретически должны выполнить идентичный цикл рабочей программы, включая обработку прерывания от таймера циклов синхронизации, который выполняется за идентичное количество тактов. Поэтому расхождение во времени исполнения синхронизации будет определяться разностью тактовых частот кварцевых генераторов.
Поскольку «готовых» интегральных микросхем, предназначенных для схем резер-
вирования по обсуждаемому методу, не существует, его практическое осуществление возможно только при применении программируемых логических интегральных схем (ПЛИС). Возможным вариантом такой микросхемы могут быть, например, выпускаемые Actel ^^. радиационно-стойкие ПЛИС. Логическая матрица высокой интеграции необходима как для реализации модифицированного сетевого маршрутизатора со схемами размножения пакетов и голосования, так и для реализации схемы управления процессором, которая также может включать в себя №-ядро процессора.
Теоретически выбор процессора может быть произвольным, поскольку единственное требование, накладываемое методом, — это возможность останова процессора, так или иначе реализуемая в большинстве архитектур. Принципиального различия между IP-блоком процессорного ядра, реализованного непосредственно в ПЛИС, и отдельной микросхемой процессора в рамках рассматриваемой задачи тоже нет (рис. 7). Так, например, существует возможность применения метода для IP-ядер процессоров Leon3, Intel 186 и ARM Cortex, а также для радиационно-стойкого процессора RAD750, выпускаемого BAE Systems.
Возникает вопрос: возможно ли применение метода резервирования на борту аппаратов, которые не используют сеть SpaceWire? Ответ, безусловно, утвердительный, поскольку все необходимые узлы могут быть размещены на одной плате: три (или более) процессорных модуля и два маршрутизатора (в случае дублирования линий передачи данных) с внешними интерфейсами, которые требуются в конкретной вычислительно-управляющей системе (рис. 8). Подобное решение сохраняет в себе все достоинства изложенного метода и может быть интегрировано в бортовое оборудование, не использующее SpaceWire в качестве системообразующего фактора. ■