Рефераты. Разработка отказоустойчивой операционной системы реального времени для вычислительных систем с максимальным рангом отказоустойчивости p> С помощью дополнительного модуля SPOX-MP становится возможной многопроцессорная обработка сигналов. Настройка на конкретную конфигурацию сети процессорных элементов задается в конфигурационном файле, что позволяет не привязываться к конкретной топологии в процессе разработки приложения. SPOX-MP обеспечивает динамическую передачу данных и сообщений по сети процессорных элементов, глобальное пространство имен, а также лавинообразную первоначальную загрузку сети.

Таким образом ОСРВ SPOX имеет необходимые механизмы для создания отказоустойчивой распределенной операционной системы реального времени, концепция построения которой описана в главе 2.

4.3 Аппаратно-зависимые компоненты ОСРВ

Модули маршрутизации, реконфигурации, голосования реализованы как аппаратно-независимые процедуры операционной системы. Модули оперируют данными, заданными в конфигурационном файле, что не привязывает их к конкретной топологии. Реализованные методом структурного программирования на языке Си, модули могут быть перенесены на большинство платформ, включая и TMS320C30.

Модуль коммуникации оперирует высокоуровневыми функциями обмена, опирающимися на драйвера операционной системы. Обмен данными осуществляется через последовательные порты с помощью встроенных механизмов передачи маркера между соседними процессорными элементами.

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

4.3.1. Модуль диагностики ПЭ

Модуль диагностики, реализованный в виде набора функций, возвращающих код ошибки, призван решать следующие задачи:
1. На этапе инициализации:
. Тестирование регистров общего назначения процессора;
. Проверка правильности выполнения арифметических, логических и др. операций;
. Занесение в соответствующую таблицу контрольных сумм неизменных во время выполнения программ областей памяти (исполняемый код, константы), размещение которых в памяти проводится на этапе сборки рабочего кода в соответствии с картой памяти;
2. Во время рабочего цикла, тестирование может проводиться как с прерыванием вычислений функциональных задач, так и непосредственно во время их выполнения, если предусмотрено процессорное время на выполнение этих тестов. При этом может осуществляться:
. Тестирование регистров общего назначение;
. Проверка правильности выполнения арифметических, логических и др. операций;
. Вычисление контрольных сумм указанных областей памяти и сопоставление их с вычисленными на этапе инициализации.

4.3.1.1. Тестирование регистров общего назначения

Этот тест выполняется первым для проверки регистров повышенной точности (R0-R7) и вспомогательных регистров (АR0-АR7). Тестирование сводится к проверке регистров на запись/чтение из памяти/в память и проверке правильности перемещения данных из регистра в регистр. Тест разбивается на два этапа:
. Проверка вспомогательных регистров (целочисленные значения). Проверка реализована по следующему алгоритму:

1. Инициализировать две целочисленные переменные начальным и ожидаемым значением тестирования;

2. Загрузить начальное значение в регистры (АR0-АR7).

3. Произвести операцию сложения так, что в каждом последующем регистре оказалась сумма предыдущих.

4. Запись в стек модифицированных регистров.

5. Произвести операцию сдвига влево содержимого стека на N разрядов в соответствии с номером записанного регистра.

6. Записать данные из стека в регистры.

7. Произвести операцию сложения так, что в каждом последующем регистре оказалась сумма предыдущих.

8. Сравнить содержимое регистра АR7 с ожидаемым, заранее рассчитанным значением.
. Проверка регистров повышенной точности (значения с плавающей точкой) проводится аналогично.

Функция register_test реализована на языке Ассемблер в соответствии с архитектурой и системой команд TMS320C30.

4.3.1.2. Проверка правильности выполнения арифметических, логических и др. операций

Данный тест разделен на три различных модуля. Вместе они проверяют следующие числовые операции:

1. Логические, сдвиг, циклический сдвиг.

2. Операции с плавающей запятой, выполненные над одним значением и соответствующие параллельные команды.

3. Операции с плавающей запятой и целочисленные, выполняющие сложение, вычитание, и умножение и соответствующие параллельные команды.

В тестах проверяются команды, перечисленные в Таблице 4.1.

Таблица 4.1

Перечень тестируемых команд

| Тест |Команды |
|1 |2 |
|Тест 1|ROL – циклический сдвиг влево, |
| |ROLC – циклический сдвиг влево через перенос, |
| |ROR – циклический сдвиг вправо, |
| |RORC – циклический сдвиг вправо через перенос, |
| |AND3 || STI – поразрядное логическое И с сохранением, |
| |LSH3 || STI – логический сдвиг с сохранением, |
| |NOT || STI – дополнение с сохранением, |
| |OR3 || STI – поразрядное логическое ИЛИ с сохранением, |
| |XOR3 || STI – поразрядное исключающее ИЛИ с сохранением, |
| |ABSI || STI – абсолютное значение целого с сохранением, |
| |NEGI || STI – отрицание целого с сохранением, |
| |ASH3 || STI – арифметический сдвиг с сохранением, |
|1 |2 |
| |NOT – поразрядное логическое дополнение, |
| |ABSI – абсолютное значение целого числа, |
| |NEGB – отрицание целого с заемом, |
| |ASH – арифметический сдвиг, |
| |NEGI – отрицание целого, |
| |TSTB3 – проверка битовых полей, |
| |CMPI3 – сравнение целых, |
| |STI || STI – сохранение целых, |
| |LDI || LDI – загрузка целых, |
| |XOR – поразрядное исключающее ИЛИ. |
|Тест 2|STF – сохранить значение с плавающей точкой, |
| |LDF – загрузить значение с плавающей точкой, |
| |LDE – загрузка значения экспоненты с плавающей точкой, |
| |LDM – загрузка значения мантиссы с плавающей точкой, |
| |FIX – преобразование в целое, |
| |FLOAT – преобразование в значение с плавающей точкой, |
| |ABSF – абсолютное значение числа с плавающей точкой, |
| |NEGF – отрицание значения с плавающей точкой, |
| |NORM – нормирование значения с плавающей точкой, |
| |RND – округление значения с плавающей точкой, |
| |POPF – выталкивание значения с плавающей точкой из стека, |
| |PUSHF – загрузка в стек значения с плавающей точкой, |
| |ABSF || STF – абсолютное значение числа с плавающей точкой с |
| |сохранением значения с плавающей точкой, |
| |FIX || STI – преобразование в целое с сохранением, |
| |FLOAT || STF – преобразование в значение с плавающей точкой с |
| |сохранением значения с плавающей точкой, |
| |PUSH – загрузка целого в стек, |
| |POP – выталкивание целого из стека, |
| |LDF || STF – загрузить значение с плавающей точкой с |
| |сохранением значения с плавающей точкой, |
|1 |2 |
| |NEGF || STF – отрицание значения с плавающей точкой с |
| |сохранением значения с плавающей точкой, |
| |STF || STF – сохранения значений с плавающей точкой, |
| |LDF || LDF – загрузка значений с плавающей точкой. |
|Тест 3|SUBF3 – вычитание значений с плавающей точкой, |
| |SUBF3 || STF – значения с плавающей точкой с сохранением |
| |значения с плавающей точкой, |
| |SUBB – вычитание целых с заемом, |
| |SUBC – условное вычитание целых, |
| |SUBF – вычитание значений с плавающей точкой, |
| |SUBRB – вычитание целых в обратном порядке с заемом, |
| |SUBRF - вычитание с плавающей точкой в обратном порядке, |
| |SUBI3 || STI – вычитание целых с сохранением, |
| |ADDC – сложение целых с переносом, |
| |ADDF – сложение значений с плавающей точкой, |
| |ADDF3 – сложение значений с плавающей точкой, |
| |ADDF3 || STF – значений с плавающей точкой с сохранением |
| |значения с плавающей точкой, |
| |ADDI3 || STI – сложение целых с сохранением, |
| |MPYF- умножение значений с плавающей точкой, |
| |MPYF3 – умножение значений с плавающей точкой, |
| |MPYI – умножение целых, |
| |MPYF3 || STF – умножение значений с плавающей точкой с |
| |сохранением значения с плавающей точкой, |
| |MPYF3 || ADDF3 – умножение и сложение с плавающей точкой, |
| |MPYF3 || SUBF3 умножение и вычитание с плавающей точкой, |
| |MPYI3 || STI – умножение целых с сохранением, |
| |MPYI3 || ADDI3 – умножение и сложение целых, |
| |MPYI3 || SUBI3 – умножение и вычитание целых, |
| |CMPF – сравнение значений с плавающей точкой, |
| |CMPF3 - сравнение значений с плавающей точкой. |

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

4.3.1.3. Проверка содержимого памяти

Данный тест формирует по одному из самых простых алгоритмов так называемый CRC (Cyclic Redundancy Check) блока памяти, указанный в параметрах теста. Правильный (ожидаемый) CRC подтверждает правильность данных (кода) в указанной, неизменной (nonvolatile) в процессе исполнения задач области памяти.

Формирование CRC происходит по следующему алгоритму:
1. Инициализация начального значения CRC нулем; маска контрольных битов выбирается произвольно, например - 80200003(Н).
2. Наложить маску на CRC и суммировать по модулю два значения контрольных битов.
3. Сдвинуть CRC влево на 1 разряд и прибавить результат шага 2.
4. Сложить результат с очередным словом блока тестируемых данных.
5. Если блок закончился шаг 6, иначе шаг 2.
6. Сравнить полученный CRC с ожидаемым.

Ожидаемые значения могут быть получены на этапе инициализации. Функция crc_test реализована на языке Ассемблер в соответствии с архитектурой и системой команд TMS320C30.

5. Перспективы развития специализированных отказоустойчивых ОСРВ

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

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

Дальнейшее наращивание функций ОСРВ может вестись в нескольких направлениях:
1. Голосование, проводимое на уровне элементарной проверки, в общем случае может не удовлетворять условиям функционирования управляющих систем вследствие погрешностей и возможного отличия функциональной информации, поступающей на обработку в ФЗ разных ПЭ. Поэтому при голосовании, особенно на последних стадиях деградации целесообразно применять помехоустойчивое оценивание, например методом наименьших квадратов (МНК).

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.