Bėdos su kelių branduolių kompiuteriais

Šiuolaikiniai aukščiausios klasės kompiuteriai turi dviejų branduolių procesorius: du skaičiavimo blokus, kurie vienu metu gali atlikti atskiras užduotis. O kitais metais pagrindiniai lustų gamintojai „Intel“ ir AMD išleis keturių branduolių sistemas. Nors teoriškai keli procesoriai yra greitesni nei vienas branduolys, rašyti programinę įrangą, kuri naudojasi daugybe procesorių (užduotis, vadinama lygiagrečiu programavimu), yra labai sunku.





Tačiau naujausi MIT tyrimai galėtų palengvinti lygiagretųjį programavimą ir galiausiai padėti išlaikyti asmeninio kompiuterio našumą. Tyrėjai siūlo naują skaičiavimo sistemą, kuri apjungia specializuotas programinės įrangos instrukcijas ir kelių branduolių aparatinės įrangos modifikacijas, kurios leistų programuotojams rašyti programinę įrangą, nesusidurdami su kai kuriomis varginančiomis lygiagrečiojo programavimo detalėmis.

Istoriškai programinės įrangos rašymas kelių branduolių sistemoms buvo superkompiuterių pasaulio ekspertų darbas. Tačiau artėjant asmeninių superkompiuterių amžiui, vidutiniai programuotojai taip pat turi mokėti rašyti programinę įrangą turėdami omenyje kelis branduolius.

Tai baisus dalykas, sako Krste Asanovič MIT elektros inžinerijos ir informatikos profesorius, nes dauguma to niekada nedarė ir tai padaryti gana sunku. Asanovičius ir jo kolegos sprendžia vieną iš pagrindinių iššūkių, su kuriais susiduria programuotojai, bandydami rašyti programinę įrangą, kuri efektyviai veiktų kelių branduolių sistemose: koordinuoti kelias užduotis, vykdomas atskiruose branduoliuose taip, kad sistema nesustrigtų. .



Kai lygiagrečiai sujungiama programa, pvz., „Microsoft Outlook“ arba vaizdo grotuvas, tam tikros užduotys paskirstomos procesoriams. Tačiau dažnai šios atskiros užduotys turi būti įtrauktos į bendrinamą atminties talpyklą, kad būtų galima pasiekti duomenis. Kai viena operacija pasiekia atmintį, o kita operacija turi pasiekti tą pačią atminties dalį, o tinkamos apsaugos priemonės nėra įdiegtos, sistema gali sugesti. Tai galima palyginti su pora, turinčia bendrą einamąją sąskaitą su ribotomis lėšomis, vienu metu išrašant čekius ir netyčia pervedant iš sąskaitos.

Standartinis lygiagretus programavimas reikalauja, kad programuotojas numatytų šias vienalaikes veiklas ir įsitikintų, kad kai tik tam tikra veikla pradeda prieiti prie atminties, ji užrakina kitas veiklas, todėl jos laukia, kol bus baigta operacija.

Tinkamai įdiegus, užraktai pagreitina lygiagrečias sistemas, tačiau jas pritaikyti praktikoje yra sudėtinga, sako Jimas Larusas, „Microsoft“ tyrimų srities vadovas. Pavyzdžiui, jis paaiškina, kad dvi skirtingos programos gali vienu metu gauti užraktus, todėl jos verčia laukti viena kitos. Larusas sako, kad jei trečioji šalis neįsitrauktų į aklavietę, paraiškos liktų užšaldytos.




MIT mokslininkai tai apeina naudodami metodą, vadinamą transakcine atmintimi, kuri per pastaruosius penkerius metus smarkiai išaugo, sako Asanovic. Operacijų atmintis koordinuoja programinės įrangos operacijas, kad programuotojams nereikėtų to įrašyti į savo programas. Tai iš tikrųjų leidžia daugeliui operacijų dalytis ta pačia atmintimi tuo pačiu metu. Kai operacija baigta, sistema patikrina, ar kitos operacijos atmintyje nepadarė pakeitimų, kurie trukdytų pirmosios operacijos rezultatui. Jei jie turi, tada operacija vykdoma iš naujo, kol pavyks.

Nors operacijų atmintis kai kuriais atvejais veikia, ji vis tiek nėra tobula, aiškina Asanovičius. Dažniausiai operacijos yra mažos, o fiksuotas aparatinės įrangos atminties dydis gali greitai su jomis susidoroti. Tačiau, anot jo, kartais operacijos reikalauja daugiau atminties nei turima fiksuota suma, o kai taip nutinka, sistema sugenda. Asanovičius teigia, kad prie aparatinės įrangos pridėjus nedidelę atsarginės atminties talpyklą ir pridedant programinę įrangą, kuri atpažintų, kada operacijos yra perpildytos, operacijų atminties talpa gali būti padidinta, taip sumažinant ankstesnius sistemos gedimus.

Metodas, kurį MIT tyrėjai naudoja, remiasi programinės ir aparatinės įrangos deriniu, kad operacijų atmintis būtų geresnė, teigia „Microsoft“ Larusas, ir buvo daug projektų, kurie skirtingu laipsniu remiasi programine ar technine įranga. Jis sako, kad dar neaišku, kur yra teisinga linija tarp techninės ir programinės įrangos naudojimo problemai išspręsti, tačiau mokslininkai sprendžia svarbias neišspręstas problemas programuodami kelių branduolių sistemas.

„Microsoft“, AMD, „Intel“ ir universitetai, tokie kaip MIT ir Stanfordas, investuoja į tai, kad kelių branduolių sistemas būtų lengviau programuoti. Tyrėjai ne tik tobulina operacijų atmintį, bet ir tiria geresnius lygiagrečių programų derinimo būdus ir taip pat kuria paruoštų lygiagrečių operacijų bibliotekas, kad programuotojai galėtų į programinę įrangą įjungti kodo dalis, kiekvieną kartą neištaisydami klaidų.



Šiuo metu dviejų branduolių sistemoms nėra tiek įtakos tikrai lygiagrečių programų trūkumas, kaip būsimos keturių branduolių sistemos, sako Asanovičius. Daugeliu atvejų operacinės sistemos, tokios kaip „Windows“ ir „Mac OS X“, gali efektyviai padalinti programas dviejų branduolių sistemoje. Pavyzdžiui, virusų skaitytuvas nepastebimai veikia fone viename šerdyje, o tokios programos kaip „Microsoft Word“ ar „Firefox“ veikia kitame branduolyje, netrukdant jų greičiui.

Tačiau kai kalbama apie 4, 8 ar 16 branduolių, pačias programas reikia modifikuoti, kad būtų galima sulaukti didesnio našumo. Asanovičius sako, kad operacinė atmintis nebus sidabrinė kulka, kuri palengvins šių sistemų programavimą, tačiau jis tikisi, kad tai bus būsimo lygiagrečiojo skaičiavimo modelio dalis. Tai vienas iš mechanizmų, kurie atrodo naudingi, sako jis.

paslėpti