Serie Software Engineering für Embedded Systeme, Teil 2

Echtzeit auf Multicore-Systemen umsetzen

20.07.2010 | Autor / Redakteur: Dr. Thomas Kuhn* / Martina Hafner

*Dr. Thomas Kuhn ist Diplom-Informatiker und promovierte im Bereich der modellbasierten Entwicklung von drahtlosen Kommunikationssystemen. Seit 2008 ist er am Fraunhofer IESE tätig. Er ist verantwortlich für die modellgetriebene Softwareentwicklung in der Domäne der eingebetteten Systeme, und arbeitet insbesondere im Bereich der Sprachtechnologien und Mehrkernprozessoren.
*Dr. Thomas Kuhn ist Diplom-Informatiker und promovierte im Bereich der modellbasierten Entwicklung von drahtlosen Kommunikationssystemen. Seit 2008 ist er am Fraunhofer IESE tätig. Er ist verantwortlich für die modellgetriebene Softwareentwicklung in der Domäne der eingebetteten Systeme, und arbeitet insbesondere im Bereich der Sprachtechnologien und Mehrkernprozessoren.

Um Echtzeit-Software auf Multicore-Systemen umzusetzen müssen u.a. Algorithmen parallelisiert und ein geeignetes Kommunikationsnetzwerk ausgewählt werden, alles unter Berücksichtigung der Echtzeitanforderungen. Einen Überblick über aktuelle Ansätze gibt dieser Beitrag.

Trends welche sich bereits in der Domäne der Hochleistungsrechner und Informationssysteme gezeigt haben werden nun auch bei eingebetteten Systemen sichtbar: Der Kostendruck zwingt Entwickler Funktionen auf wenigen leistungsfähigen Geräten zu konsolidieren.

Gleichzeitig wandelt sich das Konzept moderner Prozessoren, da mit herkömmlichen Mitteln, der Steigerung von Taktfrequenzen, aufgrund des exponentiell ansteigenden Energieverbrauchs und ansteigender Leckströme keine signifikanten Leistungssteigerungen mehr möglich sind.

Multicore-Prozessoren bieten die notwendige hohe Rechenleistung bei geringerem Energieverbrauch, erfordern jedoch neue Programmierkonzepte. Aus diesem Grund ist das gleichzeitige konsolidieren von Funktionen und parallelisieren von Algorithmen unter Berücksichtigung von Echtzeiteigenschaften eine Herausforderung, der sich Entwickler von eingebetteten Systemen in den nächsten Jahren stellen müssen.

Parallelisieren von Algorithmen mit Echtzeitanforderungen

Heute verwendet man spezielle Schedulingverfahren, die für den Echtzeitbetrieb vorgesehen sind, um mehrere Algorithmen auf einem Prozessor auszuführen. Beispiele bekannter Verfahren sind hierbei Earliest Deadline First, oder das Rate Monotonic Scheduling.

Sollen Algorithmen mit Echtzeitanforderungen auf Multicore-Prozessoren ausgeführt werden, ist zusätzlich eine Parallelisierung, sowie eine räumliche Verteilung auf die unterschiedlichen Rechenkerne vorzunehmen. Hierbei unterscheidet man die folgenden Fälle:

  • Unabhängige Algorithmen oder unabhängige Teile eines Algorithmus werden von mehreren Kernen parallel ausgeführt, um Parallelität in Algorithmen auszunutzen. Berechnete Ergebnisse werden bei Bedarf vereinigt; dies erfordert eine Synchronisation.
  • Unterschiedliche Rechenkerne werden genutzt um Funktionen mit harten Echtzeitanforderungen und planbaren Aufrufmustern von solchen mit weichen Echtzeitanforderungen zu trennen. Dies ermöglicht das Konsolidieren vormals unabhängiger Funktionen auf einem Mehrkernprozessor.
  • Sporadisch auftretende Ereignisse, zum Beispiel Interrupts werden von dedizierten Kernen behandelt. Bei Manycore-Prozessoren werden bestimmte Kerne nur zum Abwickeln von Ein/Ausgabeaufgaben eingesetzt um eine maximale Planbarkeit bei gleichzeitig hoher Effizienz zu gewährleisten.

Bild 1: Pipelining mit mehreren Rechenkernen erhöht den Durchsatz von Algorithmen spürbar
Bild 1: Pipelining mit mehreren Rechenkernen erhöht den Durchsatz von Algorithmen spürbar

Neben dem parallelisieren unabhängiger Ausführungsstränge sind noch andere Strategien zur Verteilung denkbar: Beispielsweise kann eine Funktion in mehreren Schritten realisiert werden, welche zeitlich versetzt von unterschiedlichen Kernen ausgeführt werden. Hierbei rechnet jeder Kern immer wieder den gleichen Teil einer Funktion und gibt danach sein Ergebnis an den nächsten Kern weiter (siehe Bild 1). Dieses Pipelining erhöht den Durchsatz von Algorithmen signifikant.

Bei vielen Mehrkernprozessoren sind die zur Verfügung stehenden Kerne nicht gleichwertig. Manche Kerne sind für generelle Aufgaben nutzbar, andere optimiert für Signalverarbeitungsaufgaben. Dies muss bei der Verteilung von Funktionen auf unterschiedliche Rechenkerne genauso berücksichtigt werden wie Strategien zum Sparen von Energie.

In der Regel ist es möglich, Rechenkerne unabhängig voneinander in Energiesparmodi zu versetzen, und/oder die Taktfrequenz einzelner Kerne anzupassen. Werden diese Möglichkeiten konsequent genutzt bieten Mehrkernprozessoren eine hohe Flexibilität, Planungssicherheit für Echtzeitalgorithmen und Performanz bei gleichzeitig deutlich sinkendem Energieverbrauch.

Das passende Kommunikationsnetzwerk

Bei komplexen Mehrkernprozessoren spielt die Kommunikation mit dem Speicher oder zwischen den Rechenkernen ebenfalls eine gewichtige Rolle. Zu diesem Zweck bieten Mehrkernprozessoren unterschiedlichste Kommunikationsnetzwerke an, die effizient genutzt, und daher bei der Parallelisierung berücksichtigt werden müssen.

Kommunikationsbusse sind das einfachste Netz. Sie verbinden Rechenkerne, Speicher und sonstige Geräte. Alle Busteilnehmer können mit gleichbleibenden Kosten mit allen anderen an dem Bus angeschlossenen Teilnehmern kommunizieren.

Jedoch kann ein Bus immer nur von einem Teilnehmer gleichzeitig genutzt werden. Busse skalieren daher nicht für Prozessoren mit sehr vielen Teilnehmern (=Rechenkernen) – da ein Teilnehmer den Bus für alle anderen Teilnehmer blockieren kann sind Kommunikationsbusse ebenfalls nicht geeignet um Funktionen vollständig und sicher voneinander zu trennen. Zum konsolidieren von Echtzeitfunktionen sind diese daher nur bedingt geeignet.

NEWS-Netzwerke (Nort, East, West, South) verbinden benachbarte Prozessorkerne in einem 2D-Gitter. Jeder dieser Kommunikationswege kann unabhängig von anderen genutzt werden; diese Netze skalieren daher auch für Prozessoren mit vielen Kernen.

Inhalt des Artikels:

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 352106 / Software-Entwurf & Echtzeit-Design)