Android

Multicore Chips ställer nästa stora utmaning för industrin

6. Multicore Programming

6. Multicore Programming
Anonim

Att lägga till fler bearbetningskärnor har uppstått som det främsta sättet att öka prestanda för server- och PC-chips, men fördelarna kommer att minska kraftigt om industrin inte kan övervinna vissa hårdvaru- och programmeringsutmaningar, deltagare på Multicore Expo i Santa Clara, Kalifornien, sa denna vecka.

De flesta programvarorna idag är fortfarande skrivna för singelkärnor och måste skrivas om eller uppdateras för att dra nytta av det ökande antalet kärnor som Intel, Sun Microsystems och andra chipmakare lägger till deras produkter, säger Linley Gwennap, VD och huvudanalytiker vid The Linley Group.

Utanför hyllan kommer ofta att köras snabbare på processorer med upp till fyra processorkärnor, men bortom prestanda nivåer och kan till och med försämras när mer kärnor läggs till, sa han. En ny rapport från Gartner lyfte också upp problemet.

Chipptillverkare och systembyggare har börjat arbeta för att utbilda utvecklare och ge dem bättre verktyg för multicore-programmering. För ett år sedan sa Intel och Microsoft att de skulle investera 20 miljoner dollar för att öppna två forskningscentra vid amerikanska universitet som ägnade sig åt att ta itu med problemet. Bristen på multicore programmeringsverktyg för vanliga utvecklare är kanske den största utmaningen industrin står inför idag, säger Gwennap.

Skriva program på ett sätt som låter olika delar av en datoruppgift, till exempel lösa ett matematiskt problem eller göra en bild, delas upp och körs samtidigt över flera kärnor är inte nytt. Men denna modell, som ofta kallas parallell databehandling, har hittills varit begränsad till specialiserade, högpresterande datormiljöer.

Men Intel och Advanced Micro Devices har under de senaste åren lagt till kärnor som ett mer energieffektivt sätt att öka chip prestanda, en markant förändring från sin traditionella övning av ökande klockhastighet. Intel bygger åtta kärnor i sina kommande Nehalem-EX-chips, och AMD designar 12-kärnspån för servrar. De lägger också till multi-threading-funktioner, vilket gör att varje kärnor kan fungera på flera rader med kod samtidigt.

Det betyder att vanliga applikationer måste skrivas på ett annat sätt för att dra nytta av ytterligare kärnor som är tillgängliga. Arbetet är svårt att göra och skapar potential för nya typer för programvarufel. En av de vanligaste är "rasförhållanden", där utmatningen av en beräkning beror på de olika elementen i en uppgift som slutförs i en viss ordning. Om de inte är kan fel uppstå.

Några parallella programmeringsverktyg finns tillgängliga, till exempel Intels parallella Studio för C och C ++. Andra leverantörer i utrymmet är Codeplay, Polycore Software och Clik Arts. Det finns också en ny C-baserad parallellprogrammeringsmodell som heter OpenCL, som utvecklas av The Khronos Group och backas av Apple, Intel, AMD, Nvidia och andra. Men många av de tillgängliga verktygen är fortfarande på gång, deltagare på Multicore Expo sa. Programkompilatorer måste kunna identifiera kod som kan parallelleriseras och sedan jobba med att parallellisera det utan manuell ingripande från programmerare, säger Shay Gal-on, chef för programvaruteknik vid EEMBC, en ideell organisation som utvecklar riktmärken för inbäddade marker.

Trots att det saknas verktyg, har vissa programvaruförsäljare funnit det relativt enkelt att skapa parallellkod för enkla databehandlingar, till exempel bild- och videoförädling, sa Gwennapp. Adobe har omskrivit Photoshop på ett sätt som kan tilldela uppgifter som förstoring och bildfiltrering till specifika x86-kärnor, vilket förbättrar prestanda med tre till fyra gånger, säger han.

"Om du gör video eller grafik kan du ta olika uppsättningar av pixlar och tilldela dem till olika processorer. Du kan få mycket parallellitet på det sättet, säger han. Men för mer komplicerade uppgifter är det svårt att hitta en enda metod för att identifiera en sekvens av beräkningar som kan parallelleras och sedan dela upp dem.

Även om programmeringssidan kan presentera den största utmaningen, finns det också hårdvaruändringar som måste göras för att övervinna problem som minnesfördröjning och långsam busshastighet. "När du lägger till fler och fler processorer på chipet behöver du minnesbandbredd för att säkerhetskopiera det," säger Gwennap.

Att dela ett minnescache eller databuss bland flera kärnor kan skapa en flaskhals, vilket betyder att extrakärnorna kommer att fungera i stor utsträckning slösas bort. "När du kommer till sex eller åtta processorer, spenderar de hela tiden på att prata med varandra och går inte framåt för att få något arbete," sa han.

Onus kan i sista hand ligga med utvecklare för att överbrygga klyftan mellan hårdvara och mjukvara för att skriva bättre parallella program. Många kodare är inte snabba på den senaste utvecklingen inom hårdvaruutveckling, säger Gal-on. De borde öppna datablad och studera chiparkitekturer för att förstå hur deras kod kan fungera bättre, sa han.