Multicore-Mikrocontroller Teil 1: So bestimmen Projekt-Ressourcen die richtige Auswahl des Multicore-Mikrocontrollers

Die Anforderungen an Mikrocontroller-gesteuerte Systeme steigen von Jahr zu Jahr. Sie sollen mehr Komfort, erweiterte Funktionalität und höhere Sicherheit für den Anwender bringen. Die Rechenkerne, die die erweiterten und neuen Aufgaben bearbeiten, benötigen dafür immer mehr Rechenleistung. Diese dreiteilige Serie hilft Entwicklern, den richtigen Multicore-MCU für ihre Anforderungen zu finden.

Zunächst gilt es, eine Anforderungsanalyse für die Software und Hardware durchzuführen und die Ergebnisse zu dokumentieren. Im Anschluss sollte eine Bewertung der aufgenommenen Anforderungen nach der Wichtigkeit für das Projekt erfolgen:

Bild 1: Erfolgreiche Vorgehensweise bei der Multicore-Mikrocontroller-Auswahl

Die Prioritätsklassen bestimmen, wie kritisch die Anforderung für das Projekt ist:

  • muss (verpflichtend; höchste Priorität)
  • sollte (wichtig für das Projekt; hohe Priorität)
  • wird (wäre gut, wenn es enthalten wäre; niedrige Priorität)

Bild 2: Zuweisung der Anforderungen zu Prioritätsklassen für das Projekt

Bevor nun eine Marktanalyse erfolgen kann, gilt es, z.B. für die Komponente eines Mikrocontrollers in der Systemsteuerung die genaueren Anforderungen, die an den Steuerungsrechner gestellt werden, zu definieren. Diese Anforderungen bilden die Basis für die Mikrocontroller-Auswahl:

Bild 3: Benötigte Ressourcen im Projekt bestimmen die Mikrocontroller-Auswahl 

Mit 3 Schritten zum passenden Multicore-Mikrocontroller

Ähnlich wie beim Kauf von Schuhen beginnt die Auswahl des passenden Mikrocontrollers mit der Suche nach der richtigen Größe. Gleichzeitig sollten wir prüfen, ob die drei wichtigsten Kriterien für automobile oder industrielle Anwendungen erfüllt sind:

Schritt 1: Rechenleistung, Stromverbrauch und Coprozessoren

Steht genügend Rechenleistung zur Verfügung?

Hier gilt es zu untersuchen, welche Art der Arithmetik, welcher Software-Umfang (Speichergrößen) und welche Zeitvorgaben für die Ergebnisbereitstellung bestehen.

Schritt 2: Safety und Security

Sind Sicherheitsanforderungen (Safety bzw. Security) zu erfüllen?

Je nach Art der Anforderungen werden unter Umständen spezielle Hardware-Module bzw. Mikrocontroller-Architekturen benötigt.

Schritt 3: Peripherie und Pins

Reichen die vorhandenen Ressourcen in der Peripherie?

Hier wird untersucht, ob bei den vorhandenen Modulen die Auflösung und die Funktionalität für die Applikation passt und die Anzahl der Port-Pins ausreicht. Auch Betrachtungen hinsichtlich der erforderlichen gleichzeitigen Verfügbarkeit von Ressourcen sind vorzunehmen.

Schritte zur erfolgreichen Multicore-Mikrocontroller-Auswahl:

  • Festlegung der Methodik/ Vorgehensweise
  • Anforderungsanalyse zur Ressourcen-Identifikation
  • Auswahlaspekte:
  • Art des Cores, Rechenleistung und Anzahl der Cores
  • Safety und Security
  • Datenspeicher/ Programmspeicher
  • Interrupt- und DMA-Controller
  • Peripherien und Ports
  • Bussystem(e)

Schritt 1 – Multicore-Mikrocontroller-Auswahl: Steht genügend Rechenleistung zur Verfügung?

Mehr MIPS pro Watt

Mit dem Erreichen einer theoretisch höheren Rechenleistung ist die Entwicklung nicht beendet. Vielmehr soll sie unter verschiedenen Bedingungen zur Verfügung stehen, z.B. bei einem bestimmten Strom-Budget. Dies trifft insbesondere bei batteriebetriebenen Geräten zu. In der Entwicklung von Mobiltelefonen ist sprichwörtlich das Ende der Fahnenstange erreicht. Die für den Betrieb benötigten Akkus können nicht immer mehr Strom liefern, ohne dass dies einen Einfluss auf Größe und Gewicht hat.

Bei Notebooks hat man eine Steigerung der Rechenleistung durch Multicore-CPUs bei moderater Taktung erreicht. Bei diesem Lösungsansatz steigt der Stromverbrauch durch die extrem hohe Taktung in Singlecore-Bausteinen nicht zu stark. Bei der Entwicklung der Mikrocontroller haben die Multicore-Architekturen mit ein paar Jahren Verzögerung Einzug gehalten. Hier gibt es die gleichen Forderungen: mehr Rechenleistung ohne signifikante Steigerung der Stromaufnahme.

Die Automobilindustrie als Vorreiter beim Einsatz der Multicore-Mikrocontroller

Bei der Entwicklung von Steuerungssystemen in der Automobiltechnik sind zwei ausschlaggebende Aspekte zu nennen:

  • Einhaltung gesetzlicher Forderungen bezüglich Verbrauch von Treibstoff bzw. Schadstoffausstoß
  • Forderung nach höherer Leistungsfähigkeit bezüglich der Kommunikations- und Entertainment-Systeme im Auto und ganz besonders beim autonomen Fahren

Die Bausteinhersteller von Mikrocontrollern bieten verschiedenste neue Multicore-Architekturen an:

  • Mehrere Rechenkerne vom gleichen CPU-Typ: homogene Multicore-µC
  • Verschiedene spezialisierte Rechenkerne: heterogene Multicore-µC
  • Mehrere gleichartige + spezialisierte Rechenkerne: heterogene Multicore-µC

Welche Arten von Cores werden benötigt, und welche Rechenleistung sollen diese bei einer festgelegten maximalen Stromaufnahme liefern können? Gibt es den benötigten Baustein innerhalb einer Bausteinfamilie mit unterschiedlichen Core-Implementierungen und verschiedenen Gehäusen (Port-Pin-Anzahl)? Diese entscheidenden Aspekte sind für künftig zu realisierende Projekte wichtig.

Bild 4: Heterogene Baustein-Architektur

Bild 5: Singlecore-/Multicore-Bausteinfamilienkonzept

Software-Migration von Singlecore nach Multicore

Im ersten Schritt sieht die Aufgabe der Software-Migration von Singlecore nach Multicore ganz einfach aus: Lassen wir einfach die vorhandene Software auf mehreren Cores parallel arbeiten.

Stehen bei zwei Cores 200% Rechenleistung zur Verfügung?

Ein Core entspricht der Rechenleistung x, dann haben wir bei einem Dual-Core also zweimal x. Effektiv ergibt sich aber nur eine Leistungssteigerung von ca. 50 %, oder in einigen Fällen sogar noch weniger. Woran liegt das?

Die Architektur von Singlecore-Software ist in der Regel nicht für die erfolgreiche Ausführung auf einem Multicore-System geeignet. Folgende Herausforderungen lassen sich hier ausmachen:

  • Singlecore-Software wird sequenziell ausgeführt; Multicore-Software benötigt für das gleiche Resultat Synchronisationspunkte und Kommunikation.
  • Eine Ressource (z.B. einen Datenspeicher, ein Peripheriemodul, etc.) kann zu einem Zeitpunkt immer nur von einem einzigen Core bzw. Busmaster angesprochen werden; mehrere Cores können nur mit zusätzlicher Koordination gleichzeitig auf dieselbe Ressource zugreifen. Inkonsistente Datenzustände von Datenblöcken müssen bei Multicore-Zugriffen vermieden werden.
  • Ein Rechenkern benutzt ein Bussystem, mehrere parallel arbeitende Rechenkerne können sich bei Buszugriffen am selben Bus in die Quere kommen. Damit können hohe Zugriffsverzögerungen auf Ressourcen hervorgerufen werden.

Die größte Herausforderung liegt darin, die Verwendung gemeinsamer Ressourcen in der Software zu koordinieren und zu überwachen. Eine Lösung hierfür ist das Ressourcen-Management für die Entwicklung von Multicore-Softwarekomponenten. Ein erfolgreicher Umstieg von Singlecore- auf Multicore-Systeme basiert auf der richtigen Auswahl und Anwendung des einzusetzenden Multicore-Mikrocontrollers.

Ab einer bestimmten geforderten Rechenkapazität (in MIPS) in Kombination mit einer maximal tolerierbaren Stromaufnahme wird eine Multicore-Architektur sinnvoll. Viele der Mikrocontroller-Applikationen werden mit einer Batterie versorgt. Somit steht die Stromaufnahme des Systems ganz oben auf der Anforderungsliste.

Bei Laptops/Notebooks ist dieser Trend bereits Realität: Der Einsatz von Multicore-CPUs soll für eine möglichst lange Betriebsdauer bei einer spezifischen Batteriekapazität sorgen und wird mit dem Ausdruck „lange Akkulaufzeit“ beworben. Die Software hat hier ihren Beitrag für einen möglichst geringen Stromverbrauch zu leisten: Aspekte wie das Multicore-Multithreading stehen hier im Vordergrund. Die Software-Architektur ist hier die Basis für eine optimale Softwareverarbeitung. Geschwindigkeit vs. Strombedarf, mit dem Ziel einer hohen System-Effizienz: „Möglichst viele MIPS pro Watt“.

Bild 6: Symmetric /Asymmetric Multitask Processing

Für verschiedene Applikationen werden Arithmetik-Unterstützung wie Floating-Point oder DSP-Support gefordert. Hier benötigt man unter Umständen einen speziellen Arithmetik-Coprozessor. Einige CPU-Architekturen verfügen über einen erweiterten Befehlssatz (Floating Point Arithmetik, digitale Signal-Prozessor-Befehle DSP), der für die Abarbeitung dieser speziellen Arithmetik zur Verfügung steht.

Anwendungsbeispiele hierfür sind komplexe Motorsteuerungen, komplexe Auswertung von Sensorik, Bild- und Ton-Verarbeitung. In den meisten Fällen können nur spezifische Core-Architekturen die Forderungen erfüllen. Als Mikrocontroller kommen hier fast ausschließlich heterogene Rechenkerne zum Einsatz, die die Anforderungen der spezifischen Arithmetik erfüllen.

Fazit

Die Erwartungen an die Rechenkapazität bei einem moderaten Stromverbrauch der Multicore-Mikrocontroller sind sehr hoch, können jedoch in der Realität nur erreicht werden, wenn eine stikt strukturierte Software-Architektur und ein klar definiertes Zeitprofil der Applikation zur Verfügung stehen.

Mehr lesen

Teil 2: Welche Safety- und Security-Anforderungen zählen bei der MCU-Wahl?

Teil 3: Sind die vorhandenen Ressourcen in der Peripherie ausreichend?

Weiterführende Informationen

MicroConsult Fachwissen zum Thema Multicore & Mikrocontroller

MicroConsult Training & Coaching zum Thema Multicore

Veröffentlicht von

Ingo Pohle

Ingo Pohle

Ingo Pohle ist Mitgründer und Geschäftsführer der MicroConsult GmbH und international anerkannter Spezialist für Embedded-Lösungen, mit einem reichen Erfahrungsschatz rund um den Einsatz von Embedded-Mikrocontrollern, Bussystemen und RTOS.