Hallo Leute, mir ist heut durch Zufall aufgefallen, dass ich eigentlich überhaupt keine Ahnung von garnichts habe... Kurz gesagt interessiert mich: Wie funktioniert SMP in der Praxis, also mehrere Prozessoren in einem Betriebssystem? Was ich mir vorstellen kann: Bei einem Prozessor (einem Kern): Strom ein, anfang bei 0x00 oder wo auch immer, da steht dann ein bootloader oder sprung zu nem bios (?), alles wird initialisiert und irgendwan kommen wir zum Betriebssystem. Was ich mir nicht vorstellen kann: Mehrere Prozessoren auf einem Board: Welcher Prozessor fängt wann mit was und warum an, kommt dann irgendwann mal in ein Betriebssystem und das kennt nun auch noch die anderen 1 - 3 prozessoren auf unserem Board... Wie schaufeln diese Prozessoren denn die Daten zwischeneinander (Gehen wir mal von nem quad xeon system unter linux aus) Herzlichen Dank!
Tom schrieb: > > Mehrere Prozessoren auf einem Board: Welcher Prozessor fängt wann mit > was und warum an, kommt dann irgendwann mal in ein Betriebssystem und > das kennt nun auch noch die anderen 1 - 3 prozessoren auf unserem > Board... Die CPU-Kerne fangen nicht gleichzeitig mit der Arbeit an. Es gibt immer einen primären Prozessor bzw. -kern, der zunächst allein das BIOS anspringt. Alles weitere wird dann von diesem geregelt und an das OS übergeben, welches anschließend für die Verteilung der Threads zuständig ist. > Wie schaufeln diese Prozessoren denn die Daten zwischeneinander (Gehen > wir mal von nem quad xeon system unter linux aus) Sie greifen abwechselnd auf den Arbeitsspeicher zu, die Koordination obliegt wiederum dem Betriebssystem.
Icke ®. schrieb: > Sie greifen abwechselnd auf den Arbeitsspeicher zu, die Koordination > obliegt wiederum dem Betriebssystem. ich würde behaupten sie greifen gleichzeit darauf zu (ob es wirklich absolut gleichzeitg ist weiss ich nicht, aber das BS hat damit wenig zu tun). Der Software-Entwickler muss ich um locks kümmern.
Peter II schrieb: > ob es wirklich > absolut gleichzeitg ist weiss ich nicht Das hängt wiederum vom genauen Aufbau/Layout ab. z.B. zwei Cores in einem Gehäuse, die sich einen Speichercontroller teilen, oder den Speichercontroller in der Northbridge haben, müssen nacheinander zugreifen. Cores mit getrennten Speichercontrollern (manche Opteron z.B.) oder gleich getrennten Sockeln können natürlich gleichzeitig zugreifen. Da ist im Mainboard-Handbuch dann auch immer genau angegeben, welcher DIMM-Sockel zu welchem Speicherkanal von welcher CPU gehört. Der Zugriff auf Speicher, der "der anderen CPU gehört" muss dann einmal durch diese durchgeleitet werden. Spaßig wird das ganze, wenn man die verschiedenen Caches in den CPUs mit berücksichtigt. Die müssen ja auch aktuell gehalten werden... => zum "Lernen wie's funktioniert" vielleicht mit "theoretischen CPUs ohne Cache" anfangen.
> Der Zugriff auf Speicher, der "der anderen CPU gehört" muss dann einmal > durch diese durchgeleitet werden. Genau das ist der springende Punkt für mich: Wie funktioniert die Verbindung der beiden (oder 4) CPUs?
Tom schrieb: > Genau das ist der springende Punkt für mich: Wie funktioniert die > Verbindung der beiden (oder 4) CPUs? Chiplevel: Intel verwendet ab Sandy Bridge einen internen Ringbus, der Cores, Grafikprozessor, Speicherinterface und die Links zur Aussenwelt (s.u.) miteinander verbindet. AMD verbindet diese Komponenten klassisch per Crossbar-Switch. Boardlevel: Point-to-Point Links verbinden die CPU-Sockel untereinander und koppeln einen oder mehrere I/O-Hubs an. Je nach Sockelzahl und Architektur sind die CPU-Sockel vollständig vernetzt, oder auch nur teilweise. AMD war hier mit dem Hypertransport der Vorreiter, Intel zog viele Jahre später nach.
Beispiel: Wenn ein Intel Sandy Bridge Core auf den Speicher eines anderen Sockels zugreift, dann läuft es über diese Stationen: Core 1 Sockel 1 Ringbus Sockel 1 Linkinterface Sockel 1 externe Verbindung Linkinterface Sockel 2 Ringbus Sockel 2 Speicherinterface Sockel 2 DRAM PS: Das beschreibt Intels Zukunft. Intels Sandy Bridge für Server ist noch nicht raus und die Quad-Socket fähigen Vorgängerversionen haben noch keinen Ringbus.
Folglich garnicht so einfach zwei Arm CPUs auf ein board zu setzen und unter Linux eine Umgebung mit 2x2 cores zu sehen... ;)
Yep, insbesondere wenn du im bisherigen AMD Hypertransport Verbindungsmodell 4 Sockel vernetzt, denn dann hat nicht mehr jeder Sockel mit jedem eine Verbindung und der Weg von Sockel 1 zu Sockel 4 muss beispielsweise Sockel 2 als Zwischenstation verwenden.
A. K. schrieb: > AMD Hypertransport > Verbindungsmodell 4 Sockel vernetzt Hab mich grad gefragt, ob's inzwischen Mainboards mit 4 G34-Sockeln gibt, die Interlagos-CPUs mögen: Ja ;) http://www.tyan.com/product_SKU_spec.aspx?ProductType=MB&pid=670&SKU=600000180 Da passen dann wirklich 4×16 CPU-Kerne auf ein Mainboard. A. K. schrieb: > der Weg von Sockel 1 zu Sockel 4 > muss beispielsweise Sockel 2 als Zwischenstation verwenden. Sieht man an dem Blockdiagram für das oben verlinkte Mainboard schön. Weil die CPU0 einen HT-Link zum Anschluss der Northbridge braucht, bleibt keine Querverbindung mehr zur CPU2.
Εrnst B✶ schrieb: > Da passen dann wirklich 4×16 CPU-Kerne auf ein Mainboard. Im Vollausbau kostet das dann knapp 10.000 € also wer gerade noch etwas rumliegen hat und nicht weiß was damit zu tun ist...
Läubi .. schrieb: > Im Vollausbau kostet das dann knapp 10.000 € also wer gerade noch etwas > rumliegen hat und nicht weiß was damit zu tun ist... Wenn du dir mal einen VMware ESX Server vorstellst, auf dem über 100 VMs laufen, dann wirkt ein solcher Server mit dementsprechend natürlich auch 128-256GB RAM nicht mehr so krass.
Ich kann mir das sehr gut Vorstellen, einzig das nötige Kleingeld fehlt ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.