RDTSCP
RDTSCP чете брояча на времевите клейма (time-stamp counter) на x86 и спомагателна идентификационна стойност на процесора с дефинирани свойства за подреждане. Тя не е напълно сериализираща инструкция, нито автоматична тестова среда за бенчмарк.
Какво трябва да знаете
RDTSCP чете брояча на времевите клейма (time-stamp counter) на x86 и спомагателна идентификационна стойност на процесора с дефинирани свойства за подреждане. Тя не е напълно сериализираща инструкция, нито автоматична тестова среда за бенчмарк.
Как работи
RDTSCP връща брояча в EDX:EAX и стойността на IA32_TSC_AUX в ECX. Нейните правила за подреждане ограничават някои предходни операции, но по-късните инструкции могат да започнат преди четенето да завърши, а предходните записи имат допълнителни изисквания за видимост. Правилната последователност от бариери (fences) зависи от това какво измерването цели да ограничи.
Къде е полезно
Код за измерване на време от ниско ниво може да използва спомагателната стойност, за да открие промяна на процесора, когато ОС го конфигурира подходящо. Надеждният бенчмарк все пак контролира компилацията, загряването на работното натоварване, прекъсванията, планирането, калибрирането на брояча и операциите, които се подреждат.
Как се проверява поддръжката и активирането
CPUID.80000001H:EDX бит 27 изброява RDTSCP. Проверете политиката на брояча в реалната ОС или хипервайзор и използвайте документиран метод за измерване на време с необходимите бариери. Предпочитайте монотонния часовник на ОС за изминалото време на приложението.
Изберете часовник според поставения въпрос: изминало време, процесорно време на нишка и цикли са различни измервания. Часовниковите интерфейси на операционната система включват политики на платформата, които директното снемане на инструкция може да заобиколи.
Какво не гарантира тази функция
Поддръжката на RDTSCP не установява инвариантно или синхронизирано поведение на TSC. Интерпретацията на спомагателната стойност се дефинира от ОС. Изваждането на две извадки без разбиране на подреждането може да измери интервал, различен от предвидения.
Съвместимост и производителност на практика
Един бенчмарк също така изисква правилни компилаторни граници, загряване (warmup), представителни данни и разбиране на миграцията и планирането на процеси. Повтарянето на лошо структурирано измерване не го прави точно. Докладвайте средата и неопределеността с всеки резултат.
Практически контролен списък за проверка
- Запишете точния модел на процесора или платформата, както и използваните версии на приложението, операционната система и средата за изпълнение. Запазете точния текст на действителната грешка или изискване.
- Проверете документацията от производителя за този точен модел, след което инспектирайте действителните възможности и активираното състояние в средата, където работи програмата.
- Сравнете всяко изискване на избрания двоичен файл или бекенд. Подобно наименувана функция, псевдоним или общ технологичен етикет не са достатъчни.
- Потвърдете, че приложението е избрало планираната реализация. Използвайте неговата документирана диагностика и поддържан резервен вариант, когато изискванията не са изпълнени.
- Правете по една поддържана промяна наведнъж и повтаряйте същото работно натоварване. Запазете достъпни оригиналната конфигурация и плана за възстановяване.
Ако функцията е посочена, но софтуерът не може да я използва
Започнете с точния компонент, който дава грешка. Хардуерната база данни описва записаните възможности; операционната система или хипервайзорът могат да предоставят различна ефективна среда. Грешка за невалидна инструкция (illegal-instruction) също изисква разследване на действителната сриваща се инструкция и компилацията на двоичния файл, тъй като повреда или несвързана неподдържана инструкция може да предизвика подобен симптом.
Инсталирайте версията на приложението, драйвера или средата за изпълнение, която се поддържа за точната платформа, и използвайте документираната от производителя базова или резервна компилация, ако е необходимо. Софтуерна актуализация не може да създаде инструкция, която липсва в процесора. Промените във фърмуера и политиките за сигурност трябва да следват процедурата на производителя на системата и план за възстановяване, а не общи съвети за оптимизация.
Източници и обхват на това обяснение
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 и контролите за защита. Документацията за архитектурата не гарантира поддръжка за конкретен модел.
Беше ли полезна тази статия?
Достатъчно е "да" или "не". Изберете причина, ако желаете, или добавете кратка бележка.
Благодарим ви. Това ни помага да подобрим тази страница.