Скачиваний:
19
Добавлен:
01.05.2014
Размер:
36.79 Кб
Скачать

ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА ПОДДЕРЖКИ ЛАБОРАТОРНЫХ ПРАКТИ -КУМОВ ПО КУРСАМ “ МЕТРОЛОГИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ”, “НАДЕЖНОСТЬ И КАЧЕСТВО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ”

Метрология программнного обеспечения (ПО) – новое научное направление Computer Science, активно развивающееся с середины 70-х годов, и ориентированное на изучение средств анализа и оценки качества программных продуктов, включая количественные оценки характеристик качества ПО.

К практическим аспектам его изучения относятся:

  • выбор и вычисление первичных метрик, а также расчет показателей, определяющих такие качества ПО, как сложность, эффективность и надежность;

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

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

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

  •  измерение временного и частотного профилей выполнения программ;

  •  измерение времен и размера файлов при обращении к диску и т.д.

Вместе с тем, его минимальный шаг измерения времени, обеспечиваемый встроенным таймером, составляет 55 мсек (f=18.2 Гц), что делает Турбо-Профайлер непригодным для исследования коротких и быстрых программных модулей. Кроме того необходимость использования отладочной информации при профилировании и затрат оптимизации при работе компилятора вносит искажение в реальное выполнение программы.

Для устранения этих недостатков на кафедре МОЭВМ был разработан программный монитор Sampler, обеспечивающий измерение времени выполнения программ на ЭВМ типа IBM PC с квантом 0.84 мкс. Монитор Sampler в зависимости от класса модели компьютера имеет 2 режима регистрации измерений:

  • для младших моделей - через внутренний счетчик таймера 8253 (заполняемый с частотой 1.193МГц) и переменную области данных BIOS c адресом (0040:006С);

  • в компьютерах типа Pentium - через счетчик Time Stamp Counter, опрашиваемый командой RDTSC .

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

На данный момент в Sampler'е используются 2 варианта регистрации измерений:

а) Измерения проводятся через 0 канал таймера.

Для задания временных интервалов и формирования сигналов с различными временными параметрами во всех IBM PC применяется программируемый таймер 8253 ( в AT - 8254 ). В состав таймера входят: три независимых канала, каждый из которых содержит регистр режима, схему управления каналом, буфер и 16-разрядный счетчик.

В распоряжении имеются:

Канал 0 используется часами времени суток.

Канал 1 управляет обновлением памяти.

Канал 2 связан с громкоговорителем компьютера и используется при генерации звука.

В нашем случае наиболее удобно использовать канал 0.

Тактовая частота счетчика равна 1,19318 МГц, т. е. каждый такт имеет длительность 0,84 мсек. Поэтому частота системных часов равна 1,19 МГц/65536 = 18.2 Гц, а прерывание IRQ0 ( прерывание таймера), связанное с вектором Int 8, происходит 18,2 раз в секунду, т. е. каждые 55 мсек.

Для подсчета интервалов времени в часах и минутах нужны какие-то другие средства. Для этого импульсы от нулевого канала таймера накапливаются в переменной, располагающейся в области данных BIOS (0040:006С). Выход канала 0 системного таймера 18.2 раза в секунду обрабатывается аппаратным прерыванием ( прерыванием таймера ), которое ненадолго останавливает процессор и увеличивает счетчик времени суток. Когда счетчик достигает значения, эквивалентного 24 часам, он сбрасывается. Таким образом, можно считать, что наиболее точное и полное значение промежутков времени можно получить, используя совместно значение переменной области данных BIOS (0040:006С) и внутреннего счетчика таймера. Это позволяет измерять промежутки времени длительностью от 0,84 мсек и (без использования каких-либо коррекций на переход через сутки) до 24 часов.

Достроинства:

- возможность применения на машинах любого класса.

Недостатки:

- низкая точность измерений;

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

б) Измерения проводятся через Time Stamp Counter.

У Pentium есть внутренний, 64 битный таймер, который может быть прочитан в EDX:EAX при использовании инструкции RDTSC (Read Time Stamp Counter). Каждый такт этот счетчик увеличивает свое значение на 1. Это очень полезно для замера точного количества тактов, потребовавшихся на исполнение части кода. Этот счетчик имеется на всех компьютерах класса Pentium и старше.

Есть некоторые особенности чтения счетчика. В Pentium добавлен внутренний регистр CR4. Флаг TSD регистра CR4 управляет возможностью чтения счетчика. При CR4.TSD равном 0 читать счетчик можно в любом случае. При CR4.TSD равном 1 значение счетчика возможно только на 0 уровне привелегий.

В общем случае флаг CR4.TSD установлен. Поэтому, инструкция RDTSC не может выполняться в режиме виртуального 8086 (3-й уровень привелегий).

Так если запускать эту программу под DOS необходимо закомментировать EMM386 (или любой друго менеджер памяти) в CONFIG.SYS и не запускать программу в DOS из под Windows. При использовании EMM386 или Windows процессор находится в защищенном режиме и Dos - приложения типа Sampler запускаются в виртуальном режиме и имеют 3 уровень привелегий.

Достроинства:

- высокая точность измерений (до 1 такта).

- малая погрешность функций измерений:

- требуется только команда RDTSC и сохранение EAX:EDX (20-30 тактов).

Недостатки:

- возможность применения только на машинах класса Pentium и выше.

- возможность полноценной работы только под DOS и в отсутствие драйверов памяти типа EMM386 (QEMM).

На рис.2.1 представлена временная диаграмма выполнения функции контрольных точек.

Исследуемая программа

...--+ +----- ...

¦ ¦

¦ ¦

...--+---------------------------------------+---------> время

¦ ¦Замер¦ Передача управления ¦Замер¦ ¦

¦ ¦ t1 ¦ измерительному ¦ t2 ¦ ¦

¦ ¦ ¦ монитору ¦ ¦ ¦

+-----------------...-------------------+

d1 d2 d3 d4 d5

Обозначение временных интервалов:

d1 - вход в функцию;

d2 - первое измерение времени (t1);

d3 - вызов монитора с передачей ему t1 и номера строки;

d4 - второе измерение времени (t2);

d5 - запись t2 в область данных монитора и выход из функции.

Рис. 2.1. Временная диаграмма выполнения функции контрольных точек

Как видно из рис. 2.1, общая картина времени выполнения программы искажается на время выполнения функции задания контрольных точек. Также невозможно заранее предсказать длительность участка d3. Это следует из того, что получив управление монитор выполняет операции различной длительности. Участки d1, d2, d4 и d5 не содержат ветвлений, имеют фиксированную длительность и могут быть измерены заранее (d2 =d4 ).

Имеется возможность убрать искажение, вносимое вызовом функции контрольных точек. Для этого надо определить время ее выполнения D0.

D0 = d1 +d2 + d3 + d4 + d5 = d1 +d2 +( t2 - t1 -d4 ) + d4 + d5.

D0 = d1 +d2 + t2 - t1 + d5.

В полученном соотношении участвуют только компоненты фиксированной длительности, а также значения t2 и t1.

Калибровка монитора

+-----------+ +-----+ +-----+

¦Замер¦Замер¦ ¦Замер¦ ¦Замер¦

¦ T1 ¦ T2 ¦ ¦ T3 ¦ ¦ T4 ¦

¦ ¦ ¦ ¦ ¦ ¦ ¦

...---------------------+------------------------+---------> время

¦ ¦Замер¦ ¦Замер¦ ¦

¦ ¦ t1 ¦ ¦ t2 ¦ ¦

¦ ¦ ¦ ¦ ¦ ¦

+-----------...----------+

d1 d2 d3 d4 d5

Рис. 2.2 Временная диаграмма калибровки монитора

Выполнив 2 измерения, подряд мы можем определить расходы на передачу значений измерений (T2 - T1)

Проведем последовательность измерений T3 - T4.

Равенство d1 + d2 + d3 + d4 + d5 = (T3 - T4) - (T2 - T1) - справедливо.

d1 +d2 + t2 - t1 + d5 = (T3 - T4) - (T2 - T1)

d1 +d2 + d5 = (T3 - T4) - ( t2 - t1 ) - (T2 - T1)

Итак, длительность необходимых участков установлена. Назовем эту сумму временем коррекции функции контрольных точек или просто временем коррекции.

Таким образом полностью снимается временное искажение, вносимое ПИМ. Время коррекции может быть определено из выражения на этапе калибровки монитора.

Соседние файлы в папке DOC