-
Gebiet
-
Mehrere
Ausführungsformen
der Erfindung betreffen allgemein Firmware-Architekturen. Insbesondere
bezieht sich mindestens eine Ausführungsform der Erfindung auf
Hochfahr- und/oder
Wiederherstellungs-Firmware-Module für Prozessoren, die sicher aktualisiert
werden können
und mehrere unterschiedliche Prozessortypen unterstützen.
-
Moderne
Computerarchitekturen umfassen oft prozessorspezifische Befehle
als Teil einer Startup-Sequenz. Diese prozessorspezifischen Befehle werden
oft für
Hochfahr- und/oder Wiederherstellungsoperationen verwendet und können in
einer Speichervorrichtung (z.B. Flash-Speichervorrichtungen, usw.) gespeichert
werden.
-
Die
Fähigkeit,
die Hochfahr- und/oder Wiederherstellungssequenz, Komponenten, Code,
Binaries, und/oder Daten zu aktualisieren, ermöglicht eine größere Flexibilität bei der
Wiederverwendung dieser Binaries in unterschiedlichen Plattformen,
beim Korrigieren von Fehlern oder Bugs bei bestehenden Komponenten
oder Binaries, und/oder dem Hinzufügen neuer Merkmale zu bestehenden
Hochfahr- und/oder Wiederherstellungssequenzen. Die Hochfahr- oder
Wiederherstellungsfirmware ist oft als ein Image in einer Speichervorrichtung
(z.B. Festwertspeicher, Flash-Speicher, usw.) gespeichert, von wo zur
Verarbeitung auf sie zugegriffen wird.
-
Zum
Beispiel partitioniert die gegenwärtige ItaniumTM-Architektur
von Intel Corp. ihre Hochfahr- und Wiederherstellungsfirmware (d.
h. Binaries, Daten, Code, usw.) in verschiedene getrennte logische Komponenten,
Schichten oder Dienste. Beispielsweise stellen die Komponenten der "Processor Abstraction
Layer" (PAL) Dienste
bereit, die direkt mit dem Prozessor verbunden sind und isoliert
den Rest der Firmware von jeglichen prozessorspezifischen Anforderungen.
Die "System Abstraction
Layer" (SAL) stellt
die Dienste bereit, die zum Konfigurieren des jeweiligen Chipsatzes
und aller anderen plattformspezifischen Funktionen notwendig sind.
Die Schichten können
in Komponenten des Typs "A" und des Typs "B" unterteilt werden. Im Allgemeinen stellen
Komponenten des Typs "A" (z.B. PALA und SALA)
typischerweise einen Mindestsatz von Operationen bereit, die für die Wiederherstellungsoperation
erforderlich sind, und die Komponenten des Typs "B" (z.B. PALB
und SALB) erweitern typischerweise die Operationen der Komponenten
des Typs "A", um eine vollständige Hochfahr-Unterstützung bereitzustellen.
-
Typischerweise
sind PAL-Komponenten für jeden
Prozessor spezifisch. Daher kann jeder Prozessortyp eine unterschiedliche
PALA/PALB-Kombination erfordern.
-
Ein
ItaniumTM-Prozessor wird ohne die PAL-Firmware
nicht funktionieren. Zusätzlich
umfaßt die
PAL tatsächlich
den Reset-Vektor (sowie andere Hardware-Vektoren), welcher für das Hochfahren- und/oder
Wiederherstellen verwendet wird. Aus diesen Gründen befindet sich die PAL
an einer festen Adresse. 1 ist
ein Blockdiagramm, das eine Ausführung
einer Hochfahr- oder Neustartsequenz nach dem bisherigen Stand der
Technik veranschaulicht. Ein Computer, System oder Prozessor ist
typischerweise konfiguriert, um durch Zugreifen auf einen festen
Vektorplatz (z.B. Reset-Vektor) 102, der auf die Startadresse
für die
Hochfahr- oder Neustartprozedur zeigt, zu starten. In der veranschaulichten PAL/SAL-Architektur
wird ein einzelner fester Pointer (106) in die SAL-Komponente
für die
PAL bereitgestellt, der einen feststellbaren Eingangspunkt für SAL-Dienste
bereitstellt. Die PAL wird als ein Ergebnis des Prozessor-Resets
ausgeführt.
Sobald die PALA kritische prozessorbezogene Ressourcen (einschließlich PALB) überprüft und validiert
hat, geht die Steuerung an die SALA über (beim Pointer 106).
Die SALA (108) führt
dann ihren eigenen Satz von Systemressourcen- und Systemfirmwarevalidierungen durch.
Der Aufruf der nachfolgenden Komponenten oder Dienste (110)
wird durchgeführt,
wie für
das Hochfahren oder Wiederherstellen des Systems notwendig.
-
Da
Merkmale zu den Hochfahr- und/oder Wiederherstellungsprozeduren
hinzugefügt
werden oder Bugs darin entdeckt werden, ist es oft wünschenswert,
die PAL- und/oder SAL-Komponenten zu
verbessern, um diese neuen Merkmale, Dienste und/oder Korrekturen
einzubeziehen. Dies kann durch Neuflashen des/der Speicher- oder
Speicherungsplatzes/Speicherungsplätze oder Blöcke, wo die PAL- und/oder SAL-Komponenten gespeichert sind,
ausgeführt
werden. Das heißt,
daß die
betroffenen PAL und/oder SAL-Komponenten
in der Firmware aktualisiert und/oder durch unterschiedliche Komponenten
ersetzt werden.
-
Eine
Nebenerscheinung einer/eines einzelnen festen Adresse oder Platzes
für den
Reset-Vektor (z.B. 102) und den SAL-Eingangspunkt (z.B. 106) ist
indes, daß irgendeine)
unerwartetes) Ereignis oder Unterbrechung (z.B. ein Stromausfall,
usw.) bei der Aktualisierung der PAL und/oder SAL das Potential
hat, das System unbrauchbar zu machen. Die Unterbrechung kann irgendein
Ereignis sein, das während
einer Firmware-Aktualisierung auftritt, das es nicht ermöglicht,
die Aktualisierung vollständig
abzuschließen
und somit das Potential hat, das System vollständig oder teilweise unbrauchbar
oder fehlerhaft zu machen. Wenn zum Beispiel während dem Prozeß des Neuflashens
eine Unterbrechung eintritt, können
der Reset-Vektor oder andere feste Adreß-PAL- und/oder SAL-Komponenten
fehlerhaft werden und den Prozessor unbrauchbar machen.
-
Es
bestehen einige plattformbasierte Lösungen, die fehlerstabile PAL-Aktualisierungen
ermöglichen
aber diese erfordern erhebliche zusätzliche Bill-of-Materials-Kosten
(BOM) zum Unterstützen
der redundanten Flash-Komponenten oder erfordern erhebliche Chipsatz-Veränderungen
zum Bereitstellen von Adreß-Aliasing.
-
Es
kann ebenfalls gesehen werden, daß, wenn die PAL prozessorspezifisch
ist und an einer festen Adresse lokalisiert werden muß, ein gegebenes
Firmware-Image nur einen einzigen Prozessortyp gleichzeitig unterstützen kann.
Das Umschalten zwischen Prozessortypen würde das Aktualisieren (z.B.
Neuflashen) des festen PAL-Bereichs mit einer PAL erfordern, die
den neuen Prozessor unterstützt. Dieses
Aktualisieren von PAL-Komponenten mit festen Plätzen hat das Potential, eine
erhebliche Ausfallzeit, einen Totalausfall oder eine Fehlerhaftigkeit
zu ergeben, wenn die Aktualisierung der PAL-Firmware unterbrochen,
aufgrund eines unerwarteten Ereignisses angehalten oder wenn während der
Aktualisierung die falsche PAL-Firmware verwendet wird.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist
ein Flußdiagramm,
das eine Ausführungsform
eines herkömmlichen
Start- oder Neustartprozesses veranschaulicht.
-
2 ist
ein Blockdiagramm, das veranschaulicht, wie ein Firmware-Image gemäß einer Ausführung der
Erfindung in mehrere Firmware-Komponenten partitioniert und/oder
neu angeordnet werden kann.
-
3 ist
ein Flußdiagramm,
das einen Start- oder Neustartprozeß gemäß einer Ausführung der Erfindung
veranschaulicht.
-
4 ist
eine Tabelle, die einige der Attribute der in 3 beschriebenen
PAL- und SAL-Komponenten
gemäß einer
Ausführung
der Erfindung veranschaulicht.
-
5 ist
ein Flußdiagramm,
das ein Verfahren zum Aktualisieren von prozessorspezifischen Komponenten
gemäß einer
Ausführungsform
der Erfindung veranschaulicht.
-
DETAILLIERTE
BESCHREIBUNG
-
In
der nachfolgenden detaillierten Beschreibung mehrerer Ausführungsformen
der Erfindung werden zahlreiche spezifische Details dargelegt, um ein
eingehendes Verständnis
von mehreren Aspekten von einer oder mehreren Ausführungsformen
der Erfindung bereitzustellen. Eine oder mehrere Ausführungsformen
der Erfindung können
indes ohne diese spezifischen Details ausgeführt werden. In anderen Fällen wurden
gut bekannte Verfahren, Abläufe und/oder
Komponenten nicht im Detail beschrieben, um Aspekte von Ausführungsformen
der Erfindung nicht unnötig
unverständlich
zu machen.
-
In
der nachfolgenden Beschreibung wird eine bestimmte Terminologie
verwendet, um bestimmte Merkmale von einer oder mehreren Ausführungsformen
der Erfindung zu beschreiben. Zum Beispiel umfaßt "Firmware" jede Art von eingebetteten Informationen,
wie beispielsweise Daten, Steuer- und Konfigurationsinformationen,
Befehle und Code. Der Begriff "PAL" wird allgemein zur
Bezugnahme auf PALA- und PALB-Komponenten verwendet. In ähnlicher
Weise wird der Begriff "SAL" allgemein zur Bezugnahme
auf SALA- und SALB-Komponenten verwendet. Der Begriff "Komponente" umfaßt logisch und/oder
physisch getrennte Module, Binaries, Daten, Code und/oder ausführbare Befehle.
Der Ausdruck "Firmware-Image" umfaßt einen
Block oder eine Gruppe von einer oder mehreren Komponenten. Die
Begriffe "generisch" und "nichtspezifisch" werden austauschbar
verwendet, um auf Komponenten Bezug zu nehmen, die durch mehr als
einen Prozessortyp verwendet (z.B. ausgeführt) werden können. Der Begriff "spezifisch" (z.B. "prozessorspezifisch") wird verwendet,
um auf diejenigen Komponenten Bezug zu nehmen, die für einen
Prozessortyp besonders sind. Der Begriff "aktualisierbar" wird verwendet, um Bezug auf Firmware-Komponenten
zu nehmen, die sicher ohne das Risiko eines Totalausfalls aktualisiert werden
können.
-
Ein
Aspekt einer Ausführungsform
der Erfindung stellt ein Verfahren, System, und eine Vorrichtung
zum Verbessern des Aktualisierens, Verbesserns und/oder Reparierens
von eingebetteten Kernprozessen (d. h. Wiederherstellungs- und/oder
Hochfahr-Firmware) bereit. In einer Ausführung der Erfindung sind die
Wiederherstellungs- und/oder Hochfahr-Komponenten (z.B. Firmwarecode,
Funktionen, usw.) logisch oder anders getrennt, um sichere, fehlerstabile
Aktualisierungen von Teilen von Firmware-Komponenten, deren Änderung
zwischen Prozessor- und
Systemmodellen am wahrscheinlichsten ist, zu gewährleisten.
-
Ein
anderer Aspekt einer Ausführungsform der
Erfindung stellt ein Verfahren, System und eine Vorrichtung zum
Unterstützen
mehrerer Prozessortypen oder Modelle mit einem einzigen Firmware-Image
bereit. In einer Ausführung
der Erfindung werden eine oder mehrere Firmware Interface Tables (FIT)
zum Unterstützen
mehrerer Prozessortypen mit einem einzigen Firmware-Image verwendet.
Allgemein ist eine FIT eine von mehreren möglichen Arten für nichtspezifische
Firmware-Komponenten, prozessorspezifische Firmware-Komponenten
zu suchen und/oder zu lokalisieren. Dieser Aspekt der Erfindung ist
besonders nützlich
für das
Unterstützen
von Systemen mit mehreren Prozessor-Typen/Steppings, Mischprozessoren
(z.B. Prozessoren aus der gleichen Familie) und/oder fehlerstabilen
Firmware-Aktualisierungen. Ein beispielhaftes FIT kann Namen oder
Kennungen von einem oder mehreren Prozessoren und ihren jeweiligen
Speicher- oder Speicherungsplatz (z.B. Pointer) umfassen.
-
2 ist
ein Blockdiagramm, das veranschaulicht, wie eine Ausführung der
Erfindung ein System von mehreren Firmware-Komponenten 202 (z.B.
Hochfahr- oder Neustart-Firmwarebefehle), welche
ursprünglich
durch spezifische Attribute (z.B. prozessorspezifische Firmwarebefehle)
zusammen gruppiert sind, in Firmware-Komponenten mit nichtspezifischen
Attributen 204 (z.B. nicht prozessorspezifische Funktionen)
und Firmware-Komponenten mit aktualisierbaren und spezifischen Attributen 206 und 208 (z.B.
prozessorspezifische Funktionen) partitioniert oder neu anordnet.
Im Allgemeinen werden Firmware-Komponenten basierend auf solchen
Kriterien wie Wahrscheinlichkeit der Notwendigkeit des Aktualisierens,
Kritikalität
der Komponente (z.B. Code) für
das System, und/oder die gewöhnlichen
Funktionen partitioniert, geteilt und/oder gruppiert.
-
Gemäß einem
Aspekt einer Ausführungsform
der Erfindung können
Firmware-Module in eine generische Firmware-Komponente 204 und
eine oder mehrere prozessorspezifische Firmware-Komponenten 206 und 208 aufgeteilt
werden. Die generische Firmware-Komponente 204, z.B., diejenigen Komponenten,
die nicht sicher aktualisiert werden können und/oder feste Adreßplätze haben,
können Befehle,
Funktionen und/oder Operationen umfassen, die einer Anzahl von unterschiedlichen
Prozessortypen oder anderen elektronischen Vorrichtungen (z.B. Chipsatztypen)
gemeinsam sind. Zusätzlich kann
die generische Firmware-Komponente 204 einen strukturierten
Discovery-Mechanismus verwenden. Dieser strukturierte Discovery-Mechanismus kann
eine Intermediate-Search- oder Handoff-Funktion zu einem oder mehreren
dynamisch aktualisierbaren, weniger generischen (z. B. prozessorspezifischeren)
Modulen umfassen. In einer Ausführung
der Erfindung kann diese Such- und Handoff-Funktion eine Tafel und/oder
Befehle umfassen, um einen bestimmten Prozessor auf eine entsprechende
prozessorspezifische Firmware-Komponente 206 oder 208 zu
richten.
-
Eine
solche Partitionierung zwischen generischen und spezifischen Firmware-Komponenten
vermindert die Größe der kritischen
und/oder nicht aktualisierbaren generischen Komponenten und ermöglicht dadurch
eine größere Flexibilität beim Aktualisieren
der prozessorspezifischen Komponenten während sie das Risiko eines
Totalausfalls während den
Aktualisierungen minimiert. Zusätzlich
stellt der strukturierte Discovery-Mechanismus ebenfalls eine Möglichkeit
zum Unterstützen
von mehreren unterschiedlichen Prozessortypen mit einem einzigen Firmware-Image breit.
-
3 ist
ein Blockdiagramm eines Systemwiederherstellungs- und/oder Hochfahr-Firmware-Moduls, das veranschaulicht,
wie ein Firmware-Modul gemäß ihrer
Aktualisierungsanforderungen und Prozessor- und Plattformabhängigkeit
in mehrere unterschiedliche Binaries geteilt werden kann. Obwohl
dieses Beispiel beschreibt, wie die PAL- und SAL-Firmware-Komponenten, die typischerweise
in der ItaniumTM-Architektur verwendet werden,
gemäß der Erfindung
partitioniert werden können,
sollte klar sein, daß die
Erfindung nicht auf diese Architektur beschränkt ist und in anderen Systemen
und Architekturen verwendet werden kann.
-
Wenn
ein System gestartet oder zurückgesetzt
wird, springt sein Prozessor typischerweise zu einem Reset-Vektorplatz
(z.B. einer Adresse) innerhalb des Firmware-Codes. Gemäß einer
Ausführungsform
der Erfindung, springt der Reset-Vektor zu einem PAL-Eingangspunkt 302.
Vom Eingangspunkt wird zuerst auf nichtspezifische PAL-Komponenten zugegriffen 304.
Die nichtspezifischen PAL-Komponenten sind nicht prozessorspezifisch
und können eine
Mindestmenge an Code umfassen, um die erforderlichen Prozessorinitialisierungsoperationen
auszuführen.
Zum Beispiel können
diese Komponenten Problemumgehungen oder Korrekturen, Authentifizierungsalgorithmen
und/oder Prozessoridentifikationsroutinen umfassen. Die nichtspezifische PAL-Komponente
(die z.B. Befehle und/oder Daten umfaßt) kann durch verschiedene
Prozessortypen ausgeführt
werden.
-
In
einer Ausführung
der Erfindung kann die nichtspezifische PAL eine Komponente zum
Suchen einer gültigen
spezifischen PAL, die mit einem bestimmten Prozessortyp kompatibel
ist, umfassen 306. Das heißt, die nichtspezifische PAL
kann Code, Befehle und/oder Daten zum Identifizieren des gegenwärtigen Prozessors,
der verwendet wird, umfassen und kann eine Tafel verwenden, um zu
bestimmen, ob (eine) prozessorspezifische PAL-Komponente(n) für einen
solchen Prozessor verfügbar ist/sind.
In einer Ausführungsform
der Erfindung kann eine Firmware Interface Table (FIT) verwendet
werden, um nach dem Vorhandensein von spezifischen Komponenten für einen
bestimmten Prozessortyp und seinen entsprechenden Platz zu suchen.
-
In
einer Ausführung
einer Ausführungsform der
Erfindung hat eine FIT einen oder mehrere Einträge, die ein Typenfeld umfassen,
das Komponenten (z.B. prozessorspezifische PAL-Komponenten) und ihre Eingangspunkte
(z.B. Platz oder Adresse für jede
Komponente) identifiziert. Diese Einträge umfassen Pointer, oder andere
Verweise, auf mögliche Kandidaten
für eine
prozessorspezifische PAL-Komponente. In einer Ausführung kann
ein FIT-Eintrag indes nicht den/die bestimmte(n) Prozessortyp oder Prozessorfamilie,
dem/der der Eintrag entspricht, identifizieren. Daher parst ein
Prozessor durch einen oder mehrere Einträge und ihre entsprechenden Komponenten,
um zu bestimmen, ob die richtige prozessorspezifische Komponente
(z.B. PAL) gefunden wurde. Zum Beispiel verwendet eine generische
PAL den Eingangspunkt, um sicherzustellen, daß ein Eintrag eine authentische
PAL (d.h. gültig,
nicht fehlerhaft) ist und verwendet einige Informationen innerhalb
der/des spezifischen PAL-Komponente
oder Images, die/das diesem Eintrag entspricht, um den Prozessortyp,
der zu ihr gehört,
zu bestimmen. Wenn die gewünschte
prozessorspezifische PAL nicht gefunden wird, wird der nächste Eintrag
in der FIT gesucht und die entsprechende prozessorspezifische Komponente
abgefragt oder gesucht bis die richtige Komponente gefunden wird
oder keine Einträge mehr
vorhanden sind. In anderen Ausführungen
umfaßt
die FIT ein Feld, das den Prozessortyp oder die Prozessorfamilie,
dem oder der ein bestimmter Eintrag entspricht, identifiziert, wodurch
die Notwendigkeit des Zugreifens auf jede prozessorspezifische Komponente
zum Identifizieren derjenigen, die die richtige ist, vermieden wird.
-
Wenn
eine entsprechende spezifische PAL-Komponente für den Prozessor gefunden wird, erfolgt
ein Sprung auf diese spezifische PAL-Komponente 308. Prozessorspezifische
PAL-Komponenten, auf
die ebenfalls mit "spezifische
PAL"-Komponenten Bezug
genommen wird, können
diese Funktionen, Befehle, Initialisierungsprozeduren und/oder andere Firmware-Komponenten, welche
spezifisch für
einen bestimmten Prozessortyp sind, umfassen 310.
-
Nachdem
die prozessorspezifischen PAL-Komponenten ausgeführt wurden, kann mit einem
zweiten Sprungvektorplatz fortgefahren werden 312. Der
zweite Sprungvektor 312 leitet die Verarbeitung an SAL-Komponenten 314.
-
Wie
die PAL-Komponenten, können
die SAL-Komponenten in mehrere Komponenten gesplittet werden, die
nicht plattformspezifische und plattformspezifische Komponenten
oder Binaries bereitstellen. Erneut kann die plattformspezifische
SAL 314 alle unterstützten
Chipsatz- und Prozessortypen oder Steppings handhaben. Die nicht
plattformspezifische SAL (z.B. eine generische Firmware-Komponente)
kann einen Discovery-Mechanismus wie eine Firmware Interface Table
(FIT) verwenden, um kompatible plattformspezifische SAL-Komponenten
für eine
bestimmte Prozessor- oder Systemkonfiguration zu suchen und zu erkennen,
falls vorhanden 316.
-
Wenn
eine kompatible plattformspezifische SAL-Komponente gefunden wird,
wird ein Sprung auf die Startadresse für diese plattformspezifische SAL-Komponente
gemacht 318. Die plattformspezifischen SAL-Dienste können dann
ausgeführt
werden 320. Nachdem die spezifische SAL-Komponente ausgeführt wurde,
wird die Hochfahr- und/oder Wiederherstellungsprozedur mit ihrem
regulären
Pfad fortgeführt,
indem alle übrigen
Startup-Befehle und/oder
Komponenten verarbeitet werden.
-
4 ist
eine Tabelle, die die Partitionierung und die Attribute der verschiedenen
in 3 beschriebenen Firmware-Komponenten veranschaulicht.
-
Ein
nichtspezifischer SAL-Pointer 402 würde typischerweise einen festen
Speicherplatz und Inhalt haben, da das Aktualisieren oder Ändern seines
Platzes einen Totalausfall riskiert. Der SAL-Pointer dient dazu,
eine Startadresse für
die nichtspezifische SAL bereitzustellen. Wenn eine Aktualisierung
des nichtspezifischen SAL-Pointers fehlschlagen sollte, würde dies
das Finden der SAL-Komponenten und/oder einen Zugriff darauf verhindern.
-
Eine
generische, nichtspezifische PAL 404 umfaßt Codes,
Initialisierungsroutinen und andere Komponenten, die allen unterstützten Prozessoren gemeinsam
sind. In einer Ausführung,
kann die Größe und Anzahl
von Funktionen der nichtspezifischen PAL 404 minimiert
werden, um eine größere Flexibilität beim Aktualisieren
des Systems bereitzustellen. Insbesondere wird die Größe oder
Funktion der nichtspezifischen oder generischen PAL 404 minimiert,
um die Möglichkeiten
zu vermindern, daß sie Fehler
enthält
oder Verbesserungen benötigt,
und infolgedessen wird die Notwendigkeit, sie zu aktualisieren,
verringert. Da die Startadresse der nichtspezifischen PAL 404 typischerweise
durch den Reset-Vektor referenziert wird, kann es indes sein, daß ihre Adresse
in einigen Ausführungen
ein fester Platz sein muß.
In einer anderen Ausführung,
muß die
nichtspezifische PAL 404 kein fester Platz sein. Zusätzlich,
ist es, da das Aktualisieren der nichtspezifischen PAL einen Totalausfall
riskiert, wenn es nicht erfolgreich abgeschlossen werden kann, allgemein
riskant, ihren Inhalt zu aktualisieren.
-
Wie
die nichtspezifische PAL 404, sollte die nichtspezifische
SAL 406 einen festen Platz und einen festen Inhalt haben,
da durch das Aktualisieren der nichtspezifischen SAL ein Totalausfall
riskiert wird. Typischerweise, ist der nichtspezifische SAL-Pointer 402 nicht
aktualisierbar und umfaßt
eine feste Adresse zu einer nichtspezifischen SAL 406.
-
Der
Firmware Interface Table (FIT) Eintragszeiger 408 stellt
einen Pointer zur FIT bereit, so daß die nichtspezifischen Komponenten
(z.B. 404 und 406) auf die spezifischen Komponenten
zugreifen können.
Der FIT-Eintragszeiger 408 hat typischerweise einen festen
Speicherplatz und einen festen Inhalt (z.B. eine Speicherungs- oder
Speicheradresse). Es ist riskant, den nichtspezifischen PAL-FIT-Eintragszeiger 408 zu
aktualisieren, da damit ein Totalausfall riskiert wird, wenn die
Aktualisierung fehlschlagen sollte. Da der FIT-Eintragszeiger 408 den Platz
für die
FIT bereitstellt, würde
eine fehlgeschlagene Aktualisierung des FIT-Eintragszeigers verhindern,
daß das
System hochgefahren wird.
-
Allgemein
umfaßt
eine Firmware Interface Table (FIT) 410 Pointer zu prozessorspezifischen Komponenten.
Zum Beispiel kann die FIT 410 eine Liste von Prozessortypen
und die entsprechenden Plätze
für ihre(n)
entsprechenden Code oder Befehle bereitstellen. In einer Ausführung, ist
der FIT-Eintragszeiger 408 an einem festen Platz gespeichert. Die
FIT 410 ist nicht an einem festen Platz sondern befindet
sich vielmehr an gleich welcher Adresse, die durch den FIT-Eintragszeiger 408 angegeben
wird. Nachdem der FIT-Eintragszeiger 408 angegeben oder
programmiert wurde, ist es indes riskant, diesen Wert zu ändern und
daher wird der Platz der FIT 410 danach festgelegt. Der
Inhalt der FIT kann indes immer noch sicher unter Verwendung verschiedener Systeme,
von denen einige hierin beschrieben werden, aktualisiert. werden.
-
Eine
oder mehrere spezifische PAL-Komponenten 412 und eine oder
mehrere spezifische SAL-Komponenten 414 können mehrere
unterschiedliche Prozessortypen unterstützen. Die spezifischen PAL-Komponenten 412 und/oder
spezifischen SAL-Komponenten 414 müssen keinen festen Platz haben
und ihr Inhalt kann aktualisiert werden wie gewünscht.
-
Wenn
spezifische PAL- 412 und/oder spezifische SAL- 414 Komponenten
aktualisiert werden, können
mehrere Vorgehensweisen zum Beibehalten der Konsistenz mit der FIT
verwendet werden. Zwei neue Vorgehensweisen zum Durchführen sicherer Aktualisierungen
der spezifischen PAL- und/oder spezifischen SAL-Komponenten werden
hierin zu Veranschaulichungszwecken beschrieben.
-
In
einer ersten Ausführung
der Erfindung, umfaßt
die FIT feste Adreß-
und Längenfelder
für die spezifischen
PAL-/SAL-Komponenten. Die Längenfelder
können
gepaddet sein, um eine Erweiterung zu berücksichtigen. In einer Ausführung der
Erfindung können
zusätzliche
Dummy- und/oder
nicht verwendete Einträge
in der FIT vorhanden sein, um das Hinzufügen ganzer neuer Komponenten
zu ermöglichen, ohne
die Größe der FIT-Tafel
verändern
zu müssen. Das
heißt,
die nicht verwendeten Einträge
können nachträglich verwendet
werden, indem neue Komponenten in den festen Adressen oder Plätzen, die durch
diesen vorher nicht verwendeten Eintrag referenziert wurden, angeordnet
werden. Das Ersetzen oder Aktualisieren spezifischer Komponenten
(z.B. prozessorspezifische PAL/SAL) erfordert lediglich das Einfügen der aktualisierten
Komponente (z.B. Code) bei der festen Adresse, die für diese
spezifische Komponente zugewiesen wurde, und das Beibehalten der
Länge der
Komponente innerhalb der festen Länge, die in der FIT festgelegt
ist. In einer Ausführung
wird eine vorherige Version einer prozessorspezifischen PAL-/SAL-Komponente
beibehalten, bis die aktualisierte Version der Komponente authentifiziert
wurde. Zum Beispiel kann die aktualisierte Version mit einem nicht
verwendeten Eintrag in der FIT verbunden werden und in den entsprechenden Adreßraum, der
durch diesen nicht verwendeten Eintrag referenziert wird, geladen
werden. Nachdem die aktualisierte Komponente authentifiziert wurde,
kann die vorherige Version beseitigt werden.
-
In
einer zweiten Ausführung
der Erfindung können
redundante FITs verwendet werden. In dieser Vorgehensweise, werden
zwei FITs beibehalten, zum Beispiel eine primäre FIT und eine sekundäre FIT. Wenn
eine Komponente aktualisiert wird, wird die primäre FIT zuerst mit dem Platz,
der Größe und/oder den
Attributen der Komponente aktualisiert. Wenn die Aktualisierung
der FIT fehlschlägt,
ist die sekundäre
FIT (Backup-FIT) vorhanden und kann verwendet werden, um die alten
Plätze
der Komponenten oder einen vollständig separaten redundanten
Satz von Komponenten zu lokalisieren. Nachdem die primäre FIT-Aktualisierung
erfolgreich abgeschlossen wurde, wird die sekundäre FIT aktualisiert, um die Kohärenz beizubehalten.
In einer Ausführung,
hat die FIT-Tafel eine Checksumme, die dabei hilft, zu identifizieren,
ob eine FIT-Aktualisierung der primären FIT fehlgeschlagen ist.
Wenn ein solcher Fehlschlag bestimmt wird, wird die sekundäre FIT anstatt
der primären
FIT verwendet. Die sekundäre
FIT wird ebenfalls gesucht, wo eine bestimmte prozessorspezifische
Komponente nicht in der primären
FIT gefunden werden kann.
-
In
einer Ausführung
von redundanten FIT-Tafeln bestehen zwei FIT-Eintragszeiger, z.B.
ein primärer
FIT-Eintragszeiger und ein sekundärer FIT-Eintragszeiger, die
beide auf eine FIT-Tafel, in dieser Reihenfolge, die primäre FIT und
die sekundäre
FIT, zeigen. Beim Startup wird ein Prozessor typischerweise den
primären
FIT-Eintragszeiger verwenden, um auf die primäre FIT zuzugreifen. Wenn indes beim
Startup-Prozess ein Problem auftritt (z.B. ungültige primäre FIT, ungültige Header-Prüfung der primären FIT,
usw.) wird statt dessen die sekundäre FIT aufgerufen. Wenn die
sekundäre
FIT aufgerufen wird, kann ein Code gesetzt werden, der der nachfolgenden
SAL-Komponente anzeigt, daß ein
Problem mit der primären
FIT besteht. Die SAL-Komponente kann dann Fehler in der primären FIT
korrigieren. Das Aktualisieren des primären FIT-Eintragszeigers ist
indes immer noch riskant, da ein Programmierfehler oder eine Unterbrechung
während
der Aktualisierung des Eintragszeigers das Blockieren des Systems verursachen
könnte.
Während
es in vorherigen Ausführungsformen
der Erfindung riskant war, einen FIT-Eintragszeiger zu aktualisieren,
können
in dieser Ausführungsform
der Erfindung sowohl ein FIT-Eintragszeiger (z.B. primärer FIT-Eintragszeiger)
als auch die FIT (z.B. primäre
FIT) sicher aktualisiert werden, da ein Backup-Zeiger und eine Tafel
(z.B. sekundärer
FIT-Eintragszeiger
und sekundäre
FIT) verwendet werden können,
um Fehler, die beim Aktualisieren eines FIT-Eintragszeigers und/oder
einer FIT auftreten können,
zu korrigieren oder zu reparieren. Zum Beispiel kann eine Checksumme
verwendet werden, um zu bestimmen, ob ein Eintragszeiger und/oder
eine Tafel gültig
sind.
-
In
mehreren Ausführungen
können
prozessorspezifische Komponenten, wie beispielsweise 412 und 414,
sicher ohne das Risiko eines Totalausfalls aktualisiert werden.
Da die nichtspezifische(n) Komponente(n) einen Discovery-Mechanismus
umfaßt/umfassen,
durch den prozessorspezifische Komponenten (z. B. eine Firmware
Interface Table) identifiziert werden, können mehr als eine Kopie von prozessorspezifischen
Komponenten gespeichert werden (z.B. im Flash-Speicher). Dies stellt
das Potential für
redundante Kopien von jeder Komponente bereit. Aktualisierungen
oder Änderungen
der prozessorspezifischen Komponenten (z.B. spezifische PAL- oder
SAL-Binaries) können
nun jeweils auf einer einzelnen Komponentenkopie durchgeführt werden.
Dies gewährleistet,
daß jederzeit
eine gültige prozessorspezifische
Komponente verfügbar
sein wird, und ermöglicht
Aktualisierungen eines vorher nicht aktualisierbaren kritischen
Bereichs des Firmwarecodes. In einer anderen Ausführung werden
redundante Kopien des Firmware-Images, von denen jede eine oder
mehrere prozessorspezifische Komponenten umfaßt, mit nur einer FIT-Tafel
beibehalten. Zum Beispiel wird eine aktualisierte Komponente geladen
und mit einem nicht verwendeten Eintrag in der FIT verbunden und,
nachdem die Komponente authentifiziert wurde, wird die vorherige
Version der Komponente beseitigt.
-
5 ist
ein Flußdiagramm,
das ein Verfahren zum Aktualisieren prozessorspezifischer Komponenten
gemäß einer
Ausführungsform
der Erfindung veranschaulicht. Während
ein Eintrag in einer Firmware Interface Table (FIT) eine zweite
Instanz oder Kopie von einer/einem prozessorspezifischen Komponente
oder Binary referenziert, wird eine erste Instanz von der Komponente
oder dem Binary wie gewünscht
geändert,
aktualisiert und/oder verändert 502.
Die aktualisierte erste Instanz der prozessorspezifischen Komponente
kann validiert werden, um sicherzustellen, daß keine Probleme aufgetreten
sind (z.B. daß sie
richtig aktualisiert wurde, daß das
richtige Binary verwendet wurde, usw.) 504. In einer Ausführung kann
die Firmware Interface Table (FIT) nach der Validierung aktualisiert
werden, um die aktualisierte erste Instanz der prozessorspezifischen
Komponente zu referenzieren 506. Dann kann die zweite Instanz
der prozessorspezifischen Komponente aktualisiert 508 und
validiert 510 werden.
-
Es
sollte erwähnt
werden, daß die
nichtspezifischen Komponenten (z.B. solche Teile der PAL und/oder
SAL) aus den gleichen Gründen
wie vorhergehend erwähnt
(z.B. Risiko eines Totalausfalls) immer noch nicht aktualisiert
werden können
aber die Größe und die
Funktionen dieser Komponenten werden minimiert.
-
Folglich
können
Firmware-Architekturen, wie in den vorhergehend beschriebenen Beispielen
und Ausführungsformen
veranschaulicht, verändert,
angeordnet oder konfiguriert werden, um sichere Aktualisierungen
von Teilen von Firmware-Komponenten, deren Änderung zwischen Prozessor-
oder Systemmodellen (z.B. prozessorspezifische Komponenten oder
Binaries) am wahrscheinlichsten ist, zu ermöglichen und folglich Ausfallzeiten
und/oder das Risiko eines Totalausfalls zu vermeiden, wenn die Aktualisierung
unterbrochen wird, durch ein unerwartetes Ereignis angehalten wird
oder die falsche Komponente oder das falsche Firmware-Image aktualisiert wird.
-
Zusätzlich ermöglichen
die unterschiedlichen Aspekte der Ausführungsformen der beschriebenen
Erfindung das Unterstützen
mehrerer Prozessoren mit einem einzigen Firmware-Image. Zum Beispiel stellt ein Aspekt
einer Ausführungsform
der Erfindung eine Firmware-Architektur
bereit, die mehrere Prozessortypen unterstützt, wohingegen ein herkömmliches
Firmware-Image im Speicher (z.B. Flash-Speicher) nur jeweils einen
Prozessortyp unterstützt.
Da die nichtspezifische(n) Komponente(n) einen Discovery-Mechanismus
zum Suchen der FIT für
die spezifischen Komponenten umfaßt, können mehrere unterschiedliche
Kopien dieser prozessorspezifischen Komponenten im gleichen Firmware-Image
(z.B. in einem einer Flash-Speicher
oder Speicherung) gespeichert werden. Dies ermöglicht das Unterstützen mehrerer
Prozessortypen durch ein einzelnes Firmware-Image, was vorher mit
herkömmlichen
Firmware-Architekturen
nicht möglich war.
In dieser neuen Architektur, sucht die nichtspezifische Komponente
(z.B. PAL oder SAL) die richtige prozessorspezifische Komponente
(z.B. PAL oder SAL) basierend auf den im System gefundenen Prozessortypen.
Dies ermöglicht
ein Umschalten zwischen Prozessoren in einer viel benutzerfreundlicheren
An als mit den herkömmlichen
Firmware-Architekturen. Außerdem
kann, wenn Hot-Add- oder Hot-Swap- Prozessortechnologie verfügbar wird,
der neu hinzugefügte
Prozessor durch die hierin beschriebene Firmware-Architektur unterstützt werden.
-
Die
unterschiedlichen Aspekte von Ausführungsformen der vorhergehend
beschriebenen Erfindung können
ohne die Kosten des Unterstützens
redundanter Flash-Vorrichtungen durchgeführt werden und erfordern keine
Chipsatz-Veränderungen.
-
Obwohl
bestimmte Ausführungsbeispiele
in den begleitenden Zeichnungen beschrieben und gezeigt wurden,
ist zu verstehen, daß solche
Ausführungsformen
lediglich veranschaulichend und nicht einschränkend für die weiten Aspekte von verschiedenen
Ausführungsformen
der Erfindung sind und daß diese
Ausführungsformen
nicht auf die spezifischen Konstruktionen und Anordnungen, die gezeigt und
beschrieben wurden, beschränkt
sind, da verschiedene andere Veränderungen
möglich
sind. Zum Beispiel ist das Konzept, obwohl die Offenbarung eine
spezifische Anwendung für
PAL- und SAL-Firmware-Komponenten beschreibt, nicht nur auf diese spezifischen
Komponenten oder Softwarebeispiele beschränkt. Zusätzlich ist es möglich, die
Ausführungsformen
der Erfindung oder einige ihrer Merkmale in Hardware, programmierbaren
Vorrichtungen, Firmware, Software oder einer Kombination davon auszuführen.
-
Zusammenfassung
-
Eine
Ausführungsform
der Erfindung stellt eine Firmware-Architektur zur Verfügung, die
Firmware-Module aufspaltet, um ein sicheres Aktualisieren von spezifischen
Modulen sowie eine Unterstützung
einer Vielzahl unterschiedlicher Prozessoren zu unterstützen. Ein
Firmware-Bild wird in mehrere unterschiedliche Binaries unterteilt,
basierend auf ihren Aktualisierungsanforderungen und in Abhängigkeit von
dem Prozessor/der Plattform. Ein Firmware Interface Table ermöglicht sichere
Aktualisierungen, indem die Option von redundanten Kopien von speziellen
Modulen ermöglicht
wird, sowie von Unterstützungssystemen
mit unterschiedlichen und/oder mehreren Prozessorarten, unterschiedlichen
Prozessoren der gleichen Familie und/oder Fault Resilient Firmware
Aktualisierungen.