-
Die
vorliegende Erfindung bezieht sich auf Server für eine Datenabgabe. Traditionelle
Server wurden mit dem Streben aufgebaut, in die physikalische Datenübertragung
aktiv einbezogen zu werden. Für
Anwendungen, wie für
Video auf Anforderung oder Karaoke auf Anforderung ist eine Abgabe
von digitalen Echtzeit-Videoströmen
in einer hohen Zahl erforderlich. Der digitale Videostrom weist
in typischer Weise Videodaten auf, die entsprechend ISO/IEC 11172
oder ISO/IEC 13818 komprimiert sind; diese Standards sind üblicherweise
als MPEG-1-Standard bzw. als MPEG-2-Standard bekannt.
-
Ein
auf dem ATM-(asynchronen Transfer-Modus)-systembasiertes Serversystem
mit Erweiterungsfähigkeiten über eine
bloße
Datenabgabe hinaus ist bereits in der europäischen Patentanmeldung Nr.
95 200 819.1 vorgeschlagen worden.
-
Eine
Stromzusammenstellung- bzw. Strombildungsmaschine für eine ATM-Kommunikation bzw. -Übermittlung,
die als eine ASIC-Schaltung (das ist eine anwendungsspezifische
integrierte Schaltung) aufgebaut ist, ist in der unter dem PCT veröffentlichen
internationalen Anmeldung WO 96/08896 vorgeschlagen worden.
-
Ein
Verfahren zur Aufzeichnung und Wiedergabe von komprimierten Videodaten
entsprechend dem MPEG-Standard ist in der europäischen Patentanmeldung
EP 0 667 713 A2 vorgeschlagen
worden. In diesem Fall werden die komprimierten Videodaten auf einer
Disk in der speziellen Form aufgezeichnet, die eine Abtastinformation
enthält,
so dass die bestimmte komprimierte Videodaten wiedergebende Wiedergabevorrichtung
Videokassettenrekorder-(VCR)-Funktionen erzielen kann (beispielsweise einen
schnellen Vorlauf FF, einen schnellen Rücklauf FR).
-
Aus „IEICE
Transactions on Electronics" Vol. E78-C
Nr. 12, Dezember 1995, Seiten 1738-1745, Yasuharu Tomimitsu et al:
An ATM Chip Set for High Performance Computer Interfaces, Affording
over 100Mbps Sustained Throughput"- "ein
ATM-Chipsatz für Hochleistungs-Computerschnittstellen
bringt einen unterstützten
Durchsatz von über
100Mbps mit sich" ist
ein ATM-Chipsatz für
Hochleistungs-Computerschnittstellen
bekannt, der einen unterstützten Durchsatz
von über
100Mbps mit sich bringt.
-
Eine
Aufgabe der vorliegenden Erfindung besteht darin, eine Verbesserung
gegenüber
dem oben erwähnten
Stand der Technik zu schaffen und/oder einen Server für zukünftige Anwendungen bereitzustellen.
-
Die
vorliegende Erfindung stellt ein Verfahren zur Verkehrsformung bereit,
umfassend die Schritte:
- – Klassifizieren eines oder
mehrerer erster Datenströme
von Daten hoher Priorität,
wie von Videodaten, in eine oder mehrere Klassen, wobei jede Klasse
einen oder mehrere Ströme
mit denselben Bitraten-Charakteristiken enthält,
- – Festlegen
eines Satzes von Parametern zur Steuerung der Bitrate für jede Klasse,
- – Ausführen einer
Ratenschrittsteuerung bezüglich
jeder Klasse entsprechend den gespeicherten Parametern,
- – Formen
des Verkehrs eines oder mehrerer zweiter Ströme niedriger Priorität, wie allgemeine
Daten in festliegenden Verkehrsklassen, die einen oder mehrere Ströme derselben
Spitzen-Zellrate aufweisen, unter Heranziehung einer zweiten Klassifizierungseinrichtung
(20), wobei der Strom von Datenpaketen des Abschnitts niedriger
Priorität
lediglich dann abgegeben werden kann, wenn die Übertragungsschlange des Abschnitts
hoher Priorität
leer ist.
-
Ein
Vorteil einer solchen Ausführungsform liegt
darin, dass Daten hoher Priorität
und Daten niedriger Priorität
mit unterschiedlichen Algorithmen behandelt bzw. verarbeitet werden
können.
Daher kann ein bestimmter Algorithmus, der Daten hoher Priorität optimiert,
wie dies in den Ansprüchen
3 bis 6 und unten in der Beschreibung ausgeführt ist, zur Behandlung der
hohe Priorität
aufweisenden Ströme angewandt
werden.
-
Bevorzugte
Ausführungsformen
des Verfahrens gemäß der vorliegenden
Erfindung sind in den abhängigen
Unteransprüchen
beschrieben bzw. erfasst.
-
Ferner
stellt die vorliegende Erfindung einen Verkehrsformer gemäß Anspruch
6 bereit, wobei die Parameter eine ideale vorgesehene Zeit (TS)
und ein Inkrement (Δ)
für die
ideale vorgesehene Zeit aufweisen und wobei die Einrichtung zur
Ausführung
der Inkremente der idealen vorgesehenen Zeit mit dem Inkrement in
dem Fall, dass eine Zelle eines gerade vorliegenden Stromes in einer
Klasse in eine Übertragungsschlange
(216) eingefügt
wird bzw. ist, einen Referenztakt mit der inkrementierten idealen
vorgesehenen Zeit vergleicht und eine Zelle eines nächsten Stromes
in der Klasse in die Übertragungsschlange
einfügt,
wenn die inkrementierte ideale vorgesehene Zeit gleich oder kleiner
wird als der Referenztakt.
-
Weitere
Vorteile, Merkmale und Einzelheiten der vorliegenden Erfindung werden
aus der nachfolgenden Beschreibung unter Bezugnahme auf die beigefügten Zeichnungen
näher ersichtlich
werden. In den Zeichnungen zeigen
-
1 eine
generelle Systemarchitektur eines interaktiven Kommunikationssystems,
-
2 ein
detailliertes Blockdiagramm einer Ausführungsform der Vorrichtung
gemäß der vorliegenden
Erfindung,
-
3 ein
Blockdiagramm eines Tx-Adressenumsetzers gemäß 2,
-
4 ein
Beispiel der Anwendung des Adressen-Umsetzers gemäß 3,
-
5A, 5B und 5C Beispiele
einer Adressenumsetzung für
eine TCP-IP-Paketierung,
-
6 ein
Beispiel der Anwendung des Tx-Raten-Blocks gemäß 2,
-
7 das
Verhalten einer Bitrate, die durch den Verkehrsformer gemäß 2 erzielt
wird,
-
8 ein
Diagramm zur Erläuterung
des Aussendens eines Stromes innerhalb einer Zellperiode,
-
9 die
Unterordnung von Zellen für
verschiedene Klassen,
-
10 ein
Blockdiagramm einer Architektur für den Verkehrsformer gemäß 2,
-
11 ein
Blockdiagramm des Befehlsblockes gemäß 2,
-
12 ein
Diagramm zur Erläuterung
der Arbeitsweise eines Byte-Austauschers gemäß 2,
-
13 ein
Format einer in UNI benutzten ATM-Zelle,
-
14 ein
Blockdiagramm eines VPI/VCI-Umsetzers gemäß 2,
-
15 ein
Blockdiagramm eines Muster-Detektors gemäß 2 und
-
16 ein
Beispiel eines Adressen-Umsetzers gemäß 2.
-
1 zeigt
eine generelle Systemarchitektur einer bevorzugten Ausführungsform
eines interaktiven Kommunikationssystems. Dieses System ist ein Breitbandsystem,
welches virtuell jede Art von interaktiver Multimediaanwendung unterstützt. Besondere
Aufmerksamkeit wird Echtzeit-Multimediaabgabemodus-Anwendungen gewidmet.
-
Ein
Server 10 wirkt als VOD-(Video-auf-Anforderungs-)-Server,
als KOD-(Karaoke-auf-Anforderungs-)-Server
und/oder als Internet-Server, etc. und kommuniziert mit SetTopBoxen
(STB) 18 als Clients über
ein öffentliches
Netzwerk 16. Der Server 10 besteht aus einem lokalen
ATM-Koppelfeld 14 und mehreren SMU-Einheiten 12 (Speichermediumeinheiten),
die durch das lokale ATM-Koppelfeld 14 miteinander verbunden
sind. Die Hauptzwecke des lokalen ATM-Koppelfeldes 14 bestehen
darin, Daten zwischen den SMU-Einheiten 12 weiterzuleiten
(beispielsweise einen entsprechend dem MPEG-Standard komprimierten
Film von einer SMU-Einheit zu einer anderen SMU-Einheit zu kopieren),
innerhalb des Servers 10 ein ATM-basiertes LAN-Netz zu
bilden und mit dem öffentlichen
Netzwerk 16 eine Schnittstellenverbindung herzustellen.
Jede SMU-Einheit 12 kommuniziert mit dem lokalen ATM-Koppelfeld 14 mit
hoher Geschwindigkeit, und zwar mit der derzeitigen Technologie
bei beispielsweise maximal 622Mbps. Das öffentliche Netzwerk ist optional
vorgesehen, und der Server 10 kann mit den SetTopBoxen 18 direkt
kommunizieren.
-
2 zeigt
ein detailliertes Blockdiagramm der SMU-Einheit 12. Die
SMU-Einheit 12 weist als Haupteinheiten Speichervorrichtungen 20,
einen Host 28 und eine Stromzusammenstellungs- bzw. Strombildungsmaschine 36 auf.
Diese Einheiten sind über
einen PCI-Bus 24 (das ist ein peripherer Komponenten-Verbindungs-Bus)
miteinander verbunden. Eine Host-CPU 30 und ein Host-Speicher 32 in
dem Host 28 sind durch einen MIPS-Bus 34 in einer
konventionellen Konfiguration verbunden. Bei dieser Ausführungsform
ist der MIPS-Bus 34 durch eine CPI-Brücke 26 mit dem CPI- Bus 24 verbunden.
Der Host 28 hat hauptsächlich
den Zweck, Anwendungen, wie VOD, KOD, in einem Internet-Server laufen zu
lassen, der mit den Clients oder den SetTopBoxen in Interaktion
steht.
-
Die
Speichervorrichtungen 20 enthalten eine oder mehrere Reihen
von Festplatten. Diese Festplatten sind durch SCSI oder einen Faserkanal
verbunden, und sie speichern Echtzeit-sensitive Daten, wie MPEG-2-codierte
Videoströme
und die Inhalte von Datenpaketen, wie den Hauptteil von TCP/IP-(Übertragungssteuerungsprotokoll/Internetprotokoll)-Paketen
ohne die Header.
-
Die
Stromzusammenstellungs- bzw. Strombildungsmaschine 36 ist
vorzugsweise als Einzel-ASIC-Schaltung (anwendungsspezifische integrierte
Schaltung) aufgebaut. Die Strombildungsmaschine 36 gibt
einen Strom der sensitiven Echtzeitdaten und der Datenpakete ab.
Die Strombildungsmaschine 36 verfügt als Hauptteile über einen
Sende- bzw. Übertragungspfad 50 und
einen Empfangspfad 80 sowie über ein PCI-Interface 38 und ein Interface 40.
Der Übertragungspfad 50 verarbeitet
den abgehenden Datenstrom von den Speichervorrichtungen 20 und
dem Host 28 zu dem lokalen ATM-Koppelfeld 14 hin.
Der Empfangspfad 80 verarbeitet den ankommenden Datenstrom
von dem lokalen ATM-Koppelfeld bzw. -Switch 14 zu den Speichervorrichtungen 20 und
dem Host 28 hin. Die Hochgeschwindigkeitsverbindungen und
die Unabhängigkeit
des Sende- bzw. Übertragungspfades
und des Empfangspfades ermöglichen
gleichzeitig 622Mbps in beiden Richtungen.
-
Das
PCI-Interface 38 stellt eine Schnittstelle zwischen dem
PCI-Bus 24 und dem Übertragungspfad 50 sowie
dem Empfangspfad 80 her. Das PCI-Interface 38 überträgt den abgehenden
Datenstrom von dem PCI-Bus 24 zu einem PCI-FIFO-Speicher 52 in
dem Übertragungspfad 50 sowie
den ankommenden Datenstrom von einem PCI-FIFO-Speicher 98 im Empfangspfad
zu dem PCI-Bus 24.
-
Das
Interface 40 stellt eine Schnittstelle zwischen dem Übertragungspfad 50 und
dem Empfangspfad 80 mit einer in einer physikalischen Schicht
liegenden (nicht dargestellten) externen Vorrichtung dar, die an
dem lokalen ATM-Koppelfeld 14 angeschlossen ist. Das Interface 40 kann
zwei Arten von ATM-Schnittstellen entsprechend dem UTOPIA-Standard
der Ebene 2 (Universal Test and Operation PHY-Interface
für ATM)
enthalten. Der eine Interfacetyp ist ein UTOPIA-Interface in einem
8 Bit breiten Datenpfadmodus, und der andere Interfacetyp ist ein
UTOPIA-Interface
in einem 16 Bit breiten Datenpfad-Modus.
-
Der
Sende- bzw. Übertragungspfad 50 besteht
aus mehreren funktionalen Blöcken,
die zusammenwirken, um eine schnelle bzw. Hochgeschwindigkeits-Übertragung
auszuführen.
-
Der
erste Block in dem Sende- bzw. Übertragungspfad 50 ist
der Tx-Adressenumsetzer 54, der den abgehenden Datenstrom
aus dem PCI-FIFO-Speicher 52 in Hostspezifizierten Speicherplätzen eines
Strompuffers 44 unterbringt, welcher in einem externen
RAM-Speicher 42 zugeteilt ist. Dies ermöglicht eine gesteuerte „Verteilung" von Daten in einem
nicht zusammenhängenden
Speicher, was für
einen Betrieb von Nutzen ist, der in gewissem Ausmaß der so
genannten RAID-Operation (Redundant-Array-of-Inexpensive-Disks-Operation) ähnlich ist,
welche die Integrität
von Datenströmen und
die TCP/IP-Paketierung gewährleistet.
-
Der
TCP/IP-Prüfsummenblock 56 stellt
eine Hardware-Unterstützung
zur Berechnung von TCP/IP-Prüfsummen
bereit. Seine Funktion besteht darin, eine Teilprüfsumme für jedes
Paket zu berechnen und aufrecht zu erhalten, bis sämtliche
Daten übertragen
worden sind. Der TCP/IP-Prüfsummenblock 56 arbeitet
mit dem Tx-Adressenumsetzer 54 zusammen, um TCP/IP-Pakete
direkt in dem Strompuffer 44 zu erzeugen. Der TCP/IP-Header
und die Nutzlast der Pakete werden in dem Strompuffer 44 gesondert
untergebracht, indem sie durch den Prüfsummenblock 56 hindurch
geführt
werden, der eine Teilprüfsumme
aufbewahrt. Sobald sämtliche
Daten in dem Strompuffer 44 sind, wird der Prüfsummenwert
an der korrekten Stelle des TCP/IP-Headers untergebracht, womit
das Paket für
eine Übertragung bereitsteht.
-
Das
RAM-Interface 58 bildet eine Schnittstelle zwischen dem
externen RAM-Speicher 42 und dem Sende- bzw. Übertragungspfad 50.
Der externe RAM-Speicher 42 kann einen Doppelanschluss-SDRAM-Speicher
(das ist ein synchroner dynamischer RAM-Speicher) umfassen. Dieser externe RAM-Speicher 42 enthält mehrere
Strompuffer 44 zur Entkopplung des burstartigen Datenverkehrs
von den Disks der Speichervorrichtungen 20, und er stellt die
erforderlichen Datenströme
mit konstanter Bitrate für
das ATM-Netzwerk 16 bereit. Jeder Strompuffer verarbeitet
einen abgehenden Datenstrom. Im Gegensatz zur ankommenden Richtung
können
die Pufferanforderungen vorab abgeschätzt werden, da die Datenstromcharakteristiken
in der abgehenden Richtung vollständig vorhersagbar (steuerbar)
sind. Daher werden die Strompuffer 44 in dem externen RAM-Speicher 42 statistisch
zugewiesen.
-
Der
Tx-RAID- oder SDI-(Strom-Daten-Integritäts-)-Block 60 liefert
eine Unterstützung
für eine Datenredundanz.
Der Tx-Adressenumsetzer 54 bringt die Daten, wie gefordert,
in dem Strompuffer 44 unter. Wenn Daten aus dem Strompuffer 44 abgegeben
werden, korrigiert der Tx-RAID-Block 60 sodann Fehlerdaten
in dem Augenblick, in dem eine der Disks in den Speichervorrichtungen 20 versagt.
-
Der
Verkehrsformer 62 steuert die Strombildung der abgehenden
Daten aus den Strom-Puffern 44 des ATM-Netzwerks 16.
Er ist für
einen sehr genauen Ratenschritt und eine niedrige CDV-Größe (Zellverzögerungsvariation)
ausgelegt. Der Verkehrsformer 62 besteht aus zwei Hauptabschnitten.
Der eine Abschnitt verarbeitet Daten hoher Priorität, wie den
Videoverkehr, und der andere Abschnitt verarbeitet den allgemeinen
Datenverkehr niedriger Priorität.
-
Der
Befehlsblock 66 dient dazu, den Host, speziell den Host 28 von
Echtzeitsensitiven Aufgaben zu entlasten. Er führt Aktionen aus, die durch
die Übertragung
des Inhalts von exakt bekannten Stellen im abgehenden Datenstrom
getriggert werden.
-
Der
Segmentierungsblock 70 segmentiert den abgehenden Datenstrom,
der von dem Strompuffer 44 bereitgestellt wird, in AAL-5-PDU-Einheiten (ATM-Adaptionsschicht-5-Protokoll-Dateneinheiten), und
bildet die AAL-5-PDU-Einheiten in ATM-Zellen ab. In dem Fall, dass
der abgehende Datenstrom ein MPEG-2-SPTS-Datenstrom ist (Einzelprogramm-Transportstrom),
ist der Segmentierungsblock 70 imstande, zwei TS-Pakete
in dem MPEG-2-SPTS-Strom in eine AAL-5-PDU-Einheit zu segmentieren,
sofern nicht weniger als zwei TS-Pakete in dem MPEG-2-SPTS-Strom vorhanden sind; im
letzteren Fall nimmt die AAL-5-PDU-Einheit eine Abbildung in 8 ATM-Zellen
vor. Im generellen Fall wird die AAL-5-Segmentierung durch die PDU-Größe gesteuert,
die pro Strom programmierbar ist.
-
Der
Empfangspfad 80 weist mehrere Blöcke entsprechend dem umgekehrten
Betrieb der Blöcke des
Sende- bzw. Übertragungspfades 50 auf.
-
Ein
VPI/VCI-(Virtual Path Identifier/Virtual Channel Identifier)-Filterungsblock 84 führt eine schnelle
und effiziente VPI/VCI-Filterung der ankommenden ATM-Zellen durch.
Dies geschieht durch kombinierte Hash- und lineare Suchfunktionen über die
Einträge
in einer VPI/VCI-Tabelle.
-
Ein
Wiederaufbaublock 86 führt
grundsätzlich
die umgekehrten Funktionen des Segmentierungsblocks 70 durch.
Der Wiederaufbaublock 86 rekonstruiert die AAL-5-PDU-Einheiten unter
Heranziehung der Nutzlast der ATM-Zellen und nimmt sodann eine Abbildung
der AAL-5-PDU-Einheiten in den Daten der oberen Schicht (zum Beispiel
MPEG-2-SPTS, TCP/IP-Pakete) vor.
-
Ein
TCP-Prüfsummen-Überprüfungsblock 88 überprüft die TCP-Prüfsumme im
TCP-Header, falls
der ankommende Datenstrom durch das TCP-Protokoll übertragen
wird.
-
Ein
Muster-Detektor 92 ermöglicht
die Ermittlung einer begrenzten Anzahl von Bitmustern in einem ankommenden
Datenstrom. Es wird eine Liste erzeugt, die exakt angibt, wo die
spezifizierten Bitmuster in dem Datenstrom auftreten. Dies unterstützt gewisse
Verarbeitungsanforderungen, die während der Übertragung ausgeführt werden
können,
während
sie ansonsten mit einer Nachverarbeitung vorzunehmen wären.
-
Ein
Rx-RAID- oder SDI-Block 90 fügt dem ankommenden Datenstrom
Redundanz hinzu. Falls eine Folge von N Wörtern in einen (nicht dargestellten)
Puffer geschrieben wird bzw. ist, wird die Parität bezüglich dieser N Wörter als
nächstes
geschrieben. Diese Funktion kann ein-/ausgeschaltet werden. Falls
der ankommende Datenstrom in der Speichervorrichtung 20 gespeichert
und später
als TCP/IP-Pakete über
den Übertragungspfad 50 übertragen
wird, wird die Funktion ausgeschaltet.
-
Ein
RAM-Interface 94 stellt eine Schnittstelle zwischen dem
Empfangspfad 80 und einem externen RAM-Speicher 46 dar.
Der externe RAM-Speicher 46 kann einen doppelte Anschlüsse aufweisenden SDRAM-Speicher
umfassen. Der externe RAM- Speicher 46 wird
als mehrere Strompuffer 48 genutzt, in denen ankommende
Datenströme
gespeichert werden. Jeder Strompuffer 48 verarbeitet einen
ankommenden Datenstrom. Die ankommenden Datenströme können unvorhersagbare Eigenschaften
aufweisen. So können
beispielsweise einige der Datenpakete sehr bursthaft sein. Dies
bedeutet, dass die erforderliche Pufferkapazität von Strom zu Strom und von
Zeit zu Zeit variiert. Daher wird in dem externen RAM-Speicher 46 eine
dynamische Pufferzuteilung bevorzugt.
-
Ein
Rx-Adressenumsetzer 96 liefert die in Frage kommenden Leseadressen
an den Pufferstrom 48.
-
Die
Einzelheiten der Hauptblöcke
in der Strombildungsmaschine 36 werden unten beschrieben.
-
Tx-Adressenumsetzer
-
Der
abgehende Datenstrom wird der Strombildungsmaschine 36 von
der Speichervorrichtung 20 in einer Bwstübertragung über den
PCI-Bus 24 bereitgestellt. Der Zweck des Tx-Adressenumsetzers 54 besteht
darin, einen zusammenhängenden DMA-Burst
in geeigneten Bereichen des Strompuffers 44 zu verteilen.
-
3 zeigt
ein Blockdiagramm des Tx-Adressenumsetzers 54. Bevor ein
zusammenhängender
DMA-Burst von der Speichervorrichtung 20 ankommt, wird
die korrekte Startadresse mittels einer Speichervorrichtungs-Steuereinrichtung 22 in ein
Register 102 geschrieben. Der Inhalt des Registers 102 wird
als Schreibadresse für
den Strompuffer 44 genutzt. Ein Zähler 106 zählt die
Anzahl der Bits des von dem PCI-FIFO-Speicher 52 abgehenden Datenstromes.
Jedes Mal, wenn ein aus 32 Bits bestehendes Datenwort den Zähler 106 passiert,
wird eine Inkrement-Steuereinrichtung 104 darüber informiert,
dass ein Wort zu dem Strompuffer 44 übertragen wird. Mit jedem neuen
Wort inkrementiert die Inkrement-Steuereinrichtung 104 den
Inhalt des Registers 102 mit ADDRESS_INCREMENT, bei dem
es sich um einen programmierbaren Wert handelt. In dem Fall, dass
der abgehende Datenstrom gegeben ist durch RAID-verarbeitete Daten,
ist der Wert von ADDRESS_INCREMENT grundsätzlich entsprechend der Anzahl
der für
das RAID-System benutzten Disks festgelegt. In dem Fall, dass der
abgehende Datenstrom durch die Nutzlast eines TCP/IP-Pakets gegeben
ist, ist der Wert von ADDRESS_INCREMENT grundsätzlich entsprechend den Paketierungsparametern
festgelegt.
-
Nachstehend
wird unter Bezugnahme auf 4 eine Adressenumsetzung
für den
Fall beschrieben, dass der abgehende Datenstrom gegeben ist durch
RAID-verarbeitete Daten. Bei diesem Beispiel besteht das RAID- oder
SDI-System aus vier Disks, nämlich
aus der Disk 0, der Disk 1, der Disk 2 und der Disk 3. Die Disk
0 enthält
zu dem lokalen ATM-Koppelfeld 14 zu übertragende Wörter 1,
4, 7, ... Die Disk 1 enthält
ebenfalls zu dem lokalen ATM-Koppelfeld 14 zu übertragende
Wörter
2, 5, 8, ... Die Disk 2 enthält
ebenfalls zu dem lokalen ATM-Koppelfeld 14 zu übertragende
Wörter
3, 6, 9, ... Die Disk 3 enthält
Paritätswörter 0,
1, 2, ... für
eine Fehlerkorrektur. Jedes Paritätswort (beispielsweise die
Parität
0) ist in dem Rx-RAID-Block 90 aus drei Wörtern (zum
Beispiel aus den Wörtern
1, 2 und 3) erzeugt worden, die eine so genannte Streifeneinheit des
RAID-Systems zusammen mit den Paritätswort bilden.
-
Im
Falle eines Ausfalls bei einer der Disks (beispielsweise der Disk
20) wird ein zusammenhängender
DMA-Burst, der Paritätswörter enthält, zu dem
Tx-Adressenumsetzer 54 übertragen.
Zur Vereinfachung der Erläuterung
sei angenommen, dass die Größe eines
zusammenhängenden
DMA-Bursts 96 Bytes (24 Wörter)
beträgt,
obwohl die tatsächliche Größe größer als
100kBytes sein kann (in Abhängigkeit
von der Geschwindigkeit der Hard-/und Software). In diesem Fall
besteht der zusammenhängende DMA-Burst 120 aus
den Wörtern
1, 4, 7, 10, 13, 16 von der Disk 0, aus den Wörtern 2, 5, 8, 11, 14, 17 von
der Disk 1, aus den Wörtern
3, 6, 9, 12, 15, 18 von der Disk 2 und aus den Paritätswörtern 0,
1, 2, 3, 4, 5 von der Disk 3. Der Tx-Adressenumsetzer 54 erzeugt
die folgende Sequenz von Adressen:
178, 182, 186, 190, 194,
198 (Daten von der Disk 0),
179, 183, 187, 191, 195, 199 (Daten
von der Disk 1),
180, 184, 188, 192, 196, 200 (Daten von der
Disk 2),
181, 185, 189, 193, 197, 204 (Daten von der Disk 3).
-
Bevor
der zusammenhängende
DMA-Burst 120 am Strompuffer 44 ankommt, wird
genauer gesagt ein Wert 178 in dem Register 102 als Startadresse
gespeichert. Sodann wird das Wort 1 von der Disk 0 unter der Adresse
178 in den Strompuffer 44 geschrieben. Wenn das Wort 1
durch den Zähler 106 gelangt,
inkrementiert die Inkrement-Steuereinrichtung 104 den Wert
178 in dem Register 102 mit ADDRESS_INCREMENT eines der
Anzahl der Disks entsprechenden Wertes 4. Sodann wird das Wort 4 von
der Disk 0 unter der Adresse 182 in den Strompuffer 44 geschrieben.
Wenn das Wort 4 durch den Zähler 106 gelangt,
inkrementiert die Inkrement-Steuereinrichtung 104 den Wert
182 in dem Register 102 mit ADDRESS_INCREMENT eines Wertes
4. Sodann wird das Wort 7 von der Disk 0 unter der Adresse 186 in
den Strompuffer 44 geschrieben. In entsprechender Weise
werden die übrigen Wörter 10,
13 und 16 von der Disk 0 unter den Adressen 190, 194 bzw. 198, bei
denen es sich um die beiseite liegende Anzahl der Disk handelt,
in den Strompuffer 44 geschrieben.
-
Wenn
das Wort 16 von der Disk 0 durch den Zähler 106 gelangt,
inkrementiert die Inkrement-Steuereinrichtung 104 den Wert
198 in dem Register 102 mit ADDRESS_INCREMENT des Wertes – 19. Sodann
wird das Wort 2 von der Disk 1 unter der Adresse 179 in den Strompuffer 44 geschrieben. Wenn
das Wort 2 durch den Zähler 106 gelangt,
inkrementiert die Inkrement-Steuereinrichtung 104 den Wert
179 in dem Register 102 mit ADDRESS_INCREMENT des Wertes
4. Sodann wird das Wort 5 von der Disk 1 unter der Adresse 183 in den
Strompuffer 44 geschrieben. Wenn das Wort 5 durch den Zähler 106 gelangt,
inkrementiert die Inkrement-Steuereinrichtung 104 den
Wert 183 in dem Register 102 mit ADDRESS_INCREMENT des
Wertes 4. Sodann wird das Wort 8 von der Disk 1 unter der Adresse
187 in den Strompuffer 44 geschrieben. In entsprechender
Weise werden die übrigen
Wörter von
der Disk 1 unter den Adressen 191, 195 und 199, bei denen es sich
um die abseitige Anzahl der Disk handelt, in den Strompuffer 44 geschrieben.
-
In
derselben Weise werden Wörter
von den Disks 2 und 3 unter in Frage kommenden Adressen in den Strompuffer 44 geschrieben.
Die in den Strompuffer 44 geschriebenen Wörter werden
in linearer Weise gelesen und dem Tx-RAID-Block 60 zur
Korrektur von Fehlern bereitgestellt.
-
Wenn
der abgehende Datenstrom von der Speichervorrichtung 20 eine
TCP/IP-Nutzlast
ist, arbeiten der Adressenumsetzer 54 und der TCP-Prüfsummen- Berechnungsblock 56 eng
zusammen, um für
die TCP/IP-Paketerzeugung zu sorgen. Der Host 28 nimmt
eine Vorprogrammierung des Tx-Adressenumsetzers 54 vor,
so dass Daten entsprechend einer spezifizierten Paketgröße verteilt
werden. Zunächst
muss der Host 28 sämtliche
Paketierungsparameter kennen. Wichtige Parameter für diese
Operation sind die Größe der TCP-Nutzlast,
die Größe des TCP-Headers,
die Größe des IP-Headers
und die Größe der IP-Nutzlast.
Der TCP-Header und der IP-Header
weisen grundsätzlich
Raum für
optionale Daten auf, der indessen in der Praxis nicht genutzt wird.
Daher kann eine Vereinfachung dadurch eingeführt werden, dass Standardgrößen für die Header angenommen
werden: die Größe des TCP-Headers beträgt fünf Wörter (20
Bytes) und die Größe des IP-Headers
beträgt
fünf Wörter (20
Bytes).
-
Der
Mechanismus kann wie folgt beschrieben werden.
-
Der
Host 28 selbst nimmt eine Teilprüfsummen-Berechnung bezüglich des
Pseudo-Headers des
TCP/IP-Headers vor. Sodann initialisiert er ein TCP-Prüfsummen-Register 57 in
dem TCP-Prüfsummen-Block 56 für das betreffende
TCP/IP-Paket mit diesem Wert. Platz für den Strompuffer 44 wird
außerdem
in dem externen RAM-Speicher 47 zur
Anpassung an das vollständige
TCP-Paket zuzüglich des
TCP- und IP-Header-Overheads
reserviert.
-
Der
Host 28 instruiert sodann die Inkrement-Steuereinrichtung 104 in
dem Tx-Adressenumsetzer 54 über die
Größe der TCP-Nutzlast,
die Größe des TCP-Headers,
die Größe des IP-Headers
und die Größe der IP-Nutzlast.
Die TCP-Nutzlast kann dann als ein zusammenhängender DMA-Burst über den
PCI-Bus 24 übertragen
und in dem Strompuffer 44 innerhalb des Bereiches untergebracht
werden, der dafür
durch den Tx-Adressenumsetzer 54 reserviert
ist, womit Platz für
die Header übrig
bleibt. Im Zuge des Übergangs
von dem PCI-Bus 24 zu dem Strompuffer 44 aktualisierte
der Prüfsummen-Berechnungsblock 56 die
Teilprüfsumme
in dem TCP-Prüfsummen-Register 57.
Es sei darauf hingewiesen, dass mit diesem Verfahren die Nutzlast,
die üblicherweise
die Masse der TCP/IP-Pakete darstellt, nicht erst aus den Speichervorrichtungen 20 in den
Host-Speicher 32 für
eine Verarbeitung und sodann zu dem Strompuffer 44 kopiert
zu werden braucht. Dies spart wertvolle Busbandbreite und Overhead
für die
Host-CPU 30 ein. Nachdem die Nutzlast geschrieben worden
ist, wird die durch den Host 28 vorbereitete Header-Information
durch den Adressenumsetzer 54 zu dem Strompuffer 44 übertragen.
Wie bei der Nutzlast bringt der Tx-Adressenumsetzer 54 den
Header an den zuvor reservierten Speicherplätzen unter.
-
Diese
Sequenz kann umgekehrt werden, wodurch die Header-Information zuerst
und die Nutzlast an zweiter Stelle geschrieben werden.
-
In
jedem Falle wird dann, wenn sowohl der Header als auch die Nutzlast
geschrieben worden sind, die TCP-Prüfsumme vollständig sein,
und sie kann automatisch an die korrekte Stelle kopiert werden.
-
Dieser
Mechanismus kann auch dazu genutzt werden, eine Segmentierung eines
TCP-Pakets in eine
Mehrzahl von kleineren IP-Paketen effizient zu unterstützen. In
diesem Fall wird bzw. ist Platz für jedes IP-Paket reserviert.
Die TCP-Paketdaten (Header + Nutzlast) werden in diese Pakete segmentiert, und
der Header jedes IP-Pakets wird durch den Host 28 geschrieben.
-
Sämtliche
IP-Pakete werden dieselbe Größe aufweisen,
allerdings mit Ausnahme des letzten Blockes, bezüglich dessen es wahrscheinlich
ist, dass er eine von den anderen Blöcken unterschiedliche Größe aufweist.
Der Adressenumsetzer 54 berücksichtigt dies. Nachdem das
(die) vollständige(n) TCP/IP-Paket(e)
gebildet worden ist bzw. sind, steht dieses bzw. stehen diese für eine Übertragung
bereit.
-
5A, 5B und 5C zeigen
ein Beispiel einer Adressenumsetzung für die TCP-IP-Paketierung. Bevor
die TCP/IP-Nutzlast, die als ein zusammenhängender DMA-Burst 130 übertragen
wird, im Strompuffer 44 ankommt, wird in diesem Fall ein Wert
310 in dem Register 102 als Start-Schreibadresse gespeichert,
und sodann wird das erste Wort der ersten Daten unter der Adresse
310 in den Strompuffer 44 geschrieben. Wenn das erste Wort der
ersten Daten den Zähler 106 durchläuft, inkrementiert
die Inkrement-Steuereinrichtung 104 den Wert
310 in dem Register 102 mit ADDRESS_INCREMENT des Wertes
1. Sodann wird das zweite Wort der ersten Daten unter der Adresse 311
in den Strompuffer 44 geschrieben. Wenn das zweite Wort
der ersten Daten den Zähler 106 durchläuft, inkrementiert
die Inkrement- Steuereinrichtung 104 den
Wert 311 in dem Register 102 mit ADDRESS_INCREMENT des
Wertes 1. Sodann wird das dritte Wort der ersten Daten unter der
Adresse 312 in den Strom 44 geschrieben. Die Inkrementierung
mit ADDRESS_INCREMENT des Wertes 1 wird in einer der Größe der IP-Nutzlast
entsprechenden Häufigkeit
wiederholt. Somit werden die ersten Daten der TCP/IP-Nutzlast in einen
geeigneten Bereich geschrieben.
-
Sodann
inkrementiert die Inkrement-Steuereinrichtung 104 den Inhalt
im Register 102 mit ADDRESS_INCREMENT eines der Größe des IP-Headers
entsprechenden Wertes. Sodann beginnt das Schreiben der zweiten
Daten von der Adresse entsprechend dem Inhalt des Registers 102.
Somit erzeugt der Adressenumsetzer 54 Schreibadressen für die Nutzlast,
so dass der Raum für
die Header übrig
bleibt. Bezüglich
der letzten Daten ist es wahrscheinlich, dass sie eine andere Größe besitzen
als die anderen Daten. Die Größe der letzten
Daten wird in der Inkrement-Steuereinrichtung 104 durch
folgenden Ausdruck berechnet:
Größe der letzten Daten = Größe der TCP-Nutzlast mod
Größe der IP-Nutzlast.
-
Daher
wird die Inkrementzahl dadurch gesteuert, dass die Größe der letzten
Daten berücksichtigt
wird. Auf diese Weise wird die als ein zusammenhängender DMA-Burst übertragene Nutzlast innerhalb
des Strompuffers 44 in die schraffierten Bereiche verteilt,
wie dies in 5A veranschaulicht ist.
-
Wenn
der TCP-Header 132 als ein zusammenhängender Burst über den
PCI-Bus 24 übertragen
wird, dann erzeugt der Adressenumsetzer 54 anschließend Schreibadressen
entsprechend den zuvor reservierten Speicherplätzen für den TCP-Header in dem Strompuffer 44.
-
Bevor
der TCP-Header, der als ein zusammenhängender Burst 132 übertragen
worden ist, den Strompuffer 44 erreicht, wird – genauer
gesagt – ein Wert
305 in dem Register 102 als Start-Schreibadresse festgelegt,
woraufhin das erste Wort das TCP-Headers unter der Adresse 305 in
den Strompuffer 44 geschrieben wird. Wenn das erste Wort
des TCP-Headers den Zähler 106 durchläuft, inkrementiert
die Inkrement-Steuereinrichtung 104 den
Wert 305 in dem Register 102 mittels ADDRESS_INCREMENT
des Wertes 1. Sodann wird das zweite Wort des TCP-Headers unter der
Adresse 306 in den Strompuffer 44 geschrieben. Wenn das zweite
Wort des TCP-Headers den Zähler 106 durchläuft, inkrementiert
die Inkrement-Steuereinrichtung 104 den
Wert 306 in dem Register 102 mittels ADDRESS_INCREMENT
des Wertes 1. Sodann wird das dritte Wort des TCP-Headers unter der
Adresse 307 in den Strompuffer 44 geschrieben. Das Inkrementieren
mit ADDRESS_INCREMENT des Wertes 1 wird in einer der Größe des TCP-Headers
entsprechenden Häufigkeit
wiederholt. Somit wird der TCP-Header in den in 5B schraffiert
dargestellten Bereich in dem Strompuffer 44 geschrieben.
-
Wenn
die IP-Header 134 als ein zusammenhängender Burst über den
PCI-Bus 24 übertragen werden,
erzeugt der Adressenumsetzer 54 anschließend Schreibadressen
entsprechend den zuvor reservierten Speicherplätzen für die IP-Header in dem Strompuffer 44.
-
Bevor
die IP-Header, die als ein zusammenhängender Burst 134 übertragen
worden sind, am Strompuffer 44 ankommen, wird – genauer
gesagt – ein
Wert 300 in dem Register 102 als Start-Schreibadresse festgelegt,
woraufhin das erste Wort des ersten IP-Headers unter der Adresse
300 in den Strompuffer 44 geschrieben wird. Wenn das erste
Wort des ersten IP-Headers den Zähler 106 durchläuft, inkrementiert
die Inkrement-Steuereinrichtung 104 den Wert 300 in dem
Register 102 mit ADDRESS_INCREMENT des Wertes 1. Sodann
wird das zweite Wort des ersten IP-Headers unter der Adresse 301 in den
Strompuffer 44 geschrieben. Wenn das zweite Wort des ersten
IP-Headers den Zähler 106 durchläuft, inkrementiert
die Inkrement-Steuereinrichtung 104 den
Wert 301 in dem Register 102 mit ADDRESS_INCREMENT des
Wertes 1. Sodann wird das dritte Wort des ersten IP-Headers unter der
Adresse 302 in den Strompuffer 44 geschrieben. Die Inkrementierung
mit ADDRESS_INCREMENT des Wertes 1 wird in einer der Größe des IP-Headers
entsprechenden Häufigkeit
wiederholt.
-
Sodann
inkrementiert die Inkrement-Steuereinrichtung 104 den Inhalt
in dem Register 102 mit ADDRESS_INCREMENT eines Wertes,
welcher der Größe des TCP-Headers
+ der Größe der IP-Nutzlast entspricht.
Sodann beginnt das Schreiben des zweiten IP-Headers von der dem Inhalt des Registers 102 entsprechenden
Adresse aus. Somit werden die IP-Header in die in 5C dargestellten
schraffierten Bereiche in dem Strompuffer 44 geschrieben.
-
Anschließend wird
die TCP-Prüfsumme,
die durch den TCP-Prüfsummen-Block 56 komplettiert ist,
an die richtige Stelle kopiert.
-
Auf
diese Weise wird die TCP/IP-Paketierung vervollständigt bzw.
abgeschlossen und kann in linearer Weise aus dem Strompuffer 44 gelesen
werden.
-
Bei
der obigen Ausführungsform
ist die TCP/IP-Paketierung erwähnt
worden. Es ist jedoch möglich,
anstelle des TCP-Protokolls das UDP-Programm (Benutzer-Datenpaket-Programm)
zu verwenden. In diesem Fall beträgt die Standardgröße des UDP-Headers
zwei Wörter
(8 Bytes).
-
Darüber hinaus
sind bei der obigen Ausführungsform
der TCP-Header und die IP-Header
von dem Host 28 zu dem Tx-Adressenumsetzer 54 als unterschiedliche
Bursts übertragen
worden. Es ist jedoch möglich,
den TCP-Header und die IP-Header gemeinsam als einen zusammenhängenden
Burst von dem Host 28 zu dem Tx-Adressenumsetzer 54 zu übertragen.
-
Tx-RAID- oder
SDI-Block
-
In
die Folge der Wörter
in dem Strompuffer 44 können
Paritätswörter eingefügt sein.
Diese Redundanz stellt ein Mittel bzw. einen Weg zur Korrektur von
Fehlern bereit. Der Tx-RAID- oder SDI-Block 60 nimmt eine
Folge von N+1 Wörtern
ein, von denen das letzte Wort die Parität bezüglich den N ersten Wörtern darstellt.
In dem Fall, dass durch Hardware und/oder Software angegeben wird,
dass ein Wort M verfälscht
ist, beispielsweise aufgrund eines Diskausfalls, wird das Paritätswort aus
der Speichervorrichtung 20 abgerufen und zum Rekonstruieren
bzw. Wiederherstellen des Wortes M herangezogen.
-
Im
Falle der 4 enthalten beispielsweise die
Wörter
3, 6, 9, 12, 15, 18 von der fehlerhaften Disk 2 in den Eingangsdaten 142 einen
Fehler, wie dies in 6 gezeigt ist. Der Tx-RAID-Block 60 stellt das
Wort 3 unter Heranziehung der Wörter
1, 2 und des Paritätswortes
0 wieder her. Der Tx-RAID-Block 60 stellt das Wort 6 unter
Heranziehung der Wörter
4, 5 und des Paritätswortes
1 wieder her. In entsprechender Weise werden die Wörter 9,
12, 15, 18 durch den Tx-RAID-Block 60 wieder hergestellt.
Damit führt der
Tx-RAID-Block 60 eine Fehlerkorrektur aus und gibt die
Folge bzw. Sequenz 142 der Wörter 1, 2, 3, 4, ... ohne Fehler
ab.
-
Die
RAID-Funktion kann durch den Befehlsblock 66 ein-/ausgeschaltet
werden.
-
Verkehrsformer
-
Der
Verkehrsformer 62 besteht aus zwei Hauptabschnitten; der
eine Abschnitt verarbeitet Daten hoher Priorität, wie einen Videoverkehr,
und der andere Abschnitt für
eine niedrige Priorität
verarbeitet einen allgemeinen Datenverkehr.
-
Der
Abschnitt hoher Priorität
ist in mehrere Verkehrsklassen gegliedert, wobei eine Klasse eine Gruppe
von einem oder mehreren Strömen
darstellt, die dieselbe Bitratencharakteristik aufweisen. So gehören beispielsweise
sämtliche
Ströme
einer CBR-Rate (das ist eine konstante Bitrate) von 2Mbps zur selben
Klasse. Eine Klasse des VBR-Typs (mit variabler Bitrate) enthält in typischer
Weise lediglich einen Strom, da es unwahrscheinlich ist, dass zwei VBR-Ströme stets
identische Bandbreitenmuster aufweisen. Jede Klasse weist einen
einzigen Satz von Übertragungsparametern
zur Steuerung der Bitrate auf, die für einen niedrigen CDV-Wert
(Zellverzögerungs-Variation) und für eine genaue
Ratengeschwindigkeit sorgen. Die Anzahl der Klassen ist programmierbar,
allerdings auf maximal 128 begrenzt.
-
Jede
Klasse weist zwei Hauptübertragungsparameter
auf, eine ideale vorgesehene bzw. programmgemäße Zeit (TS) und ein Inkrement
(Δ) für die Zeit
TS. Der Grundmechanismus besteht darin, dass dann, wenn die Zeit
TS gleich einem Referenztakt oder kleiner als dieser wird, ein Stromzeiger
in die Übertragungsschlange
eingesetzt wird. Zugleich wird der Wert TS mit dem Wert Δ inkrementiert.
Die Übertragungsschlange
ist eine FIFO-Schlange, in der die erste eingegebene Information
die erste ausgegebene Information ist und die den durch den Stromzeiger
bezeichneten Strom an den ATM-FIFO-Speicher 72 sobald wie
möglich
abgibt.
-
In
dem Abschnitt hoher Priorität
werden eine hochgenaue Bitrate und ein niedriger CDV-Wert durch
folgende Mechanismen erzielt.
-
Aufgrund
der endlichen Auflösung
des Referenztaktes mit üblicherweise
einem einzigen Δ-Wert wird
nicht die gewünschte
Genauigkeit erzielt. Um die gewünschte
Genauigkeit zu erreichen, werden zwei Δ-Werte abwechselnd verwendet,
die gerade einen Zählerwert
auseinander liegen. Diese beiden Werte führen zu einer Rate, die etwas
oberhalb und etwas unterhalb der geforderten Bitrate liegt. Unter
Heranziehung des jeweiligen Δ-Wertes
für unterschiedliche Zahlen
von Zellen erfolgt eine Kompensation bezüglich der begrenzten Taktauflösung, und
es kann eine beliebige Genauigkeit geliefert werden. ΔH und ΔL (wobei ΔL = ΔH +
1 gilt) repräsentieren
die beiden unterschiedlichen Inkrementwerte. Die NH-
und NL-Parameter repräsentieren die Anzahl der Zellen,
für die der
entsprechende Inkrementwert abwechselnd gültig ist. Durch diesen Mechanismus
wird der Strom moduliert, wodurch die mittlere Bitrate sich an die
geforderte Bitrate innerhalb der gewünschten Genauigkeit annähert. 7 zeigt
ein Verhalten einer Bitrate, die durch diesen Mechanismus erzielt
wird. In 7 werden NH-Zellen
mit ΔH übertragen,
und NL-Zellen werden mit ΔL übertragen.
Diese Folge wird zyklisch wiederholt. Damit wird die mittlere Bitrate,
wie durch eine gestrichelte Linie dargestellt, als Langzeit-Bitrate
aufrechterhalten.
-
Ein
niedriger CDV-Wert wird dadurch erzielt, dass die Kollisionen in
den vorgesehenen bzw. programmgemäßen Zeiten der Zellen von unterschiedlichen
Strömen
reduziert werden. Ein Hauptgrund von Kollisionen in vielen existierenden
Verkehrsformungsmechanismen liegt darin, dass Ströme derselben
Bitrate zur selben Zeit vorgesehen sind. Dies stellt insbesondere
dann ein Problem dar, wenn eine große Anzahl von Strömen und
eine niedrige Anzahl von unabhängigen
Bitraten vorliegen. Diesem Problem wird bei der bevorzugten Ausführungsform durch
gleichmäßiges Beabstanden
der Zellen von Strömen
angegangen, die zur selben Klasse gehören. Falls das Inkrement für einen
Strom gegeben sein sollte mit Δ,
dann heißt
dies mit anderen Worten ausgedrückt,
dass das Inkrement für
die Klasse gegeben ist mit Δ/n,
wobei n die Anzahl der Ströme
innerhalb einer Klasse ist. Jedes Mal, wenn eine Klasse zu bedienen
bzw. zu berücksichtigen
ist, werden die Daten aus aufeinander folgenden Strömen herangezogen.
Falls beispielsweise Zellen des zur Klasse 0 gehörendes Stromes 0 durch Δ inkrementiert
werden sollten, wird jede Zelle der Ströme (das sind der Strom 0 – Strom
n-1), die zur selben Klasse 0 gehören, mit dem Abstand von Δ/n übertragen,
wie dies in 8 veranschaulicht ist.
-
Durch
die Kombination der obigen beiden Mechanismen werden eine Bitrate
mit hoher Genauigkeit und ein niedriger CDV-Wert erzielt. Falls
die Übertragungsschlange
nicht blockiert wird, werden die Zellen abgegeben, wie dies in 9 veranschaulicht
ist.
-
Der
Bereich bzw. Abschnitt hoher Priorität verarbeitet außerdem den
VBR-Verkehr. Der Verkehrsformer 62 unterstützt eine
gleichmäßige Aktualisierung
der Übertragungsparameter.
Diese Aktualisierung kann durch den Host 28, jedoch auch
durch den Befehlsblock 66 erfolgen. Der Befehlsblock 66 wird
durch den Host 28 programmiert, und seine Aktionen werden
getriggert, wenn von einer exakten Stelle aus dem Strompuffer 44 übertragen
wird. Eine derartige Maßnahme
besteht darin, die Übertragungsparameter
für einen
spezifizierten Strom in dem Verkehrsformer 62 zu ersetzen.
Sobald die Daten unmittelbar vor einer Änderung in der Bitrate übertragen
sind, aktualisiert der Befehlsblock 66 die Parameter. Nach
erfolgter Einrichtung ist dieser Prozess autonom und erfordert keinerlei
Interaktion mehr seitens der Host-CPU 30. Infolgedessen braucht
der Host 28 nicht genau in dem Augenblick einzuwirken,
in welchem eine Interaktion erforderlich wäre. Auf diese Weise wird der
Echtzeitcharakter des Stromes aufrechterhalten, und die Hostbelastung wird
auf einem Minimum gehalten.
-
Der
Abschnitt bzw. Bereich niedriger Priorität ist beispielsweise in feste
32 Verkehrsklassen gegliedert, von denen eine Klasse eine Gruppe
aus einem oder mehreren Strömen
mit derselben PCR-Rate (Spitzen-Zellrate) darstellt. Hinsichtlich
des allgemeinen Datenverkehrs sind Echtzeit-Einschränkungen wesentlich
weniger signifikant. Das Hauptziel der Verkehrsformung des Abschnitts
niedriger Priorität besteht
darin, die PCR-Rate zu begrenzen, um eine Netzwerkkontrolle zu vermeiden.
Die Verkehrsformung der Datenpakete wird durch einen Mechanismus
unter Heranziehung einer idealen vorgesehenen Zeit (TS) und eines
Inkrementes (Δ)
für die
betreffende Zeit TS realisiert, was ähnlich dem Grund-Verkehrsformungsmechanismus
in dem Abschnitt hoher Priorität
ist. Die Festlegung der Datenpakete erhält jedoch eine niedrigere Priorität als der
Echtzeit-Verkehr. Lediglich dann, wenn die Übertragungsschlange des Abschnitts
hoher Priorität
leer ist, kann ein Strom der Datenpakete an den ATM-FIFO-Speicher 72 abgegeben
werden.
-
Der
Mechanismus wird mit einer Architektur realisiert, wie sie in 10 veranschaulicht
ist. Der Verkehrsformer 62 besteht aus dem Abschnitt 200 hoher
Priorität
und dem Abschnitt 202 niedriger Priorität, wie dies oben erwähnt worden
ist.
-
In
dem Abschnitt 200 hoher Priorität speichert ein Speicher 203 einen
Satz von neuen Übertragungsparametern
für jede
Klasse, die von dem Host 28 bereitgestellt wird bzw. vorgesehen
ist. Jeder Satz der neuen Übertragungsparameter
besteht aus den Größen TSi, ΔHi, ΔLi, NHi, NLi und PTi, wobei
0 ≤ i ≤ 127 gilt.
Bei dieser Ausführungsform
enthält
PTi einen oder mehrere Stromzeiger, die
einen oder mehrere Ströme
angeben, welche der Klasse i angehängt sind. Ein Speicher 206 speichert
aktuelle Übertragungsparameter.
Wenn ein Befehl durch den Host 28 oder den Befehlsblock 66 veranlasst
wird, wird durch den Befehl eine Aktualisierungslogik 204 getriggert, wodurch
die aktuellen Übertragungsparameter
in dem Speicher 206 durch die neuen Übertragungsparameter in dem
Speicher 203 aktualisiert werden. Ein Register 212 speichert
einen Parameter Nr-Klassen, der die Anzahl der Klassen von dem Host 28 auf
dessen Empfang hin angibt. Eine Verkehrslogik 208 überprüft bezüglich jeder
der Klassen von 0 bis Nr_Classes-1, ob TSi gleich
der aktuellen Zeit oder kleiner als diese ist, die durch einen Referenztakt 210 angegeben
ist. Falls dies der Fall ist, wird der Stromzeiger des an diese
Klasse i angehängten
ersten Stromes in die Übertragungsschlange 216 hoher
Priorität
eingefügt,
und TSi im Speicher 206 wird mit ΔHi oder
mit ΔLi dieser Klasse i durch die Verkehrslogik 208 inkrementiert.
Die Größen ΔHi
und ΔLi werden entsprechend NHi
und NLi abwechselnd genutzt. Der Segmentierungsblock 70 empfängt dann
den Stromzeiger von der Übertragungsschlange 216 hoher
Priorität
und führt
eine ATM-Zelle, die zu dem durch den Stromzeiger bezeichneten Strom
gehört,
in den ATM-FIFO-Speicher 72 ein.
-
In
dem Abschnitt 202 niedriger Priorität wird ein Satz von Übertragungsparametern
für jede
von dem Host 28 bereitgestellte Klasse in einem Speicher 218 gespeichert.
Bei dieser Ausführungsform
besteht jeder Satz der Übertragungsparameter
aus TSj, Δj und Ptj (wobei
0 ≤ j ≤ 31 gilt).
Ptj enthält
einen oder mehrere Stromzeiger, die einen oder mehrere an die Klasse
j angehängte
Ströme
anzeigen. Eine Verkehrslogik 220 überprüft jede der Klassen 0 bis 31, falls
TSj gleich der aktuellen Zeit oder kleiner
als diese ist, welche durch den Referenztakt 210 angegeben
wird, und sie überwacht
den Fall, dass die Übertragungsschlange 216 hoher
Priorität
leer ist. Falls dies der Fall ist, wird der an diese Klasse j angehängte Stromzeiger
des ersten Stromes in die Übertragungsschlange 222 niedriger
Priorität
eingefügt,
und TSj in dem Speicher 218 wird
mit Δj dieser Klasse j mittels der Verkehrslogik 220 inkrementiert.
Sodann empfängt
der Segmentierungsblock 70 den Stromzeiger von der Übertragungsschlange 222 niedriger Priorität und fügt eine
ATM-Zelle, die zu dem durch den Stromzeiger angezeigten Strom gehört, in den ATM-FIFO-Speicher 72 ein.
-
Bei
der obigen Ausführungsform
wird ein Verkehrsformungsmechanismus ähnlich dem Mechanismus des
Abschnitts 200 hoher Priorität beim Abschnitt 202 niedriger
Priorität
angewandt. Es kann jedoch bei dem Verkehrsformungsmechanismus des Abschnitts 202 niedriger
Priorität
ein Leaky-Bucket-Mechanismus angewandt werden kann.
-
Befehlsblock
-
In
eine Echtzeit-Datenabgabe sind zuweilen Aktionen eingeschlossen,
die an bestimmten Stellen im abgehenden Datenstrom auftreten. Diese
Aktionen müssen
unverzüglich
erfolgen, damit die Integrität
des Stromes aufrechterhalten wird. Aufgrund der vielen Verantwortlichkeiten
des Hosts 28 kann eine rechtzeitige Interaktion nicht immer
garantiert werden. Bei der bevorzugten Ausführungsform hat der Befehlsblock 66 die
Verantwortung, diese Interaktionen auszuführen. Im Prinzip weiß der Host 28 genau, wo
im abgehenden Datenstrom die Stromparameter eingestellt werden müssen. Da
jeder Strompuffer 44 statistisch zugeteilt wird, wie dies
oben erwähnt
wurde, ist es möglich,
eine Stelle, an der die Aktionen vorzunehmen sein sollten, im Lesezeiger
des Strompuffers 44 anzugeben. Der Host 28 lädt eine
Liste des Befehlsblocks 66 mit einer Anzahl von Befehlen zu
dem geeigneten Zeitpunkt. Der geeignete Zeitpunkt ist der Zeitpunkt
zwischen dem Laden des abgehenden Datenstromes in den Strompuffer 44 und dem
Zeitpunkt, zu dem der abgehende Datenstrom von dem Strompuffer 44 übertragen
wird. Der Befehlsblock 66 nimmt eine Abtastung des Lesezeigers des
Strompuffers 44 vor. Falls eine Übereinstimmung mit einer spezifizierten
Adresse ermittelt wird, wird ein Befehl, der mit der betreffenden Adresse
verkettet ist, ausgeführt,
und der Befehl wird aus dem Befehlsblock 66 eliminiert.
-
Der
Befehlsblock 66 nimmt eine Triggerung auf die Adresse der
Daten hin vor, die den Strompuffer 44 verlassen. Wenn ein
Strompuffer 44 gelesen wird, wird der Lesezeiger mit einem
Umlauf schrittweise inkrementiert. Jeder Strom weist eine verbundene
bzw. gekettete Liste auf, die Datenpaare (Adresse, Befehl) enthält, welche
entsprechend der Adresse zu speichern sind. Eine Adresse besteht
aus einem Angabenpaar (L, M), welches die Adresse in der Datei angibt
und welche von der physikalischen Adresse unabhängig ist. Mit L ist die Anzahl
der Blöcke
bezeichnet, wobei eine Blockgröße gleich
der Größe des Strompuffers 44 ist.
M ist die Sequenznummer im letzten Block. Jeder Strom enthält einen WAC-Zähler (Umlaufzähler), der
die Häufigkeit
zählt, mit
der der Lesezeiger umgelaufen ist. Eine Adressenübereinstimmung wird festgestellt,
wenn
L = WAC ist und wenn M = Lesezeiger – Puffer-Offset ist.
-
Dieser
Mechanismus wird wie folgt realisiert. 11 veranschaulicht
in einem Blockdiagramm den Befehlsblock 66. Der Befehlsblock 66 besteht
aus mehreren Befehlsgeneratoren 300. Jeder Befehlsgenerator 300 behandelt
bzw. bearbeitet die Befehle für jeden
abgehenden Datenstrom. Der Host 28 lädt zum in Frage kommenden Zeitpunkt
eine Liste von Befehlen in dem Befehlsregister 316 in den
jeweiligen Befehlsgenerator 300.
-
In
einem Befehlsgenerator 300 speichert ein Register 302 einen
Puffer-Versatz bzw. -Offset. Ein Komparator 304 vergleicht
den Puffer-Offset in dem Register 302 mit dem Lesezeiger
des Strompuffers 44. Wenn ein Umlauf erfolgt, zieht der
Lesezeiger den Puffer-Offset heran. Wenn durch den Komparator 304 eine Übereinstimmung
ermittelt wird, wird daher der WAC-(Umlauf)-Zähler 306 inkrementiert.
Der Komparator 308 vergleicht die Zählerstellung des WAC-Zählers 306 mit
der aktuellen Größe L, die
von dem Befehlsregister 316 geliefert wird. Ein Komparator 310 vergleicht
die aktuelle Größe M, die
von dem Befehlsregister 316 bereitgestellt wird, mit dem
Lesezeiger – Puffer-Offset.
Wenn durch den Komparator 308 und den Komparator 310 Übereinstimmungen ermittelt
werden, entfernt das UND-Glied 312 einen durch eine Warteschlange 314 gespeicherten
aktuellen Befehl. Jedes Mal, wenn ein aktueller Befehl entsprechend
der aktuellen Adresse (L, M) von der Warteschlange 314 abgegeben
wird, wird ein einer nächsten
Adresse entsprechender Befehl aus dem Befehlsregister 316 in
die Warteschlange 314 eingereiht. Somit weist jedes Befehlsregister 300 Befehle entsprechend
einem Lesezeiger des Strompuffers 44 an.
-
Die
von dem Befehlsblock 66 anzuweisenden Befehle sind:
Ändern der
Bitrate: dieser Befehl ermöglicht
es, eine Strombandbreite zu ändern.
Wenn dieser Befehl angewiesen wird, löst der Verkehrsformer 62 einen Strom
aus seiner aktuellen Klasse heraus, aktualisiert die Δ-Werte für die aktuelle
Klasse, hängt
den Strom an eine neue Klasse an und aktualisiert die verbundenen
bzw. geketteten Δ-Werte der neuen Klasse.
Somit wird die Bitrate von individuellen Strömen an bestimmten Stromstellen
geändert.
Dies ist beispielsweise für
einen MPEG-Bitstrom mit variabler Bitrate (VBR) von Nutzen.
-
Einfügen von
RCI: Dieser Befehl ermöglicht das
Einfügen
eines Ratenänderungs-Zeigers bzw. -Hinweises
(RCI) an einer bestimmten Stelle im Strom. Dieser RCI-Anzeiger ist imstande,
dem entfernt liegenden Terminal (zum Beispiel der SetTopBox
18)
die Ratenänderungen
zu den betreffenden Augenblick zu melden und eine Taktwiedergewinnung
für MPEG-Decoder
zu unterstützen.
Die Einzelheit bezüglich
des RCI-Zeigers ist als „Datenrate-Daten" in der europäischen Patentanmeldung
EP 0 712 250 A2 beschrieben.
Wenn dieser Befehl angewiesen wird, erzeugt der RCI-Generator
68 den
RCI-Zeiger, und der Segmentierungsblock
70 beendet die gegenwärtige Segmentierung,
und eine gesonderte AAL-5-PDU-Einheit (eine ATM-Zelle) wird für den RCI-Zeiger erzeugt. Dies
ist für
den MPEG-Bitstrom mit der variablen Bitrate VBR von Nutzen.
-
Einschalten
von RAID: Dieser Befehl stellt die in Frage kommenden Parameter
in dem Tx-RAID-Block 60 für die Fehlerkorrektur ein.
-
Ausschalten
von RAID: Diese Funktion ist die inverse Funktion der obigen Freigabe-RAID-Funktion.
-
Ausführen eines
Byte-Austausches: Dieser Befehl ermöglicht es, mit den Problemen
des Klein-Endenders (little Endian)/Groß-Endenders (big Endian) zwischen
dem Server 10 und der SetTopBox 18 fertig zu werden.
Wenn dieser Befehl angewiesen wird, nimmt der Byte-Austauscher 64 eine
Um- bzw. Neuordnung der Bytes innerhalb eines Wortes 350 im
abgehenden Strom in eine Reihenfolge eines Wortes 352 vor,
wie dies in 12 gezeigt ist.
-
Einschalten
einer unterschiedlichen PDU-Größe: Das
TCP-Protokoll kann eine Segmentierung erfordern. Ein TCP-Paket ist
in verschiedene IP-Pakete aufzuteilen. Das letzte IP-Paket benötigt üblicherweise
eine unterschiedliche AAL-5-PDU-Größe als das vorhergehende Paket. Wenn
dieser Befehl angewiesen wird, ändert
der Segmentierungsblock 70 die AAL-5-PDU-Größe.
-
Unterbrechung
der CPU: Dies stellt die generellste Funktion dar. Sie verlangt
von der Host-CPU 70 auf die Ermittlung einer bestimmten
Stelle in dem Strom hin eine Interaktion.
-
VPI/VCI-Filterungsblock
-
13 zeigt
ein Format einer in einem Benutzer-Netzwerk-Interface (UNI) verwendeten ATM-Zelle.
Eine ATM-Zelle besteht aus 53 Bytes. Die ersten 5 Bytes bilden einen
ATM-Header, und die übrigen
48 Bytes tragen die Nutzlast. Die ersten vier Bits im ATM-Header
werden GFC (allgemeine Fluss-Steuerung) genannt. Die folgenden 24
Bits im ATM-Header werden VPI/VCI genannt. Tatsächlich besteht der VPI/VCI-Bereich
aus dem VPI-Bereich von 8 Bits und dem VCI-Bereich von 16 Bits.
Die folgenden 3 Bits im ATM-Header werden Nutzlasttyp (PT) genannt.
Das folgende 1 Bit im ATM-Header wird CLP (Zellverlust-Priorität) genannt.
Die letzten 8 Bits im ATM-Header werden HEC (Headerfehler-Steuerung)
genannt. Der VPI/VCI-Filterungsblock 84 empfängt derartige
ATM-Zellen von dem ATM-FIFO-Speicher 82.
-
Der
VPI/VCI-Filterungsblock 84 bestimmt, ob ein VPI/VCI-Bereich
der empfangenen ATM-Zelle ein Element des Satzes von VPI/VCI-Bereichen
ist, welches akzeptiert werden sollte; er bestimmt, zu welchem Strom
die ATM-Zelle gehört,
und er filtert OAM-(Operations-, Administrations- und Wartungs)-F5-Zellen.
Um diesen Filterungsprozess auszuführen, wird in einem VPI/VCI-Umsetzer 85 in
dem VPI/VCI-Filterungsblock 84 eine
VPI/VCI-Umsetzung von einer VPI/VCI-Angabe in eine interne Strom-ID ausgeführt.
-
Die
Aufgabe des VPI/VCI-Umsetzmechanismus besteht darin, einen Bereich
von legalen VPI/VCIs zuzulassen, so weit wie möglich, während zur selben Zeit eine
schnelle Umsetzung erleichtert wird. Vorzugsweise sollten sämtliche
VPI/VCI-Angaben erlaubt sein. Die VPI/VCI-Umsetzung kann unter Heranziehung
von konventionellen binären
Suchverfahren erfolgen. Aufgrund der Zeitbeschränkungen liegt jedoch die größte akzeptable
Suche in der Größenordnung
einer binären
Suche von 512 Einträgen. Andererseits
sollte die maximale Anzahl von aktiven VPI/VCI-Angaben größer sein als 512, um gleichzeitige
Kommunikationen mit einer großen
Anzahl von Clients zu unterstützen.
-
Um
die Aufgabe zu erfüllen,
ist die VPI/VCI-Tabelle in Abschnitte von 512 Einträgen unterteilt.
Jeder Eintrag gibt eine Beziehung zwischen einer VPI/VCI-Angabe
und einer internen Strom-ID an und ist in Abhängigkeit von einem Verteilungsmechanismus
in einen bestimmten Abschnitt eingegeben; innerhalb jedes Abschnitts
sind die Einträge
geordnet.
-
Auf
den Empfang einer ATM-Zelle hin kann, nachdem der korrekte Abschnitt
gefunden worden ist, eine binäre
Suche in dem betreffenden Abschnitt ausgeführt werden, um den korrekten
Eintrag zu finden. Daher muss der Verteilungsmechanismus zur Verteilung
der VPI/VCI-Angaben eine unverzügliche Indizierung
in einem Abschnitt gemäß der VPI/VCI-Angabe
ermöglichen.
Um eine effiziente Nutzung der VPI/VCI-Tabelle zu ermöglichen,
muss der Mechanismus darüber
hinaus eine weite Verteilung der VPI/VCI-Angaben ermöglichen.
Mit anderen Worten ausgedrückt
heißt
dies, dass der Mechanismus die Einträge so zufällig wie möglich über die gesamte VPI/VCI-Tabelle
verteilen muss. Falls eine VPI/VCI-Angabe in einem Abschnitt der
VPI/VCI-Tabelle abgebildet wird, der bereits voll ist, muss sie
sogar dann zurückgewiesen
werden, wenn in anderen Abschnitten Platz vorhanden ist.
-
Ein
Verteilungsmechanismus, der zu den Anforderungen passt, besteht
darin, einfach die unteren X Bits (wobei X eine ganze Zahl ist,
die beispielsweise 3 beträgt)
der VCI- Angabe als
Hash-Schlüssel
zu verwenden, um eine Indizierung in der VPI/VCI-Tabelle vorzunehmen. Es ist angemessen,
dass bei Vorliegen einer großen
Anzahl von aktiven VP/VC-Einrichtungen die unteren Bits die zufälligsten Bits
der 24 Bits des VPI/VCI-Feldes sind und eine gleichmäßige Verteilung
ermöglichen.
-
Unter
Heranziehung dieser Art von Mechanismus werden die Anforderungen
nach einem schnellen Nachschlagen und nach keinen illegalen oder
unzulässigen
VPI/VCI-Angaben
erfüllt.
Der Mechanismus wird wie folgt realisiert.
-
14 zeigt
ein Blockdiagramm des VPI/VCI-Umsetzers 85. Wenn eine neue
VP/VC-Einrichtung
aktiv wird, werden ein neuer Eintrag, der eine VPI/VCI-Angabe der
betreffenden neuen VP/VC-Einrichtung angibt, und eine interne Strom-ID,
die der betreffenden VPI/VCI-Angabe entspricht, in einen Abschnitt
entsprechend den unteren drei Bits der VCI-Angabe (das sind die
Bits 7, 6, 5 des vierten Bytes in 13) durch
eine Hash-Funktion 400 eingegeben. Falls die unteren drei
Bits der VCI-Angabe gegeben sind mit 000, wird genauer gesagt der
Eintrag im Abschnitt 1 der VPI/VCI-Tabelle 402 gespeichert. Falls
die unteren drei Bits der VCI-Angabe gegeben sind mit 001, wird
der Eintrag im Abschnitt 2 in der VPI/VCI-Tabelle 402 gespeichert.
Falls die unteren drei Bits der VCI-Angabe gegeben sind mit 010,
wird der Eintrag im Abschnitt 3 in der VPI/VCI-Tabelle 402 gespeichert.
In entsprechender Weise werden alle neuen Einträge in in Frage kommenden Abschnitten
entsprechend den unteren drei Bits der VCI-Angabe gespeichert. Somit
ist die VPI/VCI-Tabelle 402 mit beispielsweise 4096 Einträgen in bis
zu acht Abschnitten (Abschnitt 1-8) von beispielsweise 512 Einträgen unterteilt.
Innerhalb jedes Abschnitts sind die Einträge in aufsteigender oder abnehmender
Reihenfolge aufgezeichnet, um eine binäre Suche zu realisieren.
-
Auf
den Empfang einer ATM-Zelle hin wird die VPI/VCI-Angabe der empfangenen
ATM-Zelle einer Suchmaschine 420 und der Hash-Funktion 400 bereitgestellt.
Die Hash-Funktion 400 stellt einen Abschnitts-Index auf
der Grundlage der unteren drei Bits VPI/VCI-Angabe für die Suchmaschine 420 bereit.
Sodann wird durch die Suchmaschine 420 eine binäre Suche über einen
bzw. in einem Abschnitt ausgeführt,
der dem Abschnitts-Index entspricht, um den korrekten Eintrag zu
ermitteln. Falls beispielsweise die unteren drei Bits der VCI-Angabe
der empfangenen ATM-Zelle gegeben sind mit 010, liefert die Hash-Funktion 400 eine
3 als Abschnitts-Index für
die Suchmaschine 420. Die Suchmaschine 420 führt dann
eine binäre
Suche über
den bzw. in dem Abschnitt 3 aus, um den korrekten Eintrag zu ermitteln und
um eine interne Strom-ID des ermittelten Eintrags abzugeben. Falls
die unteren drei Bits der VCI-Angabe der empfangenen ATM-Zelle gegeben sind
mit 111, liefert die Hash-Funktion 400 eine
8 als Abschnitts-Index für
die Suchmaschine 420. Die Suchmaschine 420 führt sodann
eine binäre
Suche im bzw. über
den Abschnitt 8 aus, um einen korrekten Eintrag zu ermitteln und
um eine interne Strom-ID des ermittelten Eintrags abzugeben. Die
abgegebene interne Strom-ID wird für den Filterungsprozess verwendet.
-
Bei
der obigen Ausführungsform
sind die unteren drei Bits des VPI/VCI-Feldes einfach als Abschnitts-Index
verwendet worden. Eine komplexere Hash-Funktion kann jedoch über bzw.
in dem VPI/VCI-Feld angewandt werden, um einen Abschnitts-Index
zu erzeugen.
-
Wenn
bei der obigen Ausführungsform
eine neue VP/VC-Einrichtung aktiv wird, wird der neue Eintrag durch
die Hash-Funktion 400 in einen in Frage kommenden Abschnitt
eingegeben. Es ist jedoch möglich,
eine neue VPI/VCI-Tabelle zu erzeugen, die den neuen Eintrag im
Host 28 enthält,
der eine Hash-Funktion desselben Mechanismus aufweist wie die Hash-Funktion 400,
die neue VPI/VCI-Tabelle zu dem VPI/VCI-Umsetzer 85 zu übertragen
und die VPI/VCI-Tabelle 402 mit der neuen VPI/VCI-Tabelle zu aktualisieren.
-
Muster-Detektor
-
Der
Host 28 weiß aus
einer bestimmten VC-Einrichtung, welche Art von Daten ankommen. Der
Host 28 weist den Muster-Detektor 92 per VC-Angabe
an, welches Muster abzutasten ist. Der Zweck des Muster-Detektors 92 besteht
darin, ein zuvor festgelegtes Bitmuster im ankommenden Datenstrom
zu detektieren. Jedes Mal, wenn eine Übereinstimmung ermittelt wird,
informiert der Muster-Detektor 92 den Host 28 über den
Zustand „der
ermittelten Daten".
Wenn der Host die Information über
die Ermittlung empfängt,
fügt er
die Adresse, unter der diese auftritt, in einer Liste in dem Host-Speicher 32 an. Da
die Ermittlung selbst automatisch abläuft, kann der Host 28 in der
Zwischenzeit andere Aufgaben wahrnehmen. Der Host 28 braucht
lediglich in dem Fall unterbrochen zu werden, dass das zuvor festgelegte
Bitmuster ermittelt wird und dass die Aktion ausgeführt werden
kann.
-
15 zeigt
ein Blockdiagramm des Muster-Detektors 92. Bevor der ankommende
Datenstrom über
den Empfangspfad 80 übertragen
wird, weist der Host 28 die Musterdetektier-Steuereinrichtung 506 per
VC-Angabe an, nach welchem Muster abzutasten ist. Die Musterdetektier-Steuereinrichtung 506 kann
vier vorprogrammierte Bitmuster mit einer Breite von 32 Bits im
Register 504 je Strom festlegen. Die Abgleichschaltung 500 führt einen Byte-Abgleich
des ankommenden Datenstromes aus. Die Abstimmungsschaltung 502 führt einen
Abgleich des abgeglichenen Bytes gegenüber vier vorprogrammierten
Bitmustern pro Strom aus. Jedes Mal, wenn eine Übereinstimmung ermittelt wird,
informiert die Abstimmungsschaltung 502 die Steuereinrichtung 506 über die
Ermittlung.
-
Ein
Beispiel des Zwecks des Muster-Detektors 92 besteht darin,
die Stellen eines I-Bildes
in einem Videobitstrom zu ermitteln, der entsprechend dem MPEG-Standard
komprimiert ist. Im MPEG-Bitstrom ist ein Bild, welches unmittelbar
einem GOP-Header
folgt, stets ein I-Bild. Daher ist es möglich, eine Lage bzw. Stelle
des I-Bildes dadurch zu ermitteln, dass der Gruppen_Start_Code (32
Bits), der den Beginn des GOP-Headers bestimmt, und ein Bild_Start_Code
(32 Bits), der den Beginn des Bild-Headers bestimmt, ermittelt werden.
-
Wenn
beispielsweise ein MPEG-Bitstrom eines Filmes von einer anderen
SMU-Einheit 12 übertragen
wird, um den Film zu kopieren bzw. zu duplizieren, werden der Gruppen_Start_Code
und der Bild_Start_Code in dem Register 504 als zuvor festgelegte
Bitmuster festgelegt. Der Muster-Detektor 92 ermittelt
den Gruppen_Start_Code und den Bild_Start_Code in dem empfangenen
MPEG-Bitstrom. Jedes Mal, wenn in der Abstimmungsschaltung 502 ein
Bild_Start_Code unmittelbar nach der Ermittlung eines Gruppen_Start_Code
ermittelt wird, informiert die Musterdetektier-Steuereinrichtung 506 die
Host-CPU 30 über
den Ermittlungszustand. Die Host-CPU 30 fügt eine
Adresse der Speichervorrichtung 20, in der das I-Bild gespeichert
ist, zu einer Liste in dem Host-Speicher 32 hinzu. Somit
wird die Liste, welche die Lagen des I-Bildes angibt, errichtet, während der
MPEG-Bitstrom in den Empfangspfad 80 strömt.
-
Die
Liste wird für
den Videokassettenrecorder-(VCR)-Betrieb verwendet, wenn der gespeicherte
MPEG-Bitstrom zu der SetTopBox 18 übertragen wird. Falls die SetTopBox 18 einen
VCR-Betrieb (beispielsweise einen schnellen Vorlauf FF, einen schnellen
Rücklauf
FR) fordert, bezieht sich der Host 28 auf diese Liste und
weist die Speichervorrichtungs-Steuereinrichtung 22 dahingehend
an, auf die I-Bilder zuzugreifen und diese abzuholen.
-
Unter
Heranziehung dieses Merkmals stellen die in der Speichervorrichtung 20 gespeicherten
Daten „Rohdaten" dar, und sie sind
für eine
bestimmte Anwendung nicht formatiert. Dies steigert die „Anwendungsunabhängigkeit" und Interoperabilität des Serversystems 10 (1).
-
Rx-Adressenumsetzer
-
Der
Zweck des Rx-Adressenumsetzers 96 besteht darin, verschiedene
(nicht zusammenhängende)
Wörter
von einem Strompuffer 46 zu sammeln und Burstdaten für den PCI-Bus 24 zu
erzeugen. Grundsätzlich
handelt es sich hierbei um die inverse Funktion der Adressenumsetzung
des Tx-Adressenumsetzers 54. Der Unterschied besteht darin,
dass in diesem Fall eine dynamische Pufferstruktur berücksichtigt
werden muss. Die Burstdaten werden über den PCI-Bus 24 zu
der Speichervorrichtung 20 oder zu dem Host 28 übertragen.
-
16 veranschaulicht
ein Beispiel einer Adressenumsetzung, die auf einen ankommenden Datenstrom
angewandt ist, der in der Disk 0, 1, 2 und 3 der Speichervorrichtung 20 zu
speichern ist. Bei diesem Beispiel wird durch den Rx-Adressenumsetzer 96 die
folgende Sequenz von Leseadressen für den Strompuffer 48 erzeugt,
um Burstdaten 600 zu erzeugen.
178, 182, 13, 17, 1099,
1103 (für
die Disk 0)
179, 183, 14, 18, 1100, 1104 (für die Disk 1)
180, 184,
15, 19, 1101, 1105 (für
die Disk 2)
181, 185, 16, .... (für die Disk 3)