Обработка фиктивных операций процессора Intel - PullRequest
2 голосов
/ 23 января 2010

По общему признанию, у меня есть немного глупый вопрос. В основном мне интересно, если Есть некоторые специальные механизмы, предоставляемые процессорами Intel для эффективного выполнить серию манекенов, т. е. инструкции NOP? Например, я мог бы представить там может быть какой-то механизм предварительной выборки, который идентифицирует NOPS, отбрасывает их и пытается получить некоторые полезные инструкции вместо этого. Или эти NOPS отправлены в исполнительный блок как обычные инструкции, а это означает, что я могу грубо обработать 5 nops каждый цикл (при условии, что есть 5 исполнительных блоков)

Спасибо, Reinhard

Ответы [ 3 ]

2 голосов
/ 23 января 2010

Отбрасывать их было бы довольно плохой идеей: они часто используются для ожидания. Если вы отбрасываете NOP s, вы делаете свою петлю ожидания намного более жесткой, чем она должна быть, и потенциально вносите значительные накладные расходы на связь.

Если вы чувствуете, что NOP неэффективны, вы можете попробовать HLT, что экономит энергию. Или вы можете даже отправить процессор в состояние сна. Однако это имеет смысл только в том случае, если вы хотите «ничего не делать» в течение значительного периода времени и . Обычно они требуют привилегий suvervisor.

1 голос
/ 23 января 2010

Нет. Они декодируются и выполняются как обычные инструкции; существует аппаратная поддержка для удаления ложной зависимости, которая в противном случае была бы введена в регистр EAX для однобайтового NOP, 0x90 (что действительно xchg eax, eax), но это все.

Справочник: Справочное руководство по оптимизации архитектур Intel (R) 64 и IA-32 - раздел 3.5.1.8, «Использование NOP».

0 голосов
/ 24 января 2010

В архитектуре x86 нет особой необходимости оптимизировать последовательности неактивных операций, поскольку в ней нет кодировок различной длины. Вместо многих однобайтовых неактивных операций можно просто использовать один многобайтовый неактивных операций. Несколько больше работы для декодера, но фактические исполнительные блоки видят только одну команду для выполнения.

...