Пересылка данных преодолевает некоторые опасности, с признанием того, что необходимое значение, вычисленное предыдущей инструкцией, становится доступным раньше, чем когда оно возвращается в регистр. Таким образом, пересылка данных - это всегда победа над остановкой и NOP.
Конечно, иногда необходима остановка, как в случае, который вы описываете с опасностью использования нагрузки. В небольшом случае задержка имеет тот же эффект, что и NOP:
Размер кода меньше без NOP. Размер кода оказывает огромное влияние на кеш инструкций - это влияет на производительность, и поэтому размер кода нельзя игнорировать.
Кроме того, с точки зрения долговечности архитектуры, в то время как мы можем знать количество NOP, необходимое для некоторых микро -при проектировании архитектуры, это, скорее всего, изменится в будущих микроархитектурах, поэтому NOP, вставленные в более старую программу, больше не работают должным образом на более новом оборудовании. Таким образом, мы пришли к выводу, что лучше позволить аппаратным средствам зависать, а не вставлять NOP.
Например, неисправный компьютер может внутренне переставлять инструкции для покрытия опасности MEM-> EX (NOP просто получит в пути).