DE10393727T5 - Prozessor-Cache-Speicher als RAM zur Ausführung von Boot-Code - Google Patents

Prozessor-Cache-Speicher als RAM zur Ausführung von Boot-Code Download PDF

Info

Publication number
DE10393727T5
DE10393727T5 DE10393727T DE10393727T DE10393727T5 DE 10393727 T5 DE10393727 T5 DE 10393727T5 DE 10393727 T DE10393727 T DE 10393727T DE 10393727 T DE10393727 T DE 10393727T DE 10393727 T5 DE10393727 T5 DE 10393727T5
Authority
DE
Germany
Prior art keywords
cache
ram
processor
data
boot code
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.)
Ceased
Application number
DE10393727T
Other languages
English (en)
Inventor
Sham Hillsboro Datta
Vincent Federal Way Zimmer
Kushagra San Jose Vaid
William Folsom Stevens
Amy Ann Arbor Santoni
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE10393727T5 publication Critical patent/DE10393727T5/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • G06F2212/2515Local memory within processor subsystem being configurable for different purposes, e.g. as cache or non-cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

Computer-Boot-Verfahren, mit den folgenden Schritten:
Wählen einer Datenblockausrichtung für einen Cache als N/X Byte, wenn ein Cache die Größe N aufweist und eine Satzassoziativität bis zu X Wege-Interaktionen umfaßt,
Vorladen mindestens einer Cache-RAM-Spalte eines Cache als RAM-Systems unter Verwendung eines Tags zur Verhinderung unbeabsichtigter Cache-Zeilenausräumungen und
Ausführen von Boot-Code, wobei der vorgeladene Cache-RAM dem ausgeführten Boot-Codestrom als ein Speicher erscheint.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung betrifft Datenverarbeitungssysteme und insbesondere die Ausfüh- rung von Boot-Code.
  • ALLGEMEINER STAND DER TECHNIK
  • Das Laden eines Betriebssystems erfordert traditionell Code zum Booten oder "anfänglichem Programmladen". In der Vergangenheit wurde solcher Code mindestens teilweise auf einem Computersystem vor der Initialisierung des Permanentspeichers ausgeführt und mußte folglich so geschrieben werden, daß er in einer speicherlosen Umgebung funktioniert. Bei einer typischen Datenverarbeitungsplattform wird das frühe BIOS bzw. die Firmware heutzutage häufig in einem als "stapelloser Assembler" bezeichneten Modus ohne Speicher, in dem ein Aufrufstapel initialisiert werden kann, ausgeführt. Solcher stapelloser Hochfahrcode in Assemblersprache ist jedoch leider nicht portierbar und in bezug auf Wartung und Merkmalerweiterung sehr empfindlich. Aufgrund des begrenzten verfügbaren Zustands und der primitiven Programmierumgebung ist es außerdem schwierig, Merkmale hinzuzufügen oder nützliche Algorithmen wie zum Beispiel kryptographische Berechnungen zur Authentifikation von Firmware-Komponenten, zu implementieren.
  • Die mit komplexem und merkmalarmem Boot-Code verbundenen Probleme sind besonders akut, wenn in einem Datenverarbeitungssystem moderne 64-Bit-Prozesoren (einschließlich der Itanium-Prozessorfamilie) verwendet werden. Es muß sehr viel Code von Hand in Assemblersprache erstellt werden. Außerdem muß im Kontext einer modernen BIOS-Architektur wie etwa der verfügbaren Extensible Firmware Interface (z.B. auf EFI basierende Tiano-Firmware) dieser frühe Code außerdem komplexe Aktivitäten ausführen, wie zum Beispiel das Analysieren der Metadaten des Firmware-Dateisystems, um die Plug-In-Umgebungsinitialisierungsmodule (PEIMs) zu finden und Abhängigkeiten zum Zweck der legalen Modulabfertigung usw. auszuwerten. Diese letzteren Aufgaben waren in einer stapellosen Legacy-BIOS-Umgebung niemals erforderlich und sind in Umgebungen mit Registern schwierig zu implementieren.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Erfindung wird aus der nachfolgend angegebenen ausführlichen Beschreibung und aus den beigefügten Zeichnungen von Ausführungsformen der Erfindungen, die jedoch nicht als die Erfindungen auf die spezifischen beschriebenen Ausführungsformen beschränkend sondern nur als Erläuterung zum Verständnis aufgefaßt werden sollen, besser verständlich.
  • 1 zeigt schematisch ein Mehrprozessorsystem;
  • 2 zeigt eine Speichermigration während des Bootens mehrerer Prozessoren;
  • 3 zeigt mehrere mögliche Interaktionen zwischen Software für einen Cache als RAM (CAR) und einer Prozessorabstraktionsschicht (PAL); und
  • 4 zeigt eine für Prozessoren der Itanium-Familie (IPF) geeignete Ausführungsform einer Interaktion zwischen Software für einen Cache als RAM (CAR) und einer Prozessorabstraktionsschicht (PAL).
  • AUSFÜHRLICHE BESCHREIBUNG
  • Wie mit Bezug auf 1 zu sehen ist, enthält ein System 10 zum Booten eines Computers mehrere Prozessoren 12, 13, 14 und 15. Diese Prozessoren eignen sich für die Ausführung von Anweisungen von Programmiercode (einschließlich von Anweisungen des BIOS (Basic Input/Output System), Betriebssystemanweisungen und Anwendungscode) und werden miteinander verbunden und teilweise durch eine Baseboard-Verwaltungssteuerung 22 gesteuert. Die Prozessoren sind ferner mit einem schnellen lokalen Cache-Speicher 16 und einem etwas langsameren Hauptspeicher 18 verbunden. Das System-BIOS wird aus dem angeschlossenen aktualisierbaren Firmware-Speicher 20 geladen.
  • Bei der Anschlußverbindung kann es sich um allgemeine Informationseingabe-/ausgabeleitungen, herkömmliche adressierbare Busse oder eigene serielle oder parallele Datenleiterbahnen handeln. Die Baseboard-Verwaltungssteuerung 22 verwaltet in der Regel die Schnittstelle zwischen Systemverwaltungssoftware und der Plattformverwaltungshardware, stellt eine autonome Überwachung, eine Ereignisprotokollierung und Behebungssteuerung bereit und dient als Gateway zwischen Systemverwaltungssoftware und unterstützten Bussystemen, die Plattformkomponenten miteinander verbinden. Eine Baseboard-Verwaltungssteuerung kann in vielfältige Datenverarbeitungsplattformen integriert werden, die verschiedene Verwaltungsmerkmale aufweisen, und kann eine einzige integrierte Komponente auf einem Motherboard enthalten oder kann alternativ dazu durch ein verteiltes System repräsentiert werden, das kollektiv aus mehreren diskreten Steuerungen zusammengesetzt ist. Zum Beispiel kann ein komplexer Mehrfach-Board-Satz in einem Server der Unternehmens- klasse mehrere Verwaltungssteuerungen verwenden, um verschiedene Subsysteme zu überwachen, wie zum Beispiel Überwachung und Steuerung einer redundanten Stromversorgung, RAID, Erweiterungs-E/A usw. Im Betrieb wirkt die Baseboard-Verwaltungssteuerung 22 als Richtlinien-Agentur, die entscheidet, an welchen Prozessor ein Einschaltrücksetzen angelegt wird, wann INIT und NMI gesetzt werden und wann Boot-Prozesse eingeleitet oder beendet werden usw.
  • Zu Beispielen für ein System zählen u.a. ohne Begrenzung oder Einschränkung ein Computer (z.B. Desktop, Laptop, Server, Blade-Server, Workstation, persönlicher digitaler Assistent usw.) oder beliebige damit assoziierte Peripheriegeräte; Kommunikationsgeräte (z.B. Telefonapparat, Pager usw.); ein Fernseh-Digitalreceiver und dergleichen. Eine "Verbindung" oder "Verknüpfung" wird allgemein als ein logischer oder physikalischer Kommunikationsweg definiert, wie zum Beispiel elektrischer Draht, optische Faser, Kabel, Busleiterbahn oder sogar ein drahtloser Kanal der Infrarot, Hochfrequenz (HF) oder einen beliebigen anderen drahtlosen Signalisierungsmechanismus verwendet. Zusätzlich wird der Begriff "Information" definiert als ein oder mehrere Bit von Daten, Adressen und/oder Steuerung. "Code" umfaßt Software oder Firmware, die bei Ausführung bestimmte Funktionen durchführt. Beispiele für Code sind etwa eine Anwendung, ein Applet, Boot-Code oder eine beliebige andere Reihe von Anweisungen.
  • Wie in 2 in bezug auf den Entwurf (Cartoon) 30, der Adressenmigration in einem Mehrprozessorsystem zeigt, zu sehen ist, kann ein vereinheitlichter Cache 16 der Größe von "N" Byte, der mit einer Satzassoziativität (set associativity) von "X" Möglichkeiten bzw. Wegen ausgelegt ist, als ein Array, das "X" Spalten jeweils mit einer Größe von "N/X" Byte umfaßt, visualisiert werden. Um einen solchen Computer vom Cache-Speicher aus zu booten, wird eine Datenblockausrichtung für einen Cache als N/X gewählt. Mindestens eine Cache-RAM-Spalte eines Cache wird als RAM-System vorgeladen, wobei ein Tag verwendet wird, um unbeabsichtigte Cache-Zeilenausräumungen zu verhindern. Dann wird Boot-Code ausgeführt, wobei der vorgeladene Cache-RAM den ausgeführten Boot-Code-Strömen jeweils als Speicher 32, 33, 34 und 35 erscheint.
  • Solch eine Cache-als-RAM (CAR)-Software kann einen Datenadressbereich so wählen, daß er mit keinen vordefinierten Plattformadressbereichen in Konflikt kommt. Die Datenblockausrichtung erfolgt unter Verwendung eines Weiterreichungsregisters zum Übermitteln der Implementierungs-Cachegröße N und der Satzassoziativität X. Alternativ dazu kann die Datenblockausrichtung unter Verwendung eines Prozeduraufrufs zur Bestimmung der Implementierungs-Cachegröße N und der Satzassoziativität vorgenommen werden.
  • Bei bestimmten Ausführungsformen muß, damit der Cache-Speicher eines solchen Hochleistungsprozessors durch Früh-Boot-Code als RAM verwendet werden kann, der Cache-RAM dem ausgeführten Codestrom dergestalt als Speicher erscheinen, daß alle Datenspeicherzugriffe ein Treffer sind und keine Cache-Ausräumungen verursachen. "Keine Ausräumungen" ist insofern wichtig, als eine Ausräumung zu einem Rückschreiben an den Hauptspeicher führen würde, bevor die Speichersteuerung und die Systemkonfiguration initialisiert werden. Im besten Fall hätte die oben erwähnte Aktion keine Nebenwirkung und im ungünstigsten Fall könnte das System abstürzen oder einen Fehlerzustand erreichen, wie zum Beispiel einen Maschinenprüfabbruch. Der Unterstützungsmechanismus von dem Prozessor während des CAR-Modus muß also dergestalt sein, daß keine Frontside-Bus (FSB)-Zyklen zu dem Datenadressenraum auftreten.
  • Bei bestimmten Ausführungsformen, wie zum Beispiel mit Bezug auf 3 gezeigt, kann CAR-Software spezifische Methoden verwenden, die von einer Prozessorabstraktionsschicht (PAL) bereitgestellt werden, um sicherzustellen, daß keine FSB-Zyklen eingeleitet werden und daß eine Datenblockausrichtung unter Verwendung eines Weiterreichungsregisters erfolgt, um die Implementierungs-Cachegröße N und die Satzassoziativität X zu übermitteln. Diese PAL-Codeschicht wird vom Prozessorhersteller hergestellt und enthält Prozessorinitia lisierungscode und eine Aufrufschnittstelle, die die Prozessorhardware, einschließlich aller verfügbarer Prozessor-Cache-Speicher, abstrahiert. PAL-Software kann mit ordnungsgemäßen Tags eine oder zwei (so viele wie notwendig) Cache-RAM-Spalten vorladen. Nachdem dies geschehen ist, kommen keine unbeabsichtigten Cache-Zeilenausräumungen und daher keine Frontside-Bus-Zyklen vor, solange die CAR-Software keine Maximalgrößeneinschränkungen übersteigt. Abhängig von der spezifischen Prozessorimplementierung kann das auf PAL basierende Verfahren, das den Cache mit Tags für Datenbenutzung vorlädt, einen Cache-Bereich (eine Spalte) wählen, der für die gegebene maximale CAR-Codegröße NICHT ausgeräumt wird und daher dem Anwender ermöglicht, den Codestrom Cache-gespeichert auszuführen.
  • Bei den auf PAL basierenden Verfahren kann eine bestimmte Hardwareunterstützung von dem Prozessor auftreten, oder sie können alternativ dazu direkt in PAL-Code implementiert werden. Bei bestimmten Ausführungsformen kann man einen neuen PAL-Aufruf und eine Weiterreichungszustandserweiterung für PAL-Code verwenden. Die Weiterreichungszustandserweiterung fügt ein neues Weiterreichungsregister hinzu, das die Implementierungstopologie des Cache (die oben besprochenen Parameter N und X) zu dem CAR-Einrichtcode übermittelt, der Teil des Firmwarecodes ist, der die Schnittstelle mit PAL-Code aufweist. Alternativ dazu könnte der PAL-Code einen Prozeduraufruf für Datenblockausrichtung unterstützen, der die Implementierungs-Cachegröße N und die Satzassoziativität direkt liefert, anstatt den Weiterreichungszustand zu modifizieren. Bei dieser Ausführungsform wählt CAR-Einrichtcode die Informationen zur Auswahl der CAR-Datenblockposition und -ausrichtung.
  • Bei bestimmten Ausführungsformen ist die Verwendung eines neuen PAL-Aufrufs eine der Möglichkeiten, der PAL-Schicht anzuzeigen, den Cache-Bereich der notwendigen Größe mit ordnungsgemäßen Tag-Bits auszuwählen und zu laden. Die Eingaben für diesen neuen PAL-Aufruf sind die Größe und der Adressenbereich von CAR-Daten und die maximale Größe von CAR-Code. Die Verwendung von auf PAL basierenden Verfahren gestattet außerdem eine Isolation des CAR-Einrichtcodes von etwaigen zukünftigen Entwicklungen der Prozessor-Cache-Architektur, da auf PAL basierende Verfahren alle Implementierungseinzelheiten des Prozessor-Cache abstrahieren.
  • Die Verwendung von CAR ermöglicht außerdem die Unterstützung mehrerer Prozessoren in einem Parallelausführungsmodus unter Verwendung des Cache-Kohärenzprotokolls MESI (Modified/Exclusive/Shared/Invalid) und des Datenverarbeitungsmodells, das zur Ausnutzung dieser CAR-Fähigkeit erforderlich ist. Dies ist besonders dann nützlich, wenn alle Prozessoren gleichzeitig aus einem Rücksetzen herauskommen und eine volle Topologie der SMP (symmetrischen Mehrfachverarbeitung) in Software sichtbar sein muß. Bei SMP würde nun das MESI-Protokoll versuchen, Cache-Kohärenz aufrechtzuerhalten, falls alle Verarbeitungs-Agents auf dieselbe Cache-Leitung zugreifen sollten. MESI ist den neueren Protokollen, wie zum Beispiel MOESI (Modified/Owned/Exclusive/Shared/Invalid) insofern unähnlich, als bei letzterem die Möglichkeit zum Transfer einer Cache-Leitung von einem Prozessor zum anderen besteht. Im Fall von MESI erfolgt das Rückschreiben immer bevor die Leitung in dem Alternativprozessor aktualisiert wird.
  • Folglich erfordert CAR-Unterstützung eine Partitionierung des für die CAR-Datenregion verwendeten Adressenbereichs. Wenn jeder Prozessor einen 256 K-CAR-Datenbereich unterstützen muß, der in diesem Nicht-Ausräumungs-Modus benutzbar ist und maximal vier Prozessoren in dem lokalen SMP-Komplex vorliegen, würde genauer gesagt dann der CAR-Datenadressenraum so partitioniert, daß jeder Prozessor nur seinen 256 kb-Bereich sehen kann. Anders ausgedrückt tragen durch PAL/Prozessor zugeführte Verfahren eindeutige Tag-Bits dergestalt in jeden Prozessor-Cache ein, daß sie jeweils mit ihrem eigenen 256 K-Bereich operieren. Jeder Prozessor sähe den Stapel als eine eindeutige Adresse, wobei sich das Ausmaß der Adresse plus 256 kb mit keinem der anderen Ausmaße der 3 Peer-Prozessoren überlappen würde. Daher besteht keine Chance der Aktualisierung eines etwaigen Datensatzes, der zu dem Datenraum eines anderen Prozessors gehört, so daß keine Synchronisationsprobleme zwischen Prozessoren auftreten würden, obwohl jeder mit seiner eigenen Geschwindigkeit ausführen kann. Der Cache enthält Datensätze, die am selben Datenadressenraum für alle Prozessoren nicht modifiziert werden und verursachen daher keine Probleme.
  • Bei einer teilweise mit Bezug auf das Flußdiagramm 50 von 3 dargestellten typischen Ausführungsform empfängt der CAR-Einrichtcode Informationen über die Größe des CAR und die Organisation (Anzahl der Wege bzw. Möglichkeiten) aus einer PAL-A-Schicht als Teil des Weiterreichungszustands. Er berechnet die Minimalausrichtungskriterien für Daten durch Dividieren der L2-Cache-Größe durch die Anzahl der Arten der Organisation des Cache. Außerdem kennt er die maximale Größe von Daten und die Länge des CAR-Codes von dem Plattformdienstemodul. Dann ruft er den PAL-A-CAR-Dienstaufruf PAL CAR INITIALIZE auf, um PAL-A einen Cache-Bereich als RAM zur Verwendung als Datenbereich durch CAR-Software auswählen und initialisieren zu lassen. Der CAR-Modus wird vorübergehend durch den Boot-Code verwendet, bis der Permanentspeicher gefunden und initialisiert wird. Nach einer solchen Phase werden alle notwendigen Daten aus CAR in Realspeicher kopiert und der CAR-Modus wird verlassen. Um den CAR-Modus zu verlassen, erfolgt der Aufruf mit den Eingangsargumenten Data_Address, Data_Size und Code Size, die alle auf NULL gesetzt werden. Zu diesem Zeitpunkt entfernt der Aufruf die Hardware-Behelfslösungen (Workarounds), so daß der Prozessor-Cache vollständig ausgestattet ist, wenn der CAR-Modus verlassen wird. Daher besteht keine nachteilige Auswirkung der vorliegenden Erfindung auf den normalen Prozessorbetriebsmodus unter der Steuerung des Betriebssystems (OS).
  • Genauer gesagt arbeiten die obigen Verfahren in Verbindung mit Prozessoren der Intel-Itanium-Prozessorfamilie (IPF), die bei einer Tiano- oder tianoartigen Implementierung einer erweiterten Firmware-Schnittstelle (EFI) modifiziert werden können, um den Cache als RAM zu verwenden. Vom Softwarestandpunkt aus gesehen wird der verfügbare Cache als RAM (CAR) für die folgenden drei Zwecke benutzt. Der erste Block ist die Bereitstellung von 64 kb des BSP (Backing Store Pointer) für lokal gestapelte Register. Der zweite Block dient zur Konfiguration von 128 kb eines Stapels (R12 als Datenstapelzeiger) für den C-Compiler zur Erzeugung einer auf Stapeln basierenden Aktivierungsrahmendatenbenutzung. Der dritte 64 kb-Block des linear abgebildeten RAMs, der als globaler Datenstapel (heap) adressierbar ist, ermöglicht eine modulare Konfiguration des System-RAM.
  • Im Betrieb muß der Teil des Cache, der als CAR benutzt wird, so konfiguriert und verwendet werden können, daß durch Software in ihn geschriebene Daten erst dann ersetzt/invalidiert werden, wenn es durch Software ausdrücklich befohlen wird. Anders ausgedrückt, wird durch den als CAR verwendeten Cache folgendes sichergestellt:
    • 1. Alle Datenladeoperationen werden immer aus dem Cache gelesen und erzeugen keine Frontside-Buszyklen (FSB).
    • 2. Cache-Datenleseverfehlungen können den Cache aktualisieren.
    • 3. Cache-Schreibtreffer aktualisieren immer den Cache, obwohl FSB-Zyklen erzeugt werden können.
    • 4. Cache-Schreibverfehlungen können den Cache aktualisieren und können auf Speicher zugreifen, um sicherzustellen, daß keine Cache-Schreibverfehlungen auftreten.
    • 5. Cache-Zeilen werden niemals ersetzt oder invalidiert; obwohl Code-Cache-Zeilen ersetzt werden können.
  • Wie allgemein mit Bezug auf das Boot-Prozeßflußdiagramm 60 von 4 zu sehen ist, führen in einer typischen IPF-Architektur alle Prozessoren Firmwarecode aus, bis der Code einen Bootstrap-Prozessor (BSP) auswählt. Während des Zeitraums, in dem alle Prozessoren Firmwarecode ausführen, ist es also möglich, daß der CAR zwischen den Prozessoren inkohärent wird. Das Kohärenthalten der CARs über alle Prozessoren hinweg ist keine Anforderung. Man beachte, daß Firmwarecode so gewählt werden kann, daß er in dem nichtkohärenten Modell durch entsprechendes Auswählen verschiedener CAR-Adressen für jeden der Prozessoren arbeitet.
  • Die Cache- und Speichersteuerung muß so konfiguriert und verwendet werden, daß vor oder während der Speicherinitialisierung keine unerwünschten Speicherzyklen an der Speicherschnittstelle verursacht werden. Nebenbedingungen in dem uninitialisierten Chipsatz können dazu führen, daß Speicherzyklen aus dem FSB, die auf die Speicherschnittstelle abzielen, die Speichersteuerung abstürzen lassen oder ihren Zustand so ändern, daß sie nicht ordnungsgemäß arbeiten kann. Die "Müll"-Daten in dem Cache müssen beim Herauffahren durch den frühen PAL-A-Code invalidiert werden, ohne daß Speicherzyklen in der Speicherschnittstelle des Chipsatzes resultieren. Wenn aus einem bestimmten Grund der PAL-A-Code den Cache vor dem Transfer nicht invalidiert, muß er den Aufruf PAL_CACHE_INIT in der PAL-A-Schicht unterstützen.
  • In vielen IPF-Prozessoren erzeugt ein Cache-Schreibtreffer Frontbus-Zyklen. Um die Erzeugung von FSB-Zyklen zu vermeiden, lädt Software, die CAR verwendet, die Cache-Speicher nach der Invalidierung des Cache mit entsprechenden TAG-Werten vor. Die PAL-A-Schicht soll nicht nur Cache-Informationsbits weiterleiten, sondern auch ein Verfahren zum Laden der Cache-Speicher mit notwendigen Daten bereitstellen, so daß FSB-Zyklen völlig vermieden werden können. Dies ist besonders für Prozessoren wichtig, die der "back-snoop-me"-Bedingung unterliegen, wobei eine Cache-Zeile, die aus L1 herausgeopfert wird, auf den FSB gelegt wird, obwohl sie im L2 vorliegt und in den L2 zurückgeschrieben worden sein sollte. Diese unerwartete FSB-Transaktion für das L1-Opferrückschreiben kann eine falsche CAR-Funktionsweise verursachen. Dieser Zustand kann vermieden werden, indem man einen PAL-Aufruf zum Konfigurieren des L1-Cache als Entwurf in der Reihenfolge mit einem Zugriff auf einmal konfiguriert.
  • Um einen beständigen und zuverlässigen Betrieb des Cache des Prozessors als temporärer Datenspeicher während der Systemspeicherinitialisierung sicherzustellen, müssen vom Initialisierungsalgorithmus die folgenden Anforderungen und Einschränkungen beachtet werden. Die Firmware muß Änderungen dieses Mechanismus erlauben und alle Szenarien behandeln können, wenn er sich ändert. Die Initialisierung durchführende Firmware ist im allgemeinen ein separat aktualisierbares Modul, wie mit Bezug auf 1 zu sehen ist.
  • PAL-A muß den von der CAR-Software benötigten L2-Cache initialisieren, indem entweder die frühen Mülldaten in dem Cache vor seiner Weiterreichung an EFI-Code (bei SALE_ENTRY) invalidiert werden, oder es muß ein Verfahren zum Invalidieren der Cache-Speicher unterstützen, so daß das CAR-Einrichtmodul den Cache invalidieren kann. Außerdem muß PAL-A-Code Informationen über L2-Cachegröße und die Anzahl der Wege bzw. Möglichkeiten (Assoziativität) des L2-Cache für das CAR-Codemodul bereitstellen, um es dem CAR-Modul zu ermöglichen, die optimale CAR-Datenadresse zu wählen und sie dem PAL-Verfahren zur Verfügung zu stellen, so daß das PAL entsprechende Tag-Informationen in den Cache laden kann. Dies kann entweder als Weiterreichungsinformationen für den CAR-Code zum Zeitpunkt der PAL-A-Weiterreichung an SALE_ENTRY geschehen, oder durch Unterstützen eines prozeduralen Aufrufs, so daß CAR-Code den Cache mit den richtigen Tags für die CAR-Daten laden kann.
  • Alle Prozessoren kommen aus PAL-A heraus und führen eine Behebungsprüfung an dem System aus. Der Codefluß während dieses Zyklus findet Speicher und bestimmt, ob eine Behebung entweder von PAL-B oder der Systemsoftware notwendig ist oder nicht. Wenn eine Behebungsaktion nicht notwendig ist, werden alle Prozessoren zum weiteren Prüfen und Initialisieren an PAL-Code zurückgegeben. Sobald PAL-B dies abgeschlossen hat, werden alle Prozessoren für ein normales Booten an SALE_ENTRY zurückgegeben. Die Cache-Speicher müssen während dieses Codeübergangs in PAL-B und zurück nicht kohärent gehalten werden. Anders ausgedrückt gehören die Cache-Speicher für die Initialisierung und Prüfung dem PAL-Code, wenn die Steuerung im PAL-Code liegt. Der Tiano-Abfertigungscode startet immer frisch und baut seine Variablen jedes Mal auf, wenn er heraufgefahren wird.
  • Mehrere logische CPUs in Mehrfach-Thread- und Mehrkernpaketen werden von der auf CAR basierenden Firmware als separate Prozessoren behandelt und erhalten ihre eigenen, sich nicht überlappenden CAR-Datenbereiche. In solchen Fällen ist die Gesamt-CAR-Datenbereichsanforderung an das CPU-Paket die Summe der Größen der einzelnen CAR-Datenbereiche. Außerdem ist zu beachten, daß diese Anforderung leicht erfüllt werden kann, da die Mehrkern-CPUs im allgemeinen größere L2-Cache-Speicher besitzen.
  • Alle Daten, die die auf CAR basierende Software benötigt, dürfen nur in dem für eine bestimmte Plattform zugeteilten zusammenhängenden CAR-Adressenraum verankert sein. Die auf Stapel basierenden Daten, der durch Backing store Pointer adressierte Bereich und ein etwaiger globaler Datenbereich müssen alle in dieses Paradigma passen. Der Start dieser Datenblockadresse wird eine Ausrichtungseinschränkung aufweisen, die für verschiedene Prozessoren verschieden sein kann. Die gesamte auf CAR basierende Software und Datenlänge in Byte darf die für die Verwendung verfügbare Gesamt-CAR-Cache-Länge nicht überstei- gen, da IPF-Prozessoren vereinheitlichte Cache-Architekturen aufweisen. In einem MP-System nimmt die CAR-Software nicht an, daß die Daten über die Prozessoren in einem Knoten hinweg kohärent sind. Das heißt, daß CAR-Software keine MP-Semaphoren in dem CAR-Datenbereich ausübt und von diesen abhängt. CAR-Software kann jedoch Chipsatz- und andere Hardwarebetriebsmittel verwenden, um Semaphoren und andere MP-Codeausführungssteuermechanismen zu implementieren. Wenn die auf CAR basierende Software für irgendeinen Zweck (wie zum Beispiel Bemessung oder Abstimmung von Speicher) in den durch die Knotenspeichersteuerung gesteuerten Realspeicher schreiben muß, muß dies als nicht cache-gespeicherter Zugriff geschehen. Das bedeutet Einschalten des Bit 63, wenn der Code im physikalischen Modus operiert, oder Einrichten eines ordnungsgemäßen TC-Eintritts im Fall des virtuellen Adressierungsmodus.
  • Wie bereits erwähnt, kann CAR-Software eine Datenblockausrichtung von "N/X" Byte wählen. Die CAR-Software wählt eine Datenadresse für CAR DATA und lädt dann (unter Verwendung von durch PAL-A bereitgestellten Verfahren) eine oder zwei (so viel wie notwendig) Datenspalten mit ordnungsgemäßen Tags vor. Bei IPF-Prozessoren können die übrigen Cache-Spalten aufgrund der Beschaffenheit der Funktionsweise von Pseudo-LRU- Algorithmen, die zur Steuerung des Zugriffs auf L2-Cache-Zeilen verwendet werden, nicht für die Ausführung von Code verwendet werden. Wenn der Anfang des CAR-Codes NICHT auf "N/X" Byte wie Datenspalte ausgerichtet ist, dann kann die effektive Codegröße durch ein Maximum von: (Größe der Code-Spalten)-(eine Cache-Zeilengröße) reduziert werden.
  • Wenn dies tolerierbar ist, ist es nicht notwendig den CAR-Code auszurichten. CAR DATA wird immer auf die erforderliche Grenze ausgerichtet. Außerdem sollte der Adressbereich nicht mit dem größten durch die Plattform verbrauchten Adressbereich in Konflikt stehen. Bei dem größten Bereich handelt es sich im allgemeinen um die höchsten adressierbaren Speicher und mögliche zugeteilte PCI-Bereiche des Systems. Der gewählte Adressbereich wird so gewählt, daß er nicht mit den anderen Architekturadressen von auf IPF basierenden Prozessoren in Konflikt kommt. Die Bereiche enthalten Adressbereiche, die für EA-Block, IPI-Adressenblock, ROM und chipsatzreservierte Adressenbereiche gewählt werden.
  • Es gibt zwei verschiedene Szenarien, in denen PAL-A-Code und das CAR-Einrichtmodul kommunizieren müssen. PAL-A muß Informationen über die L2-Cache-Größe und die Anzahl der Möglichkeiten bzw. Wege (Cache-Topologie) in den CAR-Einrichtcode abgeben. Später muß CAR-Code mit PAL-A kommunizieren, um den Cache zu invalidieren und damit die Tag-Bits eingetragen werden. Zusätzlich leitet die PAL-A-Softwareschicht eine Anzahl von Parametern wie zum Beispiel Selbstprüfzustand, physikalischer Adressenzeiger, um einen PAL-Prozeduraufruf durchzuführen, und so weiter an das am SALE_ENTRY-Punkt befindliche OEM-Codemodul weiter. Der CAR-Einrichtcode befindet sich an diesem Eintrittpunkt und erhält die Steuerung von PAL-A. Es können zusätzliche Parameter zu dem PALE_RESET-Autrittszustand zur Beschreibung der notwendigen Cache-Parameter zu der CAR-Einrichtcodeumgebung hinzugefügt werden. In der Umgebung der IPF (Itanium-Prozessorfamilie) beginnen alle Prozessoren in dem System gleichzeitig mit der Ausführung, und dies führt dazu, daß die Entwurfsanforderung eines frühen Boot-Codes MP-sicher sein muß. Diese zu der traditionellen Komplexität einer IPF-Plattform hinzugefügte Anforderung kann nur extrem schwer erfüllt werden.
  • Die Implementierung der obigen Methoden und Prozeduren erleichtert die Erfüllung verschiedener Prozessorsicherheitsanforderungen, darunter u.a. ohne Einschränkung sichere Boot-Methoden, die üblicherweise auf den derzeitigen Datenverarbeitungsplattformen durchgesetzt werden. Es versteht sich, daß solche Boot-Techniken Programmierkomplexitäten er zeugen, mit denen eine speicherlose Umgebung nicht fertig werden kann. Die meisten Sicherheitsalgorithmen, wie zum Beispiel SHA, benötigen einige wenige KB Speicher zur Anwendung auf Sicherheitsschlüssel, die wie beschrieben unter Verwendung von Cache als RAM verfügbar sind.
  • Zusätzlich besitzen derzeitig Datenverarbeitungsplattformen außerdem sehr komplexe Bustopologien, die sehr früh initialisiert werden müssen, bevor Speicher gefunden werden kann. Die Initialisierung von Busstrukturen wie zum Beispiel USB (universeller serieller Bus) erfordert das Streamen von mehreren Befehls- und Statusbyte zu und von den Bussteuerungsgeräten. Ähnlich verlangen hochverdichtete Speichertechnologien auch eine sehr komplexe Initialisierung und Größenscanningalgorithmen. Diese Operationen werden in einer Umgebung, die Stapel und mindestens einen begrenzten Speicher unterstützt, vereinfacht, wobei ein zusätzlicher Vorteil dadurch entsteht, daß von der Architektur ISA (Instructions Set Architecture) unabhängiger Code in einer höheren Sprache wie C (oder einem Äquivalent) verwendet werden kann. Dadurch wird zum Beispiel eine Wiederverwendung von für übliche Hardwareblöcke zwischen 32-Bit-Intel-Architekturprozessorsystementwürfen und auf IPF (IA-64-)basierenden Systemen anwendbarer Software ermöglicht.
  • Die obigen Methoden und das System implementierende Software kann im Speicher eines Computersystems als eine Menge von auszuführenden Anweisungen gespeichert werden. Die Anweisungen zur Durchführung des oben beschriebenen Verfahrens und Systems könnten als Alternative auch auf anderen Formen von maschinenlesbaren Medien gespeichert werden, wie zum Beispiel magnetischen und optischen Datenträgern. Zum Beispiel könnte das Verfahren der vorliegenden Erfindung auf maschinenlesbaren Medien, wie zum Beispiel Flash-Speichern, magnetischen Datenträgern oder optischen Datenträgern, die über ein Plattenlaufwerk (oder ein Laufwerk für computerlesbare Medien) zugänglich sind, gespeichert werden. Ferner können die Anweisungen in Form einer ausführbaren Version zur Selbstinstallation über ein Datennetzwerk in eine Datenverarbeitungseinrichtung heruntergeladen werden.
  • Alternativ dazu könnte die Logik zur Durchführung der oben besprochenen Verfahren und Systeme in zusätzlichen Computer- und/oder maschinenlesbaren Medien implementiert werden, wie zum Beispiel diskreten Hardwarekomponenten als hochintegrierte Schaltungen (LSIs), anwendungsspezifische integrierte Schaltungen (ASICs) oder Firmware, wie etwa elektrisch löschbarer programmierbarer Nurlesespeicher (EEPROMs); oder in räumlich ent fernten Computern, die durch elektrische, optische, akustische oder andere Formen ausgebreiteter Signale (z.B. Funkwellen oder Infrarot-Lichtsignale) Informationen weiterleiten.
  • In der Beschreibung bedeuten die Ausdrücke "Ausführungsform"; "eine Ausführungsform", "bestimmte Ausführungsformen" oder "andere Ausführungsformen", daß ein bestimmtes Merkmal, eine bestimmte Struktur oder eine beschriebene Eigenschaft, die in Verbindung mit den Ausführungsformen beschrieben werden, mindestens in bestimmten Ausführungsformen, aber nicht unbedingt in allen Ausführungsformen der Erfindung enthalten ist. Die verschiedenen Ausdrücke "Ausführungsform", "eine Ausführungsform" oder "bestimmte Ausführungsformen" beziehen sich nicht unbedingt auf dieselben Ausführungsformen.
  • Wenn die Beschreibung davon spricht, daß eine Komponente, ein Merkmal, eine Struktur oder eine Eigenschaft "eventuell", "möglicherweise" oder "im Prinzip" enthalten kann, ist es nicht notwendig, daß diese bestimmte Komponente, dieses bestimmte Merkmal, diese bestimmte Struktur oder diese bestimmte Eigenschaft enthalten sind. Wenn die Beschreibung oder der Anspruch von "einem" oder "einem bestimmten" Element spricht, soll dies nicht heißen, daß nur eines von dem Element vorliegt. Wenn die Beschreibung oder die Ansprüche von "einem zusätzlichen "Element" sprechen, soll dies nicht ausschließen, daß es mehr als eines des zusätzlichen Elements gibt.
  • Für Fachleute wird anhand der vorliegenden Offenlegung erkennbar sein, daß innerhalb des Schutzumfangs der vorliegenden Erfindung viele andere Varianten aus der obigen Beschreibung und den Zeichnungen hergestellt werden können. Der Schutzumfang der Erfindung wird folglich durch die folgenden Ansprüche, einschließlich etwaiger Ergänzungen dieser, definiert.
  • Zusammenfassung
  • Gemäß einer Ausführungsform läßt ein Computer-Bootverfahren die Auswahl einer vorbestimmten Datenblockausrichtung für einen Cache zu, der mehrere Prozessor-übergreifende Interaktionen aufweist. Eine Cache-RAM-Spalte eines Cache als RAM-Systems wird mit einem Tag geladen, um unbeabsichtigte Cache-Zeilenausräumungen zu verhindern und ein Boot-Code wird ausgeführt, wobei der vorgeladene Cache-RAM dem ausgeführten Boot-Code-Strom als ein Speicher erscheint.

Claims (30)

  1. Computer-Boot-Verfahren, mit den folgenden Schritten: Wählen einer Datenblockausrichtung für einen Cache als N/X Byte, wenn ein Cache die Größe N aufweist und eine Satzassoziativität bis zu X Wege-Interaktionen umfaßt, Vorladen mindestens einer Cache-RAM-Spalte eines Cache als RAM-Systems unter Verwendung eines Tags zur Verhinderung unbeabsichtigter Cache-Zeilenausräumungen und Ausführen von Boot-Code, wobei der vorgeladene Cache-RAM dem ausgeführten Boot-Codestrom als ein Speicher erscheint.
  2. Verfahren nach Anspruch 1, wobei eine Cache als RAM-Software einen Datenadressbereich wählt, der mit keinen vordefinierten Plattformadressenbereichen in Konflikt kommt.
  3. Verfahren nach Anspruch 1, weiterhin mit dem Schritt des Wählens einer Datenblockausrichtung unter Verwendung eines Weiterreichungsregisters zum Übermitteln der Implementierungs-Cachegröße N und der Satzassoziativität X an eine Prozessorabstraktionsschicht.
  4. Verfahren nach Anspruch 1, weiterhin mit dem Schritt des Wählens der Datenblockausrichtung unter Verwendung eines Prozeduraufrufs durch die Prozessorabstraktionsschicht zur Bestimmung der Implementierungs-Cachegröße N und der Satzassoziativität.
  5. Verfahren nach Anspruch 1, weiterhin mit dem Schritt des Wählens der Datenblockausrichtung unter Verwendung eines Prozeduraufrufs durch die Prozessorabstraktionsschicht zur Bestimmung der Implementierungs-Cachegröße N und der Satzassoziativi tät, wobei Eingaben Größe und Adressenbereich der Cache als RAM-Daten und eine maximale Größe des Cache als RAM-Code umfassen.
  6. Verfahren nach Anspruch 1, wobei alle Datenladungen vom Cache geladen werden, um die Erzeugung von Frontside-Buszyklen zu begrenzen.
  7. Verfahren nach Anspruch 1, wobei alle durch Ausführung von Boot-Code erzeugten Datenladungen vom Cache gelesen werden, um die Erzeugung von Frontside-Buszyklen zu begrenzen.
  8. Verfahren nach Anspruch 1, wobei durch Ausführung von Boot-Code erzeugte Cache-Schreibtreffer den Cache immer aktualisieren.
  9. Verfahren nach Anspruch 1, wobei das Ausführen von Boot-Code eine frühe Initialisierung eines (von) Prozessors(en), eine Analyse der Prozessorintegrität und eine Auswahl eines Urlade-(Bootstrap-)Prozessors ermöglicht.
  10. Verfahren nach Anspruch 1, weiterhin mit dem Schritt des Ausführens von Boot-Code für mehrere Prozessoren durch Partitionieren eines Cache als RAM-Datenraums dergestalt, daß jeder Prozessor auf seinen eigenen Cachebereich beschränkt ist.
  11. Artikel mit einem Speichermedium, auf dem Anweisungen gespeichert sind, die, wenn sie durch eine Maschine ausgeführt werden, zu folgendem führen: Wählen der Datenblockausrichtung für einen Cache als N/X Byte, wenn ein Cache die Größe N aufweist und eine Satzassoziativität bis zu X Wege-Interaktionen umfaßt, Vorladen mindestens einer Cache-RAM-Spalte eines Cache als RAM-Systems unter Verwendung eines Tags zur Verhinderung unbeabsichtigter Cache-Zeilenausräumungen und Ausführen von Boot-Code, wobei der vorgeladene Cache-RAM dem ausgeführten Boot-Codestrom als ein Speicher erscheint.
  12. Artikel mit einem Speichermedium, auf dem Anweisungen gespeichert sind, nach Anspruch 11, wobei eine Cache als RAM-Software einen Datenadressbereich wählt, der mit keinen vordefinierten Plattformadressbereichen in Konflikt kommt.
  13. Artikel mit einem Speichermedium, auf dem Anweisungen gespeichert sind, nach Anspruch 11, weiterhin mit dem Schritt des Wählens einer Datenblockausrichtung unter Verwendung eines Weiterreichungsregisters zum Übermitteln der Implementierungs-Cachegröße N und der Satzassoziativität X an eine Prozessorabstraktionsschicht.
  14. Artikel mit einem Speichermedium, auf dem Anweisungen gespeichert sind, nach Anspruch 11, weiterhin mit dem Schritt des Wählens der Datenblockausrichtung unter Verwendung eines Prozeduraufrufs durch die Prozessorabstraktionsschicht zur Bestimmung der Implementierungs-Cachegröße N und der Satzassoziativität.
  15. Artikel mit einem Speichermedium, auf dem Anweisungen gespeichert sind, nach Anspruch 11, weiterhin mit dem Schritt des Wählens der Datenblockausrichtung unter Verwendung eines Prozeduraufrufs durch die Prozessorabstraktionsschicht zur Be- stimmung der Implementierungs-Cachegröße N und der Satzassoziativität, wobei Eingaben Größe und Adressbereich von Cache als RAM-Daten und eine maximale Größe eines Cache als RAM-Codes umfassen.
  16. Artikel mit einem Speichermedium, auf dem Anweisungen gespeichert sind, nach Anspruch 11, wobei alle Datenladungen vom Cache gelesen werden, um die Erzeugung von Frontside-Buszyklen zu begrenzen.
  17. Artikel mit einem Speichermedium, auf dem Anweisungen gespeichert sind, nach Anspruch 11, wobei alle durch Ausführung von Boot-Code erzeugten Datenladungen vom Cache gelesen werden, um die Erzeugung von Frontside-Buszyklen zu begrenzen.
  18. Artikel mit einem Speichermedium, auf dem Anweisungen gespeichert sind, nach Anspruch 11, wobei durch Ausführung von Boot-Code erzeugte Cache-Schreibtreffer den Cache immer aktualisieren.
  19. Artikel mit einem Speichermedium, auf dem Anweisungen gespeichert sind, nach Anspruch 11, wobei das Ausführen von Boot-Code eine frühe Initialisierung eines (von) Prozessors(en), Analyse der Prozessorintegrität und Auswahl eines Urlade-(Bootstrap-)Prozessors ermöglicht.
  20. Artikel mit einem Speichermedium, auf dem Anweisungen gespeichert sind, nach Anspruch 11, wobei das Ausführen von Boot-Code für mehrere Prozessoren durch Partitionieren eines Cache als RAM-Datenraums dergestalt erfolgt, daß jeder Prozessor auf seinen eigenen Cachebereich beschränkt ist.
  21. Boot-System, umfassend: ein Cache als RAM-Softwaremodul, das eine Datenblockausrichtung für einen Cache als N/X Byte wählt, wenn ein Cache die Größe N aufweist und eine Satzassoziativität bis zu X Wege-Interaktionen umfaßt, und mindestens eine Cache-RAM-Spalte eines Cache als RAM-Systems vorlädt unter Verwendung eines Tag zur Verhinderung einer unbeabsichtigten Cache-Zeilenausräumung, und einen Prozessor und angeschlossenen Cache-RAM zur Ausführung von Boot-Code, wobei der vorgeladene Cache-RAM dem ausgeführten Boot-Codestrom als ein Speicher erscheint.
  22. System nach Anspruch 21, wobei eine Cache als RAM-Software einen Datenadressbereich wählt, der mit keinen vordefinierten Plattformadressbereichen in Konflikt kommt.
  23. System nach Anspruch 21, wobei das Wählen der Datenblockausrichtung ein Weiterreichungsregister zum Übermitteln der Implementierungs-Cachegröße N und der Satzassoziativität X zu einer Prozessorabstraktionsschicht benutzt.
  24. System nach Anspruch 21, wobei beim Wählen der Datenblockausrichtung ein Prozeduraufruf durch die Prozessorabstraktionsschicht zur Bestimmung der Implementierungs-Cachegröße N und der Satzassoziativität verwendet wird.
  25. System nach Anspruch 21, das des weiteren das Wählen der Datenblockausrichtung unter Verwendung eines Prozeduraufrufs durch die Prozessorabstraktionsschicht umfaßt, um die Implementierungs-Cachegröße N und die Satzassoziativität zu bestimmen, wobei Eingaben Größe und Adressenbereich von Cache als RAM-Daten und eine maximale Größe des Cache als RAM-Code umfassen.
  26. System nach Anspruch 21, wobei alle Datenladungen vom Cache gelesen werden, um die Erzeugung von Frontside-Buszyklen zu begrenzen.
  27. System nach Anspruch 21, wobei alle durch Ausführung von Boot-Code erzeugten Datenladungen vom Cache gelesen werden, um die Erzeugung von Frontside-Buszyklen zu begrenzen.
  28. System nach Anspruch 21, wobei durch Ausführung von Boot-Code erzeugte Cache-Schreibtreffer den Cache immer aktualisieren.
  29. System nach Anspruch 21, wobei das Ausführen von Boot-Code eine frühe Initialisierung eines (von) Prozessors(en), Analyse der Prozessorintegrität und Auswahl eines Bootstrap-Prozessors ermöglicht.
  30. System nach Anspruch 21, wobei das Ausführen von Boot-Code für mehrere Prozessoren durch Partitionieren eines Cache als RAM-Datenraums dergestalt erfolgt, daß jeder Prozessor auf seinen eigenen Cachebereich beschränkt ist.
DE10393727T 2002-11-15 2003-10-30 Prozessor-Cache-Speicher als RAM zur Ausführung von Boot-Code Ceased DE10393727T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/295,406 2002-11-15
US10/295,406 US7254676B2 (en) 2002-11-15 2002-11-15 Processor cache memory as RAM for execution of boot code
PCT/US2003/034808 WO2004046920A2 (en) 2002-11-15 2003-10-30 Processor cache memory as ram for execution of boot code

Publications (1)

Publication Number Publication Date
DE10393727T5 true DE10393727T5 (de) 2006-09-28

Family

ID=32297190

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10393727T Ceased DE10393727T5 (de) 2002-11-15 2003-10-30 Prozessor-Cache-Speicher als RAM zur Ausführung von Boot-Code

Country Status (9)

Country Link
US (1) US7254676B2 (de)
JP (1) JP4220469B2 (de)
CN (1) CN1894662B (de)
AU (1) AU2003287426A1 (de)
DE (1) DE10393727T5 (de)
GB (1) GB2409747B (de)
HK (1) HK1074501A1 (de)
TW (1) TWI242746B (de)
WO (1) WO2004046920A2 (de)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040103272A1 (en) * 2002-11-27 2004-05-27 Zimmer Vincent J. Using a processor cache as RAM during platform initialization
US20040128493A1 (en) * 2002-12-27 2004-07-01 Zimmer Vincent J. Methods and apparatus for providing a firmware defined radio
US20040162978A1 (en) * 2003-02-17 2004-08-19 Reasor Jason W. Firmware developer user interface
US6880047B2 (en) * 2003-03-28 2005-04-12 Emulex Design & Manufacturing Corporation Local emulation of data RAM utilizing write-through cache hardware within a CPU module
US7058735B2 (en) * 2003-06-02 2006-06-06 Emulex Design & Manufacturing Corporation Method and apparatus for local and distributed data memory access (“DMA”) control
US7149890B2 (en) * 2003-11-21 2006-12-12 Intel Corporation Initializing system memory
TWI259358B (en) * 2004-04-16 2006-08-01 Quanta Comp Inc A system and a method for decoding port data
US8145870B2 (en) * 2004-12-07 2012-03-27 International Business Machines Corporation System, method and computer program product for application-level cache-mapping awareness and reallocation
TWI280487B (en) * 2004-12-15 2007-05-01 Via Tech Inc Power-on method for computer system with hyper-threading processor
JP4597032B2 (ja) * 2005-10-24 2010-12-15 株式会社ソニー・コンピュータエンタテインメント コンピュータシステム、それにおける基本プログラムの起動方法、及びローダプログラム
US8352718B1 (en) * 2005-11-29 2013-01-08 American Megatrends, Inc. Method, system, and computer-readable medium for expediting initialization of computing systems
CN100504779C (zh) * 2006-06-30 2009-06-24 联想(北京)有限公司 一种加速bios运行的方法
JP2008046685A (ja) * 2006-08-10 2008-02-28 Fujitsu Ltd 二重化システム及び系切り換え方法
US7673126B2 (en) * 2006-09-19 2010-03-02 Intel Corporation Methods and apparatus to self-initialize a processor
EP2078263B1 (de) * 2006-10-31 2019-06-12 Semiconductor Energy Laboratory Co, Ltd. Halbleiterbauelement
WO2008070191A2 (en) * 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a reconfigurable baseboard management controller
US7627718B2 (en) 2006-12-13 2009-12-01 Intel Corporation Frozen ring cache
US7987348B2 (en) * 2007-03-30 2011-07-26 Intel Corporation Instant on video
US20080270827A1 (en) * 2007-04-26 2008-10-30 International Business Machines Corporation Recovering diagnostic data after out-of-band data capture failure
US7818560B2 (en) * 2007-09-21 2010-10-19 Intel Corporation System information synchronization in a links-based multi-processor system
US8103862B2 (en) * 2008-06-25 2012-01-24 Dell Products L.P. Self test initialization
US8296553B2 (en) * 2008-11-19 2012-10-23 Intel Corporation Method and system to enable fast platform restart
US8589629B2 (en) * 2009-03-27 2013-11-19 Advanced Micro Devices, Inc. Method for way allocation and way locking in a cache
US20110179311A1 (en) * 2009-12-31 2011-07-21 Nachimuthu Murugasamy K Injecting error and/or migrating memory in a computing system
US20110161592A1 (en) * 2009-12-31 2011-06-30 Nachimuthu Murugasamy K Dynamic system reconfiguration
CN102479094A (zh) 2010-11-30 2012-05-30 英业达股份有限公司 可携式通讯装置运作方法
WO2013095387A1 (en) 2011-12-20 2013-06-27 Intel Corporation Secure replay protected storage
US9411748B2 (en) 2011-12-20 2016-08-09 Intel Corporation Secure replay protected storage
CN104115125B (zh) 2011-12-29 2017-12-01 英特尔公司 安全的错误处理
CN103324492A (zh) * 2012-03-20 2013-09-25 鸿富锦精密工业(深圳)有限公司 基本输入输出系统固件升级方法及电子装置
US8904227B2 (en) 2012-07-30 2014-12-02 Oracle International Corporation Cache self-testing technique to reduce cache test time
US9104558B2 (en) 2013-03-28 2015-08-11 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Preventing out-of-space errors for legacy option ROM in a computing system
JP2015191606A (ja) 2014-03-28 2015-11-02 富士通株式会社 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム
CN104112098B (zh) * 2014-07-17 2017-09-22 中国人民解放军国防科学技术大学 操作系统中的内核模块加载控制方法
EP3291087A1 (de) * 2016-09-01 2018-03-07 Nxp B.V. Vorrichtung und zugehöriges verfahren zur authentifizierung von firmware
US10175992B2 (en) * 2016-10-01 2019-01-08 Intel Corporation Systems and methods for enhancing BIOS performance by alleviating code-size limitations
CN107832238B (zh) * 2017-10-09 2021-08-31 江苏航天龙梦信息技术有限公司 一种基于龙芯处理器平台的高速缓存作内存的方法
US11468170B2 (en) 2018-12-07 2022-10-11 Intel Corporation Techniques for processor boot-up
US11550664B2 (en) * 2019-04-08 2023-01-10 Dell Products L.P. Early boot event logging system
US11144456B2 (en) * 2019-05-24 2021-10-12 Texas Instmments Incorporated Hardware coherence signaling protocol
EP3901768A1 (de) * 2020-04-20 2021-10-27 INTEL Corporation Verfahren, systeme und vorrichtungen für einen multiprozessor-boot-fluss für einen schnelleren boot-prozess
US11941409B2 (en) 2020-04-20 2024-03-26 Intel Corporation Methods, systems, and apparatuses for a multiprocessor boot flow for a faster boot process
US11768691B2 (en) * 2020-09-18 2023-09-26 Intel Corporation Boot process for early display initialization and visualization
US11893251B2 (en) 2021-08-31 2024-02-06 Apple Inc. Allocation of a buffer located in system memory into a cache memory
US11704245B2 (en) 2021-08-31 2023-07-18 Apple Inc. Dynamic allocation of cache memory as RAM
DE112022003363T5 (de) * 2021-08-31 2024-04-11 Apple Inc. Dynamische zuweisung von cache-speicher als ram
US11635968B2 (en) 2021-09-15 2023-04-25 International Business Machines Corporation Using idle caches as a backing store for boot code

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155833A (en) * 1987-05-11 1992-10-13 At&T Bell Laboratories Multi-purpose cache memory selectively addressable either as a boot memory or as a cache memory
US5809531A (en) * 1992-09-21 1998-09-15 Intel Corporation Computer system for executing programs using an internal cache without accessing external RAM
US6044478A (en) 1997-05-30 2000-03-28 National Semiconductor Corporation Cache with finely granular locked-down regions
US6363437B1 (en) * 1999-01-07 2002-03-26 Telefonaktiebolaget Lm Ericsson (Publ) Plug and play I2C slave
US6463509B1 (en) 1999-01-26 2002-10-08 Motive Power, Inc. Preloading data in a cache memory according to user-specified preload criteria
US6606686B1 (en) * 1999-07-15 2003-08-12 Texas Instruments Incorporated Unified memory system architecture including cache and directly addressable static random access memory
EP1098249A1 (de) 1999-11-05 2001-05-09 Emc Corporation Cachespeichersegmentierung zur Bereitstellung von unterschiedlichen Betriebsniveaus
US6195749B1 (en) * 2000-02-10 2001-02-27 Advanced Micro Devices, Inc. Computer system including a memory access controller for using non-system memory storage resources during system boot time
US6842857B2 (en) * 2001-04-12 2005-01-11 International Business Machines Corporation Method and apparatus to concurrently boot multiple processors in a non-uniform-memory-access machine
US20020184352A1 (en) * 2001-05-17 2002-12-05 Sunit Jain Firmware common operations and reset environment

Also Published As

Publication number Publication date
WO2004046920A2 (en) 2004-06-03
HK1074501A1 (en) 2005-11-11
AU2003287426A1 (en) 2004-06-15
JP4220469B2 (ja) 2009-02-04
JP2006515940A (ja) 2006-06-08
CN1894662A (zh) 2007-01-10
GB0506998D0 (en) 2005-05-11
TWI242746B (en) 2005-11-01
GB2409747B (en) 2006-09-20
US20040098575A1 (en) 2004-05-20
TW200424939A (en) 2004-11-16
GB2409747A (en) 2005-07-06
WO2004046920A3 (en) 2006-04-06
CN1894662B (zh) 2010-05-26
US7254676B2 (en) 2007-08-07
AU2003287426A8 (en) 2004-06-15

Similar Documents

Publication Publication Date Title
DE10393727T5 (de) Prozessor-Cache-Speicher als RAM zur Ausführung von Boot-Code
DE69633166T2 (de) Integrierter schaltkreis mit mehreren funktionen und gemeinsamer verwendung mehrerer interner signalbusse zur verteilung der steuerung des buszugriffes und der arbitration
DE69822534T2 (de) Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen
DE112006002237B4 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE112011105298B4 (de) Reduzieren des Energieverbrauchs von Uncore-Schaltkreisen eines Prozessors
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE112005001798B4 (de) Verwalten von Prozessorressourcen während Architekturereignissen
DE112005003098B4 (de) Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung
DE112011103433B4 (de) Verfahren, System und Programm zum Steuern von Cache-Kohärenz
DE112017001959T5 (de) Cachespeicher-Zugriff
DE112004001133T5 (de) Warteschlangen-Sperren mit Monitor-Memory-Wait
DE4417068A1 (de) Verfahren und Einrichtung zum Betreiben eines Einzel-Prozessor-Computersystems als Mehr-Prozessor-System
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
DE102008058209A1 (de) Anordnung und Verfahren um zu verhindern, dass ein Anwenderbetriebssystem in einem VMM System eine Anordnung abschaltet, die von einem Servicebetriebssystem verwendet wird
DE112005002420T5 (de) Verfahren und Vorrichtung zum Pushen von Daten in den Cache eines Prozessors
DE102005032949A1 (de) Verfahren und Vorrichtung zum Implementieren von Speicherordnungsmodellen mit Ordnungsvektoren
DE112015000430T5 (de) Einheitliche Speichersysteme und -verfahren
DE112005003339T5 (de) Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung
DE102007018033A1 (de) Kohärenzverzeichnisaktualisierung
DE112012001660T5 (de) Speicher-Checkpointing in einem System gespiegelter virtueller Maschinen
DE102018004727A1 (de) Verfahren und System zum Durchführen von Datenbewegungsoperationen mit Lese-Snapshot und In-Place-Schreibaktualisierung
US5692153A (en) Method and system for verifying execution order within a multiprocessor data processing system
DE102022107800A1 (de) Booten und verwenden eines einzelnen cpu-sockels als partitionierte multi-cpu-plattform
DE112011100854B4 (de) Schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren
DE102021108478B4 (de) Vorrichtung und Steuerung zur Cache-Verzeichnis-CAM-Fehlererkennung und - Korrektur

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 10393727

Country of ref document: DE

Date of ref document: 20060928

Kind code of ref document: P

8131 Rejection