211service.com
Problemet med multi-core computere
Nutidens top-of-the-line computere har dual-core processorer: to computerenheder, der kan håndtere separate opgaver på samme tid. Og til næste år vil de store chipproducenter Intel og AMD have udrullet quad-core-systemer. Selvom flere processorer teoretisk er hurtigere end en enkelt kerne, er det ekstremt vanskeligt at skrive software, der udnytter mange processorer - en opgave kaldet parallel programmering.
Nyere forskning fra MIT kunne dog gøre parallel programmering lettere, og i sidste ende hjælpe med at holde den personlige computerydelse på sporet. Forskerne foreslår en ny computerramme, der kombinerer specialiserede softwareinstruktioner og modifikationer til multi-core hardware, der kunne give programmører mulighed for at skrive software uden at skulle beskæftige sig med nogle kedelige parallelprogrammeringsdetaljer.
Historisk set har det at skrive software til multi-core systemer været opgaven for eksperter i supercomputing-verdenen. Men med den kommende alder af personlige supercomputere, skal gennemsnitlige programmører også være i stand til at skrive software med flere kerner i tankerne.
Det er en skræmmende ting, siger Krste Asanovic , professor i elektroteknik og datalogi ved MIT, fordi de fleste aldrig har gjort det, og det er ret svært at gøre. Asanovic og hans kolleger tackler en af de største udfordringer, som programmører står over for, når de forsøger at skrive software, der vil køre effektivt på multi-core-systemer: koordinering af flere opgaver, der kører på separate kerner på en måde, der ikke får systemet til at gå ned .
Når en applikation som Microsoft Outlook eller en videoafspiller paralleliseres, er visse opgaver delt op mellem processorerne. Men ofte skal disse separate opgaver dykke ned i en delt hukommelsescache for at få adgang til data. Når en transaktion har adgang til hukommelsen, og en anden transaktion skal have adgang til den samme del af hukommelsen, og der ikke er sat ordentlige sikkerhedsforanstaltninger på plads, kan et system gå ned. Dette kan sammenlignes med et par med en delt checkkonto med begrænsede midler, der skriver checks samtidig og utilsigtet overtræk fra kontoen.
Standard parallel programmering kræver, at en programmør forudser disse samtidige aktiviteter og sørger for, at når en bestemt aktivitet begynder at få adgang til hukommelsen, låser den andre aktiviteter ude, så de venter, indtil transaktionen er gennemført.
Når de implementeres korrekt, fremskynder låsene parallelle systemer, men det er kompliceret at implementere dem i praksis, siger Jim Larus, forskningsområdechef hos Microsoft. For eksempel, forklarer han, kan to forskellige applikationer erhverve låse på samme tid, hvilket tvinger dem til at vente på hinanden. Uden en tredjepart, der kommer ind for at bryde dødvandet, siger Larus, ville ansøgningerne forblive fastfrosset.
MIT-forskerne kommer uden om dette ved at bruge en tilgang kaldet transaktionshukommelse, et forskningsområde, der er eksploderet i de seneste fem år, siger Asanovic. Transaktionshukommelse koordinerer softwareoperationer, så programmører ikke behøver at skrive det ind i deres programmer. Det tillader faktisk adskillige transaktioner at dele den samme hukommelse på samme tid. Når en transaktion er fuldført, verificerer systemet, at andre transaktioner ikke har foretaget ændringer i hukommelsen, som ville hindre resultatet af den første transaktion. Hvis de har, udføres transaktionen igen, indtil den lykkes.
Selvom transaktionshukommelsen fungerer i nogle tilfælde, er den stadig ikke perfekt, forklarer Asanovic. Det meste af tiden er transaktionerne små, og den faste størrelse af hukommelsen i hardwaren kan klare dem hurtigt. Men, siger han, en gang imellem kræver transaktioner mere hukommelse end det faste beløb, der er til rådighed, og når det sker, går systemet ned. Asanovic siger, at ved at tilføje en lille backup-hukommelsescache til hardwaren og ved at tilføje software til at genkende, når transaktionerne flyder over, kan transaktionshukommelsens kapacitet øges, hvilket afhjælper tidligere systemfejl.
Metoden, som MIT-forskerne bruger, er afhængig af en kombination af software og hardware for at gøre transaktionshukommelsen bedre, siger Microsofts Larus, og der har været adskillige designs, der er afhængige af software eller hardware i varierende grad. Det er endnu ikke klart, hvor den rigtige grænse går mellem at bruge hardware og software til at løse problemet, siger han, men forskerne tackler vigtige uløste problemer i programmering af multi-core-systemer.
Microsoft, AMD, Intel og universiteter som MIT og Stanford, blandt andre, er alle investeret i at gøre multi-core-systemer nemmere at programmere. Ud over at forbedre transaktionshukommelsen udforsker forskere bedre måder at fejlfinde parallelle programmer på og også skabe biblioteker af færdige parallelle operationer, så programmører kan tilslutte bidder af kode til software uden at skulle finde ud af knæk hver gang.
I øjeblikket er dual-core-systemerne ikke så påvirket af manglen på virkelig parallelle programmer, som de kommende quad-core-systemer vil være, siger Asanovic. For det meste er operativsystemer som Windows og Mac OS X i stand til effektivt at opdele programmer på et dual-core system. For eksempel kører en virusscanner diskret i baggrunden på den ene kerne, mens applikationer som Microsoft Word eller Firefox kører på den anden kerne, uden at deres hastighed hæmmes.
Men når det kommer til 4, 8 eller 16 kerner, skal applikationerne selv modificeres for at opnå mere ydeevne. Asanovic siger, at transaktionshukommelsen ikke vil være en sølvkugle, der gør det nemmere at programmere disse systemer, men han forventer, at det bliver en del af den fremtidige parallel-computing-model. Det er en mekanisme, der ser ud til at være nyttig, siger han.