Was ist der Unterschied zwischen feinkörnigem und grobkörnigem Multithreading?

Inhaltsverzeichnis:

Anonim

Die Hauptunterschied zwischen feinkörnigem und grobkörnigem Multithreading ist, dass beim feinkörnigen Multithreading geben die Threads Befehle in Round-Robin-Weise aus, während beim grobkörnigen Multithreading die Threads Befehle ausgeben, bis ein Stillstand auftritt.

Multithreading bezieht sich auf das unabhängige Ausführen mehrerer Threads innerhalb eines Prozesses. Diese Threads können ihre Prozessressourcen gemeinsam nutzen. Zwei Arten von Multithreading sind feinkörniges und grobkörniges Multithreading.

Feinkörniges Multithreading, Grobkörniges Multithreading

Was ist feinkörniges Multithreading?

Beim feinkörnigen Multithreading werden die Threads im Round-Robin-Verfahren in aufeinanderfolgenden Zyklen ausgeführt. Angenommen, ein Computer kann beispielsweise eine Anweisung pro Taktzyklus ausgeben. A, B, C sind drei Fäden. Die ersten 12 Zyklen dieser Threads sind wie folgt.

Abbildung 1: Beispiel

Die Art und Weise, wie diese Threads Anweisungen gemäß feinkörnigem Multithreading ausgeben, ist wie folgt.

Abbildung 2: Feinkörniges Multithreading

Jeder Thread gibt seine erste Anweisung aus. Thread A gibt seine zweite Anweisung aus. Zwischen B1 und B2 sollten 2 Taktzyklen liegen. Da bereits 2 Taktzyklen verstrichen sind, ist es möglich, einen zweiten Befehl von Thread B auszugeben. Danach gibt Thread C seinen zweiten Befehl aus. Und dieser Prozess geht weiter.

Was ist grobkörniges Multithreading?

Beim grobkörnigen Multithreading gibt ein Thread Anweisungen aus, bis die Threadausgabe beendet wird. Der Vorgang wird auch genannt zögerlich. Wenn ein Stillstand auftritt, beginnt der nächste Thread mit der Ausgabe von Anweisungen. An diesem Punkt geht ein Zyklus aufgrund dieses Threadwechsels verloren.

Betrachten Sie dasselbe Beispiel, das beim feinkörnigen Multithreading verwendet wird.

Abbildung 3: Grobkörniges Multithreading

Thread A gibt erste und zweite Anweisungen aus. Wenn es aufhört, Befehle auszugeben, geht die Steuerung an Thread B über, und es gibt einen Taktzyklusverlust. Thread B führt die ersten Anweisungen aus und stoppt. Dann geht die Steuerung zu C über, und es gibt einen Taktzyklusverlust. Thread C gibt vier Anweisungen aus, bevor er aufhört, Anweisungen auszugeben. Dann geht die Steuerung an A zurück. Es gibt einen Taktzyklusverlust und Thread A gibt dritte und vierte Befehle aus. Und dieser Prozess geht weiter.

Unterschied zwischen feinkörnigem und grobkörnigem Multithreading

Definition

Feinkörniges Multithreading ist ein Multithreading-Mechanismus, bei dem trotz des durch den Thread-Befehl verursachten Cache-Miss zwischen Threads umgeschaltet wird. Grobkörniges Multithreading hingegen ist ein Multithreading-Mechanismus, bei dem die Umschaltung nur erfolgt, wenn der ausgeführte Thread einen Stillstand verursacht, wodurch ein Taktzyklus verschwendet wird. Dies ist also der Hauptunterschied zwischen feinkörnigem und grobkörnigem Multithreading.

Effizienz

Effizienz ist ein weiterer Unterschied zwischen feinkörnigem und grobkörnigem Multithreading. Grobkörniges Multithreading ist weniger effizient als feinkörniges Multithreading, da es beim Wechsel zwischen Threads zu einer Zykluslücke/einem Zyklusverlust führt.

Erforderliche Threads

Abschluss

Feinkörniges und grobkörniges Multithreading sind zwei Multithreading-Methoden. Der Hauptunterschied zwischen feinkörnigem und grobkörnigem Multithreading besteht darin, dass beim feinkörnigen Multithreading die Threads Anweisungen im Round-Robin-Verfahren ausgeben, während die Threads beim grobkörnigen Multithreading Anweisungen ausgeben, bis ein Stillstand auftritt.

Referenz

1.„Was ist Multithreading? – Definition von Techopedia.“ Techopedia.com, hier verfügbar2.„Multithreading (Computerarchitektur).“ Wikipedia, Wikimedia Foundation, 2. Dezember 2018, hier verfügbar

Was ist der Unterschied zwischen feinkörnigem und grobkörnigem Multithreading?