Yhä useammin sulautetuissa sovelluksia haluttaisiin ajaa mikro-ohjaimissa verkon reunalla. Renesasin uusissa Arm Cortex-M85-pohjaisissa ohjaimissa tämä on tullut mahdolliseksi tekoälylaskentaa tehostavien Helium-laajennusten ansiosta.
Kirjoittaja Eldar Sido toimii Renesas Electronicsilla Arm-pohjaiten mikro-ohjaimien tuotemarkkinoinnissa. Eldar on innostunut tekoälyn tuomisesta mikro-ohjainpiireille. Hän on valmistunut elektroniikkainsinööriksi Tokion yliopistosta. Eldarilla on myös elektroniikkainsinöörin tutkinto Sharjahin Amerikkalaisesta yliopistosta Yhdistyneissä Arabiemiirikunnissa. |
Nyt halutaan merkittävästi lisätä kehittyneitä koneoppimisen (ML) ja digitaalisen signaalinkäsittelyn (DSP) toimintoja rajallisen kapasiteetin sulautettuihin laitteisiin. Sulautettujen ohjelmistojen kehittäjät törmäävät nykyisiä mikro-ohjaimia käyttäessään moniin haasteisiin yrittäessään puristaa yhä enemmän jaksokohtaista suorituskykyä vastatakseen suorituskykyvaatimuksiin tai valitsevat sitten käyttöönsä mieluummin suorituskykyisiä prosessoreita kuten Cortex-A. Kumpikaan valinta ei kuitenkaan pärjää kustannus-hyötyarvioinnissa, sillä niiden käyttö kasvattaa kustannuksia ja pidentää tuotekehitysaikaa. On siis olemassa selvä tarve tehokkaalle deterministisesti toimivalle mikro-ohjaimelle, jonka suoritinydin pystyy vastaamaan mainittuihin haasteisiin ja niiden lisäksi myös odotuksiin, joita mikro-ohjaimilta tulevaisuudessa edellytetään.
Viimeisimpänä mikro-ohjaimen ytimenä markkinoille on tullut Arm Cortex-M85. Tämä uusinta teknologiaa edustava yleiskäyttöinen ydin on suunniteltu täyttämään TinyML-koneoppimisen ja kehittyneen signaaliprosessoinnin vaatimukset. Se perustuu 32-bittiseen Armv8.1-M-arkkitehtuuriin, joka soveltuu hyvää suorituskykyä ja energiatehokkuutta tarjoaviin ratkaisuihin sulautetuissa järjestelmissä. Armin uusinta Helium-tekniikkaa ja M-ydinten vektorilaajennuskäskyjä (MVE) hyödyntämällä saadaan merkittävä parannus ML/DSP-sovelluksiin. Liukulukuyksikkö (FPU) ja laaja DSP-käskykanta puolestaan mahdollistavat sen, että CM85-ydin pystyy helposti käsittelemään paljon laskentaa vaativia TinyML:n asettamia haasteita.
Tässä artikkelissa tarkastellaan lähemmin Helium-tekniikan ominaisuuksia, sen tarjoamia mahdollisuuksia ja muita CM85-ytimeen saatavilla olevia ominaisuuksia, joiden ansiosta se eroaa muista markkinoilla olevista mikro-ohjaimista. Käsittelemme myös CM85-pohjaisia tekoälydemoja, joita Renesas Electronics esitteli Embedded World 2023 -näyttelyssä.
Mikä ihmeen Helium-VME?
MVE Helium -tekniikka on mikroarkkitehtuurilaajennus Armv8.1-M-arkkitehtuurin mukaisiin CM85- ja CM55-ytimiin. Cortex-A-prosessorien Neon-tekniikan tapaan Helium on SIMD-tyyppinen arkkitehtuurielementti, joka korvaa alemman ja keskitason erilliset DSP-ytimet ja mahdollistaa sirulla tapahtuvan prosessoinnin. Sen sijaan, että Neon olisi vain portttu uudelleen, Helium on kehitetty täysin uudelta pohjalta pienempiin sirukokoihin sopivaksi. Se tukee useampia datatyyppejä ja sen käskykanta tukee Neonin käskykannasta poiketen pienen ylikuormituksen haarautumista ja ennakointia. Helium käsittää 8 vektorirekisteriä uudelleen käyttämällä tavallisia FPU-rekistereitä vektorirekistereinä, joista kukin on leveydeltään 128 bittiä.
Heliumin tavoitteena on parantaa yleisten AI/ML- ja DSP-ytimien suorituskykyä ratkaisemalla eräitä yleisiä suorituskykyä rajoittavia ongelmakohtia seuraavassa lueteltavien ominaisuuksien avulla:
Limitetty liukuhihnoitus: Helium koostuu 8 vektorirekisteristä, joiden pituus on 128 bittiä ja jotka jakautuvat 4 neljännekseen (Q) eli biittiin (”beats”), joiden leveys on 32 bittiä. Mahdollisimman hyvän suorituskyvyn takaamiseksi Helium käyttää hyväksi vektorien ketjuttamista siten, että vektorikuormituksen ja vektori-MAC:n limitettyjä liukuhihnoja suoritetaan rinnakkain kuvan 1 mukaisesti. Kullakin kellojaksolla limitetyt liukuhihnat (fp) suorittavat MAC:n edellä ladatulle ”biitille” samalla kun ladataan seuraavaa ”biittiä”. Cortex-M85 on 64-bittinen kaksoisbiitin datareitti eli se suorittaa 2 jaksoa 128 bitillä. Tätä limitettyä prosessia nimitetään biittiseksi (”beatwise”) suorittamiseksi [1][2].
Kuva 1: Helium-tekniikan ”biittinen” suorittaminen.
Jokainen biitti voi jakautua edelleen ja käsitellä eri datatyyppejä tehokkaasti kullakin kellojaksolla seuraavasti:
- 2xQ31/int32
- 4xQ15/int16
- 8xQ7/int8
- 2xfp32
- 4xfp16
Datatyypit: Jotta CM85:ttä voitaisiin käyttää erilaisissa sovelluksissa, se tukee monenlaisia vektoridatatyyppejä seuraavasti [1]:
- Vektori 8-bittinen kokonais-/kiinteän pilkun luku, jota käytetään paljon kvantisoiduissa ML-malleissa ja joka ei yleensä ole käytettävissä matalan ja keskitason DSP:issä.
- Vektori 16-bittinen kokonais-/kiinteän pilkun luku
- Vektori 32-bittinen kokonais-/kiinteän pilkun luku
- Vektori 16-bittinen puolitarkkuuden liukuvan pilkun luku, jota käytetään reaaliaikaisen datan esikäsittelyssä esimerkiksi, kun tunnistussovellus sallii suuren dynaamisen alueen hyödyntämisen vaikka vasta puolet käsittelyvaatimuksista on täytetty. Tämä piirre on ainoastaan M8.1-arkkitehtuurin mukaisissa CM-ytimissä.
- Vektori 32-bittinen yksinkertaisen tarkkuuden liukuvan pilkun luku
Helium tukee luonnollisesti myös kokonais- ja liukulukujen kompleksiarvon prosessointia, jolloin mahdollistuu tehokas kompleksilukujen prosessointi, mikä on yleisesti käytössä signaalinkäsittelyssä (esimerkiksi FFT:ssä).
Haarautumisen ennustaminen/silmukoinnin optimointi: Kuten aikaisemmin jo mainittiin Helium tuo DSP-laskentaa nopeuttaakseen lisäyksenä mukaan joukon käskyjä, kuten pienen ylikuormituksen haarautumistoiminnon, joka nopeuttaa ohjaussilmukoita tallentamalla välimuistiin ensimmäisen ja viimeisimmän käskyn ja suorittamalla ainoastaan pääsilmukan myöhemmin tehtävillä iteroinneilla. Kaistan perustaminen (predikaatio) on toinen hyödyllinen laajennus, joka tukee ehdollisia suoritusvaiheita ja käsittelee rajatapauksia sellaisia kuten 4:llä jaottomia vektorikaistoja, ja jonka laajennuksen tuomat käskyt lisäävät suorituskykyä samaan tapaan kuin DSP:n nollaylikuormituksen silmukan (zero-overhead-loop) tuki [1][3][6].
Laajennetut muistinhakukäskyt: Lisätyt käskykannat, kuten limityksen asetuksen ja purun lataus- ja tallennuskäskyt 2,4 hypyillä, tehostavat DSP- ja kuvankäsittelyä käytettäessä erilaisia dataformaatteja kuten kuvadataa (esim. RGB) tai audiodataa. Toinen käskykanta on hajottavat ja kokoavat osoitusmuodot bitin käänteisen osoitteen muodostamiseen ja emulointiin kiertävässä osoitteenmuodostuksessa, jota käytetään DSP:ssä, mikä on yleinen signaalinkäsittelyn sovelluksissa kuten FFT:ssä. CM85 pitää sisällään myös TCM-muistia (tightly coupled memory) hyvin nopeita reaaliaikaisia vasteita varten ja AXI-väylän suurta muistikaistaa vaativiin sovelluksiin, joissa on välimuistit optimoimassa hitaampien, ei-determinististen sovellusten suorituskykyä [1][3][4][5].
Cortex-M85
Taulukossa 1 luetellaan edistyneimmän Helium MVE -pohjaisen Cortex-M-ytimen CM85:n lisäksi muiden ytimien ominaisuuksia.
Taulukko 1: CM7-, CM55- ja CM85-ytimien välinen vertailu.
Muihin Cortex-M-ytimiin verrattuna Cortex-M85-ydin sisältää myös uusia ja laajennettuja turvaominaisuuksia kuten osoittimen autentikoinnin ja haarautumiskohteen identifioinnin (PABTI), Arm Trustzone -turvan laajennukset, mikroprosessoriyksikön PXN:n (Privileged eXecute Never) ja etuoikeudettomat virheenkorjauksen laajennukset (DUE, Unprivileged Debug Extension), joka mahdollistaa PSA:n sertifioidun tason 2 saavuttamisen, minkä ansiosta se soveltuu erinomaisesti turvallisuutta korostaviin sovelluksiin kuten teollisuuden ohjausjärjestelmiin ja sairaalalaitteisiin.
Vertailutestaukset
Kaikilla ominaisuuksilla varustettu CM85 asemoituu empiiristen näyttöjen kuten teollisuusstandardien mukaisten testausten tai eri ytimillä tehtyjen vertailutestien perusteella tehokkaimpien mikroprosessoriytimien joukkoon. Esimerkiksi taulukossa 1 esitettyjen CoreMarks- ja DMIP-arvojen perusteella nähdään, että skalaarinen parannus on saavutettu uusien mikroarkkitehtuurien ominaisuuksilla, joihin kuuluvat laajennettu muistijärjestelmä, parannettu haarautumisen ennakointi ja optimoitu kaksoisbiitti kullakin kellojaksolla (dual issue).
Kuten kuvassa 2 on nähtävissä, Helium-tekniikan ansiosta CM85-ydin hakkaa suorituskyvyssä CM7-ytimen nelinkertaisesti AI/ML-suorituskyvyssä ja lisätyn mikroarkkitehtuurin ansiosta 20 prosentilla CM55-ytimen suorituskyvyn.
Kuva 2: CM85:n, CM7:n ja CM55:n suorituskyvyn lisäykset [Lähde: Arm].
Helium-tekniikan käyttö mahdollistaa todellakin merkittävän lisän suorituskykyyn ja vektoritasolla se voi edelleen parantaa yksittäisen ML-kernelin suorituskykyä ilman MVE:tä olevaan laitteeseen verrattuna kuvan 3a mukaisesti, jolloin täysin kytketyn kerroksen prosessoinnin tuloksena on saatavissa merkittävä suorituskykylisä Helium MVE:n ansiosta. Standardikerneleillä varustettujen MVE:n kanssa ja ilman MVE:tä olevien laitteiden DSP-suorituskyvyille kuten nopealle Fourier-muunnokselle (FFT) ja ei-rekursiiviselle suodatukselle (FIR) saadaan kuva 3b mukaisesti liukulukuyksikölle 57 ja 64 prosentin teholisät, ja vielä merkittävämpi tehonlisä saadaan kokonaislukulaskennalle, koska MVE luontaisesti tukee monenlaisia datatyyppejä.
Kuva 3: MVE:llä varustettujen ja ilman MVE:tä olevien laitteiden välinen vertailu. (a) Arm-kääntimellä AC6.15 varustetun CMSIS-NN:n keskimääräinen suorituskyky täysin kytketyllä kerroksella. (b) Arm-kääntimellä AC6.16 (normaali suorituskyky) varustetun CMSIS-FFT&FIR:n suorituskyky. [Lähde: Arm]
Kuvasta 4 nähdään, että sadoilla uusilla käskykannoilla mukaan lukien ytimen kuvankäsittelytehoa lisäävät käskyt varustetun CM85:n (Helium-laite Arm 2D-kirjastossa) suorituskyky on lähes neljä kertaa parempi kuin CM7-ytimen.
Kuva 4: Arm 2D-kirjaston sulautetun syvänäytön suorituskyky on nelinkertainen CM85-ytimellä verrattuna CM7-ytimeen [Lähde: Arm].
Tekoälydemoja konenäkösovelluksiin
Cortex-M85 -ytimen merkittävä suorituskyvyn lisäys muihin Cortex-M-ytimiin nähden oli esillä Embedded World ’23 -näyttelyn demonstraatioissa, joissa Armin CM85-partneri Renesas Electronics esitteli tekoälyn käyttöä konenäkösovelluksessa ja moottorin ohjauksen ennakoivan vianhallinnan sovellusta. Nämä ovat edelleen sovitettavissa moniin erilaisiin käyttökohteisiin.
Demo ihmisten tunnistamisesta
Yhdessä konenäkösovelluksia kehittävän Plumerain kanssa kehitetty ihmisten tunnistussovellus tunnistaa, jäljittää ja laskee eri asennoissa olevia ihmisiä vaihtelevissa valaistus- ja ympäristöolosuhteissa. Tästä voidaan päätellä, että merkittävä suorituskyvyn lisäys Cortex-M-ytimiin verrattuna avaa ovia yhä edistyneimmille Cortex-A-ytimiin pohjautuville käyttökohteille kuten ihmisten jäljitykseen. Jaksokohtainen 3,7-kertainen lisäys on havaittu Cortex-M7-ytimeen verrattuna ja vielä suurempia lisäyksiä muihin ytimiin verrattuna.
Kuva 5: Henkilön tunnistamisdemo esiteltiin Embedded World ’23 -näyttelyssä. Demossa osoitettiin, että CM7-ytimeen verrattuna saavutettiin 3,7-kertainen lisäys ajettaessa samaa Plumerain konenäkö-tekoälyliukuhihnaa.
Demo moottorin ohjauksen vianilmaisusta
Toinen näyttelyssä esitelty demo koski ennakoivaan moottorin ohjauksen vianilmaisuun liittyvää käyttökohdetta, joka on sovitettavissa moniin erilaisiin teollisuussovelluksiin. Shunttivirtaa hyödyntämällä demomalli pystyy ennakoimaan kuinka paljon moottorin säädöt on pielessä (lisäämällä moottorikortille kohdistuvaa voimaa) ja demoa ohjattiin Renesasin kehittämällä käyttöliittymällä.
Kuva 6: CM85-ytimellä toteutettu ennakoivan moottorin ohjauksen vianhallinnan demo. Siinä osoitettiin 5,39-kertainen jaksokohtainen tehonlisä CM7-ytimellä toteutettuun verrattuna, kun alustana molemmissa käytettiin samaa CNN-mallia. Jaksokohtainen lisäys oli 3-kertainen FFT-muunnoksessa kiinteän pilkun formaatissa ja 2,07-kertainen käytettäessä FFT-muunnoksessa liukulukualgoritmia.
Seuraavassa käyttötapauksessa, jossa AI-malli perustui pääasiassa konvoluutioihin, suorituskyvyn lisäys oli merkittävästi suurempi. DSP-sovelluksissa saatu lisäys osoittaa, että Helium MVE:llä varustetulla CM85:llä voidaan korvata ratkaisuja, jotka nojaavat alemman tai keskitason DSP-ytimillä varustettuihin mikro-ohjainyksiköihin.
Yhteenveto
Yhteenvetona voidaan todeta, että Helium-tekniikalla varustettu CM85-ydin nopeuttaa merkittävästi AI/ML- ja DSP-laskentaa, mikä parantaa suorituskykyä haarautumisen ennakoinnissa, laajennetussa muistinhaussa, rinnakkainajossa, uusien DSP-käskyjen lisäämisessä, uusien datatyyppien tukemisessa ja kompleksilaskennan luontaisessa tuessa. CM85-ydin soveltuu myös hyvin tehostamaan skalaarista suorituskykyä ja jättää varjoonsa muut Cortex-M-sarjan ytimet, joten se on oiva valinta monimutkaisiin prosessointitehtäviin. Embedded World ’23 -näyttelyssä esitettyjen demojen menestyksen myötä Renesas Electronics aikoo jatkaa hyvin edennyttä yhteistyötä Armin kanssa ja tavoitteena on tuoda markkinoille CM85-ytimeen perustuvia käyttötapauksia, jotka ovat aiemmin olleet mahdottomia toteuttaa mikro-ohjaimilla.
Viitteet
[1] Yui, J. (2020), Blending DSP and ML features into a low-power general-purpose processor – how far can we go? [white paper].*blending-dsp-and-ml-features-into-a-low-power-general-purpose-processor.pdf (windows.net)
[2]Grocutt, T.(2019), Making Helium: Why not just add Neon? (1/4)[blog], Making Helium: Why Not Just Add Neon? - Research Articles - Research Collaboration and Enablement - Arm Community
[3] Yui, J. (2020), Introduction to Armv8.1-M architecture [white paper], introduction-to-armv8-1-m-architecture.pdf (windows.net)
[4] Grocutt, T.(2019), Making Helium: Sudoku, registers and rabbits (2/4) [blog], Making Helium: Sudoku, registers and rabbits - Research Articles - Research Collaboration and Enablement - Arm Community
[5] Botman, F.(2019), Making Helium: Going around in circles (3/4)[blog], Making Helium: Going around in circles - Research Articles - Research Collaboration and Enablement - Arm Community
[6] Grocutt, T.(2019), Making Helium: Bringing Amdahl's law to heel (4/4) [blog], Making Helium: Bringing Amdahl's law to heel - Research Articles - Research Collaboration and Enablement - Arm Community
[7] Menasveta, T.(2022), Introducing Cortex-M85: pushing the boundaries of performance and security for microcontrollers [blog], Cortex-M85: Highest Performing Cortex-M Processor ever - Internet of Things (IoT) blog - Arm Community blogs - Arm Community