Фаззинг процессоров

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

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

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

[1] https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/releases [2] https://www.gem5.org/

Требования к студенту

Владение C/C++, представление об архитектуре процессора. Знакомство с Verilog вообще необязательно.

Уровень

2 курс, 3 курс


Руководитель

Смирнов Кирилл Константинович


Консультант

Смирнов Кирилл Константинович


Источник

YADRO