Что означают префиксы инструкций в современном x86?
Чтобы понять, почему Bulldozer был некачественным, я посмотрел превосходную книгу об микроархитектуре Агнера Фога, в которой на стр. 178 под бульдозером есть этот параграф.
Инструкции, содержащие до трех префиксов, могут быть декодированы за один такт. Существует очень большое наказание для инструкций с более чем тремя префиксами. Инструкции с 4-7 префиксами занимают 14-15 дополнительных тактов для декодирования. Инструкции с 8–11 префиксами занимают дополнительно 20–22 такта, а инструкции с 12–14 префиксами - дополнительно 27–28 тактов. Поэтому не рекомендуется делать инструкции NOP длиннее с более чем тремя префиксами. Количество префиксов для этого правила включает в себя размер операнда, размер адреса, сегмент, повтор, блокировку, префиксы REX и XOP. Трехбайтовый префикс VEX считается одним, а двухбайтовый префикс VEX не считается. Коды выхода (0F, 0F38, 0F3A) не учитываются.
Когда я искал префиксы, я столкнулся с очень техническими определениями далеко за пределами моих возможностей. Или предположил, что они были ограничены 4 на инструкцию, что противоречит приведенной выше выдержке.
Итак, простыми словами, может ли кто-нибудь объяснить, что они / делают и почему вы можете захотеть добавить до 14+ в инструкцию вместо того, чтобы разбивать ее?