Paralēlā pasaule

Kad Anwar Ghuloum 2002. gadā sāka strādāt Intel, uzņēmums bija augstākais mikroshēmu ražotāju vidū, galvenokārt tāpēc, ka tas piegādāja procesorus, kas darbojās ar lielāku un lielāku ātrumu. Mēs jau bijām trīs gigaherci ar Pentium 4, un ceļvedis paredzēja turpmākos pulksteņa ātrumus 10 gigaherci un vairāk, atceras Ghuloum, kuram ir Karnegija Melona doktora grāds un kurš tagad ir viens no uzņēmuma galvenajiem inženieriem. Tajā pašā gadā Intel izstrādātāju konferencē galvenais tehnoloģiju speciālists Pats Gelsingers sacīja: “Līdz 2010. gadam mēs esam ceļā uz 30 gigahercu ierīcēm, kuru izmērs ir 10 nanometri vai mazāks, nodrošinot tera-norādījumus par veiktspēju. Tas ir viens triljons datora instrukciju sekundē.





Bet Gelsingers kļūdījās. Intel un tā konkurenti joprojām ražo procesorus, kuru maksimālais ātrums ir mazāks par četriem gigaherciem, un kaut kas ap pieciem gigaherciem vismaz šobrīd tiek uzskatīts par maksimālo iespējamo ātrumu silīcija tehnoloģijai.

Dzīves līnija atjaunojamai enerģijai

Šis stāsts bija daļa no mūsu 2009. gada janvāra numura

  • Skatiet pārējo izdevuma daļu
  • Abonēt

Nav tā, it kā Mūra likums — ideja, ka tranzistoru skaits mikroshēmā dubultojas ik pēc diviem gadiem — būtu atcelts. Drīzāk negaidītas problēmas ar siltuma ražošanu un enerģijas patēriņu ir praktiski ierobežojušas procesoru takts ātrumu vai ātrumu, ar kādu tie var izpildīt norādījumus. Jaunās tehnoloģijas, piemēram, spintronika (kas izmanto viena elektrona griešanās virzienu datu kodēšanai) un kvantu (vai tunelēšanas) tranzistori, galu galā var ļaut datoriem darboties daudzkārt ātrāk nekā tagad, vienlaikus patērējot daudz mazāk enerģijas. Taču šīs tehnoloģijas ir vēl vismaz desmit gadu attālumā, lai nonāktu tirgū, un tām būtu jānomaina pusvadītāju ražošanas līnijas, kuru izbūve ir izmaksājusi desmitiem miljardu dolāru.



Tāpēc, lai maksimāli izmantotu pieejamās tehnoloģijas, mikroshēmu ražotāji izmanto citu pieeju. Papildu tranzistori, ko paredz Mūra likums, tiek izmantoti nevis, lai atsevišķi procesori darbotos ātrāk, bet gan lai palielinātu procesoru skaitu mikroshēmā. Mikroshēmas ar diviem procesoriem vai kodoliem tagad ir galddatoru standarts, un četru kodolu mikroshēmas kļūst arvien izplatītākas. Ilgtermiņā Intel paredz simtiem kodolu katrā ierīcē.

Bet šī ir lieta: lai gan aparatūras problēma, kas saistīta ar mikroshēmu pārkaršanu, ir piemērota daudzkodolu skaitļošanas aparatūras risinājumam, šis risinājums savukārt rada sarežģītu programmatūras problēmu. Kā jūs programmējat vairākiem procesoriem? Anvara Ghulūma uzdevums ir to noskaidrot, izmantojot programmēšanas grupas, kuras viņš pārvalda ASV un Ķīnā.

Mikroprocesoru uzņēmumi uzņemas milzīgu risku, pieņemot daudzkodolu stratēģiju. Ja viņi nevarēs atrast vienkāršus veidus, kā rakstīt programmatūru jaunajām mikroshēmām, viņi var zaudēt programmatūras izstrādātāju atbalstu. Šī iemesla dēļ Sony daudzkodolu PlayStation 3 spēļu mašīna tirgū tika novēlota, un tajā joprojām ir mazāk spēļu nosaukumu nekā konkurentiem.



Problēma ar silīciju
Pirmajos 30 mikroprocesoru izstrādes gados veids, kā palielināt veiktspēju, bija izveidot mikroshēmas, kurām bija mazākas un mazākas funkcijas un kuras darbojās ar arvien lielāku takts ātrumu. Sākotnējais 1977. gada Apple II dators izmantoja astoņu bitu procesoru, kas darbojās ar vienu megahercu. Mūsdienu personālo datoru standarts ir 64 bitu mikroshēma, kas darbojas ar 3,6 gigahercu frekvenci, faktiski 28 800 reizes ātrāk. Bet ar to šī trajektorija, šķiet, beidzas. Apmēram līdz 2002. gadam mazākās iezīmes, kuras varēja iegravēt mikroshēmā, izmantojot fotolitogrāfiju, bija sarukušas līdz 90 nanometriem — mērogs, kurā neparedzēti efekti izraisīja lielu katrā mikroshēmā iesūknētās elektrības daļu vienkārši noplūdi, radot siltumu, bet neveicot nekādu darbu. . Tikmēr tranzistori bija tik cieši saspiesti mikroshēmās, ka to radīto siltumu nevarēja absorbēt un aiznest. Laikā, kad pulksteņa ātrums sasniedza piecus gigahercus, mikroshēmu ražotāji saprata, ka mikroshēmas kļūs tik karstas, ka bez sarežģītām dzesēšanas sistēmām silīcijs, no kura tie tika izgatavoti, izkusīs. Nozarei bija nepieciešams cits veids, kā uzlabot veiktspēju.

Sarežģītās konstrukcijas dēļ, kas tagad nepieciešamas ātrdarbīgām viena kodola mikroshēmām, vairāki kodoli var nodrošināt tādu pašu apstrādes jaudu, vienlaikus patērējot mazāk elektrības. Mazāk elektroenerģijas ražo mazāk siltuma. Turklāt vairāku serdeņu izmantošana izkliedē visu iespējamo siltumu.

Tomēr lielākā daļa datorprogrammu netika izstrādātas, ņemot vērā vairākus kodolus. Viņu norādījumi tiek izpildīti lineārā secībā, un nekas nenotiek paralēli. Ja šķiet, ka jūsu dators vienlaikus veic vairākas darbības, tas ir tāpēc, ka procesors pārslēdzas starp darbībām ātrāk, nekā jūs varat aptvert. Tādējādi vienkāršākais veids, kā izmantot vairākus kodolus, ir bijis, sadalot darbu, piemēram, operētājsistēmu darbinot vienā kodolā un lietojumprogrammu citā. Tam nav nepieciešams pilnīgi jauns programmēšanas modelis, un tas var darboties mūsdienu mikroshēmās, kurām ir divi vai četri kodoli. Bet kā ir ar rītdienu, kurā var būt 64 vai vairāk kodoli?



Vecā darba apskate
Par laimi, saka Leslijs Valiants, Hārvardas universitātes datorzinātņu un lietišķās matemātikas profesors, paralēlisma pamatprincipi tika izstrādāti pirms gadu desmitiem augstas veiktspējas skaitļošanas jomā, proti, ar superdatoriem. Tagad izaicinājums, saka Valiant, ir atrast veidu, kā padarīt veco darbu noderīgu.

Superdatori, kas iedvesmoja daudzkodolu skaitļošanu, bija 80. gadu otrās paaudzes ierīces, ko ražoja tādi uzņēmumi kā Thinking Machines un Kendall Square Research. Šajos datoros simtiem vai pat tūkstošiem tika izmantoti jau gatavi procesori, kas darbojās paralēli. Dažus no tiem pasūtīja ASV Aizsardzības progresīvo pētījumu projektu aģentūra kā lētāku alternatīvu Cray superdatoriem. Šo datoru programmēšanas mācības ir ceļvedis, lai mūsdienās daudzkodolu programmēšana darbotos. Tātad Grand Theft Auto drīzumā varētu gūt labumu no programmatūras izpētes, kas veikta pirms divām desmitgadēm, lai palīdzētu izstrādāt ūdeņraža bumbas.

Astoņdesmitajos gados kļuva skaidrs, ka paralēlās skaitļošanas galvenā problēma ir šāda: programmatūru ir grūti nojaukt, lai to paralēli varētu apstrādāt simtiem procesoru un pēc tam to atkal salikt kopā pareizajā secībā, neļaujot paredzēto rezultātu sabojāt vai pazaudēt. Datorzinātnieki atklāja, ka, lai gan dažas problēmas var viegli paralēli, citas nevar. Pat tad, ja problēmas varētu būt paralēlas, rezultāti joprojām var tikt atgriezti no ierindas, tā sauktajā sacensību stāvoklī. Iedomājieties, ka paralēli darbojas divas darbības, no kurām viena jāpabeidz pirms otras, lai kopējais rezultāts būtu pareizs. Kā nodrošināt, ka sacīkstēs uzvar īstais? Tagad iedomājieties divus tūkstošus vai divus miljonus šādu procesu.



Tas, ko mēs uzzinājām no šī agrākā darba augstas veiktspējas skaitļošanas jomā, ir tas, ka pastāv problēmas, kas rada paralēlismu, bet paralēlas lietojumprogrammas nav viegli rakstīt, saka Marks Snirs, Universālā paralēlās skaitļošanas pētniecības centra (UPCRC) līdzdirektors. Ilinoisas Universitāte Urbana-Champaign. Parasti programmētāji izmanto specializētas programmēšanas valodas un rīkus, lai rakstītu datora instrukcijas tādos terminos, kas cilvēkiem ir vieglāk saprotami nekā binārā koda 1. un 0. Taču šīs valodas tika izstrādātas, lai attēlotu lineāras darbību secības; ir grūti organizēt tūkstošiem paralēlu procesu, izmantojot lineāru komandu sēriju. Lai izveidotu paralēlas programmas no jauna, ir vajadzīgas valodas, kas ļauj programmētājiem rakstīt kodu, nedomājot par to, kā to padarīt paralēlu — programmēt kā parasti, kamēr programmatūra izdomā, kā efektīvi sadalīt instrukcijas procesoros. Pagaidām nav labu rīku, lai slēptu paralēlismu vai padarītu to acīmredzamu [kā to panākt], saka Snirs.

Spožas gaismas: 1987. gadā Thinking Machines izlaida savu superdatoru CM-2 (iepriekš), kurā paralēli darbojās 64 000 procesoru. Uzņēmums 1994. gadā pasludināja bankrotu, taču tā ietekme uz skaitļošanu bija ievērojama.

Lai palīdzētu atrisināt šādas problēmas, uzņēmumi atkal ir aicinājuši apkalpot dažus 80. gadu superskaitļošanas veidus. Piemēram, Deivids Kuks ir Ilinoisas Universitātes emeritētais profesors, labi pazīstams kā paralēlās programmēšanas rīku izstrādātājs. Tagad viņš strādā pie Intel daudzkodolu programmēšanas. Tā dara visa komanda, kas nolīgta no bijušās Digital Equipment Corporation; Iepriekšējā profesionālajā dzīvē tā izstrādāja Digital ziņojumu pārraides saskarnes (MPI) ieviešanu, kas ir mūsdienās dominējošais programmatūras standarts daudzmašīnu superskaitļošanai.

Savā ziņā šiem vecajiem spēlētājiem ir vieglāk nekā iepriekšējā reizē. Tas ir tāpēc, ka daudzas mūsdienu daudzkodolu lietojumprogrammas ļoti atšķiras no tām, ko iedomājies leģendārais lieldatoru dizainers Džīns Amdāls, kurš teorētiski izteicās, ka ātruma pieaugumu, kas sasniedzams, izmantojot vairākus procesorus, ierobežo tas, cik lielā mērā konkrētu programmu var paralēli.

Datori apstrādā lielākus datu apjomus nekā jebkad agrāk, taču to apstrādes uzdevumi ir tik ideāli piemēroti paralēlināšanai, ka 1967. gadā aprakstītie Amdāla likuma ierobežojumi sāk šķist nekādi. Vienkāršākais masveidā paralēla uzdevuma piemērs ir nezināmas paroles rupja spēka noteikšana, izmēģinot visas iespējamās rakstzīmju kombinācijas. Potenciālo risinājumu sadalīšana starp 1000 procesoriem var būt 1000 reižu ātrāka. Tas pats attiecas uz mūsdienu procesoru ietilpīgām lietojumprogrammām video un audio datu kodēšanai. Filmu kadru paralēla saspiešana ir gandrīz ideāli efektīva. Taču, ja paralēlo apstrādi mūsdienās ir vieglāk atrast, to ne vienmēr ir daudz vieglāk izdarīt. Lai to atvieglotu, būs jāpieliek saskaņoti mikroshēmu ražotāji, programmatūras izstrādātāji un akadēmiskie datorzinātnieki. Patiešām, Ilinoisas UPCRC finansē Microsoft un Intel — divi uzņēmumi, kas visvairāk iegūst, ja daudzkodolu skaitļošana gūst panākumus, un visvairāk zaudē, ja tā neizdodas.

Jaunu rīku izgudrošana
Ja programmatūra kļūst arvien sarežģītāka, tas nav tikai tāpēc, ka tai tiek pievienots vairāk funkciju; tas ir arī tāpēc, ka kods ir veidots uz arvien vairāk abstrakcijas slāņu, kas slēpj programmētāju patiesās darbības sarežģītību. Tas nav vienkārši uzpūšanās: programmētājiem ir vajadzīgas abstrakcijas, lai pamata binārais kods veiktu arvien progresīvāku darbu, ko mēs vēlamies. Tomēr, runājot par rakstīšanu paralēlajiem procesoriem, programmētāji izmanto tik elementārus rīkus, ka Džeimss Laruss, Microsoft Research Data Center Futures projekta programmatūras arhitektūras direktors, salīdzina tos ar zemākā līmeņa un sarežģītāko valodu, ko programmētājs var izmantot. .

Viņš saka, ka mēs nevarējām iedomāties mūsdienu programmatūras rakstīšanu montāžas valodā. Bet kāda iemesla dēļ mēs domājam, ka varam rakstīt paralēlu programmatūru ar vienādu izsmalcinātību ar jaunajām un kritiskajām daļām, kas rakstītas paralēli montāžas valodā. Mēs nevaram.

Tāpēc Microsoft pēc iespējas ātrāk izlaiž paralēlās programmēšanas rīkus. Piemēram, F# ir Microsoft universālās ML programmēšanas valodas paralēlā versija. Tas ne tikai paralizē noteiktas funkcijas, bet arī novērš to nepareizu mijiedarbību, tāpēc paralēlo programmatūru kļūst vieglāk rakstīt.

Tikmēr Intel vienu nedēļu mēnesī nosūta Ghuloum uz ārzemēm, lai runātu ar programmatūras izstrādātājiem par daudzkodolu arhitektūru un paralēlās programmēšanas modeļiem. Mēs esam pieņēmuši filozofiju, ka paralēlās programmēšanas “problēma” netiks atrisināta tuvākā gada vai divu laikā un prasīs daudzus pakāpeniskus uzlabojumus — un nelielu skaitu lēcienu — esošajās valodās, saka Ghuloum. Es arī sliecos domāt, ka mēs to nevaram izdarīt vakuumā; tas ir, bez būtiskām programmētāju atsauksmēm mēs, bez šaubām, kaut kādā veidā nonāksim pie nepareizās lietas.

Gan komerciālajā, gan atvērtā pirmkoda tirgū citas jaunas valodas un rīki izmanto daudzkodolu apstrādes jaudu vai maskē tās sarežģītību. Starp tiem ir Google MapReduce sistēma, kas atvieglo paralēlu aprēķinu veikšanu datoru kopās, un Hadoop, MapReduce atvērtā koda ieviešana, kas var izplatīt lietojumprogrammas tūkstošiem mezglu. Jaunas programmēšanas valodas, piemēram, Clojure un Erlang, jau no paša sākuma tika izstrādātas paralēlai skaitļošanai. Populārā Facebook tērzēšanas programma daļēji tika uzrakstīta erlang valodā.

Tikmēr MIT spinoff Cilk Arts var sadalīt programmas, kas rakstītas izveidotajā valodā C++, pavedienos, kurus var izpildīt paralēli vairākos kodolos. Un Sentluisā bāzētā Appistry apgalvo, ka tā Enterprise Application Fabric automātiski izplata lietojumprogrammas Microsoft .Net programmēšanas sistēmai tūkstošiem serveru, neprasot programmētājiem mainīt vienu sākotnējā koda rindiņu.

Daudzkodolu skaitļošanas ierobežojumi

Tāpat kā Intel sapnis par 10 un 30 gigahercu mikroshēmām padevās daudzkodolu skaitļošanas meklējumiem, tomēr daudzkodolu var pastāvēt vairākus gadus, nevis gadu desmitus. Paralēlo sistēmu efektivitāte samazinās ar katru pievienoto procesoru, jo kodoli sacenšas par tiem pašiem datiem; pienāks brīdis, kad papildu kodola pievienošana mikroshēmai to faktiski palēninās. Tas var noteikt praktisku ierobežojumu daudzkodolu stratēģijai ilgi pirms mēs sākam iegādāties simts kodolu datorus.

Vai tomēr tam ir nozīme? Lai gan var būt lietojumprogrammas, kurām ir nepieciešama daudzu kodolu jauda, ​​lielākā daļa cilvēku šīs lietojumprogrammas neizmanto. Izņemot stingrus spēlētājus, daži cilvēki sūdzas, ka viņu datori ir pārāk lēni. Faktiski Microsoft ir uzsvērusi, ka operētājsistēma Windows 7, problemātiskās Windows Vista pēctece, izmantos mazāk apstrādes jaudas un atmiņas nekā Vista — šī darbība ir nepieciešama mazākas jaudas mobilo skaitļošanas platformu popularitātes dēļ un paredzamā datoru lietojumprogrammu migrācija uz Interneta serveri. Ciniķis varētu teikt, ka tiekšanās pēc arvien pieaugošas apstrādes jaudas ir stingri komerciāla — ka pusvadītāju un datoru uzņēmumiem, programmatūras pārdevējiem un mobilo tālruņu ražotājiem mums ir jāiegādājas jaunas ierīces.

Tātad, kāds ir mīnuss, ja daudzkodolu skaitļošana neizdodas? Kāda ir iespējamā ietekme uz mūsu kultūru, ja mēs izvēlēsimies tehnisku zīmuli, kam vajadzēja būt zaglīgam un pēkšņi nespējam izmantot visus 64 procesora kodolus mūsu nākamajos piezīmjdatoros?

Es nevaru sagaidīt! saka Stīvs Vozņaks, Apple II izgudrotājs. Viņš apgalvo, ka Mūra likuma atcelšana radītu programmatūras izstrādes renesansi. Tikai tad mēs beidzot varēsim izveidot programmatūru, kas darbosies uz stabilas un ilgstošas ​​platformas.

Skolās, saka Vozs, galda kalpošanas laiks ir 25 gadi, mācību grāmatas - 10 gadi, bet datoram - trīs gadi. Kuras no šīm ierīcēm iegāde un ekspluatācija maksā visvairāk? Kāpēc, protams, dators. Kurai ir atlikušā vērtība, kad tā lietderīgās lietošanas laiks ir beidzies? Nevis dators — tā iznīcināšana maksā naudu. Vismaz grāmatas var sadedzināt karstumam. Kamēr tehnoloģija nebūs pietiekami palēninājusies, lai skaitļošanas platformas darbotos pietiekami ilgi, lai tās būtu ekonomiski dzīvotspējīgas, tās nebūs īsti būtiskas izglītībai. Tātad Mūra likuma beigas, lai gan tas var izskatīties slikti, patiesībā būtu ļoti labas.

Roberts K. Kringlijs par tehnoloģijām ir rakstījis 30 gadus. Viņš ir autors Nejaušas impērijas: kā Silīcija ielejas zēni nopelna miljonus, cīnās ar ārzemju konkurenci un joprojām nevar satikties .

paslēpties