DE112018002466T5 - Umgehung der entzerrung bei niedrigeren datenraten - Google Patents

Umgehung der entzerrung bei niedrigeren datenraten Download PDF

Info

Publication number
DE112018002466T5
DE112018002466T5 DE112018002466.0T DE112018002466T DE112018002466T5 DE 112018002466 T5 DE112018002466 T5 DE 112018002466T5 DE 112018002466 T DE112018002466 T DE 112018002466T DE 112018002466 T5 DE112018002466 T5 DE 112018002466T5
Authority
DE
Germany
Prior art keywords
connection
equalization
data rate
data rates
logic
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
DE112018002466.0T
Other languages
English (en)
Inventor
Debendra Das Sharma
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 DE112018002466T5 publication Critical patent/DE112018002466T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L25/00Baseband systems
    • H04L25/02Details ; arrangements for supplying electrical power along data transmission lines
    • H04L25/03Shaping networks in transmitter or receiver, e.g. adaptive shaping networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L27/00Modulated-carrier systems
    • H04L27/01Equalisers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Information Transfer Systems (AREA)

Abstract

Ein Port einer Computervorrichtung soll eine Verbindung zu einer anderen Vorrichtung üder eine Verbindung herstellen und eine Entzerrungslogik verwenden, um eine Entzerrung der Verbindung mit mehreren unterschiedlichen Datenraten durchzuführen. Die Entzerrungslogik kann identifizieren, dass die andere Vorrichtung das Umgehen eines sequentiellen Entzerrungsmodus unterstützt, kann eine von den Vorrichtungen auf der Verbindung unterstützte maximale Datenrate bestimmen und kann an der Entzerrung der Verbindung mit der maximal unterstützten Datenrate teilnehmen, bevor die Verbindung mit einer oder mehreren anderen Datenraten niedriger als die maximal unterstützte Datenrate in der Vielzahl von Datenraten entzerrt wird.

Description

  • VERWANDTE ANMELDUNGEN
  • Diese Anmeldung beansprucht die Priorität der US-Patentanmeldung mit der Seriennummer 15/721,518 , eingereicht am 29. September 2017 mit dem Titel BYPASSING EQUALIZATION AT LOWER DATA RATES, wobei diese Anmeldung die Priorität der vorläufigen US-Patentanmeldung mit der Seriennummer 62/505,619 beansprucht, eingereicht am 12. Mai 2017. Auf die Offenbarungen der früheren Anmeldungen wird hiermit in vollem Umfang Bezug genommen.
  • GEBIET
  • Diese Offenbarung betrifft ein Computersystem und insbesondere (aber nicht ausschließlich) Punkt-zu-Punkt-Verbindungen.
  • STAND DER TECHNIK
  • Fortschritte in der Halbleiterverarbeitung und im Logikdesign haben eine Erhöhung des Anteils an Logik ermöglicht, der in integrierten Schaltkreisvorrichtungen vorhanden sein kann. Folglich haben sich Computersystemkonfigurationen von einer einzelnen oder mehreren integrierten Schaltungen in einem System zu mehreren Kernen, mehreren Hardware-Threads und mehreren logischen Prozessoren entwickelt, die auf einzelnen integrierten Schaltungen vorhanden sind, sowie zu anderen in solchen Prozessoren integrierten Schnittstellen. Ein Prozessor oder eine integrierte Schaltung umfasst typischerweise einen einzelnen physischen Prozessorchip, wobei der Prozessorchip eine beliebige Anzahl von Kernen, Hardware-Threads, logischen Prozessoren, Schnittstellen, Speichern, Controller-Hubs usw. umfassen kann.
  • Infolge der größeren Fähigkeit, mehr Verarbeitungsleistung in kleinere Pakete einzupassen, haben kleinere Computergeräte an Popularität zugenommen. Smartphones, Tablets, ultradünne Notebooks und andere Benutzergeräte sind exponentiell gewachsen. Diese kleineren Vorrichtungen sind jedoch sowohl für die Datenspeicherung als auch für die komplexe Verarbeitung, die den Formfaktor überschreitet, auf Server angewiesen. Infolgedessen hat auch die Nachfrage auf dem Hochleistungsrechnermarkt (d. h. Serverraum) zugenommen. Beispielsweise gibt es in modernen Servern in der Regel nicht nur einen einzelnen Prozessor mit mehreren Kernen, sondern auch mehrere physische Prozessoren (auch als mehrere Sockets bezeichnet), um die Rechenleistung zu erhöhen. Aber so wie die Verarbeitungsleistung mit der Anzahl der Vorrichtungen in einem Computersystem wächst, wird die Kommunikation zwischen Sockets und anderen Vorrichtungen kritischer.
  • Tatsächlich sind Verbindungen von traditionelleren Mehrpunktbussen, die hauptsächlich die elektrische Kommunikation handhabten, inzwischen zu vollständigen Verbindungsarchitekturen gewachsen, die eine schnelle Kommunikation ermöglichen. Da die Nachfrage nach zukünftigen Prozessoren, die noch höhere Datenraten verbrauchen, steigt, steigt auch der entsprechende Bedarf an die Fähigkeiten bestehender Verbindungsarchitekturen.
  • Figurenliste
    • 1 zeigt eine Ausführungsform eines Computersystems mit einer Verbindungsarchitektur.
    • 2 zeigt eine Ausführungsform einer Verbindungsarchitektur mit einem Schichtstapel.
    • 3 zeigt eine Ausführungsform einer Anforderung oder eines Pakets, die bzw. das innerhalb einer Verbindungsarchitektur erzeugt oder empfangen werden soll.
    • 4 zeigt eine Ausführungsform eines Sender- und Empfängerpaares für eine Verbindungsarchitektur.
    • 5 zeigt ein vereinfachtes Blockdiagramm eines beispielhaften Systems.
    • 6 ist ein Diagramm, das beispielhafte Vorrichtungen darstellt, die unter Verwendung einer Verbindung verbunden sind.
    • 7 ist ein Diagramm, das Datenraten darstellt, die in einer beispielhaften Verbindungsprotokoll definiert sind.
    • 8 ist ein Diagramm, das eine beispielhafte Verbindungstrainingszustandsmaschine darstellt.
    • 9 ist ein beispielhaftes Flussdiagramm, das die sequentielle Entzerrung einer Verbindung darstellt.
    • 10 ist ein beispielhaftes Flussdiagramm, das eine beispielhafte Technik zum Umgehen von Zwischendatenraten während der Entzerrung darstellt.
    • 11 zeigt eine Darstellung eines beispielhaften geordneten Satzes.
    • 12A - 12B veranschaulichen vereinfachte Blockdiagramme von beispielhaften Verbindungen, die eine oder mehrere Erweiterungsvorrichtungen aufweisen.
    • 13 zeigt eine Ausführungsform eines Blockdiagramms für ein Computersystem mit einem Mehrkernprozessor.
    • 14 zeigt eine weitere Ausführungsform eines Blockdiagramms für ein Computersystem mit einem Mehrkernprozessor.
    • 15 zeigt eine Ausführungsform eines Blockdiagramms für einen Prozessor.
    • 16 zeigt eine weitere Ausführungsform eines Blockdiagramms für ein Computersystem mit einem Prozessor.
    • 17 zeigt eine Ausführungsform eines Blocks für ein Computersystem mit mehreren Prozessoren.
    • 18 zeigt ein beispielhaftes System, das als System-on-Chip (SoC) implementiert ist.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Details dargelegt, wie beispielsweise Beispiele spezifischer Typen von Prozessoren und Systemkonfigurationen, spezifischer Hardwarestrukturen, spezifischer Architektur- und Mikroarchitekturdetails, spezifischer Registerkonfigurationen, spezifischer Befehlstypen, spezifischer Systemkomponenten, spezifischer Messungen/Höhen, spezifischer Prozessor-Pipeline-Stufen und Operationen usw., um ein gründliches Verständnis der vorliegenden Erfindung zu ermöglichen. Für den Fachmann ist es jedoch offensichtlich, dass diese spezifischen Details nicht verwendet werden müssen, um die vorliegende Erfindung auszuführen. In anderen Fällen werden wohlbekannte Komponenten oder Verfahren, wie spezifische und alternative Prozessorarchitekturen, spezifische Logikschaltungen/Codes für beschriebene Algorithmen, spezifische Firmware-Codes, spezifische Verbindungsoperationen, spezifische Logikkonfigurationen, spezifische Herstellungstechniken und -materialien, spezifische Compiler-Implementierungen, spezifischer Ausdruck von Algorithmen in Code, spezifische(r) Abschalt- und Gate-Steuerungstechniken/-logik und andere spezifische betriebliche Details des Computersystems nicht im Detail beschrieben, um zu vermeiden, dass die vorliegende Erfindung unnötig verschleiert wird.
  • Obwohl die folgenden Ausführungsformen unter Bezugnahme auf Energieeinsparung und Energieeffizienz in spezifischen integrierten Schaltkreisen, wie beispielsweise in Computerplattformen oder Mikroprozessoren, beschrieben werden können, sind andere Ausführungsformen auf andere Arten von integrierten Schaltkreisen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren der hier beschriebenen Ausführungsformen können auf andere Arten von Schaltungen oder Halbleitervorrichtungen angewendet werden, die ebenfalls von einer besseren Energieeffizienz und Energieeinsparung profitieren können. Beispielsweise sind die offenbarten Ausführungsformen nicht auf Desktop-Computersysteme oder UltrabooksTM beschränkt und können auch in anderen Vorrichtungen wie Handheld-Vorrichtungen, Tablets, andere dünne Notebooks, SOC-Vorrichtungen (Systems on a Chip) und eingebettete Anwendungen verwendet werden. Einige Beispiele für Handheld-Vorrichtungen umfassen Mobiltelefone, Internetprotokollgeräte, Digitalkameras, PDAs (Personal Digital Assistants) und Handheld-PCs. Eingebettete Anwendungen umfassen in der Regel einen Mikrocontroller, einen digitalen Signalprozessor (DSP), ein System auf einem Chip, Netzwerkcomputer (NetPC), Set-Top-Boxen, Netzwerk-Hubs, WAN-Switches (Wide Area Network) oder jedes andere System, das die unten gelehrten Funktionen und Operationen erbringen kann. Darüber hinaus sind die hier beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physische Rechenvorrichtungen beschränkt, sondern können sich auch auf Softwareoptimierungen zur Energieeinsparung und -effizienz beziehen. Wie aus der nachstehenden Beschreibung ohne weiteres ersichtlich wird, sind die hier beschriebenen Ausführungsformen von Verfahren, Vorrichtungen und Systemen (ob in Bezug auf Hardware, Firmware, Software oder eine Kombination davon) für eine mit Leistungsüberlegungen abgeglichene Zukunft einer ‚grünen Technologie‘ von entscheidender Bedeutung.
  • Mit dem Fortschritt der Computersysteme werden die darin enthaltenen Komponenten immer komplexer. Infolgedessen nimmt auch die Komplexität der Verbindungsarchitektur zum Koppeln und Kommunizieren zwischen den Komponenten zu, um sicherzustellen, dass die Bandbreitenanforderungen für einen optimalen Komponentenbetrieb erfüllt werden. Darüber hinaus erfordern verschiedene Marktsegmente unterschiedliche Aspekte von Verbindungsarchitekturen, um den Anforderungen des Marktes zu entsprechen. Beispielsweise erfordern Server eine höhere Leistung, während das mobile Systemumfeld manchmal in der Lage ist, Gesamtleistung für Energieeinsparungen abzutauschen. Dennoch ist es ein einzigartiger Zweck der meisten Strukturen, höchstmögliche Leistung bei maximaler Energieeinsparung zu erzielen. Nachfolgend wird eine Anzahl von Verbindungen erläutert, die potentiell von den hier beschriebenen Aspekten der Erfindung profitieren würden.
  • Eine Verbindungsstrukturarchitektur umfasst die Periphere Komponenten (PCI) Express (PCIe) - Architektur. Ein primäres Ziel von PCIe ist es, die Zusammenarbeit von Komponenten und Vorrichtungen verschiedener Hersteller in einer offenen Architektur zu ermöglichen, die sich über mehrere Marktsegmente erstreckt. Clients (Desktops und Mobilgeräte), Server (Standard und Enterprise) sowie Embedded- und Kommunikationsgeräte. PCI Express ist eine leistungsstarke, universelle I/O-Verbindung, die für eine Vielzahl zukünftiger Computer- und Kommunikationsplattformen definiert ist. Einige PCI-Attribute, wie ihr Nutzungsmodell, ihre Load-Store-Architektur und ihre Softwareschnittstellen, wurden durch die Überarbeitung beibehalten, während frühere Implementierungen von Parallelbussen durch eine hoch skalierbare, vollständig serielle Schnittstelle ersetzt wurden. Die neueren Versionen von PCI Express nutzen die Fortschritte bei Punkt-zu-Punkt-Verbindungen, bei der Switch-basierten Technologie und dem paketierten Protokoll, um neue Leistungsniveaus und Funktionen bereitzustellen. Energieverwaltung, Quality of Service (QoS), Hot-Plug/Hot-Swap-Unterstützung, Datenintegrität und Fehlerbehandlung gehören zu den erweiterten Funktionen, die von PCI Express unterstützt werden.
  • Unter Bezugnahme auf 1 ist eine Ausführungsform einer Struktur aus Punkt-zu-Punkt-Verbindungen, die eine Reihe von Komponenten miteinander verbinden, dargestellt. Das System 100 enthält einen Prozessor 105 und einen Systemspeicher 110, die mit dem Controller-Hub 115 verbunden sind. Der Prozessor 105 weist ein beliebiges Verarbeitungselement, wie beispielsweise einen Mikroprozessor, einen Host-Prozessor, einen eingebetteten Prozessor, einen Coprozessor oder einen anderen Prozessor auf. Der Prozessor 105 ist über den Front-Side-Bus (FSB) 106 mit dem Controller-Hub 115 verbunden. In einer Ausführungsform ist der FSB 106 eine serielle Punkt-zu-Punkt-Verbindung, wie nachstehend beschrieben. In einer anderen Ausführungsform umfasst die Verbindung 106 eine serielle, differentielle Verbindungsarchitektur, die mit einem anderen Verbindungsstandard kompatibel ist. In einigen Implementierungen kann das System neben anderen beispielhaften Merkmalen eine Logik zum Implementieren mehrerer Protokollstapel und eine weitere Logik zum Aushandeln alternativer Protokolle, die auf einer gemeinsamen physischen Schicht ausgeführt werden sollen, aufweisen.
  • Der Systemspeicher 110 umfasst eine beliebige Speichervorrichtung, wie einen Direktzugriffsspeicher (RAM), einen nichtflüchtigen Speicher (NV) oder einen anderen Speicher, auf welchen Vorrichtungen im System zugreifen können. Der Systemspeicher 110 ist über die Speicherschnittstelle 116 mit dem Controller-Hub 115 verbunden. Beispiele für eine Speicherschnittstelle umfassen eine DDR-Speicherschnittstelle (Double Data Rate), eine DDR-Speicherschnittstelle mit zwei Kanälen und eine DRAM-Speicherschnittstelle (Dynamic RAM).
  • In einer Ausführungsform ist der Controller-Hub 115 ein Root-Hub, ein Root-Komplex oder ein Root-Controller in einer Verbindungshierarchie von Peripheral Component Interconnect Express (PCIe oder PCIE). Beispiele für den Controller-Hub 115 umfassen einen Chipsatz, einen Speicher-Controller-Hub (MCH), eine Northbridge, einen Interconnect-Controller-Hub (ICH), eine Southbridge und einen Root-Controller/Hub. Häufig bezieht sich der Begriff Chipsatz auf zwei physisch getrennte Controller-Hubs, d. h. einen Speichercontroller-Hub (MCH), der mit einem Interconnect-Controller-Hub (ICH) gekoppelt ist. Es ist zu beachten, dass aktuelle Systeme häufig den in den Prozessor 105 integrierten MCH enthalten, während der Controller 115 auf ähnliche Weise, wie nachstehend beschrieben, mit I/O-Vorrichtungen kommunizieren soll. In einigen Ausführungsformen wird das Peer-to-Peer-Routing optional durch den Root-Komplex 115 unterstützt.
  • Hier ist der Controller-Hub 115 über eine serielle Verbindung 119 mit dem Switch/der Brücke 120 verbunden. Die Eingabe-/Ausgabemodule 117 und 121, die auch als Schnittstellen/Ports 117 und 121 bezeichnet werden können, umfassen/implementieren einen geschichteten Protokollstapel, um eine Kommunikation zwischen dem Controller-Hub 115 und dem Switch 120 bereitzustellen. In einer Ausführungsform sind mehrere Vorrichtungen in der Lage mit dem Schalter 120 gekoppelt zu sein.
  • Der/Die Schalter/Brücke 120 leitet Pakete/Nachrichten von der Vorrichtung 125 stromaufwärts, d. h. einer Hierarchie hinauf zu einem Root-Komplex, zu dem Controller-Hub 115 und stromabwärts, d. h. eine Hierarchie weg von einem Root-Controller, von dem Prozessor 105 oder dem Systemspeicher 110 zu Vorrichtung 125. In einer Ausführungsform wird der Schalter 120 als logische Baugruppe mehrerer virtueller PCI-zu-PCI-Bridge-Vorrichtungen bezeichnet. Die Vorrichtung 125 umfasst ein beliebiges internes oder externes Gerät oder eine Komponente, die mit einem elektronischen System verbunden werden soll, wie beispielsweise ein I/O-Gerät, eine Netzwerkschnittstellensteuerung (Network Interface Controller, NIC), eine Zusatzkarte, einen Audioprozessor, einen Netzwerkprozessor, ein Festplattenlaufwerk, eine Speichervorrichtung, CD/DVD-ROM, einen Monitor, einen Drucker, eine Maus, eine Tastatur, einen Router, eine tragbare Speichervorrichtung, ein Firewire-Gerät, ein USB-Gerät (Universal Serial Bus), einen Scanner und andere Eingabe-/Ausgabegeräte. In der PCIe-Umgangssprache wird ein Gerät häufig als Endpunkt bezeichnet. Obwohl nicht speziell gezeigt, kann die Vorrichtung 125 eine PCIezu-PCI/PCI-X-Brücke aufweisen, um ältere oder andere PCI-Vorrichtungen zu unterstützen. Endpunktgeräte in PCIe werden häufig als integrierte Legacy-, PCIe- oder Root-Endpunkte klassifiziert.
  • Der Grafikbeschleuniger 130 ist auch über die serielle Verbindung 132 mit dem Controller-Hub 115 verbunden. In einer Ausführungsform ist der Grafikbeschleuniger 130 mit einem MCH verbunden, der mit einem ICH verbunden ist. Der Schalter 120 und dementsprechend die I/O-Vorrichtung 125 ist dann mit dem ICH verbunden. Die I/O-Module 131 und 118 sollen auch einen geschichteten Protokollstapel implementieren, um zwischen dem Grafikbeschleuniger 130 und dem Controller-Hub 115 zu kommunizieren. Ähnlich wie bei der obigen MCH-Diskussion kann ein Grafikcontroller oder der Grafikbeschleuniger 130 selbst in den Prozessor 105 integriert sein. Ferner können eine oder mehrere Verbindungen (z. B. 123) des Systems eine oder mehrere Erweiterungsvorrichtungen (z. B. 150) wie Retimer, Repeater usw. aufweisen.
  • Mit Bezugnahme auf 2 ist eine Ausführungsform eines geschichteten Protokollstapels dargestellt. Der geschichtete Protokollstapel 200 enthält eine beliebige Form eines geschichteten Kommunikationsstapels, wie beispielsweise einen Quick Path Interconnect (QPI) -Stapel, einen PCIe-Stapel, einen Hochleistungs-Computing-Interconnect-Stapel der nächsten Generation oder einen anderen geschichteten Stapel. Obwohl die unmittelbar folgende Diskussion unter Bezugnahme auf die 1 - 4 sich auf einen PCIe-Stapel bezieht, können die gleichen Konzepte auf andere Verbindungsstapel angewendet werden. In einer Ausführungsform ist der Protokollstapel 200 ein PCIe-Protokollstapel, der die Transaktionsschicht 205, die Verbindungsschicht 210 und die physische Schicht 220 aufweist. Die Darstellung als Kommunikationsprotokollstapel kann auch als Modul oder Schnittstelle bezeichnet werden, die einen Protokollstapel implementiert/umfasst.
  • PCI Express verwendet Pakete, um Informationen zwischen Komponenten zu kommunizieren. Pakete werden in der Transaktionsschicht 205 und der Datenverbindungsschicht 210 gebildet, um die Information von der sendenden Komponente zur empfangenden Komponente zu übertragen. Während die übertragenen Pakete durch die anderen Schichten fließen, werden sie mit zusätzlichen Informationen erweitert, die zur Verarbeitung von Paketen in diesen Schichten erforderlich sind. Auf der Empfangsseite erfolgt der umgekehrte Prozess, und Pakete werden von ihrer Darstellung auf der physischen Schicht 220 in die Darstellung auf der Datenverbindungsschicht 210 und schließlich (für Transaktionsschichtpakete) in die Form umgewandelt, die von der Transaktionsschicht 205 der Empfangsvorrichtung verarbeitet werden kann.
  • Transaktionsschicht
  • In einer Ausführungsform soll die Transaktionsschicht 205 eine Schnittstelle zwischen dem Verarbeitungskern einer Vorrichtung und der Verbindungsarchitektur, wie der Datenverbindungsschicht 210 und der physischen Schicht 220, bereitstellen. In dieser Hinsicht ist eine Hauptverantwortung der Transaktionsschicht 205 das Zusammenstellen und Zerlegen von Paketen (d. h. von Transaktionsschichtpaketen oder TLPs). Die Übersetzungsschicht 205 verwaltet typischerweise die kreditbasierte Flusssteuerung für TLPs. PCIe implementiert geteilte Transaktionen, d. h. Transaktionen, bei denen Anforderung und Antwort durch Zeit getrennt sind, wodurch eine Verbindung anderen Verkehr transportieren kann, während das Zielgerät Daten für die Antwort sammelt.
  • Zusätzlich setzt PCIe eine kreditbasierte Flusskontrolle ein. In diesem Schema kündigt eine Vorrichtung einen anfänglichen Kreditbetrag für jeden der Empfangspuffer in der Transaktionsschicht 205 an. Ein externe Vorrichtung am gegenüberliegenden Ende der Verbindung, wie der Controller-Hub 115 in 1, zählt die Anzahl der von jedem TLP verbrauchten Kredite. Eine Transaktion kann übertragen werden, wenn die Transaktion ein Kreditlimit nicht überschreitet. Nach Erhalt einer Antwort wird der Kreditbetrag wiederhergestellt. Ein Vorteil eines Kreditschemas besteht darin, dass die Latenz der Kreditgutschrift die Leistung nicht beeinträchtigt, sofern das Kreditlimit nicht erreicht wird.
  • In einer Ausführungsform umfassen vier Transaktionsadressräume einen Konfigurationsadressraum, einen Speicheradressraum, einen Eingabe-/Ausgabeadressraum und einen Nachrichtenadressraum. Speicherplatztransaktionen umfassen eine oder mehrere Leseanforderungen und Schreibanforderungen zum Übertragen von Daten zu/von einem Speicherort mit Speicherzuordnung. In einer Ausführungsform können Speicherplatztransaktionen zwei verschiedene Adressformate verwenden, z. B. ein kurzes Adressformat wie eine 32-Bit-Adresse oder ein langes Adressformat wie eine 64-Bit-Adresse. Konfigurationsraumtransaktionen werden verwendet, um auf den Konfigurationsraum der PCIe-Vorrichtungen zuzugreifen. Transaktionen in den Konfigurationsraum umfassen Leseanforderungen und Schreibanforderungen. Nachrichtenraumtransaktionen (oder einfach Nachrichten) werden definiert, um die In-Band-Kommunikation zwischen PCIe-Agenten zu unterstützen.
  • Daher setzt in einer Ausführungsform die Transaktionsschicht 205 einen Paket-Header/Payload 206 zusammen. Das Format für aktuelle Paket-Headers/Payloads kann in der PCIe-Spezifikation auf der PCIe-Spezifikationswebsite gefunden werden.
  • Unter kurzer Bezugnahme auf 3 ist eine Ausführungsform eines PCIe-Transaktionsdeskriptors dargestellt. In einer Ausführungsform ist der Transaktionsdeskriptor 300 ein Mechanismus zum Übertragen von Transaktionsinformationen. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 300 die Identifizierung von Transaktionen in einem System. Andere mögliche Verwendungen umfassen das Verfolgen von Änderungen der Standardtransaktionsreihenfolge und die Zuordnung von Transaktionen zu Kanälen.
  • Der Transaktionsdeskriptor 300 umfasst ein globales Identifizierungsfeld 302, ein Attributfeld 304 und ein Kanalidentifizierungsfeld 306. In dem dargestellten Beispiel ist das globale Identifizierungsfeld 302 so dargestellt, dass es das lokale Transaktionsidentifizierungsfeld 308 und das Quellenidentifizierungsfeld 310 umfasst. In einer Ausführungsform ist das globale Transaktionsidentifizierungsfeld 302 für alle ausstehenden Anforderungen eindeutig.
  • Gemäß einer Implementierung ist das lokale Transaktionsidentifikationsfeld 308 ein Feld, das von einem anfordernden Agenten generiert wird, und es ist für alle ausstehenden Anforderungen eindeutig, für die ein Abschluss für diesen anfordernden Agenten erforderlich ist. Darüber hinaus identifiziert in diesem Beispiel der Quellenidentifizierer 310 den anfordernden Agenten innerhalb einer PCIe-Hierarchie eindeutig. Zusammen mit der Quellen-ID 310 stellt das Feld der lokalen Transaktionskennung 308 dementsprechend eine globale Identifikation einer Transaktion innerhalb einer Hierarchiedomäne bereit.
  • Das Attributfeld 304 spezifiziert Eigenschaften und Beziehungen der Transaktion. In dieser Hinsicht wird das Attributfeld 304 möglicherweise verwendet, um zusätzliche Informationen bereitzustellen, die eine Änderung der Standardbehandlung von Transaktionen ermöglichen. In einer Ausführungsform enthält das Attributfeld 304 ein Prioritätsfeld 312, ein reserviertes Feld 314, ein Sortierungsfeld 316 und ein No-Snoop-Feld 318. Hier kann das Prioritätsunterfeld 312 von einem Initiator modifiziert werden, um der Transaktion eine Priorität zuzuweisen. Das reservierte Attributfeld 314 bleibt für die Zukunft oder für eine herstellerdefinierte Verwendung reserviert. Mögliche Nutzungsmodelle unter Verwendung von Prioritäts- oder Sicherheitsattributen können unter Verwendung des reservierten Attributfeldes implementiert werden.
  • In diesem Beispiel wird das Sortierungsattributfeld 316 verwendet, um optionale Informationen über die Art der Sortierung zu liefern, welche die Standardsortierungsregeln ändern können. Gemäß einer beispielhaften Implementierung gilt ein Sortierungsattribut von ‚0‘, das die Standardsortierungsregeln bezeichnet, wobei ein Sortierungsattribut von ‚1‘ die entspannte Reihenfolge bezeichnet, wobei Schreibvorgänge Schreibvorgänge in derselben Richtung durchlaufen können und Leseabschlüsse Schreibvorgänge derselben Richtung durchlaufen können. Das Snoop-Attributfeld 318 wird verwendet, um zu bestimmen, ob Transaktionen abgehört werden. Wie gezeigt, identifiziert das Kanal-ID-Feld 306 einen Kanal, dem eine Transaktion zugeordnet ist.
  • Verbindungsschicht
  • Die Verbindungsschicht 210, die auch als Datenverbindungsschicht 210 bezeichnet wird, fungiert als eine Zwischenstufe zwischen der Transaktionsschicht 205 und der physischen Schicht 220. In einer Ausführungsform stellt eine Verantwortlichkeit der Datenverbindungsschicht 210 einen zuverlässigen Mechanismus für den Austausch von Transaction-Layer-Packets (TLPs) zwischen zwei Komponenten einer Verbindung bereit. Eine Seite der Datenverbindungsschicht 210 akzeptiert TLPs, die von der Transaktionsschicht 205 zusammengestellt wurden, wendet die Paketsequenzkennung 211 an, d. h. eine Identifikationsnummer oder Paketnummer, berechnet und wendet einen Fehlererkennungscode an, d. h. CRC 212, und übermittelt die modifizierten TLPs an die Physische Schicht 220 zur Übertragung über eine physische Vorrichtung zu einer externen Vorrichtung.
  • Physische Schicht
  • In einer Ausführungsform umfasst die physische Schicht 220 einen logischen Unterblock 221 und einen elektrischen Unterblock 222, um ein Paket physisch an ein externes Gerät zu übertragen. Hier ist der logische Unterblock 221 für die ‚digitalen‘ Funktionen der physischen Schicht 221 verantwortlich. In dieser Hinsicht umfasst der logische Unterblock einen Sendeabschnitt, um ausgehende Informationen zur Übertragung durch den physischen Unterblock 222 vorzubereiten, und einen Empfangsabschnitt, um empfangene Informationen zu identifizieren und vorzubereiten, bevor sie an die Verbindungsschicht 210 weitergeleitet werden.
  • Der physische Block 222 weist einen Sender und einen Empfänger auf. Der Sender wird vom logischen Unterblock 221 mit Symbolen versorgt, die der Sender serialisiert und an ein externes Gerät überträgt. Der Empfänger wird von einem externen Gerät mit serialisierten Symbolen versorgt und wandelt die empfangenen Signale in einen Bitstrom um. Der Bitstrom wird de-serialisiert und dem logischen Unterblock 221 zugeführt. In einer Ausführungsform wird ein 8b/10b-Übertragungscode verwendet, wo Zehn-Bit-Symbole gesendet/empfangen werden. Hier werden spezielle Symbole verwendet, um ein Paket mit den Rahmen 223 einzurahmen. Zusätzlich stellt der Empfänger in einem Beispiel auch einen Symboltakt bereit, der aus dem eingehenden seriellen Strom wiederhergestellt wird.
  • Wie oben angegeben, ist, obwohl Transaktionsschicht 205, Verbindungsschicht 210 und physische Schicht 220 unter Bezugnahme auf eine spezifische Ausführungsform eines PCIe-Protokollstapels erörtert werden, ein geschichteter Protokollstapel nicht darauf beschränkt. Tatsächlich kann ein beliebiges Schichtprotokoll enthalten/implementiert sein. Als ein Beispiel umfasst ein Port/eine Schnittstelle, die als ein geschichtetes Protokoll dargestellt wird: (1) eine erste Schicht zum Zusammenstellen von Paketen, d. h. eine Transaktionsschicht; eine zweite Schicht zum Sequenzieren von Paketen, d. h. eine Verbindungsschicht; und eine dritte Schicht zum Übertragen der Pakete, d. h. eine physische Schicht. Als spezielles Beispiel wird ein Common Standard Interface (CSI) Layered Protocol verwendet.
  • Unter Bezugnahme auf 4 ist eine Ausführungsform einer seriellen Punkt-zu-Punkt-Struktur von PCIe dargestellt. Obwohl eine Ausführungsform einer seriellen Punkt-zu-Punkt-Verbindung von PCIe dargestellt ist, ist eine serielle Punkt-zu-Punkt-Verbindung nicht darauf beschränkt, da sie irgendeinen Übertragungsweg zum Übertragen serieller Daten aufweist. In der gezeigten Ausführungsform weist eine Basis-PCIe-Verbindung zwei differentiell angesteuerte Niederspannungs-Signalpaare auf: ein Sendepaar 406/411 und ein Empfangspaar 412/407. Dementsprechend umfasst die Vorrichtung 405 eine Übertragungslogik 406 zum Übertragen von Daten an die Vorrichtung 410 und eine Empfangslogik 407 zum Empfangen von Daten von der Vorrichtung 410. Mit anderen Worten, zwei Übertragungspfade, d. h. Pfade 416 und 417, und zwei Empfangspfade, d. h. Pfade 418 und 419, sind in einer PCIe-Verbindung umfasst.
  • Ein Übertragungspfad bezieht sich auf einen beliebigen Pfad zum Übertragen von Daten, wie beispielsweise eine Übertragungsleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarot-Kommunikationsverbindung oder einen anderen Kommunikationspfad. Eine Verbindung zwischen zwei Vorrichtungen, wie z. B. Vorrichtung 405 und Vorrichtung 410, wird als Verbindung, wie z. B. Verbindung 415, bezeichnet. Eine Verbindung kann eine Spur unterstützen - wobei jede Spur einen Satz von Differenzsignalpaaren darstellt (ein Paar für die Übertragung, ein Paar für den Empfang). Um die Bandbreite zu skalieren, kann eine Verbindung mehrere mit xN bezeichnete Spuren zusammenfassen, wobei N eine unterstützte Verbindungsbreite ist, beispielsweise 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
  • Ein Differenzpaar bezieht sich auf zwei Übertragungswege, wie beispielsweise die Leitungen 416 und 417, um Differenzsignale zu übertragen. Wenn beispielsweise die Leitung 416 von einem niedrigen Spannungspegel auf einen hohen Spannungspegel, d. h. eine ansteigende Flanke, umschaltet, steuert die Leitung 417 von einem hohen Logikpegel auf einen niedrigen Logikpegel um, d. h. eine abfallende Flanke. Differenzsignale weisen potentiell bessere elektrische Eigenschaften wie bessere Signalintegrität, d. h. Kreuzkopplung, Spannungsüberschreitung/- unterschreitung, Einschwingen usw., auf. Dies ermöglicht ein besseres Zeitfenster, das schnellere Übertragungsfrequenzen ermöglicht.
  • In einigen Implementierungen können eine Hochleistungsverbindung und ein entsprechendes Verbindungsprotokoll (z. B. eine PCIe-basierte Verbindung der nächsten Generation) bereitgestellt werden, die in der Lage sind, mit hohen Geschwindigkeiten wie 25 GT/s und/oder 32 GT/s zu arbeiten. In einem Beispiel können zwei Geschwindigkeiten für die Hochleistungsverbindung definiert werden, eine bei 25 GT/s und 32 GT/s, basierend auf den für den Kanal bestimmten Eigenschaften (z. B. während des Verbindungstrainings). In einer Implementierung kann die Verbindung mit vorhandenen PCIe-Generationen und Geschwindigkeiten, die für diese Generationen bereitgestellt werden (z. B. 8 GT/s, 16 GT/s usw.), abwärtskompatibel sein.
  • Es können Systeme bereitgestellt werden, die verschiedene Protokolle über Pins und physische Schicht (oder PHY) ausführen, die gemäß einem anderen Protokoll definiert sind. Beispielsweise können verschiedene Nicht-PCIe-Protokolle (z. B. Ethernet, Infiniband, Universal Serial Bus und andere bekannte, zukünftige und/oder proprietäre Protokolle) auf einer physischen PCIe-Schicht (z. B. Pins und logische PHY) ausgeführt werden und diese verwenden. Solche Implementierungen können zum Beispiel bereitgestellt werden, um einen weiten Bereich von Anwendungen zu unterstützen. Solche Anwendungen können zum Beispiel Rechenzentrumsanwendungen umfassen, einschließlich Beschleuniger mit Kohärenz- und Speichersemantik, Speicher-Disaggregation und -Pooling mit Speichersemantik, intelligente I/O-Vorrichtungen und FPGA(Field Programmable Array)-basierte Vorrichtungen. Die PHY, wie z. B. eine PCIe-PHY, kann ausgewählt und für andere Protokolle genutzt werden (z. B. die höheren Schichten dieser anderen Protokollstapel, einschließlich solcher höheren Schichten wie Verbindungsschichten, Transaktionsschichten, Protokollschichten usw.) auf der Grundlage dessen, dass die PHY unter anderen Vorteilen die Vorteile eines etablierten, weit verbreiteten Interconnect-Ökosystems bietet, einschließlich des Überflusses an stromverbrauchsarmen/mit niedriger Latenz ausgestatteten IP-Datenverarbeitungsblöcken (im geistigen Eigentum des Entwicklers) und BFMs (Bus Functional Models), nach unten kompatiblen Geschwindigkeits-Upgrades, eines robusten Compliance-Programms, einer Vielzahl von Anschlusstopologien (z. B. CEM, SFF 8639, M.2, Kabel usw.), variablen Breiten, partitionierbaren Verbindungen für Flexibilität, eines etablierten Kanalmodells gemeinsam mit Kanalerweiterungen wie Retimer. Beispielsweise kann die PHY die Möglichkeit schaffen, die Wahl entweder des nativen Protokolls (z. B. PCIe) oder des Beschleunigerslots anzubieten, ohne Überversorgung von Pins auf dem Paket oder von Slots auf der Leiterplatte für dedizierte proprietäre Protokolle (z. B. versus) PCIe, was potenzielle Verwirrung bei Kunden verursachen kann.
  • In einigen beispielhaften Systemen kann eine Buslogik (z. B. implementiert in einer Schaltung (oder einer anderen Hardware), Firmware und/oder Software) bereitgestellt werden, die eine bestimmte physische Schicht eines ersten Protokolls und die übergeordneten Schichten für mehrere verschiedene Protokolle implementiert, die jeweils auf der physischen Schicht des ersten Protokolls daraufgesetzt ausgeführt werden können. Diese mehreren unterschiedlichen Protokolle können das erste Protokoll enthalten, wobei die Buslogik den gesamten Protokollstapel des ersten Protokolls unterstützt. In einem Beispiel kann es die Buslogik ermöglichen, dass diese mehreren unterschiedlichen Protokolle dynamisch über die gemeinsame PHY gemultiplext werden.
  • In einer Implementierung kann die Buslogik eine PCIe PHY (z. B. PCIe Gen 5.0 PHY) verwenden und nicht nur native PCIe-Protokolle unterstützen, sondern auch ein oder mehrere zusätzliche Protokolle (die auf dem PCIe PHY ausgeführt werden), darunter unter anderem Kohärenz-, Speicher- und I/O-Protokolle. Beispielsweise kann, wie in dem vereinfachten Blockdiagramm 500 von 5 gezeigt, eine Vorrichtung 505 bereitgestellt werden, die einen Prozessor 510 mit einem oder mehreren Prozessorkernen 515 und einer Buslogik 518 zum Implementieren einer gemeinsamen PHY (eines ersten Protokolls) umfasst, auf der zwei oder mehr verschiedene Protokollstapel 520, 525 auf höherer Ebene usw. (z. B. Verbindungsschicht und höher) ausgeführt werden können. Beispielsweise kann die gemeinsame PHY gemäß einem Basisprotokoll implementiert werden, und einer der Verbindungsprotokollstapel (z. B. 520) kann eine Logik zum Implementieren der verbleibenden Schichten des Basisprotokolls enthalten. Zusätzliche Verbindungsprotokollstapel (z. B. 525) können gemäß einem anderen, unterschiedlichen Protokoll bereitgestellt werden. Eine Multiplexerlogik (z. B. implementiert in einer Schaltung oder einer anderen Hardware-implementierten Logik) kann auf dem Bus bereitgestellt werden, um einen oder mehrere der Verbindungsprotokollstapel-Logikblöcke 520, 525 (z. B. basierend auf einer Protokollverhandlung, die zwischen der Vorrichtung 505 und anderen Vorrichtungen (z. B. 530, 535, 540 usw.) durchgeführt wird) auf der Verbindung auszuwählen oder zu aktivieren. Zusätzlich können in einigen Fällen mehrere Verbindungsprotokollstapel-Logikblöcke aktiviert und gleichzeitig auf derselben Verbindung verwendet werden, wobei Multiplexer-Logik zum Multiplexen zwischen den mehreren Protokollen auf denselben Spuren der Verbindung unter anderen Merkmalen verwendet wird.
  • Die Vorrichtung 505 kann sortierte Sätze verwenden, um Protokolle auszuverhandeln, die auf der Verbindung mit einer oder mehreren anderen Vorrichtungen (z. B. 530, 535, 540) verwendet werden sollen. Zum Beispiel kann eine flexible Verbinder- oder Steckplatzvorrichtung 530 bereitgestellt werden, die so konfiguriert sein kann, dass sie mehrere Kartenvorrichtungen (z. B. 545, 550) akzeptiert, die jeweils einen I/O-Schnittstellen- und Protokollstapelblock entsprechend eines jeweiligen Verbindungsprotokolls unterstützen und implementieren können. Beispielsweise kann eine erste der Vorrichtungen 545 ein erstes Protokoll unterstützen (z. B. auch von der Vorrichtung 505 unterstützt und unter Verwendung des Protokollstapelblocks 520 implementiert), und eine zweite der Vorrichtungen 550 kann ein zweites Protokoll (z. B. von der Vorrichtung unterstützt und unter Verwendung des Protokollstapelblocks 525 implementiert) unterstützen usw. In anderen Fällen kann eine benutzerdefinierte Vorrichtung 535, wie z. B. eine Beschleunigervorrichtung, bereitgestellt werden, die selbst mehrere Protokollstapel-Logikblöcke zur Unterstützung der Kommunikation unter Verwendung eines von mehreren Verbindungsprotokollen (die möglicherweise auf der PHY eines Basisprotokolls (z. B. PCIe) ausgeführt werden) besitzt. Einige Vorrichtungen, die über einen solchen Multiprotokoll-Port eine Verbindung zur ersten Vorrichtung herstellen, können Hot-Plug-Vorrichtungen sein. Weiterhin können Erweiterungsvorrichtungen wie Retimer, Redriver und Repeater vorgesehen sein, um die physische Länge der Verbindung zu verlängern, die zwei der Vorrichtungen verbindet (z. B. 505 und 530 oder 505 und 535 usw.). Zum Beispiel kann ein Retimer 540 bereitgestellt werden und kann selbst wenigstens teilweise eine Protokollstapel-Logik implementieren, um zu ermöglichen, dass der Retimer 540 (wenigstens teilweise) am Training der Verbindung teilnimmt. Dementsprechend kann in einigen Fällen ein Retimer (z. B. 540) mit einer Logik ausgestattet sein, um einige sortierte Sätze des Verbindungstrainings zu verbrauchen, einschließlich solcher, die bei der Aushandlung alternativer Protokolle verwendet werden. In einigen Implementierungen kann das Aushandeln der anzuwendenden Protokolle während des anfänglichen PHY-Verbindungstrainings unter Verwendung (oder basierend auf) des Verbindungstrainingsprotokolls des PHY-Protokolls (z. B. PCIe) unter anderen beispielhaften Implementierungen durchgeführt werden.
  • In einigen Implementierungen, wie oben eingeführt, kann ein System, das mehrere verschiedene Verbindungsprotokolle unterstützt, um auf einer PCIe-PHY zu laufen, ein anfängliches PCIe-Verbindungstraining verwenden, um die zu unterstützenden Protokolle zu bestimmen. Zum Beispiel kann in einem Beispiel das Protokoll in einer (z. B. einer niedrigeren) Datenrate einer frühen Generation, wie einer PCIe-Gen-1-Datenrate, während des Trainings ausgehandelt werden, wobei erweiterte Trainingssätze (Enhanced Training Sets, TS) verwendet werden, um Unterstützungsprotokolle zu kommunizieren und Handshaking durchzuführen, um die Protokolle zu bestimmen, die von den Vorrichtungen auf der Verbindung unterstützt werden (z. B. den zwei Endpunktgeräten und etwaigen Erweiterungsgeräten (z. B. Retimern, Redrivern, Repeatern usw.)), die zwischen den zwei Endpunkten auf der Verbindung bereitgestellt werden. In einem anderen Beispiel können SKP sortierte Sätze (Betriebssysteme) (z. B. wie in PCIe Gen 4.0 definiert) verwendet werden, um das Protokoll zu definieren und auszuhandeln, das verwendet werden soll, wenn die Vorrichtungen die Verbindung trainieren. Zum Beispiel in Systemen, die höhere Generationsgeschwindigkeiten unterstützen (z. B. PCIe Gen 4.0) können Verkäufer definierte Felder, die in Symbolen eines Steuer-SKP-Betriebssystems definiert sind, gemeinsam mit anderen beispielhaften Implementierungen verwenden, um eine Protokollaushandlung durchzuführen. Diese Aushandlung kann die dynamische Auswahl und Verwendung von möglicherweise einem von vielen unterstützten Protokollen (z. B. um auf einem PCIe-PHY ausgeführt zu werden), wodurch ein System mit mehr Flexibilität bereitgestellt wird bei Ansätzen, die das Protokoll auf eine a priori Weise definieren (z. B. durch ein proprietäres PCIe-basiertes Register, das von der Systemsoftware eingestellt wird, usw.). Feste Protokolllösungen unter anderen beispielhaften Überlegungen haben jedoch möglicherweise eine eingeschränkte Nützlichkeit in Anwendungen, die einen offenen Steckplatz bereitstellen sollen, da feste Protokolle die Verwendung auf geschlossene Systeme beschränken können.
  • Zusätzlich kann in einigen Implementierungen ein System, das mehrere verschiedene Protokolle unterstützt, mehrere verschiedene Modi zum Entzerren von Verbindungen, die auf der PCIe-PHY-Schicht aufgebaut sind und durch die Vorrichtungen auf der Verbindung bereitgestellt werden, unterstützen. Beispielsweise kann ein Verbindungsprotokoll, das bei der Kommunikation auf der Verbindung verwendet wird, mehrere definierte Datenraten unterstützen. In einem Standard-Entzerrungsmodus muss die Verbindung bei jeder der mehreren Datenraten nacheinander entzerrt werden, bis eine der Datenraten erreicht ist, die alle Vorrichtungen auf der Verbindung stabil unterstützen. Dieser Standard-Entzerrungsmodus oder sequentielle Entzerrung kann in einigen Fällen durch einen alternativen Entzerrungsmodus ersetzt werden, der die Entzerrung einer oder mehrerer (oder aller) Datenraten umgeht, die niedriger sind als die höchste gemeinsame Datenrate, die von allen Vorrichtungen auf der Verbindung unterstützt wird (wie aus den Vorrichtungen ermittelt, welche die jeweils höchste von ihnen unterstützte Datenrate ankündigen). Ein sequentieller Entzerrungsumgehungsmodus kann eine schnellere Entzerrung und daher ein schnelleres anfängliches Verbindungstraining ermöglichen, was in einigen Anwendungen (z. B. Hot-Plug-Flows, tiefe Energieeinsparungen und andere latenzempfindliche Implementierungen) unter anderen beispielhaften Vorteilen von Vorteil sein kann.
  • Bei Zuwendung zum vereinfachten Blockdiagramm 600 von 6 ist hier ein System einer ersten Vorrichtung 505 dargestellt, die mit einer zweiten Vorrichtung 510 unter Verwendung einer Verbindung 650, die aus mehreren physischen bidirektionalen Kommunikationsspuren besteht, verbunden ist. Eine oder mehrere der Vorrichtungen 505, 605 können entsprechende Verarbeitungshardware (z. B. 610, 615) aufweisen. In einigen Implementierungen kann eine der Vorrichtungen ein Haupt- oder Zentralprozessor oder eine Bridge, ein Hub, ein Root-Port oder eine andere Komponente sein, welche die Kommunikation mit einem Zentralprozessor unterstützt. Jede der Vorrichtungen 505, 605 kann einen oder mehrere Ports (z. B. 620, 625) aufweisen, die von den Vorrichtungen 505, 605 verwendet werden können, um mit der Verbindung 650 zu koppeln und mit anderen Vorrichtungen unter Verwendung eines oder mehrerer Verbindungsprotokolle über die Verbindung zu kommunizieren. In einigen Implementierungen können Ports (z. B. 620, 625) mit einer Verbindungsprotokolllogik (z. B. 630, 635) ausgestattet sein, die als Stapel (z. B. physische Schicht, Verbindungsschicht, Transaktionsschicht, Protokollschicht usw.) implementiert ist. Die Protokolllogik 630, 635 kann es den Vorrichtungen 505, 605 ermöglichen, an einem Verbindungstraining gemäß einem oder mehreren Verbindungsprotokollen teilzunehmen, um eine protokollkonforme Verbindung zwischen den jeweiligen Ports (z. B. 620, 625) der Vorrichtungen herzustellen. Das Training einer Verbindung kann das Entzerren der Verbindung auf eingestellte Parameter des Senders und des Empfängers umfassen, so dass bestimmte definierte und messbare Parameter der Verbindung erfüllt werden, um eine geeignete Qualität der Verbindung sicherzustellen (z. B. so dass Daten mit minimalen Bitfehlern bei einer bestimmten Datenrate gesendet werden können). Dementsprechend kann ein Port (z. B. 620, 625) mit einer Entzerrungslogik (z. B. 640, 645) versehen sein, die in einer Hardwareschaltung, Firmware und/oder Software implementiert ist, die zur Teilnahme (z. B. mit anderen Vorrichtungen auf der Verbindung) bei der Entzerrung der Verbindung für inhaltliche Datenkommunikation (z. B. in einem betriebsbereiten Verbindungszustand) verwendet werden kann. Wie oben erwähnt, kann die Entzerrungslogik die Entzerrung bei einer beliebigen von mehreren Datenraten unterstützen, die für ein bestimmtes Verbindungsprotokoll definiert sind, das auf einer Verbindung verwendet werden kann, die dem bestimmten Protokoll entspricht. Ferner kann, wie hierin ausführlich diskutiert, die Entzerrungslogik unter anderen Beispielen zusätzlich mehrere alternative Entzerrungsmodi umfassen, einschließlich eines sequentiellen Entzerrungsmodus und eines sequentiellen Entzerrungsumgehungsmodus. Das System im Beispiel von 6 kann zusätzlich eine Grenzverbindungserkennung vorsehen, um die Erkennung von Fehlern und Spuren mit schlechter Leistung einer Verbindung zu ermöglichen. Das Bestimmen einer grenzwertigen Verbindung kann dazu führen, dass die Datenrate der Verbindung herabgestuft wird (z. B. unter Verwendung einer Entzerrungslogik (z. B. 640, 645) und/oder einer Protokollstapel-Logik (z. B. 630, 635)). Der zum Herabstufen der Datenrate verwendete Mechanismus kann vom Entzerrungsmodus abhängen, der zum Herstellen der Betriebsverbindung verwendet wird. Ferner kann in einigen Implementierungen Systemsoftware oder eine andere Steuerungslogik bereitgestellt werden, um die Verbindung während solcher Herabstufungen zu unterstützen, beispielsweise durch Stoppen des Traffics oder Stilllegen des Traffics auf der Verbindung (z. B. zum Schutz vor Transaktions-Timeouts) und Bereitstellen anderer beispielhafter Funktionen.
  • Die vorgeschlagene Erfindung ermöglicht einen schnelleren Weg, ein Verbindungstraining in PCI Express (PCIe) zu gestalten, insbesondere wenn neue Generationen der Verbindung entwickelt werden und die entsprechenden Datenraten kontinuierlich zunehmen. Um zu einer schnelleren Datenrate überzugehen, können die Agenten der auf der Verbindung verbundenen Vorrichtungen herkömmlicherweise mit der niedrigsten definierten Datenrate (z. B. 2,5GT/s in PCIe Gen1 oder 5GT/sin PCIe Gen2) beginnen und dann progressiv für jede der höheren Datenraten neu entzerren, bis die Vorrichtungen entweder nicht mehr erfolgreich mit einer der Datenraten entzerren können oder erfolgreich mit der höchsten oder maximal definierten Datenrate entzerren können (z. B. 32GT/s bei PCIe Gen5 oder höhere Datenraten in neuere PCIe-Generationen). Zum Beispiel kann, wie in dem Blockdiagramm 700 von 7 gezeigt, in einem Beispiel das Verbindungsprotokoll einen Satz unterstützter Datenraten definieren, die Generationen des Protokolls entsprechen. Während das Protokoll weiterentwickelt und verbessert wird, können neue Generationen der Verbindungsspezifikation definiert werden, zusammen mit neuen (höheren) Datenraten, die durch die durch die neue Generation eingeführte Verbesserung unterstützt werden. In dem speziellen Beispiel von 7 kann eine erste Generation (z. B. von PCIe) eine Datenrate von 2,5GT/s definieren. Dies kann die niedrigste aktive Verbindungsdatenrate für die Verbindung darstellen. Nachfolgende Generationen der Verbindung können die Unterstützung zusätzlicher höherer Datenraten einführen und definieren, wie beispielsweise eine Rate der zweiten Generation von 5,0 GT/s (710), eine Rate der dritten Generation von 8,0 GT/s (715) und eine Rate der vierten Generation von 16 GT/s, eine Rate der fünften Generation von 32 GT/s und so weiter. Ferner sollte beachtet werden, dass andere (z. B. nicht-PCIe) Verbindungen andere Auflistungen von Generationen aufweisen können, die andere definierte Datenraten unterstützen als diejenigen, die in dem bestimmten Beispiel von 7 dargestellt sind.
  • Im Allgemeinen kann die Verbindungsentzerrung den Komponentengeräten auf der Verbindung ermöglichen, ihre jeweiligen Sender- und Empfängereinstellungen jeder Spur anzupassen, um die Signalqualität zu verbessern und die für die Verbindung definierten Parameter zu erfüllen (z. B. für jede jeweilige für die Verbindung definierte Datenrate (z. B. durch eine entsprechende Verbindungsspezifikation)). Der Sender und der Empfänger für jede Spur der Verbindung, die der Verbindungstrainingszustandsmaschine zugeordnet ist, die das Training der Verbindung regelt (z. B. einschließlich derjenigen Spuren, die betriebsbereit sind oder die aufgrund einer Verbindungs-Aufwärtskonfiguration in Betrieb genommen werden können), können im Entzerrungsverfahren teilnehmen. Eine Entzerrung kann bei jeder Datenratenänderung durchgeführt werden. 8 zeigt eine Darstellung eines Beispiels einer Verbindungstrainingszustandsmaschine 800, wie beispielsweise einer PCIe-Verbindungstrainings- und Statuszustandsmaschine (LTSSM). Die durch Entzerrung zu erfüllenden Zielparameter können der Sendereinstellung für alle oder einer Reihe von Betriebsbedingungen entsprechen, denen der Sender in Zukunft begegnen kann, wenn die Verbindung hergestellt ist. In einigen Implementierungen kann, da eine Entzerrung zwischen jeder Datenratenänderung durchgeführt wird, die bei jeder Datenratenänderung bestimmte Sendereinrichtung gespeichert und nicht nur zur Unterstützung der auf der Verbindung verwendeten endgültigen Datenrate verwendet werden, sondern auch in Fällen, in denen die Datenrate heruntergestuft werden muss (z. B. als Reaktion auf das Erkennen einer grenzwertigen Verbindung oder einer anderen geringwertigen Bedingung auf der Verbindung), so dass die gespeicherte Einstellung für eine niedrigere Geschwindigkeit automatisch angewendet werden kann, wenn eine andere Entzerrung der Verbindung für die niedrigere Geschwindigkeit erforderlich ist. Ferner kann die Entzerrung die Abstimmung der jeweiligen Empfängeraufbauten für jede Spur umfassen. In einigen Fällen kann es Komponentengeräten gestattet sein, ihre Empfängerkonfiguration auch nach Abschluss des Entzerrungsvorgangs fein abzustimmen, solange dies nicht dazu führt, dass die Verbindung unzuverlässig wird (z. B. die definierten Parameter sind für die Verbindungsqualität nicht erfüllt).
  • Die Entzerrung kann entweder autonom oder durch Software eingeleitet werden. In einigen Fällen kann eine Entzerrung nach oder beim Übergang in einen aktiven Verbindungszustand durchgeführt werden (z. B. L0 (905)). Nach dem Eingeben von L0 kann es in einigen Implementierungen für Komponentengeräte auf der Verbindung verboten sein, Daten (z. B. Verbindungsschichtpakete) zu übertragen, wenn die Entzerrungsprozedur noch ausgeführt werden muss und bis die Entzerrungsprozedur abgeschlossen ist. In einigen Fällen können die Komponenten, um eine Entzerrung durchzuführen, von L0 zu einem Wiederherstellungs-(oder einem anderen) Verbindungszustand (z. B. 810) übergehen, um die Datenrate zu ändern und die der neuen Datenrate entsprechende Entzerrungsprozedur durchzuführen. In solchen Beispielen senden und empfangen die Sende- und Empfangsgeräte in einem Wiederherstellungszustand jeweils Daten unter Verwendung der konfigurierten Verbindungs- und Spurnummern (z. B. wie in einem vorherigen Verbindungstrainingszustand bestimmt (z. B. Konfigurationszustand (z. B. 815)) sowie die zuvor unterstützten Datenrate(n). Wiederherstellung 810 ermöglicht unter anderen beispielhaften Aufgaben und Merkmalen eine konfigurierte Verbindung, um die Betriebsdatenrate zu ändern, und falls gewünscht, die Bit-Sperre, die Symbolsperre oder die Blockausrichtung wiederherzustellen und eine Spur-zu-Spur-Entzerrung durchzuführen. In dem Beispiel von 8 können Komponenten von einem Wiederherstellungszustand 810 zurück in einen aktiven Verbindungszustand (z. B. L0 805) oder in einen Loopback- 820, Disabled- 825, Hot Reset- 830 oder Konfigurationszustand 815 unter anderen beispielhaften Implementierungen übergehen.
  • In einigen Implementierungen kann eine Entzerrung definiert werden, um zu erfordern, dass der Entzerrungsprozess für eine festgelegte Zeitdauer (z. B. 100 ms) ausgeführt wird. Bei Implementierungen, bei denen keine festgelegte Zeit definiert ist, kann die Entzerrung dennoch relativ viel Zeit in Anspruch nehmen, um die Sender- und Empfängereinstellungen effektiv zu konfigurieren und zu ermitteln, welche erforderlich sind, um die erforderlichen Parameter zu erfüllen, die in einer Verbindung für eine Verbindung, die eine bestimmte Datenrate unterstützt, definiert sind. Da die Entzerrung für jede Datenrate eindeutig ist, kann sie für jede der Datenraten nacheinander durchgeführt werden. Dementsprechend kann beim sequentiellen Entzerren von einer niedrigsten Datenrate zu einer höchsten Datenrate der Entzerrungsprozess mehrere Male hintereinander ausgeführt werden, wobei die resultierende Latenz effektiv zumindest der Zeit entspricht, die für jede Entzerrung verwendet wird, multipliziert mit der Anzahl der Datenratenänderungen um zu der höchsten erreichbaren Datenrate für eine gegebene Verbindung zu gelangen. Beispielsweise können in einem Beispiel wie PCIe zum Übergang von Gen1 zu Gen5 insgesamt 300 ms oder länger verwendet werden. Wenn sich Verbindungen entwickeln und Generationen und Niveaus von Datenraten hinzufügen, können ferner noch weitere Entzerrungsschritte eingeführt werden, wobei dabei verschlechtert wird, was die durch Entzerrung eingeführte suboptimale Latenz sein kann.
  • Zum Beispiel kann so in dem Beispiel von PCIe die Entzerrung sequentiell für jede der Datenraten über Gen2 durchgeführt werden, wie in dem beispielhaften Flussdiagramm 900 von 9 gezeigt. Beispielsweise kann eine Verbindung anfänglich 905 (z. B. durch die Vorrichtungen, die unter Verwendung der Verbindung und das Fortschreiten durch eine Verbindungstrainingszustandsmaschine (z. B. wie in 7 dargestellt) verbunden sind) zum aktiven Verbindungszustand L0 mit einer Gen1- Datenrate (z. B. 2,5GT/s) trainiert werden. Während des Trainings der Verbindung in Gen1 können die Vorrichtungen jeweils die jeweils höchste von der Vorrichtung unterstützte Datenrate ankündigen, so dass die maximal mögliche Datenrate für die Verbindung bestimmt werden kann. In dem Beispiel von 9 kann PCIe ermöglichen, dass die Datenrate direkt von einer Gen1- Datenrate auf eine Gen3-Datenrate ansteigt (z. B. da in PCIe keine Entzerrung durchgeführt wird, um die Gen2-Datenrate zu erreichen). Um die Geschwindigkeit auf die Gen3-Datenrate (z. B. 8GT/s) zu ändern, können die Vorrichtungen bewirken, dass die Verbindung mit der Gen1-Datenrate in einen Wiederherstellungszustand übergeht. Eine Entzerrung kann dann durchgeführt werden (bei 910) (z. B. mit Entzerrungsunterzuständen des Wiederherstellungszustands) und, falls erfolgreich, kann die Verbindung mit der Gen3-Datenrate auf L0 trainiert werden. Die Parameter der Sender und Empfänger, die verwendet werden, um eine Entzerrung der Verbindung mit der Gen3-Datenrate zu erreichen, können in einem Speicher gespeichert werden, auf den später zugegriffen werden kann, falls die Verbindung zu Gen3 zurückgeschaltet wird (z. B. von einer Gen4-Datenrate). Wenn die Gen3-Datenrate die auf der Verbindung unterstützte maximale Datenrate ist, kann das Training hier enden (z. B. und kann DL_UP = 1b setzen, um anzuzeigen, dass die Datenverbindungsschicht aktiv ist und Daten für die Übertragung in L0 bereit sind), andernfalls wird das Training durch erneutes Eingeben der Wiederherstellung (bei 915) mit der Gen3-Datenrate fortgesetzt, um die Geschwindigkeit auf die Gen4-Datenrate (z. B. 16GT/s) zu ändern und eine Entzerrung der Verbindung durchzuführen, um zu bestimmen, ob der Betrieb mit der Gen4-Datenrate auf der Verbindung aufrechterhalten werden kann. Wenn die Entzerrung (bei 915) erfolgreich ist, kann bestimmt werden, ob die Gen4-Datenrate die höchste unterstützte Datenrate ist, um zu bestimmen, ob die sequentielle Entzerrung mit der Gen5-Datenrate (z. B. 32 GT/s) fortgesetzt werden soll (bei 920) und so weiter, bis entweder die Entzerrung nicht erfolgreich ist (was zur Annahme der höchsten entzerrten Datenrate für die Verbindung führt) oder die Entzerrung mit der höchsten unterstützten Datenrate erfolgreich war. Wenn die höchste erfolgreich entzerrte Datenrate erreicht ist, kann die Flusssteuerungsinitialisierung abgeschlossen sein (z. B. bei 925) und die Datenverbindungsschicht kann anzeigen (z. B. durch Setzen von DL_UP = 1b), dass die Verbindung zur Datenübertragung bereit und voll funktionsfähig ist (z. B. bei 930).
  • Durch sequentielles Entzerren bei jeder der unterstützten inkrementellen Datenraten wird eine beträchtliche Latenz zu der Verbindungstrainingszeit hinzugefügt, während der keine Eingabe/Ausgabe erfolgt. Während dies in einigen Anwendungen akzeptabel sein kann, kann dieser Effekt in anderen Anwendungen wie einem flexiblen Verbindungsbus, bei dem mehrere verschiedene Protokolle auf einer gemeinsamen physischen Schicht ausgeführt und gemultiplext werden können, wie im Beispiel von 5, wirkungsvoller oder ausgeprägter sein. Ferner kann eine Anwendung Ressourcen zulassen (z. B. eine bestimmte Vorrichtung oder eine andere Systemkomponente), die durch Aufrufen von Hot-Plug-Flows zwischen den gemeinsam genutzten Ressourcen und den Rechenknoten um mehrere Serverknoten verschoben werden sollen. Bei Implementierungen, wie sie im Beispiel von 9 gezeigt sind, kann, wenn die Entzerrung sequentiell durchgeführt wird, das Entstehen von Grenzverbindungen nach dem Training leicht behandelt werden, da die Vorrichtungen einfach bewirken können, dass die Verbindung auf eine der bereits entzerrten, niedrigeren Datenraten (d. h. die nächstniedrigere Datenrate) herunterschaltet, ohne die Verbindung zu entzerren und den Datenverkehr zu blockieren, unter anderem mit Konsequenzen wie Zeitüberschreitungen. Das Herunterschalten der Datenrate kann auch dynamisch durchgeführt werden, um unter anderen beispielhaften Gründen Energieeinsparungen zu ermöglichen. Der Kompromiss bei einer solchen Implementierung ist unter anderen Beispielen die verlängerte Systemstartzeit oder die Zeit für das Hot-Plug/ Verbindungs- Zurücksetzen (z. B. in Fällen wie Fehlern, die bewirken, dass die Verbindung abgebaut werden muss).
  • In einigen Implementierungen, wie beispielsweise Hot-Plug-Anwendungen, kann es wünschenswert sein, die Zeit zum Entzerren auf die höchste Datenrate, die von allen Komponenten auf der Verbindung unterstützt wird, zu minimieren. Beispielsweise kann beim Bestimmen der höchsten unterstützten Datenrate eine Entzerrung nur mit dieser höchsten Datenrate durchgeführt werden (z. B. wenn sie über Gen2 liegt). Auf diese Weise kann eine schnellere Verbindungsentzerrung erreicht werden, indem die Entzerrung in den niedrigeren Datenraten umgangen wird und direkt eine Entzerrung in der höchsten gemeinsamen Datenrate (z. B. von der Gen1-Geschwindigkeit) durchgeführt wird. In dem im Flussdiagramm 1000 von 10 gezeigten Beispiel kann die Verbindung 1005 zu dem L0 mit der niedrigsten oder einer Basisdatenrate (z. B. Gen1 2,5GT/s) trainieren. Die Komponentenvorrichtungen der Verbindung können jeweils ihre höchsten unterstützten Datenraten anzeigen. Die Vorrichtungen können ebenfalls ankündigen, ob sie den sequentiellen Entzerrungsumgehung unterstützen, so dass die Vorrichtungen die Verbindung sofort auf ihre höchste gegenseitig unterstützte Datenrate bringen und die Entzerrung mit dieser höchsten Geschwindigkeit beginnen können. Zum Beispiel, wie in 10 gezeigt, können die Vorrichtungen (bei 1010) bestimmen, ob eine sequentielle Entzerrungsumgehung unterstützt wird. Wenn eine oder mehrere Vorrichtungen (z. B. ein Endpunkt oder ein Erweiterungsgerät) ankündigen, dass sie keine sequentiellen Entzerrungsumgehung unterstützt(en), kann die Vorrichtung 1010 bestimmen, dass eine sequentielle Entzerrung durchgeführt werden soll (z. B. wie im Beispiel von 9) und die Vorrichtungen können mit der sequentiellen Entzerrung fortfahren (bei 1015), um die Verbindung auf die höchste erfolgreich entzerrte Datenrate zu bringen, die Flusssteuerungsinitialisierung abzuschließen (bei 1020) und die Verbindung mit der entzerrten Datenrate in einen voll funktionsfähigen Modus 1025 zu bringen.
  • In anderen Fällen können alle Vorrichtungen auf einer Verbindung ankündigen, dass sie das Umgehen der sequentiellen Entzerrung unterstützen, um zu bewirken, dass die Verbindung in die Wiederherstellung eintritt (bei 1030), und können sofort die Geschwindigkeit auf die höchste Datenrate ändern, die von der Ansammlung der Vorrichtungen unterstützt wird (z. B. entsprechend einer bestimmten aus dem Satz definierter Generationen, für die eine Entzerrung erforderlich ist (z. B. alle Generationen bei oder über einer Generation m (z. B. m = Gen3 in PCIe))), zum Beispiel durch Eingeben von Recovery in Gen1 L0 (bei 1030) und Ändern der Geschwindigkeit direkt von der Gen1-Datenrate (z. B. 2,5GT/s) auf die höchste unterstützte Datenrate und Umgehen der Entzerrung für alle Zwischendatenraten zwischen Gen1 und der höchsten gegenseitig unterstützten Datenrate. Dann kann eine Entzerrung (bei 1030) für die höchste bestimmte Datenrate durchgeführt werden. Wenn die Entzerrung erfolgreich ist (bei 1035), kann die Initialisierung der Verbindung abgeschlossen sein 1020 und die Verbindung kann voll funktionsfähig bei der höchsten unterstützten Datenrate sein.
  • Wenn die Entzerrung der höchsten unterstützten Datenrate nicht erfolgreich ist (bei 1035), kann bestimmt werden, ob die höchste unterstützte Datenrate (z. B. die aktuelle Datenrate entsprechend Gen n) größer ist als die Datenrate von Gen m (bei 1045). Zum Beispiel kann in einer Implementierung von PCIe Gen m Gen3 von PCIe sein, so dass dies für jede Generation Gen4 oder höher dazu führen kann, dass die Datenrate auf die Datenrate der nächstniedrigeren Generation heruntergeschaltet wird (bei 1045) und die Entzerrung erneut versucht wird (bei 1030). Wenn die Vorrichtungen beispielsweise feststellen (bei 1005), dass PCIe Gen5 die höchste gemeinsam unterstützte Datenrate ist, können die Vorrichtungen anfänglich die Geschwindigkeit von der Gen1- Datenrate zur Gen5-Datenrate ändern und versuchen, die Verbindung mit der Gen5-Geschwindigkeit zu entzerren. Wenn die Entzerrung mit der Gen5-Datenrate nicht erfolgreich ist, können die Vorrichtungen die Wiederherstellung mit der Gen1-Datenrate (bei 1030) erneut starten und die L0-Geschwindigkeit auf die Gen4-Datenrate ändern und die Entzerrung der Gen4 wiederholen. Wenn die Entzerrung mit der Gen4-Datenrate erfolgreich ist, kann die Initialisierung der Verbindung mit der Gen4-Datenrate abgeschlossen werden. Wenn die Entzerrung mit der Gen4-Datenrate nicht erfolgreich ist (z. B. weil die bestimmten Entzerrungsparameter für Gen4 nicht erreicht wurden), versuchen die Vorrichtungen möglicherweise ein weiteres Mal (für Gen3), eine erfolgreiche Entzerrung der Verbindung mit einer Geschwindigkeit über Gen(m) (z. B. Gen2) -Datenrate. Wenn in diesem Beispiel die Entzerrung der Verbindung mit der Geschwindigkeit von Gen3 ebenfalls nicht erfolgreich ist, kann die Verbindung in die Wiederherstellung eintreten (bei 1050) und die Datenrate in Gen2 ändern. Wenn der Übergang zur Gen2-Datenrate erfolgreich ist, kann die Gen2-Geschwindigkeit übernommen werden, andernfalls kann die Initialisierung der Verbindung abgeschlossen werden 1020 und der Eintritt in den voll funktionsfähigen Zustand 1025 kann unter anderen Beispielen bei der Basis-Gen1-Datenrate stattfinden.
  • In einigen Implementierungen können sortierte Sätze, die während des Verbindungstrainings und der Initialisierung zwischen den Vorrichtungen auf der Verbindung übertragen werden, definiert werden, um sequentielle Entzerrungsumgehung zu unterstützen. Wie oben diskutiert, kann die sequentielle Entzerrungsumgehung ermöglichen, dass die Entzerrung nur bei der höchsten gemeinsamen Datenrate der Komponenten auf der Verbindung durchgeführt wird (z. B. für PCIe, Gen 5 und darüber hinaus). Sequentielle Entzerrung kann ein optionales Merkmal sein, das die Vorrichtungen auf der Verbindung (z. B. wie durch Software oder Konfigurationsregister angewiesen) verwenden können (z. B. abhängig von der Anwendung, in der die Verbindung implementiert ist). Um beispielsweise eine sequentielle Entzerrungsumgehung zu ermöglichen, können die Vorrichtungen zuerst bestimmen, ob jede andere Komponente auf der Verbindung in der Lage ist teilzunehmen. Zusätzlich können Komponenten nicht nur angeben, ob sie sequentielle Entzerrung unterstützen können, sondern auch, ob dies für die Anwendung erwünscht ist. Andernfalls können die Vorrichtungen einfach darauf zurückgreifen, sequentiell eine Entzerrung von der niedrigsten Datenrate zur höchsten gemeinsam unterstützten Datenrate durchzuführen.
  • In einigen Implementierungen kann jede Komponente in einer Verbindung ihre Fähigkeit ankündigen, die Entzerrung zu umgehen, indem ein oder mehrere Bits in einer oder mehreren der Trainingssequenzen oder anderen sortierten Sätzen gesetzt werden, die von der Vorrichtung während des Verbindungstrainings gesendet werden. In einigen Fällen kann der sortierte Satz ein sortierter Satz (z. B. ein PCIe-TS1- oder TS2-Trainingssatz) sein, der innerhalb eines bestimmten Verbindungstrainingszustands oder - unterzustands (z. B. eines Konfigurations- oder Abfragezustands oder -unterzustands) gesendet wird. Beispielsweise können Vorrichtungen in einem Beispiel ankündigen, ob die sequentielle Entzerrungsumgehung unterstützt wird oder nicht. Als Beispiel zeigt 11 eine beispielhafte Implementierung einer PCIe TS1-Trainingssequenz 1100, die so modifiziert ist, dass Ankündigen einer Unterstützung für eine sequentielle Entzerrungsumgehung ermöglicht wird. Andere sortierte Sequenzen und Modifikationen vorhandener, definierter sortierter Sequenzen können bereitgestellt werden, um ähnliche Informationen in anderen Implementierungen zu kommunizieren. Ferner kann eine von einer Vorrichtung gesendete Trainingssequenz (z. B. PCIe TS1 oder TS2) bereitgestellt werden, um die Datenrate der höchsten Generation zu identifizieren, die von der entsprechenden Vorrichtung unterstützt wird.
  • In dem speziellen Beispiel von 11 wird eine Trainingssequenz modifiziert, um ein bestimmtes reserviertes Bit (z. B. Bit 6 von Symbol 5) zu verwenden, das beispielsweise in einem Trainingssteuersymbol 1105 vorgesehen sein kann, damit Vorrichtungen angeben können, ob sie eine sequentielle Entzerrungsumgehung unterstützen. Beispielsweise kann eine sendende Endpunktvorrichtung das Bit mit 1b codieren, wenn es die sequentielle Entzerrungsumgehung unterstützt, und kann das Bit mit 0b codieren, wenn dies nicht der Fall ist. Eine nachgeschaltete Vorrichtung, welche die Trainingssequenz empfängt, kann identifizieren, ob das Bit gesetzt ist oder nicht. Wenn das Bit nicht gesetzt ist, um die sequentielle Entzerrungsumgehung anzuzeigen, kann die empfangende (oder weiterleitende) Vorrichtung das Bit als ‚0b‘ belassen, unabhängig davon, ob es sequentielle Entzerrungsumgehung unterstützt oder nicht, da das Vorhandensein des 0b-Werts im angegebenen Bit darauf hinweist, dass wenigstens eine Upstream-Komponente die Funktionalität nicht unterstützt, so dass es für die Verbindung nicht verfügbar ist. Ebenso kann, wenn eine Trainingssequenz mit dem auf 1b gesetzten sequentiellen Entzerrungsumgehungsbit empfangen wird, die Empfangsvorrichtung das Bit auf 0b kippen und entlang der Trainingssequenz senden, um anzuzeigen, dass diese sequentielle Entzerrungsumgehung, wenn die Empfangsvorrichtung keine sequentielle Entzerrungsumgehung unterstützt, für diesen Link nicht unterstützt werden kann. In ähnlicher Weise können Retimer oder andere Erweiterungsgeräte, die wenigstens teilweise protokollbasiert sind, solche Trainingssequenzen empfangen, das Bit identifizieren, das dazu bestimmt ist, die sequentielle Entzerrungsumgehung zu kennzeichnen, und entweder zulassen, dass die auf 1b eingestellte Trainingssequenz an einen Endpunktport (oder zusätzlichen Retimer) weitergeleitet wird, wenn der Retimer auch die sequentielle Entzerrungsumgehung unterstützt, oder das Bit auf 0b umzudrehen, wenn diese Funktion nicht unterstützt wird. In anderen Beispielen kann mehr als ein Entzerrungsumgehungs-Bit vorgesehen sein, wobei jedes der mehreren Entzerrungsumgehungs-Bits einer der Vorrichtungen auf der Verbindung entspricht, so dass jede Vorrichtung unabhängig angeben kann, ob die Vorrichtung sequentielle Entzerrungsumgehung unterstützt oder nicht. Dementsprechend wissen durch solche Mechanismen alle Komponenten der Verbindung (z. B. aus modifizierten Trainingssequenzen, die von der Vorrichtung empfangen oder zu der Vorrichtung zurückgeschleift wurden), bis sich die Verbindung auf L0 trainiert hat, ob die sequenzielle Entzerrungsumgehung für die Verbindung unterstützt wird, um die höchste unterstützte Datenrate direkt von der Gen1-Datenrate eingeben zu können, oder ob die Entzerrung schrittweise nacheinander durchgeführt werden muss (z. B. von Gen1 zu Gen2 zu Gen3 usw.).
  • Wie in dem Beispiel von 10 dargestellt, können, wenn alle Vorrichtungen auf einer Verbindung ankündigen, dass sie in der Lage sind, die sequentielle Entzerrungsumgehung zu unterstützen, die Vorrichtungen, wenn sie die Verbindung trainieren, L0 zur Wiederherstellung verlassen, indem sie sortierte Entzerrungssätze (z. B. Entzerrungs-PCIe TS2s) austauschen, um die Voreinstellungsinformationen auf die höchste gemeinsamen Datenrate zu bringen, die von jeder der Vorrichtungen unterstützt wird. Die Verbindung gibt die höchste Datenrate bei der Wiederherstellung ein, führt eine Entzerrung durch und gibt dann L0 mit der höchsten Datenrate ein, wonach sie in den Betriebsdatenübertragungszustand übergeht (z. B. durch Abschluss eines Initialisierungsflusssteuerungs-Handshakes (lnit_FC)). Wenn die Entzerrung mit der höchsten Datenrate fehlschlägt, kehrt der Verbindungsstatus möglicherweise mit der Gen1-Datenrate zu L0 zurück, damit die Vorrichtungen zur Wiederherstellung zurückkehren und versuchen können, eine Entzerrung mit der Datenrate unter der höchsten Datenrate und so weiter vorzunehmen, wie zum Beispiel in dem Beispiel von 10 veranschaulicht.
  • Es sollte angemerkt werden, dass Komponenten, die niedrigere Datenraten unterstützen (z. B. Gen 4), dieses Merkmal immer noch ausnutzen können, indem sie die Gen 5-Datenrate als ‚Nur für die Entzerrung höchste Datenrate‘ während des anfänglichen Verbindungstrainings mit L0 in der Gen 1-Datenrate ankündigen und beim Eintritt in die Wiederherstellung nicht die Gen 5-Datenrate ankündigen und eine Weile warten, bis die andere Seite ihre TS1'es sehen kann, so dass die EQ TS2'es die Voreinstellungen für die maximale Datenrate (z. B. Gen 4) widerspiegeln können.
  • In einigen Implementierungen kann eine dynamische Datenbreitenmodulation (z. B. im Gegensatz zur Datenrate) bei der höchsten Datenrate verwendet werden, um Energie zu sparen, wenn die Verbindungsauslastung wesentlich unter 50% liegt. Ferner kann im Fall von sich verschlechternden oder grenzwertigen Verbindungen, die in einem System erkannt werden (z. B. durch eine Komponentenvorrichtung oder unterstützende Software), die Verbindung auf eine verschlechterte Spurbreite (z. B. halbe Breite) verkleinert werden. Beispielsweise können ein Spurfehlerstatusregister und/oder ein Spurgrenzmerkmal verwendet werden, um eine Verbindung mit verringerter Breite mit der höchsten gemeinsamen Datenrate in Reaktion auf das Identifizieren von Leistungs- oder Stromproblemen in Bezug auf die Verbindung zu betreiben. In einigen Fällen kann sich eine Verbindung derart verschlechtern, dass ein unzulässig großer Teil (z. B. ein Großteil) der Spuren einer in Betrieb stehenden Verbindung auf der bereits entzerrten Datenrate grenzwertig ist. In einigen Fällen, in denen eine Spurweitenanpassung eine Verbindung, die mit einer bestimmten Datenrate (z. B. Gen (n)) arbeitet, nicht retten kann, kann die Geschwindigkeit der Verbindung herabgestuft werden. Wenn die Verbindung unter Verwendung der sequentiellen Entzerrungsumgehung trainiert wurde, wurden für die Verbindung noch keine Entzerrungsparameter für die Datenraten der niedrigeren Generation erhalten. Dementsprechend kann das Herabstufen der Datenrate einer solchen Verbindung das Erzeugen eines Unterbrechungsereignisses beinhalten, um zu ermöglichen, dass die Verbindung mit der nächstniedrigeren Datenrate (z. B. Gen (n-1)) erneut trainiert wird und versucht wird, die Verbindung mit dieser niedrigeren Datenrate zu entzerren. Ferner setzt in einigen Beispielen das Unterbrechungsereignis das System still (z. B. um Zeitüberschreitungen während des nächsten Entzerrungsversuchs zu verhindern) und führt die Entzerrung mit der niedrigeren Datenrate durch, bevor die Verbindung wiederhergestellt wird. In einigen Fällen kann dieser Ansatz die Leistung bei grenzwertigen Verbindungen verschlechtern, da als Reaktion eine zusätzliche Entzerrung bei niedrigeren Datenraten durchgeführt wird. In einigen Fällen kann dies jedoch unter anderen beispielhaften Implementierungen und Überlegungen einen angemessenen Kompromiss im Vergleich zu einer langen anfänglichen Verbindungstrainingszeit darstellen (wie es bei der sequentiellen Entzerrung der Fall ist).
  • Wie oben eingeführt, kann in einigen Implementierungen eine Verbindung, wie eine PCIekonforme Verbindung, einen oder mehrere Retimer oder andere Erweiterungsvorrichtungen wie einen Repeater umfassen. Eine Retimer-Vorrichtung (oder einfach ‚Retimer‘) kann aktive elektronische Vorrichtungen umfassen, die digitale I/O-Signale empfangen und erneut senden (auffrischen). Retimer können verwendet werden, um die Länge eines Kanals, der mit einem digitalen I/O-Bus verwendet werden kann, zu erstrecken. Retimer können protokollbasiert, Software transparent und in der Lage sein, einen Verbindungsentzerrungsvorgang wie den Verbindungsentzerrungsvorgang von PCIe auszuführen. Eine Verbindung, die einen oder mehrere Retimer aufweist, kann zwei oder mehr separate elektrische Unterverbindungen mit Datenraten bilden, die mit Datenraten vergleichbar sind, die durch Verbindungen realisiert werden, die ähnliche Protokolle verwenden, jedoch keine Retimer enthalten. Beispielsweise kann eine Verbindung, die einen einzelnen Retimer enthält, eine Verbindung mit zwei separaten Unterverbindungen bilden, von denen jeder jeweils mit einer Geschwindigkeit, beispielsweise mit Geschwindigkeiten von 8 GT/s, 16 GT/s, 25 GT/s, 32,0 GT/s. oder höher, arbeitet.
  • 12A - 12B veranschaulichen vereinfachte Blockdiagramme 1200a - b von beispielhaften Verbindungen, die einen oder mehrere Retimer enthalten. Zum Beispiel kann in 12A eine Verbindung, die eine erste Komponente 1205 (z. B. eine stromaufwärtige Komponente) mit einer zweiten Komponente 1210 (z. B. eine stromabwärtige Komponente) verbindet, einen einzelnen Retimer 1215a aufweisen. Eine erste Unterverbindung 1220a kann die erste Komponente 1205 mit dem Retimer 1215a verbinden und eine zweite Unterverbindung 1220b kann den Retimer 1215a mit der zweiten Komponente verbinden. Wie in 12B gezeigt, können mehrere Retimer 1215a, 1215b verwendet werden, um eine Verbindung zu verlängern. Drei Unterverbindungen 1220a -c können durch die zwei Retimer 1215a, 1215b definiert werden, wobei eine erste Unterverbindung 1215a die erste Komponente mit dem ersten Retimer 1215a verbindet, eine zweite Unterverbindung den ersten Retimer 1215a mit dem zweiten Retimer 1215b verbindet und die dritte Unterverbindung 1215c den zweiten Retimer 1215b mit der zweiten Komponente verbindet.
  • Wie in den Beispielen von 12A - 12B veranschaulicht, kann ein Retimer zwei Pseudo-Ports umfassen und die Pseudo-Ports können ihre jeweilige Downstream-/Upstream-Ausrichtung dynamisch bestimmen. Jeder Retimer 1215a, 1215b kann einen Aufwärtspfad und einen Abwärtspfad aufweisen. Ferner können die Retimer 1215a, 1215b Betriebsmodi, einschließlich eines Weiterleitungsmodus und eines Ausführungsmodus, unterstützen. Ein Retimer 1215a, 1215b kann in einigen Fällen auf der Unterverbindung empfangene Daten decodieren und die Daten, die er auf seiner anderen Unterverbindung stromabwärts weiterleiten soll, neu codieren. In einigen Fällen kann der Retimer einige Werte in den empfangenen Daten ändern, z. B. beim Verarbeiten und Weiterleiten der sortierten Satzdaten. Darüber hinaus kann ein Retimer potenziell jede Breitenoption als seine maximale Breite unterstützen, z. B. eine Reihe von Breitenoptionen, die durch eine Spezifikation wie z. B. PCIe definiert sind.
  • In einigen Implementierungen kann eine Verbindung definiert werden, um eine maximale Anzahl von Erweiterungsvorrichtungen, wie z. B. Retimer, zu unterstützen. Beispielsweise kann eine frühere Generation der Verbindung eine erste Anzahl von Erweiterungsgeräten (z. B. 1 oder 2 Retimer auf einer Verbindung, die zwei Endgeräte verbindet) unterstützen, während eine spätere Generation der Verbindung (z. B. die oben diskutierte Hochleistungsverbindung) möglicherweise eine größere Anzahl von Erweiterungsgeräten (z. B. 4 oder mehr Retimer) unterstützt. Um die Abwärtskompatibilität aufrechtzuerhalten, unterstützt die spätere Generation der Verbindung möglicherweise nativ die Protokolle und das Training, die für Verbindungen angepasst sind, bei denen sich eine erste Anzahl von Retimern (oder Redrivern) auf der Verbindung befindet, kann jedoch auch Logik für Endgeräte bereitstellen, welche die neuere Generation der Verbindung unterstützen, um die größere zulässige Anzahl von Retimern handzuhaben. Zusätzlich kann ein Retimer unter anderem mit einer Protokolllogik ausgestattet sein, um mehrere alternative Protokolle und einen sequentiellen Entzerrungsumgehungsmodus zu unterstützen.
  • Man beachte, dass die oben beschriebenen Vorrichtungen, Verfahren und Systeme in jeder elektronischen Vorrichtung oder jedem elektronischen System, wie oben erwähnt, implementiert werden können. Als spezielle Veranschaulichung stellen die folgenden Figuren beispielhafte Systeme zur Verwendung der hier beschriebenen Erfindung bereit. Da die folgenden Systeme detaillierter beschrieben werden, wird eine Anzahl verschiedener Verbindungen offenbart, beschrieben und anhand der obigen Diskussion überprüft. Und wie leicht ersichtlich ist, können die oben beschriebenen Fortschritte auf jede dieser Verbindungen, Strukturen oder Architekturen angewendet werden.
  • Unter Bezugnahme auf 13 ist eine Ausführungsform eines Blockschaltbildes für ein Rechnersystem mit einem Multicore-Prozessor dargestellt. Der Prozessor 1300 umfasst einen beliebigen Prozessor oder eine Verarbeitungsvorrichtung, beispielsweise einen Mikroprozessor, einen eingebetteten Prozessor, einen digitalen Signalprozessor (DSP), einen Netzwerkprozessor, einen Handprozessor, einen Anwendungsprozessor, einen Co-Prozessor, ein System auf einem Chip (SOC) oder eine andere Vorrichtung, um Code auszuführen. Der Prozessor 1300 umfasst in einer Ausführungsform wenigstens zwei Kerne - Kern 1301 und 1302, die asymmetrische Kerne oder symmetrische Kerne (die dargestellte Ausführungsform) aufweisen können. Der Prozessor 1300 kann jedoch eine beliebige Anzahl von Verarbeitungselementen aufweisen, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik, um einen Software-Thread zu unterstützen. Beispiele für Hardware-Verarbeitungselemente umfassen: eine Thread-Einheit, einen Thread-Slot, einen Thread, eine Prozess-Einheit, einen Kontext, eine Kontext-Einheit, einen logischen Prozessor, einen Hardware-Thread, einen Kern und/oder ein beliebiges anderes Element, das dazu in der Lage ist, einen Zustand für einen Prozessor, beispielsweise einen Ausführungszustand oder einen Architekturzustand zu halten. Mit anderen Worten gesagt, bezieht sich ein Verarbeitungselement in einer Ausführungsform auf jede Hardware, die unabhängig mit einem Code, wie z. B. einem Software-Thread, einem Betriebssystem, eine Anwendung oder einem anderen Code, verknüpft werden kann. Ein physischer Prozessor (oder Prozessorsockel) bezieht sich typischerweise auf eine integrierte Schaltung, die möglicherweise eine beliebige Anzahl anderer Verarbeitungselemente, wie z. B. Kerne oder Hardware-Threads, aufweist.
  • Ein Kern bezieht sich häufig auf eine Logik, die auf einer integrierten Schaltung angeordnet ist, die einen unabhängigen Architekturzustand aufrechterhalten kann, wobei jeder unabhängig aufrechterhaltene Architekturzustand wenigstens einigen dedizierten Ausführungsressourcen zugeordnet ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread typischerweise auf jede Logik, die sich auf einer integrierten Schaltung befindet, die einen unabhängigen Architekturzustand aufrechterhalten kann, wobei sich die unabhängig aufrechterhaltenen Architekturzustände den Zugriff auf Ausführungsressourcen teilen. Wie ersichtlich ist, überlappt sich die Grenze zwischen der Nomenklatur eines Hardware-Threads und des Kerns, wenn bestimmte Ressourcen gemeinsam genutzt werden und andere einem Architekturzustand zugeordnet werden. Ein Kern und ein Hardware-Thread werden jedoch häufig von einem Betriebssystem als einzelne logische Prozessoren betrachtet, wobei das Betriebssystem Vorgänge auf jedem logischen Prozessor einzeln planen kann.
  • Der physische Prozessor 1300, wie in 13 dargestellt, umfasst zwei Kerne - Kern 1301 und 1302. Hier werden die Kerne 1301 und 1302 als symmetrische Kerne betrachtet, d. h. Kerne mit den gleichen Konfigurationen, Funktionseinheiten und/oder der gleichen Logik. In einer anderen Ausführungsform umfasst der Kern 1301 einen Out-of-order-Prozessorkern, während der Kern 1302 einen In-order-Prozessorkern aufweist. Die Kerne 1301 und 1302 können jedoch individuell aus jedem Typ von Kern ausgewählt werden, wie beispielsweise einem nativen Kern, einem durch Software verwalteten Kern, einem Kern, der zur Ausführung einer nativen Befehlssatzarchitektur (ISA) angepasst ist, einem Kern, der zur Ausführung einer übersetzten Befehlssatzarchitektur (ISA) angepasst ist, einem partizipativen Kern oder einem anderen bekannten Kern. In einer heterogenen Kernumgebung (d. h. bei asymmetrischen Kernen) kann irgendeine Form der Übersetzung, wie eine binäre Übersetzung, verwendet werden, um Code auf einem oder beiden Kernen zu planen oder auszuführen. Zur weiteren Erörterung werden die im Kern 1301 dargestellten Funktionseinheiten nachstehend ausführlicher beschrieben, da die Einheiten im Kern 1302 in der dargestellten Ausführungsform auf ähnliche Weise arbeiten.
  • Wie dargestellt, umfasst der Kern 1301 zwei Hardware-Threads 1301a und 1301b, die auch als Hardware-Thread-Slots 1301a und 1301b bezeichnet werden können. Daher betrachten Software-Entitäten, wie beispielsweise ein Betriebssystem, in einer Ausführungsform den Prozessor 1300 möglicherweise als vier separate Prozessoren, d. h. vier logische Prozessoren oder Verarbeitungselemente, die in der Lage sind, vier Software-Threads gleichzeitig auszuführen. Wie oben erwähnt, ist ein erster Thread den Architekturzustandsregistern 1301a zugeordnet, ist ein zweiter Thread den Architekturzustandsregistern 1301b zugeordnet, kann ein dritter Thread den Architekturzustandsregistern 1302a zugeordnet sein und kann ein vierter Thread den Architekturzustandsregistern 1302b zugeordnet sein. Hier kann jedes der Architekturzustandsregister (1301a, 1301b, 1302a und 1302b) als Verarbeitungselemente, Threads-Slots oder Thread-Einheiten bezeichnet werden, wie oben beschrieben. Wie dargestellt, werden Architekturzustandsregister 1301a in Architekturzustandsregistern 1301b repliziert, so dass einzelne Architekturzustände/-kontexte für den logischen Prozessor 1301a und den logischen Prozessor 1301b gespeichert werden können. In dem Kern 1301 können auch andere kleinere Ressourcen, wie beispielsweise Befehlszeiger und Umbenennungslogik in dem Zuweiser- und Umbenennungsblock 1330, für die Threads 1301a und 1301b repliziert werden. Einige Ressourcen, wie z. B. Puffer in der Neusortierungs-/Stilllegungseinheit 1335, ILTB 1320, Lade-/Speicherpuffer und Warteschlangen, können durch Partitionierung gemeinsam genutzt werden. Andere Ressourcen, wie interne Allzweckregister, Seitentabellenbasisregister, Low-Level-Datencache und Daten-TLB 1315, Ausführungseinheit(en) 1340 und Teile der Out-of-order-Einheit 1335, sind potentiell voll geteilt.
  • Der Prozessor 1300 umfasst häufig andere Ressourcen, die vollständig gemeinsam genutzt werden können, durch Partitionierung gemeinsam genutzt werden können oder von/für Verarbeitungselemente reserviert sind. In 13 ist eine Ausführungsform eines rein beispielhaften Prozessors mit veranschaulichenden logischen Einheiten/Ressourcen eines Prozessors dargestellt. Es sei angemerkt, dass ein Prozessor jede dieser Funktionseinheiten aufweisen oder nicht aufweisen kann, sowie alle anderen bekannten Funktionseinheiten, Logik oder Firmware aufweisen kann, die nicht dargestellt sind. Wie dargestellt, umfasst der Kern 1301 einen vereinfachten, repräsentativen Out-of-order-Prozessorkern (OOO). In verschiedenen Ausführungsformen kann jedoch auch ein In-Order-Prozessor verwendet werden. Der OOO-Kern umfasst einen Verzweigungszielpuffer 1320 zum Vorhersagen von auszuführenden/zu nehmenden Verzweigungen und einen Befehlsübersetzungspuffer (I-TLB) 1320 zum Speichern von Adressübersetzungseinträgen für Befehle.
  • Der Kern 1301 umfasst ferner ein Decodiermodul 1325, das mit der Abrufeinheit 1320 gekoppelt ist, um abgerufene Elemente zu decodieren. In einer Ausführungsform umfasst die Abruflogik einzelne Sequenzer, die den Thread-Slots 1301a bzw. 1301b zugeordnet sind. Normalerweise ist der Kern 1301 einer ersten ISA zugeordnet, die auf dem Prozessor 1300 ausführbare Anweisungen definiert/spezifiziert. Häufig umfassen Maschinencodeanweisungen, die Teil der ersten ISA sind, einen Teil der Anweisung (als ein Opcode bezeichnet), der auf eine Anweisung oder auszuführende Operation verweist oder diese spezifiziert. Die Decodierlogik 1325 enthält eine Schaltung, die diese Befehle anhand ihrer Operationscodes erkennt und die decodierten Befehle in der Pipeline zur Verarbeitung weiterleitet, wie von der ersten ISA definiert. Zum Beispiel weisen die Decodierer 1325 in einer Ausführungsform, wie nachstehend ausführlicher erörtert, eine Logik auf, die zum Erkennen spezifischer Anweisungen wie Transaktionsanweisungen ausgelegt oder angepasst ist. Infolge der Erfassung durch die Decodierer 1325 ergreift die Architektur oder der Kern 1301 spezifische, vordefinierte Aktionen, um Aufgaben auszuführen, die mit dem entsprechenden Befehl verbunden sind. Es ist wichtig zu beachten, dass jede der hier beschriebenen Aufgaben, Blöcke, Operationen und Methoden als Reaktion auf eine einzelne oder mehrere Anweisungen ausgeführt werden kann. Einige davon können neue oder alte Anweisungen sein. Man beachte, dass die Decoder 1326 in einer Ausführungsform dieselbe ISA (oder eine Teilmenge davon) erkennen. Alternativ erkennen die Decodierer 1326 in einer heterogenen Kernumgebung eine zweite ISA (entweder eine Teilmenge der ersten ISA oder eine unterschiedliche ISA) .
  • In einem Beispiel enthält der Zuweiser- und Umbenennerblock 1330 einen Zuweiser zum Reservieren von Ressourcen, wie z. B. Registerdateien zum Speichern von Befehlsverarbeitungsergebnissen. Die Threads 1301a und 1301b können jedoch möglicherweise nicht in der richtigen Reihenfolge ausgeführt werden, wobei der Zuweiser- und Umbenennerblock 1330 auch andere Ressourcen reserviert, wie beispielsweise Puffer neu anordnet, um Befehlsergebnisse zu verfolgen. Die Einheit 1330 kann auch einen Registerumbenenner enthalten, um Programm-/Befehlsreferenzregister in andere Register innerhalb des Prozessors 1300 umzubenennen. Die Neusortierungs-/Rücknahmeeinheit 1335 umfasst Komponenten wie die oben erwähnten Neusortierungspuffer, Ladepuffer und Speicherpuffer, um Out-of-order-Ausführung und späteren In-order-Rücktritt von Anweisungen zu unterstützen, die außerhalb der Reihenfolge ausgeführt wurden.
  • Der Scheduler- und Ausführungseinheit(en)-Block 1340 umfasst in einer Ausführungsform eine Scheduler-Einheit zum Planen von Anweisungen/Operationen an Ausführungseinheiten. Beispielsweise wird ein Gleitkomma-Befehl an einem Port einer Ausführungseinheit geplant, die eine verfügbare Gleitkomma-Ausführungseinheit hat. Registerdateien, die den Ausführungseinheiten zugeordnet sind, sind ebenfalls umfasst, um Informationsanweisungsverarbeitungsergebnisse zu speichern. Beispielhafte Ausführungseinheiten umfassen eine Gleitkommaausführungseinheit, eine Ganzzahlausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten.
  • Datencache auf niedrigerer Ebene und Datenübersetzungspuffer (D-TLB) 1350 sind an die Ausführungseinheit(en) 1340 gekoppelt. Der Datencache dient zum Speichern von kürzlich verwendeten/bearbeiteten Elementen, wie Datenoperanden, die möglicherweise in Speicherkohärenzzuständen gehalten werden. Der D-TLB dient zum Speichern aktueller virtueller/linearer/physischer Adressumsetzungen. Als ein spezielles Beispiel kann ein Prozessor eine Seitentabellenstruktur aufweisen, um den physischen Speicher in eine Vielzahl von virtuellen Seiten aufzuteilen.
  • Hier teilen sich die Kerne 1301 und 1302 den Zugriff auf einen Cache höherer Ebene oder einen darüber hinausgehenden Cache, wie beispielsweise einen Cache zweiter Ebene, welcher der chipinternen Schnittstelle 1310 zugeordnet ist. Man beachte, dass Cache höherer Ebene oder darüber hinausgehender Cache sich auf Cache-Ebenen bezieht, die von der Ausführungseinheit (den Ausführungseinheiten) erhöht oder weiter entfernt sind. In einer Ausführungsform ist der Cache höherer Ebene ein Datencache letzter Ebene - letzter Cache in der Speicherhierarchie auf dem Prozessor 1300 - wie ein Datencache zweiter oder dritter Ebene. Der Cache höherer Ebene ist jedoch nicht so beschränkt, da er einem Anweisungs-Cache zugeordnet sein oder diesen enthalten kann. Ein Ablaufverfolgungs-Cache (eine Art Anweisungs-Cache) kann stattdessen nach dem Decodierer 1325 gekoppelt werden, um kürzlich decodierte Ablaufverfolgungen zu speichern. Hier bezieht sich ein Befehl möglicherweise auf einen Makrobefehl (d. h. einen von den Decodierern erkannten allgemeinen Befehl), der sich in eine Anzahl von Mikrobefehlen (Mikrooperationen) decodieren kann.
  • In der dargestellten Konfiguration umfasst der Prozessor 1300 auch ein On-Chip-Schnittstellenmodul 1310. Historisch gesehen wurde eine Speichersteuerung, die nachstehend ausführlicher beschrieben wird, in ein Rechnersystem außerhalb des Prozessors 1300 integriert. Die Chip-Schnittstelle 1310 dient zur Kommunikation mit Vorrichtungen außerhalb des Prozessors 1300, wie beispielsweise dem Systemspeicher 1375, einem Chipsatz (der häufig einen Speichercontroller-Hub zur Verbindung mit dem Speicher 1375 und einen I/O-Controller-Hub zur Verbindung von Peripheriegeräten aufweist), einem Speichercontroller-Hub, einer Northbridge oder einer anderen integrierten Schaltung. Und in diesem Szenario kann der Bus 1305 jede bekannte Verbindung aufweisen, wie beispielsweise einen Mehrpunktbus, eine Punkt-zu-Punkt-Verbindung, eine serielle Verbindung, einen parallelen Bus, einen kohärenten (z. B. Cachekohärenten) Bus, eine geschichtete Protokollarchitektur, einen Differentialbus und einen GTL-Bus.
  • Der Speicher 1375 kann dem Prozessor 1300 zugeordnet sein oder mit anderen Vorrichtungen in einem System gemeinsam genutzt werden. Übliche Beispiele für Speichertypen 1375 umfassen DRAM, SRAM, nichtflüchtigen Speicher (NV-Speicher) und andere bekannte Speichervorrichtungen. Es sei angemerkt, dass die Vorrichtung 1380 einen Grafikbeschleuniger, einen Prozessor oder eine Karte, die mit einem Speichercontroller-Hub gekoppelt ist, einen Datenspeicher, der mit einem I/O-Controller-Hub gekoppelt ist, einen drahtlosen Transceiver, eine Flash-Vorrichtung, einen Audio-Controller, einen Netzwerk-Controller oder andere bekannte Vorrichtung umfassen kann.
  • In letzter Zeit jedoch, da mehr Logik und Vorrichtungen auf einem einzelnen Chip, wie beispielsweise dem SOC, integriert werden, kann jede dieser Vorrichtungen im Prozessor 1300 umfasst sein. Beispielsweise befindet sich in einer Ausführungsform ein Speichercontroller-Hub auf demselben Package und/oder Die mit dem Prozessor 1300. Hier umfasst ein Abschnitt des Kerns (ein Abschnitt auf dem Kern) 1310 eine oder mehrere Controller zum Anschließen an andere Vorrichtungen wie den Speicher 1375 oder eine Grafikvorrichtung 1380. Die Konfiguration, die eine Verbindung und Controller für die Schnittstellen mit solchen Vorrichtungen umfasst, wird häufig als On-Core-Konfiguration (oder Un-Core-Konfiguration) bezeichnet. Als ein Beispiel umfasst die On-Chip-Schnittstelle 1310 eine Ringverbindung für die On-Chip-Kommunikation und eine serielle Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung 1305 für die Off-Chip-Kommunikation. In der SOC-Umgebung können jedoch noch mehr Vorrichtungen, wie z. B. die Netzwerkschnittstelle, Coprozessoren, der Speicher 1375, der Grafikprozessor 1380 und andere bekannte Computervorrichtungen/-schnittstellen auf einem einzelnen Chip oder einer integrierten Schaltung integriert sein, um einen kleinen Formfaktor mit hoher Funktionalität und geringem Stromverbrauch bereitzustellen.
  • In einer Ausführungsform ist der Prozessor 1300 in der Lage, einen Compiler-, Optimierungs- und/oder Übersetzercode 1377 auszuführen, um den Anwendungscode 1376 zu kompilieren, zu übersetzen und/oder zu optimieren, um die hierin beschriebenen Vorrichtungen und Verfahren zu unterstützen oder eine Schnittstelle damit zu bilden. Ein Compiler umfasst häufig ein Programm oder eine Reihe von Programmen, um Quelltext/Code in Zieltext/Code zu übersetzen. In der Regel erfolgt die Kompilierung von Programm-/Anwendungscode mit einem Compiler in mehreren Phasen und wird durchgeführt, um High-Level-Programmiersprachencode in Low-Level-Maschinen- oder Assemblersprachencode umzuwandeln. Single-Pass-Compiler können jedoch weiterhin für die einfache Kompilierung verwendet werden. Ein Compiler kann alle bekannten Kompilierungstechniken verwenden und alle bekannten Compileroperationen ausführen, wie z. B. lexikalische Analyse, Vorverarbeitung, Parsen, semantische Analyse, Codegenerierung, Codetransformation und Codeoptimierung.
  • Größere Compiler umfassen häufig mehrere Phasen, am häufigsten jedoch sind diese Phasen in zwei allgemeinen Phasen enthalten: (1) ein Front-End, d. h. im Allgemeinen, wo syntaktische Verarbeitung, semantische Verarbeitung und einige Transformationen/Optimierungen stattfinden können, und (2) ein Back-End, d. h. im Allgemeinen, wo Analyse, Transformationen, Optimierungen und Codegenerierung stattfinden. Einige Compiler verweisen auf eine Mitte, welche die Unschärfe der Abgrenzung zwischen einem Front-End und einem Back-End eines Compilers veranschaulicht. Infolgedessen kann ein Verweis auf das Einfügen, Verknüpfen, Erzeugen oder andere Operationen eines Compilers in einer der oben genannten Phasen oder einem der oben genannten Durchgänge sowie in anderen bekannten Phasen oder Durchgängen eines Compilers erfolgen. Als anschauliches Beispiel fügt ein Compiler möglicherweise Operationen, Aufrufe, Funktionen usw. in eine oder mehrere Phasen der Kompilierung ein, z. B. das Einfügen von Aufrufen/Operationen in einer Front-End-Phase der Kompilierung und die anschließende Umwandlung der Aufrufe/Operationen in einen niedrigeren Level-Code während einer Transformationsphase. Man beachte, dass während der dynamischen Kompilierung Compiler-Code oder dynamischer Optimierungscode möglicherweise solche Operationen/Aufrufe einfügen und den Code für die Ausführung zur Laufzeit optimieren. Als spezielles anschauliches Beispiel kann ein Binärcode (bereits kompilierter Code) während der Laufzeit dynamisch optimiert werden. Hier kann der Programmcode den dynamischen Optimierungscode, den Binärcode oder eine Kombination davon aufweisen.
  • Ähnlich wie ein Compiler übersetzt ein Übersetzer, wie beispielsweise ein binärer Übersetzer, Code entweder statisch oder dynamisch, um Code zu optimieren und/oder zu übersetzen. Daher kann sich ein Verweis auf die Ausführung von Code, Anwendungscode, Programmcode oder einer anderen Softwareumgebung auf Folgendes beziehen: (1) Ausführung eines oder mehrerer Compilerprogramme, eines Optimierungscode-Optimierers oder eines Übersetzers, entweder dynamisch oder statisch, um Programmcode zu kompilieren, Softwarestrukturen beizubehalten, andere Operationen durchzuführen, Code zu optimieren oder Code zu übersetzen; (2) Ausführung von Hauptprogrammcode einschließlich Operationen/Aufrufen, wie beispielsweise Anwendungscode, der optimiert/kompiliert worden ist; (3) Ausführung von anderem Programmcode, wie z. B. Bibliotheken, die dem Hauptprogrammcode zugeordnet sind, um Softwarestrukturen beizubehalten, um andere softwarebezogene Operationen durchzuführen oder um Code zu optimieren; oder (4) eine Kombination davon.
  • Nun unter Bezugnahme auf 14 wird ein Blockdiagramm einer Ausführungsform von einem Multicore-Prozessor gezeigt. Wie in der Ausführungsform von 14 dargestellt, weist der Prozessor 1400 mehrere Domänen auf. Insbesondere umfasst eine Kerndomäne 1430 mehrere Kerne 1430A - 1430N, eine Grafikdomäne 1460 umfasst eine oder mehrere Grafikmaschinen mit einer Medienmaschine 1465 und eine Systemagentendomäne 1410.
  • In verschiedenen Ausführungsformen handhabt die Systemagentendomäne 1410 Stromsteuerungsereignisse und Stromverwaltung, so dass einzelne Einheiten der Domänen 1430 und 1460 (z. B. Kerne und/oder Grafikmaschinen) unabhängig steuerbar sind, um dynamisch bei einem geeigneten Strommodus/-pegel (z. B. aktiv, Turbo, Schlaf, Ruhezustand, Tiefschlaf oder ein anderer Status wie Advanced Configuration Power Interface) im Lichte der Aktivität (oder Inaktivität), die in der angegebenen Einheit auftritt, zu arbeiten. Jede der Domänen 1430 und 1460 kann mit unterschiedlicher Spannung und/oder Leistung arbeiten, und außerdem arbeiten die einzelnen Einheiten innerhalb der Domänen möglicherweise jeweils mit einer unabhängigen Frequenz und Spannung. Es ist zu beachten, dass, obwohl dies nur bei drei Domänen gezeigt ist, der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist und zusätzliche Domänen in anderen Ausführungsformen vorhanden sein können.
  • Wie gezeigt, umfasst jeder Kern 1430 zusätzlich zu Caches niedriger Ebene verschiedene Ausführungseinheiten und zusätzliche Verarbeitungselemente. Hier sind die verschiedenen Kerne miteinander und mit einem gemeinsam genutzten Cache-Speicher gekoppelt, der aus einer Vielzahl von Einheiten oder Slices eines Last-Level-Cache (LLC) 1440A-1440N gebildet ist; diese LLCs umfassen häufig Speicher- und Cache-Controller-Funktionalität und werden von den Kernen sowie möglicherweise auch von der Grafik-Engine gemeinsam genutzt.
  • Wie zu sehen ist, koppelt eine Ringverbindung 1450 die Kerne miteinander und stellt eine Verbindung zwischen der Kerndomäne 1430, der Grafikdomäne 1460 und der Systemagentenschaltung 1410 über eine Vielzahl von Ringstops 1452A - 1452N jeweils an einer Kopplung zwischen einem Kern und LLC Slice bereit. Wie in 14 ersichtlich ist, wird die Verbindung 1450 verwendet, um verschiedene Informationen zu transportieren, einschließlich Adressinformationen, Dateninformationen, Bestätigungsinformationen und Snoop/Invalid-Informationen. Obwohl eine Ringverbindung dargestellt ist, kann jede bekannte Verbindung oder Struktur auf dem Chip verwendet werden. Als veranschaulichendes Beispiel können einige der oben diskutierten Strukturen (z. B. eine andere On-Die-Verbindung, On-Chip-Systemstruktur (OSF), eine AMBA-Verbindung (Advanced Microcontroller Bus Architecture), eine mehrdimensionale Maschenstruktur oder eine andere bekannte Verbindungsarchitektur) auf ähnliche Weise verwendet werden.
  • Wie weiter dargestellt, umfasst die Systemagentendomäne 1410 eine Anzeigemaschine 1412, die die Steuerung und eine Schnittstelle für eine zugeordnete Anzeige bereitstellen soll. Die Systemagentendomäne 1410 kann andere Einheiten umfassen, wie beispielsweise: eine integrierte Speichersteuerung 1420, die eine Schnittstelle zu einem Systemspeicher bereitstellt (z. B. ein DRAM, der mit mehreren DIMMs implementiert ist; Kohärenzlogik 1422 zum Ausführen von Speicherkohärenzoperationen). Es können mehrere Schnittstellen vorhanden sein, um eine Verbindung zwischen dem Prozessor und weiteren Schaltungen zu ermöglichen. Beispielsweise ist in einer Ausführungsform wenigstens eine direkte Medienschnittstelle (DMI) 1416 sowie eine oder mehrere PCIeTM-Schnittstellen 1414 vorgesehen. Die Anzeigemaschine und diese Schnittstellen sind typischerweise mit dem Speicher gekoppelt über eine PCIeTM-Brücke 1418. Um weiterhin Kommunikationen zwischen anderen Agenten, wie zusätzlichen Prozessoren oder weiteren Schaltungen, bereitzustellen, können eine oder mehrere andere Schnittstellen bereitgestellt werden.
  • Nun unter Bezugnahme auf 15 wird ein Blockdiagramm eines repräsentativen Kerns gezeigt; insbesondere logische Blöcke eines Back-Ends eines Kerns, wie beispielsweise des Kerns 1430 aus 14. Im Allgemeinen umfasst die in 15 gezeigte Struktur einen Out-of-order-Prozessor, der eine Front-End-Einheit 1570 aufweist, die zum Abrufen eingehender Anweisungen, Durchführen verschiedener Verarbeitungen (z. B. Zwischenspeichern, Decodieren, Verzweigungsvorhersage usw.) und Weiterleiten von Anweisungen/Operationen an eine Out-of-order-(OOO)-Maschine 1580 verwendet wird. Die OOO-Maschine 1580 führt eine weitere Verarbeitung an decodierten Befehlen durch.
  • Speziell in der Ausführungsform von 15 umfasst die Out-of-oder-Maschine 1580 eine Zuordnungseinheit 1582 zum Empfangen von decodierten Befehlen, die in der Form von einem oder mehreren Mikrobefehlen oder µops sein können, von der Front-End-Einheit 1570 und weist ihnen geeigneten Ressourcen zu, wie z. B. Register und so weiter. Als Nächstes werden die Anweisungen an eine Reservierungsstation 1584 geliefert, die Ressourcen reserviert und sie für die Ausführung auf einer von mehreren Ausführungseinheiten 1586A-1486N festlegt. Es können verschiedene Arten von Ausführungseinheiten vorhanden sein, darunter unter anderem Recheneinheiten (ALUs), Lade- und Speichereinheiten, Vektorverarbeitungseinheiten (VPUs) und Gleitkommaausführungseinheiten. Die Ergebnisse dieser verschiedenen Ausführungseinheiten werden einem Umsortierungspuffer (ROB) 1588 zugeführt, der ungeordnete Ergebnisse aufnimmt und sie in die richtige Programmreihenfolge zurückführt.
  • Es wird immer noch auf 15 Bezug genommen. Man beachte, dass sowohl die Front-End-Einheit 1570 als auch die Out-of-order-Maschine 1580 mit verschiedenen Ebenen einer Speicherhierarchie gekoppelt sind. Insbesondere ist ein Cache 1572 auf Befehlsebene gezeigt, der wiederum mit einem Cache 1576 auf mittlerer Ebene gekoppelt ist, der wiederum mit einem Cache 1595 auf letzter Ebene gekoppelt ist. In einer Ausführungsform ist der Cache 1595 auf letzter Ebene in einer On-Chip (manchmal bezeichnet als Uncore) -Einheit 1590 implementiert. Als ein Beispiel ist die Einheit 1590 dem Systemagenten 1310 von 13 ähnlich. Wie oben besprochen, kommuniziert der Uncore 1590 mit dem Systemspeicher 1599, der in der veranschaulichten Ausführungsform über einen ED-RAM implementiert ist. Es sei auch angemerkt, dass die verschiedenen Ausführungseinheiten 1586 innerhalb der Out-of-order-Maschine 1580 mit einem Cache 1574 der ersten Ebene in Verbindung stehen, der ebenfalls mit dem Cache 1576 der mittleren Ebene in Verbindung steht. Es sei auch angemerkt, dass zusätzliche Kerne 1530N-2 - 1530N sich mit LLC 1595 koppeln können. Obwohl auf dieser hohen Ebene in der Ausführungsform von 15 gezeigt, muss man verstehen, dass verschiedene Änderungen und zusätzliche Komponenten vorhanden sein können.
  • Es wird nun auf 16 Bezug genommen, wo ein Blockdiagramm eines beispielhaften Computersystems dargestellt ist, das mit einem Prozessor ausgebildet ist, der Ausführungseinheiten zum Ausführen eines Befehls umfasst, wobei eine oder mehrere der Verbindungen ein oder mehrere Merkmale gemäß einer Ausführungsform der vorliegenden Erfindung implementieren. Das System 1600 umfasst eine Komponente, wie beispielsweise einen Prozessor 1602, um Ausführungseinheiten mit Logik zum Ausführen von Algorithmen für Prozessdaten gemäß der vorliegenden Erfindung, wie beispielsweise in der hier beschriebenen Ausführungsform, zu verwenden. System 1600 ist repräsentativ für Verarbeitungssysteme, die auf den Mikroprozessoren PENTIUM III™, PENTIUM 4™, Xeon™, Itanium, XScale™ und/oder StrongARM™ basieren, obwohl andere Systeme (darunter PCs mit anderen Mikroprozessoren, Engineering-Workstations, Set-Top-Boxes und dergleichen) ebenfalls verwendet werden können. In einer Ausführungsform führt das Beispielsystem 1600 eine Version des WINDOWSTM-Betriebssystems aus, das von der Microsoft Corporation in Redmond, Washington, erhältlich ist, obwohl auch andere Betriebssysteme (z. B. UNIX und Linux), eingebettete Software und/oder grafische Benutzeroberflächen verwendet werden können. Somit sind Ausführungsformen der vorliegenden Erfindung nicht auf irgendeine spezielle Kombination von Hardware-Schaltungen und Software beschränkt.
  • Ausführungsformen sind nicht auf Computersysteme beschränkt. Alternative Ausführungsformen der vorliegenden Erfindung können in anderen Vorrichtungen wie Handgeräten und eingebetteten Anwendungen verwendet werden. Einige Beispiele für Handheld-Vorrichtungen umfassen Mobiltelefone, Internetprotokoll-Vorrichtungen, Digitalkameras, PDAs (Personal Digital Assistants) und Handheld-PCs. Eingebettete Anwendungen können einen Mikrocontroller, einen digitalen Signalprozessor (DSP), ein System auf einem Chip, Netzwerkcomputer (NetPC), Set-Top-Boxen, Netzwerk-Hubs, WAN-Switches (Wide Area Network) oder ein beliebiges anderes System umfassen, welche eine oder mehrere Anweisungen gemäß wenigstens einer Ausführungsform ausführen können.
  • In dieser veranschaulichten Ausführungsform umfasst der Prozessor 1602 einen oder mehrere Ausführungseinheiten 1608, um einen Algorithmus zu implementieren, der wenigstens einen Befehl ausführen soll. Eine Ausführungsform kann im Kontext eines Einzelprozessor-Desktops oder -Serversystems beschrieben werden, aber alternative Ausführungsformen können in einem Multiprozessorsystem umfasst sein. Das System 1600 ist ein Beispiel für eine ‚Hub‘-Systemarchitektur. Das Computersystem 1600 umfasst einen Prozessor 1602 zum Verarbeiten von Datensignalen. Der Prozessor 1602 umfasst als ein veranschaulichendes Beispiel einen CISC-Mikroprozessor (Complex Instruction Set Computer), einen RISC-Mikroprozessor (Reduced Instruction Set Computing), einen VLIW-Mikroprozessor (Very Long Instruction Word), einen Prozessor, der eine Kombination von Befehlssätzen implementiert, oder jede andere Prozessorvorrichtung, wie beispielsweise einen digitalen Signalprozessor. Der Prozessor 1602 ist mit einem Prozessorbus 1610 verbunden, der Datensignale zwischen dem Prozessor 1602 und anderen Komponenten im System 1600 überträgt. Die Elemente des Systems 1600 (z. B. Grafikbeschleuniger 1612, Speichercontroller-Hub 1616, Speicher 1620, I/O-Controller-Hub 1625, drahtloser Transceiver 1626, Flash-BIOS 1628, Netzwerk-Controller 1634, Audio-Controller 1636, serieller Erweiterungsport 1638, I/O-Controller 1640 usw.) führen ihre herkömmlichen Funktionen aus, die dem Fachleuten auf diesem Gebiet der Technik bekannt sind.
  • In einer Ausführungsform umfasst der Prozessor 1602 einen internen Cache-Speicher 1604 der Ebene 1 (L1). Abhängig von der Architektur kann der Prozessor 1602 einen einzelnen internen Cache oder mehrere Ebenen von internen Caches aufweisen. Andere Ausführungsformen umfassen eine Kombination von sowohl internen als auch externen Caches, je nach spezifischer Implementierung und Anforderungen. Die Registerdatei 1606 dient zum Speichern verschiedener Datentypen in verschiedenen Registern, einschließlich Ganzzahlregistern, Gleitkommaregistern, Vektorregistern, Bankregistern, Schattenregistern, Prüfpunktregistern, Statusregistern und Befehlszeigerregistern.
  • Die Ausführungseinheit 1608, die eine Logik zum Ausführen von Ganzzahl- und Gleitkommaoperationen umfasst, befindet sich auch im Prozessor 1602. Der Prozessor 1602 umfasst in einer Ausführungsform ein Mikrocode- (µCode-) ROM zum Speichern von Mikrocode, der, wenn er ausgeführt wird, Algorithmen für bestimmte Makrobefehle ausführen oder komplexe Szenarien handhaben soll. Hier ist der Mikrocode potentiell aktualisierbar, um logische Fehler/Korrekturen für den Prozessor 1602 zu handhaben. Bei einer Ausführungsform umfasst die Ausführungseinheit 1608 eine Logik zum Handhaben eines gepackten Befehlssatzes 1609. Durch Einbeziehen des gepackten Befehlssatzes 1609 in den Befehlssatz eines Mehrzweckprozessors 1602 zusammen mit der zugehörigen Schaltung zum Ausführen der Befehle können die von vielen Multimediaanwendungen verwendeten Operationen unter Verwendung von gepackten Daten in einem Universalprozessor 1602 ausgeführt werden. Somit werden viele Multimediaanwendungen unter Verwendung der vollen Breite eines Datenbusses des Prozessors zur Durchführung von Operationen mit gepackten Daten effizienter beschleunigt und ausgeführt. Dies beseitigt potentiell die Notwendigkeit, kleinere Dateneinheiten über den Datenbus des Prozessors, um eine oder mehrere Operationen durchzuführen, mit jeweils einem Datenelement nach dem anderen zu übertragen.
  • Alternative Ausführungsformen einer Ausführungseinheit 1608 können auch in Mikrosteuerungen, eingebetteten Prozessoren, Grafikgeräten, DSPs und anderen Arten von Logikschaltungen verwendet werden. Das System 1600 umfasst einen Speicher 1620. Der Speicher 1620 umfasst eine dynamische Direktzugriffsspeichervorrichtung (DRAM), eine statische Direktzugriffsspeichervorrichtung (SRAM), eine Flash-Speichervorrichtung oder eine andere Speichervorrichtung. Der Speicher 1620 speichert Anweisungen und/oder Daten, die durch Datensignale dargestellt werden, die vom Prozessor 1602 auszuführen sind.
  • Es sei angemerkt, dass jedes der vorgenannten Merkmale oder Aspekte der Erfindung auf einer oder mehreren in 16 dargestellten Verbindungen verwendet werden kann. Beispielsweise implementiert eine nicht gezeigte On-Die-Verbindung (ODI) zum Koppeln der internen Einheiten des Prozessors 1602 einen oder mehrere der oben beschriebenen Aspekte der Erfindung. Oder die Erfindung ist mit einem Prozessorbus 1610 (z. B. einer anderen bekannten Hochleistungsrechnerverbindung), einem Speicherpfad 1618 mit hoher Bandbreite zum Speicher 1620, einer Punkt-zu-Punkt-Verbindung zum Grafikbeschleuniger 1612 (z. B. einer Peripheral Component Interconnect Express (PCIe) kompatiblen Struktur), einer Controller-Hub-Verbindung 1622, einer I/O-Verbindung oder einer anderen Verbindung (z. B. USB, PCI, PCIe) zur Kopplung der anderen abgebildeten Komponenten verbunden. Einige Beispiele für solche Komponenten umfassen den Audiocontroller 1636, den Firmware-Hub (Flash-BIOS) 1628, den drahtlosen Transceiver 1626, den Datenspeicher 1624, den Alt-I/O-Controller 1610, welcher Benutzereingabe- und Tastaturschnittstellen 1642 umfasst, einen seriellen Erweiterungsport 1638 wie Universal Serial Bus (USB) und eine Netzwerksteuerung 1634. Die Datenspeichervorrichtung 1624 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, ein CD-ROM-Gerät, ein Flash-Speichergerät oder ein anderes Massenspeichergerät umfassen.
  • Nun unter Bezugnahme auf 17 wird ein Blockdiagramm eines zweiten Systems 1700 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 17 gezeigt, ist das Multiprozessorsystem 1700 ein Punkt-zu-Punkt-Verbindungssystem und umfasst einen ersten Prozessor 1770 und einen zweiten Prozessor 1780, die über eine Punkt-zu-Punkt-Verbindung 1750 gekoppelt sind. Jeder der Prozessoren 1770 und 1780 kann eine beliebige Version eines Prozessors sein . In einer Ausführungsform sind 1752 und 1754 Teil einer seriellen kohärenten Punkt-zu-Punkt-Verbindungsstruktur, wie beispielsweise einer Hochleistungsarchitektur. Infolgedessen kann die Erfindung in der QPI-Architektur implementiert werden.
  • Obwohl nur mit zwei Prozessoren 1770, 1780 gezeigt, versteht es sich von selbst, dass der Umfang der vorliegenden Erfindung nicht darauf beschränkt ist. In anderen Ausführungsformen können ein oder mehrere zusätzliche Prozessoren in einem gegebenen Prozessor vorhanden sein.
  • Die Prozessoren 1770 und 1780 sind mit integrierten Speichersteuereinheiten 1772 bzw. 1782 gezeigt. Der Prozessor 1770 umfasst als Teil seiner Bussteuereinheiten auch Punkt-zu-Punkt-Schnittstellen (P-P-Schnittstellen) 1776 und 1778; In ähnlicher Weise umfasst der zweite Prozessor 1780 P-P-Schnittstellen 1786 und 1788. Die Prozessoren 1770, 1780 können Informationen über eine Punkt-zu-Punkt-Schnittstelle (P-P-Schnittstelle) 1750 unter Verwendung von P-P-Schnittstellenschaltungen 1778, 1788 austauschen. Wie in 17 gezeigt, koppeln die IMCs 1772 und 1782 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1732 und einem Speicher 1734, die Teile des Hauptspeichers sein können, die lokal an die jeweiligen Prozessoren angeschlossen sind.
  • Die Prozessoren 1770, 1780 tauschen jeweils Informationen mit einem Chipsatz 1790 über einzelne P-P-Schnittstellen 1752, 1754 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 1776, 1794, 1786, 1798 aus. Der Chipsatz 1790 tauscht auch Informationen mit einer Hochleistungsgrafikschaltung 1738 über eine Schnittstellenschaltung 1792 entlang einer Hochleistungsgrafikverbindung 1739 aus.
  • Ein gemeinsam genutzter Cache (nicht gezeigt) kann entweder in einem Prozessor oder außerhalb beider Prozessoren vorhanden sein; jedoch dabei mit den Prozessoren über P-P-Verbindung verbunden, so dass die lokalen Cache-Informationen entweder eines der beiden oder beider Prozessoren im gemeinsam genutzten Cache gespeichert werden können, wenn ein Prozessor in einen Energiesparmodus versetzt wird.
  • Der Chipsatz 1790 kann über eine Schnittstelle 1796 mit einem ersten Bus 1716 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1716 ein PCI-Bus (Peripheral Component Interconnect) oder ein Bus wie ein PCI Express-Bus oder ein anderer dritte Generation I/O-Verbindungsbus sein, obwohl der Umfang der vorliegenden Erfindung nicht darauf beschränkt ist.
  • Wie in 17 gezeigt, sind verschiedene I/O-Vorrichtungen 1714 mit dem ersten Bus 1716 zusammen mit einer Busbrücke 1718 verbunden, die den ersten Bus 1716 mit einem zweiten Bus 1720 verbindet. In einer Ausführungsform umfasst der zweite Bus 1720 einen Bus mit niedriger Pinanzahl (LPC). An den zweiten Bus 1720 sind verschiedene Vorrichtungen angeschlossen, darunter beispielsweise eine Tastatur und/oder eine Maus 1722, Kommunikationsgeräte 1727 und eine Speichereinheit 1728 wie ein Plattenlaufwerk oder ein anderes Massenspeichergerät, das häufig Anweisungen/Code und Daten 1730 in einer Ausführungsform umfasst. Ferner ist ein Audio I/O 1724 gezeigt, der mit dem zweiten Bus 1720 gekoppelt ist. Es ist zu beachten, dass andere Architekturen möglich sind, bei denen die enthaltenen Komponenten und Verbindungsarchitekturen variieren. Beispielsweise kann anstelle der Punkt-zu-Punkt-Architektur von 17 ein System einen Multi-Drop-Bus oder eine andere solche Architektur implementieren.
  • Nun mit Hinwendung zur nächsten 18 wird eine Ausführungsform eines System-On-Chip (SOC) - Designs gemäß der Erfindung dargestellt. Als spezielles, anschauliches Beispiel ist der SOC 1800 in der Benutzerausrüstung (UE) umfasst. In einer Ausführungsform bezieht sich UE auf ein beliebiges Gerät, das von einem Endbenutzer zur Kommunikation verwendet werden soll, wie z. B. ein Handtelefon, ein Smartphone, ein Tablet, ein ultradünnes Notebook, ein Notebook mit Breitbandadapter oder ein beliebiges anderes ähnliches Kommunikationsgerät. Häufig verbindet sich ein UE mit einer Basisstation oder einem Knoten, was potentiell einer Mobilstation (MS) in einem GSM-Netz entspricht.
  • Hier umfasst der SOC 1800 zwei Kerne 1806 und 1807. Ähnlich wie in der obigen Diskussion können die Kerne 1806 und 1807 einer Befehlssatzarchitektur entsprechen, wie beispielsweise einem Intel® Architecture Core™ -basierten Prozessor, einem Advanced Micro Devices, Inc. (AMD) -Prozessor, einem MIPSbasierten Prozessor, einem ARM-basierten Prozessordesign oder einem Kunden davon sowie deren Lizenznehmern oder Anwendern. Die Kerne 1806 und 1807 sind mit der Cache-Steuerung 1808 verbunden, die der Busschnittstelleneinheit 1809 und dem L2-Cache 1811 zugeordnet ist, um mit anderen Teilen des Systems 1800 zu kommunizieren. Die Verbindung 1810 umfasst eine On-Chip-Verbindung wie eine IOSF, AMBA oder andere Verbindung, die oben besprochen wurden, welche potentiell einen oder mehrere Aspekte von hierin Beschriebenem implementieren.
  • Die Schnittstelle 1810 stellt Kommunikationskanäle für die anderen Komponenten bereit, wie zum Beispiel ein Teilnehmeridentitätsmodul (SIM) 1830 zum Verbinden mit einer SIM-Karte, ein Boot-ROM 1835 zum Speichern des Boot-Codes zur Ausführung durch die Kerne 1806 und 1807 zum Initialisieren und Booten des SOC 1800, einen SDRAM-Controller 1840 zum Anschließen an einen externen Speicher (z. B. DRAM 1860), einen Flash-Controller 1845 zum Anschließen an einen nichtflüchtigen Speicher (z. B. Flash 1865), eine Peripheriesteuerung 1850 (z. B. serielle Peripherieschnittstelle) zum Anschließen von Peripheriegeräten, Video-Codecs 1820 und eine Videoschnittstelle 1825 zum Anzeigen und Empfangen von Eingaben (z. B. berührungsaktivierte Eingaben), eine GPU 1815 zum Ausführen grafischer Berechnungen usw. Jede dieser Schnittstellen kann Aspekte der hier beschriebenen Erfindung enthalten.
  • Zusätzlich zeigt das System Peripheriegeräte für die Kommunikation, wie beispielsweise ein Bluetooth-Modul 1870, ein 3G-Modem 1875, ein GPS 1885 und ein WIFI 1885. Man beachte, wie oben erwähnt, dass ein UE ein Funkgerät für die Kommunikation umfasst. Infolgedessen werden diese peripheren Kommunikationsmodule nicht alle benötigt. In einer UE-Form soll jedoch ein Funkgerät für die externe Kommunikation vorhanden sein.
  • Während die vorliegende Erfindung in Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, werden Fachleute auf diesem Gebiet der Technik zahlreiche Modifikationen und Variationen davon erkennen. Es ist beabsichtigt, dass die beigefügten Ansprüche alle derartigen Modifikationen und Variationen abdecken, die in den wahren Geist und Umfang dieser vorliegenden Erfindung fallen.
  • Ein Design kann verschiedene Stufen durchlaufen, von der Erzeugung über die Simulation bis zur Herstellung. Daten, die ein Design darstellen, können das Design auf verschiedene Arten darstellen. Erstens kann, wie es bei Simulationen nützlich ist, die Hardware unter Verwendung einer Hardwarebeschreibungssprache oder einer anderen Funktionsbeschreibungssprache dargestellt werden. Zusätzlich kann in einigen Phasen des Designprozesses ein Modell auf Schaltungsebene mit Logik- und/oder Transistor-Gates erzeugt werden. Darüber hinaus erreichen die meisten Designs zu einem bestimmten Zeitpunkt eine Datenebene, welche die physische Platzierung verschiedener Vorrichtungen im Hardwaremodell darstellt. In dem Fall, in dem herkömmliche Halbleiterherstellungstechniken verwendet werden, können die Daten, die das Hardwaremodell darstellen, jene Daten sein, die das Vorhandensein oder Fehlen verschiedener Merkmale auf verschiedenen Maskenschichten für Masken spezifizieren, die zur Herstellung der integrierten Schaltung verwendet werden. In jeder Darstellung des Designs können die Daten in irgendeiner Form eines maschinenlesbaren Mediums gespeichert werden. Ein Datenspeicher oder eine magnetische oder optische Speichervorrichtung wie eine Festplatte kann das maschinenlesbare Medium sein, um Informationen zu speichern, die über optische oder elektrische Wellen moduliert oder auf andere Weise erzeugt werden, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die den Code oder das Design anzeigt oder trägt, in dem Maße übertragen wird, in dem das Kopieren, Puffern oder erneute Übertragen des elektrischen Signals durchgeführt wird, wird eine neue Kopie erstellt. Somit kann ein Kommunikationsanbieter oder ein Netzwerkanbieter auf einem materiellen, maschinenlesbaren Medium wenigstens vorübergehend einen Artikel speichern, beispielsweise Informationen, die in eine Trägerwelle codiert sind, die Techniken von Ausführungsformen der vorliegenden Erfindung verkörpern.
  • Ein Modul, wie es hier verwendet wird, bezieht sich auf eine beliebige Kombination von Hardware, Software und/oder Firmware. Beispielsweise umfasst ein Modul Hardware, wie beispielsweise einen Mikrocontroller, der einem nichtflüchtigen Medium zugeordnet ist, um Code zu speichern, der zur Ausführung durch den Mikrocontroller angepasst ist. Daher bezieht sich die Bezugnahme auf ein Modul in einer Ausführungsform auf die Hardware, die speziell konfiguriert ist, um den Code zu erkennen und/oder auszuführen, der auf einem nichtflüchtigen Medium gehalten werden soll. Weiterhin bezieht sich in einer anderen Ausführungsform die Verwendung eines Moduls auf das nichtflüchtige Medium, das den Code aufweist, der speziell angepasst ist, um von dem Mikrocontroller ausgeführt zu werden, um vorbestimmte Operationen auszuführen. In einer weiteren Ausführungsform kann sich der Begriff Modul (in diesem Beispiel) auf die Kombination des Mikrocontrollers und des nichtflüchtigen Mediums beziehen. Oft variieren Modulgrenzen, die als getrennt dargestellt sind, häufig und überlappen einander potentiell. Beispielsweise können ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon gemeinsam nutzen, während möglicherweise eine unabhängige Hardware, Software oder Firmware beibehalten wird. In einer Ausführungsform umfasst die Verwendung des Begriffs Logik Hardware wie Transistoren, Register oder andere Hardware wie programmierbare Logikvorrichtungen.
  • Die Verwendung des Ausdrucks ‚konfiguriert auf‘ bezieht sich in einer Ausführungsform auf das Anordnen, Zusammenstellen, Herstellen, zum Verkauf Anbieten, Importieren und/oder Entwerfen einer Vorrichtung, von Hardware, von Logik oder eines Elements zur Ausführung einer bestimmten oder festgelegten Aufgabe. In diesem Beispiel ist eine Vorrichtung oder ein Element davon, das nicht in Betrieb ist, immer noch ‚konfiguriert‘, um eine bestimmte Aufgabe auszuführen, wenn sie/es entworfen, gekoppelt und/oder verbunden ist, um die bestimmte Aufgabe auszuführen. Als ein bloß veranschaulichendes Beispiel kann ein Logik-Gate während des Betriebs eine 0 oder eine 1 bereitstellen. Ein Logik-Gate, das ‚konfiguriert darauf‘ ist, dass es einem Takt ein Freigabesignal liefert, umfasst jedoch nicht jedes potenzielle Logik-Gate, das eine 1 oder 0 liefern kann. Umgekehrt ist das Logik-Gate eines, das auf eine beliebige Art und Weise verbunden ist, dass während des Betriebs der 1- oder 0-Ausgang den Takt aktivieren kann. Man beachte erneut, dass die Verwendung des Begriffs ‚konfiguriert für/auf‘ keine Operation erfordert, sondern sich stattdessen auf den latenten Zustand einer Vorrichtung, Hardware und/oder eines Elements konzentriert, wobei sich die Vorrichtung, die Hardware und/oder das Element im latenten Zustand entwickelt ist, um eine bestimmte Aufgabe auszuführen, wenn die Vorrichtung, die Hardware und/oder das Element in Betrieb sind.
  • Ferner bezieht sich die Verwendung der Ausdrücke ‚für‘, ‚fähig für/zu‘ und/oder ‚betreibbar für/zu‘ in einer Ausführungsform auf eine Vorrichtung, eine Logik, eine Hardware und/oder ein Element, die auf eine solche Weise konstruiert sind, um die Verwendung der Vorrichtung, der Logik, der Hardware und/oder des Elements in einer bestimmten Weise zu ermöglichen. Wie oben angemerkt, bezieht sich Verwendung von ‚für‘, ‚fähig für/zu‘ und/oder ‚betreibbar für/zu‘ in einer Ausführungsform auf den latenten Zustand einer Vorrichtung, einer Logik, einer Hardware und/oder eines Elements, in dem sich die Vorrichtung, Logik, Hardware und/oder das Element nicht in Betrieb befindet, aber so konzipiert ist, dass die Verwendung einer Vorrichtung in einer bestimmten Weise möglich ist.
  • Ein Wert, wie er hier verwendet wird, umfasst jede bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands. Häufig wird die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als 1 und 0 bezeichnet, die einfach binäre Logikzustände darstellen. Beispielsweise bezieht sich eine 1 auf einen hohen Logikpegel und eine 0 auf einen niedrigen Logikpegel. In einer Ausführungsform kann eine Speicherzelle, wie beispielsweise ein Transistor oder eine Flash-Zelle, einen einzelnen logischen Wert oder mehrere logische Werte halten. Es wurden jedoch auch schon andere Darstellungen von Werten in Computersystemen verwendet. Beispielsweise kann die Dezimalzahl ‚zehn‘ auch als ein Binärwert von 1010 und als ein Hexadezimalbuchstabe A dargestellt werden. Daher weist ein Wert eine beliebige Darstellung von Informationen auf, welche in einem Computersystem umfasst sein können.
  • Darüber hinaus können Zustände durch Werte oder Teile von Werten dargestellt werden. Beispielsweise kann ein erster Wert, beispielsweise eine logische Eins, einen Standard- oder Anfangszustand darstellen, während ein zweiter Wert, beispielsweise eine logische Null, einen Nicht-Standardzustand darstellen kann. Außerdem beziehen sich die Begriffe Zurücksetzen und Festlegen in einer Ausführungsform auf einen Standardwert bzw. einen aktualisierten Wert oder Zustand. Beispielsweise weist ein Standardwert möglicherweise einen hohen logischen Wert auf, d. h. zurückgesetzt, während ein aktualisierter Wert möglicherweise einen niedrigen logischen Wert aufweist, d. h. gesetzt. Man beachte, dass eine beliebige Kombination von Werten verwendet werden kann, um eine beliebige Anzahl von Zuständen darzustellen.
  • Die Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code, wie oben beschrieben, kann über Anweisungen oder Code, die/der auf einem maschinengerechten, maschinenlesbaren, computergerechten oder computerlesbaren Medium gespeichert sind/ist, implementiert werden, die/der durch ein Verarbeitungselement ausführbar sind/ist. Ein nichtflüchtiges maschinengerechtes/-lesbares Medium umfasst einen beliebigen Mechanismus, der Informationen in einer Form bereitstellt (d. h. speichert und/oder überträgt), welche von einer Maschine wie einem Computer oder einem elektronischen System gelesen werden kann. Beispielsweise umfasst ein nichtflüchtiges Medium, auf das von einer Maschine zugegriffen werden kann, einen Direktzugriffsspeicher (RAM), wie beispielsweise einen statischen RAM (SRAM) oder einen dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Speichermedium; Flash-Speichervorrichtungen; elektrische Speichervorrichtungen; optische Speichervorrichtungen; akustische Speichervorrichtungen; andere Formen von Speichervorrichtungen zum Speichern von Informationen, die von vorübergehenden (sich ausbreitenden) Signalen empfangen werden (z. B. Trägerwellen, Infrarotsignale, digitale Signale); usw., die von den nichtflüchtigen Medien zu unterscheiden sind, die von dort Informationen erhalten können.
  • Befehle, die zum Programmieren von Logik zum Ausführen von Ausführungsformen der Erfindung verwendet werden, können in einem Speicher im System gespeichert werden, wie z. B. einem DRAM, einem Cache, einem Flash-Speicher oder einem anderen Speicher. Darüber hinaus können die Anweisungen über ein Netzwerk oder über andere computerlesbare Medien verbreitet werden. Somit kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern oder Übertragen von Informationen in einer Form enthalten, die von einer Maschine (z. B. einem Computer) gelesen werden kann, ist jedoch nicht auf Disketten, optische Festplatten, Compact Discs, Nur-Lese-Speicher (CD-ROMs) und magnetooptische Festplatten, Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAM), löschbare programmierbare Nur-Lese-Speicher (EPROM), elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROM), magnetische oder optische Karten, Flash-Speicher oder einen materiellen maschinenlesbaren Speicher, der bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen von sich ausbreitenden Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) verwendet wird, beschränkt. Dementsprechend umfasst das computerlesbare Medium jede Art von materiellem maschinenlesbarem Medium, das zum Speichern oder Übertragen elektronischer Anweisungen oder Informationen in einer von einer Maschine (z. B. einem Computer) lesbaren Form geeignet ist.
  • In einigen Ausführungsformen kann eine elektronische Vorrichtung konfiguriert sein, um einen oder mehrere Prozesse, Techniken und/oder Verfahren wie hierin beschrieben oder Teile davon auszuführen. Ein solcher Prozess ist in X-2 dargestellt. Beispielsweise kann der Prozess das Durchführen einer SKP-Anpassung durch einen ersten und einen zweiten Retimer während eines ersten SKP sortierten Satzes (OS); und das Durchführen einer SKP-Anpassung durch einen dritten und vierten Retimer während eines zweiten SKP-OS umfassen.
  • In einigen Ausführungsformen kann eine elektronische Vorrichtung konfiguriert sein, um einen oder mehrere Prozesse, Techniken und/oder Verfahren wie hierin beschrieben oder Teile davon auszuführen. Beispielsweise kann der Prozess das Verbessern eines trainingssortierten Satzes (OS), um fünf Generationen von Geschwindigkeiten zu ermöglichen; und das Einstellen eines Konfigurationsregisters, um eine Gen5 PCIe-Geschwindigkeit anzuzeigen, umfassen.
  • In einigen Ausführungsformen kann eine elektronische Vorrichtung konfiguriert sein, um einen oder mehrere Prozesse, Techniken und/oder Verfahren wie hierin beschrieben oder Teile davon auszuführen. Beispielsweise kann der Prozess das Identifizieren eines Kanaltyps umfassen, der von einer Plattform bereitgestellt wird; das Identifizieren einer Anwesenheit von einem oder mehreren Retimern; und das Auswählen, basierend auf dem Kanaltyp und ob ein oder mehrere Retimer vorhanden sind, zwischen 25 Gigatransfers pro Sekunde (GT/s) und 32 GT/s.
  • In einigen Ausführungsformen kann eine elektronische Vorrichtung konfiguriert sein, um einen oder mehrere Prozesse, eine oder mehrere Techniken und/oder ein oder mehrere Verfahren wie hierin beschrieben oder Teile davon auszuführen. Beispielsweise kann der Prozess das Identifizieren einer Kanalverbindungsbreite aus einem Satz umfassen, der Breiten von x20, x24, x28 und x28 umfasst; und das Kommunizieren über eine Kanalverbindung basierend auf der identifizierten Kanalverbindungsbreite.
  • In einigen Ausführungsformen kann eine elektronische Vorrichtung konfiguriert sein, um einen oder mehrere Prozesse, eine oder mehrere Techniken und/oder ein oder mehrere Verfahren wie hierin beschrieben oder Teile davon auszuführen. Beispielsweise kann der Prozess das Identifizieren wiederhergestellter Taktdaten aus der Taktdaten-Wiederherstellung (CDR) umfassen; und das Senden von Sendedaten (TX-Daten) nach einem anfänglichen Training auf der Basis der wiederhergestellten Taktdaten.
  • In einigen Ausführungsformen kann ein Verfahren zum Kommunizieren gemäß einem PCIe-Standard bereitgestellt werden, welches das Durchführen einer SKP-Anpassung durch einen ersten und einen zweiten Retimer während eines ersten SKP-sortierten Satzes (OS) und das Durchführen durch einen dritten und vierter Retimer einer SKP-Anpassung während eines zweiten SKP-OS umfasst. Das Verfahren kann ferner das Reduzieren einer SKP-OS-Frequenz um die Hälfte umfassen. In einigen Fällen kann der erste SKP-OS back-to-back mit dem zweiten SKP-OS gesendet werden. Das Verfahren kann ferner das Verbessern eines trainingsdortierten Satzes (OS) umfassen, um fünf Generationen von Geschwindigkeiten zu ermöglichen, und das Einstellen eines Konfigurationsregisters, um eine PCIe-Geschwindigkeit der Generation 5 anzuzeigen. Ferner kann ein von einer Plattform bereitgestellter Kanaltyp identifiziert werden, das Vorhandensein eines oder mehrerer Retimer kann identifiziert werden, und die Kanalgeschwindigkeit kann ausgewählt werden (z. B. entweder aus 25 Gigatransfers pro Sekunde (GT/s) oder 32 GT/s) abhängig vom Kanaltyp und davon, ob ein oder mehrere Retimer vorhanden sind. Diese Auswahl kann auch basierend darauf bestimmt werden, ob die Vorwärtsfehlerkorrektur (Forward Error Correction, FEC) aktiviert oder unterstützt wird. Diese Geschwindigkeitsauswahl kann während des Verbindungstrainings erfolgen. Diese beispielhaften Verfahren können zusätzlich das Identifizieren einer Kanalverbindungsbreite aus einem Satz, der die Breiten x20, x24, x28 und x28 aufweist, und die Kommunikation über eine Kanalverbindung basierend auf der identifizierten Kanalverbindungsbreite umfassen. Ferner können wiederhergestellte Taktdaten von einer Taktdaten-Wiederherstellungskomponente identifiziert werden und Sendedaten können basierend auf den wiederhergestellten Taktdaten nach dem Training der Verbindung gesendet werden.
  • In einigen Ausführungsformen kann eine Vorrichtung bereitgestellt werden, um gemäß einem PCIebasierten Standard zu kommunizieren, wobei die Vorrichtung einen erweiterten zeitkontinuierlichen linearen Entzerrer (CTLE) und/oder einen Entscheidungsrückkopplungsentzerrer mit wenigstens 8 Abgriffen (DFE) und/oder eine T-Spule oder Pi-Spulen-Terminierung und/oder einen Datenstrukturfilter in Bezug auf die Taktdaten-Wiederherstellung (CDR) und/oder eine 4-Wege-Interleaved-Taktarchitektur, unter anderen beispielhaften Merkmalen und Komponenten umfasst.
  • In einigen Ausführungsformen kann eine Vorrichtung bereitgestellt werden, um gemäß einem Periphery Component Interconnect Express (PCIe) - Standard mit Kanalverlustcharakteristika, wie oben diskutiert, zu kommunizieren. Der PCIe-Standard kann ein PCIe-Standard der Generation 5 (oder höher) sein.
  • Die folgenden Beispiele betreffen Ausführungsformen gemäß dieser Beschreibung. Beispiel 1 ist eine Vorrichtung mit einem Port, um über eine Verbindung zu einer anderen Vorrichtung zu verbinden. Der Port umfasst eine Entzerrungslogik, um eine Entzerrung der Verbindung mit mehreren unterschiedlichen Datenraten durchzuführen. Die Entzerrungslogik soll ferner eine maximal unterstützte Datenrate in der Vielzahl von Datenraten bestimmen und an der Entzerrung der Verbindung mit der maximal unterstützten Datenrate teilnehmen, bevor die Verbindung mit einer oder mehreren anderen Datenraten entzerrt wird, die niedriger als die maximal unterstützte Datenrate in der Vielzahl von Datenraten sind.
  • Beispiel 2 kann den Gegenstand von Beispiel 1 umfassen, wobei die Entzerrungslogik versucht, die Verbindung mit einer der anderen Datenraten auszugleichen, die niedriger als die maximal unterstützte Datenrate ist, nachdem versucht wurde, die Verbindung mit der maximal unterstützten Datenrate zu entzerren.
  • Beispiel 3 kann den Gegenstand von Beispiel 2 aufweisen, ferner umfassend eine Erkennungslogik für grenzwertige Spuren, um Fehler beim Betrieb der Verbindung mit der maximal unterstützten Datenrate zu bestimmen, wobei die Entzerrungslogik versucht, die Verbindung mit der anderen niedrigeren Datenrate basierend auf den Fehlern im Betrieb der Verbindung bei der maximal unterstützten Datenrate zu entzerren.
  • Beispiel 4 kann den Gegenstand eines beliebigen Beispiels der Beispiele 2 - 3 umfassen, wobei die Entzerrungslogik ferner bestimmen soll, dass die Entzerrung der Verbindung mit der maximal unterstützten Datenrate nicht erfolgreich ist, und die Entzerrungslogik versucht, die Verbindung bei der anderen niedrigeren Datenrate basierend auf einer erfolglosen Entzerrung der Verbindung bei der maximal unterstützten Datenrate zu entzerren.
  • Beispiel 5 kann den Gegenstand eines beliebigen Beispiels der Beispiele 1 - 4 umfassen, wobei der Port ferner eine Protokollstapel-Logik besitzt, um in einen aktiven Verbindungszustand mit einer niedrigsten der mehreren Datenraten einzutreten, bevor an der Entzerrung der Verbindung mit der maximal unterstützten Datenrate teilgenommen wird.
  • Beispiel 6 kann den Gegenstand von Beispiel 5 umfassen, wobei das Bestimmen der maximal unterstützten Datenrate das Identifizieren einer höchsten Datenrate, die von der anderen Vorrichtung unterstützt wird, aus einer oder mehreren sortierten Sequenzen, die zum Trainieren der Verbindung verwendet werden, umfasst und wobei die maximal unterstützte Datenrate eine höchste Datenrate in der Vielzahl von Datenraten umfasst, die von der Vorrichtung und der anderen Vorrichtung unterstützt wird.
  • Beispiel 7 kann den Gegenstand eines beliebigen Beispiels der Beispiele 5 - 6 aufweisen, wobei die Protokollstapel-Logik in einen Wiederherstellungszustand eintreten soll, um an der Entzerrungsprozedur teilzunehmen.
  • Beispiel 8 kann den Gegenstand eines beliebigen Beispiels der Beispiele 1 - 7 umfassen, wobei die maximal unterstützte Datenrate eine Datenrate umfasst, die langsamer ist als die höchste Datenrate in der Vielzahl von Datenraten.
  • Beispiel 9 kann den Gegenstand eines beliebigen Beispiels der Beispiele 1 - 8 umfassen, wobei die Vielzahl von Datenraten einer Vielzahl von Generationen eines bestimmten Verbindungsprotokolls entspricht.
  • Beispiel 10 kann den Gegenstand von Beispiel 9 umfassen, wobei das bestimmte Verbindungsprotokoll ein auf Peripheral Interconnect Express (PCIe) basierendes Protokoll aufweist.
  • Beispiel 11 kann den Gegenstand eines beliebigen Beispiels der Beispiele 1 - 10 enthalten, wobei die Entzerrungslogik eine Entzerrung der Verbindung gemäß einem von einer Vielzahl von Entzerrungsmodi durchführen soll, wobei ein erster Entzerrungsmodus eine Entzerrung von jeder der Vielzahl von Datenraten der Reihe nach von der langsamsten zur schnellsten durchführen soll und wobei ein zweiter Entzerrungsmodus das Entzerren der Verbindung zuerst mit der maximal unterstützten Datenrate vor dem Entzerren der Verbindung mit einer oder mehreren anderen Datenraten in der Vielzahl von Datenraten niedriger als die maximal unterstützte Datenrate umfasst.
  • Beispiel 12 kann den Gegenstand von Beispiel 11 umfassen, wobei die Entzerrungslogik ferner identifizieren soll, dass die andere Vorrichtung den zweiten Entzerrungsmodus unterstützt, und wobei das Durchführen einer Entzerrung gemäß dem zweiten Entzerrungsmodus wenigstens teilweise darauf basiert zu identifizieren, dass sowohl die Vorrichtung als auch die andere Vorrichtung den zweiten Entzerrungsmodus unterstützen.
  • Beispiel 13 kann den Gegenstand von Beispiel 12 umfassen, wobei der Port einen oder mehrere sortierte Sätze empfangen soll, um ein oder mehrere gesetzte Bits zu identifizieren, um anzuzeigen, dass die andere Vorrichtung den zweiten Entzerrungsmodus unterstützt.
  • Beispiel 14 kann den Gegenstand eines beliebigen Beispiels der Beispiele 12 - 13 umfassen, wobei der erste Entzerrungsmodus einen Standard-Entzerrungsmodus aufweist und verwendet werden soll, wenn wenigstens eine Vorrichtung auf der Verbindung den zweiten Entzerrungsmodus nicht unterstützt.
  • Beispiel 15 kann den Gegenstand eines beliebigen Beispiels der Beispiele 1 - 14 umfassen, wobei die Vielzahl von Datenraten wenigstens vier definierte Datenraten aufweist, die wenigstens vier Generationen eines Verbindungsprotokolls entsprechen.
  • Beispiel 16 kann den Gegenstand von Beispiel 15 umfassen, wobei die höchste der wenigstens vier definierten Datenraten wenigstens 32 G/Ts aufweist.
  • Beispiel 17 ist ein Verfahren, umfassend: Trainieren einer Verbindung, um in einen aktiven Zustand einzutreten, wobei die Verbindung wenigstens eine erste Vorrichtung und eine zweite Vorrichtung verbindet und der aktive Zustand mit einer niedrigsten einer Vielzahl von Datenraten, die für ein Verbindungsprotokoll definiert sind, begonnen wird; Bestimmen, dass eine bestimmte der mehreren Datenraten die höchste Datenrate ist, die sowohl von der ersten als auch von der zweiten Vorrichtung unterstützt wird; Bestimmen, dass jede der ersten und zweiten Vorrichtungen einen bestimmten Verbindungsentzerrungsmodus unterstützt, wobei jede der ersten und zweiten Vorrichtungen nativ einen Standardverbindungsentzerrungsmodus unterstützt, wobei der Standardverbindungsentzerrungsmodus darin besteht, eine Entzerrung für jede der Vielzahl von Datenraten bis zur bestimmten Datenrate nacheinander von der langsamsten zur schnellsten durchzuführen, und wobei der bestimmte Verbindungsentzerrungsmodus das Entzerren der Verbindung zuerst mit der bestimmten Datenrate, bevor die Verbindung mit einer oder mehreren anderen Datenraten in der Vielzahl von Datenraten ausgeglichen wird, die niedriger sind als die bestimmten Datenrate, umfasst; und Durchführen einer Entzerrung der Verbindung gemäß dem bestimmten Verbindungsentzerrungsmodus.
  • Beispiel 18 kann den Gegenstand von Beispiel 17 umfassen, wobei das Bestimmen, dass sowohl die erste als auch die zweite Vorrichtung den bestimmten Verbindungsentzerrungsmodus unterstützt, das Empfangen eines sortierten Satzes mit einem oder mehreren gesetzten Bits umfasst, um anzuzeigen, dass die zweite Vorrichtung den bestimmten Verbindungsentzerrungsmodus unterstützt.
  • Beispiel 19 kann den Gegenstand von Beispiel 17 umfassen, wobei das Durchführen einer Entzerrung der Verbindung gemäß dem bestimmten Verbindungsentzerrungsmodus umfasst: Versuchen, die Verbindung mit der bestimmten Datenrate zu entzerren; und anschließend Versuchen, die Verbindung mit einer Datenrate zu entzerren, die niedriger ist als die bestimmte Datenrate.
  • Beispiel 20 kann den Gegenstand von Beispiel 19 umfassen, ferner umfassend: Bestimmen von Fehlern beim Betrieb der Verbindung mit der bestimmten Datenrate, wobei die Verbindung mit der anderen niedrigeren Datenrate basierend auf den Fehlern beim Betrieb der Verbindung bei der bestimmten Datenrate entzerrt wird.
  • Beispiel 21 kann den Gegenstand eines beliebigen Beispiels der Beispiele 19 - 20 umfassen, ferner umfassend: Bestimmen, dass der Versuch, die Verbindung mit der bestimmten Datenrate zu entzerren, erfolglos ist, worauf die Verbindung mit der anderen niedrigeren Datenrate basierend auf der erfolglosen Entzerrung der Verbindung mit der bestimmten Datenrate entzerrt wird.
  • Beispiel 22 kann den Gegenstand eines beliebigen Beispiels der Beispiele 17 - 21 umfassen, wobei die bestimmte Datenrate aus einer oder mehreren Trainingssequenzen bestimmt wird, die von der ersten und der zweiten Vorrichtung übermittelt werden.
  • Beispiel 23 kann den Gegenstand eines beliebigen Beispiels der Beispiele 17 - 22 umfassen, ferner umfassend das Eintreten in einen Wiederherstellungszustand vor dem Durchführen der Entzerrung.
  • Beispiel 24 kann den Gegenstand eines beliebigen Beispiels der Beispiele 17 - 23 umfassen, wobei die bestimmte Datenrate eine Datenrate aufweist, die langsamer ist als die höchste Datenrate in der Vielzahl von Datenraten.
  • Beispiel 25 kann den Gegenstand eines beliebigen Beispiels der Beispiele 17 - 24 umfassen, wobei die Vielzahl von Datenraten einer Vielzahl von Generationen eines bestimmten Verbindungsprotokolls entspricht.
  • Beispiel 26 kann den Gegenstand von Beispiel 25 umfassen, wobei das bestimmte Verbindungsprotokoll ein auf Peripheral Interconnect Express (PCIe) basierendes Protokoll umfasst.
  • Beispiel 27 kann den Gegenstand eines beliebigen Beispiels der Beispiele 17 - 26 umfassen, wobei die Vielzahl von Datenraten wenigstens vier definierte Datenraten aufweist, die wenigstens vier Generationen eines Verbindungsprotokolls entsprechen.
  • Beispiel 28 kann den Gegenstand von Beispiel 27 umfassen, wobei die höchste der wenigstens vier definierten Datenraten wenigstens 32 G/Ts aufweist.
  • Beispiel 29 ist ein System, das Mittel zur Durchführung des Verfahrens nach einem der Beispiele 17 bis 28 umfasst.
  • Beispiel 30 kann den Gegenstand von Beispiel 29 umfassen, wobei die Mittel ein computerlesbares Speichermedium umfassen, das Anweisungen speichert, die von einer Maschine ausführbar sind, um wenigstens einen Teil des Verfahrens von einem der Beispiele 17 - 28 auszuführen.
  • Beispiel 31 kann den Gegenstand eines beliebigen Beispiels der Beispiele 29 - 30 umfassen, wobei die Mittel eine Schaltung umfassen, um wenigstens einen Teil des Verfahrens eines beliebigen Beispiels der Beispiele 17 - 28 durchzuführen.
  • Beispiel 32 ist ein System mit einer ersten Vorrichtung und einer zweiten Vorrichtung. Die zweite Vorrichtung weist einen Port zum Verbinden mit der ersten Vorrichtung über eine Verbindung auf, wobei der Port eine Entzerrungslogik umfasst, um eine Entzerrung der Verbindung mit mehreren unterschiedlichen Datenraten durchzuführen. Die Entzerrungslogik dient ferner dazu, um: zu bestimmen, dass eine bestimmte der mehreren Datenraten die höchste Datenrate ist, die sowohl von der ersten Vorrichtung als auch von der zweiten Vorrichtung unterstützt wird; und zu versuchen, die Verbindung mit der bestimmten Datenrate zu entzerren, bevor die Verbindung mit einer oder mehreren anderen Datenraten in der Vielzahl von Datenraten, die niedriger als die bestimmte Datenrate sind, entzerrt wird.
  • Beispiel 33 kann den Gegenstand von Beispiel 32 umfassen, wobei die Entzerrungslogik ferner einen sortierten Satz von der ersten Vorrichtung zu empfangen hat, der ein oder mehrere Bits aufweist, welche identifizieren, dass die erste Vorrichtung einen bestimmten Entzerrungsmodus unterstützt, wobei die erste als auch die zweite Vorrichtung einen Standard-Entzerrungsmodus unterstützen, wobei der Standard-Entzerrungsmodus darin besteht, eine Entzerrung jeder der mehreren Datenraten bis zu der bestimmten Datenrate nacheinander von der langsamsten zur schnellsten durchzuführen, und wobei der bestimmte Entzerrungsmodus die Entzerrung der Verbindung zuerst auf der bestimmten Datenrate vor dem Entzerren der Verbindung mit einer oder mehreren anderen Datenraten in der Vielzahl von Datenraten, die niedriger als die bestimmte Datenrate sind, umfasst.
  • Beispiel 34 kann den Gegenstand von Beispiel 33 umfassen, ferner umfassend einen Retimer, um die physische Länge der Verbindung zu verlängern, wobei der Retimer zwischen der ersten und der zweiten Vorrichtung auf der Verbindung verbunden ist und eine Entzerrungslogik aufweist, um: anzuzeigen wenigstens einer der ersten und der zweiten Vorrichtung eine höchste der Vielzahl von Datenraten, die von dem Retimer unterstützt werden; und anzuzeigen wenigstens der ersten und der zweiten Vorrichtung, dass der Retimer den bestimmten Entzerrungsmodus unterstützt.
  • Beispiel 35 kann den Gegenstand eines beliebigen Beispiels der Beispiele 33 - 34 umfassen, wobei der bestimmte Entzerrungsmodus nur verwendet wird, wenn jede Vorrichtung auf der Verbindung anzeigt, dass sie den bestimmten Entzerrungsmodus unterstützt.
  • Beispiel 36 kann den Gegenstand eines beliebigen Beispiels der Beispiele 32 - 35 umfassen, wobei die zweite Vorrichtung ferner eine Erfassungslogik für grenzwertige Spuren aufweist, um Fehler beim Betrieb der Verbindung mit der bestimmten Datenrate zu bestimmen, wobei die Entzerrungslogik versuchen soll, die Verbindung basierend auf den Fehlern mit einer Datenrate zu entzerren, die unmittelbar unter der jeweiligen Datenrate liegt.
  • Beispiel 37 kann den Gegenstand von Beispiel 36 umfassen, ferner umfassend Systemsoftware zum Stilllegen der Verbindung vor der Entzerrung der Verbindung mit der Datenrate, die unmittelbar unter der bestimmten Datenrate liegt.
  • Beispiel 38 kann den Gegenstand eines beliebigen Beispiels der Beispiele 32 - 37 umfassen, wobei die Entzerrungslogik ferner bestimmen soll, dass die Entzerrung der Verbindung mit der bestimmten Datenrate nicht erfolgreich ist, und wobei die Entzerrungslogik versuchen soll, die Verbindung basierend auf der erfolglosen Entzerrung der Verbindung mit der bestimmten Datenrate mit einer Datenrate zu entzerren, die unmittelbar unter der bestimmten Datenrate liegt.
  • Beispiel 39 kann den Gegenstand eines beliebigen Beispiels der Beispiele 32 bis 38 umfassen, wobei die Entzerrungslogik versuchen soll, die Verbindung mit einer der anderen Datenraten zu entzerren, die niedriger als die bestimmte Datenrate ist, nachdem versucht wurde, die Verbindung mit der bestimmten Datenrate zu entzerren.
  • Beispiel 40 kann den Gegenstand von Beispiel 39 umfassen, wobei die Entzerrungslogik ferner bestimmen soll, dass die Entzerrung der Verbindung mit der bestimmten Datenrate nicht erfolgreich ist, und wobei die Entzerrungslogik versucht, die Verbindung mit der anderen niedrigeren Datenrate auf der Grundlage einer erfolglosen Entzerrung der Verbindung mit der bestimmten Datenrate zu entzerren.
  • Beispiel 41 kann den Gegenstand eines beliebigen Beispiels der Beispiele 32 - 40 umfassen, wobei der Port ferner eine Protokollstapel-Logik umfasst, um in einen aktiven Verbindungszustand mit einer niedrigsten der Vielzahl von Datenraten einzutreten, bevor an der Entzerrung der Verbindung auf der bestimmten Datenrate teilgenommen wird.
  • Beispiel 42 kann den Gegenstand von Beispiel 41 umfassen, wobei das Bestimmen der maximal unterstützten Datenrate das Identifizieren einer höchsten Datenrate, die von der anderen Vorrichtung unterstützt wird, aus einer oder mehreren sortierten Sequenzen, die zum Trainieren der Verbindung verwendet werden, umfasst und die maximal unterstützte Datenrate eine höchste Datenrate in der Vielzahl von Datenraten, die von der Vorrichtung und der anderen Vorrichtung unterstützt werden, umfasst.
  • Beispiel 43 kann den Gegenstand eines beliebigen Beispiels der Beispiele 41 - 42 umfassen, wobei die Protokollstapel-Logik in einen Wiederherstellungszustand eintreten soll, um an der Entzerrungsprozedur teilzunehmen.
  • Beispiel 44 kann den Gegenstand eines beliebigen Beispiels der Beispiele 32 - 43 umfassen, wobei die bestimmte Datenrate eine Datenrate umfasst, die langsamer ist als die höchste Datenrate in der Vielzahl von Datenraten.
  • Beispiel 45 kann den Gegenstand eines beliebigen Beispiels der Beispiele 32 - 44 umfassen, wobei die Vielzahl von Datenraten einer Vielzahl von Generationen eines bestimmten Verbindungsprotokolls entspricht.
  • Beispiel 46 kann den Gegenstand von Beispiel 45 umfassen, wobei das bestimmte Verbindungsprotokoll ein auf Peripheral Interconnect Express (PCIe) basierendes Protokoll umfasst.
  • Beispiel 47 kann den Gegenstand eines beliebigen Beispiels der Beispiele 32 - 46 umfassen, wobei die Vielzahl von Datenraten wenigstens vier definierte Datenraten aufweist, die wenigstens vier Generationen eines Verbindungsprotokolls entsprechen.
  • Beispiel 48 kann den Gegenstand von Beispiel 47 umfassen, wobei die höchste der wenigstens vier definierten Datenraten wenigstens 32 G/Ts aufweist.
  • Eine Bezugnahme in dieser Beschreibung auf „eine bestimmte Ausführungsform“ oder „eine beliebige Ausführungsform“ bedeutet, dass ein bestimmtes Merkmal, eine Struktur oder eine Eigenschaft, welche in Verbindung mit der Ausführungsform beschrieben wurden, in wenigstens einer Ausführungsform der vorliegenden Erfindung umfasst ist. Somit beziehen sich der Ausdruck „in einer Ausführungsform“ an verschiedenen Stellen in dieser Beschreibung nicht notwendigerweise alle auf dieselbe Ausführungsform. Darüber hinaus können die besonderen Merkmale, Strukturen oder Eigenschaften in einer oder mehreren Ausführungsformen auf jede geeignete Weise kombiniert werden.
  • In der vorstehenden Beschreibung wurde eine detaillierte Beschreibung unter Bezugnahme auf bestimmte beispielhafte Ausführungsformen gegeben. Es ist jedoch offensichtlich, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne vom breiteren Sinn und Umfang der Erfindung abzuweichen, wie dieser in den beigefügten Ansprüchen dargelegt ist. Die Beschreibung und die Zeichnungen sind dementsprechend eher in einem veranschaulichenden als in einem einschränkenden Sinne auszulegen. Darüber hinaus bezieht sich die vorstehende Verwendung der Ausführungsform und anderer beispielhafter Ausdrücke nicht notwendigerweise auf dieselbe Ausführungsform oder dasselbe Beispiel, sondern kann sich auf unterschiedliche und deutlich unterschiedene Ausführungsformen als auch möglicherweise auf dieselbe Ausführungsform beziehen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 15/721518 [0001]

Claims (28)

  1. Vorrichtung, umfassend: einen Port zum Verbinden mit einer anderen Vorrichtung über eine Verbindung, wobei der Port umfasst: eine Entzerrungslogik zum Durchführen einer Entzerrung der Verbindung auf einer Vielzahl von unterschiedlichen Datenraten, wobei die Entzerrungslogik ferner dazu dient: eine maximal unterstützte Datenrate in der Vielzahl von Datenraten zu bestimmen; und an der Entzerrung der Verbindung auf der maximal unterstützten Datenrate teilzunehmen, bevor die Verbindung mit einer oder mehreren anderen Datenraten entzerrt wird, die niedriger sind als die maximal unterstützte Datenrate in der Vielzahl von Datenraten.
  2. Vorrichtung nach Anspruch 1, wobei die Entzerrungslogik versuchen soll, die Verbindung mit einer der anderen Datenraten zu entzerren, die niedriger als die maximal unterstützte Datenrate ist, nachdem versucht wurde, die Verbindung mit der maximal unterstützten Datenrate zu entzerren.
  3. Vorrichtung nach Anspruch 2, ferner umfassend eine Erkennungslogik für grenzwertige Spuren zum Bestimmen von Fehlern im Betrieb der Verbindung mit der maximal unterstützten Datenrate, wobei die Entzerrungslogik versucht, die Verbindung mit der anderen niedrigeren Datenrate basierend auf den Fehlern im Betrieb der Verbindung mit der maximal unterstützten Datenrate zu entzerren.
  4. Vorrichtung nach einem beliebigen Anspruch der Ansprüche 2-3, wobei die Entzerrungslogik ferner bestimmt, dass die Entzerrung der Verbindung mit der maximal unterstützten Datenrate nicht erfolgreich ist, und wobei die Entzerrungslogik basierend auf einer erfolglosen Entzerrung der Verbindung mit der maximal unterstützten Datenrate versucht, die Verbindung mit der anderen niedrigeren Datenrate zu entzerren.
  5. Vorrichtung nach einem beliebigen Anspruch der Ansprüche 1-4, wobei der Port ferner eine Protokollstapel-Logik umfasst, um in einen aktiven Verbindungszustand bei einer niedrigsten der Vielzahl von Datenraten einzutreten, bevor an der Entzerrung der Verbindung bei der maximal unterstützten Datenrate teilgenommen wird.
  6. Vorrichtung nach Anspruch 5, wobei das Bestimmen der maximal unterstützten Datenrate das Identifizieren einer höchsten Datenrate, die von der anderen Vorrichtung unterstützt wird, aus einer oder mehreren sortierten Sequenzen umfasst, die zum Trainieren der Verbindung verwendet werden, und wobei die maximal unterstützte Datenrate eine höchste Datenrate der Vielzahl von Datenraten, die von der Vorrichtung und der anderen Vorrichtung unterstützt werden, umfasst.
  7. Vorrichtung nach einem beliebigen Anspruch der Ansprüche 5-6, wobei die Protokollstapel-Logik in einen Wiederherstellungszustand eintreten soll, um an der Entzerrungsprozedur teilzunehmen.
  8. Vorrichtung nach einem beliebigen Anspruch der Ansprüche 1-7, wobei die maximal unterstützte Datenrate eine Datenrate umfasst, die langsamer ist als die höchste Datenrate in der Vielzahl von Datenraten.
  9. Vorrichtung nach einem beliebigen Anspruch der Ansprüche 1-8, wobei die Vielzahl der Datenraten einer Vielzahl von Generationen eines bestimmten Verbindungsprotokolls entspricht.
  10. Vorrichtung nach Anspruch 9, wobei das bestimmte Verbindungsprotokoll ein auf Peripheral Interconnect Express (PCIe) basierendes Protokoll umfasst.
  11. Vorrichtung nach einem beliebigen Anspruch der Ansprüche 1-10, wobei die Entzerrungslogik eine Entzerrung der Verbindung gemäß einem von einer Vielzahl von Entzerrungsmodi durchführen soll, wobei ein erster Entzerrungsmodus eine Entzerrung auf jeder der Vielzahl von Datenraten der Reihe nach von der langsamsten zur schnellsten durchführen soll, und wobei ein zweiter Entzerrungsmodus das Entzerren der Verbindung zuerst mit der maximal unterstützten Datenrate umfasst, bevor die Verbindung mit einer oder mehreren anderen Datenraten in der Vielzahl von Datenraten entzerrt wird, die niedriger als die maximal unterstützte Datenrate sind.
  12. Vorrichtung nach Anspruch 11, wobei die Entzerrungslogik ferner zum Identifizieren dient, dass die andere Vorrichtung den zweiten Entzerrungsmodus unterstützt, und wobei das Durchführen einer Entzerrung gemäß dem zweiten Entzerrungsmodus wenigstens teilweise auf der Identifizierung basiert, dass sowohl die Vorrichtung als auch die andere Vorrichtung den zweiten Entzerrungsmodus unterstützen.
  13. Vorrichtung nach Anspruch 12, wobei der Port einen oder mehrere sortierte Sätze empfangen soll, um einen oder mehrere gesetzte Bits zu identifizieren, um anzuzeigen, dass die andere Vorrichtung den zweiten Entzerrungsmodus unterstützt.
  14. Vorrichtung nach einem beliebigen Anspruch der Ansprüche 12-13, wobei der erste Entzerrungsmodus einen Standard-Entzerrungsmodus umfasst und verwendet werden soll, wenn wenigstens eine Vorrichtung auf der Verbindung den zweiten Entzerrungsmodus nicht unterstützt.
  15. Vorrichtung nach einem beliebigen Anspruch der Ansprüche 1-14, wobei die Vielzahl der Datenraten wenigstens vier definierte Datenraten umfasst, die wenigstens vier Generationen eines Verbindungsprotokolls entsprechen.
  16. Vorrichtung nach Anspruch 15, wobei die höchste der wenigstens vier definierten Datenraten wenigstens 32 G/Ts aufweist.
  17. Verfahren, umfassend: Trainieren einer Verbindung, um in einen aktiven Zustand einzutreten, wobei die Verbindung wenigstens eine erste Vorrichtung und eine zweite Vorrichtung verbindet und der aktive Zustand mit einer niedrigsten einer Vielzahl von Datenraten, die für ein Verbindungsprotokoll definiert sind, begonnen wird; Bestimmen, dass eine bestimmte der Vielzahl von Datenraten die höchste Datenrate ist, die sowohl von der ersten als auch von der zweiten Vorrichtung unterstützt wird; Bestimmen, dass jede der ersten und zweiten Vorrichtungen einen bestimmten Verbindungsentzerrungsmodus unterstützt, wobei jede der ersten und zweiten Vorrichtungen nativ einen Standardverbindungsentzerrungsmodus unterstützt, wobei der Standardverbindungsentzerrungsmodus darin besteht, eine Entzerrung jeder der Vielzahl von Datenraten bis zur bestimmten Datenrate in der Reihenfolge von der langsamsten zur schnellsten durchzuführen und wobei der bestimmte Verbindungsentzerrungsmodus das Entzerren der Verbindung zuerst mit der bestimmten Datenrate umfasst, bevor die Verbindung mit einer oder mehreren anderen Datenraten in der Vielzahl von Datenraten entzerrt wird, die niedriger als die bestimmte Datenrate sind; und Durchführen einer Entzerrung der Verbindung gemäß dem bestimmten Verbindungsentzerrungsmodus.
  18. Verfahren nach Anspruch 17, wobei das Bestimmen, dass jede der ersten und zweiten Vorrichtungen den bestimmten Verbindungsentzerrungsmodus unterstützt, das Empfangen eines sortierten Satzes mit einem oder mehreren gesetzten Bits umfasst, um anzuzeigen, dass die zweite Vorrichtung den bestimmten Verbindungsentzerrungsmodus unterstützt.
  19. Verfahren nach Anspruch 18, wobei das Verbindungsprotokoll ein auf Peripheral Component Interconnect Express (PCIe) basierendes Protokoll umfasst und der sortierte Satz eine modifizierte Version einer von PCIe definierten Trainingssequenz umfasst.
  20. System, umfassend: eine erste Vorrichtung; eine zweite Vorrichtung, wobei die zweite Vorrichtung einen Port zum Verbinden mit der ersten Vorrichtung über eine Verbindung umfasst, wobei der Port umfasst: Entzerrungslogik zum Durchführen einer Entzerrung der Verbindung mit einer Vielzahl von unterschiedlichen Datenraten, wobei die Entzerrungslogik ferner dazu dient: zu bestimmen, dass eine bestimmte der Vielzahl von Datenraten die höchste Datenrate ist, die sowohl von der ersten Vorrichtung als auch von der zweiten Vorrichtung unterstützt wird; und zu versuchen, die Verbindung mit der bestimmten Datenrate zu entzerren, bevor die Verbindung mit einer oder mehreren anderen Datenraten in der Vielzahl von Datenraten entzerrt wird, die niedriger als die bestimmte Datenrate sind.
  21. System nach Anspruch 20, wobei die Entzerrungslogik ferner einen sortierten Satz von der ersten Vorrichtung empfängt, der ein oder mehrere Bits umfasst, die identifizieren, dass die erste Vorrichtung einen bestimmten Entzerrungsmodus unterstützt, wobei sowohl die erste als auch die zweite Vorrichtung einen Standard-Entzerrungsmodus unterstützen, wobei der Standard-Entzerrungsmodus die Entzerrung jeder der Vielzahl von Datenraten bis hinauf zur bestimmten Datenrate nacheinander von der langsamsten zur schnellsten durchführen soll, und wobei der bestimmte Entzerrungsmodus die Verbindung zuerst mit der bestimmten Datenrate entzerrt, bevor die Verbindung auf einer oder mehreren anderen Datenraten in der Vielzahl von Datenraten, die niedriger als die bestimmte Datenrate sind, entzerrt wird.
  22. System nach Anspruch 21, ferner umfassend einen Retimer zum Verlängern der physischen Länge der Verbindung, wobei der Retimer zwischen der ersten und der zweiten Vorrichtung auf die Verbindung eingebunden ist und eine Entzerrungslogik umfasst, um: anzuzeigen einer höchsten der Vielzahl von Datenraten, die von dem Retimer unterstützt werden, an wenigstens einer der ersten und zweiten Vorrichtungen; und anzuzeigen an wenigstens einer der ersten und zweiten Vorrichtungen, dass der Retimer den jeweiligen Entzerrungsmodus unterstützt.
  23. System nach einem beliebigen Anspruch der Ansprüche 21-22, wobei der bestimmte Entzerrungsmodus nur verwendet wird, wenn jede Vorrichtung auf der Verbindung identifiziert, dass es den bestimmten Entzerrungsmodus unterstützt.
  24. System nach einem beliebigen Anspruch der Ansprüche 20-23, wobei die zweite Vorrichtung ferner eine Erfassungslogik für grenzwertige Spuren umfasst, um Fehler im Betrieb der Verbindung bei der bestimmten Datenrate zu bestimmen, wobei die Entzerrungslogik versucht, die Verbindung bei einer Datenrate unmittelbar unterhalb der jeweiligen Datenrate basierend auf den Fehlern zu entzerren.
  25. System nach Anspruch 24, ferner umfassend eine Systemsoftware zum Stilllegen der Verbindung vor dem Entzerren der Verbindung mit der Datenrate, die unmittelbar unter der bestimmten Datenrate liegt.
  26. System nach einem beliebigen Anspruch der Ansprüche 20-25, wobei die Entzerrungslogik ferner bestimmt, dass die Entzerrung der Verbindung mit der bestimmten Datenrate nicht erfolgreich ist, und wobei die Entzerrungslogik versucht, die Verbindung sofort mit einer Datenrate unterhalb der bestimmten Datenrate basierend auf der erfolglosen Entzerrung der Verbindung mit der bestimmten Datenrate zu entzerren.
  27. System, umfassend: Mittel zum Trainieren einer Verbindung, um in einen aktiven Zustand einzutreten, wobei die Verbindung wenigstens eine erste Vorrichtung und eine zweite Vorrichtung verbindet und der aktive Zustand mit einer niedrigsten von einer Vielzahl von Datenraten, die für ein Verbindungsprotokoll definiert sind, begonnen wird; Mittel zum Bestimmen, dass eine bestimmte der Vielzahl von Datenraten die höchste Datenrate ist, die sowohl von der ersten als auch von der zweiten Vorrichtung unterstützt wird; Mittel zum Bestimmen, dass jede der ersten und zweiten Vorrichtungen einen bestimmten Verbindungsentzerrungsmodus unterstützt, wobei jede der ersten und zweiten Vorrichtungen nativ einen Standardverbindungsentzerrungsmodus unterstützt, wobei der Standardverbindungsentzerrungsmodus darin besteht, eine Entzerrung von jeder der Vielzahl von Datenraten bis zu der bestimmten Datenrate nacheinander von der langsamsten zur schnellsten durchzuführen, und wobei der bestimmte Verbindungsentzerrungsmodus das Entzerren der Verbindung zuerst mit der bestimmten Datenrate umfasst, bevor die Verbindung mit einer oder mehreren anderen Datenraten in der Vielzahl von Datenraten entzerrt wird, die niedriger sind als die bestimmte Datenrate; und Mittel zum Durchführen einer Entzerrung der Verbindung gemäß dem bestimmten Verbindungsentzerrungsmodus.
  28. System nach Anspruch 27, wobei die Mittel wenigstens ein nichtflüchtiges maschinenlesbares Speichermedium umfassen, das Anweisungen speichert, die von einer Maschine ausführbar sind.
DE112018002466.0T 2017-05-12 2018-05-11 Umgehung der entzerrung bei niedrigeren datenraten Pending DE112018002466T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762505619P 2017-05-12 2017-05-12
US62/505,619 2017-05-12
US15/721,518 2017-09-29
US15/721,518 US10880137B2 (en) 2017-05-12 2017-09-29 Bypassing equalization at lower data rates
PCT/US2018/032441 WO2018209311A1 (en) 2017-05-12 2018-05-11 Bypassing equalization at lower data rates

Publications (1)

Publication Number Publication Date
DE112018002466T5 true DE112018002466T5 (de) 2020-01-23

Family

ID=64098103

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018002466.0T Pending DE112018002466T5 (de) 2017-05-12 2018-05-11 Umgehung der entzerrung bei niedrigeren datenraten

Country Status (3)

Country Link
US (2) US10880137B2 (de)
DE (1) DE112018002466T5 (de)
WO (1) WO2018209311A1 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10521391B1 (en) * 2018-11-29 2019-12-31 Apple Inc. Chip to chip interface with scalable bandwidth
CN111273923B (zh) * 2018-12-05 2022-04-12 华为技术有限公司 基于PCIe接口的FPGA升级方法
US11151075B2 (en) * 2018-12-14 2021-10-19 Ati Technologies Ulc Data communications with enhanced speed mode
CN109857690B (zh) * 2019-01-03 2023-04-28 华为技术有限公司 驱动器的应用***、驱动器和数据传输方法
US11397701B2 (en) * 2019-04-30 2022-07-26 Intel Corporation Retimer mechanisms for in-band link management
US11061849B2 (en) 2019-10-17 2021-07-13 Dell Products L.P. Adaptive transmitter preset mechanism in PCIe link equalization procedure
US11973624B2 (en) 2019-11-29 2024-04-30 Intel Corporation Extended link-training time negotiated on link start-up
JP2021197583A (ja) * 2020-06-10 2021-12-27 キオクシア株式会社 電子機器および方法
KR102518285B1 (ko) 2021-04-05 2023-04-06 에스케이하이닉스 주식회사 PCIe 인터페이스 및 인터페이스 시스템
KR102519480B1 (ko) * 2021-04-01 2023-04-10 에스케이하이닉스 주식회사 PCIe 장치 및 이를 포함하는 컴퓨팅 시스템
KR102415309B1 (ko) 2020-06-16 2022-07-01 에스케이하이닉스 주식회사 인터페이스 장치 및 그 동작 방법
US11546128B2 (en) 2020-06-16 2023-01-03 SK Hynix Inc. Device and computing system including the device
JP2023034909A (ja) 2021-08-31 2023-03-13 キオクシア株式会社 半導体記憶装置
CN114137919A (zh) * 2021-11-26 2022-03-04 浙江中控技术股份有限公司 工业控制***的控制方法及装置、处理设备和存储介质
CN114416636A (zh) * 2021-12-17 2022-04-29 飞腾信息技术有限公司 一种pcie设备链路速率匹配方法、片上***和计算机设备
US11953974B2 (en) * 2022-07-13 2024-04-09 Dell Products L.P. Method for PCIe fallback in a CXL system
CN117555597B (zh) * 2023-11-15 2024-04-26 无锡芯素科技有限公司 多通道速率均衡的高速链路及其数据传输方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7158566B2 (en) * 2000-07-24 2007-01-02 Eric Morgan Dowling High-speed adaptive interconnect architecture with nonlinear error functions
US7586987B2 (en) 2002-10-08 2009-09-08 Broadcom Corporation High speed data link with transmitter equalization and receiver equalization
US7092437B2 (en) * 2003-04-25 2006-08-15 Duke University Methods and systems for determining an optimal training interval in a communications system
US7436777B2 (en) * 2004-01-12 2008-10-14 Hewlett-Packard Development Company, L.P. Failed link training
US7653167B2 (en) * 2006-09-07 2010-01-26 Intel Corporation Phase deglitch circuit for phase interpolator for high-speed serial I/O applications
US20090245110A1 (en) * 2008-03-27 2009-10-01 Connolly Brian J System and method for improving equalization in a high speed serdes environment
EP2378727A1 (de) 2010-04-14 2011-10-19 Texas Instruments Limited Kanalentzerrung mit anwendungsspezifischer Digitalsignalverarbeitung in digitalen Hochgeschwindigkeitsübertragungssystemen
US8599913B1 (en) * 2011-08-01 2013-12-03 Pmc-Sierra Us, Inc. Data regeneration apparatus and method for PCI express
US9847891B2 (en) 2011-08-24 2017-12-19 Nvidia Corporation System and method for detecting reuse of an existing known high-speed serial interconnect link
US8902964B2 (en) 2012-09-29 2014-12-02 Intel Corporation Equalization effort-balancing of transmit finite impulse response and receive linear equalizer or receive decision feedback equalizer structures in high-speed serial interconnects
US20140281067A1 (en) * 2013-03-15 2014-09-18 Debendra Das Sharma Apparatus, system, and method for performing link training and equalization
US8958471B2 (en) * 2013-03-15 2015-02-17 Intel Corporation Method, apparatus, and system for sliding matrix scoreboard utilized in auto feedback closed loops
US10148508B1 (en) * 2013-08-14 2018-12-04 Aquantia Corp. Method and system for ethernet transceiver rate control
US9419746B1 (en) * 2014-05-16 2016-08-16 Altera Corporation Apparatus and methods for tuning a communication link for power conservation
US9325536B2 (en) 2014-09-19 2016-04-26 Dell Products, Lp Enhanced receiver equalization

Also Published As

Publication number Publication date
US10880137B2 (en) 2020-12-29
US20200313940A1 (en) 2020-10-01
WO2018209311A1 (en) 2018-11-15
US20180331864A1 (en) 2018-11-15
US11005692B2 (en) 2021-05-11

Similar Documents

Publication Publication Date Title
DE112018002466T5 (de) Umgehung der entzerrung bei niedrigeren datenraten
DE112013007724B4 (de) System, vorrichtung und verfahren zur gemeinsamen benutzung von speicher und i/o-diensten zwischen knoten
DE112013007734B4 (de) Geräte, verfahren und systeme zum identifizieren eines protokolls, das eine physikalische verbindung nutzt
DE112013007752B3 (de) Hochleistungsverdrahtungs-Bitübertragungsschicht
DE112013007732B4 (de) System und Vorrichtung zum Bestimmen und Melden eines Fehlers auf einer Bahn
DE112018002469T5 (de) Alternative Protokollaushandlung in einer Hochleistungskopplungsstruktur
DE112017006557T5 (de) Bimodale phy für geringe latenz in hochgeschwindigkeitsverbindungswegen
DE102020116195A1 (de) Leistungsmanagement für neu-treiber-vorrichtungen
DE102020128760A1 (de) Zustände mit teilweiser verbindungsbreite für mehrbahnverbindungen
DE112017001430T5 (de) In-band-retimer-registerzugriff
DE102020120102A1 (de) Globale dauerhafte Speicherleerung
DE102019129626A1 (de) Vorwärtsfehlerkorrekturmechanismus für datenübertragung über mehrspurige verbindungen
DE102018005753A1 (de) Serdes link training
DE112013007726T5 (de) Verbesserungen eines Zwischenverbindungs-Retimers
DE112017003301T5 (de) Interprozessor-Energiezustandswechsel
DE112017006523T5 (de) Retimer mit kurzer latenzzeit
DE112017005002T5 (de) Verbindungsphysikalischer schichtschnittstellenadapter
DE112018001138T5 (de) Hochleistungsverbindung
DE102020125353A1 (de) Transaktionsschichtpaketformat
DE102018128569A1 (de) Nebensprecherzeugung in einem link für mehrere spuren während des spurtestens
DE102020130978A1 (de) Seitenbandsignalisierung über vorhandene hilfsstifte einer schnittstelle
DE112016004300T5 (de) Verfahren, gerät und system zum zuweisen von cache unter verwendung einer verkehrsklasse
DE102018007025A1 (de) System, Verfahren und Einrichtung zur SRIS-Modus-Auswahl für PCIe
DE102019109130A1 (de) System, verfahren und einrichtung für dvsec für eine effiziente peripheriegeräteverwaltung
DE102019109858A1 (de) Breiten- und Frequenzumsetzung mit PHY-Schicht-Vorrichtungen

Legal Events

Date Code Title Description
R130 Divisional application to

Ref document number: 112018008250

Country of ref document: DE

Ref document number: 112018008248

Country of ref document: DE

R130 Divisional application to

Ref document number: 112018008248

Country of ref document: DE

Ref document number: 112018008250

Country of ref document: DE