Перейти до вмісту

RDTSCP

Архітектурний довідникFeex

RDTSCP зчитує лічильник позначок часу x86 і допоміжне значення ідентифікатора процесора з визначеними властивостями впорядкування. Вона не є повністю серіалізуючою інструкцією чи автоматичним середовищем для тестування продуктивності.

Що потрібно знати

RDTSCP зчитує лічильник позначок часу x86 і допоміжне значення ідентифікатора процесора з визначеними властивостями впорядкування. Вона не є повністю серіалізуючою інструкцією чи автоматичним середовищем для тестування продуктивності.

Як це працює

RDTSCP повертає лічильник у EDX:EAX і значення IA32_TSC_AUX у ECX. Її правила впорядкування обмежують деякі попередні операції, але наступні інструкції можуть розпочатися до завершення зчитування, а попередні операції запису мають додаткові особливості щодо видимості. Правильна послідовність бар'єрів залежить від того, що саме має обмежити вимірювання.

Де це корисно

Низькорівневий код вимірювання часу може використовувати допоміжне значення, щоб виявити зміну процесора, коли ОС налаштовує його належним чином. Надійний бенчмарк усе одно контролює компіляцію, прогрів навантаження, переривання, планування, калібрування лічильника та впорядковані операції.

Як перевірити підтримку та активацію

CPUID.80000001H:EDX біт 27 перелічує RDTSCP. Перевірте політику лічильника у фактичній ОС або гіпервізорі та використовуйте задокументований метод вимірювання часу з необхідними бар'єрами. Віддавайте перевагу монотонному годиннику ОС для вимірювання часу виконання програми.

Обирайте годинник залежно від поставленого завдання: витрачений час, процесорний час потоку та цикли є різними вимірюваннями. Інтерфейси годинника операційної системи враховують політику платформи, яку пряме зчитування інструкції може обійти.

Чого ця функція не гарантує

Підтримка RDTSCP не означає інваріантної або синхронізованої поведінки TSC. Інтерпретація допоміжного значення визначається операційною системою. Віднімання двох вибірок без розуміння впорядкування може виміряти інший інтервал, ніж передбачалося.

Сумісність і продуктивність на практиці

Бенчмарк також потребує правильних меж компілятора, прогріву, репрезентативних даних і розуміння міграції та планування. Повторення погано впорядкованого вимірювання не робить його точним. Повідомляйте про середовище та невизначеність разом із будь-яким результатом.

Практичний контрольний список для верифікації

  1. Зафіксуйте точну модель процесора або платформи, а також версії використовуваної програми, ОС і середовища виконання. Збережіть точне формулювання фактичної помилки або вимоги.
  2. Звіртеся з документацією виробника для цієї точної моделі, потім перевірте фактичні можливості та стан активації в середовищі, де виконується програма.
  3. Порівняйте кожну вимогу вибраного двійкового файлу або бекенда. Схожої назви функції, псевдоніма чи загального позначення технології недостатньо.
  4. Переконайтеся, що програма вибрала призначену реалізацію. Використовуйте її задокументовані засоби діагностики та підтримуваний резервний варіант, якщо вимоги не виконуються.
  5. Вносьте по одній підтримуваній зміні за раз і повторюйте те саме робоче навантаження. Зберігайте оригінальну конфігурацію та можливість відновлення.

Якщо функція вказана, але програмне забезпечення не може її використати

Почніть із компонента, у якому саме стався збій. База даних обладнання описує зафіксовані можливості; операційна система або гіпервізор можуть надавати інше фактичне середовище. Помилка неприпустимої інструкції також потребує дослідження фактичної інструкції, що викликала збій, і двійкової збірки, оскільки пошкодження даних або непов'язана непідтримувана інструкція можуть викликати схожий симптом.

Встановіть версію програми, драйвера або середовища виконання, яка підтримується для цієї конкретної платформи, і за потреби використовуйте задокументовану постачальником базову або резервну збірку. Оновлення програмного забезпечення не може створити інструкцію, якої немає в процесорі. Зміни у прошивці та політиках безпеки повинні відповідати процедурі виробника системи та плану відновлення, а не загальним рецептам оптимізації.

Джерела та межі застосування цього пояснення

Intel 64 and IA-32 Architectures Software Developer's Manual

Ці довідкові матеріали визначають архітектурну поведінку та вимоги до програмного забезпечення. Вони не перевіряють незалежно кожне значення функції на сторінці пов'язаної моделі обладнання. Щодо підтримки моделі використовуйте дані виробника на цій сторінці та перевіряйте фактичну конфігурацію системи. Ця стаття не містить бенчмарків, сертифікації чи дат незалежного огляду.

Джерела та верифікація

Власник авторських прав: Feex. Дата незалежної перевірки не зафіксована. Як ми проводимо дослідження.

  • Intel 64 and IA-32 Architectures Software Developer's Manual · Томи 1 і 2 описують зазначені сімейства інструкцій і CPUID; Том 3 описує стан, сторінкову організацію пам'яті, VMX і засоби захисту. Документація з архітектури не підтверджує підтримку для конкретної моделі.

Чи була ця стаття корисною?

Достатньо відповісти "так" або "ні". За бажанням виберіть причину або додайте коротку примітку.

Чи була ця стаття корисною?