-
Gebiet der
Erfindung
-
Diese
Erfindung bezieht sich auf Burst-Modus-Übertragungen über eine
Kommunikationsverbindung zwischen Vorrichtungen, die in einem Blockmodus
arbeiten, und insbesondere auf ein Verfahren zum Steuern und Automatisieren
solcher Übertragungen.
-
Hintergrund
der Erfindung
-
Wenig
Personen hatten eine größere Auswirkung
auf die Personalcomputerindustrie als Alan Shugart. Allgemein geachtet
für das
Erfinden des Diskettenlaufwerks während er für IBM in den späten 1960ern
arbeitete, gründete
er später
Shugart Associates zum Zweck des Entwickelns und Herstellens von
Disketten. 1974, kurz nach dem Verlassen des Unternehmens von Mr.
Shugart, brachte Shugart Associates das 5¼-Zoll-Minidiskettenlaufwerk
auf den Markt, das schnell die früheren 8-Zoll-Diskettenlaufwerke
verdrängte
und schließlich
zum Standarddiskettenlaufwerk für
die früheren
PCs wurde. Die Diskettenschnittstelle, entwickelt von Shugart Associates,
wurde von IBM in dem Original-IBM-PC verwendet und ist immer noch die
Basis aller PC-Diskettenlaufwerk-Schnittstellen.
1979 gründeten
Shugart und Finis Conner die Seagate Technology. Am Ende des Jahres
hatte Seagate das 5-Megabyte-ST-506-Laufwerk vorgestellt, das nun
als Mutter aller PC-Festplattenlaufwerke gehandelt wird. Dies wurde
gefolgt von dem 10-Megabyte-ST-412-Laufwerk, das IBM für den Original-XT-Personalcomputer übernahm.
Die STJ-506/412-Schnittstelle, entwickelt von Seagate, war de facto
der Festplattenschnittstellenstandard für viele Jahre und diente als
die Basis auch für
ESDI- und IDE-Schnittstellen.
-
Obwohl
Alan Shugart und die Unternehmen, die er gegründet hat, bekannt sind für Festplatteninnovation,
ist es weniger bekannt, dass die Small Computer Systems Interface
(SCSI; Klein-Computer-System-Schnittstelle) von Shugart Associates
erzeugt wurde. Ursprünglich
genannt die Shugart Associates System Interface (SASI) erhielt sie
ihren gegenwärtigen
Namen, als sie 1986 formell durch das ANSI-Komitee genehmigt wurde.
Ein überarbeiteter SCSI-2-Standard
wurde von dem selben Komitee 1994 genehmigt, und eine noch neuere Überarbeitung,
genannt SCSI-3 wird gegenwärtig
entwickelt. Die SCSI-Schnittstelle ist keine Vorrichtungsebenenschnittstelle,
sondern eine Systemebenenschnittstelle. Der SCSI-Standard definiert die physischen und elektrischen
Parameter eines Parallel-I/O-Busses, der zum Verbinden von Computern
und Peripheriegeräten
auf Daisy-Chain-Weise verwendet wird. Der Standard unterstützt Vorrichtungen,
wie z. B. Festplattenlaufwerke, Bandlaufwerke, ZIP-Laufwerke, CD-ROM-Laufwerke, Graphikscanner
und andere Peripheriegeräte.
Der Original-SCSI-Bus-Standard unterstützt bis zu acht physische Vorrichtungen,
die üblicherweise
SCSI IDs genannt werden. Der neuere SCSI-2-Bus-Standard andererseits
unterstützt
bis zu sechzehn Vorrichtungen. Für
jeden Standard funktioniert ein Host-Adapter, der als eine der physischen Vorrichtungen
zählt,
als der Gateway zwischen dem SCSI-Bus und dem Personalcomputersystembus. Der
SCSI-Bus selbst spricht nicht direkt mit den Vorrichtungen, die
mit demselben verbunden sind, sondern kommuniziert statt dessen
mit einer Steuerung, die an der Vorderseite jeder Vorrichtung ist.
Der Host-Adapter ist entweder in den Systembus eingesteckt oder
integriert. Die meisten Personalcomputersysteme unterstützen bis
zu vier Host-Adapter, wobei jeder derselben unter dem Original-SCSI-Standard
mit insgesamt sieben Peripheriegeräten verbunden sein kann, für insgesamt
28 Peripheriegeräte.
Für SCSI-2-Implementierungen
können
insgesamt 4 × 15
oder 60 Peripheriegeräte
mit dem Systembus gekoppelt sein.
-
Dadurch,
dass keine Erweiterungsschlitze in den frühen Macintosh-Computern vorgesehen
waren, behielt der Apple-Computer
die Gesamtsteuerung über
System-Konfiguration, -Architektur und -Upgrades. Folglich ignorierten
die meisten Unternehmen die Angebote von Apple. Als kostengünstige Weise
aus dieser Bindung fügte
Apple eine Erweiterbarkeit zu seinem geschlossenen Macintosh-System hinzu,
durch Einlagern eines SCSI-Tors in das Mac-Plus-System. Peripheriegeräte konnten
dann schnittstellenmäßig mit
den schlitzlosen Macs verbunden werden.
-
SCSI
holte langsam auf in der Welt von IBM und IBM-kompatiblen PCs, da diese Systeme immer erweiterbar
waren. Mit acht Busschlitzen, die unterschiedliche Vorrichtungen
und Steuerungen unterstützen,
schien es, dass SCSI nicht benötigt
wurde. Aufgrund der großen
Erweiterbarkeit jedoch, die SCSI bietet, und aufgrund der Verfügbarkeit
von Hunderten von Vorrichtungen mit eingebauten SCSI-Steuerungen,
hat sie schnell Popularität
in diesem Bereich erlangt. Der primäre Vorteil einer Erweiterung über SCSI
in einem PC-System
ist die Fähigkeit, eine
Reihe von Peripheriegeräten
von einer einzelnen Adapterkarte zu verketten, wodurch Kartenschlitze
innerhalb des PCs gespart werden und die Ausbreitung von IRQs, DMAs
und I/O-Speicheradressen eingeschränkt wird.
-
Ein
Problem mit dem Original-SCSI-1-Standard war, dass viele der Befehle
und Merkmale optional waren. Somit bestand keine Garantie, dass
ein bestimmtes Peripheriegerät
die erwarteten Befehle unterstützen
würde.
Als Ergebnis dieses Problems definiert der SCSI-2-Standard einen
Satz von 18 Basis-SCSI-Befehlen, genannt der Common Command Set
(CCS; allgemeiner Befehlssatz), die zu dem Minimalsatz von Befehlen
wurden, die durch alle Peripheriegeräte unterstützt werden. Zusätzlich zu
einer formalen Unterstützung
für CCS,
lieferte SCSI-2 zusätzliche
Definitionen für
Befehle zum Zugreifen auf CD-ROM-Laufwerke (und ihre Audio-Fähigkeiten), Bandlaufwerke,
entfernbare Laufwerke, Optik- Laufwerke
und verschiedene andere Peripheriegeräte. Zusätzlich dazu wurde eine optionale
höhere
Geschwindigkeit, genannt Fast SCSI-2 und eine 16-Bit-Version, genannt
Wide SCSI-2 definiert. Ein anderes Merkmal von SCSI-2 ist Command
Queuing (Befehls-Warteschlangenbildung), das ermöglicht, dass eine Vorrichtung
mehrere Befehle annimmt und dieselben in der Reihenfolge ausführt, die
die Vorrichtung als am effizientesten ansieht. Dieses Merkmal ist
am vorteilhaftesten für
Multi-Tasking-Betriebssysteme, die mehrere Anforderungen auf dem
SCSI-Bus gleichzeitig senden können.
-
Jede
Datenübertragung
auf einem SCSI-Bus wird nach Paritätsfehlern geprüft. Somit
umfasst ein 8-Bit-SCSI-Bus ein neuntes Paritätsbit, während ein 16-Bit-SCSI-Bus zusätzliche
zwei Paritätsbits
umfasst. Zusätzlich
zu den neun oder achtzehn Datensignalleitungen umfasst ein SCSI-Bus
ferner mehrere Leitungen für
Masse, eine für
Abschlussleistung und eine Leitung jeweils für die Signale ATN, BSY, ACK,
RST, MSG, SEL, C/D, REQ und I/O. Da mehrere physische Vorrichtungen
den SCSI-Bus gleichzeitig verwenden können, werden Daten in Bursts
bzw. Stößen übertragen,
so dass der Kommunikationsweg effizienter verwendet werden kann.
Eine maximale Burst-Länge
ist definiert. Nicht alle Datenübertragungen
sind jedoch Mehrfache der Burst-Länge. Das heißt, eine
gesamte Datenübertragung
kann weniger sein als die Burst-Länge oder
kann zwischen Mehrfache der Burst-Länge fallen. Ursprünglich,
wenn eine Datenübertragung über den
SCSI-Bus eine Paritätsprüfung nicht
bestanden hat, wurde eine Fehlermeldung erzeugt, die anzeigt, dass
die Datenübertragung
fehlgeschlagen ist. Abhängig
von dem Betriebssystem würde
eine solche Situation bestenfalls eine Wiederholung der Operation
erfordern, für
die die Datenübertagung
fehlgeschlagen war, oder im schlechtesten Fall zu einem Systemzusammenbruch führen, was
ein Neu-Booten mit Datenverlust erfordert. Um solche Ergebnisse
zu vermeiden, werden Datenübertragungen über SCSI-Busse
jetzt allgemein durch Software-Routinen verwaltet, die die Anzahl
von Bursts bei jeder Übertragung,
die Größe von Weniger-Als-Voll-Bursts
oder die Füllung
von unvollständigen
Bursts mit Füllbytes,
die Anzahl von Bursts, die erfolgreich übertragen wurden und das erneute
Senden von Bursts, die mit Paritätsfehlern empfangen
wurden, verfolgen. Obwohl sie relativ erfolgreich sind beim Glätten der
Datenübertragung
auf dem SCSI-Bus, erfordern diese Softwareroutinen einen Systemmehraufwand,
zusätzlich
dazu, dass sie eine Datenübertragungsgeschwindigkeit über den SCSI-Bus
reduzieren.
-
Was
benötigt
wird, ist eine Hardware-Implementierung zum Verwalten von Burst-Übertragungen über dem
SCSI-Bus. Hardware-verwaltete Übertragungen
haben das Potential zum bedeutenden Verbessern der Datenübertragungs-Effizienz
und -Geschwindigkeit.
-
Das
Patent AU-B-652371 offenbart eine Burst-Modus-Datenübertragungsschaltung,
durch die die Größe des nächsten zu übertragenden
Bursts berechnet wird.
-
Zusammenfassung
der Erfindung
-
Die
Erfindung schafft eine automatisierte Hardware-Steuerung von Burst-Modus-Übertragungen
auf einem SCSI-Bus zwischen einem Hostbus-Adapter und einem Vorrichtungsserver
mit einem Vorrichtungsschnittstellen-Adapter, der die Erfindung
einlagert. Die Erfindung beseitigt den Bedarf nach einer Softwaresteuerung
solcher Übertragungen,
wodurch die Übertragungsgeschwindigkeit
verbessert wird. Für
ein bevorzugtes Ausführungsbeispiel
der Erfindung ist der Vorrichtungsschnittstellen-Adapter mit drei
Datenregistern, einem Komparator, einem Subtrahierer und einer getakteten
Steuerlogik ausgerüstet.
Die Steuerlogik, die vorzugsweise in eine anwendungsspezifische
integrierte Schaltung (ASIC) eingelagert ist, kann eine Zustandsmaschine umfassen.
Die Steuerlogik steuert nicht nur die Zeitgebung von Logikoperationen
an Bord bei dem Vorrichtungsschnittstellen-Adapter, sondern auch die Datenübertragung
zwischen dem Vorrichtungsserver und dem Hostschnittstellen-Adapter über den
SCSI-Bus. Das erste Datenregister enthält einen Wert, der der Anzahl
von Bytes entspricht, die bei der Übertragung verbleiben. Am Anfang
der Übertragung
entspricht der gespeicherte Wert der Gesamtanzahl von Datenbytes,
die übertragen
werden sollen. Das zweite Datenregister enthält einen Wert, der der maximal. möglichen
Anzahl von Bytes bei einem Burst entspricht. Das dritte Datenregister
enthält
einen Wert, der der tatsächlichen
Anzahl von Bytes entspricht, die bei dem nächsten Burst übertragen
werden sollen.
-
Wenn
eine Übertragung
von dem Vorrichtungsschnittstellen-Adapter durch den Hostbus-Adapter angefordert
wird, werden ein erstes und zweites Register mit Werten beladen,
die der Länge
der Übertragung
bzw. der maximalen Burstlänge
entsprechen. Das anfängliche
Laden des ersten und zweiten Registers kann gehandhabt werden durch die
ASIC, wenn eine solche Funktionalität in derselben eingelagert
ist, oder kann gehandhabt werden durch einen optionalen Mikroprozessor
an Bord bei dem Vorrichtungsschnittstellen-Adapter, der getrennt von
der ASIC ist. Sobald das erste und zweite Register beladen sind,
orchestriert die Steuerlogik die nachfolgende Verarbeitungssequenz
ohne weitere Eingabe von dem Mikroprozessor (falls entsprechend
ausgerüstet).
Der Komparator vergleicht die Werte, die in dem ersten und zweiten
Register gespeichert sind, und bestimmt, welcher der zwei Werte kleiner
ist, und gibt den kleineren Wert, der die tatsächliche Burst-Länge ist,
in das dritte Register aus. Der Subtrahierer dekrementiert dann
den Wert in dem ersten Register um den Wert, der in dem dritten Register
gespeichert ist. Der dekrementierte Wert stellt die Bytes dar, die
bei der Übertragung
verbleiben. Die Steuerlogik initiiert dann eine Übertragung eines Bursts der
Länge,
die durch das dritte Register spezifiziert wird, zwischen dem Vorrichtungsserver und
dem Hostbus-Adapter. Sobald der Burst erfolgreich übertragen
wurde, prüft
die Steuerlogik, um zu sehen, ob der Wert, der in dem ersten Register
gespeichert ist, Null ist. Wenn er Null ist, ist die Übertragung
vollständig
und die Routine wird abgeschlossen. Wenn er nicht Null ist, verursacht
die Steuerlogik, dass die Sequenz wiederholt wird, bis der Wert, der
in das erste Datenregister geladen wird, Null ist. Wenn ein Fehler
während
der Übertragung
eines Bursts auftritt, kann dieser Burst wiederholt werden unter
Verwendung des Werts, der in dem dritten Datenregister gespeichert
ist. Alle anderen Aspekte von Datenübertragungen auf dem SCSI-Bus,
wie z. B. Handshaking, werden durch das Protokoll des SCSI-Busses gehandhabt.
Eine automatisierte Steuerung von Burst-Übertragungen
ist nur möglich
zwischen dem Host-Bus-Adapter und Vorrichtungen, die einen Vorrichtungsschnittstellen-Adapter aufweisen, der
die Erfindung einlagert. Die Steuerung von Burst-Modus-Datenübertragungen
zwischen dem Host-Adapter
und jeglicher anderen Vorrichtung auf dem selben SCSI-Bus, deren
Schnittstellen-Adapter die Erfindung nicht einlagert, werden gehandhabt
gemäß dem Steuerverfahren,
das durch diesen bestimmten Vorrichtungsschnittstellen-Adapter implementiert
wird.
-
Als
ein alternatives, wenn auch etwas langsameres Ausführungsbeispiel
ersetzt ein Mikroprozessor die gesamte oder einen Abschnitt der
spezialisierten Steuerlogik. Der Mikroprozessor und sein zugeordneter
Takt können
die Zeitgebung von Logikoperationen an Bord des Vorrichtungsschnittstellen-Adapters,
die Übertragung
von Daten zwischen dem Vorrichtungsserver und dem Hostschnittstellen-Adapter über den
SCSI-Bus, das anfängliche
Laden des ersten und zweiten Registers steuern und können, falls
erwünscht,
sogar den Komparator und Subtrahierer ersetzen. Der grundlegende
Prozess bleibt der gleiche. Aufgrund des nicht-spezialisierten Wesens eines Mikroprozessors
jedoch ist eine größere Anzahl
von Taktzyklen erforderlich, um dieselben Aufgaben auszuführen, wodurch
die Übertragungsgeschwindigkeit
verlangsamt wird.
-
Beschreibung
der Zeichnungen
-
1 ist
ein Blockdiagramm eines ersten Ausführungsbeispiels eines SCSI-Busses
mit einem Hostbus-Adapter
und einem Vorrichtung-1-Schnittstellen-Adapter, der die Erfindung einlagert;
und
-
2 ist
ein Blockdiagramm des Vorrichtung-l-Schnittstellen-Adapters aus 1,
der die Erfindung einlagert;
-
3 ist
ein Blockdiagramm eines zweiten Ausführungsbeispiels eines SCSI-Busses,
der einen Hostbus-Adapter
und einen Vorrichtung-1-Schnittstellen-Adapter aufweist, der die Erfindung
einlagert; und
-
4 ist
ein Logikdiagramm des Prozesses zum Steuern von Burst-Übertragungen.
-
Detaillierte
Beschreibung der Erfindung
-
Wie
hierin vorangehend angegeben wurde, ist es der primäre Vorteil
des SCSI-Busses, dass er die Hinzufügung von bis zu sieben oder
fünfzehn
Peripheriegeräten
(abhängig
davon, ob der Bus SCSI-1 oder SCSI-2 ist) unter Verwendung eines
einzelnen Hostbus-Adapters ermöglicht,
der als das Gateway zu dem Host-Computersystem dient. In der echten Welt
führt der
Mangel an vorherrschenden Standards dazu, dass mehrere Vorrichtungen
schnittstellenmäßig mit
einem Hostsystem über
dessen eigene spezialisierte Hostbus-Adapterkarte schnittstellenmäßig verbunden
werden, die in den Systembus eingesteckt wird. Da jede Hostbus-Adapterkarte
ihre eigene Systeminterruptzuordnung (IRQ-Zuordnung; IRQ = interrupt
request = Unterbrechungsanforderung) erfordert, geht einer der primären Vorteile
der Verwendung des SCSI-Busses verloren. Diese Situation ändert sich
schrittweise, da dominante Unternehmen in der PC-Industrie Standards
setzen, denen kleinere Unternehmen schließlich folgen. Gegenwärtig jedoch beeinflusst
der Mangel an Standards die Implementierung der vorliegenden Erfindung.
Allgemein ausgedrückt
wird die Steuerung von Burst-Modus-Übertragungen auf der Vorrichtungsebene
implementiert. Das heißt,
dass eine Burst-Modus-Übertragungssteuerung
verwaltet wird durch den Vorrichtungsschnittstellen-Adapter, der
einer bestimmten Vorrichtung zugeordnet ist. Die vorliegende Erfindung schafft
eine automatisierte Hardwaresteuerung von Burst-Modus-Übertragungen auf einem SCSI-Bus zwischen
einem Hostbus-Adapter
und einem Vorrichtungsserver mit einem Vorrichtungsschnittstellen-Adapter,
der die Erfindung einlagert. Die Erfindung beseitigt den Bedarf
nach einer Softwaresteuerung solcher Übertragungen, wodurch die Übertragungsgeschwindigkeit
verbessert wird.
-
Bezug
nehmend nun auf 1 wird ein erstes Peripheriegerät 101 mit
einem Vorrichtungsserver 102 und ein zweites Peripheriegerät 103 mit
einem Vorrichtungsserver 104 mit einem SCSI-Bus 105 über einen
ersten Vorrichtungsschnittstellen-Adapter 106 bzw. einen
zweiten Vorrichtungsschnittstellen-Adapter 107 gekoppelt.
Der SCSI-Bus 105 ist schnittstellenmäßig mit einem Hostcomputersystembus 108 über einen
Hostbus-Adapter 109 gekoppelt. Das erste und zweite Peripheriegerät 101 bzw. 103 kann
einer beliebigen einer Anzahl von Vorrichtungen zugeordnet sein,
wie z. B. einem Festplattenlaufwerk, einem Bandlaufwerk, einem ZIP-Laufwerk, einem CD-ROM-Laufwerk,
einem Graphikscanner oder einer anderen Vorrichtung, die einen Vorrichtungsschnittstellen-Adapter
aufweist, der entworfen ist, um mit dem Hostbus-Adapter 109 zu
funktionieren. Die Gesamtanzahl von Peripheriegeräten, die schnittstellenmäßig mit
dem Hostcomputersystembus 108 über den Hostbus-Adapter 109 verbunden sein
können,
hängt von
der SCSI-Version ab. Ein Bus-Abschlusselement 110 verhindert
ungewollte Signalreflexionen am Ende des SCSI-Busses 105, nachdem
letzten Peripheriegerät,
das an dem SCSI-Bus 105 installiert ist. Der erste Vorrichtungsschnittstellen-Adapter 106,
der ein bevorzugtes Ausführungsbeispiel
der Erfindung einlagert, ist detaillierter in 2 offenbart.
-
Bezug
nehmend nun auf 2 lagert der erste Vorrichtungsschnittstellen-Adapter 106 ein
erstes Datenregister 201, ein zweites Datenregister 202, ein
drittes Datenregister 203, einen Komparator 204, einen
Subtrahierer 205, eine getaktete Steuerlogik 206,
einen Mikroprozessor 207 und einen programmierbaren Nur-Lese-Speicher
(PROM; PROM = programmable read-only memory) 208 ein. Die
Steuerlogik 206, die vorzugsweise in einer anwendungsspezifischen
integrierten Schaltung (ASIC; ASIC = application-specific integrated
circuit) eingelagert ist, kann eine Zustandsmaschine umfassen. Die
Steuerlogik 206 steuert nicht nur die Zeitgebung von Logikoperationen
an Bord des Vorrichtungsschnittstellen-Adapters 106, sondern
auch die Übertragung
von Daten zwischen dem ersten Vorrichtungsserver 102 und dem
Hostschnittstellen-Adapter 109 (siehe 1) über den
SCSI-Bus 105. Das erste Datenregister 201 enthält einen
Wert, der der Anzahl von Bytes entspricht, die bei der Übertragung
verbleiben. Die Größe der Übertragung
kann jegliche Anzahl von Bytes lang sein, und kann kleiner als,
größer als
oder gleich zu der Größe einer
Aufzeichnung sein (definiert durch das Host-Computersystem). Auf
dieser Ebene der Systemoperation werden Übertragungen ohne Rücksicht
auf Aufzeichnungsgröße durchgeführt. Am Beginn
der Übertragung
entspricht der Wert, der in dem ersten Datenregister 201 gespeichert
ist, der Gesamtanzahl von Datenbytes, die übertragen werden sollen. Das
zweite Datenregister 202 enthält einen Wert, der der maximal
möglichen
Anzahl von Bytes bei einem Burst entspricht. Das dritte Datenregister 203 enthält einen
Wert, der der tatsächlichen Anzahl
von Bytes entspricht, die bei dem nächsten Burst zwischen dem Vorrichtungsserver 102 und dem
Hostbus-Adapter 109 übertragen
werden sollen (siehe 1).
-
Weiterhin
Bezug nehmend auf 2, wenn eine Übertragung
von dem Vorrichtungsschnittstellen-Adapter 106 durch den
Hostbus-Adapter 109 angefordert wird, werden das erste
Datenregister 201 und das zweite Datenregister 202 mit
Werten beladen, die der Übertragungslänge bzw.
der maximalen Burstlänge
entsprechen. Das anfängliche
Beladen des ersten und zweiten Datenregisters kann gehandhabt werden
durch die Steuerlogik 206, wenn eine solche Funktionalität in derselben
eingelagert ist, oder kann gehandhabt werden durch einen optionalen
Mikroprozessor 207 an Bord des Vorrichtungsschnittstellen-Adapters 106,
der getrennt von der Steuerlogik 206 ist. Wenn ein Mikroprozessor 207 verwendet
wird zum Laden der anfänglichen
Datenwerte, wird ein Nur-Lese-Speicher (ROM) verwendet, um den Mikroprozessor 207 zu
programmieren, wenn eine Einschaltfrequenz erfasst wird. Sobald das
erste Datenregister 201 und das zweite Datenregister 202 mit
den geeigneten Werten beladen sind, orchestriert die Steuerlogik 206 die
nachfolgende Verarbeitungssequenz ohne weitere Eingabe von dem Mikroprozessor
(falls entsprechend ausgerüstet).
Der Komparator 204 vergleicht den Wert, der in dem ersten
Datenregister 201 gespeichert ist, mit dem Wert, der in
dem zweiten Datenregister 202 gespeichert ist, bestimmt,
welcher der zwei Werte der kleinere ist und gibt den kleineren Wert
in das dritte Register 203 aus, der die tatsächliche
Länge in
Bytes des nächsten
Bursts ist. Der Subtrahierer dekrementiert dann den Wert in dem
ersten Register 201 um den Wert, der in dem dritten Register 203 gespeichert ist.
Der dekrementierte Wert stellt die Bytes dar, die bei der Übertragung
verbleiben. Die Steuerlogik 207 initiiert dann eine Übertragung
eines Datenbursts zwischen dem ersten Vorrichtungsserver 102 und dem
Hostbus-Adapter 109. Wiederum wird die Anzahl von Bytes
in dem Burst spezifiziert durch den Wert, der in dem dritten Register 203 gespeichert
ist. Sobald der Burst erfolgreich übertragen wurde, wiederholt
die Steuerlogik die Sequenz. Der Prozess wird wiederholt, bis die
gesamte Übertragung
erfolgreich abgeschlossen wurde und der Wert in dem ersten Datenregister 201 Null
ist. Wenn ein Fehler während
der Übertragung
eines Bursts auftritt, kann dieser Burst wiederholt werden unter
Verwendung des Werts, der in dem dritten Datenregister 203 gespeichert
ist. Alle anderen Aspekte von Datenübertragungen auf dem SCSI-Bus,
wie z. B. Handshaking, werden durch das Protokoll des SCSI-Busses
gehandhabt. Eine automatisierte Steuerung von Burstübertragungen
ist nur möglich
zwischen dem Hostbus-Adapter 109 und Vorrichtungen, die
einen Vorrichtungsschnittstellen-Adapter 106 aufweisen,
der die Erfindung einlagert. Die Steuerung von Burst-Modus-Datenübertragungen
zwischen dem Hostbus-Adapter 109 und jeglichem anderen
Vorrichtungsserver, wie z. B. Vorrichtung II 103 auf dem
selben SCSI-Bus, deren Schnittstellen-Adapter 107 die Erfindung
nicht einlagert, wird gehandhabt gemäß dem Steuerverfahren, das
durch diesen bestimmten Vorrichtungsschnittstellen-Adapter implementiert wird.
-
Bezug
nehmend nun auf 3 wird ein erstes Peripheriegerät 301 mit
einem Vorrichtungsserver 302 schnittstellenmäßig mit
einem SCSI-Bus 105 über
einen Vorrichtungsschnittstellen-Adapter 303 verbunden,
der ein alternatives Ausführungsbeispiel der
Erfindung einlagert. Ein zweiter Peripheriegeräteserver 104 ist schnittstellenmäßig mit
dem SCSI-Bus 105 über einen
herkömmlichen
Vorrichtungsschnittstellen-Adapter 107 verbunden, der die
Erfindung nicht einlagert. Der SCSI-Bus 105 ist schnittstellenmäßig mit
einem Hostcomputersystembus 108 über einen Hostbus-Adapter 109 verbunden.
Der erste Vorrichtungsschnittstellen-Adapter 303 weist
zugeordnet zu demselben einen Mikroprozessor 307, einen
Nur-Lese-Speicher (ROM) 308, in dem ein Programmcode zum
Verwalten von Burst-Übertragungen
gespeichert ist, ein erstes Datenregister 304, ein zweites
Datenregister 305 und ein drittes Datenregister 306 auf.
Ein lokaler Datenbus 309 verbindet den Mikroprozessor 307 mit
den Datenregistern 304, 305 und 306.
Das erste und zweite Peripheriegerät 301 bzw. 103 können jegliche
einer Anzahl von Vorrichtungen sein, wie z. B. ein Festplattenlaufwerk,
ein Bandlaufwerk, ein ZIP-Laufwerk, ein CD-ROM-Laufwerk, ein Graphikscanner.
-
Die
Gesamtanzahl von Peripheriegeräten, die
mit dem Hostcomputersystembus 108 über die Hostschnittstellensteuerung 109 verbunden
sein kann, hängt
von der SCSI-Version ab. Ein Busabschluss 110 verhindert
ungewollte Signalreflexionen am Ende des Busses nach der letzten
Vorrichtung. Die Burst-Modus-Übertragungssteuerung
für das erste
Peripheriegerät 301 ist
auf ähnliche
Weise zu der des zweiten Ausführungsbeispiels
der Erfindung implementiert. Die primäre Differenz ist, dass Register-Lade-,
-Vergleich-, und -Dekrementier-Funktionen durch den Mikroprozessor 307 und
nicht die spezialisierte Steuerlogik 206 gehandhabt werden.
Die Werte, die in dem ersten, zweiten und dritten Datenregister
(304, 305 bzw. 306) dieses alternativen
Ausführungsbeispiels
gespeichert sind, entsprechen den Werten, die in dem ersten, zweiten
und dritten Datenregister (201, 202 bzw. 203)
des bevorzugten Ausführungsbeispiels
gespeichert sind, das in 1 und 2 gezeigt
ist.
-
Bezug
nehmend nun auf 4 kann eine automatisierte Hardwaresteuerung
von Burst-Modus-Übertragungen
als ein hardware-implementierter Prozess charakterisiert werden.
Für das
bevorzugte Ausführungsbeispiel
der Erfindung, gezeigt in 1 und 2,
beginnt der Prozess mit „START" mit der Steuerlogik 206,
die auf den Empfang der Übertragungsanforderung
wartet. Nach dem Empfang einer solchen Anforderung wird die Anforderung
decodiert, um festzustellen, ob die Anforderung auf die Vorrichtung
zutrifft oder nicht, der der Schnittstellen-Adapter, der die Erfindung
einlagert, zugeordnet ist. Wenn die Anforderung nicht auf die Vorrichtung
zutrifft, die den Schnittstellen-Adapter aufweist, der die Erfindung einlagert,
wird keine weitere Aktion unternommen. Wenn jedoch bestimmt wird,
dass die Anforderung tatsächlich
auf die Vorrichtung gerichtet ist, der der Schnittstellen-Adapter 106 vorangeht,
werden das erste und zweite Register 201 und 202 durch
die Steuerlogik 206 (oder den Mikroprozessor 207)
mit den entsprechenden Werten beladen. Das erste Register 201 wird
mit einem Wert beladen, der der Gesamtanzahl von Bytes bei der Übertragung entspricht,
während
das zweite Register 202 mit einem Wert beladen wird, der
der Maximalanzahl von Bytes bei einem Burst entspricht. Der kleinere
dieser zwei Werte wird dann in das dritte Register 203 geschrieben.
Der Subtrahierer 205 dekrementiert dann den Wert, der in
dem ersten Register 201 gespeichert wird, um den Wert,
der in dem dritten Register 203 gespeichert ist. Eine Burst-Datenübertragung
wird dann zwischen dem Vorrichtungsserver 102 und dem Hostbus-Adapter 109 ausgeführt, wobei
die Anzahl von Bytes, die übertragen
wird, dem Wert entspricht, der in dem dritten Register 203 gespeichert
ist. Die Steuerlogik 206 prüft dann, um zu sehen, ob die Bytes
erfolgreich übertragen
wurden oder nicht. Wenn nicht, wird die Burst-Übertragung unter Verwendung
des Datenwerts wiederholt, der immer noch in dem dritten Register 203 gespeichert
ist. Wenn die Übertragung
erfolgreich abgeschlossen wurde, wird der Wert, der in dem ersten
Register 201 gespeichert ist, geprüft, um zu sehen, ob derselbe
Null ist. Wenn eine Null in diesem Register gefunden wird, wird
eine komplette Übertragung
angezeigt, und die Routine wird beendet. Ein Wert ungleich Null
in dem Register 201 zeigt an, dass die Übertragung noch nicht abgeschlossen
ist. Somit vergleicht der Komparator 204 wiederum den Wert,
der in dem ersten Register 201 gespeichert ist, mit dem
Wert, der in dem zweiten Register 202 gespeichert ist,
schreibt den kleineren der zwei Werte in das dritte Register 203,
subtrahiert den Wert in dem dritten Register 203 von dem
Wert bei dem ersten Registerwert 201, schreibt den Restwert in
das erste Register 201 und überträgt die Anzahl von Datenbytes,
die dem Wert entspricht, der in dem dritten Register 203 gespeichert
ist, zwischen dem Vorrichtungsserver 102 und dem Host-Adapter 109. Der
Prozess fährt
wiederholt fort, bis der Wert in dem ersten Register 102 Null
ist.
-
Für das alternative
Ausführungsbeispiel
der Erfindung beginnt der Prozess bei „START" mit dem Mikroprozessor 307,
der auf den Empfang einer Übertragungsanforderung
wartet. Nach dem Empfang einer solchen Anforderung, wird die Anfor derung
decodiert, um festzustellen, ob die Anforderung auf die Vorrichtung
zutrifft, der der Schnittstellen-Adapter, der die Erfindung einlagert,
zugeordnet ist, oder nicht. Wenn bestimmt wird, dass die Anforderung
tatsächlich
auf die Vorrichtung gerichtet ist, die dem Vorrichtung-1-Schnittstellen-Adapter 303 vorangeht,
werden das erste und zweite Register (304 bzw. 305)
durch den Mikroprozessor 307 mit den entsprechenden Werten
beladen. Das erste Register 304 wird mit einem Wert beladen,
der der Gesamtanzahl von Bytes bei der Übertragung entspricht, während das
zweite Register 305 mit einem Wert beladen wird, der der
maximalen Anzahl von Bytes bei einem Burst entspricht. Der Mikroprozessor 307 vergleicht dann
die Werte, die in dem ersten und zweiten Register (304 bzw. 305)
gespeichert sind. Der Mikroprozessor 307 schreibt den kleineren
dieser zwei Werte in das dritte Register 306. Der Mikroprozessor 307 dekrementiert
dann den Wert, der in dem ersten Register 304 gespeichert
ist, um den Wert, der in dem dritten Register 306 gespeichert
ist. Eine Burst-Datenübertragung
wird dann zwischen dem Vorrichtungsserver 302 und dem Hostbus-Adapter 109 ausgeführt, wobei
die Anzahl von Bytes, die übertragen wird,
dem Wert entspricht, der in dem dritten Register 306 gespeichert
ist. Der Mikroprozessor 307 prüft dann, um zu sehen, ob die Übertragung
vollständig abgeschlossen
wurde oder nicht. Wenn nicht, wird die Burst-Übertragung unter Verwendung
des Datenwerts wiederholt, der immer noch in dem dritten Register 306 gespeichert
ist. Wenn die Übertragung
erfolgreich abgeschlossen wurde, wird der Wert in dem ersten Register 304 geprüft, um zu
bestimmen, ob der gespeicherte Wert Null ist. Wenn ja, endet die Routine.
Wenn er nicht Null ist, kehrt der Logikfluss zu einem Vergleich
der Werte in dem ersten und zweiten Register (304 bzw. 305)
zurück.
Der Prozess fährt
fort, bis der Wert in dem ersten Register Null ist, was bedeutet,
dass die Übertragung
abgeschlossen ist.
-
Obwohl
nur zwei Ausführungsbeispiele
der Erfindung hierin beschrieben sind, ist es für Durchschnittsfachleute auf
dem Gebiet offensichtlich, dass Änderungen
und Modifikationen an der Erfindung durchgeführt werden können, ohne
von dem Schutzbereich der Erfindung abzuweichen, wie er hierin nachfolgend
beansprucht wird. Zum Beispiel, obwohl die Erfindung im Hinblick
auf einen SCSI-Bus offenbart ist, ist die Erfindung an jeglichen
anderen Typ von Bus oder allgemein jegliche Kommunikationsverknüpfung anwendbar, über die
Burst-Modus-Übertragungen
implementiert werden. Zusätzlich
dazu können
die Werte, die in den Datenregistern 201, 202, 203, 304, 305 und 306 gespeichert
sind, Bytes oder jegliche andere Länge einer Dateneinheit repräsentieren,
wie z. B. 16-Bit-Doppelbyte, 32-Bit-Wörter oder 64-Bit lange Wörter. Anders
ausgedrückt,
können
Burst-Übertragungen,
anstelle im Hinblick auf 8-Bit-Bytes quantifiziert zu werden, durch
jegliche andere geeignete Mehrfachbiteinheit quantifiziert werden.