Assembler - язык неограниченных возможностей


Выполнение команд - часть 2


Время выполнения команд в пяти конвейерах исполнения приведено в таблице 21.

Таблица 21. Конвейеры процессора Pentium Pro/Pentium II


  Время выполнения Скорость
Конвейер 0
Блок целочисленной арифметики 1 1
Блок команд LEA 1 1
Блок команд сдвига 1 1
Блок целочисленного умножения 4 1
Блок команд FADD 3 1
Блок команд FMUL 5 2
Блок команд FDIV 17 для 32-битных
36 для 64-битных
56 для 80-битных
17
36
56
Блок MMX-арифметики 1 1
Блок MMX-умножений 3 1
Конвейер 1
Блок целочисленной арифметики 1 1
Блок MMX-арифметики 1 1
Блок MMX-сдвигов 1 1
Конвейер 2
Блок чтения 3 при кэш-попадании 1
Конвейер 3
Блок записи адреса не меньше 3 1
Конвейер 4
Блок записи данных не меньше 1 1


Указанное в таблице время — это время, требующееся для выполнения микрооперации, а скорость — с какой частотой элемент может принимать микрооперации в собственный конвейер (1 — каждый такт, 2 — каждый второй такт). То есть, например, одиночная команда FADD выполняется за три такта, но три последовательные команды FADD выполнятся также за 3 такта.

Микрооперации чтения и записи, обращающиеся к одному и тому же адресу в памяти, выполняются за один такт.

Существует особая группа синхронизирующих команд, любая из которых начинает выполняться только после того, как завершатся все микрооперации, находящиеся в состоянии выполнения. К таким командам относятся привилегированные команды WRMSR, INVD, INVLPG, WBINVD, LGDT, LLDT, LIDT, LTR, RSM и MOV в управляющие и отладочные регистры, а также две непривилегированные команды — IRET и CPUID. В тех случаях, когда, например, измеряют скорость выполнения процедуры при помощи команды RDTSC (глава 10.2), полезно выполнить одну из синхронизирующих команд, чтобы убедиться, что все измеряемые команды полностью завершились.




Начало  Назад  Вперед