Переупорядочивать буфер в спекулятивном исполнении всегда нужно?

Я понимаю необходимость повторного заказа буфера в спекулятивном исполнении. Однако, учитывая последовательность не спекулятивных инструкций без каких-либо ветвей, почему все эти инструкции все еще должны проходить через ROB и затем фиксироваться по порядку? Поскольку нет опасности управления и предполагается, что наличие переименования регистров позволяет избежать опасностей WAR и WAW, является ли ROB необходимостью в таком случае?

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

1 ответ

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

Я полагаю, что вы могли бы предотвратить угрозы управления, остановив распределение в каждой условной ветви, но это привело бы к ужасной производительности и исключило бы множество преимуществ при неупорядоченном выполнении, повернув каждую ветвь (средняя частота которой, как правило, должна быть однажды в каждой). 5 инструкций) в пункт сериализации и срыв.

Еще одним "преимуществом" необходимости проходить через ROB является переименование регистра. Без упорядоченного индекса у вас будут проблемы с управлением вашими физическими регистрами, чтобы иметь смысл в соответствии с порядком программы. Скажем, у вас есть 3 последовательные инструкции как таковые:

inc rax
add rbx, rax ; assume rbx is the dest
inc rax

Сказать rbx готов поздно, когда он наконец готов выполнить addкак двигатель, вышедший из строя, узнает, какое значение rax принять? у вас уже есть старое значение, +1 а также +2 и все они готовы - машина ООО должна пометить источник как переименованную версию rax в тот момент, когда дополнение вошло в ROB. Кстати, есть и другие способы добиться этой правильности, но они более сложны и требуют очередей.

Другие вопросы по тегам