Jste zde

Vícejádrové procesory zvýší výkon vaší aplikace

Smart produkty stále více používají kombinaci tradičního real-time embedded software a komplikovaného aplikačního software. Je nutný větší výpočetní výkon, aby tyto produkty podporovali uživatelský interface s pokročilými mediálními službami, jako jsou dotykové obrazovky, 3D grafika s vysokým rozlišením a kamery. Zároveň je tlak na nízkou spotřebu, náklady a malou velikost.

V tomto článku si ukážeme, jak používat procesory od společnosti NXP Semiconductors. Ty nabízejí jednoduché řešení pro uspokojení rostoucí poptávky po aplikacích schopných zvládnout procesy v reálném čase i složité výpočetní algoritmy.

Změna výpočetního výkonu při zachování kódu

Pro vývojáře bylo běžnou praxí změnit výpočetní výkon změnou mikroprocesoru s jiným počtem jader. Pomocí této metody lze získat zvýšení výkonu při zachování kompatibility s existující kódovou základnou a zkušeností s danou řadou zařízení.

S řadou aplikačních procesorů NXP i.MX 6 lze zachovat kompatibilitu s kódem a škálovat výkon pomocí mikroprocesoru  i.MX 6Solos s jedním jádrem Arm Cortex-A9, mikroprocesoru i.MX 6Dual se dvěma jádry nebo i.MX 6Quad​​ integrující čtyři jádra.

Výrobci se snaží přidat inteligenci do domácích spotřebičů, průmyslových regulátorů, lékařských přístrojů a dalších. Dodavatelé polovodičů reagovali na tuto poptávku heterogenními vícejádrovými zařízeními (HMP), které mají integrovány jádra aplikační a jádra embeded procesů. Například řada NXP i.MX 8M kombinuje až čtyři aplikační jádra Arm Cortex-A53 s embeded jádrem  Arm Cortex-M4.

Díky tomuto jedinému zařízení lze vytvářet inteligentní zvukové zařízení. Ty plně využívají aplikační jádro procesoru ke zlepšení zvuku, filtrování nebo jinou manipulaci se zvukovými daty. Zvukový systém se pak spoléhá na embeded jádro procesoru, aby mohl provádět funkce v reálném čase potřebné pro přehrávání (obrázek 1). Zatímco operace v reálném čase probíhají v embeded jádru, aplikační jádro může být umístěn do režimu nízké spotřeby, aby se snížila celková spotřeba energie. Když jsou operace v reálném čase dokončeny, embeded jádro jednoduše odešle wake up signál pro probuzení aplikačního jádro.

Obrázek 1: Heterogenní vícejádrové procesory jsou obzvláště účinné pro inteligentní zařízení poskytující výkonné výpočetní systémy, tak i operace v reálném čase. (Zdroj obrázku: NXP Semiconductors)

Rodina NXP i.MX 8M s různým počtem jader integruje rozsáhlou sadu multimediálních zdrojů, včetně 4K video procesorové jednotky (VPU) a vysoce výkonné 3D grafické procesorové jednotky (GPU). Výsledkem je, že rodina procesorů může poskytnout efektivní řešení pro rostoucí třídu chytrých produktů pro video a 3D grafiku.

Vývojáři, kteří staví systémy s vysokým výkonem, přesto čelí tlaku na nízkou spotřebu energie jak pro bateriové zařízení, tak i pro systémy napájené z elektrické sítě. Pro řešení tohoto problému je řada procesorů NXP i.MX 8M Mini vyrobena pokročilou technologií, která řeší protichůdné požadavky – vysoký výkon pro náročné aplikace a zároveň nižší spotřebu energie.

Vysoký výkon, nízká spotřeba

Procesory NXP HMP jsou první procesory vyráběné technologiemi FinFET  (14 nanometrů ). Stejně jako řada NXP i.MX 8M i NXP i.MX 8M Mini má integrováno jádro Arm Cortex-M4 pro embeded procesy a až čtyři jádra Arm Cortex-A53 pro aplikační procesy. Dále nemohou chybět komplexní bezpečnostní podsystémy, podporu pro konektivitu a I/O rozhraní. (Obrázek 2).

Obrázek 2: Procesor NXP i.MX 8M Mini kombinuje až čtyři jádra Arm Cortex-A53 pro aplikační procesy a jedno embeded jádro Arm Cortex-M4 s funkcemi pro bezpečnost, multimédia, I / O rozhraní (Zdroj obrázku: NXP Semiconductors)

Procesor i.MX 8M Mini snížil počet  I / O kanálů a rozlišení multimediálního subsystému ve srovnání s předchozím NXP i.MX 8M. I.MX 8M Mini komerční verze MIMX8MM6DVTLZAA a průmyslová verze  MIMX8MM6CVTKZAAA nabízí jeden shader GPU a 1080p 60 Hz VPU ve srovnání se čtyřmi shadery GPU a 4K VPU v NXP i.MX 8M. Ostatní členové řady i.MX 8M Mini – komerční verze MIMX8MM5DVTLZAA a průmyslová verze MIMX8MM5CVTKZAA nemají VPU vůbec implementované. Stejně jako u dřívějšího modelu NXP i.MX 8M, i.MX 8M Mini umožňuje vyvážit výkon a náklady tím, že využívá podporu procesoru pro více typů paměti, včetně DDR3L, DDR4 a LPDDR4.

Minimální spotřeba energie

Pro další snížení spotřeby energie můžeme využít různých režimů. Tyto režimy se mohou přepínat automaticky nebo programově a tím se přizpůsobit dané aplikaci. Za určitých podmínek se mohou aplikační jádra automaticky přepnout do klidového režimu, vypnout GPU a VPU. Jádro Arm Cortex-M4 může pokračovat v běhu, zatímco některé nepotřebné periferie jsou vypnuty a může pouze docházet například ke sběru dat ze senzorů. Režim „pozastavení“(suspend) je nejúčinnějším pro nalezení optimální spotřeby. Rozšiřuje redukci výkonu v klidovém stavu vypnutím řadiče DDRC, který spravuje paměťová rozhraní. Režim bezpečného energeticky nezávislého úložiště (SNVS) uchovává energii pouze logice SNVS a hodinám reálného času.

Redukce výkonu 14 nm technologie FinFET používané v i.MX 8M jsou zvláště patrné v režimech suspend a SNVS. V i.MX 8M Mini s FinFET spotřebovává režim suspend přibližně 7,81 mW. V dřívějším i.MX 8M spotřebuje funkčně podobný režim (tzv. Režim hlubokého spánku) 197 mW. Podobné snížení výkonu platí v režimu SNVS, kde i.MX 8M Mini spotřebovává přibližně 0,11 mW, zatímco dřívější i.MX 8M spotřebuje přibližně 17 mW.

Zapínání napájení i.MX 8M Mini začíná na 1,8 V pro ovladače GPIO v bance SNVS. Během 2 ms (2,4 ms max) musí být na logiku jádra SNVS aplikováno 0,8 V. Tento proces pokračuje na ostatní piny v sekvenci, který obsahuje 12 kroků, z nichž každý je načasován v intervalech od 0,015 ms do 20 ms. Vypínání se provádí opačnou sekvenci s jednotným zpožděním 10 ms mezi jednotlivými kroky. Nedodržení těchto pokynů může dojít k výraznému proudovému přetížení a v nejhorším případě způsobit nevratné poškození. Pro fyzické provedení desky platí přísné požadavky. NXP doporučuje pro pouzdro 486 ball o velikosti 14 x 14 mm použít minimálně osmivrstvou desku s vrstvami určenými pro napájení, aby se zabránilo poklesu proudu (current-resistance - IR). Současně se musí zabránit přeslechům(crosstalk) na vysokorychlostních cestách, zejména těch, které jsou určené pro komunikaci s pamětí, kde se dosahuje rychlosti 1,5 GHz a 3 000 megatransferů za sekundu (MT / s).

Rychlý vývoj

Pro zrychlení vývoje nabízí NXP všem vývojářům vývojovou sadu i.MX 8M Mini EVK a také příslušný referenční design (Obrázek 3). Vývojová sada obsahuje základní desku a desku s procesorem (system-on-module - SOM). Sada poskytuje kompletní systém včetně externí paměti LPDDR4 a Flash paměti, USB rozhraní a mnoho dalších periferií.

Obrázek 3: Vývojová sada i.MX 8M Mini EVK poskytuje kompletní systémovou platformu pro okamžitou práci s procesory i.MX 8M Mini, a tím i zrychlit vývoj vícejádrových procesorových aplikací. (Zdroj obrázku: NXP Semiconductors)

Spolu s Gigabit Ethernetem, sada obsahuje možnost Wi-Fi a Bluetooth připojení. K dispozici jsou přídavné desky včetně kamerového modulu MINISASTOCSI a dotykové obrazovky s OLED displejem MX8-DSI-OLED1. Přednastavené obrazy operačního prostředí Embedded Linux a Embedded Android jsou připraveny k okamžitému spuštění a vývojáři si mohou spustit ukázkové aplikace, díky kterým více poznají procesor i.MX 8M Mini. Pro své vlastní softwarové aplikace nabízí NXP bezplatnou sadu pro vývoj softwaru MCUXpresso (SDK), která poskytuje kompletní sadu softwarových komponent pro vytvoření vysoce výkonné vestavěné aplikace (Obrázek 4).

Obrázek 4: Architektura vývojového kitu MCUXpresso (SDK) obsahuje úplnou sadu softwarových vrstev včetně ovladačů, balíku podpory hardware desky a volitelných komponent potřebných pro vývoj většiny vestavěných aplikací. (Zdroj obrázku: NXP Semiconductors)

Pomocí NXP online MCUXpresso SDK Dashboard lze konfigurovat SDK konfiguraci pro GCC Arm Embedded toolchain nebo IAR Embedded Workbench pro Arm. Dashboarad umožňuje přidávat komponenty middlewaru, včetně knihovny DSP softwaru Arm Cortex Microcontroller Interface Standard (CMSIS) a Amazon FreeRTOS. Sady SDK je dodávána se standardními knihovnami Arm, periferními ovladači, ovladači pro FreeRTOS a rozsáhlou sadou softwarových příkladů, kde naleznete vzorový příklad pro výměnu zpráv.

V každém vícejádrovém výpočetním prostředí je nutné mít efektivní mechanismy pro předávání požadavků a sdílení dat. Sada i.MX 8M Mini EVK používá RPMsg-Lite. Jedná se o jednoduchou verzi protokolu Remote Processor Messaging (RPMsg). Protokol RPMsg byl vytvořen jako součást Open Asymmetric Multi Processing (OpenAMP) frameworku, který poskytuje standardní rozhraní pro komunikaci mezi více jádry.

V rámci distribuce SDK je jedna ukázková aplikace rpmsg_lite_pingpong_rtos pro výměnu dat pomocí RPMsg-Lite. Jedná se o implementaci jednoduché ping-pongové vzájemné spolupráce mezi různými jádry(Výpis 1). Po vytvoření RPMsg fronty (my_queue) a koncového bodu (my_ept) pro druhý „vzdálený“ procesor, „hostitelský“ aplikační procesor dává signály vzdálenému jádru. Po obdržení handshake odpovědi ze vzdáleného jádra, hostitel začne smyčku, která používá blokovací čekání na zprávu „ping“ z dálkového ovladače před odesláním vlastní odpovědi „pong“.

void app_task(void *param)
{
   .
   .
   .
    my_rpmsg = rpmsg_lite_remote_init((void *)RPMSG_LITE_SHMEM_BASE, RPMSG_LITE_LINK_ID, RL_NO_FLAGS);
 
    while (!rpmsg_lite_is_link_up(my_rpmsg))
        ;
    PRINTF("Link is up!\r\n");
 
    my_queue = rpmsg_queue_create(my_rpmsg);
    my_ept = rpmsg_lite_create_ept(my_rpmsg, LOCAL_EPT_ADDR, rpmsg_queue_rx_cb, my_queue);
    ns_handle = rpmsg_ns_bind(my_rpmsg, app_nameservice_isr_cb, NULL);
    rpmsg_ns_announce(my_rpmsg, my_ept, RPMSG_LITE_NS_ANNOUNCE_STRING, RL_NS_CREATE);
    PRINTF("Nameservice announce sent.\r\n");
 
    /* Wait Hello handshake message from Remote Core. */
    rpmsg_queue_recv(my_rpmsg, my_queue, (unsigned long *)&remote_addr, helloMsg, sizeof(helloMsg), NULL, RL_BLOCK);
 
 
    while (msg.DATA <= 100)
    {
        PRINTF("Waiting for ping...\r\n");
        rpmsg_queue_recv(my_rpmsg, my_queue, (unsigned long *)&remote_addr, (char *)&msg, sizeof(THE_MESSAGE), NULL,
                         RL_BLOCK);
        msg.DATA++;
        PRINTF("Sending pong...\r\n");
        rpmsg_lite_send(my_rpmsg, my_ept, remote_addr, (char *)&msg, sizeof(THE_MESSAGE), RL_BLOCK);
    }
 
    PRINTF("Ping pong done, deinitializing...\r\n");
 
    rpmsg_lite_destroy_ept(my_rpmsg, my_ept);
    my_ept = NULL;
    rpmsg_queue_destroy(my_rpmsg, my_queue);
    my_queue = NULL;
    rpmsg_ns_unbind(my_rpmsg, ns_handle);
    rpmsg_lite_deinit(my_rpmsg);
    msg.DATA = 0;
 
   .
   .
}

Výpis 1: Tento úryvek z ukázkového kódu, který je součástí sady pro vývoj softwaru MCUXpresso, demonstruje základní návrhový vzor pro provádění interakcí mezi různými procesory ve vícejádrovém procesoru. (Zdroj kódu: NXP Semiconductors)

Vývojáři mohou snadno stavět na této jednoduché výměně, aby vytvořili kompletní operace určené k přidělení úloh napříč jádry procesoru. Další ukázková aplikace, sai_low_power_audio používá RPMsg-Lite v podstatě jako nízkoúrovňovou vrstvu datového spojení pro aplikační protokol SRTM (Simplified Real Time Messaging). V této aplikaci používá jádro Arm Cortex-A53 tento protokol SRTM, aby požádal jádro Arm Cortex-M4 o přehrání zvukového souboru, který je umístěn ve sdílené paměti.

Po převzetí kontroly nad sdílenou vyrovnávací pamětí M4 provede několik operací, a nakonec provede kroky pro přístup k paměti (SDMA) a předá data příslušném algoritmu a nakonec pošle data do sériového audio rozhraní (SAI) pro audio výstup. Během provozu může jádro A53 vstoupit do režimu nízké spotřeby. Ukázková aplikace sai_low_power_audio, i když je komplexnější než aplikace ping-pong, demonstruje, jak mohou vývojáři používat vícejádrové procesory pro maximalizaci výkonu při minimalizaci spotřeby energie v inteligentních produktech.

Závěr

Aplikační procesor NXP i.MX 8M Mini je vybaven pokročilým polovodičovým procesem a poskytuje vysoce výkonné vícejádrové zpracování a nízkou spotřebu. Pomocí NXP i.MX 8M Mini lze efektivněji reagovat na nově vznikající požadavky na výpočetní výkon, který je potřeba ve stále sofistikovanějších inteligentních produktech.

 

Článek vyšel v originále „Use a Multicore Processor to Build Low-Power Media-Rich Smart Products" na webu DigiKey.com, autorem je Stephen Evanczuk

Hodnocení článku: