CISC und VLIW sowie Befehls- und Opcode

CISC und VLIW sowie Befehls- und Opcode

Aushttp://en.wikipedia.org/wiki/Anleitung

CISC-Prozessorenenthalten „komplexe“ Anweisungen in ihrem Befehlssatz. Eine einzelne „komplexe“ Anweisung führt etwas aus, das auf anderen Computern viele Anweisungen erfordern kann. Solche Anweisungen sind typisch für Anweisungen, die mehrere Schritte umfassen, mehrere Funktionseinheiten steuern oder anderweitig in einem größeren Maßstab auftreten als die Masse der einfachen Anweisungen, die vom jeweiligen Prozessor implementiert werden.

...

InArchitekturen mit sehr langen Befehlswörtern (VLIW), zu denen viele Mikrocodearchitekturen gehören, umfasst ein einzelner Befehl mehrere gleichzeitige Opcodes und ihre Operanden.

CISC und VLIW scheinen mir dasselbe Konzept zu sein, da eine Anweisung mehrere Operationen (also Opcodes) umfasst. Handelt es sich also um dasselbe Konzept?

Wie definieren Sie eine einzelne Operation (d. h. einen Operationscode), wenn Sie angeben, ob eine Anweisung mehrere Operationen (d. h. Operationscodes) hat?

Antwort1

Moderne CISC-Prozessoren verfügen über mehrere Ausführungseinheiten. Sie verfügen außerdem über zahlreiche zusätzliche Schaltkreise und Logik, um den Befehlsstrom auf diese Ausführungseinheiten zu verteilen.

VLIW ist ein Versuch, einen Teil dieser Arbeit dem Compiler zu überlassen und die eingesparten Schaltkreise für noch mehr Ausführungseinheiten, Cache oder andere Ressourcen zu verwenden.

Ein Beispiel hierfür wäre Itanium, bei dem die Befehlswörter 128 Bit lang sind und drei Befehle enthalten. Dadurch kann der Compiler einen Teil der Arbeit übernehmen, indem er Befehle paarweise zusammenstellt, damit sie gemeinsam ausgeführt werden können.

Antwort2

Ein Befehl ist ein einzelner Befehl, der logisch vor dem nächsten ausgeführt werden muss. Wenn ein Befehl mehr als eine Operation enthält, wie z. B. ein VLIW-Befehl, müssen diese gleichzeitig ausgeführt werden. Und in einem VLIW-Befehl entspricht jeder Operationsslot einer Hardware-Verarbeitungseinheit (eine Kombination aus einer FPU und einer ALU), die vom Befehl statisch zugewiesen wird. In einem CISC oder RISC hingegen kann der Prozessor jede beliebige freie Verarbeitungseinheit wählen. Da die Einheiten jedoch im Befehl mit VLIW zugewiesen werden, können Sie Code für ein VLIW nicht auf einem anderen Modell mit mehr oder weniger Verarbeitungseinheiten ausführen, da die Befehle dafür mehr oder weniger Slots in ihren Befehlen hätten, obwohl einige größere möglicherweise das Ausführen von Code ermöglichen, der ein Format mit weniger Slots verwendet, anders als in einem CISC oder RISC, wo der Code automatisch zusätzliche Verarbeitungseinheiten verwenden kann, kann der VLIW-Code die zusätzlichen Verarbeitungseinheiten nicht verwenden, ohne speziell für den Prozessor neu kompiliert zu werden.

Diese Einschränkung bei VLIW war der GrundExplizite Datengraph-Ausführung (EDGE).

Antwort3

Wie definieren Sie eine einzelne Operation (d. h. einen Operationscode), wenn Sie angeben, ob eine Anweisung mehrere Operationen (d. h. Operationscodes) hat?

Die Definitionen und Ihre Erwartungen sind nicht ganz richtig."Opcode"dient zur AnzeigesichtbarAnweisungen, nicht versteckte Operationen wie Mikrooperationen, und"Anweisung"sollte sich nur beziehen aufVom Benutzer zugängliche Operationen. Eine „Operation“ entspricht keinem Operationscode und kann einfach (ein einzelner Operationscode) oder komplex (mehrere Operationscodes) sein, je nachdem, wie Sie sich darauf beziehen, z. B. wenn Sie die gesamte Operation selbst ansprechen möchten oder jede Operation auf niedrigerer Ebene, die verwendet wird, um das Große zu erreichen. Es ist genau wie bei einer Division, die als einzelne Operation bezeichnet werden kann. Eine Division kann jedoch auch in eine Reihe von Subtraktionen/Multiplikationen unterteilt werden, d. h. in mehrere Operationen (Stufen im Hardware-Begriff). Viele alte RISC-Architekturen haben separate Anweisungen für verschiedene Stufen einer Division, um die Anweisungen einfach zu halten und die Pipelining unkompliziert zu machen. Aber moderne RISC-Architekturen tun dies normalerweise nicht und können sehr komplexe Anweisungen wie CISC haben, beispielsweise rlwinmin PowerPC oder ldm/stmARM.

InVLIW-Architekturen, ist eine einzelne Anweisung immer noch eine Anweisung. Anweisungen werden jedochzusammen gruppiertals Batch. Ein Batch in der Itanium-Architektur enthält beispielsweise 3 Anweisungen, die ausgeführt werdengleichzeitig. Natürlich muss jeder Befehl seinen eigenen Operationscode haben, und diese Operationscodes stehen dem Programmierer zur Verfügung. Darüber hinaus sind diese Befehle unabhängig von den anderen, im Gegensatz zu Mikrooperationen, die gemeinsam eine Operation eines Befehls höherer Ebene darstellen. In manchen Architekturen können Sie beispielsweise zwei Additionen zusammen mit einer Multiplikation und einem bitweisen XOR verschiedener Dinge in einem Batch haben, die nichts miteinander zu tun haben.

Im Gegenteil, einCISCAnweisung isteinzigerAnweisung, die eine einzelne Operation ausführt undein Operationscode. Frühere Generationen von CISC-CPUs führten jeden Befehl direkt aus, es handelte sich also wirklich um einen einzigen, unzerstörbaren Befehl. In modernen Prozessoren werden komplexe „Operationen“ jedoch in mehrere einfachere Mikrooperationen aufgeteilt, die in kürzeren Taktzyklen ausgeführt werden können. Diese Mikrooperationen sindfür Außenstehende nicht sichtbar, also kann man sie nicht mehrere Opcodes nennen. Für Benutzer ist es immer noch eine einzelne Anweisung. Sie werden wahrscheinlichman weiß nie, welche Mikrooperationen Intel oder AMD unter der Haube verwenden. Außerdem kann ein CISC-Befehl in einen oder mehrere Mikrooperationen aufgeteilt werden, daher ist es völlig falsch zu sagen, dass CISC mehrere Operationen in einem einzigen Befehl beinhaltet.

Tatsächlich zerlegen moderne RISC-Architekturen Befehle genau wie CISC in Mikrooperationen, und sehr einfache Operationen werden auch zu einer Makrooperation kombiniert, die ebenfalls nicht für den Benutzer sichtbar ist, beispielsweise CMP/Jcc in x86 oder DIV/REM in RISC-V, und Sie werden nicht sagen, dass RISC einfach ist. Ein RISC-Befehl kann immer noch mehrere Operationen ausführen.

CISC und VLIW, einer hat einen einzelnen Befehl mit einem einzelnen Operationscode, der gleichzeitig ausgeführt wird (abgesehen von superskalarer und Out-of-Order-Ausführung), einer führt mehrere Befehle gleichzeitig aus, wie sind sie also dasselbe Konzept? Sie sollten es über dem Befehlssatz oder zumindest auf derselben Ebene betrachten. Ein Vergleich zwischen einer Sache, die intern in einer CPU verwendet wird, und einer Sache im Befehlssatz über der CPU ist sinnlos.

verwandte Informationen