2013-11-10 8 views
1

Я читаю компьютерную организацию и дизайн от P & H и натолкнулся на следующую строку: «в наборе инструкций, таком как x86, где инструкции варьируются от 1 байт до 17 байт, конвейерная обработка значительно сложнее», где выполняется сравнение между x86 и MIPS.Комплексные инструкции и конвейеризация

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

ответ

2

Это утверждение несколько неточно (я не вижу никакой априорной причины, почему наборы команд различной длины должны быть труднее трубопроводом, если должным образом разработан), но, вероятно, относится к тому, что в MIPS, инструкции являются фиксированными длина, 4 байта; В то время как в инструкциях x86 могут варьироваться в зависимости от длины от 1 до байт не более (17 неверно), делая декодирование шагом внутри линии волоса.

Поскольку длина инструкции варьируется, гораздо труднее обнаружить границы команд в x86, так как текущая команда должна быть расшифрована до того, как ЦП знает, где начинается следующий, и следующий, и следующий и т. Д. В MIPS, с другой стороны, приращение +4 - это гарантия, все, что вам нужно сделать, чтобы перейти к следующей инструкции (за исключением случаев, когда в вашем конвейере есть ветка), и, кроме того, эти инструкции также выравниваются по 4-байтным границам.

Другой проблемой, на которую может ссылаться этот оператор, является то, что в x86 в инструкции могут быть добавлены специальные префиксы (такие как REX, VEX и LOCK) и суффиксы (SIB), чтобы изменить их поведение, например предоставление доступа к большему количеству (r8-r15) и более широкие (eax -> rax, XMM -> YMM) регистры, больше операндов (инструкции VEX 3- и 4-операндов неразрушающего хранения, в которых регистр назначения не обязательно является одним из исходных реигстеров), блокируя системную шину, чтобы сделать операцию атомой, или указав масштаб, индекс и базовое смещение в качестве операнда памяти.

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

Более длинные инструкции необязательно кодируют больше «операций». Ваша догадка о некоторых инструкциях x86, содержащих массивные константы, но при этом выполняющих только одну «операцию», прямо на точке!

 Смежные вопросы

  • Нет связанных вопросов^_^