- •Оценка производительности программ с помощью пим Sampler2
- •Концепции оценки производительности программ и их реализация в пим Sampler
- •2. Методология измерений с помощью пим Sampler
- •3. Обоснование точности измерений, проводимых с помощью пим Sampler
- •3.1. Обоснование методики измерения времени
- •3.2. Расчет времени коррекции функции контрольных точек
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-ти разрядных приложений.