DE102016200514A1 - Verfahren und Vorrichtungen für gesteuerte Wiederherstellung von Fehlerinformationen zwischen unabhängig voneinander betreibbaren Prozessoren - Google Patents

Verfahren und Vorrichtungen für gesteuerte Wiederherstellung von Fehlerinformationen zwischen unabhängig voneinander betreibbaren Prozessoren Download PDF

Info

Publication number
DE102016200514A1
DE102016200514A1 DE102016200514.6A DE102016200514A DE102016200514A1 DE 102016200514 A1 DE102016200514 A1 DE 102016200514A1 DE 102016200514 A DE102016200514 A DE 102016200514A DE 102016200514 A1 DE102016200514 A1 DE 102016200514A1
Authority
DE
Germany
Prior art keywords
processor
error information
pcie
error
independently operable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE102016200514.6A
Other languages
English (en)
Other versions
DE102016200514B4 (de
Inventor
Karan Sanghi
Saurabh Garg
Vladislav Petkov
Haining Zhang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of DE102016200514A1 publication Critical patent/DE102016200514A1/de
Application granted granted Critical
Publication of DE102016200514B4 publication Critical patent/DE102016200514B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0712Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Retry When Errors Occur (AREA)

Abstract

Verfahren und Vorrichtungen für gesteuerte Wiederherstellung von Fehlerinformationen zwischen zwei (oder mehr) unabhängig voneinander betreibbaren Prozessoren. Die vorliegende Offenbarung stellt Lösungen bereit, die Fehlerinformationen im Falle eines fatalen Fehlers erhalten, Zurücksetzbedingungen zwischen unabhängig voneinander betreibbaren Prozessoren koordinieren und einheitliche Frameworks für Fehlerinformationswiederherstellung für einen Bereich möglicher fataler Fehler implementieren. In einer beispielhaften Ausführungsform implementieren ein Anwendungsprozessor (AP) und ein Basisbandprozessor (BB) eine Abbruchabwickler- und Ausschaltabwicklersequenz, welche Fehlerwiederherstellung für einen großen Bereich von Absturzszenerien ermöglichen. In einer Variante ermöglicht es das Aufschalten von Signalen zwischen dem AP und dem BB dem AP, den BB erst zurückzusetzen nachdem Fehlerwiederherstellungsverfahren erfolgreich abgeschlossen worden sind.

Description

  • Prioritätsanmeldungen
  • Diese Anmeldung beansprucht den Vorteil der Priorität der gemeinschaftlich besessenen und gemeinschaftlich anhängigen US Patentanmeldung Serien-Nr. 14/870,923 mit demselben Titel, eingereicht am 30. September 2015; die den Vorteil der Priorität der gemeinschaftlich besessenen und gemeinschaftlich anhängigen vorläufigen US Patentanmeldung Serien-Nr. 62/112,061 mit demselben Titel, eingereicht am 04. Februar 2015, beansprucht, wobei jede der vorangegangen hierin durch Verweis in ihrer Gesamtheit aufgenommen ist.
  • Verwandte Anmeldungen
  • Diese Anmeldung bezieht sich ebenso auf die gemeinschaftlich besessene und gemeinschaftlich anhängige vorläufige US Patentanmeldung Serien-Nr. 61/061,605 mit dem Titel „METHODS AND APPARATUS FOR AN INTER-PROCESSOR COMMUNICATION LINK BETWEEN INDEPENDENTLY OPERABLE PROCESSORS” (Verfahren und Vorrichtung für eine Interprozessorkommunikationsverbindung zwischen unabhängig voneinander steuerbaren Prozessoren), eingereicht am 08. Oktober 2014, wobei das Vorangegangene hierin durch Verweis in seiner Gesamtheit aufgenommen ist.
  • Hintergrund
  • 1. Technisches Gebiet
  • Die Offenbarung bezieht sich im Allgemeinen auf das Gebiet von elektronischen Verbrauchervorrichtungen sowie Netzwerke davon. Genauer ist in einem beispielhaften Aspekt die Offenbarung auf Verfahren und Vorrichtungen für gesteuerte Wiederherstellung von Fehlerinformationen zwischen zwei (oder mehreren) unabhängig voneinander betreibbaren Prozessoren gerichtet. Verschiedene Aspekte der vorliegenden Offenbarung sind zum Beispiel auf das Erhalten von Fehlerinformationen im Falle eines fatalen Fehlers, ein Koordinieren von Rücksetzbedingungen zwischen unabhängig voneinander betreibbaren Prozessoren und ein Implementieren einheitlicher Frameworks für Fehlerinformationswiederherstellung für einen Bereich möglicher fataler Fehler gerichtet.
  • Zusammenfassung
  • Die vorliegende Offenbarung befriedigt die vorangegangenen Bedürfnisse unter anderem durch Bereitstellen von Verfahren und Vorrichtungen für gesteuerte Wiederherstellung von Fehlerinformationen zwischen zwei (oder mehreren) unabhängig voneinander betreibbaren Prozessoren.
  • In einem Aspekt wird ein Verfahren für gesteuerte Wiederherstellung von Fehlerinformationen zwischen zwei oder mehr unabhängig voneinander betreibbaren Prozessoren offenbart. In einer Ausführungsform beinhaltet das Verfahren: Erkennen eines Absturzereignisses bei einem der zwei oder mehr unabhängig betreibbaren Prozessoren; Aufschalten eines ersten Signals, wobei das erste Signal angibt, dass das Absturzereignis aufgetreten ist; Ausführen von einem oder mehreren Fehlerwiederherstellungsverfahren, um eine oder mehrere Fehlerinformationen zu sammeln; und, wenn das eine oder die mehreren Fehlerwiederherstellungsverfahren erfolgreich abgeschlossen sind, Aufschalten eines zweiten Signals, wobei das zweite Signal angibt, dass das eine oder die mehreren Fehlerwiederherstellungsverfahren erfolgreich abgeschlossen worden sind.
  • In einer Variante beinhaltet das Verfahren: Empfangen der gesammelten einen oder der mehreren Fehlerinformationen bei einem zweiten Prozessor der zwei oder mehr unabhängig voneinander betreibbaren Prozessoren in Antwort auf das Aufschalten des zweiten Signals.
  • In einer zweiten Variante in Antwort auf das Aufschalten des zweiten Signals, das angibt, dass das eine oder die mehreren Fehlerwiederherstellungsverfahren erfolgreich abgeschlossen worden sind, beinhaltet das Verfahren ein Warten darauf, ein drittes Signal der zwei oder mehr unabhängig voneinander betreibbaren Prozessoren zu empfangen, wobei das dritte Signal eingerichtet ist, um den einen der zwei oder mehr unabhängig voneinander betreibbaren Prozessoren, bei dem das Absturzereignis aufgetreten ist, zurückzusetzen.
  • In einer dritten Variante beinhalten mindestens zwei der zwei oder mehr unabhängig voneinander betreibbaren Prozessoren eine Bus-Schnittstelle und das Verfahren beinhaltet weiter ein Kommunizieren über die Bus-Schnittstelle in Übereinstimmung mit einem Peripheral Component Interconnect Express-(PCIe)Standard. In einem solchen Fall beinhaltet das Verfahren weiter: Überprüfen eines Zustands einer PCIe-Verbindung; und, wenn ein PCIe-Bus aktiv ist, Benennen des PCIe-Bus.
  • In einer vierten Variante beinhalten die Handlungen des Aufschaltens des ersten und des zweiten Signals ein Aufschalten über einen Allgemeinzweckeingang/-ausgang (General Purpose Input/Output, GPIO).
  • In einer fünften Variante, wenn das Absturzereignis erkannt worden ist, beinhaltet das Verfahren ein Abschließen einer oder mehrerer anhängiger Eingabe-/Ausgabetransaktionen vor der Handlung des Aufschaltens des ersten Signals.
  • In einem zweiten Aspekt der vorliegenden Offenbarung wird ein Verfahren zum Speichern von Fehlerinformationen zwischen zwei oder mehr unabhängig voneinander betreibbaren Prozessoren offenbart. In einer Ausführungsform beinhaltet das Verfahren: Aktivieren eines Hardware-Sicherheitsmechanismus, der eingerichtet ist, um Absturzereignisse bei einem der zwei oder mehr unabhängig voneinander betreibbaren Prozessoren zu beobachten; angeben, dass das Absturzereignis aufgetreten ist; Einleiten von einem oder mehreren Fehlerwiederherstellungsverfahren, um Fehlerinformationen zu speichern; und, wenn die Fehlerinformationen gespeichert worden sind, angeben, dass das eine oder die mehreren Fehlerwiederherstellungsverfahren erfolgreich abgeschlossen worden sind.
  • In einer Variante, wenn das eine oder die mehreren Fehlerwiederherstellungsverfahren erfolgreich abgeschlossen worden sind, beinhaltet das Verfahren weiter ein Deaktivieren des Hardware-Sicherheitsmechanismus.
  • In einer zweiten Variante beinhaltet das Verfahren weiter ein Analysieren der gespeicherten Fehlerinformationen.
  • In einer dritten Variante, wenn eine oder mehrere Bus-Transaktionen anhängig sind, beinhaltet das Verfahren weiter ein Auflösen der einen oder der mehreren Bus-Transaktionen.
  • In einer vierten Variante beinhaltet die Handlung des Auflösens der einen oder der mehreren Bus-Transaktionen ein Übertragen aller verbleibenden Inhalte eines Übertragungspuffers.
  • In einer fünften Variante beinhaltet die Handlung des Auflösens der einen oder der mehreren Bus-Transaktionen ein Abbrechen der einen oder der mehreren Bus-Transaktionen.
  • In einem dritten Aspekt wird ein computergesteuertes System offenbart, das eingerichtet ist, um Fehlerinformationen zwischen dem einen oder den mehreren unabhängig voneinander betreibbaren Prozessoren wiederherzustellen. In einer Ausführungsform beinhaltet das System: eine Bus-Schnittstelle; einen ersten unabhängig betreibbaren Prozessor; und einen zweiten unabhängig betreibbaren Prozessor in Datenkommunikation mit dem ersten Prozessor über die Bus-Schnittstelle, wobei der zweite Prozessor eine Vielzahl computerlesbarer Anweisungen beinhaltet. In einer solchen beispielshaften Ausführungsform veranlasst die Vielzahl von computerlesbaren Anweisungen, wenn sie durch den zweiten Prozessor ausgeführt wird, den zweiten Prozessor, um: ein Absturzereignis zu erkennen; ein erstes Signal aufzuschalten, das eingerichtet ist, um dem ersten Prozessor gegenüber anzugeben, dass das Absturzereignis aufgetreten ist, ein oder mehrere Fehlerwiederherstellungsverfahren durchzuführen, um eine oder mehrere Fehlerinformationen zu sammeln; und, wenn das eine oder die mehreren Fehlerwiederherstellungsverfahren erfolgreich abgeschlossen worden sind, ein zweites Signal aufzuschalten, das eingerichtet ist, um dem ersten Prozessor gegenüber anzugeben, dass das eine oder die mehreren Fehlerwiederherstellungsverfahren erfolgreich abgeschlossen worden sind.
  • In einer ersten Variante, in Antwort auf das Aufschalten des zweiten Signals durch den zweiten Prozessor, ist der erste Prozessor eingerichtet, um die eine oder die mehreren Fehlerinformationen abzurufen.
  • In einer zweiten Variante in Antwort auf das Aufschalten des zweiten Signals durch den zweiten Prozessor, ist der erste Prozessor eingerichtet, um die Bus-Schnittstelle zu deaktivieren und den zweiten Prozessor zurückzusetzen.
  • In einer dritten Variante beinhaltet der erste Prozessor einen Anwendungsprozessor und der zweite Prozessor beinhaltet einen Basisbandprozessor.
  • In einer vierten Variante beinhaltet die Bus-Schnittstelle einen Peripheral Component Interconnect Express-(PCIe)Bus.
  • In einer fünften Variante beinhaltet der zweite Prozessor einen Abbruchabwickler.
  • In einem vierten Aspekt wird eine Vorrichtung offenbart, die eingerichtet ist, um Fehlerinformationen zwischen zwei oder mehr unabhängig voneinander betreibbaren Prozessoren zu speichern. In einer Ausführungsform beinhaltet die Vorrichtung: eine physische Bus-Schnittstelle, die eingerichtet ist, um einen ersten Prozessor mit einem zweiten Prozessor zu koppeln; und ein computerlesbares Medium, das eine Vielzahl von Anweisungen beinhaltet. In einer beispielhaften Ausführungsform veranlasst das computerlesbare Medium, wenn es durch den zweiten Prozessor ausgeführt wird, den zweiten Prozessor: einen Hardwaresicherheitsmechanismus zu aktivieren, der eingerichtet ist, um ein Absturzereignis bei dem zweiten Prozessor zu beobachten; dem ersten Prozessor gegenüber anzugeben, dass das Absturzereignis aufgetreten ist; ein oder mehrere Fehlerwiederherstellungsverfahren einzuleiten, um Fehlerinformationen zu speichern; und wenn die Fehlerinformationen gespeichert worden sind, dem ersten Prozessor gegenüber anzugeben, dass das eine oder die mehreren Fehlerwiederherstellungsverfahren erfolgreich abgeschlossen worden sind.
  • In einer Variante ist die Vielzahl von Anweisungen weiter eingerichtet, wenn sie ausgeführt wird, in eine Schleife überzugehen, um auf weitere Anweisungen zu warten, wenn das eine oder die mehreren Fehlerwiederherstellungsverfahren erfolgreich abgeschlossen worden sind. In einem solchen Fall ist die Vielzahl von Anweisungen weiter eingerichtet, wenn sie ausgeführt wird, ein Zurücksetzen des zweiten Prozessors zu veranlassen.
  • In einer anderen Variante ist die Vielzahl von Anweisungen weiter eingerichtet, wenn sie ausgeführt wird, ausstehende Bus-Transaktionen vor der Aktivierung des Hardware-Sicherheitsmechanismus abzuschließen.
  • Andere Merkmale und Vorteile der vorliegenden Offenbarung werden vom Fachmann sofort erkannt werden mit Bezug zu den angehängten Zeichnungen und der detaillierten Beschreibung beispielhafter Ausführungsformen, wie nachfolgend dargelegt.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein logisches Blockdiagramm, das eine beispielhafte Vorrichtung darstellt, die zum Veranschaulichen verschiedener Prinzipien, die hierin beschrieben werden, nützlich ist.
  • 2 ist ein logisches Blockdiagramm, das eine beispielhafte, physische Bus-Schnittstelle darstellt, die zur Veranschaulichung verschiedener Prinzipien, die hierin beschrieben werden, nützlich ist.
  • 3 ist ein logisches Flussdiagramm eines beispielhaften Verfahrens zum Abwickeln einer Abbruchsequenz in Übereinstimmung mit den Prinzipien der vorliegenden Offenbarung.
  • 4 ist ein logisches Flussdiagramm eines beispielhaften Verfahrens zum Abwickeln einer Ausschaltsequenz in Übereinstimmung mit den Prinzipien der vorliegenden Offenbarung.
  • 5 ist ein logisches Flussdiagramm eines logischen Leiterdiagramms, welches ein Fehlerwiederherstellungsverfahren in Übereinstimmung mit den Prinzipien der vorliegenden Offenbarung darstellt.
  • Alle Figuren © Copyright 2015 Apple Inc. Alle Rechte vorbehalten.
  • Detaillierte Beschreibung
  • Nun wird Bezug auf die Zeichnungen genommen, wobei ähnliche Bezugszeichen sich überall auf ähnliche Teile beziehen.
  • Detaillierte Beschreibung beispielhafter Ausführungsformen
  • Beispielhafte Ausführungsformen der vorliegenden Offenbarung werden nun im Detail beschrieben. Während diese Ausführungsformen primär im Kontext des Peripheral Component Interconnect Express-(PCIe)Standards (wie er zum Beispiel in „PCI Express Base Specification Revision 3.1", veröffentlicht am 08. Oktober 2014, beschrieben wird) besprochen werden, wird der Fachmann erkennen, dass die vorliegende Offenbarung nicht auf diese Weise beschränkt ist. Tatsächlich sind die zahlreichen Aspekte der Offenbarung in irgendeiner Vorrichtung oder einem Netzwerk von Vorrichtungen nützlich, die (das) eingerichtet ist, um mehrere unabhängige Verarbeitungselemente aufzunehmen und zu koordinieren, wie es hierin offenbart wird.
  • Während die folgenden Ausführungsformen spezifische Implementierungen von zum Beispiel Fehlerinformationen, Kommunikationsprotokollen zwischen unabhängig voneinander betreibbaren Prozessoren und einheitliche Frameworks für Fehlerwiederherstellung für einen Bereich möglicher fataler Fehler beschreiben, wird der Fachmann sogleich verstehen, dass solche Beschreibungen nur veranschaulichend für die breiteren hierin beschriebenen Prinzipien sind.
  • Beispielhafte unabhängige Prozessorhandlung –
  • Historisch wurden die meisten Rechenvorrichtungen gemäß dem Personalcomputer(PC)-Paradigma entworfen, wobei ein einzelner Prozessor hauptsächlich für das Verwalten von Softwareausführung verantwortlich ist. Jedoch haben sich Rechenvorrichtungen erheblich weiterentwickelt, um sich einem diversen Ökosystem von Entwürfen und Verwendungen anzupassen; zusätzlich sind Prozessortechnologien verbessert worden, wodurch sie erhebliche Rechenleistung fast bei Preisen für Gebrauchsgegenstände anbieten. Innerhalb des Kontexts von Verbraucherelektronik (z. B. persönliche drahtlose Vorrichtungen (wie zum Beispiel iPhone), persönliche Medienvorrichtungen (wie z. B. iPad/iPod) und persönliche Computer (wie z. B. das MacBook Pro und das MacBook Air)), haben zahlreiche Überlegungen zu Entwürfen geführt, in denen mehrere unabhängige Prozessorhandlungen verwendet werden.
  • Zum Beispiel wird in typischen drahtlosen Vorrichtungen ein Anwendungsprozessor (AP) unabhängig von einem drahtlosen Basisbandmodemprozessor (BB) betrieben. Während des normalen Betriebs kann die drahtlose Vorrichtung wahlweise einen oder beide von dem AP und dem BB verwenden, abhängig von der jeweiligen Anwendung. Wenn entweder der AP oder der BB sich nicht in aktiver Verwendung (oder in Vorbereitung für Verwendung usw.) befindet, wird der Prozessor in den Ruhezustand versetzt, um so den Leistungsverbrauch zu reduzieren usw. Begrifflich ähnliche Entwurfsparadigmen werden für Medienvorrichtungen (in denen der Medienprozessor von einem Anwendungsprozessor unabhängig ist) verwendet usw.
  • Leider wurden Koordinationshandlungen zwischen mehreren unabhängigen Prozessoren größtenteils übersehen, während Vorrichtungen zunehmend komplexer wurden. Zum Beispiel haben sich Bus-Technologien entwickelt, die fähig sind, schnellere Datenraten abzuwickeln, und höhere Level von Datendurchsatz bereitzustellen. Ein solches Beispiel ist Peripheral Component Interconnect Express (PCIe). PCIe wurde historisch als eine serielle Hochgeschwindigkeits-Computererweiterungs-Bustechnologie verwendet; PCIe ist auf Punkt-zu-Punkt-Konnektivität mit getrennten seriellen Verbindungen basiert, die jede Endpunktkomponente (z. B. Grafikkarte, Speicher usw.) mit dem Wurzelkomplex (z. B. dem Host-Prozessor) verbinden. Jedoch verbrauchen bestehende PCIe-Technologien erhebliche Leistungen und sind für Entwürfe, in denen es erforderlich ist, dass der „Peripherie”-Prozessor betrieben wird, während der „Host”-Prozessor sich im Ruhezustand befindet oder umgekehrt, ungeeignet (wie es in zellularen Vorrichtungen, tragbaren Laptops und/oder anderen tragbaren Medienspielern üblich ist).
  • Während des typischen Betriebs kann der PCIe-Bus unerwartete Bedingungen erfahren, die zum Beispiel von unbekannten Nachrichten, Software- und/oder Hardware-Fehlern, unregelmäßigen Interferenzen usw. verursacht werden. Bestehende PCIe-Bus-Technologien sind für ihre Unzuverlässigkeit beim Auflösen unerwarteter Bus-Zustände allgemein bekannt. Zum Beispiel führt innerhalb bestimmter Computersysteme ein PCIe-Störung zu einem fatalen Fehler (z. B. einem so genannten „Blue Screen of Death” (blauer Bildschirm des Todes)), der es erfordert, dass der Benutzer das Computersystem zurücksetzt. Während der Fachmann sogleich versteht, dass es einen breiten Bereich möglicher Quellen unerwarteter fataler Fehlerbedingungen gibt (z. B. schlecht geschriebene Vorrichtungstreiber, Speicherlecks, usw.) wird man verstehen, dass komplexere Hardware, Software und Bus-Topologien ausnahmslos die Wahrscheinlichkeit von Fehlerbedingungen erhöhen.
  • Weiter sind Fehlerwiederherstellungsmethodiken innerhalb der Prozessortechniken aufgeteilt. Zum Beispiel sammeln einige Prozessoren Fehlerinformationen und stellen sie im Falle eines unerwarteten Absturzes (so genannte „Speicherauszugs-”Dateien und/oder Fehlerbeseitigungsinformationen usw.) bereit. Andere Prozessoren können versuchen das System wiederherzustellen, indem sie andere Peripheriegeräte/Prozessoren zwingen, neu zu starten (z. B. um zu einem bekannten Betriebszustand zurückzukehren). Noch andere Prozessoren können einen so genannten „Panik-Modus” verwenden, der die gesamte Vorrichtung aus und wieder ein schaltet, wodurch er den Vorrichtungskontext vollständig zurücksetzt. Da Software-Abstürze bei einer großen Vielzahl von Szenarien auftreten können und jeder Prozessor nicht sicher feststellen kann, ob die anderen Prozessoren immer noch betriebsbereit sind, können unterschiedliche Prozessoren innerhalb der selben Vorrichtung mehrere unterschiedliche Methodiken auf eine willkürliche Weise implementieren. Zum Beispiel kann ein AP den BB zurücksetzen während der BB versucht, nützliche Fehlerbehebungsinformationen zu sammeln usw. In diesen ungünstigsten Fällen, selbst wenn möglicherweise nützliche Fehlerbehebungsinformationen gesammelt worden sind, können Entwurfsingenieure nicht bestimmen, ob die Fehlerbehebungsinformationen vor, während oder nach der Störung gesammelt worden sind; in einigen Fällen können die Fehlerbehebungsinformationen sogar beschädigt sein usw.
  • Innerhalb dieses Kontexts werden nun Verfahren und Vorrichtungen beschrieben, die eine gesteuerte Wiederherstellung von Fehlerinformationen zwischen zwei (oder mehreren) unabhängig voneinander betreibbaren Prozessoren ermöglichen. Ideale Lösungen erhalten Fehlerinformationen im Falle eines fatalen Fehlers, koordinieren Zurücksetzbedingungen zwischen unabhängig betreibbaren Prozessoren und implementieren einheitliche Frameworks für Fehlerinformationswiederherstellung in einem Bereich möglicher fataler Fehler. Die folgenden Diskussionen werden mit Bezug zu einem „Wurzelkomplex”-(Root Complex, RC)(oder „Host”)-Prozessor und einem „Endpunkt”-(EP)(oder „Peripherie-”)-Prozessor beschrieben. Aus Gründen, die nachfolgend offensichtlich werden, ist zu beachten, dass die Bezeichnung hinsichtlich eines Host- oder Peripherieprozessors verwendet wird, um die folgenden Erklärungen zu vereinfachen und/oder klarzustellen und impliziert keine bestehende Host- oder Peripheriefunktionalität.
  • Wie hierin verwendet, wird der Begriff „logisch” oder „virtuell” austauschbar verwendet, um sich auf eine Abstraktion zu beziehen (die typischerweise in Software- oder Maschinenlogik vorgenommen wird), um physische Mechanismen, Attribute oder Funktionalitäten als eine Datenstruktur darzustellen. Zum Beispiel bezieht sich eine „logische Bus-Schnittstelle”, eine „virtuelle Bus-Schnittstelle” usw. im Allgemeinen auf eine Abstraktion oder auf eine Darstellung einer Bus-Schnittstelle als eine Reihe von Datenstrukturen. Im Gegensatz dazu, wie hierin verwendet, bezieht sich eine „physische Bus-Schnittstelle” auf physische Mechanismen, Attribute oder Funktionalitäten einer physisch greifbaren Bus-Schnittstelle.
  • Beispielhafte Vorrichtungen –
  • 1 veranschaulicht eine beispielhafte Vorrichtung 100, die zum Veranschaulichen zahlreicher Prinzipien, die hierin beschrieben werden, nützlich ist. Wie gezeigt beinhaltet die Vorrichtung 100 einen ersten und einen zweiten Prozessor (102A, 102B) und eine physische Bus-Schnittstelle 104, die eingerichtet ist, um eine Kommunikationsverbindung zwischen den zwei (oder mehr) unabhängig betreibbaren Prozessoren zu implementieren.
  • In einer Implementierung beinhaltet der erste Prozessor 102A einen Anwendungsprozessor (AP). Wie in 1 gezeigt, ist der erste Prozessor 102A mit einem Wurzelkomplex (Root Complex, RC) 106A gekoppelt, der die Funktion des Hosts der Kommunikationsverbindung erfüllt. In einer Implementierung beinhaltet der zweite Prozessor 102B ein drahtloses Modembasisband (BB). In anderen Ausführungsformen kann der zweite Prozessor 102B zum Beispiel ein Medienprozessor oder ein anderes Netzwerkverarbeitungselement sein. Wie in 1 gezeigt, ist der zweite Prozessor 102B mit einem Endpunkt (EP) 106B gekoppelt, der die Funktion des Peripheriegeräts der Kommunikationsverbindung erfüllt. Wie gezeigt ist sowohl der erste als auch der zweite Prozessor (102A, 102B) jeweils mit einem nicht flüchtigen computerlesbaren Medium (z. B. Zufallszugriffsspeicher (Random Access Memory, RAM)) (108A, 108B) gekoppelt. Das nicht flüchtige computerlesbare Medium ist eingerichtet, um computerlesbare Anweisungen zur Ausführung zu speichern. Wie hierin verwendet, beinhaltet der Begriff „Speicher” irgendeinen Typ integrierter Schaltung oder anderer Speichervorrichtungen, die eingerichtet ist zum Speichern digitaler Daten einschließlich ohne Beschränkung ROM, PROM, EEPROM, DRAM, SDRAM, DDR/2 SDRAM, EDO/FPMS, RLDRAM, SRAM, „Flash”-Speicher (z. B. NAND/NOR) und PSRAM. In einigen Fällen können der erste und/oder der zweite Prozessor einen verknüpften nicht flüchtigen Speicher 110 (z. B. einen Flash-Speicher) aufweisen, der eingerichtet ist, um computerlesbare Anweisungen zu speichern und die gespeicherten computerlesbaren Anweisungen ohne Energieversorgung beizubehalten.
  • In einer beispielhaften Ausführungsform sind der erste Prozessor 102A und der verknüpfte Speicher 108A eingerichtet, um den zweiten Prozessor zu verwalten, Interrupts zu übertragen und zu empfangen, Inter-Prozessor-Kommunikationen auszurichten (über die Kommunikationsverbindung), und als der Wurzelkomplex des Kommunikationsbusses zu funktionieren. Im Gegensatz dazu sind der zweite Prozessor 102B und der verknüpfte Speicher 108B eingerichtet, um als ein Endpunkt (EP) des Kommunikationsbusses zu funktionieren, als ein Slave auf die Inter-Prozessor-Kommunikationen zu antworten, die GPIO aufrechtzuerhalten und nicht aufrechtzuerhalten und verschiedene Abbruchszenarien abzuwickeln. Zusätzlich kann der zweite Prozessor 102B auf eine Vielzahl von Verarbeitungskapazitäten funktionieren (z. B. als ein Basisbandprozessor für ein drahtloses Modem) und/oder kann eine Vielzahl von Untersystemen verwalten (z. B. Audio-Codecs, Anzeigetreiber, Verwalten drahtloser Modemkomponente usw.).
  • Wie in 2 gezeigt, ist eine Ausführungsform der physischen Bus-Schnittstelle 104 lose auf dem Peripheral Component Interconnect Express-(PCIe)Standard basiert (wie z. B. in „PCI Express Base Specification Revision 3.1", veröffentlicht am 08. Oktober 2014, und in „ECN L1 PM Substates with CLKREQ", genehmigt am 23. August 2012, beschrieben, die hierin in ihren Gesamtheiten durch Verweis aufgenommen werden). Modifikationen an der traditionellen physischen PCIe-Bus-Schnittstelle 104 (und an den damit verwendeten Protokollen), um Fehlerwiederherstellungsfunktionalität zu unterstützen, werden nachfolgend in größerem Detail beschrieben. Der Fachmann, dem die Inhalte der vorliegenden Offenbarung zur Verfügung stehen, wird sogleich verstehen, dass andere Bus-Schnittstellenstandards mit gleichem Erfolg ersetzt werden können. Zum Beispiel kann die PCIe-Schnittstelle modifiziert werden, um als eine Interprozessorkommunikations-(Inter-Prozessor Communication, IPC)-Verbindung zu funktionieren, wie in der gemeinschaftlich besessenen und mitanhängigen vorläufigen US Patentanmeldung Seriennr. 62/061,605 mit dem Titel „METHODS AND APPARATUS FOR AN INTER-PROCESSOR COMMUNICATION LINK BETWEEN INDEPENDENTLY OPERABLE PROCESSORS” (Verfahren und Vorrichtungen für eine Interprozessorkommunikationsverbindung zwischen unabhängig voneinander betreibbaren Prozessoren), eingereicht am 08. Oktober 2014, beschrieben, die zuvor aufgenommen worden ist.
  • In der beispielhaften Ausführungsform ist die physische Bus-Schnittstelle 104 ein Punkt-zu-Punkt-Kommunikationskanal zwischen zwei PCIe-Anschlüssen (der RC und der EP), der es erlaubt, sowohl Zugriffsanfragen (Konfiguration von Lesen/Schreiben, E/A Lesen/Schreiben, Speicher Lesen/Schreiben) als auch Interrupts zu senden/zu empfangen. Auf der physischen Ebene ist eine Verbindung aus einer oder mehreren Bahnen (von denen eine in 2 gezeigt ist) zusammengesetzt, wobei jede Bahn Empfangs- und Übertragungskomponenten (pcie_rx, pcie_tx) aufweist. Jede Bahn ist ein vollständiger Duplex-Byte-Strom, der Datenpakete in 8-Bit-„Byte”-Formaten zwischen dem RC und dem EP einer Verbindung gleichzeitig in beide Richtungen transportiert. Die physische Verbindung 104 kann mehrere logische Verbindungen (oder virtuelle Bus-Schnittstellen) unterstützen, die mehrere fortlaufende Datensitzungen darstellen.
  • Zusätzlich beinhaltet die physische Bus-Schnittstelle 104 drei (3) Signale, welche eine Absturzwiederherstellung ermöglichen. In einer beispielhaften Ausführungsform werden die Signale über eine Allgemeinzweckeingabe/-ausgabe (General Purpose Input/Output, GPIO) implementiert: (i) BB_PMU_RST GPIO, (ii) BB_RST GPIO, und (iii) RESET_DET GPIO. Die BB_PMU_RST GPIO ist eine GPIO von dem RC zu dem EP, welche, wenn sie umschaltet, den EP veranlasst sich abzuschalten. Die BB_RST GPIO ist eine GPIO von dem RC zu dem EP, welche, wenn sie umgeschaltet wird, den EP veranlasst sich zurückzusetzen. Die RESET_DET GPIO wird von dem EP an den RC bereitgestellt und wird aufgeschaltet, wenn der EP zurückgesetzt wird. In einer Ausführungsform wird die PCIe WAKE# GPIO von dem EP an den RC als Teil der PCIe-Schnittstelle bereitgestellt, wird aber zusätzlich „überladen”, um so aufgeschaltet zu werden, wenn der EP sein eigenes Fehlerwiederherstellungsverfahren abgeschlossen hat (z. B. erfolgreich einen Speicherauszug im RAM gespeichert hat). Alternative Ausführungsformen können eine GPIO zum Aufschalten eines erfolgreichen Abschlusses des Fehlerwiederherstellungsverfahrens zuordnen.
  • Beispielhaftes Hochfahrverfahren und Ruhezustands-/Ruhezustandbeendigungsverfahren –
  • Als eine kurze Nebenbemerkung wird eine kurze Zusammenfassung einer Hochfahrsequenz hierin bereitgestellt, die in Verbindung mit der beispielhaften Vorrichtung 100 nützlich ist. Im Interesse der Kürze und Klarheit ist die folgende Diskussion weder umfassend, noch ausschließend und der Fachmann wird sogleich verstehen, dass andere Schemata zum Hochfahren mehrerer unabhängiger Prozessoren sogleich ersetzt werden können, wobei das Folgende nur bereitgestellt wird, um die Anwendung der nachfolgenden Verfahren, die nachfolgend ausführlich beschrieben werden, zu unterstützen.
  • Beim Einschalten oder Zurücksetzen initialisiert die Vorrichtung 100 den zweiten Prozessor 102B (BB), der den nicht-flüchtigen Speicher des primären Hochfahrladeprogramms (Primary Boot Loader, PBL) abruft, wie zum Beispiel den internen Nur-Lesespeicher (Read Only Memory, ROM) (oder einen anderen Flash-Speicher). Zur selben Zeit (oder vor der BB-Hochfahrsequenz) initialisiert der erste Prozessor 102A (AP) sein Betriebssystem (Operating System, OS), fährt es hoch und führt es aus.
  • Sobald der BB 102B erfolgreich eingeschaltet worden ist (oder sein Ruhezustand beendet worden ist, usw.), schaltet der AP 102A die physische Bus-Schnittstelle 104 (z. B. den PCIe-Bus) ein und benennt die Verbindung. In einer beispielhaften Implementierung benennt der AP 102A sich selbst und den BB-Prozessor 102B über den PCIe-Bus 104. Bei erfolgreicher Benennung ruft der AP das sekundäre Hochfahrladeprogramm (Secondary Boot Loader, SBL) ab und sendet es über den PCIe-Bus an den BB. Der BB empfängt das SBL und fahrt aus dem SBL in Antwort hoch.
  • Sobald der BB 102 beginnt, das SBL auszuführen, holt der AP 102A das finale Software-Bild des BB 102B ab und sendet es an den BB 102B über die physische Bus-Schnittstelle 104. Danach führt der BB 102B sein finales Software-Bild aus (z. B. das Betriebssystem (Operating System, OS)). Bei Abschluss des Hochfahrverfahrens führen sowohl der AP als auch der BB ihre entsprechenden OS aus.
  • Wie zuvor angesprochen, sind der AP und der BB unabhängig voneinander funktionierende Prozessoren, die den Ruhemodus jeweils getrennt betreten/verlassen können. In einigen Ausführungsformen, wenn sich der AP im Ruhemodus befindet, wird die Kommunikationsverbindung getrennt. In anderen Ausführungsformen, wenn einer des AP oder des BB (oder beide) sich im Ruhemodus befinden, wird die Kommunikationsverbindung getrennt. Beim Beenden des Ruhemodus benennt die Kommunikationsverbindung wieder, um Kommunikation zu aktivieren. Leider nimmt in bestehenden Entwürfen des Standes der Technik der AP an, dass die Benennung immer erfolgreich ist; demzufolge, falls der BB auf eine unerwartete Weise antwortet, geht der AP automatisch in einen „Panikmodus” über (d. h., dass der AP die gesamte Vorrichtung aus- und wieder einschaltet, um sich in einen bekannten Zustand zurückzusetzen), da der AP nicht bestimmen kann, ob er selbst oder der BB sich in einem unbekannten Zustand befindet. Vom Blickpunkt eines Verbrauchers aus ist dies eine höchst unerwünschte Konsequenz, die offensichtlich ist, wenn sie beobachtet wird.
  • Von einem praktischen Standpunkt aus gibt es viele Gründe, warum ein BB nicht erfolgreich benennt (was zu dem unerwünschten „Panikmodus” führt). Zum Beispiel kann der BB nicht während so genannter „Abbruchabwickler”-Handlungen antworten. In einer solchen Implementierung ist der BB aus mehreren Untersystemen zusammengesetzt (z. B. drahtloses Modem, Codecs, Energieverwaltung, usw.); während jedes dieser Untersysteme im Allgemeinen ziemlich robust ist, ist es ökonomisch nicht machbar, alle „Bugs” (Fehler) in der Software/Hardware vorherzusagen/zu eliminieren. Demzufolge beinhaltet die beispielhafte BB-Software einen Abbruchabwickler, der eingerichtet ist, um Fehlerbehebungsinformationen zu sammeln, wenn eine Störung beobachtet wird. Insbesondere ist ein Typ von Fehlerbehebungsinformationen ein sogenannter „Speicherauszug”, wobei der Prozessor die Inhalte des Ausführungsspeichers in einen Nicht-Ausführungsraum kopiert, so dass dieser später analysiert werden kann. Sobald der Speicherauszug erfolgreich gespeichert worden ist, führt der BB einen o-Befehl aus bis er anderweitig angewiesen wird (z. B. „dreht” er sich in einer leeren Schleife); dazu nachfolgend kann der AP den BB zurücksetzen und den Speicherauszug als Teil des PBL-/SBL-Verfahrens abrufen. Leider wird der BB nicht auf PCIe-Befehle antworten, wenn Speicherauszüge abgerufen/gespeichert werden (was einige Sekunden dauern kann), in anderen Worten, falls der AP versucht, den BB während des Intervalls zwischen dem anfänglichen Absturz und der o-Befehlausführung zu benennen, wird der BB dann nicht antworten und der AP wird die Panikmodusantwort auslösen. Verschiedene Ausführungsformen der vorliegenden Offenbarung sind anwendbar auf jedes System von Komponenten, in dem sich ein Host-Prozessor nicht bewusst ist, dass der Slave-Prozessor abgestürzt ist. Allgemeiner wird der Fachmann sogleich verstehen, dass die Prinzipien, die hierin beschrieben werden, breit anwendbar auf irgendein System sind, in dem ein Prozessor von zwei (oder mehr) unabhängig voneinander betreibbaren Prozessoren sich mit dem (den) anderen Prozessor(en) koordinieren muss, um Fehlerinformationen wiederherzustellen (z. B. Speicherauszüge, Fehlerbehebungsprotokolle, usw.).
  • Beispielhaftes Framework –
  • Tabelle 1 veranschaulicht ein beispielhaftes Framework, das in Verbindung mit der beispielhaften Vorrichtung der 1 nützlich ist. Wie gezeigt, identifiziert das Framework die angemessene Handlung, die von dem Anwendungsprozessor (AP) und dem Basisband (BB) ausgeführt wird.
    Absturzszenario BB-Ausführungsumgebung RESET_DET PCIe-Verbindungszustand AP-Verhalten
    Software-Absturz Abbruchabwickler Aufschalten Hoch Speicherauszug sammeln
    HW-Überwachungsablauf ROM Aufschalten Herunter Speicherauszug sammeln
    Weiches Zurücksetzen, Ausschalten Ausschalt-Abwickler Aufschalten Hoch Den BB über die GPIO explizit zurücksetzen/ausschalten
    PCIe-Verbindung getrennt OS Aufschaltende Herunter Panik
    PCIe-Verbindung getrennt Abbruchabwickler Aufschalten Herunter Speicherauszug sammeln
    PCIe-Zeitüberschreitung, AP erkennt OS Aufschaltende Hoch Speicherauszug sammeln
    PCIe-Abbruch, AP erkennt OS Aufschaltende Hoch Panik
    PCIe-Zeitüberschreitung, BB erkennt OS Aufschaltende Hoch -> Herunter Panik
    PCIe-Zeitüberschreitung, BB erkennt Abbruchabwickler Aufschalten Hoch Speicherauszug sammeln
    PCIe-Abbruch, BB erkennt Abbruchabwickler Aufschalten Hoch Speicherauszug sammeln
    TABELLE 1
  • Die zahlreichen Einheiten, die in Tabelle 1 zusammengefasst sind, werden nun in größerem Detail beschrieben.
  • Abbruchabwickler –
  • 3 veranschaulicht ein logisches Flussdiagramm eines beispielhaften Verfahrens 300 zum Abwickeln einer Abbruchsequenz.
  • Bei Schritt 302 des Verfahrens 300 stellt der Abbruchabwickler sicher, dass alle (falls welche vorliegen) aktuellen PCIe-Bus-Transaktionen abgeschlossen sind. In einigen Fällen kann dies ein Abschließen der Übertragung des verbleibenden Inhalts eines Übertragungspuffers beinhalten, in anderen Fällen wird die Übertragung auf eine erwartete Weise abgekürzt (z. B. durch Beenden der Übertragung gemäß eines vordefinierten Protokolls, usw.). In noch anderen Ausführungsformen kann die Übertragung durch Senden eines Beendigungssignals und/oder Pakets abgebrochen werden.
  • Bei Schritt 304 aktiviert der Abbruchabwickler die Hardware-Überwachung. Wie hierin nachfolgend in größerem Detail beschrieben wird, ist die Hardware-Überwachung ein zweckbestimmter Hardware-Sicherheitsmechanismus, um sicherzustellen, dass, selbst wenn Software nicht antwortet, der Prozessor zu einem bekannten Zustand zurückkehren kann, indem er sich selbst zurücksetzt.
  • Bei Schritt 306 sammelt der Abbruchabwickler die PCIe-Fehlerbehebungsinformationen und speichert die Bus-Fehlerinformationen in einem Nicht-Ausführungsspeicher für nachfolgende Analyse. Während der Ausführungsspeicher während eines Zurücksetzens nicht erhalten wird (z. B. kann er während der Ausführung überschrieben werden usw.); kann im Gegensatz dazu Nicht-Ausführungsspeicher erhalten werden und demzufolge können die Fehlerinformationen wiederhergestellt werden, selbst nachdem das System zurückgesetzt worden ist.
  • Bei Schritt 308 beendet der Abbruchabwickler das Aufschalten der PCIe WAKE# GPIO und schaltet die RESET_DET GPIO auf, wodurch er dem AP gegenüber angibt, dass der BB abgestürzt ist. Wie zuvor angesprochen, wird RESET_DET GPIO durch den BB aufgeschaltet, um das Auftreten eines Absturzereignisses anzugeben, wodurch er es dem AP erlaubt, weitere Transaktionen mit dem BB zu verhindern. Jedoch führt der BB zusätzlich nicht-triviale Fehlerwiederherstellungsaufgaben im Falle eines Absturzes aus, demzufolge ist WAKE# GPIO überladen worden, um dem AP gegenüber anzugeben, dass der BB seine Fehlerwiederherstellungsaufgaben beendet hat. Durch das Beenden des Aufschaltens von WAKE# GPIO, gibt der BB dem AP gegenüber an, dass die Fehlerwiederherstellungsaufgaben weiter stattfinden.
  • Bei Schritt 310 überprüft der Abbruchabwickler den PCIe-Verbindungszustand. Falls die Verbindung getrennt ist, wartet er dann für eine voreingestellte Zeitdauer auf das Beenden des Aufschaltens von PERST#, falls die voreingestellte Zeitdauer abläuft, fährt der Abbruchabwickler dann zu dem nächsten Schritt (Schritt 312) fort. Ansonsten, falls die PERST# nicht mehr aufgeschaltet wird, aktiviert der Abbruchabwickler dann die PCIe-Bus-Taktgeber für Benennung (Wieder-Benennung).
  • Danach sammelt der Abbruchabwickler Fehlerbehebungsinformationen von zum Beispiel dem Basisbandkern, den Untersystemen usw. und speichert die Fehlerinformationen in einem Nicht-Ausführungsspeicher (Schritt 312).
  • Sobald Fehlerbehebungsinformationen korrekt gespeichert worden sind, schaltet der Abbruchabwickler die WAKE# GPIO (Schritt 314) auf, deaktiviert die Hardware-Überwachung (Schritt 316) und führt o-Anweisungen aus (z. B. Drehen in einer While-Schleife) bis er anderweitig angewiesen wird. Durch Aufschalten der WAKE# GPIO, gibt der BB dem AP gegenüber an, dass er die Fehlerwiederherstellungsverfahren beendet hat.
  • In einer beispielhaften Ausführungsform ist das Verfahren 300 (oder ein Anteil davon) durch spezifizierte Zeitbeschränkungen gebunden (z. B. maximale/minimale Zeitdauer). Zum Beispiel wird in einer solchen Implementierung gefordert, dass das Zeitintervall von dem Zeitpunkt zu dem der BB beginnt, den Abbruchabwickler auszuführen (Zeit 302), zu dem Zeitpunkt, zu dem das Basisband den PCIe-Verbindungszustand überprüft (Schritt 310), kürzer ist als 10 Millisekunden (ms).
  • Kurz dargestellt, ist der AP eingerichtet, um den Basisbandabsturz über die RESET_DET GPIO Aufschaltung zu erkennen und weiter, um über die WAKE# GPIO Aufschaltung zu erkennen, wenn der BB seine Fehlerwiederherstellungsverfahren beendet hat. Erst nachdem die Fehlerwiederherstellungsverfahren erfolgreich beendet worden sind, schaltet der AP das BB_RST GPIO auf, was das Zurücksetzen des BB verursacht.
  • Ausschaltabwickler –
  • 4 veranschaulicht ein logisches Flussdiagramm eines beispielhaften Verfahrens 400 zum Abwickeln einer Ausschaltsequenz. In einigen Ausführungsformen ist der Ausschaltabwickler in den Abbruchabwickler aufgenommen; alternativ kann der Ausschaltabwickler physisch oder logisch unterschiedlich von dem Abbruchabwickler sein.
  • Wenn der BB über einen Befehl, der von dem AP gesendet wird, heruntergefahren wird, wird der BB seinen Ausschaltabwickler ausführen. Zuerst stellt der Ausschaltabwickler sicher, dass alle (soweit vorhanden) aktuellen PCIe-Bus-Transaktionen abgeschlossen sind (Schritt 402).
  • Bei Schritt 404 aktiviert der Ausschaltabwickler den Hardware-Überwachungszeitmesser. In einer Variante, falls die PCIe-Verbindung verbunden war bevor die Überwachung abgelaufen war, wird dann der AP erkennen, dass das PCIe-Verbindungstrennungsereignis von dem Zurücksetzen versursacht wurde.
  • Bei Schritt 406 signalisiert der BB, dass ein Basisbandabsturz aufgetreten ist. In einer Ausführungsform schaltet der BB RESET_DET GPIO auf und beendet das Aufschalten WAKE# GPIO.
  • Bei Schritt 408 legt der BB irgendwelche bestehende laufende Verfahren still und führt eine Fehlerwiederherstellung aus. Genauer pausiert der BB den Zustand laufender Verfahren, hält ihn an, setzt ihn aus oder verändert ihn anderweitig, um so weitere Veränderungen des Ausführungsspeichers zu verhindern. In einigen Varianten kann der BB zusätzlich die Inhalte des Ausführungsspeichers im Nicht-Ausführungsspeicher für nachfolgende Analyse speichern. In einigen Fällen schließt der BB ausstehendes Schreiben/Lesen ab. In anderen Implementierungen wird ausstehendes Schreiben/Lesen gelöscht. Zahlreiche andere Schemata zum Stabilisieren der Ausführung von Computerverfahren in Erwartung von Absturzwiederherstellung werden vom Fachmann sogleich verstanden werden, dem die Inhalte der vorliegenden Offenbarung zur Verfügung stehen.
  • Bei Schritt 410, sobald der BB die Stilllegungshandlung abgeschlossen hat, schaltet der BB die PCIe WAKE# GPIO auf, um anzugeben, dass die Fehlerwiederherstellung erfolgreich abgeschlossen worden ist. Danach kann der BB den Hardware-Überwachungszeitmesser deaktivieren und sich in einer While-Schleife (oder in einer anderen Form von o-Befehlausführung) drehen.
  • Sobald der AP erkennt, dass sowohl WAKE# und RESET_DET GPIO aufgeschaltet worden sind, schaltet der AP den BB über BB_PMU_RST GPIO aus.
  • Häufige Absturzszenarien
  • Mit Bezug zurück zu Tabelle 1 werden zahlreiche häufige Absturzszenarien jetzt mit mehr Detail beschrieben.
  • Zunächst, im Falle eines Software-Absturzes geht der BB in seinen Abbruchabwickler über. Der PCIe-Verbindungszustand zwischen dem AP und dem BB bleibt unverändert. Der BB führt den Abbruchabwickler aus und schaltet RESET_DET GPIO auf. Danach, wenn der AP den BB-Absturz und den erfolgreichen Abschluss der BB-Abbruchabwicklersequenz erkennt (z. B. über die Aufschaltungen von RESET_DET und WAKE#), setzt der AP dann den BB zurück, indem er zuerst den PCIe-Anschluss herunterfährt, den BB über BB_RST GPIO zurücksetzt und dann den PCIe-Anschluss anschaltet. Der BB wird dann in Antwort über PCIe in ROM benennen und der AP kann nachfolgend die Speicherauszüge sammeln.
  • Auf ähnliche Weise können bestimmte Abstürze auftreten aufgrund eines Auslaufens einer Hardware-Überwachung. Die Hardware-Überwachung ist eine zweckbestimmte Hardwarekomponente, die eingerichtet ist, um den BB zurückzusetzen, wenn es seinem Zeitmesser erlaubt wird, abzulaufen. Während des normalen Betriebs wird der Überwachungszeitmesser periodisch durch den Prozessor zurückgesetzt bevor er vollständig abläuft; jedoch, wenn sich der Prozessor in einem unbekannten Zustand befindet und nicht in der Lage ist, die Überwachung zurückzusetzen, läuft dann der Überwachungszeitmesser ab und setzt den Prozessor zurück. Dies führt dazu, dass der Prozessor wieder seinen ROM ausführt. In der beispielhaften Ausführungsform, wenn der BB zurückgesetzt wird, wird der AP ein PCIe-Verbindungstrennungsereignis erkennen (falls die PCIe-Verbindung aktiv war). In Antwort darauf wartet der AP bis zum erfolgreichen Abschluss der BB-Abbruchabwicklersequenz (z. B. über die Aufschaltungen von RESET_DET und WAKE#) und danach setzt der AP den BB zurück, indem er zuerst den PCIe-Anschluss abschaltet, den BB über BB_RST GPIO zurücksetzt und dann den PCIe-Anschluss anschaltet. Wie bei den zuvor erwähnten Software-Abstürzen kann der AP nachfolgend die Speicherauszüge sammeln.
  • In einigen Fällen kann der AP explizit ein weiches Zurücksetzen oder ein Ausschalten (shutdown) auslösen. In diesen Szenarien führt der BB seinen Ausschaltabwickler aus und die PCIe-Verbindung bleibt betriebsbereit. Danach schaltet der AP die PCIe-Verbindung aus und danach setzt er den BB über BB_RST GPIO zurück oder schaltet den BB über BB_PMU_RST aus.
  • Wie in Tabelle 1 gezeigt, gibt es mehrere Szenarien, die sich mit PCIe-Verbindungsstörungen beschäftigen. Zum Beispiel ist in einigen Ausführungsformen das standardmäßige Verhalten für den BB, den Abbruchabwickler für den Fall einer PCIe-Verbindungsstörung auszuführen. Beim Übergehen in den Abbruchabwickler schaltet der BB die RESET_DET GPIO auf, was dazu führt, dass der AP die PCIe-Verbindungsstörung als einen BB-Absturz behandelt. Wie in den zuvor genannten Szenarien wird der AP darauf warten, dass der BB die Abbruchabwicklerausführung abschließt bevor er die PCIe-Verbindung zurücksetzt, den BB wieder benennt und die Speicherauszüge abruft usw. In diesem Szenario kann der AP Fehlerinformationen von der EP-Schnittstelle (innerhalb des BB) abrufen, jedoch kann der AB nicht in der Lage sein, die Fehlerinformationen innerhalb des RC abzurufen.
  • Alternativ kann in einigen speziellen Fällen der BB in dem Betriebssystem (operating system, OS) während einer PCIe-Verbindungsstörung verbleiben. Zum Beispiel kann der AP den BB einrichten, um in dem OS zu bleiben, um eine Software-Fehlerbehebung des APs zu unterstützen. In diesen Szenarien wird der BB RESET_DET GPIO nicht aufschalten (was angibt, dass sich der BB nicht im Zurücksetzen befindet). Der IPC-Treiber auf dem Host wird die PCIe-Verbindungsstörung erkennen und, dass der BB nicht zurückgesetzt worden ist. Folglich wird der AP einen Panikmodus auslösen, um eine Fehlerbehebung der PCIe-Verbindung auf dem RC zu erlauben. In diesen Szenarien, da der BB seine Abbruchabwicklerfunktionalität nicht ausführt, gehen die gesamten BB-Fehlerinformationen verloren.
  • Außerdem gibt es ebenso Szenarien, in denen die PCIe-Verbindung unabhängig von entweder dem AP oder dem BB fehlschlägt. Zum Beispiel kann in einigen Fällen der AP eine Abschlusszeitüberschreitung über die PCIe-Verbindung erkennen, während der BB immer noch normal läuft (z. B. wie bewiesen dadurch, dass RESET_DET GPIO unaufgeschaltet bleibt). Hier wird der AP-IPC-Treiber explizit den PCIe-Anschluss abschalten. Der BB wird die PCIe-Verbindungsstörung erkennen und entweder: (1) den Abbruchabwickler ausführen; oder ansonsten (2) innerhalb des OS bleiben (abhängig von der Konfiguration). Danach wird der AP die Abschlusszeitüberschreitung als einen fatalen Basisbandfehler behandeln und ein Basisband-Zurücksetzen auslösen.
  • Im Gegensatz dazu, wenn der BB eine Abschlusszeitüberschreitung über die PCIe-Verbindung erkennt, wird der BB bei standardmäßigen Betrieb dann in den Abbruchabwickler übergehen und die RESET_DET GPIO aufschalten. Danach kann der AP die Störung als einen BB-Absturz behandeln. Wie zuvor angemerkt, ermöglicht der standardmäßige Betrieb es dem AP, Verbindungsebenenprobleme auf der Grundlage der Fehlerinformationen innerhalb der EP-Schnittstelle zu beheben, jedoch gehen die Informationen innerhalb des RC verloren. Alternativ, falls der BB eingerichtet ist, um in dem OS zu verbleiben, um den AP bei der Fehlerbehebung zu unterstützen, wird dann der BB explizit die PCIe-Verbindung trennen ohne RESET_DET GPIO aufzuschalten. Der AP wird die Störung der Verbindung und die nicht mehr aufgeschaltete RESET_DET GPIO erkennen; folglich wird der AP einen Panikmodus auslösen. In diesem Absturzszenario kann der AP Fehlerbehebung bei der RC-Schnittstelle ausführen, aber wird die Informationen, die innerhalb des EP gespeichert sind, verlieren (weil der BB-Abbruchabwickler nicht ausgeführt worden ist).
  • Falls der AP einen PCIe-Abschlussabbruch (d. h. einen fatalen Fehler) erkennt, wird der AP dann den Panikmodus auslösen. Falls der BB einen PCIe-Abschlussabbruch erkennt, wird der BB dann den Abbruchabwickler ausführen; der AP wird die Störung als einen BB-Absturz behandeln.
  • Beispielhafter Betrieb
  • Nun bezugnehmend auf 5 wird ein logischer Leiterdiagramm veranschaulicht, welches ein Fehlerwiederherstellungsverfahren in Übereinstimmung mit der vorliegenden Offenbarung darstellt. Wie gezeigt, beinhaltet der Anwendungsprozessor (AP)(host) die folgenden logischen Einheiten: (i) den Basisbandverwalter 502, (ii) die Interrupt-Steuerung 504, (iii) den Host-Interprozessorkommunikations-(inter-processor communication, IPC)-Treiber 506 und (iv) die Wurzelkomplex-(root complex, RC)-Schnittstelle 508. Der Basisbandprozessor (BB) (slave) beinhaltet: (i) die Endpunkt-(EP)-Schnittstelle 510, (ii) den EP-IPC-Treiber 512, (iii) die GPIO-Steuerung 514, (iv) den Abbruchabwickler 516, (v) den Basisbandkern 518 und (vi) eine Vielzahl von Untersystemen 520 (z. B. Audio, Anzeige, drahtloses Modem, usw.).
  • Zu irgendeinem unerwarteten Zeitpunkt während des Betriebs stürzt der BB ab (Zeit 550). Typischerweise wird ein Software-Absturz nachgewiesen durch unerwartetes Verhalten eines der Untersysteme 520 (z. B. ein fehlgeleiteter Speicherzugriff, ein nicht antwortender Bus-Zugriff, usw.). In Antwort darauf springt der Basisbandkern 518 zu seiner Abbruchabwicklersquenz, welche eine Hardware-Überwachung aktiviert. Die Hardware-Überwachung stellt sicher, dass, wenn der Abbruchabwickler 516 nicht in der Lage ist, seine Aufgaben anstandslos abzuschließen, der BB dann in ein Zurücksetzen gezwungen wird. Wie gezeigt, muss der Abbruchabwickler 516 alle ausstehenden Eingabe-/Ausgabe-Transaktionen abschließen und Fehlerbehebungsinformationen sammeln. Erfolgreicher Abschluss des Abbruchabwicklers beendet das Aufschalten von WAKE# und schaltet die RESET_DET GPIO auf.
  • Das Aufschalten von RESET_DET GPIO gibt dem AP gegenüber an, dass der BB abgestürzt ist (Zeit 552) und dass keine weiteren Transaktionen mit dem BB eingeleitet werden sollten. Jedoch wartet der AP bis das Zurücksetzen des Basisbands abgeschlossen ist (Zeit 554) bevor er den PCIe-Bus abschaltet und den Basisbandkern 518 zurücksetzt.
  • Nachdem der Basisbandkern 518 zurückgesetzt worden ist, führt er die Inhalte seines ROM aus. Gleichzeitig schaltet der AP den PCIe-Bus an und wartet auf die PCIe-Benennung bevor er ein primäres Hochfahrladeprogramm-(primary boot loader, PBL) und ein sekundäres Hochfahrladeprogramm-(secondary boot loader, SBL)-Hochfahrprotokoll ausführt. Danach kann der AP sicher die Speicherauszüge 556 sammeln.
  • Rückbezug nehmend auf das Zeitintervall zwischen dem Erkennen des Zurücksetzens des Basisbands (Zeit 552) und dem Abschluss des Zurücksetzens des Basisbands (Zeit 554) ist es dem Abbruchabwickler 516 erlaubt, den PCIe-Verbindungszustand zu überprüfen und falls der PCIe-Bus aktiv ist, den PCIe-Bus zu benennen. Unabhängig davon kann der Abbruchabwickler 516 Fehlerbehebungsinformationen von jedem der Untersysteme 520 sammeln. Sobald der Abbruchabwickler 516 die Fehlerbehebungsinformationen (z. B. Speicherauszüge) erfolgreich gesammelt hat, schaltet der Abbruchabwickler 516 WAKE# auf (was angibt, dass das Zurücksetzen des Basisbands abgeschlossen ist). Danach deaktiviert der Abbruchabwickler die Hardware-Überwachung und führt o-Befehle aus.
  • Allgemeiner, im Gegensatz zu bestehenden Lösungen, die Fehler der Wiederherstellungsverfahren nicht koordinieren, stellen zahlreiche Ausführungsformen der vorliegenden Offenbarung einen Hinweis bereit, hinsichtlich sowohl, wenn ein Absturz aufgetreten ist, als auch, wenn die Fehlerwiederherstellung, die mit dem Absturz verknüpft ist, abgeschlossen ist. Auf diese Weise setzen die anderen Prozessoren des Systems den abgestürzten Prozessor nicht zurück bevor er seine relevanten Fehlerinformationen wiederherstellen und speichern kann.
  • Es wird erkannt werden, dass, während bestimmte Ausführungsformen der vorliegenden Offenbarung in der Form einer spezifischen Sequenz von Schritten eines Verfahrens beschrieben worden sind, dass diese Beschreibungen nur veranschaulichend für die breiteren Verfahren sind, die hierin beschrieben werden, und modifiziert werden können wie es für die bestimmte Anwendung erforderlich ist. Bestimmte Schritte können unter bestimmten Umständen unnötig oder optional werden. Zusätzlich können bestimmte Schritte oder Funktionalität zu den offenbarten Ausführungsformen hinzugefügt werden oder die Reihenfolge von zwei oder mehr Schritten kann vertauscht werden. Jegliche solche Variationen werden als von der Offenbarung umfasst und als hierin beansprucht angesehen.
  • Während die vorangegangene detaillierte Beschreibung neue Merkmale gezeigt, beschrieben und hervorgehoben hat, wie sie auf zahlreiche Ausführungsformen angewandt werden, wird es verstanden werden, dass zahlreiche Auslassungen, Ersetzungen und Veränderungen hinsichtlich der Form und von Details der Vorrichtung oder des Verfahrens, die (das) hierin veranschaulicht wird, vom Fachmann vorgenommen werden können, ohne sich von den hierin beschriebenen Prinzipien zu entfernen. Die vorangegangene Beschreibung ist die des besten Modus, der aktuell in Erwägung gezogen wird. Diese Beschreibung ist in keiner Weise beabsichtigt beschränkend zu sein, sondern sollte eher als veranschaulichend für die allgemeinen Prinzipien, die hierin beschrieben werden als veranschaulichend angesehen werden. Der Umfang der Offenbarung sollte mit Bezug zu den Ansprüchen bestimmt werden.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • „PCI Express Base Specification Revision 3.1”, veröffentlicht am 08. Oktober 2014 [0034]
    • „PCI Express Base Specification Revision 3.1”, veröffentlicht am 08. Oktober 2014 [0046]
    • „ECN L1 PM Substates with CLKREQ”, genehmigt am 23. August 2012 [0046]

Claims (15)

  1. Verfahren zum Speichern von Fehlerinformationen zwischen zwei oder mehr unabhängig voneinander betreibbaren Prozessoren, das Verfahren umfassend: Aktivieren eines Hardware-Sicherheitsmechanismus, der eingerichtet ist, um ein Absturzereignis bei einem der zwei oder mehr unabhängig voneinander betreibbaren Prozessoren zu beobachten; Angeben, dass das Absturzereignis aufgetreten ist; Einleiten von einem oder mehreren Fehlerwiederherstellungsverfahren, um Fehlerinformationen zu speichern; und wenn die Fehlerinformationen gespeichert worden sind, Angeben, dass das eine oder die mehreren Fehlerwiederherstellungsverfahren erfolgreich abgeschlossen sind.
  2. Verfahren nach Anspruch 1, weiter umfassend, wenn das eine oder die mehreren Fehlerwiederherstellungsverfahren erfolgreich abgeschlossen sind, Deaktivieren des Hardware-Sicherheitsmechanismus.
  3. Verfahren nach Anspruch 1, weiter umfassend ein Analysieren der gespeicherten Fehlerinformationen.
  4. Verfahren nach Anspruch 1, weiter umfassend, wenn eine oder mehrere Bus-Transaktionen anhängig sind, Auflösen der einen oder der mehreren Bus-Transaktionen.
  5. Verfahren nach Anspruch 4, wobei die Handlung des Auflösens der einen oder der mehreren Bus-Transaktionen ein Übertragen aller verbleibender Inhalte eines Übertragungspuffers umfasst.
  6. Verfahren nach Anspruch 4, wobei die Handlung des Auflösens der einen oder der mehreren Bus-Transaktionen ein Abbrechen der einen oder der mehreren Bus-Transaktionen umfasst.
  7. Verfahren nach Anspruch 1, weiter umfassend ein Übertragen eines Zurücksetzsignals, wobei das Zurücksetzsignal eingerichtet ist, um einen anderen einen der zwei oder mehr unabhängig voneinander betreibbaren Prozessoren zurückzusetzen.
  8. Verfahren nach Anspruch 1, weiter umfassend ein Kommunizieren über eine Bus-Schnittstelle in Übereinstimmung mit einem Peripheral Component Interconnect Express(PCIe)-Standard.
  9. Verfahren nach Anspruch 1, weiter umfassend: Überprüfen eines Zustands einer PCIe-Verbindung; und wenn ein PCIe-Bus aktiv ist, Benennen des PCIe-Bus.
  10. Vorrichtung, eingerichtet zum Speichern von Fehlerinformationen zwischen zwei oder mehr unabhängig voneinander betreibbaren Prozessoren, die Vorrichtung umfassend: eine physische Bus-Schnittstelle, die eingerichtet ist, um einen ersten Prozessor mit einem zweiten Prozessor zu koppeln; und ein computerlesbares Medium, das eine Vielzahl von Anweisungen umfasst, wobei, wenn sie von dem zweiten Prozessor ausgeführt werden, den zweiten Prozessor veranlassen zum: Aktivieren eines Hardware-Sicherheitsmechanismus, der eingerichtet ist, um ein Absturzereignis bei dem zweiten Prozessor zu beobachten; Angeben gegenüber dem ersten Prozessor, dass ein Absturzereignis aufgetreten ist; Einleiten eines oder mehrerer Fehlerwiederherstellungsverfahren, um Fehlerinformationen zu speichern; und wenn die Fehlerinformationen gespeichert worden sind, Angeben gegenüber dem ersten Prozessor, dass das eine oder die mehreren Fehlerwiederherstellungsverfahren erfolgreich abgeschlossen worden sind.
  11. Vorrichtung nach Anspruch 10, wobei die Vielzahl von Anweisungen weiter eingerichtet ist zum, wenn sie ausgeführt wird, Übergehen in eine Schleife, um auf weitere Anweisungen zu warten, wenn das eine oder die mehreren Fehlerwiederherstellungsverfahren erfolgreich abgeschlossen worden sind.
  12. Vorrichtung nach Anspruch 11, wobei die Vielzahl von Anweisungen weiter eingerichtet ist zum, wenn sie ausgeführt wird, Veranlassen eines Zurücksetzens des zweiten Prozessors.
  13. Vorrichtung nach Anspruch 12, wobei die Vielzahl von Anweisungen weiter eingerichtet ist zum, wenn sie ausgeführt wird, Abschließen ausstehender Bus-Transaktionen vor der Aktivierung des Hardware-Sicherheitsmechanismus.
  14. Vorrichtung nach Anspruch 10, wobei das computerlesbare Medium weiter eine Vielzahl von Anweisungen umfasst, welche, wenn sie von dem zweiten Prozessor ausgeführt werden, den zweiten Prozessor veranlassen zum: Durchsetzen eines Zurücksetzsignals, das den ersten Prozessor veranlasst, die physische Bus-Schnittstelle zu deaktivieren und den zweiten Prozessor zurückzusetzen.
  15. Vorrichtung, eingerichtet zum Speichern von Fehlerinformationen zwischen zwei oder mehr unabhängig voneinander betreibbaren Prozessoren, die Vorrichtung umfassend: Mittel zum Aktivieren eines Hardware-Sicherheitsmechanismus, um ein Absturzereignis bei einem der zwei oder mehr unabhängig voneinander betreibbaren Prozessoren zu beobachten; Mittel zum Angeben, dass das Absturzereignis aufgetreten ist; Mittel zum Einleiten von einem oder mehreren Fehlerwiederherstellungsverfahren, um Fehlerinformationen zu speichern; und Mittel zum Angeben, dass das eine oder die mehreren Fehlerwiederherstellungsverfahren erfolgreich abgeschlossen worden sind, wenn die Fehlerinformationen gespeichert worden sind.
DE102016200514.6A 2015-02-04 2016-01-18 Verfahren und Vorrichtungen für gesteuerte Wiederherstellung von Fehlerinformationen zwischen unabhängig voneinander betreibbaren Prozessoren Active DE102016200514B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562112061P 2015-02-04 2015-02-04
US62/112,061 2015-02-04
US14/870,923 US9842036B2 (en) 2015-02-04 2015-09-30 Methods and apparatus for controlled recovery of error information between independently operable processors
US14/870,923 2015-09-30

Publications (2)

Publication Number Publication Date
DE102016200514A1 true DE102016200514A1 (de) 2016-08-04
DE102016200514B4 DE102016200514B4 (de) 2019-08-14

Family

ID=56410457

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016200514.6A Active DE102016200514B4 (de) 2015-02-04 2016-01-18 Verfahren und Vorrichtungen für gesteuerte Wiederherstellung von Fehlerinformationen zwischen unabhängig voneinander betreibbaren Prozessoren

Country Status (4)

Country Link
US (1) US9842036B2 (de)
KR (1) KR101782246B1 (de)
CN (1) CN105843694B (de)
DE (1) DE102016200514B4 (de)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10459674B2 (en) 2013-12-10 2019-10-29 Apple Inc. Apparatus and methods for packing and transporting raw data
US9892084B2 (en) 2013-12-10 2018-02-13 Apple Inc. Methods and apparatus for virtual channel allocation via a high speed bus interface
US9830289B2 (en) 2014-09-16 2017-11-28 Apple Inc. Methods and apparatus for aggregating packet transfer over a virtual bus interface
US9971397B2 (en) 2014-10-08 2018-05-15 Apple Inc. Methods and apparatus for managing power with an inter-processor communication link between independently operable processors
US10042794B2 (en) 2015-06-12 2018-08-07 Apple Inc. Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link
US9965417B1 (en) * 2016-01-13 2018-05-08 Xilinx, Inc. Use of interrupt memory for communication via PCIe communication fabric
US10085214B2 (en) 2016-01-27 2018-09-25 Apple Inc. Apparatus and methods for wake-limiting with an inter-device communication link
US10572390B2 (en) 2016-02-29 2020-02-25 Apple Inc. Methods and apparatus for loading firmware on demand
US10198364B2 (en) 2016-03-31 2019-02-05 Apple Inc. Memory access protection apparatus and methods for memory mapped access between independently operable processors
US10523867B2 (en) 2016-06-10 2019-12-31 Apple Inc. Methods and apparatus for multi-lane mapping, link training and lower power modes for a high speed bus interface
US10586048B2 (en) * 2016-06-23 2020-03-10 Vmware, Inc. Efficient reboot of an operating system
US10061722B2 (en) * 2016-10-17 2018-08-28 Qualcomm Incorporated Method to handle concurrent fatal events in a multicore execution environment
US10775871B2 (en) * 2016-11-10 2020-09-15 Apple Inc. Methods and apparatus for providing individualized power control for peripheral sub-systems
US10591976B2 (en) 2016-11-10 2020-03-17 Apple Inc. Methods and apparatus for providing peripheral sub-system stability
US10346226B2 (en) 2017-08-07 2019-07-09 Time Warner Cable Enterprises Llc Methods and apparatus for transmitting time sensitive data over a tunneled bus interface
US11307921B2 (en) 2017-12-08 2022-04-19 Apple Inc. Coordinated panic flow
US10860412B2 (en) * 2017-12-08 2020-12-08 Apple Inc. Coordinated panic flow
US10331612B1 (en) 2018-01-09 2019-06-25 Apple Inc. Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors
KR102504660B1 (ko) * 2018-02-05 2023-03-02 삼성전자주식회사 응용 프로세서, 전장 프로세서, 그리고 응용 프로세서를 포함하는 컴퓨팅 장치
US11792307B2 (en) 2018-03-28 2023-10-17 Apple Inc. Methods and apparatus for single entity buffer pool management
US10509762B2 (en) * 2018-04-30 2019-12-17 Intel IP Corporation Data rate-adaptive data transfer between modems and host platforms
US11381514B2 (en) 2018-05-07 2022-07-05 Apple Inc. Methods and apparatus for early delivery of data link layer packets
US10430352B1 (en) 2018-05-18 2019-10-01 Apple Inc. Methods and apparatus for reduced overhead data transfer with a shared ring buffer
US10636577B2 (en) * 2018-05-25 2020-04-28 Qualcomm Incorporated Safe handling of link errors in a peripheral component interconnect express (PCIE) device
US10585699B2 (en) 2018-07-30 2020-03-10 Apple Inc. Methods and apparatus for verifying completion of groups of data transactions between processors
US10719376B2 (en) 2018-08-24 2020-07-21 Apple Inc. Methods and apparatus for multiplexing data flows via a single data structure
US10846224B2 (en) 2018-08-24 2020-11-24 Apple Inc. Methods and apparatus for control of a jointly shared memory-mapped region
US11829303B2 (en) 2019-09-26 2023-11-28 Apple Inc. Methods and apparatus for device driver operation in non-kernel space
US11558348B2 (en) 2019-09-26 2023-01-17 Apple Inc. Methods and apparatus for emerging use case support in user space networking
CN113360326B (zh) * 2020-03-06 2023-02-28 Oppo广东移动通信有限公司 调试日志获取方法及设备
US11321163B2 (en) * 2020-03-26 2022-05-03 Wipro Limited Device and method for monitoring functional safety in integrated circuits (ICS)
US11606302B2 (en) 2020-06-12 2023-03-14 Apple Inc. Methods and apparatus for flow-based batching and processing
US11775359B2 (en) 2020-09-11 2023-10-03 Apple Inc. Methods and apparatuses for cross-layer processing
US11954540B2 (en) 2020-09-14 2024-04-09 Apple Inc. Methods and apparatus for thread-level execution in non-kernel space
US11799986B2 (en) 2020-09-22 2023-10-24 Apple Inc. Methods and apparatus for thread level execution in non-kernel space
US11360839B1 (en) * 2021-02-26 2022-06-14 Quanta Computer Inc. Systems and methods for storing error data from a crash dump in a computer system
US11876719B2 (en) 2021-07-26 2024-01-16 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
US11882051B2 (en) 2021-07-26 2024-01-23 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
CN117407354B (zh) * 2023-12-15 2024-04-26 深圳市天辰防务通信技术有限公司 主控板、计算机组合装置及显示控制台

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3826796A1 (de) 1988-08-06 1990-02-08 Basf Ag Substituierte phenylacetonitrile zur verwendung als resistenzbrecher
US5943507A (en) 1994-12-22 1999-08-24 Texas Instruments Incorporated Interrupt routing circuits, systems and methods
US7100020B1 (en) 1998-05-08 2006-08-29 Freescale Semiconductor, Inc. Digital communications processor
US6553446B1 (en) 1999-09-29 2003-04-22 Silicon Graphics Inc. Modular input/output controller capable of routing packets over busses operating at different speeds
US6925547B2 (en) 2000-12-14 2005-08-02 Silicon Graphics, Inc. Remote address translation in a multiprocessor system
US6948094B2 (en) * 2001-09-28 2005-09-20 Intel Corporation Method of correcting a machine check error
US8352624B2 (en) 2002-04-18 2013-01-08 Citrix Systems, Inc. System for and method of streaming data to a computer in a network
US7055060B2 (en) * 2002-12-19 2006-05-30 Intel Corporation On-die mechanism for high-reliability processor
JP2006127460A (ja) 2004-06-09 2006-05-18 Renesas Technology Corp 半導体装置、半導体信号処理装置、およびクロスバースイッチ
US8788822B1 (en) 2005-06-10 2014-07-22 Blue Coat Systems, Inc. Enhanced QoS solution for thin client or remote access sessions
US7643753B2 (en) 2005-09-29 2010-01-05 Broadlight Ltd. Enhanced passive optical network (PON) processor
JP2008262437A (ja) * 2007-04-13 2008-10-30 Renesas Technology Corp プロセッサシステムおよび例外処理方法
US7941682B2 (en) 2007-05-09 2011-05-10 Gainspan, Inc. Optimum power management of system on chip based on tiered states of operation
US20100017655A1 (en) 2008-07-16 2010-01-21 International Business Machines Corporation Error Recovery During Execution Of An Application On A Parallel Computer
US7801161B2 (en) 2008-10-20 2010-09-21 Broadlight, Ltd. Gigabit passive optical network (GPON) residential gateway
US8255725B2 (en) 2009-04-28 2012-08-28 Kabushiki Kaisha Toshiba Information processing apparatus and power-saving control method
US9081501B2 (en) 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
US8656228B2 (en) * 2010-06-23 2014-02-18 International Business Machines Corporation Memory error isolation and recovery in a multiprocessor computer system
US8677180B2 (en) * 2010-06-23 2014-03-18 International Business Machines Corporation Switch failover control in a multiprocessor computer system
JP5962210B2 (ja) 2012-05-25 2016-08-03 富士通株式会社 マルチプロセッサシステム、及びプロセッサ間通信方法
US9460019B2 (en) 2014-06-26 2016-10-04 Intel Corporation Sending packets using optimized PIO write sequences without SFENCEs
US9830289B2 (en) 2014-09-16 2017-11-28 Apple Inc. Methods and apparatus for aggregating packet transfer over a virtual bus interface
US9971397B2 (en) 2014-10-08 2018-05-15 Apple Inc. Methods and apparatus for managing power with an inter-processor communication link between independently operable processors
EP3013008B1 (de) 2014-10-23 2019-02-06 Alcatel Lucent Senden von Datenverkehr in einem Kommunikationsnetz
US10042794B2 (en) 2015-06-12 2018-08-07 Apple Inc. Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
„PCI Express Base Specification Revision 3.1", veröffentlicht am 08. Oktober 2014

Also Published As

Publication number Publication date
KR20160096035A (ko) 2016-08-12
CN105843694A (zh) 2016-08-10
CN105843694B (zh) 2019-01-15
KR101782246B1 (ko) 2017-09-26
DE102016200514B4 (de) 2019-08-14
US20160224442A1 (en) 2016-08-04
US9842036B2 (en) 2017-12-12

Similar Documents

Publication Publication Date Title
DE102016200514B4 (de) Verfahren und Vorrichtungen für gesteuerte Wiederherstellung von Fehlerinformationen zwischen unabhängig voneinander betreibbaren Prozessoren
DE112013002014B4 (de) Bereitstellen von anwendungsgestützter Überwachung und Wiederherstellung für einen Hypervisor eines HA-Clusters
DE69923085T2 (de) Initialisieren und wiederanlaufen von betriebssystemen
DE102006048115A1 (de) System und Verfahren zum Aufzeichnen von behebbaren Fehlern
DE102020120102A1 (de) Globale dauerhafte Speicherleerung
DE102004004796B4 (de) Vorrichtung zur Datenübertragung zwischen Speichern
DE60128396T2 (de) Computer-peripheriegerät, das betreibbar bleibt, wenn die operationen des zentralprozessors suspendiert werden
DE112013007279T5 (de) Ereignisausgelöstes speichern von Daten in einem nicht flüchtigen Speicher
DE112010003049T5 (de) Dateisystem für duale Betriebssysteme
DE112013001805T5 (de) Verfahren und Gerät zum Verbessern eines Winterschlaf- und Wiederaufnahmeprozesses mittels Benutzerraum-Synchronisation
DE112012005209T5 (de) Brückenfunktion zwischen Virtual Machine Monitor und Bare-Metal-Bootvorgang
DE102012109614A1 (de) Fehlerbehebung bei Stapel-Korruption in eingebetteten Softwaresystemen
DE102007039156A1 (de) EFI-basierter Mechanismus zum Exportieren von Plattform-Verwaltungsfähigkeiten in das Betriebssystem
DE112012006227B4 (de) Systeme und verfahren für den remotezugriff auf den direkten speicher mit reduzierter latenzzeit
DE102005001451A1 (de) Informationsverarbeitungsvorrichtung und Spannungsversorgungs-Steuerungsverfahren
DE102018005753A1 (de) Serdes link training
DE112011102876T5 (de) Ressourcenverwaltungs- und Sicherheitssystem
DE10242614A1 (de) Peripherie-Überwachungs-Einrichtung und ein diese aufweisendes Computersystem
DE112004000334T5 (de) Auf Richtlinien basierende Reaktion auf Systemfehler, die während der Betriebssystemlaufzeit eintreten
DE60224438T2 (de) Aggregation von hardwareereignissen in mehrfach knotensystemen
DE102005041312A1 (de) Speicherzugriff auf virtuelles Targetgerät
DE102020105939A1 (de) Enhanced-Serial-Peripheral-Interface-(eSPI)-Signalisierung zurAbsturzereignisbenachrichtigung
DE112015003569T5 (de) Verfahren und System zum Verwenden von NAND-Seitenpuffern, um die Übertragungspuffernutzung eines Festkörperlaufwerks zu verbessern
DE112013000812T5 (de) Variable Bestätigungsrate zum Verringern von Buskonflikt in Gegenwart von Datenübertragungsfehlern
DE102013202627B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Verwalten einer Speichereinheit unter Verwendung einer hybriden Steuereinheit

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final