DE102020117947A1 - Verfahren zum optimieren der leistung und effizienz einer vorrichtung basierend auf host-gesteuerten hinweisen vor dem eintritt in niederleistung für blöcke und komponenten auf einer pci-express-vorrichtung - Google Patents

Verfahren zum optimieren der leistung und effizienz einer vorrichtung basierend auf host-gesteuerten hinweisen vor dem eintritt in niederleistung für blöcke und komponenten auf einer pci-express-vorrichtung Download PDF

Info

Publication number
DE102020117947A1
DE102020117947A1 DE102020117947.2A DE102020117947A DE102020117947A1 DE 102020117947 A1 DE102020117947 A1 DE 102020117947A1 DE 102020117947 A DE102020117947 A DE 102020117947A DE 102020117947 A1 DE102020117947 A1 DE 102020117947A1
Authority
DE
Germany
Prior art keywords
low
pcie
power state
fine
grained
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
DE102020117947.2A
Other languages
English (en)
Inventor
Kuan Hua Tan
Anoop Mukker
Ang Li
Wai Ben Lin
Arash Talebi
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 DE102020117947A1 publication Critical patent/DE102020117947A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Power Sources (AREA)

Abstract

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. Datenstrukturen, die Niederleistungszustandsfähigkeitsinformationen beinhalten, die einen oder mehrere feingranulare Niederleistungszustände für jeden aus wenigstens einem aus einem PCIe-definierten Niederleistungszustand L0s, L1, L1.1 und L1.2 abbilden, sind in einer PCIe-Vorrichtung, die mit einem Host über eine PCIe-Strecke gekoppelt ist, gespeichert. Nachrichten werden über die PCIe-Strecke zwischen dem Host und der PCIe-Vorrichtung ausgetauscht, um unter Verwendung der Niederleistungszustandsfähigkeitsinformationen Blöcke und/oder Komponenten auf der PCIe-Vorrichtung zu konfigurieren, in einen feingranularen Niederleistungszustand anstelle eines zugeordneten PCIe-definierten Niederleistungszustands, der auf den feingranularen Niederleistungszustand abgebildet ist, einzutreten, wenn die PCIe-Vorrichtung ein Leistungsänderungsereignis detektiert oder einen Befehl empfängt, in den zugeordneten PCIe-definierten Niederleistungszustand einzutreten. Sequenzen von Leistungspegeländerungen zwischen mehreren feingranularen Niederleistungszuständen können ebenfalls implementiert sein. G14728

Description

  • 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.

Claims (25)

  1. Verfahren zum Bewirken von Leistungsänderungen in einem Computersystem, das einen Host enthält, der mit einer „Peripheral Component Interconnect Express“-(PCIe-) Vorrichtung über eine PCIe-Strecke gekoppelt ist, das Folgendes umfasst: Speichern auf der PCIe-Vorrichtung einer oder mehrerer Datenstrukturen, die Niederleistungszustandsfähigkeitsinformationen beinhalten, die einen oder mehrere feingranulare Niederleistungszustände für jeden aus wenigstens einem aus einem PCIe-definierten Niederleistungszustand L0s, L1, L1.1 und L1.2 abbilden; Konfigurieren durch die Verwendung der Niederleistungszustandsfähigkeitsinformationen eines Blocks oder einer Komponente auf der PCIe-Vorrichtung, in einen feingranularen Niederleistungszustand anstelle eines zugeordneten PCIe-definierten Niederleistungszustands, der auf den feingranularen Niederleistungszustand abgebildet ist, einzutreten, wenn die PCIe-Vorrichtung ein Leistungsänderungsereignis detektiert oder einen Befehl empfängt, in den zugeordneten PCIe-definierten Niederleistungszustand einzutreten.
  2. Verfahren nach Anspruch 1, das ferner Folgendes umfasst: Erzeugen in dem Host einer Niederleistungskonfigurationsschreibanforderung, die einen feingranularen Niederleistungszustand definiert, der durch die PCIe-Vorrichtung zu verwenden ist; Senden der Niederleistungskonfigurationsschreibanforderung über die PCIe-Strecke zu der PCIe-Vorrichtung; Extrahieren in der PCIe-Vorrichtung von Informationen, die den feingranularen Niederleistungszustand identifizieren, aus der Niederlei stungskonfigurationsschreibanforderung; Bestimmen unter Verwendung der Informationen, die den feingranularen Niederleistungszustand identifizieren, und der Niederleistungszustandsfähigkeitsinformationen eines PCIe-definierten Niederleistungszustands, der auf den feingranularen Niederleistungszustand abgebildet ist; und Konfigurieren des Blocks oder der Komponente auf der PCIe-Vorrichtung, in den feingranularen Niederleistungszustand anstelle des PCIe-definierten Niederleistungszustands, der auf den feingranularen Niederleistungszustand abgebildet ist, einzutreten, wenn der Block oder die Komponente oder die PCIe-Vorrichtung ein Leistungsänderungsereignis detektiert, das dem Block oder der Komponente signalisiert, in den PCIe-definierten Niederleistungszustand einzutreten, oder wenn der Block oder die Komponente einen Befehl empfängt, in den PCIe-definierten Niederleistungszustand einzutreten.
  3. Verfahren nach Anspruch 1 oder 2, wobei die eine oder die mehreren Datenstrukturen eine Niederleistungszustandsfähigkeitstabellenstruktur enthalten, die eine erste Spalte, die PCIe-definierte Niederleistungszustände speichert, eine zweite Spalte, die feingranulare Niederleistungszustände speichert, und eine aus mehreren zusätzlichen Spalten, die Parameter speichern, die sich auf jeden feingranularen Niederleistungszustand beziehen, aufweist.
  4. Verfahren nach Anspruch 3, wobei die eine oder die mehreren Datenstrukturen mehrere Konfigurationsregister enthalten, die für den Host zum Auswählen feingranularer Niederleistungszustände offengelegt sind, das ferner Konfigurieren eines oder mehrerer Niederleistungskonfigurationsregister zum Identifizieren eines feingranularen Niederleistungszustands, in den ein Block oder eine Komponente auf der PCIe-Vorrichtung anstelle eines PCIe-definierten Niederleistungszustands, der dem feingranularen Niederleistungszustand zugeordnet ist, eintreten soll, umfasst.
  5. Verfahren nach Anspruch 4, das ferner Folgendes umfasst: in Reaktion auf eine Änderung an einem oder mehreren Konfigurationsregistern, die einem feingranularen Niederleistungszustand zugeordnet sind, Konfigurieren eines Blocks oder einer Komponente auf der PCIe-Vorrichtung, in den feingranularen Niederleistungszustand einzutreten, wenn der Block oder die Komponente oder die PCIe-Vorrichtung ein Leistungsänderungsereignis detektiert, das dem Block oder der Komponente signalisiert, in einen PCIe-definierten Niederleistungszustand, der dem feingranularen Niederleistungszustand zugeordnet ist, einzutreten, oder wenn der Block oder die Komponente einen Befehl empfängt, in einen PCIe-definierten Niederleistungszustand, der dem feingranularen Niederleistungszustand zugeordnet ist, einzutreten.
  6. Verfahren nach einem der Ansprüche 3-5, das ferner Folgendes umfasst: Erzeugen in dem Host einer Niederleistungskonfigurationsleseanforderung zum Lesen von Niederleistungskonfigurationsinformationen aus der Niederleistungszustandsfähigkeitstabellenstruktur; Senden der Niederleistungskonfigurationsleseanforderung über die PCIe-Strecke zu der PCIe-Vorrichtung; Lesen in der PCIe-Vorrichtung der Niederleistungskonfigurationsinformationen aus der Niederleistungszustandsfähigkeitstabellenstruktur; Zurückgeben der Niederleistungskonfigurationsinformationen, die gelesen sind, über eine Antwort, die von der PCIe-Vorrichtung über die PCIe-Strecke zu dem Host gesendet wird; und Erzeugen oder Aktualisieren einer Datenstruktur auf dem Host, die Niederleistungskonfigurationsinformationen beinhaltet.
  7. Verfahren nach einem der Ansprüche 3-6, wobei die eine aus mehreren zusätzlichen Spalten, die Parameter speichern, die sich auf jeden feingranularen Niederleistungszustand beziehen, eine Spalte für einen Automigrationszeitgeber für einen Zustand niedrigerer Leistung enthält, in der Zeitgeberwerte gespeichert sind, die eine Zeitspanne angeben, die vor dem automatischen Übergehen in einen nächstniedrigeren Leistungszustand in einem feingranularen Niederleistungszustand zu verbringen ist.
  8. Verfahren nach Anspruch 8, wobei die PCIe-Vorrichtung Konfigurationsinformationen speichert, die für jeden aus mehreren feingranularen Niederleistungszuständen identifizieren, ob Automigration zu einem Zustand niedrigerer Leistung aktiviert ist.
  9. Verfahren nach einem der Ansprüche 3-8, wobei die eine oder die mehreren zusätzlichen Spalten, die Parameter speichern, die sich auf jeden feingranularen Niederleistungszustand beziehen, eine Maßeinteilungsspalte und eine Wertespalte enthalten, das ferner für einen gegebenen feingranularen Niederleistungszustand das Verwenden von Werten in der Maßeinteilungs- und Wertespalte für diesen feingranularen Niederleistungszustand umfasst, um eine Austrittslatenz, die für den feingranularen Niederleistungszustand zu verwenden ist, zu bestimmen.
  10. Verfahren nach einem der Ansprüche 1-5, wobei das Verfahren durch Austauschen von Informationen zwischen dem Host und der PCIe-Vorrichtung unter Verwendung von durch einen Anbieter definierten Nachrichten (VDMs), die in Übereinstimmung mit einer PCIe-Spezifikation konfiguriert sind, oder unter Verwendung von Transaktionsschichtpaketen (TLPs) für anbieterspezifische erweiterte Fähigkeiten (VSEC), die in Übereinstimmung mit einer PCIe-Spezifikation konfiguriert sind, implementiert ist und wobei das Verfahren mit der PCIe-Spezifikation konform ist.
  11. System, das Folgendes umfasst: einen Einchipsystem- (SoC-) Host, der mehrere Prozessorkerne umfasst, die mit einer Speichersteuereinheit, einer „Peripheral Component Interconnect Express“- (PCIe-) Wurzelsteuereinheit und wenigstens einem PCIe-Wurzelanschluss zusammengeschaltet sind; Systemspeicher, der betriebstechnisch mit der Speichersteuereinheit gekoppelt ist; Anweisungen, die auf dem SoC-Host auszuführen sind; und eine PCIe-Vorrichtung, die Folgendes aufweist: einen PCIe-Anschluss, der mit einem PCIe-Wurzelanschluss über eine PCIe-Strecke gekoppelt ist; eine oder mehrere Datenstrukturen, die Niederleistungszustandsfähigkeitsinformationen beinhalten, die einen oder mehrere feingranulare Niederleistungszustände für jeden aus wenigstens einem aus einem PCIe-definierten Niederleistungszustand L0s, L1, L1.1 und L1.2 abbilden; und eingebettete Logik; wobei die Ausführung der Anweisungen auf dem SoC-Host und der eingebetteten Logik dem System ermöglicht, über die Verwendung der Niederleistungszustandsfähigkeitsinformationen einen Block oder eine Komponente auf der PCIe-Vorrichtung zu konfigurieren, in einen feingranularen Niederleistungszustand anstelle eines zugeordneten PCIe-definierten Niederleistungszustands, der auf den feingranularen Niederleistungszustand abgebildet ist, einzutreten, wenn die PCIe-Vorrichtung ein Leistungsänderungsereignis detektiert oder einen Befehl empfängt, in den zugeordneten PCIe-definierten Niederleistungszustand einzutreten.
  12. System nach Anspruch 11, wobei die Ausführung der Anweisungen auf dem SoC-Host und der eingebetteten Logik ferner Folgendes für das System ermöglichen: Erzeugen in dem Host einer Niederleistungskonfigurationsschreibanforderung, die einen feingranularen Niederleistungszustand definiert, der durch die PCIe-Vorrichtung zu verwenden ist; Senden der Niederleistungskonfigurationsschreibanforderung über die PCIe-Strecke zu der PCIe-Vorrichtung; Extrahieren in der PCIe-Vorrichtung von Informationen, die den feingranularen Niederleistungszustand identifizieren, aus der Niederlei stungskonfigurationsschreibanforderung; Bestimmen unter Verwendung der Informationen, die den feingranularen Niederleistungszustand identifizieren, und der Niederleistungszustandsfähigkeitsinformationen eines PCIe-definierten Niederleistungszustands, der auf den feingranularen Niederleistungszustand abgebildet ist; und Konfigurieren des Blocks oder der Komponente auf der PCIe-Vorrichtung, in den feingranularen Niederleistungszustand anstelle des PCIe-definierten Niederleistungszustands, der auf den feingranularen Niederleistungszustand abgebildet ist, einzutreten, wenn der Block oder die Komponente oder die PCIe-Vorrichtung ein Leistungsänderungsereignis detektiert, das dem Block oder der Komponente signalisiert, in den PCIe-definierten Niederleistungszustand einzutreten, oder wenn der Block oder die Komponente einen Befehl empfängt, in den PCIe-definierten Niederleistungszustand einzutreten.
  13. System nach Anspruch 11 oder 12, wobei die eine oder die mehreren Datenstrukturen eine Niederleistungszustandsfähigkeitstabellenstruktur enthalten, die eine erste Spalte, die PCIe-definierte Niederleistungszustände speichert, eine zweite Spalte, die feingranulare Niederleistungszustände speichert, und eine aus mehreren zusätzlichen Spalten, die Parameter speichern, die sich auf jeden feingranularen Niederleistungszustand beziehen, aufweist.
  14. System nach Anspruch 13, wobei die eine oder die mehreren Datenstrukturen mehrere Konfigurationsregister enthalten, die für den Host zum Auswählen feingranularer Niederleistungszustände offengelegt sind, und wobei das Ausführen der Anweisungen auf dem SoC-Host und der eingebetteten Logik ferner ermöglicht, dass das System ein oder mehrere Niederleistungskonfigurationsregister konfiguriert, einen feingranularen Niederleistungszustand zu identifizieren, in den ein Block oder eine Komponente auf der PCIe-Vorrichtung anstelle eines PCIe-definierten Niederleistungszustands, der dem feingranularen Niederleistungszustand zugeordnet ist, eintreten soll.
  15. System nach Anspruch 14, wobei die eingebettete Logik dem System ferner Folgendes ermöglicht: in Reaktion auf eine Änderung an einem oder mehreren Konfigurationsregistern, die einem feingranularen Niederleistungszustand zugeordnet sind, einen Block oder eine Komponente auf der PCIe-Vorrichtung zu konfigurieren, in den feingranularen Niederleistungszustand einzutreten, wenn der Block oder die Komponente oder die PCIe-Vorrichtung ein Leistungsänderungsereignis detektiert, das dem Block oder der Komponente signalisiert, in einen PCIe-definierten Niederleistungszustand, der dem feingranularen Niederleistungszustand zugeordnet ist, einzutreten, oder wenn der Block oder die Komponente einen Befehl empfängt, in einen PCIe-definierten Niederleistungszustand, der dem feingranularen Niederleistungszustand zugeordnet ist, einzutreten.
  16. System nach einem der Ansprüche 13-15, wobei die Ausführung der Anweisungen auf dem SoC-Host und der eingebetteten Logik dem System ferner Folgendes ermöglichen: Erzeugen in dem Host einer Niederleistungskonfigurationsleseanforderung zum Lesen von Niederleistungskonfigurationsinformationen aus der Niederlei stungszustandsfähigkeitstabellenstruktur; Senden der Niederleistungskonfigurationsleseanforderung über die PCIe-Strecke zu der PCIe-Vorrichtung; Lesen in der PCIe-Vorrichtung der Niederleistungskonfigurationsinformationen aus der Niederleistungszustandsfähigkeitstabellenstruktur; Zurückgeben der Niederleistungskonfigurationsinformationen, die gelesen werden, über eine Antwort, die von der PCIe-Vorrichtung über die PCIe-Strecke zu dem Host gesendet wird; und Erzeugen oder Aktualisieren einer Datenstruktur auf dem Host, die Niederleistungskonfigurationsinformationen beinhaltet.
  17. System nach einem der Ansprüche 13-16, wobei die eine aus mehreren zusätzlichen Spalten, die Parameter speichern, die sich auf jeden feingranularen Niederleistungszustand beziehen, eine Spalte für einen Automigrationszeitgeber für einen Zustand niedrigerer Leistung enthält, in der Zeitgeberwerte gespeichert sind, die eine Zeitspanne angeben, die vor dem automatischen Übergehen in einen nächstniedrigeren Leistungszustand in einem feingranularen Niederleistungszustand zu verbringen ist.
  18. System nach Anspruch 17, wobei die PCIe-Vorrichtung Konfigurationsinformationen speichert, die für jeden aus mehreren feingranularen Niederleistungszuständen identifizieren, ob Automigration zu niedrigerer Leistung aktiviert ist, und wobei die eingebettete Logik auf der PCIe-Vorrichtung der PCIe-Vorrichtung ferner Folgendes ermöglicht: für ein gegebenes Leistungsniveauänderungsereignis Automigration zu einem nächstniedrigeren Leistungszustand für einen oder mehrere Zustände niedrigerer Leistung basierend darauf, ob Automigration für den einen oder die mehreren Zustände niedrigerer Leistung aktiviert ist, zu implementieren.
  19. System nach einem der Ansprüche 13-18, wobei die eine oder die mehreren zusätzlichen Spalten, die Parameter speichern, die sich auf jeden feingranularen Niederleistungszustand beziehen, eine Maßeinteilungsspalte und eine Wertespalte enthalten und wobei die Ausführung der Anweisungen auf dem SoC-Host und der eingebetteten Logik dem System ferner Folgendes ermöglicht: für einen gegebenen feingranularen Niederleistungszustand Berechnen einer Austrittslatenz, die für den feingranularen Niederleistungszustand zu verwenden ist, als eine Funktion von Werten in den Maßeinteilungs- und Wertespalten für diesen feingranularen Niederleistungszustand.
  20. System nach einem der Ansprüche 11-15, wobei der SoC-Host und die PCIe-Vorrichtung konfiguriert sind, Informationen unter Verwendung von durch den Anbieter definierten Nachrichten (VDMs), die in Übereinstimmung mit einer PCIe-Spezifikation konfiguriert sind, oder unter Verwendung von Transaktionsschichtpaketen (TLPs) für anbieterspezifische erweiterte Fähigkeiten (VSEC), die in Übereinstimmung mit einer PCIe-Spezifikation konfiguriert sind, auszutauschen.
  21. „Peripheral Component Interconnect Express“- (PCIe-) Vorrichtung, die Folgendes umfasst: einen PCIe-Anschluss, der konfiguriert ist, einen PCIe-Stack zu implementieren, der eine Bitübertragungsschicht (PHY), eine Sicherungsschicht und eine Transaktionsschicht enthält, wobei die Bitübertragungsschicht in einem PHY-Block implementiert ist; eine oder mehrere Datenstrukturen, die Niederleistungszustandsfähigkeitsinformationen beinhalten, die einen oder mehrere feingranulare Niederleistungszustände für jeden aus wenigstens einem aus einem PCIe-definierten Niederleistungszustand L0s, L1, L1.1 und L1.2 abbilden; und eingebettete Logik; wobei die PCIe-Vorrichtung konfiguriert ist, mit einem Host über eine PCIe-Strecke gekoppelt zu sein, die zwischen dem Host und dem PCIe-Anschluss gekoppelt ist, und wobei die eingebettete Logik konfiguriert ist zum Konfigurieren durch Verwenden der Niederleistungszustandsfähigkeitsinformationen eines Blocks oder einer Komponente auf der PCIe-Vorrichtung, in einen feingranularen Niederleistungszustand anstelle eines zugeordneten PCIe-definierten Niederleistungszustands, der auf den feingranularen Niederleistungszustand abgebildet ist, einzutreten, wenn der Block oder die Komponente oder die PCIe-Vorrichtung ein Leistungsänderungsereignis detektiert, das dem Block oder der Komponente signalisiert, in den PCIe-definierten Niederleistungszustand einzutreten, oder wenn der Block oder die Komponente einen Befehl empfängt, in den PCIe-definierten Niederleistungszustand einzutreten.
  22. PCIe-Vorrichtung nach Anspruch 21, wobei die eingebettete Logik ferner konfiguriert ist zum: Empfangen an dem PCIe-Anschluss von dem Host einer Niederleistungskonfigurationsschreibanforderung, die einen feingranularen Niederleistungszustand definiert, der durch die PCIe-Vorrichtung zu verwenden ist; Extrahieren von Informationen, die den feingranularen Niederleistungszustand identifizieren, aus der Niederleistungskonfigurationsschreibanforderung; Bestimmen unter Verwendung der Informationen, die den feingranularen Niederleistungszustand identifizieren, und der Niederleistungszustandsfähigkeitsinformationen eines PCIe-definierten Niederleistungszustands, der auf den feingranularen Niederleistungszustand abgebildet ist; und Konfigurieren des Blocks oder der Komponente auf der PCIe-Vorrichtung, in den feingranularen Niederleistungszustand anstelle des PCIe-definierten Niederleistungszustands, der auf den feingranularen Niederleistungszustand abgebildet ist, einzutreten, wenn der Block oder die Komponente oder die PCIe-Vorrichtung ein Leistungsänderungsereignis detektiert, das dem Block oder der Komponente signalisiert, in den PCIe-definierten Niederleistungszustand einzutreten, oder wenn der Block oder die Komponente einen Befehl empfängt, in den PCIe-definierten Niederleistungszustand einzutreten.
  23. PCIe-Vorrichtung nach Anspruch 21 oder 22, wobei die eine oder die mehreren Datenstrukturen Folgendes enthalten: eine Niederleistungszustandsfähigkeitstabellenstruktur, die eine erste Spalte, die PCIe-definierte Niederleistungszustände speichert, eine zweite Spalte, die feingranulare Niederleistungszustände speichert, und eine aus mehreren zusätzlichen Spalten, die Parameter speichern, die sich auf jeden feingranularen Niederleistungszustand beziehen, aufweist; und mehrere Konfigurationsregister, die für den Host zum Auswählen feingranularer Niederleistungszustände offengelegt sind, und wobei die eingebettete Logik ferner konfiguriert ist, über Kommunikation mit dem Host über die PCIe-Strecke dem Host zu ermöglichen, ein oder mehrere Niederleistungskonfigurationsregister zu konfigurieren, um einen feingranularen Niederleistungszustand zu identifizieren, in den ein Block oder eine Komponente der PCIe-Vorrichtung anstelle eines PCIe-definierten Niederleistungszustands, der dem feingranularen Niederleistungszustand zugeordnet ist, eintreten soll.
  24. PCIe-Vorrichtung nach Anspruch 23, die ferner eine Leistungsmanagementeinheit umfasst, in der ein Abschnitt der eingebetteten Logik implementiert ist, wobei die eingebettete Logik ferner konfiguriert ist zum: in Reaktion auf eine Änderung an einem oder mehreren Konfigurationsregistern, die einem feingranularen Niederleistungszustand zugeordnet sind, die Leistungsmanagementeinheit zu triggern, einen Block oder eine Komponente auf der PCIe-Vorrichtung zu konfigurieren, in den feingranularen Niederleistungszustand einzutreten, wenn der Block oder die Komponente oder die Leistungsmanagementeinheit ein Leistungsänderungsereignis detektiert, das dem Block oder der Komponente signalisiert, in einen PCIe-definierten Niederleistungszustand, der dem feingranularen Niederleistungszustand zugeordnet ist, einzutreten, oder wenn der Block oder die Komponente einen Befehl von der Leistungsmanagementeinheit empfängt, in einen PCIe-definierten Niederleistungszustand, der dem feingranularen Niederleistungszustand zugeordnet ist, einzutreten.
  25. PCIe-Vorrichtung nach einem der Ansprüche 21-24, wobei der Block oder die Komponente auf der PCIe-Vorrichtung, der/die konfiguriert ist, in den feingranularen Niederleistungszustand anstelle des zugeordneten PCIe-definierten Niederleistungszustands, der auf den feingranularen Niederleistungszustand abgebildet ist, einzutreten, der PHY-Block ist.
DE102020117947.2A 2019-08-15 2020-07-08 Verfahren zum optimieren der leistung und effizienz einer vorrichtung basierend auf host-gesteuerten hinweisen vor dem eintritt in niederleistung für blöcke und komponenten auf einer pci-express-vorrichtung Pending DE102020117947A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/542,253 US11625084B2 (en) 2019-08-15 2019-08-15 Method of optimizing device power and efficiency based on host-controlled hints prior to low-power entry for blocks and components on a PCI express device
US16/542,253 2019-08-15

Publications (1)

Publication Number Publication Date
DE102020117947A1 true DE102020117947A1 (de) 2021-02-18

Family

ID=68693718

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020117947.2A Pending DE102020117947A1 (de) 2019-08-15 2020-07-08 Verfahren zum optimieren der leistung und effizienz einer vorrichtung basierend auf host-gesteuerten hinweisen vor dem eintritt in niederleistung für blöcke und komponenten auf einer pci-express-vorrichtung

Country Status (3)

Country Link
US (1) US11625084B2 (de)
CN (1) CN112395232A (de)
DE (1) DE102020117947A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7115128B2 (ja) * 2018-08-07 2022-08-09 富士通株式会社 情報処理装置、ブート方法及びブートプログラム
KR20220067795A (ko) * 2020-11-18 2022-05-25 삼성전자주식회사 스토리지 장치 및 이를 포함하는 스토리지 시스템
US11509751B2 (en) * 2020-12-23 2022-11-22 Dell Products L.P. Self-describing system using single-source/multi-destination cable
CN115905074A (zh) * 2021-08-27 2023-04-04 超聚变数字技术有限公司 一种管理快速外设组件互联PCIe设备的方法及相关装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5925134A (en) * 1997-09-30 1999-07-20 Intel Corporation Method and apparatus for power management
US6651172B1 (en) * 1999-05-28 2003-11-18 Advanced Micro Devices, Inc. Multi-phase EEPROM reading for network interface initialization
US6802014B1 (en) * 2000-10-26 2004-10-05 Apple Computer, Inc. Method and apparatus for managing power in computer systems
JP4594761B2 (ja) * 2005-02-10 2010-12-08 株式会社東芝 情報処理装置およびその制御方法
US8766993B1 (en) * 2005-04-06 2014-07-01 Teradici Corporation Methods and apparatus for enabling multiple remote displays
US7500119B2 (en) * 2005-12-21 2009-03-03 Intel Corporation Power saving techniques for use in communication systems, networks, and devices
US8255713B2 (en) * 2008-06-26 2012-08-28 Intel Corporation Management of link states using plateform and device latencies
US8689028B2 (en) * 2011-07-01 2014-04-01 Intel Corporation Method and apparatus to reduce idle link power in a platform
CN103649871B (zh) * 2011-07-01 2016-09-14 高通股份有限公司 用于在串行通信系统中降低待机功率的系统和方法
WO2013077891A1 (en) * 2011-11-22 2013-05-30 Intel Corporation Collaborative processor and system performance and power management
CN105051706B (zh) * 2013-04-17 2018-07-24 英特尔公司 用于具有pcie协议栈的低功率phy的操作的设备、方法和系统
US9946325B2 (en) * 2016-06-30 2018-04-17 Intel IP Corporation Interprocessor power state transitions
JP2019047146A (ja) * 2017-08-29 2019-03-22 東芝メモリ株式会社 電子機器および電力管理方法
US10564868B2 (en) * 2018-01-24 2020-02-18 Western Digital Technologies, Inc. Method and apparatus for selecting power states in storage devices
US11307638B2 (en) * 2018-12-12 2022-04-19 Intel Corporation Securely providing multiple wake-up time options for PCI Express
US11194751B2 (en) * 2019-07-16 2021-12-07 Intel Corporation Power management of re-driver devices

Also Published As

Publication number Publication date
CN112395232A (zh) 2021-02-23
US20190369703A1 (en) 2019-12-05
US11625084B2 (en) 2023-04-11

Similar Documents

Publication Publication Date Title
DE102020117947A1 (de) Verfahren zum optimieren der leistung und effizienz einer vorrichtung basierend auf host-gesteuerten hinweisen vor dem eintritt in niederleistung für blöcke und komponenten auf einer pci-express-vorrichtung
DE102020120102A1 (de) Globale dauerhafte Speicherleerung
DE102013110085B4 (de) Nicht-flüchtige speichervorrichtung
DE102020125353A1 (de) Transaktionsschichtpaketformat
DE112007001215B4 (de) Vorhersage der Leistungsnutzung von Rechenplattformspeicher
DE102013016993B4 (de) Embedded Multimedia Card (eMMC), einen Host steuernde eMMC und Verfahren zum Betreiben eines eMMC-Systems
DE102019108376A1 (de) Sequenz zur Aushandlung und Aktivierung von Flexbus-Protokollen
DE102004033445A1 (de) Host-integrierte Schaltungseinheit und Ressourcenzugriffsverfahren
DE19882704C2 (de) Verfahren und Einrichtung für ein Stromversorgungsmanagement
DE102020116195A1 (de) Leistungsmanagement für neu-treiber-vorrichtungen
DE102009031126A1 (de) Aktivieren der funktionalen Abhängigkeit in einem Multifunktionsgerät
DE102018128601A1 (de) Hintergrunddatenauffrischung unter Verwendung eines Systemzeitstempels in Speicherungseinrichtungen
DE102020130978A1 (de) Seitenbandsignalisierung über vorhandene hilfsstifte einer schnittstelle
DE112013007726T5 (de) Verbesserungen eines Zwischenverbindungs-Retimers
DE112005003279T5 (de) Energieverwaltungs-Punkt-zu-Punkt Wechselstrom-gekoppeltes Peripheriegerät
DE112017001430T5 (de) In-band-retimer-registerzugriff
DE102009030544A1 (de) Koordiniertes Link-Power-Management
DE112013005090T5 (de) Steuernachrichtenübermittlung in einem mehrfach-Slot-Verbindungsschicht-Flit
DE112012001526T5 (de) Zumindest partielles Erleichtern des Zugriffs auf mindestens eine Controller-Befehlsschnittstelle durch Schaltungen
DE102018005753A1 (de) Serdes link training
DE112007001056T5 (de) PRO-Chip-Spannungsprogammierung für den Energie-Effizienten integrierten Schaltkreis (IC) Betrieb
DE102005004164A1 (de) Speichervorrichtungs-Steuereinheit zum Analysieren von Datenträgerinhalts-Information und Steuerverfahren
DE102019112772A1 (de) Technologien für eine dienstgütefrist-bewusste ende-zu-ende-e/a-planung
DE102007009300A1 (de) Rechnersystem und Verfahren zum Betreiben eines Rechnersystems
DE102020105939A1 (de) Enhanced-Serial-Peripheral-Interface-(eSPI)-Signalisierung zurAbsturzereignisbenachrichtigung