Frage

Kann jemand einige Dokumente mir empfehlen, die Unterschiede zwischen Multi-CPU, Multi-Core und Hyper-Thread zu veranschaulichen? Ich bin immer verwirrt über diese Unterschiede, und über die Vor- / Nachteile der einzelnen Architektur in verschiedenen Szenarien.

EDIT: Hier ist mein gegenwärtiges Verständnis nach Online-Lernen und die Kommentare anderer zu lernen; könnte jemand Bewertung Kommentar bitte?

  1. Ich denke, hyper-Thread die minderwertige Technologie unter ihnen ist, aber billig. Seine Hauptidee ist, doppelte Register Kontextschalter, Zeit zu sparen;
  2. Multi-Prozessor ist besser als hyper-Thread, aber da unterschiedliche CPUs auf unterschiedlichen Chips sind, ist die Kommunikation zwischen den verschiedenen CPUs längerer Latenz als Multi-Core und mehrere Chips verwendet wird, gibt es mehr Kosten und mehr Stromverbrauch als mit Multi-Core;
  3. mehradrigen integriert alle CPUs auf einem einzigen Chip, so dass die Latenz der Kommunikation zwischen verschiedenen CPUs stark reduziert werden im Vergleich mit mehreren Prozessoren. Da es verwendet einen einzigen Chip alle CPUs zu enthalten, es Verbraucher weniger Energie und ist weniger teuer als ein Multi-Prozessor-System.

Vielen Dank im Voraus, George

War es hilfreich?

Lösung

Multi-CPU war die erste Version: Sie einen oder mehrere Mainboards mit einem oder mehreren CPU-Chips auf sie haben würde. Das Hauptproblem war hier, dass die CPUs einen Teil ihrer internen Daten an die anderen CPU aussetzen würde, so dass sie nicht in die Quere kommen würde.

Der nächste Schritt war Hyper-Threading. Ein Chip auf dem Mainboard, aber es hatte einige Teile zweimal intern, so dass es zwei Befehle gleichzeitig ausführen kann.

Die aktuelle Entwicklung ist Multi-Core. Es ist im Grunde die ursprüngliche Idee (mehrere kompletten CPUs), sondern in einem einzigen Chip. Der Vorteil:. Chip-Designer leicht die zusätzliche Leitungen für die Synchronisationssignale in den Chip setzen können (statt sie auf einem Stift zu routen aufweisen, dann über den gedrängten Mainboard und bis in einen zweiten Chip)

Super Computer heute Multi-CPU, Multi-Core sind. Sie haben viele Mainboards mit in der Regel 2-4 CPUs auf sich, jede CPU ist Multi-Core und jeder hat seinen eigenen RAM

[EDIT] Sie haben so ziemlich richtig. Nur ein paar kleine Punkte:

  • Hyper-Threading verfolgt zwei Kontexte auf einmal in einem einzigen Kern, mehr parallel zu dem out-of-order-CPU-Kern freigelegt wird. Dies hält die Ausführungseinheiten mit der Arbeit zugeführt wurden, selbst dann, wenn ein Faden auf einem Cache-Fehltreffer zum Stillstand gekommen ist, Zweigfehlvorhersage oder für die Ergebnisse von hohen Latenz Anweisungen warten. Es ist ein Weg, um mehr Gesamtdurchsatz zu erhalten, ohne viel Hardware zu replizieren, aber wenn etwas verlangsamt es jeden Thread einzeln nach unten. Sehen Sie diese Q & A für weitere Details und eine Erklärung, was mit dem bisherigen Wortlaut dieses Absatzes falsch war.

  • Das Hauptproblem bei Multi-CPU ist, dass Code auf sie läuft schließlich den RAM zugreifen. Es gibt N CPUs aber nur einen Bus den RAM zugreifen. So müssen Sie einige Hardware haben, die dafür sorgt, dass a) jede CPU einen fairen Betrag von RAM-Zugriff erhält, b), die Zugriffe auf den gleichen Teil des RAM verursacht keine Probleme und c) am wichtigsten ist, wird die CPU 2 benachrichtigt wenn die CPU 1 schreibt einige Speicheradresse, die CPU 2 in seinem internen Cache hat. Wenn das nicht geschieht, CPU 2 wird gerne den zwischengespeicherten Wert, ohne auf die Tatsache nutzen, dass es veraltet ist,

    Stellen Sie sich vor Sie haben Aufgaben in einer Liste und Sie wollen, dass sie auf alle verfügbaren CPUs verteilen. So CPU 1 wird das erste Element aus der Liste holen und die Zeiger aktualisieren. CPU 2 wird das gleiche tun. Aus Effizienzgründen werden die beiden CPUs nicht nur die wenigen Bytes in den Cache kopieren, aber insgesamt „Cache-Zeile“ (was auch immer das sein mag). Die Annahme ist, dass, wenn Sie Byte X lesen, werden Sie bald X + 1 lesen, auch.

    Nun sind beide CPUs haben eine Kopie des Speichers in ihrem Cache. CPU 1 wird dann das nächste Element aus der Liste holen. Ohne Cache-Sync, wird es nicht bemerkt haben, dass die CPU 2 die Liste geändert hat, auch, und es wird auf der gleichen Position wie CPU 2 zu arbeiten beginnen.

    Dies ist, was macht effektiv Multi-CPU so kompliziert. Nebenwirkungen kann dies zu einer Leistung führen, die schlimmer ist als das, was Sie bekommen würden, wenn der gesamte Code nur auf einer einzigen CPU lief. Die Lösung war Multi-Core: Sie einfach so viele Drähte hinzufügen können, wie Sie die Caches synchronisieren müssen; Sie könnten sogar Daten von einem Cache zu einer anderen kopieren (Aktualisierung Teile von einer Cache-Zeile, ohne sie zu spülen und mit nachladen) usw. Oder die Cache-Logik sicher machen könnte, dass alle CPUs die gleiche Cache-Zeile erhalten wenn sie den gleichen Teil des realen RAM zugreifen, einfach CPU 2 für ein paar Nanosekunden blockiert, bis der CPU 1 seine Änderungen vorgenommen.

[EDIT 2] Der Hauptgrund, warum Multi-Core einfacher als Multi-CPU ist, dass auf einem Mainboard, Sie können einfach nicht alle Drähte zwischen den beiden Chips laufen, die Sie benötigen würden, um Synchronisierung wirksam zu machen. Plus ein Signal hat nur 30 cm / ns Spitzen (Lichtgeschwindigkeit, in einem Draht, Sie haben in der Regel viel weniger). Und vergessen Sie nicht, dass auf einem Multi-Layer-Mainboard, Signale beginnen jedes ot zu beeinflussensie (Übersprechen). Wir glauben, dass 0 0 V und 1 ist 5V, aber in Wirklichkeit, „0“ ist etwas zwischen -0,5 V und .5V und „1“ (Overdrive, wenn eine Linie von 1-> 0 dropping) ist alles, was über 0,8V.

Wenn Sie alles innerhalb eines einzigen Chips haben, Signale viel schneller laufen und Sie können so viele, wie Sie möchten (na ja, fast :). Auch Signal-Übersprechen ist viel einfacher zu steuern.

Andere Tipps

Sie können einige interessante Artikel über Dual-CPU, Multi-Core und Hyper-Threading auf Intels Webseite oder in einem kurzen Artikel von Yale University .

Ich hoffe, Sie finden hier alle Informationen, die Sie benötigen.

Auf den Punkt gebracht: Multi-CPU-oder Multi-Prozessor-System mehrere Prozessoren verfügt. Ein Multi-Core-System ist ein Mehrprozessorsystem mit mehreren Prozessoren auf dem gleichen Chip. In hyperthreading können mehrere Threads auf dem gleichen Prozessor ausgeführt (das heißt die Kontext-Schaltzeit zwischen diesen mehreren Threads ist sehr klein).

Multi-Prozessoren haben jetzt seit 30 Jahren gibt es aber vor allem in Labors. Multi-Core ist der neue beliebte Multi-Prozessor. Server-Prozessoren heute Hyperthreading zusammen mit mehreren Prozessoren implementieren.

Der Wikipedia-Artikel zu diesen Themen sind sehr illustrativ.

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