-
TECHNISCHES GEBIET
-
Die vorliegende Offenbarung betrifft im Allgemeinen das Gebiet der Computerentwicklung und insbesondere Softwareentwicklung, welche die Koordination von sich gegenseitig bedingenden beschränkten Systemen einbezieht.
-
HINTERGRUND
-
Fortschritte bei Halbleiterverarbeitung und Logikdesign führten zu einer Zunahme der Menge an Logik, die bei Geräten mit integrierten Schaltungen vorhanden sein kann. Als Folge haben sich Konfigurationen von Computersystemen von einer einzelnen oder von mehreren integrierten Schaltungen in einem System zu mehreren Kernen, mehreren Hardware-Threads und mehreren logischen Prozessoren, die bei individuellen integrierten Schaltungen vorhanden sind, sowie zu anderen Schnittstellen, die innerhalb von solchen Prozessoren integriert sind, entwickelt. Ein Prozessor oder eine integrierte Schaltung umfasst typischerweise eine einzelne physikalische Prozessor-Chiplage, wobei die Prozessor-Chiplage jegliche Anzahl an Kernen, Hardware-Threads oder logischen Prozessoren, Schnittstellen, Speicher, Controller-Hubs usw. einschließen kann.
-
Infolge der erhöhten Fähigkeit, mehr Rechenleistung in kleineren Pakete unterzubringen, haben kleinere Computergeräte an Popularität zugenommen. Smartphones, Tablets, ultraflache Notebooks und andere Teilnehmerendgeräte haben exponentiell zugenommen. Diese kleineren Geräte sind jedoch sowohl für Datenspeicherung als auch für komplexe Verarbeitung, die den Formfaktor überschreitet, von Servern abhängig. Daher hat die Nachfrage auf dem Hochleistungsrechnermarkt (d. h., Serverspeicherplatz) ebenfalls zugenommen. Zum Beispiel gibt es in modernen Servern normalerweise nicht nur einen einzelnen Prozessor mit mehreren Kernen, sondern auch mehrere physische Prozessoren (die auch als Mehrfachsockel bezeichnet werden), um die Rechenleistung zu erhöhen. Aber während die Rechenleistung zusammen mit der Anzahl an Geräten in einem Computersystem zunimmt, wird die Kommunikation zwischen Sockeln und anderen Bauelementen kritischer.
-
Tatsächlich sind Kopplungsstrukturen von traditionelleren Mehrpunktverbindungsbussen, die hauptsächlich elektrische Kommunikationen behandeln, zu voll ausgereiften Kopplungsstruktur-Architekturen gewachsen, die eine schnelle Kommunikation erleichtern. Unglücklicherweise werden die entsprechenden Anforderungen den Fähigkeiten von vorhandenen Kopplungsstruktur-Architekturen zugeordnet, während die Nachfrage nach zukünftigen Prozessoren mit noch höheren Verbrauchsraten zunimmt.
-
Aus
US 2006/0041696 A1 geht eine Vorrichtung einschließlich einer physikalischen Schicht-Logik hervor, die einen Link initialisiert, wobei der Link eine Anzahl von Bahnen einschließt sowie einen Sender und Empfänger, die mit jeder Bahn gekoppelt sind.
-
Der Erfindung liegt die Aufgabe zu Grunde, die Kommunikation mittels einer Trainingssequenz zu verbessern. Diese Aufgabe wird durch die nebengeordneten Ansprüche gelöst.
-
Figurenliste
-
- 1 veranschaulicht ein vereinfachtes Blockdiagramm eines Systems, das eine serielle Punkt-zu-Punkt-Kopplungsstruktur einschließt, um I/O-Geräte in einem Computersystem gemäß einer Ausführungsform zu verbinden;
- 2 veranschaulicht ein vereinfachtes Blockdiagramm eines Schichtenprotokollstapels gemäß einer Ausführungsform;
- 3 veranschaulicht eine Ausführungsform eines Transaktionsdeskriptors.
- 4 veranschaulicht eine Ausführungsform eines seriellen Punkt-zu-Punkt-Links.
- 5 veranschaulicht Ausführungsformen von potenziellen Hochleistungs-Kopplungsstruktur- (HPI) -Systemkonfigurationen.
- 6 veranschaulicht eine Ausführungsform eines mit einer HPI verbundenen Schichtenprotokollstapels.
- 7 veranschaulicht eine Darstellung einer beispielhaften Zustandsmaschine.
- 8 veranschaulicht beispielhafte Steuerungssupersequenzen.
- 9 veranschaulicht ein Ablaufdiagramm eines beispielhaften Übergangs in einen Partialbreite-Zustand.
- 10 veranschaulicht eine Ausführungsform eines Blockdiagramms für ein Computersystem, das einen Mehrkemprozessor einschließt.
- 11 veranschaulicht eine weitere Ausführungsform eines Blockdiagramms für ein Computersystem, das einen Mehrkemprozessor einschließt.
- 12 veranschaulicht eine Ausführungsform eines Blockdiagramms für einen Prozessor.
- 13 veranschaulicht eine weitere Ausführungsform eines Blockdiagramms für ein Computersystem, das einen Prozessor einschließt.
- 14 veranschaulicht eine Ausführungsform eines Blocks für ein Computersystem, das Mehrprozessorsockel einschließt.
- 15 veranschaulicht eine weitere Ausführungsform eines Blockdiagramms für ein Computersystem.
-
Gleiche Bezugsnummern und Bezeichnungen in den verschiedenen Zeichnungen verweisen auf ähnliche Elemente.
-
AUSFÜHRLICHE BESCHREIBUNG
-
In der folgenden Beschreibung sind zahlreiche konkrete Angaben dargelegt, wie Beispiele von bestimmten Typen von Prozessoren und Systemkonfigurationen, bestimmte Hardwareanordnungen, bestimmte Details über Architektur und Mikroarchitektur, spezielle Registerkonfigurationen, spezielle Befehlstypen, spezielle Systemkomponenten, spezielle Prozessor-Pipeline-Stufen, spezielle Kopplungsstrukturschichten, spezielle Paket-/Transaktionskonfigurationen, spezielle Transaktionsnamen, spezielle Protokollaustauschvorgänge, spezielle Linkbreiten, spezielle Implementierungen und Operationen usw., um ein gründliches Verständnis der vorliegenden Erfindung zu gewährleisten. Für einen Fachmann ist es jedoch offensichtlich, dass diese spezifischen Details nicht notwendigerweise eingesetzt werden müssen, um den Gegenstand der vorliegenden Offenbarung umzusetzen. In anderen Fällen wurde eine detaillierte Beschreibung von bekannten Komponenten oder Verfahren, wie z. B. spezielle und alternative Prozessorarchitekturen, spezielle Logikschaltungen/spezieller Code für beschriebene Algorithmen, spezieller Firmware-Code, spezielle Verbindungsoperationen auf niedriger Ebene, spezielle Logikkonfigurationen, spezielle Herstellungstechniken und Materialien, spezielle Compiler-Implementierungen, spezielle Umsetzung von Algorithmen in Code, spezielle Abschaltvorgangs- und Gating-Techniken/Logik und andere spezielle Betriebseinzelheiten von Computersystemen vermieden, um eine unnötige Verschleierung der vorliegenden Erfindung zu vermeiden.
-
Obwohl die folgenden Ausführungsformen unter Bezugnahme auf Energieeinsparung, Energieeffizienz, Verarbeitungseffizienz und so weiter bei speziellen integrierten Schaltungen wie bei Computerplattformen oder Mikroprozessoren beschrieben sein können, sind andere Ausführungsformen auf andere Arten von integrierten Schaltungen und Logikbaugruppen anwendbar. Ähnliche Techniken und Lehren von hier beschriebenen Ausführungsformen können auf andere Arten von Schaltungen oder Halbleiterbauelementen angewandt werden, die auch aus diesen Merkmalen Nutzen ziehen können. Beispielsweise sind die offenbarten Ausführungsformen nicht auf Server-Computersysteme, Desktop-ComputerSysteme, Laptops, Ultrabooks™ begrenzt, sondern können auch in anderen Geräten, wie Handgeräten, Smartphones, Tablets, anderen dünnen Notebooks, Systemen auf einem Chip-(SOC) -Geräten und Embedded-Anwendungen verwendet werden. Einige Beispiele von Handheld-Geräten sind u. a. Mobiltelefone, Internet-Protokollgeräte, Digitalkameras, Personal Digital Assistants (PDAs) und Handheld-PCs. Hier können ähnliche Techniken für eine Hochleistungs-Kopplungsstruktur angewandt werden, um die Leistung bei einer Niedrigenergie-Kopplungsstruktur zu erhöhen (oder gar Energie zu sparen). Eingebettete Anwendungen schließen normalerweise u. a. einen Mikrocontroller, digitalen Signalprozessor (DSP), ein System auf einem Chip, Netzwerkcomputer (NetPC), Settop-Boxen, Netzwerkhubs, Wide Area Network- (WAN) -Switches oder andere Systeme ein, welche die nachstehend gelehrten Funktionen und Operationen durchführen können. Des Weiteren sind die hier beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physische Computergeräte begrenzt, sondern können auch Softwareoptimierungen für Energieeinsparung und -effizienz betreffen. Wie ohne Weiteres offensichtlich in der nachfolgenden Beschreibung, können die Ausführungsformen von hier beschriebenen Verfahren, Vorrichtungen und Systemen (ob unter Bezugnahme auf Hardware, Firmware, Software oder eine Kombination davon) ausgeglichen mit Leistungsüberlegungen als für eine „grüne Technologie“-Zukunft entscheidend angesehen werden.
-
Während Computersysteme sich weiterentwickeln, werden die Komponenten darin komplexer. Die Kopplungsstruktur-Architektur, um zwischen den Komponenten zu koppeln und zu kommunizieren, hat auch an Komplexität zugenommen, um sicherzustellen, dass die Nachfrage nach Bandbreite für einen optimalen Komponentenbetrieb befriedigt wird. Des Weiteren erfordern unterschiedliche Marktsegmente unterschiedliche Aspekte von Kopplungsstruktur-Architekturen, sodass sie sich für den entsprechenden Markt eignen. Beispielsweise erfordern Server eine höhere Leistung, während das mobile Ökosystem manchmal in der Lage ist, die Gesamtleistung für Energieeinsparungen zu opfern. Und doch ist es ein singulärer Zweck von den meisten Fabrics, die höchstmögliche Leistung mit maximaler Energieeinsparung bereitzustellen. Weiter kann eine Vielzahl von unterschiedlichen Kopplungsstrukturen potenziell aus dem hier beschriebenen Gegenstand einen Nutzen ziehen.
-
Die Peripheral Component Interconnect (PCI) Express (PCIe) - Kopplungsstruktur-Fabric-Architektur und die QuickPath Interconnect- (QPI) -Fabric-Architektur können neben anderen Beispielen potenziell u. a. gemäß einem oder mehreren hier beschriebenen Prinzipien verbessert werden. Zum Beispiel ist es ein primäres Ziel von PCIe, Komponenten und Geräten von unterschiedlichen Lieferanten zu ermöglichen, in einer offenen Architektur zu interoperieren, die mehrere Marktsegmente überspannt; Clients (Desktops und mobile), Server (Standard und Unternehmen) und eingebettete und Kommunikationsgeräte. PCI Express ist eine universelle Hochleistungs-I/O-Kopplungsstruktur für eine Vielzahl von Computing- und Kommunikationsplattformen. Einige PCI-Attribute, wie deren Verwendungsmodell, Laden-Speichern-Architektur und Softwareschnittstellen, sind bei den Revisionen aufrechterhalten worden, während vorhergehende Parallelbusimplementierungen durch eine in hohem Maße skalierbare, vollserielle Schnittstelle ersetzt wurden. Die neueren Versionen von PCI Express nutzen Fortschritte bei Punkt-zu-Punkt-Kopplungsstrukturen, switchbasierter Technologie und paketiertem Protokoll, um neue Leistungsniveaus und Merkmale zu liefern. Power Management, Quality Of Service (QoS), Hot-Plug/Hot-Swap-Unterstützung, Datenintegrität und Fehlerbehandlung sind einige der fortgeschrittenen Merkmale, die von PCI Express unterstützt werden. Obwohl die primäre Erörterung hierin unter Bezugnahme auf eine neue HPI-Architektur erfolgt, können Aspekte der hier beschriebenen Erfindung auf andere Kopplungsstruktur-Architekturen, wie eine PCIekonforme Architektur, eine QPI-konforme Architektur, eine MIPI-konforme Architektur, eine Hochleistungsarchitektur oder auf eine andere bekannte Kopplungsstruktur-Architektur angewandt werden.
-
Unter Bezugnahme auf 1 ist eine Ausführungsform einer Fabric veranschaulicht, die aus Punkt-zu-Punkt-Links besteht, die einen Satz von Komponenten verbinden. Das System 100 schließt Prozessor 105 und Systemspeicher 110 gekoppelt mit dem Controller-Hub 115 ein. Der Prozessor 105 kann beliebige Verarbeitungselemente, wie z. B. einen Mikroprozessor, einen Hostprozessor, einen eingebetteten Prozessor, einen Koprozessor oder einen anderen Prozessor einschließen. Der Prozessor 105 ist über den Front-Side-Bus (FSB) 106 mit dem Controller-Hub 115 gekoppelt. Bei einer Ausführungsform ist der FSB 106 eine serielle Punkt-zu-Punkt-Kopplungsstruktur, wie sie nachfolgend beschrieben wird. Bei einer weiteren Ausführungsform schließt der Link 106 eine serielle, differenzielle Kopplungsstruktur-Architektur ein, die einem unterschiedlichen Kopplungsstruktur-Standard entspricht.
-
Der Systemspeicher 110 umfasst eine beliebige Speichereinheit, wie einen Random Access Memory (RAM), nichtflüchtigen (NV) Speicher oder einen anderen Speicher, der für die Komponenten des Systems 100 zugänglich ist. Der Systemspeicher 110 ist über die Speicherschnittstelle 116 mit dem Controller-Hub 115 gekoppelt. Beispiele einer Speicherschnittstelle schließen eine Doppel-Datenrate- (DDR) -Speicherschnittstelle, eine zweikanalige DDR-Speicherschnittstelle und eine dynamischer RAM- (DRAM) - Speicherschnittstelle ein.
-
Bei einer Ausführungsform kann der Controller-Hub 115 einen Root-Hub, Root-Komplex oder Root-Controller wie in einer PCIe-Verbindungshierarchie einschließen. Beispiele eines Controller-Hubs 115 schließen einen Chipsatz, Memory-Controller-Hub (MCH), eine Northbridge, einen Kopplungsstruktur-Controller-Hub (ICH), eine Southbridge und einen Root-Controller/-Hub ein. Häufig verweist der Begriff Chipsatz auf zwei physikalisch getrennte Controller-Hubs, wie beispielsweise einen Memory-Controller-Hub (MCH), der mit einem Kopplungsstruktur-Controller-Hub (ICH) gekoppelt ist. Zu beachten ist, dass gegenwärtige Systeme häufig den MCH integriert im Prozessor 105 einschließen, während der Controller 115 mit I/O-Geräten in ähnlicher Weise wie nachfolgend beschrieben kommuniziert. Bei einigen Ausführungsformen wird das Peer-To-Peer-Routing optional durch Root-Komplex 115 unterstützt.
-
Hier ist der Controller-Hub 115 durch den seriellen Link 119 mit Switch/Brücke 120 gekoppelt. Die I/O-Module 117 und 121, die auch als Schnittstellen/Ports 117 und 121 bezeichnet werden können, können einen Schichtenprotokollstapel zum Bereitstellen der Kommunikation zwischen dem Controller-Hub 115 und Switch 120 einschließen/implementieren. Bei einer Ausführungsform sind mehrere Geräte fähig, mit dem Switch 120 gekoppelt zu werden.
-
Switch/Brücke 120 routet Pakete/Nachrichten von Gerät 125 Upstream, d. h., eine Hierarchie in Richtung auf einen Root-Komplex nach oben zum Controller-Hub 115, und Downstream, d. h., eine Hierarchie nach unten weg von einem Root-Controller von Prozessor 105 oder Systemspeicher 110 zum Gerät 125. Der Switch 120 wird bei einer Ausführungsform als eine logische Baugruppe von mehreren virtuellen PCI-zu-PCI-Brücken-Geräten bezeichnet. Das Gerät 125 umfasst jedes interne oder externe Gerät oder jede Komponente, die an ein elektronisches System gekoppelt ist, wie z. B. an ein I/O-Gerät, einen Netzwerkschnittstellen-Controller (NIC), eine Add-in-Karte, einen Audioprozessor, einen Netzwerkprozessor, ein Festplattenlaufwerk, ein Speichergerät, ein CD-/DVD-ROM, einen Monitor, einen Drucker, eine Maus, eine Tastatur, einen Router, ein tragbares Speichergerät, ein Firewire-Gerät, ein Universal Serial Bus- (USB) -Gerät, einen Scanner und andere Eingabe-/Ausgabegeräte. Häufig wird im PCIe-Fachjargon ein solches Gerät als ein Endpunkt bezeichnet. Obwohl nicht speziell gezeigt, kann das Gerät 125 eine Brücke (z. B. eine PCIe-zu-PCI/PCI-X-Brücke) einschließen, um Legacy- oder andere Versionen von Geräten oder von solchen Geräten unterstützte Kopplungsstruktur-Fabrics zu unterstützen.
-
Ein Grafikbeschleuniger 130 kann ebenfalls durch einen seriellen Link 132 mit dem Controller-Hub 115 gekoppelt sein. Bei einer Ausführungsform ist der Grafikbeschleuniger 130 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Switch 120 und demgemäß I/O-Gerät 125 ist dann mit dem ICH gekoppelt. Die I/O-Module 131 und 118 implementieren auch einen Schichtenprotokollstapel zum Kommunizieren zwischen dem Grafikbeschleuniger 130 und dem Controller-Hub 115. Ähnlich der vorstehenden MCH-Erörterung kann ein Grafikcontroller oder der Grafikbeschleuniger 130 selbst im Prozessor 105 integriert sein.
-
Unter jetziger Bezugnahme auf 2 ist eine Ausführungsform eines Schichtenprotokollstapels veranschaulicht. Der Schichtenprotokollstapel 200 kann jede Form eines Schichtenkommunikationsstapels wie einen QPI-Stapel, einen PCIe-Stapel, einen HPI-Stapel der nächsten Generation oder einen anderen Schichtstapel einschließen. Bei einer Ausführungsform kann der Protokollstapel 200 die Transaktionsschicht 205, die Linkschicht 210 und die physikalische Schicht 220 einschließen. Eine Schnittstelle wie die Schnittstellen 117, 118, 121, 122, 126 und 131 in 1 kann als Kommunikationsprotokollstapel 200 dargestellt sein. Die Darstellung als ein Kommunikationsprotokollstapel kann auch als ein Modul oder eine Schnittstelle bezeichnet werden, die einen Protokollstapel implementiert/einschließt.
-
Pakete können verwendet werden, um Informationen zwischen Komponenten zu kommunizieren. Pakete können in der Transaktionsschicht 205 und der Datenlinkschicht 210 gebildet sein, um die Informationen von der Sendekomponente zur Empfangskomponente zu transportieren. Während sich die gesendeten Pakete durch die anderen Schichten bewegen, werden sie durch zusätzliche Informationen erweitert, die nötig sind, um Pakete auf diesen Schichten zu behandeln. Auf der Empfangsseite erfolgt der umgekehrte Prozess und die Pakete werden von der Darstellung ihrer physikalischen Schicht 220 zur Darstellung der Datenlinkschicht 210 und schließlich (für Transaktionsschichtpakete) in die Form umgewandelt, die von der Transaktionsschicht 205 des Empfangsgeräts verarbeitet werden kann.
-
Bei einer Ausführungsform kann die Transaktionsschicht 205 eine Schnittstelle zwischen einem Prozessorkern eines Gerätes und der Kopplungsstruktur-Architektur wie der Datenlinkschicht 210 und der physikalischen Schicht 220 bereitstellen. In dieser Hinsicht kann eine Hauptverantwortung der Transaktionsschicht 205 das Zusammenfügen und Zerlegen von Paketen (d. h., Transaktionsschichtpaketen oder TLPs) einschließen. Die Übersetzungsschicht 205 kann auch kreditbasierte Flusssteuerung für TLPs verwalten. Bei einigen Implementierungen können Aufteilungstransaktionen, d. h., Transaktionen, bei denen Anfrage und Antwort durch Zeit getrennt sind, verwendet werden, die einem Link neben anderen Beispielen ermöglichen, anderen Verkehr zu transportieren, während das Zielgerät Daten für die Antwort sammelt.
-
Kreditbasierte Flusssteuerung kann verwendet werden, um virtuelle Kanäle und Netzwerke zu realisieren, welche die Kopplungsstruktur-Fabric verwenden. Bei einem Beispiel kann ein Gerät eine Anfangsmenge von Krediten für jeden der Empfangspuffer in der Transaktionsschicht 205 anbieten. Ein externes Gerät am entgegengesetzten Ende des Links, wie Controller-Hub 115 in 1, kann die Anzahl der von jedem TLP verbrauchten Kredite zählen. Eine Transaktion kann gesendet werden, wenn die Transaktion keine Kreditgrenze überschreitet. Nach dem Empfangen einer Antwort wird eine Kreditmenge wiederhergestellt. Ein Beispiel eines Vorteils neben anderen potenziellen Vorteilen solch eines Kreditschemas ist, dass die Latenzzeit der Kreditrückgabe die Leistung nicht beeinträchtigt, vorausgesetzt, dass die Kreditgrenze nicht erreicht wird.
-
Bei einer Ausführungsform können vier Transaktionsadressbereiche einen Konfigurationsadressbereich, einen Speicheradressbereich, einen Ein-/Ausgabeadressbereich und einen Nachrichtenadressbereich einschließen. Speicherplatztransaktionen schließen ein oder mehrere aus Leseanfragen und Schreibanfragen ein, um Daten an einen/von einem speicherzugeordneten Ort zu übertragen. Bei einer Ausführungsform sind Speicherplatztransaktionen fähig, zwei unterschiedliche Befehlstypen, wie beispielsweise, ein kurzes Adressformat wie eine 32-Bit-Adresse oder ein langes Adressformat wie eine 64-Bit-Adresse zu verwenden. Konfigurationsraumtransaktionen können verwendet werden, um auf Konfigurationsraum von verschiedenen mit der Kopplungsstruktur verbundenen Geräten zuzugreifen. Transaktionen bezüglich des Konfigurationsraums können Leseanfragen und Schreibanfragen einschließen. Nachrichtenraumtransaktionen (oder einfach Nachrichten) können auch definiert sein, um In-Band-Kommunikation zwischen Kopplungsstruktur-Agenten zu unterstützen. Deshalb kann bei einer beispielhaften Ausführungsform die Transaktionsschicht 205 Paketheader/-nutzdaten 206 zusammenfügen.
-
Unter kurzer Bezugnahme auf 3 ist eine beispielhafte Ausführungsform eines Transaktionsschicht-Paketdeskriptors veranschaulicht. Bei einer Ausführungsform kann der Transaktionsdeskriptor 300 ein Mechanismus sein, um Transaktionsinformationen zu transportieren. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 300 die Identifikation von Transaktionen in einem System. Andere mögliche Verwendungen schließen Nachverfolgungsmodifikationen von Standardtransaktionsordnung und das Verbinden von Transaktion mit Kanälen ein. Zum Beispiel kann der Transaktionsdeskriptor 300 das globale Kennungsfeld 302, Attributfeld 304 und Kanalkennungsfeld 306 einschließen. Im veranschaulichten Beispiel ist das globale Kennungsfeld 302 als das lokale Transaktionskennungsfeld 308 und das Quellenkennungsfeld 310 umfassend dargestellt. Bei einer Ausführungsform ist die globale Transaktionskennung 302 für alle ausstehenden Anfragen einzigartig.
-
Gemäß einer Implementierung ist das lokale Transaktionskennungsfeld 308 ein von einem anfordernden Agenten generiertes Feld und kann für alle ausstehenden Anfragen einzigartig sein, die einen Abschluss für diesen anfordernden Agenten erfordern. Des Weiteren bestimmt in diesem Beispiel die Quellenkennung 310 eindeutig den anfragenden Agenten innerhalb einer Kopplungsstruktur-Hierarchie. Dementsprechend stellt das lokale Transaktionskennungsfeld 308 zusammen mit der Quellen-ED 310 die 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 potenziell verwendet, um zusätzliche Informationen bereitzustellen, welche die Modifikation der Standardbehandlung von Transaktionen ermöglichen. Bei einer Ausführungsform schließt das Attributfeld 304 das Prioritätsfeld 312, reservierte Feld 314, Ordnungsfeld 316 und das Kein-Snoop-Feld 318 ein. Hier kann das Prioritätsteilfeld 312 von einem Initiator modifiziert werden, um eine Priorität für die Transaktion zuzuweisen. Das reservierte Attributfeld 314 bleibt für eine zukünftige oder lieferantendefinierte Verwendung reserviert. Mögliche Verwendungsmodelle, die Prioritäts- oder Sicherheitsattribute verwenden, können unter Verwendung des reservierten Attributfeldes implementiert werden.
-
Bei diesem Beispiel wird das Ordnungsattributfeld 316 verwendet, um optionale Informationen bereitzustellen, die die Art der Ordnung, welche die Standardordnungsregel modifizieren kann, übermittelt. Gemäß einer beispielhaften Implementierung bezeichnet ein Ordnungsattribut „0“, dass Standardordnungsregeln anzuwenden sind, wobei ein Ordnungsattribut „1“ eine entspannte Ordnung bezeichnet, bei der Schreibvorgänge in der gleichen Richtung von Schreibvorgängen passiert werden können und Lesezugriffsausführungen Schreibvorgänge in der gleichen Richtung passieren können. Das Snoop-Attributfeld 318 wird verwendet, um zu bestimmen, ob Transaktionen per Snooping abgefragt werden. Wie gezeigt bestimmt das Kanalkennungsfeld 306 einen Kanal, mit dem eine Transaktion verbunden ist.
-
Zur Erörterung von 2 zurückkehrend kann eine Linkschicht 210, die auch als Datenlinkschicht 210 bezeichnet wird, als eine Zwischenstufe zwischen der Transaktionsschicht 205 und der physikalischen Schicht 220 agieren. Bei einer Ausführungsform liegt eine Verantwortung der Datenlinkschicht 210 darin, einen zuverlässigen Mechanismus bereitzustellen, um Transaktionsschichtpakete (TLPs) zwischen zwei Komponenten bei einem Link auszutauschen. Eine Seite der Datenlinkschicht 210 akzeptiert TLPs, die von der Transaktionsschicht 205 zusammengefügt sind, wendet die Paketsequenzkennung 211, d. h., eine Identifikationsnummer oder Paketnummer, an, berechnet einen Fehlererkennungscode und wendet ihn an, d. h., CRC 212, und unterbreitet die modifizierten TLPs der physikalischen Schicht 220 zur Übertragung über eine physikalische zu einem externen Gerät.
-
Bei einem Beispiel schließt die physikalische Schicht 220 den logischen Unterblock 221 und den elektrischen Unterblock 222 ein, um ein Paket physikalisch zu einem externen Gerät zu senden. Hier ist der logische Unterblock 221 für die „digitalen“ Funktionen der physikalischen Schicht 221 verantwortlich. In dieser Hinsicht kann der logische Unterblock einen Sendeteil einschließen, um ausgehende Informationen für das Senden durch den physikalischen Unterblock 222 vorzubereiten, und einen Empfängerteil, um empfangene Informationen vor dem Weitergeben an die Linkschicht 210 zu bestimmen und vorzubereiten.
-
Der physikalische Block 222 schließt einen Sender und einen Empfänger ein. Der Sender wird durch den logischen Unterblock 221 mit Symbolen versorgt, die der Sender serialisiert und zu einem Peripheriegerät sendet. Der Empfänger wird mit serialisierten Symbolen von einem Peripheriegerät versorgt und wandelt die empfangenen Signale in einen Bitstrom um. Der Bitstrom wird deserialisiert und an den logischen Unterblock 221 bereitgestellt. Bei einer beispielhaften Ausführungsform wird ein 8b/10b-Übertragungscode eingesetzt, wobei Zehn-Bit-Symbole gesendet/empfangen werden. Hier werden spezielle Symbole verwendet, um ein Paket mit den Frames 223 zu bilden. Außerdem stellt bei einem Beispiel der Empfänger auch einen Symboltakt bereit, der vom eingehenden seriellen Strom wiedergewonnen wurde.
-
Obwohl die Transaktionsschicht 205, Linkschicht 210 und physikalische Schicht 220 wie vorstehend angegeben unter Bezugnahme auf eine spezielle Ausführungsform eines Protokollstapels (wie ein PCIe-Protokoll-Stapel) beschrieben werden, ist ein Schichtenprotokollstapel in dieser Hinsicht nicht eingeschränkt. Tatsächlich kann jedes Schichtenprotokoll eingeschlossen/implementiert sein und hier beschriebene Merkmale übernehmen. Als ein Beispiel kann ein Port/eine Schnittstelle, der/die als ein Schichtenprotokoll dargestellt ist, Folgendes einschließen: (1) eine erste Schicht, um Pakete zusammenzufügen, d. h., eine Transaktionsschicht; eine zweite Schicht, um Pakete zu sequentialisieren, d. h., eine Linkschicht; und eine dritte Schicht, um die Pakete zu senden, d. h., eine physikalische Schicht. Als ein spezielles Beispiel wird ein HPI-Schichtenprotokoll wie hiernach beschrieben verwendet.
-
Unter jetziger Bezugnahme auf 4 ist eine beispielhafte Ausführungsform einer seriellen Punkt-zu-Punkt-Fabric veranschaulicht. Ein serieller Punkt-zu-Punkt-Link kann jeden Übertragungsweg für das Senden von seriellen Daten einschließen. Bei der gezeigten Ausführungsform kann ein Link zwei differenziell angesteuerte Niederspannungssignalpaare einschließen: ein Sendepaar 406/411 und ein Empfangspaar 412/407. Dementsprechend schließt das Gerät 405 die Sendelogik 406 ein, um Daten zum Gerät 410 zu senden, und die Empfangslogik 407, um Daten vom Gerät 410 zu empfangen. Es sind mit anderen Worten zwei Sendepfade, d. h., die Pfade 416 und 417, und zwei Empfangspfade, d. h., die Pfade 418 und 419, bei einigen Implementierungen eines Links eingeschlossen.
-
Ein Übertragungsweg verweist auf jeden Pfad für das Senden von Daten, wie eine Sendeleitung, eine Kupferleitung, eine optische Leitung, ein drahtloser Kommunikationskanal, ein Infrarotkommunikationslink oder ein anderer Kommunikationspfad. Eine Verbindung zwischen zwei Geräten, wie Gerät 405 und Gerät 410, wird als ein Link bezeichnet, wie beispielsweise Link 415. Ein Link kann eine Bahn unterstützen - jede Bahn stellt einen Satz von Differenzsignalpaaren (ein Paar für Senden, ein Paar für Empfangen) dar. Um Bandbreite zu skalieren, kann ein Link mehrere mit xN bezeichnete Bahnen ansammeln, wobei N jede unterstützte Linkbreite ist wie 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
-
Ein Differenzpaar kann auf zwei Übertragungswege, wie die Leitungen 416 und 417 verweisen, um Differenzsignale zu senden. Wenn beispielsweise die Leitung 416 von einem niedrigen Spannungspegel zu einem hohen Spannungspegel umschaltet, d. h., eine ansteigende Flanke, geht die Leitung 417 von einem hohen Logikpegel zu einem niedrigen Logikpegel über, d. h., eine fallende Flanke. Differenzsignale weisen neben anderen beispielhaften Vorteilen potenziell bessere elektrische Eigenschaften auf, wie bessere Signalintegrität, d. h., Kreuzkopplung, Spannungsüberschreitung/-unterschreitung, Klingeln. Dies erlaubt ein besseres Zeitfenster, das schnellere Sendefrequenzen ermöglicht.
-
Bei einer Ausführungsform wird eine neue HPI bereitgestellt. Die HPI kann eine cachekohärente, linkbasierte Kopplungsstruktur der nächsten Generation einschließen. Als ein Beispiel kann die HPI in Hochleistungs-Computing-Plattformen wie Workstations oder Servern verwendet werden einschließlich in Systemen, bei denen PCIe oder ein anderes Kopplungsstruktur-Protokoll normalerweise verwendet wird, um Prozessoren, Beschleuniger, I/O-Geräte und dergleichen zu verbinden. Die HPI ist jedoch dahin gehend nicht eingeschränkt. Statt dessen kann die HPI in jeglichen der hier beschriebenen Systemen oder Plattformen verwendet werden. Des Weiteren können die individuellen entwickelten Ideen auf andere Kopplungsstrukturen und Plattformen wie PCIe, MIPI, QPI usw. angewandt werden.
-
Um mehrere Geräte bei einer beispielhaften Implementierung zu unterstützen, kann die HPI eine Befehlssatzarchitektur- (ISA) -Agnostik einschließen (d. h., HPI kann bei mehreren unterschiedlichen Geräten implementiert sein). Bei einem weiteren Szenarium kann die HPI auch verwendet werden, um hochleistungsfähige I/O-Geräte und nicht nur Prozessoren oder Beschleuniger zu verbinden. Beispielsweise kann ein hochleistungsfähiges PCIe-Gerät mit der HPI durch eine geeignete Übersetzungsbrücke (d. h., HPI zu PCIe) gekoppelt werden. Des Weiteren können die HPI-Links von vielen HPI-basierten Geräten wie Prozessoren auf verschiedene Arten und Weisen verwendet werden (z. B. Sterne, Ringe, Maschen usw.). 5 veranschaulicht beispielhafte Implementierungen von mehreren potenziellen Multi-Sockel-Konfigurationen. Eine Zwei-Sockel-Konfiguration 505 kann wie dargestellt zwei HPI-Links einschließen; bei anderen Implementierungen, kann jedoch ein HPI-Link verwendet sein. Für größere Topologien kann jede Konfiguration verwendet werden, solange ein Identifikator (ID) zuweisbar ist und es eine Form von einem virtuellen Pfad gibt, neben anderen zusätzlichen Merkmalen oder Ersatzmerkmalen. Wie bei einem Beispiel gezeigt, weist eine Vier-Sockel-Konfiguration 510 einen HPI-Link von jedem Prozessor zu einem anderen auf. Aber bei der Acht-Sockel-Implementierung, die in der Konfiguration 515 gezeigt ist, ist nicht jeder Sockel direkt miteinander durch einen HPI-Link verbunden. Wenn jedoch ein virtueller Pfad oder Kanal zwischen den Prozessoren existiert, wird die Konfiguration unterstützt. Ein Bereich von unterstützten Prozessoren schließt 2-32 in einer nativen Domäne ein. Höhere Anzahlen an Prozessoren können neben anderen Beispielen durch Verwenden von mehreren Domains oder anderen Kopplungsstrukturen zwischen Knoten-Controllern erreicht werden.
-
Die HPI Architektur schließt eine Definition einer Schichtenprotokoll-Architektur ein, die bei einigen Beispielen Protokollschichten (kohärente, inkohärente und optional andere speicherbasierte Protokolle), eine Routing-Schicht, eine Linkschicht und eine physikalische Schicht einschließt. Darüber hinaus kann die HPI weiter Erweiterungen einschließen, die neben anderen Beispielen mit Power Managern (wie Power Control Units (PCUs)), Design für Prüfung und Debug (DFT), Fehlerbehandlung, Registern, Sicherheit in Zusammenhang stehen. 5 veranschaulicht eine Ausführungsform eines beispielhaften HPI-Schichtenprotokollstapels. Bei einigen Implementierungen können wenigstens einige der in 5 veranschaulichten Schichten optional sein. Jede Schicht befasst sich mit seiner eigenen Granularitätsebene oder Menge an Informationen (die Protokollschicht 605a,b mit den Paketen 630, die Linkschicht 610a,b mit den Flits 635 und die physikalische Schicht 605a,b mit den Phits 640). Zu beachten ist, dass ein Paket bei einigen Ausführungsformen partielle Flits, ein einzelnes Flit oder mehrere Flits basierend auf der Implementierung einschließen kann.
-
Als ein erstes Beispiel schließt eine Breite einer Phit 640 eine 1-zu-1-Zuordnung der Linkbreite zu Bits ein (z. B. eine 20-Bit-Linkbreite schließt eine Phit von 20 Bits ein usw.). Flits können eine größere Größe wie 184, 192 oder 200 Bits aufweisen. Zu beachten ist, dass, wenn die Phit 640 20 Bit breit ist und die Größe von Flit 635 184 Bit beträgt, dann benötigt es eine Bruchzahl der Phits 640, um ein Flit 635 zu senden (z. B. 9,2 Phits bei 20 Bits, um ein 184 Bit-Flit 635 zu senden, oder 9,6 bei 20 Bits, um ein 192-Bit-Flit zu senden, neben anderen Beispielen). Zu beachten ist, dass die Breiten des elementaren Links auf der physikalischen Schicht variieren können. Beispielsweise kann die Anzahl an Bahnen pro Anweisung 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24 usw. einschließen. Bei einer Ausführungsform ist die Linkschicht 610a,b fähig, mehrere Teile von unterschiedlichen Transaktionen in einem einzelnen Flit einzubetten, und ein oder mehrere Header (z. B. 1, 2, 3, 4) können innerhalb des Flits eingebettet sein. Bei einem Beispiel teilt die HPI die Header in entsprechende Slots auf, um mehrfache Nachrichten in dem für unterschiedliche Knoten bestimmten Flit zu ermöglichen.
-
Die physikalische Schicht 605a,b kann bei einer Ausführungsform für die schnelle Informationsübertragung auf dem physikalischen Medium (elektrisch oder optisch usw.) verantwortlich sein. Der physikalische Link kann zwischen zwei Linkschicht-Entitäten, wie Schicht 605a und 605b, Punkt-zu-Punkt sein. Die Linkschicht 610a,b kann die physikalische Schicht 605a,b von den oberen Schichten abstrahieren und stellt das Vermögen bereit, Daten (sowie Anfragen) zuverlässig zu übertragen und die Flusssteuerung zwischen zwei direkt verbundenen Entitäten zu verwalten. Die Linkschicht kann auch für das Virtualisieren des physikalischen Kanals in mehrere virtuelle Kanäle und Nachrichtenklassen verantwortlich sein. Die Protokollschicht 620a,b vertraut auf die Linkschicht 610a,b, um Protokollnachrichten in die geeigneten Nachrichtenklassen und virtuellen Kanäle zuzuordnen, bevor sie an die physikalische Schicht 605a,b zur Übertragung über die physikalischen Links übergeben werden. Die Linkschicht 610a,b kann neben anderen Beispielen mehrfache Nachrichten wie eine Anfrage, Snoop-Antwort, ein Rückschreiben, inkohärente Daten unterstützen.
-
Die physikalische Schicht 605a,b (oder PHY) der HPI kann über der elektrischen Schicht (d. h., elektrische Leiter, die zwei Komponenten verbinden) und unter der Linkschicht 610a,b implementiert sein, wie veranschaulicht in 6. Die physikalische Schicht und entsprechende Logik können sich bei jedem Agenten befinden und die Linkschichten bei zwei Agenten (A und B) getrennt voneinander (z. B. bei Geräten auf beiden Seiten eines Links) verbinden. Die lokalen und entfernten elektrischen Schichten sind durch physikalische Medien (z. B. Drähte, Leiter, optisch usw.) verbunden. Die physikalische Schicht 605a,b weist bei einer Ausführungsform zwei wesentliche Phasen auf, Initialisierung und Betrieb. Während der Initialisierung ist die Verbindung zur Linkschicht undurchsichtig und Signalisierung kann eine Kombination von getimten Zuständen und Handshake-Ereignissen einbeziehen. Während des Betriebs ist die Verbindung zur Linkschicht durchsichtig und die Signalisierung erfolgt bei einer Geschwindigkeit, wobei alle Bahnen zusammen als ein einzelner Link arbeiten. Während der Betriebsphase transportiert die physikalische Schicht Flits vom Agenten A zum Agenten B und vom Agenten B zum Agenten A. Die Verbindung wird auch als ein Link bezeichnet und abstrahiert einige physikalische Aspekte, die Medien, Breite und Geschwindigkeit von den Linkschichten einschließen, während Flits und Steuerung/Status der gegenwärtigen Konfiguration (z. B. Breite) mit der Linkschicht ausgetauscht werden. Die Initialisierungsphase schließt untergeordnete Phasen, wie z. B. Abfrage, Konfiguration, ein. Die Betriebsphase schließt untergeordnete Phasen (z. B. Link-Power-Management-Zustände) ein.
-
Bei einer Ausführungsform kann die Linkschicht 610a,b implementiert sein, um eine zuverlässige Datenübertragung zwischen zwei Protokoll- oder Routing-Entitäten bereitzustellen. Die Linkschicht kann die physikalische Schicht 605a,b von der Protokollschicht 620a,b abstrahieren und kann für die Flusssteuerung zwischen zwei Protokoll-Agenten (A, B) verantwortlich sein und virtuelle Kanal-Dienste an die Protokollschicht (Nachrichtenklassen) und Routing-Schicht (Virtuelle Netzwerke) bereitstellen. Die Schnittstelle zwischen der Protokollschicht 620a,b und der Linkschicht 610a,b kann sich normalerweise auf der Paketebene befinden. Bei einer Ausführungsform wird die kleinste Transfereinheit auf der Linkschicht als ein Flit mit einer bestimmten Anzahl von Bits wie 192 Bits bezeichnet oder mit einer anderen Bezeichnung. Die Linkschicht 610a,b vertraut auf die physikalische Schicht 605a,b um die Übertragungseinheit der physikalischen Schicht 605a,b (Phit) in die Übertragungseinheit der Linkschicht 610a,b (Flit) zu bilden. Außerdem kann die Linkschicht 610a,b logisch in zwei Teile, einen Sender und einen Empfänger, aufgebrochen sein. Ein Sender/Empfänger-Paar bei einer Entität kann mit einem Empfänger/Sender-Paar bei einer anderen Entität verbunden sein. Flusssteuerung wird häufig sowohl auf einer Flit- als auch auf einer Paketbasis ausgeführt. Fehlererkennung und -korrektur wird auch potenziell auf einer Flitebenenbasis ausgeführt.
-
Bei einer Ausführungsform kann die Routing-Schicht 615a,b ein flexibles und verteiltes Verfahren bereitstellen, um HPI-Transaktionen von einer Quelle zu einem Ziel zu routen. Das Schema ist flexibel, da Routing-Algorithmen für mehrere Topologien durch programmierbare Routing-Tabellen bei jedem Router spezifiziert sein können (die Programmierung wird bei einer Ausführungsform durch Firmware, Software oder eine Kombination davon ausgeführt). Die Routing-Funktionalität kann verteilt sein; das Routing kann durch eine Serie von Routing-Schritten erfolgen, wobei jeder Routing-Schritt durch ein Nachschlagen einer Tabelle entweder bei den Quell-, Zwischen- oder Ziel-Routern definiert ist. Das Nachschlagen bei einer Quelle kann verwendet werden, um ein HPI-Paket in die HPI-Fabric einzuführen. Das Nachschlagen bei einem Zwischenrouter kann verwendet werden, um ein HPI-Paket von einem Eingabeport zu einem Ausgabeport zu routen. Das Nachschlagen bei einem Ziel-Port kann verwendet werden, um den Ziel-HPI-Protokoll-Agent zu adressieren. Zu beachten ist, dass die Routing-Schicht bei einigen Implementierungen dünn sein kann, da die Routingtabellen und deshalb die Routing-Algorithmen nicht speziell durch Spezifikation definiert sind. Dies ermöglicht Flexibilität und eine Vielzahl von Verwendungsmodellen einschließlich flexibler architektonischer Plattformtopologien, die durch die Systemimplementierung zu definieren sind. Die Routing-Schicht 615a,b verlässt sich auf die Linkschicht 610a,b, um die Verwendung von bis zu drei (oder mehr) virtuellen Netzwerken (VNs) bereitzustellen - bei einem Beispiel zwei VNs ohne Deadlocks, VN0 und VN1, mit mehreren in jedem virtuellen Netzwerk definierten Nachrichtenklassen. Ein gemeinsam benutztes adaptives virtuelles Netzwerk (VNA) kann in der Linkschicht definiert sein, aber dieses adaptive Netzwerk mag nicht direkt in Routing-Konzepten exponiert sein, da jede Nachrichtenklasse und jedes virtuelle Netzwerk fest zugeordnete Ressourcen und einen garantierten Fortschritt aufweisen kann, neben anderen Merkmalen und Beispielen.
-
Bei einigen Implementierungen kann die HPI einen eingebetteten Takt verwenden. Ein Taktsignal kann in Daten eingebettet sein, die unter Verwendung der Kopplungsstruktur gesendet werden. Mit dem in den Daten eingebetteten Taktsignal können ausgeprägte und zugehörige Taktbahnen ausgelassen werden. Dies kann zum Beispiel nützlich sein, da es erlauben kann, dass mehr Pins eines Gerätes zur Datenübertragung zugeordnet werden, insbesondere bei Systemen, bei denen der Raum für Pins heiß begehrt ist.
-
Ein Link kann zwischen zwei Agenten auf beiden Seiten einer Kopplungsstruktur eingerichtet werden. Ein Agent, der Daten sendet, kann ein lokaler Agent sein, und der Agent, der die Daten empfängt, kann ein Remote-Agent sein. Zustandsmaschinen können von beiden Agenten eingesetzt werden, um verschiedene Aspekte des Links zu verwalten. Bei einer Ausführungsform kann der Datenpfad der physikalischen Schicht Flits von der Linkschicht zum elektrischen Front-End senden. Der Steuerpfad schließt bei einer Implementierung eine Zustandsmaschine ein (die auch als Linktraining-Zustandsmaschine oder ähnlich bezeichnet wird). Die Aktionen und Zustandsausstiege der Zustandsmaschine können von internen Signalen, Zeitgebern, externen Signalen oder anderen Informationen abhängen. Tatsächlich können einige der Zustände, wie einige Initialisierungszustände, Zeitgeber aufweisen, um einen Timeout-Wert bereitzustellen, um einen Zustand zu verlassen. Zu beachten ist, dass bei einigen Ausführungsformen Erkennen auf das Erkennen eines Ereignisses auf beiden Teilstrecken einer Bahn verweist; aber nicht zwangsläufig gleichzeitig. Bei anderen Ausführungsformen verweist Erkennen auf das Erkennen eines Ereignisses durch einen Bezugsagenten. Entprellen verweist beispielsweise auf anhaltende Assertion eines Signals. Bei einer Ausführungsform unterstützt die HPI den Betrieb im Falle von nicht funktionierenden Bahnen. Hier können Bahnen bei speziellen Zuständen fallen gelassen werden.
-
In der Zustandsmaschine definierte Zustände können Reset-Zustände, Initialisierungszustände und Betriebszustände neben anderen Kategorien und Unterkategorien einschließen. Bei einem Beispiel können einige Initialisierungszustände einen sekundären Zeitgeber aufweisen, der verwendet wird, um den Zustand bei einem Timeout zu verlassen (im Wesentlichen ein Abbruch aufgrund des Versagens, im Zustand Fortschritte zu machen). Ein Abbruch kann das Aktualisieren von Registern wie Statusregister einschließen. Einige Zustände können auch primäre Zeitgeber aufweisen, die verwendet werden, um die Primärfunktionen im Zustand zu timen. Andere Zustände können definiert sein, sodass interne oder externe Signale (wie Handshake-Protokolle) neben anderen Beispielen den Übergang von dem Zustand in einen anderen Zustand bewirken.
-
Eine Zustandsmaschine kann ein Debuggen auch durch Einzelschritt, Einfrieren bei Initialisierungsabbruch und das Verwenden von Prüfern unterstützen. Hier können Zustandsausstiege hinausgeschoben/gehalten werden, bis die Debugsoftware bereit ist. Bei einem Fall kann der Ausstieg bis zum sekundären Timeout hinausgeschoben/gehalten werden. Aktionen und Ausstiege können bei einer Ausführungsform auf dem Austausch von Trainingssequenzen basieren. Bei einer Ausführungsform läuft die Link-Zustandsmaschine in der Takt-Domäne des lokalen Agenten und der Übergang von einem Zustand in den nächsten fällt mit einer Trainingssequenzbegrenzung des Senders zusammen. Statusregister können verwendet werden, um den aktuellen Zustand widerzuspiegeln.
-
7 veranschaulicht eine Darstellung von wenigstens einem Teil einer Zustandsmaschine, die von Agenten bei einer beispielhaften HPI-Implementierung verwendet wird. Es ist zu verstehen, dass die Zustände, die in der Zustandstabelle von 7 eingeschlossen sind, eine nicht erschöpfende Liste von möglichen Zuständen einschließen. Zum Beispiel sind einige Übergänge ausgelassen, um das Diagramm zu vereinfachen. Außerdem können einige Zustände kombiniert, geteilt oder ausgelassen sein, während andere hinzugefügt sein könnten. Solche Zustände können einschließen:
-
Ereignisresetzustand: in den bei einem Warm- oder Kaltstartereignis eingetreten wird. Stellt Standardwerte.wieder her Zähler initialisieren (z. B. Synchronisationszähler). Kann zu einem anderen Zustand, wie einem anderen Reset-Zustand aussteigen.
-
Getimter Reset-Zustand: getimter Zustand für In-Band-Reset. Kann einen vordefinierten elektrischen Ordered-Set (EOS) ansteuern, sodass entfernte Empfänger fähig sind, den EOS zu erkennen und auch in den getimten Reset eintreten können. Der Empfänger weist Bahnen auf, die elektrische Einstellungen halten. Kann zu einem Agenten aussteigen, um den Reset-Zustand zu kalibrieren.
-
Kalibrier-Reset-Zustand: Kalibrieren, ohne auf der Bahn zu signalisieren (z. B. Empfängerkalibrierungszustand) oder Treiber abzuschalten. Kann eine vorbestimmte Dauer in dem Zustand basierend auf einem Zeitgeber sein. Kann eine Betriebsgeschwindigkeit festlegen. Kann als ein Wartezustand agieren, wenn ein Port nicht aktiviert ist. Kann minimale Residenzzeit einschließen. Empfängerkonditionierung oder gestaffelt aus kann basierend auf dem Design auftreten. Kann zu einem Empfängererkennungszustand nach einem Timeout und/oder einem Abschluss einer Kalibrierung aussteigen.
-
Empfängererkennungszustand: erkennt die Präsenz eines Empfängers auf einer Bahn bzw. auf Bahnen. Kann nach einem Empfängerabschluss sehen (z. B. Empfänger-Pulldown-Einfügung). Kann zum Kalibrier-Reset-Zustand nach einem festgelegten Wert, der gesetzt wird, aussteigen, oder wenn ein anderer festgelegter Wert nicht gesetzt ist. Kann zum Senderkalibrierungszustand aussteigen, wenn ein Empfänger erkannt oder ein Timeout erreicht wird.
-
Senderkalibrierungszustand: für Senderkalibrierungen. Kann ein getimter für Senderkalibrierungen zugewiesener Zustand sein. Kann Signalisierung auf einer Bahn einschließen. Kann kontinuierlich einen EOS wie einen elektrisch inaktiven Exit-Ordered-Set (EIEOS) ansteuern. Kann bei Abschluss des Kalibrierens oder nach Ablauf eines Zeitgebers zum Compliance-Zustand aussteigen. Kann zum Sendererkennungszustand aussteigen, wenn ein Zähler abgelaufen ist oder ein sekundärer Timeout aufgetreten ist.
-
Sendererkennungszustand: qualifiziert gültige Signalisierung. Kann ein Handshake-Zustand sein, bei dem ein Agent Aktionen abschließt und basierend auf Remote-Agenten-Signalisierung zu einem nächsten Zustand aussteigt. Der Empfänger kann gültige Signalisierung vom Sender qualifizieren. Der Empfänger sucht bei einer Ausführungsform nach einem Weckerkennen, und wenn auf einer oder mehreren Bahnen entprellt, sucht er danach auf den anderen Bahnen. Der Sender steuert ein Erkennungssignal an. Kann zu einem Abfragezustand als Reaktion auf ein Entprellen, das für alle Bahnen abgeschlossen ist, und/oder ein Timeout oder wenn Entprellen auf allen Bahnen nicht abgeschlossen ist und es einen Timeout gibt aussteigen. Hier können eine oder mehrere Überwachungsbahnen wach gehalten werden, um ein Wecksignal zu entprellen. Und wenn entprellt, dann werden die anderen Bahnen potenziell entprellt. Dies kann Energieeinsparungen in Niedrigenergiezuständen ermöglichen.
-
Abfragezustand: Empfänger adaptiert, initialisiert Driftpuffer und sperrt bei Bits/Bytes (bestimmt z. B. Symbolgrenzen). Bahnen können gerade gerückt werden werden. Ein Remote-Agent kann einen Ausstieg zu einem nächsten Zustand (z. B. einem Linkbreiten-Zustand) als Reaktion auf eine Bestätigungsnachricht veranlassen. Abfragen kann zusätzlich eine Trainingssequenzsperre durch das Sperren zu einem EOS und einem Trainingssequenz-Header einschließen. Bahn-zu-Bahn-Bitversatz beim entfernten Sender kann bei einer ersten Länge für die hohe Geschwindigkeit und einer zweiten Länge für die langsame Geschwindigkeit gedeckelt sein. Deskew kann in einem langsamen Modus sowie einem Betriebsmodus ausgeführt werden. Der Empfänger kann ein spezielles Maximum aufweisen, um Bahn-zu-Bahn-Bitversatz, wie 8, 16 oder 32 Intervalle von Bitversatz gerade zu rücken. Empfängeraktionen können Latenzzeit-Fixieren einschließen. Empfängeraktionen können bei einer Ausführungsform bei erfolgreichem Deskew einer gültigen Bahnzuordnung abgeschlossen werden. Ein erfolgreicher Handshake kann bei einem Beispiel erreicht werden, wenn eine Anzahl von aufeinanderfolgenden Trainingssequenz-Headern mit Bestätigungen empfangen werden und eine Anzahl von Trainingssequenzen mit einer Bestätigung gesendet werden, nachdem der Empfänger seine Aktionen abgeschlossen hat.
-
Linkbreiten-Zustand: Agent kommuniziert mit der abschließenden Bahnzuordnung zum entfernten Sender. Empfänger empfängt die Informationen und decodiert. Empfänger kann eine konfigurierte Bahnzuordnung in einer Struktur nach dem Prüfpunkt eines vorhergehenden Bahnzuordnungswertes in einer zweiten Struktur aufzeichnen. Empfänger kann auch mit einer Bestätigung („ACK“) erwidern. Kann ein In-Band-Reset initiieren. Als ein Beispiel, erster Zustand, um In-Band-Reset zu initiieren. Bei einer Ausführungsform wird der Ausstieg zu einem nächsten Zustand wie ein Flit-Konfigurationszustand als Reaktion auf die ACK ausgeführt. Vor dem Eintreten in den Niedrigenergiezustand kann auch ein Rücksetzsignal generiert werden, wenn die Häufigkeit eines Weckerkennungssignal-Auftretens unter einen Sollwert absinkt (z. B. 1 jede Anzahl an Einheitsintervallen (UIs) wie 4K UI). Empfänger kann gegenwärtige und vorhergehende Bahnzuordnungen halten. Sender kann unterschiedliche Gruppen von Bahnen basierend auf Trainingssequenzen, die unterschiedliche Werte aufweisen, verwenden. Bahnzuordnung kann einige Statusregister bei einigen Ausführungsformen nicht modifizieren.
-
Flitsperren-Konfigurationszustand: Eintritt durch einen Sender, aber der Zustand wird als verlassen betrachtet (d. h., sekundärer Timeout strittig), wenn Sender und Empfänger zu einem Blockieren Link-Zustand oder einem anderen Link-Zustand ausgestiegen sind. Senderausstieg zu einem Link-Zustand schließt bei einer Ausführungsform eine Start von einer Datensequenz- (SDS) und eine Trainingssequenz- (TS) -Begrenzung nach dem Empfangen eines planetarischen Synchronisiersignals ein. Hier kann der Empfängerausstieg auf dem Empfangen eines SDS von einem entfernten Sender basieren. Dieser Zustand kann eine Brücke vom Agenten- zum Link-Zustand sein. Empfänger bestimmt den SDS. Empfänger kann zum Blockieren-Link-Zustand (BLS) (oder einem Kontrollfenster) aussteigen, wenn der SDS empfangen wird, nachdem ein Descrambler initialisiert ist. Wenn ein Timeout auftritt, kann der Ausstieg ein Ausstieg zum Reset-Zustand sein. Sender steuert Bahnen mit einem Konfigurationssignal an. Senderausstieg kann zu Reset, BLS oder anderen Zuständen basierend auf Zuständen oder Timeouts erfolgen.
-
Senden-Link-Zustand: ein Link-Zustand. Flits werden zu einem Remote-Agenten gesendet. Eintritt kann von einem Blockieren Link-Zustand erfolgen und Rückkehr zu einem Blockieren Link-Zustand bei einem Ereignis wie einem Timeout. Sender sendet Flits. Empfänger empfängt Flits. Kann auch zu einem Niedrigenergie-Link-Zustand aussteigen. Bei einigen Implementierungen kann der Senden-Link-Zustand (TLS) als der L0-Zustand bezeichnet werden.
-
Blockieren-Link-Zustand: ein Link-Zustand. Sender und Empfänger arbeiten in einer vereinheitlichten Weise. Kann ein getimter Zustand sein, während dessen die Linkschicht-Flits aufgehalten werden, während die Informationen der physikalischen Schicht zum Remote-Agenten kommuniziert werden. Kann zu einem Niedrigenergie-Link-Zustand aussteigen (oder zu einem anderen Link-Zustand basierend auf dem Design). Ein Blockieren-Link-Zustand (BLS) tritt bei einer Ausführungsform periodisch auf. Der Zeitraum wird als ein BLS-Intervall bezeichnet und kann getimt sein sowie zwischen langsamer Geschwindigkeit und Betriebsgeschwindigkeit differieren. Zu beachten ist, dass die Linkschicht periodisch bezüglich des Sendens von Flits blockiert sein kann, sodass eine Steuersequenz der physikalischen Schicht von einer Länge gesendet werden kann, wie während eines Senden-Link-Zustandes oder eines Partialbreite-Senden-Link-Zustandes. Bei einigen Implementierungen kann der Blockieren-Link-Zustand (BLS) als eine L0-Steuerung oder als L0c-Zustand bezeichnet werden.
-
Partialbreite-Senden-Link-Zustand: Link-Zustand. Kann Energie durch das Eintreten in einen Partialbreite-Zustand sparen. Bei einer Ausführungsform verweist asymmetrische Partialbreite auf jede Richtung eines Zwei-Richtungs-Links, der unterschiedliche Breiten aufweist, die bei einigen Designs unterstützt werden können. Ein Beispiel eines Initiators wie ein Sender, der einen Partialbreite-Hinweis sendet, um in den Partialbreite-Senden-Link-Zustand einzutreten, ist im Beispiel von 9 gezeigt. Hier wird ein Partialbreite-Hinweis gesendet während des Sendens auf einem Link mit einer ersten Breite, um den Link dazu übergehen zu lassen, dass er bei einer zweiten neuen Breite sendet. Eine Fehlanpassung kann in einem Reset resultieren. Zu beachten ist, dass Geschwindigkeiten nicht geändert werden können, aber Breiten. Deshalb werden Flits potenziell bei unterschiedlichen Breiten gesendet. Kann einem Senden-Link-Zustand logisch ähnlich sein; da eine kleinere Breite vorhanden ist, kann es jedoch länger dauern, um Flits zu senden. Kann zu anderen Link-Zuständen wie einem Niedrigenergie-Link-Zustand aussteigen basierend auf bestimmten empfangenen und gesendeten Nachrichten oder einem Ausstieg aus dem Partialbreite-Senden-Link-Zustand oder einem Link-Blockierzustand basierend auf anderen Ereignissen. Bei einer Ausführungsform kann ein Sender-Port untätige Bahnen in einer gestaffelten Weise abschalten, um eine bessere Signalintegrität (d. h., Rauschminderung) bereitzustellen. Hier können nicht wieder versuchende Flits wie Null-Flits während Zeiträumen verwendet werden, bei denen sich die Linkbreite ändert. Ein entsprechender Empfänger kann diese Null-Flits fallen lassen und inaktive Bahnen in einer gestaffelten Weise abschalten, sowie die gegenwärtigen und vorhergehenden Bahnzuordnungen in einer oder mehreren Strukturen aufzeichnen. Zu beachten ist, dass Status- und verbundene Statusregister ungeändert bleiben können. Bei einigen Implementierungen kann der Partialbreite-Senden-Link-Zustand als ein partieller L0- oder L0p-Zustand bezeichnet werden.
-
Partialbreite-Senden-Link-Zustand-Ausstieg: den Partialbreite-Zustand verlassen. Kann einen Blockieren-Link-Zustand bei einigen Implementierungen verwenden oder nicht. Der Sender initiiert bei einer Ausführungsform den Ausstieg durch das Senden von Partialbreite-Ausstiegsmustern auf den inaktiven Bahnen, um sie zu trainieren und gerade zu rücken. Als ein Beispiel startet ein Ausstiegsmuster mit einem EIEOS, der erkannt und entprellt ist, um zu signalisieren, dass die Bahn bereit ist, in einen vollen Senden-Link-Zustand einzutreten, und es kann mit einem SDS oder einer schnellen Trainingssequenz (FTS) auf inaktiven Bahnen enden. Jeder Fehler während der Ausstiegssequenz (Empfängeraktionen wie Deskew nicht abgeschlossen vor dem Timeout) stoppt Flit-Übertragungen zur Linkschicht und assertiert einen Reset, der durch das Zurücksetzen des Links beim nächsten Auftreten eines Blockieren-Link-Zustands behandelt wird. Der SDS kann auch den Scrambler/Descrambler auf den Bahnen zu geeigneten Werten initialisieren.
-
Niedrigenergie-Link-Zustand: ist ein niedriger Energiezustand. Bei einer Ausführungsform ist es eine niedrigere Energie als beim Partialbreite-Link-Zustand, da die Signalisierung bei dieser Ausführungsform auf allen Bahnen und in beiden Richtungen gestoppt ist. Sender können einen Blockieren-Link-Zustand verwenden, um einen Niedrigenergie-Link-Zustand anzufordern. Hier kann der Empfänger die Anfrage decodieren und mit einer ACK oder NAK erwidern; anderweitig kann ein Reset ausgelöst werden. Bei einigen Implementierungen kann der Niedrigenergie-Link-Zustand als ein L1-Zustand bezeichnet werden.
-
Bei einigen Implementierungen können Zustandsübergänge erleichtert werden, um zu ermöglichen, dass Zustände zum Beispiel umgangen werden, wenn Zustandsaktionen der Zustände, wie bestimmte Kalibrierungen und Konfigurationen, bereits abgeschlossen sind. Vorherige Zustandsresultate und Konfigurationen eines Links können gespeichert und in nachfolgenden Initialisierungen und Konfigurationen eines Links erneut benutzt werden. Anstatt solche Konfigurationen und Zustandsaktionen zu wiederholen, können entsprechende Zustände umgangen werden. Traditionelle Systeme, die Zustandsumgehungen implementieren, implementieren jedoch häufig komplexe Designs und kostspielige Validierungs-Escapes. Anstatt eine traditionelle Umgehung zu verwenden, kann bei einem Beispiel die HPI kurze Zeitglieder in bestimmten Zuständen verwenden, bei denen die Zustandsaktionen beispielsweise nicht wiederholt werden müssen. Dies kann neben anderen potenziellen Vorteilen potenziell gleichbleibendere und synchronisiertere Zustandsmaschinenübergänge ermöglichen.
-
Bei einem Beispiel kann ein softwarebasierter Controller (z. B. durch einen externen Steuerungspunkt für die physikalische Schicht) einen Kurzzeitgeber für einen oder mehrere spezielle Zustände aktivieren. Für einen Zustand, für den Aktionen bereits ausgeführt und gespeichert wurden, kann der Zustand zum Beispiel kurzgetimt werden, um einen schnellen Ausstieg aus dem Zustand zu einem nächsten Zustand zu erleichtern. Wenn jedoch die vorhergehende Zustandsaktion fehlschlägt oder innerhalb der Dauer des Kurzzeitgebers nicht angewandt werden kann, kann ein Zustandsausstieg ausgeführt werden. Weiter kann der Controller den Kurzzeitgeber zum Beispiel deaktivieren, wenn die Zustandsaktionen abermals ausgeführt werden sollten. Ein Lang- oder Standardzeitgeber kann für jeden entsprechenden Zustand gesetzt werden. Wenn Konfigurationsaktionen beim Zustand nicht innerhalb des Langzeitgebers abgeschlossen werden können, kann ein Zustandsausstieg auftreten. Der Langzeitgeber kann auf eine angemessene Dauer gesetzt werden, um den Abschluss der Zustandsaktionen zu ermöglichen. Der Kurzzeitgeber kann im Gegensatz dazu beträchtlich kürzer sein, was es in einigen Fällen unmöglich macht, die Zustandsaktionen ohne Rückverweisung auf zuvor ausgeführte Zustandsaktionen auszuführen, neben anderen Beispielen.
-
In einigen Fällen können während der Initialisierung (oder Neuinitialisierung) eines Links, während Agenten durch eine Zustandsmaschine zu einem Betriebs-Link-Zustand fortschreiten, ein oder mehrere Fehler oder Zustandsausstiege auftreten, die verursachen, dass der Zustand zurückgesetzt wird (z. B. zu einem Reset oder einem anderen Zustand). Tatsächlich kann die Initialisierung des Links einen oder mehrere Zustände durchlaufen, ohne die Initialisierung abzuschließen und in einen Link-Zustand einzutreten. Bei einem Beispiel kann eine Zählung für die Anzahl an unproduktiven Schleifen in Zustandsübergängen innerhalb der Initialisierung eines Links verwaltet werden. Beispielsweise kann jedes Mal, wenn eine Initialisierung zu einem Reset-Zustand zurückkehrt, ohne einen Link-Zustand zu erreichen, ein Zähler inkrementiert werden. Der Zähler kann bezüglich dem Link zurückgesetzt werden, sobald der Link erfolgreich in einen Link-Zustand eintritt. Solche Zähler können von Agenten auf beiden Seiten des Links verwaltet werden. Weiter kann eine Schwelle zum Beispiel von einem softwarebasierten Controller bestimmt werden, der einen oder mehrere externe Steuerungspunkte verwendet. Wenn die Zählung von unproduktiven Schleifen die definierte Schwelle erreicht (oder überschreitet), kann die Initialisierung des Links ausgesetzt werden (z. B. bei oder vor dem Reset-Zustand gesetzt und gehalten werden). Bei einigen Implementierungen kann ein softwarebasierter Controller einen Neustart oder eine Neuinitialisierung des Links auslösen, um die Initialisierung wieder zu beginnen und die Initialisierung von dem ausgesetzten Zustand freizugeben. In einigen Fällen können die softwarebasierten Werkzeuge die Art der ausgesetzten Initialisierung analysieren und eine Diagnose ausführen, Registerwerte setzen und andere Operationen ausführen, um vor weiterer Schleifenbildung der Initialisierung zu schützen. In der Tat kann bei einigen Implementierungen ein Controller neben anderen Beispielen in Verbindung mit dem Neustarten einer ausgesetzten Link-Initialisierung einen höheren Zählerschwellenwert festlegen oder gar den Zähler übersteuern.
-
Bei einigen HPI-Implementierungen können Supersequenzen definiert sein, wobei jede Supersequenz einem entsprechenden Zustand oder Eintritt/Ausstieg in/aus dem entsprechenden Zustand entspricht. Eine Supersequenz kann eine Wiederholungssequenz von Datensätzen und Symbolen einschließen. Die Sequenzen können sich in einigen Fällen bis zum Abschluss eines Zustandes oder Zustandsübergangs oder der Kommunikation eines entsprechenden Ereignisses neben anderen Beispielen wiederholen. In einigen Fällen kann sich die Wiederholungssequenz einer Supersequenz gemäß einer definierten Häufigkeit wie einer definierten Anzahl an Einheitsintervallen (UIs) wiederholen. Ein Einheitsintervall (UI) kann dem Zeitintervall für das Senden eines einzelnen Bits auf einer Bahn eines Links oder Systems entsprechen. Bei einigen Implementierungen kann die Wiederholungssequenz mit einem EOS beginnen. Dementsprechend kann von einer Instanz des EOS erwartet werden, sich gemäß der vordefinierten Häufigkeit zu wiederholen. Solche Ordered-Sets können als definierte 16-Byte-Codes implementiert sein, die im hexadezimalen Format dargestellt werden können, neben anderen Beispielen. Bei einem Beispiel kann der EOS einer Supersequenz ein elektrisch inaktiver Ordered-Set (oder EIEIOS) sein. Bei einem Beispiel kann ein EIEOS einem Taktsignal mit niedriger Frequenz ähneln (z. B. einer vordefinierten Anzahl an sich wiederholenden hexadezimalen Symbolen FF00 oder FFF000 usw.). Ein vordefinierter Datensatz kann dem EOS folgen, wie beispielsweise eine vordefinierte Anzahl an Trainingssequenzen oder andere Daten. Solche Supersequenzen können in Zustandsübergängen verwendet werden, die neben anderen Beispielen Link-Zustandsübergänge sowie Initialisierung einschließen.
-
Bei einigen Implementierungen einer Kopplungsstruktur, wie bei QPI, können Abschlüsse eines seriellen Datenlinks ein- und ausgeschaltet werden, wie beispielsweise wenn ein Link zurückgesetzt oder initialisiert wird. Diese Herangehensweise kann Komplexität und Zeit in die Initialisierung eines Links einführen. Bei einigen HPI-Implementierungen können Abschlüsse des Links einschließlich während eines Zurücksetzens oder Neuinitialisierens des Links aufrechterhalten werden. Weiter kann die HPI den Einbau von Geräten im laufenden Betrieb erlauben. Wenn ein anderes Gerät entweder durch den Einbau im laufenden Betrieb oder anderweitig eingeführt wird, ändert sich das Spannungsverhalten der Bahn, auf der der neue Remote-Agent hinzugefügt wird. Der lokale Agent kann diese Änderungen in der Bahnspannung erfassen, um das Vorhandensein des Remote-Agenten zu erkennen und die Initialisierung des Links zu veranlassen. Zustandsmaschinen-Zustände und Zeitgeber können in der Zustandsmaschine definiert sein, um die Erkennung, Konfiguration und Initialisierung eines Links ohne Abschlüsse zu koordinieren.
-
Bei einer Implementierung kann die HPI eine Neuinitialisierung auf einem In-Band-Reset unterstützen, ohne die Abschlusswerte durch das Screening einer Bahn durch den empfangenden Agenten für eingehende Signalisierung zu ändern. Die Signalisierung kann verwendet werden, um gute Bahnen zu bestimmen. Als ein Beispiel kann die Bahn auf irgendeines von einem Satz von vordefinierten Signalen überprüft werden, die von einem Sendegerät gesendet werden sollen, um die Entdeckung und Konfiguration des Links zu erleichtern. Bei einem Beispiel kann eine Supersequenz entsprechend einer oder mehrerer Initialisierungs- oder Neuinitialisierungstasks definiert sein. Die vordefinierte Sequenz kann einen EIEOS gefolgt von zusätzlichen Sequenzdaten einschließen. In einigen Fällen können die Geräte das Senden einer Supersequenz entsprechend einem speziellen Initialisierungszustand usw. beginnen, während jedes Gerät auf beiden Seiten einer Bahn aktiv wird. Bei einer Ausführungsform können zwei Arten von Pin-Resets unterstützt werden; Einschalten (oder Kaltstart) und Warmstart. Ein Reset, der durch Software initiiert ist oder von (der physikalischen oder einer anderen Schicht) bei einem Agenten stammt, kann bandintern zu dem anderen Agenten kommuniziert werden. Aufgrund der Verwendung eines eingebetteten Taktes kann jedoch ein In-Band-Reset durch Kommunikation zu einem anderen Agenten unter Verwendung eines Ordered-Set, wie einem speziellen elektrischen Ordered-Set oder EIOS erfolgen.
-
Der Ordered-Set kann während der Initialisierung gesendet werden und eine PHY-Steuerungssequenz (oder „Blockieren-Link-Zustand“) kann nach der Initialisierung gesendet werden. Der Blockieren-Link-Zustand kann die Verbindungsschicht dabei blockieren, Flits zu senden. Als ein weiteres Beispiel kann Linkschichtverkehr blockiert werden, um einige NULL-Flits zu senden, die beim Empfänger ausgesondert werden können.
-
Wie vorstehend eingeführt kann Initialisierung bei einer Ausführungsform anfänglich bei langsamer Geschwindigkeit erfolgen gefolgt von Initialisierung bei hoher Geschwindigkeit. Die Initialisierung bei langsamer Geschwindigkeit verwendet die Standardwerte für die Register und Zeitgeber. Software verwendet dann den Link mit langsamer Geschwindigkeit, um die Register, Zeitgeber und elektrischen Parameter einzurichten, und löscht die Kalibrierungssemaphoren, um den Weg für eine Initialisierung bei schneller Geschwindigkeit zu ebnen. Als ein Beispiel kann die Initialisierung neben potenziell anderen Zuständen aus solchen Zuständen oder Tasks wie Reset, Erkennen, Abfragen und Konfiguration bestehen.
-
Bei einem Beispiel kann eine Linkschicht-Blockierungssteuerungssequenz (d. h., ein Blockieren-Link-Zustand (BLS) oder L0c-Zustand) einen getimten Zustand einschließen, während dem die Linkschicht-Flits aufgehalten werden, während die PHY-Informationen zum Remote-Agenten kommuniziert werden. Hier können der Sender und Empfänger einen Blocksteuerungssequenz-Zeitgeber starten. Und nach Ablauf der Zeitgeber können der Sender und Empfänger den Blockierzustand verlassen und andere Aktionen vornehmen, wie beispielsweise zum Reset auszusteigen, zu einem unterschiedlichen Link-Zustand (oder einem anderen Zustand) auszusteigen, einschließlich Zuständen, die das Senden von Flits über den Link ermöglichen.
-
Bei einer Ausführungsform kann Link-Training bereitgestellt werden und das Senden von einer oder mehreren von verschlüsselten Trainingssequenzen, Ordered-Sets und Steuerungssequenzen wie in Verbindung mit einer definierten Supersequenz einschließen. Ein Trainingssequenzsymbol kann ein oder mehrere von einem Header, reservierten Teilen, einer Ziel-Latenzzeit, einer Paarnummer, von physikalischen Bahnzuordnungscode-Referenzbahnen oder eine Gruppe von Bahnen und einen Initialisierungszustand einschließen. Bei einer Ausführungsform kann der Header neben anderen Beispielen mit einer ACK oder NAK gesendet werden. Als ein Beispiel können Trainingssequenzen als Teil von Supersequenzen gesendet werden und verschlüsselt sein.
-
Bei einer Ausführungsform werden Ordered-Sets und Steuerungssequenzen nicht verschlüsselt oder gestaffelt und werden auf identische Weise gleichzeitig und vollständig auf allen Bahnen gesendet. Ein gültiger Empfang eines Ordered-Sets kann das Überprüfen von wenigstens eines Teils des Ordered-Sets (oder des gesamten Ordered-Sets für partielle Ordered-Sets) einschließen. Ordered-Sets können einen EOS wie einen elektrisch inaktiven Ordered-Set (EIOS) oder einen EIEOS einschließen. Eine Supersequenz kann einen Start einer Datensequenz (SDS) oder eine schnelle Trainingssequenz (FTS) einschließen. Diese Sets und Steuerungssupersequenzen können vordefiniert sein und jedes Muster oder jede Hexadezimaldarstellung sowie jede Länge aufweisen. Beispielsweise können Ordered-Sets und Supersequenzen eine Länge von 8 Bytes, 16 Bytes oder 32 Bytes usw. sein. FTS können beispielsweise zusätzlich für eine schnelle Bitsperre während des Ausstiegs aus einem Partialbreite-Senden-Link-Zustand verwendet werden. Zu beachten ist, dass die FTS-Definition pro Bahn sein kann und eine gedrehte Version der FTS verwenden kann.
-
Supersequenzen können bei einer Ausführungsform die Einführung eines EOS wie eines EIEOS in einen Trainingssequenzstrom einschließen. Wenn die Signalisierung startet, können Bahnen bei einer Implementierung in einer gestaffelten Weise einschalten. Dies kann jedoch darin resultieren, dass anfängliche Supersequenzen beim Empfänger auf einigen Bahnen abgeschnitten werden. Supersequenzen können jedoch über kurze Intervalle wiederholt werden (z. B. ungefähr eintausend Einheitsintervalle (oder ∼1KUI)). Die Trainingssupersequenzen können zusätzlich für ein oder mehr aus Deskew, Konfiguration und für das Kommunizieren eines Initialisierungsziels, einer Bahnzuordnung usw. verwendet werden. Der EIEOS kann neben anderen Beispielen für ein oder mehr aus dem Wechseln einer Bahn vom inaktiven zum aktiven Zustand, Sreening für gute Bahnen, Bestimmen von Symbol- und TS-Grenzen verwendet werden.
-
Unter jetziger Bezugnahme auf 8 sind Darstellungen von beispielhaften Supersequenzen gezeigt. Zum Beispiel kann eine beispielhafte Erkennungssupersequenz 805 definiert sein. Die Erkennungssupersequenz 805 kann eine Wiederholungssequenz eines einzelnen EIEOS (oder eines anderen EOS) gefolgt von einer vordefinierten Anzahl an Instanzen einer speziellen Trainingssequenz (TS) einschließen. Bei einem Beispiel kann der EIEOS, unmittelbar gefolgt von sieben wiederholten Instanzen von TS gesendet werden. Wenn der letzte von den sieben TS gesendet ist, kann der EIEOS erneut gefolgt von sieben zusätzlichen Instanzen von TS und so weiter gesendet werden. Diese Sequenz kann gemäß einer speziellen vordefinierten Häufigkeit wiederholt werden. Im Beispiel von 8 kann der EIEOS auf den Bahnen ca. einmal alle eintausend Uls (∼1KUI) gefolgt vom Rest der Erkennungssupersequenz 805 erneut auftreten. Ein Empfänger kann Bahnen auf die Präsenz von einer sich wiederholenden Erkennungssupersequenz 805 überwachen und nach der Validierung der Supersequenz 705 schließen, dass ein Remote-Agent anwesend ist, auf den Bahnen hinzugefügt (z. B. im Betrieb angeschlossen) wurde, aufgewacht ist oder neu initialisiert usw.
-
Bei einem weiteren Beispiel kann eine andere Supersequenz 810 definiert sein, um eine Abfrage-, Konfigurations- oder Loopback-Bedingung oder -Zustand anzuzeigen. Wie bei der beispielhaften Erkennungssupersequenz 805, können Bahnen eines Links durch einen Empfänger auf solch eine Abfrage/Konfig/Loop-Supersequenz 810 überwacht werden, um einen Abfragezustand, Konfigurationszustand oder Loopback-Zustand oder eine -Bedingung zu bestimmen. Bei einem Beispiel kann eine Abfrage/Konfig/Loop-Supersequenz 810 mit einem EIEOS beginnen gefolgt von einer vordefinierten Anzahl an wiederholten Instanzen einer TS. Zum Beispiel können bei einem Beispiel dem EIEOS einunddreißig (31) Instanzen einer TS folgen, wobei der EIEOS ca. alle viertausend UI (z. B. ~4 KUI) wiederholt wird.
-
Weiter kann bei einem anderen Beispiel, eine Partialbreite-Sendezustand-(PWTS) -Ausstiegssupersequenz 815 definiert sein. Bei einem Beispiel kann eine PWTS-Ausstiegssupersequenz einen anfänglichen EIEOS einschließen, um das Voraufbereiten von Bahnen vor dem Senden der ersten vollen Sequenz in der Supersequenz zu wiederholen. Zum Beispiel kann die Sequenz, die in der Supersequenz 815 zu wiederholen ist, mit einem EIEOS beginnen (um sich ca. einmal alle 1 KUI zu wiederholen). Weiter können schnelle Trainingssequenzen (FTS) anstatt anderer Trainingssequenzen (TS) verwendet werden, wobei die FTS konfiguriert sind, um bei einer schnelleren Bitsperre, Bytesperre und bei Deskewing zu unterstützen. Bei einigen Implementierungen kann eine FTS entschlüsselt sein, um weiter beim Reaktivieren von inaktiven Bahnen so schnell und nicht störend wie möglich zu unterstützen. Wie bei anderen Supersequenzen, die einem Eintritt in einen Link-Sendezustand vorausgehen, kann die Supersequenz 815 unterbrochen und durch das Senden eines SDS beendet werden. Weiter kann eine partielle FTS (FTSp) gesendet werden, um beim Synchronisieren der neuen Bahnen mit den aktiven Bahnen zu unterstützen, wie beispielsweise indem ermöglicht wird, dass Bits von der FTSp subtrahiert (oder dazu hinzugefügt) werden, neben anderen Beispielen.
-
Supersequenzen wie die Erkennungssupersequenz 705 und die Abfrage/Konfig/Loop-Supersequenz 710 usw. können potenziell im Wesentlichen während der Initialisierung oder Neuinitialisierung eines Links gesendet werden. Ein Empfänger kann in einigen Fällen nach dem Empfangen und Erkennen einer speziellen Supersequenz mittels eines Echos der gleichen Supersequenz zum Sender über die Bahnen antworten. Das Empfangen und Validieren einer speziellen Supersequenz durch Sender und Empfänger kann als ein Handshake zum Bestätigen eines Zustandes oder einer Bedingung dienen, die durch die Supersequenz kommuniziert wurde. Zum Beispiel kann solch ein Handshake (z. B. das Verwenden einer Erkennungssupersequenz 705) verwendet werden, um die Neuinitialisierung eines Links zu bestimmen. Bei einem weiteren Beispiel kann solch ein Handshake verwendet werden, um das Ende eines elektrischen Reset oder Niedrigenergiezustandes anzuzeigen, was in entsprechenden Bahnen resultiert, die wieder aktiviert werden, neben anderen Beispielen. Das Ende des elektrischen Reset kann zum Beispiel von einem Handshake zwischen dem Sender und Empfänger bestimmt werden, indem jeder eine Erkennungssupersequenz 705 sendet.
-
Bei einem weiteren Beispiel können Bahnen für Supersequenzen überwacht werden und die Supersequenzen unter anderem in Verbindung mit dem Screening von Bahnen auf Erkennen, Wecken, Zustandsausstiege und -eintritte verwendet werden. Die vordefinierte und vorhersagbare Art und Form von Supersequenzen kann weiter verwendet werden, um solche Initialisierungstasks wie Bitsperren, Bytesperren, Entprellen, Descrambling, Deskewing, Anpassung, Latenzzeit-Fixieren, verhandelte Verzögerungen und andere mögliche Verwendungen auszuführen. In der Tat können Bahnen im Wesentlichen kontinuierlich auf solche Ereignisse überwacht werden, um die Fähigkeit des Systems zu beleben, auf solche Bedingungen zu reagieren und sie zu verarbeiten.
-
Im Fall von Entprellen können infolge einer Vielzahl von Bedingungen Transienten auf Bahnen eingeführt werden. Zum Beispiel kann das Hinzufügen oder Einschalten eines Gerätes Transienten auf der Bahn einführen. Zusätzlich können Spannungsunregelmäßigkeiten auf einer Bahn aufgrund von dürftiger Bahnqualität oder eines elektrischen Fehlers auftreten. In einigen Fällen kann „Prellen“ auf einer Bahn falsche positive Ergebnisse, wie einen falschen EIEOS erzeugen. Bei einigen Implementierungen können definierte Supersequenzen jedoch weiter zusätzliche Sequenzen von Daten sowie eine definierte Häufigkeit einschließen, mit der der EIEOS wiederholt wird, während Supersequenzen mit einem EIEOS beginnen können. Sogar dort, wo ein falscher EIEOS auf einer Bahn erscheint, kann ein Logikanalysator als Resultat beim Empfänger bestimmen, dass der EIEOS ein falsch positives Ergebnis ist, indem er Daten, die dem falschen EIEOS nachfolgen, validiert. Wenn zum Beispiel eine erwartete TS oder andere Daten dem EIEOS nicht folgen oder der EIEOS sich nicht innerhalb einer speziellen vordefinierten Häufigkeit von einer der vordefinierten Supersequenzen wiederholt, kann der Empfänger-Logikanalysator bei der Validierung des empfangenen EIEOS fehlschlagen. Da Prellen beim Starten auftreten kann, während ein Gerät zu einer Leitung hinzugefügt wird, können auch falsche Negative resultieren. Zum Beispiel kann ein Gerät, nachdem es zu einem Satz von Bahnen hinzugefügt wurde, das Senden einer Erkennungssupersequenz 705 beginnen, um die andere Seite des Links auf seine Präsenz aufmerksam zu machen und die Initialisierung des Links zu beginnen. Jedoch können auf den Bahnen eingeführte Transienten den anfänglichen EIEOS, die TS-Instanzen und die anderen Daten der Supersequenz beschädigen. Ein Logikanalysator beim Empfangsgerät kann die Bahnen jedoch weiter überwachen und den nächsten EIEOS bestimmen, der durch das neue Gerät in der sich wiederholenden Erkennungssupersequenz 705 gesendet wird, neben anderen Beispielen.
-
Bei einigen Implementierungen ist ein HPI-Link fähig, erleichtert durch den eingebetteten Takt bei mehreren Geschwindigkeiten zu arbeiten. Zum Beispiel kann ein langsamer Modus definiert sein. In einigen Fällen kann der langsame Modus verwendet werden, um bei der Erleichterung der Initialisierung eines Links zu unterstützen. Die Kalibrierung des Links kann softwarebasierte Controller einbeziehen, die Logik bereitstellen, um verschiedene kalibrierte Eigenschaften des Links einzustellen, die neben anderen potenziellen Eigenschaften einschließen, für welche Bahnen der Link zu verwenden ist, die Konfiguration der Bahnen, die Betriebsgeschwindigkeit des Links, Synchronisation der Bahnen und Agenten, Deskew, Ziel-Latenzzeit. Diese softwarebasierten Tools können von externen Steuerungspunkten Gebrauch machen, um Daten zu Registern der physikalischen Schicht hinzuzufügen, um verschiedene Aspekte der Einrichtungen der physikalischen Schicht und Logik zu steuern.
-
Die Betriebsgeschwindigkeit eines Links kann beträchtlich höher sein als die effektive Betriebsgeschwindigkeit von softwarebasierten Controllern, die bei der Initialisierung des Links verwendet werden. Ein langsamer Modus kann verwendet werden, um die Verwendung von solchen softwarebasierten Controllern neben anderen Fällen, wie beispielsweise während der Initialisierung oder Neuinitialisierung des Links, zu ermöglichen. Langsamer Modus kann bei Bahnen angewendet werden, die einen Empfänger und Sender verbinden, beispielsweise, wenn ein Link eingeschaltet, initialisiert, zurückgesetzt usw. wird, um bei der Erleichterung der Kalibrierung des Links zu unterstützen.
-
Bei einer Ausführungsform kann der Takt in den Daten eingebettet sein, sodass es keine getrennten Taktbahnen gibt. Weiter können die über die Bahnen gesendeten Flits verschlüsselt sein, um Taktrückgewinnung zu erleichtern. Die Empfänger-Taktrückgewinnungseinheit kann als ein Beispiel Abtasttakte zu einem Empfänger liefern (d. h., der Empfänger gewinnt den Takt aus den Daten und verwendet ihn, um die eingehenden Daten zu sampeln). Empfänger passen sich bei einigen Implementierungen kontinuierlich an einen eingehenden Bitstrom an. Durch das Einbetten des Taktes kann Pinbelegung potenziell reduziert werden. Das Einbetten des Taktes in die In-Band-Daten kann die Art und Weise ändern, in der ein In-Band-Reset angegangen wird. Bei einer Ausführungsform kann ein Blockieren-Link-Zustand (BLS) nach der Initialisierung verwendet werden. Außerdem können elektrische Ordered-Set-Supersequenzen während der Initialisierung verwendet werden, um den Reset zu erleichtern, neben anderen Überlegungen. Der eingebettete Takt kann zwischen den Geräten auf einem Link gemeinsam sein, und der gemeinsame Betriebstakt kann während der Kalibrierung und Konfiguration des Links festgelegt werden. Zum Beispiel können HPI-Links einen gemeinsamen Takt mit Driftpuffern referenzieren. Eine solche Implementierung kann neben anderen potenziellen Vorteilen eine niedrigere Latenzzeit realisieren als elastische Puffer, die in nicht gemeinsamen Referenztakten verwendet werden. Weiter können die Referenztaktverteilungssegmente innerhalb spezifizierter Grenzen angepasst werden.
-
Wie bereits erwähnt kann ein HPI-Link in der Lage sein, bei mehreren Geschwindigkeiten einschließlich eines „langsamen Modus“ für standardmäßiges Einschalten, Initialisierung usw. zu arbeiten. Die Betriebsgeschwindigkeit (oder „schnelle“) Geschwindigkeit oder der Betriebsmodus jedes Gerätes kann statisch durch das BIOS gesetzt werden. Der gemeinsame Takt auf dem Link kann basierend auf den entsprechenden Betriebsgeschwindigkeiten jedes Gerätes auf beiden Seiten des Links konfiguriert sein. Zum Beispiel kann die Link-Geschwindigkeit auf der langsameren der zwei Geräte-Betriebsgeschwindigkeiten basieren, neben anderen Beispielen. Jede Betriebsgeschwindigkeitsänderung kann von einem Warm- oder Kaltstart begleitet sein.
-
Bei einigen Beispielen initialisiert der Link beim Einschalten in den langsamen Modus mit einer Durchsatzrate von beispielsweise 100 MT/s. Software richtet dann die zwei Seiten für die Betriebsgeschwindigkeit des Links ein und beginnt die Initialisierung. In anderen Fällen kann ein Seitenbandmechanismus verwendet werden, um einen Link einzurichten, der den gemeinsamen Takt auf dem Link zum Beispiel in der Abwesenheit oder Nichtverfügbarkeit eines langsamen Modus einschließt.
-
Eine Initialisierungsphase im langsamen Modus kann bei einer Ausführungsform die gleichen Codier-, Verschlüsselungs-, Trainingssequenzen (TS), Zustände usw. wie die Betriebsgeschwindigkeit verwenden, aber mit potenziell geringeren Merkmalen (z. B. kein elektrisches Parameter-Setup, keine Anpassung usw.). Die Betriebsphase des langsamen Modus kann auch potenziell das gleiche Codieren, Verschlüsseln usw. verwenden (obwohl andere Implementierungen dies vielleicht nicht tun), kann aber geringere Zustände und Merkmale im Vergleich zur Betriebsgeschwindigkeit aufweisen (z. B. keine Niedrigenergiezustände).
-
Weiter kann der langsame Modus unter Verwendung der nativen Phasenregelschleifen- (PLL) -Taktfrequenz des Gerätes implementiert sein. Zum Beispiel kann die HPI einen emulierten langsamen Modus unterstützen, ohne die PLL-Taktfrequenz zu ändern. Während einige Designs getrennte PLLs für die langsame und schnelle Geschwindigkeit verwenden können, kann bei einigen HPI-Implementierungen der emulierte langsame Modus dadurch erreicht werden, dass dem PLL-Takt erlaubt wird, während des langsamen Modus bei der gleichen schnellen Betriebsgeschwindigkeit zu laufen. Zum Beispiel kann ein Sender ein langsameres Taktsignal emulieren, indem er Bits mehrere Male wiederholt, um ein langsames hohes Taktsignal und dann ein langsames niedriges Taktsignal zu emulieren. Der Empfänger kann dann das empfangene Signal übersampeln, um Flanken zu lokalisieren, die durch die sich wiederholenden Bits emuliert werden, und kann das Bit bestimmen. Bei solchen Implementierungen können Ports, die einen PLL gemeinsam benutzen, bei langsamen und schnellen Geschwindigkeiten koexistieren.
-
Eine gemeinsame langsamer Modus-Geschwindigkeit kann zwischen zwei Geräten initialisiert werden. Zum Beispiel können die zwei Geräte auf einem Link unterschiedliche schnelle Betriebsgeschwindigkeiten aufweisen. Eine gemeinsame langsamer Modus-Geschwindigkeit kann zum Beispiel während einer Entdeckungsphase oder eines - zustandes auf dem Link konfiguriert werden. Bei einem Beispiel kann ein Emulationsvielfaches als ein ganze Zahl- (oder keine ganze Zahl) -Verhältnis der schnellen Geschwindigkeit zur langsamen Geschwindigkeit gesetzt werden, und die unterschiedlichen schnellen Geschwindigkeiten können abwärtsgewandelt werden, um mit der gleichen langsamen Geschwindigkeit zu arbeiten. Zum Beispiel können zwei Geräteagenten, die mindestens eine gemeinsame Frequenz unterstützen, ohne Rücksicht auf die Geschwindigkeit, mit der der Host Port läuft, im laufenden Betrieb angefügt werden. Softwareentdeckung kann dann den langsamer Modus-Link verwenden, um die optimalsten Link-Betriebsgeschwindigkeiten zu bestimmen und einzurichten. Wo das Vielfache ein ganzzahliges Verhältnis der schnellen Geschwindigkeit zur langsamen Geschwindigkeit ist, können unterschiedliche schnelle Geschwindigkeiten mit der gleichen langsamen Geschwindigkeit arbeiten, die während der Entdeckungsphase verwendet werden können (z. B. Hot-Attach).
-
Bei einigen HPI-Implementierungen kann die Anpassung von Bahnen bei einem Link unterstützt werden. Die physikalische Schicht kann sowohl Empfängeranpassung als auch Senderanpassung unterstützen. Mit der Empfängeranpassung kann der Sender auf einer Bahn Sample-Daten zum Empfänger senden, welche die Empfängerlogik verarbeiten kann, um Defizite in den elektrischen Eigenschaften der Bahn und der Qualität des Signals zu bestimmen. Der Empfänger kann dann Einstellungen an der Kalibrierung der Bahn vornehmen, um die Bahn basierend auf der Analyse der empfangenen Sample-Daten zu optimieren. Im Fall von der Anpassung des Senders kann der Empfänger erneut Sample-Daten empfangen und Metrik entwickeln, die die Qualität der Bahn beschreibt, aber in diesem Fall die Metrik zum Sender (z. B. unter Verwendung eines Rückkanals wie ein Software-, Hardware-, eingebetteter, Seitenband- oder ein anderer Kanal) kommunizieren, um dem Sender zu ermöglichen, basierend auf dem Feedback Einstellungen an der Bahn vorzunehmen. Die Empfängeranpassung kann beim Start des Abfragezustandes unter Verwendung der Abfragesupersequenz, die vom entfernten Sender gesendet wurde, initiiert werden. Ähnlich kann die Senderanpassung durch Wiederholen des Folgenden für jeden Senderparameter erfolgen. Beide Agenten können in den Loopback-Muster-Zustand als Master eintreten und das spezifizierte Muster senden. Beide Empfänger können die Metrik (z. B. BER) für diesen speziellen Sender durch Einstellen eines Remote-Agenten messen. Beide Agenten können zum Loopback-Markierer-Zustand gehen und dann zurücksetzen und Rückkanäle (langsamer Modus TLS oder Seitenband) verwenden, um Metrik auszutauschen. Basierend auf dieser Metrik kann die nächste Sendereinstellung bestimmt werden. Letztendlich kann die optimale Sendereinstellung bestimmt und für eine Folgenutzung gesichert werden.
-
Da beide Geräte an einem Link beim gleichen Referenztakt (z. B. ref clk) laufen können, können Elastizitätspuffer ausgelassen werden (jegliche elastischen Puffer können umgangen oder als Driftpuffer mit der niedrigstmöglichen Latenzzeit verwendet werden). Jedoch können Phasenanpassungs- oder Driftpuffer auf jeder Bahn verwendet werden, um den entsprechenden Empfänger-Bitstrom von der Remote-Takt-Domäne zur lokalen Takt-Domäne zu übertragen. Die Latenzzeit der Driftpuffer kann ausreichend sein, um die Summe der Drift von allen Quellen in der elektrischen Spezifikation (z. B. Spannung, Temperatur, der restliche SSC , der durch Referenztakt-Routing-Fehlanpassungen eingeführt wird, und so weiter) zu behandeln, kann aber so klein wie möglich sein, um Transportverzögerung zu reduzieren. Wenn der Driftpuffer zu flach ist, können Abweichungsfehler resultieren und sich als eine Serie von CRC-Fehlern manifestieren. Daher kann bei einigen Implementierungen ein Driftalarm bereitgestellt werden, der ein Zurücksetzen der physikalischen Schicht initiieren kann, bevor ein tatsächlicher Driftfehler auftritt, neben anderen Beispielen.
-
Einige HPI-Implementierungen können die zwei Seiten unterstützen, die bei einer gleichen nominalen Referenztaktfrequenz laufen, aber mit einer ppm-Differenz. In diesem Fall können Frequenzanpassungs- (oder Elastizitäts-) Puffer erforderlich sein und können während eines ausgedehnten BSL-Fensters oder während spezieller Sequenzen neu angepasst werden, die periodisch auftreten würden, neben anderen Beispielen.
-
Der Betrieb der logischen HPI-PHY-Schicht kann von den darunterliegenden Übertragungsmedien unabhängig sein, vorausgesetzt, dass die Latenzzeit nicht in Latenzzeit-Fixierfehlern oder Timeouts an der Linkschicht resultiert, neben anderen Überlegungen.
-
Externe Schnittstellen können in der HPI bereitgestellt werden, um bei der Verwaltung der physikalischen Schicht zu unterstützen. Zum Beispiel können externe Signale (von Pins, Sicherungen, anderen Schichten), Zeitgeber, Steuerungs- und Statusregister bereitgestellt werden. Die Eingangssignale können sich zu irgendeinem Zeitpunkt relativ zum PHY-Zustand ändern, sind aber von der physikalischen Schicht an speziellen Punkten in einem entsprechenden Zustand zu beachten. Beispielsweise kann ein sich änderndes Synchronisiersignal (wie nachfolgend eingeführt) empfangen werden, aber keine Auswirkung haben, nachdem der Link in einen Senden-Link-Zustand eingetreten, ist neben anderen Beispielen. In ähnlicher Weise können Befehlsregisterwerte durch Entitäten der physikalischen Schicht nur zu speziellen Zeitpunkten beachtet werden. Zum Beispiel kann die physikalische Schicht-Logik eine Momentaufnahme des Wertes vornehmen und ihn bei nachfolgenden Operationen verwenden. Daher können bei einigen Implementierungen Updates zu Befehlsregistern mit einem begrenzten Teilsatz von speziellen Zeiträumen (z. B. in einem Senden-Link-Zustand oder beim Halten in Reset-Kalibrierung, im Senden-Link-Zustand mit langsamem Modus) verbunden sein, um ein anormales Verhalten zu vermeiden.
-
Da Statuswerte Hardwareänderungen nachverfolgen, können die gelesenen Werte davon abhängen, wann sie gelesen werden. Jedoch können einige Statuswerte wie Linkzuordnung, Latenzzeit, Geschwindigkeit usw., sich nach der Initialisierung nicht ändern. Zum Beispiel ist eine Neuinitialisierung (oder ein Niedrigenergie-Link-Zustand- (LPLS) oder L1-Zustand-Ausstieg) die einzige Sache, die diese zur Änderung veranlassen können (z. B. kann ein schwerer Bahnfehler in einer TLS nicht in Rekonfiguration des Links resultieren, bis die Neuinitialisierung ausgelöst wird, neben anderen Beispielen).
-
Schnittstellensignale können Signale einschließen, die sich extern zur physikalischen Schicht befinden, aber deren Verhalten beeinflussen. Solche Schnittstellensignale können als Beispiele Codier- und Taktsignale einschließen. Schnittstellensignale können designspezifisch sein. Diese Signale können einen Eingang oder Ausgang darstellen. Einige Schnittstellensignale wie Semaphoren und mit Präfix EO können neben anderen Beispielen einmal pro Assertionsflanke aktiv sein, d. h., sie können deassertiert sein und dann wieder reassertiert werden, um erneut wirksam zu sein, neben anderen Beispielen. Zum Beispiel schließt die Tabelle 1 eine beispielhafte Liste von beispielhaften Funktionen ein:
TABELLE 1
Funktion |
Eingang Pin-Reset (auch als Warmstart bekannt) |
Eingang Pin-Reset (auch als Kaltstart bekannt) |
Eingang In-Band-Resetimpuls; bewirkt, dass Semaphor gesetzt wird; Semaphor wird gelöscht, wenn In-Band-Reset auftritt |
Eingang ermöglicht Niedrigenergiezustände |
Eingang Loopback-Parameter; angewandt für Loopback-Muster |
Eingang, um in PWLTS einzutreten |
Eingang, um PWLTS zu verlassen |
Eingang, um in LPLS einzutreten |
Eingang, um LPLS zu verlassen |
Eingang vom inaktiven Ausstiegerkennen (auch bekannt als Squelch Break) |
Eingang aktiviert die Verwendung von CPhyInitBegin |
Eingang von lokaler oder planetarischer Ausrichtung für den Sender, um Initialisierung zu verlassen |
Ausgang wenn Remote-Agent NAKs LPLS-Anfrage |
Ausgang, wenn Agent in LPLS eintritt |
Ausgang zur Linkschicht, um nicht wieder versuchende Flits zu erzwingen |
Ausgang zur Linkschicht, um NULL-Flits zu erzwingen |
Ausgang, wenn Sender im Partialbreite-Link-Sendezustand (PWLTS) ist |
Ausgang, wenn Empfänger im PWLTS ist |
-
CSR-Zeitgeber-Standardwerte können paarweise bereitgestellt sein - einer für den langsamen Modus und einer für die Betriebsgeschwindigkeit. In einigen Fällen deaktiviert der Wert
0 den Zeitgeber (d. h., Timeout tritt niemals auf). Zeitgeber können diejenigen einschließen, die in Tabelle 2 unten gezeigt sind. Primäre Zeitgeber können verwendet werden, um erwartete Aktionen in einem Zustand zu timen. Sekundäre Zeitgeber werden für das Abbrechen von Initialisierungen verwendet, die nicht fortschreiten, oder um Fortschrittszustandsübergänge in einem ATE-Modus zu präzisen Zeiten durchzuführen. In einigen Fällen können sekundäre Zeitgeber viel größer sein als die primären Zeitgeber in einem Zustand. Exponentielle Zeitgebersätze können mit Suffix exp versehen sein und der Zeitgeberwert ist 2 potenziert mit dem Feldwert. Bei linearen Zeitgebern ist der Zeitgeberwert der Feldwert. Jeder Zeitgeber könnte unterschiedliche Feinheiten verwenden. Zusätzlich können sich einige Zeitgeber im Power-Management-Abschnitt in einem Satz genannt Timing-Profil befinden. Diese können mit einem Zeitdiagramm des gleichen Namens verbunden sein.
TABELLE 2
Zeitgeber |
Tabelle Tpriexp Set |
Residenz zurücksetzen, um EIEOS anzusteuern |
Empfängerkalibrierungsmindestzeit; für gestaffeltes Sender aus |
Senderkalibrierungsmindestzeit; für gestaffelt ein |
Tsecexp Set |
Getimte Empfängerkalibrierung |
Getimte Senderkalibrierung |
Squelch-Ausstiegerkennen/-entprellen |
DetectAtRx-Überhang für Handshake |
Adapt+B itsperre/Bytesperre/Deskew |
Konfigurieren von Linkbreiten |
Warten auf planetarisch ausgerichtete saubere Flit-Begrenzung |
Re-Bytesperre/Deskew |
Tdebugexp Set |
Für Hot-Plugging; Nicht-O-Wert bez. Debughängen |
TBLSentry-Satz |
BLS-Einstiegsverzögerung - fein |
BLS-Einstiegsverzögerung - grob |
TBLS-Satz |
BLS-Dauer für den Sender |
BLS-Dauer für den Empfänger |
BLS sauberes Flit-Intervall für den Sender |
TBLS sauberes Flit-Intervall für den Empfänger |
-
Befehls- und Steuerregister können bereitgestellt werden. Steuerregister können eine späte Aktion sein und können in einigen Fällen von Software gelesen oder geschrieben werden. Werte einer späten Aktion können kontinuierlich im Reset wirksam werden (z. B. durchgehen vom Software zugewandten zum Hardware zugewandten Abschnitt). Steuerungssemaphoren (mit Präfix CP) sind RW1S und können von Hardware gelöscht werden. Steuerregister können verwendet werden, um irgendwelche der hier beschriebenen Elemente auszuführen. Sie können veränderbar und durch Hardware, Software, Firmware oder eine Kombination davon zugänglich sein.
-
Statusregister können bereitgestellt werden, um Hardwareänderungen (geschrieben und von Hardware verwendet) nachzuverfolgen und können nur lesend sein (aber Debug-Software kann auch in der Lage sein, in sie zu schreiben). Solche Register können die Interoperabilität nicht beeinträchtigen und können normalerweise mit vielen privaten Statusregistern ergänzt werden. Status-Semaphoren (mit Präfix SP) können mandatiert sein, da sie von Software gelöscht werden können, um die Aktionen zu wiederholen, die den Status gesetzt haben. Standard bedeutet, dass anfängliche (bei Reset) Werte als ein Teilsatz dieser mit der Initialisierung in Zusammenhang stehenden Status-Bits bereitgestellt werden können. Bei einem Initialisierungsabbruch kann dieses Register in eine Speicherstruktur kopiert werden.
-
Toolbox-Register können bereitgestellt werden. Zum Beispiel können Prüfbarkeits-Toolbox-Register in der physikalischen Schicht Mustererzeugung, Musterüberprüfung und Loopback-Kontrollmechanismen bereitstellen. Übergeordnete Anwendungen können von diesen Registern zusammen mit elektrischen Parametern Gebrauch machen, um Spielräume zu bestimmen. Beispielsweise kann eine in der Kopplungsstruktur integrierte Prüfung diese Toolbox verwenden, um Spielräume zu bestimmen. Für die Anpassung des Senders können diese Register in Verbindung mit den speziellen Registern verwendet werden, die in vorhergehenden Abschnitten beschrieben sind, neben anderen Beispielen.
-
Bei einigen Implementierungen unterstützt die HPI Zuverlässigkeits-, Verfügbarkeits- und Wartungsfreundlichkeits- (RAS) -Fähigkeiten unter Verwendung der physikalischen Schicht. Bei einer Ausführungsform unterstützt die HPI Hot-Plug und -Remove mit einer oder mehreren Schichten, die Software einschließen können. Hot-Remove kann das Stilllegen des Links einschließen und ein Initialisierungsbeginn-Zustand/-Signal kann für den Agenten, der entfernt wird, gelöscht werden. Ein Remote-Agent (d. h., derjenige, der nicht entfernt wird (z. B. der Host-Agent)) kann auf eine langsame Geschwindigkeit gesetzt werden und sein Initialisierungssignal kann auch gelöscht werden. Ein In-Band-Reset (z. B. durch BLS) kann beide Agenten veranlassen, in einem Reset-Zustand wie einem Kalibrier-Reset-Zustand (CRS) zu warten; und der zu entfernende Agent kann entfernt werden (oder kann im adressierten Pin-Reset gehalten, heruntergefahren werden), neben anderen Beispielen und Merkmalen. In der Tat können einige der vorstehend genannten Ereignisse ausgelassen werden und zusätzliche Ereignisse können hinzugefügt werden.
-
Hot-Add kann einschließen, dass die Initialisierungsgeschwindigkeit standardmäßig langsam ist, und ein Initialisierungssignal kann bei dem hinzuzufügenden Agenten gesetzt werden. Software kann die Geschwindigkeit auf langsam setzen und das Initialisierungssignal beim Remote-Agenten löschen. Der Link kann im langsamen Modus aufkommen und Software kann eine Betriebsgeschwindigkeit bestimmen. In einigen Fällen wird keine PLL-Neusperre eines Remote an diesem Punkt ausgeführt. Betriebsgeschwindigkeit kann bei beiden Agenten gesetzt werden und eine Aktivierung kann für eine Anpassung gesetzt werden (wenn nicht zuvor erfolgt). Die Initialisierungsbeginnanzeige kann bei beiden Agenten gelöscht werden und ein In-Band-BSL-Reset kann beide Agenten veranlassen, in CRS zu warten. Software kann einen Warmstart (z. B. ein adressierter oder selbst zurückgesetzter) von einem Agenten (der hinzugefügt werden soll) assertieren, was einen PLL-veranlassen kann, erneut zu sperren. Software kann auch das Initialisierungsbeginn-Signal durch jede bekannte Logik setzen und weiter bei Remote setzen (und ihn deshalb zum Receiver Detect State (RDS) fortschreiten lassen). Software kann einen Warmstart des hinzuzufügenden Agenten deassertieren (ihn deshalb zu RDS fortschreiten lassen). Der Link kann dann bei Betriebsgeschwindigkeit zu einem Senden-Link-Zustand (TLS) initialisieren (oder zu Loopback, wenn das Anpassungssignal gesetzt ist), neben anderen Beispielen. In der Tat können einige der vorstehend genannten Ereignisse ausgelassen werden und zusätzliche Ereignisse können hinzugefügt werden.
-
Wiederherstellung der Datenbahn bei Ausfall kann unterstützt werden. Ein Link in der HPI kann bei einer Ausführungsform gegen einen schweren Fehler auf einer einzelnen Bahn durch Selbstkonfigurieren auf weniger als die volle Breite (z. B. weniger als die Hälfte der vollen Breite) beständig sein, was die fehlerhafte Bahn dadurch ausschließen kann. Als ein Beispiel kann die Konfiguration durch die Link-Zustandsmaschine erfolgen und unbenutzte Bahnen können im Konfigurationszustand abgeschaltet werden. Als Resultat kann der Flit neben anderen Beispielen mit einer engeren Breite gesendet werden.
-
Bei einigen HPI-Implementierungen kann Bahn-Umkehrung bei einigen Links unterstützt werden. Bahn-Umkehrung kann zum Beispiel auf die Bahnen 0/1/2... eines Senders verweisen, die mit den Bahnen n/n-1/n-2... eines Empfängers verbunden sind (z. B. kann n 19 oder 7 gleichen usw.). Bahn-Umkehrung kann beim Empfänger wie in einem Feld eines TS-Headers bestimmt erkannt werden. Der Empfänger kann die Bahn-Umkehrung durch den Beginn in einem Abfragezustand unter Verwendung der physikalischen Bahn n... 0 für die logische Bahn 0..n behandeln. Deshalb können Verweise auf eine Bahn auf eine logische Bahnnummer verweisen. Deshalb können Platinenentwickler effektiver das physikalische oder elektrische Design entwerfen und die HPI kann mit virtuellen Bahnzuweisungen wie hier beschrieben arbeiten. Des Weiteren kann bei einer Ausführungsform die Polarität invertiert werden (d. h., wenn ein differenzieller Sender +/- mit Empfänger -/+ verbunden ist. Polarität kann auch bei einem Empfänger von einem oder mehreren TS-Header-Feldern erkannt und bei einer Ausführungsform im Abfragezustand behandelt werden.
-
Unter Bezugnahme auf 10 ist eine Ausführungsform eines Blockdiagramms für ein Computersystem dargestellt, das einen Mehrkernprozessor einschließt. Der Prozessor 1000 schließt jeden Prozessor oder jedes Verarbeitungsgerät wie einen Mikroprozessor, einen integrierten Prozessor, einen Digitalsignal-Prozessor (DSP), einen Netzwerkprozessor, einen Handheld-Prozessor, einen Anwendungsprozessor, einen Koprozessor, ein System auf einem Chip (SOC) oder anderes Gerät ein, um Code auszuführen. Der Prozessor 1000 schließt bei einer Ausführungsform wenigstens zwei Kerne ein - Kern 1001 und 1002, die asymmetrische Kerne oder symmetrische Kerne (die veranschaulichte Ausführungsform) einschließen können. Jedoch kann der Prozessor 1000 jegliche Anzahl von Verarbeitungselementen einschließen, die symmetrisch oder asymmetrisch sein können.
-
Bei einer Ausführungsform verweist ein Verarbeitungselement auf Hardware oder Logik, um einen Software-Thread zu unterstützen. Beispiele von Hardwareverarbeitungselementen schließen ein: 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 jedes andere Element, das einen Zustand für einen Prozessor halten kann, wie z. B. einen Ausführungszustand oder Architekturzustand. Mit anderen Worten bezieht sich ein Verarbeitungselement bei einer Ausführungsform auf jede Hardware, die unabhängig mit Code verbunden sein kann, wie z. B. ein Software-Thread, Betriebssystem, eine Anwendung oder ein anderer Code. Ein physikalischer Prozessor (oder Prozessor-Sockel) bezieht sich typischerweise auf eine integrierte Schaltung, die potenziell jegliche Anzahl anderer Verarbeitungselemente einschließt, wie z. B. Kerne oder Hardware-Threads.
-
Ein Kern bezieht sich oft auf Logik in einer integrierten Schaltung, die fähig ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei jeder unabhängig aufrechterhaltene Architekturzustand mit mindestens einigen dedizierten Ausführungsressourcen verbunden ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread typischerweise auf jegliche Logik, die sich auf einer integrierten Schaltung befindet, die einen unabhängigen Architekturzustand aufrechterhalten kann, wobei die unabhängig aufrechterhaltenen Architekturzustände Zugang zu Ausführungsressourcen gemeinsam benutzen. Es ist ersichtlich, dass die Linie zwischen der Nomenklatur eines Hardware-Threads und Kerns überlappt, wenn bestimmte Ressourcen gemeinsam benutzt werden und andere einem Architekturzustand fest zugeordnet sind. Dennoch werden ein Kern und ein Hardware-Thread oftmals von einem Betriebssystem als individuelle logische Prozessoren angesehen, wobei das Betriebssystem Operationen auf jedem logischen Prozessor individuell einplanen kann.
-
Der physikalische Prozessor 1000, wie in 10 veranschaulicht, schließt zwei Kerne, Kern 1001 und 1002, ein. Hier werden die Kerne 1001 und 1002 als symmetrische Kerne betrachtet, d. h., als Kerne mit den gleichen Konfigurationen, funktionalen Einheiten und/oder gleicher Logik. Bei einer weiteren Ausführungsform schließt der Kern 1001 einen Out-of-Order-Prozessorkern ein, während der Kern 1002 einen In-Order-Prozessor-Kern einschließt. Die Kerne 1001 und 1002 können individuell von jeder Art von Kern, wie ein nativer Kern, ein softwareverwalteter Kern, ein Kern, der angepasst ist, um eine native Befehlssatzarchitektur (ISA) auszuführen, ein Kern, der angepasst ist, um eine übersetzte Befehlssatzarchitektur (ISA) auszuführen, ein Co-Designed Kern oder ein anderer bekannter Kern, ausgewählt werden. In einer heterogenen Kernumgebung (d. h., asymmetrische Kerne) kann eine Form der Übersetzung, wie eine binäre Übersetzung, verwendet werden, um Code auf einem oder beiden Kernen einzuplanen oder auszuführen. Um die Erörterung weiterzuführen, werden die im Kern 1001 veranschaulichten funktionalen Einheiten nachfolgend in weiteren Details beschrieben, da die Einheiten im Kern 1002 in der dargestellten Ausführungsform in ähnlicher Weise arbeiten.
-
Wie dargestellt schließt Kern 1001 zwei Hardwarethreads 1001a und 1001b ein, die auch als Hardwarethread-Slots 1001a und 1001b bezeichnet werden können. Daher sehen Software-Entitäten, wie z. B. ein Betriebssystem, den Prozessor 1000 bei einer Ausführungsform potenziell als vier getrennte Prozessoren an, d. h. vier logische Prozessoren oder Verarbeitungselemente, die vier Software-Threads gleichzeitig ausführen können. Wie vorstehend daraufhingewiesen, ist ein erster Thread mit den Architekturzustandsregistern 1001a verbunden, ein zweiter Thread ist mit den Architekturzustandsregistern 1001b verbunden, ein dritter Thread ist mit den Architekturzustandsregistern 1002a verbunden und ein vierter Thread ist mit den Architekturzustandsregistern 1002b verbunden. Hier kann jedes der Architekturzustandsregister (1001a, 1001b, 1002a und 1002b) als Verarbeitungselemente, Thread-Slots oder Thread-Einheiten wie oben beschrieben bezeichnet werden. Wie veranschaulicht, sind die Architekturzustandsregister 1001a in den Architekturzustandsregistern 1001b wiederholt, sodass individuelle Architekturzustände/- kontexte für den logischen Prozessor 1001a und den logischen Prozessor 1001b gespeichert sein können. In Kern 1001 können weitere kleinere Ressourcen, wie z. B. Befehlszeiger und Umbenennungslogik im Zuordner- und Umbenennungsblock 1030, ebenfalls für die Threads 1001a und 1001b wiederholt werden. Einige Ressourcen, wie z. B. Neuordnungspuffer in Neuordnungs-/Rückordnungseinheit 1035, ILTB 1020, Lade-/Speicherpuffern und Warteschlangen, können durch Partitionierung gemeinsam benutzt werden. Weitere Ressourcen, wie z. B. interne Universalregister, Seitentabellen-Basisregister, untergeordneter Daten-Cache und Daten-TLB 1015, Ausführungseinheit(en) 1040 und Teile von Out-of-Order-Einheit 1035 werden potenziell vollständig gemeinsam benutzt.
-
Der Prozessor 1000 schließt oftmals weitere Ressourcen, die vollständig gemeinsam benutzt werden können, durch Partitionierung gemeinsam benutzt werden können oder durch Verarbeitungselemente/zu Verarbeitungselementen fest zugeordnet sein können. In 10 ist eine Ausführungsform eines rein beispielhaften Prozessors mit veranschaulichenden logischen Einheiten/Ressourcen eines Prozessor veranschaulicht. Es ist zu beachten, dass ein Prozessor jegliche dieser funktionalen Einheiten einschließen oder auslassen kann, sowie jegliche andere bekannte funktionale Einheiten, Logik oder Firmware, die nicht dargestellt sind, einschließen kann. Wie veranschaulicht schließt Kern 1001 einen vereinfachten, repräsentativen Out-of-Order-(OOO) -Prozessorkern ein. Aber bei unterschiedlichen Ausführungsformen kann ein In-Order-Prozessor verwendet sein. Der OOO-Kern schließt einen Zweigzielpuffer 1020 ein, um Zweige vorherzusagen, die ausgeführt/genommen werden sollen, und einen Befehlsübersetzungspuffer (I-TLB) 1020, um Adressübersetzungseinträge für Befehle zu speichern.
-
Der Kern 1001 schließt weiter das Decodierungsmodul 1025 ein, das mit Abrufeinheit 1020 gekoppelt ist, um abgerufene Elemente zu decodieren. Die Abruflogik schließt bei einer Ausführungsform individuelle Sequenzer ein, die mit den Thread-Slots 1001a, 1001b entsprechend verbunden sind. Gewöhnlich ist der Kern 1001 mit einer ersten ISA verbunden, die Befehle spezifiziert/definiert, die bei Prozessor 1000 ausführbar sind. Häufig schließen Maschinenbefehle, die Teil der ersten ISA sind, einen Teil des Befehls (der als ein Befehlscode bezeichnet wird) ein, der einen durchzuführenden Befehl oder eine Operation referenziert/spezifiziert. Die Decodierlogik 1025 schließt Schaltungen ein, die diese Befehle von ihren Befehlscodes erkennen und die decodierten Befehle in die Pipeline zur Verarbeitung weitergeben, wie definiert durch die erste ISA. Beispielsweise können wie nachfolgend ausführlicher beschrieben die Decoder 1025 bei einer Ausführungsform Logik einschließen, die konzipiert oder angepasst ist, um spezielle Befehle, wie einen Transaktionsbefehl zu erkennen. Infolge des Erkennens durch Decoder 1025 unternimmt die Architektur oder der Kern 1001 spezielle, vordefinierte Aktionen, um Tasks auszuführen, die mit dem entsprechenden Befehl verbunden sind. Entscheidend ist dabei, dass einige der hier beschriebenen Tasks, Blöcke, Operationen und Verfahren als Reaktion auf einzelne oder mehrere Befehle ausgeführt werden können, von denen einige neue oder alte Befehle sein können. Es ist zu beachten, dass die Decoder 1026 bei einer Ausführungsform die gleiche ISA (oder einen Teilsatz davon) erkennen. Alternativ erkennen in einer heterogenen Kernumgebung, die Decoder 1026 eine zweite ISA (entweder einen Teilsatz der ersten ISA oder eine unterschiedliche ISA).
-
Bei einem Beispiel schließt der Zuordner- und Umbenennerblock 1030 einen Zuordner ein, um Ressourcen wie Registerdateien zu reservieren und Befehlsverarbeitungsergebnisse zu speichern. Die Threads 1001a und 1001b sind jedoch potenziell zu einer Out-of-Order-Ausführung in der Lage, wobei der Zuordner- und Umbenennerblock 1030 ebenfalls weitere Ressourcen, wie z. B. Neuordnungspuffer, reserviert, um Befehlsergebnisse nachzuverfolgen. Die Einheit 1030 kann ebenfalls einen Registerumbenenner einschließen, um Programm-/Befehlsreferenzregister auf andere Register innerhalb von Prozessor 1000 umzubenennen. Die Neuordnungs-/Rückordnungseinheit 1035 schließt Komponenten, wie z. B. die vorstehend genannten Neuordnungspuffer, Lade-Puffer und Speicher-Puffer ein, um Out-of-Order-Ausführung und spätere In-Order-Rückordnung Out-of-Order ausgeführter Befehle zu unterstützen.
-
Der Scheduler- und Ausführungseinheit(en)block 1040 schließt bei einer Ausführungsform eine Scheduler-Einheit ein, um Befehle/Operationen bei Ausführungseinheiten einzuplanen. Beispielsweise wird ein Gleitkommabefehl auf einem Port einer Ausführungseinheit eingeplant, die eine verfügbare Gleitkomma-Ausführungseinheit aufweist. Mit den Ausführungseinheiten verbundene Registerdateien sind ebenfalls eingeschlossen, um Verarbeitungsergebnisse von Informationsbefehlen zu speichern. Beispielhafte Ausführungseinheiten schließen eine Gleitkomma-Ausführungseinheit, eine Ganzzahl-Ausführungseinheit, eine Sprung-Ausführungseinheit, eine Lade-Ausführungseinheit, eine Speicher-Ausführungseinheit und andere bekannte Ausführungseinheiten ein.
-
Die untergeordneten Daten-Cache- und Datenübersetzungspuffer (D-TLB) 1050 sind mit der bzw. den Ausführungseinheiten 1040 gekoppelt. Der Daten-Cache soll kürzlich verwendete/betriebene Elemente, wie z. B. Datenoperanden, speichern, die potenziell in Speicher-Kohärenzzuständen gehalten werden. Der D-TLB speichert kürzliche virtuelle/lineare zu physikalischen Adressübersetzungen. Als spezifisches Beispiel kann ein Prozessor eine Seitentabellenstruktur einschließen, um physikalischen Speicher in eine Vielzahl virtueller Seiten aufzubrechen.
-
Hier benutzen die Kerne 1001 und 1002 den Zugriff auf übergeordneten oder weiter entfernten Cache wie einen Second-Level-Cache gemeinsam, der mit der chipinternen Schnittstelle 1010 verbunden ist. Es ist zu beachten, dass sich übergeordnet oder weiter entfernt auf Cache-Level bezieht, die zunehmen oder sich weiter von der bzw. den Ausführungseinheiten entfernen. Bei einer Ausführungsform ist der übergeordnete Cache ein Last-Level-Daten-Cache - letzter Cache in der Speicherhierarchie auf Prozessor 1000 - wie z. B. ein Second Level- oder Third Level-Daten-Cache. Übergeordneter Cache ist jedoch nicht dahin gehend eingeschränkt, da er mit einem Befehls-Cache verbunden sein oder diesen einschließen kann. Ein Trace-Cache - ein Typ eines Befehls-Caches - kann stattdessen hinter Decoder 1025 gekoppelt sein, um kürzlich decodierte Traces zu speichern. Hier verweist ein Befehl potenziell auf einen Makrobefehl (d. h., einen nicht privilegierten Befehl, der durch die Decoder erkannt wird), der in eine Anzahl von Mikrobefehlen (Mikrooperationen) decodieren kann.
-
In der dargestellten Konfiguration schließt der Prozessor 1000 auch das Schnittstellenmodul auf dem Chip 1010 ein. Historisch wurde ein Memory-Controller, der nachfolgend ausführlicher beschrieben wird, in einem Computersystem eingeschlossen, das sich extern von Prozessor 1000 befindet. In diesem Szenarium kommuniziert die chipinterne Schnittstelle 101 mit Geräten, die sich außerhalb von Prozessor 1000 befinden, wie der Systemspeicher 1075, ein Chipsatz (der häufig einen Memory-Controller-Hub einschließt, um mit Speicher 1075 zu verbinden, und einen I/O-Controller-Hub, um Peripheriegeräte zu verbinden), ein Memory-Controller-Hub, eine Northbridge oder eine andere integrierte Schaltung. Und in diesem Szenarium kann der Bus 1005 jede bekannte Kopplungsstruktur einschließen, wie ein Mehrpunktverbindungsbus, eine Punkt-zu-Punkt-Kopplungsstruktur, eine serielle Kopplungsstruktur, ein Parallelbus, ein kohärenter (z. B. cachekohärenter) Bus, eine Schichtenprotokoll-Architektur, ein differenzieller Bus und ein GTL-Bus.
-
Der Speicher 1075 kann Prozessor 1000 fest zugeordnet sein oder mit anderen Geräten in einem System gemeinsam benutzt werden. Herkömmliche Beispiele von Typen von Speicher 1075 schließen DRAM, DRAM, Permanentspeicher (NV-Speicher) und andere bekannte Speichergeräte ein. Zu beachten ist, dass das Gerät 1080 einen Grafikbeschleuniger, Prozessor oder eine Karte, die mit einem Memory-Controller-Hub gekoppelt ist, Datenspeicher, der mit einem I/O-Controller-Hub gekoppelt ist, einen drahtlosen Transceiver, ein Flash-Speicher-Gerät, einen Audiocontroller, einen Netzwerk-Controller oder ein anderes bekanntes Gerät einschließen kann.
-
Während mehr Logik und Bauelemente auf einer einzelnen Chiplage wie einem SOC integriert werden können, kann jedes dieser Bauelemente bei Prozessor 1000 eingebunden sein. Beispielsweise befindet sich bei einer Ausführungsform ein Memory-Controller-Hub auf dem gleichen Paket und/oder der gleichen Chiplage mit dem Prozessor 1000. Hier schließt ein Teil des Kerns (ein Teil auf dem Kern) 1010 einen oder mehrere Controller ein, um mit anderen Geräten wie Speicher 1075 oder einer Grafikbaugruppe 1080 zu verbinden. Die Konfiguration ,die eine Kopplungsstruktur und Controller einschließt, um mit solchen Geräten zu verbinden, wird häufig als On-Core- (oder Nichtkern) -Konfiguration bezeichnet. Als ein Beispiel schließt die chipinterne Schnittstelle 1010 eine Ring-Kopplungsstruktur für die chipinterne Kommunikation und einen seriellen Hochgeschwindigkeits-Punkt-zu-Punkt-Link 1005 für chipexterne Kommunikation ein. Dennoch können in der SOC-Umgebung noch mehr Geräte wie die Netzwerkschnittstelle, Koprozessoren, Speicher 1075, Graphikprozessor 1080 und jede andere bekannte ComputerGeräte/-Schnittstelle auf einer einzelnen Chiplage oder integrierten Schaltung integriert sein, um einen kleinen Formfaktor mit hoher Funktionalität und niedrigem Energieverbrauch bereitzustellen.
-
Bei einer Ausführungsform ist der Prozessor 1000 dazu fähig, einen Compiler, Optimierung, und/oder Übersetzercode 1077 auszuführen, um den Anwendungscode 1076 zu kompilieren, zu übersetzen, und/oder zu optimieren, um die hier beschriebenen Vorrichtungen und Verfahren zu unterstützen oder damit zu verbinden. Ein Compiler schließt häufig ein Programm oder Satz von Programmen ein, um Ausgangstext/-code in den Zieltext/- code zu übersetzen. Gewöhnlich erfolgt die Kompilierung des Programm-/Anwendungscodes mit einem Compiler in mehreren Phasen und Durchgängen, um Hochprogrammiersprachencode in niedrigen Maschinen- oder Assemblercode umzuwandeln. Dennoch können immer noch Einzeldurchlauf-Compiler für eine einfache Kompilierung verwendet werden. Ein Compiler kann jegliche bekannten Kompilierungstechniken verwenden und jegliche bekannten Compiler-Operationen, wie lexikalische Analyse, Vorverarbeitung, Parsen, semantische Analyse, Codeerzeugung, Codeumsetzung und Codeoptimierung, ausführen.
-
Größere Compiler schließen häufig mehrere Phasen ein, aber am häufigsten sind diese Phasen innerhalb von zwei allgemeinen Phasen eingeschlossen: (1) ein Front-End, d. h., generell dort, wo syntaktische Verarbeitung, semantische Verarbeitung und einige Umwandlung/Optimierung erfolgen können und (2) ein Back-End, d. h., generell dort, wo Analyse, Umwandlungen, Optimierungen und Codeerzeugung erfolgen können. Einige Compiler verweisen auf eine Mitte, was die Verwischung der Abgrenzung zwischen einem Front-End und einem Backend eines Compilers veranschaulicht. Als Resultat kann die Bezugnahme auf Einführung, Verbindung, Generierung oder eine andere Operation eines Compilers in irgendeiner der oben genannten Phasen oder Durchgängen sowie irgendwelchen anderen bekannten Phasen oder Durchgängen eines Compilers erfolgen. Als ein veranschaulichendes Beispiel fügt ein Compiler potenziell Operationen, Aufrufe, Funktionen usw. in einer oder mehreren Phasen des Kompilierens, wie das Einfügen von Aufrufen/Operationen in einer Front-End-Phase des Kompilierens und dann die Umwandlung der Aufrufe/Operationen in Code einer niedrigeren Ebene während einer Umwandlungsphase ein. Zu beachten ist, dass während des dynamischen Kompilierens Compiler-Code oder dynamischer Optimierungscode solche Operationen/Aufrufe einfügen sowie den Code für die Ausführung während der Laufzeit optimieren kann. Als ein spezielles veranschaulichendes Beispiel kann Binärcode (bereits kompilierter Code) dynamisch während der Laufzeit optimiert werden. Hier kann der Programmcode den dynamischen Optimierungscode, den Binärcode oder eine Kombination davon einschließen.
-
Ähnlich einem Compiler übersetzt ein Übersetzer wie ein Binärübersetzer Code entweder statisch oder dynamisch, um Code zu optimieren und/oder zu übersetzen. Deshalb kann die Bezugnahme auf Ausführung von Code, Anwendungscode, Programmcode oder auf eine andere Softwareumgebung verweisen auf: (1) die Ausführung eines Compiler-Programms bzw. von Compiler-Programmen, Optimierungscodeoptimierer oder Übersetzer entweder dynamisch oder statisch, um Programmcode zu kompilieren, um Softwarestrukturen aufrechtzuerhalten, um andere Operationen auszuführen, um Code zu optimieren oder Code zu übersetzen; (2) die Ausführung des Hauptprogrammcodes einschließlich Operationen/Aufrufe, wie Anwendungscode, der optimiert/kompiliert wurde; (3) die Ausführung von anderem Programmcode wie Bibliotheken, die mit dem Hauptprogrammcode verbunden sind, um Softwarestrukturen aufrechtzuerhalten, um andere mit Software in Zusammenhang stehende Operationen auszuführen oder Code zu optimieren; oder (4) eine Kombination davon.
-
Bezug nehmend auf 11 ist ein Blockdiagramm einer Ausführungsform eines Mehrkernprozessors gezeigt. Wie gezeigt in der Ausführungsform von 11 schließt der Prozessor 1100 mehrere Domänen ein. Speziell schließt eine Kemdomäne 1130 eine Vielzahl von Kernen 1130A-1130N ein, eine Grafikdomäne 1160 schließt eine oder mehrere Grafikengines ein, die eine Medienengine 1165 und eine Systemagent-Domäne 1110 aufweisen.
-
Bei verschiedenen Ausführungsformen behandelt die Systemagent-Domäne 1110 Energiesteuerungsereignisse und Power-Management, sodass indivduelle Einheiten der Domänen 1130 und 1160 (z. B. Kerne und/oder Grafikengines) unabhängig voneinander steuerbar sind, sodass sie dynamisch bei einem geeigneten Energiemodus/-level (z. B. aktiv, turbo, Schlaf, Ruhezustand, Tiefschlaf oder ein anderer erweiterter Zustand, der einem Konfigurations- und Energieverwaltungsschnittstellen-Zustand ähnelt) angesichts der Aktivität (oder Inaktivität) arbeiten, die in der gegebenen Einheit auftreten. Jede der Domänen 1130 und 1160 kann bei unterschiedlicher Spannung und/oder Leistung arbeiten, und des Weiteren arbeiten die individuellen Einheiten innerhalb der Domänen jeweils potenziell bei einer unabhängigen Frequenz und Spannung. Zu beachten ist, dass, obwohl nur drei Domänen gezeigt sind, der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht begrenzt ist und bei anderen Ausführungsformen zusätzliche Domänen vorhanden sein können.
-
Wie gezeigt schließt jeder Kern 1130 weiter zusätzlich zu verschiedenen Ausführungseinheiten und zusätzlichen Verarbeitungselementen Low-Level-Caches ein. Hier sind die verschiedenen Kerne miteinander und mit einem gemeinsam benutzten Cache-Speicher gekoppelt, der aus einer Vielzahl von Einheiten oder Segmenten eines Last Level Cache (LLC) 1140A-1140N gebildet ist; diese LLCs schließen häufig Speicher und Cache-Controller-Funktionalität ein und werden unter den Kernen sowie potenziell auch unter der Grafikengine gemeinsam benutzt.
-
Wie gesehen koppelt eine Ring-Kopplungsstruktur 1150 die Kerne miteinander und stellt die Verbindung zwischen Kerndomäne 1130, Grafikdomäne 1160 und den Systemagent-Schaltungen 1110 über eine Vielzahl von Ring-Stopps 1152A-1152N bereit, jede bei einer Kopplung zwischen einem Kern und einem LLC-Segment. Wie ersichtlich in 11 wird die Kopplungsstruktur 1150 verwendet, um verschiedene Informationen zu transportieren, die Adressinformationen, Dateninformationen, Quittierungsinformationen und Snoop-/Ungültig-Informationen einschließen. Obwohl eine Ring-Kopplungsstruktur veranschaulicht ist, kann jede bekannte Kopplungsstruktur oder jede Fabric auf der Chiplage verwendet werden. Als ein veranschaulichendes Beispiel können einige der vorstehend erörterten Fabrics (z. B. eine andere Kopplungsstruktur auf der Chiplage, chipinterne System-Fabric (OSF), eine fortgeschrittene Mikrocontroller-Busarchitektur- (AMBA) - Kopplungsstruktur, eine mehrdimensionale Netz-Fabric oder eine andere bekannte Kopplungsstruktur-Architektur) in einer ähnlichen Art und Weise verwendet werden.
-
Wie weiter dargestellt, schließt die Systemagent-Domäne 1110 die Display-Engine 1112 ein, welche die Steuerung von und eine Schnittstelle zu einem verbundenen Display bereitstellt. Die Systemagent-Domäne 1110 kann andere Einheiten einschließen wie einen integrierten Memory-Controller 1120, der eine Schnittstelle zu einem Systemspeicher bereitstellt (z. B. ein DRAM implementiert mit mehreren DIMMs; Kohärenz-Logik 1122, um Speicher-Kohärenzoperationen auszuführen. Mehrere Schnittstellen können vorhanden sein, um die Verbindung zwischen dem Prozessor und den anderen Schaltungen zu ermöglichen. Bei einer Ausführungsform wird wenigstens eine Direct Media Interface- (DMI) 1116 - Schnittstelle sowie eine oder mehrere PCIe™-Schnittstellen 1114 bereitgestellt. Die Display-Engine und diese Schnittstellen koppeln normalerweise zu Speicher über eine PCIe™-Brücke 1118. Um Kommunikationen zwischen anderen Agenten wie zusätzliche Prozessoren oder andere Schaltungen bereitzustellen, können weiter eine oder mehrere andere Schnittstellen bereitgestellt werden.
-
Bezug nehmend auf 12, ist ein Blockdiagramm eines repräsentativen Kerns gezeigt; speziell logische Bausteine eines Back-Ends eines Kerns wie Kern 1130 von 11. Im Allgemeinen schließt die in 12 gezeigte Struktur einen Out-of-Order-Prozessor ein, der eine Frontend-Einheit 1270 aufweist, die verwendet wird, um eingehende Befehle abzuholen, verschiedene Verarbeitungen (z. B. Zwischenspeichern, Decodieren, Verzweigungsvorhersage usw.) auszuführen und Befehle/Operationen zu einer Out-of-Order-(OOO) -Engine 1280 weiterzugeben. Die OOO-Engine 1280 führt weitere Verarbeitung an decodierten Befehlen aus.
-
Speziell in der Ausführungsform von 12 schließt die Out-of-Order-Engine 1280 eine Zuordnungseinheit 1282 ein, um decodierte Befehle zu empfangen, die in Form von einem oder mehreren Mikrobefehlen oder µOps von der Frontend-Einheit 1270 vorhanden sein können, und sie zu den geeigneten Ressourcen wie Register und so weiter zuzuordnen. Dann werden die Befehle an eine Reservierungsstation 1284 bereitgestellt, die Ressourcen reserviert und sie für die Ausführung bei einer Vielzahl von Ausführungseinheiten 1286A-1286N einplant. Verschiedene Arten von Ausführungseinheiten können vorhanden sein, einschließlich u. a. beispielsweise Rechenwerke (ALUs), Lade- und Speichereinheiten, Vektorverarbeitungseinheiten (VPUs), Fließkomma-Ausführungseinheiten. Ergebnisse von diesen unterschiedlichen Ausführungseinheiten werden an einen Neuordnungspuffer (ROB) 1288 bereitgestellt, der nicht geordnete Resultate nimmt und sie zurück in die richtige Programmreihenfolge bringt.
-
Unter weiterer Bezugnahme auf 12 ist zu beachten, dass sowohl die Frontend-Einheit 1270 als auch Out-of-Order-Engine 1280 mit unterschiedlichen Ebenen einer Speicherhierarchie gekoppelt sind. Speziell gezeigt ist ein Befehlsebenen-Cache 1272, der wiederum mit einem mittleren Cache 1276 gekoppelt ist, der wiederum mit einem Last Level Cache 1295 gekoppelt ist. Bei einer Ausführungsform ist der Last Level Cache 1295 in einer chipinternen (manchmal als Nichtkern bezeichneten) Einheit 1290 implementiert. Als ein Beispiel ist Einheit 1290 dem Systemagenten 810 von 8 ähnlich. Wie oben beschrieben kommuniziert der Nichtkern 1290 mit dem Systemspeicher 1299, der in der veranschaulichten Ausführungsform über ED RAM implementiert ist. Es ist auch zu beachten, dass die verschiedenen Ausführungseinheiten 1286 innerhalb der Out-of-Order-Engine 1280 in Kommunikation mit einem Level-1-Cache 1274 sind, der auch in Kommunikation mit dem Mid-Level Cache 1276 ist. Es ist ebenfalls zu beachten, dass die zusätzlichen Kerne 1230N-2-1230N mit LLC 1295 koppeln können. Obwohl bei diesem hohen Niveau in der Ausführungsform von 12 gezeigt, ist es offensichtlich, dass verschiedene Abänderungen und zusätzliche Komponenten vorhanden sein können.
-
Unter jetziger Bezugnahme auf 13 ist ein Blockdiagramm eines beispielhaften Computersystems veranschaulicht, das mit einem Prozessor gebildet ist, der Ausführungseinheiten einschließt, um einen Befehl auszuführen, wobei eine oder mehrere der Kopplungsstrukturen ein oder mehrere Merkmale gemäß einer Ausführungsform der vorliegenden Erfindung implementieren. Das System 1300 schließt eine Komponente, wie einen Prozessor 1302 ein, um Ausführungseinheiten einzusetzen, die Logik einschließen, um Algorithmen für Prozessdaten gemäß der vorliegenden Erfindung wie in der hier beschriebenen Ausführungsform auszuführen. Das System 1300 ist repräsentativ für Verarbeitungssysteme, die auf den Mikroprozessoren PENTIUM III™, PENTIUM 4™, Xeon™, Itanium, XScale™ und/oder StrongARM™ basieren, obwohl auch andere Systeme (darunter PCs mit anderen Mikroprozessoren, Engineering-Workstations, Set-Top-Boxen und dergleichen) verwendet werden können. Bei einer Ausführungsform führt das Beispielsystem 1300 eine Version des WINDOWS™- Betriebssystems aus, das bei der Microsoft Corporation aus Redmond, Washington erhältlich ist, obwohl andere Betriebssysteme (zum Beispiel UNIX und Linux), eingebettete Software und/oder grafische Benutzeroberflächen ebenfalls verwendet werden können. Somit sind die Ausführungsformen der vorliegenden Erfindung nicht auf eine bestimmte Kombination von Hardwareschaltungen 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 von Handgeräten umfassen Mobiltelefone, Internetprotokoll-Geräte, Digitalkameras, persönliche digitale Assistenten (PDAs) und Handheld-PCs. Eingebettete Anwendungen können einen Mikrocontroller, einen digitalen Signalprozessor (DSP), System-on-a-Chip, Netzwerkcomputer (NetPCs), Set-Top-Boxen, Netzwerk-Hubs, Weitverkehrsnetz-Switches (WAN-Switches) oder ein beliebiges anderes System umfassen, das einen oder mehrere Befehle gemäß mindestens einer Ausführungsform ausführen kann.
-
In dieser veranschaulichten Ausführungsform umfasst der Prozessor 1302 eine oder mehrere Ausführungseinheiten 1308 zum Implementieren eines Algorithmus, der mindestens eine Anweisung ausführt. Eine Ausführungsform kann im Zusammenhang mit einem Desktop- oder Server-System mit einem einzelnen Prozessor beschrieben sein, es können aber alternative Ausführungsformen in einem Multiprozessorsystem eingeschlossen sein. Das System 1300 ist ein Beispiel einer „Hub“-Systemarchitektur. Das Computersystem 1300 schließt einen Prozessor 1302 für die Verarbeitung von Datensignalen ein. Der Prozessor 1302 schließt als ein veranschaulichendes Beispiel einen Mikroprozessor mit komplexem Befehlssatz (CISC), einen Mikroprozessor mit reduziertem Befehlssatz (RISC), einen Mikroprozessor mit sehr langem Befehlswort (VLIW), einen Prozessor mit einer Kombination von Befehlssätzen oder eine andere Prozessoreinheit ein, wie beispielsweise einen digitalen Signalprozessor. Der Prozessor 1302 ist mit einem Prozessorbus 1310 gekoppelt, der Datensignale zwischen dem Prozessor 1302 und anderen Komponenten im System 1300 überträgt. Die Elemente von System 1300 (z. B. Grafikbeschleuniger 1312, Memory-Controller-Hub (MCH) 1316, Speicher 1320, I/O-Controller-Hub (ICH) 1324, drahtloser Transceiver 1326, Flash-BIOS 1328, Netzwerkcontroller 1334, Audiocontroller 1336, serieller Erweiterungsport 1338, I/O-Controller 1340 usw.) führen ihre herkömmlichen Funktionen auf, die einem Fachmann gut bekannt sind.
-
Bei einer Ausführungsform schließt der Prozessor 1302 einen internen Level 1 (L1) Cache-Speicher 1304 ein. Abhängig von der Architektur kann der Prozessor 1302 einen einzelnen internen Cache oder mehreren Ebenen von internem Cache aufweisen. Andere Ausführungsformen umfassen eine Kombination von sowohl internen als auch externen Caches, je nach der spezifischen Implementierung und den Anforderungen. Die Registerdatei 1306 speichert verschiedene Datentypen in verschiedenen Registern, darunter Ganzzahlregister, Gleitkommaregister, Vektorregister, Banked-Register, Schattenregister, Checkpoint-Register, Statusregister und Befehlszeigerregister.
-
Die Ausführungseinheit 1308 mit der Logik für die Ausführung von Ganzzahl- und Gleitkommaoperationen befindet sich ebenfalls im Prozessor 1302. Der Prozessor 1302 schließt bei einer Ausführungsform einen Mikrocode-Festwertspeicher (ucode) zum Speichern von Mikrocode ein, der bei Ausführung Algorithmen für bestimmte Makrobefehle ausführt oder komplexe Szenarien behandelt. Hier ist der Mikrocode möglicherweise aktualisierbar, um logische Fehler/Bereinigungen für Prozessor 1302 zu behandeln. Bei einer Ausführungsform umfasst die Ausführungseinheit 1308 eine Logik zur Bearbeitung eines gepackten Befehlssatzes 1309. Durch Einschließen des gepackten Befehlssatzes 1309 in dem Befehlssatz eines Allzweckprozessors 1302, zusammen mit den verbundenen Schaltungen für die Ausführung der Befehle, können die von vielen Multimedia-Anwendungen verwendeten Operationen unter Verwendung der gepackten Daten in einem Allzweckprozessor 1302 ausgeführt werden. Somit werden viele Multimedia-Anwendungen beschleunigt und effizienter ausgeführt, indem die volle Busbreite eines Prozessors für die Ausführung von Operationen an gepackten Daten verwendet wird. Dies behebt möglicherweise die Notwendigkeit, kleinere Dateneinheiten über den Prozessor-Datenbus zu übertragen, um eine oder mehrere Operationen, jeweils ein Datenelement auf einmal, auszuführen.
-
Alternative Ausführungsformen einer Ausführungseinheit 1308 können auch in Mikrocontrollern, eingebetteten Prozessoren, Grafikeinheiten, DSP und anderen Arten von Logikschaltungen verwendet werden. Das System 1300 schließt einen Speicher 1320 ein. Der Speicher 1320 schließt einen dynamischer Random Access Memory (DRAM), einen statischen Random Access Memory (SRAM), Flash-Memory oder ein anderes Speicherbauelement ein. Der Speicher 1320 speichert Befehle und/oder Daten, die durch Datensignale repräsentiert werden, die von Prozessor 1302 auszuführen sind.
-
Zu beachten ist, dass jegliche der oben genannten Merkmale oder Aspekte der Erfindung bei einer oder mehreren in 13 veranschaulichten Kopplungsstrukturen verwendet werden können. Beispielsweise implementiert eine nicht dargestellte Kopplungsstruktur auf der Chiplage (QDI), um interne Einheiten des Prozessors 1302 zu koppeln, einen oder mehrere Aspekte der oben beschriebenen Erfindung. Oder die Erfindung ist mit einem Prozessor-Bus 1310 (z. B. eine andere bekannte Hochleistungscomputing-Kopplungsstruktur), einem Speicherpfad mit hoher Bandbreite 1318 zu Speicher 1320, einem Punkt-zu-Punkt-Link zu Grafikbeschleuniger 1312 (z. B. ein Peripheral Component Interconnect Express- (PCIe) -konforme Fabric), einer Controller-Hub-Kopplungsstruktur 1322, einer I/O- oder einer anderen Kopplungsstruktur (z. B. USB, PCI, PCIe) verbunden, um die anderen veranschaulichten Komponenten zu koppeln. Einige Beispiele von solchen Komponenten schließen den Audiocontroller 1336, Firmware-Hub (Flash-BIOS) 1328, den drahtlosen Transceiver 1326, Datenspeicher 1324, Legacy-I/O-Controller 1310 mit Schnittstellen für Benutzereingabe und Tastatur 1342, einen seriellen Erweiterungsport 1338 wie einen Universal Serial Bus (USB) und einen Netzwerkcontroller 1334 ein. Das Datenspeichergerät 1324 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, ein CD-ROM-Laufwerk, ein Flash-Memory-Gerät oder ein Massenspeichergerät umfassen.
-
Bezug nehmend auf 14, ist ein Blockdiagramm eines zweiten Systems 1400 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 14 gezeigt, ist das Mehrprozessorsystem 1400 ein System mit einem Punkt-zu-Punkt-Kopplungsstruktursystem und umfasst einen ersten Prozessor 1470 und einen zweiten Prozessor 1480, die über eine Punkt-zu-Punkt-Kopplungsstruktur 1450 gekoppelt sind. Jeder der Prozessoren 1470 und 1480 kann eine Version eines Prozessors sein. Bei einer Ausführungsform sind 1452 und 1454 Teil einer seriellen, kohärenten Punkt-zu-Punkt-Kopplungsstruktur-Fabric, wie beispielsweise eine hochleistungsfähige Architektur. Als Resultat kann die Erfindung innerhalb der QPI-Architektur implementiert sein.
-
Obwohl nur zwei Prozessoren 1470, 1480 gezeigt sind, versteht es sich, dass der Umfang der vorliegenden Erfindung nicht derart beschränkt ist. Bei anderen Ausführungsformen können ein oder mehrere zusätzliche Prozessoren in einem gegebenen Prozessor vorhanden sein.
-
Die Prozessoren 1470 und 1480 sind jeweils mit integrierten Speichercontroller-Einheiten 1472 und 1482 gezeigt. Der Prozessor 1470 schließt außerdem als Teil seiner Bus-Controller-Einheiten die Punkt-zu-Punkt- (P-P) -Schnittstellen 1476 und 1478 ein; ähnlich schließt der zweite Prozessor 1480 die P-P-Schnittstellen 1486 und 1488 ein. Die Prozessoren 1470, 1480 können Informationen über eine P-P-Schnittstelle 1450 unter Verwendung der P-P-Schnittstellenschaltungen 1478, 1488 austauschen. Wie in 14 gezeigt, koppeln die IMCs 1472 und 1482 die Prozessoren an die jeweiligen Speicher, namentlich an einen Speicher 1432 und einen Speicher 1434, die Teile eines Hauptspeichers sein können, der lokal an den jeweiligen Prozessoren angeschlossen ist.
-
Die Prozessoren 1470, 1480 tauschen jeweils Daten mit einem Chipsatz 1490 über die einzelnen P-P-Schnittstellen 1452, 1454 unter Verwendung der P-P-Schnittstellenschaltungen 1476, 1494, 1486, 1498 aus. Der Chipsatz 1490 tauscht auch Informationen mit einer hochleistungsfähigen Grafikschaltung 1438 über eine Schnittstellenschaltung 1492 entlang einer hochleistungsfähigen Grafikkopplungsstruktur 1439 aus.
-
Ein gemeinsam genutzter Cache (nicht abgebildet) kann in jedem Prozessor oder außerhalb von beiden Prozessoren eingeschlossen sein, der jedoch mit den Prozessoren über eine P-P-Kopplungsstruktur derart verbunden ist, dass eine (oder beide) der lokalen Cache-Informationen der Prozessoren im gemeinsam benutzten Cache gespeichert werden können, wenn ein Prozessor in einen Energiesparmodus versetzt wird.
-
Der Chipsatz 1490 kann über die Schnittstelle 1496 mit einem ersten Bus 1416 gekoppelt sein. Bei einer Ausführungsform kann der erste Bus 1416 ein Peripheral Component Interconnect- (PCI) -Bus sein, oder ein Bus wie ein PCI Express-Bus oder ein anderer IO-Kopplungsstruktur-Bus der 3. Generation, obwohl der Umfang der vorliegenden Erfindung nicht derart beschränkt ist.
-
Wie in 14 gezeigt, sind verschiedene I/O-Geräte 1414 mit dem ersten Bus 1416 zusammen mit einer Busbrücke 1418 gekoppelt, die den ersten Bus 1416 mit einem zweiten Bus 1420 koppelt. Bei einer Ausführungsform schließt der zweite Bus 1420 einen Low Pin Count- (LPC) -Bus ein. Verschiedene Geräte sind mit dem zweiten Bus 1420 gekoppelt einschließlich beispielsweise eine Tastatur und/oder Maus 1422, Kommunikationsgeräte 1427 und eine Speichereinheit 1428 wie ein Plattenlaufwerk oder ein anderes Massenspeichergerät, das häufig Befehle/Code und Daten 1430 bei einer Ausführungsform einschließt. Des Weiteren ist ein Audio-I/O 1424 gekoppelt mit dem zweiten Bus 1420 gezeigt. Zu beachten ist, dass andere Architekturen möglich sind, bei denen die eingeschlossenen Komponenten und Kopplungsstruktur-Architekturen variieren. Ein System kann beispielsweise statt der Punkt-zu-Punkt-Architektur von 14 einen Multidrop-Bus oder eine andere solche Architektur implementieren.
-
Unter jetziger Bezugnahme auf 15 ist eine Ausführungsform eines System on Chip- (SOC) -Designs gemäß den Erfindungen dargestellt. Als ein spezifisches veranschaulichendes Beispiel ist SOC 1500 im Teilnehmerendgerät (UE) eingeschlossen. Bei einer Ausführungsform bezieht sich UE auf jedes Gerät, das von einem Endbenutzer für die Kommunikation verwendet wird, wie zum Beispiel ein Handheld-Telefon, Smartphone, Tablet, ultraflaches Notebook, Notebook mit Breitbandadapter oder jedes andere ähnliche Kommunikationsgerät. Häufig verbindet sich ein UE mit einer Basisstation oder einem Knoten, was der Natur nach möglicherweise einer Mobilstation (MS) in einem GSM-Netzwerk entspricht.
-
Hier schließt SOC 1500 2 Kerne ein - 1506 und 1507. Ähnlich der obigen Beschreibung können die Kerne 1506 und 1507 einer Befehlssatzarchitektur wie zum Beispiel einem auf der Intel® Architecture Core™ basierenden Prozessor, einem Advanced Micro Devices, Inc.- (AMD) -Prozessor, einem MIPS-basierenden Prozessor oder einem ARMbasierenden Prozessordesign oder einem Kunden davon sowie deren Lizenznehmer oder Anwender entsprechen. Die Kerne 1506 und 1507 sind mit der Cache-Steuerung 1508 gekoppelt, die mit Busschnittstelleneinheit 1509 und L2-Cache 1511 verbunden ist, um mit anderen Teilen des Systems 1500 zu kommunizieren. Die Kopplungsstruktur 1510 schließt eine chipinterne Kopplungsstruktur wie eine IOSF, AMBA oder eine andere oben besprochene Kopplungsstruktur ein, die möglicherweise einen oder mehrere der hier beschriebenen Aspekte implementiert.
-
Die Kopplungsstruktur 1510 stellt Kommunikationskanäle zu anderen Komponenten wie einem Subscriber Identity Module (SIM) 1530 als Schnittstelle zu einer SIM-Karte, einen Boot-ROM 1535 zum Speichern von Bootcode für die Ausführung durch die Kerne 1506 und 1507 zum Initialisieren und Booten von SOC 1500, einen SDRAM-Controller 1540 als Schnittstelle zum externen Speicher (z. B. DRAM 1560), einen Flash-Controller 1545 als Schnittstelle zu nichtflüchtigem Speicher (z. B. Flash 1565), eine Peripheriesteuerung 1550 (z. B. serielle Peripherieschnittstelle) als Schnittstelle zu Peripheriegeräten, Video-Codecs 1520 und Videoschnittstelle 1525 zum Anzeigen und Empfangen von Eingaben (z B. touchfähige Eingabe), GPU 1515 zur Durchführung von mit der Grafik verbundenen Berechnungen usw. Jede dieser Schnittstellen kann Aspekte der hier beschriebenen Erfindung einbinden.
-
Außerdem veranschaulicht das System Peripheriegeräte für die Kommunikation wie ein Bluetooth-Modul 1570, 3G-Modem 1575, GPS 1585 und Wi-Fi 1585. Wie oben erwähnt schließt ein UE Funk für die Kommunikation ein. Als Folge sind nicht alle diese Peripheriekommunikationsmodule erforderlich. Jedoch muss in einem UE eine gewisse Form von Funk für die externe Kommunikation vorhanden sein.
-
Obwohl die vorliegende Erfindung im Hinblick auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, ist sich der Fachmann bewusst, dass viele weitere Modifikationen und Varianten hiervon möglich sind. Die beigefügten Ansprüche sollen alle solche Modifikationen und Varianten abdecken, die dem Sinn und Wirkungsbereich der vorliegenden Erfindung entsprechen.
-
Ein Design kann verschiedene Stufen durchlaufen, von der Erstellung zur Simulation zur Fertigung. Daten, die ein Design repräsentieren, können das Design auf mehrere Weise repräsentieren. Wie es bei Simulationen nützlich ist, kann die Hardware zuerst unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen Funktionsbeschreibungssprache dargestellt werden. Außerdem kann ein Modell auf Schaltungsebene mit Logik- und/oder Transistor-Gattern bei einigen Stufen des Design-Verfahrens hergestellt werden. Zudem erreichen die meisten Designs irgendwann eine Datenebene, welche die physische Anordnung verschiedener Geräte in dem Hardwaremodell darstellt. Wenn herkömmliche Halbleiter-Fertigungstechniken benutzt werden, können die Daten, die das Hardwaremodell darstellen, diejenigen Daten sein, welche die Anwesenheit oder Abwesenheit verschiedener Merkmale bei unterschiedlichen Maskenschichten für Masken spezifizieren, die zum Herstellen der integrierten Schaltung benutzt werden. Bei einer Darstellung des Designs können die Daten in Form eines maschinenlesbaren Mediums gespeichert sein. Ein Speicher oder ein magnetisches oder optisches Speichermedium, wie beispielsweise eine Disc, kann das maschinenlesbare Medium sein, um Informationen zu speichern, die mittels einer optischen oder elektrischen Welle übertragen werden, die moduliert oder auf andere Weise erzeugt wird, um solche Informationen zu senden. Wenn eine elektrische Trägerwelle, die den Code oder das Design anzeigt oder trägt, übertragen wird, sodass das Kopieren, Puffern oder die Weiterübertragung des elektrischen Signals erfolgt, wird eine neue Kopie erstellt. So kann ein Kommunikationsdienstanbieter oder ein Netzwerkdienstanbieter auf einem konkreten maschinenlesbaren Medium zumindest zeitweise einen Artikel wie z. B. Informationen, die in eine Trägerwelle codiert sind, die Techniken von Ausführungsformen der vorliegenden Erfindung verkörpern, speichern.
-
Ein Modul wie hierin verwendet bezieht sich auf jede Kombination von Hardware, Software und/oder Firmware. Als ein Beispiel schließt ein Modul Hardware, wie einen Mikrocontroller ein, der mit einem nicht flüchtigen Medium verbunden ist, um Code zu speichern, der angepasst ist, um von dem Mikrocontroller ausgeführt zu werden. Deshalb verweist die Bezugnahme auf ein Modul bei einer Ausführungsform auf die Hardware, die speziell konfiguriert ist, um den Code zu erkennen und/oder auszuführen, der auf einem nicht flüchtigen Medium gespeichert wird. Bei einer weiteren Ausführungsform verweist des Weiteren die Verwendung von einem Modul auf das nicht flüchtige Medium, das den Code einschließt, der speziell angepasst ist, um durch den Mikrocontroller ausgeführt zu werden und vorbestimmte Operationen auszuführen. Und wie gefolgert werden kann, kann der Begriff Modul (in diesem Beispiel) bei noch einer weiteren Ausführungsform auf die Kombination aus Mikrocontroller und nicht flüchtigem Medium verweisen. Modulgrenzen, die als getrennt veranschaulicht sind, variieren herkömmlicherweise und können sich potenziell überlappen. Beispielsweise können ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon gemeinsam benutzen, während einige unabhängige Hardware, Software oder Firmware potenziell beibehalten wird. Bei einer Ausführungsform schließt die Verwendung des Begriffes Logik Hardware, wie z. B. Transistoren, Register oder andere Hardware, wie z. B. programmierbare Logikbaugruppen ein.
-
Die Verwendung des Ausdrucks „ist konfiguriert“ bei einer Ausführungsform, verweist auf das Anordnen, Zusammensetzen, Herstellen, zum Verkauf anbieten, Importieren und/oder Konstruieren einer Vorrichtung, Hardware, Logik oder Element, um eine vorgesehene oder bestimmte Aufgabe auszuführen. Bei diesem Beispiel ist eine Vorrichtung oder ein Element davon, das nicht arbeitet, immer noch „konfiguriert“, um eine vorgesehene Aufgabe auszuführen, wenn es konzipiert, gekoppelt, und/oder verbunden ist, um diese vorgesehene Aufgabe auszuführen. Als ein rein veranschaulichendes Beispiel kann ein Logikgatter eine 0 oder 1 während des Betriebs bereitstellen. Aber ein Logikgatter, das „konfiguriert ist“, ein Freigabesignal an einen Takt bereitzustellen, schließt nicht jedes potenzielle Logikgatter ein, das 1 oder 0 bereitstellen kann. Statt dessen ist das Logikgatter eines, das in einer Weise gekoppelt ist, sodass während des Betriebs der 1- oder 0-Ausgang den Takt ermöglicht. Einmal mehr ist zu beachten, dass die Verwendung des Begriffs „ist konfiguriert“ keinen Betrieb erfordert, sondern sich stattdessen auf den latenten Zustand einer Vorrichtung, Hardware und/oder eines Elementes konzentriert, wobei im latenten Zustand die Vorrichtung, die Hardware und/oder das Element konzipiert ist, eine bestimmte Aufgabe auszuführen, wenn die Vorrichtung, die Hardware und/oder das Element arbeiten.
-
Des Weiteren verweist die Verwendung der Ausdrücke „zu“, „fähig zu“ und oder „betriebsfähig zu“ bei einer Ausführungsform auf eine Vorrichtung, Logik, Hardware und/oder ein Element, das auf solche Art und Weise konzipiert ist, dass es die Verwendung der Vorrichtung, Logik, Hardware, und/oder des Elements in einer spezifizierten Weise ermöglicht. Wie vorstehend ist zu beachten dass die Verwendung von „zu“, „fähig zu“ und oder „betriebsfähig zu“ bei einer Ausführungsform auf den latenten Zustand einer Vorrichtung, Logik, Hardware, und/oder eines Elements verweist, wo die Vorrichtung, Logik, Hardware und/oder das Element nicht arbeitet, aber auf solche Art und Weise konzipiert ist, die Verwendung einer Vorrichtung in einer spezifizierten Weise zu ermöglichen.
-
Ein Wert wie hierin verwendet schließt jede bekannte Darstellung einer Anzahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands ein. Die Verwendung von Logikpegeln, Logikwerten oder logischen Werten wird ebenfalls als 1-en und 0-en bezeichnet, was einfach binäre logische Zustände darstellt. Beispielweise bezieht sich eine 1 auf einen hohen Logikpegel und 0 bezieht sich auf einen niedrigen Logikpegel. Bei einer Ausführungsform kann eine Speicherzelle, wie z. B. ein Transistor oder eine Flash-Zelle, in der Lage sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Es wurden jedoch andere Darstellungen von Werten bei Computersystemen verwendet. Die Dezimalzahl Zehn beispielsweise kann ebenfalls als ein binärer Wert 1010 und ein hexadezimaler Buchstabe A dargestellt werden. Deshalb schließt ein Wert jede Darstellung von Informationen ein, die in einem Computersystem enthalten sein können.
-
Außerdem können Zustände durch Werte oder Teile von Werten dargestellt sein. Als Beispiel kann ein erster Wert, wie z. B. eine logische Eins, einen Standard- oder Anfangszustand darstellen, während ein zweiter Wert, wie z. B. eine logische Null, einen Nicht-Standardzustand darstellen kann. Zusätzlich beziehen sich bei einer Ausführungsform die Begriffe Zurücksetzen und Setzen entsprechend auf einen Standard- und einen aktualisierten Wert oder Zustand. Ein Standwert schließt beispielsweise potenziell einen logischen High-Wert ein, d. h., Zurücksetzen, während ein aktualisierter Wert potenziell einen logischen Low-Wert einschließt, d. h., Setzen. Es ist zu beachten, dass jegliche Kombination von Werten eingesetzt werden kann, um eine beliebige Anzahl an Zuständen darzustellen.
-
Die Ausführungsformen von vorstehend angeführten Verfahren, Hardware, Software, Firmware oder Code können durch Befehle oder Code implementiert sein, der auf einem maschinenzugänglichen, maschinenlesbaren oder computerlesbaren Medium gespeichert ist und durch ein Verarbeitungselement ausgeführt werden kann. Ein nicht flüchtiges maschinenzugängliches/-lesbares Medium schließt jeden Mechanismus ein, der Informationen in einer von einer Maschine wie einem Computer oder einer Elektronik lesbaren Form bereitstellt (d. h. speichert und/oder sendet). Ein nicht flüchtiges maschinenzugängliches Medium schließt beispielsweise Direktzugriffsspeicher (RAM) ein, wie statischen RAM (SRAM) oder dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Speichermedium; Flash-Memory-Geräte; ein elektrisches Speichergerät, optische Speichergeräte, akustische Speichergeräte; eine andere Form von Speichergeräten, um Informationen, die von flüchtigen (propagierten) Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale) usw. empfangen wurden, zu halten, die von den nicht flüchtigen Medien zu unterscheiden sind, die Informationen davon empfangen können.
-
Befehle, die zum Programmieren von Logik verwendet werden, um Ausführungsformen der Erfindung auszuführen, können in einem Speicher in dem System wie DRAM, Cache, Flash-Speicher oder einem anderen Speicher gespeichert sein. Außerdem können die Befehle über ein Netzwerk oder mithilfe von anderen computerlesbaren Medien verbreitet werden. Somit kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern oder Übermitteln von Informationen in einer (z. B. einem Computer) maschinenlesbaren Form umfassen, ist aber nicht beschränkt auf Disketten, optische Laufwerke, CD, Nur-Lese-Speicher (CD-ROMs), magnetooptische Disketten, Festwertspeicher (ROM), Direktzugriffsspeicher (RAM), Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), magnetische oder optische Karten, Flash-Speicher oder einen nichtflüchtigen, maschinenlesbaren Speicher, der bei der Übertragung von Informationen über das Internet mithilfe von elektrischen, optischen, akustischen oder anderen Formen von sich ausbreitenden Signalen (z. B. Trägerwellen, Infrarotsignalen, digitalen Signalen usw.) verwendet wird. Dementsprechend umfasst das computerlesbare Medium eine beliebige Art von nichtflüchtigem, maschinenlesbaren Medium, das zum Speichern oder Übermitteln elektronischer Befehle oder Informationen in einer von einer Maschine (z. B. einem Computer) lesbaren Form geeignet ist.
-
Die folgenden Beispiele betreffen Ausführungsformen gemäß dieser Spezifikation. Eine oder mehrere Ausführungsformen können eine Vorrichtung, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium und ein Verfahren bereitstellen, um einen Link zu initialisieren, wobei der Link eine Anzahl von Bahnen einschließt und ein Sender und ein Empfänger mit jeder Bahn in der Anzahl an Bahnen gekoppelt sind, und die Neuinitialisierung des Links schließt die Übertragung einer vordefinierten Sequenz auf jeder der Bahnen ein, wobei die Neuinitialisierung ohne Abschluss des Links bereitgestellt wird.
-
Bei wenigstens einem Beispiel wird die vordefinierte Sequenz vom Sender zum Empfänger gesendet und der Empfänger wiederholt die vordefinierte Sequenz zum Sender.
-
Bei wenigstens einem Beispiel schließt die Sequenz einen elektrisch inaktiven Exit-Ordered-Set (EIEOS) ein.
-
Bei wenigstens einem Beispiel schließt die Sequenz weiter eine Vielzahl von Instanzen einer Trainingssequenz ein.
-
Bei wenigstens einem Beispiel ist der zu wiederholende EIEOS die Sequenz gemäß einer Mindestfrequenz.
-
Bei wenigstens einem Beispiel ist die Sequenz zu wiederholen, bis der Link initialisiert ist.
-
Ein oder mehrere Beispiele können weiter das Bestätigen empfangener Instanzen der vordefinierten Sequenz bereitstellen, um einen Agenten auf dem Link zu erkennen.
-
Bei wenigstens einem Beispiel umfasst der Link einen differenziellen seriellen Datenlink.
-
Bei wenigstens einem Beispiel wird die Sequenz während eines Reset-Zustandes gesendet, um den Ausstieg aus dem Reset-Zustand zu signalisieren.
-
Eine oder mehrere Ausführungsformen können eine Vorrichtung, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium und ein Verfahren bereitstellen, um über Bahnen eines differenziellen seriellen Datenlinks eine vordefinierte Sequenz zu einer anderen mit dem Datenlink verbundenen Entität zu senden, eine Bestätigung der vordefinierten Sequenz von der anderen Entität zu empfangen und die vordefinierte Sequenz zu verwenden, um eine Initialisierung des Datenlinks zu erleichtern.
-
Bei wenigstens einem Beispiel kann das Flit von einem ersten Gerät zu einem zweiten Gerät über den Datenlink gesendet werden. Die ersten zweiten Geräte können Mikroprozessoren, Grafikbeschleuniger und andere Geräte einschließen.
-
Die folgenden Beispiele betreffen Ausführungsformen gemäß dieser Spezifikation. Eine oder mehrere Ausführungsformen können eine Vorrichtung, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium und ein Verfahren bereitstellen, um auf einem Link, der eine Anzahl von Bahnen einschließt, eine vordefinierte Sequenz auf jeder der Bahnen zu erkennen und einen Zustand eines anderen Agenten; basierend auf der Erkennung der vordefinierten Sequenz zu bestimmen.
-
Ein oder mehrere Beispiele können weiter das Antworten der vordefinierten Sequenz mittels eines Echos zu dem anderen Agenten bereitstellen.
-
Bei wenigstens einem Beispiel schließt die Sequenz einen EIEOS ein und die Erkennung der vordefinierten Sequenz schließt das Validieren der Sequenz ein.
-
Bei wenigstens einem Beispiel basiert das Validieren der Sequenz mindestens teilweise auf dem Bestimmen, dass der EIEOS gemäß einer vordefinierten Frequenz wiederholt wird.
-
Bei wenigstens einem Beispiel wird die Sequenz durchgehend während eines speziellen Link-Initialisierungszustands wiederholt.
-
Bei wenigstens einem Beispiel zeigt die Sequenz einen Initialisierungszustand an.
-
Bei wenigstens einem Beispiel ist der Initialisierungszustand in einer Neuinitialisierung des Links eingeschlossen.
-
Bei wenigstens einem Beispiel wird die Sequenz während eines Reset-Zustandes erkannt und zeigt einen Ausstieg aus dem Reset-Zustand an.
-
Eine oder mehrere Ausführungsformen können eine Vorrichtung, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium und ein Verfahren bereitstellen, um Schleifenbildung während der Initialisierung eines Links zu überwachen und die Initialisierung des Links zu verursachen, um ihn als Reaktion auf das Bestimmen einer erfolglosen Schleifenbildung während der Initialisierung auszusetzen.
-
Ein oder mehrere Beispiele können weiter das Verwalten einer Zählung von Schleifen in einer Zustandsmaschine während der Initialisierung bereitstellen.
-
Bei wenigstens einem Beispiel ist die Zählung bei jedem Agenten zu verwalten, der kommunikativ unter Verwendung des Links verbunden ist.
-
Bei wenigstens einem Beispiel wird die Zählung bei einer erfolgreichen Initialisierung des Links zurückgesetzt.
-
Bei wenigstens einem Beispiel umfasst die erfolgreiche Initialisierung des Links das Eintreten in einen Link-Sendezustand.
-
Bei wenigstens einem Beispiel schließt eine Schleife das Wiedereintreten in einen Reset-Zustand einer Link-Training-Zustandsmaschine ein.
-
Bei wenigstens einem Beispiel wird die Initialisierung des Links in einem Reset-Zustand einer Link-Training-Zustandsmaschine ausgesetzt.
-
Bei wenigstens einem Beispiel wird eine ausgesetzte Initialisierung des Links als Reaktion auf einen Befehl von einem Controller neu gestartet.
-
Bei wenigstens einem Beispiel weist der Link eine Link-Breite von 20 Bahnen auf.
-
Eine oder mehrere Ausführungsformen können eine Vorrichtung, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium und ein Verfahren bereitstellen, um zu bestimmen, ob eine oder mehrere Initialisierungstasks in Verbindung mit einem speziellen Initialisierungszustand auszuführen sind; und das Anwenden eines Kurzzeitgebers, um von dem speziellen Zustand basierend auf dem Bestimmen, ob die Initialisierungstasks auszuführen sind, zu wechseln.
-
Ein oder mehrere Beispiele können weiter das Anwenden eines zweiten Kurzzeitgebers zum Wechseln von einem zweiten Initialisierungszustand bereitstellen, und der zweite Kurzzeitgeber ist von einer Zeitdauer, die sich von der ersten kurzen Zeit unterscheidet.
-
Bei wenigstens einem Beispiel wird der Kurzzeitgeber basierend auf einer Bestimmung, die Initialisierungstasks nicht auszuführen, angewandt.
-
Bei wenigstens einem Beispiel wird ein Langzeitgeber für den speziellen Initialisierungszustand basierend auf einer Bestimmung, die Initialisierungstasks auszuführen, angewandt.
-
Bei wenigstens einem Beispiel basiert die Bestimmung auf einem Hinweis, dass der Kurzzeitgeber aktiviert ist.
-
Bei wenigstens einem Beispiel wird der Kurzzeitgeber von einem softwarebasierten Controller aktiviert.
-
Bei wenigstens einem Beispiel wird der Kurzzeitgeber basierend auf einer Bestimmung, dass eine mit der Initialisierungstask verbundene Konfiguration abgeschlossen ist, aktiviert.
-
Bei wenigstens einem Beispiel umfasst der Link einen differenziellen seriellen Datenlink.
-
Eine oder mehrere Ausführungsformen können eine Vorrichtung, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium und ein Verfahren bereitstellen, um Flits bei einer ersten Geschwindigkeit in einem ersten Modus zu senden und Flits bei einer zweiten Geschwindigkeit in einem zweiten Modus zu senden, wobei eine Phasenregelschleifen- (PLL) -Geschwindigkeit im ersten Modus und im zweiten Modus die gleiche ist.
-
Bei wenigstens einem Beispiel umfasst die erste Geschwindigkeit eine Betriebsgeschwindigkeit und die zweite Geschwindigkeit umfasst eine langsame Geschwindigkeit.
-
Bei wenigstens einem Beispiel wird die langsame Geschwindigkeit durch die Betriebsgeschwindigkeit emuliert.
-
Bei wenigstens einem Beispiel umfasst das Emulieren der langsamen Geschwindigkeit das Senden einer Reihe von Bits bei der Betriebsgeschwindigkeit, um ein Bit im langsamen Modus zu simulieren.
-
Bei wenigstens einem Beispiel geht die physikalische Schicht-Logik weiter von der ersten Geschwindigkeit zur zweiten Geschwindigkeit über.
-
Bei wenigstens einem Beispiel basiert das Übergehen auf einer Anfrage eines mindestens teilweise softwarebasierten Controllers.
-
Eine oder mehrere Ausführungsformen können eine Vorrichtung, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium und ein Verfahren bereitstellen, um eine Betriebsgeschwindigkeit eines ersten Gerätes zu bestimmen, das auf einem Link mit einem zweiten Gerät zu verbinden ist; eine Betriebsgeschwindigkeit des zweiten Gerätes bestimmen; und eine gemeinsame langsame Geschwindigkeit zu bestimmen, die durch die ersten und zweiten Geräte während der Übertragung von Daten auf dem Link anzuwenden ist.
-
Bei wenigstens einem Beispiel wird die gemeinsame langsame Geschwindigkeit während einer Initialisierung des Links bestimmt.
-
Bei wenigstens einem Beispiel weicht die Betriebsgeschwindigkeit des ersten Gerätes von der Betriebsgeschwindigkeit des zweiten Gerätes ab und die Initialisierung des Links schließt weiter das Bestimmen einer gemeinsamen Betriebsgeschwindigkeit ein.
-
Bei wenigstens einem Beispiel basiert die gemeinsame Betriebsgeschwindigkeit auf der langsameren der Betriebsgeschwindigkeiten der ersten und zweiten Geräte.
-
Bei wenigstens einem Beispiel schließt das Bestimmen des gemeinsamen langsamen Modus das Bestimmen eines ersten Verhältnisses ein, das auf die Betriebsgeschwindigkeit des ersten Gerätes anzuwenden ist, um die gemeinsame langsame Geschwindigkeit zu realisieren, und das Bestimmen eines zweiten Verhältnisses, das auf die Betriebsgeschwindigkeit des zweiten Gerätes anzuwenden ist, um die gemeinsame langsame Geschwindigkeit zu realisieren.
-
Bei wenigstens einem Beispiel wird die gemeinsame langsame Geschwindigkeit durch die Betriebsgeschwindigkeiten emuliert.
-
Bei wenigstens einem Beispiel umfasst das Emulieren der langsamen Geschwindigkeit das Senden einer Reihe von Bits bei einer entsprechenden Betriebsgeschwindigkeit, um ein Bit im gemeinsamen langsamen Modus zu simulieren.
-
Ein oder mehrere Beispiele können weiter eine physikalische Schicht (PHY) einschließen, die konfiguriert ist, um mit einem Link gekoppelt zu werden, wobei der Link eine erste Anzahl an Bahnen einschließt, und wobei die PHY einen Synchronisations- (Sync) - Zähler einschließt, und wobei die PHY einen elektrisch inaktiven Exit-Order-Set (EIEOS) ausgerichtet mit dem Synchronisationszähler und verbunden mit einer Trainingssequenz überträgt.
-
Bei wenigstens einem Beispiel wird ein Synchronisationszählerwert vom Synchronisationszähler während jeder Trainingssequenz nicht ausgetauscht.
-
Ein oder mehrere Beispiele können weiter eine physikalische Schicht (PHY) einschließen, die konfiguriert ist, um mit einem Link gekoppelt zu werden, wobei der Link eine erste Anzahl an Bahnen einschließt, und wobei die PHY einen Synchronisations- (Sync) - Zähler einschließt, und wobei die PHY einen elektrisch inaktiven Exit-Order-Set (EIEOS) ausgerichtet mit dem Synchronisationszähler und verbunden mit einer Trainingssequenz überträgt.
-
Bei wenigstens einem Beispiel wird ein Synchronisationszählerwert vom Synchronisationszähler während jeder Trainingssequenz nicht ausgetauscht.
-
Bei wenigstens einem Beispiel agiert die EIEOS-Ausrichtung mit dem Synchronisationszähler als ein Proxy für das Austauschen des Synchronisationszählerwerts vom Synchronisationszähler während jeder Trainingssequenz.
-
Ein oder mehrere Beispiele können weiter physikalische Schicht (PHY) bereitstellen, die konfiguriert ist, um mit einem Link gekoppelt zu werden, wobei die PHY ein durch Software veränderbares Register einschließlich eines Steuerfeldes einschließt, und eine PHY-Zustandsmaschine, um zwischen einer Vielzahl von Zuständen zu wechseln, wobei die PHY-Zustandsmaschine den Übergang zwischen einem ersten Zustand und einem zweiten Zustand basierend auf einem ersten Wert des Steuerfeldes des Registers hält.
-
Bei wenigstens einem Beispiel wechselt die PHY-Zustandsmaschine zwischen dem ersten Zustand und dem zweiten Zustand als Reaktion auf Software, die das Steuerfeld des Registers auf einen zweiten Wert aktualisiert.
-
Ein oder mehrere Beispiele können weiter eine physikalische Schicht (PHY) bereitstellen, die konfiguriert ist, um mit einem Link gekoppelt zu werden, wobei die PHY eine PHY-Zustandsmaschine zum Übergang zwischen einer Vielzahl von Zuständen einschließt, und wobei die PHY-Zustandsmaschine zum Übergehen von einem ersten Zustand in einen zweiten Zustand basierend auf einem Handshake-Ereignis und dem Übergehen der PHY von einem dritten Zustand in einen vierten Zustand basierend auf einem primären Zeitgeberereignis fähig ist.
-
Bei wenigstens einem Beispiel ist die PHY-Zustandsmaschine fähig, die PHY basierend auf einem primären Zeitereignis in Kombination mit einem sekundären Zeitgeberereignis von einem fünften Zustand in einen sechsten Zustand zu wechseln
-
Ein oder mehrere Beispiele können weiter eine physikalische Schicht (PHY) bereitstellen, die konfiguriert ist, um mit einem Link gekoppelt zu werden, wobei der Link eine erste Anzahl an Bahnen einschließt und die PHY Flits bei einer ersten Geschwindigkeit überträgt und Flits bei einer zweiten Geschwindigkeit überträgt, und wobei eine Phasenregelschleifen- (PLL) -Geschwindigkeit im schnellen Modus und im langsamen Modus die gleiche ist.
-
Bei wenigstens einem Beispiel ist die erste Geschwindigkeit eine langsame Geschwindigkeit und die zweite Geschwindigkeit eine schnelle Geschwindigkeit
-
Bei wenigstens einem Beispiel überträgt die PHY Flits bei der langsamen Geschwindigkeit, was umfasst, dass die PHY ein Bit der Flits mehrere Male fortlaufend bei der schnellen Geschwindigkeit überträgt, um das Bit bei der langsamen Geschwindigkeit zu emulieren, ohne die PLL-Geschwindigkeit zu ändern.
-
Ein oder mehrere Beispiele können weiter eine physikalische Schicht (PHY) bereitstellen, die konfiguriert ist, um mit einem Link gekoppelt zu werden, wobei der Link eine erste Anzahl an Bahnen einschließt, und wobei die PHY Flits bei einer langsamen Geschwindigkeit in einem langsamen Modus überträgt und Flits bei einer schnellen Geschwindigkeit in einem schnellen Modus überträgt, wobei die schnelle Geschwindigkeit mehr als 2x die langsame Geschwindigkeit ist, und, wobei eine PLL-Geschwindigkeit im schnellen Modus und im langsamen Modus die gleiche ist.
-
Verweise in dieser Beschreibung auf „eine Ausführungsform“ bedeuten, dass ein bestimmtes Merkmal, eine Struktur oder ein Charakteristikum, das/die in Verbindung mit der Ausführungsform beschrieben wird, zumindest in einer Ausführungsform der vorliegenden Erfindung eingeschlossen ist. Somit beziehen sich die Verwendungen des Ausdrucks „in einer Ausführungsform“ an verschiedenen Stellen in dieser gesamten Beschreibung nicht notwendigerweise alle auf dieselbe Ausführungsform. Des Weiteren können die bestimmten Merkmale, Strukturen oder Charakteristika auf jegliche geeignete Weise in einer oder mehreren Ausführungsformen kombiniert sein.
-
Bei der vorstehenden Beschreibung wurde eine ausführliche Beschreibung mit Bezug auf spezifische beispielhafte Ausführungsformen gegeben. Es ist jedoch offensichtlich, dass verschiedene Modifizierungen und Änderungen daran vorgenommen werden können, ohne vom weiteren Sinn und Umfang der Erfindung, wie in den angehängten Ansprüchen angeführt, abzuweichen. Die Beschreibung und Zeichnungen sind demnach eher in veranschaulichendem Sinne als in einschränkendem Sinne zu sehen. Des Weiteren bezieht sich die vorstehende Verwendung von Ausführungsform und anderer beispielhafter Sprache nicht notwendigerweise auf die gleiche Ausführungsform oder das gleiche Beispiel, sondern kann sich auf unterschiedliche und verschiedene Ausführungsformen sowie potenziell die gleiche Ausführungsform beziehen.