Was sind "Anweisungen pro Zyklus"?

15642
Matt Simmons

Ich habe ein wenig mehr darüber gelernt, wie Prozessoren arbeiten, aber ich konnte keine direkte Antwort auf Anweisungen pro Zyklus finden.

Ich hatte zum Beispiel den Eindruck, dass eine Vierkern-CPU vier Anweisungen pro Zyklus ausführen könnte, also würde eine Vierkern-CPU mit 2 GHz 8 Milliarden Operationen pro Sekunde ausführen. Ist das der Fall?

Ich bin mir sicher, dass es die Dinge zu sehr vereinfacht, aber wenn es einen Leitfaden oder etwas anderes gibt, mit dem ich mich vorgeben kann, bin ich definitiv offen für Ideen.

20
Nein, das ist nicht der Fall. Moderne x86-CPUs können unter idealen Bedingungen drei Anweisungen pro Kern pro Zyklus aushalten, während einige Anweisungen Dutzende Zyklen erfordern können. David Schwartz vor 13 Jahren 0

6 Antworten auf die Frage

30
Kevin Panko

Ich denke gerne an eine Wäscherei-Analogie. CPU-Anweisungen sind wie Wäsche. Sie müssen für jede Ladung sowohl die Waschmaschine als auch den Trockner verwenden. Nehmen wir an, jeder dauert 30 Minuten, um zu laufen. Das ist der Taktzyklus. Alte CPUs würden die Waschmaschine und dann den Trockner laufen lassen. Es dauerte 60 Minuten (2 Zyklen), um jede Ladung Wäsche zu beenden.

Pipelining: Eine Pipeline ist, wenn Sie beide gleichzeitig verwenden - Sie waschen eine Ladung und dann während des Trocknens die nächste Ladung. Der erste Ladevorgang dauert 2 Zyklen, der zweite Ladevorgang ist jedoch nach einem weiteren Zyklus beendet. Daher benötigen die meisten Lasten nur einen Zyklus mit Ausnahme der ersten Last.

Superscalar: Bringen Sie die gesamte Wäsche in den Waschsalon. Holen Sie sich 2 Scheiben und laden Sie beide. Wenn sie fertig sind, finde 2 Trockner und benutze beide. Jetzt können Sie 2 Ladungen in 60 Minuten waschen und trocknen. Das sind 2 Ladungen in 2 Zyklen. Jeder Ladevorgang dauert immer noch 2 Zyklen, aber Sie können jetzt mehr davon ausführen. Die durchschnittliche Zeit beträgt jetzt 1 Ladung pro Zyklus.

Superscalar mit Pipelining: Waschen Sie die ersten 2 Ladungen, laden Sie die Waschmaschinen mit den nächsten 2 Ladungen auf, während diese trocknen. Die ersten 2 Ladungen dauern nun noch 2 Zyklen, und die nächsten 2 sind nach einem weiteren Zyklus beendet. In der Regel erledigen Sie in jedem Zyklus 2 Ladevorgänge.

Mehrere Kerne: Geben Sie Ihrer Mutter die Hälfte Ihrer Wäsche, die auch über 2 Waschmaschinen und 2 Trockner verfügt. Wenn Sie beide zusammenarbeiten, können Sie doppelt so viel erreichen. Dies ist ähnlich wie Superskalar, unterscheidet sich jedoch geringfügig. Anstatt dass Sie die gesamte Wäsche selbst zu und von jeder Maschine transportieren müssen, kann sie dies zur gleichen Zeit wie Sie tun.

Das ist großartig. Wir können in derselben Zeit achtmal mehr Wäsche waschen als zuvor, ohne dass schnellere Maschinen erstellt werden müssen. (Doppelte Taktfrequenz: Waschmaschinen, die nur 15 Minuten zum Laufen brauchen.)

Nun reden wir darüber, wie die Dinge schief gehen:

Pipeline-Blase: Sie haben einen Fleck, der beim Waschen nicht herausgekommen ist, also entscheiden Sie sich, ihn erneut zu waschen. Jetzt sitzt der Trockner nur da und wartet auf etwas, was zu tun ist.

Cache Miss: Der LKW, der die schmutzige Wäsche liefert, steckt im Verkehr. Jetzt haben Sie 2 Waschmaschinen und 2 Trockner, aber Sie bekommen keine Arbeit, weil Sie warten müssen.

Abhängig davon, wie oft etwas schief geht, werden wir nicht in jedem Zyklus 4 Lasten erledigen können, daher kann die tatsächliche Arbeitsleistung variieren.

Branchenvoraussage: Nun, Sie fangen an, Ihre saubere Kleidung zu waschen, falls Sie sie später flecken, damit sie schon sauber sind ... Okay, hier bricht die Analogie zusammen ...

Schöne Analogie. Ich werde es stehlen. dmckee vor 15 Jahren 0
Hyperthreading ist so, als würden sich mehrere Leute im selben Waschsalon waschen. Ronald Pottol vor 15 Jahren 5
Branchenvoraussage: Sie fangen an, Kleidung zu waschen, die Sie Ihrer Meinung nach in der nächsten Woche brauchen werden Akash vor 12 Jahren 1
Hyperthreading: Sie akzeptieren die Wäsche anderer Personen und machen die Anzahl der vorhandenen Waschmaschinen bekannt (1). Bald wird Ihnen klar, dass Ihre Waschmaschine Platz für mehr als die Hose bietet, die Sie gerade waschen, nur keine weitere Hose, sondern etwas kleineres. Du stopft also auch ein paar Socken ein. Jetzt werben Sie mit 2 Waschmaschinen und hoffen, dass die Menschen die Wäsche abstellen können, sodass Sie die Löcher immer mit kleineren Gegenständen füllen können. Nur wenn dieser Kerl, der jemals mit 10 dreckigen Jeans und 1 Paar Socken kommt, seine Sachen fallen lässt, ist er so langsam wie nie zuvor. Florenz Kley vor 12 Jahren 2
@Akash Sie waschen Kleider, die noch nicht einmal Flecken haben, nur für den Fall? Kevin Panko vor 12 Jahren 0
@KevinPanko Angenommen, sie sind natürlich schmutzig und einige andere Klamotten sind auch schmutzig, was Sie wahrscheinlich die nächste Woche nicht benutzen werden. Akash vor 12 Jahren 0
Bedeutet das, dass sich der Maschinenzyklus vom Takt unterscheidet? Ein einzelner Maschinenzyklus besteht aus vielen Taktzyklen? KawaiKx vor 11 Jahren 0
Nein, das ist hier dasselbe. Kevin Panko vor 11 Jahren 0
21
Ludwig Weinzierl

Die Schlüsselwörter, die Sie wahrscheinlich nachschlagen sollten, sind CISC, RISC und superskalare Architektur .

CISC

In einer CISC-Architektur (x86, 68000, VAX) ist ein Befehl mächtig, die Verarbeitung erfordert jedoch mehrere Zyklen . In älteren Architekturen wurde die Anzahl der Zyklen festgelegt. Heutzutage hängt die Anzahl der Zyklen pro Befehl normalerweise von verschiedenen Faktoren ab (Cache-Treffer / Fehler, Verzweigungsvoraussage usw.). Es gibt Tische zum Nachschlagen. Oft gibt es auch Erleichterungen, um tatsächlich zu messen, wie viele Zyklen eine bestimmte Anweisung unter bestimmten Umständen in Anspruch nimmt (siehe Leistungsindikatoren ).

Wenn Sie an den Details für Intel interessiert sind, ist das Intel 64- und IA-32-Optimierungshandbuch eine sehr gute Lektüre.

RISC

RISC (ARM, PowerPC, SPARC) -Architektur bedeutet normalerweise, dass ein sehr einfacher Befehl nur wenige (oft nur einen) Zyklus benötigt.

Superscalar

Unabhängig von CISC oder RISC gibt es jedoch die superskalare Architektur. Die CPU bearbeitet keine Anweisung nach der anderen, sondern bearbeitet viele Anweisungen gleichzeitig, ähnlich einer Montagelinie.

Die Folge ist: Wenn Sie einfach die Zyklen für jede Anweisung Ihres Programms nachschlagen und dann alle addieren, erhalten Sie eine Zahl, die zu hoch ist. Angenommen, Sie haben eine Single-Core-RISC-CPU. Die Zeit zum Verarbeiten einer einzelnen Anweisung kann niemals kürzer sein als die Zeit eines Zyklus, aber der Gesamtdurchsatz kann durchaus mehrere Anweisungen pro Zyklus sein.

Für mich bedeutet die Analogie "Fließband" nur einfaches Pipelining, keine Superskalararchitektur. Superscalar beinhaltet das Replizieren von Teilen der CPU-Hardware (z. B. eine Stufe der Pipeline, die einen Engpass darstellt), um den Durchsatz zu verbessern. sblair vor 15 Jahren 8
Ich füge aus Gründen der Kürze hinzu: RISC = reduzierter Befehlssatz; CISC = komplexer Befehlssatz. Gute Erklärung, Ludwig für das Aufzeigen des Cache-Treffer-Fehler-Verhältnisses und (letztendlich) auf den TLB. Die Mikroprozessorarchitektur zu erklären, ist nicht einfach, vor allem, um alles zu einem (ziemlich kompakten) Posten zusammenzudrücken! :) osij2is vor 15 Jahren 2
Soweit ich höre, verbringen CPUs heutzutage viel Zeit damit, auf die Arbeit zu warten, um aus dem Hauptspeicher zu kommen. Zumindest war das die Antwort, die ich erhielt, als ich fragte, warum es in einer CPU keine weiteren Ausführungskerne gibt. surfasb vor 13 Jahren 1
2
hyperslug

Nicht genau. Der Zyklus, auf den Sie sich beziehen, ist der Taktzyklus. Da die meisten modernen Prozessoren eine Pipeline verwenden, dauert es mehrere Taktzyklen, bis eine Anweisung ausgeführt wird. (Dies ist eine gute Sache, da andere Anweisungen bereits vor dem ersten Befehl mit der Ausführung beginnen können.) Unter den idealen Umständen wären es wahrscheinlich 8 Milliarden IPC, aber alle möglichen Dinge passieren wie Abhängigkeiten, Blasen in der Pipeline, Äste usw., damit es nicht immer klappt.

Sorry, es ist viel zu kompliziert für eine direkte Antwort. Jon Stokes erklärt es in diesem Artikel gut .

2
dmckee

Die Tage, an denen man die Zykluszeit für jeden Befehl nachschlagen (oder sich sogar merken konnte) und wissen, wie viele Uhren ein bestimmtes Stück Code benötigen würde, um zu Ende zu gehen, sind für High-End-Chips längst vorbei (sind aber immer noch bei uns.) Mikrocontroller). Ein moderner Allzweck-CPU-Kern kann mehrere Kopien mehrerer unterschiedlicher Ausführungseinheiten in mehreren Pipelines haben, die auf einen mehrstufigen Speichercache mit seiner eigenen Logik sowie Verzweigungsvorhersage und spekulative Ausführungsfähigkeit zugreifen. Mehrere Core auf einem einzelnen Chip ziehen die Cache-Konsistenzlogik und andere Komplexitäten mit sich.

Die kurze Antwort lautet also: Mehr Kerne bedeuten mehr Kapazität, um Dinge zu erledigen, aber nicht auf eine schöne, vorhersagbare Art und Weise .

1
Synetech

Ludwig erklärte den Unterschied zwischen CISC und RISC, vergaß aber nicht zu erwähnen, dass RISC-Anweisungen zwar einfach und schnell sind, jedoch wenig individuell arbeiten. Daher müssen Sie mehrere Zeichenfolgen aneinander reihen, um dieselbe Funktion wie eine einzelne Anweisung in einem CISC-Prozessor auszuführen. Infolgedessen sind einige RISC-Anweisungen schneller, andere nicht.

0
Joakim Elofsson

Zyklen sind eher ein Pro-Core-Konzept. Jeder Kern führt parallel eigene Zyklen durch.