Anbieter zum Thema
Support für erweiterte Debug-, Test- und Simulationstools
Multicore-Debugger und spezielle Timing-Toolsuites lassen sich für die Analyse der Multicore-Programmausführung für die funktionale Verifikation und Fehleranalyse, Performance-Analyse und Leistungsverteilung zwischen den Cores sowie Intra- und Intercore-Timing-Analyse einsetzen.
Entsprechende Debugger ermöglichen einen synchronen Start/Stop der Cores über sogenannte Run Control Groups. Bei Erreichen eines einfachen/komplexen Break-Kriteriums können mehrere bzw. alle Cores inklusive Teile der On-Chip-Peripherie gleichzeitig gestoppt bzw. im Anschluss wieder gestartet werden.
Traceaufzeichnungen können in Multicore-Systemen beispielsweise zur Analyse des Programmablaufs/Scheduling in den Cores, der Intercore-Kommunikation und Synchronisation durch Interrupts dienen. Dazu werden bei einigen Multicore-Architekturen spezielle Debug-Devices und spezielle Trace-Interfaces bzw. zusätzlicher Debug-/Tracespeicher benötigt. Multicore-Systeme generieren mehr potentielle Tracedaten als Singlecore-Bausteine. Für die Pufferung der Tracedaten gibt es zwei Implementierungsansätze basierend auf größeren on-Chip Tracespeichern bzw. on-Chip High-Speed Streaming Interfaces (Gigabit-Kommunikation) mit Tracedaten-Zwischenspeicher off-Chip in der Debugger Hardware.
Unterschieden wird bei den Traceaufzeichnungen zwischen Code- und Data-Trace. Trotz des Einsatzes von Gigabit-Interfaces bzw. eines mehrere Megabyte großen Emulationsspeichers können typischerweise bei einer Code-Traceaufzeichnung nicht alle internen Core-Informationen aufgezeichnet werden. Bei einer Multicore-Implementierung lassen sich unter Umständen nur die Befehlsabläufe von zwei CPUs aufzeichnen. Für die System-Testbarkeit sollte daher die Software-Architektur Einschränkungen (z.B. limitierte Tracebandbreite) bei der Aufteilung der Threads/Tasks auf die Cores berücksichtigten.
Für eine effiziente Traceauswertung bieten die Debugger die Möglichkeit der Definition von komplexen Multicore-Trace-Trigger-Signalen. Damit lässt sich die auszuwertende Trace-Datenmenge reduzieren bzw. eingrenzen.
Traceaufzeichnungen können in der Folge auch für die Analyse der Software-Architektur verwendet werden. Beispielsweise lassen sich Code-Coverage-Analysen durchführen (Statement, Branch, Path, Condition Coverage) oder Performance-Analysen (Execution Times der einzelnen Cores, Lastverteilung der CPUs (Load Balance), Blockierzeiten der CPUs (Blocking Times, z.B. bei Shared Ressources)).
Moderne Debug- und Trace-Analysetools sind ferner imstande, schon während laufender Traceaufzeichnung eine Analyse der Tracedaten durchzuführen. Damit lässt sich erheblich Zeit bei der Systemanalyse einsparen.
Multicore-Systeme versprechen höhere Rechenleistung bei besserer Energie- und Kosteneffizienz. Geteilte Ressourcen und neue Aufgabenstellungen hinsichtlich Intercore-Kommunikation und -Synchronisation sowie Austausch von Daten ziehen Mehraufwand im Software-Design nach sich. Um diese Systeme gezielt und bestmöglich nutzen zu können, ist außerdem das Verwenden von chipspezifischen Features unumgänglich. Generische Ansätze über homogene Architekturen versprechen Portabilität und breitere Tool-Unterstützung; heterogene Implementierungen stehen für optimierte applikationsspezifische Lösungen. Sofern es diesbezüglich überhaupt ein Rennen gibt, ist es noch nicht entschieden.
* Ingo Pohle ist Mitgründer und Geschäftsführer der Mikroelektronik-Beratungsfirma MicroConsult
* Marcus Gößler ist Trainer und Coach im Bereich Embedded Sysstems und Experte für sicherheitsrelevante Anwendungen
(ID:43519496)