-
GEBIET DER ERFINDUNG
-
Diese
Erfindung bezieht sich auf das Gebiet der Speichervorrichtungen
und insbesondere auf inhaltsadressierbare Speichervorrichtungen.
-
HINTERGRUND
DER ERFINDUNG
-
Netzwerke
können
Ansammlungen von Computersystemen (z.B. Clients und Server) besitzen,
die über Übertragungsleitungen
miteinander verbunden sind, um zwischen ihnen die Übertragung von
Daten zu ermöglichen.
Ein Netzwerk beinhaltet typischerweise mehrere Zugangspunkte (Router
und Server), die Daten zwischen Übertragungsleitungen schalten
und/oder weiterleiten, um Daten von einer Quelle zu einem Ziel zu übertragen.
Daten werden typischerweise in der Form von Paketen übertragen, die
aus kleineren Datenzellen zusammengesetzt sind. Ein Paket ist eine
Dateneinheit, die in einem paketgeschalteten Netzwerk zwischen einer
Quelle und einem Ziel übertragen
wird. Wenn eine Datei (z.B. eine E-Mail, eine Grafik, etc.) von
einem Ort zu einem anderen in einem Netzwerk gesendet wird, wird
die Datei in solch kleinere Pakete unterteilt, wodurch sie für die Übertragung
effizienter werden. Die individuellen Pakete für eine gegebene Datei können entlang verschiedener
Wege durch die Netzwerke wandern, wobei jedes Paket sowohl Daten-
als auch Übertragungsinformationen
besitzt, die mit dem Weiterleiten der Daten verknüpft sind.
Als solches kann ein Paket dahingehend beschrieben werden, dass
es Nutzdaten hat, welches die Daten beinhaltet, und einen oder mehrere
Kopfzeilen bzw. Header, die die Weiterleitungsinformationen beinhalten
(z.B. eine Zieladresse).
-
Wenn
alle Pakete an einem Zielort eingetroffen sind, werden sie am empfangenden
Ende zur Originaldatei zusammengefügt. Solch ein Paketschaltverfahren
ist eine effiziente Art und Weise, die Übertragung in einem Netzwerk
ohne Verbindungen zu übertragen.
Dies steht im Gegensatz zu einem leitungsvermittelten Schema, wo
eine Verbindung (z.B. eine Sprachverbindung) die Überlassung
eines bestimmten Pfads während
der Dauer der Verbindung erfordert.
-
Ein
Router ist eine Vorrichtung (z.B. Hardware, Firmware, Software),
die das nächste
Netzwerksegment bestimmt, zu welchem ein Paket in Richtung zu seinem
Ziel befördert
werden muss. Ein Router kann an Punkten positioniert werden, die
innerhalb eines Netzwerkes liegen oder wo Netzwerke aneinander stoßen, nachfolgend
als Gateway bezeichnet. Ein Router kann Tabellen von verfügbaren Wegen
und ihren Benutzungsbedingungen erzeugen und verwalten, zusammen
mit anderen Informationen zur Bestimmung des besten Weges für ein gegebenes
Paket. Typischerweise wan dert ein Paket durch eine Anzahl von Netzwerkpunkten,
die Router besitzen, bevor es an seinem Zielort eintrifft.
-
Wenn
ein Datenpaket als Input bei einem Router eintrifft, werden verschiedene
Nachschlagevorgänge
durchgeführt,
um die nachfolgende Behandlung des Pakets zu bestimmen, wie es in 1 gezeigt
ist. Die Nachschlagevorgänge
können
zum Beispiel beinhalten, wohin das nächste Paket gesendet wird (nächster Sprung),
das Dienstgüteerfordernis
(QoS), die Ethernet-Port-Adresse, etc. Man betrachte z.B. ein Paket,
das bei einem Router A eintrifft. Der Router A muss bestimmen, ob
das Paket für lokale
Server bestimmt ist, die direkt mit dem Router A verbunden sind,
oder ob das Paket zum nächsten Router
auf einem Weg (Router B) zu einem Ziel gehen soll. Zusätzlich kann
der Router A eine gewisse Priorität zuordnen, die auf der Zieladresse
(DA) und der Quellenadresse (SA) des Pakets basiert.
-
Der
Paket-Header kann zuerst geparst oder verarbeitet werden, um die
Werte der verschiedenen Felder zu erhalten (z.B. SA, DA, Protokolltyp,
QoS, etc.), um verschiedene Nachschlagevorgänge durchzuführen. Ein
Paketklassifikationsnachschlagevorgang kann z.B. unter Benutzung
von SA, DA und anderen relevanten Feldern im Paket-Header durchgeführt werden.
Der Nachschlagevorgang für
den nächsten
Schritt kann z.B. durchgeführt
werden, um festzustellen, ob das Paket für lokale Server oder für den Router
B bestimmt ist. Wenn das Paket für
den Router B bestimmt ist, wird das Paket in eine Warteschlange
für den
Router B eingereiht. Wenn das Paket für einen lokalen Server bestimmt
ist (z.B. Server 1 oder Server 2) kann ein MAC- (Media Access Control)
Nachschlagevorgang durchgeführt
werden, um das Paket zum jeweiligen Server zu senden. In dem vorangegangenen
Beispiel sind drei Nachschlagevorgänge erforderlich, um das Paket
auf seinen Weg zu bringen: Paketklassifikation, nächster Sprung
und MAC. Oftmals sind jedoch andere Nachschlagevorgänge mit
dem Paket-Header durchzuführen,
wobei die Zahl der Nachschlagevorgänge fünf oder mehr überschreitet.
-
Router
können
Prozessoren und inhaltsadressierbare Speicher- (CAM-) Vorrichtungen
benutzen, um die verschiedenen Nachschlagevorgänge bei den Paketen durchzuführen. Im
Gegensatz zu einer Vorrichtung mit einem Speicher mit wahlfreiem Zugriff
(RAM), bei der auf Informationen durch Spezifizierung einer bestimmten
Speicherortsadresse zugegriffen wird, wird auf die in einem CAM
gespeicherten Daten über
die Inhalte der Daten zugegriffen. Insbesondere benutzt ein CAM
anstelle einer Adresse für
den Zugriff auf einen bestimmten Speicherort einen Schlüssel, der
einen Teil des gewünschten
Inhalts einer bestimmten Speicherzelle in der Speichervorrichtung
beinhaltet. Der CAM kann von einem Prozessor angewiesen werden,
den Schlüssel,
der auch als die Komparanddaten bezeichnet wird, (z.B. Paket-Header-Daten)
mit Daten zu vergleichen, die in seinem assoziativen Speicherarray
gespeichert sind, wie es in 2 veranschaulicht
ist. Der CAM untersucht simultan alle seine Einträge und wählt die gespeicherten
Daten aus, die mit dem Schlüssel
zusammenpassen.
-
Wenn
die gesamte CAM-Vorrichtung, oder Blöcke derselben, durchsucht wird,
und zwar simultan auf das Zusammenpassen der gespeicherten Daten
mit den Schlüssel-Komparanddaten,
zeigt die CAM-Vorrichtung das Vorhandensein eines Treffers durch
Setzen eines Treffer-Flags an. Mehrere Treffer können auch durch Setzen eines
Multi-Treffer-Flags angezeigt werden. Die CAM-Vorrichtung besitzt
typischerweise einen Prioritätskodierer,
um den Trefferort in eine Trefferadresse oder in einen CAM-Index
zu übersetzen,
und diese Adresse an ein Statusregister auszugeben, sodass auf die
Trefferdaten zugegriffen werden kann. Der Prioritätskodierer
kann auch den Speicherort mit der höchsten Priorität auswählen, wenn
es mehr als einen Treffereintrag gibt.
-
Daten
können
in Form von Zeichenketten von binären Ziffern ("Bits") repräsentiert
werden, die einen niedrigen ("0") logischen Zustand
und einen hohen ("1") logischen Zustand
haben. Verschiedene Typen von CAMs können mit verschiedenen Datenformaten
benutzt werden. Ein binärer
CAM ist ausgelegt, mit "0"- und "1"-Zuständen betrieben zu werden, wohingegen
ein ternärer
CAM ausgelegt ist, mit den Zuständen "0", "1" und "egal" betrieben zu werden. Die
Bits können
in Gruppen wie z.B. einem Wort (z.B. 64 oder 72 Bit breit) organisiert
werden und in verschiedenen Segmenten eines CAMs abgelegt sein. Die
Schlüssel,
die für
verschiedene Datenfelder benutzt werden, können verschiedene Wortgrößen haben,
z.B. kann ein Schlüssel
für den
Nachschlagevorgang einer Klassifikation 128 Bit breit sein und der Schlüssel für den Nachschlagevorgang
des nächsten Sprungs
kann 32 Bit breit sein.
-
Ein
Router kann mehrere CAMs besitzen, wobei jeder CAM eine andere Tabelle
haben kann, oder alternativ einen einzigen CAM, der mehrere Blöcke für jeden
der verschiedenen Tabellen besitzt, um verschiedene Nachschlagevorgänge durchzuführen. Zum
Beispiel kann ein Router einen 32-Bit breiten CAM für den nächsten Schritt
haben, einen 128-Bit CAM für
die Klassifikation und einen 48-Bit-MAC-CAM. Bei Routern mit mehreren CAMs werden
typischerweise die mehreren CAMs mit gemeinsamen Bussen verbunden,
die benutzt werden, um die verschiedenen Schlüssel und andere Eingangs- und
Ausgangsdaten mit jedem der CAM-Vorrichtungen zu übertragen.
Auf ähnliche
Weise wird bei Routern, die einen einzigen CAM mit mehreren Blöcken haben,
auf jeden der Blöcke
unter Benutzung gemeinsamer Busse zugegriffen. Daher werden Nachschlagevorgänge typischerweise
sequenziell durchgeführt,
bevor ein Paket verarbeitet (z.B. zum nächsten Ziel weitergeleitet
oder klassifiziert) wird. Weil die Busse so viele Eingabe- und Ausgabefunktionen
aller CAMs oder CAM-Blöcke
bereitstellen, werden viele Taktzyklen benötigt, um die Daten auf den Bus
zu multiplexen. Dies begrenzt typischerweise die Suchrate und den
gesamten Durchsatz von konventionellen CAM-Vorrichtungen. Wenn die
Zahl der Ports, Segmente oder Vorrichtungen, die durch Router unterstützt werden,
und die Zahl der Nachschlagevorgänge
ansteigt, können
konventionelle CAM-Vorrichtungen
und -architekturen unerwünschterweise
den gesamten Durchsatz des Systems begrenzen.
-
Das
US-Patent 6,098,147 bezieht sich auf ein Verfahren und eine Vorrichtung
für die
längste
Koinzidenzdatendetektion unter Benutzung assoziativer Speichereinheiten,
die Interleave-Daten haben. Gemäß diesem
Dokument vergleicht jede der N assoziativen Speichereinheiten einen
verteilten Teil externer Daten sowie einen korrespondierenden Teil
interner Daten mit einer ausgewählten
Bitregion des signifikantesten Bits eines korrespondierenden Teils
interner Daten und gibt ein Treffersignal aus, wenn in der ausgewählten Bitregion
der korrespondierende Teil des externen Datenanteils und ein entsprechender
Abschnitt der internen Daten miteinander koinzidieren. Dieses Dokument
offenbart ebenfalls das Schieben von Masken-Bitdaten, wenn bei einer
Vergleichsoperation kein Treffer erzielt wurde und offenbart das
Verschieben der Masken-Bitdaten um ein Bit in Richtung auf das signifikanteste
Bit und das Addieren einer "0" beim am wenigstens
signifikanten Bit, wodurch die Bits der Datenmaske in denselben
Positionen relativ zueinander erhalten werden.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die
vorliegende Erfindung wird durch die beigefügten Patentansprüche definiert,
die sich auf ein Verfahren und eine Vorrichtung für das gleichzeitige Durchsuchen
verschiedener Tabellen in einem inhaltsadressierbaren Speicherarray
beziehen.
-
Andere
Merkmale und Vorteile der vorliegenden Erfindung werden aus den
beigefügten
Zeichnungen und von der detaillierten Beschreibung ersichtlich,
die nachfolgend angegeben sind.
-
KURZE BESCHREIBUNG
DER FIGUREN
-
Die
vorliegende Erfindung wird beispielhaft durch die Figuren in den
begleitenden Zeichenblättern
beschrieben, die nicht beschränkend
verstanden werden sollen.
-
1 ist
eine konzeptionelle Veranschaulichung der Paketbehandlung durch
einen Router.
-
2 veranschaulicht
eine Ausführungsform
einer CAM-Vorrichtung.
-
3 zeigt
eine Ausführungsform
einer Leitungskarte oder Schaufel bzw. Blade eines Routers, der
eine CAM-Vorrichtung hat, die konfiguriert ist, gleichzeitige Nachschlagevorgänge vor
zunehmen.
-
4A zeigt
eine Ausführungsform
einer Multiblock-CAM-Vorrichtung mit Eingangszeichenkettenfilterschaltkreisen.
-
4B zeigt
eine Ausführungsform
eines Filterschaltkreises in einer Multiblock-CAM-Vorrichtung.
-
5A zeigt
eine Ausführungsform
einer Eingangszeichenkette.
-
5B ist
eine konzeptionelle Darstellung des Betriebs der CAM-Vorrichtung
unter Benutzung von bestimmten Paket-Header-Segmenten der Eingangszeichenkette
der 5A.
-
6 ist
eine konzeptionelle Darstellung einer Ausführungsform des Filterns und
Verdichtens einer Eingangszeichenkette.
-
7 ist
eine konzeptionelle Veranschaulichung einer Ausführungsform einer Bit-Manipulation für das Filtern
und Verdichten einer Eingangszeichenkette.
-
8 zeigt
ein Verfahren für
das Programmieren eines Filterschaltkreises, sodass dieser eine Eingangszeichenkette
filtern und verdichten kann.
-
9 zeigt
eine Ausführungsform
eines Crossbar-Schalters.
-
10 zeigt
eine Ausführungsform
eines Speicherelements des Crossbar-Schalters der 9.
-
11 zeigt
eine Ausführungsform
eines Filterschaltkreises.
-
12 zeigt
eine Ausführungsform
des Adressengenerators der 11.
-
13 zeigt
eine weitere Ausführungsform des
Adressengenerators der 11.
-
14 zeigt
eine weitere Ausführungsform eines
Filterschaltkreises.
-
15 zeigt
eine Ausführungsform
eines Datengenerators, der mit einem Blockfilterregister verbunden
ist.
-
16 zeigt
ein Beispiel, wie die Ausführungsform
der 15 benutzt wird.
-
17 veranschaulicht
zehn Matrix-Verbindungen für
einen Crossbar-Schalter, basierend auf dem exemplarischen Bitmuster
in einem Blockfilterregister.
-
18 zeigt
eine alternative Ausführungsform
eines Datengenerators, der mit einem Blockfilterregister verbunden
ist.
-
19 zeigt
eine Ausführungsform
eines Blockfilterregisters, das mit einem Leseverstärker verbunden
ist.
-
20 zeigt
eine Ausführungsform
eines Crossbar-Schalters.
-
21 zeigt
eine weitere Ausführungsform eines
Filterschaltkreises.
-
22 zeigt
eine Ausführungsform
des Datengenerators der 21, der
mit einer ODER-Logik und einem Blockfilterregister verbunden.
-
23 zeigt
eine weitere Ausführungsform eines
Crossbar-Schalters.
-
DARSTELLUNG
DER ERFINDUNG
-
In
der folgenden Beschreibung werden zahlreiche spezielle Details dargelegt,
wie z.B. spezielle Komponenten, Schaltkreise, Verfahren, etc., um
ein gründliches
Verständnis
der vorliegenden Erfindung zu ermöglichen. Es wird jedoch dem
Fachmann offensichtlich werden, dass diese speziellen Details nicht
benutzt werden müssen,
um die vorliegende Erfindung auszuführen. In anderen Fällen werden
allgemein bekannte Komponenten oder Verfahren nicht im Detail beschrieben,
um nicht unnötigerweise
den Blick auf die vorliegende Erfindung zu verstellen.
-
Ausführungsformen
der vorliegenden Erfindung beinhalten verschiedene Verfahrensschritte, die
nachstehend beschrieben werden. Diese Schritte können durch Hardwarekomponenten
ausgeführt werden
oder können
als maschinenausführbare
Instruktionen verkörpert
sein, die benutzt werden können,
um Hardwarekomponenten (z.B. einen Prozessor, einen Programmschaltkreis),
die mit den Instruktionen programmiert sind, anweisen, die Schritte durchzuführen. Alternativ
können
die Schritte durch eine Kombination von Hardware und Software ausgeführt werden.
-
Ausführungsformen
der vorliegenden Erfindung können
in Form eines Computerprogrammprodukts bzw. einer Software bereitgestellt
werden, die ein maschinenlesbares Medium beinhaltet, auf welchem
die Anweisungen abgelegt sind. Das maschinenlesbare Medium kann
benutzt werden, um ein Computersystem (oder andere elektronische
Vorrichtungen) zu programmieren, um Artikel herzustellen (z.B. Wafermasken),
die benutzt werden, um Ausführungsformen
der vorliegenden Erfindung herzustellen. Das maschinenlesbare Medium
kann Disketten, optische Disketten, CD-ROMs und magnetooptische Disketten,
ROMs, RAMs, EPROMs, EEPROMs, magnetische oder optische Karten, Flash-Speicher
oder andere Arten von medien-/maschinenlesbare Medien sein, die
geeignet sind, elektronische Instruktionen zu speichern, sind aber
nicht darauf beschränkt.
-
Das
maschinenlesbare Medium kann Daten speichern, die das Konstruktionslayout
einer integrierten Schaltung repräsentieren, die Ausführungsformen
der vorliegenden Erfindung verkörpern.
Das Konstruktionslayout für
den Rohchip der integrierten Schaltungen kann unter Benutzung verschiedener Mittel
erzeugt werden, z.B. schematische Darstellungen, Textdateien, Netzlisten
mit Gate-Niveau,
Hardwarebeschreibungssprachen, Layout-Daten, etc. Das Konstruktionslayout
kann für
die Herstellung von Wafern in Masken-Layer konvertiert werden, die
eine oder mehrere Rohchips der integrierten Schaltkreise besitzen.
Die Rohchips der integrierten Schaltkreise können dann in verpackte Komponenten
zusammengefasst sein. Das Design-Layout, die Erzeugung der Masken-Layer, die Herstellung
und das Verpacken der integrierten Schaltkreis-Rohchips sind allgemein bekannt;
entsprechend werden diese nicht ausführlich beschrieben.
-
Das
Verfahren und die Vorrichtung, die hier beschrieben werden, sehen
das Filtern einer gemeinsamen Eingangszeichenkette vor, um eine
oder mehrere gefilterte Komparand-Zeichenketten zu erzeugen. In
einer Ausführungsform
ermöglicht
das Filtern einer gemeinsamen Eingangszeichenkette gleichzeitige
Nachschlagevorgänge
in verschiedenen CAM-Tabellen, die mit mehreren gefilterten Komparanden
verschiedener CAM-Vorrichtungen (oder verschiedene Blöcke einer
CAM-Vorrichtung)
durchgeführt
werden, um Daten in gefilterten Komparand-Zeichenketten mit Daten,
die in seinem assoziativen Speicher abgelegt sind, zu vergleichen.
Indem mehrere Nachschlagevorgänge
parallel und nicht sequenziell vorgenommen werden, wird der Paketdurchsatz
(z.B. in einem Router) signifikant erhöht.
-
Die
gemeinsame Eingangszeichenkette einschließlich mehrerer Komparanden
oder Suchschlüsselinformationen
kann durch eine Controller-Einheit wie z.B. einen Netzwerkprozessor
oder eine Zentraleinheit gebildet werden. In einer Ausführungsform
kann die gemeinsame Eingangszeichenkette einen oder mehrere Paket-Header
besitzen oder Teile derselben. Die Eingangszeichenkette kann verschiedene
Weiterleitung- bzw. Routing-Daten in Feldsegmenten der Eingangszeichenkette
besit zen, die benützt
werden, um die nachfolgende Behandlung des Pakets festzulegen, z.B.
Klassifikation, nächster
Schritt und MAC. Dieselbe Eingangszeichenkette passiert verschiedene
Filterschaltkreise. Die Filterschaltkreise können vorprogrammiert werden,
um es selektiv einem oder mehreren Segmenten der gemeinsamen Zeichenkette
zu ermöglichen, als
gefilterte Komparand-Daten zu einer oder mehreren CAM-Tabellen zu
gelangen.
-
In
einer Ausführungsform
wird das Filtern auf einer Bitbasis durchgeführt, wobei spezielle vorbestimmte
Bits aus der gemeinsamen Eingangszeichenkette ausgewählt werden,
damit gefilterte Zeichenkettensegmente erzeugt werden. Die gefilterten Zeichenkettensegmente
können
ebenso zu geeigneten Bitpositionen verschoben werden, um die gefilterten
Zeichenkettensegmente in eine verdichtete gefilterte Komparand-Zeichenkette
zu verdichten. Die verschiedenen Verdichtungs- und/oder Filteroperationen, die mit
der Eingangszeichenkette ausgeführt werden,
können
parallel anstelle von sequenziell durchgeführt werden, sodass eine Filteroperation
gestartet werden kann, bevor eine weitere Filteroperation abgeschlossen
ist. Jede der gefilterten Komparand-Zeichenketten kann dann den
CAM-Vorrichtungsblöcken
zur Verfügung
gestellt werden. Auf diese Weise können alle CAM-Vorrichtungsblöcke gleichzeitig
Nachschlagevorgänge
durchführen.
Alternativ kann das Filtern und/oder Verdichten sequenziell durchgeführt und
kann vor nachfolgenden Nachschlagevorgängen abgeschlossen werden, oder
kann gleichzeitig mit nachfolgenden Nachschlagevorgängen durchgeführt werden.
-
In
einer Ausführungsform
können
die Filterungs- und Verdichtungsoperationen durch mehrere Crossbar-Schalter
durchgeführt
werden, die jeweils unter der Kontrolle eines entsprechenden Programmierschaltkreises
sind. Die Eingangszeichenkette wird parallel zu allen Crossbar-Schaltern übertragen. Jeder
Crossbar-Schalter kann durch seinen entsprechenden Programmierschaltkreis
vorprogrammiert werden, um verschiedene Segmente der Eingangszeichenkette
zu filtern und zu verdichten, um mehrere verdichtete und gefilterte
Komparand-Zeichenketten zu erzeugen. Die mehreren gefilterten Komparand-Zeichenketten
können
dann benutzt werden, um verschiedene Nachschlagevorgänge unter
Benutzung verschiedener Tabellen durchzuführen. Die verdichteten gefilterten
Komparand-Zeichenketten können
ohne Lücken
zwischen ihnen kontinuierlich gefüllt werden. Der Programmierschaltkreis
beinhaltet in einem Beispiel einen Adressengenerator, ein Blockfilterregister
und einen Datengenerator. In einer Ausführungsform können die
Crossbar-Schalter und/oder die Blockfilterregister mit RAM- (Random Access
Memory) Vorrichtungen implementiert werden.
-
3 zeigt
eine Ausführungsform
einer Leitungskarte oder Schaufel bzw. Blade eines Routers mit einer
CAM-Vorrichtung, die konfiguriert ist, gleichzeitige Nachschlagevorgänge durchzuführen. Die Leitungskarte 300 besitzt
einen Prozessor 310, Eingangsschnittstellenschaltungen 330,
Ausgangsschnittstellenschaltungen 340, eine CAM-Vorrichtung 320,
eine zugeordnete Datenspeichereinheit 370, einen Verkehrsmanager 370 und
eine Nutzdatenspeichereinheit 350.
-
Der
Prozessor 310 dient dazu, alle Operationen der Leitungskarte 300 gemeinsam
mit den weiteren Komponenten der Leitungskarte 300 zu steuern. Zum
Beispiel empfängt
der Prozessor 310 über
die Eingangsschnittstellenschaltung 330 Pakete von einem
Netzwerkmedium, speichert die Nutzdaten der Pakete in der Nutzdatenspeichereinheit 350 und
verarbeitet die Paket-Header-Informationen, um die erforderlichen
Nachschlagevorgänge
in der CAM-Vorrichtung 320 und die nachfolgende Behandlung
der Pakete wie hier erläutert
festzulegen. Eingangsschaltungen beinhalten z.B. PHY- und MAC-Vorrichtungen. Der
Prozessor 310 sendet, basierend auf den Nachschlagevorgängen, die
in der CAM-Vorrichtung 320 durchgeführt werden, mit der Ausgangsschnittstellenschaltung 340 Pakete über ein
Netzwerkmedium. Die Ausgangsschnittstellenschaltung 340 kann mit
einer Schaltstruktur verbunden werden oder kann direkt mit einem
oder mehreren Routern oder Schaltern verbunden werden. Der Prozessor 310 kann
ein oder können
mehrere Netzwerkprozessoreinheiten (NPUs), Mikroprozessoren oder
ein oder mehrere Spezialprozessoren wie z.B. ein digitaler Signalprozessor
(DSP) sein. In einer weiteren Ausführungsform kann der Prozessor 310 eine
andere Art von Controller sein, z.B. ein feldprogrammierbares Gate-Array
oder ein Allzweckprozessor. Die Komponenten des Prozessors 310,
der Eingangsschnittstellenschaltung 330, der Ausgangsschnittstellenschaltung 340 eines
Routers sind allgemein bekannt, sodass entsprechend auf eine detaillierte
Beschreibung verzichtet wird.
-
In
Antwort auf Informationen im Paket-Header bestimmt der Prozessor 310 für das jeweilige
Paket die Zahl und die Arten der von einem oder mehreren der CAM-Vorrichtungen 320 durchzuführenden Nachschlagevorgänge und
erzeugt die Suchschlüssel
für diese
Nachschlagevorgänge.
Die Suchen oder Nachschlagevorgänge
können
z.B. Nachschlagevorgänge
für eine
Klassifikation, für
das Weiterleiten (z.B. Nachschlagevorgänge des nächsten Sprungs oder der längsten Präfix-Übereinstimmung (LPM), MAC-Nachschlagevorgänge, MPLS-Nachschlagevorgänge, etc.)
beinhalten. Wenn mehrere Suchen erforderlich sind, erstellt der
Prozessor 320 einen zusammengesetzten Suchschlüssel, der
mindestens zwei und bis zu allen der verschiedenen Suchschlüssel für die Nachschlagevorgänge beinhaltet.
Der zusammengesetzte Suchschlüssel
wird der CAM-Vorrichtung 320 als eine gemeinsame Eingangszeichenkette
zur Verfügung
gestellt. Die CAM-Vorrichtung 320 identifiziert und extrahiert
die jeweiligen Suchschlüssel
selektiv aus der gemeinsamen Eingangszeichenkette und stellt den
zugeordneten CAM-Blöcken
die jeweiligen Suchschlüssel
zur Verfügung,
um die Nachschlagevorgänge
durchzuführen.
Es ist von Vorteil, dass dann die Nachschlagevorgänge gleichzeitig
oder simultan in den CAM-Blöcken
der CAM-Vorrichtung 320 stattfinden können, wodurch der gesamte Durchsatz
gegenüber
konventionellen Systemen erhöht
wird, bei denen die Suchen sequenziell abgearbeitet werden.
-
Die
CAM-Vorrichtung 320 kann eine Multiblock-CAM-Vorrichtung
sein, bei der jeder Block imstande ist, eine andere Tabelle für Komparand-Nachschlagevorgänge zu speichern,
wie es nachstehend mit Bezug auf die 4A und 4B diskutiert
wird. Alternativ kann die CAM-Vorrichtung 320 mehrere Einzelblock-CAM-Vorrichtungen
repräsentieren,
(z.B wobei jede Einzelblock-CAM-Vorrichtung auf ei nem anderen integrierten
Schaltkreissubstrat abgelegt ist) und wobei jede CAM-Vorrichtung
benützt
wird, eine andere Tabelle für
Komparand-Nachschlagevorgänge
zu speichern. Nachdem in einer CAM-Vorrichtung 320 ein
oder mehrere Nachschlagevorgänge
durchgeführt
wurden, können
zugeordnete Informationen für
Treffereinträge
(z.B. zusätzliche
Weiterleitungsinformationen und/oder Paketinformationen) aus der zugeordneten
Dateneinheit 370 gewonnen werden. Der Prozessor 310 kommuniziert
dann mit dem Verkehrsmanager 320, um die Ausgabe eines
Pakets durch die Leitungskarte 300 über die Ausgangsschnittstellenschaltung 340 zeitlich
einzuplanen.
-
4A zeigt
eine Ausführungsform
einer Multiblock-CAM-Vorrichtung mit Eingangszeichenketten-Filterschaltkreisen.
Die CAM-Vorrichtung 400 kann die CAM-Vorrichtung 320 der 3 sein.
Wie oben mit Bezug auf den CAM 320 der 3 diskutiert,
kann ein Block ein ganzes Array oder ein Teil eines größeren Arrays
sein. In einer Ausführungsform beinhaltet
die CAM-Vorrichtung 400 Multiblock-Speicher-Arrays (N Blöcke), wobei
jeder Block eine andere Nachschlagetabelle oder Teile derselben
oder mehrere gemeinsame Nachschlagetabellen speichert (z.B. können Block
0 und Block 1 eine Nachschlagetabelle speichern und die Blöcke N-3
bis N-1 eine andere Nachschlagetabelle). Obwohl zwecks einfacherer
Darstellung fünf
Blöcke 410–414 gezeigt werden,
kann die CAM-Vorrichtung 400 mehr
oder weniger als fünf
Blöcke
haben. Jeder der Blöcke 420–424 ist
jeweils mit einem Filterschaltkreise verbunden. Jeder der Filterschaltkreise 420–424 ist
konfiguriert, eine gemeinsame Eingangszeichenkette 405 zu
empfangen, und aus der Eingangszeichenkette 405 ein oder
mehrere Segmente auszufiltern, zu extrahieren oder zu entfernen,
die benutzt werden können,
um einen Nachschlagevorgang durchzuführen. In einer alternativen
Ausführungsform
kann die CAM-Vorrichtung 400 mehrere Einzelblock-CAM-Vorrichtungen
beinhalten, anstelle einer einzigen Multiblock-CAM-Vorrichtung,
wie sie in den 4A und 4B gezeigt
ist. Jeder Filterschaltkreis kann auch die extrahierten Suchinformationen verdichten,
um aneinander angrenzende Bits zu erzeugen, die in einer Suche mit
Daten partizipieren, die im entsprechenden CAM-Block abgelegt sind.
-
Jeder
der Filterschaltkreise 420–424 kann dezidierte
Filterfunktionen besitzen. Alternativ kann jeder Filterschaltkreis
programmierbar sein, um ein oder mehrere Segmente oder Bits der
Eingangszeichenkette 405 dynamisch auszuwählen.
-
In
einer Ausführungsform,
die in 4B dargestellt ist, besitzt
jeder der Filterschaltkreise 420–424 einen Crossbar-Schalter
(XBAR) und einen Programmierschaltkreis (PGM). Zum Beispiel besitzt der
Filterschaltkreis 420 einen Crossbar-Schalter 430 und
einen Programmierschaltkreis 440. Der Programmierschaltkreis 440 kann
benutzt werden, um den Crossbar-Schalter 430 vorzuprogrammieren,
damit dieser bestimmte Feldsegmente der Eingangszeichenkette 405 ausfiltert
und Bitpositionen der Feldsegmente verschiebt, um das gefilterte
Zeichenkettensegment in eine verdichtete, gefilterte Komparand-Zeichenkette
zu verdichten. Es sollte angemerkt werden, dass ein oder mehrere
der Filterschaltkreise 420–424 keinen Programmierschaltkreis besitzen
müssen.
Zum Beispiel können
eine oder mehrere der Crossbar-Schalter für den Zugang durch externe
Vorrichtungen und für
die direkte Programmierung (z.B. durch den Prozessor 310 der 3) konfiguriert
sein. Programmierschaltkreise in der CAM-Vorrichtung 400 können auch
als zusätzlicher Komfort
für den
Benutzer hinzugefügt
werden.
-
Der
Programmierschaltkreis 440 ist konfiguriert, Filterdaten
(FDATA) über
Datenleitungen) 491 zu empfangen, die benützt werden,
um den Crossbar-Schalter 430 direkt oder indirekt zu programmieren,
um eine bestimmte gefilterte Komparand-Zeichenkette aus der gemeinsamen
Eingangszeichenkette 405 zu erzeugen. Der Programmierschaltkreis 440 kann
auch konfiguriert werden, ein oder mehrere Steuersignale über Steuerleitungen) 492 zu
empfangen und von einem Taktgenerator (nicht dargestellt) ein oder
mehrere Taktsignale über
die Leitung 493 zu empfangen, um den Betrieb des Programmierschaltkreises
zu steuern, wie nachfolgend im Detail beschrieben.
-
Es
sollte angemerkt werden, dass die Filterschaltkreise 421–424 in
einer Art und Weise betrieben werden können, die ähnlich ist zu derjenigen, wie sie
für den
Filterschaltkreis 420 erläutert wurde. Jede der Filterschaltkreise 420–424 kann
ein anderes Segment oder eine Kombination von Segmenten der gemeinsamen
Eingangszeichenkette 405 auswählen, wobei jeder Block eine
andere Tabelle speichert. Alternativ können eine oder mehrere Filterschaltkreise
dasselbe Segment oder dieselbe Kombination von Segmenten der gemeinsamen
Eingangszeichenkette 405 auswählen, wenn z.B. korrespondierende CAM-Blöcke Teile
derselben Nachschlagetabelle speichern. Als solche kann jeder der
Crossbar-Schalter 430–434 durch
seinen zugeordneten Programmierschaltkreis 440–444 vorprogrammiert
werden, um geeignete Filtersegmente der Eingangszeichenkette zu
filtern. Alle sich ergebenden gefilterten Komparand-Zeichenketten
können
dann gleichzeitig mit ihren entsprechenden Nachschlagetabellen verglichen
werden, die in den entsprechenden CAM-Blöcken abgelegt sind. Zum Beispiel
wird die gefilterte Komparand-Zeichenkette, die durch den Filterschaltkreis 420 erzeugt
wird, mit der Nachschlagetabelle verglichen, die im Block 410 abgelegt
ist, wohingegen die gefilterte Komparand-Zeichenkette, die durch den
Filterschaltkreis 421 erzeugt wurde, mit der in Block 411 gespeicherten
Nachschlagetabelle verglichen.
-
In
einer alternativen Ausführungsform
kann das Filtern der gemeinsamen Eingangszeichenkette 405 zum
Erzeugen der gefilterten Komparand-Zeichenketten oder Suchschlüssel sequenziell
erreicht werden. Die Nachschlagevorgänge in den Blöcken können auch
gleichzeitig oder sequenziell erfolgen.
-
5A zeigt
eine Ausführungsform
einer Eingangszeichenkette. In einer Ausführungsform kann die Eingangszeichenkette 405 Feldsegmente besitzen,
die von einem oder mehreren Paket-Headern 510 und 520 geparst
oder verarbeitet werden. Wenn Datenverarbeitungssysteme (z.B. Router,
Clients, Server) Daten über
ein Netzwerk austauschen, beinhaltet das Verfahren den Einsatz von
Protokollen, durch welche sich diese Systeme abstimmen, wie sie
miteinander kommunizieren müssen.
Um die Komplexität
des Designs zu reduzieren, können
die Netzwerke als eine Abfolge von Schichten organisiert werden.
Die Zahl der Schichten und die Funktion jeder Schicht variieren
von Netzwerk zu Netzwerk.
-
Wenn
z.B. ein Übertragungssteuerprotokoll (TCP)/Internetprotokoll
(IP) benutzt wird, ist es in mehreren Schichten organisiert, einschließlich einer Netzwerkzugangsschicht
und einer Internet-Schicht. Die Netzwerkzugangsschicht benutzt ein
TCP zum Ermöglichen
eines Datenaustausches zwischen einem Endsystem und einem Netzwerk.
Eine Internet-Schicht benutzt ein IP, um zu ermöglichen, dass Daten an mehrere
miteinander verbundene Netzwerke übertragen werden. Jedes dieser
Protokolle benutzt Paket-Header, die Weiterleitungsinformationen wie
oben beschrieben besitzen. Zum Beispiel beinhaltet der TCP-Paket-Header 510 ein
Quellenadressen- (SA-) Port-Segment 552 und ein Zieladressen- (DA-)
Port-Segment 553 und besitzt einen IP-Paket-Header 520,
ein SA-Segment 554, ein DA-Segment 555, ein Servicetyp-
(ToS-) Segment 551 und ein Protokolltyp-Segment 556.
-
In
einer Ausführungsform
kann zum Beispiel der Prozessor 310 der 3 benutzt
werden, um durch gewisse Segmente des Paket-Headers 510 und 520 zu
parsen, um eine Eingangszeichenkette 405 zu erzeugen und
die Eingangszeichenkette der CAM-Vorrichtung 320 zu übertragen.
Zum Beispiel kann die Eingangszeichenkette 405 ein MAC-Segment 557,
ein TOS-Segment 551, ein SA-Port-Segment 551, ein DA-Port-Segment 552,
ein SA-Segment 554 und ein DA-Segment 555 beinhalten.
Alternativ kann die Eingangszeichenkette 405 mehr oder weniger
als die angegebenen Segmente besitzen. Jeder der Filterschaltkreise
(dargestellt in den 4A und 4B) kann
dann die Bitwerte der verschiedenen Feldsegmente der Eingangszeichenkette 405 ausfiltern,
um verschiedene gefilterte Komparand-Zeichenketten zu erzeugen,
um gleichzeitig verschiedene Nachschlagevorgänge in den CAM-Blöcken durchzuführen. In
einer alternativen Ausführungsform
kann der Prozessor 310 die Original-Header-Segmente in
ungeparster Form der CAM-Vorrichtung 320 übertragen.
-
Die 5B ist
eine konzeptionelle Darstellung des Betriebs der CAM-Vorrichtung 400 unter
Benutzung der Paket-Header-Segmente der Eingangszeichenkette 405,
die in der 5A dargestellt sind. Zum Beispiel
kann die CAM-Vorrichtung 400 drei CAM-Blöcke 410, 411 und 412 besitzen.
Jeder der Blöcke 410, 411 und 412 ist
mit einem entsprechenden Filterschaltkreis 420, 421 und 422 verbunden. Jeder
der Filterschaltkreise 420–422 ist konfiguriert, eine
Eingangszeichenkette 405 zu empfangen und die empfangene
Eingangszeichenkette 405 zu verarbeiten.
-
In
einer Ausführungsform
können
Filterschaltkreise 420–422 vorprogrammiert
werden, um bestimmte Feldsegmente der Eingangszeichenkette 405 zu
filtern, um gleichzeitige Nachschlagevorgänge in den verschiedenen Tabellen,
die in den Blöcken 410–412 gespeichert
sind, vorzunehmen. Zum Beispiel kann der Filterschaltkreis 420 vorprogrammiert werden,
das MAC-Segment 557 zu filtern, was zu einer gefilterten
Komparand-Zeichenkette 580 führt; der Filterschaltkreis 421 kann
vorprogrammiert werden, das DA-Segment 555 zu filtern,
was in einer gefilterten Komparand-Zeichenkette 581 führt, und
der Filterschaltkreis 422 kann vorprogrammiert werden, das
SA-Segment 554, das DA- Feldsegment 555 und das
TOS-Segment 551 zu filtern, was zu einer gefilterten Komparand-Zeichenkette 582 führt. Durch
paralleles Filtern verschiedener Feldsegmente der Eingangszeichenkette 405 kann
jede der gefilterten Komparand-Zeichenketten 580–581 benutzt
werden, um die verschiedenen Nachschlagevorgänge gleichzeitig durchzuführen. Zum
Beispiel: Die gefilterte Komparand-Zeichenkette 580 kann
benutzt werden, einen MAC-Nachschlagevorgang im CAM-Block 410 vorzunehmen,
die gefilterte Komparand-Zeichenkette 581 kann benutzt
werden, einen Nachschlagevorgang des nächsten Schritts (z.B. LPM)
im CAM-Block 411 durchzuführen, und eine gefilterte Komparand-Zeichenkette 582 kann
benutzt werden, einen Klassifikations-Nachschlagevorgang im CAM-Block 412 vorzunehmen.
Als solcher erfordert jeder einzelne Nachschlagevorgang für die Durchführung X
Taktzyklen und nur eine Gesamtheit von X Taktzyklen kann erforderlich
sein, um alle drei Nachschlagevorgänge durchzuführen, weil
alle drei Nachschlagevorgänge
gleichzeitig durchgeführt
werden. Auf diese Art und Weise kann der Paketdurchsatz in einem Router
gegenüber
Routern signifikant erhöht
werden, die bekannte CAM-Architekturen benutzen.
-
6 ist
eine konzeptionelle Darstellung einer Ausführungsform des Filterns und
Verdichtens einer Eingangszeichenkette. Wie oben erläutert, kann die
Eingangszeichenkette 405 ein Teil oder der gesamte Header
eines Pakets sein, oder kann Feldsegmente von anderen Teilen eines
Pakets oder anderen verarbeiteten Informationen beinhalten. Die
Eingangszeichenkette 405 wird durch einen Filter 620 geführt, der
unerwünschte
Feldsegmente der Eingangszeichenkette 405 maskiert oder
blockiert. Der Ausgang des Filters 620 besteht in einem
oder mehreren gefilterten Zeichenkettensegmenten 629. Zum Beispiel
können
vier Zeichenkettensegmente X1, X2, X3 und X4 durch den Filter 620 gefiltert
werden. Die Zeichenkettensegmente X1, X2, X3 und X4 können auch
zum Beispiel dem DA-, SA-, Servicetyp (ToS) und Protokolltyp entsprechen.
Das Filtern der Eingangszeichenkette 405 kann durch einen
oder mehrere der Filterschaltkreise 420–424 durchgeführt werden,
wobei jeder der Filterschaltkreise 420–424 programmiert
ist, verschiedene Feldsegmente der Eingangszeichenkette 405 oder
ein oder mehrere derselben Feldsegmente zu filtern. Das Filtern
der Eingangszeichenkette 405 kann auf einer Bitbasis durchgeführt werden.
Alternativ kann das Filtern der Eingangszeichenkette 405 auf
anderen Größen basieren,
z.B. auf einer Bytegröße. Darüber hinaus kann
jeder der Filterschaltkreise 420–424 vorprogrammiert
werden, um verschiedene Feldsegmente der Eingangszeichenkette 405 aus
einem vorherigen programmierten Zustand zu filtern.
-
Wie
in 6 gezeigt, müssen
die gefilterten Zeichenkettensegmente (X1,
X2, X3 und X4) 629 nicht aneinander angrenzen.
Solche nicht aneinandergrenzenden gefilterten Zeichenkettensegmente
können
verschoben werden, um eine verdichtete gefilterte Zeichenkette 639 zu
erzeugen. Wenn z.B. das Filtern auf einer Bitbasis durchgeführt wird,
verschiebt ein Filterschaltkreis (z.B. der Filterschaltkreis 420) die
Bits der gefilterten Zeichenkettensegmente 629, um eine
gefilterte Komparand-Zeichenkette 639 zu erzeugen.
In einer Ausführungsform
werden z.B. alle Bits des gefilterten Zeichenkettensegments 629 zu den
niedrigsten Positionen verschoben. Alternativ können die Bits der gefilterten
Zeichenkettensegmente 629 auf eine andere Art und Weise
verschoben werden, z.B. zu den höchsten
Positionen.
-
7 ist
eine konzeptionelle Darstellung einer Ausführungsform einer Bitmanipulation
für das Filtern
und Verdichten einer Eingangszeichenkette unter Benutzung eines
Crossbar-Schalters 720 (z.B. des Crossbar-Schalters 430).
Der Crossbar-Schalter 720 besitzt eine n × n Matrix
von Schnittpunkten, wobei n die Bitbreite der Eingangszeichenkette 405 und auch
die Bitbreite der Ausgangszeichenkette ist. Jede der Rauten (z.B.
Raute 721) repräsentiert
einen Schnittpunkt und eine mögliche
Verbindung für
ein Eingangsbit IN(0)-IN(n-1) und ein Ausgangsbit Y(0)-Y(n-1) der
gefilterten Komparand-Zeichenkette. Ein oder mehrere Schnittpunkte
werden über
eine Adresse ausgewählt
und ein Crossbar-Schalter 720 durch Programmierdaten (PDATA)
programmiert, um vorbestimmte Bits der Eingangszeichenkette 405 auszuwählen und
zu übertragen
oder verdichten, um Bitpositionen der verdichteten gefilterten Komparand-Zeichenkette
auszugeben. Die Adresse und/oder die PDATA können von einem Programmierschaltkreis
(z.B. der Programmierschaltkreis 440 der 4B)
oder extern (z.B. durch den Prozessor 310 der 3)
erzeugt werden.
-
Linie 722 entlang
der Diagonalen des Filterschaltkreises repräsentiert eine 1:1-Verbindungskorrelation
zwischen den Bitpositionen einer Eingangszeichenkette 405 und
einer ausgegebenen gefilterten Komparand-Zeichenkette 639.
Die ausgewählten oder
programmierten Bits, bildlich das "+" innerhalb eines
Kreises (z.B. die Verbindung 723 der 7)
repräsentiert
ein programmiertes Bit zum Herstellen einer Verbindung zwischen
einer Eingangs-Bitposition und einer Ausgangs-Bitposition. Jede Verbindung wird durch
Programmieren eines oder mehrerer Schaltelemente bei den Schnittpunkten
hergestellt. Die Programmierung eines Schnittpunkts kann unter Benutzung
verschiedener Mittel einschließlich
des Schreibens des Zustandes einer Speicherzelle, Aufteilen oder
Zusammenführen
einer anderen Verbindung, Aufrechterhalten einer Verbindung, usw. durchgeführt werden.
Wenn z.B. ein Speicherelement benutzt wird, um Verbindungen an einem Schnittpunkt
herzustellen, kann eine Verbindung durch Schreiben eines ersten
logischen Zustandes (z.B. einer logischen "1")
in das Speicherelement hergestellt werden und wird keine Verbindung
durch Schreiben eines zweiten logischen Zustandes (z.B. einer logischen "0") in das Speicherelement hergestellt.
-
Der
Crossbar-Schalter 720 ist programmiert, Bitlücken in
der sich einstellenden gefilterten Komparand-Zeichenkette 639 zu
vermeiden, die Ausgang des Filterschaltkreises 720 ist.
Im dargestellten Beispiel werden alle ausgewählten Bits der Eingangszeichenkette 405 zu
den niedrigsten Bitpositionen verschoben. Die sich ergebende gefilterte
Komparand-Zeichenkette 639 kann daher signifikant weniger
Bitpositionen haben als die Eingangszeichenkette 405. Zum
Beispiel kann die Eingangszeichenkette 405 288 Bit breit
sein (n = 288), wohingegen die gefilterte Komparand-Zeichenkette 639 nur
72 oder 144 Bit breit sein kann. Die Zahl der Schnittpunkte im Crossbar-Schalter
kann reduziert werden, um zu der Zahl der Ausgangsbits zu passen.
Es ist ein Vorteil, wenn die Einträge in der Nachschlagetabelle
in jedem der CAM-Blöcke 410–414 signifikant
kleiner sein können
als die Größe der Eingangszeichenkette 405.
Daher kann ein schmaleres CAM-Array (d.h. ein solches, das weniger
Bits pro Zeile hat als die Gesamtlänge der gemeinsamen Eingangszeichenkette) benutzt
werden. Die verdichtete gefilterte Zeichenkette kann auch eine wünschenswerte
Energieersparnis mit sich bringen, da die nicht benutzten Spalten
eines CAM-Arrays global über
den globalen Maskenschaltkreis (nicht gezeigt) maskiert werden können und
daher während
eines Suchvorgangs minimal wenig- oder erheblich weniger Leistung
aufnehmen bzw. abgeben. Globale Masken sind allgemein bekannt, demgemäß wird hierzu
keine detaillierte Erläuterung
bereitgestellt.
-
Die
Darstellung der 7 beschreibt einen programmierten
Crossbar-Schalter, der Eingangsdaten von höheren Bitpositionen zu niedrigeren
Bitpositionen in der Ausgangs-Datenzeichenkette verdichtet oder
umwandelt. Alternative Filter können
Eingangsdaten von niedrigen Bitpositionen zu höheren Bitpositionen in der
Ausgangszeichenkette verdichten oder umwandeln. Zusätzlich muss
die gefilterte Zeichenkette nicht verdichtet werden und kann die
gefilterte Zeichenkette, wenn überhaupt,
mit Lücken
ausgestattet sein und einem CAM-Block oder -Tabelle für einen
Abschlagevorgang zugeführt
werden. Die nicht benutzten Bits im Suchschlüssel werden dem CAM-Block zur
Verfügung
gestellt und können
durch ein globales Maskenregister global maskiert werden.
-
Es
sollte angemerkt werden, dass die Größe der gefilterten Komparand-Zeichenkette,
die vom Crossbar-Schalter 720 erzeugt wird, kleiner sein kann
als die Eingangszeichenkette 405, selbst dann, wenn die
ausgewählten
Bits der Eingangszeichenkette 405 aneinander angrenzen.
Wenn z.B. die auszuwählenden
Bits der Eingangszeichenkette 405 zu den Zeilen 0 bis 2
korrespondieren, würden
die Ausgabebits nicht verschoben werden, weil die ausgewählten Zeilen
aneinander angrenzen. Selbst wenn die gewünschten Bits der Eingangszeichenkette 405 aneinander
angrenzen, kann die Größe der sich
ergebenden gefilterten Komparand-Zeichenkette 639 kleiner
sein als die Größe der Eingangszeichenkette 405 als
Ganzes.
-
8 veranschaulicht
ein Verfahren zum Programmieren eines Filterschaltkreises, sodass
dieser eine Eingangszeichenkette filtern und verdichten kann. Das
Verfahren kann zum Beispiel durch den Programmierschaltkreis 440 der 4B oder
durch den Prozessor 310 der 3 ausgeführt werden. Das
Verfahren kann in Antwort auf eine explizite Programmanweisung oder
durch ein Steuersignal gestartet werden, das an die CAM-Vorrichtung
angelegt wird, nach einem Reset oder in Antwort auf einen anderen
Auslöseimpuls.
In einer Ausführungsform
können
Lücken
in der sich ergebenden Ausgangszeichenkette 639 durch kontinuierliches
sequenzielles Verarbeiten der Eingangsbits vermieden werden, sowie
durch Bestimmen, ob das Eingangsbit als ein besonderes Ausgangsbit
zur Verfügung
gestellt werden soll.
-
Die
Programmierung startet bei Schritt 802. Bei Schritt 804 wird
festgestellt, ob ein bestimmtes Eingangsbit auf eine bestimmte Ausgangs-Bitposition
gesetzt werden soll (z.B. bestimmt durch FDATA, dem Programmierschaltkreis 440 der 4B bereitgestellt).
Ist dies der Fall, wird bei Schritt 806 im Crossbar-Schalter
eine geeignete Verbindung hergestellt oder programmiert. Ist dieses
nicht das letzte Eingangsbit, Schritt 808, verschiebt das
Verfahren in Schritt 810 die nächsten Eingangsbits und wiederholt den
Schritt 804. Wenn alle Eingangsbits verarbeitet wurden,
schließt
das Verfahren mit Schritt 812 ab.
-
Jede
Art von Crossbar-Schalter kann als Crossbar-Schalter 430 der 4 genutzt werden. 9 zeigt
einen Crossbar-Schalter 1000, der eine Ausführungsform
des Crossbar-Schalters 430 ist. Der Crossbar-Schalter 1000 beinhaltet
ein Array von Zeilen und Spalten von Datenspeicherelementen 1010,
die an die Gatter der Transistoren 1020 angeschlossen sind.
Jedes Paar von Speicherelement/Transistor wird an einer Schnittstelle
einer Zeile und einer Spalte positioniert und wird benutzt, um eine
Verbindung zwischen Eingangssignalen IN(0)-IN(n-1) und Ausgangssignalen
Y(0)-Y(n-1) herzustellen (oder nicht herzustellen). Die Eingangssignale
IN repräsentieren
die Eingangszeichenkettendaten (z.B. die Eingangszeichenkette 405 der 4A)
und die Ausgangssignale Y repräsentieren gefilterte
Ausgabezeichenkette, die an einen CAM-Block oder -Tabelle angelegt
werden.
-
Jede
Speicherzelle 1010 speichert einen Zustand, der anzeigt,
ob bei einem bestimmten Zeilen- und Spaltenschnittpunkt im Schalter 1000 eine
Verbindung hergestellt wurde. Die Speicherzellen können jede
Art von Speicher sein, einschließlich RAM- (Random Access Memory)
Zellen (sowohl statisch als auch dynamisch), ROM-Zellen (Read Only
Memory Cells) und andere flüchtige
und nichtflüchtige Speicherzellen.
Die Speicherzellen können
unter Benutzung beliebiger Schreibschaltungen programmiert oder
beschrieben werden, die für
den jeweiligen Speicherzellentyp geeignet sind. Wenn die Speicherzelle
den logischen Zustand "1" speichert, ist der
zugeordnete Transistor 1020 imstande, ein Eingangssignal
IN an eines der Signalleitungen 1030(0)–1030(n-1) anzulegen,
um es an einen der Ausgänge
Y von einer der Signalleitungen 1030(0)–1040(n-1) zu legen.
Die Ausgangs-Signalleitungen 1040 können durch
Vorladungs-Schaltkreise 1050 auf vorbestimmte oder Standardzustände vorgeladen
werden. Vorladungsschaltkreise 1050 sind allgemein bekannte
Schaltkreise.
-
Der
Crossbar-Schalter 1000 ist ein vollständiger Crossbar-Schalter, der
jeden beliebigen Input an jeden beliebigen Output Y legen kann.
Bei alternativen Ausführungsformen
wird nur ein Teil des Crossbar-Schalters 1000 benötigt, beispielsweise,
wenn eine Eingabezeichenkette verdichtet wird. Wenn zum Beispiel
die Eingangszeichenkette von höheren
Bitpositionen zu niedrigeren Bitpositionen in der Eingangszeichenkette
verdichtet wird, kann die korrespondierende Schaltung des Crossbar-Schalters
zum Umwandeln niedriger Bitpositionen zu höheren Bitpositionen vom vollständigen Crossbar-Schalter
entfernt werden. Wenn auf ähnliche
Weise die Eingangszeichenkette von niedrigeren Bitpositionen zu höheren Bitpositionen
in der Ausgangszeichenkette verdichtet wird, kann der entsprechende
Schaltkreis des Crossbar-Schalters für das Umwandeln höherer Bitpositionen
zu niedrigeren Bitpositionen vom vollständigen Crossbar-Schalter entfernt
werden. Beispielhafte Ausführungsformen
modifizierter Crossbar-Schalter werden nachstehend erläutert.
-
Die 10 veranschaulicht
eine Speicherzelle 1100, die eine Ausführungsform der Speicherzelle 1010 ist.
Die Zelle 1100 beinhaltet kreuzgekoppelte Inverter 1130 und 1140,
die ein bistabiles D-Flipflop
zum Speichern von Daten bei Knoten 1180 und 1190 bilden.
Durchlassgatter 1150 und 1160 erlauben es, Programmierdaten
(und Lesedaten) über die
Speicherknoten zu übertragen,
wenn das Wort-Leitungszeichen auf der Signalleitung 1110 aktiv
ist. Der Knoten 1180 ist mit dem Gatter des Transistors 1020 gekoppelt.
Ein Reset-Transistor 1170 kann auch vorhanden sein, um
den Knoten 1180 auf einen vorbestimmten logischen Zustand "0" zu bringen, wenn das Reset-Signal Reset
auf der Signalleitung 1120 aktiviert ist. Das Gatter des
Reset-Transistors 1170 ist mit der Signalleitung 1120 verbunden, sein
Drain ist mit dem Knoten 1180 verbunden, und seine Source
ist mit der Erde verbunden.
-
11 veranschaulicht
einen Filterschaltkreis 1200, der eine Ausführungsform
eines der Filterschaltkreise 420–424 der 4A ist.
In dieser Ausführungsform
besitzt der Filterschaltkreis 1200 einen Crossbar-Matrix-Schalter 430 und
einen Programmierschaltkreis 1204. In einer Ausführungsform kann
ein vollständiger
Crossbar-Schalter (z.B. der Crossbar-Schalter 1000 der 9)
als Crossbar-Schalter 430 genutzt werden. In einer alternativen
Ausführungsform
kann der vollständige
Crossbar-Schalter modifiziert werden, um lediglich die erforderliche
Verbindungsfunktionalität
bereitzustellen, wodurch die Größe des Crossbar-Schalters
reduziert wird.
-
In
dieser Ausführungsform
beinhaltet der Programmierschaltkreis 1240 einen Programmierdatengenerator 1208 und
einen Adressengenerator 1206. Der Programmierdatengenerator 1208 erzeugt Programmdaten
PDATA zum Programmieren einer oder mehrerer Schnittpunkte des Crossbar-Schalters. PDATA
wird in Antwort auf Filterdaten FDATA erzeugt, die anzeigen, welche
Eingangsbits auch in die Ausgabezeichenkette gehören, und ob und wie die Eingangsbits
verdichtet oder in die Ausgabezeichenkette umgewandelt werden. FDATA
kann z.B. durch den Prozessor 310 der 3 bereitgestellt werden.
Der Adressengenerator 1206 ist mit dem Crossbar-Schalter 430 verbunden.
In einer alternativen Ausführungsform
kann der Adressengenerator 1206 auch mit dem Programmierdatengenerator 1208 verbunden
sein. Der Adressengenerator 1206 dient dazu, dass bei der
Programmierung auf einen oder mehrere Schnittpunkte des Crossbar-Schalters 430 zugegriffen
werden kann. Der Adressengenerator 1206 kann z.B. einen
oder mehrere Zeilen- und/oder Spalten-Decoder zum Auswählen einer oder mehrerer Zeilen
oder Spalten der Schnittpunkte im Crossbar-Schalter für das Programmieren beinhalten
oder zum Auswählen
eines einzigen Schnittpunkts oder anderer Gruppen von Schnittpunkten
für das
Programmieren.
-
In
einer Ausführungsform
beinhaltet der Adressengenerator 1206 einen Decoder 1304,
der von einem Adressenzähler 1302 gesteuert
wird, wie es in 12 gezeigt ist. Der Adressenzähler 1302 ist konfiguriert,
den Decoder 1304 sequenziell durch die Zeilen oder Spalten
des Crossbar-Schalters 430 durchzulassen, indem die Signale
auf den Signalleitungen 1306(0)–1306(n-1) aktiviert
werden, die an den Crossbar-Schalter 430 gelegt sind. Der
Zähler 1302 inkrementiert
oder dekrementiert seinen Zählerstand
zum Auswählen
einer neuen Zeile oder Spalte in Antwort auf das Taktsignal CLK
und einem Freigabesignal ENABLE, das für die Programmierung aktiviert
wird. Das ENABLE-Signal
kann vom Programmierdatengenerator 1208 gesteuert werden (z.B.
in Antwort auf FDATA) oder kann extern gesteuert werden (z.B. durch
den Prozessor 310 der 3). Alternativ
kann der Adressengenerator 1206 andere Komponenten haben,
z.B. ein Schieberegister 1402, um sequenziell durch die
Zeilen und/oder Spalten des in 13 gezeigten
Crossbar-Schalters 430 zu gehen. Adressengeneratoren, Adressendecoder,
Register und Zähler
sind allgemein bekannt, sodass eine detaillierte Erläuterung
nicht bereitgestellt wird.
-
14 veranschaulicht
einen Programmierdatengenerator 1502, der eine Ausführungsform
des Programmierdatengenerators 1208 der 11 ist. Der
Programmierdatengenerator 1502 besitzt einen Schreibepufferschaltkreis 1504,
einen Datengenerator 1506 und ein Blockfilterregister (BFR) 1508.
Der Datengenerator 1506, das BFR 1508 und der
Adressegenerator 1206 können
optional ein oder mehrere Taktsignale CLK empfangen, wie es in 14 durch die
gestrichelte Linie gezeigt ist.
-
Das
Blockfilterregister 1508 speichert die jeweiligen Filterdaten
FDATA, die benutzt werden, um die Eingangszeichenkette 405 zu
filtern, um eine gewünschte
gefilterte Komparand-Zeichenkette zu erhalten. Das Blockfilterregister 1508 kann
programmiert werden (z.B. durch den Prozessor 310 der 3)
mit einem bestimmten Bitmuster mit "1" und "0", das von der gewünschten Filterung der Eingangszeichenkette 405 abhängt. Als
solche können jede
der Blockfilterregister innerhalb der Filterschaltkreise 420–424 ein
anderes Bitmuster speichern, um verschiedene Bits der gemeinsamen
Eingangszeichenkette 405 zu filtern, das an alle Filterschaltkreise 420–424 angelegt
wird. Alternativ kann ein Blockfilterregister das gleiche Bitmuster
wie andere Blockfilterregister speichern. In einer weiteren Ausführungsform
können
Multiblock-Filterregister in einem einzigen Programmiergenerator 1502 benutzt
werden und sind auswählbar
(z.B. durch den Prozessor 310 der 3 oder durch
andere Elemente), um die gewünschten
FDATA bereitzustellen.
-
Das
Blockfilterregister 1508 ist mit dem Datengenerator 1506 verbunden.
Der Datengenerator 1506 erzeugt das Bitmuster PDATA, das
in den Schreibpufferschaltkreis 1504 geladen wird, um selektiv
Schnittpunkte innerhalb des Crossbar-Schalters 430 zu programmieren.
Der Schreibpufferschaltkreis 1504 dient dazu, die programmierten
Daten für den
Crossbar-Schalter 430 zu puffern. In einer Ausführungsform
kann der Schreibpufferschaltkreis 1504 Teil des Datengenerators 1506 sein.
Schreibpufferschaltkreise sind allgemein bekannt, sodass auf eine detaillierte
Erläuterung
verzichtet wird.
-
Für eine Ausführungsform
werden genauso viele Bits von FDATA in das BFR 1508 geladen,
wie es Bits in der Eingangszeichenkette gibt. Ein bestimmtes Bit
von FDATA zeigt an, ob die entsprechende Bitposition der Eingangszeichenkette
in der Ausgangszeichenkette enthalten sein wird. Auf diese Weise
dient FDATA im BFR 1508 als eine Maske zum Filtern gewisser
Eingabebits, damit sie nicht in der Ausgangszeichenkette enthalten
sind, die dem CAM-Block zugeführt
wird. Das von FDATA ermöglichte
Maskieren erlaubt es dem Datengenerator 1506, geeignete
PDATA für
den Crossbar-Schalter 430 zu
erzeugen, sodass der Schalter 430 die Eingangszeichenkette
filtern und verdichten wird.
-
In
einer beispielhaften Darstellung des Betriebs des Programmierschaltkreises 1204 ist
der Adressengenerator 1206 konfiguriert, am Anfang eine
erste Zeile des Crossbar-Schalters 430 auszuwählen. Der
Datengenerator 1506 programmiert einen Schnittpunkt für die ausgewählte Zeile
und eine bestimmte Spalte, wenn das korrespondierende Bit von FDATA,
das im Blockfilterregister 1508 gespeichert ist, in der
Bitposition, die zu diesem Zeilen-/Spaltenort korrespondiert, als
eine "1" abgelegt ist. Wenn
das Bit von FDATA, das im Blockfilterregister 1508 abgelegt
ist, in der Bitposition, die zu diesem Zeilen-/Spaltenort korrespondiert,
als eine "0" abgelegt ist, programmiert
der Datengenerator 1506 eine "0" in
die Schnittpunkte der Zeilen und Spalten, sodass für diese
Eingangszeile keine Verbindungen hergestellt werden. Der Adressengenerator 1206 führt dann
sequenziell durch den Rest der Zeilen und die zusätzlichen
Bits von FDATA im Blockfilterregister bestimmen weiter, ob Verbindungen
hergestellt werden. In einer Ausführungsform führt der
Adressengenerator 1206 sequenziell durch den Rest der Zeilen und
bedingt durch die Spalten, festgelegt durch FDATA. Für eine weitere
Ausführungsform
führt der Adressengenerator 1206 sequenziell
zu einer neuen Zeile und kontinuierlich sequenziell durch die Spalten,
festgelegt durch FDATA.
-
15 zeigt
einen Datengenerator 1606 und ein BFR 1608, die
jeweils Ausführungsformen
des Datengenerators 1506 und des BFR 1508 sind.
Der Datengenerator 1606 beinhaltet ein Schieberegister 1610,
einen Logikschaltkreis 1620 und ein Logikgatter 1605.
Das Schieberegister 1610 beinhaltet n+1 Bits Daten, wobei
die ersten n Bits anfänglich
alle logisch "0" sind, und die (n+1)-ten
Bits werden auf eine logische "1" gesetzt. Das Schieberegister 1610 ist
ein Schleifenschieberegister, sodass die in den n+1 Bitpositionen
vorgeladenen "1" durch die anderen
Bitpositionen des Schieberegisters 1010 geschoben werden,
abhängig
vom Ausgang des UND-Gatters 1605. Zu jedem gegebenen Zeitpunkt
besitzt nur eine Bitposition im Schieberegister 1610 eine
logische "1", wohingegen die
anderen Bitpositionen eine logische "0" enthalten.
-
BFR 1608 ist
auch ein Schieberegister und speichert n Bits von FDATA. Jedes von
im BFR 1608 gespeicherte Bit von FDATA wird von CLK auf
Signalleitung 1695 taktweise an einen Eingang des UND-Gatters 605 ausgegeben.
Das UND-Gatter 1605 empfängt auch CLK und ermöglicht es
dem Schieberegister 1610, in Antwort auf eine logische "1" von sowohl FDATA als auch CLK, seinen
Inhalt nach links um ein Bit zu verschieben. Daher bestimmt das
im BFR 1608 abgelegte FDATA, ob das Schieberegister 1610 seinen
Inhalt verschiebt. Es ist anzumerken, dass das Schieberegister 1610 und
BFR 1608 konfiguriert sein können, verschiedene Taktsignale
zu empfangen. Es ist auch anzumerken, dass der Ausgang des UND-Gatters 1605 ebenfalls
gelatcht oder registriert wird, bevor das Signal ausgegeben wird,
dass das Register 1610 und der Logikschaltkreis 1620 einen
Schiebevorgang vornehmen sollen.
-
Jedes
Bit im Schieberegister 1610 wird auch an einen Eingang
des UND-Gatters 1601(0)–1601(n-1) des Logikschaltkreises 1620 angelegt.
Der andere Eingang des UND-Gatters 1601(0)–1601(n-1) wird
angelegt, um den Ausgang des UND-Gatters 1605 zu empfangen.
Wenn CLK logisch tief ist (d.h. ein logischer Zustand "0") gibt das UND-Gatter 1601 eine
logische "0" aus. Wenn CLK logisch
hoch ist (d.h. ein Zustand logisch "1")
geben die UND-Gatter 1601 die Bitinhalte aus, die sie vom Schieberegister 1610 empfangen
haben. Mit einer solchen Konfiguration gibt der Logikschaltkreis 1620 entweder
alle "0" oder die Bitinhalte
des Schieberegisters 1610 aus. Die Signalausgänge der
UND-Gatter 1601(0)–1601(n-1) werden
auf Signalleitungen 1603(0)–1603(n-1) ausgegeben
und werden an den Schreibpufferschaltkreis 1605 der 14 angelegt. Der
Schreibpufferschaltkreis 1504 stellt seinerseits dem Crossbar-Schalter
diese Daten als PDATA zur Verfügung,
um Zeilen- und Spaltenverbindungen
zu ermöglichen.
-
Wie
oben angemerkt, gibt der Logikschaltkreis 1620 entweder
jeweils eine logische "0" oder den Inhalt
des Schieberegisters 1610 als PDATA aus, um eine Verbindung
im Crossbar-Schalter 430 zu programmieren. Wenn eine Zeile
des Crossbar-Schalters 430 vom Adressengenerator 1602 ausgewählt ist,
wird die Zeile entweder jeweils mit einer logischen "0" programmiert, sodass kein Eingangsbit-zu-Ausgangsbit-Ort
festgelegt wird, oder wird ein einzelnes Bit für die Zeile zum Herstellen
einer Verbindung programmiert. Der Adressengenerator 1602 führt dann
sequenziell zur nächsten
Zeile. Der Ausgang PDATA des Logikschaltkreises 1620 wird
dann aktualisiert, wie es durch FDATA im BFR 1608 angedeutet
wird. Wenn das nächste
Bit von FDATA im logischen Zustand "0" ist,
wird für
die nächste
Zeile keine Verbindung gewählt,
ist jedoch das nächste
Bit von FDATA eine logische "1", wird eine Verbindung programmiert.
Auf diese Weise sind der Datengenerator 1606 und das BFR 1608 imstande,
den Crossbar-Schalter 430 zu programmieren, um die Eingangszeichenkette
zu filtern und weiterhin zu verdichten. Ein spezielles Beispiel
wird in 16 gezeigt.
-
In 16 hat
das Schieberegister 1610 11 Bitpositionen (n = 10) und
das BFR 1608 zehn Bitpositionen. Das BFR 1608 wird
mit einem beispielhaften Bitmuster dargestellt, das benutzt werden
kann, um gewisse Verbindungen im Crossbar-Schalter 430 herzustellen,
damit Bits der Eingangszeichenkette 405 gefiltert und verdichtet
werden. In diesem Beispiel speichert BFR 1608 FDATA, das
Bitpositionen des Typs "1" in den Positionen 1681, 1682, 1685, 1686, 1689 und 1690 hat.
Um Masken von der Eingangszeichenkette 405 auszumaskieren,
wird eine "0" in den Bitpositionen 1683, 1684, 1687 und 1688 abgelegt.
-
Am
Anfang wählt
der Adressengenerator 1206 der 14 eine
Zeile (oder eine Spalte) von Schnittpunkten im Crossbar-Schalter 430 aus,
um festzulegen, ob die erste Eingangsbitposition IN(0) mit der entsprechenden
ersten Ausgabebitposition Y(0) gekoppelt wird. Im ersten Taktzyklus
von CLK wird vom BFR 1608 die "1" der
Bitposition 1681 an das UND-Gatter 1605 angelegt.
Da die Bitposition 1681 eine "1" hat,
wird im nächsten
Taktzyklus die "1" der Bitposition 1650 in
die Bitposition 1640 des Schieberegisters 1610 verschoben.
Nachfolgend geben die UND-Gatter 1601(9)–1601(0) jeweils 000000001
aus, und zwar als PDATA an den Crossbar-Schalter 430 (über den
Schreibpuffer 1504), um eine Verbindung zwischen IN(0)
und Y(0) am Schnittpunkt der Spalte 0 und der Zeile 0 der Schaltmatrix herzustellen,
wie es durch das "+" des Schnittpunkts der
Zeile 0 und der Spalte 0 in 7 gezeigt
ist. Da UND-Gatter 1601(1)–1601(9) jeweils eine "0" an andere mögliche Verbindungen von Zeile
0 und anderen Spalten ausgeben, werden für diese Schnittpunkte keine
Verbindungen hergestellt.
-
Anschließend wählt der
Adressengenerator 1206 eine zweite Zeile (Zeile 1) im Crossbar-Schalter 430 aus,
um festzulegen, ob die zweite Eingangsbitposition IN(1) entweder
mit der ersten oder der zweiten Ausgangsbitposition Y(1) bzw. Y(0)
gekoppelt wird. In einem nachfolgenden Taktzyklus von CLK wird eine
andere Schiebe- und Programmieroperation durch das Schieberegister 1610 um
den Logikschaltkreis 1620 durchgeführt, weil das BFR 1608 die Bitposition 1682 als
eine "1" speichert. Eine "1" wird an das UND-Gatter 1605 angelegt,
die "1" der Bitposition 1640 in
die Bitposition 1641 des Schieberegisters 1610 verschoben
und eine "0" in die Bitposition 1640 verschoben.
UND-Gatter 1601(9)–1601(0) geben
jeweils 0000000010 als PDATA an den Crossbar-Schalter 430 (über den
Schreibpuffer 1504) aus, um eine Verbindung zwischen IN(1)
und Y(1) an der Schnittstelle zwischen Spalte 1 und Zeile 1 der Schaltmatrix
herzustellen, wie es durch das "+" am Schnittpunkt
der Zeile 1 und der Spalte 1 der 17 gezeigt
ist. Da die UND-Gatter 1601(0) und 1601(2)–1601(9) eine "0" an andere Verbindungen der Spalte 1
und anderen Spalten ausgeben, werden für diese Schnittpunkte keine
Verbindungen hergestellt.
-
Der
Adressengenerator 1206 wählt dann eine dritte Zeile
(Zeile 2) im Crossbar-Schalter 430 aus, um festzustellen,
ob die dritte Eingangsbitposition IN(2) entweder an die erste, zweite
oder dritte Ausgabebitposition Y(0), Y(1) oder Y(2) angelegt wird.
Beim nächsten
Taktzyklus schiebt das Schieberegister 1610 wegen der in
der Bitposition 1683 vom BFR 1608 abgelegten "0" nicht. Als solches wird für Zeile
2 mit einer Spalte oder einem Ausgang des Schalters 430 keine
Verbindung hergestellt. Das bedeutet, dass IN(2) nicht an eine korrespondierende Ausgangsbitposition
in der Filterausgabezeichenkette angelegt wird und effektiv, wie
in 17 gezeigt, ausmaskiert wird.
-
Der
Adressengenerator 1206 wählt dann im Crossbar-Schalter 430 eine
vierte Zeile (Zeile 3) aus, um festzustellen, ob die vierte Eingangsbitposition IN(3)
entweder an die erste, zweite, dritte oder vierte Ausgabebitposition
Y(0), Y(1), Y(2) oder Y(3) angelegt wird. Beim nächsten Taktzyklus schiebt das Schieberegister 1610 wegen
der in der Bitposition 1684 des BFR 1608 abgelegten "0" nicht. Daher wird für Zeile 3 mit einer Spalte
oder einem Ausgang des Schalters 430 keine Verbindung hergestellt.
Das bedeutet, dass das Eingangsbit 4 nicht an eine entsprechende
Ausgabebitposition in der gefilterten Ausgabezeichenkette angelegt
wird, und es effektiv, wie in 17 gezeigt,
aus maskiert wird.
-
Der
Adressengenerator 1206 wählt dann eine fünfte Zeile
(Zeile 4) im Crossbar-Schalter 430 aus, um festzustellen,
ob die fünfte
Eingangsbitposition IN(4) entweder an die erste, zweite, dritte,
vierte oder fünfte
Ausgabebitposition Y(0), Y(1), Y(2), Y(3) oder Y(4) angelegt wird.
Bei einem nachfolgenden Taktzyklus wird wegen der in Bitposition 1685 abgelegten "1" die "1" der
Bitposition 1641 in die Bitposition 1642 des Schieberegisters 1610 verschoben.
Die UND-Gatter 1601(9)–1601(0) geben
jeweils 0000000100 als PDATA an den Crossbar-Schalter 430 (über den
Schreibpuffer 1504) aus, um eine Verbindung am Schnittpunkt
der Spalte 2 mit der Zeile 4 der Schaltmatrix herzustellen, wie
es durch das "+" am Schnittpunkt
der Zeile 4 mit der Spalte 2 der 17 gezeigt
ist. Daher wird zwischen IN(4) und Y(2) eine Verbindung hergestellt.
Da die UND-Gatter 1601(0)–1601(1) und 1601(3)–1601(9) an
andere mögliche
Verbindungen von Zeile 1 und anderen Spalten eine "0" ausgeben, werden für diese Schnittpunkte keine
Verbindungen hergestellt. Das abgeschlossene Filtern und Verdichten
des programmierten Crossbar-Schalters 430 in Antwort auf
FDATA, welches im BFR 1608 der 16 gespeichert
ist, wird in 17 gezeigt.
-
18 zeigt
einen Datengenerator 1906 und ein BFR 1908, die
alternative Ausführungsformen des
Datengenerators 1506 und des BFR 1508 von 15 sind.
Der Datengenerator 1906 besitzt ein Schieberegister 1610,
einen Logikschaltkreis 1620 und ein UND-Gatter 1605,
wie es zuvor mit Bezug auf 15 beschrieben
wurde, und besitzt zusätzlich
einen verdrahteten ODER-Schaltkreis 1913 und ein Schieberegister 1916.
Der verdrahtete ODER-Schaltkreis 1913 besitzt ein UND-Gatter 1930 und
einen Pull-Down-Transistor 1931, die paarweise gekoppelt
sind, um vom BFR 1908 verschiedene Bits von FDATA zu empfangen,
sowie ein korrespondierendes Bit vom Schieberegister 1916.
Das BFR 1908 gibt alle seine Bitpositionsdaten parallel
an den verdrahteten ODER-Schaltkreis 1913 ab.
Der verdrahtete ODER-Schaltkreis 1930 steuert seinerseits
die Schiebeoperationen des Schieberegisters 1610. Die Ausgabe
des verdrahteten ODER-Schaltkreises 1913 wird an die Signalleitung 1935 gelegt,
die an einen Vorladungs- (PC-) Schaltkreis 1918 und an
den Eingang des Inverters 1919 angelegt sind. Der Ausgang
des Inverters 1919 ist an einen Eingang des UND-Gatters 1905 gelegt.
In einer alternativen Ausführungsform
können
die im BFR 1608 abgelegten FDATA komplementiert werden
und kann auf den Inverter 1919 verzichtet werden.
-
Das
Schieberegister 1916 schiebt bei jedem Takt von CLK eine "1" durch seine Bitpositionen. Die Ausgänge der
UND-Gatter 1930 werden mit den Gattern der Pull-Down-Transistoren 1931 verbunden,
sodass die Signalleitung 1935 auf niedrig gesetzt und es
dem Schieberegister 1619 ermöglicht wird, zu schieben, wenn
die korrespondierenden Bitpositionen in jedem BFR 1908 und
jedem Schieberegister 1916 "1" sind.
Auf diese Weise legen das Schieberegister 1916 und die
im BFR 1908 gespeicherten FDATA fest, welche der Daten,
die Eingangsdaten des verdrahteten ODER- Schaltkreises 1913 sind, bei
jedem gegebenen Taktzyklus vom Schieberegister 1610 taktweise
durchgeschoben werden.
-
19 zeigt,
dass das BFR 1508 auch als ein Einzelspalten-RAM (Random
Access Memory) 2002 ausgebildet sein kann, das mehrere
Zeilen besitzt, um das Filtermasken-Bitmuster FDATA zu speichern.
An einem gewünschten
Bit-Ort im SRAM kann durch Eingabe einer dekodierten Zeilenadresse
zugegriffen werden (z.B. vom Adressengenerator 1206 der 4). Ein Leseverstärker (S/A) 2004 ist
mit den Zeilen des RAMs verbunden, um den Datenwert auszugeben,
der bei der Bitposition abgelegt ist, auf die zugegriffen wird.
Der Ausgang des Leseverstärkers 204 kann
zum Beispiel mit einem Eingang des UND-Gatters 1605 verbunden
sein. Das RAM 2002 ist allgemein bekannt, sodass auf eine
detaillierte Erläuterung
hierzu verzichtet wird. Auf jede der Zeilen des RAMs 2002 kann
sequenziell unter Benutzung eines Zählers und eines Decoders wie
z.B. dem Zähler 1302 und
dem Decoder 1304 zugegriffen werden, wie es mit Bezug auf 12 erläutert wurde,
oder mit anderen Mitteln, z.B. unter Benutzung des Schieberegisters 1402 der 13.
-
Wie
oben erläutert,
kann der Crossbar-Schalter 430 ein vollständiger Crossbar-Schalter sein
(z.B. wie in 19 gezeigt) oder kann modifiziert
sein, sodass er nur Verbindungen benutzt, die erforderlich sind,
um Verbindungen herzustellen. Für die
Ausführungsformen
des Datenprogrammierschaltkreises 1204, der in den 11 bis 19 dargestellt
ist, und der den Crossbar-Schalter 430 programmiert, um
Eingangsdaten von höheren
Bitpositionen zu niedrigeren Bitpositionen der Ausgangszeichenkette
zu filtern und zu verdichten, kann auch nur ein Teil des Crossbar-Schalters 1000 der 9 erforderlich
sein, wie es in 20 gezeigt ist. 20 zeigt nur
vier Zeilen und vier Spalten des modifizierten Crossbar-Schalters,
aber es kann jede Anzahl von Zeilen und Spalten benutzt werden.
Zusätzlich
zeigt 20, dass jede der Zeilen der
Speicherelemente 1010 mit einer Wort-Leitung (WL) verbunden
ist, um es den Elementen zu ermöglichen,
Daten über
mehr als eine Bitleitung zu übertragen,
die mit D(0)–D(3) bezeichnet
sind. Jede dieser Bitleitungen kommuniziert ein Bit der Programmierdaten
PDATA.
-
21 zeigt
den Programmierschaltkreis 2004, der eine weitere Ausführungsform
des Programmierschaltkreises 440 der 11 ist.
In dieser Ausführungsform
besitzt der Programmierschaltkreis 2004 einen Adressengenerator 2110 und
den Programmierdatengenerator 1502 der 14.
Der Adressengenerator 2110 besitzt einen Zähler 2112, einen
Decoder 2114 und eine ODER-Logik 2116. Während der
Programmierung führt
der Adressengenerator 2110 bedingt-sequenziell durch die
Zeilen des Crossbar-Schalters 430 und programmiert eine Verbindung
basierend auf FDATA, die im BFR 1508 abgelegt sind. Wenn
zum Beispiel ein bestimmtes Bit von FDATA anzeigt, dass für eine ausgewählte Zeile im
Crossbar-Schalter 430 eine Verbindung hergestellt werden
soll, gibt der Datengenerator 1506 mindestens ein Signal
an den Schreibpuffer 1504 oder die ODER-Logik 2116 aus,
das einen logischen Zustand "1" hat. In Antwort
darauf versetzt die ODER-Logik 2116 das Inkrementsignal
INC auf einen geeigneten logischen Zustand, sodass der Zähler 2112 seinen
Zähler stand
in Antwort auf das Taktsignal CLK aktualisiert. Die Ausgabe des
Zählers wird
vom Decoder 2114 decodiert, um eine neue Zeile im Crossbar-Schalter 430 auszuwählen. In
einer anderen Ausführungsform
kann das Inkrementsignal ein Dekrementsignal sein, um den Zählerstand 2112 zu
dekrementieren. Für
eine weitere Ausführungsform
können
der Zähler 2112 und
der Decoder 2114 durch ein Schieberegister ersetzt werden,
das aktualisiert wird, um eine Zeile auszuwählen, wenn INC auf den geeigneten
logischen Zustand gebracht und CLK umgeschaltet wird.
-
Die 22 zeigt
einen Datengenerator 2202, der eine Ausführungsform
des Datengenerators 1506 der 21 ist.
Der Datengenerator 2202 besitzt ein Schieberegister 2204 und
UND-Gatter 2206(0)–2206(n-1).
Jedes UND-Gatter 2206(0)–2206(n-1) ist gekoppelt,
um entsprechende Bits vom Schieberegister 2204 und dem
BFR 1508 zu empfangen und um eine Mehrzahl von PDATA-Signalen
auf den Signalleitungen 2208(0)–2208(n-1) zu erzeugen.
Die PDATA-Signale werden an den Schreibpufferschaltkreis 1504 und
die ODER-Logik 2116 angelegt.
-
Für diese
Ausführungsform
wird ein logischer Zustand "1" über die Bitpositionen des Schieberegisters 2204 verschoben
und im BFR 1508 sowie den UND-Gattern 2206(0)–2206(n-1) mit
korrespondierenden Bits von FDATA logisch mit UND verknüpft. Wenn
ein Bit von FDATA im logischen Zustand "1" ist
und das korrespondierende Bit im Schieberegister 2204 ebenso
im logischen Zustand "1" ist, erzeugt das
korrespondierende UND-Gatter 2206 ein Signal PDATA, das
den korrespondierenden Zeilen- und Spaltenschnittpunkt im Crossbar-Schalter 430 veranlasst,
ausgewählt
und programmiert zu werden. Alle anderen Spalten für eine ausgewählte Zeile
werden nicht programmiert oder mit Logikzuständen "0" programmiert,
um keine Verbindung herzustellen. Zusätzlich wird, wenn eines der
UND-Gatter 2206 ein PDATA-Signal mit einem logischen Zustand "1" ausgibt, die ODER-Logik 2112 die nächste Zeile
beim nächsten
Taktzyklus auswählen,
um sequenziell eine neue Zeile für
die Programmierung auszuwählen.
-
Wie
oben erläutert
kann der Crossbar-Schalter 430 ein vollständiger Crossbar-Schalter
sein (z.B. wie in 9 gezeigt) oder kann modifiziert
werden, um nur Verbindungen zu benutzen, die nötig sind, um Verbindungen ermöglichen.
Für die
Ausführungsformen
des Datenprogrammierschaltkreises 1504, der in den 21 und 22 dargestellt
ist, der den Crossbar-Schalter 430 programmiert, um Eingangsdaten
von höheren
Bitpositionen zu niedrigeren Bitpositionen der Ausgangszeichenkette
zu filtern und zu verdichten, kann auch nur ein Teil des Crossbar-Schalters 1000 der 9,
wie in 23 gezeigt ist, benötigt werden. 23 zeigt
lediglich vier Zeilen und vier Spalten des modifizierten Crossbar-Schalters,
aber es kann jede Zahl von Zeilen und Spalten benutzt werden. Zusätzlich zeigt 2230, dass jede der Zeilen des Speicherelements 1010 mit
einer Wort-Leitung (WL) verbunden ist, um es den Komponenten zu
ermöglichen,
Daten über
eine oder mehrere Bitleitungen zu übertragen, die als D(0)–D(3) angegeben
sind. Jede der Bitleitungen überträgt ein Bit der
Programmierdaten PDATA.
-
In
der vorangegangenen Beschreibung wurde die Erfindung mit Bezug auf
spezielle beispielhafte Ausführungsformen
erläutert.
Es wird jedoch offensichtlich sein, dass verschiedene Modifikationen
und Änderungen
hieran möglich
sind, ohne vom Umfang der Erfindung abzurücken, wie er in den beigefügten Ansprüchen festgelegt
ist. Die Beschreibung und die Zeichnungen sind daher in einem erklärenden Sinne und
nicht in einem einschränkenden
Sinne zu verstehen.