Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин.

Презентация:



Advertisements
Похожие презентации
Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин.
Advertisements

Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Корныхин Евгений Валерьевич научный руководитель: д.ф.-м.н. Петренко.
Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин ИСП РАН / кафедра СП ВМК МГУ научный руководитель:
Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин научный руководитель: д.ф.-м.н. А.К.Петренко.
Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин научный руководитель: д.ф.-м.н. А.К.Петренко.
Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин научный руководитель: д.ф.-м.н. А.К.Петренко.
Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин ИСП РАН / кафедра СП ВМК МГУ научный руководитель:
Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин научный руководитель: д.ф.-м.н. А.К.Петренко.
Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин научный руководитель: д.ф.-м.н. А.К.Петренко.
Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин науч.рук-ль: проф. А.К.Петренко.
Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин науч.рук-ль: проф. А.К.Петренко.
Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин кафедра СП научный руководитель: д.ф.-м.н. А. К.
Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин кафедра СП ВМК МГУ научный руководитель: д.ф.-м.н.
Автоматическое построение тестов для аппаратного обеспечения с использованием разрешения ограничений проф. А.Петренко, Е.Корныхин.
Автоматическое построение тестов для аппаратного обеспечения с использованием разрешения ограничений проф. А.Петренко, Е.Корныхин.
Автоматическое построение тестов для аппаратного обеспечения с использованием разрешения ограничений проф. А.Петренко, Е.Корныхин.
Исследование методов генерации программ для тестирования модулей управления памяти микропроцессоров Корныхин Евгений.
Исследование и разработка методов построения тестовых программ для тестирования MMU.
Исследование и разработка методов генерации тестовых программ для проверки модулей управления памяти микропроцессоров Корныхин Евгений науч.рук-ль: проф.каф.СП,
Инструменты генерации тестовых данных для функционального тестирования микропроцессоров и интерфейсов программных систем д.ф.-м.н., проф.каф.СП Александр.
Транксрипт:

Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин

Актуальность: подсистемы управления памяти (MMU)

Системное тестирование Задача эмулятор микропроцессора (эталон) ( на Си ) cравнение трасс Возникла ошибка Успешный прогон программная модель (на Verilog) lui s1,0x27 ori s1,s1,0xc8 lui s3,0x4e ori s3,s3,0xf7... проводится «сравнением с эталоном» тестовые программы Задача – построение тестовых программ

Тестовые шаблоны STORE x, y, z «page fault» LOAD y, x, c «промах в кэше» тестовый шаблон 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 STORE x,y,z LOAD y,x,1 тестовая программа инициализирующая цепочка инструкций цепочка инструкций тестового шаблона

Сложность построения тестовых программ по тестовым шаблонам переборная задача [Кук, 1971] нетривиальное сведение к решению систем уравнений и неравенств («ограничений»)

Предлагаемый подход к построению тестовых программ генератор системы ограничений конструктор текста программы решатель ограничений тестовый шаблон тестовая программа описания вариантов исполнения инструкций описания устройств ограничения для промахов и попаданий ограничения для всего шаблона

Эксперименты увеличение допустимого размера шаблонов (было 2-3, стало 11-12) среднее время построения одной тестовой программы – 1-30сек.

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

Основные результаты 1. Создан язык для описания вариантов исполнения инструкций ПУП широкого класса современных микропроцессоров, для которого разработаны формальные определения синтаксиса и семантики. 2. Построена математическая модель последовательной ПУП, в рамках которой сформулирован алгоритм формирования системы ограничений на значения аргументов инструкций тестовой программы. Свойства корректности и полноты этого алгоритма доказаны. 3. Предложен метод полезных обращений, позволяющий сократить число ограничений на значения аргументов инструкций тестовой программы для случаев вытеснения элемента из кэш-памяти. Получены оценки минимально необходимой длины инициализирующей последовательности инструкций для основных стратегий замещения в кэш-памяти (LRU, Pseudo-LRU, FIFO). 4. На основе предложенных моделей и методов создан прототип системы построения тестовых программ для проверки ПУП микропроцессоров архитектуры MIPS64 и экспериментально показана его эффективность.

11 Где предлагаемые методы работают многоуровневая кэш-память обращение в память с / без виртуальной памяти сквозная запись / отложенная запись доп.условия на строки кэш-памяти virtually indexed кэш-память virtually tagged кэш-память

12 Направления развития псевдослучайное вытеснение псевдослучайный выбор блоков MMU в инструкции временные ограничения (длительности, зависимости от скорости выполнения) циклические действия (итеративная реализация sqrt) кэш-память инструкций многоядерные микропроцессоры тестирование, нацеленное на эти особенности, надо проводить иначе

13 Реализация существующий генератор шаблонов описания вариантов инструкций (xml) конструктор текстов asm (Java) ~100стр. на вариант исполнения инструкции ~2000стр. ~1000стр. ограничения (smt) стр. генератор ограничений (ruby) описания устройств MMU (xml) ~10стр. на блок шаблон теста решение ограничений тесты (asm)

Примеры описаний инструкций 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 : A D, A – конечное множество адресов, D – конечное множество данных, |def(S)| = const Строка – пара ( x, S( x )), x def(S) Обращение к устройству – это адрес («обращение по адресу»)

Основные определения Данные по адресу x присутствуют (или, находятся) в устройстве : x def(S) Данные по адресу x не присутствуют (или, не находятся) в устройстве : x def(S) Попадание – обращение по адресу x к устройству, если x def(S) Промах – обращение по адресу x к устройству, если x def(S)

Основные определения Стратегия вытеснения – это пара функций (Policy, Ev), Policy: S x A S, Ev: S A : x – вытесняемая строка, если x = Ev(S)

Направления исследований стратегий вытеснения эффективность стратегий вытесн. способы определения стратегий вытесн. после обращения x 1. затем x 2, …, затем x n данные по адресу x не присутствуют в устройстве x 1, x 2, …, x n таковы, что S, S Policy(Policy(…Policy(S, x 1 ), x 2 ), …, x n ) = Policy(Policy(…Policy(S, x 1 ), x 2 ), …, x n ) P( x 1, x 2, …, x n ) D ( x 1, x 2, …, x n ; x ) x def(P( x 1, x 2, …, x n ))

Метод полезных обращений 1. подобрать функцию a: A* x A N такую, что a, a: a a D ( x 1, x 2, …, x n ; x ) a a( x 1, x 2, …, x n ; x) a a( x 1, x 2, …, x n, x ; x ) = a f: a( x 1, x 2, …, x n+1 ; x ) = f(a( x 1, x 2, …, x n ; x ), x 1, x 2, …, x n+1, x ) f(a, x 1, x 2, …, x n, x ) = f(a, x n, x ) ! x : a( x 1, x 2, …, x n ; x ) = a a( x 1, x 2, …, x n ; Ev(x 1, x 2, …, x n )) = a ( x i = x /\ x {x i+1, x i+2, …, x n } /\ Ev(x 1, x 2, …, x n ) = x ) (a i a i+1 … a n /\ k =i+1..n |a k - a k-1 |1)

Метод полезных обращений 1. подобрать функцию a: A* x A N 2. C = a - a 3. пусть a i = a( x 1, x 2, …, x i ; x ) 4. до i* u x ( x 1, x 2, …, x i ) 0 5. после i* u x ( x 1, x 2, …, x i ) (a i > a i-1 )

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

Ошибки в MMU ошибки обработки управляющих битов ошибки сопоставления тэгов конфликты использования ресурсов ошибки обновления/вытеснения данных ошибки синхронизации данных ошибки планирования обработки запросов ошибки, вызванные исключениями 26