Problēmas ar daudzkodolu datoriem

Mūsdienu modernajiem datoriem ir divkodolu procesori: divas skaitļošanas vienības, kas vienlaikus var veikt atsevišķus uzdevumus. Un līdz nākamajam gadam lielākie mikroshēmu ražotāji Intel un AMD būs izlaiduši četrkodolu sistēmas. Lai gan teorētiski vairāki procesori ir ātrāki par vienu kodolu, programmatūras rakstīšana, kas izmanto daudzu procesoru priekšrocības — uzdevums, ko sauc par paralēlo programmēšanu, ir ārkārtīgi sarežģīts.





Tomēr jaunākie MIT pētījumi varētu atvieglot paralēlo programmēšanu, galu galā palīdzot saglabāt personālo datoru veiktspēju. Pētnieki ierosina jaunu skaitļošanas sistēmu, kas apvieno specializētas programmatūras instrukcijas un daudzkodolu aparatūras modifikācijas, kas ļautu programmētājiem rakstīt programmatūru, neriskējot ar dažām nogurdinošām paralēlās programmēšanas detaļām.

Vēsturiski programmatūras rakstīšana daudzkodolu sistēmām ir bijis superskaitļošanas pasaules ekspertu darbs. Taču, tuvojoties personīgo superdatoru laikmetam, vidusmēra programmētājiem arī jāspēj rakstīt programmatūru, paturot prātā vairākus kodolus.

Tā ir biedējoša lieta, saka Krste Asanoviča , elektrotehnikas un datorzinātņu profesors MIT, jo lielākā daļa to nekad nav darījuši, un to ir diezgan grūti izdarīt. Asanovičs un viņa kolēģi risina vienu no galvenajām problēmām, ar kurām saskaras programmētāji, mēģinot rakstīt programmatūru, kas efektīvi darbosies daudzkodolu sistēmās: koordinēt vairākus uzdevumus, kas darbojas atsevišķos kodolos, lai neizraisītu sistēmas avāriju. .



Paralēlējot lietojumprogrammu, piemēram, Microsoft Outlook vai video atskaņotāju, daži uzdevumi tiek sadalīti starp procesoriem. Taču bieži vien šiem atsevišķiem uzdevumiem ir jāiekļaujas koplietojamā atmiņas kešatmiņā, lai piekļūtu datiem. Ja viens darījums piekļūst atmiņai un citam darījumam ir jāpiekļūst tai pašai atmiņas daļai un netiek ieviesti atbilstoši drošības pasākumi, sistēma var avarēt. To var salīdzināt ar pāri, kuram ir kopīgs norēķinu konts ar ierobežotiem līdzekļiem, kas vienlaikus izraksta čekus un netīši pārtērē no konta.

Standarta paralēlajai programmēšanai programmētājam ir jāparedz šīs vienlaicīgās darbības un jāpārliecinās, ka, tiklīdz noteikta darbība sāk piekļūt atmiņai, tā bloķē citas darbības, tāpēc tās gaida, līdz tiek pabeigts darījums.

Pareizi ieviešot, slēdzenes paātrina paralēlās sistēmas, taču to ieviešana praksē ir sarežģīta, saka Džims Laruss, Microsoft pētniecības jomas vadītājs. Piemēram, viņš skaidro, ka divas dažādas lietojumprogrammas var iegūt slēdzenes vienlaikus, kas liek tām gaidīt vienam otru. Larus saka, ka bez trešās puses iesaistīšanās, lai izjauktu strupceļu, lietojumprogrammas paliktu iesaldētas.




MIT pētnieki to apiet, izmantojot pieeju, ko sauc par transakciju atmiņu, kas ir pētniecības joma, kas pēdējo piecu gadu laikā ir strauji pieaugusi, saka Asanovičs. Darījumu atmiņa koordinē programmatūras darbības, lai programmētājiem tas nebūtu jāieraksta savās programmās. Tas faktiski ļauj daudziem darījumiem vienlaikus koplietot to pašu atmiņu. Kad transakcija ir pabeigta, sistēma pārbauda, ​​vai citos darījumos atmiņā nav veiktas izmaiņas, kas varētu kavēt pirmā darījuma iznākumu. Ja ir, tad darījums tiek veikts atkārtoti, līdz tas izdodas.

Lai gan dažos gadījumos darījumu atmiņa darbojas, tā joprojām nav ideāla, skaidro Asanovičs. Lielāko daļu laika darījumi ir nelieli, un fiksētais aparatūras atmiņas apjoms var ātri tikt galā ar tiem. Taču viņš saka, ka reizēm darījumiem ir nepieciešams vairāk atmiņas nekā fiksētā pieejamā summa, un, kad tas notiek, sistēma avarē. Asanovičs saka, ka, pievienojot aparatūrai nelielu rezerves atmiņas kešatmiņu un pievienojot programmatūru, lai atpazītu, kad darījumi ir pārpildīti, transakciju atmiņas ietilpību var palielināt, mazinot iepriekšējās sistēmas kļūmes.

Metode, ko MIT pētnieki izmanto, balstās uz programmatūras un aparatūras kombināciju, lai uzlabotu transakciju atmiņu, saka Microsoft Larus, un ir bijuši daudzi modeļi, kas dažādās pakāpēs paļaujas uz programmatūru vai aparatūru. Viņš saka, ka vēl nav skaidrs, kur ir pareizā līnija starp aparatūras un programmatūras izmantošanu problēmas risināšanai, taču pētnieki risina svarīgas neatrisinātas problēmas daudzkodolu sistēmu programmēšanā.

Microsoft, AMD, Intel un tādas universitātes kā MIT un Stenforda, cita starpā, ir investējušas, lai padarītu daudzkodolu sistēmas vieglāk programmējamas. Papildus transakciju atmiņas uzlabošanai pētnieki pēta labākus veidus, kā atkļūdot paralēlās programmas, kā arī veido gatavu paralēlo darbību bibliotēkas, lai programmētāji varētu pievienot programmatūrai koda gabalus, katru reizi nenovēršot kļūdas.



Pašlaik divkodolu sistēmas tik ļoti neietekmē patiesi paralēlu programmu trūkums, kā to ietekmēs nākamās četrkodolu sistēmas, saka Asanovičs. Lielākoties operētājsistēmas, piemēram, Windows un Mac OS X, spēj efektīvi sadalīt lietojumprogrammas divkodolu sistēmā. Piemēram, vīrusu skeneris neuzkrītoši darbojas fonā vienā kodolā, bet tādas lietojumprogrammas kā Microsoft Word vai Firefox darbojas otrā kodolā, netraucējot to ātrumu.

Bet, kad runa ir par 4, 8 vai 16 kodoliem, pašas lietojumprogrammas ir jāmaina, lai iegūtu lielāku veiktspēju. Asanovičs saka, ka darījumu atmiņa nebūs sudraba lode, kas atvieglos šo sistēmu programmēšanu, taču viņš sagaida, ka tā būs nākotnes paralēlās skaitļošanas modeļa sastāvdaļa. Viņš saka, ka tas ir viens no mehānismiem, kas šķiet noderīgs.

paslēpties