-
GEBIET DER ERFINDUNG
-
Die vorliegende Erfindung betrifft das Gebiet der Datenübertragung und insbesondere eine Vorrichtung und ein Verfahren zur schnellen Decodierung von Adressen von PCIe-Multifunktionseinheiten, wobei eine Zielfunktions-Suchtabelle verwendet wird.
-
HINTERGRUND DER ERFINDUNG
-
Peripheral Component Interconnect Express (PCIe) ist ein Standard für Computer-Erweiterungskarten, der als Ersatz für ältere PCI-, PCI-X- und AGP-Busstandards entwickelt wurde. Neueste Versionen des PCIe-Standards unterstützen die Virtualisierung von Hardware-E/As. PCIe beruht auf einer Punkt-zu-Punkt-Topologie mit getrennten seriellen Verbindungen, über die jede Einheit mit dem Stammkomplex (Host) verbunden ist. Eine PCIe-Busverbindung unterstützt die Vollduplex-Datenübertragung zwischen beliebigen zwei Endpunkten ohne Begrenzung des gleichzeitigen Zugriffs auf mehrere Endpunkte. Die PCIe-Datenübertragung ist in Pakete eingebettet, wobei die Arbeit des Paketierens und Entpaketierens von Daten- und Statusmeldungsverkehr durch die Transaktionsschicht des PCIe-Anschlusses abgewickelt wird.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Daher wird gemäß der Erfindung ein Verfahren zum Decodieren von PCI-Express-Adressen (PCIe-Adressen) bereitgestellt, wobei das Verfahren aufweist das Bereitstellen einer Suchtabelle in einem PCIe-Host, wobei die Suchtabelle betriebsfähig ist, um ein Zuordnen aus einem Adressbereich zu einer Zielfunktion durchzuführen und die Suchtabelle zu nutzen, das Senden einer Adresse und einer vorgeschlagenen Zielfunktion an einem PCIe-Endpunkt, das Decodieren der empfangenen Adresse am PCIe-Endpunkt unter Nutzung der vorgeschlagenen Zielfunktion und das Überprüfen von Informationen vorgeschlagener Zielfunktionen.
-
Außerdem wird gemäß der Erfindung ein Verfahren zum Decodieren von PCI-Express-Adressen (PCIe-Adressen) zur Verwendung in einem PCIe-Host bereitgestellt, wobei das Verfahren aufweist das Empfangen von PCIe-Anforderungen, die jeweils eine Adresse aufweisen, das Ermitteln einer Zieleinheitenfunktion gemäß jeder Adresse und das Zuweisen der Zielfunktionen zu Anforderungen, die an die PCIe-Endpunkte ausgegeben werden.
-
Ferner wird gemäß der Erfindung ein Verfahren zum Decodieren von PCI-Express-Adressen (PCIe-Adressen) zur Verwendung in einem PCIe-Host bereitgestellt, wobei das Verfahren das Durchsuchen von PCIe-Einheiten und -funktionen während einer PCIe-Bus-Initialisierungsphase aufweist, das Zuweisen von Adressbereichen zu Funktionen und das Aufbauen einer Suchtabelle, die die Adressbereiche den Zielfunktionen zuordnet.
-
Außerdem wird gemäß der Erfindung ein Verfahren zum Decodieren von PCI-Express-Adressen (PCIe-Adressen) zur Verwendung in einem PCIe-Endpunkt bereitgestellt, wobei das Verfahren das Empfangen eines Lese-/Schreibanforderungspakets von einem PCIe-Host aufweist, das Ermitteln, ob das Anforderungspaket Daten empfohlener Zielfunktionen aufweist, und wenn dies der Fall ist, das Validieren der in dem Paket empfangenen Zielfunktionsdaten.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die Erfindung wird hierin lediglich beispielhaft unter Bezugnahme auf die beigefügten Zeichnungen beschrieben, wobei:
-
1 ein Blockschema ist, das ein beispielhaftes PCIe-Netzwerk mit einem Mechanismus zur schnellen Decodierung von PCIe-Adressen der vorliegenden Erfindung veranschaulicht;
-
2 eine schematische Darstellung ist, die einen ersten beispielhaften parallelen Ansatz zur Adressdecodierung in einem PCIe-Endpunkt veranschaulicht;
-
3 eine schematische Darstellung ist, die einen zweiten beispielhaften sequenziellen Ansatz zur Adressdecodierung in einem PCIe-Endpunkt veranschaulicht;
-
4 eine schematische Darstellung ist, die einen dritten beispielhaften Ansatz mit parallelen Decodierdaten veranschaulicht, um Adressen in einem PCIe-Endpunkt zu decodieren; und
-
5 ein Flussdiagramm ist, das das Verfahren der vorliegenden Erfindung zur schnellen Decodierung von PCIe-Adressen veranschaulicht.
-
AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
-
Neueste Erweiterungen des PCI-Express-Standards (PCIe-Standard) wie zum Beispiel Alternate RequestorID Interpretation (ARI) und Single Root I/O Virtualization (SR-IOV) ermöglichen einen höheren Grad der Integration von Multifunktionsanwendungen in einer einzigen PCIe-Einheit. Derartige Anwendungen nutzen eine übliche PCIe-Verbindung zum Host, die von verschiedenen Funktionen gemeinsam genutzt wird, die auf der Einheit realisiert sind. Eine Systemansicht, die ein beispielhaftes PCIe-Netzwerk mit einem Mechanismus zur schnellen Decodierung von PCIe-Adressen der vorliegenden Erfindung veranschaulicht, ist in 1 dargestellt.
-
Das System, das allgemein mit 10 bezeichnet ist, weist einen PCI-Host 12, einen PCIe-Switch 22 und eine Vielzahl von PCIe-Endpunkten 24 auf. Der PCIe-Switch 22 ist über PCIe-Verbindungen 20 mit dem PCIe-Host und den Endpunkten verbunden. Der PCIe-Host 12 weist einen oder mehrere Prozessorkerne 14 und einen PCIe-Stammkomplex 16 auf, der eine Tabelle 18 mit Zuordnungen zwischen Adressen und Funktionen aufweist. Die PCIe-Endpunkte 24 weisen eine Adressdecodierschaltung 26, eine Vielzahl von Funktionen 0, 1, ... N 28 und eine Vielzahl von Konfigurationsräumen 29 auf.
-
Jede Funktion 28 realisiert ihre eigene PCIe-Konfiguration 29 durch Bereitstellen von Standardmitteln zur Steuerung der Arbeitsweise einer Funktion. Ein großer Teil der Konfigurationsraumlogik einer Funktion ist speziell zur Konfiguration und Steuerung von Adressregionen vorgesehen, die dieser Funktion zugeordnet sind. Jede eingehende Transaktion durchläuft eine Adressdecodierlogik, um die Zieleinheit zu ermitteln. Der PCIe-Standard lässt eine erhebliche Flexibilität bei der Zuordnung und Programmierung von Adressräumen zu, was zu einer komplexen Adressdecodierlogik führt, die für jede Funktion erforderlich ist.
-
Mit dem höheren Grad der Integration mehrerer Funktionen entstehen für Logikentwickler Probleme bei der Realisierung einer schnellen und effizienten Adressdecodierung. Ein Ansatz besteht darin, eine parallele Decodierung durchzuführen, wie in 2 dargestellt. Das parallele Schema, das allgemein mit 30 bezeichnet ist, weist eine Vielzahl von Konfigurationsräumen F0, F1, ..., Fn 34, BAR-Decodierern 32 (BAR = Base Address Register, Basisadressregister) und RX-Adressinformationen 38 (RX = Receiver, Empfänger) auf. Die RX-Adresse wird parallel auf alle BAR-Decodierer gleichzeitig angewendet, um eine decodierte Funktion/ein decodiertes BAR 36 zu erzeugen.
-
Bei dem Ansatz mit der parallelen Decodierung realisiert die PCI-Endpunkteinheit für jede Funktion eine speziell vorgesehene Decodierlogik (BAR-Decodierer). Die Adressdecodierung wird bei allen Funktionen in einer einzigen Einheit parallel ausgeführt. Dieser Ansatz erfordert die Verwendung zahlreicher Decodierlogikinstanzen, was zu einer sehr großen Decodierlogik mit möglichen Problemen bei der Steuerung der Signalweiterleitung führt.
-
Ein zweiter Ansatz besteht darin, eine sequenzielle Adressdecodierung durchzuführen, wie in 3 dargestellt. Das sequenzielle Schema, das allgemein mit 40 bezeichnet ist, weist eine Vielzahl von Konfigurationsräumen F0, F1, ..., Fn 46, einen seriellen BAR-Auswahlmultiplexer 44 und einen BAR-Decodierer 42 auf. Der serielle BAR-Auswahlmultiplexer empfängt die Daten von den Konfigurationsräumen 46 und einer Auswahlsteuerung 52. Die BAR-Decodiererschaltung 42 empfängt die RX-Adressinformationen 48, die im Lese-/Schreibanforderungspaket und in der Ausgabe des seriellen BAR-Auswahlmultiplexers empfangen wurden, und ist betriebsfähig, um die decodierte Funktion/das decodierte BAR 50 zu erzeugen. Der serielle BAR-Auswahlmultiplexer wählt nacheinander alle Konfigurationsraumdaten der Funktion zum Abgleichen durch den BAR-Decodierer 42 aus.
-
Bei dem Ansatz mit der sequenziellen Decodierung führt der Endpunkt für jede unterstützte Funktion eine Adressdecodierung durch, bis die Zielfunktion erkannt wurde. Die Adressdecodierung wird unter Verwendung eines einzigen, gemeinsam genutzten Adressdecodierers 42 durchgeführt. Die Adressdecodierung wird in mehreren Schritten ausgeführt, wobei in jedem Schritt eine der Funktionen ihre Adresskonfiguration 46 in den Decodierer lädt und die Ergebnisse der Decodierung ausgewertet werden. Der Decodierablauf stoppt, wenn eine positive Decodierung festgestellt wurde. Obwohl dieser Ansatz minimale Logikressourcen nutzt, erfordert er erhebliche Latenzen bei der Decodierung, was zu einer Verschlechterung der Bandbreite führt.
-
Bei einem dritten Ansatz werden im Kopf der PCIe-Anforderung eine oder mehrere Decodierrichtlinien (z. B. geplante Funktion) bereitgestellt, wodurch die Notwendigkeit beseitigt wird, während des Decodierprozesses im Endpunkt nach der Zielfunktion zu suchen. Dies ermöglicht in komplexen Multifunktionseinheiten die Realisierung der Decodierung in einem einzigen Decodierer mit einem einzigen Schritt.
-
Eine schematische Darstellung zur Veranschaulichung eines dritten beispielhaften Ansatzes mit parallelen Decodierdaten, um Adressen in einem PCIe-Endpunkt zu decodieren, ist in 4 abgebildet. Das Decodierdatenschema, das allgemein mit 60 bezeichnet ist, weist eine Vielzahl von Konfigurationsräumen F0, F1, ..., Fn 66, einen BAR-Auswahlmultiplexer 64 und einen BAR-Decodierer 62 auf. Der BAR-Auswahlmultiplexer empfängt Daten von den Konfigurationsräumen 66 und wählt unter Verwendung erweiterter Decodierdaten 70, die vom Host empfangen wurden, direkt eine der Adresskonfigurationen aus. Die BAR-Decodiererschaltung 62 empfängt die RX-Adressinformationen 68, die im Lese-/Schreibanforderungspaket und in der Ausgabe des seriellen BAR-Auswahlmultiplexers 64 empfangen wurden, und ist betriebsfähig, um die bestätigte (bzw. validierte) Funktion/das bestätigte (bzw. validierte) BAR 72 zu erzeugen. Der BAR-Auswahlmultiplexer wählt die Konfigurationsraumdaten der Funktion zum Abgleichen (Validieren) durch den BAR-Decodierer 62 aus.
-
Bei einer Ausführungsform weist der PCIe-Host (oder ein beliebiger anderer Anforderer) gemäß dem Decodierdatenmechanismus Zielfunktionsdaten in dem PCIe-Anforderungspaket auf. PCIe-Funktionen in den Endpunkten realisieren Konfigurationsraumfähigkeiten, die eine Kontrolle über die Verwendung von Decodierinformationen der Zielfunktion in den Anforderungen bereitstellen. Zu beachten ist, dass dieses Merkmal optional sein kann. Daher ignorieren Einheiten, die den Decodierdatenmechanismus realisieren, einfach Zielfunktionsdaten in dem Lese-/Schreibanforderungspaket und führen eine Adressdecodierung entweder unter Verwendung des oben beschriebenen parallelen oder sequenziellen Schemas durch.
-
Ein Flussdiagramm, das das Verfahren der vorliegenden Erfindung zur schnellen Decodierung von PCIe-Adressen veranschaulicht, ist in 5 dargestellt. Die PCIe-Endpunkteinheit empfängt eine PCIe-Lese-/Schreibanforderung (Schritt 80). Die Inhalte des Pakets werden anschließend wie normalerweise üblich validiert (Schritt 82). Der PCIe-Endpunkt prüft, ob Zielfunktionsdaten in dem Anforderungspaket enthalten sind (Schritt 84).
-
Der PCIe-Endpunkt prüft anschließend, ob die Verwendung von Zielfunktionsdaten aktiviert ist (Schritt 86). Zu beachten ist, dass das Decodierdatenmerkmal durch Setzen eines Merkers im Konfigurationsraum der Einheit gesteuert werden kann. Wenn keine Zielfunktionsdaten im Anforderungspaket enthalten sind oder die Verwendung von Zielfunktionsdaten im Konfigurationsraum der Einheit nicht aktiviert ist, führt die Endpunkteinheit unter Verwendung des oben beschriebenen parallelen oder sequenziellen Schemas einen Adressdecodierablauf durch (beim sequenziellen Schema führt der Endpunkt z. B. für jede unterstützte Funktion eine Adressdecodierung durch, bis die Zielfunktion erkannt wurde) (Schritt 92).
-
Wenn Zielfunktionsdaten im Anforderungspaket vorliegen und die Verwendung von Zielfunktionsdaten im Konfigurationsraum der Einheit aktiviert ist, prüft die Endpunkteinheit, ob die Anforderungsadresse mit einem der Adressbereiche der vorgeschlagenen Zielfunktion übereinstimmt (Schritt 88). Wenn der Adressbereich der Zielfunktion positiv decodiert wurde, ist die Adressdecodierung validiert und abgeschlossen (Schritt 90). Wenn der Adressbereich nicht innerhalb der decodierten Funktionsadresse der Konfiguration liegt, kann der Einheitenendpunkt weitere Schritte unternehmen, einschließlich beispielsweise der Meldung eines Fehlers wegen falscher Verwendung von Zielfunktionsdaten oder wegen des Versuchs einer parallelen oder sequenziellen Adressdecodierung.
-
Angemerkt wird, dass es nicht entscheidend ist, wie der PCIe-Host die Zuordnung zwischen Adressbereich und Zielfunktionsdaten durchführt und wie die Zielfunktionsinformationen zu den Endpunkten übertragen werden. Bei einer Ausführungsform erzeugt der Auslöser der Anforderung (z. B. der PCIe-Host) während der Initialisierungsphase des PCIe-Busses eine Zuordnung zwischen PCIe-Adressbereichen und Zieleinheiten/-funktionen. Während dieser Initialisierungsphase durchsucht eine Host-Software alle PCIe-Einheiten und -funktionen, indem sie den Bedarf hinsichtlich ihrer Adressbereiche abfragt und anschließend Adressbereiche zuweist. Während dieser Phase wird im Host eine Tabelle mit Verknüpfungen zwischen Adressbereichen und Zielfunktionen aufgebaut. Diese Suchtabelle wird anschließend verwendet, um Anforderungen, die an PCIe-Endpunkte ausgegeben werden, Zielfunktionsattribute zuzuweisen.
-
Die Zielfunktionsdaten werden in einer beliebigen geeigneten Weise in die PCIe-Anforderung eingebettet, wobei nachstehend verschiedene mögliche Beispiele vorgestellt werden.
-
Bei einem ersten Schema sind vollständige Zielfunktionsdaten oder ein Teil davon in Bits des Kopfes der PCIe-Anforderung enthalten, die normalerweise reserviert sind. Bei einem zweiten Schema wird ein Mechanismus zur Erweiterung des PCIe-Kopfes verwendet, um Decodierdaten von Funktionen aufzunehmen. Bei einem dritten Schema sind Zielfunktionsdaten in Nutzdaten enthalten, wobei ein festgelegtes Kopffeld das Vorhandensein von Zieldaten in den Nutzdaten anzeigt. Bei einem vierten Schema werden ECRC-Metadaten (ECAC = End-to-End Cyclic Redundancy Check), die am Ende des Anforderungspakets enthalten sind, durch Zieldaten ersetzt.
-
Nachstehend folgt eine Beschreibung eines beispielhaften Verfahrens zum Aufbauen der Suchtabelle des Stammanschlusses und Ermitteln der Anzahl von Zielfunktionen. Bei einer Ausführungsform realisiert der Stammanschluss eine Suchtabelle mit fester Größe, die für eine Teilmenge von Adressbereichen mit kritischen Ansprüchen an die Latenz Umsetzungen zwischen Adressen und Funktionsanzahl enthält. Anforderungen bezüglich anderer Funktionen werden ohne Funktionsdecodierung gesendet. Zu beachten ist, dass dies zu höheren Latenzen bei der Verarbeitung führen kann, da der sequenzielle Decodierpfad durchlaufen wird.
-
Als Erstes durchsucht die Host-Software alle Konfigurationsräume von PCIe-Einheiten nach einem Bedarf hinsichtlich der Adressbereiche (z. B. nach der Anzahl von Bereichen jeder Einheit/Funktion und der Bereichsgröße). Zu beachten ist, dass dies normalerweise eine Standardverfahrensweise bei PCIe ist. Als Zweites erzeugt die Host-Software eine Speicherzuordnung, indem sie Einheiten/Funktionen Adressbereiche zuweist und Basisadresswerte in Konfigurationsräume von Funktionen schreibt. Als Drittes erzeugt die Host-Software, während PCIe-Bereiche zugewiesen werden, für alle PCIe-Bereiche eine vollständige Tabelle mit Zuordnungen zwischen Adressen und Funktionen, während PCIe-Bereiche zugewiesen werden. Diese Tabelle wird im Hauptspeicher gespeichert.
-
Als Nächstes initialisiert die Host-Software die Stammanschluss-Zuordnungstabelle mit den Zuordnungen zwischen Adresse und Funktionsanzahl für Funktionen mit kritischem Betriebsverhalten. Diese Tabelle kann während des laufenden Betriebs aktualisiert/neu geladen werden, um Änderungen von Systemanforderungen zu unterstützen. Als Nächstes kann die Stammanschluss-Zuordnungstabelle als lokaler Cache-Zwischenspeicher dienen. Wenn eine Anforderung zum Beispiel keine Funktionsinformationen in der Stammanschluss-Zuordnungstabelle findet, wird ihre Adresse erfasst, und die Softwareroutine wird aufgerufen, um zu ermitteln, ob die Verfügbarkeit einer Umsetzung für diese Art von Anforderung von entscheidender Bedeutung ist. Wenn die Software oder ein anderer Mechanismus entscheidet, dass eine Umsetzung benötigt wird, werden Funktionsinformationen aus der Zuordnungstabelle im Hauptspeicher abgerufen und in der lokalen Stammanschlusstabelle gespeichert. Bei einer vollen Tabelle kann einer der bestehenden Einträge gelöscht werden.
-
Bei einer Ausführungsform weist die Struktur der Einträge der Stammanschluss-Suchtabelle Folgendes auf: (1) ein Gültig-Bit; (2) die Basisadresse (z. B. bis zu 64 Bits); (3) eine Bereichsgröße, die systemabhängig ist und zur Anzeige des log2-Wertes der Bereichsgröße dient (wobei vorausgesetzt wird, dass Bereiche stets als Zweierpotenz angegeben sind); und (4) die Zielfunktionsinformationen (z. B. bis zu 16 Bits).
-
Die hierin verwendete Terminologie dient ausschließlich zur Beschreibung bestimmter Ausführungsformen und ist nicht als Einschränkung der Erfindung gedacht. Die im vorliegenden Dokument verwendeten Einzahlformen „ein/eine” und „der/die/das” schließen auch die Pluralformen ein, sofern dies im Kontext nicht ausdrücklich anderweitig angegeben ist. Es versteht sich des Weiteren, dass die Begriffe „weist auf” und/oder „aufweisend” bei Verwendung in der vorliegenden Beschreibung das Vorhandensein angegebener Merkmale, Ganzzahlen, Schritte, Abläufe, Operationen, Elemente und/oder Komponenten bezeichnen, aber das Vorhandensein oder die Hinzufügung eines bzw. einer oder mehrerer anderer Merkmale, Ganzzahlen, Schritte, Abläufe, Operationen, Elemente, Komponenten und/oder Gruppen davon nicht ausschließen.
-
Die entsprechenden Strukturen, Materialien, Aktionen und Äquivalente aller Mittel bzw. Schritt-plus-Funktion-Elemente (Step plus Function Elements) in den folgenden Ansprüchen sollen alle Strukturen, Materialien oder Aktionen zur Ausführung der Funktion in Verbindung mit anderen ausdrücklich beanspruchten Elementen mit einschließen. Die Beschreibung der vorliegenden Erfindung soll der Veranschaulichung und Beschreibung dienen, ist jedoch nicht als erschöpfend gedacht oder auf die Erfindung in der offenbarten Form beschränkt. Da für den Fachmann ohne Weiteres zahlreiche Modifikationen und Veränderungen denkbar sind, versteht es sich, dass die Erfindung nicht auf die begrenzte Anzahl von hierin beschriebenen Ausführungsformen beschränkt ist. Dementsprechend wird klar sein, dass alle vorgenommenen geeigneten Variationen, Modifikationen und Äquivalente in den Schutzbereich der vorliegenden Erfindung fallen. Die Ausführungsformen wurden ausgewählt und beschrieben, um die Grundgedanken und die praktische Anwendung der Erfindung auf bestmögliche Weise zu erklären und anderen Fachleuten das Verständnis für verschiedene Ausführungsformen mit verschiedenen Abänderungen für die betreffende betrachtete Verwendung zu ermöglichen.