DE112014006490T5 - Verfahren, Vorrichtung und System zur Regelung von Leistung ungenutzter Hardware einer Linkschnittstelle - Google Patents

Verfahren, Vorrichtung und System zur Regelung von Leistung ungenutzter Hardware einer Linkschnittstelle Download PDF

Info

Publication number
DE112014006490T5
DE112014006490T5 DE112014006490.4T DE112014006490T DE112014006490T5 DE 112014006490 T5 DE112014006490 T5 DE 112014006490T5 DE 112014006490 T DE112014006490 T DE 112014006490T DE 112014006490 T5 DE112014006490 T5 DE 112014006490T5
Authority
DE
Germany
Prior art keywords
virtual channels
link
hardware
value
maximum
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
DE112014006490.4T
Other languages
English (en)
Inventor
Vickneswaran Ragavan
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 DE112014006490T5 publication Critical patent/DE112014006490T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • 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
    • G06F1/3253Power saving in bus
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)

Abstract

In einer Ausführungsform kann eine Vielzahl von Hardwarepuffern jeweils Informationen speichern, die mit einem oder mehreren virtuellen Kanälen assoziiert sind. Eine Konfigurationslogik wiederum ist zum Bestimmen einer Kennung, die einer maximalen Anzahl von virtuellen Kanälen entspricht, die von einer ersten Einrichtung und einer zweiten Einrichtung, die über einen Link gekoppelt sind, gemeinsam unterstützt werden, und zum Erhalten eines Steuerwerts basierend auf der Kennung. Eine Gatterlogik, die mit der Konfigurationslogik gekoppelt ist, ist zum Bereitstellen einer Betriebsspannung für entsprechende der Hardwarepuffer basierend auf dem Steuerwert. Auf diese Weise kann die Betriebsspannung mindestens einem der Hardwarepuffer vorenthalten werden, wenn die maximale Anzahl von virtuellen Kanälen kleiner als die Vielzahl von Hardwarepuffern ist. Andere Ausführungsformen werden beschrieben und beansprucht.

Description

  • Technisches Gebiet
  • Diese Offenbarung betrifft Computersysteme und insbesondere (aber nicht ausschließlich) die Leistungsverwaltung von Linkschnittstellen in solchen Systemen.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist eine Ausführungsform eines Blockdiagramms für ein Computersystem, das einen Mehrkernprozessor umfasst.
  • 2 ist eine Ausführungsform einer Fabric, die aus Punkt-zu-Punkt-Links besteht, welche einen Satz von Komponenten miteinander verbinden.
  • 3 ist eine Ausführungsform eines Schichtprotokollstapels.
  • 4 ist eine Ausführungsform eines PCIe-Transaktionsdeskriptors.
  • 5 ist eine Ausführungsform einer seriellen Punkt-zu-Punkt-PCIe-Fabric.
  • 6 ist ein Blockdiagramm eines SoC-Designs gemäß einer Ausführungsform.
  • 7 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 8 ist ein Flussdiagramm eines Konfigurationsverfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 9A ist ein Blockdiagramm eines Konfigurationsspeichers gemäß einer Ausführungsform.
  • 9B ist ein Blockdiagramm eines Abschnitts einer Spannungsregelschaltung gemäß einer Ausführungsform.
  • 10 ist ein Blockdiagramm eines Abschnitts eines Systems gemäß einer Ausführungsform.
  • Ausführliche Beschreibung
  • In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten dargelegt, wie etwa Beispiele von spezifischen Typen von Prozessoren und Systemkonfigurationen, spezifischen Hardwarestrukturen, spezifischen architektonischen und mikroarchitektonischen Einzelheiten, spezifischen Registerkonfigurationen, spezifischen Anweisungstypen, spezifischen Systemkomponenten, spezifischen Messungen/Höhen, spezifischen Prozessor-Pipelinestufen und Betrieb usw., um ein umfassendes Verständnis der vorliegenden Erfindung zu vermitteln. Für einen Fachmann ist jedoch zu erkennen, dass diese spezifischen Einzelheiten nicht eingesetzt werden müssen, um die vorliegende Erfindung in die Praxis umzusetzen. In anderen Fällen wurden bekannte Komponenten und Verfahren, wie beispielsweise spezifische und alternative Prozessorarchitekturen, spezifische Logikschaltungen bzw. spezifischer Logikcode für beschriebene Algorithmen, spezifischer Firmwarecode, spezifischer Zwischenverbindungsbetrieb, spezifische logische Konfigurationen, spezifische Herstellungstechniken und -materialien, spezifische Compiler-Implementierungen, spezifischer Ausdruck von Algorithmen in Code, spezifische Abschalt- und Gattersteuerungstechniken bzw. spezifische Abschalt- und Gattersteuerungslogik, und andere spezifische betriebliche Einzelheiten eines Computersystems, nicht beschrieben, um eine unnötige Verkomplizierung der vorliegenden Erfindung zu vermeiden.
  • Obwohl die folgenden Ausführungsformen in Bezug auf Energieersparnis und Energieeffizienz in spezifischen integrierten Schaltungen, wie beispielsweise Computerplattformen oder Mikroprozessoren, beschrieben sein können, sind andere Ausführungsformen auf andere Typen von integrierten Schaltungen und Logikbausteinen anwendbar. Ähnliche Techniken und Lehren von Ausführungsformen, die hierin beschrieben werden, können auf andere Typen von Schaltungen oder Halbleiterbauelementen angewendet werden, die ebenfalls von besserer Energieeffizienz und Energieersparnis profitieren. Zum Beispiel sind die offenbarten Ausführungsformen nicht auf Desktop-Computersysteme oder UltrabooksTM beschränkt. Und sie können auch in anderen Einrichtungen, wie beispielsweise tragbaren Einrichtungen, Tablets, anderen dünnen Notebooks, Systemchip(SOC für engl. systems an a chip)-Einrichtungen und eingebetteten Anwendungen, verwendet werden. Einige Beispiele von tragbaren Einrichtungen umfassen Zellulartelefone, Internetprotokoll-Einrichtungen, Digitalkameras, persönliche digitale Assistenten (PDAs) und tragbare PCs. Eingebettete Anwendungen umfassen typischerweise einen Mikrocontroller, einen Digitalsignalprozessor (DSP), einen Systemchip, Netzcomputer (NetPC), Set-Top-Boxen, Netzwerkhubs, Fernverkehrsnetz(WAN für engl. wide area network)-Switches oder jedes andere System, das die im Folgenden gelehrten Funktionen und Operationen ausführen kann. Außerdem sind die hierin beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physikalische Computereinrichtungen beschränkt, sondern können sich auch auf Softwareoptimierungen zur Energieersparnis und Energieeffizienz beziehen. Wie aus der folgenden Beschreibung hervorgeht, sind die hierin beschriebenen Ausführungsformen von Verfahren, Vorrichtungen und Systemen (einerlei ob in Bezug auf Hardware, Firmware, Software oder eine Kombination davon) vital für eine Zukunft, in welcher umweltfreundliche Technik und Performanceüberlegungen im Gleichgewicht sind.
  • Mit zunehmendem Fortschritt von Computersystemen werden die Komponenten darin komplexer. Folglich nimmt auch die Komplexität der Zwischenverbindungsarchitektur zum Koppeln von und Kommunizieren zwischen den Komponenten zu, um zu gewährleisten, dass die Bandbreitenanforderungen für optimalen Komponentenbetrieb erfüllt werden. Außerdem verlangen verschiedene Marktsegmente eine Anpassung verschiedener Aspekte von Zwischenverbindungsarchitekturen an die Marktbedürfnisse. Zum Beispiel benötigen Server eine höhere Performance, während das mobile Ökosystem manchmal imstande ist, für Energieeinsparungen Gesamtleistung zu opfern. Dennoch ist es ein besonderes Ziel der meisten Fabrics, die höchstmögliche Performance bei maximaler Energieeinsparung bereitzustellen. Im Folgenden wird eine Anzahl von Zwischenverbindungen erörtert, die potenziell von Aspekten der hierin beschriebenen Erfindung profitieren würden.
  • Unter Bezugnahme auf 1 eine Ausführungsform eines Blockdiagramms für ein Computersystem dargestellt, dass einen Mehrkernprozessor umfasst. Der Prozessor 100 umfasst einen beliebigen Prozessor oder eine beliebige Verarbeitungseinrichtung wie beispielsweise einen Mikroprozessor, einen eingebetteten Prozessor, einen Digitalsignalprozessor (DSP), einen Netzprozessor, einen Handprozessor, einen Anwendungsprozessor, einen Coprozessor, einen Systemchip (SOC) oder eine andere Einrichtung zum Ausführen von Code. Der Prozessor 100 umfasst in einer Ausführungsform mindestens zwei Kerne, Kern 101 und 102, welche asymmetrische Kerne oder symmetrische Kerne (die veranschaulichte Ausführungsform) umfassen können. Der Prozessor 100 kann jedoch eine beliebige Anzahl von Verarbeitungselementen umfassen, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik, um einen Softwarethread zu unterstützen. Beispiele für Hardware-Verarbeitungselemente umfassen: eine Thread-Einheit, einen Threadslot, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardwarethread, einen Kern und/oder jedes beliebige andere Element, das zum Halten eines Zustands für einen Prozessor, wie beispielsweise einen Ausführungszustand oder einen architektonischen Zustand, imstande ist. Mit anderen Worten bezieht sich ein Verarbeitungselement in einer Ausführungsform auf eine beliebige Hardware, die mit Code, wie beispielsweise einem Softwarethread, einem Betriebssystem, einer Anwendung, oder einem anderen Code unabhängig assoziiert sein kann. Ein physikalischer Prozessor (oder Prozessorsockel) bezieht sich typischerweise auf eine integrierte Schaltung, die potenziell eine beliebige Anzahl von anderen Verarbeitungselementen, wie beispielsweise Kernen oder Hardwarethreads, umfasst.
  • Ein Kern bezieht sich häufig auf Logik, die sich auf einer integrierten Schaltung befindet und zum Aufrechterhalten eines unabhängigen architektonischen Zustands imstande ist, wobei jeder unabhängig aufrechterhaltene architektonische Zustand mindestens mit einigen dedizierten Ausführungsressourcen assoziiert ist. Im Gegensatz zu Kernen bezieht sich ein Hardwarethread typischerweise auf eine beliebige Logik, die sich auf einer integrierten Schaltung befindet und zum Aufrechterhalten eines unabhängigen architektonischen Zustands imstande ist, wobei sich die unabhängig aufrechterhaltenen architektonischen Zustände Zugriff auf Ausführungsressourcen teilen. Wie zu sehen ist, überschneidet sich die Linie zwischen der Nomenklatur eines Hardwarethreads und eines Kerns, wenn bestimmte Ressourcen gemeinsam genutzt werden und andere fest einem architektonischen Zustand zugeordnet sind. Doch oft werden ein Kern und ein Hardwarethread von einem Betriebssystem als individuelle logische Prozessoren angesehen, wobei das Betriebssystem imstande ist, Operationen auf jedem logischen Prozessor individuell zu planen.
  • Der physikalische Prozessor 100 umfasst, wie in 1 veranschaulicht, zwei Kerne, Kern 101 und 102. Hierbei werden Kern 101 und 102 als symmetrische Kerne, d. h. Kerne mit den gleichen Konfigurationen, Funktionseinheiten und/oder der gleichen Logik, angesehen. In einer anderen Ausführungsform umfasst der Kern 101 einen Out-of-Order-Prozessorkern, während der Kern 102 einen In-Order-Prozessorkern umfasst. Die Kerne 101 und 102 können jedoch individuell aus jedem beliebigen Kerntyp, wie beispielsweise einem nativen Kern, einem softwaregesteuerten Kern, einem zum Ausführen einer nativen Anweisungssatz-Architektur (ISA für engl. Instruction Set Architecture) ausgelegten Kern, einem zum Ausführen einer übersetzten Anweisungssatz-Architektur (ISA) ausgelegten Kern, einem in Kooperation entwickelten Kern oder einem anderen bekannten Kern, ausgewählt sein. In einer heterogenen Kernumgebung (d. h. bei asymmetrischen Kernen) kann eine gewisse Form von Übersetzung, wie beispielsweise eine binäre Übersetzung verwendet werden, um Code auf einem oder beiden Kernen zu disponieren oder auszuführen. Um die Erörterung noch weiter zu führen, werden die in Kern 101 veranschaulichten Funktionseinheiten im Folgenden ausführlicher beschrieben, da die Einheiten in Kern 102 in der dargestellten Ausführungsform auf ähnliche Weise funktionieren.
  • Wie dargestellt, umfasst der Kern 101 zwei Hardwarethreads 101a und 101b, die auch als Hardware-Threadslots 101a und 101b bezeichnet werden können. Daher sehen Softwareinstanzen, wie beispielsweise ein Betriebssystem, in einer Ausführungsform den Prozessor 100 potenziell als vier separate Prozessoren, d. h. vier logische Prozessoren oder Verarbeitungselemente, an, die zum gleichzeitigen Ausführen von vier Softwarethreads imstande sind. Wie zuvor angesprochen, ist ein erster Thread mit Architekturzustandsregistern 101a assoziiert, ein zweiter Thread ist mit Architekturzustandsregistern 101b assoziiert, ein dritter Thread kann mit Architekturzustandsregistern 102a assoziiert sein, und ein vierter Thread kann mit Architekturzustandsregistern 102b assoziiert sein. Hierbei kann jedes der Architekturzustandsregister (101a, 101b, 102a und 102b) als Verarbeitungselement, Threadslot oder Thread-Einheit bezeichnet werden, wie zuvor beschrieben. Wie veranschaulicht, sind die Architekturzustandsregister 101a in den Architekturzustandsregistern 101b repliziert, so dass einzelne Architekturzustände/-kontexte für den logischen Prozessor 101a und den logischen Prozessor 101b gespeichert werden können. In Kern 101 können außerdem andere, kleinere Ressourcen, wie beispielsweise Anweisungszeiger und Umbenennungslogik in einem Zuordnungs- und Umbenennungsblock 130, für Thread 101a und 101b repliziert sein. Einige Ressourcen, wie beispielsweise Neuordnungspuffer in einer Neuordnungs-/Ausmusterungseinheit 135, I-TLB 120, Lade-/Speicherpuffer und Warteschlangen, können durch Partitionierung gemeinsam genutzt werden. Andere Ressourcen, wie beispielsweise interne Universalregister, seitentabellenbasierte Register, ein untergeordneter Datencache und Daten-TLB 115, Ausführungseinheit(en) 140 und Teile einer Out-of-Order-Einheit 135, werden potenziell zur Gänze gemeinsam genutzt.
  • Der Prozessor 100 kann häufig andere Ressourcen umfassen, die zur Gänze gemeinsam genutzt werden können, durch Partitionierung gemeinsam genutzt werden können oder von/für Verarbeitungselemente(n) dediziert sein können. In 1 ist eine Veranschaulichungsform eines rein beispielhaften Prozessors mit veranschaulichenden logischen Einheiten/Ressourcen eines Prozessors veranschaulicht. Es ist zu erwähnen, dass ein Prozessor jede dieser Funktionseinheiten umfassen oder weglassen kann, sowie er jede andere nicht dargestellte bekannte Funktionseinheit, Logik oder Firmware umfassen kann. Wie veranschaulicht, umfasst der Kern 101 einen vereinfachten repräsentativen Out-of-Order(OOO)-Prozessorkern. Aber in verschiedenen Ausführungsformen kann ein In-Order-Prozessor kann verwendet werden. Der OOO-Kern umfasst einen Verzweigungszielpuffer (BTB für engl. branch target buffer) 120, um Verzweigungen vorherzusagen, die ausgeführt/genommen werden sollen, und einen Anweisungsübersetzungspuffer (I-TLB für engl. instruction-translation buffer) 120 zum Speichern von Adressübersetzungseinträgen für Anweisungen.
  • Der Kern 101 umfasst ferner ein Decodiermodul 125, das mit einer Abrufeinheit 120 gekoppelt ist, um abgerufene Elemente zu decodieren. Die Abruflogik umfasst in einer Ausführungsform einzelne Sequencer, die mit den Threadslots 101a bzw. 101b assoziiert sind. Üblicherweise ist der Kern 101 mit einer ersten ISA assoziiert, die auf dem Prozessor 100 ausführbare Anweisungen definiert/spezifiziert. Hierbei umfassen Maschinencodeanweisungen, die Teil der ersten ISA sind, oft einen Teil der Anweisung (als Opcode bezeichnet), die eine auszuführende Anweisung oder Operation referenziert/spezifiziert. Die Decodierlogik 125 umfasst Schaltungsanordnung, die diese Anweisungen an ihren Opcodes erkennt und die decodierten Anweisungen auf der Pipeline weiterleitet, um sie zu verarbeiten, wie durch die erste ISA definiert. Wie im Folgenden ausführlicher erläutert, weisen die Decoder 125 zum Beispiel in einer Ausführungsform Logik auf, die so konzipiert oder ausgelegt ist, dass sie spezifische Anweisungen, wie beispielweise eine Transaktionsanweisung, erkenn. Als Ergebnis der Erkennung durch die Decoder 125 nimmt die Architektur oder der Kern 101 spezifische vordefinierte Aktionen vor, um Aufgaben auszuführen, die mit der entsprechenden Anweisung assoziiert sind. Es ist wichtig, zu erwähnen, dass alle der hierin beschriebenen Aufgaben, Blöcke, Operationen und Verfahren in Reaktion auf eine einzige oder mehrere Anweisungen, von welchen einige neue oder alte Anweisungen sein können, ausgeführt werden können. Es ist zu erwähnen, dass die Decoder 126 in einer Ausführungsform die gleiche ISA (oder einen Teilsatz davon) erkennen. Alternativ können die Decoder 126 in einer heterogenen Kernumgebung eine zweite ISA (entweder einen Teilsatz der ersten ISA oder eine andere ISA) erkennen.
  • In einem Beispiel umfasst der Zuweisungs- und Umbenennungsblock 130 einen Zuweiser zum Reservieren von Ressourcen, wie beispielsweise Registerdateien zum Speichern von Ergebnissen der Bearbeitung von Anweisungen. Die Threads 101a und 101b sind jedoch potentiell zu einer Out-of-Order-Ausführung imstande, wobei der Zuweisungs- und Umbenennungsblock 130 auch andere Ressourcen reserviert, wie beispielsweise einen Neuordnungspuffer zum Nachverfolgen von Anweisungsergebnissen. Die Einheit 130 kann außerdem einen Registerumbenenner aufweisen, um Programm-/Anweisungsreferenzregister in andere, Prozessor 100-interne Register umzubenennen. Eine Neuordnungs-/Ausmusterungseinheit 135 umfasst Komponenten, wie beispielsweise die zuvor erwähnten Neuordnungspuffer, Ladepuffer und Speicherpuffer, um Out-of-Order-Ausführung und später In-Order-Ausmusterung von Out-of-Order-ausgeführten Anweisungen zu unterstützen.
  • Ein Scheduler- und Ausführungseinheit(en)-Block 140 umfasst in einer Ausführungsform eine Scheduler-Einheit zum Disponieren von Anweisungen/Operationen auf Ausführungseinheiten. Zum Beispiel wird eine Gleitkomma-Anweisung an einem Port einer Ausführungseinheit disponiert, die eine verfügbare Gleitkomma-Ausführungseinheit aufweist. Registerdateien, welche mit den Ausführungseinheiten assoziiert sind, werden ebenfalls einbezogen, um Ergebnisse der Verarbeitung von Informationsanweisungen zu speichern. Beispielhafte Ausführungseinheiten umfassen eine Gleitkomma-Ausführungseinheit, eine Ganzzahl-Ausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten.
  • Ein Datencache und ein Datenübersetzungspuffer (D-TLB) 150 auf niedrigerer Ebene sind mit der bzw. den Ausführungseinheit(en) 140 gekoppelt. Der Datencache dient zum Speichern der zuletzt verwendeten/bearbeiteten Elemente, wie beispielsweise Datenoperanden, die potentiell in Speicherkohärenzzuständen gehalten werden. Der D-TLB dient zum Speichern der letzten Übersetzungen von virtuellen/linearen in physikalische Adressen. Als ein spezifisches Beispiel kann ein Prozessor eine Seitentabellenstruktur zum Aufgliedern eines physikalischen Speichers in eine Vielzahl von virtuellen Seiten umfassen.
  • Hierbei teilen sich die Kerne 101 und 102 den Zugriff auf Caches auf höherer Ebene oder weiter entfernte Caches, wie beispielsweise einen Cache der zweiten Ebene, der mit einer chipinternen Schnittstelle 110 assoziiert ist. Es ist zu erwähnen, dass sich „auf höherer Ebene” oder „weiter entfernt ”auf Cache-Ebenen bezieht, die höher werden oder sich von der bzw. den Ausführungseinheit(en) weiter entfernen. In einer Ausführungsform ist der Cache auf höherer Ebene ein Datencache auf einer letzten Ebene – ein letzter Cache in der Speicherhierarchie auf dem Prozessor 100 – wie beispielsweise ein Datencache auf der zweiten oder dritten Ebene. Der Cache auf höherer Ebene ist jedoch nicht darauf beschränkt, da er mit einem Anweisungscache assoziiert sein kann oder einen solchen umfassen kann. Ein Ablaufverfolgungscache – ein Typ von Anweisungscache – kann stattdessen nach dem Decoder 125 zum Speichern der letzten decodierten Ablaufverfolgungen gekoppelt sein. Hierbei bezieht sich eine Anweisung potenziell auf eine Makroanweisung (d. h. eine allgemeine Anweisung, die von den Decodern erkannt wird), welche in eine Anzahl von Mikroanweisungen (Mikrooperationen) decodieren kann.
  • In der dargestellten Konfiguration umfasst der Prozessor 100 außerdem ein chipinternes Schnittstellenmodul 110. Historisch war ein Speichercontroller, der im Folgenden ausführlicher beschrieben wird, in einem Computersystem außerhalb des Prozessors 100 enthalten. In diesem Szenario dient die chipinterne Schnittstelle 11 zum Kommunizieren mit Einrichtungen außerhalb des Prozessors 100, wie beispielsweise einem Systemspeicher 175, einem Chipsatz (der häufig einen Speicher-Controllerhub zum Verbinden mit dem Speicher 175 und einen E-/A-Controllerhub zum Anschließen von Peripherieeinrichtungen umfasst), einem Speicher-Controllerhub, einer Northbridge oder einer anderen integrierten Schaltung. Und in diesem Szenario kann der Bus 105 jede bekannte Zwischenverbindung, wie beispielsweise einen Mehrpunktverbindungsbus, eine Punkt-zu-Punkt-Zwischenverbindung, eine serielle Zwischenverbindung, einen parallelen Bus, einen kohärenten (z. B. cache-kohärenten) Bus, eine Schichtprotokollarchitektur, einen differenziellen Bus und einen GTL-Bus, umfassen.
  • Der Speicher 175 kann dem Prozessor 100 fest zugeordnet sein oder mit anderen Einrichtungen in einem System gemeinsam genutzt werden. Übliche Beispiele von Typen von Speichern 175 umfassen, DRAM, SRAM, nichtflüchtigen Speicher (NV-Speicher) und andere bekannte Speichereinrichtungen. Es ist zu erwähnen, dass die Einrichtung 180 einen Grafikbeschleuniger, einen Grafikprozessor oder eine Grafikkarte, der/die mit einem Speicher-Controllerhub gekoppelt ist, einen Datenspeicher, der mit einem E-/A-Controllerhub gekoppelt ist, einen drahtlosen Sendeempfänger, eine Flash-Einrichtung, einen Audiocontroller, einen Netzwerkcontroller oder andere bekannte Einrichtungen umfassen kann.
  • Seit einiger Zeit jedoch kann jede dieser Einrichtungen in einen Prozessor 100 integriert werden, da mehr Logik und Einrichtungen in einen Einzelchip wie beispielsweise SOC, integriert werden. Zum Beispiel ist ein Speicher-Controllerhub in einer Ausführungsform auf der gleichen Packung und/oder dem gleichen Chip mit dem Prozessor 100. Hierbei umfasst ein Teil des Kerns (ein kerninterner Teil) 110 einen oder mehrere Controller zum Herstellen einer Verbindung mit anderen Einrichtungen, wie beispielsweise dem Speicher 175 oder einer Grafikeinrichtung 180, über eine Schnittstelle. Die Konfiguration, die eine Zwischenverbindung und Controller zum Herstellen einer Verbindung mit solchen Einrichtungen über eine Schnittstelle umfasst, wird oft als kernintern (oder kernexterne Konfiguration) bezeichnet. Als ein Beispiel umfasst die chipinterne Schnittstelle 110 eine Ring-Zwischenverbindung für chipinterne Kommunikation und einen seriellen Punkt-zu-Punkt-Hochgeschwindigkeitslink 105 für chipexterne Kommunikation. In der SOC-Umgebung können jedoch noch mehr Einrichtungen, wie beispielsweise die Netzschnittstelle, Coprozessoren, der Speicher 175, der Grafikprozessor 180 und andere bekannte Computereinrichtungen/-schnittstellen, in einen Einzelchip oder eine integrierte Schaltung integriert werden, um einen kleinen Formfaktor mit hoher Funktionalität und niedrigem Energieverbrauch bereitzustellen.
  • In einer Ausführungsform ist der Prozessor 100 zum Ausführen eines Compilers, einer Optimierung und/oder eines Übersetzercodes 177 zum Kompilieren, Übersetzen und/oder Optimieren von Anwendungscode 176 imstande, um die hierin beschriebenen Vorrichtungen und Verfahren zu unterstützen oder über eine Schnittstelle eine Verbindung damit herzustellen. Ein Compiler umfasst oft ein Programm oder einen Satz von Programmen zum Übersetzen von Quelltext/-code in Zieltext/-code. Üblicherweise erfolgt die Kompilierung von Programm-/Anwendungscode mit einem Compiler in mehreren Phasen und Durchgängen, um eine höhere Programmiersprache in einen maschinenorientierten Maschinen- oder Assemblersprachcode umzuwandeln. Für einfache Kompilierungen können dennoch noch Compiler mit einem einzigen Durchgang verwendet werden. Ein Compiler kann jede bekannte Kompiliertechnik verwenden und alle bekannten Compiler-Operationen ausführen, wie beispielsweise lexikalische Analyse, Vorverarbeitung, syntaktische Analyse, semantische Analyse, Codeerzeugung, Codeumwandlung und Codeoptimierung.
  • Größere Compiler umfassen oft mehrere Phasen, aber am häufigsten sind diese Phasen in zwei Hauptphasen enthalten: (1) Frontend, d. h. wo im Allgemeinen die syntaktische Verarbeitung, semantische Verarbeitung und eine gewisse Umwandlung/Optimierung stattfinden kann, und (2) Backend, d. h. wo im Allgemeinen Analyse, Umwandlungen, Optimierungen und Codeerzeugung stattfinden. Einige Compiler beziehen sich auf eine Mitte, welche die Verwischung der Abgrenzung zwischen einem Frontend und einem Backend eines Compilers veranschaulicht. Als Ergebnis kann die Bezugnahme auf Einfügung, Assoziierung, Erzeugung oder andere Operationen eines Compilers in jeder der zuvor erwähnten Phasen oder in jedem der zuvor erwähnten Durchgänge sowie in allen anderen bekannten Phasen oder Durchgängen eines Compilers erfolgen. Als ein veranschaulichendes Beispiel fügt ein Compiler potenziell Operationen, Aufrufe, Funktionen usw. in einer oder mehreren Kompilierphasen ein, wie beispielsweise eine Einfügung von Aufrufen/Operationen in einer Frontend-Kompilierphase und anschließend Umwandlung der Aufrufe/Operationen in Code auf niedrigerer Ebene während einer Umwandlungsphase. Es ist zu erwähnen, dass während dynamischer Kompilierung Compilercode oder dynamischer Optimierungscode solche Operationen/Aufrufe einfügen sowie den Code zur Ausführung während der Laufzeit optimieren kann. Als ein spezifischen Beispiel kann Binärcode (bereits kompilierter Code) während der Laufzeit dynamisch optimiert werden. Hierbei kann der Programmcode den dynamischen Optimierungscode, den Binärcode oder eine Kombination davon umfassen.
  • Ähnlich einem Compiler übersetzt ein Übersetzer, wie beispielsweise ein Binärübersetzer, Code entweder statisch oder dynamisch, um Code zu optimieren und/oder zu übersetzen. Daher kann sich die Bezugnahme auf die Ausführung von Code, Anwendungscode, Programmcode oder andere Softwareumgebung auf Folgendes beziehen: (1) entweder dynamische oder statische Ausführung von Compilerprogramm(en), Optimierungscode-Optimierer oder Übersetzer zum Kompilieren von Programmcode, Pflegen von Softwarestrukturen, Ausführen von anderen Operationen, Optimieren von Code oder Übersetzen von Code; (2) Ausführung von Hauptprogrammcode, der Operationen/Aufrufe umfasst, wie beispielsweise Anwendungscode, der optimiert/kompiliert wurde; (3) Ausführung von anderem Programmcode, wie beispielsweise Bibliotheken, der mit dem Hauptprogrammcode assoziiert sind, um Softwarestrukturen zu pflegen, andere softwarebezogene Operationen auszuführen oder Code zu optimieren; oder (4) eine Kombination davon.
  • Eine Zwischenverbindungs-Fabric-Architektur umfasst die PCIe-Architektur. Ein Hauptziel von PCIe ist es, Komponenten und Einrichtungen von verschiedenen Anbietern zu Interoperabilität in einer offenen Architektur zu befähigen, die mehrere Marktsegmente; (Desktop- und Mobil-)Clients, Server (Standard und Enterprise) sowie eingebettete und Kommunikationseinrichtungen umspannt. PCI Express ist eine Hochleistungs-Universal-E/A-Zwischenverbindung, die für eine große Vielfalt von künftigen Computer- und Kommunikationsplattformen definiert ist. Einige PCI-Attribute, wie beispielsweise ihr Nutzungsmodell, Lade-/Speicherarchitektur und Softwareschnittstellen, wurden all ihre Überarbeitungen hindurch beibehalten, während frühere Parallelbusimplementierungen durch eine hochskalierbare, voll serielle Schnittstelle ersetzt wurden. Die jüngsten Versionen von PCI Express nutzen die Fortschritte bei Punkt-zu-Punkt-Zwischenverbindungen, switchbasierter Technologie und paketiertem Protokoll, um neue Performance- und Merkmalsebenen bereitzustellen. Leistungsverwaltung, Dienstqualität (QoS), Hot-Plug-/Hot-Swap-Unterstützung, Datenintegrität und Fehlerbehandlung gehören zu den fortschrittlichen Merkmalen, die von PI Express unterstützt werden.
  • Unter Bezugnahme auf 2 ist eine Ausführungsform einer Fabric veranschaulicht, die aus Punkt-zu-Punkt-Links besteht, welche einen Satz von Komponenten miteinander verbinden. Ein System 200 umfasst einen Prozessor 205 und einen Systemspeicher 210, der mit einem Controllerhub 215 gekoppelt ist. Der Prozessor 205 umfasst ein beliebiges Verarbeitungselement, wie beispielsweise einen Mikroprozessor, einen Hostprozessor, einen eingebetteten Prozessor, einen Coprozessor oder einen anderen Prozessor. Der Prozessor 205 ist mit dem Controllerhub 215 durch einen Frontside-Bus (FSB) 206 gekoppelt. In einer Ausführungsform ist der FSB 206 eine serielle Punkt-zu-Punkt-Zwischenverbindung, wie im Folgenden beschrieben. In einer anderen Ausführungsform umfasst der Link 206 eine serielle, differenzielle Zwischenverbindungsarchitektur, die mit einem anderen Zwischenverbindungsstandard kompatibel ist.
  • Der Systemspeicher 210 umfasst eine beliebige Speichereinrichtung, wie beispielsweise einen Direktzugriffsspeicher (RAM), einen nichtflüchtigen (NV) Speicher oder einen anderen Speicher, auf den durch Einrichtungen im System 200 zugegriffen werden kann. Der Systemspeicher 210 ist mit dem Controllerhub 215 durch eine Speicherschnittstelle 216 gekoppelt. Beispiele einer Speicherschnittstelle umfassen eine Doppeldatenraten(DDR)-Speicherschnittstelle, eine Zweikanal-DDR-Speicherschnittstelle und eine DRAM(dynamischer RAM)-Speicherschnittstelle.
  • In einer Ausführungsform kann der Controllerhub 215 einen Stammhub, Stammkomplex oder Stammcontroller in einer PCIe(Peripheral Component Interconnect Express)-Zwischenverbindungshierarchie umfassen. Beispiele des Controllerhubs 215 umfassen einen Chipsatz, einen Speicher-Controllerhub (MCH für engl. memory controller hub), eine Northbridge, einen Zwischenverbindungs-Controllerhub (ICH für engl. interconnect controller hub), eine Southbridge und einen Stammcontroller/-hub. Der Begriff Chipsatz bezieht sich häufig auf zwei physisch getrennte Controllerhubs, d. h. einen Speicher-Controllerhub (MCH für engl. memory controller hub), der mit einem Zwischenverbindungs-Controllerhub (ICH für engl. interconnect controller hub) gekoppelt ist. Es ist zu erwähnen, dass aktuelle Systeme den MCH oft in den Prozessor 205 integriert aufweisen, während der Controller 215 zum Kommunizieren mit E-/A-Einrichtungen in ähnlicher Weise ist, wie im Folgenden beschrieben. In einigen Ausführungsformen wird Partner-zu-Partner-Routing optional durch den Stammkomplex 215 unterstützt.
  • Hierbei ist der Controllerhub 215 durch einen seriellen Link 219 mit einem Switch bzw. einer Brücke 220 gekoppelt. Eingangs-/Ausgangsmodule 217 und 221, die auch als Schnittstellen/Ports 217 und 221 bezeichnet werden können, umfassen/implementieren einen Schichtprotokollstapel, um Kommunikation zwischen dem Controllerhub 215 und dem Switch 220 bereitzustellen. In einer Ausführungsform sind mehrere Einrichtungen imstande, mit dem Switch 220 gekoppelt zu werden.
  • Der Switch bzw. die Brücke 220 leitet Pakete/Nachrichten von einer Einrichtung 225 stromaufwärts, d. h. eine Hierarchie nach oben zu einem Stammkomplex, zum Controllerhub 215, und stromabwärts, d. h. eine Hierarchie nach unten weg von einem Stammcontroller, vom Prozessor 205 oder dem Systemspeicher 210 zur Einrichtung 225. Der Switch 220 wird in einer Ausführungsform als logische Anordnung von mehreren virtuellen PCI-zu-PCI-Brückeneinrichtungen bezeichnet. Die Einrichtung 225 umfasst eine beliebige interne oder externe Einrichtung oder Komponente, die mit einem elektronischen System gekoppelt werden soll, wie beispielsweise eine E-/A-Einrichtung, einen Netzschnittstellencontroller (NIC für engl. Network Interface Controller), eine Add-in-Karte, einen Audioprozessor, einen Netzwerkprozessor, ein Festplattenlaufwerk, eine Speichereinrichtung, eine CD-/DVD-ROM, einen Monitor, einen Drucker, eine Maus, eine Tastatur, einen Router, eine tragbare Speichereinrichtung, eine Firewire-Einrichtung, eine USB(Universal Serial Bus)-Einrichtung, einen Scanner und andere Eingabe-/Ausgabe-Einrichtungen. In der PCIe-Sprache wird solch eine Einrichtung häufig als Endpunkt bezeichnet. Obwohl nicht spezifisch dargestellt, kann die Einrichtung 225 eine PCIe-zu-PCI/PCI-X-Brücke umfassen, um Legacy- oder andere Versionen von PCI-Einrichtungen zu unterstützen. Endpunkteinrichtungen in PCIe werden häufig als integrierte Legacy-, PCIe- oder Stammkomplex-Endpunkte klassifiziert.
  • Außerdem ist ein Grafikbeschleuniger 230 durch einen seriellen Link 232 mit dem Controllerhub 215 gekoppelt. In einer Ausführungsform ist der Grafikbeschleuniger 230 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Switch 220 und demgemäß die E-/A-Einrichtung 225 sind dann mit dem ICH gekoppelt. Außerdem dienen E-/A-Module 231 und 218 zum Implementieren eines Schichtprotokollstapels, um zwischen dem Grafikbeschleuniger 230 und dem Controllerhub 215 zu kommunizieren. Ähnlich der vorstehenden MCH-Erörterung kann ein Grafikcontroller oder der Grafikbeschleuniger 230 selbst in den Prozessor 205 integriert sein.
  • Unter Hinwendung zu 3 ist eine Ausführungsform eines Schichtprotokollstapels veranschaulicht. Der Schichtprotokollstapel 300 umfasst eine beliebige Form von geschichtetem Kommunikationsstapel, wie beispielsweise einen QPI(Quick Path Interconnect)-Stapel, einen PCIe-Stapel, einen Hochleistungs-Computerzwischenverbindungsstapel der nächsten Generation oder einen anderen geschichteten Stapel. Obwohl die unmittelbar folgende Erörterung unter Bezugnahme auf 2 bis 5 in Bezug auf einen PCIe-Stapel erfolgt, können die gleichen Konzepte auf andere Zwischenverbindungsstapel angewendet werden. In einer Ausführungsform ist der Protokollstapel 300 ein PCIe-Protokollstapel, der eine Transaktionsschicht 305, eine Linkschicht 310 und eine physikalische Schicht 320 umfasst. Eine Schnittstelle kann als ein Kommunikationsprotokollstapel 300 dargestellt sein. Die Darstellung als Kommunikationsprotokollstapel kann auch als Modul oder Schnittstelle bezeichnet werden, das/die einen Protokollstapel implementiert/umfasst.
  • PCI Express verwendet Pakete zum Kommunizieren von Informationen zwischen Komponenten. Die Pakete werden in der Transaktionsschicht 305 und der Data-Link-Schicht 310 gebildet, um die Informationen von der sendenden Komponente an die empfangende Komponente zu übertragen. Während die gesendeten Pakete durch die anderen Schichten laufen, werden sie mit zusätzlichen Informationen erweitert, die zur Handhabung der Pakete auf diesen Schichten notwendig sind. Auf der Empfangsseite findet der umgekehrte Prozess statt, und die Pakete werden aus ihrer Darstellung der physikalischen Schicht 320 in die Darstellung der Data-Link-Schicht 310 und schließlich (für Transaktionsschichtpakete) in die Form umgewandelt, die von der Transaktionsschicht 305 der Empfangseinrichtung verarbeitet werden kann.
  • In einer Ausführungsform dient die Transaktionsschicht 305 zur Bereitstellung einer Schnittstelle zwischen einem Verarbeitungskern einer Einrichtung und der Zwischenverbindungsarchitektur, wie beispielsweise der Data-Link-Schicht 310 und der physikalischen Schicht 320. In dieser Hinsicht ist eine Hauptverantwortung der Transaktionsschicht 305 die Paketierung und Depaketierung von Paketen (d. h. Transaktionsschichtpaketen oder TLPs (für engl. transaction layer packets)). Die Transaktionsschicht 305 steuert typischerweise kreditbasierte Flusskontrolle für TLPs. PCIe implementiert geteilte Transaktionen, d. h. Transaktionen mit zeitlich getrennter Anforderung und Antwort, die es einem Link ermöglichen, anderen Verkehr zu übertragen, während die Zieleinrichtung Daten für die Antwort sammelt.
  • Außerdem verwendet PCIe kreditbasierte Flusskontrolle. In diesem Schema zeigt eine Einrichtung eine anfängliche Menge von Kredit für jeden der Empfangspuffer in der Transaktionsschicht 305 an. Eine externe Einrichtung am gegenüberliegenden Ende des Links, wie beispielsweise ein Controllerhub, zählt die Anzahl von Krediten, die von jedem TIP konsumiert werden. Eine Transaktion kann gesendet werden, wenn die Transaktion eine Kreditgrenze nicht überschreitet. Bei Empfang einer Antwort wird eine Kreditmenge wiederhergestellt. Ein Vorteil solch eines Kreditschemas ist, dass die Latenzzeit der Kreditrückgabe die Performance nicht beeinträchtigt, vorausgesetzt, dass die Kreditgrenze nicht erreicht wird.
  • In einer Ausführungsform umfassen vier Transaktionsadressräume einen Konfigurationsadressraum, einen Speicheradressraum, einen Eingabe-/Ausgabe-Adressraum und einen Nachrichtenadressraum. Speicherraumtransaktionen umfassen eine oder mehrere von Leseanforderungen und Schreibanforderungen, um Daten an einen bzw. von einem im Speicher zugeordneten Speicherort zu übertragen. In einer Ausführungsform sind Speicherraumtransaktionen imstande, zwei verschiedene Adressformate, z. B. ein kurzes Adressformat, wie beispielsweise eine 32-Bit-Adresse, oder ein langes Adressformat, wie beispielsweise eine 64-Bit-Adresse, zu verwenden. Konfigurationsraumtransaktionen werden zum Zugreifen auf Konfigurationsraum der PCIe-Einrichtungen verwendet. Transaktionen für den Konfigurationsraum umfassen Leseanforderungen und Schreibanforderungen. Nachrichtenraumtransaktionen (oder einfach Nachrichten) werden definiert, um Inband-Kommunikation zwischen PCIe-Agenten zu unterstützen.
  • Daher paketiert die Transaktionsschicht 805 in einer Ausführungsform Paket-Header/-Nutzdaten 806. Das Format für aktuelle Paket-Header/-Nutzdaten ist in der PCIe-Spezifikation auf der Website der PCIe-Spezifikation zu finden.
  • Kurz unter Bezugnahme auf 4 ist eine Ausführungsform eines PCIe-Transaktionsdeskriptors veranschaulicht. In einer Ausführungsform ist der Transaktionsdeskriptor 400 ein Mechanismus zum Übertragen von Transaktionsinformationen. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 400 die Identifikation von Transaktionen in einem System. Andere potenzielle Verwendungsmöglichkeiten umfassen ein Verfolgen von Modifikationen der Standardtransaktionsreihenfolge und Transaktionsassoziation mit Kanälen.
  • Der Transaktionsdeskriptor 400 umfasst ein globales Kennungsfeld 402, ein Attributfeld 404 und ein Kanalkennungsfeld 406. Im veranschaulichten Beispiel ist das globale Kennungsfeld 402 so dargestellt, dass es ein lokales Transaktionskennungsfeld 408 und ein Quellenkennungsfeld 410 umfasst. In einer Ausführungsform ist die globale Transaktionskennung 402 für alle unerledigten Anforderungen eindeutig.
  • Gemäß einer Implementierung ist das lokale Transaktionskennungsfeld 408 ein Feld, das von einem anfordernden Agenten erzeugt wird und für alle unerledigten Anforderungen, die eine Fertigstellung für diesen anfordernden Agenten benötigen, eindeutig ist. Außerdem identifiziert in diesem Beispiel die Quellenkennung 410 den Requester-Agenten innerhalb einer PCIe-Hierarchie eindeutig. Demgemäß stellt das lokale Transaktionskennungsfeld 408 zusammen mit der Quellen-ID 410 eine globale Identifikation einer Transaktion innerhalb eines Hierarchiebereichs bereit.
  • Das Attributfeld 404 spezifiziert Charakteristiken und Beziehungen der Transaktion. In dieser Hinsicht wird das Attributfeld 404 potenziell verwendet, um zusätzliche Informationen bereitzustellen, welche eine Modifikation der Standardhandhabung von Transaktionen ermöglichen. In einer Ausführungsform umfasst das Attributfeld 404 ein Prioritätsfeld 412, ein reserviertes Feld 414, eine Reihenfolge-Feld 416 und ein Nicht-Schnüffel-Feld 418. Hierbei kann das Prioritäts-Teilfeld 412 durch einen Initiator modifiziert werden, um der Transaktion eine Priorität zuzuordnen. Das reservierte Attributfeld 414 wird zur zukünftigen oder anbieterdefinierten Nutzung reserviert gelassen. Mögliche Nutzungsmodelle, welche Prioritäts- und Sicherheitsattribute verwenden, können unter Verwendung des reservierten Attributfelds implementiert werden.
  • In diesem Beispiel wird das Reihenfolge-Attributfeld 416 verwendet, um optionale Informationen zu liefern, die den Reihenfolgetyp übertragen, welcher Standardreihenfolgeregeln modifizieren kann. Gemäß einer beispielhaften Implementierung bedeutet ein Reihenfolgeattribut von „0”, dass Standardreihenfolgeregeln angewendet werden sollen, wobei ein Reihenfolgeattribut von „1” eine zwanglose Reihenfolge bedeutet, wobei Schreiboperationen Schreiboperationen in der gleichen Richtung überholen können und Leseausführungen Schreiboperationen in der gleichen Richtung überholen können. Das Schnüffel-Attributfeld 418 wird verwendet, um zu bestimmen, ob Transaktionen beschnüffelt werden. Wie dargestellt, identifiziert das Kanal-ID-Feld 406 einen Kanal, mit dem eine Transaktion assoziiert ist.
  • Eine Linkschicht 310, die auch als Data-Link-Schicht 310 bezeichnet wird, fungiert als eine Zwischenstufe zwischen der Transaktionsschicht 305 und der physikalischen Schicht 320. In einer Ausführungsform ist eine Zuständigkeit der Data-Link-Schicht 310 die Bereitstellung eines zuverlässigen Mechanismus zum Austauschen von Transaktionsschichtpaketen (TLPs) zwischen zwei Komponenten auf einem Link. Eine Seite der Data-Link-Schicht 310 akzeptiert von der Transaktionsschicht 305 paketierte TLPs, wendet eine Paketsequenzkennung 311, d. h. eine Identifikationsnummer oder Paketnummer an, berechnet einen Fehlererkennungscode, d. h. CRC 312, und wendet diesen an und übermittelt die modifizierten TLPs an die physikalische Schicht 320 zur Übertragung über eine physikalische an eine externe Einrichtung.
  • In einer Ausführungsform umfasst die physikalische Schicht 320 einen logischen Teilblock 321 und einen elektrischen Teilblock 322, um ein Paket physikalisch an eine externe Einrichtung zu senden. Hierbei ist der logische Teilblock 321 für die „digitalen” Funktionen der physikalischen Schicht 321 zuständig. In dieser Hinsicht umfasst der logische Teilblock einen Sendeabschnitt zum Vorbereiten von abgehenden Informationen zur Übertragung durch den physikalischen Teilblock 322 und einen Empfangsabschnitt zum Identifizieren und Vorbereiten von empfangenen Informationen vor ihrer Weitergabe an die Linkschicht 310.
  • Der physikalische Block 322 umfasst einen Sender und einen Empfänger. Der Sender wird durch den logischen Teilblock 321 mit Symbolen versorgt, welche der Sender serialisiert und an eine externe Einrichtung weitersendet. Der Empfänger wird mit serialisierten Symbolen von einer externen Einrichtung versorgt und wandelt die empfangenen Signale in einen Bitstrom um. Der Bitstrom wird deserialisiert und an den logischen Teilblock 321 geliefert. In einer Ausführungsform wird ein 8b/10b-Übertragungscode eingesetzt, wobei Zehn-Bit-Symbole gesendet/empfangen werden. Hierbei werden spezielle Symbole zum Einrahmen eines Pakets mit Rahmen 323 verwendet. Außerdem stellt der Empfänger in einem Beispiel auch einen Symboltakt bereit, der aus dem ankommenden seriellen Strom rückgewonnen wird.
  • Obwohl, wie bereits erwähnt, die Transaktionsschicht 305, die Linkschicht 310 und die physikalische Schicht 320 in Bezug auf eine spezifische Ausführungsform eines PCIe-Protokollstapels erörtert werden, ist ein Schichtprotokollstapel nicht darauf beschränkt. Tatsächlich kann jedes Schichtprotokoll einbezogen/implementiert werden. Als ein Beispiel umfasst ein Port bzw. eine Schnittstelle, der/die als ein Schichtprotokoll dargestellt ist: (1) eine erste Schicht zum Paketieren von Paketen, d. h. eine Transaktionsschicht; eine zweite Schicht zum Sequenzieren von Paketen, d. h. eine Linkschicht; und eine dritte Schicht zum Senden der Pakete, d. h. eine physikalische Schicht. Als ein spezifisches Beispiel wird ein QPI-Schichtprotokoll verwendet.
  • Als Nächstes ist unter Bezugnahme auf 5 ist eine Ausführungsform einer seriellen Punkt-zu-Punkt-PCIe-Fabric veranschaulicht. Obwohl eine Ausführungsform eines seriellen Punkt-zu-Punkt-PCIe-Links veranschaulicht ist, ist ein serieller Punkt-zu-Punkt-Link nicht darauf beschränkt, da er einen beliebigen Übertragungspfad zum Senden von seriellen Daten umfasst. In der dargestellten Ausführungsform umfasst ein elementarer PCIe-Link zwei differenziell gesteuerte Niederspannungssignalpaare umfassen: ein Sendepaar 506/511 und ein Empfangspaar 512/507. Demgemäß umfasst eine Einrichtung 505 Übertragungslogik 506, um Daten an eine Einrichtung 510 zu senden, und Empfangslogik 507, um Daten von der Eirichtung 510 zu empfangen. Mit anderen Worten sind zwei Sendepfade, d. h. Pfade 516, 517, und zwei Empfangsfade, d. h. Pfade 518 und 515, in einem PCIe-Link enthalten.
  • „Übertragungspfad” bezieht sich auf jeden Pfad zum Senden von Daten, wie beispielsweise eine Übertragungsleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, einen Infrarotkommunikationslink oder einen anderen Kommunikationspfad. Eine Verbindung zwischen zwei Einrichtungen, wie beispielsweise Einrichtung 505 und Einrichtung 510, wird als Link, wie beispielsweise Link 415, bezeichnet. Ein Link kann eine Lane unterstützen – wobei jede Lane einen Satz von differenziellen Signalpaaren (ein Paar zum Senden, ein Paar zum Empfangen) darstellt. Zum Skalieren der Bandbreite kann ein Link mehrere Lanes aggregieren, die mit xN bezeichnet werden, wobei N jede unterstützte Linkbreite ist, wie beispielsweise 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
  • „Differenzielles Paar” bezieht sich auf zwei Übertragungspfade, wie beispielsweise die Leitungen 516 und 517, zum Senden von differenziellen Signalen. Als ein Beispiel steuert die Leitung 517 von einem logischen H-Pegel auf einen logischen L-Pegel, d. h. abfallende Flanke, wenn die Leitung 516 von einem Niederspannungspegel auf einen Hochspannungspegel umschaltet, d. h. ansteigende Flanke. Differenzielle Signale weisen potenziell bessere elektrische Charakteristiken, wie beispielsweise eine bessere Signalintegrität, d. h. Kreuzkopplung, Spannungsüberschreitung/-unterschreitung, Nachschwingen usw. auf. Dies ermöglicht ein besseres Taktfenster, welches schnellere Übertragungsfrequenzen ermöglicht.
  • Als Nächstes ist unter Bezugnahme auf 6 eine Ausführungsform eines SoC-Designs gemäß einer Ausführungsform dargestellt. Als ein spezifisches veranschaulichendes Beispiel ist der SoC 2000 in der Benutzereinrichtung (UE) enthalten. In einer Ausführungsform bezieht sich UE auf jede Einrichtung, die von einem Endbenutzer zum Kommunizieren zu verwenden ist, wie beispielsweise ein Handtelefon, Smartphone, Tablet, ultraflaches Notebook, Notebook mit Breitband-Adapter oder jede andere ähnliche Kommunikationseinrichtung. Eine UE schließt sich häufig an eine Basisstation oder einen Knoten an, die/der in ihrer/seiner Beschaffenheit potenziell einer Mobilstation (MS) in einem GSM-Netz entspricht.
  • Hier umfasst der SoC 2000 2 Kerne – 2006 und 2007. Ähnlich der vorstehenden Erörterung können die Kerne 2006 und 2007 einer Anweisungssatzarchitektur entsprechen, wie beispielsweise einem Intel® Architecture CoreTM-basierten Prozessor, einem Prozessor der Advanced Micro Devices, Inc. (AMD), einem MIPS-basierten Prozessor, einem ARM-basierten Prozessordesign oder einem Kunden davon sowie ihren Lizenznehmern oder Übernehmern. Die Kerne 2006 und 2007 sind mit einer Cachesteuerung 2008 gekoppelt, die mit einer Busschnittstelleneinheit 2009 und einem L2-Cache 2010 assoziiert ist, um mit anderen Teilen des Systems 2000 zu kommunizieren. Eine Zwischenverbindung 2010 umfasst eine chipinterne Zwischenverbindung, wie beispielsweise eine IOSF, AMBA oder eine zuvor erörterte andere Zwischenverbindung, die potenziell einen oder mehrere der hierin beschriebenen Aspekte implementiert.
  • Die Zwischenverbindung 2010 stellt Kommunikationskanäle zu den anderen Komponenten bereit, wie beispielweise einem Teilnehmerkennungsmodul (SIM) 2030 zur Verbindung mit einer SIM-Karte, einem Start-ROM 2035 zum Speichern eines Startcodes zur Ausführung durch die Kerne 2006 und 2007 zum Initialisieren und Starten des SoCs 2000, einem SDRAM-Controller 2040 zur Verbindung mit einem externen Speicher (z. B. DRAM 2060), einem Flash-Controller 2045 zur Verbindung mit einem nichtflüchtigen Speicher (z. B. Flash 2065), einem Peripheriecontroller 2050 (z. B. einer seriellen Peripherieschnittstelle) zur Verbindung mit Peripheriegeräten, Video-Codecs 2020 und einer Video-Schnittstelle 2025 zum Anzeigen und Empfangen von Eingabe (z. B. Touch-Eingabe), einer GPU 2015 zum Durchführen von grafikbezogenen Berechnungen usw. Jede dieser Schnittstellen kann hierin beschriebene Aspekte umfassen.
  • Außerdem veranschaulicht das System Peripheriegeräte zur Kommunikation, wie beispielsweise ein Bluetooth-Modul 2070, ein 3G-Modem 2075, ein GPS 2080 und WiFi 2085. Außerdem ist im System ein Leistungscontroller 2055 enthalten. Wie bereits erwähnt, umfasst eine UE ein Funkgerät zur Kommunikation. Folglich sind diese peripheren Kommunikationsmodule nicht alle erforderlich. In einer UE muss jedoch irgendeine Form eines Funkgeräts für externe Kommunikation enthalten sein.
  • In verschiedenen Ausführungsformen können wenigstens Abschnitte einer Schaltungsanordnung einer oder mehrerer Einrichtungen, die durch eine bestimmte Zwischenverbindung gekoppelt sind, leistungsgesteuert (z. B. leistungsgattergesteuert) sein, wenn durch Konfiguration der Einrichtung bestimmt wird, dass solch eine Schaltungsanordnung nicht verwendet wird. Als ein Beispiel der hierin beschriebenen Ausführungsformen kann Schaltungsanordnung, die mit einem oder mehreren virtuellen Kanälen assoziiert ist, die über die Zwischenverbindung Kommunikation bereitstellen, (z. B. durch Nichtbereitstellen einer Betriebsspannung für solch eine Schaltungsanordnung) in einen Abschaltzustand versetzt werden, wenn durch Konfiguration eines Systems bestimmt wird, dass solche virtuellen Kanäle nicht zur Kommunikation verwendet werden. Ausführungsformen sind natürlich nicht auf dieses Beispiel beschränkt, sondern die hierin beschriebenen Techniken gelten gleichermaßen für die Leistungsregelung anderer Schaltungsanordnung.
  • 7 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung. Wie in 7 dargestellt, ist das System 700 eine Implementierung eines PCIeTM-Systems mit verschiedenen Einrichtungen, die mit einem Switch 720 gekoppelt sind. Jede der Einrichtungen ist mit dem Switch 720 durch einen entsprechenden Link (jeweilige Links 1 bis 4) gekoppelt. Es ist zu erwähnen, dass in einer Ausführungsform jeder der Links verschiedene Charakteristiken und Betriebsparameter aufweisen kann.
  • Als Beispiele können die Einrichtungen 730, 740 und 750 verschiedene Typen von Peripherieeinrichtungen sein. Als ein solches Beispiel kann die Einrichtung 730 eine Grafikbeschleunigungseinrichtung sein, die Einrichtung 740 kann eine Speichereinrichtung sein, und die Einrichtung 750 kann ein anderer Typ von tragbarer Einrichtung, z. B. eine Erfassungseinrichtung, sein. Der Switch 720 ist durch eine anderen Link (Link 4) ferner mit einem Stammkomplex 710 gekoppelt. Als ein Beispiel kann der Stammkomplex 710 ein Hauptdatenprozessor des Systems, wie beispielsweise ein Mehrkernprozessor, sein. Es sind natürlich andere Beispiele von Komplexen möglich.
  • Insbesondere unter Bezugnahme auf die Verbindung zwischen dem Switch 720 und der Einrichtung 730 ist zu erwähnen, dass eine veränderliche Anzahl von virtuellen Kanälen (VCs für eng. virtual channels) in verschiedenen Einrichtungen vorgesehen ist. Wie zu sehen ist, umfasst der Switch 720 in diesem Beispiel 8 virtuelle Kanäle, jeweils mit einem entsprechenden Hardwarepuffer in einer Linkschnittstelle 725. Stattdessen umfasst die Einrichtung 730 nur 4 virtuelle Kanäle und weist demnach eine Linkschnittstelle 735 auf, die nur 4 Hardwarepuffer umfasst. Da diese Einrichtungen ungleiche Anzahlen von virtuellen Kanälen und Puffern aufweisen, werden wenigstens einige der Puffer innerhalb der Linkschnittstelle 725 des Switches 720 nicht verwendet. Demgemäß können diese Puffer unter Verwendung einer Ausführungsform der vorliegenden Erfindung in Hardware deaktiviert werden, damit Leistungsverbrauch für diese Puffer vermieden wird. Es versteht sich, dass trotz der Darstellung mit dieser bestimmten Implementierung in der Ausführungsform von 7 viele Varianten möglich sind.
  • Nunmehr unter Bezugnahme auf 8 ist ein Flussdiagramm eines Konfigurationsverfahrens gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. In einer bestimmten Ausführungsform kann das Verfahren 800 bei Einrichtungsinitialisierung durch Konfigurationslogik von Einrichtungen, die über einen Link miteinander gekoppelt sind, durchgeführt werden. Außerdem kann das Verfahren auch dynamisch durchgeführt werden, wann immer es eine Änderung an einer Einrichtung oder Hardware gibt, die über einen Link mit einer Einrichtung gekoppelt ist. Wenn zum Beispiel eine neue Einrichtung an einen Endpunkt gekoppelt wird, wird der Link umtrainiert, und Konfigurationslogik ordnet demgemäß gewisse bestimmte Werte neu zu. Unter Bezugnahme auf 8 beginnt das Verfahren 800 durch Auslesen eines erweiterten VC-Zählungsfeldes eines Konfigurationsspeichers sowohl einer lokalen Einrichtung oder eines lokalen Endpunkts als auch einer abgesetzten Einrichtung oder eines abgesetzten Endpunkts, die/der sich am entfernten Ende eines Links befinden, der diese 2 Einrichtungen koppelt (Block 810 und Block 820). In einer Ausführungsform kann dieses erweiterte VC-Zählungsfeld in einem Speicher der entsprechenden Einrichtung, z. B. innerhalb eines PCIeTM-Konfigurationsraums, gespeichert sein. Zu Erörterungszwecken wird angenommen, dass die lokale Einrichtung (Endpunkt 1) dem Switch 720 von 7 entspricht, und dass die abgesetzte Einrichtung (Endpunkt 2) der Einrichtung 730 von 7 entspricht.
  • Bei der zuvor dargelegten Darstellung (mit 8 virtuellen Kanälen und Puffern, die im Switch 720 vorhanden sind, und 4 virtuellen Kanälen und Puffern, die in der Einrichtung 730 vorhanden sind) beträgt der Wert, der für das erweiterte VC-Zählungsfeld von der Switch-Einrichtung 720 zurückgesendet wird, 8, und der Wert, der von der Einrichtung 730 zurückgesendet wird, beträgt 4. Genauer gesagt entspricht in einer Ausführungsform, in welcher dieses Zählungsfeld ein 3-Bit-Feld ist, ein Wert von null einem einzigen virtuellen Kanal, der unterstützt wird (z. B. VC0), und die Werte 1 bis 7 dieses 3-Bit-Binärwerts entsprechen der zusätzlichen Anzahl von unterstützten VCs. Demnach weist in dieser Ausführungsform das erweiterte VC-Zählungsfeld für den Switch 720 einen Wert von 111b auf, und das erweiterte VC-Zählungsfeld für die Vorrichtung 730 weist eine Zählung von 011b auf. Es sind natürlich andere Darstellungen möglich.
  • Immer noch unter Bezugnahme auf 8 geht die Steuerung als Nächstes zu Raute 830 über, wo bestimmt werden kann, ob die VC-Zählung für die lokale Einrichtung größer als die VC-Zählung für die abgesetzte Einrichtung ist. Wenn ja, geht die Steuerung zu Block 835 über, wo ein maximaler Link-VC-Wert auf das erweiterte VC-Zählungsfeld von der abgesetzten Einrichtung gesetzt werden kann. Es ist zu erwähnen, dass dieser maximale Link-VC-Wert oder -VC-ID-Wert einem Minimalwert für das erweiterte VC-Zählungsfeld von angeschlossenen Endunkten entspricht. Und demnach wird dieser maximale Link-VC-Wert in diesem Beispiel auf einen Wert von 011b gesetzt.
  • Wenn dies jedoch nicht der Fall ist, geht die Steuerung stattdessen von Raute 830 zu Raute 840 über, wo bestimmt werden kann, ob die VC-Zählung für die lokale Einrichtung der VC-Zählung für die abgesetzte Einrichtung entspricht. Wenn ja, geht die Steuerung zu Block 845 über, wo der maximale Link-VC-Wert auf das erweiterte VC-Zählungsfeld von der lokalen Einrichtung gesetzt werden kann. Andernfalls geht die Steuerung zu Raute 850 über, wo bestimmt wird, ob die VC-Zählung für die lokale Einrichtung kleiner als die VC-Zählung für die abgesetzte Einrichtung ist. In diesem Fall geht die Steuerung zu Block 855 über, wo der maximale Link-VC-Wert auf das erweiterte VC-Zählungsfeld von der lokalen Einrichtung gesetzt werden kann.
  • Ungeachtet des maximalen Link-VC-Werts, der in einem der Blöcke 835, 845 und 855 gesetzt wird, geht die Steuerung als Nächstes zu Block 860 über, wo auf einen Konfigurationsspeicher, wie beispielsweise einen Tabellenspeicher, mit diesen maximalen Link-VC-Werten zugegriffen werden kann. Genauer gesagt kann durch Zugreifen auf diese Tabelle eine andere Darstellung des ausgewählten maximalen Link-VC-Werts erhalten werden. Wie in Bezug auf 9A genauer dargestellt wird, kann die Tabelle eine Vielzahl von Einträgen umfassen, die jeweils eine 3-Bit-Darstellung eines maximalen Link-VC-Werts und eine entsprechende 8-Bit-Darstellung des gleichen Werts bereitstellen. Und demnach geht die Steuerung zu Block 870 über, wo einzelne Bits des abgerufenen Eintrags erhalten werden können, wobei jedes Bit einem der verfügbaren Anzahl von virtuellen Kanälen entspricht und einen aktivierten Zustand eines entsprechenden Hardwarepuffers darstellt. Das heißt, in einem Beispiel zeigt ein logischer Wert eins einen aktiven Puffer und demgemäß einen entsprechenden aktivierten Zustand an, und ein logischer Wert null zeigt einen inaktiven Puffer und demgemäß einen entsprechenden deaktivierten Zustand an. Es sind natürlich andere Darstellungen möglich.
  • Nunmehr unter Bezugnahme auf 9A ist ein Blockdiagramm eines Konfigurationsspeichers gemäß einer Ausführungsform dargestellt. Wie in 9A dargestellt, kann ein Speicher 900 an einem gewünschten Ort innerhalb des Systems, z. B. in einem separaten nichtflüchtigen Speicher, vorhanden sein. Oder es kann eine Kopie der Informationen im Konfigurationsspeicher 900, z. B. in einem Konfigurationsraum einer jeden der Einrichtungen des Systems, vorhanden sein. Noch weitere Ausführungsformen können diese Informationen an noch einem anderen Ort, wie beispielsweise externen Registern oder einem Festwertspeicher, speichern. Wie zu sehen ist, umfasst der Speicher 900 eine Vielzahl von Einträgen 910 0 bis 910 n. Jeder Eintrag umfasst ein erstes Feld 920 und ein zweites Feld 930. Das erste Feld 920 kann dem maximalen Link-VC-Wert entsprechen und wird demnach als ein adressierbares Mittel zum Zugreifen auf einen ausgewählten Eintrag des Speichers 900 verwendet. Das zweite Feld 930 wiederum stellt eine entsprechende 8-Bit-Darstellung des maximalen Link-VC-Werts dar. In einer Ausführungsform kann der 8-Bit-Wert, der aus der VC-ID zugeordnet wird, derart sein, dass jedes Bit einem Puffer eines virtuellen Kanals dieses Endpunkts oder einer anderen Lane-Zuordnung des Endpunkts entspricht; z. B. wird Bit 0 zu VC0 zugeordnet, Bit wird zu VC1 zugeordnet und schließlich wird Bit 7 zu VC7 zugeordnet. In dieser Ausführungsform zeigt eine binäre 1 einen „eingeschalteten” Zustand an, während 0 „ausgeschaltet” anzeigt. In einer Ausführungsform wird mit diesen Zuständen dann eine Spannungsregelschaltungsanordnung jedes Puffers angesteuert, um die Bereitstellung einer Betriebsspannung für den Puffer zu steuern (oder alternativ die Betriebsspannung nicht bereitzustellen).
  • Als Nächstes sind unter Bezugnahme auf 9B ein ausgewählter Eintrag 910x, der aus der Tabelle erhalten wird, und seine Verwendung zum Steuern der Bereitstellung einer Betriebsspannung für entsprechende Hardwarepuffer einer Einrichtung dargestellt. Genauer gesagt stellt 9B einen Satz von UND-Gattern 950 0 bis 950 n dar. Jedes dieser logischen Gatter ist so konfiguriert, dass es ein entsprechendes Bit aus dem ausgewählten Eintrag und eine entsprechende Betriebsspannung empfängt, die z. B. von einem chipexternen Spannungsregler erhalten wird. Natürlich kann die Betriebsspannung stattdessen von anderen – entweder chipinternen oder chipexternen – Orten empfangen werden. Wenn ein bestimmtes Bit einen logischen Wert H aufweist, ist das UND-Gatter aktiv, und demnach wird die Betriebsspannung für den entsprechenden Hardwarepuffer bereitgestellt. Andernfalls lässt das UND-Gatter die Betriebsspannung nicht zum Puffer durch, und der Puffer wird während des Normalbetriebs deaktiviert, wodurch Leistungsverbrauch verringert wird. Es versteht sich, dass trotz der Darstellung bei diesem H-Pegel in der Ausführungsform von 9B Varianten möglich sind.
  • Nunmehr unter Bezugnahme auf 10 ist ein Blockdiagramm eines Abschnitts eines Systems gemäß einer Ausführungsform dargestellt. Wie in 10 dargestellt, umfasst ein System 1000 verschiedene Komponenten. Zu Erörterungszwecken hierin sind einfach zwei Komponenten, nämlich eine Einrichtung 1010, die von einem beliebigen Typ von integrierter Schaltung sein kann, die über einen Link 1005 mit einer anderen Schaltung (nicht dargestellt) gekoppelt ist, und ein nichtflüchtiger Speicher 1080 dargestellt, der über einen Link 1090 gekoppelt ist. In der dargestellten Ausführungsform kann der Link 1005 ein PCIeTM-Link mit unidirektionalen seriellen Links in einer Senderichtung und einer Empfangsrichtung sein.
  • Die Einrichtung 1010 kann jeder Typ von Einrichtung sein, darunter Stammkomplex, Switch, Peripherieeinrichtung und so weiter. Der Vereinfachung der Darstellung halber sind nur Abschnitte der Einrichtung 1010 dargestellt. Genauer gesagt ist ein Satz von Empfangspuffern 1025 0 bis 1025 n vorgesehen. Diese Hardwarepuffer können jeweils einem bestimmten virtuellen Kanal VC0 bis VCn entsprechen. Daneben ist auch ein Satz von Sendepuffern 1020 0 bis 1020 n vorgesehen, wobei wiederum jeder Puffer mit einem bestimmten virtuellen Kanal assoziiert ist. Es ist zu erwähnen, dass verschiedene Verkehrsklassen (TCs für engl. traffic classes) zugeteilt sein können, um durch bestimmte VCs und entsprechende Hardwarepuffer geleitet zu werden. Unter Verwendung einer Ausführungsform der vorliegenden Erfindung werden nur aktivierte dieser virtuellen Hardwarepuffer virtueller Kanäle über eine Gatterlogik 1060, die wiederum Steuerinformationen von einer Konfigurationslogik 1050 empfängt, deren Details weiter unten erörtert werden, mit einer Betriebsspannung versehen.
  • Immer noch unter Bezugnahme auf die Einrichtung 1010 können die Puffer 1020 und 1025 mit anderer Schaltungsanordnung einer physikalischen Schicht (der Vereinfachung der Darstellung halber in 10 nicht dargestellt) kommunizieren.
  • Von da kann Kommunikationen mit einer Linklogik 1030 weitergehen, um verschiedene Linkschichtverarbeitungsvorgänge durchzuführen. Danach kann Kommunikation mit einer Transaktionslogik 1035 weitergehen, welche Transaktionsschichtverarbeitungsvorgänge durchzuführen kann. Danach kann Kommunikation mit einer Kernlogik 1040 erfolgen, welche die Hauptlogikschaltungsanordnung der Einrichtung 1010 sein kann. Zum Beispiel kann es sich bei der Kernlogik 1040 im Kontext eines Mehrkernprozessors um einen oder mehrere Prozessorkerne oder andere Verarbeitungsschaltungen handeln. Als ein anderes Beispiel, bei dem die Einrichtung 1010 eine Grafikbeschleunigungseinrichtung ist, kann die Kernlogik 1040 eine Grafikverarbeitungseinheit sein.
  • Außerdem ist in 10 eine Konfigurationslogik 1050 dargestellt, bei der es sich um Hardware, Software und/oder Firmware (oder Kombinationen davon) handeln kann, die zum Durchführen von Konfigurationsoperationen verwendet wird, wenn das System 1000 eingeschaltet wird, wenn die Einrichtung 1010 zurückgesetzt wird, oder wenn andere dynamische Änderung während des Betriebs auftreten. In einer Ausführungsform kann die Konfigurationslogik 1050 Logik zum Durchführen der hierin beschriebenen Leistungsverwaltungssteuerung umfassen. Demnach umfasst in der in 10 dargestellten Ausführungsform die Konfigurationslogik 1050 eine Leistungsverwaltungslogik (PML für engl. power management logic) 1055, die so konfiguriert sein kann, dass sie ein Verfahren wie beispielsweise das zuvor erörterte Verfahren 800 ausführt.
  • Zu diesem Zweck kann die Konfigurationslogik 1050 mit einem Konfigurationsspeicher 1070 kommunizieren. In verschiedenen Ausführungsformen kann der Konfigurationsspeicher 1070 ein nichtflüchtiger Speicher der Einrichtung 1010 sein, der einen PCIeTM-Konfigurationsspeicherraum umfasst. Unter den verschiedenen Konfigurationsinformationen, die hierin gespeichert werden, ist ein erweitertes VC-Zählungsfeld 1075, wie beispielsweise hierin beschrieben. Es versteht sich natürlich, dass außerdem zusätzliche Konfigurationsinformationen im Speicher 1070 gespeichert werden.
  • In einer bestimmten Ausführungsform kann eine Zuordnungstabelle vorgesehen sein, welche einen maximalen 3-Bit-VC-Zählungswert mit einem entsprechenden 8-Bit-Wert assoziiert. Die Anzahl von codierten Bits und Einzelbitdarstellungen kann in Abhängigkeit von der Menge möglicher virtueller Kanäle, Hardwarepuffer oder anderer Schaltungsanordnung, die gesteuert werden sollen, natürlich variieren. In der dargestellten Ausführungsform kann der separate nichtflüchtige Speicher 1080 eine Zuordnungstabelle 1085 umfassen. Die Zuordnungstabelle 1085 kann demnach einen maximalen VC-Zählungswert mit Lane-Zuordnungen assoziieren. Anders ausgedrückt, kann eine Anzeige der Anzahl der maximalen Anzahl von unterstützten virtuellen Kanälen einem entsprechenden Satz von Aktivierungsindikatoren zugeordnet werden, die verwendet werden können, um zu steuern, ob eine Betriebsspannung für einen oder mehrere Hardwarepuffer bereitgestellt wird, die jeweils mit einem entsprechenden virtuellen Kanal assoziiert sind. Es versteht sich natürlich, dass, obwohl in dieser Ausführungsform die Steuerung von Hardwarepuffern basierend auf aktivierten virtuellen Kanälen erörtert wird, zusätzliche Hardware innerhalb einer Einrichtung ähnlich gesteuert werden kann. Als ein Beispiel kann solch zusätzliche Hardware, die auf einer Lane-zu-Lane-Basis oder auf der Basis von virtuellen Kanälen gesteuert wird, eine Grafikkarte, eine Tochterkarte, wie beispielsweise eine USB-zu-PCIeTM- oder SATA-zu-PCIeTM-Karte, oder eine andere solche Einrichtung umfassen.
  • Ausführungsformen machen es demnach möglich, dass ungenutzte Hardware, wie beispielsweise VC-Hardwarepuffer, gemäß Konfigurationssteuerung z. B. durch Konfigurationslogik abgeschaltet wird. Auf diese Weise kann Systemleistung reduziert werden, da nur Hardware eingeschaltet ist, die tatsächlich verwendet wird.
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • In einem Beispiel umfasst eine Vorrichtung: eine Vielzahl von Hardwarepuffern, die jeweils zum Speichern von Informationen sind, die mit einem oder mehreren virtuellen Kanälen assoziiert sind; eine Konfigurationslogik zum Bestimmen einer Kennung, die einer maximalen Anzahl von virtuellen Kanälen entspricht, die von einer ersten Einrichtung und einer zweiten, die über einen Link gekoppelt sind, Einrichtung gemeinsam unterstützt werden, und zum Erhalten eines Steuerwerts basierend auf der Kennung; und eine Gatterlogik zum Bereitstellen einer Betriebsspannung für entsprechende der Vielzahl von Hardwarepuffern basierend auf dem Steuerwert.
  • Die Gatterlogik kann in einer Ausführungsform so konfiguriert sein, dass sie Bereitstellung der Betriebsspannung für mindestens einen der Vielzahl von Hardwarepuffern verhindert, wenn die maximale Anzahl von virtuellen Kanälen kleiner als die Vielzahl von Hardwarepuffern ist.
  • In einem Beispiel ist die Konfigurationslogik zum Bestimmen der maximalen Anzahl von virtuellen Kanälen basierend auf einer ersten Zählung virtueller Kanäle, die mit der ersten Einrichtung assoziiert ist, und einer zweiten Zählung virtueller Kanäle, die mit der zweiten Einrichtung assoziiert ist.
  • In einem Beispiel ist die Konfigurationslogik zum Erhalten der ersten Zählung virtueller Kanäle aus einem Zählungsfeld virtueller Kanäle eines Konfigurationsspeichers der ersten Einrichtung und zum Erhalten der zweiten Zählung virtueller Kanäle aus einem Zählungsfeld virtueller Kanäle eines Konfigurationsspeichers der zweiten Einrichtung.
  • In einem Beispiel umfasst die Gatterlogik eine Vielzahl von Logikschaltungen, die jeweils zum Empfangen eines Bits des Steuerwerts und der Betriebsspannung und zum Bereitstellen der Betriebsspannung für einen der Vielzahl von Hardwarepuffern basierend auf einem Wert des Bits sind.
  • In einem Beispiel kann ein nichtflüchtiger Speicher, der eine Zuordnungstabelle mit einer Vielzahl von Einträgen umfasst, die jeweils zum Assoziieren einer Kennung mit einem Steuerwert sind, mit der Vorrichtung gekoppelt sein. In einer Ausführungsform ist die Konfigurationslogik zum Erhalten des Steuerwerts aus einem Eintrag der Zuordnungstabelle, auf die unter Verwendung der Kennung zugegriffen wird. Der Steuerwert kann eine Vielzahl von Bits umfassen, die jeweils mit einem der Vielzahl von Hardwarepuffern assoziiert sind, wobei jedes der Bits eines ersten Zustands zum Anzeigen ist, dass der assoziierte Hardwarepuffer aktiviert werden soll, und eines zweiten Zustands zum Anzeigen ist, dass der assoziierte Hardwarepuffer deaktiviert werden soll.
  • In einem Beispiel umfasst die erste Einrichtung einen Konfigurationsspeicher zum Speichern einer Zählung der maximalen Anzahl von virtuellen Kanälen, die von der ersten Einrichtung unterstützt werden, und ferner zum Speichern einer Kopie eines oder mehrerer Einträge der Zuordnungstabelle. In einer Ausführungsform ist der nichtflüchtige Speicher eine separate Komponente von der ersten Einrichtung und über einen zweiten Link mit der ersten Einrichtung gekoppelt.
  • Es ist zu erwähnen, dass die zuvor erwähnte Einrichtung unter Verwendung verschiedener Mittel implementiert sein kann.
  • In einem Beispiel umfasst ein Prozessor einen Systemchip (Soc), der in eine touchfähige Einrichtung einer Benutzereinrichtung integriert ist.
  • In einem anderen Beispiel umfasst ein System eine Anzeige und einen Speicher, und es umfasst die Einrichtung nach einem oder mehreren der vorstehenden Beispiele.
  • In einem anderen Beispiel umfasst ein Verfahren: Bestimmen einer gemeinsamen Anzahl von virtuellen Kanälen, die von einem ersten Endpunkt und einem zweiten Endpunkt, die über einen Link gekoppelt sind, unterstützt werden können; Zugreifen auf einen Speicher unter Verwendung der gemeinsamen Anzahl von virtuellen Kanälen zum Erhalten einer Steuereinstellung, die der gemeinsamen Anzahl von virtuellen Kanälen entspricht; und Bereitstellen einer Betriebsspannung für ausgewählte erste Hardwarepuffer des ersten Endpunkts und ausgewählte zweite Hardwarepuffer des zweiten Endpunkts basierend auf der Steuereinstellung.
  • In einem Beispiel umfasst das Bereitstellen der Betriebsspannung ein Bereitstellen der Betriebsspannung für die ausgewählten ersten und zweiten Hardwarepuffer und ein Nichtbereitstellen der Betriebsspannung für nicht ausgewählte erste Hardwarepuffer und nicht ausgewählte zweite Hardwarepuffer.
  • In einem Beispiel umfasst das Verfahren ferner ein Kommunizieren von Daten zwischen dem ersten Endpunkt und dem zweiten Endpunkt unter Verwendung der ausgewählten ersten Hardwarepuffer und der ausgewählten zweiten Hardwarepuffer.
  • In einem Beispiel umfasst das Verfahren ferner ein Zugreifen während der Konfiguration des Links auf den Speicher unter Verwendung der gemeinsamen Anzahl von virtuellen Kanälen, wobei der Speicher von den ersten und zweiten Endpunkten getrennt ist und eine Vielzahl von Einträgen umfasst, die jeweils zum Speichern einer gemeinsamen Anzahl von virtuellen Kanälen und einer Steuereinstellung sind.
  • In einem Beispiel umfasst das Verfahren in Reaktion auf eine Rekonfiguration des Links ferner: Bestimmen einer zweiten gemeinsamen Anzahl von virtuellen Kanälen, die von den ersten und zweiten Endpunkten unterstützt werden können; Zugreifen auf den Speicher unter Verwendung der zweiten gemeinsamen Anzahl von virtuellen Kanälen zum Erhalten einer zweiten Steuereinstellung; und Bereitstellen der Betriebsspannung für andere der ersten Hardwarepuffer als die ausgewählten ersten Hardwarepuffer und für andere der zweiten Hardwarepuffer als die ausgewählten zweiten Hardwarepuffer basierend auf der zweiten Steuereinstellung.
  • In einem anderen Beispiel ist ein computerlesbares Medium, das Anweisungen umfasst, zum Durchführen des Verfahrens nach einem der vorstehenden Beispiele.
  • In einem anderen Beispiel umfasst eine Vorrichtung Mittel zum Durchführen des Verfahrens nach einem der vorstehenden Beispiele.
  • In einem anderen Beispiel umfasst eine Vorrichtung: eine erste Linkschnittstelle zum Verbinden der Vorrichtung mit einem Link, der zwischen die Vorrichtung und eine zweite Einrichtung gekoppelt ist, wobei die erste Linkschnittstelle eine Vielzahl von unabhängigen Schaltungen umfasst, die jeweils zum Kommunizieren von Daten einer entsprechenden Verkehrsklasse sind; einen ersten Konfigurationsspeicher zum Speichern eines maximalen unterstützbaren Werts, welcher der Anzahl der Vielzahl von unabhängigen Schaltungen entspricht; eine Konfigurationslogik zum Bestimmen eines maximalen Link-Werts, der einem Minimum des maximalen unterstützbaren Werts entspricht, der im ersten Konfigurationsspeicher gespeichert ist, und eines maximalen unterstützbaren Werts, der in einem zweiten Konfigurationsspeicher der zweiten Einrichtung gespeichert ist, und zum Erhalten einer anderen Darstellung des maximalen Link-Werts; und eine Steuerschaltung zum Aktivieren eines ersten Satzes der Vielzahl von unabhängigen Schaltungen und zum Deaktivieren eines zweiten Satzes der Vielzahl von unabhängigen Schaltungen in Reaktion auf die andere Darstellung, wenn der maximale Link-Wert kleiner als eine Anzahl der Vielzahl von unabhängigen Schaltungen ist.
  • In einem Beispiel entspricht der maximale unterstützbare Wert, der im ersten Konfigurationsspeicher gespeichert ist, ferner einem Zählungswert virtueller Kanäle für die Vorrichtung.
  • In einem Beispiel umfasst ein nichtflüchtiger Speicher, der mit der Vorrichtung gekoppelt ist, eine Zuordnungstabelle mit einer Vielzahl von Einträgen, die jeweils einen maximalen Link-Wert mit einer anderen Darstellung des maximalen Link-Werts assoziieren. Auf die Zuordnungstabelle kann unter Verwendung des maximalen Link-Werts zugegriffen werden, der durch die Konfigurationslogik bestimmt wird.
  • In einem Beispiel umfasst die andere Darstellung eine Vielzahl von Bits, die jeweils mit einer der Vielzahl von unabhängigen Schaltungen assoziiert sind, wobei jedes der Bits eines ersten Zustands zum Anzeigen ist, dass die assoziierte unabhängige Schaltung aktiviert werden soll, und eines zweiten Zustands zum Anzeigen ist, dass die assoziierte unabhängige Schaltung deaktiviert werden soll.
  • In einem Beispiel umfasst die Steuerschaltung eine Vielzahl von Logikschaltungen, die jeweils zum Empfangen eines Bits der Vielzahl von Bits der anderen Darstellung und einer Betriebsspannung von einem Spannungsregler und Bereitstellen der Betriebsspannung für eine der Vielzahl von unabhängigen Schaltungen basierend auf einem Wert des Bits sind.
  • In einem Beispiel umfasst die Vielzahl von unabhängigen Schaltungen jeweils einen Hardwarepuffer, der mit einem virtuellen Kanal assoziiert ist.
  • In noch einem weiteren Beispiel umfasst ein System: eine erste Einrichtung, die eine erste Linkschnittstelle mit einer ersten Vielzahl von Hardwarepuffern umfasst, die jeweils zum Speichern von Informationen sind, die mit einem oder mehreren virtuellen Kanälen assoziiert sind, und eine zweite Einrichtung, die über einen Link mit der ersten Einrichtung gekoppelt ist. In einer Ausführungsform umfasst die zweite Einrichtung: eine zweite Linkschnittstelle mit einer zweiten Vielzahl von Hardwarepuffern, die jeweils zum Speichern von Informationen sind, die mit einem oder mehreren virtuellen Kanälen assoziiert sind, wobei mehr von der zweiten Vielzahl von Hardwarepuffern als der ersten Vielzahl von Hardwarepuffern vorhanden sind; einen Controller zum Bestimmen einer maximalen Anzahl von virtuellen Kanälen, die von den ersten und zweiten Einrichtungen gemeinsam unterstützt werden, wobei die maximale Anzahl der Anzahl der Vielzahl von ersten Hardwarepuffern entspricht, und zum Erhalten eines Steuerwerts basierend auf der maximalen Anzahl; und eine Gatterlogik zum Aktivieren von weniger als allen der Vielzahl von zweiten Hardwarepuffern in Reaktion auf den Steuerwert.
  • In einem Beispiel umfasst die erste Einrichtung einen ersten Konfigurationsspeicher, der eine erste maximale Zählung virtueller Kanäle umfasst, und die zweite Einrichtung umfasst einen zweiten Konfigurationsspeicher, der eine zweite maximale Zählung virtueller Kanäle umfasst.
  • In einem Beispiel ist der Controller zum Bestimmen der maximalen Anzahl von gemeinsam unterstützten virtuellen Kanälen unter Verwendung der ersten maximalen Zählung virtueller Kanäle und der zweiten maximalen Zählung virtueller Kanäle.
  • In einem Beispiel umfasst ein nichtflüchtiger Speicher eine Zuordnungstabelle mit einer Vielzahl von Einträgen, die jeweils zum Assoziieren einer maximalen Anzahl von gemeinsam unterstützten virtuellen Kanälen sind.
  • In einem Beispiel kann der Controller den Steuerwert aus einem Eintrag der Zuordnungstabelle erhalten, auf die unter Verwendung der bestimmten maximalen Anzahl von gemeinsam unterstützten virtuellen Kanälen zugegriffen wird. Der Steuerwert umfasst eine Vielzahl von Bits, die jeweils mit einem der zweiten Vielzahl von Hardwarepuffern assoziiert sind, wobei jedes der Bits eines ersten Zustands zum Anzeigen ist, dass der assoziierte zweite Hardwarepuffer aktiviert werden soll, und eines zweiten Zustands zum Anzeigen ist, dass der assoziierte zweite Hardwarepuffer deaktiviert werden soll.
  • In einem Beispiel umfasst die Gatterlogik eine Vielzahl von Logikschaltungen, die jeweils zum Empfangen eines Bit des Steuerwerts und einer Betriebsspannung und zum Bereitstellen der Betriebsspannung für einen der Vielzahl von Hardwarepuffern basierend auf einem Wert des Bits sind.
  • Es versteht sich, dass verschiedene Kombinationen der vorstehenden Beispiele möglich sind.
  • Die Ausführungsformen können in vielen verschiedenen Typen von Systemen verwendet werden. Zum Beispiel kann in einer Ausführungsform eine Kommunikationseinrichtung so ausgelegt sein, dass sie die verschiedenen hierin beschriebene Verfahren und Techniken durchführt. Der Schutzbereich der vorliegenden Erfindung ist natürlich nicht auf eine Kommunikationseinrichtung beschränkt, sondern andere Ausführungsformen können stattdessen an andere Typen von Vorrichtungen zum Verarbeiten von Anweisungen oder eine oder mehrere maschinenlesbare Medien gerichtet sein, welche Anweisungen umfassen, die in Reaktion auf ihre Ausführung auf einer Computereinrichtung die Einrichtung veranlassen, eines oder mehrere der hierin beschriebenen Verfahren und eine oder mehrere der hierin beschriebenen Techniken auszuführen.
  • Ausführungsformen können in Code implementiert sein und auf einem nichttransitorischen Speichermedium gespeichert werden, das Anweisungen darauf aufweist, die verwendet werden können, um ein System so zu programmieren, dass es die Anweisungen ausführt. Das Speichermedium kann jeglichen Typ von Platten, darunter Disketten, optische Platten, Festkörperlaufwerke (SSDs nach engl. solid state drives), Compact-Disk-Festwertspeicher (CD-ROMs für engl. compact disk read-only memories), wiederbeschreibbare Compact-Disks (CD-RWs für engl. compact disk rewritable's) und magnetooptische Platten, Halbleiterbauelemente wie beispielsweise Festwertspeicher (ROMs für engl. read-only memories), Direktzugriffsspeicher (RAMs für engl. random access memories), wie beispielsweise dynamische Direktzugriffsspeicher (DRAMs für engl. dynamic random access memories), statische Direktzugriffsspeicher (SRAMs für engl. static random access memories), löschbare programmierbare Festwertspeicher (EPROMs für engl. erasable programmable read-only memories), Flash-Speicher, elektrisch löschbare programmierbare Festwertspeicher (EEPROMs für engl. electrically erasable programmable read-only memories), magnetische oder optische Karten oder jeden anderen Typ von Medien, die zum Speichern von elektronischen Befehlen imstande sind, umfassen, ohne darauf beschränkt zu sein.
  • Obwohl die vorliegende Erfindung in Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, sind für Fachleute zahlreiche Modifikationen und Abwandlungen davon zu erkennen. Die angehängten Ansprüche sollen alle solchen Modifikationen und Abwandlungen erfassen, die unter das wahre Wesen und in den Schutzbereich dieser vorliegenden Erfindung fallen.

Claims (27)

  1. Vorrichtung, umfassend: eine Vielzahl von Hardwarepuffern, die jeweils zum Speichern von Informationen sind, die mit einem oder mehreren virtuellen Kanälen assoziiert sind; eine Konfigurationslogik zum Bestimmen einer Kennung, die einer maximalen Anzahl von virtuellen Kanälen entspricht, die von einer ersten Einrichtung und einer zweiten Einrichtung, die über einen Link gekoppelt sind, gemeinsam unterstützt werden, und zum Erhalten eines Steuerwerts basierend auf der Kennung; und eine Gatterlogik zum Bereitstellen einer Betriebsspannung für entsprechende der Vielzahl von Hardwarepuffern basierend auf dem Steuerwert, wobei die Gatterlogik zum Verhindern von Bereitstellung der Betriebsspannung für mindestens einen der Vielzahl von Hardwarepuffern ist, wenn die maximale Anzahl von virtuellen Kanälen kleiner als die Vielzahl von Hardwarepuffern ist.
  2. Vorrichtung nach Anspruch 1, wobei die Konfigurationslogik zum Bestimmen der maximalen Anzahl von virtuellen Kanälen basierend auf einer ersten Zählung virtueller Kanäle, die mit der ersten Einrichtung assoziiert ist, und einer zweiten Zählung virtueller Kanäle ist, die mit der zweiten Einrichtung assoziiert ist.
  3. Vorrichtung nach Anspruch 2, wobei die Konfigurationslogik zum Erhalten der ersten Zählung virtueller Kanäle aus einem Zählungsfeld virtueller Kanäle eines Konfigurationsspeichers der ersten Einrichtung und zum Erhalten der zweiten Zählung virtueller Kanäle aus einem Zählungsfeld virtueller Kanäle eines Konfigurationsspeichers der zweiten Einrichtung ist.
  4. Vorrichtung nach Anspruch 1, wobei die Gatterlogik eine Vielzahl von Logikschaltungen umfasst, die jeweils zum Empfangen eines Bits des Steuerwerts und der Betriebsspannung und zum Bereitstellen der Betriebsspannung für einen der Vielzahl von Hardwarepuffern basierend auf einem Wert des Bits sind.
  5. Vorrichtung nach Anspruch 1, ferner umfassend einen nichtflüchtigen Speicher, der eine Zuordnungstabelle mit einer Vielzahl von Einträgen umfasst, die jeweils zum Assoziieren einer Kennung mit einem Steuerwert sind.
  6. Vorrichtung nach Anspruch 5, wobei die Konfigurationslogik zum Erhalten des Steuerwerts aus einem Eintrag der Zuordnungstabelle ist, auf die unter Verwendung der Kennung zugegriffen wird.
  7. Vorrichtung nach Anspruch 6, wobei der Steuerwert eine Vielzahl von Bits umfasst, die jeweils mit einem der Vielzahl von Hardwarepuffern assoziiert sind, wobei jedes der Bits eines ersten Zustands zum Anzeigen ist, dass der assoziierte Hardwarepuffer aktiviert werden soll, und eines zweiten Zustands zum Anzeigen ist, dass der assoziierte Hardwarepuffer deaktiviert werden soll.
  8. Vorrichtung nach Anspruch 5, wobei die erste Einrichtung einen Konfigurationsspeicher zum Speichern einer Zählung der maximalen Anzahl von virtuellen Kanälen umfasst, die von der ersten Einrichtung unterstützt werden, und der Konfigurationsspeicher ferner zum Speichern einer Kopie eines oder mehrerer Einträge der Zuordnungstabelle ist.
  9. Vorrichtung nach Anspruch 8, wobei der nichtflüchtige Speicher eine separate Komponente von der ersten Einrichtung und über einen zweiten Link mit der ersten Einrichtung gekoppelt ist.
  10. Verfahren, umfassend: Bestimmen einer gemeinsamen Anzahl von virtuellen Kanälen, die von einem ersten Endpunkt und einem zweiten Endpunkt, die über einen Link gekoppelt sind, unterstützt werden können; Zugreifen auf einen Speicher unter Verwendung der gemeinsamen Anzahl von virtuellen Kanälen zum Erhalten einer Steuereinstellung, die der gemeinsamen Anzahl von virtuellen Kanälen entspricht; und Bereitstellen einer Betriebsspannung für ausgewählte erste Hardwarepuffer des ersten Endpunkts und ausgewählte zweite Hardwarepuffer des zweiten Endpunkts basierend auf der Steuereinstellung.
  11. Verfahren nach Anspruch 10, wobei das Bereitstellen der Betriebsspannung ein Bereitstellen der Betriebsspannung für die ausgewählten ersten und zweiten Hardwarepuffer und ein Nichtbereitstellen der Betriebsspannung für nicht ausgewählte erste Hardwarepuffer und nicht ausgewählte zweite Hardwarepuffer umfasst.
  12. Verfahren nach Anspruch 10, ferner umfassend ein Kommunizieren von Daten zwischen dem ersten Endpunkt und dem zweiten Endpunkt unter Verwendung der ausgewählten ersten Hardwarepuffer und der ausgewählten zweiten Hardwarepuffer.
  13. Verfahren nach Anspruch 10, ferner umfassend ein Zugreifen während der Konfiguration des Links auf den Speicher unter Verwendung der gemeinsamen Anzahl von virtuellen Kanälen, wobei der Speicher von den ersten und zweiten Endpunkten getrennt ist und eine Vielzahl von Einträgen umfasst, die jeweils zum Speichern einer gemeinsamen Anzahl von virtuellen Kanälen und einer Steuereinstellung sind.
  14. Verfahren nach Anspruch 13, ferner umfassend in Reaktion auf eine Rekonfiguration des Links: Bestimmen einer zweiten gemeinsamen Anzahl von virtuellen Kanälen, die von den ersten und zweiten Endpunkten unterstützt werden können; Zugreifen auf den Speicher unter Verwendung der zweiten gemeinsamen Anzahl von virtuellen Kanälen zum Erhalten einer zweiten Steuereinstellung; und Bereitstellen der Betriebsspannung für andere der ersten Hardwarepuffer als die ausgewählten ersten Hardwarepuffer und für andere der zweiten Hardwarepuffer als die ausgewählten zweiten Hardwarepuffer basierend auf der zweiten Steuereinstellung.
  15. Vorrichtung, umfassend: eine erste Linkschnittstelle zum Verbinden der Vorrichtung mit einem Link, der zwischen die Vorrichtung und eine zweite Einrichtung gekoppelt ist, wobei die erste Linkschnittstelle eine Vielzahl von unabhängigen Schaltungen umfasst, die jeweils zum Kommunizieren von Daten einer entsprechenden Verkehrsklasse sind; einen ersten Konfigurationsspeicher zum Speichern eines maximalen unterstützbaren Werts, welcher der Anzahl der Vielzahl von unabhängigen Schaltungen entspricht; eine Konfigurationslogik zum Bestimmen eines maximalen Link-Werts, der einem Minimum des maximalen unterstützbaren Werts entspricht, der im ersten Konfigurationsspeicher gespeichert ist, und eines maximalen unterstützbaren Werts, der in einem zweiten Konfigurationsspeicher der zweiten Einrichtung gespeichert ist, und zum Erhalten einer anderen Darstellung des maximalen Link-Werts; und eine Steuerschaltung zum Aktivieren eines ersten Satzes der Vielzahl von unabhängigen Schaltungen und zum Deaktivieren eines zweiten Satzes der Vielzahl von unabhängigen Schaltungen in Reaktion auf die andere Darstellung, wenn der maximale Link-Wert kleiner als eine Anzahl der Vielzahl von unabhängigen Schaltungen ist.
  16. Vorrichtung nach Anspruch 15, wobei der maximale unterstützbare Wert, der im ersten Konfigurationsspeicher gespeichert ist, ferner einem Zählungswert virtueller Kanäle für die Vorrichtung entspricht.
  17. Vorrichtung nach Anspruch 15, ferner umfassend einen nichtflüchtigen Speicher, der mit der Vorrichtung gekoppelt ist, wobei der nichtflüchtige Speicher eine Zuordnungstabelle mit einer Vielzahl von Einträgen umfasst, die jeweils zum Assoziieren eines maximalen Link-Werts mit einer anderen Darstellung des maximalen Link-Werts sind, wobei auf die Zuordnungstabelle unter Verwendung des maximalen Link-Werts zugegriffen wird, der durch die Konfigurationslogik bestimmt wird.
  18. Vorrichtung nach Anspruch 17, wobei die andere Darstellung eine Vielzahl von Bits umfasst, die jeweils mit einer der Vielzahl von unabhängigen Schaltungen assoziiert sind, wobei jedes der Bits eines ersten Zustands zum Anzeigen ist, dass die assoziierte unabhängige Schaltung aktiviert werden soll, und eines zweiten Zustands zum Anzeigen ist, dass die assoziierte unabhängige Schaltung deaktiviert werden soll.
  19. Vorrichtung nach Anspruch 18, wobei die Steuerschaltung eine Vielzahl von Logikschaltungen umfasst, die jeweils zum Empfangen eines Bits der Vielzahl von Bits der anderen Darstellung und einer Betriebsspannung von einem Spannungsregler und zum Bereitstellen der Betriebsspannung für eine der Vielzahl von unabhängigen Schaltungen basierend auf einem Wert des Bits sind.
  20. Vorrichtung nach Anspruch 15, wobei die Vielzahl von unabhängigen Schaltungen jeweils einen Hardwarepuffer umfasst, der mit einem virtuellen Kanal assoziiert ist.
  21. System, umfassend: eine erste Einrichtung, die eine erste Linkschnittstelle mit einer ersten Vielzahl von Hardwarepuffern umfasst, die jeweils zum Speichern von Informationen sind, die mit einem oder mehreren virtuellen Kanälen assoziiert sind; und eine zweite Einrichtung, die über einen Link mit der ersten Einrichtung gekoppelt ist, wobei die zweite Einrichtung Folgendes umfasst: eine zweite Linkschnittstelle mit einer zweiten Vielzahl von Hardwarepuffern, die jeweils zum Speichern von Informationen sind, die mit einem oder mehreren virtuellen Kanälen assoziiert sind, wobei mehr von der zweiten Vielzahl von Hardwarepuffern als der ersten Vielzahl von Hardwarepuffern vorhanden sind; einen Controller zum Bestimmen einer maximalen Anzahl von virtuellen Kanälen, die von den ersten und zweiten Einrichtungen gemeinsam unterstützt werden, wobei die maximale Anzahl der Anzahl der Vielzahl von ersten Hardwarepuffern entspricht, und zum Erhalten eines Steuerwerts basierend auf der maximalen Anzahl; und eine Gatterlogik zum Aktivieren von weniger als allen der Vielzahl von zweiten Hardwarepuffern in Reaktion auf den Steuerwert.
  22. System nach Anspruch 21, wobei die erste Einrichtung einen ersten Konfigurationsspeicher umfasst, der eine erste maximale Zählung virtueller Kanäle umfasst, und die zweite Einrichtung einen zweiten Konfigurationsspeicher umfasst, der eine zweite maximale Zählung virtueller Kanäle umfasst.
  23. System nach Anspruch 22, wobei der Controller zum Bestimmen der maximalen Anzahl von gemeinsam unterstützten virtuellen Kanälen unter Verwendung der ersten maximalen Zählung virtueller Kanäle und der zweiten maximalen Zählung virtueller Kanäle ist.
  24. System nach Anspruch 21, ferner umfassend einen nichtflüchtigen Speicher, der eine Zuordnungstabelle mit einer Vielzahl von Einträgen umfasst, die jeweils zum Assoziieren einer maximalen Anzahl von gemeinsam unterstützten virtuellen Kanälen sind.
  25. System nach Anspruch 24, wobei der Controller zum Erhalten des Steuerwerts aus einem Eintrag der Zuordnungstabelle ist, auf die unter Verwendung der bestimmten maximalen Anzahl von gemeinsam unterstützten virtuellen Kanälen zugegriffen wird.
  26. System nach Anspruch 25, wobei der Steuerwert eine Vielzahl von Bits umfasst, die jeweils mit einem der zweiten Vielzahl von Hardwarepuffern assoziiert sind, wobei jedes der Bits eines ersten Zustands zum Anzeigen ist, dass der assoziierte zweite Hardwarepuffer aktiviert werden soll, und eines zweiten Zustands zum Anzeigen ist, dass der assoziierte zweite Hardwarepuffer deaktiviert werden soll.
  27. System nach Anspruch 26, wobei die Gatterlogik eine Vielzahl von Logikschaltungen umfasst, die jeweils zum Empfangen eines Bits des Steuerwerts und einer Betriebsspannung und zum Bereitstellen der Betriebsspannung für einen der Vielzahl von zweiten Hardwarepuffern basierend auf einem Wert des Bits sind.
DE112014006490.4T 2014-03-20 2014-03-20 Verfahren, Vorrichtung und System zur Regelung von Leistung ungenutzter Hardware einer Linkschnittstelle Pending DE112014006490T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2014/031304 WO2015142336A1 (en) 2014-03-20 2014-03-20 A method, apparatus, and system for controlling power consumption of unused hardware of a link interface

Publications (1)

Publication Number Publication Date
DE112014006490T5 true DE112014006490T5 (de) 2016-12-08

Family

ID=54120167

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112014006490.4T Pending DE112014006490T5 (de) 2014-03-20 2014-03-20 Verfahren, Vorrichtung und System zur Regelung von Leistung ungenutzter Hardware einer Linkschnittstelle

Country Status (9)

Country Link
US (1) US9552045B2 (de)
EP (1) EP3120216B1 (de)
JP (1) JP6321194B2 (de)
KR (1) KR101867435B1 (de)
CN (1) CN104932996B (de)
DE (1) DE112014006490T5 (de)
RU (1) RU2653306C1 (de)
TW (1) TWI556094B (de)
WO (1) WO2015142336A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10515032B2 (en) * 2016-07-01 2019-12-24 Intel Corporation Asymmetric transmission (TX) and receive (RX) lanes in a point-to-point interconnect using a peripheral component interconnect express (PCIE) resources in a computer system
CN110073342A (zh) * 2016-12-23 2019-07-30 英特尔公司 用于硬件加速的虚拟信道
US10372657B2 (en) * 2016-12-26 2019-08-06 Intel Corporation Bimodal PHY for low latency in high speed interconnects
KR20180095765A (ko) 2017-02-17 2018-08-28 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US20190095554A1 (en) * 2017-09-28 2019-03-28 Intel Corporation Root complex integrated endpoint emulation of a discreet pcie endpoint
CN110139063B (zh) * 2018-02-09 2020-12-18 杭州海康威视数字技术股份有限公司 一种确定设备支持视频流路数的方法、装置及设备
CN108495362B (zh) * 2018-03-09 2021-06-01 广东小天才科技有限公司 一种信号传输方法及通信电路
WO2020236275A1 (en) 2019-05-23 2020-11-26 Cray Inc. System and method for facilitating dynamic command management in a network interface controller (nic)
KR20210012439A (ko) * 2019-07-25 2021-02-03 삼성전자주식회사 마스터 지능 소자 및 이의 제어 방법

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5396635A (en) 1990-06-01 1995-03-07 Vadem Corporation Power conservation apparatus having multiple power reduction levels dependent upon the activity of the computer system
JPH04359335A (ja) 1991-06-06 1992-12-11 Fujitsu Ltd メモリアクセス方式
US5781784A (en) 1992-07-09 1998-07-14 Zilog, Inc. Dynamic power management of solid state memories
US6222825B1 (en) 1997-01-23 2001-04-24 Advanced Micro Devices, Inc. Arrangement for determining link latency for maintaining flow control in full-duplex networks
US6009488A (en) 1997-11-07 1999-12-28 Microlinc, Llc Computer having packet-based interconnect channel
DE19822259C2 (de) 1998-05-18 2000-07-06 Siemens Ag Sendeeinrichtung und Bussystem zur Datenübertragung
US6938094B1 (en) * 1999-09-17 2005-08-30 Advanced Micro Devices, Inc. Virtual channels and corresponding buffer allocations for deadlock-free computer system operation
US6597689B1 (en) * 1998-12-30 2003-07-22 Nortel Networks Limited SVC signaling system and method
US6950438B1 (en) * 1999-09-17 2005-09-27 Advanced Micro Devices, Inc. System and method for implementing a separate virtual channel for posted requests in a multiprocessor computer system
US6526469B1 (en) 1999-11-12 2003-02-25 International Business Machines Corporation Bus architecture employing varying width uni-directional command bus
US20020087716A1 (en) 2000-07-25 2002-07-04 Shakeel Mustafa System and method for transmitting customized multi priority services on a single or multiple links over data link layer frames
AU2001280857A1 (en) 2000-08-17 2002-02-25 Api Networks, Inc. System and method for separate virtual channels for posted requests in a multiprocessor system
US6665742B2 (en) 2001-01-31 2003-12-16 Advanced Micro Devices, Inc. System for reconfiguring a first device and/or a second device to use a maximum compatible communication parameters based on transmitting a communication to the first and second devices of a point-to-point link
JP2002259327A (ja) 2001-02-28 2002-09-13 Hitachi Ltd バス制御回路
JP3523616B2 (ja) 2001-07-24 2004-04-26 松下電器産業株式会社 バス最適化方法及び通信ノード
US6715055B1 (en) * 2001-10-15 2004-03-30 Advanced Micro Devices, Inc. Apparatus and method for allocating buffer space
US6681274B2 (en) * 2001-10-15 2004-01-20 Advanced Micro Devices, Inc. Virtual channel buffer bypass for an I/O node of a computer system
US20030088799A1 (en) 2001-11-05 2003-05-08 Bodas Devadatta V. Method and apparatus for regulation of electrical component temperature and power consumption rate through bus width reconfiguration
US8819253B2 (en) 2001-11-13 2014-08-26 Oracle America, Inc. Network message generation for automated authentication
US7200186B2 (en) 2002-03-14 2007-04-03 Intel Corporation Methods and apparatus for reducing power usage of a transmitter and receiver coupled via a differential serial data link
GB0211764D0 (en) 2002-05-22 2002-07-03 3Com Corp Automatic power saving facility for network devices
US8103788B1 (en) * 2002-11-19 2012-01-24 Advanced Micro Devices, Inc. Method and apparatus for dynamically reallocating buffers for use in a packet transmission
US7137018B2 (en) 2002-12-31 2006-11-14 Intel Corporation Active state link power management
US7047475B2 (en) 2003-02-04 2006-05-16 Hewlett-Packard Development Company, L.P. CRC encoding scheme for conveying status information
US7136953B1 (en) 2003-05-07 2006-11-14 Nvidia Corporation Apparatus, system, and method for bus link width optimization
US7188263B1 (en) 2003-05-07 2007-03-06 Nvidia Corporation Method and apparatus for controlling power state of a multi-lane serial bus link having a plurality of state transition detectors wherein powering down all the state transition detectors except one
US7706282B2 (en) 2003-06-25 2010-04-27 Leping Huang Bluetooth personal area network routing protocol optimization using connectivity metric
TWI273789B (en) 2004-02-24 2007-02-11 Via Tech Inc Method for adjusting the power consumption of a network interface
US7957428B2 (en) 2004-05-21 2011-06-07 Intel Corporation Methods and apparatuses to effect a variable-width link
US7844767B2 (en) 2004-05-21 2010-11-30 Intel Corporation Method for identifying bad lanes and exchanging width capabilities of two CSI agents connected across a link
US7313712B2 (en) 2004-05-21 2007-12-25 Intel Corporation Link power saving state
US8046488B2 (en) 2004-05-21 2011-10-25 Intel Corporation Dynamically modulating link width
US7197591B2 (en) 2004-06-30 2007-03-27 Intel Corporation Dynamic lane, voltage and frequency adjustment for serial interconnect
US7522520B2 (en) * 2004-09-03 2009-04-21 Intel Corporation Flow control credit updates for virtual channels in the Advanced Switching (AS) architecture
US7472299B2 (en) * 2005-09-30 2008-12-30 Intel Corporation Low power arbiters in interconnection routers
US7484110B2 (en) * 2006-03-16 2009-01-27 Microsoft Corporation Adaptive power management
US7660261B2 (en) 2006-11-14 2010-02-09 The Trustees Of Columbia University In The City Of New York Systems and methods for computing data transmission characteristics of a network path based on single-ended measurements
JP5233360B2 (ja) 2008-03-27 2013-07-10 富士通株式会社 メモリ制御装置,メモリ制御装置の制御方法および情報処理装置
JP5085463B2 (ja) * 2008-08-12 2012-11-28 株式会社リコー 情報転送回路、情報処理装置、情報転送回路の制御方法、制御プログラム及び記録媒体
TW201008234A (en) * 2008-08-12 2010-02-16 Acer Inc Energy-saving method for handheld Internet accessing device, the handheld Internet accessing device, and the real-time message system
US8379659B2 (en) * 2010-03-29 2013-02-19 Intel Corporation Performance and traffic aware heterogeneous interconnection network
JP5966265B2 (ja) * 2011-07-15 2016-08-10 株式会社リコー データ転送装置及び画像形成システム
US8954635B2 (en) * 2011-08-31 2015-02-10 Advanced Micro Devices, Inc. Buffer management using freelist buffers
US9385962B2 (en) * 2013-12-20 2016-07-05 Intel Corporation Method and system for flexible credit exchange within high performance fabrics

Also Published As

Publication number Publication date
EP3120216A4 (de) 2017-11-29
KR101867435B1 (ko) 2018-07-23
CN104932996A (zh) 2015-09-23
US20160259394A1 (en) 2016-09-08
RU2653306C1 (ru) 2018-05-07
EP3120216B1 (de) 2020-11-04
TWI556094B (zh) 2016-11-01
US9552045B2 (en) 2017-01-24
KR20160111464A (ko) 2016-09-26
EP3120216A1 (de) 2017-01-25
CN104932996B (zh) 2018-04-13
JP2017511529A (ja) 2017-04-20
WO2015142336A1 (en) 2015-09-24
JP6321194B2 (ja) 2018-05-09
TW201602770A (zh) 2016-01-16

Similar Documents

Publication Publication Date Title
DE112013007724B4 (de) System, vorrichtung und verfahren zur gemeinsamen benutzung von speicher und i/o-diensten zwischen knoten
DE112013007732B4 (de) System und Vorrichtung zum Bestimmen und Melden eines Fehlers auf einer Bahn
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
DE102020116195A1 (de) Leistungsmanagement für neu-treiber-vorrichtungen
DE112014006490T5 (de) Verfahren, Vorrichtung und System zur Regelung von Leistung ungenutzter Hardware einer Linkschnittstelle
DE102019129626A1 (de) Vorwärtsfehlerkorrekturmechanismus für datenübertragung über mehrspurige verbindungen
DE102020120102A1 (de) Globale dauerhafte Speicherleerung
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE102019009207B3 (de) Vorrichtungen, verfahren und nichttransitorisches computerlesbares speichermedien für dvsec für eine effiziente peripheriegeräteverwaltung
DE112017001430T5 (de) In-band-retimer-registerzugriff
DE102020125353A1 (de) Transaktionsschichtpaketformat
DE112013007726T5 (de) Verbesserungen eines Zwischenverbindungs-Retimers
DE102018006756A1 (de) Beschleuniger-Fabric
DE112017003301T5 (de) Interprozessor-Energiezustandswechsel
DE102018005753A1 (de) Serdes link training
DE112017006523T5 (de) Retimer mit kurzer latenzzeit
DE112017006557T5 (de) Bimodale phy für geringe latenz in hochgeschwindigkeitsverbindungswegen
DE112013005086T5 (de) Kohärenzprotokoll für Hochleistungszwischenverbindung
DE112016004300T5 (de) Verfahren, gerät und system zum zuweisen von cache unter verwendung einer verkehrsklasse
DE112018002466T5 (de) Umgehung der entzerrung bei niedrigeren datenraten
DE102020130978A1 (de) Seitenbandsignalisierung über vorhandene hilfsstifte einer schnittstelle
DE112017001148T5 (de) Abflachende portalbrücke .
DE112018002469T5 (de) Alternative Protokollaushandlung in einer Hochleistungskopplungsstruktur
DE112013007734T5 (de) Mehrchipgehäuseverbindung
DE102018006852A1 (de) Verfahren, Vorrichtung und System für eine ThunderBolt-basierte Anzeigetopologie für duale Grafiksysteme

Legal Events

Date Code Title Description
R012 Request for examination validly filed