-
Die Erfindung betrifft elektronische Systeme, insbesondere Techniken zur Ablaufverfolgung (Tracing) oder dem Debugging von elektronischen Systemen.
-
Softwareentwicklung für programmierbare Systeme, wie z.B. SoC (System-on-a-Chip)-Systeme, ist eine der faszinierendsten Herausforderungen der modernen Geräteentwicklung. Es ist bekannt, dass die Funktionalität, Leistung, richtige Funktionsweise, Benutzerfreundlichkeit und der Markterfolg eines Geräts größtenteils von der Software bestimmt werden, die dazu entwickelt wurde, auf der Gerätehardware des programmierbaren Systems zu laufen. Daher wird ein programmierbares System, das den Softwareentwickler unterstützt, indem es ihm Lösungen zur Ablaufverfolgung (d.h. Tracing)/zum Debugging bietet, als System transparenter für den Softwareentwickler und verringert somit die Mühe und Zeit, die aufgewandt werden, um die Software mit der Hardwareplattform abzustimmen. Weiter können Hardwarefehler der Hardwareplattform die Zeit zur Markteinführung verzögern und sollten so früh wie möglich erkennbar sein.
-
Eine der Erfindung zugrundeliegende Aufgabenstellung kann daher darin gesehen werden, leistungsfähige Systeme und Verfahren zum Tracing/Debugging zur Verfügung zu stellen, die insbesondere den Hardware- und/oder Softwareentwickler effizient unterstützen.
-
Die der Erfindung zugrundeliegende Aufgabe wird durch die Merkmale der unabhängigen Ansprüche gelöst. Weiterbildungen sind Gegenstand der Unteransprüche.
-
Aspekte der Offenbarung werden als Beispiele in der folgenden ausführlichen Beschreibung von Ausführungsformen offensichtlicher, wenn sie in Verbindung mit den angefügten Figuren gelesen werden, wobei:
-
1 ein schematisches Blockdiagramm eines Systems ist, das eine Funktionseinheit und Ressourcen zur Ablaufverfolgung gemäß der Offenbarung umfasst;
-
2 ein schematisches Blockdiagramm einer beispielhaften Architektur und Topologie zur Ablaufverfolgung ist;
-
3 ein schematisches Blockdiagramm einer beispielhaften Architektur und Topologie zur Ablaufverfolgung ist;
-
4 ein schematisches Blockdiagramm eines beispielhaften Details der in 3 dargestellten Architektur und Topologie ist;
-
5 ein schematisches Blockdiagramm eines Monitors ist, der mit einem Netzwerkknoten gekoppelt ist;
-
6 eine Darstellung eines Zustandsdiagramms eines Monitors ist;
-
7 ein schematisches Blockdiagramm eines Netzwerkrings ist, das eine Richtlinie zur Knotenarbitration gemäß der Offenbarung veranschaulicht;
-
8 ein schematisches Blockdiagramm von Knoten eines Netzwerkrings ist, das eine Gewichtungsskalierung der Knoten veranschaulicht;
-
9 eine schematische Darstellung eines beispielhaften Zählers zur Rückverfolgung der Zeit des Netzwerkrings ist;
-
10 ein schematisches Blockdiagramm einer beispielhaften Architektur und Topologie von Ressourcen zur Ablaufverfolgung gemäß der Offenbarung ist; und
-
11 ein Verfahren zur Handhabung der Informationen zur Ablaufverfolgung gemäß der Offenbarung veranschaulicht.
-
In der folgenden Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil hiervon bilden, und in denen durch Veranschaulichung Ausführungsformen, in denen die Erfindung ausgeführt werden kann, gezeigt werden. Es ist selbstverständlich, dass andere Ausführungsformen verwendet werden können und strukturelle oder logische Änderungen vorgenommen werden können, ohne vom Umfang der vorliegenden Offenbarung abzuweichen. Die folgende Beschreibung ist deshalb in keiner Weise einschränkend zu verstehen.
-
Es ist selbstverständlich, dass die Merkmale der verschiedenen beispielhaften hierin beschriebenen Ausführungsformen miteinander kombiniert werden können, außer wenn spezifisch anderweitig angegeben. Weiter bezeichnen gleiche Bezugsnummern einander entsprechende oder gleiche Teile.
-
Wie in dieser Beschreibung verwendet, sollen die Begriffe “gekoppelt” und/oder “verbunden” nicht allgemein bedeuten, dass die Elemente direkt miteinander gekoppelt oder verbunden sein müssen. Zwischenelemente können zwischen den “gekoppelten” oder “verbundenen” Elementen bereitgestellt sein. Auch wenn sie jedoch nicht auf diese Bedeutung beschränkt sind, können die Begriffe “gekoppelt” und/oder “verbunden” auch so verstanden werden, dass optional eine Implementierung offenbart wird, bei der die Elemente direkt miteinander gekoppelt oder verbunden sind, ohne dass Zwischenelemente zwischen den “gekoppelten” oder “verbundenen” Elementen bereitgestellt sind.
-
Es ist selbstverständlich, dass Ausführungsformen in einzelnen Schaltungen, teilweise integrierten Schaltungen oder vollständig integrierten Schaltungen implementiert sein können. Weiter können erfindungsgemäße Ausführungsformen auf einem einzigen Halbleiterchip oder auf mehreren Halbleiterchips, die miteinander verbunden sind, implementiert sein.
-
Die Offenbarung kann eine Funktionseinheit mit einer Vielzahl programmierbarer und/oder nicht programmierbarer Komponenten beinhalten. Die Komponenten können eine oder mehrere der folgenden Komponenten umfassen: einen programmierbaren Prozessor, einen (z.B. programmierbaren oder nicht programmierbaren) Speicher, einen (z.B. programmierbaren oder nicht programmierbaren) dedizierten Hardwareblock, einen (z.B. programmierbaren oder nicht programmierbaren) Hardwarebeschleuniger, eine (z.B. programmierbare oder nicht programmierbare) Verbindung, über die mehrere programmierbare Prozessoren, Speicher, dedizierte Hardwareblöcke, Hardwarebeschleuniger oder andere Komponenten interagieren können etc.
-
Komponenten der Funktionseinheit können auf einem einzigen Chip integriert sein. In diesem Fall kann das System, das die Funktionseinheit umfasst, ein SoC bzw. Ein-Chip-System bilden. SoCs können eine oder mehrere in den Cache-Speicher aufgenommene Zentraleinheiten (Central Processing Units, CPUs) und eine komplexe Verbindung, z.B. eine Pipeline-Verbindung, enthalten. Die Verbindung kann einen oder mehrere Master an einen oder mehrere Slaves vermitteln (arbitrieren).
-
Komponenten der Funktionseinheit können weiter über mehrere Halbleiterchips verteilt sein, die miteinander über eine Zwischen-Chip-Verbindung verbunden sind. Die mehreren Chips können in einem gemeinsamen Gehäuse eines einzigen Geräts untergebracht sein, z.B. auf einer oder mehreren in dem Gerät enthaltenen Baugruppen montiert. Alternativ können die mehreren Chips über mehrere getrennte und/oder Remote-Geräte verteilt sein, wobei die mehreren getrennten/Remote-Geräte miteinander über ein Netzwerk verbunden sind, z.B. Internet, ein drahtloses Zellularnetz, etc.
-
Die Funktionseinheit kann implementiert sein, um ein Networkon-a-Chip (NoC) zu bilden. Ein NoC ist eine integrierte Schaltung, die eine Netzwerkarchitektur auf einen einzelnen Chip anwendet. Bei einem NoC werden Daten zwischen logischen Knoten unter Verwendung von Paketen weitergegeben. Die Komponenten der Funktionseinheit können durch Knoten des Netzwerkes und/oder durch die Netzwerkverbindung zwischen den Knoten des NoC implementiert sein.
-
Ressourcen zur Ablaufverfolgung (d.h. Tracing-Ressourcen) sind für Prozesse zur Ablaufverfolgung, die von der Funktionseinheit ausgeführt werden, vorgesehen. Die Ressourcen zur Ablaufverfolgung sind beteiligt, um die Funktionseinheit in ihrer Zielumgebung zu beobachten und sind konfiguriert, die Aktivität der Funktionseinheit während des Betriebs, z.B. während der Ausführung eines Softwareprogramms/von Softwareprogrammen, zurückzuverfolgen.
-
Die Ressourcen zur Ablaufverfolgung können zum Debugging vorgesehen sein. Ressourcen zur Ablaufverfolgung (d.h. Tracing-Ressourcen), die zum Debugging konfiguriert sind, werden in der gesamten Offenbarung als Debugging-Ressourcen bezeichnet.
-
Die Ressourcen zur Ablaufverfolgung können nicht nur zum Zurückverfolgen oder Erfassen des Verhaltens der Funktionseinheit während des Betriebs verwendet werden, sondern können zusätzlich konfiguriert sein, um mit der Funktionseinheit zu interagieren. In diesem Fall sind die Ressourcen zur Ablaufverfolgung (ebenfalls) in der Lage, als eine Steuerungsinfrastruktur des Systems zu dienen. Weiter können zu diesem Fall die Ressourcen zur Ablaufverfolgung konfiguriert sein, die Ausführung des Softwareprogrammflusses auf die Funktionseinheit zu steuern.
-
Die Ressourcen zur Ablaufverfolgung können ein Netzwerk umfassen, das eine paketvermittelte Kommunikation verwendet. Die Verwendung einer paketvermittelten Kommunikation kann eine hohe Latenzzeittoleranz sowie hohe Skalierbarkeit vorsehen und kann ein hohes Maß an Gleichzeitigkeit während der Zurückverfolgung der Aktivität der Funktionseinheit während des Betriebes ermöglichen. Die Ressourcen zur Ablaufverfolgung können eine NoC-basierte Plattform zur Ablaufverfolgung (Debugging) vorsehen, die beispielsweise zur SoC-Ablaufverfolgung (beispielsweise Debugging) verwendet werden kann.
-
Die Ressourcen zur Ablaufverfolgung können von einer Architektur implementiert sein, die der Architektur der Funktionseinheit des Systems hinzugefügt und unabhängig davon ist. Somit können die Ressourcen zur Ablaufverfolgung durch eine zusätzliche, dedizierte Verbindungsinfrastruktur “orthogonal” zu der Haupt-(Funktions-)Verbindungsstruktur des Systems, auf dem die Funktionseinheit basiert, implementiert werden. Dies kann dazu führen, dass der gesamte Prozess zur Ablaufverfolgung für die beobachtete Funktionseinheit unsichtbar wird. In diesem und anderen Fällen können die Ressourcen zur Ablaufverfolgung für den Programmfluss vollständig eingriffsfrei sein.
-
1 veranschaulicht ein beispielhaftes Blockdiagramm eines Systems 100 gemäß der Offenbarung. System 100 kann eine Funktionsarchitektur 10, die oberhalb der gestrichelten Linie 101 dargestellt ist, und eine Ablaufverfolgungs-, Debuggingoder Steuerungsarchitektur 20, die unterhalb der gestrichelten Linie 101 dargestellt ist, umfassen.
-
Im Folgenden wird, ohne Beschränkung der Allgemeinheit, die Ablaufverfolgungs-, Debugging- oder Steuerungsarchitektur 20 als Ablaufverfolgungsarchitektur 20 bezeichnet. Es ist zu beachten, dass die Ablaufverfolgungsarchitektur 20 in der gesamten Beschreibung speziell zum Debugging verwendet werden kann, d.h. eine Debugging-Architektur 20 bilden könnte. Weiter kann die Ablaufverfolgungsarchitektur 20 zusätzlich zum Steuern des Betriebs der Funktionsarchitektur 10 verwendet werden. Das Steuern des Betriebs der Funktionsarchitektur 10 kann anderen Zwecken dienen als der Softwareentwicklung/dem Debugging von Software.
-
Die Funktionsarchitektur 10 kann Module oder Komponenten 1, 2, 3 umfassen. Zumindest eine dieser Komponenten 1, 2, 3 ist eine programmierbare Komponente. Komponenten 1, 2, 3 können z.B. einen programmierbaren Prozessor, einen dedizierten Hardwareblock, eine (programmierbare) Verbindung oder einen (programmierbaren) Speicher umfassen. Komponenten 1, 2, 3 können über Datenverbindungen 4, 5 miteinander verbunden sein.
-
Beispielhaft kann Komponente 1 z.B. ein Prozessor oder Prozessorkern sein, der durch Software programmiert werden kann und betriebsbereit ist, Prozesse in der Funktionsarchitektur 10 auszuführen. Komponente 2 kann z.B. eine Verbindung sein, die optional von einer Verbindungssoftware gesteuert wird (z.B. eine Netzwerkverbindung, die von Protokollinformationen gesteuert wird, eine Koppelfeldstruktur (Crossbar-Struktur), ein Bus oder ein dedizierter Hardwarepfad, der von programmierbaren Parametern gesteuert wird). Komponente 3 kann z.B. ein programmierbarer Speicher, eine programmierbare Schnittstelle, die von einer Schnittstellensoftware gesteuert wird, ein anderer programmierbarer Prozessor, etc. sein. Die Funktionsarchitektur 10 oder ein Teil davon, der eine Vielzahl an Komponenten 1, 2, 3 umfasst, wird ebenfalls als Funktionseinheit in der Offenbarung bezeichnet.
-
Die Funktionsarchitektur 10 kann als eine integrierte Schaltung auf einem einzelnen Chip, unter Bildung eines SoC, implementiert sein.
-
In der Funktionsarchitektur 10 enthaltene Komponenten 1, 2, 3 können über eine Vielzahl an Halbleiterchips verteilt sein. In diesem Fall umfasst zumindest eine der Datenverbindungen 4, 5 Anschlussstifte (Pins) eines Halbleiterchips.
-
Die Funktionsarchitektur 10 kann auf einem Netzwerk basieren. In diesem Fall können Komponenten 1, 2, 3 je einen logischen Knoten des Netzwerks bereitstellen, und Pakete beinhalten eine Kopfzeile, die sich an Komponenten 1, 2, 3 richtet, die durch Datenverbindungen 4, 5 durch das Netzwerk transferiert werden.
-
Die Ablaufverfolgungsarchitektur 20 kann Monitore 21, 22, 23, eine Netzwerkstruktur 24, die bidirektional mit den Monitoren 21, 22, 23 gekoppelt ist, und eine Ablaufverfolgungs-, Debugging- oder Steuereinheit 25 umfassen, die bidirektional mit der Netzwerkstruktur 24 gekoppelt ist. Die bidirektionalen Datenverbindungen, die Monitore 21, 22, 23 und die Ablaufverfolgungs-, Debugging- oder Steuereinheit 25 mit der Netzwerkstruktur 24 koppeln, werden durch die Bezugszeichen 21a, 22a, 23a bzw. 25a gekennzeichnet. Datenpakete mit einem Header, um die Monitore 21, 22, 23 oder die Ablaufverfolgungs-, Debugging- oder Steuereinheit 25 zu addressieren, werden über die Datenverbindungen 21a, 22a, 23a bzw. 25a und über die Netzwerkstruktur 24 übertragen.
-
Im Folgenden wird, ohne Beschränkung der Allgemeinheit, die Ablaufverfolgungs-, Debugging- oder Steuereinheit 25 beispielshaft als eine Ablaufverfolgungseinheit 25 bezeichnet. Es ist jedoch zu beachten, dass die Ablaufverfolgungseinheit 25 in der gesamten Beschreibung speziell ein Debugger sein kann und/oder etwas Steuerungsfunktionalität zum Steuern des Betriebs der Funktionsarchitektur 10 umfassen kann. Weiter kann die Ablaufverfolgungseinheit 25 eine Vielzahl getrennter und/oder Remote-Einheiten umfassen, d.h. die Funktionalität der Ablaufverfolgungseinheit 25, wie z.B. das Sammeln von Ablaufverfolgungsinformationen, das Debuggen von Befehlen oder den Betrieb von Ablaufverfolgungsarchitektur 20 oder Funktionsarchitektur 10 zu steuern, kann über eine Vielzahl von Funktionsblöcken innerhalb eines Chips, über eine Vielzahl von Chips und/oder über eine Vielzahl von Remote-Geräten verteilt sein.
-
Die Ablaufverfolgungsarchitektur 20 kann als ein Netzwerk implementiert sein, d.h. durch paketvermittelte Kommunikationsmittel, oder die Ablaufverfolgungsarchitektur 20 kann auf einem einzelnen Chip implementiert sein, wobei sie ein NoC bildet. In diesem Fall werden alle Monitore 21, 22, 23, die Netzwerkstruktur 24 und die Ablaufverfolgungseinheit 25 durch eine integrierte Schaltung auf einem Halbleiterchip gebildet. Dieser Halbleiterchip kann identisch sein mit dem Halbleiterchip, auf dem die Funktionsarchitektur 10 eingerichtet ist (die, optional, ebenfalls als ein Netzwerk implementiert sein könnte).
-
Die Monitore 21, 22, 23, die Netzwerkstruktur 24 und die Ablaufverfolgungseinheit 25 können über eine Vielzahl von Halbleiterchips verteilt sein. In diesem Fall sind zumindest ein Monitor 21 und ein erster Teil der Netzwerkstruktur 24 auf einem ersten Halbleiterchip implementiert, wobei zumindest ein zweiter Monitor (z.B. Monitor 22 oder 23) und ein zweiter Teil der Netzwerkstruktur 24 auf einem zweiten Halbleiterchip implementiert sind. Die Netzwerkstruktur 24 kann Anschlussstifte (Pins) oder andere Chip-Zwischenverbindungen zur Übertragung von Paketen umfassen.
-
Die Netzwerkstruktur 24 kann konfiguriert sein, um eine Ringtopologie aufzuweisen, z.B. einen oder mehrere Netzwerkringe umfassend, in denen eine Vielzahl an Knoten miteinander in einer Konfiguration eines geschlossenen Kreises miteinander verbunden sind. Alternativ kann die Netzwerkstruktur 24 konfiguriert sein, um andere Topologien aufzuweisen, wie z.B. eine sternförmige Topologie, eine Bus-Topologie, etc.
-
Die Monitore 21, 22, 23 sind mit Komponenten 1, 2, 3 durch Beobachtungskanäle 31, 32 bzw. 33 gekoppelt. Beobachtungskanäle 31, 32, 33 ermöglichen es den Monitoren 21, 22, 23, Ablaufverfolgungs-(d.h. Tracing-) oder Debugginginformationen von den Komponenten 1, 2 bzw. 3 zu erhalten. Das heißt, jeder Monitor 21, 22, 23 kann die Aktivität einer Komponente 1, 2, 3 während des Betriebs beobachten, die Ablaufverfolgungsoder Debugginginformationen, die die Aktivität der unter Beobachtung stehenden Komponente 1, 2, 3 anzeigen, in ein oder mehrere Pakete verkapseln und kann dieses Paket oder diese Pakete an die Ablaufverfolgungseinheit 25 schicken. Es ist zu beachten, dass die Monitore 21, 22, 23 programmierbare Komponenten 1, 2, 3 zurückverfolgen (d.h. „tracen“) können, und ebenfalls nicht programmierbare Komponenten 1, 2, 3, wie z.B. Speicher, dedizierte Hardwareblöcke, Hardwarebeschleuniger, Verbindungen, etc., zurückverfolgen („tracen“) können.
-
Wie nachstehend ausführlicher erläutert wird, können Komponenten 1, 2, 3 auf Prozessorbefehlsebene beobachtet werden. Das heißt, dass Befehle und Adressen über die Beobachtungskanäle 31, 32, 33 erhalten werden. Die Komponenten 1, 2, 3 können auf Transaktionsebene beobachtet werden. Das heißt, dass Befehle, Adressen und Daten über die Beobachtungskanäle 31, 32, 33 erhalten werden. Transaktionen sind das Ergebnis von Prozessorbefehlen, die eine Aktivität auf programmierbaren Prozessoren (z.B. Komponenten 1 und/oder 3) und auf der Verbindung (z.B. Komponente 2) hervorrufen.
-
Es ist zu beachten, dass das System 100 ein Softwaredebugging (was z.B. auf Befehlsebene stattfinden kann), ein Hardwaredebugging (was z.B. auf Befehlsebene stattfinden kann und auf Ebene von Taktzyklen durchgeführt werden kann) und ein Debugging auf Systemebene (d.h. von mehreren programmierbaren oder nicht programmierbaren Komponenten 1, 2, 3) ermöglichen kann, das z.B. auf Transaktionsebene stattfinden kann und auf Transaktionszyklen anstatt auf Taktzyklen durchgeführt werden kann.
-
Auf Transaktionsebene können Eigenschaften von Transaktionen wie z.B. Adressen und Befehle und Daten durch die Monitore 21, 22, 23 in Pakete verpackt sein und über die Netzwerkstruktur 24 an die Ablaufverfolgungseinheit 25, z.B. einen Debugger, übertragen werden.
-
Beobachtungskanäle 31, 32, 33 können durch Steuerungskanäle (nicht dargestellt) ergänzt werden, die eine Verbindung von den Monitoren 21, 22, 23 zu Komponenten 1, 2 bzw. 3 herstellen, d.h. indem bidirektionale Kanäle zwischen den vorstehend genannten Entitäten hergestellt werden. In diesem Fall kann die Ablaufverfolgungsarchitektur 20 erweitert werden, um nicht nur zu beobachten, sondern auch mit der Funktionsarchitektur 10, falls erforderlich, zu interagieren. In diesem Fall kann die Ablaufverfolgungsarchitektur 20 ebenfalls als eine Steuerungsinfrastruktur dienen, um den programmgesteuerten Betrieb der Funktionsarchitektur 10 zu beeinflussen. Beispielhaft kann die Ablaufverfolgungsarchitektur 20 Steuerungsinformationen an die unterschiedlichen Komponenten 1, 2, 3 weitergeben, die durch Steuerungskanäle mit Monitoren 21, 22, 23 gekoppelt sind (die in diesem Fall ebenfalls als Monitor/Steuereinheiten bezeichnet werden können). So kann die Ablaufverfolgungsarchitektur 20 in der gesamten Beschreibung ebenfalls zur Systemabstimmung verwendet werden. Es ist zu beachten, dass die Ablaufverfolgungsarchitektur 10 unabhängig sein kann von den Informationen, die an sie übertragen werden, d.h. Ablaufverfolgungs-/Debugginginformationen von der Funktionsarchitektur 10 an die Ablaufverfolgungseinheit 25 und/oder Steuerungsinformationen von der Ablaufverfolgungseinheit 25 der Ablaufverfolgungsarchitektur 20 an die Funktionsarchitektur 10.
-
Viele verschiedene Elektronikgeräte und -applikationen können die Struktur 100 implementieren. Beispielsweise sind Geräte und Applikationen, die die Struktur 100 implementieren können, z.B. Elektronikgeräte, wie z.B. Mobilgeräte, Drahtlosgeräte, Steuereinheiten, etc. Beispielhaft können Mobiltelefone, Smartphones, Tablet-PCs, Motorsteuerungen für Kraftfahrzeugapplikationen, etc. mit der Struktur 100 gemäß der Offenbarung ausgerüstet sein, wobei es die Funktionsarchitektur 10 ist, die Schaltungen umfasst, um die Gerätefunktionen zu implementieren.
-
Im Folgenden werden eine Vielzahl an Ausführungsformen und Implementierungen der Ablaufverfolgungsarchitektur 20 beschrieben. Die Details der verschiedenen Ausführungsformen, die nachstehend beschrieben sind, können genauso auf die Struktur 100 von 1 angewandt werden. Andersherum können Konzepte und Implementierungen der Struktur 100 wie vorstehend beschrieben genauso auf die nachstehenden Ausführungsformen angewandt werden, außer wenn das Gegenteil ausdrücklich angegeben oder es technisch verboten ist.
-
2 veranschaulicht eine beispielhafte Architektur und Topologie einer Ablaufverfolgungsarchitektur 200, die eine Netzwerkstruktur 24 mit einem Netzwerkring 240 umfassen kann.
-
Der Netzwerkring 240 kann Knoten 240a, 240b, 240c, 240d, 240e umfassen, die direkt in dem Netzwerkring 240 angeordnet sind. Die Knoten 240a–240e von Netzwerkring 240 können z.B. Router sein. Wie nachstehend ausführlicher erläutert wird, können die Knoten 240a–240e über bidirektionale Verbindungen 21a, 22a, 23a mit Monitoren 21, 22 bzw. 23, wie in 1 veranschaulicht, gekoppelt sein. Weiter kann die Ablaufverfolgungseinheit 25 über eine bidirektionale Datenverbindung 25a mit dem Netzwerkring 240 gekoppelt sein.
-
Ein Netzwerkknoten 240a–240e kann mit einem Monitor verbunden sein. Beispielsweise kann der Monitor 21 mit dem Knoten 240a verbunden sein, und kann Ablaufverfolgungsinformationen über bidirektionale Datenverbindung 21a an den Knoten 240a weitergeben; der Monitor 22 kann mit dem Knoten 240b verbunden sein, und kann Ablaufverfolgungsinformationen über bidirektionale Datenverbindung 22a an den Knoten 240b weitergeben; und der Monitor 23 kann mit dem Knoten 240c verbunden sein, und kann Ablaufverfolgungsinformationen über bidirektionale Datenverbindung 23a an den Knoten 240c weitergeben. Wie bereits erwähnt, können Steuerungsinformationen in die entgegengesetzte Richtung von den Knoten 240a–240e an die Monitore/Steuereinheiten 21, 22, 23 weitergegeben werden.
-
Um den Implementierungsaufwand zu verringern, kann der Netzwerkring 240 unidirektional sein. Somit können Informationen (d.h. Pakete) lediglich in eine Richtung (im Uhrzeigersinn oder gegen den Uhrzeigersinn) weitergegeben werden. Dies beinhaltet, dass die Pakete, die auf den Netzwerkring 240 weitergegeben werden, eine geringe Latenzzeit erfahren. Wie jedoch nachstehend selbstverständlicher wird, ist die Weitergabedauer von Paketen kein kritischer Prozess hinsichtlich der Latenzzeit. Mit anderen Worten kann die Verwendung paketvermittelter Kommunikation auf einer Ringtopologie, wie in 2 beispielhaft dargestellt, eine bezüglich der Latenzzeit tolerante Ablaufverfolgung/Debugging vorsehen. Weiter kann eine Ringtopologie, z.B. Netzwerkring 240, skalierbar sein und kann daher leicht an die verschiedensten Gestaltungsarten der Funktionsarchitektur 10 angepasst werden. Weiter ermöglicht die Verwendung einer paketvermittelten Kommunikation, z.B. auf einem einzelnen Halbleiterchip (NoC), ein hohes Maß an Gleichzeitigkeit bei der Aufdeckung von Aktivitäten von Komponenten 1, 2, 3 der Funktionsarchitektur 10. Weiter könnten, anstatt einen Netzwerkring 240 zu verwenden, andere Netzwerktopologien, wie z.B. ein Stern, ein Bus, etc., eingesetzt werden.
-
3 veranschaulicht ein schematisches Blockdiagramm einer Architektur und Topologie einer beispielhaften Ablaufverfolgungsarchitektur 300 gemäß der Offenbarung. Die Ablaufverfolgungsarchitektur 300 kann eine hierarchische Netzwerkstruktur 24 umfassen. Spezieller kann die Netzwerkstruktur 24 eine Vielzahl an Netzwerkringen 240, 250 und 260 und einen Hauptring 280 umfassen. Die Netzwerkringe 240, 250, 260, die ebenfalls als Ring 1, Ring 2 bzw. Ring 3 bezeichnet werden, sind je mit dem Hauptring 280 über bidirektionale Datenverbindungen 240x, 250x bzw. 260x gekoppelt. Der Hauptring 280 kann mit der Ablaufverfolgungseinheit 25 über bidirektionale Datenverbindung 25a gekoppelt sein. Bei allen Netzwerkringen 240, 250, 260 und 280 können Knoten miteinander in einer Regelkreiskonfiguration verbunden sein.
-
Der Hauptring 280 kann als Grundgerüst dienen, das Informationen zwischen der Ablaufverfolgungseinheit 25 und unterschiedlichen Netzwerkringen 240, 250, 260 in beiden Richtungen transferiert. Spezieller können Ablaufverfolgungsinformationen, die von jedem der Netzwerkringe 240, 250, 260 erhalten werden, an den Hauptring 280 und dann von Hauptring 280 an die Ablaufverfolgungseinheit 25 übertragen werden. Andererseits können Steuerungsinformationen, wie z.B. Monitorsteuerungsinformationen oder Steuerungsinformationen, die Monitore (Steuereinheiten) veranlassen, mit der Funktionsarchitektur 10 zu interagieren, von der Ablaufverfolgungseinheit 25 in Pakete verpackt werden und über den Hauptring 280 und entsprechende Netzwerkringe 240, 250, 260 an ihren Bestimmungsknoten, z.B. einer der Knoten 240a–e von Netzwerkring 240, übertragen werden. Die Knoten von Netzwerkring 250 werden durch Bezugszeichen 250a, 250b, 250c und 260d gekennzeichnet, und die Knoten von Netzwerkring 260 werden durch Bezugszeichen 260a, 260b, 260c, 260d, 260e gekennzeichnet.
-
3 veranschaulicht eine Topologie, bei der ein Hauptring 280 mit einem oder einer Vielzahl von Netzwerkringen 240, 250, 260 verbunden ist. Die Netzwerkringe 240, 250, 260 können je mit einem Subsystem von der Funktionsarchitektur 10 verbunden sein. Weiter können, anstatt eine oder mehrere Netzwerkkonfigurationen in Form von Ringen 240, 250, 260 und/oder einem Hauptring 280 zu verwenden, eine oder mehrere dieser Netzwerkkonfigurationen durch Netzwerkkonfigurationen anderer Topologien, wie z.B. ein Stern, ein Bus, etc., ersetzt werden.
-
Jedes Subsystem von der Funktionsarchitektur 10 kann von einer speziellen Taktdomäne definiert sein. Mit anderen Worten, kann die Funktionsarchitektur 10 Schaltungsblöcke umfassen, die auf unterschiedlichen Takten laufen, d.h. unterschiedliche Taktdomänen definieren. Jeder Schaltungsblock oder jedes Subsystem der Funktionsarchitektur 10 kann mit einem Netzwerkring 240, 250, 260 verbunden sein. In diesem Fall kann jeder Netzwerkring 240, 250, 260 auf einem unterschiedlichen Takt laufen.
-
Beispielsweise kann der Netzwerkring 240 in der Ablaufverfolgungsarchitektur 20 implementiert sein, und kann mit der Funktionsarchitektur 10 einer ersten Taktdomäne CL1 verbunden sein, der zweite Netzwerkring 250 kann in der Ablaufverfolgungsarchitektur 20 implementiert sein, und kann mit der Funktionsarchitektur 10 einer zweiten Taktdomäne CL2 verbunden sein, der dritte Netzwerkring 260 kann in der Ablaufverfolgungsarchitektur 20 implementiert sein, und kann mit der Funktionsarchitektur 10 einer dritten Taktdomäne CL3 verbunden sein, und der Hauptring 280 kann in der Ablaufverfolgungsarchitektur 20 einer Hauptring-Taktdomäne CL0 implementiert sein. In 3 sind die Taktdomänen CL1, CL2, CL3, CL0 von der Struktur 100 (z.B. eines einzelnen Halbleiterchips) durch gestrichelte Linien veranschaulicht, die die Grenzen der entsprechenden Taktdomänen anzeigen. Jede Taktdomäne CL1, CL2, CL3, CL0 könnte z.B. als eine “Frequenzinsel” mit individuellen Takten angesehen werden, und könnte sich zumindest vorübergehend von den anderen unterscheiden. Unterschiedliche Takte können unterschiedliche Taktzyklen aufweisen, z.B. kann die Frequenz des ersten Takts von Taktdomäne CL1 sich zumindest vorübergehend von den Frequenzen von einem oder mehreren der anderen Takte von den Taktdomänen CL2, CL3, CL0 unterscheiden. Takte unterschiedlicher Taktfrequenzen können von unterschiedlichen Taktquellen erzeugt werden. Unterschiedliche Takte in Taktdomänen CL1, CL2, CL3 können jedoch ebenfalls von einer einzigen oder gemeinsamen Taktquelle erzeugt werden, z.B. wenn zumindest einer der Takte von den Taktdomänen CL1, CL2, CL3, CL0 (vorübergehend) abgeschaltet wird.
-
Jedes Subsystem der Funktionsarchitektur 10 kann durch eine spezifischen Leistungsdomäne definiert sein. In diesem Fall kann die Funktionsarchitektur 10 Schaltungsblöcke mit unterschiedlichen Leistungsquellen umfassen, die unterschiedliche Leistungsdomänen definieren. Beispielsweise kann jeder der Netzwerkringe 240, 250, 260 mit einem Subsystem oder einer Leistungsdomäne verbunden sein. In diesem Fall kann jeder Netzwerkring 240, 250, 260 mit einem Subsystem verbunden sein, das über seine eigene Leistungsversorgung verfügt. Jede Leistungsversorgung kann derart konfiguriert sein, dass sie ihr entsprechendes Subsystem/Netzwerkring 240, 250, 260 unabhängig aus- und/oder anschaltet. Es ist zu beachten, dass im Allgemeinen die Begriffe “anschalten” und “ausschalten” wie hierin verwendet nicht auf die Leistungsan/-ausschaltung beschränkt sind. Ihre Bedeutung soll auch andere Arten des Anschaltens oder Ausschaltens von Schaltkreisen, wie z.B. durch Taktan/-ausschaltung, im weitesten Sinne abdecken.
-
Mit anderen Worten, die Subsysteme können eher Spannungsoder Leistungsdomänen als Taktdomänen sein. Weiter können die Subsysteme kombinierte Takt- und Spannungs- oder Leistungsdomänen sein, d.h. unterschiedliche Subsysteme haben sowohl einen individuellen Takt als auch eine individuelle Spannungs-/Leistungsversorgung. Im Allgemeinen kann jeder Netzwerkring 240, 250, 260 mit einem Subsystem von System 100 verbunden sein, das durch eine spezifische Taktdomäne und/oder eine spezifische Leistungsdomäne der Funktionsarchitektur 10 und der Ablaufverfolgungsarchitektur 20 definiert ist. Beispielhaft können je ein JPEG-Komprimierungsblock, ein Video-Komprimierungsblock, ein Audio-Komprimierungsblock, ein WiFi-Block, eine Benutzeroberfläche, z.B. eines Touchscreen-Displays, eine Sprachsteuerungseinheit oder eine Tastatur ein Subsystem implementieren.
-
Die hierarchische Ringnetzwerktopologie von Ablaufverfolgungsarchitektur 300, wie z.B. in 3 veranschaulicht, ermöglicht die vollständige Entfernung (Ausschalten) individueller Subsysteme, ohne dass der Debugging-/Ablaufverfolgungsprozess beeinträchtigt wird. Wenn beispielhaft Taktdomäne CL1 (oder eine entsprechende Leistungsdomäne) ausgeschaltet wird, werden Komponenten 1, 2, 3 der Funktionsarchitektur 10 und der erste Netzwerkring 240 innerhalb der Ablaufverfolgungsarchitektur 20 des Systems 100 deaktiviert. Der Betrieb des zweiten Netzwerkrings 240 in dem zweiten Subsystem (z.B. Taktdomäne CL2 und/oder eine entsprechende Leistungsdomäne) und der Betrieb des dritten Netzwerkrings 250 in dem dritten Subsystem (z.B. Taktdomäne CL3 und/oder eine entsprechende Leistungsdomäne) bleiben jedoch von dem Ausschalten des ersten Subsystems unbeeinträchtigt.
-
Das Subsystem, in dem der Hauptring 280 implementiert ist (z.B. Hauptring-Taktdomäne CL0 und/oder eine entsprechende Leistungsdomäne), kann niemals ausgeschaltet (heruntergefahren) werden und/oder kann über die Zeit einen konstanten Takt aufweisen. Dies kann gewährleisten, dass Pakete, die zwischen Hauptring 280 und Netzwerkringen 240, 250, 260, die mit Hauptring 280 verbunden sind, ausgetauscht werden, immer an die Ablaufverfolgungseinheit 25 übertragen werden, oder, andersherum, dass Pakete, die von der Ablaufverfolgungseinheit 25 geschickt werden, immer über den Hauptring 280 an den Zielring 240 oder 250 oder 260 übertragen werden.
-
Die Ablaufverfolgungseinheit 25 kann sich in einem Subsystem befinden, das sich von den Subsystemen, die in Figur beispielhaft durch CL1, CL2, CL3, CL0 dargestellt wurden, unterscheidet. Beispielsweise kann die Ablaufverfolgungseinheit 25 in einem der in 3 veranschaulichten Subsysteme implementiert sein, z.B. in dem beispielhaft durch CL0 dargestellten Subsystem mit einem konstanten Takt oder einer konstanten Leistung. Alle Subsysteme können auf einem einzigen Halbleiterchip bereitgestellt sein, was zu einer NoC-Ablaufverfolgungsarchitektur 20 führt. Alternativ können ein oder mehrere der Subsysteme off-Chip bereitgestellt werden oder sie können sogar in unterschiedlichen Geräten bereitgestellt werden, was zu einem Netzwerk führt, das über mehrere Chips und/oder Geräte verteilt ist. In diesem Fall kann beispielhaft die Ablaufverfolgungseinheit 25 eine externe Ablaufverfolgungseinheit sein, die z.B. in einem Computer implementiert ist, der mit dem zu beobachtenden Elektronikgerät verbunden ist.
-
Die Anzahl an mit dem Hauptring 280 verbundenen Netzwerkringen 240, 250, 260 kann beliebig sein. Unterschiedliche Subsysteme (z.B. Takt- oder Leistungsdomänen) können unterschiedliche Netzwerkringe 240, 250, 260 aufweisen oder sogar einen Netzwerkring 240, 250, 260 gemeinsam benutzen. Des Weiteren kann ein einzelnes Subsystem mehr als einen Netzwerkring 240, 250, 260 aufnehmen.
-
Bei einigen Ausführungsformen, wie vorstehend erwähnt und beispielhaft in 2 veranschaulicht, könnte der Hauptring 280 weggelassen werden, und im Falle einer Vielzahl an Netzwerkringen 240, 250, 260 könnten diese Ringe direkt (d.h. ohne Zwischen-Hauptring 280) miteinander verbunden sein. Diese Ausführungsformen können insbesondere dann von Interesse sein, wenn ein Ausschalten von Subsystemen nicht erlaubt oder nicht möglich ist.
-
Weiter ist die Anzahl an Knoten auf einem einzelnen Netzwerkring 240, 250, 260 beliebig. Es ist jedoch zu beachten, dass der Adressraum zur Adressierung der Knoten/Monitore ausreichend groß sein sollte, um alle Knoten 240a–e, 250a–d, 260a–e von Ringen 240, 250 bzw. 260 aufzunehmen.
-
Es ist zu beachten, dass die Subsysteme in der Funktionsarchitektur 10 unterschiedliche Protokolle und/oder unterschiedliche Arten von Transaktionen verwenden können. Das heißt, dass die Protokolle oder Arten von Transaktionen, die die Monitore, die mit unterschiedlichen Netzwerkringen verbunden sind, beobachten, abhängig vom Subsystem, in dem die Knoten/Monitore implementiert sind, unterschiedlich sein können.
-
Weiter können die Protokolle und Transaktionen, die die mit einem einzelnen Netzwerkring 240, 250, 260 verbundenen Monitore beobachten, abhängig von den Komponenten 1, 2, 3, die in der Funktionsarchitektur des entsprechenden Subsystems 10 beobachtet werden, unterschiedlich sein. Dies ermöglicht es der Ablaufverfolgungsarchitektur 20, auf Systeme 100 angewandt zu werden, die aus Komponenten 1, 2, 3 mit heterogenen Schnittstellen bestehen. Indem beispielhaft auf 1 und 3 Bezug genommen wird, kann der Monitor 21, der mit z.B. dem Knoten 240a von Ring 240 gekoppelt ist, Transaktionen von der Komponente 1 basierend auf einem ersten Protokoll beobachten, der Monitor 22, der mit z.B. dem Knoten 240b von Ring 240 gekoppelt ist, kann Transaktionen von der Komponente 2 basierend auf einem zweiten Protokoll beobachten, und der Monitor 23, der z.B. mit dem Knoten 240c des ersten Rings 240 gekoppelt ist, kann Transaktionen von der Komponente 3 basierend auf einem dritten Protokoll beobachten, wobei die ersten, zweiten und dritten Protokolle unterschiedlich sein können.
-
Das Verpacken der Transaktionen (oder Ablaufverfolgungsinformationen davon) eines speziellen Protokolls in Pakete kann von dem Protokoll selbst abhängen. Daher können, unter Bezugnahme auf das vorstehende Beispiel, die Monitore 21, 22 und 23 unterschiedliche Verpackungsprozesse verwenden, die an die entsprechenden Protokolle oder Transaktionen, die in Komponenten 1, 2 bzw. 3 verwendet werden, angepasst sind.
-
Wie in Verbindung mit 5 ausführlicher erläutert wird, kann jeder Knoten 240a–240e, 250a–250d und 260a–260e ein Router sein. Weiter kann jeder Knoten 240a–240e, 250a–250d und 260a–260e mit einem Monitor gekoppelt sein, wie z.B. Monitore 21, 22, 23. Die Anzahl an Monitoren pro Netzwerkring 240, 250, 260 kann unterschiedlich sein. Es ist zu beachten, dass die Anzahl an Monitoren 21, 22, 23 pro Netzwerkring variieren kann und nicht unter den Ringen untereinander ausgeglichen sein muss.
-
4 veranschaulicht eine Netzwerkverbindung zwischen einem Netzwerkring (oder einer Netzwerkkonfiguration mit einer anderen Topologie, wie z.B. einem Stern, einem Bus, etc.) und dem Hauptring (oder einer Netzwerkkonfiguration mit einer anderen Topologie, wie z.B. einem Stern, einem Bus, etc.) gemäß der Offenbarung. Beispielhaft ist der Netzwerkring 240 als mit dem Hauptring 280 verbunden gezeigt. Bei diesem Beispiel enthält der Netzwerkring 240 drei Knoten 240a, 240b, 240c, die mit Monitoren 21, 22 bzw. 23 gekoppelt sind, und einen Knoten 241, der mit einem Knoten 281 auf dem Hauptring 280 über einen Synchronisator 270 gekoppelt ist. Der Synchronisator 270 kann eine Bridge sein. Die Knoten 240a, 240b, 240c und 241 auf dem Netzwerkring 240 und der Knoten 281 auf dem Hauptring 280 können Router sein.
-
Im Folgenden werden, ohne Beschränkung der Allgemeinheit, Knoten 240a–240e, 250a–250d und 260a–260e als Router bezeichnet. 5 veranschaulicht beispielhaft einen Router 240a, der mit dem Monitor 21 über eine bidirektionale Datenverbindung 21a gemäß einer Ausführungsform gekoppelt ist.
-
Der Router 240a kann zwei bidirektionale Ports, nämlich Port 0 und Port 1, haben. Port 0 ist mit der Ringstruktur von dem Netzwerkring 240 verbunden. Spezieller weist der Router 240a einen ersten Eingang 243 auf, der Pakete von der Ringstruktur von Netzwerkring 240 empfängt, und weist einen ersten Ausgang 244 auf, der Pakete von der Ringstruktur von Netzwerkring 240 abschickt. Port 1 kann mit einem Monitor M, z.B. Monitor 21 verbunden sein. Der Router 240a kann einen zweiten Eingang 245 aufweisen, der Pakete von Monitor 21 empfängt, und kann einen zweiten Ausgang 246 aufweisen, der Pakete an Monitor 21 schickt. Der erste Eingang/Ausgang 243, 244 ist mit Port 0 verbunden, der zweite Eingang/Ausgang 245, 246 ist mit Port 1 verbunden.
-
Der Knoten 241, der den Netzwerkring 240 zu dem Hauptring 280 überbrückt, kann genauso ein Router sein. Der Router 241 kann ebenfalls zwei bidirektionale Ports (Port 0 und Port 1), wie in 5 dargestellt, aufweisen. Port 0 von Router 241 ist mit der Ringstruktur von Netzwerkring 240 verbunden. Port 1 von Router 241 kann nicht mit einem Monitor verbunden sein. Stattdessen kann Port 1 mit dem Synchronisator oder der Bridge 270 verbunden sein, und wird verwendet, um mit dem Hauptring 280 zu kommunizieren.
-
Bei dem Hauptring 280 können alle Knoten oder Router 281 ähnlich wie Router 241 gestaltet sein. Die Router 281 stellen eine Verbindung zu Synchronisatoren (Bridges) 270 her, die zu anderen Netzwerkringen, z.B. Netzwerkringen 250, 260, etc., überbrücken.
-
Die zwei Portrouter, wie hierin beschrieben, können zwei Eingangspuffer (d.h. Eingangszwischenspeicher) aufweisen. In diesem Fall ist ein erster Eingangspuffer 243a mit Port 0 verbunden, und puffert (d.h. zwischenspeichert) Datenpakete, die an Eingang 243 empfangen werden. Ein zweiter Eingangspuffer 245a ist mit Port 1 verbunden, und puffert Datenpakete, die an Eingang 245, wie in 5 veranschaulicht, empfangen werden.
-
Alternativ können die Router keine Ausgangspuffer (d.h. Ausgangszwischenspeicher) aufweisen. Somit kann Ausgang 244, der mit der Ringstruktur verbunden ist, und Ausgang 246, der mit einem Monitor 21 oder einem Synchronisator (z.B. Bridge) 270 verbunden ist, ungepuffert sein.
-
Monitore 21, 22, 23 können programmierbar sein, um in unterschiedlichen Beobachtungsmodi zu arbeiten. Beispielhaft ist in 6 ein Zustandsdiagramm dargestellt, das z.B. vier unterschiedliche Beobachtungsmodi veranschaulicht.
-
Ein erster Beobachtungsmodus, LEERLAUF, deaktiviert den Monitor und erzeugt keinerlei Datenverkehr. Der Monitor wird ausgeschaltet.
-
Ein zweiter Beobachtungsmodus, STATISTIKEN (Stats), veranlasst den Monitor, statistische Informationen zu Beobachtungen der Komponentenaktivität bereitzustellen. Beispielhaft kann der Modus STATISTIKEN den Monitor veranlassen, eine Anzahl an Ereignissen innerhalb eines spezifischen Zeitrahmens zu zählen und die statistischen Informationen an die Ablaufverfolgungseinheit 25 zu melden. Beispielhaft kann die Anzahl beobachteter Transaktionen erhalten und regelmäßig an die Ablaufverfolgungseinheit 25 gemeldet werden.
-
Ein dritter Beobachtungsmodus, KURZE NACHRICHT (kurz), kann den Monitor veranlassen, lediglich den Befehl und die Adresse einer jeden Transaktion in Pakete zu verpacken und diese Ablaufverfolgungsinformationen bei jeder Beobachtung einer Transaktion an die Ablaufverfolgungseinheit 25 zu übertragen.
-
Ein vierter Beobachtungsmodus, LANGE NACHRICHT (lang), kann den Monitor veranlassen, die gesamte Transaktion (Befehl, Adresse, Daten) in Pakete zu verpacken und diese “vollständigen” Ablaufverfolgungsinformationen an die Ablaufverfolgungseinheit 25 zu übertragen. Wie in 6 durch Pfeile veranschaulicht, sind Zustandsübergänge zwischen jedem der Beobachtungsmodi durch eine Umprogrammierung des Monitors möglich.
-
Die Beobachtungsmodi definieren die Granularität von Ablaufverfolgungsinformationen, die an die Ablaufverfolgungseinheit 25 übertragen werden. Je feiner die Granularität, desto größer ist die von einem Monitor erforderliche Bandbreite zur Übertragung seiner Beobachtungen. Beispielhaft kann z.B. beim dritten und vierten Modus das Problem eines Verkehrsstaus auftreten, während sie ihre Beobachtungen als Ablaufverfolgungsinformationen in Pakete verpackt an die Ablaufverfolgungseinheit 25 schicken. Dies kann eintreten, da große Datenmengen beobachtet werden. In solchen Fällen können von dem Monitor 21, 22, 23 Pakete erzeugt werden, die über die unvollständige Übertragung von Ablaufverfolgungsinformationen informieren, und an die Ablaufverfolgungseinheit 25 abgeschickt werden.
-
Wenn es, beispielhaft, für einen Monitor 21, 22, 23 nicht möglich ist, aufgrund eines Verkehrsstaus oder begrenzter Bandbreite die gesamten Ablaufverfolgungsinformationen während eines Modus in Pakete zu verpacken (z.B. während des Modus KURZE NACHRICHT oder während des Modus LANGE NACHRICHT), kann der Monitor 21, 22, 23 konfiguriert werden, Verluststatistiken zu erzeugen, die statistische Informationen zu verlorenen (d.h. nicht übertragenen) Ablaufverfolgungsinformationen anzeigen, die Verluststatistiken in ein oder mehrere Pakete zu verpacken und diese an die Ablaufverfolgungseinheit 25 zu schicken. Beispielhaft können die Verluststatistiken die Anzahl und/oder die Art von Beobachtungen umfassen, die nicht übertragen wurden. Die Verluststatistiken können z.B. in spezielle Pakete verpackt werden, die als Verlustinformationspakete bezeichnet werden, oder sie können in andere Pakete aufgenommen werden, z.B. zu Paketen hinzugefügt werden, die Ablaufverfolgungsinformationen tragen. Wenn, beispielhaft, p Beobachtungen verloren wurden, können Informationen, dass p Beobachtungen verloren wurden, in einem Verlustinformationspaket enthalten sein oder dem nächsten Paket hinzugefügt werden, das die Ablaufverfolgungsinformationen bezüglich der p+1 Beobachtung trägt. Beispielhaft können die hinzugefügten Informationen eine Bit-Sequenz sein, die die Anzahl p anzeigt, oder es kann z.B. jede andere binärkodierte Verluststatistik bezüglich der p verlorenen Beobachtungen sein.
-
Weiter kann ein Monitor konfiguriert sein, den Dateninhalt einer Beobachtung zu verringern, um die Paketgröße zu verringern. Beispielhaft kann während des Modus LANGE NACHRICHT, bei dem Daten einer Transaktion zusätzlich zu Adress- und Befehlsinformationen in Paketen verkapselt sind, lediglich ein Teil der beobachteten Daten an die Ablaufverfolgungseinheit 25 übertragen werden.
-
Ein Programmieren der Monitore 21, 22, 23 kann z.B. von der Ablaufverfolgungseinheit 25 oder jeder anderen Steuereinheit, die mit der Netzwerkstruktur 24 verbunden ist, ausgeführt werden. Zu diesem Zweck gibt die Ablaufverfolgungseinheit 25 (oder die entsprechende Steuereinheit) ein Datenpaket aus, das Steuerungsinformationen trägt, die verwendet werden, um das Verhalten des Zielmonitors zu programmieren, z.B. den Zustand eines Monitors auf den Zielmonitor 21, 22, 23 einzustellen. Dieses Merkmal kann zukünftige Erweiterungen der Funktionalität des Monitors ermöglichen.
-
Somit gibt es, allgemeiner gesprochen, zwei Informationswege, nämlich einen Weg vom Hauptring 280 zu Netzwerkring 240, 250, 260, und einen Weg vom Netzwerkring 240, 250, 260 zum Hauptring 280. Der Einfachheit halber werden diese beiden Wege als Upstream bzw. Downstream bezeichnet. Der Downstream-Weg kann Debugging- und/oder Ablaufverfolgungsinformationen von Monitoren 21, 22, 23 nach unten zu der Ablaufverfolgungseinheit 25 tragen. Daher kann der Downstream-Weg für den Hauptteil des Datenverkehrs in der Netzwerkstruktur 24 verantwortlich sein. Der Upstream-Weg andererseits kann Steuerungsinformationen in die entgegengesetzte Richtung tragen, d.h. vom Hauptring 280 zu dem Netzwerkring 240, 250, 260. Diese Steuerungsinformationen, die in einem Steuerungspaket verkapselt sind, können verwendet werden, um die Monitore 21, 22, 23 z.B. gemäß dem Zustandsdiagramm von 6 zu programmieren.
-
Wie vorstehend erwähnt, können Steuerungsinformationen, die in Steuerungspaketen verkapselt sind, weiter verwendet werden, um Monitore 21, 22, 23 zu programmieren, um mit Komponenten 1, 2, 3 von Funktionsarchitektur 10 zu interagieren. In diesem Fall kann die Ablaufverfolgungsarchitektur 20 zusätzlich zum Steuern des Betriebs von Funktionsarchitektur 10 verwendet werden. So ist die Funktionalität der Ablaufverfolgungsarchitektur 20 nicht auf die einfache Beobachtung von Aktivität (Befehlen, Transaktionen) von Komponenten 1, 2, 3 der Funktionsarchitektur 10 beschränkt, sondern kann zusätzlich verwendet werden, um eine Programmausführung der Funktionsarchitektur 10 zu steuern oder zu handhaben.
-
Arbitration zwischen Ports (Port 0 und Port 1) von Routern 240a–240c, 241 (siehe 4) kann durch Gewichtung erzielt werden. Beispielsweise kann ein Round-Robin-Algorithmus mit Gewichtung verwendet werden. Beispielhaft kann jedem Port eines jeden Routers 240a–240c, 241 eine spezifische Gewichtung zugeordnet werden. Die Gewichtung bestimmt die Wahrscheinlichkeit, dass ein bestimmter Port gewählt wird. Wie nachstehend ausführlicher erläutert wird, kann Arbitration (z.B. Bestimmung der Gewichtung) entweder lokal in Netzwerkknoten (z.B. Router 240a–240c, 241) oder in einer zentralen Einheit, wie z.B. der Ablaufverfolgungseinheit 25, implementiert sein.
-
Eine statische Gewichtung kann für jeden Port eines Routers 240a–240c, 241 verwendet werden. Diese statischen Gewichtungen sind vordefiniert und können nicht geändert werden. Beispielhaft veranschaulicht 7 einen Netzwerkring 240, der vier Router R1, R2, R3, R4 (entsprechend 240a–240d) umfasst, die mit Monitoren M1, M2, M3 bzw. M4 verbunden sind, und einen Router R0 (entsprechend 241), der zum Überbrücken zum Hauptring 280 oder direkt zur Ablaufverfolgungseinheit 25 (nicht gezeigt) verwendet wird. Nochmals, der Netzwerkring 240 ist lediglich ein Beispiel und könnte gegen Netzwerkkonfigurationen mit anderen Topologien wie z.B. einem Stern, einem Bus, etc. ausgetauscht werden. Beispielhaft können statische Gewichtungen (Port 0:Port 1) anfänglich als (3:1) für Router R1, (2:1) für Router R2, (1:1) für Router R3 und (1:1) für Router R4 ausgewählt werden. Auf diese Weise wird Fairness unter den kommunizierenden Monitoren M1–M4 erzielt.
-
Noch immer unter Bezugnahme auf 7 kann die Arbitrationsgewichtung der Router R1, R2, R3, R4 zeitlich variabel sein. Eine Variabilität der Gewichtung kann z.B. verwendet werden, um eine Beobachtungsfairness unter variierenden Beobachtungsbetriebsbedingungen sicherzustellen oder um zu gewährleisten, dass routerspezifische Ablaufverfolgungsinformationen den Ausgang 244 von Port 0 eines Routers R1–R4 innerhalb einer angemessenen Latenzzeitgrenze erreichen können.
-
Im ersten Fall, wenn Fairness unter den kommunizierenden Monitoren M1–M4 erzielt werden soll, kann die Gewichtung dynamisch gemäß dem in 7 veranschaulichten Beispiel angepasst werden. In einer ersten Betriebsphase werden alle Monitore M1–M4 als aktiviert, d.h. in einem anderen Zustand als LEERLAUF arbeitend, angenommen. In diesem Fall können (Port 0:Port 1) Gewichtungen von Routern R1, R2, R3, R4 auf dieselbe Art und Weise angepasst werden wie im statischen Fall, d.h. (3:1), (2:1), (1:1) bzw. (1:1). Dann wird angenommen, dass die Monitore M2 und M4 ausgeschaltet werden, d.h. programmiert sind, um in den LEERLAUF-Zustand zu gehen. Ein Ausschalten der Monitore M2 und M4 ist in 7 durch Kreuze neben den Monitoren M2 und M4 angezeigt. In einer zweiten Betriebsphase sind die Gewichtungen von Router R1 und Router R2 auf (1:1) und (1:1) angepasst, um auch in der zweiten Betriebsphase Fairness sicherzustellen. Bei diesem speziellen Beispiel sind lediglich Port 0-Gewichtungen angepasst, Port 1-Gewichtungen können jedoch genauso angepasst werden.
-
Wenn im zweiten Fall Ablaufverfolgungsinformationen von einem speziellen Monitor M1–M4 privilegiert sein sollen, können Routergewichtungen auch dynamisch geändert werden, um eine geeignete Bandbreite und Latenzzeiten für das Paket/die Pakete sicherzustellen, das/die Ablaufverfolgungsinformationen von der bevorzugten Komponente 1, 2, 3 verkapselt, auf der der spezifische Monitor, der privilegiert werden soll, befestigt ist. Dies kann z.B. erzielt werden, indem die Port 1-Gewichtung desjenigen Routers erhöht wird, mit dem der Monitor, der privilegiert werden soll, kommuniziert. Bei diesem speziellen Beispiel sind lediglich Port 1-Gewichtungen angepasst, Port 0-Gewichtungen können jedoch genauso angepasst werden.
-
Arbitration kann lokal in Netzwerkknoten (z.B. Routern R1–R4) implementiert werden. Beispielhaft kann eine Anpassung der Gewichtung, entweder angewandt zum Zwecke der Fairness (erster Fall) oder Unfairness (zweiter Fall), von einem Router R1–R4 in Antwort auf ein oder mehrere Zustandsänderungspakete erzielt werden, die von Monitoren M1–M4 übertragen werden, die mit anderen Routern R1–R4 verbunden sind. Jeder Monitor M1–M4 kann ein Zustandsänderungspaket erzeugen und übertragen, sobald er einen (z.B. speziellen) Zustandsübergang ausführt.
-
Port-Gewichtungen können bei einem Router in Antwort auf empfangene Zustandsänderungspakete angepasst werden. 8 veranschaulicht ein Beispiel. Der Monitor M4 empfängt ein Steuerungspaket, das den Monitor M4 derart programmiert, dass er in einem der Beobachtungszustände arbeitet. Der Monitor M4 kann ein Zustandsänderungspaket in Antwort auf einen Zustandsübergang übertragen. Dieses Zustandsänderungspaket verlässt den Router R4 an dem Ausgang 244 von Port 0 und wird durch das Ringnetzwerk verbreitet, wobei es Router R3, Router R2, etc. passiert. Der Router R3 kann das Zustandsänderungspaket von Monitor M4 erkennen und kann die Gewichtung von Port 0 anpassen. Gleichermaßen kann der Router R2 das Zustandsänderungspaket von Monitor M4 erkennen und kann die Gewichtung von Port 0 anpassen.
-
In einem Beispiel können lediglich zwei unterschiedliche Zustandsänderungspakete vorliegen. In diesem Fall wird eines dieser zwei Zustandsänderungspakete ausgegeben, wenn der Beobachtungszustand auf LEERLAUF geschaltet wird (d.h. der Monitor wird ausgeschaltet). Das andere der beiden Zustandsänderungspakete wird ausgegeben, wenn der Beobachtungszustand auf einen der Zustände STATISTIKEN, KURZE NACHRICHT und LANGE NACHRICHT geschaltet wird. Bei diesem speziellen Beispiel zeigt ein von einem Monitor M1–M4 ausgegebenes Zustandsänderungspaket lediglich den An- oder Aus-Zustand des entsprechenden Monitors M1–M4 an, der das Zustandsänderungspaket ausgegeben hat. Die Router R1–R4, die dieses Zustandsänderungspaket empfangen, können dann ihre Port-Gewichtung(en) entsprechend anpassen. Zurückkehrend zu 7 können Router R2 und Router R4 beispielhaft ein Zustandsänderungspaket ausgeben, das anzeigt, dass diese Router in den LEERLAUF-Zustand übergegangen sind. Router R3 passt seine Port 0-Gewichtung nicht auf den Empfang des Zustandsänderungspakets von Router R4 hin an, Router R2 passt seine Port 0-Gewichtung von 2 auf 1 auf den Empfang des Zustandsänderungspakets von Router R4 hin an, und Router R1 passt seine Port-Gewichtung von 3 auf 1 auf den Empfang der Zustandsänderungspakete von Router R4 und Router R2 hin an. Somit können, unter Verwendung dieser oder anderer Konzepte, Router-Port-Gewichtungen in einem Netzwerkring 240 lokal und dynamisch durch von Monitoren ausgegebene Pakete angepasst werden, ohne dass eine direkte Gewichtungssteuerung durch eine zentrale Arbitrationseinheit, wie z.B. die Ablaufverfolgungseinheit 25, implementiert werden muss.
-
Weiter kann eine Arbitration z.B. zentral implementiert sein. Router-Port-Gewichtungen können durch Steuerungspakete gesteuert werden, die von einer zentralen Netzwerkeinheit ausgegeben werden, wie z.B. der Ablaufverfolgungseinheit 25. Solche Steuerungspakete können als Pakete zur Einstellung der Port-Gewichtung bezeichnet werden. Ein Paket zur Einstellung der Port-Gewichtung kann z.B. von der Ablaufverfolgungseinheit 25 an zumindest einen der Vielzahl an Knoten (z.B. Router R1–R4) geschickt werden. Bei Empfang eines Pakets zur Einstellung der Port-Gewichtung kann der von dem Paket zur Einstellung der Port-Gewichtung adressierte Knoten Port-Gewichtungen gemäß der Gewichtungseinstellungsinformationen, die in dem Paket kodiert sind, anpassen. Eine Steuerung der Port-Gewichtung durch von z.B. der Ablaufverfolgungseinheit 25 übertragene Steuerungspakete kann verwendet werden, wenn eine unfaire oder privilegierte Arbitration unter den Monitoren M1–M4 eines Netzwerkrings 240 gewünscht ist.
-
Um Fehlern vorzubeugen, die durch ungesteuerte Ankünfte von Paketen hervorgerufen werden, können Paketen, die unterschiedliche Informationen tragen, unterschiedliche Prioritäten zugeordnet werden. Beispielhaft können Prioritäten von dem Beobachtungszustand abhängen, der zur Erzeugung der Ablaufverfolgungsinformationen verwendet wird.
-
Paketen, die Ablaufverfolgungsinformationen enthalten, die in dem Zustand LANGE NACHRICHT und/oder in dem Zustand KURZE NACHRICHT erzeugt wurden, wird niedrigste Priorität eingeräumt. Paketen, die Ablaufverfolgungsinformationen enthalten, die in dem Zustand STATISTIKEN erzeugt wurden, wird dieselbe oder eine höhere Priorität eingeräumt. Paketen, die Steuerungsinformationen tragen (z.B. Zeitraumpakete, Pakete zur Programmierung der Monitore oder zur Interaktion mit der Funktionsarchitektur 10) wird die höchste Priorität eingeräumt. Somit können solche Pakete ihre Ziele sobald als möglich erreichen.
-
In ein Paket verpackte und von einem Monitor 21, 22, 23, M1–M4 ausgegebene Ablaufverfolgungsinformationen können mit zumindest einem Zeitstempel bereitgestellt werden. Der Zeitstempel kann eine Zeit anzeigen, zu der die Ablaufverfolgungsinformationen bestimmt werden, d.h. zu der eine bestimmte Beobachtung gemacht wird. Pakete, die statistische Ablaufverfolgungsinformationen bereitstellen, wie sie z.B. im Modus STATISTIKEN erzeugt werden, können konfiguriert sein, um zwei Zeitstempel zu tragen, einen, der den Startzeitpunkt der Beobachtung, über die die statistischen Informationen im Modus STATISTIKEN erzeugt werden, bezeichnet, und einen, der den Endzeitpunkt der Beobachtung, über die die statistischen Informationen im Modus STATISTIKEN erzeugt werden, bezeichnet.
-
Die von den Paketen getragenen Zeitstempel können Differentialzeitstempel sein. Differentialzeitstempel beziehen sich auf einen Takt des Subsystems in dem sie erzeugt werden. Differentialzeitstempel können von einem Zähler erzeugt werden, der die Taktzyklen des Takts des entsprechenden Subsystems zählt. Jeder Monitor eines Netzwerkrings 240, 250, 260 (siehe z.B. 3) kann Zugriff auf den Zähler haben.
-
Der Zähler kann eine zentrale Einheit des entsprechenden Subsystems sein, d.h. ein Zähler kann für ein gesamtes Subsystem bereitgestellt werden. Solch ein zentraler Zähler kann von allen Monitoren, die sich in dem entsprechenden Subsystem befinden, gemeinsam benutzt werden. Wie vorstehend erwähnt, kann ein Subsystem durch eine spezifische Taktdomäne definiert sein, z.B. Taktdomäne CL0, CL1, CL2 oder CL3 (siehe 3).
-
Das Subsystem kann mehrere Zähler umfassen. In diesem Fall sind alle Zähler innerhalb eines Subsystems (Taktdomäne) synchron. Auf den zentralen Zähler oder die mehreren Zähler kann durch die Monitore und durch die Knoten (Router) des Netzwerkrings oder der Netzwerkringe, die sich in dem entsprechenden Subsystem (Taktdomäne) befinden, zugegriffen werden.
-
Ein Zeitstempel kann dem Wert eines N-Bit-Zählers, wie in 9 veranschaulicht, entsprechen. Das heißt, der Wert dieses Zählers wird auf die Pakete gestempelt, die von den Monitoren 21, 22, 23 in den Netzwerkring des entsprechenden Subsystems, z.B. Netzwerkring 240, wenn das Subsystem von Taktdomäne CL1 betrachtet wird, ausgegeben werden. Zusätzlich kann der Bridge-Router 241 des Netzwerkrings Zugriff auf den/die Zähler haben.
-
Um den Leistungsverbrauch und das Platzerfordernis des Halbleiters zu verringern, kann der N-Bit-Zähler darauf beschränkt sein, lediglich einen kleinen Bereich an Zyklen zu zählen. Beispielhaft N ≤ 12, 10 oder 8.
-
Die Breite n des N-Bit-Zählers definiert den maximalen Bereich 2N – 1 des Zählers. Nachdem bis zu dieser Grenze gezählt wurde, läuft der Zähler über, macht einen Umbruch und startet von Neuem. Die Bit-Zählerbreite N kann den maximalen Bereich des Differentialzeitstempels, der an dem Paket angebracht wird, definieren.
-
Der maximale Bereich des Zählers kann in kleinere, gleich große Intervalle, sogenannte Perioden, unterteilt werden. Als Beispiel kann eine Periode durch K Bit definiert sein. In diesem Fall kann der Zählerwert, der als ein Zeitstempel für die Pakete verwendet wird, lediglich der K-Bit-Wert des Zählers sein, d.h. kann maximal einer Periode von 2K – 1 Taktzyklen entsprechen.
-
In diesem Fall werden die führenden M Bit, M = N – K, des Zählers jede Periode gewendet. Somit können die führenden M Bit des N-Bit-Zählers als ein Periodenzähler angesehen werden. Der Periodenzähler zählt die Anzahl an Überläufen der Zählung von K Bit des Differentialzeitstempels.
-
Der Periodenzähler (d.h. die führenden M Bit des N-Bit-Zählers) kann verwendet werden, um die Übertragung eines speziellen Steuerungspakets an Ablaufverfolgungseinheit 25 auszulösen. Dieses Steuerungspaket wird nachfolgend als ein Zeitperiodenpaket bezeichnet. Ein Zeitperiodenpaket kann bei jeder Zählung des Periodenzählers ausgegeben werden.
-
Somit kann jedes Subsystem, das mit einer Taktdomäne CL0, CL1, CL2, CL3 verbunden ist, periodisch Zeitperiodenpakete an die Ablaufverfolgungseinheit 25 ausgeben. Die Zeitperiodenpakete melden der Ablaufverfolgungseinheit 25, dass in einem bestimmten Subsystem eine Periode z.B. geendet hat. Jedes N, M, K kann in zumindest zwei oder in allen Subsystemen unterschiedlich oder identisch sein.
-
Wie in 9 veranschaulicht, kann beispielsweise ein Zähler, der 1023 Taktzyklen zählen kann, vier solche Perioden aufweisen, jede mit einer Länge von 256 Zyklen. Somit wird ein Zeitperiodenpaket durch den Netzwerkring, der mit solch einem Zähler ausgestattet ist, alle 256 Taktzyklen ausgegeben.
-
Auf den einen oder die mehreren (synchronisierten) Zähler, der/die mit einem Subsystem verbunden ist/sind, und/oder auf den einen oder die mehreren Netzwerkring(e) innerhalb dieses Subsystems kann am Knoten des/der Netzwerkrings/-ringe und an den Monitoren zugegriffen werden. Beispielsweise kann das Zeitperiodenpaket, das die Subsystemzeit anzeigt, von einem Bridge-Router 241 erzeugt und, optional über den Hauptring 280, an die Ablaufverfolgungseinheit 25 abgeschickt werden.
-
Das Zeitperiodenpaket enthält die Adresse der Quelle, sodass die Ablaufverfolgungseinheit 25 weiß, von welchem Subsystem und/oder Netzwerkring das Zeitperiodenpaket ausgegeben wurde.
-
Die Ablaufverfolgungseinheit 25 kann die absolute Zeit (auch als Systemzeit bezeichnet) einer Beobachtung basierend auf dem in dem Paket enthaltenen Differentialzeitstempel und einer Zählung der Zeitperiodenpakete, die von dem Subsystem und/oder Netzwerkring, von dem das Paket ausgesandt wurde, empfangen wurden, berechnen. Die genaue absolute Zeit der Beobachtung der Ablaufverfolgungsinformationen, die in dem Paket verkapselt sind, können z.B. berechnet werden gemäß T(P) = [n × Δ(Subsystem) + dTS(P)] × Tc(Subsystem).
-
Hier ist T(P) die absolute Beobachtungszeit der Ablaufverfolgungsinformationen, die in Paket P verkapselt sind, n ist die Anzahl an Perioden, die bei der Ablaufverfolgungseinheit 25 entsprechend der Anzahl an ankommenden Zeitperiodenpaketen von dem zu beobachtenden Subsystem gezählt werden, D(Subsystem) ist die Dauer einer Periode in Taktzyklen des zu beobachtenden Subsystems und dTS(P) bezieht sich auf den Wert des Differentialzeitstempels des Pakets in Taktzyklen. Wie aus Vorstehendem ersichtlich, sollte die Taktzyklusperiode Tc und die Periodendauer in Taktzyklen K des/der Zähler(s) in jedem Subsystem bei der Ablaufverfolgungseinheit 25 bekannt sein. Weiter ist zu beachten, dass die absolute Zeit durch andere Formeln berechnet werden kann, und/oder dass zusätzliche Konzepte zur Berechnung der absoluten Zeit verwendet werden können. Beispielhaft können eingehende Pakete auf die angemessene Periode ausgerichtet werden, bevor die absolute Zeit berechnet wird. Beispielhaft kann die Ablaufverfolgungseinheit 25 n1 Perioden gezählt haben, wenn ein Paket empfangen wird, das z.B. vor zwei Perioden (d.h. in Periode n1 – 2) erzeugt wurde, und das aufgrund von Latenz zu spät ankommt. In diesem Fall ist eine Ausrichtung auf die richtige Periode n1 – 2 möglich, indem der derzeitige Wert n1 des Periodenzählers und die Periodenzählung des Zeitstempels (z.B. die führenden M Bit des Zeitstempels) beobachtet werden.
-
Ablaufverfolgung oder Debugging auf Basis von Differentialzeitstempeln minimiert die Komplexität der Ablaufverfolgungsoder Debuggingarchitektur 20. Je größer der maximale Wert des Zählers ist (2N – 1) und je höher die Anzahl an Perioden (2M) ist, desto mehr Latenz kann für ein Paket toleriert werden, bevor seine absolute Zeit (d.h. Systemzeit) bei Ablaufverfolgungseinheit 25 falsch berechnet wird.
-
Beispielsweise können lediglich die K Bit als ein Differentialzeitstempel mit dem Paket übertragen werden. Alternativ kann der gesamte Zählerwert (N Bit) als ein Differentialzeitstempel mit dem Paket übertragen werden. In diesem Fall kann die Ablaufverfolgungseinheit 25 leicht bestimmen, zu welcher der Perioden das Paket gehört. Weiter kann die Ablaufverfolgungseinheit 25 die ungefähre tatsächliche Latenzzeit einer Paketübertragung beobachten, indem die führenden M Bit des Differentialzeitstempels eines ankommenden Pakets mit der Anzahl n an Perioden verglichen werden, wie sie bei der Ablaufverfolgungseinheit 25 auf Basis der Zeitperiodenpakete, falls verwendet, gezählt werden.
-
Mit anderen Worten, lediglich die Ablaufverfolgungseinheit 25 kann Kenntnis über die absolute Zeit von Beobachtungen in den verschiedenen Netzwerkringen erhalten. In diesem Fall merkt sich die Ablaufverfolgungseinheit 25 die Anzahl der spezifischen Zeitperiodenpakete, die von jedem Netzwerkring empfangen wurde. Die Ablaufverfolgungseinheit 25 kann dann basierend auf der Anzahl der empfangenen Zeitperiodenpakete und z.B. basierend auf den Werten der führenden M Bit der durch die Pakete bereitgestellten N-Bit-Zeitstempel andere von jedem Netzwerkring empfangene Pakete bestellen. Da die Ablaufverfolgungseinheit 25 die Taktfrequenz Tc–1 in jedem Subsystem und den Periodenbereich K des/der Zähler(s) in jedem Subsystem kennt, kann die Ablaufverfolgungseinheit 25 die absolute Zeit einer jeden Beobachtung berechnen, die von jedem Paket von jedem Subsystem gemeldet wurde. Somit können Subsysteme auf unterschiedliche Frequenzen getaktet sein, ohne dass der Rest des Systems, der Fluss von Ablaufverfolgungsinformationen und die Bewertung der Ablaufverfolgungsinformationen in der Ablaufverfolgungseinheit 25 beeinträchtigt werden.
-
Ein Steuerungspaket, das eine Frequenzänderung in einem spezifischen Subsystem anzeigt, das mit z.B. einer Taktdomäne CL0, CL1, CL2, CL3 verbunden ist, kann ausgegeben werden. In diesem Fall führt eine Frequenzänderung in einem Subsystem dazu, dass die Komponenten 1, 2, 3, die mit dem Subsystem verbunden sind, mit der geänderten Frequenz getaktet werden. Diese Art Steuerungspaket wird nachfolgend als ein Frequenzänderungspaket bezeichnet. Frequenzänderungspakete können verwendet werden, um anderen Netzwerkentitäten zu melden, dass in einem bestimmten Subsystem eine Frequenzänderung stattgefunden hat. Somit kann eine Frequenzänderung in einem Subsystem die Übertragung eines Frequenzänderungspakets auslösen.
-
Beispielhaft kann ein Frequenzänderungspaket einen (z.B. Differential-)Zeitstempel tragen, der dem Wert des/der Zähler(s) entspricht, der/die mit dem entsprechenden Subsystem (Taktdomäne) verbunden ist/sind, das zum Zeitpunkt der Frequenzänderung abgetastet wird. Weiter kann ein Frequenzänderungspaket die Adresse der Quelle enthalten, sodass die Zieleinheit weiß, von welchem Subsystem und/oder Netzwerkring das Frequenzänderungspaket ausgegeben wurde.
-
Ähnlich anderen Arten von Steuerungspaketen, wie z.B. den Zeitperiodenpaketen, können die Frequenzänderungspakete von z.B. einem Bridge-Router 241 des Subsystems und/oder dem zu beobachtenden Netzwerkring abgeschickt werden. Zu diesem Zweck wird der Bridge-Router 241, der Zugriff auf den/die Zähler des Subsystems hat, darüber informiert, wenn die Frequenzänderung stattfindet, und tastet in diesem Moment den Zähler ab, um den entsprechenden Zeitstempel zu erhalten. Das Frequenzänderungspaket kann dann, optional über Hauptring 280, an die Ablaufverfolgungseinheit 25 (oder eine andere Zieleinheit) übertragen werden. Es wird angenommen, dass der Bridge-Router 241, der das Frequenzänderungspaket ausgibt, mit geeigneten Mitteln über das Ereignis, wann die Frequenzänderung stattfindet, informiert wird, z.B. durch ein binäres Frequenzänderungsaktivierungssignal, das von einer Steuereinheit (nicht gezeigt) der Funktionsarchitektur 10 ausgegeben wird.
-
Die Ablaufverfolgungseinheit 25 (oder eine andere Zieleinheit) kann den (z.B. Differential-)Zeitstempel, der in dem Frequenzänderungspaket enthalten ist, verwenden, um den Moment zu bestimmen, zu dem der Multiplikator Tc(Subsystem) auf den neuen Wert gemäß der neuen Taktfrequenz Tc–1 des zu beobachtenden Subsystems (oder Taktdomäne) geändert werden sollte.
-
Die Ablaufverfolgungsarchitektur 20 kann ein Taktprotokoll verwenden, das durch ein Ausschalten und ein Herauffahren (Booten) eines individuellen Systems unbeeinträchtigt bleibt. Eine Wiederherstellung eines individuellen Subsystems nach dem Ausschalten des Subsystems und darauffolgendem Anschalten kann basierend auf der Zeit des Hauptrings 280 (siehe z.B. 3) erzielt werden. Der Hauptring 280 kann sich in einem Subsystem befinden, in dem ständig Leistung verfügbar ist, d.h. das niemals ausgeschaltet wird. Somit wird/werden der/die mit dem Hauptring 280 verbundene(n) Zähler niemals zurückgesetzt. Bei einer Ausführungsform kann/können der/die Zähler, der/die mit dem Hauptring verbunden ist/sind, dieselbe Struktur aufweisen wie vorstehend beschrieben und in der beispielhaften Veranschaulichung von 9 gezeigt.
-
Wird ein Subsystem ausgeschaltet, stoppt/stoppen der/die Zähler, der/die mit dem/den im Subsystem befindlichen Netzwerkring(en) verbunden ist/sind, die Zählung aufgrund von Stromausfall. Wann immer das Subsystem wieder angeschaltet wird, wird/werden der/die Zähler, der/die mit dem/den Netzwerkring(en) verbunden ist/sind, zurückgesetzt und beginnen erneut zu Zählen, beginnend bei 0. In diesem Moment wird ein Signal (z.B. ein binäres Signal, das von 0 auf 1 schaltet) an den Bridge-Router 281 auf Hauptring 280 geschickt, der sich mit Netzwerkring 240 verbindet, der angeschaltet wird. Bridge-Router 281 kann dann ein spezielles Paket, Wake-Up-Paket genannt, erzeugen. Das Wake-Up-Paket kann den derzeitigen Zählerwert des/der Zähler tragen, der/die mit dem Hauptring 280 zu dem Moment des Signals verbunden ist/sind (z.B. der Zählerwert, wenn das binäre Signal von 0 auf 1 schaltet). Weiter kann es einen Identifikator des Subsystems und/oder des Netzwerkrings des Subsystems tragen, das/der angeschaltet wird.
-
Das Wake-Up-Paket kann an die Ablaufverfolgungseinheit 25 geschickt werden. Bei Empfang des Wake-Up-Pakets wird die Ablaufverfolgungseinheit über den Zeitpunkt informiert, zu dem das Subsystem angeschaltet wurde (z.B. den Zeitpunkt zu dem das Anschaltverfahren gestartet wurde). Da der Hauptring 280 niemals ausgeschaltet wird (d.h. konstant in Betrieb ist), kann dieser Zeitpunkt eine sehr genaue Abschätzung des absoluten Anschalt- oder Herauffahrzeitpunkts des Subsystems sein. Dann kann die absolute Zeit von Paketen, die von dem angeschalteten Subsystem empfangen wurden, von der Ablaufverfolgungseinheit 25 wie vorstehend beschrieben berechnet werden, wobei die Wake-Up-Zeit als Startzeit-Offset für den Subsystemzählwert 0 verwendet wird.
-
Somit kann der Hauptring 280 eine kontinuierliche Zeitbasis bereitstellen, die als Referenzzeit zur Berechnung absoluter Zeiten aus Differentialzeitstempeln verwendet wird, die von den Netzwerkringen nach einem Ausschalten (Herunterfahren) des Subsystems und darauffolgendem Anschalten empfangen werden. Bei einigen Ausführungsformen, wenn z.B. kein Hauptring 280 verwendet wird, kann eine Referenzzeit durch einen Referenzzähler bereitgestellt werden, der mit der Ablaufverfolgungseinheit 25 verbunden ist. In diesem Fall wird das Signal, das auf ein Anschalten hin von dem Subsystem an den Bridge-Router 281 gemäß der vorstehenden Beschreibung abgeschickt wird, an die Ablaufverfolgungseinheit 25 geschickt, die Zugriff auf die Referenzzeit hat.
-
Wenn alle Netzwerkringe einschließlich Hauptring 280 ausgeschaltet sind, wird die erzeugte Ablaufverfolgung erneut gestartet. Bei einer Ausführungsform kann die Ablaufverfolgungseinheit 25 über eine solche globale Systemabschaltung informiert werden. Wird die Ablaufverfolgungseinheit 25 über den Zeitpunkt solch einer globalen Abschaltung informiert, könnten die Zeitinformationen in der Ablaufverfolgungseinheit 25 hinsichtlich der individuellen Netzwerkringe gespeichert werden. Die Ablaufverfolgungseinheit 25 kann über eine Abschaltung des gesamten Systems 100 entweder durch eine Abschaltnachricht informiert werden, die von dem System 100 ausgegeben wird, oder durch Informationen, die von außerhalb des Systems 100 erhalten werden.
-
Die in der Ablaufverfolgungseinheit 25 zu einer globalen Systemabschaltung gespeicherten Zeitinformationen hinsichtlich der individuellen Netzwerkringe können verwendet werden, wenn das gesamte System 100 wieder angeschaltet wird. Beim Anschalten (Hochfahren) von System 100 werden alle Zähler zurückgesetzt. Wie vorstehend erwähnt zählt/zählen der/die Zähler in jedem Subsystem immer, sofern es keine Abschaltung in dem entsprechenden Subsystem gibt.
-
Beispielhaft kann ein System 100 zwei Subsysteme umfassen, die mit unterschiedlichen Takten laufen. Subsystem 1 (z.B. Taktdomäne CL1 in 3) weist einen Takt mit einer Periode von 7 ns auf, und Subsystem 2 (z.B. Taktdomäne CL2 in 3) weist einen Takt mit einer Periode von 9 ns auf. Diese zwei Subsysteme sind durch zwei Netzwerkringe 240, 250 der Ablaufverfolgungsarchitektur 20 verbunden, wobei jedes System mit der Taktfrequenz des Subsystems läuft, in dem es sich befindet. Hauptring 280, der die zwei Netzwerkringe 240, 250 überbrückt, kann z.B. einen Takt mit einer Periode aufweisen, die kürzer ist als die Taktperioden beider Netzwerkringe 240, 250. Beispielhaft kann die Taktperiode von Hauptring 280 3 ns betragen.
-
Die Bit-Breite einiger oder aller Verbindungen (z.B. Netzwerkstruktur 24, Router-Ports Port 0, Port 1, siehe z.B. 5, bei der die Bit-Breite der Netzwerkstruktur 24 und der Router-Port 0 durch w gekennzeichnet sind) können auf 16 eingestellt werden, und die Eingangspuffer 243 von Port 0 und/oder Eingangspuffer 245 von Port 1 aller Router können eine Tiefe von gleich 3 Flits aufweisen (ein Flit weist 16 Datenbit auf). Die Verbindungen von den Netzwerkringen 240, 250, 260 zum Hauptring 280 können über Synchronisatoren 270 ausgeführt werden, die ebenfalls Puffer aufweisen können, die einer Größe von 3 Flits entsprechen. Zur Nachverfolgung der Zeit, können 10-Bit-Zähler auf allen Subsystemen/Netzwerkringen verwendet werden. Somit kann jeder Zähler einen Maximalwert von 1023 aufweisen. Die zwei höchsten Bit werden verwendet, um die Perioden zu zählen, die sich durch Teilen des Maximalwerts in vier Perioden gleicher Länge à 256 Zählungen ergeben.
-
10 veranschaulicht eine beispielhafte Architektur und Topologie einer Ablaufverfolgungsarchitektur 20 gemäß der Offenbarung. Bei diesem Beispiel kann jedes der beiden Subsysteme mit einem Netzwerkring verbunden sein (oder, allgemein, mit einer Netzwerkkonfiguration mit der Topologie von z.B. einem Stern, einem Bus, etc.) und jeder Netzwerkring kann z.B. fünf Monitore aufweisen. Bei dieser Ausführungsform und anderen hierin beschriebenen Ausführungsformen können unterschiedliche Arten von Routern verwendet werden. Mit “a” gekennzeichnete Router können Pakete lediglich weiterleiten. Mit “b” gekennzeichnete Router können konfiguriert sein, Pakete weiterzuleiten, Adressen Netzwerkring-IDs (Identifikatoren) hinzuzufügen und Zeitperiodenpakete zu erzeugen. Mit “c” gekennzeichnete Router können konfiguriert sein, Pakete weiterzuleiten, ein Anschalten eines Subsystems zu erkennen und ein Anschalten eines Subsystems an Ablaufverfolgungseinheit 25 zu melden, indem ein Wake-Up-Paket ausgegeben wird. Mit “d” gekennzeichnete Router können konfiguriert sein, Pakete weiterzuleiten und Timing-Pakete des Hauptrings zu erzeugen. Die in 10 dargestellten Netzwerkringe sind beispielhaft und könnten durch eine oder mehr Netzwerkkonfigurationen mit anderen Topologien wie z.B. einem Stern, einem Bus, etc. ersetzt werden.
-
Es ist zu beachten, dass Zähler, die verwendet werden, um die Zeitstempel in unterschiedlichen Subsystemen/Netzwerkringen zu erzeugen, eine unterschiedliche Bit-Breite N aufweisen können. Weiter kann jeder Netzwerkring einen Zähler unterschiedlicher Größe hinsichtlich N, K und M aufweisen. Die Anzahl N an Bit, die von den Zählern verwendet wird, spezifiziert die Latenzzeit, die ein Paket tolerieren kann, bevor seine absolute Zeit falsch berechnet wird. Daher muss die Bit-Breite N hinsichtlich der Systemspezifikationen bestimmt werden. Weiter kann die Bit-Breite M des Periodenzählers ebenfalls für unterschiedliche Netzwerkringe verschieden sein und hinsichtlich der Systemanforderungen spezifiziert werden.
-
Jeder Monitor kann konfiguriert sein, spezifische Transaktionen zu missachten, die innerhalb eines vordefinierten Adressraumes stattfinden. Dies kann z.B. sicherstellen, dass geschützte Kommunikationen von der Ablaufverfolgungseinheit 25 nicht beobachtet werden können. Somit kann die Ablaufverfolgungsverbindung kein Sicherheitsrisiko hervorrufen. Es ist jedoch ebenfalls möglich, geschützte und nicht geschützte Transaktionen innerhalb desselben Adressraumes zu haben, und die Sicherheit bzw. den Schutz der Kommunikation gegenüber der Ablaufverfolgungsarchitektur 20 durch andere Mittel zu gewährleisten.
-
Der Router, der Ablaufverfolgungseinheit 25 mit dem Hauptring 280 verbindet (oder z.B. eine andere Topologieart einer zentralen Netzwerkkonfiguration), kann optional sein. Stattdessen kann eine direkte Verbindung aufgebaut sein. In diesem Fall muss die Ablaufverfolgungseinheit 25 den Zähler zurückverfolgen, der die Zeit auf der Hauptnetzwerkkonfiguration (z.B. Ring 280) definiert.
-
Ähnlich kann ein Überbrücken von Routern 241 auf den Netzwerkringen (oder z.B. auf anderen Topologiearten von Netzwerkkonfigurationen) optional sein. Bei dieser und z.B. bei allen anderen Ausführungsformen können keine Querverbindungen zwischen Port 0 und Port 1 der Router bereitgestellt werden.
-
Die Bit-Breite aller Verbindungen kann unterschiedlich sein. Das heißt, dass die unterschiedlichen Netzwerkringe in der hierarchischen Topologie unter Verwendung unterschiedlicher Bit-Breiten auf ihrer Netzwerkstruktur arbeiten können. Eine Skalierung der Bit-Breiten wirkt sich auf den Durchsatz des Systems aus. Verbindungen mit größeren Bit-Breiten haben einen größeren Durchsatz und größere Bandbreiten.
-
Ein Verfahren gemäß der Offenbarung ist in 11 veranschaulicht. Obwohl das Verfahren veranschaulicht und nachstehend als eine Reihe von Vorgängen oder Ereignissen beschrieben ist, ist es selbstverständlich, dass die vorliegende Erfindung durch die veranschaulichte Reihenfolge solcher Vorgänge oder Ereignisse nicht einschränkend ausgelegt werden soll. Beispielsweise können einige Vorgänge in unterschiedlicher Reihenfolge und/oder gleichzeitig mit anderen Vorgängen oder Ereignissen außer den hierin veranschaulichten und/oder beschriebenen erfindungsgemäß stattfinden. Zusätzlich müssen nicht alle veranschaulichten Schritte erforderlich sein, um eine Methode gemäß der vorliegenden Erfindung zu implementieren.
-
Das Verfahren umfasst bei S1 den Betrieb einer Funktionseinheit 10, die eine Vielzahl an Komponenten 1, 2, 3 umfasst.
-
Bei S2 werden die Ablaufverfolgungsinformationen einer Komponente 1, 2, 3 durch einen Monitor 21, 22, 23 bestimmt, der mit der Komponente 1, 2, 3 verbunden ist.
-
Die Ablaufverfolgungsinformationen werden bei S3 in ein Paket verpackt, z.B. durch binäre Kodierung der Ablaufverfolgungsinformationen und durch Schreiben der binär kodierten Ablaufverfolgungsinformationen in eine in dem Paket bereitgestellte Ablaufverfolgungsdatenstruktur.
-
Bei S4 wird das Paket an eine Netzwerkkonfiguration weitergeleitet, z.B. Netzwerkring 240, der eine Vielzahl an Knoten 240a–240e umfasst. Das Paket kann dann in der Netzwerkkonfiguration unter Verwendung einer Adresse, die z.B. in der Paketkopfzeile (Header) enthalten ist und ihr Ziel definiert, weitergeleitet werden.
-
Bei S5 wird das Paket von der Netzwerkkonfiguration (z.B. Netzwerkring 240) an eine Ablaufverfolgungseinheit 25 weitergeleitet. Die Ablaufverfolgungseinheit 25 kann dann das Paket weiterverarbeiten, indem z.B. die Informationen (z.B. Zeitstempel, Ablaufverfolgungsinformationen, Verluststatistiken, etc.), die in dem Paket enthalten sind, analysiert werden, und sie kann z.B. den Netzwerkbetrieb, den Betrieb der Ablaufverfolgungsarchitektur 20 und (optional) den Betrieb der Funktionsarchitektur 10, wie vorstehend beschrieben, steuern.
-
Es wurden zwar spezielle Ausführungsformen hierin veranschaulicht und beschrieben, doch für den Fachmann ist es offensichtlich, dass eine Vielfalt von alternativen und/oder gleichartigen Implementierungen anstelle der speziellen gezeigten und beschriebenen Ausführungsformen verwirklicht werden können, ohne vom Konzept der vorliegenden Erfindung abzuweichen. Beispielhaft könnten bei allen Ausführungsformen Netzwerkkonfigurationen, die beispielhaft als Ringtopologien dargestellt wurden, andere Topologien aufweisen, z.B. Stern oder Bus. Diese Anmeldung soll jegliche Anpassungen oder Varianten der hierin beschriebenen Ausführungsformen abdecken.