Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1531

.pdf
Скачиваний:
2
Добавлен:
15.11.2022
Размер:
52.65 Mб
Скачать

по этой причине заменила симуляторы и работает со схемами из миллионов транзисторов.

Логика первого порядка (FOL). FOL включает операторы и .

Обычно допускаются также целые числа. Некоторая автоматизация для проверки FOL выполнима. Однако на сегодня FOL неразрешима. Это означает, что могут быть неопределенные случаи. Популярной техникой является исчисление Хоара (Hoare).

Логика высшего порядка (HOL). HOL базируется на лямбда-

исчислении и позволяет манипулировать функциями так же, как другими объектами. Для HOL доказательства едва ли когда-нибудь удастся автоматизировать, и она обычно должна выполняться вручную с некоторой поддержкой доказательства.

Логика высказываний может быть использована для проверки комбинационных логических схем. Она не может напрямую моделировать конечные автоматы. Для конечных автоматов необходимо оборвать обратные связи в схеме FSM и работать с несколькими копиями FSM, каждая из которых представляет результат воздействия одного входного набора (итерационная модель автомата с памятью). Однако этот метод не работает для длинных входных последовательностей.

С такими последовательностями может справиться техника «Проверка модели» (model checking). Обычно проверка модели применялась для проектирования аппаратуры, но в последние 10...15 лет используется при разработке ПО. Эта техника использует темпоральную логику для задания спецификации, так как последняя способна выражать требования по безопасности для одновременных систем. Темпоральная логика является разновидностью модальной логики. Она изначально разрабатывалась для выражения таких модальностей, как необходимость и возможность.

Темпоральная логика используется для рассуждения о знании, позволении, обязательстве.… Для текущего состояния она рассуждает о том, что есть истина на основании истинности или ложности атомарных высказываний. Она рассматривает выполнение системы как последовательность состояний, когда «текущее время» является индексом в последовательности. Будущее – более поздний индекс, прошлое – более ранний индекс.

Синтаксис темпоральной логики состоит из следующих элементов:

p: примитивные высказывания;

стандартные булевы связки (¬, , , );

171

темпоральные операторы:

Gφ, φ всегда истинно (т.е. теперь и в будущем), глобально;

Fφ, φ истинно когда-нибудь в будущем;

Xφ, φ истинно в следующий момент времени;

φUψ, φ истинно, пока не ψ истинно.

Задача проверки модели: Пусть M – граф переходов.

Пусть φ – спецификация в темпоральной логике (темпоральная формула).

Найти все состояния s графа переходов M такие, что M, s φ.

В качестве примера рассмотрим микроволновую печь [35]. На рис. 92 приведена модель вычислений микроволновой печи в виде графа переходов M. Модель содержит четыре атомарных высказывания:

Start: нажата кнопка «Start»;

Close: дверца закрыта?;

Heat: печь активна;

Error: состояние ошибки.

Рис. 92. Граф переходов микроволновой печи

Состояния графа представляют ситуации (различные комбинации из атомарных высказываний), в которых может находиться система в различные моменты времени. Ребра могут иметь метки, изображающие действия системы.

172

Рассмотрим свойство безопасности (спецификацию), которое на естественном языке формулируется следующим образом: печь не нагревается, пока не закрыта дверь. Это свойство в виде темпоральной формулы имеет вид (¬Heat) U Close. На рис. 93 приведено решение задачи проверки модели для микроволновой печи на соответствие свойству безопасности. Во всех состояниях свойство подтверждается.

Рис. 93. Проверка свойства безопасности микроволновой печи

Инструмент верификации, использующий технику проверки модели, имеет два входа:

модель, которую необходимо проверить;

свойства, которые требуется проверить.

Инструмент верификации может доказать или опровергнуть свойства. В последнем случае он может предоставить контрпример (последовательность действий системы, на которой нарушается спецификация). Проверка модели легче автоматизируется, чем FOL.

EMC-система [36] интегрирует проверку модели и логику высшего порядка (рис. 94).

Эта система принимает свойства, описанные как CTL-формулы (сomputation tree logic – логика вычислительного дерева). CTL-форму- лы состоят из двух частей:

квалификатор пути специфицирует пути в графе переходов;

квалификатор состояния специфицирует состояния.

173

Рис. 94. EMC-система

Например, M, s |= AGg означает, что в графе переходов M свойство g сохраняется для всех путей (обозначены как A), начинающихся в s, и всех состояний (обозначены как G).

2.7.3. Оценка производительности

Цель оценки производительности состоит в предсказании производительности системы. Основная проблема состоит в том, что необходимо иметь наихудшие сведения о системе раньше, чем средние значения о ней. Такая информация необходима для гарантии реализации ограничений реального времени. Для получения информации о производительности уже на ранних стадиях проектирования было предложено два различных класса техник: предполагаемые и точные значения стоимости и производительности. Техника точного значения использует реальный программный код (в бинарной форме) на близкой к реальной аппаратной платформе. Это возможно, только если существуют интерфейсы с инструментами разработки аппаратного и программного обеспечения. Метод является достаточно точным, но со значительными временными затратами. Для получения точного значения необходимо также рассматривать и коммуникационные компоненты системы. К сожалению, обычно трудно подсчитать стоимость коммуникационной составляющей на ранней стадии проектирования.

2.7.3.1. Оценка WCET

Оценивание WCET [37]. Эти техники формальной оценки производительности требуют некоторых знаний архитектуры. Они меньше подходят для очень ранней стадии проектирования, но некоторые из них могут быть использованы без знаний всех деталей целевой архитектуры. Эти подходы моделируют реальность, физическое время. Планирование задач требует некоторых знаний о длительности их вы-

174

полнения, особенно если требуются гарантии удовлетворения временных ограничений, таких как в системах реального времени. WCET (worst case execution time – наихудший случай времени выполнения) является базой для большинства алгоритмов планирования задач. Некоторые определения, относящиеся к WCET, показаны на рис. 95.

Величина WCET является наибольшим временем выполнения программы для некоторых входных данных и начальных состояний. К сожалению, WCET чрезвычайно трудно вычислить. В общем случае вычисление является неразрешимой задачей, но в любом случае WCET имеет конечное значение, так как работа программы всегда останавливается. Следовательно, WCET может быть вычисленной только для определенных программ, например для программ без рекурсии, без циклов while и с циклами с заведомо известным числом повторений. Но даже с такими ограничениями обычно практически невозможно вычислить WCET. Препятствиями для точного прогнозирования на этапе проектирования являются эффект от конвейеров в архитектурах современных процессоров с различными видами рисков и иерархия памяти с ограниченной предсказуемостью частоты успешных обращений. Вычисление WCET для систем, содержащих кеш, конвейеры, прерывания и виртуальную память, является еще большим испытанием. В результате счастьем является возможность получения хороших верхних границ величины WCET. Такие верхние границы обычно называют ожидаемой WCET или WCETEST. Они должны иметь два свойства:

быть надежными (WCETEST WCET);

быть впритирку (WCETEST-WCET << WCET).

Рис. 95. Терминология WCET

Заметим, что термин «ожидаемый» не означает, что результирующее время ненадежно.

175

Иногда архитектурные особенности, уменьшающие среднее время выполнения, но не гарантирующие уменьшение WCET, полностью исключаются из проектов реального времени. Вычисление впритирку верхних границ времени выполнения все еще может быть трудным. Рассмотренные выше архитектурные особенности также представляют проблему для вычисления WCETEST.

Величина BCET (best-case execution time – наилучший случай вре-

мени выполнения) и соответственная ожидаемая BCETEST определяются в аналогичной манере. Величина BCETEST является надежной нижней границей впритирку времени выполнения.

Невозможно вычисление границ впритирку из программы, написанной на языке высокого уровня, таком как Си, без знания сгенерированного ассемблерного кода и лежащей в основании архитектурной платформы.

На рис. 96 представлена архитектура инструмента aiT [42]. aiT начинает с исполнительного объектного файла, содержащего требуемый для анализа код. На основании этого кода строится граф потока управления (CFG – control flow graph) – представление в виде графа всех путей, по которым может пройти программа во время своего выполнения. Затем выполняется преобразование циклов. Оно включает преобразование вызовов рекурсивных функций в циклы, а также виртуальное разворачивание цикла. Разворачивание называют виртуальным, так как оно выполняется без реального модифицирования кода. Результат представляется в CRL-формате (control flow representation language – язык представления потока управления). На следующем этапе выполняется различный статический анализ. В процессе статического анализа читается AIP-файл, содержащий пояснения разработчика. Эти пояснения включают информацию, которую трудно или невозможно извлечь из программы автоматически (например, границы сложных циклов). Статический анализ включает анализ значений, стека и конвейера.

Анализ значений вычисляет границы интервалов содержимого регистров и локальных переменных. Полученная информация может быть использована для анализа потока управления и анализа данных в кеш. Часто точно известны значения адресов, что помогает предсказуемому анализу доступа к памяти.

176

Рис. 96. Архитектура aiT-инструмента для анализа времени

Следующий шаг – это анализ кеш и конвейера. Предположим, что используется n-входовая ассоциативная по множеству кеш (рис. 97). Рассмотрим часть (строку) кеш, соответствующую отдельному индексу (выделена жирной линией). Предположим, что замещение этой части кеш выполняется по алгоритму LRU (замещения наиболее давней по использованию страницы). Это означает, что среди всех ссылок на ячейки памяти для отдельного индекса в адресе последние n из них отсылали к блокам памяти, запомненным в этой части кеш. Блок памяти ‘b’, получивший доступ, перемещается в позицию кеш, становящуюся самой «молодой», а все остальные блоки кеш «стареют» на 1.

Рис. 97. Ассоциативная по множеству кеш (n = 4)

177

Предположим, что необходимые для LRU действия аппаратуры выполняются для каждого индекса и что каждый индекс управляется независимо от других. При таком предположении все замещения для определенного индекса полностью независимы от решения для других индексов. Эта независимость крайне важна, так как позволяет рассматривать каждый из индексов независимо.

Представим часть кеш и отдельный индекс. Предположим, что имеется информация о возможных записях для каждого из n входов (колонок) кеш. Кроме того, рассмотрим сходящийся поток управления. Что известно о содержимом части кеш в точке схождения путей? Необходимо сделать различие между анализом возможной и обязательной информации. Анализ обязательности показывает записи, которые должны быть в кеш. Эта информация полезна для вычисления WCET. Анализ возможности идентифицирует записи, которые могут быть в кеш. Эта информация обычно используется для заключения о том, что определенная информация точно не будет в кеш, а это необходимо для вычисления BCET. В качестве примера анализа обязательности и возможности рассмотрим обязательную информацию в сходящемся потоке управления. Рис. 98 показывает соответствующую ситуацию: содержимое строки 4-входовой кеш для одного и другого пути в CFG до схождения. Элементы, расположенные слева, предполагаются «моложе» элементов, расположенных правее.

Рис. 98. Анализ обязательности в программе соединения данных для LRU кеш

Объект памяти ‘c’ предполагается самым «молодым» для одного сходящегося пути, а объект ‘a’ – для другого. «Возраст» остальных элементов определяется таким же образом. Что известно о наихудшем случае в точке схождения путей? Определенный элемент гарантированно будет в кеш, только если он гарантированно был в обоих путях. Это означает, что пересечение объектов памяти определяет результат анализа обязательности после схождения. За наихудший случай необ-

178

ходимо принять максимальный возраст среди двух путей. Очевидно, что этот анализ должен использовать множества элементов для каждого входа кеш.

Рис. 99 показывает анализ возможности для сходящегося потока управления. Множество объектов, которые может содержать кеш в точке схождения путей, состоит из объединения объектов, которые были в кеш перед схождением путей. В качестве наилучшего случая используется минимальный возраст перед схождением.

Рис. 99. Анализ возможности в программе соединения данных для LRU кеш

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

Суммарный результат статического анализа содержит границы времени выполнения для каждого из базовых блоков программы. Результаты записываются в PER-файл (см. рис. 91).

На следующем этапе aiT использует эти границы для получения WCET для всей программы. Этот шаг базируется на модели целочисленного линейного программирования (ILP). В этой модели суммарное время выполнения используется как целевая функция. Суммарное время выполнения вычисляется как сумма по всем оценкам базовых блоков, умноженных на их частоту выполнения. Время выполнения базовых блоков определяется как время WCET однократного выполнения блока (как вычислено при статическом анализе), умноженное на количество наихудших случаев выполнения. Только некоторое количество выполнений блоков может быть определено автоматически. Поэтому построение ILP-модели полагается на дополнительную информацию разработчика, например о границах цикла. Эта информация считается из AIP-файла. Ограничения моделируют отношения между блоками. Эту технику для моделирования времени выполнения называют нумерацией подразумеваемого пути. Так удается избежать нумерации по-

179

тенциально большего числа путей вычислений. Оговоренная задача ILP может быть решена стандартной программой ILP для максимизации, целевой функции. Полученный максимум дает верную верхнюю границу суммарного времени выполнения. aiT также обеспечивает визуализацию результатов в форме аннотированных графов потока управления. Эти графы анализируются разработчиками для оптимизации проектов.

2.7.3.2. Исчисление реального времени

Исчисление реального времени (RTC – real-time calculus) [38] базируется на описании интенсивности входящих событий. Это описание также включает отклонения от этой интенсивности. С этой целью временные характеристики последовательности событий представляются кортежем кривых (графиков) поступления: αu(∆), αl(∆) IR 0,∆

IR 0.

Эти кривые представляют соответственно максимальное и минимальное число событий, поступающих внутри интервала времени ∆. Существует наибольшее αu(∆) и наименьшее αl(∆) число событий, поступающих в интервале (t, t +∆) для всех t ≥ 0. На рис. 100 показан ряд возможных поступлений событий для некоторых возможных моделей поступления.

а

б

Рис. 100. Кривые поступления: а – периодический поток, б – периодический поток с джиттером J

Например, в случае периодического потока событий с периодом p существует максимум простого события, происходящего на интервале времени (0, p). Аналогично существует верхняя граница двух событий внутри временного интервала (p, 2p). Теперь рассмотрим нижнюю границу для интервала (0, p). Возможно, не существует единичного события в этом интервале. Следовательно, граница равна 0. Так, для

180

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]