DE69316022T2 - Steuerungsvorrichtung fuer speicherplattenanordnung mit steuerbloecken fuer steuerungsinformation - Google Patents

Steuerungsvorrichtung fuer speicherplattenanordnung mit steuerbloecken fuer steuerungsinformation

Info

Publication number
DE69316022T2
DE69316022T2 DE69316022T DE69316022T DE69316022T2 DE 69316022 T2 DE69316022 T2 DE 69316022T2 DE 69316022 T DE69316022 T DE 69316022T DE 69316022 T DE69316022 T DE 69316022T DE 69316022 T2 DE69316022 T2 DE 69316022T2
Authority
DE
Germany
Prior art keywords
signal
bus
data
transfer
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69316022T
Other languages
English (en)
Other versions
DE69316022D1 (de
Inventor
Ryan Callison
Gregory Chandler
Thomas Grieff
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Compaq Computer Corp
Original Assignee
Compaq Computer Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Compaq Computer Corp filed Critical Compaq Computer Corp
Publication of DE69316022D1 publication Critical patent/DE69316022D1/de
Application granted granted Critical
Publication of DE69316022T2 publication Critical patent/DE69316022T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

    HINTERGRUND DER ERFINDUNG 1. Gebiet der Erfindung
  • Die Erfindung betrifft Controller für Plattenanordnungen bzw. Plattenfelder und insbesondere Controller für Plattenanordnungen mit Busmaster-Fähigkeiten und Fähigkeiten zu lokaler Verarbeitung.
  • 2. Beschreibung des Standes der Technik
  • Personalcomputer werden immer leistungsfähiger. Sie haben eine Stufe erreicht, an der sie Minicomputer und sogar Mainframe-Computer ersetzen. In dieser, nach Größe geordneten Hierachie ist ein lokales Netzwerk (LAN) die Grundeinheit. Ein LAN hat typischerweise einen oder mehrere Datei-Server bzw. File- Server und eine große Anzahl von einzelnen Arbeitsplätzen. In den meisten Fällen werden die File-Server als Speichermittelpunkt für verschiedene Dateien verwendet, wobei Kopien der Dateien auf Anforderung an die Arbeitsplätze übertragen und aktualisierte Dateien zur Speicherung zurückgegeben werden. Als Ergebnis spiegelt das Platten-Untersystem, das in dem File-Server verwendet wird, direkt die Leistungsfähigkeit bzw. die Performance des LAN wieder.
  • Dieses Performance-Erfordernis hat zu großen Fortschritten sowohl bei den Plattenantrieben selbst als auch bei der Architektur des Platten-Untersystems geführt. Die Plattenspeichergrößen haben sich erhöht, die Zugriffszeiten haben sich verringert und die Datenübertragungsraten haben sich erhöht. Allerdings besteht, da weitere Verringerung der Größe auftritt und größere Zahlen von Arbeitsplätzen mit dem LAN verbunden werden, ein fortwährender Druck, die Performance des Platten-Untersystems zu verbessern. Plattenlaufwerke, die bei Mainframe-Computern verwendet werden, bieten eine hohe Performance, sind allerdings sehr groß und sehr teuer. Kleinere, aber billigere Laufwerke sind vorzuziehen. Wenn mehrere Plattenlaufwerke verwendet werden, erhöht sich allerdings die Ausfallrate dramatisch. Verschiedene Lösungen stehen für dieses Ausfallproblem zur Verfügung. Das einfachste ist es, komplett redundante Plattenlaufwerke zu schaffen. Dies wird als Spiegelbilderzeugung bezeichnet. Ein Problem bei der Spiegelbilderzeugung ist die Speichereffizienz. Die Hälfte der verfügbaren Kapazität wird zu Redundanzzwecken verwendet. Dies ist ein relativ großer Nachteil. Als Abhilfe für diesen Nachteil schlagen D. Patterson et al. in einem Artikel mit dem Titel "A Case for Redundant Arrays of Inexpensive Disks (RAID)", ACM Sigmod Conference, Juni 1988, verschiedene Architekturen von redundanten Feldern bzw. Anordnungen aus billigen Platten (RAID-Architekturen) vor. Zwei Stufen sind von besonderem Interesse, nämlich RAID 4 und RAID 5. Beide verwenden ein Bilden von Stripes bzw. Streifen von Daten, wobei die logischen Daten quer durch die Anordnung der Platten in Stripeform vorgesehen werden, und einen Paritätsschutz. Beim Paritätsschutz werden die Datenwerte eines jeden Plattenlaufwerksektors, die einen Stripe bilden, einer EXKLUSIV-ODER- Operation unterzogen, um einen Paritätssektor auszubilden. Dieser wird an eine Position in dem Stripe geschrieben. In RAID 4 ist die gesamte Paritätsinformation auf einem Plattenlaufwerk enthalten, wohingegen in RAID 5 die Paritätsinformation über die Laufwerke auf schiefe oder diagonale Weise verteilt ist. Eine RAID 5-Architektur ist etwas schwieriger zu entwickeln, bietet aber, wobei angenommen wird, daß die Overheads verringert werden können, eine verbesserte Gesamt- Performance, da ein Laufwerk aufgrund der Paritätsdatenspeicherung oder Wiederherstellung keinen Flaschenhals bildet.
  • Wenn die Verarbeitungs- und Steueranforderungen der RAID 4- und RAID 5-Implementationen gegeben sind, wird vorzugsweise ein bestimmter Prozessor verwendet, um die Operationen zu steuern. Die Verwendung des Hauptsystemprozessors würde dramatisch die Gesamt-Performance verringern. Eine Lösung zur Entwicklung des RAID 4-Systems ist in der US-Patentanmeldung Nr. 431 735 mit dem Titel "Disk Array Controller With Parity Capabilities" offenbart, die hierbei unter Bezugnahme aufgenommen wird, in welcher ein lokaler Prozessor eine spezialisierte DMA-Controlleranordnung steuert. Die DMA-Controller führen Hauptdatenübertragungsaufgaben durch, wobei der lokale Prozessor lediglich die Befehlsinterpretation und Steuerfunktionen durchführt.
  • Während dieses Design eine große Verbesserung gegenüber der Hauptcomputersteuerung darstellt, stehen verschiedene Gebiete für Verbesserungen offen. Ein Hauptgebiet für eine Verbesserung war der tatsächliche Datentransfer zwischen dem Controller und dem Hauptsystem. Der 82355-Chip von Intel Corp. oder BMIC-Chip wurde als Bushauptsteuereinrichtung in einem EISA- Bus verwendet. Dieser Chip hat den Nachteil, daß er eine Hauptcontrollereinrichtung bzw. Mastereinrichtung auf dem lokalen internen Bus war. Somit waren der Operationen schwierig durchzuführen, da der lokale Prozessor den BMIC programmieren mußte, bevor Übertragungen durchgeführt wurden. Dies erhöht stark den Overhead für den lokalen Prozessor und verlangsamt den Betrieb. Außerdem war der interne Bus im wesentlichen nicht erweiterbar, so daß das Design diesbezüglich beschränkt war. Dieses Design des BMIC hat die Fähigkeiten des DMA- Controllers auflediglich relativ einfache DMA-Funktionen beschränkt. Dies hat dazu geführt, daß der Overhead für den lokalen Prozessor sogar weiter angewachsen ist, da jede und alle Übertragungsoperationen der DMA-Controller vollständig durch den lokalen Prozessor aufgebaut bzw. eingestellt werden mußten. Dieser Aufbau erforderte zahlreiche Eingabe/Ausgabe- Operationen, die ein Teil des Anwachsens des Overheads darstellt.
  • Deshalb ist eine Struktur wünschenswert, die flexiblere Operationen auf dem lokalen Bus ermöglicht, wodurch Übertragungen zu dem Hauptsystem ohne Operationen des lokalen Prozessors und geringere Steueranforderungen für viele Übertragungen ermöglicht werden, so daß der Overhead des lokalen Prozessors verringert wird, um eine verbesserte Performance eines Controllers für eine Plattenanordnung zu ermöglichen.
  • Gemäß der vorliegenden Erfindung wird geschaffen ein Controller für eine Plattenlaufwerksanordnung zur Verwendung mit einer Mehrzahl von Plattenlaufwerken, die eine Anordnung bilden, und zur Installation in einem Hauptrechner, wobei der Controller aufweist:
  • eine lokale Prozessoreinrichtung zum Steuern des Betriebs des Controllers für die Plättenlaufwerksanordnung;
  • eine Pufferspeichereinrichtung zum temporären Speichern von Plattenlaufwerks- und Befehlsdaten;
  • eine Einrichtung zum Übertragen von Daten zwischen den Plattenlaufwerken und der Pufferspeichereinrichtung, wobei die Einrichtung mit der lokalen Prozessoreinrichtung zum Empfangen von Steuerinformationen verbunden ist; und
  • eine Einrichtung zum Übertragen von Daten zwischen der Pufferspeichereinrichtung und dem Hauptspeicher, wobei die Einrichtung aufweist:
  • einen Bus zum Übertragen von Hauptadresseninformation bzw. Hostadressinformation und Daten, wobei der Bus Buscontrollereinrichtungen bzw. Busmasterteinrichtungen und Busnebenstelleneinrichtungen bzw. Busslaveeinrichtungen unterstützt;
  • eine Buscontrollereinrichtung, die mit dem Bus und dem Hauptcomputer bzw. Hostcomputer verbunden ist, um Hauptadresseninformation bzw. Hostadressinformation zu empfangen und Daten zwischen dem Bus und dem Hauptcomputer zu übertragen, wobei die Buscontrollereinrichtung als Busnebenstelleeinrichtung auf den Bus wirkt, wobei die Buscontrollereinrichtung weiter mit dem Bus und der Pufferspeichereinrichtung verbunden ist, um Hauptadresseninformation bzw. Hostadressinformation an den Bus zu liefern und Daten zwischen dem Bus und der Pufferspeichereinrichtung zu übertragen, wobei die Buscontrollereinrichtung als Buscontroller auf den Bus wirkt, und aufweist: eine Mehrzahl von Registern zum Empfangen von Information, die für die Übertragung, die ausgeführt werden soll, bezeichnend ist;
  • eine Einrichtung zum Steuern der Übertragung entsprechend der Information, die in dem Register enthalten ist; und
  • eine Einrichtung zum Laden von Daten, die einen Befehlsdeskriptorblock bilden, aus der Pufferspeichereinrichtung in die Register.
  • Eine Plattenanordnungs-Controllerkarte gemäß der vorliegenden Erfindung kann einen EISA-Buscontroller umfassen, der eine Nebenstelle auf seinem internen Datenbus ist, so daß es ermöglicht wird, daß andere Controllerchips auf der Plattenanordnungs-Controllerkarte als Hauptcontroller operieren. Dies ermöglicht es, daß die Plattencontroller mit größeren Fähigkeiten versehen werden, womit der Overhead des lokalen Prozessors wesentlich verringert wird.
  • In der bevorzugten Ausführungsform wird ein Paar von SCSI- Bussen entwickelt, um eine Reihe von SCSI-Plattenlaufwerken aufzunehmen. Der lokale Prozessor umfaßt geeignete Software, um diese verschiedenen Laufwerke als Feld zu behandeln und entwickelt RAID 1- und RAID 5-Architekturen. Diese SCSI-Busse werden durch den Ausgang von zwei SCSI-Buscontrollerchips geschaffeyi, die mit den Ausgängen der Plattenlaufwerke eines erweiterten Laufwerksanordnungs-Controllerchips (Advanced Drive Array Controller Chip bzw. ADAC) verbunden sind. Der erweiterte Plattenlaufwerksanordnungs-Controllerchip ist mit dem Übertragungspuffer-RAM verbunden, der ein temporäres Lager für Daten darstellt, die an die Plattenlaufwerke geliefert und von denselben erhalten werden. Der ADAC ist ein Hauptcontroller bzw. Master auf dem internen Datenbus, der zur Übertragung von Laufwerksdaten an den Hauptcomputer verwendet wird. Ein Laufwerkanordnungsbus-Master(DABM)-Chip arbeitet auf diesem internen Datenbus als Nebenstelle und ist ein EISA-Busmaster bzw. EISA-Bushauptcontroller. Das Protokoll des internen Datenbusses, der als Controller-Transferbus (CTB) bezeichnet wird, liefert einen Zyklus, um eine Hauptspeicheradresse in die Busnebenstelle zu laden, einen Zyklus, um Übertragungszählinformationen und Informationen, die für eine Nebenstelle spezifisch sind, zu liefern, und dann eine Reihe von Datentransferzyklen, so wie sie erforderlich sind. Signale auf dem Controller-Transferbus umfassen die Übertragungsrichtung und verschiedene Bereitzustands-, Anforderungs- und Bestätigungssignale, so daß ein Vollquittungsbetrieb sowohl auf einem Blockübertragungsniveau als auch für jedes individuelle Daten-Doppelwort, das übertragen wird, durchgeführt wird.
  • Der lokale Prozessor ist mit dem DABM-, dem ADAC- und dem SCSI-Controller verbunden, um deren Betrieb zu steuern und bestimmte Information zu liefern. Beispielsweise wird der Betrieb des ADAC durch Strukturen gesteuert, die als Befehlsdeskriptorblöcke oder CDBs bezeichnet sind. Jeder CDB umfaßt eine Reihe an Informationen, die verschiedene Adressen beschreiben, Steuer-Bits und funktionelle Bits, die durch den ADAC verwendet werden, um seine Übertragungsoperationen zwischen dem Transferpuffer-BAM und dem Hauptspeicher durch den DABM durchzuführen. Der lokale Prozessor verwendet einen direkten Eingang in den ADAC, um Daten, die einen CDB bilden, direkt in den Transferpuffer-BAM zu schreiben und dort abzulegen. Der CDB-Ort wird dann identifiziert und freigegeben, so daß der ADAC dann automatisch den CDB erhält, die Daten in bestimmte und geeignete Register lädt und dann Operationen durchführt, die den Informationen, die in diesen Registern enthalten sind, entsprechen, bis eine Übertragung ausgeführt ist. Nachdem eine Übertragung abgeschlossen worden ist, wird die CDB-Information, wenn sie modifiziert worden ist, an den Transferpuffer-RAM zur Überprüfung durch den lokalen Prozessor zurückgegeben, und um eine mögliche Verkettung mit nachfolgenden CDBs zu ermöglichen.
  • Verschiedene eindeutige Operationen werden durch den ADAC ohne Eingriff durch den lokalen Prozessor selbst durchgeführt. Beispielsweise werden in einer Plattenanordnung Daten quer über die verschiedenen Platten in Form von Streifen vorgesehen, so daß Laufwerksdaten, wenn sie von einem bestimmten Laufwerk empfangen werden, nicht in der genauen Reihenfolge, in der sie in dem Hauptcomputer erscheinen, vorliegen. Dies wird als Vorsehen von Stripes bezeichnet. Deshalb ist ein Sammeln und/oder Streuen erforderlich, in Abhängigkeit von der Richtung der Übertragung, so daß die empfangene Information aus den verschiedenen Laufwerken in dem Hauptspeicher aufeinanderfolgend gemacht wird. Der ADAC umfaßt diese Fähigkeit, so daß, nachdem eine bestimmte Stripegröße- oder Sektorübertragung abgeschlossen worden ist, ein Adressen-Offset geschaffen wird, so daß die nächste Datensequenz, die aus einem fortwährenden Strom auf einer bestimmten Platte resultiert, aber logisch nach den übrigen Platten in dem Stripe erscheint, richtig an die nicht aneinandergrenzenden Adressen in den Hauptspeicher geliefert wird. Dadurch, daß dies für alle bestimmten sequentiellen Laufwerksdaten oder Laufwerksdaten, die empfangen werden, nach Abschluß des gesamten Übertragungsbetrieb durchgeführt wird, werden die Daten in dem Hauptspeicher aufeinanderfolgend vorliegen. Dies wird durch einen einfachen CDB-Befehl durchgeführt, so daß diese Stripeausbildungsfähigkeit ohne weitere Anforderungen oder eine Überwachung durch den lokalen Prozessor zum Ausdruck gebracht ist. Dies verringert die Entwicklung von CDBs und den Overhead des lokalen Prozessors erheblich.
  • Als ein anderes Beispiel kann eine Reihe von CDBs verkettet werden, so daß eine relativ komplexe Abfolge von Aufgaben entwickelt werden kann. Der lokale Prozessor braucht lediglich einmal die CDB-Kette aufzustellen und dann den ersten auszulösen. Wenn die Übertragungen durch die CDB-Kette abgeschlossen sind, werden sie geladen, durchgeführt und der bzw. die nächste wird ausgeführt. Der lokale Prozessor wird lediglich durch einen Interrupt informiert, wenn das letzte CDB in der Kette ausgeführt worden ist. Dies verringert ebenfalls die Overheads in einem lokalen Prozessor erheblich, da Interrupts viel weniger häufig empfangen werden. Eine ganze relativ komplexe Aufgabe kann entwickelt werden und lediglich ein Interrupt wird empfangen, wenn die gesamte Übertragung abgeschlossen ist.
  • Als ein weiteres Beispiel der Fähigkeiten des ADAC, kann ein langer Datenstrom von einem Laufwerk erhalten werden, der Informationen enthält, die nicht erforderlich ist, aber sequentielle Operationen auf dem Laufwerk ermöglicht. Eine Kette von CDBs wird entwickelt, um diese Daten zu übertragen. Allerdings übertragen bestimmte CDBs die nicht erforderlichen Daten in ein Bit-Sammelfeld, während andere tatsächliche Datenübertragungen anweisen. Da in den CDB-Ketten nur ein Interrupt vorgesehen ist, sind allerdings keine fortlaufenden Daten an den Hauptspeicher zugewiesen worden.
  • Deshalb kann durch die Entwicklung eines neuen EISA- Busmasterchips, der eine Busnebenstelle auf dem internen Bus darstellt, eine zusätzliche Flexibilität erhalten und zahlreiche Bushauptcontroller können auf dem internen Datenbus vorhanden sein. Der EISA-Busmaster braucht nicht individuell vor den Übertragungsoperationen programmiert werden, sondern wird durch die bestimmten internen Bus-Steuerchips automatisch programmiert und gesteuert. In diesem Szenario können die internen Bus-Steuerchips signifikant erweitert ausgebildet werden als es andernfalls möglich wäre, da sie eine Reihe von Operationen ohne Steuerung auf kleinster Stufe durch den lokalen Prozessor durchführen können. All dies gibt dem lokalen Prozessor Freiraum und verringert seinen Overhead, so daß komplexere Aufgaben sogar mit höherer Rate durchgeführt werden können. Deshalb verbessert die Performance des Plattenanordnungscontrollers stark die Designs bzw. Konstruktionen gemäß dem Stand der Technik.
  • Ein besseres Verständnis der vorliegenden Erfindung kann erhalten werden, wenn die folgende detaillierte Beschreibung der bevorzugten Ausführungsform im Zusammenhang mit den folgenden Zeichnungen betrachtet werden, in welchen:
  • Fig. 1 ein Blockdiagramm eines Computersystems ist, welches den Plattenanordnungscontroller gemäß der vorliegenden Erfindung beinhaltet;
  • Fig. 2 ein Blockdiagramm des SCSI-Plattenanordnungscontrollers von Fig. 1 ist;
  • Fig. 3 ein Blockdiagramm des erweiterten Laufwerksanordnungscontrollers von Fig. 2 ist;
  • Fig. 4 ein Blockdiagramm des Plattenanordnungs- Buscontrollers von Fig. 2 ist;
  • Fig. 4A ein detaillierteres Blockdiagramm des Datentransferabschnitts des Plattenanordnungs-Buscontrollers von Fig. 2 ist;
  • Fig. 5 ein Blockdiagramm ist, welches die verschiedenen Verbindungen und Signale des Controllertransfer- Busses von Fig. 2 darstellt;
  • Fig. 6-11 Zeitablaufdiagramme des Betriebs des Controllertransfer-Busses von Fig. 2 sind;
  • Fig. 12 ein Blockdiagramm des erweiterten Laufwerksanordnungs-Controllers von Fig. 3 ist;
  • Fig. 13 bis 18, 21, 24 und 32 bis 35, 36A, 36B und 37 schematische Blockdiagramme von Abschnitten des Busmaster-Kanalcontrollers von Fig. 3 sind;
  • Fig. 19 bis 20, 22 bis 23, 25 bis 31 und 38 Zustandsmaschinen-Flußdiagramme zum Betrieb verschiedener Zustandsmaschinen in dem Busmaster- Kanalcontroller von Fig. 3 sind;
  • Die Fig. 39 und 40 Zustandsmaschinen-Bubblediagramme und Flußdiagramme des Betriebs verschiedener Zustandsmaschinen in dem Plattenanordnungs-Busmaster von Fig. 4 sind; und
  • Fig. 41 bis 43 schematische Diagramme und Blockdiagramme von Abschnitten des Plattenanordnungs-Buscontrollers von Fig. 4 sind.
  • Nimmt man nun Bezug auf Fig. 1, ist dort ein Computersystem C gezeigt, das einen SCSI-Controller umfaßt, der entsprechend der vorliegenden Erfindung betrieben werden kann. Ein Mikroprozessor 20, vorzugsweise ein 80486 von Intel Corporation ist mit einem Cachecontroller 22 verbunden. Der Cachecontroller 22 ist seinerseits mit einem Hauptrechner-Bus bzw. Haupt- Bus oder Host-Bus 24 verbunden, der Adressen, Daten und Steuerabschnitte umfaßt. Ein Speichercontroller 26 ist mit dem Haupt-Bus 24 verbunden, um Hauptspeicheroperationen zu empfangen und zu steuern. Der Speichercontroller 26 ist mit dem Hauptspeicherfeld 28 des Computers C verbunden, wobei die Daten von dem Hauptspeicherfeld 28 durch einen Datenpuffer 30 auf dem Haupt-Bus 24 gehen.
  • Außerdem ist mit dem Haupt-Bus 24 ein EISA-Buscontroller (EBC) 32 verbunden, der die Übersetzung von Signalen zwischen dem Haupt-Bus 24 und dem EISA-Bus 34, welcher der vorzugsweise verwendete Eingabe/Ausgabe-Bus ist, behandelt. Es ist selbstverständlich, daß andere I/O-Busse verwendet werden können. Der EBC 32 ist mit einem integrierten Systemperipheriegerät (ISP) 36 verbunden, welches einen DMA-Controller, einen Zeitgeber, einen Interrupt-Controller, einen EISA- Buszuteiler und andere Einrichtungen, wie sie in einem EISA- System notwendig und bekannt sind, umfaßt. Der ISP 36 ist an den Haupt-Bus 24 und den EISA-Bus 34 angeschlossen. Zusätzlich ist der EBC 32 mit einer Reihe von Adressen- und Daten- Latch-Einrichtungen und Transceivern 38 verbunden, die mit dem Haupt-Bus 24 und dem EISA-Bus 34 verbunden sind und das notwendige Adressen- und Daten-Latchen und Puffern liefern, um die Entwicklung eines EISA-Systems zu ermöglichen. Außerdem ist der EISA-Bus 34 mit einer Reihe von EISA-Steckplätzen 40 verbunden, die austauschbare Schaltungskarten aufnehmen.
  • Zwei zusätzliche Busse sind von dem EISA-Bus 34 aus vorgesehen. Der erste dieser Busse wird als X-Bus 42 bezeichnet, der herkömmlicherweise ein 16-Bit-Bus ist, der verwendet wird, um eine Verbindung mit der Mehrheit der Unterstützungschips, die auf der Systemleiterplatte bzw. auf dem Systemboard des Computersystems C vorhanden sind, auszubilden. Beispielsweise umfassen diese Unterstützungschips einen Lesespeicher (ROM) 44; einen Realzeittaktgeber (RTC) und einen CMOS-Speicher 46; einen Disketten-Controller 48, der seinerseits an ein Diskettenlaufwerk 50 angeschlossen ist; einen 8042-Tastatur- Controller 52, der seinerseits an eine Tastatur 54 und ein Anzeigegerät (nicht gezeigt) angeschlossen ist; und einen Multi-Peripheriegeräte-Controller (AMPC) 58, der einen parallelen Anschluß 60 und eine Reihe serieller Anschlüsse 62 liefert. Dies sind Einrichtungen, die in einem Klein- Computersystem C, wie beispielsweise dem gezeigten, bekannt sind, und zur Verfügung gestellt werden, um einen vollständigen Computer darzustellen und nicht notwendigerweise mit der vorliegenden Erfindung in Bezug stehen.
  • Ein zweiter Bus, der von dem EISA-Bus 34 aus entwickelt ist, ist der Y-Bus 64, der vorzugsweise ein 32-Bit-Bus ist, um Übertragungen mit hoher Datenrate an den EISA-Bus 34 zu ermöglichen. Ein Video-Controller 66 und der mit ihm assoziierte Monitor 68 sind mit dem Y-Bus 64 verbunden. Außerdem ist ein einfaches SCSI(Small Computer System Interface)- Untersystem 70 angeschlossen. Ein einfaches SCSI-Untersystem 70 umfaßt ein Buscontroller-Interface bzw. Busmaster- Interface 72, einen SCSI-Controller 74 und einen SCSI-Port 76, der verwendet wird, um eine Verbindung mit den SCSI- Einrichtungen herzustellen. In dem Fall des Computersystems C ist das einfache SCSI-Untersystem 70, wie das Computersystem C, auf der Systemplatine lokalisiert und umfaßt aus Gründen der Performance vorzugsweise interne SCSI- Festplattenlaufwerke. Das einfache SCSI-Untersystem 70 ist vom Typ eines herkömmlichen Designs, nicht auf Anordnungs- bzw. Feldbetrieb gerichtet, sondern auf eine herkömmliche Steuerung eines SCSI-Busses. Die Performance des Untersystems 70 als solche liegt unter der, die für große Netzwerk-Server- Anwendungen erforderlich ist.
  • Zusätzlich ist ein SCSI-Anordnungscontroller 80 bzw. SCSI- Feldcontroller 80 gemäß der vorliegenden Erfindung in einem der EISA-Steckplätze 40 installiert, wenn eine höhere Performancelösung als das einfache SCSI-Untersystem 70 erwünscht ist. Der SCSI-Feld-Controller 80 hat zwei SCSI-Ports 82 und 84 mit einem SCSI-Bus 83 und 85 von jedem Port 82 und 84 aus. Eine Reihe von SCSI-Festplattenlaufwerken 86 sind mit dem ersten SCSI-Bus 83 verbunden, und eine andere Reihe von SCSI- Festplattenlaufwerken 88 sind mit dem zweiten Bus 85 verbunden. Die SCSI-Busse 83 und 85 können, wie erwünscht, intern oder extern vorgesehen werden. Der SCSI-Feld-Controller 80 betreibt die verschiedenen angeschlossenen SCSI-Treiber 86 und 88 als Treiberfeld, vorzugsweise unter Implementierung solcher Techniken, wie den zuvor definierten RAID 1 und RAID 5 Architekturen.
  • Der SCSI-Feld-Controller 80 ist in Fig. 2 im Detail gezeigt. Der SCSI-Feld-Controller 80 umfaßt eine Reihe verschiedener Blöcke. Der erste Block ist ein Plattenanordnungs- Buscontroller bzw. Busmaster (DABM) 100, der mit dem EISA-Bus 34 verbunden ist. Der DABM 100 arbeitet sowohl als EISA- Busmaster als auch als EISA-Busnebenstelle. Er arbeitet als EISA-Busnebenstelle, um Mailbox-Informationen und Doorbell- Registerinformationen mit dem Host-Computer auszutauschen, sowie zu Zwecken der EISA-Konfiguration. Diesbezüglich ist sein Betrieb dem des BMIC gemäß dem Stand der Technik ähnlich. Der DABM 100 arbeitet als EISA-Busmaster zu Zwecken der Datenübertragung zwischen dem Speicherfeld 28 und den SCSI- Feld-Controller 80. Der DABM 100 ist mit einer Lokalprozessor-Schnittstelle 102 und einem Controller-Transfer-Bus bzw. Controller-Übertragung-Bus 104 verbunden. Der Controller- Transfer-Bus oder CTB 104 ist hauptsächlich zur Datenübertragung, während die Lokalprozessor-Schnittstelle 102 zur Übertragung von Befehlen von einem lokalen Prozessor 106, welcher den Betrieb des SCSI-Feld-Controllers 80 steuert, vorgesehen. Der DABM 100 arbeitet im Gegensatz zu dem BMIC als Busnebenstelle auf dem CTB-Bus 104, womit ermöglicht wird, daß er direkter durch die zahlreichen Geräte gesteuert wird.
  • Der lokale Prozessor 106, vorzugsweise ein Intel 80386SX oder ein kompatibler oder 80486SX-Prozessor liefert die Hauptsteuerung für den SCSI-Feld-Controller 80. Der lokale Prozessor 106 ist mit einer Prozessor-Untertützungsschaltung 108, wie beispielsweise einem Chip, der die Fähigkeiten eines herkömmlichen Computers in einem einzelnen Chip vereinbart, verbunden. Dies umfaßt die Fähigkeiten von herkömmlichen Zeitgebern bzw. Taktgebern, von Interrupt-Controllern, von Speichercontrollern usw.. Ein Random-Access-Memory (RAM) 110 ist mit dem Adressierabschnitt der Prozessor- Unterstützungsschaltung 108 und mit den Datenleitungen des lokalen Prozessors 106 verbunden, um dem lokalen Prozessor 106 einen Datenspeicher zu geben. Ein Lesespeicher (ROM) 112, vorzugsweise ein Flash-ROM, ist mit der Prozessor- Unterstützungsschaltung 108 verbunden, um die Programmspeicher und Betriebsbefehle für den lokalen Prozessor 106 zu liefern. Zusätzlich sind Puffer 114 mit der Prozessor- Unterstützungsschaltung 108 verbunden, um eine lokale Prozessor-Schnittstelle für direkten Zugriff auf die verschiedenen Einrichtungen auf dem SCSI-Feld-Controller 80 zu schaffen.
  • Ein erweiteter Laufwerksanordnungs-Controller (ADAC) 16 ist vorzugsweise der Haupt-Datenübertragungs-Controller in dem SCSI-Feld-Controller 80. Der ADAC 116 ist mit dem Übertragungspuffer-RAM 118 verbunden, das zur temporären Speicherung von Plattendaten und Befehlspaketen verwendet wird. Der ADAC 116 ist mit dem CTB 104 als Master-Einrichtung verbunden, so daß er die Datenübertragung von dem Übertragungspuffer-RAM 118 durch den DABM steuern kann, wie dies in Fällen des Lesens oder Schreibens erforderlich ist. Der ADAC 116 kann auch als Busnebenstelle arbeiten, um Befehle von zusätzlichen ADAC-Einheiten zu empfangen. Der ADAC 116 umfaßt auch einen lokalen Prozessoranschluß, der mit der Lokalprozessor- Schnittstelle 102 verbunden ist, um zu ermöglichen, daß er Befehls- und Steuerinformationen von dem lokalen Prozessor 106 empfängt. Der ADAC 116 umfaßt weiterhin zwei externe Laufwerkskanäle, welche die Treiberbusse 120 und 122 sind. Effektiv sind dies Busse vom DMA-Typ, die 32-Bits breit sind. Ein SCSI-Controller 124, vorzugsweise der advanced SCSI- Protokoll-Controller Fujitsu MB86601, ist mit dem Laufwerks- Bus 120 verbunden. Auf ähnliche Weise ist ein SCSI-Controller 126 mit dem Laufwerks-Bus 122 verbunden. Jeder SCSI- Controller 124 und 126 ist mit einem SCSI-Port 82 und 84 verbunden, so daß die SCSI-Busse 83 und 85 gebildet werden, an welche SCSI-Laufwerke 86 bzw. 88 angeschlossen sind. Es ist anzumerken, daß die Lokalprozessor-Schnittstelle 102 ebenfalls an die SCSI-Controller 124 und 126 angeschlossen ist, so daß der lokale Prozessor 106 direkte Befehle an die SCSI- Controller 124 und 126 liefern kann, um ihnen den Betrieb zu ermöglichen.
  • Zusätzlich ist eine Schreibcacheeinrichtung oder eine nachgeschaltete Schreibeinheit 128 an den CTB 104 angeschlossen. Der Schreibcache 128 umfaßt eine Mehrzahlan mit Batterie abgesicherter, paritätsüberprüfter, gespiegelter CMOS-Speicher, der verwendet wird, um Daten, die an den SCSI-Feld-Controller 80 geliefert werden, nachträglich zu schreiben. Ein Paritätsschreibcache-Controller 132 ist an den CTB 104 als Nebenstelle angeschlossen, so daß Daten von dem ADAC 116 an den Controller 132 übertragen werden können, um eine richtige Speicherung und Hochgeschwindigkeitsspeicherung in dem RAM 130 zu ermöglichen. Alternativ kann der Paritätsschreibcache- Controller 132 auch ein Bushaupt-Controller bzw. Busmaster sein und die Übertragungsoperationen selbst steuern. Ein etwas detaillierterer Betrieb einer ähnlichen Schreibcacheeinheit ist in den Patentanmeldungen mit der Serien-Nr. 894 067 mit dem Titel "Posted Write Disk Array System", eingereicht am 5. Juni 1992 und mit der Serien-Nr. 894 734 mit dem Titel "Disk Drive Controller With A Posted Write Cache Memory", eingereicht am 5. Juni 1992 dargestellt, die beide hier unter Bezugnahme aufgenommen werden.
  • Fig. 3 zeigt ein Blockdiagramm des ADAC 116. Bestimmte Abschnitte des ADAC 116 werden aus Gründen der Klarheit nicht im Detail beschrieben. Das Hauptelement, dem in der vorliegenden Erfindung das Interesse gilt, ist der Busmaster- Kanalcontroller 200. Der Busmaster-Kanalcontroller 200 wird verwendet, um die Übertragung von Daten aus dem Übertragungspuffer-RAM 118 oder aus verschiedenen Plattenübertragungskanälen an den DABM 100 und dann den EISA-Bus 34 zu Plattenschreiboperationen und den umgekehrten Weg für Plattenleseoperationen zu steuern. Er führt, wie im folgenden erklärt wird, vielfältige neue Merkmale bzw. Operationen aus. Der Busmaster-Kanalcontroller 200 ist mit dem CTB-Bus 104 durch ein Businterface 202 verbunden. Außerdem ist das Businterface 202 mit einem Busnebenstellenkanalcontroller 204 verbunden, um zu ermöglichen, daß der ADAC 116 als Busnebenstelle mit einem anderen ADAC oder einer anderen Busmaster-Einrichtung arbeitet. Ein Lokalprozessor-Interfaceblock 206 ist durch eine Lokalprozessor-Schnittstelle 202 mit dem Lokalprozessor- Schnittstellen-Bus 102 verbunden. Der Lokalprozessor- Schnittstellenblock 206 umfaßt geeignete Register, um zu ermöglichen, daß der lokale Prozessor 106 die Operationen des ADAC 116 steuert. Ein RAM-Controller 210 ist über eine RAM- Schnittstelle 212 mit dem Übertragungspuffer-RAM 118 verbunden. Der RAM-Controller 210 ist mit dem Busmaster- Kanalcontroller 200, dem Busnebenstellenkanalcontroller 204 und dem Lokalprozessor-Schnittstellenblock 206 verbunden. Zusätzlich ist eine Reihe von fünf Plattenübertragungskanälen 214 mit dem RAM-Controller 210 verbunden, um dem DMA eine Übertragung von Information zwischen dem Übertragungspuffer- RAM 118 und den tatsächlichen Plattenlaufwerken oder in diesem Fall den erwünschten SCSI-Controllern 124 und 126 zu ermöglichen. Jeder Plattenübertragungskanal 214 umfaßt eine FIFO-zu-Pufferdatenübertragung. Zusätzlich ist eine Paritätsmaschine 218 mit dem RAM-Controller 210 verbunden, um zu ermöglichen, daß Paritätsinformation, wie sie im allgemeinen in Plattenfeldern verwendet werden, mit hoher Geschwindigkeit sofort entwickelt werden kann. Eine der Funktionen des RAM- Controllers 210 ist es, eine Zuweisung zwischen diesen verschiedenen Quellen vorzunehmen, um einen Zugriff auf den Übertragungspuffer-RAM 118, falls erforderlich, zu ermöglichen. Hierzu umfaßt der BAM-Controller 210 eine Zuweiseeinrichtung und verschiedene Multiplexereinrichtungen.
  • Der Lokalprozessor-Schnittstellenblock 206 ist mit dem Nebenstellenkanalcontroller 204, dem Master-Kanalcontroller 200, den Übertragungskanälen 214-216, der Paritätsmaschine 218 und dem RAM-Controller 210 verbunden, um ihren Betrieb zu steuern und Information an sie weiterzugeben. Die Datenübertragungskanäle 214 sind mit einem Laufwerkskanalmultiplexer 220 verbunden, der 5 Eingangs- und 11 Ausgangskanäle hat. An den Laufwerkskanalmultiplexer 220 sind drei Laufwerks- Buscontroller 222, 224 und 226 angeschlossen. Diese sind ebenfalls DMA-Controller, welche im Fall der Controller 222 und 224 eine Schnittstelle zu den SCSI-Controllern 124 und 126 bilden. Sie empfangen Daten von dem Datenkanalmultiplexer 220 und den Plattenübertragungskanälen 214. Details ähnlicher DMA-Transferoperationen zwischen den Laufwerken und dem Übertragungspuffer-RAM 118 lassen sich in der Patentanmeldung mit dem Titel "Disk Array Controller With Parity Capabilities", die zuvor unter Bezugnahme aufgenommen worden ist, finden. Eine Bezugnahme auf die obengenannten Anmeldungen schafft ein allgemeines Verständnis, wie Daten von dem Übertragungspuffer-RAM 118 an die SCSI-Controller 124 und 126 übertragen werden. Die genauen Details des ADAC 116 der vorliegenden Erfindung sind zwar etwas unterschiedlich, aber die allgemeinen Operationen sind einander ähnlich, und die Details werden in dieser speziellen Anwendung nicht als relevant angesehen.
  • Nimmt man nun Bezug auf die Fig. 4 und 4A, sind dort vereinfachte Blockdiagramme des DABM 100 gezeigt. Der DABM 100 ist eine Virtuellkanal-EISA-Busmaster-Schnittstelle, die so konstruiert ist, daß sie eine Nebenstelle für verschiedene Controller bzw. Master-Einrichtungen auf dem CTB 104 darstellt. Auf der DABM 100 durchgeführte Transaktionen werden über den CTB 104 durch den ADAC 116 oder andere Busmaster programmiert.
  • Der DABM 100 ist im allgemeinen in zwei Teile aufgeteilt, die einen CPU-Kommunikationsblock (CCB) 300, der zwischen den EISA-Bus 34 und die Lokalprozessor-Schnittstelle 102 gekoppelt ist, und einen Hochgeschwindigkeits- Datenübertragungsblock (DTB) 302, der zwischen den EISA-Bus 34 und den CTB 104 gekoppelt ist, umfassen. Der CCB 300 ist ein Interrupt-getriebener Befehlsweg zwischen dem Mikroprozessor 20 und dem lokalen Prozessor 106, der einen Weg aus gemeinsamen Registern 306 schafft, so daß der lokale Prozessor 106 und der Mikroprozessor 20 Nachrichten und Interrupts zueinander schicken können. Der CCB 300 umfaßt eine EISA- Decodierlogik 304, die an den EISA-Bus 34 gekoppelt ist und weiterhin an die gemeinsamen Register 306 und eine Zuteilungseinrichtung bzw. Zuweisungseinrichtung 308 gekoppelt ist. Die gemeinsamen Register 306 sind an die Lokalprozessor- Schnittstelle 102 und eine Lokaldecodierlogik 310 und ebenfalls an die Zuteilungseinrichtung 308 gekoppelt. Außerdem umfaßt der CCB 300 lokale Register 312, die mit der lokalen Decodierlogik 310 und der Lokalprozessor-Schnittstelle 102 verbundensind.
  • Im allgemeinen umfaßt die Zuteilungseinrichtung 308 eine Zustandsmaschine (nicht gezeigt), die synchron mit einem Taktsignal, das als TCLK bezeichnet wird, von dem CTB 104 ist und weist zwischen den Geräten zu, die an den EISA-Bus 34 und die Lokalprozessor-Schnittstelle 102 gekoppelt sind, um zu bestimmen, welche Einrichtung zu einem gegebenen Zeitpunkt Zugriff zu die gemeinsamen Register 306 hat. Die gemeinsamen Register 306 sind voll kompatibel mit dem gemeinsamen Registersatz in dem 82355 Busmaster-Interface-Contoller (BMIC) von Intel. Anfragesignale bzw. Anforderungssignale werden durch die Zuteilungseinrichtung 308 durch den EISA-Bus 34 und die Lokalprozessor-Schnittstelle 102 empfangen, um einen Zugriff auf die gemeinsamen Register 306 anzufordern. Die Zuteilungseinrichtung 308 gibt einfach einen Zugriff an den ersten Anfragenden, es sei denn, beide Anfragen werden gleichzeitig erhalten, wobei in diesem Fall dem lokalen Prozessor 106 durch die Lokalprozessor-Schnittstelle 102 eine Priorität gegenüber einer Einrichtung, die durch den EISA-Bus 34 gekoppelt ist, wie beispielsweise dem Mikroprozessor 20, gegeben wird. Falls dem Anschluß des lokalen Prozessors 106 zuletzt ein Zugriff gewährt wurde und der Mikroprozessor 20 eine noch nicht bearbeitete Anfrage aufweist, wird der Zugriff dem Mikroprozessor 20 gewährt.
  • Die EISA-Decodierlogik 304 ist eine EISA-Nebenstellen- Schnittstelle, welche die gemeinsamen Register 306 des DABM 100 mit dem Mikroprozessor 200 teilt und konform mit der EISA-Spezifikation ist.
  • Die lokale Decodierlogik 310 stellt eine Schnittstelle von den gemeinsamen Registern 306 und den lokalen Registern 312 mit dem lokalen Prozessor 106 durch die Lokalprozessor- Schnittstelle 102 dar. Die lokalen Register 312 schaffen für den lokalen Prozessor 106 einen Zugriff, um Kanalsteuer- und Statusfunktionen zu übertragen, und ermöglichen die Programmierung eines I/O-Auswahl-Adressdecodiermerkmals bzw. einer -operation. Die lokalen Register 312 erfordern keine Zuteilung.
  • Der DTB-Abschnitt 302 des DABM 100 konvertiert Zyklen auf dem CTB 104 in Master-Zyklen für den EISA-Bus 34. Die maximale Datenrate ist vorzugsweise 33 MBytes pro Sekunde während eines EISA-Burstzyklus. Der DTB 302 umfaßt einen oberen Adress(UA)MUX/Schieber 314, der an den EISA-Bus 34, einen Zyklusgenerator 316 und an eine Daten- FIFO/Ausrichtungseinrichtung 322 angeschlossen ist. Der Zyklusgenerator 316 ist außerdem an den EISA-Bus 34 und die Daten-FIFO/Ausrichtungseinrichtung 322 und an eine Adresseinheit 318 angeschlossen. Die Adresseinheit 318 ist mit dem EISA-Bus 34 und mit einem Adresssynchronisierer 320, der an den CTB 104 angeschlossen ist, verbunden. Die Daten- FIFO/Ausrichtungseinrichtung 322 ist außerdem an den CTB 104 angeschlossen.
  • Datenübertragungen zwischen dem CTB 104 und dem EISA-Bus 34 werden durch einen Adress/Zähl-Ladezyklus initiiert, der durch den ADAC 116 zum DABM 100 ausgeführt wird. Eine bidirektionale FIFO mit doppelter Wortbreite und einer Tiefe von 5 (Fig. 43) wird innerhalb der Daten- FIFO/Ausrichtungseinrichtung 322 den Übertragungsdaten in beiden Richtungen zur Verfügung gestellt. Nachdem ein Ladezyklus von dem DABM 100 akzeptiert worden ist, wird an den EISA-Bus 34 eine Anfrage gestellt und der Nebenstellenstatus wird dem ADAC 116 unter Verwendung eines Signals, das als TBSDN bezeichnet ist, angezeigt. Für EISA- Schreibübertragungen treten keine Zyklen auf dem EISA-Bus 34 auf, es sei denn, der FIFO ist nicht leer. Falls der ADAC 116 zum Stillstand kommt, stoppen die Zyklen des EISA-Busses 34, obwohl der EISA-Bus 34 gehalten wird, bis ein programmierter Anhalteverzögerungswert abläuft, zu welcher Zeit der EISA-Bus 34 freigegeben wird und wiederholt eine Anfrage gestellt wird. Falls die Daten-FIFO/Ausrichtungseinrichtung 322 aufgrund der Nichtverfügbarkeit des EISA-Busses 34 oder eines langsamen EISA-Speichers voll wird, werden die Datenzyklen auf dem CTB 104 nicht durch den DABM 100 bestätigt. Die Übertragung wird als abgeschlossen angesehen, wenn ein Byte- Zähler innerhalb des DABM 100 Null erreicht oder wenn von der ADAC 116 ein Master-Fertigstellungssignal empfangen wird. Falls die Datenzyklen auf dem CTB 104 nach Abschluß der Übertragung durchgeführt werden, dann werden die Zyklen nicht durch den DABM 100 bestätigt.
  • Für EISA-Leseübertragungen treten im allgemeinen Zyklen auf dem EISA-Bus 34 immer dann auf, wenn der FIFO nicht voll ist, und Zyklen auf dem CTB 104 werden lediglich bestätigt, wenn der FIFO nicht leer ist.
  • Die Daten-FIFO/Ausrichteeinrichtung 322 ist eine bidirektionale Einrichtung, welche Daten zwischen dem CTB 104 und dem EISA-Bus 34 synchronisiert, Byte-Längen umstellt, um die Daten richtig zwischen den 32-Bit-Bussen auszurichten, und beide Busse von der Zugänglichkeit der Daten informiert. Der FIFO hat die Hauptfunktion, einlaufende Daten zu halten, während Steuersignale von einem Bus zu dem anderen synchronisiert werden. Daten treffen an dem Eingangsport ein und werden synchron mit dem Eingangstakt in den FIFO geschrieben, falls Platz zur Verfügung steht. Wenn die Daten in dem FIFO sind, wird eine Steuerausgabe synchron zu dem Ausgangs-Bus- Takt gebildet um anzuzeigen, daß Daten aus dem FIFO entfernt werden können. Ein Lesen wird synchron mit dem Ausgangstakt durchgeführt, der die Daten in dem FIFO-Ausgabe-Halteregister speichert. Ein Multiplexer 470 (Fig. 43) an dem Dateneingang und den Lese/Schreib-Impulseingängen macht den FIFO effektiv bidirektional.
  • Der Adresssynchronisierer 320 empfängt von dem CTB 104 während eines Adress/Zähl-Ladezykluses Daten und lädt synchron einen EISA-Adresszähler und einen Datenzähler, der in der Adresseinheit 318 residiert, die weiter durch das BCLK-Signal auf dem EISA-Bus 34 getaktet wird.
  • Die Adresseinheit 318 zählt inkrementierend EISA-Adressen, zählt dekrementierend verbleibende Bytes und erzeugt die EISA-Bytefreigaben. Der EISA-Adresszähler und die verbleibenden Bytes-Zähler werden synchron durch ein Kommando von dem Adresssynchronisierer 320 geladen. Die Zähler ändern die Werte auf einen Befehl von dem Zyklusgenerator 316 hin und die Bytefreigaben werden durch Kombinieren von Adressen und Zählungen gebildet. Die Adresseinheit 318 empfängt Datenverfügbarkeits- und Richtungssignale vom Adresssynchronisierer 320 und liefert Signale, die den DAV- und DIR-Signalen entsprechen, an den Zyklusgenerator 316. Außerdem wird, wenn eine Adresse akzeptiert worden ist und andere Bedingungen erfüllt sind, ein Signal, das als GO bezeichnet ist, an den Zyklusgenerator 316 geliefert, um die Datenübertragung zu beginnen. Das DABM 100 ist in der Lage, auf 1 KByte-Grenzen zu bursten und schafft ein Signal PRE1K, das der letzten Byte- Übertragung bei einer 1 KByte-Grenze zugewiesen ist. Ein Signal POST1K wird bei der nächsten Byte-Übertragung zugewiesen, was ein Rollover der 1 KByte-Grenze anzeigt.
  • Der Zyklusgenerator 316 umfaßt zwei Zustandsmaschinen, die zusammenarbeiten, um auf den EISA-Bus 34 zuzugreifen, und Bus-Zyklen erzeugen. Somit fragt der Zyklusgenerator 316 den EISA-Bus 34 mit dem MREQ*-Signal ab, überwacht das Zuordnungsbetätigungssignal für den EISA-Bus 34, das als MAK* bezeichnet wird, zählt Preempt-Zeitsperrintervalle und zählt Datenverfügbarkeits-Zeitsperrintervalle. Der UA- MUX/Verschieber 314 leitet EISA-Adressen auf die Datenpins des DABM 100 während oberer Adresszyklen um, und verschiebt EISA-Daten zwischen den Wortspuren während Abwärtsverschiebungsburstzyklen. Die Adressumleitfähigkeit spart im wesentlichen Adressstifte und ist auf eine ähnliche Art und Weise wie in der BMIC-Einrichtung von Intel implementiert.
  • Nimmt man nun auf Fig. 5 Bezug, ist dort das CTB 104 gezeigt, das Hochgeschwindigkeitsblockdatenübertragungen zwischen mehreren Buscontrollern und Nebenstellen mit einem minimalen Zuteilungs-Overhead durchführen kann. Ein Taktgenerator 326 ist vorgesehen, um ein Taktsignal TCLK zu erzeugen, welcher vorzugsweise mit 20 MHz arbeitet. Ein zentraler Buszuteiler 324 ist vorgesehen, der Bus-Anfragesignale BREQ< 7..0> empfängt und Buszuteilungssignale BGNT< 7..0> zum Zuweisen des Zugriffs des CTB 104 auf einen der acht möglichen Busmaster- Einrichtungen. Der CTB 104 umfaßt einen Übertragungsbus 104a und einen Zuteilungsbus bzw. Zuweisungsbus 104b. Die zentrale Buszuteilungseinrichtung 324 teilt den CTB 104 auf fairer und Rotationsbasis zu. In der bevorzugten Ausführungsform ist lediglich ein Buscontroller vorgesehen, nämlich der ADAC 116, es ist lediglich eine Busnebenstelle vorgesehen, der DABM 100, und es ist lediglich eine Siphon-Nebenstelleneinrichtung optionalerweise vorgesehen, nämlich die Schreibcacheeinheit 128, so daß der zentrale Buszuteiler 324 nicht notwendigerweise erforderlich ist, obwohl die Schreibcacheeinheit 128 auch als Busmaster arbeiten kann, falls dies erwünscht ist. Für Zwecke dieser Beschreibung wird angenommen, daß der ADAC 116 ein Busmaster ist, der DABM 100 eine Busnebenstelle ist und die Schreibcache-Einrichtung 128 eine Siphonnebenstelle ist. Somit ist der Grundmodus des CTB 104, es dem ADAC 116 zu ermöglichen, Busnebenstellen auszuwählen und Datenübertragungen durchzuführen. Die Schreibcache-Einheit 128 kann ausgewählt werden, um Daten während der Datenübertragung abzusaugen, oder kann, falls entsprechend angesteuert, als Master arbeiten.
  • Erweiterte Betriebsmodi ermöglichen dem ADAG 116, Datenblöcke an das DABM 100 und die Schreibcache-Einrichtung 128 unter Verwendung eines Quittungsbetriebs zu übertragen. Vor jedem Blocktransfer überprüft der ADAC 116 vorzugsweise, ob der DABM 100 und die Schreibcache-Einheit 128 für die Datenübertragung bereit sind. Falls sie bereit sind, fährt der ADAC 116 mit einer Blockübertragung fort. Andernfalls gibt der ADAC den CTB 104 frei. Auf diese Weise verwendet der ADAC den CTB 104 nur wenn eine Datenübertragung auftreten kann.
  • Verschiedene Signale sind auf dem CTB 104 definiert um einen Quittierungsbetrieb zu ermöglichen. Der CTB 104 umfaßt 32 Datensignale TBD< 31..0> . Auswahlsignale für die Übertragungs- Busnebenstelle TBSS< 2..0> * werden von dem ADAC 116 gesteuert bzw. ausgegeben, um eine Busnebenstelle auszuwählen. Diese Signale sind aktiv tiefpeglig und werden decodiert, um acht verschiedene Busnebenstellenadressen zu liefern, obwohl lediglich der DABM 100 in der bevorzugten Ausführungsform ausgewählt ist. Auswahlsignale für die Übertragungs-Bus- Siphonnebenstelle SPSS< 2..0> * werden durch den ADAC 116 gesteuert, um eine Siphonnebenstelle auszuwählen, die vorzugsweise die Schreibcache-Einrichtung 128 ist. Diese Signale sind aktiv tiefpeglig und werden decodiert, um acht verschiedene Siphonnebenstellenadressen zu schaffen. Ein Auswahlfreigabesignal für die Übertragungs-Busnebenstelle TBSSE* ist ein aktiv tiefpegliges Signal, das von dem ADAC 116 zugewiesen wird, um die Auswahl des Busses und der Siphonnebenstellen zu qualifizieren. Das TBSSE*-Signal wird durch den DABM 100 und die Schreibcache-Einrichtung 128 überwacht, um zu bestimmen, ob sie ausgewählt wurden und auf die Operationen des ADAC 116 antworten sollen.
  • Ein Übertragungs-Bus-Richtungssignal TBDIR zeigt die Richtung der laufenden oder aktuellen Datenübertragung an. Wenn das TBDIR-Signal durch den ADAC 116 hochgesetzt wird, werden Daten von dem ADAC 116 an den DABM 100 und möglicherweise die Schreibcache-Einrichtung 128, falls ausgewählt, übertragen.
  • Wenn das TBDIR-Signal logisch tiefpeglig gesetzt ist, werden Daten von dem DABM 100 an den ADAC 116 und ebenfalls möglicherweise an die ausgewählte Schreibcache-Einrichtung 128, falls ausgewählt, übertragen. Ein Adressladesignal für die Übertragungs-Busnebenstelle TRAID* ist ein aktiv tiefpegliges Signal, das von dem ADAC 116 gesetzt wird, um von dem DABM 100 anzufordern, eine Speicheradresse, eine Übertragungs- Byte-Zählung und Daten, die für den DABM 100 spezifisch sind, anzunehmen. Ein Ladesignal für eine Siphonnebenstellenadresse SPALD* wird durch den ADAC 116 logisch tiefpeglig gesetzt, um von der Schreibcacheeinrichtung 128 anzufordern, eine Speicheradresse, eine Übertragungs-Byte-Zählung und Daten, die für die Schreibcache-Einrichtung 128 spezifisch sind, anzunehmen.
  • Ein Datenanforderungssignal für die Übertragungs- Busnebenstelle TBDRQ* wird durch den ADAC 116 tiefpeglig gesetzt, um eine Datenübertragung mit dem DABM 100 anzufordern. Ein Datenbestätigungssignal für die Übertragungs- Busnebenstelle TBDAK* wird von dem DABM 100 logisch tiefpeglig angesteuert, um eine Datenübertragung zu bestätigen. Ein Datenanforderungssignal für die Siphonnebenstelle SPDRQ* wird durch den ADAC 116 tiefpeglig gesteuert, um eine Datenübertragung mit der Schreibcache-Einrichtung 128 anzufordern. Ein Datenbestätigungssignal für die Siphonnebenstelle SPDAK* wird durch die Schreibcache-Einrichtung 128 gesteuert, um eine Datenübertragung zu bestätigen.
  • Ein Bereit/Beendet-Signal für die Übertragungs-Busnebenstelle TBSDN wird durch den DABM 100 logisch hochpeglig gesetzt, wenn er bereit ist, Übertragungen zu beginnen, oder alle zuvor bestatigten Daten am richtigen Speicherort sicher gespeichert hat. Ein Bereit/Beendet-Signal für die Siphonnebenstelle SPSDN wird durch die Schreibcache-Einrichtung 128 logisch hochpeglig gesetzt, wenn sie bereit ist, Übertragungen zu beginnen oder alle vorher bestätigten Daten an dem richtigen Speicherort sicher gespeichert hat. Ein Beendet-Signal für den Übertragungs-Buscontroller TBMDN* wird durch den ADAC 116 logisch tiefpeglig gesetzt, um dem DABM 100 und der Schreibcache-Einrichtung 128 anzuzeigen, daß der ADAC 116 den aktuellen Datentransfer für die zuvor gelieferte Nebenstellenstartspeicheradresse beendet hat und den Bus freigeben wird.
  • Der CTB 104 arbeitet im allgemeinen in einer Variation aus einem der zwei Betriebsmodi, die als MODE 0 bzw. MODE 1 bezeichnet werden. Diese Betriebsmodi umfassen eine Mischung aus den Phasen in der allgemeinen Reihenfolge, die unten aufgelistet ist:
  • 1) Buszuteilung vom CTB 104
  • 2) Bus-Aktivierung vom CTB 104
  • 3) Nebenstellenauswahl von DABM 100 und Schreibcache-Einrichtung 128
  • 4) Laden von DABM 100
  • 5) Laden von Schreibcache-Einrichtung 128
  • 6) DABM 100 und Schreibcache-Einrichtung 128 sind bereit
  • 7) Datenübertragung zu DABM 100 und Schreibcache-Einrichtung 128
  • 8) Anzeige, das ADAC 116 fertig ist
  • 9) DABM 100 und Schreibcache-Einrichtung 128 sind fertig
  • 10) Nebenstellen-Deselektion von DABM 100 und Schreibcache- Einrichtung 128
  • 11) Busfreigabe von CTB 104
  • Viele der Phasen treten in derselben Taktperiode des TCLK- Signals auf und überlappen miteinander. Die Unterscheidung zwischen den Phasen wird nur zu Zwecken der Beschreibung verwendet. Nicht alle Phasen, insbesondere die Siphonnebenstellenabschnitte der Phasen, die durch die Schreibcache- Einrichtung 128 durchgeführt werden, sind für jeden Betrieb des CTB 104 erforderlich.
  • Der MODE 0-Betrieb ist der Grundbetrieb einer Nichtblockdatenübertragung und ermöglicht es, bis zu 64 KBytes Daten zwischen dem ADAC 116 und dem DABM 100 zu übertragen. Optionalerweise ermöglicht MODE 0, daß alle Daten, die zwischen dem ADAC 116 und dem DABM 100 übertragen werden, auch an die Schreibcache-Einrichtung 128 geleitet werden. Im MODE 0- Betrieb muß der ADAC 116 bereit sein, die Daten zu übertragen, bevor der DABM 100 ausgewählt wird. Der DABM 100 und die Schreibcache-Einrichtung 128 sollten immer zur Datenübertragung bereit sein, wenn sie ausgewählt werden.
  • Im allgemeinen teilt der ADAC 116 den CTB 104 zu und erhölt ihn (Zuteilungsphase). Der ADAC 116 gibt den CTB 104 (Busfreigabephase) frei und wählt der DABM 100 und die Schreibcache-Einrichtung 128 aus (Nebenstellenauswahl). Nachdem diese Nebenstelleneinrichtungen ausgewählt worden sind, liefert der ADAC 116 die Speicheradresse des DABM 100, die maximale Übertragungs-Byte-Zählung und DABM 100 spezifische Daten an den DABM 100 (Ladephase des DABM 100). Falls eine Siphonoperation erwünscht ist, liefert der ADAC 116 ähnliche Information an die Schreibcache-Einrichtung 128 (Ladephase für die Schreibcache-Einrichtung 128). Nachdem die Daten dem DABM 100 und der Schreibcache-Einrichtung 128, falls diese ausgewählt wird, zugeführt worden sind, initiiert der ADAC 116 eine Datenübertragung mit dem DABM 100 (Datenübertragungsphase mit DABM 100). Falls eine Siphonoperation erwünscht ist, zieht die Schreibcache-Einrichtung 128 Daten, die zwischen dem DABM 100 und dem ADAC 116 übertragen werden, ab (Datenübertragungsphase für DABM 100 und Schreibcache-Einrichtung 128). Wenn alle Daten übertragen sind, oder falls der ADAC 116 den CTB 104 freigeben muß, zeigt der ADAC 116 an, wann die Übertragung abgeschlossen ist (Fertigstellungsphase des ADAC 116). Falls die Operation ein Schreiben auf dem DABM 100 ist und alle Daten übertragen worden sind, wartet der ADAC 116 auf den DABM 100, um anzuzeigen, daß alle Daten sicher gespeichert worden sind (Beendigungsphase des DABM 100). Falls ein Siphonbetrieb durchgeführt worden ist, bestatigt der ADAC 116, daß die Schreibcache-Einrichtung 128 alle vorherigen abgezogenen Daten sicher gespeichert hat (Beendigungsphase für DABM 100 und Schreibcache-Einrichtung 128). Der ADAC 116 deselektiert dann den DABM 100 und die Schreibcache-Einrichtung 128 (Deselektionsphase für Nebenstelle) und gibt den CTB 104 frei (Freigabephase für CTB 104).
  • Die gültigen Bus-Phasen für den MODE 0 und korrekte Phasensequenzen sind untenstehend zusammengefaßt:
  • MODE 0, Nichtblockdaten-Übertragungsmodus, kein Siphonbetrieb.
  • a) Buszuteilung von CTB 104
  • b) Busaktivierung von CTB 104
  • c) Auswahl von DABM 100
  • d) Laden von DABM 100
  • e) Datenübertragung zu DABM 100 (bis zu 64 KBytes)
  • f) ADAC 116 ist fertig
  • g) DABM 100 ist fertig (nur bei Schreiben auf DABM 100, und wenn alle Daten sind übertragen worden)
  • h) Deselektion von DABM 100
  • i) Busfreigabe von CTB 104
  • MODE 0, Nichtblockdaten-Übertragungsmodus, mit Siphonbetrieb.
  • a) Buszuteilung von CTB 104
  • b) Busaktivierung von CTB 104
  • c) Auswahl von DABM 100 und Schreibcache-Nebenstelle 128
  • d) Laden von DABM 100
  • e) Laden von Schreibcache-Einrichtung 128
  • f) Datenübertragung zu DABM 100, Siphonbetrieb für Schreibcache-Einrichtung 128 (bis zu 64KBytes)
  • g) ADAC 116 ist fertig
  • h) DABM 100 und Schreibcache-Einrichtung 128 sind fertig (nur bei Schreiben auf DABM 100, und wenn alle Daten übertragen worden sind)
  • i) Deselektion von DABM 100 und der von Schreibcache- Nebenstelle 128
  • j) Busfreigabe von CTB 104
  • Der MODE 1 ist ein Blockbetriebsmodus, der mit zwei Ausnahmen dem MODE 0-Betrieb ähnlich ist. Die erste Ausnahme ist es, daß mehrere Blöcke übertragen werden können, wenn der DABM 100 das TBSDN-Signal ausgibt, oder wenn die Schreibcache- Einrichtung 128 das SPSDN-Signal ausgibt, wobei diese Bereitzustandssignale zwischen Blockübertragungen ausgegeben und abgefragt werden. Diese TBSDN- und SPSDN- Bereitzustandssignale werden am Anfang einer jeden Blockübertragung abgefragt, wenn der ADAC 116 den Betrieb des CTB 104 abbricht und zu einem späteren Zeitpunkt versucht, falls der DABM 100 nicht bereit ist, Daten zu übertragen, und falls die Schreibcache-Einrichtung 128 nicht bereit ist, Daten zu übertragen, wenn sie ausgewählt worden ist. Die Größe des Blocks, der für die Blockübertragung definiert wird, ist derselbe sowohl für den ADAC 116 als auch für die Schreibcache- Einrichtung 128 und kann über Nebenstellen-spezifische Daten in Ladezyklen des DABM 100 und der Schreibcache-Einrichtung 128 kommuniziert werden. Diese Signale werden auch verwendet, um den Fertigzustand des DABM 100 und der Schreibcache- Einrichtung 128, abhängig von dem Betriebszustand des CTB 104, wie später beschrieben wird, weiterzugeben.
  • Die zweite Ausnahme betrifft den Fertigzustand des DABM 100 und der Schreibcache-Einrichtung 128. Im MODE 0 wartet der ADAC 116 weiter auf das SPSDN-Signal. Im MODE 1 wartet der ADAC 116 eine programmierbare Anzahl von Takten bis zur Ausgabe des TBMDN*-Signals auf das TBSDN-Signal, das ausgegeben werden soll, und während eines Siphon-Betrieb auf das SPSDN- Signal, das ausgegeben werden soll. Falls die Nebenstellen nicht anzeigen, daß sie fertig sind, deselektiert der ADAC 116 die Nebenstellen, gibt den CTB 104 frei und versucht zu einem späteren Zeitpunkt, die Fertigzustands-Meldungen von den Nebenstellen zu erhalten.
  • Gültige Bus-Phasen und korrekte Phasensequenzen des MODE 1 werden unten zusammengefaßt:
  • MODE 1, der DABM 100 ist bereit, ein Siphonbetrieb ist nicht erwünscht:
  • a) Buszuteilung von CTB 104
  • b) Busaktivierung von CTB 104
  • c) Auswahl von DABM 100
  • d) Laden von DABM 100
  • e) DABM 100 ist bereit (DABM 100 ist bereit)
  • f) Datenübertragung zu DABM 100 (1 Datenblock)
  • g) Wiederhole Schritte e) & f) solange der DABM 100 nicht bereit ist oder bis 64KBytes übertragen worden sind oder der ADAC 116 den CTB 104 aufgeben bzw. freigeben muß
  • h) ADAC 116 ist fertig
  • i) DABM 100 ist fertig (falls alle Daten übertragen worden sind und falls Schreibbetrieb für DABM 100)
  • j) Deselektion des DABM 100
  • k) Busfreigabe von CTB 104
  • MODE 1, DABM 100 ist nicht bereit, Siphonbetrieb ist nicht erwünscht:
  • a) Buszuteilung von CTB 104
  • b) Busaktivierung von CTB 104
  • c) Auswahl von DABM 100
  • d) Laden von DABM 100
  • e) DABM 100 ist bereit (DABM 100 ist nicht innerhalb von acht Takten bereit)
  • f) ADAC 116 ist fertig
  • g) Deselektion des DABM 100
  • h) Busfreigabe von CTB 104
  • MODE 1, DABM 100 ist bereit, Schreibcache-Einrichtung 128 ist bereit:
  • a) Buszuteilung von CTB 104
  • b) Busaktivierung von CTB 104
  • c) Auswahl von DABM 100 und Schreibcache-Nebenstelle 128
  • d) Laden von DABM 100
  • e) Laden von Schreibcache-Einrichtung 128
  • f) DABM 100 und Schreibcache-Einrichtung 128 sind bereit (beide sind innerhalb von acht Takten bereit)
  • g) Datenübertragung zu DABM 100 und Schreibcache- Einrichtung 128 (1 Datenblock)
  • h) Wiederholen der Schritte f) & g) bis der DABM 100 oder die Schreibcache-Einrichtung 128 nicht mehr bereit ist, oder bis 64BBytes übertragen worden sind, oder der ADAC 116 den CTB 104 aufgeben muß
  • i) Buscontroller ADAC 116 ist fertig
  • j) DABM 100 und Schreibcache-Einrichtung 128 sind fertig (Nebenstellenschreibbetrieb)
  • k) Deselektion von DABM 100- und Schreibcache-Einrichtung 128
  • l) Busfreigabe von CTB 104
  • MODE 1, DABM 100 ist nicht bereit oder Schreibcache- Einrichtung 128 ist anfänglich nicht bereit:
  • a) Buszuteilung von CTB 104
  • b) Busaktivierung von CTB 104
  • c) Auswahl von DABM 100- und Schreibcache-Nebenstelleneinrichtung 128
  • d) Laden von DABM 100
  • e) Laden von Schreibcache-Einrichtung 128
  • f) DABM 100 und Schreibcache-Einrichtung 128 sind bereit (keine der Nebenstellen ist innerhalb von acht Takten bereit)
  • g) ADAC 116 ist fertig
  • h) Deselektion von DABM 100- und Schreibcache-Einrichtung 128
  • i) Busfreigabe von CTB 104
  • Die CTB 104-Freigabephase erfordert eine TCLK-Periode. Der ADAC 116 startet die Freigabephase des CTB 104 sofort nachdem detektiert worden ist, daß er den CTB 104 erhalten hat. In der Freigabephase für den CTB 104 negiert der ADAC 116 die TBALD*-, SPALD*-, TBDRQ*-, SPDRQ*-, TBSSE*- und TBMDN*- Master-Steuersignale. Das TBDIR-Signal wird ausgegeben, um die Richtung der laufenden Datenübertragung anzugeben. Die Auswahisignale für den DABM 100, die TBSS< 2..0> * und, falls erwünscht, die SPSS< 2..0> *-Signale werden mit den Werten zur Auswahl der geeigneten Nebenstelle(n) für den laufenden Betrieb angesteuert. Die TBD< 31..0> -Signale werden nicht durch den ADAC 116, den DABM 100 oder die Schreibcache-Einrichtung 128 während dieser Phase angesteuert bzw. gegeben. Die Signale der DABM 100 und der Schreibcache-Einrichtung 128 werden ebenfalls nicht während dieser Phase geseteuert bzw. ausgegeben.
  • Der Zweck der Freigabephase des CTB 104 ist es, eine TCLK- Periode für die TBS< 2..0> *- und SPSS< 2..0> *- Nebenstellenauswahlsignale zu ermöglichen, so daß sie sich vor der Auswahl einer Nebenstelle mit dem TBSSE*-Signal einregeln. Da die Nebenstellenauswahlsignale codiert sind, hat die Nebenstelle hinreichend Zeit, die Nebenstellenauswahlsignale zu decodieren, bevor irgendwelche Signale für den CTB 104 ausgegeben werden, womit jeder mögliche Bus- Konkurrenzbetrieb zwischen Nebenstellen vermieden wird.
  • Die Nebenstellenauswahlphase erfordert eine TCLK-Periode und kann kurz oder mehrere TCLK-Perioden nach der Freigabephase des CTB 104 beginnen. Für eine maximale Bus-Effizienz sollte der ADAC 116 das Nebenstellenauswahlsignal in der TCLK- Periode starten, die sofort auf die Freigabephase für den CTB 104 folgt.
  • Die Nebenstellenauswahlphase startet in der Taktperiode, in welcher der ADAC 116 das TBSSE*-Signal ausgibt. Das TBSSE*- Signal wird von den Nebenstellen verwendet, um die Nebenstellenauswahlsignale TBSS< 2..0> * oder SPSS< 2..0> * zu berichtigen und außerdem die Bus-Treiber zu aktivieren. Falls der DABM 100 eine gültige TBSS< 2..0> *-Nebenstellenadresse detektiert und das TBSSE*-Signal ausgegeben wird, sollte der DABM 100 seine Treiber für die TBDAK*- und TBSDN-Signale freigeben. Ähnlich sollte, falls die Schreibcache-Einrichtung 128 eine gültige SPSS< 2..0> *-Nebenstellenadresse detektiert und das TBSSE*-Signal ausgegeben wird, die Schreibcache-Einrichtung 128 die SPDAK*- und SPSDN-Signale auf ihre geeigneten Werten steuern.
  • Der ADAC 116 gibt fortwährend das TBSSE*-Signal während des Betriebs des CTB 104 bis zur Deselektionsphase der Nebenstelle aus.
  • Die Ladephase für den DABM 100 beginnt, wenn der CTB 104 das TBALD*-Signal ausgibt. Diese Phase kann zu dem selben Zeitpunkt wie die DABM 100-Auswahlphase starten, da der ADAC 116 sowohl das TBALD*- als auch das TBSSE*-Signal in derselben TCLK-Periode ausgeben kann.
  • Koinzident mit der Ausgabe des TBALD*-Signals steuert der ADAC 116 eine 32 Bit-Speicheradresse auf die TBD< 31..0> Datenleitungen. TBD< 31> stellt das signifikanteste Bit (MSB) der Adresse dar und TBD< 0> stellt das am wenigsten signifikante Bit (LSB) der Adresse dar. Der DABM 100 braucht die Adresse nicht sofort zu akzeptieren und kann Lade- Wartezustände dadurch beginnen, daß er das TBDAK*-Signal negiert hält, bis er bereit ist, die Adresse anzunehmen. Die Adresse wird durch den DABM 100 angenommen, wenn das TBDAK*- Signal durch den ADAC 116 detektiert als über einer ansteigenden Flanke des TCLK-Signals aktiv wird. Nachdem das Detektieren der Adresse akzeptiert worden ist, steuert der ADAC 116 sofort einen maximalen Übertragungs-Byte-Zählwert und irgendwelche spezifischen Daten für den DABM 100 auf die TBD< > - Signale. Die maximale Übertragungs-Byte-Zählung wird in TBD< 15..0> plaziert, wobei das MSB der Zählung in TBD< 15> und das LSB der Zählung in TBD< 0> lokalisiert ist. Die für den DABM 100 spezifischen Daten werden in den TBD< 31..16> - Signalen plaziert und enthalten spezifische Befehle für den DABM 100. Falls der ADAC 116 keine spezifischen Daten, die von dem DABM 100 gefordert werden, kennt, steuert der ADAC 116 die für den DABM 100 spezifischen Daten mit Null an. Wie bei der Adresse, braucht der DABM 100 die maximale Übertragungs-Byte-Zählung und die spezifischen Daten für den DABM 100 nicht sofort akzeptieren, und kann Lade-Wartezustände einlegen, dadurch daß er das TBDAK*-Signal negiert hält. Der DABM 100 akzeptiert die Zählung und die spezifischen Daten für den DABM 100 dadurch, daß er das TBDAK*-Signal über der ansteigenden Flanke des TCLK-Signals ausgibt. Wenn der ADAC 116 die Zählung und spezifische Daten für den DABM 100 über der Anstiegsflanke von TCLK detektiert, negiert er sofort das TBALD*-Signal. Der DABM 100 negiert das TBDAK*-Signal, wenn das TBALD*-Signal von dem ADAC 116 negiert worden ist.
  • Eine zusätzliche Periode von einem Takt während des Lesens des DABM 100 folgt der Negation des TBALD*-Signals durch den ADAC 116. Falls das TBDIR-Signal anzeigt, daß ein Lesen des DABM 100 andauert, und ein Ladezyklus der Schreibcache- Einrichtung 128 nicht anhängig ist, gibt der ADAC 116 die TBD< > -Signale koinzident mit der Negierung des TBALD*-Signals frei und wartet wenigstens eine TCLK-Periode bevor der das TBDRQ*-Signal ausgibt. Der DABM 100 verwendet das TBDRQ*- Signal, welches ein gültiges Nebenstellenauswahl- oder Datenanforderungssignal ist, und das TBDAK*-Signal, um seine Treiber für die TBD< > -Signale während des Lesens der Nebenstelle freizugeben. Diese eine TCLK-Zusatzperiode stellt sicher, daß der ADAC 116 und der DABM 100 die TBD< > -Signale nicht während derselben TCLK-Periode steuern bzw. ausgeben.
  • Die Ladephase der Schreibcache-Einrichtung 128 beginnt, wenn der ADAC 116 das SPALD*-Signal ausgibt. Diese Phase tritt, falls sie verwendet wird, immer nach der Ladephase des DABM 100 und vor irgendeinem anstehenden Datenübertragungsbetrieb, auf. Die Ladephase für die Schreibcache-Einrichtung 128 kann außerdem beginnen, wenn das TBALD*-Signal während der Ladephase des DABM 100 negiert wird.
  • Koinzident mit der Ausgabe des SPALD*-Signals steuert der ADAC 116 eine 32-Bit-Speicher-Byte-Adresse für die Schreibcache-Einrichtung 128 auf die TBD< 31..0> -Signale. TBD< 31> stellt das MSB der Adresse dar, und TBD< 0> stellt das LSB der Adresse dar. Die Schreibcache-Einrichtung 128 braucht die Adresse nicht sofort zu akzeptieren und kann Lade- Wartezustände dadurch einsetzen, daß das SPDAK*-Signal negiert gehalten wird, bis sie bereit ist, die Adresse zu akzeptieren. Die Adresse wird durch die Schreibcache- Einrichtung akzeptiert, wenn das SPDAK*-Signal durch den ADAC 116 als über einer Anstiegsflanke des TCLK aktiv detektiert wird. Nachdem das Detektieren der Adresse akzeptiert worden ist, steuert der ADAC 116 sofort einen maximalen Transfer- Byte-Zählwert und irgendwelche für die Schreibcache- Einrichtung 128 spezifische Daten auf die TBD< > -Signale. Die maximale Transfer-Byte-Zählung wird in den TBD< 15..0> - Signalen plaziert, wobei der MSB der Zählung in TBD< 15> und der LSB der Zählung in TBD< 0> plaziert werden. Die für die Schreibcache-Einrichtung 128 spezifischen Daten werden in den TBD< 31..16> -Signalen plaziert und enthalten spezifische Befehle für die Schreibcache-Einrichtung 128. Falls dem ADAC 116 die spezifischen Daten, die von der Schreibcache- Einrichtung 128 gefordert werden, nicht bekannt sind, steuert der ADAC 116 die für die Schreibcache-Einrichtung 128 spezifischen Daten auf Null. Wie bei den Adresssignalen muß die Schreibcache-Einrichtung 128 die maximale Übertragungs-Byte- Zählung und die für die Schreibcache-Einrichtung 128 spezifischen Daten nicht sofort annehmen und kann Lade-Wartezustände dadurch einsetzen, daß das SPDAK*-Signal negiert gehalten wird. Wenn der ADAC 116 die Zählung und die für die Schreibcache-Einrichtung 128 spezifischen Datenbestätigungen über der ansteigenden Flanke des TCLK-Signals detektiert, negiert er sofort das SPALD*-Signal. Der DABM 100 negiert das SPDAK*-Signal, wenn das SPALD*-Signal von dem ADAC 116 negiert worden ist.
  • Auf ein Lesen der DABM 100 hin folgt der Negierung des SPALD*-Signals durch den ADAC 116 eine TCLK-Zusatzperiode. Falls das TBDIR-Signal anzeigt, daß ein Lesen vom DABM 100 anhängig ist, gibt der ADAC 116 die TBD< > -Signale koinzident mit der Negierung des SPALD*-Signals frei und wartet wenigstens eine TCLK-Periode bevor er die TBDRQ*- oder die SPDRQ*- Signale freigibt. Der DABM 100 verwendet das TBDRQ*-Signal, eine gültige Auswahl für den DABM 100, und das TBDAK*-Signal, um seine Treiber für die TBD< > -Signale während eines Lesens der Nebenstelle freizugeben. Diese eine TCLK-Zusatzperiode stellt sicher, daß der ADAC 116 und der DABM 100 die TBD< > - Signale nicht während derselben TCLK-Periode steuern.
  • Der Bereit-Zustand bzw. die Bereit-Phase für die Nebenstelle wird von dem ADAC 116 verwendet, um die Bus-Effizienz zu maximieren und wird nur im Betrieb unter MODE 1 verwendet. Der ADAC 116 bestimmt, ob die Nebenstellen bereit sind, um einen Datenblock zu liefern oder anzunehmen, bevor ein Datenübertragungsbetrieb initiiert oder weitergeführt wird. Falls die Nebenstellen bereit sind, initiiert der ADAC 116 einen Datenübertragungsbetrieb. Falls die Nebenstellen nicht bereit sind, gibt der ADAC 116 den CTB 104 frei. Falls der DABM 100 das TBSDN-Signal nicht ausgibt, interpretiert der ADAC 116 dies dahingehend, daß der DABM 100 immer bereit oder fertig ist. Ähnlich interpretiert, falls die Schreibcache- Einrichtung 128 kein SPSDN-Signal ausgibt, der ADAC 116 dies dahingehend, daß die Schreibcache-Einrichtung 128 immer bereit oder fertig ist.
  • Der Bereit-Zustand der Nebenstelle tritt gerade vor der Datenübertragungsphase auf und tritt zum ersten Mal am Ende der Ladephase von dem DABM 100 oder von der Schreibcache- Einrichtung 128, je nachdem, welche später ist, auf. Falls der DABM 100 den Bereit-Zustand des CTB 104 unterstützt, steuert der DABM 100 das TBSDN-Signal auf einen gültigen Zustand, wenn der DABM 100 das TBDAK*-Signal ausgibt, so daß die Übertragungs-Byte-Zählung und die für den DABM 100 spezifischen Daten akzeptiert werden. Falls der DABM 100 durch Negieren des TBSDN-Signals angezeigt hat, daß er nicht bereit war, wartet der ADAC 116 die programmierte Anzahl von TCLK- Perioden, um zu bestimmen, ob der DABM 100 für eine Übertragung eines Datenblocks noch bereit werden könnte. Falls der DABM 100 nicht innerhalb der programmierten Anzahl von TCLK- Perioden bereit wird, gibt der ADAC 116 das TBMDN*-Signal aus, deselektiert die Nebenstelle und gibt für den CTB 104 frei. Falls der DABM 100 nicht in den Bereit-Zustand kommt, fährt der ADAC 116 mit einer DABM 100-Blockdatenübertragung fort.
  • Falls mehr als ein Datenblock zu übertragen ist, tritt der ADAC 116 in die Bereit-Zustandsphase des DABM 100 ein, nachdem jede Blockdatenübertragung abgeschlossen ist. Nach der TCLK-Periode nach der letzten Übertragung des vorherigen Datenblocks, steuert der DABM 100 das TBSDN-Signal auf den korrekten Wert, da der ADAC 116 das TBSDN-Signal während dieser Zeit überprüfen kann, um zu bestimmen, ob der DABM 100 in der Lage ist, eine andere Blockübertragung abzuschließen. Falls der DABM 100 TBSDN tiefpeglig angesteuert hat, wartet der ADAC 116 die programmierte Anzahl von TCLK-Perioden von diesem Zeitpunkt auf das DABM 100, damit es in den Bereit- Zustand geht. Falls der DABM 100 nicht innerhalb der TCLK- Perioden in den Bereit-Zustand geht, gibt der ADAC 116 das TBMDN*-Signal aus, deselektiert die Nebenstelle und gibt den CTB104 frei. Falls der DABM 100 nicht in den Bereit-Zustand geht, wird ein anderer Datenblock übertragen.
  • Der Bereit-Zustand bzw. die Bereit-Phase des CTB 104 und der Schreibcache-Einrichtung 128 ist der Bereit-Phase für den DABM 100 mit Ausnahme der folgenden Unterschiede ähnlich:
  • 1) Die TBSDN- und SPSDN-Signale werden der Ladephase der Schreibcache-Einrichtung 128 folgend zum ersten Mal geprüft. Die selbe TCLK-Auszeitperiode für beide Nebenstellen, um in den Bereit-Zustand zu gehen, wird mit dem Startpunkt verwendet, der der Übertragungs-Byte-Zählung SPDAK* der Ladephase der Schreibcache-Einrichtung 128 entspricht.
  • 2) Die Auszeitperiode für die Zeit zwischen Datenblockübertragungen beginnt während der TCLK-Periode nach der letzten Übertragung des Datenblocks zwischen dem DABM 100 und dem ADAC 116, oder während der letzten Übertragung des Datenblocks, der durch die Schreibcache-Einrichtung 128 abgezogen wurde, was immer zuletzt eingetreten ist. Sowohl das TBSDN- als auch das SPSDN-Signal muß logisch hochpeglig sein, bevor der ADAC 116 die nächste Datenblockübertragung initiiert. Wenn beide dieser Signale für die Dauer der TCLK-Auszeitperiode tiefpeglig sind, schickt der ADAC 116 das TBMDN*-Signal, deselektiert die Nebenstellen und gibt den CTB 104 frei.
  • Die DABM 100-Übertragungsphase beginnt, wenn der ADAC 116 das TBDRQ*-Anforderungssignal ausgibt. Die DABM 100- Übertragungsphase kann nur nach einer Ladephase des DABM 100 oder nach einer Ladephase der Schreibcache-Einrichtung, falls ausgewählt, beginnen.
  • Falls das TBDIR-Signal ein Schreiben des DABM 100 anzeigt und eine Ladephase für die Schreibcache-Einrichtung 128 nicht erforderlich ist, kann das TBDRQ*-Signal ausgegeben werden, sobald das TBALD*-Signal am Ende der Ladephase des DABM 100 negiert worden ist.
  • Falls das TBDIR-Signal ein Schreiben des DABM 100 anzeigt, und eine Ladephase für die Schreibcache-Einrichtung 128 erforderlich ist, kann das TBDRQ*-Signal ausgegeben werden, sobald das SPALD*-Signal am Ende der Ladephase der Schreibcache-Einrichtung 128 negiert worden ist. Falls das TBDIR-Signal ein Lesen des DABM 100 anzeigt, und eine Ladephase der Schreibcache-Einrichtung 128 nicht erforderlich ist, kann das TBDRQ*-Signal nicht eher als eine TCLK-Periode nachdem das TBALD*-Signal am Ende der Ladephase des DABM 100 negiert worden ist, ausgegeben werden. Falls das TBDIR-Signal ein Lesen des DABM 100 anzeigt, und eine Ladephase für die Schreibcache-Einrichtung 128 erforderlich ist, kann das TBDRQ*-Signal nicht eher ausgegeben werden als eine TCLK- Periode nachdem das SPALD*-Signal am Ende der Ladephase der Schreibcache-Einrichtung 128 negiert worden ist.
  • Eine Datenübertragung tritt auf, wenn der DABM 100 das TBDRQ*-Signal mit dem TBDAK*-Signal bestätigt. Sowohl das TBDRQ* als auch das TBDAK*-Signal werden über eine ansteigende Flanke des TCLK-Signals, das eine einzelne Übertragung darstellt, ausgegeben. Eine Burst-Übertragung tritt auf, wenn die TBDRQ*- und TBDAK*-Signale über aufeinanderfolgende ansteigende Flanken des TCLK-Signals ausgegeben werden. Dieses Protokoll erlaubt, daß entweder der ADAC 116 oder der DABM 100 Wartezustände in die Datenübertragung einsetzen. Falls der ADAC 116 eine Pause benötigt, negiert der ADAC 116 das TBDRQ*-Signal bis er bereit ist, die Übertragung wiederaufzunehmen. Ahnlich antwortet der DABM 100 nicht auf das TBDRQ*- Signal durch Ausgeben des TBDAK*-Signals bis er zur Datenübertragung bereit ist.
  • Falls das TBDIR-Signal hochpeglig ausgegeben wird, was eine Übertragung von dem ADAC 116 zu dem DABM 100 kennzeichnet, steuert der ADAC 116 die Daten auf den TBD< > -Signalen nur falls das TBDRQ*-Signal ausgegeben ist. Falls das TBDIR- Signal tiefpeglig ausgegeben wird, was eine Übertragung von dem DABM 100 auf den ADAC 116 bezeichnet, steuert der DABM 100 Daten auf die TBD< > -Signale, wenn sowohl das TBDRQ*- als auch das TBDAK*-Signal ausgegeben sind. Der DABM 100 sollte seine TBD< > -Signaltreiberfreigaben mit gültigen TBSS< 2..0> *- Signalen qualifizieren, und dadurch, daß die TBSSE*-, TBDRQ*-, TBDAK*- und TBDIR-Signale tiefpeglig ausgegeben werden.
  • Die DABM 100-Übertragungsphase endet, wenn das TBMDN*-Signal über einer ansteigenden Flanke des TCLK-Signals ausgegeben wird. Das TBMDN*-Signal kann, sobald wie die TCLK-Periode, die der letzten Datenübertragung folgt, auftreten jedoch nicht eher. Nachdem das TBMDN*-Signal ausgegeben ist, kann das TBDRQ*-Signal nicht ausgegeben werden, bis eine Ladephase des DABM 100 aufgetreten ist.
  • Ein Siphonbetrieb ist für den DABM 100 transparent. Deshalb erscheint, soweit es den DABM 100 betrifft, die Datenübertragungsphase des DABM 100 identisch mit den Übertragungsphasen des CTB 104 und der Schreibcache-Einrichtung 128. Der ADAC 116 steuert allerdings zwei Sätze von Steuersignalen für den Siphonbetrieb oder fragt sie ab. Ein Satz ist für die Datenübertragung mit dem DABM 100 und besteht aus dem TBDRQ*- Signal, das durch den ADAC 116 ausgegeben worden ist und aus dem TBDAK*-Signal, das durch den DABM 100 ausgegeben worden ist und von dem ADAC 116 abgefragt wird. Der andere Satz der Steuersignale ist für die Schreibcache-Einrichtung 128 und besteht aus dem SPDRQ*-Signal, das durch den ADAC 116 ausgegeben wird, und dem SPDAK*-Signal, das durch die Schreibcache-Einrichtung 128 ausgegeben wird und durch den ADAC 116 abgefragt wird. Die Daten werden auf TBD< > - Datenleitungen durch den DABM 100 und den ADAC 116 übertragen. Die Schreibcache-Einrichtung 128 fragt die TBD< > -Signale ab, steuert sie aber nicht an.
  • Für Schreiboperationen des DABM 100 gibt der ADAC 116 sowohl das TBDRQ*- als auch das SPDRQ*-Signal aus, um anzuzeigen, daß eine Datenübertragung anhangig ist. Der ADAC 116 steuert außerdem die Daten auf den TBD< > -Signalen, so daß sie entweder mit dem TBDRQ*- oder dem SPDRQ*-Signal koinzident sind. Eine Einzelübertragung tritt auf, wenn der DABM 100 das TBDAK*-Signal ausgibt und die Schreibcache-Einrichtung 128 das SPDAK*-Signal über der ansteigenden Flanke des TCLK- Signals als Antwort auf die Ausgabe des TBDRQ* und SPDRQ*- Signals ausgibt. Der DABM 100 speichert die Daten, die auf den TBD< > -Datensignalen geliefert werden, wenn er das TBDRQ *- und TBDAK*-Signal detektiert, das über der ansteigenden Flanke des TCLK-Signals ausgegeben worden ist. Aus ähnliche Weise speichert die Schreibcache-Einrichtung 128 die TBD< > -Daten, wenn sie das SPDRQ*- und SPDAK*-Signal detektiert, das über der ansteigenden Flanke des TCLK-Signals ausgegeben worden ist.
  • Für Schreiboperationen des DABM 100 brauchen das DABM 100 und die Schreibcache-Einrichtung 128 ihre entsprechenden Datenanfragen in derselben TCLK-Periode nicht bestätigen. Falls der DABM 100 eine Bestätigung durch Ausgeben des TBDAK*-Signals ausdrückt, und die Schreibcache-Einrichtung 128 dadurch keine Bestätigung ausdrückt, daß sie das SPDAK*-Signal nicht ausgibt, negiert der ADAC 116 das TBDRQ*-Signal und hält das ausgegebene SPDRQ*-Signal bis der DABM 100 schließlich eine Bestätigung dadurch ausdrückt, daß er das SPDAK*-Signal ausgibt. Auf ähnliche Weise drosselt der ADAC 116 die Schreibcache-Einrichtung 128, falls der DABM 100 als Antwort auf eine Datenübertragungsanforderung langsamer als die Schreibcache-Einrichtung 128 ist. Ein Burst-Transfer tritt auf, wenn die TBDRQ*-, SPDRQ*-, TBDAK*- und SPDAK*-Signale über aufeinanderfolgende ansteigende Flanken des TCLK-Signals ausgegeben werden. Der ADAC 116 kann den Siphonbetrieb dadurch drosseln, daß sowohl das TBDRQ*-Signal als auch das SPDRQ*-Signal bis zur Bereitschaft, die Datenübertragung fortzusetzen, negiert werden.
  • Für den Lesebetrieb des DABM 100 steuert der DABM 100 Daten auf den TBD< > -Signalen jedes Mal, wenn er das TBDAK*-Signal als Antwort auf die Ausgabe des TBDRQ*-Signals aussendet. Der ADAC 116 speichert die TBD< > -Daten, wenn sowohl das TBDRQ *- als auch das TBDAK*-Signal über die ansteigende Flanke des TCLK-Signals ausgegeben werden. Die Schreibcache-Einrichtung 128 speichert die TBD< > -Daten, wenn anstelle des SPDRQ* und SPDAK*-Signals, wie in dem Fall des Schreibbetriebs des DABM 100, das TBDAK*-Signal als über den ansteigenden Flanken des TCLK-Signals ausgegeben detektiert wird. Dies ist erforderlich, da der DABM 100 anstelle des ADAC 116 die TBD< > -Signale steuert. Der ADAC 116 führt dasselbe Drosselprotokoll wie im Fall des Schreibens des DABM 100 durch und die Schreibcache- Einrichtung 128 verwendet die SPDAK*-Signale, um die Übertragung zu drosseln aber nicht um Daten zu akzeptieren. Die Schreibcache-Einrichtung 128 muß in der Lage sein, zwei Übertragungen anzunehmen, wenn das SPDRQ*-Signal durch Ausgeben des SPDAK*-Signals bestätigt wird. Fig. 6 ist ein Zeitablaufdiagramm, das ein Lesen durch den DABM 100 mit einem Siphonbetrieb darstellt. Das Zeitablaufdiagramm in Fig. 6 zeigt ein Beispiel des DABM 100, der Schreibcache-Einrichtung 128 und des ADACs 116, der die Datenübertragung drosselt. Die "*"- Symbole in dem TBDAK*-Signal zeigen an, wo sowohl der ADAC 116 als auch die Schreibcache-Einrichtung 128 Daten vom DABM 100 speichern.
  • Die Beendet-Phase des ADAC 116 zeigt dem CTB 104 und der Schreibcache-Einrichtung 128 an, daß die laufende Bus- Operation abgeschlossen ist und daß kein weiterer Datentransfer vor einer Ladephase des DABM 100 und einer Ladephase de Schreibcache-Einrichtung 128 auftritt. Das TBMDN*-Signal wird durch den ADAC 116 für ein Minimum von einer TCLK-Periode ausgegeben. Für Bus-Operationen sowohl vom MODE 0 als auch vom MODE 1 kann das TBMDN*-Signal ausgegeben werden sobald die TCLK-Periode den letzten Datentransfer folgt, oder einige TCLK-Perioden nach dem letzten Datentransfer. Der ADAC 116 gibt das TBMDN*-Signal sobald aus wie es nach dem letzten Datentransfer für eine maximale Bus-Effizienz möglich ist. Für MODE 1-Operationen kann das TBMDN*-Signal auch ausgegeben werden, wenn der DABM 100 oder die Schreibcache-Einrichtung 128 nicht in der Lage ist, nach einer Ladephase des CTB 104 oder der Schreibcache-Einrichtung 128 oder nach einer Datenblockübertragung in den Bereit-Zustand zu treten.
  • Die Beendet-Phase des DABM 100 wird von der DABM 100 verwendet, um zu kommunizieren, daß alle Daten, die von dem ADAC 116 empfangen worden sind, sicher in ihrer endgültigen Bestimmung gespeichert worden sind. Diese Phase ist insbesondere wichtig, wenn der DABM 100 einen Pfad zu einem anderen Bus schafft. Für den MODE 0-Betrieb wird die Beendet-Phase des DABM 100 lediglich auf Schreiboperationen des DABM 100 hin verwendet, wenn Daten tatsächlich von dem ADAC 116 zu dem DABM 100 übertragen werden. Diese Phase beginnt sofort, wenn der ADAC 116 das TBMDN*-Signal ausgibt, und endet, wenn der DABM 100 das TBSDN-Signal über der ansteigenden Flanke des TCLK-Signals ausgibt. Der ADAC 116 beginnt das Abtasten des TBSDN-Signals einer TCLK-Periode nachdem das TBMDN*-Signal ausgegeben ist. Falls der DABM 100 nicht das TBSDN-Signal ausgibt, hängt der ADAC 116 den CTB 104 auf.
  • In dem MODE 1, beginnt die Beendet-Phase des DABM 100 jedes Mal, wenn der ADAC 116 das TBMDN*-Signal ausgibt, und endet acht TCLK-Perioden später, oder wenn der DABM 100 das TBSDN- Signal hochpeglig ausgibt, was immer zuerst auftritt. Der ADAC 116 beginnt das Abtasten des TBSDN-Signals eine TCLK- Periode, nachdem das TBMDN*-Signal ausgegeben wird. Falls der DABM 100 das TBSDN-Signal nicht ausgibt, deselektiert der ADAC 116 den DABM 100, gibt den CTB 104 frei und versucht wiederholt, den Bereitt-Status von dem DABM 100 zu erhalten. Der ADAC 116 tut dies durch Wiedererlangen des CTB 104, Auswählen des DABM 100 und Durchführen einer DABM 100-Ladephase. Die Transfer-Byte-Zählung, die während dieser Ladephase gegeben ist, ist Null, was anzeigt, daß der ADAC 116 den Beendet- Status für eine vorherige Bus-Operation sucht. Die für die Nebenstelle spezifischen Daten, die der Nebenstelle zugeführt werden, können auch ein eindeutiges Identifizierungskennzeichen umfassen, um die vorherige Bus-Operation zu identifizieren. Der ADAC 116 gibt das TBMDN*-Signal nicht eher aus als eine TCLK-Periode nach dem Ende der Ladephase des DABM 100. Falls der DABM 100 die vorherige Bus-Operation nicht abgeschlossen hat, sollte der DABM 100 das TBSDN-Signal durch die TCLK-Periode negieren, nachdem der ADAC 116 das TBMDN*-Signal ausgegeben hat. Falls der DABM 100 nicht anzeigt, daß er die vorherige Bus-Operation innerhalb von acht Takten, nachdem das TBMDN*-Signal ausgegeben worden ist, abgeschlossen hat, deselektiert der ADAC 116 den DABM 100, gibt den CTB 104 frei und versucht wiederholt, den Beendet-Status von dem DABM 100 zu erhalten. Der ADAC 116 kann verschiedene Male versuchen, den Beendet-Status von dem DABM 100 zu erhalten, bevor er Erfolg hat.
  • Es ist zu bemerken, daß die TCLK-Auszeitperiode endet, wenn der DABM 100 deselektiert wird. Der DABM 100 kann nicht anzeigen, daß er fertig ist, falls der DABM 100 das TBSDN- Signal in derselben TCLK-Periode ausgibt, in der der DABM 100 deselektiert worden ist. Der ADAC 116 erkennt, daß der DABM 100 fertig ist, wenn das TBSDN-Signal über der ansteigenden Flanke des TCLK-Signals ausgegeben wird und während das TBSSE*-Signal ebenfalls ausgegeben wird.
  • Die Beendet-Phase des CTB 104 und der Schreibcache- Einrichtung 128 ist der Beendet-Phase des DABM 100 mit den folgenden zwei Ausnahmen ähnlich:
  • 1) In MODE 0 oder MODE 1 sieht der ADAC 116 sowohl das TBSDN-Signal als hochpeglig ausgegeben als auch das SPSDN-Signal als ausgegeben bevor er den CTB 104-Betrieb als abgeschlossen betrachtet.
  • 2) In MODE 1 erinnert sich der ADAC 116, falls entweder der DABM 100 fertig ist oder die Schreibcache-Einrichtung 128 fertig ist, allerdings beide nicht innerhalb der Auszeitperiode fertig sind, welche Nebenstelle fertig ist. Der ADAC 116 reselektiert dann nur die Nebenstelle, die nicht fertig ist, um so den Fertig-Status von dieser Nebenstelle zu erhalten. Dieses Erfordernis ist notwendig, da, wenn eine Nebenstelle innerhalb der Auszeitperiode anzeigt, daß sie fertig ist, die Nebenstelle jedes Identifizierungskennzeichen, das mit dem Betrieb des CTB 104 assoziiert ist, löschen kann. Es ist zu bemerken, daß die Auszeitperiode endet, wenn die Nebenstellen deselektiert werden. Die Nebenstelle kann nicht angesehen werden, als ob sie einen Fertig-Status angezeigt hat, wenn die Nebenstelle das TBSDN- oder das SPSDN-Signal in derselben TCLK-Periode, in der die Nebenstelle deselektiert worden ist, ausgegeben hat. Der ADAC 116 erkennt, daß die Nebenstelle fertig ist, wenn das TBSDN- oder das SPSDN-Signal über der ansteigenden Flanke des TCLK-Signals ausgegeben wird und während das TBSSE*-Signal ebenfalls ausgegeben wird.
  • In der Deselektionsphase der Nebenstelle negiert der ADAC 116 die TBALD*-, SPALD*-, TBDRQ*-, SPDRQ*-, TBMDN*- und TBSSE*- Signale. Der ADAC 116 hält die TBSS< 2..0> *- und SPSS< 2..0> *- Signale stabil, bis die Phase bei der nächsten ansteigenden Flanke des TCLK-Signals endet. Diese Phase stellt sicher, daß die kritischen Buscontroller-Steuersignale inaktiv sind und inaktiv verbleiben, wenn der CTB 104 freigegeben ist. Dies stellt außerdem sicher, daß der DABM 100 dadurch deselektiert ist, daß das TBSSE*-Signal vor der Änderung der Nebenstellenauswahlsignale negiert ist. Dies vermeidet jede Möglichkeit, daß zwei Nebenstellen, die TBDAK*-, SPDAK*-, TBSDN*- oder SPSDN*-Signale zur selben Zeit ansteuern. In der Busfreigabephase stoppt der ADAC 116 mit der Ausgabe aller Buscontroller-Ausgabesignale.
  • Fig. 7 ist ein Zeitablaufdiagramm, das die Steuersequenz für eine MODE 0-Übertragung von einem Buscontroller zu einer Busnebenstelle, die als Buscontroller-Schreiben bezeichnet wird, darstellt. Eine Siphonoperation wird nicht durchgeführt. Die Bus-Phase und mnemonischen Beschreibungen sind auf der Unterseite der Fig. 7-11 gezeigt.
  • Fig. 8 ist ein Zeitablaufdiagramm, das die Steuersequenz für einen MODE 0-Übertragung von einer Busnebenstelle zu einem Buscontroller, die als Buscontroller-Lesen bezeichnet wird, darstellt. Ein Siphonbetrieb wird nicht durchgeführt.
  • Fig. 9 ist ein Zeitablaufdiagramm, das die Steuersequenz für eine MODE 0-Übetragung von einem Buscontroller an eine Busnebenstelle mit einem Siphonbetrieb darstellt.
  • Fig. 10 ist ein Zeitablaufdiagramm, das die Steuersequenz für einen MODE 1-Bus-Betrieb darstellt, wenn die Busnebenstelle nicht für eine Datenübertragung bereit war.
  • Fig. 11 ist ein Zeitablaufdiagramm, das die Steuersequenz für einen MODE 1-Bus-Betrieb darstellt, wenn die Busnebenstelle oder die Siphonnebenstelle anfänglich nicht bereit war.
  • Bevor mit einer detaillierteren Beschreibung des Busmaster- Controllers 200 und dem DABM 100 fortgefahren wird, insbesondere mit dem Datenübertragungsabschnitt, wird es als günstig angesehen, schnell den Betrieb des SCSI-Feld-Controllers 80 gemäß der vorliegenden Erfindung zu wiederholen. Eine Grundübertragung tritt auf wie folgt. Das Haupt-Computersystem C bestimmt, daß ein bestimmter logischer Datenblock von dem Laufwerksfeld gelesen werden soll. Die Laufwerkstreiber- Software in dem Haupt-Computer C reserviert einen Speicherbereich, um die Daten zu empfangen und entwickelt eine Befehlsliste, die in ein anderes Speicherfeld gegeben wird. Die Adresse in dem Speicher der Befehlsliste wird einem Mailbox- Register in der Registerschnittstelle des DABM 100 zugeführt. Nachdem die Mailbox-Adresse zugeführt worden ist, wird die Türklingel für diese bestimmte Mailbox aktiviert, so daß dem lokalen Prozessor 106 ein Interrupt gegeben wird. Auf Empfang des Interrupts hin erhält der lokale Prozessor 106 die Befehislistenadresse von der Mailbox. Der lokale Prozessor 106 erstellt dann einen Kommandodeskriptorblock (CDB) wie im Detail noch erklärt wird, und plaziert diesen CDB in den Übertragungspuffer RAM 118 über den lokalen Schnittstellenblock 206 an die Verbindung zum RAM-Controller 210. Dieser CDB wird so eingestellt, daß er die Befehlsliste von dem Hauptspeicher 28 durch den DABM 100, durch den ADAC 116 und zu dem Übertragungspuffer RAM 118 überträgt. Der lokale Prozessor 106 setzt dann die Startadresse in das Übertragungspuffer-RAM 118 des CDB, die gerade abgelegt worden ist. Diese wird dem Busmaster-Kanalcontroller 200 als bestimmte gekettete Adresse zugeführt. Der lokale Prozessor 106 gibt dann diese bestimmte Kette frei. Wenn eine Kette freigegeben wird, fragt die Logik in dem Busmaster-Kanalcontroller 200 den CDB aus dem Übertragungspuffer-RAM 118 ab und lädt die Information in dem CDB in verschiedene Register, was untenstehend beschrieben wird. Eine Übertragung wird ausgeführt, wobei der ADAC 116 ein Buscontroller wird, von dem DABM 100 anfordert, daß er eine Nebenstelle ist, und dann den DABM 100 mit geeigileter Information lädt, um Daten von der Hauptspeicheradresse, die in dem CDB geladen ist, welche die Startadresse der Befehlsliste, wie sie von dem Hauptprozessor bei einer Mailbox geschaffen worden ist, zu übertragen. Die angeforderte Übertragung wird abgeschlossen, wobei der DABM 100 als EISA-Buscontroller und als Nebenstelle für den ADAC 116 dient. Wenn die Übertragung abgeschlossen ist und die gesamte Befehlsliste in den Übertragungspuffer-RAM 118 verschoben worden ist, liefert der ADAC 116 ein Interrupt an den lokalen Prozessor 106, um die Abarbeitung dieser bestimmten Kette anzuzeigen. Der lokale Prozessor 106 fragt direkt die Kommandoliste aus dem Übertragungspuffer-RAM 118 ab. Der lokale Prozessor 106 führt dann ein Parsing der Befehlsliste durch, um die speziellen Befehle, die von dem Haupt-Computer C empfangen worden sind, zu bestimmen.
  • Für dieses Beispiel wird angenommen, daß es ein Lesebefehl ist, der eine Vielzahl der Plattenlaufwerke in dem Feld überspannt. Der lokale Prozessor 106 führt dann ein Parsing des Befehls, wie er in der Befehlsliste gegeben ist, in Laufwerkspezifische Befehle durch, um bestimmte Sektoren gegebener Orte auf jedem der individuellen Festplattenlaufwerke in dem Feld zu erhalten. Die notige Information wird dann von dem Lokalprozessor-Schnittstellenblock 206 an die richtigen Plattenübertragungskanäle 214, 216 und die SCSI-Controller 124 und 126 in geeigneter Weise geliefert. Wenn die gesamte Befehlsinformation übergeben worden ist, wird von den Laufwerken der tatsächliche Lesebetrieb angefordert, wobei verschiedene Controller und Übertragungskanäle freigegeben werden, um zu ermöglichen, daß Daten von den Plattenlaufwerken in das Transferpuffer-RAM 118 übertragen werden. Wenn die verschiedenen Übertragungen von den Laufwerken abgeschlossen sind, werden Interrupts an den Lokalprozessor 106 gegeben, so daß er die Operationen verfolgen kann.
  • Ein Teil der Information, die in der Befehlsliste enthalten ist, ist die tatsächliche Hauptspeicheradresse, wo die Daten abgelegt werden sollen. Wenn die Festplattenbefehle abgeschlossen sind und die Daten in dem Transferpuffer-RAM 118 für jedes bestimmte Plattenlaufwerk abgelegt sind, entwickelt der lokale Prozessor 106 CDBs für jede bestimmte Kette oder Platteninformation. Diese CDBs werden in dem Transferpuffer- RAM 118 so plaziert, daß die von den Plattenlaufwerken erhaltene Information an den richtigen Ort in dem Hauptspeicher 28 übertragen werden soll. Nachdem der CDB für eine bestimmte Kette in den Transferpuffer-RAM 118 geladen worden ist, wird an den Busmaster-Kanalcontroller 200 die CDB-Zeigeadresse geliefert, und diese Kette wird freigegeben. Wenn die Kette freigegeben ist, erhält der Busmaster-Kanalcontroller 200 den CTB 104 und fordert an, daß der DABM 100 zu einem EISA- Buscontroller wird. Hierbei erhält der Busmaster- Kanalcontroller 200 auch die Daten aus dem Transferpuffer-RAM 118. Wenn alle Verbindungen ausgebildet worden sind und die gesamte notige Information weitergegeben worden ist, wie oben und unten dargelegt, läuft die Übertragungsoperation in der Tat gemäß dem Quittierungsbetriebsprotokoll ab. Nachdem die herausgefundenen Plattendaten übertragen worden sind, wobei die verschiedenen Adressen sich ändern, wie unten angemerkt, liefert der Busmaster-Kanalcontroller 200 ein Interrupt an den lokalen Prozessor 106. Der lokale Prozessor 106 weiß dann, daß bestimmt Laufwerksdaten in den Haupt-Computer- Speicher 28 übertragen worden sind. Wenn alle Plattendaten von allen Laufwerken, wie dies durch die Interrupts bezeichnet ist, übertragen worden sind, liefert der lokale Prozessor 106 eine Nachricht in eine Mailbox in dem DABM 100 und aktiviert eine Türklingel in dem DABM 100, um den Haupt-Computer C anzuzeigen, daß die Operation abgeschlossen ist.
  • Als Alternative könnte der lokale Prozessor eine Übertragung von einem Plattenübertragungskanal 214 auf das Übertragungspuffer-RAM 118 anfordern und zur selben Zeit ein CDB aktivieren, um Daten von dem Transferpuffer-RAM 118 auf den CTB 104 unter Verwendung des Busmaster-Controllers 200 zu übertragen. In diesem Fall überwacht der Busmaster-Controller 200 den Status der Blöcke in dem Übertragungspuffer-RAM 118, wobei er die Daten nur überträgt, wenn ein Block, vorzugsweise ein Sektor oder ein Stripe, von dem Plattenübertragungskanal 214 empfangen worden ist. Auf diese Weise wird die Übertragung auf den Hauptspeicher eher abgeschlossen, da beide Übertragungen gleichzeitig auftreten.
  • Dies war ein kurzer Überblick über einen bestimmten Lesebetrieb, und ein Schreiben ist ähnlich, mit der Ausnahme, daß die Reihenfolge der Entwicklung der CDBs und die verschiedenen Befehle für die Plattenübertragungskanäle 214 und die SCSI-Controller 124 und 126 umgekehrt sind, so daß die Information zuerst durch den Busmaster-Kanalcontroller 200 von dem Hauptspeicher 28 in den Transferpuffer-RAM 118 übertragen wird, und die Befehle so eingestellt sind, daß die Daten von dem Transferpuffer-RAM 118 auf die geeigneten Plattenlaufwerke übertragen werden.
  • Um diese verschiedenen Operationen auszuführen, enthält der Busmaster-Kanalcontroller 200 zahlreiche Register, Zustandsmaschinen und eine kombinatorische Logik, um seinen Betrieb zu ermöglichen. Die Logik und die Zustandsmaschine werden untenstehend beschrieben.
  • Der Busmaster-Kanalcontroller 200 umfaßt eine Anzahl von Blöcken. Als Herzstück ist ein Hauptsteuerlogikblock 950 (Fig. 12) vorgesehen. Zusätzlich sind drei Schnittstellenblöcke, eine Übertragungspuffer-RAM-Schnittstelle 952, eine CTB-Schnittstelle 954 und eine Lokalprozessor-Schnittstelle 956 vorgesehen. Ein Daten-FIFO 958 ist zwischen der Transferpuffer-RAM-Schnittstelle 952 und der CTB-Schnittstelle 954 angeschlossen, um eine Datenübertragung zwischen diesen beiden Orten zu ermöglichen. Eine Reihe von Registern, die als CDB-Register 960 bezeichnet werden, sind an die Transferpuffer-RAM-Schnittstelle 952 und die CTB-Schnittstelle 954 angeschlossen. Eine Mikroablaufsteuerung 962 ist mit den CDB- Registern 960 und der Hauptsteuerlogik 950 verbunden, um die Steuerung des Speicherns und des Wiedergewinnens der Information in den CDB-Registern 962 zu ermöglichen. Außerdem ist die Mikroablaufsteuerung 962 mit der Lokalprozessor- Schnittstelle 956 verbunden, um die Entwicklung bestimmter mit dem CDB zusammenhängender Parameter zu ermöglichen. Die Hauptsteuerlogik 950 ist außerdem an die Lokalprozessor- Schnittstelle 956, um Befehlsinformation zu empfangen, an die CTB-Schnittstelle 954, um deren Betrieb und Überwachungsstatus zu beginnen, an den Daten-FIFO 958, um den Datenübertragungsstatus zu überwachen, und an die Übertragungspuffer-RAM- Schnittstelle 952, um den Betrieb zu beginnen und den Status zu überwachen, angeschlossen. Jeder dieser Blöcke wird untenstehend in größerem Detail erklärt.
  • Die Hauptregister, auf die der lokale Prozessor 106 in dem Busmaster-Kanalcontroller 200 zugreifen kann, sind wie folgt. Die ersten fünf dieser Register werden als Ketten-CDB- Adresszeigerregister bezeichnet und sind in der Mikroablaufsteuerung 962 umfaßt. Diese Register empfangen die Adresse in dem Übertragungspuffer-RAM 118 des Starts eines CDB-Blocks oder einer Reihe von CDB-Blöcken, welche den Betrieb einer bestimmten Übertragungskette steuern. In der bevorzugten Ausführungsform gibt es sechs Übertragungsketten, von denen fünf mit den Plattenübertragungskanälen 214 in Bezug gesetzt werden können und einer eine Kette für allgemeine Zwecke ist. Nachdem eine bestimmte CDB-Aufgabe ausgeführt worden ist, enthält das richtige CDB-Adresszeigerregister die Adresse des Bytes, welches dem bestimmten CDB folgt, typischerweise ein anderes CDB, falls mehrere CDBs in der Gesamtübertragung verwendet werden. Ein zusätzliches Lokalprozessorregister ist in der Mikroablaufsteuerung 962 vorgesehen, um zu ermöglichen, daß eine bestimme Übertragungskette aktiviert oder freigegeben wird. Ein weiteres Register zeigt an, ob eine bestimmte Übertragungskette mit einem bestimmten Plattenübertragungskanal 214 verbunden ist, so daß ein gleichzeitiger Übertragungsbetrieb auftritt, wobei ein Datenblock von dem Leseabschnitt übertragen wird, wenn ein Schreibabschnitt den Block abgearbeitet hat. Vorzugsweise ist die Blockgröße ein Sektor oder ein Stripe. Ein anderes Register ist für den lokalen Prozessor 106 vorgesehen, um zu bestimmen, ob eine bestimmte Übertragungskette abgeschlossen worden ist. Dies ist das Transferketten- oder TTDD-Register. Ein Register ist außerdem für einen Fall vorgesehen, in dem ein Fehler in einer bestimmten Übertragungskette auftritt.
  • Wie zuvor angemerkt, wird ein CDB durch den Busmaster- Kanalcontroller 200 verwendet, um die Busmaster-Kanal- Resourcen für den erwünschten Betrieb zu programmieren. Diese Resourcen umfassen Register, Latches, Zähler, Zustandsmaschinen und andere Schaltungen, die verwendet werden, um einen Übertragungsbetrieb zwischen dem CTB 104 und dem Transferpuffer-RAM 118 oder einem Plattenübertragungskanal 214 durchzuführen. Jedes Feld in dem CDB wird unterstehend im Detail beschrieben. Der CDB für jede Übertragungskette wird durch den lokalen Prozessor 106 in den Transferpuffer-RAM 118 an der erwünschten Adresse, wie zuvor angedeutet, geladen. Bestimmte Regeln, welche den CDB-Ort in dem Übertragungspuffer-RAM 118 betreffen, müssen von dem lokalen Prozessor 106 befolgt werden. Erstens müssen alle CDBs an Doppelwortgrenzen beginnen. Zweitens erfordern einige Übertragungsketten mehrere CDBs. Für solche Fälle müssen die CDBs aufeinanderfolgend in dem Übertragungspuffer plaziert werden. Schließlich kann jeder Ort in dem Transferpuffer-RAM 118 für die CDBs verwendet werden, vorausgesetzt, daß der Speicher existiert und nicht für andere Zwecke zugewiesen worden ist.
  • Das Grundformat der CDBs ist untenstehend gezeigt:
  • Der erste Eintrag von Interesse ist das Busmaster- Steuerregister, lokalisiert bei dem Offset 7, Bits 16 bis 31. Die Definition der verschiedenen Bits ist untenstehend gezeigt.
  • WRR. Write RAM. WRR zeigt an, wenn es gesetzt ist, daß die Übertragung darin besteht, Daten von dem CTB 104 in den Transferpuffer-RAM 118 zu übertragen. Wenn es gelöscht ist, zeigt WRR an, daß Daten von dem Transferpuffer-RAM 118 in den Controller-Transfer-Bus 104 übertragen werden.
  • BBKT. Bit Bucket-Betrieb. BBKT weist, wenn es gesetzt ist, den Busmaster-Kanalcontroller 200 an, eine Bit-Bucket- Operation bzw. Bit-Sammelfeld-Operation durchzuführen. Wenn BBKT gesetzt ist, wird der Kanal eine normale Übertragung in bezug auf den RAM-Controller durchführen, allerdings werden keine Signale auf dem Controller-Übertragungs-Bus 104 geschickt. Zusätzlich werden die Controller-Bus-Signale BGNT und TBDAK so simuliert, daß sie anzeigen, daß der Kanal die Steuerung des CTB 104 übernommen hat und Datenbestatigungen auf seine Datenanfragen hin empfängt. Alle Zeiger werden so eingestellt, als ob eine Datenübertragung stattgefunden hat, wenn tatsächlich keine Daten übertragen worden sind. Die Operation wird untenstehend weitergehend beschrieben.
  • R2. Read Twice. R2 ermöglicht, wenn es gesetzt ist, daß dieselben Plattendaten an mehrere Orte in dem Speicher der Nebenstelle gesendet werden, dadurch, daß aus dem Transferpuffer-RAM 118 nach lediglich einem einzelnen Plattenzugriff zweimal gelesen wird. R2 sperrt den Busmaster-Kanalcontroller 200 dahingehend, daß er dem lokalen Prozessor 106 mitteilt, daß der Busmaster-Kanalcontroller 200 Daten aus dem bezeichneten Feld nach der ersten Übertragung von dem Übertragungspuffer-RAM 118 wiedergewonnen hat.
  • OFFEN. Offset Enable. OFFEN ermöglicht es, wenn gesetzt, daß der Busmaster-Kanalcontroller 200 eine Stripeoperation durchführt. Wenn jeder Datenstripe zwischen dem Controller- Übertragungs-Bus 104 und dem RAM-Controller 210 übertragen wird, fügt der Busmaster-Kanalcontroller 200 einem Adressen- Offset, der in dem Speicheradress-Offsetfeld der Nebenstelle spezifiziert ist, den aktuellen Wert des Speicheradresszählers der Nebenstelle hinzu. Dieses Merkmal ermöglicht es, daß die Anzahl der CDBs, die für eine Plattenübertragung erforderlich sind, signifikant verringert wird, wen Daten über ein Plattenfeld in Stripes geteilt sind. Der Betrieb wird weiter untenstehend beschrieben.
  • LCDB. Last CDB. Das LCDB-Bit zeigt an, wenn es gesetzt ist, daß das letzte CDB für die aktuelle Kette ausgeführt wird. Am Abschluß des CDBs wird der Busmaster-Zustand gesichert und der lokale Prozessor 106, falls freigegeben, unterbrochen. LCDB informiert, wenn gelöscht, und wenn der aktuelle CDB zum Abschluß kommt, die Mikroablauf steuerung 962, den Zustand des Busmasters an der CDB-Adresse für den aktuellen CDB zu sichern und das nächste CDB für die aktuelle Kette zu holen.
  • SPEN. Siphon Enable. SPEN weist, wenn gesetzt, den Busmaster- Kanalcontroller 200 an, einen Siphonbetrieb durchzuführen. Der Buscontroller wird dann eine Siphonnebenstelle sowie eine Busnebenstelle auswählen und ein Herausziehen der Daten, wenn sie zwischen der Busnebenstelle und dem RAM-Controller 210 übertragen werden, auf die Siphonnebenstelle ermöglichen. Die Siphon-Speicheradresse ist während des Siphonbetriebs ein gültiges Speicherfeld und muß einen geeigneten Wert enthalten.
  • MODE1-0. Busmaster-Betriebsmodus. MODE1-0 ermöglicht es, daß der Busmaster-Kanalcontroller 200 vier verschiedene Controller-Übertragungs-Bus 104-Operationen durchführt. Die vier verschiedenen Betriebstypen werden wie folgt decodiert:
  • Mode 0. Der Busmaster bzw. Buscontroller wird keine Überprüfung durchführen, um festzustellen, ob die Busnebenstelle und möglicherweise die Siphonnebenstelle vor Beginn einer Datenübertragung bereit sind. Der Buscontroller hält die Bus- Steuerung solange aufrecht, wie es erforderlich ist, wobei er auf den Beendet-Status von der ausgewählten Nebenstelle wartet.
  • Mode 1. Der Buscontroller führt eine Blockdatenübertragung mit der Busnebenstelle und möglicherweise der Siphonnebenstelle, basierend auf dem Nebenstellen-Bereit-Zustand, durch. Der Busmaster überprüft auch den Nebenstellen-Beendet-Status bei Beendigung der Datenübertragung. Falls die Nebenstelle(n) innerhalb der Bereit/Fertig-Auszeitperiode, die in einem Bereit/Fertig-Auszeitregister spezifiziert ist, nicht bereit oder fertig ist/sind, gibt der Buscontroller den CTB 104 frei und versucht, den erforderlichen Fertig- oder Bereit-Status zu erhalten.
  • Mode 2. Der Busmaster führt eine Überprüfung durch, um zu sehen, ob die Busnebenstelle und möglicherweise die Siphonnebenstelle vor Beginn einer Datenübertragung bereit sind. Der Busmaster hält die Steuerung des CTB 104 aufrecht, solange es erforderlich ist, wobei er auf den Fertig-Status von den ausgewählten Nebenstellen wartet.
  • Mode 3. Der Busmaster führt keine Überprüfung durch, um zu sehen, ob die Busnebenstelle und möglicherweise die Siphonnebenstelle vor Beginn einer Datenübertragung bereit sind. Der Busmaster überprüft nicht den Nebenstellen-Fertig-Status.
  • GPS. General purpose thread select. GPS gibt, wenn es gesetzt ist, den Busmaster-Kanalcontroller 200 für die Kette für allgemeine Zwecke frei.
  • BSACE. Bus slave memory address counter enable. BSACE gibt, wenn es gesetzt ist, den Busnebenstellen-Speicheradresszähler frei, so daß er während Buscontroller- und Busnebenstellen- Datenübertragungen inkrementiert. BSACE sperrt, wenn es gelöscht ist, ein Inkrementieren des Zählers während Datenübertragungen. Dieses Steuer-Bit ist insbesondere für Fälle vorgesehen, in denen die Busnebenstellen-Speicheradresse, die an die Busnebenstelle geliefert wird, ein CDB-Zeiger ist. In diesem Fall sollte BSACE auf Null gelöscht werden, um den Busnebenstellen-Speicheradresszähler zu sperren. In allen anderen Fällen sollte BSACE auf Eins gesetzt werden.
  • SPACE. Siphon slave memory address counter enable. SPACE gibt, wenn es gesetzt ist, den Siphonnebenstellen- Speicheradresszähler frei, so daß er während Busmaster- Übertragungen zu/von der Siphonnebenstelle inkrementiert wird. SPACE sperrt, wenn es gesetzt ist, das Inkrementieren des Zählers während Datenübertragungen Dieses Speicher-Bit ist insbesondere für Fälle geschaffen, in denen die Siphonnebenstellen-Speicheradresse, die an die Siphonnebenstelle geliefert wird, ein CDB-Zeiger ist. In diesem Fall solle SPACE zu Null gelöscht sein, um den Siphonnebenstellen- Speicheradresszähler zu sperren. In allen anderen Fällen sollte SPACE auf Eins gesetzt sein.
  • Der nächste Eintrag von Interesse ist das Busmaster- Gerät/Ketten-Auswahlregister bei dem Offset 7, Bits 0 bis 15. Die Definition der verschiedenen Bits ist untenstehend gezeigt.
  • TS. Thread Select< 4..0> . TS< 4..0> entspricht jedem der individuellen Laufwerks-RAM-Kanäle und/oder entsprechenden Pantätsmaschinenketten. Setzen von einem oder mehreren dieser Bits, und falls so in dem Kettenquellkonfigurationsregister freigegeben, gibt eine FIFO-Operation zwischen dem Busmaster- Controller-Übertragungskanal und den entsprechenden ausgewählten Plattenkanälen 214 oder den Ketten der Paritätsmaschinen 218 frei. Insbesondere wird, wenn ein Kettenauswahl- Bit für einen Plattenkanal 214 oder eine Kette für eine Pantätsmaschine 218 gesetzt ist, dieses Bereitsignal des Plattenkanals oder das Bereitsignal der Kette der Paritätsmaschine 218 für den bestimmten Block in dem FIFO-Bereich des Übertragungspuffer-RAM 118 vor der Übertragung der Daten zu oder von dem FIFO-Bereichs des Plattenkanais 214 oder dem FIFO- Bereich der Paritätskette 218 in dem Übertragungspuffer-RAM 118 bewertet. Wenn mehr als ein Bit in diesem Register gesetzt ist, werden die ausgewählten FIFO-Bereitsignale logisch zusammengezählt, so daß sie ein einzelnes Bereitsignal für die Bewertung liefern. Dieses Szenario kann auftreten, wenn es erforderlich ist, eine spiegelfehlertolerante FIFO- Operation durchzuführen. Falls die ausgewählte Kette nicht für eine Plattenkanal 214-FIFO-Operation in dem Kettenquellenkonfigurationsregister-Bits konfiguriert ist, haben diese Bits keine Wirkung auf die Buscontroller-Kanaloperation.
  • SSID< 2..0> . Bus Slave Selects ID 2 - 0. Diese codierten Signale spezifizieren das Nebenstellengerät auf dem Controller- Übertragungs-Bus 104, die der Busmaster-Kanalcontroller 200 zur Datenübertragung auswählen soll. SSID2 ist das MSB und SSID0 ist das LSB. Die Daten-Bits sind so codiert, daß SSID2- 0 = 0h Nebenstelle 0 wählt, SSID2-0 = 1h wählt Busnebenstelle 1, SSID2-0 = 2h Nebenstelle 2 usw.
  • SPID< 2..0> . Siphon Slave Selects ID 2 - 0. Diese codierten Signale spezifizieren die Siphonnebenstelleneinrichtung auf dem Controller-Transfer-Bus 104, der Busmaster- Kanalcontroller 200 sollte eine Siphon-Datenübertragung auswählen. SPID2 ist das MSB und SPIDO ist das LSB. Die Daten- Bits sind so codiert, daß SPID2-0 = 0h die Busnebenstelle auswählt, SPID2-0 = 1h wählt die Busnebenstelle 1 aus, SPID2- 0 = 2h wählt die Busnebenstelle 2 aus usw. Falls ein Siphonbetrieb nicht in dem Busmaster-Controller-Register freigegeben ist, dann brauchen diese Bits nicht spezifiziert sein.
  • Der nächste Eintrag von Interesse ist der Busmaster-Kanal- RAM-Adresszähler, der beim Offset 5, Bits 0 bis 15 lokalisiert ist.
  • RA< 15..0> Bus Counter Transfer Channel RAM Address. Diese 16 Bits definieren die Startadresse des Übertragungspuffer-RAMs 118 für den programmierten CDB-Betrieb. Dieser Wert wird in einen Zähler geladen, der während Datenübertragungsoperationen den Übertragungspufferzeiger liefert. Auf erfolgreiche Abarbeitung des programmierten CDB hin wird der letzte Wert des Zählerzustands in dem RAM-Adressenfeld gesichert. Dieser Wert sollte auf den nächsten Ort in dem Übertragungspuffer zeigen, nachdem durch den Busmaster-Kanalcontroller 200 auf den letzten Ort für das ausgeführte CDB zugegriffen worden ist.
  • Der nächste Eintrag von Interesse in dem CDB ist das Busmaster-Kanal-Übertragungs-Byte-Zählerfeld beim Offset 5, Bits 16 bis 31.
  • TBC< 15..0> Bus master channel transfer byte count. Diese 16 Bit definieren die Anzahl der Daten-Bytes, die für die programmierte Datenübertragung übertragen werden sollen. Ein Wert, der größer als Null ist, zeigt die genaue Anzahl der Bytes, die übertragen werden sollen, an. Ein Wert von Null liefert einen 64KByte-Datentransfer. Auf Beendigung einer erfolgreichen CDB-Ausführung hin wird ein Wert von Null in dem CDB-Übertragungs-Byte-Feld gespeichert, um anzuzeigen, daß alle programmierten Übertragungen abgeschlossen worden sind. Jeder andere Wert zeigt die Anzahl der Bytes an, die nicht übertragen worden sind, wenn die CDB-Ausführung angehalten worden ist. Es ist zu bemerken, daß die Maximaldaten, die mit einem CDB übertragen werden können, 64KBytes sind. Für Übertragungsketten, die erfordern, daß mehr als 64KBytes an Daten übertragen werden sollen, müssen mehrere CDBs spezifiziert werden.
  • Der nächste Eintrag von Interesse in dem CDB ist das Busmaster-Kanal-Nebenstellen-Speicheradressfeld beim Offset 4.
  • SMA< 31..0> Bus master channel slave memory address field. Diese 32 Bits stellen die Nebenstellen-Speicheradresse dar, an welcher die Datenübertragungen beginnen sollen. Diese Bits werden verwendet, um den Nebenstellen-Speicheradresszähler direkt zu laden, der dem EISA-Bus 34 geliefert wird und die Hauptspeicheradresse ist. Der Zähler wird während dem Datenübertragungsbetrieb für jede Byte-Übertragung inkrementiert. Jedes Mal wird ein Adressenladezyklus auf dem Controller- Übertragungs-Bus 104 durch den Busmaster-Kanalcontroller 200 durchgeführt, der Wert des Kanalnebenstellen-Adresszählers wird auf dem CDB 104 plaziert und mit dem TRAID-Signal qualifiziert. Auf Beendigung des programmierten CDB-Betriebs hin zeigt der Nebenstellenspeicher-Adresszähler auf das Byte nach dem letzten übertragenen Byte. Dieser Wert wird in dem Nebenstellenspeicher-Adressfeld gespeichert.
  • Der nächste Eintrag von Interesse ist das Busmaster-Kanal- FIFO-Startadressenfeld bei dem Offset 0, Bits 0 bis 15.
  • FSA< 15..0> . FIFO start address. Diese 16 Bits definieren die untere Doppelwort-Adressgrenze des Übertragungspuffer-RAMs 118 für das Speichersegment, das für diesen Kanal den Datenübertragungen zugewiesen ist. Vorzugsweise ist der Übertragungspuffer-RAM 118 als eine Serie von zirkularen FIFO- Gebieten organisiert. Wenn der RAM-Adresszähler des Kanals gleich der FIFO-Endadresse ist, wird der Busmaster-RAM- Adresszähler mit der FIFO-Startadresse auf Vervollständigung der aktuellen Doppelwortübertragung hin wiederholt geladen.
  • Der nächste Eintrag von Interesse ist das Busmaster-Kanal- FIFO-EndAdressfeld beim Offset 0, Bits 16 bis 31.
  • FEA< 15..0> . FIFO end address. Diese 16 Bits definieren die Doppelwortadressgrenze des oberen Übertragungspufferspeichers für das Segment des Übertragungspuffer-RAMs 118, das der Datenübertragung für diesen Kanal zugewiesen ist. Wenn der RAM- Adresszähler des Kanals gleich der FIFO-Endadresse ist, wird der RAM-Adresszähler mit der FIFO-Startadresse auf Beendigung der aktuellen Doppelwortübertragung hin wiederholt geladen.
  • Der nächste Eintrag von Interesse ist das Busmaster-Kanal- FIFO-Block/Sektor-Größenfeld, das beim Offset 1, Bits 0 bis 15 lokalisiert ist.
  • FBS< 11..0> . FIFO block/sector size. Diese 12 Bits definieren die Wortblockgröße, die für die FIFO-Operationen verwendet wird. Die FIFO-Blockgröße ist die Grundeinheit, die zum Drosseln der Daten zwischen einem Laufwerk und dem Busmaster- Kanal verwendet wird. Wenn beispielsweise die Blockgröße auf 256 Worte gesetzt ist, wird ein Sammelfeld gleicher Größe in dem Übertragungspuffer-RAM 118 für die Datenübertragungen erzeugt. Im Fall eines Lesens von dem Laufwerk muß das Laufwerk das Sammelfeld füllen, bevor der Busmaster-Kanalcontroller 200 das Sammelfeld leeren kann. Auf ähnliche Weise muß für Laufwerks-Schreibübertragungen der Busmaster-Kanalcontroller 200 das Sammelfeld füllen, bevor das Laufwerk das Sammelfeld leeren kann. Die FIFO-Blockgröße ist immer gleich der Laufwerkssektorgröße, mit der eine Laufwerksübertragungskette oder eine Paritätskette ausgebildet worden ist.
  • Der nächste Eintrag von Interesse ist die Busmaster-Kanal- Stripegröße, die beim Offset 1, Bits 16 bis 31, lokalisiert ist. Die Definition der verschiedenen Bits ist unten gezeigt.
  • SS. Stripe size. Diese 8 Bit definieren die Anzahl der FIFO- Blöcke oder Sektoren, die in einem Laufwerksstripe enthalten sind. Dieser Feldwert wird verwendet, um einen Stripezähler bei Mehrfachstripeoperationen zu laden. Dieser Betrieb wird untenstehend im Detail beschrieben.
  • SBC. Stripe Block Counter. Dieser 8 Bit-Wert wird verwendet, um einen Stripezähler zu laden, der die Anzahl der Blökke/Sektoren, die für eine Laufwerkstripeübertragung erforderlich sind, zählt. Der Zähler wird durch die Kanalsteuer- Zustandsmaschine mit dem Wert in der Stripegröße geladen, jedes Mal wenn ein Laufwerkstripe übertragen worden ist. Wenn der Zähler eine Endzählung (bzw. terminal count) erreicht, wird ein Adressen-Offset zu dem Nebenstellenspeicher- Adresszähler, falls so freigegeben, addiert.
  • Der nächste Eintrag von Interesse ist das Statusregister beim Offset 6, Bits 0 bis 15. Die Definition der verschiedenen Bits ist untenstehend gezeigt.
  • BCD, SCD, DONE, HALTED, CERR, BERR. CDB Status bits. Der Busmaster-Kanalcontroller 200 speichert verschiedene Status- Bits, welche die Operation oder die Vervollständigung eines jeden CDB betreffen. Diese Statussignale werden in diesem Feld des CDB in dem Übertragungspuffer-RAM 118 gespeichert. Der Busmaster-Controller 200 aktualisiert die Inhalte des CDB in dem Übertragungspuffer-RAM 118, jedes Mal, wenn Übertragungen für den CDB abgeschlossen sind, oder wenn ein Fehler detektiert wird, oder wenn eine unterschiedliche Kette eine Abarbeitung fordert. Die Status-Bit-Definition dieser Signale sind wie folgt:
  • BCD. Bus slave check done. Dieses Bit wird von den Busmaster- Zustandsmaschinen verwendet, um zu bestimmen, ob der aktuelle CDB abgearbeitet worden ist, und dennoch bestimmt worden ist, daß die Busnebenstelle "nicht fertig" ist. Der lokale Prozessor 106 sollte dieses Bit auf Null initialisieren und seinen Wert auf eine CDB-Abarbeitung hin ignorieren.
  • SCD. Siphon slave check done. Dieses Bit wird durch die Busmaster-Zustandsmaschinen verwendet, um zu bestimmen, ob der aktuelle CDB abgearbeitet worden ist, und dennoch bestimmt worden ist, daß die Siphonnebenstelle "nicht fertig" ist. Der lokale Prozessor 106 sollte dieses Bit zu Null initialisieren und seinen Wert auf eine CDB-Abarbeitung hin ignorieren.
  • DONE. CDB done. Dieses Bit wird gesetzt, wenn der Busmaster- Controller 200 alle Übertragungen für den aktuellen CDB- Betrieb abgeschlosen hat oder angewiesen worden ist, die aktuelle Operation abzubrechen, weil das Freigabe-Bit der Kette gelöscht worden ist.
  • HALTED. CDB Halted. Dieses Bit wird jedes Mal gesetzt, wenn der Busmaster-Controller 200 den Betrieb des aktuellen CDB anhält und die CDB-Werte speichert unabhängig von dem Grund für das Anhalten der CDB-Auführung.
  • BERR. Bus Error. Dieses Bit zeigt an, daß ein Bus-Fehler für den CTB 104 detektiert oder während des Betriebs für dieses CDB erzeugt worden ist.
  • Der nächste Eintrag von Interesse ist das Busmaster-Kanal- Nebenstellenspeicheradress-Offsetfeld, das beim Offset 3 lokalisiert ist.
  • SMAO< 31..0> . Slave memory address offset. Diese 32 Bits definieren den Nebenstellenspeicher-Adressoffsetwert für die aktuelle Stripeoperation. Der Offset wird zu dem Nebenstellenspeicher-Adresszähler addiert, nachdem jeder Laufwerkstripe an Daten übertragen worden ist, falls ein Stripebetrieb durch OFFEN=1 freigegeben ist. Falls OFFEN=0, werden die SMAO-Bits nicht verwendet und brauchen nicht spezifiziert werden.
  • Der nächste Eintrag von Interesse ist das Siphonnebenstellenspeicher-Adressfeld, das beim Offset 2 lokalisiert ist.
  • SPA. Siphon Address. SPA< 31..0> definiert die Startadresse des Siphonnebenstellenspeichers. Während Busmaster- Siphonbetrieb wird diese Adresse der Siphonnebenstelleneinrichtung zugeführt. Die Siphonnebenstelle speichert die Daten, die zu oder von einer Busnebenstelle übertragen worden sind, in dem Speicher der Siphoneinrichtung an der zur Verfügung gestellen Adresse.
  • Der nächste Eintrag von Interesse ist das Nebenstellenspezifische Register, das beim Offset 6, Bits 16 bis 31 lokalisiert ist.
  • Während der Bus- und Siphonnebenstellen-Ladezyklen auf dem CTB liefert der Busmaster-Controller 200 Hauptinformationsblocks: die Nebenstellenspeicheradresse, die Transfer-Byte- Zählung und Nebenstellen-spezifische Daten. Dieses Register stellt einige der für die Nebenstelle spezifischen Daten, die während dem CTB-Ladezyklus überreicht werden, dar. Da das DABM 100 keine dieser Information verwendet, wird dieses Register nicht erklärt.
  • Die Blockdiagramme der Logikschaltung in dem Busmaster- Kanalcontroller 200 beginnen mit Fig. 13, wobei die Zustandsmaschinen für die verschiedenen Abschnitte bei Fig. 19 starten. Beginnt man nun mit Fig. 13, sind dort Register gezeigt, die von dem Busmaster-Kanalcontroller 200 verwendet werden, um den BAM-Controller 210 zu adressieren. Ein Latch 1000 enthält 16 Adress-Bits, um das Ende des FIFO-Blocks, der in dem Übertragungspuffer-RAM 118 entwickelt worden ist, anzuzeigen, und 16 Adress-Bits, um den Start eines FIFO-Blocks für den Übertragungspuffer-RAM 118 anzuzeigen. Diese Information wird von dem CDB beim Offset 0 geladen. Die FIFO-Startadresse wird als ein Eingang eines Zweikanalmultiplexers 1002 zur Verfügug gestellt. Der zweite Eingang des Multiplexers 1002 ist ein 16 Bit-Wert, der die RAM-Startadresse für eine bestimmte Übertragung, wie sie in dem CDB geschaffen worden ist, darstellt. Somit ist zu bemerken, daß die Übertragung nicht ein Start zu Beginn eines bestimmten FIFO-Blocks sein muß, sondern irgendwo innerhalb dieses auftreten kann. Die Ausgabe des Multiplexers 1002 wird auf einen 16-Bit-RAM-Adresszähler 1004 gegeben, der sequentiell mit jeder Übertragung hochzählt. Das Taktsignal für den Adresszähler 1004 ist das SYSCLK-Signal oder das TCLK-Signal, wie es auf dem CTB 104 vorliegt. Ein Freigabe-Signal wird durch die Logikschaltung geliefert, das anzeigt, daß ein RAM-Betrieb auftreten sollte, da er angefordert worden ist und eine RAM-Zuteilung durchgeführt worden ist. Das Ladesignal für den Zähler 1004 wird durch die Ausgabe eines ODER-Gatters 1006 mit zwei Eingängen geschaffen, wobei ein Eingang eine Anzeige für die geeignete Zeit zum Laden der Adresse ist, wenn ein CDB von dem Transferpuffer-RAM 118 in den Busmaster-Kanalcontroller 200 geladen wird, und der andere Eingang ein Wiederladewert ist, so daß der Start des FIFO-Blocks wieder in den Zähler 1004 geladen werden kann, wenn das Ende des FIFO-Blocks erreicht worden ist, so daß ein zirkularer Ringpuffer gebildet wird.
  • Die Ausgabe des Zählers 1004 wird an einen Eingang eines 16 Bit-Adresskomparators 1008 geliefert, wobei der andere Eingang des Komparators 1008 die Endadresse für den FIFO-Block von dem Latch 1000 empfängt. Der Gleichheitsausgang des Komparators 1008 wird an einen Eingang eines NAND-Gatters 1010 gegeben, dessen anderer Eingang das BA_CNT_EN oder das RAM- Adresszählungsfreigabesignal und ein Signal DIS_BA_RLD empfängt, was anzeigt, daß der FIFO-Betrieb des Übertragungspuffer-RAMs 118 gesperrt ist. Die Ausgabe des UND-Gate 1010 wird als Eingabe an das ODER-Gate 1006 gegeben und an den Auswahleingang des Multiplexers 1002. Die Ausgabe des RAM- Adresszählers 1004 wird auch als eine Eingabe in einen 16 Bit-Zweikanalmultiplexer 1012 gegeben, dessen zweiter Eingang eine Adresse ist, die von der Mikroablaufsteuerung 962 geliefert worden ist, welche verwendet worden ist, um tatsächlich den CDB aus dem Übertragungspuffer-RAM 118 zu laden, wobei dieser Wert die Übertragungs-CDB-Zeigeradresse, die zuvor durch den lokalen Prozessor 106 zur Verfügung gestellt worden ist, darstellt und, falls erforderlich, während dem Laden des CDB oder Speicheroperationen inkrementiert wird. Das Auswahlsignal für den Multiplexer 112 ist ein Signal, das anzeigt, daß der Busmaster-Datenübertragungsabschnitt des Busmaster- Kanalcontroller 200 Daten überträgt und die Mikroablaufsteuerung 962 nicht im CDB-Lade- oder Schreibbetrieb ist. Die Ausgabe des Multiplexers 1012 wird an den RAM-Controller 210 als RAM-Adresse gegeben.
  • Ein zusätzliches Feld in dem CDB ist die Übertragungs-Byte- Zählung, die, wie zuvor bemerkt worden ist, die Anzahl der Bytes angibt, die tatsächlich in der bestimmten Kette übertragen werden sollen. Dieser Wert wird in einen Übertragungs- Byte-Zähler 1020 (Fig. 14) geladen. Der Takt für den Zähler 1020, der ein herabzählender Zähler ist, ist das SYSCLK- Signal. Der Zähler 1020 zählt in Inkrementen von 0, 1, 2, 3 oder 4 in Abhängigkeit von den Zuständen des T_CNTx_EN- Signals abwärts. Der Zähler 1020 zählt mit vier herab, es sei denn, der verbleibende Wert ist kleiner als vier, wobei in diesem Fall das Dekrement bei dem verbleibenden Wert liegt. Der Zähler 1020 wird zu einem geeigneten Zeitpunkt in der CDB-Leseoperation geladen. Die Ausgaben des Zählers 1020 umfassen die TFR_CNT< 15..0> -Signale, so daß die Übertragung abgeschlossen ist, wenn er bei 0 ist, und dies als Endzählung angesehen werden kann. Fünf zusätzliche Ausgänge bezeichnen die Anzahl der Bytes, die in der Übertragung verbleiben, und werden als TC_4, TC_3, TC_2, TC_1 und TC_0 bezeichnet und werden verwendet, um die T_CNTX_EN-Signale und andere zu entwickeln.
  • Ein zusätzlicher Parameter in dem CDB ist die FIFO-Blockoder Sektor-Größe und dieser Wert wird einem Latch 1022 zugeführt, das zu dem geeigneten Zeitpunkt geladen wird. Die Ausgaben des Latch 1022 werden einem FIFO-Block-Wortzähler 1024 zugeführt, der ein abwärtszählender 12-Bit-Zähler ist. Der Zähler 1024 wird durch das SYSCLK-Signal getaktet. Er kann um 1 oder 2 abwärts zählen, basierend auf der Anzahl der verbleibenden Werte. Die Ausgaben umfassen FBWC_TC_2-, FBMW_TC_1- und FBMW_TC_0-Signale, die anzeigen, ob 0, 1 oder 2 Worte in dem Block verbleiben. Diese Signale werden verwendet, um den Wert zum Abwärtszählen und andere Signale zu entwickeln.
  • Ein zusätzliches Merkmal ist die Fähigkeit, die tatsächliche Stripegröße der Daten, wie sie in dem Plattenfeld vorhanden sind, zu kennen, so daß mit dieser Fähigkeit und der Verwendung eines Speicher-Offsets, aufeinanderfolgende Daten von einem bestimmten Plattenlaufwerk gelesen werden können oder auf dieses geschrieben werden können, obwohl die paten in dem Hauptspeicher nicht aufeinanderfolgend vorliegen oder vorliegen werden. Der Busmaster-Kanalcontroller 200 kann direkt die Daten durch kontinuierliches Lesen von oder Schreiben in den Übertragungspuffer-RAM 118 in oder aus nicht aneinander angrenzenden Abschnitten des Hauptspeichers 28 ohne zusätzliche Befehle durch den lokalen Prozessor 106 mit Ausnahme des Aufstellens des Original-CDB liefern. Somit wird für jede Operation, die mehrere Datenstripe von dem Laufwerk empfängt, das gesamte vermischte Streuen und Zusammenfassen von Daten basierend auf den Stripe ohne eine Einwirkung des lokalen Prozessors durchgeführt, womit der Overhead in dem lokalen Prozessor 106 verringert wird und der Gesamtbetrieb in der Geschwindigkeit erhöht wird. Die Größe der FIFO-Blocks oder -Sektoren, die in einem bestimmten Stripe enthalten sind, wird von dem CDB in ein Latch für die Stripegröße 1026 gegeben, dessen Ausgabe an einen Datenmultiplexer für die Stripegröße 1028 geliefert wird. Der Multiplexer 1028 hat zwei Eingänge, wobei der zweite Eingang direkt von dem Transferpuffer-RAM 118 während eines CDB-Ladebetriebs kommt. Dieser wird verwendet, um den ursprünglichen Stripeblock-Zählwert von dem CDB zu laden. Diese Daten werden durch den Multiplexer 1028 direkt in den Stripeblockzähler 1030 geladen. Durch diese Technik können führende Blöcke in einem Stripe weggelassen werden, so daß die Übertragung einer Anzahl von Blöcken und Stripes von dem Beginn der tatsächlich empfangenen Daten an, die in dem Übertragungspuffer-RAM 118 vorhanden sind, beginnen kann. Nachdem dieser Wert durch den Blockzähler 1030 auf Null herabgezählt worden ist, wird der Adress-Offsetwert geladen und zu der Busnebenstellen-Speicheradresse addiert, so daß das Streuen der Information in dem Fall eines Lesens von Platte oder das Sammeln der Information in dem Fall eines Plattenschreibbetriebs automatisch durchgeführt wird. Zu dem Zeitpunkt, zu dem der Offset durchgeführt wird, werden die Datenwerte, die in dem Latch für Stripegröße 1026 enthalten sind, in den Stripeblockzähler 1030 geladen, so daß es in diesem Fall günstig ist, einen vollen Stripe abzuarbeiten. Somit ist es auf diese Weise leicht, einfache Datenblöcke ohne Overhead für den lokalen Prozessor 106 zu lesen oder zu schreiben, der eine große Anzahl von individuellen CDBs für jeden bestimmten Block in einem Stripe entwickeln muß.
  • Wenn der Zähler 1030 auf 0 herabzählt, wird ein Endzählwert, der als SBC_TC_0 bezeichnet wird, an ein UND-Gatter 1032 geliefert, dessen anderer Eingang ein Blockzählstripe- Wiederladefreigabesignal ist, das durch eine steuernde Zustandsmaschine geliefert wird. Die Ausgabe des UND-Gatters 1032 wird an ein ODER-Gatter 1034 geliefert, das als andere Eingabe das Ladesignal empfängt, welches zum Laden des CDB- Werts des Stripeblockzählers geeignet ist. Die Ausgabe des ODER-Gatters 1034 geht zu dem Ladeeingang des Zählers 1030.
  • Wie bemerkt, ist es bei Verwendung von Stripeoperationen möglich, für jede bestimmte Stripelänge in dem Speicher einen Offset einzuführen oder eine nicht aneinandergrenzende Operation durchzuführen. Ein Nebenstellenspeicher-Offsetregister 1036 (Fig. 15) ist ein 32-Bit-Register, das den Offsetwert, der in den CDB spezifiziert ist, enthält, welcher basierend auf der Anzahl der Sektoren für die individuellen Plattenstripes und die Anzahl der Platten, die den Gesamtstripe bilden geeignet ist, so daß, wenn die Übertragungsoperation für jeden der verschiedenen Laufwerke in dem Feld wiederholt wird, die Speicherdaten tatsächlich am Ende aus dem Hauptspeicher zusammengefaßt werden oder in ihn gestreut werden. Die Ausgabe des Nebenstellenspeicher-Offsetregisters 1036 wird als eine Eingabe an den Nebenstellenspeicher- Adresszähler 1038 geliefert. Die normalen Dateneingänge in den Zähler 1038 werden von dem Transferpuffer-RAM 118 während eines Ladens des CDB geschaffen, wenn die Busnebenstellen- Startspeicheradresse abgerufen wird. Wiederum inkrementiert der Zähler 1038 auf dem SYSCLK-Signal und kann um Werte von 0-4 inkrementieren, wie es basierend auf der Anzahl von Bytes, die in der Übertragung verbleiben, günstig ist. Vier Bytes werden verwendet, falls mehr als vier verbleiben. Das Offsetmerkmal wird durch das OFFEN-Bit in dem CDB- Kontrollregister freigegeben. Dieses Bit wird als ein Eingang an ein UND-Gatter 140 mit zwei Eingängen geliefert, dessen anderer Eingang das RLD_SBC-Signal oder Wiederladesignal, wie es von dem Streifenblockzähler-UND-Gatter 1032 geliefert wird, empfängt. Die Ausgabe des UND-Gatters 1040 ist mit dem Addier-Offseteingang des Adresszählers 1038 verbunden. Die Ausgabe des Adresszählers 1038 ist die tatsächliche Nebenstellenadresse, die über den CTB 104 während eines Nebenstellen-Adressladeabschnitts eines CTB-Zykluses geliefert wird und an den Transferpuffer-RAM 118 zurückgegeben wird, wenn die CTB-Information zurückgeschrieben wird.
  • Es ist außerdem zu bemerken, daß in dem CDB die Fähigkeit vorhanden ist, eine Siphonnebenstelle anzuweisen, den Betrieb zu beginnen. Zu diesem Zweck ist ein Siphonspeicher- Adresszähler 1042 vorgesehen, der seine Daten von dem Transferpuffer-RAM 118 während des geeigneten Abschnitts eines CDB-Ladezykluses empfängt und durch das SYSCLK-Signal getaktet wird, wobei der Ausgang während eines Siphonnebenstellen- Adressladebetriebs des CTB 104 und zu dem Transferpuffer-RAM 118 geliefert wird, wenn die CDB-Information zurückgeschrieben wird.
  • Fährt man nun zu Fig. 16 fort, ist das Daten-FIFO 958, das zwischen dem CTB-Bus 104 und dem Transferpuffer-RAM 118 lokalisiert ist, gezeigt. Dieses FIFO 1050 wird verwendet, da die zwei Busse tatsächlich im Betrieb asynchron sind. Vorzugsweise ist der FIFO 1050 fünf Doppelworte tief und umfaßt Ausgänge, um anzuzeigen, wenn er leer ist, wenn er fast leer ist, um anzuzeigen, daß nur noch ein Datenwert vorhanden ist, wenn er fast voll ist, um anzuzeigen, daß lediglich ein Datenraum verbleit, und wenn er voll ist. Der FIFO 1050 wird mit dem SYSCLK-Signal getaktet und umfaßt Eingänge zum Lesen und zum Schreiben, so daß Daten in den FIFO 1050 geladen werden können und aus dem FIFO 1050 entfernt werden können. Die Ausgabe aus dem FIFO 1050 wird zweckmäßig an den geeigenten Bus, abhängig von der Richtung der Übertragung, gemultiplext. Die Eingänge des FIFOs 1050 sind mit einem 32-Bit-Multiplexer 1052 verbunden, empfangen als ihre Eingänge den Daten-Bus vom CTB 104 und den Daten-Bus von dem Transferpuffer-RAM 118, wobei der Auswahleingang des Multiplexers 1052 ein Signal ist, das als RAM_WRITE bezeichnet wird, welches anzeigt, daß in den Übertragungspuffer-RAM 118 geschrieben wird. Deshalb wird der FIFO 1050 mit jeder Lese- oder Schreiboperation getaktet.
  • Es ist außerdem erforderlich, die Endzählanzeige zu verfolgen und einer FIFO-Operation zu unterziehen, so daß die Endanzeigeinformation zu dem geeigneten Zeitpunkt an die Scheibquelle geliefert wird und zu geeigneten Zeitpunkten an die Lesequelle geliefert wird, so daß keine Überfüllungen auftreten und daß alle Bytes richtig von dem FIFO 1050 geliefert werden. Zu diesem Zweck wird ein Endzähl-FIFO 1051 verwendet. Der Endzähl-FIFO ist 7 Bits breit und 5 Einträge tief und empfängt als Dateneingaben die FBMW_TC_1-, FBWC_TC_2-, TFR_TC_1-, TFR_TC_2-, TFR_TC_3- und TFR_TC_4-Signale und ein Signal, das als FBC_TFR_TC_0 bezeichnet wird, das an dem Ausgang eines ODER-Gatters 1053 mit zwei Eingängen geliefert wird, welches als Eingabe die FBWC_TC_0- und TFR_TC_0-Signale umfaßt. Der FIFO 1051 umfaßt die TC_FIFO_WR- und TC_FIFO_RD-Signale, um Lese- und Schreiboperationen anzuzeigen und wird durch das SYSCLK-Signal getaktet. Der FIFO 1051 liefert die TCF_FULL-, TCF_A_FULL-, TCF_A_EMPTY- und TCF_EMPTY-Signale, um den Datenstatus in dem FIFO 1050 anzuzeigen. Die Datenausgaben des FIFO 1051 sind das FBWC_TFR_TC_0_L-Signal und das L_FBWC_TC_1-, das L_FBWC_TC-2-, das L_TFR_TC_1-, das L_TFR_TC_2-, das L_TFR_TC_3- und das L_TFR_TC_4-Signal. Das L_FBWC_TC_1-, das L_FBWC_TC_2-, das L_TFR_TC_1-, das L_TFR_TC-2-, das L_TFR_TC_3- und das L_TFR_TC_4-Signal werden als Eingaben an ein ODER-Gatter 1055 geliefert, dessen Eingang das L_LAST_DW-Signal ist, so daß dieses anzeigt, daß das letzte Wort von dem FIFO 1050 übertragen worden ist.
  • Das TFR_TC_4-, das TFR_TC_3-, das TFR_TC_2-, das TFR_TC_ 1- und das FBWC_TC_2- und das TFR_TC_2- Signal werden an die Eingänge eines ODER-Gatters 1055 geliefert, dessen Eingabe das LAST_DW-Signal ist, welches anzeigt, daß das letzte Wort an den FIFO 1050 übertragen worden ist.
  • Eine bestimmte Steuerlogik ist erforderlich, um die Lese- und Schreibsignale für den FIFO 1050 und den FIFO 1051 zu schaffen. Ein RAM_GNT-Signal (Fig. 17), welches anzeigt, daß der RAM-Controller 210 den Zugriff auf den Busmaster- Kanalcontroller 200 gewährt hat, wird als eine Eingabe an ein NAND-Gatter mit zwei Eingänge 1054 geliefert. Die zweite Eingabe ist das RM_RAM_REQ-Signal, um anzuzeigen, daß der Busmaster-Kanalcontroller 200 Daten anfordert. Die Ausgabe des UND-Gatters 1054 wird an den Eingang eines Flip-Flops vom D- Typ 1056 geliefert, dessen Taktsignal das SYSCLK-Signal ist, und dessen asynchrones Zurücksetzen durch das SYSRST- oder Systemrücksetz-Signal geschaffen wird. Die Ausgabe des Flip- Flops 1056 wird als Eingabe an einen Flip-Flop vom D-Typ 1058 geliefert, der ebenfalls durch das SYSCLK-Signal getaktet wird und durch das SYSRST-Signal zurückgesetzt wird. Die Ausgabe des Flip-Flop 1058 wird als eine Eingabe in ein UND- Gatter mit zwei Eingängen 1056 geliefert, dessen zweiter Eingabe das RAM_READ-Signal ist, welches anzeigt, daß ein Lesebetrieb auf dem Transferpuffer-BAM 118 durchgeführt wird. Die Ausgabe des UND-Gatters 1056 wird an einen Eingang eines ODER-Gatters mit zwei Eingängen 1062 geliefert. Die andere Eingabe des ODER-Gatters 1052 wird durch die Ausgabe eines UND-Gatters mit zwei Eingängen 1064 geschaffen. Eine Eingabe in das UND-Gatter 1064 ist eine invertierte Version und empfängt das RAM_READ-Signal, während die andere Eingabe das TB_CYC-Signal ist, welches anzeigt, daß die Daten von der Busnebenstelle akzeptiert worden sind. Das TB_CYC-Signal wird als Ausgabe eines UND-Gatters mit zwei Eingängen 1072 geschäffen. Die zwei Eingänge in das UND-Gatter 1072 sind das BS_ACK-Signal, das eine Anzeige dafür ist, daß die Busnebenstelle den Betrieb bestätigt hat, und das TB_DRQ_O-Signal, das dafür eine Anzeige ist, daß eine Datenübertragungsanforderung ausgegeben worden ist. Die Ausgabe des ODER-Gatters 1062 ist das D_FIFO_WR- oder Schreibsignal, das dem FIFO 1050 zugeführt wird.
  • Ein Signal, das als BM_RAM_CYC, der Ausgabe des UND-Gatters 1054, bezeichnet ist, wird als eine Eingabe an ein UND-Gatter mit zwei Eingängen 1066 geliefert. Die zweite Eingabe des UND-Gatters 1066 ist das RAM_WRITE-Signal. Die Ausgabe des UND-Gatters 1066 wird einem Eingang eines ODER-Gatters mit zwei Eingängen 1068 zugeführt. Der andere Eingang des ODER- Gatters 1068 wird durch den Ausgang eines UND-Gatters mit zwei Eingängen 1070 geschaffen, von denen einer der Eingänge invertiert wird und das RAM_WRITE-Signal empfängt. Der zweite Eingang empfängt das D_FIFO_RD_EN-Signal, um anzuzeigen, daß Leseoperationen auf dem FIFO 1050 freigegeben sind. Die Ausgabe des ODER-Gatters 1068 ist D_FIFO_RD-Signal, das der Lesesteuerung des FIFOs 1050 zugeführt wird.
  • Die Ausgabe des ODER-Gatters 1068 wird durch einen Puffer 1067 geschaffen, so daß das TC_FIFO_RD-Signal gebildet wird. Das BM_RAM_CYC- und das RAM_READ-Signal werden an die Eingänge eines UND-Gatters 1069 geliefert. Das TB_CYC-Signal wird an einen Eingang eines UND-Gatters 1071 geliefert, dessen anderer Eingang invertiert ist und das RAM_READ-Signal empfängt. Die Ausgänge der UND-Gatter 1069 und 1071 sind die Eingänge für ein ODER-Gatter 1073, dessen Ausgabe das TC_FIFO_WR_Signal ist.
  • Wie oben angemerkt, hat der CTB 104 ein spezielles Übertragungsprotokoll. Zu diesem Zweck ist es wünschenswert, daß eine Statusmaschine verwendet wird, um die Operationen des Busmaster-Kanalcontrollers 200 mit dem CTB 104 zu überwachen und zu steuern. Eine Statusmaschine 1090 (Fig. 18) wird verwendet. Bestimmte Signale werden mit der Busmaster/Übertragungs- Bus-Zustandsmaschine 1090 verwendet. Das erste von ihnen ist das TB_GO-Signal, das durch eine Kanalcontroller- Zustandsmaschine 1300 (Fig. 24) geschaffen wird. Das zweite Signal ist das TB_AF-Signal, das als Ausgabe eines ODER- Gatters mit zwei Eingängen 1094 geschaffen wird. Eine Eingabe in das ODER-Gatter wird durch die Ausgabe eines UND-Gatters mit zwei Eingängen 1096 geliefert, dessen Eingaben das DF_A_EMPTY-Signal und das RAM_READ-Signal sind. Die zweite Eingabe in das ODER-Gatter 1094 wird durch die Ausgabe eines UND-Gatters mit zwei Eingängen 1098 geliefert, dessen Eingaben das DF_A_FULL- und das RAM_WRITE-Signal sind. Somit wird während dem Lesen das TB_AF-Signal geliefert, wenn der FIFO 1050 nahezu leer ist, und während dem Schreiben, wenn er nahezu voll ist. Das TB_F-Signal wird von der Zustandsmaschine 1090 verwendet und als Ausgabe eines ODER-Gatters mit zwei Eingängen 1100 geliefert. Eine Eingabe in das ODER-Gatter 1100 wird durch ein UND-Gatter mit zwei Eingängen 1102 geschaffen, dessen Eingaben das RAM_WRITE-Signal und das DF_FULL-Signal sind. Die zweite Eingabe in das ODER-Gatter 1100 wird durch den Ausgang eines UND-Gatters mit zwei Eingängen 1104 geschaffen, dessen Eingaben das DF_EMPTY- und RAM_READ-Signal sind. Eine zusätzliche Eingabe in die Zustandsmaschine 1090 umfaßt das TB_LW-Signal, das als Ausgabe eines ODER-Gatters mit zwei Eingängen 1106 geliefert wird. Ein Eingang in das ODER-Gatter 1106 wird durch den Ausgang eines UND-Gatters mit zwei Eingängen geschaffen, dessen Eingaben das LAST_DW- und RAM_WRITE-Signal sind. Das LAST_DW- Signal ist eine Anzeige dafür, daß dieses die letzte Übertragung in dem bestimmten Betrieb ist. Der zweite Eingang in das ODER-Gatter 1106 wird durch den Ausgang eines UND-Gatters mit zwei Eingängen 1110 geschaffen, dessen Eingaben das RAM_ READund das L_LAST_DW-Signal sind, welches anzeigt, daß während eines Lesens das letzte Doppelwort übertragen worden ist. Ein weiteres Eingabesignal ist das TB_TC-Signal, das ein Endzählsignal ist und an dem Ausgang eines ODER-Gatters mit zwei Eingängen 1112 geliefert wird. Ein Eingang in das ODER-Gatter 1112 wird durch den Ausgang eines UND-Gatters mit zwei Eingängen 1114 geschaffen, welches das RAM_READ-Signal und das L_LAST_DW-Signal empfängt. Der zweite Eingang in das ODER- Gatter 1112 wird durch den Ausgang eines in UND-Gatters mit zwei Eingängen 1116 geschaffen, dessen Eingaben das RAM_READ- Signal und das FBWC_TFR_TCO-Signal sind, welches eine Anzeige dafür ist, daß dies eine Endzählung einer bestimmten Sektorübertragung ist und die Operationen zwischen Sektoren anzuhalten sind. Drei andere Signale sind Eingaben in die Zustandsmaschine 1090. Diese umfassen das SPEN-Signal, das eine Anzeige dafür ist, daß Siphonoperationen aktiviert sind. Zusätzlich sind das BS_ACK- und SP_ACK-Signal vorgesehen, um eine Bestätigung der Busnebenstelle und einer Siphonnebenstelle anzuzeigen. Die Entwicklung dieser Signale wird untenstehend beschrieben.
  • Der Betrieb der Zustandsmaschine 1090 ist in Fig. 19 gezeigt, wobei drei Ausgänge durch die Zustandsmaschine 1090 geschaffen werden. Die Zustandsmaschine 1090 beginnt mit dem Zustand BMT_IDLE. Der Zustandsmaschinenbetrieb ist in Flußdiagrammformat gezeigt. Lediglich rechteckige Kästen sind Zustände und der gesamte Fluß läuft zu einem Zustand an einer Taktflanke. Die Ausgabeanzeigen und die Entscheidungsblöcke treten während dem Zustand, von dem sie fortfahren, auf. Deshalb beschreibt diese Beschreibung einen Steuerablauf durch die Entscheidungs- und Ausgabeblöcke, es ist allerdings klar, daß die Ausgaben während des Zustands auftreten und die Entscheidungskästen asynchron sind und die kombinatorische Logik definieren, die verwendet wird, um die Zustandsmaschine weiterzubringen. Die Steuerung läuft von dem BMT_IDLE-Zustand zu einer ersten Entscheidung, um den Status des TB_GO-Signals in Block 1120 abzufragen. Falls das TB_GO-Signal nicht aktiv ist, was anzeigt, daß keine Operationen durchgeführt werden können, da der Kanal gesperrt oder angehalten ist, bleibt die Steuerung in dem BMT_IDLE-Zustand. Falls das TB_GO-Signal logisch wahr ist, wird die nächste Enscheidung in einem Block 1122 entwickelt, um zu sehen, ob der FIFO 1050 im Fall eines Lesezugriffs leer ist oder im Fall eines Schreibzugriffs voll ist, so daß keine weiteren Daten übertragen werden sollen. Falls dies der Fall ist, verbleibt die Steuerung in dem BMT_IDLE-Zustand. Falls dies nicht wahr ist, d.h., daß Daten in dem FIFO verfügbar sind, wird eine dritte Bestimmung durchgeführt, ob eine Siphonnebenstelleneinrichtung in Block 1124 freigegeben ist. Falls dies so ist, werden das TB_DRQ_O- und SP_DRQ_O-Signal in Block 1126 aktiv gemacht, so daß die Anfrage auf dem CTB 104 vorliegt. Die Steuerung läuft in diesem Fall dann von dem BMT_IDLE-Zustand in den B_AND_S_SLV- Zustand, der anzeigt, daß die Bus- und Siphonnebenstelle vorhanden sind und verwendet werden. Falls in Block 1124 bestimmt worden ist, daß lediglich die Busnebenstelle verwendet wird, dann wird in Block 1128 das TB_DRQ_O-Signal aktiviert und die Steuerung läuft von dem BMT_IDLE-Zustand in den BSLV_ONLY-Zustand.
  • An der nächsten Flanke des SYSCLK- oder TCLK-Signals schreitet die Zustandsmaschine 1090 von dem BSLV_ONLY-Zustand in den nächsten Zustand. Die erste Entscheidung wird in Block 1130 dahingehend durchgeführt, ob das TB_GO-Signal aktiv ist. Falls nicht, kehrt die Steuerung von dem BSLV_ONLY-Zustand in den BMT_IDEL-Zustand. Falls es aktiv ist, dann wird das BS_ACK- oder Busnebenstellen-Bestätigungssignal überwacht. Falls es in dem Block 1132 nicht aktiv ist, kehrt die Steuerung zu Block 1128 zurück und die Steuerung verbleibt in dem BSLV_ONLY-Zustand. Falls die Busnebenstelle eine Bestätigung ausgegeben hat, wird in Block 1134 eine Bestimmung durchgeführt. Falls das TB_LW-Signal, welches anzeigt, daß dies das letzte Datenwort, das übertragen werden soll, ist, logisch wahr ist, dann geht die Steuerung von dem BSLV_ONLY-Zustand in den TB_DONE-Zustand. Falls nicht, wird eine Bestimmung in Block 1136 dahingehend ausgeführt, ob im Fall eines Schreibens der FIFO 1050 nahezu voll ist oder im Fall eines Lesens nahezu leer ist durch Überwachen des TB_AS-Signals. Falls er nahezu voll ist, geht die Steuerung von dem BSLV_ONLY-Zustand in den BM_IDLE-Zustand. Falls sie nicht nahezu voll ist, verbleibt die Steuerung in dem BSLV_ONLY-Zustand, wobei das TB_DRQ_O-Signal logisch hochpegelig bleibt, um anzuzeigen, daß weitere Daten vorhanden sind.
  • Die Steuerung läuft von dem TB_DONE-Zustand in den BMT_IDLE- Zustand, wobei ein TB_DONE-Signal während des TB_DONE- Zustands gesetzt wird. Von dem B_AND_S_SLV-Zustand (Fig. 20), das anzeigt, daß beide Nebenstellen betreibbar sind, fährt die Steuerung, falls das TB_GO-Signal nicht aktiv ist, wie in Block 1140 bestimmt, in den BMT_IDLE-Zustand fort. Falls es aktiv ist, wird in Block 1142 eine Bestimmung dahingehend durchgeführt, ob die Busnebenstelle geantwortet hat. Falls nicht, wird in Block 1144 eine Bestimmung dahingehend ausgeführt, ob die Siphonnebenstelle geantwortet hat. Falls nicht, verbleibt das Anforderungssignal in Block 1146 und die Steuerung verbleibt in dem B_AND_S_SLV_Zustand. Falls zu diesem Zeitpunkt in Block 1144 bestimmt worden ist, daß die Siphonnebenstelle geantwortet hat, verbleibt lediglich das TB_DRQ_O-Signal bei der Busnebenstelle in Block 1148 und die Steuerung geht zu dem WAIT_BSLV-Zustand über, um zu warten, bis die Busnebenstelle geantwortet hat, da nun die Siphonnebenstelle geantwortet hat. Während des WAIT_BSLV-Zustands wird eine Bestimmung in Block 1150 dahingehend durchgeführt, ob das TB_GO-Signal noch vorhanden ist. Falls nicht, kehrt die Steuerung zu dem BMT_IDLE-Zustand zurück. Falls doch, wird eine Bestimmung im Block 1152 dahingehend ausgeführt, ob das BS_ACK-Signal aktiv ist, was anzeigt, daß die Busnebenstelle geantwortet hat. Falls nicht, kehrt die Steuerung durch Block 1148 zurück und verbleibt in dem WAIT_BSLV- Zustand. Falls die Busnebenstelle geantwortet hat, wird in Block 1154 eine Bestimmung durchgeführt, um zu bestimmen, ob dies der letztendliche Wert, der übertragen werden soll, ist. Falls so schreitet die Steuerung von dem WAIT_BSLV-Zustand in den TB_DONE-Zustand weiter. Falls nicht, wird in Block 1156 ein Bestimmung dahingehend durchgeführt, ob der FIFO 1050 nahezu voll/nahezu leer, wie zweckmäßig, ist. Falls so, schreitet die Steuerung zu dem BMT_IDLE-Zustand fort und falls nicht, kehrt die Steuerung durch Block 1146 in den B_AND_S_SLV-Zustand zurück, um auf die nächste vollständige Übertragung zu warten.
  • Falls in dem Block 1142 bestimmt worden ist, daß die Busnebenstelle geantwortet hat, dann wird in Block 1158 eine Bestimmung dahingehend ausgeführt, ob die Siphonnebenstelle eine Bestätigung ausgegeben hat. Falls so, wird in Block 1154 eine Bestimmung dahingehend durchgeführt, ob der letztendliche Wert übertragen worden ist, und die Entscheidungen laufen fort wie zuvor. Falls die Siphonnebenstelle nicht geantwortet hat, verbleibt ihr Anforderungssignal in dem Block 1160 und die Steuerung fährt in den WAIT_SSLV-Zustand fort, um auf eine Antwort der Siphonnebenstelle zu warten. Entscheidungen, um den WAIT_SSLV-Zustand zu verlassen, umfassen ein Bestimmen dahingehend, ob das TB_GO-Signal in Block 1162 vorhanden ist. Falls nicht, schreitet die Steuerung zu dem BMT_IDLE-Signal fort. Falls sie vorhanden ist, wird in Block 1164 eine Bestimmung dahingehend durchgeführt, ob die Siphonnebenstelle geantwortet hat. Falls nicht, verbleibt die Operation in dem WAIT_SSLV-Zustand, wobei die Siphonnebenstelleanfrage ausgegeben wird. Falls sie eine Bestatigung gegeben hat, wird in Block 1166 bestimmt, ob dies die Endzählung der Übertragung ist. Falls so, schreitet die Steuerung in den TB_DONE-Zustand fort. Falls nicht, wird, wie zuvor, in Block 1156 eine Bestimmung durchgeführt, um zu sehen, ob der FIFO 1050 nahezu voll/leer ist.
  • Somit wird auf diese Weise durch richtiges Ansteuern der Anforderungssignale und der Fertig-Signale der Quittierungsbetrieb, der erforderlich ist, um einen Controller auf dem CTB 104 zu betreiben, durchgeführt.
  • Ähnlich wird eine Zustandsmaschine 1200 (Fig. 21) verwendet, um die Schnittstelle mit dem RAM-Controller 210 zu steuern. Die Zustandsmaschine 1200 ist die BMR-Zustandsmaschine und verwendet verschiedene Signale. Ein Signal RAM_GO wird von der Busmaster-Hauptcontroller-Zustandsmaschine 1300 empfangen, um anzuzeigen, daß der Betrieb der Zustandsmaschine 1200 beginnt. Ähnlich werden Leer-, nahezu Leer-, nahezu Voll- und Voll-Signale, welche mit dem FIFO 1050 und dem FIFO 1051 im Zusammenhang stehen, empfangen. Zusätzlich werden das RAM_WRITE- und das RAM_READ-Signal vorgesehen, um die Richtung der Übertragung anzuzeigen, während das RAM_GNT-Signal von dem RAM-Controller 210 geliefert wird, um anzuzeigen, daß die Zuteilung zum Zugriff des Busmaster-Kanalcontrollers 200 auf den Übertragungspuffer-RAM 118 geführt hat. Verzögerte Versionen des RAM_GNT-Signals werden als RAM_GNT_D2- und das RAM_GNT_D1-Signal bezeichnet, und diese werden dem Eingang eines ODER-Gatters 1202 zugeführt, dessen Ausgänge auch von der Zustandsmaschine 1200 verwendet werden. Die Zustandsmaschine wird mit dem SYSCLK-Signal getaktet. Ein RAM_TC- oder Endzähl-Signal wird durch die Ausgabe eines ODER-Gatters mit zwei Eingängen 1204 geschaffen, dessen Eingänge die Ausgänge eines UND-Gatters mit zwei Eingängen 1206 und die Ausgänge eines UND-Gatters mit zwei Eingängen 1208 sind. Das UND- Gatter 1206 empfängt das L_LAST_DW- und RAM_WRITE-Signal, während das UND-Gatter 1208 das LAST_DW- und RAM_READ-Signal empfängt. Die Ausgaben der Statusmaschine 1200 sind ein Signal, das als BM_RAM_REQ- oder Busmaster-RAM- Anforderungssignal bezeichnet wird, und ein Signal, das als RAM_DONE bezeichnet wird, um anzuzeigen, daß die Übertragung von diesem Abschnitt abgeschlossen ist. Das BM_RAM_REQ-Signal wird als eine Eingabe einem ODER-Gatter mit zwei Eingängen 1210 zugeführt, dessen anderer Eingang die Mikroablaufsteuerung oder das MS_RAM_REQ-Signal ist. Die Ausgabe des ODER- Gatters 1210 ist das RAM_REQ-Signal, das dem RAM-Controller 210 zugeführt wird, um eine Anforderung anzuzeigen.
  • Der Betrieb der BMR-Zustandsmaschine 1200 läuft wie folgt ab. Der Betrieb der Zustandsmaschine 1200 startet in dem BMR_IDLE-Zustand (Fig. 22). Zuerst wird eine Bestimmung in Block 1212 dahingehend durchgeführt, ob das RAM GO-Signal logisch wahr ist. Falls nicht, verbleibt die Steuerung in dem BMR_IDLE-Zustand. Falls RAM_GO logisch wahr ist, wird in Block 1214 eine Bestimmung durch Analysieren des RAM_WRITE- Signals dahingehend durchgeführt, ob dies ein Schreibbetrieb ist. Falls nicht, wird eine zweite Bestimmung in Block 1216 durchgeführt, dahingehend ob das RAM_WRITE-Signal logisch wahr ist. Falls nicht ist dies eine ungeeignete Bedingung und die Steuerung verbleibt in dem BMR_IDLE-Zustand. Falls ein Lesebetrieb angefordert ist, wird die nächste Bestimmung in Block 1218 ausgeführt, um auf der Basis des FULL-Signals zu bestimmen, ob der FIFO 1050 voll ist. Falls so, schreitet die Steuerung von dem BMR_IDLE-Zustand in den RAM_RD_IDLE- Zustand. Falls nicht, dann wird das BM_RAM_REQ-Signal in Block 1220 gesetzt, um ein Erfordernis an Daten anzuzeigen, und die Steuerung fährt zu dem RAM_RD_REQ-Signal fort, um Daten zu erhalten.
  • Falls dies nach Block 1214 ein Schreibbetrieb gewesen ist, wird eine Zwischenfrage in Block 1222 durchgeführt, um zu bestimmen, ob der FIFO 1050 leer ist. Falls so, schreitet die Operation zu dem RAM_WR_IDLE-Zustand fort. Die Steuerung schreitet von diesem Zustand fort, um in Block 1224 zu bestimmen, ob das RAM_GO-Signal immer noch logisch wahr ist. Falls es dies ist, wird der Block 1222 nochmal ausgeführt und die Steuerung fährt in einer Schleife in den RAM_WR_IDLE- Zustand fort. Falls nicht, kehrt die Steuerung zu dem BMR_IDLE-Zustand zurück. Falls der FIFO 1050, wie in Block 1222 bestimmt, nicht leer gewesen ist wird in Block 1226 das BM_RAM_REQ-Signal gesetzt, um anzuzeigen, daß Daten übertragen werden müssen, und die Steuerung fährt zu dem RAM_WRITE_REQ-Zustand fort. Die Steuerung fährt von diesem Zustand fort, um in Block 1228 zu bestimmen, ob das RAM_GO- Signal immer noch logisch wahr ist. Falls nicht, kehrt die Steuerung in den BMR_IDLE-Zustand zurück. Falls so, wird eine Bestimmung in Block 1230 durch Analysieren des RAM_GNT- Signals dahingehend durchgeführt, ob ein Zugriff auf den Übertragungspuffer 118 erhalten worden ist. Falls ein Zugriff nicht gewährt worden ist, kehrt die Steuerung durch Block 1226 zurück und verbleibt in dem RAM_WR_REQ-Zustand. Falls ein Zugriff erhalten worden ist, wird in Block 1232 eine Bestimmung dahingehend durchgeführt, ob dies nicht das letzte Doppelwort ist und ob der FIFO 1050 fast leer ist. Falls so, fährt die Steuerung in dem RAM_WRITE_IDLE-Zustand fort. Falls nicht, wird in Block 1234 eine Bestimmung dahingehend durchgeführt, ob dies nicht das letzte Doppelwort ist und ob der FIFO 1050 nicht nahezu leer ist. Falls die Bedingung ja ist, wird ein zusätzliches Schreiben durch den Block 1226 angefordert und die Steuerung verbleibt in dem RAM_WR_REQ-Zustand. Falls die Bedingung logisch nicht wahr war, ist dies ein Anzeichen, daß das Schreiben in dem Übertragungspuffer-RAM 118 abgeschlossen ist, somit fährt die Operation von dem RAM_WR_REQ-Zustand in den RAM_DONE-Zustand fort.
  • Von dem RAM_DONE-Zustand wird in Block 1236 das RAM_DONE- Signal gesetzt und die Steuerung geht in den BMR_IDLE- Zustand.
  • Von dem RAM_RD_IDLE-Zustand in Block 1238 (Fig. 23) wird das RAM_GO-Signal wiederholt analysiert. Falls es nicht länger vorhanden ist, fährt die Steuerung in den BMR_IDLE-Zustand fort. Falls es noch vorhanden ist, wird das FULL-Signal wiederholt in Block 1240 überwacht und falls es noch logisch wahr ist, verbleibt die Steuerung in dem RAM_RD_IDLE-Zustand. Falls es nicht länger logisch wahr ist, was anzeigt, daß die Daten aus dem FIFO 1050 entfernt worden sind, ist dies eine Anzeige, daß der Betrieb weitergeführt werden kann und weitere Daten aus dem Transferpuffer-RAM 118 erhalten werden können. Zu diesem Zweck wird das BM_RAM_REQ-Signal in Block 1242 aktiv und die Steuerung fährt in dem RAM_RD_REQ-Zustand fort. Aus diesem Zustand wird eine Bestimmung in Block 1244 dahingehend gemacht, ob das RAM_GO-Signal logisch wahr ist. Falls nicht, kehrt die Steuerung zu dem BMR_IDLE-Zustand zurück. Falls es logisch wahr ist, wird in Block 1246 eine Bestimmung dahingehend durchgeführt, ob der Zugriff auf den Übertragungspuffer-RAM 118 gewährt worden ist. Falls nicht, kehrt die Steuerung über den Block 1242 zurück und verbleibt in dem RAM_RD_REQ-Zustand. Falls ein Zugriff gewährt worden ist, wird in dem Block 1248 eine Bestimmung dahingehend durchgeführt, ob dies nicht das letzte Wort ist und ob der FIFO 1050 nahezu voll ist. Falls so, ist dies eine Anzeige, daß die letzten Daten nicht erhalten werden, und die Steuerung fährt in den RAM_RD_IDLE-Zustand fort. Falls logisch nicht wahr, wird dann in Block 1250 eine Bestimmung dahingehend durchgeführt, ob dies nicht das letzte Wort ist und ob der FIFO 1050 nahezu voll ist. Falls dies logisch wahr ist, können weitere Daten erhalten werden und dies wird über den Pfad zu Block 1242 getan. Falls nicht logisch war, ist dies eine Anzeige, daß die Operationen abgeschlossen sind, und die Steuerung fährt in den RAM_DONE-Zustand fort.
  • Wie zuvor bemerkt, wird eine Zustandsmaschine 1300 auch verwendet, um die Hauptoperationen zu steuern, um die anderen verschiedenen Maschinen zu starten und andere Operationen, falls erforderlich, zu steuern, wobei das Behandeln verschiedener Ladeoperationen auf dem CTB 104 eingeschlossen ist. Es gibt verschiedene Eingänge und Ausgänge in die Zustandsmaschine 1300 und sie werden während der Beschreibung ihrer Operation beschrieben.
  • Die Operation der Kanalsteuer-Zustandsmaschine 1300 beginn in dem BM_IDLE-Zustand (Fig. 25). Eine Bestimmung wird in Block 1302 durchgeführt, um zu bestimmen, ob das CH_EN-Signal aktiv ist, was anzeigt, daß Kanalübertragungsoperationen freigegeben sind, und ob das HALT-Signal logisch nicht wahr ist. Falls diese Bedingung nicht erfüllt ist, wird in Block 1304 eine Entscheidung dahingehend getroffen, ob das CH_EN-Signal wahr ist und das HALT-Signal wahr ist. Falls nicht, kehrt die Steuerung in den BM_IDLE-Zustand zurück. Falls es logisch wahr ist, ist diese Bedingung ein Anzeichen, daß die Operationen abgeschlossen sind, und die Steuerung fährt in den BM_DONE-Zustand fort. Falls in Block 1302 bestimmt worden ist, daß die Operationen freigegeben waren und nicht angehalten waren, fährt die Steuerung in den CHK_CH_RDY1-Zustand fort. Die Steuerung fährt von diesem Zustand durch Setzen eines Flush-Bits in Block 1306 fort, um die FIFOs zu löschen, zu Block 1308, wo eine Entscheidung getroffen wird. Die Entscheidung geht dahingehend, ob die Übertragungskette fertig ist oder Mode 1 aktiv ist und die Busnebenstellen- oder Siphonnebenstellen Bereit-Überprüfung durchgeführt worden ist. Falls dies logisch nicht wahr ist, dann wird eine andere Bedingung in Block 1310 bewertet. Diese Bedingung besteht darin, ob Operationen angehalten oder gesperrt sind oder der Kanal nicht bereit ist und nicht Mode 0 oder Mode 1 vorliegt und keine Nebenstelle bereit ist. Falls diese Bedingung nicht wahr ist, verbleibt die Steuerung in dem CHK_CH_RDY1-Zustand, wobei sie darauf wartet, daß die verschiedenen Nebenstelleneinrichtungen anzeigen, daß sie zum Betrieb bereit sind und der Übertragungskanal verfügbar ist. Falls die Bestimmung in Block 1310 ein ja ergeben hat, wurde die Übertragung abgeschlossen und die Steuerung fährt zu dem Zustand BM_DONE fort. Falls ein positives Ergebnis in Block 1308 bestimmt wurde, fährt die Steuerung in den BUS_ARB-Zustand, um eine Zuteilung auf dem CTB 104 zu initiieren. Dieser Zustand wird zu einem ersten Block 1312 hin verlassen, um zu bestimmen, ob der Kanal noch freigegeben und nicht angehalten ist. Falls dies logisch nicht wahr ist, ist dies eine Anzeige eines Fertig-Zustands, und die Steuerung fährt in den BM_DONE-Zustand fort. Falls dies wahr ist, wird eine Bestimmung in Block 1314 durchgeführt, um zu sehen, ob dem Busmaster-Kanalcontroller 200 der Zugriff zum CTB 104 erlaubt worden ist. Falls nicht, verbleibt die Steuerung in dem BUS_ARB-Zustand, bis dies eintritt. Falls der CTB 104 zugeteilt worden ist, fährt die Steuerung von dem BUS_ARB-Zustand in den EN_DRVRS-Zustand, um die Treiber des Busmaster-Kanalcontrollers 200 freizugeben, so daß der CTB 104 angesteuert wird. Eine Bestimmung wird dann in Block 1316 durchgeführt, um zu sehen, ob der Kanal noch verfügbar ist und nicht angehalten ist. Falls nicht, kehrt die Steuerung zu dem BM_DONE-Zustand zurück. Falls so, fährt die Steuerung zu Block 1318 fort, wo eine Entscheidung getroffen wird, ob die Siphonnebenstellenadresse zu diesem Zeitpunkt geladen werden soll oder ob die Busnebenstelle zuerst geladen werden muß. Falls die Busnebenstelle zuerst geladen werden muß, wird in Block 1320 das S_TBDO_D-Signal auf einen Wert von 10 gesetzt und das SET_TBSSE-Signal auf 1 gesetzt, so daß das Freigabesignal auf den CTB 104 geliefert wird. Das Setzen der S_TBDO_D-Bits zeigt an, daß die Busnebenstellenadresse auf den CTB 104 gegeben werden muß. Die Steuerung fährt dann in den BSLV_ALD-Zustand fort. Falls der Zeitpunkt erreicht ist, die Siphonnebenstellenadresse anzusteuern, wird in Block 1322 der S_TBDO_D-Wert auf 01 gesetzt, um eine Nebenstellenadresse anzuzeigen, und das SET_TBSSE- Signal wird aktiviert, um aktive Zyklen auf dem CTB 104 anzuzeigen. Die Steuerung fährt dann in den SSLV_ALD-Zustand fort.
  • In dem BSLV_ALD-Zustand wird eine Bestimmung in Block 1324 (Fig. 26) durchgeführt, um zu bestimmen, ob der Kanal noch freigegeben und nicht angehalten ist. Falls nicht, fährt die Steuerung in den BM_DONE-Zustand fort. Falls dieser verfügbar ist, wird eine Bestimmung in Block 1326 durchgeführt, um zu sehen, ob die Busnebenstelle die Anwesenheit der Adresse bestätigt hat. Falls nicht, verbleibt die Adresse auf den Bus gerichtet und in Block 1328 ist das Freigabesignal noch aktiv, wobei die Steuerung in dem BSLV_ALD-Zustand verbleibt. Falls die Adresse bestätigt worden ist, dann ist es günstig, die Endzählung und die Nebenstellen-spezifischen Daten anzusteuern, so daß in Block 1330 die S_TBDO_D-Signale auf einen Wert von 11 geändert werden, um die Endzählungsinformation geeignet anzusteuern. Die Steuerung geht in den BSLV_CLD- Zustand über. Ein Austritt aus diesem Zustand basiert auf einer Bestimmung in Block 1332 dahingehend, ob der Kanal noch verfügbar und nicht angehalten ist. Falls nicht, kehrt die Steuerung in den BM_DONE-Zustand zurück. Falls so, wird in Block 1334 eine Bestimmung dahingehend durchgeführt, ob die Endzählungsinformation von der Busnebenstelle bestätigt worden ist. Falls nicht, verbleibt die Steuerung durch Block 1330 in dem BSLV_CLD-Zustand. Falls so, wird in Block 1336 eine Bestimmung dahingehend ausgeführt, ob Mode 1 wirksam ist und die Busnebenstelle geantwortet hat. Falls so, geht die Steuerung in den BM_DONE-Zustand über. Falls nicht, wird eine andere Bestimmung in Block 1338 wie folgt ausgeführt: Falls ein anderer Modus als der Mode 1 und ein Siphonbetrieb aktiv ist oder Mode 1 und ein Siphonbetrieb und die Nebenstelle nicht fertig ist oder beide Nebenstellen fertig sind. Falls logisch wahr, ist dies dann eine Anzeige, daß es der geeignete Zeitpunkt ist, die Siphonnebenstellenadresse so zur Verfügung zu stellen, daß die S_TBDO_D-Werte in Block 1340 auf 01 geändert werden, und die Steuerung geht in den SSLV_ALD- Zustand über. Falls nicht, wird in Block 1342 eine Bestimmung durchgeführt, um zu bestimmen, ob er im Mode 2 ist und kein Siphonbetrieb oder Mode 1 und kein Siphonbetrieb und die Busnebenstelle nicht fertig ist. Falls dies logisch wahr ist, geht die Steuerung in den CHK_SLV_RDY-Zustand über. Falls nicht, ist dies ein Anzeichen dafür, daß entweder Mode 3 oder Mode 0 ohne Siphonnebenstellen freigegeben ist, und es ist nun günstig, die Daten zu übertragen. Deshalb geht die Steuerung in den TB_RAM_GO-Zustand über.
  • Aus dem SSLV_ALD-Zustand wird eine Bestimmung in Block 1344 dahingehend durchgeführt, ob der Kanal freigegeben und nicht angehalten ist. Falls logisch nicht wahr, geht die Steuerung in den BM_DONE-Zustand über. Falls es logisch wahr ist, wird dann eine Bestimmung in Block 1346 ausgeführt, um zu sehen, ob die Siphonnebenstelle ihre Adresse bestatigt hat. Falls nicht, verbleibt die Steuerung durch Block 1340 hindurch in dem SSLV_ALD-Zustand. Falls so, dann liegt der Zeitpunkt vor, um die Transferzählung an die Siphonnebenstelle zu übertragen und dies wird dadurch ausgeführt, daß der S_TBDO_D-Wert in Block 1348 auf 11 gesetzt wird, und die Steuerung geht in den SSLV_CLD-Zustand über.
  • In dem SSLV_CLD-Zustand wird eine Bestimmung in Block 1350 (Fig. 27) durchgeführt, um zu bestimmen, ob der Kanal noch verfügbar und nicht angehalten ist. Falls nicht, geht die Steuerung in den BM_DONE-Zustand über. Falls so, wird eine Bestimmung in Block 1352 dahingehend ausgeführt, ob die Siphonnebenstelle mit einem Bestätigungsignal geantwortet hat. Falls nicht, muß der Buscontroller auf die Bestätigung warten, so daß das S_TBDO_D-Signal in Block 1354 bei 11 verbleibt, und die Steuerung in dem SSLV_CLD-Zustand verbleibt. Falls es bestätigt worden ist, wird eine Entscheidung in Block 1356 dahingehend getroffen, ob eine Mode 1-Operation aktiv ist und sowohl die Busnebenstelle als auch die Siphonnebenstelle mit Fertig geantwortet haben. Falls so, geht die Steuerung in den BM_DONE-Zustand über. Falls nicht, wird eine Bestimmung in Block 1358 dahingehend getroffen, ob Mode 2 aktiv ist oder ob Mode 1 aktiv ist und keiner geantwortet hat. Falls nicht, dann ist dies ein Mode 0- oder Mode 3-Betrieb, und die Steuerung geht in den TB_RAM_GO-Zustand über, da es Zeit ist, die Datenübertragung zu starten. Falls die Bedingung ja ist, geht die Steuerung in den CHK_SLV_RDY-Zustand über.
  • Die Steuerung fährt von diesem Zustand durch eine Bestimmung in Block 1360 dahingehend fort, ob der Kanal freigegeben ist, nicht angehalten ist und kein Bus-Fehler aufgetreten ist. Falls diese Bedingung nicht wahr ist, dann wird in Block 1362 eine Bestimmung durchgeführt, ob ein Bus-Fehler aufgetreten ist. Falls so, geht die Steuerung in den BUS_ERROR-Zustand über. Falls nicht, geht die Steuerung in den BM_DONE-Zustand über. Falls die Bedingung in Block 1360 wahr war, d.h. eine Übertragung normal aufgetreten ist, wird in Block 1364 eine Bestimmung dahingehend durchgeführt, ob die Busnebenstelle ein Bereit-Zustand angezeigt hat. Falls so, ist es zwqeckmäßig, mit der Datenübertragung zu beginnen, und die Steuerung geht in den TB_RAM_GO-Zustand über. Falls nicht, geht die Steuerung zu Block 1366, um zu bestimmen, ob das READY_DNE- EQ-Signal ausgegeben ist. Falls so, geht die Steuerung in den BM_DONE-Zustand über, da die Operationen abgeschlossen worden sind. Falls nicht, wird der RDY_DNE_ONT_ENB-Wert in Block 1368 auf 1 gesetzt, und die Steuerung geht in den CHK_SLV_RDY-Zustand mit einem freigegebenen Taktgeber über, so daß der RDY_DNE_EQ-Wert, falls die Nebenstelle in einer geeigneten Zeitdauer nicht mit Bereit antwortet, wegen dem Zeitablauf eine 1 wird, und die Operationen abbrechen werden.
  • Aus dem TE_RAM_GO-Zustand wird in Block 1370 (Fig. 28) das TB_GO- und das RAM_GO-Signal so gesetzt, daß sowohl die Übertragungs- als auch die RAM-Steuer-Zustandsmaschine 1090 und 1200 aktiviert werden, um eine Übertragung von Daten zwischen dem Übertragungspuffer-RAM 118 und dem CTB 104 zu ermöglichen. In Block 1372 wird eine Bestimmung dahingehend durchgeführt, ob der Kanal noch verfügbar, nicht angehalten ist und keinen Bus-Fehler aufweist. Falls diese Aussage nicht wahr ist, dann wird in Block 1374 eine Bestimmung dahingehend durchgeführt, ob ein Bus-Fehler aufgetreten ist. Falls so, geht die Steuerung in den BUS_ERROR-Zustand über. Falls nicht, geht die Steuerung in den BM_DONE-Zustand über. Falls die Operationen normal ablaufen, dann wird in Block 1376 das TB_DONE-Signal bewertet, um zu bestimmen, ob die Übertragungs-Bus-Zustandsmaschine 1090 ihren Betrieb abgeschlossen hat. Falls nicht, wird in Block 1378 eine Bestimmung dahingehend durchgeführt, ob der Übertragungspuffer-RAM 118 seinen Betrieb abgeschlossen hat. Falls nicht, verbleibt die Steuerung in dem TB_RAM_GO-Zustand. Falls der Übertragungs-Bus seinen Betrieb abgeschlossen hat, wird eine Bestimmung in Block 1380 dahingehend ausgeführt, ob die Operationen des Transferpuffer-RAMs 118 abgeschlossen worden sind. Falls so, geht die Steuerung in den BM_INC_DEC-Zustand über. Falls nicht, geht die Steuerung in den RAM_GO-Zustand über, wobei sie darauf wartet, daß der Übertragungspuffer-RAM 118 abschließt. In diesem Zustand verbleibt das RAM_GO-Signal 1, während das TB_GO-Signal in Block 1382 zurückgenommen wird. Eine Bestimmung wird in Block 1384 dahingehend ausgeführt, ob der Kanal freigegeben, nicht angehalten und nicht in einem Fehlerzustand ist. Falls diese Bedingung nicht wahr ist, geht der Betrieb zur Bestimmung von Block 1374 über. Falls logisch war, wird in Block 1386 eine Bestimmung dahingehend ausgeführt, ob die RAM-Übertragung abgeschlossen worden ist. Falls nicht, kehrt die Steuerung in den RAM_GO-Zustand zurück und läuft in Zyklen durch diese Schleife. Falls so, geht die Steuerung in den BM_INC_DEC-Zustand über.
  • Falls der RAM seine Operationen in Block 1378 abgeschlossen hat, würde dieser anzeigen, daß der Übertragungs-Bus noch seine Operationen abschließen muß, und somit geht die Steuerung in den TB_GO-Zustand über. Das RB_GO-Signal verbleibt in Block 1388, wobei das RAM_GO-Signal zurückgenommen wird. In Block 1390 wird die Kanalfreigabe-Nichtanhalte-und- Nichtfehler-Bedingung bestimmt. Falls logisch nicht wahr, fährt die Steuerung durch den Pfad von Block 1374 fort. Falls die Operationen normal ablaufen, dann wird in Block 1392 eine Bestimmung durchgeführt, ob der CTB 104 seine Operationen abgeschlossen hat. Falls nicht, verbleibt die Steuerung in dem Zustand TB_GO. Falls so, geht die Steuerung in den Zustand BM_INC_DEC über.
  • In dem Zustand BM_INC_DEC schreitet die Steuerung so fort, daß der Wert des INC_DEC-Signals in Block 1394 (Fig. 29) gesetzt wird, um die relative FIFO-Überprüfungslogik einzustellen, die verwendet wird, wenn Plattenübertragungskanäle gleichzeitig in Betrieb sind, und um zu ermöglichen, daß der Stripeblockzähler 1030 zählt, und wiederum wird in Block 1396 zwischengefragt, ob der Status der Übertragungsoperation zufriedenstellend ist. Die Steuerung geht dann, falls logisch nicht wahr, in den Block 1398 über, um zu bestimmen, ob ein Fehler aufgetreten ist. Falls so, geht die Steuerung in den BUS_ERROR-Zustand über. Falls kein Fehler aufgetreten ist, geht die Steuerung in den BM_DONE-Zustand über. Falls Operationen normal abgelaufen sind, geht die Steuerung von dem BM_INC_DEC-Zustand in den STALL-Zustand über, um dem FIFO 1050 Zeit zu geben, damit sein Status gültig wird. Von dem STALL-Zustand in Block 1400 wird das FLUSH-Signal gesetzt, um den FIFO 1050 und den FIFO 1051 zu löschen. Es ist Zeit, einen neuen Adressblock zu laden, und falls ein Offset-Betrieb auftritt und eine Endzählung erreicht worden ist, wird der Wiederlade- oder RLD_SBC-Wert so gesetzt, daß eine Addieroperation in dem Nebenstellenspeicher-Adresszähler 1038 auftritt und die Stripegröße dem Stripeblockzähler 1030 zugeführt wird. In Block 1404 ist, falls die Operationen normal ablaufen und der Bus zugewiesen ist, und nicht am Ende sind, und der Zeitpunkt noch nicht eingetreten ist, einen Offset durchzuführen, und eine Endzählung noch nicht erreicht worden ist, und es noch nicht Zeit ist, basierend auf einem Zeitablauf eines Bus-Verwendungstaktgebers zu halten, dies eine Anzeige, daß die Übertragung abgeschlosen worden ist, und somit geht die Steuerung durch Block 1398. Falls dies wahr ist, geht die Steuerung in den CHK_CH_RDY2-Zustand über.
  • In Block 1406 wird aus dem CHK_CH_RDY2-Zustand eine Bestimmung dahingehend durchgeführt, ob der Kanal freigegeben, nicht angehalten, bereit ist und kein Fehler aufgetreten ist. Falls nicht, geht die Steuerung zu Block 1398 weiter. Falls so, wird in Block 1408 eine Bestimmung dahingehend durchgeführt, ob eine Mode 1- oder Mode 2-Operation aufgetreten ist. Falls eines der beiden wahr ist, dann geht die Steuerung in den CHK_SLV_RDY-Zustand über, um zu warten, bis die Nebenstelle tatsächlich abgeschlossen haben und ein Fertig angezeigt haben. Falls nicht, geht die Steuerung in den TB_RAM_GO-Zustand über.
  • Wenn der BM_DONE-Zustand aktiv ist, wird eine Bestimmung in Block 1410 dahingehend ausgeführt, ob es aufgrund des Modus geeignet ist, nach einer Nebenstelle zu suchen, die fertig ist. Falls so, geht die Steuerung in den CHK_SLV_DNE-Zustand über. Falls nicht, wird in Block 1412, falls ein Fehler aufgetreten ist, das SET_BUS_ERR-Signal gesetzt und das RST_TB_SSE-Signal wird zurückgesetzt, so daß der CTB 104 deselektiert wird. Die Steuerung geht dann in den DESSEL_SLV- Zustand über. In diesem Modus, in dem es zweckmäßig ist, zu überprüfen, ob die Nebenstelle in dem CHK_SLV_DONE-Zustand fertiggeworden ist, wird die Operation in Block 1414 (Fig. 30) bewertet, um zu bestimmen, ob ein Fehler aufgetreten ist, falls der Kanal freigegeben ist und er nicht angehalten war. Falls nicht, setzt die Steuerung in Block 1416 einen Bus- Fehlerwert, falls einer aufgetreten ist, und zeigt an, daß die Freigabe entwickelt werden sollte, und die Steuerung geht in den DESSEL_SLV-Zustand über. Falls wahr, daß Operationen normal ablaufen, bestimmt die Steuerung in Block 1418, ob eine Mode 1-Operation ausgewählt ist. Falls nicht, wird in Block 1420 eine Bestimmung dahingehend durchgeführt, ob eine Nebenstelle fertig war. Falls so, läuft die Operation durch Block 1416. Falls nicht, verbleibt die Operation in dem CHK_SLV_DNE-Zustand. Falls eine Mode 1-Operation abläuft, wie in Block 1418 bestimmt, wird in Block 1422 eine Bestimmung dahingehend durchgeführt, ob das SL_DONE-Signal wahr ist. Falls so, geht die Steuerung in den RST_CK_DN-Zustand über. Falls nicht, wird in Block 1424 eine Bestimmung durchgeführt, um zu bestimmen, ob ein Zeitablauf eingetreten ist. Falls nicht, wird der Zähler in Block 1426 freigegeben und die Steuerung läuft in einer Schleife beim CHK_SLV_DNE-Zustand. Falls dies in Block 1424 so ist, dann wird eine Bestimmung in Block 1428 dahingehend durchgeführt, ob das SET_BS_SP-Signal wahr ist. Dies ist eine Anzeige, daß weder die Busnebenstelle noch die Siphonnebenstelle fertiggewesen sind. Falls so, geht die Steuerung in dem SET_BS_SP-Zustand über. Falls nicht, wird in Block 1430 eine Bestimmung dahingehend durchgeführt, ob das SET_BS-Signal wahr ist. Dies zeigt an, daß die Siphonnebenstelle abgeschlossen hat, aber die Busnebenstelle nicht fertig ist. Falls so, geht die Steuerung in den SET_BS- Zustand über. Falls nicht, geht die Steuerung in den SET SP- Zustand über.
  • Falls ein Fehler aufgetreten ist und die Steuerung in den BUS_ERR-Zustand übergegangen ist, dann wird in Block 1432 das SET_BUS_ERR-Signal gesetzt, und die Steuerung geht in den BM_DONE-Zustand über.
  • Der RST_CK_DN-, der SET_BS_SF-, der SET_BS- und der SET_SP- Zustand (Fig. 31) sind alle Fehlerzustände, so daß die Busse durch Setzen und Löschen der geeigneten Variablen freigegeben werden, und der Bus-Fehler in den Blocks 1434, 1436, 1438 und 1440 gesetzt wird und die Steuerung geht in den DESEL_SLV- Block über. Eine Bestimmung wird dann in Block 1442 durchgeführt, ob ein Bus-Fehler aufgetreten ist, und ob somit das SET_BUS_ERR-Signal gesetzt ist. Die Steuerung geht dann in den RELES_BUS-Zustand über. Die Steuerung geht dann zu dem Block 1444, wo das RLD_BU-Signal gesetzt wird, so daß der Bus-Verwendungstaktgeber wieder mit einem programmierbaren Wert geladen wird, so daß der eine Buscontroller den CTB 104 nicht in Beschlag nimmt, und dann zu Block 1446, wo eine Bedingung überprüft wird, um zu sehen, daß der Kanal freigegeben ist, ein Arbeiten-Signal aufweist und noch nicht fertig ist. Falls so, wird eine weitere Bedingung in Block 1448 überprüft. Diese Bedingung ist im wesentlichen eine Überprüfung, ob der FIFO 1050 Daten enthält, falls er nicht im Mode 1 ist, oder falls er im Mode 1 ist und nicht gerade bestimmt worden ist, daß er fertig ist, wird der FIFO 1050 auf Daten überprüft. Falls die Bedingung in Block 1446 falsch war, falls ein Fehler wahr ist, dann wird in Block 1450 das SET_BUS_ERR-Signal gesetzt. Falls aus Block 1450 oder aus Block 1448 diese Bedingung logisch nicht wahr war, geht die Steuerung in den Zustand BM_DONE über und von dort in den Block 1452, wo das CH_DONE-Signal gesetzt wird, um anzuzeigen, daß eine Kanalübertragung fertig ist, so daß dem lokalen Prozessor 106 ein Interrupt gegeben wird. Die Steuerung geht dann in den BM_IDLE-Zustand über, um auf die nächste Übertragungsoperation zu warten.
  • Zusätzlich werden verschiedene Signale durch die Controller- Zustandsmaschine 1300 gegeben, wenn bestimmte Zustände aktiv sind. Das TB_ALD_O-Signal an den CTB 104 ist aktiv während des BSLV_ALD- und BSLV-CLD-Zustands. Das SP_ALD_O-Signal zu dem CTB 104 zum Laden der Siphonnebenstelle ist aktiv während des SSLV_ALD- und SSLV_CLD-Zustands. Das TB_MDNE_0-Signal zum Anzeigen eines Controller-Fertig-Zustandes auf dem CTB 104 wird während des BM_DONE-Zustands geliefert. Das BUS_REQ- Signal zum Erhalten des CTB 104 ist mit Ausnahme der BM_IDLE-, CHK_CH_RDY1-, RELES_BUS- und BM_DONE-Zustände während aller Zustände aktiv. Das EN_TB_DRVRS-Signal ist in allen Zuständen mit der Ausnahme der BM_IDLE-, CHK_CH_RDY1-, RELES_BUS- und BM_DONE-Zustands und des BUS_ARB-Zustände aktiv.
  • Wie oben angedeutet, verwendet der CDB auch ein Steuerregister. Dieses Steuerregister ist in Fig. 32 als Register 1500 gezeigt. Es wird zu einem geeigneten Zeitpunkt in der CDB- Ladesequenz geladen. Die RAM_WRITE- oder WRR-Ausgabe von dem Steuerregister 1500 wird an einen Inverter 1502 geliefert, um das RAM_READ-Signal zu liefern, und an einen Inverter 1504, um das TB_DIR_O-Signal zu liefern. Zusätzlich wird das RAM_WRITE-Signal an einen Eingang eines UND-Gatters mit zwei Eingängen 1506 gegeben, wobei der andere Eingang das EM_RAM_REQ-Signal empfängt. Ein UND-Gatter mit zwei Eingängen 1508 empfängt das MS_RAM_REQ-Signal und das MS_RAM_DIR-Signal von der Mikroablaufsteuerung. Die Ausgaben der UND-Gatter 1506 und 1508 werden den Eingängen eines ODER-Gates 1510 zugeführt, so daß ein RAM_DIR-Signal geschaffen wird.
  • Wie zuvor angemerkt, muß das CH_EN-Signal oder Kanalfreigabesignal entwickelt werden. Dies wird durch die Ausgabe eines Flip-Flops vom D-Typ 1512 geschaffen. Der Flip-Flop 1512 wird durch das SYSCLK-Signal getaktet und empfängt an seinem D- Eingang den Ausgang eines UND-Gatters mit zwei Eingängen 1514. Eine Eingabe in das UND-Gatter wird invertiert und empfängt das CH_DONE-Signal von der Controller-Zustandsmaschine 1300, um den Freigabezustand zu beenden. Die zweite Eingabe des UND-Gatters 1514 wird durch den Ausgang eines ODER- Gatters mit zwei Eingängen 1516 geschaffen. Der Eingang des ODER-Gatters 1516 empfängt das CH_EN-Signal und der zweite Eingang empfängt das CDB-Steuerregisterladesignal, um anzuzeigen, daß das Steuerregister des CDB gerade geladen worden ist. Wie oben angedeutet, wird die Steuerregisterinformation in dem letzten Doppelwort des CDB zur Verfügung gestellt, so daß es eine Anzeige ist, daß die gesamte Inforamtion in die geeigneten Register geladen worden ist und die Kette oder der Kanal freigegeben werden kann.
  • Verschiedene Signale werden von verschiedenen Zustandsmaschinen verwendet. Das BUS_REQ-Signal wird an einen Eingang eines UND-Gatters mit zwei Eingängen 1520 (Fig. 33) geliefert, dessen zweiter Eingang invertiert ist und das BBKT-Signal empfängt. Die Ausgabe des UND-Gatters 1520 ist das BREQ- oder Bus-Anforderungs-Signal. Das BBKT-Signal ist eine Anzeige, daß diese bestimmte Übertragung von dem Übertragungspuffer- RAM 118 in Richtung zum Bit-Sammelfeld oder nirgendwohin führt. Dies ist nützlich dahingehend, daß eine einfache Kette von CDBs aufgebaut werden kann, so daß der lokale Prozessor 106 ein sequentielles Lesen eines vollen Stripes oder einer langen Sequenz von Daten aus der bestimmten Platte anweisen kann, und verschiedene individuelle Sektoren oder Blöcke in dieser fortlaufenden Kette weggelassen werden können. Der erste CDB in der Kette überträgt tatsächlich die Daten, in dem nächsten CDB wird das BBKT-Signal so gesetzt, daß dieser Block ignoriert wird. Dann wird ein anderes CDB, wobei das BBKT-Signal negiert ist, verwendet, um den nächsten Abschnitt der Daten zu übertragen. Die Verwendung dieses einfachen Mechanismus für den CDB-Betrieb ermöglicht, daß gerade die erwünschten Bereiche ausgewählt werden, so daß der Transferpuffer-RAM 118 einfach als gelöscht angenommen werden kann.
  • Das BGNT-Signal wird in einem ODER-Gatter mit zwei Eingängen 1522 mit dem BBKT-Signal kombiniert, um das BUS_GNT-Signal zu erzeugen, so daß der Anschein geweckt wird, daß das CTB 104 während der BBKT-Operationen immer verfügbar ist. Das BBKT- Signal wird in einem ODER-Gatter mit zwei Eingängen 1524 kombiniert, wobei der andere Eingang invertiert ist und das Freigabetreibersignal oder das EN_TB_DRVS-Signal von der Zustandsmaschine 1300 empfängt und das D_TB_MDRVRS-Signal erzeugt oder das Controller-Treibersignal sperrt. Auf diese Weise wird die tatsächliche Treiberschaltung während der Bit- Sammelfeldoperat ion gesperrt
  • Das BBKT-Signal wird an den invertierten Eingang eines UND- Gatters mit zwei Eingängen 1526 geliefert, wobei der andere Eingang das TB_DAK_I- oder das Bestätigungssignal von dem CTB 104 empfängt. Ähnlich wird das BBKT-Signal an einen Eingang eines UND-Gatters mit zwei Eingängen 1528 geliefert, dessen anderer Eingang den Ausgang eines ODER-Gatters mit zwei Eingängen 1530 empfängt. Die zwei Eingaben in das ODER-Gatter 1530 sind das TB_DRQ_O- und das TB_ALD_O-Signal, um die verschiedenen Befehlsphasen auf dem CTB 104 anzuzeigen, in denen Daten durch den Busmaster-Controller 200 zur Verfügung gestellt werden. Die Ausgaben der UND-Gatter 1526 und 1528 werden als Eingänge in ein ODER-Gatter 1532 gegeben, dessen Ausgabe das BS_ACK-Signal ist, um eine Busnebenstellenbestätigung anzuzeigen. Somit wird eine Bestätigung für die Bit- Sammelfeld-Operationen simuliert. Das BBKT-Signal wird außerdem als eine Eingabe in ein ODER-Gatter mit zwei Eingängen 1534 geliefert, dessen andere Eingabe das TB_SDN_I-Signal ist, um anzuzeigen, daß die Nebenstelle fertig ist. Die Ausgabe ist das BS_SDN-Signal.
  • Das BBKT-Signal wird auch mit der Siphon-Master-Logik verwendet, um ähnliche Signale zu erzeugen. Auf diese Weise werden das SP_ACK- und SP_SDN-Signal aus den verschiedenen Fertigzustands-Abfrage- und Bestatigungs-Signalen erzeugt und während der Bit-Sammelfeld-Operationen immer angesteuert.
  • Eine Mikroablaufsteuerung wird verwendet, um die CDB- Information in die geeigneten Register zu laden. Die Mikroablaufsteuerung basiert auf einem Zähler, der seine Ausgabe an einen Decodierer liefert, so daß der Decodierer acht spezielle Operationen anzeigt. Die acht individuellen binären Zustände sind in mnemonischer Form in Fig. 33 decodiert.
  • Ein Auswahlfeld ist ebenfalls in dem CDB vorgesehen. Das Auswahiregister 1550 (Fig. 34) wird zu dem geeigneten Zeitpunkt geladen und liefert die SP_ID< 2..0> - und BS_ID< 2..0> -Signale, um die IDS der Siphon- und Busnebenstelle anzuzeigen. Zusätzlich sind fünf Bit vorgesehen, um anzuzeigen, ob ein spezieller Übertragungskanal für die gemeinsamen Operationen verwendet werden soll.
  • Es ist außerdem erforderlich, daß bestimmte Zustandsinformation geliefert wird. Dies umfaßt einen Fehler-, Halt- und Fertig-Zustand. Das BUS_ERR-Signal, wie es von der Controller-Zustandsmaschine 1300 erzeugt wird, wird als eine Eingabe in ein ODER-Gatter mit zwei Eingängen 1552 geliefert. Die Ausgabe des ODER-Gatters 1552 wird an den Eingang eines Flip- Flops vom D-Typ 1554 geliefert, der durch das SYSCLK-Signal getaktet ist. Die Ausgabe des Flip-Flop 1554 ist das BM_BUSERR-Signal, welches ein Signal in dem Statusregister ist und außerdem an den zweiten Eingang des ODER-Gatters 1552 geliefert wird. Das CH_DONE-Signal wird an einen Eingang eines ODER-Gatters mit zwei Eingängen 1556 geliefert, wobei der Ausgang an den Eingang eines Flip-Flops vom D-Typ 1558 geliefert wird. Das Flip-Flop 1558 wird durch das SYSCLK-Signal getaktet und seine Ausgabe ist das BM_HALTED-Signal. Dieses Signal wird außerdem an den zweiten Eingang des ODER-Gatters 1556 geliefert. Die Flip-Flops 1554 und 1558 werden durch die Ausgabe eines ODER-Gatters mit zwei Eingängen 1560 zurückgesetzt, dessen Eingaben das SYSRST- oder System-Rücksetzsignal und das MS_LD_CTR_SEL-Signal sind, so daß, wenn ein neues CDB geladen wird, diese Werte gelöscht und nicht übertragen werden.
  • Die Bestimmung, wann eine bestimmte Busmaster-Übertragung abgeschlossen ist, wird signifikant komplizierter. Das BM_DONE- Signal wird durch den Ausgang eines Flip-Flops vom D-Typ 1562 geliefert, das die Ausgabe des ODER-Gatters 1560 an seinem ersten Rücksetzeingang empfängt, und durch das SYSCLK-Signal getaktet ist. Der D-Eingang des Flip-Flops 1562 wird durch die Ausgabe eines ODER-Gatters mit drei Eingängen 1564 geliefert, von denen ein Eingang das BM_DONE-Signal empfängt. Die zweite Eingabe in das ODER-Gatter 1564 wird durch die Ausgabe eines UND-Gatters mit zwei Eingängen 1566 geliefert, dessen Eingaben das HALT- und CH_DONE-Signal sind. Die letzte Eingabe in das ODER-Gatter 1564 wird durch die Ausgabe eines UND- Gatters mit drei Eingängen 1568 geliefert. Zwei der Eingaben in das UND-Gatter 1568 sind das TFR_TC_O- und das CH_DONE- Signal, während der dritte Eingang invertiert ist und die Ausgabe eines ODER-Gatters mit zwei Eingängen 1570 empfängt. Eine Eingabe in das ODER-Gatter 1570 wird durch die Ausgabe eines Flip-Flops vom D-Typ 1572 geliefert und zeigt an, daß eine Statusüberprüfung der Busnebenstelle abgeschlossen worden ist. Dieses Flip-Flop 1572 wird durch das SYSCLK-Signal getaktet und mit der Mikroablaufsteuerung zurückgesetzt. Der Eingang vom D-Typ des Flip-Flops 1572 empfängt die Ausgabe eines UND-Gatters mit zwei Eingängen 1574. Ein Eingang in das UND-Gatter 1574 wird invertiert und empfängt das RST_BS_CK_DONE-Signal von der Zustandsmaschine 1300, während die zweite Eingabe durch die Ausgabe eines ODER-Gatters mit drei Eingängen 1576 geliefert wird, von denen ein Eingang der Ausgang des Flip-Flops 1572 ist. Die zweite Eingabe in das ODER-Gatter 1576 ist das SET_BS_CK_DNE-Signal von der Zustandsmaschine 1300, während die dritte Eingabe durch die Ausgabe eines UND-Gatters mit zwei Eingängen 1578 geliefert wird. Die Eingaben des UND-Gatters 1578 schaffen eine logisch wahre Ausgabe, falls auf das Laden des CDB hin angezeigt worden ist, daß diese bestimmte Busnebenstelle einen Fertig- Zustand angezeigt hat, und daß dieser Wert zuvor gelatcht worden ist. Eine ähnliche Logik wird in Kombination mit einem Flip-Flop vom D-Typ 1580 verwendet, welches seine Ausgabe an das ODER-Gatter 1570 liefert, um eine ähnliche Überprüfung der Nebenstelle in Siphonform für eine Fertig-Anzeige zu entwickeln.
  • Da die CDBs aus einer Reihe von sequentiellen Orten bestehen, muß ein Adresszähler verwendet werden. Dieser Adresszähler ist in Fig. 35 als 16-Bit-Zähler 1590 gezeigt. Der Zähler wird durch das SYSCLK-Signal getaktet und empfängt als Freigabe-Eingabe die Ausgabe eines UND-Gatters mit zwei Eingängen 1592, dessen Eingaben das MS_RAM_REQ- und RAM_GRANT-Signal sind, um anzuzeigen, daß die Mikroablaufsteuerung einen RAM- Betrieb anfordert und einen Zugriff auf den Übertragungspufferspeicher 118 hat. Das Ladesignal für den Zähler 1590 wird durch das WR_CDB- und das RD_CDB-Signal geliefert, die einem ODER-Gatter mit zwei Eingängen 1594 zugeführt werden, um anzuzeigen, daß das CDB gelesen oder geschrieben wird. Die Dateneingabe in den Zähler 1590 wird durch den Ausgang eines Sechskanal-16-Bit-Multiplexers 1596 geliefert, dessen Eingänge die verschiedenen Kettenzeiger bzw. Kettenpointer sind und die Zeiger bzw. Pointer mit allgemeinem Zweck, wie zuvor definiert. Eine Auswahl basiert auf dem bestimmten CDB-Block, der geladen oder gespeichert werden soll.
  • Eine Sequenzablauffolge ist erforderlich, um die CDBs aus dem Übertragungspuffer-RAM 118 zu lesen und in ihn zu schreiben. Deshalb sind Zähler erforderlich, sowie eine Zustandsmaschine und eine Zuteilungseinheit. Die Zählerlogik ist in den Fig. 36A und 368 gezeigt. Das RAMGNT-Signal wird als eine Eingabe in ein UND-Gatter mit zwei Eingängen 1600 geliefert. Der zweite Eingang des UND-Gatters 1600 empfängt das MS_RAM_REQ- Signal. Die Ausgabe des UND-Gatters 1600 wird an den D- Eingang eines Flip-Flops vom D-Typ 1602 geliefert, der durch das SYSCLK-Signal getaktet ist, und dessen Ausgabe das MS_RAM_ACK-Signal ist. Wenn ein Schreib-CDB-Betrieb auftritt, d.h., wenn die CDB-Information aus dem Übertragungspuffer 118 erhalten wird und in die verschiedenen Register in den Buscontroller geschrieben wird, wird ein Signal, das als WR_CDB bezeichnet wird, geschaffen, um anzuzeigen, daß der Schreib- Betrieb beginnt. Dies wird an einen Eingang eines ODER- Gatters mit zwei Eingängen 1604 geliefert. Die Ausgabe des ODER-Gatters 1604 wird als eine Eingabe an ein UND-Gatter mit zwei Eingängen 1606 geliefert. Die Ausgabe des UND-Gatters 1606 wird an den Eingang eines Flip-Flops vom D-Typ 1608 gliefert, dessen Eingabe als zweite Eingabe an das ODER- Gatter 1604 geliefert wird. Die Ausgabe des Flip-Flops 1608 wird außerdem an den Eingang eines UND-Gatters mit zwei Eingängen 1610 geliefert, dessen anderer Eingang die Ausgabe des Flip-Flops 1602 empfängt. Die Ausgabe des UND-Gatters 1610 wird als Freigabeeingabe eines aufwärtszählenden 3-Bit- Zählers 1612 geliefert, der in Sequenz durch die verschiedenen Felder oder Register, die in dem CDB erforderlich sind, läuft. Der Zähler 1612 wird durch das SYSCLK-Signal getaktet. Die Ausgabe des Flip-Flops 1608 wird durch einen Inverter 1614 invertiert und sein Ausgang ist mit dem Rücksetzeingang des Zählers 1612 verbunden. Der Zähler 1612 umfaßt ein Endzählungs-Bit, das an einen Eingang eines UND-Gatters mit zwei Eingängen 1616 geliefert wird. Der zweite Eingang des UND- Gatters empfängt die Ausgabe des Flip-Flops 1602. Die Ausgabe des UND-Gatters 1616 wird an den invertierten zweiten Eingang des UND-Gatters 1606 geliefert. Somit ist der Zähler 1612 freigegeben, nachdem das WR_CDB-Signal geliefert worden ist, bis er durch seine volle Sequenz gezählt hat und alle Register mit der CDB-Information geladen worden sind. Die Ausgabe des UND-Gatters 1616 wird an den Eingang eines Flip-Flops vom D-Typ 1618 geliefert, der durch das SYSCLK-Signal getaktet ist. Die Ausgabe des Flip-Flops 1618 ist das WR_CDB_DONE- Signal
  • Die Zählerausgabe des Zählers 1612 wird an die Auswahleingänge eines 3:8-Decoders 1620 geliefert. Die acht Ausgänge werden an einen Eingang einer Reihe von acht UND-Gattern 1633 mit drei Eingängen geliefert. Ein Eingang eines jeden UND- Gatters empfängt das WR_CDB_LAT-Signal, welches die Ausgabe des Flip-Flops 1608 ist, während der andere Eingang eines jeden UND-Gatters 1622 das MS_RAM_ACK-Signal empfängt, das von dem Flip-Flop 1602 geliefert wird. Die Ausgaben des UND- Gatters 1622 werden an die Eingänge der acht Flip-Flops vom D-Typ 1624 geliefert, die durch das SYSCLK-Signal getaktet werden. Die Ausgaben des Flip-Flops 1624 sind die MS_WR< 7..0> -Signale, welche die speziellen Zeilen in dem CDB, das zu laden ist, darstellen. Wie zuvor bemerkt, wird auf diese Werte auch durch eine beschreibendere Mnemonik zugegriffen.
  • Es ist außerdem vorteilhaft, die Registerinformation in den Übertragungspuffer 118 zurückzuschreiben, wenn ein CDB oder eine Übertragungskette inaktiv gemacht wurde, aber nicht abgeschlossen worden ist oder nachdem sie abgeschlossen worden ist. Dieser Betrieb wird durch den Empfang des RD_CDB-Signals in einem ODER-Gatter mit zwei Eingängen 1630 initiiert. Die Ausgabe des ODER-Gatters 1630 wird als eine Eingabe in ein UND-Gatter mit zwei Eingängen 1632 geliefert. Die Ausgabe des UND-Gatters 1632 wird als Eingabe eines Flip-Flops vom D-Typ 1634 geliefert. Die Ausgabe des Flip-Flops 1634 ist das MS_RAM_DIR-Signal, das als zweite Eingabe an das ODER-Gatter 1630 geliefert wird.
  • Sowohl das RD_CDB- als auch das WR_CDB-Signal werden an die zwei Eingänge eines ODER-Gatters mit zwei Eingängen 1636 geliefert. Die Ausgabe dieses ODER-Gatters wird als Eingabe in ein ODER-Gatter mit zwei Eingängen 1638 geliefert. Die Ausgabe des ODER-Gatters 1638 wird als eine Eingabe in ein UND- Gatter mit zwei Eingängen 1640 geliefert. Die Ausgabe des UND-Gatters 1640 wird als Eingabe an ein Flip-Flop vom D-Typ 1642 geliefert. Die Ausgabe des Flip-Flops 1642 ist das MS_RAM_REQ-Signal und wird als zweite Eingabe an das ODER- Gatter 1638, geliefert. Das Flip-Flop 1642 wird durch das SYSCLK-Signal getaktet. Die Ausgabe des Flip-Flops 1642 wird als eine Eingabe in ein UND-Gatter mit zwei Eingängen 1644 geliefert, dessen andere Eingabe das RAM_GNT-Signal ist. Die Ausgabe des UND-Gatters 1644 wird an den Freigabeeingang eines aufwärtszählenden 3-Bit-Zählers 1646 geliefert, der durch das SYSCLK-Signal getaktet wird. Die Ausgabe des Flip-Flops 1642 wird invertiert und an den Rücksetzeingang des Zählers 1646 geliefert. Dieser Zähler 1646 wird verwendet, um die unteren 3 Bits der Adresse an den Übertragungspuffer-RAM 118 zu liefern. Zu diesem Zweck werden die Q- oder Daten-Ausgaben des Zählers 1646 als MS_RD_ADR< 2..0> -Signale bezeichnet, um die tatsächliche RAM-Adresse anzuzeigen. Der Zähler 1646 hat ebenfalls eine Endzählung oder Beendigungsausgabe, die als eine Eingabe an ein UND-Gatter mit drei Eingängen 1646 geliefert wird. Die anderen zwei Eingaben in das UND-Gtter 1648 sind das RAM_GNT-Signal und das MS_RAM_REQ-Signal. Die Ausgabe des UND-Gatters 1648 wird an einen invertierten Eingang des UND-Gatters 1632, an einen invertierten Eingang des UND- Gatters 1640 und an einen Eingang eines UND-Gatters mit zwei Eingängen 1650 geliefert. Der zweite Eingang des UND-Gatters 1650 empfängt das MS_RAM_DIR-Signal. Die Ausgabe des UND- Gatters 1650 wird an den Eingang eines Flip-Flops vom D-Typ 1652 geliefert, der durch das SYSCLK-Signal getraktet ist. Die Ausgabe des Flip-Flops 1652 ist das RD_CDB_DONE-Signal, um anzuzeigen, daß alle Daten des CDB-Blocks, wie er modifiziert worden ist, zu dem Übertragungspuffer-RAM 118 zurückgegeben worden sind.
  • Eine Zuteilungseinheit 1668 (Fig. 37) wird verwendet, um zwischen den bestimmten Ketten, die operational und aktiviert sind, zu unterschieden, und eine Zustandsmachine 1666 wird verwendet, um das Laden und die Zeitablauffolge der CDB- Übertragungsoperationen zu steuern. Die Zuteilungseinheit 1668 führt eine Round-Robin-Operation auf den Ketten durch, die freigeben worden sind. Zu diesem Zweck empfängt sie eine Reihe von Eingaben, die anzeigen, ob die Ketten bereit sind. Diese Signale werden durch die Ausgabe eines UND-Gatters 1670 geliefert. Die UND-Gatter empfangen als Eingabe das geeignete TTDE_SYNC- oder das Übertragungskettenfreigabesignal. Zusätzlich wird ein bestimmtes EX_RDY-Signal empfangen, um anzuzeigen, daß der FIFO-Status des Transferpuffer-RAM 118 bereit ist, d.h. nicht voll für Schreibbetrieb und nicht leer für Lesebetrieb ist. Weiter werden die TTDD-Signale an einem invertierten Eingang von dem UND-Gatter 1670 empfangen. Das TTDD-Signal zeigt an, daß diese Kettenoperation abgeschlossen worden ist, und deshalb der invertierte Sinn verwendet wird, um die Operation zu sperren, so daß angezeigt wird, daß sie länger bereit ist, wenn sie einmal abgeschlossen worden ist. Somit zeigt die Ausgabe eines bestimmten UND-Gatters 1670 anf daß diese Kette freigegeben, fertig und nicht abgeschlossen ist. Diese Kettenbereit- oder THRD_RDY< 5..0> -Signale werden der Mikroablaufsteuerungs-Zutreilungseinheit 1668 zugeführt. Zusätzlich werden zwei Signale, die als SELECT_THREAD- und CLR_THRD bezeichnet werden, von der Mikroablaufsteuerungs-Zustandsmaschine 1666 an die Zuteilungsmachine 1668 geliefert. Das SELECT_THREAD-Signal zeigt an, daß ein Kettenbetrieb angefordert wird, wohingegen das CLR_THRD-Signal anzeigt, daß keine Operationen zweckmäßig sind, wie dies durch die Zustandsmachine 1666 angezeigt ist. Die Ausgabe der Zuteilungseinrichtung 1668 sind Signale, die als SELD_THRD< 5..0> bezeichnet werden, die eine Anzeige dafür sind, daß eine bestimmte Kette ausgewählt worden ist. Diese werden dem Eingang einer Serie von UND-Gattern mit drei Eingängen mit 1672 zugeführt. Der zweite Eingang des UND-Gatters 1672 empfängt das BM_DONE-Signal, während der dritte Eingang ein Signal empfängt, das als UPDATE_CDB_POINTER bezeichnet ist, welches durch die Zustandsmaschine 1666 gelifert wird, um zu bewirken, daß der aktuelle Wert des CDB-RAM- Adresszählers 1590 in das geeignete CDB-Kettenregister gelatcht wird. Somit sind die Ausgaben des UND-Gatters 1672 die MS_LD_CDBP< 5..0> -Signale eine Anzeige, daß es zweckmäßig ist, einen CDB-Zeiger bzw. CDB-Pointer zu laden. Wann die Übertragung, die durch den CDB spezifiziert ist, abgeschlossen ist. Somit zeigt der CDB-Pointer das nächste CDB an. Falls die Kette freigegeben verbleibt, würde dieses nächste CDB dann geladen werden und seine Operation augeführt; Falls allerdings der Fertig-Status angezeigt worden ist, würde die Zuteilungseinrichtung 1668 dies erkennen und keine Kette auswählen. Dies erlaubt ein einfaches automtisches Verketten von CDBs ohne Operation des lokalen Prozessors 104 am Ende und am Beginn einer jeden Übertragung.
  • Die sechs THRD_RDY-Signale werden den Eingängen eines ODER- Gatters 1674 zugeführt. Die Ausgabe des ODER-Gatters 1674 ist das ANY_THRD_RDY-Signal, das als eine Eingabe in die Zustandsmaschine 1666 geliefert wird. Zusätzlich werden das BM_HALTED und DM_DONE-Signal als Eingaben in ein ODER-Gatter mit zwei Eingängen 1676 geliefert, dessen Ausgang das DM_STOP-Signal ist. Die Zustandsmachine 1666 wird durch das SYSCLK-Signal getaktet und erzeugt das WR_CDB-, das RD_CDB-, das SELECT_THREAD-, das CLR_THRD- und das UPDATE_CDB_POINTER- Signal.
  • Zusätzlich werden die SELD_THRD-Signale einem Eingang einer Reihe von UND-Gattern mit zwei Eingängen 1678 zugeführt, während die TTDE_SYNC-Signale den invertierten Eingängen des UND-Gatters 1678 zugeführt werden. Die Ausgaben des UND- Gatters 1678 werden in einem ODER-Gatter 1680 kombiniert, um das HALT-Signal so zu erzeugen, daß, falls eine Kette von der Zuteilungseinrichtung 1668 ausgewählt worden ist, aber von dem lokalen Prozessor 104 durch ein Sperren deselektiert wird, dann das HALT-Signal erzeugt wird, um den Betrieb zu stoppen.
  • Das RD_CDB_DONE-Signal wird als eine Eingabe in eine Reihe von sechs UND-Gattern 1720 vorgesehen. Eine Eingabe in jedes der UND-Gatter 1720 wird durch die SELD_THRD< 5..0> -Signale, wie sie durch die Zuteilungseinrichtung 1668 zur Verfügung gestellt werden, geliefert. Die Endeingaben eines jeden UND- Gatters 1720 werden durch die Ausgabe eines ODER-Gatters mit zwei Eingängen 1722 geliefert. Eine Eingabe in das ODER- Gatter 1722 ist das BM_BUSERR-Signal zur Anzeige eines Fehlers, während die andere Eingabe durch die Ausgabe eines UND- Gatters mit zweb Eingängen 1724 geliefert wird. Die Eingaben in das UND-Gatter 1724 sind das BM_DONE-Signal und das LCDB- Signal. Somit ist die Ausgabe des UND-Gatters 1724 tiefpegehg, wenn das LCDB-Signal tiefpegelig ist, was anzeigt, daß dies nicht das letzte CDB in einer Kette von CDBs ist. Die Ausgabe des UND-Gatters 1720 wird den Eingängen eines ODER- Gatters 1726 zugeführt. Die Ausgabe des ODER-Gatters 1726 wird den Eingängen eines Flip-flops vom D-Typ 1728 zugeführt, der durch das SYSCLK-Signal getaktet ist. Die Ausgabe des Flip-Flops 1728 wird den zweiten Eingängen eines ODER-Gatters 1726 zugeführt und bildet die TTDD< 5..0> -Signale, welche anzeigen, daß eine bestimmte Kette abgearbeitet ist. Deshalb wird die Kette nicht angezeigt, wenn sie fertig ist oder gelöscht ist, falls das LCDB-Bit für die bestimmte Kette auf gesetzt ist. Die Flip-Flops 1728 werden durch die Ausgabe des Invertierer 1730 zurückgesetzt, die an ihren Eingängen die TTDE_SYNC< 5..0> -Signale empfangen, so daß, falls ein Kanal gesperrt ist, die Flip-Flops 1728 ebenfalls gelöscht werden. Die TTDD_< 5..0> -Signale werden einem Eingang einer Reihe von sechs UND-Gattern 1732 zugeführt. Die anderen Eingaben in das UND-Gatter 1732 sind die BMASK< 5..0> -Signale. Diese sind Interrupt-Maskenregister, die zur Verwendung in dem lokalen Prozessor 106 vorgesehen sind, um eine bestimmte Übertragungskette zu maskieren, wobei ein Interrupt für den lokalen Prozessor 106 vorausgesetzt ist. Die Ausgaben der UND-Gatter 1732 werden als Eingaben einem ODER-Gatter 1734 zugeführt, deren Ausgabe der BMI- oder Busmaster-Kanal-Interrupt ist, der dem lokalen Prozessor 106 zugeführt wird, um den Abschluß einer Kette anzuzeigen.
  • Der Betrieb der Zustandsmaschine 1666 ist in Fig. 38 gezeigt. Die Zustandsmaschine 1666 beginnt in dem MS_IDLE-Zustand. Die Steuerung fährt zu Block 1700 fort, wo das CLR_THRD-Signal gleich 1 gesetzt wird, um der Zuteilungseinheit 1668 anzuzeigen, die Operation zu löschen und daß keine Ketten angefordert sind. Falls das ANY_THRD_RDY-Signal logisch nicht wahr ist, was anzeigt, daß keine Ketten freigegeben sind, wie in Block 1702 bestimmt, verbleibt die Steuerung in dem MS_IDLE- Zustand. Falls allerdings eine Kette aktiv war, geht die Steuerung in den SEL_THRD-Zustand über, so daß einer ausgewählt werden würde. Die Steuerung geht von dem SEL_THRD- Zustand in den Block 1704, wo das SEL_THRD-Signal gleich 1 gesetzt wird, um der Zuteilungseinrichtung 1668 anzuzeigen, daß eine Kette ausgewählt ist. Die Steuerung geht dann in den ENB_CDB_WR-Zustand über. Von diesem Zustand geht die Steuerung durch den Block 1706, wo das WR_CDB-Signal auf 1 gesetzt wird, um anzuzeigen, daß ein CDB aus dem Übertragungspuffer- RAM 118 in den Buscontroller 200 gezogen werden soll. Die Steuerung geht dann in den WAIT_CDB_WDONE-Zustand über, bis die CDB-Übertragungsoperation abgeschlossen ist. Dies wird durch den Empfang des WR_CDB_DONE-Signals angezeigt, wie in Block 1708 überwacht. Falls nicht empfangen, verbleibt die Steuerung in dem WAIT_CDB_WDONE-Zustand. Wenn das NR_CDB_DONE-Signal einmal empfangen worden ist, geht die Steuerung in den WAIT_BM_DNE-Zustand über, bis das BM_STOP- Signal empfangen wird, wie in Block 1710 bestimmt. Dies ist eine Anzeige, daß die Buscontroller-Operationenen entweder abgeschlossen sind, dahingehend, daß diese spezielle Kette abgearbeitet ist, oder daß sie angehalten sind. Falls ein Stop nicht angezeigt wird, verbleibt die Steuerung in dem WAIT_BM_DNE-Zustand. Falls eine Stop-Bedingung angezeigt ist, geht die Steuerung in den ENB_CDB_RD-Zustand über. Es ist nun Zeit, den CDB in den Übertagungspuffer-RAM 118 zurückzuführen, und somit wird in Block 1712 das RB_CDB-Signal aktiviert, um diesen Prozeß zu initiieren. Die Steuerung geht in den WAIT_CDB_RDNE-Zustand über, um auf die Vervollständigung dieses Prozesses zu warten. Falls das RD_CDB_DONE-Signal nicht empfangen wird, wie in Block 1714 bestimmt, verbleibt die Steuerung einfach in dem WAIT_CDB_RDNE-Zustand, bis das CDB vollständig in den Übertragungspuffer-RAM 118 zurückgeschrieben worden ist. Wenn das Signal empfangen wird, wird das UPDATE_CDB_POINTER-Signal auf 1 gesetzt, um zu ermöglichen, daß das Ketten-CDB-Register auf den Ort aktualisiert wird, und in Block 1716 geht die Steuerung UPD_CDB_PTR- Zustand über. Die Steuerung geht von hier durch Block 1702 entweder in einen Bereit-Zustand über oder zu einer Auswahl der nächsten Kette über.
  • Nimmt man nun auf Fig. 39 Bezug, ist ein Flußdiagramm einer Zustandsmaschine SM1 innerhalb des Zyklusgenerators 316 in dem DABM 100 gezeigt, welcher das GO-Signal von der Adresseinheit 318 empfängt und den EISA-Bus 34 anweist, einen Datenübertragungsbetrieb durchzuführen. Die Adresseinheit 318 liefert das GO-Signal, wenn die Speicheradresse und die Übertragungszählung über den CDB 104 empfangen worden sind, so daß eine Übertragung beginnen kann und angesteuert verbleibt, bis die Übertragung vollständig ist, oder der Buscontroller einen Fertigzustand anzeigt. Die quadratischen Blöcke stellen den Zustände A,B,C und D dar, wobei die Zustandsmaschine SM1 in einem gegebenen Zustand verbleibt, bis sie in einen neuen Zustandsblock eintritt. Die Operation beginnt in dem Zustand A, gekennzeichnet durch 330, wobei die Operation in Zustand A verbleibt, bis das GO-Signal empfangen wird, wie dies durch einen Block 332 angezeigt ist. Falls das GO-Signal negiert ist, verbleibt die Operation in dem Zustand A. Wenn das GO- Signal ausgegeben wird, geht die Operation in einen Block 334 über, wo die Zustandsmaschine SM1 das MERQ*-Signal tiefpegehg auf den EISA-Bus 34 anlegt, um eine Steuerung des EISA- Bus 34 anzufordern. Der Betrieb geht dann in einen Block 336 über, wo ein Signal, das als MAK* bezeichnet ist, überwacht wird. Das MAK*-Signal ist eine Bestätigungssignal von dem EISA-Bus 34, welches anzeigt, daß der DABM 100 eine Steuerung des EISA-Bus übernehmen kann. Während das MAK*-Signal hochpegelig negiert ist, verbleibt die Operation in Zustand A. Wenn das MAK*-Signal in Block 336 tiefpeglig angesteuert wird, verbleibt die Operation im Zustand B, gekennzeichnet durch 338, wobei angezeigt wird, daß der DABM 100 die Steuerung über den EISA-Bus 34 hat.
  • Die Operation geht dann von Block 338 zu Block 340, wo das GO-Signal überwacht wird. Während das GO-Signal angesteuert bleibt, geht die Operation zu einem Block 342 über, wo das MAK*-Signal wiederum überwacht wird. Falls das MAK*-Signal in Block 342 als hochpegelig angelegt detektiert wird, geht die Operation zu einem Block 344 über, in dem ein Datenverfügbarkeitssignal, das als DAV bezeichnet ist, überwacht wird, um zu bestimmen, ob es angelegt ist. Das DAV-Signal wird durch die Adresseinheit 318 zur Verfügung gestellt, abgeleitet von einem Signal SDAV aus der Daten-FIFO/Ausrichteinrichtung 322, die anzeigt, daß Daten zur Übertragung bereit sind, oder daß der FIFO zur Verfügung steht, um Daten zu empfangen. Falls das DAV-Signal in Block 334 als angelegt detektiert wird, fährt die Operation zu einem Block 346 fort, wo das MREQ*- Signal tiefpegelig angelegt verbleibt, und ein Signal PGO hochpegelig angesteuert wird, wobei auf einer anderen Zustandsmaschine SM2 (Fig. 40) innerhalb des Zyklusgenerators 316 angezeigt wird, eine Datenübertragungsoperationen zu beginnen. Von dem Block 346 geht die Operation zurück zu Block 338, der anzeigt, daß die Zustandsmaschine SM1 im Zustand B verbleibt.
  • Falls das DAV-Signal in Block 344 nicht angelegt ist, dann ist der DABM 100 temporär angehalten, und die Operation geht zu einem Block 347, wo ein Datenverfügbarkeits-Auszeitsignal, das als DTO bezeichnet wird, überwacht wird. Das DTO-Signal wird bei der Auszeit eines Datenverfügbarkeits- Abwärtszeitgebers (nicht gezeigt) in den Zyklusgenerator 316 angelegt, was eine maximale Zeit bezeichnet, die der DABM 100 hinauszögert, während keine Daten verfügbar sind, oder nicht aus dem FIFO übertragen werden. Falls das DTO-Signal in Block 347 nicht angelegt ist, geht die Operation zu einem Block 348 weiter, wo ein Signal DTOLD tiefpegelig angelegt wird, welches den Datenverfügbarkeitstaktgeber startet. Der Abwärtstimer beginnt das Abwärtszählen auf der fallenden Flanke des DTOLD-Signals und ist mit der maximalen Zeit voreingestellt, die das DTOLD-Signal hochpegelig angelegt ist. Wenn der Datenverfügbarkeitstimer ausläuft, legt er das DTO-Signal an und das DABM 100 gibt schließlich die Steuerung des EISA-Bus 34 frei.
  • Von Block 348 geht die Operation zu Block 346 über, wo das MREQ*- und das PGO-Signal angelegt werden, falls sie nicht bereits angelegt sind. Falls das DTO-Signal in Block 347 angelegt wird, dann ist der Datenverfügbarkeitstimer abgelaufen und der Betrieb geht zu Block 350, wo ein Signal UALOEO* überwacht wird, welches im allgemeinen eine obere Adressenlatch-Ausgabefreigabe für das obere Adressen-BIT der EISA- Adresse ist. Das UALOEO*-Signal wird durch die Maschine SM2 angelegt, wobei angezeigt wird, daß das DABM 100 eine Adresse auf den EISA-Bus 34 gibt. Falls das UALOEO* in Block 350 nicht angelegt ist, geht die Operation in den Zustand D, bezeichnet als 352, welcher ein Zwischenzustand ist, über, bevor sie wieder in Zustand A eintritt. Die Negation des UALOEO*-Signals zeigt an, daß der DABM 100 keine Adressen auf den EISA-Bus 34 gibt, und somit nicht als den EISA-Bus 34 kontrollierend angegeben werden kann.
  • Bezieht man sich wieder auf Block 340, geht, falls das GO- Signal während des Zustands B negiert wird, die Operation zu einem Block 360, wo das DTOLD-Signal und ein PTOLD tiefpegehg angelegt werden, um den Datenverfügbarkeitstimer und eine Preempt-Timer zu initiieren. Der Preempt-Timer ist ein Timer, der eine maximale Anzahl von Zeit anzeigt, die der DABM 100 den EISA-Bus 34 festhalten kann, nachdem das MAK*-Signal oder die GO-Signale negiert sind. Auf ein Ablaufen des Preempt- Timers hin legt er ein Signal PTO an. Vom Block 360 geht die Operation zu Block 350, wo das UALOEO*-Signal überwacht wird.
  • Nimmt man wieder Bezug auf Block 342, geht, falls das MAK*- Signal nicht in Block 342 tiefpegelig angelegt ist, die Operation zu einem Block 362, wo das PTOLD-Signal tiefpegelig angelegt wird. Die Operation geht dann zu einem Block 364, wo das DAV-Signal überwacht wird, um zu bestimmen, ob Daten zur Übertragung verfügbar sind. Falls so, geht der Betrieb zu einem Block 366, wo das PTO-Signal überwacht wird, um zu bestimmen, ob ein Zeitablauf des Preempt-Timer aufgetreten ist. Falls nicht, verbleibt die Operation in Block B und geht zu Block 346, um das MREQ*- und PGO-Signal angelegt zu halten. Andernfalls geht, falls das PTO-Signal in Block 366 angelegt ist, der Betrieb zu Block 350, um das UALOEO*-Signal zu überwachen. Falls das DAV-Signal in Block 364 nicht angelegt ist, geht der Betrieb zu 368, wo das DTOLD-Signal tiefpegelig angelegt wird, und dann geht der Betrieb zu 370, wo das PTO- und das DTO-Signal beide überwacht werden, um zu bestimmen, ob sie beide tiefpegelig negiert sind. Falls beide nicht in Block 370 tiefpegelig negiert sind, dann ist wenigstens ein Zeitablauf abgetreten, und der Betrieb geht zu Block 350, um das UALOEO*-Signal zu überprüfen. Falls sowohl der Preeempt- als auch der Datenverfügbarkeits-Timer in Block 370 noch nicht abgelaufen sind, verbleibt der Betrieb in Block B und kehrt zu Block 346 zurück.
  • Falls das UALOEO*-Signal in Block 350 angelegt wird, geht der Betrieb in den Zustand C, bezeichtnet durch 354, wo das GO- und das DAV-Signal überwacht werden. In dem Zustand C ist das PGO-Signal tiefpegelig negiert, das MREQ*-Signal ist hochpegelig negiert und das DTOLD- und das PTOLD-Signal sind beide hochpegelig angelegt. Der Betrieb geht dann zu einem Block 356, wo das GO-Signal überwacht wird, und, falls es hoch angelegt ist, und, falls es hochpegelig angesteuert ist, geht der Betrieb in Block 358, wo das DAV-Signal überwacht wird. Falls das GO-Signal angesteuert verbleibt und das DAV-Signal negiert verbleibt, verbleibt der Betrieb in Zustand C. Andernfalls, falls das GO-Signal in Block 356 als negiert detektiert wird, oder falls das DAV in Block 358 als angelegt detektiert wird, geht der Betrieb zurück zu Block 350, um das UALOEO*-Signal zu überwachen. Der Zyklusgenerator 316 erzeugt ebenfalls ein Signal EWSTROBE, das angelegt wird, wenn das START*-Signal tiefpegelig angesteuert wird oder, wenn das MSBURST*- und das POSTLK-Signal tiefpegelig sind und das BDK-, EXRDY-, PGO- und DAV-Signal hochpegelig angelegt sind. Das READ3-Signal ist eine getaktete Version des negierten MSBURST*-Signals und das READ2-Signal ist logisch wahr, wenn ein Signal READL logisch wahr ist oder, wenn das PDOE*-Signal angelegt ist und das MSBURST*-, START*- und das EXRDY-Signal logisch wahr sind. Das READ1-Signal ist logisch wahr, wenn das PCOE*-Signal logisch falsch ist und das EX32*-Signal tiefpegelig angelegt ist.
  • Nimmt man nun auf Fig. 40 Bezug, ist dort ein Zustandsdiagramm einer anderen Zustandsmaschine SM2 innerhalb des Zyklusgenerators 316 gezeigt, welches die Steuersignale für den EISA-Bus 34 ansteuert und die Signale überwacht, um zu bestimmen, welcher Typ von EISA-Zyklus auf dem EISA-Bus 34 auftritt, wenn dieser durch den DABM 100 gesteuert wird. Die Zustandsmaschine SM2 empfängt das BCLK-Signal von dem EISA-Bus 34, so daß Übergänge von einem Zustand in den nächsten synchron mit dem BCLK-Signal sind. Der Betrieb verbleibt in einem Zustand F, bezichnet durch 372, während das PGO-Signal tiefpegelig negiert ist, und ein Signal PCOE*-verbleibt angelegt, während es in dem Zustand F ist. Das PCOE*-Signal ist ein Steuerausgabe-Freigabesignal, welches ermöglicht, daß bestimmte EISA-Steuersignale durch den DABM 100 geliefert werden. Das PCOE* wird außerdem extern mit dem PGO-Signal in Torform geschaltet, so daß die Steuersignale tatsächlich nur geliefert werden, wenn der DABM 100 die Steuerung des EISA- Bus 34 innehat. Wenn ein PGO-Signal angelegt wird, geht der Betrieb in einen neuen Zustand A, bezeichnet mit 374, wo das UALOEO*- und das PCOE*-Signal tiefpegelig angelegt werden. Falls das PGO-Signal während des Zustand A negiert ist, oder falls das PRE1K- und POST1K-Signal beide während des Zustands A angelegt sind, geht der Betrieb in den Zustand F. Falls das DAV-Signal in dem Zustand A angelegt ist, während das PGO- Signal ebenfalls angelegt ist, geht der Betrieb in einen Zustand B, bezeichnet durch 376, wo das UALOEO*-, START*-, PDOE*- und PCOE*-Signal angelegt sind. Das PDOE*-Signal ist ein Datenausgabe-Freigabesignal, das es ermöglicht, das der EISA-Bus 34 durch den DABM 100 gesteuert wird. Das DAV-Signal wird durch die Adresseinheit 318 angelegt, die das SDAV- Signal von der Daten-FIFO/Ausrichteinrichtung 322 empfängt, welches anzeigt, daß die Daten zur Übertragung verfügbar sind oder mehr Daten zur Übertragung erforderlich sind. Falls ein SLBURST*-Signal auf dem EISA-Bus als tiefpegelig im Zustand B detektiert wird, geht der Betrieb zu Block E, bezeichnet durch 382, über, wo das UALOEO*-, PDOE*- und PCOE*-Signal, sowie ein Signal MSBURST* angelegt werden, das einen 16- oder 32-Bit-EISA-Burst-Zyklus anzeigt. Der Betrieb verbleibt in Zustand E, während ein EISA-Signal EXRDY tiefpegelig negiert ist oder während das PGO- und DAV-Signal hochpegelig angelegt ist und das POSTLK-Signal tiefpegelig negiert ist. Falls das DAV- und POSTLK-Signal tiefpegelig negiert ist und das EXRDY und das PGO-Signal hochpegelig in Zustand E angelegt sind, kehrt der Betrieb in Zustand A zurück. Andernfalls, falls keine der obigen Bedingungen für einen Übergang in Zustand A oder ein Verbleiben in Zustand E gegeben ist, kehrt der Betrieb zu Zustand F zurück, um einen neuen oberen EISA- Adresswert, wenn zweckmäßig, zu laden.
  • Nimmt man wieder Bezug auf Zustand B, fährt der Betrieb, falls das SLBURST*-Signal und ein EISA-Signal EX32* hochpegehg negiert sind, der Betrieb zu einem Block D, durch 380 gekennzeichnet, fort, wo das UALOEO*-Signal angelegt wird, aber die PDOE* und PCOE*-Signale negiert werden. Der Zustand D zeigt an, daß ein EISA-Byte Assemblierbetrieb auftritt. Der Betrieb verbleibt in Zustand D, während das EX32*-Signal hochpegelig negiert wird. Falls das PGO-Signal hochpegelig angelegt ist und das PRE1K-Signal tiefpegelig negiert ist, während das EX32*-Signal in Zustand D ebenfalls tiefpegelig negiert ist, oder das PGO entfernt wird, oder eine 1 KByte- Seitengrenze erreicht ist, kehrt der Betrieb in Zustand A zurück. Andernfalls, wenn das EX32*-Signal tiefpegelig in Zustand D negiert ist, geht der Betrieb in einen Zustand G, bezeichnet durch 384 über, in dem UALOEO*- und PCOE*-Signal tiefpegelig angelegt werden, basierend auf der Überwachung des SEXRDYI- oder des internen synchronisierten EXRDY- Signals. Der Betrieb geht dann von dem Zustand G in den Zustand F zurück. Nimmt man wieder auf Zustand B Bezug, geht, falls das SLBURST*-Signal nicht tiefpegelig angelegt ist und das EX32*-Signal tiefpegelig angelegt ist, der Betrieb in einen Zustand C, bezeichnet durch 378, der anzeigt, daß ein normaler EISA-Zyklus auftritt. Der Betrieb verbleibt in dem Zustand C, während das EXRDY-Signal tiefpegelig negiert ist. Außerdem wird das UALOEO*-, das PDOE*- und PCOE*-Signal während des Zustands C tiefpegelig angelegt. Falls das EXRDY- und PGO-Signal angelegt ist, und das DAV- und das POST1K- Signal in Zustand C negiert sind, kehrt der Betrieb zu Zustand A zurück. Andernfalls, wenn das EXRDY-Signal in Zustand C angelegt ist, während das PGO-Signal negiert ist oder entweder das DAV- oder POST1K-Signal negiert ist, kehrt der Betrieb von Zustand C zu Zustand F zurück.
  • Nimmt man nun auf Fig. 41 Bezug, ist dort ein schematisches Diagramm eines Abschnitts des Adressensynchronisierers 320 gezeigt, der während eines Adress/Fehler-Ladezykluses Daten von dem CTB 104 empfängt und einen EISA-Adresszähler, der durch das BCLK-Signal getaktet ist, sowie ein Datenzählersignal, das in der Adresseinheit 318 untergebracht ist, synchron lädt. Der Adressensynchronisierer 320 empfängt das TBALD*-Signal von dem CTB 104, welches durch den ADAC 116 angelegt ist, um den DABM 100 anzuweisen, eine Speicheradresse, eine Übertragungsbytezählung und Busnebenstellen spezifische Daten zu akzeptieren. Der Adressensynchronisierer 320 empfängt außerdem das TCLK-Signal und eine invertierte Version des TCLK-Signals, das als TCLK* bezeichnet wird, welche innerhalb des DABM 100 zu Zwecken des Synchronisierens der Adressen und der Daten für den CTB 104 erzeugt wird. Der Adressensynchronisierer 320 empfängt außerdem die TBD< 31..0> - Datensignale. Außerdem empfängt der Adressensynchronisierer 320 das TBDIR*-Signal, daß die Richtung des Datenflusses auf dem CTB 104 anzeigt. Wenn das TBDIR-Signal durch den ADAC 116 hochpegelig ausgegeben ist, werden die Daten von dem ADAC 116 zu dem DABM 100 und möglicherweise der Schreibcache- Einrichtung 128, falls ausgewählt, übertragen. Wenn das TBDIR-Signal tiefpegelig ausgegeben wird, werden Daten von dem DABM 100 auf den ADAC 116 übertragen. Wie unten beschrieben wird, entwickelt der Adressensynchronisierer 320 ein Signal TBDAK01*, das als das TBDAK*-Signal zur Bestätigung des TBALD*-Übertragungsbus-Anforderungssignal an den CTB 104 angelegt wird. Das TBMDN*-Signal wird ebenfalls von dem DABM 100 empfangen, welches anzeigt, daß der ADAC 116 eine Datenübertragung abgeschlossen hat. Ein Rücksetzsignal, das als RESDRVI* bezeichnet ist, wird durch den Adressensynchronisierer 320 durch den DABM 100 empfangen, um den DABM 100 allgemein zurückzusetzen.
  • Der Adressensynchronisierer 320 ist auch mit dem BCLK-Signal von dem EISA-bus 34 verbunden und erzeugt eine invertierte Version, die als BCLK* bezeichnet wird. Das TBALD*-Signal ist mit einem invertierten Eingang eines UND-Gatters mit zwei Eingängen 400 verbunden, welches seine Ausgabe an den D- Eingang eines D-Flip-Flops 402 liefert. Der nicht-invertierte Eingang des UND-Gatters 400 ist mit dem TBDAK01*-Signal verbunden und der D-Flip-Flop 402 wird durch das TCLK-Signal getaktet. Der invertierte Rücksetzeingang des D-Flip-Flop 402 ist mit dem RESDRVI*-Signal verbunden. Der Ausgang des D- Flip-Flops 402 ist mit dem Takteingang eines D-Flip-Flops 404 verbunden, desses D-Eingang hochgezogen ist. Der invertierte Rücksitzeingang des D-Flip-Flops 404 ist mit dem Ausgang eines UND-Gatters mit drei Eingängen 406 verbunden, dessen Eingang mit dem TBMDN*-Signals verbunden ist. Die anderen zwei Eingänge des UND-Gatters 406 sind mit dem RESDRVI*-Signal und außerdem QN, oder dem invertierten Ausgang, eines D-Flip- Flops 414 verbunden. Der QN-Ausgang des D-Flip-Flops ist mit einem Eingang eines NAND-Gatters mit zwei Eingängen 410 verbunden, dessen anderer Eingang mit dem Ausgang eines ODER- Gatters mit zwei Eingängen 408 verbunden ist. Der Ausgang des NAND-Gatters 410 ist mit dem D-Eingang eines D-Flip-Flops 412 verbunden, dessen QN-Ausgang mit dem Eingang des ODER-Gatters 408 verbunden ist. Der andere Eingang des ODER-Gatters 408 ist mit dem ADDBACK-Signal verbunden, das durch die Adresseinheit 318 geliefert wird, welches anzeigt, daß die Adresseinheit 318 einen Adresswert empfangen hat. Der D-Flip-Flop 412 ist durch das BCLK-Signal getaktet und sein invertierter Rücksetzeingang ist mit dem RESDRVI*-Signal verbunden.
  • Der Q-Ausgang des D-Flip-Flops 412 ist mit einem Eingang eines UND-Gatters mit zwei Eingängen 413 verbunden, wobei dieser Ausgang außerdem als ASTROBE-Signal bezeichnet wird, der verwendet wird, um Adressinformation in die Adresseinheit 318 in Impulsform zu geben. Der andere Eingang des UND-Gatters 413 ist mit dem ADDRACK-Signal verbunden und der Ausgang des UND-Gatters 413 ist mit dem D-Eingang des D-Flip-Flops 414 verbunden. Der D-Flip-Flop 414 hat einen invertierten Takteingang, der mit dem BCLK-Signal verbunden ist, und einen invertierten Rücksetzeingang, der mit dem RESDRVI*-Signal verbunden ist.
  • Die ADDRACK- und ASTROBE-Signale sind mit den entsprechenden Eingängen eines UND-Gatters mit zwei Eingängen 416 verbunden, dessen Ausgang an den D-Eingang eines D-Flip-Flops 418 angeschlossen ist. Der D-Flip-Flop 418 hat einen invertierten Einstell-Eingang, der mit dem TBMDN*-Signal verbunden ist und durch das BCLK-Signal getaktet wird. Der invertierte Rücksetzeingang des D-Flip-Flops 418 ist mit dem RESDRVI*-Signal verbunden und sein Q-Ausgang ist mit dem Takteingang eines D- Flip-Flops 420 verbunden. Der D-Eingang des D-Flip-Flops 420 ist hochgezogen und hat einen invertierten Rücksetzeingang, der mit dem Ausgang eines UND-Gatters mit drei Eingängen 422 verbunden ist. Das UND-Gatter 422 hat einen ersten Eingang, der mit dem TBMDN*-Signal verbunden ist, einen zweiten Eingang, der mit dem RESDRVI*-Signal verbunden ist, und einen dritten Eingang, der mit dem Ausgang eines D-Flip-Flops 432 verbunden ist. Der Q-Ausgang des D-Flip-Flops 420 ist mit dem D-Eingang eines D-Flip-Flops 424, der durch das TCLK*-Signal getaktet wird. Der invertierte Rücksetzeingang des D-Flip- Flops 424 ist mit dem RESDRVI*-Signal verbunden. Der QN- Ausgang des D-Flip-Flops 424 ist mit einem Eingang eines NAND-Gatters mit zwei Eingängen 428 verbunden, dessen anderer Eingang mit dem Ausgang eines NAND-Gatters mit zwei Eingängen 426 verbunden ist. Der erste Eingang des NAND-Gatters 426 ist mit dem TBALD*-Signal verbunden und sein anderer Eingang ist mit dem QN-Ausgang des D-Flip-Flops 432 verbunden. Der Ausgang des NAND-Gatters 428 ist mit einem Eingang eines NAND- Gatters mit zwei Eingängen 430 verbunden, dessen anderer Eingang mit dem TBMDN*-Signal verbunden ist. Der Ausgang des NAND-Gatters 430 ist mit dem D-Eingang des D-Flip-Flops 432 verbunden, der durch das TCLK-Signal getaktet wird und der einen invertierten Einstell-Eingang hat, der mit dem RESDRVI*-Signal verbunden ist. Der Q-Ausgang des D-Flip-Flops 432 ist mit einem Eingang eines ODER-Gatters mit zwei Eingängen 434 verbunden, dessen anderer Eingang mit dem TBALD*- Signal verbunden ist. Der Ausgang des ODER-Gatters 434 liefert das TBDAK01*-Signal, um dem CTB 104 anzuzeigen, daß der Speicheradressenwert und der Übertragungszählerwert akzeptiert worden sind.
  • Das TBDAK01*-Signal wird an einem Eingang eines XODER-Gatters mit zwei Eingängen 436 geliefert, dessen anderer Eingang mit dem QN-Ausgang eines D-Flip-Flops 440 verbunden ist. Der Ausgang des XODER-Gatters 436 ist mit einem Eingang eines UND- Gatters 438 verbunden, dessen anderer Eingang an das TBMDN*- Signal angeschlossen ist. Der Ausgang des UND-Gatters 438 ist mit dem D-Eingang des D-Flip-Flops 440 verbunden. Der D-Flip- Flop 440 wird durch das TCLK-Signal getaktet und hat einen invertierten Rücksetzeingang, der mit dem RESDRVI*-Signal verbunden ist. Der Q-Eingang des Flip-Flops liefert das DESTADDR-Signal, das verwendet wird, um anzuzeigen, ob eine Adresse oder ein Übertragungszählungswert von dem CTB 104 geladen ist.
  • Eine andere Logik, die in Fig. 41 nicht gezeigt ist, ist die Logik, welche die < TBD31..0> -Datensignale empfängt und die SADDRESS< 31..0> -Signale und außerdem ein Signal SDIR liefert. Als Ergbnis werden auf jeder positive Kante des TCLK-Signals hin, die SADDRESS< 31..0> -Signale gleich den TBD< 31..0> - Signalen, wenn das TRAID*-Signal logisch tiefpegelig ausgegeben ist, gelatcht, es sei denn das RESDRVI*-Signal ist ebenfalls logisch tiefpegelig, in welchem Fall die SADDRESS< > - Signale alle auf 0 gesetzt werden. Das SDIR-Signal wird gleich dem TBDIR-Signal auf dieselbe Weise gelatcht, wenn das TRAID*-Signal, wie durch das TCLK* getaktet, tiefpegelig ist. Außerdem wird das SDIR-Signal auf eine Zuteilung des RESDRVI*-Signals hin gleich 0 gesetzt. Die Adresseinheit 318 plaziert den ersten Satz der SADRRESS< > -Signale in seinen Adressenzähler und die oberen 16 Bit des zweiten Satzes der SADDRESS< > -Signale in seinen Übertragungszähler.
  • Nimmt man nun Bezug auf Fig. 42, ist dort ein schematisches Diagramm gezeigt, das einen Abschnitt der Daten- FIFO/Ausrichteeinheit 322 und die Signale, die erzeugt werden, um den Datenfluß durch den FIFO zu bestimmen (Fig. 43), darstellt. Ein Multiplexer 450 hat einen Auswahleingang, der mit einem Signal FDIR verbunden ist, welches gleich dem TBDIR-Signal von dem CTB 104 gesetzt wird, wenn das TBDAK01*- Signal und das DESTADDR-Signal beide tiefpegelig ausgegeben werden. Somit zeigt das FDIR-Signal die Richtung des Datenflusses an und ist gleich 1, wenn der Datenfluß von dem ADAC 116 zu dem EISA-Bus 34 geht, und ist gleich 0, wenn der Datenfluß in die umgekehrte Richtung läuft. Der erste Eingang des Multiplexers 450 ist mit dem ERSTROBE-Signal verbunden, das der Daten-FIFO/Ausrichteinrichtung 322 von dem Zyklusgenerator 316 geliefert wird, um die Daten in den FIFO zu geben. Der zweite Eingang des Multiplexers 450 ist mit einem Signal TWSTROBE verbunden, das im allgemeinen dem TCLK- Taktsignal folgt, jedoch lediglich, wenn sowohl das TBDRQ *- als auch das TBDAK02*-Signal tiefpegelig sind. Das TBDAK02*- Signal wird durch den Daten-FIFO 322 zur Verfügung gestellt, wenn eine Datenüertragung bestätigt wird. Das TBDAK02*- und TBDAK01*-Signal werden addiert, um das TBDAK*-Signal zu bilden. Die Ausgabe des Multiplexers 450 liefert ein Signal WRITE, das in dem Takteingang eines FIFO-Schreibzeigerzählers 452 gegeben wird, der drei Ausgabe-Bits, die im allgemeinen als WPOINT bezeichnet werden, liefert. Der invertierte Rücksetzeingang des FIFO-Schreibzeigers 452 ist mit einem Signal RST* verbunden, welches die Ausgabe eines ODER-Gatters mit drei Eingängen 454 ist, dessen Eingänge mit den TBDAK01*-, TCLK- und DESTADDR-Signalen verbunden sind, so daß der Zeiger 452 gelöscht wird, wenn ein neuer Adresswert über den CTB 104 empfangen wird. Die unteren zwei Bits des WPOINT-Signals werden dem Eingang eines Flip-Flop-Paars zugeführt, daß als Schreibverzögerungs-Pointer 456 bezeichnet wird, der zwei Ausgaben WPD< 1..0> liefert. Die WPD< Y> -Signale werden verwendet, um die nächste verfügbare Datenposition innerhalb des FIFO anzuzeigen. Das WRITE-Signal wird an dem invertierten Takteingang des Schreibverzögerungs-Pointers 456 geliefert, und das RST*-Signal ist mit seinem invertierten Rücksetzeingang verbunden. Auf diese Weise zählen die WPOINT-Signale im allgemeinen nach oben auf die Anstiegsflanken des WRITE- Signals, wobei die WPOINT-Signale durch den Schreibverzögerungs-Pointer 456 an den abfallenden Flanken des WRITE- Signals verzögert werden, um die WP< 1..0> -Signale zu schaffen.
  • Auf ähnliche Weise hat ein Multiplexer 458 einen Auswahleingang, der mit dem FDIR-Signal verbunden ist, und dessen erster Eingang mit dem TRSTROBE-Signal verbunden ist, bzw. dessen anderer Eingang mit dem EWSTROBE-Signal verbunden ist. Der Ausgang des Multiplexers 458 liefert ein Signal READ, das an den Takteingang eines 3-Bit-FIFO-Lesepointerzähler 460 geliefert wird, der im allgemeinen auf jede ansteigende Flanke des READ-Signals hin, zählt. Der invertierte Rücksetzeingang des FIFO-Lesepointers 460 ist mit dem RST*-Signal verbunden, und liefert drei Ausgangssignale, die kollektiv als RPOINT bezeichnet werden. Die zwei am wenigsten signifikanten Bits der RPOINT-Signale werden an den Eingang eines verzögerten Lesepointer-Flip-Flop-Paars 462 gegeben, dessen invertierter Takteingang mit dem READ-Signal verbunden ist. Die Ausgabe des verzögerten Lesepointers 462 liefert zwei Signale, die als RPD< 1..0> bezeichnet werden, die verzögerte Versionen der RPOINT-Signale sind, welche auf die abfallenden Flanken des READ-Signals aktualisiert sind. Der invertierte Rücksetzeingang des verzögerten Lesepointers 462 ist mit dem RST*-Signal verbunden.
  • Die drei WPOINT- und die drei RPOINT-Signale werden an den A- bzw. B-Eingang eines Vergleichsblocks 464 gegeben, der die WPOINT- und RPOINT-Signale vergleicht, um zu bestimmen, ob der FIFO voll ist, wie dies durch ein Signal FULL angezeigt wird, nahezu voll ist, wie dies durch ein Signal AFULL angezeigt wird, nahezu leer ist, wie dies durch ein Signal AEMPTY angezeigt wird, oder leer ist, wie dies durch ein Signal EMPTY angezeigt. Im allgemeinen nimmt der Vergleichsblock 464 die binäre Differenz zwischen den WPOINT- und RPOINT- Signalen, um zu bestimmen, wie viele gültige Datenworte in dem FIFO verbleiben. Der FIFO umfaßt im wesentlichen einen Datendoppelwortpuffer mit der Tiefe 5, der Daten an seinem Eingang von etwa dem EISA-Bus 34 oder dem CTB 104, abhängig von der Richtung des Datenflusses, empfängt. Das FULL-, AFULL-, AEMPTY-, EMPTY-Signal bestimmt die Anzahl der Datendoppeltworte, die verbleiben, um durch den FIFO übertragen zu werden. Falls 5 Doppelworte in dem FIFO vorhanden sind, ist das FULL-Signal logisch wahr. Ähnlich sind, falls 4, 1 oder 0 Datendoppelworte in dem FIFO verbleiben dann das AFULL-, AEMPTY-, bzw. EMPTY-Signal logisch wahr. Die FULL-, AFULL-, AEMPTY- und EMPTY-Signale werden den D-Eingängen von vier D-Flip-Flops 466 entsprechend zugeführt, welche das BCLK*-Signal an seinem Takteingang empfangen. Die vier D- Flip-Flops 466 liefern die entsprechenden synchrone Signale BFULL, BAFULL, BAEMPTY und BEMPTY, welche den FULL-, AFULL-, AEMPTY- und EMPTY-Signalen entsprechen. Auf ähnliche Weise werden die FULL-, AFULL-, AEMPTY- und EMPTY-Signale den vier D-Eingängen von vier D-Flip-Flops 468 zugeführt, die durch das TCLK*-Signal, welches an ihren Takteingängen angelegt wird, getaktet werden. Die Q-Ausgänge der vier D-Flip-Flops 468 liefern Signale TFULL, TAFULL, TAEMPTY, bzw. TEMPTY entsprechend den D-Eingängen, wie sie durch das TCLK*-Signal für den CTB 104 synchronisiert sind. Der invertierte Rücksetzeingang der vier D-Flip-Flops 468 ist mit dem TBDAK01*-Signal verbunden. Die TFULL-, TAFULL-, TAEMPTY- und TEMPTY-Signale werden verwendet, um die Lieferung des TBDAK02*-Signals zu qualifizieren, so daß Daten nur geliefert werden, wenn der FIFO voll oder nahezu voll ist und nur akzeptiert werden, wenn der FIFO leer oder nahezu leer ist. Somit werden die Signale verwendet, um die Datenübertragung des CTB 104 zu drosseln.
  • Das SDAV-Signal wird von den FDIR-, BEMPTY-, BAEMPTY-, BFULL- und BAFULL-Signalen erhalten. Falls FDIR angelegt wird, ist das SDAV-Signal nur logisch wahr, wenn die BEMPTY- und BAEMPTY beide logisch falsch sind, was anzeigt, daß Daten während eines Schreibens von dem ADAC 116 auf dem EISA-Bus nur verfügbar sind, wenn der FIFO nicht leer ist und nicht fast leer ist. Falls FDIR negiert ist, ist das SDAV-Signal nur wahr, wenn die BFULL- und BAFULL-Signale beide falsch sind, was anzeigt, daß Daten während eines Lesens von EISA- Bus 34 in den ADAC 116 nur "vefügbar" sind, wenn der FIFO nicht voll und nicht nahezu voll ist.
  • Nimmt man nun auf Fig. 43 Bezug, ist ein schematisches Diagramm des FIFO gezeigt. Ein 32-Bit-Multiplexer 470 hat seinen Auswahleingang mit einem FDIR-Signal verbunden, seinen ersten Satz von Eingängen mit Signalen, die als EDATAIN< > bezeichnet werden, verbunden, welche die Datensignale von dem EISA-Bus 34 sind, und seinen zweiten Satz von Eingängen mit TBD< > - Datensignalen von dem CTB 104 verbunden. Die Ausgänge des Multiplexers 470 sind mit dem D-Eingängen der vier Bänke der D-Flip-Flops 472, 474, 476 und 478 verbunden, wobei jede Bank der Flip-Flops 32 Bit breit ist, jede derart, daß jede Bank von Flip-Flops ein Datendoppelwort halten kann. Der Takteingang der ersten Bank der D-Flip-Flops 472 ist mit einem Signal WO verbunden, was impulsartig eingegeben wird, wenn die WPD< > -Signale gleich 00 und das WRITE-Signal logisch wahr ist. Ähnlich sind die Takteingänge der Bank der D-Flip-Flops 474, 476 und 478 mit den W1-, W2-, bzw. W3-Signal verbunden, welche als wahr freigegeben werden, wenn die WPD< > -Signale gleich 01, 10 bzw. 11 sind, und wenn das WRITE-Signal als wahr angelegt wird. Die 32 Q-Ausgänge einer jeden Bank der D- Flip-Flops 472, 474, 476 und 478 sind mit den entsprechenden vier Eingängen eines 32-Bit breiten Multiplexers 480 verbunden, dessen Ausgänge mit den D-Eingängen einer Bank von D- Flip-Flops 482 verbunden sind. Die Ausgänge der Bank der D- Flip-Flop 482 sind die DATAOUT< > -Signale, die die kollektive Ausgabe des FIFOS sind. Die Auswahleingänge des Multiplexers 480 sind mit den RPD< > -Signalen verbunden, die durch den Verzögerungsschreibzeiger 462 geliefert werden. Das READ-Signal ist mit den Takteingängen der Bank der D-Flip-Flops 482 verbunden, wobei die Bank der D-Flip-Flops 482 im allgemeinen als fünfte Stufe eines FIFOs mit der Tiefe 5 dient.
  • Im allgemeinen empfängt, wenn das FDIR-Signal wahr ist oder als logisch hochpegelig angelegt ist, der FIFO Daten von den TBD< > -Datensignalen durch den CTB 104 von dem ADAC 116 und er liefert diese Signale durch den FIFO in die DATAOUT< > - Signale, die weiter an die UA MUX/Verschiebeeinrichtung 314 gegeben werden. Wenn das FDIR-Signal tiefpegelig negiert ist, werden EDATAIN< > -Signale von der UA MUX/Verschiebeeinrichtung 314 durch den Multiplexer 470 in den FIFO gegeben, wo die DATAOUT< > -Signale durch den CTB 104 geliefert werden. Die Daten von dem Multiplexer 470 werden in eine der Bänke der Flip-Flops 472, 474, 476 oder 478 in Abhängigkeit davon, ob das W0,- W1-, W2- oder W3-Signal eingegeben wird, gelatcht. Die RPD< > -Signale bestimmen, welche Daten Doppelworte von den Bänken der D-Flip-Flops 472, 474, 476 oder 478 mit dem Multiplexer 480 ausgewählt werden, wobei die ausgewählten Datenworte in die D-Flip-Flops 480 gelatcht werden, wenn das READ- Signal eingegeben wird.

Claims (8)

1. Ein Controller für eine Plattenlaufwerksanordnung zur Verwendung mit einer Mehrzahl von Plattenlaufwerken, die eine Anordnung bilden, und zur Installation in einem Hauptcomputer (c), wobei der Controller aufweist:
eine lokale Prozessoreinrichtung (106) zum Steuern des Betriebs des Controllers für die Plattenlaufwerksanordnung;
eine Pufferspeichereinrichtung (118) zum temporären Speichern von Plattenlaufwerks- und Befehlsdaten;
eine Einrichtung (116) zum übertragen von Daten zwischen den Plattenlaufwerken und der Pufferspeichereinrichtung, wobei die Einrichtung mit der lokalen Prozessoreinrichtung zum Empfangen von Steuerinformation verbunden ist; und
eine Einrichtung zum Übertragen von Daten zwischen der Pufferspeichereinrichtung und dem Hauptcomputer, wobei die Einrichtung aufweist:
einen Bus (34) zum übertragen von Hauptadressen-Information und -Daten, wobei der Bus Bus-Controller und Busnebenstellen unterstützt;
eine Bus-Controllereinrichtung (100), die mit dem Bus und dem Hauptcomputer verbunden ist, um die Hauptadressen-Information zu empfangen und Daten zwischen dem Bus und dem Hauptcomputer zu übertragen, wobei die Bus-Controllereinrichtung als Busnebenstelle auf den Bus wirkt,
wobei die Bus-Controllereinrichtung (100) weiter mit dem Bus und der Pufferspeichereinrichtung verbunden ist, um Hauptadressen-Information an den Bus zu liefern und Daten zwischen dem Bus und der Pufferspeichereinrichtung zu übertragen, wobei die Bus-Controllereinrichtung als Bus- Controller auf den Bus wirkt, und aufweist:
eine Mehrzahl von Registern (306) zum Empfangen von Information, die für die Übertragung, die ausgeführt werden soll, bezeichnend ist,
eine Einrichtung (308) zum Steuern der Übertragung entsprechend der Information, die in dem Register enthalten ist; und
eine Einrichtung zum Laden von Daten, die einen Befehlsdeskriptorblock bilden, aus der Pufferspeichereinrichtung in die Register.
2. Der Controller nach Anspruch 1, in welchem die Bus- Controllereinrichtung (100) mit dem lokalen Prozessor (106) verbunden ist und weiter ein Register (312) zum Empfangen einer Adresse von dem lokalen Prozessor in der Pufferspeichereinrichtung (118), welche auf einen Befehlsdeskriptorblock zeigt, und eine Einrichtung umfaßt, um die Einrichtung zum Laden der Register auszulösen, nachdem eine Adresse eines Befehlsdeskriptorblocks in dem Register empfangen worden ist.
3. Der Controller nach Anspruch 2, in welchem der lokale Prozessor (100) an die Übertragungspuffereinrichtung (116) gekoppelt ist, und eine Einrichtung umfaßt, um einen Befehlsdeskriptorblock in der Pufferspeichereinrichtung (118) zu hinterlegen.
4. Der Controller nach Anspruch 2, in welchem die Bus- Controllereinrichtung (100) weiter eine Einrichtung aufweist, um die Werte in der Mehrzahl der Register (306) nach Beendigung der Übertragung in die Pufferspeichereinrichtung (118) zurückzuschreiben.
5. Der Controller nach Anspruch 4, in welchem die Buscontrollereinrichtung (100) weiter eine Einrichtung (318) umfaßt, um eine Adresse nach Beendigung der Übertragung an das Befehlsdeskriptorblock-Adreßregister zu liefern, welche auf den Ort, der dem geladenen Befehlsdeskriptorblock folgt, zeigt.
6. Der Controller nach Anspruch 5, in welchem die Register (306) ein Bit umfassen, das einen letzten Befehlsdeskriptorblock bezeichnet und in welchem die Bushauptkontrollsteuerung (100) weiter eine Einrichtung umfaßt, um die Einrichtung zum Laden auszulösen, nachdem der Ort, welcher der Adresse folgt, an das Befehlsdeskriptorblock-Adreßregister geliefert worden ist, falls das letzte Befehlsdeskriptorblock-Bit nicht in dem geladenen Befehlsdeskriptorblock gesetzt ist.
7. Der Controller nach Anspruch 6, in welchem die Register (306) ein Bit umfassen, welches eine Übertragung zum dem Bit- Sammelfeld bezeichnet, und in welchem die Bus- Controllereinrichtung (100) eine Einrichtung umfaßt, um Daten von der Pufferspeichereinrichtung (118) in das Bit-Sammelfeld zu übertragen, wenn das Bit gesetzt ist.
8. Der Controller nach Anspruch 1, in welchem die Register (306) ein Register zum Empfangen einer Startspeicheradresse in dem Hauptspeicher, ein Register zum Empfangen eines Hauptspeicher-Offsetwerts, der gleich der Datenstreifengröße ist, ein Register zum Empfangen einer Streifengröße, welche die Daten in einem Streifenabschnitt, der in einer einzelnen Platte enthalten ist, bezeichnet, und ein Register zum Zählen der übertragenen Datenmenge aufweisen, und in welchem die Bus-Controllereinrichtung (100) eine Einrichtung, um den Hauptspeicher-Offsetwert zu der Startspeicheradresse zu addieren, wenn die übertragene Datenmenge gleich der Streifengröße ist, und eine Einrichtung zum Ausgeben dieser Adresse an die Busnebenstelle umfaßt.
DE69316022T 1992-10-13 1993-10-04 Steuerungsvorrichtung fuer speicherplattenanordnung mit steuerbloecken fuer steuerungsinformation Expired - Fee Related DE69316022T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/960,595 US5448709A (en) 1992-10-13 1992-10-13 Disk array controller having command descriptor blocks utilized by bus master and bus slave for respectively performing data transfer operations
PCT/US1993/009557 WO1994009435A1 (en) 1992-10-13 1993-10-04 Disk array controller utilizing command descriptor blocks for control information

Publications (2)

Publication Number Publication Date
DE69316022D1 DE69316022D1 (de) 1998-02-05
DE69316022T2 true DE69316022T2 (de) 1998-05-20

Family

ID=25503370

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69316022T Expired - Fee Related DE69316022T2 (de) 1992-10-13 1993-10-04 Steuerungsvorrichtung fuer speicherplattenanordnung mit steuerbloecken fuer steuerungsinformation

Country Status (7)

Country Link
US (1) US5448709A (de)
EP (1) EP0664907B1 (de)
AT (1) ATE161642T1 (de)
AU (1) AU5353294A (de)
CA (1) CA2146029C (de)
DE (1) DE69316022T2 (de)
WO (1) WO1994009435A1 (de)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5689678A (en) * 1993-03-11 1997-11-18 Emc Corporation Distributed storage array system having a plurality of modular control units
CA2119085C (en) * 1994-03-15 2002-01-15 Deborah L. Pinard Adaptive communication system
US5745915A (en) * 1995-03-17 1998-04-28 Unisys Corporation System for parallel reading and processing of a file
US5832492A (en) * 1995-09-05 1998-11-03 Compaq Computer Corporation Method of scheduling interrupts to the linked lists of transfer descriptors scheduled at intervals on a serial bus
US5778430A (en) * 1996-04-19 1998-07-07 Eccs, Inc. Method and apparatus for computer disk cache management
US5778243A (en) * 1996-07-03 1998-07-07 International Business Machines Corporation Multi-threaded cell for a memory
US6029226A (en) * 1996-09-30 2000-02-22 Lsi Logic Corporation Method and apparatus having automated write data transfer with optional skip by processing two write commands as a single write command
US6016527A (en) * 1996-09-30 2000-01-18 Lsi Logic Corporation Method and apparatus for improving fairness in SCSI bus arbitration
US5854922A (en) * 1997-01-16 1998-12-29 Ford Motor Company Micro-sequencer apparatus and method of combination state machine and instruction memory
US5799182A (en) * 1997-01-21 1998-08-25 Ford Motor Company Multiple thread micro-sequencer apparatus and method with a single processor
US6092149A (en) * 1997-05-28 2000-07-18 Western Digital Corporation Disk drive cache system using a dynamic priority sequential stream of data segments continuously adapted according to prefetched sequential random, and repeating types of accesses
US6170031B1 (en) * 1997-07-08 2001-01-02 Seagate Technology Llc Read/write state machines for transferring data to/from host interface in a digital data storage system
US6704838B2 (en) 1997-10-08 2004-03-09 Seagate Technology Llc Hybrid data storage and reconstruction system and method for a data storage device
US6134630A (en) 1997-11-14 2000-10-17 3Ware High-performance bus architecture for disk array system
US6128686A (en) * 1998-06-15 2000-10-03 Compaq Computer Corporation Hiding peripheral memory transactions on a local bus within a peripheral controller from a host system bus
US6816934B2 (en) * 2000-12-22 2004-11-09 Hewlett-Packard Development Company, L.P. Computer system with registered peripheral component interconnect device for processing extended commands and attributes according to a registered peripheral component interconnect protocol
US6266731B1 (en) 1998-09-03 2001-07-24 Compaq Computer Corporation High speed peripheral interconnect apparatus, method and system
US6205494B1 (en) 1998-12-18 2001-03-20 Western Digital Corporation Controller with automatic generation of linked list of data transfer descriptors for sequential commands, with linked list being used for execution of sequential data transfers
US6370605B1 (en) 1999-03-04 2002-04-09 Sun Microsystems, Inc. Switch based scalable performance storage architecture
US6397267B1 (en) 1999-03-04 2002-05-28 Sun Microsystems, Inc. Redirected I/O for scalable performance storage architecture
US6349357B1 (en) * 1999-03-04 2002-02-19 Sun Microsystems, Inc. Storage architecture providing scalable performance through independent control and data transfer paths
US6604155B1 (en) 1999-11-09 2003-08-05 Sun Microsystems, Inc. Storage architecture employing a transfer node to achieve scalable performance
EP1301865A4 (de) * 2000-03-22 2009-04-01 Yotta Yotta Inc Verfahren und system zur bereitstellung von multimediainformationen auf anfrage über grossflächige netzwerke
US6675253B1 (en) 2000-04-04 2004-01-06 Hewlett-Packard Development Company, L.P. Dynamic routing of data across multiple data paths from a source controller to a destination controller
US6857059B2 (en) * 2001-01-11 2005-02-15 Yottayotta, Inc. Storage virtualization system and methods
JP4529063B2 (ja) * 2001-03-30 2010-08-25 ルネサスエレクトロニクス株式会社 システムシミュレータ、シミュレーション方法及びシミュレーションプログラム
US7240180B2 (en) 2003-06-12 2007-07-03 International Business Machines Corporation Method and system for simultaneously supporting different block sizes on a single hard drive
CN101621469B (zh) * 2009-08-13 2012-01-04 杭州华三通信技术有限公司 数据报文存取控制装置和方法
US9081666B2 (en) 2013-02-15 2015-07-14 Seagate Technology Llc Non-volatile memory channel control using a general purpose programmable processor in combination with a low level programmable sequencer
KR20150046966A (ko) * 2013-10-23 2015-05-04 삼성디스플레이 주식회사 플라즈마 처리 장치 및 플라즈마 처리 방법
US10055138B1 (en) * 2015-10-01 2018-08-21 EMC IP Holding Company LLC Topology aware I/O scheduling for RAID storage systems
US11200180B2 (en) * 2020-01-31 2021-12-14 Western Digital Technologies, Inc. NVMe SGL bit bucket transfers

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4742448A (en) * 1984-01-24 1988-05-03 Apple Computer, Inc. Integrated floppy disk drive controller
US4667286A (en) * 1984-12-20 1987-05-19 Advanced Micro Devices, Inc. Method and apparatus for transferring data between a disk and a central processing unit
US4775978A (en) * 1987-01-12 1988-10-04 Magnetic Peripherals Inc. Data error correction system
US5257367A (en) * 1987-06-02 1993-10-26 Cab-Tek, Inc. Data storage system with asynchronous host operating system communication link
US4965801A (en) * 1987-09-28 1990-10-23 Ncr Corporation Architectural arrangement for a SCSI disk controller integrated circuit
US4888691A (en) * 1988-03-09 1989-12-19 Prime Computer, Inc. Method for disk I/O transfer
US4993030A (en) * 1988-04-22 1991-02-12 Amdahl Corporation File system for a plurality of storage classes
US5249279A (en) * 1989-11-03 1993-09-28 Compaq Computer Corporation Method for controlling disk array operations by receiving logical disk requests and translating the requests to multiple physical disk specific commands
US5206943A (en) * 1989-11-03 1993-04-27 Compaq Computer Corporation Disk array controller with parity capabilities
US5195100A (en) * 1990-03-02 1993-03-16 Micro Technology, Inc. Non-volatile memory storage of write operation identifier in data sotrage device
JP2545482B2 (ja) * 1990-03-15 1996-10-16 富士通株式会社 インタ―フェイス装置の転送パラメ―タ設定方法
US5088081A (en) * 1990-03-28 1992-02-11 Prime Computer, Inc. Method and apparatus for improved disk access
US5124987A (en) * 1990-04-16 1992-06-23 Storage Technology Corporation Logical track write scheduling system for a parallel disk drive array data storage subsystem
US5210860A (en) * 1990-07-20 1993-05-11 Compaq Computer Corporation Intelligent disk array controller
US5241630A (en) * 1990-11-13 1993-08-31 Compaq Computer Corp. Device controller with a separate command path between a host and the device and a separate data path including a first in, first out memory between the host and the device
US5430747A (en) * 1991-03-14 1995-07-04 At&T Global Information Solutions Company Bus configuration validation for a multiple source disk array bus

Also Published As

Publication number Publication date
AU5353294A (en) 1994-05-09
US5448709A (en) 1995-09-05
CA2146029C (en) 1999-02-02
DE69316022D1 (de) 1998-02-05
EP0664907B1 (de) 1997-12-29
ATE161642T1 (de) 1998-01-15
CA2146029A1 (en) 1994-04-28
WO1994009435A1 (en) 1994-04-28
EP0664907A1 (de) 1995-08-02

Similar Documents

Publication Publication Date Title
DE69316022T2 (de) Steuerungsvorrichtung fuer speicherplattenanordnung mit steuerbloecken fuer steuerungsinformation
US5469548A (en) Disk array controller having internal protocol for sending address/transfer count information during first/second load cycles and transferring data after receiving an acknowldgement
DE69130106T2 (de) Arbitrierung von paketvermittelten Bussen, einschliesslich Bussen von Multiprozessoren mit gemeinsam genutztem Speicher
DE3689226T2 (de) Multiprozessorsystem mit multihierarchischen Ebenen.
DE60003387T2 (de) Direktspeicherzugriffssteuerung in einem rechnersystem
DE69032481T2 (de) Buszugriff für Digitalrechnersystem
DE69307717T2 (de) Priorisierung von mikroprozessoren in multiprozessorrechnersystemen
DE2854485C2 (de) Datenverarbeitungsanlage
DE69627528T2 (de) Stoss-rundsenden über einen pci-bus
DE69030861T2 (de) Bus-Master-Steuerprotokoll
DE69936060T2 (de) Verfahren und Vorrichtung für eine verbesserte Schnittstelle zwischen Computerkomponenten
DE3650092T2 (de) E/a-steuerung mit zwei funktionen.
DE69322248T2 (de) Reservierung, die den normalen vorrang von mikroprozessoren in multiprozessorrechnersystemen annulliert
DE69130203T2 (de) Folgerichtiger paketvermittelter Speicherbus für Multiprozessoren mit gemeinsam genutztem Speicher
DE69634182T2 (de) Direktspeicherzugriffssteuerung mit programmierbarer Zeitsteuerung
DE3889366T2 (de) Interface für ein Rechnersystem mit reduziertem Befehlssatz.
DE69032607T2 (de) Physischer, einziger Hauptspeicher, anteilig genutzt durch zwei oder mehr Prozessoren, die ihr jeweiliges Betriebssystem ausführen
DE602004012106T2 (de) Multikanal-DMA mit gemeinsamem FIFO-Puffer
DE69032783T2 (de) CPU-Bussteuerschaltung
DE68922784T2 (de) Mehrfachbus-Mikrorechnersystem mit Busarbitrierung.
DE69228582T2 (de) Vorrichtung zur Vermeidung von Prozessorblockierungen in einem Multiprozessorsystem
DE69329684T2 (de) Vorrichtung mit hauptrechnerindikationssignalen
DE69021594T2 (de) Hochgeschwindigkeitsdatenübertragung auf einem Rechnersystembus.
DE69108434T2 (de) Mehrgruppen-Signalprozessor.
DE3752205T2 (de) Multiprozessor-Busprotokoll

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee