Sümmeetriline multiprotsessimine
See artikkel valmib koolitööna. Võimaluse korral lisa oma parandusettepanekud arutelulehele. See ei tähenda siiski, et teistel kaastöölistel on artikli muutmine keelatud. Malli võib eemaldada 10.05.2026. |
Sümmeetriline multiprotsessimine (SMP ehk symmetric multiprocessing) on arvutiriistvara arhitektuur, mille kaudu operatsioonisüsteem (OS) suhtleb mitme protsessoriga läbi ühise süsteemisiini ja kõik protsessorid on võrdsed. [1]

SMP arhitektuur annab võimaluse jaotada ülesandeid protsessorite vahel dünaamiliselt ja soodsalt.[1] Kõik protsessorid on selles arhitektuuris võrdsed ning suhtlevad kas ühe siini kaudu (vanem versioon) üksteisega, põhimäluga, kettaga ja sisend-/väljundseadmetega või mitme siini kaudu ehk kasutada otseühendusi üksteise vahel. [2]
Üks SMP põhiomadusi on UMA (Uniform Memory Access ehk ühtlane mälupöördus). See tähendab, et olenemata sellest, milline süsteemis olev protsessor pöördub põhimälu poole, kulub mis tahes mäluaadressi lugemiseks või sinna kirjutamiseks ligikaudu sama palju aega.[3]
SMP omaduseks on ka üks kindel operatsioonisüsteem, mis suudab ise ülesandeid protsessorite vahel jaotada ja jagatud põhimälu. [1]
Võrdluseks SMP-le oleks asümmeetriline multiprotsessimine (AMP ehk symmetric multiprocessing) on arvutiriistvara arhitektuur, kus erinevad protsessorid ei ole samaväärsed. ASMP puhul on üks master protsessor, mis saab teha operatsioonisüsteemi käest saadud käske ja jagada ülesandeid teistele protsessoritele (slave) edasi. [4]
Ajalugu
[muuda | muuda lähteteksti]Arvutustehnika algusaastatel olid arvutid varustatud vaid ühe keskseadmega (CPU). Kui tekkis vajadus suurema arvutusvõimsuse järele, tuli vajadus lisada teine protsessor. Varajased mitmeprotsessorilised süsteemid, olid ASMP süsteemid kus üks protsessor tegeles riistvara ja OS-iga ning teine kasutaja programmidega. [5] Esimesed SMP süsteemid tulid 1970ndatel (nt: Burroughs D825) [6].
Tõeline SMP hakkas peavoolu jõudma 1990. aastate alguses, peamiselt suurte UNIX-serverite toel. [7]Sellised ettevõtted nagu Sun Microsystems, Hewlett-Packard, IBM ja SGI ehitasid võimsaid SMP-servereid. Sellel ajastul koosnesid SMP-süsteemid mitmest eraldiseisvast füüsilisest protsessorist, mis olid paigaldatud ühisele emaplaadile. Nende süsteemide hind oli astronoomiline, mis piiras nende kasutust vaid suurkorporatsioonide, teadusasutuste ja valitsuste ringis. [8]
SMP tõeline plahvatuslik levik toimus 2000. aastate esimesel poolel. Aastakümneid oli arvutite jõudlust kasvatatud protsessorite taktsageduse (megahertside ja gigahertside) tõstmisega. Lõpuks aga põrkus tööstus füüsikaliste piirangute vastu: mida kõrgem oli taktsagedus, seda enam eraldas kiip soojust ja tarbis voolu. [9] Selle asemel, et teha ühte protsessorituuma kiiremaks, otsustasid tootjad (nagu Intel ja AMD) panna ühele ränikiibile mitu iseseisvat tuuma. See kiipsisese multiprotsessimise (CMP ehk Chip-Level Multiprocessing) ehk mitmetuumaliste protsessorite esiletõus tähendas, et iga tavatarbija lauaarvuti, ja peagi ka sülearvuti ning nutitelefon, muutus olemuselt SMP-süsteemiks. [9][3]
Vahemälu sidusus[10](Cache coherence)
[muuda | muuda lähteteksti]SMP-ga on probleem vahemälus info muutmisega ehk tuleb kindlustada, et kui üks protsessor tahab muuta andmeid, millest on ka koopia teise protsessori vahemälus, siis tuleb tagada, et ükski protsessor valesid andmeid ei kasutaks. Peab kindlustama, et teine protsessor saab teada andmete aegumisest ja kasutaks ajakohast infot. [10]
Tarkvaraline lahendus
[muuda | muuda lähteteksti]Üks võimalus sellist probleemi vältida on tarkvaraline lähenemine. Kompillaator ning operatsioonisüsteem peavad kindlustama, et need andmed, mida erinevad protsessorid korraga kasutavad oleks mitte-vahemälustatavad. Seega peab igakord kui protsessor soovib andmeid kasutada, selle taas aeglasest põhimälust välja lugema. [10]
Selline lahendus, aga aeglustab arvuti üldist jõudlust, sest enamus ajast protsessor just loeb andmeid, mitte ei kirjuta neid ja lugemine võtab vahemälust kõvasti rohkem aega kui põhimälust. [10]
Kataloogiprotokoll (Directory-based cache coherence)
[muuda | muuda lähteteksti]Kataloogiprotokolli puhul on üks keskne kontroller (kataloog), milles on info kõigi andmete kohta mida, protsessorid oma vahemälus hoiavad. Enne kui protsessor soovib andmeid muuta, peab ta selle keskselt kontrollerilt üle küsima. Kontroller pärast ütleb kõigile teistele protsessoritele, kellel on need andmed vahemälus, et nende koopia on kehtetu. [10]
Probleem, sellega on, et iga kord kui protsessor soovib andmeid kirjutada, isegi kui teistel ei ole neid andmeid kasutuses, peab ta seda iga kord kontrollerilt üle küsima ja nii tekib pudelikael selle kontrolleri taha. [10]
Nuhkimisprotokoll (Snoopy/Sniffing protocol)
[muuda | muuda lähteteksti]Nuhkimisprotokoll tähendab, seda, et iga kord kui üks protsessor andmeid muudab, teavitab (broadcast) ta sellest kõigile teistele protsessoritele. Iga protsessor siis pidevalt jälgib (nuhib) siini, et kas tema vahemälus olevates andmetest on mingit infot. See on alternatiiv kataloogprotokollile ehk sellel ei ole keskset kontrollerit. [10]
Kirjutamisel uuendamine (write-update)
[muuda | muuda lähteteksti]Kirjutamisel uuendamine tähendab, et kui tuleb nüüd ühelt protsessorilt teade, et ta muutis neid andmeid, annab ta uue andmeväärtuse kaasa nii, et protsessorid, mille vahemälus need andmed olid, saaksid uued andmed ka kohe oma vahemällu kirjutada. [10]
Probleem sellega on, et see tekitab juurde väga suure lisaliikluse, sest iga kirjutamisega tuleb kaasa ka suur hulk andmeid isegi kui teistel ei pruugi neid üldse tarvis olla. [10]
Kirjutamisel tühistamine (write-invalidate)[11]
[muuda | muuda lähteteksti]Kirjutamisel tühistamine ei anna kaasa andmeid vaid teavitab lihtsalt, et andmeid sellel mäluaadressil on muudetud ja siis vastavalt muudavad protsessorid oma vahemälus oleva koopia kehtetuks. Kui on tarvis andmeid uuest kasutada peab selle põhimälust välja lugema.[10]
Sellega tekib samuti palju lisaliiklust süsteemisiinidel/siinil, sest iga kirjutamisega tuleb teadaanne, et midagi on muudetud, aga vähem kui kirjutamisel uuendamisega, sest annab kaasa vaid lühikese teavituse. Sellist lähenemist kasutab näiteks MESI protokoll, mille jaoks on tarvis vaid kahet bitti.[10]
MESI protokoll
[muuda | muuda lähteteksti]MESI protokoll on vahemälu sidususe protokoll, mis põhineb kirjutamisel tühistamise põhimõttel. Protokolli nimi tuleneb neljast võimalikust olekust, milles iga vahemälus olev andmeplokk saab olla:[10]
M - muudetud (modified)
Andmeid on muudetud ainult selles konkreetses vahemälus ning põhimälus olev väärtus on aegunud. See protsessor omab ainsana kehtivat koopiat. Kui teine protsessor soovib neid andmeid lugeda, peab esimene protsessor andmed esmalt põhimällu tagasi kirjutama (salvestama), et teine protsessor saaks sealt ajakohase info.[10]
E - eksklusiivne (exclusive)
Kui andmed loetakse esimest korda protsessori vahemälusse nii, et ühelgi teisel neid ei ole on andmed olekus eksklusiivne (E). Kui protsessor soovib neid andmeid muuta, lähevad andmed olekusse M, ilma et peaks teisi sellest teavitama. Selles olekus on andmed samad põhimäluga.[10]
S - jagatud (shared)
Andmed on jagatud kui mingisugusel ajahetkel on mitu erinevat protsessorit neid korraga oma vahemälus hoidnud. Selles olekus on erinevate protsessorite vahemälus see andmeplokk sama ja ühtib ka põhimäluga. Ei saa olla kindel pärast kas mõni protsessor on need andmed vahepeal oma vahemälust minema visanud ja seetõttu ei saa olek jagatust tagasi eksklusiivseks minna.[10]
I - kehtetu (invalid)
Juhul kui protsessoris on andmed olekus S ja neid muudetakse ning läheb olekusse M, siis kõikide teiste koopiad muutuvad kehtetuks I. Neid andmeid enam kasutada ei tohi.[10]
Siinist otseühenduseni [12]
[muuda | muuda lähteteksti]SMP süsteemide füüsiline ülesehitus on aja jooksul märkimisväärselt muutunud, liikudes jagatud ühissiini juurest keerulisemate, aga kiiremate punktist-punkti võrgustike poole.[12]
Jagatud süsteemisiin (Shared Bus)
[muuda | muuda lähteteksti]1980ndatel tulid välja esimesed SMP lahendused. [3]
Aastal 2004 Inteli tehtud SMP süsteemides olid kõik protsessorid ja põhimälu ühendatud ühele füüsilisele juhtmele ehk siinile. Kui protsessorite arv kasvab, tekib siini juures ummik, kuna kõik seadmed võistlevad sama ribalaiuse pärast, et OS-iga, mäluga, üksteise või siinihalduri suhelda. [12]
2005 pani Intel protsessorid kahele erinevale siinile ja lisati ka snoop filter, millega sai kontrollida, mis informatsiooni mõlemale siinile saadetakse (broadcast) [13] ja seega tõsteti ribalaius 4.2GB/s 12.8GB/s peale.[12]
2007 ühendati iga protsessor kiibistikuga eraldi ja ribalaius saadi 34GB/s peale.[12]
Punktist-punkti otseühendused (point-to-point interconnects)
[muuda | muuda lähteteksti]Kaasaegsed SMP süsteemid on asendanud ühise siini privaatsete otseühendustega protsessorite vahel. Otseühenduste puhul puudub vajadus snoop filter järele, kuna andmed liiguvad mööda mitut sõltumatut teed üheaegselt. See tehnoloogia võimaldab ehitada süsteeme, kus on kümneid või isegi sadu protsessoreid, ilma et tekkiks klassikaline siini pudelikael.[12]
Operatsioonisüsteemi roll [14]
[muuda | muuda lähteteksti]Kuigi riistvara lahendab mälukoherentsuse, langeb ressursside õiglase ja turvalise jagamise raskus operatsioonisüsteemile. Operatsioonisüsteemi tuum (kernel) peab olema kirjutatud spetsiaalselt SMP-d toetama.[14]
Kuna kõik protsessorid võivad samaaegselt käivitada OS-i koodi, võivad nad sattuda konflikti kerneli andmestruktuuride (näiteks avatud failide nimekirja või mälulehekülgede tabeli) muutmisel. Seda nimetatakse võidusõiduolukorraks (Race Condition).[14]
Selle vältimiseks kasutab operatsioonisüsteem lukke ja atomic operaton-e.[10]
- Pöördlukud (Spinlocks): Kui tuum tahab ligipääsu lukustatud ressursile, jääb ta aktiivselt "pöörlema" (käivitab tühja tsüklit), küsides pidevalt: "Kas lukk on nüüd lahti?". See on väga kiire viis lühiajaliste lukkude haldamiseks, kuid raiskab protsessoriaega, kui ootamine venib pikaks.
- Mutexed: Pikemate ootamiste puhul pannakse ootav lõim (thread) magama, vabastades protsessorituuma muudele ülesannetele. Kui ressurss vabaneb, äratab OS lõime uuesti üles.
- Atomic operations (protsessori tasemel sisse ehitatud madalatasemelised käsud)
Ajalooliselt lahendati see probleem sageli lihtsalt: võeti kasutusele üks suur lukk (näiteks varajane Linuxi Big Kernel Lock). Kui üks tuum oli kernelis, ootasid teised ukse taga. Tänapäevased operatsioonisüsteemid on viidud väga peeneteralise lukustamiseni (fine-grained locking), kus lukustatakse ainult väga spetsiifilisi andmestruktuure, et maksimeerida paralleelsust.[14]
SMP vs ASMP
[muuda | muuda lähteteksti]SMP läbilaskevõime (tehtud protsesse ajas) on suurem kui ASMP puhul, sest kõik protsessorid saavad käsitleda operatsioonisüsteemi käske. SMP puhul kui ühe protsessoriga midagi juhtub saab arvuti edasi töödata, kui aga ASMP süsteemi protsessoriga midagi juhtub ei pruugi enam saada mingeid käske täita. ASMP süsteemil on tihti protsessorid kindlate rollidega, näiteks üks haldab sisend/väljund seadmeid või on igal oma sisend/väljund seade, mida hallata. Seega kui mõni protsessor katki läheb ei ole võimalik seda enam kasutada. [15][16]
ASMP-ga võib olla ka nii, et mõni protsessor on suure koormuse all ja teised ei tee midagi, sest teistel ei ole sellele osale informatsioonile ligipääsu, SMP puhul on lihtsam jaotada koormust. [15]
ASMP süsteeme on lihtsam ja seega ka odavam toota, sest et kõik käib läbi ühe protsessori, mis jagab ülesanded edasi laiali. Samuti ei pea tegelema vahemälu sidususega. SMP puhul peab ka kindlustama, et kõigil protsessoritel oleks võrdsed õigused seadmetele nii riistvaraliselt kui ka tarkvaraliselt. [17]
ASMP on energiasäästlikum ja efektiivsem. Operatsioonisüsteem peab suutma kasutada ASMP protsessoreid õigesti, teades, milliseid protsessoreid kasutada, mis tööde jaoks.[4]
SMP arhitektuur on kasutuses tänapäeval enamus läpakates, serverites ja nutitelefonides samal ajal kui ASMP (asümmeetriline multiprotsessimine) on kasutuses vähematel juhtudel nt manussüsteemides.[1]
Tulevik [18]
[muuda | muuda lähteteksti]Tarbijarakendused tegelikult kasutavad pigem vähe lõimesid ühel ajal, sest sisaldavad palju jada-koodi. Arvuti jõudlusele aitaks ka kaasa kui rakendused hakkaksid rohkem parallelismi oma koodis implementeerima. Amdahli seadus ütleb ka, et tuumade lisamine/paralellisserimine aitab teatud piirini, aga mingid ülesanded tuleb ikka jadamisi teha. Samuti ei ole tavaprotsessorid väga säästlikud vaid on mõeldud pigem hea saavutuse peale. Heterogeensed multiprotsessorid tahavad lahendada seda probleemi tuues süsteemidesse erinevat tüüpi riistvara, nii et iga rakendus kasutaks endale kõige efektiivsemaid võimalusi. See, muidugi, aga lisab tööd juurde operatsioonisüsteemile, mis peab aru saama kuidas ressursse jaotada. [3]
Heterogeensed süsteemid kasutavad hetkel erinevaid tuumasid:
- Jõudlustuumad (P-cores / Performance cores): Need on suured, komplekssed ja energianäljased tuumad. Nad on loodud nendeks hetkedeks, kui kasutajal on vaja kiirust (mängimine, video renderdamine, keerulised arvutused). Neid on süsteemis tavaliselt vähem.[19]
- Säästutuumad (E-cores / Efficiency cores): Need on füüsiliselt palju väiksemad (ühe P-tuuma alale mahub sageli neli E-tuuma) ja töötavad madalamal taktsagedusel. Nende eesmärk on lahendada taustaprotsesse (viirusetõrje, allalaadimised, süsteemiuuendused) või lihtsaid ülesandeid minimaalse energiakuluga.[19]
Näited HMP-st reaalsuses:
- ARM big.LITTLE (kuni kolme erinevat tüüpi protsessorid): Nutitelefonide maailmas (Qualcomm Snapdragon, MediaTek)[20]
- Apple'i M-seeria kiibid: (M1, M2, M3 jne) tegid HMP sülearvutites ja lauaarvutites ülimalt populaarseks, näidates enneolematut jõudluse ja aku kestvuse suhet. [21]
- Intel Alder Lake ja Raptor Lake: Alates 12. põlvkonna protsessoritest hülgas ka Intel laiatarbe-arvutites puhta SMP ja liikus HMP peale, tutvustades P-tuumade ja E-tuumade kombinatsiooni. [22]
- 1 2 3 4 "What is Symmetric Multiprocessing (SMP)?". superops.com (inglise). Vaadatud 3. mail 2026.
- ↑ "Brauseri kontrollimine – reCAPTCHA". infohub.delltechnologies.com. Vaadatud 3. mail 2026.
- 1 2 3 4 "multi-processor - an overview | ScienceDirect Topics". www.sciencedirect.com. Vaadatud 4. mail 2026.
- 1 2 "AMP Explained: What Is Asymmetric Multiprocessing?" (Ameerika inglise). 8. aprill 2024. Vaadatud 4. mail 2026.
- ↑ "Asymmetric multiprocessing", Wikipedia (inglise), 17. juuni 2025, vaadatud 4. mail 2026
- ↑ https://ei.cs.vt.edu/~history/Parallel.html
- ↑ "Symmetric multiprocessing", Wikipedia (inglise), 4. mai 2026, vaadatud 4. mail 2026
- ↑ "Brief History-Computer Museum". museum.ipsj.or.jp. Vaadatud 5. mail 2026.
- 1 2 "Multi-core processor", Wikipedia (inglise), 7. veebruar 2026, vaadatud 5. mail 2026
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Intermation (23. aprill 2021), Intro to Cache Coherence in Symmetric Multi-Processor (SMP) Architectures, vaadatud 3. mail 2026
- ↑ "Bus snooping", Wikipedia (inglise), 30. detsember 2025, vaadatud 4. mail 2026
- 1 2 3 4 5 6 https://www.intel.de/content/dam/doc/white-paper/quick-path-interconnect-introduction-paper.pdf
- ↑ "Snoop Filters in Coherent NoC Systems: Types, Trade‑Offs, & Directory-Based Design". Arteris (Ameerika inglise). Vaadatud 4. mail 2026.
- 1 2 3 4 "Symmetric Multi-Processing — The Linux Kernel documentation". linux-kernel-labs.github.io. Vaadatud 4. mail 2026.
- 1 2 "- YouTube". www.youtube.com. Vaadatud 4. mail 2026.
- ↑ Ohland, Louis. "ASMP vs SMP". Ardent Tool of Capitalism. Vaadatud 5. mail 2026.
- ↑ "What Is Symmetric Multiprocessing? | Everpure | Everpure (formerly Pure Storage)". www.purestorage.com (Briti inglise). Vaadatud 4. mail 2026.
- ↑ "Heterogeneous Multiprocessor - an overview | ScienceDirect Topics". www.sciencedirect.com. Vaadatud 4. mail 2026.
- 1 2 "Heterogeneous computing", Wikipedia (inglise), 23. veebruar 2026, vaadatud 4. mail 2026
- ↑ Ltd, Arm. "big.LITTLE: Balancing Power Efficiency and Performance". Arm | The Architecture for the Digital World (inglise). Vaadatud 4. mail 2026.
{{netiviide}}: nähtamatu tähemärk (nulltühik) parameetris|pealkiri=positsioonil 55 (juhend) - ↑ "Apple silicon", Wikipedia (inglise), 4. mai 2026, vaadatud 4. mail 2026
- ↑ published, Aaron Klotz (22. märts 2023). "Raptor and Alder Lake Flavors of Intel's Core i5-13400F Perform About the Same". Tom's Hardware (inglise). Vaadatud 4. mail 2026.