• No results found

Evaluation in which context a 32-bit, rather than an 8-bit processor may be appropriate to use, based on power consumption

N/A
N/A
Protected

Academic year: 2021

Share "Evaluation in which context a 32-bit, rather than an 8-bit processor may be appropriate to use, based on power consumption"

Copied!
35
0
0

Loading.... (view fulltext now)

Full text

(1)

Teknik och samhälle Datavetenskap

Examensarbete

15 högskolepoäng, grundnivå

Utvärdering av i vilka sammanhang en 32-bitars, snarare än

en 8-bitars processor kan vara lämplig att använda, baserat

på effektförbrukning

Evaluation in which context a 32-bit, rather than an 8-bit processor may be appropriate to use, based on power consumption

Patricia Jönsson

Examen: (Högskoleingenjörsexamen 180 hp) Huvudområde: (Datavetenskap)

Program: (Datateknik Mobil-IT)

Datum för slutseminarium: (2017-08-25)

Handledare: Tommy Andersson Examinator: Olle Lindeberg

(2)
(3)

Sammanfattning

Uttrycket Internet of Things växer sig större och större och världen är på väg att ha 50 miljarder uppkopplade enheter till 2020. IoT-enheter är beroende av att ha en låg effektför-brukning och därför är en processor med låg effektföreffektför-brukning viktigt att ha. Denna studie utför tester på två strömsnåla processorer för att komma fram till vilken processor som är mest lämplig till vilken IoT-produkt. Testningen utgick från tre applikationer som i sin tur baseras på verkliga IoT-situationer. De tre applikationerna har olika intesitetsnivåer. I den första applikationen arbetar processorerna inte särskilt hårt, I den andra applikationen får processorena arbeta mer och i den tredje applikationen får processorerna jobba som hårdast. Effektförbrukningen mäts med hjälp av Atmel Power debugger. Resultatet visar att IoT-enheter som inte är särskilt aktiva har en lägre effektförbrukning med en 8-bitars processor men en IoT-enhet som är mer aktiv har lägre effektförbrukning med Cortex-M0+ baserad 32-bitars processor.

(4)
(5)

Abstract

The term Internet of Things grows bigger and bigger and the world is about to have 50 bil-lion connected devices. IoT devices are dependent on low power consumption and therefore a low power processor is important to have. This study performs tests on two power-saving processors to determine which processor is most suitable for an IoT product. The test was based on three applications, which in turn are based on actual IoT situations. The three applications have different levels of intency. In the first application, the processors do not work very hard. In the second application, the processors get more work and in the third application, the processors get the hardest work. Power consumption is measured using Atmel Power debugger The result shows that low-active IoT devices have a lower power consumption with an 8-bit processor, but an IoT device that is more active has lower power consumption with a Cortex-M0 + based 32-bit processor.

(6)
(7)

Förord

Jag vill rikta ett stort tack till min handledare Tommy Andersson som stöttat och hjälpt mig att komma framåt i mitt arbete.

(8)
(9)

Ordlista

CISC Complex Instruction Set Computers

CMOS Complementary Metal Oxide Semiconductor CMSIS-DAP Cortex Microcontroller Software Interface Standard CPU Central Processing Unit

FIR Finit Impulse Response IoT Internet of Things JTAG Debug interface MCU Microcontroller Unit

RISC Reduced Instruction set Computers SPI Serial Peripheral Interface

(10)
(11)

Innehåll

1 Inledning 1

1.1 Bakgrund . . . 1

1.2 Syfte och problemformulering . . . 2

1.3 Begränsningar . . . 2

2 Teori 3 2.1 Effektförbrukning . . . 3

2.2 Att mäta effektförbrukning . . . 3

2.3 Verktyg . . . 3

2.3.1 ARM Cortex-M . . . .R 3 2.3.2 AVR XMEGA . . . 4

2.3.3 Atmel Power Debugger och Atmel Data Visualizer . . . 5

3 Relaterat arbete 6 3.1 A Study of Technical Solutions for IoT End Devices and an Evaluation Guide for Their Performance . . . 6

3.1.1 Område . . . 6

3.1.2 Utförande . . . 6

3.1.3 Resultat . . . 6

3.2 Dynamic Power Reduction of Microprocessors for IoT Applications . . . 7

3.2.1 Område . . . 7

3.2.2 Utförande . . . 7

3.2.3 Resultat . . . 7

3.3 Energy-Efficient System Design for IoT Devices . . . 7

4 Metod 8 4.1 Val av metod . . . 8 4.2 Litteratursökning . . . 8 4.3 Controlled Experiment . . . 8 4.4 Val av komponenter . . . 8 4.5 Applikations-uppbyggnad . . . 9 4.6 Mätmetod . . . 10

5 Resultat och analys 11 5.1 Utförande . . . 11 5.2 Resultat . . . 12 5.2.1 Applikation 1 . . . 12 5.2.2 Applikation 2 . . . 14 5.2.3 Applikation 3 . . . 15 5.3 Analys . . . 17 5.3.1 Applikation 1 . . . 17 5.3.2 Applikation 2 . . . 18 5.3.3 Applikation 3 . . . 18

(12)

6 Diskussion 19 6.1 Metod . . . 19 6.2 Resultat . . . 19

7 Slutsatser och vidare forskning 21

7.1 Slutsats . . . 21 7.2 Vidare forskning . . . 21

(13)

1

Inledning

Det har utvecklats enheter som kan kommunicera och styras över internet tidigt av internets historia[1]. Under de senaste åren har uttrycket Internet of Things(IoT) vuxit sig större och större. Världen kan vara på väg mot att ha 50 miljarder uppkopplade enheter till år 2020, där molnservice, IT och enheter är kopplade till globala nätverk där all information finns tillgänglig över internet [2]. IoT kan implementeras i nästan allt från hushållsmaskiner till medicinska apparater.Processorer som tidigare varit begränsade till datorer kan man idag finna i många hushållsapparater. En IoT-enhet behöver i regel någon form av processorkraft för att kunna utföra sin uppgift och för att kunna sända data till internet. Enheterna är ofta batteridriva och därför är minimering av effektförbrukningen en viktig del vid utvecklingen av en IoT-produkt [3].

1.1 Bakgrund

Den första mikroprocessorn släpptes 1971 av Intel, den så kallade 4004 vilket var en 4-bitars processor. Året därpå släppte de mikroprocessorn 8008 vilket var en 8-bitars processor [4]. Under 70-talet utvecklades ett flertal 8-bitars processorer, men även 12- och 16-bitars processorer. 16-bitars processorerna var bara på marknaden några år innan man började implementera 32-bitars processorer.

Intel 8051 är en 8-bitars microcontroller(MCU) som utvecklades av Intel under början av 80-talet för att användas i inbyggda system[5][6]. 8051 tillhör Intel MSC-51 familjen. Den var populär under 80- och 90-talet och den används fortfarande idag, ofta som kärna i andra MCU:s. 8051 är uppbyggd med CISC-teknologi(Complex Instruction Set Computers) vilket innebär att den använder sig av mer komplicerade eller avancerade maskininstruk-tioner. Detta gör att program blir kortare men det innebär också att hårdvaran behöver vara större för att klara av instruktionerna[7]. Ett alternativ till CISC är RISC(Reduced Instruction set Computers). Med färre och enklare instruktioner kan en maskininstruktion i en RISC-baserad processor exekveras på endast en klockcykel [8]. Exempel på processo-rer som är RISC-baserade är AVR-processoprocesso-rer som kommer från företaget Atmel[8] och PIC-processorerna som kommer från Microchip Technology [7]. AVR-processorer har det gemensamt att de delar samma grundarkitektur och instruktionsuppsättning vilket gör att programkod kan återanvändas mellan processorer som tillhör AVR. Båda familjerna är byggda enligt en Harvard arkitektur som gör det möjligt för processorerna att arbeta snabbare[7].

ARM är ett företag som har utvecklat processorer avsedda för inbyggda system i över 20 år [9]. De flesta processorer utvecklade av ARM är 32-bitars processorer och är RISC-baserade. Processorer används i många elektroniska apparater som till exempel mobilte-lefoner, TV-apparater, diskmaskiner och bilar. ARM:s design kan licenseieras av företag som vill använda sig av deras processorer [10].

Det finns många olika typer av processorer och det är viktigt att veta vad olika processorer passar bäst till innan man börjar utveckla en design. Om man ska designa en server kan

(14)

det vara lämpligt med en processor med hög prestanda. Ska man däremot designa något bärbart och batteridrivet behövs det troligtvis inte hög prestanda utan en processor som har låg effektförbrukning är att föredra.

1.2 Syfte och problemformulering

Studiens syfte är att mäta och jämföra effektförbrukningen mellan 8- och 32-bitars pro-cessorer som är konstruerade för att vara strömsnåla. Genom att analysera och diskutera resultatet ska följande fråga kunna besvaras:

• I vilka sammanhang kan en 32-bitars, snarare än en 8-bitars processor vara lämplig att använda, baserat på effektförbrukning?

1.3 Begränsningar

Processorerna som används i den här studien är två MCU:s (Microcontroller Unit), ATx-mega256A3BU och ATSAML21J18B. Tre applikationer används för att testa vilken MCU som har lägst effektförbrukning. Applikationerna är typiska exempel på vad som kan vara en IoT-applikation [11]. Utvecklingsmiljön som används är Atmel studio 7.0 tillsammans med ett tillhörande program, Atmel Data Visualizer. Strömmen mäts med hjälp av Atmel Power Debugger.

(15)

2

Teori

Det här kapitlet tar upp nödvändig teori som behövs för att kunna förstå övriga kapitel i det här arbetet. Sektion 2.1 förklarar kort vad energiförbrukning innebär när man talar om CMOS-baserade enheter. Sektion 2.2 förklarar kortfattat hur man mäter effekt. 2.3 tar upp de hjälpmedel och komponenter som används i studien.

2.1 Effektförbrukning

Effekt anger den mängd energi som omvandlas per tidsenhet. I datorer omvandlas elekt-risk energi till värme energi. SI-enheten för effekt är Watt(W), där en watt motsvarar en energiomvandling av en joule per sekund [12].

CMOS-kretsar(Complementary Metal Oxide Semiconductor) är den mest använda teknolo-gin i modern elektronik[7]. Dagens mikroprocessorer är uppbyggda med CMOS-teknologi[13]. I CMOS- baserade kretsar kan effektförlusten delas upp i två former, statisk och dynamisk. Den statiska effektförlusten definieras som den effektförlust som erhålls då en komponent befinner sig i sitt jämviktstillstånd. I en CMOS-baserad krets är den statiska effektför-lusten nästan alltid försumbar[7]. När en CMOS enhet byter mellan tillstånd går det åt en liten del energi. Detta betecknas som den dynamiska effektförlusten. Effektförlusten är beroende av switch-frekvensen och matningsspänningen i kvadrat. För att hålla nere den dynamiska effektförlusten behöver man därför jobba med att ha en låg matningsspänning eller låg frekvens.

För en mikroprocessor ökar effektförbrukningen med ökande klockfrekvens. Den dynamiska effektförbrukningen är proportionell mot CPU:ns frekvens och kvadraten av processorns spänning [14].

P ' v2fcpu (1)

2.2 Att mäta effektförbrukning

Det finns inget direkt sätt att momentant mäta effekt i en processor utan denna beräknas med hjälp av matningsspänningen och strömmen genom processorn. Strömmen beräknas genom att en resistor seriekopplas med processorn varvid spänningen över resistorn mäts. Resistorn måste ha ett så lågt värde att spänningsfallet inte ger någon påverkan på funk-tionen.

2.3 Verktyg

2.3.1 ARM Cortex-MR

Runt 2003 bestämde ARM att de behövde diversifiera sina processorer för att adressera olika tekniska krav. De nya processorena delades upp i tre grupper: Cortex-A, Cortex-R och Cortex-M. Cortex-M familjen är designad för att användas i Micro Controller Units(MCU) m.m. Cortex-M0 processorn släpptes av ARM 2009. Cortex-M0+ har samma funktioner

(16)

som en M0 processor, men där ör några skillnader i hårdvaran som gör att Cortex-M0+ är mer strömsnål[9].

SAM L21 är en MCU vars kärna är uppbyggd på en 32-bitars Cortex-M0+ processor och är den 32-bitars MCU som används i studien. Den uppges ha en strömförbrukning ner till 35 µA/MHz i active mode och 200 nA i sleep mode[15]. SAM L21 har fyra olika sleep modes:

• STANDBY

Alla klockor är avstängda förutom ULP23K, och SRAM sätts i power save mode, men det går att ändra i källkoden [16][17].

• IDLE

Endast CPU-klockan är avstängd[17]. • BACKUP

Alla klockor är avstängda och det går inte att lagra något i SRAM[17]. • OFF

Hela enheten är avstängd och går endast att sätta på via extern eller power on reset[17].

2.3.2 AVR XMEGA

8-bitars-processorer har länge varit standarden för det flesta MCU:s. Atmel AVR XMEGA serien har Atmel picoPower teknologi och olika väljbara low-power sleep modes somR

enligt tillverkaren gör serien ideal för batteri-drivna applikationer [3]. XMEGAA3BU är en MCU vars kärna är uppbyggd på en 8-bitars AVR XMEGA processor och är den 8-bitars MCU som används i studien. Den har fem sleep modes:

• IDLE

Endast CPU-klockan är avstängd. Systemet kan väckas av alla valbara interrupts[18]. • POWER-DOWN

Alla klockor stängs av. Endast operationer som inte kräver någon form av räknare kan köra[18].

• POWER-SAVE

Alla klockor stängs av, men man kan sätta på RTC:n(real-time counter) att köra under tiden systemet sover. I och med system klockan är avstängd tar det längre tid att väcka systemet i jämförelse med i IDLE-mode[18].

• STANDBY

Är som POWER-DOWN-mode, men operationer som körs med system-klockskälla kan köra under tiden CPU, RTC och kringutrustning klockor är avstängda[18]. • EXTENDED STANDBY

Alla klockor stängs av, men RTC:n samt operationer som körs med systemklockan kan köra under tiden systemet sover[18].

(17)

2.3.3 Atmel Power Debugger och Atmel Data Visualizer

Atmel Power Debugger är ett utvecklingsverktyg för programmering av ARM Cortex-M-baserade Atmel SAM och Atmel AVR MCU:s med användning av bl.a. JTAG(debug inter-face), SWD(serial wire debug) eller SPI(serial peripheral interface). Debuggern har även två självständiga strömsensor-kannaler för mätning av effektförbrukningen och strömför-brukningen av en krets. Dessa benämns som kanal ’A’ och kanal ’B’. Kanal ’A’ är passande för mätning av låga strömvärden och kan mäta från 100mA ner till under 1µA medan kanal ’B’ kan mäta från 1A ner till 1mA[19]. Enligt[19] har en kalibrerad kanal ’A’ en felmarginal på inte mer än 3 %. Power Debuggern är en CMSIS-DAP(Cortex microcontroller software interface-standard)-kompatibel debugger som fungerar ihop med Atmel Studio 7.0 eller senare, men det går också att använda ihop med annan mjukvara som kan ansluta till en CMSIS-DAP enhet [19].

I Atmel Studio finns ett program som heter Atmel Data Visualizer vilket är en mjuk-vara till PC som grafiskt visar data som överförs från en MCU till en dator via USB[19]. I Data Visualizer kan man mäta fram olika medelvärden med hjälp av markörer(se figur 1 nedan).

Figur 1. Graf från mätning av strömförbrukning då en led-lampa tänds vid varje interrupt. Värdena visar att lampan tänds ungefär varje sekund och har mellan ett interrupt en medelförbrukning på ca. 579,9

µA[19].

(18)

3

Relaterat arbete

Detta kapitel tar upp liknande forskning inom området som studien handlar om.

3.1 A Study of Technical Solutions for IoT End Devices and an Evaluation Guide for Their Performance

3.1.1 Område

Frida Lindberg och Edvard Collin[2] besvarar frågor som vilka IoT produkter ett företag som Tritech borde välja och vilken design de borde ha beroende på miljö. Författarna har gjort en studie av den framtida prognosen för IoT och har intervjuat experter inom området IoT. Experternas åsikter skiljer sig lite från varandra vilket gör att man får olika synvinklar på IoT. Lindberg och Collin har även lyft fram några företag som är stora inom IoT och de är alla överens om att IoT kommer fortsätta växa, men de vet inte till vilken grad eller inom vilket område. De tror att det främst kommer handla om apparater i hemmet, men även fordon, industri, transport och inom medicin.

3.1.2 Utförande

Lindberg och Collin delade upp arbetet i tre delar. De samlade in data i form av littera-turstudier men också genom intervjuer av experter inom området. Därefter genomförde de praktiska tester av två olika kommunikations-tekniker för att kunna studera effektkonsum-tion. Kommunikations-tekniken de använde var Bluetooth Low-Energy(BLE) och Thread. Deras studie tar även upp andra tekniker men de berättar att på grund av tidsrestriktioner genomförs bara tester på de två som togs fram som mest lämpliga. Lindberg och Collin har även gått igenom flera tänkbara lösningar för hårdvaran för att i slutändan ta ett beslut om vilken som skulle användas i studien.

3.1.3 Resultat

Studien har tagit fram data om strömförbrukningen vid användning av BLE och Thread. Deras reslutat visar att Thread drar mer ström än BLE. Exekveringstiden var dubbelt så lång för Thread som för BLE. Resultatet visar att vid användning av ett visst batteri håller batteriet med BLE i 19,3 dagar jämfört med med Thread där det bara håller 3,7 dagar.

(19)

3.2 Dynamic Power Reduction of Microprocessors for IoT Applications

3.2.1 Område

Mohamed Abd El-Razek, M. B. Abdelhalim och Hanady H. Issa[13] har gjort en studie där de lyfter fram vikten av att minimera effektförbrukningen för en mikroprocessor för att gynna den fortsatta utvecklingen av IoT-enheter. Författarna tar upp hur IoT-industrin ser ut idag och hur den kan tänkas växa under då närmaste åren. I studien använder författarna sig av en 32-bitars RISC processor. De använder sig av två tekniker för att sänka den dynamiska effektförbrukningen på processorn. De två teknikerna som används är Architectural Alternatives-based power optimization och Clock Gating Technique. Med den första tekniken optimerar författarna hårdvaran av processorn och med den andra tekniken stängs klockan av om den inte behövs.

3.2.2 Utförande

Med Architectural Alternatives-based power optimization använde författarna sig av fem olika adder circuits, ripple adder, Carry Look Ahead Adder (CLA), Carry Bypass Adder (CBA), Carry Skip Adder (CSKA) och Carry Save Adder (CSA). Med Clock Gating tekni-ken har de kombinerat systemklockan och kontrollsignalen som kommer från instruktions dekoden genom en AND grind och matar utsignalen till avbrottsenheten. Den kombinerade signalen kallas grindad klocksignal.

3.2.3 Resultat

Vid användning av den första tekniken och med ripple adder sänktes effektförbrukningen med 3.8 % och med den andra tekniken med 27 %.

3.3 Energy-Efficient System Design for IoT Devices

Hrishikesh Jayakumar, Arnab Raha, Younghyun Kim, Soubhagya Sutar, Woo Suk Lee, och Vijay Raghunathan[20] har gjort en studie där de presenterar en översikt av utma-ningar med att förse IoT-enheter med energi samt tar de upp tekniker för att förbättra energieffektiviteten för SAF(Set and Forget)-, IGMS(Geophysical Monitoring Systems)-, och TPC(Transiently Powered Computers)-enheter. En SAF-enhet kan t.ex. vara en vat-tenläckssensor. EN IGMS-enhet kan t.ex. vara trådlösa sensorer som mäter platser på en parkering. En TPC-enhet kan t.ex. var smartcards. SAF- och IGMS-enheter förväntas att ha batteritid på flera år och TPC-enheter har samma förväntningar då de inte har något batteri.

Författarna syftar på att det inte är praktiskt eller rimligt att förse fortsatt effekt till de enheter med begränsade energi-tillgångar eller energi-möjligheter. De menar att det behövs fortsatt forskning i det här området för att göra det effektivt. Författarna tar även upp att de IoT-enehter som försörjs genom t.ex. solenergi kan råka ut för att de inte får nå-gon energi p.g.a. väderförhållanden. Författarna ger i slutändan en personlig åsikt att låta minnes-teknologin växa och ha en större roll i att öka energieffektiviteten hos IoT-enheter.

(20)

4

Metod

I detta kapitel presenteras studiens genomförande samt de tillvägagångssätt som använts för att besvara forskningsfrågan. Vilken metod som valts att använda presenteras och även varför den valts. Sist beskrivs den tänkta uppbyggnaden av applikationerna.

4.1 Val av metod

Metoden som används är Controlled Experiment vilket betyder att man undersöker hypo-teser genom att manipulera en eller flera oberoende variabler för att mäta deras effekt på en eller flera beroende variabler. Controlled Experiments tillåter en göra slutsatser för hur variablerna förhåller sig till varandra. Varje kombination av de oberoende variablerna är en treatment[21], vilket rakt översatt från engelska till svenska betyder behandling, men kan tolkas som utförande eller test. Metoden är passande för den här studien där ett flertal tester kan utföras för att undersöka hypotesen, samt att den tillåter en att testa saker som hade kunnat vara svåra att testa i verkligheten.

4.2 Litteratursökning

Litteratursökningen går ut på att försöka hitta litteratur som är specifikt inriktade på området och om processorer. Information tas även fram från databaser som IEEE och DiVA. Litteratursökningen har fokus på att hitta texter som inte är för gamla. Just IoT är ett område som utvecklats mycket under de senaste åren och därför undviks en del material från innan 2000-talet. Litteraturstudien bidrar till en djupare förståelse inom området IoT, men även med en grundlig förståelse för processorer och deras påverkan på effektförbrukningen. Utöver insamling av material om området behövs det även kunskap om de specifika komponenterna som är del av studien. Där insamlas information i form av datablad.

4.3 Controlled Experiment

Controlled Experiment går ut på att undersöka vilken processor som dra mest ström/effekt i olika situationer. Hypotesen är att 8-bitar processorer drar mindre ström men är lång-sammare än en 32-bitars processor och behöver därför längre exekveringstid. Processorerna jämförs genom att köra samma applikationer för att se hur de presterar, med avseende på effektförbrukningen.

4.4 Val av komponenter

Innan studien började var det bestämt att utgå från en 32-bitars processor baserad på Cortex-M0+. Detta för att Cortex-M0+ är den mest strömsnåla av ARMs 32-bitars pro-cessorer. Genom att utgå från Cortex-M0+ gick det att hitta det urval av 32-bitars MCU:s som fanns tillgängliga. Eftersom fokus i studien är effektförbrukning valdes den MCU som hade lägst effektförbrukning ut nämligen ATSAML21J18B. Därefter valdes en 8-bitars MCU utefter egenskaperna från 32-bitars MCU:n, ATxmega256A3BU. För att kunna få

(21)

fram jämförbara resultat vid mätningarna behövs det att båda MCU:s har liknande pere-ferienheter. Själva utvecklingskorten som används är XMEGA-A3BU Xplained och SAM L21 Xplained Pro som båda är utrustade med power-headers vilket gör det möjligt att mäta strömförbrukningen på endast MCU:n.

4.5 Applikations-uppbyggnad

Utvecklingen av de tre applikationer som testar effektförbrukningen av processorerna grun-das på IoT-enheter som existerar idag. De tre applikationerna testar tre olika situationer då det kan tänkas ge olika resultat beroende på om det är 8-bitars eller 32-bitars processorer som används. Enligt [11] finns det IoT-enheter som mäter något från omgivningen med hjälp av en sensor och som skickas vidare över internet. Med en sådan enhet behöver inte processorn köra hela tiden utan behöver bara utföra en mätning av omgivningen vid t.ex. var tionde minut. Vilket betyder att under den tiden som det inte utförs någon mätning behöver inte processorn köra, utan kan gå in i någon form av sleep mode. Enligt [11] finns det även IoT-enheter som behöver vara mer aktiva. Vilket skulle innebära en applikation som utför mätningar mer frekvent eller utför något efter en mätning gjorts. Vissa appli-kationer kan utföra beräkningar eller bara utföra mätningar, skicka vidare det uppmätta värdet och låta t.ex. en server utföra beräkningen. Fördelen med att utföra beräkningen i själva IoT-enheten är att serven belastas mindre. Samtliga applikationer använder standard optimeringen 01 i kompilatorn i Atmel Studio. Med denna optimering är koden passande för debugging [22]

• Applikation 1

Den första applikationen läser av värden från ADC(Analog-to-Digital Converter) med 10 sekunders mellanrum med hjälp av RTC-interrupt. Detta är med andra ord en applikation som inte kommer vara aktiv så ofta och så länge. Värdet sparas i en variabel men inget mer, då detta ska simulera att värdet skickas vidare efter en läsning. När den inte är aktiv kommer applikationen gå över till sleep mode: POWER-SAVE mode för 8-bitars MCU:n och STANDBY mode för 32-bitars MCU:n. Val av sleep mode och vilken typ av interrupt som används för 8-bitars MCU:n gjordes med hjälp av tabellen i [23] och för 32-bitars MCU:n med hjälp av databladet [16]. I [23] finns även rekommendationer för hur man kan sänka effektförbrukningen för 8-bitars MCU:n. Dessa tillämpas i alla tre applikationer för 8-bitars MCU:n.

• Applikation 2

Den andra applikationen läser av värden från ADC:n ungefär var 10:e ms och adderar ihop värdena. Efter 1000 värden beräknas medelvärdet av de lagrade värdena i form av single-precision floating point. Beräkningarna genomförs med heltal. Applikatio-nen använder sig av IDLE sleep mode och Timer-interrupt. Vid första läsningen sätts en pinne hög och efter att medelvärdet beräknats sätts den låg. Detta för att lättare kunna se i graferna var mätningen ska göras.

(22)

• Applikation 3

Den tredje applikationen läser av värden från ADC:n ungefär var 10:e ms och lagrar dessa i en array. Värdena i array:n filtreras med ett FIR(Finit Impulse Response)-bandpass filter. Filtert är designat för att försöka få 8-bitars processorn att precis hinna med beräkningarna innan nästa interrupt sker (10 ms). En sådan här appli-kation hade kunnat användas för att mätta effekt av en signal inom ett visst fre-kvensområde. För att jämföra effektförbrukningen med 32-bitars MCU:n utförs två scenarion med denna. Detta för att en 32-bitars processor utför beräkningar fortare än vad en 8-bitars processor gör. Vilket betyder att 32-bitars MCU:n kommer vara färdig med mätningarna och beräkningarna före 8-bitars MCU:n, och då kan den an-tingen gå in i sleep mode för att spara ström eller så kan man ändra klockfrekvensen så det tar lika lång tid med beräkningarna. Därför utförs det två scenarion för att se i vilket scenarion MCU:n prestera bäst i, eller om det är samma. I det ena scenariot är klockfrekvensen ändrad så att beräkningen tar samma tid som för 8-bitars MCU:n. I det andra scenariot är inte frekvensen ändrad men efter en beräkning går 32-bitars MCU:n in i sleep mode IDLE.

4.6 Mätmetod

Valet gjordes att använda Atmel Power Debugger, se kapitel 2 sektion 2.2.3. Förutom att den kan mäta effektförbrukningen på en krets är den anpassad för ett program tillgängligt i Atmel Studio. Atmel Studio har använts tidigare och är väl känt. Programmet Data Visualizer har möjlighet att visa strömförbrukningen i diagram vilket är en lämplig lösning för att visa mätningarna i resultaten. Andra fördelar med Visualizer är att den kan visa vad som händer i specifika delar av en programkod vilket kan ha betydelse vid analyseringen av resultatet.

(23)

5

Resultat och analys

I det här kapitlet förklaras utförandet av mätningarna samt förberedelser för hårdvaran och mjukvaran. Senare presenteras resultaten från mätningarna. Den slutgiltiga koden går att hitta på github via: https://github.com/pattyjonsson/Ex-jobb.git

5.1 Utförande

I Atmel Power Debugger User Guide[19] finns det beskrivet hur man ska koppla ihop en MCU med debuggern. I guiden beskrivs det med både bilder och text hur en AT-SAML21J18B ska kopplas, se figur 2 nedan. Det beskrivs hur man kan koppla in en 8-bitars MCU men det är inte samma som används i denna studie. Med hjälp av databladet för ATxmega256A3BU [24] och användarguiden för debuggern[19] går det att koppla in debug-gern via JTAG, se figur 3 nedan. I guiden finns det några exempel på hur man kan testa strömkonsumptionen då en led-lampa blinkar. Genom att utföra dessa korta tester kan man lätt se om det är kopplat rätt samt få en snabb inblick hur Data Visualizer fungerar.

Figur 2. Koppling mellan ATSAML21J18B och Atmel Power debugger.

(24)

Figur 3.Koppling mellan ATxmega256A3BU och Atmel Power debugger.

5.2 Resultat

5.2.1 Applikation 1

Den första applikationen läser från ADC:n var 10:e sekund genom RTC-interrupt. Koden för båda MCU ser annorlunda ut p.g.a. hur de hanterar interrupt m.m., men de utför interrupt med samma tidsintervall. Koden för 8-bitars MCU:n innehåller även kod som bl.a. stänger av klockor som inte används för att sänka effektförbrukningen ytterligare. För 32-bitars MCU:n används STANDBY-mode när systemet sover och för 8-bitars MCU:n används POWER-SAVE-mode. POWER-SAVE-mode är enligt [18] det mest strömsnåla sleep mode som finns för 8-bitars-kortet. I [18] finns en tabell som tar upp vilka klockor som kan köra under vilket sleep mode samt vad effektförbrukningen kan ligga på för de olika sleep moden. POWER-SAVE-mode är enligt tabellen det sleep mode där effektför-brukningen är lägst och som samtidigt kan ha RTC-interrupts. STANDBY-mode är det sleep mode som för 32-bitars-kortet har lägst effektförbrukning och samtidigt kan använda RTC-interrupts. Graferna nedan (figur 4 och figur 5) visar hur mätningarna med appli-kation 1 för de båda korten blev. Pilarna pekar på mätlinjer som i figur 4 och 5 mäter upp medelvärdet av ström- och effektförbrukningen från ett interrupt till nästa. Värdena presenterar i tabell 1 nedan.

(25)

Figur 4. Graf från mätningar med 8-bitars MCU och applikation 1. Pilarna pekar på mätlinjerna som mäter förbrukningen mellan ett interrupt.

Figur 5. Graf från mätningar med 32-bitars MCU och applikation 1. Pilarna pekar på mätlinjerna som mäter förbrukningen mellan ett interrupt.

MCU Ström Effekt 8-bit 0,868 µA 2,90 µW 32-bit 1,73 µA 5,82 µW

Tabell 1. Resultat från mätningar med applikation 1. Strömmen är den genomsnittliga strömförbrukningen och effekten, den genomsnittliga effektförbrukningen under ett interrupt till nästa.

(26)

5.2.2 Applikation 2

I den andra applikationen används IDLE-mode för båda korten. Till skillnad från den första applikationen sätts en pinne hög vid första läsningen från ADC:n och låg efter 1000 värden och medelvärdet av värdena beräknats. När pinnen sätts hög och låg, syns i graferna som den nedre linjen(se figur 6 och 7 nedan). Den övre linjen är strömmen. Medelvärdet av ström- och effektförbrukningen mäts på den undre linjen. Varje interrupt sker vid ungefär var 10:e ms och istället för att använda RTC-timern används en TC-timer. Detta för att 10 ms är för snabbt för RTC:n. Vid varje interrupt tas ett värde från ADC:n och adderas med föregående värden. Efter 1000 värden beräknas medelvärdet av alla värdena och processen börjar om.

Figur 6. Graf från mätningar med 8-bitars MCU och applikation 2. Pilarna pekar på mätlinjerna. Den övre linjen är strömmen och den undre är pinnen som sätts hög och låg.

(27)

Figur 7. Graf från mätningar med 32-bitars MCU och applikation 2. Pilarna pekar på mätlinjerna. Den övre linjen är strömmen och den undre är pinnen som sätts hög och låg.

Tabell 2 visar resultatet från mätningarna med den andra applikationen för båda mikro-kontroller.

MCU Ström Effekt 8-bit 3,60 mA 12,0 mW 32-bit 0,416 mA 1,4 mW

Tabell 2. Resultat från mätningar med applikation 2. Värdena är genomsnittliga värden.

5.2.3 Applikation 3

För 8-bitars MCU:n används inget sleep mode. Efter det filtreras värdena med ett FIR(Finit Impulse Response)-bandpass filter. Designen av filtret gjordes med hjälp av Matlab och gav 647 koefficienter som ska multipliceras in i array:n. Designen gjordes så att 8-bitars MCU:n skulle precis hinna med att göra färdigt beräkningen innan nästa interrupt började (se figur 8). För 32-bitars MCU:n utförs samma beräkning men det utförs två mätningar. En mätning där klockfrekvensen är anpassad så kortet ska ha svårt att hinna med (se figur 9) och en mätning där kortet går in i IDLE-mode efter beräkningen slutförts (se figur 10). Beräkningarna utförs med single-precision floating point. För att se koden för 32-bitars MCU:n. Mätningen där frekvensen är ändrad, gick det inte att påverka så att 32-bitars kortet fick en periodtid på exakt 10 ms utan det närmaste som gick att komma till låg på lite över 8 ms. Anledningen till det beror på värdena som TC-klockan gick att dividera med.

(28)

Figur 8. Graf från mätningar med 8-bitars MCU och applikation 3.

Figur 9. Graf från mätningar med 32-bitars MCU med sleep mode och applikation 3.

(29)

Figur 10. Graf från mätningar med 32-bitars MCU utan sleep mode och applikation 3.

Tabell 3 visar resultatet från mätningarna med den tredje applikationen för båda mikro-kontroller.

MCU Ström Effekt 8-bit 4,65 mA 15,52 mW 32-bit med sleep mode 0,451 mA 1,51mW 32-bit utan sleep mode 0,378 mA 1,27mW

Tabell 3. Resultat från mätningar med applikation 3.

5.3 Analys

5.3.1 Applikation 1

Den genomsnittliga ström- och effektförbrukningen är lite mer är dubbelt så stor för 32-bitars MCU:n jämfört med 8-32-bitars MCU:n (se tabell 1). Dock är resultatet lågt för båda MCU:s. När man tittar på värdena vid varje interrupt kan man se att strömförbrukningen ligger någonstans runt 4-5 mA för 8-bitars MCU:n men tittar man på grafen för 32-bitars MCU:n ligger strömförbrukningen på runt 300 µA. D.v.s. det går åt mer ström vid varje interrupt för 8-bitars-kortet än för 32-bitars-kortet. Det som gör att 32-bitars-kortet har en högre genomsnittligt förbrukning är att det förbrukas en liten mängd vid varje RTC-puls som ligger på ungefär 40 µA (se figur 5).

(30)

5.3.2 Applikation 2

Likt den första applikationen går det år mer ström vid varje interrupt för 8-bitars MCU:n jämför med 32-bitars MCU:n. Det som skiljer sig åt är dock att effektförbrukningen för 8-bitars kortet är nästan 10 gånger så stor, jämfört med 32-bitars kortet. Med IDLE sleep mode har båda kortens effektförbrukning ökat drastiskt.

5.3.3 Applikation 3

Den tredje applikation visar större skillnader mellan kortet än med de tidigare applika-tionerna. Effektförbrukningnen har ökat något jämfört med den andra applikationen för 8-bitars MCU:n. Ökningen för 32-bitars MCU:n är dock inte lika stor. Där är en skillnad i effektförbrukning mellan de två mätningarna med 32-bitars kortet. Skillnaden skulle kunna bero på att det inte gick att få till en periodtid på 10 ms för applikationen utan sleep mode.

(31)

6

Diskussion

Det här kapitlet innehåller diskussion angående valet av metod samt hur författaren anser att valet har påverkat resultatet. Därefter diskuteras själva resultatet och vad som hade kunnat göras annorlunda.

6.1 Metod

Valet av att använda Controlled Experiment anses ha varit det bästa alternativet. De andra metoderna som man hade kunnat välja har inte varit passande till just denna studien. Denna studien har varit fokuserad på att utföra tester för att se vilket alternativ som är bäst och just därför har Controlled Experiment varit den metoden som ansetts bäst. Applikationerna har varit relativt lika till hur de beskrivs i metoden. Vissa begränsningar har fått göras. Det fanns en viss begränsning för designen för FIR-filtret. Vid framtagandet av filtret tappade filtret sin form. Det visade sig att det inte gick att få fram fler koefficienter utan att förstöra filtrets form. Det hade kanske varit möjligt att ta fram fler koefficienter så 8-bitars MCU:n hade fått jobba ännu mer men då hade det inte blivit ett rimligt filter.

6.2 Resultat

I det första applikationen är det tydligt vilken MCU som är bäst när det kommer till låg effektförbrukning. Man kan studera värdena och påstå att båda MCU:s har låg effektför-brukning men om man tar hänsyn till batteritid skulle det innebära att 8-bitars MCU:n skulle ha en mer än dubbelt så lång batteritid. Hade det inte varit för den lilla extra delen ström som går åt vid varje RTC-puls för 32-bitars MCU:n hade den varit det bättre alter-nativet. Något annat som hade kunnat påverka resultatet i vilken som är bäst är effekten det skulle gå åt när kortet ska skicka vidare värdena till t.ex. en server. Det skulle kunna vara så att att effektförbrukningen stiger avservärt för 8-bitars kortet vid användning av t.ex. bluetooth. Resultatet hade även kunnat se annorlunda ut om det var så att det skulle utföras någon form av beräkning i koden. Med koden för applikation 1 är tanken att even-tuella beräkningar sker någon annanstans t.ex. hos en server.

Applikation 2 visade drastiska förändringar från applikation 1. Effektförbrukningen för 8-bitars MCU:n steg avsevärt medan effektförbrukningen för 32-bitars MCU:n också steg men inte lika mycket. Genom att bara ändra sleep mode och timer blev det istället 32-bitars kortet som hade den lägre effektförbrukningen. Det var ett bra val att mäta med hjälp av att sätta en pinne hög, det hade annars varit svårt att se när det gått 1000 läsningar. Till skillnad från applikation 1 görs en beräkning på MCU:n innan det ev. skulle ha skickats vidare. Om man jämför värdet från då 8-bitars kortet läser från ADC:n i applikation 1 och när den läser från ADC:n i applikation 2, så ser det ut som att kortet då drar runt 4 mA i båda fallen. Det som ger applikation 2 ett så högt medelvärde beror på vad den ligger på i IDLE sleep mode. I IDLE sleep mode ligger den på runt 3,6 mA medans i POWER-SAVE mode ligger den på nära 0 A. I [17] står det att genom att bara köra IDLE mode och stänga av JTAG och andra periferier som inte används kan strömförbrukningen komma ner till 0,8 mA för denna 8-bitars MCU:n. Men längre ner i databladet visas ett exempel

(32)

där man kan använda IDLE sleep mode med ADC-interrupts och då drar kortet runt 2,8 mA vilket är lägre än vad som fåtts fram i resultatet i den här studien. Anledning till att databladet visar en lägre strömförbrukning skulle kunna bero på att det beskriver att man använder ADC-interrupt och inte Timer-interrupt. Koden för detta arbete använder TC0 och kan tillföra att det går åt mer ström. Hade denna tekniken använts hade man kanske också kunnat få fram en lägre strömförbrukning och där med sänka effektförbrukningen för 8-bitars kortet, men även om man skulle fått ner strömförbrukningen till 2,8 mA har 32-bitars kortet fortfarande en lägre ström- och effektförbrukning än det. Det hade kanske kunnat gå att få ner strömförbrukningen genom att använda ett annat 8-bitars kort än det som använts i den här studien. Likt den första applikationen skulle även resultatet för denna applikationen kunna se annorlunda ut när man testar och skickar vidare värdena via bluetooth också.

För applikation 3 ökade inte effektförbrukningen särskilt mycket för 32-bitars kortet. Ök-ningen för 8-bitars kortet var något högre men den var inte lika stor som från första applikationen till den andra. Tittar vi på mätvärdena för 32-bitars MCU:n finns där en viss skillnad i effektförbrukning. Det är svårt att avgöra vad det beror på men det skulle kunna bero på att det inte gick att få till periodtiden 10 ms för koden utan sleep mode. Hypotesen var att den applikationen utan sleep mode skulle ha en högre genomsnittlig effektförbrukning p.g.a. att den inte använde sig av IDLE-mode som är tänkt ska sänka effektförbrukningen, och att den under 10 ms skulle ligga på en högre effektförbrukning under längre tid jämfört med applikationen som använder IDLE-mode. Om man tittar på graferna för 32-bitars kortet (se figur 9 och 10) kan man se att vid varje interrupt är där en avtagande strömförbrukning vilket hade kunnat vara svårt att mäta på. Genom att sätta en pinne hög och låg var det lätt att se var ett interrupt började samt slutade. Troligtvis beror de kurvorna på kondensatorer på kortet.

(33)

7

Slutsatser och vidare forskning

7.1 Slutsats

1. I vilka sammanhang kan en 32-bitars-, snarare än en 8-bitars-processor vara lämplig att använda, baserat på effektförbrukning?

Den här studien visar att för applikationer där det ska göras beräkningar eller mät-ningar med korta intervaller är det mer lämpligt att välja den 32-bitars-processor som använts i denna studien än den 8-bitars-processor som använts. Ska man däremot använda applikationer där batteritiden har betydelse samt att eventuella mätningar eller dylikt sker med långa intervaller är den 8-bitars-processor som använts i studien mer lämplig.

7.2 Vidare forskning

För att kunna få fram ett riktigt resultat som även tar hänsyn till den effektförbrukningen då eventuella värden skickas via t.ex. bluetooth behövs det vidare forskning. En studie där man slår samman resultatet från denna studie samt den studie som testade effekt-förbrukningen med olika kommunikations-tekniker(se avsnitt 3.1). Det skulle även kunna genomföras tester med andra processorer men även med fler kommunikations-tekniker som inte testas i studien från avsnitt 3.1. Man hade även kunna utföra tester med flera appli-kationer som riktar in sig på mer specifika IoT-enheter för att få en mer klar syn på vilken processor som är mest lämpad.

(34)

Referenser

[1] P. Suresh, J. Vijay Daniel, V. Parthasarathy. A state of the art review on the Internet of Things (IoT) History, Technology and fields of deployment. 2014 IEEE Internatio-nal Conference on Science, Engineering and Management Research Chennai, India. doi: 10.1109/ICSEMR.2014.7043637

[2] Lindberg F, Collin E, A Study of Technical Solutions for IoT End Devices and an Evaluation Guide for Their Performance, 2016 DiVA Independent thesis Advanced level at KTH ROYAL INSTITUTE OF TECHNOLOGY

[3] Atmel. Atmel AVR 8-bit and 32-bit Microcontrollers. Hämtat från: http://www.atmel.com/products/microcontrollers/avr/megaavr.aspx 2017-03-13 [4] Michael R. Betker, John S. Fernando, Shaun P. Whalen. The History of the

Micro-processor. 1997 IEEE Bell Labs Technical Journal doi:10.1002/bltj.2082

[5] Wikipedia. Intel MCS-51. Hämtat från: https://en.wikipedia.org/wiki/Intel_MCS-51 2017-05

[6] Circuitstoday. Hämtat från: http://www.circuitstoday.com/8051-microcontroller 2017-05

[7] N.Storey. Electronics A System Approach. Fifth edition. Pearson Education Limited 2013(print and electronic)

[8] P.Foyer. Mikroprocessorteknik. Upplaga 1:6. Printed by Holmbergs Malmö AB, Swe-den 2011.

[9] Yiu J, The Definitive Guide to ARM CortexR -M0 and Cortex-M0+ Processors.R

2nd ed. San Diego : Elsevier Science, 2015

[10] Yiu J, The Definitive Guide to ARM CortexR -M3 and Cortex-M4 Processors. Ed.:R

Third edition. Amsterdam : Newnes. 2013

[11] Mukhopadhyay, Subhas Chandra. Internet of Things [electronic resource] : Challenges and Opportunities. First Edition. Dordrecht : Springer, 2014

[12] Svanfeldt-Winter O, Energy efficiency of ARM architectures for cloud computing applications, 2011 DiVA Master of Science Thesis at Department of Information Technologies Åbo Akademi University

[13] Mohamed Abd El-Razek, M. B. Abdelhalim, Hanady H. IssaDynamic power reduc-tion of microprocessors for IoT applicareduc-tions. 2016 IEEE, 2016 28th Internareduc-tional Conference on Microelectronics (ICM) Giza, Egypt. doi: 10.1109/ICM.2016.7847874 [14] Ke L, Simulation Based Approach to Estimate Energy Consumption for Embedded Processors, 2015 DiVA Independent thesis Advanced level at Halmstad University

(35)

[15] Atmel. SAM L MCUs, Setting a New Low Power Standard for ARM Cortex-M0+ -Based Microcontrollers. Hämtat från: http://www.atmel.com/products/microcontrollers/arm/sam-l.aspx 2017-03-10 [16] Atmel. Low power features of SAM L series devices Hämtat från:

http://www.atmel.com/Images/Atmel-42412-Low-Power-Features-of-SAM-L-Series-Devices_ApplicationNote_AT04296.pdf 2017-06-16

[17] Atmel. AT06549: Ultra Low Power Techniques. Hämtat från:

http://www.atmel.com/images/atmel-42411-ultra-low-power-techniques-at06549_application-note.pdf 2017/07/21

[18] Atmel. 8/16-bit Atmel XMEGA A3BUMicrocontroller. Hämtat från: http://www.atmel.com/images/Atmel-8362-8-and-16bit-AVR-microcontroller-ATxmega256A3BU_datasheet.pdf 2017-07-22

[19] Atmel. Power Debugger User Guide. Hämtat från: http://www.atmel.com/Images/Atmel-42696-Power-Debugger_UserGuide.pdf, 2017/03/09

[20] Hrishikesh Jayakumar, Arnab Raha, Younghyun Kim, Soubhagya Sutar, Woo Suk Lee, andVijay Raghunathan. Energy-Efficient System Design for IoT Devices. 2016 IEEE doi:10.1109/WF-IoT.2016.7845449

[21] Easterbrook, S., Singer, J., Storey, M.-A., Damian, D.: Selecting Empirical Methods for Software Engineering Research. In: Guide to Advanced Empirical Software Engi-neering. pp. 285–311. Springer (2008)

[22] Atmel. Atmel Studio Compiler Options. Hämtat från: http://www.atmel.com/webdoc/atmelstudio/armtoolchain.section.bna_iff_lc.html 2017/08/16

[23] Atmel. Low power consumption techniques for XMEGA XPLAINED kits Hämtat från: http://www.atmel.com/Images/Atmel-42456-Low-Power-Consumption-Techniques-for-XMEGA-XPLAINED-Kits_Application-Note_AT11487.pdf

16/06/17

[24] Atmel. Atmel AVR1935: XMEGA-A3BU Xplained Getting Started Guide. Hämtat från: http://www.atmel.com/Images/doc8324.pdf

Figure

Figur 1. Graf från mätning av strömförbrukning då en led-lampa tänds vid varje interrupt
Figur 2. Koppling mellan ATSAML21J18B och Atmel Power debugger.
Figur 3.Koppling mellan ATxmega256A3BU och Atmel Power debugger.
Figur 4. Graf från mätningar med 8-bitars MCU och applikation 1. Pilarna pekar på mätlinjerna som mäter förbrukningen mellan ett interrupt.
+5

References

Related documents

KES har använts för att mäta dragprovning, skjuvning, böjning, kompression, friktion, ytojämnhet, termiska egenskaper och luftgenomsläpplighet för stickade tyger utav

Denna studie har som syfte att definiera de mest moderna interventionerna inom hälsopromotion gentemot medarbetarna på sjukvårdsorganisationer i Sverige, samt skapa

Intresset för ekologiska kläder är högre bland Eko-varuhusets kunder men majoriteten av de 30 tillfrågade kände dock inte till företagen Anja Hynynen och

När det kommer till avgränsningar av stora storlekar för kvinnor anser två av bolagen att det finns ett visst samband mellan varumärkesidentiteten och. avsaknaden av

En annan viktig aspekt är att exponeras i rätt sammanhang med rätt individer (Parment 2008, s. Kärnan är det som kvarstår över tiden, varumärkets själ. Stil, är den

konsumenters attityder och värderingar har någon sorts inverkan på hur konsumenter ställer sig i sina köpbeslut, vilket är väsentligt för denna uppsats då den undersöker

Att som företag ta socialt och etiskt ansvar genom CSR strategier CSR är en förkortning av Corporate Social Responsibility, ett begrepp som används inom flera branscher

De feministiska teorierna som används belyser kvinnlig styrka på lite olika sätt, som uttryckt, är postfeminismen mindre benägen att kritisera representationer där kvinnan