Trace-Werkzeuge kehren des Innerste des Prozessors nach außen

Prozessoren umkrempeln

28. März 2007, 10:00 Uhr | Neil Puthuff
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 1

Prozessoren umkrempeln

Die Kosten für die Trace-Implementierung auf einem Hochleistungsprozessor werden im Wesentlichen durch die Bandbreite bestimmt. Selbst mit einem hocheffizienten Trace-Kompressionsverfahren macht der Export von Trace-Daten auf einem Multi-Gigahertz-Prozessor eine hohe Bandbreite erforderlich. Dieser Anforderung wurde man bislang durch die Verwendung vieler Pins (20 und mehr) für den Trace-Port gerecht. Doch mit zunehmender Taktrate der Prozessoren wurde dieser Weg undurchführbar.

Der explosionsartigen Vermehrung von Pins begegnet man inzwischen auf die gleiche Weise wie bei anderen Hochgeschwindigkeits-Schnittstellen: durch Serialisierung. Der Einsatz von seriellen Multi-Gigabit-Bussen öffnet einen sehr breiten Kanal für die On-Chip-Daten. Dieser Wechsel erleichtert außerdem das Tracen mehrerer Quellen, beispielsweise Multicore-Prozessoren, On-Chip-Logikanalyse, DMA Engines etc. Volle Sichtbarkeit auf Systemebene lässt sich durch eine einzige Debug-Verbindung erreichen.

Hersteller von hochentwickelten Prozessoren für Standard-Computerboards haben den Vorteil derartiger Echtzeit-Trace-Ports für ihre kommenden Designs erkannt: Software-Fehler, die sonst ein Entwicklungsprojekt wochenlang zum Stillstand bringen könnten, lassen sich mit den jüngsten Trace-Debugging-Tools rasch auffinden. Das ist ein großer Vorteil in einem äußerst hart umkämpften Markt. Bald werden in neuen Hochleistungsprozessoren Trace-Ports zu finden sein.

passend zum Thema

Was ist Echtzeit-Trace?
Echtzeit-Trace ist eine zyklusgenaue Darstellung der Software-Ausführung eines Prozessors. Die Daten werden in Echtzeit während des Programmlaufs gesammelt und enthalten Informationen über die ausgeführten Befehle. Zusätzlich können auch Adress- und Dateninformationen über Speicherzugriffe enthalten sein.
In den Tagen früherer Prozessoren wurden diese Informationen normalerweise durch einen In-Circuit Emulator (ICE) gesammelt, ein Instrument, das die CPU durch ein funktionsgleiches Gerät ersetzte, das zusätzliche Logik zur Steuerung der Ausführung, zum Lesen von Registern und Speichern sowie zur Untersuchung von Bus-Transfers enthielt.

In dem Maße, in dem Prozessoren schneller und höher integriert wurden, wurde die Ausführung des ICE technisch immer schwieriger. Das führte zur Ablösung des In-Circuit Emulators durch einfachere Verfahren zur Ablaufsteuerung, die JTAG zur Prozessor-Steuerung sowie einen dedizierten Trace-Port für die Ablaufdaten verwenden.
Die Trace-Daten enthalten generell die Adresse oder den Adressbereich des gerade ausgeführten Befehls, den Status der CPU-Aktivität während des gegenwärtigen Zyklus (zum Beispiel Fetch, Branch, Interrupt etc.) sowie optional die Adresse und den Datenwert jedes Speichers, auf den zugegriffen wird. Mit diesen Informationen und einer Kopie des Ausführungsprogramms kann der Trace-Debugger eine detaillierte Historie der CPU-Aktivitäten rekonstruieren und diese zum ursprünglichen Quellcode in Beziehung setzen.

modernetracedebuggingtools_02.jpg
Bild 3. Moderne Trace-Debugging-Tools: PathAnalyzer, FunctionFlow und TraceList rekonstruieren den Programmablauf und machen Fehler rückverfolgbar.

Neil Puthuff
ist Director of Hardware Engineering bei Green Hills Software. Er hat mehr als 20 Jahre Erfahrung in der Entwicklung von Hardware und Software für Embedded-Systeme. Außerdem hält er mehrere US-Patente.
neil@ghs.com

Eine Methode zur Erzeugung trace-ähnlicher Information auf Systemen ohne RTT-Ports wurde durch mehrere Anbieter von Echtzeit-Betriebssystemen (RTOS) implementiert. Spezielle Funktionsaufrufe oder instrumentierte Kernel-Varianten bieten eine High-Level-Ansicht von Betriebssystem-Ereignissen über die Zeit. Der Entwickler kann sehen, welche Threads laufen und wann Betriebssystem-Ereignisse stattfinden (Bild 2), doch es fehlen die Möglichkeiten des Source-Level-Debuggings oder der Timing-Analyse eines echten Echtzeit-Trace-Entwicklungssystems.

Für eine detailliertere Echtzeit- Trace-Ansicht auf Quellcode-Ebene für ein Programm, das auf Standard-Computerboards läuft, muss das Echtzeit-Trace-Tool tiefer in die Anwendung hineinschauen. Die neue Technologie „TraceEdge“ von Green Hills (www.ghs.com) setzt dazu eine instrumentierte Lösung ein, die keine Recompilierung des Applikationscodes notwendig macht. Es werden kurze Befehlsfolgen an bestimmten Stellen der Anwendung eingefügt. Diese Befehle übertragen Daten in Echtzeit auf einen freien PMC- oder PCI-Slot. Aus diesen Daten wird schließlich der Programmablauf rekonstruiert, so dass eine vollständige Trace-Darstellung entsteht. Ein anderer Ansatz exportiert die Trace-Daten in einen speziell zugeordneten Puffer im Hauptspeicher des Zielsystems, der später durch eine standardmäßige Debug-Verbindung ausgelesen wird.

bild2_942ffd_03.jpg
Bild 2. Der EventAnalyzer von Green Hills zeigt wichtige Betriebssystem-Ereignisse, doch es fehlen die Möglichkeiten des Source-Level-Debuggings oder der Timinganalyse eines echten Echtzeit-Trace-Entwicklungssystems.

  1. Prozessoren umkrempeln
  2. Prozessoren umkrempeln
  3. Trace-Ports und Prozessoren
  4. Open Source als Abhilfe?

Jetzt kostenfreie Newsletter bestellen!