Ultra-Low-Power-Prozessor mit RISC-V IoT-Prozessor für KI-Applikationen

Sicherheit und Speicherverwaltung - plus Video

Die Forderungen hinsichtlich der Sicherheit von Edge-Geräten wachsen in der Branche. Obwohl die Art der Geräte, für die der GAP8 konzipiert wurde – kleine batteriebetriebene Sensoren mit sehr begrenzter Übertragungsbandbreite – für ambitionierte Hacker nicht im Vordergrund stehen, ist die Sicherheit solcher IoT-Geräte ein wichtiges Thema. Mit dem GAP8 haben die Entwickler versucht, einen vernünftigen Ansatz zu verfolgen. GAP8 enthält elektronische Sicherungen, die den Boot-Vorgang überwachen und das Laden von verschlüsselter Software erzwingen können, die das Gerät vor bösartiger Firmware schützt. Der FC im GAP8 kann in einem Maschinen- oder Anwendermodus betrieben werden, der in Kombination mit einer Speicherschutzeinheit, die FC-Peripherie und den L2-Speicher mit einer Firewall verbindet, sicherstellt, dass die Anwendungssoftware den Zustand des GAP8s nicht korrumpiert.

Der GAP8 ist nicht mit Daten-Caches verbunden, da sie eine geringe Effizienz bieten – eine durchschnittliche Trefferquote von 30 % bedeutet, dass 70 % der Abrufe verschwendet werden. Der Verzicht auf den Daten-Cache ist auch deshalb möglich, weil der GAP8 auf die Verarbeitung eines Datenstroms ausgerichtet ist und der Datenstrom von seiner Art her eine vorhersehbare Größe ist. Wir verwenden im GAP8 zwei DMA-Einheiten, um die Daten von und zu externen Speichern und Peripheriegeräten, L2- und L1-Speicherbereichen zu bewegen.

Die Mikro-DMA (µDMA)-Einheit ist ein autonomer, mehrkanaliger DMA-Controller, der in der Lage ist, Daten zwischen externen Peripheriegeräten (Q-SPI, I2S, I2C, HyperBus, Camera Parallel Interface) und dem L2-Speicher ohne Eingriff des FC zu übertragen. Die Cluster-DMA-Einheit kopiert Daten aus dem L2-Speicher in den L1-Speicher. Sie ist in der Lage, Daten des Massenspeichers – 1D und 2D auf der L2-Seite und 1D auf der L1-Seite – zu übertragen.

Bei der Datenverarbeitung sind die drei verschiedenen Speicherbereiche des GAP8 zu berücksichtigen:

  • ein kleiner, aber schneller, gemeinsamer L1-Speicherbereich,
  • ein größerer, langsamerer L2-Speicherbereich und
  • ein möglicherweise externer L3-Speicher, angeschlossen über die HyperBus- oder Q-SPI-Schnittstellen.

Die beste Energieeffizienz kann erreicht werden, wenn mit den DMA-Einheiten eine doppelte oder dreifache gepufferte Datenbewegung über diese Speicherbereiche gleichzeitig mit der Verarbeitung durchgeführt wird. Um dies zu erleichtern, haben wir ein Werkzeug namens AutoTiler entwickelt (Bild 4).

Der AutoTiler kombiniert Basic-Kernels, die auf Teilkacheln von Daten im L1-Bereich arbeiten können, mit einem „User Kernel“, der beschreibt, wie Daten an Basic Kernel übergeben und zwischen diesen verteilt werden sollen und in welchem Speicherbereich sich die Daten befinden. Dieses Werkzeug generiert dann automatisch lesbaren C-Code, der für den GAP8 kompiliert werden kann. Der Code führt das gesamte DMA-Transfermanagement und die Synchronisation von Aufrufen an den Basic Kernel auf jedem Kern des Clusters durch. Mit diesem Werkzeug haben wir Codegeneratoren für eine Vielzahl von verschiedenen neuronalen Netzwerk- und Signalverarbeitungsaufgaben entwickelt.

Werkzeugkette für die Entwicklung

Der GAP8 wird mit C oder C++ mit einer Standard-Werkzeugkette wie GCC, GDB und binutils programmiert. Wir haben die Werkzeugkette für die zusätzlichen Anweisungen erweitert, die wir zum Standard-RISC-V-Befehlssatz hinzugefügt haben, um den Code generieren und optimieren zu können. Ein fein abgestufter Zugang zu den schwieriger zu optimierenden Anweisungen kann über GCC built-ins erreicht werden. Wir bieten diese Werkzeugkette auch für eine integrierte Entwicklungsumgebung (IDE – Integrated Development Environment) an, für die Open-Source-IoT-Entwicklungsumgebung PlatformIO IDE.

GAP8-Anwendungsbeispiel: autonome Drohne

Als Demonstration für die Nutzung der effizienten Rechenleistung des GAP8 wurde in einem Projekt der Universität Zürich und der ETH Zürich ein Modul (shield) für die Quadrocopter-Entwicklungsplattform Crazyflie von Seeed Technology Co., Ltd. entwickelt, das es der Nanodrohne ermöglicht, autonom zu navigieren (Bild 5).

Die autonome Navigation war bisher auf größere Drohnen in Mikro- oder Standardgröße beschränkt, bei denen die verfügbare Leistung und die Tragfähigkeit den Einsatz von Mikro-PCs oder großen Embedded-Computerplattformen ermöglicht. Nanodrohnen waren bisher auf einen externen Rechner zur Verarbeitung der Daten angewiesen, mit dem sie per Funk kommunizierten. Im Rahmen des Projektes wurde ein neuronales Netzwerk, das zuvor auf einem PC ausgeführt wurde, auf den GAP8 portiert.

Das Netzwerk, eine Ableitung von RESnet, wird anhand von Bildern trainiert, die mit einem Lenkwinkel und einer Kollisionswahrscheinlichkeit korreliert sind (Bild 6). Bei 1 V, wobei der FC mit 50 MHz und die acht Kerne im Cluster mit 100 MHz laufen, kann der GAP8 6,5 QVGA-Bilder/s bei einer Leistungsaufnahme von nur 4 mW verarbeiten. Selbst bei voller Verarbeitungsgeschwindigkeit des GAP8 werden die kombinierten Flugkontroll- und autonomen Navigationsfunktionen unter 5 % des gesamten Leistungsbedarfs der Drohne gehalten.

 

 

Der Autor

Martin Croome

erwarb 1987 seinen B. Sc. (Hons) in Informatik an der Universität Edinburgh, Großbritannien. Nachdem er in verschiedenen technischen Funktionen gearbeitet hatte, kam er 1989 zu HP und arbeitete in den folgenden elf Jahren in vielen Marketingfunktionen für PC-, Mobil- und Netzwerkprodukte, so auch als Product Marketing Manager der Handheld-Abteilung von HP in Singapur.

Nach seinem Ausscheiden aus HP im Jahr 2000 baute Croome die europäischen Aktivitäten eines US-Start-ups Socket Mobile auf. Im Jahr 2012 wechselte er zu Option Wireless, wo er Marketing- und Geschäftsführungsaufgaben in den Produktlinien 3G- und 4G-Datenmodems und IoT-Gateways übernahm.

Aktuell ist Croome bei GreenWaves Technologies als Vizepräsident verantwortlich für die Geschäftsentwicklung und das Marketing des GAP8-IoT-Prozessors.

martin.croome@greenwaves-technologies.com