DE112017001808T5 - Technologien für einen verteilten hardwarewarteschlangenmanager - Google Patents

Technologien für einen verteilten hardwarewarteschlangenmanager Download PDF

Info

Publication number
DE112017001808T5
DE112017001808T5 DE112017001808.0T DE112017001808T DE112017001808T5 DE 112017001808 T5 DE112017001808 T5 DE 112017001808T5 DE 112017001808 T DE112017001808 T DE 112017001808T DE 112017001808 T5 DE112017001808 T5 DE 112017001808T5
Authority
DE
Germany
Prior art keywords
queue
hardware
data
address
processor
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
DE112017001808.0T
Other languages
English (en)
Inventor
Ren Wang
Yipeng Wang
Jr-Shian Tsai
Andrew J. Herdrich
Tsung-Yuan C. Tai
Niall D. McDonnell
Stephen R. Van Doren
David Sonnier
Debra Bernstein
Hugh Wilkinson
Narender Vangati
Stephen Miller
Gage Eads
Andrew Cunningham
Jonathan Kenny
Bruce Richardson
William Burroughs
Joseph R. Hasting
An Yan
James T. Clee
Te K. Ma
Jerry Pirog
Jamison D. Whitesell
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE112017001808T5 publication Critical patent/DE112017001808T5/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/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)

Abstract

Technologien für einen verteilten Hardwarewarteschlangenmanager beinhalten eine Computervorrichtung, die einen Prozessor aufweist. Der Prozessor beinhaltet zwei oder mehr Hardwarewarteschlangenmanager sowie zwei oder mehr Prozessorkerne. Jeder Prozessorkern kann Daten von dem Hardwarewarteschlangenmanager in einer Warteschlange anordnen oder aus dieser entfernen. Jeder Hardwarewarteschlangenmanager kann derart konfiguriert sein, dass er mehrere Warteschlangendatenstrukturen enthält. In einigen Ausführungsformen werden die Warteschlangen von den Prozessorkernen unter Verwendung von virtuellen Warteschlangenadressen adressiert, welche in physikalische Warteschlangenadressen übersetzt werden, um auf den entsprechenden Hardwarewarteschlangenmanager zuzugreifen. Die virtuellen Warteschlangen können von einer physikalischen Warteschlange in einem Hardwarewarteschlangenmanager zu einer anderen physikalischen Warteschlange in einem anderen physikalischen Warteschlangenmanager bewegt werden, ohne die virtuelle Adresse der virtuellen Warteschlange zu ändern.

Description

  • QUERVERWEIS AUF VERBUNDENE US-PATENTANMELDUNG
  • Die vorliegende Anmeldung beansprucht Priorität bezüglich der US-Gebrauchspatentanmeldung mit der Seriennr. 15/097.154 mit dem Titel „TECHNOLOGIEN FÜR EINEN VERTEILTEN HARDWAREWARTESCHLANGENMANAGER“, welche am 31. März 2016 eingereicht wurde.
  • HINTERGRUND
  • Die Kommunikation zwischen Kernen in einem Mehrkernprozessor ist ein wichtiger Parameter bei vielen Computeranwendungen, wie zum Beispiel der Paketverarbeitung, dem Hochleistungsrechnen und dem maschinellen Lernen. Auf einer Mehrzweckplattform wird oft geteilter Speicherplatz, der durch Software verwaltet wird, verwendet, um eine Kommunikation zwischen Kernen zu realisieren. Da die Anzahl an Kernen zunimmt, kann die Kommunikation zwischen den Kernen ein einschränkender Faktor für die Leistungsskalierung in gewissen Szenarien werden.
  • Das zuvor beschriebene Problem vergrößert sich bei Architekturen, die eine große Anzahl an Kernen aufweisen, da ein zusätzlicher Overhead erforderlich ist, um die Kommunikation zwischen allen Kernen zu verwalten, was zu einer hohen Latenz und einem geringen Durchsatz führt. Der Overhead in solch einer Umgebung beinhaltet Softwareoverhead, der mit dem Beibehalten der Datenstruktur in dem Speicher und der Flusssteuerung verbunden ist, sowie Hardwareoverhead, um die Zwischenspeicherkohärenz beizubehalten.
  • Figurenliste
  • Die hierin beschriebenen Konzepte sind in den beiliegenden Figuren lediglich beispielhaft und nicht beschränkend veranschaulicht. Aus Gründen der Einfachheit und Klarheit der Darstellung sind Elemente, die in den Figuren veranschaulicht werden, nicht notwendigerweise maßstabsgetreu gezeichnet. Wo es als angebracht angesehen wurde, werden Bezugszeichen unter den Figuren wiederholt, um entsprechende oder analoge Elemente zu kennzeichnen.
    • 1 ist ein vereinfachtes Diagramm von mindestens einer Ausführungsform einer Computervorrichtung, die einen Prozessor beinhaltet;
    • 2 ist ein vereinfachtes Diagramm von mindestens einer Ausführungsform des Prozessors von 1, der mehrere Prozessorkerne und mehrere Hardwarewarteschlangenmanager beinhaltet;
    • 3 ist ein vereinfachtes Diagramm von mindestens einer Ausführungsform von einem der Hardwarewarteschlangenmanager des Prozessors von 2;
    • 4 und 5 sind ein vereinfachtes Flussdiagramm von mindestens einer Ausführungsform eines Verfahrens, das von einem Hardwarewarteschlangenmanager des Prozessors von 2 ausgeführt werden kann;
    • 6 ist ein vereinfachtes Flussdiagramm von mindestens einer Ausführungsform eines Verfahrens zum Migrieren einer Warteschlange von einem Hardwarewarteschlangenmanager zu einem anderen Hardwarewarteschlangenmanager, das von dem Prozessor von 2 ausgeführt werden kann;
    • 7 ist ein vereinfachtes Blockdiagramm von mindestens einer Ausführungsform einer Warteschlangenabbildungseinheit des Prozessors von 2;
    • 8 und 9 sind ein vereinfachtes Flussdiagramm von mindestens einer Ausführungsform eines Verfahrens zum Übersetzen einer virtuellen Warteschlangenadresse in eine physikalische Warteschlangenadresse, das von der Warteschlangenabbildungseinheit von 7 ausgeführt werden kann;
    • 10 ist ein vereinfachtes Flussdiagramm von mindestens einer Ausführungsform eines Verfahrens zum Aktualisieren der Warteschlangenabbildungseinheit, das von der Warteschlangenabbildungseinheit von 7 ausgeführt werden kann;
    • 11 ist ein vereinfachtes Blockdiagramm von mindestens einer Ausführungsform einer Umgebung, die von der Computervorrichtung von 1 eingerichtet werden kann;
    • 12 ist ein vereinfachtes Flussdiagramm von mindestens einer Ausführungsform eines Verfahrens zum Konfigurieren einer Warteschlange, das von der Computervorrichtung von 1 ausgeführt werden kann;
    • 13 ist ein vereinfachtes Flussdiagramm von mindestens einer Ausführungsform eines Verfahrens zum Migrieren einer Warteschlange, das von der Computervorrichtung von 1 ausgeführt werden kann;
    • 14 und 15 sind ein vereinfachtes Flussdiagramm von mindestens einer Ausführungsform eines Verfahrens zum Anordnen von Daten in einer Warteschlange in einen Hardwarewarteschlangenmanager des Prozessors von 2 und Entfernen von Daten aus der Warteschlange von dem Hardwarewarteschlangenmanager, das von der Computervorrichtung von 1 ausgeführt werden kann; und
    • 16 ist ein vereinfachtes Blockdiagramm von mehreren möglichen Ausführungsformen einer Verteilung von mehreren Hardwarewarteschlangenmanager unter mehreren Prozessorkernen des Prozessors von 2.
  • AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
  • Obwohl die Konzepte der vorliegenden Offenbarung für vielfältige Modifikationen und alternative Formen geeignet sind, wurden spezifische Ausführungsformen davon in den Zeichnungen beispielhaft gezeigt und werden hier ausführlich beschrieben werden. Es versteht sich jedoch, dass es nicht beabsichtigt ist, die Konzepte der vorliegenden Offenbarung auf die bestimmten offenbarten Formen zu beschränken; eher besteht im Gegenteil die Absicht, alle Modifikationen, Äquivalente und Alternativen, die konsistent zur vorliegenden Offenbarung und den angehängten Ansprüchen sind, abzudecken.
  • Bezugnahmen in der Beschreibung auf „eine Ausführungsform“, „Ausführungsform“, „eine veranschaulichende Ausführungsform“ usw. geben an, dass die beschriebene Ausführungsform ein besonderes Merkmal, eine besondere Struktur oder eine besondere Eigenschaft einschließen kann, wobei allerdings möglicherweise jede Ausführungsform dieses besondere Merkmal, diese besondere Struktur oder diese besondere Eigenschaft einschließt oder nicht unbedingt einschließt. Darüber hinaus beziehen sich derartige Formulierungen nicht notwendigerweise auf dieselbe Ausführungsform. Wenn ein besonderes Merkmal, eine besondere Struktur oder eine besondere Eigenschaft in Verbindung mit einer Ausführungsform beschrieben wird, wird außerdem unterstellt, dass es im Kenntnisbereich einer Fachperson liegt, ein derartiges Merkmal, eine derartige Struktur oder eine derartige Eigenschaft in Verbindung mit anderen Ausführungsformen zustande zu bringen, ob es nun explizit beschrieben wurde oder nicht. Zusätzlich versteht sich, dass Einträge in einer Liste der Form von „mindestens einer von A, B und C“ Folgendes bedeuten können: (A); (B); (C); (A und B); (B und C); (A und C); oder (A, B, und C). Gleichermaßen können Einträge in einer Liste der Form von „mindestens einer von A, B oder C“ Folgendes bedeuten: (A); (B); (C); (A und B); (B und C); (A und C); oder (A, B, und C).
  • Die offenbarten Ausführungsformen können in manchen Fällen in Hardware, Firmware, Software oder einer beliebigen Kombination davon implementiert sein. Die offenbarten Ausführungsformen können ebenfalls als Anweisungen implementiert sein, die von einem oder mehreren vergänglichen oder nichtvergänglichen maschinenlesbaren (z. B. computerlesbaren) Speichermedien getragen oder in diesen gespeichert werden, die von einem oder mehreren Prozessoren ausgelesen und ausgeführt werden können. Ein maschinenlesbares Ablagemedium kann als eine beliebige Ablagevorrichtung, ein Ablagemechanismus oder eine andere physische Struktur zum Speichern oder Übertragen von Informationen in einer von einer Maschine lesbaren Form (z. B. einem flüchtigen oder nichtflüchtigen Speicher, einer Medien-Disc oder einer anderen Medien-Vorrichtung) realisiert sein.
  • In den Zeichnungen sind gewisse strukturelle oder methodische Merkmale möglicherweise in speziellen Anordnungen und/oder Abfolgen gezeigt. Allerdings sollte zur Kenntnis genommen werden, dass derartige spezielle Anordnungen und/oder Abfolgen möglicherweise nicht nötig sind. Vielmehr sind in einigen Ausführungsformen derartige Merkmale möglicherweise auf andere Weise und/oder in anderer Reihenfolge angeordnet als in den veranschaulichenden Figuren gezeigt. Zusätzlich soll die Einschließung eines strukturellen oder methodischen Merkmals in einer bestimmten Figur nicht bedeuten, dass ein derartiges Merkmal in allen Ausführungsformen erforderlich ist und, in einigen Ausführungsformen, möglicherweise nicht eingeschlossen oder mit anderen Merkmalen kombiniert sein kann.
  • Unter Bezugnahme nunmehr auf 1 und 2 beinhaltet eine veranschaulichende Computervorrichtung 100 einen Prozessor 102, welcher zwei oder mehr Prozessorkerne 202 und zwei oder mehr Hardwarewarteschlangenmanager 208, die durch eine Verbindungsschaltung 206 verbunden sind (siehe 2), beinhaltet. Wie nachstehend ausführlicher beschrieben wird, kann im Gebrauch eine Anweisung eines Softwareprogramms von einem der Prozessorkerne 202 ausgeführt werden, welche anweisen kann, dass der Prozessorkern 202 Daten in einer Warteschlange von einem der HQMs (Hardware Queue Managers, Hardwarewarteschlangenmanager) 208 anordnet. Die Softwareanweisung beinhaltet eine Warteschlangenadresse, die angibt, zu welchem HQM 208 die Daten gesendet werden sollen. In der veranschaulichenden Ausführungsform ist die Adresse der Anweisung eine virtuelle Adresse, welche in eine physikalische Adresse von einer QMU (Queue Management Unit, Warteschlangenverwaltungseinheit) 204 übersetzt wird, die mit dem Prozessorkern 202 verknüpft ist, der die Anweisung ausführt. Der Prozessorkern 202 sendet die Daten durch die Verbindungsschaltung 206 zu dem Ziel-HQM 208, welcher die Daten in einer Warteschlangendatenstruktur des HQM 208 speichert. Etwas später kann eine Anweisung des Softwareprogramms einen Prozessorkern 202 (welcher ein anderer Prozessorkern 202 als der, der in der Warteschlange anordnet, sein kann) anweisen, die Daten aus der Warteschlange von dem HQM 208 zu entfernen. Nach der Übersetzung einer virtuellen Adresse in dem Befehl in eine physikalische Adresse durch die verknüpfte QMU 204 wird die Anfrage bezüglich des Entfernens aus der Warteschlange zu dem HQM 208 gesendet, welcher dann die Daten aus der Warteschlangendatenstruktur entfernt und zu dem Warteschlangenentfernungsprozessorkern 202 sendet.
  • Das Softwareprogramm kann als eine beliebige Art von Softwareprogramm realisiert sein, für welches ein Anordnen in einer Warteschlange und/oder Entfernen aus einer Warteschlange nützlich ist, wie nachstehend ausführlicher beschrieben wird. In der veranschaulichenden Ausführungsform kann das Softwareprogramm virtualisierte Netzwerkfunktionen beinhalten und kann das Anordnen in einer Warteschlange und Entfernen aus einer Warteschlange eine schnelle Übertragung und Verarbeitung von Paketen einer Netzwerkkommunikation erlauben, wobei verschiedene Prozessorkerne 202 des Prozessors 102 verschiedene virtualisierte Netzwerkfunktionen durchführen.
  • Die Computervorrichtung 100 kann als eine beliebige Art von Computervorrichtung realisiert sein, die in der Lage ist, die hierin beschriebenen Funktionen durchzuführen. Zum Beispiel kann die Computervorrichtung 100 als ein Desktopcomputer, ein Servercomputer, ein eingebettetes Computersystem, ein System auf einem Chip (SoC, System-on-a-Chip), ein Smartphone, ein Mobiltelefon, ein tragbarer Computer, ein Tablet-Computer, ein Notebook-Computer, ein Laptop-Computer, ein Handset, eine Messaging-Vorrichtung, eine Kameravorrichtung, ein Multiprozessorsystem, ein prozessorbasiertes System, eine Verbraucherelektronikvorrichtung und/oder irgendeine sonstige Computervorrichtung realisiert oder anderweitig in diesen enthalten sein, ohne darauf beschränkt zu sein. Die veranschaulichende Computervorrichtung 100 beinhaltet den Prozessor 102, einen Speicher 104 einschließlich einer Warteschlangenabbildungstabelle 106, eines E/A-Subsystems 108 und einer Datenablage 110.
  • Der Prozessor 102 kann als irgendein Prozessortyp realisiert sein, der dazu in der Lage ist, die hier beschriebenen Funktionen durchzuführen. Zum Beispiel kann der Prozessor 102 als ein digitaler Signalprozessor, ein Mikrocontroller, eine feldprogrammierbare Anordnung (FPGA, field programmable gate array) oder ein sonstiger Prozessor oder eine sonstige Verarbeitungs-/Steuerungsschaltung realisiert sein. Ähnlich kann der Speicher 104 als eine beliebige Art von flüchtigem, nichtflüchtigem oder hybridem (d. h., der sowohl flüchtige als auch nichtflüchtige Komponenten enthält) Speicher bzw. Datenablage, der bzw. die dazu in der Lage ist, die hier beschriebenen Funktionen durchzuführen, realisiert sein. Im Betrieb kann der Speicher 104 diverse Daten und Software speichern, die während dem Betrieb der Computervorrichtung 100 verwendet werden, wie zum Beispiel Betriebssysteme, Anwendungen, Programme, Bibliotheken und Treiber. In der veranschaulichenden Ausführungsform beinhaltet der Speicher eine Warteschlangenabbildungstabelle 106, die nachstehend bezüglich 7-10 ausführlicher erläutert wird. Der Speicher 104 ist kommunikativ mit dem Prozessor 102 über das E/A-Subsystem 108 gekoppelt, welches als Schaltung und/oder Komponenten zum Erleichtern von Eingabe-/Ausgabevorgängen mit dem Prozessor 102, dem Speicher 104 und anderen Komponenten der Computervorrichtung 100 realisiert sein kann. Das E/A-Subsystem 108 kann zum Beispiel als Speichersteuerungs-Hubs, Eingabe-/Ausgabesteuerungs-Hubs, Firmware-Vorrichtungen, Kommunikations-Verbindungen (d.h. Punkt-zu-Punkt-Verbindungen, Bus-Verbindungen, Drähte, Kabel, Lichtleiter, Spuren auf gedruckten Leiterplatten usw.) und/oder anderen Komponenten und Subsystemen realisiert sein oder diese sonstwie beinhalten, um die Eingabe-/Ausgabe-Operationen zu erleichtern. In einigen Ausführungsformen kann das E/A-Subsystem 108 einen Teil eines Systems auf einem Chip (SoC) bilden und zusammen mit dem Prozessor 102, dem Speicher 104 und sonstigen Komponenten der Computervorrichtung 100 in einem einzigen integrierten Schaltungschip aufgenommen sein.
  • Die Datenablage 110 kann ausgelegt sein als eine beliebige Art von Vorrichtung oder Vorrichtungen, die zur Kurzzeit- oder Langzeitspeicherung von Daten ausgelegt ist/sind. Zum Beispiel kann die Datenablage 110 eine oder mehrere Speichervorrichtungen und Schaltungen, Speicherkarten, Festplatten, Festkörperlaufwerke oder sonstige nichtflüchtige Datenablagevorrichtungen beinhalten.
  • Natürlich kann in einigen Ausführungsformen die Computervorrichtung 100 andere oder zusätzliche Komponenten, wie zum Beispiel die üblicherweise in einer Computervorrichtung vorhandenen, beinhalten. Zum Beispiel kann die Computervorrichtung 100 auch periphere Vorrichtungen 112 aufweisen, wie zum Beispiel ein Display, eine Tastatur, eine Maus, einen Lautsprecher, eine Kamera, eine Kommunikationsschaltung usw.
  • Unter Bezugnahme nunmehr auf 2 beinhaltet ein veranschaulichender Prozessor 102 der Computervorrichtung 100 mehrere Prozessorkerne 202, wobei jeder eine entsprechende Warteschlangenabbildungseinheit (QMU) 204 (welche nachstehend bezüglich 3 ausführlicher beschrieben wird) und mehrere Hardwarewarteschlangenmanager (HQMs) 208 (was nachstehend bezüglich 7 ausführlicher beschrieben wird) aufweist. In der veranschaulichenden Ausführungsform kann jeder Prozessorkern 202 mit jedem HQM 208 durch die Verbindungsschaltung 206 kommunizieren. Die Verbindungsschaltung 206 zusammen mit den Kabeln oder sonstigen elektrischen Verbindungen, in 2 gezeigt, ist ausgelegt, um eine warteschlangenbezogene Kommunikation zu und von den Prozessorkernen 202 und den HQMs 208 zu leiten. Die Verbindungsschaltung 206 kann als eine beliebige Art von Verbindungsschaltung, wie zum Beispiel eine Ring-, Crossbar- oder sonstige Art von Verbindungsschaltung, realisiert sein. In einigen Ausführungsformen kann die Verbindungsschaltung 206 als eine spezielle dedizierte Schaltung für warteschlangenbezogene Kommunikation realisiert sein oder als eine geteilte Verbindung realisiert sein, die für zusätzliche Kommunikation verwendet wird, die sich von warteschlangenbezogener Kommunikation unterscheidet. Während die Verbindungsschaltung 206 in 2 als mit jedem Prozessorkern 202 und jedem HQM 208 verbunden dargestellt ist, versteht sich, dass eine beliebige Menge oder Konfiguration der Verbindungsschaltung 206 verwendet werden kann, um die hier beschriebene notwendige Interkonnektivität zu bewirken.
  • Die veranschaulichende Ausführungsform, die in 2 gezeigt ist, stellt jeweils vier des Prozessorkerns 202, der QMU 204 und des HQM 208 dar. Es versteht sich, dass in anderen Ausführungsformen mehr oder weniger von jeder Komponente (mit entsprechenden Anpassungen der Verbindungsschaltung 206) vorhanden sein könnten. Zum Beispiel könnte eine Ausführungsform zwei Prozessorkerne 202 und zwei HQMs 208 aufweisen und könnte eine andere Ausführungsform 16 Prozessorkerne 202 und 16 HQMs 208 aufweisen. Zusätzlich könnten in einigen Ausführungsformen mehr oder weniger HQMs 208 als Prozessorkerne 202 vorhanden sein. Zum Beispiel könnte eine Ausführungsform 16 Prozessorkerne 202 und vier HQMs 208 aufweisen. Einige Ausführungsformen können eine beliebige Kombination von mehr als 4, 8, 16, 32 oder 64 Prozessorkernen 202 und/oder mehr als 4, 8, 16, 32 oder 64 HQMs 208 beinhalten. In der veranschaulichenden Ausführungsform weist jeder Prozessorkern 202 eine entsprechende QMU 204 auf. In einigen Ausführungsformen können weniger QMUs 204 als Prozessorkerne 202 vorhanden sein, und in anderen Ausführungsformen ist möglicherweise keine einzige QMU 204 vorhanden.
  • In der veranschaulichenden Ausführungsform ist jeder Prozessorkern 202 in der Lage, in einer Warteschlange in jedem HQM 208 anzuordnen und aus einer Warteschlange von diesem zu entfernen. Hierzu weist jeder Prozessorkern 202 eine Anweisung in seinem Anweisungssatz für eine Warteschlangenanordnungsanweisung und eine Warteschlangenentfernungsanweisung auf. Die Warteschlangenanordnungsanweisung beinhaltet eine Warteschlangenadresse und eine Registeradresse. Die Registeradresse gibt das Register an, das die in der Warteschlange anzuordnenden Daten enthält, und die Warteschlangenadresse gibt an, in welcher Warteschlange in welchem HQM 208 die Daten angeordnet werden sollen. Die Warteschlangenentfernungsanweisung beinhaltet auch eine Warteschlangenadresse und eine Registeradresse. Die Registeradresse gibt das Register an, in welchem die Daten aus der Warteschlange gespeichert werden sollen, und die Warteschlangenadresse gibt an, aus welcher Warteschlange in welchem HQM 208 die Daten in einer Warteschlange angeordnet werden sollen. In der veranschaulichenden Ausführungsform und wie nachstehend ausführlicher beschrieben ist, ist die Warteschlangenadresse für die Warteschlangenanordnungs- und Warteschlangenentfernungsbefehle eine virtuelle Warteschlangenadresse und muss in eine physikalische Warteschlangenadresse unter Verwendung der zugehörigen QMU 204 übersetzt werden. In einigen Ausführungsformen kann die Warteschlangenadresse eine physikalische Warteschlangenadresse sein und ist es möglich, dass eine Übersetzung durch die QMU 204 nicht notwendig ist. Die physikalische Warteschlangenadresse gibt den HQM 208, mit welchem die Warteschlange verknüpft ist, sowie den Standort der Warteschlange in dem zugehörigen HQM 208 an.
  • In zusätzlichen Ausführungsformen ist es möglich, dass ein oder mehrere Prozessorkerne 202 nicht in der Lage sind, in einer Warteschlange von jedem HQM 208 anzuordnen und aus der Warteschlange von diesem zu entfernen. Zum Beispiel ist es möglich, dass einige Prozessorkerne 202 nur in der Lage sind, in einer Warteschlange von einem oder mehreren HQMs 208 anzuordnen und andere Prozessorkerne 202 nur in der Lage sind, aus der Warteschlange von einem oder mehreren HQMs 208 zu entfernen. In einem anderen Beispiel ist es möglich, dass einige Prozessorkerne 202 nur in der Lage sind, mit einigen der HQMs 208 zu kommunizieren, und überhaupt nicht in der Lage sind, direkt mit anderen HQMs 208 zu kommunizieren.
  • Unter Bezugnahme nunmehr auf 3 beinhaltet der veranschaulichende HQM 208 einen Anfragepuffer 302, eine Planungsschaltung 304, eine Warteschlangenanordnungsschaltung 306, einen Warteschlangenspeicher 308, eine Warteschlangenentfernungsschaltung 310, eine optionale Kreditverwaltungsschaltung 312 und eine Warteschlangenmigrationsschaltung 314. Es versteht sich, dass in einigen Fällen eine oder mehrere der Komponenten des HQM 208 einen Teil der Struktur beinhalten oder anderweitig enthalten kann oder einen Teil der Funktionalität von einigen der anderen Komponenten durchführen kann. Zum Beispiel kann der Warteschlangenspeicher 308 einen Teil des Anfragepuffers 302 beinhalten oder anderweitig bilden.
  • In der veranschaulichenden Ausführungsform, wenn jeder Warteschlangenanordnungsbefehl und Warteschlangenentfernungsbefehl akzeptiert wird, wird er zunächst in dem Anfragepuffer 302 gespeichert, bevor er vollständig bearbeitet wird. Der Anfragepuffer 302 speichert vorübergehend die eingehenden Anfragen, da der HQM 208 möglicherweise nicht ausreichende Ressourcen oder eine ausreichende Bandbreite aufweist, um alle eingehenden Anfragen zu dem Zeitpunkt, in dem sie erhalten werden, zu bearbeiten. Der Anfragepuffer 302 speichert die Anfragen in einem oder mehreren Puffern, welche First-in-First-out- (FIFO) -Warteschlangen sein können, wobei die erste Anfrage in den Puffer die erste Anfrage aus dem Puffer heraus sein wird. In einer Ausführungsform wird eine Untergruppe von Puffern zugewiesen, um nur Warteschlangenanordnungsanfragen zu speichern, während eine andere Untergruppe nur für Warteschlangenentfernungsanfragen reserviert ist. Es können auch andere Arten des Zuweisens der Puffer, wie zum Beispiel durch einen Kern, durch einen Thread, durch eine Anfragenart usw., verwendet werden. Ein einzelne Prioritätsstufe kann über alle Puffer zugewiesen werden, um die Implementierung zu vereinfachen und den Durchlass zu maximieren. Alternativ können mehrere Prioritätsstufen implementiert werden, um detaillierte Quality of Service (QoS) -Funktionen zu unterstützen. Zum Beispiel kann bei n Prioritäten jedem Warteschlangenanordnungs- und Warteschlangenentfernungspufferpaar eine andere Priorität zugewiesen werden, so dass n Puffer für Warteschlangenanordnungsanfragen zugewiesen werden und n Puffer für Warteschlangenentfernungsanfragen zugewiesen werden. Jede eingehende Anfrage weist eine Priorität auf, die entweder vorab durch den anfragenden Kern/Thread zugewiesen wird oder durch den HQM 208 nach dem Erhalt durch den HQM 208 zugewiesen wird. Jede Anfrage wird dann in einem Puffer gespeichert, der der Priorität und/oder der Art der Anfrage (Warteschlangenanordnung oder Warteschlangenentfernung) entspricht.
  • In der veranschaulichenden Ausführungsform wird eine Bestätigung von dem Hardwarewarteschlangenmanager 208 zu dem Prozessorkern 202 gesendet, welcher den Befehl gesendet hat, wenn der Befehl dem Anfragepuffer 302 hinzugefügt wird. In anderen Ausführungsformen ist es möglich, dass keine Bestätigung gesendet wird. In einigen Ausführungsformen ist es möglich, dass der HQM 208 nicht in der Lage ist, jeden eingehenden Befehl zu bearbeiten, und einige Befehle nicht dem Anfragepuffer 302 hinzugefügt werden. Wenn ein Befehl nicht dem Anfragepuffer 302 hinzugefügt wird, kann der HQM 208 in einigen Ausführungsformen eine Ausfallmeldung zu dem Prozessorkern 202 senden, der mit dem Befehl verknüpft ist. In anderen Ausführungsformen ist es möglich, dass der HQM 208 keine Ausfallmeldung sendet. In einigen Ausführungsformen kann die Ausfallmeldung den Grund für den Ausfall spezifizieren (wie zum Beispiel kein verfügbarer Kredit oder ein voller Anfragepuffer), und in anderen Ausführungsformen kann er dies nicht. Die Ausfallmeldung oder die Bestätigung kann durch ein beliebiges Mittel zu dem Prozessorkern 202 gesendet werden, wie zum Beispiel ein Teil der gewöhnlichen Ausführung der Warteschlangenanordnungs-/Warteschlangenentfernungsanweisung des Prozessorkerns 202 oder als eine Unterbrechung zu dem Prozessorkern 202. In Ausführungsformen ohne eine Bestätigung oder eine Ausfallmeldung kann die Situation eines Befehls, der der Warteschlange nicht hinzugefügt wird, eine besondere Softwareberücksichtigung erfordern. In einigen Ausführungsformen kann der Hardwarewarteschlangenmanager 208 in der Lage sein, jeden eingehenden Befehl zu bearbeiten, was eine Bestätigung eines Befehls unnötig macht.
  • Die Planungsschaltung 304 ist konfiguriert, um die Reihenfolge zu bestimmen, in welcher die Befehle in den Puffern des Anfragepuffers 302 bearbeitet werden. Die Planungsschaltung 304 weist eine Planungsrichtlinie auf, welche durch Software konfiguriert werden kann. Die Planungsrichtlinie kann Ringverteilung, gewichtete Ringverteilung, unterbrechende Priorität und/oder eine Kombination von diesen und anderen Richtlinien verwenden.
  • Jeder veranschaulichende Warteschlangenanordnungsbefehl, der von dem HQM 208 erhalten wird, beinhaltet zu speichernde Daten und eine Warteschlangenadresse des Hardwarewarteschlangenmanagers 208, in welcher diese zu speichern sind, und jeder veranschaulichende Warteschlangenentfernungsbefehl, der von dem HQM 208 erhalten wird, beinhaltet eine Warteschlangenadresse des Hardwarewarteschlangenmanagers 208, von welcher Daten abzurufen sind. Wenn ein Warteschlangenanordnungsbefehl von der Warteschlangenanordnungsschaltung 306 bearbeitet wird, werden die Daten, die mit jenem Befehl verknüpft sind, in dem Warteschlangenspeicher 308 in der Warteschlange entsprechend der Warteschlangenadresse gespeichert.
  • Der Warteschlangenspeicher 308 kann eine beliebige geeignete Art von Speicher sein. In der veranschaulichenden Ausführungsform ist der Warteschlangenspeicher 308 ein SRAM. In anderen Ausführungsformen kann der Warteschlangenmanager 308 ein DRAM, ein Flash-Speicher oder eine sonstige Speicherart sein. Der Warteschlangenspeicher 308 ist logisch in einer oder mehreren Datenwarteschlangen in Warteschlangendatenstrukturen angeordnet. Jede Warteschlangendatenstruktur des Warteschlangenspeichers 308 ist mit einer anderen physikalischen Warteschlangenadresse verknüpft. Es versteht sich, dass die Warteschlangendatenstruktur eine First-in-First-out (FIFO) -Datenstruktur ist, die in der Lage ist, mehrere Einträge zu speichern, die mit derselben physikalischen Warteschlangenadresse verknüpft sind.
  • In einigen Ausführungsformen kann die Größe der Einträge von verschiedenen Warteschlangendatenstrukturen unterschiedlich sein. Zum Beispiel kann eine erste Warteschlange Einträge mit einer Länge von 32 Bits akzeptieren, während eine zweite Warteschlange Einträge mit einer Länge von 64 Bits akzeptieren kann. In einigen Ausführungsformen kann jeder Speicherort des Warteschlangenspeichers 308 einer spezifischen Warteschlangendatenstruktur zugewiesen werden und kann jede Warteschlangendatenstruktur eine feste maximale Größe aufweisen. In anderen Ausführungsformen kann die Größe von einer oder mehreren Warteschlangendatenstrukturen variabel sein und mehr oder weniger Speicher belegen, da Einträge der Warteschlange hinzugefügt und von dieser entfernt werden. Die Konfiguration der Warteschlangen kann durch Software bestimmt werden, z. B. unter Verwendung von MIMO (Memory-Mapped Input/Output). In einigen Ausführungsformen, wenn nicht genügend Platz in der Warteschlange verfügbar ist, was durch den Warteschlangenanordnungsbefehl angegeben wird, kann eine Ausfallmeldung (wie zum Beispiel eine Unterbrechung) zu dem Prozessorkern 202 gesendet werden, welcher den Befehl gesendet hat. In anderen Ausführungsformen kann der Warteschlangenanordnungsbefehl ohne irgendeine Kommunikation, die zu dem Prozessorkern 202 gesendet wurde, welcher den Befehl gesendet hat, verworfen werden.
  • Wenn ein Warteschlangenentfernungsbefehl von der Warteschlangenentfernungsschaltung 310 bearbeitet wird, werden die Daten an dem Anfang der Schlange, die von dem Warteschlangenentfernungsbefehl angegeben werden, von jener Schlange entfernt und zu dem Prozessorkern 202 gesendet, welcher den Warteschlangenentfernungsbefehl gesendet hat.
  • In einigen Ausführungsformen betreibt die optionale Kreditverwaltungsschaltung 312 ein Kreditverwaltungssystem zum Verwalten und Verfolgen einer Anzahl an Kreditpools. Durch Steuern der Kredite in jedem Kreditpool kann die Kreditverwaltungsschaltung 312 die Rate und Häufigkeit einstellen, mit welcher die eingehenden Anfragen von den anfragenden Prozessorkernen 202 und Threads gesendet werden. Die Kreditverwaltungsschaltung 312 verhindert einen Überschuss an eingehenden Anfragen, der einen Kernstillstand oder Anfragenverwerfungen verursachen kann. Die Verringerung des Überschusses an eingehenden Anfragen kann wiederum die Effizienz sowohl der anfragenden Prozessorkerne 202 als auch der Threads sowie des HQM 208 verbessern.
  • Bevor ein Kern oder Thread eine Warteschlangenanordnungs- oder Warteschlangenentfernungsanfrage zu dem HQM 208 senden kann, erhält er zunächst den angemessenen Kredit von der Kreditverwaltungsschaltung 312. Eine Anfrage, die von dem HQM 208 ohne den angemessenen Kredit erhalten wird, wird von dem HQM 208 nicht akzeptiert und/oder verworfen. In einer Ausführungsform verwaltet die Kreditverwaltungsschaltung 312 einen globalen Warteschlangenanordnungskreditpool und einen globalen Warteschlangenentfernungskreditpool. Die Größe dieser globalen Kreditpools entspricht jeweils der Gesamtkapazität des HQM zum Bearbeiten von eingehenden Warteschlangenanordnungs- und Warteschlangenentfernungsanfragen. Die Kreditverwaltungsschaltung 312 verwaltet auch ein Paar lokaler Warteschlangenanordnungs- und Warteschlangenentfernungskreditpools für jeden Prozessorkern 202 oder Thread. Die Größe von jedem Paar lokaler Warteschlangenanordnungs- und Warteschlangenentfernungskreditpools entspricht der Kapazität des HQM 208, die jenem bestimmten Prozessorkern 202 oder Thread zugewiesen ist. Der lokale Kreditpool kann von jedem Prozessorkern 202 oder Thread verwaltet werden oder alternativ zentral von der Kreditverwaltungsschaltung 312 verfolgt werden. Durch Steuern der Größe von jedem lokalen Kreditpool und der Rate, mit welcher sie wiederaufgefüllt werden, weist die Kreditverwaltungsschaltung 312 eine feingradige Steuerung bezüglich der Anzahl an Warteschlangenanordnungs-/Warteschlangenentfernungsanfragen auf, die von jedem Prozessorkern 202 oder Thread gesendet werden. Zum Beispiel kann die Kreditverwaltungsschaltung 312 eine Kreditwiederauffüllungsrichtlinie, wie zum Beispiel Ringverteilung oder gewichtete Ringverteilung, implementieren, um zu entscheiden, wann und in welchem Umfang jeder lokale Kreditpool wiederaufgefüllt wird. Die Kreditverwaltungsschaltung 312 kann auch Kredite zurückbehalten, um alle lokalen Kreditpools unversorgt zu lassen und somit die Rate zu verlangsamen, mit welcher die Prozessorkerne 202 oder Threads Anfragen zum Helfen des HQM 208, ausstehende Operationen nachzuholen, senden.
  • Die Warteschlangenmigrationsschaltung 314 ist konfiguriert, um den Inhalt einer Warteschlange von einem HQM 208 zum andern zu migrieren. Der Inhalt einer Warteschlange kann migriert werden, wenn zum Beispiel ein Thread, der auf die Warteschlange zugreift, von einem Prozessorkern 202 in der Nähe des HQM 208 zu einem anderen Prozessorkern 202, der weiter von dem Hardwarewarteschlangenmanager 208 entfernt ist, bewegt wird. In solch einer Situation könnte der Inhalt der Warteschlange zu einem anderen HQM 208 bewegt werden, der sich näher bei dem anderen Prozessorkern 202 befindet.
  • Die Warteschlangenmigrationsschaltung 314 beinhaltet eine Warteschlangenweiterleitungsschaltung 316, welche konfiguriert ist, um Warteschlangendaten, die in dem HQM 208 gespeichert sind, zu einem anderen HQM 208 zu senden. In einigen Ausführungsformen ist die Warteschlangenmigrationsschaltung 314 konfiguriert, um Unterbrechungen zwischen Prozessen zu jedem der Prozessorkerne 202 zu senden, um den zugehörigen Abbildungseintrag in jeder QMU 204 zu löschen (die QMU 204 wird nachstehend bezüglich 7 ausführlicher beschrieben). Die Planungsschaltung 304 kann in der Planungsrichtlinie in einigen Ausführungsformen eine Richtlinie beinhalten, die angibt, wie Befehle, die in dem Anfragepuffer 302 gespeichert sind, die mit der Warteschlange verknüpft sind, die migriert wird, bearbeitet werden (z. B. könnten sie mit derselben Priorität wie vor dem Starten der Migration bearbeitet werden, könnten sie mit einer höheren Priorität bearbeitet werden oder könnten sie mit einer niedrigeren Priorität bearbeitet werden). Die Warteschlangenmigrationsschaltung 314 beinhaltet auch eine Warteschlangenempfangsschaltung 318 zum Empfangen von Warteschlangeneinträgen, die zu dem HQM 208 von einem anderen HQM 208 gesendet werden. In einigen Ausführungsformen ist die Warteschlangenempfangsschaltung 318 konfiguriert, um eine Unterbrechung auszulösen, wenn die Migration abgeschlossen ist.
  • Unter Bezugnahme nunmehr auf 4 kann der HQM 208 im Gebrauch ein Verfahren 400 nach dem Erhalt eines Warteschlangenanordnungs- oder Warteschlangenentfernungsbefehls ausführen. Bei Block 402 beginnend erhält der HQM 208 den Warteschlangenanordnungs- oder Warteschlangenentfernungsbefehl von einem Prozessorkern 202 einschließlich des Erhaltens der Warteschlangenadresse in Block 404. Wenn der Befehl ein Warteschlangenanordnungsbefehl ist, erhält der HQM 208 auch Warteschlangenanordnungsdaten in Block 406.
  • In dem optionalen Block 408 bestimmt der HQM 208 in Ausführungsformen mit aktivierter Kreditverwaltungsschaltung 312, ob ein Kredit für den Befehl verfügbar ist. Wenn in Block 410 kein Kredit verfügbar ist, fährt das Verfahren 400 zu Block 412 fort. Ansonsten fährt das Verfahren 400 zu Block 416 fort. In Block 412 wird der Befehl verworfen, da kein Kredit verfügbar ist. In Block 414 wird in Ausführungsformen, in welchen Ausfallmeldungen gesendet werden, eine Ausfallmeldung zu dem Prozessorkern 202 gesendet, welcher den Befehl gesendet hat.
  • In Block 416 bestimmt der HQM 208, ob Platz in dem Anfragepuffer 302 verfügbar ist. Wenn in Block 418 kein Pufferplatz verfügbar ist, fährt das Verfahren 400 zu Block 420 fort. Ansonsten fährt das Verfahren 400 zu Block 422 von 5 fort. In Block 420 wird der Befehl verworfen, das kein Platz in dem Puffer verfügbar ist. In Block 422 wird in Ausführungsformen, in welchen Ausfallmeldungen gesendet werden, eine Ausfallmeldung zu dem Prozessorkern 202 gesendet, welcher den Befehl gesendet hat. In Ausführungsformen, in welchen genügend Ressourcen zum umgehenden Bearbeiten jeder Anfrage vorhanden sind, ist es möglicherweise nicht notwendig, den Befehl in dem Anfragepuffer 302 zu speichern und können die Blöcke 416 und 418 übersprungen werden.
  • In Block 424 von 5 wird der Befehl zu dem Anfragepuffer 302 hinzugefügt. In Block 426 kann in einigen Ausführungsformen eine Bestätigung, dass der Befehl erhalten und dem Anfragepuffer 302 hinzugefügt wurde, zu dem Prozessorkern 202 gesendet werden.
  • In Block 428 wählt der HQM 208 den zu bearbeitenden Befehl in dem Puffer aus. Wie zuvor beschrieben wurde, bestimmt die Planungsschaltung 304 die Reihenfolge, in welcher die Befehle in dem Anfragepuffer 302 bearbeitet werden. Natürlich kann der HQM 208 zusätzliche Befehle bearbeiten oder zusätzliche Befehle in dem Anfragepuffer 302 zwischen den Blöcken 424 und 428 akzeptieren.
  • Wenn in Block 430 der Befehl ein Warteschlangenanordnungsbefehl ist, fährt das Verfahren 400 zu Block 432 fort. Ansonsten fährt das Verfahren 400 zu Block 442 fort. In Block 432 bestimmt der HQM 208 für einen Warteschlangenanordnungsbefehl, ob in der Warteschlange, die von der Warteschlangenadresse des Befehls angegeben wird, Platz verfügbar ist. Wenn in Block 434 kein Platz verfügbar ist, fährt das Verfahren 400 zu Block 436 fort. Ansonsten fährt das Verfahren 400 zu Block 440 fort.
  • In Block 436 wird der Befehl verworfen, da kein Platz zum Speichern der Daten verfügbar ist. In Block 438 wird in Ausführungsformen, in welchen Ausfallmeldungen gesendet werden, eine Ausfallmeldung zu dem Prozessorkern 202 gesendet, welcher den Befehl gesendet hat. In Block 440 werden die Daten zu der adressierten Warteschlange hinzugefügt.
  • In Block 442 entfernt der HQM 208 für einen Warteschlangenentfernungsbefehl den Eintrag am Anfang der Warteschlange (d. h., den Eintrag, der zunächst in der Warteschlange unter allen Einträgen in der Warteschlange vorhanden war), die durch die Warteschlangenadresse des Befehls angegeben ist. In Block 444 sendet der HQM 208 die Eintragsdaten zu dem Prozessorkern 202, der den Befehl gesendet hat. Wenn keine Warteschlangendaten in der adressierten Warteschlange verfügbar sind, kann der HQM 208 in einigen Ausführungsformen Daten senden, die dies angeben, oder überhaupt keine Daten senden. In einigen Ausführungsformen kann der HQM 208 eine Unterbrechung zu dem Prozessorkern 202 senden, der mit dem Warteschlangenentfernungsbefehl verknüpft ist, wenn keine Warteschlangendaten in der adressierten Warteschlange verfügbar sind.
  • Unter Bezugnahme nunmehr auf 6 kann ein Verfahren 600 zum Migrieren einer Warteschlange von einem Quell-HQM 208 und einem Ziel-HQM 208 ausgeführt werden. In Block 602 erhält der Quell-HQM 208, der aktuell die Warteschlangendaten enthält, einen Warteschlangenmigrationsbefehl unter Angabe der Quellwarteschlange in dem Quell-HQM 208 und der Zielwarteschlange in dem Ziel-HQM 208. Der Quell-HQM 208 kann den Befehl auf viele verschiedene Arten erhalten, wie zum Beispiel durch MMIO oder durch Ausführen eines Migrationsbefehls durch einen der Prozessorkerne 202. Der Migrationsbefehl kann sein eigener Befehl der Anweisungsgruppe des Prozessorkerns 202 sein oder dieselbe Anweisung wie ein Warteschlangenanordnungs- oder Warteschlangenentfernungsbefehl mit einer speziellen Angabe eines Migrationsbefehls, wie zum Beispiel eine spezielle Warteschlangenadresse, sein.
  • In Block 604 sendet der Quell-HQM 208 Unterbrechungen zwischen Prozessen zu jeder QMU 204, um eine beliebige zwischengespeicherte Abbildung, die mit der zu migrierenden Warteschlange verknüpft ist, zu löschen (die QMU 204 wird nachstehend bezüglich 7 ausführlicher erläutert). In einigen Ausführungsformen können die Einträge in der QMU 204 durch andere Mittel ohne eine direkte Beteiligung irgendeines HQM 208 gelöscht werden.
  • In Block 606 bearbeitet der Quell-HQM 208 alle verbleibenden Befehle in dem Anfragepuffer 302. Wie zuvor ausführlicher beschrieben wurde, wird die Reihenfolge, in welcher die Befehle in dem Anfragepuffer 302 ausgeführt werden, durch die Planungsschaltung 304 bestimmt.
  • In Block 608 sendet der Quell-HQM 208 die Warteschlangeneinträge zu dem Ziel-HQM 208. In Block 610 lädt der Ziel-HQM 208 die Warteschlangeneinträge in den Warteschlangenspeicher 308 des Ziel-HQM 208. In Block 612 stellt der Ziel-HQM 208 einem Prozessorkern 202 (wie zum Beispiel dem Prozessorkern 202, welcher die Migration initiierte) eine Unterbrechung bereit, die angibt, dass die Migration abgeschlossen ist. In einigen Ausführungsformen kann der Quell-HQM 208 zusätzlich oder alternativ dem Prozessorkern 202 die Unterbrechung bereitstellen. In anderen Ausführungsformen kann weder der Quellnoch der Ziel-HQM 208 dem Prozessorkern 202 eine Unterbrechung bereitstellen.
  • Unter Bezugnahme nunmehr auf 7 beinhaltet jede veranschaulichende Warteschlangenabbildungseinheit (QMU, Queue Mapping Unit) 204 eine Autorisierungsverifizierungsschaltung 702, eine Abbildungstabellenlookupschaltung 704 und einen Warteschlangenadressenübersetzungspuffer (QTLB, Queue Translation Lookaside Buffer) 706. Es versteht sich, dass in einigen Fällen eine oder mehrere der Komponenten der QMU 204 einen Teil der Struktur beinhalten oder anderweitig enthalten können oder einen Teil der Funktionalität von einigen der anderen Komponenten durchführen können. Zum Beispiel kann die Autorisierungsverifizierungsschaltung 702 einen Teil des QTLB 706 beinhalten oder anderweitig bilden.
  • In der veranschaulichenden Ausführungsform funktionieren Warteschlangenadressen auf eine ähnliche Art wie virtuelle Speicheradressen, und wenn ein Thread, der auf einem Prozessorkern 202 abläuft, eine Warteschlangenadresse spezifiziert, gibt die Warteschlangenadresse eine virtuelle Warteschlangenadresse, keine physikalische Warteschlangenadresse, an. Jede gültige virtuelle Warteschlangenadresse ist mit einer physikalischen Warteschlangenadresse verknüpft, und die Warteschlangenabbildungstabelle 106, die in dem Speicher 104 gespeichert ist, enthält eine Abbildung für jede gültige virtuelle Warteschlangenadresse mit jeder entsprechenden physikalischen Warteschlangenadresse. Wenn ein Prozessorkern 202 einen Warteschlangenanordnungs- oder Warteschlangenentfernungsbefehl mit einer virtuellen Warteschlangenadresse erhält, bezieht sich der Prozessorkern 202 auf seine zugehörige QMU 204, um die virtuelle Warteschlangenadresse in eine physikalische Warteschlangenadresse zu übersetzen.
  • Die Autorisierungsverifizierungsschaltung 702 verifiziert, dass die virtuelle Warteschlangenadresse eine Adresse ist, auf die der aktuelle Thread des Prozessorkerns 202 Zugriff hat. In einigen Ausführungsformen muss die Autorisierungsverifizierungsschaltung 702 möglicherweise auf den Eintrag in der Warteschlangenabbildungstabelle 106 zugreifen, um die Verifizierung vorzunehmen. Natürlich kann die Autorisierungsverifizierungsschaltung 702 auf den Eintrag in dem QTLB 706 zugreifen, wenn er darin vorhanden ist.
  • Wenn die Warteschlangenabbildungseinheit 204 zunächst eine gewisse virtuelle Warteschlangenadresse abbildet, greift die Abbildungstabellenlookupschaltung 704 auf die Warteschlangenabbildungstabelle 106 in dem Speicher 104 zu. Die physikalische Warteschlangenadresse, die mit der virtuellen Warteschlangenadresse verknüpft ist, wird abgerufen und dem Prozessorkern 202 bereitgestellt. Die Abbildungstabellenlookupschaltung 704 beinhaltet eine QTLB-Aktualisierungsschaltung 708, welche den QTLB 706 mit den Abbildungsinformationen aktualisiert.
  • Der QTLB 706 ist konfiguriert, um Abbildungsinformationen zu speichern, die von der Abbildungstabellenlookupschaltung 704 in einem Zwischenspeicher 710 des QTLB 706 erhalten werden. Vor dem Zugreifen auf die Warteschlangenabbildungstabelle 106 kann die Warteschlangenabbildungseinheit 204 überprüfen, ob eine abzubildende virtuelle Warteschlangenadresse in dem Zwischenspeicher 710 des QTLB 706 vorhanden ist. Wenn sie es ist, kann die Abbildung von dem QTLB 706 abgerufen werden und ist ein Überprüfen der Warteschlangenabbildungstabelle 106 nicht notwendig.
  • Wenn sich die Abbildung einer virtuellen Warteschlangenadresse ändert (zum Beispiel während einer Warteschlangenmigration, wie zuvor bezüglich 6 erläutert wurde), wird ein QTLB-Shootdown zu der QMU 204 gesendet, z. B. durch eine Unterbrechung zwischen Prozessen, die zu dem Prozessorkern 202 gesendet wird, der mit der QMU 204 verknüpft ist. Der QTLB-Shootdown wird durch die Shootdown-Schaltung 712 des QTLB 706 bearbeitet, welche den Eintrag des Zwischenspeichers 710 aktualisiert, der mit der virtuellen Adresse verknüpft ist, die als Teil des QTLB-Shootdowns gesendet wird.
  • Es versteht sich, dass in einigen Ausführungsformen ein Prozessorkern 202 in der Lage sein kann, direkt auf die physikalischen Warteschlangenadressen einzuwirken, ohne dass diese zunächst von der QMU 204 von virtuellen Adressen übersetzt zu werden. Solche Ausführungsformen können immer direkt auf die physikalischen Warteschlangenadressen einwirken und weisen möglicherweise keine zugehörige QMU 204 auf, oder solche Ausführungsformen können nur manchmal direkt auf die physikalischen Warteschlangenadressen einwirken und immer noch eine zugehörige QMU 204 aufweisen.
  • Unter Bezugnahme nunmehr auf 8 kann die QMU 204 im Gebrauch ein Verfahren 800 zum Übersetzen einer virtuellen Adresse in eine physikalische Adresse ausführen. In Block 802 erhält die QMU 204 eine virtuelle Warteschlangenadresse von einem Prozessorkern 202.
  • In Block 804 überprüft die QMU 204 den QTLB 706 auf einen Eintrag, der die Übersetzung von der virtuellen Warteschlangenadresse in die zugehörige physikalische Warteschlangenadresse angibt. Wenn in Block 806 der Eintrag in dem QTLB 706 gefunden wird, springt das Verfahren 800 zu Block 820 von 9. Ansonsten fährt das Verfahren zu Block 808 fort. In Block 808 greift die QMU 204 auf die Warteschlangenabbildungstabelle 106 in dem Speicher 104 zu. In Block 810 erhält die QMU 204 eine Antwort von der Warteschlangenabbildungstabelle 106, welche entweder die Übersetzung beinhaltet oder angibt, dass die Übersetzung nicht verfügbar war (z. B. weil die virtuelle Warteschlangenadresse nicht gültig war). In Block 812 bestimmt die QMU 204, ob die Antwort angibt, dass eine Übersetzung in der Warteschlangenabbildungstabelle gefunden wurde. Wenn die Übersetzung in der Warteschlangenabbildungstabelle in Block 814 gefunden wird, stellt das Verfahren 800 eine Unterbrechung dem Prozessorkern 202 entsprechend der QMU 204 in Block 816 bereit. Ansonsten aktualisiert die QMU 204 in Block 818 den QTLB 706 mit der übersetzten physikalischen Warteschlangenadresse.
  • Das Verfahren 800 fährt dann zu Block 820 von 9 fort, in welchem die QMU 204 bestimmt, ob ein Zugriff auf die physikalische Warteschlangenadresse autorisiert wird. In einigen Ausführungsformen kann die QMU 204 zusätzlich oder alternativ überprüfen, ob ein Zugriff autorisiert wird, auf Grundlage der virtuellen Warteschlangenadresse, ohne notwendigerweise zunächst die virtuelle Warteschlangenadresse in eine physikalische Warteschlangenadresse zu übersetzen.
  • Wenn in Block 822 der Zugriff nicht autorisiert wird, fährt das Verfahren 800 zu Block 824 fort, in welchem eine Unterbrechung dem Prozessorkern 202 bereitgestellt wird, der mit der QMU 204 verknüpft ist. Ansonsten stellt die QMU 204 die physikalische Warteschlangenadresse dem Prozessorkern 202, der mit der QMU 204 verknüpft ist, in Block 826 bereit. In einigen Ausführungsformen kann der gesamte Warteschlangenanordnungs- (oder Warteschlangenentfernungs-) -Befehl zu der QMU 204 gesendet werden, welche die virtuelle Warteschlangenadresse in eine physikalische Warteschlangenadresse übersetzt und dann den Befehl zu dem adressierten HQM 208 sendet, ohne jemals die physikalische Warteschlangenadresse zu dem zugehörigen Prozessorkern 202 zurückzugeben.
  • Unter Bezugnahme nunmehr auf 10 kann die QMU 204 im Gebrauch ein Verfahren 1000 zum Aktualisieren des Warteschlangenadressenübersetzungspuffers 706 ausführen. Das Verfahren 1000 beginnt in Block 1002, in welchem die QMU 204 ein Signal empfängt, das eine Änderung in der Warteschlangenabbildungstabelle anzeigt. In der veranschaulichenden Ausführungsform zeigt das Signal die virtuelle Warteschlangenadresse an, die mit der Änderung verknüpft ist. In anderen Ausführungsformen kann das Signal zusätzlich eine neue physikalische Adresse für die virtuelle Warteschlangenadresse angeben. In Block 1004 aktualisiert die QMU 204 den QTLB 706. In der veranschaulichenden Ausführungsform wird der QTLB 706 durch Entfernen oder Löschen des Eintrags, der mit der virtuellen Warteschlangenadresse verknüpft ist, aktualisiert. In anderen Ausführungsformen, in welchen das Signal die neue physikalische Warteschlangenadresse für die virtuelle Warteschlangenadresse angibt, aktualisiert die QMU 204 den Eintrag in dem QTLB 706 mit der neuen physikalischen Warteschlangenadresse.
  • Unter Bezugnahme nunmehr auf 11 kann die Computervorrichtung 100 im Gebrauch eine Umgebung 1100 einrichten. Die veranschaulichende Umgebung 1100 beinhaltet ein Warteschlangenkonfigurationsmodul 1102, ein Warteschlangenabbildungstabellenkonfigurationsmodul 1104, ein Warteschlangenanordnungsmodul 1106, ein Warteschlangenentfernungsmodul 1108 und ein Warteschlangenabbildungsänderungsmodul 1110. Die diversen Module der Umgebung 1100 können als Hardware, Software, Firmware oder eine Kombination davon realisiert sein. Zum Beispiel können die diversen Module, die Logik und sonstige Komponenten der Umgebung 1100 einen Teil von dem Prozessor 102 oder sonstigen Hardwarekomponenten der Computervorrichtung 100, wie zum Beispiel der Speicher 104, bilden oder anderweitig von diesen eingerichtet werden. Von daher können in einigen Ausführungsformen eines oder mehrere der Module der Umgebung 1100 als Schaltung oder Sammlung von elektrischen Vorrichtungen (z. B. eine Warteschlangenkonfigurationsschaltung 1102, eine Warteschlangenabbildungstabellenkonfigurationsschaltung 1104, eine Warteschlangenanordnungsschaltung 1106 usw.) realisiert sein. Es versteht sich, dass in solchen Ausführungsformen eine oder mehrere der Schaltungen (z. B. die Warteschlangenkonfigurationsschaltung 1102, die Warteschlangenabbildungstabellenkonfigurationsschaltung 1104, eine Warteschlangenanordnungsschaltung 1106 usw.) einen Teil von einem(einer) oder mehreren des Prozessors 102, des Speichers 104, des E/A-Subsystems 108 und/oder der Datenablage 110 bilden können. Zusätzlich können in einigen Ausführungsformen eines oder mehrere der veranschaulichenden Module einen Teil eines anderen Moduls bilden und/oder können eines oder mehrere der veranschaulichenden Module unabhängig voneinander sein.
  • Das Warteschlangenkonfigurationsmodul 1102 ist konfiguriert, um eine Konfiguration von einer oder mehreren Warteschlangen in jedem der HQMs 208 des Prozessors 102 der Computervorrichtung 100 durchzuführen. In der veranschaulichenden Ausführungsform führt das Warteschlangenkonfigurationsmodul 1102 die Konfiguration unter Verwendung von MMIO durch. In anderen Ausführungsformen kann das Warteschlangenkonfigurationsmodul 1102 die Konfiguration unter Verwendung von anderen Mitteln, wie zum Beispiel spezifischer Anweisungen des Prozessors 102 oder spezieller Parameter der Warteschlangenanordnungs- und/oder Warteschlangenentfernungsanweisungen des Prozessors 102, durchführen. Beim Konfigurieren von einer oder mehrerer Warteschlangen eines HQM 208 spezifiziert das Warteschlangenkonfigurationsmodul 1102 diverse Parameter für die Warteschlange(n), wie zum Beispiel die Größe von jedem Eintrag in der Warteschlange und die Gesamtgröße der Warteschlange. In einigen Ausführungsformen spezifiziert das Warteschlangenkonfigurationsmodul 1102, ob die Gesamtgröße der Warteschlange fest oder dynamisch ist (d. h., falls nötig durch den HQM 208 größer oder kleiner gemacht werden kann). Das Warteschlangenkonfigurationsmodul 1102 kann auch eine Planungsrichtlinie des HQM 208 spezifizieren, welche die Reihenfolge angibt, in welcher Elemente in dem Anfragepuffer 302 ausgeführt werden, wie zum Beispiel in der Reihenfolge, in welcher sie erhalten werden, Ringverteilung, gewichtete Ringverteilung, unterbrochene Priorität usw.
  • Das Warteschlangenabbildungstabellenkonfigurationsmodul 1104 ist konfiguriert, um eine Konfiguration der Warteschlangenabbildungstabelle 106 in dem Speicher 104 durchzuführen. Wie zuvor erläutert wurde, gibt die Warteschlangenabbildungstabelle 106 eine Abbildung für jede virtuelle Warteschlangenadresse mit einer entsprechenden physikalischen Warteschlangenadresse an. In einigen Ausführungsformen wird eine einzige globale Abbildung vorhanden sein, die für jeden Thread der Computervorrichtung 100 effektiv ist. In anderen Ausführungsformen werden einige oder alle Threads ihren eigenen virtuellen Warteschlangenadressenplatz aufweisen und wird das Warteschlangenabbildungstabellenkonfigurationsmodul 1104 eine Abbildung für jede gültige virtuelle Warteschlangenadresse für jeden virtuellen Warteschlangenadressenplatz einrichten. In der veranschaulichenden Ausführungsform beinhaltet die Warteschlangenabbildungstabelle 106 auch Informationen, die angeben, welcher Thread oder Prozessorkern 202 autorisiert ist, um auf welche physikalische Warteschlangenadresse zuzugreifen.
  • Wenn das Warteschlangenkonfigurationsmodul 1102 die Konfiguration einer Warteschlange ändert, muss das Warteschlangenabbildungstabellenkonfigurationsmodul 1104 möglicherweise die Warteschlangenabbildungstabelle 106 aktualisieren und einen QTLB-Shootdown in jeder QMU 204 des Prozessors 102 initiieren, um die Zwischenspeichereinträge in der QMU 204 bezüglich der aktualisierten Einträge in der Warteschlangenabbildungstabelle 106 zu entleeren oder aktualisieren. In der veranschaulichenden Ausführungsform kann der QTLB-Shootdown unter Verwendung von MMIO initiiert werden. In anderen Ausführungsformen kann der QTLB-Shootdown unter Verwendung von anderen Mitteln, wie zum Beispiel spezifischer Anweisungen des Prozessors 102 oder spezieller Parameter der Warteschlangenanordnungs- und/oder Warteschlangenentfernungsanweisungen des Prozessors 102, initiiert werden. In einigen Ausführungsformen kann der Prozessor 102 automatisch den QTLB-Shootdown initiieren, nachdem bestimmt wird, dass sich ein Eintrag in der Warteschlangenabbildungstabelle 106 geändert hat.
  • Das Warteschlangenmodul 1106 ist konfiguriert, um Warteschlangendaten in einer gewünschten Warteschlangendatenstruktur eines Ziel-HQM 208 des Prozessors 102 der Computervorrichtung 100 unter Verwendung einer Anweisung des Prozessors 102 anzuordnen. In einigen Ausführungsformen ist das Warteschlangenanordnungsmodul 1106 ferner konfiguriert, um beliebige Fehler, Ausnahmen oder Unterbrechungen im Zusammenhang mit dem Anordnen in der Warteschlange, wie zum Beispiel eine Angabe dahingehend, dass nicht genügend Raum in dem Anfragepuffer 302 oder der Zielwarteschlangendatenstruktur vorhanden ist, zu bearbeiten.
  • Das Warteschlangenentfernungsmodul 1108 ist konfiguriert, um Daten von einer gewünschten Warteschlangendatenstruktur eines Ziel-HQM 208 des Prozessors 102 der Computervorrichtung 100 unter Verwendung einer Anweisung des Prozessors 102 zu entfernen. In einigen Ausführungsformen ist das Warteschlangenentfernungsmodul 1108 ferner konfiguriert, um beliebige Fehler, Ausnahmen oder Unterbrechungen im Zusammenhang mit dem Entfernen aus der Warteschlange, wie zum Beispiel eine Angabe dahingehend, dass nicht genügend Raum in dem Anfragepuffer 302 vorhanden ist oder dass keine Daten in der gewünschten Warteschlangendatenstruktur verfügbar sind, zu bearbeiten.
  • Das Warteschlangenabbildungsänderungsmodul 1110 ist konfiguriert, um zu bestimmen, ob und wann eine Änderung in der Warteschlangenabbildungstabelle 106 gewünscht wird. Zum Beispiel kann das Warteschlangenabbildungsänderungsmodul 1110 in einigen Ausführungsformen jedes Mal, wenn ein Thread in einen Prozessorkern 202 ein- oder aus diesem ausgelagert wird, eine optimale Platzierung (d. h., den optimalen HQM 208) für eine oder mehrere virtuelle Warteschlangen bestimmen. In der veranschaulichenden Ausführungsform ist das Warteschlangenabbildungsänderungsmodul 1110 konfiguriert, um die Latenz für einen Warteschlangenentfernungsbefehl von dem Prozessorkern 202, der in Betracht kommt, zu jedem HQM 208 des Prozessors 102 zu bestimmen, und wird der HQM 208 mit der geringsten Latenz zur Platzierung der virtuellen Warteschlange, von welcher der Prozessorkern 202 ein Entfernen durchführen wird, ausgewählt. In anderen Ausführungsformen können zusätzliche Faktoren, wie zum Beispiel die Latenz für Warteschlangenanordnungsvorgänge bei der virtuellen Warteschlange, die Latenz für Warteschlangenentfernungsvorgänge von zusätzlichen Prozessorkernen 202, welche ein Entfernen aus der Warteschlange durchführen werden, die Gesamtkosten der Migration der virtuellen Warteschlange und die Auswirkung bezüglich anderer virtueller Warteschlangen, die möglicherweise entfernt werden müssen, um in dem gewünschten HQM 208 Platz verfügbar zu machen, berücksichtigt werden.
  • Das Warteschlangenmigrationsmodul 1112 ist konfiguriert, um eine virtuelle Warteschlange von ihrem aktuellen HQM 208 zu dem Ziel-HQM 208 zu migrieren, wenn das Warteschlangenabbildungsänderungsmodul 1110 bestimmt, dass die virtuelle Warteschlange bewegt werden sollte. In der veranschaulichenden Ausführungsform initiiert das Warteschlangenmigrationsmodul 1112 die Migration unter Verwendung von MMIO und führt der Prozessor 102 die Migration ohne irgendeine weitere Anweisung von dem Warteschlangenmigrationsmodul 1112 aus. In anderen Ausführungsformen kann das Warteschlangenmigrationsmodul 1112 die Migration unter Verwendung von anderen Mitteln, wie zum Beispiel spezifischer Anweisungen des Prozessors 102 oder spezieller Parameter für die Warteschlangenanordnungs- und/oder Warteschlangenentfernungsanweisungen des Prozessors 102, initiieren. Wie zuvor bezüglich 6 ausführlicher erläutert wurde, wird, wenn die Migration abgeschlossen ist, eine Unterbrechung ausgelöst, um dem Warteschlangenmigrationsmodul 1112 zu signalisieren, dass die Migration abgeschlossen ist. In einigen Ausführungsformen kann das Warteschlangenmigrationsmodul 1112 einige der Schritte der Migration, wie zum Beispiel das Entfernen aller Daten in dem aktuellen HQM 208 und Hinzufügen derselbigen zu dem Ziel-HQM 208, durchführen.
  • Wahlweise beinhaltet die Computervorrichtung 100 ein Kreditverwaltungsmodul 1114. Das Kreditverwaltungsmodul 1114 ist konfiguriert, um einen Kredit von der Kreditverwaltungsschaltung 312 eines HQM 208 vor einem Warteschlangenanordnungs- oder Warteschlangenentfernungsvorgang zu erhalten und irgendeinen Kredit zu verwalten, der mit irgendeiner Kreditverwaltungsschaltung 312 verknüpft ist.
  • Unter Bezugnahme nunmehr auf 12 kann die Computervorrichtung 100 im Gebrauch ein Verfahren 1200 zum Konfigurieren einer Warteschlange für einen HQM 208 des Prozessors 102 ausführen. Das Verfahren 1200 beginnt in Block 1202, in welchem die Computervorrichtung 100 die Parameter für die Warteschlange einschließlich der Größe eines Eintrags in der Warteschlange sowie der Gesamtgröße der Warteschlange bestimmt. Die Computervorrichtung 100 kann auch eine Planungsrichtlinie für den HQM 208 bestimmen, der mit der Warteschlange verknüpft ist. In Ausführungsformen mit einer dynamischen Bemessung einer Warteschlange kann die Computervorrichtung 100 spezifizieren, dass die Größe dynamisch ist, anstatt einen Parameter zu bestimmen, der die Gesamtgröße der Warteschlange angibt.
  • In Block 1204 bestimmt die Computervorrichtung 100 die optimale Platzierung für die Warteschlange, die konfiguriert wird. Wie zuvor erläutert wurde, kann die Computervorrichtung 100 die erwartete Warteschlangenentfernungslatenz für die Warteschlange sowie Faktoren, wie zum Beispiel die erwartete Warteschlangenanordnungslatenz und den Overhead für irgendeine erforderliche Migration von Warteschlangen berücksichtigen.
  • In Block 1206 konfiguriert die Computervorrichtung 100 den optimalen HQM 208 unter Verwendung der in Block 1204 bestimmten Parameter. Natürlich muss, wenn eine andere Warteschlange bereits in dem optimalen HQM 208 vorhanden ist, diese Warteschlange möglicherweise migriert werden, bevor der HQM 208 für die neue Warteschlange konfiguriert wird. In Block 1208 aktualisiert die Computervorrichtung 100 die Warteschlangenabbildungstabelle 106 mit den neuen Abbildungsinformationen bezüglich der Warteschlange.
  • Unter Bezugnahme nunmehr auf 13 kann die Computervorrichtung 100 im Gebrauch ein Verfahren 1300 zum Migrieren einer virtuellen Warteschlange ausführen. Das Verfahren 1300 beginnt in Block 1302, in welchem die Computervorrichtung bestimmt, ob sich die Warteschlange aktuell in dem optimalen HQM 208 befindet. Hierzu kann die Computervorrichtung 100 die erwartete Warteschlangenentfernungslatenz für die Warteschlange in jedem HQM 208 sowie Faktoren, wie zum Beispiel die erwartete Warteschlangenanordnungslatenz und den Overhead für irgendeine erforderliche Migration von Warteschlangen, berücksichtigen. Wenn erwartet wird, dass mehrere Prozessorkerne 202 ein Entfernen von der virtuellen Warteschlange durchführen, kann die Computervorrichtung 100 die erwartete durchschnittliche Latenz für alle Prozessorkerne 202 bestimmen oder die erwartete durchschnittliche Latenz je Warteschlangenentfernungsvorgang durch Bilden eines gewichteten Mittelwerts der Latenzen auf Grundlage der Häufigkeit, mit welcher erwartet wird, dass jeder Prozessorkern 202 einen Warteschlangenentfernungsvorgang durchführt, bestimmen.
  • Wenn sich in Block 1304 die virtuelle Warteschlange aktuell in dem optimalen HQM 208 befindet, fährt das Verfahren in Block 1306 mit der Bearbeitung fort, ohne irgendwelche Änderungen vorzunehmen. Ansonsten fährt das Verfahren 1300 zu Block 1308 fort. In Block 1308 migriert die Computervorrichtung 100 die virtuelle Warteschlange von dem aktuellen HQM 208 zu dem optimalen HQM 208. Wie zuvor beschrieben wurde, kann die Computervorrichtung 100 die Migration unter Verwendung von MMIO initiieren. Die Computervorrichtung 100 kann auch als Teil der Migration die Warteschlangenabbildungstabelle 106 aktualisieren.
  • Unter Bezugnahme nunmehr auf 14 kann die Computervorrichtung 100 im Gebrauch ein Verfahren 1400 zum Anordnen und Entfernen von Warteschlangendaten in und aus einer Warteschlange eines HQM 208 der Computervorrichtung 100 ausführen. In Ausführungsformen, in welchen die Kreditverwaltungsschaltung 312 aktiviert ist, kann das Verfahren 1400 mit Block 1402 beginnen, in welchem die Computervorrichtung 100 bestimmt, ob ein Warteschlangenanordnungskredit erhalten wird. In einigen Ausführungsformen, wenn in Block 1404 kein Warteschlangenanordnungskredit erhalten wird, fordert die Computervorrichtung 100 einen Warteschlangenanordnungskredit in Block 1406 von dem Ziel-HQM 208 an und kehrt zu Block 1402 zurück, um erneut zu überprüfen, ob ein Warteschlangenanordnungskredit erhalten worden ist.
  • Wenn ein Warteschlangenanordnungskredit erhalten worden ist oder wenn die Kreditverwaltungsschaltung 312 nicht aktiviert ist, fährt das Verfahren 1400 zu Block 1408 fort. In Block 1408 ordnet die Computervorrichtung 100 Daten von dem Quellprozessorkern 202 in einer Warteschlange an dem Ziel-HQM 208 an. Als Teil des Warteschlangenanordnungsschritts in dem veranschaulichenden Block 1410 spezifiziert die Computervorrichtung 100 eine Warteschlangenadresse und ein Register des Quellprozessorkerns 202, das die in einer Warteschlange anzuordnenden Daten enthält. In anderen Ausführungsformen kann die Computervorrichtung 100 die Daten direkt in dem in einer Warteschlange anzuordnenden Warteschlangenanordnungsbefehl spezifizieren, anstatt ein Register zu spezifizieren. In der veranschaulichenden Ausführungsform ist die Warteschlangenadresse eine virtuelle Warteschlangenadresse und wird von der QMU 204, die mit dem Quellprozessorkern 202 verknüpft ist, in eine physikalische Warteschlangenadresse in Block 1412 übersetzt. In einigen Ausführungsformen kann die Warteschlangenadresse eine physikalische Warteschlangenadresse sein und keine Übersetzung notwendig sein.
  • In einigen Ausführungsformen bestimmt in Block 1414 die Computervorrichtung 100, ob der Warteschlangenanordnungsbefehl fehlschlug. Als Teil dieser Bestimmung kann die Computervorrichtung 100 in Block 1416 bestimmen, ob eine Bestätigung erhalten wurde und/oder in Block 1418 bestimmen, ob eine Ausfallmeldung erhalten wurde. In Ausführungsformen, in welchen Bestätigungen, jedoch keine Ausfallmeldungen, gesendet werden, kann ein fehlender Erhalt der Bestätigung anzeigen, dass der Warteschlangenanordnungsbefehl fehlschlug. In Ausführungsformen, in welchen Ausfallmeldungen, jedoch keine Bestätigungen, gesendet werden, kann ein fehlender Erhalt der Ausfallmeldung anzeigen, dass der Warteschlangenanordnungsbefehl Erfolg hatte.
  • In Block 1420, wenn die Warteschlangenanordnung fehlschlug, kehrt das Verfahren 1400 zu Block 1408 zurück, in welchem die Computervorrichtung 100 erneut versucht, Daten von dem Quellprozessorkern 202 zu dem Ziel-HQM 208 in einer Warteschlange anzuordnen. Ansonsten fährt das Verfahren 1400 zu Block 1422 von 15 fort. In Block 1422 in Ausführungsformen, in welchen die Kreditverwaltungsschaltung 312 aktiviert ist, bestimmt die Computervorrichtung 100, ob ein Warteschlangenentfernungskredit erhalten wird. Wenn die Computervorrichtung 100 in Block 1424 bestimmt, dass der Warteschlangenentfernungskredit nicht erhalten wird, fordert die Computervorrichtung 100 einen Warteschlangenentfernungskredit in Block 1426 von dem Ziel-HQM 208 an und kehrt das Verfahren 1400 zu Block 1422 zurück, in welchem die Computervorrichtung 100 erneut bestimmt, ob ein Warteschlangenentfernungskredit erhalten worden ist.
  • Unter Bezugnahme auf Block 1424, wenn ein Warteschlangenentfernungskredit erhalten worden ist oder wenn die Kreditverwaltungsschaltung 312 nicht aktiviert ist, fährt das Verfahren 1400 zu Block 1428 fort. In Block 1428 entfernt die Computervorrichtung 100 Daten aus der Warteschlange von dem Ziel-HQM 208 zu dem Zielprozessorkern. Als Teil des Warteschlangenentfernungsprozesses spezifiziert die Computervorrichtung 100 in Block 1430 die Warteschlangenadresse und ein Register des Zielprozessorkerns 202 für die zu speichernden Daten, die aus der Warteschlange entfernt wurden. In der veranschaulichenden Ausführungsform ist die Warteschlangenadresse eine virtuelle Warteschlangenadresse und wird von der QMU 204, die mit dem Zielprozessorkern 202 verknüpft ist, in eine physikalische Warteschlangenadresse in Block 1432 übersetzt. In einigen Ausführungsformen kann die Warteschlangenadresse eine physikalische Warteschlangenadresse sein und keine Übersetzung notwendig sein.
  • In der veranschaulichenden Ausführungsform werden die aus der Warteschlange entfernten Daten an den Zielprozessorkern zurückgegeben und in dem Zielregister in Block 1428 gespeichert. In einigen Ausführungsformen kann die Computervorrichtung 100 in Block 1434 bestimmen, ob der Warteschlangenentfernungsbefehl fehlgeschlagen ist. Als Teil dieser Bestimmung kann die Computervorrichtung in Block 1436 bestimmen, ob eine Bestätigung erhalten wurde, und/oder in Block 1438 bestimmen, ob eine Ausfallmeldung erhalten wurde. In Ausführungsformen, in welchen Bestätigungen, jedoch keine Ausfallmeldung, gesendet werden, kann ein fehlender Erhalt der Bestätigung anzeigen, dass der Warteschlangenanordnungsbefehl fehlschlug. In Ausführungsformen, in welchen Ausfallmeldungen, jedoch keine Bestätigungen, gesendet werden, kann ein fehlender Erhalt der Ausfallmeldung anzeigen, dass der Warteschlangenanordnungsbefehl Erfolg hatte.
  • In Block 1440, wenn das Entfernen aus der Warteschlange fehlschlug, kehrt das Verfahren 1400 zu Block 1428 zurück, in welchem die Computervorrichtung 100 erneut versucht, Daten aus der Warteschlange von dem Ziel-HQM 208 zu dem Zielprozessorkern zu entfernen. Ansonsten ist der Warteschlangenentfernungsbefehl abgeschlossen und ist das Verfahren 1400 abgeschlossen und kann die Computervorrichtung 100 weiterhin arbeiten.
  • Unter Bezugnahme nunmehr auf 16 zeigt eine vereinfachte Veranschaulichung mehrere mögliche Ausführungsformen mit verschiedenen Verteilungen von HQMs 208 unter den Prozessorkernen 202. Jeder schwarze Block zeigt einen Prozessorkern 202 an und jeder graue Block zeigt einen Prozessorkern 202 und einen nahegelegenen HQM 208 an. Jeder Prozessorkern 202 ist mit jedem HQM 208 unter Verwendung der Verbindungsschaltung 206 verbunden, was durch die Linien, die die Blöcke verbinden, dargestellt ist. Jede Ausführungsform in 16 weist 64 Prozessorkerne mit einem (links oben), vier (rechts oben), acht (links unten) oder sechzehn (rechts unten) HQMs 208 auf. Für jede Ausführungsform von 16 wurde eine optimale Platzierung für die HQMs 208 bestimmt. Die optimale Platzierung minimiert die durchschnittliche Warteschlangenentfernungslatenz für jeden Prozessorkern 202 unter der Annahme, dass jeder Prozessorkern 202 auf den nächsten HQM 208 zugreift.
  • BEISPIELE
  • Veranschaulichende Beispiele der hier offenbarten Vorrichtungen, Systeme und Verfahren sind nachstehend bereitgestellt. Eine Ausführungsform der Vorrichtungen, Systeme und Verfahren kann ein oder mehrere der nachstehend beschriebenen Beispiele und jede Kombination davon beinhalten.
  • Beispiel 1 beinhaltet einen Prozessor, der mehrere Prozessorkerne umfasst; mehrere Hardwarewarteschlangenmanager; und eine Verbindungsschaltung, um jeden Hardwarewarteschlangenmanager der mehreren Hardwarewarteschlangenmanager mit jedem Prozessorkern der mehreren Prozessorkerne zu verbinden, wobei jeder Hardwarewarteschlangenmanager der mehreren Hardwarewarteschlangenmanager eine Warteschlangenanordnungsschaltung umfasst, um Daten zu speichern, die von einem Prozessorkern der mehreren Prozessorkerne in einer Datenwarteschlange erhalten wurden, die mit dem jeweiligen Hardwarewarteschlangenmanager verknüpft ist, als Reaktion auf einen Warteschlangenanordnungsbefehl, der von dem Prozessorkern erzeugt wird, wobei der Warteschlangenanordnungsbefehl den jeweiligen Hardwarewarteschlangenmanager und die Warteschlangenentfernungsschaltung kennzeichnet, um die Daten aus der Datenwarteschlange, die mit dem jeweiligen Hardwarewarteschlangenmanager verknüpft ist, als Reaktion auf einen Warteschlangenentfernungsbefehl abzurufen, der von einem Prozessorkern der mehreren Prozessorkerne erzeugt wird, wobei der Warteschlangenentfernungsbefehl den jeweiligen Hardwarewarteschlangenmanager kennzeichnet.
  • Beispiel 2 beinhaltet den Gegenstand von Beispiel 1, wobei der Warteschlangenanordnungsbefehl eine physikalische Warteschlangenadresse des jeweiligen Hardwarewarteschlangenmanagers umfasst, wobei das Speichern der Daten das Hinzufügen der Daten zu einer Warteschlangendatenstruktur in der Warteschlangenspeicherschaltung des jeweiligen Hardwarewarteschlangenmanagers auf Grundlage der physikalischen Warteschlangenadresse umfasst, wobei der Warteschlangenentfernungsbefehl ferner die physikalische Warteschlangenadresse umfasst, und wobei er zum Abrufen der Daten von der Datenwarteschlange das Entfernen der Daten aus der Warteschlangendatenstruktur der Warteschlangenspeicherschaltung auf Grundlage der physikalischen Warteschlangenadresse umfasst.
  • Beispiel 3 beinhaltet den Gegenstand von einem der Beispiele 1 und 2, wobei die Warteschlangendatenstruktur der Warteschlangenspeicherschaltung mindestens zwei Einträge enthalten soll, die mit der physikalischen Warteschlangenadresse verknüpft sind.
  • Beispiel 4 beinhaltet den Gegenstand von einem der Beispiele 1-3, wobei die Warteschlangenspeicherschaltung ferner eine zweite Warteschlangendatenstruktur umfasst, wobei die zweite Warteschlangendatenstruktur mindestens zwei Einträge enthalten soll, die mit einer zweiten physikalischen Warteschlangenadresse verknüpft sind.
  • Beispiel 5 beinhaltet den Gegenstand von einem der Beispiele 1-4, wobei Einträge, die mit den Warteschlangendatenstrukturen verknüpft sind, eine andere Größe als Einträge, die mit der zweiten Warteschlangendatenstruktur verknüpft sind, aufweisen.
  • Beispiel 6 beinhaltet den Gegenstand von einem der Beispiele 1-5, wobei die Warteschlangendatenstruktur eine andere Gesamtgröße als die zweite Warteschlangendatenstruktur aufweist.
  • Beispiel 7 beinhaltet den Gegenstand von einem der Beispiele 1-6, wobei die Gesamtgröße der Warteschlangendatenstruktur dynamisch ist.
  • Beispiel 8 beinhaltet den Gegenstand von einem der Beispiele 1-7, wobei jeder Hardwarewarteschlangenmanager der mehreren Hardwarewarteschlangenmanager ferner einen Anfragepuffer umfasst, wobei der Anfragepuffer die Daten und die physikalische Warteschlangenadresse als Reaktion auf den Warteschlangenanordnungsbefehl, der von dem Prozessorkern erzeugt wird, bevor die Daten von der Warteschlangenanordnungsschaltung gespeichert werden, speichern soll, die physikalische Warteschlangenadresse als Reaktion auf den Warteschlangenentfernungsbefehl, der von dem Prozessorkern erzeugt wird, bevor die Daten von der Warteschlangenentfernungsschaltung abgerufen werden, speichern soll.
  • Beispiel 9 beinhaltet den Gegenstand von einem der Beispiele 1-8, wobei der Anfragepuffer Befehle in der Reihenfolge, in welcher sie erhalten wurden, bearbeiten soll.
  • Beispiel 10 beinhaltet den Gegenstand von einem der Beispiele 1-9, wobei der Anfragepuffer Befehle auf Grundlage einer Planungsrichtlinie der Planungsschaltung des jeweiligen Hardwarewarteschlangenmanagers bearbeiten soll.
  • Beispiel 11 beinhaltet den Gegensand von einem der Beispiele 1-10, wobei die Planungsrichtlinie angeben soll, dass der Anfragepuffer Befehle auf Grundlage einer Ringverteilung bearbeiten soll.
  • Beispiel 12 beinhaltet den Gegenstand von einem der Beispiele 1-11, wobei die Planungsrichtlinie angeben soll, dass der Anfragepuffer Befehle auf Grundlage einer gewichteten Ringverteilung bearbeiten soll.
  • Beispiel 13 beinhaltet den Gegenstand von einem der Beispiele 1-12, wobei die Planungsrichtlinie angeben soll, dass der Anfragepuffer Befehle auf Grundlage einer unterbrochenen Priorität bearbeiten soll.
  • Beispiel 14 beinhaltet den Gegenstand von einem der Beispiele 1-13, wobei die Warteschlangenanordnungsschaltung von jedem der mehreren Hardwarewarteschlangenmanager ferner als Reaktion auf den Warteschlangenanordnungsbefehl bestimmen soll, ob Platz in dem Anfragepuffer verfügbar ist; und den Warteschlangenanordnungsbefehl als Reaktion auf eine Bestimmung, dass kein Platz in dem Anfragepuffer verfügbar ist, verwerfen soll.
  • Beispiel 15 beinhaltet den Gegenstand von einem der Beispiele 1-14, wobei die Warteschlangenanordnungsschaltung von jedem der mehreren Hardwarewarteschlangenmanager ferner eine Ausfallmeldung zu dem Prozessorkern, der mit dem Warteschlangenanordnungsbefehl verknüpft ist, als Reaktion auf die Bestimmung, dass kein Platz in dem Anfragepuffer verfügbar ist, senden soll.
  • Beispiel 16 beinhaltet den Gegenstand von einem der Beispiele 1-15, wobei die Warteschlangenanordnungsschaltung von jedem der mehreren Hardwarewarteschlangenmanager ferner eine Bestätigung zu dem Prozessorkern, der mit dem Warteschlangenanordnungsbefehl verknüpft ist, als Reaktion auf eine Bestimmung, dass in dem Anfragepuffer Platz verfügbar ist, senden soll.
  • Beispiel 17 beinhaltet den Gegenstand von einem der Beispiele 1-16, wobei die Warteschlangenanordnungsschaltung von jedem der mehreren Hardwarewarteschlangenmanager ferner als Reaktion auf den Warteschlangenanordnungsbefehl bestimmen soll, ob Platz in der Datenwarteschlange verfügbar ist; und den Warteschlangenanordnungsbefehl als Reaktion auf eine Bestimmung, dass kein Platz in der Datenwarteschlange verfügbar ist, verwerfen soll.
  • Beispiel 18 beinhaltet den Gegenstand von einem der Beispiele 1-17, wobei die Warteschlangenanordnungsschaltung von jedem der mehreren Hardwarewarteschlangenmanager eine Ausfallmeldung zu dem Prozessorkern, der mit dem Warteschlangenentfernungsbefehl verknüpft ist, als Reaktion auf die Bestimmung, dass kein Platz verfügbar ist, senden soll.
  • Beispiel 19 beinhaltet den Gegenstand von einem der Beispiele 1-18, wobei die Warteschlangenentfernungsschaltung von jedem der mehreren Hardwarewarteschlangenmanager ferner als Reaktion auf den Warteschlangenentfernungsbefehl bestimmen soll, ob Daten in der Datenwarteschlange verfügbar sind; den Warteschlangenentfernungsbefehl als Reaktion auf eine Bestimmung, dass keine Daten in der Datenwarteschlange verfügbar sind, verwerfen soll.
  • Beispiel 20 beinhaltet den Gegenstand von einem der Beispiele 1-19, wobei die Warteschlangenentfernungsschaltung von jedem der mehreren Hardwarewarteschlangenmanager ferner eine Ausfallmeldung zu dem Prozessorkern, der mit dem Warteschlangenentfernungsbefehl verknüpft ist, als Reaktion auf die Bestimmung, dass keine Daten in der Datenwarteschlange verfügbar sind, senden soll.
  • Beispiel 21 beinhaltet den Gegenstand von einem der Beispiele 1-20, wobei die Warteschlangenanordnungs schaltung Daten nur als Reaktion auf den Warteschlangenanordnungsbefehl, der von einer ersten Untergruppe der mehreren Prozessorkerne erzeugt wird, speichern soll, und wobei die Warteschlangenentfernungsschaltung die Daten nur als Reaktion auf den Warteschlangenentfernungsbefehl, der von einer zweiten Untergruppe der mehreren Prozessorkerne erzeugt wird, abrufen soll, wobei jede Untergruppe mindestens einen Prozessorkern der mehreren Prozessorkerne umfasst.
  • Beispiel 22 beinhaltet den Gegenstand von einem der Beispiele 1-21, wobei die erste Untergruppe und die zweite Untergruppe sich nicht überlagern.
  • Beispiel 23 beinhaltet den Gegenstand von einem der Beispiele 1-22, wobei die mehreren Hardwarewarteschlangenmanager im Wesentlichen gleichmäßig über den Prozessor verteilt sind.
  • Beispiel 24 beinhaltet den Gegenstand von einem der Beispiele 1-23 und beinhaltet ferner mehrere Warteschlangenabbildungseinheiten, wobei jeder der mehreren Prozessorkerne mit einer anderen Warteschlangenabbildungseinheit der mehreren Warteschlangenabbildungseinheiten verknüpft ist und jede der mehreren Warteschlangenabbildungseinheiten mit einem anderen Prozessorkern der mehreren Prozessorkerne verknüpft ist, wobei jede Warteschlangenabbildungseinheit der mehreren Warteschlangenabbildungseinheiten eine virtuelle Warteschlangenadresse von dem entsprechenden Prozessorkern erhalten soll; die virtuelle Warteschlangenadresse in eine physikalische Warteschlangenadresse übersetzen soll; und die physikalische Warteschlangenadresse dem entsprechenden Prozessorkern bereitstellen soll.
  • Beispiel 25 beinhaltet den Gegenstand von einem der Beispiele 1-24, wobei jede Warteschlangenabbildungseinheit der mehreren Warteschlangenabbildungseinheiten einen Warteschlangenadressenübersetzungspuffer umfasst, wobei das Übersetzen der virtuellen Warteschlangenadresse in die physikalische Warteschlangenadresse das Bestimmen, ob sich eine physikalische Warteschlangenadresse entsprechend der virtuellen Warteschlangenadresse in dem entsprechenden Warteschlangenadressenübersetzungspuffer befindet; das Zugreifen als Reaktion auf eine Bestimmung, dass sich die physikalische Warteschlangenadresse nicht in dem entsprechenden Warteschlangenadressenübersetzungspuffer befindet, auf eine Warteschlangenabbildungstabelle in einem Speicher, der mit dem Prozessor für die physikalische Warteschlangenadresse verknüpft ist; das Erhalten einer Antwort von der Warteschlangenabbildungstabelle; das Bestimmen, ob die Antwort die physikalische Warteschlangenadresse angibt; das Aktualisieren als Reaktion auf eine Bestimmung, dass die Antwort die physikalische Warteschlangenadresse angibt, des Warteschlangenadressenübersetzungspuffers; und das Bereitstellen als Reaktion auf eine Bestimmung, dass die Antwort nicht die physikalische Warteschlangenadresse angibt, einer Unterbrechung gegenüber dem entsprechenden Prozessorkern umfasst.
  • Beispiel 26 beinhaltet den Gegenstand von einem der Beispiele 1-25, wobei das Übersetzen der virtuellen Warteschlangenadresse in die physikalische Warteschlangenadresse ferner das Bestimmen, ob ein Thread, der mit dem entsprechenden Prozessorkern verknüpft ist, autorisiert ist, um auf die physikalische Warteschlangenadresse zuzugreifen; und das Bereitstellen als Reaktion auf eine Bestimmung, dass der Thread nicht autorisiert ist, um auf die physikalische Warteschlangenadresse zuzugreifen, einer Unterbrechung gegenüber dem entsprechenden Prozessorkern umfasst.
  • Beispiel 27 beinhaltet den Gegenstand von einem der Beispiele 1-26, wobei jede Warteschlangenabbildungseinheit der mehreren Warteschlangenabbildungseinheiten ferner eine Shootdown-Schaltung umfasst, wobei die Shootdown-Schaltung ein Signal empfangen soll, das eine Änderung bezüglich eines Eintrags in der Warteschlangenabbildungstabelle angibt, der mit der virtuellen Warteschlangenadresse verknüpft ist; und als Reaktion auf das Signal den Warteschlangenadressenübersetzungspuffer aktualisieren soll.
  • Beispiel 28 beinhaltet den Gegenstand von einem der Beispiele 1-27, wobei jeder Hardwarewarteschlangenmanager der mehreren Hardwarewarteschlangenmanager ferner eine Warteschlangenmigrationsschaltung zum Empfangen eines Signals, das eine Warteschlangenmigration anzeigt, wobei das Signal eine physikalische Quellwarteschlangenadresse des Hardwarewarteschlangenmanagers und eine physikalische Zielwarteschlangenadresse eines Zielhardwarewarteschlangenmanagers der mehreren Hardwarewarteschlangenmanager umfasst; und Weiterleiten als Reaktion auf das Signal der Einträge einer Warteschlangendatenstruktur, die mit der physikalischen Quellwarteschlangenadresse verknüpft sind, zu dem Zielhardwarewarteschlangenmanager umfasst.
  • Beispiel 29 beinhaltet den Gegenstand von einem der Beispiele 1-28, wobei jeder Hardwarewarteschlangenmanager der mehreren Hardwarewarteschlangenmanager ferner eine Warteschlangenmigrationsschaltung zum Empfangen eines Signals, das eine Warteschlangenmigration anzeigt, wobei das Signal eine physikalische Zielwarteschlangenadresse des Hardwarewarteschlangenmanagers umfasst; Empfangen als Reaktion auf das Signal von Einträgen einer Warteschlangendatenstruktur für die physikalische Zielwarteschlangenadresse; und Bereitstellen als Reaktion auf den Erhalt der Einträge einer Unterbrechung gegenüber einem Prozessorkern der mehreren Prozessorkerne umfasst.
  • Beispiel 30 beinhaltet den Gegenstand von einem der Beispiele 1-29, wobei die Warteschlangenanordnungsschaltung von jedem der mehreren Hardwarewarteschlangenmanager ferner zusätzliche Daten speichern soll, die von einer anderen Hardwarekomponente als dem Prozessor in der Datenwarteschlange als Reaktion auf einen zusätzlichen Warteschlangenanordnungsbefehl, der von der Hardwarekomponente erzeugt wird, erhalten werden, wobei der zusätzliche Warteschlangenanordnungsbefehl den jeweiligen Hardwarewarteschlangenmanager kennzeichnet; und die Warteschlangenentfernungsschaltung von jedem der mehreren Hardwarewarteschlangenmanager ferner die zusätzlichen Daten aus der Datenwarteschlange als Reaktion auf einen zusätzlichen Warteschlangenentfernungsbefehl, der von der Hardwarekomponente erzeugt wird, abrufen soll, wobei der zusätzliche Warteschlangenentfernungsbefehl den jeweiligen Hardwarewarteschlangenmanager kennzeichnet.
  • Beispiel 31 beinhaltet den Gegenstand von einem der Beispiele 1-30, wobei die mehreren Prozessorkerne mindestens 8 Prozessorkerne umfassen.
  • Beispiel 32 beinhaltet den Gegenstand von einem der Beispiele 1-31, wobei die mehreren Prozessorkerne mindestens 32 Prozessorkerne umfassen.
  • Beispiel 33 beinhaltet ein Verfahren zur Verwendung eines verteilten Hardwarewarteschlangenmanagers, wobei das Verfahren das Anordnen in einer Warteschlange von Warteschlangendaten von einem Quellprozessorkern von mehreren Prozessorkernen eines Prozessors der Computervorrichtung in einem Zielhardwarewarteschlangenmanager von mehreren Hardwarewarteschlangenmanagern des Prozessors; und das Entfernen aus der Warteschlange der Warteschlangendaten von dem Zielhardwarewarteschlangenmanager zu einem Zielprozessorkern der mehreren Prozessorkerne umfasst.
  • Beispiel 34 beinhaltet den Gegenstand von Beispiel 33, wobei sich der Quellprozessorkern von dem Zielprozessorkern unterscheidet.
  • Beispiel 35 beinhaltet den Gegenstand von einem der Beispiele 33 und 34, wobei das Anordnen in einer Warteschlange von Warteschlangendaten von dem Quellprozessorkern in dem Zielhardwarewarteschlangenmanager das Anordnen in einer Warteschlange von Warteschlangendaten in einer Warteschlangendatenstruktur, die mit einer Warteschlangenadresse des Zielhardwarewarteschlangenmanagers verknüpft ist. umfasst.
  • Beispiel 36 beinhaltet den Gegenstand von einem der Beispiele 33-35, wobei die Warteschlangenadresse eine physikalische Warteschlangenadresse ist.
  • Beispiel 37 beinhaltet den Gegenstand von einem der Beispiele 33-36, wobei die Warteschlangenadresse eine virtuelle Warteschlangenadresse ist.
  • Beispiel 38 beinhaltet den Gegenstand von einem der Beispiele 33-37 und beinhaltet ferner das Anordnen in einer Warteschlange von zusätzlichen Warteschlangendaten von dem Quellprozessorkern in der Warteschlangendatenstruktur des Zielhardwarewarteschlangenmanagers; und das Entfernen aus der Warteschlange der zusätzlichen Warteschlangendaten von dem Zielhardwarewarteschlangenmanager in dem Zielprozessorkern umfasst, wobei die Warteschlangendaten und die zusätzlichen Warteschlangendaten gleichzeitig in dem Zielhardwarewarteschlangenmanager gespeichert werden.
  • Beispiel 39 beinhaltet den Gegenstand von einem der Beispiele 33-38 und beinhaltet ferner das Anordnen in einer Warteschlange von zusätzlichen Warteschlangendaten von dem Quellprozessorkern in einer zusätzlichen Warteschlangendatenstruktur, die mit einer zusätzlichen Warteschlangenadresse des Zielhardwarewarteschlangenmanagers verknüpft ist; und das Entfernen aus der Warteschlange der zusätzlichen Daten von dem Zielhardwarewarteschlangenmanager in dem Zielprozessorkern.
  • Beispiel 40 beinhaltet den Gegenstand von einem der Beispiele 33-39, wobei sich eine Größe eines Eintrags in der Warteschlangendatenstruktur von einer Größe eines Eintrags in der zusätzlichen Warteschlangendatenstruktur unterscheidet.
  • Beispiel 41 beinhaltet den Gegenstand von einem der Beispiele 33-40 und beinhaltet ferner das Bestimmen von Parametern für den Zielhardwarewarteschlangenmanager, wobei die Parameter eine Größe eines Eintrags für jede von mehreren Warteschlangendatenstrukturen des Zielhardwarewarteschlangenmanagers angeben; und Konfigurieren des Zielhardwarewarteschlangenmanagers auf Grundlage der Parameter.
  • Beispiel 42 beinhaltet den Gegenstand von einem der Beispiele 33-41, wobei die Parameter ferner eine Gesamtgröße für jede der mehreren Warteschlangendatenstrukturen angeben.
  • Beispiel 43 beinhaltet den Gegenstand von einem der Beispiele 33-42, wobei die Parameter ferner angeben, dass eine Gesamtgröße für jede der mehreren Warteschlangendatenstrukturen dynamisch ist.
  • Beispiel 44 beinhaltet den Gegenstand von einem der Beispiele 33-43, wobei das Konfigurieren des Zielhardwarewarteschlangenmanagers das Konfigurieren des Zielhardwarewarteschlangenmanagers mit MMIO umfasst.
  • Beispiel 45 beinhaltet den Gegenstand von einem der Beispiele 33-44, wobei die Parameter eine erste Gesamtgröße für eine erste Warteschlangendatenstruktur der mehreren Datenstrukturen und eine zweite Gesamtgröße für eine zweite Warteschlangendatenstruktur der mehreren Datenstrukturen angeben, wobei sich die erste Gesamtgröße von der zweiten Gesamtgröße unterscheidet.
  • Beispiel 46 beinhaltet den Gegenstand von einem der Beispiele 33-45, wobei die Parameter eine erste Größe für Einträge in einer ersten Warteschlangendatenstruktur der mehreren Datenstrukturen und eine zweite Größe für Einträge in einer zweiten Warteschlangendatenstruktur der mehreren Datenstrukturen angeben, wobei sich die erste Größe von der zweiten Größe unterscheidet.
  • Beispiel 47 beinhaltet den Gegenstand von einem der Beispiele 33-46, wobei die Parameter eine Planungsrichtlinie des Zielhardwarewarteschlangenmanagers angeben, wobei die Planungsrichtlinie des Zielhardwarewarteschlangenmanagers die Reihenfolge der Ausführung für Befehle, die von dem Zielhardwarewarteschlangenmanager erhalten werden, angibt.
  • Beispiel 48 beinhaltet den Gegenstand von einem der Beispiele 33-47, wobei die Planungsrichtlinie angibt, dass die Reihenfolge der Ausführung für Befehle, die von dem Zielhardwarewarteschlangenmanager erhalten werden, die Reihenfolge ist, in welcher die Befehle erhalten wurden.
  • Beispiel 49 beinhaltet den Gegenstand von einem der Beispiele 33-48, wobei die Planungsrichtlinie angibt, dass die Reihenfolge der Ausführung für Befehle, die von dem Zielhardwarewarteschlangenmanager erhalten werden, auf einer Ringverteilung basiert.
  • Beispiel 50 beinhaltet den Gegenstand von einem der Beispiele 33-49, wobei die Planungsrichtlinie angibt, dass die Reihenfolge der Ausführung für Befehle, die von dem Zielhardwarewarteschlangenmanager erhalten werden, auf einer gewichteten Ringverteilung basiert.
  • Beispiel 51 beinhaltet den Gegenstand von einem der Beispiele 33-50, wobei die Planungsrichtlinie angibt, dass die Reihenfolge der Ausführung für Befehle, die von dem Zielhardwarewarteschlangenmanager erhalten werden, auf einer unterbrochenen Priorität basiert.
  • Beispiel 52 beinhaltet den Gegenstand von einem der Beispiele 33-51 und beinhaltet ferner das Bestimmen für jeden der Hardwarewarteschlangenmanager von Daten, die eine Latenz eines Warteschlangenentfernungsbefehls von dem Zielprozessorkern zu dem jeweiligen Hardwarewarteschlangenmanager angeben; und das Bestimmen auf Grundlage der Daten eines gewünschten Zielhardwarewarteschlangenmanagers.
  • Beispiel 53 beinhaltet den Gegenstand von einem der Beispiele 33-52 und beinhaltet ferner das Bestimmen, ob der gewünschte Zielhardwarewarteschlangenmanager der Zielhardwarewarteschlangenmanager ist; und das Migrieren als Reaktion auf eine Bestimmung, dass der gewünschte Zielhardwarewarteschlangenmanager nicht der Zielhardwarewarteschlangenmanager ist, von Daten, die mit einer Warteschlangendatenstruktur des Zielhardwarewarteschlangenmanagers verknüpft sind, von dem Zielhardwarewarteschlangenmanager zu dem gewünschten Zielhardwarewarteschlangenmanager.
  • Beispiel 54 beinhaltet den Gegenstand von einem der Beispiele 33-53, wobei das Migrieren von Daten das Aktualisieren einer Warteschlangenabbildungstabelle in einem Speicher der Computervorrichtung umfasst.
  • Beispiel 55 beinhaltet den Gegenstand von einem der Beispiele 33-54 und beinhaltet ferner das Bestimmen für jeden der mehreren Hardwarewarteschlangenmanager von Daten, die eine durchschnittliche Latenz eines Warteschlangenentfernungsbefehls von jedem der verbrauchenden Prozessorkerne angeben, wobei das Bestimmen des gewünschten Zielhardwarewarteschlangenmanagers das Bestimmen auf Grundlage der Daten, die die durchschnittliche Latenz angeben, eines gewünschten Zielhardwarewarteschlangenmanagers umfasst.
  • Beispiel 56 beinhaltet den Gegenstand von einem der Beispiele 33-55 und beinhaltet ferner das Bestimmen für jeden der verbrauchenden Prozessorkerne von Daten, die eine Häufigkeit der mehreren Anweisungen angeben, die bewirken, dass der jeweilige verbrauchende Kern einen Warteschlangenentfernungsbefehl erzeugt; das Bestimmen für jeden der mehreren Hardwarewarteschlangenmanager und auf Grundlage der Daten, die die Häufigkeit für jeden der verbrauchenden Kerne angeben, um einen Warteschlangenentfernungsbefehl zu erzeugen, von Daten, die eine gewichtete durchschnittliche Latenz eines Warteschlangenentfernungsbefehls von jedem der verbrauchenden Prozessorkerne angeben, wobei das Bestimmen des gewünschten Zielhardwarewarteschlangenmanagers das Bestimmen auf Grundlage der Daten, die die gewichtete durchschnittliche Latenz angeben, eines gewünschten Zielhardwarewarteschlangenmanagers umfasst.
  • Beispiel 57 beinhaltet den Gegenstand von einem der Beispiele 33-56 und beinhaltet ferner das Bestimmen von mindestens zwei verbrauchenden Prozessorkernen der mehreren Prozessorkerne, wobei die mehreren Anweisungen bewirken, dass jeder der mindestens zwei verbrauchenden Prozessorkerne von derselben virtuellen Warteschlangenadresse aus der Warteschlange entfernt; das Bestimmen für jeden der mindestens zwei verbrauchenden Prozessorkerne und für jeden der mehreren Hardwarewarteschlangenmanager von Daten, die eine Latenz eines Warteschlangenentfernungsbefehls von dem jeweiligen verbrauchenden Prozessorkern zu dem jeweiligen Hardwarewarteschlangenmanager angeben; und das Bestimmen auf Grundlage der Daten, die die Latenz angeben, eines gewünschten Zielhardwarewarteschlangenmanagers.
  • Beispiel 58 beinhaltet den Gegenstand von einem der Beispiele 33-57 und beinhaltet ferner das Bestimmen für jede von mehreren virtuellen Warteschlangenadressen einer physikalischen Warteschlangenadresse, die mit einem Hardwarewarteschlangenmanager der Computervorrichtung verknüpft ist; und das Konfigurieren einer Warteschlangenabbildungstabelle in einem Speicher der Computervorrichtung, wobei die Warteschlangenabbildungstabelle die entsprechende physikalische Warteschlangenadresse für jede der mehreren virtuellen Warteschlangenadressen angibt.
  • Beispiel 59 beinhaltet den Gegenstand von einem der Beispiele 33-58, wobei die Warteschlangenabbildungstabelle Autorisierungsdaten umfasst, die mit jeder der mehreren virtuellen Warteschlangenadressen verknüpft sind.
  • Beispiel 60 beinhaltet eines oder mehrere computerlesbare Speichermedien, die mehrere Anweisungen umfassen, die auf diesen gespeichert sind, die, wenn sie ausgeführt werden, bewirken, dass eine Computervorrichtung das Verfahren nach einem der Beispiele 33-59 durchführt.
  • Beispiel 61 beinhaltet eine Computervorrichtung, die Mittel zum Anordnen in einer Warteschlange von Warteschlangendaten von einem Quellprozessorkern von mehreren Prozessorkernen eines Prozessors der Computervorrichtung in einem Zielhardwarewarteschlangenmanager von mehreren Hardwarewarteschlangenmanager des Prozessors; und Mittel zum Entfernen aus der Warteschlange der Warteschlangendaten von dem Zielhardwarewarteschlangenmanager zu einem Zielprozessorkern der mehreren Prozessorkerne umfasst.
  • Beispiel 62 beinhaltet den Gegenstand von Beispiel 61, wobei sich der Quellprozessorkern von dem Zielprozessorkern unterscheidet.
  • Beispiel 63 beinhaltet den Gegenstand von einem der Beispiele 61 und 62, wobei die Mittel zum Anordnen in einer Warteschlange von Warteschlangendaten von dem Quellprozessorkern zu dem Zielhardwarewarteschlangenmanager Mittel zum Anordnen in einer Warteschlange von Warteschlangendaten in einer Warteschlangendatenstruktur, die mit einer Warteschlangenadresse des Zielhardwarewarteschlangenmanagers verknüpft ist, umfassen.
  • Beispiel 64 beinhaltet den Gegenstand von einem der Beispiele 61-63, wobei die Warteschlangenadresse eine physikalische Warteschlangenadresse ist.
  • Beispiel 65 beinhaltet den Gegenstand von einem der Beispiele 61-64, wobei die Warteschlangenadresse eine virtuelle Warteschlangenadresse ist.
  • Beispiel 66 beinhaltet den Gegenstand von einem der Beispiele 61-65 und beinhaltet ferner Mittel zum Anordnen in einer Warteschlange von zusätzlichen Warteschlangendaten von dem Quellprozessorkern in der Warteschlangendatenstruktur des Zielhardwarewarteschlangenmanagers; und Mittel zum Entfernen aus der Warteschlange der zusätzlichen Warteschlangendaten von dem Zielhardwarewarteschlangenmanager zu dem Zielprozessorkern, wobei die Warteschlangendaten und die zusätzlichen Warteschlangendaten gleichzeitig in dem Zielhardwarewarteschlangenmanager gespeichert werden.
  • Beispiel 67 beinhaltet den Gegenstand von einem der Beispiele 61-66 und beinhaltet ferner Mittel zum Anordnen in einer Warteschlange von zusätzlichen Warteschlangendaten von dem Quellprozessorkern in einer zusätzlichen Warteschlangendatenstruktur, die mit einer zusätzlichen Warteschlangenadresse des Zielhardwarewarteschlangenmanagers verknüpft ist; und Mittel zum Entfernen aus der Warteschlange der zusätzlichen Daten von dem Zielhardwarewarteschlangenmanager zu dem Zielprozessorkern.
  • Beispiel 68 beinhaltet den Gegenstand von einem der Beispiele 61-67, wobei sich eine Größe eines Eintrags in der Warteschlangendatenstruktur von einer Größe eines Eintrags in der zusätzlichen Warteschlangendatenstruktur unterscheidet.
  • Beispiel 69 beinhaltet den Gegenstand von einem der Beispiele 61-68 und beinhaltet ferner Mittel zum Bestimmen von Parametern für den Zielhardwarewarteschlangenmanager, wobei die Parameter eine Größe eines Eintrags für jede von mehreren Warteschlangendatenstrukturen des Zielhardwarewarteschlangenmanagers angeben; und Mittel zum Konfigurieren des Zielhardwarewarteschlangenmanagers auf Grundlage der Parameter.
  • Beispiel 70 beinhaltet den Gegenstand von einem der Beispiele 61-69, wobei die Parameter ferner eine Gesamtgröße für jede der mehreren Warteschlangendatenstrukturen angeben.
  • Beispiel 71 beinhaltet den Gegenstand von einem der Beispiele 61-70, wobei die Parameter ferner angeben, dass eine Gesamtgröße für jede der mehreren Warteschlangendatenstrukturen dynamisch ist.
  • Beispiel 72 beinhaltet den Gegenstand von einem der Beispiele 61-71, wobei die Mittel zum Konfigurieren des Zielhardwarewarteschlangenmanagers Mittel zum Konfigurieren des Zielhardwarewarteschlangenmanagers mit MMIO umfassen.
  • Beispiel 73 beinhaltet den Gegenstand von einem der Beispiele 61-72, wobei die Parameter eine erste Gesamtgröße für eine erste Warteschlangendatenstruktur der mehreren Datenstrukturen und eine zweite Gesamtgröße für eine zweite Warteschlangendatenstruktur der mehreren Datenstrukturen angeben, wobei sich die erste Gesamtgröße von der zweiten Gesamtgröße unterscheidet.
  • Beispiel 74 beinhaltet den Gegenstand von einem der Beispiele 61-73, wobei die Parameter eine erste Größe für Einträge in einer ersten Warteschlangendatenstruktur der mehreren Datenstrukturen und eine zweite Größe für Einträge in einer zweiten Warteschlangendatenstruktur der mehreren Datenstrukturen angeben, wobei sich die erste Größe von der zweiten Größe unterscheidet.
  • Beispiel 75 beinhaltet den Gegenstand von einem der Beispiele 61-74, wobei die Parameter eine Planungsrichtlinie des Zielhardwarewarteschlangenmanagers angeben, wobei die Planungsrichtlinie des Zielhardwarewarteschlangenmanagers die Reihenfolge der Ausführung für Befehle, die von dem Zielhardwarewarteschlangenmanager erhalten werden, angibt.
  • Beispiel 76 beinhaltet den Gegenstand von einem der Beispiele 61-75, wobei die Planungsrichtlinie angibt, dass die Reihenfolge der Ausführung für Befehle, die von dem Zielhardwarewarteschlangenmanager erhalten werden, die Reihenfolge ist, in welcher die Befehle erhalten wurden.
  • Beispiel 77 beinhaltet den Gegenstand von einem der Beispiele 61-76, wobei die Planungsrichtlinie angibt, dass die Reihenfolge der Ausführung für Befehle, die von dem Zielhardwarewarteschlangenmanager erhalten werden, auf einer Ringverteilung basiert.
  • Beispiel 78 beinhaltet den Gegenstand von einem der Beispiele 61-77, wobei die Planungsrichtlinie angibt, dass die Reihenfolge der Ausführung für Befehle, die von dem Zielhardwarewarteschlangenmanager erhalten werden, auf einer gewichteten Ringverteilung basiert.
  • Beispiel 79 beinhaltet den Gegenstand von einem der Beispiele 61-78, wobei die Planungsrichtlinie angibt, dass die Reihenfolge der Ausführung für Befehle, die von dem Zielhardwarewarteschlangenmanager erhalten werden, auf einer unterbrochenen Priorität basiert.
  • Beispiel 80 beinhaltet den Gegenstand von einem der Beispiele 61-79 und beinhaltet ferner Mittel zum Bestimmen für jeden der Hardwarewarteschlangenmanager von Daten, die eine Latenz eines Warteschlangenentfernungsbefehls von dem Zielprozessorkern zu dem jeweiligen Hardwarewarteschlangenmanager angeben; und Mittel zum Bestimmen auf Grundlage der Daten eines gewünschten Zielhardwarewarteschlangenmanagers.
  • Beispiel 81 beinhaltet den Gegenstand von einem der Beispiele 61-80 und beinhaltet ferner Mittel zum Bestimmen, ob der gewünschte Zielhardwarewarteschlangenmanager der Zielhardwarewarteschlangenmanager ist; und Mittel zum Migrieren als Reaktion auf eine Bestimmung, dass der gewünschte Zielhardwarewarteschlangenmanager nicht der Zielhardwarewarteschlangenmanager ist, von Daten, die mit einer Warteschlangendatenstruktur des Zielhardwarewarteschlangenmanagers verknüpft sind, von dem Zielhardwarewarteschlangenmanager zu dem gewünschten Zielhardwarewarteschlangenmanager.
  • Beispiel 82 beinhaltet den Gegenstand von einem der Beispiele 61-81, wobei das Migrieren von Daten das Aktualisieren einer Warteschlangenabbildungstabelle in einem Speicher der Computervorrichtung umfasst.
  • Beispiel 83 beinhaltet den Gegenstand von einem der Beispiele 61-82 und beinhaltet ferner Mittel zum Bestimmen für jeden der mehreren Hardwarewarteschlangenmanager von Daten, die eine durchschnittliche Latenz eines Warteschlangenentfernungsbefehls von jedem der verbrauchenden Prozessorkerne angeben, wobei die Mittel zum Bestimmen des gewünschten Zielhardwarewarteschlangenmanagers Mittel zum Bestimmen auf Grundlage der Daten, die die durchschnittliche Latenz angeben, eines gewünschten Zielhardwarewarteschlangenmanagers umfassen.
  • Beispiel 84 beinhaltet den Gegenstand von einem der Beispiele 61-83 und beinhaltet ferner Mittel zum Bestimmen für jeden der verbrauchenden Prozessorkerne von Daten, die eine Häufigkeit der mehreren Anweisungen angeben, die bewirken, dass der jeweilige verbrauchende Kern einen Warteschlangenentfernungsbefehl erzeugt; Mittel zum Bestimmen für jeden der mehreren Hardwarewarteschlangenmanager und auf Grundlage der Daten, die die Häufigkeit für jeden der verbrauchenden Kerne angeben, um einen Warteschlangenentfernungsbefehl zu erzeugen, von Daten, die eine gewichtete durchschnittliche Latenz eines Warteschlangenentfernungsbefehls von jedem der verbrauchenden Prozessorkerne angeben, wobei die Mittel zum Bestimmen des gewünschten Zielhardwarewarteschlangenmanagers Mittel zum Bestimmen auf Grundlage der Daten, die die gewichtete durchschnittliche Latenz angeben, eines gewünschten Zielhardwarewarteschlangenmanagers umfassen.
  • Beispiel 85 beinhaltet den Gegenstand von einem der Beispiele 61-84 und beinhaltet ferner Mittel zum Bestimmen von mindestens zwei verbrauchenden Prozessorkernen der mehreren Prozessorkerne, wobei die mehreren Anweisungen bewirken, dass jeder der mindestens zwei verbrauchenden Prozessorkerne ein Entfernen aus der Warteschlange von derselben virtuellen Warteschlangenadresse vornimmt; Mittel zum Bestimmen für jeden der mindestens zwei verbrauchenden Prozessorkerne und für jeden der mehreren Hardwarewarteschlangenmanager von Daten, die eine Latenz eines Warteschlangenentfernungsbefehls von dem jeweiligen verbrauchenden Prozessorkern zu dem jeweiligen Hardwarewarteschlangenmanager angeben; und Mittel zum Bestimmen auf Grundlage der Daten, die die Latenz angeben, eines gewünschten Zielhardwarewarteschlangenmanagers.
  • Beispiel 86 beinhaltet den Gegenstand von einem der Beispiele 61-85 und beinhaltet ferner Mittel zum Bestimmen für jede von mehreren virtuellen Warteschlangenadressen einer physikalischen Warteschlangenadresse, die mit einem Hardwarewarteschlangenmanager der Computervorrichtung verknüpft ist; und Mittel zum Konfigurieren einer Warteschlangenabbildungstabelle in einem Speicher der Computervorrichtung, wobei die Warteschlangenabbildungstabelle die entsprechende physikalische Warteschlangenadresse für jede der mehreren virtuellen Warteschlangenadressen angibt.
  • Beispiel 87 beinhaltet den Gegenstand von einem der Beispiele 61-86, wobei die Warteschlangenabbildungstabelle Autorisierungsdaten umfasst, die mit jeder der mehreren virtuellen Warteschlangenadressen verknüpft sind.
  • Beispiel 88 beinhaltet den Gegenstand von einem der Beispiele 1-32, wobei jeder der mehreren Prozessorkerne und jeder der mehreren Hardwarewarteschlangenmanager in einem System auf einem Chip aufgenommen sind.
  • Beispiel 89 beinhaltet den Gegenstand von einem der Beispiele 1-32 und 88, wobei ein Speicher in dem System auf einem Chip aufgenommen ist.

Claims (24)

  1. Prozessor, der Folgendes umfasst: mehrere Prozessorkerne; mehrere Hardwarewarteschlangenmanager; und eine Verbindungsschaltung zum Verbinden jedes Hardwarewarteschlangenmanagers der mehreren Hardwarewarteschlangenmanager mit jedem Prozessorkern der mehreren Prozessorkerne, wobei jeder Hardwarewarteschlangenmanager der mehreren Hardwarewarteschlangenmanager Folgendes umfasst: eine Warteschlangenanordnungs schaltung zum Speichern von Daten, die von einem Prozessorkern der mehreren Prozessorkerne erhalten werden, in einer Datenwarteschlange, die mit dem jeweiligen Hardwarewarteschlangenmanager verknüpft ist, als Reaktion auf einen Warteschlangenanordnungsbefehl, der von dem Prozessorkern erzeugt wird, wobei der Warteschlangenanordnungsbefehl den jeweiligen Hardwarewarteschlangenmanager kennzeichnet, und eine Warteschlangenentfernungsschaltung zum Abrufen der Daten aus der Datenwarteschlange, die mit dem jeweiligen Hardwarewarteschlangenmanager verknüpft ist, als Reaktion auf einen Warteschlangenentfernungsbefehl, der von einem Prozessorkern der mehreren Prozessorkerne erzeugt wird, wobei der Warteschlangenentfernungsbefehl den jeweiligen Hardwarewarteschlangenmanager kennzeichnet.
  2. Prozessor nach Anspruch 1, wobei der Warteschlangenanordnungsbefehl eine physikalische Warteschlangenadresse des jeweiligen Hardwarewarteschlangenmanagers umfasst, wobei das Speichern der Daten das Hinzufügen der Daten zu einer Warteschlangendatenstruktur in einer Warteschlangenspeicherschaltung des jeweiligen Hardwarewarteschlangenmanagers auf Grundlage der physikalischen Warteschlangenadresse umfasst, wobei der Warteschlangenentfernungsbefehl ferner die physikalische Warteschlangenadresse umfasst, und wobei das Abrufen der Daten aus der Datenwarteschlange das Entfernen der Daten aus der Warteschlangendatenstruktur der Warteschlangenspeicherschaltung auf Grundlage der physikalischen Warteschlangenadresse umfasst.
  3. Prozessor nach Anspruch 2, wobei jeder Hardwarewarteschlangenmanager der mehreren Hardwarewarteschlangenmanager ferner einen Anfragepuffer umfasst, wobei der Anfragepuffer Folgendes durchführt: Speichern der Daten und der physikalischen Warteschlangenadresse als Reaktion auf den Warteschlangenanordnungsbefehl, der von dem Prozessorkern erzeugt wird, bevor die Daten von der Warteschlangenanordnungsschaltung gespeichert werden, Speichern der physikalischen Warteschlangenadresse als Reaktion auf den Warteschlangenentfernungsbefehl, der von dem Prozessorkern erzeugt wird, bevor die Daten von der Warteschlangenentfernungsschaltung abgerufen werden.
  4. Prozessor nach Anspruch 3, wobei die Warteschlangenanordnungsschaltung von jedem der mehreren Hardwarewarteschlangenmanager ferner Folgendes durchführt: Bestimmen als Reaktion auf den Warteschlangenanordnungsbefehl, ob in dem Anfragepuffer Platz verfügbar ist; und Verwerfen des Warteschlangenanordnungsbefehls als Reaktion auf eine Bestimmung, dass in dem Anfragepuffer kein Platz verfügbar ist.
  5. Prozessor nach Anspruch 1, wobei die Warteschlangenentfernungsschaltung von jedem der mehreren Hardwarewarteschlangenmanager ferner Folgendes durchführt: Bestimmen als Reaktion auf den Warteschlangenentfernungsbefehl, ob in der Datenwarteschlange Daten verfügbar sind; Verwerfen des Warteschlangenentfernungsbefehls als Reaktion auf eine Bestimmung, dass in der Datenwarteschlange keine Daten verfügbar sind.
  6. Prozessor nach Anspruch 1, der ferner mehrere Warteschlangenabbildungseinheiten umfasst, wobei jeder der mehreren Prozessorkerne mit einer anderen Warteschlangenabbildungseinheit der mehreren Warteschlangenabbildungseinheiten verknüpft ist und jede der mehreren Warteschlangenabbildungseinheiten mit einem anderen Prozessorkern der mehreren Prozessorkerne verknüpft ist, wobei jede Warteschlangenabbildungseinheit der mehreren Warteschlangenabbildungseinheiten Folgendes durchführt: Erhalten einer virtuellen Warteschlangenadresse von dem entsprechenden Prozessorkern; Übersetzen der virtuellen Warteschlangenadresse in eine physikalische Warteschlangenadresse; und Bereitstellen der physikalischen Warteschlangenadresse gegenüber dem entsprechenden Prozessorkern.
  7. Prozessor nach Anspruch 6, wobei jede Warteschlangenabbildungseinheit der mehreren Warteschlangenabbildungseinheiten einen Warteschlangenadressenübersetzungspuffer umfasst, wobei das Übersetzen der virtuellen Warteschlangenadresse in die physikalische Warteschlangenadresse Folgendes umfasst: Bestimmen, ob sich eine physikalische Warteschlangenadresse, die der virtuellen Warteschlangenadresse entspricht, in dem entsprechenden Warteschlangenadressenübersetzungspuffer befindet; Zugreifen als Reaktion auf eine Bestimmung, dass sich die physikalische Warteschlangenadresse nicht in dem entsprechenden Warteschlangenadressenübersetzungspuffer befindet, auf eine Warteschlangenabbildungstabelle in einem Speicher, der mit dem Prozessor für die physikalische Warteschlangenadresse verknüpft ist; Erhalten einer Antwort von der Warteschlangenabbildungstabelle; Bestimmen, ob die Antwort die physikalische Warteschlangenadresse angibt; Aktualisieren als Reaktion auf eine Bestimmung, dass die Antwort die physikalische Warteschlangenadresse angibt, des Warteschlangenadressenübersetzungspuffers; und Bereitstellen als Reaktion auf eine Bestimmung, dass die Antwort nicht die physikalische Warteschlangenadresse angibt, einer Unterbrechung gegenüber dem entsprechenden Prozessorkern.
  8. Prozessor nach Anspruch 1, wobei jeder Hardwarewarteschlangenmanager der mehreren Hardwarewarteschlangenmanager ferner eine Warteschlangenmigrationsschaltung umfasst, um Folgendes durchzuführen: Empfangen eines Signals, das eine Warteschlangenmigration anzeigt, wobei das Signal eine physikalische Quellwarteschlangenadresse des Hardwarewarteschlangenmanagers und eine physikalische Zielwarteschlangenadresse eines Zielhardwarewarteschlangenmanagers der mehreren Hardwarewarteschlangenmanager umfasst; und Weiterleiten als Reaktion auf das Signal von Einträgen einer Warteschlangendatenstruktur, die mit der physikalischen Quellwarteschlangenadresse verknüpft ist, zu dem Zielhardwarewarteschlangenmanager.
  9. Prozessor nach Anspruch 1, wobei jeder Hardwarewarteschlangenmanager der mehreren Hardwarewarteschlangenmanager ferner eine Warteschlangenmigrationsschaltung umfasst, um Folgendes durchzuführen: Empfangen eines Signals, das eine Warteschlangenmigration anzeigt, wobei das Signal eine physikalische Zielwarteschlangenadresse des Hardwarewarteschlangenmanagers umfasst; Erhalten als Reaktion auf das Signal von Einträgen einer Warteschlangendatenstruktur für die physikalische Zielwarteschlangenadresse; und Bereitstellen als Reaktion auf den Erhalt der Einträge einer Unterbrechung gegenüber einem Prozessorkern der mehreren Prozessorkerne.
  10. Prozessor nach Anspruch 1, wobei: die Warteschlangenanordnungsschaltung von jedem der mehreren Hardwarewarteschlangenmanager ferner zusätzliche Daten, die von einer anderen Hardwarekomponente als dem Prozessor erhalten werden, in der Datenwarteschlange als Reaktion auf einen zusätzlichen Warteschlangenanordnungsbefehl, der von der Hardwarekomponente erzeugt wird, speichert, wobei der zusätzliche Warteschlangenanordnungsbefehl den jeweiligen Hardwarewarteschlangenmanager kennzeichnet; und die Warteschlangenentfernungsschaltung von jedem der mehreren Hardwarewarteschlangenmanager ferner die zusätzlichen Daten aus der Datenwarteschlange als Reaktion auf einen zusätzlichen Warteschlangenentfernungsbefehl, der von der Hardwarekomponente erzeugt wird, abruft, wobei der zusätzliche Warteschlangenentfernungsbefehl den jeweiligen Hardwarewarteschlangenmanager kennzeichnet.
  11. Prozessor nach Anspruch 1, wobei die mehreren Prozessorkerne mindestens 8 Prozessorkerne umfassen.
  12. Prozessor nach Anspruch 1, wobei die mehreren Prozessorkerne mindestens 32 Prozessorkerne umfassen.
  13. Verfahren zur Verwendung eines verteilten Hardwarewarteschlangenmanagers, wobei das Verfahren Folgendes umfasst: Anordnen in einer Warteschlange von Warteschlangendaten von einem Quellprozessorkern von mehreren Prozessorkernen eines Prozessors der Computervorrichtung in einem Zielhardwarewarteschlangenmanager von mehreren Hardwarewarteschlangenmanagern des Prozessors; und Entfernen aus der Warteschlange der Warteschlangendaten von dem Zielhardwarewarteschlangenmanager zu einem Zielprozessorkern der mehreren Prozessorkerne.
  14. Verfahren nach Anspruch 13, das ferner Folgendes umfasst: Bestimmen von Parametern für den Zielhardwarewarteschlangenmanager, wobei die Parameter eine Größe eines Eintrags für jede von mehreren Warteschlangendatenstrukturen des Zielhardwarewarteschlangenmanagers angeben; und Konfigurieren des Zielhardwarewarteschlangenmanagers auf Grundlage der Parameter.
  15. Verfahren nach Anspruch 14, wobei die Parameter eine erste Gesamtgröße für eine erste Warteschlangendatenstruktur der mehreren Datenstrukturen und eine zweite Gesamtgröße für eine zweite Warteschlangendatenstruktur der mehreren Datenstrukturen angeben, wobei sich die erste Gesamtgröße von der zweiten Gesamtgröße unterscheidet.
  16. Verfahren nach Anspruch 14, wobei die Parameter eine erste Größe für Einträge in einer ersten Warteschlangendatenstruktur der mehreren Datenstrukturen und eine zweite Größe für Einträge in einer zweiten Warteschlangendatenstruktur der mehreren Datenstrukturen angeben, wobei sich die erste Größe von der zweiten Größe unterscheidet.
  17. Verfahren nach Anspruch 14, wobei die Parameter eine Planungsrichtlinie des Zielhardwarewarteschlangenmanagers angeben, wobei die Planungsrichtlinie des Zielhardwarewarteschlangenmanagers die Reihenfolge der Ausführung für Befehle, die von dem Zielhardwarewarteschlangenmanager erhalten werden, angibt.
  18. Verfahren nach Anspruch 14, das ferner Folgendes umfasst: Bestimmen für jeden der Hardwarewarteschlangenmanager von Daten, die eine Latenz eines Warteschlangenentfernungsbefehls von dem Zielprozessorkern zu dem jeweiligen Hardwarewarteschlangenmanager angeben; und Bestimmen auf Grundlage der Daten eines gewünschten Zielhardwarewarteschlangenmanagers.
  19. Verfahren nach Anspruch 18, das ferner Folgendes umfasst: Bestimmen, ob der gewünschte Zielhardwarewarteschlangenmanager der Zielhardwarewarteschlangenmanager ist; und Migrieren als Reaktion auf eine Bestimmung, dass der gewünschte Zielhardwarewarteschlangenmanager nicht der Zielhardwarewarteschlangenmanager ist, von Daten, die mit einer Warteschlangendatenstruktur des Zielhardwarewarteschlangenmanagers verknüpft sind, von dem Zielhardwarewarteschlangenmanager zu dem gewünschten Zielhardwarewarteschlangenmanager.
  20. Verfahren nach Anspruch 19, wobei das Migrieren von Daten das Aktualisieren einer Warteschlangenabbildungstabelle in einem Speicher der Computervorrichtung umfasst.
  21. Verfahren nach Anspruch 14, das ferner Folgendes umfasst: Bestimmen von mindestens zwei verbrauchenden Prozessorkernen der mehreren Prozessorkerne, wobei die mehreren Anweisungen bewirken, dass jeder der mindestens zwei verbrauchenden Prozessorkerne ein Entfernen aus der Warteschlange von derselben virtuellen Warteschlangenadresse vornimmt; Bestimmen für jeden der mindestens zwei verbrauchenden Prozessorkerne und für jeden der mehreren Hardwarewarteschlangenmanager von Daten, die eine Latenz eines Warteschlangenentfernungsbefehls von dem jeweiligen verbrauchenden Prozessorkern zu dem jeweiligen Hardwarewarteschlangenmanager angeben; und Bestimmen auf Grundlage der Daten, die die Latenz angeben, eines gewünschten Zielhardwarewarteschlangenmanagers.
  22. Verfahren nach Anspruch 13, das ferner Folgendes umfasst: Bestimmen für jede von mehreren virtuellen Warteschlangenadressen einer physikalischen Warteschlangenadresse, die mit einem Hardwarewarteschlangenmanager der Computervorrichtung verknüpft ist; und Konfigurieren einer Warteschlangenabbildungstabelle in einem Speicher der Computervorrichtung, wobei die Warteschlangenabbildungstabelle die entsprechende physikalische Warteschlangenadresse für jede der mehreren virtuellen Warteschlangenadressen angibt.
  23. Verfahren nach Anspruch 22, wobei die Warteschlangenabbildungstabelle Autorisierungsdaten umfasst, die mit jeder der mehreren virtuellen Warteschlangenadressen verknüpft sind.
  24. Computerlesbares Speichermedium bzw. computerlesbare Speichermedien, die mehrere Anweisungen umfassen, die auf diesen gespeichert sind, die, wenn sie ausgeführt werden, bewirken, dass eine Computervorrichtung das Verfahren nach einem der Ansprüche 13-23 durchführt.
DE112017001808.0T 2016-03-31 2017-03-01 Technologien für einen verteilten hardwarewarteschlangenmanager Pending DE112017001808T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/087,154 2016-03-31
US15/087,154 US10216668B2 (en) 2016-03-31 2016-03-31 Technologies for a distributed hardware queue manager
PCT/US2017/020230 WO2017172217A1 (en) 2016-03-31 2017-03-01 Technologies for a distributed hardware queue manager

Publications (1)

Publication Number Publication Date
DE112017001808T5 true DE112017001808T5 (de) 2019-01-10

Family

ID=59961575

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017001808.0T Pending DE112017001808T5 (de) 2016-03-31 2017-03-01 Technologien für einen verteilten hardwarewarteschlangenmanager

Country Status (3)

Country Link
US (1) US10216668B2 (de)
DE (1) DE112017001808T5 (de)
WO (1) WO2017172217A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11575607B2 (en) 2019-09-11 2023-02-07 Intel Corporation Dynamic load balancing for multi-core computing environments

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10877669B1 (en) * 2011-06-30 2020-12-29 Amazon Technologies, Inc. System and method for providing a committed throughput level in a data store
US10437638B2 (en) 2017-06-19 2019-10-08 Intel Corporation Method and apparatus for dynamically balancing task processing while maintaining task order
US11372554B1 (en) * 2017-07-27 2022-06-28 EMC IP Holding Company, LLC Cache management system and method
US10528414B2 (en) * 2017-09-13 2020-01-07 Toshiba Memory Corporation Centralized error handling in application specific integrated circuits
US10540219B2 (en) * 2017-09-13 2020-01-21 Toshiba Memory Corporation Reset and error handling in application specific integrated circuits
KR101980190B1 (ko) * 2017-09-25 2019-05-21 서울대학교산학협력단 입출력 디바이스 제어 장치, 그것의 동작 방법 및 입출력 디바이스 제어 장치 드라이버의 동작 방법
DE112018007409T5 (de) 2018-03-30 2021-01-07 Intel Corporation Verfahren und vorrichtung zum planen von dienstanforderungen in einem netzwerk-rechensystem mit hilfe von hardware-warteschlangenverwaltungen
US10969994B2 (en) * 2018-08-08 2021-04-06 Micron Technology, Inc. Throttle response signals from a memory system
US11074007B2 (en) 2018-08-08 2021-07-27 Micron Technology, Inc. Optimize information requests to a memory system
US20190044892A1 (en) * 2018-09-27 2019-02-07 Intel Corporation Technologies for using a hardware queue manager as a virtual guest to host networking interface
US11210216B2 (en) 2019-06-25 2021-12-28 Intel Corporation Techniques to facilitate a hardware based table lookup
US11256549B2 (en) * 2019-10-16 2022-02-22 EMC IP Holding Company LLC Method and apparatus for thread scheduling
US20230396675A1 (en) * 2021-02-26 2023-12-07 C&Tech IoT COMMUNICATION SYSTEM SUPPORTING CONNECTION BETWEEN DEVICES
EP4309698A1 (de) 2022-07-22 2024-01-24 Medela Holding AG Peristaltische pumpe mit planetengetriebe

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002007150A (ja) 2000-06-19 2002-01-11 Hitachi Ltd プロセスのスケジューリング方法および装置およびプロセスのスケジューリングプログラムを記録したコンピュータ読み取り可能な記録媒体
US6901593B2 (en) 2001-05-08 2005-05-31 Nortel Networks Limited Active queue management with flow proportional buffering
US20030182464A1 (en) * 2002-02-15 2003-09-25 Hamilton Thomas E. Management of message queues
US7433364B2 (en) * 2003-12-24 2008-10-07 Intel Corporation Method for optimizing queuing performance
US7774374B1 (en) * 2004-03-02 2010-08-10 Qlogic Corporation Switching systems and methods using wildcard searching
US8155134B2 (en) * 2007-09-29 2012-04-10 Applied Micro Circuits Corporation System-on-chip communication manager
US8918791B1 (en) * 2011-03-10 2014-12-23 Applied Micro Circuits Corporation Method and system for queuing a request by a processor to access a shared resource and granting access in accordance with an embedded lock ID
US9015376B2 (en) * 2012-04-29 2015-04-21 Texas Instruments Incorporated Method for infrastructure messaging
US9330054B2 (en) * 2012-10-31 2016-05-03 Freescale Semiconductor, Inc. System and method for assigning a message
US9535759B2 (en) 2014-05-23 2017-01-03 Osr Open Systems Resources, Inc. Work queue thread balancing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11575607B2 (en) 2019-09-11 2023-02-07 Intel Corporation Dynamic load balancing for multi-core computing environments

Also Published As

Publication number Publication date
WO2017172217A1 (en) 2017-10-05
US20170286337A1 (en) 2017-10-05
US10216668B2 (en) 2019-02-26

Similar Documents

Publication Publication Date Title
DE112017001808T5 (de) Technologien für einen verteilten hardwarewarteschlangenmanager
DE102020133262A1 (de) Arbeitslastscheduler für Speicherzuweisung
DE112016000258B4 (de) Gruppieren von nichtflüchtigem speicher auf grundlage von hosts mithilfe von zugeordnetem netzwerkspeicher
DE112020001833T5 (de) Netzwerkschnittstelle für Datentransport in heterogenen Rechenumgebungen
DE112011100392B4 (de) Ressourcenaffinität durch dynamisches hinzufügen oder entfernen von warteschlangenpaaren für netzadapter mit software zur empfangsseitigen skalierung (rss)
DE102004038649B4 (de) Dauerspeichervorrichtung für Sicherungsprozess-Prüfpunktzustände
DE602005003142T2 (de) Vorrichtung und verfahren zur unterstützung von verbindungsherstellung in einem offload der netzwerkprotokollverarbeitung
DE102018006890A1 (de) Technologien zur Verarbeitung von Netzpaketen durch einen intelligenten Netzwerk-Schnittstellenkontroller
DE112013004078B4 (de) Gemeinsame Speichernutzung über eine vereinheitlichte Speicherarchitektur
DE69826930T2 (de) System und Verfahren zur wirksamen Fernplatte Ein-/Ausgabe
DE60030767T2 (de) Datenzuweisung zu threads in einem multi-threaded netzwerkprozessor
DE69433293T2 (de) Netzwerkübertragungsverfahren für Systeme mit virtuellem Speicher
DE102018212479A1 (de) Technologien zum Verwalten einer flexiblen Host-Schnittstelle eines Netzwerkschnittstellen-Controllers
DE102015118711B4 (de) Technologien zur Netzwerkpaketcacheverwaltung
DE102020201834A1 (de) Technologien für netzvorrichtungslastausgleichseinrichtungen für beschleunigte funktionen-als-dienst
DE112021006003T5 (de) Intelligente datenebenenbeschleunigung durch auslagern zu verteilten smart- network-interfaces
DE102020113544A1 (de) Bedarfsgesteuerte paketwarteschlangen in einer netzwerkvorrichtung
DE112013000601T5 (de) Techniken für die Befehlsbestätigung für den Zugriff auf ein Speichergerät durch einen entfernten Client
DE102006032832A1 (de) Netzwerksystem und Verfahren zur Steuerung verteilter Speicher
DE112016001663T5 (de) Empfangen von Pufferkrediten durch eine Vielzahl von Kanälen von einer oder mehreren Host-Recheneinheiten, um Daten an eine Steuereinheit zu übertragen
DE112006002565T5 (de) Befehlsunterstützte Cache-Verwaltung für den effizienten Einsatz von Cache und Speicher
DE112018006769B4 (de) Erweiterte zwischenspeicherzuweisung basierend auf virtuellen knotenressourcen
DE102019102883A1 (de) Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern
DE102019130686A1 (de) Technologien zur bereitstellung dynamischer auswahl von edge- und lokalen beschleunigerressourcen
DE112020004181T5 (de) Bereitstellen eines direkten datenzugriffs zwischen beschleunigern und speicher in einer datenverarbeitungsumgebung

Legal Events

Date Code Title Description
R012 Request for examination validly filed