Pojďme programovat elektroniku | Procesory | RISC-V

Pojďme programovat elektroniku: Boj se Arme! Přicházejí čipy architektury RISC-V

  • Alibaba se pochlubila čipem se svobodnou architekturou RISC-V
  • Na trhu jich je ale mnohem více, třeba Kendryte
  • A brzy by mohly začít komplikovat život všudypřítomnému armu

Na sklonku července prolétla médii zpráva o dalším procesoru doposud poměrně exotické architektury RISC-V. Čínský Xuantie 910 má k dispozici 16 jader, pracuje pod taktem 2,5 GHz, pro Alibabu jej navrhlo její studio C-SKY Microsystems z Chang-čou a dle svého výrobce by to měl být aktuálně nejvýkonnější stroj této technologie.

Když byste si dnes chtěli navrhnout vlastní komplexní procesor, budete potřebovat pár set schopných matematiků a elektroinženýrů, no a když je zavřete do velké haly a na pár let zahodíte klíč, možná vám někdy okolo roku 2025 protáhnou škvírou flešku s kompletními logickými návrhy elektrických obvodů a popisem uživatelského rozhraní – instrukční sadou.

Instrukční sada (instruction set architecture) stanovuje, jaké příkazy (instrukce) procesor přijímá, jak je zpracovává, jak pracuje s pamětí a tak dále. Strojový kód každého programu, který spouštíte na svém počítači, pak není nic jiného než ohromná řada tisíců a tisíců těchto elementárních instrukcí, které provádějí jednoduché aritmetické operace a přesouvají bity v paměti sem a tam.

Zrychlete tento proces třeba na běžných 2 000 000 000 taktů za sekundu (2 GHz), zapojte do hry několik podobných procesorových jader a na monitoru se vám zobrazí třeba matice 2 073 600 pixelů s článkem na Živě.cz... A blikající reklamou, kterou zpracovávají paralelní vlákna CPU.

Proč navrhovat procesory od píky, když si je mohu koupit

V praxi dnes ale výrobci volí poněkud vhodnější řešení – základní návrhy procesoru a jejich instrukční sady si prostě koupí. Ideálně od někoho, jehož architektura instrukční sady (ISA) je ve světě natolik rozšířená, že zajistí vysokou aplikační kompatibilitu.

Zatímco Intel svoje procesorové technologie ostatním běžně nelicencuje, takže vlastní Intel Core i5 si doma v dílně nepostavíte, původem britsko-americký Arm Holdings šel opačnou cestou, a tak je dnes jeho procesorová technologie téměř všudypřítomná.

Klepněte pro větší obrázek
Arm Holdings to navrhne, já koupím, a někdo třetí mi to vyrobí

Ačkoliv procesorům v laptopech, desktopech a serverech stále vládne zmíněný Intel (no dobře, ještě tu je AMD), téměř vše ostatní je, zjednodušeně řečeno, ARM. Armové procesory a mikrokontrolery najdete v nejdrobnější elektronice, v kdejaké spotřební elektronice v kuchyni a koupelně, v síťových prvcích a ty nejvýkonnější pak konečně i v telefonech nebo multimediálních televizorech, herních konzolích aj. (Nvidia Tegra).

Arm Holdings však nevyrobil ani jeden z nich. Pouze na papíře navrhl jejich instrukční sady, tedy to, jak má takový procesor v nitru co nejefektivněji fungovat. Kdejaký asijský výrobce si pak některý z těchto návrhů licencoval, dle svých požadavků upravil, vylepšil a konečně poslal vše do fabriky.

Rodí se svobodná konkurence pro ARM a jmenuje se RISC-V

Po drobné odbočce zpět k čínskému procesoru Xuantie. Jak už jsme si řekli v úvodu, namísto armové architektury používá instrukční sadu RISC-V, jejíž vývoj už roky zastřešuje organizace RISC-V Foundation a z původně ryze akademického projektu Kalifornské univerzity v Berkeley se v posledních letech stává zajímavá alternativa, která by mohla časem zatopit právě architekturám od inženýrů z Arm Holdings.

Proč? Protože RISC-V je už od počátku svobodná technologie. Technologie, která je open-source a nezatížená jakýmikoliv zpoplatněnými patenty. Nejspíše i z tohoto důvodu se nyní o RISC-V ve velkém mluví zejména v Číně, dosavadní procesorové technologie jsou totiž vázané povětšinou na americké duševní vlastnictví, takže procesory se staly obětí současné obchodní války mezi USA a Čínou.

RISC-V chtějí všichni. Tedy až na Intel, AMD a Arm Holdings

RISC-V představuje nezávislost a svobodu, takže pokud by se jednou tato technologie dokázala masověji prosadit a třeba i nahradit ARM, znamenalo by to mimo jiné i to, že napříště nebude moci žádná politická autorita vyhlásit jakýkoliv technologický zákaz.

Klepněte pro větší obrázek
Seznam zakládajících a platinových členů RISC-V Foundation připomíná výpis Kdo je kdo v IT. Ti ostatní jsou pak mezi zlatými a stříbrnými členy.

Že to není jen naivní sen několika nadšenců a křemíkových hippies, dokládá pohled na členy nadace. Figurují mezi nimi taková jména jako Google, Nvidia, Qualcomm, Samsung, NXP nebo třeba Western Digital. A to jsem zmínil jen některé zakládající a platinové členy. K těm dalším patří samozřejmě Huawei, ale také Honeywell, IBM, Raspberry Pi... S trochou nadsázkou vlastně celý současný polovodičový svět až na Intel, AMD a Arm Holdings. Přirozeně.

Než se však dokáže RISC-V prosadit i ve vyšších patrech komplexních SoC, které pohánějí třeba váš telefon, a vedle samotného CPU mají i GPU a další klíčové komponenty, bude to ještě nějaký čas trvat. Pro nás je podstatné, že vývoj RISC-V je už v takovém stavu, že může plnit mnohé jednodušší ale neméně důležité role.

Čínský Xuantie tak bude fungoval jako akcelerační koprocesor pro 5G, umělou inteligenci a mnohé další úkoly. Western Digital pak zase používá čipy se svobodným RISC-V v řadičích svých pevných disků.

Prototypovací desky Sipeed Maix s RISC-V procesorem

RISC-V nakonec dorazil i mezi kutily, makery a bastlíře všeho druhu, v posledních měsících se totiž na trhu začínají objevovat relativně laciné prototypovací desky principiálně podobné Arduinu a dalším s RISC-V mikrokontrolery.

Klepněte pro větší obrázekKlepněte pro větší obrázekKlepněte pro větší obrázekKlepněte pro větší obrázekPrototypovací destička Sipeed Maix Bit s kamerou a displejem pro experimentování s počítačovým viděním.

Chiptron.cz nedávno napsal o drobné destičce za pět dolarů Sipeed Longan Nano, na které je vedle 32bitového RISC-V mikrokontroleru GD32VF103CBT6 připájený dokonce i širokoúhlý 0,96“ barevný IPS displej, no a nám do redakce před pár dny dorazilo několik žlutých obálek s o něco málo dražšími prototypovacími deskami Sipeed Maix Bit.

Destička Sipeed Maix Bit

Procesor lze softwarově přetaktovat až na dvojnásobek.

Klepněte pro větší obrázekKlepněte pro větší obrázek
Kompletní set Sipeed MAix Bit s kamerou a displejem a dvě modifikace destičky s MEMS mikrofonem, nebo RGB LED a odlišným USB/UART převodníkem

Deska je dodávaná ve dvou modifikacích s MEMS mikrofonem a RGB LED. Verze s mikrofonem používá USB/UART čip CH552, zatímco verze s RGB LED lépe podporovaný čip CH340, který najdete i na mnoha dalších populárních prototypovacích deskách.

Procesor Kendryte K210

Pod asijskou značkou Sipeed se rodí celá rodina IoT SoC pro různé účely, přičemž úzká destička Maix Bit a deska Maixduino s form-faktorem podobným Arduino Uno slibují optimalizaci pro zpracovávání neuronových sítí pro počítačové vidění.

Klepněte pro větší obrázekKlepněte pro větší obrázek
Procesorové technologie a patenty doposud držel především Západ (Intel, AMD, Arm Holdings), s nástupem svobodného RISC-V se ale může ledacos změnit

Desky proto mají konektory pro připojení kamery a drobného displeje, přičemž kompletní balíčky se vším všudy objednáte na mnoha asijských e-shopech včetně Aliexpressu zhruba za 500-700 korun. Holá verze Maix Bit bez kamery a displeje je k mání po přepočtu asi za tři stovky.

Klepněte pro větší obrázek
Nitro mikrokontroleru Kendryte K210 s akcelerátorem pro neuronové sítě

Za tuto cenu vám dorazí destička osazená čipem Kendryte K210. Jedná se o 64bitový dvoujádrový procesor RISC-V vyrobený 28nm technologii ve fabrikách TSMC, který obsahuje šifrovací jednotku (AES/SHA256) a jednotky pro inferenci konvolučních neuronových sítí a zpracovávání zvukových dat. Pro hlubší studium vás přesměruji na datasheet v PDF.

Můžete programovat v Arduino IDE…

Kendryte nabízí pro vývojáře kompletní SDK pro programování svého čipu včetně podpory FreeRTOS (viz GitHub aj.), pokud ale nemáte zrovna měsíc placeného volna, Sipeed pro své desky Maix Bit a Maixduino nabízí i podporu velmi jednoduchého programování v MicroPythonu s vlastním vývojovým prostředím MaixPy IDE a samozřejmě i v klasickém Arduino IDE a jazyku C++. Stačí doinstalovat podporu jako pro ostatní desky.

Klepněte pro větší obrázek
Po doinstalování podpory v Arduino IDE můžete libovolně programovat 400MHz procesor, přičemž nechybí ani podpora přetaktování na 600 MHz. Před prvním flashováním je třeba jako programátor zvolit techniku k-flash.

V sekci příkladů pak najdete hromadu ukázek pro procesor K210 včetně zpracovávání neuronové sítě pro rozpoznávání obrázků MobileNet. Jelikož mají desky Maix slot pro microSD, nechybí samozřejmě ani podpora pro práci se souborovými systémy, takže K210 může ukládat obraz z kamery přímo na paměťové médium, anebo z něj načítat modely neuronových sítí.

Anebo díky firmwaru MaixPy v MicroPythonu

Jak už jsem napsal výše, Sipeed se vedle podpory vývojového prostředí Arduino soustředí ještě na MicroPython – zjednodušenou verzi populárního skriptovacího jazyka pro mikrokontrolery.

Ačkoliv je Python na podobných čipech pochopitelně mnohem pomalejší než nízkoúrovňové C/C++, pokud nebudete softwarově generovat nejrůznější komplikované digitální signály, při běžné práci rozdíl nepoznáte a Python v případě desek Maix nabízí zajímavou výhodu – vlastní vývojové prostředí.

Klepněte pro větší obrázek
MaixPy IDE a uvítací skript v MicroPythonu, který na displeji zobrazí  obraz z kamery

Jmenuje se MaixPy IDE, a pokud koupíte destičku včetně kamery a displeje, vývojové prostředí nabízí dokonce živý náhled, co se na něm zrovna zobrazuje. Editor samotný podporuje barevně rozlišený kód a jeho jednoduché automatické doplňování.

Na čerstvě zakoupené desce je vždy předinstalovaný firmware MaixPy s MicroPythonem, destička je tedy ihned připravená i pro MaixPy IDE. Autoři firmware průběžně aktualizují, přičemž nové verze a další doplňky na čip K210 nahrajete skrze USB a textový nástroj kflash přímo od tvůrců procesorů Kendryte, anebo pomocí mnohem přívětivější grafické nadstavby kflash_gui.

Klepněte pro větší obrázek
Drobná utilita kflash_gui pro nahrání nové verze firmwaru MaixPy, který umožní spouštět skripty v MicroPythonu

Skript s kamerou a LCD displejem

S výchozím firmwarem MaixPy se po připojení napájení nahraje do paměti interpret jazyka Python, takže spouštění jednotlivých textových skriptů z MaixPy IDE je otázkou několika sekund. Program je pouze přesune na flashové úložiště procesoru K210, případně je nahraje z SD karty.

Klepněte pro větší obrázekKlepněte pro větší obrázekKlepněte pro větší obrázek
Deska je připojená ke zdroji napájení a běží na ni firmware MaixPy, který zatím nemá k dispozici žádný  skript v MicroPythonu, a tak se na obrazovce zobrazuje jen uvítací obrazovka. Po nahrání skriptu se čip K210 promění v jednoduchou kameru s displejem.

Tím výchozím v MaixPy IDE je jednoduchý seznamovací skript helloworld.py, který počítá s připojenou kamerou a displejem. Program v nekonečné smyčce nejprve zachytí snímek z kamery v 16bitovém barevném formátu RGB565 a rozlišení QVGA. Poté jej zobrazí na připojeném LCD displeji a nakonec vypíše do standardního výstupu (v tomto kontextu do sériové linky) obnovovací frekvenci.

Jelikož má MaixPy IDE vlastní náhledové okno, takže se veškerý obraz zobrazí i na počítači v programu, bude obnovovací frekvence zhruba poloviční. V ostrém nasazení bez spojení s vývojovým prostředím, které jej svým náhledem vlastně zpomaluje, pak výkon vzroste na dvojnásobek.

Celý program zabere v MicroPythonu asi deset řádků jednoduchého kódu a firmware MaixPy jej může spouštět automaticky po startu procesoru K210.

import sensor, image, time, lcd

# Nastartuj displej
lcd.init(freq=15000000)
# Resetuj kameru
sensor.reset()          
# Nastav obrazovy format kamery na RGB565                      
sensor.set_pixformat(sensor.RGB565)
# Nastav rozmery snimku kamery na QVGA
sensor.set_framesize(sensor.QVGA)  
# Pockej s odesilanim dalsich snimku 2 sekundy pro ustaleni obrazu
sensor.skip_frames(time = 2000) 
š Systemove hodiny  
clock = time.clock()            

# Nekonecna smycka jako loop v Arduinu
while(True):
    # Zpracuj dalsi operace CPU, aby jej smycka zbytecne neblokovala
    clock.tick() 
    # Ziskej snimek z kamery                  
    img = sensor.snapshot()  
    # Zobraz snimek na displeji (a v MaixPy IDE, pokud je deska pripojena k PC) 
    lcd.display(img)     
    # Vypis udaje o FPS do seriove linky         
    print("FPS: " + str(clock.fps()))

Skript s rozpoznáváním tváře na dvaceti řádcích

Ukažme si ještě jeden příklad v MicroPythonu pro desky Maix s procesorem K210. Tento už do hry konečně zapojí pokročilejší strojové vidění a akcelerační jednotku KPU pro zpracovávání konvolučních neuronových sítí (CNN). Najdete jej společně s několika desítkami dalších příkladů na GitHubu.

Náš skript tentokrát nahraje do paměti již hotový model neuronové sítě od autorů desky na rozpoznávání lidské tváře v obrazu.  Jedná se o model typu YOLOv2 (You Only Look Once) pro počítačové vidění, který umí procesor K210 akcelerovat na své KPU jednotce.

Klepněte pro větší obrázek
Detektor lidské tváře v praxi

Program bude po nahrání modelu, jeho konfiguraci a inicializaci v nekonečné smyčce opět pořizovat snímek z kamery, který ale tentokrát před zobrazením na displeji prožene detektorem tváře.

Pokud nějakou najde, vrátí souřadnice její polohy v obrazu a rozměry v pixelech, díky čemuž pak můžeme do snímku na toto místo vykreslit obdélník. Nakonec zobrazíme upravená rastrová data na displeji (a tedy i v živém náhledu v MaixPy IDE) a ještě vypíšeme data do terminálu.

Klepněte pro větší obrázek
Detektor lidské tváře v praxi

To je vše. Celý skript se vejde na dvacet řádků a výkonný čip K210 hravě překoná všechny běžné mikrokontrolery, se kterými jsme se v našem seriálu o programování elektroniky doposud setkali.

import sensor
import image
import lcd
import KPU as kpu

# Nastartuj displej
lcd.init()
# Resetuj kameru
sensor.reset()
# Nastav obrazovy format kamery na RGB565
sensor.set_pixformat(sensor.RGB565)
# Nastav rozmery snimku kamery na QVGA
sensor.set_framesize(sensor.QVGA)
# NAstartuj kameru
sensor.run(1)

'''
Nejprve nahraji model rozpoznavani lidskych tvari
Bude se nachazet na konkretni adrese flashove pameti,
ale stejne tak by se mohl nahravat treba z microSD karty: kpu.load("/sd/face.kmodel")
'''
task = kpu.load(0x300000)

# konfigurace modelu, necham vychozi hodnoty, viz dokumentace
anchor = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025)

# Aktivace akceleracni jednotky KPU na cipu K210 pro zpracovavani neuronovych siti YOLO2
kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)

# Start nekonecne smycky (obdoba smycky loop v Arduinu)
while(True):
    # Zachyt snimek z kamery
    img = sensor.snapshot()
    # analyzuj snimek pomoci modelu
    found = kpu.run_yolo2(task, img)
    # Pokud sit nasla nejake tvare...
    if found:
        # Projdi tvar po tvari
        for face in found:
            # Vypis udaje o tvari
            print(face)
            # Nakresli do snimku obdelnik se souradnicemi tvare
            img.draw_rectangle(face.rect())
    # Zobraz snimek na displeji (a tedy i v zivem nahledu MaixPy IDE v PC)
    lcd.display(img)

# Po skonceni programu ukonci praci KPU jendotky
kpu.deinit(task)

RISC-V dospívá. To je skvělá zpráva pro IT

Jak vidno, na scéně se objevují první MCU, CPU a komplexní SoC jednotky čipové architektury RISC-V, které už jsou použitelné v praxi a rodí se okolo nich zajímavá komunita makerů. Projekt desek Sipeed Maix se pak snaží RISC-V čip K210 s akcelerátorem pro počítačové vidění prodat tou nejjednodušší možnou formou.

Sipeed Maix Bit v akci:

RISC-V je třeba začít brát vážně, jednou může být totiž na poli procesorů tím samým, čím se v posledních 25 letech stalo na poli operačních systémů zase svobodné linuxové jádro.

Diskuze (4) Další článek: První programovatelný procesor z uhlíkových nanotrubic je na světě. Přináší technologie s trojrozměrnou konstrukcí

Témata článku: Google, Pojďme programovat elektroniku, Intel, Programování, USA, AMD, Čína, Nvidia, Procesory, Arduino, Huawei, TSMC, Samsung, ARM, C++, Qualcomm, LCD, Python, RISC-V, GPU, Arm Holdings, FPS, Západ, Alibaba, AliExpress


Určitě si přečtěte

Že by konečně revoluce? Nové chytré hodinky od Garminu mají průhledný solární panel

Že by konečně revoluce? Nové chytré hodinky od Garminu mají průhledný solární panel

** Chytré hodinky mají relativně malou výdrž ** Sportovní fénixy od Garminu jsou na tom ale lépe ** Poslední verze nabízí dokonce transparentní solární panel

Jakub Čížek | 54

Pojďme programovat elektroniku: Postavíme bezpečnostní systém za 30 Kč

Pojďme programovat elektroniku: Postavíme bezpečnostní systém za 30 Kč

** Před pár týdny jste si mohli v akci koupit Wi-Fi desku za jeden dolar ** Nám už TTGO T-Display dorazila do redakce ** Připojíme k ní jazýčkový kontakt a vyrobíme bezpečnostní systém

Jakub Čížek | 27

Starý smartphone nemusí skončit v koši. 10 způsobů, jak ho ještě můžete využít

Starý smartphone nemusí skončit v koši. 10 způsobů, jak ho ještě můžete využít

** Co dělat s vysloužilým chytrým telefonem? Neházejte ho do koše! ** Našli jsme pro vás deset možností, jak ho prakticky využít ** I stará zařízení tak mohou být užitečná

Karel Kilián | 46

Vyzkoušeli jsme první zařízení s Wi-Fi 6. Nová verze Wi-Fi je rychlejší a spolehlivější

Vyzkoušeli jsme první zařízení s Wi-Fi 6. Nová verze Wi-Fi je rychlejší a spolehlivější

** Wi-Fi 6 přinese větší spolehlivost a dosah sítě ** Zkusili jsme Galaxy S10 připojit k routeru Netgear RAX80 ** Router s Wi-Fi 6 má pro někoho smysl už nyní

Tomáš Holčík | 50



Aktuální číslo časopisu Computer

Megatest 18 grafických karet

Ukliďte data v počítači

Jak dobře koupit starší telefon

Vylepšete zvuk televize: test 7 soundbarů