Befehle pro Zyklus – Gary erklärt

Es gab eine Zeit, wenn die Taktfrequenz einer CPU die einzige Sache, die Menschen war redeten. Zurück an der Wende des Jahrhunderts, Intel und AMD gesperrt Hörner in einem Rennen die ersten 1-GHz-Desktop-CPU zu lösen. Dies war in erster Linie ein Marketing-Sache, aber es ist eine falsche Vorstellung über die Art und Weise das Wichtigste verstärkt eine moderne CPU-Kern arbeitet, dass die Taktfrequenz. Nun, es ist nicht. Es gibt viele Faktoren, die die Gesamtleistung eines CPU-Kerns, einschließlich der Anzahl von Befehlen führt sie pro Taktzyklus zu bestimmen. Befehle pro Zyklus (IPC) ist ein wichtiger Aspekt des Design der CPU, aber was ist es? Wie funktioniert es, die Leistung beeinflussen? Lassen Sie mich erklären


. Gary erklärt auch:

Zuerst ein bisschen Geschichte. Zurück in den Tag von 8-Bit-Prozessoren, und wahrscheinlich ein wenig nach auch alle CPU-Befehle nacheinander ausgeführt wurden. Wenn ein Befehl abgeschlossen war, wurde der nächste Befehl ausgeführt, und so weiter. Die erforderlichen Schritte zur Ausführung eines Befehls kann im Großen und Ganzen wie folgt definiert werden:. Holen, Decodieren, Ausführen und Write-back

So wird zuerst der Befehl aus dem Speicher abgerufen werden muss. Dann muss es decodiert werden, um herauszufinden, welche Art von Unterricht ist. Wenn die CPU weiß, was es tun muss, es geht nach vorne und führt den Befehl aus. Die daraus resultierenden Veränderungen auf die Register und Statusflags usw. werden dann zurück, bereit für den nächsten Befehl geschrieben ausgeführt werden.


Instruktionen pro cycyle seq Prozessor-16x9-720p

Einige Prozessoren dieser Ära beginnen würde, die von der nächsten Anweisung zu holen, während die Decodierung, auszuführen und Write-Back-Phasen wurden auftretende , aber im wesentlichen alles war sequentiell. dies bedeutet also, dass es vier Taktzyklen dauern würde, um einen Befehl auszuführen, die 0,25 Instruktionen pro Takt ist. um mehr Leistung, die Sie brauchen, um auf die Taktgeschwindigkeit zu bekommen. das bedeutet, dass für diese “einfachen” Designs dann wird die Taktfrequenz der Haupteinflussfaktor für die Leistung war

Henry Ford

 Ford Modell t Produktionslinie

Eines der Dinge, Henry Ford berühmt ist, ist die Verwendung der Baugruppe Linie für die Massenproduktion von Autos. Anstatt ein Auto starten und bis zur Fertigstellung auf sie durch Arbeit, führte Ford die Idee der Arbeit auf viele Autos gleichzeitig und das Bestehen der unvollendeten Auto auf der ganzen Linie zur nächsten Station, bis es fertig war. Die gleiche Idee kann auf die Ausführung CPU-Befehle angewendet werden.

Ich habe bereits erwähnt, dass einige 8-Bit-CPUs, die nächste Anweisung zu holen beginnen würde, während der aktuelle Befehl dekodiert und ausgeführt wurde. Wenn nun die Verarbeitung von Befehlen lassen sich in verschiedene Phasen unterteilt werden, in eine Rohrleitung, dann vier Befehle können an der Montagelinie (in der Pipeline) gleichzeitig. Sobald die Pipeline voll ist, gibt es eine Anweisung in der Bühne holen, eine in der Decodierungsstufe, eine in der Ausführungsstufe, und eine in der Write-Back-Stufe.

einige Anweisungen Stufe der ausführen Zur Ausführung wird müssen die Ergebnisse der vorherigen ausführen zu wissen, was jetzt in der write-back-Stufe ist. Doch da das Ergebnis von dieser Instruktion zur Verfügung stehen wird der nächste Befehl der Lage ist, die Ergebnisse sofort zu verwenden, anstatt zu warten, für den Write-Back auftreten.

Instruktionen pro cycyle Pipeline-Prozessor-16x9-720p

Das Ergebnis der Pipeline Ansatz besteht darin, dass nun ein Befehl pro Taktzyklus abgeschlossen werden kann, die IPC 0,25-1 Bumping die langsamste Stufe Bei kürzeren Pipelines.

die Pipeline Idee weiter in mehr als nur vier Stufen, um die Anweisung zu brechen erweitert werden kann Handhabung. Diese superpipelines den Vorteil, dass komplexe Stufen in kleinere Bits gebrochen werden kann. die Geschwindigkeit der gesamten Pipeline bestimmt, die ihm einen Engpaß zu machen. können Engpässe durch Drehen eines Komplexstufe in mehrere einfachere, aber schneller, diejenigen, gelindert werden. Zum Beispiel kann die ARM Cortex-A72 verwendet eine 15-Stufen-Pipeline , während die Cortex-A73 verwendet eine 11-Pipeline Bühne.

Nicht alle Anweisungen sind die gleichen

Jeder CPU-Befehlssatz hat verschiedene Klassen von Anweisungen. beispielsweise einen Wert aus dem Speicher zu lesen, ist eine andere Klasse von Instruktion als zwei ganze Zahlen Zugabe, die Multiplikation zweier Gleitkommazahlen wiederum unterschiedlich ist, die dem Test wieder anders ist, wenn eine Bedingung erfüllt ist, und so weiter.

Multipliziert zwei Gleitkommazahlen ist langsamer als das Hinzufügen von zwei ganzen Zahlen oder einen Wert in ein Register geladen werden. So ist der nächste Schritt die Leistung zu verbessern, ist die Ausführungsmaschine in separate Einheiten aufzuteilen, die parallel ausgeführt werden können. Das bedeutet, dass, während eine langsame Fließkommamehrfach auftritt, dann eine schnelle Integer-Operation kann auch abgeschlossen versendet und werden. Da gibt es nun zwei Befehle in der Ausführungs Motor dieser ist bekannt als Instruction-Level Parallelität (ILP).

Instruktionen pro cycyle superskalaren Mikroarchitektur-16x9-720p

Wenn Sie über das Pipeline angewendet bedeutet dies, dass diese superskalare Prozessoren mehrere Dekodiereinheiten sowie mehrere Ausführungseinheiten haben können, was interessant ist, dass die Parallelität nicht auf verschiedene Klassen von Anweisungen beschränkt werden muss, aber es können auch zwei Lade- / Speichereinheiten oder zwei Floating-Point-Motoren und so weiter sein. Je mehr Ausführungseinheiten die die ILP größer. Je größer die ILP desto höher ist die Leistung.

die Länge der Rohrleitung manchmal als die Prozessoren Tiefe bezeichnet wird, während seine ILP Fähigkeiten als seine Breite bekannt sind. Tiefe und scheint breit viele Leistungsvorteile bieten. A breite CPU kann mehr als einen Befehl pro Zyklus abzuschließen. So haben wir begonnen, an einem IPC von 0,25. das ist auf 1 aufgestiegen und jetzt kann es von 2 bis 8 in Abhängigkeit von der CPU überall sein.

Alles, was glänzt ist nicht alles Gold

Auf den ersten Blick ist es, dass die Schaffung der tiefsten und breitesten Prozessor möglich, die höchste Leistungsgewinne ergeben würde scheinen würde. Es gibt jedoch einige Einschränkungen auf. Parallelität auf Befehlsebene ist nur möglich, wenn ein Befehl hängt nicht von dem Ergebnis der nächsten. Hier ist ein vereinfachtes Beispiel:

x = y * 3.14;

z = x + 2;

Wenn in Maschinencode übersetzt die Befehle für die Multiplikation haben auftreten und dann das Add. Während der Compiler einige Optimierungen machen könnten, wenn sie vom Programmierer geschrieben an die CPU in der Reihenfolge präsentiert werden, dann können die Add Anweisungen erst nach dem mehrfach auftreten. Das bedeutet, dass auch bei mehreren Ausführungseinheiten der Integer-Einheit nicht, bis die Gleitkomma-Einheit hat ihre Arbeit getan werden kann.

Dies erzeugt, was eine Blase genannt wird, ein Schluckauf in der Pipeline. Dies bedeutet, dass der IPC wird fallen, in der Tat ist es sehr selten ist (wenn nicht unmöglich), dass eine CPU mit seiner vollen theoretischen IPC laufen wird. Das bedeutet, dass ILP hat auch praktische Grenzen, die oft als ILP Wand bezeichnet.

Cortex-A72-microarch-Block-Diagramm-16x9

Es gibt auch ein anderes Problem mit ILP Computerprogramme linear sind nicht in der Tat springen sie über der ganzen Ort.. wie Sie muss das Programm in einer App auf der Benutzeroberfläche tippen, um einen oder anderen zu springen, um den entsprechenden Code auszuführen. auch Dinge wie Schleifen bewirken, dass die CPU zu springen, rückwärts den gleichen Abschnitt des Codes zu wiederholen, immer wieder, und dann aus der Schleife zu springen, wenn sie abgeschlossen ist.

das Problem mit Verzweigung ist, dass die Pipeline mit dem nächsten Satz von Anweisungen präventiv gefüllt wird. wenn die CPU Zweige dann werden alle Befehle in der Pipeline sein könnte das bedeutet, die falschen!, dass die Pipeline geleert werden muss und wieder gefüllt. um dies zu minimieren die CPU zur Vorhersage muss, was bei der nächsten Filiale passieren wird. Dieser Zweig Vorhersage genannt wird. Je besser die Verzweigungsvorhersage, desto besser ist die Leistung.

Out-of-Order

Sie haben die englische Sprache zu lieben, “out of order” bedeuten kann, dass etwas gebrochen ist, aber es kann auch bedeuten, dass etwas in ein getan wurde andere Sequenz als ursprünglich angegeben. Da es Blasen in der Pipeline sein kann, dann wäre es gut, wenn die CPU voraus scannen und sehen konnte, ob es irgendwelche Anweisungen sind, könnten sie diese Lücken zu füllen, verwenden. Natürlich bedeutet dies, dass die Anweisungen nicht in der Reihenfolge, die vom Programmierer (und der Compiler) angegeben ausgeführt wird.

Das ist in Ordnung, solange die CPU, dass die Ausführung der Anweisungen in einer anderen garantieren um die Funktionalität des Programms nicht ändern. dies die CPU tun muss, Abhängigkeitsanalyse auf mögliche Anweisungen auszuführen, die Out-of-Order ausgeführt wird. Wenn eine dieser Anweisungen, um einen neuen Wert in ein Register lädt, die immer noch von einer früheren Gruppe von Befehlen verwendet wird, dann muss die CPU eine Kopie der Register und die Arbeit an beiden Sätzen separat zu erstellen. Dies wird als Registerumbenennung bekannt.

Das Problem mit dem Out-of-Order-Ausführung, Abhängigkeitsanalyse und Registerumbenennung ist, dass es komplex ist. Es braucht viel Siliziumfläche und weil es für jeden Befehl verwendet wird, die ganze Zeit, dann kann es ein Leistungs hog sein. Als Ergebnis nicht alle CPUs out-of-order-Funktionen. Zum Beispiel kann die ARM Cortex-A53 und der Cortex-A35 sind “in Ordnung” Prozessoren. Dies bedeutet, dass sie weniger Strom als ihre größeren Geschwister verwenden, wie der Cortex-A57 oder Cortex-A73, aber sie haben auch eine geringere Leistungsniveaus. Es ist der alte Kompromiss zwischen Stromverbrauch und Leistung.

Befehlsfenster

Wenn Sie nach Anweisungen suchen aus auszuführen, um die CPU voraus in der pipleline zu scannen muss. Wie weit voraus scannt er wird als Befehlsfenster bekannt. Ein größerer Befehlsfenster ergibt eine höhere Leistung pro Taktzyklus, eine größere IPC. Allerdings bedeutet es auch eine größere Siliziumfläche und höheren Stromverbrauch. Es stellt auch Probleme für die CPU-Designer wie die größere der Befehlsfenster, desto schwieriger ist es die internen Timings richtig zu machen, was bedeutet, die Spitzen Taktfrequenz niedriger sein wird. CPUs mit größeren Befehlsfenstern müssen mehr interne Ressourcen. Es muss mehr Registerumbenennungs Ressourcen sein, die Ausgabe-Warteschlangen müssen länger sein und die verschiedenen internen Puffer müssen erhöht werden.

Instruktionen pro cycyle die Befehlsfenster-16x9

Das bedeutet, dass die CPU-Designer haben eine Wahl mit einem kleineren Befehlsfenstern zu arbeiten und für hohe Taktfrequenzen, weniger Silizium zielen darauf ab, und weniger Stromverbrauch;. oder arbeiten mit einem größeren Befehlsfenster, mit niedrigeren Taktfrequenzen, mehr Silizium und eine höhere Leistungsaufnahme

Da größere Befehlsfenstern bedeutet niedrigere Taktfrequenzen, mehr Silizium (was bedeutet höhere Kosten), und eine höhere Stromverbrauch Sie könnten dann denken, dass die Wahl wäre einfach. Allerdings ist es nicht, denn obwohl die Taktfrequenz niedriger ist, ist die IPC höher. und obwohl der Stromverbrauch höher ist die CPU hat eine größere Chance, geht in den Ruhezustand schneller, die Macht auf lange Sicht spart.

ARM, Apfel, Qualcomm, Samsung etc

ARM lizenziert seine CPU-Designs (dh Intellectual Property oder IP) an seine Kunden, die dann in drehen ihre eigenen Chips zu bauen. So ein Prozessor wie der Qualcomm Snapdragon 652 enthält vier ARM Cortex A72 Kerne und vier ARM Cortex A53 Kerne in einer big.LITTLE Anordnung. Allerdings ARM gewährt auch einige OEMs (über eine andere Lizenz) das Recht auf ihre eigenen Design ARM-Architektur Kerne , mit der Bedingung, dass die Entwürfe voll kompatibel mit dem ARM-Befehlssatz sind. Diese werden als “Architektur Lizenzen” bekannt. Solche Lizenzen gehalten werden von Qualcomm, Apple, Samsung, NVIDIA und Huawei.

Ganzkörper-Silizium-Wafer-Samsung-Gießerei-aa Siehe auch: Benutzerdefinierte Kerne im Vergleich zu ARM-Cores Was ist es? 19

In der Regel, wenn ARM-Designs eine out-of-Order-CPU-Kern es für einen kleineren Befehlsfenster und höhere Taktraten setzt. der Cortex-A72 ist in der Lage bei 2,5 GHz läuft, während der Cortex-A73 der Lage ist, mit 2,8 GHz zu erreichen. das gleiche gilt wahrscheinlich von das Samsung Mongoose Kern, kann es bei 2,6 GHz Spitze. Allerdings sieht es aus wie Qualcomm und Apple mit dem größeren Instruktionsfenster Ansatz gehen.

Qualcomm und Apple sind nicht sehr entgegenkommend über die internen Details ihrer CPUs Aber auf der Suche, im Gegensatz zu ARM. bei den Taktfrequenzen wir sehen, dass der Kryo Kern in der Snapdragon 820 eine Spitzen Taktfrequenz von 2.15GHz hat. Nun, da nicht besonders niedrig ist, ist es jedoch niedriger als die 2,5 GHz-Prozessor mit 2,8 GHz von ARM und Samsung-Cores. Jedoch ist die Leistung des Kryo Kerns zumindest gleich, wenn nicht besser, als der ARM und Samsung Kerne. Das bedeutet, dass die Kryo eine höhere IPC, größer ILP und wahrscheinlich einen größeren Befehlsfenster.

CPU-Kern Taktfrequenz Pipeline Instruction Fenster & amp; Breite
ARM Cortex-A72 2,5 GHz 15 Kleinere Befehlsfenster, schmalere Versand, höhere Taktfrequenz
ARM Cortex-A73 2.8GHz 11 Kleinere Befehlsfenster, schmaler Versand, höhere Taktgeschwindigkeit
Samsung Mongoose 2.6GHz Kleinere Befehlsfenster, schmaler Versand, höhere Taktfrequenz
Qualcomm Kryo 2.15GHz Größere Befehlsfenster, breiter Versand, niedriger Taktfrequenz
Apple-A8 1,5 GHz 16 Größere Befehlsfenster, breiter Versand, niedriger Taktgeschwindigkeit
Apple-A9 1.85GHz 16 Größere Befehlsfenster, breiter Versand, niedriger Taktfrequenz

Wenn es um Apples Core-Designs kommt, scheint es, dass Cupertino im größeren Befehlsfenster Idee stark investiert hat. Das Apple-A9 (wie in den iPhone 6S gefunden) bei nur 1,85 GHz getaktet. Mehr als dass es ein Dual-Core-Design, im Vergleich zu den Quad-Core-und Octa-Core-Designs von Qualcomm und Samsung. Doch die Leistung der A9 ist eindeutig auf dem Niveau oder besser als die aktuelle High-End-Snapdragon und Exynos-Prozessoren. Das gleiche gilt für seine Vorgänger gesagt werden, das Apple-A8, die in nur 1,5 GHz getaktet wurde.

Die Zukunft und Nachbereitung

ist klar sowohl die höhere Taktrate mit niedriger IPC und die untere Taktfrequenz mit höheren IPC Ansätze haben ihre Vorzüge. Einige mobile SoC-Hersteller haben sich dafür entschieden, gehen mit dem ersten (das heißt ARM und Samsung) und es scheint, dass andere (wie Apple und Qualcomm) haben sich für Letzteres entschieden. Natürlich sind die Gesamtleistung und Leistungsniveaus eines System-on-a-Chip ist mehr als nur eine Geschichte von IPC, ILP und dem Befehlsfenster. Andere Faktoren sind das Cachespeichersystem , die Verbindungen zwischen den verschiedenen Komponenten, die Geschwindigkeit des externen Speichers die GPU, und so weiter.

Es wird, in welche Richtung CPU-Design wird den Kopf interessant sein, in den kommenden Jahren zu sehen. Da gibt es Grenzen Taktfrequenz und ILP sind, welche Lösung die beste auf lange Sicht sein? Beide? Weder? auch die Prozessknoten, die verwendet werden, um CPUs machen werden immer härter und härter. Wir sind schon bei 14 / 16nm, als nächstes kommt 10nm und dann 7 nm, aber nach, dass es . nicht klar ist, ob 5 nm, rentabel sein wird das bedeutet, dass die CPU-Designer neue und interessante Wege zu finden, müssen die Leistung zu steigern und gleichzeitig den Stromverbrauch niedrig zu halten

Gary erklärt auch:

Es würde mich interessieren Ihre Gedanken auf Anweisungen pro Zyklus zu hören. Glauben Sie, dass ein Ansatz ist besser als die anderen? Bitte benutzen Sie den folgenden Kommentar zu lassen Sie mich wissen, was Sie denken. Wenn Sie eine tiefergehende Diskussion wollen, dann fahren Sie bitte die Android Authority Foren über, wo ich geschaffen habe, a Spezialgewinde über Befehle pro Zyklus und CPU-Design zu sprechen.

Android Authority

Befehle pro Zyklus – Gary erklärt
Source: deutsch  
August 1, 2016


Next Random post