Strategier för ultrasnåla system

IoT, har lett till en massiv efterfrågan på en rad olika batteridrivna utrustningar. Det driver i sin tur upp kraven på ökad energieffektivitet hos styrkretsar och andra systemnivåkomponenter. Som ett resultat har ultralåg effekt (ULP) blivit en överexploaterad marknadsfras, framför allt när den används för att beskriva styrkretsar. Monica Redon från ADI reder här ut begreppen.

05adiul04

Som ett första steg mot att förstå vad som döljer sig bakom begreppet ULP, låt oss betänka dess innebörd. I vissa fall krävs lägsta aktiva ström när energikällan är kraftigt begränsad (exempelvis vid energiskördning). Alternativt krävs lägsta viloström när systemet ägnar mesta tiden i standby- eller sovläge och bara vaknar ibland (periodvis eller asynkront) för att utföra uppgifter. Dessutom kan ULP handla om energieffektivitet, det vill säga att det mesta arbetet utförs under begränsade tidsperioder. Batteridriven utrustning utnyttjar i allmänhet en kombination av dessa krav genom att vissa avvägningar görs.

ULP är förstås också en fråga om uppfattning och funktion —exempelvis, vi skulle i allmänhet betrakta en styrkretsenhet (MCU) som ultra energisnål om den i aktivt läge arbetar inom området 30 μA/MHz till 40 μA/MHz och drar 50 nA till 70 nA i avstängt läge. Men att klassificera en styrkrets som ultra energisnål är en komplex kombination av funktioner, som inkluderar arkitektur, SoC-konstruktion, processteknik, smart kringutrustning och djupa sovlägen.

I den här artikeln diskuteras två styrkretsar från Analog Devices med sikte på att hjälpa läsaren att förstå hur verkligheten bakom begreppet ultralåg effekt bäst tolkas i detta sammanhang. Artikeln behandlar också EEMBC-konsortiets certifieringsmekanism som tillser trovärdig betygssättning och hjälper systemutvecklare att välja de styrkretsar som är bäst lämpade för deras lösningar.

Mätning och optimering av ultralåg effekt
Som utgångspunkt för förståelsen av ULP börjar vi med att förklara hur denna mäts. Utvecklare studerar normalt datablad, där de finner värden för ström per MHz, liksom ström i olika sovlägen.

Första problemet är att när man tittar på aktiv strömförbrukning brukar databladen inte ange de förhållanden som gäller för detta värde, som exempelvis kod, spänning och väntelägen i flashminnet. Vissa tillverkare anger en referens för aktivt läge, som exempelvis EEMBC CoreMark, medan andra använder så flummiga uttryck som kör ett ”while 1” kommando.

Väntelägen i flashminnet minskar styrkretsens prestanda, vilket förlänger exekveringstiden och därmed ökar den energi som krävs för att utföra en uppgift. Vissa tillverkare anger värden vid normal spänning, andra vid minsta spänning och ytterligare andra specificerar ingen spänning alls. Skillnaderna är kanske små, men utan en standard blir jämförelserna endast ungefärliga.

Djupa sovlägen
Djupa sovlägen är normalt sett ganska väldefinierade i databladen, men de förhållanden (exempelvis bibehållet minne eller spänningen) vid vilka värdena för dessa lägens strömförbrukning har erhållits varierar återigen från en tillverkare till en annan. I verkliga tillämpningar måste användaren dessutom ta hänsyn till energiförbrukningen när kretsen går in i och ur sådana lägen. Det kan ge ett obetydligt tillskott eller få verklig betydelse beroende på om kretsen ägnar mestadelen av tiden i sovläge eller om den vaknar ofta.

Och det leder till nästa punkt — hur mycket tid ägnar kretsen i sovläge? Balansen mellan aktiva lägen och sovlägen är viktig för bestämningen av ULP-mätningen. För att förenkla processen utnyttjar EEMBC perioder om 1 sekund i sin ULPMark-CoreProfile (ULPMark-CP), en referenspunkt (benchmark) som många styrkretstillverkare använder som en standard för datablad.

OBS: Beslutet att använda 1 sekund togs efter överenskommelse inom EEMBCs arbetsgrupp. Med hänsyn till den aktiva tiden för ULPMark-CPs arbetsbelastning ligger pulslängden på runt 2%. I denna mätning vaknar kretsen en gång per sekund, utför en liten mängd arbete (aktiv cykel) och återgår sedan till sovläget.

Aktivt läge
I aktivt läge finns normalt en fast strömförbrukning på grund av de analoga kretsarna, vilket gör att det är vettigt att minimera den aktiva strömmen och effektivt utnyttja djupa sovlägen för att optimera systemets sammanlagda energianvändning. Observera att genom att frekvensen minskas kommer den aktiva strömmen att minska, men tiden ökar och den tidigare nämnda förbrukningen som den analoga kretsen ger ligger på samma nivå medan styrkretsen är aktiv. Men vilka är då avvägningarna mellan styrkretsalternativen och hur påverkas energin av tillämpningens pulslängd och ström i djupt sovläge?

Energin per cykel, som en funktion av pulslängden D (angiven i procent av tiden i sovläge jämfört med total tid), definieras av en förenklad ekvation som förutsätter att energin vid på/av-övergång är liten.

05adiulf01

där lutningen definieras av ION eftersom ISLEEP är mycket mindre än ION och y är endast ISLEEP. Ekvationen kan vara till hjälp för att förstå vid vilken pulslängden den aktiva strömmen blir viktigare än sovströmmen.

05adiul01
Fig 1. ULPMark-CP har en periodtid på 1 sekund. Under den tiden vaknar kretsen från djupt sovläge, utför en viss mängd arbete och återgår sedan till djupt sovläge.

Testplattformar för ultralåg effekt
Som tidigare nämnts ska vi jämföra den ultralåga effekten (energin) hos två styrkretsar från Analog Devices — närmare bestämt ADuCM4050 och ADuCM302x. I nedanstående tabell över ULPMark-resultat hamnar ADuCM4050 och ADuCM302x på 203 respektive 245,5. Kom ihåg att denna referenspunkt endast gäller för styrkretsenhetens kärna (därav namnet CoreProfile). Vad är då förklaringen till den 18-procentiga skillnaden?

ADuCM4050 har en ARM Cortex-M4F som implementerar ARMv7E-M-arkitekturen. ADuCM302x har en ARM Cortex-M3 som implementerar ARMv7-M-arkitekturen. Medan båda kärnorna har en 3-stegs pipeline med förgreningar och liknar varandra i fråga om instruktionsuppsättningarnas arkitektur är det bara Cortex-M4F som stöder DSP- och underhållsinstruktioner. Eftersom det inte finns några DSP-instruktioner på ULPMark-CoreProfile drar Cortex-M4F-kretsen inte nytta av FPU.

För referenspunktsanalysen fick ADuCM4050 och ADuCM302x arbeta vid 52 MHz respektive 26 MHz. ADuCM4050 behöver cirka 11 284 cykler för att utföra arbetsbelastningen enligt ULPMark och ADuCM302x 10 920 cykler, vilket innebär att den förstnämnda slutför sin andel i aktivt läge på 217 μs av 1-sekunds perioden, medan den senare är aktiv under 420 μs.

Anledningen till att ADuCM4050 använder fler cykler än ADuCM3029 beror på att den frekvens som används (52 MHz respektive 26 MHz) gör att ADuCM4050 behöver ett väntleäge i flashkretsen, medan ADuCM3029 inte har något vänteläge i sin flash. ADuCM4050 har ett cacheminne, vilket gör att det inte är någon större förlust att lägga till vänteläget i flashen, eftersom många instruktioner exekveras från cacheminnet, som är tillgängligt vid full hastighet (52 MHz) utan behov av extra väntelägen. Vad gäller exekveringstiden utför ADuCM4050 som väntat arbetsbelastningen snabbare än ADuCM3029 eftersom den arbetar vid dubbelt så hög frekvens som ADuM3029.

För att erhålla EEMBCs referenspunktskod måste man vara medlem av arbetsgruppen.

05adiul01tab01
*This is an estimate based on the Cortex-M0+ and Cortex-M3 numbers.

Tabell 1. Ungefärliga cykler för utförande av arbetsbelastning enligt ULP- Mark-CoreProfile för populära ARM-kärnor. Cykelantalen är ungefärliga eftersom beräkningen beror på kompilatorn.

Men varför drar ADuCM4050 10 μA/MHz mer än ADuCM3029? Anledningen till det är att den förstnämnda kan arbeta vid dubbelt så hög frekvens som den sistnämnda, vilket kräver extra buffertar för att åstadkomma tidsbegränsning för en högre frekvens. ADuCM4050 har även vissa extra funktioner jämfört med ADuCM3029:

* Dubbel minnesstorlek (för både SRAM och Flash): 128 kB och 512 kB jämfört med 64 kB och 256 kB hos ADuCM3029. Beroende på tillämpningen behövs eventuellt det extra lagringsutrymmet.
* Dubbel frekvens: 52 MHz jämfört med 26 MHz hos ADuCM3029, så ADuCM4050 har bättre prestanda.
* Extra RGB-timer.
* Nya säkerhetsfunktioner: skyddad nyckellagring med “key wrap-unwrap” och nyckel-HMAC med ”key unwrap”.
* Tre extra “SensorStrobe”-utgångar.
* Full SRAM-kvarhållning: Upp till 124 kB kan bibehållas i ADuCM4050 jämfört med upp till 32 kB i ADuCM3029.

05adiul02
Figur 2. Tio-i-topp resultat för ULPMark-CP, från EEMBCs webbplats (18 augusti 2017).1 (klicka för större bild)

Beroende på tillämpningens behov (kraftoptimering, extra lagring, aktiv prestanda, kvarhållningsförmåga …) kan konstruktörer besluta att använda ADuCM4050 eller ADuCM302x.

Vad gäller det djupa sovläget får ADuCM4050 en lägre viloström då den kvarhåller dubbelt så mycket minne som ADuCM3029 gör när den kör ULPMark-CoreProfile (16 kB i förstnämnda jämfört med 8 kB i sistnämnda). Anledningen till denna förbättring är att den nyare ADuCM4050-kretsen har en förbättrad arkitektur.

Kompilatorns roll
Som beskrivits ovan består ULPMark av två arbetslägen — ett aktivt läge och ett lågenergiläge där kretsen befinner sig i ett djupt sovläge. Dessa lägen kombineras till en periodtid på exakt 1 sekund. I aktivt läge utför varje krets samma arbetsbelastning. Men som vi såg tidigare, påverkas effektiviteten hos detta arbete av arkitekturen. Dessutom påverkas den av kompilatorn. Kompilatorer kan välja att ändra och optimera tillstånd så att instruktionerna förändras.

Beroende på tillämpningens behov kan man optimera för storlek och/eller hastighet, balansera storlek och hastighet m.m. Slingavrullning (loop unrolling) är ett enkelt exempel där förhållandet mellan exekverade grenar och koden inne i slingan ändras. Kompilatorer kan fortfarande spela en viktig roll för att hitta ett bättre sätt att beräkna resultat, men arbetet som utförs är detsamma.

Med hög optimering för hastigheten kan exempelvis ULPMark-CP-resultatet för ADuCM3029 variera från 245,5 till 232 eller till 209 med låg optimering. Ett annat exempel på kompilatorns betydelse demonstreras av ULPMark-resultaten för en MSP430FR5969-krets från Texas Instruments, som förbättras med 5% genom att utnyttja en nyare version av kompilatorn IAR Embedded Workbench —ven om det inte är känt vilka interna kompilatorförändringar som gjordes för att åstadkomma denna förbättring (eembc.org/ulpbench/).

På liknande sätt, utan insikt om respektive egenutvecklad kompilatorteknik, är det omöjligt att förstå varför resultaten för STMicroelectronics STM32L476RG-krets förbättras med 16% efter övergång från ARMCC-kompilatorn till IAR-kompilatorn.

Båda resultaten för Analog Devices MCUer genererades med kod kompilerad av IAR-kompilatorn, men med olika versioner. ADuCM4050 och ADuCM302x utnyttjade IAR EWARM 7.60.1.11216 respektive 7.50.2.10505. Det är återigen omöjligt att veta vilka interna förändringar som skett. Båda betygen gavs med alternativet utan storleksbegränsning vilket motsvarar optimerad hastighet.

Översättning av ULPMark till ett energivärde
ULPMark-CoreProfile utnyttjar en formel som tar motsvarigheten till energivärdena (median av 5× den genomsnittliga energin per sekund under 10 cykler).

05adiulf02

Energin fås som summan av den energi som förbrukas medan kretsen exekverar arbetsbelastningen (i aktivt läge) och medan kretsen vilar.

05adiulf03

Enligt ADuCM3029s datablad är det normala värdet för aktiv ström 980 μA när den kör kod med primtal. Denna kod ryms i cacheminnet och har fördel av dess lägre energiförbrukning. För ULPMark-CoreProfile-koden, som huvudsakligen är linjär, är det ingen större fördel med att ha cacheminnet aktiverat, så strömförbrukningen liknar den som anges i databladet med inaktiv cache, 1,28 mA. För viloströmmen kräver ULPMark-CoreProfile att LFXTAL och RTC är aktiverade, så strömförbrukningen i sovläge är 830 nA (enligt databladet). Som tidigare nämnts är den aktiva tiden 420 μs.

05adiulf04

Enligt databladets uppgifter och exekveringstiden är energin för aktiv ström 1,61 μJ och energiförbrukningen under tiden i sovläge är 2,49 μJ. Betyget enligt dessa värden överensstämmer med de som uppmätts med EEMBCs EnergyMonitor-programvara.

05adiulf05

En av bristerna med den första generationens ULPMark är att reglerna begränsar arbetsspänningen till 3 V
(implementerade på så vis av arbetsgruppen för att etablera en gemensam nivå för samtliga kretsar). Flertalet moderna MCUer har mycket bättre energieffektivitet vid lägre arbetsspänning (även om detta kan påverkas av temperaturen och arbetsfrekvensen). ULPMark-resultatet för STMicroelectronics STM32L476RG-krets blir exempelvis 19% bättre när en dc/dc-omvandlare utnyttjas för att minska spänningen från 3 V till 1,8 V.

05adiul03
Figur 3. Blockdiagram för ADuCM4050. Den integrerar en 1,2 V LDO-regulator och alternativ kapacitiv buck (klicka för större bild)

STMicroelectronics STM32L476RG-krets är inte den enda kretsen vars publicerade result påverkas av användningen av en dc/dc-omvandlare, även om omvandlaren är integrerad i vissa kretsar som exempelvis i ADuCM302x och ADuCM4050, där ingen extern krets är nödvändig för att förbättra kretsarnas energiprestanda.

I vilket fall som helst kan användning av en dc/dc-omvandlare hjälpa till att jämna till spelplanen eftersom det gör att kretsen kan arbeta vid sin optimala energieffektivitet. En krets som endast arbetar vid 3 V skulle exempelvis inte ha fördel av en dc/dc-omvandlare, eftersom den redan uppnått sin optimala (eller kanske suboptimala) effektivitet. Å andra sidan kommer en krets som kan arbeta ned till 1,8 V men som inte utnyttjar en dc/dc-omvandlare att slösa bort 64% av den tillförda energin.

För en systemkonstruktör som prioriterar energieffektivitet är extrakostnaden för en extern dc/dc-omvandlare eventuellt inte relevant om systemet utnyttjar ett 3 V batteri. När en dc/dc-omvandlare används är det dock viktigt att se till att det inte är omvandlarens utan MCUns energieffektivitet som mäts. Man måste i vilket fall som helst ta hänsyn till att dc/dc-driftslägen kan vara till nackdel i verkliga tillämpningar, såsom exempelvis längre tid för övergång mellan aktivt läge och sovläge.

Ytterligare en sak att ta hänsyn till när en dc/dc-omvandlare används är typen av omvandlare. Vissa omvandlare är induktivt baserade och medför problem med mer utrymme, högre kostnad och eventuellt elektromagnetisk störning (EMI). ADuCM4050- och ADuCM302x-kretsarna utnyttjar en kapacitivt baserad omvandlare för att undvika dessa problem. Mer information finns i användarguiden UG-1091 “How to Set Up and Use the ADuCM3027/ ADuCM3029 Microcontroller.”

Vid analys av ULPMark-CP-resultat eller även databladsvärden är det viktigt att kännas vid variationer kretsar emellan. Med andra ord, läckström är en viktig faktor vid mätning av kretsens energieffektivitet, framför allt i sovläge. Medan traditionella referenspunkter (benchmarks) för prestanda i allmänhet inte påverkas kan olika faktorer såsom exempelvis temperatur och fuktighet i viss mån påverka läckströmmen hos en krets, vilket i sin tur kommer att påverka dess ULPMark-CP-resultat.

Kretsarna från en viss tillverkare kommer att variera lite från dag till dag eller från en kiselskiva till nästa. Till och med energiförbrukningen för exakt samma krets kan variera (vi har sett förändringar på mellan 5% till 15% beroende på när och var mätningarna görs). I grund och botten innebär detta att ett givet ULPMark-CP-betyg bör användas som en guide för energieffektivitet. Exempelvis kan en krets med ett ULPMark-resultat på 245 variera från 233 till 257 på samma krets taget från en annan kiselskiva (förutsatt ett delta på 5%).

Certifieringsmekanismen — gör den trovärdig
Betygens trovärdighet säkerställs genom att tillverkare som är villiga att certifiera sina kretsar skickar in kort och verktyg till EEMBCs teknikcenter (ETC) tillsammans med konfigurationsfiler som är specifika för plattformen. EEMBC integrerar plattformens konfigurationsfiler i sina systemfiler (som inkluderar arbetsbelastningen) och mäter betyget flera gånger på olika kort. Det certifierade betyget är ett genomsnitt av dessa mätningar.

På så vis ser EEMBC till att förutsättningarna är desamma för samtliga betyg (samma arbetsbelastning, samma energiövervakningskort, liknande temperatur m m).

Figur 4 visar uppställningen av anslutningar som används för att mäta ULPMark-CP på ADuCM3029 EZ-Kit.

05adiul04
Figur 4. Kortuppställning för mätning av betyget.

För att mäta betyget tillhandahåller EEMBC EnergyMonitor-programvara. Genom att klicka på Run ULPBench-knappen kör EnergyMonitor-maskinvaran ADuCM3029 EZ-Kit-kortet och mäter profilens energiförbrukning. När körningen är klar räknar programvaran fram betyget och visar det på skärmen. Programvaran visar också den genomsnittliga energiförbrukningen för tidigare cykler i fönstret för historiska mätningar.

05adiul05
Figur 5. EnergyMonitor-programvara—GUI (klicka för större bild)

Vad händer nu — MCU effektivitetsanalys
EEMBCs målsättning är att i slutänden tillhandahålla flera sviter av referenspunkter (benchmarks) som möjliggör för användare att noga utvärdera en MCU. Utöver ULPMark-CP, som är inriktat på effektiviteten hos MCUns kärna, fokuserar den nyligen släppta ULPMark-PeripheralProfile (ULPMark-PP) på prövning av diverse MCU-kringutrustningar, såsom exempelvis ADC, PWM, SPI och RTC.

För ULPMark-PP är strömförbrukningen i aktivt läge och lätt sovläge mycket viktig eftersom kretsen utför flera kringutrustningstransaktioner för arbetsbelastningen. Resultat för ULPMark-PP är tillgängliga från EEMBCs webbplats; kombinerade ULP- Mark-CP och ULPMark-PP är tillgängliga för EEMBCs medlemmar eller med licens.

Nästa steg i utvecklingen är sviterna IoTMark-BLE och SecureMark. Den förstnämnda är inriktad på att mäta effektiviteten hos en MCU och radio för sändnining och mottagning över Bluetooth. Den sistnämnda är en komplex säkerhetssvit som kommer att mäta energi- och prestandaöverbyggnaden för implementering av olika kryptografiska element för IoT-utrustning. Båda finns tillgängliga för medlemmar och licenstagare.

Referenspunkter (benchmarks) är som bilar—båda behöver människor som kör dem. Därför uppmanar vi läsarna att uppmuntra samtliga MCU-tillverkare att köra och publicera resultat för sina kretsar.

Fler tillverkare måste också inkludera ULPMark- resultat i sina datablad (på samma sätt som tillverkare som exempelvis Ambiq Micro, Analog Devices, STMicroelectronics och TI har gjort). Detta ökar väsentligt trovärdigheten och jämförelser med verkligheten för databladens specifikationer. Om en MCU-tillverkare inte publicerar certifierade resultat, måste man fråga sig “varför inte, försöker de dölja något?”

Referenser
1 De senaste betygen finns på www.eembc.org/ulpbench/index.php.

Monica Redon [monica.redon@analog.com] kom till ADI Spain 2010. För närvarande arbetar hon som en systemingenjör för Consumer Sensing and Processing Technology (CSPT). Hon har tidigare arbetat som applikationsledare för IoT Platform Technology Group. Innan hon kom till ADI arbetade hon under 5 år för ett startup-företag inom kommunikation via elledningar och under 5 år inom arbetsgruppen för trådlösa nätverk på forskningsinstitutet Fraunhofer-Institut i Tyskland.

Comments are closed.