Warum verbinden sich CPUs normalerweise nur mit einem Bus?

24

Ich habe hier eine Motherboard-Architektur gefunden:

Bildbeschreibung hier eingeben

Dies scheint das typische Layout von Motherboards zu sein. EDIT: Nun, anscheinend ist es nicht mehr so ​​typisch.

Warum verbindet sich die CPU nur mit 1 Bus? Dieser Front-Side-Bus sieht nach einem großen Engpass aus. Wäre es nicht besser, 2 oder 3 Busse direkt in die CPU zu geben?

Ich stelle mir einen Bus für den Arbeitsspeicher, einen für die Grafikkarte und einen für eine Art Brücke zur Festplatte, zu den USB-Anschlüssen und zu allem anderen vor. Der Grund, warum ich es auf diese Weise aufgeteilt habe, ist, dass die Datenraten auf der Festplatte im Vergleich zum Speicher langsam sind.

Gibt es etwas sehr Schwieriges daran, es so zu machen? Ich sehe nicht ein, wie die Kosten dafür anfallen könnten, da die vorhandenen Diagramme bereits nicht weniger als sieben Busse enthalten. Tatsächlich könnten wir durch den Einsatz von direkteren Bussen die Gesamtzahl der Busse und möglicherweise sogar eine der Brücken reduzieren.

Also stimmt etwas damit nicht? Gibt es irgendwo einen großen Nachteil? Das Einzige, woran ich denken kann, ist vielleicht die größere Komplexität von CPU und Kernel. Ich glaube, dass diese Engpass-Bus-Architektur so war, wie sie früher gemacht wurde, als die Dinge weniger anspruchsvoll waren, und dass das Design für die Standardisierung gleich bleibt.

EDIT: Ich habe vergessen, den Watchdog Monitor zu erwähnen . Ich weiß, ich habe es in einigen Diagrammen gesehen. Vermutlich würde ein Engpassbus dem Watchdog die Überwachung erleichtern. Könnte das etwas damit zu tun haben?

DrZ214
quelle
9
Das ist ein sehr alter Ansatz. Heutzutage ist in der CPU der Root-Komplex und der Speicher-Controller integriert - so wird eine direkte Verbindung zu PCIe-Geräten, RAM und der eigentlichen South Bridge hergestellt. Zum Beispiel diese
Tom Carpenter
@TomCarpenter Ja, das sieht schon eher so aus. Das Diagramm, das ich gepostet habe, ist das, was ich "überall" gesehen habe, einschließlich der Schule, also dachte ich, es sei typischer.
DrZ214
7
Das obige Diagramm ist immer noch relevant. Heutzutage ist das kein Diagramm eines Motherboards, sondern die CPU selbst. Ersetzen Sie "CPU" durch "Core" und "Chipsatz" durch "CPU".
Slebetman

Antworten:

43

Der Ansatz, den Sie zeigen, ist eine ziemlich alte Topologie für Motherboards - er ist älter als PCIe, was ihn wirklich irgendwann in die 00er zurückversetzt. Der Grund liegt hauptsächlich in Integrationsschwierigkeiten.

Grundsätzlich gab es vor 15 Jahren aus kommerzieller Sicht praktisch keine Technologie, um alles auf einem einzigen Werkzeug zu integrieren, und dies war unglaublich schwierig. Alles zu integrieren würde zu sehr großen Siliziumchips führen, was wiederum zu einer viel geringeren Ausbeute führt. Die Ausbeute ist im Wesentlichen, wie viele Chips Sie aufgrund von Defekten auf einem Wafer verlieren - je größer der Chip, desto höher die Wahrscheinlichkeit eines Defekts.

Um dem entgegenzuwirken, teilen Sie das Design einfach in mehrere Chips auf - bei Motherboards waren dies letztendlich CPU, North Bridge und South Bridge. Die CPU ist nur auf den Prozessor mit einer Hochgeschwindigkeitsverbindung beschränkt (nach meiner Erinnerung als Front-Side-Bus bezeichnet). Sie haben dann die North Bridge, die den Speichercontroller, die Grafikverbindung (z. B. AGP, eine alte Technologie in Bezug auf Computer) und eine weitere langsamere Verbindung zur South Bridge integriert. Die South Bridge wurde für Erweiterungskarten, Festplatten, CD-Laufwerke, Audio usw. verwendet.


In den letzten 20 Jahren wurde es möglich, Halbleiter an immer kleineren Prozessknoten mit immer höherer Zuverlässigkeit herzustellen und alles auf einem einzigen Chip zu integrieren. Kleinere Transistoren bedeuten eine höhere Dichte, sodass Sie mehr hineinpassen können, und verbesserte Herstellungsprozesse bedeuten eine höhere Ausbeute. Tatsächlich ist es nicht nur kostengünstiger, sondern es ist auch von entscheidender Bedeutung, die Geschwindigkeitssteigerungen in modernen Computern beizubehalten.

Wie Sie richtig hervorheben, wird es zu einem Engpass, wenn eine Verbindung zu einer Nordbrücke besteht. Wenn Sie alles in die CPU integrieren können, einschließlich des PCIe Root Complex und des Systemspeicher-Controllers, haben Sie plötzlich eine extrem schnelle Verbindung zwischen den wichtigsten Geräten für Grafik und Computer - auf der Platine sprechen Sie möglicherweise über Geschwindigkeiten in der Größenordnung von Gbit / s Mit dem Würfel können Sie Geschwindigkeiten in der Größenordnung von Tbit / s erreichen!

Diese neue Topologie spiegelt sich in diesem Diagramm wider:

Neue Topologie

Bildquelle

Wie Sie sehen, sind in diesem Fall sowohl die Grafik- als auch die Speicher-Controller auf dem CPU-Chip integriert. Während Sie immer noch eine Verbindung zu einem einzigen Chipsatz haben, der aus einigen Teilen der Nordbrücke und der Südbrücke (dem Chipsatz im Diagramm) besteht, ist dies heutzutage eine unglaublich schnelle Verbindung - vielleicht 100 + Gbit / s. Noch langsamer als auf dem Würfel, aber viel schneller als die alten Frontbusse.

Warum nicht einfach alles integrieren? Nun, Motherboard-Hersteller wollen immer noch eine gewisse Anpassbarkeit - wie viele PCIe-Steckplätze, wie viele SATA-Verbindungen, welcher Audio-Controller usw.

Tatsächlich integrieren einige mobile Prozessoren noch mehr in den CPU-Chip - denken Sie an Single-Board-Computer mit ARM-Prozessor-Varianten. In diesem Fall können Hersteller, da ARM das CPU-Design vermietet, ihre Dies nach Belieben anpassen und alle gewünschten Controller / Schnittstellen integrieren.

Tom Carpenter
quelle
+1, du hast mich geschlagen :) Schöne Antwort, vor allem aus den historischen Gründen für Architekturdesign.
uint128_t
Vielen Dank, besonders der zweite Absatz hat uns überzeugt. Aber, on the die you can achieve speeds on the order of Tbps!Yikes , beginnt das nicht, die Fähigkeit der CPU zu übertreffen, sie schnell genug zu verarbeiten?
DrZ214
3
@ DrZ214 Es handelt sich nicht um PCI, sondern um PCIe, bei dem es sich nicht um einen parallelen, sondern um einen seriellen Bus handelt. PCIe ist entweder 2,5 Gbit / s, 5 Gbit / s oder 8 Gbit / s pro Spur in beide Richtungen (Vollduplex) - wobei 16 Spuren die breiteste sind, die normalerweise zu sehen ist und theoretisch ein Maximum von 128 Gbit / s in beide Richtungen ergibt. Und ja, der Kommentar über die Geschwindigkeit des Prozessors war absichtlich zu simpel, aber nicht unrealistisch - unabhängig von den CPUs arbeite ich derzeit an einem FPGA-Design, das Daten mit 315 Gbit / s verarbeitet, und das ist bei weitem nicht die volle Leistung, die möglich ist Was beim FPGA einschränkt, ist der Mangel an Daten!
Tom Carpenter
1
Interessant ist, dass dies eine Verschiebung in Richtung der Architektur noch älterer Systeme darstellt, bei denen die Speicher- und Speicherbusse (usw.) direkt zur CPU gingen.
Chris H
1
@ DrZ214 Eine "Spur" ist ein einzelnes Bit breit, ein Takt- / Datensignal, das als zwei Paare gesendet wird. Das Einzigartige an PCIe im Vergleich zum DDR-Bus ist, dass PCIe Fahrspuren frei aggregieren und deaktivieren kann, wohingegen die meisten Busse ganz oder gar nicht genutzt werden müssen.
pjc50
9

Ich kann nicht sagen, dass ich ein Experte für Computerarchitektur bin, aber ich werde versuchen, Ihre Fragen zu beantworten.

Dies scheint das typische Layout von Motherboards zu sein.

Wie Tom sagte, ist dies nicht mehr wahr. Die meisten modernen CPUs verfügen über eine integrierte Northbridge. Die Southbridge ist normalerweise entweder integriert oder wird durch eine neue Architektur überflüssig. Intels Chipsätze "ersetzen" die Southbridge durch den Platform Controller Hub, der über einen DMI-Bus direkt mit der CPU kommuniziert.

Warum verbindet sich die CPU nur mit einem Bus? Dieser Front-Side-Bus sieht nach einem großen Engpass aus. Wäre es nicht besser, 2 oder 3 Busse direkt in die CPU zu geben?

Breite (64-Bit) Busse sind teuer, sie erfordern eine große Anzahl von Bustransceivern und viele E / A-Pins. Die einzigen Geräte, die einen riesigen, schnellen Bus benötigen, sind die Grafikkarte und der RAM. Alles andere (SATA, PCI, USB, seriell usw.) ist vergleichsweise langsam und es wird nicht ständig darauf zugegriffen. Deshalb werden in der obigen Architektur alle diese "langsameren" Peripheriegeräte über die Southbridge als ein einziges Busgerät zusammengefasst: Der Prozessor möchte nicht jede kleine Bustransaktion entscheiden müssen, so dass alle langsamen / seltenen Bustransaktionen zusammengefasst werden können und wird von der Southbridge verwaltet, die sich dann mit viel gemächlicherer Geschwindigkeit mit den anderen Peripheriegeräten verbindet.

Nun ist es wichtig zu erwähnen, dass, wenn ich oben sage, dass SATA / PCI / USB / seriell "langsam" sind, dies hauptsächlich ein historischer Punkt ist und heute weniger wahr wird. Mit der Einführung von SSDs über Spinny Disks und schnelle PCIe-Peripheriegeräte sowie USB 3.0, Thunderbolt und möglicherweise 10G-Ethernet (bald) gewinnt die "langsame" Peripheriebandbreite schnell an Bedeutung. In der Vergangenheit war der Bus zwischen der Northbridge und der Southbridge kein Flaschenhals, aber jetzt stimmt das nicht mehr. Ja, Architekturen bewegen sich zu mehr Bussen, die direkt an die CPU angeschlossen sind.

Gibt es etwas sehr Schwieriges daran, es so zu machen? Ich sehe nicht ein, wie die Kosten dafür anfallen könnten, da die vorhandenen Diagramme bereits nicht weniger als sieben Busse enthalten.

Es wären mehr Busse für den Prozessor zu verwalten und mehr Prozessor-Silizium, um mit Bussen umzugehen. Welches ist teuer. Im obigen Diagramm sind nicht alle Busse gleich. Der FSB schreit schnell, der LPC nicht. Schnelle Busse erfordern schnelles Silizium, langsame Busse nicht. Wenn Sie also langsame Busse von der CPU auf einen anderen Chip verschieben können, wird Ihr Leben einfacher.

Wie oben erwähnt, werden jedoch mit der zunehmenden Beliebtheit von Geräten mit hoher Bandbreite immer mehr Busse direkt mit dem Prozessor verbunden, insbesondere in SoC / stärker integrierten Architekturen. Indem immer mehr Controller auf den CPU-Chip gesetzt werden, ist es einfacher, eine sehr hohe Bandbreite zu erreichen.

EDIT: Ich habe vergessen, den Watchdog Monitor zu erwähnen. Ich weiß, ich habe es in einigen Diagrammen gesehen. Vermutlich würde ein Engpassbus dem Watchdog die Überwachung erleichtern. Könnte das etwas damit zu tun haben?

Nein, das macht eigentlich kein Wachhund. Ein Watchdog ist einfach, verschiedene Dinge neu zu starten, wenn / wenn sie abstürzen; es betrachtet nicht wirklich alles, was sich über den Bus bewegt (es ist weitaus weniger raffiniert!).

uint128_t
quelle
2
Fast buses require fast silicon, slow buses don'tWas genau bedeutet schnelles Silizium? Hochreines Silizium? Oder sagen Sie, dass langsame Busse ein anderes Element als Silizium verwenden können? So oder so dachte ich, Silizium sei ein ziemlich billiges Material. Interessantes Stück über den Wachhund. Ich könnte eine verwandte Frage dazu stellen.
DrZ214
1
Ein schneller Bus ist normalerweise Teil eines Hochleistungsgeräts, z. B. einer CPU. Die Busschnittstelle benötigt Platz und Verbindungen zu anderen Teilen des Chips. Die Siliziumfläche auf einem Prozessorchip ist viel teurer als ein viel langsamerer Chip, da die Prozessgröße kleiner und die Herstellung / Verpackung schwieriger ist. Daher ist es billiger, die Geräte auf dem FSB auf diejenigen Geräte zu beschränken, die tatsächlich eine solche Bandbreite benötigen. Da jedoch mehr Controller auf demselben Chip (einem SoC) in die CPU integriert sind, ist dies nicht mehr so.
uint128_t
Obwohl langsame Busse kein schnelles Silizium erfordern , ist es nicht ungewöhnlich, sehr schnelle Treiber auf langsamen Schnittstellen zu finden, was zu erheblichen Kopfschmerzen beim PCB-Layout führen kann. Ich habe gewöhnliche PCI (maximale Geschwindigkeit 133 MHz bei PCI-X) mit Anstiegs- und Abfallzeiten von weniger als 300 ps gesehen, da die Anbieter eine Standard-E / A-Zelle verwenden. Ich weiß, dass PCI als Schnittstelle auf neuen Prozessoren normalerweise nicht verfügbar ist, aber dieses Problem ist an anderer Stelle anwendbar.
Peter Smith
6

Die Anzahl der Busse, mit denen eine CPU direkt verbunden wird, ist im Allgemeinen auf die Anzahl der unterschiedlichen Teile der CPU beschränkt, die gleichzeitig auf Dinge zugreifen können. Insbesondere in der Welt der eingebetteten Prozessoren und DSPs ist es nicht ungewöhnlich, dass eine CPU einen Bus für Programme und einen Bus für Daten hat und beide gleichzeitig arbeiten können. Ein typischer Einprozessor profitiert jedoch nur vom Abrufen eines Befehls pro Befehlszyklus und kann nur auf einen Datenspeicherplatz pro Befehlszyklus zugreifen, so dass das Überschreiten eines Programmspeicherbusses und eines Programmspeicherbusses keinen großen Nutzen bringt Datenspeicher-Bus. Damit bestimmte Arten von Berechnungen für Daten ausgeführt werden können, die aus zwei verschiedenen Streams abgerufen wurden,

Bei Prozessoren mit mehreren Ausführungseinheiten kann es hilfreich sein, für jede einen eigenen Bus zu haben, damit bei mehreren "externen" Buseinheiten, die Dinge von verschiedenen "externen" Bussen abrufen müssen, dies ohne Störung möglich ist. Es sei denn, es gibt einen logischen Grund, warum auf die Dinge, auf die von verschiedenen Ausführungseinheiten zugegriffen wird, über verschiedene Busse außerhalb der CPU zugegriffen werden kann, wenn jedoch separate Busse von der CPU in eine Arbitrierungseinheit eingespeist werden, die jeweils nur eine Anforderung an a weiterleiten kann Ein bestimmtes externes Gerät hilft nichts. Busse sind teuer, daher ist es im Allgemeinen billiger, zwei Ausführungseinheiten auf einem Bus zu sitzen, als separate Busse zu verwenden. Wenn die Verwendung separater Busse eine erhebliche Leistungsverbesserung ermöglicht, kann dies die Kosten rechtfertigen, ansonsten jedoch Ressourcen (Chipfläche usw.).

Superkatze
quelle
-1

Berücksichtigen Sie die Anzahl der Pins, die in den CPU-Paketen erforderlich sind, um mehrere breite Busse zu haben. Zum Beispiel acht CPU-Kerne mit jeweils einem 64-Bit-Datenbus und verschiedenen anderen Pins für andere Zwecke. Gibt es heute CPU-Pakete mit vielleicht 800 Pins?

user6030
quelle
Warum sollte es keine geben? Ein 32x32-Ball-Grid-Array und eine mehrschichtige Leiterplatte scheinen kein schwieriges Problem zu sein (relativ gesehen). Die Hardware-Ingenieure sind unglaublich. // Überlegen Sie, wie breit und ungeschickt RAM-Karten sein können, und takten Sie sie dennoch mit 1,6 GHz (625 Pikosekunden) ein. Wenn sich die elektrischen Signale mit 2/3 c ausbreiten, kann die längste Spur nur 6 cm lang sein, und nur wenige mm Längenunterschied verursachen merkliche Zeitversätze. // Und ich würde vermuten, dass das Übersprechen zwischen Ebenen nicht viel schlimmer ist als zwischen Spuren auf derselben Ebene.
Oskar Skog
"Gibt es heute CPU-Pakete mit vielleicht 800 Pins?" Oh ja. Pakete mit mehr als 1100 Pins waren bereits bei der Erstellung dieser Antwort an der Tagesordnung. Und heutzutage gibt es LGA3647 für einige Skylake-EX-Server-CPUs ...
duskwuff