-
Hintergrund
-
Mainstream-Prozessorchips, sowohl in Hochleistungs- als auch Niedrigverbrauchssegmenten, integrieren zunehmend zusätzliche Funktionalität, wie zum Beispiel Grafik, Display-Engines, Sicherheits-Engines, PCIe™-Ports (d. h. Ports gemäß der Peripheral Component Interconnect Express (PCI Express™ (PCIe™ )) Specification, Base Specification Version 2.0 (am 17. Januar 2007 veröffentlicht) (nachfolgend die PCIe™-Spezifikation genannt)) und andere PCIe™-basierte Peripheriegeräte.
-
Traditionelle Entwürfe bzw. Bauformen von peripheren Hub-Produkten sind aufgrund von variierenden Anforderungen von den Server-, Desktop-, mobilen, embedded, ultramobile und mobile Internet Device-Segmenten stark segmentiert. Unterschiedliche Märkte versuchen Single-Chip-System-on-Chip (SoC)-Lösungen zu verwenden, die zumindest einige von Prozessorkernen, Memory Controller Hub (MCH), Eingabe/Ausgabe-Controller (ICH) und andere Segment spezifische Beschleunigungselemente auf einem einzigen Chip kombinieren. Die Entwürfe, die diese Merkmale anhäufen, lassen sich jedoch aufgrund der Schwierigkeit beim Integrieren von Intellectual Property (IP)-Blöcken auf einem einzigen Die in internen Standardverbindungseinrichtungen nur langsam entwickeln.
-
US 2009/0077297 A1 offenbart ein Computersystem, das sich zur Zuordnung einer Mehrzahl von zuweisbaren Ressourcen zu einem PCI-Card-Bus-Controller eignet. Das Computersystem umfasst eine CPU zur Verwaltung einer Mehrzahl von Vorrichtungen des Computersystems einschließlich des PCI-Card-Bus-Controllers. Ein Root-Komplex, der mit der CPU gekoppelt ist, umfasst eine Mehrzahl von Root-Ports, die mit einer ersten Mehrzahl von virtuellen PCI-zu-PCI-Brücken assoziiert sind, und eine der ersten Mehrzahl von PCI-zu-PCI-Brücken ist dazu geeignet, den PCIe-Card-Bus-Controller mit dem Root-Komplex zu koppeln. Das Computersystem umfasst weiter ein BIOS zur Zusammenarbeit mit der CPU, um das Computersystem zu booten und ein Betriebssystem zu laden. Das BIOS weist der Mehrzahl von Vorrichtungen des Computersystems eine Mehrzahl von Voreinstellungsressourcen zu und berechnet die Mehrzahl von zuweisbaren Ressourcen, die verfügbar sind, und ordnet dem PCIc-Card-Bus-Controller die Mehrzahl von zuweisbaren Resourcen zu.
-
US 2008/0147943 A1 offenbart einen Mechanismus, der es zulässt, dass ein PCIe-Adapter von zwei oder mehr System-Images (SI) verwendet wird. Es wird ein Mechanismus bereitgestellt, der es ermöglicht, dass ein Endpunkt, wie beispielsweise ein PCIe-E/A-Adapter, gleichzeitig von mehreren SIs innerhalb desselben Root-Komplexes oder in mehreren Root-Komplexen (RCs), die sich einen gemeinsamen PCI-Switch-Fabric teilen und damit verbunden sind, verwendet wird. Der Mechanismus ermöglicht es, jedem Rout-Komplex und seinen damit assoziierten physikalischen und/oder virtuellen Endpunkten über einen eigenen eindeutigen PCI-Speicheradressraum zu verfügen.
-
US 2006/0242353 A1 offenbart eine PCI-Express-Interconnect-Vorrichtung. Die Vorrichtung umfasst einen ersten und einen zweiten Upstream-Port, einen ersten und einen zweiten Downstream-Port und eine Management-Einheit. Die Management-Einheit kann betrieben werden, um die Vorrichtung logisch zu partitionieren, sodass der erste Upstream-Port betrieben werden kann, um mit dem ersten Downstream-Port zu kommunizieren und der zweite Upstream-Port betrieben werden kann, um mit dem zweiten Downstream-Port zu kommunizieren. Die Management-Vorrichtung kann zusätzlich so betrieben werden, um den ersten Downstream-Port von einer Partition, in der der erste Downstream-Port betrieben werden kann, um mit dem ersten Upstream-Port zu kommunizieren, in eine Partition zu migrieren, in der der erste Downstream-Port betrieben werden kann, um mit dem zweiten Upstream-Port zu kommunizieren.
-
Die Erfindung ist definiert in den unabhängigen Ansprüchen 1, 10 und 19. Ausführungsformen der Erfindung sind in den Unteransprüchen angegeben.
-
Figurenliste
-
- 1 zeigt ein Blockdiagramm eines integrierten Endpunkts und virtuellen Ports gemäß einer Ausführungsform der vorliegenden Erfindung.
- 2 zeigt ein Blockdiagramm eines integrierten Endpunkts und virtuellen Ports gemäß einer Ausführungsform der vorliegenden Erfindung.
- 3 zeigt ein Blockdiagramm eines System-on-Chip (SoC) gemäß einer Ausführungsform der vorliegenden Erfindung.
- 4 zeigt ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
- 5 zeigt ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
- 6 zeigt ein Flussdiagramm eines Verfahrens zur Handhabung von eintreffenden Meldungen von gekoppelten Agenten gemäß einer Ausführungsform der vorliegenden Erfindung.
-
Ausführliche Beschreibung
-
In zahlreichen Ausführungsformen kann Schnittstellenfunktionalität eines PCIe™-Endpunktes zwischen Fabric-Logik und einem Agenten, wie zum Beispiel einem Intellectual Property (IP)-Block oder einem anderen Logikblock, der konfiguriert ist, um ein oder mehr Funktionen durchzuführen, segmentiert sein, um eine effiziente Wiederverwendung des Agenten über zahlreiche Plattformen zu ermöglichen. In der hierin verwendeten Form können die Begriffe „Agent“ und „IP-Block“ synonyme Bezeichnungen einer unabhängigen Logik sein, die in einem Halbleiterbaustein bzw. einer Halbleitereinrichtung gemeinsam mit anderen derartigen Agenten eingepasst sein kann, wobei die Agenten von einem oder mehr Herstellern stammen können. Für eine Implementierung kann ein derartiger Agent on-chip gemeinsam mit einem virtuellen Downstream-Port (Root-Port oder Switch-Port), der eine separate PCIe™-Einrichtung sein kann, einer Integrated-Device-Fabric (IDF), enthaltend Multifunktions (Multi-Function (MF))-Logik, und einem oder mehr Agenten, der/die jeweils eine oder mehr PCIe™-Funktionen implementieren kann/können, implementiert sein. Auf diese Weise kann/können ein oder mehr Agent(en) in einer On-Die- PCIe™-Einrichtung integriert sein.
-
Der virtuelle Downstream-Port erscheint für Software als ein Standard- PCIe™-Downstream-Port, jedoch sind die Verbindungsschicht und physikalische Schicht entfernt und durch eine Master-Schnittstelle zum Kommunizieren mit einer Upstream-Komponente, z. B. einem Prozessor, und durch eine Zielschnittstelle zum Kommunizieren mit der IDF ersetzt. In einer Ausführungsform enthält der virtuelle Downstream-Port einen Typel- PCIe™-Konfigurations-Header und zugehörige virtuelle Peer-to-Peer-Brücken-Logik. Der virtuelle Port erscheint für Software als ein „realer“ Port, aber die Verbindungsschicht und physikalische Schicht fehlen. Die Software kann nicht den Unterschied feststellen. Zahlreiche Werte für Verbindungsregister und physikalische Register können in dem virtuellen Port so gesetzt werden, dass die Software denkt, dass die Verbindungsschicht und physikalische Schicht vorhanden sind. Die IDF, MF-Logik und Agenten erscheinen wiederum für die Software als ein PCIe™-Endpunkt. Software kann nicht feststellen, dass der Endpunkt nicht mit dem Downstream-Port mit einer Standard- PCIe™-Verbindung verbunden ist, da dieselbe Funktionalität und Information präsentiert wird. Das heißt, dass die Kombination von virtuellem Port und IDF, MF-Logik und Agenten eine vollständige Transparenz für Software, wie zum Beispiel ein Shrink-Wrap-Betriebssystem (Operating System (OS)), ermöglicht. Zusätzlich ist diese Schnittstelle Plug-and-Play-OS-kompatibel und unterstützt zahlreiche Funktionen wie zum Beispiel unter anderen Funktionen PCI-Plug-and-Play-Enumeration und PCI-Ordnung.
-
In einer Ausführungsform ist die Integrated-Device-Fabric eine Implementierung einer Fabric, die MF-Logik enthält. Die MF-Logik liefert die Funktionalität, die notwendig ist, um separaten Agenten, die gemäß einer Schnittstellenspezifikation entworfen sind, zu ermöglichen, mit Software zu interagieren und für sie als eine Standard- PCIe™-Multifunktionseinrichtung zu erscheinen, die z. B. über eine Off-Chip (z. B. PCIe™)-Verbindung gekoppelt ist. Diese Fabric liefert die Ablaufsteuerungs-, Arbitrierungs- und Ordnungslogik. Zusätzlich unterstützt die Multifunktionslogik zahlreiche Funktionsanforderungen eines bestimmten Standards. Zum Beispiel kann in einer Ausführungsform die MF-Logik Logik zum Handhaben von maximaler Nutzlastgröße in Einrichtungen bzw. Geräten enthalten, die die Alternate Requester ID Interpretation (ARI), Legacy Interrupts, PCI-Power Management (PM)-Meldungen, nicht funktionsspezifische Fehler und Latenztoleranzberichterstattung unterstützen.
-
Ein oder mehr Agenten können mit dieser IDF gekoppelt sein, um eine oder mehr PCIe™-Funktionen zu implementieren. Die Agenten können in einer Root-Complex-Fabric direkt integriert oder, wie unten beschrieben, unter einer Integrated-Device-Fabric verbunden sein. Die IDF in Verbindung mit den Agenten bildet einen integrierten PCIe™-Endpunkt, der mit einem integrierten virtuellen Port (Root-Port oder Switch-Port) verbunden werden kann.
-
Ausführungsformen ermöglichen somit, dass Standardagenten, die für eine Schnittstellenspezifikation entworfen worden sind, zwischen Projekten, entweder als Funktionen innerhalb einer Multifunktionseinrichtung oder als Root-Complex-Integrated-Device, wieder verwendet werden. Es gibt keine Beschränkungen für die Agenten, die sie von der Implementierung des vollständigen Merkmalsatzes der PCIe™-Spezifikation abhalten. Durch Entfernen von Verbindungsschicht und physikalischer Schicht und Ersetzen der Schichten durch eine Fabric wird der Bedarf an zahlreicher Logik von derartigen Schichten, z. B. zyklische Redundanzprüfung (Cyclic Redundancy Checksum (CRC)) und Wiedergabepuffer, beseitigt. Dies erzeugt eine Lösung mit geringer Latenzzeit, geringer Energie und kleinerer Bauform.
-
Die Wiederverwendung wird durch Bauformregeln verbessert, um Logik zwischen Agent und Fabric effizient aufzuteilen. Ein PCIe™-Einrichtung weist typischerweise gewisse gemeinsame Logik für die gesamte Einrichtung und gewisse Logik auf, die für eine Funktion spezifisch ist. Ausführungsformen der vorliegenden Erfindung definieren die Partionierung und Implementierung von Logik, die sich in einem Agenten befindet (oder ein oder mehr Funktionen), und Logik, die sich in der Fabric befindet (oder einrichtungsspezifische Logik), zum Optimieren der Wiederverwendung für eine große Vielzahl von Plattformen. Ein Teil des Ziels des Entwurfes besteht darin, dem Agenten zu ermöglichen, als Teil einer Einrichtung, die in verschiedenen Komponenten, wie zum Beispiel Endpunkten, Fabrics integriert ist und innerhalb oder außerhalb eines Root Complex integriert sein kann, leicht verwendet zu werden. Somit ist gewisse Funktionalität und Komplexität in der Fabric enthalten, weil sie nicht notwendig sind, wenn ein Agent innerhalb eines Root Complex vorhanden ist.
-
Unter Bezugnahme auf 1 ist dort ein Blockdiagramm eines integrierten Endpunktes gezeigt, der mit einem virtuellen Port verbunden ist, die auf einen einzigen Halbleiter-Die gemäß einer Ausführungsform der vorliegenden Erfindung gebildet sein können. Wie in 1 gezeigt ist, kann der integrierte Endpunkt 10 eine IDF 30 und ein oder mehr Agenten 50 enthalten und mit einem virtuellen Port 20 gekoppelt sein, der in Abhängigkeit von der Einheit, mit der der integrierte Endpunkt 10 gekoppelt ist, ein virtueller Root-Port oder ein virtueller Switch-Port sein kann. Wenn zum Beispiel der virtuelle Port 20 mit einer Root-Complex-Fabric gekoppelt ist, kann er ein virtueller Root-Port sein, während der virtuelle Port 20, wenn er mit einer Switch-Fabric gekoppelt ist, stattdessen ein virtueller Switch-Port sein kann. In zahlreichen Ausführungsformen kann der virtuelle Port 20 ein architekturmäßig sichtbarer Registerraum sein und eine Menge von Konfigurationsregistern zur Unterstützung von Plug-and-Play und Funktionsermittlung enthalten. Der virtuelle Port 20 ist wiederum mit der IDF 30 gekoppelt, die Multifunktionslogik 35 enthält.
-
Die IDF 30 kann wiederum mit einem oder mehr Agenten 501 - 50n gekoppelt sein. Jeder derartige Agent ist ein unabhängiger IP-Block und kann verwendet werden, um ein oder mehr Funktionen, wie zum Beispiel eine oder mehr PCIe™-Funktionen, durchzuführen. Im Gegensatz zu einer herkömmlichen Kopplung von genannten Agenten über eine PCIe™- oder andere Verbindung kann in zahlreichen Ausführungsformen die integrierte, d. h. On-Die, Kopplung von Agenten 50 mit dem virtuellen Port 20 durch IDF 30 realisiert sein. Auf diese Weise kann der Bedarf an Verbindungsschicht und physikalischer Schicht, sowohl beim virtuellen Port 20 als auch bei den Agenten 50 (und auch IDF 30) vermieden werden. Stattdessen kann der virtuelle Port 20 mit der IDF 30 an der Transaktionsschicht direkt kommunizieren, und in ähnlicher Weise kann die IDF 30 mit Agenten 50 an der Transaktionsschicht direkt kommunizieren. Man sollte beachten, dass die Agenten, die durch die Agenten 50 beispielhaft erläutert sind, heterogene Blöcke von einem oder mehr verschiedenen Herstellern sein können. Zum Beispiel kann ein SoC-Hersteller zahlreiche Agenten in einer einzigen On-Die-Lösung enthalten, die sowohl ihre eigenen Agenten als auch ein oder mehr Agenten von anderen Herstellern, z. B. zum Bereitstellen oder Verbessern von bestimmter Funktionalität, enthält.
-
Nunmehr unter Bezugnahme auf 2 ist dort ein Blockdiagramm eines integrierten Endpunktes 100 gezeigt, der mit einem virtuellen Port gekoppelt ist. Dieser integrierte Endpunkt kann ähnlich wie derjenige von 1 konfiguriert sein. Es werden jedoch weitere Details der IDF 30 vorgestellt. Genauer gesagt, wie in 2 gezeigt ist, kann die IDF 30 Multifunktionslogik 35 enthalten, die eine Vielzahl von unabhängigen Logiken 40a - 40d (zum Beispiel) enthält, die zahlreiche Funktionalität handhaben können, die die Interaktion von unterschiedlichen Agenten in dem integrierten Endpunkt 100 ermöglicht, während die Sichtbarkeit für die Systemsoftware (z. B. ein Betriebssystem) erhalten bleibt. In der Ausführungsform von 2 enthält derartige Logik Registerschattenlogik (Register Shadow Logic) 40a, Energiemanagement (Power Management (PM))-Logik 40b, Legacy Interrupt-Logik 40c und Fehlerlogik 40d. Während sie mit diesen besonderen Logikfunktionalitäten gezeigt ist, ist der Umfang der vorliegenden Erfindung diesbezüglich nicht beschränkt und kann andere Logik in der MF-Logik 35 vorhanden sein. Zusätzlich enthält die Multifunktionslogik 35 einen Seitenbandendpunkt 42 zur Kopplung mit einem Seitenband-Router 50 über einen Seitenbandkanal 62.
-
Unter weiterer Bezugnahme auf 2 enthält die IDF 30 ferner Arbiters sowohl in der Upstream- als auch in der Downstream-Richtung (d. h. Arbiters 48a - 48b ). Genannte Arbiters können Ablaufsteuerung und Arbitrierung zwischen Kommunikation mit den zahlreichen Agenten, zum Beispiel gemäß einem Credit Flow Control- und Prioritätsarbitrierungsschema, handhaben. Arbiter 48a und 48b können die Ressourcen der Agenten 50 überprüfen, um sicherzustellen, dass Platz in den Warteschlangen vorhanden ist, und in der Upstream-Richtung überprüfen sie Ressourcen und arbitrieren, welcher Agent Zugriff auf den Upstream Primary-Kanal 49b haben kann. In einer Ausführungsform kann der Arbiter 48a als ein Verkehrspolizist für die Befehlsleitungen fungieren und in zwei Phasen arbeiten. Als erstes wird ein Befehl an die Agenten gesendet, um Zieldekodieren durchzuführen, d. h. es wird an alle Agenten rundgesendet. Dann antwortet der Zielagent. Da der Arbiter nun weiß, wo sich das Ziel befindet, wird der Arbiter als nächstes seine Ressourcenverfügbarkeit überprüfen und, wenn er ermittelt hat, dass die Ressourcen zur Verfügung stehen, kann er die Zuteilung melden und werden der aktuelle Befehl und die Daten an den Zielagenten geliefert.
-
Über einen primären Kanal 49, der separate Verbindungen 49a und 49b in der Downstream- bzw. Upstream-Richtung enthalten kann, kann Kommunikation mit den Agenten 50 stattfinden. In einer Ausführungsform kann der primäre Kanal 49 unterschiedliche Leitungen für Befehls- und Dateninformation aufweisen. Wie ferner ersichtlich ist, kann der Seitenband-Router 60 mit jedem Agenten 50 über einen bestimmten Seitenband-Kanal 651 - 653 kommunizieren. Es ist zu beachten, dass Peer-to-Peer-Kommunikation zwischen den Agenten 50 zulässig ist, obwohl dies in 2 nicht gezeigt ist. Während sie mit dieser speziellen Implementierung in der Ausführungsform von 2 gezeigt ist, soll der Umfang der vorliegenden Erfindung diesbezüglich nicht beschränkt sein.
-
In anderen Implementierungen einer Integrated-Device-Fabric kann die Fabric anstelle von Koppeln mit Agenten, bei denen alle Befehls- und Datenbreiten dieselben sind, eine Warteschlangenbildung und Einspeicherung (Staging) durchführen, um Mehrfachtaktdaten zu akzeptieren und sie danach aufzuweiten oder umgekehrt. Zur einfachen Darstellung ist in der 2 keine interne Warteschlangenbildung gezeigt, obwohl Ausführungsformen eine derartige Warteschlangenbildung vorsehen können. Während in einigen Ausführungsformen Downstream-Meldungen an alle verbundenen Agenten rundgesendet werden können, die ein Dekodieren durchführen, um zu ermitteln, ob ein Befehl für den bestimmten Agenten ist, können ferner andere Ausführungsformen Dekodieren in der IDF implementieren. Zum Beispiel können Downstream-Warteschlangen vorhanden sein, um Transaktionen von dem Root-Port zu akzeptieren, die dann an einen internen Dekodierer weitergeleitet werden, um das beabsichtigte Ziel zu ermitteln.
-
Ein Agent, der eine oder mehr PCIe™-Funktionen implementiert, kann in einer Root-Complex-Fabric unter einem virtuellen Root-Port als ein Teil eines integrierten Bausteins oder in einer selbständigen PCIe™-Endpunkt-Komponente integriert sein. Um eine Wiederverwendung eines Agenten in diesen unterschiedlichen Systemen zu ermöglichen, wird gewisse Funktionalität zwischen der Fabric und dem Agenten aufgeteilt, wie dies oben beschrieben ist. Zusätzlich werden Protokolle darüber, wie gewisse Meldungen gesendet werden, durch die IDF erzeugt.
-
Eine integrierte Funktion ist ein Agent, der eine oder mehr PCI-Funktionen implementiert. Diese können Legacy-PCI-Funktionen oder PCIe™-konforme Funktionen sein. Integrierte Funktionen, die die ARI unterstützen, können bis zu 256 Funktionen in einem Agenten implementieren. Einige Ausführungsformen können Single Root IO Virtualization (SR-IOV) unterstützen, was bis zu 64k Funktionen in einer integrierten Funktion ermöglicht.
-
Bei Verbindung mit einer Root-Complex-Fabric werden die Funktionen in einer integrierten Funktion zu einem Root-Complex-Integrated-Endpunkt. Bei Verbindung mit einem Switch-Fabric sind die integrierten Funktionen ein Teil eines Multifunktionsbausteins bzw. einer Multifunktionseinrichtung, der/die einen Upstream-Switch-Port enthält. Bei Verbindung mit einer Integrated-Device-Fabric sind die integrierten Funktionen ein Teil eines integrierten PCIe™-Endpunkts. Somit können zur Maximierung der Wiederverwendbarkeit integrierte Funktionen so implementiert werden, dass sie eine Verbindung mit einer Root-Complex-Fabric, einer Switch-Fabric oder einer Integrated-Device-Fabric herstellen können. Es ist zu beachten, dass zusätzliche Funktionalität vorhanden sein kann, wenn integrierte Funktionen zum Erzeugen eines PCIe™-Endpunkts verwendet werden.
-
Immer noch unter Bezugnahme auf die 2 kann die Legacy Interrupt-Logik 42c zum Handhaben von Agenten verwendet werden, die PCI-Legacy-Interrupts erzeugen können. Agenten, die PCI- oder PCIe™-konforme Funktionen implementieren, die Interrupts erzeugen, sind durch die PCI- und PCIe™-Spezifikationen zum Unterstützen von Legacy Interrupts erforderlich. Das Ziel für diese Legacy Interrupts ist ein Input/Output Advanced Programmable Interrupt Controller (IOxAPIC). Interrupt-Leitungen (d. h. Legacy Interrupt-Leitungen (INTx#)) werden unter Verwendung von Meldungen virtuell ausgeliefert. Eine Assert INTx#-Meldung zeigt einen Hoch-zu-Niedrig-Übergang des virtuellen INTx#-Signals an, während eine DeAssert INTx#-Meldung den Niedrig-zu-Hoch-Übergang des virtuellen INTx#-Signals anzeigt.
-
In zahlreichen Ausführungsformen können INTx Meldungen an sowohl primäre als auch Seitenbandmeldungen-Schnittstellen geliefert werden. Zur Sicherstellung von Interoperabilität der Agenten werden die folgenden Regeln zur Lieferung von Legacy Interrupts verwendet. Agenten, die die Ursprungsquelle von INTx-Meldungen sind (z. B. Endpunkt oder Root-Port), werden sie unter Verwendung von Seitenbandmeldungen senden. Agenten, die mehr als eine PCT/PCI-e™-Funktion enthalten, die sich virtuelle INTx-Leitungen logisch „oder“ virtuellen Leitungen teilen vor Senden der Assert/de-assert-Meldungen. Agenten, die mehr als eine PCI/ PCIe™-Funktion enthalten, die sich nicht virtuelle INTx-Leitungen teilen, senden die Meldungen mit unterschiedlichen Seitenbandquellen-IDs, wodurch der Empfänger die Quelle der INTx-Meldungen unterscheiden kann.
-
Die Legacy Interrupt-Logik 40c aggregiert die Legacy INTx-Meldungen, die von den Agenten unter der Fabric gemeinsam benutzt werden. Der aggregierte Zustand der virtuellen INTx-Leitung wird dann stromaufwärts (Upstream) auf dem primären Kanal 49 weitergeleitet. Agenten, die einen PCIe™-Root-Port implementieren, werden Legacy-INTx-Meldungen auf einem Seitenbandkanal senden, der einen lokalen IOxAPIC als Ziel hat.
-
Die PM-Logik 42b kann verwendet werden, um PCI-Energiemanagement (PCI Power Management (PCI-PM)) zu unterstützen. Die folgenden drei Meldungen können zur Handhabung von Power Management-Ereignissen, nämlich einer Energiemanagement- Ereignismeldung, und ähnlicher Abschalt- und Abschaltbestätigungsmeldungen verwendet werden: PME, PME Turn Off (TO) und PME TO Ack. In einer Ausführungsform enthält die PCI-PM-Meldung einen Meldungscode zum Anzeigen, ob die Meldung eine PME, PME Turn Off oder PME TO Ack ist. Die Meldung enthält auch den Bus, Baustein und die Funktionsnummer des Meldungsabsenders.
-
Zur Unterstützung der Interoperabilität von Agenten, die die PCI-Energiemanagement-Fähigkeiten implementieren, werden die folgenden Regeln verwendet. Agenten, die die PCI-PM-Fähigkeit implementieren, senden PME-Meldungen, Empfangen PME-Turn Off-Meldungen und senden PME TO Ack-Meldungen auf der Seitenbandmeldungsschnittstelle. IDF 30 liefert wiederum die folgende Funktionalität. Erstens empfängt die IDF PME Turn Off-Meldungen an der Upstream-Primärschnittstelle und sendet sie an jeden gekoppelten Agenten, der PCI-PM unterstützt (dies kann als ein echtes Multicast oder als mehrere Unicast-Meldungen durchgeführt werden). Außerdem empfängt die IDF PME TO Ack-Meldungen über die Seitenbandmeldungsschnittstelle, aggregiert die Meldungen und leitet eine PME TO Ack-Meldung stromaufwärts (Upstream) auf der primären Schnittstelle und empfängt PME-Meldungen auf der Seitenbandmeldungsschnittstelle und leitet sie stromaufwärts auf der primären Schnittstelle weiter. Agenten, die PCIe™-Root-Ports implementieren, empfangen PME Turn Off-Meldungen auf der Seitenbandmeldungsschnittstelle und leiten sie stromabwärts (Downstream) auf dem primären Kanal weiter und empfangen PME TO Ack-Meldungen von Downstream (über eine IDF für virtuelle Root-Ports, über eine PCIe™-Verbindung für aktuelle Root-Ports) und leiten eine PME TO Ack-Meldung auf der Seitenbandmeldungsschnittstelle weiter. Agenten, die einen PCIe™-Root-Complex Event-Collector implementieren, werden PME-Meldungen auf der Seitenbandmeldungsschnittstelle empfangen.
-
Die Fehlerlogik 40d kann für Unterstützung von PCIe™-Fehlermeldüngen sorgen, die die folgenden drei Meldungen einschließen: Fehler korrigiert (ERR CORR), kein fataler Fehler (ERR NONFATAL) und fataler Fehler (ERR FATAL). Zur Unterstützung von Interoperatbilität von Agenten, die diese Meldungen implementieren, werden die folgenden Regeln in einer Ausführungsform verwendet werden. Agenten, die PCIe™-Fehlermeldungen erzeugen, senden Fehlermeldungen auf der Seitenbandmeldungsschnittstelle, und Integrated-Device-Fabric 30 empfängt Fehlermeldungen auf der Seitenbandmeldungsschnittstelle und leitet sie auf dem primären Kanal 49 stromaufwärts (Upstream). Agenten, die PCIe™-Root-Ports implementieren, empfangen Fehlermeldungen entweder über die PCIe™-Verbindung oder auf dem primären Kanal auf der Downstream-Seite bei Implementierung als ein virtueller Root-Port. Agenten, die einen PCIe™-Root-Complex-Event-Collector implementieren, werden Fehlermeldungen auf der Seitenbandmeldungsschnittstelle empfangen. In anderen Implementierungen können derartige Meldungen auf der primären Schnittstelle gesendet werden.
-
Die PCIe™-Fehlermeldüngen enthalten eine Anforderer-ID (die Busnummer, Baustein und Funktion enthalten kann) und einen Meldungscode. Die PCIe™-Spezifikation gibt an, dass nicht funktionsspezifische Fehler, die an einem Endpunkt auftreten, in jeder Funktion protokolliert werden, wobei jedoch nur eine Fehlermeldung für jeden aktivierten Schweregrad gesendet wird. Wenn zum Beispiel alle Funktionen so programmiert sind, dass sie den Fehler als fatal behandeln, dann wird nur eine Fataler-Fehler-Meldung gesendet, aber wenn einige Funktionen so programmiert sind, dass sie den Fehler als fatal behandeln, und andere so programmiert sind, dass sie den Fehler als nicht fatal behandeln, dann werden eine Fataler-Fehler- und eine Nicht-Fataler-Fehler-Meldung gesendet. Die folgenden Fehler können nicht funktionsspezifisch sein: nicht unterstützte Anfrage (Unsupported Request (UR)), bei Verursachung durch keine Funktion, die ein Transaktionsschichtpaket (Transaction Layer Packet (TLP)) fordert; unerwartete Ausführung bei Verursachung durch keine Funktion, die eine Ausführung fordert; falsch formatiertes TLP; End-CRC (ECRC)-Scheitern; Empfänger-Overflow; und Ablaufsteuerungsprotokollfehler. Es ist zu beachten, dass in zahlreichen Ausführungsformen die letzten beiden nicht einsetzbar sind. ECRC-Scheitern ist optional und kann nur auftreten, wenn ECRC-Überprüfung aktiviert ist.
-
Die Fehlerlogik 40d der Integrated-Device-Fabric 30 hat die Verantwortung, zu bestimmen, dass eine Transaktion zu einem nichtfunktionsspezifischen Fehler führt. Bei Detektion eines nicht funktionsspezifischen Fehlers wird die IDF an jedem Downstream-Agenten, der Teil der integrierten Einrichtung ist, eine Eingabe mit einem nicht spezifischen Fehlersignal (cmd nfserr) vornehmen. Wenn ein Agent eine Eingabe mit dem behaupteten cmd nfserr empfängt, protokolliert er den Fehler, aber sendet keine Fehlermeldung, selbst wenn er zum Senden einer Meldung konfiguriert ist. MF-Logik 35 ist für das Senden der geeigneten Fehlermeldungen verantwortlich. Ein Single Bit Strap wird in der integrierten Funktion verwendet, um zu wissen, dass sie unter einer Integrated-Device-Fabric angeschlossen ist.
-
Die MF-Logik 35 schattiert die notwendigen Bits von jeder Funktion unter der Integrated-Device-Fabric, die angibt, welchen Schweregradfehler die Funktion für den Fehler melden sollte. In einer Ausführungsform kann eine Tabelle in der Fehlerlogik 40d vorgesehen sein, um anzuzeigen, welche Bits erforderlich sind. Die Integrated-Device-Fabric detektiert somit, dass der Fehler eingetreten ist, und sendet das TLP an alle integrierten Funktionen unter der Integrated-Device-Fabric. Das Rundsenden kann mit einem simultanen ... oder sequentiellen ... an alle Ziele erfolgen. Die MF-Logik wird danach die Schattenkopien der Fehlerkonfigurationsbits überprüfen und die korrekten Fehlermeldungen stromaufwärts (Upstream) senden.
-
Die MF-Logik 35 kann ferner Registerschattenlogik 40a enthalten. Wenn eine Funktion in einem Agenten PCIe™-ARI-Fähigkeit implementiert, dann müssen sie alle ARI implementieren. Jede integrierte Funktion, die die ARI-Fähigkeit implementiert, implementiert ein privates Register mit maximaler Nutzlastgröße, das von dem Konfigurationsregister mit PCIe™-definierter maximaler Nutzlastgröße getrennt ist, und eine Strap-Eingabe (Strap Input), um anzuzeigen, ob die integrierte Funktion in einem Root-Complex oder außerhalb eines Root-Complex instantiiert ist. Dieses Register ist von der Seitenbandmeldungsschnittstelle erreichbar. Wenn die integrierte Funktion benutzt wird, um anzuzeigen, dass sie sich außerhalb des Root-Complex befindet, dann ignorieren alle Funktionen mit einer Funktionsnummer ungleich Null das Register mit PCIe™-spezifikationsdefinierter maximaler Nutzlastgröße und Verwenden das private Register für den maximalen Nutzlastgrößenwert. Es gehört zur Verantwortung der Registerschattenlogik 40a der MF-Logik 30, die Null-Werte für die maximale Nutzlastgröße der Funktionen in den anderen Agenten, die mit der IDF 30 verbunden sind, zu schattieren. Die MF-Logik 35 kann in einigen Ausführungsformen andere Funktionen enthalten. In einer Ausführungsform kann jeder Agent eine Latenzzeitmeldung über den Seitenbandkanal an die Multifunktionslogik senden, die Meldungen aggregiert, die Latenzzeitzahl für den ungünstigsten Fall nimmt und an den virtuellen Port zur Berichterstattung stromaufwärts (upstream) sendet.
-
Nunmehr unter Bezugnahme auf 3 ist dort ein Blockdiagramm eines System-on-Chip (SoC) gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 3 gezeigt ist, kann der SoC 200 ein Einzel-Die-Baustein sein, der zahlreiche Einheiten enthält, die unterschiedliche Funktionen durchführen. Wie in 3 gezeigt ist, kann ein Server Controller Hub (SCH) 210 eine Schnittstelle zu einem Systemcontroller, wie zum Beispiel einer Zentralverarbeitungseinheit (Central Processing Unit (CPU)) oder einer anderen Hauptverarbeitungseinheit, bereitstellen. Über zahlreiche Einstellungen können z. B. Sicherungsauswähleinstellungen, wie z. B. Schmelzverbindungen, die durch Schalter S1 und S2 repräsentiert werden, gesteuert werden, um Koppeln von unterschiedlichen Schaltkreisen mit SCH 210 zu ermöglichen. Wie ersichtlich ist, kann der Schalter S1 eine direkte Kopplung eines virtuellen Ports 220, der ein virtueller Root-Port oder ein virtueller Switch-Port sein kann, direkt mit SCH 210 ermöglichen. Wenn S1 den virtuellen Port 220 mit SCH 210 verbindet, ist der virtuelle Port 220 ein Root-Port. In einer alternativen Konfiguration kann der virtuelle Port 220 mit einer Switch-Fabric (SWF) 270 direkt koppeln. Wenn S1 den virtuellen Port 220 mit SWF 270 verbindet, ist er ein Switch-Port. Der Schalter S2 kann gesteuert werden, um eine Integrated-Device-Fabric 230 mit einer Speichercontrollereinheit (Storage controller unit (SCU)) 260 zu koppeln oder die Kopplung zu deaktivieren.
-
Wie ferner in 3 gezeigt ist, kann die IDF 230 mit einer Schnittstelle 240 gekoppelt sein, die eine Schnittstelle für zahlreiche Off-Chip-Einrichtungen, wie zum Beispiel SMBUS, nichtflüchtiger SRAM, serieller Flash und Ethernet, bereitstellen kann. Ferner kann IDF 230 mit einer SCU 250 koppeln, die auch mit zahlreichen Off-Chip-Einrichtungen, wie zum Beispiel Festplattenlaufwerken oder einem SAS-Netzwerk, koppeln kann. Ferner kann in einer bestimmten Implementierung der Schalter S1 direktes Koppeln des virtuellen Ports 220 mit der Switch-Fabric 270 ermöglichen, die wiederum mit einem Upstream-Switch-Port 280 koppelt, der mit Downstream-Switch-Ports (nicht gezeigt) koppeln kann, die mit einem Off-Chip-Endpunkt koppeln. SoC 200 kann ferner einen Design-for-Test (DFx)-Agenten 290 zur Durchführung von zahlreichen Design-for-Test-Funktionen enthalten. Während sie mit dieser besonderen Implementierung in der Ausführungsform von 3 gezeigt ist, ist der Umfang der vorliegenden Erfindung diesbezüglich nicht beschränkt.
-
Ausführungsformen können ferner in einem weiteren Systemkontext implementiert werden, wie zum Beispiel einem PCIe™/PCI-System. Unter Bezugnahme auf 4 ist dort ein Blockdiagramm eines Systems 300 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 4 gezeigt ist, kann das System 300 zahlreiche Fabrics zum Koppeln von unterschiedlichen Arten von Funktionen und Einrichtungen mit Upstream-Komponenten, wie zum Beispiel einer Haupt-CPU und einem Speicherkomplex, durch CPU 305 repräsentiert, enthalten. Während sie als ein einzelner Block gezeigt ist, versteht es sich, dass die CPU 305 eine oder mehrere CPUs und lokalen Speicher enthalten kann, die beispielsweise in einer Gruppen- oder Ringtopologie implementiert sein können. Die CPU 305 koppelt mit einer Root Complex-Fabric 310.
-
Root-Complex 310 kann das Root einer IO-Hierarchie kennzeichnen, das die CPU 305 mit dem IO-Subsystem verbindet. Wie ersichtlich, können zahlreiche Einheiten mit dem Root-Complex 310 gekoppelt sein, die Root-Complex-Integrated-Endpunkte 312a - 312n , Root-Ports, die einen physikalischen Root-Port 314 und einen virtuellen Root-Port 330 enthalten, und eine andere derartige Schnittstelle 313 enthalten, die in einer Ausführungsform eine DMI oder DMIc-Schnittstelle sein kann. In der Ausführungsform von 4 können einige dieser Schnittstellen und Ports Off-Die über Cross-Die-Verbindungen 316 und 345 koppeln, während der virtuelle Root-Port 330 On-Die in einer Integrated-Device-Fabric 335 integriert sein kann, die wiederum mit einem integrierten PCIe™-Endpunkt 340 gekoppelt ist, der eine oder mehr integrierte Funktionen 341a - 314n enthält. Somit können sowohl der Root-Port 314 als auch der virtuelle Root-Port 330 für die auf der CPU 305 laufende Software als mit Off-Chip- PCIe™-Einrichtungen gekoppelt erscheinen. Es ist zu beachten, dass die Endpunkte 312a - 312n und Funktionen 341a - 341n für dieselben Regeln entworfen sind, so dass ein Systemintegrator wählen kann, einen Agenten als entweder einen RCintegrierten Endpunkt oder eine integrierte Funktion zu instantiieren, ohne Änderungen an der Implementierung mit wieder verwendbaren Agenten vorzunehmen.
-
Ferner ist in 4 gezeigt, dass eine Cross-Die-Verbindung 316 mit einer weiteren Schnittstelle 317 koppeln kann, die wiederum mit einer Root-Complex-Fabric 320 koppelt, mit der ein oder mehr Root-Complex-Integrated-Endpunkte 322a - 322n gekoppelt sein können.
-
Über die Cross-Die-Verbindung 345 kann eine PCIe™-Multifunktionseinrichtung 350 vorliegen, die auch mit einer Switch-Fabric 360 über einen Switch-Port 352 und eine integrierte Funktion 354 koppeln kann. Die Switch-Fabric 360 kann wiederum mit zahlreichen Downstream-Ports koppeln, die einen Switch-Port 365 und virtuelle Switch-Ports 368a und 368b einschließen. Diese virtuellen Switch-Ports können mit IDFs 370 und 375 koppeln, von denen jede ein oder mehr damit gekoppelte PCIe™-Endpunkte enthalten kann. In der in 4 gezeigten Ausführungsform kann ein PCIe™-Endpunkt 372 eine integrierte Funktion 373 enthalten und kann ein PCIe™-Endpunkt 380 integrierte Funktionen 383a - 383n enthalten. Während sie mit dieser Implementierung in der Ausführungsform von 4 gezeigt ist, ist der Umfang der vorliegenden Erfindung diesbezüglich nicht beschränkt.
-
Nunmehr unter Bezugnahme auf 5 ist dort ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 5 gezeigt ist, kann das Verfahren 400 in einer Integrated-Device-Fabric zur Handhabung von eintreffenden Meldungen von einer damit gekoppelten Upstream-verbundenen Einrichtung implementiert sein. Wie in 5 gezeigt ist, kann das Verfahren 400 zur Handhabung von eintreffenden Meldungen verwendet werden, die von Upstream-Komponenten, wie zum Beispiel einem virtuellen Port, mit dem die IDF gekoppelt ist, empfangen werden (Block 410).
-
Bei Empfang in der IDF kann eine Meldung, die ein Befehl sein kann, an alle Downstream-Agenten über einen primären Kanal gesendet werden (Block 420). Dann kann die IDF bestimmen, ob sie eine Dekodierbestätigung von einem der Agenten empfängt (Raute 430). Das heißt, dass, wie oben erörtert, eine Übertragung von Meldungen stromabwärts (Downstream) in einem Zwei-Phasen-Prozess stattfinden kann, in dem die Meldung als erstes an alle Agenten gesendet wird, die deren eigenes Zieldekodieren durchführen. Wenn die Meldung nicht für eine der Downstream-Komponenten vorgesehen ist, dann wird eine Fehlermeldung erzeugt und stromaufwärts (Upstream) gesendet (Block 435).
-
Wenn stattdessen eine Zielbestätigung von einem der Agenten empfangen wird, schreitet die Steuerung zu Raute 440, wo bestimmt werden kann, ob der anvisierte Agent Ressourcen zur Handhabung der Meldung aufweist (Raute 440). Falls ja, so schreitet die Steuerung zu Block 450 vor, wo die Meldung mit anderen Meldungen zur Downstream-Übertragung arbitriert werden kann. Danach kann bei Block 460 die Meldung an den anvisierten Agenten gesendet werden. Natürlich können andere Mechanismen zur Handhabung von empfangenen Meldungen in anderen Ausführungsformen verwendet werden. Wie oben erörtert wurde, kann zum Beispiel Adressdekodierung in der Fabric selbst in einigen Implementierungen stattfinden.
-
Nunmehr unter Bezugnahme auf 6 ist dort ein Flussdiagramm eines Verfahrens zur Handhabung von eintreffenden Meldungen von gekoppelten Agenten gezeigt. Wie in 6 gezeigt ist, kann das Verfahren 500 durch Empfang von Seitenbandmeldungen von einem oder mehr Agenten über einen Seitenbandkanal beginnen (Block 510). Zum Beispiel können eintreffende Seitenbandmeldungen an einen Seitenbandendpunkt geliefert werden, der Teil von Multifunktionslogik einer Integrated-Device-Fabric ist. Dieser Endpunkt kann Meldungen zu einer geeigneten Logik in der Multifunktionslogik lenken (Block 520). Zum Beispiel können Fehlermeldungen zu Fehlerlogik gesendet werden, Energiemanagement-Meldungen zu Energiemanagement-Logik gesendet werden und so weiter. Die bestimmte Logik kann dann die empfangenen Meldungen verarbeiten (Block 530). Wie oben erörtert, kann zum Beispiel die Logik eine Aggregation von mehreren Seitenbandmeldungen durchführen, um dadurch eine geeignete aggregierte Meldung für Upstream-Übertragung zu bilden. Wie in 6 gezeigt ist, kann dann die aggregierte Meldung stromaufwärts (Upstream), z. B. zu einem virtuellen Port über den primären Kanal weitergeleitet werden (Block 540).
-
Durch Verwendung von Ausführungsformen der vorliegenden Erfindung kann somit eine Standardlösung zur Implementierung von Agenten realisiert werden, die entweder als Root-Complex-Integrated-Einrichtungen oder als Non-Root-Complex-Integrated-Devices verwendet werden können. Dementsprechend kann die Wiederverwendung von Agenten über zahlreiche Produkte erfolgen, so dass Agenten von einem oder mehr Herstellern in einen Single-Die-IC (Integrated Circuit) eingebaut sein können.
-
Es ist zu beachten, dass die Ausführungsformen für eine identische Integration eines IP-Blocks unter einem PCIe™-Schalter, Switch-Port, PCIe™-Root-Port oder direkt unter einem Root-Complex sorgen. Im Gegensatz dazu dürfen gemäß der PCIe™-Spezifikation Schalter eine Einrichtung nicht auf einem internen Bus integrieren. (Sprache der PCIe™-Spezifikation: „Endpoints (represented by Type ooh Configuration Space headers) must not appear to configuration Software on the Switches internal bus as peers of the virtual PCI-to-PCI Bridges representing the Switch Downstream Ports.“) Wie jedoch in 4 gezeigt ist, kann ein IP-Block als eine Funktion einer integrierten Einrichtung integriert sein, die einen Port stromaufwärts vom Schalter (Switch Upstream Port) enthält. In diesem Fall ist die Switch-Fabric 360 eine einzelne Fabric, die Verkehr für zwei logische PCI-Busse überträgt, die zur primären und sekundären Seite der Upstream-Switch-Port Virtual Peer-to-Peer-Bridge gehören.
-
Die Ausführungsformen können auch voll PCIe™-konform sein, wodurch ermöglicht wird, dass für eine Standardschnittstelle entworfene Agenten innerhalb eines Root-Complex oder in einer integrierten Einrichtung verwendet werden. Außerdem sorgt die Verwendung einer IDF mit Multifunktionslogik gemäß einer Ausführungsform der vorliegenden Erfindung für einen Standardweg zur Handhabung von Interaktionen zwischen Agenten, so dass Agenten von unterschiedlichen Anbietern in einer einzigen Multifunktionseinrichtung miteinander verbunden werden können.
-
Die Ausführungsformen können in Code implementiert und auf einem Speichermedium gespeichert werden, das Anweisungen enthält, die zum Programmieren eines Systems zur Durchführung der Anweisungen verwendet werden können. Das Speichermedium kann, ohne darauf beschränkt zu sein, jeden Typ von Platte, einschließlich Disketten, optische Platten, Solid-State-Laufwerke (Solid-State-Drives (SSDs)), Compact Disk Read-Only Memory (CD-ROMs), Compact Disk Rewritables (CD-RWs) und magnetooptische Platten, Halbleitereinrichtungen, wie zum Beispiel Nur-Lesespeicher (Read-Only Memories (ROMs)), Direktzugriffsspeicher (Random Access Memories (RAMs)), wie zum Beispiel Dynamic Random Access Memories (DRAMs), Static Random Access Memories (SRAMs), löschbare programmierbare Nur-Lesespeicher (Erasable Programmable Read-Only Memories (EPROMs)), Flash-Speicher, elektrisch löschbare programmierbare Nur-Lesespeicher (Electrically Erasable Programmable Read-Only Memories (EEPROMs)), magnetische oder optische Karten, oder irgendeinen anderen Typ von zur Speicherung von elektronischen Anweisungen geeigneten Medien, einschließen.
-
Während die vorliegende Erfindung unter Bezugnahme auf eine begrenzte Anzahl von Ausführungsformen beschrieben worden ist, werden Fachleute auf dem Gebiet zahlreiche Modifikationen und Abwandlungen davon erkennen. Die beigefügten Ansprüche sollen alle derartigen Modifikationen und Abwandlungen, die in den wahren Geist und Umfang der vorliegenden Erfindung fallen, abdecken.