DE112017008211T5 - Techniken für die Initialisierung einer Computerplattform - Google Patents

Techniken für die Initialisierung einer Computerplattform Download PDF

Info

Publication number
DE112017008211T5
DE112017008211T5 DE112017008211.0T DE112017008211T DE112017008211T5 DE 112017008211 T5 DE112017008211 T5 DE 112017008211T5 DE 112017008211 T DE112017008211 T DE 112017008211T DE 112017008211 T5 DE112017008211 T5 DE 112017008211T5
Authority
DE
Germany
Prior art keywords
dbc
dbcs
boot
fpga
platform
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
DE112017008211.0T
Other languages
English (en)
Inventor
Xiang Ma
Tung Lun LOO
Yah Wen Ho
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 DE112017008211T5 publication Critical patent/DE112017008211T5/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
    • G06F9/4405Initialisation of multiprocessor systems
    • 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
    • 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/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

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

Abstract

Verschiedene Ausführungsformen betreffen allgemein Techniken zum Initialisieren einer Computerplattform, wie zum Beispiel durch die Verwendung eines feldprogrammierbaren Gate-Arrays (Field Programmable Gate Array, FPGA) zum Initialisieren einer oder mehrerer abhängiger bootfähiger Komponenten (Dependent Bootable Components, DBCs) der Computerplattform. In einer oder mehreren Ausführungsformen kann das FPGA so rekonfiguriert werden, dass es nach der Initialisierung einer Computerplattform eine Laufzeitoperation ausführt. In im vorliegenden Text beschriebenen Ausführungsformen kann eine DBC die Initialisierung beliebiger Hardware- oder Softwarekomponenten einer Computerplattform enthalten, zum Beispiel Siliziumkomponenten und Plattformkomponenten. In solchen Ausführungsformen kann eine Boot-Sequenz Boot-Instruktionen zum Initialisieren eines Satzes DBCs enthalten. In einigen dieser Ausführungsformen kann die Boot-Sequenz die Computerplattform initialisieren. In einer oder mehreren Ausführungsformen kann die Initialisierung einer Computerplattform die Vorbereitung der Computerplattform zum Ausführen von Eingabe/Ausgabe (E/A)-Operationen enthalten. In einer oder mehreren dieser Ausführungsformen können die E/A-Operationen über ein Betriebssystem ausgeführt werden.

Description

  • HINTERGRUND
  • Wenn eine Computerplattform initialisiert oder hochgefahren wird, so kann sie eine anfängliche Reihe von Prozessen durchlaufen. Die anfängliche Reihe von Prozessen kann als Boot-Sequenz bezeichnet werden. In der Regel kann eine Computerplattform während einer Boot-Sequenz die erforderlichen Hardware- und Softwarekomponenten aktivieren, damit die Computerplattform Eingabe/Ausgabe-Funktionen ausführen kann. Eine Boot-Sequenz kann zum Beispiel abgeschlossen werden, wenn ein Betriebssystem geladen wurde und für den Benutzermodus bereit ist. Die Dauer einer Boot-Sequenz hängt von den verschiedenen Hardware- und Softwarekomponenten ab, die eine Computerplattform benötigt.
  • Figurenliste
    • 1 veranschaulicht eine Ausführungsform einer ersten Betriebsumgebung.
    • 2 veranschaulicht die Ausführungsform einer zweiten Betriebsumgebung.
    • 3 veranschaulicht eine Ausführungsform einer dritten Betriebsumgebung.
    • 4 veranschaulicht eine Ausführungsform eines ersten Logikflusses des Auslagerns von Abschnitten der Plattforminitialisierung von einem Host-Prozessor zu einem FPGA.
    • 5 veranschaulicht eine Ausführungsform eines zweiten Logikflusses der Verteilung von Rechenressourcen (zum Beispiel Treibern) zwischen einem Host-Prozessor und einem FPGA zum Initialisieren einer Computerplattform.
    • 6 veranschaulicht eine Ausführungsform eines dritten Logikflusses der Ausführung von Sätzen von Boot-Anweisungen zum Initialisieren einer Computerplattform.
    • 7 veranschaulicht eine Ausführungsform eines Speichermediums.
    • 8 veranschaulicht eine Ausführungsform einer Computerarchitektur.
    • 9 veranschaulicht eine Ausführungsform einer Kommunikationsarchitektur.
  • DETAILLIERTE BESCHREIBUNG
  • Verschiedene Ausführungsformen betreffen allgemein Techniken zum Initialisieren einer Computerplattform, wie zum Beispiel durch die Verwendung eines feldprogrammierbaren Gate-Arrays (Field Programmable Gate Array, FPGA) zum Initialisieren einer oder mehrerer abhängiger bootfähiger Komponenten (Dependent Bootable Components, DBCs) der Computerplattform. In einer oder mehreren Ausführungsformen kann das FPGA so rekonfiguriert werden, dass es nach der Initialisierung einer Computerplattform eine Laufzeitoperation ausführt. In im vorliegenden Text beschriebenen Ausführungsformen kann eine DBC die Initialisierung beliebiger Hardware- oder Softwarekomponenten einer Computerplattform enthalten, zum Beispiel Siliziumkomponenten und Plattformkomponenten. In solchen Ausführungsformen kann eine Boot-Sequenz die Ausführung eines oder mehrerer Sätze von Boot-Instruktionen zum Initialisieren eines Satzes DBCs enthalten. In einigen dieser Ausführungsformen kann die Boot-Sequenz die Computerplattform initialisieren. In einer oder mehreren Ausführungsformen kann die Initialisierung einer Computerplattform die Vorbereitung der Computerplattform zum Ausführen von Eingabe/Ausgabe (E/A)-Operationen enthalten. In einer oder mehreren dieser Ausführungsformen können die E/A-Operationen über ein Betriebssystem ausgeführt werden. Zum Beispiel kann die Computerplattform die E/A-Operationen über eine durch das Betriebssystem implementierte Anwendung ausführen. In Ausführungsformen kann eine Computerplattform als eine Plattform bezeichnet werden.
  • Einige der im vorliegenden Text beschriebenen Ausführungsformen betreffen insbesondere eine Plattform, die sowohl einen Host-Prozessor als auch ein FPGA zum Initialisieren einer Plattform verwendet. In einer Ausführungsform kann zum Beispiel ein System zur Plattforminitialisierung eine Plattform enthalten, die einen Satz DBCs, einen Host-Prozessor und ein FPGA umfasst. In einer oder mehreren Ausführungsformen kann der Host-Prozessor einen ersten Satz Boot-Instruktionen als Teil einer Boot-Sequenz ausführen, um die Plattform zum Ausführen von E/A-Operationen zu initialisieren. In einer oder mehreren solcher Ausführungsformen kann der erste Satz Boot-Instruktionen jede DBC in einer ersten Teilmenge des Satzes DBCs initialisieren. In verschiedenen Ausführungsformen kann das FPGA einen zweiten Satz Boot-Instruktionen als Teil der Boot-Sequenz ausführen, wobei der zweite Satz Boot-Instruktionen jede DBC in einer zweiten Teilmenge des DBC-Satzes initialisiert. Diese und andere Ausführungsformen werden beschrieben und beansprucht.
  • Zu den Herausforderungen bei der Initialisierung von Plattformen gehören Boot-Sequenzen, die Boot-Sequenzen mit rechenintensiven Boot-Instruktionen enthalten. Die Herausforderungen können aus der Unfähigkeit resultieren, eine erforderliche Anzahl von DBCs in einer Boot-Sequenz innerhalb eines akzeptablen Zeitrahmens zu initialisieren. Zum Beispiel kann es sein, dass ein Host-Prozessor einen gesamten oder wenigstens einen unnötig großen Abschnitt der Boot-Instruktionen in einer Boot-Sequenz ausführen muss. In einigen Ausführungsformen kann dies zu Boot-Zeiten führen, die die Boot-Zeit-Anforderungen oder -Ziele überschreiten. Zum Beispiel können Computer-Vision-Anwendungen aus Sicherheitsgründen strenge Anforderungen an die Boot-Zeit haben. In einem anderen Fall können langsame Boot-Zeiten zu einer nicht-reagierenden Benutzerschnittstelle führen. Eine Boot-Sequenz kann die Initialisierung zahlreicher DBCs mit gegenseitigen Abhängigkeiten enthalten, was die Komplexität noch erhöht. Zum Beispiel kann eine erste DBC eine Bibliothek enthalten, während eine zweite DBC einen Speicher-Controller enthält, der geladen werden muss, bevor auf die Bibliothek zugegriffen werden kann. Dies kann zu zusätzlichen Verzögerungen bei der Boot-Zeit führen. Diese und andere Faktoren können zu Plattforminitialisierungen mit schlechter Leistung und begrenzter Effizienz führen. Solche Einschränkungen können die Nutzbarkeit und Anwendbarkeit der Plattform drastisch reduzieren und zu ineffektiven Systemen mit begrenzter Reaktionsfähigkeit und reduzierten Fähigkeiten beitragen.
  • Verschiedene im vorliegenden Text beschriebene Ausführungsformen enthalten eine Computerplattform mit einem FPGA, die die Boot-Zeit der Plattform reduzieren kann. In einer oder mehreren Ausführungsformen können Mehrprozessor-Firmwareflüsse sowie die Konfigurierbarkeit des FPGA genutzt werden, um Einschränkungen bei der sequentiellen Initialisierung von Silizium- und Plattformkomponenten zu mindern. In einer oder mehreren solcher Ausführungsformen können die Einschränkungen durch die Trennung der Boot-Flüsse in einer Boot-Sequenz zum Initialisieren einer Plattform zwischen einem Host-Prozessor und dem FPGA gemildert werden. Zum Beispiel kann der Host-Prozessor einen ersten Satz Boot-Instruktionen als Teil der Boot-Sequenz ausführen, und das FPGA kann einen zweiten Satz Boot-Instruktionen als Teil der Boot-Sequenz ausführen. In einigen Ausführungsformen kann das FPGA die Boot-Zeiten verbessern, damit die Computerplattform strenge Boot-Zeitvorgaben erfüllen kann. In einigen dieser Ausführungsformen kann eine Computerplattform vom Start bis zum Laufen einer Softwareanwendung 2 Sekunden Zeit haben. Die Einhaltung strenger Boot-Zeitvorgaben kann es zum Beispiel ermöglichen, dass die Computerplattform in Anwendungen für autonomes Fahren eingesetzt werden kann (zum Beispiel Internet of Things (IoT)-Automobillösungen). In einigen dieser Fälle kann die Einhaltung strikter Boot-Zeitvorgaben die Sicherheit von Anwendungen für autonomes Fahren verbessern. In verschiedenen Ausführungsformen kann das FPGA nach der Initialisierung einer Plattform für eine oder mehrere Laufzeitoperationen rekonfiguriert werden. In verschiedenen solchen Ausführungsformen können die eine oder die mehreren Laufzeitoperationen es der Computerplattform ermöglichen, zusätzliche und vorteilhafte Merkmale zu realisieren. Auf diese und andere Weise kann die Computerplattform zuverlässige und effiziente Plattforminitialisierungen ermöglichen, um verbesserte Boot-Zeiten sowie vorteilhafte und nützliche Laufzeitmerkmale zu erreichen, was zu verschiedenen technischen Auswirkungen und Vorteilen führt.
  • Mit allgemeinem Blick auf die im vorliegenden Text verwendeten Begrifflichkeiten und Benennungen können ein oder mehrere Abschnitte der folgenden detaillierten Beschreibung in Form von Programmabläufen dargestellt werden, die auf einem Computer oder Computernetzwerk ausgeführt werden. Diese Verfahrensbeschreibungen und -darstellungen werden von einschlägig bewanderten Computerfachleuten benutzt, um das Wesen ihrer Arbeit am effektivsten an andere Fachleute zu vermitteln. Ein „Verfahrensablauf“ wird im vorliegenden Text, und allgemein, als eine in sich schlüssige Abfolge von Operationen verstanden, die zu einem gewünschten Ergebnis führt. Diese Operationen sind solche, die physikalische Manipulationen physikalischer Quantitäten erfordern. Gewöhnlich, wenn auch nicht notwendigerweise, nehmen diese Quantitäten die Form von elektrischen, magnetischen oder optischen Signalen an, die gespeichert, übertragen, kombiniert, verglichen und auf sonstige Weise manipuliert werden können. Es hat sich mitunter als zweckmäßig erwiesen, hauptsächlich aus Gründen des einheitlichen Sprachgebrauchs, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu bezeichnen. Es ist jedoch zu beachten, dass alle diese und ähnliche Terme den entsprechenden physikalischen Quantitäten zuzuordnen sind und lediglich zweckmäßige Etiketten sind, die diesen Quantitäten beigegeben werden.
  • Darüber hinaus wird über diese Manipulationen oft im Zusammenhang mit Begriffen wie Hinzufügen oder Vergleichen gesprochen, die üblicherweise mit geistigen Operationen eines Menschen in Verbindung gebracht werden. Allerdings ist eine solche Fähigkeit eines Menschen bei den im vorliegenden Text beschriebenen Operationen, die Teil einer oder mehrerer Ausführungsformen sind, in den meisten Fällen weder notwendig noch wünschenswert. Vielmehr handelt es sich bei diesen Operationen um Maschinenoperationen. Zu brauchbaren Maschinen zum Ausführen von Operationen verschiedener Ausführungsformen gehören zum Beispiel Allzweck-Digitalcomputer, die durch ein darin gespeichertes Computerprogramm, das gemäß den im vorliegenden Text enthaltenen Lehren geschrieben wurde, selektiv aktiviert oder konfiguriert werden, und/oder speziell für den erforderlichen Zweck konstruierte Vorrichtungen. Verschiedene Ausführungsformen beziehen sich auch auf Vorrichtungen oder Systeme zum Ausführen dieser Operationen. Diese Vorrichtungen können speziell für den erforderlichen Zweck konstruiert sein oder können einen Allzweck-Computer enthalten. Die erforderliche Struktur für eine Vielzahl dieser Maschinen geht aus der vorliegenden Beschreibung hervor.
  • Wir wenden uns nun den Zeichnungen zu, in denen stets gleiche Bezugszahlen zum Bezeichnen gleicher Elemente verwendet werden. In der folgenden Beschreibung werden zu Erklärungszwecken zahlreiche konkrete Details angeführt, um ihr gründliches Verständnis zu ermöglichen. Es versteht sich jedoch, dass die neuartigen Ausführungsformen auch ohne diese konkreten Details praktiziert werden können. In anderen Fällen werden bekannte Strukturen und Vorrichtungen in Blockdiagrammform gezeigt, um ihre Beschreibung zu erleichtern. Es ist beabsichtigt, dass alle Modifizierungen, Äquivalente und Alternativen unter den Schutzumfang der Ansprüche fallen.
  • 1 veranschaulicht ein Beispiel für eine Betriebsumgebung 100, die für verschiedene Ausführungsformen repräsentativ sein kann. Die Betriebsumgebung 100 kann die Computerplattform 102 mit dem Host-Prozessor 104, dem FPGA 106, einem Satz DBCs 108 und einer Logik 110 enthalten. In der Betriebsumgebung 100 können der Host-Prozessor 104 und das FPGA 106 unabhängig voneinander verschiedene Teilmengen des Satzes DBCs initialisieren, um die Computerplattform 102 als Teil einer Boot-Sequenz zu initialisieren. In verschiedenen Ausführungsformen kann die Boot-Sequenz dafür verwendet werden, die Computerplattform auf die Durchführung von E/A-Operationen vorzubereiten. Die Boot-Sequenz kann zum Beispiel dafür verwendet werden, die Computerplattform darauf vorzubereiten, mit einer oder mehreren anderen Computerplattformen über ein Netzwerk durch eine über ein Betriebssystem implementierte Anwendung zu interagieren. In einigen Ausführungsformen kann die Logik 110 eine Boot-Sequenz zum Initialisieren einer Computerplattform 102 initiieren. In einer oder mehreren Ausführungsformen können ein oder mehrere Abschnitte der Logik 110 so implementiert werden, dass sie durch den Host-Prozessor 104 und/oder das FPGA 106 ausgeführt werden. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • In verschiedenen Ausführungsformen kann die Computerplattform 102 Vorrichtungen und Verfahren zum Initialisieren von Silizium- und Plattformkomponenten (zum Beispiel DBCs 108) unter Verwendung des FPGA 106 zur Verkürzung der Boot-Sequenz der Plattform enthalten. In vielen Ausführungsformen können Mehrprozessor-Firmware-Flüsse, wie zum Beispiel Unified Extensible Firmware Interface (UEFI), CoreBoot und/oder Bootloader, und die Konfigurierbarkeit des FPGA 106 die Einschränkungen, die mit der sequentiellen Initialisierung von Silizium- und/oder Plattformkomponenten verbunden sind, mittels Trennung der Boot-Flüsse zwischen dem Host-Prozessor 104 und dem FPGA 106 reduzieren. In einigen Ausführungsformen kann dies ein kritischer Faktor bei der Erfüllung immer strengerer Anforderungen an die Boot-Zeit sein. In verschiedenen Ausführungsformen kann das FPGA 106 der Computerplattform 102 vorteilhafte Systemintegrationen und Bauteilkosteneinsparungen im Vergleich zu Computerplattformen ohne ein FPGA ermöglichen, wodurch Boot-Operationen beschleunigt werden können sowie zusätzliche Laufzeitoperationen bereitgestellt werden können oder vorhandene Laufzeitoperationen beschleunigt werden können.
  • In einigen Ausführungsformen kann die Fähigkeit der Computerplattform 106, das FPGA 106 zu konfigurieren und zu rekonfigurieren, eine Umnutzung der FPGA 106-Konfiguration dynamisch (on the fly) und/oder nach Bedarf ermöglichen. Zum Beispiel kann das Konfigurieren des FPGA 106 als eine Prozessor-Engine zum Unterstützen und Beschleunigen der Plattforminitialisierung während einer Boot-Phase erfolgen, während das FPGA 106 für eine Laufzeitoperation, wie zum Beispiel Deep Learning, Computer Vision und/oder E/A-Erweiterungen, nach Abschluss der Boot-Sequenz rekonfiguriert wird. In vielen Ausführungsformen kann eine Boot-Sequenz eines oder mehrere von einer Plattforminitialisierung und dem Laden eines Betriebssystems enthalten.
  • In vielen Ausführungsformen kann die Computerplattform 102 ihre Boot-Zeit erheblich reduzieren, indem sie das FPGA 106 als eine Ressource verwendet, um Silizium- und/oder Plattformkomponenten (zum Beispiel DBCs 108) gleichzeitig mit dem, oder früher als den, Host-Prozessor 104 zu initialisieren. In einigen Ausführungsformen ist der Host-Prozessor 104 möglicherweise nicht in der Lage, aus dem Reset-Zustand herauszukommen, bis andere Abhängigkeiten aufgelöst sind. Zum Beispiel müssen die PMC und die Converged Security Engine (CSE) möglicherweise initialisiert werden, bevor ein Verarbeitungskern des Host-Prozessors 104 die ersten Funktionen (zum Beispiel Boot-Code) holt. Außerdem kann das FPGA 106 ein unabhängiges Teilsystem sein, das in der Lage ist, die Ausführung früher zu beginnen als der Host-Prozessor 104. Dementsprechend können in solchen Fällen einige Initialisierungen an das FPGA 106 ausgelagert werden. In verschiedenen Ausführungsformen kann sich das FPGA 106, nachdem der Host-Prozessor 104 in Betrieb ist, immer noch mit dem Host-Prozessor 104 koordinieren, wie zum Beispiel, um andere Arbeitslasten zu teilen und so die Gesamtbootzeit des Systems zu reduzieren. Zum Beispiel können ein eingebetteter Multimedia-Controller (eMMC) und/oder universeller Flash-Speicher (UFS) beträchtliche Zeit für die Initialisierung benötigen. In solchen Beispielen kann das FPGA 106 die Bootvorrichtungsinitialisierung im Voraus starten; und zu dem Zeitpunkt, an dem der Host-Prozessor 104 Daten von einem Boot-Medium lesen muss, kann das FPGA 106 das Boot-Medium bereits initialisiert haben.
  • In verschiedenen Ausführungsformen kann das Umnutzen oder Rekonfigurieren des FPGA 106 in verschiedenen Systemphasen (zum Beispiel Boot- und Laufzeitphasen, Benutzermodus, Kernel-Modus, Betriebssystemphasen usw.) bei Bedarf eine erhebliche Reduzieren der Gesamtkosten der Plattformbauteile sowie des Stromverbrauchs der Laufzeitplattform realisieren. In einigen Ausführungsformen brauchen einige DBCs 108 nur während bestimmter Systemphasen erforderlich zu sein. Zum Beispiel braucht ein Host-SMBus-Controller älterer Bauart nur während einer Speicherinitialisierungsphase erforderlich zu sein. In solchen Beispielen kann der SMBus-Controller Serial Presence Detect (SPD)-Informationen aus Dual-In-Line-Speichermodulen (Dual In-line Memory Modules, DIMMs) lesen, die anschließend nicht mehr verwendet werden. In einigen solcher Beispiele kann das FPGA 106 so konfiguriert werden, dass es SMBus-Controller-Funktionalität in einer frühen Boot-Phase bereitstellt. In weiteren solchen Beispielen können die durch das FPGA 106 genutzten Ressourcen zurückgewonnen und zu verschiedene Funktionalitäten programmiert werden, die in einer Betriebssystemphase benötigt werden. In einigen Ausführungsformen kann das FPGA 106 die Bauteilkosten und den Stromverbrauch reduzieren, indem SMBus-Controller älterer Bauart aus dem Design entfernt werden (zum Beispiel einem System on Chip (SoC)-Design).
  • Eine oder mehrere im vorliegenden Text beschriebene Ausführungsformen können eine Computerplattform 102 mit der Logik 110 enthalten, um eine oder mehrere der folgenden Funktionen auszuführen. In einigen Ausführungsformen kann die Logik 10 eine Boot-Sequenz zum Initialisieren einer Plattform initiieren, zum Beispiel zum Ausführen von E/A-Operationen. In verschiedenen Ausführungsformen kann die Logik 110 eine erste Teilmenge des Satzes DBCs 108 mit dem Host-Prozessor 104 und eine zweite Teilmenge des Satzes DBCs 108 mit dem FPGA 106 initialisieren. Zum Beispiel kann der Host-Prozessor 104 einen ersten Satz Boot-Instruktionen ausführen, um jede DBC in der ersten Teilmenge des Satzes DBCs 108 als eine Teil einer Boot-Sequenz zu initialisieren. In solchen Beispielen kann das FPGA 106 einen zweiten Satz Boot-Instruktionen ausführen, um jede DBC in der zweiten Teilmenge des Satzes DBCs 108 zu initialisieren.
  • In einigen Ausführungsformen kann die Initialisierung einer ersten DBC durch den Host-Prozessor 104 von der Initialisierung einer zweiten DBC durch das FPGA 106 abhängig sein. In dieser und anderen Ausführungsformen kann die Initialisierung einer dritten DBC durch das FPGA 106 von der Initialisierung einer vierten DBC durch den Host-Prozessor 104 abhängig sein. In vielen Ausführungsformen kann eine erste DBC in einer ersten Teilmenge von DBCs ein Betriebssystem enthalten, und eine zweite DBC in einer zweiten Teilmenge von DBCs kann eine Firmware-Schnittstelle enthalten. In verschiedenen Ausführungsformen kann die Computerplattform 102 E/A-Operationen über ein durch den Host-Prozessor 104 ausgeführtes Betriebssystem ausführen. In einigen Ausführungsformen kann eine erste DBC in der ersten Teilmenge einen Energieverwaltungs-Controller (Power Management Controller, PMC) enthalten, und eine zweite DBC in der zweiten Teilmenge kann einen Bus-Controller, wie zum Beispiel einen Systemmanagementbus-Controller (SMB), enthalten.
  • In vielen Ausführungsformen kann eine erste DBC in der ersten Teilmenge eine Bibliothek enthalten, und die Initialisierung einer ersten DBC kann das Laden der Bibliothek aus dem Speicher enthalten. In vielen solchen Ausführungsformen kann eine zweite DBC in der zweiten Teilmenge einen Speicher-Controller enthalten, und die Initialisierung einer zweiten DBC kann vor der Initialisierung einer ersten DBC erfolgen. In einer oder mehreren Ausführungsformen kann eine DBC in der ersten Teilmenge von DBCs einen Vorrichtungsbaum enthalten, und die Initialisierung der DBC kann den Aufbau des Vorrichtungsbaums enthalten. In einigen Ausführungsformen kann eine DBC in der zweiten Teilmenge von DBCs ein Busdesign enthalten, und die Initialisierung einer zweiten DBC enthält das Laden des Busdesigns. In verschiedenen Ausführungsformen kann eine DBC in der zweiten Teilmenge von DBCs ein Netzwerkdesign enthalten, und die Initialisierung der DBC kann das Laden des Netzwerkdesigns enthalten.
  • In verschiedenen Ausführungsformen kann eine DBC in der ersten Teilmenge einen Kern des Host-Prozessors enthalten. In einigen Ausführungsformen kann eine DBC in der ersten Teilmenge eine Peripheral Component Interconnect express (PCIe)-Vorrichtungskarte enthalten, und die Initialisierung der DBC kann die Registrieren des FPGA 106 als eine PCIe-Endpunktvorrichtung enthalten. In einigen solcher Ausführungsformen kann die Initialisierung der DBC vor der Initialisierung einer zweiten DBC erfolgen, die eine PCI-Nummerierung und/oder Ressourcenzuweisung enthalten kann. In vielen Ausführungsformen kann eine DBC in der zweiten Teilmenge einen Softprozessor des FPGA 106 enthalten. In einer oder mehreren Ausführungsformen kann sich der zweite Satz Boot-Instruktionen in dem FPGA-Speicher oder einem internen Speicher des FPGA 106 befinden. In einigen Ausführungsformen kann das FPGA dem Host-Prozessor 104 die erfolgreiche Initialisierung der DBC in der zweiten Teilmenge von DBCs anzeigen. In verschiedenen Ausführungsformen kann die Logik das FPGA so rekonfigurieren, dass es nach Abschluss der Boot-Sequenz eine Laufzeitoperation ausführt.
  • 2 veranschaulicht ein Beispiel für eine Betriebsumgebung 200, die für verschiedene Ausführungsformen repräsentativ sein kann. Zusätzlich zu den Komponenten der Betriebsumgebung 100 kann die Betriebsumgebung 200 Host-Boot-Instruktion 204, FPGA-Boot-Instruktion 206, Siliziumkomponenten 208 und Plattformkomponenten 210 enthalten. In verschiedenen Ausführungsformen können die Host-Boot-Instruktionen 204 in einem Speicher innerhalb des Host-Prozessors 104 gespeichert oder dort hinein geladen werden, und die FPGA-Boot-Instruktionen 206 können in einem Speicher innerhalb des FPGA 106 gespeichert oder dort hinein geladen werden. In einer oder mehreren im vorliegenden Text beschriebenen Ausführungsformen kann der Host-Prozessor 104 die Host-Boot-Instruktionen 204 ausführen, und das FPGA 106 kann die FPGA-Boot-Instruktionen 206 ausführen, um die Siliziumkomponenten 208 und die Plattformkomponenten 210 zu initialisieren. Zum Beispiel kann der Host-Prozessor 104 einen ersten Abschnitt der DBCs 108 initialisieren, und das FPGA 106 kann einen zweiten Abschnitt der DBCs 108 initialisieren. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • In einer oder mehreren Ausführungsformen kann sich eine Boot-Sequenz der Computerplattform 102 auf Boot-Code stützen, der so aufgebaut und partitioniert werden kann, dass er sowohl auf den Host-Prozessor 104 als auch auf das FPGA 106 geladen werden kann. In einigen Ausführungsformen können zwei separate Binärdateien oder Sätze von Binärdateien generiert und programmiert werden, jeweils eine für den Host-Prozessor 104 und für das FPGA 106 (zum Beispiel Host-Boot-Instruktionen 204 und FPGA-Boot-Instruktionen 206). In verschiedenen Ausführungsformen kann eine Host-Prozessor-Binärdatei in einer nicht flüchtigen seriellen Peripherieschnittstelle (Serial Peripheral Interface, SPI) gespeichert werden, und ein FPGA-Binärdatei kann in einem eingebauten Boot-Flash gespeichert werden.
  • In einigen Ausführungsformen kann beim Einschalten der integrierte Nurlesespeicher (ROM) in dem FPGA 106 einen Softprozessorkern initialisieren. In einigen solcher Ausführungsformen kann der Softprozessor dann den FPGA-Boot-Code aus dem integrierten Flash laden, um eine oder mehrere DBCs in dem Satz 108 zu initialisieren, wie zum Beispiel Silizium- oder Plattformkomponenten, und kann dann mit dem Ausführen des FPGA-Boot-Codes beginnen, um einen Abschnitt der DBCs 108 in der Computerplattform 102 zu initialisieren. In verschiedenen Ausführungsformen kann der Host-Prozessor 104 auch den Host-Prozessor-Boot-Code holen und mit dem Ausführen des Host-Prozessor-Boot-Codes beginnen, um einen weiteren Abschnitt der DBCs 108 in der Computerplattform 102 zu initialisieren. In verschiedenen solchen Ausführungsformen kann der Host-Prozessor 104 den Host-Prozessor-Boot-Code holen und dessen Ausführung gleichzeitig mit dem Laden und Beginnen der Ausführung des FPGA-Boot-Codes beginnen. In anderen solchen Ausführungsformen kann der Host-Prozessor 104 den Host-Prozessor-Boot-Code holen und dessen Ausführung nach dem Laden und Beginnen der Ausführung des FPGA-Boot-Codes beginnen. Zum Beispiel braucht der Host-Prozessor 104 den Host-Prozessor-Boot-Code erst dann zu holen und mit seiner Ausführen beginnen, wenn er aus dem Reset-Zustand herauskommt. In solchen Fällen kann das FPGA 106 eine oder mehrere DBCs 108 initialisieren, bevor der Host-Prozessor 104 aus dem Reset-Zustand herauskommt.
  • In verschiedenen Ausführungsformen, am Ende der Boot-Sequenz zum Initialisieren der Computerplattform 102 (zum Beispiel nach dem Laden eines Betriebssystems), kann das FPGA 106 mit einem anderen Bitstrom für Laufzeitoperationen, wie zum Beispiel Kernanwendungen, rekonfiguriert werden. Zu den Kernanwendungen können zum Beispiel maschinelles Lernen, Computer Vision, Deep Learning und ähnliche Anwendungen gehören. In einer oder mehreren Ausführungsformen kann das Rekonfigurieren des FPGA 106 automatisch zuvor verwendete FPGA-Boot-Sequenz-Ressourcen zurückgewinnen.
  • In vielen Ausführungsformen können die im vorliegenden Text beschriebenen Fähigkeiten der Computerplattform 102 eine Schlüsselrolle beim Ermöglichen anderer Plattformdesignfunktionen spielen, wie zum Beispiel künstliche Intelligenz, Signalverarbeitung und andere Computational Intelligence-Technologien, die in dem oder durch das FPGA 106 implementiert werden können. Kurze Boot-Zeiten können in extrem reaktionsschnellen Computerplattformen von entscheidender Bedeutung sein, und je länger es dauert, eine Plattform zu initialisieren, desto länger wird die Bereitschaft der Plattformfähigkeiten behindert. In einigen Ausführungsformen kann dies besonders nützlich sein, um selbstfahrende Autos, Machine Vision-Kameramodule usw. zu unterstützen.
  • Wie bereits erwähnt, können der Host-Prozessor 104 und das FPGA 106 jeweils individuelle und separate Boot-Flüsse durchlaufen (zum Beispiel unterschiedliche Initialisierungsprozesse). In Ausführungsformen des FPGA 106 mit integrierten Boot-Flash-Fähigkeiten kann die Vorrichtung fast sofort initialisiert und in einen Zustand versetzt werden, in dem Eingaben oder Instruktionen von dem Host-Prozessor 104 erwartet werden. In einigen Ausführungsformen kann der Host-Prozessor 104 Abhängigkeiten von anderen Siliziumkomponenten 208 und/oder Plattformkomponenten 210 haben, wie PMC oder Security-Engine-Bereitschaft, bevor hintereinander eine Siliziuminitialisierung, wie zum Beispiel Speicher-E/As, gefolgt von einer Plattforminitialisierung, wie zum Beispiel Universal Serial Bus (USB), Ethernet-Vorrichtung oder Grafik, ausgeführt werden. In einigen solcher Ausführungsformen kann das FPGA 106 aus den Abhängigkeiten resultierende Engpässe reduzieren oder beseitigen, um die Boot-Zeit der Computerplattform 102 zu verbessern.
  • 3 veranschaulicht ein Beispiel für eine Betriebsumgebung 300, die für verschiedene Ausführungsformen repräsentativ sein kann. Die Betriebsumgebung 300 kann das FPGA 106 mit einem Softprozessor 302 und Funktionskonfigurationen 304-1, 304-2, 304-n enthalten. In einer oder mehreren im vorliegenden Text beschriebenen Ausführungsformen kann das FPGA 106 so rekonfiguriert werden, dass der Softprozessor 304 eine gewünschte Funktion unterstützt. In einigen Ausführungsformen kann das FPGA 106 durch Reinitialisierung des Softprozessors 302 mit einer gewünschten Funktionskonfiguration, wie zum Beispiel Deep Learning, maschinelles Lernen, Computer-Vision, Hardware-Beschleunigung usw., rekonfiguriert werden. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • In einigen Ausführungsformen kann, beim Einschalten, der integrierte Nurlesespeicher (ROM) in dem FPGA 106 einen Softprozessorkern mit einer Initialisierungsbeschleunigungsfunktionskonfiguration (zum Beispiel die Funktionskonfiguration 304-1) initialisieren. In einigen solcher Ausführungsformen kann der Softprozessor dann den FPGA-Boot-Code aus dem integrierten Flash laden, um eine oder mehrere DBCs in dem Satz 108 zu initialisieren, wie zum Beispiel Silizium- oder Plattformkomponenten, und kann dann mit dem Ausführen des FPGA-Boot-Codes beginnen, um einen Abschnitt der DBCs 108 in der Computerplattform 102 zu initialisieren. In verschiedenen Ausführungsformen kann der Host-Prozessor 104 auch den Host-Prozessor-Boot-Code holen und mit dem Ausführen des Host-Prozessor-Boot-Codes beginnen, um einen weiteren Abschnitt der DBCs 108 in der Computerplattform 102 zu initialisieren. In verschiedenen solchen Ausführungsformen kann der Host-Prozessor 104 den Host-Prozessor-Boot-Code holen und dessen Ausführung gleichzeitig mit dem Laden und Beginnen der Ausführung des FPGA-Boot-Codes beginnen. In anderen solchen Ausführungsformen kann der Host-Prozessor 104 den Host-Prozessor-Boot-Code holen und dessen Ausführung nach dem Laden und Beginnen der Ausführung des FPGA-Boot-Codes beginnen. Zum Beispiel braucht der Host-Prozessor 104 den Host-Prozessor-Boot-Code erst dann zu holen und mit seiner Ausführen beginnen, wenn er aus dem Reset-Zustand herauskommt. In solchen Fällen kann das FPGA 106 eine oder mehrere DBCs 108 initialisieren, bevor der Host-Prozessor 104 aus dem Reset-Zustand herauskommt.
  • In verschiedenen Ausführungsformen, am Ende der Boot-Sequenz zum Initialisieren der Computerplattform 102 (zum Beispiel nach dem Laden eines Betriebssystems), kann das FPGA 106 mit einem anderen Bitstrom für Laufzeitoperationen, wie zum Beispiel Kernanwendungen, rekonfiguriert werden. Mit anderen Worten: Nach der Initialisierung der Computerplattform 102 können das FPGA 106 und/oder der Softprozessor 302 mit einer gewünschten Funktionskonfiguration aus einer oder mehreren Funktionskonfigurationen 304-1, 304-2, 304-n rekonfiguriert werden. Zu den Kernanwendungen können zum Beispiel Funktionskonfigurationen gehören, die mit maschinellem Lernen, Computervision, Deep Learning und ähnlichen Anwendungen verknüpft sind. In einer oder mehreren Ausführungsformen kann das Rekonfigurieren des FPGA 106 automatisch zuvor verwendete FPGA-Boot-Sequenz-Ressourcen zurückgewinnen.
  • In einigen Ausführungsformen kann die Fähigkeit der Computerplattform 106, das FPGA 106 zu konfigurieren und zu rekonfigurieren, eine Umnutzung der FPGA 106-Konfiguration dynamisch (on the fly) und/oder nach Bedarf ermöglichen. Zum Beispiel kann das Konfigurieren des FPGA 106 als eine Prozessor-Engine zum Unterstützen und Beschleunigen der Plattforminitialisierung während einer Boot-Phase erfolgen, während das FPGA 106 für eine Laufzeitoperation, wie zum Beispiel Deep Learning, Computer Vision und/oder E/A-Erweiterungen, nach Abschluss der Boot-Sequenz rekonfiguriert wird. In vielen Ausführungsformen kann eine Boot-Sequenz eines oder mehrere von einer Plattforminitialisierung und dem Laden eines Betriebssystems enthalten.
  • In verschiedenen Ausführungsformen kann das Umnutzen oder Rekonfigurieren des FPGA 106 in verschiedenen Systemphasen (zum Beispiel Boot- und Laufzeitphasen, Benutzermodus, Kernel-Modus, Betriebssystemphasen usw.) bei Bedarf eine erhebliche Reduzieren der Gesamtkosten der Plattformbauteile sowie des Stromverbrauchs der Laufzeitplattform realisieren. In einigen Ausführungsformen brauchen einige DBCs 108 nur während bestimmter Systemphasen erforderlich zu sein. Zum Beispiel braucht ein Host-SMBus-Controller älterer Bauart nur während einer Speicherinitialisierungsphase erforderlich zu sein. In solchen Beispielen kann der SMBus-Controller Serial Presence Detect (SPD)-Informationen aus Dual-In-Line-Speichermodulen (Dual In-line Memory Modules, DIMMs) lesen, die anschließend nicht mehr verwendet werden. In einigen solcher Beispiele kann das FPGA 106 so konfiguriert werden, dass es SMBus-Controller-Funktionalität in einer frühen Boot-Phase bereitstellt. In weiteren solchen Beispielen können die durch das FPGA 106 genutzten Ressourcen zurückgewonnen und zu verschiedene Funktionalitäten programmiert werden, die in einer Betriebssystemphase benötigt werden. In einigen Ausführungsformen kann das FPGA 106 die Bauteilkosten und den Stromverbrauch reduzieren, indem SMBus-Controller älterer Bauart aus dem Design entfernt werden (zum Beispiel einem System on Chip (SoC)-Design).
  • 4 veranschaulicht eine Ausführungsform eines Logikflusses 400, der für Operationen repräsentativ sein kann, die in verschiedenen Ausführungsformen in Verbindung mit der Plattforminitialisierung ausgeführt werden können. Der Logikfluss 400 kann für einige oder alle der Operationen repräsentativ sein, die durch eine oder mehrere Komponenten der Betriebsumgebungen 100, 200 oder 300 der 1-3, wie zum Beispiel den Host-Prozessor 104, das FPGA 106 und/oder die Logik 110, ausgeführt werden können. In einer oder mehreren Ausführungsformen kann der Logikfluss 400 veranschaulichen, wie ein Abschnitt der Plattforminitialisierung von einem Host-Prozessor zu einem FPGA ausgelagert wird. In einer oder mehreren solcher Ausführungsformen kann der Abschnitt der Plattforminitialisierung, der durch das FPGA durchgeführt wird, die vollständige Initialisierung von Peripherievorrichtungen enthalten. In weiteren solchen Ausführungsformen kann dies gleichzeitig mit der Initialisierung des Host-Prozessors erfolgen. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • Es versteht sich, dass in den veranschaulichten Ausführungsformen Schritte innerhalb des als Host-Prozessor 402 gekennzeichneten Strichlinienkästchens durch einen Host-Prozessor, wie zum Beispiel den Host-Prozessor 104, ausgeführt werden, und Schritte innerhalb des als FPGA 452 gekennzeichneten Strichlinienkästchens durch ein FPGA, wie zum Beispiel das FPGA 106, ausgeführt werden. Zusätzlich können ein oder mehrere Schritte, die durch den Host-Prozessor 402 ausgeführt werden, durch Ausführen von Host-Boot-Instruktionen 204 ausgeführt werden, und ein oder mehrere Schritte, die durch das FPGA 452 ausgeführt werden, können durch Ausführen der FPGA-Boot-Instruktionen 206 ausgeführt werden.
  • Der Logikfluss 400 kann in Block 404 „Einschalten“ beginnen. In verschiedenen Ausführungsformen kann der Host-Prozessor 402 in Reaktion auf das Einschalten der Computerplattform 102 die Initialisierung des Energieverwaltungs-Controllers in Block 406 durchführen. Als Nächstes kann in Block 408 der Host-Prozessor 402 die Initialisierung einer Security-Engine durchführen. Zusätzlich kann das FPGA 106 in Reaktion auf das Einschalten der Computerplattform 102 die Softprozessor-Initialisierung in Block 456 durchführen. Als Nächstes kann, in Block 410, der Host-Prozessor 402 die Kerninitialisierung durchführen. Zum Beispiel kann der Host-Prozessor 402 einen seiner eigenen Kerne initialisieren. Ausgehend von Block 456, „Softprozessor-Initialisierung“, kann das FPGA nach der Initialisierung des Softprozessors bei Block 458 mit der Silizium-Initialisierung beginnen. Zum Beispiel können eine oder mehrere Siliziumkomponenten 208 initialisiert werden. In einigen Ausführungsformen kann an den Host-Prozessor 402 ein Hinweis auf den Initialisierungserfolg oder -zustand übermittelt werden. In verschiedenen Ausführungsformen kann die Leistung der Kerninitialisierung bei Block 410 von der in Bock 458 durchgeführten Silizium-Initialisierung abhängen.
  • Als Nächstes kann, in Block 412, der Host-Prozessor 402 die Speicherinitialisierung durchführen. Zum Beispiel kann der Host-Prozessor einen Speicher-Controller oder eine Speicherschnittstelle initialisieren. In Block 414 kann der Host-Prozessor 402 eine andere Silizium-Initialisierung durchführen. Zum Beispiel kann der Host-Prozessor 402 jede der Siliziumkomponenten 208 initialisieren, die nicht bereits durch das FPGA 452 initialisiert wurden, wie zum Beispiel bei Block 458. Nach Block 416, „Plattforminitialisierung“, kann der Host-Prozessor 402 eine oder mehrere Plattformkomponenten initialisieren, wie zum Beispiel eine oder mehrere der Plattformkomponenten 210. Ausgehend von Block 458, „Silizium-Initialisierung“, kann das FPGA 452, nachdem es die Siliziumkomponenten in Block 458 initialisiert hat, die Plattforminitialisierung 460 durchführen. In verschiedenen Ausführungsformen kann die Plattforminitialisierung in Block 416 einen ersten Abschnitt der Plattformkomponenten 210 initialisieren, und die Plattforminitialisierung in Block 460 kann einen zweiten Abschnitt der Plattformkomponenten 210 initialisieren.
  • Nach Block 462, „Transferieren der Zustandsmaschine für initialisierte Komponenten zu dem Host-Prozessor“, kann das FPGA 452 Zustandsmaschineninformationen für initialisierte Komponenten an den Host-Prozessor 402 übermitteln. Mit anderen Worten: In einigen Ausführungsformen kann das FPGA 452 einen Hinweis auf den Zustand einer oder mehrerer Komponenten, die es initialisiert hat, an den Host-Prozessor 402 übermitteln. Unter Bezug auf Block 418, „Booten zu Betriebssystem“, kann der Host-Prozessor 402 zu einem Betriebssystem booten, sobald alle Siliziumkomponenten 208 und die Plattformkomponenten 210 initialisiert sind. Unter Bezug auf Block 464 kann das FPGA 452 einen Bitstream aus dem Flash laden und initialisieren, um sich zum Beispiel für das Ausführen einer Laufzeitoperation zu rekonfigurieren. Bei Block 420 können eines oder mehrere des Host-Prozessors 402 und des FPGA 452 eine oder mehrere Laufzeitoperationen ausführen.
  • 5 veranschaulicht eine Ausführungsform eines Logikflusses 500, der für Operationen repräsentativ sein kann, die in verschiedenen Ausführungsformen in Verbindung mit der Plattforminitialisierung ausgeführt werden können. Der Logikfluss 500 kann für einige oder alle der Operationen repräsentativ sein, die durch eine oder mehrere Komponenten der Betriebsumgebungen 100, 200 oder 300 der 1-3, wie zum Beispiel den Host-Prozessor 104, das FPGA 106, DBCs 108 und/oder die Logik 110, ausgeführt werden können. In einer oder mehreren Ausführungsformen kann der Logikfluss 500 das Arbitrieren von Treibern demonstrieren, was durch die Computerplattform 102 ermöglicht wird. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • Es versteht sich, dass in den veranschaulichten Ausführungsformen Schritte innerhalb des als Host-Prozessor 502 gekennzeichneten Strichlinienkästchens durch einen Host-Prozessor, wie zum Beispiel den Host-Prozessor 104, ausgeführt werden, und Schritte innerhalb des als FPGA-Prozessors 552 gekennzeichneten Strichlinienkästchens durch ein FPGA, wie zum Beispiel das FPGA 106, ausgeführt werden. Zusätzlich können ein oder mehrere Schritte, die durch den Host-Prozessor 502 ausgeführt werden, durch Ausführen von Host-Boot-Instruktionen 204 ausgeführt werden, und ein oder mehrere Schritte, die durch das FPGA 552 ausgeführt werden, können durch Ausführen der FPGA-Boot-Instruktionen 206 ausgeführt werden.
  • In einigen Ausführungsformen kann die Computerplattform 102 eine Architektur bereitstellen, die die Initialisierung von Siliziumkomponenten und/oder Plattformkomponenten an das FPGA auslagert. In einigen solcher Ausführungsformen können ein oder mehrere FPGA-Designs (zum Beispiel Funktionskonfigurationen) in dem FPGA enthalten und/oder gespeichert sein. In vielen Ausführungsformen können sich der Host-Prozessor 502 und das FPGA 552 während des Bootvorgangs Verantwortlichkeiten für das Durchführen der Initialisierungen in Bezug auf Silizium- und Plattformkomponenten teilen. In Ausführungsformen, in denen das FPGA einen internen Flash-Speicher enthält, kann es viel früher als der Host-Prozessor 502 eingeschaltet werden, und der Softprozessor kann viel früher als der Host-Prozessor 502 initialisiert werden. In verschiedenen Ausführungsformen kann der Host-Prozessor 502 als ein Haupt-Controller einer Zustandsmaschine fungieren, um den Betrieb des FPGA zu konfigurieren, zum Beispiel das Laden von Sequenzen und Parametern verschiedener Designs.
  • Der Logikfluss 500 kann in Block 510 „Boot-Treiber-Parameter“ beginnen. In einigen Ausführungsformen können die Boot-Treiber-Parameter auf der Basis der detektierten Computerplattform geladen werden (zum Beispiel DBCs 108, Plattformidentifizierer usw.). Das FPGA 552 kann dann verwendet werden, um geeignete Designs in einer definierten Reihenfolge zu laden, zum Beispiel Treiberdesigns. In solchen Situationen kann das FPGA 552 verwendet werden, um Initialisierungen auszuführen, die das Laden eines Bus-Designs in Block 512, das Laden eines Netzwerk-Designs in Block 514 und das Laden anderer Designs in Block 516 enthalten. In vielen Ausführungsformen kann ein Fehlerstatus ausgebreitet werden, zum Beispiel durch einen oder mehrere Host-Prozessoren 502 und das FPGA 552. Nach Block 516 kann das FPGA 552 in einigen Ausführungsformen ein Boot-Log, zum Beispiel ein durch das FPGA 552 konsolidiertes Boot-Log, an den Host-Prozessor 502 senden.
  • Ausgehend von Block 510 kann der Host-Prozessor 502 in Reaktion auf das Laden der Boot-Treiber-Parameter die Bibliothek-Initialisierung 530 durchführen. Bei Block 532 kann der Host-Prozessor 502 einen Treiberstatusausdruck 532 generieren. In einer oder mehreren Ausführungsformen kann der Treiberstatusausdruck 502 auf einem Boot-Log basieren, das von dem FPGA 552 nach dem Schritt 516 an den Host-Prozessor 502 gesendet wurde. Als Nächstes, in Block 534, „Aufbauen eines Vorrichtungsbaumes“, kann der Host-Prozessor 502 Operationen zum Aufbau eines Vorrichtungsbaums ausführen. In einigen Ausführungsformen kann der Vorrichtungsbaum einen Advance Configuration and Power Interface (ACPI)-Baum enthalten. In verschiedenen Ausführungsformen kann der Host-Prozessor 502 einen oder mehrere ACPI-Parameter und einen Vorrichtungsbaum auf der Basis der Ausgabe von dem FPGA 552 erstellen, zum Beispiel der Ausgabe, die vor der Übergabe der Kontrolle an den Betriebssystemkern bereitgestellt wird.
  • 6 veranschaulicht eine Ausführungsform eines Logikflusses 600, der für Operationen repräsentativ sein kann, die in verschiedenen Ausführungsformen in Verbindung mit der Plattforminitialisierung ausgeführt werden können. Der Logikfluss 600 kann für einige oder alle der Operationen repräsentativ sein, die durch eine oder mehrere Komponenten der Betriebsumgebungen 100, 200 oder 300 der 1-3, wie zum Beispiel den Host-Prozessor 104, das FPGA 106, DBCs 108 und/oder die Logik 110, ausgeführt werden können. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • In der in 6 veranschaulichten Ausführungsform kann der Logikfluss 600 in Block 602 beginnen. Bei Block 602, „Initiieren einer Boot-Sequenz, wobei die Boot-Sequenz eine Plattform initialisiert, um Eingabe/Ausgabe (E/A)-Operationen auszuführen, wobei die Plattform einen Host-Prozessor und ein Feldprogrammierbares Gate Array (FPGA) umfasst“, wird eine Boot-Sequenz zum Initialisieren einer Plattform, die einen Host-Prozessor und ein FPGA zum Ausführen von E/A-Operationen umfasst, ausgeführt. Zum Beispiel kann eine Boot-Sequenz zum Initialisieren einer Computerplattform 102 initiiert werden. In verschiedenen Ausführungsformen kann die Boot-Sequenz in Reaktion auf das Einschalten der Computerplattform 102 initiiert werden. In einigen Ausführungsformen kann der Host-Prozessor 104 die Boot-Sequenz initiieren.
  • Als Nächstes, in Blocks 604, „Ausführen eines ersten Satzes Boot-Instruktionen mit dem Host-Prozessor als Teil der Boot-Sequenz, wobei der erste Satz Boot-Instruktionen jede abhängige bootfähige Komponente (DBC) in einem ersten Satz DBCs initialisiert“, kann ein erster Satz Boot-Instruktionen mit dem Host-Prozessor als Teil der Boot-Sequenz ausgeführt werden, wobei der erste Satz Boot-Instruktionen jeden DBC in einem ersten Satz DBCs initialisiert. Zum Beispiel kann der Host-Prozessor 104 die Host-Boot-Instruktionen 204 ausführen, um eine oder mehrere der DBCs 108 zu initialisieren. In einigen Ausführungsformen kann der Host-Prozessor 104 eine oder mehrere der Siliziumkomponenten 208 initialisieren. In verschiedenen Ausführungsformen kann der Host-Prozessor 104 eine oder mehrere der Plattformkomponenten 210 initialisieren.
  • Als Nächstes, in Block 606, „Ausführen eines zweiten Satzes Boot-Instruktionen mit dem FPGA als Teil der Boot-Sequenz, wobei der zweite Satz Boot-Instruktionen jede DBC in einem zweiten Satz DBCs initialisiert“, kann ein zweiter Satz Boot-Instruktionen mit dem FPGA als Teil der Boot-Sequenz ausgeführt werden, wobei der zweite Satz Boot-Instruktionen jede DBC in einem zweiten Satz DBCs initialisiert. Zum Beispiel kann das FPGA 106 die Host-Boot-Instruktionen 206 ausführen, um eine oder mehrere DBCs 108 zu initialisieren. In einigen Ausführungsformen kann das FPGA 106 eine oder mehrere der Siliziumkomponenten 208 initialisieren. In verschiedenen Ausführungsformen kann das FPGA 106 eine oder mehrere Plattformkomponenten 210 initialisieren.
  • 7 veranschaulicht eine Ausführungsform eines Speichermediums 700. Das Speichermedium 700 kann jedes nicht transitorische computerlesbare Speichermedium oder maschinenlesbare Speichermedium, wie zum Beispiel ein optisches, magnetisches oder Halbleiter-Speichermedium, umfassen. In verschiedenen Ausführungsformen kann das Speichermedium 700 ein Erzeugnis enthalten. In einigen Ausführungsformen kann das Speichermedium 700 computerausführbare Instruktionen speichern, wie zum Beispiel computerausführbare Instruktionen zum Implementieren eines oder mehrerer der im vorliegenden Text beschriebenen Logikflüsse oder Operationen, wie zum Beispiel in Bezug auf den Logikfluss 400 von 4, den Logikfluss 500 von 5 und den Logikfluss 600 von 6. Zu Beispielen für ein computerlesbares Speichermedium oder ein maschinenlesbares Speichermedium können alle greifbaren Medien gehören, die elektronische Daten speichern können, einschließlich flüchtiger Speicher oder nicht flüchtiger Speicher, wechselfähiger oder nicht-wechselfähiger Speicher, löschbarer oder nicht-löschbarer Speicher, beschreibbarer oder wiederbeschreibbarer Speicher usw. Zu Beispielen für computerausführbare Instruktionen kann jede geeignete Art von Code gehören, wie zum Beispiel Quellcode, kompilierter Code, interpretierter Code, ausführbarer Code, statischer Code, dynamischer Code, objektorientierter Code, visueller Code und dergleichen. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • 8 veranschaulicht eine Ausführungsform einer beispielhaften Computerarchitektur 800, die sich zum Implementieren verschiedener Ausführungsformen, wie zuvor beschrieben, eignen kann. In verschiedenen Ausführungsformen kann die Computerarchitektur 800 eine elektronische Vorrichtung umfassen oder als Teil einer solchen implementiert werden. In einigen Ausführungsformen kann die Computerarchitektur 800 zum Beispiel für ein Computersystem repräsentativ sein, das eine oder mehrere Komponenten der Betriebsumgebung 100 von 1, der Betriebsumgebung 200 von 2 und/oder der Betriebsumgebung 300 von 3 implementiert oder verwendet. In einigen Ausführungsformen kann die Computerarchitektur 800 zum Beispiel für einen oder mehrere Abschnitte der Computerplattform 102 repräsentativ sein, die eine oder mehrere im vorliegenden Text beschriebene Ausführungsformen implementiert oder nutzt. Der Host-Prozessor 104 kann zum Beispiel eine zentrale Verarbeitungseinheit (CPU) sein, die in Verbindung mit der Computerarchitektur 800 arbeitet. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • Im Sinne des vorliegenden Anmeldung sollen sich die Begriffe „System“ und „Komponente“ und „Modul“ auf eine computerbezogene Entität beziehen, entweder Hardware, eine Kombination aus Hardware und Software, Software, oder Software in Ausführung, wofür Beispiele durch die beispielhafte Computerarchitektur 800 bereitgestellt werden. Zum Beispiel kann eine Komponente sein: ein Prozess, der auf einem Prozessor abläuft, ein Prozessor, ein Festplattenlaufwerk, mehrere Speicherlaufwerke (mit optischem und/oder magnetischem Speichermedium), ein Objekt, eine ausführbare Datei, ein Ausführungs-Thread, ein Programm und/oder ein Computer. Zum Zweck der Veranschaulichung können sowohl eine Anwendung, die auf einem Server läuft, als eine der Server eine Komponente sein. Eine oder mehrere Komponenten können sich innerhalb eines Prozesses und/oder eines Ausführungs-Threads befinden, und eine Komponente kann sich lokal auf einem Computer befinden und/oder kann auf zwei oder mehr Computer verteilt sein. Darüber hinaus können Komponenten durch verschiedene Arten von Kommunikationsmedien kommunikativ miteinander gekoppelt sein, um Operationen zu koordinieren. Die Koordination kann den unidirektionalen oder bidirektionalen Austausch von Informationen enthalten. Zum Beispiel können die Komponenten Informationen in Form von Signalen übermitteln, die über die Kommunikationsmedien übermittelt werden. Die Informationen können in Form von Signalen implementiert werden, die verschiedenen Signalleitungen zugeordnet sind. Bei solchen Zuweisungen ist jede Nachricht ein Signal. Weitere Ausführungsformen können jedoch alternativ auch Datennachrichten verwenden. Solche Datennachrichten können über verschiedene Verbindungen gesendet werden. Zu beispielhaften Verbindungen gehören parallele Schnittstellen, serielle Schnittstellen und Busschnittstellen.
  • Die Computerarchitektur 800 enthält verschiedene übliche Computerelemente, wie zum Beispiel einen oder mehrere Prozessoren, Mehrkernprozessoren, Co-Prozessoren, Speichereinheiten, Chipsätze, Controller, Peripheriegeräte, Schnittstellen, Oszillatoren, Zeitnahmevorrichtungen, Videokarten, Audiokarten, Multimedia-Eingabe/Ausgabe (E/A)-Komponenten, Stromversorgungen usw. Die Ausführungsformen sind jedoch nicht auf ein Implementieren durch die Computerarchitektur 800 beschränkt.
  • Wie in 8 gezeigt, umfasst die Computerarchitektur 800 eine Verarbeitungseinheit 804, einem Systemspeicher 806 und einem Systembus 808. Die Verarbeitungseinheit 804 kann eine beliebige von verschiedenen handelsüblichen Prozessoren sein, darunter beispielsweise AMD® Athlon®-, Duron®- und Opteron®-Prozessoren, ARM®-Anwendungs-, eingebettete und sichere Prozessoren, IBM®- und Motorola® DragonBall®- und PowerPC®-Prozessoren, IBM- und Sony® Cell-Prozessoren, Intel® Celeron®-, Core (2) Duo®-, Itanium®-, Pentium®-, Xeon®- und XScale®-Prozessoren, und ähnliche Prozessoren. Duale Mikroprozessoren, Mehrkernprozessoren und andere Mehrprozessorarchitekturen können ebenfalls als die Verarbeitungseinheit verwendet werden 804.
  • Der Systembus 808 bildet eine Schnittstelle für Systemkomponenten, einschließlich beispielsweise den Systemspeicher 806 mit der Verarbeitungseinheit 804. Der Systembus 808 kann eine beliebige von verschiedenen Arten einer Busstruktur sein, die des Weiteren mit einem Speicherbus (mit oder ohne Speichercontroller), einem Peripheriebus und einem lokalen Bus unter Verwendung einer beliebigen aus einer Vielzahl verschiedener handelsüblicher Busarchitekturen verbunden sein kann. Schnittstellenadapter können über eine Steckplatzarchitektur mit dem Systembus 808 gekoppelt werden. Zu beispielhaften Steckplatzarchitekturen gehören Accelerated Graphics Port (AGP), Card Bus, (Extended) Industry Standard Architecture ((E)ISA), Micro Channel Architecture (MCA), NuBus, Peripheral Component Interconnect (Extended) (PCI(X)), PCI Express, Personal Computer Memory Card International Association (PCMCIA) und dergleichen.
  • Der Systemspeicher 806 kann verschiedene Arten von computerlesbaren Speichermedien in Form einer oder mehrerer schnellerer Speichereinheiten enthalten, wie zum Beispiel Nurlesespeicher (ROM) Direktzugriffsspeicher (RAM), dynamischer RAM (DRAM), Doppeldatenraten-DRAM (DDRAM), synchroner DRAM (SDRAM), statischer RAM (SRAM), programmierbarer ROM (PROM), löschbarer programmierbarer ROM (EPROM), elektrisch löschbarer programmierbarer ROM (EEPROM), Flash-Speicher (zum Beispiel ein oder mehrere Flash-Arrays), Polymerspeicher, wie zum Beispiel ferroelektrischer Polymerspeicher, ovonischer Speicher, Phasenänderungs- oder ferroelektrischer Speicher, Silizium-Oxid-Nitrid-Oxid-Silizium (SONOS)-Speicher, magnetische oder optische Karten, ein Array von Vorrichtungen, wie zum Beispiel Redundant Array of Independent Disks (RAID)-Laufwerke, Festkörperspeichervorrichtungen (zum Beispiel USB-Speicher), Festkörperlaufwerke (SSD) und sonstige andere Arten von Speichermedien, die zum Speichern von Informationen geeignet sind. In der veranschaulichten Ausführungsform, die in 8 gezeigt ist, kann der Systemspeicher 806 einen nicht flüchtigen Speicher 810 und/oder einen flüchtigen Speicher 812 enthalten. In einigen Ausführungsformen kann der Systemspeicher 806 Hauptspeicher enthalten. Ein Basic Input/Output (BIOS)-System kann in dem nicht flüchtigen Speicher 810 gespeichert werden.
  • Der Computer 802 kann verschiedene Arten von computerlesbaren Speichermedien in Form einer oder mehrerer langsamerer Speichereinheiten enthalten, einschließlich eines internen (oder externen) Festplattenlaufwerks (HDD) 814, eines Magnetdiskettenlaufwerks (FDD) 816 zum Lesen oder Beschreiben einer wechselfähigen Magnet-Disk 818, und eines optischen Disk-Laufwerks 820 zum Lesen oder Beschreiben einer wechselfähigen optischen Disk 822 (zum Beispiel einer CD-ROM oder DVD). Die HDD 814, die FDD 816 und das optische Laufwerk 820 können über eine HDD-Schnittstelle 824, eine FDD-Schnittstelle 826 bzw. eine Schnittstelle für optische Laufwerke 828 mit dem Systembus 808 verbunden werden. Die HDD-Schnittstelle 824 für externe Laufwerkimplementierungen kann mindestens eine der Schnittstellentechnologien Universal Serial Bus (USB) und Institute of Electrical and Electronics Engineers (IEEE) 994 enthalten. In verschiedenen Ausführungsformen sind diese Speichertypen möglicherweise nicht im Hauptspeicher oder im Systemspeicher enthalten.
  • Die Laufwerke und zugehörigen computerlesbaren Medien stellen flüchtigen und/oder nicht flüchtige Speicher für Daten, Datenstrukturen, computerausführbaren Instruktionen usw. bereit. Zum Beispiel kann eine Anzahl von Programmmodulen in den Laufwerken und Speichereinheiten 810, 812 gespeichert werden, einschließlich eines Betriebssystems 830, eines oder mehrerer Anwendungsprogramme 832, anderer Programmmodule 834 und Programmdaten 836. In einer Ausführungsform können das eine oder die mehreren Anwendungsprogramme 832, anderen Programmodule 834 und Programmdaten 836 zum Beispiel die verschiedenen Anwendungen und/oder Komponenten der Computerplattform 102, wie zum Beispiel Logik 110, enthalten.
  • Ein Benutzer kann Befehle und Informationen in den Computer 802 über ein oder mehrere drahtgebundene/drahtlose Eingabevorrichtungen eingeben, zum Beispiel eine Tastatur 838 und ein Zeigevorrichtung, wie zum Beispiel eine Maus 840. Zu weiteren Eingabevorrichtungen können Mikrofone, Infrarot (IR)-Fernbedienungen, Hochfrequenz (HF)-Fernbedienungen, Spielekonsolen, Stylus-Stifte, Kartenleser, Dongles, Fingerabdruckleser, Handschuhe, Grafiktabletts, Joysticks, Tastaturen, Netzhautscanner, Touchscreens (zum Beispiel kapazitiv, resistiv usw.), Trackballs, Trackpads, Sensoren, Eingabestifte und dergleichen gehören. Diese und andere Eingabevorrichtungen sind häufig mit der Verarbeitungseinheit 804 über eine Eingabevorrichtungsschnittstelle 842 verbunden, die mit dem Systembus 808 gekoppelt ist, aber sie können auch über andere Schnittstellen verbunden werden, wie zum Beispiel einen Parallelport, einen seriellen IEEE 994-Port, einen Spieleport, einen USB-Port, eine IR-Schnittstelle usw.
  • Eine Monitor 844 oder eine andere Art von Anzeigevorrichtung ist ebenfalls über eine Schnittstelle, wie beispielsweise eine Videoschnittstelle 846, mit dem Systembus 808 verbunden. Der Monitor 844 kann sich in dem Computer 802 oder außerhalb des Computers 802 befinden. Zusätzlich zu dem Monitor 844 enthält ein Computer in der Regel auch andere Ausgabe-Peripheriegeräte, wie zum Beispiel Lautsprecher, Drucker usw.
  • Der Computer 802 kann in einer vernetzten Umgebung unter Verwendung logischer Verbindungen über drahtgebundene und/oder drahtlose Kommunikation mit einem oder mehreren räumlich abgesetzten Computern, wie zum Beispiel einem räumlich abgesetzten Computer 848, arbeiten. In verschiedenen Ausführungsformen können eine oder mehrere Migrationen über die Netzwerkumgebung stattfinden. Der räumlich abgesetzte Computer 848 kann eine Workstation, ein Server-Computer, ein Router, ein Personalcomputer, ein portabler Computer, ein Mikroprozessor-basiertes Unterhaltungsgerät, ein Peer-Gerät oder ein sonstiger üblicher Netzknoten sein und kann in der Regel viele oder alle Elemente enthalten, die im Zusammenhang mit dem Computer 802 beschrieben sind, obgleich im Interesse der Kürze nur eine Arbeits- oder Massenspeichervorrichtung 850 dargestellt ist. Die gezeigten logischen Verbindungen enthalten drahtgebundene/drahtlose Konnektivität zu einem Local Area Network (LAN) 852 und/oder größeren Netzwerken, zum Beispiel einem Wide Area Network (WAN) 854. Solche LAN- und WAN-Netzwerkumgebungen sind in Büros und Unternehmen üblich und ermöglichen unternehmensweite Computernetzwerke, wie zum Beispiel Intranets, die alle mit einem globales Kommunikationsnetzwerk, zum Beispiel das Internet, verbunden sein können.
  • Bei Verwendung in einer LAN-Netzwerkumgebung ist der Computer 802 über eine drahtgebundene und/oder drahtlose Kommunikationsnetzwerkschnittstelle oder einen Adapter 856 mit dem LAN 852 verbunden. Der Adapter 856 kann die drahtgebundene und/oder drahtlose Kommunikation mit dem LAN 852 ermöglichen, wozu auch ein darauf angeordneter Drahtloszugangspunkt zum Kommunizieren mit der Drahtlosfunktionalität des Adapters 856 gehören kann.
  • Bei Verwendung in einer WAN-Netzwerkumgebung kann der Computer 802 ein Modem 1358 enthalten, oder er ist mit einem Kommunikationsserver in dem WAN 854 verbunden, oder er besitzt andere Mittel zur Herstellen einer Kommunikation über das WAN 854, wie zum Beispiel über das Internet. Das Modem 858, das intern oder extern und eine drahtgebundene und/oder eine drahtlose Vorrichtung sein kann, ist über die Eingabevorrichtungsschnittstelle 842 mit dem Systembus 808 verbunden. In einer vernetzten Umgebung können Programmmodule, die mit Bezug auf den Computer 802 oder Abschnitte davon gezeigt sind, in dem räumlich abgesetzten Arbeits- oder Massenspeichervorrichtung 850 gespeichert werden. Es versteht sich, dass die gezeigten Netzwerkverbindungen beispielhaft sind und dass auch andere Mittel zum Herstellen einer Kommunikationsverbindung zwischen den Computern verwendet werden können.
  • Der Computer 802 ist dafür ausgelegt, mit drahtgebundenen und drahtlosen Vorrichtungen oder Entitäten unter Verwendung der IEEE 802-Standards-Familie zu kommunizieren, wie zum Beispiel Drahtlosvorrichtungen, die in drahtloser Kommunikationsverbindung stehen (zum Beispiel IEEE 802.16 Over-the-Air-Modulationstechniken). Dafür gehören mindestens die Drahtlostechnologien Wi-Fi (oder Wireless Fidelity), WiMax und Bluetooth™. Die Kommunikation kann somit eine vordefinierte Struktur wie bei einem konventionellen Netzwerk oder einfach eine Ad-hoc-Kommunikation zwischen mindestens zwei Vorrichtungen sein. Wi-Fi-Netzwerke verwenden Funktechnologien namens IEEE 802.11x (a, b, g, n usw.), um eine sichere, zuverlässige und schnelle drahtlose Verbindung bereitzustellen. Ein Wi-Fi-Netzwerk kann verwendet werden, um Computer miteinander, mit dem Internet und mit drahtgebundenen Netzwerken zu verbinden (die IEEE 802.3-bezogene Medien und Funktionen verwenden).
  • 9 veranschaulicht ein Blockdiagramm einer beispielhaften Kommunikationsarchitektur 900, die zum Implementieren verschiedener Ausführungsformen, wie sie zuvor beschrieben wurden, wie zum Beispiel zur Virtual-Machine-Migration, geeignet ist. Die Kommunikationsarchitektur 900 enthält verschiedene übliche Kommunikationselemente, wie zum Beispiel Sender, Empfänger, Transceiver, Funkvorrichtung, Netzwerkschnittstelle, Basisbandprozessor, Antenne, Verstärker, Filter, Stromversorgungen und so weiter. Die Ausführungsformen sind jedoch nicht auf ein Implementieren durch die Computerarchitektur 900 beschränkt.
  • Wie in 9 gezeigt, umfasst die Kommunikationsarchitektur 900 einen oder mehrere Clients 902 und Server 904. Die Clients 902 und die Server 904 sind mit einem oder mehreren jeweiligen Client-Datenspeichern 908 und Server-Datenspeichern 910 wirkverbunden, die zum Speichern von Informationen lokal in den jeweiligen Clients 902 und Servern 904, wie zum Beispiel von Cookies und/oder zugehörigen Kontextinformationen, verwendet werden können. In verschiedenen Ausführungsformen kann jeder der Server 904 einen oder mehrere der im vorliegenden Text beschriebenen Logikflüsse oder Operationen und das Speichermedium 700 von 7 in Verbindung mit dem Speichern von Daten, die von einem der Clients 902 empfangen wurden, auf einem der Server-Datenspeicher 910 implementieren. In einer oder mehreren Ausführungsformen können ein oder mehrere der Client-Datenspeicher 908 oder Server-Datenspeicher 910 Speicher enthalten, auf den der Host-Prozessor 104 und/oder das FPGA 106 zugreifen können.
  • Die Clients 902 und die Server 904 können über ein Kommunikationsregime 906 Informationen untereinander austauschen. Das Kommunikationsregime 906 kann alle bekannten Kommunikationstechniken und -protokolle implementieren. Das Kommunikationsregime 906 kann als eine paketvermitteltes Netz (zum Beispiel öffentliche Netze wie zum Beispiel das Internet, private Netze wie zum Beispiel ein Unternehmens-Intranet usw.), als ein leitungsvermitteltes Netz (zum Beispiel das öffentliche Telefonfernsprechwählnetz) oder als eine Kombination aus einem paketvermittelten Netz und einem leitungsvermittelten Netz (mit geeigneten Gateways und Übersetzern) implementiert werden.
  • Das Kommunikationsregime 906 kann verschiedene Netzschnittstellen implementieren, die dafür ausgelegt sind, ein Kommunikationsnetz zu akzeptieren, mit ihm zu kommunizieren und sich mit ihm zu verbinden. Eine Netzwerkschnittstelle kann als eine spezialisierte Form einer Eingabe-/Ausgabe-Schnittstelle betrachtet werden. Netzschnittstellen können Verbindungsprotokolle verwenden, einschließlich beispielsweise Direktverbindung, Ethernet (zum Beispiel Thick, Thin, Twisted Pair 10/100/1900 Base T und dergleichen), Token Ring, Drahtlosnetzwerkschnittstellen, Mobiltelefonnetzschnittstellen, IEEE 802.11a-x-Netzschnittstellen, IEEE 802.16-Netzschnittstellen, IEEE 802.20-Netzschnittstellen und dergleichen. Darüber hinaus können mehrere Netzwerkschnittstellen verwendet werden, um eine Verbindung zwischen verschiedenen Kommunikationsnetzwerktypen herzustellen. Zum Beispiel können mehrere Netzwerkschnittstellen verwendet werden, um die Kommunikation über Broadcast-, Multicast- und Unicast-Netzwerke zu ermöglichen. Wenn die Verarbeitungsanforderungen eine größere Menge, eine höhere Geschwindigkeit und eine höhere Kapazität erfordern, so können verteilte Netzwerkcontroller-Architekturen in ähnlicher Weise eingesetzt werden, um die durch die Clients 902 und die Server 904 verlangte Kommunikationsbandbreite zu bündeln, einem Lastausgleich zu unterziehen und anderweitig zu erhöhen. Ein Kommunikationsnetzwerk kann ein beliebiges und eine Kombination von drahtgebundenen und/oder Drahtlosnetzwerken sein, einschließlich beispielsweise eine direkte Verbindung, eine gesicherte Spezialverbindung, ein privates Netzwerk (zum Beispiel ein Unternehmens-Intranet), ein öffentliches Netzwerk (zum Beispiel das Internet), ein Personal Area Network (PAN), ein Local Area Network (LAN), ein Metropolitan Area Network (MAN), ein Operating Missions as Nodes on the Internet (OMNI), ein Wide Area Network (WAN), ein drahtloses Netzwerk, ein Mobiltelefonnetz und andere Kommunikationsnetzwerke.
  • Verschiedene Ausführungsformen können mit Hilfe von Hardware-Elementen, SoftwareElementen oder einer Kombination aus beiden implementiert werden. Zu Beispielen für Hardware-Elemente können gehören: Prozessoren, Mikroprozessoren, Schaltkreise, Schaltkreiselemente (zum Beispiel Transistoren, Widerstände, Kondensatoren, Induktivitäten usw.), integrierte Schaltkreise, anwendungsspezifische integrierte Schaltkreise (ASIC), programmierbare Logikvorrichtungen (PLD), digitale Signalprozessoren (DSP), ein feldprogrammierbares Gate-Array (FPGA), Logikgatter, Register, Halbleitervorrichtungen, Chips, Mikrochips, Chipsätze usw. Zu Beispielen für Software können gehören: Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterprogramme, Funktionen, Verfahren, Abläufe, Softwareschnittstellen, Anwendungsprogrammschnittstellen (API), Instruktionssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon. Die Bestimmung, ob eine Ausführungsform unter Verwendung von Hardware- und/oder Softwareelementen implementiert wird, kann gemäß einer beliebigen Anzahl von Faktoren variieren, wie zum Beispiel der gewünschten Verarbeitungsrate, den Energieverbräuchen, den Wärmetoleranzen, dem Verarbeitungszyklusbudget, den Eingangsdatenraten, den Ausgangsdatenraten, den Speicherressourcen, den Datenbusgeschwindigkeiten und anderen Design- oder Leistungsbeschränkungen.
  • Ein oder mehrere Aspekte mindestens einer Ausführungsform können durch repräsentative Instruktionen implementiert werden, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors repräsentiert, die, wenn sie durch eine Maschine gelesen werden, die Maschine veranlassen, eine Logik zum Ausführen der im vorliegenden Text beschriebenen Techniken zu knüpfen. Solche Darstellungen, die als „IP-Kerne“ bezeichnet werden, können auf einem greifbaren, maschinenlesbaren Medium gespeichert sein und an verschiedene Kunden oder Fertigungseinrichtungen übermittelt werden, um sie in die Fertigungsmaschinen zu laden, die die Logik oder den Prozessor tatsächlich herstellen. Einige Ausführungsformen können zum Beispiel mit Hilfe eines maschinenlesbaren Mediums oder Gegenstandes implementiert werden, das bzw. der eine Instruktion oder einen Satz Instruktionen speichert, die, wenn sie durch eine Maschine ausgeführt werden, die Maschine veranlassen können, ein Verfahren und/oder Operationen gemäß den Ausführungsformen auszuführen. Eine solche Maschine kann zum Beispiel jede geeignete Verarbeitungsplattform, Computerplattform, Computervorrichtung, Verarbeitungsvorrichtung, Computersystem, Verarbeitungssystem, Computer, Prozessor oder dergleichen enthalten und kann unter Verwendung jeder geeigneten Kombination von Hardware und/oder Software implementiert werden. Das maschinenlesbare Medium oder der maschinenlesbare Gegenstand kann zum Beispiel jede geeignete Art von Arbeitsspeichereinheit, Arbeitsspeichervorrichtung, Arbeitsspeichergegenstand, Arbeitsspeichermedium, Massenspeichervorrichtung, Massenspeichergegenstand, Massenspeichermedium und/oder Massenspeichereinheit enthalten, zum Beispiel Speicher, wechselfähige oder nicht-wechselfähige Medien, löschbare oder nicht-löschbare Medien, beschreibbare oder wiederbeschreibbare Medien, digitale oder analoge Medien, Festplatte, Diskette, Compact Disk Read Only Memory (CD-ROM), Compact Disk Recordable (CD-R), Compact Disk Rewriteable (CD-RW), optische Disk, magnetische Medien, magneto-optische Medien, wechselfähige Speicherkarten oder -Disks, verschiedene Arten von Digital Versatile Disk (DVD), ein Band, eine Kassette oder dergleichen. Die Instruktionen können jede geeignete Art von Code enthalten, wie zum Beispiel Quellcode, kompilierter Code, interpretierter Code, ausführbarer Code, statischer Code, dynamischer Code, verschlüsselter Code und dergleichen, die mit Hilfe jeder geeigneten höherer, niederen, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert werden.
  • Die folgenden Beispiele betreffen weitere Ausführungsformen, aus denen zahlreiche Abwandlungen und Konfigurationen offensichtlich werden.
  • Beispiel 1 ist eine Vorrichtung zur Plattforminitialisierung, wobei die Vorrichtung umfasst: einen Speicher; und Logik, wobei zumindest ein Abschnitt der Logik in einer mit dem Speicher gekoppelten Schaltung implementiert ist, wobei die Logik zu Folgendem dient: Initiieren einer Boot-Sequenz, wobei die Boot-Sequenz eine Plattform initialisiert, um Eingabe/Ausgabe (E/A)-Operationen auszuführen, wobei die Plattform einen Host-Prozessor und ein feldprogrammierbares Gate-Array (FPGA) umfasst; Ausführen eines ersten Satzes Boot-Instruktionen mit dem Host-Prozessor als Teil der Boot-Sequenz, wobei der erste Satz Boot-Instruktionen jede abhängige bootfähige Komponente (Dependent Bootable Component, DBC) in einem ersten Satz DBCs initialisiert; und Ausführen eines zweiten Satzes Boot-Instruktionen mit dem FPGA als Teil der Boot-Sequenz, wobei der zweite Satz Boot-Instruktionen jede DBC in einem zweiten Satz DBCs initialisiert.
  • Beispiel 2 enthält den Gegenstand von Beispiel 1, wobei die Initialisierung einer DBC in dem ersten Satz DBCs von der Initialisierung einer anderen DBC in dem zweiten Satz DBCs abhängig ist.
  • Beispiel 3 enthält den Gegenstand von Beispiel 1, wobei eine erste DBC in dem ersten Satz DBCs ein Betriebssystem umfasst und eine zweite DBC in dem zweiten Satz DBCs eine Firmware-Schnittstelle umfasst.
  • Beispiel 4 enthält den Gegenstand von Beispiel 1, wobei die Plattform zum Ausführen von E/A-Operationen über ein Betriebssystem dient, das durch den Host-Prozessor ausgeführt wird.
  • Beispiel 5 enthält den Gegenstand von Beispiel 1, wobei eine erste DBC in dem ersten Satz einen Energieverwaltungs-Controller umfasst und eine zweite DBC in dem zweiten Satz einen Bus-Controller umfasst.
  • Beispiel 6 enthält den Gegenstand von Beispiel 1, wobei eine erste DBC in dem ersten Satz eine Bibliothek umfasst, wobei die Initialisierung einer ersten DBC das Laden der Bibliothek aus dem Speicher umfasst.
  • Beispiel 7 enthält den Gegenstand von Beispiel 6, wobei eine zweite DBC in dem zweiten Satz einen Speicher-Controller umfasst, wobei die Initialisierung einer zweiten DBC vor der Initialisierung einer ersten DBC stattfindet.
  • Beispiel 8 enthält den Gegenstand von Beispiel 1, wobei eine DBC in dem ersten Satz DBCs einen Vorrichtungsbaum umfasst, wobei die Initialisierung der DBC den Aufbau des Vorrichtungsbaums enthält.
  • Beispiel 9 enthält den Gegenstand von Beispiel 1, wobei eine DBC in dem zweiten Satz DBCs ein Busdesign umfasst, wobei die Initialisierung der DBC das Laden des Busdesigns enthält.
  • Beispiel 10 enthält den Gegenstand von Beispiel 1, wobei eine DBC in des zweiten Satz DBCs ein Netzwerkdesign umfasst, wobei die Initialisierung der zweiten DBC das Laden des Netzwerkdesigns enthält.
  • Beispiel 11 enthält den Gegenstand von Beispiel 1, wobei eine DBC in dem ersten Satz einen Kern des Host-Prozessors umfasst.
  • Beispiel 12 enthält den Gegenstand von Beispiel 1, wobei eine DBC in dem zweiten Satz einen Softprozessor des FPGA umfasst.
  • Beispiel 13 enthält den Gegenstand von Beispiel 1, wobei sich der zweite Satz Boot-Instruktionen in einem FPGA-Speicher befindet.
  • Beispiel 14 enthält den Gegenstand von Beispiel 1, wobei das FPGA dem Host-Prozessor die erfolgreiche Initialisierung einer DBC in dem zweiten Satz DBCs anzeigen soll.
  • Beispiel 15 enthält den Gegenstand von Beispiel 1, wobei die Logik zum Rekonfigurieren des FPGA dient, um nach Abschluss der Boot-Sequenz eine Laufzeitoperation auszuführen.
  • Beispiel 16 ist ein System zur Plattforminitialisierung, wobei das System umfasst: eine Plattform, die einen Satz abhängiger Boot-Komponenten (Dependent Boot Components, DBCs) umfasst; einen Host-Prozessor zum Ausführen eines ersten Satzes Boot-Instruktionen als Teil einer Boot-Sequenz, die die Plattform initialisiert, um Eingabe/Ausgabe (E/A)-Operationen auszuführen, wobei der erste Satz Boot-Instruktionen jede DBC in einer ersten Teilmenge des Satzes DBCs initialisiert; und ein feldprogrammierbares Gate-Array (FPGA) zum Ausführen eines zweiten Satzes Boot-Instruktionen als Teil der Boot-Sequenz, wobei der zweite Satz Boot-Instruktionen jede DBC in einer zweiten Teilmenge des Satzes DBCs initialisiert.
  • Beispiel 17 enthält den Gegenstand von Beispiel 16, wobei die Initialisierung der ersten DBC in der ersten Teilmenge von der Initialisierung einer zweiten DBC in der zweiten Teilmenge abhängig ist.
  • Beispiel 18 enthält den Gegenstand von Beispiel 16, wobei eine erste DBC in der ersten Teilmenge ein Betriebssystem umfasst und eine zweite DBC in der zweiten Teilmenge eine Firmware-Schnittstelle umfasst.
  • Beispiel 19 enthält den Gegenstand von Beispiel 16, wobei die Plattform zum Ausführen von E/A-Operationen über ein Betriebssystem dient, das durch den Host-Prozessor ausgeführt wird.
  • Beispiel 20 enthält den Gegenstand von Beispiel 16, wobei eine erste DBC in dem ersten Satz einen Energieverwaltungs-Controller umfasst und eine zweite DBC in dem zweiten Satz einen Bus-Controller umfasst.
  • Beispiel 21 enthält den Gegenstand von Beispiel 16, wobei eine erste DBC in dem ersten Satz eine Bibliothek umfasst, wobei die Initialisierung der ersten DBC das Laden der Bibliothek aus dem Speicher umfasst.
  • Beispiel 22 enthält den Gegenstand von Beispiel 21, wobei eine zweite DBC in dem zweiten Satz einen Speicher-Controller umfasst, wobei die Initialisierung einer zweiten DBC vor der Initialisierung einer ersten DBC stattfindet.
  • Beispiel 23 enthält den Gegenstand von Beispiel 16, wobei eine DBC in der ersten Teilmenge einen Vorrichtungsbaum umfasst, wobei die Initialisierung der DBC den Aufbau des Vorrichtungsbaums enthält.
  • Beispiel 24 enthält den Gegenstand von Beispiel 16, wobei eine DBC in der zweiten Teilmenge ein Busdesign umfasst, wobei die Initialisierung der DBC das Laden des Busdesigns enthält.
  • Beispiel 25 enthält den Gegenstand von Beispiel 16, wobei eine DBC in der zweiten Teilmenge ein Netzwerkdesign umfasst, wobei die Initialisierung der zweiten DBC das Laden des Netzwerkdesigns enthält.
  • Beispiel 26 enthält den Gegenstand von Beispiel 16, wobei eine DBC in der ersten Teilmenge einen Kern des Host-Prozessors umfasst.
  • Beispiel 27 enthält den Gegenstand von Beispiel 16, wobei eine DBC in der zweiten Teilmenge einen Softprozessor des FPGA umfasst.
  • Beispiel 28 enthält den Gegenstand von Beispiel 16, wobei sich der zweite Satz Boot-Instruktionen in einem FPGA-Speicher befindet.
  • Beispiel 29 enthält den Gegenstand von Beispiel 16, wobei das FPGA dem Host-Prozessor die erfolgreiche Initialisierung einer DBC in der zweiten Teilmenge anzeigen soll.
  • Beispiel 30 enthält den Gegenstand von Beispiel 16, wobei die FPGA zum Rekonfigurieren dient, um nach Abschluss der Boot-Sequenz eine Laufzeitoperation auszuführen.
  • Beispiel 31 ist mindestens ein nicht transitorisches computerlesbares Medium, das einen Satz Instruktionen umfasst, die in Reaktion auf ihre Ausführung durch einen Prozessorschaltkreis den Prozessorschaltkreis zu Folgendem veranlassen: Initiieren einer Boot-Sequenz, wobei die Boot-Sequenz eine Plattform initialisiert, um Eingabe/Ausgabe (E/A)-Operationen auszuführen, wobei die Plattform einen Host-Prozessor und ein feldprogrammierbares Gate-Array (FPGA) umfasst; Ausführen eines ersten Satzes Boot-Instruktionen mit dem Host-Prozessor als Teil der Boot-Sequenz, wobei der erste Satz Boot-Instruktionen jede abhängige bootfähige Komponente (Dependent Bootable Component, DBC) in einem ersten Satz DBCs initialisiert; und Ausführen eines zweiten Satzes Boot-Instruktionen mit dem FPGA als Teil der Boot-Sequenz, wobei der zweite Satz Boot-Instruktionen jede DBC in einem zweiten Satz DBCs initialisiert.
  • Beispiel 32 enthält den Gegenstand von Beispiel 31, wobei die Initialisierung einer DBC in dem ersten Satz DBCs von der Initialisierung einer anderen DBC in dem zweiten Satz DBCs abhängig ist.
  • Beispiel 33 enthält den Gegenstand von Beispiel 31, wobei eine erste DBC in dem ersten Satz DBCs ein Betriebssystem umfasst und eine zweite DBC in dem zweiten Satz DBCs eine Firmware-Schnittstelle umfasst.
  • Beispiel 34 enthält den Gegenstand von Beispiel 31, wobei die Plattform zum Ausführen von E/A-Operationen über ein Betriebssystem dient, das durch den Host-Prozessor ausgeführt wird.
  • Beispiel 35 enthält den Gegenstand von Beispiel 31, wobei eine erste DBC in dem ersten Satz einen Energieverwaltungs-Controller umfasst und eine zweite DBC in dem zweiten Satz einen Bus-Controller umfasst.
  • Beispiel 36 enthält den Gegenstand von Beispiel 31, wobei eine erste DBC in dem ersten Satz eine Bibliothek umfasst, wobei die Initialisierung der ersten DBC das Laden der Bibliothek aus dem Speicher umfasst.
  • Beispiel 37 enthält den Gegenstand von Beispiel 36, wobei eine zweite DBC in dem zweiten Satz einen Speicher-Controller umfasst, wobei die Initialisierung einer zweiten DBC vor der Initialisierung einer ersten DBC stattfindet.
  • Beispiel 38 enthält den Gegenstand von Beispiel 31, wobei eine DBC in dem ersten Satz DBCs einen Vorrichtungsbaum umfasst, wobei die Initialisierung der DBC den Aufbau des Vorrichtungsbaums enthält.
  • Beispiel 39 enthält den Gegenstand von Beispiel 31, wobei eine DBC in dem zweiten Satz DBCs ein Busdesign umfasst, wobei die Initialisierung der DBC das Laden des Busdesigns enthält.
  • Beispiel 40 enthält den Gegenstand von Beispiel 31, wobei eine DBC in des zweiten Satz DBCs ein Netzwerkdesign umfasst, wobei die Initialisierung der zweiten DBC das Laden des Netzwerkdesigns enthält.
  • Beispiel 41 enthält den Gegenstand von Beispiel 31, wobei eine DBC in dem ersten Satz einen Kern des Host-Prozessors umfasst.
  • Beispiel 42 enthält den Gegenstand von Beispiel 31, wobei eine DBC in dem zweiten Satz einen Softprozessor des FPGA umfasst.
  • Beispiel 43 enthält den Gegenstand von Beispiel 31, wobei sich der zweite Satz Boot-Instruktionen in einem FPGA-Speicher befindet.
  • Beispiel 44 enthält den Gegenstand von Beispiel 31, wobei das FPGA dem Host-Prozessor die erfolgreiche Initialisierung einer DBC in dem zweiten Satz DBCs anzeigen soll.
  • Beispiel 45 enthält den Gegenstand von Beispiel 31, der Instruktionen umfasst, die in Reaktion auf ihre Ausführung durch die Prozessorschaltkreis den Prozessorschaltkreis veranlassen, das FPGA zu rekonfigurieren, um nach Abschluss der Boot-Sequenz eine Laufzeitoperation auszuführen.
  • Beispiel 46 ist ein computerimplementiertes Verfahren, das umfasst: Initiieren einer Boot-Sequenz, wobei die Boot-Sequenz eine Plattform initialisiert, um Eingabe/Ausgabe (E/A)-Operationen auszuführen, wobei die Plattform einen Host-Prozessor und ein feldprogrammierbares Gate-Array (FPGA) umfasst; Ausführen eines ersten Satzes Boot-Instruktionen mit dem Host-Prozessor als Teil der Boot-Sequenz, wobei der erste Satz Boot-Instruktionen jede abhängige bootfähige Komponente (Dependent Bootable Component, DBC) in einem ersten Satz DBCs initialisiert; und Ausführen eines zweiten Satzes Boot-Instruktionen mit dem FPGA als Teil der Boot-Sequenz, wobei der zweite Satz Boot-Instruktionen jede DBC in einem zweiten Satz DBCs initialisiert.
  • Beispiel 47 enthält den Gegenstand von Beispiel 46, wobei die Initialisierung einer DBC in dem ersten Satz DBCs von der Initialisierung einer anderen DBC in dem zweiten Satz DBCs abhängig ist.
  • Beispiel 48 enthält den Gegenstand von Beispiel 46, wobei eine erste DBC in dem ersten Satz DBCs ein Betriebssystem umfasst und eine zweite DBC in dem zweiten Satz DBCs eine Firmware-Schnittstelle umfasst.
  • Beispiel 49 enthält den Gegenstand von Beispiel 46, der das Durchführen von E/A-Operationen über ein durch den Host-Prozessor ausgeführtes Betriebssystem umfasst.
  • Beispiel 50 enthält den Gegenstand von Beispiel 46, wobei eine erste DBC in dem ersten Satz einen Energieverwaltungs-Controller umfasst und eine zweite DBC in dem zweiten Satz einen Bus-Controller umfasst.
  • Beispiel 51 enthält den Gegenstand von Beispiel 46, wobei eine erste DBC in dem ersten Satz eine Bibliothek umfasst, wobei die Initialisierung einer ersten DBC das Laden der Bibliothek aus dem Speicher umfasst.
  • Beispiel 52 enthält den Gegenstand von Beispiel 51, wobei eine zweite DBC in dem zweiten Satz einen Speicher-Controller umfasst, wobei die Initialisierung einer zweiten DBC vor der Initialisierung einer ersten DBC stattfindet.
  • Beispiel 53 enthält den Gegenstand von Beispiel 46, wobei eine DBC in dem ersten Satz DBCs einen Vorrichtungsbaum umfasst, wobei die Initialisierung der DBC den Aufbau des Vorrichtungsbaums enthält.
  • Beispiel 54 enthält den Gegenstand von Beispiel 46, wobei eine DBC in dem zweiten Satz DBCs ein Busdesign umfasst, wobei die Initialisierung der DBC das Laden des Busdesigns enthält.
  • Beispiel 55 enthält den Gegenstand von Beispiel 46, wobei eine DBC in des zweiten Satz DBCs ein Netzwerkdesign umfasst, wobei die Initialisierung der zweiten DBC das Laden des Netzwerkdesigns enthält.
  • Beispiel 56 enthält den Gegenstand von Beispiel 46, wobei eine DBC in dem ersten Satz einen Kern des Host-Prozessors umfasst.
  • Beispiel 57 enthält den Gegenstand von Beispiel 46, wobei eine DBC in dem zweiten Satz einen Softprozessor des FPGA umfasst.
  • Beispiel 58 enthält den Gegenstand von Beispiel 46, wobei sich der zweite Satz Boot-Instruktionen in einem FPGA-Speicher befindet.
  • Beispiel 59 enthält den Gegenstand von Beispiel 46, der umfasst, dem Host-Prozessor die erfolgreiche Initialisierung einer DBC in dem zweiten Satz DBCs anzuzeigen.
  • Beispiel 60 enthält den Gegenstand von Beispiel 46, das umfasst, das FPGA zu rekonfigurieren, um nach Abschluss der Boot-Sequenz eine Laufzeitoperation auszuführen.
  • Beispiel 61 ist eine Vorrichtung, die umfasst: ein Mittel zum Initiieren einer Boot-Sequenz, wobei die Boot-Sequenz eine Plattform initialisiert, um Eingabe/Ausgabe (E/A)-Operationen auszuführen, wobei die Plattform einen Host-Prozessor und ein feldprogrammierbares Gate-Array (FPGA) umfasst; ein Mittel zum Ausführen eines ersten Satzes Boot-Instruktionen mit dem Host-Prozessor als Teil der Boot-Sequenz, wobei der erste Satz Boot-Instruktionen jede abhängige bootfähige Komponente (Dependent Bootable Component, DBC) in einem ersten Satz DBCs initialisiert; und ein Mittel zum Ausführen eines zweiten Satzes Boot-Instruktionen mit dem FPGA als Teil der Boot-Sequenz, wobei der zweite Satz Boot-Instruktionen jede DBC in einem zweiten Satz DBCs initialisiert.
  • Beispiel 62 enthält den Gegenstand von Beispiel 61, wobei die Initialisierung einer DBC in dem ersten Satz DBCs von der Initialisierung einer anderen DBC in dem zweiten Satz DBCs abhängig ist.
  • Beispiel 63 enthält den Gegenstand von Beispiel 61, wobei eine erste DBC in dem ersten Satz DBCs ein Betriebssystem umfasst und eine zweite DBC in dem zweiten Satz DBCs eine Firmware-Schnittstelle umfasst.
  • Beispiel 64 enthält den Gegenstand von Beispiel 61, der ein Mittel zum Ausführen von E/A-Operationen über ein Betriebssystem umfasst, das durch den Host-Prozessor ausgeführt wird.
  • Beispiel 65 enthält den Gegenstand von Beispiel 61, wobei eine erste DBC in dem ersten Satz einen Energieverwaltungs-Controller umfasst und eine zweite DBC in dem zweiten Satz einen Bus-Controller umfasst.
  • Beispiel 66 enthält den Gegenstand von Beispiel 61, wobei eine erste DBC in dem ersten Satz eine Bibliothek umfasst, wobei die Initialisierung einer ersten DBC das Laden der Bibliothek aus dem Speicher umfasst.
  • Beispiel 67 enthält den Gegenstand von Beispiel 66, wobei eine zweite DBC in dem zweiten Satz einen Speicher-Controller umfasst, wobei die Initialisierung einer zweiten DBC vor der Initialisierung einer ersten DBC stattfindet.
  • Beispiel 68 enthält den Gegenstand von Beispiel 61, wobei eine DBC in dem ersten Satz DBCs einen Vorrichtungsbaum umfasst, wobei die Initialisierung der DBC den Aufbau des Vorrichtungsbaums enthält.
  • Beispiel 69 enthält den Gegenstand von Beispiel 61, wobei eine DBC in dem zweiten Satz DBCs ein Busdesign umfasst, wobei die Initialisierung der DBC das Laden des Busdesigns enthält.
  • Beispiel 70 enthält den Gegenstand von Beispiel 61, wobei eine DBC in des zweiten Satz DBCs ein Netzwerkdesign umfasst, wobei die Initialisierung der zweiten DBC das Laden des Netzwerkdesigns enthält.
  • Beispiel 71 enthält den Gegenstand von Beispiel 61, wobei eine DBC in dem ersten Satz einen Kern des Host-Prozessors umfasst.
  • Beispiel 72 enthält den Gegenstand von Beispiel 61, wobei eine DBC in dem zweiten Satz einen Softprozessor des FPGA umfasst.
  • Beispiel 73 enthält den Gegenstand von Beispiel 61, wobei sich der zweite Satz Boot-Instruktionen in einem FPGA-Speicher befindet.
  • Beispiel 74 enthält den Gegenstand von Beispiel 61, der ein Mittel umfasst, um dem Host-Prozessor die erfolgreiche Initialisierung einer DBC in dem zweiten Satz DBCs anzuzeigen.
  • Beispiel 75 enthält den Gegenstand von Beispiel 61, der ein Mittel umfasst, um das FPGA zu rekonfigurieren, um nach Abschluss der Boot-Sequenz eine Laufzeitoperation auszuführen.

Claims (25)

  1. Vorrichtung zum Initialisieren einer Computerplattform, wobei die Vorrichtung umfasst: einen Speicher; und Logik, wobei zumindest ein Abschnitt der Logik in einer mit dem Speicher gekoppelten Schaltung implementiert ist, wobei die Logik zu Folgendem dient: Initiieren einer Boot-Sequenz, wobei die Boot-Sequenz eine Plattform initialisiert, um Eingabe/Ausgabe (E/A)-Operationen auszuführen, wobei die Plattform einen Host-Prozessor und ein feldprogrammierbares Gate-Array (FPGA) umfasst; Ausführen eines ersten Satzes Boot-Instruktionen mit dem Host-Prozessor als Teil der Boot-Sequenz, wobei der erste Satz Boot-Instruktionen jede abhängige bootfähige Komponente (Dependent Bootable Component, DBC) in einem ersten Satz DBCs initialisiert; und Ausführen eines zweiten Satzes Boot-Instruktionen mit dem FPGA als Teil der Boot-Sequenz, wobei der zweite Satz Boot-Instruktionen jede DBC in einem zweiten Satz DBCs initialisiert.
  2. Vorrichtung nach Anspruch 1, wobei die Initialisierung einer DBC in dem ersten Satz DBCs von der Initialisierung einer anderen DBC in dem zweiten Satz DBCs abhängig ist.
  3. Vorrichtung nach Anspruch 1, wobei der erste Satz DBCs ein Betriebssystem umfasst und der zweite Satz DBCs eine Firmware-Schnittstelle umfasst.
  4. Vorrichtung nach Anspruch 1, wobei die Plattform E/A-Operationen über ein durch den Host-Prozessor ausgeführtes Betriebssystem ausführt.
  5. Vorrichtung nach Anspruch 1, wobei der erste Satz DBCs des Weiteren einen Energieverwaltungs-Controller umfasst und der zweite Satz DBCs des Weiteren einen Bus-Controller umfasst.
  6. Vorrichtung nach Anspruch 1, wobei eine DBC in dem ersten Satz DBCs eine Bibliothek umfasst, wobei die Initialisierung der DBC das Laden der Bibliothek aus dem Speicher umfasst.
  7. Vorrichtung nach Anspruch 6, wobei eine DBC in dem zweiten Satz DBCs einen Speicher-Controller umfasst, wobei die Initialisierung der DBC in dem zweiten Satz DBCs vor der Initialisierung der DBC in dem ersten Satz DBCs stattfindet.
  8. Vorrichtung nach Anspruch 1, wobei eine DBC in dem ersten Satz DBCs einen Vorrichtungsbaum umfasst, wobei die Initialisierung der DBC den Aufbau des Vorrichtungsbaums umfasst.
  9. Vorrichtung nach Anspruch 1, wobei eine DBC in dem zweiten Satz DBCs ein Busdesign umfasst, wobei die Initialisierung der DBC das Laden des Busdesigns enthält.
  10. Vorrichtung nach Anspruch 1, wobei eine DBC in dem zweiten Satz DBCs ein Netzwerkdesign umfasst, wobei die Initialisierung der zweiten DBC das Laden des Netzwerkdesigns enthält.
  11. Vorrichtung nach Anspruch 1, wobei eine DBC in dem ersten Satz DBCs einen Kern des Host-Prozessors umfasst.
  12. Vorrichtung nach Anspruch 1, wobei eine DBC in dem zweiten Satz DBCs einen Softprozessor des FPGA umfasst.
  13. Vorrichtung nach Anspruch 1, wobei sich der zweite Satz Boot-Instruktionen in dem FPGA-Speicher befindet.
  14. Vorrichtung nach Anspruch 1, wobei das FPGA dem Host-Prozessor die erfolgreiche Initialisierung einer DBC in dem zweiten Satz DBCs anzeigt.
  15. Vorrichtung nach Anspruch 1, wobei die Logik des Weiteren dazu dient, das FPGA zu rekonfigurieren, um nach Abschluss der Boot-Sequenz eine Laufzeitoperation auszuführen.
  16. System zum Initialisieren einer Computerplattform, wobei das System umfasst: eine Plattform, die einen Satz abhängiger Boot-Komponenten (Dependent Boot Components, DBCs) umfasst; einen Host-Prozessor zum Ausführen eines ersten Satzes Boot-Instruktionen als Teil einer Boot-Sequenz, die die Plattform initialisiert, um Eingabe/Ausgabe (E/A)-Operationen auszuführen, wobei der erste Satz Boot-Instruktionen jede DBC in einer ersten Teilmenge des Satzes DBCs initialisiert; und ein feldprogrammierbares Gate-Array (FPGA) zum Ausführen eines zweiten Satzes Boot-Instruktionen als Teil der Boot-Sequenz, wobei der zweite Satz Boot-Instruktionen jede DBC in einer zweiten Teilmenge des Satzes DBCs initialisiert.
  17. System nach Anspruch 16, wobei die Initialisierung einer DBC in dem ersten Satz DBCs von der Initialisierung einer anderen DBC in dem zweiten Satz DBCs abhängig ist.
  18. System nach Anspruch 16, wobei die erste Teilmenge DBCs ein Betriebssystem umfasst und die zweite Teilmenge DBCs eine Firmware-Schnittstelle umfasst.
  19. Nicht transitorisches computerlesbares Medium bzw. nicht transitorische computerlesbare Medien, die einen Satz Instruktionen umfassen, die in Reaktion auf ihre Ausführung durch einen Prozessorschaltkreis den Prozessorschaltkreis zu Folgendem veranlassen: Initiieren einer Boot-Sequenz, wobei die Boot-Sequenz eine Plattform initialisiert, um Eingabe/Ausgabe (E/A)-Operationen auszuführen, wobei die Plattform einen Host-Prozessor und ein feldprogrammierbares Gate-Array (FPGA) umfasst; Ausführen eines ersten Satzes Boot-Instruktionen mit dem Host-Prozessor als Teil der Boot-Sequenz, wobei der erste Satz Boot-Instruktionen jede abhängige bootfähige Komponente (Dependent Bootable Component, DBC) in einem ersten Satz DBCs initialisiert; und Ausführen eines zweiten Satzes Boot-Instruktionen mit dem FPGA als Teil der Boot-Sequenz, wobei der zweite Satz Boot-Instruktionen jede DBC in einem zweiten Satz DBCs initialisiert.
  20. Nicht transitorisches computerlesbares Medium bzw. nicht transitorische computerlesbare Medien nach Anspruch 19, wobei der erste Satz DBCs einen Energieverwaltungs-Controller umfasst und der zweite Satz DBCs einen Bus-Controller umfasst.
  21. Nicht transitorisches computerlesbares Medium bzw. nicht transitorische computerlesbare Medien nach Anspruch 19, wobei eine erste DBC in dem ersten Satz eine Bibliothek umfasst und die Initialisierung der ersten DBC das Laden der Bibliothek aus einem Speicher umfasst.
  22. Computerimplementiertes Verfahren, das umfasst: Initiieren einer Boot-Sequenz, wobei die Boot-Sequenz eine Plattform initialisiert, um Eingabe/Ausgabe (E/A)-Operationen auszuführen, wobei die Plattform einen Host-Prozessor und ein feldprogrammierbares Gate-Array (FPGA) umfasst; Ausführen eines ersten Satzes Boot-Instruktionen mit dem Host-Prozessor als Teil der Boot-Sequenz, wobei der erste Satz Boot-Instruktionen jede abhängige bootfähige Komponente (Dependent Bootable Component, DBC) in einem ersten Satz DBCs initialisiert; und Ausführen eines zweiten Satzes Boot-Instruktionen mit dem FPGA als Teil der Boot-Sequenz, wobei der zweite Satz Boot-Instruktionen jede DBC in einem zweiten Satz DBCs initialisiert.
  23. Computerimplementiertes Verfahren nach Anspruch 22, das umfasst, das FPGA zu rekonfigurieren, um nach Abschluss der Boot-Sequenz eine Laufzeitoperation auszuführen.
  24. Vorrichtung zum Initialisieren einer Computerplattform, wobei die Vorrichtung umfasst: ein Mittel zum Initiieren einer Boot-Sequenz, wobei die Boot-Sequenz eine Plattform initialisiert, um Eingabe/Ausgabe (E/A)-Operationen auszuführen, wobei die Plattform einen Host-Prozessor und ein feldprogrammierbares Gate-Array (FPGA) umfasst; ein Mittel zum Ausführen eines ersten Satzes Boot-Instruktionen mit dem Host-Prozessor als Teil der Boot-Sequenz, wobei der erste Satz Boot-Instruktionen jede abhängige bootfähige Komponente (Dependent Bootable Component, DBC) in einem ersten Satz DBCs initialisiert; und ein Mittel zum Ausführen eines zweiten Satzes Boot-Instruktionen mit dem FPGA als Teil der Boot-Sequenz, wobei der zweite Satz Boot-Instruktionen jede DBC in einem zweiten Satz DBCs initialisiert.
  25. Vorrichtung nach Anspruch 24, die ein Mittel umfasst, um das FPGA zu rekonfigurieren, um nach Abschluss der Boot-Sequenz eine Laufzeitoperation auszuführen.
DE112017008211.0T 2017-11-17 2017-11-17 Techniken für die Initialisierung einer Computerplattform Pending DE112017008211T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2017/062323 WO2019099028A1 (en) 2017-11-17 2017-11-17 Techniques for computing platform initialization

Publications (1)

Publication Number Publication Date
DE112017008211T5 true DE112017008211T5 (de) 2020-08-06

Family

ID=66539975

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017008211.0T Pending DE112017008211T5 (de) 2017-11-17 2017-11-17 Techniken für die Initialisierung einer Computerplattform

Country Status (4)

Country Link
US (1) US20200264895A1 (de)
CN (1) CN111279311A (de)
DE (1) DE112017008211T5 (de)
WO (1) WO2019099028A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10942509B2 (en) 2018-01-19 2021-03-09 Ge Aviation Systems Llc Heterogeneous processing in unmanned vehicles
US11029985B2 (en) 2018-01-19 2021-06-08 Ge Aviation Systems Llc Processor virtualization in unmanned vehicles
US11593119B2 (en) 2018-04-27 2023-02-28 Tesla, Inc. Autonomous driving controller parallel processor boot order
CN111142955B (zh) * 2019-12-31 2021-07-16 联想(北京)有限公司 一种信息处理方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7487344B2 (en) * 2006-03-03 2009-02-03 Alcatel Lucent Implementing a microprocessor boot configuration prom within an FPGA
US20100058274A1 (en) * 2008-09-04 2010-03-04 Alcatel Lucent Flexible hardware upgrade mechanism for data communications equipment
US8990548B2 (en) * 2011-04-11 2015-03-24 Intel Corporation Apparatuses for configuring programmable logic devices from BIOS PROM
US9600291B1 (en) * 2013-03-14 2017-03-21 Altera Corporation Secure boot using a field programmable gate array (FPGA)
US9658858B2 (en) * 2013-10-16 2017-05-23 Xilinx, Inc. Multi-threaded low-level startup for system boot efficiency

Also Published As

Publication number Publication date
WO2019099028A1 (en) 2019-05-23
US20200264895A1 (en) 2020-08-20
CN111279311A (zh) 2020-06-12

Similar Documents

Publication Publication Date Title
DE112017008211T5 (de) Techniken für die Initialisierung einer Computerplattform
DE102020133738A1 (de) Firmware-update-techniken
DE102013104328B4 (de) Aufgabenzuteilung in großen und kleinen Kernen
DE112020007201T5 (de) Speicherzuordnung für verteilte Verarbeitungsvorrichtungen
DE112005001512B4 (de) Vorrichtung und Verfahren für den Hochleistungs- Zugriff auf einen flüchtigen Plattenlaufwerkspeicher unter Einsatz einer integrierten Direkt-Speicherzugriffs-Einrichtung
DE112013006241T5 (de) Techniken für Plattform-Arbeitszyklus-Wechsel
DE102015117066A1 (de) Verfahren zum Betreiben einer Datenspeichervorrichtung, mobile Rechenvorrichtung mit derselben und Verfahren der mobilen Rechenvorrichtung
DE10393662T5 (de) Bereitstellen eines sicheren Ausführungsmodus in einer Preboot-Umgebung
DE112012005118T5 (de) Sichern von Firmware während der Initialisierung einer Einheit
DE112011103880T5 (de) Direktes Migrieren von Software-Abbildern mit Streaming-Technik
DE102016118210A1 (de) Granulare Dienstqualität für Computer-Ressourcen
DE102009023953A1 (de) Verfahren zum Booten eines zustandslosen Client
DE112020006967T5 (de) Performanceüberwachung für kurzlebige funktionen
DE202010000226U1 (de) Gleichzeitiges Ausführen eines Smartphone-Betriebssystems und eines Desktop-Betriebssystems
DE102010019487A1 (de) Speichervorrichtung, Datenverarbeitungsvorrichtung und Verfahren
DE112013007300T5 (de) Speichersysteme mit adaptiver Löschcode-Generierung
DE202010017668U1 (de) Befehls- und Interrupt-Gruppierung bei einer Datenspeichervorrichtung
US8782365B1 (en) Systems and methods of processing data associated with rapid snapshot and restore of guest operating system states
DE102015002191A1 (de) Sicherheits-Hypervisor-Funktion
DE102013218379A1 (de) Erkennen und Verarbeiten einer unbeabsichtigten Berührung eines Touchscreens
DE112016006047T5 (de) Skalierbare techniken zur datenübertragung zwischen virtuellen maschinen
DE112017008158T5 (de) Dateienvorababrufeinplanung für cachespeicher zur verringerung von latenzen
DE102018115683A1 (de) Domänenübergreifende sicherheit in kryptographisch partionierter cloud
DE102020105939A1 (de) Enhanced-Serial-Peripheral-Interface-(eSPI)-Signalisierung zurAbsturzereignisbenachrichtigung
DE112011105098T5 (de) Virtuelles BIOS