-
Die
vorliegende Erfindung betrifft eine intelligente Datenbus-Schnittstelle
und insbesondere eine intelligente Datenbus-Schnittstelle mit einem
Multiport-Speicher und einem Datenprozessor.
-
Eine
typische Schnittstelle zwischen dem Bus eines Host-Computers und
dem Bus eines Slave-Computers oder einer I/O-Vorrichtung enthält einen
Dualport-Speicher mit zwei unabhängigen
bidirektionalen Ports. Der Dualport-Speicher liegt im Allgemeinen
in einem überlappenden
Adressbereich beider Computer. Daten werden zwischen den Computern übertragen,
indem ein Computer an jenen Adressbereich des Computers schreibt,
der dem Dualport-Speicher zugehörig
ist, und der andere Computer anschließend die Daten aus dem anderen
Adressbereich des Computers liest, der dem Dualport-Speicher zugehörig ist.
Der Dualport-Speicher ist als Schnittstelle zwischen einem Host-Bus
und einem Slave-Bus
besonders vorteilhaft, die bei verschiedenen Datenraten arbeiten.
Die Schnittstelle erfordert einen unterbrechungsgetriebenen Zugriff auf
die zentralen Verarbeitungseinheiten ("Central Processing Unit" – CPU) des Host-Computers und
des Slave-Computers für
Protokoll-, Steuerungs- und Datenverarbeitungsfunktionen. Jede CPU
wird durch die Schnittstellenunterbrechungen belastet, die einen
signifikanten Anteil der Verarbeitungsleistung der CPU fordern können.
-
Eine
typische intelligente Schnittstelle hat einen Eingangs-/Ausgangsprozessor
("Input/Output Processor" – IOP), der einen zweckbestimmten
Mikroprozessor enthält,
der ermöglicht,
dass die CPU des Host-Computers von vielen mit der Eingabe/Ausgabe
(I/O) zusammenhängenden
Aufgaben entlastet wird. Daher kann eine höhere I/O-Leistung erreicht werden, während die
Verarbeitungslast an der Host-CPU gesenkt wird. Zusätzlich kann
der IOP höhere
Ebenen des I/O-Protokolls ausführen,
Datenkonvertierungen durchführen,
wie Verschlüsselung/Entschlüsselung,
und intelligente Laufzeitoptimierungen, wie Read-Ahead Caching und
Write-Date Merging, durchführen.
-
Ein
Beispiel für
eine bestehende intelligente Datenbus-Schnittstelle ist als Netzwerkbrücke
100 in
U.S. Patent Nr. 5,130,981 an
Murphy offenbart. Der Begriff "intelligent" stammt von einem
zweckbestimmten Systemprozessor
101, der in der Netzwerkbrücke enthalten
ist. In der Netzwerkbrücke
von Murphy wird ein Singleport-Direktzugriffsspeicher ("Random Access Memory" – RAM)
102 zum Speichern
von Datenpaketen verwendet, die von der Netzwerkbrücke von
einem ersten Netzwerk
105 und von einem zweiten Netzwerk
106 durch
erste und zweite DMA-Steuerungen
103 bzw.
104 empfangen
werden. Der Systemprozessor und die DMA-Steuerungen haben über eine
3-Port-RAM-Schnittstelle Zugriff auf die Datenpakete, die im RAM
gespeichert sind, die verhindert, dass der Systemprozessor oder
die DMA-Steuerungen
simultan auf den Singleport-RAM zugreifen. Im Idealfall ordnet die
3-Port-RAM-Schnittstelle
107 den Zugriff dem Singleport-RAM
derart zu, dass der Prozessor und die zwei DMA-Steuerungen gleiche
Zugriffsprioritäten
für den
Singleport-RAM haben. Zur Bereitstellung gleicher Zugriffsprioritäten muss
jedoch die Zugriffszykluszeit des RAM das Dreifache der Zugriffszykluszeit
des Prozessors oder der DMA-Steuerungen
sein, wodurch die maximale Bandbreite der Netzwerkbrücke auf
etwa ein Drittel der Bandbreite des RAM begrenzt ist. Die 3-Port-RAM-Schnittstelle verknüpft den
Zugriff auf den Singleport-RAM in einer Weise, die einen simultanen
und asynchronen Zugriff durch den Prozessor und die DMA-Steuerungen
zu dem Singleport-Speicher verhindert. Ferner müssen alle Datenübertragungen
und alle Anfragen im Murphy-Patent zwischen den zwei Netzwerken
durch den RAM erfolgen.
-
US 5,434,818 betrifft eine
Vierport-RAM-Zelle. Eine Speichervorrichtung zur Verwendung in einem
digitalen Computersystem weist mehrere Speicherzellen auf, wobei
jede der mehreren Speicherzellen ein Bit Daten speichert. Das eine
Bit Daten hat einen Wert. Jede der mehreren Speicherzellen hat eine
erste Wortleitung, eine zweite Wortleitung, eine dritte Wortleitung,
eine vierte Wortleitung, eine erste Bitleitung, eine zweite Bitleitung,
eine dritte Bitleitung, eine vierte Bitleitung, eine fünfte Bitleitung
und eine sechste Bitleitung. In der ersten Bitleitung ist ein erstes
Schreibdaten-Bit enthalten und in der zweiten Bitleitung ist das
Inverse des ersten Schreibdaten-Bit enthalten. In der dritten Bitleitung
ist ein zweites Schreibdaten-Bit enthalten und in der vierten Bitleitung
ist das Inverse des zweiten Schreibdaten-Bit enthalten. Die erste
Wortleitung gibt die entsprechende Speicherzelle frei, so dass das
erste Schreibdaten-Bit, das in der ersten Bitleitung enthalten ist,
in der entsprechenden Speicherzelle gespeichert wird. Die zweite
Wortleitung gibt die entsprechende Speicherzelle frei, so dass das
zweite Schreibdaten-Bit, das in der dritten Bitleitung enthalten
ist, in der entsprechenden Speicherzelle gespeichert wird. Die dritte
Wortleitung gibt die entsprechende Speicherzelle frei, so dass der
Wert des einen Bit Daten, das sie enthält, auf die fünfte Bitleitung
gelegt wird. Die vierte Wortleitung gibt die entsprechende Speicherzelle
frei, so dass der Wert des einen Bit Daten, das sie enthält, auf
die sechste Bitleitung gelegt wird. Des Weiteren ist ein erster
Adressenport mit den mehreren Speicherzellen verbunden, so dass
die erste Wortleitung einer vorgegebenen Anzahl von Speicherzellen
freigegeben wird. Des Weiteren ist ein erster Datenport kommunikativ
an die mehreren Speicherzellen gekoppelt, um das erste Datenschreib-Bit
auf die erste Bitleitung der vorbestimmten Anzahl der mehreren Speicherzellen
zu legen, die von der ersten Wortleitung freigegeben werden, und
das Inverse des ersten Datenschreib-Bit auf die zweite Bitleitung
der vorbestimmten Anzahl der mehreren Speicherzellen zu legen, die
von der ersten Wortleitung freigegeben werden. Ein zweiter Adressenport
ist kommunikativ an die mehreren Speicherzellen gekoppelt, um die
zweite Wortleitung einer vorbestimmten Anzahl der mehreren Speicherzellen
freizugeben. Ein zweiter Datenport ist kommunikativ an die mehreren
Speicherzellen gekoppelt, um das zweite Schreibdaten-Bit auf die
dritte Bitleitung der vorbestimmten Anzahl der mehreren Speicherzellen
zu legen, die durch die zweite Wortleitung freigegeben werden, und das
Inverse des zweiten Schreibdaten-Bit auf die vierte Bitleitung der
vorbestimmten Anzahl der mehreren Speicherzellen zu legen, die durch
die zweite Wortleitung freigegeben werden.
-
Die
Offenbarung IDT "Synchronous
FourPort Static RAM",
Copyright 2003 Integrated Device Technology Inc. DSC-5649/3, August 2003
(IDT70V5388/78) betrifft einen 64/32 K × 18 Bit, synchronen FourPort-, statischen
Hochgeschwindigkeits-RAM. Die Speicheranordnung verwendet FourPort-Speicherzellen,
so dass ein simultaner Zugriff auf jede Adresse von allen vier Ports
möglich
ist. Register an Steuerungs-, Daten- und Adresseingängen sorgen
für minimale
Vorbereitungs- und Haltezeiten. Der Zeitspielraum, der durch diese
Methode geboten wird, ermöglicht
eine Konstruktion des Systems mit sehr kurzen Zykluszeiten. Mit
einem Eingangsdatenregister und integrierten Burst-Zählern wurde
das 70V5388/78 für
Anwendungen mit unidirektionalem oder bidirektionalem Datenfluss
in Bursts optimiert. Ein automatisches Leistungssenkungsmerkmal,
das durch CE0 und CE1 gesteuert
wird, ermöglicht,
dass die On-Chip-Schaltung jedes Ports in einen sehr niedrigen Bereitschaftsleistungsmodus
geht.
-
Im
Allgemeinen muss ein Betriebssystem eines Host-Computers und eines Slave-Computers
Hardwarespezifische Funktionen implementieren, um einen bestehenden
Datenbus oder eine bestehende Netzwerk-Schnittstelle zu verwenden. Derzeit
sind Bemühungen
um eine Standardisierung für
intelligente Datenbus-Schnittstellen
auf die Entkopplung des Betriebssystems von der spezifischen intelligenten
Schnittstellen-Hardware
gerichtet, indem ein standardmäßiges intelligentes
Schnittstellen-Protokoll definiert wird, das von dem Betriebssystem
unabhängig
ist. Daher ist eine intelligente Schnittstellen-Hardware, die das
Standardprotokoll implementiert, mit allen Betriebssystemen konform,
die das Standardprotokoll unterstützen. Beispielhafte Standards
sind die Intelligente I/O (I2O)-Architektur,
die Intel/Microsoft Virtual Interface (VI)-Architektur, die Uniform
Driver Interface und die IEEE SCI Physical Layer API. Der I2O-Standard
definiert insbesondere eine intelligente I/O-Hardware-Architektur, Byte-Transportprotokolle
zwischen einer Host-CPU und einem IOP, die Transporttreiber-Schnittstellen, das
Nachrichtenprotokoll und die IOP-Initialisierung
und -Konfiguration.
-
Ein
derzeit verfügbarer
intelligenter IOP 2, wie ein Intel i960RP, ist in 1 in
vereinfachter Form dargestellt. Der Intel IOP ist so positioniert,
dass er in dem I2O-Standard arbeitet. Der
IOP enthält
einen Mikroprozessor (Prozessor) 4 mit einem internen Speicher 6,
eine Speicher-Bus-Schnittstelleneinheit (MIU) 8, eine lokale
Bus-Schnittstelleneinheit (BIU) 12 und zwei Direktspeicherzugriffs-("Direct Memory Access" – DMA)Schnittstellen 14, 18.
Der Prozessor, die MIU-, BIU- und DMA-Schnittstellen sind durch
einen internen Bus 10 verbunden. Die große Zahl
an I/O-Schnittstellen
des IOP ermöglichen,
dass er als intelligente I/O-Brücke
wirkt, wie auch Initialisierungs- und Steuerfunktionen für die Bus-Schnittstelle ausführt. Die
primäre DMA-Schnittstelle 14 des
IOP ist für
gewöhnlich über den
lokalen PCI-(Peripheral
Component Interconnect)Bus 16 des Hosts an eine Host-CPU
(nicht dargestellt) angeschlossen. Eine sekundäre DMA-Schnittstelle 18 ist über einen
zweiten PCI-Bus 20 an die Netzwerk-Hardware (nicht dargestellt)
angeschlossen. Eine PCI-PCI-Brücke 22 ermöglicht einen
DMA-Datenaustausch zwischen den PCI-Bussen 16, 20,
ohne den IOP zu verwenden oder den Durchsatz an einem Bus zu verringern.
Der Mikroprozessor des IOP verwendet den internen Bus 10 für den Anschluss
der MIU 8 an die BIU 12 und an die zwei DMA-Schnittstellen 14, 18.
-
In
einem typischen I/O-Betrieb empfängt
der IOP 2 eine Anfrage, die an eine spezifische Adresse
gerichtet ist, in seinem internen On-Chip-Speicher 6. Der
Prozessor 4 dekodiert anschließend die Anfrage und antwortet
durch Konfigurieren einer passenden Netzwerkschnittstelle (nicht
dargestellt) unter Verwendung des PCI-Busses 20. Die Netzwerkschnittstelle
führt die
Anfrage durch und kopiert die resultierenden Daten in den/aus dem
Speicher des Host-Computers unter Verwendung der PCI-PCI-Brücke 22.
Nach Beendigung der DMA-Transaktion empfängt der IOP 2 eine
angemessene Unterbrechung, die einen Beendigungsvorgang für die Anfrage
auslöst.
-
Leistungseinschränkungen,
die sich aus der Architektur des IOP 2 ergeben, sind offensichtlich,
wenn eine zusätzliche
I/O-Datenverarbeitung erforderlich ist, wie eine Datenverschlüsselung/-entschlüsselung, Steuerung
eines paketweisen Stroms oder Implementierung höherer Protokollschichten in
der intelligenten Netzwerkschnittstelle. Für eine derartige I/O-Datenverarbeitung
muss der Prozessor 4 direkten Zugriff auf den Datenstrom
haben. Der Zugriff der CPU auf den Datenstrom kann unter Verwendung
mehrerer Techniken erfolgen, von welchen zwei in der Folge dargestellt
sind.
-
In
einer ersten Technik führt
der Prozessor 4 programmierte Eingaben/Ausgaben aus, liest
direkt aus internen dynamischen Pufferspeichern der Netzwerkschnittstelle
unter Verwendung des PCI-Busses 20, verarbeitet die Daten
intern, und schreibt unter Verwendung des Host-PCI-Busses 16 die
Daten direkt in den Zielspeicher in dem primären PCI-Adressenraum. Leider
kann während
solcher programmierter Eingaben/Ausgaben an einer der zwei DMA-Schnittstellen 14, 18 jede
Zugriffslatenz den Prozessor 4 deutlich verlangsamen, wodurch
seine Verarbeitungseffizienz verringert wird. Ferner ist die gesamte
verfügbare
Bandbreite durch den IOP auf eine halbe Bandbreite des internen
Busses 10 minus Prozessor-Programm-Code-Fetches (Programm-Cache-Misses) und
Zugriffslatenzen oder Verzögerungen
an einer der beiden DMA-Schnittstellen 14, 18 begrenzt.
-
In
einer zweiten Technik können
die PCI-Bus-Zugriffslatenzen
durch Verwendung von DMA-Prozessoren in den zwei Schnittstellen 14, 18 vermieden
werden, um Daten zu und von dem lokalen Speicher (nicht dargestellt) über die
MIU 8 durch einen lokalen Speicherbus 24 zu bewegen.
Der lokale Speicher dient als dynamischer Pufferspeicher für jede I/O-Verarbeitung. Der
interne Hochgeschwindigkeitsspeicher 6 kann auch ein dynamischer
Pufferspeicher sein, um PCI-Bus-Latenzen zu verhindern. Der interne
Speicher 6 ist für
gewöhnlich
klein, z. B. 1 KByte, wodurch eine enge Kopplung zwischen dem Sender
und Empfänger
von Datenpaketen erforderlich ist. Bei Verwendung des internen Speichers 6 ist
die gesamte verfügbare
Bandbreite auf eine halbe Bandbreite des Busses 10 beschränkt, minus
Code-Fetches durch den Prozessor 4. Die Zugriffslatenz
zu einem der PCI-Busse wird über
größere Daten-Bursts
amortisiert und kann vernachlässigt
werden. Wenn der interne Speicher 6 jedoch zu klein ist
und der lokale Speicher (nicht dargestellt) verwendet wird, ist der
gesamte Datendurchsatz auf ¼ der
Bandbreite des internen Busses 10 minus der Bandbreite,
die für
Code-Fetches notwendig ist, verringert.
-
Wie
die Bandbreiteneinschränkungen
der zwei zuvor beschriebenen Techniken zeigen, ist die Architektur
des bestehenden IOP 2 vorteilhaft, wenn der IOP Plan- und Steueroperationen
ausführt.
Wenn der IOP jedoch auf einen Hochgeschwindigkeitsdatenstrom zugreifen
muss, ist seine Leistung aufgrund der inhärenten Bandbreitenbegrenzungen
seiner Architektur stärker
eingeschränkt.
-
Daher
besteht ein definitiver Bedarf an einer intelligenten Datenbus-Schnittstelle
mit einem internen Prozessor, der auf einen Hochgeschwindigkeitsdatenstrom
zugreifen und diesen bearbeiten kann, ohne die Datenrate des Stroms
durch die Schnittstelle ungebührlich
zu beeinflussen. Ferner besteht ein Bedarf an einer intelligenten
Datenbus-Schnittstelle, die Daten über die Schnittstelle leiten
kann, ohne dass die Schnittstelle einen internen Superhochgeschwindigkeitsdatenbus
aufweisen muss, der bei einer Bandbreite arbeiten muss, die um ein
Vielfaches größer als
die Bandbreite eines Hochgeschwindigkeitsdatenstroms ist. Die vorliegende Erfindung
erfüllt
diesen Bedarf und bietet weitere damit in Zusammenhang stehende
Vorteile.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Die
vorliegende Erfindung wird durch eine intelligente Datenbus-Schnittstelle
und ein zugehöriges
Verfahren verkörpert,
um flexible und effiziente Datenschnittstellen bereitzustellen.
Die intelligente Datenbus-Schnittstelle enthält einen Multiport-Speicher, einen ersten
bidirektionalen Datenbus, einen zweiten bidirektionalen Datenbus
und einen Prozessor. Der Multiport-Speicher hat mehrere Datenspeicherzellen
und hat mindestens drei unabhängige
bidirektionale Datenports, die so konfiguriert sind, dass sie simultan
und asynchron Daten aus den mehreren Datenspeicherzellen lesen und
in diese schreiben. Der erste bidirektionale Datenbus ist an einen
ersten Port der bidirektionalen Datenports gekoppelt. Der zweite
bidirektionale Datenbus ist an einen zweiten Port der bidirektionalen
Datenports gekoppelt. Der Prozessor ist an einen dritten Port der bidirektionalen
Datenports gekoppelt und bearbeitet Daten in den mehreren Datenspeicherzellen.
Die intelligente Datenbus-Schnittstelle
ermöglicht
unter Verwendung eines Multiport-Speichers, dass jeder bidirektionale
Datenbus unabhängig
bei seiner Datenrate voller Bandbreite arbeitet, während eine
Datenstromverarbeitung durch den Prozessor bereitgestellt wird.
-
In
einem ausführlicheren
Merkmal der Erfindung enthält
die intelligente Datenbus-Schnittstelle des Weiteren eine erste
Datenbus-Schnittstelleneinheit, die zwischen dem ersten bidirektionalen
Datenbus und dem ersten bidirektionalen Datenport gekoppelt ist,
eine zweite Datenbus-Schnittstelleneinheit, die zwischen dem zweiten
bidirektionalen Datenbus und dem zweiten bidirektionalen Datenport
gekoppelt ist. Die erste und zweite Datenbus-Schnittstelleneinheit
schreiben Daten asynchron in die mehreren Datenspeicherzellen und lesen
asynchron Daten aus diesen. Der Prozessor bearbeitet Daten asynchron,
die zuvor von einer der ersten und zweiten Datenbus-Schnittstellen
in einen Abschnitt der mehreren Datenspeicherzelle geschrieben wurden,
während
die erste und zweite Busschnittstelle simultan Daten in jeweils
andere Abschnitte der mehreren Datenspeicherzellen schreiben oder
aus diesen lesen. Die intelligente Datenbus-Schnittstelle kann auch
eine logische Durchgangseinheit enthalten, die zwischen den ersten
und zweiten Busschnittstelleneinheiten gekoppelt ist, um eine Datenbrücke zwischen
dem ersten und zweiten Datenbus bereitzustellen. Zusätzlich kann
der erste Datenbus ein PCI-Datenbus sein, die erste Datenbus-Schnittstelleneinheit
kann eine PCI-Schnittstelleneinheit
sein, der zweite Datenbus kann ein SCI-Datenbus sein und die zweite
Datenbus-Schnittstelle
kann eine SCI-Schnittstelleneinheit sein. Die logische Durchgangseinheit
kann eine Datenadresse auf dem SCI-Datenbus in eine Datenadresse
auf dem PCI-Datenbus
umsetzen, um eine SCI-PCI-Datenbusbrücke bereitzustellen. Die logische
Durchgangseinheit kann auch eine Datenadresse auf dem PCI-Datenbus
in eine Datenadresse auf dem SCI-Datenbus umsetzen, um eine PCI-SCI-Datenbusbrücke bereitzustellen.
Ferner kann ein interner Bus zwischen dem Prozessor und der PCI-Schnittstelleneinheit
gekoppelt sein.
-
In
einem ausführlicheren
Merkmal der Erfindung kann der SCI-Datenbus eine 64-Bit-Datenadresse verwenden,
der PCI-Datenbus kann eine 32-Bit-Datenadresse verwenden, und der
Multiport-Speicher kann ein Dreifachport-Speicher sein, der einen Vierfachport-Speicher
verwendet, von dem zwei seiner vier Ports so konfiguriert sind,
dass sie den zweiten bidirektionalen Datenbus bilden, der an den
SCI-Datenbus gekoppelt ist. Ferner kann die logische Durchgangseinheit
eine Fly-by-Adressumsetzung
zwischen der SCI-Busschnittstelleneinheit
und der PCI-Busschnittstelleneinheit
implementieren. Ebenso kann die Datenbrücke eine Protokollkonvertierung
zwischen einem geteilten Transaktionsprotokoll (Split Transaction
Protocol) und einem vereinten Transaktionsprotokoll (Unified Transaction
Protocol) ausführen.
Als Alternative kann der Prozessor Blocklesevorgänge zwischen der ersten und
zweiten Datenbus-Schnittstelle planen, um einen Kettenmodus-DMA
zu implementieren.
-
In
einem ausführlicheren
Merkmal der Erfindung kann der erste Datenbus ein Host-PCI-Datenbus sein,
wobei die erste Datenbus-Schnittstelleneinheit eine erste DMA-Schnittstelleneinheit
ist, der zweite Datenbus kann ein Slave-PCI-Datenbus sein, wobei
die zweite Datenbus-Schnittstelleneinheit
eine zweite DMA-Schnittstelleneinheit
ist, und die logische Durchgangseinheit leitet entsprechend eine
Datenadresse auf dem Host-PCI-Datenbus zu dem Slave-PCI-Datenbus
und leitet eine Datenadresse auf dem Slave-PCI-Datenbus zu dem Host-PCI-Datenbus,
um eine PCI-PCI-Brückeneinheit
bereitzustellen. Als Alternative kann ein dritter bidirektionaler
Datenbus, wie ein ATM-Bus, an einen vierten Port der mindestens
drei bidirektionalen Datenports durch eine ATM-Schnittstelle gekoppelt
sein, der erste Datenbus kann ein Ethernet-Datenbus sein, wobei
die erste Datenbus-Schnittstelleneinheit eine erste Ethernet-Schnittstelleneinheit
ist, der zweite Datenbus kann ein Ethernet-Datenbus sein, wobei
die zweite Datenbus-Schnittstelleneinheit eine zweite Ethernet-Schnittstelleneinheit
ist, und die logische Durchgangseinheit kann eine Datenbrücke zwischen
dem ersten und zweiten Ethernet-Bus bereitstellen. Ebenso kann ein
interner Bus an den Prozessor, an die erste Datenbus-Schnittstelleneinheit
und an die zweite Datenbus-Schnittstelleneinheit gekoppelt sein,
um eine Kommunikation für
Steuerungs- und Konfigurationsanweisungen unter dem Prozessor und
den ersten und zweiten Datenbus-Schnittstelleneinheiten zu ermöglichen.
-
In
weiteren ausführlicheren
Merkmalen der Erfindung führt
der Prozessor eine Verschlüsselung
und Entschlüsselung
an Daten durch, die im Multiport-Speicher
gespeichert sind. Ferner kann der Prozessor eine Digitalzustandsmaschine
oder eine Datenmanipulationszustandsmaschine für eine Datenverschlüsselung
und -entschlüsselung
sein. Der Prozessor kann einen lokalen Speicher zur Implementierung
eines reflektiven Speicherprotokolls eines Speicher-Caches enthalten.
Zusätzlich
kann ein zweiter Prozessor an einen vierten Port der mindestens
drei bidirektionalen Datenports gekoppelt sein. Ebenso kann eine
Host-Busschnittstelle an einen Port des Multiport-Speichers gekoppelt
sein.
-
Eine
alternative Ausführungsform
der vorliegenden Erfindung ist eine Schnittstelle, die einen Prozessor,
eine erste Busschnittstelle zum Empfangen von Daten von und Übertragen
von Daten zu einem ersten Datenbus, eine zweite Busschnittstelle
zum Empfangen von Daten von und Übertragen
von Daten zu einem zweiten Datenbus, und einen Dreifachport-Speicher
mit ersten, zweiten und dritten Ports zum Speichern von Daten in
mehreren Speicherzellen und zum Lesen der gespeicherten Daten aus
den Speicherzellen enthält. Der
erste Port ist derart an die erste Busschnittstelle gekoppelt, dass
Daten, die von dem ersten Datenbus empfangen werden, in den Speicherzellen
gespeichert werden, und Daten, die von der ersten Busschnittstelle aus
den Speicherzellen gelesen werden, zu dem ersten Datenbus übertragen
werden. Der zweite Port ist derart an die zweite Busschnittstelle
gekoppelt, dass Daten, die von dem zweiten Datenbus empfangen werden, in
den Speicherzellen gespeichert werden, und Daten, die von der zweiten
Busschnittstelle aus den Speicherzellen gelesen werden, zu dem zweiten
Datenbus übertragen
werden. Der Prozessor ist an den dritten Port zum Lesen, Verarbeitung
und Speichern von Daten in den Speicherzellen gekoppelt, und die
Daten, die in einer bestimmten Speicherzelle durch einen bestimmten
Port gespeichert werden, stehen zum Lesen durch einen anderen Port
zur Verfügung,
unabhängig
von dem bestimmten Port und während
der bestimmte Port Daten aus einer anderen Speicherzelle liest oder
in Daten dieser speichert.
-
Die
vorliegende Erfindung ist auch in einem Verfahren zur Übergabe
von Daten verkörpert.
Das Verfahren enthält
das Bereitstellen eines Multiport-Speichers mit mehreren Datenspeicherzellen,
Speichern von Daten, die durch einen ersten Port von einem ersten
Datenbus empfangen wurden, in einem ersten Abschnitt der mehreren
Speicherzellen, und Verarbeiten, durch einen zweiten Port, der Daten,
die in dem ersten Abschnitt der mehreren Datenspeicherzellen gespeichert
sind, während
Daten, die durch den ersten Port von dem ersten Datenbus empfangen
werden, unabhängig
und simultan in einem zweiten Abschnitt der mehreren Speicherzellen
gespeichert werden.
-
Als
ausführlicheres
Merkmal der Erfindung enthält
das Verfahren des Weiteren das Lesen, durch eine dritten Datenport,
verarbeiteter Daten, die in dem ersten Abschnitt der mehreren Datenspeicherzellen
gespeichert sind, während
durch den zweiten Port die Daten, die in dem zweiten Abschnitt der
mehreren Datenspeicherzellen gespeichert sind, unabhängig und
simultan verarbeitet werden, und während Daten, die durch den ersten
Port von dem ersten Datenbus empfangen werden, in einem dritten
Abschnitt der mehreren Speicherzellen unabhängig und simultan gespeichert
werden.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist
ein vereinfachtes Blockdiagramm eines intelligenten I/O-Prozessors
nach dem Stand der Technik.
-
2 ist
ein Blockdiagramm einer ersten Ausführungsform einer intelligenten
Datenbus-Schnittstelle gemäß der Erfindung
mit einem Dreifachport-Speicher für einen Betrieb zwischen zwei
PCI-Bussen.
-
3 ist
ein Blockdiagramm einer zweiten Ausführungsform einer intelligenten
Datenbus-Schnittstelle gemäß der Erfindung
mit einem Vierfachport-Speicher und zwei Prozessoren für einen
Betrieb zwischen ersten und zweiten Netzwerkbussen.
-
4 ist
ein Blockdiagramm einer dritten Ausführungsform einer intelligenten
Datenbus-Schnittstelle gemäß der Erfindung
für einen
Betrieb zwischen einem PCI-Bus und einem SCI-Bus.
-
5 ist
ein schematisches Diagramm einer Fly-by-Adressumsetzungsmethode, zur Verwendung
mit der Busschnittstelle von 4 unter
Verwendung einer Adressumsetzungstabelle zum Konvertieren von Adressen
zwischen den Adressdomänen
des SCI-Busses und des PCI-Busses.
-
6 ist
ein Datenflussdiagramm eines Verfahrens zum Konvertieren einer 64-Bit-SCI-Adresse
in eine 32-Bit-PCI-Adresse
gemäß der Fly-by-Adressumsetzungsmethode
von 5.
-
7 ist
ein Datenflussdiagramm eines anderen Verfahrens zum Konvertieren
einer 64-Bit-SCI-Adresse in eine 32-Bit-PCI-Adresse gemäß der Fly-by-Adressumsetzungsmethode
von 5.
-
8 ist
ein schematisches Diagramm eines Dreifachport-Speichers, der aus
einem Vierfachport-Speicher
gebildet ist, gemäß der Erfindung,
mit zwei n-Bit breiten
Datenbussen und einem 2n-Bit breiten Datenbus.
-
9 ist
ein schematisches Diagramm von vier Vierfachport-Speichern, die
zur Bildung eines Dreifachport-Speichers konfiguriert sind, gemäß dem Dreifachport-Speicher
von 8 mit einem 32-Bit-PCI-Bus und einem 64-Bit-SCI-Bus.
-
10 ist
ein Blockdiagramm eines intelligenten Netzwerk-Routers, basierend
auf einem Vierfachport-Speicher
gemäß der vorliegenden
Erfindung zur Kopplung zwischen zwei Ethernet-Netzwerken und einem
ATM-Netzwerk.
-
AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN
AUSFÜHRUNGSFORMEN
-
Unter
Bezugnahme nun auf 2 ist eine intelligente Datenbus-Schnittstelle 30 gemäß einer
ersten Ausführungsform
der Erfindung dargestellt. Die Busschnittstelle 30 kann
ungefähr
gleich dem IOP 2 von 1 sein,
enthält
aber des Weiteren einen Multiport-Speicher 32, wie einen Dreifachport-Speicher,
und eine logische Durchgangseinheit 52. Die Schnittstelle
enthält
einen Prozessor 34 mit einem internen Prozessorspeicher 36 und
enthält
zwei externe Busschnittstellen 44, 48, die dem
ersten bzw. zweiten Datenbus 46, 50 zugeordnet
sind. Jeder Datenbus 46, 50 ist an einen bidirektionalen
Datenport 32a, 32b des Dreifachport-Speichers
durch die jeweilige Busschnittstelle 44, 48 gekoppelt,
die Datenpakete von spezifizierten Pufferspeicherzellen im Dreifachport-Speicher empfangen
und an diese übertragen
kann. Der Prozessor 34 ist an einen dritten bidirektionalen
Datenport 32c des Dreifachport-Speichers gekoppelt. Ein
besonderer Vorteil der intelligenten Datenbus-Schnittstelle gemäß der Erfindung ist, dass jeder
bidirektionale Datenport unabhängig
Daten bei einer Datenrate bis zur vollen Zugriffsgeschwindigkeit
ohne Synchronisierung mit den oder Warten auf die anderen Datenports
senden oder empfangen kann.
-
Der
Prozessor 34 ist durch einen internen Bus 40 an
den dritten Port 32c des Dreifachport-Speichers 32 und
an die DMA-Schnittstellen 44, 48 gekoppelt. Da
der Prozessor durch den dritten Port des Dreifachport-Speichers Zugriff
auf die Daten beider Datenbusse 46, 50 hat, kann
er Daten, die in dem Dreifachport-Speicher liegen, bei einer Rate
unabhängig
von der Datenrate jedes Datenbusses 46, 50 bearbeiten,
ohne die Datenübertragung
bei Vollgeschwindigkeit zwischen jedem Datenbus und dem Dreifachport-Speicher
zu unterbrechen.
-
Daher
kann der Prozessor einen Slot eines Pufferspeichers oder ein Segment
von Speicherzellen in dem Dreifachport-Speicher modifizieren, während in
einen zweiten Pufferspeicher oder ein zweites Segment von Speicherzellen
durch eine erste Busschnittstelle geschrieben wird, und während Daten
von einem dritten Pufferspeicher oder Segment von Speicherzellen
durch eine zweite Busschnittstelle gelesen werden. Somit können die
Datenbusse 46, 50 bei voller Geschwindigkeit arbeiten
und sind von dem Prozessor 34 vollkommen unabhängig. Wenn
eine zusätzliche
Verarbeitungsleistung notwendig ist, um einen Hochgeschwindigkeitsdatenstrom
zu unterstützen,
können
dem Dreifachport-Speicher zusätzliche
Ports hinzugefügt
werden, wodurch ein Multiport-Speicher entsteht, mit zusätzlichen
Prozessoren, die an die zusätzlichen
Ports angeschlossen sind.
-
Die
intelligente Datenbus-Schnittstelle 30 der vorliegenden
Erfindung kann des Weiteren eine Speicherbus-Schnittstelleneinheit
(MIU) 38 und eine lokale Busschnittstelleneinheit (BIU) 42 enthalten,
die in ihrer Funktion der MIU 8 und der BIU 12 von 1 ähnlich sind.
Durch einen zweckbestimmten Port 32c des Multiport-Speichers 32 hat
der Prozessor 34 direkten Zugriff auf alle Daten, die durch
die zwei Busschnittstellen 44, 48 gehen. Der Prozessor
ist der Master des internen Busses 40 und daher gibt es
keine Zugriffslatenz oder andere Buskonkurrenz, wenn der Prozessor
auf den Multiport-Speicherport durch den internen Bus zugreift.
Infolgedessen ist die gesamte verfügbare Datenkonvertierungsbandbreite
durch die Schnittstelle 30 eine halbe Bandbreite des gesamten
internen Multiport-Speicherports des Prozessors, bestimmt durch
die Geschwindigkeit des internen Busses 40, minus der Bandbreite,
die für
Prozessor-Programm-Code-Fetches
(Programm-Cache-Misses) erforderlich ist. Die Bandbreite des internen
Busses kann leicht durch ausreichendes Vergrößern ihrer Breite auf das Zweifache der
Bandbreite des schnellsten externen Busses vergrößert werden. Der Prozessor
kann auch durch den internen Bus zum Initialisieren und Konfigurieren
der Busschnittstellen direkten Zugriff auf jede Busschnittstelle 44, 48 haben.
-
Die
zwei Ports des Multiport-Speichers 32, die an zwei Busschnittstellen 44, 48 angeschlossen
sind, können
Datenpakete bei Datenraten bis zur Bandbreite des Speichers empfangen
oder übertragen.
Die Busschnittstellen können
unter Verwendung der logischen Durchgangseinheit 52 in
Kombination mit dem Multiport-Speicher 32 so
konfiguriert sein, dass sie eine ähnliche Funktion wie die PCI-PCI-Brücke 22 in 1 haben,
um eine Weiterleitung von Datenpaketen in einer "Durchgangsweise" zu implementieren, ohne dass der Prozessor 34 auf
die Daten zugreifen muss. Die logische Durchgangseinheit 52 kann
selektiv die Datenpakete paketweise bearbeiten und somit eine Filterfunktion
implementieren. Eine Entscheidung, ein bestimmtes Datenpaket weiterzuleiten,
erfolgt, wenn das Paket an einer der Busschnittstellen empfangen
wird, ohne das Paket durch den Prozessor zu leiten. Die logische
Durchgangseinheit kann eine Zustandsmaschine sein, die durch den
Prozessor konfiguriert wird und die triviale Quittungspakete abfängt oder
besondere Datenpakete umleitet, wodurch der Prozessor 34 von
der Aufgabe der Verarbeitung trivialer Pakete entlastet wird. Die
logische Durchgangseinheit implementiert eine gewählte Ebene
der Paketbehandlung, die mit der Kopplung mit vereinten Transaktionsbussen,
geteilten Transaktionsbussen und Netzwerken, wie PCI, SBUS, SCI,
SerialExpress, ATM oder Ethernet verbunden ist.
-
Der
Prozessor 34 hat unbegrenzten direkten Zugriff auf jeden
Teil des Datenstroms, so dass sowohl eine Protokollkonvertierung
wie auch eine Bandbreitenkonvertierung zwischen verschiedenen Bussen
möglich sind.
Der Prozessor kann komplexe Datenmanipulationen an jedem Teil des
Datenstroms ausführen,
ohne eine der Busschnittstellen zu beeinflussen. Somit kann der
Prozessor effizient niedere Netzwerk-Protokollschichten aufnehmen,
um die Verarbeitungslast des Host-Prozessors zu verringern. Der
Mehraufwand bei der Paketverarbeitung durch den Prozessor ist eine
erhöhte
Latenz in der intelligenten Datenbus-Schnittstelle. Diese Latenz
ist jedoch viel geringer als jede Latenz, die durch die Host-CPU
auferlegt wird, die dieselbe Aufgabe erfüllt.
-
Der
Einfachheit wegen verwendet die intelligente Datenbus-Schnittstelle 30,
die in 2 dargestellt ist, einen Dreifachport-Speicher 32.
Die Erfindung ist jedoch nicht auf einen Dreifachport-Speicher begrenzt. Wie
zum Beispiel in 3 dargestellt ist, kann ein
Vierfachport-Speicher 32' zur
Unterstützung
eines zusätzlichen
Prozessors 34' verwendet
werden, wie eine Hardware-Verschlüsselungs-/Entschlüsselungsmaschine, die
an den vierten Port 32d des Speichers angeschlossen ist.
Der zusätzliche
Prozessor kann die Bandbreite verringern, die für einen internen Bus 40' erforderlich
ist.
-
Eine
andere Ausführungsform
der intelligenten Busschnittstelle, die einen Multiport-Speicher 70 verwendet,
kann eine SCI-PCI-Brücke 60 sein,
wie in 4 dargestellt ist. Die Brücke koppelt einen PCI-Bus 62, der
häufig
als vereinter Transaktionsbus charakterisiert ist, und einen SCI-Bus 64,
der häufig
als geteiltes Transaktionsnetzwerk charakterisiert ist. SCI-Pakete,
die an einer SCI-Schnittstelle 66 empfangen werden, können Read-Ahead-Cache-Lines
sein und müssten
daher innerhalb eines dynamischen Pufferspeichers in einem Dreifachport-Speicher 70 gespeichert
werden. Die Brücke
enthält
auch eine PCI-Schnittstelle 68, die zwischen dem Dreifachport-Speicher 70 und
dem PCI-Bus 62 gekoppelt ist. Die zwei Datenbusse 62 und 64 können asynchron
arbeiten, d. h., bei verschiedenen Datenraten.
-
Unter
Verwendung im Handel erhältlicher
Multiport-Speicher
kann die intelligente Multiport-Speicherbrücke 60 unter Verwendung
von Commercial-Off-The-Shelf-(COTS-)Chips
implementiert werden, wodurch teurere anwendungsspezifische integrierte
Schaltungs-(ASIC)Designs vermieden werden. Die verschiedenen logischen
Teile des Designs könnten
auch zu einer einzigen ASIC für
verringerte Hochvolumenproduktionskosten kombiniert werden. Die
SCI-PCI-Brücke 60 ist
in 4 als Board-Level-Vorrichtung
und nicht als Chip-Vorrichtung dargestellt. Ein interner Bus 72 verbindet
einen Prozessor 74 mit seinem lokalen Speicher 76,
einer Firmware 78, wie einem Nur-Lese-Speicher ("Read Only Memory" – ROM), und einem Dreifachport-Speicher 70.
Der Prozessor ist eine COTS-Mikrosteuerung. Der Prozessor hat direkten
Zugriff auf die lokale PCI-Busschnittstelle 68 zur
Initialisierung, Konfiguration und für spezielle Zyklen, wie Lese-Modifizierungs-,
Schreib-Transaktionen. Der direkte PCI-Zugriffspfad kann auch zur
Implementierung einer reflektiven Speicherregion im lokalen Speicher 76 verwendet
werden. Der Prozessor kann zur Implementierung eines Synchronisierungsprotokolls
für den
reflektiven Speicher mit allen anderen konformen, fernen, reflektiven Speichern
unter Verwendung des SCI-Netzwerkes
verwendet werden. In diesem Szenario kann der lokale PCI direkt
aus dem reflektiven lokalen Speicher 76 lesen.
-
Sowohl
die SCI-Schnittstellen 66 wie auch die PCI-Schnittstelle 68 können gleiche
Dualfunktionalität implementieren,
die ihnen den Empfang und die Übertragung
von Daten ermöglichen.
Die Hauptfunktionalität der
Busschnittstelle 60 ist die Fähigkeit, ein bestimmtes Datenpaket über die
Schnittstelle zu übertragen.
Für die
SCI-Schnittstelle 66 wird ein Datenpaket, das sich im Dreifachport-Speicher 70 befindet,
zu dem Netzwerk gesendet, während für die PCI-Schnittstelle 68 ein
Datenpaket, das sich im Dreifachport-Speicher befindet, in eine
spezifizierte PCI-Adresse geschrieben oder aus dieser gelesen wird.
-
Die
SCI-Schnittstelle 66 empfängt Daten und speichert diese
in einem verfügbaren
dynamischen Pufferspeicher. Wie dem Fachmann allgemein bekannt ist,
kann ein dynamischer Pufferspeicher unter Verwendung freier Pufferspeicherlisten
oder Verfügbarkeitsverweistabellen
implementiert werden. Das gewählte
Verfahren für
das Pufferspeicher-Ressourcenmanagement ist für die vorliegende Erfindung
nicht von Bedeutung. Weitere eingehende Anfragen werden blockiert,
wenn keine freien Pufferspeicher zur Verfügung stehen. Die SCI-Schnittstelle überwacht
auch die Daten, um zu bestimmen, ob ein bestimmtes Paket von dem
Prozessor 74 oder einer logischen Durchgangseinheit 80 bearbeitet
werden muss.
-
Da
der PCI-Bus 62 ein vereinter Transaktionsbus ist, ist die
PCI-Schnittstelle 68 komplexer. Für Schreibtransaktionen werden
die Daten in verfügbaren
Pufferspeichern gespeichert. Wenn die PCI-Datenburstgröße eine Blockgröße von 64
oder 256 Byte überschreitet,
werden mehrfache Schreibbursts erzeugt. Wenn alle Schreibpufferspeicher
voll sind, gibt die PCI-Schnittstelle Neuversuche aus, bis mindestens
ein Pufferspeicher frei ist. Bei jedem erzeugten PCI-Datenburst benachrichtigt
die PCI-Schnittstelle 68 den Prozessor 74 unter
Anwendung einer bestehenden Methode, wie Nachrichtenschlangen, über die
anstehende Anfrage. Der Prozessor führt dann jede notwendige Reformatierung
und Adressumsetzung durch. Nach erfolgreicher Beendigung der Schreib-Paketverarbeitung
bestimmt der Prozessor das Paket zur Übertragung an die SCI-Netzwerkschnittstelle.
-
Für PCI-Lesetransaktionen
definiert eine interne Adressenkarte, ob der besondere Lesevorgang
die reflektive Speicherregion wählt,
die Teil des lokalen Speichers 76 ist, oder ob ein transparenter
Lesevorgang ausgeführt
wird. Für
Zugriffe auf den lokalen reflektiven Speicher 76 wird der
lokale Bus 72 arbitriert und die angemessene Lesetransaktion
ausgeführt.
Für transparente
Lesevorgänge
wird die Leseadresse als Leseanfrage in den Dreifachport-Speicher 70 geschrieben
und der Prozessor benachrichtigt. Der Prozessor prüft um zu
bestimmen, ob die angeforderten Lesedaten in einem der lokalen Caches
verfügbar
sind. Wenn die angeforderten Daten nicht im Cache sind, wird eine
angemessene SCI-Leseanfrage erstellt. Wenn die bestimmten Attribute
ein Read-Ahead-Caching
zulassen, wird eine 64- oder 256-Byte-Lesetransaktion erstellt, die das angeforderte
Wort abdeckt. Die Gemeinkosten zum Lesen von 64 Byte anstelle eines
Wortes sind gering.
-
In
dieser Architektur können
zwei Cache-Schichten implementiert sein. Die erste Cache-Schicht
ist der Dreifachport-Speicher 70. Zusätzliche Lesetransaktionen zu
benachbarten Adressen können
unmittelbar nach Beendigung des ersten SCI-Lesevorgangs behandelt
werden. Die zweite Cache-Schicht ist im lokalen Speicher 76 implementiert.
Vor dem Löschen
eines Lese-Datenpakets
aus dem Dreifachport-Speicher 70 nach Beendigung der Lesetransaktion
kann der Prozessor 74 dieses in reservierte Regionen des
lokalen Speichers 76 kopieren, der als sekundärer Cache
dient. Im Falle zusätzlicher
Lesetransaktionen zu dieser Cache-Line können Daten im lokalen Cache
zurückkopiert
werden, so als würden
sie von einem fernen Knoten empfangen werden, aber mit weniger Latenz.
Kopiertransaktionen zwischen dem Dreifachport-Speicher 70 und
dem lokalen Speicher 76 werden, wie in der Technik bekannt
ist, als Fly-by-Transaktionen ausgeführt, die nur einen Taktzyklus
pro Datenwort benötigen.
Jeder gültige
Lese- Datenpufferspeicher
in dem Dreifachport-Speicher 70 wird durch einen Cache
Tag Entry aufgenommen, so dass die PCI-Leseschnittstelle 68 die
Verfügbarkeit
und Lokalisierung der Cache-Line ohne Prozessorintervention bestimmen
kann.
-
Schreibtransaktionen
zu der reflektiven Speicherregion werden ähnlich wie Schreibvorgänge zu der SCI-Adressdomäne behandelt.
Der Prozessor 74 kopiert die Schreibdaten in den reflektiven
Speicher und generiert die passenden SCI-Schreibtransaktionen, wobei
alle anderen verknüpften
reflektiven Speichersegmente aktualisiert werden. Eingehende SCI-Schreibvorgänge zu der
reflektiven Speicher-Subadresse werden in die passenden reflektiven
Speicherregionen kopiert.
-
Der
Prozessor 74 kann die SCI-Schnittstelle 66 so
konfigurieren, dass bestimmte Datenpaketarten zu einer logischen
Durchgangseinheit 80 befördert werden, um den Prozessor 74 von
der Verarbeitung trivialer Datenpakete zu entlasten. Zum Beispiel
machen angezeigte Schreibantwort-Erfolgsnachrichten nur die passende
Pufferspeicherressource im Dreifachport-Speicher 70 frei
und erfordern keine Verarbeitung durch den Prozessor. Ein weiteres
Merkmal der logischen Durchgangseinheit ist die Fähigkeit,
strömende
Blockdaten zu verarbeiten. Für
lange DMA-Bursts von Daten, die keiner Reformatierung bedürfen, wie
asynchrone Videodaten, kann ein Basis-DMA-Pufferspeichertyp (für gewöhnlich 64- oder 256-Byte-Blöcke) direkt
zu der PCI-Schnittstelle 68 weitergeleitet werden. Die
logische Durchgangseinheit 80 schreibt in die passende Schlüsseladresse
der PCI-Schnittstelle 68,
wodurch der passende PCI-Burst ausgelöst wird. Der Prozessor 74 steuert,
welche Pakete durch die logische Durchgangseinheit 80 weitergeleitet
werden. Die Wahl der Weiterleitung kann von der Paketart, der Quellenadresse
und der SCI-Subadresse abhängig
sein. Es kann mehrere simultane Datenströme geben, von welchen einige
den Prozessor umgehen, während
andere von dem Prozessor verarbeitet werden.
-
Der
relevante Abschnitt der SCI-Subadresse wird von der SCI-Slave-Schnittstelle 66 erfasst
und zu der PCI-Master-Schnittstelle 68 weitergeleitet.
Vorausgesetzt, dass eine richtig formatierte Adressumsetzungstabelle
im Dreifachport-Speicher gespeichert ist, kann die PCI-Master-Schnittstelle 68 die
SCI-PCI-Adressumsetzung fliegend ausführen.
-
Die
SCI-PCI-Fly-by-Adressumsetzungsmethode ist in 5 bis 7 dargestellt.
Das Verfahren kann zur Durchführung
von PCI-SCI-Adressimisetzungen angepasst werden. Die relevanten
oberen Bit der SCI-Anforderungsadresse 100 werden
von der SCI-Schnittstelle 66 von 4 erfasst,
während
die Adresse in eine definierte, statische Subadresse in einem verfügbaren Pufferspeicher-Slot 102 geschrieben
wird. Die SCI-Quellen-ID kann zur Definition verschiedener Adresskarten
oder Privilegien für
verschiedene SCI-Hosts verwendet werden. Nicht alle Adressbit, die
in 5 dargestellt sind, müssen verwendet werden. Der
PCI-Port des Dreifachport-Speichers 70 kann
als zwei Datenworte mit unabhängigen
Adressbussen implementiert werden, in 5 als Adressdomäne A und
B angegeben. Adressdomäne
A ist äquivalent
zu der Seitengröße des Host-Systems,
die für
gewöhnlich
4 KByte ist, wodurch 12 Adressierungsbit erforderlich sind. Während der Adressenphase
in der PCI-Schnittstelle 68 trägt die Adressdomäne A die
Seiten-Subadresse, die hindurchgeleitet wird. Die Adressbit von
Domäne
A werden aus einer Stelle im Dreifachport-Speicher 70 gelesen,
die durch die Basisadresse des Empfangspufferspeichers 102 plus
dem angemessenen statischen Pufferspeicherversatz des Adresswortes
definiert ist. Die Adressdomäne
B 106 trägt
die umgesetzte Adresse plus Zugriffsoptionen 108, wie das
Nur-Lese-Attribut. Im Falle eines nicht autorisierten Zugriffs,
wie eines Schreibvorgangs in einer Nur-Lese-Region, wird die Transaktion
beendet, was zu einer Nur-Adressen-Phase führt. Der Adressenabschnitt 106 wird
aus einem Adressumsetzungstabelleneintrag 110 gelesen.
Er ist durch die Adressumsetzungstabelle plus Basisadresse plus
Adressumsetzungsindex 112 definiert, der von der SCI-Slave-Schnittstelle 66 erfasst
wurde. Die neue Adresse wird durch simultanes Adressieren verschiedener
Abschnitte des Dreifachport-Speichers 70 zusammengefügt, unter
Verwendung der weitergeleiteten früheren Kenntnis der richtigen
Pufferspeicheradresse und des Adressumsetzungsindex. Die zwei Nebenworte
des Multiport-Speicher-PCI-Busses werden leicht implementiert, wenn
berücksichtigt
wird, dass typische Multiport-Speicher in Breiten von 8 oder 16
Bit pro Port verfügbar
sind. Daher kann ein 32-Bit-PCI-Datenbus aus mehreren Multiport-Speicher-Chips
zusammengefügt
werden. Indem nicht alle Adressbits eines bestimmten Ports zusammen
geführt
werden, werden somit mehrere einzeln addressierbare Datennebenworte
erzeugt, die zum Zusammenstellen einer umgesetzten Adresse verwendet
werden können.
-
Eine
ausführlichere
Beschreibung der Fly-by-Adressumsetzungsmethode
mit externer LUT ist in 6 dargestellt. Die 64-Bit-SCI-Adresse 100 und
die 32-Bit-PCI-Adresse 114 sind
im Maßstab
gezeichnet, wobei jede gestrichelte Region 4 Bit darstellt. Natürlich sind
andere Adressbitbreiten möglich
und die vorliegende Erfindung ist nicht auf eine 64-Bit-SCI-Adresse
oder eine 32-Bit-PCI-Adresse beschränkt.
-
Während die
SCI-Schnittstelle 66 die eingehende SCI-Anfrage in ihren passenden Slot 102 im
Multiport-Speicher 70 kopiert,
erfasst sie auch die Adressbit der eingehenden Anfrage. In dem vorliegenden
Beispiel werden SCI-Adressbit 48, 43-42 und 21-16 zur Bildung des
9-Bit-Index 112 in der 16-Bit-SCI-PCI- Verweistabelle verwendet. Der SCI-PCI-Verweistabellenindex
wird aus drei Feldern zusammengestellt. Das erste Indexbit ist das
niedrigste Bit der SCI-Quellen-ID. Dieses Bit sorgt für eine Differenzierung
zwischen zwei Gruppen von SCI-Anfragern in Bezug auf ihre Zugriffsprivilegien
und Fenster. Die nächsten
zwei Indexbit (SCI-Adressbit 43-42) werden verwendet, dass bis zu
vier simultane Fenster von bis zu 4 MB Größe möglich sind. Die niedrigsten
sechs Indexbit definieren bis zu 64 Seiten in dem gegebenen Fenster.
Es ist zu beachten, dass in dieser Ausführungsform die SCI-Subadressenbit
47-44 null sein müssen,
damit die logische Durchgangsvorrichtung 80 die Anfrage
annehmen und zu der PCI-Schnittstelle 68 weiterleiten kann.
-
Die
oberen zwei Bit aus der Verweistabelle definieren ein 2-Bit-Steuerfeld 116.
Das erste Bit des Steuerfeldes 116 wird als Schreibschutz-Bit
verwendet und das zweite Bit wird zur Steuerung einer Byte-Swap-Maschine der PCI-Schnittstelle 68 verwendet.
Dieses Merkmal ermöglicht
eine seitenweise Endianess-Konvertierung.
Die verbleibenden vierzehn Bit von der Verweistabelle bilden Bit
16 bis 29 der PCI-Hauptadresse.
Die oberen zwei PCI-Adressbit sind durch ein CSR-Register definiert
und definieren die PCI-Hauptbasisadresse. Dies
garantiert ein 1 GB PCI-Adressenfenster.
Die SCI-PCI-LUT kann jede Speichergröße aufweisen. Wenn 512 Adressumsetzungseinträge nicht
ausreichend sind, kann ein größerer Speicher
verwendet werden, wodurch ein größerer LUT-Index 112 möglich ist.
-
Die
SCI-Adresse wird immer in eine spezifische Subadresse eines passenden
Eingangspufferspeichers im Dreifachport-Speicher 70 geschrieben.
Daher ist es möglich,
den Dreifachport-Speicher derart zu adressieren, dass seine Datenausgänge dieses
Adresswort ansteuern. In diesem Szenario werden nur die Ausgangsfreigaben
entsprechend den niederen 16 Bit des Speichers freigegeben, während die
oberen 16 Bit simultan durch die SCI-PCI-LUT zugeleitet werden.
Die PCI-Master-Ablaufsteuereinrichtung (Master Sequencer) erzeugt
die geeignete Adresse aus dem LUT-Index 112, die ihr unter
Verwendung der logischen Durchgangseinheit 80 weitergeleitet
wurde.
-
Der
externe Verweistabellenspeicher kann in dem Dreifachport-Speicher 70 durch
Reservieren eines Teils des Dreifachport-Speichers für die Verweistabelle
integriert werden. Die einzige Änderung
gegenüber dem
oben genannten Szenario ist, dass der PCI-Port des Dreifachport-Speichers
eine unabhängige
Adressierung seines höchst-
und niedrigstwertigen 16-Bit-Ports ermöglichen muss. In diesem Szenario
hat der lokale PCI-Speicher zwei unabhängige Adressbusse, aber nur
einen Steuerbus.
-
Eine
Beschreibung einer Fly-by-Adressumsetzungsmethode mit interner LUT
und einem Tag-Vergleich ist in 7 dargestellt.
Diese Adressumsetzungsmethode wird durch die Seitengröße des verwendeten Betriebssystems
angesteuert. Eine typische Seitengröße ist 4 KByte. Angesichts
der geringen Seitengröße und der
begrenzten Anzahl an Adressumsetzungseinträgen, die in dem kleinen Multiport-Speicher 70 verfügbar sind,
werden die Einträge,
die in dem Multiport-Speicher 70 gespeichert sind, als
Adressumsetzungs-Cache-Einträge
implementiert. Wie zuvor werden ausgewählte Bit der SCI-Adresse erfasst
und zur Erstellung des Verweistabellenindex 112 verwendet.
Der Adressumsetzungseintrag ("Address
Translation Entry" – ATE) 108 ist
jedoch 32 Bit breit, wovon ein Teil einen ATE-Cache-Tag 118 definiert,
der mit den passenden SCI-Zieladressen-Bit 120 übereinstimmen
muss, damit der Eintrag gültig
ist. Diese SCI-Zieladressen-Bit 120 können von der SCI-Schnittstelle 66 erfasst
und zu der PCI-Schnittstelle 68 in einer ähnlichen
Weise wie beim Adressumsetzungsindexfeld 112 weitergeleitet
werden.
-
Sie
können
auch aus dem PCI-Port des Multiport-Speichers 70 ausgelesen werden.
-
Die
fertige PCI-Adresse wird dann aus Datenbit 0 bis 11 des SCI-Ziel-Adress-Offset
der Eingangs-Pufferspeicher-Slots
und den Bit 12 bis 31 des geeigneten passenden Adressumsetzungseintrags
zusammengestellt. Dies erfolgt während
des Zyklus, der auf das Lesen des ATE folgt, in dem die Adressen-Tags
verglichen werden. während
der PCI-Adressenphase wird der zweite 8-Bit-Port (D8-15) des Multiport-Speichers 70 gesperrt
und die PCI-Schnittstelle 68 steuert
die zuvor gelesenen/erfassten Adressbit passend an.
-
Es
ist zu beachten, dass die PCI-SCI-Adressumsetzung auf gleiche Weise
implementiert wird. Ebenso kann in einer komplexeren Ausführungsform
ein Datenport mehrere Adressbusse aufweisen. Eine solche Implementierung
erweitert die zuvor beschriebenen Methoden.
-
Eine
Speicherkarte des Dreifachport-Speichers
70, wie von der
Mikrosteuerung
74 oder von dem lokalen PCI-Bus
62 gesehen,
für die
oben genannte Methode kann gemäß der folgenden
Tabelle 1 implementiert sein. Tabelle 1: TPM Speicher-Layout
Relativer
Adress-Offset | Inhalt
31
23 15 7 |
0000h...05FCh | 384
SCI → PCI
Zugriffssteuerung/ Adressumsetzungstabelleneinträge (SCIPCILUT) | 384 SCI → PCI Zugriffssteuerung/
Adressumsetzungstabellen-Tags (SCIPCILUT) | CFG |
0600h...06FCh | 64 PCI Lesedaten-Pufferspeicherdeskriptor |
0700h...07FCh | 16×16-Byte-Sendepufferspeicher-Slots
Dieser
Pufferspeicher wird von der PCI-Slawe-Lese-Ablaufsteuereinrichtung betrieben. Er
wird zum Speichern von direkten PCI-Leseanfragen verwendet. |
0800h...0FFCh | 16×128-Byte-Sendepufferspeicher-Slots
(von welchen jeder bis zu 80-Byte-Pakete hält)
Dieser Pufferspeicher
wird von der PCI-Slave-Schreib-Ablaufsteuereinrichtung betrieben.
Er
wird zum Speichern von direkten PCI-Schreibdaten verwendet. |
1000h...1FFCh | 32×128-Byte-Sendepufferspeicher-Slots
(von welchen jeder bis zu 80-Byte-Pakete hält)
Dieser Pufferspeicherpool
wird von der 1960-Mikrosteuerung
betrieben.
DMA-Anfrage-, SCI-Antwortpakete und andere Pakete
werden von hier gesendet. |
2000h...3FFCh | 64×128-Byte-Sendepufferspeicher-Slots
(von welchen jeder bis zu 80-Byte-Pakete halt)
Dieser Pufferspeicherpool
wird von dem Blink Receiver betrieben.
Hier wird jede Art von
eingehendem Paket gespeichert. |
-
Die
einfachsten, derzeitig erhältlichen
Multiport-Speicher
sind entweder Dualport- oder Vierfachport-Speicher. Es ist möglich, einen Dreifachport-Speicher
unter Verwendung von drei Dualport-Speichern zu implementieren.
Es ist jedoch nur ein Speicher-Chip zur Bildung eines Dreifachport-Speichers 70 unter
Verwendung eines Vierfachport-Speichers 130 notwendig,
wie in 8 dargestellt ist. Der Vierfachport-Speicher hat vier
8-Bit-Datenbusse. Daher müssen
vier Chips kombiniert werden, um einen 32-Bit-Bus zu bilden. Die SCI-Backend-Busschnittstelle
ist für
gewöhnlich
64 Bit breit. Damit die Verwendung von acht 8-Bit-Multiport-Speichern
zur Bildung eines 64-Bit-Busses vermieden wird, können zwei
Datenports zur Bildung eines 64-Bit-Busses kombiniert werden. Das
niedrigste Adressbit des zusammengelegten 64-Bit-Busses wird einer bestimmten
Ebene zugeteilt (niedrig für
Port 2 und hoch für
Port 3). Welches Adressbit welcher Ebene zugeteilt wird, hängt von
der Endianess-Variante der IOP- Busschnittstelle
und der Organisation des Datenbusses B ab. Wenn eine 64-Bit-Schreibtransaktion
ausgeführt
wird, erkennt der Vierfachport-Speicher zwei simultane Schreibanfragen
an zwei Ports zu zwei benachbarten Speicherstellen mit identischer
Zeitsteuerung. Dies zeigt, wie die Schnittstelle der vorliegenden
Erfindung verschiedene Busbreiten aufnehmen kann, ohne speziell
konstruierte Chips zu benötigen.
Alle Ports des Multiport-Speichers arbeiten asynchron, so dass an
jedem Port unabhängige
Taktdomänen
möglich
sind. Eine andere Nutzung des Vierfachport-Speichers ist die Verwendung
des vierten Ports entweder als zusätzlichen Netzwerkport, oder
die Möglichkeit,
einen zweiten Prozessor 74' hinzuzufügen, sollte
sich ein Prozessor 74 als unzureichend erweisen.
-
Die
Konfiguration eines Dreifachport-Speichers 70 unter Verwendung
eines Vierfachport-Speichers 130 ist in 9 ausführlicher
dargestellt. Der Blink-Adressbus ist 11 Bit breit, da der niedrigste
Adressen-Pin GND bzw. VCC zugeteilt ist (A2(0)<='0'; A3(0)<='1' oder umgekehrt, für alle Chips abhängig von
der Endianess der beteiligten Busse). Der lokale PCI-Bus-Chip B1
ist asymmetrisch, wobei der Chip D8–D15 ansteuert, der einen Teil
der Durchgangsadress- und einen Teil der ATE-Adress-Bit enthält. Andere
Gruppierungen der Ausgangsfreigabesignale und möglicherweise der Adressbusse
sind offensichtlich möglicherweise
von dem spezifischen Fly-by-Adressumsetzungsschema abhängig.
-
10 zeigt
die Architektur eines intelligenten Netzwerk-Routers
60 auf
der Basis eines Vierfachport-Speichers
162 gemäß der vorliegenden
Erfindung. Das gewählte
Beispiel ist eine LAN/WAN-Feuerwand, die zum Beispiel eine 155-MBit-ATM-Verknüpfung
164 plus
zwei unabhängige
100-Megabit-Ethernet-LAN-Verknüpfungen
166,
168 implementiert.
Sie kann auch als Ethernet-Brücke
dienen, unter Verwendung der logischen Durchgangseinheit
170.
Der Prozessor
172 wird, wie in den vorangehenden Ausführungsformen,
vom lokalen Speicher
174 und der Firmware ROM
176 unterstützt, und
hat, unter Verwendung eines internen Busses
184, Zugriff
auf alle Netzwerk-Ports für
die Konfiguration und Steuerung. Der gesamte ATM-Verkehr wird durch
den Vierfachport-Speicher
162 geleitet, wo alle Feuerwand-Funktionalitäten und
die LAN/WAN-Protokollkonvertierung von dem Prozessor
172 ausgeführt werden.
Die Netzwerkschnittstellen
178,
180 und
182, die
in
10 dargestellt sind, sind Beispiele für mögliche Datenbuskonfigurationen.
Die Erfindung ist jedoch nicht auf ein spezifisches Protokoll oder
einen spezifischen Netzwerkstandard beschränkt. Schlüssel
zu den Figuren
Figur
1 | |
Memory
Bus Interface Unit MIU | Speicherbus-Schnittstellen-Einheit MIU |
Processor | Prozessor |
Memory | Speicher |
Local
Bus Interface Unit BIU | Lokale
Busschnittstellen-Einheit
BIU |
DMA
Interface | DMA-Schnittstelle |
PCI-PCI
Bridge | PCI-PCI-Brücke |
Figur
2 | |
Memory
Bus Interface Unit MIU | Speicher-Busschnittstellen-Einheit MIU |
Processor | Prozessor |
Memory | Speicher |
Local
Bus Interface Unit BIU | Lokale
Busschnittstellen-Einheit
BIU |
DMA
Interface | DMA-Schnittstelle |
Triple
Port Memory | Dreifachport-Speicher |
Pass-Through
Logic Unit | Logische
Durchgangseinheit |
Figur
3 | |
Memory
Bus Interface Unit MIU | Speicherbus-Schnittstellen-Einheit MIU |
Processor | Prozessor |
Memory | Speicher |
Local
Bus Interface Unit BIU | Lokale
Busschnittstellen-Einheit
BIU |
DMA
Interface | DMA-Schnittstelle |
Quad
Port Memory | Vierfachport-Speicher |
Pass-Through
Logic Unit | Logische
Durchgangseinheit |
Fig.
4 | |
Local
Memory | Lokaler
Speicher |
Processor | Prozessor |
Firmware | Firmware |
PCI-Interface | PCI-Schnittstelle |
Triple
Port Memory | Dreifachport-Speicher |
SCI-Interface | SCI-Schnittstelle |
Pass-Through
Logic Unit | Logische
Durchgangseinheit |
Fig.
5 | |
SCI
Source ID | SCI-Quellen-ID |
SCI
Subaddress | SCI-Subadresse |
Page
size | Seitengröße |
Address
Translation Index | Adressumsetzungsindex |
Buffer | Pufferspeicher |
Address
Translation Table | Adressumsetzungstabelle |
Address
domain | Adressdomäne |
Fig.
6 | |
16-bit
SCI Source ID | 16-Bit-SCI-Quellen-ID |
64-bit
SCI Address | 64-Bit-SCI-Adresse |
32-bit
PCI Address | 32-Bit-PCI-Adresse |
SCI > PCI Lut | SCI > PCI LUT |
PCI
Master Window Base | PCI-Hauptfensterbasis |
Fig.
7 | |
16-bit
SCI Source ID | 16-Bit-SCI-Quellen-ID |
64-bit
SCI Address | 64-Bit-SCI-Adresse |
32-bit
PCI Address | 32-Bit-PCI-Adresse |
SCI > PCI Lut | SCH > PCI LUT |
PCI
Master Window Base | PCI-Hauptfensterbasis |
Fig.
8 | |
Control
Port | Steuerport |
Address
Port | Adressenport |
Data
Port | Datenport |
4-Port
Memory | Vierport-Speicher |
Fig.
9 | |
4-Port
Memory | Vierport-Speicher |
Blink
Port | Blink-Port |
Micro
Controller Port | Mikrosteuerungsport |
Fig.
10 | |
Local
Memory | Lokaler
Speicher |
Prozessor | Prozessor |
Firmware | Firmware |
Ethernet
Interface | Ethernet-Schnittstelle |
Quad
Port Memory | Vierfachport-Speicher |
Pass-Through
Logic Unit | Logische
Durchgangseinheit |
ATM
Interface | ATM-Schnittstelle |