Анимация
JavaScript
|
Главная Библионтека 4g4 Ассемблер в задачах защиты информации Инструкция EMMS занимает только один такт, но первая инструкция FPU после EMMS занимает примерно на 58 тактов больше, а первая инструкция ММХ после инструкции FPU занимает примерно на 38 тактов больше. Нет потерь при использовании операндов памяти в инструкции ММХ, потому что арифметический модуль ММХ находится на один шаг дальше по конвейеру, чем модуль загрузки. Но потери будут, когда нужно будет сохранять данные из регистра ММХ в память или в 32-битный регистр: данные должны быть готовы на один такт раньше. Это аналогично инструкциям FPU. Все инструкции ММХ, кроме EMMS, спариваются в любом конвейере. Правила спаривания для инструкций ММХ объяснены в разделе 6.10. 6.29. Список периодов выполнения инструкций и задержек микроопераций для РРго, Р2 и РЗ Пояснения Операнды: г - регистр, m - память, i - число, sr - сегментный регистр, т32 - 32-битный операнд в памяти и т. д. Микрооперации: количество микроопераций, которые генерирует инструкция для каждого порта выполнения: ж рО: порт О: ALU и т.д. ш р1: порт 1: ALU, переходы в р01: инструкции, которые могут попасть как в порт О, так и в порт 1 (какой будет свободен первым) В р2: порт 2: загрузка данных и т.д. ж рЗ: порт 3: генерация адреса для сохранения и р4: порт 4: сохранение данных Задержка - задержка, которую генерирует инструкция в цепочке зависимости. Это не то же самое, что время, потраченное в модуле выполнения. Значения мотуг быть неточны в тех ситуациях, когда они не могут быть достоверно измерены, особенно, что касается операндов из памяти. Значения являются минимальными. Промахи кэша, невырав-ненность и исключения могут повысить количество тактов весьма значительно. Предполагается, что операнды с плавающей запятой являются нормальными. Ненормальные числа, NAN и бесконечность увеличивают задержку на 50-150 тактов, кроме пересылок ХММ, перемешиваний и булевых инструкций. Переполнения FPU, потеря значимости, ненормальные или NAN-результаты дают аналогичную задержку. Производительность - максимальная производительность нескольких инструкций одного вида. Например, производительность в 1/2 для FMUL означает, что новая инструК ция FMUL может начинать выполнение каждые 2 такта. i....?"!..?." процессоров семейства Pentium 6.29.1 Целочисленные инструкции (РРго, Р2 и РЗ) моу MOV MOVSX MOVZX MOVSX MOVZX CMOVcc CMOVcc XCHG XCHG XLAT PUSH POP POP PUSH ""push" !USHF([)) ,OPA(0) -ifSAHF Таблица 6.10. Время выполнения инструкций. Процессоры РРго, Р2 и r,r/i m,r/i r,sr m,sr sr,r sr,m (E)SP микрооперации highb)
Примечания a) быстро при определенных условиях: см. пункт 6.26,3; b) смотри пункт 6.26.1; c) 3, если константа без базового или индексного регистра; d) только РЗ. Табли1а 6.11. Время выполнения инструкций FPU. Процессоры РРго, Р2 и Р
5 29.2 Инструкции FPU (РРго, Р2 и РЗ) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 [ 79 ] 80 81 82 83 84 85 86 87 88 |