Обеспечение качества продукта является особенно важным при разработке критически важных компонентов, таких как процессоры. Современный процессор состоит из множества узлов, которые требуют тщательного тестирования. Типовые нагрузки обычно проверяются лучше всего, а ошибки возникают именно в "крайних случаях" [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