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

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

Рубрика Программирование, компьютеры и кибернетика
Вид автореферат
Язык русский
Дата добавления 02.05.2018
Размер файла 151,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

АВТОРЕФЕРАТ

диссертации на соискание ученой степени

кандидата технических наук

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

Специальность 05.13.11 - математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

Татарников Андрей Дмитриевич

Москва 2017

Работа выполнена в Федеральном государственном бюджетном учреждении науки Институте системного программирования Российской академии наук.

Научный руководитель: Камкин Александр Сергеевич, кандидат физико-математических наук, ведущий научный сотрудник Федерального государственного бюджетного учреждения науки Институт системного программирования Российской академии наук

Официальные оппоненты: Лацис Алексей Оттович, доктор физико-математических наук, заведующий сектором Федерального государственного учреждения «Федеральный исследовательский центр Институт прикладной математики им. М.В. Келдыша Российской академии наук»

Чибисов Петр Александрович, кандидат технических наук, заведующий сектором Федерального государственного учреждения «Федеральный научный центр Научно-исследовательский институт системных исследований Российской академии наук» Ведущая организация: АО «МЦСТ»

Общая характеристика работы

Актуальность темы

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

Для обеспечения правильности работы микропроцессоров применяется комплекс мер, одной из важнейших составляющих которого является функциональная верификация. Наиболее часто применяемым на практике подходом к функциональной верификации микропроцессоров является имитационная верификация (simulation-based verification), также называемая тестированием. Она осуществляется следующим образом: создаются тестовые программы на языке ассемблера; программы запускаются на проектной модели микропроцессора; в результате получаются трассы исполнения, содержащие информацию о событиях, которые произошли в процессе исполнения программ; полученные трассы проверяются на корректность.

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

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

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

Цель и задачи работы

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

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

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

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

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

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

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

Научная новизна работы

Научной новизной обладают следующие результаты работы:

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

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

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

Теоретическая и практическая значимость

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

На основе предложенного метода разработан программный инструмент, позволяющий автоматизировать на основе формальных спецификаций конструирование генераторов тестовых программ для микропроцессоров. Разработанный инструмент был применен для создания генераторов тестовых программ для архитектур MIPS64, ARMv8, PowerPC и RISC-V. Генераторы тестовых программ для MIPS64 и ARMv8 используются в отечественных и зарубежных компаниях. Помимо этого, разработанный инструмент может быть использован для создания генераторов тестовых программ для широкого спектра других микропроцессорных архитектур.

Методология и методы исследования

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

Апробация работы

Основные положения работы обсуждались на следующих конференциях и семинарах:

· Международная конференция «Design Automation Conference», выставка University Booth (г. Остин, США, 2-7 июня 2013 г. и г. Сан-Франциско, США, 2-5 июня 2014 г.);

· Международная конференция «Design, Automation & Test in Europe», выставка University Booth (г. Гренобль, Франция, 18-22 марта 2013 г.; г. Дрезден, Германия, 24-28 марта 2014 г.; г. Гренобль, Франция, 10-12 марта 2015 г.; г. Лозанна, Швейцария, 28-30 марта 2017 г.);

· Международный коллоквиум молодых исследователей в области программной инженерии «Spring/Summer Young Researchers' Colloquium on Software Engineering» (г. Пермь, 30-31 мая 2012 г. и д. Красновидово, 30 мая-1 июня 2016 г.);

· Международная конференция «A.P. Ershov Informatics Conference» (г. Москва, 27-29 июня 2017 г.);

· Открытая конференция ИСП РАН (г. Москва, 1-2 декабря 2016 г.);

· Международный симпозиум «IEEE East-West Design & Test Symposium» (г. Ереван, Армения, 14-17 октября 2016 г.);

· Всероссийская научно-техническая конференция «Проблемы разработки перспективных микро- и наноэлектронных систем» МЭС-2016 (г. Москва, 3-7 октября 2016 г.);

· Международная конференция «Новые информационные технологии в исследовании сложных структур» (г. Екатеринбург, 6-10 июня 2016 г.);

· Международная летняя школа молодых ученых «Новые информационные технологии в исследовании сложных структур» (г. Анапа, 8-12 июня 2015 г.);

· Научно-техническая конференция студентов, аспирантов и молодых специалистов НИУ ВШЭ им. Е.В. Арменского (г. Москва, 4 февраля 2015 г.);

· Совместный семинар ЗАО «МЦСТ» и ИСП РАН «Проблемы верификации микропроцессоров» (г. Москва, 10 апреля 2014 г.);

· Семинар Института системного программирования РАН (г. Москва, 2013, 2014 и 2016 гг.).

Публикации

По теме диссертации автором опубликовано 15 работ, в том числе 7 научных статей [1-7] в рецензируемых журналах, входящих в перечень журналов, рекомендованных ВАК РФ. Список опубликованных работ приведен в конце автореферата. В работе [1] дается обзор существующих методов и средств генерации тестовых программ для микропроцессоров. В работах [3, 7, 8, 12, 15] рассказывается о методе конструирования генераторов тестовых программ для микропроцессоров на основе формальных спецификаций. В работе [4] предложен язык описания шаблонов тестовых программ. В работах [6, 14] описывается архитектура расширяемого генератора тестовых программ. В работах [2, 10] приводится описание опыта применения предложенного метода для создания генераторов тестовых программ для архитектуры ARMv8.

Личный вклад

Все представленные в диссертации результаты получены лично автором.

Структура и объем диссертации

Работа состоит из введения, 4 глав, заключения и списка литературы (122 наименования). Основной текст диссертации (без приложений и списка литературы) занимает 120 страниц.

Краткое содержание диссертации

генератор тестовый микропроцессор формальный

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

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

· Реконфигурируемость - возможность адаптации к тестированию новых микропроцессорных архитектур.

· Расширяемость - возможность интеграции компонентов, реализующих новые техники генерации.

· Контролируемость генерации - возможность контролировать (отражать или отслеживать, предсказывать) текущее состояние микропроцессора (реестров и памяти) в процессе генерации путем исполнения генерируемых последовательностей команд на программном эмуляторе., что позволяет гарантировать корректность построенных программ, создавать самопроверяющие тесты (со встроенными проверками)? и применять техники генерации, использующие информацию о текущем состоянии микропроцессора.

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

Таблица 1 сравнивает возможности существующих генераторов тестовых программ по перечисленным критериям.

Таблица 1. Сравнение возможностей существующих генераторов тестовых программ

Инструмент

Реконфигурируемость

Расширяемость

Контролируемость

генерации

Систематичность

тестирования

MicroTESK 1.0

Да

Нет

Да

Высокая

INTEG

Нет

Нет

Нет

Средняя

RIS

Нет

Нет

Нет

Средняя

RAVEN

Да

Нет

Да

Средняя

Genesys-Pro, FPGen, DeepTrans

Да

Частично

Да

Высокая

RDG

Да

Нет

Нет

Низкая

MA2TG

Да

Нет

Нет

Высокая

UFL/UCI

Да

Нет

Нет

Высокая

GP

Да

Нет

Нет

Средняя

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

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

Рисунок 1. Схема применения предлагаемого метода

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

Для создания формальных спецификаций архитектуры микропроцессора предлагается использовать язык nML. Спецификации на этом языке включают в себя описания следующих сущностей: типы данных, константы, регистры, режимы адресации, команды и память. Семантика команд задается в виде присваиваний значений переменным, описывающим регистры и память. На рисунке 2 показан пример спецификации команды ADD микропроцессора MIPS64.

01:

02:

03:

04:

05:

06:

07:

08:

09:

10:

11:

12:

13:

14:

op add (rd: R, rs: R, rt: R)

syntax = format("add %s, %s, %s", rd.syntax, rs.syntax, rt.syntax)

image = format("000000%5s%5s%5s00000100000", rs.image, rt.image, rd.image)

action = {

if sign_extend(WORD, rs<31>)!= rs<63..32> || sign_extend(WORD, rt<31>)!= rt<63..32> then

unpredicted;

endif;

temp33 = rs<31>::rs<31..0> + rt<31>::rt<31..0>;

if temp33<32>!= temp33<31> then

exception("IntegerOverflow");

else

rd = sign_extend(DWORD, temp33<31..0>);

endif;

}

Рисунок 2. Спецификация команды ADD архитектуры MIPS64 на nML

Данный пример разработан на основе описания команды в руководстве по архитектуре MIPS64, которое показано на рисунке 3.

01:

02:

03:

04:

05:

06:

07:

08:

09:

if NotWordValue(GPR[rs]) or NotWordValue(GPR[rt]) then

UNPREDICTABLE

endif

temp < (GPR[rs]31||GPR[rs]31..0) + (GPR[rt]31||GPR[rt]31..0)

if temp32 ? temp31 then

SignalException(IntegerOverflow)

else

GPR[rd] < sign_extend(temp31..0)

endif

Рисунок 3. Описание семантики команды ADD из руководства по архитектуре MIPS64

Язык nML не позволяет описывать логику управления памятью. При обращении к массиву памяти не осуществляется кэширование данных и трансляция адресов, а виртуальный адрес считается равным физическому. Для поддержки генерации тестов для подсистемы управления памятью (MMU, memory management unit) предлагается использовать дополнительные спецификации на языке mmuSL, описывающие механизмы трансляции адресов и кэширования данных.

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

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

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

В начале раздела описывается структура генерируемых тестовых программ. Они состоят из тестовых воздействий, то есть последовательностей команд, исполнение которых приводит к возникновению некоторых событий в работе микропроцессора, называемых тестовыми ситуациями. Тестовые воздействия предваряются инициализирующим кодом, который подготавливает необходимое начальное состояние микропроцессора. После тестовых воздействий в программы могут добавляться встроенные проверки (self-checks), которые проверяют корректность полученных результатов, сравнивая значения в регистрах и памяти с эталонными. Тестовое воздействие вместе с инициализирующим кодом и встроенными проверками называют тестовым примером (test case). В простейшем случае тестовые примеры не зависят друг от друга и исполняются последовательно. Чтобы обеспечить их исполнение в определенном порядке или параллельное исполнение, в тестовые программы добавляется код диспетчеризации (dispatching code). Кроме этого каждая тестовая программа включает в себя пролог, который осуществляет начальную инициализацию микропроцессора, и эпилог, который завершает работу программы. Таким образом, структуру тестовых программ можно описать формулой

= start {dispatch start, xi, stop}i=1,n stop,

где:

· start - пролог тестовой программы;

· dispatch - код диспетчеризации;

· start, xi, stop - тестовый пример, включающий в себя:

o start - инициализирующий код;

o xi - тестовое воздействие;

o stop - встроенные проверки;

· stop - эпилог тестовой программы;

· n - число тестовых примеров в программе.

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

· способы построения последовательностей команд;

· способы выбора регистров, используемых командами;

· способы комбинирования тестовых ситуаций;

· способы генерации данных для тестовых ситуаций;

· способы построения инициализирующего кода;

· способы построения встроенных проверок.

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

Далее описывается предметно-ориентированный язык, который автор предлагает использовать для описания шаблонов тестовых программ. Предлагаемый язык основан на языке Ruby. Использование в качестве основы существующего языка высокого уровня имеет следующие преимущества: (1) все предоставляемые им возможности можно использовать при разработке тестовых шаблонов и (2) изучение языка описания шаблонов становится проще. Ruby был выбран из-за наличия средств метапрограммирования, при помощи которых в язык добавляются конструкции для описания команд тестируемого микропроцессора и директив ассемблера.

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

На рисунке 4 показано шаблонное описание тестовых примеров, заданных как декартово произведение команд ADD и SUB микропроцессора MIPS, исполнение которых вызывает ситуации Normal и Overflow, и один из вариантов построенного на его основе кода. Используемые регистры выбираются случайным образом и инициализируются в соответствии с правилом, заданным конструкцией preparator.

01:

02:

03:

04:

05:

06:

07:

08:

09:

10:

11:

12:

13:

14:

15:

16:

17:

18:

class MyTemplate < Template

def run

preparator(:target => `R') {

lui target, value(16, 31)

ori target, target, value(0, 15)

}

block(:combinator => `product') {

iterate {

add r(_), r(_), r(_) do situation(`Normal') end

add r(_), r(_), r(_) do situation(`Overflow') end

}

iterate {

sub r(_), r(_), r(_) do situation(`Normal') end

sub r(_), r(_), r(_) do situation(`Overflow') end

}

}

end

end

Инициализирующий код:

lui r14, 0xa9c9

ori r14, r14, 0x7025

lui r10, 0xe6f6

ori r10, r10, 0x78de

lui r12, 0x5db7

ori r12, r12, 0xfa2c

lui r13, 0xfafc

ori r13, r13, 0x3700

Тестовое воздействие:

add r8, r14, r10

sub r15, r12, r13

Рисунок 4. Шаблонное описание и один из тестовых примеров, построенных на его основе

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

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

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

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

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

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

a. Построение абстрактных последовательности команд.

b. Выбор регистров, используемых командами.

c. Построение комбинаций вариантов решений тестовых ситуаций, связанных с командами.

d. Генерация данных для тестовых ситуаций и построение инициализирующего кода.

5. Запуск исполнения построенного тестового примера на эмуляторе. Исполнение приостанавливается при достижении конечного адреса тестового примера.

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

7. Запуск исполнения с последней точки остановки. При достижении адреса начала еще не построенного тестового примера, выполняется переход к стадии 4. При достижении адреса начала кода диспетчеризации, который еще не был размещен в памяти (адрес не был зафиксирован), он размещается в памяти, а стадия 7 повторяется.

8. Размещение в памяти эмулятора и исполнение эпилога.

9. Печать построенной программы в ассемблерном формате.

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

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

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

В третьей главе описывается реализация предложенного метода автоматизации конструирования генераторов тестовых программ. Метод нашел свое воплощение в инструменте с открытым исходным кодом MicroTESK (Microprocessor TEsting and Specification Kit) версии 2.0, разработанном на языке Java. Данный инструмент на основе формальных спецификаций на языках nML и mmuSL конструирует генераторы тестовых программ, состоящие из модели микропроцессора и архитектурно-независимого ядра.

В разделе 3.1 описывается реализации инструмента MicroTESK. Данный инструмент осуществляет построение модели микропроцессора на основе формальных спецификаций и специальных библиотек. Обработка формальных спецификаций осуществляется при помощи транслятора, который поддерживает языки nML и mmuSL, а также позволяет добавить поддержку других языков. Транслятор строит модель путем генерации кода на языке Java. Построенная модель включает в себя метаданные, эмулятор и модель тестового покрытия. Метаданные описывают свойства команд, поддерживаемых тестируемым микропроцессором. Эмулятор отвечает за печать и исполнение команд, описанных при помощи метаданных. Тестовые ситуации, составляющие модель покрытия, описываются в виде ограничений, которые автоматически извлекаются из формальных спецификаций. Транслятор можно расширять дополнительными средствами анализа, позволяющими извлекать новые свойства команд микропроцессора и стоить ограничения новых типов. (строить для них новые типы ограничений).

В разделе 3.2 описывается реализация архитектурно-независимого ядра генераторов тестовых программ. Ядро решает задачи построения внутреннего представления шаблона и генерации тестовых программ на его основе.

Для анализа и построения внутреннего представления шаблонов используется интерпретатор JRuby, который исполняет код на Ruby, взаимодействующий с ядром генератора для конструирования сущностей внутреннего представления. При этом языковые конструкции, позволяющие описывать архитектурно-зависимые сущности, создаются динамически при помощи средств метапрограммирования. Языковые конструкции, связанные с архитектурно-независимыми техниками генерации, реализуются в виде библиотек. Для поддержки новых конструкций требуется разработать дополнительные Ruby библиотеки и компоненты ядра, отвечающие за построение внутреннего представления (чего ?).

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

В четвертой главе описываются результаты применения предложенного метода автоматизации конструирования генераторов тестовых программ для микропроцессоров MIPS64, ARMv8, PowerPC и RISC-V. Для данных архитектур были разработаны формальные спецификации системы команд (на языке nML) и подсистемы управления памятью (на языке mmuSL), на основе которых были сконструированы генераторы тестовых программ. Статистика по разработанным спецификациям приводится в таблице 2.

Таблица 2. Статистика по разработанным формальным спецификациям

Архитектура

MIPS64

ARMv8

PowerPC

RISC-V

Число заспецифицированных команд

235

1015

34

62

Размер nML спецификаций в строках кода

3999

18178

935

816

Размер mmuSL спецификаций в строках кода

267

2643

0

0

Общие трудозаты в человеко-месяцах

4

30

1

0.75

Трудоемкость описания одной команды в человеко-днях

0.37

0.65

0.64

0.27

Практический опыт показал, что трудоемкость разработки формальных спецификаций находится в линейной зависимости от количества команд, поддерживаемых микропроцессором. Трудоемкость описания одной команды зависит от сложности системы команд и в среднем составляет 0.4 человеко-дня. Для сравнения: при использовании инструмента MicroTESK 1.0, который предполагает разработку спецификаций на языке Java, трудоемкость описания одной команды архитектуры MIPS64 составляет около 0.8 человеко-дня. Таким образом, предложенный метод позволяет сократить трудозатраты на создание генератора тестовых программ примерно в 2 раза. Сравнение с другими инструментами генерации не приводится, так как данные о трудоемкости их конфигурирования отсутствуют в открытых источниках.

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

· поддержка различных техник построения тестовых программ (случайные, комбинаторные, на основе ограничений);

· возможность построения самопроверяющих тестов;

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

Генераторы тестовых программ для MIPS64 и ARMv8 успешно применяются в отечественных и зарубежных компаниях.

В заключении перечисляются основные результаты работы.

Основные результаты работы

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

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

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

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

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

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

Работы автора по теме диссертации

1. Татарников А.Д. Обзор методов и средств генерации тестовых программ для микропроцессоров / Татарников А.Д. // Труды ИСП РАН. _ т. 29. _ в. 1. _ 2017. _ С. 167-194.

2. Татарников А.Д. Генератор тестовых программ для архитектуры ARMv8 на основе инструмента MicroTESK / Камкин А.С., Коцыняк А.М., Проценко А.С., Татарников А.Д., Чупилко М.М. // Труды ИСП РАН. _ т. 28. _ в. 6. _ 2016. _ С. 87-102.

3. Татарников А.Д. Комбинаторная генерация тестовых программ для микропроцессоров на основе формальных спецификаций системы команд / Татарников А.Д. // Сборник трудов конференция «Проблемы разработки перспективных микро- и наноэлектронных систем». _ 2016. _ Часть II. _ C. 38-45.

4. Tatarnikov A. Language for Describing Templates for Test Program Generation for Microprocessors / Tatarnikov A. // Proceedings of the Institute for System Programming. _ Volume 28. _ Issue 4. _ 2016. _ P. 77-98.

5. Татарников А.Д. Средства функциональной верификации микропроцессоров / Камкин А.С., Коцыняк А.М., Смолов С.А., Сортов А.А., Татарников А.Д., Чупилко М.М. // Труды ИСП РАН. _ т. 26. _ в. 1. _ 2014. _ С. 149-200.

6. Татарников А.Д. Расширяемая среда генерации тестовых программ для микропроцессоров / Камкин А.С., Сергеева Т.И., Смолов С.А., Татарников А.Д., Чупилко М.М. // Программирование. _ №1. _ 2014. _ С. 3-14.

7. Tatarnikov A. An Approach to Test Program Generation Based on Formal Specifications of Caching and Address Translation Mechanisms/ Kamkin A., Protsenko A., Tatarnikov A. // Proceedings of the Institute for System Programming. _ Volume 27. _ Issue 3. _ 2015. _ P. 125-138.

8. Татарников А.Д. Построение поведенческих моделей микропроцессоров для генерации тестовых программ / Татарников А.Д. // Известия высших учебных заведений. Физика. _ Том 59. _ No 8/2. _ 2016. _ С. 97-100.

9. Tatarnikov A. An Approach to Instruction Stream Generation for Functional Verification of Microprocessor Designs / Tatarnikov A. // Proceedings of 14th IEEE East-West Design & Test Symposium (EWDTS'2016). _ 2016. _ P. 270-273.

10. Tatarnikov A. Specification-Based Test Program Generation for ARM VMSAv8-64 Memory Management Units / Chupilko M., Kamkin A., Kotsynyak A., Protsenko A., Smolov S., Tatarnikov A. // Proceedings of 16th International Workshop on Microprocessor and SOC Test and Verification (MTV 2015). _ 2015. _ P. 1-7.

11. Татарников А.Д. Генерация тестовых программ для микропроцессоров на основе спецификаций подсистем памяти / Камкин А.С., Проценко А.С., Татарников А.Д. // Известия высших учебных заведений. Физика. _ Том 58. _ No 11/2. _ 2015. _ С. 70-74.

12. Татарников А.Д. Инструмент автоматизации разработки генераторов тестовых программ для микропроцессоров на основе формальных спецификаций / Татарников А.Д. // Материалы научно-технической конференции студентов, аспирантов и молодых специалистов НИУ ВШЭ им. Е.В. Арменского. _ 2015. _ С. 53.

13. Tatarnikov A. Generic Knowledgebase for Test Generation / Kotsynyak A., Tatarnikov A. // Proceedings of SYRCoSE 2014: 8th Spring/Summer Young Researchers' Colloquium on Software Engineering. _ 2014. _ P. 114-117

14. Tatarnikov A. MicroTESK: An Extensible Framework for Test Program Generation / Kamkin A., Sergeeva T., Tatarnikov A., Utekhin A. // Proceedings of SYRCoSE 2013: 7th Spring/Summer Young Researchers' Colloquium on Software Engineering. _ 2013. _ P. 51-57.

15. Tatarnikov A. MicroTESK: An ADL-Based Reconfigurable Test Program Generator for Microprocessors / Kamkin A., Tatarnikov A. // Proceedings of SYRCoSE 2012

Размещено на Allbest.ru

...

Подобные документы

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

    лабораторная работа [45,6 K], добавлен 15.03.2009

  • Технология конструирования программного обеспечения, надежно и эффективно работающего в реальных компьютерах. Модель быстрой разработки приложений (Rapid Application Development) как один из примеров применения инкрементной стратегии конструирования.

    реферат [666,5 K], добавлен 24.06.2009

  • Рассмотрение принципов конструирования ЭВМ. Расчет теплового режима блока, параметров электрических соединений. Разработка технологического процесса изготовления устройства; выбор метода изготовления печатной платы. Анализ технологичности конструкции.

    курсовая работа [97,4 K], добавлен 07.01.2015

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

    дипломная работа [4,7 M], добавлен 15.10.2013

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

    курсовая работа [2,2 M], добавлен 28.09.2011

  • Назначение программ офисной автоматизации. Преимущества ERP-систем, критерии их выбора. Характеристики ряда программ: "БЭСТ-5" - информационной системы управления предприятием, описание 1С:Предприятие 8.1, Microsoft Dynamics AX, Галактика Business Suite.

    курсовая работа [907,2 K], добавлен 19.12.2011

  • Основные составляющие компьютерной системы. История развития, особенности применения микропроцессоров. Устройство и работа D-триггера. Принципиальная электрическая схема, директивы, операторы и описание программы для микропроцессоров, виды отладчиков.

    методичка [2,9 M], добавлен 27.11.2011

  • Понятия и принцип работы процессора. Устройство центрального процессора. Типы архитектур микропроцессоров. Однокристальные микроконтроллеры. Секционные микропроцессоры. Процессоры цифровой обработки сигналов. Эволюция развития микропроцессоров Intel.

    реферат [158,8 K], добавлен 25.06.2015

  • Определение комплекса задач для автоматизации бизнес-процессов отдела по работе с клиентами и склада ООО "ЖилРемСтрой". Выбор стратегии автоматизации и формализация программной задачи. Разработка программного модуля в среде 1C, его тестирование, отладка.

    дипломная работа [3,2 M], добавлен 28.01.2013

  • Семь поколений процессоров. Технология производства микропроцессоров. Сравнительные характеристики процессоров AMD и Intel на ядре Clarkdale. Квазимеханические решения на основе нанотрубок. Одновременная работа с Firefox и Windows Media Encoder.

    дипломная работа [2,2 M], добавлен 11.06.2012

  • Анализ развития и производства микропроцессоров. История их появления. Типология основные пользовательские характеристики и принцип их действия. Перспективы развития современных микропроцессорных технологий и особенности мирового рынка полупроводников.

    курсовая работа [337,5 K], добавлен 17.03.2015

  • Анализ существующих систем автоматизации документооборота. Выбор шаблона проектирования. Microsoft SQL Server как комплексная высокопроизводительная платформа баз данных. Язык программирования C#. Разработка интерфейса и иллюстрация работы системы.

    дипломная работа [2,5 M], добавлен 19.07.2014

  • Достоинства слайдовой презентации, принципы ее рационального конструирования. Психолого-физиологическая рациональность. Принципы оптимальности и лаконичности, последовательности и соотносительности, унификации и акцента. Функции цвета для слайдов.

    реферат [19,5 K], добавлен 13.11.2014

  • Программное обеспечение — неотъемлемая часть компьютерной системы, логическое продолжение технических средств. Типология прикладного программного обеспечения. Интегрированные пакеты программ. Общая характеристика системы автоматизации проектных работ.

    курсовая работа [39,2 K], добавлен 16.01.2011

  • Язык маркировки гипертекстов HTML, основа создания web-страниц. История спецификаций, каскадные таблицы стилей CSS. Способы определения таблиц стилей (стилевого шаблона). Язык подготовки сценариев JavaScript, его использование. Программный код web сайта.

    курсовая работа [26,9 K], добавлен 05.07.2009

  • База данных как основа автоматизации. Разработка, описание и реализация программного обеспечения "Точность и правильность методов и результатов измерений для центральной заводской лаборатории ОАО "Акрилат". Листинг, исходные коды программы и базы данных.

    дипломная работа [1,0 M], добавлен 23.06.2012

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

    курсовая работа [398,8 K], добавлен 21.01.2014

  • Технологии производства микропроцессоров: основные этапы производства. Выращивание диоксида кремния и создание проводящих областей и тестирование. Особенности производства микропроцессоров. Производство подложек, легирование, диффузия, фотолитография.

    курсовая работа [4,7 M], добавлен 26.03.2009

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

    курсовая работа [312,6 K], добавлен 29.12.2014

  • Классификации архитектур вычислительных систем. Организация компьютерных систем. Устройство центрального процессора. Принципы разработки современных компьютеров. Эволюция микропроцессорных систем. Увеличение числа и состава функциональных устройств.

    дипломная работа [1,4 M], добавлен 29.01.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.