DE102013200795A1 - Initialisierung von GPU unter Benutzung einer ROM-basierten Initialisierungs-Einheit und programmierbarer Mikro-Steuerung - Google Patents

Initialisierung von GPU unter Benutzung einer ROM-basierten Initialisierungs-Einheit und programmierbarer Mikro-Steuerung Download PDF

Info

Publication number
DE102013200795A1
DE102013200795A1 DE102013200795A DE102013200795A DE102013200795A1 DE 102013200795 A1 DE102013200795 A1 DE 102013200795A1 DE 102013200795 A DE102013200795 A DE 102013200795A DE 102013200795 A DE102013200795 A DE 102013200795A DE 102013200795 A1 DE102013200795 A1 DE 102013200795A1
Authority
DE
Germany
Prior art keywords
initialization
ifr
rom
operations
initialization unit
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.)
Pending
Application number
DE102013200795A
Other languages
English (en)
Inventor
Lincoln GARLICK
Saket JAMKAR
Steven MUELLER
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.)
Nvidia Corp
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of DE102013200795A1 publication Critical patent/DE102013200795A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/223Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
    • 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/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2147Locking files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Eine Zugangsweise ist offenbart zum Durchführen von Initialisierungs-Operationen für eine Grafik-Verarbeitungs-Einheit (GPU). Die Zugangsweise umfasst Detektieren von Fehlern, während eine oder mehrere Initialisierungs-Operationen durchgeführt werden. Ferner umfasst die Zugangsweise ein Freigeben eines Wartens auf einem Kommunikations-Link, welcher die GPU mit einer Speicherbrücke koppelt, und Veranlassen, dass einem Benutzer Debug-Ausgabe angezeigt wird, welche den Fehler anzeigt.

Description

  • HINTERGRUND DER ERFINDUNG
  • GEBIET DER ERFINDUNG
  • Ausführungsformen der vorliegenden Erfindung betreffen im Allgemeinen Initialisierung und insbesondere Initialisierung einer Grafik-Verarbeitungs-Einheit (GPU) unter Benutzung einer ROM-basierten Initialisierungs-Einheit und einer programmierbaren Mikro-Steuerung.
  • BESCHREIBUNG DER BETREFFENDEN TECHNIK
  • Gewisse fortgeschrittene Computer-Systeme vergrößern die Verarbeitungs-Leistungsfähigkeiten einer Allgemeinzweck-CPU mit einem Spezial-Prozessor, wie etwa eine Grafik-Verarbeitungs-Einheit (GPU). Typischerweise ist in solchen Architekturen die GPU initialisiert, um die GPU in einer vordefinierten Weise zu konfigurieren, bevor ein Kommunikations-Link, wie etwa ein Peripheral-Component-Interconnect-Express-(PCIe®)-Link, etabliert ist. Ein herkömmlicher Weg die GPU zu initialisieren ist, indem Anweisungen von einem Nur-Lese-Speicher (ROM), welcher extern zu der GPU ist, gelesen werden und indem Schreib-Operationen an Register innerhalb der GPU gemäß diesen Anweisungen durchgeführt wird. Insbesondere führt eine Initialisieren-von-ROM-Komponente (IFR), welche ausgelöst (triggered) ist, um bei einer vordefinierten Zeit nach Zurücksetzen auszuführen, die Register-Schreib-Operationen durch, nachdem bestimmt ist, dass der ROM existiert. Wenn die IFR Schreiben an die Register beendet, löst (bzw. gibt frei) (releases) die IFR ein Warten bzw. Fernhalten bzw. Hindern (holdoff) auf dem Kommunikations-Link, was erlaubt, dass Kommunikation erfolgt. Für PCIe-Geräte erlaubt ein Lösen des Wartens, LTSSM-Link-Training zu beginnen, und erfolgt typischerweise nur, nachdem die IFR ihre Register-Schreib-Operationen beendet, um so sicherzustellen, dass diese Schreib-Operationen nicht mittels anderer Programme oder Prozesse innerhalb des größeren Systems behindert bzw. interferiert werden können.
  • Solch eine herkömmliche Herangehensweise, in welcher Link-Training nur beginnt, nachdem alle Register-Schreib-Operationen vollendet sind, ist nicht robust gegen Fehler und kann nicht auf Fehler überprüft werden (debugged). Weil das PCI-Link-Training nur beginnt, nachdem Register-Schreib-Prozesse vollendet worden sind, kann insbesondere irgendein Fehler, welcher die Schreib-Operationen darin hindert, zu vollenden, nicht identifiziert werden. Weil die IFR nur von dem ROM liest und an die Register schreibt, müssen individuelle Register-Adressen innerhalb des ROM kodiert werden, wodurch ein großer ROM benötigt ist. Zusätzlich ist die IFR typischerweise nicht fähig, zusätzliche Funktionalität bereitzustellen, wie etwa Lesen-Modifzieren-Schreiben-Operationen, Nachfragen-Operationen (polling operations), Verzweigung bzw. Verzweigen, und Zeit-Verzögerungen, was für die Initialisierung und die Fehler-Erkennung der GPU nützlich sein könnte.
  • Wie das Vorangehende illustriert, ist was in der Technik gebraucht ist, ein effektiverer Weg, eine GPU zu initialisieren, welcher einen oder mehrere der Nachteile, welche oben diskutiert sind, adressiert.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Eine Ausführungsform der Erfindung führt eine Zugangsweise zum Durchführen von Initialisierungs-Operationen für eine Grafik-Verarbeitungs-Einheit (GPU) aus. Die Zugangsweise umfasst ein Detektieren eines Fehlers, während eine oder mehrere Initialisierungs-Operationen durchgeführt werden. Zusätzlich umfasst die Zugangsweise ein Lösen des Wartens auf einem Kommunikations-Link (holdoff an a communication link), welcher die GPU mit einem Speicher koppelt, wodurch erlaubt ist, dass der Fehler über Software auf Fehler analysiert werden kann (debugged), sobald das System hochfährt, oder was sogar dazu führt, dass Fehleranalyse-Ausgabe (debug output) an einen Benutzer angezeigt wird, welche Ausgabe den Fehler anzeigt. In einer Ausführungsform umfasst der Zugang ferner ein Programmieren einer Mikro-Steuerung, um zumindest eine der einen oder der mehreren Initialisierungs-Operationen durchzuführen.
  • Andere Ausführungsformen umfassen, ohne Begrenzung, ein Computer-lesbares Medium, welches Anweisungen umfasst, welche eine Verarbeitungs-Einheit in die Lage versetzen, einen oder mehrere Aspekte der offenbarten Verfahren zu implementieren, sowie ein System, welches konfiguriert ist, einen oder mehrere Aspekte der offenbarten Verfahren zu implementieren.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • So dass die Weise, in welcher die oben rezitierten Merkmale der vorliegenden Erfindung im Detail verstanden werden können, kann eine spezifischere Beschreibung der Erfindung, welche oben kurz beschrieben ist, mittels Bezugnahme auf Ausführungsformen gegeben werden, von welchen einige in den angehängten Zeichnungen illustriert sind. Es ist jedoch zu bemerken, dass die angehängten Zeichnungen nur typische Ausführungsformen dieser Erfindung illustrieren und daher nicht zu betrachten sind, ihren Geltungsbereich zu begrenzen, da die Erfindung andere gleich effektive Ausführungsformen zulassen kann.
  • 1 illustriert ein Computer-System, welches konfiguriert ist, einen oder mehrere Aspekte der vorliegenden Erfindung zu implementieren.
  • 2 illustriert ein Sub-System, welches konfiguriert ist, GPU-Initialisierung durchzuführen, gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 3 ist eine detailliertere Illustration des ROM von 2 gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 4 ist ein Flussdiagramm von Verfahrensschritten zum Durchführen von Initialisieren über eine IFR-Komponente und Lösen eines PCIe-Links auf das Auftreten eines Fehlers hin, gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 5 ist ein Flussdiagramm von Verfahrensschritten zum Konfigurieren einer GPU auf ein Zurücksetzen hin, gemäß einer Ausführungsform der vorliegenden Erfindung.
  • DETAILLIERTE BESCHREIBUNG
  • System-Übersicht
  • 1 illustriert ein Computer-System, welches konfiguriert ist, einen oder mehrere Aspekte der vorliegenden Erfindung zu implementieren. Wie gezeigt ist, umfasst Computer-System 100 eine Zentral-Verarbeitungs-Einheit (CPU) 102 und einen System-Speicher 104, welche über einen Zwischenverbindungs-Pfad kommunizieren, welcher eine Speicherbrücke 105 umfassen kann. Speicherbrücke 105, welche z. B. ein Northbridge-Chip sein kann, ist über einen Bus oder einen anderen Kommunikations-Pfad 106 (z. B. ein HyperTransport-Link) mit einer I/O-(Eingabe/Ausgabe)-Brücke 107 verbunden. I/O-Brücke 107, welche z. B. ein Southbridge-Chip sein kann, empfängt Benutzer-Eingabe von einem oder mehreren Benutzer-Eingabe-Geräten 108 (z. B. Tastatur, Maus) und leitet die Eingabe an CPU 102 über Pfad 106 und Speicherbrücke 105 weiter. Ein Parallel-Verarbeitungs-Subsystem 112 ist mit Speicherbrücke 105 über einen Kommunikations-Link gekoppelt, welcher als ein Peripheral-Component-Interconnect-Express-(PCIe)-Link 113 illustriert ist. In einer Ausführungsform ist Parallel-Verarbeitungs-Subsystem 112 ein Grafik-Subsystem, welches Pixel an ein Anzeige-Gerät 110 liefert (z. B. ein konventioneller Kathoden-Strahl-Röhre- oder Flüssig-Kristall-Anzeige-basierter Monitor). Eine System-Platte 114 ist auch mit I/O-Brücke 107 verbunden. Ein Switch 116 stellt Verbindungen zwischen I/O-Brücke 107 und anderen Komponenten bereit, wie etwa ein Netzwerk-Adapter 118 und verschiedene Hinzufügungs-Karten 120 und 121. Andere Komponenten (nicht explizit gezeigt), einschließlich Universal-Serial-Bus (USB) oder andere Port-Verbindungen, Kompakt-Disk(CD)-Laufwerke, Digital-Video-Disk-(DVD)-Laufwerke, Film-Aufzeichnungs-Geräte, und dergleichen können auch mit I/O-Brücke 107 verbunden sein.
  • In einer Ausführungsform inkorporiert Parallel-Verarbeitungs-Subsystem 112 Schaltung, welche für Grafik- und Video-Verarbeitung optimiert ist, einschließlich z. B., Video-Ausgabe-Schaltung und konstituiert bzw. bildet eine Grafik-Verarbeitungs-Einheit (GPU). In einer anderen Ausführungsform inkorporiert das Parallel-Verarbeitungs-Subsystem 112 Schaltung, welche für Allgemeinzweck-Verarbeitung optimiert ist, während die darunter liegende Rechen-Architektur, welche hierin beschrieben ist, beibehalten ist. In noch einer anderen Ausführungsform kann das Parallel-Verarbeitungs-Subsystem 112 in ein oder mehrere System-Elemente integriert sein, wie etwa die Speicherbrücke 105, CPU 102, und I/O-Brücke 107, um ein System auf Chip (SoC) zu bilden.
  • Es wird geschätzt werden, dass das hierin gezeigte System illustrativ ist und das Variationen und Modifikationen möglich sind. Die Verbindungs-Topologie einschließlich der Anzahl und der Anordnung von Brücken, der Anzahl von CPUs 102, und der Anzahl von Parallel-Verarbeitungs-Subsystemen 112 kann modifiziert werden, wie gewünscht ist. Zum Beispiel ist in einigen Ausführungsformen System-Speicher 104 mit CPU 102 direkt verbunden anstatt durch eine Brücke und andere Geräte kommunizieren mit System-Speicher 104 über Speicherbrücke 105 und CPU 102. In anderen alternativen Topologien ist Parallel-Verarbeitungs-Subsystem 112 mit I/O-Brücke 107 oder direkt mit CPU 102 verbunden anstatt mit Speicherbrücke 105. In noch anderen Ausführungsformen kann I/O-Brücke 107 und Speicherbrücke 105 in einen einzelnen Chip integriert sein. Große Ausführungsformen können zwei oder mehr CPUs 102 und zwei oder mehr Parallel-Verarbeitungs-Systeme 112 umfassen. Die besonderen hierin gezeigten Komponenten sind optional; z. B. ist irgendeine Anzahl von Hinzufügungs-Karten oder peripheren Geräten unterstützt. In einigen Ausführungsformen ist der Switch 116 eliminiert und Netzwerk-Adapter 118 und Hinzufügungs-Karten 120, 121 verbinden direkt mit I/O-Brücke 107.
  • 2 illustriert ein Subsystem 200, welches konfiguriert ist, GPU-Initialisierung durchzuführen, gemäß einer Ausführungsform der vorliegenden Erfindung. Wie gezeigt ist, ist das Subsystem 200 auf einer Grafik-Karte 202 ansässig und umfasst, ohne Begrenzung, eine GPU 200, welche mit einer Speicherbrücke 105 über einen PCIe-Link 113 gekoppelt ist, und einen ROM 260.
  • Die GPU 210 umfasst Bänder bzw. Bügel bzw. Träger bzw. Streifen (straps) 245, ein Initialisierung-von-ROM-Element („IFR”) 240, eine Mikro-Steuerung 250, und PCIe-Basis-Adresse-Register #0(„BAR0”)-Register 234. Die Bügel 245 können von der GPU 210 hervorstehen und können Einstellungen (settings) umfassen, welche gelesen werden können, um Information über die GPU 210, die Grafik-Karte 202 und/oder das Subsystem 200 festzustellen bzw. zu versichern. Insbesondere können die Bügel 245 von der IFR 240 gelesen werden, um zu bestimmen, ob der ROM 260 innerhalb des Subsystems 200 vorhanden ist. In einigen Ausführungsformen kann die IFR 240 nichts tun, was über ihre initialen Lese-Operationen von Bügel 245 hinausgeht und kann automatisch das Warten bzw. Fernhalten (holdoff) auf den PCIe-Link 113 lösen bzw. freigeben, wenn die Bügel 245 anzeigen, dass ein ROM 260 nicht innerhalb des Subsystem 200 vorhanden ist, um dadurch System-Konfigurationen zu unterstützen, wo kein ROM angehaftet ist, ohne eine separate Hardware-Implementierung der IFR zu erfordern.
  • Die IFR 240 ist kommunikativ mit dem ROM 260 z. B. über einen Bus 242 gekoppelt. Die IFR ist ferner mit den BAR0-Registern 234 kommunikativ gekoppelt. Die IFR 240 ist konfiguriert, von den Bügeln 245 bei einer vordefinierten Zeit nach Zurücksetzen zu lesen, um zu bestimmen, ob ein ROM 260 vorhanden ist. Auf ein Bestimmen hin, dass ein ROM 260 vorhanden ist, liest die IFR 240 Adressen und Daten von dem ROM 260 und führt Schreibe- und/oder Lesen-Modifizieren-Schreiben-Operationen an den BAR0-Registern 234 basierend auf diesen Anweisungen durch. Ferner kann die IFR 240 konfiguriert sein, die Mikro-Steuerung 250 zu programmieren, einschließlich über Schreiben auf ein oder mehrere der BAR0-Register 234, welche indirekt auf Mikro-Steuerungs-Konfigurations-Register 255, um fortgeschrittene Initialisierungs-Sequenzen durchzuführen, wie etwa Abfrage-Operationen (polling operations), Verzweigen, Verzögerungen, und wiederholte Zugriffe auf eine Ressource. Eine oder mehrere dieser fortgeschrittenen Initialisierungs-Sequenzen können Operationen involvieren, welche die IFR 240 nicht selbst durchführen kann, weil die IFR 240 nur für vorentworfene Operationen über einen begrenzten Satz von Schnittstellen befähigt ist. Im Gegensatz dazu ist die Mikro-Steuerung, welche eine generische Mikro-Steuerung sein kann, welche einen Allgemein-Anweisungs-Satz wie eine CPU anbietet, und welche einen vollständigeren Satz von Schnittstellen mit dem System hat, in der Lage, Operationen durchzuführen, welche nicht vor einer Hardware-Herstellungs-Zeit konzipiert sind (conceived). Nach Programmierung der Mikro-Steuerung 250 kann die IFR 240 gelenkt werden, um Ausführung der Operation über eine Anweisung in den ROM 260 loszutreten (kick off), welche dazu führt, ohne Begrenzung, dass die Mikro-Steuerungs-Hand-off-Register 235 geschrieben werden.
  • In einer Ausführungsform ist die IFR 240 konfiguriert, automatisch das Link-Training-Warten bzw. Verhindern (holdoff) auf PCIe-Link 113 zu lösen bzw. freizugeben, wenn die IFR 240 Initialisierungs-Schritte vollendet. In einer alternativen Ausführungsform kann die IFR 240 konfiguriert sein, die Funktion eines Lösens des PCIe-Links 113 an die Mikro-Steuerung 240 zu übergeben (hand off). Zum Beispiel kann ein Register in den BAR0-Registern 234 benutzt werden, um Information darüber zu speichern, ob die IFR 240 das PCIe-Link-113-Warten löst oder die Mikro-Steuerung 250 erfordert, um das Warten bzw. Verhindern zu lösen. In einer Ausführungsform ist Link-Warten-Lösen selbst unter Benutzung von IFR-Steuer-Registern 231 implementiert und insbesondere eines PCIe-Link-Training-Warten-Registers 236, welches ein Link-Training initiiert, wenn auf einen spezifischen Wert geschrieben, und eines Auto-Lösen-Registers (auto-release-register) 237, welches anzeigt, ob eine Terminierung der IFR 240 automatisch den PCIe-Link 113 löst. Ein Übergeben bzw. ein Weiterreichen der Freigabe bzw. des Lösens (release) des PCIe-Links 113 an die Mikro-Steuerung 250 umfasst ein Deaktivieren des Auto-Freigabe-Registers 237 und ein Belassen des Wertes des Warte-Registers 236 am Platz für die Mikro-Steuerung 250 zu modifizieren, um dadurch eine Link-Freigabe zu verzögern, bis die Mikro-Steuerung den Wert des Mikro-Steuerungs-Warte-Registers 236 modifiziert, z. B. nach Lesen des Wertes des Auto-Freigabe-Registers 237, um zu bestimmen, dass IFR-Anweisungen, welche in dem ROM 260 kodiert sind, geschrieben worden sind mit der Absicht für die Mikro-Steuerung 250, die Freigabe durchzuführen.
  • Die Mikro-Steuerung 250 ist in der Lage, von irgendeiner Stelle auf der GPU 210 zu lesen und auf irgendeine Stelle auf der GPU 210 zu schreiben. Ferner umfasst die Mikro-Steuerung 250 Mikro-Steuerungs-Konfigurations-Register 255, auf welche die IFR 240 zugreifen kann, um die Mikro-Steuerung 250 zu programmieren. In einer Ausführungsform ist die IFR 240 konfiguriert, eine oder mehrere einer Lesen-Modifizieren-Schreiben-Operation, wiederholte Schreiben-Operationen auf dieselbe Adresse, und/oder Schreiben-Operationen auf ansteigende Adressen durchzuführen, um Programmierung der Mikro-Steuerung 250 zu ermöglichen. In einer weiteren Ausführungsform sind die Register-Adressen für wiederholte Schreib-Operationen an dieselbe Adresse und/oder Schreib-Operation an ansteigende Adressen nicht individuell in den ROM 260 kodiert.
  • In einer Ausführungsform führt Mikro-Steuerung 250 Programm-Anweisungen in den Mikro-Steuerungs-Konfigurations-Registern 255 aus, nachdem die IFR 240 Durchführen von Initialisierungs-Operationen beendet hat. In einer alternativen Ausführungsform kann die Mikro-Steuerung 250 damit beginnen, Programm-Anweisungen in den Mikro-Steuerungs-Konfigurations-Registern 255 auszuführen, während die IFR 240 Initialisierungs-Operationen durchführt. Das heißt, die Mikro-Steuerung 250 und die IFR 240 können Initialisierungs-Operationen simultan durchführen.
  • Die BAR0-Register 234 umfassen IFR-Fehler-Status-Register 232, Register für indirekten Zugriff auf die PCIe-Konfigurations-Spezifizierungs-Register 233, IFR-Konfigurations-Register 231, Mikro-Steuerungs-Weiterreichungs-Register 235, und in einigen Ausführungsformen Umleitungs-Register (indirection registers) zum Zugriff auf den ROM 260. Wie oben beschrieben ist, speichern die IFR-Speicher-Fehler-Status-Register 232 Information über Fehler, welchen während des Initialisierungs-Prozesses begegnet ist. Zum Beispiel können die IFR-Fehler-Status-Register 232 Bits speichern, welche eine gescheiterte Paritätsüberprüfung für eine Anweisung anzeigen, eine fehlerhafte ROM 260-Größe, oder ein Fangen (catch-all) für andere leicht detektierbare ROM 260-Formatierungsfehler. Die Information, welche in den IFR-Fehler-Status-Registern 232 gespeichert ist, kann später über den Grafik-Karte 202-Gerätetreiber zur Fehler-Handhabung abgerufen werden, abgefragt mittels eines Ingenieurs über einen Fehler-Aufspürer (debugger) durch den PCIe-BAR0-Adress-Raum für die Grafik-Karte 202, und/oder als Fehler-Protokoll-Ausgabe (debug output) angezeigt werden.
  • Die PCIe-Konfigurations-Spezifikations-Register 233 stellen einen Konfigurations-Raum für die GPU 210 bereit. Die PCIe-Konfigurations-Spezifikations-Register 233 umfassen, ohne Begrenzung, den physikalische-Adresse-Versatz, bei dem auf BAR0-Adressen, welche innerhalb des Registers 234 gespeichert sind, als Teil des Speicher-Subsystems zugegriffen werden können. Im Allgemeinen können die BAR0-Adressen Speicher-Adressen halten, welche mittels der GPU 210 benutzt werden, oder Verschiebungen bzw. Versätze (offsets) von Port-Adressen. Um die GPU 210 zu initialisieren, kann die IFR 240 unter anderem auf BAR0-Adressen innerhalb der GPU 210 zugreifen, welche über den Speicher-Versatz bzw. Speicher-Verschiebung zugreifbar sind, welche mittels BAR0 über eine separate Schnittstelle gegeben ist als der virtuelle-Speicher-BAR0-Versatz, und kann Register-Operationen durchführen.
  • Die IFR-Konfigurations-Register 231 umfassen, ohne Begrenzung, einen PCIe-Link-Training-Warte-Wert 236 und einen Auto-Freigabe-Wert 237. Der PCIe-Link-Training-Warte-Wert 236 initiiert Link-Training, wenn auf einen spezifischen Wert geschrieben, und der Auto-Freigabe-Wert 237 zeigt an, ob der Akt eines Terminierens der IFR 240 automatisch das Warten bzw. das Verhindern auf dem PCIe-Link 113 freigibt. Wie oben beschrieben ist, kann die Link-Warte-Freigabe-Operation an die Mikro-Steuerung 250 übergeben werden. In solchen Fällen deaktiviert die IFR 240 den Auto-Freigabe-Wert 237 und lässt den Wert des Warte-Registers 236 am Platz für die Mikro-Steuerung 250 zu modifizieren, um dadurch eine Link-Warte-Freigabe zu verzögern, bis die Mikro-Steuerung 250 bereit für Link-Training ist und PCIe-Geräte-Enumeration der Grafik-Karte 202 erfolgt. Ferner kann die IFR 240 automatisch das Warten bzw. das Fernhalten (holdoff) auf dem PCIe-Link 113 terminieren und freigeben, wenn die IFR 240 einem Fehler begegnet, unabhängig davon, ob das Auto-Freigabe-Register gesetzt ist, das Warten bzw. Fernhalten freizugeben oder nicht. Die IFR 240 führt diesen Typ einer Freigabe dadurch durch, dass der Wert des PCIe-Link-Training-Warte-Wertes 236 auf „deaktiviert” gesetzt wird, um dadurch das Warten bzw. das Fernhalten von PCIe-Link 113 freizugeben und zu erzwingen, dass Link-Training beginnt.
  • Das PCIe-Link-Training-Warte-Auto-Freigabe-Register 237 kann benutzt werden, um zu bestimmen, ob die PCIe-Link-Warte-Freigabe an die Mikro-Steuerung 250 übergeben wird. Wie oben beschrieben ist, kann die IFR 240 automatisch das Warten auf dem PCIe-Link 113 freigeben, wenn die IFR 240 die Initialisierung beendet. Alternativ kann jedoch die IFR 240 die Link-Freigabe stattdessen an die Mikro-Steuerung 250 übergeben. Der ROM 260 kann dadurch anzeigen, ob solch eine Übergabe stattfinden sollte, dass Anweisungen für die IFR 240 umfasst sind, um eine Auto-Freigabe dadurch zu deaktivieren, dass an das Auto-Freigabe-Register 237 geschrieben wird, die Mikro-Steuerung zu programmieren, und Ausführung der Mikro-Steuerung dadurch anzustoßen, dass das Mikro-Steuerungs-Übergabe-Register 235 geschrieben wird, um dadurch ein Übergeben der PCIe-Link-Freigabe an die Mikro-Steuerung 250 zu aktivieren oder zu deaktivieren.
  • Der ROM 260 kann einen fixen bzw. fixierten (fixed) Funktions-Abschnitt 310 umfassen, welcher der IFR 240 erlaubt, zu validieren, ob der ROM 260 korrupt ist oder nicht, sowie gewisse zusätzliche Sicherheits-Merkmale. Validierungs- und Sicherheits-Techniken, welche innerhalb des fixen Funktions-Abschnitts 310 umfasst sein können, umfassen ohne Beschränkung, einen Gesamt-ROM-Größe-Wert, einen Checksummen-Wert, und eine vordefinierte Sequenz von 1en und/oder 0en. Diese Techniken sowie andere Aspekte des ROM 260 sind im größeren Detail unten mit Bezug auf 3 beschrieben. Der ROM 260 kann ferner einen Erweiterungs-Abschnitt 319 umfassen, welcher Information über Register-Operationen umfasst, welche während einer Initialisierung durchzuführen sind. In einigen Ausführungsformen umfassen Register-Operationen ein Schreiben an BAR0-Register 234, sowie ein Durchführen von Leseb-Modifizieren-Schreiben-Operationen an diese Register. Der Erweiterungs-Abschnitt 319 des ROM 260 kann ferner Anweisungen zum Programmieren der Mikro-Steuerung 250 umfassen, welche auch exklusiv über Schreib-Aktivitäten an verschiedene BAR0-Register 234 in einigen Ausführungsformen durchgeführt werden können, um fortgeschrittene Initialisierungs-Sequenzen durchzuführen, sowie Bits, welche benutzt werden, um anzuzeigen, ob Daten in dem Erweiterungs-Abschnitt selbst korrupt sind oder andererseits inkorrekt sind. In verschiedenen Ausführungsformen können Fehler in dem Erweiterungs-Abschnitt sowie andere Fehler, denen während des Initialisierungs-Prozesses begegnet wird (z. B. ein Fehler, welcher durch einen Fehler (bug) in IFR 240 verursacht ist) automatisch eine Freigabe von PCIe-Link 113 mittels der IFR 240 auslösen (trigger). In solchen Fällen kann die IFR 240 zu Information führen, welche nützlich ist zum Fehler-Finden bzw. Fehler-Analysieren, welche über PCIe-Link 113 verfügbar ist, und kann einem Benutzer über das Anzeige-Gerät 110 angezeigt werden. Solche Information kann in IFR-Fehler-Status-Registern 232 gespeichert sein und davon abgerufen sein.
  • 3 ist eine detailliertere Illustration des ROM 260 von 2 gemäß einer Ausführungsform der vorliegenden Erfindung. Wie gezeigt ist, umfasst der ROM 260 einen fixen Funktions-Abschnitt 310 und einen Erweiterungs-Abschnitt 319. Der fixe Funktions-Abschnitt umfasst Sicherheits-Merkmale 311 und ROM-Validierungs-Werte 312. Sicherheits-Merkmale 311 können ein Signatur-Wort und/oder spezifische erwartete Sequenzen von 1en und/oder 0en umfassen. ROM-Validierungs-Werte können einen Gesamt-ROM-Größe-Wert umfassen, welcher die totale Größe oder die Gesamtgröße des ROM 260 in Bytes anzeigt und/oder einen Prüfsumme-Wert, welcher benutzt ist, um zu bestimmen, ob die tatsächliche Summe einer Gesamt-ROM-Größe-Anzahl von Bytes in dem ROM, welche mittels einer vordefinierten Parität ausmaskiert ist (masked off), dem Prüfsummen-Wert gleicht.
  • Im Allgemeinen beginnt, nach Identifizieren des Vorhandenseins von ROM 260, die IFR 240 Lesen des fixen Funktions-Abschnitts 310. Insbesondere liest IFR 240 zuerst die Sicherheits-Merkmale 311 und verifiziert sie. Wenn der ROM 260 korrupt ist oder gefälscht ist, kann die Sicherheits-Merkmal-Verifikation scheitern. In solchen Fällen kann die IFR 240 terminieren, das Warten bzw. das Fernhalten auf PCIe-Link 113 freizugeben und veranlassen, dass geeignete Fehler-Aufspür-Ausgabe bzw. Debug-Ausgabe dem Benutzer angezeigt wird. Wenn die Sicherheits-Merkmale 310 verifiziert sind, dann fährt die IFR 240 damit fort, den fixen Funktions-Abschnitt 310 zu lesen. Insbesondere ruft die IFR 240 von dem fixen Funktions-Abschnitt 310 die Validierungs-Werte 312 ab. Diese Werte können benutzt werden, in Kombination mit der Abwesenheit oder frühen Anwesenheit der LETZTEN Anweisung 334, zu bestimmen, ob, z. B. die tatsächliche Gesamt-ROM-Größe mit einer erwarteten Größe übereinstimmt. Eine fehlende Übereinstimmung könnte einen korrupten oder gefälschten ROM 260 anzeigen und auch die IFR 240 veranlassen, zu terminieren, das PCIe-Link 113-Warten (holdoff) freizugeben und veranlassen, dass geeignete Fehler-Analyse-Ausgabe einem Benutzer angezeigt wird.
  • Der Erweiterungs-Abschnitt 319 umfasst einige verschiedene Typen von Daten. Wie gezeigt ist, umfassen die Daten IFR-Anweisungs-Satz 320, Mikro-Steuerungs-Anweisungs-Satz 330 und andere Anweisungen 329. Der IFR-Anweisungs-Satz 320 umfasst Anweisungen für die Operationen, welche die IFR 240 während der Initialisierung durchführt. Innerhalb des IFR-Anweisungs-Satzes umfasst jede IFR-Anweisung 322 eine Adresse („ADDR”) 323 und Daten („Daten-Befehl”) 324. Die Adresse 323 spezifiziert eine Register-Adresse (z. B. eine BAR0-Adresse) und die Daten 324 zeigen an, dass eine Register-Schreib-Operation mittels der IFR 240 an die Adresse 323 durchzuführen ist. In einigen Ausführungsformen umfassen die Daten 324 Doppelwörter (dwords), und jede IFR-Anweisung 322 umfasst eingebettete Werte zum Validieren der Anweisung 322. Zum Beispiel können die Daten 324 ein Paritäts-Bit umfassen, welches mit jeder Anweisung assoziiert ist, und die IFR 240 kann konfiguriert sein, z. B. standardgemäß, zu bestimmen, ob eine Parität der Anweisung mit dem Paritäts-Bit für die Anweisung übereinstimmt. Das Paritäts-Bit kann eine gerade oder ungerade Parität spezifizieren und kann mittels der IFR 240 benutzt sein, um zu bestimmen, ob die tatsächliche Zahl von Bits mit Wert eins, welche in der Anweisung 322 gerade oder ungerade ist, ein Paritäts-Scheitern bzw. einen Paritäts-Fehler anzeigt. Eine fehlende Übereinstimmung bzw. Fehlanpassung (mismatch) könnte einen korrupten oder gefälschten ROM 260 anzeigen. Solche Pro-Anweisung-Paritäts-Überprüfungen können mittels der IFR 240 benutzt werden, um Fehler zu detektieren und so früh wie möglich zu terminieren, um maximal die Ausdehnung bzw. das Ausmaß von Korruption von Speicher-Register-Raum zu begrenzen. Schließlich bedeutet in einigen Ausführungsformen eine „finale Nicht-Mikrosteuerung-Programmierung”-Anweisung 325 das Ende des IFR-Anweisungs-Satzes 320.
  • Der Mikro-Steuerungs-Anweisungs-Satz 330 umfasst Anweisungen für die Operationen, welche die IFR 240 durchführt, um die Mikro-Steuerung 250 zu programmieren. Innerhalb des Mikro-Steuerungs-Anweisungs-Satzes 330 umfasst jede Mikro-Steuerungs-Anweisung 331 eine Adresse („ADDR”) 332 und Daten („Daten-Befehl”) 333. Die Adresse 332 spezifiziert eine Register-Adresse innerhalb der Mikro-Steuerungs-Konfigurations-Register 225 und die Daten 333 zeigen an, dass eine Schreib-Operation mittels der IFR 240 an die Adresse 332 durchzuführen ist. Zum Beispiel kann eine Mikro-Steuerungs-Anweisung 331 spezifizieren, dass die IFR 240 die Mikro-Steuerung 250 dadurch steuert, indem der geeignete Roh-Maschinen-Code, welcher auf die Mikro-Steuerung zielt, geschrieben wird, um eine oder mehrere Abfrage-Operationen (polling operations) durchzuführen, Operationen, welche Verzweigungen erfordern, Operationen, welche Verzögerungen erfordern, und Operationen, welche wiederholte Zugriffe auf eine Ressource erfordern. In einigen Ausführungsformen kann jede Mikro-Steuerungs-Anweisung 331 ein Paritäts-Bit umfassen. In solch einer Ausführungsform kann die IFR 240 konfiguriert sein, zu bestimmen, ob die Parität der Anweisung mit dem Paritäts-Bit für die Anweisung übereinstimmt. Eine fehlende Übereinstimmung könnte einen korrupten oder gefälschten ROM 260 anzeigen. Eine alternative Ausführungsform braucht nicht zwischen den Anweisungs-Sätzen 320, 329 und 330 unterscheiden. Zum Beispiel kann die IFR 240 die Mikro-Steuerung 250 über Register innerhalb des BAR0-Adressen-Register-Raums programmieren, welche an die Mikro-Steuerungs-Konfigurations-Register 225 richten (indirect), was erlaubt, dass die Mikro-Steuerung über die IFR-Anweisungen 322 programmiert wird. Schließlich bedeutet in einigen Ausführungsformen eine „letzte” Anweisung 334 das Ende aller IFR-Anweisungen 319 und markiert das Ende des ROM 260-Bildes, welches mittels der IFR 240 gelesen wird.
  • GPU-Initialisierung
  • Eine verbesserte IFR 240 und ein verbesserter Anweisungs-Satz zum Kodieren des ROM 260 sind beschrieben, um eine Freigabe bzw. ein Lösen (release) des Haltens bzw. des Wartens (holdoff) auf dem PCIe-Link 113 auf einen Fehler hin, schnellere Hochstarten (boot-ups), und einen kompakteren ROM 260 zu erlauben. Der ROM 260 umfasst einen fixen Funktions-Abschnitt 310 und einen Erweiterungs-Abschnitt 319. Der fixe Funktions-Abschnitt 310 umfasst Information, welche der IFR 240 erlaubt, zu bestimmen, ob der ROM 260 korrupt oder gefälscht ist, und die GPU 210 vor unautorisiertem Zugriff zu schützen. Der Erweiterungs-Abschnitt 319 des ROM 260 umfasst Information über Register-Operationen, welche mittels der IFR 240 durchzuführen sind, welche im Zusammenspiel mit einer Mikro-Steuerung 250 agieren können. Freigabe des Haltens bzw. Wartens auf PCIe-Link 113 ist ausgelöst, wenn die IFR 240 einem ROM-Fehler oder irgendeinem anderen Fehler begegnet, während die IFR 240 Initialisierungs-Operationen durchführt. Fortgeschrittene Initialisierungs-Sequenzen, wie etwa Abfrage-Operationen, Operationen, welche Verzweigen involvieren, Operationen, welche Verzögerungen involvieren, und Operationen, welche wiederholte Zugriffe auf eine Ressource involvieren, werden mittels der Mikro-Steuerung 250 anstatt der IFR 240 durchgeführt. Insbesondere kann der ROM 260 einen verbesserten Anweisungs-Satz umfassen und die IFR 240 kann den verbesserten Anweisungs-Satz benutzen, um die Mikro-Steuerung 250 zu programmieren, um die fortgeschrittenen Initialisierungs-Sequenzen durchzuführen.
  • 4 ist ein Flussdiagramm von Verfahrensschritten zum Durchführen von Initialisieren über eine IFR-Komponente und Freigeben von PCIe-Link auf das Auftreten eines Fehlers hin, gemäß einer Ausführungsform der vorliegenden Erfindung. Obwohl die Verfahrensschritte in Verbindung mit 13 beschrieben sind, werden Fachleute in der Technik verstehen, dass irgendein System, welches konfiguriert ist, die Verfahrensschritte, irgendeiner Ordnung, durchzuführen, innerhalb des Geltungsbereichs der vorliegenden Erfindung fällt.
  • Das Verfahren 400 beginnt bei Schritt 410, wo die IFR 240 die Bügel (straps) 245 liest, um zu bestimmen, ob ein ROM 260 innerhalb des Systems 200 vorhanden ist. Wenn ein ROM 260 nicht vorhanden ist, dann terminiert die IFR 240 die Operation, gibt das Warten bzw. Halten (holdoff) auf PCIe-Link 113 frei und führt optional dazu, dass geeignete Fehler-Analyse-Ausgabe bzw. Debug-Ausgabe (z. B. anzeigend, dass der ROM nicht vorhanden ist) einem Benutzer bei Schritt 412 angezeigt wird. Unabhängig davon, ob der ROM vorhanden ist, kann eine Ausführungsform auch eine andere fixe bzw. fixierte Funktions-Initialisierung der Grafik-Karte 202 vor dem Freigeben des Wartens auf Link-Training und Terminierung durchführen.
  • Wenn die IFR 240 bei Schritt 410 detektiert, dass der ROM 260 vorhanden ist, dann beginnt bei Schritt 415 die IFR 240 mit Lesen des fixen Funktions-Abschnitts 310 des ROM 260, um Sicherheits-Merkmale 310 zu verifizieren. Zum Beispiel kann die IFR 240 verifizieren, dass eine spezifische Sequenz von 1en und/oder 0en bei einer bestimmten Stelle in dem fixen Funktions-Abschnitt 310 vorhanden ist. Ein Scheitern, die Sicherheits-Merkmale 311 zu verifizieren, kann anzeigen, dass der ROM 260 korrupt oder gefälscht ist, was dazu führt, dass die IFR 240 die Operation terminiert, den PCIe-Link 113 freigibt und veranlasst, dass geeignete Debug-Ausgabe dem Benutzer bei Schritt 412 angezeigt wird.
  • Wenn die IFR 240 bei Schritt 415 erfolgreich die Sicherheits-Merkmale 311 verifiziert, dann liest bei Schritt 420 die IFR 240 einen oder mehrere ROM-Validierungs-Werte 312 von dem fixen Funktions-Abschnitt 310 des ROM 260. Die IFR 240 kann z. B. von dem fixen Funktions-Abschnitt 310 einen Gesamt-ROM-Größe-Wert und einen Prüfsumme-Wert lesen. Der Gesamt-ROM-Größe-Wert kann die gesamte Größe des ROM 260 in Bytes anzeigen und kann benutzt werden, um zu bestimmen, ob die aktuelle Größe des ROM 260 mit dem Gesamt-ROM-Größe-Wert übereinstimmt. Der Prüfsumme-Wert kann eine erwartete Summe einer Gesamt-ROM-Größe-Zahl von Bytes in dem ROM 260 anzeigen, ausmaskiert mittels einer vordefinierten Parität, und kann benutzt werden, um zu bestimmen, ob ein tatsächlicher Prüfsummen-Wert des ROM 260 mit dem Wert des Prüfsummen-Wertes übereinstimmt. Ein Scheitern, dass der Gesamt-ROM-Größe-Wert oder Prüfsumme-Wert in dem fixen Funktions-Abschnitt 310 mit ihren jeweiligen tatsächlichen Werten übereinstimmt, kann anzeigen, dass der ROM 260 korrupt ist oder gefälscht ist, was dazu führt, dass IFR 240 bei Schritt 412 terminiert, wie oben beschrieben ist. Ein oder mehrere Validierungs-Werte können bei Schritt 420 verifiziert werden, bevor das Verfahren 400 weiter fortschreitet. Eine Ausführungsform ist nicht darauf beschränkt, die individuellen Schritte innerhalb der Sicherheits- und Validierungs-Merkmale von 311 und 312 in irgendeiner bestimmten Ordnung durchzuführen und kann sie verschachteln (interleave).
  • Nachdem die IFR 240 Lesen von dem fixen Funktions-Abschnitt 310 beendet, beginnt die IFR 240 Lesen von Daten von dem Erweiterungs-Abschnitt 319 des ROM 260. Bei Schritt 425 liest die IFR 240 Validierungs-Werte, welche mit einer Anweisung des Erweiterungs-Abschnitts 319 assoziiert sind, und die IFR 240 liest dann die dwords der Anweisungen, ohne Begrenzung als Teil derselben Lese-Operation. In einer Ausführungsform kann ein Paritäts-Bit mit der Anweisung assoziiert sein und in solch einem Fall kann die IFR 420 das Paritäts-Bit lesen und bestimmen, ob der Wert des Paritäts-Bits mit der tatsächlichen Parität der Bits übereinstimmt, welche die Anweisung zusammenstellen. In einer weiteren Ausführungsform bestimmt die IFR 420, ob Bits innerhalb der Anweisung mit vordefinierten Werten für diese Bits übereinstimmen.
  • Bei Schritt 430 bestimmt die IFR 240, ob das Ende des ROM-260-Bildes erreicht worden ist. In einer Ausführungsform ist diese Bestimmung darauf basiert, ob eine „letzte” Anweisung bei Schritt 425 gelesen ist. Insbesondere kann ein vordefinierter Typ von Anweisung, welcher bei einer vordefinierten ROM-Stelle auftreten kann (z. B. eine Lese-Modifiziere-Schreibe-Anweisung, welche bei einer bestimmten Adresse auftritt), als die letzte Anweisung dienen, welche selbst eine zusätzliche Schreib- oder Lese-Modifiziere-Schreib-Operation kodieren kann. Unter der Annahme, dass das Ende des ROM-260-Bildes nicht erreicht worden ist, oder wenn die Anweisung ein letztes Schreiben ist, validiert die IFR 240 das Anweisung-Lesen bei Schritt 435. Die IFR 240 kann z. B. den Paritäts-Wert, welcher bei Schritt 420 gelesen ist, mit der tatsächlichen Parität der Anweisung vergleichen. Wenn das Anweisung-Validieren scheitert, dann kann der ROM 260 korrupt sein oder gefälscht sein. In solch einem Fall terminiert die IFR 240, gibt das PCIe-Link 113 Warten bzw. Halten frei und führt dazu, dass geeignete Debug-Ausgabe dem Benutzer bei Schritt 412 angezeigt wird.
  • Bei Schritt 440 bestimmt die IFR 240, ob irgendwelchen anderen Validitäts-Aspekten begegnet ist. Zum Beispiel kann die IFR 240 bestimmen, ob die arithmetische Summe der Zahl von Bytes der Anweisungen, welche soweit gelesen sind, den Erweiterungs-Abschnitt 319 zusammenstellen, und die Anzahl von Bytes des fixen Funktions-Abschnitts 310, welche die IFR 240 soweit gelesen hat, einen Gesamt-ROM-Größe-Wert übersteigt oder dass diese Summe plus der Anzahl von Bytes, welche für eine letzte Anweisung 334 erfordert sind, den Gesamt-ROM-Größe-Wert übersteigen würde. Übersteigen des Gesamt-ROM-Größe-Wertes könnte anzeigen, dass der ROM 260 korrupt ist oder gefälscht ist, gegeben, dass die letzte Anweisung 334 noch nicht erreicht worden ist. Wenn anderen Validierungs-Aspekten begegnet ist, dann terminiert die IFR 240 wiederum, gibt den PCIe-Link 113 frei und zeigt geeignete Debug-Ausgabe dem Benutzer bei Schritt 412 an. Wenn die IFR 240 bei Schritten 430, 435 bzw. 440 bestimmt, dass das Ende des ROM 260-Bildes noch nicht erreicht worden ist (in einer Ausführungsform, wo die letzte Anweisung 334 nicht eine Schreib- oder Lese-Modifiziere-Schreibe-Operation kodiert), die gelesene Anweisung gültig ist und gibt keine anderen Validierungs-Aspekte gibt, dann führt bei Schritt 445 die IFR 240 die Anweisung aus und das Verfahren 400 kehrt zu Schritt 425 zurück, wo die IFR 240 eine andere Anweisung liest.
  • Mit Bezug nun zurück auf Schritt 430, wenn die IFR 240 bestimmt, dass das Ende des ROM-260-Bildes erreicht worden ist und die Ausführungsform derart ist, dass die letzte Anweisung 334 nicht eine zusätzliche Operation kodiert, dann schreitet das Verfahren zu Schritt 450 fort, wo die IFR 240 den ROM validiert, welcher gelesen worden ist. In einer alternativen Ausführungsform, in welcher die letzte Anweisung eine Operation kodiert, führt die IFR 240 diese Operation durch und das Verfahren schreitet dann zu Schritt 450 voran. Insbesondere kann die IFR 240 bestimmen, ob ein oder mehrere der Validierungs-Werte, welche bei Schritt 420 abgerufen sind, mit Werten übereinstimmen, welche von dem tatsächlichen ROM bestimmt sind. Zum Beispiel kann die IFR 240 bestimmen, ob die tatsächliche Gesamtlänge des ROM-Wertes mit einem vordefinierten Gesamt-ROM-Größe-Validierungs-Wert übereinstimmt, welcher von dem fixen Funktions-Abschnitt 310 gelesen ist, oder die IFR kann eine Checksumme bzw. Prüfsumme validieren, welche innerhalb des fixen Funktions-Abschnitts spezifiziert ist. Wenn der ROM 260 nicht validiert ist, dann terminiert die IFR 240 bei Schritt 412, gibt das Warten bzw. das Halten auf PCIe-Link 113 frei und führt dazu, dass geeignete Debug-Ausgabe dem Benutzer angezeigt wird (z. B. einschließlich eines Anzeigens, dass die IFR 240 den ROM vollständig verarbeitet hat).
  • Alternativ, wenn ROM 260 validiert ist, dann kann die IFR 240 normal aussteigen bzw. beenden und das PCIe-Link 113-Warten- bzw. Halten bei Schritt 460 freigeben.
  • In einer Ausführungsform ist eine Link-Freigabe oder Benutzung von IFR 240 Steuer-Registern 231 implementiert. Insbesondere zeigt ein Schreiben eines „deaktiviert”-Wertes an ein PCIe-Link-Training-Halte- bzw. Warte-Register 236 an, dass Link-Training beginnen sollte, und der Wert von Auto-Freigabe-Register 237 bestimmt, ob Terminierung der IFR 240 automatisch den PCIe-Link 113 freigibt. In solch einem Fall, wenn die IFR 240 einem Fehler begegnet und terminiert, dann führt der Fehler auch dazu, dass die IFR 240 unbedingt den PCIe-Link-Training-Warte-Wert 236 auf „deaktiviert” zwingt bzw. setzt. Das heißt, Link-Training ist gezwungen aufzutreten bzw. zu erfolgen, wenn einem Fehler begegnet ist, unabhängig davon, ob Auto-Freigabe aktiviert ist. Solch eine Zugangsweise stellt sicher, dass, selbst wenn Auto-Freigabe deaktiviert ist (z. B. wenn Link-Freigabe in Abwesenheit der Fehler-Bedingung an die Mikro-Steuerung 250 übergeben würde), die IFR 240 Link-Training-Warten-Freigabe auslöst und optional veranlasst, dass geeignete Debug-Ausgabe dem Benutzer angezeigt wird, wenn die IFR 240 einem Fehler begegnet.
  • 5 ist ein Flussdiagramm von Verfahrensschritten zum Konfigurieren einer GPU 210 auf ein Zurücksetzen hin, gemäß einer Ausführungsform der vorliegenden Offenbarung. Obwohl die Verfahrensschritte in Verbindung mit 13 beschrieben sind, werden Fachleute in der Technik verstehen, dass irgendein System, welches konfiguriert ist, die Verfahrensschritte durchzuführen, in irgendeiner Ordnung, innerhalb des Geltungsbereichs der vorliegenden Erfindung fällt.
  • Das Verfahren 500 beginnt bei Schritt 510, wo die IFR 240 die Bügel 245 liest, um zu bestimmen, ob ein ROM 260 in dem System 200 vorhanden ist. In einer Ausführungsform, wenn die IFR 240 bei Schritt 510 bestimmt, dass kein ROM 260 vorhanden ist, dann kann die IFR 240 terminieren, das PCIe-Link 113-Warten freigeben und veranlassen, dass geeignete Debug-Ausgabe (z. B. Anzeigen, dass kein ROM vorhanden ist) angezeigt wird, ähnlich zu den Schritten 410 und 412 von 4.
  • Unter der Annahme bei Schritt 510, dass die IFR 240 detektiert, dass der ROM 260 vorhanden ist, dann verifiziert bei Schritt 520 die IFR 240 Sicherheits-Merkmale 311 und Validierungs-Werte 312 in dem fixen Funktions-Abschnitt 310. Zum Beispiel kann die IFR 240 verifizieren, dass eine spezifische Sequenz von 1en und/oder 0en bei einer bestimmten Stelle in dem fixen Funktions-Abschnitt 310 vorhanden ist, ähnlich dem Schritt 415 von 4. In einigen Ausführungsformen kann ein Scheitern, die Merkmale von 311 und/oder 312 zu verifizieren, als ein Fehler behandelt werden und die IFR 240 kann terminieren, das PCIe-Link 113-Warten freigeben und veranlassen, dass Debug-Ausgabe dem Benutzern angezeigt wird, ähnlich zu Schritt 412 von 4.
  • Wenn die IFR 240 erfolgreich die Sicherheits- und/oder Validierungs-Merkmale 311/312 bei Schritt 515 verifiziert, dann liest bei Schritt 520 die IFR 240 eine Anweisung in dem Erweiterungs-Abschnitt 319 des ROM 260. In einigen Ausführungsformen umfasst der Erweiterungs-Abschnitt 319 des ROM 260 Anweisungen, welche Register-Operationen anzeigen, welche durchgeführt werden müssen, um die GPU 210 oder Grafik-Karte 202 zu initialisieren, einschließlich Register-Operationen, welche an den Registern durchzuführen sind, auf welche mittels BAR0-Adressen Bezug genommen ist. In einer Ausführungsform kann die IFR 240 ferner konfiguriert sein, um einen Fehler zu detektieren, ähnlich zu den Schritten 435 und 440 von 4. In solch einem Fall kann die IFR 240, auf ein Detektieren des Fehlers hin, terminieren, das PCIe-Link 113-Warten freigeben und veranlassen, dass geeignete Debug-Ausgabe angezeigt wird, ähnlich zu Schritt 412 von 4.
  • Bei Schritt 525 bestimmt in einer Ausführungsform die IFR 240, ob die finale Nicht-Mikro-Code-Programmierungs-Anweisung 325 von Register-Operationen für die IFR 240 auszuführen erreicht worden ist. In einer weiteren Ausführungsform kann die finale Nicht-Mikro-Code-Programmierungs-Anweisung 325 mittels einer vordefinierten Anweisung angezeigt sein, welche bei einer vordefinierten Adresse des Erweiterungs-Abschnitts 319 des ROM 260 auftritt. Wenn die finale Nicht-Mikro-Code-Programmierungs-Anweisung 350 nicht erreicht worden ist, dann führt die IFR 240 die Register-Operation oder Operationen durch, welche in dem Anweisungs-Lesen bei Schritt 515 spezifiziert sind, und das Verfahren kehrt zu Schritt 520 zurück.
  • Wenn bei Schritt 525 die IFR bestimmt, dass die Anweisung 322, welche bei Schritt 520 gelesen ist, die finale Nicht-Mikro-Code-Programmierungs-Anweisung 325 von Register-Operationen für die IFR auszuführen ist, welche nicht Programmieren der Mikro-Steuerung involviert, führt die IFR die Operation durch, welche in der finalen Nicht-Mikro-Code-Programmierungs-Anweisung 325 angezeigt ist. In einer Ausführungsform kann die finale Nicht-Mikro-Code-Programmierungs-Anweisung 325 irgendeine normale IFR-Anweisung 324 sein.
  • Bei Schritt 540 fährt die IFR 240 fort, Anweisungen in dem Erweiterungs-Abschnitt 319 von ROM 260 zu lesen und insbesondere Anweisungen von dem Satz von Mikro-Steuerungs-Anweisungen 331, welche Register-Operationen spezifizieren, welche mittels der IFR 240 durchzuführen sind, um die Mikro-Steuerung 250 zu programmieren, um komplizierte Initialisierungs-Sequenzen durchzuführen. Die benutzten IFR-240-Anweisungen können in einer Ausführungsform von demselben Anweisungs-Satz 322 sein und die Mikro-Steuerung kann dann über indirekte Register in dem BAR0-Adress-Raum programmiert werden, welcher auf die Mikro-Steuerungs-Konfigurations-Register 255 abbilden (mapping). Die zu den Mikro-Steuerungs-Konfigurations-Registern geschriebenen Daten würden in solch einer Ausführungsform eine Sequenz von Schreib-Vorgängen (writes) sein, welche die Mikro-Code 250 Maschinen-Anweisungen kodieren, welche die erweiterte Initialisierung durchführen. Solche komplizierten Initialisierungs-Sequenzen können umfassen, ohne Begrenzung, Abfrage-Operationen, Operationen, welche Verzweigen involvieren, Operationen, welche Verzögerung involvieren und Operationen, welche wiederholte Zugriffe auf eine Ressource involvieren.
  • Bei Schritt 545 bestimmt die IFR 240, ob die Mikro-Steuerungs-Anweisung 331, welche bei Schritt 540 gelesen ist, die letzte Anweisung 334 des Erweiterungs-Abschnitts 319 ist. In einer Ausführungsform kann die IFR 240 ferner konfiguriert sein, einen Fehler zu detektieren, ähnlich zu Schritten 435 und 440 von 4, wie oben beschrieben ist. In solch einem Fall kann die IFR 240, auf ein Detektieren des Fehlers hin, terminieren, das Warten bzw. das Halten (holdoff) von PCIe-Link 113 freigeben und geeignete Debug-Ausgabe anzeigen, ähnlich zu Schritt 412 von 4.
  • Wenn die IFR 240 bestimmt, dass die Mikro-Steuerungs-Anweisung, welche bei Schritt 540 gelesen ist, nicht die letzte Anweisung 334 ist, dann programmiert bei Schritt 550 die IFR 240 die Mikro-Steuerung 250 gemäß der Anweisung mittels, z. B., eines Schreibens auf BAR0-Register 234. Das Verfahren 500 kehrt zu Schritt 540 zurück, wo die IFR 240 eine andere Mikro-Steuerungs-Anweisung in dem Erweiterungs-Abschnitt 319 des ROM 260 liest. In einer Ausführungsform programmiert die IFR 240 die Mikro-Steuerung 250 dadurch, dass die Mikro-Steuerungs-Konfigurations-Register 255 geschrieben werden. In einigen Ausführungsformen ist die IFR 240 konfiguriert, eine oder mehrere Lese-Modifiziere-Schreibe-Operation durchzuführen, wiederholte Schreib-Operationen auf dieselbe Adresse, und/oder Schreib-Operationen auf ansteigende Adressen, um eine Programmierung der Mikro-Steuerung 250 zu ermöglichen. In einer weiteren Ausführungsform sind die Register-Adressen für wiederholte Schreib-Operationen auf dieselbe Adresse und/oder Schreib-Operationen auf ansteigende Adressen nicht individuell in dem ROM 260 kodiert – die Start-Adresse einer Serie von wiederholten Schreib-Operationen kann explizit kodiert sein, z. B. und der Rest der Adressen ist automatisch mittels IFR 240 berechnet, wenn weitere Daten-Worte von dem ROM gelesen sind.
  • Mit Bezug nun auf Schritt 545, wenn die IFR 240 bestimmt, dass die letzte Anweisung 334 des Erweiterungs-Abschnitts 319 gelesen worden ist, dann führt die IFR 240 die letzte Anweisung 334 bei Schritt 545 aus. Dann gibt die IFR 240 das PCIe-Link 113-Warten bzw. -Halten frei, es sei denn PCIe-Link-Warten-Freigabe ist in dem ROM 260 als eine Funktion spezifiziert, welche an die Mikro-Steuerung 250 weitergegeben ist. In einer Ausführungsform ist PCIe-Link-Freigabe implementiert unter Benutzung von IFR-Steuer-Registern 231 und insbesondere dem PCIe-Link-Training-Halten- bzw. -Warten-Register 236, welches anzeigt, ob Link-Training andauern sollte, verzögert zu werden und dem Auto-Freigabe-Register 237, welches anzeigt, ob Terminierung der IFR 240 automatisch das Halten bzw. Warten (holdoff) von PCIe-Link 113 freigibt. In solch einem Fall umfasst ein Übergeben von PCIe-Link-Freigabe an die Mikro-Steuerung 250 ein Deaktivieren der Auto-Freigabe des Auto-Freigabe-Registers 237 und ein Belassen des Warten-Registers (hand-off register) 236 am Platz für die Mikro-Steuerung 250 zu modifizieren, um dadurch Link-Freigabe zu verzögern, bis die Mikro-Steuerung 250 das Warte-Register 236 modifiziert. Weiterhin kann in solch einem Fall der Prozess eines Deaktivierens des Auto-Freigabe-Registers 237 und das Belassen des Warte-Registers 236 im Platze mittels eines zusätzlichen Bits in dem Mikro-Steuerungs-Warte-Register 235 gesteuert werden, welches anzeigt, ob Link-Freigabe an die Mikro-Steuerung übergeben wird. Das heißt, bei Schritt 530 kann die IFR 240 den Wert des Mikro-Steuerungs-Übergabe-Registers (hand-off register) 235 gemäß einer Anweisung modifizieren, welche von dem ROM 260 gelesen ist, welche anzeigt, ob Link-Freigabe an die Mikro-Steuerung 250 übergeben wird, und die IFR kann dies tun, während oder dadurch, dass sie eine letzte Anweisung ausführt, welche das Lostreten der Mikro-Steuerung 250 mittels eines Schreibens an Register 235 initiiert.
  • Nachdem die IFR 240 die letzte Anweisung (und in einigen Fällen auch das PCIe-Link-113 Warten bzw. Zurückhalten freigibt) bei Schritt 555 durchführt, terminiert die IFR 240 den Betrieb. Bevor, nachdem oder zur selben Zeit, wenn die IFR 240 Betrieb terminiert, beginnt die Mikro-Steuerung 250 bei Schritt 556, Anweisungen von ihren Programm-Daten zu lesen, wie sie über die Mikro-Steuerungs-Konfigurations-Register 255 geschrieben sind, und die Anweisungen, welche sie liest, auszuführen. In einigen Ausführungsformen können die Anweisungen Anweisungen zum Durchführen von komplizierten Initialisierungs-Sequenzen umfassen, wie etwa Abfrage-Operationen, Operationen, welche Verzweigen involvieren, Operationen, welche Verzögerungen involvieren, Operationen, welche wiederholte Zugriffe auf eine Ressource involvieren, und dergleichen.
  • Wie vorhergehend hierin beschrieben ist, kann die PCIe-Link-Freigabe an die Mikro-Steuerung 250 übergeben werden. In solch einem Fall gibt die Mikro-Steuerung 250 bei Schritt 516 das PCIe-Link-Warten frei, nachdem (oder bevor wie im weiteren Detail unten beschrieben ist) die Mikro-Steuerung 250 Ausführen aller Anweisungen, welche von der IFR 240 empfangen sind, beendet. In einer Ausführungsform kann die Mikro-Steuerung 250 den Wert eines PCIe-Link-Freigabe-Warte-Registers 236 modifizieren, um dadurch die Freigabe von dem PCIe-Link 113-Warten und den Beginn von PCIe-Training zu veranlassen. Ferner kann in einer Ausführungsform die Mikro-Steuerung 250 konfiguriert sein, zu terminieren, das PCIe-Link 113-Warten freizugeben und Debug-Ausgabe anzuzeigen, wenn die Mikro-Steuerung 250 einem Fehler begegnet. Fehler können Fehler umfassen, welche den ROM 260 betreffen, wie vorher hierin beschrieben ist, sowie andere Fehler, wie etwa einen Fehler in dem Einrichten einer Uhr bzw. eines Taktes der GPU 210 oder einen Fehler, welcher den Bus der GPU 210 betrifft.
  • Obwohl die IFR 240 und die Mikro-Steuerung 250 in 5 als in Sequenz operierend gezeigt sind, können in alternativen Ausführungsformen die IFR 240 und die Mikro-Steuerung 250 simultan operieren, um die GPU 210 zu initialisieren. Die Mikro-Steuerung 250 kann Verarbeitung beginnen, bevor die letzte Anweisung mittels der IFR 240 verarbeitet ist in dem Fall, wo eine IFR-Erweiterungs-Abschnitt 319-Anweisung die IFR veranlasst, einen spezifischen bzw. spezifizierten Wert an das Mikro-Steuerungs-Übergabe-Register 235 zu schreiben, um Ausführung loszutreten. Solch eine gleichzeitige Initialisierung mittels der IFR 240 und der Mikro-Steuerung 250 kann den gesamten Hochfahr-Prozess beschleunigen.
  • In einigen Ausführungsformen kann die Mikro-Steuerung 250 eine generische Mikro-Steuerung sein. In alternativen Ausführungsformen kann die Mikro-Steuerung 250 eine spezialisierte Mikro-Steuerung sein. Obwohl mit Bezug auf die Mikro-Steuerung 250 beschrieben ist, werden Fachleute in der Technik verstehen, dass eine andere Initialisierungs-Einheit anstatt der Mikro-Steuerung 250 benutzt werden kann, um komplizierte Initialisierungs-Operationen durchzuführen und/oder um Initialisierungs-Operationen zur selben Zeit durchzuführen, zu der die IFR 240 Initialisierungs-Anweisungen durchführt.
  • Zusammenfassend ist eine Zugangsweise zum Freigeben, auf Detektion eines Fehlers hin, des Wartens (holdoff) bereitgestellt, welches Kommunikation über eine Link-Kopplung blockiert, welche entweder indirekt oder direkt eine GPU mit einer Speicherbrücke koppelt. Spezifisch kann eine Initialisierungs-Einheit der GPU einen Fehler detektieren, während Initialisierungs-Operationen durchgeführt werden. Auf ein Detektieren des Fehlers hin kann die Initialisierungs-Einheit veranlassen, dass ein Kommunikations-Link früh hochgebracht werden kann (brought up early) und dass Debug-Ausgabe einem Benutzer angezeigt wird, was den Fehler anzeigt. In einigen Ausführungsformen können Fehler umfassen, dass ein ROM nicht vorhanden ist und Fehler innerhalb des ROM, wie etwa ein Signatur-Wort, welches nicht einem erwarteten Wert übereinstimmt, dass die Gesamt-Größe des ROM nicht mit einem erwarteten Wert übereinstimmt, dass eine Prüfsumme nicht mit einem erwarteten Wert übereinstimmt, dass eine Parität nicht mit einer erwarteten Parität übereinstimmt und/oder dass Längen von Anweisungen in dem ROM nicht mit erwarteten Werten übereinstimmen.
  • Der offenbarte Zugang kann ferner Programmieren einer Mikro-Steuerung umfassen, um eine oder mehrere Initialisierungs-Aufgaben durchzuführen. Initialisierungs-Aufgaben können Operationen umfassen, wie etwa Abfrage-Operationen, Operationen, welche Verzweigen involvieren, Operationen, welche Verzögerungen involvieren und Operationen, welche wiederholte Zugriffe auf eine Ressource involvieren.
  • Vorteilhafter Weise gibt in Ausführungsformen der Erfindung die Initialisierungs-Einheit den Kommunikations-Link frei, wenn ein Fehler während einer Initialisierung detektiert ist, um dadurch zu erlauben, dass Debug-Ausgabe angezeigt wird oder auf andere Weise dem Benutzer zugänglich gemacht wird, welcher dann den Fehler analysieren kann (debug). Im Gegensatz dazu hängen Initialisierungs-Einheiten des Standes der Technik, welchen ein Freigabe-bei-Fehler-Merkmal fehlt, oft beim Hochfahren ohne in der Lage zu sein, bzgl. eines Fehlers analysiert zu werden (debugged), wenn ein Fehler auftritt. In solchen Situationen ist der Kommunikations-Link nicht verfügbar, weil das Warten nicht freigegeben ist und die GPU erscheint nicht dem Rest des Systems.
  • Ferner erlaubt eine Benutzung einer Mikro-Steuerung, welche über Register-Adressen programmiert ist, welche nicht individuell in dem ROM kodiert sind, komplexe Initialisierungs-Operationen, welche nicht vordefinierte Operationen sind, reduzierte ROM-Größen und schnellere Hochstart-Prozesse. Verminderte ROM-Größen sind vorteilhaft, weil die ROM-Basisfläche (footprint) begrenzt ist. Ferner kann die Mikro-Steuerung programmiert sein, um komplizierte Initialisierungs-Operationen durchzuführen, welche nicht von GPU-Initialisierungs-Einheiten des Standes der Technik durchgeführt werden könnten, einschließlich Abfrage-Operationen und Operationen, welche Verzweigen, Verzögerungen und wiederholte Zugriffe auf eine Ressource involvieren. Zusätzlich kann die Mikro-Steuerung programmiert sein, um Initialisierungs-Operationen durchzuführen, welche nicht zuvor erstellte Operationen sind, welche vor Hardware-Herstellungszeit konzipiert sind. Die Mikro-Steuerung kann auch einen schnelleren Zugriffs-Pfad auf den ROM haben, was ihr erlaubt, grundlegende Initialisierungen schneller als die Initialisierungs-Einheit zu tätigen.
  • Während das Vorangehende auf Ausführungsformen der vorliegenden Erfindung gerichtet ist, können andere und weitere Ausführungsformen der Erfindung entworfen werden, ohne dem grundsätzlichen Geltungsbereich davon abzuweichen. Zum Beispiel können Aspekte der vorliegenden Erfindung in Hardware oder Software oder in einer Kombination von Hardware und Software implementiert sein. Eine Ausführungsform der Erfindung kann als ein Programm-Produkt zur Benutzung mit einem Computer-System implementiert sein. Das Programm bzw. die Programme des Programm-Produkts definieren Funktionen der Ausführungsformen (einschließlich der hierin beschriebenen Verfahren) und können in einer Verschiedenheit von Computer-lesbaren Speichermedien beinhaltet sein. Illustrative Computer-lesbare Speichermedien umfassen, aber sind nicht begrenzt auf: (i) nicht schreibbare Speichermedien (z. B. Nur-Lese-Speicher-Geräte innerhalb eines Computers, wie etwa CD-ROM-Platten, welche mittels eines CD-ROM-Laufwerks lesbar sind, Flash-Speicher (ROM-Chips) oder irgendein Typ von Festkörper-nicht-volatiler-Halbleiter-Speicher), auf welchen Information permanent gespeichert ist; und (ii) schreibbare Speicher-Medien (z. B. Floppy-Disks innerhalb eines Disketten-Laufwerks oder eines Festplatten-Laufwerks oder irgendeines Typs von Festkörper-Halbleiter-Speicher mit willkürlichen Zugriff), auf welchen veränderbare Information gespeichert ist. Solche Computer-lesbaren Speichermedien, wenn sie Computer-lesbare Anweisungen tragen, welche die Funktionen der vorliegenden Erfindung lenken, sind Ausführungsformen der vorliegenden Erfindung.
  • Die vorangehende Beschreibung und die Zeichnungen sind demgemäß in einem illustrativen anstatt in einem restriktiven Sinne zu betrachten.

Claims (10)

  1. Computer-implementiertes Verfahren zum Durchführen von Initialisierungs-Operationen für eine Grafik-Verarbeitungs-Einheit (GPU), wobei das Verfahren aufweist: Detektieren eines Fehlers, während eine oder mehrere Initialisierungs-Operationen durchgeführt werden; Freigeben eines Wartens auf einem Kommunikations-Link, welcher die GPU mit einer Speicherbrücke koppelt; und Veranlassen, dass einem Benutzer Debug-Ausgabe angezeigt wird, welche den Fehler anzeigt.
  2. Initialisierungs-Einheit einer Grafik-Karte, welche konfiguriert ist, um: einen Fehler zu detektieren, während eine oder mehrere Initialisierungs-Operationen durchgeführt werden; ein Warten auf einem Kommunikations-Link in Antwort auf den detektierten Fehler freizugeben; und dazu zu führen, dass einem Benutzer Debug-Ausgabe angezeigt wird, welche den Fehler anzeigt.
  3. Initialisierungs-Einheit gemäß Anspruch 2, wobei der Kommunikations-Link einen Peripheral-Component-Interconnect-Express-(PCIe)-Link aufweist.
  4. Initialisierungs-Einheit gemäß Anspruch 2, wobei Freigeben des Wartens aufweist Terminieren einer ersten Initialisierungs-Einheit, es sei denn Freigeben des Wartens auf dem Kommunikations-Link ist einer zweiten Initialisierungs-Einheit zugewiesen worden.
  5. Initialisierungs-Einheit gemäß Anspruch 2, wobei der Fehler zumindest einen eines Nur-Lese-Speichers (ROM) aufweist, welcher umfasst, dass Initialisierungs-Anweisungen nicht gefunden sind, und/oder dass eine Signatur des ROM nicht mit einer vordefinierten Signatur übereinstimmt, und/oder dass eine Gesamtgröße des ROM nicht mit einer vordefinierten Größe übereinstimmt, und/oder dass ein Prüfsummen-Wert basierend auf einer Mehrzahl von Bits, welche in dem ROM umfasst sind, nicht mit einem vordefinierten Wert übereinstimmt, und/oder dass ein Paritäts-Wert basierend auf einer Mehrzahl von Bits, welche in dem ROM umfasst sind, nicht mit einem vordefinierten Wert übereinstimmt, und/oder dass eine Größe von Anweisungen, welche gelesen worden ist, die Gesamt-Größe des ROM überschreitet, oder dass die Größe von Anweisungen, welche gelesen worden sind, plus eine Größe von irgendeiner erforderlichen letzten Anweisung oder Anweisungen die Gesamt-Größe des ROM übersteigt.
  6. Initialisierungs-Einheit gemäß Anspruch 2, wobei der Fehler zumindest einen eines Paritäts-Wertes aufweist, welcher mit einer Anweisung assoziiert ist, welche von einem ROM gelesen ist, welcher umfasst, dass Initialisierungs-Anweisungen nicht mit einer vordefinierten Parität für Bits übereinstimmen, welche einige oder alle der Anweisungen zusammensetzen, und/oder dass Bits innerhalb der Anweisung nicht mit vordefinierten Werten für diese Bits übereinstimmen oder dass eine Anzahl von dwords der Anweisung nicht mit einer vordefinierten Anzahl übereinstimmt.
  7. Initialisierungs-Einheit gemäß Anspruch 2, wobei die Initialisierungs-Einheit ferner konfiguriert ist, eine zweite Initialisierungs-Einheit zu programmieren, um zumindest eine der einen oder mehreren Initialisierungs-Operationen durchzuführen, was für zumindest eine Initialisierung erlaubt, nicht eine vordefinierte Operation zu sein, welche vor Hardware-Herstellung konzipiert ist.
  8. Initialisierungs-Einheit gemäß Anspruch 7, wobei die zweite Initialisierungs-Einheit eine Mikro-Steuerung aufweist und wobei Programmieren der zweiten Initialisierungs-Einheit aufweist Durchführen von einer oder mehreren einer Lese-Modifiziere-Schreibe-Operation, und/oder wiederholte Schreib-Operationen auf dieselbe Adresse, und/oder Schreib-Operationen auf ansteigende Adressen.
  9. Initialisierungs-Einheit gemäß Anspruch 8, wobei die eine oder die mehreren Initialisierungs-Operationen zumindest eine einer Abfrage-Operation, und/oder einer Verzweigen-Operation, und/oder von wiederholten Zugriffs-Operationen auf eine Ressource und/oder einer Verzögerungs-Operation umfassen.
  10. Initialisierungs-Einheit gemäß Anspruch 9, wobei die Initialisierungs-Einheit ferner konfiguriert ist, zumindest eine Initialisierungs-Operation an die zweite Initialisierungs-Einheit abzuladen und wobei die Initialisierungs-Einheit und die zweite Initialisierungs-Einheit jeweilige Initialisierungs-Operationen gleichzeitig durchführen.
DE102013200795A 2012-01-24 2013-01-18 Initialisierung von GPU unter Benutzung einer ROM-basierten Initialisierungs-Einheit und programmierbarer Mikro-Steuerung Pending DE102013200795A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/357,553 2012-01-24
US13/357,553 US8839039B2 (en) 2012-01-24 2012-01-24 Initialization of GPU using ROM-based initialization unit and programmable microcontroller

Publications (1)

Publication Number Publication Date
DE102013200795A1 true DE102013200795A1 (de) 2013-07-25

Family

ID=48742554

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013200795A Pending DE102013200795A1 (de) 2012-01-24 2013-01-18 Initialisierung von GPU unter Benutzung einer ROM-basierten Initialisierungs-Einheit und programmierbarer Mikro-Steuerung

Country Status (4)

Country Link
US (1) US8839039B2 (de)
CN (1) CN103218237B (de)
DE (1) DE102013200795A1 (de)
TW (1) TWI494752B (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014085861A (ja) * 2012-10-24 2014-05-12 Canon Inc 表示システム、端末装置、表示装置、表示システムの制御方法、端末装置の制御方法、及び、表示装置の制御方法
WO2015174285A1 (ja) * 2014-05-16 2015-11-19 ソニー株式会社 情報処理装置、情報処理方法、および電子機器
CN106200423B (zh) * 2015-05-06 2018-08-21 上海汽车集团股份有限公司 零件的控制器的可变参数初始化方法及装置
CN106708592B (zh) * 2017-01-25 2021-12-03 北京鸿智电通科技有限公司 一种微控制器以及用于微控制器的代码烧录方法
US11586446B1 (en) * 2020-05-20 2023-02-21 Marvell Asia Pte Ltd System and methods for hardware-based PCIe link up based on post silicon characterization

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5369744A (en) * 1989-10-16 1994-11-29 Hitachi, Ltd. Address-translatable graphic processor, data processor and drawing method with employment of the same
WO1999003101A1 (en) * 1997-07-09 1999-01-21 Advanced Audio Devices, Llc Optical storage device
US6571363B1 (en) * 1998-12-30 2003-05-27 Texas Instruments Incorporated Single event upset tolerant microprocessor architecture
US6981176B2 (en) * 1999-05-10 2005-12-27 Delphi Technologies, Inc. Secured microcontroller architecture
JP3474139B2 (ja) * 2000-01-17 2003-12-08 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータの電源制御方法、電源制御装置及びコンピュータ
US6681282B1 (en) * 2000-08-31 2004-01-20 Hewlett-Packard Development Company, L.P. Online control of a multiprocessor computer system
US7558958B2 (en) * 2002-06-13 2009-07-07 Microsoft Corporation System and method for securely booting from a network
US20080313442A1 (en) * 2007-06-13 2008-12-18 Jian Wei Debugging techniques for a programmable integrated circuit
TW200909677A (en) * 2007-08-29 2009-03-01 Yong-Han Liu Device for producing propulsion by arrangement of magnetic attraction/repulsion forces
US8368701B2 (en) * 2008-11-06 2013-02-05 Via Technologies, Inc. Metaprocessor for GPU control and synchronization in a multiprocessor environment
US8471858B2 (en) * 2009-06-02 2013-06-25 Qualcomm Incorporated Displaying a visual representation of performance metrics for rendered graphics elements
US8839006B2 (en) * 2010-05-28 2014-09-16 Nvidia Corporation Power consumption reduction systems and methods

Also Published As

Publication number Publication date
US20130191692A1 (en) 2013-07-25
CN103218237B (zh) 2016-06-08
TWI494752B (zh) 2015-08-01
US8839039B2 (en) 2014-09-16
TW201405302A (zh) 2014-02-01
CN103218237A (zh) 2013-07-24

Similar Documents

Publication Publication Date Title
CN103119554B (zh) 提供平台无关的存储器逻辑
DE112011105864T5 (de) Verfahren, Vorrichtung und System zur Speichervalidierung
US9354978B2 (en) System and method for recovering from a configuration error
DE102013200795A1 (de) Initialisierung von GPU unter Benutzung einer ROM-basierten Initialisierungs-Einheit und programmierbarer Mikro-Steuerung
US8219793B2 (en) Storage medium to manage a master boot record and a method of booting a computer system using a storage medium
CN107111600B (zh) 通信接口初始化
DE102011075814B4 (de) Speicherpuffer mit zugänglicher Information nach einem Schreibfehler
DE112013002254T5 (de) Wiederherstellen aus einer Altbetriebssystemumgebung zu einer UEFI-Preboot-Umgebung
DE112012005118T5 (de) Sichern von Firmware während der Initialisierung einer Einheit
DE102011085989A1 (de) Verfahren und Vorrichtung zum Ausführen von parallelen Speicherlese- und Speicherschreiboperationen
DE102007012448A1 (de) Ein chipsatz-unabhängiges Verfahren für lokale Aktualisierung und Konfigurierung und Fernkonfigurierung eines System-BIOS
DE112007000688B4 (de) Fehlerverwaltungstopologien
DE112016001972T5 (de) Sicherer Zugriff in einem Mikrokontrollersystem
CN111444030B (zh) 数据储存装置及避免固件失效的方法
US20090187754A1 (en) System with at least two bios memories
CN102483710A (zh) 纠错
DE112018004577T5 (de) Multiprozessorkern-vorrichtung mit mbist
CN109815171A (zh) 用于存储器控制器发现供应商特定非易失性存储器设备的方法和装置
US11216282B2 (en) Multi-die and multi-core computing platform and booting method for the same
DE112004002492B4 (de) Verfahren zum Signalisieren eines Befehlsstatus eines PCI/PCI-X-Standart-Hot-Plug-Controllers (SHPC) und Computer-Brücken-Vorrichtung
DE102010003153B4 (de) Verarbeitungseinheit, Vorrichtung, die zwei Verarbeitungseinheiten aufweist, Verfahren zum Testen einer Verarbeitungseinheit und einer Vorrichtung, die zwei Verarbeitungseinheiten aufweist
DE102022107800A1 (de) Booten und verwenden eines einzelnen cpu-sockels als partitionierte multi-cpu-plattform
DE112012006743T5 (de) Verbinden und integrieren von Vorrichtungen unterschiedlicher Verarbeitungssysteme
DE102021101458A1 (de) Master- und Slave-Prozessoren zum Konfigurieren von Subsystemen
US6704850B1 (en) Method and apparatus for determining the width of a memory subsystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE

R016 Response to examination communication