JavaScript is currently disabled.Please enable it for a better experience of Jumi. Spekulerande telefoner spar energi
Så kallad trådspekulering kan användas för att spara energi och öka prestanda i mobiltelefoner när tillämpningen körs i Javascript. Detta demonstreras i en doktorsavhandling från Blekinge tekniska högskola.
Webbläsarprogramspråket Javascript växer så det knakar i takt med att webben och webbteknik används allt mer för att köra program.  Det skapades för att sköta användargränssnittet i webbläsaren men har börjat ta över alltmer av resten av tillämpningen, bland annat i webbtjänster som Facebook, Twitter och Google Maps. Därför ägnas mycket forskning och utveckling åt att göra Javascript effektivare.

En av dem som dragit ett strå till den stacken under de senaste åren är Jan Kasper Martinsen. På måndag häftar han samman inte mindre än nio av sina forskningsartiklar till en doktorsavhandling där hanteringen av programtrådar i Javascript är den röda tråden: ”Design and Implementation of Thread-Level Speculation in JavaScript Engines”. Och då har han ändå valt bort ytterligare nio besläktade forskningsartiklar.

Ordet spekulation i avhandlingens titel innebär i sammanhanget att köra programkod innan man ens är säker på att den kommer att behövas.

Dagens mobilprocessorer har ofta flera kärnor – fyra stycken är inte alls ovanligt – som kan köra program parallellt. Att gå händelserna i förväg och exekvera framtida kodrader kan vara ett förträffligt alternativ till att rulla tummarna för kärnor som för tillfället saknar sysselsättning. Då finns resultaten senare klara direkt när de efterfrågas – en uppenbart prestandavinst.

En nackdel är att det kostar mycket minne. Men Jan Kasper Martinsen har flera förslag till lösningar av detta och andra problem. Dem kan du läsa mer om i avhandlingen, här (PDF, 11 Mbyte).

Hans slutsats blir att kombinationen av spekulativ exekvering, multitrådade processorer och just-in-time-kompilering (att översätta Javascript till maskinspråk allteftersom instruktionerna dyker upp snarare än hela programmet i förväg) både kan ge energivinst och prestandavinst om man gör det på rätt sätt. Han drar den slutsatsen efter att testat sina teorier på bland annat 15 verkliga webbtjänster och 20 demonstrationsprogram körda på 2, 4 eller 8 kärnor på en dator med två stycken fyrkärniga cpu:er och på en Sony Xperia Z1-mobil.

En av hans tidiga upptäckter var att den programvara som man brukade använda för att mäta prestanda på Javascript – så kallade benchmarks – ledde tankarna i fel riktning eftersom den skilde sig i kravbild från hur verkliga webbappar arbetar. Det fick som effekt att tidiga optimeringar av Javascript fick rakt motsatt effekt.

Allt detta – kompilering, spekulering, aktivering av kärnor – sker automatiskt bakom kulisserna och är inget app-utvecklaren behöver bekymra sig om. Avhandlingen riktar sig till dem som skapar operativsystem eller kompilatorer som kör Javascript, exempelvis till dem som konstruerar webbläsare.

Arbetet i avhandlingen har bland annat lett till en patentansökan som fick Sony Mobile Inventor Award i april 2014.
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)