Введение
Время выполнения в худшем случае (WCET) вычислительной задачи — это максимальная продолжительность времени, за которое задача может быть выполнена на конкретной аппаратной платформе.
Для чего он используется
Время выполнения в худшем случае обычно используется в надежных системах реального времени, где понимание наихудшего времени отклика программного обеспечения критически важно для обеспечения надежности или корректной функциональности. Например, компьютерная система, управляющая работой двигателя транспортного средства, может нуждаться в реагировании на входные сигналы в течение строго определенного времени. Время, затрачиваемое на выполнение программного обеспечения, является одним из компонентов времени отклика, поэтому, если удается определить время выполнения программного обеспечения в наихудшем случае, разработчик системы может использовать эту информацию вместе с другими методами, такими как анализ планируемости, чтобы гарантировать достаточно быструю реакцию системы. Хотя WCET потенциально применим ко многим системам реального времени, на практике гарантии WCET в основном требуются системам реального времени, связанным с высокой надежностью или безопасностью. Например, в авиационном программном обеспечении определенное внимание к программному обеспечению требуется согласно разделу 6.3.4 стандарта DO178C. Растущее использование программного обеспечения в автомобильных системах также стимулирует необходимость проведения WCET-анализа программного обеспечения. При проектировании некоторых систем WCET часто используется в качестве входных данных для анализа планируемости, однако гораздо более распространенным применением WCET в критически важных системах является обеспечение соблюдения заранее выделенных временных бюджетов в системах с разделением по времени, таких как ARINC 653.
Рассмотрение
Проблема определения WCET аналитически эквивалентна проблеме останова и, следовательно, неразрешима в общем случае. К счастью, для систем, для которых инженеры обычно стремятся определить WCET, программное обеспечение, как правило, хорошо структурировано, всегда завершается и поддается анализу. Большинство методов определения WCET включают в себя приближения (обычно округление в большую сторону при наличии неопределенностей), поэтому на практике точное значение WCET часто считается недостижимым. Вместо этого различные методы определения WCET выдают оценки WCET. Эти оценки обычно пессимистичны, то есть предполагаемое значение WCET известно как превышающее фактическое WCET (что обычно и требуется). Значительная часть работы по анализу WCET направлена на уменьшение пессимизма в анализе, чтобы полученная оценка была достаточно низкой и полезной для разработчика системы. Анализ WCET обычно относится ко времени выполнения отдельного потока, задачи или процесса. Однако на современном оборудовании, особенно многоядерном, другие задачи в системе могут влиять на WCET данной задачи, если они совместно используют кэш, линии памяти и другие аппаратные ресурсы. Кроме того, при анализе WCET следует учитывать события планирования задач, такие как блокировки или прерывания, если они могут произойти в конкретной системе. Поэтому важно учитывать контекст применения анализа WCET.
Методы статического анализа
Статический инструмент WCET пытается оценить WCET, исследуя компьютерное программное обеспечение без его непосредственного выполнения на аппаратном обеспечении. Методы статического анализа доминировали в исследованиях в этой области с конца 1980-х годов, хотя в промышленной практике стандартным подходом были измерения от начала до конца. Инструменты статического анализа работают на высоком уровне, определяя структуру задачи программы, анализируя либо фрагмент исходного кода, либо дизассемблированный двоичный исполняемый файл. Они также работают на низком уровне, используя информацию о времени работы реального оборудования, на котором будет выполняться задача, со всеми его специфическими характеристиками. Комбинируя эти два типа анализа, инструмент стремится предоставить верхнюю границу времени, необходимого для выполнения заданной задачи на заданной аппаратной платформе. На низком уровне статический анализ WCET усложняется наличием архитектурных особенностей, повышающих производительность процессора в среднем случае: кэши инструкций и данных, предсказание переходов и конвейеры команд, например. Определить точные границы WCET становится все сложнее, если эти современные архитектурные особенности учитываются в модели времени, используемой при анализе. Поэтому органы по сертификации, такие как Европейское агентство по безопасности полетов, полагаются на комплекты для валидации моделей. Статический анализ дал хорошие результаты для более простого оборудования, однако одним из возможных ограничений статического анализа является то, что аппаратное обеспечение (особенно процессор) достигло такой сложности, которую крайне трудно смоделировать. В частности, процесс моделирования может вносить ошибки из различных источников: ошибки в проектировании чипа, отсутствие документации, ошибки в документации, ошибки при создании модели; все это приводит к ситуациям, когда модель предсказывает поведение, отличное от наблюдаемого на реальном оборудовании. Как правило, когда точное предсказание поведения невозможно, используется пессимистичный результат, что может привести к значительному завышению оценки WCET по сравнению с фактическим временем выполнения. Получение точной статической оценки WCET особенно сложно для многоядерных процессоров. Существует ряд коммерческих и академических инструментов, реализующих различные формы статического анализа.
Измерение и гибридные методы
Основанные на измерениях и гибридные подходы обычно пытаются измерить время выполнения коротких сегментов кода на реальном оборудовании, которые затем объединяются в анализе более высокого уровня. Инструменты учитывают структуру программного обеспечения (например, циклы, ветвления), чтобы получить оценку WCET для более крупной программы. Логика заключается в том, что сложно протестировать самый длинный путь в сложном программном обеспечении, но проще протестировать самый длинный путь во многих его меньших компонентах. Эффект наихудшего случая необходимо обнаружить хотя бы один раз во время тестирования, чтобы анализ мог объединить его с другими событиями наихудшего случая. Как правило, небольшие участки программного обеспечения могут измеряться автоматически с использованием таких методов, как инструментирование (добавление меток в программное обеспечение) или с помощью аппаратной поддержки, такой как отладчики и модули трассировки аппаратного обеспечения процессора. Эти метки формируют трассу выполнения, которая включает в себя как путь, пройденный программой, так и время выполнения различных точек. Затем трасса анализируется для определения максимального времени, затраченного каждой частью программы на выполнение, максимального наблюдаемого времени итерации каждого цикла и наличия непротестированных частей программного обеспечения (покрытие кода). Анализ WCET, основанный на измерениях, показал хорошие результаты как для простого, так и для сложного оборудования, однако, как и статический анализ, он может страдать от чрезмерного пессимизма в многоядерных системах, где сложно определить влияние одного ядра на другое. Ограничением измерений является то, что они полагаются на наблюдение эффектов наихудшего случая во время тестирования (хотя и не обязательно одновременно). Сложно определить, были ли эффекты наихудшего случая протестированы в обязательном порядке. Существует ряд коммерческих и академических инструментов, реализующих различные формы анализа, основанного на измерениях.
Исследования
Наиболее активные исследовательские группы находятся в США (Американский Мичиганский университет), Швеции (Mälardalen, Linköping), Германии (Saarbrücken, Dortmund, Braunschweig), Франции (Тулуза, Saclay, Rennes), Австрии (Вена), Великобритании (University of York и Rapita Systems Ltd), Италии (Болонья), Испании (Кантабрия, Валенсия) и Швейцарии (Цюрих). В последнее время анализ временных характеристик на уровне кода стал привлекать больше внимания за пределами Европы со стороны исследовательских групп в США (Северная Каролина, Флорида), Канаде, Австралии, Бангладеш (MBI LAB и RDS), Саудовской Аравии (UQU, HISE LAB), Сингапуре и Индии (IIT Madras, IISc Bangalore).
WCET Tool Challenge (Вызов инструмента WCET)
Первый международный конкурс WCET Tool Challenge состоялся осенью 2006 года. Он был организован Университетом Мелардален и спонсирован сетью превосходства ARTIST2 в области разработки встроенных систем. Целью конкурса было исследование и сравнение различных подходов к анализу времени выполнения в наихудшем случае. В конкурсе приняли участие все доступные инструменты и прототипы, способные определять безопасные верхние границы для WCET задач. Окончательные результаты были представлены в ноябре 2006 года на Международном симпозиуме ISoLA 2006 в Пафосе, Кипр. Второй конкурс состоялся в 2008 году.