[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Программирование: Разработка и отладка программ


Глава 29. Измерение времени с помощью средств отсчета времени архитектуры POWER и часов реального времени архитектуры POWER

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

В семействе процессоров POWER регистры часов реального времени предусмотрены только в микропроцессоре PowerPC 601 RISC. В других процессорах применяется 64-разрядный регистр отсчета времени, значение которого постоянно увеличивается с неизменным шагом. Этот регистр можно применять для измерения интервалов времени, но при этом необходимо преобразовывать значение регистра в секунды и наносекунды.

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

Если приложение, выполняемое на любом процессоре без регистра отсчета времени (включая PowerPC 601 RISC), попытается считать значение этого регистра, то средства эмуляции не будут применяться, а работа приложения будет завершена.

Начиная с версии 4, в операционную систему AIX включены следующие библиотечные функции, с помощью которых вы можете создавать не зависящие от процессора процедуры измерения интервалов времени с высокой разрешающей способностью:

read_real_time Считывает значения из регистров часов реального времени или регистра отсчета времени и сохраняет результат
time_base_to_time Преобразует результаты read_real_time в секунды и наносекунды

read_real_time не выполняет преобразование и выполняется очень быстро. time_base_to_time выполняет все необходимые преобразования, зависящие от считываемого регистра процессора, и приводит результат в формат секунд и наносекунд.

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


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]