Frage

Ich habe echte Probleme, diese Informationen online zu finden, ich bin am Montag in Uni, damit ich die Bibliothek dann verwenden kann, aber so bald ist es besser. Wenn ein System Multicore -Prozessoren hat, nimmt jeder Prozessor einen Thread aus dem ersten Vorgang in der Ready -Warteschlange oder nimmt er eines von Anfang an und eines vom zweiten? Auch um zu überprüfen, werden Threads gleichzeitig mit dem Betriebssystem von den Multicores gesendet und abgerufen? Wenn jemand mich in die richtige Richtung ressourcen lassen könnte, wäre das großartig!

War es hilfreich?

Lösung

Der Schlüssel ist zu schätzen, was die Architektur der Maschine tatsächlich ist.

Ein "Kern" ist eine CPU mit Cache mit einer Verbindung zum Systemspeicher. Die meisten Maschinenarchitekturen sind symmetrische Multi-Verarbeitung, was bedeutet, dass der Systemspeicher für alle Kerne im System gleichermaßen zugänglich ist.

Die meisten Betriebssysteme führen einen Scheduler -Thread für jeden Kern aus (Linux do). Der Scheduler hat eine Liste von Threads, für die er verantwortlich ist, und er wird sie auf dem Kern, den es steuert, nach besten Kern ausgeführt. Die Regeln, mit denen mit dem Thread ausgeführt werden soll, werden entweder Robin oder Prioritätsbasis usw. sein. dh alle normalen Planungsregeln. Bisher ist es wie ein Scheduler, den Sie in einem einzigen Kerncomputer finden würden. In gewissem Maße ist jeder Scheduler unabhängig von allen anderen Schedulern.

Dies ist jedoch eine SMP -Umgebung, was bedeutet, dass es wirklich egal ist, welcher Kern welcher Thread ausgeführt wird. Dies liegt daran, dass alle Kerne den gesamten Speicher sehen können und alle Code und Daten für alle Threads im gesamten System in diesem einzelnen Speicher gespeichert werden.

Die Scheduler sprechen also untereinander, um sich gegenseitig zu helfen. Scheduler mit zu vielen Threads können einen Thread an einen Scheduler übergeben, dessen Kern untergebracht ist. Sie sind Lastausgleich innerhalb der Maschine. "Ein Thread übergeben" bedeutet, die Datenstruktur zu kopieren, die den Thread beschreibt (Thread -ID, welche Daten, welchen Code).

Das war also. Da die einzige Kommunikation zwischen den Kernen über das Speicher liegt, stützt sich alles auf ein effektives Semaphor -System für gegenseitige Ausgrenzung, das die Hardware zulässt.

Die Schwierigkeit

Also habe ich ein sehr einfaches Bild gemalt, aber in der Praxis ist die Erinnerung nicht perfekt symmetrisch. SMP wird heutzutage über Hypertransport und QPI synthetisiert.

Lange vorbei sind die Tage, in denen Kerne auf elektronischer Ebene wirklich den gleichen Zugriff auf den Systemspeicher hatten. Auf der niedrigsten Schicht ihrer Architektur sind AMD rein numa und intel fast.

Heutzutage muss ein Kern eine Anfrage an andere Kerne über einen seriellen Hochgeschwindigkeits -Link (Hypertransport oder QPI) senden, in dem sie aufgefordert werden, Daten zu senden, die sie in ihren angehängten Speicher haben. Intel und AMD haben es gut geleistet, wenn es im allgemeinen Fall überzeugend wie SMP aussieht, aber es ist nicht perfekt. Die an einem anderen Kern angeschlossenen Daten im Speicher dauert länger. Es ist wahnsinnig komplex - die Kerne sind jetzt Knoten in einem Netzwerk - aber es ist das, was sie tun mussten, um eine verbesserte Leistung zu erzielen.

Scheduler berücksichtigen das bei der Auswahl, welcher Kern ausführen soll. Sie werden versuchen, einen Thread in einen Kern zu platzieren, der dem Speicher am nächsten ist, wobei die Daten, auf die der Thread zugegriffen hat, am nächsten steht.

Die Zukunft wieder

Wenn das Software -Software -Ökosystem der Welt von SMP entwöhnt werden könnte, könnten die Hardware -Leute viel Platz auf dem Silizium sparen, und wir hätten schnellere effizientere Systeme. Dies wurde schon einmal getan; Die Getriebe waren ein guter Versuch einer streng NUMA -Architektur.

NUMA und die Kommunikation sequentieller Prozesse würden es heute viel einfacher machen, mehrfache Software zu schreiben, die sehr einfach skaliert und effizienter ausgeführt wird als die heutigen Shared Memory -Güter von SMP.

SMP war praktisch eine billige und böse Art, mehrere Kerne zusammenzubringen, und die Kosten für Softwareentwicklungsschwierigkeiten und ineffiziente Hardware waren sehr hoch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top