научная статья по теме РАСШИРЯЕМАЯ СРЕДА ГЕНЕРАЦИИ ТЕСТОВЫХ ПРОГРАММ ДЛЯ МИКРОПРОЦЕССОРОВ Математика

Текст научной статьи на тему «РАСШИРЯЕМАЯ СРЕДА ГЕНЕРАЦИИ ТЕСТОВЫХ ПРОГРАММ ДЛЯ МИКРОПРОЦЕССОРОВ»

ПРОГРАММИРОВАНИЕ, 2014, No 1, с. 3-14

~ ТЕСТИРОВАНИЕ И ВЕРИФИКАЦИЯ ПРОГРАММ И СИСТЕМ

У л :

РАСШИРЯЕМАЯ СРЕДА ГЕНЕРАЦИИ ТЕСТОВЫХ ПРОГРАММ ДЛЯ МИКРОПРОЦЕССОРОВ *

© 2014 г. A.C. Камкин, Т.И. Сергеева, С.А. Смолов, А.Д. Татарников,

М.М. Чупилко

Институт системного программирования РАН 109004 Москва, ул. А. Солженицына, 25 E-mail: {kamkin, leonsia,ssedai, andrewt, chupilko} @ispras. ru Поступила в редакцию 10.08.2013

Создание тестовых программ и анализ результатов их выполнения - основной подход к функциональной верификации микропроцессоров на системном уровне. Имеется множество методов автоматизации разработки тестовых программ, начиная от генерации случайного кода и заканчивая нацеленным построением тестов на основе моделей, однако панацеи не существует: на практике применяются комбинации различных техник, дополняющих друг друга. К сожалению, в настоящее время нет решения, позволяющего интегрировать имеющиеся методы генерации тестовых программ в единую среду. Для верификации микропроцессоров инженеры вынуждены использовать большое число разнообразных генераторов тестов, что приводит к ряду трудностей: (1) необходимость обеспечения согласованности конфигураций инструментов (в каждом из них задейству-ется свое описание целевого микропроцессора, в результате чего часть информации дублируется); (2) необходимость разработки вспомогательных утилит для интеграции инструментов друг с другом (разные средства имеют разные интерфейсы и используют разные форматы данных). В статье описывается концепция расширяемой среды генерации тестовых программ для микропроцессоров: среда предоставляет единую методологию создания генераторов тестовых программ, поддерживает распространенные методы генерации тестов и допускает расширение новыми средствами тестирования. Предложенная концепция была частично реализована в системе MicroTESK (Microprocessor TEsting and Specification Kit).

1. ВВЕДЕНИЕ

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

* Работа частично поддержана Министерством Образования и Науки РФ (соглашение №8232 от 06/08/2012).

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

К настоящему моменту был предложен ряд методов автоматизированной генерации тестовых программ. Все эти методы можно разбить на следующие виды: (1) случайная генерация (построение псевдослучайных программ) [3];

(2) комбинаторная генерация (систематический перебор программ ограниченной длины) [2];

(3) генерация на основе шаблонов (построение программ по высокоуровневому описанию те-

стовых сценариев) [4]; (4) генерация на основе моделей (построение программ, покрывающих определенный класс ситуаций в модели микропроцессора) [5]. Понятно, что универсального метода, применимого для решения всех задач тестирования, не существует: на практике разные подходы используются совместно, дополняя и усиливая друг друга. Как правило, общая функциональность микропроцессора проверяется на случайных тестах, а для проверки наиболее важных модулей и подсистем используются методы на основе моделей.

К сожалению, в настоящее время нет среды, которая смогла бы объединить различные методы генерации тестовых программ для микропроцессоров. Инженеры вынуждены использовать большое число инструментов с различными форматами входных и выходных данных: возникает проблема их интеграции и поддержки согласованности их конфигураций. Если для выполнения независимых работ (например, для создания нескольких тестовых программ разного вида) можно без проблем использовать разные инструменты, то для решения одной сложной задачи с помощью нескольких средств (например, для построения тестовой программы, состоящей из частей разного вида) может потребоваться нетривиальная схема их интеграции. Кроме того, разные инструменты используют разные, несовместимые друг с другом описания микропроцессора и тестовых сценариев, в результате чего одни и те же объекты определяются несколько раз, усложняя поддержку генераторов тестов.

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

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

Оставшаяся часть статьи организована следующим образом. В разделе 2 делается обзор существующих методов и инструментов генерации тестовых программ. В разделе 3 проводится анализ описанных подходов и определяется концепция расширяемой среды генерации тестовых программ. В разделе 4 описывается архитектура среды и дается общее представление о ее главных компонентах: среде моделирования и среде тестирования. В разделе 5 рассматриваются среда моделирования и ее составляющие: транслятор и библиотека моделирования. В разделе 6 рассматривается среда тестирования и ее составляющие: обработчик тестовых шаблонов, библиотека тестирования и механизм разрешения ограничений. В разделе 7 резюмируются результаты работы и указываются возможные направления дальнейших исследований.

2. МЕТОДЫ ГЕНЕРАЦИИ ТЕСТОВЫХ ПРОГРАММ

Существует множество способов создания тестовых программ, которые можно разделить на два больших класса: (1) ручная разработка и (2) автоматическая генерация. В настоящее время ручная разработка тестов все применяется для тестирования сложно формализуемых и маловероятных ситуаций в поведении микропроцессоров, но для систематической верификации микропроцессоров она используется крайне редко. Что касается автоматизированных способов генерации, они могут быть разбиты на следующие виды: (1) случайная генерация, (2) комбинаторная генерация, (3) генерация на основе шаблонов и (4) генерация на основе моделей.

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

типа является RAVEN (Random Architecture Verification Engine), разработанный компанией Obsidian Software (приобретенной корпорацией ARM). При построении тестовых программ инструмент не только использует случайную генерацию кода, но и принимает во внимание распространенные ошибки проектирования. Инструмент RAVEN построен на базе заранее разработанных генераторов тестов, но при этом допускает возможность расширения с помощью пользовательских компонентов [3]. К сожалению, ввиду недостатка общедоступной информации, детали реализации инструмента неясны.

Другой подход к созданию тестовых программ - это комбинаторная генерация. Анализ ошибок в микропроцессорах показывает, что многие из них могут быть обнаружены с помощью небольших тестовых примеров (состоящими из 2-5 инструкций). Таким образом, имеет смысл систематически перебирать короткие последовательности инструкций (включая тестовые ситуации для отдельных инструкций и зависимости между парами инструкций) [2]. Метод был реализован в первой версии среды MicroTESK (Microprocessor TEsting and Specification Kit), разрабатываемой в ИСП РАН. Инструмент поддерживает иерархическую декомпозицию генератора тестов на итераторы (каждый из которых отвечает за перебор своей части теста) и композиторы (объединяющие результаты работы внутренних итераторов в более сложные тестовые последовательности). Кроме того, MicroTESK позволяет генерировать тестовые программы, содержащие инструкции перехода: для этого строятся различные графы потока управления, для каждого из которых осуществляется перебор возможных путей выполнения ограниченной длины [7].

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

основе ограничений [8]). За счет автоматизации большого объема рутинной работы метод существенно увеличивает продуктивность работы инженеров. Наиболее известным генератором такого типа является Genesvs-Pro (IBM Research) [4]. Инструмент использует два типа входных данных: (1) модель, описывающая архитектуру микропроцессора, и (2) тестовые шаблоны, задающие сценарии тестирования. Genesvs-Pro генерирует тестовую программу последовательно, инструкцию за инструкцией: на каждом шаге выбирается инструкция, которую нужно вставить в программу, а затем формулируется и решается система ограничений на ее операнды.

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

Для дальнейшего прочтения статьи необходимо приобрести полный текст. Статьи высылаются в формате PDF на указанную при оплате почту. Время доставки составляет менее 10 минут. Стоимость одной статьи — 150 рублей.

Показать целиком