Novinka:ARM - Cortex-M5?
(Kategória: Čo by Vás mohlo zaujať)
Zaslal wek
11.12.2015-21:53

Ako ďalej s mikrokontrolérmi, ARM? Ďalší pokrok je v znamení bezpečnosti pod príhodnou zámienkou IoT.

Keď pred asi 10 rokmi ARM uviedol 32-bitové procesorové jadro Cortex-M3, nadviazal tým na staršie jadro ARM7TDMI, ktoré síce pôvodne nebolo určené priamo pre mikrokontroléry (resp. SoC nahrádzajúce mikrokontroléry, v ďalšom len mcu), ale v tom čase už takto bolo používané viacerými spoločnosťami (napr. Atmel, NXP). Kým ARM7TDMI bolo jadro implementujúce architektúru ARMv4 (áno to číslovanie je mätúce), Cortex-M3 bolo už implementáciou v tom čase zbrusu novej architektúry ARMv7 (resp. jej varianty ARMv7M) ako tá súčasť komplexnej sady jadier označených Cortex, ktorá bola určená priamo pre mcu.

Trvalo to síce niekoľko rokov, ale jadrá Cortex-M3 sa ujali a vo svojich mcu vyššej triedy ich používalo čoraz viac výrobcov. ARM samozrejme nezaspal na vavrínoch ale pokračoval ďalej - jadro Cortex-M4 predstavovalo rozšírenie v smere vyššieho výkonu, rozšírenej inštrukčnej sady (najmä o inštrukcie typu SIMD a saturovanej aritmetiky) a pribudla aj single-precision floating-point jednotka. Stále sa jedná o architektúru ARMv7M.

Pribudlo však jadro aj v inom smere - ARM chcel obsadiť aj trh tradičných 8-bitových mcu, a tak ponúkol relatívne malé a jednoduchšie jadro Cortex-M0, ktoré je implementáciou zjednodušenej architektúry ARMv6M. K tomuto neskôr pribudlo vylepšené, avšak stále relatívne malé jadro Cortex-M0+. Obe jadrá sú dnes populárne a uplatňujú sa v mcu nižších tried.

Požiadavke vysokých výkonov aj v oblasti mcu ARM vyhovel pred krátkym časom uvedením jadra Cortex-M7, ktoré okrem optimalizácie na vysoké hodinové frekvencie vytiahlo už aj zbrane ťažkého kalibru v mcu doteraz nevídané: superskalárnu architektúru, t.j. viacero vykonávacích jednotiek (dve), relatívne dlhú pipeline so špekulatívnym prefetchom, inštrukčnú aj dátovú cache, 64-bitové rozhranie voči kľúčovým pamätiam, no a v niektorých inkarnáciách aj double-precision FPU. Napriek tomu sa stále jedná o architektúru ARMv7M, t.j. inštrukčne sa CM7 od CM3/CM4 príliš nelíši. Čitatelia uzone sú s vývojom v oblasti mcu s jadrom Cortex-M7 určite dobre oboznámení...

Zdalo by sa, že ARM má teda už celú oblasť mcu vhodnými jadrami pokrytú. Lenže ARM nepatrí medzi tých, čo by spali na vavrínoch. Aké je teda ďalšie smerovanie? Aj keď detaily nie sú ešte k dispozícii, ARM poodkryl trocha pokrievku na hrnci, v ktorom varí nasledujúcu architektúru - ARMv8, spolu aj s jej "mikrokontrolérovou" variantou ARMv8M.



Základným odlišovacím prvkom nového jadra má byť predovšetkým dôraz na bezpečnosť. Bezpečnosť sa objavuje ako leitmotív v súvislosti s módnou vlnou IoT, aj keď sa bohužiaľ jedná viac o ničnehovoriace heslá než o skutočné technické riešenia a štandardy. ARM označuje technológiu použitú na dosiahnutie bezpečnosti TrustZone a používa ju už v jadrách aplikačných procesorov radu Cortex-A. V záplave všeobecných popisov a pri nedostatku konkrétnych informácií nie je jednoduché zistiť, ako sa presne prejaví v architektúre pre mcu; zdá sa však, že sa jedná o akúsi pokročilú jednotku ochrany prístupu k pamäti, ktorá prísne vymedzuje kód ktorý môže pristupovať aj k citlivým dátam a hardwaru (typicky ako súčasť operačného systému) na rozdiel od "obyčajných" aplikácií, ktoré sú potom na "bezpečnom jadre" plne závislé a ich "samostatná činnosť" sa obmedzuje len na dáta vyhradené pre ne. Toto riešenie by malo byť komplexné na úrovni zberníc, a zahŕňať aj "okrajové" problémy typu debugging, kde tiež treba riešiť možnosť či nemožnosť pristupovania k jednotlivým skupinám dát.

ARM pochopiteľne pripravuje komplexné riešenie, do ktorého spadá aj ponuka súvisiacich modulov (najmä kryptografických), ako aj spolupráca s vývojármi OS, middleware a vývojových prostriedkov (IDE, prekladače, debugovací software).

Na výsledok si nepochybne ešte počkáme, ale z náznakov sa dá usúdiť, že nové jadro pre mcu, na ktoré sa už tešíme, bude nazvané Cortex-M5.



Táto novinka je z mikroZONE
( http://www.mikrozone.sk/news.php?extend.1081 )