Почему пересылка данных и циклы задержки более эффективны, чем NOP, для устранения опасностей, связанных с использованием нагрузки? - PullRequest
3 голосов
/ 13 февраля 2020

Мы можем использовать как NOPs, так и циклы пересылки данных и блокировки для устранения данных и опасностей, связанных с использованием нагрузки. Однако если у нас есть несколько угроз для данных, то становится все неэффективно разрешать их все, используя NOPs, так как это увеличит время выполнения программы. По сравнению с этим, если у нас есть угроза использования нагрузки, мы можем использовать пересылку данных и циклы задержки для устранения этой опасности, и это дает более эффективный результат. Мой вопрос: как пересылка данных в сочетании с циклами останова является более эффективным способом борьбы с опасностями данных по сравнению с NOPs? Потому что, когда мы добавляем цикл остановки, программа должна ждать тактовый цикл для пересылки данных (от MEM до EX). Таким образом, счетчик тактов будет увеличен на 1.

1 Ответ

5 голосов
/ 13 февраля 2020

Пересылка данных преодолевает некоторые опасности, с признанием того, что необходимое значение, вычисленное предыдущей инструкцией, становится доступным раньше, чем когда оно возвращается в регистр. Таким образом, пересылка данных - это всегда победа над остановкой и NOP.

Конечно, иногда необходима остановка, как в случае, который вы описываете с опасностью использования нагрузки. В небольшом случае задержка имеет тот же эффект, что и NOP:

Размер кода меньше без NOP. Размер кода оказывает огромное влияние на кеш инструкций - это влияет на производительность, и поэтому размер кода нельзя игнорировать.

Кроме того, с точки зрения долговечности архитектуры, в то время как мы можем знать количество NOP, необходимое для некоторых микро -при проектировании архитектуры, это, скорее всего, изменится в будущих микроархитектурах, поэтому NOP, вставленные в более старую программу, больше не работают должным образом на более новом оборудовании. Таким образом, мы пришли к выводу, что лучше позволить аппаратным средствам зависать, а не вставлять NOP.

Например, неисправный компьютер может внутренне переставлять инструкции для покрытия опасности MEM-> EX (NOP просто получит в пути).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...