DE102020210335A1 - System und Verfahren zum Einreihen von Arbeit innerhalb eines virtualisierten Planers basierend auf einem Abrechnen innerhalb einer Einheit von Einträgen innerhalb der Einheit - Google Patents

System und Verfahren zum Einreihen von Arbeit innerhalb eines virtualisierten Planers basierend auf einem Abrechnen innerhalb einer Einheit von Einträgen innerhalb der Einheit Download PDF

Info

Publication number
DE102020210335A1
DE102020210335A1 DE102020210335.6A DE102020210335A DE102020210335A1 DE 102020210335 A1 DE102020210335 A1 DE 102020210335A1 DE 102020210335 A DE102020210335 A DE 102020210335A DE 102020210335 A1 DE102020210335 A1 DE 102020210335A1
Authority
DE
Germany
Prior art keywords
iua
given
group
count
iues
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
DE102020210335.6A
Other languages
English (en)
Other versions
DE102020210335A8 (de
Inventor
Jason D. Zebchuck
Wilson P. Snyder II
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.)
Mavell Asia Pte Ltd
Original Assignee
Mavell Asia Pte Ltd
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 Mavell Asia Pte Ltd filed Critical Mavell Asia Pte Ltd
Publication of DE102020210335A1 publication Critical patent/DE102020210335A1/de
Publication of DE102020210335A8 publication Critical patent/DE102020210335A8/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Abstract

Ein System und ein entsprechendes Verfahren reiht Arbeit innerhalb eines virtualisierten Planers basierend auf einem Abrechnen innerhalb einer Einheit (In-Unit Accounting, IUA) von Einträgen innerhalb der Einheit (In-Unit Entries, IUEs) ein. Das System umfasst eine IUA-Ressource und einen Arbiter. Die IUA-Ressource speichert, in Verbindung mit einer IUA-Kennung, eine IUA-Zählung und einen IUA Schwellenwert. Die IUA-Zählung stellt eine globale Zählung von Einträgen in eine Arbeitswarteschlange (Work-Queue Entries, WQEs) dar, die mit der IUA-Kennung assoziiert sind und jeweilige IUEs einer IUE-Ressource belegen. Der IUA-Schwellenwert begrenzt die globale Zählung. Der Arbiter bezieht die IUA-Zählung und den IUA-Schwellenwert von der IUA-Ressource basierend auf der IUA-Kennung, und steuert, als eine Funktion der IUA-Zählung und des IUA-Schwellenwerts, ob ein gegebener WQE von einer gegebenen Planungsgruppe, die der IUA-Kennung zugeordnet ist, in die IUE-Ressource bewegt wird, um zum Planen eingereiht zu werden. Die IUA-Zählung und der IUA-Schwellenwert verhindern, dass eine oder mehrere Gruppen, die der IUA-Kennung zugeordnet sind, mehr als eine zugewiesene Menge an IUEs verwenden.

Description

  • HINTERGRUND
  • Peripheral Component Interconnect (PCI) Express, auch als „PCIe“ bekannt, ist eine Hochgeschwindigkeits-Hardwareschnittstelle zum Verbinden mit peripheren Vorrichtungen, wie beispielsweise einer Steuerung einer Netzwerkschnittstelle (Network Interface Controller, NIC) oder einer anderen Vorrichtung. Eine SR-IOV-Schnittstelle (Single Root I/O Virtualization Interface) ist eine Erweiterung der PCIe-Spezifikation. SR-IOV ermöglicht es einer Vorrichtung, wie beispielsweise der NIC oder einer anderen Vorrichtung, einen Zugriff auf ihre Ressourcen nach verschiedenen PCIe-Hardwarefunktionen zu trennen, nämlich einer physikalischen PCIe-Funktion (PCIe Physical Function, PCIe PF) und einer oder mehreren virtuellen PCIe-Funktionen (PCIe Virtual Functions, PCIe VFs). Eine PF ist die primäre Funktion der Vorrichtung und weist auf die SR-IOV-Fähigkeiten der Vorrichtung hin. Die PF ist mit einer übergeordneten Partition eines Hypervisors in einer virtualisierten Umgebung assoziiert.
  • Die virtualisierte Umgebung ermöglicht es, mehrere simulierte Umgebungen mit dedizierten Ressourcen von einem einzigen, physikalischen Hardwaresystem zu erzeugen. Der Hypervisor ist eine Software, die es Hardwareressourcen des physikalischen Hardwaresystems ermöglicht, in distinkte und sichere Umgebungen unterteilt zu werden, die als virtuelle Maschinen (Virtual Machines, VMs) bekannt sind. Eine virtuelle Maschine (Virtual Machine, VM) stützt sich auf die Fähigkeit des Hypervisors, die physikalischen Ressourcen zu trennen und angemessen zu verteilen. Jede virtuelle Funktion (Virtual Function, VF) ist mit der PF der Vorrichtung assoziiert. Eine gegebene VF teilt eine oder mehrere physikalische Ressourcen der Vorrichtung, wie z. B. Speicher, einen Netzwerkanschluss oder Netzwerkanschlüsse usw., mit der PF und anderen VFs auf der Vorrichtung. Jede VF ist mit einer untergeordneten Partition des Hypervisors in der virtualisierten Umgebung assoziiert.
  • SR-IOV ermöglicht es einem Netzwerkverkehr, eine Software-Switch-Schicht eines Virtualisierungsstapels des Hypervisors zu umgehen. Da eine VF einer untergeordneten Partition zugeordnet ist, kann Netzwerkverkehr direkt zwischen der VF und der untergeordneten Partition fließen. Infolgedessen wird ein E/A-Überschuss (Eingabe/Ausgabe-Überschuss, Input/Output-I/O Overhead) in einer Software-Emulationsschicht verringert und eine Netzwerkleistung erreicht, die nahezu der Leistung in einer nicht-virtualisierten Umgebung entspricht. Zum Beispiel kann ein Betriebssystem (BS) Zugriff auf mehrere VFs haben, z.B. für eine NIC. Um eine Leistung zu verbessern, kann das BS eine Inhaberschaft einer VF an eine Anwendung im Bereich eines Benutzers delegieren und es dieser Anwendung ermöglichen, über diese VF direkt mit physikalischen Hardwareressourcen zu interagieren. In diesem Fall kann die Leistung der Anwendung viel höher sein, da die Anwendung direkt mit der Hardware interagieren kann, ohne den Überschuss der Kommunikation über das BS. SR-IOV ermöglicht es dem BS, einen teilweisen Zugriff auf die Hardware an eine Anwendung zu delegieren, während auf den Rest der Hardware direkt durch das BS zugegriffen werden kann und/oder dieser an andere Anwendungen delegiert werden kann.
  • Ein Planer, welcher ein Planen von Arbeit für eine VM, eine Anwendung, eine PF oder eine VF innerhalb der virtualisierten Umgebung unterstützt, unterstützt die Hardware-Virtualisierung und kann als ein „virtualisierter“ Planer bezeichnet werden. Die Arbeit, die geplant wird, kann zum Beispiel eine oder mehrere Operationen zum Verarbeiten von Paketen umfassen, die an einem Paket oder einem Teil davon durchgeführt werden sollen. Das Paket kann zum Beispiel von der NIC oder einer anderen Vorrichtung über eine Hardwareschnittstelle, wie beispielsweise eine PCIe-Hardwareschnittstelle, oder eine irgendeine andere Hardwareschnittstelle empfangen worden sein.
  • ZUSAMMENFASSUNG
  • Gemäß einer beispielhaften Ausführungsform reiht ein System Arbeit innerhalb eines virtualisierten Planers basierend auf einem Abrechnen innerhalb einer Einheit (In-Unit Accounting, IUA) von Einträgen innerhalb der Einheit (In-Unit Entries, IUEs) ein. Das System umfasst eine IUA-Ressource und einen Arbiter. Die IUA-Ressource ist konfiguriert, um, in Verbindung mit einer IUA-Kennung, eine IUA-Zählung und einen IUA-Schwellenwert zu speichern. Die IUA-Zählung stellt eine globale Zählung von Einträgen in eine Arbeitswarteschlange (Work-Queue Entries, WQEs) dar, die mit der IUA-Kennung assoziiert sind und die jeweilige IUEs einer IUE-Ressource (In-Unit Entry Resource, IUA Resource) belegen. Der IUA-Schwellenwert wird eingestellt, um die globale Zählung zu begrenzen. Der Arbiter ist konfiguriert, um die IUA-Zählung und den IUA-Schwellenwert von der IUA-Ressource zu beziehen, basierend auf der IUA-Kennung, und um zu steuern, als eine Funktion der bezogenen IUA-Zählung und des bezogenen IUA-Schwellenwerts, ob ein gegebener Eintrag in der Arbeitswarteschlange (Work-Queue Entry, WQE) von einer gegebenen Planungsgruppe, die der IUA-Kennung zugeordnet ist, in die IUE-Ressource bewegt wird, um durch den virtualisierten Planer zum Planen eingereiht zu werden.
  • Der IUA-Kennung kann eine Vielzahl von Planungsgruppen zugeordnet werden, wobei die Vielzahl von Planungsgruppen die gegebene Planungsgruppe beinhaltet.
  • Die IUA-Kennung kann einer virtuellen Maschine, einer Anwendung oder einer physikalischen Funktion (Physical Function, PF) oder virtuellen Funktion (Virtual Function, VF) entsprechen, die mit einer SR-IOV-Schnittstelle (Single Root I/O Virtualization Interface) assoziiert sind.
  • Der virtualisierte Planer kann einen Arbeitsplaner beinhalten, der konfiguriert ist, um auf die IUE-Ressource zuzugreifen. Der Arbiter kann ferner konfiguriert sein, um den gegebenen WQE von einer gegebenen Pro-Gruppe-TAQ (Per-Group Transitory Admission Queue, Per-Group TAQ) in eine gegebene Pro-Gruppe-IAQ (Per-Group In-Unit Admission Queue, Per-Group IAQ) in der IUE-Ressource zu bewegen, um durch den Arbeitsplaner zum Planen eingereiht zu werden. Die gegebene Pro-Guuppe-TAQ und die gegebene Pro-Gruppe-IAQ werden der gegebenen Planungsgruppe zugeordnet.
  • Das System kann ferner eine TAQ-Ressource umfassen. Die TAQ-Ressource beinhaltet die gegebene Pro-Gruppe-TAQ, die konfiguriert ist, um WQEs, die für die gegebene Planungsgruppe empfangen wurden, einzureihen. Die IUE-Ressource umfasst eine Vielzahl von IUEs. Für den Fall, dass der Arbiter bestimmt, dass der gegebene WQE in die IUE-Ressource verschoben werden soll, ist der Arbiter ferner konfiguriert zum (i) Zuweisen eines freien IUE der Vielzahl von IUEs, wobei der freie IUE als ein gegebener IUE zum Zulassen des gegebenen WQE in die IUE-Ressource verwendet werden soll, (ii) Bewegen des gegebenen WQE von der gegebenen Pro-Gruppe-TAQ zu dem gegebenen IUE, (iii) Hinzufügen des gegebenen IUE zu einer gegebenen Pro-Gruppe-IAQ (Per-Group In-Unit Admission Queue, Per-Group IAQ) für die gegebene Planungsgruppe oder Assoziieren des gegebenen IUE mit der gegebenen Planungsgruppe, um die gegebene Pro-Gruppe-IAQ für die gegebene Planungsgruppe zu erzeugen, und (iv) Veranlassen, dass die IUA-Zählung in der IUA-Ressource aktualisiert wird. Um zu veranlassen, dass die IUA-Zählung aktualisiert wird, kann der Arbiter ferner konfiguriert sein zu veranlassen, dass die IUA-Zählung inkrementiert wird.
  • Ein Bewegen des gegebenen WQE, um den gegebenen IUE zu belegen, ermöglicht es dem gegebenen WQE, für eine Planung durch einen Arbeitsplaner des virtualisierten Planers verfügbar zu sein. Für einen Fall, dass der Arbeitsplaner bestimmt, dass der gegebene WQE geplant werden soll, ist der Arbeitsplaner konfiguriert, um den gegebenen WQE einem gegebenen Arbeitsslot einer Vielzahl von Arbeitsslots zuzuordnen.
  • Für den Fall, dass der gegebene WQE dem gegebenen Arbeitsslot zugeordnet wird und Arbeit, die mit dem gegebenen WQE assoziiert ist, abgeschlossen wird, kann der Arbeitsplaner ferner konfiguriert sein, um den gegebenen IUE zur Wiederverwendung freizugeben, und entweder der Arbeitsplaner oder der Arbiter kann ferner konfiguriert sein, um zu veranlassen, dass die IUA-Zählung in der IUA-Ressource dekrementiert wird.
  • Der IUA-Schwellenwert kann ein maximaler Wert für die IUA-Zählung sein und eine maximale Anzahl von IUEs in der IUE-Ressource darstellen, die durch jeweilige WQEs von allen Planungsgruppen, die der IUA-Kennung zugeordnet sind, belegt werden dürfen.
  • Die globale Zählung der WQEs kann eine gesamte Anzahl aller zugelassenen, konfliktbehafteten, geplanten und ausgeplanten WQEs sein, die mit der IUA-Kennung assoziiert sind und jeweilige IUEs der Vielzahl von IUEs belegen.
  • Um zu steuern, ob der gegebene WQE bewegt wird, kann der Arbiter ferner konfiguriert sein, um einen IUA-Test zu implementieren und, basierend auf einem positiven Ergebnis für den implementierten IUA-Test, ferner konfiguriert sein, um den gegebenen WQE von einer gegebenen Pro-Gruppe-TAQ (Per-Group Transitory Admission Queue, Per-Group TAQ), die der gegebenen Planungsgruppe zugeordnet ist, und in die IUE-Ressource zu bewegen. Das positive Ergebnis kann auf einer Bestimmung basieren, dass die IUA-Zählung unter dem IUA-Schwellenwert liegt.
  • Das positive Ergebnis kann ferner auf einer Bestimmung basieren, dass eine Frei-Zählung größer als Null ist. Die Frei-Zählung kann eine gesamte Anzahl unbesetzter IUEs einer Vielzahl verfügbarer IUEs der Vielzahl von IUEs sein, wobei die Vielzahl verfügbarer IUEs dem Arbiter zur Verfügung steht, um WQEs in die IUE-Ressource zum Einreihen zu bewegen. Zumindest ein IUE der Vielzahl von IUEs kann reserviert werden. Die Vielzahl von verfügbaren IUEs kann den zumindest einen reservierten IUE ausschließen.
  • Das positive Ergebnis kann ferner auf einer Bestimmung basieren, dass eine Gruppen-Zählung kleiner oder gleich einem Schwellenwert für eine Reserve einer Gruppe ist. Die Gruppen-Zählung kann eine gesamte Anzahl von IUEs der Vielzahl von IUEs sein, die durch jeweilige WQEs belegt sind, die zu der gegebenen Planungsgruppe gehören und nie durch den Arbeitsplaner geplant worden sind. Der Schwellenwert für die Reserve der Gruppe kann eine gegebene Anzahl von reservierten IUEs der Vielzahl von IUEs sein, die für die gegebene Planungsgruppe zur Belegung durch WQEs reserviert sind, die zu der gegebenen Planungsgruppe gehören und nie durch den Arbeitsplaner geplant worden sind.
  • Ein erster Teil von IUEs der Vielzahl von IUEs kann angeordnet sein, um eine gegebene Pro-Gruppe-IAQ (Per-Group In-Unit Admission Queue, Per-Group IAQ) in der IUE-Ressource für die gegebene Planungsgruppe zu bilden. Die gegebene Pro-Gruppe-IAQ kann vom Arbiter erzeugt werden, indem er freie IUEs der Vielzahl von IUEs zuweist und WQEs, die zu der gegebenen Planungsgruppe gehören, in die zugewiesenen freien IUEs bewegt. Ein zweiter Teil von IUEs der Vielzahl von IUEs kann angeordnet sein, um eine gegebene Pro-Gruppe-Konflikt-Warteschlange in der IUE-Ressource für die gegebene Planungsgruppe zu bilden. Der zweite Teil der IUEs wird durch jeweilige WQEs belegt, die durch den Arbeitsplaner in Antwort auf jeweilige Versuche, die jeweiligen WQEs zu planen, von der gegebenen Pro-Gruppe-IAQ in die gegebene Pro-Gruppe-Konflikt-Warteschlange bewegt wurden. Die jeweiligen Versuche scheiterten aufgrund jeweiliger Planungskonflikte. Als solche repräsentieren WQEs, die jeweilige IUEs der gegebenen Pro-Gruppe-IAQ und der gegebenen Pro-Gruppen-Konflikt-Warteschlange belegen, die jeweiligen WQEs, die zu der gegebenen Planungsgruppe gehören und nie durch den Arbeitsplaner geplant worden sind.
  • Der Arbiter kann ferner konfiguriert sein, um die Gruppen-Zählung zu inkrementieren, für einen Fall, dass der gegebene WQE in die IUE-Ressource bewegt wird. Für einen Fall, dass der gegebene WQE durch den Arbeitsplaner geplant und Arbeit, die mit dem gegebenen WQE assoziiert ist, abgeschlossen wird, kann entweder der Arbiter oder der Arbeitsplaner konfiguriert sein, um die Gruppen-Zählung zu dekrementieren.
  • Das positive Ergebnis kann ferner auf einer Bestimmung basieren, dass a) die Frei-Zählung größer als eine Reserviert-Frei-Zählung ist, wobei die Reserviert-Frei-Zählung als Teil der Frei-Zählung gezählt wird, und b) eine Gruppen-Zählung kleiner als ein maximaler Schwellenwert für die Gruppe ist.
  • Die Reserviert-Frei-Zählung kann die gesamte Anzahl der nicht belegten, reservierten IUEs der reservierten IUEs der Vielzahl von IUEs sein, die reserviert sind, um WQEs jeweiliger Planungsgruppen in die IUE-Ressource zu bewegen. Die Gruppen-Zählung kann eine gesamte Anzahl von IUEs der Vielzahl von IUEs sein, die durch jeweilige WQEs belegt sind, die zu der gegebenen Planungsgruppe gehören und nie durch den Arbeitsplaner geplant worden sind. Der maximale Schwellenwert für die Gruppe kann eine maximale Anzahl von IUEs der Vielzahl von IUEs sein, die von WQEs belegt werden dürfen, die von der gegebenen Planungsgruppe stammen und nie durch den Arbeitsplaner geplant worden sind.
  • Die IUE-Ressource kann eine gegebene Pro-Gruppe-IAQ für die gegebene Planungsgruppe und eine gegebene Pro-Gruppe-Konflikt-Warteschlange für die gegebene Planungsgruppe beinhalten. Die WQEs, die von der gegebenen Planungsgruppe stammen und nie geplant worden sind, können jeweilige IUEs belegen von: der gegebenen Pro-Gruppe-IAQ, der gegebenen Pro-Gruppe-Konflikt-Warteschlange oder einer Kombination davon.
  • Das positive Ergebnis kann ferner auf einer Bestimmung basieren, dass eine Gruppen-Zählung kleiner oder gleich einem Schwellenwert für eine Reserve einer Gruppe ist oder dass a) die Frei-Zählung größer als eine Reserviert-Frei-Zählung ist, wobei die Reserviert-Frei-Zählung als Teil der Frei-Zählung gezählt wird, und b) eine Gruppen-Zählung kleiner als ein maximaler Schwellenwert für die Gruppe ist.
  • Für einen Fall, dass die IUA-Zählung größer oder gleich dem IUA-Schwellenwert ist, kann der Arbiter ferner konfiguriert sein, um den gegebenen WQE von der Berücksichtigung für die Bewegung in die IUE-Ressource auszuschließen.
  • Die IUA-Ressource kann eine Nachschlagetabelle beinhalten, die konfiguriert ist, um eine Vielzahl von jeweiligen IUA-Zählungs- und IUA-Schwellenwert-Paarungen zu speichern, die jede mit einer jeweiligen IUA-Kennung assoziiert ist.
  • Der gegebene WQE kann einen Identifizierungszeiger, einen Tag-Wert, einen Tag-Typ und eine Gruppenkennung beinhalten. Der Tag-Wert assoziiert den gegebenen WQE mit einem eindeutigen Arbeitsablauf. Der Tag-Typ spezifiziert, ob der eindeutige Arbeitsablauf geordnet, atomar oder ungeordnet ist. Die Gruppenkennung entspricht der gegebenen Planungsgruppe.
  • Gemäß einer anderen beispielhaften Ausführungsform basiert ein Verfahren zum Einreihen von Arbeit innerhalb eines virtualisierten Planers auf einem Abrechnen innerhalb einer Einheit (In-Unit Accounting, IUA) von Einträgen innerhalb der Einheit (In-Unit Entries, IUEs). Das Verfahren umfasst ein Beziehen einer IUA-Zählung und eines IUA-Schwellenwerts von einer IUA-Ressource basierend auf einer IUA-Kennung. Die IUA-Zählung stellt eine globale Zählung von Einträgen in eine Arbeitswarteschlange (Work-Queue Entries, WQEs) dar, die mit der IUA-Kennung assoziiert sind und die jeweilige IUEs einer Vielzahl von IUEs einer IUE-Ressource (In-Unit Entry Resource, IUA Resource) belegen. Der IUA-Schwellenwert wird eingestellt, um die globale Zählung zu begrenzen. Das Verfahren umfasst ferner ein Steuern, als eine Funktion der IUA-Zählung und des IUA-Schwellenwerts, die von der IUA-Ressource basierend auf der IUA-Kennung bezogen wurden, ob ein gegebener Eintrag in eine Arbeitswarteschlange (Work-Queue Entry, WQE) von einer gegebenen Planungsgruppe, die der IUA-Kennung zugeordnet ist, in die IUE-Ressource bewegt wird, um durch den virtualisierten Planer zum Planen eingereiht zu werden.
  • Alternative Ausführungsformen des Verfahrens parallel zu dem oben beschriebenen sind in Verbindung mit der beispielhaften Ausführungsform des Systems.
  • Gemäß einer weiteren beispielhaften Ausführungsform umfasst ein virtualisierter Planer eine Ressource zum Abrechnen innerhalb einer Einheit (In-Unit Accounting Resource, IUA Resource), die konfiguriert ist, um, in Verbindung mit einer IUA-Kennung, eine IUA-Zählung und einen IUA-Schwellenwert zu speichern. Die IUA-Zählung stellt eine globale Zählung von Einträgen in eine Arbeitswarteschlange (Work-Queue Entries, WQEs) dar, die mit der IUA-Kennung assoziiert sind und die jeweilige Einträge innerhalb einer Einheit (In-Unit Entries, IUEs) einer IUA-Ressource belegen. Der IUA-Schwellenwert wird eingestellt, um die globale Zählung zu begrenzen. Der virtualisierte Planer umfasst ferner einen Arbeitsplaner, der konfiguriert ist, um WQEs, die jeweilige IUEs in der IUE-Ressource belegen, für jeweilige Arbeitslots zu planen, zur Verarbeitung durch jeweilige Einheiten zum Verarbeiten von Arbeit, die den jeweiligen Arbeitslots zugeordnet sind. Der virtualisierte Planer umfasst ferner einen Arbiter, der konfiguriert ist, um die IUA-Zählung und den IUA-Schwellenwert von der IUA-Ressource zu beziehen, basierend auf der IUA-Kennung, und um zu steuern, als eine Funktion der bezogenen IUA-Zählung und des bezogenen IUA-Schwellenwerts, ob ein gegebener Eintrag in der Arbeitswarteschlange (Work-Queue Entry, WQE) von einer gegebenen Planungsgruppe, die der IUA-Kennung zugeordnet ist, in die IUE-Ressource bewegt wird, um durch den Arbeitsplaner zum Planen eingereiht zu werden.
  • Gemäß einer weiteren beispielhaften Ausführungsform umfasst ein Prozessor für Netzwerkdienste eine Vielzahl von Prozessorkernen und einen virtualisierten Planer. Der virtualisierte Planer enthält eine Ressource zum Abrechnen innerhalb einer Einheit (In-Unit Accounting Resource, IUA Resource). Die IUA-Ressource ist konfiguriert, um, in Verbindung mit einer IUA-Kennung, eine IUA-Zählung und einen IUA-Schwellenwert zu speichern. Die IUA-Zählung stellt eine globale Zählung von Einträgen in eine Arbeitswarteschlange (Work-Queue Entries, WQEs) dar, die mit der IUA-Kennung assoziiert sind und die jeweilige IUEs einer IUE-Ressource (In-Unit Entry Resource, IUA Resource) belegen. Der IUA-Schwellenwert wird eingestellt, um die globale Zählung zu begrenzen. Der virtualisierte Planer beinhaltet ferner einen Arbiter, der konfiguriert ist, um die IUA-Zählung und den IUA-Schwellenwert von der IUA-Ressource zu beziehen, basierend auf der IUA-Kennung, und um zu steuern, als eine Funktion der bezogenen IUA-Zählung und des bezogenen IUA-Schwellenwerts, ob ein gegebener Eintrag in der Arbeitswarteschlange (Work-Queue Entry, WQE) von einer gegebenen Planungsgruppe, die der IUA-Kennung zugeordnet ist, in die IUE-Ressource bewegt wird, um durch den virtualisierten Planer zum Planen eingereiht zu werden, zum Verarbeiten durch einen gegebenen Prozessorkern der Vielzahl von Prozessorkernen oder eines gegebenen Threads, der auf dem gegebenen Prozessorkern ausgeführt wird.
  • Gemäß einer noch weiteren beispielhaften Ausführungsform umfasst eine Schnittstelleneinheit eine Netzwerkschnittstelle und einen WQE-Generator (Work-Queue-Entry-Generator). Der WQE-Generator ist konfiguriert, um einen gegebenen WQE zu erzeugen, der mit Paketdaten assoziiert ist, die durch die Netzwerkschnittstelle empfangen werden. Der gegebene WQE gehört zu einer gegebenen Planungsgruppe. Die gegebene Planungsgruppe wird einer IUA-Kennung (In-Unit Accounting Identifier, IUA Identifier) zugeordnet, die mit einer IUA-Zählung und einem IUA-Schwellenwert assoziiert ist. Die Schnittstelleneinheit ist kommunikativ mit einem virtualisierten Planer gekoppelt. Der zumindest eine WQE-Generator ist ferner konfiguriert, um den gegebenen WQE an den virtualisierten Planer zu übertragen, damit er für die Planung basierend auf der IUA-Zählung und dem IUA-Schwellenwert eingereiht wird.
  • Es sollte verstanden werden, dass die beispielhaften Ausführungsformen, die hierin offenbart sind, in Form eines Verfahrens, eines Apparates, eines Systems oder eines computerlesbaren Mediums mit darauf verkörperten Programmcodes implementiert sein können.
  • Figurenliste
  • Das Vorhergehende geht aus der folgenden, detaillierteren Beschreibung von beispielhaften Ausführungsformen hervor, wie sie in den begleitenden Zeichnungen veranschaulicht sind und in denen sich ähnliche Bezugszeichen über die verschiedenen Ansichten hinweg auf die gleichen Teile beziehen. Die Zeichnungen sind nicht notwendigerweise maßstabsgetreu, der Schwerpunkt liegt vielmehr auf einer Veranschaulichung der Ausführungsformen.
    • 1A ist ein Blockdiagramm einer beispielhaften Ausführungsform eines System zum Einreihen von Arbeit innerhalb eines virtualisierten Planers basierend auf einem Abrechnen innerhalb einer Einheit (In-Unit Accounting, IUA) von Einträgen innerhalb der Einheit (In-Unit Entries, IUEs).
    • 1B ist ein Blockdiagramm einer beispielhaften Ausführungsform eines virtualisierten Planers.
    • Fig. IC ist ein Blockdiagramm einer beispielhaften Ausführungsform einer Zulassungswarteschlange.
    • 1D ist ein Blockdiagramm einer beispielhaften Ausführungsform einer IUE-Ressource.
    • 2 ist ein Flussdiagramm einer beispielhaften Ausführungsform eines Verfahrens zum Einreihen von Arbeiten in Warteschlangen innerhalb eines virtualisierten Planers basierend auf IUA von IUEs.
    • 3 ist ein Flussdiagramm einer beispielhaften Ausführungsform eines Verfahrens zum Bestimmen, ob ein gegebener Arbeitseintrag (Work-Queue Entry, WQE) zu einer IUE-Ressource bewegt werden soll.
    • 4 ist ein Blockdiagramm einer beispielhaften Ausführungsform einer Zuordnungstabelle für IUA-Kennungen und einer IUA-Tracking-Tabelle.
    • 5 ist ein Blockdiagramm einer beispielhaften Ausführungsform eines Eintrags in eine Arbeitswarteschlange (Work-Queue-Entry, WQE).
    • 6A ist ein Blockdiagramm einer beispielhaften Ausführungsform eines Prozessors für Netzwerkdienste, in dem eine beispielhafte Ausführungsform implementiert werden kann.
    • 6B ist ein Blockdiagramm einer beispielhaften Ausführungsform einer Schnittstelleneinheit des Prozessors für Netzwerkdienste von 6A.
  • DETAILIERTE BESCHREIBUNG
  • Es folgt eine Beschreibung von beispielhaften Ausführungsformen.
  • Moderne Systeme verwenden virtualisierte Planer, das heißt Planer, die die Hardware-Virtualisierung unterstützen, innerhalb derer Gruppen von Teilen der Arbeit, zum Beispiel Funktionen zum Verarbeiten von Paketen, verschiedenen physikalischen PCIe-Funktionen (Peripheral Component Interconnect Express Physical Functions, PCIe PFs) und virtuellen PCIe-Funktionen (PCIe Virtual Functions, PCIe VFs) zugeordnet werden können. Jeder physikalischen Funktion (Physical Function, PF) oder virtuellen Funktion (Virtual Function, VF) kann eine oder mehrere Gruppen von Arbeit (hierin auch austauschbar als Planungsgruppen bezeichnet) zugeordnet werden, die eine jeweilige Kollektion von Stücken auszuführender Arbeit beinhalten.
  • Im Allgemeinen handelt es sich bei „Arbeit“ um eine Softwareroutine oder ein Routine, die auf einigen Daten, wie beispielsweise Paketdaten, durchzuführen ist. Für den virtualisierten Planer kann Arbeit durch einen undurchsichtigen Zeiger auf Speicher dargestellt werden, das heißt, durch einen Zeiger, der auf eine Datenstruktur zeigt, deren Inhalte zu einem Zeitpunkt ihrer Definition nicht offengelegt sind. Ein solcher Zeiger kann zunächst durch eine Netzwerk-Schnittstelleneinheit (NIX), wie beispielsweise die NIX 671 der 6B, die weiter unten offenbart wird, oder durch Software erzeugt werden und kann hierin als Zeiger für eine Arbeitswarteschlange (Work-Queue-Pointer, WQP) bezeichnet werden. Der WQP kann in Kombination mit einer Gruppenkennung, einem Tag-Typ und einem Tag zusammen einen Eintrag bilden, der hierin als Eintrag in eine Arbeitswarteschlange (Work-Queue-Entry, WQE) bezeichnet wird, wie beispielsweise der WQE von 5, weiter unten offenbart.
  • Gemäß einer beispielhaften Ausführungsform muss, bevor Arbeit durch einen virtualisierten Planer zur Verarbeitung z.B. durch einen Prozessorkern, einen Prozessor-Thread oder eine andere Einheit zum Verarbeiten von Arbeit geplant werden kann, der WQE in einen Eintrag innerhalb einer Einheit (In-Unit-Entry, IUE) einer IUE-Ressource des virtualisierten Planers bewegt werden, wie beispielsweise die IUE-Ressource 112 des virtualisierten Planers 102 von 1B, weiter unten offenbart. Die IUE-Ressource und ihre entsprechenden Einträge innerhalb der Einheit (In-Unit-Entries, IUEs) werden hier als „innerhalb der Einheit“ („in-unit“) bezeichnet, da die IUE-Ressource und die IUEs in dem virtualisierten Planer enthalten sind, der als eine Planer-„Einheit“ bezeichnet werden kann. Solche IUEs können sich in On-Chip-Speicher eines Chips befinden, wie beispielsweise in einem inhaltsadressierbaren Speicher (Content-Addressable Memory, CAM), einem statischen Speicher mit wahlfreiem Zugriff (Static Random Access Memory, SRAM) oder einem anderen Typ von On-Chip-Speicher des Chips.
  • Der Chip kann ein Prozessor für Netzwerkdienste sein, wie beispielsweise der Prozessor für Netzwerkdienste 650 von 6A, weiter unten offenbart. Der virtualisierte Planer kann das SSO-Modul (Schedule/Sync and Order Module, SSO Module) 602 des Prozessors 650 für Netzwerkdienste sein, weiter unten offenbart, und kann einen Arbeitsplaner, wie beispielsweise den Arbeitsplaner 148 von 1B, verwenden, um Arbeit für einen Arbeitsslot zu planen, der einem Prozessorkern zugeordnet ist, wie beispielsweise einem Prozessorkern der Prozessorkerne 640a-k von 6A, einem Verarbeitungs-Thread oder einer anderen Einheit zum Verarbeiten von Arbeit. Die Arbeit wird durch Einträge in Arbeitswarteschlangen (Work-Queue-Entries, WQEs) identifiziert, die jeweilige IUEs der IUE-Ressource belegen, um zum Beispiel durch Zuordnung zu einem Arbeitsslot durch den Arbeitsplaner eingeplant zu werden.
  • Die Vielzahl von IUEs in der IUE-Ressource ist eine begrenzte Ressource. Wenn verschiedene Kombinationen von Gruppen von WQEs (hier auch austauschbar als Planungsgruppen bezeichnet) zum Beispiel verschiedenen SR-IOV-Funktionen zugewiesen werden, wie beispielsweise verschiedenen PFs, VFs oder einer Kombination davon, ist es sinnvoll, die Anzahl der IUEs, die jeder SR-IOV-Funktion zur Verfügung stehen, zu begrenzen, um zu verhindern, dass eine oder mehrere gegebene PFs oder VFs eine übermäßige Anzahl von IUEs verwenden und möglicherweise eine oder mehrere andere PF oder VF aushungern. Gemäß einer beispielhaften Ausführungsform kann einer gegebenen SR-IOV-Funktion, wie z. B. einer PF oder VF, eine gegebene IUA-Kennung (In-Unit Accounting Identifier, IUA Identifier) zugeordnet werden, wie beispielsweise die IUA-Kennung 110 von 1A, weiter unten offenbart, und allen Arbeitsgruppen, die dieser gegebenen SR-IOV-Funktion zugeordnet sind, wird/werden die gegebene IUA-Kennung der SR-IOV-Funktion zugeordnet.
  • Als solche wird jeder Planungsgruppe eine IUA-Kennung zugeordnet. Die IUA-Kennung kann ein Indikator sein, der den Zugriff auf eine oder mehrere gegebene Stellen in einem oder in mehreren Speichern ermöglicht, um auf IUA-Informationen zuzugreifen die zu lesen oder zu schreiben sind. Zum Beispiel kann die IUA-Kennung ein Index sein, der einem Eintrag oder Einträgen in einer oder in mehreren Tabellen von Einträgen entspricht. Ein solcher Index kann eine ganze Zahl, eine Speicheradresse, ein Versatz zu einer Speicheradresse, ein Zeiger oder jedes andere Element sein, das den Zugriff auf eine oder mehrere gegebene Stellen in einem oder in mehreren Speichern ermöglicht. Gemäß einer beispielhaften Ausführungsform kann die IUA-Kennung ein Zeichen oder eine Zeichenkette sein. Zum Beispiel kann die IUA-Kennung ein Label sein, das mit einer oder mit mehreren gegebenen Stellen in einem oder in mehreren Speichern assoziiert ist. Gemäß einer beispielhaften Ausführungsform kann die IUA-Kennung eine Vielzahl von IUA-Kennungen enthalten oder identifizieren.
  • Die IUA-Kennung kann durch Firmware oder einen Treiber für eine physikalische Funktion während der Initialisierung zugeordnet werden. Zum Beispiel kann die Firmware konfiguriert werden, um eine IUA-Kennung für jede PF/VF zuzuordnen, und alle Arbeitsgruppen (d.h. Planungsgruppen), die derselben PF/VF zugeordnet sind, verwenden dieselbe IUA-Kennung (d.h. sie teilen sich Ressourcen), während Arbeitsgruppen, die verschiedenen PF/VFs zugeordnet sind, unterschiedliche IUA-Kennungen verwenden können, um ihre Ressourcen zu trennen. Gemäß einer beispielhaften Ausführungsform beinhaltet der virtualisierte Planer ein System mit einer IUA-Ressource, die konfiguriert werden kann, um einen maximalen Schwellenwert für jede IUA-Kennung zu speichern, und jede Arbeitsgruppe (d.h. Planungsgruppe) kann auch mit ihrem eigenen Reserve-Schwellenwert konfiguriert werden, weiter unten offenbart. Gemäß einer beispielhaften Ausführungsform kann der virtualisierte Planer ein System mit einem Arbiter enthalten, wie beispielsweise den Arbiter 114 des Systems 100 von 1A, unten offenbart, und der konfiguriert sein kann, um zu bestimmen, wann Arbeitseinheiten, d.h. WQEs, in die IUE-Ressource 112 bewegt werden können, basierend auf Informationen, die in der IUA-Ressource 104 enthalten sind.
  • 1A ist ein Blockdiagramm einer beispielhaften Ausführungsform eines System 100 zum Einreihen von Arbeit innerhalb eines virtualisierten Planers, wie beispielsweise der virtualisierte Planer 102 von 1B und das SSO-Modul 602 (Schedule/Sync and Order Module, SSO Module) von 6A, weiter unten offenbart. Das System 100 ist konfiguriert, um Arbeit basierend auf einem Abrechnen innerhalb einer Einheit (In-Unit Accounting, IUA) von Einträgen innerhalb der Einheit (In-Unit Entries, IUEs) einzureihen (nicht gezeigt). Das System 100 umfasst eine IUA-Ressource 104, die konfiguriert ist, um in Verbindung 103 mit einer IUA-Kennung 110 eine IUA-Zählung 106 (hierin austauschbar auch als „IUA_CNT“ bezeichnet) und einen IUA-Schwellenwert 108 (hierin austauschbar auch als „IUA_THRESH“ bezeichnet) zu speichern. Gemäß einer beispielhaften Ausführungsform kann die IUA-Ressource 104 eine Nachschlagetabelle (nicht gezeigt) beinhalten, die konfiguriert ist, um eine Vielzahl von jeweiligen IUA-Zählungs- und IUA-Schwellenwert-Paarungen zu speichern, die jede mit einer jeweiligen IUA-Kennung assoziiert ist. Es sollte jedoch verstanden werden, dass die Vielzahl von jeweiligen IUA-Zählungs- und IUA-Schwellenwert-Paarungen nicht darauf beschränkt ist, in einer Nachschlagetabelle gespeichert zu werden.
  • Die IUA-Zählung 106 stellt eine globale Zählung (nicht gezeigt) von Einträgen in eine Arbeitswarteschlange (Work-Queue Entries, WQEs) (nicht gezeigt) dar, die mit der IUA-Kennung 110 assoziiert sind und jeweilige IUEs (nicht gezeigt) einer IUA-Ressource 112 belegen. Die IUA-Zählung 106 ist „global“, weil sie eine allesübergreifende, generelle Zählung von IUEs darstellt, die mit der IUA-Kennung 100 assoziiert sind, und zum Beispiel nicht auf eine Zählung von WQEs beschränkt ist, die mit der IUA-Kennung 110 assoziiert und in einer einzigen gegebenen Warteschlange oder einem einzigen gegebenen Typ von Warteschlange gespeichert sind. Zum Beispiel wären Zählungen von WQEs, die mit der IUA-Kennung 110 assoziiert sind und die IUEs der gegebenen Pro-Gruppe-IAQ (Per-Group In-Unit Admission Queue, Per-Group IAQ) 134 von 1B, belegen, weiter unten offenbart, ein Beispiel für eine „lokale“ Zählung, da eine solche Zählung lokal zu dieser gegebenen Pro-Gruppe-IAQ, d.h. der gegebenen Pro-Gruppe-IAQ 134, erfolgt.
  • Fortsetzend mit Bezug zur 1A, der IUA-Schwellenwert wird eingestellt, um die globale Zählung zu begrenzen. Der IUA-Schwellenwert 108 kann zum Beispiel durch Firmware eingestellt oder durch Hardware initialisiert werden. Es sollte jedoch verstanden werden, dass der IUA-Schwellenwert 108 nicht darauf beschränkt ist, durch Firmware oder Hardware eingestellt zu werden. Der IUA-Schwellenwert 108 kann ein maximaler Wert für die IUA-Zählung 106 sein und eine maximale Anzahl von IUEs in der IUE-Ressource 112 darstellen, die durch die jeweiligen WQEs aus allen Planungsgruppen (nicht gezeigt), die der IUA-Kennung 110 zugeordnet sind, belegt werden dürfen. Das System 100 umfasst ferner einen Arbiter 114, der konfiguriert ist zum Beziehen der IUA-Zählung 106 und des IUA-Schwellenwerts 108 von der IUA-Ressource 104, basierend auf der IUA-Kennung 110, und zum Steuern, als eine Funktion der bezogenen IUA-Zählung 106 und des bezogenen IUA-Schwellenwerts 108, ob ein gegebener Eintrag in eine Arbeitswarteschlange (Work-Queue Entry, WQE) 118 von einer gegebenen Planungsgruppe 116, die der IUA-Kennung 110 zugeordnet ist, in die IUE-Ressource 112 bewegt wird, um durch den virtualisierten Planer zum Planen eingereiht zu werden.
  • Der Arbiter 114 kann konfiguriert sein, um die IUA-Zählung 106 und den IUA-Schwellenwert 108 basierend auf der IUA-Kennung 110 zu beziehen. Zum Beispiel kann, gemäß einer beispielhaften Ausführungsform, der Arbiter 114 mit der IUA-Ressource 104 über einen Kommunikationsbus 105 zwischen dem Arbiter und der IUA-Ressource kommunikativ gekoppelt sein. Der Arbiter 114 kann konfiguriert sein, um den Kommunikationsbus 105 zwischen dem Arbiter und der IUA-Ressource zu verwenden, um eine Stelle in einem Speicher (nicht gezeigt), die sich in der IUA-Ressource 104 befindet, zu lesen, wobei die IUA-Zählung 106 und der IUA-Schwellenwert 108 an dieser Stelle in dem Speicher gespeichert sind. Die Stelle in dem Speicher kann basierend auf der IUA-Kennung 110 adressiert werden. Gemäß einer beispielhaften Ausführungsform kann der Arbiter 114 den Kommunikationsbus 105 zwischen dem Arbiter und der IUA-Ressource verwenden, um auf die IUA-Ressource 104 zuzugreifen, um die IUA-Kennung 110 basierend auf einer Gruppenkennung (nicht gezeigt), die in dem gegebenen WQE 118 enthalten ist, zu beziehen.
  • Zum Beispiel kann die IUA-Ressource 104 eine IUA-Zuordnungstabelle (nicht gezeigt) enthalten, wie beispielsweise weiter unten mit Bezug zur 4 offenbart, die eine Abbildung zwischen der Gruppenkennung und der IUA-Kennung 110 beinhaltet. Als solcher kann der Arbiter 114 ferner konfiguriert sein, um die IUA-Kennung 110 von der IUA-Ressource 104 basierend auf der Gruppenkennung zu beziehen, wodurch es dem Arbiter 114 ermöglicht wird, die IUA-Zählung 106 und den IUA-Schwellenwert 108 von der IUA-Ressource 104 basierend auf der IUA-Kennung 110 zu beziehen.
  • Gemäß einer beispielhaften Ausführungsform kann der Arbiter 114 eine IUA-Ressourcen-Steuerung (nicht gezeigt) enthalten, die konfiguriert ist, um über den Kommunikationsbus 105 zwischen dem Arbiter und der IUA-Ressource auf die IUA-Ressource 104 zuzugreifen, um die IUA-Zählung 106 und den IUA-Schwellenwert 108 basierend auf der IUA-Kennung 110 zu beziehen. Zum Beispiel kann die IUA-Ressourcen-Steuerung konfiguriert sein, um die IUA-Kennung 110 von der IUA-Ressource 104 basierend auf der Gruppenkennung des WQE 118 zu beziehen und um die IUA-Zählung 106 und den IUA-Schwellenwert 108 von der IUA-Ressource 104 basierend auf der IUA-Kennung 110 zu beziehen. Die IUA-Ressourcen-Steuerung kann ferner konfiguriert sein, um die IUA-Zählung 106, die mit der IUA-Kennung 110 assoziiert ist, basierend auf der Gruppenkennung und einem Befehl, der vom Arbiter 114 empfangen wird, zu aktualisieren. Zum Beispiel kann der Befehl die IUE-Ressourcen-Steuerung anweisen, die IUA-Zählung 106 zu inkrementieren oder zu dekrementieren und er kann die Gruppenkennung enthalten. Die IUA-Ressourcen-Steuerung kann konfiguriert sein, um die Gruppenkennung dazu zu verwenden, die IUA-Kennung 110 abzurufen, um eine Stelle in einem Speicher, an der die IUA-Zählung 106 in der IUA-Ressource 104 gespeichert ist, zu adressieren und die IUA-Zählung 106 zu aktualisieren (z.B. zu inkrementieren oder zu dekrementieren). Gemäß einer beispielhaften Ausführungsform kann die IUA-Ressourcen-Steuerung im Arbiter 114 enthalten sein, extern zum Arbiter 114 sein und ausschließlich durch den Arbiter 114 verwendet werden, oder extern zum Arbiter 114 sein und vom Arbiter 114 und einem Arbeitsplaner geteilt werden, weiter unten mit Bezug zur 1B offenbart.
  • Fortsetzend mit Bezug zur 1A, gemäß einer beispielhaften Ausführungsform kann eine Vielzahl von Planungsgruppen 120 der IUA-Kennung 110 zugeordnet sein. Die Vielzahl von Planungsgruppen 120 beinhaltet die gegebene Planungsgruppe 116. Die IUA-Kennung 110 kann einer virtuellen Maschine (nicht gezeigt), einer Anwendung (nicht gezeigt) oder einer physikalischen Funktion (Physical Function, PF) (nicht gezeigt) oder einer virtuellen Funktion (Virtual Function, VF) (nicht gezeigt) entsprechen, die mit einer SR-IOV-Schnittstelle (Single Root I/O Virtualization Interface) assoziiert sind (nicht gezeigt). Als solche kann die IUA-Kennung 110 unter der Vielzahl von Planungsgruppen 120, die Arbeit zum Planen durch den virtualisierten Planer enthalten, teilbar sein, wie beispielsweise der virtualisierte Planer von 1B, unten offenbart.
  • 1B ist ein Blockdiagramm einer beispielhaften Ausführungsform eines virtualisierten Planers 102, der Elemente des Systems 100 von 1A enthält, oben offenbart. Der virtualisierte Planer 102 kann hierin austauschbar als SSO-Modul (Schedule/Sync and Order Module, SSO Module) oder einfach als SSO bezeichnet werden und kann als SSO-Modul 602 des Prozessors 650 für Netzwerkdienste eingesetzt werden, weiter unten mit Bezug zur 6A und zur 6B offenbart.
  • Fortsetzend mit Bezug zur 1B, wenn Arbeit zum virtualisierten Planer 102 hinzugefügt 101 wird, tritt sie in eine „Zulassungswarteschlange“ ein, die einer Gruppe zugeordnet ist, die mit der Arbeit assoziiert ist. Jede Gruppe weist eine dedizierte Zulassungswarteschlange (nicht gezeigt) auf, die zwischen einer transitorischen Zulassungswarteschlange (TAQ) und einer Zulassungswarteschlange innerhalb einer Einheit (In-Unit Admission Queue, IAQ) aufgeteilt wird, wie unten mit Bezug zur Fig. IC offenbart.
  • Fig. IC ist ein Blockdiagramm einer beispielhaften Ausführungsform einer gegebenen Pro-Gruppe-Zulassungswarteschlange 135. Die gegebene Pro-Gruppe-Zulassungswarteschlange 135 ist dediziert für eine gegebene Planungsgruppe, wie beispielsweise die gegebene Planungsgruppe 116 von 1A, oben offenbart, und ist aufgeteilt zwischen einer gegebenen Pro-Gruppe-TAQ 132 und einer gegebenen Pro-Gruppe IAQ 134, unten mit Bezug zur 1B ausführlicher offenbart.
  • Mit Rückbezug zur 1B beinhaltet der virtualisierte Planer 102 eine TAQ-Ressource 136a, die eine Vielzahl von Pro-Gruppe-TAQs 131 beinhaltet. Die Vielzahl von Pro-Gruppe-TAQs 131 beinhaltet die gegebene Pro-Gruppe-TAQ 132 der gegebenen Pro-Gruppe-Zulassungswarteschlange 135 von 1C, oben offenbart. Der virtualisierte Planer 102 beinhaltet ferner die IUE-Ressource 112, die eine Vielzahl von Pro-Gruppe-IAQs (Per-Group In-Unit Admission Queues, Per-Group IAQs) 138 beinhaltet. Die Vielzahl von Pro-Gruppe-IAQs 138 beinhaltet die gegebene Pro-Gruppe-IAQ 134 der gegebenen Pro-Gruppe-Zulassungswarteschlange 135 von 1C, oben offenbart.
  • Es sollte verstanden werden, dass die jeweiligen Längen der Pro-Gruppe-TAQs der Vielzahl von Pro-Gruppe TAQs 131 dynamisch sein können. Zum Beispiel kann eine jeweilige Pro-Gruppe-TAQ nicht existieren, bis Arbeit für eine jeweilige Planungsgruppe zu der TAQ-Ressource 136a hinzugefügt wird, und kann daher eine jeweilige Länge von Null aufweisen. Wenn WQEs der jeweiligen Pro-Gruppe-TAQ hinzugefügt werden, nimmt ihre Länge zu, und wenn WQEs entfernt werden, nimmt ihre Länge ab.
  • In ähnlicher Weise kann jeder Pro-Gruppe-IAQ der Vielzahl von Pro-Gruppe-IAQs 138 eine dynamische Länge aufweisen und kann erst existieren, wenn Arbeit (d.h. ein WQE) für eine jeweilige Planungsgruppe durch den Arbiter 114 von der TAQ-Ressource 136a in die IUE-Ressource 112 bewegt worden ist. Zum Beispiel kann die gegebene Pro-Gruppe-IAQ 134 nicht existieren, bis der Arbiter 114 einen freien IUE (nicht gezeigt), von einer Vielzahl von IUEs (nicht gezeigt) der IUE-Ressource 112, zur Verwendung als ein gegebener IUE zuweist, der konfiguriert ist, um einen gegebenen WQE zu speichern, der durch den Arbiter 114 von der TAQ-Ressource 136a in die IUE-Ressource 112 bewegt wird. Der Arbiter 114 assoziiert den gegebenen IUE mit einer gegebenen Planungsgruppe (nicht gezeigt), zu der der gegebene WQE gehört, und der gegebene IUE geht von einem freien Zustand in einen belegten Zustand über und stellt einen IAQ-Eintrag (nicht gezeigt) der gegebenen Pro-Gruppe-IAQ 134 dar, der dann zum Speichern von WQEs der Planungsgruppe dediziert ist. Wenn zum Beispiel zusätzliche WQEs der gegebenen Planungsgruppe 116 zur IUE-Ressource 122 hinzugefügt werden, sind diese konfiguriert, um jeweilige freie IUEs zu belegen, die dann an die gegebene Pro-Gruppe-IAQ 134 angehängt werden.
  • Gemäß einer beispielhaften Ausführungsform kann der Arbiter 114 den freien IUE auswählen, um durch einen jeweiligen WQE besetzt zu werden, basierend auf einer IUE-Frei-Liste (nicht gezeigt), die geführt wird, um freie IUEs (nicht gezeigt) in der IUE-Ressource 112 zu identifizieren. Die IUE-Frei-Liste kann zum Beispiel im Arbiter 114 hinterlegt sein und kann durch den Arbiter 114 geführt werden. Es sollte allerdings verstanden werden, dass die IUE-Frei-Liste nicht darauf beschränkt ist, im Arbiter 114 angeordnet zu sein oder vom Arbiter 114 geführt zu werden. Das Führen der IUE-Frei-Liste kann ein Ändern eines Zeigers für die IUE-Frei-Liste beinhalten, von einem Zeigen auf den gegebenen IUE, die belegt wird, zu einem Zeigen auf einen nächsten freien IUE (nicht angezeigt) in der IUE-Ressource 112.
  • Der nächste freie IUE kann neben dem gegebenen IUE in der IUE-Ressource 112 liegen oder auch nicht. Wenn WQEs für die gegebene Planungsgruppe von der TAQ-Ressource 136a in die IUE-Ressource 112 bewegt werden, kann sich die Länge der gegebenen Pro-Gruppe-IAQ 134 vergrößern, wenn IUEs von diesen WQEs belegt werden und zu der gegebenen Pro-Gruppe-IAQ 134 hinzugefügt werden. Der Arbiter 114 kann einen IUE zu der gegebenen Pro-Gruppe-IAQ 134 hinzufügen, indem er den IUE mit einem anderen IUE der gegebenen Pro-Gruppe-IAQ 134 verlinkt, um eine Warteschlange zu bilden, die eine Reihenfolge aufweist, wobei solch eine Reihenfolge eine Zulassungsreihenfolge der Zulassung zu der IUE-Ressource 112 jeweiliger WQEs, die diese belegen, verfolgt.
  • Gemäß einer beispielhaften Ausführungsform kann die Vielzahl von Pro-Gruppe-TAQs 131 eine oder mehrere verlinkte Listen oder eine oder mehrere doppelt verlinkte Listen sein. In ähnlicher Weise kann die Vielzahl von Pro-Gruppe-IAQs 138 eine oder mehrere verlinkte Listen oder eine oder mehrere doppelt verlinkte Listen sein. Gemäß einer beispielhaften Ausführungsform kann die Vielzahl von Pro-Gruppe-TAQs und Pro-Gruppe-IAQs 138 auf der Basis von First-in-First-out (FIFO) funktionieren.
  • Im Allgemeinen wird Arbeit durch den Arbiter 114 von der TAQ-Ressource 136a zur IUE-Ressource 112 bewegt, und während sich Arbeit durch die TAQ-Ressource 136a und in die IUE-Ressource 112 bewegt, bleibt sie innerhalb jeder Gruppe geordnet. Initial wird Arbeit 101 zu der TAQ-Ressource 136a hinzugefügt. Solche Arbeit kann zum Beispiel durch eines oder mehrere von Folgendem erzeugt und hinzugefügt 101 werden: die Netzwerkschnittstelleneinheit (Network Interface Unit, NIX) 671, die kryptographische Beschleunigungseinheit (Cryptographic Accelerator Unit, CPT) 678 oder die Timer-Einheit 649 von 6B, weiter unten offenbart, oder einen Prozessorkern, wie beispielsweise einen Prozessorkern der Prozessorkerne 640a-k von 6A und 6B, weiter unten offenbart. Es sollte allerdings verstanden werden, dass Arbeit durch andere Elemente erzeugt und hinzugefügt 101 werden kann und nicht darauf beschränkt ist, durch einen Prozessorkern oder die Netzwerkschnittstelleneinheit (Network Interface Unit, NIX) 671, die kryptographische Beschleunigungseinheit (Cryptographic Accelerator Unit, CPT) 678 oder die Timer-Einheit 649 von 6B erzeugt und hinzugefügt zu werden.
  • Fortsetzend mit Bezug zur 1B kann sich die TAQ-Ressource 136a im On-Chip-Speicher befinden und kann in ihrer Größe basierend auf einer XAQ-Ressource (External Admission Queue Ressource, XAQ Resource) 136b erweitert werden, die sich zum Beispiel in einem Off-Chip-Speicher befindet. Gemäß einer beispielhaften Ausführungsform kann der On-Chip-Speicher SRAM und der Off-Chip-Speicher dynamischen Speicher mit wahlfreiem Zugriff (Dynamic-Random Access Memory, DRAM) beinhalten, wie beispielsweise den DRAM 608 von 6A, weiter unten offenbart. Wenn mehr Arbeit hinzugefügt wird 101 und sich der On-Chip-SRAM füllt, bewegt der virtualisierte Planer 102 Arbeit vom On-Chip-Teil der TAQ-Ressource 136a in den Off-Chip-Speicher der XAQ-Ressource 136b. Der virtualisierte Planer 102 kann diese Arbeit später wieder on-chip, das heißt zurück in die TAQ-Ressource 136a, bringen, für einen Fall, dass Ressourcen in der TAQ-Ressource 136a verfügbar werden.
  • Bevor Arbeit geplant werden kann, wird sie aus der gegebenen Pro-Gruppe-TAQ 132 der TAQ-Ressource 136a und in eine gegebene pro-Gruppe-IAQ 134 der IUE-Ressource 112 bewegt. Die IUE-Ressource 112 umfasst einen Teil des On-Chip-SRAM-Speichers, von dem Arbeit in die Arbeitsslots 140a-k geplant werden kann. Jeder Arbeitsslot der Arbeitsslots 140a-k stellt einen Zustand der jeweiligen Arbeit dar, der durch eine jeweilige Einheit zum Verarbeiten der Arbeit, die dem Arbeitsslot zugeordnet ist, abgeschlossen werden muss. Die jeweilige Einheit zum Verarbeiten von Arbeit kann ein Prozessorkern sein, wie beispielsweise ein gegebener Prozessorkern der Vielzahl von Prozessorkernen 640a-k von 6A, weiter unten offenbart. Alternativ kann die Einheit zum Verarbeiten von Arbeit ein gegebener Prozessor-Thread sein, der auf dem gegebenen Prozessorkern ausgeführt wird, wobei der gegebene Prozessor-Thread dem Arbeitsslot zugeordnet ist. Die jeweilige Einheit zum Verarbeiten von Arbeit kann Arbeit anfordern, was den Arbeitsplaner 148 veranlasst, Arbeit für den jeweiligen Arbeitsslot einzuplanen, der der jeweiligen Einheit zum Verarbeiten von Arbeit zugeordnet ist.
  • Fortsetzend mit Bezug zur 1B, die IUE-Ressource 112 kann ferner Daten speichern, um aktive Arbeit, das heißt WQEs in der IUE-Ressource 112, zu verfolgen, bis sie abgeschlossen und vom virtualisierten Planer 102 freigegeben worden ist. Die IUE-Ressource 112 ist eine begrenzte Ressource, die von allen Gruppen (hierin austauschbar auch als Planungsgruppen oder Arbeitsgruppen bezeichnet) geteilt wird.
  • Jede Gruppe (d.h. Planungsgruppe) hat ihren eigenen Reserve-Schwellenwert für eine minimale Menge von Arbeit, die sie in ihre jeweilige Pro-Gruppen-IAQ stellen kann - dies garantiert, dass eine Gruppe immer Arbeit mit einer gegebenen Rate gemäß ihrer Priorität planen kann. Jede Gruppe hat auch einen maximalen Schwellenwert, um zu verhindern, dass sie mehr als den ihr zugeteilten Anteil an IUEs der IUE-Ressource 112 in Anspruch nimmt. WQEs, die jeweilige IUEs der IUE-Ressource 112 belegen, können durch einen Arbeitsplaner 148 des virtualisierten Planers 102 Arbeitsslots zugeordnet werden, wodurch solche WQEs dazu veranlasst werden, für die Verarbeitung durch eine dem jeweiligen Arbeitsslot zugeordnete Einheit zum Verarbeiten von Arbeit „geplant“ zu werden.
  • Mit Bezug zu den 1A-D, der virtualisierte Planer 102 beinhaltet den Arbeitsplaner, der konfiguriert ist, um auf die IUE-Ressource 112 zuzugreifen. Der Arbiter 114 kann ferner konfiguriert sein, um den gegebenen WQE 118 von der gegebenen Pro-Gruppe-TAQ 132 in die gegebene Pro-Gruppe-AQ 134 in der IUE-Ressource 112 zu bewegen, um durch den Arbeitsplaner 148 zum Planen eingereiht zu werden. Die gegebene Pro-Guuppe-TAQ 132 und die gegebene Pro-Gruppe-IAQ 134 werden der gegebenen Planungsgruppe 116 zugeordnet.
  • Die gegebene Pro-Gruppe-TAQ 132 ist konfiguriert, um WQEs einzureihen, die für die gegebene Planungsgruppe 116 empfangen wurden. Die IUE-Ressource 112 beinhaltet eine Vielzahl von IUEs (nicht gezeigt). Für einen Fall, dass der Arbiter 114 bestimmt, dass der gegebene WQE 118 in die IUE-Ressource 112 verschoben werden soll, kann der Arbiter 114 ferner konfiguriert sein zum (i) Zuweisen eines freien IUE (nicht gezeigt) der Vielzahl von IUEs (nicht gezeigt), wobei der freie IUE als ein gegebener IUE (nicht gezeigt) zum Zulassen des gegebenen WQE 118 in die IUE-Ressource 112 verwendet werden soll, (ii) Bewegen des gegebenen WQE 118 von der gegebenen Pro-Gruppe-TAQ 132 zu dem gegebenen IUE, (iii) Hinzufügen des gegebenen IUE zu der gegebenen Pro-Gruppe-IAQ 134 für die gegebene Planungsgruppe 116 oder Assoziieren des gegebenen IUE mit der gegebenen Planungsgruppe 116, um die gegebene Pro-Gruppe-IAQ 134 für die gegebene Planungsgruppe 116 zu erzeugen, und (iv) Veranlassen, dass die IUA-Zählung 106 in der IUA-Ressource 104 aktualisiert wird. Um zu veranlassen, dass die IUA-Zählung 106 aktualisiert wird, kann der Arbiter 114 ferner konfiguriert sein zu veranlassen, dass die IUA-Zählung 106 inkrementiert wird.
  • Der Arbiter 114 kann die IUL-Zählung 106 auf verschiedene Weisen zum Aktualisieren veranlassen. Zum Beispiel kann der Arbiter 114 auf die IUA-Zählung 106 in der IUA-Ressource 104 zugreifen, indem er die IUA-Zählung 106 über den Kommunikationsbus 105 zwischen dem Arbiter und der IUA-Ressource liest und schreibt. In solch einem Fall kann der Arbiter 114 zunächst die IUA-Kennung 110 von der IUA-Ressource 104 beziehen, basierend auf einer Gruppenkennung (nicht gezeigt), die in dem WQE 118 beinhaltet ist. Zum Beispiel kann der Arbiter 114 die IUA-Kennung 110 beziehen, die in einer Tabelle (nicht gezeigt), die sich in der IUA-Ressource 104 befindet, auf die Gruppenkennung abgebildet ist. Der Arbiter 114 kann dann wiederum den IUA-Identifikator 110 verwenden, um die IUA-Zählung 106 zu beziehen, die IUA-Zählung 106 aktualisieren und die aktualisierte Version der IUA-Zählung 106 zurück in die IUA-Ressource 104 an eine Stelle schreiben, die auf der IUA-Kennung 110 basiert.
  • Alternativ kann der Arbiter 114 einen Befehl (nicht gezeigt) an eine IUA-Ressourcen-Steuerung 122 senden, um die IUA-Zählung 106 zu aktualisieren. Zum Beispiel kann der Arbiter 114 die Gruppenkennung von dem gegebenen WQE 118 an die IUA-Ressourcen-Steuerung 122 zusammen mit einem Befehl (nicht gezeigt) senden, um zum Beispiel die IUA-Zählung 106 zu inkrementieren. Die Gruppenkennung und der Befehl können vom Arbiter 114 über einen Kommunikationsbus 107 zwischen dem Arbiter und der IUA-Ressourcen-Steuerung an die IUA-Ressourcen-Steuerung 122 gesendet werden. Die Gruppenkennung und der Befehl können auf jede geeignete Weise gesendet werden, zum Beispiel kann die Gruppenkennung ein Feld des Befehls sein.
  • In Antwort auf den Befehl kann die IUA-Ressourcen-Steuerung 122 über einen Kommunikationsbus 109 zwischen der IUA-Ressourcen-Steuerung und der IUA-Ressource auf die IUA-Ressource 104 zugreifen, um die IUA-Kennung 110 basierend auf der Gruppenkennung zu beziehen. Die IUA-Ressourcen-Steuerung 122 kann dann wiederum die IUA-Zählung 106 aktualisieren, indem sie die IUA-Zählung 106 von einer Stelle in einem Speicher, die auf der IUA-Kennung 110 basiert, liest und einen aktualisierten Wert für die IUA-Zählung 106 in die Stelle in dem Speicher schreibt.
  • Wenn bestimmt wird, ob die gegebene Planungsgruppe 116 Arbeit von der TAQ-Ressource 136a zur IUE-Ressource 112 bewegen kann, kann der Arbiter 114 IUA-Tracking-Informationen (nicht gezeigt) beziehen, die in der IUA-Ressource 104 gespeichert sein können. Solche IUA-Tracking-Informationen können durch den Arbiter 114 direkt, über den Kommunikationsbus 105 zwischen dem Arbiter und der IUA-Ressource oder indirekt durch Senden von einem oder mehreren Befehlen an die IUA-Steuerung 122 (oben offenbart) gelesen und/oder geschrieben werden. Der Arbiter 114 kann solche Tracking-Informationen beziehen, um einen IUA-Test basierend auf den IUA-Tracking-Informationen zu implementieren, um zu bestimmen, ob der gegebene WQE 118 von der gegebenen Planungsgruppe 116 von der gegebenen Pro-Gruppe-TAQ 132 der TAQ-Ressource 136a in die gegebene Pro-Gruppe-IAQ 134 der IUE-Ressource 112 bewegt werden kann.
  • Zum Implementieren des IUA-Tests kann der Arbiter 114 auf die IUA-Ressource 104 zugreifen, um die IUA-Kennung 110 unter Verwendung der Gruppenkennung, die für die gegebene Planungsgruppe 116 eindeutig ist, nachzuschlagen (d.h. diese zu beziehen). Der Arbiter 114 kann die IUA-Kennung 110 verwenden, um die IUA-Tracking-Informationen von der IUA-Ressource 104 zu beziehen, wobei die Tracking-Informationen Folgendes beinhalten können: GRP_CNT, RSVD_THR, MAX_THR, IUA_CNT, IUA_THRESH und FREE_CNT, weiter unten offenbart. Alternativ kann der Arbiter 114 die Gruppenkennung des gegebenen WQE 118 mit einem IUA-Test-Befehl (nicht gezeigt) an die IUA-Ressourcen-Steuerung 122 senden und die IUA-Ressourcen-Steuerung 122 kann die IUA-Tracking-Informationen beziehen, um sie an den Arbiter 114 zurückzugeben oder um den IUA-Test für den Arbiter 114 zu implementieren und ein Ergebnis des IUA-Tests an den Arbiter 114 zurückzugeben.
  • Der Arbiter 114 oder die IUA-Ressourcen-Steuerung 122 kann den folgenden IUA-Test unter Verwendung der Tracking-Informationen implementieren, um zu bestimmen, ob der gegebene WQE 118 Arbeit von der gegebenen Planungsgruppe 116 von der gegebenen Pro-Gruppe-TAQ 132 in die gegebene Pro-Gruppe-IAQ 134 verschoben werden darf: IUA Ergebnis = ( FREE_CNT > 0              && ( IUA _ CNT < IUA _ THRESH )              && ( GRP _ CNT < = RSVD_THR ( FREE_CNT > RSVD _ FREE&&GRP _ CNT < MAX _ THR ) )
    Figure DE102020210335A1_0001
  • Für einen Fall, dass das IUA-Ergebnis widerspiegelt, dass der Ausdruck (1), oben offenbart, das heißt der „IUA-Test“, als wahr bewertet wird, wird das IUA-Ergebnis als ein positives Ergebnis bestimmt und der gegebene WQE 118 wird durch den Arbiter 114 von der gegebenen Pro-Gruppe-TAQ 132 zu der gegebenen Pro-Gruppe-IAQ 134 bewegt, die für die gegebene Planungsgruppe 116 dediziert ist.
  • Wenn der Ausdruck (1) allerdings als falsch bewertet wird, umgeht der Arbiter 114 die WQEs der gegebenen Planungsgruppe 116, die in der TAQ-Ressource 136a, das heißt in der gegebenen Pro-Gruppe-TAQ 132, vorhanden sind, und prüft, ob es einer andere Planungsgruppe erlaubt wird, dass ihre WQEs in die IUE-Ressource 112 bewegt werden, basierend auf dem IUA-Ergebnis des Ausdrucks (1) für diese Planungsgruppe. Der Arbiter 114 kann konfiguriert sein, oder er kann die IUA-Ressourcen-Steuerung 122 anweisen, den oben offenbarten IUA-Test für jede Planungsgruppe einer Vielzahl von Planungsgruppen im Round-Robin-Verfahren oder basierend auf jeweiligen Prioritäten, die den Planungsgruppen der Vielzahl von Planungsgruppen zugeordnet sind, durchzuführen. Der IUA-Test, oben offenbart, kann durch den Arbiter 114 oder die IUA-Ressourcen-Steuerung 122 durchgeführt werden, um Planungsgruppen daran zu hindern, mehr als den ihnen zugeordneten Betrag von Platz in der IUE-Ressource 112 zu verwenden. Für einen Fall, dass der IUA-Test durch die IUA-Steuerung 122 implementiert ist, ist die IUA-Steuerung 122 konfiguriert, um das IUA-Ergebnis an den Arbiter 114 zurückzugeben.
  • Mit Bezug zum obigen Ausdruck (1) kann die GRP_CNT eine gesamte Anzahl von IUEs (d.h. Ressourcen in der „Einheit“ zum Planen) sein, die durch Einträge in Arbeitswarteschlangen (Work-Queue Entries, WQEs, alias „Arbeit“), die zu einer gegebenen Planungsgruppe gehören, belegt sind, wobei diese Arbeit nie geplant wurde. Das heißt, die Arbeit wurde nie einem gegebenen Arbeitsslot der Vielzahl von Arbeitsslots 140a-k zugeordnet. Dies kann alle Arbeit in der gegebenen Pro-Gruppe-IAQ 134 und, optional, alle Arbeit in einer „Konflikt-Warteschlange“ (Conflict Queue, CQ), wie beispielsweise die gegebene Pro-Gruppe-Konflikt-Warteschlange 147 von 1D umfassen, weiter unten offenbart, da auch konfliktbehaftete Arbeit nie geplant wurde. Diese GRP_CNT kann inkrementiert werden, wenn der IUE-Ressource (in der Pro-Gruppe-IAQ 134) zum ersten Mal Arbeit hinzugefügt wird, und dekrementiert werden, wenn Arbeit geplant wird (d.h. einem Arbeitsslot zugeordnet wird). Ein solches Inkrementieren oder Dekrementieren der GRP_CNT kann durch den Arbiter 114 oder die IUA-Ressourcen-Steuerung 122 durchgeführt werden. Zum Beispiel kann die IUA-Ressourcen-Steuerung 122 ein solches Inkrementieren oder Dekrementieren basierend auf einem Befehl durchführen, den sie von dem Arbiter 114 empfängt, um die GRP_CNT für die gegebene Planungsgruppe 116 zu aktualisieren.
  • Der RSVD_THR ist ein Schwellenwert für eine Reserve einer IAQ-Gruppe und kann eine Anzahl von IUEs sein, die für die gegebene Planungsgruppe 116 reserviert ist. Im Allgemeinen kann der virtualisierte Planer 102 garantieren, dass immer so viele IUEs zum Zwecke eines Einreihens von WQEs in die WQE-Warteschlange in die gegebene Pro-Gruppe-IAQ 134 und die gegebene Pro-Gruppe-CQ 147 (nachfolgend mit Bezug zur 1D offenbart) zur Verfügung stehen, wie zur gegebenen Planungsgruppe 116 gehören. Diese Einträge werden zuerst verwendet, wenn Arbeit zu der gegebenen Pro-Gruppe IAQ-134 hinzugefügt wird. Das heißt, ein Abrechnen innerhalb einer Einheit kann so erfolgen, dass diese „reservierten“ Einträge zuerst gezählt werden.
  • Der MAX_THR ist ein maximaler IAQ-Gruppen-Schwellenwert, der eine maximale Anzahl von IUEs darstellen kann, die eine Gruppe für Arbeiten verwenden darf, die nie geplant worden sind (d.h. für IAQ oder CQ). Die IUA-Kennung 110 für die gegebene Planungsgruppe 116 ist eine IUA-Kennung (In-Unit Accounting Identifier, IUA Identifier), die Software für die gegebene Planungsgruppe programmiert hat und bestimmt, welche IUA_CNT (hierin austauschbar auch als „IUA-Zählung“ bezeichnet) und welcher IUA_THRESH (hierin austauschbar auch als „IUA-Schwellenwert“ bezeichnet) für die gegebene Planungsgruppe 116 verwendet werden.
  • Die IUA_CNT, das heißt, die IUA-Zählung 106, kann eine Zählung von Arbeitselementen in der IUE-Ressource 112 für die IUA-Kennung 110 sein. Diese Zählung beinhaltet alle WQEs, mit jeweiligen Gruppenkennungen, die mit der IUA-Kennung 110 assoziiert sind, die zu der IUE-Ressource 112 des virtualisierten Planers 102 hinzugefügt worden sind und aktuell jeweilige IUEs der IUE-Ressource 112 belegen. Insbesondere kann diese Zählung Arbeit in der Pro-Gruppe-IAQ und CQ jeder Planungsgruppe beinhalten, die der IUA-Kennung 110 zugeordnet ist und die nie geplant worden ist, sowie Arbeit, die aktuell geplant ist, und Arbeit, die zumindest einmal geplant wurde, aber seitdem „ausgeplant“ worden ist. Diese Zählung kann inkrementiert werden, wenn Arbeit erstmals zu der IUE-Ressource hinzugefügt wird (d.h. in eine Pro-Gruppe-IAQ), und dekrementiert werden, wenn die Arbeit abgeschlossen ist und der Arbeitsplaner 148 den IUE freigibt, um es dem IUE zu ermöglichen, wiederverwendet zu werden. Der Arbeitsplaner 148 kann den IUE in Antwort auf eine Freigabeanzeige 165 freigeben, die er von einer Einheit zum Verarbeiten von Arbeit (nicht gezeigt) empfängt, die einem gegebenen Arbeitsslot zugeordnet ist, dem die Arbeit zugeordnet wurde.
  • Zum Beispiel kann der Arbeitsplaner 148 einen gegebenen WQE dem gegebenen Arbeitsslot 167 zuordnen, und die Einheit zum Verarbeiten von Arbeit, die dem gegebenen Arbeitsslot zugeordnet ist, kann die Freigabeanzeige 165 senden, basierend auf einer Vervollständigung der Arbeit, die durch den gegebenen WQE dargestellt wird. Der Arbeitsplaner 148 kann den IUE freigeben, indem er die Frei-Liste, oben offenbart, aktualisiert oder indem er den Arbiter 114 darüber benachrichtigt, dass der IUE freigegeben werden soll, wodurch der Arbiter 114 dazu veranlasst wird, die Frei-Liste zu aktualisieren, um anzuzeigen, dass der IUE zur Verwendung frei ist.
  • Fortsetzend mit Bezug zum Ausdruck (1), der IUA THRESH, das heißt, der IUA-Schwellenwert 108, ist ein maximaler Wert für die IUA_CNT, die der IUA-Kennung 110 entspricht. Das heißt, die maximale Anzahl von IUEs, die durch Arbeit von allen Gruppen, denen die IUA-Kennung 110 zugeordnet wurde, belegt werden kann.
  • Eine Anzahl freier (d.h. unbelegter) IAQ-Einträge, hierin austauschbar auch als „FREE - CNT“ bezeichnet, ist die Anzahl der IUEs, die dem Arbiter 114 zur Verfügung stehen, wenn IAQ-Einträge hinzugefügt werden. Typischerweise ist dies die Anzahl der IUEs, die aktuell nicht in Verwendung sind, d.h. keine gültigen Arbeit enthalten. In einigen Fällen kann es einige IUEs geben, die keine Arbeit enthalten, die aber für andere Zwecke reserviert sind und die in dieser Zählung nicht berücksichtigt werden. Zum Beispiel kann es zusätzlich zum Arbiter 114 einen Mechanismus geben, der es ermöglicht, dass Arbeit zu der IUE-Ressource 112 hinzugefügt werden kann, ohne eine IAQ zu durchlaufen, und einige IUEs der IUE-Ressource 112 können für diesen Mechanismus reserviert werden.
  • Die Anzahl nicht verwendeter IAQ-Einträge, die für Zuweisungen innerhalb des Schwellenwerts für eine Reserve (hierin austauschbar auch als „RSVD FREE“ bezeichnet) zur Verfügung stehen, ist die gesamte Anzahl freier IUEs, die nur verwendet werden können, wenn der IAQ Arbeit für eine Gruppe hinzugefügt wird, die derzeit weniger als ihren Schwellenwert für die Reserve verwendet, d.h., wenn GRP_CNT < RSVD_THR. Diese Einträge werden auch als Teil der FREE_CNT gezählt.
  • Für einen Fall, in dem der Arbiter 114 bestimmt, dass das IUA-Testergebnis positiv ist, basierend auf einer Auswertung des Ausdrucks (1), oben offenbart, bewegt der Arbiter 114 den gegebenen WQE 118 von der gegebenen Pro-Gruppe-TAQ 132 zu der gegebenen Pro-Gruppe-IAQ 134, was den gegebenen WQE 118 dazu veranlasst, einen gegebenen IUE der IUE-Ressource 112 zu belegen. Durch das Belegen des gegebenen IUE wird der gegebene WQE 118 zum Planen durch den Arbeitsplaner 148 des virtualisierten Planers 102 verfügbar.
  • Für einen Fall, dass der Arbeitsplaner 148 bestimmt, dass der gegebene WQE 118 geplant werden soll, ist der Arbeitsplaner 148 konfiguriert, um den gegebenen WQE 118 einem gegebenen Arbeitsslot einer Vielzahl von Arbeitsslots 140a-k zuzuordnen 167 . Der gegebene Arbeitsslot kann einem gegebenen Prozessorkern einer Vielzahl von Prozessorkernen entsprechen, wie beispielsweise der Vielzahl von Prozessorkernen 640a-k von 6A, weiter unten offenbart. Alternativ kann der gegebene Arbeitsslot einem Verarbeitungs-Thread entsprechen, der auf einem gegebenen Prozessorkern der Vielzahl von Prozessorkernen 640a-k oder irgendeiner anderen Einheit zum Verarbeiten von Arbeit ausgeführt wird. Für einen Fall, dass der gegebene WQE 118 dem gegebenen Arbeitsslot zugeordnet wird und Arbeit, die dem gegebenen WQE 118 zugeordnet ist, durch die dem gegebenen Arbeitsslot zugeordneten Einheit zum Verarbeiten von Arbeit abgeschlossen wird, kann der Arbeitsplaner 148 ferner konfiguriert sein, um den gegebenen IUE zur Wiederverwendung freizugeben, und, entweder der Arbeitsplaner 148 oder der Arbiter 114, kann ferner konfiguriert sein, um zu veranlassen, dass die IUA-Zählung 106 in der IUA-Ressource 104 dekrementiert wird.
  • Zum Beispiel kann der Arbeitsplaner 148 die Frei-Liste, oben offenbart, aktualisieren, um anzuzeigen, dass der gegebene IUE frei ist, und kann einen Befehl (nicht gezeigt) mit der Gruppenkennung des gegebenen WQE 118 an die IUA-Ressourcen-Steuerung 122, über einen Kommunikationsbus 111 zwischen dem Arbeitsplaner und der IUA-Ressourcen-Steuerung senden. Die IUA-Ressourcen-Steuerung 122 kann dann wiederum die IUA-Kennung 110 von der IUA-Ressource 104 basierend auf der Gruppenkennung beziehen und dann die IUA-Zählung 106 in der IUA-Ressource 104 basierend auf der IUA-Kennung dekrementieren.
  • Alternativ kann der Arbeitsplaner die IUA-Kennung 110 basierend auf der Gruppenkennung über einen Kommunikationsbus 113 zwischen dem Arbeitsplaner und der IUA-Ressource beziehen und dann die IUA-Zählung 106 in der IUA-Ressource 104 basierend auf der IUA-Kennung 110 dekrementieren, indem er auf die IUA-Zählung 106 in der IUA-Ressource 104 über den Kommunikationsbus 113 zwischen dem Arbeitsplaner und der IUA-Ressource zugreift.
  • Im Allgemeinen wird Arbeit, die durch den virtualisierten Planer 102 fließt, durch den Arbiter 114 zur IUE-Ressource 112 zugelassen, wodurch es möglich wird, dass die Arbeit während des Fluges (d.h. geplant) und entweder „ausgeplant“ oder durch einen Prozessorkern, Prozessor-Thread oder eine andere Einheit zum Verarbeiten von Arbeit abgeschlossen wird. Arbeit, die für eine gegebene Einheit zum Verarbeiten von Arbeit geplant ist, kann durch die gegebene Einheit zum Verarbeiten von Arbeit ausgeplant werden, in einem Fall, dass die gegebene Einheit zum Verarbeiten von Arbeit zur Zeit der Planung nicht in der Lage ist, die Arbeit abzuschließen. Solche ausgeplante Arbeit kann zu einem späteren Zeitpunkt neu geplant werden, um sie durch die gegebene Einheit zum Verarbeiten von Arbeit oder eine andere Einheit zum Verarbeiten von Arbeit abzuschließen. Solche ausgeplante Arbeit kann in eine gegebene Pro-Gruppe--Ausgeplant-Warteschlange eingereiht werden, wie beispielsweise unten mit Bezug zur 1D offenbart.
  • 1D ist ein Blockdiagramm einer beispielhaften Ausführungsform der IUE-Ressource 112 von 1A und 1B, oben offenbart. In der beispielhaften Ausführungsform beinhaltet die Vielzahl von IUEs 143 freie IUEs 141. Die freien IUEs 141 stehen dem Arbiter 114, oben mit Bezug zur 1A und zur 1B offenbart, zur Verwendung zur Verfügung, um sie WQEs (nicht gezeigt) zuzuweisen, die zur IUE-Ressource 112 zugelassen werden sollen. Die Vielzahl von IUEs 143 beinhaltet IUEs mit zugelassener Arbeit 142. Solche IUEs sind durch jeweilige WQEs (nicht gezeigt) belegt, die durch den Arbiter 114 in die IUE-Ressource 112 bewegt (z.B. zugelassen) wurden. Es sollte verstanden werden, dass solche WQEs ihre jeweiligen IUEs so lange belegen, bis die Arbeit, die mit solchen WQEs assoziiert ist, abgeschlossen oder anderweitig beendet ist; wobei in diesem Fall die jeweiligen IUEs, die sie belegen, anschließend zur Wiederverwendung freigegeben werden.
  • Die IUEs mit zugelassener Arbeit 142 sind konfiguriert, um die Vielzahl von Pro-Gruppe-IAQs 138 zu bilden, die die gegebene Pro-Gruppe-IAQ 134 beinhalten. IUEs einer gegebenen Pro-Gruppe-IAQ der Vielzahl von Pro-Gruppe-IAQs 138, wie beispielsweise die gegebene Pro-Gruppe-IAQ 134, sind durch jeweilige WQEs einer eindeutigen gegebenen Planungsgruppe belegt, die durch eine jeweilige Gruppenkennung identifiziert wird, die in den jeweiligen WQEs enthalten ist. Die gegebene Pro-Gruppe-IAQ 134 der Vielzahl von Pro-Gruppe-IAQs 138 kann durch Verlinken der jeweiligen IUEs mit der gegebenen Pro-Gruppe-IAQ 134 gebildet werden, um sie der gegebenen Pro-Gruppe-IAQ 134 „hinzuzufügen“. Zum Beispiel kann die gegebene Pro-Gruppe-IAQ eine verlinkte Liste oder eine doppelt verlinkte Liste sein. Es sollte jedoch verstanden werden, dass die Vielzahl der Pro-Gruppe-IAQs 138 nicht darauf beschränkt ist, eine oder mehrere verlinkte Listen oder eine oder mehrere doppelt verlinkte Listen zu sein.
  • Nach der Zulassung eines gegebenen WQE zu der IUE-Ressource 143 belegt der gegebene WQE einen gegebenen IUE einer gegebenen Pro-Gruppe-IAQ, wie beispielsweise die gegebene Pro-Gruppe-IAQ 134, und steht zum Planen durch den Arbeitsplaner 148 zur Verfügung, oben mit Bezug zur 1B offenbart. Für einen Fall, dass der Arbeitsplaner 148 versucht, den gegebenen WQE zu planen, und der Versuch scheitert, kann der Arbeitsplaner 148 Metadaten (nicht gezeigt) seines jeweiligen IUE ändern, wodurch sein jeweiliger IUE dazu veranlasst wird, von den IUEs mit zugelassener Arbeit 142 zu den IUEs mit konfliktbehafteter Arbeit 144 „bewegt“ zu werden. Es sollte verstanden werden, dass der IUE nicht physisch „bewegt“ wird. Vielmehr wird der IUE modifiziert, um zu bezeichnen, dass er von einer jeweiligen WQE belegt ist, die einen Konflikt hat, und um den IUE von einer gegebenen Pro-Gruppe-IAQ zu dis-assoziieren, wodurch, „der IUE von den IUEs mit zugelassener Arbeit 142 entfernt wird“.
  • Als ein IUE der IUEs mit konfliktbehafteter Arbeit 144 kann der IUE ein Element einer gegebenen Pro-Gruppe-Konflikt-Warteschlange 147 einer Vielzahl von Pro-Gruppe-Konflikt-Warteschlangen 146 sein. Alternativ kann der IUE mit konfliktbehafteter Arbeit ein nicht eingereihter IUE mit konfliktbehafteter Arbeit einer Vielzahl von nicht eingereihten IUEs mit konfliktbehafteter Arbeit sein 151. Ein solcher nicht eingereihter IUE mit konfliktbehafteter Arbeit kann muss unter Umständen warten, bis er zu einer Pro-Gruppe-Konflikt-Warteschlange hinzugefügt wird.
  • Für einen Fall, dass ein Konflikt, der mit einem jeweiligen WQE assoziiert ist, der einen gegebenen IUE der IUEs mit konfliktbehafteter Arbeit 144 belegt, gelöscht wird, kann der Arbeitsplaner 148 den jeweiligen WQE planen, indem er ihn zu einem Arbeitsslot zuordnet, und der gegebene IUE kann zu den IUEs mit geplanter Arbeit 149 „bewegt“ werden. Es sollte verstanden werden, dass der gegebene IUE nicht physisch bewegt wird und dass sein Inhalt nicht physisch bewegt wird. Der gegebene IUE wird allerdings geändert, um den zugeordneten Arbeitsslot für den jeweiligen WQE anzuzeigen.
  • Ähnlich, für einen Fall, dass der Arbeitsplaner 148 einen gegebenen WQE plant, der einen jeweiligen IUE der IUEs mit zugelassener Arbeit 142 belegt, ordnet der Arbeitsplaner 148 diesem einem Arbeitsslot zu und ändert Metadaten (nicht gezeigt) des jeweiligen IUE, um anzuzeigen, dass der IUE nicht länger mit einer gegebenen Pro-Gruppe-IAQ der Vielzahl von Pro-Gruppe-IAQs 138 verlinkt ist, wodurch der jeweilige IUE zu den IUEs mit geplanter Arbeit 149 „bewegt“ wird.
  • Für einen Fall, dass ein jeweiliger WQE, der einen gegebenen IUE der IUEs mit geplanter Arbeit 149 belegt, vom Arbeitsplaner 148 geplant wird, aber die damit assoziierte Arbeit durch eine Einheit zum Verarbeiten von Arbeit, die einem jeweiligen Arbeitsslot zugeordnet ist, der dem jeweiligen WQE zugeordnet ist, nicht abgeschlossen werden kann, kann der Arbeitsplaner 148 den jeweiligen WQE ausplanen und der jeweilige IUE kann zu den IUEs mit ausgeplanter Arbeit 153 „bewegt“ werden. Es sollte verstanden werden, dass der gegebene IUE nicht physisch bewegt wird und dass sein Inhalt nicht physisch bewegt wird. Der gegebene IUE kann allerdings geändert werden, um anzuzeigen, dass der jeweilige WQE, der ihn belegt, ausgeplant worden ist. Der gegebene IUE kann mit anderen IUEs der IUEs mit ausgeplanter Arbeit 153 verlinkt werden, die durch jeweilige WQEs mit derselben Gruppenkennung wie die des jeweiligen WQE belegt sind, wodurch eine Pro-Gruppe-Ausgeplant-Gruppe 156 der Vielzahl von Pro-Gruppe-Ausgeplant-Warteschlangen 150 gebildet wird.
  • Wie oben mit Bezug zur 1A offenbart, die IUA-Zählung 106 repräsentiert eine globale Zählung von WQEs, die mit der IUA-Kennung assoziiert sind und jeweilige IUEs der IUE-Ressource 112 belegen. Als solche kann, fortsetzend mit Bezug zur 1D, die globale Zählung von WQEs eine gesamte Anzahl aller IUEs mit zugelassener Arbeit 142, IUEs mit konfliktbehafteter Arbeit 144, IUEs mit geplanter Arbeit 149 und IUEs mit ausgeplanter Arbeit 153, die durch WQEs, die mit der IUA-Kennung 110 assoziiert sind, belegt sind, sein. Die WQEs, die mit der IUA-Kennung 110 assoziiert sind, weisen jeweilige Gruppenkennungen auf, die der IUA-Kennung 110 zugeordnet sind.
  • Mit Bezug zu den 1A-D, um zu steuern, ob der gegebene WQE 118 bewegt wird, kann der Arbiter 114 ferner konfiguriert sein, um den IUA-Test, oben offenbart, zu implementieren und, basierend auf einem positiven Ergebnis für den implementierten IUA-Test, um den gegebenen WQE 118 von der gegebenen Pro-Gruppe-TAQ 132, die der gegebenen Planungsgruppe 116 zugeordnet ist, und in die IUE-Ressource 112 zu bewegen. Das positive Ergebnis kann auf einer Bestimmung basieren, dass die IUA-Zählung 106 kleiner als der IUA-Schwellenwert 108 ist, wie oben mit Bezug zum Ausdruck (1) offenbart.
  • Das positive Ergebnis kann ferner auf einer Bestimmung basieren, dass die Frei-Zählung (hierin austauschbar als „FREE_CNT“ bezeichnet) größer als Null ist, wie oben mit Bezug zum Ausdruck (1) offenbart. Die Frei-Zählung kann eine gesamte Anzahl unbesetzter IUEs einer Vielzahl verfügbarer IUEs der Vielzahl von IUEs 143 sein, wobei die Vielzahl verfügbarer IUEs dem Arbiter 114 zur Verfügung steht, um WQEs in die IUE-Ressource 112 zum Einreihen zu bewegen. Zumindest ein IUE der Vielzahl von IUEs kann reserviert werden, und die Vielzahl der verfügbaren IUEs kann den zumindest einen reservierten IUE ausschließen. Der zumindest eine IUE kann reserviert werden, um es WQEs zu ermöglichen, direkt zur IUE-Ressource 112 hinzugefügt zu werden, ohne dass sie vom Arbiter 114 zu einer Pro-Gruppe-IAQ hinzugefügt werden müssen.
  • Das positive Ergebnis kann ferner auf einer Bestimmung basieren, dass eine Gruppen-Zählung (hierin austauschbar als „GRP_CNT“ bezeichnet) kleiner oder gleich einem Schwellenwert für eine Reserve einer Gruppe ist (hierin austauschbar als „RSVD_THR“ bezeichnet), wie oben mit Bezug zum Ausdruck (1) offenbart. Die Gruppen-Zählung kann eine gesamte Anzahl von IUEs der Vielzahl von IUEs sein, die durch jeweilige WQEs belegt sind, die zu der gegebenen Planungsgruppe 116 gehören und nie durch den Arbeitsplaner 148 geplant worden sind. Der Schwellenwert für die Reserve der Gruppe kann eine gegebene Anzahl von reservierten IUEs der Vielzahl von IUEs sein, die für die gegebene Planungsgruppe zur Belegung durch WQEs reserviert sind, die zu der gegebenen Planungsgruppe 116 gehören und nie durch den Arbeitsplaner 148 geplant worden sind.
  • Ein erster Teil von IUEs der Vielzahl von IUEs 143 kann angeordnet sein, um eine gegebene Pro-Gruppe-IAQ (Per-Group In-Unit Admission Queue, Per-Group IAQ) 134 in der IUE-Ressource 112 für die gegebene Planungsgruppe 116 zu bilden. Die gegebene Pro-Gruppe-IAQ 134 kann vom Arbiter 114 erzeugt werden, indem er freie IUEs der Vielzahl von IUEs 143 zuweist und WQEs, die zu der gegebenen Planungsgruppe 116 gehören, in die zugewiesenen freien IUEs bewegt. Ein zweiter Teil von IUEs der Vielzahl von IUEs 143 kann angeordnet sein, um eine gegebene Pro-Gruppe-Konflikt-Warteschlange 147 in der IUE-Ressource 112 für die gegebene Planungsgruppe 116 zu bilden. Der zweite Teil der IUEs wird durch jeweilige WQEs belegt, die vom Arbeitsplaner 148 in Antwort auf jeweilige Versuche, die jeweiligen WQEs zu planen, von der gegebenen Pro-Gruppe-IAQ 134 in die gegebene Pro-Gruppe-Konflikt-Warteschlange 147 bewegt wurden. Die jeweiligen Versuche scheiterten aufgrund jeweiliger Planungskonflikte. Als solche repräsentieren WQEs, die jeweilige IUEs der gegebenen Pro-Gruppe-IAQ 134 und der gegebenen Pro-Gruppen-Konflikt-Warteschlange 147 belegen, die jeweiligen WQEs, die zu der gegebenen Planungsgruppe 116 gehören und nie vom Arbeitsplaner 148 geplant worden sind.
  • Der Arbiter 114 kann ferner konfiguriert sein, um die Gruppen-Zählung zu inkrementieren, für einen Fall, dass der gegebene WQE 118 in die IUE-Ressource 112 bewegt wird. Für einen Fall, dass der gegebene WQE 118 durch den Arbeitsplaner 148 geplant und Arbeit, die mit dem gegebenen WQE 118 assoziiert ist, abgeschlossen wird, kann entweder der Arbiter 114 oder der Arbeitsplaner 148 konfiguriert sein, um die Gruppen-Zählung zu dekrementieren.
  • Das positive Ergebnis kann ferner auf einer Bestimmung basieren, dass a) die Frei-Zählung größer als eine Reserviert-Frei-Zählung (hierin austauschbar als „RSVD_FREE“ bezeichnet) ist, wobei die Reserviert-Frei-Zählung als Teil der Frei-Zählung gezählt wird, und b) die Gruppen-Zählung kleiner als ein maximaler Schwellenwert für eine Gruppe ist (hierin austauschbar als „MAX_THR“ bezeichnet), wie oben mit Bezug zum Ausdruck (1) offenbart.
  • Die Reserviert-Frei-Zählung kann eine gesamte Anzahl von nicht belegten, reservierten IUEs der reservierten IUEs der Vielzahl von IUEs 143 sein, die reserviert sind, um WQEs jeweiliger Planungsgruppen in die IUE-Ressource 112 zu bewegen. Die Gruppen-Zählung kann eine gesamte Anzahl von IUEs der Vielzahl von IUEs sein, die durch jeweilige WQEs belegt sind, die zu der gegebenen Planungsgruppe 116 gehören und nie vom Arbeitsplaner 148 geplant worden sind. Der maximale Schwellenwert für die Gruppe kann eine maximale Anzahl von IUEs der Vielzahl von IUEs 143 sein, die von WQEs belegt werden dürfen, die aus der gegebenen Planungsgruppe 118 stammen und nie vom Arbeitsplaner 148 geplant worden sind.
  • Die IUE-Ressource 112 kann die gegebene Pro-Gruppe-IAQ 134 für die gegebene Planungsgruppe 116 und die gegebene Pro-Gruppe-Konflikt-Warteschlange 147 für die gegebene Planungsgruppe 116 beinhalten. Die WQEs, die aus der gegebenen Planungsgruppe 116 stammen und nie geplant worden sind, können jeweilige IUEs belegen von: der gegebenen Pro-Gruppe-IAQ 134 , der gegebenen Pro-Gruppe-Konflikt-Warteschlange 147 oder einer Kombination davon.
  • Das positive Ergebnis kann ferner auf einer Bestimmung basieren, dass die Gruppen-Zählung kleiner oder gleich dem Schwellenwert für die Reserve der Gruppe ist oder dass a) die Frei-Zählung größer als die Reserviert-Frei-Zählung ist, wobei die Reserviert-Frei-Zählung als Teil der Frei-Zählung gezählt wird, und b) die Gruppen-Zählung kleiner als der maximale Schwellenwert für die Gruppe ist, wie oben mit Bezug zum Ausdruck (1) offenbart.
  • Für einen Fall, dass die IUA-Zählung 106 größer oder gleich dem IUA-Schwellenwert 108 ist, kann der Arbiter 114 ferner konfiguriert sein, um den gegebenen WQE 118 von der Berücksichtigung für die Bewegung in die IUE-Ressource 112 auszuschließen.
  • 2 ist ein Flussdiagramm 200 einer beispielhaften Ausführungsform eines Verfahrens zum Einreihen von Arbeit innerhalb eines virtualisierten Planers basierend auf einem Abrechnen innerhalb einer Einheit (In-Unit Accounting, IUA) von Einträgen innerhalb der Einheit (In-Unit Entries, IUEs). Das Verfahren startet (202) und bezieht eine IUA-Zählung und einen IUA-Schwellenwert von einer IUA-Ressource basierend auf einer IUA-Kennung, wobei die IUA-Zählung eine globale Zählung von Einträgen in eine Arbeitswarteschlange (Work-Queue Entries, WQEs) darstellt, die mit der IUA-Kennung assoziiert sind und die jeweilige IUEs einer Vielzahl von IUEs einer IUE-Ressource (In-Unit Entry Resource, IUA Resource) belegen, wobei der IUA-Schwellenwert eingestellt wird, um die globale Zählung (204) zu begrenzen. Das Verfahren umfasst ferner ein Steuern, als eine Funktion der IUA-Zählung und des IUA-Schwellenwerts, die von der IUA-Ressource basierend auf der IUA-Kennung bezogen wurden, ob ein gegebener WQE von einer gegebenen Planungsgruppe, die der IUA-Kennung zugeordnet ist, in die IUE-Ressource bewegt wird, um durch den virtualisierten Planer (206) zum Planen eingereiht zu werden, und das Verfahren endet danach (208), in der beispielhaften Ausführungsform.
  • 3 ist ein Flussdiagramm (300) einer beispielhaften Ausführungsform eines Verfahrens zum Bestimmen, ob ein gegebener Arbeitseintrag (Work-Queue Entry, WQE) zu einer IUE-Ressource bewegt werden soll. Das Verfahren kann durch den Arbiter 114 von 1A und 1B implementiert sein, wie oben offenbart. Das Verfahren verhindert, dass eine Planungsgruppe oder Planungsgruppen, die einer gleichen IUA-Kennung zugeordnet sind, mehr als eine zugewiesene Menge an IAQ-Ressourcen innerhalb der IUE-Ressource verwenden.
  • Das Verfahren startet (302) und prüft, ob die FREE_CNT, oben offenbart, größer als Null ist (304). Wenn die FREE_CNT nicht größer als Null ist, wird der gegebene WQE nicht bewegt (306), wodurch verhindert wird, dass eine oder mehrere Planungsgruppen, die der IUA-Kennung zugeordnet sind, mehr als eine zugeteilte Menge an IAQ-Ressourcen verwenden, und das Verfahren endet danach (308) in der beispielhaften Ausführungsform.
  • Wird allerdings bei (304) bestimmt, dass die FREE_CNT größer als Null ist, prüft das Verfahren, ob die IUA_CNT (d.h. die IUA-Zählung) kleiner als der IUA_THRESH (d.h. der IUA-Schwellenwert) (310) ist. Wenn bestimmt wird, dass die IUA_CNT nicht kleiner als der IUA_THRESH ist, als wird der gegebene WQE nicht bewegt (306), wodurch verhindert wird, dass eine oder mehrere Planungsgruppen, die der IUA-Kennung zugeordnet sind, mehr als eine zugeteilte Menge an IAQ-Ressourcen verwenden, und das Verfahren endet danach (308), in der beispielhaften Ausführungsform.
  • Wenn allerdings bei (310) bestimmt wird, dass die IUA_CNT kleiner als der IUA_THRESH ist, prüft das Verfahren, ob die GRP_CNT kleiner oder gleich dem RSVD_THR (312) ist. Wenn bestimmt wird, dass die GRP_CNT kleiner oder gleich dem RSVD_THR ist, wird der gegebene WQE in die IUE-Ressource (314) bewegt, die IUA_CNT wird inkrementiert (320), und das Verfahren endet (308) danach, in der beispielhaften Ausführungsform.
  • Wenn allerdings bei (312) bestimmt wird, dass die GRP_CNT nicht kleiner oder gleich dem RSVD THR ist, prüft das Verfahren, ob die FREE_CNT größer als die RSVD_FREE (312) ist. Wenn bestimmt wird, dass die die FREE_CNT nicht größer als die RSVD_FREE ist, wird der gegebene WQE nicht bewegt (306), wodurch verhindert wird, dass eine oder mehrere Planungsgruppen, die der IUA-Kennung zugeordnet sind, mehr als eine zugeteilte Menge an IAQ-Ressourcen verwenden, und das Verfahren endet danach (308), in der beispielhaften Ausführungsform.
  • Wenn allerdings bei (316) bestimmt wird, dass die FREE_CNT größer als die RSVD_FREE ist, prüft das Verfahren, ob die GRP_CNT kleiner als der MAX_THR (318) ist. Wenn bestimmt wird, dass die GRP_CNT kleiner als der MAX_THR ist, wird der gegebene WQE zu der IUE-Ressource (314) bewegt, die IUA_CNT wird inkrementiert (320), und das Verfahren endet (308) danach, in der beispielhaften Ausführungsform.
  • Wenn allerdings bei (318) bestimmt wird, dass die GRP_CNT nicht kleiner als der MAX_THR ist, wird der gegebene WQE nicht bewegt (306), wodurch verhindert wird, dass eine oder mehrere Planungsgruppen, die der IUA-Kennung zugeordnet sind, mehr als eine zugeteilte Menge an IAQ-Ressourcen verwenden, und das Verfahren endet danach (308), in der beispielhaften Ausführungsform.
  • 4 ist ein Blockdiagramm einer beispielhaften Ausführungsform einer Zuordnungstabelle 421 für IUA-Kennungen und einer IUA-Tracking-Tabelle 423. Die Zuordnungstabelle 421 für die IUA-Kennungen und die IUA-Tracking-Tabelle 423 können in der IUA-Ressource 104, oben offenbart, enthalten sein. Die Zuordnungstabelle 421 für die IUA-Kennungen kann Abbildungen zwischen Planungsgruppen und IUA-Indizes enthalten. Zum Beispiel, in der beispielhaften Ausführungsform, ist eine Gruppenkennung 417 der IUA-Kennung 410 zugeordnet. WQEs, die einer gegebenen Gruppe (nicht gezeigt) zugeordnet sind, die durch die Gruppenkennung 417 identifiziert wird, können konfiguriert sein, um die Gruppenkennung 417 zu enthalten. Der Arbiter 114, oben offenbart, kann die Gruppenkennung 417, die in dieser gegebenen WQE 118 enthalten sein kann, verwenden, um die IUA-Kennung 410 zu beziehen.
  • Die IUA-Kennung 410 kann einem gegebenen IUA-Tracking-Eintrag 429 zugeordnet sein, der in der IUA-Tracking-Tabelle 423 angeordnet ist. Der Arbiter 114 kann die IUA-Kennung 410 verwenden, um die IUA-Zählung 406 und den IUA-Schwellenwert 408 von der IUA-Ressource 104 zu beziehen. Ferner können andere Tracking-Informationen 411 von der IUA-Ressource 104 unter Verwendung der Gruppenkennung 417 und/oder der IUA-Kennung 410 bezogen werden. Die Tracking-Informationen 411 können zum Beispiel die GRP_CNT, den RSVD_THR, den MAX_THR, die IUA_CNT, den IUA_THRESH und die FREE_CNT beinhalten, oben offenbart, die durch den Arbiter 114 verwendet werden können, um den IUA-Test zu implementieren, der durch den Ausdruck (1), oben offenbart, definiert ist. Es sollte allerdings verstanden werden, dass die IUA-Tracking-Informationen 411 nicht auf die oben offenbarten Tracking-Informationen beschränkt sind. Ferner kann ein Speichern der IUA-Kennung 410, der IUA-Zählung 406, des IUA-Schwellenwerts 408 und der IUA-Tracking-Information 411 in anderen Tabellen oder in mehreren Einträgen von Tabellen erfolgen und ist nicht auf das in 4 Offenbarte beschränkt.
  • 5 ist ein Blockdiagramm einer beispielhaften Ausführungsform eines Eintrags in eine Arbeitswarteschlange (Work-Queue-Entry, WQE) 518. Der WQE 518 beinhaltet einen Identifizierungszeiger, d.h. den WQE-Zeiger (WQE Pointer, WQP) 562, einen Tag-Wert 564, einen Tag-Typ 566 und eine Gruppenkennung 517. Der WQE 518 kann ferner andere WQE-Informationen 568 beinhalten.
  • Der Tag-Wert 564 assoziiert den WQE 518 mit einem eindeutigen Arbeitsablauf (nicht gezeigt). Der Tag-Typ 566 spezifiziert, ob der eindeutige Arbeitsablauf geordnet ( Reihenfolge ist garantiert), atomar (Reihenfolge und Atomarität sind garantiert) oder ungeordnet (keine Reihenfolge ist garantiert) ist. Die Gruppenkennung 517 entspricht der WQE 518 und ist eine eindeutige Kennung, die die Planungsgruppe identifiziert, zu welcher der WQE 518 zugeordnet ist. Die anderen WQE Informationen 568 können den WQE 518 mit anderen WQEs in der Planungsgruppe verlinken.
  • Der Tag-Wert 564 erlaubt es dem virtualisierten Planer 102, oben offenbart, Arbeit für einen gleichen Ablauf (von einer Quelle zu einem Ziel) zu planen, um geordnet und synchronisiert zu werden. Zum Beispiel kann der Tag-Wert 564 ein Hash des standardmäßigen Fünf-Tupels für ein Protokoll zum Steuern einer Übertragung (Transmission Control Protocol, TCP) das heißt eine Quelladresse für ein Internet Protokoll (Internet Protocol, IP), eine IP-Zieladresse, ein IP-Protokoll, ein TCP-Quellport, ein TCP-Zielport in der Kopfzeile eines Datenpakets sein, das einen eindeutigen Arbeits-Ablauf“ definiert. Derselbe Ablauf hat denselben Tag-Wert, so dass er geordnet und synchronisiert werden kann. Unterschiedliche Abläufe haben wahrscheinlich unterschiedliche Tag-Werte, werden also nicht geordnet und synchronisiert und können völlig parallel auf verschiedenen Prozessorkernen ausgeführt werden. Der Tag-Typ 566 identifiziert die Art des Ordnens und Synchronisierens, die durchgeführt werden soll.
  • Da nicht alle Arbeit gleich ist, können verschiedene WQEs zu verschiedenen Planungsgruppen gehören. Gruppen stellen Mittel bereit, um verschiedene Funktionen auf verschiedenen Kernen auszuführen, auch wenn alle Kerne vom virtualisierten Planer 102 geteilt werden. Zum Beispiel kann eine Paketverarbeitung von einer Gruppe von Kernen zu einer anderen Gruppe von Kernen weitergeleitet werden, wobei die erste Gruppe die erste Stufe der Arbeit durchführt und die nächste Gruppe die nächste Stufe der Arbeit durchführt, indem die Gruppen definiert werden, von denen ein Prozessorkern Arbeit akzeptiert. Gruppen erlauben es jedem Prozessorkern, die Arten von Arbeit zu spezifizieren, die er akzeptiert, wodurch es dem Arbeitsplaner 148 ermöglicht wird, die Arbeit dynamisch auf die verfügbaren Prozessorkerne zu verteilen.
  • Ein Prozessorkern, wie irgendeiner der Prozessorkerne, die unten mit Bezug zur 6A offenbart werden, kann Arbeit vom Arbeitsplaner 148 anfordern. Typischerweise fragt der Prozessorkern den Arbeitsplaner 148 ab, um Arbeit zu finden. Allerdings kann in einigen Fällen der Arbeitsplaner 148 ausgewählt werden, um den Prozessorkern zu unterbrechen, wenn er Arbeit für den Prozessorkern hat. Der Arbeitsplaner 148 wählt, das heißt plant die Arbeit für den Prozessorkern basierend auf den Gruppen, von denen der Prozessorkern Arbeit annimmt. Der Arbeitsplaner 148 plant kein Stück von Arbeit für einen Prozessorkern, wenn der Prozessorkern die mit der Arbeit assoziierte Gruppe nicht akzeptiert, das heißt, wenn der Prozessorkern WQEs mit der Gruppenkennung 517 der Gruppe nicht akzeptiert.
  • Der WQP 562 kann auf WQE-Daten (nicht gezeigt) zeigen, die in einem Speicher eines Prozessors für Netzwerkdienste gespeichert sein können, wie beispielsweise der Prozessor 650 für Netzwerkdienste von 6A, weiter unten offenbart. Die Daten der Arbeitswarteschlange können ein Paketdeskriptor sein, der ein Paket beschreibt, das zum Beispiel von der Netzschnittstelleneinheit (Network Interface Unit, NIX) 671 von 6A empfangen wird. Der Paketdeskriptor kann Informationen beinhalten, wie beispielsweise einen Eingangsport, bei welchem ein Paket angekommen ist, eine Anzahl von Bytes des Pakets, einen Zeiger auf das Paket, andere Informationen basierend auf Daten in Feldern des Pakets, usw. Es sollte verstanden werden, dass die Daten der Arbeitswarteschlange nicht auf einen Paketdeskriptor beschränkt sind und dass der Paketdeskriptor zusätzlich zu und/oder andere als die oben genannten Informationen beinhalten kann.
  • Wie oben offenbart, kann der Tag-Typ 566 atomar, geordnet oder ungetaggt sein. Mit Bezug zur 5 und zur 1B, oben offenbart, wenn der Tag-Typ 566 atomar ist, wird der Arbeitsplaner 148 nur einen WQE mit diesem Tag-Typ zu einer Zeit aktiv sein lassen. Wenn der Tag-Typ 566 geordnet ist, kann der Arbeitsplaner 148 mehrere WQEs mit dem gleichen Tag-Wert 564 planen, aber der Arbeitsplaner 148 behält die Ordnung zwischen diesen mehreren Paketen bei, und, zusätzlich, kann der Arbeitsplaner den Tag-Typ 566 so „umschalten“, dass er atomar wird, so dass die Prozessoren die richtige Paketordnung bestimmen können. Wenn der Tag-Typ 566 ungetaggt ist, verfolgt der Arbeitsplaner 148 keine Paketordnung. Dieser Tag-Typ 566 kann z.B. durch die Konfiguration einer gegebenen Warteschlange oder eines gegebenen Ports der NIX 671, welche die Pakete empfängt, bestimmt werden, um einem Verhalten der Software, welche die Pakete verarbeiten wird, zu entsprechen (z.B. um konsistent zu sein).
  • Arbeit, die mit unterschiedlichen WQEs assoziiert ist, kann ohne Bezug zueinander stehen und völlig parallel auf unterschiedlichen Kernen ausgeführt werden, wenn die WQEs unterschiedliche Tag-Werte oder Tag-Typen haben. WQEs, die mit einem gleichen Ablauf assoziiert sind, können den gleichen Tag-Wert 564 aufweisen, so dass sie geordnet und synchronisiert werden können. WQEs, die mit unterschiedlichen Abläufen assoziiert sind weisen wahrscheinlich unterschiedliche Tag-Werte auf, werden also wahrscheinlich nicht geordnet und synchronisiert und können völlig parallel auf verschiedenen Prozessorkernen ausgeführt werden, wie beispielsweise den Prozessorkernen 640a-k von 6A, unten offenbart.
  • 6A ist ein Blockdiagramm einer beispielhaften Ausführungsform eines Prozessors 650 für Netzwerkdienste, in dem eine beispielhafte, hierin offenbarte Ausführungsform implementiert sein kann. Der Prozessor 650 für Netzwerkdienste kann Protokolle für Open-System-Interconnection-Netzwerk-L2-L7-Schichten verarbeiten, die in empfangene Pakete eingebunden sind. Wie es dem Fachmann wohlbekannt ist, definiert das Open-System-Interconnection-(OSI)-Referenzmodell sieben Netzwerkprotokollschichten (L1-L7). Die physikalische Schicht (L1) stellt die eigentliche, elektrische und physikalische Schnittstelle dar, die eine Vorrichtung mit einem Übertragungsmedium verbindet. Die Datenverbindungsschicht (L2) führt Datenframing durch. Die Netzwerkschicht (L3) formatiert die Daten in Pakete. Die Transportschicht (L4) handhabt den Ende-zu-Ende-Transport. Die Sitzungsschicht (L5) verwaltet Kommunikationen zwischen Vorrichtungen, zum Beispiel ob die Kommunikation halbduplex oder vollduplex erfolgt. Die Präsentationsschicht (L6) verwaltet eine Datenformatierung und -darstellung, zum Beispiel Syntax, Steuercodes, Sondergrafiken und Zeichensätze. Die Anwendungsschicht (L7) ermöglicht Kommunikation zwischen Benutzern, zum Beispiel Dateiübertragung und elektronische Post.
  • Der Prozessor 650 für Netzwerkdienste kann Arbeit (Operationen zum Verarbeiten von Paketen) für Netzwerkprotokolle für obere Ebenen, zum Beispiel L4-L7, planen und einreihen, und zulassen, dass ein Verarbeiten von Netzwerkprotokollen für obere Ebenen in empfangenen Paketen durchgeführt wird, um Pakete mit Leitungsgeschwindigkeit weiterzuleiten. Der Prozessor für Netzwerkdienste 650 kann Arbeit für Anwendungen planen und einreihen, die auf untere Schichten eingeschränkt sein können, z.B. Weiterleiten auf L2 oder L3 bei Leitungsgeschwindigkeit. Leitungsgeschwindigkeit ist die Rate einer Datentübertragung des Netzwerks, über das Daten gesendet und empfangen werden. Durch das Verarbeiten der Protokolle zum Weiterleiten der Pakete mit Leitungsgeschwindigkeit verlangsamt der Prozessor 650 für Netzwerkdienste die Datenübertragungsrate des Netzwerks nicht.
  • Ein Paket wird durch eine Schnittstelleneinheit 663 zur Verarbeitung empfangen. Die Schnittstelleneinheit 663 führt eine Vorverarbeitung des empfangenen Pakets durch, indem sie verschiedene Felder in den Kopfzeilen des Netzwerkprotokolls (z. B. L2-, L3- und L4-Kopfzeilen) prüft, die im empfangenen Paket beinhaltet sind, und kann Prüfungen von Prüfsummen für ein TCP/UDP-Protokoll (TCP/User Datagram Protocol (UDP) Protocol, TCP/UDP Protocol) (L3-Netzwerkprotokolle) durchführen. Die Schnittstelleneinheit 663 kann Pakete basierend auf mehreren Protokollen für Netzwerkschnittstellen, wie Ethernet und Peripheral Component Interconnect Express (PCIe), empfangen. In einer weiteren Ausführungsform kann die Schnittstelleneinheit 663 konfiguriert sein, um Pakete von einer Vielzahl von XAUI-Schnittstellen (X Attachment Unit Interfaces, XAUI), RXAUI-Schnittstellen (Reduced X Attachment Unit Interfaces, RXAUI), SGMII-Schnittstellen (Serial Gigabit Media Independent Interfaces, SGMII), 40GBASE-R, 50GBASE-R und/oder 100GBASE-R zu empfangen. Die Schnittstelleneinheit 663 kann auch ausgehende Pakete basierend auf einer oder auf mehreren der vorgenannten Schnittstellen vorbereiten und übertragen.
  • Die Schnittstelleneinheit 663 kann Paketdaten in Puffer in die Last Level Cache und Steuerung (LLC) 630 oder in den externen DRAM 608 schreiben. Die Paketdaten können in einem Format in die Puffer geschrieben werden, das für Software höherer Schichten geeignet ist, die in zumindest einem Prozessorkern der Prozessorkerne 640a-k ausgeführt wird. Folglich wird ein weiteres Verarbeiten von Netzwerkprotokollen auf höherer Ebene erleichtert.
  • Der Prozessor 650 für Netzwerkdienste kann auch einen oder mehrere anwendungsspezifische Co-Prozessoren enthalten. Diese Co-Prozessoren, wenn sie enthalten sind, entladen einen Teil der Verarbeitung von den Prozessorkernen 640a-k, wodurch es dem Prozessor 650 für Netzwerkdienste ermöglicht wird, eine Paketverarbeitung mit hohem Durchsatz zu erreichen.
  • Eine E/A-Brücke 638 ist konfiguriert, um das Gesamtprotokoll und eine Arbitrierung zu verwalten und eine kohärente E/A-Portionierung mit einem E/A-Bus 642 bereitzustellen. Die E/A-Brücke 638 kann Pufferwarteschlangen zum Speichern von Informationen beinhalten, die zwischen einem CMI 644 (Coherent Memory Interconnect), dem E/A-Bus 642 und der Schnittstelleneinheit 663 übertragen werden sollen. Die E/A-Brücke 638 kann eine Vielzahl individueller Brücken umfassen, auf welche Kommunikationen und Arbitrierung verteilt werden können.
  • Die MIO-Schnittstelle (Miscellaneous I/O Interface) 664 kann Hilfsschnittstellen wie beispielsweise GPIO (General Purpose I/O), Flash, IEEE 802 Zweidraht-MDIO-Schnittstelle (Management Data I/O, MDIO), SMI (Serial Management Interface), UARTs (Universal Asynchronous Receiver-Transmitter), (TWSI (Two-Wire Serial Interface) und andere serielle Schnittstellen beinhalten.
  • Ein SSO-Modul (Schedule/Sync and Order Modul, SSO-Modul) 602 reiht und plant Arbeit für die Prozessorkerne 640a-k ein. Gemäß einer beispielhaften Ausführungsform ist das SSO-Modul 602 der virtualisierte Planer 102, oben mit Bezug zur 1A offenbart. Der Prozessor 650 für Netzwerkdienste enthält eine Timer-Einheit 649, die vom SSO-Modul 602 verwendet werden kann, um Arbeit für die Prozessorkerne 640a-k zu planen.
  • Die Prozessorkerne 640a-k können vom SSO-Modul 648 Arbeit anfordern. Das SSO-Modul 602 wählt (d.h. plant) Arbeit für einen der Prozessorkerne der Prozessorkerne 640a-k aus und gibt einen Zeiger auf den Eintrag in der Arbeitswarteschlange zurück, der die Arbeit für einen gegebenen Prozessorkern der Prozessorkerne 640a-k beschreibt.
  • Jeder Prozessorkern beinhaltet einen Befehlscache 652 und einen Level-1-Datencache 154. In einer Ausführungsform beinhaltet der Prozessor 650 für Netzwerkdienste 24 Prozessorkerne 640a-k. In einigen Ausführungsformen kann jeder der Prozessorkerne 640a-k eine Implementierung der Arm®-Architektur sein, wie beispielsweise die Armv8.2 64-Bit-Architektur, und kann mit dem Armv8.2-Software-Ökosystem kompatibel sein und Unterstützung für Hardware Floating Point, Single Instruction Multiple Data (SIMD) und Memory Management Unit umfassen. In solch einer Ausführungsform, konsistent mit der Armv8.2-Architektur, können die Prozessorkerne 640a-k eine volle Hardware-Unterstützung für Virtualisierung enthalten. Gastbetriebssysteme können somit auf von Arm definierten Privilegierungsebenen für Benutzer und Betriebssysteme laufen, und Hypervisor-Software kann auf einer separaten höheren Privilegierungsebene laufen. Die Prozessorkerne 640a-k können auch einen sicheren Zustand unterstützen, in dem Software auf drei verschiedenen Privilegierungsebenen ausgeführt werden kann, während die Hardware eine Isolierung vom nicht sicheren Zustand bereitstellt. Es sollte verstanden werden, dass die gesamte Anzahl der Prozessorkerne 640a-k nicht auf 24 beschränkt ist und dass eine Architektur der Prozessorkerne 640a-k nicht auf eine 64-Bit-Architektur oder die Armv8.2 64-Bit-Architektur beschränkt ist.
  • Last Level Cache und Steuerung (LLC) 630 und externer DRAM 608 werden durch alle Prozessorkerne 640a-k und E/A-Co-Prozessor-Vorrichtungen geteilt (nicht gezeigt). Jeder Prozessorkern ist durch die CMI 644 mit der LLC 630 gekoppelt. Die CMI 644 ist ein Kommunikationskanal für alle Speicher- und E/A-Transaktionen zwischen den Prozessorkernen 640a-k, der E/A-Brücke 638 und der LLC 630. In einer Ausführungsform ist die CMI 644 auf mehrere (z.B. 24) Prozessorkerne 640a-k skalierbar und unterstützt vollständig kohärente Level-1-Daten-Caches 654 mit Write-Through. Die CMI 644 kann hoch gepuffert sein, mit der Fähigkeit, E/A zu priorisieren.
  • Die Steuerung des LLC 630 hält eine Speicherreferenzkohärenz aufrecht. Sie gibt für jede Füllanforderung die letzte Kopie eines Blocks zurück, unabhängig davon, ob der Block in LLC 630, in externem DRAM 608 oder „in-flight“ gespeichert ist. Eine Vielzahl von DRAM-Steuerungen 633 unterstützt den externen DRAM 608 und kann bevorzugte Protokolle unterstützen, wie beispielsweise das DDR4-Protokoll.
  • Nachdem ein Paket durch die Prozessorkerne 640a-k verarbeitet worden ist, liest die Schnittstelleneinheit 663 die Paketdaten von dem LLC 630, DRAM 608, führt eine L4-Netzwerkprotokoll-Nachverarbeitung durch (z.B. erzeugt sie eine TCP/UDP-Prüfsumme), leitet das Paket durch die Schnittstelleneinheit 663 weiter und gibt den LLC 630/DRAM 608 frei, der von dem Paket verwendet wird. Die DRAM-Steuerungen 633 verwalten Transaktionen während des Fluges (Laden/Speichern) zum/vom DRAM 608.
  • Eine Einheit zum Virtualisieren von Ressourcen (Resource Virtualization Unit, RVU) 662 kann es Software ermöglichen, verschiedene Ressourcen für lokale Funktionen (Local Function (LF) Resources) in verschiedenen Modulen in mehrere physikalische Funktionen (Physical Functions, PFs) und virtuelle Funktionen (Virtual Functions, VFs) abzubilden. Dies ermöglicht Multi-Unit-Software-Treiber, die mit Linux®, Windows® und dem Data Plane Development Kit (DPDK) kompatibel sind.
  • Ein Managementmodul 626 kann verschiedene Einheiten zum Verwalten eines Betriebs des Prozessors 650 für Netzdienste umfassen. Zum Beispiel kann das Managementmodul 626 einen Temperatursensor, eine Power-Serial-Bus-Master-Schnittstelle zum Bestimmung einer aktuellen Leistung und eines Energieverbrauchs sowie eine Speicher-Diagnose-Steuerung zum Erkennen und Melden von Speicherfehlern enthalten. Das Managementmodul 626 kann ferner Steuerprozessoren enthalten, wie beispielsweise einen Systemsteuerungsprozessor (nicht gezeigt) für ein Leistungsmanagement und andere Aufgaben für sicheres Chip-Management, sowie einen Modulsteuerungsprozessor (nicht gezeigt) für Modulmanagement und andere Aufgaben für nicht sicheres Chip-Management.
  • 6B ist ein Blockdiagramm einer beispielhaften Ausführungsform einer Schnittstelleneinheit 663 des Prozessors 650 für Netzwerkdienste von 6A, oben offenbart Das Sender-Empfänger-Modul 690 sendet und empfängt Signale in Übereinstimmung mit einem oder mehreren Kommunikationsprotokollen, wie beispielsweise PCIe, Ethernet. Schnittstellenmodule, einschließlich PCI-Express-Schnittstelleneinheiten (PEM0-PEM3) 685 und Ethernet-E/A-Steuerungen (CGXO-CGX2) 686 verarbeiten empfangene und ausgehende Signale in Übereinstimmung mit ihren jeweiligen Protokollen. Eine NCSI-Einheit (Network Controller Sideband Interface Unit, NCSI Unit) 676 stellt eine Schnittstelle und eine Protokoll-Steuerung für einen NCSI-Bus 677 bereit, der Netzwerkpaketdaten von/zu den Ethernet-E/A-Steuerungen (CGXO-CGX2) 686 bereitstellt.
  • Eine Netzwerkschnittstelleneinheit (Network Interface Unit, NIX) 671 stellt eine Steuerung (nicht gezeigt) und DMA-Engines (Direct Memory Access Engines, DMA-Engines) (nicht gezeigt) zum Verarbeiten und Bewegen von Netzwerkpaketen (nicht gezeigt) bereit. Die NIX 671 sendet und empfängt Pakete zu und von den vorgenannten Schnittstellenmodulen 685 und kommuniziert mit dem SSO-Modul 602, um Arbeit für die Prozessorkerne 640a-k zum weiteren Verarbeiten der Pakete zu planen. Die NIX 671 kann auch mit den Prozessorkernen 640a-k kommunizieren, um Arbeit anstelle des SSO-Moduls 602 weiterzuleiten, und kann Pakete von den Prozessorkernen 640a-k zur Übertragung empfangen. Die NIX 671 kann eine Subeinheit zum Senden (NIX-TX) (nicht gezeigt) und eine Subeinheit zum Empfangen (NIX-RX) (nicht gezeigt) enthalten, und ein Loopback-Modul (LBK) 672 ermöglicht es, von der NIX-TX gesendete Pakete zurückzuleiten und von der NIX-RX zu empfangen.
  • Die NIX 671 arbeitet mit einer Reihe von Co-Prozessoren. Insbesondere parst eine Netzwerk-Parser-CAM-Einheit (NPC) 673 Netzwerkpakete, die für die NIX 671 empfangen oder von dieser übertragen werden. Eine NPA (Network Pool Allocator Unit) 674 kann Zeiger für Pakete, Einträge in Arbeitswarteschlangen, zuweisen und freigeben, Deskriptorpuffer senden und eine Integration in ein Virtualisierungsschema unterstützen. Das SSO-Modul 602, wie oben beschrieben, plant Einträge in Arbeitswarteschlangen für NIX-Pakete. Eine die kryptographische Beschleunigungseinheit (Cryptographic Accelerator Unit, CPT) 678 entschlüsselt optional die von der NIX 671 empfangenen IPsec-Pakete (Internet Protocol Security Packets) und kann Daten für ausgehende Pakete verschlüsseln. Die Schnittstelleneinheit 663 beinhaltet eine PCI-Paket-DMA-Einheit 675, die DMA-Paketdaten zwischen der NIX 671, CGX0-CGX2, PEM0-PEM3 685 oder LBK 672 und dem LLC 630 oder DRAM 608 kann, oben mit Bezug zur 6A offenbart. Die Schnittstelleneinheit 663 beinhaltet ferner einen Daten-Cache (NDC0-NDC1) 679, der ein gemeinsamer Daten-Cache-Block zur Verwendung durch die NIX 671 und NPA 674 ist.
  • Wie oben offenbart, sendet und empfängt die NIX 671 Pakete zu und von den vorgenannten Schnittstellenmodulen 685 und kommuniziert mit dem SSO-Modul 602, um Arbeit für die Prozessorkerne 640a-k zur weiteren Verarbeitung der Pakete zu planen. Gemäß einer beispielhaften Ausführungsform kann das SSO-Modul 602 ein virtualisierter Planer sein, wie der virtualisierte Planer 102 von 1B, oben offenbart. Innerhalb des SSO-Moduls 602 kann ein Verfahren zum Einreihen von Arbeit auf einem Abrechnen innerhalb einer Einheit (In-Unit Accounting, IUA) von Einträgen innerhalb der Einheit (In-Unit Entries, IUEs) basieren, wie beispielsweise oben mit Bezug zur 2 offenbart.
  • Rückverweisend auf 2, das Verfahren kann ferner ein Zuordnen einer Vielzahl von Planungsgruppen zu der IUA-Kennung umfassen. Die Vielzahl von Planungsgruppen beinhaltet die gegebene Planungsgruppe.
  • Das Steuern kann ein Bestimmen beinhalten, ob der gegebene WQE bewegt werden soll, und, für einen Fall, dass bestimmt wird, dass der gegebene WQE bewegt werden soll, kann das Verfahren ferner umfassen (i) Zuweisen eines freien IUE der Vielzahl von IUEs, wobei der freie IUE als ein gegebener IUE zum Zulassen des gegebenen WQE in die Ressource verwendet werden soll, (ii) Bewegen des gegebenen WQE von einer gegebenen Pro-Gruppe-TAQ (Per-Group Transitory Admission Queue, Per-Group TAQ) zu dem gegebenen IUE, (iii) Hinzufügen des gegebenen IUE zu einer gegebenen Pro-Gruppe-IAQ (Per-Group In-Unit Admission Queue, Per-Group IAQ) für die gegebene Planungsgruppe oder Assoziieren des gegebenen IUE mit der gegebenen Planungsgruppe, um die gegebene Pro-Gruppe-IAQ für die Planungsgruppe zu erzeugen, und (iv) Aktualisieren der IUA-Zählung in der IUA-Ressource basierend auf der IUA-Kennung, wobei die gegebene Pro-Gruppe-TAQ eingereihte WQEs beinhaltet, die für die gegebene Planungsgruppe empfangen wurden.
  • Aktualisieren der IUA-Zählung kann Inkrementieren der IUA-Zählung beinhalten. Bewegen der gegebenen WQE, um den gegebenen IUE zu belegen, ermöglicht es dem gegebenen WQE, zum Planen verfügbar zu sein. Für einen Fall, dass der gegebene WQE geplant wird, kann das Verfahren ferner ein Zuordnen der gegebenen WQE zu einem gegebenen Arbeitsslot einer Vielzahl von Arbeitsslots umfassen.
  • Das Verfahren kann ferner umfassen, in Antwort auf eine Benachrichtigung, dass Arbeit, die mit dem gegebenen WQE assoziiert ist, abgeschlossen wurde, den gegebenen IUE zur Wiederverwendung freizugeben und die IUA-Zählung in der IUA-Ressource dazu zu veranlassen, dekrementiert zu werden.
  • Das Verfahren kann ferner ein Beziehen der globalen Zählung von der IUA-Ressource basierend auf der IUA-Kennung umfassen, wobei die globale Zählung eine gesamte Anzahl aller zugelassenen, konfliktbehafteten, geplanten und ausgeplanten WQEs ist, die mit der IUA-Kennung assoziiert sind und jeweilige IUEs der Vielzahl von IUEs belegen.
  • Das Steuern kann ein Implementieren eines IUA-Tests beinhalten. Das Implementieren kann ein Vergleichen der IUA-Zählung mit dem IUA-Schwellenwert beinhalten. Basierend auf einem positiven Ergebnis für den implementierten IUA-Test kann das Verfahren ferner ein Bewegen der gegebenen WQE von einer gegebenen transitorischen Pro-Gruppe-TAQ (Per-Group Transitory Admission Queue, Per-Group TAQ), die der gegebenen Planungsgruppe zugeordnet ist, und in die IUE-Ressource umfassen. Das positive Ergebnis kann auf einer Bestimmung basieren, dass die IUA-Zählung kleiner als der IUA-Schwellenwert ist, als eine Funktion des Vergleichens.
  • Das positive Ergebnis kann ferner auf einer Bestimmung basieren, dass eine Frei-Zählung größer als Null ist. Die Frei-Zählung kann eine gesamte Anzahl unbesetzter IUEs einer Vielzahl von verfügbaren IUEs der Vielzahl von IUEs sein. Die Vielzahl der verfügbaren IUEs kann einem Arbiter zur Verfügung stehen, um WQEs in die IUE-Ressource zum Einreihen zu bewegen.
  • Das Verfahren kann ferner ein Reservieren von zumindest einem IUE der Vielzahl von IUEs umfassen. Die Vielzahl von verfügbaren IUEs kann den zumindest einen reservierten IUE ausschließen.
  • Das positive Ergebnis kann ferner auf einer Bestimmung basieren, dass eine Gruppen-Zählung kleiner oder gleich einem Schwellenwert für eine Reserve einer Gruppe ist. Die Gruppen-Zählung kann eine gesamte Anzahl von IUEs der Vielzahl von IUEs sein, die durch jeweilige WQEs belegt sind, die zu der gegebenen Planungsgruppe gehören und nie vom virtualisierten Planer geplant worden sind. Der Schwellenwert für die Reserve der Gruppe kann eine gegebene Anzahl von reservierten IUEs der Vielzahl von IUEs sein, die für die gegebene Planungsgruppe zur Belegung durch WQEs reserviert sind, die zu der gegebenen Planungsgruppe gehören und die nie vom virtualisierten Planer geplant worden sind.
  • Das Verfahren kann ferner ein Inkrementieren der Gruppen-Zählung umfassen, für einen Fall, dass der gegebene WQE in die IUE-Ressource bewegt wird, und ein Dekrementieren der Gruppen-Zählung, für einen Fall, dass der gegebene WQE durch den virtualisierten Planer geplant und die Arbeit, die mit der gegebenen Planung assoziiert ist, abgeschlossen wird.
  • Das positive Ergebnis kann ferner auf einer Bestimmung basieren, dass a) die Frei-Zählung größer als eine Reserviert-Frei-Zählung ist, wobei die Reserviert-Frei-Zählung als Teil der Frei-Zählung gezählt wird, und b) eine Gruppen-Zählung kleiner als ein maximaler Schwellenwert für die Gruppe ist. Die Reserviert-Frei-Zählung kann eine gesamte Anzahl der nicht belegten, reservierten IUEs der Vielzahl von IUEs sein, die reserviert sind, um WQEs jeweiliger Planungsgruppen in die IUE-Ressource zu bewegen. Die Gruppen-Zählung kann eine gesamte Anzahl von IUEs der Vielzahl von IUEs sein, die durch jeweilige WQEs belegt sind, die zu der gegebenen Planungsgruppe gehören und nie vom virtualisierten Planer geplant worden sind. Der maximale Schwellenwert für die Gruppe kann eine maximale Anzahl von IUEs der Vielzahl von IUEs sein, die von WQEs belegt werden dürfen, die von der gegebenen Planungsgruppe stammen und nie vom virtualisierten Planer geplant worden sind.
  • Die IUE-Ressource kann eine gegebene Pro-Gruppe-IAQ für die gegebene Planungsgruppe und eine gegebene Pro-Gruppe-Konflikt-Warteschlange für die gegebene Planungsgruppe beinhalten. Die WQEs, die von der gegebenen Planungsgruppe stammen und nie geplant worden sind, können jeweilige IUEs belegen von: der gegebenen Pro-Gruppe-IAQ, der gegebenen Pro-Gruppe-Konflikt-Warteschlange oder einer Kombination davon.
  • Das positive Ergebnis kann ferner auf einer Bestimmung basieren, dass eine Gruppen-Zählung kleiner oder gleich einem Schwellenwert für eine Reserve einer Gruppe ist oder dass a) die Frei-Zählung größer als eine Reserviert-Frei-Zählung ist, wobei die Reserviert-Frei-Zählung als Teil der Frei-Zählung gezählt wird, und b) eine Gruppen-Zählung kleiner als ein maximaler Schwellenwert für die Gruppe ist.
  • Für den Fall, dass die IUA-Zählung größer oder gleich dem IUA-Schwellenwert ist, kann das Verfahren ferner umfassen den gegebenen WQE von der Berücksichtigung für die Bewegung in die IUE-Ressource auszuschließen.
  • Die IUA-Ressource kann zumindest eine Nachschlagetabelle beinhalten. Das Beziehen kann ein Beziehen von einer gegebenen Nachschlagetabelle der zumindest einen Nachschlagetabelle beinhalten, wobei die gegebene Nachschlagetabelle eine Vielzahl von jeweiligen IUA-Zählungs- und IUA-Schwellenwert-Paarungen speichert, die jede mit einer jeweiligen IUA-Kennung assoziiert ist.
  • Darüber hinaus können die Elemente der hierin beschriebenen Block- und Flussdiagramme in beliebiger Weise in Software, Hardware oder Firmware kombiniert oder aufgeteilt werden. Falls in Software implementiert, kann die Software in jeder Sprache geschrieben sein, die die hierin offenbarten beispielhaften Ausführungsformen unterstützen kann. Die Software kann in jeder Form von computerlesbarem Medium gespeichert werden, wie beispielsweise Speicher mit wahlfreiem Zugriff (Random-Access Memory, RAM), Nur-Lese-Speicher (Read Only Memory, ROM), Compact-Disk-Nur-Lese-Speicher (Compact Disk Read-Only Memory, CD-ROM) und so weiter. Im Betrieb lädt und führt ein allgemeiner oder anwendungsspezifischer Prozessor oder Prozessorkern Software auf eine Weise aus, wie sie in der Fachwelt gut verstanden wird. Es sollte weiter verstanden werden, dass die Block- und Flussdiagramme mehr oder weniger Elemente enthalten, anders angeordnet oder orientiert sein oder anders dargestellt werden können. Es sollte verstanden werden, dass eine Implementierung die Block-, Fluss- und/oder Netzwerkdiagramme sowie die Anzahl der Block- und Flussdiagramme, welche die Ausführung der hierin offenbarten Ausführungsformen veranschaulichen, diktieren kann.
  • Während beispielhafte Ausführungsformen besonders gezeigt und beschrieben worden sind, wird es von einem Fachmann verstanden werden, dass darin verschiedene Änderungen an einer Form und an Einzelheiten vorgenommen werden können, ohne vom Umfang der Ausführungsformen abzuweichen, die von den beigefügten Ansprüchen abgedeckt sind.

Claims (48)

  1. Ein System zum Einreihen von Arbeit innerhalb eines virtualisierten Planers basierend auf einem Abrechnen innerhalb einer Einheit (In-Unit Accounting, IUA) von Einträgen innerhalb der Einheit (In-Unit Entries, IUEs), wobei das System umfasst: eine IUA-Ressource, die konfiguriert ist, um, in Verbindung mit einer IUA-Kennung, eine IUA-Zählung und einen IUA-Schwellenwert zu speichern, wobei die IUA-Zählung eine globale Zählung von Einträgen in eine Arbeitswarteschlange (Work-Queue Entries, WQEs) darstellt, die mit der IUA-Kennung assoziiert sind und jeweilige IUEs einer IUE-Ressource (In-Unit Entry Resource, IUE, Resource) belegen, wobei der IUA-Schwellenwert eingestellt ist, um die globale Zählung zu begrenzen; und einen Arbiter, der konfiguriert ist, um die IUA-Zählung und den IUA-Schwellenwert von der IUA-Ressource zu beziehen, basierend auf der IUA-Kennung, und um zu steuern, als eine Funktion der bezogenen IUA-Zählung und des bezogenen IUA-Schwellenwerts, ob ein gegebener Eintrag in der Arbeitswarteschlange (Work-Queue Entry, WQE) von einer gegebenen Planungsgruppe, die der IUA-Kennung zugeordnet ist, in die IUE-Ressource bewegt wird, um durch den virtualisierten Planer zum Planen eingereiht zu werden.
  2. System nach Anspruch 1, wobei eine Vielzahl von Planungsgruppen einer IUA-Kennung zugeordnet ist, und wobei die Vielzahl von Planungsgruppen die gegebene Planungsgruppe beinhaltet.
  3. System nach Anspruch 1, wobei die IUA-Kennung einer virtuellen Maschine, einer Anwendung oder einer physikalischen Funktion (Physical Function, PF) oder virtuellen Funktion (Virtual Function VF) entspricht, die mit einer SR-IOV-Schnittstelle (Single Root I/O Virtualization Interface) assoziiert sind.
  4. System nach Anspruch 1, wobei der virtualisierte Planer einen Arbeitsplaner beinhaltet, der konfiguriert ist, um auf die IUE-Ressource zuzugreifen, wobei der Arbiter ferner konfiguriert ist, um den gegebenen WQE von einer gegebenen Pro-Gruppe-TAQ (Per-Group Transitory Admission Queue, Per Group TAQ) in eine gegebene Pro-Gruppe-IAQ (Per-Group In-Unit Admission Queue, Per-Group-IAQ) in der IUE-Ressource zu bewegen, um durch den Arbeitsplaner zum Planen eingereiht zu werden, und wobei die gegebene Pro-Gruppe-TAQ und die gegebene Pro-Gruppe-IAQ der gegebenen Planungsgruppe zugeordnet sind.
  5. System nach Anspruch 1, das ferner eine TAQ-Ressource (Transitory Admission Queue Resource, TAQ Resource) umfasst, wobei die TAQ-Ressource eine gegebene Pro-Gruppe-TAQ beinhaltet, die konfiguriert ist, um WQEs, die für die gegebene Planungsgruppe empfangen wurden, einzureihen, und wobei die IUE-Ressource eine Vielzahl von IUEs beinhaltet; und in einem Fall, dass der Arbiter bestimmt, dass der gegebene WQE in die IUE-Ressource bewegt werden soll, der Arbiter ferner konfiguriert ist zum: Zuweisen eines freien IUE der Vielzahl von IUEs, der als ein gegebener IUE für ein Bewegen der gegebenen WQE in die IUE-Ressource verwendet werden soll; Bewegen des gegebenen WQE von der gegebenen Pro-Gruppe-TAQ zu dem gegebenen IUE; Hinzufügen des gegebenen IUE zu einer Pro-Gruppe-IAQ (Per-Group In-Unit Admission Queue, Per-Group IAQ) für die gegebene Planungsgruppe oder Assoziieren des gegebenen IUE mit der gegebenen Planungsgruppe, um die gegebene Pro-Gruppe-IAQ für die gegebene Planungsgruppe zu erzeugen; und Veranlassen, dass die IUA-Zählung in der IUA-Ressource aktualisiert wird.
  6. System nach Anspruch 5, wobei, um zu veranlassen, dass die IUA-Zählung aktualisiert wird, der Arbiter ferner konfiguriert ist, zu veranlassen, dass die IUA-Zählung inkrementiert wird.
  7. System nach Anspruch 5, wobei: Bewegen der gegebenen WQE, um den gegebenen IUE zu belegen, es dem gegebenen WQE ermöglicht für eine Planung durch einen Arbeitsplaner des virtualisierten Planers verfügbar zu sein; und für den Fall, dass der Arbeitsplaner bestimmt, dass der gegebene WQE geplant werden soll, der Arbeitsplaner konfiguriert ist, um den gegebenen WQE einem gegebenen Arbeitsslot einer Vielzahl von Arbeitsslots zuzuordnen.
  8. System nach Anspruch 7, wobei: für den Fall, dass der gegebene WQE dem gegebenen Arbeitsslot zugeordnet wird und Arbeit, die mit dem gegebenen WQE assoziiert ist, abgeschlossen wird, der Arbeitsplaner ferner konfiguriert ist, um den gegebenen IUE zur Wiederverwendung freizugeben, und entweder der Arbeitsplaner oder der Arbiter ferner konfiguriert ist, um zu veranlassen, dass die IUA-Zählung in der IUA-Ressource dekrementiert wird.
  9. System nach Anspruch 1, wobei der IUA-Schwellenwert ein maximaler Wert für die IUA-Zählung ist und eine maximale Anzahl von IUEs in der IUE-Ressource darstellt, die durch die jeweiligen WQEs aus allen Planungsgruppen, die der IUA-Kennung zugeordnet sind, belegt werden dürfen.
  10. System nach Anspruch 1, wobei die IUE-Ressource eine Vielzahl von IUEs umfasst und wobei die globale Zählung der WQEs eine gesamte Anzahl aller zugelassenen, fehlerbehafteten, geplanten und ausgeplanten WQEs ist, die mit der IUA-Kennung assoziiert sind und jeweilige IUEs der Vielzahl von IUEs belegen.
  11. System nach Anspruch 1, wobei, um zu steuern, ob der gegebene WQE bewegt wird, der Arbiter ferner konfiguriert ist, um einen IUA-Test zu implementieren und, basierend auf einem positiven Ergebnis für den implementierten IUA-Test, um den gegebenen WQE von einer gegebenen Pro-Gruppe-TAQ (Per-Group Transitory Admission Queue, Per-Group TAQ), die der gegebenen Planungsgruppe zugeordnet ist, und in die IUE-Ressource zu bewegen, wobei das positive Ergebnis auf einer Bestimmung basiert, dass die IUA-Zählung kleiner als der IUA-Schwellenwert ist.
  12. System nach Anspruch 11, wobei das positive Ergebnis ferner auf einer Bestimmung basiert, dass eine Frei-Zählung größer als Null ist, und wobei die Frei-Zählung eine gesamte Anzahl von unbesetzten IUEs einer Vielzahl von verfügbaren IUEs einer Vielzahl von IUEs der IUE-Ressource ist, wobei die Vielzahl von verfügbaren IUEs dem Arbiter zur Verfügung steht, um WQEs in die IUE-Ressource zum Planen zu bewegen.
  13. System nach Anspruch 12, wobei zumindest ein IUE der Vielzahl von IUEs reserviert ist und wobei die Vielzahl verfügbarer IUEs den zumindest einen reservierten IUE ausschließen.
  14. System nach Anspruch 12, wobei das positive Ergebnis ferner auf einer Bestimmung basiert, dass eine Gruppen-Zählung kleiner oder gleich einem Schwellenwert für eine Reserve einer Gruppe ist und wobei: die Gruppen-Zählung eine gesamte Anzahl von IUEs der Vielzahl von IUEs ist, die durch jeweilige WQEs belegt sind, die zu der gegebenen Planungsgruppe gehören und nie durch einen Arbeitsplaner des virtualisierten Planers geplant worden sind; und der Schwellenwert für die Reserve der Gruppe eine gegebene Anzahl von reservierten IUEs der Vielzahl von IUEs ist, die für die gegebene Planungsgruppe zur Belegung durch WQEs reserviert sind, die zu der gegebenen Planungsgruppe gehören und nie durch den Arbeitsplaner geplant worden sind.
  15. System nach Anspruch 14, wobei: ein erster Teil von IUEs der Vielzahl von IUEs angeordnet ist, um eine gegebene Pro-Gruppe-IAQ (Per-Group In-Unit Admission Queue, Per-Group IAQ) in der IUE-Ressource für die gegebene Planungsgruppe zu bilden, wobei die gegebene Pro-Gruppe-IAQ durch den Arbiter erstellt wird, durch Zuweisen von freien IUEs der Vielzahl von IUEs und Verschieben von WQEs, die zu der gegebenen Planungsgruppe gehören, in die zugewiesenen freien IUEs; ein zweiter Teil der IUEs der Vielzahl von IUEs angeordnet ist, um eine gegebene Pro-Gruppe-Konflikt-Warteschlange in der IUE-Ressource für die gegebene Planungsgruppe zu bilden, wobei der zweite Teil der IUEs von jeweiligen WQEs belegt ist, die vom Arbeitsplaner von der gegebenen Pro-Gruppe-IAQ in die gegebene Pro-Gruppen-Konflikt-Warteschlange verschoben worden sind, in Antwort auf jeweilige Versuche, die jeweiligen WQEs zu planen, wobei die jeweiligen Versuche aufgrund von jeweiligen Planungskonflikten fehlgeschlagen sind; und WQEs, die jeweilige IUEs der gegebenen Pro-Gruppe-IAQ und der gegebenen Pro-Gruppen-Konflikt-Warteschlange belegen, die jeweiligen WQEs repräsentieren , die zu der gegebenen Planungsgruppe gehören und nie durch den Arbeitsplaner geplant worden sind.
  16. System nach Anspruch 15, wobei der der Arbiter ferner konfiguriert ist zum Inkrementieren der Gruppen-Zählung für einen Fall, dass der gegebene WQE in die IUE-Ressource bewegt wird, und wobei, für einen Fall, dass der gegebene WQE durch den Arbeitsplaner geplant und Arbeit, die mit dem gegebenen WQE assoziiert ist, abgeschlossen wird, entweder der Arbiter oder der Arbeitsplaner konfiguriert ist zum Dekrementieren der Gruppen-Zählung.
  17. System nach Anspruch 12, wobei das positive Ergebnis ferner auf einer Bestimmung basiert, dass a) die Frei-Zählung größer als eine Reserviert-Frei-Zählung ist, wobei die Reserviert-Frei-Zählung als Teil der Frei-Zählung gezählt wird, und b) eine Gruppen-Zählung kleiner als ein maximaler Schwellenwert für die Gruppe ist.
  18. System nach Anspruch 17, wobei: die Reserviert-Frei-Zählung eine gesamte Anzahl von nicht belegten, reservierten IUEs der reservierten IUEs der Vielzahl von IUEs ist, die reserviert sind, um WQEs jeweiliger Planungsgruppen in die IUE-Ressource zu bewegen; die Gruppen-Zählung eine gesamte Anzahl von IUEs der Vielzahl von IUEs ist, die durch jeweilige WQEs belegt sind, die zu der gegebenen Planungsgruppe gehören und nie durch den Arbeitsplaner geplant worden sind; und der maximale Schwellenwert für die Gruppe eine maximale Anzahl von IUEs der Vielzahl von IUEs ist, die von WQEs belegt werden dürfen, die von der gegebenen Planungsgruppe stammen und nie durch den Arbeitsplaner geplant worden sind.
  19. System nach Anspruch 18, wobei: die IUE-Ressource eine gegebene Pro-Gruppe-IAQ für die gegebene Planungsgruppe und eine gegebene Pro-Gruppe-Konflikt-Warteschlange für die gegebene Planungsgruppe beinhaltet; und die WQEs, die von der gegebenen Planungsgruppe stammen und nie geplant worden sind, jeweilige IUEs belegen von: der gegebenen Pro-Gruppe-IAQ, der gegebenen Pro-Gruppe-Konflikt-Warteschlange oder einer Kombination davon.
  20. System nach Anspruch 17, wobei das positive Ergebnis ferner auf einer Bestimmung basiert, dass eine Gruppen-Zählung kleiner oder gleich einem Schwellenwert für eine Reserve einer Gruppe ist oder dass a) die Frei-Zählung größer als eine Reserviert-Frei-Zählung ist, wobei die Reserviert-Frei-Zählung als Teil der Frei-Zählung gezählt wird, und b) eine Gruppen-Zählung kleiner als ein maximaler Schwellenwert für die Gruppe ist.
  21. System nach Anspruch 1, wobei, für den Fall, dass die IUA-Zählung größer oder gleich dem IUA-Schwellenwert ist, der Arbiter ferner konfiguriert ist, um den gegebenen WQE von der Berücksichtigung für eine Bewegung in die IUE-Ressource auszuschließen.
  22. System nach Anspruch 1, wobei die IUA-Ressource eine Nachschlagetabelle beinhaltet, die konfiguriert ist, um eine Vielzahl von jeweiligen IUA-Zählungs- und IUA-Schwellenwert-Paarungen zu speichern, die jede mit einer jeweiligen IUA-Kennung assoziiert ist.
  23. System nach Anspruch 1, wobei der gegebene WQE beinhaltet: einen Identifizierungszeiger; einen Tag-Wert, wobei der Tag-Wert den gegebenen WQE mit einem eindeutigen Arbeitsablauf assoziiert; einen Tag-Typ, wobei der Tag-Typ spezifiziert, ob der eindeutige Arbeitsablauf geordnet, atomar oder ungeordnet ist; und eine Gruppenkennung, wobei die Gruppenkennung der gegebenen Planungsgruppe entspricht.
  24. Ein Verfahren zum Einreihen von Arbeit innerhalb eines virtualisierten Planers basierend auf einem Abrechnen innerhalb einer Einheit (In-Unit Accounting, IUA) von Einträgen innerhalb der Einheit (In-Unit Entries, IUEs), wobei das Verfahren umfasst: Beziehen einer IUA-Zählung und eines IUA-Schwellenwerts von einer IUA-Ressource basierend auf einer IUA-Kennung, wobei die IUA-Zählung eine globale Zählung von Einträgen in eine Arbeitswarteschlange (Work-Queue Entries, WQEs) darstellt, die mit der IUA-Kennung assoziiert sind und jeweilige IUEs einer Vielzahl von IUEs einer IUE-Ressource (In-Unit Entry Resource, IUE Resource) belegen, wobei der IUA-Schwellenwert eingestellt ist, um die globale Zählung zu begrenzen; und Steuern, als eine Funktion der IUA-Zählung und des IUA-Schwellenwerts, die von der IUA-Ressource basierend auf der IUA-Kennung bezogen wurden, ob ein gegebener Eintrag in der Arbeitswarteschlange (Work Queue Entry, WQE) von einer gegebenen Planungsgruppe, die der IUA-Kennung zugeordnet ist, in die IUE-Ressource bewegt wird, um durch den virtualisierten Planer zum Planen eingereiht zu werden.
  25. Verfahren nach Anspruch 24, ferner umfassend Zuordnen einer Vielzahl von Planungsgruppen zu der IUA-Kennung, wobei die Vielzahl von Planungsgruppen die gegebene Planungsgruppe beinhaltet.
  26. Verfahren nach Anspruch 24, wobei die IUA-Kennung einer virtuellen Maschine, einer Anwendung oder einer physikalischen Funktion (Physical Function, PF) oder virtuellen Funktion (Virtual Function, VF) entspricht, die mit einer SR-IOV-Schnittstelle (Single Root I/O Virtualization Interface) assoziiert sind.
  27. Verfahren nach Anspruch 24, wobei das Steuern ein Bestimmen beinhaltet, ob der gegebene WQE bewegt werden soll, und für einen Fall, dass bestimmt wird, dass der gegebene WQE bewegt werden soll, das Verfahren ferner umfasst: Zuweisen eines freien IUE der Vielzahl von IUEs, wobei der freie IUE als ein gegebener IUE zum Zulassen des gegebenen WQE in die Ressource verwendet werden soll; Bewegen des gegebenen WQE von einer gegebenen Pro-Gruppe-TAQ (Per-Group Transitory Admission Queue, Per-Group TAQ) zu dem gegebenen IUE; Hinzufügen des gegebenen IUE zu einer Pro-Gruppe-IAQ (Per-Group In-Unit Admission Queue, Per-Group IAQ) für die gegebene Planungsgruppe oder Assoziieren des gegebenen IUE mit der gegebenen Planungsgruppe, um die gegebene Pro-Gruppe-IAQ für die Planungsgruppe zu erzeugen; und Aktualisieren der IUA-Zählung in der IUA-Ressource basierend auf der IUA-Kennung, wobei die gegebene Pro-Gruppe-TAQ eingereihte WQEs beinhaltet, die für die gegebene Planungsgruppe empfangen wurden.
  28. Verfahren nach Anspruch 27, wobei das Aktualisieren der IUA-Zählung ein Inkrementieren der IUA-Zählung beinhaltet.
  29. Verfahren nach Anspruch 27, wobei das Bewegen der gegebenen WQE, um den gegebenen IUE zu belegen, es dem gegebenen WQE ermöglicht zum Planen verfügbar zu sein, wobei, für einen Fall, dass der gegebene WQE geplant wird, das Verfahren ferner umfasst: Zuordnen des gegebenen WQE zu einem gegebenen Arbeitsslot einer Vielzahl von Arbeitsslots.
  30. Verfahren nach Anspruch 29, wobei das Verfahren ferner umfasst: in Antwort auf eine Benachrichtigung, dass Arbeit, die mit dem gegebenen WQE assoziiert ist, abgeschlossen worden ist, Freigeben des gegebenen IUE zur Wiederverwendung; und Veranlassen, dass die IUA-Zählung in der IUA-Ressource dekrementiert wird.
  31. Verfahren nach Anspruch 27, wobei der IUA-Schwellenwert ein maximaler Wert für die IUA-Zählung ist und eine maximale Anzahl von IUEs in der IUE-Ressource darstellt, die durch jeweilige WQEs von allen Planungsgruppen, die der IUA-Kennung zugeordnet sind, belegt werden dürfen.
  32. Verfahren nach Anspruch 27, wobei das Verfahren ferner umfasst: Beziehen der globalen Zählung von der IUA-Ressource basierend auf der IUA-Kennung, wobei die globale Zählung eine gesamte Anzahl aller zugelassenen, konfliktbehafteten, geplanten und ausgeplanten WQEs ist, die mit der IUA-Kennung assoziiert sind und jeweilige IUEs der Vielzahl von IUEs belegen.
  33. Verfahren nach Anspruch 27, wobei das Steuern beinhaltet: Implementieren eines IUA-Tests, wobei das Implementieren ein Vergleich der IUA-Zählung mit dem IUA-Schwellenwert beinhaltet; und Basierend auf einem positiven Ergebnis für den implementierten IUA-Test, Bewegen des gegebenen WQE von einer gegebenen Pro-Gruppe-TAQ (Per-Group Transitory Admission Queue, Per-Group TAQ), die der gegebenen Planungsgruppe zugeordnet ist, und in die IUE-Ressource, wobei das positive Ergebnis auf einer Bestimmung basiert, dass die IUA-Zählung kleiner als der IUA-Schwellenwert ist, als eine Funktion des Vergleichens.
  34. Verfahren nach Anspruch 33, wobei das positive Ergebnis ferner auf einer Bestimmung basiert, dass eine Frei-Zählung größer als Null ist, und wobei die Frei-Zählung eine gesamte Anzahl von unbesetzten IUEs einer Vielzahl von verfügbaren IUEs der Vielzahl von IUEs ist, wobei die Vielzahl von verfügbaren IUEs einem Arbiter zur Verfügung steht, um WQEs in die IUE-Ressource zum Planen zu bewegen.
  35. Verfahren nach Anspruch 34, ferner umfassend ein Reservieren von zumindest einem IUE der Vielzahl von IUEs, und wobei die Vielzahl verfügbarer IUEs den zumindest einen reservierten IUE ausschließt.
  36. Verfahren nach Anspruch 33, wobei das positive Ergebnis ferner auf einer Bestimmung basiert, dass eine Gruppen-Zählung kleiner oder gleich einem Schwellenwert für eine Reserve einer Gruppe ist und wobei: die Gruppen-Zählung eine gesamte Anzahl von IUEs der Vielzahl von IUEs ist, die durch jeweilige WQEs belegt sind, die zu der gegebenen Planungsgruppe gehören und nie durch einen Arbeitsplaner des virtualisierten Planers geplant worden sind; und der Schwellenwert für die Reserve der Gruppe eine gegebene Anzahl von reservierten IUEs der Vielzahl von IUEs ist, die für die gegebene Planungsgruppe zur Belegung durch WQEs reserviert sind, die zu der gegebenen Planungsgruppe gehören und nie durch den Arbeitsplaner geplant worden sind.
  37. Verfahren nach Anspruch 36, wobei: ein erster Teil von IUEs der Vielzahl von IUEs angeordnet ist, um eine Pro-Gruppe-IAQ (Per-Group In-Unit Admission Queue, Per-Group IAQ) in der IUE-Ressource für die gegebene Planungsgruppe zu bilden, wobei die gegebene Pro-Gruppe-IAQ durch einen Arbiter erstellt wird, durch Zuweisung freier IUEs der Vielzahl von IUEs und Verschieben von WQEs, die zu der gegebenen Planungsgruppe gehören, in die zugewiesenen freien IUEs; ein zweiter Teil der IUEs der Vielzahl von IUEs angeordnet ist, um eine gegebene Pro-Gruppe-Konflikt-Warteschlange in der IUE-Ressource für die gegebene Planungsgruppe zu bilden, wobei der zweite Teil der IUEs durch jeweilige WQEs belegt ist, die vom Arbeitsplaner von der gegebenen Pro-Gruppe-IAQ in die gegebene Pro-Gruppen-Konflikt-Warteschlange verschoben worden sind, in Antwort auf jeweilige Versuche, die jeweiligen WQEs zu planen, wobei die jeweiligen Versuche aufgrund von jeweiligen Planungskonflikten fehlgeschlagen sind; und WQEs, die jeweilige IUEs der gegebenen Pro-Gruppe-IAQ und der gegebenen Pro-Gruppen-Konflikt-Warteschlange belegen, die jeweiligen WQEs repräsentieren, die zu der gegebenen Planungsgruppe gehören und nie durch den Arbeitsplaner geplant worden sind.
  38. Verfahren nach Anspruch 37, das ferner umfasst: Inkrementieren der Gruppen-Zählung in einem Fall, dass der gegebene WQE in die IUE-Ressource bewegt wird; und Dekrementieren der Gruppen-Zählung in einem Fall, dass der gegebene WQE durch den Arbeitsplaner geplant und Arbeit, die mit dem gegebenen WQE assoziiert ist, abgeschlossen wird.
  39. Verfahren nach Anspruch 34, wobei das positive Ergebnis ferner auf einer Bestimmung basiert, dass a) die Frei-Zählung größer als eine Reserviert-Frei-Zählung ist, wobei die Reserviert-Frei-Zählung als Teil der Frei-Zählung gezählt wird, und b) eine Gruppen-Zählung kleiner als ein maximaler Schwellenwert für die Gruppe ist.
  40. Verfahren nach Anspruch 39, wobei: die Reserviert-Frei-Zählung eine gesamte Anzahl von nicht belegten, reservierten IUEs von den reservierten IUEs der Vielzahl von IUEs ist, die reserviert sind, um WQEs jeweiliger Planungsgruppen in die IUE-Ressource zu bewegen; die Gruppen-Zählung eine gesamte Anzahl von IUEs der Vielzahl von IUEs ist, die durch jeweilige WQEs belegt sind, die zu der gegebenen Planungsgruppe gehören und nie durch einen Arbeitsplaner des virtualisierten Planers geplant worden sind; und der maximale Schwellenwert für die Gruppe eine maximale Anzahl von IUEs der Vielzahl von IUEs ist, die durch WQEs belegt werden dürfen, die von der gegebenen Planungsgruppe stammen und nie durch den Arbeitsplaner geplant worden sind.
  41. Verfahren nach Anspruch 40, wobei die IUE-Ressource eine gegebene Pro-Gruppe-IAQ für die gegebene Planungsgruppe und eine gegebene Pro-Gruppe-Konflikt-Warteschlange für die gegebene Planungsgruppe beinhaltet und wobei die WQEs, die von der gegebenen Planungsgruppe stammen und nie geplant worden sind, jeweilige IUEs belegen von: der gegebenen Pro-Gruppe-IAQ, der gegebenen Pro-Gruppe-Konflikt-Warteschlange oder einer Kombination davon.
  42. Verfahren nach Anspruch 41, wobei das positive Ergebnis ferner auf einer Bestimmung basiert, dass eine Gruppen-Zählung kleiner oder gleich einem Schwellenwert für eine Reserve einer Gruppe ist oder dass a) die Frei-Zählung größer als eine Reserviert-Frei-Zählung ist, wobei die Reserviert-Frei-Zählung als Teil der Frei-Zählung gezählt wird, und b) eine Gruppen-Zählung kleiner als ein maximaler Schwellenwert für die Gruppe ist.
  43. Verfahren nach Anspruch 24, wobei, für einen Fall, dass die IUA-Zählung größer oder gleich dem IUA-Schwellenwert ist, das Verfahren ferner umfasst den gegebenen WQE von einer Berücksichtigung für eine Bewegung in die IUE-Ressource auszuschließen.
  44. Verfahren nach Anspruch 24, wobei die IUA-Ressource zumindest eine Nachschlagetabelle beinhaltet und wobei das Beziehen beinhaltet: Beziehen von einer gegebenen Nachschlagetabelle der zumindest einen Nachschlagetabelle, wobei die gegebene Nachschlagetabelle eine Vielzahl von jeweiligen IUA-Zählungs- und IUA-Schwellenwert-Paarungen speichert, die jede mit einer jeweiligen IUA-Kennung assoziiert ist.
  45. Verfahren nach Anspruch 24, wobei der gegebene WQE beinhaltet: einen Identifizierungszeiger; einen Tag-Wert, wobei der Tag-Wert den gegebenen WQE mit einem eindeutigen Arbeitsablauf assoziiert; einen Tag-Typ, wobei der Tag-Typ spezifiziert, ob der eindeutige Arbeitsablauf geordnet, atomar oder ungeordnet ist; und eine Gruppenkennung, wobei die Gruppenkennung der gegebenen Planungsgruppe entspricht.
  46. Ein virtualisierter Planer, der umfasst: Eine IUA-Ressource (In-Unit-Accounting-Ressource), die konfiguriert ist, um, in Verbindung mit einer IUA-Kennung, eine IUA-Zählung und einen IUA-Schwellenwert zu speichern, wobei die IUA-Zählung eine globale Zählung von Einträgen in eine Arbeitswarteschlange (Work-Queue Entries, WQEs) darstellt, die mit der IUA-Kennung assoziiert sind und jeweilige Einträge innerhalb einer Einheit (In-unit Entries, IUEs) einer IUE-Ressource (In-Unit Entry Resource, IUE Resource) belegen, wobei der IUA-Schwellenwert eingestellt ist, um die globale Zählung zu begrenzen; einen Arbeitsplaner, der konfiguriert ist, um WQEs, die jeweilige IUEs in der IUE-Ressource belegen, in jeweilige Arbeitslots zu planen, zur Verarbeitung durch jeweilige Einheiten zum Verarbeiten von Arbeit, die den jeweiligen Arbeitslots zugeordnet sind; und einen Arbiter der konfiguriert ist, um die IUA-Zählung und den IUA-Schwellenwert von der IUA-Ressource zu beziehen, basierend auf der IUA-Kennung, und um zu steuern, als eine Funktion der bezogenen IUA-Zählung und des bezogenen IUA-Schwellenwerts, ob ein gegebener Eintrag in der Arbeitswarteschlange (Work-Queue Entry, WQE) von einer gegebenen Planungsgruppe, die der IUA-Kennung zugeordnet ist, in die IUE-Ressource bewegt wird, um durch den Arbeitsplaner zum Planen eingereiht zu werden.
  47. Ein Prozessor für Netzwerkdienste, der umfasst: eine Vielzahl von Prozessorkernen; und einen virtualisierten Planer, der beinhaltet: eine IUA-Ressource (In-Unit-Accounting-Ressource), wobei die IUA-Ressource konfiguriert ist, um, in Verbindung mit einer IUA-Kennung, eine IUA-Zählung und einen IUA-Schwellenwert zu speichern, wobei die IUA-Zählung eine globale Zählung von Einträgen in eine Arbeitswarteschlange (Work-Queue Entries, WQEs) darstellt, die mit der IUA-Kennung assoziiert sind und jeweilige IUEs einer IUE-Ressource (In-Unit Entry Resource, IUE Resource) belegen, wobei der IUA-Schwellenwert eingestellt ist, um die globale Zählung zu begrenzen; und einen Arbiter, der konfiguriert ist, um die IUA-Zählung und den IUA-Schwellenwert von der IUA-Ressource zu beziehen, basierend auf der IUA-Kennung, und um zu steuern, als eine Funktion der bezogenen IUA-Zählung und des bezogenen IUA-Schwellenwerts, ob ein gegebener Eintrag in der Arbeitswarteschlange (Work-Queue Entry, WQE) von einer gegebenen Planungsgruppe, die der IUA-Kennung zugeordnet ist, in die IUE-Ressource bewegt wird, um durch den virtualisierten Planer zum Planen eingereiht zu werden, zum Verarbeiten durch einen gegebenen Prozessorkern der Vielzahl von Prozessorkernen oder eines gegebenen Threads, der auf dem gegebenen Prozessorkern ausgeführt wird.
  48. Eine Schnittstelleneinheit, wobei die Schnittstelleneinheit umfasst: eine Netzwerkschnittstelle; und ein Generator zum Erzeugen eines Eintrags in eine Arbeitswarteschlange (Work-Queue Entry, WQE, Generator), der konfiguriert ist, um einen gegebenen WQE zu erzeugen, der mit Paketdaten assoziiert ist, die durch die Netzwerkschnittstelle empfangen werden, wobei der gegebene WQE zu einer gegebenen Planungsgruppe gehört, wobei die gegebene Planungsgruppe einer IUA-Kennung (In-Unit-Accounting Identifier, IUA Identifier) zugeordnet ist, wobei die IUA-Kennung mit einer IUA-Zählung und einem IUA-Schwellenwert assoziiert ist, wobei die Schnittstelleneinheit kommunikativ mit einem virtualisierten Planer gekoppelt ist, wobei der zumindest eine WQE-Generator ferner konfiguriert ist, um den gegebenen WQE an den virtualisierten Planer zu übertragen, um zum Planen eingereiht zu werden, basierend auf der IUA-Zählung und dem IUA-Schwellenwert.
DE102020210335.6A 2019-08-28 2020-08-14 System und Verfahren zum Einreihen von Arbeit innerhalb eines virtualisierten Planers basierend auf einem Abrechnen innerhalb einer Einheit von Einträgen innerhalb der Einheit Pending DE102020210335A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/553,688 2019-08-28
US16/553,688 US11294715B2 (en) 2019-08-28 2019-08-28 System and method for queuing work within a virtualized scheduler based on in-unit accounting of in-unit entries

Publications (2)

Publication Number Publication Date
DE102020210335A1 true DE102020210335A1 (de) 2021-03-04
DE102020210335A8 DE102020210335A8 (de) 2021-10-07

Family

ID=74565515

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020210335.6A Pending DE102020210335A1 (de) 2019-08-28 2020-08-14 System und Verfahren zum Einreihen von Arbeit innerhalb eines virtualisierten Planers basierend auf einem Abrechnen innerhalb einer Einheit von Einträgen innerhalb der Einheit

Country Status (2)

Country Link
US (3) US11294715B2 (de)
DE (1) DE102020210335A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11294715B2 (en) 2019-08-28 2022-04-05 Marvell Asia Pte, Ltd. System and method for queuing work within a virtualized scheduler based on in-unit accounting of in-unit entries
US11409553B1 (en) 2019-09-26 2022-08-09 Marvell Asia Pte, Ltd. System and method for isolating work within a virtualized scheduler using tag-spaces

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6401147B1 (en) * 1999-05-24 2002-06-04 Advanced Micro Devices, Inc. Split-queue architecture with a first queue area and a second queue area and queue overflow area having a trickle mode and an overflow mode based on prescribed threshold values
US6748593B1 (en) * 2000-02-17 2004-06-08 International Business Machines Corporation Apparatus and method for starvation load balancing using a global run queue in a multiple run queue system
US7110359B1 (en) * 2001-03-05 2006-09-19 Advanced Micro Devices, Inc. System and method for dynamically updating weights of weighted round robin in output queues
US20060156284A1 (en) 2002-10-07 2006-07-13 Edss., Inc. Architecture of Ticc-Ppde, a new paradigm for parallel programming
US7299468B2 (en) * 2003-04-29 2007-11-20 International Business Machines Corporation Management of virtual machines to utilize shared resources
US7500241B1 (en) * 2003-10-10 2009-03-03 Avaya Inc. Method and apparatus for scheduling tasks
US7895431B2 (en) 2004-09-10 2011-02-22 Cavium Networks, Inc. Packet queuing, scheduling and ordering
US7535907B2 (en) 2005-04-08 2009-05-19 Oavium Networks, Inc. TCP engine
US7860930B2 (en) * 2006-12-19 2010-12-28 International Business Machines Corporation Communication between host systems using a transaction protocol and shared memories
US8279885B2 (en) 2007-09-25 2012-10-02 Packeteer, Inc. Lockless processing of command operations in multiprocessor systems
US8869165B2 (en) * 2008-03-20 2014-10-21 International Business Machines Corporation Integrating flow orchestration and scheduling of jobs and data activities for a batch of workflows over multiple domains subject to constraints
US8850446B2 (en) * 2008-06-19 2014-09-30 Freescale Semiconductor, Inc. System and method for using a task starvation indication to prevent starvations of tasks in a multiple processing entity system
TWI397010B (zh) * 2008-12-10 2013-05-21 Inst Information Industry Virtual machine module scheduling, scheduling methods and computer program products
US8239655B2 (en) * 2010-01-18 2012-08-07 Vmware, Inc. Virtual target addressing during direct data access via VF of IO storage adapter
KR101658035B1 (ko) * 2010-03-12 2016-10-04 삼성전자주식회사 가상 머신 모니터 및 가상 머신 모니터의 스케줄링 방법
US8959249B1 (en) * 2010-09-15 2015-02-17 Emc Corporation Cooperative cloud I/O scheduler
US8543754B2 (en) * 2011-02-25 2013-09-24 International Business Machines Corporation Low latency precedence ordering in a PCI express multiple root I/O virtualization environment
US8948167B2 (en) 2011-09-15 2015-02-03 Nvidia Corporation System and method for using domains to identify dependent and independent operations
US9059945B2 (en) 2011-10-31 2015-06-16 Cavium, Inc. Work request processor
US9397954B2 (en) * 2012-03-26 2016-07-19 Oracle International Corporation System and method for supporting live migration of virtual machines in an infiniband network
US9027024B2 (en) 2012-05-09 2015-05-05 Rackspace Us, Inc. Market-based virtual machine allocation
US9189281B2 (en) * 2012-10-18 2015-11-17 Oracle International Corporation Apparatus, system and method for providing fairness in task servicing
US9122515B2 (en) * 2012-12-19 2015-09-01 Dell Products L.P. Completion notification for a storage device
US20140331001A1 (en) * 2013-05-02 2014-11-06 Lsi Corporation Command Barrier for a Solid State Drive Controller
US9838471B2 (en) 2014-02-03 2017-12-05 Cavium, Inc. Method and an apparatus for work request arbitration in a network processor
US20150220872A1 (en) 2014-02-03 2015-08-06 Cavium, Inc. Method and an apparatus for work packet queuing, scheduling, and ordering with conflict queuing
US9811467B2 (en) 2014-02-03 2017-11-07 Cavium, Inc. Method and an apparatus for pre-fetching and processing work for procesor cores in a network processor
US9411644B2 (en) 2014-03-07 2016-08-09 Cavium, Inc. Method and system for work scheduling in a multi-chip system
KR101583325B1 (ko) * 2014-08-12 2016-01-07 주식회사 구버넷 가상 패킷을 처리하는 네트워크 인터페이스 장치 및 그 방법
WO2016003646A1 (en) 2014-06-30 2016-01-07 Unisys Corporation Enterprise management for secure network communications over ipsec
US10198288B2 (en) * 2014-10-30 2019-02-05 Oracle International Corporation System and method for providing a dynamic cloud with subnet administration (SA) query caching
US10223159B2 (en) * 2015-02-18 2019-03-05 Red Hat Israel, Ltd. Configuring virtual machine interfaces to provide access to a requested logical network based on virtual function availability and a virtual function capability option
US10698711B2 (en) 2015-07-01 2020-06-30 The American University In Cairo Cloud computing systems
CN107924289B (zh) * 2015-10-26 2020-11-13 株式会社日立制作所 计算机系统和访问控制方法
US10445271B2 (en) * 2016-01-04 2019-10-15 Intel Corporation Multi-core communication acceleration using hardware queue device
US10565024B2 (en) * 2016-10-19 2020-02-18 Oracle International Corporation Generic concurrency restriction
EP3812900B1 (de) 2016-12-31 2023-11-29 Intel Corporation Systeme, verfahren und vorrichtungen zum heterogenen computing
US11061724B2 (en) * 2017-06-05 2021-07-13 Marvell Asia Pte, Ltd. Programmable hardware scheduler for digital processing systems
GB2563588B (en) * 2017-06-16 2019-06-26 Imagination Tech Ltd Scheduling tasks
US11178023B2 (en) * 2017-06-30 2021-11-16 Intel Corporation Data plane interface network quality of service in multi-tenant data centers
US11150944B2 (en) * 2017-08-18 2021-10-19 International Business Machines Corporation Balancing mechanisms in ordered lists of dispatch queues in a computational device
US11237864B2 (en) * 2018-02-06 2022-02-01 Rubrik, Inc. Distributed job scheduler with job stealing
US10990440B2 (en) * 2018-02-06 2021-04-27 Rubrik, Inc. Real-time distributed job scheduler with job self-scheduling
US11263158B2 (en) * 2018-02-22 2022-03-01 Pensando Systems Inc. Programmable computer IO device interface
EP3847547A4 (de) 2018-09-04 2022-10-12 AVEVA Software, LLC Flussbasierte zusammensetzung und überwachungsserversystem und verfahren
US11095626B2 (en) 2018-09-26 2021-08-17 Marvell Asia Pte, Ltd. Secure in-line received network packet processing
US10761996B2 (en) 2018-09-28 2020-09-01 Intel Corporation Apparatus and method for secure memory access using trust domains
US20200150993A1 (en) 2018-11-13 2020-05-14 Cavium, Llc. Flexible resource assignment to physical and virtual functions in a virtualized processing system
US20190317802A1 (en) 2019-06-21 2019-10-17 Intel Corporation Architecture for offload of linked work assignments
US11580234B2 (en) 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
US11294715B2 (en) 2019-08-28 2022-04-05 Marvell Asia Pte, Ltd. System and method for queuing work within a virtualized scheduler based on in-unit accounting of in-unit entries
US11409553B1 (en) * 2019-09-26 2022-08-09 Marvell Asia Pte, Ltd. System and method for isolating work within a virtualized scheduler using tag-spaces

Also Published As

Publication number Publication date
US11294715B2 (en) 2022-04-05
US11928504B2 (en) 2024-03-12
US20210064421A1 (en) 2021-03-04
US11635987B2 (en) 2023-04-25
DE102020210335A8 (de) 2021-10-07
US20220179690A1 (en) 2022-06-09
US20230221990A1 (en) 2023-07-13

Similar Documents

Publication Publication Date Title
DE102015108145B4 (de) Lokale Dienstverkettung mit virtuellen Maschinen und virtualisierten Behältern in software-definierter Vernetzung
DE112020002509T5 (de) System und verfahren zur erleichterung der effizienten paketinjektion in einen ausgangspuffer in einer netzwerkschnittstellensteuerung (nic)
DE102009022152B4 (de) Verwenden von Kritikaliätsinformationen zum Routen von Cache-Kohärenz-Kommmunikationen
DE69433293T2 (de) Netzwerkübertragungsverfahren für Systeme mit virtuellem Speicher
DE102008030587B4 (de) Verfahren und Vorrichtung zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem
DE112008002550B4 (de) Verfahren und System für virtuelle Schnittstellenkommunikation
DE102020201834A1 (de) Technologien für netzvorrichtungslastausgleichseinrichtungen für beschleunigte funktionen-als-dienst
DE102020133262A1 (de) Arbeitslastscheduler für Speicherzuweisung
DE102012023395A1 (de) Schnittstellenvorrichtung und Verfahren zum Austauschen von Nutzdaten
DE112006001167T5 (de) Simulieren mehrerer virtueller Kanäle in Switching-Fabric-Netzwerken
DE112018007409T5 (de) Verfahren und vorrichtung zum planen von dienstanforderungen in einem netzwerk-rechensystem mit hilfe von hardware-warteschlangenverwaltungen
DE112007001135T5 (de) Gemeinschaftliche Nutzung von Daten durch Partitionen in einem partitionierbaren System
DE112017004907T5 (de) System, Vorrichtung und Verfahren zur Durchführung einer verteilten Arbitration
DE112017003294T5 (de) Technologien für ein skalierbares Senden und Empfangen von Paketen
DE102019112772A1 (de) Technologien für eine dienstgütefrist-bewusste ende-zu-ende-e/a-planung
DE112012004551T5 (de) Mehrkernverknüpfung in einem Netzprozessor
DE102020210335A1 (de) System und Verfahren zum Einreihen von Arbeit innerhalb eines virtualisierten Planers basierend auf einem Abrechnen innerhalb einer Einheit von Einträgen innerhalb der Einheit
DE102019102883A1 (de) Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern
DE112004002043B4 (de) Verfahren, System und Programm zum Aufbau eines Pakets
DE112017003494T5 (de) Mehrfach-core-software-forwarding
DE102021207394A1 (de) Zusammenführen von paketen auf der grundlage von hinweisen, die vom netzwerkadapter erzeugt werden
DE102019127285A1 (de) Verfahren und Vorrichtung zur sicheren Datenzentrumsüberbrückung in einem Multi-Tenant-System
DE102022205478A1 (de) Busübergreifende speicherabbildung
DE112016004367T5 (de) Technologien für automatische Prozessorkern-Zuordnungsverwaltung und -Kommunikation unterVerwendung direkter Datenplatzierung in private Zwischenspeicher
DE112020003022T5 (de) Interconnect-Adressbasierte QOS-Regulierung

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: GRUENECKER PATENT- UND RECHTSANWAELTE PARTG MB, DE

R012 Request for examination validly filed