Zyklen pro Anweisung

Im Rechnerarchitektur, Zyklen pro Anweisung (AKA Taktzyklen pro Befehl, Uhren pro Anweisung, oder CPI) ist ein Aspekt von a Prozessor Leistung: die durchschnittliche Anzahl von Taktzyklen pro Anweisung Für ein Programm oder ein Programmfragment.[1] Es ist der multiplikativer Inverse von Anweisungen pro Zyklus.

Definition

Der Durchschnitt der Zyklen pro Anweisung in einem bestimmten Prozess wird durch Folgendes definiert:

Wo ist die Anzahl der Anweisungen für einen bestimmten Anweisungsart , sind die Uhrzyklen für diesen Anweisungsart und ist die Gesamtanweisung. Die Summe fasst alle Anweisungsarten für einen bestimmten Benchmarking -Prozess zusammen.

Erläuterung

Nehmen wir a annehmen Klassische RISC -Pipeline, mit den folgenden fünf Stufen:

  1. Anweisungszyklus (if).
  2. Befehlskodier-/Register -Abrufzyklus (ID).
  3. Ausführung/effektiver Adresszyklus (Ex).
  4. Speicherzugriff (MEM).
  5. Write-Back Cycle (WB).

Jede Stufe erfordert einen Taktzyklus und eine Anweisung fließt nacheinander durch die Stadien. Ohne Pipelining, in einem Multi-Cycle-ProzessorEine neue Anweisung wird erst nach Abschluss der vorherigen Anweisung in Stufe 5 in Stufe 1 abgerufen. Daher beträgt die Anzahl der Taktzyklen, die zur Ausführung einer Anweisung erforderlich sind (CPI = 5> 1). In diesem Fall soll der Prozessor sein Subskalar. Mit Pipelining wird jeder Taktzyklus durch Ausnutzung ein neuer Anweisungen abgerufen Parallelität auf BefehlsebeneDa man also theoretisch fünf Anweisungen in den fünf Pipeline -Stufen gleichzeitig haben kann (eine Anweisung pro Stufe), würde eine andere Anweisung Stufe 5 in jedem Taktzyklus abschließen und im Durchschnitt die Anzahl der Taktzyklen, die zur Ausführung einer Anweisung erforderlich sind 1 (CPI = 1). In diesem Fall soll der Prozessor sein Skalar.

Mit einer Single-Ausführungseinheit Der Prozessor, der beste CPI-erreichbare, ist 1. Mit einem Prozessor mit mehreren Execution-Einheiten kann jedoch noch bessere CPI-Werte (CPI <1) erzielt werden. In diesem Fall soll der Prozessor sein Superscalar. Um bessere CPI -Werte ohne Pipelining zu erhalten, muss die Anzahl der Ausführungseinheiten größer sein als die Anzahl der Stufen. Beispielsweise werden mit sechs Hinrichtungseinheiten nur sechs neue Anweisungen in Stufe 1 abgerufen, nachdem die sechs vorherigen Anweisungen in Stufe 5 abgeschlossen sind. Daher beträgt im Durchschnitt die Anzahl der Taktzyklen, die zur Ausführung einer Anweisung erforderlich sind (CPI = 5/ 6 <1). Um mit Pipelining bessere CPI -Werte zu erhalten, müssen mindestens zwei Ausführungseinheiten vorhanden sein. Beispielsweise werden mit zwei Ausführungseinheiten zwei neue Anweisungen in jedem Taktzyklus abgerufen, indem die Parallelität auf Befehlsebene ausnutzt. Daher würden zwei verschiedene Anweisungen Stufe 5 in jedem Taktzyklus abschließen und im Durchschnitt die Anzahl der Taktzyklen, die zur Ausführung einer Anweisung erforderlich sind 1/2 (CPI = 1/2 <01).

Beispiele

Beispiel 1

Für den Mehrzyklus MIPSEs gibt fünf Arten von Anweisungen:

  • Last (5 Zyklen)
  • Speichern (4 Zyklen)
  • R-Typ (4 Zyklen)
  • Zweig (3 Zyklen)
  • Springen (3 Zyklen)

Wenn ein Programm:

  • 50% Lastanweisungen
  • 25% Speicheranweisungen
  • 15% R-Typ-Anweisungen
  • 8% Filiale Anweisungen
  • 2% Sprunganweisungen

Dann ist der CPI:

Beispiel 2

[2] A 400MHz Prozessor wurde verwendet, um a auszuführen Benchmark -Programm mit dem folgenden Befehlsmix und Taktzyklus zählen:

Anweisungsart Anweisungsanzahl Taktzykluszahl
Ganzzahlige Arithmetik 45000 1
Datentransfer 32000 2
Schwimmender Punkt 15000 2
Kontrollübertragung 8000 2

Bestimmen Sie den effektiven CPI, MIPS (Millionen von Anweisungen pro Sekunde) Rate und Ausführungszeit für dieses Programm.

seit: und

Deswegen:

Siehe auch

Verweise

  1. ^ Patterson, David A.; Hennessy, John L. (1994). Computerorganisation und Design: Die Hardware-/Software -Oberfläche. ISBN 9781558602816.
  2. ^ Erweiterte Computerarchitektur von Kai Hwang, Kapitel 1, Übungsproblem 1.1