Leider kann ich die entsprechenden Dokumente von Intel nicht finden, aber ich versuch mein bestes aus dem Gedächtnis:
Die 4-1-1 Beschränkung des Decoders ist quasi die Arbeitsweise desselbigen. Der Decoder der P6 - Architektur kann insgesamt drei Instruktionen sowie sechs Micro-Ops pro Taktzyklus an die Recheneinheiten der CPU weitergeben.
Entscheidend sind jetzt die sechs Micro-Ops. Wenn ich die auch nochmal erklären soll, bitte posten.
Diese sechs Micro-Ops müssen im sog. 4-1-1 Modus übertragen werden. Es gibt drei verschiedene Arten von Micro-Ops, fragt mich aber jetzt bitte nicht wie genau diese drei Arten heißen, dafür bräuchte ich besagtes Intel - Dokument.
Und diese Micro-Ops Arten müssen in folgender Weise an die Recheneinheite übergeben werden, damit sie mit optimaler Geschwindigkeit, also parallel abgearbeitet werden:
- Vier µOps der ersten Art
- Ein µOp der zweiten Art
- Ein µOp der dritten Art
Wenn ich mir die Recheneinheiten des Pentium 4 anschaue, könnte es sich also um Vier µOps einfacher Art handeln, sowie um eine µOp komplexer Art. Was jedoch die dritte Art ist, muß ich zugeben, hab ich keine Ahnung.
Man kann also den Decoder optimal ausreizen, indem man den Programmcode auch nach diesem 4-1-1 Prinzip weitergibt. Im Normalfall, also beispielsweise Programmierung mit C++ oder ähnlichem, also nicht Assembler, muß der Compiler entsprechend den Code optimieren (i686 - optimierung).
Ist der Code nicht so optimiert, sondern auf ältere Architekturen, so das beispielsweise fünf einfach µOps zu den Recheneinheiten (im Einfachen Fall also an die ALU) oder zwei komplexe µOps (im Komplexen Fall z.B. an die FPU) pro Taktsignal weitergegeben werden müssen, läuft der Code logischerweise quälend langsam ab. Und leider war diese ältere Art der Programmcode - Optimierung (meistens i386) nicht auf die 4-1-1 Regel angelegt, und läuft somit auf einem Prozessor der P6 - Architektur langsamer als er eigentlich laufen könnte.
Wobei besonders gravierend die einzelne, Komplexe µOp ist.
War das halbwegs verständlich ausgedrückt?