DE102021107336A1 - VORRICHTUNGEN, SYSTEME, UND VERFAHREN FÜR PCIe ENDPUNKT INTERRUPT - Google Patents

VORRICHTUNGEN, SYSTEME, UND VERFAHREN FÜR PCIe ENDPUNKT INTERRUPT Download PDF

Info

Publication number
DE102021107336A1
DE102021107336A1 DE102021107336.7A DE102021107336A DE102021107336A1 DE 102021107336 A1 DE102021107336 A1 DE 102021107336A1 DE 102021107336 A DE102021107336 A DE 102021107336A DE 102021107336 A1 DE102021107336 A1 DE 102021107336A1
Authority
DE
Germany
Prior art keywords
pcie
interrupt
endpoint device
register
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021107336.7A
Other languages
English (en)
Inventor
Lin Li
Uli Kretzschmar
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE102021107336.7A priority Critical patent/DE102021107336A1/de
Priority to US17/701,892 priority patent/US20220318170A1/en
Publication of DE102021107336A1 publication Critical patent/DE102021107336A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

Die vorliegende Offenbarung stellt eine Peripher-Komponenten-Verbindungs-Express-(PCIe) -Steuerung für eine PCIe-Endpunktvorrichtung bereit. Die PCIe-Steuerung enthält:eine PCIe-Verbindungsschnittstelle, die konfiguriert ist, um eine Interrupt-Anforderungsnachricht zu empfangen, wobei die Interrupt-Anforderungsnachricht ein Nachrichtenschreibtransaktions-PCIe-Transport-Schicht-Paket (TLP), beinhaltend eine Adresse, die mit einer PCIe-Endpunktvorrichtung assoziiert ist, und einen Datenwert, der Interrupt-Information enthält, ist;ein Interrupt-Auslöseregister, das konfiguriert ist, den Datenwert zu empfangen;eine Mehrzahl von Interrupt-Leitungen; undeinen Decoderschaltkreis, der mit dem Interrupt-Auslöseregister und der Mehrzahl von Interrupt-Leitungen verbunden ist, der Decoderschaltkreis konfiguriert, um automatisch eine Mehrzahl von Datenbits des Datenwerts zu decodieren, wenn in dem Interrupt-Auslöseregister empfangen, und ein Interrupt-Signal zu erzeugen und das Interrupt-Signal auf einer aus der Mehrzahl von Interrupt-Leitungen einem Interrupt-Behandlungsschaltkreis bereitzustellen.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung betrifft Kommunikation zwischen PCIe-Vorrichtungen, z.B., auf Hochgeschwindigkeits-Niedriglatenz-Bild- oder Sensor-Datenkommunikationen in Echtzeit.
  • HINTERGRUND
  • Verschiedene Ausführungsformen betreffen im Allgemeinen das Gebiet der Hochgeschwindigkeits-Niedriglatenz-Kommunikationen in einem Netzwerk von PCIe-Vorrichtungen.
  • Figurenliste
  • In den Figuren der Zeichnungen werden durchweg identische oder ähnliche Komponenten mit den gleichen Bezugszeichen versehen. Die Figuren sind nicht notwendigerweise maßstabsgetreu gezeichnet. Verschiedene Aspekte der vorliegenden Offenbarung werden unten mittels verschiedener Ausführungsformen in Bezug auf die folgenden Zeichnungen erläutert.
    • 1 ist ein Blockdiagramm, das ein Beispiel eines Auslöseanforderungsmechanismus zum Unterstützen von Endpunkt-Interrupts gemäß verschiedenen Aspekten der vorliegenden Offenbarung darstellt.
    • 2 ist ein schematisches Diagramm, das eine detailliertere Ansicht der PCIe-Steuerung von 1 gemäß verschiedenen Aspekten darstellt.
    • 3 ist ein Diagramm, das eine Datenübertragungsblockstruktur eines Standard PCIe-Speicherschreibpakets gemäß verschiedenen Aspekten der vorliegenden Offenbarung darstellt.
    • 4 stellt eine Beispiel-PCIe-Topologie und wie Interrupt-Anforderungen zwischen mehreren PCIe-Vorrichtungen kommuniziert werden gemäß verschiedenen Aspekten der vorliegenden Offenbarung dar.
    • 5 ist ein Blockdiagramm, das Komponenten, gemäß einigen Beispielausführungsformen, die in der Lage sind, Instruktionen von einem maschinenlesbaren oder computerlesbaren Medium zu lesen (z.B. ein nichtflüchtiges maschinenlesbares Aufbewahrungsmedium) und irgendeine oder mehrere hierin erörterte Methodologien auszuführen, darstellt.
    • 6 ist ein Flussdiagramm eines Interrupt-Empfangsverfahrens einer PCIe-Steuerung gemäß verschiedenen Aspekten der vorliegenden Offenbarung.
    • 7 ist ein Flussdiagramm eines Interrupt-Signalisierungsverfahrens einer PCIe-Vorrichtung gemäß verschiedenen Aspekten der vorliegenden Offenbarung.
    • 8 ist ein Flussdiagramm eines Speicherplankonfigurationsverfahrens einer PCIe-Wurzelanlagenvorrichtung gemäß verschiedenen Aspekten der vorliegenden Offenbarung.
  • DETAILLIERTE BESCHREIBUNG
  • Die folgende detaillierte Beschreibung bezieht sich auf die begleitenden Zeichnungen, die im Wege der Veranschaulichung beispielhafte Details und Aspekte zeigen, durch die die vorliegende Offenbarung ausgeführt werden kann. Die gleichen Bezugsnummern können in unterschiedlichen Zeichnungen verwendet werden, um die gleichen oder ähnliche Elemente zu bezeichnen. In der folgenden Beschreibung, zu Zwecken der Erläuterung und nicht Beschränkung, werden spezifische Details wie beispielsweise bestimmte Strukturen, Architekturen, Schnittstellen, Techniken, usw. dargelegt, um ein gründliches Verständnis der verschiedenen Aspekte von verschiedenen Ausführungsformen zu unterstützen. Allerdings wird es für die in der Kunst Fachkundigen, die den Nutzen der vorliegenden Offenbarung haben, erkennbar sein, dass die verschiedenen Aspekte der verschiedenen Ausführungsformen in anderen Beispielen, die von diesen spezifischen Details abweichen, ausgeübt werden können. In bestimmten Fällen werden Beschreibungen bekannter Vorrichtungen, Schaltkreise und Verfahren ausgelassen, um die Beschreibung der verschiedenen Ausführungsformen nicht mit unnötigen Details zu verschleiern. Für die Zwecke des vorliegenden Dokuments bedeutet der Satz „A oder B“, (A), (B) oder (A und B).
  • Die PCIe- (Peripher-Komponenten-Verbindungs-Express) Bus-Architektur ist eine Hochgeschwindigkeits-Seriellschnittstelle, die breitflächig in PCs, Servern und mobilen Kommunikationsvorrichtungen eingesetzt wird. Der Hochleistungsbus kann verwendet werden, um periphere Vorrichtungen in Mobil-, Desktop-, Arbeitsstations-, Server-, Eingebettete-Computer- und Kommunikationsplattformen miteinander zu verbinden. Zum Beispiel verwenden einige autonome Fahrzeuge einen PCIe-Bus, um verschiedene Sensoren, die in Fahrzeugen montiert sind, zu verbinden. Die PCIe-Busarchitektur stellt Chip-zu-Chip-Verbindung und Platine-zu-Platine-Verbindung über Karten und Verbinder, die mit dem PCIe-Busprotokoll konform sind, bereit. Die PCIe-Busarchitektur ist unter Verwendung von switchbasierter Technology implementiert, um zwei oder mehr Vorrichtungen miteinander zu verbinden. Der PCIe-Bus enthält eine oder mehrere serielle Punkt-zu-Punkt-Verbindungen. Kommunikation über jede Verbindung ist basierend auf einem paketbasierten Transaktionskommunikationsprotokoll formatiert.
  • In einer konventionellen PCIe-Topologie kann eine PCIe-Hostvorrichtung (Wurzelanlage) mit vielen PCIe-Vorrichtungen (Endpunkten) über einen Switch oder eine Switchstruktur verbunden sein. Wenn eine Endpunktvorrichtung (z.B. Prozessor der Endpunktvorrichtung) Aufmerksamkeit (z.B., um eine Datenübertragung mit einer anderen Endpunktvorrichtung durchzuführen) von der Hostvorrichtung (z.B. Prozessor der Hostvorrichtung) anfordern muss, kann die Endpunktvorrichtung ihre PCIe-Steuerung veranlassen, einen Interrupt an die PCIe-Steuerung der Hostvorrichtung (z.B. Wurzelanlage) zu senden. Die PCIe-Busspezifikation stellt drei Interrupt-Mechanismen bereit, einschließlich Alt-Interrupt (INTx), Nachrichten-Signalisierter-Interrupt (MSI) und MSI-Erweiterter-Interrupt (MSI-X). Die Wurzelanlage enthält eine Interrupt-Steuerung, die für den Empfang von Interrupts verantwortlich ist, während die PCIe-Steuerungen der Endpunkte-Interrupt-Anforderungen aussenden. Daher muss in einer konventionellen PCIe-Topologie die Hostvorrichtung an der Koordinierung oder Vermittlung von Transaktionen zwischen Endpunktvorrichtungen beteiligt sein.
  • Heutzutage werden PCIe-Vorrichtungen wegen der hohen Nachfrage von Rechenleistung zunehmend intelligenter und komplizierter. Dieser Trend ereignet sich nicht nur bei den Wurzelanlagenvorrichtungen (z.B. Hostvorrichtungen), aber auch bei den Endpunktvorrichtungen (z.B. periphere Vorrichtungen). Viele Endpunktvorrichtungen sind SoC-Vorrichtungen, die die Fähigkeit haben, Interrupts von anderen PCIe-Vorrichtungen, die über den PCIe-Bus verbunden sind, zu verarbeiten. Allerdings wird Interrupt-Empfang durch Endpunktvorrichtungen durch die aktuelle PCIe-Spezifikation (z.B. PCIe 5.0) nicht unterstützt. Daher müssen Datenübertragungen zwischen PCIe-Endpunktvorrichtungen durch die unterbrechende Wurzelanlagenvorrichtung bewerkstelligt werden. Da Datenübertragungen von PCIe-Endpunkten an PCIe-Endpunkte (P2P) verbreitet verwendet werden, würde die Bereitstellung von Interrupt-Verarbeitung durch Endpunktvorrichtungen die Anzahl von Interrupts an die Wurzelanlagenvorrichtung reduzieren, wodurch die Latenz von Datenübertragungen reduziert würde, weil die Wurzelanlagenvorrichtung nicht notwendigerweise jedes Mal bei einer Datenübertragung zwischen Endpunkten unterbrochen wird, wenn Interrupts an Endpunkten unterstützt werden. Allerdings wurde eine Möglichkeit, um Interrupts von PCIe-Endpunkten in einer effizienten und zuverlässigen Weise (niedrige Latenz) auszulösen, die gleichzeitig kompatibel mit der existierenden PCIe-Busarchitektur ist, noch nicht gefunden.
  • Die vorliegende Offenbarung bietet eine Verbesserung des Interrupt-Systems gegenwärtiger PCIe-5.0-Spezifikation. Gemäß der PCIe-5.0-Spezifikation ist nur die Wurzelanlage (RC) konfiguriert, Interrupts zu empfangen. Die RC kann alle drei Typen von Interrupts, die die PCIe-Spezifikation bietet, einschließlich INTx-, MSI- und MSI-X-Interrupts, verarbeiten. Die Übermittlung von Interrupts an Endpunktvorrichtungen und der Empfang von Interrupts durch Endpunktvorrichtungen (EP) sind nicht durch die PCIe-Spezifikation definiert. Allerdings, da Endpunktvorrichtungen anfangen, mehr Echtzeitdaten zu verarbeiten, wird eine Notwendigkeit, Latenz für Datenübertragungen über eine PCIe-Busarchitektur zu verbessern, für wahrscheinlich gehalten. Endpunktvorrichtungen, die die Verarbeitungsfähigkeiten haben, mit Interrupts umzugehen, zu erlauben, Interrupts zu empfangen, kann Latenz reduzieren, weil es Endpunkt-zu-Endpunkt-Datenübertragungen ermöglichen würde, ohne die Wurzelanlage der Hostvorrichtung unterbrechen zu müssen.
  • Die vorliegende Offenbarung bietet eine neue Interruptrichtung zusätzlich zu der Interruptrichtung wie sie in der PCIe-5.0-Spezifikation definiert ist. Das heißt, eine PCIe-Endpunktvorrichtung kann zusätzlich zum Initiieren von Interrupts auch Interrupts empfangen. Dies ist möglich, weil die PCIe-Spezifikation die Übermittlung von Interrupts an eine Endpunktvorrichtung nicht betrachtet, weder von Wurzelanlage zu Endpunkt, noch von Endpunkt zu Endpunkt. Dementsprechend gibt es eine Gelegenheit, Wurzelanlagen-zu-Endpunkt-Interrupts und Endpunkt-zu-Endpunkt-Interrupts, die mit verschiedenen Versionen der PCIe-Spezifikation kompatibel wären, bereitzustellen.
  • Die vorliegende Offenbarung beschreibt Schaltungen und Verfahren, um ein PCIe-Endpunkt-Interrupt-System, das mit der PCIe-Busspezifikation rückwärtskompatibel ist, bereitzustellen. Beispielsweise, bietet diese Offenbarung Verfahren und/oder Schaltungen für eine Wurzelanlage einer Hostvorrichtung oder einer PCIe-Steuerung einer Endpunktvorrichtung, um Interrupts an eine PCIe-Endpunktvorrichtung zu formatieren und zu übermitteln und/oder Interrupts an einer PCIe-Endpunktvorrichtung zu empfangen und zu entnehmen. Diese Offenbarung beschreibt Verfahren für eine Wurzelanlage einer Hostvorrichtung, um Punkt-zu-Punkt-Interrupts zwischen zwei Endpunktvorrichtungen zu ermöglichen. Eine PCIe-Vorrichtung, einschließlich der Schaltung, und konfiguriert, um die hierin beschriebenen Verfahren auszuführen, kann mit bestehenden PCIe-Vorrichtungen interagieren.
  • Insbesondere beschreibt die vorliegende Offenbarung einen speziellen Rückwärtskompatibel-Mechanismus, der ein spezielles Interrupt-Auslöseanforderungsregister bereitstellt und verwendet, um bandinternen Interrupt-Nachrichtenempfang durch eine PCIe-Vorrichtung, die als ein Endpunkt konfiguriert ist, zu unterstützen. Das heißt, die vorliegende Offenbarung stellt einen Rückwärtskompatibel-Interrupt-Mechanismus bereit, der involviert, dass eine PCIe-Vorrichtung (z.B. den Interrupt-Initiator) eine bandinterne Interrupt-Anforderung an eine andere PCIe-Endpunktvorrichtung unter Verwendung eines Standard-PCIe-Pakets (z.B. MSI-, MSI-X- oder Nachrichten-Schreib-Anforderungs-(MWr) -Transaktions-Schicht-Paket (TLP)) sendet, um in das spezielle Auslöseanforderungsregister zum Interrupt-Signalisieren zu schreiben. Das Interrupt-Auslöseanforderungsregister kann nur in einer PCIe-Endpunktvorrichtung, die konfiguriert ist, um Interrupts von einer anderen PCIe-Endpunktvorrichtung zu empfangen, enthalten sein. Das Interrupt-Auslöseanforderungsregister braucht nicht in einer PCIe-Endpunktvorrichtung, die konfiguriert ist, um Interrupts an andere PCIe-Endpunktvorrichtungen zu übermitteln, enthalten sein.
  • Beispiele der vorliegenden Offenbarung beschreiben das Signalisieren zwischen zwei PCIe-Endpunkten, die eine effizientere Datenübertragung zwischen den zwei PCIe-Endpunkten ermöglichen. Beispiele der vorliegenden Offenbarung beschreiben auch Verfahren, die eine PCI-Endpunktvorrichtung befähigen, Interrupts zu empfangen und zu verarbeiten und jede PCIe-Vorrichtung befähigen, einen Interrupt an eine PCIe-Endpunktvorrichtung zu senden.
  • Eine Endpunktvorrichtung, die den Auslöseanforderungsmechanismus, um Interrupts zu empfangen, unterstützt, enthält eine Schaltung, um ein Standardspeicherschreibpaket oder -Datenübertragungsblock, einschließlich Interrupt-Information, z.B. einschließlich mindestens eines aus MSI, MSI-X und MWr-TLP, zu empfangen und verarbeiten. Der Auslöseanforderungsmechanismus wird durch Hinzufügen mindestens eines Interrupt-Auslöseanforderungsregisters zu der PCIe-Steuerung der Endpunktvorrichtung erreicht. Die Adresse des mindestens einen Auslöseanforderungsregisters befindet sich in dem der Endpunktvorrichtung zugewiesenen Speicherraum und kann durch Verwendung normaler PCIe-Speicherschreibanforderungen (z.B. MWr-TLP) erreichbar sein. Der Speicherraum der Endpunktvorrichtung kann basierend auf der Bereichsinformation des Basisadressenregisters (BAR) der Endpunktvorrichtung definiert werden, wie in der PCIe-5.0-Spezifikation spezifiziert ist. Der Auslöseanforderungsmechanismus ist kompatibel mit MSI- und MSI-X-Interrupt-Nachrichten, weil die Struktur eines MSI- oder MSI-X-Pakets die Gleiche wie die Struktur eines MWr-TLP-Pakets ist. Zum Beispiel kann das eine Anforderungsregister auch speicherzugeordnet sein, um auch für MSI- oder MSI-X-Pakete verfügbar zu sein. Alternativ können mehrere Interrupt-Auslöseanforderungsregister vorhanden sein. Zum Beispiel können drei dezidierte Register, einschließlich eines Interrupt-Auslöseanforderungsregisters für MWr-TLP-Pakete, eines Interrupt-Auslöseanforderungsregisters für MSI-Pakete und eines Interrupt-Auslöseanforderungsregisters für MSI-X-Pakete, vorhanden sein.
  • Die Anzahl von eingehenden Interrupts, die jedem internen Interrupt des Interrupt-Handlers der Endpunktvorrichtung zugeordnet sind, ist implementationsspezifisch. Es kann n-zu-m zugeordnet werden, wobei m und n ganze Zahlen und m kleiner oder gleich n ist. Das bedeutet, zum Beispiel, dass 32 eingehende Interrupts 32 internen Interrupts des Interrupt-Handlers zugeordnet sein können. Oder die Anzahl von eingehenden Interrupts kann durch eine ODER-Logik zusammengeführt werden, so dass die Anzahl von internen Interrupts an den Interrupt-Handler reduziert werden können.
  • Eine Hostvorrichtung kann den Speicherraum einer Endpunktvorrichtung zuweisen und konfigurieren, um Empfang von Speicherschreibpaketen (z.B. MWr-TLP, MSI, MSI-X) an dem mindestens einen Interrupt-Auslöseanforderungsregister zuzulassen. Zum Beispiel kann das mindestens eine Auslöseanforderungsregister einer jeweiligen Endpunktvorrichtung speicherzugeordnet sein, so dass es über die PCIe-Switchstruktur öffentlich zugänglich ist. Der Speicherraum, in dem sich das mindestens eine Auslöseanforderungsregister befindet, kann von einer entfernten Vorrichtung (z.B. einer anderen Endpunktvorrichtung) über ein Speicherschreibpaket zugänglich sein. In Bezug auf den Auslöseanforderungsmechanismus kann eine Hostvorrichtung mindestens eine Adresse einer jeweiligen Endpunktvorrichtung in einer Host-Speicherplantabelle konfigurieren, so dass die mindestens eine Adresse für den jeweiligen Endpunkt in der Host-Speicherplantabelle auf die Adresse des mindestens einen Auslöseanforderungsregisters der jeweiligen Endpunktvorrichtung zeigt. Für jede jeweilige Endpunktvorrichtung, die den Auslöseanforderungsmechanismus aufweist, kann die Hostvorrichtung eine jeweilige mindestens eine Adresse in der Host-Speicherplantabelle konfigurieren, um Interrupt-Nachrichten zu der jeweiligen Endpunktvorrichtung zu leiten. Dementsprechend kann eine Endpunktvorrichtung die Adresse des mindestens einen Auslöseanforderungsregisters einer anderen Endpunktvorrichtung kennen und in der Lage sein, den Auslöseanforderungsmechanismus zu nutzen, um einen Interrupt an der anderen Endpunktvorrichtung durch Übermitteln eines Speicherschreibpakets an das Auslöseanforderungsregister der anderen Endpunktvorrichtung und Schreiben eines in dem Speicherschreibpaket enthaltenen Datenwerts in das Auslöseanforderungsregister zu veranlassen, der Datenwert kann einem auszulösenden Interrupt-Signal entsprechen.
  • Sobald der Datenwert des Speicherschreibpakets durch das Auslöseanforderungsregister empfangen ist, basiert der Interrupt-Erzeugungsprozess nur auf der Hardwaredecodierungslogik und stellt daher eine vorhersehbare Interrupt-Latenz bereit, verglichen mit dem Auslösen von Interrupts über Bustransaktionen, bei denen sich die Latenz abhängig von der Buslast unterscheiden kann.
  • Die vorliegende Offenbarung stellt einen Interrupt-Auslöseanforderungsmechanismus bereit, der wesentliche Vorteile hat, weil es keine Notwendigkeit für spezielle Auswertungslogikschaltung und/oder Verfahren auf dem Vorrichtungslevel jeder PCIe-Endpunktvorrichtung zum Untersuchen oder Überwachen des Inhalts (z.B. Adresse und/oder Daten) von empfangenen Paketen für ein Interrupt-Signal gibt. Der bereitgestellte Auslöseanforderungsmechanismus erlaubt individuellen PCIe-Endpunktvorrichtungen, optional Interrupts zu empfangen, sogar wenn PCIe-Endpunktvorrichtungen im Allgemeinen agnostisch gegenüber dem Empfangen von Interrupts sind. Das heißt, PCIe-Endpunktvorrichtungen, die das Auslöseanforderungsregister haben, sind mit konventionellen PCIe-Endpunktvorrichtungen rückwärtskompatibel. Zum Beispiel können PCIe-Endpunktvorrichtungen, die das Auslöseanforderungsregister nicht haben, dennoch mit den PCIe-Endpunktvorrichtungen, die das Auslöseanforderungsregister haben, interagieren. Zusätzlich können PCI-Endpunktvorrichtungen, die das Auslöseanforderungsregister nicht haben, weiter konfiguriert sein, Interrupts mit nur einem Softwareupdate zu senden, sogar, wenn sie keine Interrupts empfangen können. Die vorliegende Offenbarung bestimmt, dass spezielle Auswertungslogik nur mit dem Auslöseanforderungsregister, das speziell zum Empfangen von Nachrichten, die als Interrupts interpretiert werden, angepasst ist, verbunden ist. Diesen Ansatz kann leicht ein CPU-Interrupt-Empfangs-und-Verarbeitungssystem in einer Endpunktvorrichtung aufnehmen. Zum Beispiel, nachdem ein Datenwert, der als eine bandinterne PCIe-Interrupt-Nachricht empfangen wurde, in das Auslöseanforderungsregister geschrieben wurde, konvertiert oder decodiert die Auswertungslogikschaltung, die in der PCIe-Steuerung bereitgestellt ist, automatisch den Datenwert in ein angefordertes Auslösungssignal und stellt das angeforderte Auslösungssignal auf einer entsprechenden aus einer Mehrzahl von Auslösungsleitungen einer konventionell konzipierten Interrupt-Routerschaltung oder Interrupt-Handlerschaltung zur Interrupt-Verarbeitung durch eine CPU einer Hostvorrichtung bereit.
  • 1 ist ein Blockdiagramm, das ein Beispiel eines Auslöseanforderungsmechanismus zum Unterstützen von Endpunkt-Interrupts gemäß verschiedenen Beispielen der vorliegenden Offenbarung darstellt. Der Auslöseanforderungsmechanismus involviert, dass eine PCIe-Vorrichtung, ein Paket, einschließlich Interrupt-Information, an eine PCIe-Endpunktvorrichtung, die ein Auslöseanforderungsregister aufweist, sendet.
  • Das Paket, einschließlich Interrupt-Information, kann ein Standardspeicherschreibpaket oder -datenblock sein und als irgendein anderes Standardspeicherschreibpaket oder -datenblock übermittelt werden. Ein Standardpaket oder -datenblock stellt eine vorrichtungsübergreifende Funktionalität und Rückwärtskompatibilität bereit. Zum Beispiel kann das Standardspeicherschreibpaket oder -datenblock, das eine Interrupt-Anforderung anzeigt, ein Speicher-Schreib-Anforderungs-TLP-Paket, das an ein Auslöseanforderungsregister der PCIe-Endpunktvorrichtung adressiert ist, sein. Das Standardspeicherschreibpaket oder -datenblock, das Interrupt-Information beinhaltet, kann auch ein Standard-MSI- oder -MSI-X-Paket sein und kann so übermittelt werden, wie irgendein anderes Standard-MSI- oder -MSI-X-Paket übermittelt werden würde, außer, dass es auch an eine PCIe-Endpunktvorrichtung adressiert sein kann. Zum Beispiel kann das MSI- oder MSI-X-Paket auch an ein Auslöseanforderungsregister der PCIe-Endpunktvorrichtung adressiert sein. Die MWr-TLP-, MSI- und MSI-X-Pakete haben die gleiche Struktur. Das Paket sollte nicht ein beliebiges Format haben.
  • Ein Auslöseanforderungsregister an der PCIe-Endpunktvorrichtung ist konfiguriert, um in einem speicherzugeordneten Speicherraum zu sein, und ist für direktes Schreiben zugänglich. Die PCIe-Endpunktvorrichtung kann Auswertungslogikschaltung, die mit dem Auslöseanforderungsregister, das automatisch den in das Auslöseanforderungsregister geschriebenen Inhalt decodiert, gekoppelt ist, enthalten. Das heißt, die Auswertungslogikschaltung decodiert nur den Inhalt eines Standardspeicherschreibpakets, das an das Auslöseanforderungsregister adressiert ist. Die Auswertungslogikschaltung muss nicht jedes Standardspeicherschreibpaket auf Interrupt-Information untersuchen oder überwachen.
  • Bezugnehmend auf 1, sind einfachheitshalber nur der Interrupt-Initiator und der Interrupt-Empfänger/Prozessor gezeigt. Zum Beispiel möchte eine Anwendung, die auf einer CPU 119 einer ersten PCIe-Vorrichtung 110 läuft, die Beachtung durch eine Anwendung, die auf einer CPU 129 einer zweiten PCIe-Vorrichtung 120 läuft, anfordern.
  • Wie in 1 gezeigt, initiiert die erste PCIe-Vorrichtung 110 eine Interrupt-Anforderung durch das Übermitteln eines Pakets 130 an die zweite PCIe-Vorrichtung 120. Das Paket 130 kann ein Standarschreibtransaktionsschichtpaket, das in der PCIe-Spezifikation definiert ist, sein. Das Paket 130 kann Interrupt-Auslöseinformation, die einen speziellen auszulösenden Interrupt der zweiten PCIe-Vorrichtung 120 identifiziert, beinhalten. Die erste PCIe-Vorrichtung kann eine Wurzelanlagenvorrichtung (z.B. eine Hostvorrichtung) oder eine Endpunktvorrichtung sein. Als der Interrupt-Initiator kann die erste PCIe-Vorrichtung 110 eine CPU/Prozessor 119 und eine PCIe-Steuerung 115 enthalten. Die CPU/Prozessor 119 kann ein Hauptprozessor der ersten PCIe-Vorrichtung 110 sein und kann konfiguriert sein, um die Interrupt-Anforderung, die in Paket 130 enthalten ist, zu erzeugen. Die PCIe-Steuerung 215 kann die gleiche Hardwareschaltung wie PCIe 5.0-konforme PCIe-Steuerungen haben, allerdings kann die PCIe-Steuerung 115 zusätzliche als Software implementierte Logik haben, um die Erzeugung eines Interrupts bei einer anderen Endpunktvorrichtung zu unterstützen. In einer Wurzelanlage kann auf die PCIe-Steuerung 115 als PCIe-Brücke verwiesen werden.
  • Die zweite PCIe-Vorrichtung 120 empfängt und verarbeitet die in Paket 130 enthaltene Interrupt-Anforderung. Die zweite PCIe-Vorrichtung 120 ist eine Endpunktvorrichtung. Als der Interrupt-Empfänger kann die zweite PCIe-Vorrichtung 120 eine CPU/Prozessor 129, eine Interrupt-Router- oder -Handler-Schaltung 127 und eine PCIe-Steuerung 125, die Auswertungslogikschaltung 123 aufweist, enthalten. Die PCIe-Steuerung 125 kann konfiguriert sein, die in Paket 130 enthaltene Interrupt-Anforderungsnachricht zu empfangen. Die PCIe-Steuerung 125 kann ein Interrupt-Auslöseanforderungsregister (nicht in 1 gezeigt) zum Speichern der in Paket 130 enthaltenen Interrupt-Auslöseinformation enthalten. Die Auswertungslogikschaltung 123 kann zum Decodieren der Interrupt-Auslöseinformation, die in das Interrupt-Auslöseanforderungsregister geschrieben ist, angepasst sein. Zum Beispiel kann die Auswertungslogikschaltung 123 die Interrupt-Auslöseinformation, die in das Interrupt-Auslöseanforderungsregister geschrieben ist, in ein Interrupt-Signal 121, das der Interrupt-Router- oder -Handler-Schaltung 127 bereitgestellt werden soll, konvertieren. Die Auswertungslogikschaltung 123 kann mit dem Interrupt-Auslöseanforderungsregister verbunden sein und konfiguriert sein, automatisch die in dem Interrupt-Auslöseanforderungsregister empfangene Interrupt-Auslöseinformation zu decodieren. Die Auswertungslogikschaltung 123 kann mit der Interrupt-Router- oder -Handler-Schaltung 127 über eine oder mehrere Interrupt-Leitungen, z.B. Hardwareleitungen, verbunden sein. Die Auswertungslogikschaltung kann Interrupt-Signal 121 der Interrupt-Router- oder -Handler-Schaltung 127 auf einer der Interrupt-Leitungen gemäß der decodierten Interrupt-Auslöseinformation bereitstellen. Die Interrupt-Router- oder -Handler-Schaltung 127 kann das jeweilige Interrupt-Signal auf einer ihrer festverdrahteten Interrupt-Leitungen empfangen und eine entsprechende Interrupt-Routine auf der zweiten PCIe-Vorrichtung initiieren. Die Interrupt-Router- oder -Handler-Schaltung 127 kann eine Speicherkontextänderung unterstützen, um die CPU/Prozessor 129 einzuplanen und vorzubereiten, um die Interrupt-Anforderung zu verarbeiten. Die CPU/Prozessor 129 kann ein Hauptprozessor der zweiten PCIe-Vorrichtung 120 sein und kann konfiguriert sein, um die in dem Paket 130 enthaltene Interrupt-Anforderung zu verarbeiten.
  • 2 ist ein schematisches Diagramm, das eine detailliertere Ansicht der PCI-Steuerung 225 von 1 gemäß verschiedenen Aspekten der vorliegenden Offenbarung darstellt. Wie in 2 gezeigt, ist eine PCIe-Vorrichtung 220 eine Endpunktvorrichtung, die konfiguriert ist, Interrupts zu empfangen und zu verarbeiten. Die PCIe-Endpunktvorrichtung 220 kann eine PCIe-Steuerung 225, die Auswertungslogikschaltung 223 aufweist, mindestens ein Interrupt-Auslöseanforderungsregister 260, Basis-Adressen-Register-Menge (BAR) 260, Speicherraum 240, eine Mehrzahl von Interrupt-Leitungen 221 und PCIe-Verbindungsschnittstelle 280 enthalten. Die PCIe-Verbindungsschnittstelle 280 enthält eine Punkt-zu-Punkt-PCIe-Busverbindung, die mit einer anderen PCIe-Vorrichtung 210 über einen PCIe-Switch oder -Struktur von PCIe-Switchen verbunden sein kann (in 2 nicht gezeigt).
  • Die andere PCIe-Vorrichtung 210 kann eine Hostvorrichtung oder andere Endpunktvorrichtung sein. Die PCIe-Verbindungsschnittstelle 280 enthält eine physische Schnittstelle zum Empfangen von Paket 230, das als differentielles Signal auf der physischen Schicht übermittelt wurde. Das Paket 230 kann ein Standard-PCIe-Speicherschreibtransaktionspaket (z.B. MWr-TLP- oder MSI/MSI-X-Paket), das einen Adressenwert und einen Datenwert enthält, sein. Der Adressenwert kann eine Adresse in einem PCIe-Speicherraum 240, der mit PCIe-Endpunktvorrichtung 220 assoziiert ist, sein. Der Datenwert kann Interrupt-Information zum Auslösen eines Interrupts zum Verarbeiten bei PCIe-Endpunktvorrichtung 220 enthalten. Die BAR-Registermenge 250 wird auch verwendet, um den zugewiesenen Speicherraum 240, der mit der zweiten PCIe-Vorrichtung assoziiert ist, zu definieren. Das Interrupt-Anforderungsregister 260 ist einer Stelle in dem PCIe-Speicherraum 240 zugeordnet und ist daher über normale PCIe-Speicher-Schreib- und -Lesevorgänge zugänglich.
  • 3 ist ein Diagramm, das eine Datenblockstruktur eines Standard-PCIe-Speicherschreibpakets 330 gemäß verschiedenen Aspekten der vorliegenden Offenbarung darstellt. Das Standard-PCIe-Speicherschreibpaket 330 kann verwendet werden, um einen Interrupt an eine PCIe-Endpunktvorrichtung zu signalisieren. Das Standard-PCIe-Speicherschreibpaket 330 kann ein Adressenfeld 331, ein Datenfeld 333, ein Anforderer-ID-Feld 335 und ein Typenfeld 337 enthalten. Zum Beispiel kann ein Standard-PCIe-Speicherschreibpaket 330, das von einer PCIe-Vorrichtung an eine PCIe-Endpunktvorrichtung gesendet wurde, um einen Interrupts an der PCIe-Endpunktvorrichtung auszulösen, in Adressenfeld 331 eine Adresse, die mit dem Interrupt-Auslöseanforderungsregister der PCIe-Endpunktvorrichtung assoziiert ist, und in Datenfeld 333 Interrupt-Information, die in das Interrupt-Auslöseanforderungsregister geschrieben werden soll, enthalten. Die Interrupt-Information kann Information, die ein besonderer auszulösender Interrupt (z.B. Interrupt-Index) identifiziert, sein. Das Paket 330 kann auch eine Anforderer-ID-Feld- 335 Information, die die zum Interrupt anfordernde PCIe-Vorrichtung identifiziert, und in Typenfeld 337 Information, die den Typ des Pakets identifiziert, enthalten. Zum Beispiel kann der Typ des Pakets ein MWr-TLP, MSI oder MSI-X sein.
  • Wieder bezugnehmend auf 2, zum Beispiel, kann die PCIe-Endpunktvorrichtung 220 nur ein Interrupt-Auslöseanforderungsregister, das konfiguriert ist, um einen Datenwert von einem MWr-TLP-, MSI- oder MSI-X-Paket zu empfangen, enthalten. Das heißt, wenn die PCIe-Vorrichtung 110, die einen Interrupt anfordert, eine Hostvorrichtung ist, kann das Paket 230 ein MWr-TLP-Paket, das an PCIe-Endpunktvorrichtung 220 gerichtet ist, sein. Das Paket 230 kann einen Adressenwert, der mit dem einen Interrupt-Auslöseanforderungsregister 260 assoziiert ist, und einen Datenwert, der einen bestimmten Host-Interrupt, der in das Interrupt-Auslöseanforderungsregister 260 geschrieben werden soll, identifiziert, enthalten. Wenn die PCIe-Vorrichtung 110, die einen Interrupt anfordert, eine Endpunktvorrichtung ist, kann das Paket 230 ein MSI- oder MSI-X-Paket, das an die PCIe-Endpunktvorrichtung 220 gerichtet ist, sein. Auf ähnliche Weise kann das Paket 230 auch einen Adressenwert, der mit dem einen Interrupt-Auslöseanforderungsregister 260 assoziiert ist, und einen Datenwert, der einen bestimmten Endpunkt-Interrupt, der in das Interrupt-Auslöseanforderungsregister 260 geschrieben werden soll, enthalten. Das einzelne Interrupt-Auslöseanforderungsregister 260 kann PCIe-Speicherraum 240 zugeordnet sein und zugänglich sein, um mit dem Datenwert, der in dem Paket 230 von entweder einer Hostvorrichtung oder einer anderen Endpunktvorrichtung enthalten ist, beschrieben zu werden. In einigen Ausführungsformen kann der Datenwert eine bestimmte Interrupt-Leitung einer jeweiligen PCIe-Vorrichtung zum Auslösen identifizieren und/oder die Identität des Interrupt-Anforderers. Zum Beispiel können Interrupt-Indizes 0-3 der Hostvorrichtung zugewiesen sein, Interrupt-Indizes 4-10 können einem Endpunkt zugewiesen sein und Interrupt-Indizes 11-20 können einem anderen Endpunkt zugewiesen sein, und so weiter. Dementsprechend, abhängig davon, welcher Interrupt-Index ausgelöst ist (d.h. durch den Datenwert des Pakets 330 bezeichnet), ist es möglich, zu wissen oder zu unterscheiden, welche PCIe-Vorrichtung einen Interrupt angefordert hat. Zum Beispiel, Interrupt-Index 0 von einer PCI-Vorrichtung und Interrupt-Index 4 von einer anderen PCIe-Vorrichtung können mit der gleichen Interrupt-Routine an der Endpunktvorrichtung, die die Interrupt-Nachricht empfängt, assoziiert sein. Wenn Indizes oder Mengen von Indizes mit einer bestimmten PCIe-Vorrichtung assoziiert sind, kann das Anforderer-ID-Feld 335 von Paket 330 leer oder weggelassen sein. Die Ermittlung und Zuweisung der Indizes kann durch die Hostvorrichtung ermöglicht werden und an die jeweiligen Endpunkte kommuniziert werden.
  • Alle Bits des Datenwerts, die in das Interrupt-Auslöseanforderungsregister 260 geschrieben sind, können verwendet werden, um einen bestimmten auszulösenden Interrupt zu identifizieren. In einigen Beispielen können nur einige der Bits des Datenwerts, die in das Interrupt-Auslöseanforderungsregister 260 geschrieben sind, verwendet werden, um einen bestimmten auszulösenden Interrupt zu identifizieren. Bezugnehmend auf 2, zum Beispiel, kann das Interrupt-Auslöseanforderungsregister 260 ein 5-Bit-Register sein, wobei Bits 0-4 des Datenwerts in Bits 0-4 des Interrupt-Auslöseanforderungsregisters 260 geschrieben werden können. Der Wert, der in das 5-Bit- Interrupt-Auslöseanforderungsregister 260 geschrieben ist, kann verwendet werden, um eine von 32 möglichen Interrupt-Leitungen zum Auslösen zu identifizieren. Die Größe der Interrupt-Auslöseanforderungsregister ist nicht begrenzt auf ein 5-Bit-Register. In anderen Beispielen kann das Interrupt-Auslöseanforderungsregister größer oder kleiner sein.
  • Zum Beispiel kann die Auswertungslogikschaltung 223 Decodierungslogikschaltung 271, die eine kombinatorische Logikschaltung enthalten kann, und die Bit-Steuerungslogikschaltung 273, die eine bitweise Steuerungslogikschaltung enthalten kann, enthalten. Die Auswertungslogikschaltung 223 kann die Information, die in das Interrupt-Auslöseanforderungsregister 260 geschrieben ist, verwenden, um eine Interrupt-Signalleitung 221 zu aktivieren und/oder deaktivieren.
  • Zum Beispiel kann die Decodierungslogikschaltung 271 eine oder mehrere Ausgabesignalleitungen von der Decodierungslogikschaltung 271 zu der Bitsteuerungslogikschaltung 273 aktivieren und/oder deaktivieren basierend auf der Information, die in dem Interrupt-Auslöseanforderungsregister 260 enthalten ist. In einigen Beispielen kann die Decodierungslogik 271 ein binärer (z.B. n-bis-zu 2n) Leitungsdecoder sein. Zum Beispiel, im Falle eines 5-Bit Interrupt-Auslöseanforderungsregister, kann die Decodierungslogik 271 einen 5-zu-32 Leitungsdecoder enthalten. Die Decodierungslogik 271 kann 5 Eingabesignalleitungen und 32 Ausgabesignalleitungen aufweisen. Die Decodierungslogik 271 kann eine 5-Bit-Binärzahl von dem Interrupt-Auslöseanforderungsregister 260 empfangen und die 5-Bit-Binärzahl in einen Indexwert, der durch den Wert der Binärzahl repräsentiert wird, decodieren. Die 32 Ausgabesignalleitungen können von 0 bis 31 indiziert sein. Basierend auf der decodierten Indexnummer kann die Decodierungslogik 271 die Ausgabesignalleitung, die der decodierten Indexnummer entspricht, aktivieren. Zum Beispiel, wenn das Interrupt-Auslöseanforderungsregister einen Wert von 0b00100 hat. Der Binärausdruck Ob00100 ist gleich 4, so dass die Ausgabesignalleitung von der Decodierungslogik mit dem Index 4 aktiv ist, während die anderen inaktiv sind. Die Decodierungslogik 271 ist nicht auf einen binären Leitungsdecoder eingeschränkt. In einigen Beispielen kann die Decodierungslogik 271 einen eins-zu-eins-Decoder enthalten.
  • Zum Beispiel kann die Bitsteuerungslogikschaltung 273 eine Interrupt-Signalleitung 221, die mit einem Interrupt-Handler 227 verbunden ist, aktivieren und/oder deaktivieren. Die Bitsteuerungslogikschaltung 273 kann Interrupt-Signalerzeugungssteuerungslogik enthalten. In einigen Beispielen, kann die Bitsteuerungslogik 273 Statusinformation von jedem der Ausgabesignale von der Decodierungslogikschaltung 271 enthalten und die Statusinformation verwenden, um die Erzeugung der Interrupt-Signale auf den Interrupt-Signalleitungen 221 zu steuern. Es kann eine Menge von Bits für jedes Ausgabesignal von der Decodierungslogikschaltung 271 geben. Jede Menge von Bits enthält ein Statusbit, ein Löschungsbit und ein Maskenbit. Das Statusbit kann bezeichnen, ob das jeweilige Ausgabesignal aktiv oder inaktiv ist. Das Maskenbit kann bezeichnen, ob ein jeweiliger logischer Interrupt erzeugt werden wird, wenn sich der Status von inaktiv zu aktiv ändert. Das Löschungsbit kann verwendet werden, um das Statusbit zu löschen. Zum Beispiel, wenn Anwendungssoftware (SW) in dem Interrupt-Handler 227 das Bearbeiten eines Interrupt-Signals beendet, kann das Löschungsbit durchgesetzt werden.
  • In einigen Beispielen können die logischen Interrupts den festverdrahteten Interrupts auf einer eins-zu-eins-Basis entsprechen. In einigen Beispielen kann die Auswertungslogikschaltung 223 eine oder mehrere ODER-Logikschaltungen 275 enthalten, um logische Interrupts in einem oder mehreren festverdrahteten Interrupts 221 zusammenzufassen.
  • Alternativ kann, in einigen Beispielen, eine PCIe-Endpunktvorrichtung, die konfiguriert ist, um Interrupts von einer anderen PCIe-Endpunktvorrichtung zu empfangen und zu verarbeiten, mehrere Interrupt-Auslöseanforderungsregister enthalten. Zum Beispiel, ein erstes Interrupt-Auslöseanforderungsregister 260a, ein zweites Interrupt-Auslöseanforderungsregister 260b und ein drittes Interrupt-Auslöseanforderungsregister 260c. Diese Register sind ähnlich zu dem Interrupt-Auslöseanforderungsregister 260. Das erste Interrupt-Auslöseanforderungsregister 260a kann konfiguriert sein, um MWr-TLP-Pakete, einschließlich Interrupt-Information, von der Hostvorrichtung und/oder einem anderen Endpunkt zu empfangen. Das zweite Interrupt-Auslöseanforderungsregister 260b kann konfiguriert sein, um MSI-Pakete, einschließlich Interrupt-Information, von einem anderen Endpunkt zu empfangen. Das dritte Interrupt-Auslöseanforderungsregister 260c kann konfiguriert sein, um MSI-X-Pakete, einschließlich Interrupt-Information, von einem anderen Endpunkt zu empfangen. Das heißt, das zweite Interrupt-Auslöseanforderungsregister 260b funktioniert als das MSI-Register und das dritte Interrupt-Auslöseanforderungsregister 260c funktioniert als das MSI-X-Register einer jeweiligen PCIe-Endpunktvorrichtung. Als solches können das MSI- und MSI-X-Register einer jeweiligen PCIe-Endpunktvorrichtung auch durch die Hostvorrichtung konfiguriert sein, um Stellen im PCIe-Speicherraum zugeordnet zu sein und demnach auch über Mechanismen für normale PCIe-Speicherschreibvorgänge und -Lesevorgänge zugänglich zu sein. Zum Beispiel ist ein MSI-Interrupt-Nachrichtenpaket im Wesentlichen eine Speicherschreibanforderung, die standardmäßig an das MSI-Register der jeweiligen Endpunktvorrichtung adressiert ist. Das MSI-Paket kann an ein zweites Interrupt-Auslöseanforderungsregister 260b, das PCIe-Speicherraum zugeordnet ist, adressiert sein und kann auf das Interrupt-Auslöseanforderungsregister 260b zugreifen, um den Datenwert des Pakets hineinzuschreiben. Das Paket 330 kann auch ein MSI-X-Paket sein und kann an ein drittes Interrupt-Auslöseanforderungsregister 260c, das PCIe-Speicherraum zugeordnet ist, adressiert sein und kann auf das dritte Interrupt-Auslöseanforderungsregister 260c zugreifen, um den Datenwert des Pakets hineinzuschreiben.
  • Eine PCIe-Endpunktvorrichtung, die konfiguriert ist, um Interrupts von einem anderen PCIe-Endpunkt zu empfangen und zu verarbeiten, kann eine Decodierungslogikschaltung, die einen Decoder für jedes des ersten, zweiten und dritten Interrupt-Auslöseanforderungsregisters enthält, aufweisen.
  • 4 stellt eine Beispiel-PCIe-Topologie und wie Interrupt-Anforderungen zwischen mehreren PCIe-Vorrichtungen kommuniziert werden dar. Bezugnehmend auf 4 ist die Wurzelanlage 450 in einer Hostvorrichtung der Topologie enthalten. PCIe-Endpunktvorrichtungen (z.B. Endpunkt 0, Endpunkt_1 und Endpunkt_2) können mit der Wurzelanlage 450 direkt über eine Punkt-zu-Punkt-PCIe-Seriellverbindung oder durch einen oder mehrere Switches 440 (z.B. Switchstruktur) über eine Reihe von Punkt-zu-Punkt-PCIe-Seriellverbindungen verbunden sein. Die PCIe-Topologie gemäß verschiedenen Aspekten der vorliegenden Offenbarung kann eine Wurzelanlagenvorrichtung, konventionelle PCIe-Endpunktvorrichtungen (z.B. Endpunkt 2), Endpunktvorrichtungen, die andere Endpunktvorrichtungen auslösen können, aber nicht ein Auslöse-Interrupt (z.B. Endpunkt 0) empfangen können, und Endpunktvorrichtungen, die andere Endpunktvorrichtungen auslösen können und Auslöse-Interrupts empfangen können (d.h. den Auslöseanforderungsmechanismus einschließen) (z.B. Endpunkt 1), enthalten. Wie in 4 gezeigt, können normale Interrupts nur zur Wurzelanlage gesendet werden. Konventionelle Endpunktvorrichtungen, z.B. Endpunkt_2 430, sind nicht in der Lage, Interrupts übereinstimmend mit PCIe-Spezifikationen zu empfangen. Rein softwaremodifizierte Endpunktvorrichtungen, z.B. Endpunkt 0 410, können konfiguriert sein, Interrupts an andere Endpunkte zu senden. Allerdings sind hardwaremodifizierte Endpunktvorrichtungen, z. B. Endpunkt_1 420, die den Auslöseanforderungsmechanismus unterstützen, fähig, Interrupts von anderen Endpunkten, z.B. Endpunkt 0 410, und von der Wurzelanlage 450 zu empfangen. Bezugnehmend auf 4, zum Beispiel, kann eine Interrupt-Anforderung von Endpunkt_0 an Endpunkt_1 über MSI- oder MSI-X-Pakete gesendet werden. Die Wurzelanlage kann auch eine Interrupt-Anforderung an Endpunkt_1 über ein Speicherschreib-MWr-TLP-Paket senden. Der Auslöseanforderungsmechanismus funktioniert als komplementärer und kompatibler Mechanismus zu der existierenden PCIe-Spezifikation, der die Synchronisation und Kommunikation mehrerer Vorrichtungen in einer PCIe-Topologie ermöglicht.
  • Ein beispielhafter speicherzugeordneter Raum der PCIe-Vorrichtungen der PCIe-Topologie von 4 wird nun mit Bezug auf Tabelle 1 beschrieben. Tabelle 1 ist ein Beispiel eines Systemspeicherraums (z.B. Speicherplan) der Wurzelanlage und Mehrzahl von Endpunkten mit variierenden Stufen von Endpunkt-Interrupt-Unterstützung. Der Systemspeicherraum enthält Speicherraum der Wurzelanlage und den Speicherräumen der Mehrzahl von Endpunkten basierend auf jeder Endpunktvorrichtung, die nur ein Interrupt-Auslöseanforderungsregister aufweist.
    Tabelle 1: Beispiel eines Systemspeicherraums (z.B. Speicherplan) (einzelnes Interrupt-Auslöseanforderungsregister)
    Adressraum der Hostvorrichtung (Systemspeicherraum) 0x0000_0000::0xFFFF_FFFF
    Basisadresse der Wurzelanlage (RC BA) z.B. 0x0000 - 0000
    RC-MSI-Auslöseregister RC BA + Offset für MSI-Auslöseregister (z.B. 0x0000 - 0000 + 0x20, d.h. 0x0000 - 0020)
    RC-MSI-X-Auslöseregister RC BA + Offset für MSI-X-Auslöseregister (z.B. 0x0000 - 0000 + 0x40, d.h. 0x0000 - 0040)
    Basisadresse von Endpunkt 0 (EP0-BA) (EP0 unterstützt Endpunkt-Interrupt-Signalisierung aber unterstützt nicht Endpunkt-Interrupt-Behandlung) z.B. 0x1000 - 0000
    Basisadresse von Endpunkt_1 (EP1-BA) (EP1 unterstützt Endpunkt-Interrupt-Signalisierung und -behandlung) z.B. 0x1020 0000
    EP1-Auslöseanforderungsregister (für MWr-TLP-, MSI- und MSI-X-Pakete) EP1 BA + Offset für Auslöseanforderungsregister (z.B. 0x1020_0000 + 0x60, d.h. 0x1020_0060)
    Basisadresse von Endpunkt 2 (EP2-BA) (EP2 unterstützt nicht Endpunkt-Interrupt-Signalisierung oder -behandlung) z.B. 0x1040 0000
  • Ein weiteres Beispiel von speicherzugeordnetem Raum der PCIe-Vorrichtungen der PCIe-Topologie von 4 wird nun mit Bezug auf Tabelle 2 beschrieben. Der Systemspeicherraum enthält Speicherraum der Wurzelanlage und die Speicherräume der Mehrzahl von Endpunkten basierend auf jeder Endpunktvorrichtung, die eine Mehrzahl von Interrupt-Auslöseanforderungsregistern aufweist.
    Tabelle 2: Beispiel eines Systemspeicherraums (z.B. Speicherplan) (mehrere Interrupt-Auslöseanforderungsregister)
    Adressraum der Hostvorrichtung (Systemspeicherraum) 0x0000 _0000::0xFFFF_FFFF
    Basisadresse der Wurzelanlage (RC-BA) z.B. 0x0000_0000
    RC-MSI-Auslöseregister RC BA + Offset für MSI-Auslöseregister (z.B. 0x0000_0000 + 0x20, d.h. 0x0000 _0020)
    RC-MSI-X-Auslöseregister RC BA + Offset für MSI-X-Auslöseregister (z.B. 0x0000_0000 + 0x40, d.h. 0x0000 _0040)
    Basisadresse von Endpunkt 0 (EP0-BA) (EP0 unterstützt Endpunkt-Interrupt-Signalisierung aber unterstützt nicht Endpunkt-Interrupt-Behandlung) z.B. 0x1000_0000
    Basisadresse von Endpunkt_1 (EP1-BA) (EP1 unterstützt Endpunkt-Interrupt-Signalisierung und -behandlung) z.B. 0x1020 0000
    EP 1 MSI-Auslöseanforderungsregister EP1 BA + Offset für MSI-Auslöseanforderungsregister (z.B. 0x1020_0000 + 0x20, d.h. 0x1020 _0020)
    EP 1 MSI-X-Auslöseanforderungsregister EP 1 BA + Offset für MSI-X-Auslöseanforderungsregister (z.B. 0x1020_0000 + 0x40, d.h. 0x1020 _0040)
    EP1 MWr-TLP-Auslöseanforderungsregister EP1 BA + Offset für MWr-TLP-Auslöseanforderungsregister (z.B. 0x1020_0000 + 0x60, d.h. 0x1020 _0060)
    Basisadresse von Endpunkt 2 (EP2-BA) (EP2 unterstützt nicht Endpunkt-Interrupt-Signalisierung oder -behandlung) z.B. 0x1040 0000
  • Die Hostvorrichtung konfiguriert den Systemspeicherplan. Wenn eine Endpunktvorrichtung (z.B. EP-X) anfangs mit einem PCIe-Bus verbunden wird, liest die Wurzelanlage (RC) Information, die in dem BAR-Register der Endpunktvorrichtung (z.B. EP-X) enthalten ist, und weist eine Basisadresse für die neu verbundene Endpunktvorrichtung (z.B. EP-X) basierend auf dieser Information zu. Die Basisadresse der Endpunktvorrichtung ist eine Adresse jenseits des eigentlichen Hostvorrichtungsspeichers. Zum Beispiel, wenn die Größe des Hostvorrichtungsspeichers 0x1000_0000 ist, ist die letzte Adresse des Hostvorrichtungsspeichers 0x0FFF_FFFF). Daher kann die Wurzelanlage den Endpunkten eine Adresse beginnend bei 0x1000_0000 zuweisen.
  • Die Information in dem BAR-Register einer Endpunktvorrichtung kann eine Größe des PCIe-Speicherraums, der durch die Endpunktvorrichtung angefordert ist, bezeichnen. Die Wurzelanlage kann einen Teil der Adressen in dem Systemspeicherraum für die Endpunktvorrichtung basierend auf der angeforderten Speichergrößeninformation in dem BAR-Register (z.B. 0x0020_0000) zuweisen. Wenn die angeforderte Größe durch den Endpunkt zu groß für das System ist, kann die Wurzelanlage (RC) ihre Funktion nicht erfüllen und nur zuweisen, was verfügbar ist. Zum Beispiel fordert EP 4GB an, aber die RC kann nur 2GB zuweisen.
  • Die Information in dem BAR-Register der Endpunktvorrichtung kann auch bezeichnen, wie PCIe-Speicherraum verschiedenen Endpunktregistern, die für den Betrieb von Interrupt-Empfang und -behandlung durch die Endpunktvorrichtung notwendig sind, zugewiesen werden. Zum Beispiel kann eine Endpunktvorrichtung, die den Auslöseanforderungsmechanismus unterstützt, auch ein einzelnes Auslöseanforderungsregister zum Empfangen von MWr-TLP-, MSI- und MSI-X-Interrupt-Anforderungspaketen oder eine Mehrzahl von Auslöseanforderungsregistern (z.B. ein MWr-TLP-Register, ein MSI-Register und ein MSI-X-Register) zum Empfangen jeweils von MWr-TLP-, MSI- und MSI-X-Interrupt-Anforderungspaketen enthalten. In einigen Beispielen kann das MSI-Register und das MSI-X-Register jeweils ein zweites Auslöseanforderungsregister und ein drittes Auslöseanforderungsregister sein, ähnlich zu dem Auslöseanforderungsregister für MWr-TLP. Adressen für Endpunktregister sind durch die Wurzelanlage während der Laufzeit konfiguriert. Zum Beispiel kann die Wurzelanlage PCIe-Speicherraum einem Register basierend auf Information in dem BAR-Register des Endpunkts, die eine Registerstelle basierend auf einem Offset relativ zu der Basisadresse des Endpunkts definiert, zuweisen. Jeder Offset entspricht dem wo das bestimmte Register gefunden und adressiert werden kann. Zum Beispiel, bezugnehmend auf Tabelle 1, wenn einer Endpunktvorrichtung (z.B. EP 1) mit einem Interrupt-Auslöseanforderungsregister eine Basisadresse von 0x1020_0000 zugewiesen ist und der Offset für das Auslöseanforderungsregister 0x60 ist, wäre 0x1020_0060 die Speicheradresse, unter der das Auslöseanforderungsregister zugänglich wäre. Zum Beispiel, bezugnehmend auf Tabelle 2, wenn einer Endpunktvorrichtung (z.B. EP 1) mit mehreren Interrupt-Auslöseanforderungsregistern eine Basisadresse von 0x1020_0000 zugewiesen ist und die Offsets für das MSI-Auslöseanforderungsregister, das MSI-X-Auslöseanforderungsregister und das MWr-TLP-Auslöseanforderungsregister jeweils 0x20, 0x40 und 0x60 sind, wären die Speicheradressen, unter denen diese Register zugänglich wären, jeweils 0x1020_0020, 0x1020_0040, and 0x1020 _0060.
  • In einem typischen Fall kann, sobald eine Basisadresse für eine Endpunktvorrichtung zugewiesen ist, die Lokalisierung von spezifischen Registern einer Endpunktvorrichtung automatisch behandelt werden. Zum Beispiel, kann das MWr-TLP - /MSI-/MSI-X-Paket einfach an die Basisadresse der Endpunktvorrichtung adressiert werden. In Beispielen, in denen die Endpunktvorrichtung nur ein Auslöseanforderungsregister aufweist, kann, sobald das MWr-TLP-/MSI-/MSI-X-Paket an der Adresse der adressierten Endpunktvorrichtung eintrifft, die PCIe-Steuerung der Endpunktvorrichtung ermitteln, dass das Paket ein MWr-TLP-/MSI-/MSI-X-Paket ist und kann den Datenwert des MWr-TLP/MSI/MSI-X in das Auslöseanforderungsregister schreiben, weil der Offset des Auslöseanforderungsregisters vordefiniert ist. In Beispielen, in denen die Endpunktvorrichtung eine Mehrzahl von Auslöseanforderungsregistern aufweist, kann, sobald das MWr-TLP-/MSI-/MSI-X-Paket an der Adresse der adressierten Endpunktvorrichtung eintrifft, die PCIe-Steuerung der Endpunktvorrichtung ermitteln, dass das Paket ein MWr-TLP-/MSI-/MSI-X-Paket ist und kann den Datenwert des MWr-TLP/MSI/MSI-X in das jeweilige MWr-TLP-/MSI-/MSI-X-Auslöseanforderungsregister schreiben, weil die Offsets des Auslöseanforderungsregisters vordefiniert sind.
  • Normale MSI-Interrupts von EP 0 an RC.
  • In dem Fall eines Interrupts von einem Endpunkt an eine Wurzelanlage, zum Beispiel, EP 0 an RC, kann eine normale MSI-Interrupt-Nachricht verwendet werden. Zum Beispiel kann EP 0 410 ein normales MSI-Paket 480 an die RC 450 gemäß der PCIe-Spezifikation senden. Das MSI-Paket 480 kann an die Basisadresse der RC (z.B. 0x0000_0000) adressiert sein und der Datenwert kann Information, die einen oder mehrere (z.B. 1 bis 32) mögliche Interrupts, die durch die CPU der RC bedient werden können, identifiziert, enthalten. Die RC kann das MSI-Paket empfangen und ermitteln, welche Interrupt-Dienstroutine die CPU ausführen muss. Die RC kann die CPU für einen Kontextwechsel und Bedienung der Interrupt-Anforderung vorbereiten. Alternativ kann das MSI-Paket 480 an das MSI-Auslöseregister der RC (z.B. 0x0000_0020) adressiert sein.
  • Spezielle MSI-Interrupts von EP 0 an EP 1
  • In dem Fall eines Interrupts von einem ersten Endpunkt an einen zweiten Endpunkt, zum Beispiel EP 0 an EP 1, kann ein speziell adressierter MSI-Interrupt verwendet werden. Zum Beispiel kann das MSI-Paket an ein Auslöseanforderungsregister von EP 1 adressiert sein und Identifizierungsinformation entsprechend einem aus einer Mehrzahl von möglichen Interrupts, die durch EP 1 bedient werden können, enthalten. Zum Beispiel kann EP 0 410 ein speziell adressiertes MSI-Paket 485a, das an EP 1 adressiert ist, senden. Damit EP 0 410 das speziell adressierte MSI-Paket 485a für EP1 420 vorbereiten kann, muss EP 0 410 die Adresse von EP 1 420 erhalten.
  • In diesem Zusammenhang muss eine RC zusätzlich zum Führen eines Speicherplans von Systemspeicherraum jeder hinzugefügten Endpunktvorrichtung auch Information, die angibt, ob eine bestimmte Endpunktvorrichtung EP- Interrupt-Bedienung unterstützt, führen. Die RC kann dann diese Information den Endpunkten, die mindestens Interrupt-Signalisierung an einen anderen Endpunkt unterstützen, bereitstellen. In diesem Fall kann EP 0 die Basisadresse von EP 1 kennen und EP 0 kann EP 1 ein MSI-Paket senden, um einen Datentransfer zwischen EP0 und EP 1 zu arrangieren, ohne die RC unterbrechen zu müssen. Zum Beispiel kann EP 0 korrekt auf EP1 zugreifen, basierend auf der bereitgestellten Basisadresse von EP 1 und den vordefinierten Offsets von mindestens einem Interrupt-Auslöseanforderungsregister von der Basisadresse einer Endpunktvorrichtung. Alternativ kann das MSI-Paket 480 direkt an das Interrupt-Auslöseanforderungsregister von EP 1 zum Empfangen von MSI-Paketen (z.B. 0x1020_0060 oder Ox1020 0020) adressiert sein.
  • Spezielle MWr-TLP-Interrupts von RC an EP 1
  • In dem Fall eines Interrupts von einer Wurzelanlage an einen Endpunkt, zum Beispiel RC an EP 1, wird eine spezielle Interrupt-Nachricht verwendet. Die spezielle Interrupt-Nachricht 485b kann eine normale PCIe-Speicherschreibanforderungsnachricht (MWr-TLP) sein. Da die RC die Basisadresse von jedem Endpunkt kennt und der Offset für das Auslöseanforderungsregister vordefiniert ist, kann die spezielle Interrupt-Nachricht ein MWr-TLP-Paket, das direkt an das Auslöseanforderungsregister des Zielendpunkts adressiert ist, sein. Wenn eine Endpunktvorrichtung die spezielle Interrupt-Nachricht empfängt, schreibt sie den Datenwert auf die bezeichnete Adresse. Zum Beispiel kann das MWr-TLP-Paket an das Auslöseanforderungsregister von EP 1 (z.B. 0x1020_0060) adressiert sein und Identifizierungsinformation entsprechend einer aus einer Mehrzahl von möglichen Interrupts, die durch EP 1 bedient werden können, enthalten. Bei EP1 wird das MWr-TLP-Paket wie jedes andere MWr-TLP-Paket behandelt. Das heißt, der Datenwert, der darin enthalten ist, wird in Speicherraum an der darin bezeichneten Adresse geschrieben. Die Wurzelanlage muss eine MWr-TLP-Nachricht verwenden, weil die PCIe-Spezifikation MSI-/MSI-X-Interrupt-Nachrichten für Wurzelanlagen nicht bereitstellt.
  • Alternativ, zum Beispiel für Einheitlichkeit, kann die RC ein MWr-TLP, das wie eine MSI-Interrupt-Nachricht formatiert ist, senden. Das heißt, das MWr-TLP kann in einer Weise, die ähnlich zu der Struktur einer MSI-Interrupt-Nachricht ist, formatiert sein. Zum Beispiel kann es einen Datenwert, der einen aus einer Mehrzahl von möglichen Interrupts, die von der Endpunktvorrichtung bedient werden können, identifiziert, enthalten, an die Basisadresse der PCIe-Vorrichtung, die die Interrupt-Nachricht verarbeitet, adressiert sein und ein Extrafeld, das bezeichnet, dass es ein Auslöseanforderungspaket ist, enthalten, um sich von einem allgemeinen Paket zu unterscheiden. Wenn eine PCIe-Steuerung ein Speicherschreibanforderungspaket empfängt, muss sie ermitteln, ob es ein Auslöseanforderungspaket ist. Wenn es ein Auslöseanforderungspaket ist, kann es das Auslöseanforderungsregister in einer Weise, die ähnlich zu einer Hostvorrichtung, die ein MSI-/MSI-X-Register einer RC identifiziert, ist, lokalisieren. Zum Beispiel kann die RC eine MWr-TLP-basierende Interrupt-Nachricht 485b, die an die Basisadresse von EP 1 adressiert ist, erzeugen und ein Kennzeichen, das es eine Auslöseanforderungs-Interrupt-Schreibanforderung ist, enthalten. EP 1 kann ermitteln, dass das MWr-TLP-Paket eine Auslöseanforderungs-Interrupt-Schreibanforderung ist, und kann das Auslöseanforderungsregister basierend auf vordefinierten Offsets des Auslöseanforderungsregisters von der Basisadresse der Endpunktvorrichtung lokalisieren und den empfangenen Datenwert in das Auslöseanforderungsregister schreiben.
  • Alternativ, zum Beispiel zu Zwecken spezieller Interrupt-Behandlung, kann die RC eine separate Speichertabelle, die für jeden Endpunkt mit spezieller Interrupt-Behandlung einen Adressenzeiger auf das einzelne Auslöseanforderungsregister oder auf das separate MWr-TLP-Auslöseanforderungsregister, MSI-Auslöseanforderungsregister und MSI-X-Auslöseanforderungsregister der bestimmten Endpunktvorrichtung enthalten kann, führen.
  • Verarbeitung von Interrupt-Nachrichten
  • Wenn ein Endpunkt eine Interrupt-Nachricht (z.B. MWr-TLP, MSI, MSI-X) empfängt, kann der Endpunkt die Interrupt-Nachricht auf eine hierin mit Bezug auf die Auswertungslogikschaltung beschriebene Weise decodieren. Wenn der Endpunkt bestimmt, welche aus einer Mehrzahl von Interrupt-Leitungen (z.B. 16) signalisiert ist, kann er der Interrupt-Routinenbehandlungsschaltung signalisieren.
  • Zusätzlich oder alternativ, wenn ein Endpunkt eine Interrupt-Anforderungsnachricht (z.B. MWr-TLP, MSI, MSI-X) empfängt, kann der Endpunkt die Interrupt-Anforderungsnachricht auf eine Weise, die ähnlich dazu ist, wie eine Wurzelanlage eine MSI-Interrupt-Nachricht gemäß der PCIe-Spezifikation behandeln würde, behandeln. Der Endpunkt würde dann ermitteln, welche bestimmte aus einer Mehrzahl von Interrupt-Leitungen (z.B. 32) signalisiert ist und der Interrupt-Routinenbehandlungsschaltung signalisieren.
  • Die Vorteile der vorliegenden Offenbarung beinhalten Einfachheit der Implementation, Kompatibilität mit allen PCIe-Vorrichtungen und erfordern keine Hardwareänderungen an PCIe-Vorrichtungen, die nur Interrupts auslösen wollen. Der Auslöseanforderungsmechanismus ist einfach zu implementieren, weil er nur ein einzelnes Register und etwas kombinatorische Logik erfordert. Der Auslöseanforderungsmechanismus ist für alle PCIe-Vorrichtungen verwendbar, da die Funktionalität dem PCIe-Speicherraum zugeordnet ist. Der Auslöseanforderungsmechanismus ist optional und würde nur zusätzliche Hardware in PCIe-Vorrichtungen, die anstreben, Endpunkt-Interrupt-Empfang und -verarbeitung bereitzustellen, erfordern. Keine zusätzliche Hardware wird für eine RC oder EP, die nur Interrupts in einem EP mit dem Auslöseanforderungsmechanismus auslösen will, benötigt. Nur Softwaremodifikationen würden benötigt. Der Auslöseanforderungsmechanismus ist mit existierenden PCIe-Mechanismen kongruent und ist in der Lage, Endpunkt-Interrupt-Empfang durch Wiederverwendung verschiedener bestehender PCIe-Mechanismen bereitzustellen. Zum Beispiel basiert er auf einer Erweiterung und Neuzuordnung existierender PCIe-Mechanismen, um eine vollständig neue Funktion zu erreichen. Diese Kongruenz macht die Erfindung einfach zu benutzen und zu verstehen.
  • 6 ist ein Flussdiagramm eines Interrupt-Empfangsverfahrens 600 einer PCIe-Steuerung gemäß verschiedenen Aspekten der vorliegenden Offenbarung. Bei 610 kann eine PCIe-Steuerung von einer PCIe-Verbindungsschnittstelle eine Interrupt-Anforderungsnachricht empfangen, wobei die Interrupt-Anforderungsnachricht ein Nachrichtenschreibtransaktions-PCIe-Transport-Schicht-Paket (TLP), beinhaltend eine Adresse, die mit der PCIe-Endpunktvorrichtung assoziiert ist, und einen Datenwert, ist. Bei 620 kann die PCIe-Steuerung den Datenwert in ein Interrupt-Auslöseanforderungsregister, das mit der PCIe-Endpunktvorrichtung assoziiert ist, empfangen. Bei 630 kann die PCIe-Steuerung eine Mehrzahl von Datenbits des Datenwerts, der in dem Interrupt-Auslöseanforderungsregister empfangen wurde, decodieren und ein Interrupt-Signal auf einer aus einer Mehrzahl von Interrupt-Leitungen an einen Interrupt-Verarbeitungsschaltkreis erzeugen.
  • 7 ist ein Flussdiagramm eines Interrupt-Signalisierungsverfahrens 700 einer PCIe-Vorrichtung gemäß verschiedenen Aspekten der vorliegenden Offenbarung. Bei 710 erzeugt die PCIe-Vorrichtung durch einen Prozessor eine Interrupt-Anforderungsnachricht an eine PCIe-Endpunktvorrichtung, wobei die Interrupt-Anforderungsnachricht ein Nachrichtenschreibtransaktions-PCIe-Transport-Schicht-Paket (TLP), beinhaltend eine Adresse, die mit der PCIe-Endpunktvorrichtung assoziiert ist, und einen Datenwert, der in ein Interrupt-Auslöseregister der PCIe-Endpunktvorrichtung geschrieben werden soll, ist. Bei 720 übermittelt die PCIe-Vorrichtung über eine PCIe-Verbindungsschnittstelle die Interrupt-Anforderungsnachricht an die PCIe-Endpunktvorrichtung.
  • 8 ist ein Flussdiagramm eines Speicherplankonfigurationsverfahrens 800 einer PCIe-Wurzelanlagenvorrichtung gemäß verschiedenen Aspekten der vorliegenden Offenbarung. Bei 810 identifiziert die PCIe-Wurzelanlagenvorrichtung jede der PCIe-Endpunktvorrichtungen auf dem Bus. Bei 820 erzeugt die PCIe-Wurzelanlagenvorrichtung für jede PCIe-Endpunktvorrichtung eine Konfigurationsnachricht, um Information über einen speicherzugeordneten Adressenraum, der mit der jeweiligen PCIe-Endpunktvorrichtung assoziiert ist, von einem Basisregister einer jeweiligen PCI-Endpunktvorrichtung zu erhalten. Bei 830 übermittelt die PCIe-Wurzelanlagenvorrichtung an jede PCIe-Endpunktvorrichtung die Konfigurationsnachricht über eine PCIe-Verbindungsschnittstelle. Bei 840 reserviert die PCIe-Wurzelanlagenvorrichtung für jede PCIe-Endpunktvorrichtung einen jeweiligen Bereich eines Systemadressenraums für den speicherzugeordneten Adressenraum, der mit jeder jeweiligen PCIe-Endpunktvorrichtung assoziiert ist. Bei 850 ermittelt die PCIe-Wurzelanlagenvorrichtung für jede PCIe-Endpunktvorrichtung, ob die jeweilige PCIe-Endpunktvorrichtung ein jeweiliges Auslöseanforderungsregister enthält. Bei 860 assoziiert die PCIe-Endpunktvorrichtung für jede PCIe-Endpunktvorrichtung, die ein jeweiliges Auslöseanforderungsregister aufweist, eine jeweilige Adresse in genanntem jeweiligem Bereich von Systemadressenraum mit der jeweiligen PCIe-Endpunktvorrichtung, wobei die jeweilige Adresse einem jeweiligen Auslöseanforderungsregister der jeweiligen PCIe-Endpunktvorrichtung entspricht.
  • 5 ist ein Blockdiagramm, das Komponenten, gemäß einigen Ausführungsformen, die in der Lage sind, Instruktionen von einem maschinenlesbaren oder computerlesbaren Medium (z.B. einem nichtflüchtigen maschinenlesbaren Aufbewahrungsmedium) zu lesen und irgendeine oder mehrere der hierin diskutierten Methodologien auszuführen, darstellt. Spezifisch zeigt 5 eine diagrammatische Darstellung von Hardware-Ressourcen 500, einschließlich eines oder mehrerer Prozessoren (oder Prozessorkerne) 510, einer oder mehrerer Speicher-/Aufbewahrungsvorrichtungen 520 und einer oder mehrerer PCIe-Ressourcen 530. Die einen oder mehreren Prozessoren 510 können kommunikativ mit der einen oder mehreren PCIe-Ressourcen 530 über PCIe-Bus 540 gekoppelt sein.
  • Die Prozessoren 510 können, zum Beispiel, einen Prozessor 512 und einen Prozessor 514 enthalten. Die Prozessor(en) 519 können, zum Beispiel, eine Zentralverarbeitungseinheit (CPU), einen Reduzierter-Instruktionssatz-Berechnungs- (RISC) Prozessor, einen Komplexer-Instruktionssatz-Berechnungs- (CISC) Prozessor, eine Graphikberechnungseinheit (GPU), einen DSP, wie beispielsweise einen Basisbandprozessor, einen ASIC, einen FPGA, einen Funkfrequenz-Integrierten-Schaltkreis (RFIC), einen anderen Prozessor (einschließlich die hierin diskutierten) oder irgendeine geeignete Kombination davon enthalten.
  • Die Speicher-/Aufbewahrungsvorrichtungen 520 können Hauptspeicher, Plattenspeicher oder irgendeine geeignete Kombination davon enthalten. Die Speicher-/Aufbewahrungsvorrichtungen 520 können enthalten, aber sind nicht beschränkt auf, irgendeine Art von flüchtigem oder nichtflüchtigem Speicher wie beispielsweise Dynamischer-Vielfachzugriffspeicher (DRAM), Statischer-Vielfachzugriffspeicher (SRAM), Löschbar-Programmierbar-Schreibgeschützter-Speicher (EEPROM), Flashspeicher, Festkörperspeicher, usw.
  • Die PCIe-Ressourcen 530 können Verbindungs- oder Netzwerkschnittstellen-Komponenten oder andere geeignete Vorrichtungen mit einer oder mehreren peripheren Vorrichtungen 504 oder einer oder mehreren Datenbanken 506 über ein Netzwerk 508 enthalten.
  • Instruktionen 550 können Software, ein Programm, eine Anwendung, ein Applet, eine App oder anderen ausführbaren Code zum Veranlassen mindestens eines Prozessors 510 enthalten, um irgendeine oder mehrere der hierin diskutierten Methodologien auszuführen. Die Instruktionen 550 können sich vollständig oder teilweise innerhalb mindestens eines Prozessors 510 (z.B. innerhalb des Prozessors Cache-Speichers), den Speicher-/Aufbewahrungsvorrichtungen 520 oder irgendeiner geeigneten Kombination davon befinden. Weiterhin können irgendwelche Teile der Instruktionen 550 auf die Hardwareressourcen 500 von irgendeiner Kombination von peripheren Vorrichtungen 504 oder den Datenbanken 506 übertragen werden. Dementsprechend sind der Speicher der Prozessoren 510, die Speicher-/Aufbewahrungsvorrichtungen 520, die peripheren Vorrichtungen 504 und die Datenbanken 506 Beispiele von computerlesbaren und maschinenlesbaren Medien.
  • Für eine oder mehrere Ausführungsformen kann mindestens eine der Komponenten, die in einer oder mehreren der vorangehenden Figuren dargelegt sind, konfiguriert sein, um eine oder mehrere Vorgänge, Techniken, Prozesse und/oder Verfahren, wie sie in den Beispielabschnitten unten dargelegt sind, auszuführen. Zum Beispiel kann die Basisbandschaltung, wie oben in Verbindung mit einer oder mehreren der vorangehenden Figuren beschrieben, konfiguriert sein, um gemäß einer oder mehreren der Beispiele, die unten dargelegt sind, zu arbeiten. Für ein anderes Beispiel kann Schaltung, die mit einem UE, Basisstation, Netzwerkelement, usw., wie oben in Verbindung mit einer oder mehreren der vorangehenden Figuren beschrieben, konfiguriert sein, um gemäß einem oder mehreren der Beispiele, die unten in dem Beispielabschnitt dargelegt sind, zu arbeiten.
  • BEISPIELE
  • Beispiel 1 ist eine Peripher-Komponenten-Verbindungs-Express- (PCIe) -Steuerung für eine PCIe-Endpunktvorrichtung, die PCIe-Steuerung enthält: eine PCIe-Verbindungsschnittstelle, die konfiguriert ist, um eine Interrupt-Anforderungsnachricht zu empfangen, wobei die Interrupt-Anforderungsnachricht ein Nachrichtenschreibtransaktions-PCIe-Transport-Schicht-Paket (TLP), beinhaltend eine Adresse, die mit einer PCIe-Endpunktvorrichtung assoziiert ist, und einen Datenwert, der Interrupt-Information enthält, ist; ein Interrupt-Auslöseregister, das konfiguriert ist, den Datenwert zu empfangen; eine Mehrzahl von Interrupt-Leitungen; und einen Decoderschaltkreis, der mit dem Interrupt-Auslöseregister und der Mehrzahl von Interrupt-Leitungen verbunden ist, der Decoderschaltkreis konfiguriert, um automatisch eine Mehrzahl von Datenbits des Datenwerts zu decodieren, wenn in dem Interrupt-Auslöseregister empfangen, und ein Interrupt-Signal zu erzeugen und das Interrupt-Signal auf einer aus der Mehrzahl von Interrupt-Leitungen einem Interrupt-Behandlungsschaltkreis bereitzustellen.
  • Beispiel 2 kann die PCIe-Steuerung von Beispiel 1 enthalten, wobei das Interrupt-Auslöseregister konfiguriert ist, um in beschreibbarem Speicherraum zu sein und eine Adresse in einem speicherzugeordnetem Adressenraum, der mit der PCIe-Endpunktvorrichtung assoziiert ist, aufzuweisen.
  • Beispiel 3 kann die PCIe-Steuerung von Beispiel 2 enthalten, wobei die Interrupt-Information einen Interrupt-Index, der eine aus der Mehrzahl von Interrupt-Leitungen einer jeweiligen PCIe-Endpunktvorrichtung zum Auslösen identifiziert.
  • Beispiel 4 kann die PCIe-Steuerung von Beispiel 3 enthalten, wobei der Interrupt-Index auch eine PCIe-Vorrichtung, die die Interrupt-Anforderungsnachricht sendet, identifiziert.
  • Beispiel 5 kann die PCIe-Steuerung von irgendeinem der Beispiele 1 bis 4 enthalten, wobei das Interrupt-Auslöseregister ein Auslöseanforderungsregister ist.
  • Beispiel 6 kann die PCIe-Steuerung von irgendeinem der Beispiele 1 bis 5 enthalten, wobei der Decoderschaltkreis einen kombinatorischen Logikschaltkreis und/oder einen bitweisen Steuerungslogikschaltkreis enthält.
  • Beispiel 7 kann die PCI-Steuerung von irgendeinem der Beispiele 1 bis 6 enthalten, weiter beinhaltend ein Basisadressenregister, das konfiguriert ist, um den speicherzugeordneten Adressenraum, der mit der PCIe-Endpunktvorrichtung assoziiert ist, zu definieren.
  • Beispiel 8 kann die PCIe-Steuerung von Beispiel 7 enthalten, wobei das Basisadressenregister Information über eine Größe des speicherzugeordneten Adressenspeicherraums oder Information über eine Basisadresse des speicherzugeordneten Adressenraums enthält, und wobei der speicherzugeordnete Adressenraum ein Teil eines Systemspeicheradressenraums ist.
  • Beispiel 9 kann die PCIe-Steuerung von irgendeinem der Beispiele 1 bis 7 enthalten, wobei die Interrupt-Anforderungsnachricht von einer anderen PCIe-Endpunktvorrichtung oder einer PCIe-Wurzelanlagenvorrichtung empfangen ist.
  • Beispiel 10 kann die PCIe-Steuerung von irgendeinem der Beispiele 1 bis 7 enthalten, wobei die Interrupt-Anforderungsnachricht als eine Nachrichten-Signal-Interrupt-(MSI) -Nachricht, MSI-X-Nachricht oder eine Speicher-Schreib- (MWr) -Nachricht formatiert ist.
  • Beispiel 11 kann die PCIe-Steuerung von irgendeinem der Beispiele 1 bis 10 enthalten, wobei der Interrupt-Behandlungsschaltkreis ein Prozessor der PCIe-Endpunktvorrichtung ist.
  • Beispiel 12 ist eine Peripher-Komponenten-Verbindungs-Express-(PCIe) -Vorrichtung, enthaltend: einen Prozessor, der konfiguriert ist, um eine Interrupt-Anforderungsnachricht an eine PCIe-Endpunktvorrichtung zu erzeugen, wobei die Interrupt-Anforderungsnachricht ein Speicherschreibtransaktions-PCIe-Transport-Schicht-Paket (TLP), beinhaltend eine Adresse, die mit der PCIe-Endpunktvorrichtung assoziiert ist, und einen Datenwert, der Interrupt-Information, die in ein Interrupt-Auslöseregister der PCIe-Endpunktvorrichtung geschrieben werden soll, enthält, ist; und eine PCIe-Verbindungsschnittstelle, die konfiguriert ist, um die Interrupt-Anforderungsnachricht an die PCIe-Endpunktvorrichtung zu übermitteln.
  • Beispiel 13 kann die PCIe-Vorrichtung von Beispiel 12 enthalten, wobei die PCIe-Vorrichtung eine andere PCIe-Endpunktvorrichtung oder eine PCIe-Wurzelanlagenvorrichtung ist.
  • Beispiel 14 kann die PCIe-Vorrichtung von Beispiel 13 enthalten, wobei die Interrupt-Anforderungsnachricht als eine Nachrichten-Signal-Interrupt- (MSI) -Nachricht, MSI-X-Nachricht oder eine Speicher-Schreib- (MWr) -Nachricht formatiert ist.
  • Beispiel 15 kann die PCIe-Vorrichtung von Beispiel 13 enthalten, wobei die Interrupt-Information einen Interrupt-Index, der eine aus einer Mehrzahl von Interrupt-Leitungen der PCIe-Endpunktvorrichtung zum Auslösen identifiziert, enthält und wobei der Interrupt-Index auch die PCIe-Vorrichtung identifiziert.
  • Beispiel 16 ist eine Peripher-Komponenten-Verbindungs-Express-(PCIe) -Vorrichtung, enthaltend: eine PCIe-Verbindungsschnittstelle, die konfiguriert ist, um Konfigurationsnachrichten zu empfangen und zu übermitteln; und einen Prozessor, der konfiguriert ist zum: Erzeugen, für jede PCIe-Endpunktvorrichtung, einer Konfigurationsnachricht, um von einem Basisregister einer jeweiligen PCIe-Endpunktvorrichtung Information über einen speicherzugeordneten Adressenraum, der mit der jeweiligen PCIe-Endpunktvorrichtung assoziiert ist, zu erhalten; Reservieren, für jede PCIe-Endpunktvorrichtung, eines jeweiligen Bereichs von Systemadressenraum für den speicherzugeordneten Adressenraum, der mit jeder jeweiligen PCIe-Endpunktvorrichtung assoziiert ist; Ermitteln, für jede PCIe-Endpunktvorrichtung, ob die jeweilige PCIe-Endpunktvorrichtung ein jeweiliges Auslöseanforderungsregister enthält; Assoziieren, für jede PCIe-Endpunktvorrichtung, die das jeweilige Auslöseanforderungsregister aufweist, einer jeweiligen Adresse in genanntem jeweiligen Bereich von Systemadressenraum mit der jeweiligen PCIe-Endpunktvorrichtung, wobei die jeweilige Adresse dem jeweiligen Auslöseanforderungsregister der jeweiligen PCIe-Endpunktvorrichtung entspricht.
  • Beispiel 17 kann die PCIe-Wurzelanlagenvorrichtung von Beispiel 16 enthalten, wobei der Prozessor weiter konfiguriert zum: Ermitteln, für die PCIe-Wurzelanlagenvorrichtung und jede PCIe-Endpunktvorrichtung, einer jeweiligen eindeutigen Menge von Interrupt-Indizes; und Kommunizieren, an jede PCIe-Endpunktvorrichtung, jede der jeweiligen eindeutigen Mengen von Interrupt-Indizes.
  • Beispiel DA1 ist eine Peripher-Komponenten-Verbindungs-Express- (PCIe) Steuerung für eine PCIe-Endpunktvorrichtung. Die PCIe-Steuerung enthält: ein Interrupt-Auslöseregister, das konfiguriert ist, um in beschreibbarem Speicherraum zu sein; eine PCIe-Verbindungsschnittstelle, die konfiguriert ist, um eine Interrupt-Anforderungsnachricht zu empfangen, wobei die Interrupt-Anforderungsnachricht ein Nachrichtenschreibtransaktions-PCIe-Transport-Schicht-Paket (TLP), beinhaltend eine Adresse, die mit der PCIe-Endpunktvorrichtung assoziiert ist, und einen Datenwert, der in das Interrupt-Auslöseregister geschrieben werden soll, ist; und einen Decoderschaltkreis, der konfiguriert ist, um eine Mehrzahl von Datenbits des Datenwerts, der in das Interrupt-Auslöseregister geschrieben ist, zu decodieren und ein Interrupt-Signal zu erzeugen und das Interrupt-Signal auf einer aus einer Mehrzahl von Interrupt-Leitungen einem Interrupt-Behandlungsschaltkreis bereitzustellen.
  • Beispiel DA2 kann die PCIe-Steuerung von Beispiel DA1 enthalten, wobei das Interrupt-Auslöseregister konfiguriert ist, um eine Adresse in einem speicherzugeordneten Adressenraum, der mit der PCIe-Endpunktvorrichtung assoziiert ist, aufzuweisen.
  • Beispiel DA3 kann die PCIe-Steuerung von irgendeinem der Beispiele DA1 bis DA2 enthalten, wobei das Interrupt-Auslöseregister ein PCIe-Nachrichten-Signalisierter-Interrupt- (MSI) -Register ist.
  • Beispiel DA4 kann die PCIe-Steuerung von irgendeinem der Beispiele DA1 bis DA3 enthalten, wobei das Interrupt-Auslöseregister ein Auslöseanforderungsregister ist.
  • Beispiel DA5 kann die PCIe-Steuerung von irgendeinem der Beispiele DA1 bis DA4 enthalten, weiter beinhaltend ein Basisadressenregister, das konfiguriert ist, um den speicherzugeordneten Adressenraum, der mit der PCIe-Endpunktvorrichtung assoziiert ist, zu definieren.
  • Beispiel DA6 kann die PCIe-Steuerung von irgendeinem der Beispiele DA1 bis DA5 enthalten, wobei der Decoderschaltkreis einen kombinatorischen Logikschaltkreis und/oder einen bitweisen Steuerungslogikschaltkreis enthält.
  • Beispiel DA7 kann die PCIe-Steuerung von Beispiel DA5 enthalten, wobei das Basisadressenregister Information über eine Größe des speicherzugeordneten Adressenraums oder Information über eine Basisadresse des speicherzugeordneten Adressenraums enthält, und wobei der speicherzugeordnete Adressenraum ein Teil eines Systemspeicheradressenraums ist.
  • Beispiel DA8 kann die PCIe-Steuerung von irgendeinem der Beispiele DA1 bis DA5 enthalten, wobei die Interrupt-Anforderungsnachricht von einer anderen PCIe-Endpunkvorrichtung oder einer Wurzelanlagenvorrichtung empfangen ist.
  • Beispiel DA9 kann die PCIe-Steuerung von irgendeinem der Beispiele DA1 bis DA5 enthalten, wobei die Interrupt-Anforderungsnachricht als eine Nachrichten-Signal-Interrupt- (MSI) -Nachricht, MSI-X-Nachricht oder eine Speicher-Schreib- (MWr) Nachricht formatiert ist.
  • Beispiele DA10 kann die PCIe-Steuerung von irgendeinem der Beispiele DA1-DA8 enthalten, wobei der Interrupt-Behandlungsschaltkreis ein Prozessor der PCIe-Endpunktvorrichtung ist.
  • Beispiel DA11 kann die PCIe-Steuerung von irgendeinem der Beispiele DA1-DA10 enthalten, wobei der Datenwert einen Interrupt-Index, der einen aus der Mehrzahl von Interrupt-Leitungen einer jeweiligen PCIe-Endpunktvorrichtung zum Auslösen identifiziert, enthält.
  • Beispiel DA12 kann die PCIe-Steuerung von Beispiel DA11 enthalten, wobei der Interrupt-Index auch eine PCIe-Vorrichtung, die die Interrupt-Anforderungsnachricht sendet, identifiziert.
  • Beispiel DB1 ist eine Peripher-Komponenten-Verbindungs-Express- (PCIe) Vorrichtung, enthaltend: einen Prozessor, der konfiguriert ist, um eine Interrupt-Anforderungsnachricht an eine PCIe-Endpunktvorrichtung zu erzeugen, wobei die Interrupt-Anforderungsnachricht ein Speicherschreibtransaktions-PCIe-Transport-Schicht-Paket (TLP), beinhaltend eine Adresse, die mit der PCIe-Endpunktvorrichtung assoziiert ist, und einen Datenwert, der Interrupt-Information, die in ein Interrupt-Auslöseregister der PCIe-Endpunktvorrichtung geschrieben werden soll, enthält, ist; und eine PCIe-Verbindungsschnittstelle, die konfiguriert ist, um die Interrupt-Anforderungsnachricht zu übermitteln.
  • Beispiel DB2 kann die PCIe-Vorrichtung von Beispiel DB1 enthalten, wobei die PCIe-Vorrichtung eine andere PCIe-Endpunktvorrichtung oder eine PCIe-Wurzelanlagenvorrichtung ist.
  • Beispiel DB3 kann die PCIe-Vorrichtung der Beispiele DB1 oder DB2 enthalten, wobei die Interrupt-Anforderungsnachricht als eine Nachrichten-Signal-Interrupt-(MSI) -Nachricht, MSI-X-Nachricht oder eine Speicher-Schreib- (MWr) Nachricht formatiert ist.
  • Beispiel DB4 kann die PCI-Vorrichtung der Beispiele DB1 bis DB3 enthalten, wobei die Interrupt-Information einen Interrupt-Index, der eine aus einer Mehrzahl von Interrupt-Leitungen der PCIe-Endpunktvorrichtung zum Auslösen identifiziert, enthält und wobei der Interrupt-Index auch die PCIe-Vorrichtung identifiziert.
  • Beispiel DC1 ist eine Peripher-Komponenten-Verbindungs-Express- (PCIe) Wurzelanlagenvorrichtung, enthaltend: eine PCIe-Verbindungsschnittstelle, die konfiguriert ist, um Konfigurationsnachrichten zu empfangen und zu übermitteln; und einen Prozessor, der konfiguriert ist zum: Erzeugen, für jede PCIe-Endpunktvorrichtung, einer Konfigurationsnachricht, um von einem Basisregister einer jeweiligen PCIe-Endpunktvorrichtung Information über einen speicherzugeordneten Adressenraum, der mit der jeweiligen PCIe-Endpunktvorrichtung assoziiert ist, zu erhalten; Reservieren, für jede PCIe-Endpunktvorrichtung, eines jeweiligen Bereichs von Systemadressenraum für den speicherzugeordneten Adressenraum, der mit jeder jeweiligen PCIe-Endpunktvorrichtung assoziiert ist; Bestimmen, für jede PCIe-Endpunktvorrichtung, ob die jeweilige PCIe-Endpunktvorrichtung ein jeweiliges Auslöseanforderungsregister enthält; Assoziieren, für jede PCIe-Endpunktvorrichtung, die das jeweilige Auslöseanforderungsregister aufweist, einer jeweiligen Adresse in genanntem jeweiligen Bereich von Systemadressenraum mit der jeweiligen PCIe-Endpunktvorrichtung, wobei die jeweilige Adresse dem jeweiligen Auslöseanforderungsregister der jeweiligen PCIe-Endpunktvorrichtung entspricht.
  • Beispiel DC2 kann die PCIe-Wurzelanlagenvorrichtung von Beispiel DC1 enthalten, wobei der Prozessor weiter konfiguriert ist, um eine oder mehrere PCIe-Endpunktvorrichtungen, die mit der PCIe-Wurzelanlagenvorrichtung verbunden sind, zu identifizieren.
  • Beispiel DC3 kann die Wurzelanlagenvorrichtung irgendeines der Beispiele DC1 oder DC2 enthalten, wobei der Prozessor weiter konfiguriert ist, um die jeweilige Adresse der jeweiligen PCIe-Endpunktvorrichtung einer anderen der einen oder mehreren PCIe-Endpunktvorrichtungen bereitzustellen.
  • Beispiel DC4 kann die PCIe-Wurzelanlagenvorrichtung von irgendeinem der Beispiele DC1 bis DC3 enthalten, wobei der Prozessor weiter konfiguriert ist zum: Ermitteln, für die PCIe-Wurzelanlagenvorrichtung und jede PCIe-Endpunktvorrichtung, einer jeweiligen eindeutigen Menge von Interrupt-Indizes; und Kommunizieren, an jede PCIe-Endpunktvorrichtung, jede der jeweiligen eindeutigen Mengen von Interrupt-Indizes.
  • Beispiel MA1 ist ein Verfahren für eine Peripher-Komponenten-Verbindungs-Express- (PCIe) -Steuerung einer PCIe-Endpunktvorrichtung, das Verfahren beinhaltend: Empfangen, von einer PCIe-Verbindungsschnittstelle, einer Interrupt-Anforderungsnachricht, wobei die Interrupt-Anforderungsnachricht ein Nachrichtenschreibtransaktions-PCIe-Transport-Schicht-Paket (TLP), beinhaltend eine Adresse, die mit der PCIe-Endpunktvorrichtung assoziiert ist, und einen Datenwert, der Interrupt-Information enthält, ist; Schreiben, des Datenwerts in ein Interrupt-Auslöseanforderungsregister, das mit der PCIe-Endpunktvorrichtung assoziiert ist; und Decodieren einer Mehrzahl von Datenbits des Datenwerts, der in dem Interrupt-Auslöseregister empfangen wurde, und Erzeugen eines Interrupt-Signals und Bereitstellen des Interrupt-Signals auf einer aus einer Mehrzahl von Interrupt-Leitungen an einen Interrupt-Verarbeitungsschaltkreis.
  • Beispiel MA2 kann das Verfahren von Beispiel MA1 beinhalten, wobei, wenn der Datenwert in das Interrupt-Anforderungsregister geschrieben ist, der Datenwert automatisch unter Verwendung eines kombinatorischen Logikschaltkreises und/oder eines bitweisen Steuerungslogikschaltkreises decodiert wird.
  • Beispiel MA3 kann das Verfahren der Beispiele MA1 oder MA2 beinhalten, weiter beinhaltend: Konfigurieren des Basisadressenregisters, um Information über eine Größe des speicherzugeordneten Adressenraums oder Information über eine Basisadresse des speicherzugeordneten Adressenraums einzuschließen, wobei der speicherzugeordnete Adressenraum ein Teil eines Systemspeicheradressenraums ist.
  • Beispiel MA4 kann das Verfahren von irgendeinem der Beispiele MA1 bis MA3 beinhalten, weiter beinhaltend: Automatisch ausführen, durch den Interrupt-Bearbeitungsschaltkreis, einer oder mehrerer Interrupt-Routinen für jede der jeweiligen einen oder mehreren Interrupt-Signale, die einer oder mehrerer Interrupt-Anforderungen der Interrupt-Anforderungsnachricht entsprechen.
  • Beispiel MA5 kann das Verfahren von irgendeinem der Beispiele MA1 bis MA4 beinhalten, wobei die Interrupt-Anforderungsnachricht von einer anderen PCIe-Endpunktvorrichtung oder einer PCIe-Wurzelanlagenvorrichtung empfangen ist.
  • Beispiel MA6 kann das Verfahren von irgendeinem der Beispiele MA1 bis MA5 beinhalten, wobei die Interrupt-Anforderungsnachricht als eine Nachrichten-Signal-Interrupt-(MSI) -Nachricht, MSI-X-Nachricht oder eine Speicher-Schreib- (MWr) -Nachricht formatiert ist.
  • Beispiel MA7 kann das Verfahren von Beispiel MA4 und irgendeines der Beispiele MA2, MA3, MA5 und MA6 beinhalten, wobei der Interrupt-Bearbeitungsschaltkreis ein Prozessor der PCIe-Endpunktvorrichtung ist.
  • Beispiel MB 1 ist ein Verfahren einer Peripher-Komponenten-Verbindungs-Express-(PCIe) Vorrichtung, beinhaltend: Erzeugen, durch einen Prozessor, einer Interrupt-Anforderungsnachricht an eine PCIe-Endpunktvorrichtung, wobei die Interrupt-Anforderungsnachricht ein Nachrichtenschreibtransaktions-PCIe-Transport-Schicht-Paket (TLP), beinhaltend eine Adresse, die mit der PCIe-Endpunktvorrichtung assoziiert ist, und einen Datenwert, der Interrupt-Information, die in ein Interrupt-Auslöseregister der PCIe-Endpunktvorrichtung geschrieben werden soll, enthält, ist; Übermitteln, über eine PCIe-Verbindungsschnittstelle, der Interrupt-Anforderungsnachricht an die PCIe-Endpunktvorrichtung.
  • Beispiel MB2 kann das Verfahren von Beispiel MB 1 beinhalten, wobei die PCIe-Vorrichtung eine andere PCIe-Endpunktvorrichtung oder eine PCIe-Wurzelanlagenvorrichtung ist.
  • Beispiel MB3 kann das Verfahren von Beispiel MB1 oder MB2 beinhalten, wobei die Interrupt-Anforderungsnachricht als eine Nachrichten-Signal-Interrupt- (MSI) -Nachricht, MSI-X-Nachricht oder eine Speicher-Schreib- (MWr) -Nachricht formatiert ist.
  • Beispiel MB4 kann das Verfahren von Beispiel MB 1 beinhalten, wobei die Interrupt-Information einen Interrupt-Index, der eine aus einer Mehrzahl von Interrupt-Leitungen der PCIe-Endpunktvorrichtung zum Auslösen identifiziert, und wobei der Interrupt-Index auch die PCIe-Vorrichtung identifiziert.
  • Beispiel MC1 ist ein Verfahren einer Peripher-Komponenten-Verbindungs-Express-(PCIe) -Wurzelanlagenvorrichtung, die mit einer Mehrzahl von PCIe-Endpunktvorrichtungen verbunden ist, beinhaltend: Identifizieren jeder der PCIe-Endpunktvorrichtungen; Erzeugen, für jede PCIe-Endpunktvorrichtung, einer Konfigurationsnachricht, um von einem Basisregister einer jeweiligen PCIe-Endpunktvorrichtung Information über einen speicherzugeordneten Adressenraum, der mit der jeweiligen PCIe-Endpunktvorrichtung assoziiert ist, zu erhalten; Übermitteln, an jede PCIe-Endpunktvorrichtung, der Konfigurationsnachricht über eine PCIe-Verbindungsschnittstelle; Reservieren, für jede PCIe-Endpunktvorrichtung, eines jeweiligen Bereichs von Systemadressenspeicher für den speicherzugeordneten Adressenspeicher, der mit jeder jeweiligen PCIe-Endpunktvorrichtung assoziiert ist; Ermitteln, für jede PCIe-Endpunktvorrichtung, ob die jeweilige PCIe-Endpunktvorrichtung ein jeweiliges Auslöseanforderungsregister enthält; und Assoziieren, für jede PCIe-Endpunktvorrichtung, die ein jeweiliges Auslöseanforderungsregister aufweist, einer jeweiligen Adresse in genanntem Bereich von Systemadressenspeicher mit der jeweiligen PCIe-Endpunktvorrichtung, wobei der jeweilige Adressenspeicher dem jeweiligen Auslöseanforderungsregister der jeweiligen PCIe-Endpunktvorrichtung entspricht.
  • Beispiel MC2 kann das Beispiel von MC1 beinhalten, weiter beinhaltend: Bereitstellen der jeweiligen Adresse der jeweiligen PCIe-Endpunktvorrichtung an eine andere aus der Mehrzahl von PCIe-Endpunktvorrichtungen.
  • Beispiel MC3 kann irgendeines der Beispiele MC1 oder MC2 beinhalten, weiter beinhaltend: Ermitteln, für die PCIe-Wurzelanlagenvorrichtung und jede PCIe-Endpunktvorrichtung, einer jeweiligen eindeutigen Menge von Interrupt-Indizes; und Kommunizieren, an jede PCIe-Endpunktvorrichtung, jede aus der jeweiligen eindeutigen Menge von Interrupt-Indizes.
  • Terminologie
  • Für die Zwecke des vorliegenden Dokuments sind die folgenden Ausdrücke und Definitionen auf die Beispiele und Ausführungsformen, die hierin diskutiert sind, anwendbar.
  • Der Ausdruck „Schaltung“, wie hierin verwendet, bezieht sich auf, ist Teil von, oder beinhaltet Hardwarekomponenten, wie einen elektronischen Schaltkreis, einen LogikSchaltkreis, einen Prozessor (geteilt, dediziert, oder Gruppe) und/oder Speicher (geteilt, dediziert, oder Gruppe), einen Anwendungs-Spezifischen-Integrierten-Schaltkreis (ASIC), eine Feld-Programmierbare-Vorrichtung (FPD) (z.B. ein Feld-Programmierbares-Gatter-Array (FPGA), eine Programmierbare-Logik-Vorrichtung (PLD), eine komplexe PLD (CPLD), eine Hoch-Kapazitäts-PLD (HCPLD), eine strukturierte ASIC oder eine programmierbare SoC), Digital-Signal-Prozessoren (DSPs), usw., die konfigurierbar sind, um die beschriebene Funktionalität bereitzustellen. In einigen Ausführungsformen kann die Schaltung eine oder mehrere Software- oder Firmwareprogramme ausführen, um mindestens einiges der beschriebenen Funktionalität bereitzustellen. Der Ausdruck „Schaltung“ kann sich auch auf eine Kombination von einem oder mehreren Hardwareelementen (oder eine Kombination von Schaltkreisen, die in elektrischen oder elektronischen Systemen verwendet wird) mit dem Programmcode, der verwendet wird, um die Funktionalität dieses Programmcodes auszuführen, beziehen. In diesen Ausführungsformen kann sich auf die Kombination von Hardwareelementen und Programmcode als ein bestimmter Typ von Schaltung bezogen werden.
  • Der Ausdruck „Prozessorschaltung“, wie hierin verwendet, ist Teil von, oder beinhaltet Schaltung, die fähig ist, sequentiell und automatisch eine Sequenz von arithmetischen oder logischen Operationen auszuführen, oder aufzunehmen, zu speichern und/oder digitale Daten zu übertragen. Der Ausdruck „Prozessorschaltung“ kann sich auf einen oder mehrere Anwendungsprozessoren, einen oder mehrere Basisbandprozessoren, eine physische Zentral-Verarbeitungs-Einheit (CPU), einen Einzelkernprozessor, einen Zweikernprozessor, einen Dreikernprozessor, einen Vierkernprozessor und/oder irgendeine andere Vorrichtung, die ausführungsfähig oder anderweitig fähig ist, computerausführbare Instruktionen, wie Programmcode, Softwaremodule und/oder funktionale Prozesse, abzuarbeiten. Die Ausdrücke „Anwendungsschaltung“ und/oder „Basisbandschaltung“ können betrachtet werden als synonym zu, und können auf sich bezogen werden als, „Prozessorschaltung“.
  • Der Ausdruck „Schnittstellenschaltung“, wie hierin verwendet, ist Teil von, oder beinhaltet Schaltung, die den Informationsaustausch zwischen zwei oder mehreren Komponenten oder Vorrichtungen ermöglicht. Der Ausdruck „Schnittstellenschaltung“ kann sich auf eine oder mehrere Hardwareschnittstellen, zum Beispiel Busse, I/O-Schnittstellen, periphere Komponentenschnittstellen, Netzwerkschnittstellenkarten und/oder ähnliches beziehen.
  • Der Ausdruck „Computersystem“, wie hierin verwendet, bezieht sich auf jede Art von miteinander verbundenen elektronischen Vorrichtungen, Computervorrichtungen oder Komponenten davon. Zusätzlich kann sich der Ausdruck „Computersystem“ und/oder „System“ auf verschiedene Komponenten eines Computers, die kommunikativ miteinander gekoppelt sind, beziehen. Weiterhin kann sich der Ausdruck „Computersystem“ und/oder „System“ auf mehrere Computervorrichtungen und/oder mehrere Computersysteme, die kommunikativ miteinander gekoppelt sind und konfiguriert sind, Rechen- und/oder Netzwerkressourcen zu teilen, beziehen.
  • Der Ausdruck „Gerät“, „Computergerät“ oder ähnliches, wie hierin verwendet, bezieht sich auf eine Computervorrichtung oder Computersystem mit Programmcode (z.B. Software oder Firmware), die spezifisch konzipiert ist, um eine spezifische Computerressource bereitzustellen. Ein „virtuelles Gerät“ ist eine virtuelle Maschinenabbildung, die durch eine Hypervisor-ausgerüstete Vorrichtung, die ein Computergerät virtualisiert oder emuliert oder anderweitig dediziert ist, eine spezifische Computerressource bereitzustellen, implementiert werden soll.
  • Der Ausdruck „Ressource“, wie hierin verwendet, bezieht sich auf eine physische oder virtuelle Vorrichtung, eine physische oder virtuelle Komponente innerhalb einer Rechenumgebung und/oder eine physische oder virtuelle Komponente innerhalb einer bestimmten Vorrichtung, wie beispielsweise Computervorrichtungen, mechanischen Vorrichtungen, Speicherraum, Prozessor/CPU-Zeit, Prozessor/CPU-Verwendung, Prozessor- und Beschleunigerlasten, Hardware-Zeit oder Verwendung, elektrische Leistung, Eingabe/Ausgabe-Operationen, Anschlüsse oder Netzwerkbuchsen, Kanal/Verbindungszuweisung, Durchsatz, Speicherverwendung, Speicherung, Netzwerk, Datenbanken und Anwendungen, Arbeitslasteinheiten und/oder ähnliches. Eine „Hardwareressource“ kann sich auf Rechen-, Speicherungs- und/oder Netzwerkressourcen, die durch physische Hardwareelement(e) bereitgestellt werden, beziehen. Eine „virtualisierte Ressource“ kann sich auf Rechen-, Speicherungs- und/oder Netzwerkressourcen, die durch eine Virtualisierungsinfrastruktur an eine Anwendung, Vorrichtung, System, usw. bereitgestellt werden, beziehen. Der Ausdruck „Netzwerkressource“ oder „Kommunikationsressource“ kann sich auf Ressourcen, die durch Computervorrichtungen/- Systeme über ein Kommunikationsnetzwerk zugänglich sind, beziehen. Der Ausdruck „Systemressourcen“ kann sich auf irgendeine Art von geteilten Einheiten, um Dienste bereitzustellen beziehen, und kann Rechen- und/oder Netzwerkressourcen beinhalten. Systemressourcen können als eine Menge von kohärenten Funktionen, Netzwerkobjekten oder -diensten, zugänglich durch einen Server, in dem sich solche Systemressourcen auf einem einzelnen Host oder mehreren Hosts befinden und klar identifizierbar sind, betrachtet werden.
  • Die Ausdrücke „gekoppelt“, „kommunikativ gekoppelt“, zusammen mit Ableitungen davon, werden hierin verwendet. Der Ausdruck „gekoppelt“ kann bedeuten, dass zwei oder mehrere Elemente in direktem physischen oder elektrischen Kontakt miteinander stehen, kann bedeuten, dass zwei oder mehrere Elemente sich indirekt gegenseitig kontaktieren, aber dennoch kooperieren oder miteinander interagieren, und/oder kann bedeuten, dass ein oder mehrere andere Elemente zwischen den Elementen, die miteinander gekoppelt sein sollen, miteinander gekoppelt oder verbunden sind. Der Ausdruck „direkt gekoppelt“ kann bedeuten, dass zwei oder mehrere Elemente in direktem Kontakt miteinander stehen. Der Ausdruck „kommunikativ gekoppelt“ kann bedeuten, dass zwei oder mehr Elemente durch ein Mittel der Kommunikation, einschließlich durch ein Kabel oder andere Zusammenschaltungsverbindung, durch einen drahtlosen Kommunikationskanal oder -verbindung und/oder ähnliches, in Kontakt miteinander stehen.
  • Der Ausdruck „Informationselement“ bezieht sich auf ein strukturelles Element, das ein oder mehrere Felder enthält. Der Ausdruck „Feld“ bezieht sich auf individuelle Inhalte eines Informationselements oder eines Datenelements, das Inhalt enthält.

Claims (17)

  1. Eine Peripher-Komponenten-Verbindungs-Express- (PCIe) -Steuerung für eine PCIe-Endpunktvorrichtung, die PCIe-Steuerung umfassend: eine PCIe-Verbindungsschnittstelle, die konfiguriert ist, um eine Interrupt-Anforderungsnachricht zu empfangen, wobei die Interrupt-Anforderungsnachricht ein Nachrichtenschreibtransaktions-PCIe-Transport-Schicht-Paket (TLP), beinhaltend eine Adresse, die mit einer PCIe-Endpunktvorrichtung assoziiert ist, und einen Datenwert, der Interrupt-Information enthält, ist; ein Interrupt-Auslöseregister, das konfiguriert ist, den Datenwert zu empfangen; eine Mehrzahl von Interrupt-Leitungen; und einen Decoderschaltkreis, der mit dem Interrupt-Auslöseregister und der Mehrzahl von Interrupt-Leitungen verbunden ist, der Decoderschaltkreis konfiguriert, um automatisch eine Mehrzahl von Datenbits des Datenwerts zu decodieren, wenn in dem Interrupt-Auslöseregister empfangen, und ein Interrupt-Signal zu erzeugen und das Interrupt-Signal auf einer aus der Mehrzahl von Interrupt-Leitungen einem Interrupt-Behandlungsschaltkreis bereitzustellen.
  2. Die PCIe-Steuerung von Anspruch 1, wobei das Interrupt-Auslöseregister konfiguriert ist, um in beschreibbarem Speicherraum zu sein und eine Adresse in einem speicherzugeordnetem Adressenraum, der mit der PCIe-Endpunktvorrichtung assoziiert ist, aufzuweisen.
  3. Die PCIe-Steuerung von Anspruch 2, wobei die Interrupt-Information einen Interrupt-Index, der eine aus der Mehrzahl von Interrupt-Leitungen einer jeweiligen PCIe-Endpunktvorrichtung zum Auslösen identifiziert.
  4. Die PCIe-Steuerung von Anspruch 3, wobei der Interrupt-Index auch eine PCIe-Vorrichtung, die die Interrupt-Anforderungsnachricht sendet, identifiziert.
  5. Die PCIe-Steuerung von irgendeinem der Ansprüche 1 bis 4, wobei das Interrupt-Auslöseregister ein Auslöseanforderungsregister ist.
  6. Die PCIe-Steuerung von irgendeinem der Ansprüche 1 bis 5, wobei der Decoderschaltkreis einen kombinatorischen Logikschaltkreis und/oder einen bitweisen Steuerungslogikschaltkreis umfasst.
  7. Die PCI-Steuerung von irgendeinem der Ansprüche 1 bis 6, weiter umfassend ein Basisadressenregister, das konfiguriert ist, um den speicherzugeordneten Adressenraum, der mit der PCIe-Endpunktvorrichtung assoziiert ist, zu definieren.
  8. Die PCIe-Steuerung von Anspruch 7, wobei das Basisadressenregister Information über eine Größe des speicherzugeordneten Adressenspeicherraums oder Information über eine Basisadresse des speicherzugeordneten Adressenraums enthält, und wobei der speicherzugeordnete Adressenraum ein Teil eines Systemspeicheradressenraums ist.
  9. Die PCIe-Steuerung von irgendeinem der Ansprüche 1 bis 7, wobei die Interrupt-Anforderungsnachricht von einer anderen PCIe-Endpunktvorrichtung oder einer PCIe-Wurzelanlagenvorrichtung empfangen ist.
  10. Die PCIe-Steuerung von irgendeinem der Ansprüche 1 bis 7, wobei die Interrupt-Anforderungsnachricht als eine Nachrichten-Signal-Interrupt- (MSI) -Nachricht, MSI-X-Nachricht oder eine Speicher-Schreib- (MWr) -Nachricht formatiert ist.
  11. Die PCIe-Steuerung von irgendeinem der Ansprüche 1 bis 10, wobei der Interrupt-Behandlungsschaltkreis ein Prozessor der PCIe-Endpunktvorrichtung ist.
  12. Eine Peripher-Komponenten-Verbindungs-Express- (PCIe) -Vorrichtung, umfassend: einen Prozessor, der konfiguriert ist, um eine Interrupt-Anforderungsnachricht an eine PCIe-Endpunktvorrichtung zu erzeugen, wobei die Interrupt-Anforderungsnachricht ein Speicherschreibtransaktions-PCIe-Transport-Schicht-Paket (TLP), beinhaltend eine Adresse, die mit der PCIe-Endpunktvorrichtung assoziiert ist, und einen Datenwert, der Interrupt-Information, die in ein Interrupt-Auslöseregister der PCIe-Endpunktvorrichtung geschrieben werden soll, enthält, ist; und eine PCIe-Verbindungsschnittstelle, die konfiguriert ist, um die Interrupt-Anforderungsnachricht an die PCIe-Endpunktvorrichtung zu übermitteln.
  13. Die PCIe-Vorrichtung von Anspruch 12, wobei die PCIe-Vorrichtung eine andere PCIe-Endpunktvorrichtung oder eine PCIe-Wurzelanlagenvorrichtung ist.
  14. Die PCIe-Vorrichtung von Anspruch 13, wobei die Interrupt-Anforderungsnachricht als eine Nachrichten-Signal-Interrupt- (MSI) -Nachricht, MSI-X-Nachricht oder eine Speicher-Schreib- (MWr) -Nachricht formatiert ist.
  15. Die PCIe-Vorrichtung von Anspruch 13 enthalten, wobei die Interrupt-Information einen Interrupt-Index, der eine aus einer Mehrzahl von Interrupt-Leitungen der PCIe-Endpunktvorrichtung zum Auslösen identifiziert, enthält und wobei der Interrupt-Index auch die PCIe-Vorrichtung identifiziert.
  16. Eine Peripher-Komponenten-Verbindungs-Express- (PCIe) -Wurzelanlagenvorrichtung, umfassend: eine PCIe-Verbindungsschnittstelle, die konfiguriert ist, um Konfigurationsnachrichten zu empfangen und zu übermitteln; und einen Prozessor, der konfiguriert ist zum: Erzeugen, für jede PCIe-Endpunktvorrichtung, einer Konfigurationsnachricht, um von einem Basisregister einer jeweiligen PCIe-Endpunktvorrichtung Information über einen speicherzugeordneten Adressenraum, der mit der jeweiligen PCIe-Endpunktvorrichtung assoziiert ist, zu erhalten; Reservieren, für jede PCIe-Endpunktvorrichtung, eines jeweiligen Bereichs von Systemadressenraum für den speicherzugeordneten Adressenraum, der mit jeder jeweiligen PCIe-Endpunktvorrichtung assoziiert ist; Ermitteln, für jede PCIe-Endpunktvorrichtung, ob die jeweilige PCIe-Endpunktvorrichtung ein jeweiliges Auslöseanforderungsregister enthält; Assoziieren, für jede PCIe-Endpunktvorrichtung, die das jeweilige Auslöseanforderungsregister aufweist, einer jeweiligen Adresse in genanntem jeweiligen Bereich von Systemadressenraum mit der jeweiligen PCIe-Endpunktvorrichtung, wobei die jeweilige Adresse dem jeweiligen Auslöseanforderungsregister der jeweiligen PCIe-Endpunktvorrichtung entspricht.
  17. Die PCIe-Wurzelanlagenvorrichtung von Anspruch 16, wobei der Prozessor weiter konfiguriert zum: Ermitteln, für die PCIe-Wurzelanlagenvorrichtung und jede PCIe-Endpunktvorrichtung, einer jeweiligen eindeutigen Menge von Interrupt-Indizes; und Kommunizieren, an jede PCIe-Endpunktvorrichtung, jede der jeweiligen eindeutigen Mengen von Interrupt-Indizes.
DE102021107336.7A 2021-03-24 2021-03-24 VORRICHTUNGEN, SYSTEME, UND VERFAHREN FÜR PCIe ENDPUNKT INTERRUPT Pending DE102021107336A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102021107336.7A DE102021107336A1 (de) 2021-03-24 2021-03-24 VORRICHTUNGEN, SYSTEME, UND VERFAHREN FÜR PCIe ENDPUNKT INTERRUPT
US17/701,892 US20220318170A1 (en) 2021-03-24 2022-03-23 DEVICES, SYSTEMS, AND METHODS FOR PCIe ENDPOINT INTERRUPT

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102021107336.7A DE102021107336A1 (de) 2021-03-24 2021-03-24 VORRICHTUNGEN, SYSTEME, UND VERFAHREN FÜR PCIe ENDPUNKT INTERRUPT

Publications (1)

Publication Number Publication Date
DE102021107336A1 true DE102021107336A1 (de) 2022-09-29

Family

ID=83192880

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021107336.7A Pending DE102021107336A1 (de) 2021-03-24 2021-03-24 VORRICHTUNGEN, SYSTEME, UND VERFAHREN FÜR PCIe ENDPUNKT INTERRUPT

Country Status (2)

Country Link
US (1) US20220318170A1 (de)
DE (1) DE102021107336A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115292219B (zh) * 2022-10-10 2023-01-10 三未信安科技股份有限公司 一种在RISC-V平台中实现PCIe MSI中断的系统及方法
CN115981924B (zh) * 2022-12-26 2023-10-13 元心信息科技集团有限公司 设备控制方法、电子设备及存储介质
CN117971526A (zh) * 2024-04-02 2024-05-03 井芯微电子技术(天津)有限公司 中断触发设备确定方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080082713A1 (en) 2006-09-29 2008-04-03 Hitachi, Ltd. Interrupt control system and storage control system using the same

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7725936B2 (en) * 2003-10-31 2010-05-25 International Business Machines Corporation Host-based network intrusion detection systems
US20170091013A1 (en) * 2015-09-28 2017-03-30 Netapp, Inc. Pcie error reporting and throttling
US11073894B2 (en) * 2019-05-24 2021-07-27 Qualcomm Incorporated System power management for peripheral component interconnect express (PCIE)-based devices
CN116302721A (zh) * 2021-12-20 2023-06-23 瑞昱半导体股份有限公司 芯片设计验证系统与方法及计算机可读取记录介质
EP4287076A1 (de) * 2022-06-01 2023-12-06 Stichting IMEC Nederland Neurosynaptische verarbeitungsschaltung

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080082713A1 (en) 2006-09-29 2008-04-03 Hitachi, Ltd. Interrupt control system and storage control system using the same

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Interrupt request (PC architecture). In: Wikipedia, the free encyclopedia. Bearbeitungsstand: 12.03.2021. URL: https://en.wikipedia.org/w/index.php?title=Interrupt_request_(PC_architecture)&oldid=1011695512 [abgerufen am 12.11.2021]
J721E DRA829/TDA4VM Processors Silicon Revision 1.1 Texas Instruments Families of Products Technical Reference Manual, Literature Number: SPRUIL1B. URL: https://www.ti.com/lit/zip/spruil1 [abgerufen am 11.11.2021]
Message Signaled Interrupts. In: Wikipedia, the free encyclopedia. Bearbeitungsstand: 25.12.2020. URL: https://en.wikipedia.org/w/index.php?title=Message_Signaled_Interrupts&oldid=996333942 [abgerufen am 12.11.2021]
PCI Express. In: Wikipedia, die freie Enzyklopädie. Bearbeitungsstand: 13.01.2021. URL: https://de.wikipedia.org/w/index.php?title=PCI_Express&oldid=207592777 [abgerufen am 12.11.2021]

Also Published As

Publication number Publication date
US20220318170A1 (en) 2022-10-06

Similar Documents

Publication Publication Date Title
DE102021107336A1 (de) VORRICHTUNGEN, SYSTEME, UND VERFAHREN FÜR PCIe ENDPUNKT INTERRUPT
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE102008035120B4 (de) Prozessorauswahl für einen Interrupt, die einen Prozessorcluster identifiziert
DE102020127924A1 (de) Gemeinschaftlich verwendeter speicherraum unter vorrichtungen
DE102009022550B4 (de) Vorrichtung und System zum Bereitstellen eines PCI (Peripheral Component Interconnect)-kompatiblen Protokolls auf Transaktionsebene für ein Ein-Chip-System (SoC)
DE102008030587B4 (de) Verfahren und Vorrichtung zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE102004042170B4 (de) Nachrichtenbasierte Interrupttabelle
DE69735575T2 (de) Verfahren und Vorrichtung zur Unterbrechungsverteilung in einem skalierbaren symmetrischen Mehrprozessorsystem ohne die Busbreite oder das Busprotokoll zu verändern
DE102020125353A1 (de) Transaktionsschichtpaketformat
DE112007001466T5 (de) Behandlung von Adressübersetzungen und Ausnahmen einer Heterogenen Ressource
DE112017001148T5 (de) Abflachende portalbrücke .
DE112008002402T5 (de) Erzeugung von einer logischen APIC-ID mit Cluster ID und Intra-Cluster ID
CN103873489A (zh) 具有PCIe接口的装置共享系统及方法
US20130110960A1 (en) Method and system for accessing storage device
DE202010018020U1 (de) Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen
DE102004057756A1 (de) USB "On-the-go"-Steuerung
DE112016006065T5 (de) Spekulative nummerierung von adressräumen für bus-einrichtungsfunktionen
DE102018006852A1 (de) Verfahren, Vorrichtung und System für eine ThunderBolt-basierte Anzeigetopologie für duale Grafiksysteme
DE112014006490T5 (de) Verfahren, Vorrichtung und System zur Regelung von Leistung ungenutzter Hardware einer Linkschnittstelle
US10013199B2 (en) Translation bypass by host IOMMU for systems with virtual IOMMU
DE102020101958A1 (de) Dynamisches spurzugriffswechseln zwischen pcie-wurzelräumen
DE112006000634T5 (de) Verfahren und Vorrichtung zur unabhängigen und gleichzeitigen Datenübertragung auf Host-Controller
DE102020113225A1 (de) Aufzählung persistenter Vorrichtungen auf dem USB (Universal Serial Bus)
DE112018006068T5 (de) Dynamische adressübersetzung für eine virtuelle maschine

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication