Informatikaren 50 urte 50 teknologiatan/Nukleo anitzeko prozesadoreak

testwikitik
Nabigaziora joan Bilaketara joan
Bi nukleoko prozesadore baten eskema generikoa, non nukleo bakoitzak L1 mailako cache memoria lokala duen eta L2 mailako cache partekatua.

Nukleo anitzeko prozesadorea zirkuitu integratu bakarrean prozesurako unitate bat baino gehiago dituen mikroprozesadorea da. Nukleo bakoitzak programako agindu arruntak (aritmetikoak, memoriakoak...) exekuta ditzake prozesatzeko unitate zentral sinple baten antzera (PUZ ingelesez: CPU. Central Processing Unit[1]). Exekutatu nahi diren programek multithreading-a edo paralelismoa onartzen badute, nukleo bat baino gehiago izateak, aginduak aldi berean exekutatzeko aukera ematen du eta horrela azkartzen da programaren exekuzioa[2]. Gaur egungo konputagailu pertsonal guztiek nukleo anitzeko prozesadoreak dituzte. Adibidez, Intel Core Ultra 9 290K Plus prozesadorak 24 nukleo ditu, eta AMDren Ryzen 9-ak, berriz, 16. Gama altuko konputagailu pertsonalen artean, AMDren Threadripper PRO 7995WX-ak 96 nukleo ditu, baina horI aurrekoa baino 20 aldiz garestiagoa da.

Nukleo bakoitzak exekuzio-unitateak (UAL, FPU[3]), erregistroak eta programaren kontagailu propioak dituzte. Normalean, L1 eta L2 mailetako cache-ak[4] ere propioak dira, eta L3 mailakoa da partekatzen dutena nukleo guztien artean. Horri esker, nukleo bakoitza agindu ezberdin bat exekutatzen egon daiteke, izan prozesu batekoak, [5] izan prozesu ezberdinetakoak.

Orain dela gutxi arte, nukleo anitzeko prozesadoreen nukleo guztiak berdinak izaten ziren, hau da, homogeneoak. Horrela, sistema eragilearen lana errazten zen ez zuelako erabaki behar ataza bakoitza zein nukleotara bideratu. Horren adibide dira AMD Ryzen edo Intel Xeon. Gaur egun, ordea, joera bestelakoa da, eta prozesadore gehienetan nukleoak heterogeneoak dira, batzuk handiak eta potentzia handikoak eta beste batzuk txikiak baina eraginkorrak. Egiaztatu da denboraren %90ean egiten den lanak (nabigatu, musika erreproduzitu, posta...) ez duela potentzia handirik behar, eta nukleo txikiekin nahikoa dela horrela energia aurreztuz. Lan astunak egin behar direnean (konpilatu, bideo-jokoak...), aldiz, nukleo handiak jartzen dira martxan prozesadorearen errendimendua hobetzeko.

Terminologia

Badira nukleo anitzeko prozesadoreekin nahasgarri suertatzen diren beste kontzeptu batzuk, hala nola multiprozesadoreak eta multikonputagailuak. Bakoitzaren ezaugarri nagusiak dituzu ondoren:

Nukleo anitzeko prozesadoreak txip bakarrean hainbat nukleo ditu. Bakoitzak bere cachea dauka, baina denek sistemaren memoria nagusia, eta gehienetan L3 mailako cachea, partekatzen dute. Haien artean komunikazioa oso azkarra da. Adibidez 8 nukleoko Intel Core i7 prozesadorea.[6]

Multiprozesadoreak hainbat prozesadore ditu, eta horietako bakoitza nukleo anitzekoa izan daiteke. Prozesadoreek, memoria partekatzen dute haien artean informazioa trukatzeko[7]. Adibidez, 192 nukleoko bi AMD EPYC 9965 prozesadore dituen zerbitzari bat.[8]

Multikonputagailua sare bidez konektatutako konputagailu multzoa da. Makina bakoitzak bere memoria du, beraz, memoria banatutako sistema da, eta haien arteko komunikazioa mezu trukeen bidez egiten da. Adibidez, klusterrak, superkonputagailuak...

Nukleo anitzeko prozesadorearen, multiprozesadorearen eta multikonputagailuaren eskemak.
Nukleo anitzeko prozesadorearen, multiprozesadorearen eta multikonputagailuaren eskemak.

Laburbilduz, multikonputagailu baten makina bakoitza multiprozesadorea izan daiteke eta horietako bakoitza nukleo anitzekoa.

Azpiko taulak hiru eredu horien ezaugarri ohikoenak jasotzen ditu:

Ezaugarriak Ziklo anitzeko prozesadoreak Multiprozesadoreak Multikonputagailuak
Txip kopurua 1 Batzuk Konputagailu batzuk
Memoria Partekatua Partekatua Banatua
Komunikazioa Txip barnean Busa/partekatua Sarea/mezuak
Eskala Txikia Ertaina Handia
Programazioa Hariak, OpenMP Hariak, OpenMP MPI

Artikulu honetan, “nukleo anitzeko prozesadoreak” terminoa, zirkuitu integratu bakarrean fabrikatutako PUZak adierazteko erabiltzen da. Aparteko zirkuitu fisikoetan fabrikatutako PUZak adierazteko ordea, multi-PUZ da batzuetan erabiltzen den terminoa (multi-CPU ingelesez). Goian aipatu den multiprozesadorea multi-PUZ sistema bat da, baina baita ere zentzu zabalean hartuta, multikonputagailua multi-PUZ bat da.

Testu ebakia: Amdahl-en legea

Amdahl-en legea: grafikoak prozesadore kopuruaren araberako azelerazio-faktorea erakusten du. Amdahl-en legearen arabera, prozesadore kopuru infinituarekin ere, hobekuntza paralelizatu ezin den zatiak mugatzen du.

Nukleo anitzeko prozesadore baten errendimendu-hobekuntza oso lotuta dago erabiltzen diren algoritmoekin, zehazki, paraleloan exekutatu daitezkeen programa-zatien menpe egongo da. Kasurik onenean lor daiteken azelerazio-faktorea nukleo kopuruaren parekoa izango da, hau da, aplikazio bat nukleo bakar batean exekutatzeko behar den denbora t bada, k nukleo dituen prozesadore batean aplikazio horrek t/k denbora beharko du, beraz, k aldiz azkarrago exekutatuko da. Hala ere, Amdahl-en legeak erakusten duen bezala, oso zaila da horrelako azelerazio-faktore handiak lortzea[9]. Lanaren %100 paralelizagarria balitz azelerazio-faktorea prozesadore kopuruarekiko lineala izango litzateke, hau da, 4 prozesadore izanik, 4 aldiz azkarrago exekutatuko genuke, baina lanaren %90 balitz paralelizagarria ez genuke 10 aldiz baino azkarrago exekutatuko nahiz eta nukleo kopurua handitu. Eta lanaren %50a bakarrik balitz paralelizagarria, azelerazio-faktorea ez litzateke 2 baino handiago inoiz izango.

Azelerazio-faktorea kalkulatzeko erabiltzen den formula honako hau da: af=P/(f+(1−f)P), non P nukleo kopurua den eta f lanaren frakzio paralelizagarria. P infinitoa denean, af=1/(1−f).

Erreferentziak

Txantiloi:Erreferentzia zerrenda