-
VERWANDTE ANMELDUNG
-
Die vorliegende Anmeldung bezieht sich auf und beansprucht die Priorität der provisorischen Patentanmeldung Nr. 61/386,505 der Vereinigten Staaten, die am 25. September 2010 eingereicht wurde, mit dem Titel „Drosseln einer integrierten Verbindung”, die hiermit durch Bezugnahme in ihrer Gesamtheit und für alle Zwecke aufgenommen wird.
-
GEBIET
-
Die vorliegende Offenbarung bezieht sich allgemein auf das Gebiet der Elektronik. Insbesondere bezieht sich eine Ausführungsform der Erfindung auf Techniken zum Drosseln einer Schnittstelle, die auf dem gleichen Chip wie ein Prozessor integriert ist.
-
HINTERGRUND
-
In einigen gegenwärtigen Implementationen kann ein Prozessor mit Eingabe/Ausgabe(Input/Output(I/O))-Einrichtungen über einen I/O-Hub (IOH) kommunizieren. Darüber hinaus kann der Prozessor auf einer anderen integrierten Schaltkreis(Integrated Circuit(IC))-Einrichtung als der IOH bereitgestellt sein. Ein Bus kann verwendet werden, um zwischen diesen IC-Einrichtungen zu kommunizieren.
-
Solche Implementationen können jedoch Geschwindigkeit reduzieren, beispielsweise aufgrund einer Verzögerung, die mit dem Kommunizieren von Signalen zwischen den IC-Einrichtungen verbunden ist, und/oder Stromverbrauch erhöhen, beispielsweise aufgrund Vorliegens zusätzlicher Schaltkreise, die benötigt werden, um Kommunikation zwischen den IC-Einrichtungen zu ermöglichen. Außerdem kann zusätzlicher (Leiterplatten-)Platz für die diskreten IOH-Komponenten benötigt werden.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die ausführliche Beschreibung wird unter Bezugnahme auf die beigefügten Figuren bereitgestellt. In den Figuren bezeichnen/bezeichnet die am weitesten links stehende(n) Stelle(n) einer Bezugsziffer die Figur, in der die Bezugsziffer als erstes erscheint. Die Verwendung der gleichen Bezugsziffern in unterschiedlichen Figuren weist auf ähnliche oder identische Gegenstände hin.
-
1 und 5 bis 6 zeigen Blockdiagramme von Ausführungsformen von Rechensystemen, die verwendet werden können, um verschiedene Ausführungsformen zu implementieren, die hier diskutiert werden.
-
2 bis 3 zeigen Zustandsdiagramme gemäß einigen Ausführungsformen.
-
4 zeigt ein Zeitdiagramm gemäß einer Ausführungsform.
-
Ausführliche Beschreibung
-
In der folgenden Beschreibung werden zahlreiche spezifische Details dargelegt, um ein tiefgreifendes Verständnis verschiedener Ausführungsformen zu liefern. Jedoch können einige Ausführungsformen ohne die spezifischen Details realisiert werden. In anderen Beispielen wurden wohlbekannte Verfahren, Prozeduren, Komponenten und Schaltkreise nicht ausführlich beschrieben, um die jeweiligen Ausführungsformen nicht zu verschleiern.
-
Einige Ausführungsformen beziehen sich auf Techniken zum Drosseln einer Verbindung (wie etwa einer Peripheral Component Interconnect ExpressTM(PCIe)-Verbindung (gemäß der PCI ExpressTM-Spezifikation, Base Specification version 2.0 (veröffentlicht am 17. Januar 2007)), die auf dem gleichen integrierten Schaltkreis(IC)-Chip wie andere Komponenten integriert ist (beispielsweise auf einem oder mehreren Prozessorkernen). Solche Ausführungsformen können Verzögerung reduzieren, Energieverbrauch reduzieren, Chipgröße reduzieren und/oder Komplexität reduzieren, die mit Energieverwaltung in einer Rechenvorrichtung verbunden ist. Zusätzlich ermöglichen einige Ausführungsformen mehr Kontrolle und/oder Kommunikationsbandbreite zwischen zwei integrierten Komponenten (wie etwa PCIe-Komponente(n) und/oder Prozessorkern(en)), beispielweise um Energiezustandsmanipulation/-kontrolle näher festzulegen.
-
Eine Ausführungsform ermöglicht Integration einer PCIe Gen 2.0-Verbindung in den CPU(Central Processing Unit)-Chip und lässt sie bei Mantelteilen niedriger Energie (low power envelope parts) sicher arbeiten, wo die PCIe-Temperatur genauso hoch wie eine Kerntemperatur werden kann. Sie erlaubt dies, während sie PCIe-Spezifikationsanforderungen genügt. Dies wird unter Verwendung von „Force Toggle Tx L0s” erreicht, um in einer Ausführungsform thermisches Drosseln der Tx(Sende(transmit))-Verbindung von PCIe unter Verwendung einer Ein/Aus-Modulation durchzuführen. Für eine Rx(Empfangs(receive))-Verbindung von PCIe kann ein Nichtsenden von Gutschriften verwendet werden, um in einer Ausführungsform Drosseln zu erzwingen.
-
In einer Ausführungsform kann ein IOH auf der gleichen IC-Einrichtung wie ein Prozessor integriert sein (der einen oder mehrere Prozessorkerne enthalten kann, wie hier ausführlicher unten diskutiert wird). Dies erlaubt Entfernen von Logik, die lediglich für Außer-Chip-Kommunikation benötigt wird. Beispielsweise kann Logik, die mit Übertragen von Signalen außerhalb eines Chips über eine Verbindung (beispielsweise physikalische Verbindung) verbunden ist, entfernt werden. Außerdem kann Logik, die normalerweise Senden, Trainieren, Testen, Energiezustandsverwaltung etc. der physikalischen Verbindung steuern würde, entfernt werden. Obwohl die physikalische Verbindung und zusätzliche Logik entfernt werden, können die gleichen Kommunikationsmechanismen noch in einigen Ausführungsformen erhalten werden, beispielsweise um Kompatibilität mit anderer existierender Logik, Kommunukationsprotokollen, Entwurfsanforderungen etc. zu ermöglichen. Beispielsweise können in einem QPI(Quick Path Interconnect)-basierten Prozessor die physikalische QPI-Schicht und untere Verbindungsschicht entfernt werden. Bei dem begleitenden IOH kann die physikalische Schicht bestehen bleiben.
-
Eines oder mehrere der oben erwähnten Elemente können in verschiedenen Rechenumgebungen bereitgestellt werden. Insbesondere zeigt 1 ein Blockdiagramm mit Teilen eines Rechensystems 100 gemäß einer Ausführungsform.
-
Das System 100 kann eine zentrale Verarbeitungseinheit (Central Processing Unit (CPU)) 101 (oder allgemeiner einen Prozessor) enthalten, der einen Prozessorabschnitt 102 enthält. CPU 101-Komponenten können sich auf einem einzigen IC-Chip befinden. Die CPU 101 kann einen oder mehrere Prozessoren (oder Prozessorkerne), wie sie hier beispielsweise unter Bezugnahme auf 5 diskutiert werden, enthalten,. Der Prozessor 102 kann verschiedene Komponenten enthalten, wie etwa einen oder mehrere Prozessorkerne, private oder gemeinsam verwendete(n) Cache(s), einen oder mehrere Speicher-/Grafiksteuerungsmodule, etc. (nicht gezeigt). Darüber hinaus kann die CPU 101 durch einen Bus 104 mit anderen Komponenten, wie etwa einem Systemspeicher 106, kommunizieren. Der Speicher 106 kann Daten in Richtung der CPU 101 speichern, beispielsweise solche, die mit einer oder mehreren I/O-Einrichtungen 107 kommuniziert werden. Die Einrichtung(en) 107 kann/können eine Peripherieeinrichtung sein, die in einigen Ausführungsformen gemäß PCIe kommuniziert (einschließlich PCIe-Generation 2.0 und/oder andere proprietäre oder nicht-proprietäre I/O-Verbindung(en), wie etwa Direct Memory Interface (DMI)). Wie unten weiter diskutiert wird, kann die CPU 101 einen IIO 120 enthalten, der Unterstützung zum Kommunizieren mit der/den Einrichtung(en) 107 gemäß den erwähnten PCIe-Spezifikationen und/oder DMI bereitstellt.
-
Wie in 1 gezeigt ist, kann der Prozessor 102 eine Protokolllogik 108 (bspw. um Unterstützung zum Herunterfahren oder Wecken des Systems 100 zu liefern), eine obere Verbindungsschichtlogik 110 (bspw. um Verbindungsunterstützung für Kommunikation auf der oberen Verbindungsschicht mit dem IIO 120 zu liefern) und eine Seitenbandsteuerlogik 112 enthalten (bspw. um Seitenbandkommunikationsunterstützung anstelle des Entfernens der physikalischen QPI-Schicht und der unteren Verbindungsschicht zu liefern, wie oben diskutiert wurde). In einer Ausführungsform kann die obere Verbindungsschichtlogik eine oder mehrere der folgenden enthalten: virtuelle Kanalwarteschlange(n), Ablaufsteuerung und/oder Gutschriftenlogik, CRC(Cyclical Redundancy Check)-Prüfung und/oder Erzeugungslogik, Parameteraustauschlogik, etc. Darüber hinaus können die entfernten unteren Verbindungsschichten gemäß einigen Ausführungsformen Phit/Flitassembly/deassembly/swizzling, Steuerregister der physikalischen Schicht, Verbindungsenergie- (bspw. L0s) und Breitenmodi, Verbindungsinitialisierung/Training, etc. enthalten.
-
Der IIO 120 kann eine Seitenbandsteuerlogik 124 (bspw. zum Kommunizieren von Seitenbandsignalen mit der Logik 112), einen oder mehrere FIFOs 126 (bspw. zum Ermöglichen einer deterministischen Datenübertragung zwischen der oberen Verbindungsschicht 110 und IIO 120 über eine(n) Verbindung/Bus 127), eine Verbindungslogik 128 (bspw. zum Bereitstellen von Verbindungsunterstützung zur Kommunikation zwischen dem Prozessor 102 und dem IIO 120) und eine Protokolllogik 130 (bspw. zum Bereitstellen der Unterstützung zum Herunterfahren oder Wecken des Systems 100) enthalten.
-
In einer Ausführungsform kann ein€ relativ breitere(r) und/oder langsamere(r) Bus/Verbindung 127 Hochgeschwindigkeitsschaltkreis- und Energieanforderungen eliminieren (verglichen mit dem Bus/der Verbindung, der/die den nichtintegrierten Prozessor und bspw. den IOH koppelt). In einer Ausführungsform wird der Bus 127 vierfach verbreitert, was es erlaubt, die Frequenz um ein Vierfaches zu reduzieren. Ein gültiges Bit kann addiert werden, um größere Flexibilität zu ermöglichen (Null-Flits sind nun optional, etc.) und/oder Textmodi zu unterstützen.
-
In einigen Ausführungsformen werden FIFOs 126 addiert, die in beide Richtungen verlaufen (zu und von IIO 120). Wenn Daten zwischen den Prozessor 102-Komponenten (bspw. Logik 110) und IIO 120 übertragen werden, werden die Daten in ein FIFO anhand eines Schreibzeigers geschrieben und durch den Empfänger anhand eines Lesezeigers gelesen. Die Trennung der Schreib- und Lesezeiger kann bspw. programmierbar sein, um Taktverschiebungsdifferenzen zwischen den Prozessor 102-Komponenten (bspw. Logik 110) und IIO 120 Rechnung zu tragen. Dies ermöglicht dem Prozessor 102 und IIO 120, sich verschiedener Phase-Locked Loops (PLLs) zwecks größerer Flexibilität, feinerer Granularität von Energiezuständen etc. zu entledigen.
-
In einer Ausführungsform können die folgenden Seitenbandsignale verwendet werden (bspw. über Logiken 112 und/oder 124):
- 1. Von dem IIO 120:
A. IIO_wake-IIO 120 fordert Wecken des Systems 100 an, das sich in einem Niedrigenergiezustand befindet; und
B. IIO_is_awake-IIO 120 ist wach und kann arbeiten (bspw. wird Energie hochgefahren, PLLs gesperrt, etc.); und
- 2. Von dem Prozessor 102:
A. Processor_wake(bspw. WAKEUP_IIO_PLL)-Prozessor 102 fordert an, das System 100 zu wecken, das sich in einem Niedrigenergiezustand befindet; und
B. Processor_is_awake(bspw. BGFRun)-Prozessor 102 ist wach.
In einigen Ausführungsformen kann dieses Signal außerdem anzeigen, dass sowohl der Prozessor 102 als auch IIO 120 wach sind. Daraufhin kann der Prozessor 102 bestimmen, wann der gesamte CPU 101-Chip eingeschaltet und anhand des IIO_is_awake-Signals bereit ist zum Arbeiten. Dieses Signal kann die FIFO-Zeiger zurücksetzen und ermöglicht dem/den FIFO(s) 126, Daten zu übertragen.
C. Processor_temp_high(bspw. PCUtoIIOTempHigh)-Prozessor 102 erzeugt oder verlasst Erzeugen eines Signals als Antwort auf eine detektierte Temperatur (bspw. detektiert durch einen oder mehrere Sensoren auf dem Chip) dass eine Schwellenwerttemperatur erreicht wurde (die bspw. programmierbar sein kann).
-
Wie in 1 gezeigt, kann die CPU 101 außerdem eine Energiesteuerungs-/Verwaltungseinheit 150 enthalten, die Signale von einem oder mehreren Sensoren (nicht gezeigt) empfangen kann, der/die Temperaturwerte detektiert/detektieren (bspw. in verschiedenen Abschnitten des Chips, der die CPU 102 enthält). Daraufhin kann die Energiesteuerungs-/Verwaltungseinheit 150 bestimmen, ob eine Schwellenwerttemperatur erreicht wurde (die bspw. programmierbar sein kann) und Erzeugen eines Signals veranlassen, um diese Bedingung anzuzeigen (wie etwa ein PCUtoIIOTempHigh Signal, das unten diskutiert wird). Das Signal kann wiederum Drosseln eines oder mehrerer Sende-/Empfangsverbindungen bewirken, wie weiter unten diskutiert wird.
-
Darüber hinaus kann in einer Ausführungsform Force-L0s-Tx (Transmit) wie folgt implementiert werden: (1) die Energiesteuerungs-/Verwaltungseinheit 150 bestätigt PCUtoIIOTempHigh-Signal; (2) die Bestätigung des PCUtoIIOTempHigh Signals startet die ForceTxL0s-Zustandsmaschine (s. bspw. 2–3); (3) Die ForceTxL0s-Zustandsmaschine „schaltet” die Tx-Verbindung zwischen L0 und L0s (unter Bereitstellung jeweils von Ein/Aus-Modulation der Tx-Verbindung); (4) die Tx-Verbindung verbleibt in ForceTxL0s für eine programmierbare Zeitdauer. Während dieser Zeitdauer liefert der IIO keine ACK(acknowledgement)-Signale für irgendwelche Pakete, die auf der Rx-Verbindung empfangen werden. Eine Vereinfachung des Entwurfs ist, das wenigstens einige von diesen dem folgen, was bereits in der RTL (Resistor Transistor Logic) in einigen Ausführungsformen existiert (bspw. kann eine elegante Heuristik bereits implementiert sein, und somit verwendet die Force-L0s-TX Zustandsmaschine wenigstens Teile dieser Zustandsmaschine wieder); (5) Tx-Einheit sendet ACKS (Bestätigungen(acknowledgements)), um keine Fehlerwiederherstellung an dem Endpunkt der Verbindung auszulösen. Außerdem geht die ForceTxL0s-Zustandsmaschine regelmäßig oder in einem programmierbaren Intervall (bspw. in einer gegenwärtigen Richtung: Wann immer die bestehende L0s-Zustandsmaschine so vorgeht) in L0 über, sendet ACKs (bspw. um Auslösen einer Fehlerwiederherstellung zu vermeiden) und geht zurück zu L0s. Keine Gutschriften werden ausgelöst, so dass auf der Rx-Verbindung Ablaufsteuerung durchgeführt wird.
-
In einigen Ausführungsformen hängt die Richtlinie zum Senden von ACKs unter Force-L0s auf Tx von der Implementation der existierenden L0s-Zustandsmaschine und der Richtlinie ab, der sie zum Senden von ACKs folgt. Beispielsweise wird dann die Force-L0s-Tx, falls die existierende Implementierung vorteilhaft ist, keinen Timer für den ACK implementieren und sich auf die existierende ACK-Implementation stützen.
-
In einer Ausführungsform wird die Rx-Verbindung (der Endpunkt Tx) irgendwann keine Gutschriften mehr haben, einen Ruhezustand detektieren und automatisch in L0s übergehen. Ein Ziel solcher Ausführungsformen ist, dass letztlich eine nahtlose Integration in die existierende Zustandsmaschine mit minimalen Änderungen bereitgestellt wird. Einige wichtige Timer-Werte lauten wie folgt: Falls beispielsweise eine Verbindung in L0 oder L0s ist, wird ein Update-FCPs zur Übertragung wenigstens alle 30 μs (oder Mikrosekunden) geplant. Außerdem kann ein timeout optional sein, bspw. kann bei einem Timer mit 200 μs erneutes Trainieren einer Verbindung auftreten. Darüber hinaus kann ein Abschluss timeout für wenigstens 50 μs und höchstens 50 ms konfiguriert werden. Drei Gegenstände zur Nachverfolgung umfassen: (1) Kann nicht in L0s wechseln, solange dieser Endpunkt glaubt, dass ein Fehler vorliegt (und Verbindung beginnt erneutes Training); (2) Senden von ACK an Endpunkt auf Rx-Paketen innerhalb einer bestimmten Zeitperiode nach Empfangen der Pakete; (3) UpdateFCP wird zurückgegeben, so dass die Zeit zum Senden/Empfangen/Verarbeiten des UpdateFCPs nicht ausreicht.
-
2 bis 3 zeigen Zustandsübergangsdiagramme auf hohem Niveau für Tx-Force-L0s gemäß einigen Ausführungsformen. Diese Zustandsmaschinen können eigene Einheiten sein und von irgendwelchen bereits existierenden ruhezustandsbasierten L0s-Zustandsmaschinen getrennt sein. In einer Ausführungsform können diese Zustandsmaschinen sicher nebeneinander existieren und korrekt miteinander arbeiten. Wie gezeigt, existieren zwei Zustandsmaschinen in einigen Ausführungsformen: Die Zustandsmaschine der 2, die den Pflichtzyklus für Force- und Release-Tx-L0s steuert, und 3, die durch die Force-L0s-Maschinen wechselt.
-
Außerdem können drei programmierbare Register bereitgestellt sein:
- – THFL0SPERIOD: Steuert die Zeitdauer einer Force/Release-Periode, angegeben in μs (kurz für Mikrosekunden).
- – THFL0SDUTY: Steuert die Zeitdauer, während derer L0s freigegeben sind.
- – THFL0SACKTIMER: Steuert, wie lange Acks gepuffert wird, bevor die Verbindung aus L0s gezogen wird, um Acks zu bedienen. Angegeben in μ-Sekunden (Verwerfen der/des Vorliegenden).
-
Die erste Zustandsmaschine in 2 bestätigt die Force-L0s- und Release-L0s-Signale, die die zweite Zustandsmaschine der 3 steuern. Verwerf-Bit: CTCTRL[3] verwirft Force Tx L0s. Abhängig von der Implementation können ein oder mehrere Zustände dieser Maschinen kombiniert werden. Außerdem sollen die Zustandsmaschinen lediglich eine Konzeptbetrachtung demonstrieren, und die tatsächliche Implementation und endgültige Zustandsmaschine hängen beispielsweise von dem bestehenden RTL ab.
-
In einigen Ausführungsformen werden zwei Register zum Angeben des THFL0SPERIOD und THFL0SDUTY bereitgestellt. Deren Timing-Beziehung ist in 4 gezeigt. Beispielsweise werden während der Periode „A” keine Transaktionsschichtpakete oder TLPs (einschließlich Fertigstellungen) gesendet, und werden keine Ablaufsteuerungsgutschriften zurückgegeben.
-
Darüber hinaus wird die Update Flow Control(UFC)-Nachricht (jedoch unter Zurückgeben von null Gutschriften) gesendet, wie es bei der existierenden RTL-Implementation erfolgen würde, und es erfolgt in einer Ausführungsform kein spezieller Versuch, zu steuern, wann diese Aktualisierung gesendet werden soll. Wenn die UFC-Nachricht gesendet werden muss, wird die Verbindung aus L0s geholt, die UFC-Nachricht gesendet, und die Verbindung geht zurück zu L0s. Die Anzahl von Gutschriften, die zurückgegeben wird, wird null sein und in der Zeitperiode A liegen.
-
Einige Ausführungsformen können eine Heuristik verwenden, um zu entscheiden, wann ACKs gesendet werden. Das Force-Tx-L0s könnte nicht versuchen, dies ausdrücklich zu steuern, und wann immer die existierende Zustandsmaschine Senden eines ACK benötigt, wird die Verbindung aus L0s geholt, die ACKs gesendet, und die Verbindung geht anschließend zurück zu L0s. Die UFC-Nachricht und die ACK-Timer können bereits in den existierenden Zustandsmaschinen existieren. Am Ende der Zeitperiode A werden die Ablaufsteuerungsgutschriften zurückgegeben und alle TLPs gesendet. PM-Nachrichten und einige andere Bedingungen (abhängig von RTL-Analyse) führen ebenfalls dazu, dass die Verbindung aus L0s kommt.
-
Einige optionale Ausnahmen umfassen:
- – Falls L0s durch das BIOS (Basic Input/Output System) ausgeschaltet wurde, wird Force-L0s nicht eingeschaltet. Dies kann der Fall sein, selbst wenn der Sensor anzeigt, dass die IIO-PCIE-Verbindung Force-L0s durchführen sollte.
- – Wenn die PCIE-Verbindung startet, während der Chip bereits warm ist, macht sie dies unter voller Leistung und wird nicht gedrosselt. Mit anderen Worten könnte Force-L0s nicht effektiv sein, während die Verbindung initialisiert wird (in RTL wird das Force-L0s durch ein „dl_active” qualifiziert. dl_active wird wahr, wenn die Verbindung Initialisieren von FC abgeschlossen hat, und wird falsch, wenn die Verbindung unten ist).
- – Die DMI-Anschlüsse können wählen, sich nicht an Force-L0s sich zu beteiligen.
-
5 zeigt ein Blockdiagramm eines Rechensystems 500 gemäß einer Ausführungsform der Erfindung. Das System 500 kann einen oder mehrere Agenten 502-1 bis 502-M enthalten (gemeinsam hier als „Agenten 502” oder allgemeiner „Agent 502” bezeichnet). In einer Ausführungsform können ein oder mehrere der Agenten 502 irgendwelche Komponenten eines Rechensystem sein, wie etwa des Rechensystems, das unter Bezugnahme auf 1 oder 6 diskutiert wird.
-
Wie in 5 gezeigt ist, können die Agenten 502 über eine Netzwerkstruktur 504 kommunizieren. In einer Ausführungsform kann die Netzwerkstruktur 504 ein Computernetzwerk enthalten, das verschiedenen Agenten (wie etwa Rechenvorrichtungen) erlaubt, Daten zu kommunizieren. In einer Ausführungsform kann die Netzwerkstruktur 504 eine oder mehrere Verbindungen (oder Verbindungsnetzwerke) enthalten, die über eine serielle (bspw. Punkt-zu-Punkt)-Verbindung und/oder ein gemeinsam benutztes Kommunikationsnetzwerk kommunizieren. Beispielsweise können einige Ausführungsformen Debugging von Komponenten oder Validieren von Verbindungen ermöglichen, die Kommunikation mit vollständig gepufferten dualen Inline-Speichermodulen (Fully Buffered Dual In-Line Memory Modules (FBD)) ermöglichen, bspw. wenn die FBD-Verbindung eine serielle Verbindung zum Koppeln von Speichermodulen mit einer Rechnersteuerungsvorrichtung (wie etwa einem Prozessor oder einem Speicher-Hub) koppelt. Debug-Information kann von dem FBD-Kanalrechner übertragen werden, so dass die Debug-Information entlang des Kanals durch Kanalverkehrverfolgungserfassungswerkzeuge (wie etwa einen oder mehrere Logikanalysierer) beobachtet werden kann.
-
In einer Ausführungsform kann das System 500 ein Schichtprotokollschema unterstützen, das eine physikalische Schicht, eine Verbindungsschicht, eine Routingschicht, eine Transportschicht und/oder eine Protokollschicht enthalten kann. Die Struktur 504 kann ferner Übertragung von Daten (bspw. in Form von Paketen) von einem Protokoll (bspw. Cache-Prozessor oder Cache-verwendende Speichersteuerung) zu einem anderen Protokoll für eine Punkt-zu-Punkt-Verbindung oder ein gemeinsam benutztes Netzwerk ermöglichen. Außerdem kann die Netzwerkstruktur 504 in einigen Ausführungsformen Kommunikation bereitstellen, die an ein oder mehrere Cache-kohärente Protokolle gebunden ist.
-
Darüber hinaus können die Agenten 502, wie durch die Richtung der Pfeile in 5 gezeigt ist, Daten über die Netzwerkstruktur 504 senden und/oder empfangen. Somit können einige Agenten eine einseitige Verbindung verwenden, während andere eine beidseitige Verbindung zur Kommunikation verwenden können. Beispielsweise können ein oder mehrere Agenten (wie etwa Agent 502-M) Daten senden (bspw. über eine einseitige Verbindung 506), (ein) andere(r) Agent(en) (wie etwa Agent 502-2) kann/können Daten empfangen (bspw. über eine einseitige Verbindung 508), während (ein) andere(r) Agent(en) (wie etwa Agent 502-1) sowohl Daten senden als auch empfangen kann/können (bspw. über eine beidseitige Verbindung 510).
-
6 zeigt ein Rechensystem 600, das gemäß einer Ausführungsform der Erfindung in einer Punkt-zu-Punkt(Point to Point(PtP))-Konfiguration angeordnet ist. Insbesondere zeigt 6 ein System, in dem Prozessoren, Speicher und Eingabe/Ausgabeeinrichtungen miteinander durch eine Anzahl von Punkt-zu-Punkt-Schnittstellen verbunden sind. Die unter Bezugnahme auf 1 bis 5 diskutierten Operationen können durch eine oder mehrere Komponenten des Systems 600 durchgeführt werden.
-
Wie in 6 gezeigt, kann das System 600 mehrere Prozessoren enthalten, von denen aus Gründen der Klarheit lediglich zwei Prozessoren 602 und 604 gezeigt sind. Die Prozessoren 602 und 604 können jeweils einen lokalen Speichersteuerungs-Hub (Memory Controller Hub (MCH)) 606 und 608 enthalten, um Kommunikation mit Speichern 610 und 612 zu ermöglichen. Die Speicher 610 und/oder 612 können verschiedene Daten speichern, wie etwa die unter Bezugnahme auf den Speicher 106 der 1 diskutierten. Wie in 6 gezeigt, können die Prozessoren 602 und 604 außerdem IIO-Logik 120 enthalten, wie etwa die unter Bezugnahme auf 1 bis 5 diskutierte. Darüber hinaus können einige Ausführungsformen, obwohl für jeden Prozessor in 6 eine IIO-Logik 120 gezeigt ist, eine einzige IIO-Logik 120 verwenden. Außerdem kann jede IIO-Logik 120, obwohl 6 zeigt, dass jede IIO-Logik 120 mit einer I/O-Einrichtung oder einem I/O-Einrichtungstyp gekoppelt ist, mit mehr als einer oder mehr als einem Typ von I/O-Einrichtung gekoppelt sein.
-
In einer Ausführungsform können die Prozessoren 602 und 604 einer der Prozessoren 602 sein, die unter Bezugnahme auf 6 erläutert sind. Die Prozessoren 602 und 604 können Daten über eine Punkt-zu-Punkt(PtP)-Schnittstelle 614 unter Verwendung von PtP-Schnittstellenschaltkreisen 616 bzw. 618 austauschen. Außerdem können ein oder mehrere der Prozessoren 602 und 604 Daten mit einem Chipsatz 620 über einzelne PtP-Schnittstellen (bspw. Schnittstelle 624) unter Verwendung von Punkt-zu-Punkt Schnittstellenschaltkreisen 626, 628 und 632 austauschen. In der Ausführungsform, die in 6 gezeigt ist, kann lediglich ein Prozessor (Prozessor 604) mit dem Chipsatz 620 kommunizieren. Durch die IIO-Logik 120 kann ein Prozessor (bspw. Prozessor 604) Daten mit einem Hochleistungsgraphikschaltkreis 634 austauschen.
-
In wenigstens einer Ausführungsform kann die I/O-Funktionalität in den Prozessoren 602/504 integriert sein. Andere Ausführungsformen der Erfindung können jedoch in anderen Schaltkreisen, Logikeinheiten oder Einrichtungen innerhalb des Systems 600 der 6 existieren. Darüber hinaus können andere Ausführungsformen der Erfindung über mehrere Schaltkreise, Logikeinheiten oder Einrichtungen, die in 6 gezeigt sind, verteilt sein.
-
Der Chipsatz 620 kann mit einem Bus 640 (bspw. unter Verwendung eines Schnittstellenschaltkreises 641) kommunizieren. Der Bus 640 kann eine oder mehrere Einrichtungen aufweisen, die mit ihm kommunizieren, wie etwa eine Bus-Bridge 642 und I/O-Einrichtungen 643 (, die mit dem IIO über andere Komponenten kommunizieren, wie sie in 6 oder bspw. direkt in 1 gezeigt sind). Über einen Bus 644 kann die Bus-Bridge 642 mit anderen Einrichtungen kommunizieren, wie etwa einer Tastatur/Maus 645, Kommunikationseinrichtungen 646 (wie etwa Modems, Netzwerkschnittstellenvorrichtungen oder anderen Kommunikationseinrichtungen, die mit dem Computernetzwerk 505 kommunizieren können), einer Audio-I/O-Einrichtung, und/oder anderen Datenspeichereinrichtung 648. Die Datenspeichereinrichtung 648 kann Code 649 speichern, der durch die Prozessoren 602 und/oder 604 ausgeführt werden kann.
-
In verschiedenen Ausführungsformen der Erfindung können die hier bspw. unter Bezugnahme auf 1 bis 6 diskutierten Operationen als Hardware (bspw. Schaltkreis), Software, Firmware, Mikrocode oder Kombinationen derselben implementiert werden, die als ein Computerprogrammprodukt bereitgestellt werden können, bspw. einschließlich eines (bspw. nichtflüchtigen) maschinenlesbaren oder computerlesbaren Speichermediums, das darauf gespeicherte Befehle (oder Softwareprozeduren) aufweist, die verwendet werden, um einen Computer zu programmieren, um einen hier diskutierten Prozess durchzuführen.
-
Das Speichermedium kann flüchtigen und/oder nichtflüchtigen Speicher enthalten. Bspw. kann nichtflüchtiger Speicher ein oder mehrere der folgenden enthalten: nur lesbaren Speicher (read-only memory (ROM), programmierbaren ROM (PROM), löschbaren PROM (EPROM), elektrischen EPROM (EEPROM), ein Plattenlaufwerk (bspw. 528), eine Diskette, eine CD-ROM, eine Digital Versatile Disk (DVD), Flash-Speicher, eine magneto-optische Disk oder andere Typen nichtflüchtiger maschinenlesbarer Medien, die in der Lage sind, elektronische Daten zu speichern (bspw. einschließlich Befehlen). Flüchtiger Speicher kann Einrichtungen, wie etwa Random Access Speicher (RAM), dynamischen RAM (DRAM), synchronen DRAM (SDRAM), statischen RAM (SRAM) etc., einschließen.
-
Außerdem kann der Begriff „Logik” beispielsweise Software, Hardware oder Kombinationen aus Software und Hardware umfassen. Das maschinenlesbare Medium kann eine Speichereinrichtung enthalten, wie sie hier diskutiert ist. Zusätzlich können computerlesbare Medien als ein Computerprogrammprodukt heruntergeladen werden, wobei das Programm von einem entfernten Computer (bspw. einem Server) an einen anfordernden Computer (bspw. einen Client) durch Datensignale übertragen werden kann, die in einem Übertragungsmedium über eine Kommunikationsverbindung bereitgestellt werden (bspw. einen Bus, ein Modern oder eine Netzwerkverbindung).
-
Bezugnahmen in der Beschreibung auf „eine (1) Ausführungsform” oder „eine Ausführungsform” bedeuten, dass ein bestimmtes Merkmal, eine Struktur oder eine Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben ist, in wenigstens einer Implementation enthalten sein kann. Die Erscheinungsformen der Phrase „in einer (1) Ausführungsform” an verschiedenen Orten in der Beschreibung können sich alle auf die gleiche Ausführungsform beziehen, müssen dies aber nicht.
-
Außerdem können in der Beschreibung und den Ansprüchen die Begriffe „gekoppelt” und „verbunden” gemeinsam mit ihren Ableitungen verwendet werden. In einigen Ausführungsformen der Erfindung kann „verbunden” verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem physikalischen oder elektrischen Kontakt miteinander stehen. „Gekoppelt” kann bedeuten, dass zwei oder mehr Elemente in direktem physikalischen oder elektrischen Kontakt miteinander stehen. Jedoch kann „gekoppelt” außerdem bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, aber immer noch miteinander kooperieren oder interagieren.
-
Somit versteht sich, dass, obwohl Ausführungsformen der Erfindung in einer Sprache, die für strukturelle Merkmale und/oder verfahrensartige Vorgehensweisen spezifisch ist, beschrieben wurden, beanspruchte Gegenstände nicht auf die spezifischen Merkmale oder Vorgehensweisen beschränkt sind. Vielmehr sind die spezifischen Merkmale und Vorgehensweisen als beispielhafte Formen des Implementierens des beanspruchten Gegenstands offenbart.