RDTSCP
RDTSCP считывает счетчик меток времени x86 и вспомогательное значение идентификатора процессора с определенными свойствами упорядочивания. Она не является полностью сериализующей инструкцией или автоматической инфраструктурой для бенчмаркинга.
Что необходимо знать
RDTSCP считывает счетчик меток времени x86 и вспомогательное значение идентификатора процессора с определенными свойствами упорядочивания. Она не является полностью сериализующей инструкцией или автоматической инфраструктурой для бенчмаркинга.
Как это работает
RDTSCP возвращает значение счетчика в EDX:EAX и значение IA32_TSC_AUX в ECX. Ее правила упорядочивания ограничивают некоторые предшествующие операции, но последующие инструкции могут начать выполняться до завершения чтения, а для предшествующих сохранений существуют дополнительные особенности видимости. Правильная последовательность барьеров зависит от того, какие границы должно задавать измерение.
Области применения
Низкоуровневый код измерения времени может использовать вспомогательное значение для обнаружения смены процессора, если ОС сконфигурировала его соответствующим образом. Надежный бенчмарк по-прежнему контролирует компиляцию, прогрев рабочей нагрузки, прерывания, планирование, калибровку счетчика и упорядочиваемые операции.
Как проверить поддержку и активацию
Бит 27 в CPUID.80000001H:EDX перечисляет RDTSCP. Проверьте политику счетчика в фактической ОС или гипервизоре и используйте документированный метод измерения времени с необходимыми барьерами. Для измерения времени выполнения приложения предпочтительнее использовать монотонные часы ОС.
Выбирайте часы в зависимости от задачи: прошедшее астрономическое время, процессорное время потока и циклы представляют собой разные измерения. Интерфейсы часов операционной системы учитывают политики платформы, которые прямое чтение инструкции может проигнорировать.
Чего не гарантирует данная функция
Поддержка RDTSCP не подтверждает инвариантное или синхронизированное поведение TSC. Интерпретация вспомогательного значения определяется ОС. Вычитание двух выборок без понимания упорядочивания может измерить не тот интервал, который предполагался.
Совместимость и производительность на практике
Бенчмарку также необходимы корректные границы оптимизации компилятора, прогрев, репрезентативные данные и учет миграции и планирования. Повторение плохо организованного измерения не делает его точным. Указывайте параметры окружения и степень неопределенности при любом результате.
Практический чек-лист для проверки
- Зафиксируйте точную модель процессора или платформы, а также задействованные версии приложения, ОС и среды выполнения. Сохраните точную формулировку возникшей ошибки или требования.
- Сверьтесь со справочными материалами производителя для этой точной модели, затем проверьте действующую поддержку и состояние активации в окружении, где выполняется программа.
- Сопоставьте каждое требование выбранного бинарного файла или бэкенда. Похожего названия функции, псевдонима или общего маркетингового обозначения технологии недостаточно.
- Убедитесь, что приложение выбрало предполагаемую реализацию. Используйте его документированные средства диагностики и поддерживаемый резервный код при несоблюдении требований.
- Вносите по одному поддерживаемому изменению за раз и повторяйте ту же рабочую нагрузку. Сохраняйте исходную конфигурацию и возможность отката.
Если функция указана в списке, но ПО не может ее использовать
Начните с точного сбойного компонента. База данных оборудования описывает зафиксированные возможности; операционная система или гипервизор могут предоставлять иное фактическое окружение. Ошибка недопустимой инструкции также требует анализа конкретной сбойной команды и сборки бинарного файла, так как повреждение данных или сторонняя неподдерживаемая инструкция могут вызывать аналогичный симптом.
Установите версию приложения, драйвера или среды выполнения, поддерживаемую для данной платформы, и при необходимости используйте документированную производителем базовую или резервную сборку. Обновление ПО не может создать инструкцию, отсутствующую в процессоре. Изменения микрокода и политик безопасности должны выполняться по процедуре производителя системы и с планом восстановления, а не по общим шаблонам оптимизации.
Источники и границы применимости пояснения
Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32
Эти материалы определяют архитектурное поведение и требования к программному обеспечению. Они не подтверждают независимо каждое значение параметров на странице конкретной модели оборудования. Для проверки поддержки моделью используйте данные производителя на этой странице и проверяйте действующую конфигурацию системы. Данная статья не содержит результатов тестов производительности, сертификатов или дат независимых обзоров.
Источники и проверка
Редакционная принадлежность: Feex. Дата независимой проверки не зарегистрирована. Как мы проводим исследования.
- Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32 · Тома 1 и 2 описывают указанные семейства инструкций и CPUID; том 3 описывает управление состоянием, страничную адресацию, VMX и средства защиты. Архитектурная документация не определяет факт поддержки конкретной моделью.
Была ли эта статья полезна?
Достаточно ответа "да" или "нет". При желании выберите причину или оставьте короткую заметку.
Спасибо. Это помогает нам улучшать эту страницу.