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

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

  • Upload
    fiona

  • View
    80

  • Download
    1

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

аппаратуры

Институт системного программирования Российской академии наукhttp://www.ispras.ru

Камкин Александр Сергеевич[email protected]

Московский физико-технический институт (государственный университет), 11 марта 2013 г.

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

Корректность и надежность

• Корректность – соответствие системы налагаемым на нее требованиям– Минимизация ошибок проектирования

• Надежность – способность системы сохранять работоспособное состояние– Минимизация сбоев при эксплуатации

• (Корректность) (Надежность) – Ошибки – частая причина непредвиденных сбоев

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

Содержание лекции

• Введение– Ошибки и их последствия– Этапы проектирования– Функциональная верификация

• Основные подходы– Имитационная верификация– Генерация тестовых программ– Формальная верификация

• Проекты ИСП РАН– Проекты C++TESK / MicroTESK– Статический анализ и формальная верификация– Актуальные проблемы

Основная тема: обеспечение корректности микропроцессоров

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

Цена ошибки проектирования

Ракета-носитель Ариан 5, 1996несовместимость SW/HW

Боинг 757 (рейс 965), 1995отображение информации

Вертолет Чинук CH-47, 1994система управления двигателем

Комплекс ПВО Пэтриот, 1991система наведения ракет

• Человеческие жизни• > 100 млн долларов• Потеря репутации

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

Статистика ошибок

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

Linux

NASA

Microsoft

Среднее

Intel

0 10 20 30 40 50 60

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

Сложность микропроцессоровМикропроцессор• > 109 транзисторов• > 107 строк на Verilog• ~4-10 ядер

Проектирование• > 500 разработчиков• ~3-4 года работы• > 100 млн долларов

Верификация – более 60% затрат на проектирование микропроцессора!• > 10 000 ошибок проектирования (в спецификациях, Verilog-коде и т.д.)• > 100 инженеров-верификаторов (модели, тесты, формальные методы)• > 1000 компьютеров (круглосуточное моделирование и прогон тестов)

1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 20150.0

2.0

4.0

6.0

8.0

10.0

12.0

2,2 тыс (4004)10 мкм

29 тыс (8086)3 мкм

3.1 млн (Pentium)800 нм

42 млн (Pentium 4)180 нм 731 млн (Core i7)

45 нм

5 млрд (Xeon Phi)22 нм

Число транзисторов на кристалле (log10)

Число транзисторов удваивается каждые 2 года

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

Проектирование микропроцессора

Архитектурное проектирование

Детальное проектирование

Логический синтез

Физический синтез

Верификация

Верификация

Верификация

Программный прототип (С/C++)

Модель уровня RTL (Verilog/VHDL)

Логическая схема

Фотошаблоны

Требования

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

Функциональная верификация• Верификация – это проверка корректности,

соответствия реализации ее спецификации

– Экспертиза – непосредственный анализ результатов проектирования: инспекция кода программы и т.п.

– Статический анализ кода – автоматическая проверка заданных правил, поиск ошибок по шаблонам и т.п.

– Тестирование – оценка корректности системы по результатам ее работы в некоторых ситуациях

– Формальная верификация – строгое доказательство корректности формальной модели системы

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

Автоматизация верификации

Формальные модели, спецификации, правила

Генерациятестов

Проверкаповедения

Проверкамоделей

Дедуктивныйанализ

Статическийанализ

автоматы,цепи Маркова

пред- и постусловия,временные логики

автоматы,временные логики

аксиомы,правила вывода

семантика языка,шаблоны ошибок

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

Модульная и системная верификация

lui s1, 0x2779ori s1, s1, 0xc8b9lui s3, 0x4eeori s3, s3, 0xf798add v0, a0, a2sub t1, t3, t5add t7, s1, s3

Системная верификацияМодульная верификация

Проверяется модель всего микропроцессора

с помощью тестовых программ

Проверяется модель отдельного модуля

через входные и выходные сигналы

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

Языки описания аппаратуры (HDL)

input S;output R1, R2;void design() { while(true) { wait(S); delay(6); R1 = 1; delay(1); R1 = 0; R2 = 1; delay(1); R2 = 0; }}

// Код Verilogalways @(posedge CLK)begin if(state == 2’h0 && S) begin state <= 2’h1; delay <= 3’h6; end else if(state == 2’h1) begin delay <= delay – 3’h1; if(delay == 3’h0) begin state <= 2’h2; R1 <= 1’h1; end end else if(state == 2’h2) begin state <= 2’h3; R1 <= 1’h0; R2 <= 1’h1; end else if(state == 2’h3) begin state <= 2’h0; R2 <= 1’h0; endend

CLK

6 тактов

SR1R2

Параллельные присваивания

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

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

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

Задачи имитационной верификации

Генерация стимулов

Проверка реакций

Оценка покрытияТестовое покрытие

Тестовый оракул

Генератор стимулов

Генераторстимулов

Целеваясистема

Тестовыйоракул

Тестовоепокрытие

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

Тестирование на основе моделей

Модельсистемы

Генераторстимулов

Целеваясистема

Тестовыйоракул

Тестовоепокрытие

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

Преобразование интерфейсов

HDL

Входной интерфейс #1

Входной интерфейс #N

Data

Data Data

Data Data

Data Data

Выходной интерфейс #1

Выходной интерфейс #M

ОракулАдаптер входного

интерфейсаАдаптер выходного

интерфейсаЭталонная модель

input <int> in;output<bool> out;...assert(i < MAX_SIZE);fifo[i++] = recv(in);...send(out, i == MAX_SIZE);...

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

Генерация тестовых программЦелевая система

(HDL)

lui s1, 0xdeadori s1, s1, 0x0lui s3, 0xbeefori s3, s3, 0xfadd v0, a0, a2sub t1, t3, t5add t7, s1, s3

Тестовые программы(ассемблер)

Эталонный симулятор (C/C++)

Трассы выполнения(форматированный текст)

0x2000: lui ...0x2004: ori ...0x2008: ori ...0x200c: lui ...0x2010: add ...0x2014: sub ...0x2018: add ...

Компаратор трасс (Perl, Python)

0x2000: lui ...0x2004: ori ...0x2008: ori ...0x200c: lui ...0x2010: add ...0x2014: sub ...0x2018: add ...

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

Генерация тестов на основе моделейГенератор на основе моделей

Модель микропроцессора

Модель тестового покрытия

Ядро генератора

Библиотеки

Модель

Генератор

Test templatesTest templatesШаблоны тестов

Инженер помоделированию

Инженер поверификации

Test programsTest programsТестовые программы

Тестовая программа

Resource Initial Values:R6 = 8, R3 = – 25,..., R17 = – 16100 = 7, 110 = 25,..., 1F0 = 16

Instructions:500: Load R5 <- FF0:504: Store R4 -> 100508: Sub R5 <- R6 – R450C: Store R4 -> 110510: Add R6 <- R4 + R3:57C: Store R4 -> 1F0580: Add R9 <- R4 + R17

Шаблон тестовой программы

Variable: addr = 0x100Variable: regBias: Resource-Dependency(GPR) = 30Bias: Alignment(4) = 50

Instruction: Load R5 <- ? Bias: Alignment(16) = 100Repeat (addr < 0x200) Instruction: Store reg -> addr Select Instruction: Add ? <- reg + ? Bias: SumZero Instruction: Sub ? <- ? – ? addr = addr + 0x10

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

Формальная верификация

ТребованияЦелеваясистема

Соответствие

Модель системы Модель требованийФормальноесоответствие

~

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

Инструмент C++TESKhttp://forge.ispras.ru/projects/cpptesk-toolkit

• Разработка моделей аппаратуры и адаптеров моделей на языке C++

• Описание тестового покрытия и сценариев тестирования

• Генерация тестовой последовательности на основе обхода графа состояний модели

• Распараллеливание прогона теста на основе распределенного обхода графа состояний

• Генерация отчетов о тестировании

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

• Описание архитектуры микропроцессора на ADL языке (Sim-nML)

• Конфигурирование типовых подсистем

• Извлечение тестовых ситуаций

• Описание шаблонов тестовых программ (Ruby)

• Генерация шаблонов тестовых программ на основе моделей

Инструмент MicroTESKhttp://forge.ispras.ru/projects/microtesk

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

• Анализ потоков данных и зависимостей

• Извлечение автоматных моделей

• Автоматическая абстракция моделей

• Формальный анализ моделей

• Поиск зависаний и конфликтов

• Генерация направленных тестов

Статический анализ HDL-описанийalways @(posedge CLK)begin if(state == 3’h0 && S) begin state <= 2’h1; delay <= 3’h6; end else if(state == 3’h1) begin delay <= delay – 3’h1; if(delay == 3’h0) begin state <= 2’h2; R1 <= 1’h1; end end else if(state == 3’h2) begin state <= 2’h3; R1 <= 1’h0; R2 <= 1’h1; end else if(state == 3’h3) begin state <= 2’h0; R2 <= 1’h0; end else if(state == 3’h4) begin state <= 3’h0; endend

0

1

2

3

4

Sstate

delay 0delay= 0

Недостижимое состояние

Мертвый код

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

• Моделирование сетей на кристалле

• Вероятностный анализ работы сетей

• Доказательство отсутствия зависаний

• Генерация тестов по сетевым моделям

• Моделирование конвейеров

• Верификация многоядерных процессоров

Анализ коммуникационных сетейA.

Got

man

ov, S

. Cha

tterje

e, M

. Kish

inev

sky.

Ver

ifyin

g De

adlo

ck-F

reed

om o

f Com

mun

icati

on F

abric

s.

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

Актуальные проблемы

• Автоматическая генерация функциональных тестов на основе разного рода моделей

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

• Автоматический поиск зависаний (deadlocks) в микроархитектурных моделях процессоров

• Формальная верификация протоколов обеспечения когерентности памяти в многоядерных процессорах

• Распараллеливание верификации, обработка больших графов (генерация тестов и проверка моделей)

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

Основные работы отдела ТП• Создание технологий и инструментов

– Тестирование на основе моделей (UniTESK)– Проверка соответствия стандарту Linux Standard Base– Верификация драйверов Linux– Верификация микропроцессоров

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

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

Контактная информация• Институт системного программирования РАН (ИСП РАН)

http://www.ispras.ru

• Верификация микропроцессоров @ ИСП РАНhttp://hardware.ispras.ru

• А.С. Камкин, к.ф.-м.н., с.н.с. ИСП РАН[email protected]

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

Спасибо!