Функциональная верификация микропроцессоров на системном уровне с использованием методов машинного обучения тема диссертации и автореферата по ВАК РФ 00.00.00, кандидат наук Гревцев Никита Артемович
- Специальность ВАК РФ00.00.00
- Количество страниц 150
Оглавление диссертации кандидат наук Гревцев Никита Артемович
1.2.2 Генерация случайных тестов
1.2.3 Анализ логов выполнения
Выводы по главе
2 Глава 2. Разработанные методы направленной функциональной верификации
2.1 Инструмент мониторинга функционального покрытия на уровне инструкций
2.2 Разработка через тестирование
2.3 Верификация доверенных микропроцессоров
2.4 Верификация многоядерных микропроцессоров
2.4.1 Особенности тестирования подсистемы памяти
2.4.2 Применимость имеющихся инструментов
2.4.3 Процесс генерации тестов для многоядерных микропроцессоров64
2.4.4 Верификация атомарных операций
Выводы по главе
3 Глава 3. Применение методов машинного обучения для функциональной верификации микропроцессора
3.1 Повышение качества тестов, создаваемых в рамках направленной функциональной верификации
3.2 Имитация поведения набора пользовательских приложений на уровне машинного кода
3.2.1 Структура генератора
3.2.2 Профилирование приложений
3.2.3 БЕвЬ
3.2.4 Максимизация покрытия с помощью нейронных сетей
3.2.5 Применение тепловых карт для оценки качества создаваемых экстрактов
3.2.6 Ключи компиляции
3.2.7 Дополнение покрытия и исключение многократно покрытых ситуаций
3.2.8 Сравнение с существующими подходами
Выводы по главе
ЗАКЛЮЧЕНИЕ
ЛИТЕРАТУРА
Приложение 1 Акт о внедрении
Приложение 2 Пример тестового шаблона
ВВЕДЕНИЕ
Одной из самых актуальных задач при разработке микропроцессора (МП) является функциональная верификация его RTL-модели, которая проводится начиная с самых ранних стадий проектирования. Обычно для функциональной верификации RTL-модели применяются регрессионные базы функциональных тестов, а также стохастическое тестирование - случайное тестирование и генерация на основе ограничений. Как правило, стохастические тесты нацеливают на проверку определенных элементов микроархитектуры МП, однако, полностью случайные тесты не позволяют достичь покрытия «труднодостижимых» ситуаций. Для достижения нетривиальных ситуаций требуется учитывать «инженерное (экспертное) знание» при создании шаблонов тестов. Такой подход не позволяет гарантировать полноту покрытия.
Опыт тестирования микропроцессоров и их моделей, накопленный за два десятилетия в ФГУ ФНЦ НИИСИ РАН, позволяет утверждать, что разрабатываемая СБИС МП должна верифицироваться тестами, отражающими область применения этой СБИС. Это означает, что для повышения эффективности тестирования из всех потенциальных режимов работы следует в первую очередь сосредоточиться на необходимых пользователям областях. До передачи RTL-модели в производство следует определить, насколько это возможно, максимально полный круг задач потенциальных пользователей и направить процесс верификации микропроцессора в сторону максимального покрытия в выделенных областях, сужая, если потребуется, область тестирования - бессмысленно создавать тесты режимов, которые не используются ни одним потребителем и не поддерживаются в драйверах ОС. По аналогии с подходом "встречная оптимизация", в рамках которого постулируется, что в первую очередь необходимо архитектурно повышать производительность выбранного класса задач конечного пользователя, данный подход получил название "встречное тестирование".
Низкая скорость моделирования RTL-кода является основной причиной невозможности полноценного запуска операционной системы и приложений под ОС, что не позволяет гарантировать отсутствие критических ошибок в уже выпущенном кристалле СБИС микропроцессора. Полноценный запуск операционной системы на рабочих частотах может позволить обнаружить большинство оставшихся в проекте ошибок до выпуска готового изделия. По этой причине даже крупные компании-разработчики МП вынуждены делать дорогостоящий «тестовый» запуск перед полноценным выходом процессора на рынок.
Запуск непродолжительных тестов на RTL-модели не представляет собой сложную задачу, в то время как продолжительные тесты, такие как, например, задачи под ОС, требуют ряда мер по адаптации к запуску. Фактически, требуется решить задачу выборки репрезентативных частей из продолжительного теста. Цель данной работы - предложить решение вопроса выборки репрезентативных фрагментов из трассы приложения под ОС путём создания коротких синтетических аналогов реальных приложений для функциональной верификации микропроцессора.
Рекомендованный список диссертаций по специальности «Другие cпециальности», 00.00.00 шифр ВАК
Встречное тестирование высокопроизводительных микропроцессоров2013 год, кандидат наук Чибисов, Петр Александрович
Разработка методики и алгоритмов верификации гетерогенных многоядерных систем на основе графовой модели иерархии когерентной кэш-памяти2021 год, кандидат наук Гаращенко Антон Витальевич
Метод тестирования производительности и корректности микропроцессоров при помощи нацеленных тестовых программ2013 год, кандидат наук Зубковская, Наталья Владимировна
Метод автоматизации имитационного тестирования микропроцессоров с конвейерной архитектурой на основе формальных спецификаций2008 год, кандидат физико-математических наук Камкин, Александр Сергеевич
Автоматизация конструирования генераторов тестовых программ для микропроцессоров на основе формальных спецификаций2017 год, кандидат наук Татарников Андрей Дмитриевич
Введение диссертации (часть автореферата) на тему «Функциональная верификация микропроцессоров на системном уровне с использованием методов машинного обучения»
Актуальность темы
Современные микропроцессоры - сложные программно-управляемые устройства. С одной стороны, исчерпывающее их тестирование невозможно, так как попытка осуществить перебор всех возможных комбинаций внутренних состояний быстро приводит к комбинаторному взрыву, с другой стороны, такое тестирование и не является необходимым, поэтому важным вопросом в ходе функциональной верификации микропроцессоров является вопрос проведения достаточного и эффективного тестирование всех аспектов спецификации на микропроцессор за требуемое время.
Стандартный маршрут функциональной верификации на системном уровне имеет два серьёзных ограничения. Первое ограничение - это недостаток информации о степени завершенности процесса верификации и
5
полноте покрытия. Данный недостаток является следствием того, что даже обеспечение полного покрытия по выбранным в рамках маршрута метрикам, а также длительное отсутствие ошибок при стохастических методах генерации тестов являются лишь эмпирической оценкой степени завершенности процесса верификации. При этом определенные тестовые ситуации, детектирующие ошибки дизайна микропроцессора, могут оказаться недостижимыми в рамках построенных по выбранным метрикам случайных тестов. Второй проблемой является необходимость инжектировать «тестовое знание» инженера-верификатора в процесс тестирования для направления процесса генерации тестов в сторону выбранных областей, и, как следствие, сильная зависимость качества тестирования от человеческого фактора и квалификации команды верификации. Предполагается, что две данные отраслевые проблемы решаемы в контексте применения машинного обучения для автоматического извлечения эвристик реальных приложений и направления процесса верификации в сторону непокрытых областей.
Применимость методов машинного обучения для тестирования моделей процессора в настоящее время исследуется в крупнейших иностранных технологических компаниях (исследовательские центры ARM, Intel, IBM и другие) и институтах. Однако исследования проводятся только с точки зрения применения машинного обучения в областях формальной верификации, генерации тестов с использованием символического выполнения и решения ограничений, а также для поиска нерегулярных ошибок в уже изготовленном кристалле СБИС микропроцессора. Все описанные методы имеют дело с функциональной верификацией на блочном уровне, в рамках которой тестируемым объектом является небольшой блок микропроцессора, а тестовыми воздействиями - сигналы, передаваемые на данный блок.
В рамках представленной работы предлагается использовать методы машинного обучения для развития функциональной верификации на системном уровне. Предлагаемые идеи позволяют значительно сократить
задействованные при стохастическом тестировании машинные ресурсы за счет предсказания уровня покрытия генерируемых тестов, а также позволяют использовать преимущества запуска приложений пользователя с точки зрения обнаружения ошибок в микропроцессоре на ранних этапах разработки его RTL-модели, когда стоимость исправления ошибки минимальна.
Значительный научный вклад в развитие методов функциональной верификации на системном уровне внесли А.С. Камкин, развивающий методы имитационного тестирования на основе формальных спецификаций, П.А. Чибисов, задающий принципы встречного тестирования микропроцессоров, Л. Эйкхоут, исследующий распределение рабочей нагрузки приложений пользователя под ОС и В. Чен, изучающий вопрос извлечения и применения «тестового знания» для повышения эффективности тестов с точки зрения достижения удовлетворительного уровня покрытия.
Объектом исследования является процесс функциональной верификации RTL-моделей проектируемых микропроцессоров.
Целью диссертационной работы является разработка методов функциональной верификации проектируемых микропроцессоров и их моделей, опирающихся на инструменты машинного обучения для повышения полноты покрытия верификации и сокращения затрачиваемых машинных ресурсов. Достижение этой цели обеспечено решением следующих задач:
• Анализ существующих методов верификации, а также анализ применения инструментов машинного обучения в других областях верификации микропроцессора.
• Разработка набора методов функциональной верификации, основанного на построении метрик функционального покрытия для архитектурной характеризации задач пользователя и применение разработанных методов в рамках стандартного маршрута верификации.
• Минимизация временных и машинных ресурсов при использовании стандартного маршрута функциональной верификации с применением методов машинного обучения.
• Разработка метода автоматической генерации тестовых последовательностей, имитирующих рабочую нагрузку приложений пользователя из различных областей применения с помощью машинного обучения и подтверждения схожести архитектурного профиля задач.
Методология и методы исследования включают в себя методы направленной псевдослучайной генерации ассемблерных тестов, методы характеризации рабочей нагрузки приложений пользователя с помощью профилирования, методы сопоставления моделей, методы интеллектуального анализа данных и машинного обучения.
Соответствие паспорту научной специальности. Область исследования соответствует паспорту специальности 2.3.2 - Вычислительные системы и их элементы по следующим пунктам:
3. Разработка научных подходов, методов, алгоритмов и программ, обеспечивающих надежность, сбое- и отказоустойчивость, контроль и диагностику функционирования вычислительных систем и их элементов.
7. Разработка научных методов и алгоритмов организации параллельной и распределенной обработки информации, многопроцессорных, многоядерных, многомашинных и специальных вычислительных систем. Научной новизной исследования обладают следующие результаты работы:
• Метод генерации тестовых последовательностей для верификации атомарных операций в многоядерных микропроцессорах на основе функциональных метрик и ПО для его реализации.
• Метод ускорения стандартного маршрута функциональной верификации за счет предсказания уровня покрытия создаваемого псевдослучайного теста с применением метода градиентного бустинга.
• Метод автоматической генерации тестовых последовательностей, имитирующих рабочую нагрузку приложений пользователя из различных областей применения с помощью машинного обучения.
• Метод генерации тепловых карт кэш-памяти для оценки степени загруженности кэш-памяти, характеризации и сравнения профилей задач.
Практическая значимость
1. Разработанные автором методы и методики применены в ФГУ ФНЦ НИИСИ РАН при проектировании одноядерных микропроцессоров, а также успешно используются для выполнения ОКР «СМП-НИИСИ» и «ММП-НИИСИ» для создания серверных микропроцессоров 1945ВМ018 и многоядерных мобильных микропроцессоров 1945ВМ028, предназначенных для задач распознавания образов, ОКР «Комдив-Доступ» и в совместной с ФПИ работе «Разработка технологии создания специализированных СБИС на основе чиплетов».
2. Разработанные и реализованные автором механизмы верификации подсистем памяти многоядерных микропроцессоров, а также атомарных операций позволили произвести верификацию и обеспечить серийное производство двухъядерных микропроцессоров. Благодаря комплексному применению созданных средств тестирования в конечных изделиях серийно выпускаемых вычислительных систем не выявлено ошибок в выделенных областях применения.
3. Благодаря внедрению предложенного автором механизма предсказания покрытия создаваемого теста было высвобождено порядка 80% затрачиваемых на стохастическую верификацию машинных ресурсов, которые в дальнейшем были перенаправлены в другие сферы верификации.
Основные положения, выносимые на защиту
• Набор методов функциональной верификации, основанный на построении метрик функционального покрытия для архитектурной характеризации задач пользователя в рамках стандартного маршрута верификации одноядерных и многоядерных микропроцессоров.
• Метод ускорения стандартного маршрута функциональной верификации за счет предсказания уровня покрытия создаваемого псевдослучайного теста с применением метода градиентного бустинга.
• Метод автоматической генерации тестовых последовательностей, имитирующих рабочую нагрузку приложений пользователя из различных областей применения с помощью машинного обучения.
• Метод генерации тепловых карт кэш-памяти для оценки степени загруженности кэш-памяти, характеризации и сравнения профилей задач.
Апробация работы. Основные положения диссертации доложены на следующих конференциях и семинарах:
• VII, VIII, IX, X, XI Всероссийская Научно-Техническая Конференция: Проблемы Разработки Перспективных Микро- и Наноэлектронных Систем (МЭС-2016, 2018, 2020, 2021, 2022 гг. Москва, Зеленоград)
• VI, VII, IX, X Международный Форум «Микроэлектроника» (г. Ялта, 2020, 2021, 2023, 2024 гг.)
• 17th, 19th IEEE EAST-WEST DESIGN & TEST SYMPOSIUM (EWDTS-2019, EWDTS-2021, Грузия, г. Батуми, 2019, 2021 гг.)
• MACSPro'2021: International Scientific Conference on Modeling and Analysis Complex Systems and Processes (г. Москва, 2021 г.)
Публикации. По теме диссертации автором опубликованы работы [1] -[12] (всего 12, из них 9 в изданиях по перечню ВАК, 3 в изданиях по перечню SCOPUS), полно отражающие основные результаты диссертации. Получено 3
свидетельства о государственной регистрации программ для ЭВМ [102-104].
10
Структура и объем работы
Работа состоит из введения, трех глав, заключения и списка литературы (105 наименования). Основной текст диссертации (без приложений и списка литературы) занимает 135 страниц.
Краткое содержание диссертации
В первой главе рассмотрен стандартный маршрут функциональной верификации RTL-моделей разрабатываемых микропроцессоров, а также сформулированы основные проблемы стандартного маршрута и предпосылки для применения методов машинного обучения в функциональной верификации на системном уровне. В главе показано, что различные машинного обучения в настоящее время применяются на всех этапах жизненного цикла верификации микропроцессоров, начиная от ранней pre-silicon стадии на этапе формирования ТЗ на создание новых команд, заканчивая post-silicon стадией при анализе уже выпущенных микропроцессоров. Из приведенного обзора делается вывод о необходимости исследования данного направления в рамках функциональной верификации на системном уровне.
Во второй главе предложено расширение стандартного маршрута стохастического тестирования с помощью применения введенных автором метрик функционального покрытия, а также введен метод адаптации имеющихся одноядерных средств тестирования к тестированию многоядных систем. Представлен маршрут верификации доверенных микропроцессоров. Предложен новый, разработанный автором полный маршрут верификации от ранних этапов разработки многоядерного микропроцессора до верификации ПЛИС-прототипа. Представлен алгоритм для верификации атомарных операций, построенный на рандомизации атомарных конструкций, полученных из анализа конфликтов блокировок в многопоточных приложениях и основных библиотеках.
В третьей главе все полученные в рамках второй главы знания и методы обобщаются и используются для создания новых направлений верификации с использованием методов машинного обучения:
1) Разработан метод оценки качества создаваемых псевдослучайным генератором тестов с помощью построения модели предсказаний в форме ансамбля слабых предсказывающих моделей - градиентного бустинга. Применение предварительной оценки теста до его непосредственного запуска, позволило высвободить 80% мощностей, отведенных на стохастическое тестирование без потери в покрытии создаваемых тестов. Высвобожденные мощности были направлены на другие задачи отдела верификации.
2) Разработан механизм создания экстрактов приложений пользователя, то есть коротких аналогов реальных приложений, затрагивающих те же микроархитектурные особенности, что и оригинальные приложения. Для решения поставленной задачи трасса исходного приложения профилируется, создается граф потока управления программы, а также формализуется наполнение приложения с точки зрения использованных инструкций и значений введенных метрик покрытия. Затем решается задача глубокого обучения (Deep Q-Learning), в рамках которой нейронная сеть модифицирует получившуюся программу, пытаясь достигнуть максимального покрытия RTL-модели. Основным результатом проведенного исследования является возможность имитировать поведение набора пользовательских приложений на уровне машинного кода, а также автоматизация процесса анализа труднодостижимых в рамках классического маршрута верификации ситуаций с целью повышения тестового покрытия. Для подтверждения результатов применен метод визуализации обращений к кэш-памяти - тепловые карты кэшпамяти.
В рамках работы показана применимость инструментов машинного обучения для функциональной верификации RTL-модели микропроцессора на системном уровне.
Глава 1. Обзор методов функциональной верификации RTL-моделей разрабатываемых микропроцессоров
Современные микропроцессоры создаются с применением архитектурных и микроархитектурных усовершенствований, разрабатываемых с целью повышения их производительности и понижения электропотребления. Это приводит к значительному усложнению проекта, и, следовательно, к увеличению трудозатрат на его функциональную верификацию.
Для тестирования микропроцессоров применяют направленные, псевдослучайные, комбинаторные тесты, а также программы и приложения под управлением операционной системы.
По способу получения все тесты можно разделить на рукописные, полученные с помощью автоматической генерации, а также полученные с помощью трансляции программ, написанных на языках высокого уровня. Для каждого теста должен быть задан критерий корректности его работы, а также для всего множества тестов должен быть определен критерий достаточности.
В традиционном маршруте верификации важную роль при тестировании архитектурного уровня микропроцессора играет стохастическое тестирование. Как правило, на вход генератору тестов подаются тестовые шаблоны, позволяющие пользователю задать перечень инструкций, их аргументы и вероятность появления инструкций в тесте. Это эффективно на начальной стадии верификации и, как показывает практика, это эффективно только для тестирования архитектурного уровня и набора инструкций микропроцессора, при этом новые ошибки быстро перестают находиться. Кроме того, простая генерация псевдослучайных последовательностей инструкций малоэффективна для тестирования микроархитектуры [13]. Как правило, качество (эффективность) псевдослучайных тестов оценивается количеством находимых ошибок для одного шаблона за единицу времени, а также покрытием (структурным и функциональным) RTL-модели.
Известны различные подходы к повышению покрытия, достижимого набором случайных тестов, например, тестирование, управляемое покрытием [14]. Во многих работах (например, [15], [16], [17]), посвящённых верификации микропроцессоров, говорится о необходимости внесения интеллекта, то есть экспертного знания инженера ("testing knowledge"), в процесс стохастического тестирования. Однако, даже высокое покрытие (особенно структурное) само по себе не дает гарантий отсутствия ошибок в модели микропроцессора. Как правило, для достижения особых («крайних», «corner cases») тестовых ситуаций [18], которые должны потенциально найти сложно обнаруживаемые ошибки в проекте, нужны соответствующие настройки генератора тестов, который бы направили процесс генерации в сторону необходимых областей архитектуры микропроцессоров.
1.1 Направленная генерация тестов на системном уровне
Архитектурный уровень абстракции (архитектура) микропроцессора
описывает микропроцессор с точки зрения программиста. Архитектура определяется набором команд (ISA), разрядностью шин и внутренних регистров, а также компонентами, входящими в состав микропроцессора (ALU, FPU, TLB, кэш-память и т.д.), и их характеристиками (иерархия и ассоциативность кэш-памяти, режимы работы и т.п.).
Микроархитектура микропроцессора - это внутренняя реализация архитектуры; она описывает, как именно в данном микропроцессоре организован конвейер инструкций, где и когда в нем возникают остановки, как расположены и соединены друг с другом различные внутренние регистры, кэш-памяти, арифметико-логические и другие устройства микропроцессора; она описывает также различные устройства буферизации потоков данных (буферы операций загрузки/сохранения из/в память), конечные автоматы, блок выборки, выдачи и переупорядочивания инструкций, блок предсказания ветвлений и другие блоки, необходимые для реализации архитектуры. В понятие микроархитектуры входят также такие понятия, как
суперскалярность, переименование регистров, возможность выполнения инструкций с изменением их очерёдности. Обобщая, можно сказать, что микроархитектура не видна программисту, и это усложняет её тестирование.
Существуют специальные генераторы комбинаторных псевдослучайных тестов, направленных на какой-либо аспект микроархитектуры, решающие задачу удовлетворения заданных пользователем ограничений [19], [20], [21]. Однако, эти генераторы очень трудоемкие в создании и настройке, а ошибки, которые находятся в результате созданных ими тестов - в большинстве случаев крайне специфичны и мало связаны с тем, что именно требуется тестировать. Также такие генераторы тестов нацелены на очень узкий класс ситуаций. Поэтому важно понять на начальном этапе, какие аспекты спецификации и каким именно образом нужно перенести в тестовый план, чтобы создать действительно ёмкие, направленные, «интересные» тесты.
В работе [13] был предложен новый метод построения метрик функционального покрытия. Утверждается, что любую ошибку в функционировании микропроцессора можно найти с помощью некой комбинации инструкций (ф), выполненной после установления некоторого внутреннего состояния микропроцессора (к которому также можно прийти с помощью некоторой последовательности инструкций (%)).
С абстрактной точки зрения микроархитектурная модель тестируемого ядра микропроцессора представляет собой конечный автомат, состояния которого являются произведением состояний составляющих узлов, входные воздействия на который определяются исходным содержимым модели памяти (в предложенной схеме модель памяти содержит сам тест и все данные для него в момент начала симуляции). Отсюда следует, что мощность и размерность пространства состояний тестируемой системы зависят от ее конкретной микроархитектурной реализации, в частности, от таких параметров, как глубина конвейера и размер окна предвыборки инструкций. Ошибка поведения микропроцессора с этой точки зрения представляет собой
некорректный переход между состояниями. Заметим, что функция переходов задается спецификацией устройства на упорядоченной паре {состояние, входное воздействие}, а входное воздействие определяется инструкциями и данными в памяти, то есть может быть описано в терминах ISA. Тем не менее, количество инструкций в тестовом воздействии, которые одновременно формируют переход состояния, является зависимой от реализации величиной, которую требуется оценивать, учитывая такие параметры, как глубина конвейера, размер предвыборки инструкций и так далее. Формализуем понятие тестовой ситуации уровня ISA.
Тестовая ситуация - это встретившаяся в тесте комбинация значений следующих параметров:
1) Последовательность инструкций некоторой длины N.
2) Адреса их расположения в памяти (адреса влияют на значение PC (program counter) при их выполнении, а также на работу ряда ключевых блоков, таких как буфер инструкций).
3) Данные для инструкций - значения операндов.
4) «След» этих инструкций в иерархии памяти (регистры - кэш-память -буфер загрузки-сохранения - ОЗУ). Под «следом» инструкций будем понимать зависимость по регистрам с близкими командами, комбинацию флагов в кэш-памяти всех уровней, задействованные строки кэш-памяти и соответствующие им адреса в ОЗУ (например, это важно в ситуации, когда текущая инструкция является причиной вытеснения данных из кэш-памяти), политики, работа TLB, сегмент памяти.
5) Локальные передачи управления, в том числе: по инструкции ветвления, по прерыванию, по исключительной ситуации.
Если перечислить все возможные аспекты микроархитектуры (на уровне ISA), на которые способна повлиять отдельно взятая инструкция, применив
язык описания ситуаций, можно разработать множество метрик функционального покрытия.
Любое микроархитектурное событие (точка из микроархитектурной модели покрытия) достижимо с помощью выполнения некоторой последовательности инструкций из набора ISA микропроцессора, которая и является тестом. Таким образом, существуют следующие варианты создания тестовых воздействий. Первый способ заключается в генерации тестов, направленных на достижение отдельных тестовых ситуаций (комбинаторные тесты). Второй способ - в использовании псевдослучайных тестов, создаваемых по шаблонам, в которые добавляются тестовые сценарии (макросы) для тестирования микроархитектуры (рисунок 1.1) совместно с измерителями (мониторами) покрытия по требуемым метрикам для замыкания контура обратной связи (для контроля качества тестирования).
Рисунок 1.1 - Маршрут стохастического тестирования Акцент в рассматриваемом методе делается на то, что следует использовать любые способы генерации тестов, если есть обратная связь по покрытию, организованная с помощью мониторов функционального покрытия.
Рассматриваемая стратегия верификации модели микропроцессора состоит в том, чтобы осуществить как можно более полное тестирование ЯТЬ-модели с использованием знания о задачах потенциальных высокоуровневых приложений пользователя, применяя моделирование на ранних этапах цикла
проектирования. Этот подход был назван «встречным» тестированием [22, 23].
18
Предлагается вместо подачи произвольных (случайных) тестовых воздействий из набора всех возможных операций во всех возможных состояниях микропроцессора вслепую, сфокусироваться в первую очередь на проверке тех важных аппаратных функций, которые действительно используются реальными пользовательскими программами на данной аппаратной реализации микропроцессора. В отличие от модульного или блочного тестирования, цель рассматриваемого системного подхода - в верификации взаимодействий между отдельными блоками, и, конечно, самих блоков в масштабе всей системы, как в процессе разработки модели, так и при тестировании первого кристалла СБИС микропроцессора.
Функциональное покрытие фокусируется на всех имеющихся выполняемых функциях тестируемой системы. Оно используется для того, чтобы убедиться, что все аспекты, заложенные в спецификацию, протестированы. В отличие от метрик структурного покрытия, основанных на коде реализации (код HDL-модели микропроцессора), функциональное покрытие основано на спецификации.
При использовании функционального покрытия пользователь систематично определяет модели покрытия, включающие в себя набор задач (требований к покрываемым областям, выраженным в метриках покрытия). Модели покрытия используются для измерения, наблюдения и изменения направления процесса тестирования.
Непокрытые либо недостаточно покрытые области требуют создания дополнительных тестов. Процесс тестирования с использованием метрик покрытия является итеративным, при этом качество тестирования постоянно измеряется, и по результатам анализа измерений предполагаются возможные улучшения процесса. Основная трудоемкость при разработке управляемого метриками тестирования заключается в осмысленном выборе и формализованном описании метрик, в создании инструментальной поддержки измерений и анализа данных о покрытии. Применение описанного подхода
требует достаточно глубокого знания микроархитектуры тестируемого микропроцессора, а также тесной интеграции инженеров-верификаторов с проектировщиками RTL-модели для лучшего понимания того, как код приложений пользователя и тестов затрагивает внутренние структуры HDL-кода. С методическим разбором подобного примера разложения кода контрольной задачи с анализом микроархитектуры и уровня инструкций микропроцессора можно ознакомиться в работе [24].
Общая схема, описывающая алгоритм выбора метрик функционального покрытия для встречного тестирования, показана на рисунке 1.2. Данная схема процедуры выбора метрик и составленная на ее основе методика выбора метрик функционального покрытия являются основными составляющими частями методики выбора набора тестов под определенный класс задач.
Методика выбора функциональных метрик покрытия для встречного тестирования модели микропроцессора под определенный класс задач может быть представлена в виде следующей последовательности действий:
А. Анализ области применения проектируемой СБИС
1) Получить информацию о сфере применения СБИС.
2) Классифицировать задачи, решаемые с помощью комплекса в целом.
Похожие диссертационные работы по специальности «Другие cпециальности», 00.00.00 шифр ВАК
Методы разработки и тестирования аппаратных потактовых моделей микропроцессоров на программируемых логических интегральных схемах2013 год, кандидат наук Байда, Юрий Владимирович
Модели и методы тестирования программных систем на основе алгебраического подхода2013 год, кандидат наук Вигура, Антон Николаевич
Разработка систем интеллектуальной поддержки анализа и тестирования программ2022 год, кандидат наук Сердюков Константин Евгеньевич
Автоматизация проектирования функциональных тестов для технологической подготовки производства интегральных микросхем2021 год, кандидат наук Смирнов Константин Константинович
Построение тестовых программ для проверки подсистем управления памяти микропроцессоров2010 год, кандидат физико-математических наук Корныхин, Евгений Валерьевич
Список литературы диссертационного исследования кандидат наук Гревцев Никита Артемович, 2025 год
ЛИТЕРАТУРА
1. Гревцев Н.А., Хисамбеев И.Ш., Чибисов П.А. Исследование способов повышения эффективности стохастического тестирования моделей микропроцессоров // Проблемы разработки перспективных микро- и наноэлектронных систем (МЭС). 2016. №2. С. 8-15.
2. Гревцев Н.А., Чибисов П.А. Подход к стохастическому тестированию RTL-моделей многоядерных микропроцессоров // Проблемы разработки перспективных микро- и наноэлектронных систем. 2018. (МЭС) Выпуск 2. С. 52-58.
3. Гревцев, Н. А. Применение имитационного моделирования микропроцессора для оптимизации архитектуры подсистем памяти / Н. А. Гревцев, П. С. Зубковский, П. А. Чибисов // Наноиндустрия. - 2024. -Т. 17, № S10-1(128). - С. 58-62. - DOI 10.22184/1993-8578.2024.17.10s.58.62. - EDN ACRBYX.
4. A M Antonova, S I Aryashev, N A Grevtsev, P S Zubkovsky, A A Krasnyuk and P A Chibisov 2019 J. Phys.: Conf. Ser. 1189 012022 Snoop Filter Efficiency Analysis by Directed Random Testing Journal of Physics: Conference Series, Volume 1189, conference 1
5. N.A. Grevtsev, P.A. Chibisov, "A novel technique for atomic instructions functional verification using lock contention analysis," 2019 IEEE East-West Design & Test Symposium (EWDTS)
6. Чибисов П.А. Гревцев Н.А. Функциональная верификация атомарных операций с использованием анализа конфликтов блокировок // Проблемы разработки перспективных микро- и наноэлектронных систем. 2020. №3. -С. 57-64.
7. Бычков К.С. Гревцев Н.А. Зубковский П.С. Кулешов А.С. Лазутин Ю.М. Чибисов П.А. Архитектурное моделирование и оценка принимаемых решений на примере кэш-памяти двухъядерного микропроцессора // НАНОИНДУСТРИЯ 2020. Том 13. Номер 99. С.82-83
8. Гревцев Н.А., Шумилин С.С., Чибисов П.А. Применение методов машинного обучения для функциональной верификации микропроцессора // НАНОИНДУСТРИЯ 2021
9. Гревцев Н.А., Чибисов П.А., Орлов Д.О., Краснюк А.А. Генерация синтетических клонов приложений пользователя для функциональной верификации // Проблемы разработки перспективных микро- и наноэлектронных систем (МЭС). 2021, С. 50-56
10.Grevtsev N.A. Chibisov P.A. Kuleshov A. S. Zubkovsky P. S., "Using Architecture Simulation Tool for Memory Subsystem Evaluation in Multi-
core Systems," 2021 IEEE East-West Design & Test Symposium (EWDTS), 2021, pp. 1-7, doi: 10.1109/EWDTS52692.2021.9580989.
11.Н.А. Гревцев, П. А. Чибисов, А. С. Кулешов, С. И. Аряшев [и др.] Разработка программных моделей доверенного универсального микропроцессора и микропроцессорной системы на его основе /Н.А. // Программные продукты и системы. - 2022. - № 4. - С. 598-608. - DOI 10.15827/0236-235X.140.598-608.
12.Гревцев Н.А. Функциональная верификация микропроцессоров с применением методов машинного обучения // Проблемы разработки перспективных микро- и наноэлектронных систем (МЭС). 2022. Выпуск 4. С. 37-43. doi: 10.31114/2078-7707-2022-4-37-43
13.Хисамбеев И.Ш., Чибисов П.А. Об одном методе построения метрик функционального покрытия в тестировании микропроцессоров // Проблемы разработки перспективных микро- и наноэлектронных систем - 2014. Сборник трудов / под общ. ред. академика РАН А.Л. Стемпковского. М.: ИППМ РАН, 2014. Часть II. С. 63-68.
14.P. Mishra, N. Dutt. Functional Coverage Driven Test Generation for Validation of Pipelined Processors. DATE'2005: Design, Automation and Test in Europe, Volume 2, 2005.
15.Katz, Yoav, Rimon, Michal, Ziv, Avi and Shaked, Gai. "Learning microarchitectural behaviors to improve stimuli generation quality" Paper presented at the meeting of the DAC, 2011.
16.Yoav Katz, Michal Rimon, Avi Ziv:A Novel Approach for Implementing Microarchitectural Verification Plans in Processor Designs. Haifa Verification Conference 2012: 148-161.
17.O. Guzey and et al., Functional test selection based on unsupervised support vector analysis, in Design Automation Conference, 2008. DAC 2008. 45th ACM/IEEE, 2008, pp. 262 -267.
18.Wile B., Goss J., Roesner W. Comprehensive functional verification, the complete industry cycle. Morgan Kaufmann Publishers, 2005.
19.Yehuda Naveh, Michal Rimon, Itai Jaeger, Yoav Katz, Michael Vinov, Eitan Marcus, and Gil Shurek Constraint-based Random Stimuli Generation for Hardware Verification. In Proceedings of the 18th Conference on Innovative Applications of Artificial Intelligence - Volume 2 IAAI'06, 2006, pp. 1720— 1727.
20.Камкин А.С Комбинаторная генерация тестовых программ для микропроцессоров на основе моделей. Препринт 21, ИСПРАН, 2008, с.23 - 63.
21.Adir A. et al. Genesys-Pro: Innovations in Test Program Generation for Functional Processor Verification. IEEE Design and Test of Computers, 2004 21(2), pp. 84-93.
22. Чибисов П.А. Встречное тестирование высокопроизводительных микропроцессоров, диссертация, Москва 2013
23.Бобков С.Г., Чибисов П.А. Повышение качества тестирования высокопроизводительных микропроцессоров методами встречного тестирования с анализом функционального тестового покрытия выделенных приложений. // Информационные технологии, №8, 2013, с. 26-33.
24.Ho Kim, J. E. Smith An Instruction Set and Microarchitecture for Instruction Level Distributed Processing // In Proc. of 29th Annual International Symposium on Computer Architecture, 2002, p. 71 - 81.
25.Lachish O., Marcus E., Ur S., Ziv A. Hole analysis for functional coverage data. // In Proc. DAC - 2002, pp. 807-8
26.G. Huang, J. Hu, Y. He, J. Liu, M. Mingyuan, Z. Shen, J. Wu, Y. Xu, H. Zhang, K. Zhong,X. Ning, Y. Ma, H. Yang, B. Yu, H. Yang, Y. Wang, Machine learning for electronic designautomation: A survey, ACM Transactions on Design Automation of Electronic Systems 26(2021) 1-46. doi:10.1145/3451179.
27.J. Bergeron, Writing Testbenches: Functional Verification of HDL Models, Springer US,2012.
28.D. A. Anisi, Accelerating Coverage Closure For Hardware Verification Using MachineLearning, Master's thesis, 2019
29.Q. Guo, T. Chen, H. Shen, Y. Chen, W. Hu, On-the-fly reduction of stimuli for functional verification, in: 2010 19th IEEE Asian Test Symposium, 2010, pp. 448-454
30.M. Fajcik, P. Smrz, M. Zachariasova, Automation of processor verification using recurrentneural networks, in: 2017 18th International Workshop on Microprocessor and SOC Test and Verification (MTV), 2017, pp. 15-20.
31.S. Gogri, J. Hu, A. Tyagi, M. Quinn, S. Ramachandran, F. Batool, and A. Jagadeesh. Machine learning-guided stimulus generation for functional verification. In Proceedings of the Design and Verification Conference (DVCON-USA), Virtual Conference, pages 2-5, 2020.
32.B. W. Mammo, Reining in the functional verification of complex processor designs with automation, prioritization, and approximation, Ph.d. dissertation, University of Michigan, 2017.
33.Truong, A.; Hellstrom, D.; Duque, H.; Viklund, L. Clustering and Classification of UVM Test Failures Using Machine Learning Techniques. In
138
Proceedings of the Design and Verification Conference (DVCON), San Jose, CA, USA, 26 February-1 March 2018.
34.S. M. Ambalakkat, Optimization of constrained random verification using machine learning, 2018.
35.C. Ioannides, K. Eder, Coverage-directed test generation automated by machine learning- a review, ACM Trans. Design Autom. Electr. Syst. 17 (2012) 7. doi: 10.1145/2071356.2071363.
36.W. Chen, Data Learning Methodologies for Improving the Efficiency of Constrained Random Verification, Ph.d. dissertation, UC Santa Barbara, 2014.
37.W. Hughes, S. Srinivasan, R. Suvarna, M. Kulkarni, Optimizing design verification using machine learning: Doing better than random, 2019.
38.K. H. Mami Miyamoto, Finding effective simulation patterns for coverage-driven verification using deep learning, in: SASIMI 2016 Proceedings, 2016, pp. 335-340.
39.M. Aggoune, Acceleration of Hardware Code Coverage Closure Using Machine Learning. University of Oulu, Master's thesis, Degree Programme in Computer Science and Engineering, 56 p
40.N. Bruns, V. Herdt, E. Jentzsch and R. Drechsler, "Cross-Level Processor Verification via Endless Randomized Instruction Stream Generation with Coverage-guided Aging," 2022 Design, Automation & Test in Europe Conference & Exhibition (DATE), Antwerp, Belgium, 2022, pp. 1123-1126, doi: 10.23919/DATE54114.2022.9774771.
41.V. Herdt, S. Tempel, D. Große and R. Drechsler, "Mutation-based Compliance Testing for RISC-V," 2021 26th Asia and South Pacific Design Automation Conference (ASP-DAC), Tokyo, Japan, 2021, pp. 55-60.
42.Niklas Bruns, Daniel Große, and Rolf Drechsler. 2020. Early Verification of ISA Extension Specifications using Deep Reinforcement Learning. In Proceedings of the 2020 on Great Lakes Symposium on VLSI (GLSVLSI '20). Association for Computing Machinery, New York, NY, USA, 297-302.
43.G. Parthasarathy et al., "RTL Regression Test Selection using Machine Learning," 2022 27th Asia and South Pacific Design Automation Conference (ASP-DAC), Taipei, Taiwan, 2022, pp. 281-287, doi: 10.1109/ASP-DAC52403.2022.9712550.
44.L.-C. Wang, Data mining in functional test content optimization, in: The 20th Asia and South Pacific Design Automation Conference, 2015, pp. 308-315.
45. Hussain Al-Asaad, Robbie Sadre, Machine learning applications in digital system verification, 2019,pp. 21-27.
46.A. DeOrio, Q. Li, M. Burgess, V. Bertacco, Machine learning-based anomaly detectionfor post-silicon bug diagnosis, in: 2013 Design, Automation Test in Europe ConferenceExhibition (DATE), 2013, pp. 491-496. doi:10.7873/DATE.2013.112.
47.E. Mandouh, A. Wassal, Application of machine learning techniques in postsilicon debugging and bug localization, Journal of Electronic Testing 34 (2018) 1-19. doi:10.1007/s10836-018-5716-y.
48.Min Du, Feifei Li, Guineng Zheng, and Vivek Srikumar. 2017. DeepLog: Anomaly Detection and Diagnosis from System Logs through Deep Learning. In Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security (CCS '17). Association for Computing Machinery, New York, NY, USA, 1285-1298.
49.N. Pfeifer, B. V. Zimpel, G. A. G. Andrade, L. C. V. dos Santos, A reinforcement learning approach to directed test generation for shared memory verification, in: 2020 Design, Automation Test in Europe Conference Exhibition (DATE), 2020, pp. 538-543.
50.L. Peled, U. C. Weiser, Y. Etsion, A neural network prefetcher for arbitrary memory accesspatterns, ACM Transactions on Architecture and Code Optimization (TACO) (2020) 1 - 27.
51.L. Eeckhout, K. de Bosschere and H. Neefs. Performance analysis through synthetic trace generation. // 2000 IEEE International Symposium on Performance Analysis of Systems and Software. ISPASS (Cat. No.00EX422). 2000. P. 1-6.
52.Grades, Zur & Ingenieurwissenschaften, Doktor & I, Der & Theiling, Henrik & Prof, Vorsitzender & Weikum, Dr & Prof, Gutachter & Wilhelm, Reinhard & Dr, Prof & Ganzinger, Harald. (2003). Control Flow Graphs for Real-Time System Analysis: Reconstruction from Binary Executables and Usage in ILP-Based Path Analysis
53.E. Deniz, A. Sen, B. Kahne and J. Holt. MINIME: Pattern-Aware Multicore Benchmark Synthesizer. // IEEE Transactions on Computers, vol. 64, no. 8. 2015. P. 2239-2252.
54.L. Williams, E. M. Maximilien and M. Vouk, "Test-driven development as a defect-reduction practice," 14th International Symposium on Software Reliability Engineering, 2003. ISSRE 2003., Denver, CO, USA, 2003, pp. 3445, doi: 10.1109/ISSRE.2003.1251029.
55.J. Caba, F. Rincón, J. Barba, J. A. De La Torre, J. Dondo and J. C. López, "Towards Test-Driven Development for FPGA-Based Modules Across Abstraction Levels," in IEEE Access, vol. 9, pp. 31581-31594, 2021, doi: 10.1109/ACCESS.2021.3059941.
56.D. Fucci, H. Erdogmus, B. Turhan, M. Oivo and N. Juristo, "A Dissection of the Test-Driven Development Process: Does It Really Matter to Test-First or to Test-Last?," in IEEE Transactions on Software Engineering, vol. 43, no. 7, pp. 597-614, 1 July 2017, doi: 10.1109/TSE.2016.2616877.
57.Tasker, Peter S. et al. Trusted Computer System Evaluation Criteria (Orange Book), Dod Computer Security Center, 5200.28-STD, D., 1985).
58.Sorin, D. A Primer on Memory Consistency and Cache Coherence / Morgan & Claypool, 2012. - 210 p.
59.Камкин А.С., Буренков В.С. Метод масштабируемой верификации PROMELA-моделей протоколов когерентности кэш-памяти // Проблемы разработки перспективных микро- и наноэлектронных систем (МЭС). 2016. №2. С. 54-60.
60.Велесевич Е. А. Обнаружение и оценка количества промахов когерентности на основе вероятностной модели, Труды ИСП РАН, 27:4 (2015), 39-48
61.T. Liu et al., "PREDATOR: Predictive false sharing detection", PPoPP 2014.
62.Tongping Liu , Xu Liu, Cheetah: detecting false sharing efficiently and effectively, Proceedings of the 2016 International Symposium on Code Generation and Optimization, March 12-18, 2016.
63.S. W. Min, S. Huang, M. El-Hadedy, J. Xiong, D. Chen and W. -m. Hwu, "Analysis and Optimization of I/O Cache Coherency Strategies for SoC-FPGA Device," 2019 29th International Conference on Field Programmable Logic and Applications (FPL), Barcelona, Spain, 2019, pp. 301-306, doi: 10.1109/FPL.2019.00055.
64.M. Herlihy and N. Shavit. The Art of Multiprocessor Programming, Revised Reprint. Elsevier, 2012.
65.Pasetto, Davide & Meneghin, Massimiliano & Franke, Hubertus & Petrini, Fabrizio & Xenidis, Jimi. (2012). Performance evaluation of interthread communicationmechanisms on multicore/multithreaded architectures. 10.1145/2287076.2287098.
66. Luo, Hao and Xiaoya Xiang. "Characterizing Active Data Sharing in Threaded Applications Using Shared Footprint." (2013).
67.Zhao, Q., Koh, D., Raza, S., Bruening, D., Wong,W.-F., Amarasinghe, S. Dynamic Cache Contention Detection in Multi-threaded Applications. In Proceedings of the international conference on Virtual Execution Environments, VEE'11, pages 27-38, 2011.
68.A. Starke. Locking in os kernels for smp systems. Citeseer, 2006.
69.Xu, C., Chen, X., Dick, R.P., Mao, Z.M.: Cache Contention and Application Performance Prediction for Multi-Core Systems. In: Proceedings of the 2010
141
IEEE International Symposium on Performance Analysis of Systems and Softwares IEEE ISPASS 2010, White Plains NY, USA, pp. 76-86.
70. X Pan, J Lindén, B Jonsson Predicting the Cost of Lock Contention in Parall el Applications on Multicores using Analytic Modeling - MCC12, 2012.
71.R. Gu, G. Gin, L. Song, L. Zhu, and S. Lu, "What change history tells us about thread synchronization", in FSE, August 2015.
72.N. R. Tallent, J. M. Mellor-Crummey, and A. Porterfield, "Analyzing lock contention in multithreaded applications," in PPoPP, February 2010.
73.G. Chen, P. Stenstrom Critical lock analysis: Diagnosing critical section bottlenecks in multithreaded applications. In Proceedings of Supercomputing: the International Conference on High Performance Computing, Networking, Storage and Analysis (SC), pages 71:171:11, Nov. 2012.
74.H. Ding, X. Liao ; H. Jin ; X. Lv ; R. Guo Reducing lock contention on multi-core platforms. In Proceedings of 20th IEEE International Conference on Parallel and Distributed Systems (ICPADS), 2014.
75.Gramoli, V. More than you ever wanted to know about synchronization: synchrobench, measuring the impact of the synchronization on concurrent algorithms. In Proceedings of 20th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP 2015, pp. 1-10.
76.Kempf S., Veldema R., Philippsen M. (2013) Compiler-Guided Identification of Critical Sections in Parallel Code. In: Jhala R., De Bosschere K. (eds) Compiler Construction. CC 2013. Lecture Notes in Computer Science, vol 7791. Springer, Berlin, Heidelberg.
77. S. Dutta, S. Manakkadu, and D. Kagaris, "Classifying performance bottlenecks in multi-threaded applications," in MCSoc 2014, September 2014.
78.Sahelices B., Ibanez P., Vinals V., Llaberia J.M. (2009) A Methodology to Characterize Critical Section Bottlenecks in DSM Multiprocessors. In: Sips H., Epema D., Lin HX. (eds) Euro-Par 2009 Parallel Processing. Euro-Par 2009. Lecture Notes in Computer Science, vol 5704. Springer, Berlin, Heidelberg.
79.MIPS64 TM Architecture For Programmers, V.2:The MIPS64TM Instruction Set Reference Manual, Revision 6.04, MIPS Technologies Inc., 2015, 551 pp.
80.Jungju Oh, Christopher J. Hughes, Guru Venkataramani, and MilosPrvulovic. 2011. LIME: A Framework for Debugging Load Imbalancein Multi-threaded Execution. InProceedings of the 33rd InternationalConference on Software Engineering (ICSE). 201-210.
81.K. Beyls, E. D'Hollander Reuse Distance as a Metric for Cache Behavior. In Proceedings of the IASTED International Conference on Parallel and Distributed Computing and Systems, IASTED, 2001. p.617-622.
82.R. Hemani, S. Banerjee, A. Guha, "Accord: An analytical cache contention model using reuse distances for modern multiprocessors", 21st Annual International Conference on High Performance Computing Student Research Symposium (HiPC SRS), December 2014.
83.Bienia, S. Kumar, J. P. Singh, K. Li, The parsec benchmark suite: Characterization and architectural implications, in: Proceedings of the17th International Conference on Parallel Architectures and Compilation Techniques, 2008.
84.G. Southern and J. Renau. Analysis of PARSEC workload scalability. In 2016 IEEE International Symposium on Performance Analysis ofSystems and Software (ISPASS), pages 133-142, April 2016.
85.A Memo on Exploration of SPLASH-2 Input Sets PARSEC Group Princeton University, 2011.
86.Kernel Lock Torture Test Operation [Electronic resource] https://www.kernel. org/doc/Documentation/locking/locktorture.txt
87.Modak, Singh, YAMATO Putting LTP to Test - validating the Linux Kernel and test cases. Proceedings of the 2009 Montreal Linux Symposium, July 2009, Montreal, Canada.
88.Ristretto: random test generator for multicore microprocessor cache coherence verification A.V. Smirnov, P.A. Chibisov SELECTED ARTICLES of the VIII All-Russia Science&Technology Conference MES-2018 Part 1
89.Tianqi Chen and Carlos Guestrin. 2016. XGBoost: A Scalable Tree Boosting System. In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD '16). Association for Computing Machinery, New York, NY, USA, 785-794.
90.XGBoost Documentation, (url: https://xgboost.readthedocs.io/en/stable/, дата обращения: 03.09.2024)
91.Ajay Joshi, Lieven Eeckhout, Robert H. Bell, and Lizy K. John. Distilling the essence of proprietary workloads into miniature benchmarks. // ACM Trans. Archit. Code Optim. 5, 2, Article 10 (August 2008). 2008. P. 1-33.
92. L. Eeckhout, R. H. Bell, B. Stougie, K. De Bosschere and L. K. John. Control flow modeling in statistical simulation for accurate and efficient processor design studies. // Proceedings. 31st Annual International Symposium on Computer Architecture, 2004. 2004. P. 350-361.
93.L. Van Ertvelde and L. Eeckhout. Benchmark synthesis for architecture and compiler exploration. // IEEE International Symposium on Workload Characterization (IISWC'10). 2010. P. 1-11.
94.K. Hoste and L. Eeckhout. Microarchitecture-Independent Workload Characterization. // IEEE Micro, vol. 27, no. 3. 2007. P. 63-72.
95.K. Ganesan and L. K. John. Automatic Generation of Miniaturized Synthetic Proxies for Target Applications to Efficiently Design Multicore Processors. // IEEE Transactions on Computers, vol. 63, no. 4. April 2014. P. 833-846
96.R. Panda and L. K. John. Proxy Benchmarks for Emerging Big-Data Workloads. // 2017 26th International Conference on Parallel Architectures and Compilation Techniques (PACT). 2017. P. 105-116.
97.W. Chen, L. Wang, J. Bhadra and M. Abadir. Simulation knowledge extraction and reuse in constrained random processor verification. // 2013 50th ACM/EDAC/IEEE Design Automation Conference (DAC). 2013. P. 16.
98.Смирнов А.В., Чибисов П.А. Генератор тестов для проверки когерентности кэш-памятей многоядерных микропроцессоров (ristretto) // Проблемы разработки перспективных микро- и наноэлектронных систем. 2018. Выпуск 2. С. 31-38.
99. Aamer Jaleel, Memory characterization of workloads using instrumentation-driven simulation, url: http://www.jaleels.org/ajaleel/workload/ SPECanalysis.pdf (2010) 1-12.
100.Kenneth Hoste and Lieven Eeckhout. 2008. Cole: compiler optimization level exploration. In Proceedings of the 6th annual IEEE/ACM international symposium on Code generation and optimization (CGO '08). Association for Computing Machinery, New York, NY, USA, 165-174. doi 10.1145/1356058.1356080
101.PyTorch Documentation, (https://pytorch.org/docs/stable/index.html/, дата обращения: 03.09.2024)
102. Свидетельство о государственной регистрации программы для ЭВМ 2024663014 Российская Федерация. Многоядерный покомандный эмулятор ВИРКОМ64-М для микропроцессоров с архитектурой КОМДИВ64 / Гревцев Н.А., Зубковский П.С., Чибисов П.А., Султанов Т.Р.; заявитель и правообладатель Федеральное государственное учреждение «Федеральный научный центр Научно-исследовательский институт системных исследований Российской академии наук». - № 2024661430; заявл. 21.05.2024; опубл 15.07.2024. - 1 с.
103. Свидетельство о государственной регистрации программы для ЭВМ 2024663340 Российская Федерация. Доработанный поведенческий
эмулятор для микропроцессоров с архитектурой КОМДИВ64 / Гревцев Н.А., Зубковский П.С., Чибисов П.А., Султанов Т.Р. Павлов А.Н.; заявитель и правообладатель Федеральное государственное учреждение «Федеральный научный центр Научно-исследовательский институт системных исследований Российской академии наук». - № 2024661468; заявл. 21.05.2024; опубл 05.07.2024. - 1 с.
104. Свидетельство о государственной регистрации программы для ЭВМ 2024663340 Российская Федерация. Стохастический генератор тестов ККТКЕТТО для микропроцессоров с архитектурой КОМДИВ64 / Гревцев Н.А., Зубковский П.С., Чибисов П.А., Султанов Т.Р.; заявитель и правообладатель Федеральное государственное учреждение «Федеральный научный центр Научно-исследовательский институт системных исследований Российской академии наук». - № 2024661466; заявл. 21.05.2024; опубл 15.07.2024. - 1 с.
105. Камкин А.С., Коцыняк А.М. Генерация тестовых программ для подсистемы управления памятью MIPS64 на основе спецификаций. Труды Института системного программирования РАН. 2016;28(4):99-114
Приложение 1 Акт о внедрении
«УТВЕРЖДАЮ» Директор ФГУ ФНЦНЦИСИ РАН
дт.н. С.Е. Власов
20г</г.
АКТ
о внедрении в Федеральном государственном учреждении
«Федеральный научный центр Научно-исследовательский институт системных исследований Российской академии наук» (ФГУ ФНЦ НИИСИ РАН) результатов диссертационной работы Гревцева Н.А. «Функциональная верификация микропроцессоров на системном уровне с использованием методов машинного обучения», представленной на соискание ученой степени кандидата технических наук
Комиссия в составе: Председатель комиссии:
Заместитель директора по микроэлектронике и вычислительным системам, к.т.н., С.И. Аряшев Члены комиссии:
Заместитель заведующего ОРВС, с.н.с., к.т.н., Петров К.А., заведующий ОАВМ ОРВС, с.н.с., Зубковский П.С.,
составила настоящий акт о том, что результаты диссертационной работы «Функциональная верификация микропроцессоров на системном уровне с использованием методов машинного обучения» использованы в работах ФГУ ФНЦ НИИСИ РАН.
1. Форма внедрения. Построенное на предложенных методах программное обеспечение, разработанное для поиска и локализации ошибок в RTE-моделях и ПЛИС-прототипах, используется в маршруте проектирования микропроцессоров, принятом на предприятии. Выработанные в процессе работы подходы используются в рамках техники «Разработка через тестирование, (test-driven development, TDD)» при проектировании микропроцессоров.
2. Масштаб внедрения. Разработанные автором методы и методики использованы при проектировании в ФГУ ФНЦ НИИСИ РАН одноядерных микропроцессоров в рамках ОКР «Разработка микросхемы
малопотребляющего микроконтроллера на основе отечественных 1Р-блоков для применения в устройствах интернета вещей», шифр «КОМДИВ-МК» и создания серверных микропроцессоров 1945ВМ028 ОКР «СМП-НИИСИ». Разработанные автором методы верификации многоядерных микропроцессоров использованы при разработке мобильных микропроцессоров 1945ВМ018 в рамках ОКР «ММП-НИИСИ», предназначенных для задач распознавания образов, при разработке микропроцессоров в рамках ОКР «Комдив-Доступ» и в совместной с Фондом Перспективных Исследований (ФПИ) работе «Разработка технологии создания специализированных СБИС на основе чиплетов».
3. Новизна результатов: к новым научным результатам можно отнести применение машинного обучения для имитации поведения приложений пользователя с целью повышения качества тестирования ЯТЬ-модели микропроцессора направленными псевдослучайными методами генерации тестов.
4. Научный уровень. Научный уровень результатов соответствует мировому уровню развития науки и техники в данной области.
5. Эффективность внедрения. Технический эффект от внедрения состоит в сокращении машинных ресурсов, затрачиваемых на стохастическое тестирование при функциональной верификации до 80%, а также в возможности имитировать поведение пользовательских программ на ранних этапах разработки.
Председатель комиссии:
Заместитель директора по микроэлектронике и вычислительным системам к.т.н..
Члены комиссии:
Заместитель заведующего ОРВС, с.н.с., к.т.н.,
Заведующий ОАВМ ОРВС, с.н.с
Приложение 2 Пример тестового шаблона
// Compatibility: tergen v1.5.1
// // // // // // // :Header seed 0x0 :end
:Settings Macros {
bnt =(T)none,
final=(T)final_test2_core0.tsm, nop =(T)none, start=(T)it4ngtB.tsm
In general, this test consists of load/store/branch instructions. Stores to executable code are added.
Interrupts are enabled. Operating mode: changes by every syscall. Memory regions are mapped via 4KB TLB pages.
Syscall is enabled (modifying some bits of TLB entry, modifying C0_STATUS). Exceptions: (X)TLBRefill, TLBMod, TLBInv, int, sys. Changes from previous templates: .
Tergen {
COP3OFF=1 }
:end
:Program // initializati register addr_r register rra[]; int a1_addr, a2 int ind; int cycle_numbe int
int
int int
on for cycle*.tsm eg[] = {r5,r6,r7,r15}
addr, a3 addr;
opload [] = {0x8d0b0000, 0xdd0b0000, 0x810b0000, 0x850b0000, 0x8d0b0020, 0xdd0b0020, 0x810b0020, 0x850b0020,
0x8d0bfff0, 0xdd0bfff0, 0x810bfff0, 0x850bfff0} ; opstore [] ={0xad2b0000, 0xfd2b0000, 0xa12b0000, 0xa52b0000, 0xad2b0020, 0xfd2b0020, 0xa12b0020, 0xa52b0020, 0xad2b0010, 0xfd2b0010, 0xa52b0010, 0xad2bffe0, 0xfd2bffe0, 0xa12bffe0, 0xa52bffe0};
opoffset0 opoffset1
{0x65080010, {0x65290010,
0x65080020, 0x65290020,
0x6508fff0, 0x6529fff0,
0x6508ffe0} 0x6529ffe0}
int opoffset2 [] = {0x65080010, 0x65080020, 0x6508fff0, 0x6508ffe0, 0x65080018, 0x6508fff8, 0x6508ffe8};
int opoffset3 [] = {0x65290010, 0x65290020, 0x6529fff0, 0x6529ffe0, 0x65290018, 0x6529fff8, 0x652 9ffe8};
int opoffset4 [] = {0x65080010, 0x65080020};
int iterator [] = {0x254affff};
int branch [] = {0x11600008};
int slot [];
int body [];
int fullbody [];
int prebranch [];
mtc0 ()
args (r1=0x01,count) mtc0 ()
args (r1=0x255,compare) ssnop (2)
$r1,$status
$r1,$r1,0x8031 IP7,IE->1, KSU->10, UX->1 $r1,$status ssnop (2) lui () args (r31,)
repeat (25) {
Code (0x40016000) # mfc0 Code (0x34218030) # ori Code (0x40816000) # mtc0
//----------------------------------- ARRAY INVERSION -----------------------------------//
addi t1,r0,-0x60 ori t2,r0,0x60
nvT0 = daddr (RW16, 0x100, 0x100); gload (t0,nvT0);
ldxc1 fr1, t1(t0)
METKA6:
sdxc1 fr1, t2(t0)
daddiu t1,t1,0x10
daddiu t2,t2,-0x10
bnel t2,t1,METKA6
ldxc1 fr1, t1(t0)
BranchJump: group (1) {
BEQL=10, BNEL=10, BGEZL=10, BGEZALL=0,
BLTZL=10, BLTZALL=0, BGTZL=10, BLEZL=10, JALR =0,
BEQ=10, BNE=10, BGEZ=10, BGEZAL=0,
J=50, JAL=0, SYSCALL=0, JR=10 }
sdxc1 fr1, t2(t0) enable (rarr2)
//----------------------------------- L_S LOOP FOR DCACHE -----------------------------------//
nvT0 = daddr (RO16, 0x100, 0x100); gload (t0,nvT0);
nnT2 = rand (3,7)
addiu ()
Args (t2,r0,nnT2)
random [1..7]
tmpl = rndcopy (l_s_dcache); tmp4 = merge (tmp3, tmp1); shuffle (tmp4); slot = segment (tmp4, 0,0); body = segment (tmp4,1,12);
Metka7:
ForVal (nn1,body) {
Code (nn1) }
bne t2,r0,Metka7 Code (slot[0]) disable (rarr2) BranchJump: group BEQL=10, BLTZL=10, BEQ=10, BNE=10 J=5 0, JAL=0, Code (tmp1[0]) enable (rarr2)
// generate codes sequence
//branch Metka
(1) {
BNEL=10, BGEZL=10, BGEZALL=0,
BLTZALL=0, BGTZL=10, BLEZL=10,
, BGEZ=10, BGEZAL=0,
SYSCALL=0, JR=10 }
L S LOOP FOR SCACHE
nvT0 = daddr (WO16, 0x100, 0x100); gload (t0,nvT0);
nnT2 = rand (3,7)
addiu ()
Args (t2,r0,nnT2)
//nn2
random [1..7]
lui
daddu
daddu
daddu
daddu
daddu
daddu
sub
t1,0x2 t4,t1,t1 t5,t1,t4 t6,t1,t5 t7,t1,t6 s0,t1,t7 s1,t1,s0 t1,r0,t1
tmp1 = rndcopy (l_s_scache);
opoffset00 = rndcopy (opoffset0);
shuffle (opoffset00);
shuffle (tmp4);
slot = segment (tmp4, 0,0);
body = segment (tmp4,1,10);
Metka7:
ForVal (nn1,body) {
Code (nn1) }
bne t2,r0,Metka7 Code (slot[0])
// generate codes sequence
//branch Metka
disable (rarr4)
BranchJump: group (1) {
BEQL=10, BNEL=10, BGEZL=10, BGEZALL=0,
BLTZL=10, BLTZALL=0, BGTZL=10, BLEZL=10,
BEQ=10, BNE=10, BGEZ=10, BGEZAL=0,
J=5 0, JAL=0, SYSCALL=0, JR=10 }
Code (tmp1[0]) enable (rarr4)
//-
FORVAL LOAD STORE GROUP
-//
nvT1 = daddr (RW16, 0x100, 0x100); gload (t1,nvT1);
disable (rarr1)
ForVal ($v1, -0x10-0x4 0:0x10) {
Xargs (offset=$v1, rb=r9,)
LoadStore: group (1,1) { LD=25, SD=75, SW=25}
}
enable (rarr1)
//-----------------------------------FORVAL LOAD STORE GROUP
-//
nvT1 = daddr (RW16, 0x100, 0x100); gload (t1,nvT1);
disable (rarr1)
ForVal ($v1, -0x60-0x60:0x20) {
Xargs (offset=$v1, rb=r9,)
LoadStore: group (1,1) { LD=10, SD=75, SW=15}
}
enable (rarr1)
//nn2
JALR
//
JALR =0
DMA
nvT1 = daddr (RW16, 0x100, 0x100);
gload (s1,nvT1);
lui s3,0x4000
ori s3,s3,0x600
sub s1,s1,s3
lui s0, 0xbb00
lui s2, 0x0040
ori s3, r0, 0x1000
ori s4,r0,0x5
sw s1,0x160(s0)
sw s2,0x164(s0)
sw s3,0x168(s0)
sw s4,0x16c(s0)
ssnop ssnop
//----------------------------------- FORVAL STORE GROUP -----------------------------------//
nvT1 = daddr (WO16, 0x100, 0x100); gload (t1,nvT1);
disable (rarr1)
ForVal ($v1, -8-0x40:0x8) {
Xargs (offset=$v1, rb=r9,)
LoadStore: group (1,1) { SD=100, SW=5 0, SH=5 0}
}
enable (rarr1)
BranchJump: group (1) {
BEQL=10, BNEL=10, BGEZL=10, BGEZALL=0,
BLTZL=10, BLTZALL=0, BGTZL=10, BLEZL=10, JALR =0,
BEQ=10, BNE=10, BGEZ=10, BGEZAL=0,
J=10, JAL=0, SYSCALL=30, JR=10 }
}
nop () :end
:Register r26 Res r27 Res
:end
:Memory
// In this
// Name
_program1
_program2
_program3
_program4
_program5
_program6
template, there are mapped segments for every operation mode:
Lower Upper I/D R/W Reserv
0x0000000000002000, 0x0000000000011fff, I, R, N, N, Y;
0x000000004fffeb00, 0x0000000050005fff, I, R, N, N, Y;
0x000000004007eb00, 0x0000000040086fff, I, R, N, N, Y;
0x00000000400feb00, 0x0000000040106fff, I, R, N, N, Y;
0x000000004017eb00, 0x0000000040186fff, I, R, N, N, Y;
0x00000000401feb00, 0x0000000040206fff, I, R, N, N, Y;
_data1. i64, 0x000000004027fe00, 0x00000000402801ff, D, R_ W, N, N, Y;
_data2. i64, 0x000000005006fe00, 0x00000000500701ff, D, R, N, N, Y;
_data3. i64, 0x0000000050070e00, 0x00000000500711ff, D, R_ W, N, N, Y;
_data4. i64, 0x0000000050071e00, 0x00000000500721ff, D, R_ W, N, N, Y;
_data5. i64, 0x0000000050072e00, 0x00000000500731ff, D, R_ W, N, N, Y;
_data7. i64, 0x0000000050073e00, 0x00000000500741ff, D, R_ W, N, N, Y;
_data8. i64, 0x0000000050074e00, 0x00000000500751ff, D, R_ W, N, N, Y;
_data9. i64, 0x0000000050075e00, 0x00000000500761ff, D, R_ W, N, N, Y;
_data10 .i64, 0x0000000050076e00, 0x00000000500771ff, D, R_ W, N, N, Y;
_data11 .i64, 0x0000000050077e00, 0x00000000500781ff, D, R_ W, N, N, Y;
_data12 .i64, 0x0000000050078e00, 0x00000000500791ff, D, R_ W, N, N, Y;
_data13 .i64, 0x0000000050079e00, 0x000000005007a1ff, D, R_ W, N, N, Y;
_data14 .i64, 0x000000005007fe00, 0x00000000500801ff, D, R_ W, N, N, Y;
_data15 .i64, 0x000000005009fe00, 0x00000000500a01ff, D, W, N, N, Y;
_data16 .i64, 0x00000000500bfe00, 0x00000000500c01ff, D, R_ W, N, N, Y;
_data17 .i64, 0x00000000500dfe00, 0x00000000500e01ff, D, R_ W, N, N, Y;
_data18 .i64, 0x00000000500ffe00, 0x00000000501001ff, D, R_ W, N, N, Y;
:end
Обратите внимание, представленные выше научные тексты размещены для ознакомления и получены посредством распознавания оригинальных текстов диссертаций (OCR). В связи с чем, в них могут содержаться ошибки, связанные с несовершенством алгоритмов распознавания. В PDF файлах диссертаций и авторефератов, которые мы доставляем, подобных ошибок нет.