Die Art, wie ich es mir vorstelle, ist eine Wäscherei-Analogie. CPU-Anweisungen sind wie jede Menge Wäsche. Sie müssen sowohl die Waschmaschine als auch den Trockner für jede Ladung verwenden. Nehmen wir an, jeder Vorgang dauert 30 Minuten. Das ist der Taktzyklus. Alte CPUs ließen die Waschmaschine und dann den Trockner laufen, wobei jedes Mal 60 Minuten (2 Zyklen) benötigt wurden, um jede Ladung Wäsche zu beenden.
Pipelining: Eine Pipeline ist, wenn Sie beide gleichzeitig verwenden - Sie waschen eine Ladung und während des Trocknens waschen Sie die nächste Ladung. Der erste Ladevorgang dauert 2 Zyklen, der zweite Ladevorgang wird jedoch nach einem weiteren Zyklus beendet. Die meisten Lasten benötigen also nur einen Zyklus, mit Ausnahme der ersten Last.
Superscalar: Bringen Sie die Wäsche zum Waschsalon. Holen Sie sich 2 Unterlegscheiben und laden Sie beide. Wenn sie fertig sind, finden Sie 2 Trockner und verwenden Sie beide. Jetzt können Sie 2 Ladungen in 60 Minuten waschen und trocknen. Das sind 2 Lasten in 2 Zyklen. Jede Ladung dauert immer noch 2 Zyklen, aber Sie können jetzt mehr davon ausführen. Die durchschnittliche Zeit beträgt jetzt 1 Last pro Zyklus.
Superskalar mit Pipelining: Waschen Sie die ersten 2 Ladungen und laden Sie während des Trocknens die Waschmaschinen mit den nächsten 2 Ladungen auf. Jetzt dauern die ersten 2 Ladevorgänge noch 2 Zyklen, und die nächsten 2 sind nach 1 weiteren Zyklus beendet. Meistens beenden Sie also zwei Ladevorgänge in jedem Zyklus.
Mehrere Kerne: Gib die Hälfte deiner Wäsche deiner Mutter, die auch 2 Waschmaschinen und 2 Trockner hat. Wenn Sie beide zusammenarbeiten, können Sie doppelt so viel erreichen. Das ist ähnlich wie bei Superscalar, aber etwas anders. Anstatt dass Sie die gesamte Wäsche zu und von jeder Maschine selbst bewegen müssen, kann sie dies gleichzeitig mit Ihnen tun.
Das ist großartig, wir können in der gleichen Zeit achtmal mehr Wäsche waschen als vorher, ohne schnellere Maschinen bauen zu müssen. (Verdoppeln Sie die Taktrate: Waschmaschinen, die nur 15 Minuten zum Laufen brauchen.)
Lassen Sie uns nun darüber sprechen, wie etwas schief geht:
Pipeline-Blase: Sie haben einen Fleck, der beim Waschen nicht herausgekommen ist, und entscheiden sich, ihn erneut zu waschen. Jetzt sitzt der Trockner nur noch da und wartet auf etwas zu tun.
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 mehr, weil Sie warten müssen.
Abhängig davon, wie oft Fehler auftreten, können nicht immer 4 Ladungen pro Zyklus ausgeführt werden, sodass der tatsächliche Arbeitsaufwand variieren kann.
Branch Prediction: Nun, Sie fangen an, Ihre sauberen Klamotten zu waschen, falls Sie sie später beflecken, damit sie schon sauber sind ... Okay, hier bricht die Analogie zusammen ...