En anpassad BIOS sparar ström i befintliga konstruktioner
Låg energiförbrukning och högpresterande beräkningskapacitet är motstridiga parametrar i en datorkortsdesign. Processorer, som Intel Atom, har introducerat nya procestekniker och smarta processorfunktioner för att uppnå mer med mindre ström. Växlingen mellan tunga beräkningsmoment och inaktiva tillstånd sker omedelbart för att minimera energiförbrukningen.
Liknande funktionalitet kan uppnås på en plattform baserad på processorfamiljerna Celeron M/Pentium M och inbäddade chipsets 855GME med hjälp av en anpassad inbäddad BIOS och hårdvaruinitierade System Management Interrupts, SMI. Kraftfull prestanda i kombination med ytterligare lågenergiegenskaper uppnås i en utsträckning som annars bara samtida ultra mobila processorplattformar tillåter.
Det följande fiktiva exemplet baseras på erfarenheter från ett faktiskt utvecklingsprojekt som använder Hectronic H6036, ett PC/104 datorkort med en Intel Celeron M, ULV-processor som körs med 1 GHz klockhastighet och det inbyggda chipsetet 855GME. Vi antar att data kommer att samlas in och bearbetas i fält. Applikationen behöver batteridrift. Applikationen växlar mellan tung databearbetning och perioder av väntan på ytterligare data att samla in och bearbeta.
Kompletterande datorkort
En dubbeldatorbrickslösning förbättrar relationen mellan energiförbrukning och processorkapacitet. En lågpris-mikrokontroller körs kontinuerligt. Celeron M-processorn bearbetar data, vanligtvis på mindre än en sekund, och går sedan in i Suspend to RAM, STR. I detta tillstånd förbrukar endast RAM-minnet och utvalda delar av chipsetet ström.
En möjlighet vore att låta Linux OS styra inträde och utträde ur STR. Varje inträde i STR och utträde ur STR skulle då vara under en lång tidsperiod jämfört med den tid som används för databehandling, vilket resulterar i ökad energiförbrukning. Ett anpassat inbyggt BIOS och SMI, initierat av hårdvara, skulle utföra samma åtgärder men betydligt snabbare, vilket resulterar i en väsentligt minskad energiförbrukning och ökad batteritid.
Konfigurera chipset
Data från sensorerna lagras i mikrokontrollerns FIFO. Samtidigt är H6036-datorplattan med Linux i mikrosömn. En General Purpose I/O, GPIO-port, dras hög av mikrokontrollern när FIFO är full för att väcka H6036-plattan från mikrosömn.
Inbäddade BIOS anpassningar gjorda av Hectronic inkludera funktioner för att ställa in 855GME-chipsetet för att utlösa en väckningshändelse från en positiv flank på GPIO-porten. H6036-kortet lämnar STR vid väckningshändelsen. Proceduren liknar en återställning men en stor del av koden som vanligtvis körs av BIOS vid en återställning är undantagen och gör STR-utgången betydligt snabbare.
Bilden visar händelseförloppet när H6036 lämnar STR via GPIO-porten (gröna grafen) som dras hög. Först slås hårdvaruspänningen på och stabiliseras inom 260 ms. Strömförbrukningen ökar (röda grafen) till en högre nivå när den inbäddade BIOS:en körs utan cacheminne. Processorn går långsamt i cirka 200 ms innan cacheminnet slås på. Maximal strömförbrukning uppnås när chipset har konfigurerat minnet och den inbäddade BIOS:en körs i full hastighet. Uppstartssekvensen (markerad med pilar), från det att GPIO-porten dras hög till ett fullt fungerande system, med en strömförbrukning på 7,0 W, är 680 ms lång.
När Celeron M-processorn på H6036-kortet har bearbetat all data från mikrokontrollerns FIFO går Linux in i mikrosömn och väntar på STR-inträde för att spara ström. Mikrokontrollern tar emot information via LPC-bussen att databehandlingen är klar. Detta är signalen för att initiera STR-inträde på H6036-kortet och mikrokontrollern drar GPIO-porten låg.
Går in i viloläge till RAM
En negativ flank på GPIO-porten utlöser en SMI i chipsetet. I en inbyggd PC genereras många SMI under normal drift. Den inbyggda BIOS-disponenten bestämmer vilken kod som ska köras vid varje SMI. Den inbyggda BIOS-disponenten pekar ut koden för att gå in i STR i detta fall.
Data i hårdvaruregistren sparas i RAM. Slutligen uppnås STR-posten när BIOS skriver till ett chipsetregister. Celeron M-processorn stannar och Linux förs från mikrosömn till ett totalt exekveringsstopp.
Bilden visar händelseförloppet när H6036 går in i STR via GPIO-porten (grönt diagram) genom att dras låg. Först ökar strömförbrukningen (rött diagram) när det inbyggda BIOS kör kod som hanterar SMI. Stoppproceduren (markerad med pilar) gör att systemet går in i STR på 22 ms och minskar strömförbrukningen från 7,0 W till 0,7 W. 0,7 W är den effekt som förbrukas i RAM och utvalda delar i chipsetet.
Att gå in i STR innebär en övergång till standbyström på H6036-kortet. Spänningsnivåerna förblir desamma men endast ett minimiantal komponenter drivs för att undvika läckströmmar. Endast RAM och delar av chipset som behövs för kortets uppstartsprocess drivs.
Slutsatser
I exempelapplikationen, för att samla in och bearbeta data i fält, kan det finnas långa tidsperioder innan sensorerna upptäcker signaler. Att upptäcka och samla in data kräver låg beräkningskraft men utökad uthållighet. Att använda en mikrokontroller för dessa uppgifter förlänger batteritiden.
När tillräckligt med data har samlats in för att motivera bearbetning krävs kraftfull processorkapacitet. Celeron M på 1 GHz är tillräckligt kraftfull utan att onödigt öka strömförbrukningen. Den anpassade BIOS styr STR in- och utgång.
Alternativet att använda Linux för att hantera STR-ingång och -utgång skulle leda till procedurer på ett par sekunder vardera. I en applikation där den faktiska databehandlingen tar 1 sekund skulle proceduren som helhet ta cirka 5 sekunder. STR-ingång och -utgång skulle ta längre tid än själva bearbetningen. Det är slöseri med ström och batteritid.
STR-in- och utgångsproceduren som beskrivs i denna artikel är totalt cirka 0,7 sekunder. För hela proceduren, inklusive STR-utgång, 1 sekunds databehandling och STR-ingång, reduceras tiden till 1,5 sekunder. En energiförbrukning på 7 Watt under 1,5 sekunder istället för 5 sekunder kan vara skillnaden som gör det möjligt att utveckla en batteridriven applikation för fältbruk med tillräcklig processorkraft.