DE102018204864A1 - Technologie zum Ermöglichen eines schnellen Bootens mit einem schnellen und langsamen nichtflüchtigen Speicher - Google Patents

Technologie zum Ermöglichen eines schnellen Bootens mit einem schnellen und langsamen nichtflüchtigen Speicher Download PDF

Info

Publication number
DE102018204864A1
DE102018204864A1 DE102018204864.9A DE102018204864A DE102018204864A1 DE 102018204864 A1 DE102018204864 A1 DE 102018204864A1 DE 102018204864 A DE102018204864 A DE 102018204864A DE 102018204864 A1 DE102018204864 A1 DE 102018204864A1
Authority
DE
Germany
Prior art keywords
code module
boot code
dps
nvm
fast
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102018204864.9A
Other languages
English (en)
Inventor
Michael Rothman
Vincent Zimmer
Jiewen Yao
Giri Mudusuru
Jie Lin
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 DE102018204864A1 publication Critical patent/DE102018204864A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)

Abstract

Ein Verfahren zum Booten eines Datenverarbeitungssystems (DPS) weist Folgendes auf: während eines Boot-Prozesses des DPS, Verwenden eines vorläufigen Bootcode-Moduls aus einem langsamen nichtflüchtigen Speicher (NVM) im DPS zum Laden eines Haupt-Bootcode-Moduls aus einem schnellen NVM im DPS in einen flüchtigen Direktzugriffsspeicher (RAM) im DPS, wobei der schnelle NVM eine Lesegeschwindigkeit unterstützt, die höher ist als die maximale Lesegeschwindigkeit des langsamen NVM. Das Verfahren weist ferner Folgendes auf: während des Boot-Prozesses, nach dem Laden des Haupt-Bootcode-Moduls aus dem schnellen NVM in den RAM, Verwenden des Haupt-Bootcode-Moduls zum Booten des DPS zu einem Betriebssystem (OS). Das Verfahren kann auch Folgendes aufweisen: Verwenden des vorläufigen Bootcode-Moduls zum automatischen Feststellen, ob das Haupt-Bootcode-Modul aus dem schnellen NVM eine gute Integrität aufweist. Andere Ausführungsformen werden beschrieben und beansprucht.

Description

  • Technisches Gebiet
  • Diese Offenbarung betrifft allgemein Technologie zum Booten von Datenverarbeitungssystemen. Diese Offenbarung betrifft insbesondere Verfahren und Vorrichtungen zur Verwendung eines schnellen nichtflüchtigen Speichers (NVM) und eines langsamen NVM zum Ermöglichen eines schnellen Bootens.
  • Hintergrund
  • Ein Datenverarbeitungssystem (DPS) kann Hardware- und Softwarekomponenten aufweisen. Die Softwarekomponenten können eine oder mehrere Anwendungen, ein Betriebssystem (OS) und Firmware aufweisen. Die Anwendungen können Steuerlogik zur Ausführung der Arbeit, die für den Benutzer des DPS von Wert ist, aufweisen. Bei einem solchen DPS laufen die Anwendungen über dem OS, das auf einer niedrigeren logischen Ebene läuft als die Anwendungen (d.h. näher zur Hardware), um eine zugrunde liegende Umgebung oder Abstraktionsschicht bereitzustellen, wodurch es leichter wird, die Anwendungen zu erzeugen und auszuführen. Die Firmware läuft auf einer sogar noch niedrigeren logischen Ebene, um eine zugrunde liegende Umgebung oder Abstraktionsschicht bereitzustellen, wodurch es leichter wird, das OS zu erzeugen und auszuführen. Beispielsweise kann die Firmware ein grundlegendes Ein-/Ausgabesystem (BIOS) bilden und kann das OS dieses BIOS verwenden, um mit verschiedenen Hardwarekomponenten innerhalb des DPS zu kommunizieren.
  • Typischerweise werden das OS und die Anwendungen aus Direktzugriffsspeicher (RAM), der flüchtig ist, ausgeführt. Ein Teil der Firmware oder die gesamte Firmware kann auch aus RAM ausgeführt werden. Weil der RAM flüchtig ist, verschwindet die Umgebung zur Ausführung nützlicher Arbeit jedoch im Wesentlichen immer dann, wenn das DPS abgeschaltet wird. Folglich muss das DPS immer dann, wenn es eingeschaltet wird, diese Umgebung wiederherstellen, bevor nützliche Arbeit ausgeführt werden kann. Für die Zwecke dieser Offenbarung können die Vorgänge zum Vorbereiten eines DPS, ein OS auszuführen, als „Boot-Prozess“ bezeichnet werden. Ähnlich kann die Zeit, die während des Boot-Prozesses verstreicht, als „Boot-Zeit“ bezeichnet werden.
  • Figurenliste
  • Es zeigen:
    • 1 ein Blockdiagramm einer als Beispiel dienenden Ausführungsform eines Datenverarbeitungssystems, das einen schnellen NVM und einen verhältnismäßig großen langsamen NVM verwendet, um ein schnelles Booten zu ermöglichen,
    • 2 ein Blockdiagramm einer als Beispiel dienenden Ausführungsform eines Datenverarbeitungssystems, das einen schnellen NVM und einen verhältnismäßig kleinen langsamen NVM verwendet, um ein schnelles Booten zu ermöglichen,
    • 3 ein Flussdiagramm einer als Beispiel dienenden Ausführungsform eines Prozesses zur Verwendung eines schnellen NVM und eines verhältnismäßig großen langsamen NVM, um ein schnelles Booten zu ermöglichen, und
    • die 4A und 4B ein Flussdiagramm einer als Beispiel dienenden Ausführungsform eines Prozesses zur Verwendung eines schnellen NVM und eines verhältnismäßig kleinen langsamen NVM, um ein schnelles Booten zu ermöglichen.
  • Beschreibung von Ausführungsformen
  • Wie vorstehend angegeben wurde, kann ein DPS, wenn es eingeschaltet oder zurückgesetzt wird, einen Boot-Prozess ausführen müssen, bevor das DPS für nützliche Arbeit verwendet werden kann. Die Steuerlogik oder Firmware, die den Boot-Prozess ausführt oder steuert, kann als „System-Firmware“, „System-Bootcode“, „Plattform-Bootcode“ oder einfach „Bootcode“ bezeichnet werden. Ein DPS kann den Bootcode in einem NVM speichern. Als Teil des Prozesses zum Vorbereiten des Computers, damit er das OS ausführen kann, kann der Bootcode Hardware-Ressourcen im Computer in der Art des RAM entdecken und initialisieren. Bevor der Bootcode den RAM initialisiert, kann ein Prozessor im DPS Techniken in der Art von Execution-in-place(XIP) und Cache-as-RAM verwenden, um den Bootcode auszuführen. Nachdem der RAM initialisiert wurde, kann der Prozessor einen Teil des Bootcodes oder den gesamten Bootcode aus dem NVM in den RAM kopieren. Der Prozessor kann dann den Bootcode aus dem RAM ausführen, um den Boot-Prozess abzuschließen.
  • Bei einem Teil dieses Boot-Prozesses können Peripherievorrichtungen entdeckt werden und Peripherie-Firmware aus diesen Peripherievorrichtungen in den RAM geladen werden. Eine Peripherievorrichtung kann ihre Peripherie-Firmware beispielsweise in einem Nurlesespeicher (ROM) speichern. Dementsprechend kann Peripherie-Firmware für die Zwecke dieser Offenbarung allgemein als „optionale ROM-Firmware“ bezeichnet werden.
  • Demgemäß kann die System-Firmware die optionale ROM-Firmware verwenden. Für die Zwecke dieser Offenbarung sollten Begriffe wie „System-Firmware“, „System-Bootcode“, „Plattform-Bootcode“ und „Bootcode“ als die System-Firmware bezeichnend und nicht als optionale ROM-Firmware oder andere Typen von Peripherie-Firmware aufweisend verstanden werden.
  • Die für das Ausführen des Boot-Prozesses erforderliche Zeit kann erheblich sein. Folglich kann sich ein Benutzer, um die durch den Boot-Prozess herbeigeführte Verzögerung zu vermeiden, von vorneherein gegen das Ausschalten seines DPS entscheiden. Die Energie, die von einem DPS verbraucht wird, während das DPS eingeschaltet ist, jedoch nicht verwendet wird, kann als verschwendete Energie betrachtet werden. Glücklicherweise kann ein DPS dafür ausgelegt werden, ansprechend auf eine vorgegebene Inaktivitätsperiode oder ansprechend auf eine manuelle Auswahl eines Zustands mit niedriger Leistungsaufnahme in einen Zustand mit niedriger Leistungsaufnahme einzutreten. Allerdings verbrauchen Zustände mit niedriger Leistungsaufnahme noch immer mehr Energie als ein Ausschaltzustand. Überdies können einige energieverbrauchende Praktiken Energievorschriften verletzen, die von Organisationen in der Art der California Energy Commission promulgiert werden.
  • Zusätzlich werden einige Datenverarbeitungssysteme für Zwecke verwendet, die eine lange Verzögerung zwischen dem Einschalten und nützlicher Arbeit nicht tolerieren können. Beispielsweise kann ein auf dem Automobil- oder Transportsektor verwendetes DPS die Kontrolle über sein OS in weniger als 700 Millisekunden (ms) übertragen müssen.
  • Bei einem typischen DPS verwendet der NVM für den Bootcode NOR-Flash-Speicher für das Speichern von Daten und eine serielle Peripherieschnittstelle (SPI) für die Ein- und Ausgabe. Folglich ist der NVM verhältnismäßig langsam. Ein erheblicher Teil der Boot-Zeit kann daher auf das Lesen des Bootcodes aus dem NVM zurückzuführen sein.
  • Die vorliegende Offenbarung beschreibt ein DPS mit wenigstens zwei verschiedenen NVM-Typen, einschließlich eines langsamen NVM und eines schnellen NVM. Zusätzlich beschreibt die vorliegende Offenbarung Bootcode, der in zwei oder mehr verschiedene Abschnitte oder Module unterteilt ist, wobei wenigstens einer dieser Abschnitte im schnellen NVM gespeichert wird. Typischerweise liest das DPS, wenn es bootet, statt den gesamten Bootcode aus dem langsamen NVM zu lesen, zumindest einen Teil des Bootcodes aus dem schnellen NVM. Zusätzlich kann das DPS Schritte unternehmen, um den Bootcode aus dem schnellen NVM zu validieren, bevor dieser Bootcode ausgeführt wird. Trotz der zusätzlichen Operationen für die Validierung und für andere Aktionen in Zusammenhang mit der Verwendung mehr als eines NVM kann die Gesamt-Boot-Zeit verglichen mit einem herkömmlichen DPS, wobei sich der gesamte Bootcode in einem langsamen NVM befindet, erheblich verringert werden. Zusätzlich können, wie nachstehend in weiteren Einzelheiten beschrieben wird, die Hardware-Kosten für ein DPS gemäß der vorliegenden Offenbarung verglichen mit einem herkömmlichen DPS mit einem langsamen NVM, der groß genug ist, um den gesamten Bootcode zu halten, verringert werden.
  • 1 ist ein Blockdiagramm einer als Beispiel dienenden Ausführungsform eines DPS 20, das einen schnellen NVM 32 und einen langsamen NVM 36 zum Ermöglichen eines schnellen Bootens verwendet. Gemäß der Ausführungsform aus 1 ist der langsame NVM 36 verglichen mit dem langsamen NVM gemäß der Ausführungsform aus 2 groß.
  • Wie dargestellt ist, weist das DPS 20 auch wenigstens einen Prozessor 22 in Kommunikation mit anderen Hardware-Komponenten in der Art des schnellen NVM 32, des langsamen NVM 36, eines RAM 30, einer Netzschnittstellen-Steuereinrichtung (NIC) 58 und eines Trusted Platform Module (TPM) 48 auf. Der Prozessor 22 kann eine oder mehrere Ebenen des Cache 24 aufweisen. Der Prozessor 22 kann auch als „Zentralverarbeitungseinheit“ (CPU) bezeichnet werden, und einige Ausführungsformen können mehrere CPU aufweisen. Der Prozessor 22 kann auch kommunikativ mit einer oder mehreren nichtflüchtigen Massenspeichervorrichtungen in der Art eines Halbleiterlaufwerks (SSD) oder eines Festplattenlaufwerks (HDD) 38 gekoppelt sein.
  • Wie nachstehend angegeben wird, sind einige NVM-Typen schneller als andere. Für die Zwecke dieser Offenbarung wird der Begriff „Lesegeschwindigkeit“ verwendet, um zu beschreiben, wie viele Daten in einem bestimmten Zeitraum aus einem NVM gelesen werden können. Dementsprechend kann die Lesegeschwindigkeit beispielsweise in Megabytes pro Sekunde (MB/s) ausgedrückt werden. Die Lesegeschwindigkeit kann auch als „durchschnittliche Lesegeschwindigkeit“, „maximale Lesegeschwindigkeit“ oder einfach „Geschwindigkeit“ bezeichnet werden. Auch kann ausgesagt werden, dass ein NVM, der in der Lage ist, eine bestimmte Lesegeschwindigkeit zu bieten, diese Geschwindigkeit „unterstützt“. Dementsprechend unterstützt der schnelle NVM gemäß einer gegebenen Ausführungsform eine höhere Lesegeschwindigkeit als der langsame NVM. Mit anderen Worten unterstützt der schnelle NVM eine Lesegeschwindigkeit, die höher als die maximale unterstützte Lesegeschwindigkeit des langsamen NVM ist. Einfacher ausgedrückt hat der schnelle NVM eine höhere Lesegeschwindigkeit. Für die Zwecke dieser Offenbarung ist die „maximale unterstützte Lesegeschwindigkeit“ oder „maximale Lesegeschwindigkeit“ eines NVM die höchste durchschnittliche Lesegeschwindigkeit, die der NVM liefern kann.
  • Gemäß den Ausführungsformen aus den 1 und 2 können die langsamen NVM NOR-Flash-Speicher zum Speichern von Daten verwenden und kann jeder langsame NVM eine Schnittstelle mit einer Busbreite von nicht mehr als vier Leitungen oder Drähten verwenden, wobei nur zwei dieser Leitungen verwendet werden, um Daten einzugeben und auszugeben. Beispielsweise kann der langsame NVM eine SPI mit nur zwei Datenleitungen verwenden, nämlich eine Master-Ausgangs-Slave-Eingangs-(MOSI)-Leitung und eine Master-Eingangs-Slave-Ausgangs-(MISO)-Leitung. Der langsame NVM kann bei Verwendung einer SPI, die bei 75 Megahertz (MHz) arbeitet, eine Lesegeschwindigkeit von etwa 9,38 MB/s aufweisen. Andere Ausführungsformen können jedoch langsame NVM mit anderen Geschwindigkeiten verwenden. Beispielsweise kann eine Ausführungsform einen langsamen NVM mit einer Lesegeschwindigkeit von etwa 35 MB/s unter Verwendung einer SPI, die bei 280 MHz arbeitet, verwenden. Andere Ausführungsformen können langsame NVM mit Geschwindigkeiten im Bereich von etwa 9 MB/s bis etwa 40 MB/s verwenden.
  • Der schnelle NVM 32 kann NAND-Speicherzellen, die sowohl horizontal als auch vertikal angeordnet sind, zum Speichern von Daten verwenden. Mit anderen Worten kann der schnelle NVM 32 eine oder mehrere dreidimensionale (3D) Sammlungen (oder Felder) von Speicherzellen zum Speichern von Daten verwenden. Zusätzlich kann der schnelle NVM 32 eine NVM-Express(NVMe)-Schnittstelle, eine Serial-AT-Attachment(ATA)-Schnittstelle oder eine andere geeignete Busschnittstelle zum Eingeben und Ausgeben von Daten verwenden. Eine serielle ATA-Schnittstelle kann auch als „SATA-Schnittstelle“ bezeichnet werden. Demgemäß kann der schnelle NVM 32 eine Ein-/Ausgabeschnittstelle (E/A-Schnittstelle) mit mehreren Sendeleitungen und mehreren Empfangsleitungen aufweisen.
  • Gemäß der Ausführungsform aus 1 hat der schnelle NVM 32 eine Lesegeschwindigkeit von etwa 1600 MB/s. Andere Ausführungsformen können jedoch schnelle NVM mit anderen Geschwindigkeiten verwenden. Beispielsweise kann eine Ausführungsform einen schnellen NVM mit einer Lesegeschwindigkeit von etwa 1000 MB/s verwenden und können andere Ausführungsformen schnelle NVM mit Geschwindigkeiten von mehr als 1000 MB/s verwenden. Einige Ausführungsformen können schnelle NVM in der Art jener verwenden, die von Intel Corporation unter dem Namen oder Warenzeichen „Intel® Optane™ Memory“ beschrieben werden. Zusätzliche Einzelheiten zu dieser Speichertechnologie können im Internet unter der folgenden Netzadresse (URL) gefunden werden: www.intel.com--content--www--us--en--architecture-and-technology--intel-optane-memory.html. (Um zu verhindern, dass URL zu anklickbaren Hyperlinks werden, ersetzt diese Offenbarung jedes nach vorne gerichtete Schrägstrichzeichen in jeder URL durch die Zeichenkette „--“.) Auch können, wie bei www.intel.com--content--www--us--en--architecture-and-technology--intel-optane-technology.html angegeben ist, bei der Herstellung eines schnellen NVM „submikroskopische Materialschichten in Spalten zerlegt werden, die jeweils eine Speicherzelle und einen Wähler enthalten, wobei sie dann mit einer innovativen Kreuzungspunktstruktur senkrechter Drähte verbunden werden“. Auf die Speichertechnologie für schnelle NVM kann auch unter Verwendung des Namens oder Warenzeichens „3D Crosspoint“ oder „3D XPoint“ Bezug genommen werden. Weitere Einzelheiten können aus en.wikipedia.org--wiki--3D_XPoint und von anderen Seiten in der Art von www.businesswire.com--news--home--20150728005534--en--Intel-Micron-Produce-Breakthrough-Memory-Technology erhalten werden. Dementsprechend kann der schnelle NVM 32 in etwa die gleiche effektive Lesegeschwindigkeit aufweisen wie synchrone dynamische RAM mit doppelter Datenrate der vierten Generation (DDR4 SDRAM), wenngleich sie eine nichtflüchtige Charakteristik aufweisen. Andere Ausführungsformen können jedoch einen schnellen NVM verwenden, der mit anderen Namen oder Warenzeichen bezeichnet wird. Nichtsdestoweniger kann der schnelle NVM gemäß jeder Ausführungsform eine andere Schnittstelle verwenden als der langsame NVM. Zusätzlich ist der schnelle NVM schneller als der langsame NVM. Beispielsweise kann der schnelle NVM, wie nachstehend angegeben wird, gemäß einigen Ausführungsformen mehr als 20 Mal schneller sein als der langsame NVM. Gemäß anderen Ausführungsformen kann der schnelle NVM mehr als 150 Mal schneller sein als der langsame NVM.
  • Die HDD 38 kann eine oder mehrere Magnetplatten für das Speichern von Daten verwenden, und die HDD 38 kann eine Schnittstelle mit nicht mehr als vier Datenleitungen oder Drähten verwenden. Beispielsweise kann die HDD 38 eine SATA-Schnittstelle mit zwei Sendeleitungen und zwei Empfangsleitungen verwenden. Ein OS 80 und eine oder mehrere Anwendungen können auf der HDD 38 gespeichert werden. Ähnlich kann, falls eine SSD aufgenommen ist, die SSD die gleiche Schnittstellenart wie eine HDD in der Art einer SATA-Schnittstelle verwenden.
  • Gemäß der Ausführungsform aus 1 hat der Hersteller oder Lieferant des DPS 20 ein vorläufiges Bootcode-Modul (PBM) 40 und ein Haupt-Bootcode-Modul (MBM) 42 im langsamen NVM 36 installiert. Dementsprechend kann eine Instanz eines Haupt-Bootcode-Moduls in einem langsamen NVM als „langsames Haupt-Bootcode-Modul“ oder „langsames MBM“ bezeichnet werden. Wie nachstehend in weiteren Einzelheiten mit Bezug auf 3 beschrieben wird, kann das vorläufige Bootcode-Modul 40 dann das langsame MBM 42 in ein geschütztes Gebiet 34 des schnellen NVM 32 kopieren. Dementsprechend kann eine Instanz eines Haupt-Bootcode-Moduls in einem schnellen NVM als „schnelles Haupt-Bootcode-Modul“ oder „schnelles MBM“ bezeichnet werden. Demgemäß zeigt 1 das schnelle MBM 43 im schnellen NVM 32.
  • Während eines typischen Boot-Prozesses kann der Prozessor 22 einen Teil des schnellen MBM 43 oder das gesamte schnelle MBM 43 zur Ausführung aus dem schnellen NVM 32 in den RAM 30 kopieren und kann der Prozessor 22 einen Teil des OS 80 oder das gesamte OS 80 zur Ausführung von der HDD 38 in den RAM 30 kopieren, wie durch die Kästchen mit gestrichelten Umrissen im RAM 30 dargestellt ist. Zusätzlich kann, wie nachstehend in weiteren Einzelheiten mit Bezug auf 3 beschrieben wird, das vorläufige Bootcode-Modul 40 (a) eine Messung 44 des schnellen MBM 43 berechnen, (b) eine zuvor gespeicherte Messung des Haupt-Bootcode-Moduls 42 aus einem vertrauenswürdigen Speicher (in der Art des TPM 48) abrufen und (c) diese Messungen verwenden, um festzustellen, ob die Integrität des schnellen MBM 43 aufrechterhalten wurde oder ob das schnelle MBM 43 manipuliert wurde.
  • 2 ist ein Blockdiagramm einer als Beispiel dienenden Ausführungsform eines DPS 120, das einen schnellen NVM 32 und einen langsamen NVM 136 zum Ermöglichen eines schnellen Bootens verwendet. Gemäß der Ausführungsform aus 2 kann das DPS 120 einige derselben Komponententypen wie das DPS 20 verwenden, wie sich in den übereinstimmenden Bezugszahlen widerspiegelt. Allerdings ist gemäß der Ausführungsform aus 2 der langsame NVM 136 kleiner als der langsame NVM gemäß der Ausführungsform aus 1. Auch weist die Ausführungsform aus 2 ein vorläufiges Bootcode-Modul 140 auf, das sich vom vorläufigen Bootcode-Modul 40 gemäß der Ausführungsform aus 1 unterscheidet. Beispielsweise kann das vorläufige Bootcode-Modul 140 eine Steuerlogik zum Abrufen einer frischen Kopie des Haupt-Bootcode-Moduls 42 von einer externen Quelle in der Art des Bootcode-Servers 90 aufweisen.
  • Dementsprechend ist das DPS 120 gemäß der Ausführungsform aus 2 ein Teil eines verteilten Datenverarbeitungssystems (DDPS) 100. Das DPS 120 und der Bootcode-Server 90 können miteinander unter Verwendung eines geeigneten Ansatzes oder einer geeigneten Kombination von Ansätzen kommunizieren, einschließlich über ein Weitbereichsnetz (WAN) 110 in der Art des Internets, über ein lokales Netz (LAN) usw. Der Bootcode-Server 90 kann als „fern“ bezeichnet werden, weil er sich außerhalb des DPS 120 befindet. Nichtsdestoweniger können sich der Bootcode-Server 90 und das DPS 120 in derselben Anlage befinden. Beispielsweise kann ein DDPS einen Bootcode-Server und hunderte von Client-Vorrichtungen in der Art des DPS 120 aufweisen, die in einem Datenzentrum zusammenarbeiten. Alternativ können sich eine oder mehrere der Client-Vorrichtungen in einem großen Abstand vom Bootcode-Server befinden.
  • Überdies zeigt die Ausführungsform aus 2 auch, dass das DPS 120 kein TPM aufweisen muss und dass die vertrauenswürdige MBM-Messung 46 stattdessen an einer anderen Stelle gespeichert werden kann, beispielsweise im langsamen NVM 136. Beispielsweise kann das vorläufige Bootcode-Modul 140 der Unified-Extensible-Firmware-Interface(UEFI)-Spezifikation folgen und kann das vorläufige Bootcode-Modul 140 die MBM-Messung 46 im geschützten Speicher im langsamen NVM 136 speichern. Beispielsweise kann das vorläufige Bootcode-Modul 140 geschützte UEFI-Variablen für spezielle Zwecke verwenden, um die MBM-Messung 46 und andere geschützte Datenelemente zu speichern. Zusätzlich können Informationen über UEFI und den Schutz von UEFI-Variablen in der UEFI-Spezifikation gefunden werden, die im Internet bei www.uefi.org--specifications gefunden werden kann, wobei die Version 2.6 bei www.uefi.org--sites--default--files--resources--UEFI%20Spec%202_6%20Errata%20A%20final.pdf verfügbar ist.
  • 3 präsentiert ein Flussdiagramm einer als Beispiel dienenden Ausführungsform eines Prozesses zur Verwendung des schnellen NVM 32 und eines verhältnismäßig großen langsamen NVM 36 zum Ermöglichen eines schnellen Bootens. Der Prozess aus 3 entspricht dem DPS 20 in 1, wobei der langsame NVM 36 in 1 größer als der langsame NVM 136 in 2 ist, weil der langsame NVM 36 groß genug ist, um eine Kopie eines Haupt-Bootcode-Moduls aufzunehmen, der langsame NVM jedoch keine Kopie eines Haupt-Bootcode-Moduls aufnehmen muss.
  • Das DPS 20 kann den Prozess aus 3 beispielsweise ansprechend darauf, dass es eingeschaltet oder zurückgesetzt wird, ausführen. Wie in Block 210 gezeigt ist, beginnt der Prozess damit, dass der Prozessor 22 das vorläufige Bootcode-Modul 40 verwendet, um den Boot-Prozess einzuleiten. Beispielsweise kann der Prozessor 22 XIP verwenden, um mit der Ausführung des vorläufigen Bootcode-Moduls 40 zu beginnen, und kann der Prozessor 22 dann zur Verwendung von Cache-as-RAM übergehen, um das vorläufige Bootcode-Modul 40 auszuführen.
  • Wie in Block 212 dargestellt ist, kann das vorläufige Bootcode-Modul 40 den RAM 30 entdecken und initialisieren. Beispielsweise kann das vorläufige Bootcode-Modul 40 Speicherinitialisierungs-Referenzcode (MRC) aufweisen und kann das vorläufige Bootcode-Modul 40 den MRC zur Initialisierung des RAM 30 verwenden. Das vorläufige Bootcode-Modul 40 kann auch eine frühe Chipsatzinitialisierung ausführen. Beispielsweise kann das vorläufige Bootcode-Modul 40, wie in Block 214 dargestellt ist, das TPM 48 entdecken.
  • Wie in Block 220 dargestellt ist, kann das vorläufige Bootcode-Modul 40 dann feststellen, ob das DPS 20 jemals zuvor gebootet hat. Falls dies das erste Booten für das DPS 20 ist, kann das vorläufige Bootcode-Modul 40 verschiedene Schritte unternehmen, um das DPS 20 zu konfigurieren. Für die Zwecke dieser Offenbarung können diese Schritte als „anfänglicher Boot-Prozess“ oder „Konfigurations-Boot-Prozess“ bezeichnet werden. Beispielsweise kann das vorläufige Bootcode-Modul 40, wie in Block 222 dargestellt ist, das Haupt-Bootcode-Modul 42 in den RAM 30 dekomprimieren und kann das vorläufige Bootcode-Modul 40 dann das dekomprimierte Haupt-Bootcode-Modul messen, wie in Block 224 dargestellt ist. Beispielsweise kann das vorläufige Bootcode-Modul 40 einen 32-Byte-Hash des Bilds berechnen. Wie in Block 226 dargestellt ist, kann das vorläufige Bootcode-Modul 40 auch das dekomprimierte Haupt-Bootcode-Modul 42 im schnellen NVM 32 speichern, um dadurch das schnelle MBM 43 zu erzeugen. Insbesondere kann, wie vorstehend angegeben wurde, das vorläufige Bootcode-Modul 40 das schnelle MBM 43 in das geschützte Gebiet 34 laden. Weitere Einzelheiten zur Technologie zum Schutz vor einem nicht autorisierten Zugriff auf das geschützte Gebiet 34 werden nachstehend bereitgestellt. Auch kann das vorläufige Bootcode-Modul 40, wie in Block 228 dargestellt ist, den Konfigurations-Boot-Prozess durch Speichern der MBM-Messung 46 in einem vertrauenswürdigen nichtflüchtigen Speicher abschließen. Beispielsweise kann das vorläufige Bootcode-Modul 40 die MBM-Messung 46 im TMP 48 speichern. Alternativ kann das vorläufige Bootcode-Modul 40 die MBM-Messung 46 in einem proprietären nichtflüchtigen Speicher speichern.
  • Wie in Block 230 dargestellt ist, kann das vorläufige Bootcode-Modul 40 dann die Ausführung durch Übertragen der Steuerung auf das Bild des Haupt-Bootcode-Moduls 42 im RAM 30 abschließen. Der Prozess aus 3 kann dann enden, wobei das Haupt-Bootcode-Modul 42 alle zusätzlichen Schritte ausführt, die zur Vorbereitung des DPS 20 für das Booten zum OS 80 erforderlich sind.
  • Falls jedoch, wie wiederum mit Bezug auf Block 220 bemerkt sei, das vorläufige Bootcode-Modul 40 feststellt, dass das DPS 20 nicht zum ersten Mal bootet, kann das vorläufige Bootcode-Modul 40 dann feststellen, ob das schnelle MBM 43 als schlecht markiert wurde, wie in Block 240 dargestellt ist und nachstehend in weiteren Einzelheiten beschrieben wird. Falls das schnelle MBM 43 nicht als schlecht markiert wurde, kann das vorläufige Bootcode-Modul 40 das schnelle MBM 43 aus dem schnellen NVM 32 in den RAM 30 kopieren, wie in Block 242 dargestellt ist. Wie in Block 244 dargestellt ist, kann das vorläufige Bootcode-Modul 40 dann die Kopie des schnellen MBM 43 im RAM 30 messen. Diese Messung kann als aktuelle MBM-Messung bezeichnet werden. Alternativ kann das vorläufige Bootcode-Modul 40 das schnelle MBM 43 messen, während es gelesen wird. Auch kann das vorläufige Bootcode-Modul 40, wie in Block 246 dargestellt ist, die vertrauenswürdige MBM-Messung 46 aus dem TPM 48 abrufen. Wie in Block 250 dargestellt ist, kann das vorläufige Bootcode-Modul 40 dann die aktuelle MBM-Messung und die vertrauenswürdige MBM-Messung 46 verwenden, um festzustellen, ob das schnelle MBM 43 seine Integrität verloren hat. Beispielsweise können die Messungen infolge einer Manipulation, infolge einer oder mehrerer fehlerhafter Speicherzellen usw. nicht übereinstimmen. Falls das schnelle MBM 43 eine gute Integrität hat, kann das vorläufige Bootcode-Modul 40 dann die Ausführung beenden, indem es die Steuerung auf das Bild des schnellen MBM 43 im RAM 30 überträgt, wie in Block 252 dargestellt ist. Der Prozess aus 3 kann dann enden, wobei das schnelle MBM 43 alle zusätzlichen Schritte ausführt, die für das Vorbereiten des DPS 20 für das Booten zum OS 80 erforderlich sind. Für die Zwecke dieser Offenbarung können die Schritte, die ein vorläufiges Bootcode-Modul ausführt, wenn das schnelle MBM nicht als schlecht markiert wurde und das schnelle MBM eine gute Integrität aufweist, als „regulärer Boot-Prozess“ oder „typischer Boot-Prozess“ bezeichnet werden.
  • Falls jedoch, wie wiederum mit Bezug auf Block 250 bemerkt sei, das vorläufige Bootcode-Modul 40 feststellt, dass das schnelle MBM 43 beeinträchtigt wurde, kann das vorläufige Bootcode-Modul 40 das schnelle MBM 43 als schlecht markieren, wie in Block 254 dargestellt ist. Für die Zwecke dieser Offenbarung können die Operationen zum Wiederherstellen von einem beeinträchtigten schnellen MBM gemeinsam als „Wiederherstellungs-Boot-Prozess“ bezeichnet werden. Das vorläufige Bootcode-Modul 40 kann eine geeignete Technik verwenden, um das schnelle MBM 43 als schlecht zu markieren. Beispielsweise kann das vorläufige Bootcode-Modul 40 eine spezielle UEFI-Variable als ein Hinweiszeichen verwenden, um den Ausführungsweg zu informieren, wenn das Rücksetzen auftritt. Wie in Block 256 dargestellt ist, kann das vorläufige Bootcode-Modul 40 dann einen Rücksetzvorgang ausführen, wodurch der Prozess veranlasst wird, über den Seitenverbinder A zu Block 210 zurückzukehren.
  • Das vorläufige Bootcode-Modul 40 kann dann die Schritte 210 - 220 und 240 ausführen, wie vorstehend angegeben wurde. Nun kann das vorläufige Bootcode-Modul 40 in Block 240 feststellen, dass das schnelle MBM 43 als schlecht markiert wurde. Folglich kann der Prozess in Block 222 fortgesetzt werden, wobei das vorläufige Bootcode-Modul 40 eine frische Kopie des Haupt-Bootcode-Moduls 42 vom langsamen NVM 36 erhält. Zum Abschließen des Wiederherstellungs-Boot-Prozesses kann das vorläufige Bootcode-Modul 40 dann dieses Haupt-Bootcode-Modul 42 verwenden, um das Bild im schnellen NVM 32 wiederaufzufrischen, wie vorstehend mit Bezug auf die Blöcke 222 - 228 beschrieben wurde. Allerdings kann das vorläufige Bootcode-Modul gemäß einigen Ausführungsformen während des Wiederherstellungs-Boot-Prozesses die Schritte zum Messen des Haupt-Bootcode-Moduls überspringen (224) und diese Messung speichern (228) .
  • Während eines typischen Boot-Prozesses mit einer vertrauenswürdigen Kopie des Haupt-Bootcode-Moduls 42 im schnellen NVM 32 kann das DPS 20 das schnelle MBM 43 viel schneller in den RAM laden als dies möglich wäre, falls der gesamte Bootcode aus dem langsamen NVM 36 kommen müsste. Die folgende Tabelle zeigt einige als Beispiel dienende genäherte Ladezeiten für vier verschiedene Systeme, wobei jedes System ein Haupt-Bootcode-Modul (oder einen vergleichbaren Abschnitt eines monolithischen Bootcode-Moduls) aufweist, das 7 MB groß ist.
    Lesegeschwindigkeit Ladezeit
    Langsamer NVM @ 9,375 MB/s 746 ms
    Langsamer NVM @ 35 MB/s 200 ms
    Schneller NVM @ 1000 MB/s 7 ms
    Schneller NVM @ 1600 MB/s 4,3 ms
  • Demgemäß ist der schnelle NVM bei 1000 MB/s 28 Mal schneller als der langsame NVM bei 35 MB/s. Auch ist der schnelle NVM bei 1600 MB/s 173 Mal schneller als der langsame NVM bei 9,375 MB/s. Folglich kann ein DPS, welches den schnellen NVM bei 1000 MB/s verwendet, das Laden von 7 MB Bootcode in 7 ms, verglichen mit 200 ms für ein DPS, welches den langsamen NVM bei 35 MB/s verwendet, beenden. Überdies kann ein DPS, welches den schnellen NVM bei 1600 MB/s verwendet, dies in 4,3 ms, verglichen mit 746 ms für ein DPS, welches den langsamen NVM bei 9,375 MB/s verwendet, beenden. Demgemäß kann ein DPS bei den vier vorstehend erläuterten Beispielen minimal (200 - 7 =) 193 ms und maximal (746 - 4,3 =) 741,7 ms einsparen. Verschiedene Niveaus der relativen Verbesserung können in verschiedenen Ausführungsformen verwirklicht werden.
  • Diese Offenbarung kann Begriffe in der Art eines „bestimmten Boot-Prozesses“, eines „einzigen Boot-Prozesses“ und dergleichen verwenden. Diese Begriffe sollen sich auf Boot-Vorgänge beziehen, die ausgeführt werden, um ein OS zu booten, nachdem das DPS eingeschaltet oder zurückgesetzt wurde, um den Boot-Prozess einzuleiten. Beispielsweise kann dieser bestimmte Boot-Prozess in Bezug auf 3 für das erste Booten eines DPS in Block 210 beginnen und in Block 230 enden. Ähnlich kann ein einziger Boot-Prozess für ein reguläres Booten oder ein typisches Booten in Block 210 beginnen und in Block 252 enden. Ein einziger Boot-Prozess kann jedoch einen eingefügten Rücksetz- und Wiederherstellungsvorgang aufweisen. Beispielsweise kann ein einziger Boot-Prozess, wobei ein beeinträchtigtes schnelles MBM auftritt, in Block 210 beginnen, über Block 256 zu Block 210 zurück laufen und in Block 230 enden.
  • Die 4A und 4B zeigen ein Flussdiagramm einer als Beispiel dienenden Ausführungsform eines Prozesses zur Verwendung des schnellen NVM 32 und eines verhältnismäßig kleinen langsamen NVM 136 zum Ermöglichen eines schnellen Bootens. Der Prozess aus den 4A und 4B entspricht dem DPS 120 in 2, wobei der langsame NVM 136 in 2 kleiner als der langsame NVM 36 in 1 ist, weil der langsame NVM 136 keine Kopie eines Haupt-Bootcode-Moduls enthalten muss. Stattdessen holt das DPS 120, wie nachstehend in weiteren Einzelheiten beschrieben wird, wenn es eine Kopie eines Haupt-Bootcode-Moduls benötigt, diese Kopie entweder vom schnellen NVM 32 oder von einer anderen Quelle als dem langsamen NVM 136.
  • Das DPS 120 kann den Prozess aus den 4A und 4B beispielsweise ansprechend darauf, dass es eingeschaltet oder zurückgesetzt wird, ausführen. Wie in Block 310 gezeigt ist, beginnt der Prozess damit, dass der Prozessor 22 das vorläufige Bootcode-Modul 140 verwendet, um den Boot-Prozess einzuleiten. Wenn Vorgänge in der Art jener, die vorstehend mit Bezug auf 3 beschrieben wurden, ausgeführt werden, kann das vorläufige Bootcode-Modul 140 Techniken verwenden, die jenen gleichen oder ähneln, die vorstehend in Bezug auf das vorläufige Bootcode-Modul 40 beschrieben wurden. Beispielsweise kann der Prozessor 22 XIP verwenden, um mit der Ausführung des vorläufigen Bootcode-Moduls 140 zu beginnen, und kann der Prozessor 22 dann zur Verwendung von Cache-as-RAM übergehen, um das vorläufige Bootcode-Modul 140 auszuführen.
  • Wie in Block 312 gezeigt ist, kann das vorläufige Bootcode-Modul 140 den RAM 30 entdecken und initialisieren. Beispielsweise kann das vorläufige Bootcode-Modul 140 einen MRC aufweisen, den das vorläufige Bootcode-Modul 140 verwendet, um den RAM 30 zu initialisieren. Auch kann das vorläufige Bootcode-Modul 140 eine frühe Chipsatzinitialisierung ausführen. Wie in Block 320 gezeigt ist, kann das vorläufige Bootcode-Modul 140 dann feststellen, ob der schnelle NVM 32 ein Haupt-Bootcode-Modul (beispielsweise das schnelle MBM 43) enthält. Falls das Haupt-Bootcode-Modul im schnellen NVM 32 fehlt, kann das vorläufige Bootcode-Modul das Haupt-Bootcode-Modul von einer vertrauenswürdigen Quelle erhalten, wie in Block 322 dargestellt ist. Beispielsweise kann das vorläufige Bootcode-Modul 140 eine Kopie des Haupt-Bootcode-Moduls 42 vom Bootcode-Server 90 erhalten. Alternativ kann das vorläufige Bootcode-Modul 140 das Haupt-Bootcode-Modul von einem mit dem DPS 120 verbundenen Flash-Laufwerk erhalten. Beispielsweise kann das DPS 120 den Benutzer auffordern, ein Flash-Laufwerk mit einem Haupt-Bootcode-Modul in einen Universal-Serial-Bus(USB)-Port des DPS 120 einzuführen.
  • Quellen in der Art des Flash-Laufwerks und des fernen Servers 90 können infolge einer digitalen Signatur oder einer anderen geeigneten Technik als vertrauenswürdig angesehen werden. Beispielsweise kann der Originalgerätehersteller (OEM), der das DPS 12 zusammengesetzt hat, das Haupt-Bootcode-Modul 42 digital signieren, bevor das Haupt-Bootcode-Modul 42 im fernen Server 90 oder im Flash-Laufwerk gespeichert wurde. Dementsprechend kann das vorläufige Bootcode-Modul 140 diese Signatur verwenden, um zu verifizieren, dass das Haupt-Bootcode-Modul 42 authentisch ist, wenn das vorläufige Bootcode-Modul 42 das Haupt-Bootcode-Modul 42 vom fernen Server 90 oder vom Flash-Laufwerk abruft.
  • Alternativ kann das vorläufige Bootcode-Modul das Haupt-Bootcode-Modul von einer anderen geeigneten Quelle erhalten. Wie in Block 324 dargestellt ist, kann das vorläufige Bootcode-Modul 140 dann eine Kopie des Haupt-Bootcode-Moduls im geschützten Gebiet 43 im schnellen NVM 32 speichern, um dadurch das schnelle MBM 43 zu erzeugen.
  • Falls allerdings in Block 320 das vorläufige Bootcode-Modul 140 feststellt, dass das schnelle NVM 32 bereits das schnelle MBM 43 enthält, kann das vorläufige Bootcode-Modul 140 dann feststellen, ob das schnelle MBM 43 als schlecht markiert wurde, wie in Block 330 dargestellt ist. Falls das schnelle MBM 43 als schlecht markiert wurde, kann das vorläufige Bootcode-Modul eine frische Kopie des Haupt-Bootcode-Moduls von einer vertrauenswürdigen Quelle erhalten und diese Kopie in den schnellen NVM 32 speichern, wie in den Blöcken 322 und 324 dargestellt ist.
  • Der Prozess kann dann von Block 324 zu Block 332 gehen, worin gezeigt ist, dass das vorläufige Bootcode-Modul 140 das schnelle MBM 43 in den RAM 30 lädt, wie in Block 332 dargestellt ist. Überdies kann, wie in Block 334 dargestellt ist, das vorläufige Bootcode-Modul dann eine Messung 44 des schnellen MBM 43 berechnen. Diese Messung kann als aktuelle MBM-Messung bezeichnet werden.
  • Wie in Block 340 dargestellt ist, kann das vorläufige Bootcode-Modul 140 dann feststellen, ob das DPS 120 jemals zuvor gebootet hat. Falls dies nicht das erste Booten für das DPS 120 ist, kann der Prozess dann durch den Seitenverbinder A zu 4B übergehen. Falls dies das erste Booten für das DPS 120 ist, kann das vorläufige Bootcode-Modul 140 die MBM-Messung 46 im langsamen NVM 136 speichern, wie in Block 350 dargestellt ist. Der Prozess kann dann durch den Seitenverbinder B zu 4B übergehen. Nach dem Durchlaufen des Seitenverbinders B kann das vorläufige Bootcode-Modul 140 infolge einer positiven Erst-Boot-Feststellung dann die Ausführung beenden, indem es die Steuerung auf das Bild des schnellen MBM 43 im RAM 30 überträgt. Der Prozess aus 4B kann dann enden, wobei das schnelle MBM 43 alle zusätzlichen Schritte ausführt, die für das Vorbereiten des DPS 120 für das Booten zum OS 80 erforderlich sind.
  • Nachdem der Seitenverbinder A infolge einer negativen Erst-Boot-Feststellung durchlaufen wurde, kann das vorläufige Bootcode-Modul 140 dann jedoch die vertrauenswürdige MBM-Messung 46 aus dem langsamen NVM 136 abrufen, wie in Block 342 dargestellt ist. Wie in Block 360 dargestellt ist, kann das vorläufige Bootcode-Modul 140 dann die aktuelle MBM-Messung und die vertrauenswürdige MBM-Messung 46 verwenden, um festzustellen, ob das schnelle MBM 43 beeinträchtigt wurde. Falls das schnelle MBM 43 nicht beeinträchtigt wurde, kann das vorläufige Bootcode-Modul 140 dann die Ausführung beenden, indem die Kontrolle auf das Bild des schnellen MBM 43 im RAM 30 übertragen wird, wie in Block 362 dargestellt ist. Der Prozess aus 4B kann dann enden, wobei das schnelle MBM 43 alle zusätzlichen Schritte ausführt, die für das Vorbereiten des DPS 20 für das Booten zum OS 80 erforderlich sind.
  • Falls jedoch, wie wiederum mit Bezug auf Block 360 bemerkt sei, das vorläufige Bootcode-Modul 140 feststellt, dass das schnelle MBM 43 beeinträchtigt wurde, kann das vorläufige Bootcode-Modul 140 das schnelle MBM 43 als schlecht markieren, wie in Block 364 dargestellt ist. Wie in Block 366 dargestellt ist, kann das vorläufige Bootcode-Modul 140 dann einen Rücksetzvorgang ausführen, wodurch der Prozess veranlasst wird, über den Seitenverbinder C zu Block 310 zurückzukehren.
  • Das vorläufige Bootcode-Modul 140 kann dann die Schritte 310 - 320 und 330 ausführen, wie vorstehend angegeben wurde. In Block 330 stellt das vorläufige Bootcode-Modul 40 jedoch fest, dass das schnelle MBM 43 als schlecht markiert wurde. Folglich wird der Prozess in Block 332 fortgesetzt, wobei das vorläufige Bootcode-Modul 140 eine frische Kopie des Haupt-Bootcode-Moduls 42 von einer vertrauenswürdigen Quelle erhält, wie vorstehend angegeben wurde.
  • Auch kann, wie vorstehend angegeben wurde, ein schnelles MBM in einem geschützten Gebiet eines schnellen NVM gespeichert werden. Beispielsweise können das DPS 20 und das DPS 120 eine Technologie zum Schützen des geschützten Gebiets 34 vor einem nicht autorisierten Zugriff aufweisen. Beispielsweise kann das DPS 20 (und das DPS 120) nur erlauben, dass auf das geschützte Gebiet 34 von einer vertrauenswürdigen Ausführungsumgebung (TEE) zugegriffen wird. Zusätzlich kann die Sicherheitstechnologie verhindern, dass Software außerhalb der TEE auf Daten in der TEE zugreift. Eine TEE kann demgemäß eine isolierte Ausführungsumgebung bereitstellen. Gemäß einer Ausführungsform kann eine Vorrichtung zum Erzeugen und Verwenden einer TEE die von Intel Corporation unter dem Namen oder Warenzeichen „Intel® Software Guard Extensions“ oder „Intel® SGX“ bereitgestellte Technologie verwenden. Gemäß einer anderen Ausführungsform kann eine Vorrichtung zum Erzeugen und Verwenden einer TEE die von ARM Ltd. unter dem Namen oder Warenzeichen „ARM TrustZone“ bereitgestellte Technologie verwenden. Gemäß anderen Ausführungsformen können Vorrichtungen alternative Technologien zum Erzeugen und Verwenden von TEE verwenden. Gemäß den Ausführungsformen aus den 1 und 2 ist das geschützte Gebiet 34 ein zweckgebundener, manipulationssicherer Abschnitt des schnellen NVM 32, worauf nur durch Software zugegriffen werden kann, die in der TEE der Plattform ausgeführt wird. Das geschützte Gebiet 34 kann während des Herstellungsprozesses mit geeigneten Sicherheitsrichtlinien versehen werden. Gemäß anderen Ausführungsformen können DPS andere Techniken verwenden, um geschützte Gebiete des schnellen NVM vor einem nicht autorisierten Zugriff zu schützen.
  • Wie beschrieben wurde, kann der Bootcode für ein DPS in ein vorläufiges Bootcode-Modul und ein Haupt-Bootcode-Modul zerlegt werden und kann das Haupt-Bootcode-Modul im schnellen NVM gespeichert werden, um einen Boot-Prozess zu ermöglichen, der erheblich schneller ist als der Boot-Prozess eines DPS, das den gesamten Bootcode im langsamen NVM speichert. Überdies kann es kostengünstiger sein, die Hauptplatine für ein DPS herzustellen, das unter Verwendung des schnellen NVM bootet, als eine Hauptplatine, die einen größeren langsamen NVM benötigt, um den gesamten Bootcode aufzunehmen. Mit anderen Worten kann die Hauptplatine für das DPS, das unter Verwendung des schnellen NVM bootet, von geringeren Materialkosten (BOM) - zusätzlich zu verringerten Boot-Zeiten - profitieren.
  • Gemäß einigen Ausführungsformen kann ein schnelles MBM der Vor-OS-Firmware erlauben, Audio-Streams abzuspielen, Graphikbilder zu präsentieren oder zu zeigen und andere hochentwickelte Ausgabefähigkeiten während des anfänglichen Bootens des DPS bereitzustellen. Das anfängliche Booten kann auch als Trainings-Booten bezeichnet werden. Daten für die hochentwickelten Ausgabefähigkeiten können auch im schnellen NVM gespeichert werden. Diese Ausgabefähigkeiten können Benutzerschnittstellenanforderungen in Zusammenhang mit bestimmten Anwendungen in der Art von Anwendungen für autonome Fahrzeuge und andere Fahrzeugsysteme erfüllen.
  • Zusätzlich kann ein DPS einige oder alle hier beschriebenen Vorteile verwirklichen, während auch ein gegenüber einem herkömmlichen DPS verringerter Energieverbrauch verwirklicht wird.
  • Angesichts der hier beschriebenen und erläuterten Prinzipien und als Beispiel dienenden Ausführungsformen wird erkannt werden, dass die erläuterten Ausführungsformen in de Anordnung und den Einzelheiten modifiziert werden können, ohne von diesen Prinzipien abzuweichen. Auch sollen, wenngleich Ausdrücke in der Art von „eine Ausführungsform“, „eine einzige Ausführungsform“, „eine andere Ausführungsform“ oder dergleichen hier verwendet werden, diese Begriffe allgemein Möglichkeiten und Ausführungsformen bezeichnen und die Erfindung nicht auf bestimmte Konfigurationen von Ausführungsformen einschränkend verstanden werden. Hier können sich diese Begriffe auf dieselbe Ausführungsform oder auf verschiedene Ausführungsformen beziehen, und diese Ausführungsformen sind zu anderen Ausführungsformen kombinierbar.
  • Beispielsweise kann ein TPM zur Ausführungsform aus 2 hinzugefügt werden, und kann eine Steuerlogik zum Erhalten eines Haupt-Bootcode-Moduls von einer externen Quelle zum vorläufigen Bootcode-Modul gemäß der Ausführungsform aus 1 hinzugefügt werden. Auch betreffen Block 250 aus 3 und Block 360 aus 4B Feststellungen, ob ein schnelles MBM beeinträchtigt wurde. Diese Operationen können bei einer Ausführungsform verwendet werden, die einen nicht sperrbaren schnellen NVM aufweist, in der Art einer Ausführungsform, bei der der schnelle NVM kein geschütztes Gebiet aufweist. Gemäß anderen Ausführungsformen können andere Techniken zusätzlich oder an Stelle der vorstehend beschriebenen Operationen verwendet werden, um Manipulationen zu verhindern oder zu erkennen. Beispielsweise kann ein DPS die von Intel Corporation unter den Namen oder Warenzeichen „Intel® Platform Trust Technology (PTT)“ und „Intel® Platform Protection Technology with Boot Guard“ bereitgestellten Sicherheitstechnologien aufweisen. Die Boot-Guard-Technologie kann für ein sicheres Booten auf der Grundlage eines authentifizierten Code-Moduls (ACM) sorgen. Das ACM kann eine oder mehrere Integritätsprüfungen ausführen, um zu verifizieren, das bekannte und vertrauenswürdige Firmware die Plattform bootet. Eine andere Ausführungsform kann einen schnellen NVM aufweisen, der sperrbar ist, um eine Manipulation des Boot-Abbilds zu verhindern. Das vorläufige Bootcode-Modul kann daher die Integritätsprüfung fortlassen.
  • Auch kann diese Offenbarung auf Befehle, Funktionen, Prozeduren, Datenstrukturen, Anwendungsprogramme, Mikrocode, Konfigurationseinstellungen und andere Datenarten Bezug nehmen. Wie vorstehend beschrieben wurde, kann, wenn auf die Daten durch eine Maschine oder Vorrichtung zugegriffen wird, die Maschine oder Vorrichtung mit dem Ausführen von Aufgaben, Definieren abstrakter Datentypen oder Hardware-Kontexte niedriger Ebene und/oder Ausführen anderer Operationen reagieren. Beispielsweise können ein Datenspeicher, RAM und/oder Flash-Speicher verschiedene Befehlssätze aufweisen, die, wenn sie ausgeführt werden, verschiedene Operationen ausführen. Diese Befehlssätze können allgemein als Software bezeichnet werden. Überdies kann Software, die während des Boot-Prozesses verwendet wird, als Firmware bezeichnet werden, wie vorstehend angegeben wurde. Software, die im nichtflüchtigen Speicher gespeichert ist, kann auch als Firmware bezeichnet werden. Zusätzlich können Begriffe in der Art von „Programm“ und „Modul“ allgemein verwendet werden, um einen breiten Bereich von Softwarekonstrukten abzudecken, einschließlich Anwendungen, Routinen, Treiber, Unterprogramme, Prozesse und anderer Typen von Softwarekomponenten. Eine beliebige geeignete Betriebsumgebung und Programmiersprache (oder eine Kombination von Betriebsumgebungen und Programmiersprachen) kann verwendet werden, um hier beschriebene Softwarekomponenten zu implementieren.
  • Alternative Ausführungsformen weisen durch eine Maschine zugängliche Medien auf, die Befehle oder Steuerlogik codieren, um die hier beschriebenen Operationen auszuführen. Diese Ausführungsformen können auch als Programmprodukte bezeichnet werden. Diese durch eine Maschine zugänglichen Medien können ohne Einschränkung physische Speichermedien in der Art von Magnetplatten, optischen Platten, RAM, ROM usw. sowie Prozessoren, Steuereinrichtungen und andere Komponenten, die RAM, ROM und/oder andere Speichereinrichtungen aufweisen, einschließen. Für die Zwecke dieser Offenbarung kann der Begriff „ROM“ verwendet werden, um allgemein auf nichtflüchtige Speichervorrichtungen in der Art eines löschbaren, programmierbaren ROM (EPROM), eines elektrisch löschbaren, programmierbaren ROM (EEPROM), eines Flash-ROM, eines Flash-Speichers usw. Bezug zu nehmen.
  • Es sei auch bemerkt, dass die hier dargestellten Hardware- und Softwarekomponenten funktionelle Elemente repräsentieren, die einigermaßen in sich selbst eingeschlossen sind, so dass sie jeweils im Wesentlichen unabhängig von den anderen entworfen, konstruiert oder aktualisiert werden können. Gemäß alternativen Ausführungsformen können viele der Komponenten als Hardware, Software oder Kombinationen von Hardware und Software implementiert werden, um die hier beschriebene und erläuterte Funktionalität bereitzustellen. Gemäß einige Ausführungsformen kann ein Teil der Steuerlogik oder die gesamte Steuerlogik zur Implementationen der beschriebenen Operationen in Hardwarelogik implementiert werden (beispielsweise als Teil eines integrierten Schaltungsschips, eines programmierbaren Gate-Arrays (PGA), einer anwendungsspezifischen integrierten Schaltung (ASIC) usw.).
  • Auch sei bemerkt, dass jedes bestimmte Softwaremodul mehr als eine Komponente aufweisen kann. Beispielsweise kann ein Haupt-Bootcode-Modul zwei oder mehr Komponenten aufweisen und können diese Komponenten zusammenarbeiten, um die Operationen des Haupt-Bootcode-Moduls, wie das Booten zu einem OS, abzuschließen.
  • Ähnlich können Befehle für mehrere Komponenten in einem nichtflüchtigen für eine Maschine zugänglichen Medium gespeichert werden. Gemäß zumindest einer anderen Ausführungsform können zwei oder mehr nichtflüchtige für eine Maschine zugängliche Medien für das Speichern der Befehle für die relevanten Komponenten verwendet werden Beispielsweise können Befehle für eine Komponente in einem Medium gespeichert werden und Befehle einer anderen Komponente in einem anderen Medium gespeichert werden. Alternativ kann ein Teil der Befehle für eine Komponente in einem Medium gespeichert werden und kann der Rest der Befehle für diese Komponente (sowie Befehle für andere Komponenten) in einem oder mehreren anderen Medien gespeichert werden. Befehle können auch in einer verteilten Umgebung verwendet werden und lokal und/oder fern für den Zugriff durch Einzel- oder Mehrprozessormaschinen gespeichert werden.
  • Ähnlich befinden sich Anwendungen und/oder andere Daten, die vorstehend gemäß einer als Beispiel dienenden Ausführungsform als sich auf einer bestimmten Vorrichtung befindend beschrieben wurden, gemäß anderen Ausführungsformen auf einer oder mehreren anderen Vorrichtungen. Überdies können beliebige Rechenoperationen, die vorstehend gemäß einer als Beisiel dienenden Ausführungsform als auf einer bestimmten Vorrichtung ausgeführt beschrieben wurden, gemäß anderen Ausführungsformen durch eine oder mehrere andere Vorrichtungen ausgeführt werden.
  • Die vorliegenden Lehren können vorteilhaft in vielen verschiedenen Arten von Datenverarbeitungssystemen verwendet werden. Als Beispiel dienende Datenverarbeitungssysteme können ohne Einschränkung Systeme auf einem Chip (SOC), tragbare Vorrichtungen, handgehaltene Vorrichtungen, Smartphones, Telefone, Unterhaltungsvorrichtungen in der Art von Audiovorrichtungen, Videovorrichtungen, Audio-/Videovorrichtungen (beispielsweise Fernsehgeräte und Settop-Boxen), Fahrzeugverarbeitungssysteme, persönliche digitale Assistenten (PDA), Tabletcomputer, Laptopcomputer, tragbare Computer, Personalcomputer (PC), Workstations, Server, Client-Server-Systeme, verteilte Rechensysteme, Supercomputer, Hochleistungs-Rechensysteme, Rechencluster, Großrechner, Minicomputer und andere Vorrichtungen zum Verarbeiten oder Übertragen von Informationen einschließen. Dementsprechen solten, sofern der Zusammenhang nicht explizit etwas anderes spezifiziert oder fordert, Bezüge auf einen bestimmten Typ eines Datenverarbeitungssystems (beispielsweise eines PC) auch als andere Typen von Datenverarbeitungssystemen einschließend verstanden werden. Auch brauchen, sofern nichts anderes ausdrücklich spezifiziert wird, Komponenten, die als miteinander gekoppelt, in Kommunikation miteinander stehend, aufeinander ansprechend oder dergleichen beschrieben werden, nicht in kontinuierlicher Kommunikation miteinander stehen und brauchen nicht direkt miteinander gekoppelt zu sein. Ebenso können, wenn eine Komponente als Daten von einer anderen Komponente empfangend oder zu dieser sendend beschrieben wird, diese Daten durch eine oder mehrere Zwischenkomponenten gesendet oder empfangen werden, sofern nichts anderes ausdrücklich spezifiziert wird. Zusätzlich können einige Komponenten des Datenverarbeitungssystems als Adapterkarten mit Schnittstellen (beispielsweise einem Verbinder) zur Kommunikation mit einem Bus implementiert werden. Alternativ können Vorrichtungen oder Komponenten als eingebettete Steuereinrichtungen implementiert werden, die Komponenten in der Art programmierbarer oder nicht programmierbarer Logikvorrichtungen oder -arrays, ASIC, eingebetteter Computer, Smartcards und dergleichen verwenden. Für die Zwecke dieser Offenbarung schließt der Begriff „Bus“ Wege, die von mehr als zwei Vorrichtungen geteilt verwendet werden können, sowie Punkt-zu-Punkt-Wegen ein. Auch kann ein Prozessor für die Zwecke dieser Offenbarung auch als eine Verarbeitungseinheit, ein Verarbeitungselement, eine CPU usw. bezeichnet werden.
  • Wenngleich ein oder mehrere Beispielprozesse in Bezug auf bestimmte in einer bestimmten Sequenz ausgeführte Operationen beschrieben wurden, könnten auch zahlreiche Modifikationen auf diese Prozesse angewendet werden, um zahlreiche alternative Ausführungsformen der vorliegenden Erfindung abzuleiten. Beispielsweise können alternative Ausführungsformen Prozesse, die weniger als alle offenbarten Operationen verwenden, Prozesse, die zusätzliche Operationen verwenden, und Prozesse, bei denen die einzelnen hier offenbarten Operationen kombiniert, unterteilt, umgeordnet oder auf andere Weise geändert sind, einschließen.
  • Angesichts der breiten Vielzahl verwendbarer Permutationen, die leicht anhand der hier beschriebenen als Beispiel dienenden Ausführungsformen abgeleitet werden können, ist diese detaillierte Beschreibung nur als erläuternd vorgesehen und sollte nicht als den Abdeckungsbereich einschränkend ausgelegt werden.
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • Beispiel A1 ist ein DPS mit einer Technologie zum schnellen Booten. Das DPS umfasst einen Prozessor, einen flüchtigen RAM, der auf den Prozessor anspricht, einen langsamen NVM, der auf den Prozessor anspricht, einen schnellen NVM, der auf den Prozessor anspricht, ein vorläufiges Bootcode-Modul, das im langsamen NVM gespeichert ist, und ein Haupt-Bootcode-Modul, das im schnellen NVM gespeichert ist. Der schnelle NVM unterstützt eine Lesegeschwindigkeit, die höher als die maximale Lesegeschwindigkeit des langsamen NVM ist. Das vorläufige Bootcode-Modul ermöglicht es dem DPS, wenn es durch den Prozessor ausgeführt wird, das Haupt-Bootcode-Modul aus dem schnellen NVM in den RAM zu laden. Das Haupt-Bootcode-Modul ermöglicht es dem DPS, wenn es durch den Prozessor ausgeführt wird, zu einem OS zu booten.
  • Beispiel A2 ist ein DPS nach Beispiel A1, wobei der schnelle NVM eine durchschnittliche Lesegeschwindigkeit von wenigstens 200 Megabytes pro Sekunde (MB/s) unterstützt und die maximale Lesegeschwindigkeit des langsamen NVM kleiner als 200 MB/s ist.
  • Beispiel A3 ist ein DPS nach Beispiel A2, wobei die maximale Lesegeschwindigkeit des langsamen NVM kleiner als 40 MB/s ist.
  • Beispiel A4 ist ein DPS nach Beispiel A1, wobei das vorläufige Bootcode-Modul, wenn es ausgeführt wird, dem DPS ermöglicht, vor dem Booten des DPS zum OS automatisch festzustellen, ob das Haupt-Bootcode-Modul vom schnellen NVM eine gute Integrität aufweist. Beispiel A4 kann auch die Merkmale eines oder mehrerer der Beispiele A2 bis A3 aufweisen.
  • Beispiel A5 ist ein DPS nach Beispiel A4, welches ferner eine vertrauenswürdige MBM-Messung umfasst. Auch umfasst der Vorgang des automatischen Feststellens, ob das Haupt-Bootcode-Modul vom schnellen NVM eine gute Integrität aufweist, Folgendes: (a) Verwenden des Haupt-Bootcode-Moduls vom schnellen NVM, um eine aktuelle MBM-Messung zu berechnen, (b) Abrufen der vertrauenswürdigen MBM-Messung und (c) Feststellen, ob die aktuelle MBM-Messung mit der vertrauenswürdigen MBM-Messung übereinstimmt.
  • Beispiel A6 ist ein DPS nach Beispiel A1, wobei das vorläufige Bootcode-Modul, wenn es ausgeführt wird, dem DPS ermöglicht, Folgendes auszuführen: (a) automatisches Feststellen, ob das Haupt-Bootcode-Modul vom schnellen NVM eine gute Integrität aufweist, bevor das DPS zum OS gebootet wird, und (b) ansprechend auf eine Feststellung, dass das Haupt-Bootcode-Modul vom schnellen NVM keine gute Integrität aufweist, automatisches Verwenden eines Haupt-Bootcode-Moduls von einer vom schnellen NVM verschiedenen Speichervorrichtung, um das DPS zum OS zu booten. Beispiel A4 kann auch die Merkmale eines oder mehrerer der Beispiele A2 bis A5 aufweisen.
  • Beispiel A7 ist ein DPS nach Beispiel A6, wobei die vom schnellen NVM verschiedene Speichervorrichtung den langsamen NVM im DPS umfasst.
  • Beispiel A8 ist ein DPS nach Beispiel A6, wobei die vom schnellen NVM verschiedene Speichervorrichtung eine externe Speichervorrichtung umfasst.
  • Beispiel A9 ist ein DPS nach Beispiel A1, wobei das vorläufige Bootcode-Modul, wenn es ausgeführt wird, dem DPS ermöglicht, (a) vor der Verwendung des Haupt-Bootcode-Moduls zum Booten des DPS zum OS, das vorläufige Bootcode-Modul zur automatischen Feststellung, ob das Haupt-Bootcode-Modul aus dem schnellen NVM eine gute Integrität aufweist, zu verwenden, (b) ansprechend auf eine Feststellung, dass das Haupt-Bootcode-Modul aus dem schnellen NVM keine gute Integrität aufweist, ein Haupt-Bootcode-Modul automatisch aus einer vom schnellen NVM verschiedenen Speichervorrichtung abzurufen, und (c) das Haupt-Bootcode-Modul im schnellen NVM automatisch durch das Haupt-Bootcode-Modul aus der vom schnellen NVM verschiedenen Speichervorrichtung zu ersetzen. Beispiel A7 kann auch die Merkmale eines oder mehrerer der Beispiele A2 bis A8 aufweisen.
  • Beispiel A10 ist ein DPS nach Beispiel A9, wobei das vorläufige Bootcode-Modul, wenn es ausgeführt wird, dem DPS ermöglicht, das Bootcode-Modul aus der vom schnellen NVM verschiedenen Speichervorrichtung zu dekomprimieren, bevor das Haupt-Bootcode-Modul im schnellen NVM automatisch durch das Haupt-Bootcode-Modul aus der vom schnellen NVM verschiedenen Speichervorrichtung ersetzt wird.
  • Beispiel A11 ist ein DPS nach Beispiel A1, wobei das vorläufige Bootcode-Modul, wenn es ausgeführt wird, dem DPS ermöglicht, das Haupt-Bootcode-Modul während eines anfänglichen Boot-Prozesses für das DPS in einem geschützten Gebiet des schnellen NVM zu speichern. Auch umfasst der Vorgang des Ladens des Haupt-Bootcode-Moduls aus dem schnellen NVM in den RAM das Erhalten des Haupt-Bootcode-Moduls aus dem geschützten Gebiet des schnellen NVM. Beispiel A9 kann auch die Merkmale eines oder mehrerer der Beispiele A2 bis A10 aufweisen.
  • Beispiel A12 ist ein DPS nach Beispiel A11, wobei das vorläufige Bootcode-Modul, wenn es ausgeführt wird, dem DPS ermöglicht, (a) eine Messung des Haupt-Bootcode-Moduls während des anfänglichen Boot-Prozesses zu berechnen und (b) die Messung des Haupt-Bootcode-Moduls in einer vom schnellen NVM verschiedenen Speichervorrichtung während des anfänglichen Boot-Prozesses zu speichern.
  • Beispiel A13 ist ein DPS nach Beispiel A1, wobei (a) der Prozessor einen Cache umfasst, wobei zumindest ein Abschnitt davon als Cache-as-RAM arbeiten kann, (b) das vorläufige Bootcode-Modul einen ersten Abschnitt, um an Ort und Stelle auszuführen, und einen zweiten Abschnitt, um vom Cache-as-RAM auszuführen, umfasst und (c) der langsame NVM einen Flash-Speicher mit einer SPI umfasst. Beispiel A11 kann auch die Merkmale eines oder mehrerer der Beispiele A2 bis A12 aufweisen.
  • Beispiel A14 ist ein DPS nach Beispiel A1, wobei das vorläufige Bootcode-Modul einen MRC umfasst und das vorläufige Bootcode-Modul dafür ausgelegt ist, den MRC für das Initialisieren des RAM zu verwenden, bevor das Haupt-Bootcode-Modul aus dem schnellen NVM in den RAM geladen wird. Beispiel A12 kann auch die Merkmale eines oder mehrerer der Beispiele A2 bis A13 aufweisen.
  • Beispiel B1 ist ein DPS mit einer Technologie zum schnellen Booten. Das DPS umfasst einen Prozessor, einen flüchtigen RAM, der auf den Prozessor anspricht, einen langsamen NVM, der auf den Prozessor anspricht, einen schnellen NVM, der auf den Prozessor anspricht, und ein vorläufiges Bootcode-Modul, das im langsamen NVM gespeichert ist. Auch ermöglicht das vorläufige Bootcode-Modul, wenn es durch den Prozessor ausgeführt wird, dem DPS, ein Haupt-Bootcode-Modul während eines Konfigurations-Boot-Prozesses im schnellen NVM zu speichern. Auch ermöglicht das vorläufige Bootcode-Modul, wenn es durch den Prozessor ausgeführt wird, nachdem das Haupt-Bootcode-Modul im schnellen NVM gespeichert wurde, dem DPS, das Haupt-Bootcode-Modul aus dem schnellen NVM in den RAM zu laden.
  • Beispiel B2 ist ein DPS nach Beispiel B1, wobei das Haupt-Bootcode-Modul, wenn es ausgeführt wird, dem DPS ermöglicht, zu einem OS zu booten.
  • Beispiel B3 ist ein DPS nach Beispiel B1, wobei das vorläufige Bootcode-Modul, wenn es ausgeführt wird, dem DPS ermöglicht, ein schlechtes Haupt-Bootcode-Modul im schnellen NVM während eines Wiederherstellungs-Boot-Prozesses automatisch durch ein gutes Haupt-Bootcode-Modul zu ersetzen. Beispiel B3 kann auch die Merkmale von Beispiel B2 aufweisen.
  • Beispiel C1 ist ein Verfahren zum schnellen Booten eines DPS. Das Verfahren umfasst während eines Boot-Prozesses des DPS die Verwendung eines vorläufigen Bootcode-Moduls aus einem langsamen NVM im DPS zum Laden eines Haupt-Bootcode-Moduls aus einem schnellen NVM im DPS in einen flüchtigen RAM im DPS, wobei der schnelle NVM eine Lesegeschwindigkeit unterstützt, die höher ist als die maximale Lesegeschwindigkeit des langsamen NVM. Das Verfahren umfasst auch während des Boot-Prozesses, nach dem Laden des Haupt-Bootcode-Moduls aus dem schnellen NVM in den RAM die Verwendung des Haupt-Bootcode-Moduls zum Booten des DPS zu einem OS.
  • Beispiel C2 ist ein Verfahren nach Beispiel C1, wobei der schnelle NVM eine durchschnittliche Lesegeschwindigkeit von wenigstens 200 Megabytes pro Sekunde (MB/s) unterstützt und die maximale Lesegeschwindigkeit des langsamen NVM kleiner als 200 MB/s ist.
  • Beispiel C3 ist ein Verfahren nach Beispiel C2, wobei die maximale Lesegeschwindigkeit des langsamen NVM kleiner als 40 MB/s ist.
  • Beispiel C4 ist ein Verfahren nach Beispiel C1, wobei ferner während des Boot-Prozesses vor der Verwendung des Haupt-Bootcode-Moduls zum Booten des DPS zum OS das vorläufige Bootcode-Modul verwendet wird, um automatisch festzustellen, ob das Haupt-Bootcode-Modul aus dem schnellen NVM eine gute Integrität aufweist. Beispiel C4 kann auch die Merkmale eines oder mehrerer der Beispiele C2 bis C3 aufweisen.
  • Beispiel C5 ist ein Verfahren nach Beispiel C4, wobei der Vorgang der Verwendung des vorläufigen Bootcode-Moduls zum automatischen Feststellen, ob das Haupt-Bootcode-Modul aus dem schnellen NVM eine gute Integrität aufweist, Folgendes umfasst: (a) Verwenden des Haupt-Bootcode-Moduls vom schnellen NVM, um eine aktuelle MBM-Messung zu berechnen, (b) Abrufen der vertrauenswürdigen MBM-Messung und (c) Feststellen, ob die aktuelle MBM-Messung mit der vertrauenswürdigen MBM-Messung übereinstimmt.
  • Beispiel C6 ist ein Verfahren nach Beispiel C1, welches ferner Folgendes umfasst: (a) vor der Verwendung des Haupt-Bootcode-Moduls zum Booten des DPS zum OS, Verwenden des vorläufigen Bootcode-Moduls zum automatischen Feststellen, ob das Haupt-Bootcode-Modul aus dem schnellen NVM eine gute Integrität aufweist, und (b) ansprechend auf eine Feststellung, dass das Haupt-Bootcode-Modul aus dem schnellen NVM keine gute Integrität aufweist, automatisches Verwenden eines Haupt-Bootcode-Moduls von einer vom schnellen NVM verschiedenen Speichervorrichtung zum Booten des DPS zum OS. Beispiel C4 kann auch die Merkmale eines oder mehrerer der Beispiele C2 bis C5 aufweisen.
  • Beispiel C7 ist ein Verfahren nach Beispiel C6, wobei die vom schnellen NVM verschiedene Speichervorrichtung den langsamen NVM im DPS umfasst.
  • Beispiel C8 ist ein Verfahren nach Beispiel C6, wobei die vom schnellen NVM verschiedene Speichervorrichtung eine externe Speichervorrichtung umfasst.
  • Beispiel C9 ist ein Verfahren nach Beispiel C1, welches ferner Folgendes umfasst: (a) vor der Verwendung des Haupt-Bootcode-Moduls zum Booten des DPS zum OS, Verwenden des vorläufigen Bootcode-Moduls zum automatischen Feststellen, ob das Haupt-Bootcode-Modul aus dem schnellen NVM eine gute Integrität aufweist, (b) ansprechend auf eine Feststellung, dass das Haupt-Bootcode-Modul aus dem schnellen NVM keine gute Integrität aufweist, automatisches Abrufen eines Haupt-Bootcode-Moduls aus einer vom schnellen NVM verschiedenen Speichervorrichtung und (c) automatisches Ersetzen des Haupt-Bootcode-Moduls im schnellen NVM durch das Haupt-Bootcode-Modul aus der vom schnellen NVM verschiedenen Speichervorrichtung. Beispiel C7 kann auch die Merkmale eines oder mehrerer der Beispiele C2 bis C8 aufweisen.
  • Beispiel C10 ist ein Verfahren nach Beispiel C9, welches ferner Folgendes umfasst: Dekomprimieren des Bootcode-Moduls aus der vom schnellen NVM verschiedenen Speichervorrichtung vor dem automatischen Ersetzen des Haupt-Bootcode-Moduls im schnellen NVM durch das Haupt-Bootcode-Modul aus der vom schnellen NVM verschiedenen Speichervorrichtung.
  • Beispiel C11 ist ein Verfahren nach Beispiel C1, welches ferner Folgendes umfasst: (a) während eines anfänglichen Boot-Prozesses für das DPS, Speichern des Haupt-Bootcode-Moduls in einem geschützten Gebiet des schnellen NVM. Auch umfasst der Vorgang des Ladens des Haupt-Bootcode-Moduls aus dem schnellen NVM in den RAM das Erhalten des Haupt-Bootcode-Moduls aus dem geschützten Gebiet des schnellen NVM. Beispiel C9 kann auch die Merkmale eines oder mehrerer der Beispiele C2 bis C10 aufweisen.
  • Beispiel C12 ist ein Verfahren nach Beispiel C11, welches ferner Folgendes umfasst: (a) während des anfänglichen Boot-Prozesses, Berechnen einer Messung des Haupt-Bootcode-Moduls und (b) während des anfänglichen Boot-Prozesses, Speichern der Messung des Haupt-Bootcode-Moduls in einer vom schnellen NVM verschiedenen Speichervorrichtung.
  • Beispiel C13 ist ein Verfahren nach Beispiel C1, wobei ein erster Abschnitt des vorläufigen Bootcode-Moduls an Ort und Stelle ausgeführt wird, ein zweiter Abschnitt des vorläufigen Bootcode-Moduls aus Cache-as-RAM ausgeführt wird und der langsame NVM einen Flash-Speicher mit einer seriellen Peripherieschnittstelle (SPI) umfasst. Beispiel C9 kann auch die Merkmale eines oder mehrerer der Beispiele C2 bis C12 aufweisen.
  • Beispiel C14 ist ein Verfahren nach Beispiel C1, wobei das vorläufige Bootcode-Modul einen Speicherinitialisierungs-Referenzcode (MRC) umfasst und das vorläufige Bootcode-Modul den MRC zum Initialisieren des RAM verwendet, bevor das Haupt-Bootcode-Modul aus dem schnellen NVM in den RAM geladen wird. Beispiel C10 kann auch die Merkmale eines oder mehrerer der Beispiele C2 bis C13 aufweisen.
  • Beispiel D ist wenigstens ein durch eine Maschine zugängliches Medium, das Computerbefehle zum schnellen Booten eines DPS umfasst. Die Computerbefehle ermöglichen ansprechend darauf, dass sie in einem DPS ausgeführt werden, dem DPS, ein Verfahren nach einem der Beispiele C1 bis C14 auszuführen.
  • Beispiel E ist ein DPS mit einer Technologie zum schnellen Booten. Das DPS umfasst ein Verarbeitungselement, einen flüchtigen RAM, der auf das Verarbeitungselement anspricht, einen langsamen NVM, der auf das Verarbeitungselement anspricht, einen schnellen NVM, der auf das Verarbeitungselement anspricht, und Computerbefehle, die zumindest teilweise im langsamen NVM gespeichert sind. Die Computerbefehle ermöglichen dem DPS, wenn sie durch das Verarbeitungselement ausgeführt werden, ein Verfahren nach einem der Beispiele C1 bis C14 auszuführen.
  • Beispiel F ist ein DPS mit einer Technologie zum schnellen Booten. Das DPS umfasst Mittel zum Ausführen des Verfahrens nach einem der Beispiele C1 bis C14.

Claims (25)

  1. Datenverarbeitungssystem (DPS) mit einer Technologie zum schnellen Booten, wobei das DPS Folgendes umfasst: einen Prozessor, einen flüchtigen Direktzugriffsspeicher (RAM), der auf den Prozessor anspricht, einen langsamen nichtflüchtigen Speicher (NVM), der auf den Prozessor anspricht, einen schnellen NVM, der auf den Prozessor anspricht, ein vorläufiges Bootcode-Modul, das im langsamen NVM gespeichert ist, und ein Haupt-Bootcode-Modul, das im schnellen NVM gespeichert ist, wobei das vorläufige Bootcode-Modul, wenn es durch den Prozessor ausgeführt wird, dem DPS ermöglicht, das Haupt-Bootcode-Modul aus dem schnellen NVM in den RAM zu laden, und wobei das Haupt-Bootcode-Modul, wenn es durch den Prozessor ausgeführt wird, dem DPS ermöglicht, zu einem Betriebssystem (OS) zu booten.
  2. DPS nach Anspruch 1, wobei das vorläufige Bootcode-Modul, wenn es ausgeführt wird, dem DPS ermöglicht, vor dem Booten des DPS zum OS automatisch festzustellen, ob das Haupt-Bootcode-Modul vom schnellen NVM eine gute Integrität aufweist.
  3. DPS nach Anspruch 2, welches ferner Folgendes umfasst: eine vertrauenswürdige MBM-Messung und wobei der Vorgang des automatischen Feststellens, ob das Haupt-Bootcode-Modul vom schnellen NVM eine gute Integrität aufweist, Folgendes umfasst: Verwenden des Haupt-Bootcode-Moduls aus dem schnellen NVM, um eine aktuelle MBM-Messung zu berechnen, Abrufen der vertrauenswürdigen MBM-Messung und Feststellen, ob die aktuelle MBM-Messung mit der vertrauenswürdigen MBM-Messung übereinstimmt.
  4. DPS nach Anspruch 1, wobei das vorläufige Bootcode-Modul, wenn es ausgeführt wird, dem DPS ermöglicht, Folgendes auszuführen: automatisches Feststellen, ob das Haupt-Bootcode-Modul vom schnellen NVM eine gute Integrität aufweist, bevor das DPS zum OS gebootet wird, und ansprechend auf eine Feststellung, dass das Haupt-Bootcode-Modul vom schnellen NVM keine gute Integrität aufweist, automatisches Verwenden eines Haupt-Bootcode-Moduls von einer vom schnellen NVM verschiedenen Speichervorrichtung, um das DPS zum OS zu booten.
  5. DPS nach Anspruch 4, wobei die vom schnellen NVM verschiedene Speichervorrichtung den langsamen NVM im DPS umfasst.
  6. DPS nach Anspruch 4, wobei die vom schnellen NVM verschiedene Speichervorrichtung eine externe Speichervorrichtung umfasst.
  7. DPS nach Anspruch 1, wobei: das vorläufige Bootcode-Modul, wenn es ausgeführt wird, dem DPS ermöglicht, das Haupt-Bootcode-Modul während eines anfänglichen Boot-Prozesses für das DPS in einem geschützten Gebiet des schnellen NVM zu speichern, und beim Vorgang des Ladens des Haupt-Bootcode-Moduls aus dem schnellen NVM in den RAM das Haupt-Bootcode-Modul aus dem geschützten Gebiet des schnellen NVM erhalten wird.
  8. DPS nach Anspruch 7, wobei das vorläufige Bootcode-Modul, wenn es ausgeführt wird, dem DPS ermöglicht, Folgendes auszuführen: Berechnen einer Messung des Haupt-Bootcode-Moduls während des anfänglichen Boot-Prozesses und Speichern der Messung des Haupt-Bootcode-Moduls in einer vom schnellen NVM verschiedenen Speichervorrichtung während des anfänglichen Boot-Prozesses.
  9. DPS nach Anspruch 1, wobei: der Prozessor einen Cache umfasst, wobei zumindest ein Abschnitt davon als Cache-as-RAM arbeiten kann, das vorläufige Bootcode-Modul einen ersten Abschnitt, um an Ort und Stelle auszuführen, und einen zweiten Abschnitt, um vom Cache-as-RAM auszuführen, umfasst und der langsame NVM einen Flash-Speicher mit einer seriellen Peripherieschnittstelle (SPI) umfasst.
  10. DPS nach Anspruch 1, wobei: das vorläufige Bootcode-Modul einen Speicherinitialisierungs-Referenzcode (MRC) umfasst und das vorläufige Bootcode-Modul dafür ausgelegt ist, den MRC für das Initialisieren des RAM zu verwenden, bevor das Haupt-Bootcode-Modul aus dem schnellen NVM in den RAM geladen wird.
  11. Verfahren zum schnellen Booten eines Datenverarbeitungssystems, wobei das Verfahren Folgendes umfasst: während eines Boot-Prozesses eines Datenverarbeitungssystems (DPS), Verwenden eines vorläufigen Bootcode-Moduls aus einem langsamen nichtflüchtigen Speicher (NVM) im DPS zum Laden eines Haupt-Bootcode-Moduls aus einem schnellen NVM im DPS in einen flüchtigen Direktzugriffsspeicher (RAM) im DPS, und während des Boot-Prozesses, nach dem Laden des Haupt-Bootcode-Moduls aus dem schnellen NVM in den RAM, Verwenden des Haupt-Bootcode-Moduls zum Booten des DPS zu einem Betriebssystem (OS).
  12. Verfahren nach Anspruch 11, welches ferner Folgendes umfasst: während des Boot-Prozesses, vor der Verwendung des Haupt-Bootcode-Moduls zum Booten des DPS zum OS, Verwenden des vorläufigen Bootcode-Moduls zum automatischen Feststellen, ob das Haupt-Bootcode-Modul aus dem schnellen NVM eine gute Integrität aufweist.
  13. Verfahren nach Anspruch 11, wobei der Vorgang der Verwendung des vorläufigen Bootcode-Moduls zum automatischen Feststellen, ob das Haupt-Bootcode-Modul aus dem schnellen NVM eine gute Integrität aufweist, Folgendes umfasst: Verwenden des Haupt-Bootcode-Moduls aus dem schnellen NVM, um eine aktuelle MBM-Messung zu berechnen, Abrufen einer vertrauenswürdigen MBM-Messung und Feststellen, ob die aktuelle MBM-Messung mit der vertrauenswürdigen MBM-Messung übereinstimmt.
  14. Verfahren nach Anspruch 11, welches ferner Folgendes umfasst: vor der Verwendung des Haupt-Bootcode-Moduls zum Booten des DPS zum OS, Verwenden des vorläufigen Bootcode-Moduls zum automatischen Feststellen, ob das Haupt-Bootcode-Modul aus dem schnellen NVM eine gute Integrität aufweist, und ansprechend auf eine Feststellung, dass das Haupt-Bootcode-Modul vom schnellen NVM keine gute Integrität aufweist, automatisches Verwenden eines Haupt-Bootcode-Moduls von einer vom schnellen NVM verschiedenen Speichervorrichtung, um das DPS zum OS zu booten.
  15. Verfahren nach Anspruch 14, wobei die vom schnellen NVM verschiedene Speichervorrichtung den langsamen NVM im DPS umfasst.
  16. Verfahren nach Anspruch 14, wobei die vom schnellen NVM verschiedene Speichervorrichtung eine externe Speichervorrichtung umfasst.
  17. Verfahren nach Anspruch 11, welches ferner Folgendes umfasst: vor der Verwendung des Haupt-Bootcode-Moduls zum Booten des DPS zum OS, Verwenden des vorläufigen Bootcode-Moduls zum automatischen Feststellen, ob das Haupt-Bootcode-Modul aus dem schnellen NVM eine gute Integrität aufweist, ansprechend auf eine Feststellung, dass das Haupt-Bootcode-Modul vom schnellen NVM keine gute Integrität aufweist, automatisches Abrufen eines Haupt-Bootcode-Moduls von einer vom schnellen NVM verschiedenen Speichervorrichtung, und automatisches Ersetzen des Haupt-Bootcode-Moduls im schnellen NVM durch das Haupt-Bootcode-Modul aus der vom schnellen NVM verschiedenen Speichervorrichtung.
  18. Verfahren nach Anspruch 17, welches ferner Folgendes umfasst: Dekomprimieren des Bootcode-Moduls aus der vom schnellen NVM verschiedenen Speichervorrichtung vor dem automatischen Ersetzen des Haupt-Bootcode-Moduls im schnellen NVM durch das Haupt-Bootcode-Modul aus der vom schnellen NVM verschiedenen Speichervorrichtung.
  19. Verfahren nach Anspruch 11, welches ferner Folgendes umfasst: während eines anfänglichen Boot-Prozesses für das DPS, Speichern des Haupt-Bootcode-Moduls in einem geschützten Gebiet des schnellen NVM, und wobei beim Vorgang des Ladens des Haupt-Bootcode-Moduls aus dem schnellen NVM in den RAM das Haupt-Bootcode-Modul aus dem geschützten Gebiet des schnellen NVM erhalten wird.
  20. Verfahren nach Anspruch 19, welches ferner Folgendes umfasst: während des anfänglichen Boot-Prozesses, Berechnen einer Messung des Haupt-Bootcode-Moduls und während des anfänglichen Boot-Prozesses, Speichern der Messung des Haupt-Bootcode-Moduls in einer vom schnellen NVM verschiedenen Speichervorrichtung.
  21. Verfahren nach Anspruch 11, wobei: ein erster Abschnitt des vorläufigen Bootcode-Moduls an Ort und Stelle ausführt, ein zweiter Abschnitt des vorläufigen Bootcode-Moduls aus dem Cache-as-RAM ausführt und der langsame NVM einen Flash-Speicher mit einer seriellen Peripherieschnittstelle (SPI) umfasst.
  22. Verfahren nach Anspruch 11, wobei: das vorläufige Bootcode-Modul einen Speicherinitialisierungs-Referenzcode (MRC) umfasst und das vorläufige Bootcode-Modul den MRC verwendet, um den RAM zu initialisieren, bevor das Haupt-Bootcode-Modul aus dem schnellen NVM in den RAM geladen wird.
  23. Wenigstens ein durch eine Maschine zugängliches Medium, das Computerbefehle zum schnellen Booten eines Datenverarbeitungssystems (DPS) umfasst, wobei die Computerbefehle ansprechend darauf, dass sie im DPS ausgeführt werden, dem DPS ermöglichen, ein Verfahren nach einem der Ansprüche 11 bis 21 auszuführen.
  24. Datenverarbeitungssystem (DPS) mit einer Technologie zum schnellen Booten, wobei das DPS Folgendes umfasst: ein Verarbeitungselement, einen flüchtigen Direktzugriffsspeicher (RAM), der auf das Verarbeitungselement anspricht, einen langsamen nichtflüchtigen Speicher (NVM), der auf das Verarbeitungselement anspricht, einen schnellen NVM, der auf das Verarbeitungselement anspricht, und Computerbefehle, die zumindest teilweise im langsamen NVM gespeichert sind, wobei die Computerbefehle ansprechend darauf, dass sie ausgeführt werden, dem DPS ermöglichen, ein Verfahren nach einem der Ansprüche 11 bis 22 auszuführen.
  25. Datenverarbeitungssystem mit einer Technologie zum schnellen Booten, wobei das Datenverarbeitungssystem Folgendes umfasst: Mittel zum Ausführen des Verfahrens nach einem der Ansprüche 11 bis 22.
DE102018204864.9A 2017-04-11 2018-03-29 Technologie zum Ermöglichen eines schnellen Bootens mit einem schnellen und langsamen nichtflüchtigen Speicher Pending DE102018204864A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/484,513 US10474473B2 (en) 2017-04-11 2017-04-11 Technology to facilitate rapid booting with high-speed and low-speed nonvolatile memory
US15/484,513 2017-04-11

Publications (1)

Publication Number Publication Date
DE102018204864A1 true DE102018204864A1 (de) 2018-10-11

Family

ID=63588211

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018204864.9A Pending DE102018204864A1 (de) 2017-04-11 2018-03-29 Technologie zum Ermöglichen eines schnellen Bootens mit einem schnellen und langsamen nichtflüchtigen Speicher

Country Status (3)

Country Link
US (1) US10474473B2 (de)
CN (1) CN108694060A (de)
DE (1) DE102018204864A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10938855B1 (en) * 2017-06-23 2021-03-02 Digi International Inc. Systems and methods for automatically and securely provisioning remote computer network infrastructure
US10936722B2 (en) * 2018-04-18 2021-03-02 Nuvoton Technology Corporation Binding of TPM and root device
US20190347027A1 (en) * 2018-05-14 2019-11-14 Microsoft Technology Licensing, Llc Pinning in a multi-tiered system
CN110516817A (zh) * 2019-09-03 2019-11-29 北京华捷艾米科技有限公司 一种模型训练数据加载方法及装置
US11734018B2 (en) * 2020-07-17 2023-08-22 Western Digital Technologies, Inc. Parallel boot execution of memory devices
KR20220085237A (ko) 2020-12-15 2022-06-22 삼성전자주식회사 스토리지 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법
CN113485189A (zh) * 2021-07-09 2021-10-08 绍兴光大芯业微电子有限公司 低速单片机实现代码高速运行且数据掉电不丢失的系统、方法、装置、存储器及其存储介质

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6385721B1 (en) * 1999-01-22 2002-05-07 Hewlett-Packard Company Computer with bootable hibernation partition
TW591525B (en) * 2003-03-07 2004-06-11 Novatek Microelectronics Corp Interrupt-processing system for shortening interrupt latency in microprocessor
US7522840B2 (en) * 2004-10-29 2009-04-21 Finisar Corporation Adjustable boot speed in an optical transceiver
TW200705273A (en) * 2005-07-26 2007-02-01 Mitac Technology Corp Method instantly initializing and executing a computer program by using a high-speed data access memory to load kernel program of operating system
US8082431B2 (en) * 2006-09-29 2011-12-20 Intel Corporation System and method for increasing platform boot efficiency
US7793036B2 (en) * 2007-05-30 2010-09-07 Intel Corporation Method and arrangements for utilizing NAND memory
US7886141B2 (en) * 2007-10-27 2011-02-08 Asix Electronics Corporation Method and systems for advanced reprogrammable boot codes and in-application programming of embedded microprocessor systems
US8051467B2 (en) * 2008-08-26 2011-11-01 Atmel Corporation Secure information processing
US8713241B2 (en) * 2008-08-27 2014-04-29 Wireless Silicon Group, Llc Method and apparatus for an active low power mode of a portable computing device
KR101542878B1 (ko) * 2009-02-13 2015-08-07 삼성전자주식회사 버퍼램을 포함하는 불휘발성 메모리 장치 및 그것의 부트 코드 관리 방법
US8812854B2 (en) * 2009-10-13 2014-08-19 Google Inc. Firmware verified boot
US8843732B2 (en) * 2009-12-21 2014-09-23 Intel Corporation Mechanism for detecting a no-processor swap condition and modification of high speed bus calibration during boot
US20120303942A1 (en) * 2011-05-25 2012-11-29 Eric Peacock Caching of boot data in a storage device
EP2761476B1 (de) * 2011-09-30 2017-10-25 Intel Corporation Vorrichtung, verfahren und system zur bios-speicherung in einer nichtflüchtige ram-speicherzelle
BR112014009915B1 (pt) * 2011-10-26 2021-06-15 Hewlett-Packard Development Company, L.P. Método para alocação de memória, dispositivo e meio de armazenamento não transitório legível por máquina
US9575768B1 (en) * 2013-01-08 2017-02-21 Marvell International Ltd. Loading boot code from multiple memories
US9053015B2 (en) * 2013-06-17 2015-06-09 Topcon Positioning Systems, Inc. NAND flash memory interface controller with GNSS receiver firmware booting capability
US9734079B2 (en) * 2013-06-28 2017-08-15 Intel Corporation Hybrid exclusive multi-level memory architecture with memory management
JP2015022516A (ja) * 2013-07-19 2015-02-02 ソニー株式会社 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
US9524219B2 (en) * 2013-09-27 2016-12-20 Intel Corporation Atomic transactions to non-volatile memory
JP6107625B2 (ja) * 2013-12-02 2017-04-05 ソニー株式会社 記憶制御装置、記憶装置、情報処理システムおよびその記憶制御方法
US9195404B2 (en) * 2013-12-17 2015-11-24 Intel Corporation Exposing protected memory addresses
US9665296B2 (en) * 2014-05-07 2017-05-30 Sandisk Technologies Llc Method and computing device for using both volatile memory and non-volatile swap memory to pre-load a plurality of applications
US9477549B2 (en) * 2014-09-15 2016-10-25 Sandisk Technologies Llc Methods, systems, and computer readable media for address and data integrity checking in flash memory operations
US9875359B2 (en) * 2015-10-14 2018-01-23 Quanta Computer Inc. Security management for rack server system
US10346177B2 (en) * 2016-12-14 2019-07-09 Intel Corporation Boot process with parallel memory initialization

Also Published As

Publication number Publication date
CN108694060A (zh) 2018-10-23
US20180293080A1 (en) 2018-10-11
US10474473B2 (en) 2019-11-12

Similar Documents

Publication Publication Date Title
DE102018204864A1 (de) Technologie zum Ermöglichen eines schnellen Bootens mit einem schnellen und langsamen nichtflüchtigen Speicher
DE102007012448B4 (de) Ein chipsatz-unabhängiges Verfahren für lokale Aktualisierung und Konfigurierung eines System-BIOS
DE102019106669A1 (de) Verfahren und anordnungen zum verwalten von speicher in kaskadierten neuronalen netzen
DE102013022405B3 (de) Schutz globaler Register in einem Multithreaded-Prozessor
DE112016005823T5 (de) Überwachen des betriebs eines prozessors
DE102008059790A1 (de) Verfahren, Vorrichtung und Befehle zum Verarbeiten von Vektordaten
DE112010004963T5 (de) Synchronisieren von SIMD Vektoren
DE112010003925T5 (de) Erweiterbare Zugriffssteuerungslisten-Grundstruktur
DE112011101929T5 (de) Aktivieren der Steuerung eines Hypervisor in einer Cloud-Datenverarbeitungsumgebung
DE102013108394A1 (de) Verfahren zum Verwalten eines Schlüssels für sicheres Speichern von Daten und Vorrichtung dafür
DE102018209205A1 (de) Datenspeicher mit intelligentem Speicher oder Ladeverfahren und -vorrichtung
DE202015009780U1 (de) Speichersystem und elektronisches Gerät
DE112021000648T5 (de) Speichervorrichtung, die gegen cyber-angriffe und fehlfunktionen widerstandsfähig ist
EP2807558A1 (de) Speichercontroller zur bereitstellung mehrerer definierter bereiche eines massenspeichermediums als unabhängige massenspeicher an einen master-betriebssystem - kern zur exklusiven bereitstellung an virutelle maschinen
DE112009000612T5 (de) Multi-Betriebssystem-Booteinrichtung (OS), Multi-OS-Boot-Programm, Aufzeichnungsmedium und Multi-OS-Bootverfahren
DE102014003705A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE102007006190A1 (de) Techniken zur Verwendung von Speicher-Attributen
DE202010017644U1 (de) Hybridspeichervorrichtung
DE102017123054A1 (de) Verfahren und System zur System-On-Chip-Integritätsverifizierung
DE102015002191A1 (de) Sicherheits-Hypervisor-Funktion
DE112004001652B4 (de) Vektorieren eines Interrupt oder einer Ausnahme bei Wiederaufnahme des Betriebes einer virtuellen Maschine
DE112014000340T5 (de) Vorablesezugriff auf Daten für einen Chip mit einem übergeordneten Kern und einem Scout-Kern
DE112017006367T5 (de) Aufgabenmanagement mit dynamischer Laufzeit
DE102021120076A1 (de) Validierung von dram-inhalten unter verwendung einer internendatensignatur
DE112006003504T5 (de) Detektion von Cachespeicher-Disassoziierung