O que significam 'prefixos de instruções' no x86 moderno
Para entender o porquê do Bulldozer ser inferior, estive analisando o excelente livro de microarquitetura da Agner Fog, nele na página 178, no bulldozer, este parágrafo.
Instruções com até três prefixos podem ser decodificadas em um ciclo de clock. Há uma penalidade muito grande para instruções com mais de três prefixos. Instruções com prefixos 4-7 levam 14-15 ciclos de relógio extras para decodificar. As instruções com prefixos 8-11 levam 20 a 22 ciclos de relógio extras e as instruções com prefixos 12-14 levam 27 a 28 ciclos extras. Portanto, não é recomendável prolongar as instruções NOP com mais de três prefixos. A contagem de prefixos para esta regra inclui tamanho do operando, tamanho do endereço, segmento, repetição, bloqueio, prefixos REX e XOP. Um prefixo VEX de três bytes conta como um, enquanto um prefixo VEX de dois bytes não conta. Os códigos de escape (0F, 0F38, 0F3A) não contam.
Quando pesquisei prefixos, fui atingido com definições muito técnicas muito além de minhas habilidades. Ou sugeriu que eles estavam limitados a 4 por instrução que conflita com o extrato acima.
Então, em termos simples, alguém pode explicar o que eles são / fazem e por que você pode incluir até 14+ em uma instrução em vez de quebrá-la?