JavaScript is currently disabled.Please enable it for a better experience of Jumi. Var inte rädd för symmetriska multiprocessorer
Du kan dra nytta av dem utan att veta hur parallellismen fungerar

Allt fler processorer har flera processorkärnor. Lyckligtvis behöver de flesta inbyggnadsprogrammerare inte bry sig. Verktyg, programbibliotek och operativsystem sköter parallelliseringen åt dig.
Cacheminnena måste synkroniseras. Det sker automatiskt.

En klassisk processor kallas för uniprocessor. En processor med symmetrisk multitrådning (SMT) är fortfarande en uniprocessor, men den har bland annat flerdubbla registeruppsättningar för att kunna växla programtråd snabbt. En SMT kan köra flera program samtidigt på ett effektivt sätt. Vid dröjsmål i en tråd kan en annan tråd snabbt ta över processorn.

Arms konkurrent Mips licenserar en SMT-processorer.

- Multitrådning är en utmärkt teknik för att utnyttja en uniprocessor bättre, men den kan inte skalas upp mer än så, kommenterar John Goodacre.

En symmetrisk multiprocessor (SMP) går steget längre och duplicerar hela processorn, inklusive lokala cacheminnen. Men processorerna använder fortfarande samma arbetsminne. Det betyder att kärnornas lokala cacheminnen måste synkroniseras, vilket lyckligtvis sker osynligt för programmeraren. I en generell CMP (chip multiprocessor) är processorkärnorna mer oberoende av varandra och vara av olika typer. Medan det typiska för en SMP är att alla kärnorna hjälps åt att exekvera ett och samma program. Arms MP Core har fyra kärnor. Med det protokoll (modifierad MESI) som synkroniserar cacheminnena kan konstruktionen skalas upp till kanske åtta kärnor.

- Men det är poänglöst att stoppa in 64 kärnor om programmeraren bara har fyra programtrådar, säger John Goodacre.
Arm lanserade i maj en så kallad symmetrisk multiprocessor (SMP). Händelsen kan bli en milstolpe i inbyggnadsvärlden.

SMPer förekommer visserligen i servrar och superdatorer och även persondatorer sedan flera år. Arm är heller inte först ut i inbyggnadsvärlden, både Arm- och Mipskärnor har använts i SMP-processorer.

Men när nu marknadsledande Arm lanserar en färdig lösning ger det ett ökat intresse för verktyg och annan standardlösning kring tekniken.

En SMP-processor består av flera kompletta separata processorkärnor. Det de har gemensamt är arbetsminnet. Därför krävs automatik som ser till att deras lokala cacheminnen inte hamnar i otakt.

Arms nya processor MP Core kan konfigureras med upp till fyra kärnor.

Processorer med flera kärnor (CMP, chip multiprocessor) är ingen nyhet i inbyggnadsvärlden. Arm och andra har sedan flera år stött tekniken. Det finns multiprocessorer med tiotals och till och med hundratals kärnor på marknaden. Pc-världen ligger i lä.

Däremot ligger inbyggarna i lä när det gäller just SMP-processorer. Det är ingen slump. En SMP är duktig på det som är typiskt för en pc - att exekvera samtidiga program. I SMPn lägger programmen enkelt beslag på varsin kärna.

PC-världen gillar SMP

När nu Arms MP Core med fyra kärnor gör premiär är det i en pc-liknande kontext. Arm tror att den största användningen av MP Core ska bli i samma typ av system där generella operativsystem som Linux, Windows, VX Works och Javamaskiner idag gör intåg. NEC, som samarbetet med Arm om MP Core, ska bygga applikationsprocessorer för hemelektronik, bilelektronik och mobiltelefoner.

De flesta programmerare kommer inte att behöva lära sig någonting om SMP. Det är det glädjande beskedet till inbyggnadsutvecklare som kanske oroar sig över alla nya multiprocessorer som lanseras inom inbyggnadsvärlden.

När verktygen stöder MP Core kan applikationsutvecklarna skriva sina Armprogram i C precis som förr.

Grovjobbet har gjorts en gång för alla av de som porterat verktyg och operativsystem till MP Core och sett till att programmen delas upp mellan kärnorna.

Den andra stora tillämpningen för MP Core, tror Arm, kommer att vara inbyggda system med samverkande system. Typexemplet är en mobiltelefon som kan visa bilder eller spela spel samtidigt som användaren pratar i den.

Också här kommer programmeraren att kunna skriva samma programkod som för en ensam Armprocessor.

Samma kod som för ensam kärna

I mobiler används systemkretsar som Omap med dedicerade accelerator för en specifika tillämpningar, som grafik. En multiprocessor kan aldrig bli lika effektiv som en accelerator.

- Men det finns ett behov av generell datorbearbetning. Också en spelplattform behöver en generell processor med hög prestanda vid sidan av 3D-acceleratorn, säger John Goodacre som leder Arms multiprocessorprojekt.

Det tråkiga ur prestandasynpunkt med att fördela ett program per tråd, är att inget enskilt program kommer att exekveras snabbare än om det körts på en ensam armkärna.

För den som vill ha bättre prestanda finns speciella programverktyg som styckar upp programmet i bitar som körs parallellt.

Arm tror denna användning blir mindre vanlig.

- Det är ett intressant område som vi stödjer forskning i. Men jag har svårt att tro att massmarknaden omedelbart kommer att börja använda den så, säger John Goodacre.

Det finns forskning kring intelligenta kompilatorer som parallelliserar program automatiskt. Men för att få höga prestanda idag krävs att en programmerare berättar för kompilatorn hur parallelliseringen ska ske.

- Kompilatorn är sällan smartare än du. Se på assembler, Fortran, Java, 4G-språk - ju längre avståndet är mellan språk och hårdvara, desto mindre effektiv blir koden som kompilatorn producerar, säger Krister Dackland, Umeådoktor i superdatorberäkningar.

Utmaningen för parallellprogrammeraren som vill krama all prestanda ur en SMP är att formulera sitt program så att alla kärnor hålls sysselsatta hela tiden.

Arm tillhandahåller två parallelliseringsverktyg för MP Core.

Svensk prestandakompilator

Det ena ger möjlighet att dela upp programmet i så kallade "trådar" och uttryckligen tala om för operativsystemet vilka trådar som ska exekveras i vilka processorer.

Det andra verktyget är svenskutvecklat (se artikeln "Tre minuter" i nummer 9 av Elektroniktidningen). En grupp kring Mats Brorsson på KTH i Stockholm har konstruerat en kompilator för en utökning av programspråket C enligt standarden Open MP.

Open MP är på en högre abstraktionsnivå. Programmeraren behöver inte stycka upp programmet i trådar. Istället ger han direktiv som "OMP parallell for" och kompilatorn delar automatiskt upp en loop fyra delar. Den första fjärdedelen av loopvarven exekveras i den första processorkärnan, och så vidare, den andra i den andra, och så vidare.

Ett program skrivet för Open MP-versionen av C fungerar lika bra på en ensam Arm. De instruktioner som har med parallellisering att göra finns gömda i kodkommentarer som kompilatorn normalt kan hoppa över. Och kommentarerna påverkar inte programmets betydelse, bara hur det delegeras till olika hårdvara.

Årets europeiska konferens om Open MP arrangeras i Stockholm den 18-22 oktober.

- Förra året fanns inga presentationer om inbyggnad, men det vill jag ha nu, säger Mats Brorsson.

Jan Tångring
MER LÄSNING:
 
KOMMENTARER
Kommentarer via Disqus

Anne-Charlotte Lantz

Anne-Charlotte
Lantz

+46(0)734-171099 ac@etn.se
(sälj och marknads­föring)
Per Henricsson

Per
Henricsson
+46(0)734-171303 per@etn.se
(redaktion)

Jan Tångring

Jan
Tångring
+46(0)734-171309 jan@etn.se
(redaktion)