-
Hintergrund
-
Mainstream-Prozessorchips, sowohl in den Hochleistungssegmenten als auch in Segmenten mit niedrigem Stromverbrauch, integrieren in zunehmendem Maße zusätzliche Funktionen wie Grafik, Display-Engines, Sicherheits-Engines, PCIeTM-Ports (d. h. Ports gemäß der Spezifikation Peripheral Component Interconnect Express (PCI ExpressTM (PCIeTM)), Basis-Spezifikation Version 2.0 (2007 veröffentlicht) (im Weiteren die PCIeTM-Spezifikation genannt) und sonstige PCIeTM-basierte Peripheriegeräte, während sie gleichzeitig die Unterstützung von Altausrüstung gemäß einer PCI-Spezifikation wie der PCI-Spezifikation (Peripheral Component Interconnect) für lokale Busse, Version 3.0 (2002 veröffentlicht) (im Weiteren die PCI-Spezifikation genannt) aufrechterhalten.
-
Solche Designs sind aufgrund der unterschiedlichen Anforderungen der Server-, Desktop-, mobilen, eingebetteten, ultra-mobilen und mobilen Internetgerät-Segmente stark segmentiert. Verschiedene Märkte verwenden System-on-Chip-Lösungen (SoC) mit einem einzigen Chip, die zumindest einige der Prozessorkerne, Speicher-Controller, Input/Output-Controller und andere segmentspezifische Änderungen auf einem einzigen Chip kombinieren. Jedoch entstehen nur langsam Designs, die diese Eigenschaften anhäufen, weil es schwierig ist, verschiedene IP-Blocks- oder -Agenten auf einer einzigen Matrize zu integrieren. Das ist besonders darum der Fall, da IP-Blocks unterschiedliche Anforderungen und ein einzigartiges Design haben sowie viele spezialisierte Leitungen, Kommunikationsprotokolle und so weiter erfordern können, um ihre Aufnahme in ein SoC zu ermöglichen. Infolgedessen erfordert jedes SoC oder jedes sonstige hoch entwickelte Halbleiterbauelement ein sehr komplexes Design und an hohes Maß an Anpassung, um verschiedene IP-Blocks in ein einziges Bauelement aufzunehmen. Das ist so, weil ein bestimmter IP-Block typischerweise neu konzipiert werden muss, um die Schnittstellen- und Signalanforderungen eines bestimmten SoC zu erfüllen.
-
Selbst wenn verschiedene IP-Blocks erfolgreich in ein SoC aufgenommen werden, bleiben noch Probleme bestehen. Wenn beispielsweise ein Fehler bei der Prozessor-Hardware auftritt, kann es eine Weile dauern, bis der Fehler erkannt wird. Da der Fehler erst lange, nachdem er aufgetreten ist, erkannt wird, kann es schwierig sein, seinen Entstehungsort zu bestimmen.
-
Genauer gesagt, kann es lange dauern, den Fehler zu erkennen, weil der Fehler sich durch mehrere Schichten Hardware und Software bewegen muss, bevor er für den Nutzer auf Systemebene „sichtbar” wird. Diese langsame Fehlerfortpflanzung erschwert die Fehleranalyse, weil die Analyse das Hardware-Versagen zum Zeitpunkt des Auftretens zurückverfolgen muss.
-
Kurze Beschreibung der Zeichnungen
-
Merkmale und Vorteile der Ausführungen der vorliegenden Erfindung ergeben sich aus den hinzugefügten Ansprüchen, der folgenden detaillierten Beschreibung einer oder mehrerer Beispielausführungen und den dazugehörigen Abbildungen, bei denen:
-
1 ein Blockdiagramm einer verbindenden Grundstruktur gemäß einer Ausführung der Erfindung ist.
-
2 ein Blockdiagramm von weiteren Einzelheiten einer verbindenden Grundstruktur gemäß einer Ausführung der Erfindung ist.
-
3 ein High-Level-Blockdiagramm eines SoC gemäß einer Ausführung der Erfindung ist.
-
4 ein Blockdiagramm eines Systems gemäß einer weiteren Ausführung der Erfindung ist.
-
5 ein schematisches Flussdiagramm für die Verarbeitung von Fehlermeldungen in einer Ausführung der Erfindung ist.
-
6 ein Pseudocode-Beispiel für die Meldungsverarbeitung in einer Ausführung der Erfindung enthält.
-
Detaillierte Beschreibung
-
In der folgenden Beschreibung werden zahlreiche spezifische Details erläutert, aber die Ausführungen der Erfindung können auch ohne diese spezifischen Details ausgeübt werden. Gut bekannte Schaltkreise, Strukturen und Techniken werden nicht detailliert angezeigt, um ein Verständnis dieser Beschreibung nicht zu erschweren. „Eine Ausführung”, „verschiedene Ausführungen” und ähnliche Bezeichnungen für so beschriebene Ausführung(en) können bestimmte Merkmale, Strukturen oder Eigenschaften enthalten, aber bestimmte Merkmale, Strukturen oder Eigenschaften sind nicht unbedingt in jeder Ausführung enthalten. Einige Ausführungen können einige, alle oder keine der Merkmale enthalten, die für andere Ausführungen beschrieben werden.
-
„Erste/r/s”, „zweite/r/s”, „dritte/r/s” und Ähnliches beschreiben einen gemeinsamen Gegenstand und zeigen an, dass es sich um verschiedene Ausprägungen ähnlicher Gegenstände handelt. Solche Adjektive bedeuten nicht, dass die so beschriebenen Gegenstände sich in einer bestimmten Reihenfolge befinden müssen, weder zeitlich noch räumlich noch im Rang oder auf irgendeine andere Weise. „Verbunden” kann bedeuten, dass Elemente in direktem physischen oder elektrischen Kontakt zueinander stehen, und ”gepaart” kann bedeuten, dass Elemente miteinander zusammenarbeiten oder interagieren, und sie können direkten physischen oder elektrischen Kontakt zueinander haben, müssen dies aber nicht. Auch können ähnliche oder dieselben Zahlen zwar verwendet werden, um dieselben oder ähnliche Teile in verschiedenen Abbildungen zu bezeichnen, aber das bedeutet nicht, dass alle Abbildungen, die ähnliche oder dieselben Zahlen enthalten, ein und dieselbe Ausführung darstellen.
-
Eine Ausführung enthält einen Prozessor, der in der ersten Matrize enthalten ist und einen ersten Hardware-Fehler entdeckt (z. B. einen Fehler aufgrund eines beschädigten Speichers). Der Prozessor formuliert eine erste Fehlermeldung auf der Grundlage des ersten entdeckten Fehlers. Der Prozessor (z. B. einer oder mehrere Kerne eines Mehrprozessorkerns) kann die erste Fehlermeldung über das erste Gewebe, das in der ersten Matrize enthalten ist, über einen ersten IP-Agent oder -Block, der ebenfalls in der ersten Matrize enthalten ist, weiterleiten. Dies kann auch über eine band-interne Meldung geschehen, beispielsweise eine, die sich an die Gewebespezifikation des integrierten On-Chip-Systems (IOS) hält (nachstehend besprochen). Der erste IP-Agent kann eine Fehlermeldung ausgeben, die beispielsweise einen Benutzer auf eine Weise auf den Fehler aufmerksam machen kann, die sich zeitnah zu dem Moment verhält, in dem der Fehler zum ersten Mal auftritt. Dies kann eine bessere Fehleranalyse erleichtern. Der erste IP-Agent kann einen Prozessor (z. B. einen Grafikprozessor), einen Controller (z. B. einen Strom-Controller) und Ähnliches enthalten.
-
Ausführungen können in vielen verschiedenen Systemtypen verwendet werden. Zum Beispiel können hier beschriebene Implementierungen im Zusammenhang mit Halbleiterbauelementen wie Prozessoren oder sonstigen Halbleiterbauelementen verwendet werden, die auf einer Matrize mit einem einzigen Halbleiter hergestellt werden können. In bestimmten Implementierungen kann das Bauelement ein SoC oder ein sonstiger hochmoderner Prozessor oder Chipsatz sein, der verschiedene homogene und/oder heterogene Verarbeitungsagenten und zusätzliche Komponenten wie Vernetzungskomponenten enthält, z. B. Router, Controller, Brückengeräte, Bauelemente, Speicher und so weiter.
-
Einige Implementierungen können in einem Halbleiterbauelement verwendet werden, das nach einer bestimmten Spezifikation konzipiert wird, z. B. nach einer IOSF-Spezifikation, die von einem Halbleiterhersteller ausgegeben wird, um ein standardisiertes auf der Matrize befindliches Interconnect-Protokoll für die Befestigung von IP-Blocks innerhalb eines Chip bereitzustellen, einschließlich eines SoC.
-
Bei diesen IP-Blocks kann es sich um verschiedene Arten handeln, einschließlich Universalprozessoren wie In-Order- oder Out-of-Order-Kerne, funktional festgelegte Einheiten, Grafikprozessoren, 10 Controller, Display-Controller, Medienprozessoren und viele andere. Durch Standardisierung eines Interconnect-Protokolls wird ein Rahmen für eine breite Nutzung von IP-Agenten in verschiedenen Chiptypen geschaffen. Dementsprechend kann der Halbleiterhersteller nicht nur effizient verschiedene Chiptypen über eine Vielfalt von Kundensegmenten hinweg konzipieren, er kann mithilfe einer Spezifikation auch Dritte befähigen, Logik wie z. B. IP-Agenten für die Aufnahme in solchen Chips zu entwickeln. Und außerdem wird durch die Bereitstellung zahlreicher Facetten des Interconnect-Protokolls die erneute Nutzung von Designs effizient ermöglicht. Zwar werden die Ausführungen hier im Zusammenhang mit dieser IOSF-Spezifikation beschrieben, aber es gilt zu verstehen, dass die Tragweite der vorliegenden Erfindung sich nicht darauf beschränkt, und Ausführungen können in vielen verschiedenen Arten von Systemen verwendet werden.
-
Jetzt beziehen wir uns auf 1: hier wird ein Blockdiagramm einer verbindenden Grundstruktur gemäß einer Ausführung der vorliegenden Erfindung gezeigt. Wie in 1 gezeigt wird, kann System 10 ein Bestandteil eines System-on-Chip oder irgendeines anderen Halbleiterbauelements wie eines stark integrierten Prozessorkomplexes oder eines integrierten IO Hub sein und enthält ein Gewebe 20, das als Verbindung zwischen den verschiedenen Komponenten dient. In der gezeigten Implementierung umfassen diesen Komponenten IP-Agenten 30 und 40, bei denen es sich um unabhängige IP-Blöcke handeln kann, die unterschiedliche Funktionen bereitstellen, beispielsweise Rechenkapazitäten, Grafikkapazitäten, Medienverarbeitungskapazitäten und so weiter. Diese IP-Agenten sind also IP-Blöcke oder logische Geräte mit einer Schnittstelle, die in einer Ausführung der IOSF-Spezifikation entspricht. Wie man weiter sehen kann, verfügt Gewebe 20 auch über eine Schnittstelle mit Brücke 50. Auch wenn dies einer einfacheren Zeichnung wegen in 1 nicht gezeigt wird, gilt es zu verstehen, dass Brücke 50 als Schnittstelle für andere Systemkomponenten dienen kann, z. B. auf demselben Chip oder auf einem oder mehreren anderen Chips.
-
Wie nachstehend beschrieben wird, kann jedes der in 1 gezeigten Elemente, nämlich das Gewebe, die IP-Agenten und die Brücke eine oder mehrere Schnittstellen für den Umgang mit der Kommunikation verschiedener Signale enthalten. Diese Schnittstellen können gemäß der IOSF-Spezifikation definiert werden, welche die Signale für die Kommunikation auf diesen Schnittstellen, die für den Informationsaustausch zwischen den Agenten verwendeten Protokolle, für die Auswahl- und Flusssteuerungsmechanismen, die für die Einleitung und die Steuerung des Informationsaustausches verwendet werden, die unterstützten Adressentschlüsselung- und -übersetzungsfähigkeiten, Mitteilungen für band-interne oder band-externe Kommunikation, Power Management, Tests sowie Validierungs- und Debug-Unterstützung definiert.
-
Die IOSF-Spezifikation umfasst 3 unabhängige Schnittstellen, die für jeden Agenten bereitgestellt werden können, nämlich eine primäre Schnittstelle, eine Seitenband-Meldungsschnittstelle und eine Prüfbarkeits- und Debug-Schnittstelle(Design-for-Test-(DFT), Design-for-Debug-(DFD)Schnittstelle). Nach der IOSF-Spezifikation kann ein Agent jede beliebige Kombination dieser Schnittstellen unterstützen. Spezifisch kann ein Agent 0–N primäre Schnittstellen, 0–N Seitenband-Meldungsschnittstellen und optionale DFx-Schnittstellen unterstützen.
-
Gewebe 20 kann ein Hardware-Element sein, dass Daten zwischen verschiedenen Agenten befördert. Es gilt zu beachten, dass die Topologie von Gewebe 20 produktspezifisch ist. Als Beispiel kann ein Gewebe als ein Bus, ein hierarchischer Bus, ein kaskadierter Hub usw. implementiert werden. Jetzt beziehen wir uns auf 2: hier wird ein Blockdiagramm mit weiteren Details einer miteinander verbundenen Architektur gemäß einer Ausführung der vorliegenden Erfindung gezeigt. Wie in 2 gezeigt wird, definiert die IOSF-Spezifikation diese drei ausgeprägten Gewebe, nämlich ein primäres Schnittstellengewebe 112, ein DFx-Gewebe 114 und ein Seitenbandgewebe 116. Das primäre Schnittstellengewebe 112 wird für die gesamte band-interne Kommunikation zwischen Agenten und Speicher verwendet, z. B. zwischen einem Host-Prozessor wie einer Zentraleinheit (CPU) oder einem anderen Prozessor und einem Agenten. Das primäre Schnittstellengewebe 112 kann weiterhin die Kommunikation von Peer-Transaktionen zwischen Agenten und unterstütztem Gewebe ermöglichen. Alle Transaktionsarten, einschließlich Speicher, Input-Output (IO), Konfiguration und band-interne Meldungen können über das primäre Schnittstellengewebe 112 ausgeführt werden. Daher kann das primäre Schnittstellengewebe als Hochleistungsschnittstelle für zwischen Peers übertragene Daten und/oder für die Kommunikation mit vorgeschalteten Komponenten fungieren.
-
In verschiedenen Implementierungen setzt das primäre Schnittstellengewebe 112 ein Protokoll für aufgeteilte Transaktionen um, um eine maximale Nebenläufigkeit zu erreichen. Das heißt, dass dieses Protokoll eine Auftragsphase, eine Erteilungsphase, eine Befehlsphase und eine Datenphase vorsieht. Das primäre Schnittstellengewebe 112 unterstützt drei grundsätzliche Auftragsarten: gebuchte, nicht gebuchte und Abschlüsse, in verschiedenen Ausführungen. Ganz allgemein ist eine gebuchte Transaktion eine Transaktion, die, wenn sie von einer Quelle gesendet wird, von der Quelle als abgeschlossen betrachtet wird, und die Quelle erhält keine Abschluss- oder Bestätigungsmeldung über die Transaktion. Ein Beispiel für eine gebuchte Transaktion kann eine Schreibtransaktion sein. Im Gegensatz dazu gilt eine nicht gebuchte Transaktion für die Quelle erst als abgeschlossen, wenn sie eine Antwortmeldung erhält, nämlich einen Abschluss. Ein Beispiel für eine nicht gebuchte Transaktion ist eine Lesetransaktion, bei der der Quellenagent ein Lesen der Daten anfordert. Dementsprechend stellt die Abschlussmitteilung die angeforderten Daten dar.
-
Zusätzlich unterstützt das primäre Schnittstellengewebe 112 das Konzept verschiedener Kanäle, um einen Mechanismus für einen unabhängigen Datenstrom im System bereitzustellen. Wie näher beschrieben werden wird, kann das primäre Schnittstellengewebe 112 selbst eine Master-Schnittstelle enthalten, die Transaktionen einleitet, sowie eine Zielschnittstelle, die Transaktionen empfängt. Die primäre Master-Schnittstelle kann weiter in eine Auftragsschnittstelle, eine Befehlsschnittstelle und eine Datenschnittstelle unterteilt werden. Die Auftragsschnittstelle kann als Kontrolle für die Bewegung der Befehle und Daten der Transaktion verwendet werden. In verschiedenen Ausführungen kann das primäre Schnittstellengewebe 112 PCI-Bestellregeln und Aufzählungen unterstützen.
-
Das Seitenbandschnittstellengewebe 116 wiederum kann ein Standardmechanismus für die Kommunikation aller band-externen Informationen sein. Auf diese Weise können für eine bestimmte Implementierung entwickelte Spezialleitungen vermieden werden, wodurch die Möglichkeit zur IP-Wiederverwendung bei einer Vielzahl von Chips verbessert wird. Im Gegensatz zu einem IP-Block, der dedizierte Leitungen für band-externe Kommunikation wie Status, Unterbrechung, Power Management, Sicherungsverteilung, Konfigurationsabschattung, Testmodi und so weiter verwendet, standardisiert ein Seitenbandschnittstellengewebe gemäß der IOSF-Spezifikation die gesamte band-externe Kommunikation, fördert die Modularität und reduziert die Validierungsanforderungen für die IP-Wiederverwendung bei verschiedenen Designs. Im Allgemeinen kann das Seitenbandschnittstellengewebe 116 eher für die Kommunikation nicht-leistungskritischer Informationen als für leistungskritische Datenübertragungen verwendet werden, die typischerweise über das primäre Schnittstellengewebe 112 kommuniziert werden können.
-
Wie weiter in 2 gezeigt, können zu den IP Agents 130, 140 und 150 auch eine entsprechende primäre Schnittstelle, eine Seitenband-Schnittstelle und eine DFx-Schnittstelle zählen. Allerdings muss nicht notwendigerweise, wie vorstehend ausgeführt, jeder Agent auch eine dieser Schnittstellen aufweisen und kann ein bestimmter IP-Agent in einigen Ausführungsformen nur eine einzige Schnittstelle haben.
-
Bei Anwendung einer IOSF-Spezifikation können verschiedene Arten von Chips entworfen werden, die jeweils eine große Auswahl verschiedener Funktionen aufweisen. Unter Bezugnahme auf 3 wird ein Blockdiagramm zu einer hohen Prozessstufe der SoC dargestellt, was den Ausführungsformen dieser Erfindung entspricht. Wie in 3 gezeigt, kann die SoC 200 verschiedene Komponenten beinhalten, von denen jede auf einem einzigen Halbleiterchip integriert werden kann, um verschiedene Datenverarbeitungskapazitäten mit hoher Geschwindigkeit und geringem Energieverbrauch zu bieten, wodurch ein vergleichbar kleiner Raum belegt wird. Wie in 3 gezeigt, weist die SoC 200 mehrere Kerne mit 205 o–205n auf. In verschiedenen Ausführungsformen können die 205er Kerne relativ einfache der Reihe nach angeordnete Kerne sein oder komplexere nicht gereihte Kerne. Oder es kann in einem einzige SoC eine Kombination von gereihten und nicht gereihten Kernen geben. Wie ausgeführt können die 205er Kerne über eine kohärente 215er Zwischenverbindung miteinander verbunden sein, welche auch an einen 210er Cashe-Speicher angekoppelt ist, d. h. ein gemeinsames Last-Level-Cache (LLC). Auch wenn der Umfang dieser Erfindung sich nicht hierauf beschränkt, kann in einer Ausführungsform eine kohärente 215er Zwischenverbindung der Spezifikation Quick Path Interconnect (QPI)TM entsprechen, die bei der IntelCorporation, Santa Clara, Kalifornien, erhältlich ist.
-
Wie weiter in 3 gezeigt, kann eine kohärente 215er Verbindung über eine 220-Brücke mit einer 250er Matrix kommunizieren, die auch eine IOSF-Matrix sein kann. Eine kohärente 215er Zwischenverbindung kann auch über einen integrierten Speicher-Controller 225 mit einem Speicher außerhalb des Chips (nicht angezeigt, um die Darstellung der Ausführungsform der 3 zu erleichtern) kommunizieren und auch über eine 230er Brücke mit einer 250er Matrix.
-
Wie weiter in 3 gezeigt, können verschiedene Komponenten an die 250er Matrix angeschlossen werden, einschließlich eines 240er Content-Processing-Moduls (CPM), das verwendet werden kann, um verschiedene Operationen durchzuführen, wie etwa Sicherungsprozesse, kryptographische Funktionen und so weiter. Außerdem kann ein 245er Prozessor Teil einer Media-Processing-Pipeline sein, die Videos auf einem angeschlossenen Display wiedergibt.
-
Wie weiter gezeigt, kann die 250er Matrix auch an einen 255er IP-Agent angeschlossen werden. Auch wenn nur ein einziger „IP-Agent” als solcher angezeigt ist, können weitere IP-Agents in die Figur eingezogen werden und sind viele solcher Agents in verschiedenen Ausführungsformen möglich. In Hinblick auf die Ausführungsform der 3, sind die B-Einheit 276 und die H-Einheit 288 beide IP-Blocks. Die H-Einheit 278 bestimmt, ob eine Transaktion von irgendeinem der Kerne (z. B. Kern 205n) zum Speicher übertragen werden soll (z. B. Speicher 285) oder zu einem Südkomplex, der an einen 265er Universal Serial Bus(USB)-Controller und ähnliche angeschlossen werden kann. Die B-Einheit 276 überträgt Kern-Transaktionen (z. B. Kern 205n) zum Speicher (z. B. Speicher 285).
-
Außerdem kann die Matrix 250, um die Kommunikation mit anderen Bausteinen auf dem Chip zu ermöglichen, auch mit einem PCIeTM-Controller 260 und einem USB-Controller 265 kommunizieren, die beide gemäß diesen Protokollen mit verschiedenen Bausteinen kommunizieren können. Schließlich wird in der Ausführungsform der 3 eine Brücke 270 gezeigt, die verwendet werden kann, um mit zusätzlichen Komponenten anderer Protokolle zu kommunizieren, wie etwa einem Open-Core-Protokoll (OCP) oder einem ARM-Advances-Microcontroller-Bus-Architecture(AMBA)-Protokoll. Auch wenn sie mit diesen besonderen Komponenten in der Ausführungsform der 3 gezeigt werden, ist dies so zu verstehen, dass der Umfang dieser Erfindung nicht dergestalt eingeschränkt ist und dass in verschiedenen Ausführungsformen zusätzliche oder andere Komponenten vorhanden sein können.
-
Außerdem ist zu verstehen, dass auch wenn die SoC-Ausführung in der 3 als ein einziger Chip gezeigt wird, weitere Ausführungsformen in einem System eingefügt werden können, bei dem viele Chips miteinander über eine nicht-IOSF-Schnittstelle miteinander kommunizieren. Was nun die 4 betrifft, so wird hier ein Block-Diagramm eines Systems gezeigt, das einer anderen Ausführungsform dieser Erfindung entspricht. Wie in 4 gezeigt, kann das System auch eine SoC 200' umfassen, welche viele Komponenten enthalten kann, die denen ähnlich sind, wie sie vorstehend in Bezug auf 3 erläutert wurden, und eine zusätzliche 275er Schnittstelle außerhalb des Chips. Entsprechend kann die SoC 200' mit einem anderen 280er Chip kommunizieren, der verschiedene Funktionen aufweisen kann, wie etwa Peripheriefunktionen, die einer oder mehreren verschiedenen Spezifikationen entsprechen. Insbesondere wird ein zweiter 280er Chip gezeigt, der eine 282er Schnittstelle außerhalb des Chips enthält, um eine Kommunikation mit der SoC 200' zu ermöglichen, und die wiederum mit einer 290er Matrix kommuniziert, die eine IOSF-Matrix sein kann, die einer Ausführungsform dieser Erfindung entspricht. Wie gezeigt, kann die Matrix 290 außerdem mit verschiedenen Controllern gekoppelt werden, die mit Bausteinen außerhalb des Chips in Kommunikation stehen, einschließlich eines 292er PCIeTM-Controllers, eines 294er USB-Controllers und einer 296er Brücke.
-
Eine Methode zur Weitergabe von Fehlermeldungen ist die Fehlermeldung über mehrere Hardware- und Softwarechips. Wieder Bezug nehmen auf 3 liest der Kern 205n die Stelle X im Speicher 285 ab (z. B. DDR SDRAM). Der Kern 205n erwartet vielleicht Daten von Z. Der Speicher 285 kann aber einen Fehler haben und einen falschen Speicherinhalt weitergeben, wie etwa Y-Daten an den Kern 205. Die Daten Y können korrupt sein, vom falschen Datentyp und ähnliches sein. Der Kern 205n kann einen Fehler feststellen (z. B. Zustandsfehler) und diesen Fehler markieren. Die Softwareschicht in einem Betriebssystem(Operating-System – OS), bekannt als „Fehlerprogramm”, kann dann eingeschaltet werden. Ein Fehlerprogramm umfasst Konstrukte aus Programmiersprache oder Mechanismen der Computer-Hardware, die dazu entworfen sind, das Auftreten von Störfällen zu beheben, die den normalen Fluss der Durchführung des Programms ändern. Die Fehlerbehebung kann Maßnahmen ergreifen, die zu einer doppelten oder dreifachen Störabschaltung führen, wenn zum Beispiel der Speicherblock 285 weiterhin korrupte Daten an den Kern 205n weiter gibt. Dieser Fehler kann zu einer Kernel-Panik, einem blauen Bildschirm oder einem Abschalten des Users führen.
-
Eine doppelte Fehlermeldung kann vorkommen, wenn der Prozessor ein Problem hat, während er versucht, eine bestehende Unterbrechung oder eine Ausnahmel zu beheben. Ein Beispiel für eine Situation, in der ein doppelter Fehler auftreten kann, ist die, wenn ein Interrupt ausgelöst wird, das Segment aber, in dem sich der Interrupt-Handler befindet, ungültig ist. Zum Beispiel kann der Interrupt-Handler auf einer falschen Position X auf dem Speicher 285 platziert sein. Wenn der Prozessor ein Problem hat, sobald er den Double-Fault-Handler anruft, erfolgt eine dritte Fehlermeldung und der Prozessor schaltet sich ab. Manche Prozessoren können Zustandsinformationen auf vordefinierten und dafür vorbehaltenen Registern des Geräts speichern. Ein doppelter Fehler kann in diesem Fall eine Situation sein, in der ein anderer Ausnahmefall eintritt, währen der Prozessor immer noch den Inhalt dieser Register nutzt, um den ersten Ausnahmefall zu beheben.
-
Ein dreifacher Fehler kann eine Ausnahme sein, die von einem Prozessor erstellt wird, wenn eine Ausnahme auftritt, während der Prozessor versucht, die Fehlerbehebung für den Doppelfehler laufen zu lassen, welche selber wiederum Ausnahmen behandelt, während sie versucht, eine reguläre Fehlerbehebungsstelle einzuschalten. Die Prozessoren können einen Abschaltzyklus in Gang setzen, wenn ein Dreifachfehler auftritt. Dadurch kann die Hardware veranlasst werden, ein Prozessor-Reset durchzuführen, welches wiederum einen Neustart des gesamten Computersystems, zu dem auch der Prozessor zählt, veranlassen kann.
-
Eine Kernel-Panik, ein „blauer Bildschirm” und ähnliches sind verschiedene Begriffe für Maßnahmen, die von verschiedenen Betriebssystemen ergriffen werden, sobald sie einen internen fatalen Fehler festgestellt haben, den sie nicht sicher beheben können. Die Kernel-Routinemassnahmen, die bei Panik ergriffen werden, sind im allgemeinen so ausgelegt, dass sie eine Fehlermeldung an das Schaltpult geben, ein Bild des Kernel-Speichers an die Festplatte absetzeb, damit post mortem eine Fehlersuche gemacht werden kann, und dann entweder abwarten, dass das System von Hand wieder startet, oder einen automatischen Neustart veranlassen. Um dann den Fehler auf der Ebene des Systems „zurück zu verfolgen”, braucht es eventuell zusätzliche Hardware, um einen für einen User sichtbaren Fehler bis zu dem Stadium aufzuspüren, in dem der ursprüngliche Fehler der Hardware aufgetreten ist.
-
In manchen Instanzen lässt sich eine Korruption des Speichers nur dann aufspüren, wenn zum Beispiel die Caches (z. B. Cache 210 in 3) aufleuchten oder eine wbinvd-Anweisung (Write Back and Invalidate Cache) befolgt wird.
-
Allerdings wird in einer Ausführungsform die Fehlererkennung beschleunigt. Dies kann aufgrund zumindest einer teilweisen Weiterleitung von Matrix(z. B. IOSF)-Fehlern erfolgen. Dies kann bei einer Bereichs-SOC mit mehreren Uhren auftreten. Die Ausführungsform kann einen Prozessorfehler (z. B. Hardware-Fehler oder Ausfall) relativ zeitnah nach dem Zeitpunkt, zu dem dem der Fehler auf dem matrixbasierten SoC-System aufgetreten ist, aufspüren und markieren.
-
Noch einmal zu 3: der Kern 205n kann zum Beispiel die Platzierung X im Speicher 285 lesen. Der Kern 205n wartet vielleicht auf die Daten Z. Der Speicher 285 kann aber einen Ausfall haben und nicht korrekte Angaben aus dem Speicher an den Kern 205 zurückschicken, wie etwa die Daten Y. Die Daten Y sind vielleicht korrupt, sind vom falschen Datentyp oder Ähnliches.
-
Der Kern 205n kann einen Fehler entdecken (z. B. eine Fehlerbedingung) und diesen Fehler markieren. Der Kern 205 hat vielleicht Hardware, um den Defekt/die Ausnahmen zu entdecken. Zum Beispiel können der „Front-End-Cluster”, der „Integer Execution Cluster” und/oder der „Memory Execution Cluster” mit einem Intel®AtomTM verschiedene Arten von anweisungsbasierten oder auf externen Ereignissen basierten Fehlern feststellen.
-
Nach Feststellung eines Fehlers kann es aber vorkommen, dass eine Ausführungsform, statt einfach nur ein Fehlerprogramm anzurufen, ein Fehlerprotokoll erstellt (z. B. unter Verwendung des Kerns), und dass ein Mikrocode (z. B. ein Prozessor-Mikrocode angekoppelt an den Kern 205n) eine entsprechende matrixbasierte Nachricht herausgibt. In einer Ausführungsform besteht die Matrixnachricht aus einer Bestimmungs-ID, einer Quell-ID, der Message-Payload und der Daten-Payload. Die Quell-ID kann sich auf den Prozessor 205n beziehen und die Bestimmungs-ID kann sich auf irgendeinen IP-Agent wie etwa den Agent 255 beziehen. Die Message kann auch einen hexadezimalen Opcode wie etwa O×F2, O×F4 und ähnliche umfassen und die Daten-Payload kann zum Beispiel 0×0 beinhalten.
-
Der Kern 205n kann die matrixbasierte Message über die Systemmatrix 250, die im SOC-System 200 enthalten ist, an den IP-Agent 255 weitergeben. Die IP-Blöcke sind miteinander verbunden und verwenden gemeinsam zum Beispiel das IOSF-Protokoll. Derartige IP-Blöcke könne verschiedener Art sein, einschliesslich Prozessoren zu allgemeinen Zwecken wie etwa gereihte oder ungereihte Kerne, Power-Management-Controller(PMC)/Power Management Unit (PMU), Units mit festen Funktionen, Prozessoren für Graphiken, IO-Controller, Display-Controller, Medienprozessoren, Power Management Controller neben vielen anderen.
-
Der PMC (auch PMU genannt) kann einen Mikrocontroller enthalten, der die Energiefunktionen der digitalen Plattformen überwacht (z. B. System 200). Dieser Mikrocontroller kann Firmware, Software, einen Speicher, einen Prozessoren oder einen Controller, Input-/Output-Funktionen, Zeituhren, um die Zeitintervalle zu messen, als auch analoge oder digitale Converter zur Messung der Spannung der Hauptbatterie oder Energiequelle des Computers umfassen. Die PMU kann die Strom verbrauchenden Funktionen im System 200 kontrollieren, Diagnosen zu verschiedenen Operationen in Verbindung mit der Energie anstellen und diese Diagnosen mit den Einstellungen im Bereich Strom abgleichen, um es dem PMC zu ermöglichen, den Stromverbrauch aktiv zu managen.
-
Basierend auf dem Eingang der Nachricht können die IP-Agents (z. B. PMC oder IP-Block 255) Maßnahmen ergreifen, wie zum Beispiel das An-/Abschalten von Chip-Pins, wie etwa einem Pin General Purpose Input/Output (GPIO) (der an eine Leuchtdiode (LED) angeschlossen werden kann, womit eine für einen User sichtbare Message erzeugt wird), das Anhalten der Uhr in einem Bereich mit mehreren Uhren, womit ein Interrupt an den Prozessor 205n weitergegeben wird, was zu einem Interrupt aufgrund einer Bildschirmmessage führt und/oder verschiedenen vom User definierten Aktionen, die den User auf den Fehler und die Fehlerquelle hinweisen kann.
-
Auch wenn hier der Kern 205n verwendet wird, um zum Beispiel einen Fehler aufzuspüren, eine Nachricht zu erstellen und eine Nachricht zu versenden (siehe vorstehend), merken Sie bitte an, dass diese Aufgaben auch von anderen Kernen (z. B. Kern 205 o) oder einer Kombination von Kernen (z. B. 205 o und 205n) übernommen werden können und dass immer noch behauptet werden kann, dass sie von einem Prozessor durchgeführt wurden (wenn auch von einem mit verschiedenen Kernen).
-
Die 6 zeigt auch ein Beispiel eines Pseudocodes für die Nachrichtenverarbeitung durch einen Prozessor wie vorstehend beschrieben.
-
Die 5 ist ein schematisches Flussdiagramm für die Verarbeitung von Fehlermeldungen in einer Ausführungsform der Erfindung. Ein solches Verfahren erlaubt es, einen Fehler relativ schnell nach dem Auftreten aufzuspüren, und hängt nicht vom System für das Abschalten zum Aufspüren durch den User ab (oder von anderen sichtbaren Symptomen, wie einem „Blue Screen” oder einer Kernel-Panik, bei denen sehr viel Zeit vergeht, bevor der Fehler vom User festgestellt wird). Ein solches Verfahren stellt die Fehler beinahe zeitgleich beim Auftreten fest. In einer Ausführungsform verwendet das Verfahren einen Prozessor-Mikrocode, um eine IOSF-Seitenbandnachricht herauszugeben, um den Systemfehler abzurufen.
-
Der Block 505 des Verfahrens 500 beinhaltet einen Prozessor (Kerne 205, 205n), auf dem ersten Chip, der einen ersten Fehler feststellt. Die Hardware, wie etwa die AtomTM-Prozessoren „FrontEnd Cluster”, „Integer Execution Cluster” und/oder „Memory Execution Cluster”, kann diese Suche erleichtern. Der Fehler kann zum Beispiel in einer Korruption des Speichers bestehen.
-
Im Block 510 formuliert der Prozessor eine erste Fehlermeldung basierend auf dem ersten festgestellten Fehler. Wie vorstehend angemerkt, kann der erste Fehler zum Beispiel bei der Bestimmungs-ID, der Quell-ID, der Nachrichten-Payload und der Daten-Payload auftreten.
-
Im Block 515 kann der Prozessor die erste Fehlermeldung über eine erste Matrix (z. B. die Matrix 250), die sich auf dem ersten Chip befindet, an einen ersten IP-Agent (IP-Block 255) weiterleiten. Der erste IP-Agent kann zum Beispiel einen Graphikprozessor, einen IO-Controller, einen Display-Controller, einen Mediaprozessoren und einen PMC beinhalten. Die „Weiterleitung” kann mittels einer Seitenbandnachricht erfolgen. Außerdem kann sich der erste IP-Agent (in manchen Ausführungsformen) auf demselben Chip befinden wie der Prozessor. Die Nachricht kann dem IP-Agent über eine erste Seitenband-Schnittstelle (z. B. eine Seitenband-Schnittstellen-Matrix 116 in 2), die sich im Prozessor befindet, und eine zweite Seitenband-Schnittstelle (z. B. die Seitenband-Schnittstelle 144 des IP-Agenten 140 in 2), die sich auf dem ersten IP-Agent befindet, weitergeleitet werden. Die Seitenband-Schnittstellen wie auch die Nachricht selbst können den Matrix-Spezifikationen (z. B. der IOSF) entsprechen.
-
Zu dieser Weiterleitung kann auch die Weiterleitung der ersten Fehlermeldung direkt von der Matrix zum ersten IP-Agent zählen. Bei nicht-matrix-basierten Systemen (z. B. konventionellen gängigen CPU-Anordnungen) gibt es eventuell keinen direkten Kommunikationsweg beispielsweise zum Südkomplex der CPU. Trotzdem können eine matrix-basierte Matrix-System-Seitenband-Nachrichten-Kommunikation und eine Weitergabe von Matrixfehlern verwendet werden, um eine Fehlersuche zu starten. Damit wird der Schaltkreis verkleinert, der notwendig ist, um einen Fehler „zurück zu verfolgen”.
-
In Block 520 gibt der ersten IP-Agent eine zweite Fehlermeldung auf der Grundlage der ersten Fehlermeldung aus. Diese zweite Nachricht kann unabhängig von allen Nachrichten der Fehlerbehebung im Betriebssystem weitergeleitet werden. Zum Beispiel kann die zweite Nachricht unabhängig davon erstellt und weitergeleitet werden, ob eine Fehlerbehebungsstelle angerufen wurde oder nicht. Die zweite Fehlermeldung kann direkt oder indirekt einige vom User definierte Maßnahmen ergreifen, um den Fehler festzustellen, wie etwa zum Beispiel einen GPIO-Pin bedienen, der an ein LED gekoppelt ist, um einen User auf den Fehler hinzuweisen. Als anderes Beispiel kann ein PMU, das in IP-Block 255 inbegriffen ist, so programmiert werden, dass es auf eine Seitenband-Nachricht vom Kern 205n antwortet, um jeden Fehler auf Systemebene zu Protokollen und aufzuspüren.
-
In einer Ausführungsart erstellt der Prozessor in Block 530 (markiert mit den gestrichelten Linien, um den Block als Alternative oder zusätzliche Möglichkeit zu dem in durchgehenden Linien dargestellten Weg darzustellen), nachdem er einen anderen Fehler oder möglicherweise denselben Fehler in Block 505 festgestellt hat, eine dritte Fehlermeldung. Die dritte Fehlermeldung kann eine ähnliche Formgebung haben wie die Nachricht des Blocks 510. Im Block 535 leitet der Prozessor die dritte Fehlermeldung über die erste Matrix, die sich auf dem ersten Chip befindet, an eine zweite Matrix weiter, die sich auf dem zweiten Chip befindet. Die zweite Matrix und die erste Matrix entsprechen beide einer IOSF-Norm. Siehe als Beispiel die Matrix 250 und die Matrix 290 der 4.
-
Wenn sie in diesem Rahmen verwendet werden, können ein Prozessor oder ein Controller eine Steuerungslogik aufweisen, die darauf ausgelegt ist, jede in diesem Fachbereich bekannte Steuerungslogik aus einem breiten Fächer darzustellen, und die als solche als Mikroprozessor, integrierter Schaltkreis (ASIC), programmierbare Logik-Schaltung (PLD) und ähnliches eingesetzt werden kann. Ein Prozessor kann Zugriff auf jede Schaltung oder jeden Teil einer Schaltung nehmen, die elektronische Daten aus den Registern und/oder dem Speicher verarbeitet, um diese elektronischen Daten in andere elektronische Daten umzuwandeln, die sich in Registern und/oder im Speicher abspeichern lassen. Ein Prozessor kann dezentralisiert sein, verschiedene Kerne enthalten und Ähnliches. Zum Beispiel können die verschiedenen Teile der 5 von verschiedenen Kernen eines Prozessors gesteuert werden.
-
So enthält eine Ausführungsform eine SoC, die auf einer Matrix (z. B. einer IOSF-Matrix) basiert, als Schnittstelle zwischen den Blocks. Die vorgenannten Ausführungsformen können es einem System ermöglichen, Hardware-Fehler festzustellen, die durch den Prozessor (z. B. CPU) verursacht werden, indem eine matrixbasierte Fehlerweiterleitung verwendet wird.
-
Die Ausführungsformen können als Code umgesetzt werden und auf einem Speichermedium gespeichert werden, auf sich die Anleitungen befinden, die verwendet werden können, um ein System so zu programmieren, das die Anweisungen umsetzt. Das Speichermedium kann auch, aber nicht nur, jede Art von Diskette, auch Floppy-Disks, optische Disks, Solid State Drives (SSDs), Compact Disk Read-Only Memories (CD-ROMs), Compact Disk Rewritables (DC-RWs) und Magneto-Optical Disks, Halbleitervorrichtungen wie etwa Read-Only-Memories (ROMs), Random Access Memories (RAMs) wie etwa Dynamic Random Access Memories (DRAMs), Static Random Access Memories (EPROMs), Flash Memories, Electrically Erasable Programmable Read-Only Memories (EEPROMs), Magnet- oder optische Karten oder jede andere Art von Medien, die sich für die Speicherung elektronischer Anweisungen eignen, weitergeleitet werden.
-
Die Ausführungsformen der Erfindung lassen sich hier unter Bezugnahme auf die Daten wie etwa Anweisungen, Funktionen, Verfahren, Datenstrukturen, Anwendungsprogramme, Konfigurationseinstellungen, Codes etc. beschreiben. Wenn ein Gerät auf die Daten zugreift, kann das Gerät reagieren, indem es Aufgaben durchführt, abstrakte Datentypen definiert, hardwarenahe Kontexte erstellt und/oder andere Operationen durchführt, wie sie nachstehend detailliert dargestellt werden. Die Daten können in einem flüchtigen und/oder nichtflüchtigen Datenspeicher gespeichert werden. Zum Zwecke dieser Patentanmeldung decken die Begriffe „Code” oder „Programm” eine große Vielzahl von Komponenten und Konstrukten ab, auch Anwendungen, Treiber, Prozesse, routinemäßige Aufgaben, Methode, Module und Unterprogramme. Somit können die Begriffe „Code” oder „Programm” verwendet werden, um jede Anweisungsreihe zu bezeichnen, die, wenn sie von einem Verarbeitungsprogramm durchgeführt werden, die gewünschte Operation oder die gewünschten Operationen durchführt. Außerdem können alternative Ausführungsformen auch Verfahren beinhalten, die nicht alle der angemeldeten Operationen verwenden, Verfahren, die zusätzliche Operationen verwenden, Verfahren, die dieselben Operationen in einer anderen Abfolge verwenden, und Verfahren verwenden, bei denen die einzelnen hier angemeldeten Operationen kombiniert, unterteilt oder anders abgeändert sind.
-
Obwohl diese Erfindung in Hinblick auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, werden Fachleute die zahlreichen Änderungen und Variationen davon zu schätzen wissen. Beabsichtigt ist, dass die anliegenden Ansprüche alle Änderungen und Variationen abdecken sollen, die dem eigentlichen Geist dieser Erfindung entsprechen.