Symetrický multiprocesing

Symetrický multiprocesing alebo SMP zahrňuje multiprocesorovú hardvérovú architektúru kde sú dva alebo viac identických procesorov spojené do jednej spoločnej zdieľanej hlavnej pamäti a sú kontrolované jedným operačným systémom. Väčšina multiprocesorových systémov v dnešnej dobe využíva SMP architektúru. V prípade viacjadrových (multi-core) procesorov, sa SMP achitektúra aplikuje na jadrá – zaobchádza sa s nimi ako s osobitnými procesormi. Procesory môžu byť prepojené zbernicami, krížovými prepínačmi alebo sieťou na čipe. Úzkym hrdlom v škálovateľnosti SMP, ktoré používajú zbernice alebo krížové prepínače je predovšetkým šírka pásma a energetická spotreba prepojenia medzi rozličnými procesormi, pamäťou a diskovými poľami. Sieťová architektúra (spomínané siete na čipe) tieto nevýhody nemá a poskytuje takmer lineárnu škálovateľnosť pre oveľa väčší počet procesorov.
SMP systém umožňuje ktorémukoľvek procesoru pracovať na hociktorej úlohe, pričom nezávisí, kde sú dáta pre dané úlohy umiestnené v rámci pamäti. Každú úlohu spracúva v danú chvíľu najviac jeden procesor. So správnou podporou operačného systému môže SMP systém rýchlo a efektívne presúvať úlohy medzi procesormi a vyrovnávať tak pracovnú záťaž.
Alternatívy.
SMP reprezentuje jednu z prvých multiprocesorových strojových architektúr, typických pre budovanie menších počítačov s viac ako 8 procesormi. Väčšie počítačové systémy môžu používať NUMA (Non-Uniform Memory Acces), ktorý venuje rozličné pamäťové banky – priestory rozličným procesorom. V NUMA architektúre môžu procesory pristupovať k svojej lokálnej pamäti oveľa rýchlejšie ako k vzdialenej pamäti. Táto vlastnosť môže dramaticky zlepšiť pamäťovú priepustnosť, pokiaľ sú dáta lokalizované pre špecifický proces a teda aj pre procesor. Na druhej strane je nevýhodou, že v NUMA zaberie určitý čas, kým sú dáta presunuté z lokálnej pamäti jedného procesoru do lokálnej pamäti druhého procesoru, ako sa to deje napríklad pri vyrovnávaní záťaže medzi procesormi. Tieto operácie sú veľmi náročné. Výhody NUMA sa prejavia len pre určité typy záťaže, kde dáta spracováva práve jeden procesor – čo je typické pre servery, kde dáta sú často späté s určitými úlohami či používateľmi.
Iné systémy zas využívajú asymetrický multiprocesing (ASMP), ktorý používa separované špecializované procesory pre špecifické úlohy (čím sa zvyšuje komplexnosť) a počítačový skupinový multiprocesing (ako napr. Beowulf), kde všetka pamäť nie je k dispozícií pre všetky procesory.
Príklady ASMP sú napr. mnohé multimediálne procesory, kde relatívne pomalému základnému procesoru pomáhajú mnohé hardverové akceleračné jadrá. V dnešných moderných grafických kartách sa nachádzajú tiež veľmi vysoko výkonné 3D čipsety, ktoré by sa mohli považovať za formu asymetrického multiprocesingu. Skupinové techniky sú používané hlavne pri stavbe veľmi veľkých superpočítačoch. V týchto prípadoch je procesor označovaný ako "uni procesor" (UN).
Výhody a nevýhody.
SMP má mnoho využití vo vede, priemysle a obchode, kde sa často využívajú upravené verzie softvéru pre multithreadingové – viacvláknové (multitasking) spracovávanie. Ale väčšina produktov ako napríklad textové editory či počítačové hry sú napísané tak, že nie sú schopné veľmi dobre využívať prínosy týchto systémov. V hernom priemysle je to zvyčajne tým, že optimalizácia pre SMP systémy môže spôsobiť značne straty vo výkone na jednoprocesorovom systéme. V súčasnosti sú však viacjadrové procesory v nových počítačoch štandardom a preto sa pomer medzi jedno- a viacjadrovými počítačmi môže v nasledujúcich rokoch zmeniť.
Jednoprocesorové a SMP systémy vyžadujú na dosiahnutie maximálneho výkonu rozličné programovacie metódy. Preto občas treba mať dve verzie toho istého programu – pre obe techniky. Programy bežiace na SMP systémoch môžu zaznamenať značné zvýšenie výkonu, aj ak boli napísané pre jednojadrový systém. Je to spôsobené tým, že keď nastane systémové prerušenie, je vykonané a ošetrené práve nepracujúcim procesorom. Tým sa síce nezvýši samotný výkon aplikácie – napr. hry – ale celkový systém beží oveľa prirodzenejšie a hladšie. V niektorých prípadoch, hlavne pri kompilátoroch alebo niektorých distribuovaných projektoch sa dosiahne takmer toľkonásobné zrýchlenie, koľko procesorov dané systémy obsahujú.
V situáciach, kedy beží viac ako jeden program, SMP systém podáva lepší výkon ako jednojadrový systém, pretože rozličné programy môžu bežať na rozličných CPU. Systémoví programátori však musia zabudovať vhodnú podporu SMP systémov do operačného systému, inak ostatné procesory ostanú nevyužité a stáva sa z neho v podstate jednojadrový systém.
V prípadoch keď SMP prostredie spracováva mnoho úloh, administrátori často zaznamenávajú stratu hardvérového výkonu. Softvér bol navrhnutý tak, aby si plánoval svoje úlohy takým spôsobom, aby sa dosiahlo maximálne využitie potenciálneho výkonu procesorov. Správne navrhnutý softvérový balík teda môže využiť maximálny potenciál SMP systému plánovaním úloh pre každý procesor.
Prístup do RAM je serializovaný. Toto a pamäťová koherencia – spojitosť – spôsobuje mierny pokles výkonnosti oproti očakávanému lineárnemu nárastu výkonu podľa pridaných procesorov.
Vstupno-levelové systémy.
Pred rokom 2006, vstupno-levelové servery a pracovné stanice s dvoma procesormi dominovali na SMP trhu. S predstavením dual-core zariadení, SMP sa nachádza v takmer každom novom počítači a notebooku. Najpopulárnejšie vstupno-levelové SMP systémy využívajú x86 inštrukčnú sadu – architektúru a sú založené na Intel procesoroch : Xeon, Pentium D, Core Duo a Core 2 Duo alebo AMD Athlon64 X2, Quad FX čo Opteron 200 a procesory zo série 2000. Servery využívajú tieto procesory a ostatné nie x86 procesory (Sun Microsystems UltraSPARC, Fujitsu SPARC64 III neskôr, SGI MIPS, Intel Itanium, Hewlett Packard PA-RISC, Hewlett-Packard (spojené s Compaq, ktoré získalo prvú Digital Equipment Corporation) DEC Alpha, IBM POWER a Apple Computer PowerPC (špecifické G4 a G5 série tak ako aj skoršie PowerPC 604 a 604e série)). Vo všetkých prípadoch sú tieto systémy k dispozícií aj ako jedno procesorové verzie.
Skoršie SMP systémy využívali základové dosky, ktoré mali 2 alebo viac CPU socketov. V súčasnej dobe sa však procesy nevyrábajú samostatne – ale spojené do jedného zariadenia ako napr. POWER, UltraSPARC, Opteron, Athlon, Core 2 a Xeon. Athlon a Core 2 Duo multiprocesory sú socketovo kompatibilné s jednojadrovými variantmi – drahé základové dosky s 2 a viacerými socketmi pre CPU už neboli potrebné. Duálny socket Opteron bol navrhnutý technicky ako ccNUNA dizajn – aj tak však môžu byť naprogramované ako SMP pre menšiu stratu vo výkone.
Stredo-levelové systémy.
Burroughs B5500 implementoval SMP ako prvý v roku 1961. Neskôr to bolo implementované na ostatných mainframoch. Stredo-levelové servery, ktoré používajú 4 alebo 8 jadrové procesory, môžu byť nájdene v Intel Xeone MP, AMD Opteron 800 a 8000 sérií a vyššie spomenuté UltraSPARC, SPARC64, MIPS, Itanium, PA-RISC, Alpha a POWER procesory. Vysoko výkonné procesory s 16 a viac procesormi sú k dispozícií s všetkými spomenutými modelmi procesorov.
Sequent Computer Systems používa veľké SMP stroje s Intel 80386 (a neskôr 80486) procesormi. Niektoré menšie 80486 systémy existujú, ale väčšina x86 SMP trhu začína s Intel Pentium technológiou podporujúcou 2 a viac procesorov. Intel Pentium Pro rozširuje SMP podporu pre 4 a viac procesorov. Neskôr, procesory Pentium 2 a Pentium 3 umožňujú duálne CPU systémy, s výnimkou rodiny Celeron. Tieto boli nasledované Pentiom 2 Xeon a Pentiom 3 Xeon, ktoré sa natívne používali s 4 a viac procesormi. V roku 2001 AMD vydalo Athlon MP, alebo MultiProcesorový CPU, spolu s 760 MP základovou doskou, ako reakciu na trh, ktorý si žiadal dvojjadrové systémy. Bolo predstavených niekoľko ďalších väčších systémov, ale všetky boli limitované adresáciou jedine 64 GB pamäte. S uvedením 64-bitovej pamäťovej adresácie (procesory AMD64 Opteron v roku 2003 a Intel64 (EM64T) Xeon v roku 2005) systémy začali byť schopné adresovať oveľa viac pamäte = s limitáciou na 16 EiB, o ktorej sa predpokladá, že sa v dohľadnej dobe neprelomí.