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

3. Обоснование точности измерений, проводимых с помощью пим Sampler

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

3.1. Обоснование методики измерения времени

В изначальной версии ПИМ Samplerизмерения текущего времени при исследовании программ, работающих в операционных системах (ОС)Windows9X/Me/NT/2000/XP, проводились через канал 0 программируемого таймера 8253 с использованием портов ввода-вывода.

Этот таймер работает независимо от процессора и считает реальное время следующим образом.

Импульсы с частотой 1.19 МГц с системного генератора поступают на микросхему таймера, где происходит деление частоты на 64 К, и на выходе канала 0 мы получаем импульсы с частотой 18,2 Гц (с периодом следования 55 мс). Эти импульсы поступают на контроллер прерываний в виде запроса аппаратного прерывания на уровне 0 и, если разрешены прерывания, вырабатывается сигнал INT8. В результате обработки прерывания INT8 накапливаются данные в двойном слове с адресом 0040:006Сh, расположенном в области данныхBIOS. Таким образом, наиболее точное и полное значение промежутков времени можно получить, используя совместно значение переменной области данных BIOS (0040:006С) и внутреннего счетчика таймера. Это позволяет измерять промежутки времени длительностью от 0,84 мкс и (без использования каких-либо коррекций на переход через сутки) до 24 часов.

Достоинства данной методики измерения времени:

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

Недостатки:

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

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

Для устранения данных недостатков автором данной работы в ПИМ Samplerбыла внедрена системная 32-xразрядная функция измерения времениQueryPerformanceCounter. Эта функция получает значение текущего числа тактов от таймера, генерирующего такты с высокой частотой, соответствующей конкретной архитектуре ЭВМ. Частота генерации тактов может быть получена с помощью 32-xразрядной функцииQueryPerformanceFrequncy.

Достоинства данной методики измерения времени:

  • возможность применения практически на машинах любого класса, поддерживающих ОС Windows9X/Me/NT/2000/XP;

  • снятие результата происходит сравнительно быстро – разность тактов, полученных при запуске двух функций QueryPerformanceCounterподряд, составила значение 4 – 6;

  • например для AMDAthlon1700 МГц и ОСWindowsXPфункцияQueryPerformanceFrequncyвозвращает значение 3,57 МГц, что в 3 раза превышает частоту генерации импульсов при использовании программируемого таймера 8253, и, соответственно позволяет измерять промежутки времени длительностью от 0,84 / 3 = 0,28 мкс (временной эквивалент одного такта).

Недостатки:

  • Функции расположены в системной динамической библиотеке kernel32.dllи могут использоваться только в 32-х разрядных приложенияхWindows.

Ввиду указанного недостатка, потребовалось:

  • перевести ПИМ Samplerиз приложенияDOSв 16-ти разрядное приложениеWindows, заменив участки кода, использующие функцииDOS, которые не поддерживаются в 16-ти разрядных приложенияхWindows;

  • изучить и применить механизм вызова 32-х разрядных функций из 16-ти разрядных приложений.