Warum verbinden CPUs normalerweise nur mit einem Bus?

Ich habe hier eine Motherboard-Architektur gefunden:

Geben Sie hier die Bildbeschreibung ein

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 aus wie ein großer Engpass. Wäre es nicht besser, 2 oder 3 Busse direkt in die CPU zu geben?

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

Ist es etwas sehr Schwieriges daran, es so zu machen? Ich sehe nicht, wie die Kosten dazu kommen könnten, weil die vorhandenen Diagramme bereits nicht weniger als sieben Busse haben. Tatsächlich könnten wir durch den Einsatz von mehr Direktbussen die Gesamtzahl der Busse und vielleicht sogar eine der Brücken reduzieren.

Also irgendetwas falsch daran? Gibt es irgendwo einen großen Nachteil? Das einzige, was mir einfällt, ist vielleicht mehr Komplexität in der CPU und im Kernel, was mich denken lässt, dass diese Engpass-Bus-Architektur so ist, wie sie früher gemacht wurde, als die Dinge weniger ausgefeilt waren und 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 Bottleneck-Bus es dem Watchdog erleichtern, alles zu überwachen. Kann das was damit zu tun haben?

Das ist ein sehr alter Ansatz. Heutzutage hat die CPU den Root-Komplex und den Speichercontroller eingebaut – also eine direkte Verbindung zu PCIe-Geräten, RAM und der eigentlichen South Bridge. Zum Beispiel diese
@TomCarpenter Ja, das fängt an, mehr danach auszusehen. Das Diagramm, das ich gepostet habe, ist das, was ich "überall" gesehen habe, einschließlich der Schule, also dachte ich, es sei typischer.
Das obige Diagramm ist immer noch relevant. Heutzutage ist das kein Diagramm eines Motherboards, sondern der CPU selbst. Ersetzen Sie „CPU“ durch „Kern“ und „Chipsatz“ durch „CPU“.

Antworten (4)

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

Vor 15 Jahren war die Technologie, alles auf einem einzigen Die zu integrieren, aus kommerzieller Sicht praktisch nicht vorhanden, und dies war unglaublich schwierig. Alles zu integrieren würde zu sehr großen Siliziumchipgrößen führen, was wiederum zu einer viel geringeren Ausbeute führt. Der Yield gibt im Wesentlichen an, wie viele Chips Sie auf einem Wafer aufgrund von Defekten verlieren – je größer der Chip, desto höher die Wahrscheinlichkeit eines Defekts.

Um dem entgegenzuwirken, teilten Sie das Design einfach in mehrere Chips auf - im Fall von Motherboards waren dies schließlich CPU, North Bridge und South Bridge. Die CPU ist auf den Prozessor mit einer Hochgeschwindigkeitsverbindung beschränkt (soweit ich mich erinnere, als Front-Side-Bus bezeichnet). Sie haben dann die North Bridge, die den Speichercontroller, die Grafikverbindung (z. B. AGP, eine uralte Technologie in Computerbegriffen) und eine weitere langsamere Verbindung zur South Bridge integriert. Die South Bridge wurde verwendet, um Erweiterungskarten, Festplatten, CD-Laufwerke, Audio usw.


In den letzten 20 Jahren bedeutet die Fähigkeit, Halbleiter an immer kleineren Prozessknoten mit immer höherer Zuverlässigkeit herzustellen, dass alles auf einem einzigen Chip integriert werden kann. Kleinere Transistoren bedeuten eine höhere Dichte, sodass Sie mehr hineinpassen können, und verbesserte Prozesse bei der Herstellung bedeuten eine höhere Ausbeute. Tatsächlich ist es nicht nur kostengünstiger, sondern es ist auch wichtig geworden, die Geschwindigkeitssteigerungen in modernen Computern aufrechtzuerhalten.

Wie Sie richtig betonen, wird eine Verbindung zu einer Nordbrücke zu einem Engpass. Wenn Sie alles in die CPU integrieren können, einschließlich des PCIe-Root-Komplexes und des Systemspeichercontrollers, haben Sie plötzlich eine extrem schnelle Verbindung zwischen Schlüsselgeräten für Grafik und Computer – auf der Leiterplatte sprechen Sie vielleicht von Geschwindigkeiten in der Größenordnung von Gbps Mit dem Chip können Sie Geschwindigkeiten in der Größenordnung von Tbps erreichen!

Diese neue Topologie spiegelt sich in diesem Diagramm wider:

Neue Topologie

Bildquelle

Wie Sie sehen können, sind in diesem Fall sowohl die Grafik- als auch die Speichercontroller auf dem CPU-Chip integriert. Während Sie immer noch eine Verbindung zu einem einzelnen Chipsatz haben, der aus einigen Teilen der North Bridge und der South Bridge besteht (der Chipsatz im Diagramm), ist dies heutzutage eine unglaublich schnelle Verbindung - vielleicht 100+ Gbit / s. Immer noch langsamer als auf dem Würfel, aber viel schneller als die alten Front-Side-Busse.

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 sogar noch mehr in den CPU-Chip – denken Sie an Einplatinencomputer mit ARM-Prozessorvarianten. Da ARM das CPU-Design ausleiht, können die Hersteller in diesem Fall ihre Chips nach Belieben anpassen und alle gewünschten Controller/Schnittstellen integrieren.

+1, du bist mir zuvorgekommen :) Schöne Antwort, insbesondere aus historischen Gründen für Architekturdesign.
Danke, besonders der zweite Absatz hat es in sich. Allerdings, on the die you can achieve speeds on the order of Tbps!Yikes, überholt das nicht die Fähigkeit der CPU, es schnell genug zu verarbeiten?
@ DrZ214 Nehmen Sie einen modernen 4-GHz-64-Bit-Quad-Core-Prozessor. Das sind 4*64*4=1024 Gbit/s. QPI, die neueste Intel-Verbindung zwischen CPU und Chipsatz, beträgt 307 Gbit/s . Obwohl es schockierend ist, ist es eigentlich nicht so weit hergeholt. Einfach unglaublich, wie schnell es geht!
Es ist definitiv erstaunlich, wie schnell die Dinge werden, aber ich muss sagen, Ihre Mathematik ist ein wenig zu ideal. Die meisten Programme verwenden kein Multi-Threading (der Trend geht definitiv dahin, aber es gibt viele cs-Probleme, die einfach nicht mit paralleler Verarbeitung gelöst werden können), daher scheint es zu ideal zu sein, anzunehmen, dass alle 4 Kerne an einem gesättigten arbeiten können Bus dieser Bandbreite. Also 256 Gbps, wenn dieser Kern nur 1 Prozess ausführt, auch ein bisschen ideal. Aber immer noch schnell und ich verstehe Ihren Punkt und Ihre Antwort war wirklich gut. Ich würde es akzeptieren, aber die Antwort von unit128_t ist auch großartig.
PS, kurze Frage: In Ihrem Diagramm sind die PCI-Anschlüsse mit Lanes beschriftet. Wie viele Bits befinden sich in einer Bahn, und warum sind die anderen Dinge (wie der Speicher) nicht mit Bahnen gekennzeichnet?
@ DrZ214 Sie sind keine PCI, sie sind PCIe, was eher ein serieller als ein paralleler Bus ist. PCIe ist entweder 2,5 Gbit/s, 5 Gbit/s oder 8 Gbit/s pro Lane in beide Richtungen (Vollduplex) – wobei 16 Lanes die breiteste sind, die normalerweise gesehen wird, was ein theoretisches Maximum von 128 Gbit/s in beide Richtungen ergibt. Und ja, der obige Kommentar zu den Geschwindigkeiten des Prozessors war absichtlich zu einfach, aber nicht unrealistisch - unabhängig von CPUs arbeite ich derzeit an einem FPGA-Design, das Daten mit 315 Gbit / s verarbeitet, und das ist bei weitem nicht die volle Leistung möglich des FPGA, was das einschränkt, ist der Mangel an Daten!
Interessant ist, dass dies eine Verschiebung zurück zur Architektur noch älterer Systeme darstellt, bei denen die Speicher- und Speicherbusse (usw.) direkt zur CPU gingen.
@ DrZ214 Eine "Spur" ist ein einzelnes Bit breit, ein Takt- / Datensignal, das als zwei Paare gesendet wird. Das Einzigartige an PCIe im Vergleich zu beispielsweise dem DDR-Bus ist, dass PCIe Lanes frei aggregieren und deaggregieren kann, während Sie bei den meisten Bussen alles oder nichts nehmen müssen.

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 erwähnt hat, ist dies nicht mehr der Fall. Die meisten modernen CPUs haben eine integrierte Northbridge. Die Southbridge wird normalerweise entweder integriert oder durch neue Architektur unnötig gemacht; 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 1 Bus? Dieser Front-Side-Bus sieht aus wie ein großer Engpass. 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 Bus-Transceivern und viele I/O-Pins. Die einzigen Geräte, die einen riesigen, schreiend schnellen Bus benötigen, sind die Grafikkarte und der Arbeitsspeicher. Alles andere (SATA, PCI, USB, seriell usw.) ist vergleichsweise langsam und wird nicht ständig aufgerufen. Aus diesem Grund werden in der obigen Architektur all diese "langsameren" Peripheriegeräte über die Southbridge als ein einziges Busgerät zusammengefasst: Der Prozessor möchte nicht jede kleine Bustransaktion vermitteln müssen, sodass alle langsamen/seltenen Bustransaktionen aggregiert werden können und von der Southbridge verwaltet, die sich dann mit viel gemächlicherer Geschwindigkeit mit den anderen Peripheriegeräten verbindet.

Nun, es ist 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 ist. Mit der Einführung von SSDs anstelle von Spinny Disks und schnellen PCIe-Peripheriegeräten sowie USB 3.0, Thunderbolt und vielleicht 10G-Ethernet (bald) wird die „langsame“ Peripheriebandbreite schnell sehr wichtig. Früher war der Bus zwischen Northbridge und Southbridge kein großer Engpass, aber das stimmt jetzt nicht mehr. Also ja, Architekturen bewegen sich hin zu mehr Bussen, die direkt an die CPU angeschlossen sind.

Ist es etwas sehr Schwieriges daran, es so zu machen? Ich sehe nicht ein, wie die Kosten dazu kommen könnten, denn die vorhandenen Diagramme haben bereits nicht weniger als sieben Busse.

Es wären mehr Busse, die der Prozessor verwalten müsste, und mehr Prozessor-Silizium, um mit Bussen fertig zu werden. Was teuer ist. 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, erleichtert dies Ihr Leben.

Wie oben erwähnt, werden jedoch mit der zunehmenden Popularität von Geräten mit hoher Bandbreite immer mehr Busse direkt mit dem Prozessor verbunden, insbesondere in SoC/höher integrierten Architekturen. Indem immer mehr Controller auf dem CPU-Die platziert 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 Bottleneck-Bus es dem Watchdog erleichtern, alles zu überwachen. Kann das was damit zu tun haben?

Nein, das ist nicht wirklich das, was ein Wachhund tut. Ein Watchdog besteht einfach darin, verschiedene Dinge neu zu starten, wenn/falls sie abstürzen; es sieht sich nicht wirklich alles an, was sich im Bus bewegt (es ist viel weniger ausgefeilt als das!).

Fast buses require fast silicon, slow buses don'tWas genau bedeutet schnelles Silizium? Reinstsilizium? Oder sagen Sie, dass langsame Busse ein anderes Element als Silizium verwenden können? So oder so, ich dachte, Silikon sei ein ziemlich billiges Material. Interessantes Bit über den Watchdog auch. Ich könnte eine verwandte Frage dazu stellen.
Ein schneller Bus wäre typischerweise 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 nur die Geräte zu beschränken, die tatsächlich eine solche Bandbreite benötigen. Da jedoch mehr Controller mit der CPU auf demselben Die (einem SoC) integriert sind, ist dies nicht mehr so ​​wahr.
Obwohl langsame Busse kein schnelles Silizium erfordern , ist es nicht ungewöhnlich, sehr schnelle Treiber auf langsamen Schnittstellen zu finden, was dem PCB-Layout große Kopfschmerzen bereiten kann. Ich habe gewöhnliches PCI (maximale Geschwindigkeit 133 MHz auf PCI-X) mit Anstiegs- und Abfallzeiten von weniger als 300 ps gesehen, da die Anbieter eine Standard-I/O-Zelle verwenden. Ich weiß, dass PCI als Schnittstelle normalerweise nicht auf neuen Prozessoren verfügbar ist, aber dieses Problem gilt anderswo.

Die Anzahl der Busse, mit denen eine CPU direkt verbunden ist, ist im Allgemeinen auf die Anzahl der verschiedenen Teile der CPU beschränkt, die gleichzeitig auf Dinge zugreifen können. Es ist nicht ungewöhnlich, insbesondere in der Welt der eingebetteten Prozessoren und DSPs, dass eine CPU einen Bus für Programme und einen Bus für Daten hat und beide gleichzeitig arbeiten können. Ein typischer Uniprozessor profitiert jedoch nur vom Abrufen einer Anweisung pro Anweisungszyklus und kann nur auf eine Datenspeicherstelle pro Anweisungszyklus zugreifen, sodass es keinen großen Vorteil bringt, über einen Programmspeicherbus und einen hinauszugehen Datenspeicherbus. Damit bestimmte Arten von Berechnungen auf 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 separaten Bus zu haben, damit Einheiten, die Dinge von verschiedenen "äußeren" Bussen abrufen müssen, dies ohne Störung tun können, wenn mehrere "äußere" Busse vorhanden sind. 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 haben, als separate Busse zu verwenden. Wenn die Verwendung separater Busse eine erhebliche Leistungsverbesserung ermöglicht, kann dies die Kosten rechtfertigen, aber ansonsten werden alle Ressourcen (Chipfläche usw.

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

Warum sollte es keine geben? Ein 32x32-Ball-Grid-Array und eine mehrschichtige Leiterplatte klingen nicht nach einem schwierigen Problem (in einem relativen Maßstab). Die Hardware-Ingenieure sind erstaunlich. // Denken Sie daran, wie breit und klobig RAM-Karten sein können, und takten Sie immer noch mit 1,6 GHz (625 Pikosekunden). Wenn die elektrischen Signale mit 2/3 c laufen, 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 Schichten nicht viel schlimmer wäre als zwischen Spuren auf derselben Schicht.
"Gibt es heute irgendwelche CPU-Pakete mit vielleicht 800 Pins?" Oh ja. Pakete mit mehr als 1100 Pins waren bereits üblich, als diese Antwort geschrieben wurde. Und heutzutage gibt es LGA3647 für einige Skylake-EX-Server-CPUs …