-
HINTERGRUNDINFORMATIONEN
-
„Peripheral Component Interconnect Express“, auch als PCI-Express oder PCIe bezeichnet, ist eine serielle Hochgeschwindigkeitsverbindung, die in heutigen Computern und Servern weithin verwendet wird. PCI-Express hat sich über mehrere Generation weiterentwickelt, wobei die dritte Generation von PCI-Express (auch als Gen 3 bezeichnet) derzeit die am häufigsten verwendete ist und die vierte Generation (Gen 4) und die fünfte Generation (Gen 5) kürzlich eingeführt wurden. Die PCI-Express 3.0-Basisspezifikation, Überarbeitung 3.0, wurde im November 2010 durch PCI-SIG® veröffentlicht. Die PCI-Express 3.1-Spezifikation wurde im November 2014 veröffentlicht. PCI-Express 4.0 wurde im Juni 2017 durch PCI-SIG® angekündigt. Die neueste Version, PCI-Express-Basisspezifikation Überarbeitung 5.0, Version 1.0, wurde am 28. Mai 2019 veröffentlicht.
-
Unter den vorstehenden PCI-Express-Spezifikationen sind nur einige wenige Niederleistungszustände definiert, und zwar L0s, L1 (einschließlich L1-Unterzustände), L2 und L3. Im Gegensatz dazu können viele der aktuellen fortgeschrittenen Client/Firmen-Speichersysteme eine feinere Energiesparzustandsgranularität als diese beschränkte Gruppe von Niederleistungszuständen unterstützen. Beispielsweise können einige der heutigen PCIe-Vorrichtungen mit erweiterter Digital- oder Mischsignal-Verarbeitungslogik (z. B. SERDES) ausgestattet sein, die zwei oder drei Unterleistungszustände für jeden in der PCIe-Spezifikation definierten „groben“ Niederleistungszustand bereitstellen kann. Da jedoch die in einem Host definierte PCIe-Funktionalität der/den PCIe-Spezifikation(en) folgt, wird der Host nicht fähig sein, diese Unterleistungszustandsmerkmale dieser Vorrichtungen effizient für weiter optimierte Energie- und Leistungs-Kompromisse innerhalb spezieller PCIe-definierter Niederenergiezustände einzusetzen.
-
In einem System, das durch eine PCIe-Hierarchie zusammengeschaltet ist, hängt der größte Teil der Kommunikation zwischen Vorrichtungen von der Bereitschaft der physikalischen PCIe-Strecke (in dem L0-Zustand) ab. Allgemein ist, sobald die Verbindung ein speziellen PCIe-definierten Nicht-LO-Niederleistungszuständen festgelegt ist, die Zeit, die benötigt wird, um den Niederleistungszustand zu verlassen und in den L0-Zustand für die nächste Kommunikation einzutreten, im Wesentlichen fest. Obwohl spezielle Vorrichtungen, die mit sowohl LOs als auch L1 aktiv sind, wählen können, von dem LOs-Zustand in den L1-Zustand zu migrieren, kann aufgrund des Fehlens des Kontexts auf Systemebene diese durch die Vorrichtung frei wählbare Migration von Zeit zu Zeit die Systemleistungsfähigkeit beeinflussen. Falls es beispielsweise notwendig ist, für neu geplante Übertragung LOs zu verlassen unmittelbar nachdem die Vorrichtung wählt, aus dem LOs-Zustand in den L1-Zustand einzutreten, würde mehr Zeit benötigt, um L0 ab dem Verlassen von L1 herzustellen, im Vergleich mit einem LOs -> L0-Zustandsübergang.
-
Insgesamt waren die eingeschränkten Niederleistungsarchitekturoptionen, die in den PCIe-Spezifikationen definiert sind, ein behindernder Faktor, um anspruchsvollere Systemstrategien zur Energie- und Leistungsoptimierung zu ermöglichen.
-
Figurenliste
-
Die vorstehenden Aspekte und viele der zugehörigen Vorteile dieser Erfindung werden leichter anerkannt, wenn sie durch Bezugnahme auf die folgende ausführliche Beschreibung besser verstanden werden, wenn sie zusammen mit den begleitenden Zeichnungen genommen wird, wobei sich gleiche Bezugszeichen durchgehend durch die verschiedenen Ansichten auf gleiche Teile beziehen, sofern nicht anders spezifiziert;
- 1 ist ein Diagramm einer Systemarchitektur, die verwendet werden kann, um Host-gesteuerte Hinweise vor dem Eintritt in Niederleistung für eine PCIe-Vorrichtung oder Komponente gemäß einer Ausführungsform zu implementieren;
- 2a ist eine Systemarchitektur und ein Nachrichtenflussdiagramm, die weitere Einzelheiten der Systemarchitektur von 1 zusammen mit Nachrichtenflüssen zwischen Komponenten zum Erhalten von Niederleistungszustandsfähigkeitsinformationen gemäß einer Ausführungsform darstellen;
- 2b ist ein Systemarchitekturnachrichtenflussdiagramm, das weitere Einzelheiten der Systemarchitektur von 1 zusammen mit Nachrichtenflüssen zwischen Komponenten zum Bewirken eines ausgewählten feingranularen Niederleistungszustands und Modus für eine PCIe-Endpunktvorrichtung gemäß einer Ausführungsform darstellt.
- 3 ist ein Ablaufplan, der Operationen, die durch Komponenten in dem Nachrichtenflussdiagramm von 2a ausgeführt werden, um dem Host zu ermöglichen, Informationen über feingranulare Niederleistungsfähigkeit von der PCIe-Endpunktvorrichtung zu erhalten, gemäß einer Ausführungsform darstellt;
- 4 ist ein Diagramm, das ein Format für eine Niederleistungszustandsfähigkeitstabelle oder Datenstruktur gemäß einer Ausführungsform darstellt;
- 5a ist ein Diagramm, das eine Tabelle oder Datenstruktur, die Niederleistungszustandskonfigurationsregister enthält, die verwendet werden, um die aktuellen feingranularen Leistungszustände, in die anstelle der für PCIe definierten Niederleistungszustände eingetreten werden soll, gemäß einer Ausführungsform darstellt;
- 5b ist ein Diagramm, das eine Tabelle oder Datenstruktur, die Niederleistungszustandskonfigurationsregister enthält, die verwendet werden, um die aktuellen feingranularen Leistungszustände, in die anstelle der für PCIe definierten Niederleistungszustände für jede von mehreren Komponenten eingetreten werden soll, gemäß einer Ausführungsform darstellt;
- 6 ist ein Ablaufplan, der Operationen, die durch Komponenten in dem Nachrichtenflussdiagramm von 2b zum Bewirken eines ausgewählten feingranularen Niederleistungszustands und Modus für die PCIe-Endpunktvorrichtung gemäß einer Ausführungsform darstellt.
- 7a ist ein Ablaufplan, der Operationen, die einer Leistungsmanagementeinheit zugeordnet sind, die den Eintritt in einen feingranularen Niederleistungszustand für eine oder mehrere Komponenten in Reaktion auf das Detektieren eines Leistungsänderungsereignisses auf der PCIe-Vorrichtung bewirkt, darstellt;
- 7b ist ein Ablaufplan, der Operationen, die einer Leistungsmanagementeinheit zugeordnet sind, die den Eintritt in einen feingranularen Niederleistungszustand für eine oder mehrere Komponenten in Reaktion auf einen von dem Host empfangenen Leistungsänderungsbefehl bewirkt, darstellt;
- 8 ist eine Tabelle, die Aspekte einer durch den Anbieter definierten Nachricht (VDM) wie in der PCIe 4.0-Spezifikation definiert spezifiziert;
- 9a ist ein Diagramm, das das Header-Format einer VDM definiert;
- 9b ist ein Diagramm, das das PCI-SIG-definierte VDM-Header-Format darstellt;
- 10a ist eine Systemarchitektur und Nachrichtenflussdiagramm, das eine Implementierung des Nachrichtenflusses in 2a, der durch den Anbieter definierte Nachrichten (VDMs) einsetzt, gemäß einer Ausführungsform darstellt;
- 10b ist eine Systemarchitektur und Nachrichtenflussdiagramm, das eine Implementierung des Nachrichtenflusses in 2b, der VDMs einsetzt, gemäß einer Ausführungsform darstellt;
- 11 ist ein Diagramm, das ein Beispiel einer VDM-Rahmendefinition gemäß einer Ausführungsform darstellt;
- 12a ist ein Diagramm, das die Zuweisung von Registerfeldern in einer Struktur mit anbieterspezifischen erweiterten Fähigkeiten (VSEC-Struktur) wie sie durch die PCIe 4.0-Spezifikation definiert ist, darstellt;
- 12b ist eine Tabelle, die Felder in einem PCI-Express-Header für erweiterte Fähigkeiten, wie durch die PCIe 4.0-Spezifikation definiert darstellt;
- 13 ist eine Tabelle, die Felder für einen anbieterspezifischen VSEC-Header wie durch die PCIe 4.0-Spezifikation definiert darstellt;
- 14a ist eine Systemarchitektur und Nachrichtenflussdiagramm, das eine Implementierung des Nachrichtenflusses in 2a, der VSEC-TPLs einsetzt, gemäß einer Ausführungsform darstellt;
- 14b ist eine Systemarchitektur und Nachrichtenflussdiagramm, das eine Implementierung des Nachrichtenflusses in 2b, der VSEC-TPLs einsetzt, gemäß einer Ausführungsform darstellt;
- 15a ist eine Systemarchitektur und ein Nachrichtenflussdiagramm, das eine alternative Implementierung des Schemas in 14a, unter der der Empfänger der VSEC-Anforderung und der Generator der VSEC-Antwort in der PCIe-Transaktionsschicht implementiert sind, gemäß einer Ausführungsform darstellt;
- 15b ist eine Systemarchitektur und ein Nachrichtenflussdiagramm, das eine alternative Implementierung des Schemas in 14b, unter dem der Empfänger der VSEC-Anforderung und der Generator der VSEC-Antwort in der PCIe-Transaktionsschicht implementiert sind, gemäß einer Ausführungsform darstellt; und
- 16 ist ein Diagramm eines Systems, das konfiguriert ist, ein Zweiebenenspeicher- (2LM-) Schema zu implementieren, und das ferner konfiguriert ist, Host-gesteuerte Hinweise vor dem Niederleistungseintritt von Blöcken oder Komponenten auf einer PCIe-Vorrichtung in Übereinstimmung mit Aspekten der hier offenbarten Ausführungsformen zu implementieren.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Ausführungsformen von Verfahren und Einrichtungen zum Optimieren der Leistung und Effizienz einer Vorrichtung basierend auf Host-gesteuerten Hinweisen vor dem Eintritt in Niederleistung für PCI-Express-Blöcke und Komponenten sind hier beschrieben. In der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten dargelegt, um ein gründliches Verständnis der Ausführungsformen der Erfindung bereitzustellen. Ein Fachmann wird jedoch erkennen, dass die Erfindung ohne eine oder mehrere der spezifischen Einzelheiten oder mit anderen Verfahren, Komponenten, Materialien usw. praktiziert werden kann. In anderen Fällen sind bekannte Strukturen, Materialien oder Operationen nicht gezeigt oder im Einzelnen beschrieben, um das Verdecken von Aspekten der Erfindung zu vermeiden.
-
Durchgehend durch diese Spezifikation bedeutet die Bezugnahme auf „eine Ausführungsform“, dass ein/e spezielle/s Merkmal, Struktur oder Eigenschaft, das/die in Verbindung mit der Ausführungsform beschrieben ist, in wenigstens einer Ausführungsform der vorliegenden Erfindung enthalten ist. Somit bezieht sich das Auftreten des Ausdrucks „in einer Ausführungsform“ an verschiedenen Orten durchgehend durch diese Spezifikation nicht notwendigerweise immer auf dieselbe Ausführungsform. Darüber hinaus können die speziellen Merkmale, Strukturen oder Eigenschaften auf irgendeine geeignete Weise in einer oder mehreren Ausführungsformen kombiniert sein.
-
Zur Verdeutlichung können individuelle Komponenten hier auch durch ihre Beschriftungen in den Figuren anstelle durch ein spezielles Bezugszeichen referenziert sein. Zusätzlich können Bezugszeichen, die sich auf einen speziellen Typ einer Komponente (im Gegensatz zu einer speziellen Komponente) beziehen, mit einem Bezugszeichen gefolgt von „(Typ)“, das „typisch“ bedeutet, gezeigt sein. Es ist zu verstehen, dass die Konfiguration dieser Komponenten typisch für ähnliche Komponenten sein wird, die existieren können, jedoch der Einfachheit und Deutlichkeit halber nicht in der Zeichnungsfiguren gezeigt sind, oder anderweitig ähnliche Komponenten, die nicht mit separaten Bezugszeichen beschriftet sind. Umgekehrt ist „(Typ)“ nicht so zu deuten, dass es bedeutet, dass die Komponente, das Element usw. typischerweise für seine offenbarte Funktion, Implementierung, Zweck usw. verwendet ist.
-
In Übereinstimmung mit Aspekten der hier beschriebenen und dargestellten Ausführungsformen sind Techniken für erweiterte Niederleistungszustände, die derzeit durch PCIe-Standards definiert sind, bereitgestellt, um einen oder mehrere feingranulare Niederleistungszustände aufzunehmen, die anstelle eines oder mehrerer der PCIe-definierten Niederleistungszustände zu verwenden sind. Die Techniken und der zugeordnete Mechanismus stellen einen Host mit Hardware-autonomer Steuerung dafür bereit, wann, wie und in welche Niederleistungszustände/unterzustände PCIe-Vorrichtungen (die Vorrichtung), die zum Unterstützen eines oder mehrerer feingranularer Niederleistungszustände fähig sind, eintreten sollten oder das Eintreten planen sollten. Der Host ist außerdem mit potentiellen Informationen ausgestattet, die interne Zustände der Vorrichtung betreffen, so dass der Host vorrichtungsinterne Zustände einbeziehen kann, wenn er Systemoptimierungsentscheidungen trifft. Die Herangehensweise enthält das Abbilden der durch die Vorrichtung unterstützten feingranularen Niederleistungszustände, um Leistungsmodusparametereinstellungen oder eine anspruchsvollere Leistungsmodusmigrationssequenz genau zu bestimmen, so dass die Vorrichtung den Hinweisen von dem Host nach dem Eintreten in den nächsten geplanten Niederleistungszustand folgen kann.
-
Um die vorstehende Funktionalität zu unterstützen, sind Handshake- und/oder Erkundungs-Mechanismen zwischen dem Host und der Vorrichtung implementiert, um zugehörige Steuer/Statusinformationen zu befördern. Verschiedene Schemas können eingesetzt werden, um die Mechanismen zu unterstützten, die In-Band- (TLP-basierte) Mechanismen enthalten, wie z. B. durch den Anbieter definierte Nachricht (VDM), spezielles Speicher-Lese/Schreiben mit dem Ziel insbesondere speicherabgebildeter IO-(MMIO-) Räume, Konfigurations-Lese/Schreib-Anforderungen mit dem Ziel anbieterspezifischer erweiterter Fähigkeiten (VSEC) oder designierter liefereantenspezifischer erweiterter Fähigkeiten (DVSEC) usw. Zusätzlich können Außerbandmechanismen (mit zusätzlichen Seitenbandsignalen) eingesetzt werden, um den Austausch von Nachrichten und Informationen zwischen dem Host und PCIe-Vorrichtung zu unterstützen.
-
In einem Aspekt setzen ein Host wie z. B. ein Einchipsystem- (SoC-) Host und eine PCIe-Vorrichtung eine Anwendungsschichtvereinbarung darüber ein, wie auf Niederleistung bezogene Informationen über eine Gruppe von Standard-PCIe-Transaktionsschichtprotokoll- (TLP-) Paketen paketiert ist. Allgemein sind die hier beschriebenen und dargestellten TLPs nicht einschränkende Beispiele von TLPs, die verwendet werden können, um die Kommunikation zwischen einem Host und einer PCIe-Vorrichtung zu unterstützen; Fachleute werden erkennen, dass andere TLPs verwendet werden können, um ähnliche Informationen zu befördern.
-
In einer Ausführungsform sind allgemein zwei Typen von Host-Anforderungs-TLPs vorhanden, die Folgendes enthalten:
- • LP_CFG_RD_REQ (Niederleistungskonfigurationsleseanforderung; keine Nutzdaten): verwendet zum Lesen einer „Niederleistungszustandsfähigkeits“-Tabelle/Datenstruktur, ein Beispiel dafür ist in 4 gezeigt; und
- • LP_CFG_WR_REQ (Niederleistungskonfigurationsschreibanforderung; mit Nutzdaten): verwendet, um Register, die der „Niederleistungszustandsfähigkeits“-Tabelle zugeordnet sind, zu konfigurieren, um die Auswahl und Implementierung eines feingranularen Leistungszustands zu ermöglichen, während die Konformität mit Leistungssteuerungsmechanismen, die für Standard-PCIe-Niederleistungszustände definiert sind, erhalten bleibt.
-
Aus Sicht der PCIe-Vorrichtung sind mehrere Arten von Antworten als ein Beispiel konzipiert, um den Mechanismus er erläutern, die Folgendes enthalten:
- • LP_CFG_RD_RSP (Niederleistungskonfigurationsleseantwort; mit Nutzdaten): verwendet, um auf LP_CFG_RD_REQ-TLPs mit Informationen zu antworten, die aus der Niederleistungszustandsfähigkeitstabelle/struktur gelesen werden; und
- • LP_CFG_WR_RSP (Niederleistungskonfigurationsschreibantwort; keine Nutzdaten): verwendet, um auf LP_CFG_WR_REQ-TLPs zu antworten, betreffend, ob die Konfigurationsänderung, die von dem Host initiiert ist, erfolgreich ist oder nicht.
-
1 zeigt eine Systemarchitektur 100, die verwendet werden kann, um Host-gesteuerte Hinweise vor dem Eintritt in Niederleistung für eine PCIe-Vorrichtung oder Komponente gemäß einer Ausführungsform zu implementieren. Die Systemarchitektur 100 enthält den Host SoC-Host 102, der in Kommunikation mit einer PCIe-Endpunktvorrichtung 104 über eine PCIe-Strecke 106 verbunden ist. Allgemein repräsentiert die PCIe-Strecken 106 eine PCIe-Strecke, die unter einer Spezifikation von PCIe 3.x oder später definiert ist, und kann irgendeine Spurbreite verwenden, die in einer solchen Spezifikation definiert ist, wie z. B. x2, x4, x8, x16, x32 usw. Zusätzlich kann die PCIe-Strecke 106 mit irgendeiner Geschwindigkeit arbeiten, die durch eine Spezifikation von PCIe 3.x oder später definiert ist.
-
Der SoC-Host 102 enthält eine Systemmanagementeinheit 108, eine Host-Anwendungsschicht 110, einen PCIe-Wurzelkomplex (RC) 112 und einen PCIe-Wurzelanschluss 114. Die Host-Anwendungsschicht 110 enthält eine Kopie einer Niederleistungszustandsfähigkeitstabelle 116, einen Anforderungsgenerator 118 und einen Anforderungsempfänger 120. Der PCIe-Wurzelanschluss 114 enthält einen Standard-PCIe-Stack 122, der eine Transaktionsschicht (TL), eine Sicherungsschicht (DL) und eine Bitübertragungsschicht (PL) enthält, und eine PCIe-Bitübertragungsschicht (PHY) 124.
-
Die PCIe-Endpunktvorrichtung 104 enthält einen PCIe-Anschluss 126, eine Leistungsmanagementeinheit 128 und eine Vorrichtungsanwendungsschicht 130. Der PCIe-Anschluss 126 enthält eine PCIe-PHY 132 und einen Standard-PCIe-Stack, der als aufgeteilt zwischen PCIe-PL- und -DL-Schichten 134 gezeigt ist, und eine PCIe-Transaktionsschicht 136. Die Vorrichtungsanwendungsschicht 130 enthält einen Anforderungsempfänger 138, einen Anforderungsgenerator 140, eine Niederleistungszustandsfähigkeitstabelle 142 und Niederleistungszustandskonfigurationsregister 144.
-
In einigen Ausführungsformen kann die Host-Anwendungsschicht 110 in dem PCIe-Wurzelanschluss 114 implementiert sein, während in anderen Ausführungsformen die Host-Anwendungsschicht 110 in einem separaten Block, der mit dem PCIe-Wurzelanschluss 114 in Kommunikation ist, implementiert sein kann. Ähnlich kann in einigen Ausführungsformen die Vorrichtungsanwendungsschicht 130 in dem PCIe-Anschluss 126 implementiert sein, während in anderen Ausführungsformen die Vorrichtungsanwendungsschicht 130 in einem Block, der in Kommunikation mit dem PCIe-Anschluss 126 ist, implementiert sein kann.
-
Allgemein sind die hier offenbarten Anforderungs- und Antwortgeneratoren, wie z. B. der Anforderungsgenerator 118 und der Antwortgenerator 140, Komponenten, die in einer Host- oder Vorrichtungsanwendungsschicht (wie anwendbar) implementiert sind und konfiguriert sind, TLPs (wie sie hier beschrieben und dargestellt sind) zusammenzustellen und die TLPs den Standard-PCIe-Transaktionsschichten zur Übertragung zu präsentieren. Ähnlich sind die Anforderungs- und Antwortempfänger, wie z. B. der Anforderungsempfänger 138 und der Antwortempfänger 120, Komponenten, die in einer Host- oder Vorrichtungsanwendungsschicht implementiert sind und konfiguriert sind, TLPs von einer Standard-PCIe-Transaktionsschicht zu empfangen, sie zu analysieren (und bei Bedarf zu dechiffrieren oder zu entschlüsseln) und die zugehörigen Blöcke zu benachrichtigen und/oder mit ihnen zusammenzuwirken. In einigen Fällen können Anforderungs- und Antwortgeneratoren optionale Verschlüsselung für alle oder einen Abschnitt der Nachrichtennutzdaten einsetzen, während die Anforderungs- und Antwortempfänger auf ähnliche Weise optional Entschlüsselung einsetzen können, um den verschlüsselten Nachrichteninhalt zu decodieren.
-
Die Leistungsmanagementeinheit (PMU) in der Vorrichtung (z. B. die PMU 128) überwacht alle Vorrichtungsschichten und steuert Leistungsmanagementaspekte verschiedener Entitäten auf der Vorrichtung wie z. B. den PCIe-PHY-Block. Die Leistungsmanagementaspekte und zugehörigen Mechanismen enthalten, ohne jedoch darauf beschränkt zu sein, Leistungsmoduseinstellungen, Leistungsdomänenumschalten, Takt-Gating und Taktfrequenzsteuerung usw.
-
2a zeigt Nachrichtenflüsse zwischen ausgewählten Komponenten der Architektur 100, die verwendet werden, um einem Host zu ermöglichen, Informationen über feingranulare Niederleistungsfähigkeit von einer PCIe-Endpunktvorrichtung zu erhalten, während entsprechende Operationen zum Bewirken dieser Funktionalität in einem Ablaufplan 300 von 3 gezeigt sind. Der Prozess beginnt in einem Startblock 302, in dem ein normaler System-Boot initiiert wird. Während des normalen System-Boots startet die Systemmanagementeinheit 108 (z. B. das System-BIOS oder die CPU-Einheit) das Erkennen der vorgeschlagenen „Niederleistungszustandsfähigkeit“ auf der Vorrichtungsseite durch Zusammenstellen einer LP_CFG_RD_REQ-Nachricht 202 in der Host-Anwendungsschicht 110 als eine Niederleistungszustandsfähigkeitsanforderung, wie in einem Block 304 abgebildet ist.
-
In einem Block 306 wird die LP_CFG_RD_REQ-Nachricht 202 von dem Anforderungsgenerator 118 über die PCIe-Strecke 106 zu der PCIe-Endpunktvorrichtung 104 weitergeleitet (wie durch den Nachrichtenfluss ‚1‘ abgebildet ist), wo sie durch den Anforderungsempfänger 138 empfangen wird. In einem Block 308 analysiert und entschlüsselt der Anforderungsempfänger 138 die LP_CFG_RD_REQ-Nachricht unter Verwendung keiner Kenntnis der LP_CFG_RD_REQ-Nachrichten-Framing-Regeln basierend auf einer Vereinbarung zwischen dem Host und der PCIe-Endpunktvorrichtung, wie vorstehend diskutiert.
-
Wie durch die Nachrichtenflüsse ‚2‘ und ‚3‘ und Block 310 abgebildet ist, liest der Anforderungsempfänger 138 Niederleistungszustandsfähigkeitsinformationen aus der Niederleistungszustandsfähigkeitstabelle 142 und gibt eine entsprechende Niederleistungszustandsfähigkeitsdatenstruktur an den Antwortgenerator 140 weiter.
-
Ein Beispiel einer Ausführungsform einer Niederleistungszustandsfähigkeitstabelle 142 (auch als Tabelle 1 bezeichnet) ist in 4 gezeigt. Die Niederleistungszustandsfähigkeitstabelle enthält die Spalten 400, 402, 404, 406, 408 und 410. Die Spalte 400 listet Niederleistungszustände auf, die durch PCIe-Spezifikationen (z. B. 3.0 und später) definiert sind, die hier als „PCIe-definierte Niederleistungszustände“ bezeichnet sind. Diese sind herkömmliche PCIe-Niederleistungszustände und enthalten L0s, L1, L1.1 und L1.2. Die Spalte 402 enthält die neuen feingranularen Niederleistungszustände und ihre Zuordnungen zu einem entsprechenden herkömmlichen PCIe-Niederleistungszustand. Beispielsweise enthalten die beiden feingranularen Niederleistungszustände für LOs PCIe L0s_state_1 und PCIe_L0s_state_2. Wie weiter gezeigt ist, enthält der herkömmliche PCIe-Niederleistungszustand L1 drei feingranulare Niederleistungszustände, während der herkömmliche PCIe-Niederleistungszustand L1.2 zwei feingranulare Niederleistungszustände enthält. In diesem Beispiel weist der herkömmliche PCIe-Niederleistungszustand L1.1 keine feingranularen Niederleistungszustände auf; vielmehr ist die Verwendung des PCIe-Niederleistungszustands L1.1 gleich wie für diesen Zustand in der PCIe-Spezifikation definiert. Die Aufnahme dieser L1.1-Zeile dient zum Darstellen, dass feingranulare Niederleistungszustände für einen oder mehrere PCIe-definierte Niederleistungszustände definiert sein können, jedoch nicht für jeden PCIe-definierten Niederleistungszustand definiert sein müssen. Zur Vereinfachung und für die Einzelheiten der Darstellung sind hier textliche Namen für die feingranularen Niederleistungszustände beschrieben und dargestellt; in der Praxis können/würden die texlichen Zustände durch vorbestimmte numerische Werte oder Codes ersetzt.
-
Die Spalten 404 und 406 sind verwendet, um die Austrittslatenzmaßeinteilung, die zu implementieren ist, zu spezifizieren. Die Austrittslatenzmaßeinteilung ist eine Funktion einer Maßeinteilung in Spalte 404, multipliziert mit einem Wert in Spalte 406. Wie gezeigt sind in diesem Beispiel die Maßeinteilungen Nanosekunden (ns), Mikrosekunden (µs) und Millisekunden (ms). Die Werte in Spalte 406 sind zu erläuternden Zwecken als Dezimalwerte abgebildet, würden jedoch intern in der Tabellendatenstruktur selbstverständlich in einem Binär- oder Hexadezimalformat gespeichert. Die Spalte 408 listet ferner die Leistung in Milliwatt (mw) auf, die verbraucht wird, wenn in jedem der entsprechenden feingranularen Niederleistungszustände gearbeitet wird.
-
Tabelle 2 in 5 zeigt Niederleistungszustandskonfigurationsregister, die für den Host zugänglich sind und die verwendet werden, um den feingranularen Niederleistungszustand oder Unterzustand, der in der PCIe-Vorrichtung implementiert werden soll, einzustellen. Beispielsweise sind die Auswahlindexe für feingranulare Niederleistungszustände in Spalte 500 gezeigt, während ein Bitwert für das Ermöglichen von Auto-Migration in einen Zustand niedrigerer Leistung in Spalte 502 gezeigt ist. Tabelle 2 listet außerdem mehrere Standardwerte auf, wobei diese Standardwerte verwendet werden, sofern nicht die entsprechenden Registerwerte geändert sind. In einer Ausführungsform entsprechen die Standardwerte den Werten, die für den herkömmlichem PCIe-Niederleistungszustand, der dem feingranularen Zustand zugeordnet ist, verwendet werden. Beispielsweise ist „PCIe_L0s_state_1“ ein Standardzustand, der dem PCIe-definierten Niederleistungszustand LOs entspricht.
-
In einigen Ausführungsformen kann eine PCIe-Endpunktvorrichtung ein Merkmal bereitstellen, das es dem Host ermöglicht auszuwählen, Hardware-basierte automatische Migration zu proprietären Zuständen niedrigerer Leistung zu verwenden, wie in Spalte 410 gezeigt ist. Falls der Host wie gezeigt wählt, Tabelle 2 zu verlassen, beispielsweise wenn die Vorrichtung in den PCIe-definierten LOs-Zustand eintritt, wird der PHY-Block in PHY_L0s_state_1 in 2µs bleiben vor dem Auto-Migrieren in PHY_L0s_state_2 und dann wiederum in PHY_L1_state_1 migrieren und dort bleiben, da das Bit zum Ermöglichen von Auto-Migration für PHY_L1_state_1 ‚0‘ ist.
-
Zurück zu dem Ablaufplan 300 konstruiert in einem Block 312 der Antwortgenerator eine LP_CFG_RD_RSP-TLP-Nachricht 204 mit optionaler Verschlüsselung als eine Fertigstellungsnachricht in Reaktion auf die LP_CFG_RD_REQ-Nachricht, die eine Niederleistungszustandsfähigkeitsdatenstruktur beinhaltet, die in dem Nachrichtenfluss ‚3‘ zu dem Antwortgenerator 140 weitergegeben wird. Die LP_CFG_RD_RSP-TLP-Nachricht 204 wird dann von der PCIe-Endpunktvorrichtung 104 über die PCIe-Strecke 106 zu dem SoC-Host 102 weitergeleitet, wo sie durch den Antwortempfänger 120 in der Host-Anwendungsschicht 110 empfangen wird, wie in einem Block 314 und durch den Nachrichtenfluss ‚4‘ abgebildet ist. Der Antwortempfänger 120 extrahiert ferner die Niederleistungszustandsfähigkeitsdatenstruktur aus der LP_CFG_RD_RSP-TLP-Nachricht 204. Der Prozess wird dann in einem Block 316 fertiggestellt, in dem die Host-Anwendungsschicht 110 ihre Kopie der Niederleistungszustandsfähigkeitstabelle 116 mit Informationen in der Niederleistungszustandsfähigkeitsdatenstruktur (extrahiert aus der LP_CFG_RD_RSP-TLP-Nachricht 204) erzeugt/aktualisiert und eine Quittung an die Systemmanagementeinheit 108 weitergibt.
-
Es wird darauf hingewiesen, dass die Verwendung des vorstehenden Prozesses nicht notwendig sein kann, falls der Host eine vorher existierende Kenntnis darüber besitzt, welche erweiterte Niederleistungsknoten die PCIe-Endpunktvorrichtung unterstützen kann. Beispielsweise kann während der Aufzählung das „Teilsystemanbieter-ID-Register“ der PCIe-Vorrichtung durch den Host auf eine Weise verstanden werden, um die Fähigkeit der Vorrichtung zu identifizieren, feingranulare Niederleistungszustände zu unterstützen, und somit kann der Host wählen, Standardeinstellungen zu verwenden oder nur mehrere im Voraus bekannte Konfigurationsregister in Tabelle 2 konfigurieren. Außerdem können, abhängig von den Fähigkeiten verschiedener Vorrichtungen, mehr Parameter in die Niederleistungszustandsfähigkeitsstruktur (oder ähnliche Fähigkeitsstrukturen) aufgenommen werden, wie z. B. Optionen für die Leistungsspannung, Takt-Gating, Taktfrequenz usw.
-
Durch Verwendung der vorstehenden Operationen und Nachrichtenflüsse, die in den 2a und 3 dargestellt sind, oder Verwendung der Herangehensweise mit im Voraus existierender Kenntnis wird einem Host ermöglicht, Niederleistungszustandsfähigkeitsinformationen von einer PCIe-Endpunktvorrichtung, die feingranulare Niederleistungszustände unterstützt, die über die PCIe-definierten Niederleistungszustände hinaus gehen, zu erhalten. Während laufender Laufzeitoperationen des Systems kann der Host selektiv die PCIe-Endpunktvorrichtung in einen der feingranularen Niederleistungszustände versetzen. Optional oder zusätzlich kann der Host die PCIe-Endpunktvorrichtung programmieren, einen speziellen feingranularen Niederleistungszustand zu implementieren, in Reaktion auf einen Befehl, in einem zugeordneten herkömmlichen PCIe-Niederleistungszustand zu arbeiten. Ein Beispiel für Prozesse zum Implementieren dieser und ähnlicher Funktionalität ist in Diagramm 200b von 2b und dem Ablaufplan 600 von 6 gezeigt.
-
Der Prozess kann während laufender Laufzeitoperationen initiiert werden, wie in einem Startblock 602 des Ablaufplans 600 abgebildet ist. In einem Block 604 weist die Systemmanagementeinheit 108 den Anforderungsgenerator 118 an, eine LP_CFG_WR_REQ-Nachricht 206 als eine „feingranulare Niederleistungszustandsänderungsanforderung“ mit den Konfigurationsinformationen, die sich auf spezielle Register unter den Konfigurationsregistern richten, die für den Host in Tabelle 2 offengelegt sind, zusammenzustellen. Allgemein kann irgendeine Art eines PCIe-TLP, das einen Nutzdatenabschnitt umfasst, verwendet werden, um diese Informationen zu befördern. Wie in einem Block 606 gezeigt und durch den Nachrichtenfluss ‚5‘ abgebildet ist, wird die LP_CFG_WR_REQ-Nachricht 206 von dem Anforderungsgenerator 118 über die PCIe-Strecke 106 zu der PCIe-Endpunktvorrichtung 104 weitergeleitet, wo sie durch den Anforderungsempfänger 138 in der Vorrichtungsanwendungsschicht 130 empfangen wird.
-
Beim Empfang verarbeitet der Anforderungsempfänger 138 die LP_CFG_WR_REQ-Nachricht 206 unter Verwendung der Kenntnis der LP_CFG_WR_REQ-Framing-Regeln basierend auf der Host/PCIe-Endpunkt-Vereinbarung, decodiert die Nachricht, um die feingranulare Host-Niederleistungseinstellungsinformationen zu extrahieren, und aktualisiert eine anwendbare Leistungseinstellung in den Niederleistungszustandskonfigurationsregistern 144, wie durch den Nachrichtenfluss ‚6‘ abgebildet ist. Beispielsweise ist angenommen, dass der SoC-Host 102 wählt, dass „PCIe_L1_state_3“ (b0100) für den Leistungsmodus durch den PCIe-PHY-Block 132 zu implementieren ist. In diesem Fall wären entsprechende Informationen in der LP_CFG_WR_REQ-Nachricht enthalten, um zu bewirken, dass ein Wert des ‚b0100‘ in das Register für den PCIe-L1-Zustand in Niederleistungszustandskonfigurationsregistern 144 geschrieben wird.
-
Wie in einem Block 610 und dem Nachrichtenfluss ‚7‘ abgebildet ist, triggert die Aktualisierung der Zustandskonfigurationsregister für niedrigere Leistung die Leistungsmanagementeinheit 128, die entsprechende Leistungseinstellung für den PCIe-PHY-Block 132 anzuwenden. Wie durch den Nachrichtenfluss ‚8‘ und einen Block 612 abgebildet ist, benachrichtigt der Anforderungsempfänger 138 den Antwortgenerator 140, eine LP_CFG_WR_RSP-Nachricht 208 mit optionaler Verschlüsselung als eine Fertigstellungsnachricht in Reaktion auf die LP_CFG_WR_REQ-Nachricht 206 zu konstruieren.
-
In einem Block 614 konstruiert der Antwortgenerator 140 die LP_CFG_WR_RSP-Nachricht 208, und die LP_CFG_WR_RSP-Nachricht wird von der PCIe-Endpunktvorrichtung 104 über die PCIe-Strecke 106 zu dem SoC-Host 102 weitergeleitet, wo sie durch den Antwortempfänger 120 in der Host-Anwendungsschicht 110 empfangen wird. Das ist ferner als Nachrichtenfluss ‚9‘ abgebildet. Der Prozess wird in einem Block 616 fertiggestellt, in dem der Antwortempfänger 120 die LP_CFG_WR_RSP-Nachricht entschlüsselt und eine Quittung, dass das Niederleistungsfähigkeitsregister erfolgreich aktualisiert worden ist, an die Systemmanagementeinheit 108 weitergibt.
-
Nach diesem Punkt wird das nächste Mal, wenn die PCIe-Endpunktvorrichtung 104 in den PCIe-definierten ASPM-L1-Zustand eintritt, „PCIe_L1_state_3“ verwendet, anstatt in den normalen L1-Zustand zu gehen. Wie in Tabelle 1 gezeigt ist, wird die PCIe-PHY unter dem „PCIe_L1_state_3“-Niederleistungszustand 5 mW Leistung verbrauchen (anstelle des Standards 30 mW für „PCIe_L1_state_1“), mit 8 µs Erregungslatenz vor dem Aufbau des LO-Niederleistungszustands.
-
In der vorstehenden Ausführungsform ist die PCIe-PHY als ein Beispiel für eine Komponente, die konfiguriert ist, feingranulare Niederleistungszustände zu unterstützen, dargestellt. Das ist jedoch nicht als einschränkend gedacht, da mehr Blöcke oder Komponenten in einer fähigen Vorrichtung konfiguriert sein können, feingranulare Niederleistungszustände einzusetzen. Darüber hinaus kann der Host wählen, ein „Automigration zu einem Zustand niedrigerer Leistung“-Merkmal, das durch einige fähige Vorrichtungen bereitgestellt ist, einzusetzen. Mit diesem Merkmal kann der Host einem spezifischen Vorrichtungsfunktionsblock (wie z. B. dem PCIe-PHY) erlauben, basierend auf dem Beispiel von Tabelle 1 allmählich in Zustände niedrigerer Leistung zu migrieren.
-
Zusätzlich können die hier offenbarten Lehren und Prinzipien in einem sogar noch anspruchsvolleren Ausmaß implementiert sein, so dass spezielle Niederleistungsverhaltens-„Sequenzen“ auf Vorrichtungsebene zur Auswahl für den Host konstruiert werden können. Sobald eine unterstützte Verhaltens-Sequenz gewählt ist, wird die Vorrichtung fähig sein, die exakte Sequenz zu durchlaufen (beispielsweise unter Verwendung einer PMU mit Mikro-Sequenzer), um die Energie und Leistung besser zu optimieren. Durch dieses Mittel werden die vorstehend genannten Konfigurationsschritte noch effizienter ausgeführt, weil LP_CFG_WR_REQ nur die vordefinierten Sequenzauswahlinformationen führen muss, um die Vorrichtung anzuweisen, eine entsprechende Leistungspegelsequenz für einen oder mehrere Blöcke oder Komponenten auf der Vorrichtung auszuführen.
-
Unter dem vorstehenden Beispiel wird ein Trigger-Mechanismus durch die PMU verwendet, um einen Block oder eine Komponente (z. B. den PHY-Block in dem Beispiel) zu konfigurieren, um einen feingranularen Niederleistungszustand in Reaktion auf ein nachfolgendes Leistungsereignis zu bewirken. Das erfordert einige Konfigurationsinformationen, die PCIe-definierten Niederleistungszustände auf feingranulare Niederleistungszustände in dem Block oder der Komponente abbilden. Unter einer weiteren Herangehensweise wird die Übersetzung aus dem PCIe-definierten Niederleistungszustand durch die PMU ausgeführt, wobei die PMU einen Leistungssteuerbefehl oder dergleichen zu dem Block oder der Komponente sendet, der den Block oder die Komponente anweist, in einem spezifischen feingranularen Niederleistungszustand einzutreten. Diese Herangehensweise vermindert die Notwendigkeit, Abbildungsinformationen in dem Block oder der Komponente zu halten. Alternativ kann eine Kombination dieser Herangehensweisen verwendet werden.
-
Beispiele für Ausführungsformen, die die PMU verwenden, um Blöcke oder Komponenten über explizite Befehle, die von der PMU gesendet werden, zu triggern, in feingranulare Niederleistungszustände einzutreten, sind in den Ablaufplänen 7a und 7b gezeigt. In einer Ausführungsform setzt diese Herangehensweise die in 5b dargestellte Datenstruktur von Tabelle 2 ein, die eine Variation der Niederleistungszustandskonfigurationsregister 144b zeigt. Wie dargestellt ist eine separate Menge von Niederleistungszustandskonfigurationsregistern für jeden aus mehreren Blöcken oder Komponenten, die eine/ Block/Komponente A und eine/n Block/Komponente B enthalten, vorhanden. Eine zusätzliche „Aktiv“-Spalte 504 ist hinzugefügt worden (im Vergleich zu der Konfiguration von Tabelle 2 in 5a), wobei die Werte in der Aktiv-Spalte 504 binäre Flags sind, die angeben, welcher feingranulare Niederleistungszustand für jeden zugeordneten PCIe-definierten Niederleistungszustand aktiv ist. Beispielsweise ist für den/die Block/Komponente A der aktive feingranulare Niederleistungszustand für den PCIe-definierten Niederleistungszustand L1 „PCIe_L1_state_3“. Wie weiter dargestellt ist, können die aktiven Zustände für unterschiedliche Blöcke oder Komponenten verschieden sein.
-
Mit Bezug auf den Ablaufplan 700a von 7a läuft der Prozess zum Bewirken feingranularer Niederleistungszustandsänderungen in Reaktion auf ein detektiertes Leistungsänderungsereignis wie folgt ab. In einem Startblock 702 wird ein Leistungsänderungsereignis auf der PCIe-Vorrichtung detektiert. Es gibt verschiedene existierende Mittel zum Detektieren anwendbarer Leistungsänderungsereignisse auf PCIe-Vorrichtungen, wobei die speziellen Mittel außerhalb des Umfangs dieser Offenbarung sind.
-
In Reaktion auf die Detektion des Leistungsänderungsereignisses wird die PMU benachrichtigt und identifiziert einen oder mehrere Blöcke oder Komponenten, für die Leistungszustandsänderungen bewirkt werden sollen (oder wird anderweitig mit Informationen versorgt, die diese identifizieren), wie in einem Block 704 abgebildet ist. Wie durch Start- und Endschleifenblöcke 706 und 708 abgebildet ist, werden die Operationen der Blöcke 708, 710 und 712 für jeden Block oder jede Komponente ausgeführt, der/die durch die PMU in Block 704 identifiziert wird.
-
In Block 708 identifiziert die PMU, in welchen PCIe-definierten Niederleistungszustand der Block oder die Komponente eintreten soll. In Block 710 schlägt die PMU die Konfigurationsinformationen nach (z. B. in Tabelle 2 oder über eine Kombination der Tabellen 1 und 2), um zu identifizieren, welcher feingranulare Niederleistungszustand dem PCIe-definierten Niederleistungszustand entspricht. Die PMU gibt dann einen Befehl zu dem Block oder der Komponente aus, in den feingranularen Niederleistungszustand, der identifiziert ist, einzutreten. Optional kann die PMU zusätzliche Niederleistungszustandsinformationen bereitstellen, wie zusätzlich Automigrationseinstellungen, die für eine Leistungsniveauänderungssequenz zu implementieren sind.
-
Zusätzlich zum Detektieren von Leistungsereignissen kann ein Host Befehle für eine PCIe-Vorrichtung bereitstellen, um Leistungsniveauänderungen für einen aus mehreren Blöcken oder Komponenten auf der PCIe-Vorrichtung zu bewirken. Ein Beispiel für dieses Schema gemäß einer Ausführungsform ist durch die Operationen in dem Ablaufplan 700b oder 7b dargestellt. Dieser Prozess beginnt in einem Startblock 703, in dem ein Leistungsänderungsbefehl von dem Host durch die PCIe-Vorrichtung empfangen wird. Wie bei anderer Kommunikation kann der Leistungsänderungsbefehl über die PCIe-Strecke gesendet werden und durch einen Empfänger oder dergleichen empfangen werden, der den Leistungsänderungsbefehl an die PMU weiterleitet. In einem Block 705 analysierte die PMU den Befehl, um einen oder mehrere Blöcke oder Komponenten, für die Leistungszustandsänderungen bewirkt werden sollen, zu identifizieren. Die Logik fährt dann damit fort, die in den Blöcken 706, 708, 710, 712 und 714 abgebildeten Operationen für jede/n Block oder Komponente, der/die auf ähnliche Weise zu der vorstehend für den Ablaufplan 700a beschriebenen Weise identifiziert ist, auszuführen.
-
Unter einer Herangehensweise sendet der Host herkömmliche PCIe-definierte Niederleistungszustandssteuerbefehle zu der PCIe-Vorrichtung, und die PMU führt die Übersetzung aus, um den entsprechenden feingranularen Niederleistungszustand zu identifizieren, in den für jede Komponente basierend auf dem PCIe-definierten Niederleistungszustand in dem Steuerbefehl einzutreten ist. Unter einer weiteren Herangehensweise kann der Host insbesondere den feingranularen Niederleistungszustand, in den eingetreten werden soll, in dem Leistungsänderungsbefehl identifizieren. In diesem Fall können die Operationen der Blöcke 708 und 710 übersprungen werden, da der feingranulare Niederleistungszustand, in den einzutreten ist, bereits identifiziert ist.
-
Austausch von durch den Anbieter definierten Nachrichten zum Bewirken feingranularer Niederleistungszustandskonfiguration und Modusauswahl
-
Wie vorstehend diskutiert können verschiedene Typen von Handshake- und/oder Erkundungs-Mechanismen zwischen dem Host und der PCIe-Vorrichtung implementiert sein, um zugehörige Steuer/Statusinformationen, die sich auf die Konfiguration und Auswahl feingranularer Niederleistungszustände beziehen, zu befördern. Unter einer Herangehensweise ist ein Austauschschema für durch den Anbieter definierte Nachrichten implementiert. Die PCIe-Spezifikation ermöglicht es Anbietern, Erweiterungen und Merkmale durch Verwenden von durch den Anbieter definierten Nachrichten hinzuzufügen. In PCIe 4.0 sind diese als „Vendor_Defined Messages“ bezeichnet und im Abschnitt 2.2.8.6 definiert. Die durch den Anbieter definierten Nachrichten ermöglichen die Erweiterung von PCI-Express-Nachrichtenübermittlungsfähigkeiten, entweder als eine allgemeine Erweiterung zu der PCI-Express-Spezifikation oder als eine anbieterspezifische Erweiterung.
-
8 zeigt eine Tabelle, die Aspekte von durch den Anbieter definierten Nachrichten, die das in 9a gezeigte Header-Format verwenden, spezifiziert. Wie in PCIe 4.0 Abschnitt 2.2.8.6 definiert ist
- • Die Anforderer-ID ist implementierungsspezifisch. Es wird dringend empfohlen, dass das Anforderer-ID-Feld den Wert beinhaltet, der dem Anforderer zugeordnet ist.
- • Falls die Route durch ID-Routing verwendet wird, bilden die Bytes 8 und 9 ein 16-Bit-Feld für die Ziel-ID, andernfalls sind diese Bytes reserviert.
- • Die Bytes 10 und 11 bilden ein 16-Bit-Feld für die Anbieter-ID, wie durch PCI-SIG® definiert ist, des Anbieters, der die Nachricht definiert.
- • Die Bytes 12 bis 15 sind für die Anbieterdefinition verfügbar.
-
Als eine Option können PCI-SIG-definierte VDMs verwendet werden. Wie in PCIe 4.0, Abschnitt 2.2.8.6.1 definiert ist, sind PCI-SIG-definierte VDMs durch den Anbieter definierte Nachrichten vom Typ 1, die die PCI-SIG®-Anbieter-ID (0001h) verwenden. Als eine durch den Anbieter definierte Nachricht vom Typ 1 wird jede durch einen „Completer“ stillschweigend verworfen, falls der „Completer“ sie nicht implementiert.
-
Jenseits der Regeln für andere durch den Anbieter definierte Nachrichten vom Typ 1 gelten die folgenden Regeln für die Bildung der PCI-SIG-definierten VDMs:
- • PCI-SIG-definierte VDMs verwenden das in 9b gezeigte Header-Format.
- • Das Anforderer-ID-Feld muss den Wert enthalten, der dem Anforderer zugeordnet ist.
- • Der Nachrichtencode muss 01111111b sein.
- • Die Anbieter-ID muss 0001h sein, die PCI-SIG zugewiesen ist.
- • Das Subtyp-Feld unterscheidet die spezifischen PCI-SIG-definierten VDMs.
-
Die 10a und 10b zeigen die Diagramme 1000a bzw. 1000b, die erweiterte Versionen der Architektur und der Nachrichtenflussdiagramme 200a und 200b der 1a und 2b sind, die konfiguriert sind, VDMs einzusetzen. Einer der Unterschiede zwischen den Diagrammen in den 2a, 2b und 10a, 10b ist, dass die Anforderungs- und Antwortgeneratoren und -empfänger VDM-Anforderungs- und Antwortgeneratoren und -empfänger sind. Diese enthalten den VDM-Anforderungsgenerator 1018 und den VDM-Antwortempfänger 1020 in der Host-Anwendungsschicht 110 und den VDM-Anforderungsempfänger 1038 und den VDM-Antwortgenerator 1040 in der Vorrichtungsanwendungsschicht 130.
-
Allgemein sind, wenn VDM verwendet wird, die Nachrichtenflüsse und Operationen, die vorstehend mit Bezug auf die 2a und 2b diskutiert und in den Ablaufplänen 300 und 600 der 3 und 6 abgebildet sind, im Wesentlichen ähnlich, außer dass das TLP und/oder die Nachrichten, die über die PCIe-Strecke 106 gesendet werden, VDMs sind. Beispielsweise wird, wie in 10a abgebildet ist, unter dem Nachrichtenfluss ‚1‘ eine VDM_LP_CFG_RD_REQ-Nachricht 1002 von dem VDM-Anforderungsgenerator 1018 zu dem VDM-Anforderungsempfänger 1038 über die PCIe-Strecke 106 gesendet. Unter einem Nachrichtenfluss ‚4‘ wird eine VDM_LP_CFG_RD_RSP-Nachricht 1004 von dem VDM-Antwortgenerator 1040 zu dem VDM-Antwortempfänger 1020 über die PCIe-Strecke 106 gesendet. Wie in 10b abgebildet ist, wird unter dem Nachrichtenfluss ‚5‘ eine VDM_LP_CFG_WR_REQ-Nachricht 1006 von dem VDM-Anforderungsgenerator 1018 zu dem VDM-Anforderungsempfänger 1038 über die PCIe-Strecke 106 gesendet. Unter einem Nachrichtenfluss ‚9‘ wird eine VDM_LP_CFG_WR_RSP-Nachricht 1008 von dem VDM-Antwortgenerator 1040 zu dem VDM-Antwortempfänger 1020 über die PCIe-Strecke 106 gesendet.
-
11 zeigt ein Beispiel einer VDM-Rahmendefinition 1100 gemäß einer Ausführungsform. Die VDM-Rahmendefinition 100 folgt allgemein dem VDM-Header-Format von 7, während sie ferner ausgewählte Felder abbildet, die mit anbieterspezifischen oder funktionsspezifischen Daten gefüllt sind. Das „Anbieternachricht“-Byte-Feld 1102 definiert den genauen Typ des Befehls Anforderung oder Antwort, der der VDM zugeordnet ist. Abhängig davon, ob eine VDM aufzunehmen ist, und zugeordneten Nutzdaten kann das letzte Doppelwort (Feld 1004, Byte 16-19) der VDM zugeordnet sein oder nicht, und somit kann der Wert des „Länge“-Felds zwischen 1 (1 DW Nutzdaten) und 0 (reservierter Wert, da keine Nutzdaten) variieren. Beispielsweise wird die VDM_LP_CFG_RD_RSP-Nachricht 1004 Nutzdaten, die schreibgeschützte Parameter umfassen, in dem indexierten Niederleistungszustandsfähigkeitsstruktureintrag enthalten.
-
Andere beispielhafte Felder, die in der VDM-Rahmendefinition 1100 gezeigt sind, enthalten ein Niederleistungszustandsindexfeld 1106, ein Niederleistungsautomigrationsermöglichungs-Flag 1108, ein Befehls- (CMD-) Typfeld 1110 und ein Antwort- (RSP-) Codefeld 1112. Die in der VDM-Rahmendefinition 1100 dargestellten Felder sind beispielhaft und nicht einschränkend; zusätzliche VDM-Rahmendefinitionen, die unterschiedlichen VDM-Nachrichten entsprechen, können auf eine ähnliche Weise definiert sein.
-
Anbieterspezifische erweiterte Fähigkeit (VSEC) zum Bewirken feingranularer Niederleistungszustandskonfiguration und Modusauswahl
-
Unter einer weiteren Herangehensweise wird die anbieterspezifische erweiterte Fähigkeit (VSEC) von PCI-Express verwendet, um feingranulare Niederleistungszustandskonfiguration und Modusauswahl zu bewirken. Die PCI-Express-VSEC ist eine optionale erweiterte Fähigkeit, die durch irgendeine/n PCI-Express-Funktion oder RCRB (Wurzelkomplexregisterblock) implementiert werden darf. Das ermöglicht es PCI-Express-Komponentenanbietern, den Mechanismus der erweiterten Fähigkeiten zu verwenden, um anbieterspezifische Register offenzulegen.
-
Einzelheiten der VSEC-Struktur sind in den 12a, 12b und 13 gezeigt. 12a zeigt im Einzelnen die Zuweisung von Registerfeldern in einer VSEC-Struktur 1200, wie sie durch Abschnitt 7.9.5 der PCIe 4.0-Spezifikation definiert ist. Die VSEC-Struktur 1200 enthält einen Header 1202 für erweiterte Fähigkeiten von PCI-Express, einen anbieterspezifischen Header 1204 und anbieterspezifische Register 1206.
-
Wie in 12b gezeigt ist, enthält der Header 1202 für erweiterte Fähigkeiten von PCI-Express ein 16-Bit-Feld (15:0) für erweiterte Fähigkeiten-ID von PCI-Express, ein 4-Bit-Feld (19:16) für die Fähigkeitsversion und ein 12-Bit-Feld (31:20) für den Versatz zur nächsten Fähigkeit. Das Feld für erweiterte Fähigkeiten-ID von PCI-Express ist eine PCI-SIG-definierte ID-Nummer, die die Beschaffenheit und das Format der erweiterten Fähigkeit angibt, das einen Wert von 000Bh für eine anbieterspezifische erweiterte Fähigkeit aufweist. Das Fähigkeitsversions-Feld ist eine PCI-SIG-definierte Versionsnummer, die die Version der vorliegenden Fähigkeitsstruktur angibt. Das Feld für den Versatz zur nächsten Fähigkeit beinhaltet den Versatz zu der nächsten PCI-Express-Fähigkeitsstruktur oder 000h, falls keine anderen Elemente in der verketteten Liste von Fähigkeiten existieren. Für erweiterte Fähigkeiten, die in dem Konfigurationsraum implementiert sein, ist dieser Versatz relativ zu dem Beginn des PCI-kompatiblen Konfigurationsraum und muss somit immer entweder 000h (zum Beenden der Liste von Fähigkeiten) oder größer als 0FFh sein.
-
Das Format des anbieterspezifischen Headers 1204 ist in 13 gezeigt. Wie dargestellt enthält das anbieterspezifische Header-Format ein 16-Bit- (15:0) VSEC-ID-Feld, ein 4-Bit- (19:16) VSEC-Rev-Feld und ein 12-Bit- (31:20) VSEC-Längen-Feld. Das VSEC-ID-Feld enthält eine anbieterdefinierende ID-Nummer, die die Beschaffenheit und das Format der VSEC-Struktur angibt. Das VSEC-Rev-Feld beinhaltet eine durch den Anbieter definierte Versionsnummer, die die Version der VSEC-Struktur angibt, während das VSEC-Längen-Feld die Anzahl von Bytes in der gesamten VSEC-Struktur angibt, die den Header für erweiterte Fähigkeiten für PCI-Express, den anbieterspezifischen Header und die anbieterspezifischen Register enthält. Anbieterspezifische Software muss die zugeordnete Anbieter-ID der PCI-Express-Funktion oder RCRB näher bestimmen, bevor versucht wird, die Werte in den VSEC-ID- oder VSEC-Rev-Feldern zu interpretieren.
-
Die 14a und 14b zeigen die Diagramme 1400a bzw. 1400b, die erweiterte Versionen der Architektur und der Nachrichtenflussdiagramme 200a und 200b der 2a und 2b sind, die konfiguriert sind, VSEC-TLPs einzusetzen. Die Nachrichtenflussmuster der 14a und 14b sind ähnlich denjenigen, die vorstehend in den 2a und 2b dargestellt sind, wobei Komponenten mit gemeinsamen Bezugszeichen in den 2a, 2b, 14a und 14b konfiguriert sind, ähnliche Operationen auszuführen. Dementsprechend wird sich das Folgende auf die Unterschiede zwischen den VSEC-Herangehensweisen in den 14a und 14b und Aspekten, die in den vorstehend diskutierten 2a und 2b dargestellt sind, konzentrieren.
-
Unter den Ausführungsformen der 14a und 14b sind die Anforderungs- und Antwortgeneratoren und -empfänger VSEC-Anforderungs- und Antwortgeneratoren und -empfänger. Diese enthalten den VSEC-Anforderungsgenerator 1418 und den VSEC-Antwortempfänger 1420 in der Host-Anwendungsschicht 110 und den VSEC-Anforderungsempfänger 1438 und den VSEC-Antwortgenerator 1440 in der Vorrichtungsanwendungsschicht 130.
-
Allgemein sind, wenn VSEC-TLPs verwendet werden, die Nachrichtenflüsse und Operationen, die vorstehend mit Bezug auf die 2a und 2b diskutiert und in den Ablaufplänen 300 und 600 der 3 und 6 abgebildet sind, im Wesentlichen ähnlich, außer dass das TLP und/oder Nachrichten, die über die PCIe-Strecke 106 gesendet werden, VSEC-TLPs sind. Beispielsweise wird, wie in 14a abgebildet ist, unter dem Nachrichtenfluss ‚1‘ ein VSEC_LP_CFG_RD_REQ-TLP 1002 von dem VSEC-Anforderungsgenerator 1418 zu dem VSEC-Anforderungsempfänger 1438 über die PCIe-Strecke 106 gesendet. Unter dem Nachrichtenfluss ‚4‘ wird ein VSEC-LP-CFG-RD-RSP-TLP 1404 von dem VSEC-Antwortgenerator 1440 zu dem VSEC-Antwortempfänger 1420 über die PCIe-Strecke 106 gesendet. Wie in 14a abgebildet ist, wird unter dem Nachrichtenfluss ‚5‘ ein VSEC_LP_CFG_WR_REQ-TLP 1406 von dem VSEC-Anforderungsgenerator 1418 zu dem VSEC-Anforderungsempfänger 1438 über die PCIe-Strecke 106 gesendet. Unter dem Nachrichtenfluss ‚9‘ wird ein VSEC_LP_CFG_WR_RSP-TLP 1408 von dem VSEC-Antwortgenerator 1440 zu dem VSEC-Antwortempfänger 1420 über die PCIe-Strecke 106 gesendet.
-
Unter einigen Ausführungsformen sind VSEC-Komponenten in der PCIe-Transaktionsschicht auf der PCIe-Endpunktvorrichtung statt auf der Vorrichtungsanwendungsschicht implementiert. Beispiele dafür sind in den Diagrammen 1500a und 1500b der 15a und 15b dargestellt. Die Nachrichtenflüsse für die VSEC-Ausführungsformen, die in 15a und 15b dargestellt sind, sind im Wesentlichen denjenigen ähnlich, die in den 14a und 14b gezeigt sind, außer dass der VSEC-Anforderungsempfänger (jetzt mit 1438a beschriftet) und der VSEC-Antwortgenerator (jetzt mit 1440a beschriftet) in der PCIe-Transaktionsschicht 136 anstatt in der Vorrichtungsanwendungsschicht 130 implementiert sind. Der Rest des Flusses und der Operationen sind unter beiden VSEC-Konfigurationen ähnlich.
-
16 zeigt ein System 1600, das konfiguriert ist, Aspekte der Ausführungsformen hier zu implementieren. Das System 1600 enthält einen SoC-Prozessor 1601, der mit einem PCIe-fernen Speicher-Host 1602 über eine PCIe-Strecke 1603 gekoppelt ist. Der SoC-Prozessor 1601 enthält eine zentrale Verarbeitungseinheit (CPU) 1604, die mehrere Prozessorkerne 1606 enthält, jeder mit einem jeweiligen L1- und L2-Cache. Jeder der Prozessorkerne 1606 ist mit einer Zusammenschaltung 1608 verbunden, mit der ein Cache der letzten Ebene (LLC) 1610, eine Speichersteuereinheit 1612 und ein integrierter Eingabe-Ausgabe- (IIO-) Block 1614 gekoppelt sind.
-
Der IIO-Block 1614 stellt eine Schnittstelle zwischen verschiedenen Komponenten und der Zusammenschaltung 1608 bereit. Diese Komponenten enthalten eine Systemmanagementeinheit 1616, eine DMI-Schnittstelle (I/F) 1618, eine IO-Schnittstelle 1620 und einen PCIe-Wurzelkomplex 1622. Der PCIe-Wurzelkomplex 1622 weist mehrere PCIe-Wurzelanschlüsse auf, die die PCIe-Wurzelanschlüsse 1624 und 1626 enthalten, die jeweils einen entsprechenden PCIe-Stack 1628 aufweisen.
-
Die Speichersteuereinheit 1612 wird allgemein einen oder mehrere Speicherkanäle enthalten, die mit Direktzugriffsspeichervorrichtungen gekoppelt sind. In dem in 16 dargestellten Beispiel enthält die Speichersteuereinheit 1612 drei Speicherkanäle Ch 1, Ch 2 und Ch 3, von denen jeder mit einem oder mehreren DRAM-DIMMs (doppelreihigen Speichermodulen) gekoppelt ist, wie durch die DRAM-DIMMs 1630, 1632 und 1634 abgebildet ist. Die DRAM-DIMMs umfassen gemeinsam einen „nahen“ Systemspeicher 1635.
-
Die DMI-Schnittstelle 1618 ist mit einer Firmware-Speichervorrichtung 1638 verbunden, in der Firmware gespeichert ist, wie z. B., ohne jedoch darauf beschränkt zu sein, einer Flash-Speichervorrichtung. Allgemein wird die Firmware verwendet, um das System zu booten und verschiedene Laufzeitoperationen auf der Firmware-Ebene zu unterstützen. Die IO-Schnittstelle 1620 ist mit einer nichtflüchtigen Speichervorrichtung 1638 wie z. B. einer Festkörperplatte (SSD) verbunden, obwohl irgendeine Zeit einer nichtflüchtigen Speichervorrichtung verwendet sein kann, die ein Magnetplattenlaufwerk, ein optisches Plattenlaufwerk usw. enthält.
-
Der PCIe-Wurzelanschluss 1626 ist mit einer Netzschnittstellensteuereinheit (NIC) 1640 über eine PCIe-Strecke 1642 verbunden. Die NIC 1640 ist wiederum konfiguriert, mit einem Netz 1644 verbunden zu sein, wenn das System 1600 in Betrieb ist. Beispielsweise ist in einigen Ausführungsformen das System 1600 ein Server-Blade oder Server-Modul, das konfiguriert ist, in einem Gehäuse oder dergleichen in einem Rack in einem Datenzentrum implementiert zu sein.
-
Das System 1600 enthält ferner Software-Komponenten 1646. Allgemein können die Software-Komponenten ein Betriebssystem und Anwendungs-Software enthalten. Das Betriebssystem wird allgemein verschiedene Vorrichtungstreiber enthalten, die Vorrichtungstreiber enthalten, die einem Betriebssystem hinzugefügt sein können (falls sie nicht mit dem Betriebssystem vorgesehen sind, wenn es eingesetzt ist). Verschiedene Abschnitte der Software-Komponenten können auf dem nichtflüchtigen Speicher 1646 oder dem Netz 1644 residieren oder anderweitig aus ihnen zugänglich sein. Beispielsweise werden in einigen Ausführungsformen die Software-Komponenten auf einer SSD oder dergleichen gespeichert sein, und von der SSD zugänglich sein und in den Systemspeicher 1635 während Laufzeitoperationen geladen werden. In anderen Ausführungsformen können verschiedene Software-Komponenten über das Netz 1644 zugänglich sein und nachfolgend in den Systemspeicher 1635 geladen werden.
-
Der PCIe-ferne Speicher-Host 1602 ist eine PCIe-Endpunktvorrichtung, die konfiguriert ist, eine oder mehrere Ausführungsformen der feingranularen Niederleistungskonfiguration und Modusauswahlschemas, die hier beschrieben sind, zu implementieren. Er enthält einen PCIe-Anschluss 1648, der einen PCIe-Stack 1650 implementiert. Allgemein kann der PCIe-Anschluss 1648 auf ähnliche Weise konfiguriert sein wie der PCIe-Anschluss 126 von 1, der vorstehend diskutiert ist. Der PCIe-ferne Speicher-Host 1602 enthält außerdem eine Leistungsmanagementeinheit 1652, eine Niederleistungszustandsfähigkeitstabelle 1654, Niederleistungszustandskonfigurationsregister 1656, eingebettete Logik 1658, die mit dem PCIe-Anschluss 1648 gekoppelt ist, und eine Speichersteuereinheit 1660. Die Speichersteuereinheit 1660 ist mit mehreren nichtflüchtigen DIMMs (NVDIMMs) 1662 gekoppelt, die in einer Ausführungsform 3D XPoint® NVDIMMs von Intel® Corporation umfassen.
-
Eingebettete Logik 1658 ist veranschaulichend für jeden Typ eingebetteter Logik, die verwendet wird, um die hier beschriebene Funktionalität einer PCIe-Endpunktvorrichtung zu implementieren. Das enthält Hardware-basierte Logik, Softwarebasierte Logik oder eine Kombination aus beiden. Beispielsweise kann ein Teil der oder die gesamte Funktionalität unter Verwendung von Hardware-basierter Logik implementiert sein, wie z. B. programmierte Logikkomponenten, die, ohne jedoch darauf beschränkt zu sein, eine FPGA (im Feld programmierbare Gatter-Anordnung) oder eine ASIC (anwendungsspezifische integrierte Schaltung) enthalten. Eingebettete Logik 1658 kann auch durch Software und/oder Firmware implementiert sein, die auf einem eingebetteten Prozessor oder einem oder mehreren Verarbeitungselementen ausgeführt wird, wie durch einen optionalen Software/Firmware-Block 1664 abgebildet ist. Verschiedene Typen von Prozessoren können für einen solchen eingebetteten Prozessor verwendet werden, die Allzweckprozessoren, Prozessor-Engines, Mikrosteuereinheiten usw. enthalten.
-
Das System 1600 ist konfiguriert zum Unterstützen eines Zweiebenenspeicher-(2LM-) Schemas, unter dem auf eine erste Ebene eines „nahen“ Speichers durch die Speichersteuereinheit 1612 auf dem SoC-Prozessor 1602 zugegriffen wird, während auf eine zweite Ebene eines „fernen“ Speichers über die PCIe-Strecke 1603 zugegriffen wird. Das 2LM-Schema kann Aspekte der hier offenbarten Ausführungsformen implementieren, um einen oder mehrere feingranulare Niederleistungszustände für den PCIe-Host 1602 des entfernten Speichers zu implementieren. Beispielsweise kann es unter unterschiedlichen Szenarios vorteilhaft sein, einen oder mehrere der feingranularen Niederleistungszustände während laufender Operationen zu verwenden.
-
Die Lehren und Prinzipien, die hier offenbart sind, stellen verschiedene Vorteile gegenüber aktuellen Herangehensweisen bereit. Die stellen verschiedene Optionen für ein zum Energiesparen fähiges System bereit, um feingranulare Niederleistungszustände für PCIe-Endpunktvorrichtungen einzuführen, so dass eine Systemleistungsarchitektur besser optimiert werden kann, und um Austrittslatenzen besser zu managen. Die Schemas stärken 2LM-bezogene und andere potentielle Berechnungssysteme durch Verdecken/Verschlüsseln kritischer Leistungsmodusinformationen und Verhindern, dass sie für potentielle Wettbewerber oder böswillige Täter offengelegt werden. Ausführungsformen können über die Verwendung einer Host-Anwendungsschicht und Vorrichtungsanwendungsschicht implementiert werden, während sie andernfalls Standard-PCIe-Komponenten und Standard-PCIe-Stacks verwenden. Die Ausführungsformen stellen außerdem einen generischen Mechanismus zum Ankündigen und/oder Austauschen dynamischer System-Niederleistungsbetriebsarten und Funktionen sowohl aus Sicht eines Hosts als auch eines Vorrichtungsendpunkts, abhängig von den Bedürfnissen der Systemarchitektur, während Laufzeitoperationen bereit.
-
Zusätzlich setzen die offenbarten Herangehensweisen die erweiterten Niederleistungsmerkmale einer PCIe-Vorrichtung jenseits der begrenzen Niederleistungsoptionen mit grober Granularität, die durch die PCIe-Spezifikation definiert sind, ein. Die Herangehensweise ermöglicht vollständig Hardware-autonome (Betriebssystem/Software-Treiber-agnostische) und/oder mehr Systemoptimierung hinsichtlich Leistung und Effizienz durch Initialisieren eines orchestrierten Niederleistungsübergangs basierend auf Systemkenntnis, die durch den Host erhalten wird und/oder die der Host besitzt. Unter zusätzlichen Aspekten stärkt die Herangehensweise 2LM-bezogene und andere potentielle Berechnungssysteme durch Nutzen von anbieterspezifischen Hinweisinformationen über kritische Leistungsmodi und Verhindern, dass sie für potentielle Wettbewerber oder böswillige Täter offengelegt werden. Außerdem sind die Techniken und der Mechanismus vollständig PCIe-konform. Sie sind auf existierenden PCIe-definierten Leistungszustandsübergangsmechanismen aufgebaut, und Vorrichtungen verwenden existierende PCIe-definierte Verfahren, um einen Niederleistungszustandsübergang zu triggern.
-
Obwohl einige Ausführungsformen mit Bezug auf spezielle Implementierungen beschrieben worden sind, sind andere Implementierungen gemäß einigen Ausführungsformen möglich. Zusätzlich müssen die Anordnung und/oder Reihenfolge von Elementen oder anderen Merkmalen, die in den Zeichnungen dargestellt oder hier beschrieben sind, nicht in der speziellen dargestellten und beschriebenen Form angeordnet sein. Viele andere Anordnungen sind gemäß einigen Ausführungsformen möglich.
-
In jedem System, das in einer Figur gezeigt ist, können die Elemente in einigen Fällen jeweils das gleiche Bezugszeichen oder ein unterschiedliches Bezugszeichen aufweisen, um darauf hinzuweisen, dass die repräsentierten Elemente unterschiedlich und/oder ähnlich sein könnten. Ein Element kann jedoch flexibel genug sein, unterschiedliche Implementierungen zu besitzen und mit einigen der oder allen Systemen, die hier gezeigt oder beschrieben sind, zu arbeiten. Die verschiedenen in den Figuren gezeigten Elemente können gleich oder unterschiedlich sein. Welches als erstes Element bezeichnet ist und welches das zweite Element genannt ist, ist beliebig.
-
In der Beschreibung und den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“, zusammen mit ihren Ableitungen, verwendet sein. Es ist zu verstehen, dass diese Begriffe nicht als Synonyme füreinander vorgesehen sind. Vielmehr kann in speziellen Ausführungsformen „verbunden“ verwendet sein, um anzugeben, dass zwei oder mehr Elemente in direktem physikalischem oder elektrischem Kontakt miteinander sind. „Gekoppelt“ kann bedeuten, dass zwei oder mehr Elemente in direktem physikalischem oder elektrischem Kontakt sind. „Gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sind, jedoch immer noch zusammenarbeiten oder miteinander zusammenwirken. Zusätzlich bedeutet „kommunikationstechnisch gekoppelt“, dass es zwei oder mehr Elementen, die in direktem Kontakt miteinander sein können oder nicht, möglich ist, miteinander zu kommunizieren. Falls beispielsweise die Komponente A mit der Komponente B verbunden ist, die wiederum mit der Komponente C verbunden ist, kann die Komponente A mit der Komponente C unter Verwendung der Komponente B als eine Zwischenkomponente kommunikationstechnisch gekoppelt sein.
-
Eine Ausführungsform ist eine Implementierung oder ein Beispiel der Erfindungen. Bezugnahme in der Spezifikation auf „eine Ausführungsform“, „einige Ausführungsformen“ oder „andere Ausführungsformen“ bedeutet, dass ein/e spezielle/s Merkmal, Struktur oder Eigenschaft, das/die in Verbindung mit den Ausführungsformen beschrieben ist, in wenigstens einigen Ausführungsformen, jedoch nicht notwendigerweise in allen Ausführungsformen, der Erfindung enthalten ist. Das verschiedene Auftreten von „einer Ausführungsform“ oder „einigen Ausführungsformen“ bezieht sich nicht notwendigerweise immer auf dieselben Ausführungsformen.
-
Nicht alle hier beschriebenen und dargestellten Komponenten, Merkmale, Strukturen, Eigenschaften usw. müssen in einer speziellen Ausführungsform oder Ausführungsformen enthalten sein. Falls die Spezifikation feststellt, dass eine Komponente, ein Merkmal, eine Struktur oder eine Eigenschaft enthalten sein „kann“ oder „könnte“, ist es nicht erforderlich, dass diese/s spezielle Komponente, Merkmal, Struktur oder Eigenschaft enthalten ist. Falls sich die Spezifikation oder ein Anspruch auf „ein“ Element bezieht, bedeutet das nicht, dass nur ein solches Element vorhanden ist. Falls sich die Spezifikation oder ein Anspruch auf „ein zusätzliches“ Element bezieht, schließt das nicht aus, dass mehr als ein solches zusätzliches Element vorhanden ist.
-
Wie vorstehend diskutiert können die verschiedenen Aspekte der Ausführungsformen hier durch entsprechende Software- und/oder Firmware Komponenten und Anwendungen, wie z. B. Software und/oder Firmware, die durch einen eingebetteten Prozessor ausgeführt wird, oder dergleichen unterstützt werden. Somit können Ausführungsformen dieser Erfindung als ein Software-Programm, Software-Module, Firmware und/oder verteilte Software, die auf einer Form eines Prozessors, Verarbeitungskern oder eingebetteter Logik, einer virtuellen Maschine, die auf einem Prozessor oder Kern läuft oder auf andere Weise auf einem oder innerhalb eines nichttransitorischen computerlesbaren oder maschinenlesbaren Speichermedium implementiert oder realisiert ist, verwendet sein oder zu deren Unterstützung dienen. Ein nicht-transitorisches computerlesbares oder maschinenlesbares Speichermedium enthält irgendeinen Mechanismus zum Speichern oder Übertragen von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form. Beispielsweise enthält ein nicht-transitorisches computerlesbares oder maschinenlesbares Speichermedium irgendeinen Mechanismus, der Informationen in einer Form bereitstellt (d. h. speichert und/oder überträgt), die für einen Computer oder eine Berechnungsmaschine (z. B. eine Berechnungsvorrichtung, ein elektronisches System usw.) zugänglich ist, wie z. B. beschreibbare/nicht beschreibbare Medien (z. B. Festwertspeicher (ROM), Direktzugriffsspeicher (RAM), Magnetplattenspeichermedien, optische Speichermedien, Flash-Speichervorrichtungen usw.). Der Inhalt kann direkt ausführbar („Objekt“ oder „ausführbare“ Form), Quellcode oder Differenzcode („Delta“ oder „Patch“-Code) sein. Ein nicht-transitorisches computerlesbares oder maschinenlesbares Speichermedium kann außerdem einen Speicher oder eine Datenbank enthalten, aus dem/der Inhalt heruntergeladen werden kann. Das nicht-transitorische computerlesbare oder maschinenlesbare Speichermedium kann außerdem eine Vorrichtung oder ein Produkt enthalten, das darauf zur Zeit des Verkaufs oder der Lieferung gespeicherten Inhalt aufweist. Somit kann das Liefern einer Vorrichtung mit gespeichertem Inhalt oder das Anbieten von Inhalt zum Herunterladen über ein Kommunikationsmedium als Bereitstellen eines Herstellungserzeugnisses verstanden werden, das ein nicht-transitorisches computerlesbares oder maschinenlesbares Speichermedium mit solchem hier beschriebenen Inhalt umfasst.
-
Die Operationen und Funktionen, die durch verschiedene hier beschriebene Komponenten ausgeführt werden, können durch Software, die auf einem Verarbeitungselement abläuft, über eingebettete Hardware oder dergleichen oder irgendeine Kombination aus Hardware und Software implementiert sein. Solche Komponenten können als Software-Module, Hardware-Module, Spezial-Hardware (z. B. anwendungsspezifische Hardware, ASICs, DSPs usw.), eingebettete Steuereinheiten, fest verdrahtete Schaltungsanordnung, Hardware-Logik usw. implementiert sein. Software-Inhalt (z. B. Daten, Anweisungen, Konfigurationsinformationen usw.) kann über ein Herstellungserzeugnis bereitgestellt sein, das ein nicht-transitorisches computerlesbares oder maschinenlesbares Speichermedium enthält, das Inhalt bereitstellt, der Anweisungen repräsentiert, die ausgeführt werden können. Der Inhalt kann dazu führen, dass ein Computer verschiedene hier beschriebene Funktionen/Operationen ausführt.
-
Wie hier verwendet kann eine Liste von Elementen, die durch den Begriff „wenigstens eines aus“ verbunden sind, irgendeine Kombination der aufgelisteten Begriffe bedeuten. Beispielsweise kann der Ausdruck „wenigstens eines aus A, B oder C“ A; B; C; A und B; A und C; B und C; oder A, B und C bedeuten.
-
Die vorstehende Beschreibung dargestellter Ausführungsformen der Erfindung, einschließlich dessen, was in der Zusammenfassung beschrieben ist, ist nicht als umfassend oder zum Einschränken der Erfindung auf die präzisen offenbarten Formen vorgesehen. Obwohl spezifische Ausführungsformen der und Beispiele für die Erfindung hier zu erläuternden Zwecken beschrieben sind, sind verschiedene äquivalente Modifikationen innerhalb des Schutzbereichs der Erfindung möglich, wie Fachleute der relevanten Technik erkennen werden.
-
Diese Modifikationen können an der Erfindung im Hinblick auf die vorstehende ausführliche Beschreibung vorgenommen werden. Die in den folgenden Ansprüchen verwendeten Begriffe sollten nicht so gedeutet werden, dass sie die Erfindung auf die in der Spezifikation und den Zeichnungen offenbarten spezifischen Ausführungsformen einschränken. Vielmehr soll der Schutzbereich der Erfindung vollständig durch die folgenden Ansprüche bestimmt werden, die in Übereinstimmung mit eingeführten Doktrinen für die Interpretation von Ansprüchen zu deuten sind.