Procesorių branduoliai: kodėl skiriasi jų skaičius ir kaip jie lemia bendrą procesoriaus našumą  ()

Kol procesoriuose būdavo vienas branduolys, viskas buvo kur kas aiškiau – koks jau yra procesoriaus dažnis, tokiu greičiu jis ir sugeba apdoroti duomenis. Kuo aukštesnis dažnis, tuo greičiau apdorojami duomenys.


Prisijunk prie technologijos.lt komandos!

Laisvas grafikas, uždarbis, daug įdomių veiklų. Patirtis nebūtina, reikia tik entuziazmo.

Sudomino? Užpildyk šią anketą!

Kodėl prireikė daugiau nei vieno branduolio?

Taigi, procesoriaus taktinis dažnis (clock speed) parodo, kiek procesorius gali „apdoroti“ instrukcijų per sekundę. Dažnis matuojama hercais (Hz), kompiuterių procesoriuose milijonais (megahercai – MHz), ir milijardais (gigahercai – GHz) hercų.

Skirtingo dažnio procesoriai gali būti palyginami su skirtingo greičio keliais – kuo didesnis leidžiamas greitis, tuo greičiau nukeliausite iš taško A į tašką B. Tad, kuo didesnis procesoriaus dažnis, tuo greičiau jis atliks tam tikras operacijas.

Žinoma, kuo didesniu greičiu keliausite, tuo didesnė avarijos tikimybė. Procesorių atveju, kuo didesnis dažnis, tuo labiau jis kaista. Ir nuo tam tikro dažnio jis kaista taip stipriai, kad tiesiog „iškepa“, nežiūrintį visus bandymus jį aušinti.

Taigi, kaip keliuose atsirado greičio ribojimai, tai procesorių dažnis nuo pat 2004 metų sustingo ties 4 GHz – plačiau apie tai skaitykite straipsnyje Ką reiktų žinoti apie procesorių dažnį, našumą, gamybos procesą ir „Intel“ „tick – tock" strategiją

Tad procesorių gamintojams teko ieškoti kitokių bendro procesorių našumo kėlimo, nedidinant jų dažnio būdų. Taip atsirado kelių branduolių procesoriai – fiziškai tai vienas procesorius, tačiau turintis du ar daugiau vidinių skaičiavimo įrenginių.

Kad būtų aiškiau, vėl galime paimti greitkelio pavyzdį. Jeigu dėl saugumo jau negalima padidinti greičio kelyje, tačiau pravažiuojančių automobilių tiek, kad formuojasi kamščiai, vienintelė išeitis – didinti eismo juostų skaičių. Taigi, papildomos eismo juostos kelyje atitinka papildomus branduolius procesoriuje.

Tačiau kaip papildomos eismo juostos nedidina didžiausio greičio kelyje, taip ir papildomas branduolių skaičius nedidina didžiausio procesoriaus dažnio.

Kitaip tariant, jeigu turite 2 branduolių 1.5GHz dažnio procesorių, tai nėra identiška vieno branduolio 3 GHz dažnio procesoriui.

Norint suprasti šiuos skirtumus, reiktų pasigilinti į tai, kaip kompiuteryje išnaudojami papildomi branduoliai.

Kaip kompiuteryje išnaudojami skirtingi branduoliai

Grįžkime prie greitkelio pavyzdžio. Taigi, kelyje formuojasi spūstis ir po ilgų rekonstrukcijų mums pavyko nutiesti papildomą juostą. Ar spūstys sumažės? Sumažės tuo atveju, jei dalis automobilių iš pirmos juostos persirikiuos į antrąją juostą. Jei abi juostos bus užimtos pilnai, tuomet greitkeliu pravažiuos dvigubai daugiau automobilių, nei viena juosta tuo pačiu greičiu.

Tačiau jei į antrąją juostą rikiuosis tik nedidelė dalis automobilių, o didžioji srauto dalis vis tiek judės pirmąją juosta, bendras greitkeliu pravažiuojančių automobilių srautas šiek tiek padidės, bet palyginti nedaug.

Labai panaši situacija vyksta ir procesorių atveju. Nors procesorius turi 2 ar daugiau branduolių, tai dar nereiškia, kad kompiuterio greitis paspartės dvigubai – daug kas priklauso nuo vykdomų programų sugebėjimo išnaudoti tuos du branduolius.

Įsivaizduokime situaciją, kad kompiuteryje su vieno branduolio procesoriumi paleidome programą, kuri skaičiuoja, kiek yra skaičių, kurie be liekanos dalinasi iš 6 intervale nuo 0 iki 100 milijardų. Pačiu paprasčiausiu atveju, procesorius ima po vieną skaičių ir tikrina, ar jis dalinasi, ar ne. Ir taip kantriai nuo 0 iki pat 100 milijardų. Kad ir koks greitas procesorius, toks tikrinimas užtruks gan ilgai.

Kas pasikeistų, jei tą pačią programą paleistume kompiuteryje su dviejų branduolių procesoriumi? Viskas priklausytų nuo to, kaip elgtųsi skaičiavimus vykdanti programa. Jei ji veiktų nekeisdama algoritmo, tuomet iš dviejų branduolių nebūtų jokios naudos – skaičiavimus vykdytų tik vienas branduolys, o antras nieko neveiktų. Tad bendras sistemos našumas išliktų identiškas kaip ir vieno branduolio atveju. Panašiai kaip su greitkeliu – koks skirtumas, kad yra antra juosta, jei visi važiuoja viena.

Tad, jei programa nemoka išnaudoti procesoriaus branduolių, nėra jokios skirtumo, ar yra vienas branduolys, ar 2, ar 4 ar net 8.

O kas keičiasi, jei programa protinga ir moka išnaudoti du branduolius? Pavyzdžiui, vienam branduoliui paveda skaičių tikrinimą nuo 0 iki 50 milijardų, o kitam – nuo 50 milijardų iki 100 milijardų? Atskiro skaičiaus tikrinimas užtruks tiek pat laiko, tačiau vienu metu bus tikrinami du skirtingi skaičiai. Taigi, rezultatą gausite dvigubai greičiau.

Kokią galima padaryti išvadą? Jei branduoliai yra du ar daugiau, realų sistemos greitį nulems programinė įranga.

Kas tai yra „single-thread“ir „multi-thread“ sparta

Štai todėl vertinant realų procesorių našumą, reikia tiksliai žinoti, kas bus vertinama – ar procesoriaus greitis vykdant vienos gijos programą, ar vykdant kelių gijų programą. Šiems skirtumams apibūdinti naudojami angliški terminai “single-thread“, bei “multi-thread“. Tad vienos gijos programa (“single-thread“), veikdama kelių branduolių procesoriuje, negaus jokio pranašumo, o kelių gijų (“multi-thread“) programa – gaus.

Dar viena bėda, kad būna tam tikros operacijos, kurių tiesiog neįmanoma išskaidyti lygiagrečiai. Įsivaizduokime, jog platinant greitkelį atsitrenkėme į kalną, pro kurį iškastas tunelis ir štai šiame tunelyje telpa tik viena kelio juosta. Išplatinti tunelį būtų pernelyg brangu, tad kelią platiname iki tunelio ir už jo. Tad dviejų eismo srautui privažiavus tunelį teks rikiuotis į vieną juostą ir kelyje vėl kamštis.

Pasidalinkite su draugais
(43)
(3)
(40)

Komentarai ()

Susijusios žymos: