- •Практическое занятие №0. Введение в срв. Понятие срв
- •Некоторые примеры применения срв
- •Структура срв
- •Классы систем реального времени
- •Управляющие процессы в срв
- •Проектирование систем реального времени
- •Список литературы
- •Практическое занятие №1. Основы профилирования процессов.
- •Профилирование с использованием счётчика времени
- •Список литературы
Список литературы
Гома. Х. Проектирование систем реального времени, параллельных и распределённых приложений. ДМК Пресс, 2002.
Дашевский В.П. «Вероятностные методы оценки выполнимости задач в системах реального времени». Автореферат диссертации на соискание степени кандидата технических наук.
Иан Соммервилл. Инженерия программного обеспечения. 6-е издание. «Вильямс» 2002.
Б. Я. Лурье, П. Дж. Энрайт. Классические методы автоматического управления. «БХВ-Петербург» 2004.
A.Burns, A.J.Wellings «Designing the Hard Real-time Systems»
Catlin, Brian. Real-Time Systems and Microsoft Windows NT / MSDN
Практическое занятие №1. Основы профилирования процессов.
Проектирование СРВ на некоторых этапах предполагает оценку эффективности управляющих алгоритмов при их исполнении на выбранных аппаратных конфигурациях.
Замер времени выполнения программного кода называется профилированием. При этом профилированию может быть подвергнута вся программа, отдельная подпрограмма, отдельные участки подпрограмм, и в некоторых случаях, даже отдельные инструкции и небольшие группы инструкций микропроцессора.
Алгоритм профилирования можно представить следующей схемой (Рисунок 6)
Рисунок 6 Алгоритм профилирования кода.
Профилирование с использованием счётчика времени
Произвести измерения времени выполнения кода можно разными способами с различной степенью точности. В IBM PC имеются два механизма: системный таймер (штатная частота: 18,2 тика в секунду, т.е. период T = 55мс, максимальная частота – 1 193 180 тиков в секунду, T = 0, 84 мкс), часы реального времени (частота 1024 тика в секунду, T = 0,98 мс); регистр счётчик времени (Time Stamp Counter), увеличивающийся на единицу при каждом такте процессорного ядра. Анализ различных вариантов хорошо представлен в [7]
Предпочтительным вариантом при профилировании является использование регистра счётчика времени. Для работы с этим регистром, начиная с микропроцессора Pentium, поддерживается специальная инструкция RDTSC. Результат работы (число тактов микропроцессора, прошедших с момента запуска системы) заносится в регистры EAX:EDX. Ниже приведён алгоритм профилирования участка кода (Листинг 1).
__int64
clock, clock2;
__asm
{
XOR EAX, EAX //
Вызов CPUID
гарантирует очистку конвейера
CPUID //
микропроцессора перед вызовом RDTSC
RDTSC
MOV dword
ptr [clock+4], EDX
MOV dword ptr[clock], EAX
//
//
… Профилируемый
код
//
XOR EAX, EAX
CPUID
RDTSC
MOV dword ptr [clock2+4], EDX
MOV dword ptr [clock2], EAX
}
clock2-=clock;
//
clock2
содержит число тактов между
//
вызовами
RDTSC
Листинг 1
Профилирование кода с использованием
инструкции RDTSC
В переменную clock будет помещено число тактов микропроцессора, прошедших между двумя вызовами инструкции RDTCS. Так как при проектировании СРВ большинство временных ограничений задаётся астрономическим временем, следует перевести число тактов в секунды:
При профилировании кода следует проводить несколько измерений, так как на скорость выполнения влияют многие факторы (обозначим это как tнак): работа других программ, в том числе операционной системы, аппаратные компоненты системы: кэш память различных уровней (L1, L2, L3), конвейерная организация МП и т.п. При этом лучший из полученных результатов (минимальное время выполнения) можно трактовать как скорость работы алгоритма (т.е. tалг min ({tпроф}) {tпроф} – множество измерений времени выполнения); к сожалению хорошей верхней оценки (максимальное время выполнения) получить не удаётся. Таким образом tпроф=tалг + tнак. При этом случайной величиной здесь является tнак, т.о. анализ результатов профилирования проводится с помощью статистических методов. В нашей работе нас будет интересовать:
Оценка среднего времени профилирования и оценка среднеквадратичного отклонения.
Подтверждение или опровержение гипотезы о нормальном распределении времени профилирования.
Получение функций зависимости времени профилирования от некоторой величины (например, функция времени переключения контекста потока от числа активных потоков).