Was bedeuten 'Anweisungspräfixe' in modernen x86
Um zu verstehen, warum Bulldozer unterdurchschnittlich war, habe ich mir das ausgezeichnete Mikroarchitektur-Buch von Agner Fog angesehen. Auf Seite 178 unter Bulldozer steht dieser Absatz.
Instruktionen mit bis zu drei Präfixen können in einem Taktzyklus dekodiert werden. Für Anweisungen mit mehr als drei Präfixen wird eine sehr große Strafe verhängt. Befehle mit 4 bis 7 Präfixen benötigen 14 bis 15 zusätzliche Taktzyklen, um dekodiert zu werden. Befehle mit 8 bis 11 Präfixen benötigen 20 bis 22 zusätzliche Taktzyklen, und Befehle mit 12 bis 14 Präfixen benötigen 27 bis 28 zusätzliche Taktzyklen. Es wird daher nicht empfohlen, NOP-Anweisungen mit mehr als drei Präfixen zu verlängern. Die Präfixanzahl für diese Regel umfasst Operandengröße, Adressgröße, Segment-, Wiederholungs-, Sperr-, REX- und XOP-Präfixe. Ein Drei-Byte-VEX-Präfix zählt als eins, während ein Zwei-Byte-VEX-Präfix nicht zählt. Escape-Codes (0F, 0F38, 0F3A) zählen nicht.
Wenn ich nach Präfixen suchte, traf mich eine Menge technischer Definitionen, die weit über meine Fähigkeiten hinausgingen. Oder es wurde vorgeschlagen, dass sie auf 4 pro Anweisung beschränkt sind, was im Widerspruch zum obigen Extrakt steht.
So in einfachen Worten, kann jemand erklären, was sie sind / tun und warum Sie vielleicht bis zu 14+ an einer Anweisung festhalten möchten, anstatt sie aufzulösen?