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
го, работа в реальном масштабе времени означает, что процедуры обнаружения ошибок и предотвращения их распространения по цепочке управления должны предприниматься в короткие сроки.
Система контроля представляет собой совокупность программных и аппаратных средств, предназначенных для поддержания необходимого состояния программного продукта. Контроль ошибок при работе компьютерной системы может осуществляться программным способом. При программном контроле корректность функционирования системы устанавливается с помощью специально разработанного программного обеспечения, которое может осуществлять программно-логический или тестовый контроль [1, 2]. Реализация программно-логического контроля предполагает включение в основную программу дополнительных операций, формирующих по особым правилам избыточную информацию, позволяющую обнаруживать и, возможно, исправлять ошибки. Наиболее очевидным примером программно-логического контроля является двукратное выполнение фрагмента кода с одинаковыми начальными условиями и последующим сравнением получающихся результатов. Данный метод позволяет обнаруживать сбои, приводящие к искажению обрабатываемой информации.
В случае тестового контроля работоспособность компьютерной системы устанавливается путём выполнения специальной тестовой программы, для которой известен правильный результат. Вывод о неработоспособности программного обеспечения делается в случае несовпадения этого результата с фактически полученным в результате расчёта по тестовой программе.
В зависимости от назначения различают наладочные, проверочные и диагностические тесты. Наладочные тесты обеспечивают проверку работоспособности отдельных элементов программной системы в процессе её наладки на начальном этапе. Проверочные тесты используются при периодической проверке работоспособности системы и обнаружения неисправностей в процессе эксплуатации. Диагностические тесты применяются при обнаружении ошибки и используются для локализации места неисправности.
Аппаратные средства контроля представляют собой дополнительное оборудование, позволяющее производить проверку правильности функционирования программного обеспечения без снижения её быстродействия, независимо от конкретного программного обеспечения, работающего в настоящий момент. Аппаратные средства контроля предпочтительнее программных, особенно в условиях постоянного совершенствования параметров аппаратуры и удешевления её стоимости.
Процедуры контроля и диагностики достаточно тесно связаны между собой. Формально целью контроля является обнаружение факта ошибки в работе системы (или подтверждение её работоспособности), а целью диагностики является установление причины возникновения ошибки после
того, как факт ошибки был обнаружен.
Процесс диагностики при этом можно разделить на отдельные части, называемые элементарными проверками. Каждая элементарная проверка представляет собой контрольную операцию. Эти операции проводятся в такой последовательности, которая позволяет установить причину нарушения работоспособности.
Как правило, основной процент ошибок, возникающих в программном обеспечении ЭВМ, составляют одиночные ошибки, т. е. сбои, не требующие реконфигурирования аппаратуры системы, а лишь предполагающие коррекцию обнаруженной ошибки для предотвращения её распространения на последующие процедуры функционирования системы.
Надежность программного обеспечения (ПО) это свойство ПО выполнять свои функции, сохранять заданные характеристики в установленных пределах при определенных условиях эксплуатации.
Надежность ПО определяется его безотказностью и восстанавливаемостью. Безотказность ПО - это его свойство сохранять работоспособность при использовании в процессе обработки информации на ЭВМ. Безотказность ПО можно определить вероятностью его работы без отказов при определенных условиях внешней среды в течение заданного периода наблюдения. В данном определении под отказом программы или системы программного обеспечения понимается недопустимое отклонение характеристик процесса функционирования программы от требуемых [2]. Определенные условия внешней среды понимаются как совокупность входных данных и состояния вычислительной системы. Заданный период наблюдений соответствует, как правило, времени, необходимому для (многократного) выполнения решаемой на машине задачи.
Безотказность ПО можно охарактеризовать средним временем между возникновением отказов в функционировании программы. При этом предполагается, что сбои аппаратных средств отсутствуют.
С точки зрения надежности принципиальное отличие ПО от аппаратуры состоит в том, что программы не изнашиваются и выход из строя из-за поломки невозможен. Поэтому характеристики ПО зависят от тщательности разработки и отладки и от условий хранения носителей с программными продуктами.
Безотказность ПО определяется его корректностью и, следовательно, целиком зависит от наличия в нем ошибок, внесенных на этапах создания, хранения, копирования, в то время как безотказность аппаратуры определяется в основном случайными отказами, зависящими от изменений параметров аппаратуры во время эксплуатации.
Надежность программного обеспечения и аппаратуры существенно по-разному зависят от входных данных и времени функционирования системы. Обрабатываемые данные, как правило, на аппаратуру не влияют (хотя, например, более интенсивная загрузка процессора приводит к увеличе-
нию потребляемой мощности и его дополнительному нагреву, что, как следствие, в некоторых ситуациях может послужить причиной повышения частоты сбоев).
В то же время появление ошибок в программном обеспечении связано с тем, что в некоторые моменты времени на обработку поступают данные, которые не входили в набор данных при отладке и которые программа не в состоянии корректно обработать. Таким образом, входные данные в значительной мере влияют на функционирование ПО.
Рассмотрим типичные кривые надежности аппаратуры и ПО.
Время
Зависимость интенсивности отказов от времени эксплуатации аппаратных (1) и программных (2) средств
Интенсивность отказов аппаратуры зависит от времени эксплуатации. В начале периода функционирования на этапе обнаружения и исправления ошибок проектирования и производственных дефектов интенсивность отказов аппаратуры уменьшается со временем. Затем в течение большей части срока службы она остается примерно постоянной. В конце срока службы интенсивность потока отказов значительно увеличивается вследствие износа аппаратуры.
Зависимость надежности ПО от времени косвенная. В действительности частота проявления ошибок определяется только входными данными. Показанное на рисунке снижение интенсивности отказов ПО с течением времени является следствием того, что в процессе эксплуатации обнаруживаются и устраняются скрытые ошибки ПО.
Важной характеристикой надежности ПО является его восстанавливаемость, которая определяется затратами времени и труда на устранение отказа из-за ошибки в программе и его последствий. Восстановление после отказа может заключаться в корректировке и восстановлении текста программы, исправлении данных, внесении изменений в организацию вычис-
лительного процесса. Последняя мера бывает необходима, например, при работе ЭВМ в реальном масштабе времени. Восстанавливаемость программы может быть оценена средней продолжительностью устранения ошибки в программе и восстановления ее работоспособности.
Восстанавливаемость ПО зависит от многих факторов, в т.ч. от сложности структуры комплекса программ, структурированности самих программ, алгоритмического языка, качества документации и т.п.
Можно также говорить об устойчивости функционирования ПО, понимая под этим его способность ограничивать последствия собственных ошибок и неблагоприятных воздействий внешней среды или противостоять им.
Устойчивость ПО может быть повышена с помощью различных форм структурной, информационной и временной избыточности, позволяющих иметь дублирующие модули программ, альтернативные программы для решения одних и тех же задач, осуществлять контроль за процессом исполнения программ (за зацикливанием, возникновением блокировок, зависаний, перегрузками по пропускной способности).
В качестве причин отказов программного обеспечения можно указать следующие:
ошибки, скрытые в самой программе;
искажения входной информации, подлежащей обработке;
неверные действия пользователя;
неисправность аппаратуры, на которой реализуется вычислительный процесс.
Скрытые ошибки программы: специфика создания сложных программных комплексов состоит в том, что в процессе их отладки невозможно учесть все ошибки. Скрытые, не выявленные, ошибки проявляются при определенных сочетаниях входных данных.
Можно выделить следующие основные классы ошибок в программах:
- Ошибки вычислений - в исходных математических выражениях или в неверном их программировании. Примеры: неверное преобразование типов переменных, неверный знак операции, ошибки вычисления индексов, переполнение или потеря значимости при вычислениях.
- Логические ошибки - искажение алгоритма решения задач. Примеры: неверные коды условий, передача управления, изменение параметров цикла и т.п.
- Ошибки ввода-вывода - связаны с управлением вводом-выводом, формированием входных записей, определением размера записей и т.п. Пример: неправильный формат вводы (вывода), отсутствие признака конца файла и т.п.
- Ошибки манипулирования данными - неверно определенное число элементов данных, неверные начальные значения, ошибки указания
длины операндов, имен переменных и т.п.
- Ошибки совместимости - отсутствие вызываемой программы, несовпадение аргументов и результатов вычислений в вызываемой и вызывающей программах, отсутствие разгрузки РОН перед использованием в вызываемой программе.
Искажения входной информации, подлежащей обработке: искажения данных на первичных носителях информации; сбои и отказы в аппаратуре ввода с первичных носителей; шумы каналов связи;
ошибки пользователей при подготовке исходной информации. Последствия и признаки появления ошибок в ПО. В зависимости от степени серьезности последствий ошибок в программе отклонения в выполнении программной заданных функций можно разделить следующим образом:
1) полное прекращение выполнения функций на неопределенное
время;
2) кратковременное нарушение хода вычислительного процесса. Степень серьезности последствий ошибок в программе может быть
оценена соотношением между длительностью восстановительных работ, которые необходимо произвести после отказа в программе, и динамическими характеристиками управляемых объектов (частота решения задачи, инерционность объектов и т.п.).
Наиболее типичными симптомами появления ошибок являются: преждевременное окончание программы; увеличение времени выполнения программы; зацикливание;
потеря или искажение накопленных данных; нарушение порядка вызова отдельных программ. Для устранения ошибок необходимо:
предусмотреть специальные средства диагностики кодов завершений, в т.ч. кодов самого пользователя; ввести в ПО контрольные точки;
обеспечить возможность рестарта с контрольных точек.
Список литературы
1. Ершов А.П. Введение в теоретическое программирование: беседы о методе. М.: Наука, 1977. 288 с.
2. Котов В.Е., Сабельфельд В.К. Теория схем программ. М.: Наука, 1991. 246 с.
Ивутин Алексей Николаевич, канд. техн. наук, доц., alexey.ivutin@,gmail.com, Россия, Тула, Тульский государственный университет,
Ларкин Евгений Васильевич, д-р техн. наук, проф., зав. кафедрой, elar-kin@,mail.ru, Россия, Тула, Тульский государственный университет
SYSTEMS OF SOFTWARE CONTROL AND DIAGNOSTICS A.N. Ivutin, E.V. Larkin
The systems of software control and diagnostics are considered. The classifications of software errors are offered. The symptoms and aftereffects of errors are showed.
Key words: failures, software, reliability, running time.
Ivutin Alexey Nicolaevich, candidate of technical science, docent, alex-ey. ivutin@,gmail. com, Russia, Tula, Tula State University,
Larkin Evgeniy Vasilevich, doctor of technical science, professor, manager of department, elarkin@,mail. ru, Russia, Tula, Tula State University
УДК 004.042
ОЦЕНКА ЭФФЕКТИВНОСТИ РЕАЛИЗАЦИИ АЛГОРИТМА МЕТОДА МОНТЕ-КАРЛО НА СОВРЕМЕННЫХ ГРАФИЧЕСКИХ
УСКОРИТЕЛЯХ
А.Н. Ивутин, И.А. Страхов
Произведена экспериментальная проверка зависимости времени выполнения алгоритма Монте-Карло для различных конфигураций вычислительного ядра графического процессора. Проанализировано влияние потоковых и скалярных процессоров на время выполнения алгоритма.
Ключевые слова: GPGPU, GPU, CUDA, NVidia, метод Монте-Карло, вычислительное ядро, GRID, конфигурация.
Увеличение производительности вычислительной техники в последние десятилетия осуществлялось в основном за счет повышения тактовой частоты центрального процессора. Данный способ всегда был и остается наиболее надежным из всех возможных. Однако ввиду технических ограничений при изготовлении интегральных схем уже невозможно рассчитывать на рост частоты работы процессора. Применение многопроцессорных систем также не получило широкого распространения, так как требует сложных и дорогостоящих многопроцессорных материнских плат. Поэтому эволюция вычислительной техники пошла по другому пути - развитию идеи многоядерности процессоров. Принцип увеличения