2017-06-15 7 views
1

Dies ist eine rein konzeptionelle Frage. Warum wechseln die OS-Aufgaben nicht immer dann, wenn ein Zweig, der nie ausgeführt wurde, auftritt? Die dynamische Verzweigungsvorhersage funktioniert nur mit Verzweigungen, die in der Vergangenheit erstellt wurden, und die statische Verzweigungsvorhersage ist nur in bestimmten Szenarien korrekt. Wenn Sie keine Daten zu einer Verzweigung haben, scheint es, als sollten das Betriebssystem und der Prozessor damit beginnen, eine separate Aufgabe in die Pipeline zu schreiben, anstatt die Verzweigung blind zu erraten. Dann können Sie das Ergebnis der Verzweigung berechnen und diese Verzweigung ausführen, wenn die ursprüngliche Aufgabe erneut geplant wird. Beim nächsten Auftreten der Verzweigung kann der Prozessor die dynamische Vorhersage verwenden.Warum planen Betriebssysteme keine neue Aufgabe, wenn eine unbekannte Verzweigung auftritt?

Gibt es einen Grund, warum diese Methode nicht verwendet wird? Oder wird es benutzt und ich bin mir nur nicht bewusst?

Antwort

1

Der Overhead der Kontextumschaltung ist so hoch verglichen mit der Ausführung der Verzweigung.

+0

Ich bin nicht vertraut mit, wie ein Scheduler funktioniert. Entsteht der Overhead, wenn der Prozessor in den richtigen Zustand versetzt werden muss, um eine andere Aufgabe wieder aufzunehmen? – master565

+1

Der Prozessor muss den vollständigen Status des Prozesses (oder Threads) speichern, dh alle Register, die den Status definieren. Dann muss er die Register für die neue Task laden. Das entspricht 20-30 Bewegungsbefehlen. – user3344003

+0

Das macht Sinn. Ich denke, der einzige mögliche Weg wäre es wert, wenn Sie eine wahnsinnig große Pipeline hätten, die einen größeren Flush-Overhead hätte als der Kontext-Switching-Overhead. Danke für die Antwort! – master565

0

Dies ist, warum SMT - Simultanantionen Multithreading erfunden wurde, während ein Thread herumfummelt mit seiner Verzweigung falsch, die anderen Threads auf dem gleichen Kern voranbringen können.

Der neue Power-Prozessor hat auch 8 Hardware-Threads auf jedem Kern einen maximalen Durchsatz im Gesicht

  • Instruktions-Cache verfehlt
  • Datencachespeicherfehlschläge
  • Datenabhängigkeiten
    1. Verzweigungsfehlvorhersagen zu gewährleisten,
  • Verwandte Themen