-
GEBIET DER
ERFINDUNG
-
Diese
Erfindung betrifft insbesondere die Zeitablaufsteuerung von Informationen
und/oder Prozessen, wie z.B. jenen, die in Kommunikations- und Computersystemen
verwendet werden; und insbesondere betrifft die Erfindung die Zeitablaufsteuerung von
Entitäten
und Elementen unter Verwendung von Größenangaben- und Defizitwerten, einschließlich, jedoch
nicht begrenzt auf die Zeitablaufsteuerung des Sendens von Paketen
in einem Paketvermittlungssystem.
-
HINTERGRUND
DER ERFINDUNG
-
Die
Kommunikationsindustrie ändert
sich schnell, um sich auf aufkommende Technologien und die ständig zunehmende
Kundenanforderung einzustellen. Diese Kundenanforderung für neue Anwendungen
und erhöhte
Leistung von existierenden Anwendungen treibt die Kommunikationsnetz-
und Systemanbieter dazu, Netze und Systeme mit größerer Geschwindigkeit
und Kapazität
(z.B. größerer Bandbreite)
zu verwenden. Beim Versuch, diese Ziele zu erreichen, besteht eine übliche Vorgehensweise,
die von vielen Kommunikationsanbietern aufgegriffen wird, darin,
die Paketvermittlungstechnologie zu verwenden. Öffentliche und private Kommunikationsnetze
werden zunehmend unter Verwendung von verschiedenen Pakettechnologien
wie z.B. dem Internetprotokoll (IP) aufgebaut und erweitert.
-
Eine
Netzvorrichtung wie z.B. ein Vermittler oder ein Router empfängt, verarbeitet
und leitet ein Paket typischerweise weiter oder verwirft es. Eine Warteschlangeneintragungskomponente
einer solchen Vorrichtung empfängt
beispielsweise einen Strom von Paketen mit verschiedener Größe, die
in einem Eingangspuffer gesammelt werden. Jedes Paket wird analysiert
und eine geeignete Menge an Speicherplatz wird zugewiesen, um das
Paket zu speichern. Das Paket wird im Speicher gespeichert, während bestimmte
Attribute (z.B. Zielinformationen und andere Informationen, die
typischerweise von einem Paketkopf oder einer anderen Quelle abgeleitet werden)
in einem separaten Speicher gehalten werden. Sobald das ganze Paket
in den Speicher geschrieben ist, wird das Paket für die Verarbeitung
berechtigt und ein Indikator des Pakets wird typischerweise in eine
geeignete Zielwarteschlange gesetzt, damit es gemäß einer
gewissen Zeitablaufsteuermethodologie abgearbeitet wird.
-
Wenn
ein Streit um Betriebsmittel besteht, wie z.B. Ausgangsverbindungsleitungen
eines Paketvermittlungssystems oder eine Schnittstelle oder sogar
für Rechenzyklen
in einer Rechenvorrichtung, ist es wichtig, dass Betriebsmittel
gemäß einem
gewissen Gerechtigkeitsgrundsatz zugewiesen werden oder deren Zeitablauf
geplant wird. Überdies
ist die Menge an Arbeit, die erforderlich ist, um den Zeitablauf
eines Pakets oder eines anderen geplanten Elements zu planen und
dieses in eine Warteschlange einzutragen und aus einer Warteschlange
zu entfernen, wichtig, insbesondere wenn die Betriebsgeschwindigkeit
von Systemen zunimmt.
-
Das
gewöhnliche
Round-Robin (RR) ist ein Algorithmus, der üblicherweise zur gemeinsamen Nutzung
eines gemeinsamen Betriebsmittels zwischen mehreren Clients verwendet
wird. Alle Clients werden in einer zyklischen Reihenfolge abgearbeitet. In
jeder Runde wird jeder Client abgearbeitet, wenn er berechtigt ist.
Wenn er abgearbeitet wird, wird jedem Client ermöglicht, ein Paket zu senden.
Das Abarbeiten von Warteschlangen ist einfach zu implementieren
und kann in konstanter Zeit durchgeführt werden, weist jedoch aufgrund
der veränderlichen Größe von Paketen
die Bandbreite nicht gerecht zu.
-
In
einigen Szenarios konkurrieren hohe Priorität (z.B. geringe Wartezeit),
garantierte Bandbreite, Verkehr mit bester Leistung (z.B. übrige Bandbreite) und
andere Klassifizierungen des Verkehrs um ein gemeinsames Betriebsmittel.
Verschiedene bekannte Zeitablaufsteueralgorithmen sind dazu ausgelegt, eine
Isolation, Prioritätszuweisung
und gerechte Bandbreitenzuweisung für den Verkehr zu schaffen, der
um ein gemeinsames Betriebsmittel konkurriert. Diese sind als gerechte
Warteschlangenalgorithmen bekannt. Einige Beispiele sind Weighted
Fair Queuing (WFQ, gewichtete gerechte Warteschlangeneintragung),
Self-Clocked Fair Queuing (SCFQ, selbstgetaktete Warteschlangeneintragung)
und Deficit Round Robin/Surplus Round Robin (als DRR bezeichnet,
Defizit-Round-Robin/Überschuss-Round-Robin).
-
WFQ
und SCFQ hängen
von den Ankunftszeiten sowie von der vorherigen Verbindungsleitungsnutzung
ab, um das nächste
beste zu sendende Paket zu berechnen. Das akzeptierte "ideale" Verhalten ist bitweises
Round-Robin, das angibt, dass das nächste zu sendende Paket das
Paket sein sollte, das geendet hätte,
wenn alle momentan im System befindlichen Pakete ein Bit in jedem Round-Robin senden
(was typischerweise in einem System auf Paketbasis nicht praktisch
ist). Der Einschluss von Ankunftszeiten im Zeitablaufsteuermechanismus,
um theoretische ideale Absendezeiten zu berechnen, erfordert typischerweise
das Einfügen
in eine sortiere Liste, was als schlimmster Fall des O(log N) Problems
bekannt ist, wobei N die Anzahl von bereits in die Warteschlange
eingetragenen Paketen ist.
-
DRR
ist ein Algorithmus, der zur gemeinsamen Nutzung eines gemeinsamen
Betriebsmittels zwischen mehreren Clients mit verschiedenen Verhältnissen
zwischen Clients verwendet wird (d.h. einigen Clients wird ermöglicht,
mehr der Betriebsmittel zu verbrauchen als andere). Das Verhältnis zwischen den
Clients wird typischerweise durch einen Parameter definiert, der
Größenangabe
genannt wird.
-
Das
DRR arbeitet Warteschlagen unter Verwendung von Round-Robin-Abarbeitung
ab, wobei eine Größenangabe
jeder Warteschlange zugewiesen wird. Im Gegensatz zu herkömmlichem Round-Robin
können
mehrere Pakete bis zur festgelegten Größenangabe gesandt werden, was
dazu führt,
dass jede Warteschlange zumindest Bytes mit dem Wert einer Größenangabe
sendet. Wenn die Größenangabe
für jede
Warteschlange gleich ist, dann sendet jede Warteschlange einen gleichen
Betrag an Bandbreite.
-
Diese
DRR-Methode arbeitet in Runden, wobei eine Runde die Iteration eines
Round-Robin über die
Warteschlangen ist, die zu sendende Elemente besitzen. Wenn der
Zeitablauf der Warteschlange geplant wird, wird ihr typischerweise
ermöglicht
zu senden, bis ihr Defizit negativ wird, und dann wird die nächste Warteschlange
abgearbeitet. Pakete, die in verschiedenen Strömen eingehen, werden in verschiedenen
Warteschlangen gespeichert. In jeder Runde werden jeder Warteschlange
Bits im Wert einer Größenangabe
zugewiesen, die zum Defizit jeder Warteschlange hinzugefügt wird.
Jeder Warteschlange wird ermöglicht,
ein oder mehrere Pakete in einer DRR-Runde auszusenden, wobei dies
der Einschränkung
unterliegt, dass sie nicht mehr Bits senden kann als durch das der
Warteschlange entsprechende Defizit angegeben. Wenn keine weiteren
Pakete in einer Warteschlange vorliegen, nachdem die Warteschlange
abgearbeitet wurde, wird das der Warteschlange entsprechende Defizit
auf Null gesetzt. Ansonsten wird der restliche Betrag (d.h. das Defizit
minus die Anzahl von gesandten Bits) für die nächste Runde gehalten.
-
Das
DRR ist ein Algorithmus, der nicht von den tatsächlichen Ankunftszeiten abhängt, und
besitzt eine Komplexität
von O(1) – d.h.,
die Menge an erforderlicher Arbeit ist eine Konstante und von der Anzahl
von in die Warteschlange gestellten Paketen unabhängig. Um
Arbeit zu sparen, sollte ein Paket jedes Mal gesandt werden, wenn
der Zeitablauf einer Warteschlange geplant wird. Folglich sollte
die im DRR verwendete Größenangabe
mindestens eine maximale Paketgröße (MTU)
sein, um zu garantieren, dass, wenn die Größenangabe zu irgendeinem Defizit
hinzugefügt
wird, der resultierende Wert mindestens Null ist. Das DRR schafft
eine gerechte Bandbreitenzuweisung und ist leicht zu implementieren.
Es ist arbeitssparend und es skaliert aufgrund seiner O(1)-Eigenschaften
gut mit höheren
Verbindungsleitungsgeschwindigkeiten und einer größeren Anzahl
von Warteschlangen. Sein Zeitablaufsteuerverhalten weicht jedoch
erheblich vom bitweisen Round-Robin"Ideal" ab. Insbesondere ist die Wartezeit
für ein
System mit N Warteschlangen Q*N, wobei Q die mittlere Größenangabe
ist, die mindestens eine maximale Transporteinheit (MTU) sein muss.
-
In
einer Implementierung, die modifiziertes Defizit-Round-Robin (MDRR)
genannt wird, wird wahlweise ein Client mit hoher Priorität (HP) auf
jedes Betriebsmittel abgebildet, zusätzlich dazu, dass die anderen
Clients mit nicht-hoher Priorität
(NHP) auf das Betriebsmittel abgebildet werden. In dieser Implementierung
gibt es zwei mögliche
Betriebsarten: Betriebsart mit niedriger Wartezeit und gerechte Betriebsart.
In der Betriebsart mit niedriger Wartezeit wird der HP-Client konstant
abgearbeitet, bis er nicht berechtigt ist (d.h. entweder eine leere
Warteschlange besitzt oder er seine zugewiesene Bandbreite überschritten
hat). Die NHP-Clients werden nur abgearbeitet, sobald der HP-Client
nicht abgearbeitet werden kann. Die Betriebsart mit niedriger Wartezeit verringert
die Wartezeit des HP-Clients (gut für Sprach/Video-Anwendungen),
kann jedoch eine Verarmung der NHP-Clients verursachen. In der gerechten
Betriebsart wird ein Paket vom HP-Client und eines von anderen NHP-Clients
in abwechselnder Reihenfolge gesandt, solange der HP-Client seine
maximale zugewiesene Bandbreite nicht erreicht hat. Die gerechte
Betriebsart ist ein Kompromisspunkt zwischen der Anforderung, die
NHP-Clients nicht
zu verarmen, und der Anforderung von HP-Clients für eine niedrige
Wartezeit.
-
Neue
Verfahren und Vorrichtungen zur Zeitablaufsteuerung von Paketen
in einem Paketvermittlungssystem, insbesondere jenen, die eine gute
Wartezeitleistung schaffen können,
während
O(1)-Arbeitseigenschaften aufrechterhalten werden, und/oder andere
gewünschte
Eigenschaften besitzen, sind erforderlich.
-
Shreedhar
M et al., "Efficient
Fair Queuing Using Deficit Round-Robin", IEEE/ACM transactions on Networking,
IEEE Inc., Band 4, Nr.3, 1. Juni 1996, Seiten 375-385, offenbart
ein Round-Robin-Warteschlangensystem, das ein Defizit verwendet,
um den Zeitablauf der Verarbeitung von Warteschlangen in einer aktiven
Liste von Warteschlangen, die zu verarbeitende Entitäten enthalten,
zu planen.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Gemäß der Erfindung
werden ein Verfahren und eine Vorrichtung geschaffen, wie in den
begleitenden Ansprüchen
dargelegt.
-
Verfahren
und Vorrichtungen zur Zeitablaufsteuerung von Elementen in einem
System wie z.B., jedoch nicht begrenzt auf ein Computer- oder Kommunikationssystem,
werden offenbart. In einer Ausführungsform
werden mehrere Mengen von Elementen, die erfordern, dass eine Verarbeitung
durchgeführt
wird, gehalten. Eine momentane Menge der mehreren Mengen von Elementen
wird identifiziert. Jedes der Elemente in der momentanen Menge wird verarbeitet.
In einer Ausführungsform
umfasst diese Verarbeitung das Identifizieren eines speziellen Elements
im momentanen Satz, das Hinzufügen
einer Größenangabe
zu einem Defizit des speziellen Elements, das Verarbeiten einer
dem speziellen Element entsprechenden Entität, das Senken des Defizits
des speziellen Elements um einen Wert, das Feststellen, ob das Defizit
ermöglicht,
dass das spezielle Element weiterverarbeitet wird, und als Reaktion
auf die Feststellung, dass das Defizit nicht ermöglicht, dass das spezielle
Element weiterverarbeitet wird, das Bewegen des speziellen Elements
aus der momentanen Menge in eine andere der mehreren Mengen von
Elementen.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
Die
beigefügten
Ansprüche
legen die Merkmale der Erfindung mit Besonderheit dar. Die Erfindung
kann zusammen mit ihren Vorteilen am besten aus der folgenden ausführlichen
Beschreibung in Verbindung mit den begleitenden Zeichnungen verstanden
werden, in denen:
-
1 ein
Blockdiagramm einer Ausführungsform
zur Zeitablaufsteuerung von Entitäten und Elementen unter Verwendung
von Größenangaben- und
Defizitwerten ist;
-
2 ein
Blockdiagramm einer Ausführungsform
zur Zeitablaufsteuerung von Entitäten und Elementen unter Verwendung
von Größenangaben- und
Defizitwerten ist;
-
3A-D
Blockdiagramme von Datenstrukturen sind, die in einer Ausführungsform
verwendet werden;
-
4 ein
Blockdiagramm eines Warteschlangeneintragungsprozesses ist, der
in einer Ausführungsform
verwendet wird, um sicherzustellen, dass eine Zeitablaufsteuereinrichtung
ein Element mit einer Entität
kennt, deren Zeitablauf zu planen ist;
-
5 ein
Ablaufdiagramm eines Prozesses ist, der in einer Ausführungsform
zur Zeitablaufsteuerung der Verarbeitung von Entitäten und
Elementen innerhalb einer oder mehreren Mengen von Elementen verwendet
wird;
-
6 ein
Ablaufdiagramm eines Prozesses ist, der in einer Ausführungsform
zur Zeitablaufsteuerung der Verarbeitung von Entitäten und
Elementen innerhalb einer oder mehrerer Mengen von Elementen verwendet
wird; und
-
7 ein
Ablaufdiagramm eines Prozesses ist, der in einer Ausführungsform
zur Zeitablaufsteuerung der Verarbeitung von Entitäten und
Elementen innerhalb einer oder mehrerer Mengen von Elementen verwendet
wird.
-
AUSFÜHRLICHE
BESCHREIBUNG
-
Verfahren
und Vorrichtungen zur Zeitablaufsteuerung von Entitäten und
Elementen unter Verwendung von Größenangaben- und Defizitwerten, insbesondere
in Kommunikations- und Computersystemen, werden offenbart. Die hierin
beschriebenen Ausführungsformen
umfassen verschiedene Elemente und Begrenzungen, wobei kein Element
oder keine Begrenzung als kritisches Element oder kritische Begrenzung
betrachtet wird. Jeder der Ansprüche
führt individuell
einen Aspekt der Erfindung in ihrer Gesamtheit an. Überdies
können
einige beschriebenen Aus führungsformen
unter anderem Systeme, Netze, integrierte Schaltungschips, eingebettete
Prozessoren, ASICs, Verfahren und ein maschinenlesbares Medium,
das Befehle enthält,
umfassen, sind jedoch nicht darauf begrenzt. Die nachstehend beschriebenen
Ausführungsformen
verkörpern
verschiedene Aspekte und Konfigurationen innerhalb des Schutzbereichs
und Gedankens der Erfindung, wobei die Fig. beispielhafte und nicht-begrenzende Konfigurationen
darstellen.
-
Wie
hierin verwendet, bezieht sich der Begriff "Paket" auf Pakete aller Arten oder irgendwelche
anderen Einheiten von Informationen oder Daten, einschließlich, jedoch
nicht begrenzt auf Zellen mit fester Länge und Pakete mit variabler
Länge,
von denen jedes) in kleinere Pakete oder Zellen unterteilbar sein kann
oder nicht. Der Begriff "Paket", wie hierin verwendet,
bezieht sich auch sowohl auf das Paket selbst als auch eine Paketangabe,
wie z.B., jedoch nicht begrenzt auf alles oder einen Teil eines
Pakets oder Paketkopfs, einen Datenstrukturwert, einen Zeiger oder
Index oder irgendeinen anderen Teil oder eine Identifikation eines
Pakets. Überdies
können diese
Pakete eine oder mehrere Arten von Informationen enthalten, einschließlich, jedoch
nicht begrenzt auf Sprache, Daten, Video- und Audioinformationen. Der
Begriff "Element" wird hierin verwendet,
um auf ein Paket oder irgendeine andere Einheit oder ein Stück von Informationen
oder Daten Bezug zu nehmen.
-
Der
Begriff "System" wird hierin allgemein verwendet,
um eine beliebige Anzahl von Komponenten, Elementen, Untersystemen,
Vorrichtungen, Paketvermittlungselementen, Paketverteilern, Routern,
Netzen, Computer- und/oder Kommunikationsvorrichtungen oder -mechanismen
oder Kombinationen von Komponenten davon zu beschreiben. Der Begriff "Computer" wird hierin allgemein
verwendet, um eine beliebige Anzahl von Computern zu beschreiben,
einschließlich,
jedoch nicht begrenzt auf Personalcomputer, eingebettete Prozessoren
und Systeme, eine Steuerlogik, ASICs, Chips, Arbeitsplatzrechner,
Großrechner
usw. Der Begriff "Vorrichtung" wird hierin allgemein
verwendet, um eine beliebige Art von Mechanismus zu beschreiben,
einschließlich
eines Computers oder Systems oder einer Komponente davon. Die Begriffe "Aufgabe" und "Prozess" werden hierin allgemein
verwendet, um eine beliebige Art von laufendem Programm zu beschreiben,
einschließlich,
jedoch nicht begrenzt auf einen Computerprozess, eine Computer-
aufgabe, einen Computer-Thread, die Ausführung einer Anwendung, eines
Betriebssystems, eines Benutzerprozesses, eines Vorrichtungstreibers,
eines nativen Codes, einer Maschinen- oder anderen Sprache usw.,
und kann interaktiv und/oder nicht-interaktiv sein, lokal und/oder
entfernt ausgeführt
werden, im Vordergrund und/oder im Hintergrund ausgeführt werden,
in den Benutzer- und/oder Betriebssystem-Adressenräumen ausgeführt werden,
eine Routine einer Bibliothek und/oder einer eigenständigen Anwendung,
und ist nicht auf irgendein spezielles Speicherpartitionierungsverfahren
begrenzt. Die Schritte, Verbindungen und Verarbeitung von Signalen
und Informationen, die in den Fig. dargestellt sind, einschließlich, jedoch
nicht begrenzt auf die Block- und Ablaufdiagramme, werden typischerweise
in einer unterschiedlichen seriellen oder parallelen Reihenfolge
und/oder durch verschiedene Komponenten und/oder über verschiedene
Verbindungen in verschiedenen Ausführungsformen unter Festhalten
am Schutzbereich und Gedanken der Erfindung durchgeführt.
-
Überdies
werden die Begriffe "Netz" und "Kommunikationsmechanismus" hierin allgemein verwendet,
um ein oder mehrere Netze, Kommunikationsmedien oder Kommunikationssysteme
zu beschreiben, einschließlich,
jedoch nicht begrenzt auf das Internet, private oder öffentliche
Telephonnetze, Zellennetze, drahtlose Netze, Satellitennetze, Kabelnetze,
lokale Netze, Metropolennetze und/oder weiträumige Netze, ein Kabel, eine
elektrische Verbindung, einen Bus usw., und interne Kommunikationsmechanismen
wie z.B. Nachrichtenweiterleitung, Kommunikationen zwischen Prozessen,
gemeinsam genutzter Speicher usw.
-
Der
Begriff "Speichermechanismus" umfasst eine beliebige
Art von Speicher, Speichervorrichtung oder eines anderen Mechanismus
zum Halten von Befehlen oder Daten in einem beliebigen Format. Ein "maschinenlesbares
Medium" ist ein
erweiterbarer Begriff, einschließlich eines beliebigen Speichers,
einer beliebigen Speichervorrichtung, eines beliebigen Speichermechanismus
und anderer Speicher- und Signalisierungsmechanismen, einschließlich Schnittstellen
und Vorrichtungen wie z.B. Netzschnittstellenkarten und Puffer darin,
sowie beliebiger Kommunikationsvorrichtungen und Signale, die empfangen und
gesendet werden, und anderer aktueller und aufkommender Technologien,
die ein computerisiertes System interpretieren, empfangen und/oder
senden kann. Der Begriff "Speicher" umfasst einen beliebigen
Direktzugriffsspeicher (RAM), Festwertspeicher (ROM), Flash-Speicher,
integrierte Schaltungen und/oder andere Speicherkomponenten oder
-elemente. Der Begriff "Speichervorrichtung" umfasst beliebige
Festkörper-Speichermedien, Plattenlaufwerke,
Disketten, vernetzte Dienste, Bandlaufwerke und andere Speichervorrichtungen.
Speicher und Speichervorrichtungen können vom Computer ausführbare Befehle
speichern, die von einem Prozessor und/oder einer Steuerlogik ausgeführt werden
sollen, und Daten, die von einem Prozessor und/oder einer Steuerlogik
verarbeitet werden. Der Begriff "Datenstruktur" ist ein erweiterbarer
Begriff, der sich auf ein beliebiges Datenelement, eine Variable,
Datenstruktur, Datenbank und/oder eines oder mehrere von Organisationsschemen
bezieht, die auf Daten angewendet werden können, um die Interpretation
der Daten oder das Durchführen
von Operationen an diesen zu erleichtern, wie z.B., jedoch nicht
begrenzt auf Speicherstellen oder -vorrichtungen, Mengen, Warteschlangen,
Bäume,
Halden, Listen, verkettete Listen, Matrizes, Tabellen, Zeiger usw.
Eine Datenstruktur wird typischerweise in einem Speichermechanismus gehalten.
-
Die
Begriffe "erstes", "zweites" usw. werden hierin
typischerweise verwendet, um verschiedene Einheiten zu bezeichnen
(z.B. ein erstes Element, ein zweites Element). Die Verwendung dieser
Begriffe hierin suggeriert nicht notwendigerweise eine Reihenfolge,
wie z.B. eine Einheit oder ein Ereignis, die/das vor dem anderen
vorkommt, sondern sieht vielmehr einen Mechanismus vor, um zwischen
speziellen Einheiten zu unterscheiden. Überdies wird der Ausdruck "auf der Basis von
x" verwendet, um
einen minimalen Satz von Elementen x anzugeben, aus denen etwas
abgeleitet ist, wobei "x" erweiterbar ist
und nicht notwendigerweise eine vollständige Liste von Elementen beschreibt,
auf denen die Operation basiert. Außerdem wird der Ausdruck "gekoppelt mit" verwendet, um ein
gewisses Niveau von direkter oder indirekter Verbindung zwischen
zwei Elementen oder Vorrichtungen anzugeben, wobei die koppelnde
Vorrichtung oder die koppelnden Vorrichtungen das gekoppelte Signal
oder die übertragenen
Informationen modifizieren oder nicht modifizieren. Der Begriff "Teilmenge" wird verwendet,
um eine Gruppe von allen, weniger als allen oder keinem der Elemente
einer Menge anzugeben. Der Begriff "oder" wird überdies hierin
verwendet, um eine alternative Auswahl von einem oder mehreren,
einschließlich
aller, der zusammenhängenden
Elemente zu identifizieren.
-
Verfahren
und Vorrichtungen werden offenbart, um die Ablaufsteuerung von Elementen
(z.B. Paketen, Prozessen usw.) in einem System, wie z.B., jedoch
nicht begrenzt auf ein Computer- oder Kommunikationssystem (z.B.
Router, Verteiler usw.), zu planen. In einer Implementierung werden
mehrere Mengen von Elementen, die erfordern, dass eine Verarbeitung
durchgeführt
wird, gehalten. Eine momentane Menge der mehreren Mengen von Elementen wird
identifiziert. Jedes der Elemente in der momentanen Menge wird verarbeitet.
In einer Imple mentierung umfasst diese Verarbeitung das Identifizieren
eines speziellen Elements in der momentanen Menge, das Hinzufügen einer
Größenangabe
zu einem Defizit des speziellen Elements, die Verarbeitung einer Entität entsprechend
dem speziellen Element, das Senken des Defizits des speziellen Elements
um einen Wert, das Feststellen, ob das Defizit ermöglicht, dass
das spezielle Element weiterverarbeitet wird, und das Bewegen des
speziellen Elements aus der momentanen Menge in eine andere der
mehreren Mengen von Elementen nach dem Feststellen, ob das Defizit
ermöglicht,
dass das spezielle Element weiterverarbeitet wird.
-
In
einer Ausführungsform
werden mehrere Mengen von Elementen, die erfordern, dass eine Verarbeitung
durchgeführt
wird, gehalten, wobei diese Mengen von Elementen in einer gewissen
deterministischen Folge verarbeitet werden. Eine momentane Menge
wird ausgewählt
und verarbeitet, bis sie leer ist. Ein Element wird aus der momentanen
Menge ausgewählt
und eine Größenangabe
wird zum Defizit des speziellen Elements hinzugefügt. Während das
Defizit des Elements nicht negativ (oder nicht positiv) ist, werden
die Entitäten
vom Element verarbeitet (z.B. irgendeine entsprechende Handlung
durchgeführt,
ein Paket wird von einer Warteschlange gesandt, es wird ermöglicht,
dass ein Prozess durch eine gewisse Anzahl von CPU-Zyklen verarbeitet wird,
usw.) und das Defizit des Elements wird um einen gewissen entsprechenden
Wert gesenkt. Nachdem das Defizit des Elements negativ wird, wird
das Element aus der momentanen Liste zu einer anderen der mehreren
Listen bewegt, typischerweise auf der Basis des momentanen Defizits
des Elements, der Größenangabe,
der momentanen Menge und der deterministischen Folge, so dass, wenn
auf das Element das nächste
Mal Bezug genommen wird, seine Größenangabe groß genug
ist, um mindestens eine Handlung (z.B. Senden eines Pakets) durchzuführen. In
einer Ausführungsform
ist die Größe der Größenangabe
ungefähr
die maximale Paketgröße, dividiert
durch die Anzahl von Mengen von Elementen. Wenn ein Element leer
wird, wird es nicht weiter verarbeitet und auch nicht in eine andere
aktive Menge gegeben, bis es Entitäten besitzt, die eine Verarbeitung
erfordern, und dann wird es in die geeignete Menge gegeben.
-
In
einer Ausführungsform
werden mehrere Mengen von Elementen, die erfordern, dass eine Verarbeitung
durchgeführt
wird, gehalten, wobei diese Mengen von Elementen in einer gewissen
deterministischen Folge verarbeitet werden. Eine momentane Menge
wird ausgewählt
und verarbeitet, bis sie leer ist. Die momen tane Menge wird durchlaufen
und während
des ersten solchen Durchlaufs wird die Größenangabe zum Defizit jedes
Elements hinzugefügt. Während dieses
Durchlaufs wird ermöglicht,
dass eine Entität
eines Elements verarbeitet wird (z.B. eine gewisse entsprechende
Handlung durchgeführt
wird, ein Paket von einer Warteschlange gesandt wird, ermöglicht wird,
dass ein Prozess durch eine gewisse Anzahl von CPU-Zyklen durchgeführt wird,
usw.). In einer Ausführungsform
entspricht diese Verarbeitung einer Entität (z.B. einem Paket, einer
Anzahl von CPU-Zyklen usw.) In einer Ausführungsform wird eine Verarbeitung
mit dem Wert einer Kleinstgrößenangabe
am Element durchgeführt,
was ermöglichen kann,
dass mehrere Entitäten
verarbeitet werden. Das Defizit des Elements wird um einen gewissen entsprechenden
Wert gesenkt und ein nächstes
Element wird verarbeitet. Wenn jedoch das Element leer wird, wird
es aus der Menge entfernt, oder wenn das Defizit des Elements negativ
(oder nicht positiv) wird, wird das Element in einer anderen Menge
angeordnet. In einer Ausführungsform
werden zwei Mengen verwendet: eine momentan aktive Menge und eine momentan
inaktive Menge und folglich würde
das Element in der momentan inaktiven Menge angeordnet werden. Wenn
die momentan aktive Menge leer wird, wird sie zur momentan inaktiven
Menge und die andere Menge wird zur momentan aktiven Menge und die
Verarbeitung wiederholt sich. In einer Ausführungsform werden mehr als
zwei Mengen verwendet und in diesem Fall wird ein Element von der
momentanen Liste zu einer anderen der mehreren Listen typischerweise
auf der Basis des momentanen Defizits des Elements, der Größenangabe,
der momentanen Menge und der deterministischen Folge bewegt, so dass,
wenn das nächste
Mal auf das Element Bezug genommen wird, seine Größenangabe
groß genug ist,
um mindestens eine Handlung (z.B. Senden eines Pakets) durchzuführen. In
einer Ausführungsform
erhöht
das Ermöglichen
einer Verarbeitung einer Einheit auf einmal mit dem Wert einer Kleinstgrößenangabe
die Paketverschachtelung und kann das Zittern verringern, insbesondere
wenn die für
einzelne Entitäten
erforderliche Verarbeitung variiert, wie z.B. wenn die Längen von
Paketen erheblich variieren.
-
In
einer Ausführungsform
besitzt jedes Element einen Defizitwert. Zu jedem Zeitablaufsteuerzeitpunkt,
zu dem ein Paket vom Client gesandt wird, wird die Paketlänge vom
Defizit subtrahiert. Dem Client wird ermöglicht, nur ein einziges Paket
in jeder Zeitablaufsteuerrunde zu senden, und dem Client wird ermöglicht,
an der nächsten
Zeitablaufsteuerrunde teilzunehmen, wenn das Defizit immer noch nicht
negativ ist. Sobald das Defizit negativ wird, wird dem Client nicht ermöglicht,
an der Zeitablaufsteuerrunde teilzunehmen. In einer Ausführungsform
wird dies durchgeführt,
indem der Client aus der aktiven Liste (z.B. der momentan abgearbeiteten
Liste) herausgenommen wird und in eine inaktive Liste (z.B. eine
Liste, die momentan nicht abgearbeitet wird, die jedoch zu planende
Clients enthält)
gesetzt wird. Sobald alle Clientanforderungen abgearbeitet wurden, wie
dadurch identifiziert, dass die aktive Liste leer ist, wird eine
nächste
Liste zur aktiven Liste und die aktive Liste wird zu einer inaktiven
Liste. In einer Ausführungsform
werden nur zwei Listen verwendet, während in einer Ausführungsform
mehr als zwei Listen verwendet werden. In einer Ausführungsform
ist die verwendete Größenangabe
mindestens eine MTU, um sicherzustellen, dass ein Paket jedes Mal
gesandt wird, wenn ein Client verarbeitet wird.
-
In
einer Ausführungsform
wird eine Quelle abgearbeitet (z.B. ein Paket wird gesandt), wenn
sie an die Reihe kommt und solange ihr Defizit und Kleinstdefizit
und Leaky Bucket nicht negativ sind. Eine Quelle erhält eine
neue Kleinstgrößenangabe, die
ihr in jeder Runde gegeben wird (wenn sie an die Reihe kommt), und
eine Größenangabe,
wenn sie von der aktiven Liste in die inaktive Liste überführt wird.
Eine aktive Liste ist die Liste von Quellen, die ihre Bandbreitenteilung
nicht vollendet haben (d.h. ihr Defizit ist nicht negativ). Die
inaktive Liste ist die Liste von Quellen, die ihre Bandbreitenteilung
beendet haben (d.h. ihr Defizit wurde negativ). Wenn Quellen von
der aktiven Liste Pakete senden, wird die aktive Liste immer kürzer, bis
sie leer wird. Wenn diese aktive Liste leer wird, werden die aktive
Liste und die inaktive Liste vertauscht.
-
In
einer Ausführungsform
werden zwei verkettete Listen gehalten: eine aktive verkettete Liste, die
aus Clients mit einem positiven Defizitwert besteht (d.h. die Clients
sind zum Senden von Paketen in dieser DRR-Runde berechtigt); und
eine inaktive verkettete Liste, die aus Clients mit einem nicht-positiven
Defizitwert besteht (d.h. die Clients sind zum Senden von Paketen
in dieser DRR-Runde nicht berechtigt). Ein programmierbarer Kleinstgrößenangaben-Parameter
pro Client wird zusammen mit dem Kleinstdefizit verwendet, um die
Anzahl von Bytes zu bestimmen, die von jedem Client in jeder Runde
gesandt werden. In einer Ausführungsform
wird nur eine Kleinstdefizitvariable verwendet, während in
einer Ausführungsform
eine Kleinstdefizitvariable für jedes
Element verwendet wird, was in einer Ausführungsform ermöglicht,
den Betrag des negativen Kleinstdefizits für jedes Element in und/oder über Runden
zu halten.
-
Die
aktive verkettete Liste wird abgetastet und jedem Client wird ermöglicht,
Kleinstgrößenangabenbytes
zu senden (oder etwas mehr, da ganze Pakete gesandt werden). Wenn
das entsprechende Kleinstdefizit nicht-positiv (oder negativ in
Abhängigkeit
von der Ausführungsform)
wird, wird der nächste Client
in der aktiven verketteten Liste abgearbeitet. Die geeignete Anzahl
von Bytes wird vom Kleinstdefizit nach jedem von einem Client gesandten
Paket subtrahiert. Gewöhnlich
wird ein Client nicht aus der Warteschlange von der aktiven verketteten
Liste entfernt, wenn das Kleinstdefizit nicht-positiv wird. Nur wenn
das Defizit nicht-positiv wird, wird ein Client aus der aktiven
verketteten Liste aus der Warteschlange entfernt und wird dann entweder
in der inaktiven Clientliste oder wieder in der freien verketteten
Liste in die Warteschlange gestellt (wenn der Client aufgrund einer
maximalen Bandbreitenzuweisung, oder wenn ein Client keine Pakete
senden muss, zum Senden von Paketen nicht berechtigt wird). Die
aktive verkettete Liste wird immer kürzer, wenn die Clients das Senden
ihrer Größenangabe
vollenden. Wenn ein Client das Senden seiner Größenangabe vollendet, wobei
angenommen wird, dass er Pakete senden muss, und immer noch zum
Senden von Paketen berechtigt ist, wird er aus der aktiven verketteten
Liste aus der Warteschlange entfernt und in der inaktiven verketteten
Liste in die Warteschlange gestellt. In einer Ausführungsform
wird ein Zustandsbit, das angibt, dass dieser Client für diese
Runde keine Kleinstgrößenangabe
erhalten hat, gesetzt. Dieses Zustandsbit kann ein globales Bit
für alle
Clients in derselben Liste oder für einen Client speziell sein.
Wenn die aktive verkettete Liste leer wird, wird sie inaktiv und
die vorherige inaktive verkettete Clientliste wird aktiv. In der
ersten Runde erhalten alle Clients ihre Kleinstgrößenangabe.
In einer Ausführungsform
werden zwei verkettete Listen verwendet, da Clients, die ihre Größenangabe
beendet haben, von Clients unterschieden werden, die ihre Größenangabe
nicht beendet haben, sondern ihre Kleinstgrößenangabe beendet haben.
-
1 stellt
eine Ausführungsform
eines Systems, wie z.B., jedoch nicht begrenzt auf ein Computer-
oder Kommunikationssystem, dar, das den Zeitablauf von Entitäten und/oder
Elementen gemäß der Erfindung
plant. Pakete oder andere Entitäten
oder Angaben davon 101–109,
deren Zeitablauf geplant werden soll, werden von einer oder mehreren Schnittstellen,
Prozessen, Threads, Informationsströmen oder anderen Quellen 100 empfangen.
Diese Pakete oder anderen Entitäten 101–109 werden typischerweise
in Elementen/Warteschlangen 111–119 zur Zeitablaufsteuerung
durch die Zeitablaufsteuereinrichtung 120 gespeichert.
In einer Ausführungsform
wie z.B. dieser Verarbeitung von Paketen oder Kommuni kationsströmen, verarbeitet
die Zeitablaufsteuereinrichtung 120 einen oder mehrere Ströme von Paketen
oder anderen Entitäten 101–109,
um einen oder mehrere Ströme
von Ausgaben 121–129 zu
erzeugen. In einer Ausführungsform werden
beispielsweise Ströme
von Paketen 101–109 in
Warteschlangen 111–119 gespeichert.
Die Zeitablaufsteuereinrichtung 120 plant den Zeitablauf
von Paketen von den Warteschlangen 111–119, um einen oder
mehrere Ströme
von Paketen 121–129 zu
erzeugen.
-
2 stellt
eine Ausführungsform
eines Systems 200, wie z.B., jedoch nicht begrenzt auf
ein Computer- oder Kommunikationssystem, dar, das den Zeitablauf
von Entitäten
und/oder Elementen gemäß der Erfindung
plant. In einer Ausführungsform plant
das System 200 den Zeitablauf von intern erzeugten Entitäten, wie
z.B., jedoch nicht begrenzt auf Prozesse, Threads, Informationsströme, Pakete
oder andere Entitäten.
In einer Ausführungsform
empfängt das
System 200 extern erzeugte Entitäten und/oder erzeugt intern
Entitäten
und plant den Zeitablauf der Verarbeitung und/oder des Sendens von
diesen Entitäten
durch das System 200 oder durch ein anderes System. In
einer Ausführungsform
plant das System 200 beispielsweise den Zeitablauf von
internen Prozessen, Threads usw. In einer Ausführungsform empfängt das
System 200 Ströme
von Paketen (oder anderen Informationseinheiten), plant den Zeitablauf von
Paketen, die zu diesen Strömen
gehören,
und erzeugt einen oder mehrere externe Ströme von Paketen, deren Zeitablauf
geplant wird.
-
In
einer Ausführungsform
umfasst das System 200 einen Prozessor 201, einen
Speicher 202, Speichervorrichtungen 203 und wahlweise
eine oder mehrere Schnittstellen 204 für eingehende und/oder ausgehende
Entitäten,
die typischerweise über
einen oder mehrere Kommunikationsmechanismen 209 (als Bus
für Erläuterungszwecke
gezeigt) gekoppelt sind. Verschiedene Ausführungsformen des Systems 200 können mehr
oder weniger Elemente umfassen. Die Operation des Systems 200 wird
typischerweise durch den Prozessor 201 unter Verwendung
des Speichers 202 und der Speichervorrichtungen 203 gesteuert,
um eine oder mehrere Zeitablaufsteueraufgaben oder Prozesse durchzuführen. Der
Speicher 202 ist eine Art von maschinenlesbarem Medium
und umfasst typischerweise einen Direktzugriffsspeicher (RAM), einen
Festwertspeicher (ROM), einen Flash-Speicher, integrierte Schaltungen und/oder
andere Speicherkomponenten. Der Speicher 202 speichert
typischerweise vom Computer ausführbare
Befehle, die vom Prozessor 201 ausgeführt werden sollen, und/oder
Daten, die vom Prozessor 201 zum Implementieren der Funktionalität gemäß der Erfindung
verarbeitet werden. Die Speichervorrichtungen 203 sind
eine weitere Art von maschinenlesbarem Medium und umfassen typischerweise Festkörper-Speichermedien,
Plattenlaufwerke, Disketten, vernetzte Dienste, Bandlaufwerke und
andere Speichervorrichtungen. Die Speichervorrichtungen 203 speichern
typischerweise vom Computer ausführbare
Befehle, die vom Prozessor 201 ausgeführt werden sollen, und/oder
Daten, die vom Prozessor 201 zum Implementieren der Funktionalität gemäß der Erfindung
verarbeitet werden.
-
3A–3D stellen
beispielhafte Datenstrukturen dar, die in einer oder mehreren einer
unbegrenzten Anzahl von Ausführungsformen
der Erfindung verwendet werden. 3A stellt
eine Datenstruktur dar, die verwendet wird, um ein Element zu identifizieren
und um ein Defizit für
das Element zu halten. Eine Ausführungsform
verwendet alle Felder 301–305 der Datenstruktur 300.
Eine Ausführungsform
verwendet weniger als alle der Felder 301–305 der
Datenstruktur 300.
-
Wie
gezeigt, umfasst die Datenstruktur 300 ein Elementidentifikatorfeld 301,
das verwendet wird, um das spezielle Element (z.B. eine Menge von
Warteschlangen oder anderen Elementen) anzugeben, ein Elementdefizitfeld 302,
das verwendet wird, um einen Defizitwert für das Element zu halten, ein
Elementgrößenangabenfeld 303,
das verwendet wird, um eine Größenangabe
für das
Element anzugeben, da die Größenangabenwerte
in einer Ausführungsform
zwischen den Elementen variieren können, um veränderliche
Bandbreitenbeträge,
Verarbeitungszeit usw. für
die Elemente vorzusehen (und wenn sie gleich sind, dann wird das
Elementgrößenangabenfeld 303 typischerweise
nicht verwendet oder eingeschlossen), und ein Elementzeigerfeld 304,
das in einer verketteten Liste von Elementen verwendet wird, wie
z.B. der in 3B dargestellten. In einer Ausführungsform
ist ein zusätzliches
Feld zum Speichern eines Kleinstgrößenangabenwerts in der Datenstruktur 300 enthalten,
das insbesondere nützlich
sein kann, wenn Elemente verschiedene Kleinstgrößenangabenwerte verwenden.
-
3B stellt
mehrere Mengen 360, 370 und 380 mit jeweiligen
Elementen 362–364, 372–374 und 382–384 dar,
die erfordern, dass eine Verarbeitung durchgeführt wird. In einer Ausführungsform
entsprechen die Elemente 362–364, 372–374 und 382–384 Warteschlangen,
die Pakete oder andere zu verarbeitende Entitäten enthalten. In einer Ausführungsform
entsprechen die Elemente 362–364, 372–374 und 382–384 Prozessen
oder Threads, die CPU-Zeit erfordern. Wie ge zeigt, liegt jede Menge 360, 370 und 380 in
Form einer verketteten Liste vor (und zahlreiche andere Datenstrukturen
werden in anderen Ausführungsformen
verwendet). Eine verkettete Liste ist zum Halten einer geordneten
Menge (z.B. einer Liste) von Elementen zweckmäßig. In der dargestellten Ausführungsform
weist jede Liste oder Menge 360, 370 und 380 einen
Kopfzeiger 361, 371 und 381 und einen
Abschlusszeiger 365, 375 und 385 auf.
In einer Ausführungsform
wird ein spezieller Elementzeiger 350 verwendet, um eines
der Elemente 362–364, 372–374 und 382–384,
das momentan verarbeitet wird, anzugeben.
-
3C stellt
ferner eine Kleinstdefizit-Datenstruktur oder einen Zählmechanismus 310 dar, der
in einer Ausführungsform
verwendet wird, um einen Kleinstdefizitwert für ein Element zu halten, das momentan
verarbeitet wird, wie z.B. das im Ablaufdiagramm von 7 beschriebene,
der nachstehend weiter beschrieben wird.
-
3D stellt
eine Datenstruktur mit einem Element 390 dar, das in einer
Ausführungsform
verwendet wird. Wie gezeigt, umfasst das Element 390 mehrere
Entitäten 391–399.
In einer Ausführungsform
entspricht das Element 390 einer Warteschlange und die
Entitäten 391–399 entsprechen
Paketen, deren Zeitablauf geplant werden soll und die gesandt werden
sollen. In einer Ausführungsform
entspricht eine Entität
einer Einheit von Arbeit, die an einem Element durchgeführt wird.
-
4 stellt
einen Prozess dar, der in einer Ausführungsform verwendet wird,
um sicherzustellen, dass der Zeitablauf eines Elements, das eine Verarbeitung
erfordert, geplant wird. Die Verarbeitung beginnt mit dem Prozessblock 400 und
geht zum Prozessblock 402 weiter, in dem eine Entität (oder
eine Angabe davon), die eine Verarbeitung erfordert, empfangen wird,
und die Entität
wird im geeigneten Element im Prozessblock 404 angeordnet. Wie
im Prozessblock 406 bestimmt, kehrt die Verarbeitung, wenn
sich das Element bereits im Zeitablaufsteuersystem befindet, dann
als nächstes
zum Prozessblock 402 zurück. Ansonsten wird im Prozessblock 408 das
Defizit des Elements auf seinen Größenangabenwert gesetzt und
im Prozessblock 410 wird eine Angabe des Elements zur Zeitablaufsteuereinrichtung
geliefert oder möglicherweise
wird das Element zu einer der Zeitablaufsteuermengen in der Zeitablaufsteuer-Datenstruktur
hinzugefügt.
In einer Ausführungsform
ist die Größenangabe
für alle
Elemente gleich. In einer Ausführungsform
ist die Größenangabe
für alle
Elemente nicht gleich, da beispielsweise einem Element (z.B. Warteschlange) mehr
Bandbreite zum Senden von Paketen zugewiesen werden könnte als
einem anderen Element. In einer Ausführungsform wird die Initialisierung
des Defizits eines Elements in einem anderen Prozess (z.B. dem in 4, 5 oder 6 dargestellten)
durchgeführt,
aber die Initialisierung im Prozessblock 408 kann einen
oder mehr Speicherzugriffe sparen, was in einigen Ausführungsformen
wichtig sein kann. Die Verarbeitung kehrt dann zum Prozessblock 402 zurück.
-
5 stellt
einen Zeitablaufsteuerprozess dar, der in einer Ausführungsform
verwendet wird. Die Verarbeitung beginnt mit dem Prozessblock 500 und
geht zum Prozessblock 502 weiter, in dem eine erste Menge
ausgewählt
wird. Wie im Prozessblock 504 bestimmt, dann wird, wenn
keine Elemente in der ausgewählten
Menge sind, im Prozessblock 506 als nächstes eine nächste Menge
ausgewählt
und die Verarbeitung kehrt zum Prozessblock 504 zurück.
-
Ansonsten
wird im Prozessblock 508 ein Element wie z.B. das erste,
wenn eine geordnete Menge verwendet wird, oder ein anderes Element
aus der Menge ausgewählt.
Im Prozessblock 510 werden die dem Element entsprechenden
Informationen abgerufen. Im Prozessblock 512 wird als nächstes eine
Entität,
typischerweise die erste Entität,
verarbeitet. In einer Ausführungsform
wird ein Paket gesandt. Im Prozessblock 514 wird als nächstes das
Defizit des Elements um einen gewissen konstanten oder variablen
Wert, wie z.B. die Größe des gesandten
Pakets oder einen anderen Wert, der an der durchgeführten Verarbeitung
teilnimmt, gesenkt. Es ist zu beachten, dass in einer Ausführungsform
die verwendete Größenangabe
weniger als eine maximale Transporteinheit (MTU) sein kann. In einer
Ausführungsform
ist die verwendete Größenangabe
mindestens (1 MTU/(S-1)), wobei S die Anzahl von Mengen ist und S>1.
-
Wie
im Prozessblock 516 bestimmt, dann wird, wenn keine weiteren
Entitäten
im Element vorliegen, im Prozessblock 518 als nächstes das
Element aus der Menge entfernt, da an diesem keine weitere Verarbeitung
durchgeführt
werden muss, und die Verarbeitung kehrt zum Prozessblock 504 zurück. Wie
im Prozessblock 520 bestimmt, wird dann, wenn das Defizit
nicht ermöglicht,
dass das Element weiterverarbeitet wird (z.B. das Defizit kleiner
als ein vorbestimmter konstanter Wert wie z.B. Null ist, oder über einen
anderen Vergleich bestimmt), ansonsten im Prozessblock 522 das
Element in eine andere der Mengen von Elementen typischerweise auf
der Basis des Werts des Defizits für das Element, seiner Größenangabe
und der momentanen Menge gegeben, so dass das Element nicht weiter
verar beitet wird, bis es tatsächlich
genügend
Größenangabe
entwickelt hätte,
um eine seiner Entitäten
zu verarbeiten. Außerdem
wird das Defizit für
das Element um eine geeignete zusätzliche Größenangabe entsprechend dem
nächsten
Mal, wenn das Element abgearbeitet oder verarbeitet wird, erhöht. In einer
Ausführungsform
wird das Defizit eines Elements um eine Größenangabe von n erhöht, wobei
n der Position der Menge (in der sich das Element befindet) in der
relativen Reihenfolge der Abarbeitung von Mengen entspricht, wobei
der Wert von n typischerweise eine ganze Zahl ist, die größer als
oder gleich Eins ist. Wenn das Element beispielsweise in der nächsten abzuarbeitenden
Menge angeordnet ist, wird sein Defizit um eine Größenangabe
erhöht,
und wenn das Element in der zweitnächsten abzuarbeitenden Menge
angeordnet ist, wird sein Defizit um zwei Größenangaben erhöht, und
so weiter. Die Verarbeitung kehrt dann zum Prozessblock 504 zurück. Ansonsten kehrt
die Verarbeitung zum Prozessblock 512 zurück, um eine
weitere Entität
zu verarbeiten.
-
6 stellt
einen Zeitablaufsteuerprozess dar, der in einer Ausführungsform
verwendet wird. Die Verarbeitung beginnt mit dem Prozessblock 600 und
geht zum Prozessblock 602 weiter, in dem eine erste Menge
ausgewählt
wird. Wie im Prozessblock 604 bestimmt, wird, wenn keine
Elemente in der ausgewählten
Menge sind, dann als nächstes
im Prozessblock 606 eine nächste Menge ausgewählt und die
Verarbeitung kehrt zum Prozessblock 604 zurück. In einer
Ausführungsform
werden zwei Mengen von Elementen verwendet.
-
Ansonsten
wird im Prozessblock 608 ein Element wie z.B. das erste,
wenn eine geordnete Menge verwendet wird, oder ein anderes Element
aus der Menge ausgewählt.
Im Prozessblock 610 werden die dem Element entsprechenden
Informationen abgerufen. Im Prozessblock 612 wird eine
Entität,
typischerweise die erste Entität,
verarbeitet. In einer Ausführungsform
wird ein Paket gesandt. Im Prozessblock 614 wird als nächstes das
Defizit des Elements um einen gewissen konstanten oder variablen
Wert wie z.B. die Größe des gesandten
Pakets oder einen anderen Wert, der an der durchgeführten Verarbeitung teilnimmt,
gesenkt. Wie im Prozessblock 616 bestimmt, wird, wenn keine
weiteren Entitäten
im Element vorliegen, dann im Prozessblock 618 als nächstes das
Element aus der Menge entfernt, da an diesem keine weitere Verarbeitung
durchgeführt
werden muss, und die Verarbeitung kehrt zum Prozessblock 604 zurück. Wie
im Prozessblock 620 bestimmt, wird ansonsten, wenn das
Defizit nicht ermöglicht,
dass das Element weiterverarbeitet wird (z.B. das Defizit kleiner
ist als ein vorbestimmter konstanter Wert wie z.B. Null, oder über einen
anderen Vergleich bestimmt), dann im Prozessblock 622 das
Element aus der momentanen Menge entfernt und in einer anderen der
Mengen von Elementen typischerweise auf der Basis des Werts des
Defizits für
das Element, seiner Größenangabe
und der momentanen Menge angeordnet, so dass das Element nicht weiter
verarbeitet wird, bis es tatsächlich
genügend
Größenangabe entwickelt
hätte,
um eine seiner Entitäten
zu verarbeiten. Außerdem
wird das Defizit für
das Element um eine geeignete zusätzliche Größenangabe entsprechend dem
nächsten
Mal, wenn das Element abgearbeitet oder verarbeitet wird, erhöht. Die
Verarbeitung kehrt dann zum Prozessblock 604 zurück. Ansonsten
kehrt die Verarbeitung zum Prozessblock 608 zurück, um ein
nächstes
Element in der Menge (oder dasselbe Element, wenn es das einzige
in der Menge ist) auszuwählen
und zu verarbeiten.
-
7 stellt
einen Zeitablaufsteuerprozess dar, der in einer Ausführungsform
verwendet wird. Die Verarbeitung beginnt mit dem Prozessblock 700 und
geht zum Prozessblock 702 weiter, in dem eine erste Menge
ausgewählt
wird. Wie im Prozessblock 704 bestimmt, wird als nächstes,
wenn keine Elemente in der ausgewählten Menge vorliegen, dann im
Prozessblock 706 eine nächste
Menge ausgewählt
und die Verarbeitung kehrt zum Prozessblock 704 zurück.
-
Ansonsten
wird im Prozessblock 708 ein Element wie z.B. das erste,
wenn eine geordnete Menge verwendet wird, oder ein anderes Element
aus der Menge ausgewählt.
Im Prozessblock 710 werden die dem Element entsprechenden
Informationen abgerufen und ein Kleinstdefizitwert wird auf einen
Kleinstgrößenangabewert
initialisiert. In einer Ausführungsform
wird dieselbe Kleinstgrößenangabe
für alle
Elemente verwendet, während
in einer Ausführungsform die
Kleinstgrößenangabe
für alle
Elemente nicht gleich ist. Es ist zu beachten, dass, wenn ein Kleinstgrößenangabenwert
auf weniger als ein Paket mit minimierter Größe gesetzt wird, dann der in 6 dargestellte
Prozess in einer Ausführungsform
erreicht wird (mit einigen externen Schritten).
-
Im
Prozessblock 712 wird als nächstes eine Entität, typischerweise
die erste Entität,
verarbeitet. In einer Ausführungsform
wird ein Paket gesandt. Im Prozessblock 714 werden als
nächstes
das Defizit und das Kleinstdefizit des Elements jeweils um einen gewissen
konstanten oder variablen Wert, wie z.B. die Größe des gesandten Pakets oder
einen anderen Wert, der an der durchgeführten Verarbeitung teilnimmt,
gesenkt. Wie im Prozessblock 720 bestimmt, wird als nächs tes,
wenn keine weiteren Entitäten
im Element vorliegen, dann im Prozessblock 722 das Element
aus der Menge entfernt, da an diesem keine weitere Verarbeitung
durchgeführt
werden muss, und die Verarbeitung kehrt zum Prozessblock 704 zurück.
-
Wie
im Prozessblock 724 bestimmt, wird ansonsten, wenn das
Defizit nicht ermöglicht,
dass das Element weiterverarbeitet wird (z.B. das Defizit kleiner
ist als ein vorbestimmter konstanter Wert wie z.B. Null, oder über einen
anderen Vergleich bestimmt), dann im Prozessblock 728 das
Element aus der momentanen Menge entfernt und in einer anderen der Mengen
von Elementen typischerweise auf der Basis des Werts des Defizits
für das
Element, seiner Größenangabe
und der aktuellen Menge angeordnet, so dass das Element nicht weiter
verarbeitet wird, bis es tatsächlich
genügend
Größenangabe
entwickelt hätte,
um eine seiner Entitäten
zu verarbeiten. Außerdem
wird das Defizit für
das Element um eine geeignete zusätzliche Größenangabe entsprechend dem nächsten Mal,
wenn das Element abgearbeitet oder verarbeitet wird, erhöht. Die
Verarbeitung kehrt dann zum Prozessblock 704 zurück.
-
Wenn,
wie im Prozessblock 726 bestimmt, das Kleinstdefizit nicht
ermöglicht,
dass das Element weiterverarbeitet wird (z.B. das Kleinstdefizit
kleiner ist als ein vorbestimmter konstanter Wert wie z.B. Null,
oder über
einen anderen Vergleich bestimmt), kehrt die Verarbeitung ansonsten
zum Prozessblock 704 zurück. Ansonsten kehrt die Verarbeitung
zum Prozessblock 716 zurück, um eine andere Entität zu verarbeiten,
da das zugewiesene Defizit und das Kleinstdefizit vorher nicht vollständig genutzt
wurden.
-
Angesichts
der vielen möglichen
Ausführungsformen,
auf die die Prinzipien unserer Erfindung angewendet werden können, ist
zu erkennen, dass die Ausführungsformen
und Aspekte davon, die hierin mit Bezug auf die Zeichnungen/Fig.
beschrieben wurden, nur erläuternd
sind und nicht als Begrenzung des Schutzbereichs der Erfindung aufgefasst
werden sollten. Beispielsweise und wie es für einen Fachmann ersichtlich
wäre, können viele
der Prozessblockoperationen umgeordnet werden, damit sie vor, nach
oder im Wesentlichen gleichzeitig mit anderen Operationen durchgeführt werden.
Viele verschiedene Formen von Datenstrukturen könnten auch in verschiedenen
Ausführungsformen
verwendet werden. Die Erfindung, wie hierin beschrieben, zieht alle
solchen Ausführungsformen,
die in den Schutzbereich der folgenden Ansprüche fallen können, in
Betracht.