-
GEBIET DER ERFINDUNG
-
Die
Erfindung bezieht sich auf das Gebiet von Paketleitweglenkungsschaltern
in vernetzten EDV-Umgebungen.
-
HINTERGRUND DER ERFINDUNG
-
Computernetzwerke
erlauben, Mehrfachprozessoren miteinander zu kommunizieren. Ein
Computernetzwerk könnte
verschiedene Arten von Computer und Speicherbausteinen verbinden.
Daten werden typisch in Paketen zwischen Komponenten auf einem Netzwerk
transferiert. Pakete sind gewöhnlich Datenwortgruppen
jeweils einer bestimmten Länge. Sowie
Netzwerke größer und
komplexer werden, wird es zunehmend wichtig, Pakete effizient routen und
speichern zu können.
Pakete werden häufig, während des
Routingprozesses von einer Netzwerkkomponente zu einer anderen Netzwerkkomponente, vorübergehend
gespeichert. Dies ist teilweise auf die zufällige Natur der Verkehrsverteilung
des Eingangs- und Ausgangsports, sowie die Anpassungsrate zwischen
Ports zurückzuführen, die
Daten mit verschiedenen Raten transferieren. Daher ist Paketspeicherung
oder Puffer ein integraler Teil der Schaltfunktion. Puffern könnte in
einem Speicher, der Teil eines Schaltkreises (auf demselben Chip
wie der Schaltkreis) ist oder auf einem Speicher auftreten, der
vom Schaltkreis getrennt ist. Ein Pufferspeicher könnte mit
einem Port assoziiert sein oder zwischen mehreren Ports gemeinsam
benutzt werden.
-
Wenn
Datenpakete während
Routing gespeichert werden, ist es wichtig schnellen und effizienten
Zugriff auf die Speichereinrichtung, oder den Speicher, bereitzustellen,
sodass Speicherzugriff nicht zu einer Quelle von Verzögerung und
daher von Netzwerk-Leistungsdegradation wird. Die
US A 5179667 offenbart eine
an ein Netzwerk angeschlossene Zugriffssteuerungsvorrichtung.
-
Netzwerkschalter
sind Einrichtungen, die Routing und Speicherung von Paketen zwischen Netzwerkkomponenten
handhaben. Netzwerkschalter umfassen Eingangsports und Ausgangsports
zum Anschluss an mehrfache Netzwerkkomponenten, die Daten zum Schalter
senden und von diesem empfangen. Die den Schalter benutzenden Netzwerkkomponenten
sind als Clients des Schalten bekannt. Ein Einzelner Schalter könnte einen
einzelnen Speicher verwenden, um Daten von mehrfachen Clients zu speichern,
die Daten mit unterschiedlichen Raten übertragen. Für einen
Netzwerkschalter ist es wichtig Speicherzugriff von mehrfachen Clients
verschiedener Datenratenfähigkeiten
so zu handhaben, dass Speicherbandbreite maximiert wird. Die Notwendigkeit
Speicherbandbreite zu maximieren, muss aber mit anderen Besorgnissen
beim Entwerfen einer Netzwerkschalterarchitektur konkurrieren. Beispielsweise
würde Bereitstellen
eines breiteren Datenwegs von Clients zum Pufferspeicher die Speicherbandbreite
verbessern, aber nur auf Kosten von extra Hardware und zusätzlicher
Zusammenschaltung. Daher müssen
beim Konstruieren einer Schalterarchitektur Kompromisse gemacht
werden, sodass sie sowohl effizient als auch wirtschaftlich funktioniert.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Es
werden ein Verfahren und eine Vorrichtung zum Steuer des Zugriffs
zu einem gemeinsamen Speicher in einem Netzwerksystem beschrieben.
Die Vorrichtung weist mindestens einen schnellen Port-Schnittstellenstromkreis
auf, wobei jeder eine schnelle Eingangsportschnittstelle umfasst,
die konfiguriert ist, sequenziell Daten-, Adressen- und Befehlsinformation
von einem Netzwerk-Client mit einer ersten Datenrate in Segmenten
einer ersten Breite zu empfangen. Jede schnelle Eingangsportschnittstelle umfasst ein
schnelles Schnittstellenregister, das konfiguriert ist, Daten- und
Adresseninformation vorübergehend
zu speichern. Jede schnelle Eingangsportschnittstelle umfasst weiter
einen Befehlsdecodierstromkreis, der konfiguriert ist, die Befehlsinformation zu
empfangen und, als Reaktion darauf, die Segmente von Daten- und Adresseninformation
im schnellen Schnittstellenregister sequenziell zu speichern, bis das
schnelle Schnittstellenregister voll ist, wobei das schnelle Schnittstellenregister
weiter zum Auslesen parallel zum gemeinsamen Speicher konfiguriert
ist. Die Vorrichtung weist außerdem
mindestens einen langsamen Port-Schnittstellenstromkreis
auf, wobei jeder konfiguriert ist, Daten-, Adressen- und Befehlsinformation
von einem Netzwerk-Client mit einer zweiten Datenrate in Segmenten
der ersten Breite zu empfangen und die Daten-, Adressen- und Befehlsinformation
zu einem Speicherstromkreis zu senden, der den langsamen Port-Schnittstellenstromkreisen gemeinsam
ist. Der gemeinsame Speicherstromkreis umfasst eine Mehrheit von
langsamen Schnittstellenregistern, wobei die Datensegmente sequenziell
in einem der langsamen Schnittstellenregister zur gleichen Zeit
gespeichert werden wie die Inhalte eines anderen langsamen Schnittstellenregisters
parallel zum gemeinsamen Speicher ausgelesen werden.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist
ein Blockdiagramm eines Netzwerkschalterelements, das gemäß einer
Ausführungsform
der vorliegenden Erfindung einen Speicher-Controller aufweist.
-
2 ist
ein Blockdiagramm eines gemeinsamen Pufferspeicher-Controllers gemäß einer
Ausführungsform
der vorliegenden Erfindung.
-
3 ist
ein Blockdiagramm einer schnellen, konfigurierbaren Portschnittstelle
gemäß einer
Ausführungsform
der vorliegenden Erfindung.
-
4 ist
ein Blockdiagramm einer langsamen Portschnittstelle gemäß einer
Ausführungsform der
vorliegenden Erfindung.
-
5 ist
ein Blockdiagramm eines Schreibteils eines Zuteilen erster Ebene
gemäß einer
Ausführungsform
der vorliegenden Erfindung.
-
6 ist
ein Blockdiagramm eines Leseteils eines Zuteilen erster Ebene gemäß einer
Ausführungsform
der vorliegenden Erfindung.
-
7 ist
ein Blockdiagramm eines Zuteilers/Schedulers zweiter Ebene gemäß einer
Ausführungsform
der vorliegenden Erfindung.
-
Die 8 ist
ein Diagramm mehrstufiger Arbitrierung gemäß einer Ausführungsform
der Erfindung.
-
AUSFÜHRLICHE
BESCHREIBUNG
-
Es
wird ein Speicher-Controller beschrieben, der Zugriff auf einen
gemeinsamen Pufferspeicher durch Netzwerk-Clients erlaubt. In einer
Ausführungsform
befindet sich ein Pufferspeicher-Controller (BMC) auf einem Schalterelementchip
und maximiert Bandbreite eines gemeinsamen Speichers, teilweise durch
Bereitstellen separater Schnittstellen für Ports, die Daten mit verschiedenen
Datenraten übertragen. Speicherbandbreite
wird weiter durch Pipeline-Betrieb von Datenhandhabung innerhalb
des Pufferspeicher-Controllers
und durch effizientes Planen von Lese- und Schreiboperationen zum
gemeinsamen Pufferspeicher optimiert.
-
Die 1 ist
ein vereinfachtes Blockdiagramm, das eine Architektur eines Schalterelements gemäß einer
Ausführungsform
der vorliegenden Erfindung zeigt. Das Schalterelement 100 umfasst
eine Schnittstelle 102 der zentralen Verarbeitungseinheit (CPU),
eine Netzwerkschnittstelle 106, eine kaskadierende Schnittstelle 108 und
einen Verwalter 110 für
den gemeinsamen Speicher. Der Verwalter 110 für den gemeinsamen
Speicher umfasst den gemeinsamen Pufferspeicher-Controller (BMC) 112.
-
Pakete
könnten
durch eine beliebige der drei Schnittstellen 106, 102 oder 108 in
das Schalterelement 100 eintreten oder dieses verlassen.
Kurz gesagt operiert die Netzwerkschnittstelle 106, gemäß dieser
Ausführungsform,
in Übereinstimmung
mit dem Ethernet-Protokoll, um Ethernet-Pakete von einem Netzwerk
(nicht gezeigt) zu empfangen und Ethernet-Pakete via einen oder
mehrere externe Ports (nicht gezeigt) auf das Netzwerk zu übertragen. Eine
optionale kaskadierende Schnittstelle 108 könnte eine
oder mehrere interne Verbindungen (nicht gezeigt) zum Zusammenschalten
von Schaltelementen umfassen, um größere Schalter zu schaffen.
-
Die
CPU könnte
Befehle oder Pakete via die CPU-Schnittstelle 102 an das
Schalterelement 100 senden. Auf diese Weise könnten einer
oder mehrere auf der CPU laufende Softwareprozesse, Einträge in eine
externe Weiterleitungs- und Filterungsdatenbank (nicht gezeigt),
wie Hinzufügen
neuer Einträge und
Annullieren unerwünschter
Einträge,
managen. In alternativen Ausführungsformen
könnte
die CPU aber mit direktem Zugriff auf eine Weiterleitungs- und Filterungsdatenbank
versehen werden. Jedenfalls ähnelt
der CPU-Port der CPU-Schnittstelle 102, für Paketweiterleitungszwecke,
einem generischen Eingangsport in das Schalterelement 100 und
könnte behandelt
werden, als ob er einfach ein weiterer externer Netzwerkschnittstellenport
wäre.
-
Die
Netzwerkschnittstelle 106, die CPU-Schnittstelle 102 und
die kaskadierende Schnittstelle 108 sind an den Verwalter 110 des
gemeinsamen Speichers gekoppelt. Der Verwalter 110 des
gemeinsamen Speichers stellt eine effiziente zentralisierte Schnittstelle
zum externen gemeinsamen Speicher zum Puffer ankommender Pakete
bereit.
-
In
der vorliegenden Ausführungsform
werden Pakete zentral gepuffert und vom Manager 110 für den gemeinsamen
Speicher gemanagt. Der Manager 110 für den gemeinsamen Speicher
verbindet jeden Eingangsport und Ausgangsport und führt für sie dynamische
Speicherzuteilung bzw. -freigabe aus. Während Eingangspaketverarbeitung
werden im externen gemeinsamen Speicher einer oder mehrere Puffer
zugeteilt und ein ankommendes Paket wird vom Manager 110 für den gemeinsamen
Speicher als Reaktion, beispielsweise, auf Befehle gespeichert,
die von der Netzwerkschnittstelle 106 empfangen wurden.
Anschließend
wiedergewinnt der Manager 110 für den gemeinsamen Speicher, während Ausgangspaketverarbeitung,
das Paket aus dem externen gemeinsamen Speicher und gibt Puffer frei,
die nicht länger
in Gebrauch sind. Um sicherzustellen, dass keine Puffer freigegeben
werden, bis alle Ausgangsports die Übertragung der darin gespeicherten
Daten beendet haben, verfolgt der Manager 110 für den gemeinsamen
Speicher außerdem wem
der Puffer gehört.
-
Die
vorliegende Erfindung könnte
in einem Schalterelement, wie Schalterelement 100 inbegriffen
sein, das Drahtgeschwindigkeits-Routing und Weiterleitung von „Fast Ethernet" und „Gigabit
Ethernet" Paketen
bereitstellt. Es wird aber in Erwägung gezogen, dass die Schnittstellen
vielleicht konfiguriert werden, um auch anderen Netzwerkprotokollen zu
entsprechen. Außerdem
wird erkannt, dass Funktionen möglicherweise
anders als oben beschrieben aufgeteilt werden. Zum Beispiel könnten mehrfache Einheiten die
dynamische Zuteilung, Freigabe und Verfolgung ausführen, die
mit dem Manager für
den gemeinsamen Speicher in der gezeigten Ausführungsform verbunden sind.
Weiter können,
obwohl das Schalterelement vorzugsweise hochintegriert ist und einen
einzigen anwendungsspezifischen integrierten Stromkreis (ASIC),
der leistungskritische Funktionen in Hardware umfasst, alternative
Ausführungsformen
einen Chipsatz einschließen,
der zwei oder mehrere ASICs oder andere Typen logischer Bausteine
oder Untersysteme umfasst. Abschließend wird erkannt, dass die
Aufteilung von Funktionalität
zwischen Hardware und Software ebenso modifiziert werden könnte.
-
Die 2 ist
ein Blockdiagramm des Pufferspeicher-Controllers (BMC) 112 gemäß einer
Ausführungsform.
Im vorliegenden Ausführungsbeispiel steuert
der BMC 112 Zugriff auf einen gemeinsamen SRAM-Speicher
(nicht gezeigt) für
eine Vielfalt von Ports in einem Netzwerkcomputersystem. Der BMC 112 steuert
Zugriff auf einen gemeinsamen Speicher für langsame Ports 202,
die mit einer relativ langsamen Datenrate im Vergleich zu anderen
Ports, hierin als schnelle Ports bezeichnet, im Netzwerk arbeiten. Host-Bauelemente
greifen ebenso auf den gemeinsamen Speicher durch den Host-Port 204 des
BMC 112, gewöhnlich über einen
lokalen Bus wie einem peripheren Komponentenschnittstellenbus (PCI)
zu. Schnelle Ports 222 greifen ebenso durch den BCM 112 auf
den gemeinsamen Speicher zu. Schnelle Ports 222 arbeiten
mit einer relativ schnellen Datenrate im Vergleich zu den langsamen
Ports 202. Konfigurierbare Ports 220 greifen durch
den BMC 112 auf den gemeinsamen Speicher zu. Die konfigurierbaren Ports 220 sind
Port, die sich konfigurieren lassen, um mit der Datenrate der langsamen
Ports 202 oder mit der Datenrate der schnellen Ports 222 zu
arbeiten. Einer Ausführungsform
der vorliegenden Erfindung gemäß arbeiten
die langsamen Ports 202 in Übereinstimmung mit dem Ethernet-Protokoll
oder dem „Fast Ethernet"-Protokoll. In einer
Ausführungsform
befolgt der Host-Port 204 das PCI-Busprotokoll. Dieser
Ausführungsform
gemäß arbeiten
die schnellen Ports 222 in Übereinstimmung mit einem „Gigabit
Ethernet" Protokoll.
Die „Fast
Ethernet" Rate der
langsamen Ports 202 beträgt 100 Mbps. In einer Ausführungsform
wird eine Bandbreite von 100 Mbps für den Host-Port 204 zugeteilt.
Die Datenrate der schnellen Gigabit-Ports 222 ist das Zehnfache
der Datenrate der langsamen „Fast
Ethernet" Ports 202 und
des Host-Ports 204. In einer Ausführungsform der vorliegenden
Erfindung ist der BMC 112 an drei schnelle (Gigabit) Ports,
fünf programmierbare
Ports, elf langsame (Fast Ethernet) Ports und einen Host-Port angeschlossen.
-
Der
BMC 112 umfasst langsame Port-Schnittstellen 206 und
schnelle/konfigurierbare Port-Schnittstellen 208.
Wie nachstehend eingehender erörtert
werden wird, handhabt der BMC 112 Transaktionen zwischen
Ports, die mit unterschiedlichen Datenraten (in dieser Ausführungsform,
Gigabit-Ports und "Fast Ethernet"Ports) arbeiten,
verschieden, um die Bandbreite des gemeinsamen Speichers zu maximieren.
Ein Aspekt dieser Bandbreitenmaximierung ist, wie in der 2 gezeigt, zweistufige
Arbitrierung. Spezifisch können
die langsamen Port-Schnittstellen 206 auf den gemeinsamen Speicher
nur zugreifen, nach dem eine Zugriffsanforderung den Zuteiler 210 erster
Ebene und den Zuteiler/Scheduler 214 zweiter Ebene passiert. Port-Schnittstellen,
die fähig
sind mit der Gigabitrate, wie schnelle/konfigurierbare Port-Schnittstellen 208, zu
arbeiten, greifen auf den gemeinsamen Speicher durch den Zuteiler/Scheduler 214 zweiter
Ebene zu. Der Zuteiler/Scheduler 214 zweiter Ebene entscheidet
unter Anforderungen auf Zugriff auf den gemeinsamen Speicher und
leitet Steuersignale an den SRAM-Controller 216 weiter.
Wenn einem Schnittstellenport Zugriff auf einen gemeinsamen Speicher gewährt wird,
sendet der Zuteiler/Scheduler 214 zweiter Ebene SRAM-Adressen-,
Schreibdaten- (WDATA) und Schreib-Tag-Information (WTAG) zur Speicherung
im gemeinsamen Speicherbaustein. Die Lese-Pipe 218 erleichtert
Lesevorgänge
vom gemeinsamen Speicher durch temporäres Speichern einer Portidentifizierung,
die dem richtigen Port erlaubt, Lesedaten- (rd_data) und Lese-Taginformation (rd_tag)
vom gemeinsamen Speicher zu empfangen.
-
Die 3 ist
ein Blockdiagramm, das einen schnellen Port 222 zeigt,
der mit einer schnellen/konfigurierbaren Portschnittstelle 208 verbunden
ist. Die schnelle/konfigurierbare Portschnittstelle 208 ist
ihrerseits mit der Lese-Pipe 218 und dem Zuteiler/Scheduler 214 zweiter
Ebene gekoppelt. Der schnelle Port umfasst den schnellen Ausgangsport 222a und
den schnellen Eingangsport 222b. Der Ausgangsport 222a ist,
wie gezeigt, mit der Ausgangsschnittstellenschaltung 342 gekoppelt
und der schnelle Eingangsport 222b ist mit der schnellen
Eingangsschnittstellenschaltung 344 gekoppelt. Der schnelle
Eingangsport 222b und der schnelle Ausgangsport 222a kommunizieren
mit der schnellen/konfigurierbaren Portschnittstelle 208 des
BMC 112 via ihre eigenen Befehls-, Adressen- und Datenbusse.
Die schnelle Eingangsschnittstellenschaltung 344 führt nur
Schreiboperationen zum gemeinsamen Speicher durch und die Ausgangsschnittstellenschaltung 342 führt nur
Leseoperationen zum gemeinsamen Speicher durch.
-
Wenn
ein mit dem schnellen Eingangsport 222b verbundener Netzwerk-Client
eine Schreiboperation zum gemeinsamen Speicher anfordert, transferiert
der Eingangsport 222b Daten-, Adressen- und Tag-Information
in 16-Bit-Segmenten über
Datenleitungen zum Register 330 wie gezeigt. In dieser
Ausführungsform
werden außerdem
drei Befehlsbits zum Register 328 gesendet. Die Register 328 und 330 befinden
sich in der schnellen Eingangsschnittstellenschaltung 344 für Synchronisationszwecke
gesendet. In dieser Ausführungsform
werden Daten in 128-Bit-Worten in den gemeinsamen Speicher geschrieben
und gespeichert. Durch die Verwendung von Befehlsbits wird, gemäß der vorliegenden
Erfindung, eine viel schmälere
physikalische Schnittstelle zwischen Clients und dem gemeinsamen
Speicher, in dieser Ausführungsform,
16-Bit statt 128-Bit, erzielt. Dies berücksichtigt viel weniger Verbindungs-Hardware,
während
effizienter Speicherzugriff beibehalten wird. Drei Befehlsbits lenken
16-Bit-Segmente
von Daten, die in die schnelle Eingangsschnittstellenschaltung 344 eintreten,
zu dem Datenhalteregister 334, Adressenhalteregister 338 und Tag-Halteregister 340.
Drei Befehlsbits werden im schnellen Eingangsport 222b codiert
und in der Befehlsdecodiermaschine finiten Status (fsm) 332 decodiert.
Einer Ausführungsform
gemäß können die
Befehlsbits decodiert werden, um keine Operation, Schreiben der
ersten Adresse, Schreiben der zweiten Adresse, Schreiben ersten
Daten, wr_data, Schreiben des letzten Wortes eines Pakets oder Schreibstatus
anzuzeigen. Dieser Ausführungsform gemäß sendet
der schnelle Eingangsport 222b zwei „wr_addr" Befehle an den BMC 112, um
eine 19-Bit-Adresse zu bilden. Der schnelle Eingangsport 222b sendet
dann einen ersten Schreibdatenbefehl, um das erste 16-Bit-Datensegment auf
dem Datenbus zur schnellen Eingangsschnittstellenschaltung 344 zu
senden. Diese Daten werden im Datenhalteregister 334 gespeichert,
das ein 16-Byte-Register ist. Der schnelle Eingangsport 222b fährt fort
sieben zusätzliche „wr_cmd" Datensignale zu
senden, bis das Halteregister 334 voll ist. Ein „wr_req" Signal wird dann
generiert und an den Zuteiler/Scheduler zweiter Ebene 214 gesendet.
Gleichzeitig wird ein Schreibwartesignal (wr_wait) an den schnellen
Schnittstellenport 222b gesendet, was anzeigt, dass das
Halterregister belegt ist und keine weiteren Daten annehmen kann.
Das Signal „wr_wait" wird generiert durch Entladen
der fsm 336 von einem „voll" Signal, das vom Befehlsdecodierer fsm 332 und
einem Schreibbewilligungssignal (wr_gnt) vom Zuteiler 214 zweiter Ebene
empfangen wurde.
-
Der
Zuteiler/Scheduler 214 zweiter Ebene verwendet, in dieser
Ausführungsform,
einen Round-Robin-Arbitrierungsplan,
um Zugriff zum schnellen Eingangsport 222b zu bewilligen.
Der Zuteiler/Scheduler 214 zweiter Ebene steuert außerdem planmäßig die
Adresse, die Daten und den Tag, die in den gemeinsamen Speicher
zu schreiben sind. Adresse und Daten werden dann im folgenden Taktzyklus
in den Speicher geschrieben. In der bevorzugten Ausführungsform
wird SRAM-Technologie verwendet. Da die verwendete SRAM-Technologie
voll nach dem Pipeline-Verfahren arbeitet, kann der Zuteiler/Scheduler 214 Rücken-an-Rücken-Schreiboperationen
planmäßig steuern.
Bei Erreichen des Endes eines Datenpakets sendet der schnelle Eingangsport 222b einen
Schreibstatusbefehl zusammen mit der Statusinformation an die schnelle
Eingangsschnittstellenschaltung 344. Die letzten Daten und
der in den Paketspeicher zu schreibende Status wird dann von der
schnellen Eingangsschnittstellenschaltung 344 planmäßig gesteuert.
-
Die
Ausgangsschnittstellenschaltung 342 steuert Zugriff auf
den gemeinsamen Speicher durch den schnellen Ausgangsport 222a für Leseoperationen
aus dem gemeinsamen Speicher. Wenn ein mit dem schnellen Ausgangsport 222a verbundener Netzwerk-Client
Zugriff auf den gemeinsamen Speicher erfordert, formuliert der schnelle
Ausgangsport 222a Befehls- und Adressenbits, die zu den
Register 302 bzw. 304 zu senden sind. Die Register 302 und 304 werden
für den
Zweck der Synchronisation verwendet. Drei Befehlsbits gelangen in
den Befehlsdecodierer fsm 306 und werden decodiert. Abhängig von
der Bedeutung der decodierten Befehlsbits werden in die Ausgangsportschnittstellenschaltung 342 eintretende
16-Bit-Adressensegmente in die Register 310 oder 312 geladen.
Eines der Register 310 oder 312 hält eine
aktuelle Adresse und das andere der zwei Register hält eine
Adresse eines nächsten
Pakets. Das die aktuelle Adresse haltende Register wird für jede Adresse
des aktuellen Pakets inkrementiert, das zum Speicher geschrieben
wird. Die erste Adresse des nächsten
Pakets wird im anderen Register verfügbar gehalten, sodass keine
Latenzzeit, während
der Periode zwischen Schreiben des letzten Worts des aktuellen Pakets
und dem ersten Wort des nächsten
Pakets auftritt. Der Multiplexer 314 selektiert die aktuelle
19-Bit-Adresse,
die im entsprechenden Register 310 oder 312 gespeichert
ist, die, als nächste
Leseadresse (rd_addr), an den Zuteiler/Scheduler 214 gesendet
werden soll. Der Befehlsdecodierer fsm 306 sendet ein aktuelles
voll (cfull) oder nächstes
voll (nfull) Signal, wie jeweils anwendbar, um fsm 308 zu
laden, wenn die aktuelle Adresse oder die nächste Adresse die Register 310 oder 312 füllt. Der
Logikbaustein 324 empfängt
einen „rd_tag" vom Speicher via
Register 326 der Lese-Pipe 218, das den „rd_tag" für Synchronisationszwecke hält. Der
Logikbaustein 324 verwendet den „rd_tag" um ein Paketende-Signal (eop) zum Laden
der fsm 308 zu generieren. Laden der fsm 308 generiert
ein Leseanforderungssignal (rd_req) zum Zuteiler/Scheduler 214 zweiter
Ebene. Wenn die Arbitrierung für Zugriff
auf den gemeinsamen Speicher beendet ist, sendet der Zuteiler/Scheduler 214 zweiter
Ebene eine Lesebewilligung (rdgnt), um fsm 308 zu laden. Entladen
der fsm 322 koordiniert das Entladen von Daten aus dem
gemeinsamen Speicher durch die Lese-Pipe 218 zum schnellen
Ausgangsport 222a. Lesedaten aus dem Speicher werden in
128-Bit-Worten zu einem der Register 318 oder 320 parallel
geschaltet transferiert. Eines der Register 318 oder 320 wird, nach
parallel geschaltetem Laden vom Speicher, in 16-Bit-Segmenten durch den
Multiplexer 316 entladen. Wie durch Information von der
Entlade fsm 322 und dem „rd_tag" gesteuert, handhabt die Ausgangsschnittstellenschaltung 342 effizient
Doppelpuffern von Daten aus der Lese-Pipe 218, sodass die
Bandbreite des gemeinsamen Speichers optimiert werden kann und gleichzeitig
eine schmale Datenschnittstelle (16-Bits) zum schnellen Ausgangsport 222a beibehalten
wird. Entladen der fsm 332 generiert außerdem Befehle und „rd_wait" Signale zum schnellen Ausgangsport 222a.
Das „rd_wait" Signal funktioniert als
ein Flusssteuersignal, das den schnellen Ausgangsport 222a informiert,
dass er warten muss weitere „rd_reqs" zu senden, bis das „rd_wait" Signal aufgehoben
ist.
-
Die 4 ist
ein Blockdiagramm der langsamen Portschnittstelle 206.
Die 4 zeigt den Anschluss der langsamen Portschnittstelle 206 an
einen der langsamen Ports 202. Jeder langsame Port 202 weist
einen langsamen Ausgangsport 202a und einen langsamen Eingangsport 202b,
wie gezeigt, auf. Die langsame Portschnittstelle 206 kommuniziert
außerdem
mit der Lese-Pipe 218 und dem Zuteiler 210 erster
Ebene. Gemäß der vorliegenden
Erfindung wird Netzwerk-Clients effizienter Zugriff auf einen gemeinsamen
Speicher bewilligt, die mit verschiedenen Datenraten arbeiten, teilweise,
weil sich Daten, die zum gemeinsamen Speicher, von langsamen Clients durch
einen langsamen Eingangsport geschrieben werden, physikalische Ressourcen
teilen, während sich „wr_data" durch schnelle Eingangsports
keine physikalischen Ressourcen teilen. In der beschriebenen Ausführungsform
repräsentiert
diese Anordnung eine Designwahl, die die Tatsache nutzt, dass sich die
langsamen Daten ebenso effizient mit weniger dedizierten Hardware-Ressourcen
handhaben lassen. Wie in der 4 gezeigt,
enthält
die langsame Portschnittstelle 206 keine Puffer- oder Steuerschaltung
für „wr_data", die durch den langsamen
Eingangsport 202b kommen. Das heißt, die langsame Portschnittstelle 206 besitzt
keine zur schnellen Eingangsschnittstellenschaltung 344 der 3 analoge Schaltung.
Stattdessen werden langsame Client-Eingangsport "rd_req" Befehls- und Datensignale direkt an
den Zuteiler 210 erster Ebene gesendet und „wr_gnt" Signale werden direkt
vom Zuteiler 210 erster Ebene zum langsamen Eingangsport 202b gesendet.
-
Die
Ausgangsschnittstellenschaltung 442 arbeitet genauso, wie
in Bezug auf die Ausgangsschnittstellenschaltung 342, mit
einer Ausnahme, beschrieben. Die Ausgangsschnittstellenschaltung 442 der
langsamen Portschnittstelle 206 muss Zugriff auf den gemeinsamen
Speicher durch zwei Arbitrierungsebenen anstatt einer gewinnen.
Im Besonderen werden die „rd_req" und „rd_addr" Signale zum Zuteiler 210 erster
Ebene gesendet. Die „rdgnt" Signale werden vom
Zuteiler/Scheduler 214 zweiter Ebene empfangen, wenn die
Arbitrierung beendet ist.
-
Die 5 ist
ein Diagramm, das Details des Teils des Zuteilen 210 erster
Ebene zeigt, der Schreiboperationen zum gemeinsamen Speicher verarbeitet.
Der Zuteiler 210a erster Ebene umfasst den Arbitrierungsstromkreis 510 sowie
Befehls- und Datenmultiplexer 512 bzw. 514. Der
Arbitrierungsstromkreis 510 empfängt, in dieser Ausführungsform, „wr_reqs" von elf Ports, die
mit 100 Mbps arbeiten. In dieser Ausführungsform umfasst der Arbitrierungsstromkreis 510 außerdem „wr_reqs" von einem Host-Port,
der mit der Datenrate der 100 Mbps-Ports arbeitet. In anderen Ausführungsformen
bedient der Arbitrierungsstromkreis 510 unterschiedliche
Zahlen verschiedener Porttypen, die mit unterschiedlichen Datenraten
und in Übereinstimmung
mit anderen Protokollen, als in den Ausführungen beschrieben, arbeiten.
Der Arbitrierungsstromkreis 510 verwendet einen Round-Robin-Arbitrierungsplan,
um einen speziellen Port auszuwählen,
dem als nächstem
Zugriff bewilligt wird. Bewilligungssignale 504 sind individuelle „wr_gnt" Signale, die vom
Zuteiler/Scheduler 214 zweiter Ebene durch den Schreibzuteiler 210a erster Ebene
an individuelle anfordernde Ports gesendet werden. Die Befehlsleitungen 506 haben
jeweils ihren Ursprung in einem langsamen Eingangsport und transferieren
Befehlsinformation in drei Bitsegmenten zum Multiplexer 512.
Nach Beendigung der Arbitrierung bewirkt ein Selektier-Signal vom
Arbitrierungsstromkreis 510, dass Befehlsinformation von
einem der anfordernden langsamen Ports zum Laden der Statusmaschine 516 transferiert
wird. Die Datenleitungen 508 haben jeweils ihren Ursprung
in einem langsamen Eingangsport. Die Datenleitungen 508 transferieren
jeweils Dateninformation in 16-Bit-Segmenten
zum Multiplexer 514. Nach Beendigung der Arbitrierung wird
die Befehlsinformation von einem der Ports vom Multiplexer 514,
durch ein Auswahlsignal vom Arbitrierungsstromkreis 510,
transferiert. Daten werden in 16-Bit-Segmenten vom Multiplexer 514 zu
einem der „wr_data" Registers 520 oder 522 oder
zu Registern 526 und 528, wie von den in der Ladestatusmaschine 516 decodierten
Befehlsbits angeordnet, transferiert. Die Register 520 und 522 werden
verwendet um Schreibdaten (fe_wr_data) in 128-Bit-Worte zu assemblieren.
Die Register 528 werden verwendet um einen 16-Bit-Schreibtag (fe_wr_tag)
zu assemblieren. Die Register 526 werden verwendet eine
19-Bit-Schreibadresse (fe_wr_addr) zu assemblieren. Unter der Kontrolle der
Entladestatusmaschine 518 überträgt der Multiplexer 524 ein
128-Bit-Datenwort von einem der Register 520 oder 522,
das an den gemeinsamen Speicher geschrieben werden soll. Die Entladestatusmaschine 518 überträgt eine
Schreibanforderung (fe_wr_req) an den Zuteiler/Scheduler 214 zweiter Ebene
und empfängt
ein Schreibbewillingungssignal (fe_wr_gnt) vom Zuteiler/Scheduler 214 zweiter
Ebene.
-
Die 6 ist
ein Blockdiagramm eines Lesezuteilerteils 210b des Zuteilen 210 erster
Ebene. Der Lesezuteiler 210b erster Ebene umfasst den Arbitrierungsstromkreis 608 und
den Multiplexer 610. Die Leseanforderungsleitungen (rd_req) 602 tragen
Anforderungssignale von elf langsamen (in dieser Ausführungsform,
schnellen Ethernet) Ausgangsports und einem Host-Ausgangsport. Die
Lesebewilligungsleitungen (rd_gnt) 604 tragen „rd_gnt" Signale vom Arbitrierungsstromkreis 608 zu
individuellen Ports, die eine Leseoperation anfordern. Leseadressenleitungen
(rd_addr) 606 tragen Leseadressen von 19 Bits von Anforderungsports.
Eine 19-Bit-Leseadresse (fe_rd_addr) wird an den Zuteiler/Scheduler 214 zweiter
Ebene durch ein Auswahlsignal vom Arbitrierungsstromkreis 608 zum
Multiplexer 610 transferiert. Der Arbitrierungsstromkreis 608 transferiert eine
einzige Leseanforderung (fe_rd_req) von einem der anfordernden Ports
nach Beendigung der Round-Robin-Arbitrierung. Der Arbitrierungsstromkreis 608 empfängt ein
Lesebewilligungssignal (fe_rd_gnt) vom Zuteiler/Scheduler 214 zweiter
Ebene.
-
Die 7 ist
ein Blockdiagramm des Zuteilers/Schedulers 214. Die 7 zeigt
außerdem
den SRAM-Controller 216, der an den Zuteiler/Scheduler 214 zweiter
Ebene gekoppelt ist. Der Zuteiler/Scheduler 214 zweiter
Ebene umfasst den Arbitrierungsstromkreis 702 sowie die
Multiplexer 704, 706, 708 und 710 zum
Empfangen von beziehungsweise „wr_addrs", „rd_addrs", „wr_data" bzw. „wr_tags". Die Anforderungsleitungen 728 übertragen „rd_reqs" und „wr_reqs" an den Arbitrierungsstromkreis 702.
Es werden acht „wr_req" Signale zum Arbitrierungsstromkreis 702 gesendet.
In dieser Ausführungsform repräsentieren
die acht „wr_req" Signale Anforderungen
von acht schnellen (Gigabit Ethernet) Ports oder drei Gigabit-Ports
und fünf
konfigurierbaren Ports, die als Gigabit-Ports konfiguriert sind.
Ein „fe_wr_req" Signal gelangt vom
Zuteiler 210 erster Ebene in den Arbitrierungsstromkreis 702.
Der Arbitrierungsstromkreis 702 empfängt außerdem acht Leseanforderungssignale
(rd_req), die den vorher beschriebenen acht „wr_req" Signalen entsprechen.
-
Abschließend empfängt der
Arbitrierungsstromkreis 702 eine „fe_rd_req" vom Zuteiler 210 erster Ebene.
Der Arbitrierungsstromkreis 702 führt, in dieser Ausführungsform,
Round-Robin-Arbitrierung durch und gibt ein „fe_rd_gnt" Signal, ein „rd_gnt" Signal, ein „fe_wr_gnt" Signal und ein „a wr_gnt" Signal entsprechend aus. Der Arbitrierungsstromkreis 702 überträgt weiter
ein Schreibbefehlssignal (wr_cmd) und ein Lesebefehlssignal (rd_cmd)
wie entsprechend an den SRAM-Controller 216. Nach beendeter Arbitrierung überträgt der Arbitrierungsstromkreis 702 ein
Schreibwählsignal
(wr_sel) oder Lesewählsignal
(rd_sel), wie von der aktuellen Operation benötigt, an die Multiplexer 704, 706, 708 und 710 wie
gezeigt. Die „wr_addr" Leitungen 730 übertragen „wr_addr" Signale und ein „fe_wr_addr" Signal an den Multiplexer 704.
-
Wie
in Bezug auf die Anforderungssignale 728 erläutert, werden
in den gezeigten Ausführungsformen „wr_addr" Signale von acht
Gigabit-Ports (direkt übertragen)
und ein „fe_ar_addr" Signal vom Zuteiler 210 erster
Ebene vom Multiplexer 704 empfangen. Ebenso werden „rd_addr" und "fe_rd_addr" Signale auf „rd_addr" Leitungen 732 zum
Multiplexer 706 gesendet. Die „wr_data" Signale und „fe_wr_data" Signale werden auf
den „wr_addr" Leitungen 734 zum
Multiplexer 708 gesendet. Die „wr_tag" Signale und ein „fe_wr_tag" Signal werden auf den „wr_tag" Leitungen 736 zum
Multiplexer 710 gesendet. Nach beendeter Arbitrierung selektiert
der Multiplexer 712 eine einer 19-Bit-„wr_addr” oder einer 19-Bit-„rd_addr” zur Übertragung
an das Register 714 und den SRAM-Controller 216.
Außerdem
wird, nach beendeter Arbitrierung, "wr_data" auf einer der Leitungen 734 durch
die Synchronisationsregister 716, 718 und 722 auf
den gemeinsamen Speicher übertragen.
16-Bits von "wr_tag" Information werden von
einer der Leitungen 736 selektiert, die als SRAM-Tag-Information
durch die Synchronisationsregister 722, 724 und 726 übertragen
werden soll.
-
In
der bevorzugten Ausführungsform
wird ein gänzlich
nach dem Pipeline-Verfahren arbeitender SRAM-Speicher, der Null-Busumkehrung
unterstützt, als
gemeinsamer Speicher benutzt. Deshalb wird keine Latenz auftreten,
wenn ein Lesezyklus einem Schreibzyklus folgt. Dies erlaubt dem
Zuteiler/Scheduler 214 zweiter Ebene, Anforderungen in
beliebiger Reihenfolge zu planen. In einer Ausführungsform plant der Zuteiler/Scheduler 214 zweiter
Ebene Leseanforderungen zusammen, gefolgt von Schreibanforderungen.
In dieser Ausführungsform
wird, bei Verwendung eines Speichers, der Leistungsdegradation beim
Wechseln zwischen Lese- und Schreibtransaktionen erleidet, diese
Degradation minimiert.
-
Die 8 ist
ein vereinfachtes Diagramm zweistufiger Arbitrierung für Zugriff
auf den gemeinsamen Speicher gemäß einer
Ausführungsform.
In dieser Ausführungsform
werden Leseanforderungen und Schreibanforderungen von den folgenden
Ports unterstützt:
Drei schnellen Ports 222; fünf konfigurierbaren Ports 220;
elf langsamen Ports 202 und einem Host-Port 204.
Wie in der 8 gezeigt, handhaben der Zuteiler 210 erster
Ebene und der Zuteiler/Scheduler 214 zweiter Ebene Leseanforderungen
und Schreibanforderungen von schnellen und langsamen Ports, die
in dieser Figur als Gigabit Ethernet (GE) und Fast Ethernet (FE)
bezeichnet sind. Die FE-Leseanforderungssignale (FErd) 806 und
das Host-Leseprozessanforderungssignal (HRP) 808 werden vom
Lesezuteiler 210b erster Ebene auf eine Round-Robin-Weise
arbitriert. Infolge dieser Arbitrierung wird eine einzelne Ferd-Anforderung
zum Zuteiler/Scheduler 214 zweiter Ebene gespeist. Der
Zuteiler/Scheduler 214 zweiter Ebene arbitriert zwischen den
Ergebnissen der Arbitrierung, die vom Zuteiler 210b erster
Ebene durchgeführt
wurde, drei GE-Leseanforderungen (GErd) 802 und fünf konfigurierbaren
GE/FE-Leseanforderungen (GE/FErd) 804. Die zweistufige
Arbitrierung für
Schreibanforderungen wird auf ähnliche
Weise gehandhabt. Wie gezeigt, arbitriert der Schreibzuteiler 210a zwischen FE-Schreibanforderungen
(FEwr) 814 und einer Host-Sendeprozessanforderung (HTP) 816.
Der Zuteiler/Scheduler 214 zweiter Ebene arbitriert zwischen
den Ergebnissen der Arbitrierung, die vom Zuteiler 210a erster
Ebene durchgeführt
wurde und GE-Schreibanforderungen
(GEwr) 810 und GE/FE-Schreibanforderungen (GE/FEwr) 812.
Auf diese Weise wird Speicherbandbreite optimiert und Ressourcen
werden konserviert.
-
In
der, in der 8 gezeigten Ausführungsform
werden Zugriffanforderungen auf den gemeinsamen Speicher in der
Reihenfolge, wie von links nach rechts gezeigt, mit Leseanforderungen
zeitmäßig zuerst,
gefolgt von Schreibanforderungen geplant. Diese Anordnung minimiert
Wartezustände
für Speicher,
die Wartezuständen
erleiden, wenn zwischen Lese- und Schreibzugriffen gewechselt wird. Andere
Ausführungsformen
arrangieren die Reihenfolge von Lese- und Schreiboperationen auf
andere Art und ziehen immer noch Nutzen aus der Effizienz des Plans
der zweistufigen Arbitrierung.
-
Die
vorliegende Erfindung wurde in Bezug auf spezifische beispielhafte
Ausführungen
beschrieben. Verschiedene Modifikationen und Änderungen könnten aber von Fachleuten vorgenommen
werden ohne vom Umfang der Erfindung, wie in den folgenden Patentansprüchen dargelegt,
abzuweichen. Die vorliegende Erfindung ist, beispielsweise, nicht
auf die Verwendung mit zwei Porttypen, die auf einen gemeinsamen
Speicher mit unterschiedlichen Datenraten zugreifen oder auf zwei
unterschiedliche Datenraten oder auf die speziellen Datenraten der
beschriebenen Ausführungsformen
begrenzt. Die vorliegende Erfindung ist nicht auf Verwendung mit
einem Ethernet-Netzwerkprotokoll begrenzt. Die vorliegende Erfindung
sollte deshalb durch die folgenden Patentansprüche definiert werden.