1 / 26

Проблемы обеспечения корректности программ и аппаратуры

Институт системного программирования Российской академии наук http://www.ispras.ru . Проблемы обеспечения корректности программ и аппаратуры. Камкин Александр Сергеевич kamkin@ispras.ru. Московский физико-технический институт (государственный университет), 11 марта 2013 г.

fiona
Download Presentation

Проблемы обеспечения корректности программ и аппаратуры

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Институт системного программирования Российской академии наук http://www.ispras.ru Проблемы обеспечения корректности программ и аппаратуры Камкин Александр Сергеевич kamkin@ispras.ru Московский физико-технический институт (государственный университет), 11 марта 2013 г.

  2. Корректность и надежность • Корректность – соответствие системы налагаемым на нее требованиям • Минимизация ошибок проектирования • Надежность – способность системы сохранять работоспособное состояние • Минимизация сбоев при эксплуатации •  (Корректность) (Надежность) • Ошибки – частая причина непредвиденных сбоев

  3. Содержание лекции Основная тема: обеспечение корректности микропроцессоров • Введение • Ошибки и их последствия • Этапы проектирования • Функциональная верификация • Основные подходы • Имитационная верификация • Генерация тестовых программ • Формальная верификация • Проекты ИСП РАН • Проекты C++TESK/ MicroTESK • Статический анализ и формальная верификация • Актуальные проблемы

  4. Цена ошибки проектирования Вертолет Чинук CH-47, 1994 система управления двигателем Боинг 757 (рейс 965), 1995 отображение информации • Человеческие жизни • > 100 млн долларов • Потеря репутации Комплекс ПВО Пэтриот, 1991 система наведения ракет Ракета-носитель Ариан 5, 1996 несовместимость SW/HW

  5. Статистика ошибок Среднее число ошибок на 1000 строк кода

  6. Сложность микропроцессоров Микропроцессор • > 109 транзисторов • > 107строк на Verilog • ~4-10 ядер Проектирование • > 500 разработчиков • ~3-4года работы • > 100 млн долларов Верификация – более 60%затрат на проектирование микропроцессора! • > 10 000ошибок проектирования (в спецификациях, Verilog-коде и т.д.) • > 100 инженеров-верификаторов (модели, тесты, формальные методы) • > 1000 компьютеров (круглосуточное моделирование и прогон тестов) Числотранзисторов удваивается каждые 2 года

  7. Требования Программный прототип (С/C++) Архитектурное проектирование Верификация Модель уровня RTL (Verilog/VHDL) Детальное проектирование Верификация Логическая схема Логический синтез Верификация Физический синтез Фотошаблоны Проектирование микропроцессора

  8. Функциональная верификация • Верификация – это проверка корректности, соответствия реализации ее спецификации • Экспертиза – непосредственный анализ результатов проектирования: инспекция кода программы и т.п. • Статический анализ кода – автоматическая проверка заданных правил, поиск ошибок по шаблонам и т.п. • Тестирование – оценка корректности системы по результатам ее работы в некоторых ситуациях • Формальная верификация – строгое доказательство корректности формальной модели системы

  9. Автоматизация верификации Формальные модели, спецификации, правила Генерация тестов Проверка поведения Дедуктивный анализ Статический анализ Проверка моделей автоматы, цепи Маркова пред- и постусловия, временные логики автоматы, временные логики аксиомы, правила вывода семантика языка, шаблоны ошибок

  10. Модульная и системная верификация Модульная верификация Системная верификация Проверяется модель отдельного модуля Проверяется модель всего микропроцессора через входные и выходные сигналы с помощью тестовых программ lui s1, 0x2779 ori s1, s1, 0xc8b9 lui s3, 0x4ee ori s3, s3, 0xf798 add v0, a0, a2 sub t1, t3, t5 add t7, s1, s3

  11. Языки описания аппаратуры (HDL) // Код Verilog always@(posedgeCLK) begin if(state == 2’h0 && S) begin state <= 2’h1; delay <= 3’h6; end elseif(state == 2’h1) begin delay <= delay – 3’h1; if(delay == 3’h0) begin state <= 2’h2; R1 <= 1’h1; end end elseif(state == 2’h2) begin state <= 2’h3; R1 <= 1’h0; R2 <= 1’h1; end elseif(state == 2’h3) begin state <= 2’h0; R2 <= 1’h0; end end input S; output R1, R2; voiddesign() { while(true) { wait(S); delay(6); R1 = 1; delay(1); R1 = 0; R2 = 1; delay(1); R2 = 0; } } CLK S R1 R2 6 тактов Параллельные присваивания

  12. Поведение цифровой аппаратуры

  13. Целевая система Генератор стимулов Тестовое покрытие Тестовый оракул Задачи имитационной верификации • Генерация стимулов • Проверка реакций • Оценка покрытия Генератор стимулов Тестовый оракул Тестовое покрытие

  14. Модель системы Целевая система Генератор стимулов Тестовое покрытие Тестовый оракул Тестирование на основе моделей

  15. Data Data Data Data Data Data Data Преобразование интерфейсов Входной интерфейс #1 Выходной интерфейс #1 HDL Входной интерфейс #N Выходной интерфейс #M input<int> in; output<bool> out; ... assert(i < MAX_SIZE); fifo[i++] = recv(in); ... send(out, i == MAX_SIZE); ... Оракул Адаптер входного интерфейса Адаптер выходного интерфейса Эталонная модель

  16. 0x2000: lui ... 0x2004: ori ... 0x2008: ori ... 0x200c: lui ... 0x2010: add ... 0x2014: sub ... 0x2018: add ... 0x2000: lui ... 0x2004: ori ... 0x2008: ori ... 0x200c: lui ... 0x2010: add ... 0x2014: sub ... 0x2018: add ... lui s1, 0xdead ori s1, s1, 0x0 lui s3, 0xbeef ori s3, s3, 0xf add v0, a0, a2 sub t1, t3, t5 add t7, s1, s3 Генерация тестовых программ Целевая система (HDL) Трассы выполнения (форматированный текст) Тестовые программы (ассемблер) Компаратор трасс (Perl, Python) Эталонный симулятор (C/C++)

  17. Модель микропроцессора Ядро генератора Библиотеки Модель тестового покрытия Генерация тестов на основе моделей Шаблон тестовой программы Variable: addr = 0x100 Variable: reg Bias: Resource-Dependency(GPR) = 30 Bias: Alignment(4) = 50 Instruction: Load R5 <- ? Bias: Alignment(16) = 100 Repeat(addr < 0x200) Instruction: Storereg-> addr Select Instruction: Add ? <-reg + ? Bias: SumZero Instruction: Sub ? <- ? – ? addr = addr + 0x10 Тестовая программа Resource Initial Values: R6 = 8, R3 = – 25,..., R17 = – 16 100 = 7, 110 = 25,..., 1F0 = 16 Instructions: 500: Load R5 <- FF0 : 504: Store R4 -> 100 508: Sub R5 <- R6 – R4 50C: Store R4 -> 110 510: Add R6 <- R4 + R3 : 57C: Store R4 -> 1F0 580: Add R9 <- R4 + R17 Генератор на основе моделей Модель Инженер по моделированию Генератор Testtemplates Testtemplates Шаблоны тестов Инженер по верификации Test programs Test programs Тестовые программы

  18. Формальная верификация Целевая система Требования Соответствие Модель системы Модель требований Формальное соответствие ~

  19. Инструмент C++TESKhttp://forge.ispras.ru/projects/cpptesk-toolkit • Разработка моделей аппаратуры и адаптеров моделей на языке C++ • Описание тестового покрытия и сценариев тестирования • Генерация тестовой последовательности на основе обхода графа состояний модели • Распараллеливание прогона теста на основе распределенного обхода графа состояний • Генерация отчетов о тестировании

  20. Инструмент MicroTESKhttp://forge.ispras.ru/projects/microtesk • Описание архитектуры микропроцессора на ADL языке (Sim-nML) • Конфигурирование типовых подсистем • Извлечение тестовых ситуаций • Описание шаблонов тестовых программ (Ruby) • Генерация шаблонов тестовых программ на основе моделей

  21. Статический анализ HDL-описаний always@(posedgeCLK) begin if(state == 3’h0 && S) begin state <= 2’h1; delay <= 3’h6; end elseif(state == 3’h1) begin delay <= delay – 3’h1; if(delay == 3’h0) begin state <= 2’h2; R1 <= 1’h1; end end elseif(state == 3’h2) begin state <= 2’h3; R1 <= 1’h0; R2 <= 1’h1; end elseif(state == 3’h3) begin state <= 2’h0; R2 <= 1’h0; end else if(state == 3’h4)begin state <= 3’h0; end end state 0 • Анализ потоков данных и зависимостей • Извлечение автоматных моделей • Автоматическая абстракция моделей • Формальный анализ моделей • Поиск зависаний и конфликтов • Генерация направленных тестов S 1 delay 0 delay= 0 2 3 Недостижимое состояние 4 Мертвый код

  22. Анализ коммуникационных сетей • Моделирование сетей на кристалле • Вероятностный анализ работы сетей • Доказательство отсутствия зависаний • Генерация тестов по сетевым моделям • Моделирование конвейеров • Верификация многоядерных процессоров A. Gotmanov, S. Chatterjee, M. Kishinevsky. Verifying Deadlock-Freedom of Communication Fabrics.

  23. Актуальные проблемы • Автоматическая генерация функциональных тестов на основе разного рода моделей • Глубокий статический анализ Verilog-описаний цифровой аппаратуры (потенциальные ошибки, мертвый код и т.п.) • Автоматический поиск зависаний (deadlocks)в микроархитектурных моделях процессоров • Формальная верификация протоколов обеспечения когерентности памяти в многоядерных процессорах • Распараллеливание верификации, обработка больших графов (генерация тестов и проверка моделей)

  24. Основные работы отдела ТП • Создание технологий и инструментов • Тестирование на основе моделей (UniTESK) • Проверка соответствия стандарту Linux Standard Base • Верификация драйверов Linux • Верификация микропроцессоров • Разработка тестов и тестирование • Информационная система оператора связи • Операционные системы реального времени • Базовые библиотеки Linux (Linux Standard Base) • Сетевые протоколы IPv6, Mobile IPv6, IPsec • Отдельные модули компиляторов Intel • Микропроцессоры архитектуры MIPS/ Elbrus

  25. Контактная информация • Институт системного программирования РАН (ИСП РАН)http://www.ispras.ru • Верификация микропроцессоров @ ИСП РАНhttp://hardware.ispras.ru • А.С. Камкин, к.ф.-м.н., с.н.с. ИСП РАНkamkin@ispras.ru

  26. Спасибо!

More Related