Разработка программных средств моделирования систем передачи данных с использованием помехоустойчивого кодирования

УДК 621.391:519.72

РАЗРАБОТКА ПРОГРАММНЫХ СРЕДСТВ МОДЕЛИРОВАНИЯ

СИСТЕМ ПЕРЕДАЧИ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ ПОМЕХОУСТОЙЧИВОГО КОДИРОВАНИЯ

Д. С. Демидов

Выполнен анализ существующих программных средств для моделирования систем передачи данных. Рассмотрены и проанализированы подходы для ускорения программ моделирования систем передачи данных и описаны особенности создания модели, включающей алгоритмы помехоустойчивого кодирования.

Ключевые слова: передача данных, помехоустойчивое кодирование, ОрепСЬ, вычислительные кластеры, компьютерное моделирование.

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

При передаче информации по каналам под действием различного рода помех и шумов могут появиться искажения в сообщениях. Это является недопустимым для многих систем с высокими требованиями к качеству передаваемой информации. Так требования к вероятности появления ошибки в переданном сообщении в подобных системах может достигать 10-12 и меньше. Поэтому широкое распространение получили средства помехоустойчивого кодирования, использование которых позволяет снизить долю ошибок в принятых сообщениях до приемлемой.

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

Исследование помехоустойчивых алгоритмов существенно усложняется почти полным отсутствием доступных программных продуктов, позволяющих проводить их комплексный анализ. Существующее ПО (Matlab и др.) оказывается очень дорогим или сложным для освоения. Это вынуждает разработчиков создавать собственные программные средства моделирования подобных алгоритмов с нуля. Очевидно, что данный подход обладает рядом недостатков, главный из которых заключается в значительном времени разработки моделирующей программы.

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

Схема системы, работу которой должно моделировать описанное приложение, представлена на рис. 1 [1].

Рис. 1. Схема системы передачи цифровой информации

Модель системы передачи цифровой информации состоит из семи основных блоков: источника; кодера; модулятора; канала с шумом; демодулятора; декодера; приемника.

Источник генерирует сообщение в виде двоичных символов. Обычно предполагается, что «нули» и «единицы» появляются независимо друг от друга и с одинаковой вероятностью.

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

Закодированные данные с выхода кодера поступают на модулятор, который с помощью какого-либо метода модуляции реализует их отображение в аналоговый сигнал.

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

Далее демодулятор преобразует принятый сигнал в последователь-

ность чисел, представляющих оценку передаваемых данных. После этого детектор квантует выход демодулятора на Q уровней. В случае если Q=M, то говорят, что детектор выносит жесткие решения, если же Q>M, то детектор выносит мягкие решения.

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

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

Подобное приложение должно удовлетворять следующим требованиям:

возможности настройки параметров компонентов системы;

возможности динамического подключения компонентов системы передачи данных;

получению статистики моделирования;

представлению результатов моделирования в удобном для дальнейшего анализа виде.

В качестве языка разработки был выбран C#, который полностью реализует идеи объектно-ориентированного программирования. Данный язык имеет ряд отличительных особенностей и преимуществ, использование которых значительно упрощает реализацию многих решений, имеющих место в данном приложении, по сравнению с другими языками программирования.

Также платформа .Net предоставляет обширные функциональные и постоянно расширяемые библиотеки для работы с графическим интерфейсом, файловой системой и локальной сетью, что должно положительно сказаться на функционале и возможности расширения приложения в будущем.

Представленную разработку отличает возможность динамического подключения компонентов системы передачи данных, что позволит со временем увеличивать число разнообразных алгоритмов работы блоков системы передачи данных, доступных для исследования, без изменения уже разработанных средств. Поэтому в процессе разработки было решено реализовать динамическое подключение к основной программе новых компонентов системы передачи данных через библиотеки классов (*.dll).

Общая схема архитектуры приложения представлена на рис. 2.

Рис. 2. Общая схема архитектуры приложения

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

Второй сложностью на пути исследований являются требующиеся при исследовании систем передачи данных огромные объемы экспериментов. В процессе реализации тестовых моделей были получены результаты моделирования, показывающие, что выполнение всех вычислений только средствами CPU (central processing unit - центральное обрабатывающее устройство) среднестатистического персонального компьютера не может предоставить достаточных возможностей для проведения насколько-то эффективного и наглядного исследования, результаты которого могут говорить об эффективности алгоритма. Так даже при 100 % загрузке CPU не получалось достичь скорости моделирования больше, чем 2000 кбит/с, даже для алгоритмически простого и вычислительно не сложного метода коррекции ошибок, основанного на коде Хэмминга. При этом, чтобы сде-

31

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

в 10-12, требуется смоделировать передачу порядка 1014 бит данных. Таким образом при скорости 2000 кбит/с потребуется как минимум 5 *106 секунд, что эквивалентно 57 дням только для одного эксперимента. При этом нужно понимать, что одного эксперимента может быть недостаточно, и процесс моделирования может носить итерационный характер.

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

Основной причиной такой медленной работы является то, что CPU - это универсальное вычислительное устройство, нацеленное на выполнение широкого круга задач и не оптимизированное для выполнения операций, характерных для работы кодера и декодера помехоустойчивых кодов, самыми распространёнными из которых являются умножение векторов на матрицу, поиск минимума/максимума в векторе и т.д.

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

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

Ускорение моделирования на персональных компьютерах возможно путем переноса основных вычислительных затрат на GPU (graphics processing unit - графический процессор), которые оптимизированы для нужных нам вычислений. Вычисления с GPU предлагают беспрецедентную производительность приложений благодаря тому, что GPU обрабатывает части приложения, требующие большой вычислительной мощности, при этом остальная часть приложения выполняется на CPU.

Графические процессоры по сложности абсолютно не уступают центральным процессорам, но из-за своей узкой специализации в состоянии более эффективно справляться с задачей обработки графики, построением изображения с последующим выводом его на монитор. Если говорить о параметрах, то они у графических процессоров весьма схожи с центральными процессорами. Это уже известные всем параметры, такие, как микроархитектура процессора, тактовая частота работы ядра, техпроцесс производства. Но у них имеются и довольно специфические характеристики. Например, немаловажная характеристика графического процессора - это количество пиксельных конвейеров. Эта характеристика определяет количество обрабатываемых пикселей за один такт работы GPU. Количество данных конвейеров может различаться. Пиксельный конвейер занимается тем, что просчитывает каждый последующий пиксель очередного изображения с учётом его особенностей. Для ускорения процесса просчёта используется несколько параллельно работающих конвейеров, которые просчитывают разные пиксели одного и того же изображения [2]. Также количество пиксельных конвейеров влияет на немаловажный параметр - скорость заполнения видеокарты. Скорость заполнения видеокарты можно рассчитать, умножив частоту ядра на количество конвейеров. Давайте рассчитаем скорость заполнения, к примеру, для видеокарты на базе процессора NVidia GeForce 780Ti. Частота ядра GPU этого чипа составляет 1008 МГц, а количество пиксельных конвейеров - 240. Нехитрыми математическими вычислениями (1008240) мы приходим к выводу, что скорость заполнения будет приблизительно равна 250 Гпиксель/с. Такой скорости, даже с учетом накладных расходов на организацию процесса вычислений и получение результатов, должно хватить для моделирования системы передачи данных.

На данный момент самый эффективный функционал по использованию ресурсов GPU предоставляет библиотека OpenCL. OpenCL обеспечивает параллелизм на уровне инструкций и на уровне данных. В своей работе OpenCL использует CPU, GPU, другие процессоры, доступные на персональном компьютере, предоставляя разработчику доступ к максимальным вычислительным мощностям, доступным на персональном компьютере. OpenCL является полностью открытым стандартом, его использование не облагается лицензионными отчислениями, что также является важным фактором [3].

Дополнительный путь ускорения процесса моделирования - использование вычислительных кластеров, т. е. группы компьютеров, которые будут объединены по локальной сети. Причем вычислительный кластер может состоять из любых видов вычислительных единиц. Это могут быть как персональные компьютеры или ноутбуки, так и виртуальные ма-

33

шины (рис. 3). Единственным условием является объединение их в локальную сеть.

Рис. 3. Вычислительный кластер

Для каждого кластера имеется выделенный компьютер - головная машина. На этой машине будет установлено программное обеспечение, которое управляет запуском программ моделирования на кластере. Вычислительные процессы пользователей запускаются на вычислительных узлах, причем они распределяются так, что на каждый процессор приходится не более одного вычислительного процесса [4].

Пользователи будут иметь доступ на головную машину кластера, а входить на узлы кластера для них нет необходимости.

Таким образом, в процессе исследования была изучена система передачи данных, разработана гибкая модульная архитектура модели системы моделирования данных. Найдены «узкие места» модели системы передачи данных, ограничивающие увеличение скорости моделирования, выявлены способы ускорения моделирования через использование дополнительных ресурсов персонального компьютера, таких, как GPU. Найдены способы увеличения скорости моделирования через задействование вычислительных мощностей на других персональных компьютерах, объединённых в локальную сеть.

Описанные подходы должны позволить увеличить скорость моделирования системы передачи данных приблизительно на два порядка.

Работа выполнена при поддержке РФФИ (грант №13-07-00391) и гранта Президента РФ (грант МД-639.2014.9).

Список литературы

1. Золотарев В.В., Овечкин Г.В. Помехоустойчивое кодирование. Методы и алгоритмы: справочник. М.: Горячая линия - Телеком, 2004. 126 с.

2. Графический процессор (особенности функционирования и структуры) [сайт]. [2014]. URL http://we-it.net/ (дата обращения: 11.09.2014).

3. The OpenCL Specification. Version: 2.0. Document Revision: 22 / Khronos OpenCL Working Group. Editor: Aaftab Munshi, 2014. 483 p.

4. Суперкомпьютерный комплекс [сайт]. [2014]. URL https://parallel.ru (дата обращения: 12.09.2014).

Демидов Дмитрий Сергеевич, асп., dmitri-demidiv@yandex.ru, Россия, Рязань, Рязанский государственный радиотехнический университет

DEVELOPMENT OF SOFTWARE FOR MODELING COMMUNICA TION SYSTEMS WITH ERROR-CORRECTING CODING

D.S. Demidov

The analysis of existing software tools for modeling communication systems. Reviewed and analyzed approaches to accelerate simulation software systems and data describedfeatures of a model include error-correcting coding algorithms.

Key words: data transmission, error control coding, OpenCL, computing clusters, computer simulation.

Dmitry Sergeevich Demidov, postgraduate, dmitri-demidiv@yandex. ru, Russia, Ryazan, Ryazan State Radio-Engineering University

УДК 004.413.5

СИСТЕМЫ КОНТРОЛЯ И ДИАГНОСТИКИ ПРОГРАММНОГО

ОБЕСПЕЧЕНИЯ

А.Н. Ивутин, Е.В. Ларкин

Рассмотрены системы контроля и диагностики программного обеспечения. Произведена классификация ошибок. Показаны признаки и последствия проявления ошибок в ПО.

Ключевые слова: отказы, программное обеспечение, надежность, время эксплуатации

Проблема контроля программного обеспечения в кибернетических структурах РЖД является актуальной ввиду возрастания цены ошибки, поскольку современные системы управления интегрированы непосредственно в технологический процесс, так что сбой или отказ в их работе может привести к существенным материальным или людским потерям. Кроме то-

35