Lygiagreti Visata

Kai 2002 m. Anwar Ghuloum pradėjo dirbti „Intel“, įmonė buvo aukščiausia tarp lustų gamintojų, daugiausia dėl to, kad tiekė procesorius, kurie veikė vis didesniu greičiu. Su „Pentium 4“ jau buvome ties trimis gigahercais, o planas numatė, kad ateityje laikrodžio greitis būtų 10 gigahercų ir didesnis“, – prisimena Ghuloum, turintis mokslų daktaro laipsnį iš Carnegie Mellon ir dabar yra vienas iš pagrindinių bendrovės inžinierių. Tais pačiais metais „Intel“ kūrėjų konferencijoje vyriausiasis technologijų pareigūnas Patas Gelsingeris pasakė: „Iki 2010 m. esame linkę sukurti 30 gigahercų, 10 nanometrų ar mažesnius įrenginius, pateikdami tera-instrukcijas. Tai yra vienas trilijonas kompiuterio instrukcijų per sekundę.





Bet Gelsingeris klydo. „Intel“ ir jos konkurentai vis dar gamina procesorius, kurių efektyvumas mažesnis nei keturi gigahercai, o maždaug penkių gigahercų greitis bent jau dabar buvo laikomas didžiausiu įmanomu silicio technologijos greičiu.

Atsinaujinančios energijos gelbėjimo linija

Ši istorija buvo mūsų 2009 m. sausio mėn. numerio dalis

  • Žr. likusią numerio dalį
  • Prenumeruoti

Neatsižvelgiama į tai, kad Moore'o įstatymas – idėja, kad tranzistorių skaičius mikroschemoje padvigubėja kas dvejus metus – buvo panaikintas. Atvirkščiai, netikėtos problemos, susijusios su šilumos generavimu ir energijos suvartojimu, praktiškai apribojo procesorių taktinį dažnį arba greitį, kuriuo jie gali vykdyti komandas. Naujos technologijos, tokios kaip spintronika (kuri naudoja vieno elektrono sukimosi kryptį duomenims koduoti) ir kvantiniai (arba tuneliniai) tranzistoriai galiausiai gali leisti kompiuteriams veikti daug kartų greičiau nei dabar, naudojant daug mažiau energijos. Tačiau iki šios technologijos pasiekimo rinkoje liko mažiausiai dešimtmetis, ir joms tektų pakeisti puslaidininkių gamybos linijas, kurių statyba kainavo dešimtis milijardų dolerių.



Taigi, norėdami išnaudoti visas turimas technologijas, lustų gamintojai laikosi kitokio požiūrio. Moore'o dėsnio numatyti papildomi tranzistoriai naudojami ne tam, kad atskiri procesoriai veiktų greičiau, o padidintų procesorių skaičių lusto viduje. Lustai su dviem procesoriais (arba branduoliais) dabar yra darbalaukio standartas, o keturių branduolių lustai vis labiau paplitę. Ilgainiui „Intel“ numato šimtus branduolių kiekviename įrenginyje.

Bet štai koks dalykas: nors aparatinės įrangos problema, susijusi su lustų perkaitimu, puikiai tinka kelių branduolių skaičiavimo aparatinės įrangos sprendimui, šis sprendimas savo ruožtu sukelia sudėtingą programinės įrangos problemą. Kaip programuojate keliems procesoriams? Anwar Ghuloum, padedamas programavimo grupių, kurioms jis vadovauja JAV ir Kinijoje, tai išsiaiškinti.

Mikroprocesorių įmonės prisiima didžiulę riziką, taikydamos kelių branduolių strategiją. Jei jie neras lengvų būdų, kaip sukurti programinę įrangą naujiems lustams, jie gali prarasti programinės įrangos kūrėjų palaikymą. Štai kodėl „Sony“ kelių branduolių „PlayStation 3“ žaidimų mašina vėlai pasirodė rinkoje ir vis dar turi mažiau žaidimų pavadinimų nei konkurentai.



Problema su siliciu
Per pirmuosius 30 mikroprocesorių kūrimo metų būdas padidinti našumą buvo gaminti lustus, kurie turėjo vis mažesnes funkcijas ir veikė vis didesniu laikrodžio dažniu. Originaliame 1977 m. Apple II kompiuteryje buvo naudojamas aštuonių bitų procesorius, kuris veikė vieno megaherco dažniu. Kompiuterių standartas šiandien yra 64 bitų lustas, veikiantis 3,6 gigahercų dažniu – 28 800 kartų greičiau. Tačiau atrodo, kad čia ši trajektorija ir baigiasi. Maždaug 2002 m. mažiausios savybės, kurias buvo galima išgraviruoti ant lusto naudojant fotolitografiją, sumažėjo iki 90 nanometrų – masto, dėl kurio nenumatyti poveikiai privertė didžiąją dalį į kiekvieną lustą pumpuojamos elektros energijos tiesiog nutekėti, šiluma, bet visiškai neveikia. . Tuo tarpu tranzistoriai buvo taip stipriai suspausti ant lustų, kad jų generuojama šiluma negalėjo būti sugerta ir nunešta. Kai laikrodžio greitis pasieks penkis gigahertus, lustų gamintojai suprato, kad lustai taip įkais, kad be sudėtingų aušinimo sistemų silicis, iš kurio jie buvo pagaminti, išsilydys. Pramonei reikėjo kitokio būdo našumui pagerinti.

Dėl sudėtingų konstrukcijų, kurių dabar reikia didelės spartos vieno branduolio lustams, keli branduoliai gali tiekti tą patį apdorojimo galią ir sunaudoti mažiau elektros energijos. Mažiau elektros energijos gamina mažiau šilumos. Be to, naudojant kelis branduolius išsklaido bet kokia šiluma.

Tačiau dauguma kompiuterių programų nebuvo sukurtos atsižvelgiant į kelis branduolius. Jų instrukcijos vykdomos tiesine seka, nieko nevykstant lygiagrečiai. Jei atrodo, kad jūsų kompiuteris vienu metu atlieka daugiau nei vieną dalyką, taip yra todėl, kad procesorius perjungia veiklą greičiau, nei galite suprasti. Taigi lengviausias būdas naudoti kelis branduolius buvo darbo pasidalijimas, pavyzdžiui, operacinės sistemos paleidimas viename branduolyje, o programa kitame. Tam nereikia visiškai naujo programavimo modelio ir jis gali būti tinkamas šiuolaikiniams lustams, kurie turi du ar keturis branduolius. Bet ką daryti rytojaus, kuris gali turėti 64 ar daugiau branduolių?



Senų darbų peržiūra
Laimei, sako Harvardo universiteto kompiuterių mokslo ir taikomosios matematikos profesorius Leslie Valiant, paralelizmo pagrindai buvo sukurti prieš dešimtmečius didelio našumo skaičiavimo srityje, ty superkompiuteriuose. Dabar iššūkis, sako Valiant, yra rasti būdą, kaip tą seną darbą padaryti naudingu.

Superkompiuteriai, įkvėpę kelių branduolių skaičiavimą, buvo antrosios kartos įrenginiai devintajame dešimtmetyje, kuriuos gamino tokios kompanijos kaip Thinking Machines ir Kendall Square Research. Tie kompiuteriai naudojo šimtus ar net tūkstančius procesorių, veikė juos lygiagrečiai. Kai kuriuos užsakė JAV gynybos pažangių tyrimų projektų agentūra kaip pigesnę Cray superkompiuterių alternatyvą. Pamokos, išmoktos programuojant šiuos kompiuterius, yra vadovas, kaip šiandien atlikti kelių branduolių programavimą. Taigi „Grand Theft Auto“ netrukus gali pasinaudoti programinės įrangos tyrimais, atliktais prieš du dešimtmečius, siekiant padėti sukurti vandenilines bombas.

Devintajame dešimtmetyje tapo aišku, kad pagrindinė lygiagretaus skaičiavimo problema yra tokia: sunku išardyti programinę įrangą, kad ją galėtų lygiagrečiai apdoroti šimtai procesorių, o vėliau ją sujungti tinkama seka, neleidžiant numatytą rezultatą sugadinti arba prarasti. Kompiuterių mokslininkai išsiaiškino, kad nors kai kurias problemas galima lengvai sulyginti, kitų – ne. Net tada, kai problemos gali būti lygiagrečios, rezultatai vis tiek gali būti grąžinti netinkamai, taip vadinama lenktynių sąlyga. Įsivaizduokite dvi lygiagrečiai vykdomas operacijas, iš kurių viena turi būti baigta anksčiau už kitą, kad bendras rezultatas būtų teisingas. Kaip užtikrinti, kad lenktynes ​​laimėtų teisingasis? Dabar įsivaizduokite du tūkstančius ar du milijonus tokių procesų.



Iš šio ankstesnio darbo didelio našumo skaičiavimo srityje sužinojome, kad yra problemų, kurios gali būti lygiagrečios, tačiau lygiagrečias programas nėra lengva rašyti, sako Marc Snir, Universal Parallel Computing Research Center (UPCRC) direktorius. Ilinojaus universitete Urbana-Champaign. Paprastai programuotojai naudoja specializuotas programavimo kalbas ir įrankius, kad parašytų kompiuterio instrukcijas žmonėms lengviau suprantamomis sąvokomis nei dvejetainio kodo 1 ir 0. Tačiau tos kalbos buvo sukurtos taip, kad pavaizduotų tiesines operacijų sekas; Sunku organizuoti tūkstančius lygiagrečių procesų naudojant linijinę komandų seriją. Norint sukurti lygiagrečias programas nuo nulio, reikia kalbų, kurios leistų programuotojams rašyti kodą negalvojant, kaip jį padaryti lygiagrečiai – programuoti kaip įprasta, o programinė įranga sugalvoja, kaip efektyviai paskirstyti instrukcijas procesoriams. Dar nėra gerų įrankių, kaip paslėpti lygiagretumą arba padaryti jį akivaizdų [kaip tai pasiekti], sako Snir.

Ryškios šviesos: 1987 m. Thinking Machines išleido savo superkompiuterį CM-2 (aukščiau), kuriame lygiagrečiai veikė 64 000 procesorių. 1994 metais įmonė paskelbė apie bankrotą, tačiau jos įtaka kompiuterijai buvo reikšminga.

Siekdamos padėti išspręsti tokias problemas, įmonės vėl paragino aptarnauti kai kuriuos 1980-ųjų superkompiuterių žilabarzdžius. Pavyzdžiui, Davidas Kuckas yra Ilinojaus universiteto profesorius emeritas, gerai žinomas kaip lygiagretaus programavimo įrankių kūrėjas. Dabar jis dirba su kelių branduolių programavimu Intel. Taip elgiasi visa komanda, pasamdyta iš buvusios skaitmeninės įrangos korporacijos; Ankstesniame profesiniame gyvenime ji sukūrė „Digital“ įdiegtą pranešimų perdavimo sąsają (MPI), kuri šiandien yra dominuojantis kelių mašinų superkompiuterių programinės įrangos standartas.

Tam tikra prasme šiems seniems žaidėjams sekasi lengviau nei praeitą kartą. Taip yra todėl, kad daugelis šiuolaikinių kelių branduolių programų labai skiriasi nuo tų, kurias įsivaizduoja legendinis pagrindinio kompiuterio dizaineris Gene'as Amdahlas, kuris teigė, kad greitį, pasiekiamą naudojant kelis procesorius, riboja tam tikros programos lygiagretumo laipsnis.

Kompiuteriai tvarko didesnius duomenų kiekius nei bet kada anksčiau, tačiau jų apdorojimo užduotys taip idealiai pritaikytos lygiagrečiai, kad Amdahlio dėsnio apribojimai, aprašyti 1967 m., pradeda atrodyti kaip jokie apribojimai. Paprasčiausias masiškai lygiagrečios užduoties pavyzdys yra žiaurus nežinomo slaptažodžio nustatymas, išbandant visas įmanomas simbolių kombinacijas. Galimų sprendimų padalijimas tarp 1000 procesorių gali būti 1000 kartų greitesnis. Tas pats pasakytina apie šiuolaikines daug procesorių naudojančias programas, skirtas koduoti vaizdo ir garso duomenis. Lygiagrečiai suspausti filmo kadrus yra beveik tobulai efektyvu. Tačiau jei lygiagretus apdorojimas šiandien yra lengviau naudojamas, tai nebūtinai yra daug lengviau. Kad būtų lengviau, reikės suderintų lustų gamintojų, programinės įrangos kūrėjų ir akademinių kompiuterių mokslininkų pastangų. Iš tiesų, Ilinojaus UPCRC finansuoja „Microsoft“ ir „Intel“ – dvi bendrovės, kurios turi daugiausia naudos, jei kelių branduolių kompiuterija pasisektų, ir daugiausiai nuostolių, jei nepavyktų.

Naujų įrankių išradimas
Jei programinė įranga tampa vis sudėtingesnė, tai ne tik todėl, kad į ją pridedama daugiau funkcijų; taip yra ir todėl, kad kodas yra sukurtas remiantis vis daugiau abstrakcijos sluoksnių, kurie slepia programuotojų iš tikrųjų daromų veiksmų sudėtingumą. Tai nėra paprastas išsipūtimas: programuotojams reikia abstrakcijų, kad pagrindinis dvejetainis kodas atliktų vis tobulesnį darbą, kurio mes norime. Tačiau kalbant apie rašymą lygiagretiesiems procesoriams, programuotojai naudoja tokius įrankius, kad Jamesas Larusas, „Microsoft Research“ duomenų centro ateities projekto programinės įrangos architektūros direktorius, lygina juos su žemiausio lygio ir sunkiausia kalba, kurią gali naudoti programuotojas. .

Jis sako, kad negalėtume įsivaizduoti, kad šiandienos programinės įrangos būtų galima rašyti asamblėjos kalba. Tačiau kažkodėl manome, kad galime parašyti lygiagrečią vienodo sudėtingumo programinę įrangą su naujais ir svarbiais kūriniais, parašytais lygiagrečia surinkimo kalba. Mes negalime.

Štai kodėl „Microsoft“ kuo greičiau išleidžia lygiagrečio programavimo įrankius. Pavyzdžiui, F# yra lygiagreti „Microsoft“ bendrosios paskirties ML programavimo kalbos versija. Tai ne tik sulygina tam tikras funkcijas, bet ir neleidžia joms netinkamai sąveikauti, todėl lygiagrečią programinę įrangą tampa lengviau rašyti.

Tuo tarpu „Intel“ vieną savaitę per mėnesį siunčia „Ghuloum“ į užsienį pasikalbėti su programinės įrangos kūrėjais apie kelių branduolių architektūrą ir lygiagrečio programavimo modelius. Laikomės filosofijos, kad lygiagretaus programavimo „problema“ nebus išspręsta per ateinančius metus ar dvejus ir reikės daug laipsniškų patobulinimų – ir nedidelio skaičiaus šuolių – esamas kalbas, sako Ghuloum. Taip pat esu linkęs manyti, kad mes negalime to padaryti vakuume; tai yra, be reikšmingų programuotojų atsiliepimų, neabejotinai baigsime tam tikru būdu neteisingai.

Tiek komercinėje, tiek atvirojo kodo rinkose kitos naujos kalbos ir įrankiai išnaudoja kelių branduolių apdorojimo galią arba užmaskuoja jo sudėtingumą. Tarp jų yra „Google“ „MapReduce“ sistema, kuri palengvina lygiagrečius skaičiavimus per kompiuterių grupes, ir „Hadoop“, atvirojo kodo „MapReduce“ diegimas, galintis platinti programas tūkstančiuose mazgų. Naujos programavimo kalbos, tokios kaip Clojure ir Erlang, buvo sukurtos lygiagrečiam skaičiavimui. Populiari Facebook pokalbių programa buvo parašyta iš dalies erlangu.

Tuo tarpu MIT spinoffas Cilk Arts gali suskaidyti programas, parašytas nustatyta kalba C++ į gijas, kurios gali būti vykdomos lygiagrečiai keliuose branduoliuose. Sent Luise įsikūrusi Appistry teigia, kad jos įmonė „Enterprise Application Fabric“ automatiškai platina programas, skirtas Microsoft .Net programavimo sistemai tūkstančiams serverių, nereikalaujant programišiams pakeisti nė vienos pradinio kodo eilutės.

Daugiagyslių skaičiavimų ribos

Lygiai taip pat kaip „Intel“ svajonė apie 10 ir 30 gigahercų lustus užleido vietą kelių branduolių skaičiavimui, tačiau pati kelių branduolių gali egzistuoti kelerius metus, o ne dešimtmečius. Lygiagrečių sistemų efektyvumas mažėja su kiekvienu pridedamu procesoriumi, nes branduoliai varžosi dėl tų pačių duomenų; ateis taškas, kai pridėjus papildomą šerdį prie lusto jis iš tikrųjų sulėtins. Tai gali nustatyti praktinę kelių branduolių strategijos ribą dar prieš pradedant pirkti šimto branduolių kompiuterius.

Vis dėlto ar tai svarbu? Nors gali būti programų, kurioms reikia daugelio branduolių galios, dauguma žmonių tų programų nenaudoja. Išskyrus užkietėjusius žaidėjus, nedaugelis žmonių skundžiasi, kad jų kompiuteriai yra per lėti. Tiesą sakant, „Microsoft“ pabrėžė, kad „Windows 7“, problemų turinčios „Windows Vista“ įpėdinė, naudos mažiau apdorojimo galios ir atminties nei „Vista“ – tai būtina dėl mažesnės galios mobiliųjų kompiuterių platformų populiarumo ir numatomos kompiuterių programų perkėlimo į Internetiniai serveriai. Cinikas gali pasakyti, kad nuolat didėjančios apdorojimo galios siekis yra griežtai komercinis – puslaidininkių ir kompiuterių įmonėms, programinės įrangos pardavėjams ir mobiliųjų telefonų gamintojams reikia, kad pirktume naujus įrenginius.

Taigi, kas yra neigiama, jei kelių branduolių skaičiavimas nepavyksta? Koks gali būti poveikis mūsų kultūrai, jei pasirinksime techninį zigą, kuris turėjo būti smailus ir staiga negalėsime panaudoti visų 64 procesoriaus branduolių būsimuose nešiojamuosiuose kompiuteriuose?

Nekantrauju! sako Steve'as Wozniakas, „Apple II“ išradėjas. Moore'o įstatymo panaikinimas sukurtų programinės įrangos kūrimo renesansą, teigia jis. Tik tada pagaliau galėsime sukurti programinę įrangą, kuri veiks stabilioje ir patvarioje platformoje.

Mokyklose, sako Woz, stalo tarnavimo laikas yra 25 metai, vadovėlio - 10 metų, o kompiuterio - treji metai. Kurį iš šių įrenginių įsigyti ir eksploatuoti kainuoja brangiausiai? Kodėl, žinoma, kompiuteris. Kuris turi likutinę vertę, kai pasibaigia jo naudojimo laikas? Ne kompiuteris – jo išmetimas kainuoja. Bent jau knygas galima deginti dėl šilumos. Kol technologijos nesulėtės pakankamai, kad kompiuterinės platformos veiktų pakankamai ilgai, kad būtų ekonomiškai gyvybingos, jos nebus iš tikrųjų būdingos švietimui. Taigi Moore'o įstatymo pabaiga, nors ir atrodo blogai, iš tikrųjų būtų labai gera.

Robertas X. Cringely apie technologijas rašė 30 metų. Jis yra autorius Atsitiktinės imperijos: kaip Silicio slėnio berniukai uždirba milijonus, kovoja su užsienio konkurencija ir vis dar negali susitarti .

paslėpti