-
Die vorliegende Erfindung betrifft
eine Vorrichtung zum Sortieren von jeweils einen betreffenden Sortierschlüssel einschließenden Datenelementen,
umfassend:
- – Speichermittel, die entsprechend
einem binären Baum
mit von 1 bis 2n – 1 numerierten 2n – 1 Knoten
organisiert sind, die jeweils zur Aufnahme eines Datenelementes
geeignet sind und in n aufeinanderfolgende, von 0 bis n – 1 numerierte
Stufen aufgeteilt sind, wobei die Stufe q die Knoten 2q bis 2q+1 – 1 umfasst;
und
- – Mittel
zur Steuerung des binären
Baumes, um die im Baum zu sortierenden Elemente derart zu verteilen,
dass eine Anweisungsbedingung verifiziert wird, gemäß der für jedes
ganzzahlige i zwischen 1 und 2n–1 – 1 irgendein
Knoten i ein zu sortierendes Element enthält, wobei jeder der Knoten 2i
und 2i + 1 entweder kein zu sortierendes Element enthält oder
ein Element enthält,
dessen Sortierschlüssel
in Richtung einer festgelegten Ordnungsbeziehung größer oder
gleich als der Sortierschlüssel
des im Knoten i enthaltenen Elementes ist.
-
Die Anweisung der Elemente im Sortierbaum entspricht
derjenigen, die auf dem Gebiet der Informationssortierung als "Gruppensortieren" ("heapsort") bezeichnet wird.
Man kann sich diesbezüglich auf
das Werk von Knuth: "The
art of Computer programming, Vol. 3, Sorting and searching", Addison Wesley,
1973, Seiten 142–157
beziehen.
-
Zur Veranschaulichung zeigt 1, für den Fall, dass n = 4, einen
fünfzehn
Knoten 1–15
umfassenden Sortierbaum, der Datenelemente (bei denen lediglich
der Sortierschlüssel
dargestellt ist) enthält, welche
die Anweisungsbedingung verifizieren.
-
Der Knoten 1 der Stufe 0
wird Spitze oder Wurzel des Baumes genannt. Die 2n–1 Knoten
2n–1 bis 2n–1 der
Stufe n – 1
werden Blätter
des Baumes genannt. Für
jeden Knoten i einer Stufe q werden die 2n–q – 1 Knoten
des Baumes, deren Nummern die Form i2j +
j' haben, wobei
j und j' ganzzahlig
sind und so beschaffen sind, dass 0 ≤ j < n – q und 0 ≤ j' < 2j , Abkömmlinge
des Knotens i genannt (man betrachtet hierbei den Knoten i als in
seinen Abkömmlingen
enthalten). Unter diesen Abkömmlingen
werden die Bruderknoten 2i und 2i + 1 der Stufe q + 1 (wenn q < n – 1) Söhne des
Knotens i genannt. Der Vater des Knotens i (wenn q > 0) wird übrigens
als der Knoten der Stufe q – 1
definiert, dessen Nummer i/2 ist, wenn i gerade ist, und (i – 1)/2,
wenn i ungerade ist. Diese logischen Abstammungsbeziehungen zwischen
den Knoten des Baumes sind in 1 durch
Pfeile dargestellt.
-
Die Ordnungsbeziehung zwischen den
Sortierschlüsseln
ist willkürlich.
In dem durch die 1 veranschaulichten
Fall handelt es sich um die Familienordnungsbeziehung zwischen den
natürlichen ganzen
Zahlen, die eine Sortierung mit zunehmender Ordnung der Sortierschlüssel erlaubt.
Im Falle einer Sortierung mit abnehmender Ordnung reicht es selbstverständlich aus,
die Ordnungsbeziehung zwischen den Schlüsseln umzukehren. In 1 werden die Knoten des
Baumes, die nicht durch die zu sortierenden Elemente belegt sind,
betrachtet, als enthielten sie jeweils ein Element, dessen Sortierschlüssel unendlich
ist, d. h. größer als
jeglicher Sortierschlüssel
eines zu sortierenden Datenelementes. Eine Möglichkeit zum Codieren eines
unendlichen Schlüssels
ist zu diesem Zweck das Reservieren eines Bits des den Schlüssel enthaltenden
Datenfeldes; der Schlüssel
wird z. B. als unendlich betrachtet, wenn dieses Bit 1 ist, und
als endlich, wenn nicht; mit anderen Worten, dieses Bit zeigt an,
wenn der Knoten frei ist oder durch ein Datenelement belegt ist.
-
Ist die Sortiervorrichtung einmal
mit einer Gruppe von N < 2n angewiesenen Datenelementen beladen, dann
ist sie fähig, diese
N Elemente in N Zyklen in der Ordnung der Sortierschlüssel der
Reihe nach zu liefern. Das Herausziehen eines Elementes aus dem
Baum im Verlauf eines Zyklus besteht darin, das an der Spitze des
Baumes gelegene Element zu lesen und Elemente seiner Nachkommenschaft
hinaufsteigen zu lassen, um stets die Anweisungsbedingung zu verifizieren.
Somit besteht in dem in 1 veranschaulichten
Fall der erste Zyklus darin, das an der Spitze gelegene Element
16 zu lesen und das Element 24 zur Spitze zu verschieben, dann das
Element 38 zum Knoten 2 und schließlich das Element 623 zum Knoten 4 zu
verschieben. Dies läuft
darauf hinaus, dass sich der Herausziehungsbefehl von der Spitze
aus in Richtung der Blätter
verbreitet.
-
Bei einer bestimmten Anzahl von Anwendungen
ist es notwendig, dass die Kontrollmittel auch fähig sind, auf Befehle zum Einfügen eines
neuen, in den Baum einzusortierenden Elementes zu antworten. Die
Sortiervorrichtung ist dann fähig,
bei jedem Zyklus zu sortierende Elemente zu liefern oder zu empfangen.
Sie arbeitet wie eine dynamische Warteschlange auf der Grundlage
der Sortierschlüssel,
die entsprechend der benutzten Ordnungsbeziehung verwaltet werden
und zeitliche Bezeichnungen oder jegliche andere Art von Prioritätsindex
darstellen können.
-
Bei den bekannten binären Sortierbäumen wird
der Einfügungsbefehl
nicht von der Spitze zu den Blättern
des Baumes verbreitet, denn auf der Ebene eines gegebenen Knotens
ist a priori nicht bekannt, zu welchem der beiden Nachkommen der
Befehl verbreitet werden soll, wobei festgestellt wird, dass bei
einem der beiden Nachkömmlinge
seine Nachkommenschaft vollständig
belegt und somit ungeeignet sein kann, um den Befehl zu empfangen. Der
Einfügungsbefehl
wird also von den Blättern
des Baumes aus zur Spitze hin verbreitet. Um z. B. in den Baum von 1 ein Element einzufügen, dessen Sortier schlüssel 28 ist,
wird es in ein freies Blatt des Baumes eingeschrieben, z. B. in
das Blatt 9, und es werden nach und nach Vergleiche mit den in den
aufsteigenden Knoten enthaltenen Elementen ausgeführt; es
ist also so, dass die Elemente 28 und 38 vertauscht werden, um die
Anweisung im betrachteten Beispiel wiederherzustellen.
-
Unter diesen Umständen ist es erforderlich, dass
der vorhergehende Zyklus im Augenblick des Herausziehens des Elementes
des Baumes mit dem kleinsten Schlüssel vollendet ist. Demzufolge
ist die Durchsatzrate, mit der die Vorrichtung Datenelemente liefern
oder empfangen kann, durch die Dauer des Verarbeitungszyklus eines
Befehls begrenzt, die proportional zur Stufenanzahl n ist, d. h.
zum Logarithmus der maximalen Anzahl von zu sortierenden Elementen.
Bei Anwendungen, bei denen diese Anzahl N erheblich ist, z. B. einige
Tausende, und bei denen eine hohe Durchsatzrate erforderlich ist,
z. B. mehr als 500 000 Elemente pro Sekunde, ist die Sortiervorrichtung
mit den bekannten elektronischen Schaltungen nicht mehr realisierbar.
-
In ihrem Artikel "A real time sorter with application
to ATM traffic control" (Proc.
ISS'95, April 1995,
Volume 1, Seiten 258–262)
haben J. W. Roberts et al. eine Sortiervorrichtung beschrieben,
die nicht an der obigen Durchsatzratenbegrenzung leidet, d. h. die
fähig ist,
die Elemente mit einem Takt zu liefern und zu empfangen, der a priori
von der maximalen Anzahl zu sortierender Elemente unabhängig ist.
Ein Nachteil dieser letzteren Vorrichtung besteht allerdings darin,
dass die Anzahl parallel betriebener logischer Schaltungen proportional
zu N ist. Sobald die Anzahl N von zu sortierenden Elementen erheblich
wird (einige Tausende oder Zehntausende wie im Fall der Anwendung
bei einem in dem Artikel in Betracht gezogenen ATM-Zellen-Abstandshalter),
wird die Hardware-Komplexität
der Vorrichtung hinderlich.
-
Die Artikel von C. THOMPSON unter
dem Titel "The VLSI
Complexity of Sorting",
IEEE TRANSACTIONS ON COMPUTERS, Vol. c-32, Nr. 12, Dezember 1983,
Seiten 1171–1184,
XP002053125, NEW YORK, US und von TANAKA Y. et al. unter dem Titel "Pipeline searching
and sorting modules as components of a data flow database computer", INFORMATION PROCESSING
80, PROCEEDINGS OF THE IFIP CONGRESS 80, TOKYO, JAPAN, 6–9 OCT.
1980, Seiten 427–432,
XP002053126 ISBN 0-444-86034-7, 1980, AMSTERDAM, NETHERLANDS, NORTH-HOLLAND,
NETHERLANDS erwähnen
eine Sortiervorrichtung nach "Heapsort"-Art, die auf einer
Verarbeitung im Pipeline-Modus
beruht.
-
Eine Aufgabe der vorliegenden Erfindung besteht
darin, eine Vorrichtung zur schellen Sortierung und mit begrenzter
Komplexität
vorzuschlagen.
-
Die Erfindung schlägt somit
eine Vorrichtung der einleitend angegebenen Art vor, bei der die
Mittel zur Steuerung Befehlen zur Änderung des Inhaltes des binären Baumes
Folge leisten, die Befehle zur Einfügung eines neuen, zu sortierenden
Elementes einschließen.
Gemäß der Erfindung
umfassen die Mittel zur Steuerung m aufeinanderfolgende Steuereinheiten,
die jeweils einer Stufe oder mehreren aufeinanderfolgenden Stufen
des binären
Baumes zugeordnet sind, wobei m eine ganze Zahl zwischen 2 und n
ist, und n – 1
Schnittstellenregister zwischen aufeinanderfolgenden Stufen, von
denen jedes der m – 1
Schnittstellenregister zwischen Paaren von den verschiedenen Steuereinheiten
zugeordneten Stufen ein Pipeline-Register bildet, und bei der jeder
Befehl zur Änderung
des Inhaltes des binären
Baumes von der Stufe 0 zur Stufe n – 1 mittels der Schnittstellenregister
verbreitet wird, wobei das oder die Pipeline-Register einen Parallelbetrieb der Steuereinheiten
ermöglicht/ermöglichen.
-
Die Komplexität der Vorrichtung ist durch
die Anzahl m von Steuereinheiten begrenzt, die ihrerseits höchstens
gleich der Anzahl n von Stufen des Baumes ist, d. h. dem Logarithmus
der maximalen Anzahl von zu sortierenden Elementen. Die Pipeline-Organisation der
Steuereinheiten erlaubt einen Parallelbetrieb und einen hohen Eingangs-
und Ausgangstakt von zu sortierenden Elementen. Dieser Takt ist
von der Anzahl zu sortierender Elemente unabhängig. Er ist maximal, wenn
die Anzahl m von Steuereinheiten gleich der Anzahl n von Stufen
ist.
-
Die Sortiervorrichtung gemäß der Erfindung kann
verschiedene Anwendungen haben, wenn eine schnelle Sortierung von
Datenelementen gebraucht wird, deren Anzahl erheblich sein kann.
Sie kann auch in Form einer Sortierungskoprozessor-Karte für jegliches
Informationssystem ausgeführt
werden. Ein interessantes Anwendungsgebiet ist dasjenige der Prozesseanweisung:
die Sortierschlüssel
stellen dann Zeitpunkte dar, zu denen es erforderlich ist, Prozesse
zu aktivieren. Man kann zu jedem Zeitpunkt des Baumes das "dringendste" Element herausziehen.
-
Die Vorrichtung gemäß der Erfindung
hat eine besonders vorteilhafte Anwendung auf dem Gebiet der Abstandshaltung
von ATM-Zellen. Unter einem zweiten Aspekt der Erfindung wird somit
ein Abstandshalter von zufolge einer Menge virtueller Verbindungen übertragener
ATM-Zellen vorgeschlagen, der einen Zellenspeicher, bei dem die
eingehenden Zellen eingeschrieben und die ausgehenden Zellen gelesen
werden, und Mittel zum Zuteilen einer theoretischen Aussendungsuhrzeit
an jede im Zellenspeicher gespeicherte Zelle umfasst. Gemäß der Erfindung
umfasst der Abstandshalter außerdem
Abstandssteuermittel, um den Zellenspeicher mittels eines zugeordneten
Zeigerspeichers zu verwalten, so dass der Zellenspeicher für jede virtuelle
Verbindung, für
die er Zellen enthält,
eine Liste von Stellen enthält, in
der diese Zellen zwischen einem Listenkopf und einem Listenende
im First-in-First-out-Modus angeordnet werden, und Sortiermittel,
um Datenelemente anzuweisen, die jeweils eine virtuelle Verbindungsidentität und einen
Sortierschlüssel
enthalten, der aus der theoretischen Aussendungsuhrzeit der in dem
die genannte virtuelle Verbindung betreffenden Listenkopf enthaltenen
Zelle besteht, und um wenigstens ein Datenelement mit einem minimalen
Sortierschlüssel
auszuwählen,
wobei die Abstandssteuermittel zum Steuern der Aussendung einer
Zelle eingerichtet sind, die in dem Listenkopf enthalten ist, der eine
virtuelle Verbindung betrifft, die in einem durch die Sortiermittel
ausgewählten
Datenelement identifiziert wird, und wobei die Sortiermittel wenigstens eine
Sortiervorrichtung, so wie sie vorher definiert worden ist, umfassen,
deren Knoten 1 der Stufe 0 das genannte ausgewählte Element
enthält.
-
Weitere Besonderheiten und Vorteile
der vorliegenden Erfindung ergeben sich aus der nachfolgenden Beschreibung
von nicht einschränkenden Ausführungsbeispielen
unter Bezugnahme auf beigefügte
Zeichnungen, in welchen:
-
1 ein
Blockschema eines binären
Sortierbaumes ist;
-
2 ein
Blockschaltbild einer verwendbaren Sortiervorrichtung gemäß der Erfindung
ist;
-
3 ein
Blockschaltbild ist, das die Umgebung jeder Steuereinheit der Vorrichtung
der 2 zeigt
-
4A bis 4C ein Ablaufdiagramm des
Betriebs der Steuereinheit der 3 zeigen;
-
5 ein
zeitliches Steuerdiagramm des Betriebs der Sortiervorrichtung zeigt;
-
6 und 7 Blockschaltbilder sind,
die denjenigen der 3 gleichen
und mögliche
Varianten für
die Umgebung der Steuereinheiten zeigen;
-
8 ein
Blockschaltbild ist, das ein mit einer Sortiervorrichtung gemäß der Erfindung
verwendbares Schieberegister zeigt;
-
9 ein
vereinfachtes zeitliches Steuerdiagramm der Sortiervorrichtung zeigt;
-
10A und 10B, die mit 4C zu vervollständigen sind, ein Ablaufdiagramm
des Betriebs der Steuereinheit der 7 zeigen;
-
11A und 11B, die mit 4C zu vervollständigen sind, ein Ablaufdiagramm
zeigen, das demjenigen der 10A, 10B und 4C im besonderen Fall der letzten Stufe
des binären
Baumes entspricht;
-
12 ein
Blockschaltbild der Anordnung eines Abstandshalters von ATM-Zellen
unter Benutzung der vorliegenden Erfindung ist;
-
13 zeitliche
Steuerdiagramme des Betriebs des Abstandshalters der 12 zeigt;
-
14 und 15 Ablaufdiagramme sind,
welche die durch die Steuereinheit durchgeführten Operationen des Abstandshalters
der 12 beim Empfang
bzw. bei der Aussendung einer ATM-Zelle zeigen; und
-
16 und 17 Teilblockschaltbilder
von Varianten von ATM-Abstandshaltern unter Benutzung der vorliegenden
Erfindung sind.
-
2 zeigt
eine Sortiervorrichtung, bei der die Datenelemente in einem Speicher 200 –203 enthalten sind, der entsprechend dem
binären
Baum der 1 mit n = 4
Stufen organisiert ist.
-
Der binäre Baum wird durch eine Anordnung von
m verschiedenen Steuereinheiten gesteuert, wobei m eine ganze Zahl
zwischen 2 und der Anzahl n von Stufen des Baumes ist. In dem in
den 2 und 3 betrachteten Fall gibt
es eine Steuereinheit 21q für jede Stufe
q des Baumes, nämlich
m = n = 4. Jede Steuereinheit 21q enthält einen
Bus 22q , der es ihr erlaubt, auf
die Stufe q zuzugreifen. Die Speichermittel des Baumes sind somit
auf m = 4 Speichermodule 200 –203 aufgeteilt, die jeweils durch einen
betreffenden Bus 220 –223 zugänglich sind. In jedem Knoten
i befinden sich zwei Speicherstellen, um den Sortierschlüssel K(i)
eines Datenelementes, der allein in 2 dargestellt
ist (K(i) = ∞ bei
Elementabwesenheit), bzw. eine Referenz R(i) dieses Elementes aufzunehmen
(vgl. 3).
-
Jede andere Stufe q des Baumes als
die Stufe 0 umfasst außer
den Knoten 2q bis 2q+1 – 1 noch 2q–1 Stellen 23 mit
dem Fassungsvermögen
von 1 Bit und 2q–1 Stellen 25 mit
dem Fassungsvermögen
n – q +
1 Bits. Jede Stelle 23 enthält ein Orientierungsbit F(i),
das einem Bruderknotenpaar 2i und 2i + 1 der Stufe q zugeordnet
ist und dessen Wert F(i) = 0 ist, wenn der
enthaltene Schlüssel
im linken Bruderknoten 2i kleiner als derjenige im rechten Bruderknoten 2i
+ 1 ist (K(2i) < K(2i
+ 1)), und dessen Wert F(i) = 1 ist, wenn (K(2i + 1) ≤ K(2i)). Die
Gesamtzahl von Stellen 23 im Sortierbaum ist 2n–1 – 1.
-
Jede Stelle 25 der Stufe
q enthält
einen differentiellen Zähler Δ(i), der
einem Bruderknotenpaar 2i und 2i + 1 der Stufe q zugeordnet ist,
dessen Wert durch die Differenz zwischen der Anzahl von in den Abkömmlingen
des linken Bruders 2i enthaltenen Datenelementen und der Anzahl
von in den Abkömmlingen
des rechten Bruders 2i + 1 enthaltenen Datenelementen gegeben ist.
-
Die Orientierungsbits F(i) dienen
dazu, die Herausziehungs- oder
Austauschbefehle von der Spitze zu den Blättern des Baumes zu verbreiten, während die
differentiellen Zähler Δ(i) dazu
dienen, die Einfügungsbefehle
von der Spitze zu den Blättern des
Baumes zu verbreiten.
-
Die Mittel zur Steuerung des binären Baumes
umfassen außerdem
n – 1
= 3 Schnittstellenregister 261 –263 , wobei jedes Register 26q als Schnittstelle zwischen der Steuereinheit
21q–1 der
Stufe q – 1
und der Steuereinheit 21q der Stufe
q dient. Im Prinzipblockschaltbild von 2 ist außerdem ein Register 260 dargestellt, das als Schnittstelle
der Steuereinheit 210 der Stufe
0 und der Umgebung der Sortiervorrichtung dient. Die zur Sortiervorrichtung
geschickten Befehle werden in dieses Register 260 geschrieben,
genauso wie die durch die Sortiervorrichtung gelieferten Antworten.
In der Praxis kann dieses Register 260 zur
gleichen Schaltung gehören
wie die Steuereinheit 210 der höheren Stufe
des Baumes.
-
In Bezug auf 3 setzt sich jedes Register 26q aus vier Stellen zusammen, die jeweils
enthalten:
- – einen Befehlscode Aq, der die Art des von der Spitze zu den
Blättern
des Baumes verbreiteten Befehls bezeichnet; im Verlauf der Darlegung
wird beispielsweise betrachtet, dass die Befehle Aq über zwei Bits in der folgenden Weise codiert sind: Aq = 00 für
Nichtvorliegen einer Änderung
des Inhalts des Baumes, ausgehend von der Stufe q, Aq =
01 für
einen Befehl zur Einfügung
eines neuen Elementes, Aq = 11 für einen
Austauschbefehl, der darin besteht, aus dem Baum das Element herauszuziehen,
das den kleinsten Sortierschlüssel zur
gleichen Zeit hat, zu der dort ein neues Element eingefügt wird
(das einfache Herausziehen des Elementes mit dem kleinsten Sortierschlüssel wird
wie der Austausch dieses Elementes mit einem Element behandelt,
das einen unendlichen Sortierschlüssel hat), und Aq =
10 für
einen Befehl zur Reinitialisierung des Inhalts des Baumes, ausgehend
von der Stufe q;
- – einen
Sortierschlüssel
Bq, der von der Stufe q – 1 zur Stufe q bei einem Einfügungs- oder
Austauschbefehl oder von der Stufe q zur Stufe q – 1 bei
einem Austauschbefehl übertragen
wird;
- – eine
Referenz Cq, die dem Sortierschlüssel Bq zugeordnet ist und mit diesem ein eingefügtes oder
ausgetauschtes Datenelement bildet; und
- – eine
Identifizierung Dq, die sich aus q – 1 Bits
zusammensetzt (diese Identifizierung existiert im Register 260 nicht) und den Knoten der Stufe q – 1 bezeichnet,
von dem der Befehl Aq herkommt. Genauer
wird die Identifizierung Dq durch die q – 1 niedrigstgewichtigen
Bits der binären
Darstellung der Nummer des Knotens i der Stufe q – 1 gebildet, von
dem der Befehl Aq herkommt, d. h. dass i
= 1Dq mit der Basis 2.
-
Zum Einfügen eines neuen Elementes in
den Baum wird der Befehl A0 = 01 und dieses
neue Element B0, C0 in
das Register 260 eingeschrieben
und der Befehl wird danach von der Spitze zu den Blättern des
Baumes verbreitet. Zum Durchführen
eines Austausches werden der Befehl A0 =
11 und das einzufügende
Element B0, C0 in
das Register 260 eingeschrieben
(mit B0 = ∞ im Fall einer einfachen Herausziehung),
und dann wird das Element mit dem kleinsten Schlüssel an der Stelle B0 und C0 des Registers 260 wiedergewonnen.
-
Die für jede Steuereinheit 21q durchgeführten Operationen sind im Ablaufdiagramm
der 4A, 4B und 4C dargestellt.
Zur Ausführung
dieser Operationen ist jede Steuereinheit 21q in
Form eines geeignet programmierten Netzes aus schnellen logischen
Gattern realisiert. Die Operationen sind für Lesen/Schreiben, Inkrementierungen/Dekrementierungen
und Vergleiche binärcodierter
Variablen die Hauptsache, wobei diese Programmierung des Gatternetzwerkes
keinerlei Problem aufwirft.
-
Der Befehl Aq wird
zuerst im Register 26q gelesen
(Schritt 100), und dann ausgewertet (Schritt 101),
um die Befehlsart zu identifizieren.
-
Im Fall des Nichtvorliegens einer Änderung (Aq = 00) schreibt die Steuereinheit 21q einfach den gleichen Befehl Aq+1 = 00 in das folgende Register 26q+1 (Schritt 102).
-
Im Falle eines Reinitialisierungsbefehls
(Aq = 10) wird die Identifizierung Dq des Vaters der Variablen s zugewiesen (Schritt 103)
und die Steuereinheit 21q initialisiert
die beiden Sohnknoten, deren Nummern als binäre Darstellungen 1s0 und 1s1
sind, wobei ihr Sortierschlüssel
auf unendlich und den Wert 0 im zugeordneten differentiellen Zähler Δ(1s) gesetzt wird
(Schritt 104), bevor der Befehl Aq+1 =
00 zum Schritt 102 verbreitet wird. Im besonderen Fall
der Stufe 0 besteht die Reinitialisierung nur darin, K(1) = ∞ zu schreiben.
-
Wenn der im Register 100 gelesene
Befehl Aq mit der Einfügung eines neuen Elementes
Bq, Cq von einem
Vaterknoten 1Dq (Aq =
01) aus in Zusammenhang steht, werden diese Parameter Bq,
Cq bzw. Dq durch
die Steuereinheit 21q gelesen und
Variablen k, r und s beim Schritt 105 zugewiesen, und dann wird
der differentielle Zähler Δ(1s), der
den Söhnen des
identifizierten Knotens zugeordnet ist, der Variablen δ beim Schritt 106 zugewiesen.
-
Wenn δ = 0 (Vergleich 107)
hat der rechte Sohn eine zahlreichere Nachkommenschaft als der linke
Sohn und man hat die Gewissheit, dass der linke Sohn in seiner Nachkommenschaft
wenigstens einen Knoten hat, der fähig ist, das neue Element zu empfangen,
so dass der Einfügungsbefehl
zum linken Sohn verbreitet wird. Das Bit t wird dann gleich 0 genommen
und die Variable δ wird
beim Schritt 108 um eine Einheit inkrementiert. Wenn umgekehrt δ ≥ 0, wird das
Bit t gleich 1 genommen und die Variable δ wird beim Schritt 109 um
eine Einheit dekrementiert, um den Einfügungsbefehl zum rechten Sohn
zu verbreiten. Beim Schritt 110 werden der Sortierschlüssel K(1st)
und die Referenz R(1st) des im behandelten Knoten, d. h. demjenigen,
zu welchem der Befehl verbreitet wird, enthaltenen Datenelementes gelesen
und den Variablen k' bzw.
r' zugewiesen.
-
Wenn k < k' (Vergleich 111),
enthält
der behandelte Knoten einen Sortierschlüssel, der größer als
das einzufügende
Datenelement ist, so dass das Element w, x, das zur Stufe q + 1
verbreitet wird, beim Schritt 112 gleich demjenigen k', r' genommen wird, das
im behandelten Knoten gelesen wird. Wenn k' ≤ k,
wird das zu übertragende
Element w, x beim Schritt 113 gleich demjenigen k, r genommen,
das im Register 26q beim Schritt 113 gelesen
wird, und dann empfangen die Variablen k, r die Werte der Variablen
k' bzw. r'.
-
Wenn der Schlüssel w des zu verbreitenden Datenelementes
unendlich ist (Vergleich 114), ist es so, dass der Einfügungsbefehl
nicht mehr verbreitet wird. Der Prozessor 21q gibt
dann den Wert 10 (Reinitialisierung) beim Schritt 115 an
die Variable v'. Wenn
der zu übertragende
Schlüssel
w endlich ist, empfängt
die Variable v' den
Wert 01 beim Schritt 116, um einen Einfügungsbefehl anzuzeigen. Der Prozessor 21q kann danach das Register 26q+1 füllen, indem darin Aq+1 = v',
Bq+1 = w, Cq+1 =
x und Dq+1 = st beim Schritt 117 eingeschrieben
werden.
-
Nach dem Schritt 117 erfordert
die Verarbeitung des Einfügungsbefehls
nur, dass die Steuereinheit 21q auf
ihre Schnittstellenregister 26q , 26q+1 zugreift, jedoch nur bei der Speicherzone
20q, die sie behandelt. Beim Schritt 118 wird
der differentielle Zähler Δ(1s) auf
den neuesten Stand gebracht, indem darin der neue Wert der Variablen δ geschrieben wird.
Dann wird beim Schritt 119 das Datenelement des behandelten
Knotens auf den neuesten Stand gebracht, indem dort K(1st) = k und
R(1st) = r geschrieben wird.
-
Um die Verarbeitung des Einfügungsbefehls zu
vollenden, verbleibt dann der Steuereinheit 21q nur
noch, den Wert des dem behandelten Knoten 1st zugeordneten Orientierungsbits
F(1s) auf den neuesten Stand zu bringen. Die Steuereinheit 21q liest zuerst den Sortierschlüssel K(1st)
des Datenelementes, das im Bruderknoten des behandelten Knotens enthalten
ist, und weist ihn der Variablen k' zu. Die Variable f, die in die das
Orientierungsbit F(1s) enthaltende Stelle 23 beim Schritt 126 geschrieben
wird, wird beim Schritt 124 gleich 1 genommen (Orientierung
zum rechten Sohn hin), wenn die Vergleiche 121, 122, 123 zeigen,
dass t = 0 und k' ≤ k, oder dass t
= 1 und k ≤ k'. Im gegensätzlichen
Fall wird beim Schritt 125 f = 0 genommen.
-
Nach dem Schritt 126 hat
der Prozessor 21q aufgehört, den
Befehl Aq zu verarbeiten und kann zum Schritt 100 zurückkehren,
um den nächsten
Befehl zu verarbeiten, der vom Register 26q herkommt.
-
Wenn sich der im Register 26q gelesene Befehl auf den Austausch
eines Datenelementes Bq, Cq von
einem Vaterknoten 1Dq der Stufe q – 1 (Aq = 11) aus bezieht, werden diese Parameter
Bq, Cq und Dq gelesen und den Variablen k, r bzw. s beim
Schritt 130 zugewiesen, dann wird der Wert des den beiden Söhnen des
identifizierten Knotens zugeordneten Orientierungsbits F(1s) beim
Schritt 131 dem Bit t zugewiesen. Die im behandelten Knoten
1st gelesenen Daten K(1st), R(1st) werden dann beim Schritt 132 den
Variablen k' und
r' zugewiesen.
-
Wenn der behandelte Knoten einen
höheren Sortierschlüssel als
denjenigen des im Register 26q gelesenen
Datenelementes enthält
(k < k' beim Vergleich 133),
braucht der Austauschbefehl nicht mehr zu den unteren Stufen des
Baumes verbreitet zu werden, so dass der Befehl v', der in das Register 26q+1 ge schrieben wird, beim Schritt 134 gleich
00 genommen wird (Nichtvorliegen einer Änderung). Bei diesem Schritt 134 wird
das Datenelement w',
x', das in das Register 26q geschickt wird, außerdem gleich demjenigen k,
r genommen, welches den kleinsten Sortierschlüssel hat. Wenn der Vergleich 133 zeigt, dass
k ≥ k', wird der Schritt 134 durch
einen Schritt 135 ersetzt, bei dem der Prozessor 21q w' =
k', x' = r' und v' = 11 nimmt (Verbreitung
des Austauschbefehls).
-
Der Prozessor 21q geht
dann zum Schritt 136 über,
bei dem er das Element w',
x' in die Stellen
Bq und Cq des Schnittstellenregisters 26q schreibt.
-
Zum Verbreiten des Befehls führt die
Steuereinheit 21q danach den Schritt 137 aus,
bei dem sie in das Schnittstellenregister 26q+1 schreibt:
Aq+1 = v', Bq+1 = k, Cq+1 = r
und Dq+1 = st.
-
Wenn der verbreitete Befehl kein
Austauschbefehl ist, d. h. wenn der Vergleich 138 zeigt,
dass v' ≠ 11, wird
die Verarbeitung des Austauschbefehls durch die Steuereinheit 21q nach dem Schreibschritt 137 beendet.
Wenn nicht, geht der Prozessor 21q zum
Schritt 139 über,
bei dem er prüft,
ob der Schlüssel
k, den er zur Stufe q + 1 übertragen
hat, unendlich ist oder nicht.
-
Wenn der Vergleich 139 zeigt,
dass k = ∞, dann
ist der Austauschbefehl tatsächlich
ein einfacher Herausziehungsbefehl und es ist notwendig, den dem
behandelten Knoten zugeordneten differentiellen Zähler Δ(1s) auf
den neuesten Stand zu bringen. Der Wert dieses differentiellen Zählers wird
zuerst gelesen und beim Schritt 140 der Variablen δ zugewiesen.
Wenn die Steuereinheit 21q einen
linken Sohn (t = 0 beim Vergleich
141) behandelt hat, wird die
Variable δ beim
Schritt 142 um eine Einheit dekrementiert, während sie
im gegensätzlichen
Fall beim Schritt 143 um eine Einheit inkrementiert wird.
Der differentielle Zähler Δ(1s) wird
danach beim Schritt 144 entsprechend dem neuen Wert der
Variablen δ aktualisiert.
-
In Anbetracht der Tatsache, dass
der Austausch zweier Elemente mit jeweils einem endlichen Sortierschlüssel die
Werte der differentiellen Zähler nicht
zuweist, werden die Schritte 140 und 144 nicht ausgeführt, wenn
der Vergleich 139 zeigt, dass der übertragene Schlüssel k endlich
ist.
-
Der Prozessor 21q führt dann
beim Schritt 145 die Verarbeitung des Austauschbefehls
fort, indem das Datenelement Bq+1, Cq+1 gelesen wird, das die Steuereinheit 21q+1 (bei ihrem Schritt 136)
in das Register 26q+1 zurückgeschickt
hat, und indem dieses zurückgeschickte
Element den Variablen k und r zugewiesen wird. Die Verarbeitung
des Befehls wird danach durch die Schritte 119 bis 126,
so wie sie vorher beschrieben worden sind, abgeschlossen.
-
Das Ablaufdiagramm der 4A–4C ist
für den
Fall einer beliebigen Stufe q dargestellt worden. Selbstverständlich sind
einige Anpassungen für
die erste Stufe q = 0 und die letzte Stufe q = n – 1 nötig. Für q = 0
versteht sich somit der behandelte Knoten 1st, als sei er immer
die Spitze des Baumes, wobei die Schritte 106–109, 118, 120–127, 131 und 139–144 gestrichen
werden können.
In Anbetracht der Tatsache, dass es nicht erforderlich ist, ein
Register 26n stromabwärts von der ersten Steuereinheit vorzusehen,
können
die Schritte 110 bis 117 gestrichen werden, was
die letzte Stufe n – 1
betrifft, genauso wie die Schritte 102, 137 und 145 und
wie, nur für
den Austausch, der Schritt 119.
-
Die zeitliche Organisation der Parallelarbeit der
aufeinanderfolgenden Steuereinheiten wird durch die Aufteilung des
Zugriffs auf die Schnittstellenregister 26q hergestellt.
In den 4A und 4B ist der Zeitpunkt αq angegeben,
zu dem die Steuereinheit 21q aufgehört hat,
in das Register 26q+1 den Befehl,
den es überträgt, sowie
die zugeordneten Parameter (nach dem Schritt 102, 117 oder 137 entsprechend
dem Befehlstyp) sowie im Falle eines Austauschbefehls den Zeitpunkt βq zu
schreiben, zu dem die Steuereinheit 21q aufgehört hat,
in das Register 26q das Datenelement
Bq, Cq zu schreiben,
das es zur Steuereinheit 21q–1 zurückschickt.
Mit α'q wird
außerdem
der Zeitpunkt bezeichnet, zu dem die Steuereinheit 21q einen neuen Befehl im Register 26q zu lesen beginnt (unmittelbar vor
dem Schritt 100), und mit β'q der Zeitpunkt,
zu dem die Steuereinheit 21q im
Register 26q+1 das durch die Steuereinheit 21q+1 zurückgeschickte Datenelement im
Fall eines Austauschbefehls zu lesen beginnt (unmittelbar vor dem
Schritt 145). Zum Erreichen eines korrekten Pipeline-Betriebes
reicht es aus, die Steuereinheiten in solcher Weise einzurichten,
dass für
jeden Befehl αq ≤ α'q+1 und βq ≤ β'q–1 ist.
-
Um diese beiden Bedingungen zu verifizieren,
können
die Steuereinheiten 21q asynchron
oder synchron sein. Im ersten Fall wird der Pipeline-Betrieb mittels
ausgetauschten Quittungssignalen zwischen den Steuereinheiten sichergestellt.
Nachdem sie ihren Schritt 136 ausgeführt hat, schickt die Steuereinheit 21q ein Quittungssignal zur Steuereinheit 21q–1,
die dann weiß,
dass sie zu ihrem Schritt 145 und zur Fortsetzung der Verarbeitung
des Austauschbefehls schreiten kann. Nachdem sie außerdem den
Schritt 102 oder 137 oder 117 ausgeführt hat,
schickt die Steuereinheit 21q ein
Quittungssignal zur Steuereinheit 21q+1 ,
die dann weiß,
dass sie beginnen kann, den Befehl zu verarbeiten, indem sie zu ihrem
Leseschritt 100 schreitet.
-
Ein synchroner Betrieb der Steuereinheiten 21q ist häufig eine bequemere Implementierung
im Fall, bei dem die Steuereinheiten ausgehend von Netzwerken aus
logischen Gattern realisiert sind. Die Organisation der Pipeline
in diesem Fall ist durch die zeitlichen Steuerdiagramme der 5 veranschaulicht.
-
In dieser Figur stellt jede der vier
Linien den Betrieb der Steuereinheit einer der Stufen dar. Die Buchstaben
RD und WR über
der Zeile, die sich auf die Stufe q bezieht, stellen ein Lesen bzw.
ein Schreiben dar, das durch die Steuereinheit 21q im
Register 26q bewerkstelligt wird,
während
diese gleichen, unterhalb der Zeile gelegenen Buchstaben ein Lesen bzw.
ein Schreiben im Register 26q+1 darstellen.
Die Pfeile zwischen Stufen stellen somit die Befehl- und Parameterübertragungen
mittels der Pipeline-Register dar. Die schraffierten Intervalle
stellen die Zeitpunkte dar, zu denen die Steuereinheit 21q auf die Speicherzone 20q arbeitet,
die sie steuert.
-
Die in 5 angezeigte
Periode Θ1 bestimmt den Takt, mit dem die Sortiervorrichtung
erneut Elemente empfangen und die Elemente mit den kleinsten Schlüsseln liefern
kann. Sie entspricht der Dauer, die jede Steuereinheit benötigt, um
die Gruppe der Vorschriften, die sich auf einen Befehl beziehen,
zu verarbeiten. Es wird beobachtet, dass diese Periode Θ1 wesentlich kürzer als die Dauer des Zyklus Θ2 ist, die erforderlich ist, um die Anweisungsregel
in der Anordnung des Sortierbaumes wiederherzustellen, nachdem ein
neuer Befehl begonnen hat, verarbeitet zu werden. In dem in 5 dargestellten Beispiel entspricht
die erste Periode Θ1 dem Aus tausch des an der Spitze des Baumes
gelegenen Elementes mit einem anderen Element, das sich in der Stufe
1 angeordnet hat (d. h., dass im Fall der 2 sein Schlüssel zwischen 25 und 38 liegt),
und die zweite Periode Θ1 entspricht der Einfügung eines neuen Elementes
bis zur Stufe 2 (der Schlüssel
ist größer oder gleich
demjenigen des bei der vorhergehenden Austauschoperation eingeführten Elementes).
-
Es ist noch anzumerken, dass die
Reaktionszeit Θ0 = β0 –α'0,
damit die Vorrichtung das Datenelement mit dem minimalen Sortierschlüssel in
das Register 260 zurückschickt,
ungefähr
einem Drittel der Periode Θ1 entspricht.
-
Zum Minimieren der Periode Θ1 und mithin zum Maximieren des Arbeitstaktes
der Sortiervorrichtung ist es von Vorteil, in homogener Weise die
Verarbeitungen zu verteilen, die durch die Steuereinheiten in den
Intervallen durchgeführt
werden, welche die Zeitpunkte trennen, zu denen sie auf ihre Schnittstellenregister
zugreifen. Dies kann realisiert werden, indem die Verarbeitung mancher
Vorschriften des Ablaufdiagramms der 4A bis 4C verschoben wird. Wenn
z. B. vor den Zeitpunkten β'q Zeitabläufe 146 (5) existieren, bei denen
die Steuereinheit q warten muss, dass die Steuereinheit 21q+1 das Ausführen ihrer Vorschriftenserie 130–136 abgeschlossen
hat, bevor daraus das Ergebnis im Register 26q+1 zu
lesen, ist es möglich,
diese Zeitabläufe
wenigstens teilweise durch die Ausführung weiterer Vorschriften
auszufüllen,
was es erlaubt, außerdem
Zeit zu gewinnen. Es ist so, dass z. B. im Falle der 4A–4C das
Lesen 120 des Sortierschlüssels des Bruders des behandelten
Knotens bei einer Austauschoperation vor dem Schritt 145 und
bei einer Einfügungsoperation
nach dem Schritt 118 durchgeführt werden könnte. Diese
Optimierungsart hängt weitgehend
von der Architekturwahl ab, die zum Programmieren der Netzwerke
aus logischen Gattern gemacht worden ist.
-
In der vorhergehenden Beschreibung
ist der Fall betrachtet worden, bei dem jede der Steuereinheiten
einer einzigen Stufe des binären
Baumes zugeordnet ist, deren Zugriff für sie reserviert ist, was der
Vorrichtung das beste Geschwindigkeitsleistungsvermögen gibt.
Die Komplexität
der Vorrichtung, gemessen an der Anzahl der zu ihrem Betrieb nötigen logischen
Schaltungen (Steuereinheiten 21q ),
liegt dann bei n, d. h. dem Logarithmus der maximalen Anzahl von
zu sortierenden Elementen.
-
Diese Komplexität kann auf Kosten einer entsprechenden
Verringerung der Geschwindigkeit der Vorrichtung reduziert werden,
indem nicht nur eine, sondern mehrere aufeinanderfolgende Stufen
des Baumes manchen wenigstens aller Steuereinheiten zugeordnet wird
(es gilt m < n).
Die Anzahl von Stufen pro Steuereinheit ist nicht obligatorisch
für alle
Steuereinheiten identisch. Insbesondere wenn die der Stufe 0 zugeordnete
Steuereinheit wenigstens außerdem
weitere Funktionen in Verbindung mit der Umgebung des Sortierbaumes
sicherstellt, könnte vorgesehen
werden, dass diese Steuereinheit eine kleinere Anzahl von Stufen
verwaltet als die anderen.
-
Im Fall, dass eine Steuereinheit
mehreren Stufen des Baumes zugeordnet ist, wird die Verbreitung
eines diesen Stufen entsprechenden Befehls durch diese Steuereinheit
sequentiell verarbeitet.
-
Wie es 6 im
Fall einer den Stufen q bis q + p – 1 des Baumes zugeordneten
Steuereinheit 21q,p zeigt, bilden
nur die Schnittstellenregister 26q , 26q+p zwischen den verschiedenen Steuereinheiten
zugeordneten Stufen Pipeline-Register für den Parallelbetrieb der aufeinanderfolgenden
Steuereinheiten. Die anderen Register 26q+1 ,
..., 26q+p–1 sind nur durch
die Steuereinheit 21q,p zugänglich.
Sie können
zur logischen Schaltung gehören,
die diese Steuereinheit 21q,p bildet,
oder auch zum Speichermodul gehören, der
für diese
Steuereinheit reserviert ist und die Stufen q bis q + p – 1 umfasst.
-
Es ist anzumerken, dass es möglich ist,
auf die differentiellen Zähler Δ(i) in den
Stufen des binären
Baumes zu verzichten, die der m-ten Steuereinheit zugeordnet sind.
Es wird angenommen, dass diese letzte Steuereinheit den p Stufen
n – p
bis n – 1 (1 ≤ p < n – 1) zugeordnet
ist. Wenn ein Einfügungsbefehl
An–p =
01 im Pipeline-Register 26n–p gelesen wird, ist
der Vater, von dem dieser Befehl herkommt, der in diesem Register
identifizierte Knoten 1Dn–p. Wenn für jeden
der 2n–p–1 möglichen
Väter die
letzte Steuereinheit eine betreffende Liste von freien Blättern auf
dem laufenden hält,
die zur Nachkommenschaft dieses Vaterknotens gehören, dann kann diese letzte
Steuereinheit den Einfügungsbefehl
verarbeiten, indem er sequentiell von der Stufe n – 1 aus in
Richtung zur Stufe n – p
verbreitet wird, ausgehend von einem freien Blatt, das zur Liste
gehört,
die dem Vaterknoten zugeordnet ist, der im Feld Dn–p des Pipeline-Registers
identifiziert ist. In jeder dieser Listen kann jedes der Blätter einfach
durch p Bits bezeichnet werden, die mit den n – p – 1 Identifizierungsbits Dn–p das
Blatt in unmehrdeutiger Weise identifizieren. Eine einfache Art
zum Führen
dieser Liste besteht darin, sie nach Last in-First out(LIFO)-Weise
zu organisieren. Die letzte Steuereinheit kann auch den Einfügungsbefehl
von der Stufe n – p
aus in Richtung zur Stufe n – 1
verbreiten, in Anbetracht der Tatsache dass die p Bits, die ein
freies Blatt, ausgehend von einem identifizierten Vater, bezeichnen,
bei jeder Stufe ver wendet werden können, um die Verbreitung des
Einfügungsbefehls
orientieren.
-
Letztlich kann die Sortiervorrichtung
der durch die 2 bis 6 veranschaulichten Art verwirklicht
werden, indem lediglich 2n–p–1 – 1 differentielle Zähler Δ(i) vorgesehen
werden, die Knotenpaaren 2i und 2i + 1 des Baumes für von 1
bis 2n–p–1 – 1 gehendes
i zugeordnet sind.
-
Die 7 bis 11 veranschaulichen eine
andere Ausführungsart
einer Sortiervorrichtung.
-
Zum Erleichtern der Erläuterung
wird erneut der Fall betrachtet, bei dem jede Steuereinheit 21q einer einzigen Stufe q des binären Baumes
zugeordnet ist (m = n). Man wird allerdings verstehen, dass wie vorher
die Architektur dieser Sortiervorrichtung leicht auf den Fall übertragbar
ist, bei dem wenigstens eine der Steuereinheiten mehreren Stufen
zugeordnet ist (m < n).
-
Im Gegensatz zum vorher beschriebenen Ausführungsbeispiel
verwendet dasjenige nach den 7 bis 11 keine differentiellen
Zähler,
um die Einfügungsbefehle
von der Spitze zu den Blättern
des Baumes zu verbreiten. Jeder Speichermodul 20q,
der einer Stufe q des Baumes entspricht, enthält somit die Knoten 2q bis 2q+1 – 1 und
die Stellen
23, um die Orientierungsbits
F(2q–1)
bis F(2q – 1) zu empfangen, aber keine
Stellen 25 zum Empfangen der differentiellen Zähler, wie
das 7 zeigt.
-
Jedes Schnittstellenregister 26q umfasst außer den vier Stellen, welche
die vorher definierten Parameter Aq, Bq, Cq und Dq enthält,
eine zusätzliche Stelle,
die ein Bit Eq empfängt, das bei der Verbreitung
eines Einfügungsbefehls
von einem Knoten 1Dq der Stufe q – 1 aus
den Sohnknoten der Stufe q bezeichnet, zu dem hin dieser Befehl
verbreitet wird. Wenn Eq = 0, wird somit
der Einfügungsbefehl
zum linken Sohn 1Dq0 verbreitet, während der
Einfügungsbefehl,
wenn Eq = 1, zum rechten Sohn 1Dq1 verbreitet wird.
-
Im Register 26q werden
die Identifizierung Dq des Vaterknotens
und das Bit Eq zur Bezeichnung des Sohnknotens
durch die q höchstgewichtigen
Bits des Inhalts Gq eines Blattbezeichnungsfeldes
von n – 1
Bits gebildet. Der Inhalt Gq dieses Blattbezeichnungsfeldes
bezeichnet bei der Verbreitung eines Einfügungsbefehls eines der freien
Blätter
des binären
Baumes, in dessen Richtung dieser Befehl verbreitet wird. Die binäre Darstellung
dieses freien Blattes ist 1Gq. In Anbetracht
der Tatsache, dass das bezeichnete Blatt frei ist, hat man die Gewissheit,
dass das eingefügte
Element seinen Platz über
die Bahn finden wird, die von der Spitze des Baumes zum bezeichneten
freien Blatt geht, unter der Bedingung, dass kein weiterer Einfügungsbefehl
zu diesem gleichen Blatt sich gerade stromabwärts beim binären Baum
in Verbreitung befindet.
-
Zum Erfüllen dieser Bedingung empfängt das
Blattbezeichnungsfeld des Schnittstellenregisters 261 zwischen den Stufen 0 und 1 seinen
Wert G1 der der letzten Stufe des Baumes
zugeordneten Steuereinheit 21n–1. Die Steuereinheit
21n–1 hält eine erste
Liste von freien Blättern,
z. B. mittels eines Schieberegisters 30, so wie es in 8 schematisch dargestellt
ist. Dieses Register enthält
eine Anzahl n' Stellen
von n – 1
Bits und führt
eine Schiebeoperation bei jeder Befehlsperiode Θ1 durch.
Jegliches Blatt, in dessen Richtung ein Einfügungsbefehl imstande ist, im
Verbreitungsablauf im binären
Baum zu sein, gehört
zu dieser ersten Liste von n' freien
Blättern.
Solange der Befehl An–1, der durch die letzte
Steuereinheit im Schnittstellenregister 26n–1 gelesen
wird, kein Einfügungsbefehl
(An–1 ≠ 01) ist,
wird das Schieberegister 30 auf sich selbst rückgekoppelt,
wie das 8 zeigt, so
dass es alle n' Perioden Θ1 die gleiche Blattbezeichnung liefert. Diese
Bezeichnung G1, von der bekannt ist, dass
sie verschieden von jeder von denjenigen der Blätter ist, zu denen Einfügungsbefehle imstande
sind, im Baum im Verbreitungsablauf zu sein, wird in das entsprechende
Feld des Schnittstellenregisters 261 eingeschrieben.
Wenn dagegen ein Einfügungsbefehl
An–1 =
01 zur letzten Stufe des Baumes gelangt, dann wird ein neues freies
Blatt P, das durch die letzte Steuereinheit einer zweiten Liste
freier Blätter
auf eine Weise herausgezogen wird, die später erläutert wird, in das Schieberegister 30 und
in das Schnittstellenregister 261 eingeführt.
-
Zur Erläuterung dieses Betriebs nimmt 9 in einer vereinfachten
Form die zeitlichen Steuerdiagramme von 5 für
den Fall wieder auf, dass die Vorrichtung nacheinander Einfügungsbefehle
neuer Elemente im Baum verarbeitet. In dieser 9 bezeichnet jedes Pfeilende einen Zeitpunkt α'q des
Beginns der Verarbeitung eines Einfügungsbefehls durch eine Steuereinheit 21q . Somit empfängt die Steuereinheit 210 zu den Zeitpunkten α'0 die
passenden Befehle und Parameter A0, B0, C0 von der Umgebung
der Vorrichtung aus, und zu den Zeitpunkten α'q mit q ≥ 1 empfängt die
Steuereinheit 21q die Befehle und
Parameter Aq, Bq,
Cq und Gq im Register 26q und bringt die entsprechenden Verarbeitungen
in Gang. In dem in 9 dargestellten
zeitlichen Ablaufdiagramm gelangt jeder Einfügungsbefehl, für den die letzte
Steuereinheit 21n–1 die entsprechende
Bezeichnung G1 eines freien Blattes in das
Register 261 geschrieben hat, an
diese Steuereinheit in das Register 26n–1 am
Schluss zweier Perioden θ1. Demzufolge reicht es in diesem Beispiel
aus, n' = 2 Stellen
in das Schieberegister 30 zu nehmen.
-
In diesem gleichen Beispiel (siehe
auch 1) zeigt 8 die n' = 2 Blätter 9 und 13 (bezeichnet mit
001 bzw. 101, da die binären
Darstellungen der Nummern 9 und 13 1001 und 1101 sind), die in der
im Register 30 gehaltenen Liste enthalten sind. Das Blatt
9 ist also im Feld G1 beim vorletzten Befehl bezeichnet
worden. Wenn sich dieser Befehl auf die Einfügung eines neuen Elementes
bezieht und beim Blatt 9 endet (d. h. An–1 =
01 in der laufenden Betriebsperiode des letzten Prozessors), wird
das Blatt 9 aus der Liste und aus dem Register 30 gestrichen und
durch ein neues Blatt (10, 11 oder 15 im Falle der 1) ersetzt, das mit P bezeichnet ist.
Wenn nicht, bezieht sich dieser vorletzte Befehl entweder nicht auf
eine Einfügung
oder bezieht sich auf die Einfügung
eines Datenelementes, das seinen Platz stromaufwärts der Stufe n – 1 gefunden
hat, so dass das Blatt 9 im Register 30 beibehalten wird
und im Feld G1 für den nächsten Befehl erneut bezeichnet
wird.
-
In der Praxis wird die Anzahl n' immer geringer als
die Anzahl n von Stufen im binären
Baum sein können.
In Anbetracht der Tatsache, dass diese Ausführungsart der Sortiervorrichtung
voraussetzt, dass der binäre
Baum zu jedem Zeitpunkt wenigstens n' freie Blätter hat, wird die maximale
Anzahl von Datenelementen, die die Vorrichtung zu sortieren fähig ist,
in Bezug auf die vorher beschriebene Vorrichtung um eine stets geringere
Menge als 2n' reduziert,
so dass das Sortierfassungsvermögen
der Vorrichtung nicht in bedeutender Weise beeinträchtigt wird,
wenn die Stufenanzahl nicht zu gering ist. Wenn z. B, die Vorrichtung
n = 12 Stufen mit n' =
4 umfasst, kann sie bis zu N = 4095 Elemente im Fall der Verwendung von
differentiellen Zählern
sortieren und bis zu N = 4088 Elemente im Fall der Verwendung von
Listen mit freien Blättern,
wobei der Unterschied zwischen diesen beiden Werten von N nicht
bedeutend ist.
-
Die 10A und 10B, die mit 4C zu vervollständigen sind, zeigen ein Ablaufdiagramm,
das demjenigen der 4A bis 4C gleicht (die gleichen zahlenmäßigen Referenzen
sind zum Bezeichnen ähnlicher
Schritte verwendet) und das die Operationen detailliert, die durch
eine Steuereinheit 21q der in 7 dargestellten Art mit
q < n – 1 bei
der Verarbeitung eines Befehls durchgeführt werden.
-
Im Verhältnis zum Ablaufdiagramm der 4A, 4B und 4C ist
dasjenige der 10A, 10B und 4C durch die Beseitigung aller Operationen,
die sich auf die differentiellen Zähler beziehen, vereinfacht
worden. Bei den Schritten 105 und 117, die bei der
Verarbeitung eines Einfügungsbefehls
ausgeführt
werden, ist es die Anordnung des Blattbezeichnungsfeldes Gq oder Gq+1, das
im Schnittstellenregister 26q oder 26q+1 gelesen oder geschrieben wird, und nicht
nur die Identifizierung des Vaterknotens Dq oder Dq+1. Bezüglich
des vorherigen Beispiels erhält
man eine Vereinfachung des Aufbaus der Steuereinheiten und eine
Reduzierung des Speicherraumes, zu dem jede von ihnen jeweils fähig sein
muss zuzugreifen.
-
Die 11A und 11B, die mit 4C zu vervollständigen sind, zeigen die Operationen,
die durch die letzte Steuereinheit relativ zur Stufe n – 1 des Baumes
durchgeführt
werden. Der Schritt 150, 151 oder 15,
der zwischen den Zeitpunkten βn–1 und αn–1 ausgeführt wird,
entspricht im Blattbezeichnungsfeld des Registers 261 dem Schreiben der n – 1 nied rigstgewichtigen
Bits G1 = T(i) der Nummer des Blattes vom
Rang i (0 ≤ i < n') in die Liste freier
Blätter,
die dem Inhalt des Schieberegisters 30 entsprechen, das in 8 dargestellt ist. Die Verarbeitung
von jedem der Befehle relativ zur letzten Stufe n – 1 wird
in allen Fällen
durch eine Inkrementierung, modulo n', des Zählers i beim Schritt 153 abgeschlossen,
was einer Schiebeoperation im Register 30 entspricht.
-
Die Steuereinheit 21n–1 hält außerdem eine zweite
Liste freier Blätter,
die sie z. B. im Last in-Last out(LIFO)-Modus verwaltet. Das erste
Blatt dieser zweiten Liste wird durch einen Zeiger P von n – 1 Bits bezeichnet,
der in einem Register der letzten Steuereinheit oder in ihrer Speicherzone
20n–1 gespeichert wird.
Die binäre
Darstellung der Nummer dieses ersten Blattes ist 1P. Jedes Blatt
der zweiten Liste enthält
ein Datenelement, dessen Sortierschlüssel unendlich ist, und es
wird z. B. der Speicheranteil benutzt, welcher der zugeordneten
Referenz entspricht, um einen Folgezeiger gleich der Bezeichnung über n – 1 Bits
des folgenden Blattes der zweiten Liste zu speichern (man könnte auch
den Anteil benutzen, der dem Schlüssel entspricht, wenn ein Bit
zum Identifizieren der unendlichen Schlüssel reserviert ist).
-
Wenn ein Einfügungsbefehl zur Steuereinheit
der letzten Stufe in das Schnittstellenregister 26n–1 gelangt
(An–1 =
01), muss das mit Gn–1 bezeichnete freie
Blatt gefüllt
werden, um das neue Datenelement zu enthalten. Demzufolge sind die
Schritte 110 bis 117 des Ablaufdiagramms der 10A und 10B nicht notwendig. Dem Leseschritt 105 folgt
ein Schritt 155, bei dem die Steuereinheit 21n–1 in
die Variable h den Folgezeiger R(1P) liest, der im Speicheranteil
enthalten ist, welcher der Referenz des Elementes entspricht, das
im ersten freien Blatt der zweiten Liste enthalten ist (Schritt 155).
Beim folgenden Schritt 156 bringt die Steuereinheit 26n–1 die
beiden Listen freier Blätter
auf den neuesten Stand. Sie nimmt aus der ersten Liste das mit Gn–1 bezeichnete freie
Blatt heraus, indem sie es in der Zone T(i) durch den Zeiger P des
ersten Blattes der zweiten Liste ersetzt; sie ersetzt danach diesen
Wert P durch denjenigen des Zeigers, der beim Schritt 155 gelesen
wird. Der Prozessor 21n–1 schließt die Verarbeitung
des Einfügungsbefehls
ab, indem der vorher erwähnte Schritt 150 und
dann die Schritte 119 bis 126 der 4C und der Schritt 153 vorgenommen
werden.
-
Zum Verarbeiten eines Austauschbefehls (An–1 =
11) führt
die Steuereinheit der letzten Stufe zunächst die vorher kommentierten
Schritte 130 bis 136 aus. Der Schritt 137 ist
nicht erforderlich und wird durch den vorher erwähnten Schritt 151 ersetzt. Wenn
der Sortierschlüssel
k = Bn–1,
der als Austausch von der Stufe n – 2 aus größer als derjenige K(1st) ist, der
im behandelten Blatt gelesen wird (v' = 11 beim Vergleich 138),
wird dieser Schlüssel
k beim Schritt 139 mit dem unendlichen verglichen. Wenn
dieser Schlüssel
k endlich ist, wird die Verarbeitung des Austauschbefehls durch
die Schritte 119 bis 126 der 4C und durch den Schritt 153 abgeschlossen. Wenn
nicht, bezieht sich der Befehl auf eine einfache Herausziehung und
gibt ein vorher belegtes Blatt frei. Beim Schritt 157 wird
dieses Blatt auf den neuesten Stand gebracht, indem dort ein unendlicher
Sortierschlüssel
und anhand der Referenz der Wert P des Zeigers des ersten Blattes
der zweiten Liste geschrieben wird. Das zugeordnete Orientierungsbit F(1s)
empfängt
den komplementären
Wert zu demjenigen, der beim Schritt 131 gelesen wird.
Vor Durchlaufen des abschließenden
Schrittes 153 beendet die Steuereinheit 26n–1 die
Verarbeitung des Herausziehungsbefehls beim Schritt 158,
indem der Zeiger P des ersten Blattes der zweiten Liste mit der
binären Bezeichnung
st des freigegebenen Blattes auf den neuesten Stand gebracht wird. Bei
der Initialisierung der Vorrichtung gemäß den 7 bis 11 werden
die beiden Listen freier Blätter
z. B. in folgender Weise initialisiert: T(i) = i, mit der Basis
2, für
0 ≤ i < n'; P = n', mit der Basis 2;
und R(1i) = i + 1, mit der Basis 2, für n' ≤ i <2n–1.
-
In dem durch die 8, 11A und 11B dargestellten Ausführungsbeispiel
hält die
letzte Steuereinheit 21n–1 die "erste Liste" und die "zweite Liste" mittels eines Schieberegisters 30 und
eines LIFO-Stapelspeichers. Es ist anzumerken, dass andere logische
Organisationen vergleichbarer Komplexität angewendet werden könnten. Beispielsweise
könnte die
Steuereinheit 21n–1 eine im First-in-First-out(FIFO)-Modus
verwaltete logische Warteschlange halten, die die Nummern der freien Blätter enthält, wobei
sichergestellt wird, dass diese FIFO-Warteschlange stets wenigstens n' Nummern freier Blätter enthält. Unter
diesen Umständen
wird die "erste
Liste" durch die
n' letzten Stellen
der Warteschlange gebildet und die "zweite Liste" durch die vohergehenden Stellen der
Warteschlange.
-
In den vorher beschriebenen Sortiervorrichtungen
entspricht die Ordnungsbeziehung, gemäß welcher die Schlüssel sortiert
werden, d. h. untereinander bei den Schritten 111, 122, 123 und 133 verglichen
werden, der zunehmenden Ordnung der ganzen natürlichen Zahlen. Es ist zu verstehen,
dass es nicht darauf ankommt, welche Ordnungsbeziehung, für die Vergleiche
mühelos
mittels einfacher logischer Schaltungen ausgeführt werden könnten, zum
Sortieren der Elemente in einer solchen Vorrichtung verwendet werden
könnte.
-
Wenn z. B. jeder Sortierschlüssel K(i)
eine zeitliche Bezeichnung ist, die einen zukünftigen Zeitpunkt definiert,
zu dem es nötig
ist, die entsprechende Referenz R(i) suchen zu ge hen, kann die Sortiervorrichtung
als Verzögerungsvorrichtung
dienen, um die zeitliche Prozessanweisung zu steuern. Der Schlüssel des
an der Spitze des Baumes gelegenen Elementes wird dann mit dem laufenden
Zeitpunkt verglichen, um dieses Element auszutauschen oder herauszuziehen,
wenn der laufende Zeitpunkt erreicht wird.
-
Wenn bei dieser Anwendung die Zeitwerte durch
einen zyklischen Zähler,
der sich von 0 bis 2L – 1 ändert, über L Bits codiert werden,
kann die Ordnungsbeziehung zwischen zwei Schlüsseln k und k' von L Bits sein:
k ≤ k', wenn und nur wenn
0 ≤ (k' – k)(mod 2L) < 2L–1.
Mit anderen Worten, es reicht aus, z. B. beim Schritt 122,
die Differenz k' – k über L Bits zu
berechnen (d. h., indem der höchstgewichtige Übertrag
ignoriert wird) und zu prüfen,
ob das Bit vom Gewicht 2L–1 dieser Differenz 0(k ≤ k') oder 1(k > k') ist. Die chronologische Ordnung der
Schlüssel
wird dann eingehalten, sofern kein Schlüssel einen Zeitpunkt früher um mehr
als 2L–1 oder
später
um mehr als 2L–1 – 1 bezeichnet, eine Bedingung,
die leicht durch die Wahl einer ausreichend großen Zahl L zu erfüllen ist.
-
Es wird nun eine Anwendung der vorher
beschriebenen Sortiervorrichtungen bei einem Abstandshalter von
ATM-Zellen beschrieben.
-
Die ATM-Zellen sind Informationspakete
von 53 Bytes, die über
physikalische Verbindungen mit großer Geschwindigkeit (Übertragungsrate
von 155 oder 622 Mbit/s) übertragen
werden. Jede physikalische Übertragung
unterstützt
ein Zellenvielfach, das zu verschiedenen virtuellen Verbindungen
gehört. Die
virtuelle Verbindung, von der jede Zelle abhängig ist, wird durch ein Paar
Identifizierer VPI-VCI identifiziert, die im Vorspann (Header) der
Zelle enthalten sind. Manche Ausstattungen unterscheiden die virtuellen
Verbindungen gemäß dem virtuellen
Pfadidentifizierer (VPI: "Virtual
Path Identifier"),
während
andere Ausstattungen die virtuellen Verbindungen auf der Grundlage
der virtuellen Kanalidentifizierer (VCI: "Virtual Channel Identifier") oder der beiden
Identifizierer VPI, VCI unterscheiden.
-
In der vorliegenden Beschreibung
wird jede ATM-Zelle betrachtet, als wäre sie von einer virtuellen
Verbindung abhängig,
die durch eine interne Identität
IdCx mit der Ausstattung identifiziert wird, die mit dem Abstandshalter
versehen ist. Diese interne Identität kann VPI, VCI, dem Paar VPI-VCI
oder auch bequemer einer spezifischen Identität entsprechen, die für die Ausstattung
geeignet ist und eine kleinere Anzahl von Bits umfasst als das VPI-VCI,
um den Zugang bei den Speichermodulen annehmbarer Größe zu erleichtern.
Eine geeignete Art, solche Identitäten IdCx den ATM-Zellen zuzuordnen,
ist in der französischen
Patentanmeldung Nr. 97 01222 beschrieben.
-
Der ATM-Abstandshalter ist eine Einheit, dessen
Hauptfunktion das Regulieren der Zellendurchsatzrate auf den verschiedenen
Verbindungen ist, die durch eine physikalische Verbindung unterstützt werden.
Im allgemeinen verhandelt jede Quelle, die auf eine virtuelle Verbindung
aussendet, mit dem Operator einen Durchsatzraten-Spitzenwert. Wenn
dieser Durchsatzraten-Spitzenwert
durch die Quelle nicht beachtet wird, drohen Stauungen im Netz zu
entstehen und der Operator ist befugt, Zellen auf der Verbindung
zu vernichten.
-
Bei einem Abstandshalter ist jeder
Verbindung IdCx ein Abstandsintervall T eingeräumt, so dass zwei aufeinanderfolgende
Zellen, die sich auf die gleiche virtuelle Verbindung beziehen,
im allgemeinen um wenigstens das Zeitintervall T getrennt sind,
das in typischer Weise dem Kehrwert des Durchsatzraten-Spitzenwertes
entspricht. Es wird dann von einem realen Abstandshalter gesprochen. Der
reale Abstandshalter berechnet für
jede Zelle eine theoretische Aussendeuhrzeit TET und speichert dann
die Zelle im Speicher, um sie nur zur gewünschten Zeit auszusenden. Das
Abstandsintervall T wird dann für
alle Verbindungen beachtet. Bei einem sogenannten virtuellen Abstandshalter
wird zunächst
für jede
Zelle eine theoretische Aussendeuhrzeit TET entsprechend den gleichen
Methoden wie vorstehend berechnet, dann wird die Zelle im Speicher
gespeichert. Der Unterschied zum realen Abstandshalter besteht darin,
dass der virtuelle Abstandshalter die Zellen unmittelbar in der
Reihenfolge der theoretischen Aussendeuhrzeiten aussendet. Der virtuelle
Abstandshalter verschlechtert die Schwankung der Zellenverzögerungen
nicht (CDV: "Cell
Delay Variation").
Indessen reduziert er die mögliche
Verschlechterung der Durchsatzrate durch die stromaufwärts des
Abstandshalter gelegenen Warteschlangen nicht.
-
Die Abstandshaltefunktion wird häufig mit der
Polizeifunktion verbunden, die darin besteht, Zellen zu eliminieren,
die entsprechend einer virtuellen Verbindung mit einer höheren Durchsatzrate
als der Spitzenwert-Durchsatzrate übertragen werden, wenn dieser
Durchsatzratenüberschuss
so ist, dass es nicht mehr möglich
ist, ein Ausgabevielfach zu erzeugen, bei dem die für die Verbindung
relevanten Zellen korrekt beabstandet sind, ohne dass CDV einen Grenzwert überschreitet,
der von der mit dem Operator ausgehandelten Dienstgüte abhängt. Die
Polizeifunktion greift gewöhnlich
in die Funktion der Berechnung der theoretischen Aussendeuhrzeiten
TET der Zellen ein.
-
Eine herkömmliche Art, den Zellen theoretische
Aussendeuhrzeiten einzuräumen
und die Polizeifunktion sicherzustellen; besteht im Anwenden des
GCRA-Algorithmus ("Generic
Cell Rate Algorithm"),
der im Annex 1 der Recommandation I.371 des ITU-T (siehe M. DE PRYCKER: "Asynchronous Transfer
Mode, Solution for Broadband ISDN", 2. Ausgabe, 1993, Kapitel 7, Absatz
7.3.4, Seiten 292–293)
definiert ist. Für
jede virtuelle Verbindung verifiziert dieser Algorithmus stets die
folgende Beziehung: ta ≤ TET ≤ ta + τ, wobei ta
die Ankunftsuhrzeit der Zelle, auf die ihre theoretische Aussendeuhrzeit
TET berechnet ist, und τ die
CDV-Toleranz der Verbindung bezeichnet.
-
Beim Abstandshalter der 12 wird die Polizeifunktion
durch einen Modul 40 auf der Grundlage der laufenden Uhrzeit
und der Identität
IdCx der Verbindung sichergestellt, von der diese Zelle abhängig ist.
Dieser Modul 40 liefert an die Abstandssteuereinheit 41 die
theoretische Aussendeuhrzeit TET, die in rekursiver Weise für jede Zelle
berechnet wird, sowie das Abstandsintervall T, das der Verbindung
zugeordnet ist, von der diese Zelle abhängig ist. Auf der Grundlage
dieser Informationen und der Verbindungsidentitäten IdCx überwacht die Abstandshalter-Steuereinheit 41 die
Verwaltung des Zellenspeichers 42, in dem die eintretenden
Zellen geschrieben und die austretenden Zellen gelesen werden, und verwaltet
außerdem
einen Zeigerspeicher 43 und die Sortiervorrichtung 44.
-
Durch NCX wird die Anzahl von virtuellen Verbindungen,
die von IdCx = 1 bis IdCx = NCX numeriert sind und die der Abstandshalter
zu behandeln fähig
ist, und durch NCE die Anzahl von Zellen bezeichnet, die der Speicher 42 fähig ist,
an den vorher festgelegten Stellen Ch_cell(1) bis Ch_cell(NCE) aufzunehmen.
-
Im dargestellten Ausführungsbeispiel
bestehen der Zellenspeicher 42 und der Zeigerspeicher 43 in
zwei verschiedenen Speichermodulen, von denen der erste durch eine
Einheit 46 unter der Steuerung der Steuereinheit 41 verwaltet
wird. Es versteht sich jedoch, dass andere Ausführungsformen möglich sind.
Insbesondere könnten
die Speicher 42 und 43 in einem einzigen Speichermodul
ausgeführt
werden, in dem die Zugänge durch
die Steuereinheit 41 gesteuert werden würden. Es ist so, dass ein RAM-Speichermodul
von 2 Megabyte es z. B. erlaubt, bis zu NCE = 32 000 relevante Zellen
von NCX = 4 096 verschiedenen virtuellen Verbindungen sowie die
zur Verwaltung des Zellenspeichers nötigen Zeiger zu speichern.
-
13 zeigt
ein Zellentaktsignal CKC, auf dessen Grundlage ein Sequenzer 47 des
Abstandshalters die erforderlichen Taktsignale an den Modul 40,
an die Abstandssteuereinheit 41, an die Sortiervorrichtung 44 und
an die Verwaltung 46 des Zellenspeichers liefert (12). Die Periode dieses
Taktsignals beträgt
2,7 μs im
Falle einer Verbindung mit 155 Mbit/s. Bei jeder Periode dieses
Signals CKC muss der Abstandshalter fähig sein, eine in den Speicher 42 geschriebene
Zelle zu empfangen (dritte Zeile der 13)
und eine im Speicher 42 gelesene Zelle auszusenden (vierte
Zeile der 13). Bei dem
in 13 dargestellten
Taktbeispiel ist jede Zellenperiode in zwei aufeinanderfolgende
Phasen gleicher Dauer geteilt, die erste für den eventuellen Empfang einer
eintretenden Zelle und die zweite für die eventuelle Aussendung
einer austretenden Zelle.
-
In der ersten Phase jeder Zellenperiode
liefert die Abstandssteuereinheit 41 der Verwaltung 46 eine
Ausgabeadresse a in den Zellenspeicher 42, ausgehend von
dem diese das Schreiben der 53 Bytes der eintretenden Zelle steuert.
In der zweiten Phase dient die durch die Steuereinheit 41 gelieferte Ausgabeadresse
a der Verwaltung 46 zum Steuern des Lesens der 53 gespeicherten
Bytes, ausgehend von der Adresse a im Speicher 42, um die
austretende Zelle zu liefern. Zum Ende der vorliegenden Darlegung
wird betrachtet werden, dass die Adresse a der Nummer der Stelle
Ch_cell(a) des Speichers 42 (1 ≤ a ≤ NCE) entspricht, in dem die
Zelle geschrieben oder gelesen wird, und dass durch Übereinkunft a
= 0 für
die Verwaltung 46 bedeutet, dass sie nicht den Zugang in
den Speicher 42 in der be trachteten Phase steuern soll
(keine eintretende Zelle oder keine auszusendende Zelle im Verlauf
der Zellenperiode).
-
Der Zellenspeicher 42 ist
in der Weise organisiert, dass er für jede virtuelle Verbindung,
für die
er Zellen enthält,
eine Stellenliste enthält,
in der diese Zellen im First-in-First-out-(FIFO)Modus
eingereiht werden. Diese Listen werden durch die Steuereinheit 41 mittels
des Zeigerspeichers 43 verwaltet.
-
Die Zeiger des Speichers 43 umfassen
einen Freistellenzeiger Ptr libre, NCX Listenkopf-Zeiger Ptr_tête(IdCx)
für 1 ≤ IdCx ≤ NCX, NCX
Listenende-Zeiger Ptr_fin(IdCx) für 1 ≤ IdCx ≤ NCX und NCE Folgezeiger Ptr_suite(i)
für 1 ≤ i ≤ NCE, die
jeweils den Stellen Ch_cell(1) bis Ch_cell(NCE) zugeordnet sind.
Jede Identität
IdCx einer virtuellen Verbindung, für die der Speicher 42 keine
Zelle zu einem gegebenen Zeitpunkt enthält, hat ihren Listenende-Zeiger Ptr_fin(IdCx)
zu diesem Zeitpunkt bei null, was eine leere Liste anzeigt (dies
ist der Fall für
IdCx = 2 in dem in 12 dargestellten
Beispiel). Wenn nicht, ist die Nummer i der Stelle Ch_cell(i), an
der die Zelle gespeichert ist, die vor der längsten Zeit über die
Verbindung IdCx empfangen worden ist, gleich dem Listenkopf-Zeiger
Ptr tete(IdCx) und die Nummer von derjenigen, an der die Zelle,
die vor der kürzesten Zeit über die
Verbindung IdCx empfangen worden ist, ist gleich dem Listenende-Zeiger Ptr fin(IdCx).
Die FIFO-Liste, die sich auf eine Verbindung IdCx bezieht, ist mittels
Folgezeigern verkettet: der Folgezeiger Ptr_suite(i), der einer
Stelle Ch_cell(i) zugeordnet ist, die kein Listenende ist, bezeichnet
die Stelle Ch_cell(Ptr_suite(i)), die ihr in ihrer Liste folgt.
Wenn die Stelle Ch_cell(i) ein Listenende ist, dann wird Ptr suite(i)
= 0 vorgeschrieben. Im Beispiel der 12 ist die
Liste, die sich auf IdCx = 1 bezieht, Ch_cell(NCE – 1), Ch_cell(1)
und Ch_cell(3) und diejenige, die sich auf IdCx = NCX bezieht, reduziert
sich auf die Stelle Ch_cell(6). Die Stellen des Speichers 42,
die nicht durch die auszusendenden Zellen belegt sind, bilden eine
LIFO-Liste freier Stellen, von denen die erste durch den Zeiger
Ptr_libre und die folgenden durch die aufeinanderfolgenden Folgezeiger
bezeichnet werden. Im Beispiel der 12 ist
die Liste freier Stellen in der Ausgangsordnung Ch_cell(5), Ch_cell(NCE)
und Ch_cell(2).
-
Die Spitze des Sortierbaumes des
Abstandshalters der 12 ist
durch die Abstandssteuereinheit 41 zugänglich, die die Behandlungen
der Steuereinheit 210 sicherstellt,
die der Stufe 0 (2 bis 11) zugeordnet ist. Das an
der Spitze des Baumes gelegene Datenelement K(1), R(1) kann dann
im Zeigerspeicher 43 wie dargestellt gespeichert werden,
oder auch in einem speziellen Register der Steuereinheit 41.
Die Steuereinheit 41 tauscht die Befehle und Parameter
mit den Stufen 1 bis n – 1
der Sortiervorrichtung 44 über das Schnittstellenregister 261 aus, das im betrachteten Beispiel
mit demjenigen übereinstimmt,
das unter Bezugnahme auf die 7 beschrieben
worden ist.
-
Jedes an die Sortiervorrichtung 44 gelieferte Datenelement
besteht für
den Sortierschlüssel
K(i) in der theoretischen Aussendeuhrzeit einer Zelle, die an einer
Stelle des Speichers 42 gespeichert ist, der einen Listenkopf
bildet, und für
die Referenz R(i) in der Identität
IdCx der virtuellen Verbindung, von der diese Zelle abhängig ist.
Der Schlüssel
K(i) ist also eine zeitliche Bezeichnung, die, wie vorher erläutert worden
ist, durch einen zyklischen Zähler
mit L Bits definiert werden kann. Ein Zähler mit z. B. L = 16 Bits plus
einem Bit zum Unterscheiden der unendlichen Schlüssel eignet sich für die Anwendung
bei einem ATM-Abstandshalter. Die Referenzen R(i) können über 12 Bits
für NCX
= 4096 Verbindungen gehen.
-
Wenn der Abstandshalter ein realer
Abstandshalter ist, vergleicht die Steuereinheit 41 den an
der Spitze des Baumes vorliegenden Schlüssel K(1) mit dem laufenden
Zeitpunkt ta und liefert a = Ptr_tête(R(1)) an die Verwaltung 46,
wenn K(1) ≤ ta, damit
die Zelle ausgesendet wird, die aus denjenigen, die in den Listenköpfen gelegen
sind, die kleinste theoretische Aussendeuhrzeit hat. Im Falle eines virtuellen
Abstandshalters wirkt die Steuereinheit 41 auf gleiche
Weise, aber ohne Vergleich mit dem laufenden Zeitpunkt: eine Zelle
wird bei jeder Periode ausgesendet, sobald K(1) < ∞.
-
Beim Eintreffen einer Zelle, die
von einer Verbindung IdCx abhängig
ist, deren Stellenliste leer ist (Ptr_fin(IdCx) = 0) wird diese
Zelle an der Stelle Ch_cell(Ptr_libre) gespeichert, wird die Liste
der freien Stellen auf den neuesten Stand gebracht und steuert die
Steuereinheit 41 die Einfügung eines Datenelementes,
dessen Referenz dieser IdCx entspricht und dessen Sortierschlüssel der
durch den Modul 40 für
diese Zelle berechnete TET ist, im Sortierbaum.
-
Das Eintreffen einer Zelle, die von
einer Verbindung IdCx abhängig
ist, deren Stellenliste nicht leer ist, ändert den Inhalt des Sortierbaumes
nicht und benötigt
nur eine Speicherung an der Stelle Ch_cell(Ptr_libre) und eine Aktualisierung
der Liste der freien Stellen und der der Verbindung IdCx zugeordneten
Liste.
-
Die Aussendung einer Zelle, die von
einer Verbindung IdCx abhängig
ist, deren Stellenliste diese einzige Zelle enthält, hat die einfache Herausziehung
des entsprechenden Elementes des Sortierbaumes zur Folge, was auf
einen Austausch mit einem Element mit unendlichem Schlüssel hinausläuft.
-
Die Aussendung einer Zelle, die von
einer Verbindung IdCx abhängig
ist, deren Stellenliste eine oder mehrere Zellen nach dieser enthält, hat
den Austausch zwischen dem entsprechenden Element des Baumes und
einem neuen Element zur Folge, dessen Referenz diesem IdCx entspricht
und dessen Sortierschlüssel
die theoretische Aussendeuhrzeit ist, die der an zweiter Position
in der Liste gespeicherten Zelle zugewiesen ist, d. h. an der Stelle Ch_cell(Ptr_suite(Ptr_tête(IdCx))).
-
In diesem letzteren Fall kann die
den Schlüssel
des neuen Elementes bildende, theoretische Aussendeuhrzeit jene
sein, die durch den Modul 40 für die im neuen Listenkopf gespeicherte
Zelle geliefert wird. Es ist dann nützlich, die vom Modul 40 gelieferten
TET-Uhrzeiten je nach Eintreffen der Zellen zu speichern. Es kann
aber auch vorgezogen werden, dass die Steuereinheit 41 eine
theoretische Aussendeuhrzeit der Zelle in dem Augenblick neuberechnet, in
dem sie das neue Datenelement an die Sortiervorrichtung 44 liefert.
-
Zu diesem Zweck enthält der Speicher 43 eine
Tabelle, in welcher die Werte TT(IdCx) der Abstandsintervalle T,
die den verschiedenen virtuellen Verbindungen IdCx eingeräumt werden,
Werte, die die Steuereinheit 41 vom Modul 40 in
den Augenblicken empfängt,
in denen Zellen entsprechend den betroffenen Verbindungen ankommen.
Wenn K(1) ≤ ta,
sendet der reale Abstandhalter die in Ch_cell(Ptr_tête(R(1)))
gespeicherte Zelle aus und steuert im Sortierbaum einen Austausch
des an der Spitze gelegenen Elementes K(1), R(1) mit einem neuen
Element K(1) + TT(R(1)), R(1). Mit anderen Worten, die theoretische
Aussendeuhrzeit der im neuen Listenkopf gespeicherten Zelle wird
gleich derjenigen der ausgesendeten Zelle genommen, vermehrt um
das Zeitintervall TT(IdCx), das der betroffenen Verbindung eingeräumt ist.
-
Diese Art des Vorgehens weist zwei
Vorteile auf. Der erste ist, dass, wenn der Modul 40 für zwei aufeinanderfolgende
Zellen, die von einer Verbindung IdCx abhängig sind, um mehr als TT(IdCx)
auseinanderliegende theoretische Aussendeuhrzeiten TET auf Grund
ihrer jeweiligen Ankunftsuhrzeiten bereitstellt und wenn die zweite
dieser Zellen in den Speicher 42 schon in dem Augenblick
geschrieben wird, in dem die erste ausgesendet wird, man dann die
theoretische Aussendeuhrzeit der zweiten Zelle in Bezug auf diejenige,
die durch den Modul 40 berechnet wird, sowie die theoretischen
Aussendeuhrzeiten nachfolgender Zellen der Verbindung vorrücken kann,
ohne den verlangten Abstandseigenschaften Schaden zuzufügen. Es
wird also vermieden, bestimmte Zellen unnütz zu verzögern.
-
Der zweite Vorteil besteht darin,
dass die Abstandsintervalle, die manchen Verbindungen eingeräumt sind,
dynamisch und in unmittelbarer Weise geändert werden können. Wenn
die Stockung der Verbindung die Gefahr einer Überlastung hervorruft, kann
die Ausstattung z. B. das Abstandsintervall von manchen virtuellen
Verbindungen steigern. Diese Steigerung wirkt sich unmittelbar aus,
wobei darin die im Speicher 42 enthaltenen Zellen dieser
Verbindung, die also nicht entsprechend ihrer anfangs berechneten
TET ausgesendet werden, eingeschlossen sind. Es wird somit eine
Verzögerung
in der Anwendung der Vorbeugemaßnahmen
vermieden, eine Verzögerung,
die dazu führen
könnte,
dass die Überlastung
nicht vermieden wird. Selbstverständlich muss die Zulassung zum
Steigern des Abstandsintervalls einer Verbindung mit der Quelle
zur Herstellung dieser Verbindung in Anbetracht der Tatsache vereinbart
werden, dass sie für
eine gleiche Toleranz von CDV und ein gleiches Verhalten der Quelle
die Wahrscheinlichkeit der Vernichtung von Zellen durch die Polizeifunktion
erhöht.
-
14 zeigt
die Operationen, die durch die Steuereinheit 41 in der
ersten Phase jeder Zellenperiode während der Zeit intervalle 200 durchgeführt werden,
die in der zweiten Zeile von 13 angezeigt
sind.
-
Der erste Schritt 201 besteht
darin, zu bestimmen, ob eine eintretende Zelle zum Abstandshalter
während
der betreffenden Periode gelangt und gegebenenfalls die Identität IdCx der
Verbindung, von der diese Zelle abhängig ist, sowie die theoretische
Aussendeuhrzeit TET und das für
diese Zelle durch den Modul 40 gelieferte Abstandsintervall
T zu erfassen.
-
Bei Nichtvorliegen von Empfang einer
eintretenden Zelle wird beim Schritt 202 die Adresse a
= 0 an die Verwaltung 46 des Zellenspeichers geliefert, und
dann schreibt beim Schritt 203 die Steuereinheit 41 in
das Schnittstellenregister 261 einen Befehl von Nichtvorliegen
einer Änderung
des Inhalts des binären
Baumes (A1 = 00).
-
Bei Vorliegen einer eintretenden
Zelle wird der Freistellen-Zeiger
Ptr_libre im Zeigerspeicher 43 beim Schritt 204 gelesen
und der Adresse a zugewiesen, die an die Verwaltung 46 beim
Schritt 202 geliefert wird. Wenn a = 0 (keine empfangene
Zelle oder mehr Freistelle im Speicher 42), leitet die
Verwaltung 46 kein Schreiben in den Speicher 42 in
der laufenden Zellenperiode ein und die Abstandssteuereinheit 41 führt den
vorher erwähnten
Schritt 203 aus, damit der Inhalt des binären Baumes
unverändert
bleibt. Wenn nicht, geht die Steuereinheit 41 zum Schritt 205 des
Lesens von Zeigern über.
-
Beim Schritt 205 werden
die Nummer Ptr suite(a) der zweiten Stelle der Liste von freien
Stellen, die Nummer Ptr_tete(IdCx) des sich auf die Verbindung IdCx
beziehenden Listenkopfes und der Zeiger Ptr_fin(IdCx) dieser Liste
den Variablen b, c bzw. d zugewiesen. Beim Schritt 206 wird
die Tabelle TT der Abstandsintervalle für die Verbindung IdCx entsprechend
dem vom Modul 40 empfangenen Wert T auf den neuesten Stand
gebracht, wird die Adresse a als Zeiger des Endes der Liste von
sich auf die Verbindung IdCx beziehenden Stellen in den Speicher 43 geschrieben,
wird der dieser Stelle zugeordnete Folgezeiger Ptr_suite(a) auf
null gestellt, um anzuzeigen, dass es sich fortan um ein Listenende
handelt, und wird der Freistellenzeiger Ptr_libre mit der variablen
b auf den letzten Stand gebracht.
-
Wenn die Liste von Stellen, die sich
auf die Verbindung IdCx beziehen, nicht leer war (d. h. wenn d ≠ 0 beim Vergleich 207),
ist keine Änderung
des Inhaltes des Sortierbaumes nötig,
wie vorher erläutert worden
ist, so dass die Abstandssteuereinheit 41 den vorher erwähnten Schritt 203 ausführt, bevor
der zugeordnete Folgezeiger beim vorhergehenden Listenende mit dem
alten Freistellenzeiger beim Schritt 208 auf den letzten
Stand gebracht worden ist: Ptr_suite(d) = a.
-
Wenn der Vergleich 207 zeigt,
dass d = 0, vollendet die Steuereinheit 41 die Aktualisierung
der Listenzeiger beim Schritt 209, indem Ptr_tête(IdCx)
= a geschrieben wird. Sie leitet danach die Einfügung des neuen Datenelementes
TET, IdCx in den Sortierbaum ein. Die Operationen, die sie dafür bewerkstelligt,
entsprechen denjenigen, die durch die Steuereinheit 260 der Stufe 0 des binären Baumes
durchgeführt
werden, d. h. den Schritten 110 bis 119 des Ablaufdiagramms
der 10A, 10B und 4C.
Beim Schritt 210 weist die Steuereinheit 41 den
Variablen k und r den Sortierschlüssel K(1) und die Referenz R(1)
des an der Spitze des Baumes gelesenen Datenelementes zu, dann vergleicht
sie den Schlüssel
k mit der vom Modul 40 beim Schritt 201 empfangenen theoretischen
Aussendeuhrzeit TET (Vergleich 211). Wenn TET ≥ k, muss der
Einfügungsbefehl
zur Stufe 1 des Sortierbaumes verbreitet werden, so dass die Steuereinheit 41 A1 = 01, B1 = TET
und C1 = IdCx in das Pipeline-Register 261 beim
Schritt 212 schreibt, wobei das Blattbe zeichnungsfeld des
Registers 261 die Nummer eines freien Blattes G1 von der letzten Steuereinheit 21n–1 der
Sortiervorrichtung 44 aus empfängt, wie in 12 angezeigt ist.
-
Wenn der Vergleich 211 zeigt,
dass TET < k, dann
ist das neue Datenelement TET, IdCx an die Spitze des Baumes zu
schreiben, was beim Schritt 216 durchgeführt wird.
Zuvor verbreitet die Steuereinheit 41 einen Reinitialisierungsbefehl
A1 = 10 in das Pipeline-Register 261 beim Schritt 214, wenn der vorher
an der Spitze des Baumes gelegene Sortierschlüssel k unendlich ist (Vergleich 213).
Wenn nicht, schreibt die Steuereinheit 41 in das Register 261 einen Befehl zur Einfügung (A1 = 01) des vorher an der Spitze gelegenen
Elementes B1 = k, C1 =
r beim Schritt 215.
-
Was die Synchronisierung der Steuereinheit 41 mit
denjenigen der Sortiervorrichtung 44 anbelangt, so zeigt 14, dass sich der Zeitpunkt α0,
der demjenigen entspricht, von dem unter Bezugnahme auf die 5 und 9 die Rede war, nach dem Schritt 203, 212, 214 oder 215 des
Schreibens durch die Steuereinheit 41 in das Pipeline-Register 261 befindet.
Von diesem Zeitpunkt α0 an kann die Steuereinheit 211 der
Stufe 1 damit beginnen, den Befehl zu verarbeiten (in 13 angegebener Zeitpunkt α'1).
-
15 zeigt
die Operationen, die durch die Steuereinheit 41 in der
zweiten Phase jeder Zellenperiode während der Zeitintervalle 300,
die auf der zweiten Zeile von 13 angezeigt
sind, durchgeführt
werden.
-
Der erste Schritt 301 besteht
darin, den Sortierschlüssel
K(1) und die Referenz R(1) des an der Spitze des Baumes gelegenen
Datenelementes zu lesen und sie den Variablen k bzw. r zuzuweisen.
Der folgende Vergleich 302 dient zum Entscheiden, ob eine
Zelle auszusenden ist oder nicht. Im Falle eines realen Abstandshalters
besteht dieser Schritt 302 darin, den Sortierschlüssel k mit
der laufenden Uhrzeit ta zu vergleichen. Im Falle eines virtuellen
Abstandshalters besteht er einfach darin, zu prüfen, ob der Schlüssel k endlich
oder unendlich ist. Wenn k > ta (Fall
eines realen Abstandshalters), führt
die Steuereinheit 41 keine Operation in der zweiten Phase
der Zellenperiode durch, außer
dem Schreiben eines Befehls A1 = 00 des
Nichtvorliegens einer Änderung
des Inhalts des binären
Baumes in das Pipeline-Register 261 (Schritt 303).
-
Wenn aus dem Schritt 302 hervorgeht,
dass eine Zelle auszusenden ist, werden die Nummer der am Listenkopf
gelegenen Stelle bezüglich
der Verbindung r sowie der dieser Stelle zugeordnete Folgezeiger
im Speicher 43 gelesen und den Variablen a bzw. b beim
Schritt 304 zugewiesen. Die Adresse a kann dann beim Schritt 305 an
die Verwaltung 46 geliefert werden, damit diese die gespeicherte
Zelle an diese Adresse aussendet (vierte Zeile von 13). Wenn die Liste von Stellen, die
sich auf die bei dem an der Spitze des Baumes gelegenen Element
identifizierte Verbindung r = R(1) beziehen, nur eine einzige Zelle enthält, dann
ist die Variable b bei 0. Dies wird durch den Vergleich 306 detektiert.
In diesem Fall wird der Listenende-Zeiger Ptr_fin(r) beim Schritt 307 auf
null gesetzt, um anzuzeigen, dass diese Liste keine Zelle mehr enthält, und
beim Schritt 308 wird ein unendlicher Wert der theoretischen
Aussendeuhrzeit TET zugewiesen, welche den Sortierschlüssel des
neuen, im binären
Baum auszutauschenden Elementes bilden wird.
-
Wenn b ≠ 0 beim Schritt 306,
enthält
die Stellenliste mehrere Zellen und die Variable b wird beim Schritt 309 als
Kopfzei ger dieser Liste geschrieben und beim Schritt 311 empfängt die
an der Stelle Ch_cell(b) gespeicherte Zelle eine neue theoretische Aussendeuhrzeit
TET, die gleich dem beim Schritt 301 gelesenen Schlüssel k =
K(1) ist, vermehrt um eine Variable T, die gleich dem Abstandsintervall TT(r)
der betroffenen Verbindung genommen wird, gelesen beim Schritt 310.
Der Befehl zum Austausch (A1 = 11) des an
der Spitze des Baumes gelegenen Elementes K(1), R(1) mit dem neuen
Element B1 = TET, C1 =
r wird beim Schritt 312 in das Pipeline-Register 261 geschrieben.
-
Der Zeitpunkt α0, von
dem ausgehend die Steuereinheit 211 der
Sortiervorrichtung 44 damit beginnen kann, den Befehl zu
verarbeiten, liegt nach dem Schritt 312 (oder dem Schritt 303),
wie es 15 zeigt. Die
Abstandssteuereinheit 41 muss den Zeitpunkt β'0 ≥ β1 abwarten
(siehe 13), ehe im Register 261 das von der Stufe 1 des Sortierbaumes
aus zurückgesandte
Element wiedergewonnenen wird. In dem durch die 15 veranschaulichten Beispiel bringt
die Steuereinheit 41 die Liste freier Stellen im Intervall
[α0, β'0]
auf den letzten Stand: beim Schritt 313 liest sie den Freistellenzeiger
Ptr libre und weist ihn der Variablen c zu; dann beim Schritt 314 liest
sie im Speicher 43 Ptr_suite(a) = c und Ptr_libre = a.
-
Hat die Steuereinheit der Stufe 1
des Baumes das Element, das den kleinsten Schlüssel hat, einmal in das Register 261 zurückgesandt, so wird dieses Element
durch die Steuereinheit 41 beim Schritt 315 gelesen
und dann an die Spitze des Baumes beim Schritt 316 geschrieben.
-
16 zeigt
eine Variante eines Abstandshalters von ATM-Zellen, die fähig ist,
den Prioritätsindex
zu berücksichtigen,
der den virtuellen Verbindungen zugewiesen ist. Dieser Prioritätsindex
wird mit u gekennzeichnet, wobei angenommen wird, dass seine Werte
zwischen 1 und U liegen. Der Abstandshalter der 16 enthält U Sortiervorrichtungen 44(u) , die jeweils ein Pipeline-Register 261
(u) zwischen
ihrer Stufe 0 und ihrer Stufe 1 haben. Die Betriebsweise jeder Sortiervorrichtung 44(u) ist die gleiche wie diejenige, die
vorher beschrieben worden ist. Die Spitze jedes binären Baumes
wird als im Zeigerspeicher 43 enthalten (dessen Restinhalt
in 16 nicht dargestellt
ist) und als durch die Abstandssteuereinheit 41 verwaltet
angenommen. Die Betriebsweise des Zellenspeichers 42 und
seiner Verwaltung 46 ist genauso wie vorher für das Schreiben
und das Lesen der Zellen an die durch die Steuereinheit 41 gelieferten Adressen
a.
-
Jede der Sortiervorrichtungen 44(u) verarbeitet Datenelemente, deren
Referenzen R(u)(i) Identitäten von
virtuellen Verbindungen IdCx bezeichnen, welche den gleichen Prioritätsindex
u haben. Aus den Elementen wählt
die Vorrichtung 44(u) zu ihrer Spitze
(im Speicher 43 im dargestellten Beispiel) ein Element
aus, dessen Schlüssel
K(u)(1) minimal ist. Die Abstandssteuereinheit
wird dann so gestaltet, dass die Aussendung der Zelle gesteuert
wird, die im Listenkopf enthalten ist, der sich auf die Verbindung bezieht,
die in demjenigen der an den Spitzen der Bäume gelegenen Datenelemente
identifiziert wird, das den kleinsten Sortierschlüssel aufweist.
Im Falle der Gleichheit zwischen mehreren minimalen Sortierschlüsseln K(u)(1) hält
die Abstandssteuereinheit 41 die Verbindung bei, die den
größten Prioritätsindex unter
den gleichrangigen hat.
-
Diese Verwaltung der Prioritätsindexe
kompliziert die Abstandssteuereinheit 41 nicht in bedeutender
Weise. Was die Operationen anbelangt, die beim Empfang einer Zelle
ausgeführt
werden, so gilt das Ablaufdiagramm der 14 unver ändert, wobei die Schritte 210 bis 216 im
Hinblick auf den Sortierbaum 44(u) durchgeführt werden,
der dem Prioritätsindex
u entspricht, der durch die Steuereinheit 41 gleichzeitig
mit der Verbindungsidentität
IdCx empfangen wird.
-
Was die Operationen betrifft, die
in der zweiten Phase jeder Zellenperiode ausgeführt werden (15), so werden die Schritte 301, 302 des
Lesens des an der Spitze des Baumes gelegenen Elementes und des
Vergleiches des Schlüssels
dieses Elementes zur laufenden Uhrzeit aufeinanderfolgend in der
abnehmenden Ordnung der Prioritätsindexe durchgeführt, bis
für einen
Index u der Schritt 302 zeigt, dass die laufende Uhrzeit
erreicht worden ist. In diesem Fall werden die Schritte 304 bis 316 ohne Veränderung
ausgeführt,
wobei das Schreiben 312 und das Lesen 315 im Register 261
(u) und das
Schreiben 316 an der Spitze des betroffenen Sortierbaumes
durchgeführt
werden.
-
Im Beispiel der 16 sind die U Sortiervorrichtungen verschieden.
Es ist anzumerken, dass sich diese verschiedenen Sortiervorrichtungen
ihre Steuermittel, nämlich
ihre Steuereinheiten 21q und ihre
Pipeline-Register 26q , teilen könnten. 17 veranschaulicht eine
solche Ausführung
im besonderen Fall, bei dem U = 2.
-
Bei der Ausführungsform der 17 teilen sich die U = 2 Sortierbäume die
Schnittstellenregister 26q und
die Stufensteuereinheiten 21q .
Lediglich ihre Speicherungsstufen 20q
(1), 20q
(2) (q ≥ 0) sind unterschiedlich.
Die beiden Stufen 1 sind im Zeigerspeicher 43 enthalten.
Für jede
Stufe q ≥ 1
werden die entsprechenden Stufen 20q
(1), 20q
(2) der
beiden Bäume
durch zwei verschiedene Zonen des durch die Steuereinheit 21q verwalteten Speichers gebildet, die auf
der Grundlage eines zu sätzlichen
Adressbits unterschiedlich sind, das z. B. durch den binären Prioritätsindex
gebildet wird, der dann das höchstgewichtige
Bit des Feldes Dq der Pipeline-Register
bildet.