Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин научный руководитель: д.ф.-м.н. А.К.Петренко
2 Место задачи в разработке аппаратного обеспечения... output sm_out; reg [1:0] c, next_state; (posedge sm_cl) begin if (reset == 1'b1) c
3 Системное тестирование генерация тестовых программ эмулятор микропроцессора (эталон) ( на Си ) cравнение трасс Возникла ошибка Успешный прогон cимуляция designа (на Verilog) lui s1,0x27 ori s1,s1,0xc8 lui s3,0x4e ori s3,s3,0xf7... проводится «сравнением с эталоном»
Подсистемы управления памяти (MMU) 4
Ситуации в MMU классификация поведения в виде ситуаций ситуации для отдельных инструкций: возникновение исключительных ситуаций промахи/попадания в кэшах разных уровней, в TLB кэшируемые/некэшируемые обращения в память отображаемые/неотображаемые вирт.адреса ситуации для цепочек инструкций: чтение регистра после записи в него обращения по одинаковым/разным физическим/виртуальным адресам чтение после записи ячейки памяти одинаковые/разные страницы вирт.памяти одинаковые/разные строки кэш-памяти запись/чтение совместно с исключит.ситуациями «длинные» цепочки инструкций (~10 инстр-й) 5
Задача построения нацеленных тестов нацеленные на ситуации тесты пример ситуации: в 1-й инструкции происходит «деление на ноль», во 2-й – происходит кэш-промах DIV x, y, z « деление на 0 » LOAD y, x, c «промах в L1» ситуация в виде шаблона программы MOV x,0 MOV y,0 STORE y,x,3 STORE y,x,9 STORE y,x,7 STORE y,x,5 MOV z,0 DIV x,y,z LOAD y,x,1 тестовая программа 6
7 Актуальность и задача Актуальность: необходимы методы построения тестов, нацеленных на верификацию MMU в конвейерных микропроцессорах Задача: разработать метод построения нацеленных тестов (пригодный в том числе и для ситуаций из «длинных» цепочек инструкций на MMU)
Существующие методы построения нацеленных тестов 1. прямое конструирование программ (MicroTESK) только для ситуаций из 2-3 инструкций 2. сведение к системам уравнений (RAVEN, Genesys-Pro, MAATG) методы построения уравнений закрыты 8
Схема предлагаемого подхода ситуация (шаблон программы) модель варианта инструкции 1... модель блока 1 MMU формализовать микропроцессор система уравнений начальные значения регистров инициализ-я блока 1... тестовая программа 2. построение уравнений 3. решение уравнений 4. составление текста тестовой программы ручная работа автоматизированная 9 DIV x, y, z « деление на 0 » LOAD y, x, c «промах в L1»
Схема предлагаемого подхода ситуация (шаблон программы) модель варианта инструкции 1... модель блока 1 MMU формализовать микропроцессор система уравнений начальные значения регистров инициализ-я блока 1... тестовая программа 2. построение уравнений 3. решение уравнений 4. составление текста тестовой программы ручная работа автоматизированная 10
Модель блока MMU пример: какие блоки MMU нужны для ситуации (кэш, таблица страниц, TLB) блок моделируется ассоциативным массивом модель блока – значения заданных характеристик: структурные характеристики поведение строк блока L1 { policy=LRU; lines=4; regbits=7; key(tag:24); data(d:32); keyMatch(k:30) { k[29:6] = tag }; } 11
Схема предлагаемого подхода ситуация (шаблон программы) модель варианта инструкции 1... модель блока 1 MMU формализовать микропроцессор система уравнений начальные значения регистров инициализ-я блока 1... тестовая программа 2. построение уравнений 3. решение уравнений 4. составление текста тестовой программы ручная работа автоматизированная 12
Модель варианта инструкции пример: отдельный путь выполнения инструкции в виде утверждений о свойствах битовых строк источники условий: какие входные значения допустимы как вычислить адреса какие попадания /промахи происходят в блоках что загружается / сохраняется в блоках при каких условиях возникают исключительные ситуации LOAD (y,x,c) «промах в L1» [var y:64; var x:64; const c:16;] phys
Схема предлагаемого подхода ситуация (шаблон программы) модель варианта инструкции 1... модель блока 1 MMU формализовать микропроцессор система уравнений начальные значения регистров инициализ-я блока 1... тестовая программа 2. построение уравнений 3. решение уравнений 4. составление текста тестовой программы ручная работа автоматизированная 14
Построение уравнений: этап 1 ситуация hit(miss) p i hit(miss) p i+1... цепочка промахов/ попаданий в блок 1 load(store) q i,d i load(store) q i+1,d i+1... цепочка загрузки/ сохранения данных в блоке 1... phys = x + (64)c phys[1:0] = 0^2... условия на значения регистров, адресов, других промежуточных значений модели вариантов инструкций модели блоков MMU 15
Построение уравнений: этап 2 hit(miss) p i load(store) q i,d i phys[1:0] = 0^2 (свойства битовых строк) система уравнений (битовая и целочисленная арифметика) Hit [p i ] = p i {p 1,…,p i -1 } ΛEv(p 1,…,p i -1 ; p i ) Miss [p i ] = p i {p 1,…,p i -1 } Λ Ev(p 1,…,p i -1 ; p i ) равенство данных при равных адресах phys[1:0] = 0^2 (без изменений) это новые методы модели блоков MMU 16
Схема предлагаемого подхода ситуация (шаблон программы) модель варианта инструкции 1... модель блока 1 MMU формализовать микропроцессор система уравнений начальные значения регистров инициализ-я блока 1... тестовая программа 2. построение уравнений 3. решение уравнений 4. составление текста тестовой программы ручная работа автоматизированная DIV x, y, z « деление на 0 » LOAD y, x, c «промах в L1» MOV x, 0 MOV y, 0 STORE y, x, 3 STORE y, x, 7 STORE y, x, 9 STORE y, x, 5 MOV z, 0 DIV x, y, z LOAD y, x, 1 17
Теоремы корректности и полноты методов построения уравнений доказана корректность: если предлагаемые методы построят систему уравнений для шаблона, которая будет совместной, то ее решение будет удовлетворять шаблону доказана полнота: если для шаблона существует тест, то предлагаемые методы строят систему уравнений, среди решений которой есть этот тест (если она несовместна, то шаблону не соответствует ни один тест) 18
Новизна ситуация (шаблон программы) модель варианта инструкции 1... модель блока 1 MMU... система уравнений начальные значения регистров инициализ-я блока 1... тестовая программа I. модели вариантов инструкций и блоков MMU II. методы построения уравнений III. написана программа, строящая уравнения 19
Особенности предлагаемых методов блоки инициализируются цепочкой обращений в них по адресам – адреса вычисляет решатель уравнений единая система уравнений компактность уравнений (в них выражается не изменение состояния, а зависимости адресов) 20
21 Где предлагаемые методы работают многоуровневая кэш-память обращение в память с / без виртуальной памяти сквозная запись / отложенная запись доп.условия на строки кэш-памяти virtually indexed кэш-память virtually tagged кэш-память
22 Направления развития псевдослучайное вытеснение псевдослучайный выбор блоков MMU в инструкции временные ограничения (длительности, зависимости от скорости выполнения) циклические действия (например, sqrt) кэш-память инструкций тестирование, нацеленное на эти особенности, надо проводить иначе
23 Реализация существующий генератор шаблонов модели вариантов инструкций (xml) конструктор текстов asm (Java) ~100стр. на вариант исполнения инструкции ~2000стр. ~1000стр. уравнения (smt) стр. генератор уравнений (ruby) модели блоков MMU (xml) ~10стр. на блок шаблон теста решение равнений тесты (asm)
24 Эксперименты увеличение допустимого размера шаблонов (было 2-3, стало 9-12) среднее время построения одного теста – 1-30с.
Практическое использование микропроцессор архитектуры MIPS блоки MMU в микропроцессоре: кэш L1 16кБ кэш L2 256кБ TLB 48 строк (по 2 страницы в строке) microTLB 4 строки 25
26 Результаты 1. модель блока MMU, описывающая его характеристики 2. модель инструкции в виде совокупности отдельных вариантов, задаваемых в виде соотношений битовых строк и свойств наличия или отсутствия данных в блоках 3. метод построения разрешаемых уравнений для шаблонов в виде уравнений над битовыми строками без описания изменения состояния MMU 4. методы описания стратегий вытеснения c помощью уравнений над битовыми строками и ограничениями сумм бит
27 Публикации 1. статья в «Программировании» [из списка ВАК] 2. статья в «Вычислительных методах и программировании» 3-4. статьи на SYRCoSE-2008 и статья на EWDTS статьи в сборниках трудов ИСП РАН (тт.15, 17)
Примеры описаний инструкций rs rt rt rs rs rt rt temp temp арифметическое переполнение ADD rd, rs, rt
Уравнения (constraints)
Теоремы о количестве адресов, инициализирующих блок общий случай: m n · (n + 2w) для LRU: m n · w + M n – количество промахов/попаданий (~ длина шаблона) M – количество промахов w – ассоциативность блока
Метод построения уравнений для стратегий вытеснения Ev(x 1,…,x i ;x) = ( u x (x 1 ) + … + u x (x i ) > C ) C – константа (значение зависит от стратегии вытеснения) u x (x k ) = 1, если x k «способствует вытеснению» x; 0, иначе для LRU: u x (x k ) = ( x{x k,…,x i } Λ x k{x k+1,…,x i } )
Схема предлагаемого подхода ситуация S (шаблон программы) модель инструкции 1 в ситуации S... модель блока 1 MMU формализовать микропроцессор система уравнений начальные значения регистров инициализ-я блока 1... тестовая программа 2. построение уравнений 3. решение уравнений 4. составление текста тестовой программы ручная работа автоматизированная 33
Шаблоны и их связь с моделями инструкций и моделями блоков MMU DIV x, y, z « деление на 0 » LOAD y, x, c «промах в L1» ситуация в виде шаблона программы DIV (x,y,z) «деление на 0» { … } LOAD (y,x,c) «промах в L1» { …... L1... } модели инструкций модели блоков MMU L1 { … } модели инструкций формализуют, как должны работать инструкции модели блоков MMU формализуют кэши, таблицы страниц, пути выполнения инструкций