DE60005563T2 - Rechnersysteminitialisierung durch in einem speicher mit sequentiellem zugriff gespeicherten urlade-code - Google Patents

Rechnersysteminitialisierung durch in einem speicher mit sequentiellem zugriff gespeicherten urlade-code Download PDF

Info

Publication number
DE60005563T2
DE60005563T2 DE60005563T DE60005563T DE60005563T2 DE 60005563 T2 DE60005563 T2 DE 60005563T2 DE 60005563 T DE60005563 T DE 60005563T DE 60005563 T DE60005563 T DE 60005563T DE 60005563 T2 DE60005563 T2 DE 60005563T2
Authority
DE
Germany
Prior art keywords
boot
access memory
sequential access
processor
memory
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.)
Expired - Lifetime
Application number
DE60005563T
Other languages
English (en)
Other versions
DE60005563D1 (de
Inventor
E. Ralph GIBSON
J. Loren SHALINSKY
A. Mark MCCLAIN
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.)
GlobalFoundries Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE60005563D1 publication Critical patent/DE60005563D1/de
Application granted granted Critical
Publication of DE60005563T2 publication Critical patent/DE60005563T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44573Execute-in-place [XIP]
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung betrifft generell das Gebiet elektronischer digitaler Computer und insbesondere ein Computersystem, bei dem ein Boot-Code in einem Sequentiellzugriffs-Speicher gespeichert ist.
  • TECHNISCHER HINTERGRUND DER ERFINDUNG
  • In US-A-5 951 685 ist ein Computersystem mit einem Prozessor und einem programmierbaren Seriellzugriffs-Festwertspeicher (PROM) beschrieben, der direkt mit einem Speicherkontrollen gekoppelt ist. Beim Einschalten stoppt der Speicherkontrollen den Prozessor und sendet einen Ladebefehl zu dem seriellen PROM. Der selbstkonfigurierende Speicherkontrollen liest sequentiell den BIOS-Code aus dem Seriellzugriffs-PROM aus und lädt den gesamten Inhalt des seriellen PROM während des Einschaltens und vor dem Betrieb der CPU und kopiert ihn in einen Teil des Basis-DRAM-Speichers. Wenn der gesamte BIOS-Code übertragen ist, wird der Prozessor freigegeben, um den Prozessor-Wartezustand zu beenden.
  • Ein herkömmliches digitales Computersystem weist einen nicht flüchtigen Festwertspeicher (ROM) auf, der Boot-Code-Befehle enthält. Dieser Boot-Programmcode wird zum Aufbauen der untergeordneten Hardware-Funktionen des System verwendet, bevor das Betriebssystem oder die Anwendungsprogramme die Steuerung des Systems erhalten.
  • Die zentrale Verarbeitungseinheit (CPU) des Systems, die typischerweise ein Mikrokontrollen oder ein Mikroprozessor ist, ist zum Springen auf eine vorbe stimmte Speicheradresse in dem ROM und Beginnen der Ausführung des Boot-Codes bei Initialisierung (einschließlich Einschaltung oder Rücksetzung) des Systems vorgesehen. Der Boot-Code bewirkt das Laden oder Ausführen eines Betriebssystem oder Hochfahr-Anwendungsprogramms.
  • Ein einen Boot-Code aufweisender ROM ist typischerweise ein Direktzugriffsspeicher, bei dem direkt und unabhängig auf einen Befehl oder auf Daten bei einer beliebigen Adresse zugegriffen werden kann. Dies unterstützt das Verzweigungsverhalten der meisten Programme, bei denen ein einer Verzweigung folgender Befehl von einer beliebigen Stelle in dem Speicher gelesen werden kann. Diese Speicher sind ferner zum Lesen unmittelbar nach Energiezufuhr bereit.
  • Es sind Sequentiellzugriffs-Speicher entwickelt worden, die gegenüber Direktzugriffsspeichern Vorteile und Nachteile bieten. Bei einem Sequentiellzugriffs-Speicher kann auf einzelne Adressen nicht direkt zugegriffen werden. Der Speicher ist in Form von Seiten mit beispielsweise jeweils 512 Bytes organisiert, und es ist erforderlich, eine ganze Seite oder eine halbe Seite zu lesen, um den an einer bestimmten Adresse auf der Seite gespeicherten Code zu erhalten.
  • Ein Sequentiellzugriffs-Speicher, der in vorteilhafter Weise zum Durchführen der vorliegenden Erfindung verwendet werden kann, ist der Am30LV0064D UltraNANDTM von Advanced Micro Devices, Inc. (AMD), Sunnyvale, CA, USA. Dieser Speicher ist eine auf der NAND-Architektur basierende Flash-ROM-Vorrichtung.
  • Im Vergleich zu nicht flüchtigen Sequentiellzugriffs-Speichern benötigen ROMs mehr physische Anschlussstifte und Verbindungen, hauptsächlich für Adressenleitungen, kosten bei der gleichen Bitdichte beträchtlich mehr und sind nicht in so großer Dichte verfügbar wie Sequentiellzugriffs-Speicher.
  • Sequentiellzugriffs-Speicher erfordern andererseits generell das Schreiben einer Befehlssequenz in die Vorrichtung zum Auswählen und Lesbarmachen eines Informationssatzes und sind somit nicht zum Lesen unmittelbar nach Energiezufuhr bereit. Sie können nur Informationen von sequentiellen Stellen in dem Speicher lesen, bis eine neue Befehlssequenz geschrieben ist und unterstützen somit nur eine lineare Programmausführung.
  • Bei Computersystemen, bei denen die höhere Dichte und die niedrigeren Kosten, die von dem Sequentiellspeicher geboten werden, gewünscht werden, war es bisher erforderlich, auch einen nicht flüchtigen Direktzugriffspeicher zumindest zum Unterstützen der anfänglichen Programmausführung, das auch als Booten des Systems bekannt ist, vorzusehen. Die anfängliche Programmausführung muss in dem nicht flüchtigen ROM erfolgen, und zwar zumindest bis der Sequentiellzugriffs-Speicher für das Lesen aufgebaut ist und in dem Sequentiellzugriffs-Speicher enthaltene Programme zu Ausführungszwecken zu einem flüchtigen Direktzugriffsspeicher (RAM) übertragen werden können.
  • Wie oben beschrieben, ist ein Sequentiellzugriffs-Speicher kostengünstiger und weist eine höher Speicherdichte auf als ein Direktzugriffsspeicher. Bei einem System, bei dem ein Sequentiellzugriffs-Speicher der bevorzugte Speichertyp ist, ist es wünschenswert, dass kein separater nicht flüchtiger Direktzugriffsspeicher zum Unterstützen der anfänglichen Programmausführung erforderlich ist, um die Kosten und die Größe des Systems zu reduzieren. Es ist jedoch in der Vergangenheit nicht gelungen, diese Funktionalität zu bieten.
  • BESCHREIBUNG DER ERFINDUNG
  • Angesichts des oben Gesagten stellt die vorliegende Erfindung ein Computersystem bereit, bei dem die anfängliche Programmausführung nur mit einem Sequentiellzugriffs-Speicher durchgeführt wird, so dass kein separater nicht flüchtiger Direktzugriffsspeicher erforderlich ist.
  • Dies wird mit einem erfindungsgemäßen Computersystem realisiert, das einen Prozessor, einen Sequentiellzugriffs-Speicher mit einem darin gespeicherten Boot-Programm und einen Boot-Lader aufweist. Der Boot-Lader weist eine Zustandsmaschine auf, die in Reaktion auf das Initialisieren des Computersystems den Sequentiellzugriffs-Speicher derart steuert, dass dieser die erste Seite des Sequentiellspeichers, die einen ersten Teil des Boot-Programms enthält, ausliest. Der erste Teil des Boot-Codes wird unter der Maßgabe erstellt, dass der Sequentiellspeicher nur sequentielle Wörter des Speichers an den Prozessor liefern kann. Der erste Teil des Boot-Codes befiehlt dem Prozessor, einen zweiten Teil des Boot-Codes in einen flüchtigen RAM zu kopieren. Wenn der zweite Teil des Boot-Codes in den RAM kopiert ist, führt der erste Teil des Boot-Codes einen Verzweigungs- (Sprung-) Befehl aus, mit den die Steuerung auf den zweiten Teils des Boot-Codes, der sich in dem RAM befindet, übertragen wird. Der zweite Teil des Boot-Codes ist dann in der Lage, die von dem RAM gebotene Möglichkeit des direkten Zugriffs wahrzunehmen, durch den eine normale Code-Ausführung ermöglicht wird, einschließlich Sprüngen innerhalb des Boot-Codes in dem RAM. Der zweite Teil des Boot-Codes kann bewirken, dass die entsprechenden Befehle an den Sequentiellspeicher gesandt werden, um einen beliebigen anderen Code, der benötigt wird, in den RAM zu übertragen.
  • Diese und weitere Merkmale und Vorteile der vorliegenden Erfindung werden für Fachleute auf dem Sachgebiet anhand der folgenden detaillierten Beschreibung in Zusammenhang mit den beiliegenden Zeichnungen offensichtlich, in denen gleiche Bezugszeichen gleiche Teile bezeichnen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt ein vereinfachtes Blockschaltbild eines erfindungsgemäßen Computersystems;
  • 2 zeigt ein Schaltschema eines Boot-Laders und Sequentiellzugriffs-Speichers des in 1 gezeigten Computersystems;
  • 3 zeigt ein Anschlussstiftbelegungsplan des Boot-Laders;
  • 4 zeigt ein Ablaufdiagramm des erfindungsgemäßen Verfahrens;
  • 5 zeigt ein Zustandsdiagramm einer Zustandsmaschine des Boot-Laders;
  • 6 zeigt ein Zeitdiagramm des erfindungsgemäßen Systems;
  • 7 zeigt ein detaillierteres Schaltschema des Boot-Laders und des Sequentiellzugriffsspeichers; und
  • 8 zeigt ein vereinfachtes Blockschaltbild eines Boot-Laders und Sequentiellzugriffsspeichers, die in einer einzelnen integrierten Schaltung implementiert sind.
  • ART DER AUSFÜHRUNG DER ERFINDUNG
  • 1 zeigt ein endungsgemäßes Computersystem 10, das ein Motherboard 12 aufweist. Ein Prozessor oder eine zentrale Verarbeitungseinheit (CPU) 14, auch als Mikrokontrollen oder Mikroprozessor bekannt, ein flüchtiger Direktzugriffsspeicher 16 und eine Energieversorgung 18 sind auf herkömmliche Weise auf dem Motherboard 12 vorgesehen. Eine Eingangs-/Ausgangs- (I/O-) Einheit 20 sorgt für eine Verbindung zwischen dem Motherboard 12 und typischen I/O-Vorrichtungen, wie z. B. einem Anzeigemonitor 22, einer Tastatur 24 und einem oder mehreren Diskettenlaufwerken 26. Diese Komponenten sind über Signalbusse, Energieleitungen, Anschlussteile etc., die kollektiv mit 28 bezeichnet sind, miteinander verbunden.
  • Erfindungsgemäß weist das System 10 ferner einen Power-Good- oder Rücksetz-Signalgenerator 30 auf, der ein PWRGOOD- (oder RESET-) Signal erzeugt, nachdem die Energieversorgung 18 eingeschaltet worden ist und die Betriebsspannungen ihre korrekten Pegel erreicht haben. Das System 10 weist ferner einen Sequentiellzugriffs-Speicher 32 und einen Boot-Lader 34 auf.
  • Der Speicher 32 ist vorzugsweise ein UltraNANDTM-Speicher von Advanced Micro Devices (AMD), Sunnyvale, CA. Der in diesem Beispiel dargestellte Speicher 32 ist eine auf der NAND-Architektur basierende elektrisch löschbare programmierbare Flash-Festwertsspeicher- (EEPROM-) Vorrichtung Am30LV 0064D UltraNANDTM und ist in der Lage, eine Datenmenge von 64 Megabits zu speichern. Die Daten werden auf 16.384 Speicherseiten gespeichert, von denen jede 512 Bytes an regulären Daten und 16 Bytes an Ersatzdaten enthält. Erfindungsgemäß speichert der Speicher 32 Boot-Code-Befehle, und zwar beginnend mit der niedrigsten Speicherseite, die anfangs beim Initialisieren (Einschalten) des Computersystems 10 ausgeführt werden. Ein ist kein nicht flüchtiger RAM zu diesem Zweck vorgesehen.
  • Der Boot-Lader 34 und der Speicher 32 sind in 2 dargestellt, und ein Anschlussstiftbelegungsplan des Boot-Laders 34 ist in 3 gezeigt. Der Boot-Lader 34 ist vorzugsweise eine programmierbare Logikvorrichtung (PLD) Am-PALLV16V8-105C von Vantis Corporation, Sunnyvale, CA. Konfiguration und Operation des Speichers 32 und des Boot-Laders 34 werden nachstehend detailliert beschrieben.
  • 4 zeigt ein Ablaufdiagramm eines erfindungsgemäßen Bootstrap-Ladeverfahrens, das von dem System 10 durchgeführt wird. Bei Initialisierung sperrt der Boot-Lader 34 den Prozessor 14 und verhindert dadurch den Versuch sei tens des Prozessors, Befehle auszuführen. Der Boot-Lader 34 erfasst den Status des PWRGOOD-Signals und wird freigegeben, wenn das PWRGOOD-Signal anzeigt, dass die Energieversorgung 18 die korrekten Betriebsspannungen erzeugt.
  • Der Boot-Lader 34 weist eine interne Zustandmaschine auf, die von der programmierten Logik implementiert worden ist. Der Speicher 32 fordert an, dass Aufbaubefehle in den Speicher geschrieben werden, bevor er in der Lage ist, Daten zu lesen. Die Zustandsmaschine in dem Boot-Lader 34 erzeugt diese Aufbaubefehle und schreibt diese in den Speicher 32. Zuerst schreibt die Einheit 34 einen Lesebefehl in einen Befehls-Latchspeicher des Speichers 32. Der Boot-Lader 34 schreibt dann eine Adresse in den Adressen-Latchspeicher des Speichers 32.
  • Bei diesem Beispiel wird ein Lückenlos-Lesebefehl verwendet. Der Lückenlos-Lesebefehl ist ein übergeordneter Befehl des UltraNAND-Speichers 32, der es diesem ermöglicht, mehrere Speicherseiten sequentiell auszugeben. Ein normaler Lesebefehl steht ebenfalls zu Verfügung, der immer eine einzelne Seite liest und eine Latenzzeit von 7 Ts hat, in der jede Seite in ein 528-Bit-Ausgangsdatenregister geladen wird. Der Lückelos-Lesebefehl eliminiert die zwischen den Seiten auftretende Latenzzeit, und es gibt nur eine einzige Latenzzeit von 7 Ts beim Laden der ersten Seite. Dies ermöglicht es dem Boot-Code, mehrere Speicherseiten zu überbrücken, ohne dass weitere Lesebefehle an den Speicher ausgegeben werden müssen. Die Adresse, die der Boot-Lader 34 in den Adressen-Latchspeicher des Speichers 32 lädt, ist die Adresse der ersten Seite in dem Speicher 32. Der normale Lesebefehl kann jedoch innerhalb des Umfangs der Erfindung alternativ verwendet werden.
  • Beim nächsten Schritt liest der UltraNAND-Speicher 32 die erste Seite des Boot-Codes aus seiner internen Struktur in sein Datenregister und zeigt die Beendigung der Seitenleseoperation durch Setzen seines Ready/Busy- (RY/ BY#-) Signals in den Bereit-Zustand an. Die Zustandsmaschine des Boot-La ders 34 gibt dann den Prozessor 14 frei, damit dieser durch Deaktivieren von INIT# die Befehlsausführung fortsetzt. Eine herkömmliche Zustandsmaschine oder ein fester Mikrocode ist in dem Prozessor 14 vorgesehen, der bewirkt, dass der Prozessor zu einer vorbestimmten Adresse springt, an der der Prozessor den Boot-Code in dem System zu finden glaubt. Das System dekodiert diese Adresse, um den Speicher 32 auszuwählen. Der Prozessor beginnt mit dem Lesen und Ausführen der Boot-Code-Befehle von der Speicherseite in dem Ausgangsdatenregister des Speichers 32. Es sei darauf hingewiesen, dass der Prozessor sämtliche von dem Speicher als Boot-Code-Befehle gelieferten Daten akzeptiert. Die von dem Prozessor präsentierte Boot-Code-Adresse wird von dem Speicher ignoriert. Das heißt, dass die gleiche erste Speicherseite für einen beliebigen Prozessor verwendet wird, und zwar unabhängig davon, ob der Prozessor zum Auswählen des Boot-Codes eine niederwertige oder eine hochwertige Adresse benutzt. Der Boot-Code muss jedoch die von dem Prozessor zum Auswählen des Boot-Codes verwendete Adresse kennen. Wenn ein Prozessor eine hohe Speicheradresse für die ersten Wörter des Boot-Codes verwendet, muss der Code einen Sprungbefehl enthalten, der die Prozessoradresse in eine niedrigere Adresse ändert. Diese Adresse muss noch innerhalb des Adressenbereichs liegen, der von dem System zum Auswählen des Speichers 32 dekodiert wird. Ohne den Sprungbefehl kann ein solcher Prozessor seine Adresse bis zu dem Punkt inkrementieren, an dem er zyklisch zu einer niedrigen Speicheradresse gelangt, die den Boot-Speicher 32 nicht mehr auswählt. Die verwendete tatsächliche Adresse ist nicht kritisch, da die UltraNAND-Vorrichtung einfach einen sequentiellen Strom von Befehlen liefert, der von dem Adressenbus unabhängig ist. Die Sprung-Zieladresse muss jedoch ausreichend weit unterhalb des oberen Teils des Speichers liegen, um die Adresse in dem Adressenplatz des Speichers 32 zu halten, bis dieser erste Teil des Boot-Codes auf den zweiten Teil des Boot-Codes, der in den RAM kopiert worden ist, springt.
  • Der Boot-Code muss ferner wissen, wie der Prozessor Befehle abruft. Viele Prozessoren weisen eine Befehlsabruf-Zustandsmaschine auf, die vor der tat sächlichen Verwendung von Befehlen durch die Befehlsausführungs-Zustandsmaschine des Prozessors Befehle in einen Puffer liest. Dies wird häufig als Vorabrufen von Befehlen bezeichnet. Wenn ein Sprungbefehl ausgeführt wird, werden Vorabrufbefehle ignoriert. Befehle, die vorabgerufen und in den Vorabrufpuffer platziert worden sind, werden nicht ausgeführt, wenn der Sprungbefehl die Adresse ändert, von der aus der nächste Befehl auszuführen ist. Dies ist wichtig, da der Sequentiellzugriffs-Speicher die Prozessoradresse ignoriert. Der Sequentiellzugriffs-Speicher liefert jedes Mal nach dem Lesen des Speichers einfach das nächste Wort von dem Speicher. Da eine Befehlsvorabruf-Zustandsmaschine mehrere Wörter von dem Speicher übernehmen kann, bevor ein Sprungbefehl ausgeführt wird und den Vorabrufpuffer löscht, muss der Boot-Code wissen, wie viele Wörter des Speichers von dem Sprungbefehl gelöscht werden können. Der nächste Befehl, der nach dem Sprung ausgeführt werden muss, muss nicht im Bereich der dem Sprungbefehl folgenden Stellen liegen, welcher aus dem Vorabrufpuffer gelöscht werden kann. Wenn die genaue Anzahl von Wörtern, die übersprungen werden müssen, nicht vorhergesagt werden kann, muss der Code genügend dem Sprungbefehl folgende Nulloperations- (NOP-) Befehle enthalten, um sicherzustellen, dass der dem Sprung folgende Befehl nicht gelöscht werden kann. Ein beliebiger Teil der dem Sprung folgenden NOP-Befehle kann sicher ausgeführt werden, bis der nächste gültige Befehl den Code erreicht hat. Die genaue Anzahl von abgerufenen und später aus dem Vorabrufpuffer gelöschten NOP-Befehlen ist nicht wichtig oder wirkt sich nicht störend auf die restliche Befehlausführung aus.
  • Nach der Einstellung der Befehlsabrufadressen, wie oben beschrieben, besteht die nächste Aufgabe in dem Kopieren des zweiten Teils des Boot-Codes in den RAM. Die nächsten Befehle des Boot-Codes bewirken vorzugsweise eine "Zeichenfolge-Kopier-" Operation, die dazu führt, dass eine sequentielle Gruppe von unverzüglich folgenden Wörtern in dem Speicher 32 in einen flüchtigen Execute-in-Place- (XIP-) Direktzugriffsspeicher kopiert wird. Bei dieser Gruppe von Wörtern handelt es sich um den zweiten Teil des Boot-Codes, der in den ersten Teil des Boot-Codes eingebettet ist. Der XIP-Speicher kann der RAM 16 oder alternativ ein Cachespeicher oder ein anderer Speicher in dem Prozessor 14 sein.
  • Da einige Prozessoren einen Befehlsvorabruf durchführen, kann es auch hier erforderlich sein, NOP-Befehle zwischen dem Zeichenfolge-Lesebefehl und dem Beginn des zweiten Teils des Boot-Codes einzusetzen. Dadurch soll sichergestellt werden, dass kein Bereich des zweiten Teils des Boot-Codes in den Vorabrufpuffer übernommen wird, bevor der Zeichenfolge-Kopiervorgang mit dem Lesen von Wörtern aus dem Speicher beginnt. Es ist vielleicht nicht möglich, die beginnende Grenze zwischen Wörtern, die sich bereits in dem Vorabrufspeicher befinden, und Wörtern, die zuerst von dem Zeichenfolge-Kopierbefehl kopiert werden, vorherzusagen. Daher müssen dem Ende der zu kopierenden Zeichenfolge zusätzliche NOP-Befehle folgen und muss durch die Länge der Kopie sichergestellt sein, dass der gesamte zweite Teil des Boot-Codes kopiert wird. Die kopierte Zeichenfolge kann somit einige am Anfang oder am Ende stehende NOP-Befehle enthalten. Die NOP-Befehle beeinflussen nicht die von dem ersten oder dem zweiten Teil des Boot-Codes ausgeführten Operationen. Sie machen jedoch die Grenze zwischen den ausgeführten Befehlen und der kopierten Zeichenfolge flexibel.
  • Da die genaue Ausrichtung des Codes innerhalb der Zeichenfolge-Kopie möglicherweise nicht bekannt ist, ist es erforderlich, relative Verzweigungen innerhalb desjenigen Teils des Bootstrap-Programms zu verwenden, der in den XIP-Speicher geladen ist.
  • Es ist ferner möglich, eine Folge von Sofortbewegungs-Befehlen anzuwenden, um den zweiten Teil des Boot-Codes in den XIP-Speicher einzusetzen. Dies führt zu einer besseren Steuerung der Code-Ausrichtung. Dadurch wird jedoch der Boot-Code größer und schwerer zu erzeugen, da der zweite Teil des Boot-Codes von einem Befehlsstrom in einen Strom von Sofortbewegungs-Befehlen konvertiert werden muss, wobei es sich bei den Daten, die bewegt werden, um das Bild des zweiten Teils des Boot-Codes handelt.
  • Nach dem Speichern des zweiten Teils des Boot-Codes in dem XIP-Speicher bewirkt der letzte Befehl des ersten Teils des Boot-Codes, der von dem Speicher 32 ausgeführt wird, dass der Prozessor 14 zu einer Adresse in dem XIP-Speicher springt. Der Prozessor beginnt dann mit der Ausführung des zweiten Teils des Boot-Codes, der aus dem Speicher 32 kopiert worden ist. Dabei handelt es sich um einen Bootstrap-Prozess, der in mehreren Stufen fortgesetzt werden kann. Die erste Stufe ist der Boot-Code, der von dem Sequentiellzugriffs-Speicher 32 ausgeführt wird. Die nächste und jede folgende Stufe betrifft zusätzliche Blöcke des Initialisierungs-Codes, die von dem Speicher 32 in den XIP-Speicher kopiert werden und auf die dann zu Ausführungszwecken gesprungen wird. Obwohl dies nicht ausdrücklich dargestellt ist, werden bei dem Bootstrap-Prozess typischerweise ein Betriebssystem und möglicherweise ein oder mehr Anwendungsprogramme von einem Festplattenlaufwerk geladen und eingekoppelt.
  • Vorzugsweise können die Zustandsmaschine und eine dieser zugeordnete Funktionalität des Boot-Laders 34 zusammen mit dem Sequentiellzugriffs-Speicher in eine einzelne integrierte Schaltung 40 implementiert werden, wie unter 32' und 34' in 8 gezeigt. Dies kann beispielsweise durch Hinzufügen einer adäquaten Logikschaltungsanordnung zu dem Sequentiellzugriffs-Speicher erfolgen, um die erforderliche Boot-Lade-Funktion auszuführen. Diese Ausführungsform ist einfacher und erfordert einen geringeren Umfang an Modifikation der Vorrichtung als das Integrieren eines kleinen Bereichs des Direktzugriffsspeichers in den Sequentiellspeicher. Der Grund dafür ist, dass die Zustandsmaschine keine zusätzlichen Prozessschritte oder zusätzliche Adressenanschlussstifte benötigt. Der UltraNAND- oder ein anderer Sequentiellzugriffs-Speicher kann mit anderen Speichern des im wesentlichen gleichen Typs anschlussstiftkompatibel bleiben.
  • Die nachfolgende Beschreibung erläutert detailliert die Funktionalität der vorliegenden Erfindung.
  • ÜBERBLICK
  • Die UltraNAND-Produktlinie ist von Advanced Micro Devices, Inc. (AMD) entwickelt worden, um den Bedarf an nicht flüchtigen Speichern mit hoher Dichte zu befriedigen. Die angestrebten Anwendungen umfassen Code- und Datenspeicherung in eingebetteten oder herausnehmbaren Mediensystemen. Die folgende detaillierte Beschreibung präsentiert eine Boot-Lade-PLD für einen UltraNAND-Speicher.
  • Auf Mikrokontrollern basierende Systeme weisen generell programmierbare Eingangs-/Ausgangs- (PIO-) Anschlusstifte auf, die zum direkten Liefern von UltraNAND-Steuersignalen verwendet werden können. Wenn diese PIO-Anschlussstifte nicht zur Verfügung stehen, kann eine zusätzliche Interface-Logik für eine geeignete Verbindung zwischen dem Prozessor, dem Boot-Lader und dem Sequentiellspeicher erforderlich sein. Die Boot-Lade-PLD kann als einzelner AmPALLV16V8-10SC-Chip ausgeführt sein und ist zum Unterstützen von Code-Speicheranwendungen vorgesehen, bei denen ein direktes Booten von der UltraNAND-Vorrichtung nach dem Einschalten erforderlich ist.
  • MIT DER CODE-SPEICHERUNG IN ZUSAMMENHANG STEHENDE VORTEILE VON ULTRANAND
  • UltraNAND ist derart ausgeführt, dass es vollständig mit der Hardware und der Software von bereits auf dem Markt erhältlichen auf der NAND-Architektur basierenden Flash-Speichern kompatibel ist. UltraNAND ist jedoch als verbessertes Produkt mit einer Lebensdauer von 100.000 Programmier-/Löschzyklen ausgeführt, ohne dass Fehlerkorrekturschaltungen (ECC) erforderlich sind.
  • UltraNAND ist ferner mit 100 % guten Blöcken verfügbar, wodurch das Erfordernis des Mapping schlechter Blöcke eliminiert wird.
  • Durch die niedrigen Kosten pro Bit (im Gegensatz zum NOR-Flash), die Lebensdauer mit einer größeren Anzahl von Programmier-/Löschzyklen ohne ECC und die Verfügbarkeit von 100 % guten Vorrichtungen ist UltraNAND in idealer Weise für Code-Speicheranwendungen geeignet. Dies gilt insbesondere, wenn ein System-Code in dem UItraNAND-Flash-Speicher gespeichert und zwecks schnellen Direktzugriffs oder schneller Ausführung auf eine Hochgeschwindigkeits-Speichereinrichtung, wie z. B. einen Synchron-DRAM, übertragen wird oder eine Schattenabbildung auf diese erfolgt.
  • BOOT-LADER-PLD
  • Für Code-Speicheranwendungen, bei denen ein direktes Booten von Ultra-NAND erforderlich ist, ist ein Boot-Lader eines bestimmten Typs für die Initialisierung von UltraNAND erforderlich. Der Grund dafür ist, dass nach dem Einschalten die UltraNAND-Datenregister keine gültigen Informationen enthalten. Die hier beschriebene Boot-Lade-PLD 34 sperrt den Prozessor gegen den Bus und liefert die zum Initialisieren von bis zu zwei UltraNAND-Flash-Vorrichtungen benötigten Steuersignalsequenzen.
  • Der Initialisierungsprozess gibt den übergeordneten AMD-Lückenlos-Lesebefehl (02h) zum Vorladen der ersten Flash-Speicherseite, die den Boot-Code enthält, in die internen UltraNAND-Datenregister an jede UltraNAND-Vorrichtung aus. Dies ermöglicht es dem Mikrokontrollen oder Prozessor 14 des Systems, nach dem Einschalten den Boot-Code des Sequentiellsystems von dem Speicher 32 zu lesen und auszuführen. Bei Code-Speicheranwendungen kann der Mikrokontrollen des Systems aus der UltraNAND-Vorrichtung 32 booten und überträgt dann den restlichen in UltraNAND gespeicherten Code zur Aus führung des Codes an den RAM. Da der Code vom RAM aus ausgeführt werden kann, wird dieser auch als Execute-in-Place- (XIP-) Speicher bezeichnet.
  • ULTRANAND-INTERFACE-ERFORDERNISSE HINSICHTLICH BOOT-ZUGANGS
  • Der UltraNAND-Speicher 32 verwendet einen gemultiplexten Adressen-/Datenbus. Sämtliche Befehls-, Adressen- und Dateninformationen werden über I/O[0..7] (den Achtbit-I/O-Port) zu und von der Vorrichtung geführt. Steuersignale werden für CE# (Chip Enable), CLE (Command Latch Enable), ALE (Address Latch Enable), WE# (Write Enable), SE# (Spare Area Enable) und WP# (Write Protect) in der Vorrichtung erzeugt. Es gibt ferner einen RY/BY#q (Ready/Busy-) Anschlussstift eines offenen Drains, der anzeigt, wann die Vorrichtung mit einer internen Operation beschäftigt ist.
  • Bei Systemanwendungen unter Verwendung von UltraNAND müssen die korrekten Steuersignale für die Vorrichtung erzeugt werden, die in vielen Fällen nicht von anderen Systemeinrichtungen verwendet werden. Die hier beschriebene Boot-Lade-PLD 34 erzeugt sämtliche eindeutigen Signale, die von dem UltraNAND-Speicher 32 zum Initialisieren der Vorrichtung benötigt werden.
  • Zum Übertragen einer in der UltraNAND-Vorrichtung enthaltenen Seite mit Informationen an die internen Datenregister muss eine Befehls- und Adressensequenz ausgeführt werden. Im Anschluss an die Befehls- und Adresseneingabe überträgt die UltraNAND-Vorrichtung Informationen innerhalb einer Lese-Latenzzeit von 7 Ts (im ungünstigsten Fall), in der die Vorrichtung aktiv zu sein scheint, von der entsprechenden Flash-Seite zu den Datenregistern. Wenn die nicht flüchtige Seite mit Informationen erfolgreich zu den Datenregistern übertragen worden ist, geht UltraNAND in den Bereit-Zustand und kann das System sequentiell gültige Informationen mit einer maximalen Rate von 50 nS pro Byte aus der Flash-Vorrichtung 32 lesen.
  • BESCHREIBUNG DES SYSTEM-INTERFACE
  • Die Boot-Lade-PLD 34 unterstützt bei diesem Beispiel eine einzelne Ultra-NAND-Vorrichtung 32. Die Boot-Lade-PLD wird temporär zur Quelle der normalen Systemsteuersignale, die während des Boot-Lade-Prozesses von dem UltraNAND-Flash benötigt werden. Die Boot-Lade-PLD ist dann in der Lage, die für die Initialisierung von UltraNAND benötigte Signalsequenz zu erzeugen.
  • Der Power-Good-Signalgenerator 30 liefert ein PWRGOOD-Eingangssignal an die Boot-Lade-PLD 34, die im Low-Zustand bleibt, bis Vcc gültig ist. Wenn PWRGOOD von einem ungültigen (Low-) zu einem gültigen (High-) Zustand übergeht, detektiert die Boot-Lade-PLD 34 diesen Übergang und initialisiert die UltraNAND-Vorrichtung 32.
  • Bei einigen Anwendungen, bei denen kein PWRGOOD-Signal zur Verfügung steht, kann stattdessen ein System-RESET#-Signal verwendet werden. Das von der Boot-Lade-PLD erzeugte INIT#- (Initialisierungs-) Signal zeigt an, dass der Boot-Lader 34 mit der Initialisierung der UltraNAND-Vorrichtung 32 beschäftigt ist. Das System 10 muss das INIT#-Signal überwachen und den System-Mikrokontrollen 14 gegen den Bus sperren, bis INIT# ungültig (high) wird. Wenn INIT# anzeigt, dass der UltraNAND-Boot-Prozess abgeschlossen ist, kann das System 10 es dem Mikrokontrollen 14 ermöglichen, Informationen von der UltraNAND-Vorrichtung zu lesen.
  • In vielen Fällen kann das INIT#-Signal als Rücksetzsignal für das restliche System 10 verwendet werden. Das normale System-RESET#-Signal geht nur zu dem Boot-Lader 34, und der Boot-Lader verwendet das INIT#-Signal zum Halten des restlichen Systems 10 im Rücksetzzustand, bis die UltraNAND-Vorrichtung 32 ausgelesen werden kann.
  • Während der Adressphase des Boot-Ladeprozesses werden Adressen-Bytes in UltraNAND geschrieben, bis die Vorrichtung aktiv wird. Dies ermöglicht es dem Boot-Lader 34, Vorrichtungen zu unterstützen, die drei oder mehr Adressenimpulse benötigen. Im Anschluss an den Boot-Lader-Initialisierungsprozess versetzt der Boot-Lader WE#, CLE, ALE und I/O1 in drei Zustände und führt CEO# und CE1# von dem Systembus 28 zu der (den) UltraNAND-Vorrichtung(en).
  • BESCHREIBUNG DER BOOT-LADESIGNALE
  • Der UltraNAND-Boot-Lader 34 erzeugt sämtliche Signale, die zum Initialisieren von einem oder zwei UItraNAND-Vorrichtungen mit einer Lückenlos-Lesebefehlssequenz benötigt werden. Eine einfache Zustandsmaschine in der PLD 34 steuert INIT#, WE#, CLE, ALE und I/O1 zum Steuern der UltraNAND-Initialisierung. Zum Starten der Boot-Lade-PLD muss das System SYSCLK (Systemtakt) und PWRGOOD (Power-Good-Anzeige) erzeugen. Die Definition sämtlicher dazugehöriger Signale und der zum Erzeugen der Signale benötigten Quelle sind in der nachstehenden Tabelle aufgeführt. Ein Zeitdiagramm der Boot-Lader-Initialisierungssequenz ist in 6 gezeigt.
  • Figure 00160001
  • Figure 00170001
  • BOOT-LADE-PLD-BETRIEBSTHEORIE
  • In diesem Abschnitt werden die Konfiguration und der Betrieb der Boot-Lade-PLD 34 beschrieben. Die Boot-Lade-PLD 34 verwendet Flip-Flops für die Zustandsmaschine und I_O1. Eine kombinatorische Logik wird zum Erzeugen sämtlicher anderer Signale zum Steuern von bis zu zwei UltraNAND-Vorrichtungen 32 verwendet. Die in diesem Abschnitt verwendeten Bezugszeichen für die Vorrichtungen sind aus 7 ersichtlich, das eine beispielhafte schematische Darstellung einer "typischen Boot-Lader-Anwendung zur Unterstützung zweier UltraNAND-Vorrichtungen" zeigt.
  • Ausgangssignalerzeugung
  • INIT# ist ein kombinatorisches Ausgangssignal, das das System darüber informiert, dass die Boot-Lade-PLD 34 gerade das UltraNAND 32-Array initialisiert. Während INIT# aktiv ist, muss das System 10 die Systemsignale (wie z. B. Adressenleitungen oder PIO-Anschlussstifte) in drei Zuständen halten, welche bei Normalbetrieb des Systems zum Anregen der UltraNAND-CLE-, -ALE-, WE#- und -I/O[0..7]-Signale verwendet werden. In vielen Fällen kann das INIT#-Signal als Rücksetzsignal für die anderen Systemkomponenten ver wendet werden, da der Rücksetzzustand die Prozessorausgänge häufig in drei Zuständen hält.
  • Während der INIT#-Periode treibt die PLD 34 die Befehls- und Adresseninformationen auf den UltraNAND 32-Datenbus und steuert CLE, ALE und WE#, wie für die Initialisierung von UltraNAND erforderlich. In der Befehlsphase, in der CLE aktiv ist, wird I_O1 zum Treiben eines Werts 02h auf den UltraNAND 32-Datenbus verwendet, um den Lückenlos-Lesebefehl in UltraNAND 32 zu schreiben. In der Adressenphase, in der CLE inaktiv und ALE aktiv ist, wird ein Wert OOh auf den UltraNAND 32-Datenbus getrieben.
  • Dies ermöglicht es der Boot-Lade-PLD 34, die Adresse für Block 0, Seite 0, Byte O in die UltraNAND 32-Vorrichtung zu laden, damit das System nach der Initialisierung aus dem ersten Byte lesen kann. Während INIT# aktiviert die PLD 34 die Ausgangschip-Freigaben unabhängig von dem Zustand der Chip-Freigabe-Eingänge. Dies ermöglicht es der Boot-Lade-PLD 34, während der Operation des Boot-Laders bis zu zwei UltraNAND 32-Vorrichtungen parallel zu initialisieren.
  • I_O1 ist ein in drei Zuständen registrierter Ausgang, der zum Schreiben des Lückenlos-Lesebefehls (02h) während der Boot-Lade-PLD 34-Initialisierungsphase in die UltraNAND 32-Vorrichtungen verwendet wird. Während INIT# aktiv ist, muss das System den UltraNAND 32-Datenbus I/O[0..7] in drei Zuständen halten. Wenn der Pull-down-Registersatz R4 sämtliche anderen Datenbits im Low-Zustand hält, kann I_O1 in der Befehlsphase dann in den High-Zustand gehen, um einen 02h-Operationscode in UltraNAND 32 zu schreiben. In der Adressenphase wird I_O1 in den Low-Zustand getrieben, so dass sämtliche Adressenzyklen einen Wert OOh in die UltraNAND 32-Adressenregister schreiben.
  • Die Chip-Freigaben werden während der INIT#-Periode für die Boot-Lader-Aktivität in den Aktiv-Zustand gezwungen. Wenn INIT# in den inaktiven (High-) Zustand geht, werden die Chip-Freigabe-Ausgänge von den Chip-Freigabe-Eingängen bestimmt. ST [0..3] sind vier in drei Zuständen registrierte Zustandsbits zum Definieren von bis zu sechzehn Zuständen der Zustandsmaschine, von denen 9 Zustände tatsächlich verwendet werden. Dies Bits werden in der Periode, in der INIT# aktiv ist, aktiv angeregt und in drei Zustände versetzt, wenn INIT# in den inaktiven Zustand geht.
  • Drei der Zustandsbits werden zum Definieren von WE# (STO), CLE (ST1) und ALE (ST2) verwendet. Die Zustandsmaschine in der Boot-Lade-PLD 34 ist eine typische Mealy-Maschine, wobei die PLD-Ausgänge von den aktuellen Zustands- und Eingangsbedingungen abhängig sind. Die AmPALLV16V8-10SC-Vorrichung 34 wird eingeschaltet, wenn sämtliche registrierten Ausgängen im High-Zustand sind. Daher definiert die Zustandsmaschine den IDLE-Zustand als eine durchgehend mit Eins belegte Ausgangsbedingung.
  • Zustand 01 bis Zustand 09 sind Gray-Code-Variationen zum Eliminieren von Rauschimpulsen in kombinatorischen Ausgängen und Verhindern von Wettlaufbedingungen aufgrund von asynchronen Eingängen. Das Ablaufdiagramm der Zustandsmaschine ist in 5 gezeigt.
  • ST0 wird wie WE# zum Schreiben von Informationen während des Initialisierens in UltraNAND 32-Flash verwendet. Das System muss den System-WE#-Eingang zu UltraNAND 32 während der Initialisierungsperiode in drei Zuständen halten. Wenn die Initialisierung abgeschlossen ist, versetzt die Boot-Lade-PLD 34 ihren WE#-Ausgang in drei Zustände und kann das System 10 WE# so anregen, wie es erforderlich ist.
  • ST1 wird wie CLE verwendet, um das Schreiben von Befehlen in UltraNAND-Flash 32 während der Initialisierung freizugeben. Das System muss den System-CLE-Eingang zu UltraNAND 32 während der Initialisierungsperiode in drei Zuständen halten. Wenn die Initialisierung abgeschlossen ist, versetzt die Boot-Lade-PLD 34 ihren CLE-Ausgang in drei Zustände und kann das System 10 CLE dann so anregen, wie es erforderlich ist.
  • ST2 wird wie ALE verwendet, um das Schreiben von Adressen in UltraNAND-Flash 32 während der Initialisierung freizugeben. Das System muss den System-ALE-Eingang zu UltraNAND 32 während der Initialisierungsperiode in drei Zuständen halten. Wenn die Initialisierung abgeschlossen ist, versetzt die Boot-Lade-PLD 34 ihren ALE-Ausgang in drei Zustände und kann das System 10 ALE dann so anregen, wie es erforderlich ist.
  • Andere Signale
  • CE[O..1]# sind die beiden Chip-Freigabe-Eingangssignale, die von dem System 10 erzeugt worden sind, um die UltraNAND 32-Vorrichtungen auszuwählen. Während des Initialisierungsprozesses werden die CE[0..1]#-Eingänge von der Boot-Lade-PLD 34 ignoriert und OUTCE[0..1]# in den Aktivzustand getrieben, um die verwendete UltraNAND 32-Vorrichtungen auszuwählen. Wenn die Initialisierung abgeschlossen ist, leitet die Boot-Lade-PLD 34 die CE[0..1]#-Signale des Systems 10 einfach über die OUTCE[0..1]#-Ausgänge an die UltraNAND 32-Vorrichtungen weiter.
  • PWRGOOD ist ein von dem System erzeugtes Signal, das anzeigt, wann die Boot-Lade-PLD 34 die UltraNAND 32-Flash-Vorrichtungen initialisieren sollte. PWRGOOD wird während des Einschaltens im deaktivierten (Low-) Zustand gehalten, bis V« gültig ist. Wenn Energie an die Boot-Lade-PLD 34 angelegt wird, geht die Zustandsmaschine in den IDLE-Zustand, in dem sie bleibt, bis PWRGOOD in den aktiven (High-) Zustand geht. Wenn ein Übergang vom Low- zum High-Zustand von der Boot-Lade-PLD 34 auf PWRGOOD detektiert wird, geht die PLD 34 zum Initialisieren des UltraNAND-Flash-Speichers 32 über.
  • Bei Systemen, bei denen kein PWRGOOD-Signal zur Verfügung steht, führt das RESET#-Signal des Systems generell die gleiche Funktion aus. Wenn RESET# in den aktiven (Low-) Zustand geht, um das System zurückzusetzen, tritt die Boot-Lader-Zustandsmaschine in den IDLE-Zustand ein. Wenn RESET# in den inaktiven (High-) Zustand geht, initialisiert der Boot-Lader die UltraNAND-Vorrichtungen 32.
  • RY/BY# wird von der UltraNAND-Vorrichtung 32 erzeugt, um anzuzeigen, wann die Vorrichtung mit einer internen Operation beschäftigt ist. Das System 10 kann das RY/BY#-Hardware-Signal verwenden oder das RY/BY#-Zustandsbit in dem Statusregister abfragen, um festzustellen, wann eine Operation gerade durchgeführt wird oder abgeschlossen ist. Die Boot-Lade-PLD 34 überwacht das RY/BY#-Signal über den READY-Eingang, um festzustellen, wann UltraNAND-Flash 32 die Übertragung von Informationen von dem internen Flash-Array zu den internen Datenregistern abgeschlossen hat. Zu diesem Zeitpunkt wird der Speicher 32 initialisiert und kann die Steuerung auf das System 10 umgeschaltet werden.
  • SYSCLK wird von der Boot-Lade-PLD 34 genötigt, um die Zustandsmaschine der Vorrichtung anzutreiben. Da UltraNAND 32 eine Mindest-Schreibimpulsbreiten-Spezifikation von 25 nS aufweist, beträgt die maximale Frequenz für SYSCLK 40 MHz.
  • Boot-Lader-Zustandsmaschine
  • In der Boot-Lade-PLD 34 wird eine einfache Zustandsmaschine zum Durchführen der Initialisierung von UltraNAND von verwendet. Die Boot-Lader-Zustandsmaschine regt die Ausgänge der Bocit-Lade-PLD 34 an, um die geeigneten Signale zu erzeugen, die zum Initialisieren von einer oder zwei Ultra-NAND-Vorrichtungen 32 benötigt werden. Ein Ablaufdiagramm der Zustandsmaschine der Boot-Lade-PLD ist in 5 gezeigt.
  • DETAILS BEZÜGLICH DER IMPLEMENTIERUNG
  • Mit der hier beschriebenen Boot-Lade-PLD ist die PLD in der Lage, bei Einschaltung bis zu zwei UltraNAND-Vorrichtungen zu initialisieren. Es gibt einige wenige grundlegende Überlegungen hinsichtlich des System-Interface, die bei Verwendung der Boot-Lade-PLD berücksichtigt werden müssen.
  • Dreizustandssteuerung von CLE, ALE, WE# und I/O[0..7] Während des auf das Einschalten folgenden Zeitraums, in dem die Boot-Lade-PLD UltraNAND-Flash initialisiert, muss der Boot-Lade-Prozess die Steuerung von I/O[0..7], CLE, ALE und des System-WE#-Signals übernehmen. Es ist daher erforderlich, dass das System diese Signale in drei Zuständen hält, während INIT# im aktivierten (Low-) Zustand ist. Wenn INIT# in den High-Zustand geht, wodurch angezeigt wird, dass die Initialisierung des Boot-Laders abgeschlossen ist, kann das System diese Signale so anregen, wie es geeignet ist.
  • BEISPIEL FÜR EINEN SEQUENTIELLE BOOT-CODE
  • Da der Adressenbus des Systems die UltraNAND-Flash-Leseadresse nicht direkt bestimmt, sind unterschiedliche PLD-Lösungen für Top-Boot vs. Bottom-Boot-Mikrokontrollen nicht erforderlich. Die Systemadressen-Dekodierlogik muss einfach nur gewährleisten, dass UltraNAND für den Mikrokontroller-Codeabruf nach der Einschaltung und Flash-Initialisierung freigegeben ist. Nachstehend ist ein Beispiel dafür aufgeführt, wie der System-Boot-Code in dem UltraNAND-Flash-Boot-Bereich für einen x86-Mikrokontrollen gespeichert werden kann.
  • Wenn UltraNAND initialisiert ist, kann der System-Mikrokontrollen mit dem direkten sequentiellen Abruf des Codes aus den UltraNAND-Datenregistern beginnen.
  • Wenn der Prozessor in dem System eine niedrige Speicheradresse für den Beginn des Boot-Codes verwendet, bewirkt der in der Flash-Vorrichtung gespeicherte Boot-Code keinen Vorwärts- oder Rückwärts-Verzweigungs- oder -Sprungversuch seitens des Mikrokontrollers. Dadurch wird gewährleistet, dass es keine Diskontinuitäten zwischen dem Lesen von Befehlen aus Ultra-NAND durch eine beliebige Prozessor-Befehlsabruflogik und der tatsächlichen Befehlsausführungssequenz gibt.
  • Wenn der Prozessor eine hohe Speicheradresse für die ersten Wörter des Boot-Codes verwendet, muss der Code einen Sprungbefehl enthalten, der die Prozessoradresse in eine niedrigere Adresse ändert, die immer noch innerhalb des Adressenbereichs liegt, der von dem System dekodiert wird, um den Speicher 32 auszuwählen. Ohne den Sprungbefehl kann ein solcher Prozessor seine Adresse bis zu dem Punkt inkrementieren, an dem er zyklisch zu einer niedrigen Speicheradresse gelangt, die den Boot-Speicher 32 nicht mehr auswählt.
  • Ein Sprung bewirkt, dass eine bestimmte Anzahl von Bytes aus einem vorabgerufenen Befehlsstrom gelöscht wird, wenn der Vorabrufpuffer durch den Sprung gelöscht wird. Da es schwierig sein kann, die genaue Anzahl von Bytes in dem Vorabrufpuffer, die durch den Sprung gelöscht werden, zu erfahren, müssen genügend dem Sprung folgende NOP-Befehl vorhanden sein, um den gesamten Vorabrufpuffer aufzufüllen.
  • Durch den zuerst direkt aus der UltraNAND-Vorrichtung heraus ausgeführten Boot-Code wird einfach ein umfassenderes Bootstrap-Programm aus der UltraNAND-Vorrichtung in eine XIP-Speichereinrichtung, wie z. B. einen SRAM oder DRAM, geladen. Dieses Laden des Bootstrap-Codes kann über eine Zei chenfolgen-Bewegung oder durch aufeinanderfolgende Sofortbewegungsbefehle erfolgen.
  • Wenn eine Zeichenfolge-Bewegung angewandt wird, muss der dem Zeichenfolge-Befehl folgende Befehlsstrom mit genügend NOP-Befehlen zum Auffüllen des Vorabrufpuffers des verwendeten Prozessors beginnen und enden. Dadurch wird sichergestellt, dass der von der Zeichenfolge-Bewegungs-Leseoperation aufgenommene Code-Strom hinter einem Punkt beginnt, an dem sich der Vorabrufpuffer gefüllt. Da der genaue Punkt, an dem der Vorabrufpuffer aufhört, Bytes aus UltraNAND zu lesen und die Zeichenfolge-Bewegungs-Operation mit dem Lesen von Bytes beginnt, nicht vorhergesagt werden kann, kann der in die XIP-Speichereinrichtung geladene Code mit einigen der verbliebenen NOP-Befehlen beginnen.
  • Da die genaue Ausrichtung des Codes nicht gesteuert werden kann, ist es wichtig, relative Verzweigungen innerhalb desjenigen Teils des Bootstrap-Programms, der in den XIP-Speicher geladen ist, zu verwenden. Bei Prozessoren, bei denen die Byte-Ausrichtung des Codes genau gesteuert werden muss, kann ein Strom von Sofortbewegungs-Befehlen eine bessere Vorgehensweise zum Laden des Bootstrap-Codes in den XIP-Speicher sein.
  • Wenn der Boot-Code in den XIP-Speicher eingesetzt ist, bewirkt der letzte Befehl, dass der Mikrokontrollen zu Ausführungszwecken in den Boot-Code springt. Das nachstehende Beispiel betrifft eine x86-Boot-Code-Sequenz im Assemblier-Code-Format, die nach der Initialisierung sequentiell aus Ultra-NAND heraus ausführt.
  • Definitionen
    Figure 00250001
  • Beispiel für einen Code
  • Figure 00260001
  • Zusammenfassend kann gesagt werden, dass die vorliegende Erfindung ein Computersystem bereitstellt, bei dem die anfängliche Programmausführung nur unter Verwendung eines Sequentiellzugriffs-Speichers durchgeführt wird, wodurch kein separater nicht flüchtiger Direktzugriffsspeicher benötigt wird. Verschiedene Modifikationen sind für Fachleute auf dem Sachgebiet anhand der Lehre der vorliegenden Offenbarung offensichtlich, ohne dass dadurch vom Umfang der Erfindung abgewichen wird.

Claims (21)

  1. Computersystem (10) mit: einem Prozessor (14); und einem Sequentiellzugriffs-Speicher (32) zum Speichern eines Boot-Programms; gekennzeichnet durch einen Boot-Lader (34) zum Steuern des Sequentiellzugriffs-Speichers (32) zum Lesen des Boot-Programms und Steuern des Prozessors (14), um das Boot-Programm in Reaktion auf das Initialisieren des Computersystems (10) in dem Sequentiellzugriffs-Speicher (32) auszuführen.
  2. Computersystem nach Anspruch 1, bei dem der Boot-Lader (34) zum Eingeben eines Lesebefehls und einer Adresse in den Sequentiellzugriffs-Speicher (32) und nachfolgenden Steuern des Sequentiellzugriffs-Speichers (32) zum Ausführen des Lesebefehls vorgesehen ist.
  3. Computersystem nach Anspruch 2, bei dem: der Sequentiellzugriffs-Speicher (32) zum Speichern des Boot-Programms auf mindestens einer Speicherseite vorgesehen ist; und der Lesebefehl bewirkt, dass eine erste Speicherseite gelesen wird.
  4. Computersystem nach Anspruch 3, bei dem der Lesebefehl ein Lückenlos-Lesebefehl ist.
  5. Computersystem nach einem der Ansprüche 1 bis 4, bei dem: der Boot-Lader (34) den Prozessor (14) sperrt, bis der Sequentiellzugriffs-Speicher (32) mindestens einen Teil des Boot-Programms zum Lesen zur Verfügung gestellt hat, und anschließend den Prozessor freigibt (14); und der Prozessor (14) bei seiner Freigabe das Boot-Programm aus dem Sequentiellzugriffs-Speicher (32) liest und ausführt.
  6. Computersystem nach einem der vorhergehenden Ansprüche, bei dem der Boot-Lader (34) eine Zustandsmaschine aufweist, die vorzugsweise in einer programmierbaren Logikvorrichtung implementiert ist.
  7. Computersystem nach einem der vorhergehenden Ansprüche, bei dem das Boot-Programm den Prozessor (14) steuert, um einen Boot-Code von dem Sequentiellzugriffs-Speicher (32) zu einem flüchtigen Direktzugriffsspeicher (RAM) zu übertragen und anschließend auf den Boot-Code in dem RAM überzugehen.
  8. Computersystem nach einem der vorhergehenden Ansprüche, bei dem der Sequentiellzugriffs-Speicher (32) und der Boot-Lader (34) in einer einzelnen integrierten Schaltung implementiert sind.
  9. Computersystem nach einem der vorhergehenden Ansprüche, bei dem das Boot-Programm das Programmadressenlogik-Verhalten des Prozessors antizipiert, um die Prozessoradresse innerhalb eines Bereich von Adressen zu halten, die den Sequentiellzugriffs-Speicher (32) auswählen.
  10. Computersystem nach einem der vorhergehenden Ansprüche, bei dem das Boot-Programm das Verhalten einer Code-Vorabruflogik antizipiert und sicherstellt, dass notwendige Befehle niemals von der Vorabruflogik vorabgerufen und gelöscht werden.
  11. Verfahren zur erstmaligen Programmausführung eines Computers (10), der einen Prozessor (14) und einen Sequentiellzugriffs-Speicher (32) aufweist, mit folgenden Schritten: (a) Speichern eines Boot-Programms in dem Sequentiellzugriffs-Speicher (32); gekennzeichnet durch: (b) Bereitstellen eines Boot-Laders (34) zum Steuern des Sequentiellzugriffs-Speichers (32) zum Lesen des Boot-Programms und Steuern des Prozessors (14) zum Übergehen auf das Boot-Programm in dem Sequentiellzugriffs-Speicher (32) in Reaktion auf das Initialisieren des Computersystems (10); und (c) Initialisieren des Computersystems (10).
  12. Verfahren nach Anspruch 11, bei dem Schritt (b) das Konfigurieren des Boot-Laders (34) zum Eingeben eines Lesebefehls und einer Adresse in den Sequentiellzugriffs-Speicher (32) und zum anschließenden Steuern des Sequentiellzugriffs-Speichers (32) zum Ausführen des Lesebefehls umfasst.
  13. Verfahren nach Anspruch 12, bei dem: Schritt (a) das Konfigurieren des Sequentiellzugriffs-Speichers (32) zum Speichern des Boot-Programms auf mindestens einer Speicherseite umfasst; und Schritt (b) das Konfigurieren des Boot-Laders (34) umfasst, und zwar derart, dass der Lesebefehl ein Lesen einer ersten Speicherseite bewirkt.
  14. Verfahren nach Anspruch 13, bei dem der Lesebefehl ein Lückenlos-Lesebefehl ist.
  15. Verfahren nach Anspruch 11, 12, 13 oder 14, bei dem: Schritt (b) das Konfigurieren des Boot-Laders (34) zum Sperren des Prozessors (14), bis der Sequentiellzugriffs-Speicher (32) zumindest einen Teil des Boot-Programms gelesen hat, und zum anschließenden Freigeben des Prozessors (14) umfasst; und der Prozessor (14) bei seiner Freigabe zum Ausführen des Boot-Programms in dem Sequentiellzugriffs-Speicher (32) vorgesehen ist.
  16. Verfahren nach einem der Ansprüche 11 bis 15, bei dem Schritt (b) das Konfigurieren des Boot-Laders (34) zum Aktivieren des Boot-Laders (34) beim Initialisieren des Computersystems umfasst.
  17. Verfahren nach einem der Ansprüche 11 bis 16, ferner mit folgendem Schritt: (d) Bereitstellen eines flüchtigen Direktzugriffsspeichers (RAM), bei dem: Schritt (a) das Konfigurieren des Boot-Programms zum Steuern des Prozessors (14) zum Übertragen des Boot-Codes von dem Sequentiellzugriffs-Speicher (32) zu dem RAM und zum anschließenden Übergehen auf den Boot-Code in dem RAM umfasst.
  18. Verfahren nach einem der Ansprüche 11 bis 17, bei dem Schritt (a) das Konfigurieren des Boot-Programms zum Antizipieren des Programmadressenlogik-Verhaltens des Prozessors umfasst, um die Prozessoradresse innerhalb eines Bereiches von Adressen zu halten, die den Sequentiellzugriffs-Speicher (32) auswählen.
  19. Verfahren nach einem der Ansprüche 11 bis 18, bei dem Schritt (a) das Konfigurieren des Boot-Programms zum Antizipieren des Verhaltens einer Code-Vorabruflogik und das Sicherstellen des Umstands umfasst, dass notwendige Befehle niemals von der Vorabruflogik vorabgerufen und gelöscht werden.
  20. Verfahren nach einem der Ansprüche 11 bis 19, bei dem Schritt (a) das Konfigurieren des Boot-Programms zum Umfassen von NOP-Befehlen umfasst, die als Auffüllung zwischen Abschnitten des Codes vorgesehen sind, in denen von der Vorabrufpufferlogik verursachte Diskontinuitäten in dem Code-Strom vorhanden sein können.
  21. Verfahren nach einem der Ansprüche 11 bis 20, bei dem Schritt (a) das Konfigurieren des Boot-Programms zum Steuern des Prozessors (14) zum Übertragen des Boot-Codes von dem Sequentiellzugriffs-Speicher (32) zu einem flüchtigen Direktzugriffsspeicher (RAM) unter Verwendung von Sofortbewegungs-Befehlen und zum anschließenden Übergehen auf den Boot-Code in dem RAM umfasst.
DE60005563T 2000-01-14 2000-12-15 Rechnersysteminitialisierung durch in einem speicher mit sequentiellem zugriff gespeicherten urlade-code Expired - Lifetime DE60005563T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US483318 2000-01-14
US09/483,318 US6601167B1 (en) 2000-01-14 2000-01-14 Computer system initialization with boot program stored in sequential access memory, controlled by a boot loader to control and execute the boot program
PCT/US2000/034374 WO2001052062A2 (en) 2000-01-14 2000-12-15 Computer system initialization via boot code stored in sequential access memory

Publications (2)

Publication Number Publication Date
DE60005563D1 DE60005563D1 (de) 2003-10-30
DE60005563T2 true DE60005563T2 (de) 2004-06-17

Family

ID=23919595

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60005563T Expired - Lifetime DE60005563T2 (de) 2000-01-14 2000-12-15 Rechnersysteminitialisierung durch in einem speicher mit sequentiellem zugriff gespeicherten urlade-code

Country Status (9)

Country Link
US (1) US6601167B1 (de)
EP (1) EP1248976B1 (de)
JP (1) JP2003519870A (de)
KR (1) KR100774598B1 (de)
CN (1) CN1307542C (de)
AT (1) ATE250777T1 (de)
DE (1) DE60005563T2 (de)
TW (1) TW502150B (de)
WO (1) WO2001052062A2 (de)

Families Citing this family (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080256352A1 (en) * 2000-01-06 2008-10-16 Super Talent Electronics, Inc. Methods and systems of booting of an intelligent non-volatile memory microcontroller from various sources
KR20010106654A (ko) * 2000-05-22 2001-12-07 윤종용 운영체제와 사용자 환경을 포함하는 기록 가능한 광디스크및 이에 적합한 장치
DE10050604A1 (de) * 2000-10-12 2002-04-25 Siemens Ag Verfahren zum Starten einer Datenverarbeitungsanlage sowie zugehörige Komponenten
US6874083B2 (en) * 2000-12-22 2005-03-29 Intel Corporation Method and apparatus to ensure proper voltage and frequency configuration signals are defined before applying power to processor
US7065639B2 (en) * 2000-12-29 2006-06-20 Hewlett-Packard Development Company, L.P. Utilization of SRAM in an execution of initialization code process upon system start up
US7058779B1 (en) * 2001-03-05 2006-06-06 Advanced Micro Devices, Inc. Computer system initialization via boot code stored in a non-volatile memory having an interface compatible with synchronous dynamic random access memory
US7386653B2 (en) * 2001-08-06 2008-06-10 Sandisk Il Ltd Flash memory arrangement
US7165137B2 (en) * 2001-08-06 2007-01-16 Sandisk Corporation System and method for booting from a non-volatile application and file storage device
US20030056071A1 (en) * 2001-09-18 2003-03-20 Triece Joseph W. Adaptable boot loader
US7032106B2 (en) * 2001-12-27 2006-04-18 Computer Network Technology Corporation Method and apparatus for booting a microprocessor
TWI228220B (en) 2002-03-08 2005-02-21 Samsung Electronics Co Ltd System boot using NAND flash memory and method thereof
US7234052B2 (en) * 2002-03-08 2007-06-19 Samsung Electronics Co., Ltd System boot using NAND flash memory and method thereof
US9170812B2 (en) * 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
KR100441608B1 (ko) * 2002-05-31 2004-07-23 삼성전자주식회사 낸드 플래시 메모리 인터페이스 장치
US20030233533A1 (en) * 2002-06-13 2003-12-18 M-Systems Flash Disk Pioneers Ltd. Boot from cache
KR100448905B1 (ko) * 2002-07-29 2004-09-16 삼성전자주식회사 낸드플래쉬메모리를 시스템구동 및 저장용으로 사용하는장치
KR100469669B1 (ko) * 2002-09-24 2005-02-02 삼성전자주식회사 플래시 메모리를 이용하여 부팅되는 시스템 장치 및 그시스템 부팅 방법
US7082525B2 (en) * 2002-10-02 2006-07-25 Sandisk Corporation Booting from non-linear memory
US7340566B2 (en) * 2002-10-21 2008-03-04 Microsoft Corporation System and method for initializing a memory device from block oriented NAND flash
US6988163B2 (en) * 2002-10-21 2006-01-17 Microsoft Corporation Executing binary images from non-linear storage systems
SG117428A1 (en) * 2002-11-07 2005-12-29 Mrd Technologies Pte Ltd Method and apparatus for loading boot code
US7430659B2 (en) * 2002-11-29 2008-09-30 Sigmatel, Inc. System and method to initialize a multiple function device with a multi-part boot algorithm
US7657615B1 (en) 2002-12-08 2010-02-02 Sun Microsystems, Inc. Approach for provisioning network devices
US20040123089A1 (en) * 2002-12-20 2004-06-24 Bodily Melvin Dirk Method of field upgradeable boot code
KR100493884B1 (ko) * 2003-01-09 2005-06-10 삼성전자주식회사 시리얼 플래시 메모리에서의 현지 실행을 위한 제어 장치및 그 방법, 이를 이용한 플래시 메모리 칩
KR100849296B1 (ko) * 2003-06-13 2008-07-29 삼성전자주식회사 주제어부와 보조제어부를 구비하는 시스템에서의보조제어부의 초기화 장치 및 방법
GB2404748B (en) * 2003-08-01 2006-10-04 Symbian Ltd Computing device and method
US7149890B2 (en) * 2003-11-21 2006-12-12 Intel Corporation Initializing system memory
JP4745613B2 (ja) * 2004-01-20 2011-08-10 キヤノン株式会社 情報処理装置及び情報処理方法
JP4357331B2 (ja) * 2004-03-24 2009-11-04 東芝メモリシステムズ株式会社 マイクロプロセッサブートアップ制御装置、及び情報処理システム
KR100678047B1 (ko) * 2004-05-06 2007-02-02 삼성전자주식회사 낸드 플래시 메모리를 구비한 이동 통신 단말기 및 그의부팅 방법
US20050262337A1 (en) * 2004-05-24 2005-11-24 Siemens Vdo Automotive Corporation Method and device for determining flash software compatibility with hardware
US20050273585A1 (en) * 2004-06-08 2005-12-08 Leech Phillip A System and method associated with persistent reset detection
CN100405296C (zh) * 2004-06-30 2008-07-23 大唐移动通信设备有限公司 扩展串行引导代码量的方法
KR100604877B1 (ko) * 2004-07-03 2006-07-31 삼성전자주식회사 내장 시스템의 메모리 어드레스의 매핑을 제어하는 장치와방법
US7211977B2 (en) * 2004-07-13 2007-05-01 Hewlett-Packard Development Company, L.P. Pulse width modulation fan control
US8457152B2 (en) * 2004-07-16 2013-06-04 Qualcomm Incorporated Multiple modulation schemes in single rate layering wireless communication systems
US8028143B2 (en) * 2004-08-27 2011-09-27 Qualcomm Incorporated Method and apparatus for transmitting memory pre-fetch commands on a bus
US20060064684A1 (en) * 2004-09-22 2006-03-23 Royer Robert J Jr Method, apparatus and system to accelerate launch performance through automated application pinning
JP2006146485A (ja) * 2004-11-18 2006-06-08 Toshiba Corp 携帯端末
KR100693559B1 (ko) * 2005-02-01 2007-03-14 주식회사 팬택 전자기기의 램 초기화 방법
WO2006074793A1 (en) * 2005-01-14 2006-07-20 Telefonaktiebolaget Lm Ericsson (Publ) Method and device for initializing a booting procedure of a mobile device
US7971046B2 (en) 2005-01-14 2011-06-28 Telefonaktiebolaget L M Ericsson (Publ) Method and device for initializing a booting procedure of a mobile device
US7356680B2 (en) * 2005-01-22 2008-04-08 Telefonaktiebolaget L M Ericsson (Publ) Method of loading information into a slave processor in a multi-processor system using an operating-system-friendly boot loader
KR100640389B1 (ko) * 2005-04-06 2006-10-30 삼성전자주식회사 Nand플래시 메모리를 구비한 장치에서 어플리케이션을실행하는 방법 및 그 장치
CN100405297C (zh) * 2005-05-18 2008-07-23 鸿富锦精密工业(深圳)有限公司 嵌入式系统出厂预设值初始设定程序的更新方法
US7716464B2 (en) * 2005-06-23 2010-05-11 Intel Corporation Method to have fault resilient booting
US20070016721A1 (en) * 2005-07-18 2007-01-18 Wyse Technology Inc. Flash file system power-up by using sequential sector allocation
KR100778293B1 (ko) * 2005-10-10 2007-11-22 삼성전자주식회사 디지털방송처리장치 및 디지털방송처리장치 부트로더의업그레이드 방법
KR100667822B1 (ko) * 2005-10-10 2007-01-11 삼성전자주식회사 낸드 플래시 메모리를 이용한 화상형성장치의 초기화제어장치 및 방법
JP2007206885A (ja) * 2006-01-31 2007-08-16 Toshiba Corp コンピュータシステム及びシステム起動方法
KR20070095136A (ko) * 2006-03-20 2007-09-28 엘지전자 주식회사 프로그램이 가능한 부팅 지원 장치 및 방법
US7555678B2 (en) * 2006-03-23 2009-06-30 Mediatek Inc. System for booting from a non-XIP memory utilizing a boot engine that does not have ECC capabilities during booting
US8065563B2 (en) * 2006-03-23 2011-11-22 Mediatek Inc. System for booting from a non-XIP memory utilizing a boot engine that does not have ECC capabilities during booting
CN100458694C (zh) * 2006-04-04 2009-02-04 深圳安凯微电子技术有限公司 微处理器启动过程中对所用通用闪存的检测方法
US7849302B2 (en) * 2006-04-10 2010-12-07 Apple Inc. Direct boot arrangement using a NAND flash memory
JP2007316871A (ja) * 2006-05-24 2007-12-06 Fujitsu Ltd プロセッサユニット
JP5019567B2 (ja) * 2006-08-04 2012-09-05 ソニーモバイルコミュニケーションズ株式会社 メモリ管理方法および携帯端末装置
JP2008065434A (ja) 2006-09-05 2008-03-21 Matsushita Electric Ind Co Ltd プログラム起動制御装置
US8312298B2 (en) * 2006-11-17 2012-11-13 National Instruments Corporation PXI express controller power control state machine
US7930582B2 (en) * 2006-11-22 2011-04-19 Ricoh Company, Ltd. Image processing apparatus and method of transmitting reference clock
US8095816B1 (en) 2007-04-05 2012-01-10 Marvell International Ltd. Processor management using a buffer
US8443187B1 (en) 2007-04-12 2013-05-14 Marvell International Ltd. Authentication of computing devices in server based on mapping between port identifier and MAC address that allows actions-per-group instead of just actions-per-single device
US8321706B2 (en) 2007-07-23 2012-11-27 Marvell World Trade Ltd. USB self-idling techniques
US8683213B2 (en) 2007-10-26 2014-03-25 Qualcomm Incorporated Progressive boot for a wireless device
IL187044A0 (en) * 2007-10-30 2008-02-09 Sandisk Il Ltd Fast secure boot implementation
US20090144538A1 (en) * 2007-11-05 2009-06-04 Duda Kenneth J Patch installation at boot time for dynamically installable, piecemeal revertible patches
JP2009157632A (ja) * 2007-12-26 2009-07-16 Toshiba Corp 情報処理装置
US8510560B1 (en) 2008-08-20 2013-08-13 Marvell International Ltd. Efficient key establishment for wireless networks
KR101595043B1 (ko) * 2008-09-18 2016-02-17 마벨 월드 트레이드 리미티드 적어도 부분적으로 부팅 동안에 어플리케이션들을 메모리에 프리로딩하는 방법
GB2491771B (en) 2010-04-21 2017-06-21 Hewlett Packard Development Co Lp Communicating operating system booting information
US9720859B1 (en) 2010-04-30 2017-08-01 Mentor Graphics Corporation System, method, and computer program product for conditionally eliminating a memory read request
US9141394B2 (en) * 2011-07-29 2015-09-22 Marvell World Trade Ltd. Switching between processor cache and random-access memory
US9436629B2 (en) 2011-11-15 2016-09-06 Marvell World Trade Ltd. Dynamic boot image streaming
US9110595B2 (en) 2012-02-28 2015-08-18 AVG Netherlands B.V. Systems and methods for enhancing performance of software applications
US9575768B1 (en) 2013-01-08 2017-02-21 Marvell International Ltd. Loading boot code from multiple memories
US10191823B2 (en) 2014-03-11 2019-01-29 Cloudendure Ltd. System and method for restoring original machines from replicated machines in a secondary computing environment
US20170093971A1 (en) * 2015-09-30 2017-03-30 Cloudendure Ltd. System and method for orchestrating replicated components in a replicated cloud based computing environment
US9582386B2 (en) 2013-03-15 2017-02-28 Cloudendure, Ltd. System and method for maintaining a copy of a cloud-based computing environment and restoration thereof
US9736801B1 (en) 2013-05-20 2017-08-15 Marvell International Ltd. Methods and apparatus for synchronizing devices in a wireless data communication system
US9521635B1 (en) 2013-05-21 2016-12-13 Marvell International Ltd. Methods and apparatus for selecting a device to perform shared functionality in a deterministic and fair manner in a wireless data communication system
US9836306B2 (en) 2013-07-31 2017-12-05 Marvell World Trade Ltd. Parallelizing boot operations
TWI497268B (zh) * 2013-12-19 2015-08-21 Inventec Corp 伺服器系統及其通電後運作時序之控制方法
US10691838B2 (en) * 2014-06-20 2020-06-23 Cypress Semiconductor Corporation Encryption for XIP and MMIO external memories
RU2579942C2 (ru) * 2014-09-01 2016-04-10 Открытое Акционерное Общество "Байкал Электроникс" Устройство прямого отображения адресов данных, располагающихся во внешнем последовательном пзу, в адресное пространство микропроцессорного ядра, компьютерная система и способ передачи данных
RU2579949C2 (ru) * 2014-09-30 2016-04-10 Открытое Акционерное Общество "Байкал Электроникс" Компьютерная система
US10331586B2 (en) 2015-10-30 2019-06-25 Samsung Electronics Co., Ltd. Nonvolatile memory device for providing fast booting and system including the same
WO2017168228A1 (en) 2016-03-08 2017-10-05 Marvell World Trade Ltd. Methods and apparatus for secure device authentication
KR102387461B1 (ko) * 2017-07-24 2022-04-15 삼성전자주식회사 스토리지 장치, 스토리지 시스템 및 이의 동작 방법
CN108804221B (zh) * 2018-04-11 2020-09-11 百富计算机技术(深圳)有限公司 基于xip方式的嵌入式系统及其资源优化方法
US11461101B2 (en) * 2019-09-27 2022-10-04 Arm Technology (China) Co. LTD Circuitry and method for selectively controlling prefetching of program instructions
CN112667558A (zh) * 2019-10-15 2021-04-16 瑞昱半导体股份有限公司 处理系统与芯片内执行控制方法
KR102248686B1 (ko) * 2020-02-14 2021-05-04 엘에스일렉트릭(주) 외부 메모리 접근 시스템
US11868276B2 (en) 2022-06-02 2024-01-09 Hewlett-Packard Development Company, L.P. Non-volatile memory write access control

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5799186A (en) 1990-12-20 1998-08-25 Eastman Kodak Company Method and apparatus for programming a peripheral processor with a serial output memory device
JP3221763B2 (ja) * 1993-04-08 2001-10-22 株式会社日立製作所 音声コーデック
JPH06348504A (ja) * 1993-06-04 1994-12-22 Sharp Corp マイクロプロセッサシステム
JP3405569B2 (ja) * 1993-09-24 2003-05-12 株式会社東芝 セル逆変換装置
US5379431A (en) * 1993-12-21 1995-01-03 Taligent, Inc. Boot framework architecture for dynamic staged initial program load
JPH08202559A (ja) * 1995-01-30 1996-08-09 Nec Corp 世代ファイル管理方式
US5664194A (en) 1995-12-04 1997-09-02 Metricom, Inc. Method for autonomously transferring code to a computer without accessing local memory by the central processing unit
US5951685A (en) * 1996-12-20 1999-09-14 Compaq Computer Corporation Computer system with system ROM including serial-access PROM coupled to an auto-configuring memory controller and method of shadowing BIOS code from PROM
US5940627A (en) * 1997-03-13 1999-08-17 Compaq Computer Corporation User selectable feature set for a flash ROM based peripheral
JP3072722B2 (ja) * 1997-06-20 2000-08-07 ソニー株式会社 フラッシュメモリを用いるデータ管理装置及びデータ管理方法並びにフラッシュメモリを用いる記憶媒体
US6438687B2 (en) * 1997-10-30 2002-08-20 Micron Technology, Inc. Method and apparatus for improved storage of computer system configuration information
US5987605A (en) * 1998-02-28 1999-11-16 Hewlett-Packard Co. Methods and apparatus for dual-boot memory selection, update, and recovery in a programmable device
US6446139B1 (en) * 1999-06-28 2002-09-03 Adaptec, Inc. Multiple chip single image BIOS

Also Published As

Publication number Publication date
KR100774598B1 (ko) 2007-11-09
JP2003519870A (ja) 2003-06-24
DE60005563D1 (de) 2003-10-30
WO2001052062A3 (en) 2001-12-27
CN1556950A (zh) 2004-12-22
KR20020097161A (ko) 2002-12-31
US6601167B1 (en) 2003-07-29
ATE250777T1 (de) 2003-10-15
TW502150B (en) 2002-09-11
EP1248976B1 (de) 2003-09-24
EP1248976A2 (de) 2002-10-16
WO2001052062A2 (en) 2001-07-19
CN1307542C (zh) 2007-03-28

Similar Documents

Publication Publication Date Title
DE60005563T2 (de) Rechnersysteminitialisierung durch in einem speicher mit sequentiellem zugriff gespeicherten urlade-code
DE69804115T2 (de) Datenübertragung auf einem nichtflüchtigen speichermedium
DE69633166T2 (de) Integrierter schaltkreis mit mehreren funktionen und gemeinsamer verwendung mehrerer interner signalbusse zur verteilung der steuerung des buszugriffes und der arbitration
DE3486085T2 (de) Zentrale Verarbeitungseinheit für einen Digitalrechner.
DE60008929T2 (de) Schnellstart eines mikroprozessorbasierten systems
DE19681704B4 (de) Verfahren zum Ausführen eines Programms aus einem nichtflüchtigen Speicher heraus
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
DE69521113T2 (de) Vorrichtung und Verfahren zur Stromversorgungsausfallbeständige Aktualisierung eines Flash-EEPROM-Speichers
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE69512485T2 (de) Fehlerbeseitigungs- und Systemverwaltungsunterbrechung
DE102011086098B4 (de) Parallele Speicherlese- und Speicherschreib-Operationen in einem Speicher mit serieller Schnittstelle
DE3853613T2 (de) Mikrorechner mit flexiblen anwendungsspezifischen integrierten Schaltungen.
DE112014006118B4 (de) Spekulatives Vorab-Holen von in einem Flash-Speicher gespeicherten Daten
DE3851746T2 (de) Sprungvorhersage.
DE102007003179A1 (de) Verfahren zum Systembooten mit Direktspeicherzugriff bei einer neuen Speicherarchitektur
DE69902392T2 (de) Verwenden von ecc/paritätsbits zum speichern von vor- dekodierungs-informationen
DE4215063A1 (de) Einrichtung und verfahren zum seitenwechsel bei einem nicht-fluechtigen speicher
DE69132018T2 (de) Rechner mit Vorausholungs-Cache-Speicher
DE2813128A1 (de) Mikroprogrammspeicher
DE68923433T2 (de) Einrichtung und Methode um Festwertspeicher in einem Rechnerspeicherbereich anzuordnen.
DE69505224T2 (de) Computersystem
DE69326640T2 (de) System und Verfahren zur Schaltung der Betriebsart eines Druckers
DE69611510T2 (de) Zentrale Verarbeitungseinheit mit Cache-Speicher
DE19782214A1 (de) Verbesserte Schnittstelle für Flash-Eeprom-Speicher-Arrays
DE69839113T2 (de) Direkte Vectoremulation eines geerbten Befehlssatzes

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: GLOBALFOUNDRIES INC. MAPLES CORPORATE SERVICES, KY