Att skrämma upp en processor till mer än ungefär tre gigahertz – tre miljarder tick per sekund – lönar sig inte. Strömförbrukningen ökar då mycket snabbare än arbetstakten.

Därför är dagens snabbaste processorer inte snabbare än föregångarna för fyra fem år sedan. I stället har de flera kärnor.

En flerkärnig processor är flera separata processorer, kärnor, sammanbyggda i samma skal. Fyra kärnor i en processor är inte ovanligt, men Intel arbetar på en 48-kärnig processor.

Fyrakärniga processorer är inte fyra gånger så snabba som en processor – ofta tyvärr inte ett dugg snabbare.

Det är som att hyra en åttarummare men ändå sova, äta och titta på tv i samma rum.

Det är en konst att skriva program som grenar upp sig i två eller flera förlopp som kan köras jämsides med varandra i var sin kärna.

Programutvecklingsindustrin är bara i början av en gigantisk inlärningsprocess.

– Det är relativt få utvecklare som egentligen kan och förstår concurrency, säger Stefan Månsby på driftsföretaget Basefarm.

Concurrency innebär att köra ett program som två eller flera samtidiga förlopp. Problemet är att förloppen aldrig är helt åtskilda – i så fall är det två separata program – utan ibland bearbetar samma data, vilket kan ställa till oreda.

Stefan Månsby säger att språk som C och C++ ger ”relativt lite hjälp” för programmering för flera kärnor, medan Java och Apples favoritspråk Objective-C gör det enklare – men ”du måste fortfarande förstå concurrency som begrepp”.

I grunden krävs det att programmerarna slutar att tänka i invanda banor.

– De flesta programmerare är villiga att acceptera att det blir lite krångligare om de bara kan få behålla sina invanda programspråk och verktyg, men det här går djupare än så. De måste lära sig att tänka på ett annat sätt. Ett riktigt paradigmskifte alltså, säger Ulf Wiger, teknisk chef på Erlang Solutions.

En lösning är att skriva program som vanligt och låta kompilatorn ta hand om anpassningen till flerkärniga processorer. Det går, men vinsterna har hittills varit begränsade.

– Man har i flera år forskat på att utveckla tekniker för att få existerande program att automatiskt, eller med minimal arbetsinsats, utnyttja multicore. Det ger väldigt lite, och även de mest optimistiska prognoserna hamnar kring 15 procents uppsnabbning, säger Ulf Wiger.

Men hoppet är inte ute för kompilatorerna.

– Det finns plats för nya programspråk, nya abstraktioner och sätt att strukturera programmen. Det i sin tur öppnar för att kompilatorerna kan göra mer.

Ulf Wiger jämför med skräpinsamling i traditionell programmering. Förr var det något känsligt som programmerarna ville sköta för hand.

Nyare programspråk hanterar det här automatiskt och utan problem.

Kompilering för flerkärniga processorer kan gå samma väg.

Fakta

Utvecklingen mot flera kärnor i processorerna, multicore, beror på att strömförbrukningen ökar drastiskt när klockfrekvensen går över tre gigahertz. Kylningen höjer elräkningen ännu mer.

I stället för att snabba upp processorerna över tre gigahertz, vilket är tekniskt möjligt, bygger man därför ihop två, fyra eller flera måttligt snabba så kallade kärnor i ett skal.

Flera separata processorer i samma dator är en tänkbar lösning, men det kräver mer utrymme och kommunikationen mellan processorerna skulle gå långsammare.

Att utnyttja de olika kärnorna parallellt är enkelt om man kör flera program samtidigt på en persondator. Det kan till exempel vara att man webbsurfar samtidigt som man lyssnar på musik. Det är svårare att göra så att enskilda program utnyttjar alla kärnorna.