Android

Multicore Chips udgør næste store udfordring for industrien

How Do CPUs Use Multiple Cores?

How Do CPUs Use Multiple Cores?
Anonim

Tilføjelse af flere behandlingskerner har vist sig at være den primære måde at øge ydelsen af ​​server- og pc-chips, men fordelene vil blive væsentligt reduceret, hvis industrien ikke kan overvinde visse hardware- og programmeringsudfordringer, deltagere på Multicore Expo i Santa Clara, Californien, sagde i denne uge.

De fleste software i dag er stadig skrevet til single-core chips og skal omskrives eller opdateres for at drage fordel af det stigende antal kerner, som Intel, Sun Microsystems og andre chipproducenter tilføjer til deres produkter, siger Linley Gwennap, præsident og hovedanalytiker hos The Linley Group.

Off-the-shelf-applikationer løber ofte hurtigere på CPU'er med op til fire processor kerner, men ud over denne ydeevne niveauer og kan endda forværres, da flere kerner er tilføjet, sagde han. En nylig rapport fra Gartner fremhævede også problemet.

Chip beslutningstagere og systembyggere er begyndt at uddanne udviklere og give dem bedre værktøjer til multicore programmering. For et år siden sagde Intel og Microsoft, at de ville investere 20 mio. US $ for at åbne to forskningscentre ved amerikanske universiteter, der var dedikeret til at tackle problemet. Manglen på multicore programmeringsværktøjer til mainstream-udviklere er måske den største udfordring industrien står over for i dag, siger Gwennap.

Skrivning af applikationer på en måde, der tillader forskellige dele af en computergruppe, som f.eks. At løse et matematisk problem eller at lave et billede, deles op og udføres samtidigt på tværs af flere kerner er ikke nyt. Men denne model, der ofte kaldes parallel computing, har indtil videre været begrænset til specialiserede, højtydende computermiljøer.

Men i de senere år har Intel og Advanced Micro Devices tilføjet kerner som en mere energieffektiv måde at øge chip præstation, en markant ændring fra deres traditionelle praksis med at øge klokkens hastighed. Intel bygger otte kerner i sine kommende Nehalem-EX chips, og AMD designer 12-core chips til servere. De tilføjer også multi-threading-funktioner, som gør det muligt for hver af kernerne at arbejde på flere linjer af kode på samme tid.

Det betyder, at almindelige applikationer skal skrives på en anden måde for at udnytte de yderligere kerner, der er tilgængelige. Arbejdet er svært at gøre og skaber potentialet for nye typer til software bugs. Et af de mest almindelige er "raceforhold", hvor udgangen af ​​en beregning afhænger af de forskellige elementer i en opgave, der udføres i en bestemt rækkefølge. Hvis det ikke er tilfældet, kan der opstå fejl.

Nogle parallelle programmeringsværktøjer er tilgængelige, som Intels Parallel Studio til C og C ++. Andre leverandører i rummet er Codeplay, Polycore Software og Clik Arts. Der er også en ny C-baseret parallel programmeringsmodel kaldet OpenCL, som udvikles af The Khronos Group og støttet af Apple, Intel, AMD, Nvidia og andre. Men mange af de tilgængelige værktøjer er stadig igangværende, deltagere på Multicore Expo sagde. Softwarekompilatorer skal kunne identificere kode, der kan paralleliseres, og derefter gøre jobbet for at parallelisere det uden manuel indblanding fra programmører, siger Shay Gal-on, direktør for software engineering på EEMBC, en nonprofit organisation, der udvikler benchmarks for indlejrede chips.

På trods af manglen på værktøjer har nogle softwareleverandører fundet det forholdsvis nemt at oprette parallel kode til simple databehandlingsopgaver, som billed- og videobehandling, siger Gwennapp. Adobe har omskrevet Photoshop på en måde, der kan tildele funktioner som forstørrelse og billedfiltrering til specifikke x86-kerner, hvilket forbedrer ydeevnen med tre til fire gange, siger han.

"Hvis du laver video eller grafik, kan du tage forskellige sæt pixels og tildele dem til forskellige CPU'er. Du kan få en masse parallelisme på den måde, "sagde han. Men for mere komplekse opgaver er det svært at finde en enkelt tilgang til identifikation af en række beregninger, der kan paralleliseres og derefter opdele dem.

Mens programmeringssiden kan fremvise den største udfordring, er der også hardwareændringer, der skal foretages for at overvinde problemer som hukommelsesforsinkelse og langsomme bushastigheder. "Når du tilføjer flere og flere CPU'er på chippen, har du brug for hukommelsesbåndbredden for at sikkerhedskopiere den," siger Gwennap.

Deling af en enkelt hukommelses cache eller databuss blandt flere kerner kan skabe en flaskehals, hvilket betyder at de ekstra kerner vil være stort set spildt. "Når du kommer til seks eller otte CPU'er bruger de hele tiden til at tale med hinanden og ikke bevæger sig fremad for at få noget arbejde," sagde han.

Onus kan i sidste ende ligge med udviklere for at bygge bro over kløften mellem hardware og software til at skrive bedre parallelle programmer. Mange coders er ikke i fart på den seneste udvikling i hardware design, sagde Gal-on. De bør åbne datablade og studere chiparkitekturer for at forstå, hvordan deres kode kan fungere bedre, sagde han.