Článek popisuje integraci systému RTOS a hypervizoru pro procesory založené na MPU (Memory Protection Unit) a MMU (Memory Management Unit), která umožňuje homogenní vývoj, v jednom vývojovém prostředí, hybridních SoC obsahujících různá procesorová jádra.
Hybridní systémy SoC stále častěji obsahují heterogenní procesorová jádra. Vývojáři je však vidí jako jednu součást, kterou chtějí vyvinout co nejvíce integrovaným způsobem. Homogenní RTOS a hypervizor pro procesory s MPU i MMU poskytují vývojářům výhodu snazší práce, a v důsledku toho nižší náklady na vývoj i menší riziko chyb.
S tím, jak se elektronické součásti zmenšují, může být v daném prostoru realizováno více inteligence, která přináší větší přidanou hodnotu. Výrobci polovodičových součástek využívají uvolněný prostor k integraci nativní logiky rozhraní a heterogenních jader procesoru s cílem zajistit ucelená systémová řešení na jednom čipu (SoC – System on Chip). Cílem je získat více funkcí v menším prostoru a s nižší spotřebou energie. V hybridních SoC mohou být implementovány např. stále komplexnější funkce strojového vidění a umělé inteligence. Kromě úloh v oblasti spotřební elektroniky se to týká především řídicích systémů využívajících situační povědomí s funkcemi funkční bezpečnosti, v nichž bude velmi pravděpodobně třeba využít heterogenní SoC. To je pak obvykle doprovázeno konsolidací komponent, aby se snížily náklady.
SoC pro práci v reálném čase i pro funkční bezpečnost
Poptávku po heterogenních SoC s funkční bezpečností lze nalézt např. v průmyslové automatizaci, kolaborativní robotice a lékařské technice s certifikací MRD (Medical Device Regulation), stejně jako v mnoha nových mobilních zařízeních (obr. 1). Vývoj je zaměřen na autonomní intralogistické vozíky, chytré stavební a zemědělské stroje, elektromobilitu, železniční dopravu nebo avioniku. Všechny tyto trhy jsou hybnou silou růstu pro taková heterogenní řešení SoC. Novou skupinou aplikací, která úzce souvisí s uvedenými směry vývoje, jsou funkčně bezpečné aplikace 5G, a tudíž v konečném důsledku také servery edge schopné pracovat v reálném čase a v privátní síti, které komunikují se svými autonomními klienty prostřednictvím TSN v síti 5G, a dokonce umožňují realizovat network slicing.
Potřebu heterogenních SoC lze jasně ilustrovat zejména na automobilovém průmyslu: v tomto případě je běžnou praxí integrovat v jednom vozidle velké množství diskrétních elektronických řídicích jednotek ECU (Electronic Control Unit). Dosud bývá v běžném automobilu distribuováno přes 100 ECU. V automobilech luxusní třídy je někdy nainstalováno více než 300 jednotek ECU. Používají se v nich různé procesory, od osmibitových po 32bitové. V průběhu vývoje elektromobility a stále většího uplatnění autonomního řízení je však opouštěna architektura s mnoha distribuovanými procesory a jsou implementovány výrazně integrovanější systémy založené na heterogenních SoC. Měly by dokonce umožnit bezproblémové soužití aplikací s funkční bezpečností a běžných aplikací, které zvláštní požadavky na bezpečnost nemají, jakož i aplikací s různě odstupňovanou funkční bezpečností – tj. smíšených systémů.
Certifikace SIL, ASIL a DAL
Jednu skupinu SoC, které jsou certifikovatelné pro zmíněné aplikace s různými úrovněmi SIL (Safety Integrity Level), ASIL (Automotive Safety Integrity Level) a DAL (Development Assurance Level), tvoří Xilinx Zynq Ultrascale+ MPSoC (Multiprocessor System on Chip; obr. 2). Obsahují šest jader ARM, několik standardních rozhraní a pole FPGA pro návrh logických funkcí specifických pro danou aplikaci. Díky tomu jsou mimořádně multifunkční, a jsou vhodné dokonce i pro dodatečnou montáž ve starších systémech. K dispozici jsou čtyři 64bitová jádra ARM Cortex-A53 s plnou podporou ECC (Error Correction Code) a dvě 32bitová jádra ARM Cortex-R5F, schopná práce v režimu lockstep1), což umožňuje používat je v bezpečnostních úlohách. FPGA nabízí v závislosti na konstrukci 81 000 až 504 000 systémových logických buněk. Volitelně je také integrován grafický procesor GPU Mali 400-
-MP2, který lze použít pro zpracování grafiky nebo pro inferenční logiku umělé inteligence (AI). Navíc je k dispozici volitelná podpora kodeků H.264 a H.265.
Oblasti použití jsou rozmanité a zahrnují bezpečnostní systémy typu headless, řídicí jednotky polohy a pohybu, grafické systémy a systémy na bázi AI nebo systémy integrované do kamer, které potřebují zpracovávat videokodeky pro situační povědomí a rozšířenou realitu extrémně rychle a v případě autonomně se pohybujících systémů též v deterministickém reálném čase.
Kolaborativní roboty a autonomní řízení
Například v kolaborativním robotu nebo autonomním intralogistickém vozíku může tento SoC připojit kameru k integrovanému poli FPGA pro zpracování obrazových dat. Takto zpracovávaná data lze analyzovat pomocí aplikace pro analýzu obrazu v reálném čase, která je instalovaná v jádru ARM Cortex-R5F s volitelnou integrovanou inferenční logikou pro detekci překážek. V závislosti na integrované rozhodovací logice lze výsledky odeslat např. prostřednictvím komunikačního kanálu Intercore do výkonnějšího aplikačního jádra ARM Cortex-A53. Na vyšší úrovni řízení je potom realizováno řízení autonomní lokomoce v reálném čase. Hrozí-li nebezpečí kolize, směr jízdy se změní podle aktuálně nejlepší možné trasy k cíli. Pro detekci jednobodového selhání (SPoF – Single Point of Failure) při vyhodnocování dat snímku mohou dvě jádra ARM Cortex-R5F dokonce pracovat v režimu lockstep.
Jádro ARM Cortex-R5F v kombinaci s FPGA může být také použito pro úlohy řízení. Například servomotory lze adresovat přímo. Jednotlivé úlohy aplikace je rovněž možné distribuovat do různých zdrojů, aby bylo dosaženo maximálního výkonu s minimálním využitím zdrojů. Dalším zajímavým využitím je spuštění řídicí úlohy na jádře R5 i na jádře A53, čímž se vytvoří různorodá redundance jádra v jednom SoC.
Složitost problému
Jedním z největších problémů těchto návrhů SoC je však vysoká cena hrazená za vývoj a údržbu takových heterogenních řešení. Je zapotřebí co nejvíce integrovaný vývoj aplikací pro SoC, protože to je jediný způsob, jak dosáhnout synergických účinků, které snižují náklady na NRE (Non-Recurring Engineering) a zefektivňují vývoj optimálně výkonově vyvážených systémů pracujících v reálném čase.
Například může být velký problém provozovat jednotlivé subsystémy na jednom SoC bez vzájemného ovlivňování. To platí i pro vzájemné ovlivňování mezipaměti (cache) ve vícejádrových implementacích. Mělo by být také možné – a to je obzvláště důležité pro vývojáře aplikací – přiřadit úkoly aplikace jednou jednomu jádru a jindy druhému jádru, jak je aplikací požadováno, aniž by bylo nutné velké množství vývojářské práce.
Procesory s podporou MMU a MPU
Integrovaný vývoj aplikací není u komplexních SoC, jako je Xilinx Zynq Ultrascale+ MPSoC, triviální úlohou, protože jádra ARM Cortex-A53 využívají správu pracovní paměti MMU (Memory Management Unit), zatímco ARM Cortex-R5F Dual Core využívá ochranu paměti MPU (Memory Protection Unit). Rozdíl mezi těmito dvěma systémy pro práci s pamětí spočívá v tom, že MMU lze použít k převodu virtuálních oblastí adres na jakoukoliv fyzickou oblast adres. MMU proto přiděluje procesu konkrétní oblast adres. Procesor s MPU však tuto funkci přiřazení nemá. MPU jen chrání proti tomu, aby jeden proces zapisoval do druhého ve stejné oblasti paměti. Avšak bez MMU musí každý proces přesně vědět, kam se má připojit. To je koncepčně složitější, protože každý proces musí mít vyhrazenou paměťovou oblast. Takže software systému RTOS musí mít rozhraní API pro přidělování paměti.
Dva světy
V předchozím prostředí RTOS a hypervizorů neexistovala žádná skutečně homogenní řešení pro správu takových heterogenních SoC s procesory založenými na MMU a MPU. Většina dodavatelů OS vyvinula menší RTOS pro procesory s MPU, které však mají zcela odlišné API než RTOS pro procesory s MMU. To dosud nehrálo významnou roli, protože tyto řídicí jednotky byly většinou implementovány odděleně. V důsledku toho byly RTOS pro procesory s MPU také redukovány na malý formát a minimální kapacitu paměti, což je jeden z důvodů jejich nekompatibility s jinými systémy. Význam toho dokládá i skutečnost, že tyto diskrétní procesory s MPU byly často programovány jako „holé železo“, když nebyl vyžadován multithreading. To umožňuje realizovat zařízení stále menších formátů s přidruženými výhodami, jako je např. úspora licencí, nižší náklady na hardware a snazší certifikace. Nicméně s homogenními ekosystémy OS pro vývoj SoC s MMU i MPU a uceleně integrovaným vývojovým prostředím je programování heterogenních SoC mnohem pohodlnější.
Heterogenní instalace OS
V září 2021, s uvedením operačního systému PikeOS a hypervizoru pro MPU, vytvořila firma Sysgo, která se jako softwarový specialista soustředí na funkčně bezpečná a digitálně zabezpečená řešení, základ, s nímž heterogenní SoC dostávají homogenní ekosystém RTOS a hypervizoru reálného času, což výrazně zjednodušuje programování a vyvažování užitečného zatížení (obr. 4). Právě pro tento účel byl vyvinut operační systém PikeOS pro MPU, vycházející z operačního systému PikeOS pro procesory s MMU. Rozhraní API pro programování aplikací pro procesory s MMU nebo MPU jsou tedy téměř shodná. V podstatě bylo pouze upraveno rozhraní API pro správu paměti. Aplikace z jádra založeného na MMU na jádro založené na MPU může být překompilována, bez ohledu na různou práci s pamětí, několika kliknutími během pár minut. Ještě důležitější je výhoda, že program pro obě varianty jádra (MMU a MPU) může být certifikován podobným způsobem. Připravované certifikace PikeOS pro řešení založená na MPU proto mohou vycházet z certifikací SIL 4, DAL A a ASIL D PikeOS pro MMU.
Homogenní ekosystém OS pro MMU a MPU
Protože jak PikeOS pro MMU, tak PikeOS pro MPU sdílejí důležité základní funkce, jako je separační jádro2) nebo mechanismus pro přidělení času a výpočetního prostoru, funkčně mohou být identické. Díky přísnému izolování oddílů (partitions) umožňuje separační jádro paralelní provoz několika aplikací – od jednoduchých, ale vysoce kritických řídicích úloh až po složité uživatelské programy s mnoha funkcemi, avšak nikoliv kritickými. Kromě toho separační jádro eliminuje riziko chyb aplikací ovlivňujících jiné oddíly a aplikace. Použití mechanismů pro přidělení času a prostoru také přenáší PikeOS pro MPU velmi blízko specifikaci ARINC 653 (Avionics Application Software Standard Interface), pro kterou byl původně vyvinut PikeOS pro MMU. Díky tomu je systém PikeOS pro MPU vhodný i pro kritické průmyslové aplikace nebo pro avioniku.
Obzvláště zajímavým rysem potřebným pro efektivní vývoj ucelených řešení založených na heterogenních systémových platformách je funkce ICCOM (Inter-Core Communication) obou derivátů PikeOS. Tato funkce umožňuje instancím systému PikeOS spuštěným na různých jádrech ARM Cortex, A a R, vzájemně komunikovat prostřednictvím zpráv v komunikačních kanálech bez ohledu na to, zda jádra používají různé nebo stejné operační systémy. Komunikace ICCOM je založena na symetrické plně duplexní vrstvě přenosu dat, která zaručuje doručování zpráv.
Jedno IDE pro všechna jádra
Počínaje verzí 7.2 CODEO IDE se systémem Eclipse lze oba operační systémy používat v jednom integrovaném vývojovém prostředí (IDE; obr. 5). Je tak možné spravovat celý softwarový balík heterogenních SoC a jeho mezijádrovou komunikaci v jediném pracovním prostoru, což výrazně zjednodušuje proces vývoje softwaru pro takové složité cílové systémy. Celý vývojový cyklus je podporován od rané emulace systému na bázi QEMU (Quick Emulator) přes simulace aplikací až po ladění a mechanismy aktualizace softwaru na dálku pro již implementované systémy v provozu.
Ladicí prostředí TRACE32 od firmy Lauterbach rovněž podporuje kombinované ladění cílových systémů s MMU a MPU. To také znamená, že nastavení hardwaru TRACE32 je dostatečné k ladění celé platformy Xilinx Zynq Ultrascale+ MPSoC s heterogenním nastavením operačního systému. Při použití obou variant operačního systému PikeOS v tomto případě by se však již nemělo hovořit o heterogenním nastavení operačního systému. Jde spíše o homogenní ekosystém pro heterogenní SoC s hypervizorem reálného času typu 1 též integrovaným v obou variantách OS, takže vícenásobné časově a paměťově izolované, funkčně bezpečné aplikace tohoto nebo jiného operačního systému mohou být hostovány ve vhodně zapouzdřených virtuálních počítačích.
Spuštěním individuálního grafického uživatelského rozhraní pro tyto oblasti operačního systému mohou softwaroví architekti současně ladit obě varianty systému PikeOS – včetně synchronizovaných událostí spuštění a zastavení. To je užitečné zejména při vyhledávání chyb v komunikaci mezi jednotlivými subsystémy. Kromě toho může TRACE32 sledovat celý systém a zobrazit grafické diagramy aplikací a dob běhu funkcí. Načasování je synchronizováno, což umožňuje sledovat načasování chování PikeOS i PikeOS pro MPU a měření latencí mezi oběma systémy. To usnadňuje vyrovnávání výkonu.
Kompatibilita s procesory
Vývoj aplikací pro heterogenní SoC se tak s novým systémem PikeOS RTOS a hypervizorem s řešeními pro procesory MMU a MPU na jednom čipu stává mnohem homogennějším. Řešení nejsou omezena na Xilinx Zynq Ultrascale+ MPSoC. Jsou podporována jakákoliv jádra ARM Cortex, A53 a R5, a řešení jsou tedy přenosná. Ve střednědobém výhledu je také plánováno podporovat všechny ostatní varianty jader ARM Cortex, A, R a M, a rozšířit podporu na RISC-v, MPC 57xx a TriCore AURIX – nakonec na všechny SoC s diskrétními procesory založenými na MPU a s heterogenními procesory MMU/MPU. OEM mohou rovněž získat podporu pro jejich vlastní procesor a návrhy SoC.
Zaměření na funkční bezpečnost
Certifikační sady pro systém PikeOS pro MMU jsou k dispozici např. pro avioniku (DO-178C), automobilový průmysl (ISO 26262), drážní dopravu (EN 50128, EN 50657), průmyslovou automatizaci (IEC 61508) a zdravotnictví (IEC 62304). Oblasti použití lze kromě toho nalézt až do úrovně hodnocení EAL (Evaluation Assurance Level) 5+ nebo až do úrovně SAL 4 podle standardu Avionics Airbus Security Certification Standard SAR, který se stává stále důležitějším v kontextu rostoucích hrozeb ze strany kybernetických útočníků. Kromě toho má PikeOS jako jediný systém na světě separační jádra (4.2.4) s aktuálním a platným certifikátem Common Criteria (EAL5+). Ekosystém PikeOS je proto dokonalým základem např. pro všechny protokoly OPC UA synchronizované prostřednictvím TSN, které řídí autonomní vozidla a kolaborativní roboty propojené s cloudovými nativními servery edge prostřednictvím 5G. Výhodou pro mobilní systémy v této souvislosti je také možnost použití platformy SACoP (Secure Automotive Connectivity Platform) společnosti Sysgo pro komunikaci mezi vozidly a mezi vozidlem a infrastrukturou. Chrání pomocí firewallů a mechanismů detekce narušení kritickou interní infrastrukturu vozidel před hrozbami z vnějšího světa. Díky implementované funkci zabezpečeného spouštění chrání i před kompromitováním operačního systému a instalací zmanipulovaných zavaděčů. Podporuje zabezpečené aktualizace OTA (Over The Air), stejně jako mnoho dalších úloh správy softwaru, jako jsou upgrady pro předplatné založené na funkcích pro cenově úsporné licence. Jak se objevují nové zákaznické projekty, lze to vše přenést také do PikeOS pro MPU.
Funkce osvědčené v náročném prostředí
Již stávající instalace nabízejí vysokou úroveň zabezpečení návrhu. Například RTOS PikeOS pro MPU se již používá v kosmickém průmyslu. Zde použitá architektura je založena na proprietárním diskrétním čipu na bázi ARM Cortex-R5, který je odolný proti radiaci, aby zmírnil počet radiací vyvolaných poruch jedné události (SEU, Single Event Upset3)). Ochrana před SEU je rovněž velmi zajímavá pro autonomní řízení a kolaborativní roboty, nejen pro kosmický průmysl. SEU se zde objevují mnohem méně často, ale v budoucnu bude takových systémů mnohem více, a právě proto získávají procesory odolné proti SEU na významu.
Dr. Oliver Kühlert,
ředitel inovační laboratoře a manažer pro integraci softwarovýchj platforem Sysgo
Obr. 1. V řídicích systémech pro automatizaci a robotiku musí být integrovány funkce pro zajištění funkční bezpečnosti a bezpečnosti strojů a zařízení
Obr. 2. MPSoC Xilinx Ultrascale+ obsahuje čtyři procesory s MMU a dvě jádra ARM Cortex s MPU a také výkonné hradlové pole FPGA
Obr. 3. Jednou z úloh, pro něž jsou hybridní SoC velmi vhodné, jsou autonomní vozidla detekující překážky, vyhledávající optimální cestu a komunikující s dopravní infrastrukturou (grafika: Shutterstock)
Obr. 4. Díky ekosystému PikeOS pro procesory MMU a MPU lze heterogenní SoC, jako je Xilinx Ultrascale+ MPSoC, vyvíjet integrovaným způsobem
Obr. 5. Počínaje verzí 7.2 CODEO IDE se systémem Eclipse lze oba operační systémy, PikeOS pro MMU i MPU, používat v jednom integrovaném vývojovém prostředí
Obr. 6. Sysgo nabízí pro desku Xilinx Ultrascale+ ZU9EG image OS ideální pro vývoj různých rozhraní a také flexibilně rozšiřitelné
1) V režimu lockstep dva procesory paralelně zpracovávají stejnou sadu operací; tyto dvě sady výsledků jsou porovnány řídicí jednotkou nebo komparátorem a vyhledávají se jednobodové chyby (SPoF – Single Point of Failure).
2) Separační jádro (separation kernel) alokuje všechny zdroje pod jeho kontrolou do jednotlivých oddílů (partitions). Oddíly jsou izolované s výjimkou výslovně povolených informačních toků. Úlohy prováděné v jednom oddílu jsou izolované a nemohou být detekovány ani sdíleny s úlohami v jiném oddílu, není-li to povoleno. Oddíly a toky jsou definovány v konfiguračních datech. Separační jádro tak poskytuje svým hostovaným softwarovým programům vysoce spolehlivé oddělení a řízení toku informací, odolné proti neoprávněné manipulaci. Národní bezpečnostní agentura USA (NSA) zveřejnila profil SKPP – Separation Kernel Protection Profile, který specifikuje bezpečnostní požadavky pro separační jádra vhodná pro prostředí velmi kritických aplikací.
3) Porucha jedné události (SEU) je změna stavu způsobená jednou jedinou ionizující částicí, která zasáhne citlivý uzel v mikroelektronickém zařízení, např. v mikroprocesoru, polovodičové paměti nebo výkonových tranzistorech. Změna stavu je výsledkem volného náboje vytvořeného ionizací v blízkosti důležitého uzlu nebo v něm. SEU nepoškozuje funkčnost zařízení trvale, je to vratná porucha.