-
HINTERGRUND
DER ERFINDUNG
-
Die
vorliegende Erfindung bezieht sich auf eine Befehlsausgabevorrichtung
für eine
serielle Hochgeschwindigkeitsschnittstelle.
-
In
den letzten Jahren wird IEEE-1394-Schnittstellen Aufmerksamkeit
als serielle Hochgeschwindigkeitsschnittstellen für die Verbindung
von audiovisuellen Geräten
und Computern zuteil. Die IEEE-1394-Technologie kann nicht nur zur Datenübertragung
zwischen Computern über
ATAPI (AT Attachment Packet Interface) und SCSI (Small Computer
System Interface), die herkömmliche
parallele Schnittstellen sind, verwendet werden, sondern auch für Datenübertragung
zwischen audiovisuellen Geräten.
Dies liegt daran, dass IEEE 1394 asynchrone Kommunikation und isochrone
Kommunikation definiert.
-
Wenn
Computerdaten auf einer Magnetplatte wie einer Festplatte oder auf
einer optischen Speicherplatte wie einer DVD-RAM gespeichert werden oder
wenn Computerdaten, die auf einer solchen Platte gespeichert sind,
von einem Hostrechner mittels der IEEE-1394-Technologie gelesen
werden, werden üblicherweise
ein Steuerbefehl und Daten mittels asynchroner Kommunikation gesendet. SBP-2
(Serial Bus Protocol 2), ein Protokoll, das asynchrone Kommunikation
verwendet, ist gewöhnlich
für die
Datenübertragung
zwischen dem Hostrechner (Auslöseeinrichtung)
und der Festplatte oder der DVD-RAM (Ziel) verwendet worden.
-
Mit
dem Beginn des digitalen Rundfunks in Japan ist der Zusammenschluss
von audiovisuellen Geräten
und Computern beschleunigt worden, und es ist begonnen worden, eine
Festplatte und DVD-RAM als Aufzeichnungsmedium für eine Set-Top-Box (STB) zu
verwenden. Audiovisuelle Daten werden auf diesen Platten in einem
Format aufgezeichnet, das als Computerdatei verarbeitet werden kann,
um die Verwaltung und Aufbereitung von Daten zu erleichtern. In
einem solchen Fall ist es erforderlich, dass eine SBP-2-Auslösefähigkeit
in der STB, bei der es sich um ein audiovisuelles Gerät handelt,
bereitgestellt wird.
-
Weil
die vorherrschenden Geräte,
die über SBP-2-Auslösefähigkeit
verfügen,
Computer gewesen sind, haben über
ausreichende Geschwindigkeitsleistung verfügende Zentral einheiten (CPUs)
einem Programm entsprechend das Senden und den Empfang aller Pakete
gesteuert, insbesondere die Erzeugung von Paketen, die Operation
Request Blocks (ORBs) enthalten. In Bezug auf das Preis-Leistungs-Verhältnis ist
es jedoch schwierig, eine CPU einzubeziehen, die in einem audiovisuellen Gerät eine ausreichende
Geschwindigkeitsleistung bietet.
-
Des
Weiteren kann die CPU, wenn in einer Zielvorrichtung (wie einem
Festplatten-Laufwerk oder
DVD-RAM-Laufwerk) von einer Auslöseeinrichtung
(STB) audiovisuelle Daten aufgezeichnet oder Bilder wiedergegeben
oder aufbereitet werden, keine ausreichenden Befehlsverarbeitungsgeschwindigkeiten
bereitstellen, und daher kann die Übertragungsgüte der Zielvorrichtung
nicht vollständig
ausgeschöpft
werden. Überdies
kann die erforderliche Übertragungsleistung
des gesamten Systems nicht erreicht werden.
-
JP
2000-250846A beschreibt einen Sequenzprozessor zur Übertragung
von Daten mit einer hohen Geschwindigkeit, indem die Last auf einer CPU
während
der Ausführung
einer Befehlsverarbeitungs-Sequenz verringert wird. Der Sequenzprozessor
ist mit einer Link-Kernschaltung zum Empfangen eines Paketes von
einem Bus ausgestattet, mit einer Paketfilterschaltung zum Empfangen
des Paketes von der Link-Kernschaltung und zum Ausgeben eines Steuersignals,
das den Inhalten des Paketes entspricht, mit einer Sequenz-Steuerschaltung
zur Steuerung der Ausführung
der Befehlsverarbeitungs-Sequenz
in Reaktion auf das Steuersignal von der Paketfilterschaltung und
mit einer Paketverarbeitungsschaltung zum Ausgeben des Paketes aus
der Link-Kernschaltung an einen Befehlsempfangs-Puffer unter Steuerung
durch die Sequenz-Steuerschaltung. Auf Basis des Paketes, das in
dem Befehlsempfangs-Puffer gespeichert ist, führt die CPU den Befehl aus.
-
ÜBERSICHT ÜBER DIE
ERFINDUNG
-
Es
ist ein Ziel der vorliegenden Erfindung, Last auf einer CPU zu verringern,
wenn sie einen Befehl an eine Vorrichtung ausgibt, die über Auslösefähigkeit
einer seriellen Hochgeschwindigkeitsschnittstelle verfügt. Um das
Ziel zu erreichen, stellt die vorliegende Erfindung eine Befehlsausgabevorrichtung nach
Anspruch 1 bereit.
-
Nach
der vorliegenden Erfindung wird, sobald die CPU einen Befehls-ORB
oder einen Verwaltungs-ORB in ihrem Übertragungspuffer speichert und
die Sequenz- Steuerschaltung
aktiviert, keine zusätzliche
Last auf der CPU erzeugt, bis sie einen Status für den ausgegebenen ORB empfängt.
-
Nach
der vorliegenden Erfindung kann eine Auslösefähigkeit mit hoher Ansprechleistung
in der Befehlsausgabevorrichtung unter Verwendung einer nichtprogrammierten
Steuerung bereitgestellt werden.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
1A stellt
einen Aufbau eines BWRQ-Paketes auf einem IEEE-1394-Bus dar.
-
1B stellt
einen Aufbau eines QWRQ-Paketes auf dem IEEE-1394-Bus dar.
-
1C stellt
einen Aufbau eines WRS-Paketes auf dem IEEE-1394-Bus dar.
-
1D stellt
einen Aufbau eines BRRQ-Paketes auf dem IEEE-1394-Bus dar.
-
1E stellt
einen Aufbau eines BRRS-Paketes auf dem IEEE-1394-Bus dar.
-
2 stellt
ein Datenformat eines Verwaltungs-ORB in dem SBP-2 dar.
-
3 stellt
ein Datenformat eines Befehls-ORB in dem SBP-2 dar.
-
4 stellt
ein Datenformat eines Status in dem SBP-2 dar.
-
5 stellt
ein Schaubild zur Erklärung
der Verknüpfungen
zwischen Befehls-ORBs in dem SBP-2 dar.
-
6 stellt
ein Zustandsübergangsdiagramm
eines Ziels in dem SBP-2 dar.
-
7 stellt
ein Blockschaltbild eines Datenübertragungssystems
dar, in dem eine SBP-2-Befehlsausgabevorrichtung
nach der vorliegenden Erfindung bereitgestellt wird.
-
8 stellt
eine Sequenz zur Ausgabe eines Verwaltungs-ORB durch die Befehlsausgabevorrichtung,
die in 7 dargestellt wird, dar.
-
9A stellt
ein Ablaufdiagramm dar, das Operationen von Bestandteilen angibt,
die in 7 dargestellt werden, wenn der Verwaltungs-ORB
ausgegeben wird.
-
9B stellt
ein Ablaufdiagramm fortgesetzt von 9A dar.
-
10 stellt
eine Befehls-ORB-Ausgabe-Sequenz dar, die von der Befehlsausgabevorrichtung
ausgeführt
wird, die in 7 dargestellt wird.
-
11A stellt ein Ablaufdiagramm dar, das Operationen
der in 7 dargestellten Bestandteile angibt, wenn ein
Befehls-ORB ausgegeben wird.
-
11B stellt ein Ablaufdiagramm fortgesetzt von 11A dar.
-
12A stellt eine Sequenz zur Ausgabe verknüpfter Befehls-ORB
dar, die von der in 7 dargestellten Befehlsausgabevorrichtung
ausgeführt werden.
-
12B stellt ein Sequenzdiagramm fortgesetzt von 12A dar.
-
13A stellt ein Ablaufdiagramm dar, das Operationen
der in 7 dargestellten Bestandteile angibt, wenn die
verknüpften
Befehls-ORB ausgegeben werden.
-
13B stellt ein Ablaufdiagramm fortgesetzt von 13A dar.
-
13C stellt ein Ablaufdiagramm fortgesetzt von 13B dar.
-
14A stellt eine Sequenz zur Ausgabe eines zusätzlichen
Befehls-ORB durch die in 7 dargestellte Befehlsausgabevorrichtung
während
der Ausführung
verknüpfter
Befehls-ORBs dar.
-
14B stellt eine Sequenz fortgesetzt von 14A dar.
-
15A stellt ein Ablaufdiagramm dar, das Operationen
der in 7 dargestellten Bestandteile angibt, wenn der
zusätzliche
Befehls-ORB während der
Ausführung
der verknüpften
Befehls-ORBs ausgegeben wird.
-
15B stellt ein Ablaufdiagramm fortgesetzt von 15A dar.
-
15C stellt ein Ablaufdiagramm fortgesetzt von 15B dar.
-
15D stellt ein Ablaufdiagramm fortgesetzt von 15C dar.
-
16 stellt
eine Operationssequenz dar, die in der in 7 dargestellten
Befehlsausgabevorrichtung ausgeführt
wird, wenn ein Befehlsfehler auftritt.
-
17A stellt ein Ablaufdiagramm der in 7 dargestellten
Bestandteile dar, wenn der Befehlsfehler auftritt.
-
17B stellt ein Ablaufdiagramm fortgesetzt von 17A dar.
-
GENAUE BESCHREIBUNG
DER ERFINDUNG
-
Ausführungsformen
der vorliegenden Erfindung werden unten mit Bezug auf die beigefügten Zeichnungen
genau beschrieben werden. Die folgende Beschreibung beschränkt jedoch
nicht den technischen Anwendungsbereich der vorliegenden Erfindung.
-
1A bis 1E stellen
den Aufbau einiger der asynchronen Pakete dar, die im IEEE 1394 definiert
sind. IEEE 1394 definiert Anforderungspakete zur Anforderung von
Operationen und Antwortpakete zum Zurückgeben der Ergebnisse der
Operation, die mittels des Anforderungspaketes angefordert worden
war. Wenn eines dieser Pakete empfangen wird, wird ein Bestätigungspaket
(ACK-Paket) an die anfordernde Vorrichtung zurückgegeben, das den Zustand
des Empfangs des Paketes angibt. Das ACK-Paket gibt einen Zustand
wie „ack_complete" an, der die Vollendung
einer Operation angibt, "ack_pending", der angibt, dass
eine Anforderung empfangen worden ist und eine angeforderte Operation
durchgeführt
wird, und "ack_busy", der eine Anforderung
zum erneuten Senden (ack_busy) angibt. Ein Anforderungspaket und
ein Antwortpaket werden gewöhnlich
paarweise verwendet.
-
1A, 1B und 1D stellen
Anforderungspakete dar, jeweils ein BWRQ-Paket (Schreibanforderung
für ein
Datenblockpaket), ein QWRQ-Paket (Schreibanforderung für ein Datenquadletpaket)
und ein BRRQ-Paket (Leseanforderung für ein Datenblockpaket). Ein
WRS-Paket (Schreibantwortpaket), dargestellt in 1C,
ist für die
Schreibanforderungspakete (BWRQ und QWRQ) definiert. Ein BRRS-Paket
(Leseantwort für
ein Datenblockpaket), dargestellt in 1E, ist
für das BRRQ-Paket
definiert. Jedes dieser Anforderungs- und Antwortpakete enthält einen
Transaktionscode (tcode), der den Pakettyp bezeichnet, und einen Transaktionsbezeichner
(tl), der für
die Transaktion spezifische, angehängte Information darstellt.
Die Antwortpakete enthalten einen Antwortcode (rcode), der einen
Antwortzustand angibt. Der Transaktionstyp kann demnach durch den
tcode bestimmt werden, und ein Paar aus Anforderungs- und Antwortpaket
kann durch den tl bestimmt werden. Siehe den Standard IEEE 13941995
für weiterführende Informationen.
-
2, 3 und 4 stellen
ein in dem SBP-2 spezifiziertes Datenformat dar. Eine Auslöseeinrichtung
erzeugt einen ORB in ihrem Systemspeicher. Das SBP-2 definiert Verwaltungsbefehle
zur Verwaltung von Verbindungen zwischen der Auslöseeinrichtung
und einer Ziel- und Befehlsausführung. Diese
Befehle sind in einem in 2 dargestellten Verwaltungs-ORB
enthalten, um sie zu verarbeiten. Befehle wie ein READ-Befehl und
ein WRITE-Befehl sind in einem in 3 dargestellten
Befehls-ORB enthalten, um sie zu verarbeiten. Ein Befehl ist in
einem Command_block-Feld enthalten. 4 stellt das
Datenformat eines Status dar. Register wie ein MANAGEMENT_AGENT-Register
und ein CommandAgent-Register sind in einem CSR-Feld (Steuer- und
Status-Register-Feld) definiert. Das CommandAgent-Register besteht
aus AGENT_STATE-, AGENT_RESET-, ORB_POINTER- und DOORBELL-Registern.
-
5 stellt
Verknüpfungen
zwischen Befehls-ORB dar. Das in 3 dargestellte Next_ORB-Feld
eines Befehls-ORB, das mit keinem Befehls-ORB verknüpft ist,
ist auf Null gesetzt. Insbesondere gibt "1" im
Startbit des Next_ORB-Feldes Null an. Wenn andererseits der Befehls-ORB
A mit dem Befehl B verknüpft
wird, enthält
das Next_ORB-Feld
des Befehls A, der vor dem Befehls-ORB ausgegeben wurde, die Adresse
des Befehls B, wie im oberen Abschnitt von 5 dargestellt.
Dies gestattet es dem Ziel, einen Befehls-ORB an einer von dem Next_ORB-Feld
angegebenen Adresse zu erhalten, bis das Next_ORB-Feld eines erhaltenen
ORB-Befehls Null angibt.
-
Eine
Zustandsverwaltung, die von einem Ziel in dem SBP-2 ausgeführt wird,
wird unten mit Bezug auf 6 beschrieben werden. Wie in 6 dargestellt,
wird das Ziel mit den Zuständen
RESET, ACTIVE, SUSPEND und DEAD verwaltet. Diese vier Zustände werden
von einem AGENT_STATE-Register angegeben, das eines von CommandAgent-Registern darstellt.
Das Ziel ist während
des Hochfahrens im RESET-Zustand. Wenn auf das ORB-POINTER-Register
in dem Ziel zugegriffen wird und ein Befehls-ORB erhalten wird,
wechselt das Ziel in den ACTIVE-Zustand. Nach der Vollendung des
Befehls-ORB gibt es einen Status zurück und geht in den SUSPEND-Zustand über. Danach
geht das Ziel in den ACTIVE-Zustand über, wenn auf das ORB_POINTER-Register
oder auf das DOORBELL-Register zugegriffen wird und ein Befehls-ORB erhalten
wird, und wechselt nach der Rückgabe
eines Status in den SUSPEND-Zustand. Diese Sequenz wird wiederholt.
Wenn ein Befehls-ORB fehlerhaft endet oder ein Transaktionsfehler
in der Ausführungs-Sequenz
des Befehls-ORB auftritt, wechselt das Ziel in den DEAD-Zustand.
Weil das Ziel in dem DEAD-Zustand nicht weiterhin Befehls-ORBs erhalten
kann, veranlasst das Ziel die Auslöseeinrichtung, auf das AGENT_RESET-Register
zuzugreifen, um in den RESET-Zustand zurückzukehren.
-
7 stellt
ein Blockschaltbild eines Datenübertragungssystems
dar, in dem eine SBP-2-Befehlsausgabevorrichtung
nach der vorliegenden Erfindung bereitgestellt wird. In dem in 7 dargestellten
System ist eine Auslöseeinrichtung 1 mit
einem Ziel 2 über
einen IEEE-1394-Bus 3 verbunden. Die Auslöseeinrichtung 1 kann
eine STB sein, und das Ziel 2 kann zum Beispiel ein Festplattenlaufwerk oder
ein Laufwerk einer optischen Speicherplatte sein. Die Auslöseeinrichtung 1 enthält eine
CPU 10 und die Befehlsausgabevorrichtung 20. Die
Befehlsausgabevorrichtung 20 umfasst eine Bitübertragungsschicht-Steuerung (PHY) 21,
eine Sicherungsschicht-Steuerung (LINK) 22, einen asynchronen Sende-FIFO-Puffer
(ATF) 23, einen asynchronen Empfangs-FIFO-Puffer (ARF) 24,
ein Steuerungsregister-Modul 25, einen Sendefilter (TFIL) 26,
einen Empfangsfilter (RFIL) 27, eine Paketverarbeitungsschaltung
(PPRC) 28, eine Sequenz-Steuerschaltung (SQC) 29,
einen Befehls-ORB-Sendepuffer (COTB) 30, einen Verwaltungs-ORB-Sendepuffer (MOTB) 31,
einen Verwaltungs-Statusempfangs-Puffer (SRBM) 32 und einen
Befehls-Statusempfangs-Puffer
(SRBC) 33.
-
Die
Bitübertragungsschicht-Steuerung 21 ist in
der Lage, den Bus 3 zu initialisieren, Daten zu verschlüsseln/entschlüsseln, Arbitration
durchzuführen und
eine Vorspannung bereitzustellen/zu ermitteln. Die Sicherungsschicht-Steuerung 22 ist
in der Lage, Pakete zu senden und zu empfangen und einen Fehlerkorrekturcode
zu erzeugen/zu ermitteln. Der asynchrone Sende-FIFO-Puffer 23 speichert
ein zu sendendes Paket, und der asynchrone Empfangs-FIFO-Puffer 24 speichert
ein an die CPU 10 gerichtetes, empfangenes Paket. Das Steuerungsregister-Modul 25 ist
eine Registergruppe, die bei verschiedenen Steuerungsoperationen
verwendet wird, die von der CPU 10 beim Senden oder Empfangen eines
Paketes, beim Vornehmen der Anfangseinstellung zur Ausgabe eines
Befehls, beim Speichern eines ORB und beim Auslesen eines Status
verrichtet werden.
-
Der
Sendefilter 26 empfängt
eine Paketsendeanforderung von der Paketverarbeitungsschaltung 28 oder
eine Paketsendeanforderung von der CPU 10 und schreibt,
wenn der Sendepuffer 23 leer ist, das angeforderte Paket
in den Sendepuffer 23. Der Sendefilter 26 verfügt über eine
Arbitrationsfunktion, um einer der von der Paketverarbeitungsschaltung 28 bereitgestellten
Paketsendeanforderungen und einer gleichzeitigen Paketsendeanforderung
von der CPU 10 Vorrang einzuräumen. Er verfügt darüber hinaus über die
Funktion zu verhindern, dass ein Paket in den Sendepuffer 23 geschrieben
wird, wenn er nicht leer ist.
-
Der
Empfangsfilter 27 unterscheidet zwischen einem Paket, das
an die Paketverarbeitungsschaltung 28 gerichtet ist, und
einem Paket, das an die CPU 10 gerichtet ist. Der Empfangsfilter 27 bestimmt
insbesondere ein Paket als eines, das an die Paketverarbeitungsschaltung 28 gerichtet
ist, auf Basis von Informationen, die von der Paketverarbeitungsschaltung 28 bereitgestellt
werden, wenn ein Befehl ausgegeben wird, das heißt, auf Basis von tcode und
destination_offset (Paketzieladresse) für ein Anforderungspaket oder
tcode und tl für
ein Antwortpaket, und gibt das empfangene Paket an die Paketverarbeitungsschaltung 28 ab.
Der Empfangsfilter 27 bestimmt andere empfangene Pakete
als solche, die an die CPU 10 gerichtet sind, und speichert sie
in dem Empfangs-Puffer 24.
-
Die
Paketverarbeitungsschaltung 28 erzeugt Pakete und verwaltet
Transaktionen, die zu einer Befehlsausgabe-Sequenz und dem Empfang
eines Status in Beziehung stehen. Einzelheiten seiner Funktionsweise
werden später
beschrieben werden.
-
Die
Sequenz-Steuerschaltung 29 steuert zusammen mit dem Befehls-ORB-Sendepuffer 30 und dem
Verwaltungs-ORB-Sendepuffer 31 eine Befehlsausgabe-Sequenz.
Die Sequenz-Steuerschaltung 29 empfängt von der CPU 10 oder
anderen Blöcken
eine Anforderung zum Zugriff auf jedes MANAGEMENT_AGENT-Register
und CommandAgent-Register
auf Basis der Adressen jedes der MANAGEMENT_AGENT-Register und der
CommandAgent-Register von dem Ziel 2 und der Ziel-ID von
dem Ziel 2, das von der CPU 10 durch ein Steuerungsregister-Modul 25 empfangen
wurde, erzeugt ein Anforderungspaket und stellt es für die Paketverarbeitungsschaltung 28 bereit.
Die Sequenz-Steuerschaltung 29 empfängt außerdem eine
Benachrichtigung über
den Empfang eines Anfwortpaketes, das auf das Anforderungspaket
von der Paketverarbeitungsschaltung 28 zur Verwaltung der
Befehlsausgabe-Sequenz antwortet.
-
Der
Befehls-ORB-Sendepuffer 30 speichert einen Befehls-ORB,
der von der CPU 10 durch das Steuerungsregister-Modul 25 bereitgestellt
wurde. Des Weiteren hat der Befehls-ORB-Sendepuffer 30 die
Funktion, die Adressen von Befehls-ORBs automatisch zu verwalten.
Wenn ein Befehls-ORB von der CPU 10 gespeichert wird, bestimmt
der Befehls-ORB-Sendepuffer 30 insbesondere automatisch
die Adresse des Befehls-ORB und teilt die Adresse der Sequenz-Steuerschaltung 29 mit.
Die Sequenz-Steuerschaltung 29 wird bei der Ausgabe des
Befehls-ORB ein BWRQ-Paket verwenden, um die Adresse des Befehls-ORB
in das ORB_POINTER-Register von dem Ziel 2 zu schreiben.
Die Adresse des Befehls-ORB wird von der Sequenz-Steuerschaltung 29 außerdem dem
Empfangsfilter 27 durch die Paketverarbeitungsschaltung 28 mitgeteilt.
Wenn der destination_offset des von dem Ziel 2 empfangenen
BWRQ-Paketes mit der Adresse des Befehls-ORB übereinstimmt, wird das BWRQ-Paket
für die
Paketverarbeitungsschaltung 28 bereitgestellt, und die
Paketverarbeitungsschaltung 28 erzeugt ein BRRS-Paket,
das einen ORB enthält,
der aus dem Befehls-ORB-Sendepuffer 30 ausgelesen wurde,
und stellt es für
den Sendefilter 26 bereit.
-
Der
Befehls-ORB-Sendepuffer 30 kann eine Vielzahl von ORBs
speichern. Er besitzt die Fähigkeit,
ORB automatisch zu verknüpfen,
wenn sich ein nicht ausgegebener Befehl in dem Befehls-ORB-Sendepuffer 30 befindet,
wenn ein Befehls-ORB von der CPU 10 bereitgestellt wird.
Wie im unteren Abschnitt von 5 dargestellt,
weist der Befehls-ORB-Sendepuffer 30 dem
zusätzlich
zwischengespeicherten Befehls-ORB automatisch eine Adresse zu und ändert das
Next_ORB-Feld des zuvor zwischengespeicherten Befehls-ORB in die Adresse
des zusätzlich
zwischengespeicherten Befehls-ORB. Der Befehls-ORB-Sendepuffer 30 schickt außerdem eine
Anforderung zum Zugriff auf das DOORBELL-Register von dem Ziel 2 an
die Sequenz-Steuerschaltung 29.
-
Der
Verwaltungs-ORB-Sendepuffer 31 speichert einen Verwaltungs-ORB,
der von der CPU 10 durch das Steuerungsregister-Modul 25 bereitgestellt wurde.
Des Weiteren hat der Verwaltungs-ORB-Sendepuffer 31 die
Fähigkeit,
Adressen von Verwaltungs-ORBs automatisch zu verwalten. Wenn ein Verwaltungs-ORB
von der CPU 10 zwischengespeichert wird, bestimmt der Verwaltungs-ORB-Sendepuffer 31 insbesondere
automatisch die Adresse des Verwaltungs-ORB und teilt die Adresse
der Sequenz-Steuerschaltung 29 mit.
Die Sequenz-Steuerschaltung 29 wird bei der Ausgabe des
Verwaltungs-ORB ein BWRQ-Paket verwenden, um die Adresse des ORB
in das MANAGEMENT_AGENT-Register von dem Ziel 2 schreiben.
Die Adresse des Verwaltungs-ORB wird von der Sequenz-Steuerschaltung 29 außerdem dem Empfangsfilter 27 durch
die Paketverarbeitungsschaltung 28 mitgeteilt. Wenn der
destination_offset eines von dem Ziel 2 empfangenen BWRQ-Paketes mit
der Adresse des Verwaltungs-ORB übereinstimmt,
wird das BWRQ-Paket für
die Paketverarbeitungsschaltung 28 bereitgestellt. Die
Paketverarbeitungsschaltung 28 erzeugt ein BRRS-Paket,
das einen ORB enthält,
der aus dem Verwaltungs-ORB-Sendepuffer 31 ausgelesen wurde,
und stellt es für
den Sendefilter 26 bereit.
-
Der
Verwaltungs-Statusempfangs-Puffer 32 speichert einen für einen
ausgegebenen Verwaltungs-ORB empfangenen Status und teilt ihn der CPU 10 mit.
Wenn der Empfangsfilter 27 von dem Ziel 2 ein
BWRQ-Paket empfängt,
das über
einen destination_offset verfügt,
der mit der Adresse in dem STATUS_FIFO, die von der CPU 10 vor
der Ausgabe des Verwaltungs-ORB durch das Steuerungsregister-Modul 25 für das Empfangsregister 27 bereitgestellt
wurde, übereinstimmt,
stellt das Empfangsregister 27 das BWRQ-Paket für die Paketverarbeitungsschaltung 28 bereit.
Wenn die von dem Verwaltungs-ORB-Sendepuffer 31 mitgeteilte
Adresse des Verwaltungs-ORB mit dem ORB_offset_hi/ORB_offset_lo
(siehe 4) des empfangenen Status übereinstimmt, stellt die Paketverarbeitungsschaltung 28 den
Status für
den Verwaltungs-Statusempfangs-Puffer 32 bereit.
-
Der
Befehls-Statusempfangs-Puffer 33 speichert einen für einen
ausgegebenen Befehls-ORB empfangenen
Status und teilt ihn der CPU 10 mit. Wenn der Empfangsfilter 27 ein
BWRQ-Paket empfängt,
das über
einen destination_offset verfügt,
der mit der Adresse im STATUS_FIFO, die von der CPU 10 durch
das Steuerungsregister-Modul 25 von dem Ziel 2 vor
der Ausgabe des Befehls-ORB dem Empfangsfilter 27 mitgeteilt
wurde, übereinstimmt,
stellt der Empfangsfilter 27 das BWRQ-Paket für die Paketverarbeitungsschaltung 28 bereit.
Wenn die von dem Verwaltungs-ORB-Sendepuffer 31 mitgeteilte Adresse
des Verwaltungs-ORB nicht mit dem ORB_offset_hi/ORB_offset_lo des
empfangenen Staus übereinstimmt,
stellt die Paketverarbeitungsschaltung 28 den Status für den Befehls-Statusempfangs-Puffer 33 bereit.
Der Befehls-Statusempfangs-Puffer 33 ist in der Lage, eine
Vielzahl von Stati zu speichern. Der Befehl-Statusempfangs-Puffer 33 hat
außerdem
die Funktion, eine Anforderung zum Zugriff auf das AGENT_RESET-Register von dem Ziel 2 an
die Sequenz-Steuerschaltung 29 zu schicken, falls er feststellt,
dass der empfangene Status ein Fehler ist (das Bit d, das im Status,
der 4 dargestellt ist, gesetzt ist, gibt an, dass
der entsprechende Befehls-ORB fehlerhaft ist).
-
Fünf Beispieloperationen
der in 1 dargestellten Befehlsausgabevorrichtung 20 werden
unten beschrieben werden.
-
(Erste Beispieloperation)
-
Eine
Operation der Befehlsausgabevorrichtung 20, die ausgeführt wird,
wenn ein Verwaltungs-ORB ausgegeben wird, wird mit Bezug auf 8, 9A und 9B beschrieben
werden. Obwohl eine Auslöseeinrichtung 1 von
dem Konfigurations-ROM von einem Ziel 2 die Adresse eines MANAGEMENT_AGENT-Registers
erhalten sollte, bevor sie den Verwaltungs-ORB ausgibt, wird auf
die Beschreibung dieser Operation hier verzichtet.
- (1) Die CPU 10 setzt die von dem Ziel 2 erhaltene Adresse
des MANAGEMENT_AGENT-Registers und die Knoten-ID von dem Ziel 2 in
der Sequenz-Steuerschaltung 29 und setzt die Adresse eines
Statusempfangs-Puffers (STATUS_FIFO) in dem Verwaltungs-Statusempfangs-Puffer 32 als Anfangseinstellungen.
- (2) Die CPU 10 erzeugt einen auszugebenden Verwaltungs-ORB
und speichert ihn in dem Verwaltungs-ORB-Sendepuffer 31.
Der Verwaltungs-ORB-Sendepuffer 31 bestimmt die Adresse (*P
in 8) des Verwaltungs-ORB und teilt sie der Sequenz-Steuerschaltung 29 mit.
Er teilt die Adresse außerdem
der Paketverarbeitungsschaltung 28 und dem Empfangsfilter 27 mit.
- (3) Die CPU 10 fordert die Sequenz-Steuerschaltung 29 auf,
den Verwaltungs-ORB auszugeben (Phase „a" in 8 beginnt).
- (4) Die Sequenz-Steuerschaltung 29 erzeugt ein in 1A dargestelltes
BWRQ-Paket, in dem
die von der CPU 10 bereitgestellte Knoten-ID von dem Ziel 2 in
dem Destination_ID-Feld gesetzt ist, die Adresse des MANAGEMENT_AGENT-Registers im Destination_offset-Feld
gesetzt ist, die Adresse (*P) des Verwaltungs-ORB, der von dem Verwaltungs-ORB-Sendepuffer 31 bereitgestellt wurde,
im data_field gesetzt ist, und der tcode auf "1" gesetzt
ist (und so angibt, dass dies ein BWRQ-Paket ist), und data_length
auf "8" gesetzt ist. Dann
stellt die Sequenz-Steuerschaltung 29 es für die Paketverarbeitungsschaltung 28 bereit.
- (5) Die Paketverarbeitungsschaltung 28 setzt einen
vorgegebenen Wert in dem tl in dem BWRQ-Paket und sendet es durch
den Sendefilter 26, den Sendepuffer 23, die Sicherungsschicht-Steuerung 22 und
die Bitübertragungsschicht-Steuerung 21 auf
den 1394-Bus 3. Die Paketverarbeitungs-Schaltung 28 teilt
den tcode und den tl dem Empfangsfilter 27 mit.
- (6) Das Ziel 2 empfängt
das BWRQ-Paket und gibt ein WRS-Paket zurück.
- (7) Wenn der Empfangsfilter 27 bestimmt, dass der tcode
des empfangenen WRS-Paketes
WRS ist und der tl mit dem übereinstimmt,
der von der Paketverarbeitungsschaltung 28 bereitgestellt wurde,
meldet der Empfangsfilter 27 den Empfang des WRS-Paketes
an die Paketverarbeitungsschaltung 28 und die Sequenz-Steuerschaltung 29 und
löscht
das WRS-Paket selbst (Phase „a" in 8 endet).
- (8) Dann sendet das Ziel 2 ein BRRQ-Paket an die Adresse
(*P) des Verwaltungs-ORB,
um einen Verwaltungs-ORB zu erhalten. Wenn der Empfangsfilter 27 bestimmt,
dass der destination_offset des empfangenen BRRQ-Paketes mit der
Adresse (*P) des Verwaltungs-ORB, die von der Paketverarbeitungsschaltung 28 mitgeteilt
wurde, übereinstimmt,
meldet er der Paketverarbeitungsschaltung 28 den Empfang
des BRRQ-Paketes, stellt den tl für das Paket zur Verfügung und
löscht
das BRRQ-Paket selbst (Phase "b" in 8 beginnt).
- (9) Die Paketverarbeitungsschaltung 28 positioniert
den Verwaltungs-ORB, der aus dem Verwaltungs-ORB-Sendepuffer 31 ausgelesen
wurde, in dem data_field, um ein BRRS-Paket zu erzeugen. Dann ändert die
Paketverarbeitungsschaltung 28 den tl des BRRS-Paketes
in den von dem Empfangsfilter 27 empfangenen tl und sendet
es durch den Sendefilter 26, den Sendepuffer 23,
die Sicherungsschicht-Steuerung 22 und
die Bitübertragungsschicht-Steuerung 21 auf
den 1394-Bus 3.
- (10) Das Ziel 2 empfängt das BRRS-Paket, um den
Verwaltungs-ORB zu erhalten, und führt ihn aus (Phase "b" in 8 endet).
- (11) Nach der Vollendung des ORB erzeugt das Ziel 2 einen
in 4 dargestellten Status, positioniert ihn in dem
data_field in einem BWRQ-Paket und sendet ihn an die Auslöseeinrichtung 1 (Phase "c" in 8 beginnt).
- (12) Wenn der Empfangsfilter 27 bestimmt, dass der
destination_offset in dem BWRQ-Paket,
das den empfangenen Status enthält,
mit der Adresse in dem STATUS_FIFO, die in der CPU 10 gesetzt ist, übereinstimmt,
meldet er der Paketverarbeitungsschaltung 28 den Empfang
des BWRQ-Paketes und stellt das BWRQ-Paket für die Paketverarbeitungsschaltung 28 bereit.
- (13) Die Paketverarbeitungsschaltung 28 referenziert
den ORB_offset_hi und den ORB_offset_lo (siehe 4)
in dem Status, der in dem data_field in dem BWRQ-Paket enthalten ist, und speichert, wenn
sie mit der von dem Verwaltungs-ORB-Sendepuffer 31 erhaltenen Adresse
(*P) des Verwaltungs-ORB übereinstimmen,
den Status in dem Verwaltungs-Statusempfangs-Puffer 32.
Gleichzeitig erzeugt sie ein WRS-Paket für das BWRQ-Paket und sendet
es durch den Sendefilter 26, den Sendepuffer 23,
die Sicherungsschicht-Steuerung 22 und die Bitübertragungsschicht-Steuerung 21 auf
den 1394-Bus 3.
- (14) Wenn die Paketverarbeitungsschaltung 28 bestimmt,
dass Informationen in einem ACK-Paket für das gesendete WRS-Paket ein
normales Ende angeben, meldet sie der CPU 10 den Empfang
des Status für
den Verwaltungs-ORB (Phase „c" in 8 endet).
- (15) Die CPU 10 liest den Status aus dem Verwaltungs-Statusempfangs-Puffer 32 aus.
-
Wie
oben beschrieben, kann die Befehlsausgabevorrichtung 20 Last
beseitigen, die auf der CPU 10 erzeugt würde, bis
die CPU 10 die Meldung über den
Empfang des Status empfängt
und den Status ausliest, sobald die CPU 10 die Anfangseinstellung vorgenommen,
ein Verwaltungs-ORB erzeugt und registriert und die Ausgabe des
Verwaltungs-ORB angefordert hat.
-
(Zweite Beispieloperation)
-
Es
wird unten eine Operation der Befehlsausgabevorrichtung 20 bei
der Ausgabe eines Befehls-ORB mit Bezug auf die 10, 11A und 11B beschrieben
werden. Obwohl eine Auslöseeinrichtung 1 die
Adresse eines CommandAgent-Registers, die durch Einloggen in ein
Ziel 2 erhalten werden kann, vor der Ausgabe eines Befehls-ORB
erhalten sollte, wird auf die Beschreibung dieser Operation hier
verzichtet.
- (1) Die CPU 10 setzt die
von dem Ziel 2 erhaltene Adresse des CommandAgent-Registers und die Knoten-ID
von dem Ziel 2 in der Sequenz-Steuerschaltung 29 und
setzt die Adresse des Statusempfangs-Puffers (STATUS_FIFO) in dem
Befehl-Statusempfangs-Puffer 33 als Anfangseinstellungen.
Die Knoten-ID von dem Ziel 2 ist die gleiche wie der Wert,
der bei der Ausgabe eines Verwaltungs-ORB verwendet wurde. Wenn
der Verwaltungs-ORB vorher ausgegeben wurde, kann daher auf das
Setzen der Knoten-ID verzichtet werden. Wenn der Befehls-ORB ein
zweites oder folgendes Mal ausgegeben wird, kann auf das Setzen
der Adressen des CommandAgent-Registers und des STATUS_FIFO ebenfalls verzichtet
werden.
- (2) Die CPU 10 erzeugt den auszugebenden Befehls-ORB
und speichert ihn in dem Befehls-ORB-Sendepuffer 30. Der
Befehls-ORB-Sendepuffer 30 bestimmt die Adresse (*P in 10)
des Befehls-ORB und teilt sie der Sequenz-Steuerschaltung 29 mit.
Er teilt die Adresse außerdem
der Paketverarbeitungsschaltung 28 und dem Empfangsfilter 27 mit.
- (3) Die CPU 10 fordert die Sequenz-Steuerschaltung 29 auf,
den Befehls-ORB auszugeben (Phase „a" in 10 beginnt).
- (4) Die Sequenz-Steuerschaltung 29 erzeugt ein in 1A dargestelltes
BWRQ-Paket, in dem
die von der CPU 10 bereitgestellte Knoten-ID von dem Ziel 2 in
dem Destination_ID-Feld gesetzt ist, die Adresse eines ORB_POINTER-Registers in dem
Destination_offset-Feld gesetzt ist, die Adresse (*P) des Befehls-ORB,
die von dem Befehls-ORB-Sendepuffer 30 bereitgestellt wurde,
in dem data_field gesetzt ist, der tcode auf „1" gesetzt ist (und so angibt, dass dies
ein BWRQ-Paket ist) und data_length auf „8" gesetzt ist. Dann stellt die Sequenz-Steuerschaltung 29 das BWRQ-Paket
für die
Paketverarbeitungsschaltung 28 bereit.
- (5) Die Paketverarbeitungsschaltung 28 setzt einen
vorgegebenen Wert in dem tl in dem BWRQ-Paket und sendet das BWRQ-Paket
durch den Sendefilter 26, den Sendepuffer 23,
die Sicherungsschicht-Steuerung 22 und die Bitübertragungsschicht-Steuerung 21 auf
den 1394-Bus 3. Die Paketverarbeitungsschaltung 28 teilt
den tcode und den tl dem Empfangsfilter 27 mit.
- (6) Das Ziel 2 empfängt
das BWRQ-Paket und gibt ein WRS-Paket zurück.
- (7) Wenn der Empfangsfilter 27 bestimmt, dass der tcode
in dem empfangenen WRS-Paket WRS ist und dass der tl mit dem übereinstimmt,
der von der Paketverarbeitungsschaltung 28 bereitgestellt wurde,
meldet er den Empfang des WRS-Paketes an die Paketsteuerschaltung 28 und
die Sequenz-Steuerschaltung 29 und löscht das WRS-Paket selbst (Phase „a" in 10 endet).
- (8) Dann sendet das Ziel 2 ein BRRQ-Paket an die Adresse
(*P) des Befehls-ORB, um den Befehls-ORB zu erhalten. Wenn der Empfangsfilter 27 bestimmt,
dass der destination_offset des empfangenen BRRQ-Paketes mit der
Adresse (*P) des Befehls-ORB, die von der Paketverarbeitungsschaltung 28 mitgeteilt
wurde, übereinstimmt,
teilt er der Paketverarbeitungsschaltung 28 den Empfang
des BRRQ-Paketes
und den tl mit und löscht
das BRRQ-Paket selbst (Phase „b" in 10 beginnt).
- (9) Die Paketverarbeitungsschaltung 28 liest den Befehls-ORB
aus dem Befehls-ORB-Sendepuffer 30 aus
und positioniert ihn in dem data_field, um ein BRRS-Paket zu erzeugen.
Dann ändert
die Paketverarbeitungsschaltung 28 den tl des BRRS-Paketes
in den von dem Empfangsfilter 27 empfangenen tl und sendet
es durch den Sendefilter 26, den Sendepuffer 23,
die Sicherungsschicht-Steuerung 22 und die Bitübertragungsschicht-Steuerung 21 auf
den 1394-Bus 3.
- (10) Das Ziel 2 empfängt das BRRS-Paket, um den
Befehls-ORB zu erhalten, und führt
ihn aus (Phase „b" in 10 endet).
- (11) Nachdem die Ausführung
des ORB vollendet ist, erzeugt das Ziel 2 einen in 4 dargestellten Status,
positioniert ihn in dem data_field in dem BWRQ-Paket und sendet
ihn an die Auslöseeinrichtung 1 (Phase „c" in 10 beginnt).
- (12) Wenn der Empfangsfilter 27 bestimmt, dass der
destination_offset in dem BWRQ-Paket,
das den Status enthält,
mit der Adresse in dem STATUS_FIFO, die in der CPU 10 gesetzt
ist, übereinstimmt,
meldet er der Paketverarbeitungsschaltung 28 den Empfang
des BWRQ-Paketes und stellt das BWRQ-Paket für die Paketverarbeitungsschaltung 28 bereit.
- (13) Die Paketverarbeitungsschaltung 28 referenziert
den ORB_offset_hi und den ORB_offset_lo (siehe 4)
in dem Status, der in dem data_field in dem BWRQ-Paket enthalten ist, und speichert, wenn
sie nicht mit der von dem Verwaltungs-ORB-Sendepuffer 31 erhaltenen
Adresse des Verwaltungs-ORB übereinstimmen,
den Status in dem Befehls-Statusempfangs-Puffer 33. Gleichzeitig
erzeugt sie ein WRS-Paket für
das BWRQ-Paket und sendet es durch den Sendefilter 26,
den Sendepuffer 23, die Sicherungsschicht-Steuerung 22 und
die Bitübertragungsschicht-Steuerung 21 auf
den 1394-Bus 3.
- (14) Wenn die Paketverarbeitungsschaltung 28 bestimmt,
dass Informationen in einem ACK-Paket für das gesendete WRS-Paket ein
normales Ende angeben, meldet sie der CPU 10 den Empfang
des Status für
den Befehls-ORB (Phase "c" in 10 endet).
- (15) Die CPU 10 liest den Status aus dem Befehls-Statusempfangs-Puffer 33 aus.
-
So
kann die Befehlsausgabevorrichtung 20 die Last beseitigen,
die auf der CPU 10 während
des Zeitraums erzeugt würde,
bis sie die Benachrichtigung über
den Empfang des Staus erhält
und den Status nach Vornehmen der Anfangseinstellung ausliest, einen
Befehls-ORB erzeugt und speichert und die Ausgabe des Befehls-ORB
anfordert. Während die
Operation zur Ausgabe des Befehls-ORB durch Zugriff auf das ORB_POINTER-Register mit Bezug auf
die Beispieloperation beschrieben worden ist, werden ähnliche
Funktionen bei der Ausgabe eines Befehls-ORB durch Zugriff auf das
DOORBELL-Register
ausgeführt,
während
das AGENT_STATE-Register in SUSPEND ist.
-
(Dritte Beispieloperation)
-
Es
wird unten eine Operation der Befehlsausgabevorrichtung 20 bei
der Ausgabe verknüpfter Befehls-ORBs
mit Bezug auf die 12A–12B und 13A–13C beschrieben werden. In diesem Beispiel wird
eine Operation vor dem Befehl C in 5 hinzugefügt, das
heißt,
es wird eine Operation zur Ausgabe von zwei Befehls-ORBs von Befehl
A und Befehl B beschrieben werden.
-
In
dieser Beispieloperation erzeugt die CPU 10 zwei auszugebende
Befehls-ORBs (ORB A, ORB B) und speichert sie der Reihe nach in
dem Befehls-ORB-Sendepuffer 30. Der Befehls-ORB-Sendepuffer 30 bestimmt
die Adresse des ORB von Befehl A ("*A" in 12A) und teilt sie der Sequenz-Steuerschaltung 29 mit.
Er teilt die Adresse außerdem
der Paketverarbeitungsschaltung 28 und dem Empfangsfilter 27 mit.
Dann bestimmt der Befehls-ORB-Sendepuffer 30 die Adresse
des ORB von Befehl B („*B" in 12A) und ändert
das Next_ORB-Feld des ORB von Befehl A in "*B".
Wie bei dem ORB von Befehl A teilt er der Paketverarbeitungsschaltung 28 und
dem Empfangsfilter 27 die Adresse ("*B" in 12A) des ORB von Befehl B mit.
-
Der
Prozess von Phase „a" bis Phase "c" in 12A läuft wie
in der zweiten Beispieloperation ab. Wenn der CPU 10 der
Empfang des Status für den
ORB von Befehl A gemeldet wird, liest die CPU 10 den Status
aus dem Befehls-Statusempfangs-Puffer 33 aus. Alternativ
kann jeweils eine Vielzahl von Status in dem Befehls-Statusempfangs-Puffer 33 gespeichert
werden und es damit ermöglichen, dass
das Auslesen des Status für
den ORB von Befehl A durch die CPU 10 aufgeschoben wird,
bis ein Status für
den ORB von Befehl B ausgelesen worden ist.
-
Das
Ziel 2 bestimmt, dass das Next_ORB-Feld in dem ORB von
Befehl A nicht Null, sondern *B ist. So wird der ORB von Befehl
B erhalten, und seine Ausführung
wird begonnen. Die Phasen d und e in 12B sind
die gleichen wie die Phasen b und c in 12A.
-
Wie
oben beschrieben, ermöglicht
die Befehlsausgabevorrichtung 20 der CPU 10, eine
Vielzahl von Befehls-ORBs zwischenzuspeichern und ihr Next_ORB-Feld
auf Null zu belassen, statt die ORBs absichtlich zu verknüpfen, wenn
die CPU 10 die Befehls-ORBs ausgibt, und verringert dadurch
die Last auf der CPU 10.
-
(Vierte Beispieloperation)
-
Es
wird unten eine Operation der Befehlsausgabevorrichtung 20 mit
Bezug auf die 14A–14B und 15A–15D beschrieben werden, wenn ein zusätzlicher
Befehls-ORB während
der Ausführung
eines verknüpften
Befehls-ORB ausgegeben wird. In diesem Beispiel wird eine Operation
für einen
zusätzlichen
Befehl C während
der Ausführung
von Befehl A ausgegeben, nachdem zwei ORBs für die Befehle A und B verknüpft und
ausgegeben wurden, wie in 5 dargestellt.
-
Die
Phasen a und b in 14A laufen wie diejenigen in
der dritten Beispieloperation ab. Die CPU 10 erzeugt den
ORB des dritten Befehls, C, und speichert ihn während der Ausführung des
ORB von Befehl A in dem Befehls-ORB-Sendepuffer 30. Der Befehls-ORB-Sendepuffer 30 bestimmt
die Adresse (*C in 14A) des ORB von Befehl C und
teilt sie der Paketverarbeitungsschaltung 28 und dem Empfangsfilter 27 mit.
Der Befehls-ORB-Sendepuffer 30 ändert das
Next_ORB-Feld des zuvor zwischengespeicherten ORB von Befehl B in "*C" und fordert die Sequenz-Steuerschaltung 29 zum
Zugriff auf das DOORBELL-Register von dem Ziel 2 auf. Die
Sequenz-Steuerschaltung 29 greift nicht auf das DOORBELL-Register
zu, weil der ORB von Befehl A ausgeführt wird. Wenn jedoch der letzte
verknüpfte ORB,
der ORB von Befehl B, ausgeführt
wird, greift sie auf das DOORBELL-Register zu.
-
Die
Beschreibung von Phase c in 14A und
der Phasen d bis g in 14B wären nicht
erforderlich. Auch in diesem Beispiel kann jeweils eine Vielzahl
von Stati in dem Befehls-Statusempfangs-Puffer 33 gespeichert
werden, so dass das Auslesen der Status für die ORBs der Befehle A und B
durch die CPU 10 aufgeschoben werden kann, bis ein Status
für den
ORB von Befehl C ausgelesen worden ist.
-
Auf
diese Weise ermöglicht
es die Befehlsausgabevorrichtung 20 der CPU 10,
alle Befehls-ORBs zwischenzuspeichern und ihr Next_ORB-Feld auf
Null zu belassen, statt die ORBs absichtlich zu verlinken, wenn
die CPU 10 während der
Ausführung
einer Vielzahl von verlinkten ausgegebenen Befehls-ORBs einen zusätzlichen
Befehls-ORB ausgibt, und verringert dadurch die Last auf der CPU 10.
-
(Fünfte Beispieloperation)
-
Es
wird unten eine Operation der Befehlsausgabevorrichtung 20 in
einer Situation, in der ein Befehlsfehler auftritt, mit Bezug auf
die 16 und 17A–17B beschrieben werden. Der Übergang zum DEAD-Zustand und
eine Rückkehr
zum RESET-Zustand werden dabei beschrieben werden.
-
Die
Phasen a und b in 16 laufen wie in der zweiten
Beispieloperation ab. Nachdem das Ziel 2 in Phase "a" in 16 ein
WRS-Paket an die Auslöseeinrichtung 1 zurückgegeben
hat, vollzieht es einen Übergang
vom RESET-Zustand zum ACTIVE-Zustand. Falls ein Fehler auftritt,
während
das Ziel 2 einen ORB ausführt, erzeugt das Ziel 2 einen Fehlerstatus
nach dem in 4 dargestellten Format, positioniert
ihn in dem data_field in einem BWRQ-Paket und sendet ihn an die
Auslöseeinrichtung 1.
Der Fehlerstatus wird durch Setzen des Bits "d" in 4 erzeugt.
Dann wechselt das Ziel 2 in den DEAD-Zustand (Phase "c" in 16 beginnt).
-
Die
Phasen c und d in 16 werden unten genau beschrieben
werden.
- (1) Wenn der Empfangsfilter 27 bestimmt,
dass der destination_offset in dem BWRQ-Paket, das den empfangenen Fehlerstatus
enthält,
mit der Adresse in dem STATUS_FIFO, die in der CPU 10 gesetzt
ist, übereinstimmt,
dann meldet er der Paketverarbeitungsschaltung 28 den Empfang
des BWRQ-Paketes und stellt das BWRQ-Paket für die Paketverarbeitungsschaltung 28 bereit.
- (2) Die Paketverarbeitungsschaltung 28 referenziert
den ORB_offset_hi und den ORB_offset_lo in dem Status (siehe 4),
der in dem data_field in dem BWRQ-Paket enthalten ist, und speichert, falls
sie nicht mit der von dem Verwaltungs-ORB-Sendepuffer 31 empfangenen
Adresse eines Verwaltungs-ORB übereinstimmen,
den Status in dem Befehls-Statusempfangs-Puffer 33. Gleichzeitig
erzeugt sie ein WRS-Paket für
das BWRQ-Paket und sendet es durch den Sendefilter 26,
den Sendepuffer 23, die Sicherungsschicht-Steuerung 22 und
die Bitübertragungsschicht-Steuerung 21 auf
den 1394-Bus 3.
- (3) Wenn die Paketverarbeitungsschaltung 28 bestimmt,
dass Informationen in einem auf das gesendete WRS-Paket antwortenden
ACK-Paket eine erfolgreiche Beendigung angeben, meldet sie der CPU 10 den
Empfang des Status für
den Befehls-ORB (Phase "c" in 16 endet).
- (4) Wenn der Befehls-Statusempfangs-Puffer 33, der
den Status speichert, bestimmt, dass das Bit "d" in
dem in 4 dargestellten Status gesetzt ist, fordert er
die Sequenz-Steuerschaltung 29 auf, auf das AGENT_RESET-Register
von dem Ziel 2 zuzugreifen.
- (5) Die CPU 10 liest den Status aus dem Befehls-Statusempfangs-Puffer 33 aus.
- (6) Wenn die Sequenz-Steuerschaltung 29 die Aufforderung
zum Zugriff auf das AGENT_RESET-Register empfängt, erzeugt sie ein in 1B dargestelltes
QWRQ-Paket, in dem die von der CPU 10 bereitgestellte Knoten-ID
von dem Ziel 2 in dem Destination_ID-Feld, die Adresse
in dem AGENT_RESET-Register in dem Destination_offset-Feld gesetzt
ist, ein vorgegebener Wert in dem Quadlet_data-Feld und der tcode
auf „0" gesetzt ist, und
stellt dann das QWRQ-Paket für
die Paketverarbeitungsschaltung bereit (Phase „d" in 16 beginnt).
- (7) Die Paketverarbeitungsschaltung 28 setzt einen
vorgegebenen Wert in dem tl in dem QWRQ-Paket und sendet es durch
den Sendefilter 26, den Sendepuffer 23, die Sicherungsschicht-Steuerung 22 und
die Bitübertragungsschicht-Steuerung 21 auf
den 1394-Bus 3. Die Paketverarbeitungsschaltung 28 teilt
dem Empfangsfilter 27 den tcode und den tl mit.
- (8) Das Ziel 2 empfängt
das QWRQ-Paket und gibt ein WRS-Paket zurück. Dann wechselt das Ziel 2 in
den RESET-Zustand.
- (9) Wenn der Empfangsfilter 27 bestimmt, dass der tcode
in dem empfangenen WRS-Paket WRS ist und der tl mit dem übereinstimmt,
der von der Paketverarbeitungsschaltung 28 bereitgestellt wurde,
meldet er der Paketverarbeitungsschaltung 28 und der Sequenz-Steuerschaltung 29 den Empfang
des WRS-Paketes
und löscht
das WRS-Paket selbst (Phase „d" in 16 endet).
- (10) Die Sequenz-Steuerschaltung 29 meldet der CPU 10 den
Zugriff auf das AGENT_RESET-Register.
-
Wie
oben beschrieben, beseitigt die Befehlsausgabevorrichtung 20 die
Notwendigkeit für
die CPU 10, das Ziel 2 in den RESET-Zustand zu ändern, selbst
wenn das Ziel 2 aufgrund einer fehlerhaften Beendigung
eines ausgegebenen Befehls-ORB in den DEAD-Zustand übergeht, und verringert dadurch
die Last auf der CPU 10. Des Weiteren kann die Befehlsausgabevorrichtung 20,
wenn ein Fehler auftritt, während
verlinkte Befehls-ORBs
ausgeführt werden,
fortfahren, gespeicherte Befehls-ORB auszugeben, indem sie auf das
ORB_POINTER-Register zugreift, nachdem sie auf das AGENT_RESET-Register zugegriffen
hat, und daher kann die CPU 10 fortfahren, Befehls-ORBs
auszugeben.