SMP FAQ

Pagina: 1
Acties:
  • 3.263 views sinds 30-01-2008

Acties:
  • 0 Henk 'm!

  • Abbadon
  • Registratie: Februari 2000
  • Laatst online: 26-04 19:37

FAQ Processors, Mobo's & Geheugen

SMP FAQ

Inhoud

Wat betekent SMP?
Wat is het nut van meerdere CPU's?
Maken twee CPU's mijn PC tweemaal zo snel?
Hoe efficiënt is SMP in de praktijk?
Wat betekent multithreading?
Welke programma's zijn allemaal multithreaded?
Kan ik met elk OS gaan SMP'en?
Lopen games ook sneller op een SMP computer?
Hoe kan het dat ik beide CPU's ±50% in gebruik zie, terwijl ik slechts één singlethreaded applicatie draai?
Wat is cache coherency?
Hoe ziet de x86 SMP architectuur er eigenlijk uit?
Welke processoren kunnen SMP'en?
Moet de CPU stepping gelijk zijn om mee te SMP'en?
Welke moederborden zijn geschikt om mee te SMP'en?
Wat betekent 'Glueless' in x-Way Glueless SMP?
Kan ik ook een PC bouwen met méér dan 2 CPU's?
Is een 2-way SMP bak bouwen lastiger?
Verder nog opmerkingen, aanmerkingen over SMP?
Nog goede bronnen voor SMP info?


Wat betekent SMP?

SMP staat voor Symmetric MultiProcessing. Dit betekent in feite niets meer dan dat er twee of meer cpu's worden gebruikt in een computer waarbij de overige resources zoals het geheugen en de I/O bussen door deze cpu's gedeeld worden.

Terug naar boven
Wat is het nut van meerdere CPU's?

Heel simpel, om meerdere threads parallel te laten draaien. Één cpu kan slechts één thread tegelijk aan (Intels Hyper-Threading even buiten beschouwing gelaten), meerdere cpu's kunnen meerdere parallele threads aan, zodoende krijg je een overall snelheidsvoordeel.

Terug naar boven
Maken twee CPU's mijn PC tweemaal zo snel?

Nee. Hoe twee processors schalen t.o.v. van één hangt naast de hardware voornamelijk van de software af. Een applicatie zal om gebruik te kunnen maken van beide cpu's multithreaded moeten zijn, d.w.z. dat de applicatie op elke cpu tegelijkertijd een thread kan draaien. Veel software kan helaas niet parallel op twee cpu's draaien, dat noemen we singlethreaded software. Hoeveel sneller een multithreaded applicatie loopt op een SMP systeem is afhankelijk van de code (hoe efficiënt de multithreading eigenlijk is), hoe intensief de processoren worden gebruikt en de mate waarin de gedeelde resources (geheugen en I/O bussen) worden benaderd; hoe meer benaderingen van het geheugen hoe vaker de beide cpu's elkaar in de weg zitten, wat een vermindering v.d. performanceschaling tot gevolg heeft.

Daarenboven heb je nog met overhead processen te maken zoals cache-coherency, dit protocol snoept een deel op van de aanwezige performance.

Terug naar boven
Hoe efficiënt is SMP in de praktijk?

Hoewel je nooit een echte performance verdubbeling krijgt in vergelijking met één cpu zal een goede multithreaded applicatie absoluut sneller draaien. Daarnaast is er nog een groot voordeel: beide cpu's kunnen tegelijkertijd volledig belast worden door verschillende applicaties, ook als deze applicaties singlethreaded zijn; elke applicatie draait zo op z'n 'eigen' cpu, in deze gevallen is de performance toename t.o.v. een uniprocessor systeem evident.

Ergo: een SMP setup is zinvol als er goede multithreaded applicaties worden gebruikt of als er meerdere applicaties tegelijk (ook singlethreaded) worden gebruikt waarbij de cpu's in redelijke mate belast worden. Daarnaast is er nog de gevoelswaarde welke moeilijk in cijfers te vangen is; een SMP bak wordt door de meeste gebruiker als bijteriger en soepeler ervaren en zal onder zware load lang niet zo snel door de knieën gaan als een uniprocessor systeem.

Terug naar boven
Wat betekent multithreading?

Een applicatie bestaat uit meerdere deelprocessen welke als diverse threads (code basis eenheid als 'voer' voor de cpu) worden uitgevoerd. Een singlethreaded applicatie zal deze deelprocessen serieel uitvoeren; de ene thread kan pas worden gestart als de ander klaar is, hierdoor wordt er dus maar één cpu gebruikt. Bij een multithreaded applicatie kunnen de diverse threads parallel/tegelijkertijd op meerdere cpu's worden uitgevoerd; ze hoeven niet continu op elkanders uitkomst te wachten. Het resultaat is dat er meer werk in een tijdseenheid verzet kan worden en de applicatie dus sneller z'n werk doet :)

Terug naar boven
Welke programma's zijn allemaal multithreaded?

In het algemeen is dat voornamelijk professionele business software. Denk aan b.v. 3ds max, Cinema 4D, Maya, Photoshop, Premiere, diverse CAD programma's, Windows Media Encoder, VMWare maar ook simpele programma's als de bekende RC5 client }:O of een encoder als FlaskMPEG 0.6. De lijst wordt steeds langer sinds SMP systemen door de jaren heen een stuk betaalbaarder zijn geworden en dus ook meer gebruikt worden. Na de introductie van de Dual Core processors zal het ongetwijfeld storm lopen op die lijst :)

Terug naar boven
Kan ik met elk OS gaan SMP'en?

Nee, niet alle OS'en kunnen met twee of meer cpu's omgaan. Zo heeft het draaien van Windows 95, 98 en ME op een dual processor computer geen enkele zin; de tweede cpu wordt gewoonweg niet herkend. De volgende OS'en ondersteunen minimaal twee cpu's en zijn dan ook the way to go: Windows NT 3.1~4.0, Windows 2000 (alle versies), Windows XP Professional, alle huidige Linux, UNIX, BSD varianten en BeOS.

Terug naar boven
Lopen games ook sneller op een SMP computer?

Nee, in het algemeen zelfs ietsje langzamer. Het leeuwendeel v.d. games is singlethreaded waardoor maar één cpu wordt gebruikt. De eerder genoemde communicatie overhead tussen beide cpu's zorgt er zelfs voor dat een game in veel gevallen zelfs wat minder performed op een SMP doos. De enige uitzonderingen zijn o.a. Starsiege, Falcon 4.0 en de games die gebasseerd zijn op de Quake3 Arena engine. Met de set r_smp 1 optie worden in de Q3A engine beide cpu's gebruikt, echter, met de huidige snelle cpu's blijkt dit in de praktijk geen merkbare performance winst meer op te leveren.

Terug naar boven
Hoe kan het dat ik beide CPU's ±50% in gebruik zie, terwijl ik slechts één singlethreaded applicatie draai?

De veroorzaker hiervan is het OS. Als je PC aanstaat lopen er zo een paar honderd threads, echter, een klein gedeelte hiervan is actief (lees: draait op de cpu), het gros staat in de wachtstand. Telkens wanneer een thread actief moet worden bepaalt het OS op welke cpu de desbetreffende thread gaat draaien, zo kan het zijn dat de thread van de singlethreaded applicatie eerst op cpu0 draait, vervolgens in de wachtrij komt en even later aan cpu1 wordt toegewezen. Dus in de praktijk zal deze applicatie nooit beide cpu's tegelijk gebruiken, maar switcht het OS (in het geval van Windows de HAL) 'm tussen de cpu's om de load zo gelijkmatig mogelijk te verdelen.

Terug naar boven
Wat is cache coherency?

De bedoeling is dat dezelfde data niet tegelijkertijd door beide cpu's bewerkt wordt en teruggeschreven naar het geheugen, want wát is vervolgens de juiste data? Om zulke data corruptie te voorkomen is het noodzakelijk dat beide cpu's van elkaar weten wat ze uitspoken en welke data er in hun cache's staat. Als cpu0 een datablok (cacheline) bewerkt wat toevallig ook in het cache staat van cpu1 wordt de data in cpu1's cache ongeldig verklaard en kan cpu1 er niks meer mee, tevens kan cpu1 de data niet uit het geheugen halen, want deze is ook ongeldig verklaart totdat cpu0 klaar is met de bewerking en de bewerkte data heeft teruggeschreven naar het geheugen, dan pas kan cpu1 de data opnieuw inlezen en er mee doe wat 'ie er mee wil doen (een performance penalty dus). In feite worden er verschillende statussen gegeven aan de data, hier het MESI protocol:
Modified: alleen de data in dit cache is geldig, de overe lokaties (geheugen en de cache v.d. andere cpu) zijn ongeldig
Exclusive: geen ander cache heeft deze data en het geheugen is up to date
Shared: andere caches hebben deze data ook en het geheugen is up to date
Invalid: de data is ongeldig

Aan de hand van deze statussen weten de cpu's waar ze aan toe zijn. Dit vergt de nodige communicatie tussen beide cpu's: beide checken (snooping) steeds op de bus naar elkanders cache status en vertellen wat ze doen. Deze snooping kost tijd en neemt bandbreedte op de bus weg (de eerdergenoemde overhead) waardoor 100% performance verdubbeling door het toevoegen van een tweede cpu nooit gehaald kan worden.

Naast MESI is er een ander protocol, genaamd MOESI. In feite is dit hetzelfde maar dan met een extra status, namelijk de O van Owner. In het voorbeeld hierboven moest cpu1 wachten totdat cpu0 klaar was met z'n bewerking én het terugschrijven naar het geheugen, dan pas kon cpu1 de data opnieuw inlezen in z'n cache om er wat mee te doen (de performance penalty). In het geval van MOESI hoeft cpu1 niet zolang te wachten totdat cpu0 de data naar het geheugen heeft geschreven en het vervolgens zelf in kan lezen, nee, nadat cpu0 klaar is met de bewerking kan cpu1 de bewerkte data direct via de bus uitlezen uit het cache van cpu0, dit scheelt nogal wat kloktikken (want de betrekkelijk lange weg naar en van het geheugen wordt omzeild). In dit geval is de data in het cache van cpu0 Owner en de data in cpu1's cache Shared.

Overigens, MESI wordt door Intel gebruikt voor de shared FSB (AGTL+) en MOESI wordt o.a. door AMD (en Sun en Alpha) gebruikt voor de Point-to-point verbindingen.

Terug naar boven
Hoe ziet de x86 SMP architectuur er eigenlijk uit?

Bij een uniprocessor systeem is het betrekkelijk simpel: je hebt een cpu die d.m.v. een FrontSideBus verbonden is met de chipset welke vervolgens weer verbonden is met het geheugen en de I/O bussen of de cpu is direct d.m.v. z'n on-die geheugencontroller verbonden met het geheugen zonder tussenkomst van een externe chipset (denk aan de Athlon 64 en Opteron serie). Deze enkele cpu is heer en meester op z'n FSB en hoeft nooit te informeren naar de status van andere cpu's of continu te luisteren of de bus bezet is ja of nee (laat staan communiceren m.b.t tot cache coherency).

Wanneer er twee cpu's worden gebruikt zijn er drie mogelijkheden: Intel's shared bus implementatie, AMD's Smart MP implementatie of AMD's NUMA implementatie. In het Intel geval hangen beide cpu's aan dezelfde FSB (vandaar ook de naam FrontSideBus), dit heeft tot gevolg dat beide cpu's de beschikbare bandbreedte op de FSB moeten delen en dat ze continu moeten luisteren of de bus bezet is door de andere cpu ja of nee. Het effect is dus dat beide cpu's minder effectieve bandbreedte ter beschikking staat dan in het geval van één cpu.

AMD's Smart MP voorziet in twee afzonderlijke point-to-point verbindingen van de chipset naar de cpu's. Het gevolg is dat beide cpu's heer en meester zijn op hun eigen point-to-point verbinding en niet hoeven te luisteren of de andere cpu de verbinding bezet houdt. Tevens staat de volle bandbreedte van deze verbinding ter beschikking aan de enkele cpu.

In AMD's meest recente NUMA implementatie kan elke cpu de beschikking hebben over zijn eigen (local) geheugen wat direct aan de on-die geheugencontroller hangt. Tevens kunnen beide cpu's bij elkaars lokale geheugen komen (wat dan remote geheugen heet) middels de snelle HyperTransport verbinding tussen de cpu's. Qua architectuur zijn AMD's implementaties duidelijk superieur aan het shared bus principe, echter, de praktische uitwerking is mede afhankelijk van de capaciteit van de bussen/verbindingen. De Xeon's moeten beide een bandbreedte van 4.2GB/s delen (uitgaande van de 133MHz FSB), de AMD MP's hebben elk 2.1GB/s ter beschikking (4.2GB/s samengevoegd/aggregated) en de Opterons kunnen per cpu over 6.4GB/s beschikken dat is samen 12.8GB/s(!) aggregated. In het geval de de dual Xeon's levert het geheugen ook een bandbreedte van 4.2GB/s terwijl AMD's point-to-point verbindingen samen daar slechts de helft (2.1GB/s) van ter beschikking hebben. De Opterons hebben in het beste geval absoluut geen tekort aan geheugenbandbreedte (max 12.8GB/s) maar kunnen op een alternatieve manier geconfigureerd worden; er zijn platformen waar slechts één van beide cpu's voorzien is van geheugen waardoor beide Opterons de max 6.4GB/s bandbreedte moeten delen (één Opteron heeft direct toegang tot het geheugen en de ander via een omweg door de HyperTransport link), dit is evengoed meer dan beide andere implementaties. Het is duidelijk dat de Athlon MP de traagste architectuur heeft, dit met name door de beperkte totale geheugenbandbreedte. De Xeon heeft tweemaal zoveel ter beschikking en de Opteron nog weer veel meer. In het Opteron geval geldt wel dat de software rekening dient te houden tussen local en remote geheugen om optimaal gebruik te kunnen maken van de potentieel enorme bandbreedte en lage wachttijden. Windows 2003 gebruikt de Static Resource Affinity Table in de firmware van het systeem om de processen gewaar te laten worden van NUMA (betreft geheugen management, thread scheduling en affinity settings), dit kan in bepaalde gevallen veel performancewinst opleveren.

Terug naar boven
Welke processoren kunnen SMP'en?

Hieronder een overzicht van recente cpu's:

Wel SMP:
Intel PII
Intel P!!! behalve de Tualatin met 256KB L2 cache
Intel Xeon
AMD Athlon MP
AMD Opteron 200 en 800 serie

Officieus SMP: als in: kan wel, desnoods met een kleine aanpassing maar wordt niet ondersteund en gegarandeerd
Intel PII Celeron
AMD Duron
AMD Athlon
AMD Athlon XP

Niet SMP:
Intel P!!! Celeron
Intel P!!! Tualatin met 256KB L2 cache
Intel P4 Celeron
Intel P4
AMD Sempron
AMD Athlon64
AMD Opteron 100 serie

Plus in feite alle onder 'officieus SMP' genoemde cpu's, alleen zijn de 'niet SMP' cpu's met geen mogelijkheid tot SMP in staat, ook niet d.m.v. een tweak/aanpassing.

De categoriën 'wel' en 'niet' spreken voor zich. De middelste categorie is minder vanzelfsprekend. Er zijn vele perfect functionerende gevallen bekend van dual Celerons (daar had de Abit BP6 haar bestaansrecht aan te danken) en dual Athlon XP. AMD heeft de latere serie XP's van een lock voorzien zodat SMP niet werkt, echter, hier is een vrij simpele workarround voor: het verbinden van de laatste L5 brug (gewoon met een zilverpen o.i.d. beide puntjes verbinden). Natuurlijk is niks gegarandeerd en het advies is dan ook om voor officieel SMP gegarandeerde processoren te gaan als een juiste werking erg belangrijk is (b.v. bedrijfsdoelmatige toepassingen).

Terug naar boven
Moet de CPU stepping gelijk zijn om mee te SMP'en?

Nee, een systeem kan prima werken met twee cpu's van verschillende stepping. In het geval van de Intel cpu's worden dezelfde steppings wel geadviseerd maar niet als vereiste gesteld. Het is zelfs mogelijk twee P!!!'s te gebruiken met verschillende kloksnelheid, alleen is dit niet getest door Intel. Er zijn een paar P!!! steppings die door Intel niet ondersteund worden in een SMP configuratie, controleer dit a.d.h. van deze Intel site. Een andere wetenswaardigheid is dat de Xeon processors richting beneden multiplier unlocked zijn, hierdoor is het mogelijk een snellere Xeon bij een langzamere te prikken; het moederbord zal de multiplier verlagen overeenkomstig de langzamere Xeon (in het BIOS kun je dit zelf ook doen).

AMD onderteund voor haar 760MP/MPX chipset alleen MP cpu's van dezelfde snelheid (zie de whitepapers). Wellicht dat twee verschillende snelheden werken, maar daar heb ik nog geen echte succesverhalen over gehoord.

Terug naar boven
Welke moederborden zijn geschikt om mee te SMP'en?

Alle moederborden met twee of meer cpu sockets/sloten :+ (behalve die paar borden met een Slot 1 én S370 slot/socket, daar kun je slechts één tegelijk van gebruiken) Er zijn een aantal combinaties van cpu/chipset mogelijk, hieronder een (niet volledig) overzicht:
Intel PII: Intel i440LX, BX en GX
Intel Celeron: Intel i440LX en BX
Intel P!!!: Intel i440BX en GX, i820 Camino, i840 Carmel en in één geval zelfs de i815 Solano (Acorp maakt dual i815 borden ondanks dat Intel deze chipset niet voor dual gebruik heeft ontworpen/gevalideerd), Serverworks HE, LC, LE en HE SL en ViA Apollo Pro266(T) en Pro133(T)
Intel P!!! Xeon: i440GX, i450NX, i840 Carmel, Serverworks HE, LC, LE en HE LS.
Intel Xeon: i860 Colusa, E7500 Plumas, E7505 Placer, i875P Canterwood (officieus), E7525 Tumwater, E7520 Lindenhurst en Serverworks GC HE, GC LE, GC WS en GC SL
AMD Athlon MP: AMD 760MP, 760MPX (Irongate-4) en AMD-8000 serie

De gerenommeerde SMP moederbord fabrikanten zijn ondermeer: Supermicro, Tyan, Iwill en Intel. Verder hebben Asus en MSI heeft ook veel ervaring met dual borden. Echter, het zijn de eerste twee merken die er het meest uitgebreide assortiment dual borden op na houden.

Terug naar boven
Wat betekent 'Glueless' in x-Way Glueless SMP?

De naam zegt het al: 'zonder lijm'. Het komt er op neer dat de cpu's met elkaar kunnen communiceren zonder bijzondere 'lijm' om ze aan elkaar te plakken. Met bijzondere lijm (crossbarswitches, bruggen, e.d.) is het mogelijk om véél meer cpu's met elkaar te laten praten, denk bijvoorbeeld aan 32-way Xeon systemen zoals IBM's NUMA-Q of Unisys' ES7000 Servers.

Terug naar boven
Kan ik ook een PC bouwen met méér dan 2 CPU's?

Jazeker, alleen wordt dit een dure liefhebberij. De enige opties die je hebt (afgezien van de oude PentiumPro's) zijn de oudere Intel PIII Cascade Xeon's (alleen de 700 en 900Mhz varianten met 1 of 2MB L2 cache), de Xeon Gallatin MP's (niet de 'standaard' Foster en Prestonia Xeon's dus) en de Opteron 8xx serie.

Verder op dit onderwerp ingaan gaat imo te ver daar je met Quad's al in de erg dure en specialistische hoek terecht komt (hoewel het erg interessant kan zijn :) ).

Terug naar boven
Is een 2-way SMP bak bouwen lastiger?

Nee, in wezen is de enige extra handeling die je hoeft te verrichten het plaatsen van een extra processor :P Waar je wel iets meer aandacht aan moet schenken is de koeling en airflow; twee processors geven nu eenmaal meer warmte af dan één. Ook verdient de PSU (voeding) meer aandacht omdat je nu met twee flink wat prik lustende cpu's te maken kunt hebben (in het geval van Athlon's en Xeon's); een goede 350W is toch snel het minimum, maar let naast het Wattage ook op het aantal Ampère dat de diverse lijnen leveren (houd voor dual AMD's 30A op de 5V lijn als minimum aan). Een speciaal geval zijn de 2-way Xeon borden, deze hebben nagenoeg allemaal een extra 8-pins connector welke niet standaard ATX is. Om geen dure speciale PSU te kopen kun je een goedkope adapter nemen zoals deze. En neem natuurlijk een kast welke groot genoeg is; dual borden zijn veelal groter dan single borden.

Terug naar boven
Verder nog opmerkingen, aanmerkingen over SMP?

Wel, bezuinig niet op de onderdelen; je bent sowieso al een redelijk bedrag kwijt aan het bord en de CPU's. Let met name op de geheugen eisen, er zijn flink wat borden welke expliciet registered ram vereisen (voor uitleg/betekenis 'registered', zie RAMFAQ) en neem merkspul. Neem genoeg geheugen en snelle disken; niks is erger dan dat beide cpu's van de honger omkomen want daarmee doe je je SMP bak de das om. Verder moet je goed overwegen of de hogere investering in een SMP bak voor jouw specifieke geval de moeite waard is; maak voor jezelf duidelijk wat je er mee wilt gaan doen om zo een goede inschatting te kunnen maken of die tweede cpu jou inderdaad het verwachte rendement en/of plezier op gaat leveren :)

Terug naar boven
Nog goede bronnen voor SMP info?

In eerste instantie de website's van Intel, AMD en de diverse mobo producenten. Verder zijn er flink wat artikelen te vinden op het net over SMP, met name Aces hardware en tecchannel vind ik vrij goede site's. Voor gebruikerservaringen is het mobo forum van 2cpu.com ongeslagen.

Op GoT lopen uiteraard een hoop gebruikers rond met een SMP bak. Je kunt hun ervaringen hier terugvinden:
Dual AMD Ervaringen
Dual AMD Ervaringen (Deel 2)
Dual AMD Ervaringen (Deel 3)
Dual Xeon Ervaringen
Dual Xeon Ervaringen (Deel 2)
Dual Xeon Ervaringen (Deel 3)
Dual Xeon Ervaringen (Deel 4)

Terug naar boven

Voor op- en/of aanmerkingen, onvolkomenheden of onjuistheden, mail me gerust: abbadon@tweakers.net

[ Voor 86% gewijzigd door BalusC op 31-05-2005 17:12 . Reden: Chipset en cpu update ]

Just pick a dead end and chill out 'till you die.


Dit topic is gesloten.