Daudzkodolu procesors — kas tas ir, veidi un darbības princips
Daudzkodolu procesors ir datora procesors ar divām vai vairākām sekcijām — t.s. kodoliem. Katra mikroshēmas sekcija izpilda instrukcijas tā, it kā tā būtu atsevišķs dators; faktiski visi kodoli atrodas vienā mikroshēmā un katrs kodols lielākoties izskatās un darbojas līdzīgi kā citi. Rezultātā vienā mikroshēmā darbojas vairāki gandrīz neatkarīgi kodoli, kas var veikt uzdevumus paralēli. Divkodolu procesors ir daudzkodolu procesors ar diviem neatkarīgiem mikroprocesoriem, četrkodolu — ar četriem utt. Kā var spriest pēc nosaukuma, bieži procesora apzīmējumā tiek norādīts mikroprocesoru jeb kodolu skaits mikroshēmā.
Veidi un arhitektūras
Daudzkodolu procesori var atšķirties pēc kodolu skaita, arhitektūras un to, kā tiek organizēta atmiņa un kešatmiņa. Biežākie veidi:
- Divkodolu (dual-core) — 2 kodoli, labāk darbam ar vairākiem vienkāršiem uzdevumiem vienlaikus.
- Četrkodolu (quad-core) — 4 kodoli, plaši izplatīts gan personālajos datoros, gan portatīvajos datoros.
- Seš- vai astoņkodolu un vairāk — mūsdienu CPU mobilajās ierīcēs, galddatoros un serveros var būt no 6 līdz 16 un vairāk kodoli; serveros un speciālajos risinājumos kodolu skaits var sasniegt desmitiem vai simtiem.
- Heterogēna arhitektūra (piem., big.LITTLE) — kombinē jaudīgākus un energoefektīvākus kodolus, kas ļauj labāk balansēt veiktspēju un enerģijas patēriņu.
- SMT vai Hyper-Threading — daži procesori atbalsta vairākus pavedienus (threads) uz vienu fizisku kodolu, ļaujot efektīvāk izmantot kodolu resursus.
Darbības princips
Daudzkodolu procesora darbība balstās uz paralēlu aprēķinu veikšanu. Galvenie soļi un komponentes, kas to nodrošina:
- Operētājsistēmas plānotājs (scheduler) sadala programmas pavedienus un procesus starp pieejamajiem kodoliem, nosakot, kurš kodols veiks konkrētu uzdevumu.
- Kešatmiņa — katram kodolam parasti ir sava L1 kešatmiņa; var būt arī koplietojamas L2 vai L3 kešatmiņas. Kešatmiņas stratēģija ietekmē veiktspēju un datu pieejamību.
- Atmiņas piekļuves un savietojamība — kodoliem jāsinhronizē datus, lai izvairītos no konfliktēm; šim nolūkam izmanto keškoherences protokolus un sinhronizācijas mehānismus (piem., låks, semafori).
- Paralelizācijas līmeņi — programmas var tikt paralelizētas līmenī pavedieni, procesi vai SIMD instrukcijas; cik lielā mērā programmu iespējams paralelizēt, nosaka tās efektivitāti daudzkodolu vidē.
Priekšrocības
- Labāka veiktspēja vairākuzdevumu režīmā — vairāki programmu pavedieni var darboties vienlaikus.
- Augstāka efektivitāte paralēlos uzdevumos — piemērotas lietotnes (video apstrāde, 3D rendering, zinātniskie aprēķini) var ievērojami paātrināties.
- Enerģijas un siltuma pārvaldība — zemāks takts ātrums uz vienu kodolu, bet ar vairākiem kodoliem var sasniegt augstāku kopējo veiktspēju ar samērīgāku enerģijas patēriņu.
Izaicinājumi un ierobežojumi
- Programmatūras paralelizācija — ne visas programmas labi mērogojas ar papildu kodoliem. Amdahla likums nosaka, cik lielā mērā iespējams paātrināt uzdevumu, paralelizējot to.
- Sinhronizācijas un keškonflikti — pavedieni, kas piekļūst tiem pašiem datiem, var radīt kavēšanos un palēninājumu.
- Atmiņas joslas platums un I/O — ja atmiņas piekļuves kļūst par saiti, pievienojot kodolus nav lielas jēgas bez atbilstošas atmiņas infrastruktūras.
- Kompleksitāte dizainā un testēšanā — vairāk kodolu nozīmē sarežģītāku mikroshēmas arhitektūru, iekšējo kešatmiņu koordināciju un termisko vadību.
Praktiska nozīme un lietojumi
Daudzkodolu procesori ir plaši izplatīti visos datora veidos — no viedtālruņiem un portatīvajiem datoriem līdz galddatoriem un serveriem. Tie nodrošina labāku multitaskingu, ātrāku datu apstrādi multimediju un profesionālās programmatūras darbībā un ļauj efektīvi izmantot paralēlas skaitļošanas iespējas mūsdienu lietotnēm. Turklāt specializēti “many-core” risinājumi (piem., GPU arhitektūras) tiek izmantoti augstas paralēlās darbības uzdevumos, piemēram, mašīnmācībā un zinātniskos aprēķinos.
Kopsavilkums
Daudzkodolu procesors ir mikroshēma ar vairākiem neatkarīgiem kodoliem, kas darbojas paralēli, nodrošinot labāku veiktspēju un efektivitāti daudzos uzdevumos. Būtiski ir gan procesora arhitektūra, gan programmatūras spēja izmantot vairākus kodolus, lai sasniegtu optimālu rezultātu.
Vēsture
Līdz 2005. gadam vienkodolu procesoru skaits pārsniedza daudzkodolu procesoru skaitu.[] Iepriekšējos gados daudzkodolu risinājumi tika izmantoti tikai atsevišķos gadījumos. Parastais veids, kā padarīt datoru ātrāku, bija palielināt taktātrumu. Taču pie frekvences ap 4 GHz procesors pārāk sakarst un patērē daudz elektroenerģijas. Tas bija brīdis, kad daudzkodolu procesori kļuva svarīgāki. Tāpēc palielinājās pieprasījums pēc daudzkodolu procesoriem. 2006. gada otrajā pusē labākie procesori bija divkodolu procesori. Kopš 2006. gada attīstība ir turpinājusies, jaunie procesori iegūst četrus vai vairāk neatkarīgus mikroprocesorus. Mūsdienās vienkodolu procesori netiek izmantoti jaunos personālajos datoros, taču tie joprojām ir populāri iegultajās sistēmās.
Priekšrocības
- Ja datorā ir daudzkodolu procesors, tas nozīmē, ka dažas programmas darbosies ātrāk.
- Ieslēdzot datoru, tas var neuzkarst tik ļoti.
- Datoram ir nepieciešams mazāk enerģijas, jo tas var izslēgt dažas sadaļas, ja tās nav nepieciešamas.
- Datoram var pievienot vairākas funkcijas.
- Signāli starp dažādiem procesoru procesoriem pārvietojas īsākos attālumos, tāpēc tie mazāk degradējas.
Trūkumi
- Tie nedarbojas ar divreiz lielāku ātrumu nekā parasts procesors. To ātrums ir tikai par 60-80 % lielāks.
- Datora darbības ātrums ir atkarīgs no tā, ko lietotājs ar to dara.
- Tie maksā vairāk nekā vienkodolu procesori.
- Tos ir grūtāk termiski pārvaldīt nekā zemāka blīvuma vienkodolu procesorus.
- Ne visas operētājsistēmas atbalsta vairāk nekā vienu kodolu.
- Operētājsistēmas, kas kompilētas daudzkodolu procesoram, darbosies nedaudz lēnāk vienkodolu procesorā.
Operētājsistēmas atbalsts
Daudzkodolu procesorus atbalsta šādas operētājsistēmas
Secinājums
Turpmākajos gados tendence būs arvien vairāk izmantot daudzkodolu procesorus. Galvenais iemesls ir tas, ka tie ir ātrāki par vienkodolu procesoriem un tos var vēl uzlabot. Tomēr nākotnē joprojām būs daži lietojumi, kuros tiks izmantoti vienkodolu procesori, jo ne katrai sistēmai ir nepieciešams ātrs procesors.