СПОСОБ ОБЕСПЕЧЕНИЯ СБОЕ- И ОТКАЗОУСТОЙЧИВОСТИ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ, ОСНОВАННЫЙ НА РЕПЛИКАЦИИ ЗАДАЧ, ВОЗМОЖНОСТИ САМОРЕКОНФИГУРАЦИИ И САМОУПРАВЛЕНИИ ДЕГРАДАЦИЕЙ
METHOD OF PROVIDING FAULT-TOLERANCE COMPUTER SYSTEM BASED ON TASK REPLICATION, SELF-RECONFIGURATION AND SELF-MANAGEMENT OF DEGRADATION

Изобретение относится к области вычислительной техники и может использоваться при построении высоконадежных вычислительных и управляющих систем, предназначенных для решения задач управления бортовыми системами транспортного корабля.
Известен метод локализации «дружественных» и «враждебных» неисправностей в комплексах резервированных ВМ (вычислительных машин) [1]. Основой метода являются закономерности форм проявления неисправностей  в наборе результатов вычислений, который используется в детерминированном алгоритме взаимной информационной согласованности. Для любой ВМ в комплексе резервированных ВМ с непосредственными связями, выполняющих  одинаковые прикладные задачи, результат вычислений можно представить одним числом. Совокупность результатов вычислений каждой задачи, сформированная посредством межмашинного обмена во всех ВМ, образует исходный набор (ИН), позволяющий любой ВМ контролировать состояние комплекса. При отсутствии неисправностей значения этих элементов ИН согласованы либо находятся в диапазоне допустимых отклонений. При проявлении неисправности значения одного или нескольких элементов отличаются от остальных. Смысл локализации состоит в том, чтобы все исправные ВМ одновременно и однозначно  определили номер неисправной.
Вычислительный процесс периодически прерывается в контрольных точках (КТ) для выполнения процедуры  обеспечения отказоустойчивости. При использовании существующих подходов к локализации процедура  обеспечения отказоустойчивости полностью выполняется в той же самой КТ, в которой обнаружено проявление неисправности. Пусть N - общее число ВМ в комплексе, k - число неисправных. Локализация «дружественных» неисправностей производится при N ≥ 2 k+1 тривиальным образом. При формировании ИН  производится один раунд обмена, в каждой исправной ВМ формируется вектор из N элементов,   места расположения рассогласованных элементов (РЭ) в нем совпадают с номерами неисправных машин [2]. Локализация всех форм проявления «враждебных» неисправностей выполнима только при N ≥ 3 k+1 и является нетривиальной задачей. Под формой проявления неисправности (ФПН) понимается характер места расположения  рассогласованных элементов (РЭ) в ИН, образованных в одной и той же КТ всеми исправными машинами.  Это вызвано тем, что ИН имеет более сложную структуру, в частности многомерную и разреженную, места расположения РЭ в различных исправных ВМ не совпадают и неоднозначно связаны с номерами неисправных машин. Метод локализации [3] основан на том, что в одной и той же КТ все возможные ФПН с помощью алгоритма взаимной информационной согласованности (ВИС) преобразуются к одной и той же форме, установленной для «дружественных» неисправностей. При этом преобразовании значение каждого элемента вектора образуется с помощью мажоритарного выбора по большинству  совпадающих значений в группах элементов ИН, так что те ФПН, для которых число РЭ меньше половины от общего числа элементов в группе, маскируются, т.е. могут накапливаться и вызвать отказ комплекса. Предлагаемый метод состоит в том, чтобы для любой  ФПН сформировать в  каждой исправной ВМ множество допустимых результатов локализации (возможно в некоторых машинах - неоднозначных), после чего в нескольких КТ с помощью преобразований над ИН и несовпадающими результатами локализации устранить неоднозначность определения номера неисправной машины. Процедура локализации, реализующая данный метод, является многоэтапной, причем для различных  ФПН завершается на разных этапах. Утверждается, что несмотря на произвольный характер данных, принимаемых от неисправной ВМ в каждом раунде межмашинного обмена, множество РЭ в ИН, сформированных исправными ВМ, расположено закономерно, что и позволяет разработать правила локализации.
Недостатками этого метода являются: во-первых, отсутствие согласованного учета проявлений неисправностей в процессе взаимообмена результатами вычислений, что может задерживать локализацию на неопределенно долгое время даже при относительно высокой частоте проявлений неисправности.
Во-вторых, отсутствует согласованное обнаружение, учет и идентификация проявлений неисправностей в процессе взаимного информационного согласования признаков обнаружения неисправностей и данных локализации для построения вспомогательных наборов. При этом повышается вероятность возникновения необнаруживаемого отказа и внезапного отказа всей системы при последующем появлении сбоя другого элемента системы (так как в этом случае может фиксироваться  краткая неисправность при допустимости одиночной) даже в случае наличия  исправного резерва.
Известен также метод сбоеустойчивого информационного согласования с идентификацией обнаруженных неисправностей в четырехмашинной  вычислительной системе [4], состоящей из четырех  ВМ  с номерами 1-4, соединенных четырьмя каналами связи шинной архитектуры. ВМ присоединяется к каждому каналу отдельным устройством сопряжения (УС), причем один из УС ВМ является передатчиком, а три другие УС этой ВМ - приемниками. В каждом канале имеется один УС-передатчик и три УС-приемника. Передача информации из каждой ВМ во все другие осуществляется широковещательным способом. Пусть ВМi передает во все другие ВMj, k, l некоторую информацию.
Алгоритм сбоеустойчивого информационного согласования заключается в следующем:
i
• в первом раунде каждая из ВМi, где i =1-4, передает свое значение З другим ВМ и получает от них их значения;
i
i
2
3
• во втором (третьем) раунде каждая ВМi передает другим ВМ информацию, полученную ею в предыдущем раунде, и еще раз свое собственное значение З (З );
• в четвертом раунде каждая ВМi передает в другие ВМ всю информацию, полученную ею в третьем раунде;
i
j
j
j
j
j
j
j
j
j
j
1
1
2
2
3
3
1
2
3
• каждая ВМi определяет значения элементов своего вектора интерактивного согласования, в том числе и значение вектора интерактивного согласования С Для каждого j (j=1,4) мажоритированием всех значений Z , … , полученных данной ВМ в первом и втором раундах, определяется значением С , мажоритированием всех значений Z , …, полученных данной ВМ во втором и третьем раундах, находится значение С  и, наконец, мажоритированием значений Z  , …, полученных в третьем и в четвертом раундах,- значение С . Значение Свектораинтерактивного согласования данной ВМi образуется путем мажоритирования значений С , С , С . В случае, если любое из мажоритирований невозможно из-за неравенства всех трех исходных значений, соответствующему результирующему значению присваивается значение NULL.
j
j
k
Обнаружение и идентификация проявившихся неисправностей осуществляется независимо в каждой из ВМ. В процессе всех раундов согласования ВМi получают некоторую последовательность значений, упорядоченную в порядке номеров раундов их поступления, номеров ВМ их траекторий и последовательности значений k. Обозначим эту последовательность через S. Каждая ВМi для некоторых j и k  осуществляет последовательное сравнение значений Z , … в своей S со значением С и при обнаружении первого несравнения ( что является признаком проявления неисправности) определяет подозреваемую область этой неисправности. Такой анализ проводится для каждого из значений j и k. Пересечение  всех полученных подозреваемых областей и их анализ позволяет идентифицировать проявляющуюся неисправность.
Недостатком этого способа является сложность реализации его в системах реального времени.
Задачей изобретения является увеличение быстродействия и  упрощение выполняемых алгоритмов .
Сущность заявляемого изобретения, возможность его осуществления и промышленного использования поясняются чертежами и алгоритмами, представленными на фиг. 1 - 12, где
• на фиг. 1 представлена структурная схема отказоустойчивой вычислительной  системы с аппаратно-программной реализацией функций отказоустойчивости и динамической реконфигурации;
• на фиг. 2 представлена диаграмма состояний деградации и реконфигурации;
• на фиг.3 представлен алгоритм обеспечения сбое- и отказоустойчивости вычислительной системы, основанный на возможности самореконфигурации и самоуправления деградацией;
• на фиг. 4 представлен алгоритм настройки контроллера межмашинного обмена (КМО);
• на фиг. 5 представлен алгоритм функционирования системы отсчета времени;
• на фиг.  6  представлена привязка к внешней метке времени;
• на фиг.7 представлен алгоритм синхронизации при отсутствии метки времени;
• на фиг.8 представлен расчет запаздывания прогноза при отсутствии внешней МВ;
• на фиг.9 представлен алгоритм выполнения мажоритирования;
• на фиг.10 представлен алгоритм функционирования таймера синхронизации ММО;
•  на фиг. 11 представлен   алгоритм выполнения самоуправления деградацией;
• на фиг. 12 представлен алгоритм выполнения самореконфигурации.
Указанные преимущества заявляемого способа перед прототипом достигаются за счет того, что в  отказоустойчивую вычислительную  систему с аппаратно-программной реализацией функций отказоустойчивости и динамической реконфигурации, содержащую первую 1, вторую 2, третью 3 и четвертую 4 вычислительные машины, соединенные первой 5, второй 6, третьей 7 и четвертой 8 последовательными шинами  данных, первый 9, второй 10, третий 11 и четвертый  12  вторичные источники питания (ВИП), первый 13, второй 14, третий 15 и четвертый 16   контроллеры межмашинного обмена (КММО), первый 17, второй 18, третий 19 и четвертый 20 контроллеры управления конфигурацией (КУК), первые 21 группы выходов которых соединены с первыми группами входов нулевой 1, первой 2, второй 3 и третьей 4 ВМ, вторые 22 группы входов которых соединены с первой группой входов системы, вторая 23, третья 24, четвертая 25,пятая 26 группы входов которой соединены с первыми группами входов  КММО1(13) и КУК1(17), КММО2(14) и КУК2(18), КММО3(15) и КУК3(19), КММО4(16) и КУК4(20) соответственно,  вторые 27 группы входов которых соединены с первыми группами выходов ВМ (1, 2, 3, 4), локальная двунаправленная магистраль 28 которых соединена с локальными двунаправленными магистралями КММО (13, 14, 15, 16), первые 29 выходы которых соединены с первыми входами контроллеров КУК (17, 18, 19, 20), вторые 30 группы выходов которых соединены с первыми группами входов ВИП (9, 10, 11, 12) соответственно, группы выходов 31 которых соединены с третьими группами входов ВМ (1, 2, 3, 4), причем первая 32 группа выходов первого  13 КММО соединена с третьими группами входов второго 14, третьего 15 и четвертого 16  КММО и первого 17, второго 18, третьего 19 и четвертого КУК 20, первая 33 группа выходов второго 14 КММО соединена с четвертыми группами входов первого 13, третьего 15 и четвертого КММО 16 и первого 17, второго 18, третьего 19 и четвертого 20 КУК, первая 34 группа выходов третьего 15 КММО соединена с пятыми группами входов первого 13, второго 14 и четвертого 16 КММО и первого 17, второго 18, третьего 19 и четвертого 20 КУК, первая 35 группа выходов четвертого 16 КММО соединена с шестыми группами входов первого 13, второго 14 и третьего 15 КММО и первого 17, второго 18, третьего 19 и четвертого 20 КУК, причем шестая 36 группа входов системы соединена со вторыми группами входов первого 9, второго 10, третьего 11 и четвертого  12 ВИП, первые входы которых соединены с седьмой 37 группой входов системы, восьмая 38 группа входов которой соединена со вторыми входами первого 9, второго 10, третьего 11 и четвертого 12 ВИП, причем вторые 39 группы выходов КММО(13, 14, 15, 16) соединены с четвертыми группами входов ВМ (1,2,3,4), в каждую ЭВМ дополнительно введены первый 40, второй 41, третий 42, четвертый 43 программные счетчики сбоев (ERRi BМi), первый 44, второй 45, третий 46, четвертый 47 программные счетчики сбойных секунд (SECi BМi), первый 48, второй 49, третий 50, четвертый 51 программные счетчики блокировки (BLKi  BМi), таймер синхронизации (ТмрСн) 52, таймер синхронизации ММО (межмашинного обмена) (Тмр ММО) 53, таймер генерирования запроса на прерывание (Тмргзп ) 54, регистр предустановки таймера Тмргзп RPгзп 55, счетчик RTгзп 56, регистр предустановки таймера синхронизации RPsn 57, счетчик таймера синхронизации RTsn 58, регистр предустановки ММО RРmmo 59, счетчик синхронизации ММО RTmmo 60, регистр фиксации RFx 61, контроллер межмашинного обмена (КММО) 13, 14, 15, 16, контроллер управления конфигурацией (КУК) 17,18,19,20 и определены этапы включения системы, состоящие из инициализации системы, начальной проверки по включению, формирования таблицы технического состояния ТТС системы, установки исходной рабочей конфигурации системы 62,  функциональной работы с сохранением заданного уровня избыточности и механизмами обеспечения сбое- и отказоустойчивости  вычислительной  системы, состоящими из настройки КММО, согласования системного времени, выполнения синхронизации при отсутствии внешней метки времени, функционирования таймера синхронизации ММО, выполнения обменов по МКО 65, обнаружения отказов и сбоев 65,66 путем мажоритирования своей и всех полученных копий входной информации, выполнения самоуправления деградацией 67, выполнения самореконфигурации 68.
Настройка контроллера межмашинного обмена в одномашинной конфигурации 69 заключается в том, чтобы скоммутировать 73 на входы «а», «б», «в» элемента мажоритирования выход от своей ВМ и разрешить участие в синхронизации входа «а», в двухмашинной конфигурации 70 заключается в том, чтобы скоммутировать 74 на вход «а» элемента мажоритирования выход от своей ВМ, на вход «б» элемента мажоритирования выход от другой ВМ, на вход «в» элемента мажоритирования выход от «лучшей» из двух ВМ, у которой сумма программного счетчика сбоев (40,41,42,43) и программного счетчика сбойных секунд (44,45,46,47) имеет минимальное значение, разрешить участие в синхронизации входов «а, б», в трехмашинной конфигурации 71 заключается в том, чтобы скоммутировать 75 на вход «а» элемента мажоритирования выход от своей ВМ, на вход «б» элемента мажоритирования выход от второй ВМ, на вход «в» элемента мажоритирования выход от третьей ВМ и разрешить участие в синхронизации входов «а,б,в», в четырехмашинной конфигурации 72 заключается в том, чтобы скоммутировать 76 на вход «а» элемента мажоритирования выход от своей ВМ, на вход «б» элемента мажоритирования выход от второй ВМ,  на вход «в» элемента мажоритирования выход от третьей ВМ и разрешить участие в синхронизации входов «а, б, в, г», где «г» - выход от четвертой ВМ.
Функционирование системы отсчета времени производится записью 77 в регистр предустановки таймера Тмргзп RPгзп 55 интервала срабатывания равного 1000000 мкс, интервал срабатывания 78 переписывается в счетчик RTгзп 56, который работает на вычитание 80, Тмргзп 54 срабатывает 81 при обнулении RTгзп 56, генерируется 82 запрос на прерывание  и интервал из  RPгзп 55 переписывается 78 в RTгзп 56, процесс повторяется, причем если счетчик RTгзп 56 не равен «0», то по тактовому импульсу продолжается вычитание «1» из RTгзп 56, причем в регистр предустановки таймера синхронизации RPsn 57 заносится интервал срабатывания 83, равный 0xFFFFFFFF, по внешней метке времени МВ 84 содержимое регистра RPsn 57 предустановки таймера синхронизации переписывается 84 в счетчик таймера синхронизации RTsn 58, который работает на вычитание 86, а счетчик таймера синхронизации 58 переписывается 84 в регистр фиксации RFx 61, причем когда счетчик таймера синхронизации RTsn 58 устанавливается в «0» 87, формируются 88 признаки срабатывания таймера синхронизации  и наличия внешней метки времени и содержимое счетчика таймера синхронизации 58 переписывается в регистр фиксации RFx 61, а регистр предустановки RPsn 57 переписывается 84 в счетчик RTsn 58 и процесс повторяется 85, причем если внешней метки времени МВ нет 87 и счетчик RTsn 58 не равен «0», то по тактовому импульсу 85 продолжается вычитание «1» из счетчика RTsn 58.
Синхронизация при отсутствии внешней метки времени выполняется при наличии запроса 89 на прерывание от таймера Тмргзп у каждой ВМi, затем, если номер текущей секунды четный 90, то каждая ВМi формирует байт синхронизации и передает 91 его в две другие ВМ, каждая из ВМi анализирует наличие байтов синхронизации от других ВМ и если они есть, то фиксирует  обобщенный признак синхронизации 92, вычисляет время 93 от срабатывания таймера до обобщенной синхронизации (T3Si), затем выдает значение времени (T3Si) 94 из каждой ВМi, если есть   обобщенный признак синхронизации 95, то вычисляет медиану 96 из трех значений времени  T3S0, T3S1 и T3S2, выполняет процедуру мажоритирования 97 согласованных меток, затем вычисляет поправку 98 для таймера Тмргзп и корректирует 99 состояние таймера Тмргзп  на вычисленное значение поправки.
Процедура  мажоритирования заключается в том, что каждая ВМi формирует признак необходимости и перехода в режим деградации 100, если содержимое хотя бы одного счетчика сбоев ERRi  больше 8, то к своему согласуемому значению добавляет 101 сформированный признак и выдает полученный результат во все другие ВМ, при наличии признака обобщенной синхронизации 102 ВМi выполняет мажоритирование 103 своей и двух полученных копий  по формуле M = (A & B) | (A & C) | (В & С), где А - собственное значение, затем сравнивает имеющиеся копии В и С с результатом мажоритирования 104,105,106, если копии и собственное значение равны результату мажоритирования, и если есть признак деградации в М 107, то нужно выполнить процедуру самоуправления деградацией 112 и вернуть согласованное значение М 108, причем если копия из ВМ2 не равна М 105, то содержимое счетчика сбоев ERR BM2 (41) увеличивается 110 на единицу, причем если копия из ВМ3 не равна М 106, то содержимое счетчика сбоев ERR BM3 (42) увеличивается 111 на единицу, причем если собственное значение из ВМ1 не равно М 104, то содержимое счетчика сбоев ERR BM1 (40) увеличивается 109 на единицу, причем если нет признака деградации в М 107, то вернуть согласованное значение М 108.
Функционирование таймера синхронизации ММО 53 осуществляется так, что если есть данные с двух входов контроллера межмашинного обмена (ММО) 113 и есть тактовый импульс 114, то содержимое счетчика синхронизации ММО 60 увеличивается 115 на «1», если есть данные с трех входов контроллера ММО 116, то формируется обобщенный признак синхронизации 117, причем если нет данных с трех входов контроллера ММО и счетчик синхронизации ММО 60 равен регистру 59 предустановки ММО 118, то формируется обобщенный признак синхронизации 117,  если же счетчик синхронизации ММО 53 не равен регистру 59 предустановки ММО, то осуществляется переход на ожидание тактового импульса 114 и увеличение  115 содержимого счетчика синхронизации ММО 60 на «1».
Процедура самоуправления деградацией заключается в том, что каждая BMi составляет список отказавших ВМ 119, для которых счетчик сбоев ERRi (40-43) превысил лимит, равный 8, согласовывает список 120, выполняя процедуру мажоритирования, если согласованный список не пуст 121, то по счетчикам ERRi (40-43) согласованно выбирает худшую BM, у которой счетчик сбоев ERRi (40-43) имеет максимальное значение, а если они равны, то с минимальным номером ВМi, из списка 122, готовит новую конфигурацию, установив режим деградации, согласованно блокирует выбранную ВМi 123 и изменяет режим на рабочий, включает дежурное питание, настраивает мажоритирование контроллера управления конфигурацией, блокирует все выключенные и неисправные ВМ, назначает ВМi ведущей на МКО в соответствии с конфигурацией, если выбранная ВМi заблокирована 124, то к содержимому счетчика блокировок (48-51) заблокированной ВМi прибавляет «1» 125, готовит для  программного обеспечения (ПО) извещение о блокировке 126, конец деградации, причем, если выбранная ВМi не заблокирована 124, то готовит для ПО извещение о деградации 127, конец деградации, причем, если согласованный список  пуст 121, то конец деградации.
Процедура самореконфигурации заключается в том, что если для реконфигурации выделено  128 времени  больше 10 с , то выполняется  выключение всех лишних ВМ 129 (резервные и неисправные ВМ),  если для реконфигурации выделено 130 времени меньше 60 с, то необходимо завершить 134 процедуру, если больше и в текущей конфигурации три ВМ 131, то необходимо завершить 134 процедуру, если в текущей конфигурации меньше трех ВМ 131, то необходимо выбрать 132 включаемые ВМ по минимальному значению счетчика BLKi (48-51) и если нашлась 133 подходящая ВМ (выключенная и исправная или выключенная и имеет минимальное значение счетчика BLKi), то включить 135 BMi, передать 136 необходимую информацию в ОЗУ BMi и выполнить  синхронный и согласованный перезапуск 137 ПО с признаком перезаписи, завершить  процедуру 134, причем если не нашлась  подходящая ВМ, то необходимо завершить 134 процедуру.
Способ обеспечения сбое- и отказоустойчивости  вычислительных  систем, основанный на репликации задач,  возможности самореконфигурации и самоуправлении деградацией заключается в следующем.
Отказоустойчивая вычислительная  система включает три ВМ рабочей конфигурации и одну ВМ в холодном резерве. Структурная схема отказоустойчивой вычислительной  системы  с аппаратно-программной реализацией функций отказоустойчивости и динамической реконфигурации представлена на фиг.1.
Каждая ВМi рабочей конфигурации решает одну и ту же целевую задачу  программного обеспечения, при помощи программного обеспечения отказоустойчивости (ПОО) результаты решения передает другим ВМ рабочей конфигурации и принимает от них их копии результатов решения, а затем по своей и полученным копиям решения определяет правильный результат. В двухмашинной рабочей конфигурации правильное решение определяется на основе двух результатов и, если такое определение невозможно (отсутствует возможность идентификации неисправной ВМ по результатам решения), то, в зависимости от имеющихся временных ресурсов, осуществляется либо повторное решение задачи ПО, либо переход к промежуточному тестированию каналов с последующим повторным решением при положительном результате тестирования или переходом к одноканальной конфигурации на основе исправного канала           системы. При невозможности идентифицировать неисправную ВМi осуществляется переход к безопасному останову системы.   Диаграмма состояний   деградации  и реконфигурации представлена на фиг.2.
Алгоритм обеспечения сбое- и отказоустойчивости вычислительной системы, основанный на возможности самореконфигурации и самоуправлении деградацией представлен на фиг.3.
На этапе начальной проверки определяются работоспособные элементы системы, выбирается и устанавливается исходная рабочая конфигурация системы, формируется 62 таблица технического состояния (ТТС), инициализируются 62 механизмы обеспечения сбое- и отказоустойчивости системы. Если работоспособны 63  4 машины, то 4 машину выключают 64.
На втором этапе выполняются задачи прикладного программного обеспечения (ППО) системы 65. Все выполняемые действия сопровождаются  непрерывным и сквозным функциональным диагностированием. При возникновении сбоев  осуществляется 66 восстановление вычислительного процесса. В случае идентификации отказа   выполняется 67 самоуправление деградацией  и самореконфигурация 68 системы,  обеспечивающая сохранение заданного уровня избыточности, и восстановление вычислительного процесса.
Алгоритм настройки контроллера межмашинного обмена (КМО) представлен на фиг.4.
Настройка КМО заключается в следующем:
• в одномашинной конфигурации 69 необходимо скоммутировать 73 на входы элемента мажоритирования : «а» - выход своей ВМ, «б» - выход своей ВМ, «в» - выход своей ВМ, разрешить участие в синхронизации входа «а»;
в двухмашинной конфигурации 70 необходимо скоммутировать 74 на входы элемента мажоритирования : «а» -выход от своей ВМ, «б» - выход от другой ВМ, «в» - выход от «лучшей» из двух ВМ, (результат мажоритирования - данные от «лучшей» ВМ), у которой сумма программного счетчика сбоев (40,41,42,43) и программного счетчика сбойных секунд (44,45,46,47) имеет минимальное значение, разрешить участие в синхронизации входов «а», «б»;
• в трехмашинной конфигурации 71 необходимо скоммутировать 75 на входы элемента мажоритирования : «а» - выход от своей ВМ, «б» - выход от второй  ВМ, «в» - выход от третьей ВМ, разрешить участие в синхронизации входов «а», «б», «в» ;
• в четырехмашинной конфигурации 72 необходимо скоммутировать 76 на входы элемента мажоритирования : «а» -выход от своей ВМ, «б» - выход от второй  ВМ, «в» - выход от третьей ВМ, разрешить участие в синхронизации входов «а», «б», «в», «г», где «г» - выход от четвертой ВМ.
Сбое- и отказоустойчивая работа ВМ, базируется на двух принципах: синхронизированной работе всех ВМ рабочей конфигурации и согласованности принимаемых различными ВМ решений, основанной на согласованности исходных данных.
Синхронизация работы  программного обеспечения (ПО) отдельных ВМ, входящих в состав системы, и необходимое согласование данных производится программами общего программного обеспечения (ОПО) в ключевые моменты вычислительного процесса, называемые точками синхронизации.
В частности, обеспечивается:
•  согласованное ведение системного времени в разных ВМi;
•  согласованный запуск задач (в каждой ВМi в текущий момент времени       выполняется одна и та же задача);
• согласованное проведение обменов по мультиплексному каналу обмена (МКО);
•  согласование данных по запросу программного обеспечения.
Предусматриваются два вида синхронизации:
• на основе единого системного времени;
• синхронизация при отсутствии метки времени (МВ).
Алгоритм функционирования системы отсчета времени представлен на фиг.5. Привязка к внешней метке времени представлена на фиг. 6.
Принцип работы таймера Тмргзп 54: в регистр 55 предустановки (RPгзп) программно заносится 77 интервал срабатывания, равный 1000000 мкс, и таймер 54 запускается в циклическом режиме. Интервал срабатывания переписывается 78 в счетчик RTгзп 56, который работает на вычитание 80, Тмргзп 54 срабатывает 81 при обнулении счетчика RTгзп 56, генерируя запрос на прерывание 82, и интервал 78 из RPгзп 55 переписывается в RTгзп 56, процесс повторяется.
Принцип работы таймера 52 синхронизации (ТмрСн ):  в регистр предустановки таймера синхронизации RPsn 57 заносится 83 интервал срабатывания равный 0xFFFFFFFF, таймер работает в циклическом режиме, по внешней метке времени МВ содержимое регистра RPsn предустановки таймера синхронизации 57 переписывается 84 в счетчик 58 таймера синхронизации RTsn, который работает на вычитание 86, а счетчик 58 таймера синхронизации переписывается 84 в регистр фиксации RFx 61, причем когда счетчик 58 таймера синхронизации RTsn устанавливается в «0» 87, то формируются 88 признаки срабатывания таймера 52 синхронизации  и наличия внешней метки времени, далее содержимое счетчика 58 таймера синхронизации 52 переписывается 84 в регистр фиксации RFx 61, что позволяет измерять интервал между двумя МВ.
После переполнения счетчика 56 RTгзп или счетчика 58 RTsn ВМ вычисляет:
• содержимое таймера 52 синхронизации, вычитая из содержимого регистра  предустановки 57 ТмрСн содержимое счетчика 58 синхронизации (RPsn - RTsn = TS) ;
• содержимое таймера Тмргзп 54, вычитая из содержимого регистра  предустановки таймера 55 RРгзп содержимое счетчика RTгзп 56 (RРгзп - RTгзп = ТМ) ;
•  запаздывание прогноза (D=TS - TM) ;
• количество тактов в секунде (Т1 = RPsn - RFx) .
Затем выполняет привязку  прогноза МВ.
Второй вид синхронизации - синхронизация при отсутствии внешней метки времени (МВ).   Алгоритм синхронизации при отсутствии внешней метки времени представлен на фиг.7. Расчет запаздывания прогноза при отсутствии внешней МВ представлен на фиг. 8.
Синхронизация системного времени проводится периодически каждую секунду. Производится согласование секундной составляющей времени (TS) и микросекундной составляющей (Tmks). При обнаружении расхождения значений Tmks в разных ВМi эти значения усредняются и во всех ВМ устанавливаются одинаковые значения Tmks.
Значения TS разных ВМi мажоритируются. При изменении времени производится согласование нового значения, а затем согласованное значение времени устанавливается во всех ВМ.
Синхронизация при отсутствии внешней метки времени выполняется при наличии запроса на прерывание 89 от таймера Тмргзп 54 у каждой ВМi, затем, если номер текущей секунды четный 90, то каждая ВМi формирует байт синхронизации 91 и передает его в две другие ВМ, каждая из ВМi анализирует наличие байтов синхронизации от других ВМ и если они есть, то фиксирует обобщенный признак синхронизации 92, вычисляет время от срабатывания таймера до обобщенной синхронизации (T3Si) 93, затем выдает значение времени (T3Si) 94 во все другие ВМ, если есть обобщенный признак синхронизации и значения времени (T3S1 и T3S2) 95, то вычисляет медиану 96 из трех значений времени  T3S0, T3S1 и T3S2, выполняет процедуру мажоритирования 97 согласованных меток, затем вычисляет поправку 98 для таймера Тмргзп 54 и корректирует 99 состояние таймера Тмргзп 54 на вычисленное значение поправки.
На фиг.9 представлен алгоритм выполнения процедуры мажоритирования.
Процедура  мажоритирования заключается в том, что каждая ВМi формирует признак необходимости и перехода в режим деградации 100, если содержимое хотя бы одного счетчика сбоев ERRi  больше 8, то к своему согласуемому значению добавляет 101 сформированный признак и выдает полученный результат во все другие ВМ, после окончания обмена 102 при наличии обобщенного признака синхронизации ВМi выполняет мажоритирование 103 своей и двух полученных копий  по формуле M = (A & B) | (A & C) | (В & С), где А - собственное значение, затем сравнивает имеющиеся копии В и С и собственное значение А с результатом мажоритирования 105, 106, 104, если копии и собственное значение равны результату мажоритирования, и если есть признак деградации в М 107, то нужно выполнить процедуру самоуправления деградацией 112 и вернуть согласованное значение М 108, причем если копия из ВМ2 не равна М 105, то содержимое счетчика сбоев ERR BM2  110 увеличивается  на единицу, если копия из ВМ3 не равна М 106, то содержимое счетчика сбоев ERR BM3 111 увеличивается  на единицу, если собственное значение из ВМ1 не равно М 104, то содержимое счетчика сбоев ERR BM1 109 увеличивается  на единицу, причем если нет признака деградации в М 107, то вернуть согласованное значение М 108.
Если содержимое счетчиков сбоев ERR BM1 40, ERR BM2 41 или ERR BM3 42 больше восьми, то соответствующая ВМi блокируется  и    содержимое счетчиков блокировки BLK ВМ1 48, BLK ВМ2 49 или BLK ВМ3 50 увеличивается на «1» соответственно.
Алгоритм функционирования таймера синхронизации ММО представлен на фиг. 10.
Функционирование таймера синхронизации ММО 53 осуществляется, если есть данные с двух входов контроллера межмашинного обмена (ММО) 113 и есть тактовый импульс 114, то содержимое счетчика 60 синхронизации ММО RTmmo увеличивается 115 на «1», если есть данные с трех входов контроллера ММО 116, то формируется обобщенный признак синхронизации 117, причем если нет данных с трех входов контроллера ММО и счетчик 60 синхронизации ММО равен регистру 59 предустановки ММО 118, то формируется обобщенный признак синхронизации 117,  если же счетчик 60 синхронизации ММО  не равен регистру 59 предустановки ММО, то осуществляется переход на ожидание тактового импульса 114 и увеличение содержимого счетчика 60 синхронизации ММО 115 на «1».
Согласование значения времени производится также при чтении и изменении значения времени по запросу ПО.
При чтении времени программе ПО выдается согласованное (одинаковое) значение времени во всех ВМ.
При изменении времени производится согласование нового значения, а затем согласованное значение времени устанавливается во всех ВМ.
Синхронное выполнение задач во всех ВМ обеспечивается согласованием вектора запуска и идентификатора при создании задачи, и согласованием идентификатора при каждом запуске и каждой приостановке задачи.
При отработке запроса программы ПО на проведение обмена по МКО производится подготовка информации для передачи в МКО во всех ВМ одинаково.
Непосредственная передача в МКО производится только в одной ВМ (ВМ_вдщ).
Перед запуском передачи производится согласование подготовленной для передачи информации, а после завершения обмена в ВМ_вдщ  результаты обмена и принятая из МКО информация рассылаются из ВМ_вдщ в остальные ВМ.
Задача ПО, инициировавшая проведение обмена, должна получить одинаковые результаты во всех ВМ.
Назначение ВМ_вдщ на МКО производится при инициализации ОПО: в качестве ВМ_вдщ выбирается ВМ с минимальным номером.
Программы ПО могут изменить номер ВМ_вдщ с помощью  специальной функции бортовой операционной системы (БОС).
Механизмы восстановления вычислительного процесса после сбоев и отказов предназначены для изоляции неисправных элементов рабочей конфигурации и выполняемых ими вычислительных процессов с целью нераспространения ошибок и искажений на другие элементы и вычислительные процессы     системы, восстановления прерванных вычислительных процессов, реконфигурации вычислительных средств для изоляции отказавших элементов и замены их запасными, проверки работоспособности подключенных запасных элементов, обеспечивая их необходимой информацией и вовлекая в совместную работу в составе рабочей конфигурации.
Алгоритм выполнения самоуправления деградацией представлен на фиг. 11.
Процедура самоуправления деградацией заключается в том, что каждая BMi составляет список отказавших ВМ 119, для которых счетчик сбоев ERRi превысил лимит, равный 8, согласовывает список 120, выполняя процедуру мажоритирования, если согласованный список не пуст 121, то по счетчикам ERRi согласованно выбирает худшую BM, у которой счетчик  сбоев ERRi (40-43) имеет максимальное значение, из списка 122, причем если у двух ВМ одинаковые значения счетчиков, то выбирает ВМ с наименьшим номером, готовит новую конфигурацию, установив режим деградации, согласованно блокирует выбранную ВМi 123 и изменяет режим на рабочий, включает дежурное питание, настраивает мажоритирование контроллера управления конфигурацией, блокирует все выключенные и неисправные ВМ, назначает ВМi ведущей на МКО в соответствии с конфигурацией, если выбранная ВМi заблокирована 124, то к содержимому счетчика блокировок заблокированной ВМi прибавяет «1» 125, готовит для программного обеспечения извещение о блокировке 126, конец деградации, причем, если выбранная ВМ не заблокирована 124, то готовит для ПО извещение о деградации 127, конец деградации, причем, если согласованный список  пуст 121, то конец деградации.
Алгоритм выполнения самореконфигурации представлен на фиг. 12.
Процедура самореконфигурации заключается в том, что если для реконфигурации выделено  128 времени  больше 10 с , то выполняется  выключение всех лишних ВМ 129 (резервные и неисправные ВМ),  если для реконфигурации выделено 130 времени меньше 60с, то необходимо завершить 134 процедуру, если больше и в текущей конфигурации три ВМ 131, то необходимо завершить 134 процедуру, если в текущей конфигурации меньше трех ВМ 131, то необходимо выбрать 132 включаемую ВМi по минимальному значению счетчика BLKi (48-51) и если нашлась 133 подходящая ВМi (выключенная и исправная или выключенная и имеет минимальное значение счетчика BLKi), то включить 135 BMi, передать 136 необходимую информацию в ОЗУ BMi и выполнить  синхронный и согласованный перезапуск 137 ПО с признаком перезаписи, завершить  процедуру 134, причем если не нашлась  подходящая ВМi, то необходимо завершить 134 процедуру.
Источники информации
[1] Э.М. Мамедли, Р.Я. Самедов, Н.А. Соболев. Метод локализации «дружественных» и «враждебных» неисправностей.// Техническая диагностика. 1992, №  5  , стр. 126 - 138.
.
[2] Авиженис АОтказоустойчивость - свойство, обеспечивающее постоянную работоспособность цифровых систем//ТИИЭР. 1978. Т. 66. № 10. С. 5-25.
[3]  Lala / J /., Alger L.S., Ganthic R.J., Dzwonczyk M.J. A fault tolerant processor to meet rigorous failure requirements // Proc. 7th Dig. Avionics Syst. Conf., 1986. P. 555-562.
[4]. Лобанов А.В.Сбоеустойчивое информационное согласование в четырехмашинной вычислительной системе с идентификацией обнаруженных неисправностей // АиТ, 1992. № 2. С. 171-180.