Kopioi artikkelin PDF-versio

Tehohukka syö markkoja

TEHO

Matala tehonkulutus on noussut esille yhä enemmän kannettavien sovellusten myötä. Nykyisin ei ole yhdentekevää kuluttaako laite sata vai viisi wattia. Suunnittelijalla on monipuoliset mahdollisuudet pienentää tehonkulutusta.

Aiemmin elektroniikkalaitteissa suorituskyky-hinta -suhde oli tärkeä suunnitteluparametri. Nykyisin ongelma ei ole enää kaksitahoinen, vaan mukaan on tullut kolmas muuttuja: tehonkulutus. Sopivan suhteen löytäminen muuttujien tehonkulutus, suorituskyky ja hinta välille on yhä useammin suunnittelun lähtökohtana.

Pienentynyttä tehonkulutusta on voimakkaasti edistänyt sekä kannettavien laitteiden yleistyminen että integrointitiheyden kasvu. Eräät tahot ovat jopa arvioineet, että jokainen watti lisää tehonkulutuksessa lisää koko järjestelmän kustannuksia 15 dollaria.

Tehonkulutus vaikuttaa jäähdytykseen, laitteen kokoon ja painoon. Lisäksi suuri tehonkulutus usein lisää virhetodennäköisyyttä, joka tietoliikennelaitteissa aiheuttaa ongelmia. Suuri tehonkulutus synnyttää usein ongelmia ja kustannuksia myös komponenttien pakkaamisessa. Kahden watin pakkauksen hinta saattaa olla nelinkertainen yhden watin pakkaukseen nähden.

Tämän päivän ASIC-piireissä ei useinkaan ole pulmana, etteikö piirille mahtuisi tarpeeksi porttipiirejä, vaan ongelman muodostaa tehonkulutuksen mukanaan tuomat lämpöongelmat. Tehonkulutuksella on suuri merkitys suurimmassa osassa nykypäivän ja tulevaisuuden elektronisia laitteita.

Tehot alas monella tasolla

Tehonkulutuksen pienentämiseen on useita keinoja. Jos halutaan tehdä markkinoiden mielestä vähän kuluttava tuote, on ongelmaan tartuttava monelta eri taholta. Vähän tehoa vievän laitteen suunnittelussa on tehonkulutus pidettävä mielessä aina algoritmeista transistoritason suunnitteluun. Tämä aiheuttaa usein ongelmia. Suunnittelijoiden täytyy tietää miten he optimoivat tehonkulutusta siten, ettei saavutettua hyötyä menetetä heti jollakin muulla suunnittelun tasolla.

Useimmat keinot tehonkulutuksen pienentämiseen pohjautuvat kuvassa 1 olevan kaavan soveltamiseen. Kaava kuvaa piirissä tapahtuvaa kapasitiivista tehonkulutusta. Kapasitiivinen tehonkulutus syntyy kun piirissä olevia kuormakapasitansseja ladataan ja puretaan. Kellotaajuuden, käyttöjännitteen, kytkentäaktiviteetin ja kuormakapasitanssin pienentäminen vähentää laitteen tehonkulutusta. Kapasitiivinen tehonkulutus on usein noin 70­90 prosenttia kokonaistehonkulutuksesta.

Toinen merkittävä tekijä on oikosulkuteho. Oikosulkutehoa kuluu, kun virtaa kulkee hetkellisesti käyttöjännitteestä maahan loogisen portin vaihtaessa tilaa. Oikosulkutehon osuus koko tehonkulutuksesta on noin 30 prosenttia.

Käyttöjännitteen vaikutus kokonaistehonkulutukseen on suurin, mutta sitäkään ei voi laskea loputtomiin. Sen pienentäminen aiheuttaa viiveiden kasvamista ja ongelmien lisääntymistä suunnittelussa. Myös muita keinoja on keksittävä. Kuten lähes kaikkialla, pieni tehonkulutus ei tule ilmaiseksi. Kompromisseja on tehtävä aina ja pieni tehonkulutus on pyrittävä saavuttamaan mahdollisimman pienin uhrauksin.

Järjestelmän tehonkulutuksen optimointi

Järjestelmän tehonkulutusta suunniteltaessa yksi tärkeimpiä huomioon otettavia asioita on integrointiaste. Mitä enemmän toiminnallisuutta saadaan integroitua piin pinnalle, sen pienempi on laitteen tehonkulutus. Pienet integroidut rakenteet tekevät kapasitansseista pieniä ja näin ollen toiminnasta vähemmän tehoa kuluttavan ja vieläpä nopeamman.

Itse integroinnin toteutustavassakin voidaan saavuttaa suuria etuja eri vaihtoehtojen välillä. Monissa tilanteissa ohjelmoitava logiikkapiiri on houkutteleva vaihtoehto, mutta tehonkulutuksen kannalta se ei ole kovinkaan hyvä ratkaisu. Puhtaasti tehonkulutusta ajatellen parempi ratkaisu on ASIC-piiri ja etenkin "full-custom" ASIC-piiri, joka antaa mahdollisuuden tehon optimointiin. Tosin tässä tapauksessa tehonkulutusta vaihdetaan suunnitteluaikaan ja -kustannuksiin.

Tehonkulutusta pienentää myös pienitaajuisten järjestelmäkellojen käyttö. Korkeammat taajuudet generoidaan laitteen tai piirin sisällä vaihelukituilla silmukoilla. Tällöin yksinkertaisempia operaatioita ei tarvitse suorittaa tarpeettoman suurella kellotaajuudella, eikä suuritaajuisten kellogeneraattoreiden kuorman tarvitse olla niin suuri. Matalataajuiset kellosignaalit pienentävät laitteen synnyttämiä häiriöitä, joten etua saavutetaan myös EMI-asioissa.

Algoritmeissa yksinkertainen on tehokasta

Tehonkulutuksen kannalta hyvän algoritmin valinta on tärkeää. Algoritmit, jotka ratkaisevat ongelmat mahdollisimman yksinkertaisesti, ovat yleensä myös tehonkulutuksen kannalta hyviä.

Algoritmitasolla tehonkulutusta pienennetään vähentämällä laskutoimitusten määrää sekä lisäämällä vähän tehoa vieviä laskutoimituksia paljon tehoa kuluttavien kustannuksella. Jos esimerkiksi jakolasku voidaan korvata kahdella yhteenlaskulla, saattaa tehonkulutus pienentyä. Hyöty riippuu tietenkin eri operaatioiden kuluttamasta tehosta.

Toinen algoritmitason optimointikeino on kytkentäaktiviteetin pienentäminen. Sitä voidaan pienentää muun muassa optimoimalla laskentayksikön käskyjen operaatiokoodeja. Jos usein yhdessä käytettävien käskyjen operaatiokoodit ovat mahdollisimman samanlaiset, ei kytkentäaktiviteettia synny niin paljon.

Lisäksi käskyjen aiheuttamien muistioperaatioiden määrä tulisi minimoida, koska muistioperaatiot kuluttavat aina tehoa. Eräs hyvä esimerkki kytkentäaktiviteetin pienentämisessä on tavallisten binäärilaskureiden korvaaminen Gray-koodi-laskureilla. Niissä kaksi peräkkäistä lukua ei eroa kuin yhden bitin osalta. Tällöin aina kun lukua lisätään, tarvitsee muuttaa vain yksi bitti useampien sijasta.

Arkkitehtuuritason optimoinnit

Matalan tehonkulutuksen tarpeita voi huomioida laajalti erilaisilla arkkitehtuuritason ratkaisuilla. Monissa yhteyksissä rinnakkaisuuden lisääminen pienentää tehonkulutusta. Tällöin kuitenkin toteutus vie enemmän pinta-alaa. Tämä aiheuttaa integroiduissa toteutuksissa pinta-alan ja hinnan kasvua ja muualla suurentaa laitteen kokoa.

Tehonkulutuksen alentuminen perustuu siihen, että jos tietty operaatio korvataan kahdella rinnakkaisella, saavutetaan sama nopeus puolet pienemmällä kellotaajuudella. Hyvin usein myös käyttöjännitettä voidaan alentaa samassa yhteydessä, jolloin on saavutettu lisää hyötyä.

Nopeissa prosessoreissa käytetään usein liukuhihnoihin perustuvaa arkkitehtuuria. Liukuhihnoilla saavutetaan etua myös tehonkulutuksessa. Etu perustuu samaan ideaan kuin rinnakkaisuuskin. Yksi paljon tehoa vievä toiminto korvataan useammalla hyvin vähän tehoa kuluttavalla toiminnolla.

Molemmissa tavoissa on huomioitava, että merkittävänä tekijänä tehonkulutuksen vähentämisessä on käyttöjännitteen pienentäminen. Saavutettavat edut jäävät pienemmiksi, jos eri osille ei voida käyttää eri suuruisia käyttöjännitteitä.

Arkkitehtuuritasolle kuuluu myös kellogeneraattoreiden viilaaminen ja erilaiset "power down" -tilat. Monissa laitteissa suurimman osan elektroniikasta ei tarvitse toimia jatkuvasti, vaan eri yksiköitä voidaan poistaa käytöstä sammuttamalla ne. Tällöin ne eivät myöskään kuluta tehoa. Yksikön sammuttaminen voidaan toteuttaa katkaisemalla käyttöjännitteet.

Yksiköiden sammuttamisen helpottamiseksi monet logiikkapiirien valmistajat ovat tehneet piirejä, joita voidaan käyttää puskureina sammutettaville yksiköille. Nämä logiikkapiirit asettuvat korkeaimpedanssiseen tilaan, jos niiden käyttöjännitteet ovat sammutettuna. Korkeaimpedanssisessa tilassa piireille ei kulje lainkaan virtaa.

Kellosignaalin ajoittainen katkaiseminen vähentää myös tehonkulutusta. Tällöin piirissä ei tapahdu kytkentäaktiviteettia. Lisäksi kellogeneraattorien kuormakapasitanssi pienenee. Kellosignaalin katkaisu onkin usein käytännöllisempi keino kun käyttöjännitteiden katkaiseminen.

Logiikkasuunnittelulla minimoidaan tilasiirrot

Logiikan tehonkulutuksen optimointi on mahdollista nykyisillä logiikkasynteesiohjelmistoilla. Silti on monia asioita, joita täytyy myös suunnittelijoiden tietää.

Usein logiikan optimoinnissa päämääränä on logiikkapiirien minimointi. Tämä pienentää laitteiden kokoa ja kustannuksia. Tämän lisäksi myös tehonkulutus vähenee suorassa suhteessa logiikan määrään. Mitä vähemmän on logiikkaa, sitä pienempi on myös tehonkulutus. Tehonkulutuksen optimoinnissa voidaan hyödyntää logiikan merkityksettömiä tiloja. Niitä voidaan käyttää logiikan tilasiirtojen minimoimiseksi. Mitä vähemmän tilasiirtoja sitä pienempi tehonkulutus.

Eräs tärkeimpiä asioita, joita logiikkasuunnittelulla voidaan saavuttaa on "glitch"-tilojen vähentäminen. Nämä tilat ovat ylimääräisiä tilasiirtoja, joita tapahtuu, jos logiikan otot muuttuvat hieman eri aikaan. Tällaiset nopeat ylimääräiset tilanmuutokset saattavat muodostaa jopa 20 prosenttia tehonkulutuksesta.

Eräs keino vähentää virhesiirtymiä on käyttää rekistereitä logiikan välissä. Tällöin piirin otot asettuvat samanaikaisesti. Rekisterien lisäämisessä on myös omat haittansa. Kuvassa 2 on verrattu tehonkulutusta rekistereiden määrään. Kuvasta nähdään, että pienin kokonaistehonkulutus saavutetaan tietyllä rekisterien lukumäärällä, ja niiden yletön lisääminen vain kasvattaa tehonkulutusta.

Vähätehoiset suorittimet

Erinomainen mahdollisuus pienentää laitteen tehonkulutusta on käyttää erityisiä matalan tehonkulutuksen prosessoreita. Vastapainona ne ovat tehottomampia, mutta jos ei ole suurta laskentatehon tarvetta, ne ovat oiva vaihtoehto.

Erilaisia matalan tehonkulutuksen suorittimia on lukuisia. Lähes kaikki suurimmat suorittimien valmistajat ovat mukana kilpailemassa kasvavista markkinoista. Motorola, Lucent Technologies, Texas Instruments ja Digital tarjoavat kaikki vähätehoisia suorittimia tai suorittimien ytimiä.

Lähtökohtana uusissa suorittimissa on matala käyttöjännite. Uusimmissa prosessoreissa se on 1.8 volttia, mutta jopa 0,9 voltin suorittimista on julkaistu suunnitelmia. Matalalla käyttöjännitteellä toimiminen ei itsessään ole tärkeää, vaan se, että suoritin on nimenomaan suunniteltu kyseiselle käyttöjännitteelle. Tällöin se pystyy kilpailemaan myös suorituskyvyllään.

Toinen suunnittelussa huomioon otettu ominaisuus on yksiköiden tehokas pysäyttäminen. Esimerkiksi Motorolan M-Core ytimessä eri yksiköitä pystytään pysäyttämän yhden kellojakson tarkkuudella. Tämä mahdollistaa sen, että yksiköitä voidaan sammuttaa tehokkaasti hyvinkin lyhyiksi ajoiksi.

Prosessorin tehonkulutukseen vaikuttaa myös koodin tiheys. Tiheä koodi pienentää järjestelmän muistintarvetta ja tästä johtuen myös kustannuksia ja tehonkulutusta. Toinen syy miksi tiheän koodin suorittimilla voidaan säästää tehoa, on niiden säästämät väyläjaksot (Bus Cycle). Mitä vähemmän väyläjaksoja, sen pienempi on tehonkulutus.

Yleisesti ottaen eräs tärkeimpiä asioita, joita matalan tehonkulutuksen prosessoreissa pyritään vähentämään, on muistioperaatioiden määrä. Jokainen suoritettu muistioperaatio tuo mukanaan paljon kytkentäaktiviteettia.

Optimointiin omat CAE-työkalut

Aikaisemmin suunnittelija sai ensimmäisiä arvioita tehonkulutuksesta vasta suunnitteluprosessin loppuvaiheessa, mutta nyt tilannetta on yritetty helpottaa. Useat eri CAE-työkalut auttavat omalta osaltaan tehonkulutuksen simulointia ja optimointia.

Analysointiin tarkoitetut ohjelmat ovat usein melko suppealle alueelle rajattuja, joten laajoja optimointeja on vaikea suorittaa. Ohjelmat usein keskittyvät yhden tason optimointiin, yleensä rekisterisiirtotasolle tai transistoritasolle. Suppea-alaisissa optimoinneissa on aina olemassa vaara, että yhdellä tasolla saavutettu etu menetetään jollakin toisella tasolla.

Koska tehonkulutukseen voidaan vaikuttaa suunnittelun jokaisella osa-alueella, asettaa se hyvin suuria vaatimuksia työkaluille. Usein optimointiin liittyy kysymys "tehdäänkö tämä toiminnallisuus ohjelmistolla vai elektroniikalla ?" Jotta tällaisiin kysymyksiin voitaisiin saada vastaus, vaatii se ohjelmiston ja elektroniikan yhtäaikaista mallinnusta. Tämä jättää CAE-työkalujen suunnittelijoille haastetta vielä pitkälle tulevaisuuteen. Tehonkulutuksen optimointiin tarjoaa työkaluja muun muassa Synopsis ja Mentor Graphics.

Tehonkulutuksen analysointityökalut ovat usein rajoittuneet melko suppeaan tehonkulutuksen simulointiin, mutta muutamia poikkeuksiakin löytyy. Analysointityökalujen kohdalla on vielä odotettavissa roimaa parannusta. Ovathan työkalut vielä melko uusia. Mentor Graphics tarjoaa apua Lsim Power Analyst- ja QuickPower-ohjelmien muodossa.

Lsim Power Analyst pystyy dynaamisen, staattisen ja kytkemisien aiheuttaman tehonkulutuksen analysointiin. Se tukee VHDL- ja Verilog-kuvauskieliä, joten mahdollisten tehonkulutuksen pullonkaulojen analysointi kuvauskielestä on myös mahdollista. QuickPower on enemmän ASIC-piirien suunnittelijoille tarkoitettu ohjelmisto. Se sulautuu kiinteästi yhteen muiden Mentor Graphicsin suunnitteluohjelmistojen kanssa ja on siksi helppo Mentor-käyttäjille. Toiminnoiltaan se on samankaltainen Lsim Power Analyst -ohjelman kanssa.

Synopsysin DesignPower on samankaltainen kilpailijoidensa kanssa. Se sisältää niin ikään tuen laitteistokuvauskielten analysointiin. Analysointi voidaan suorittaa todennäköisyyteen tai simulointiin perustuen. Tämä auttaa tekemään sopivan kompromissin simulointiajan ja tarkkuuden perusteella.


Aiheesta enemmän

1. A. P. Chandrakasan, S. Sheng, R. Brodersen, "Low Power CMOS Digital Design", IEEE Journal of Solid-State Circuits, vol 27, no. 4, April 1992.

2. D. Liu, C. Svensson, "Power Consumption Estimation in CMOS VLSI Chips", IEEE Journal of Solid State Circuits, vol. 29, no. 6, June 1994.

3. http://www.synopsys.com

4. http://www.mentor.com

5. http://www.motorola.com