allasm.ru |
|
У микропроцессоров семьи Pentium есть встроенный 64-х битный счетчик, который можно считать в EDX:EAX, используя инструкцию RDTSC (read time stamp counter). Эта инструкция очень полезна для того, чтобы точно узнать, сколько тактов занял кусок кода. Программа ниже полезна для измерения количества тактов, которое занимает код. Программа выполняет код 10 раз и сохраняет 10 значений счетчика. Программу можно использовать как в 16-ти, так и в 32-х битном режиме на PPlain и PMMX.
Подсобные инструкции до и после тестируемого кода были включены, чтобы получить адекватные результаты на PPlain. CLD - это неспариваемая инструкция, которая была вставлена, чтобы порядок спаривания инструкций в первый раз будет такой же, как и во все остальные. Восемь инструкций NOP были вставлены, чтобы предотвратить возможные префиксы в тестируемом коде, которые могли бы раскодироваться в тени предыдущих инструкций на PPlain. Однобайтовые инструкции использовались здесь, чтобы получить тот же порядок спаривания, что На PMMX вы можете захотеть вставить 'XOR EAX,EAX / CPUID' перед тестируемым кодом, если вы хотите, чтобы FIFO-буфер инструкций был очищен или какую-нибудь длительную инструкцию (например, CLI или AAD), если вы хотите, чтобы он был полон (CPUID не вызывает эффекта затенения может начаться раскодировка префиксов последующих инструкций). На PPro, PII и PIII вы можете вставить 'XOR EAX,EAX / CPUID' до и после каждого RDTSC, чтобы предотвратить ее возможное выполнение параллельно с какой-нибудь другой инструкцией и убрать подсобные инструкции. (CPUID - это синхронизирующая инструкция, что означает то, что она очищает конвеер и ждет, пока все исполняющиеся инструкции не будут выполнены, и только тогда выполнится сама. Это может быть полезно для тестирования.) Инструкция RDTSC не может выполняться в виртуальном режиме на PPlain и PMMX, поэтому если вы запускете DOS-программы, вам нужно перегрузиться в реальный режим. (Нажмите F8 во время загрузки и выберите "safe mode command promt only" или "bypass startup files"). Полный исходник тестовой программы доступен на www.agner.org/assem/. У процессоров Pentium есть специальные счетчики наблюдения за качеством работы, которые отслеживают и подсчитывают такие события как промахи кэша, невыравненность, различные задержки. Подробности об использовании счетчиков не затрагиваются в данном руководстве, но их можно найти в "Intel Architecture Software Developer's Manual", vol. 3, Appendix A. |