-
GEBIET DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft das Gebiet der Informationsverarbeitung,
insbesondere das Gebiet der Inhaltsanalytik und -verarbeitung.
-
HINTERGRUND DER ERFINDUNG
-
Signifikante
Entwicklungstendenzen in der Datenverarbeitung und bei Kommunikationen
führen zu
dem Aufkommen von Umgebungen, die voll sind von Inhaltsanalytik
und -verarbeitung. Diese Umgebungen erfordern eine hohe Performanz
sowie auch Programmierbarkeit bei einer bestimmten Klasse von Funktionen,
nämlich
dem Suchen, dem Parsing, der Analyse, der Interpretation und der
Transformation eines Inhalts in Nachrichten, Dokumenten oder Paketen.
Bekannte Gebiete, die eine solche reichliche Inhaltsanalytik sowie
Inhaltsverarbeitung beanspruchen, umfassen die inhaltssensitive
Vernetzung, inhaltsbasierte Sicherheitssysteme, die Überwachung, die
verteilte Datenverarbeitung, die drahtlose Kommunikation, Mensch-Computer-Schnittstellen,
Informationsspeicherungs- und Informationswiedergewinnungssysteme,
die Inhaltssuche im semantischen Web, die Bioinformatik und andere.
-
Das
Gebiet der inhaltssensitiven Vernetzung erfordert das Durchsuchen
und die Prüfung
des Inhalts im Innern von Paketen oder Nachrichten, um festzustellen,
wohin solche Pakete und Nachrichten geroutet oder weitergeleitet
werden sollen. Eine solche Prüfung
muß bei
durchlaufenden Nachrichten bei "Leitungsgeschwindigkeit" durchgeführt werden, welches
die Datenübertragungsrate
der Netzwerkverbindung ist. Wenn man voraussetzt, dass Leitungsgeschwindigkeiten
in modernen Netzwerken von 100 MBits/Sekunde bis zu 40 GBits/Sekunde
reichen, besteht ein gewaltiger Druck bezüglich der Geschwindigkeit,
bei der die Inhaltsprüfungsfunktion durchgeführt werden
muß.
-
Inhaltsbasierte
Sicherheitssysteme und Überwachungs-
und Kontrollsysteme müssen
den Inhalt von Nachrichten oder Paketen analysieren und einen Satz
von Regeln anlegen, um festzustellen, ob eine Sicherheitsverletzung
oder die Möglichkeit
eines Eindringens bzw. Angriffs besteht. Typischerweise müssen bei
modernen Netzwerkeindringungserkennungssystemen (NIDS; network intrusion
detection systems) eine große
Anzahl von Mustern, Regeln und Ausdrücken an die Eingangs-Payload
bei Leitungsgeschwindigkeit angelegt werden, um zu gewährleisten,
dass alle potentiellen Systemverletzbarkeiten aufgedeckt werden.
Wenn man voraussetzt, dass sich die Netzwerk- und Datenverarbeitungsinfrastruktur
immer weiter entwickelt, werden weiterhin neue Verletzbarkeiten
auftauchen. Darüber
hinaus werden immer ausgeklügeltere
Angriffe von Eindringlingen verwendet, um sich einer Entdeckung
zu entziehen. Eindringungserkennungssysteme müssen in der Lage sein, alle
bekannten Angriffe auf das System erkennen zu können, und müssen auch intelligent genug
sein, um ein ungewöhnliches
und verdächtiges
Verhalten erfassen zu können,
das neue Angriffe anzeigt. Alle diese Faktoren führen zu einem Bedürfnis nach
sowohl einer Programmierbarkeit sowie auch einer extrem hohen Leistung
bezüglich
der Inhaltsanalyse und -verarbeitung.
-
Mit
dem Erscheinen der verteilten und gebündelten Datenverarbeitung werden
die Aufgaben nun auf mehrere Computer oder Server verteilt, die zusammenarbeiten
und miteinander kommunizieren, um den Verbundjob fertig zu stellen.
Diese Verteilung führt
zu einem schnellen Anstieg der Computerkommunikation, wodurch eine
hohe Performanz bei einer solchen Nachrichtenverarbeitung verlangt
wird. Mit dem Aufkommen von XML (Extensible Markup Language; erweiterbare
Auszeichnungssprache) als dem neuen Standard für den universellen Datenaustausch
kommunizieren Anwendungen nun unter Verwendung von XML als dem "Anwendungsschicht-Datentransport" miteinander. Nachrichten
und Dokumente werden nun in eine XML-Auszeichnung eingebettet. Die
gesamte Nachrichtenverarbeitung erfordert zuerst einmal, dass das
XML-Dokument geparst wird und der relevante Inhalt extrahiert und
interpretiert wird, woraufhin dann jegliche benötigte Transformation und Filterung
folgen. Da diese Funktionen bei einer hohen Nachrichtenübertragungsrate
durchgeführt
werden müssen,
werden sie rechnerisch sehr anspruchsvoll.
-
Mit
der Zunahme von ungebundenen Kommunikationsnetzwerken und drahtlosen
Netzwerken gibt es einen Anstieg bei dem Zugriff auf Informationen
von der drahtlosen Vorrichtung. Bei dem gegebenen leichten Formfaktor
der Client-Vorrichtung ist es wichtig, dass die Daten, die zu dieser
Vorrichtung geliefert werden, gefiltert werden, und dass die Payload (Nutzlast)
klein gehalten wird. Umgebungen der Zukunft werden den XML-Inhalt
von der drahtgebundenen Infrastruktur in einen leichtgewichtigen
Inhalt (unter Verwendung der Wireless Markup Language (drahtlosen
Auszeichnungssprache) bzw. WML) in der drahtlosen Infrastruktur
filtern und transformieren. Durch die zunehmende Verwendung von
drahtlosen Netzwerken wird diese Inhaltstransformationsfunktion
so allgemein üblich
sein, dass eine effiziente Lösung
für deren
Handhabung benötigt
werden wird.
-
Eine
weitere aufkommende wichtige Notwendigkeit ist die Fähigkeit,
mit Computern unter Verwendung von Schnittstellen zum Menschen,
wie etwa Sprache, kommunizieren und interagieren zu können. Die
Sprachverarbeitung und die Verarbeitung natürlicher Sprache sind extrem
intensiv bezüglich
der Inhaltssuche, der lexikalischen Analyse, des Inhalts-Parsing
und der Grammatikverarbeitung. Wenn ein Sprachstrom einmal in Text
umgewandelt worden ist, müssen
Sprachsysteme große
Vokabulare sowie auch syntaktische und semantische Regeln an den
ankommenden Textstrom anlegen, um die Sprache zu verstehen.
-
Das
Aufkommen und das Wachsen des World-Wide Web (weltweiten Netzes)
hat den Informationswiedergewinnungs-(IR; information retrieval)-Systemen eine gewaltige
Rechenbelastung auferlegt. Informationen werden dem Web kontinuierlich mit
einer hohen Rate hinzugefügt.
Diese Informationen werden typischerweise gegenüber einem erschöpfenden
Vokabular von Worten vollständig
indexiert und werden Datenbanken von Suchmaschinen und IR-Systemen
hinzugefügt.
Da Informationen ständig
erschaffen und hinzugefügt
werden, müssen Indexierer "immer eingeschaltet" sein. Um eine effiziente
kontextabhängige
Suche in Echtzeit bereitzustellen, ist es notwendig, dass ein Hochleistungs-Musterabstimmungs-
bzw. -abgleichsystem für die
Indexierungsfunktion vorhanden ist.
-
Ein
weiteres Gebiet, das eine reichhaltige Inhaltsanalytik und Inhaltsverarbeitung
beansprucht, ist das Gebiet der Bioinformatik. Die Genanalytik und die
Proteomik erfordern die Anwendung von komplexen Such- und Analysealgorithmen
bei Gensequenzen und Genstrukturen. Wiederum erfordert eine solche
Berechnung Hochleistungs-Such-, -Analyse- und -Interpretations-Fähigkeiten.
-
Somit
werden aufkommende Computer- und Kommunikationsumgebungen der Zukunft
eine reichhaltige Analyse und Verarbeitung des Inhalts beanspruchen.
Solche Umgebungen werden effiziente und programmierbare Lösungen für die folgenden Funktionen
benötigen – Suchen,
lexikalische Analyse, Parsing (Syntaxanalyse), Charakterisierung,
Interpretation, Filterung und Transformation von Inhalt in Dokumenten,
Nachrichten oder Paketen.
-
Wesentlich
für diese
reichhaltigen Inhaltsverarbeitungsfunktionen sind Operationen zur
Durchführung
einer kontextabhängigen
und inhaltsbasierten Suche und Navigation und eines reichhaltigen
assoziativen Nachschlagens.
-
Im
Stand der Technik ist die Such- und Nachschlageverarbeitung bis
heute typischerweise auf eine von zwei Arten durchgeführt worden.
Erstens ist eine solche Verarbeitung unter Verwendung von festgelegten
anwendungsspezifischen integrierten Schaltungs-(ASIC; application
specific integrated circuits)-Lösungen durchgeführt worden,
die eine Kombination aus inhaltsadressierbaren Speichern (CAMs;
content addressable memories), einer Komparator-Hardware und einer dedizierten Logik
verwenden. So sind zum Beispiel Suchregeln in einem inhaltsadressierbaren
Speicher gespeichert, und die Daten werden quer durch die Struktur
geströmt,
wobei diese gleichzeitig um 1 Byte oder 1 Wort verschoben werden.
Alternativ dazu sind spezifische Komparatoren an festen Stellen
angeordnet, um spezifische Werte in den ankommenden Daten zu erkennen.
Das Vorkommen von Übereinstimmungen
wird aufgezeichnet und von der dedizierten Logik gemäß den Anforderungen
der Zielanwendung verarbeitet. Obwohl der festgelegte ASIC-Lösungsweg
die Performanz steigern kann, mangelt es ihm an einer leichten Programmierbarkeit,
und folglich ist seine Anwendung stark eingeschränkt. Des Weiteren sind die Kosten,
die mit dem Entwerfen und dem fabrikmäßigen Herstellen von spezifischen
Chips für
jede Lösung,
auf die abgezielt wird, verbunden sind, unerschwinglich.
-
Zweitens
sind traditionelle Universalmikroprozessoren dazu verwendet worden,
reichhaltige Such- und Nachschlagefunktionen und die assoziierte Inhaltsverarbeitung
zu handhaben. Mikroprozessoren sind voll programmierbare Vorrichtungen
und sind in der Lage, die entstehenden Bedürfnisse von Problemen anzugehen – durch
ein einfaches Neuprogrammieren der Software kann die neue Funktionalität neu entwickelt
werden. Aber der traditionelle Mikroprozessor ist bezüglich des
Leistungsgrades, den er der reichhaltigen Inhaltsanalytik und der
Inhaltsverarbeitung anbieten kann, begrenzt.
-
Die
Leistungsbeschränkung
bezüglich
der Inhaltsanalytik liegt in der Natur des Designs und der Entwicklung
der Mikroprozessorarchitektur. Der Mikroprozessor wurde ursprünglich als
eine Recheneinheit erschaffen, die arithmetische Operationen bei Wörtern mit
1, 2, 4, 8 Bytes durchführt.
Später,
als sich das Gebiet der Datenverarbeitung weiterentwickelte, wurde
dem Mikroprozessor zunehmend immer mehr Funktionalität hinzugefügt, um auf
die aufkommenden Gebiete abzuzielen. Als eine Folge davon ist der
Universalmikroprozessor zwar über
einen sehr weiten Bereich von Anwendungen funktionell, ist aber
nicht sehr gut auf eine Anwendung im Besonderen eingestellt. Grundsätzlich weist
die Mikroprozessorarchitektur, was die Bedürfnisse der Inhaltsanalytik
betrifft, zwei Hauptbeschränkungen
auf – (1) ihr
fehlt die Fähigkeit,
gleichzeitig umfangreiche parallele und Fein-Musterabstimmungs-
und -vergleichsoperationen bei großen Datensätzen durchführen zu können, und (2) fehlt ihr die
Fähigkeit, schnelle
und mehrere Zustandsübergänge und
effiziente mehrdirektionale Steuerungsablaufänderungen auf der Grundlage
von eingegebenen Daten durchführen
zu können.
-
Der
Befehlssatz des Mikroprozessors ist ein skalarer Befehlssatz, so
dass die Befehle in einer einzigen geordneten Sequenz ausgeführt werden
müssen.
Die Befehlssätze
von typischen Mikroprozessoren ermöglichen den Vergleich einer
einzigen 64-Bit-Größe, die
in einem Register gespeichert ist, mit einer anderen 64-Bit-Größe, die
in einem anderen Register gespeichert ist. Der Vergleich wird so
durchgeführt,
dass die beiden Operanden ausgerichtet sind. Wenn der Vergleich
zu dem Zweck einer Mustersuche durchgeführt wird, dann muß er wiederholt aufgerufen
werden, nachdem einer oder beide der Operanden jedes Mal um eine
variable Anzahl an Bytes verschoben worden ist/sind. Oftmals wird
ein solches wiederholtes Verschieben in einer Schleife mit einer
Steuerungsablaufänderung
durchgeführt, die
bei jeder Iteration die Steuerung von dem Code an der Unterseite
der Schleife zu dem Code an der Oberseite der Schleife transferiert.
Steuerungsablaufänderungen
in dem Mikroprozessor werden erzielt, indem zu einer neuen Codesequenz
gesprungen wird. Da moderne Mikroprozessoren in hohem Maße gepipelinet
sind (in der Größenordnung
von 20–30 Stufen
in Produkten wie etwa den Pentium III und Pentium IV Prozessoren
der Firma Intel Corporation aus Santa Clara, Kalifornien), ist der
Leistungsverlust, der durch das Springen herbeigeführt wird,
beträchtlich.
Die gesamte Mikroprozessor-Pipeline muß bei einem durchgeführten Sprung
geleert werden. Folglich müssen
hoch entwickelte Sprungvorhersagetechniken bei solchen Prozessoren
angewendet werden, um die Pipeline in einem ausreichenden Maße mit Befehlen
von dem gewünschten
Pfad unmittelbar nach den Steuerungsablaufänderungen versorgt zu halten.
Aber die meisten Sprungvorhersagetechniken stellen nur empirische
und statistische Leistungsverbesserungen bereit, wie etwa, dass
Steuerungsablaufänderungen
meistens ein Langsamerwerden sowie auch einen Nondeterminismus in
dem Leistungsgrad einführen,
der geliefert werden kann.
-
Eine
Anzahl von Such- und Musterabstimmungsalgorithmen sind entwickelt
worden, um den Mikroprozessor aufs Beste auszunutzen. Der Boyer-Moore-Algorithmus
wird weit und breit als eine der bestbekannten Techniken betrachtet,
die bei einem Mikroprozessor verwendet werden, um das Auftreten von
Mustern in einem gegebenen Datensatz zu finden. Der Algorithmus
verarbeitet nur ein Muster gleichzeitig und muß wiederholt aufgerufen werden, wenn
mehr als ein Muster in einem Datensatz gesucht werden soll. Für jedes
zu suchende Muster schreitet er sequentiell durch den Datensatz
voran und stellt selektive Vergleiche auf der Basis von Beobachtungen
an, die aus der Vorcharakterisierung des Musters erhalten werden.
Dieser Algorithmus stellt eine exzellente Leistung im Vergleich
zu anderen Musterabstimmungsalgorithmen bereit, indem er die gesamte
Anzahl an Vergleichen innerhalb eines gegeben Datensatzes reduziert.
Aber auf Grund der sequentiellen Natur des Algorithmus ist die Leistung durch
fundamentale Beschränkungen
der Mikroprozessorarchitektur, nämlich
den skalaren Befehlssatz und den Verlust, der durch den Sprung herbeigeführt wird,
begrenzt.
-
Infolge
der oben erwähnten
architektonischen Beschränkungen
des Mikroprozessors werden die Effizienz und die Fähigkeit
von herkömmlichen Mikroprozessoren
durch die aufkommenden Datenverarbeitungs- und Kommuni kationsumgebungen, die
vorher beschrieben wurden, stark herausgefordert. Mehrere Datenpunkte
können
bereitgestellt werden, um diese Argumente zu unterstützen. So
ist es zum Beispiel in einem Netzwerkeindringungserkennungssystem
(NIDS) wie etwa Snort bereits wünschenswert,
bei ankommenden Paketen eine Signaturerkennung von Hunderten von
Strings anzuwenden. Das Durchführen
dieses Arbeitspensums mit Signaturen von 8-Byte-Mustern in einem
3 GHz Pentium IV Prozessor in einem kommerziellen Mikroprozessorbasierten
System, das eine verbesserte Version des Boyer-Moore-Musterabstimmungsalgorithmus
verwendet, begrenzt die Paketübertragungsrate auf
weniger als 50 Mbps. In ähnlicher
Weise ist das Parsen von XML-Dokumenten
auf einer solchen Plattform auf den Bereich von 10 MB/s beschränkt, und
die Sprachverarbeitung ist auf 1 Echtzeitstrom bei beschränkten Grammatiken
und Vokabularen begrenzt. Diese Datenpunkte zeigen an, dass der
herkömmliche
Prozessor von 2003 oder 2004 in der Lage sein wird, eine reichhaltige
Inhaltsanalytik und -verarbeitung bei Übertragungsraten um den Bereich von
100 Mbps herum bereitzustellen. Aber bis zu diesem Zeitrahmen werden
Datenübertragungsraten von
zwischen 1 Gbps bis 10 Gbps in Unternehmensnetzwerken und -umgebungen
nicht unüblich
sein. Es ist eindeutig, dass es eine starke Inkongruenz von ein
oder zwei Größenordnungen
zwischen der Leistung, die von dem herkömmlichen Mikroprozessor geliefert
werden kann, und derjenigen gibt, die von der Umgebung gefordert
wird. Es ist zwar möglich, mehrere
parallele Mikroprozessorsysteme zu verwenden, um einige der gewünschten
Funktionen bei der Zielübertragungsrate
auszuführen,
aber dies erhöht
beträchtlich
die Kosten des Systems. Es besteht also eindeutig ein Bedarf an
einer effizienteren Lösung
für diese
Zielfunktionen.
-
Es
besteht ein Bedarf an einer neuen Lösung für programmierbare Verarbeitungsvorrichtungen, die
für die
Inhaltsanalytik und -verarbeitung geeigneter ist und die bei einem
Satz von Funktionen effizient ist, der die kontextabhängige Suche,
die lexikalische Analyse, das Parsing, die Interpretation und die Transformation
von Inhalt bei Nachrichten, Paketen oder Dokumenten umfasst.
-
Die
veröffentlichte
US-Patentanmeldung US 2002/0087537 (Evans) wurde von dem Europäischen Patentamt
als D1 zitiert. Sie betrifft ein Verfahren und eine Vorrichtung
für eine
parallele Suche durch einen Datenstrom. Ein Suche nach der "Methode der rohen
Gewalt" wird durch
den Datenstrom hindurch ausgeführt,
und zwar unter Verwendung einer Registerbank und von Komparatoren,
um schnell ein oder mehrere Muster in dem Datenstrom zu finden. Der
physische Raum wird der Geschwindigkeit geopfert, indem mehrere
Komparatoren in der gleichen Registerbank verwendet werden. Der
Ausgang der Komparatoren wird in eine Decodierschaltung eingespeist,
die die Stellen der Übereinstimmungen
und Nichtübereinstimmungen
ermittelt. Übereinstimmungen
werden gegenüber
einer Datenbank/Tabelle verglichen, um ihre Signifikanz zu bestimmen.
-
In Übereinstimmung
mit der vorliegenden Erfindung gibt es einen Regelprozessor zum
Durchführen
von Suchen, wobei der Prozessor Folgendes aufweist:
eine Vielzahl
von Eingangs-Payload-Suchregistern;
eine Suche-Ausführungsmaschine,
die mit der Vielzahl von Suchregistern gekoppelt ist, um eine oder mehrere
Suchen nach Inhalt in den Suchregistern über eine parallele Musterabstimmung
im Ansprechen auf das Ausführen
eines oder mehrerer Suchbefehle durchzuführen, die die eine oder die
mehreren Mustersuchen spezifizieren und ein oder mehrere Muster
dem Inhalt in den Suchregistern präsentieren, wobei wenigstens
ein Suchbefehl in dem einen oder den mehreren Suchbefehlen Opcode-Informationen
enthält,
um einen Suchoperationstyp, Musterinformationen, um ein zu lokalisierendes
Muster zu spezifizieren, eine Maske, um einen Teil der Musterinformationen
zu spezifizieren, der das Muster enthält, und ein Paar Offsets anzugeben,
um Start- und Endegrenzen von Stellen in den Suchregistern für die Suche
für den
wenigstens einen Suchbefehl zu spezifizieren.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die
vorliegende Erfindung wird aus der ausführlichen, unten angegebenen
Beschreibung und aus den beigefügten
Zeichnungen verschiedener Ausführungsbeispiele
der Erfindung noch besser verständlich,
die aber nicht zur Beschränkung
der Erfindung auf die spezifischen Ausführungsbeispiele, sondern lediglich
zur Erläuterung
und zum Verständnis
betrachtet werden sollen.
-
1 ist
ein Blockdiagramm eines Ausführungsbeispiels
eines Regelprozessors mit einer Suchvorrichtung.
-
2A ist
ein Blockdiagramm eines Ausführungsbeispiels
eines Suchregisters und der Suche-Ausführungs-Hardware.
-
21B ist ein Blockdiagramm eines Ausführungsbeispiels
eines Sucharray.
-
3A ist
ein Blockdiagramm eines Ausführungsbeispiels
eines Sortierers.
-
3B ist
ein Blockdiagramm eines Ausführungsbeispiels
eines Bereichsauswahlmechanismus in einem Sortierer.
-
4 ist
ein Schaltplan eines Ausführungsbeispiels
eines Sucharray.
-
5 veranschaulicht
eine beispielhafte Mikroarchitektur eines Regelprozessors, die aus
vier Verarbeitungsstufen besteht.
-
6 veranschaulicht
einen beispielhaften Pseudocode eines komplexen Musterabstimmungs-Regelsatzes
und den entsprechenden Mikrocode für einen beispielhaften Regelprozessor.
-
7 veranschaulicht
die Pipeline-Ausführung
des Mikrocodes, der in 6 gezeigt ist, Takt um Takt.
-
AUSFÜHRLICHE BESCHREIBUNG DER VORLIEGENDEN
ERFINDUNG
-
Es
wird eine programmierbare Regelverarbeitungsvorrichtung zum Ausführen von
kontextabhängigen
Suchen mit hoher Geschwindigkeit nach willkürlich langen Mustern in einem
Dokument, einer Nachricht oder einem anderen Inhalt beschrieben. Der
Regelprozessor stellt eine Architektur bereit, die auf die Inhaltssuche
und -analyse zugeschnitten ist. In einem Ausführungsbeispiel gestattet der
Regelprozessor ein schnelles paralleles und rekursives Sequentialisieren
von Regeln gegenüber
einer Inhalts-Payload, wodurch eine effiziente Verarbeitung von
Arbeitspensen erlaubt wird, die intensiv in Bezug auf Regelgrammatiken
sind.
-
Architektonisch
verwendet der Regelprozessor einen Satz von Eingangs-Payload-Suchregistern. Eine
Suchregisterdatei enthält
die Eingangsdaten (oder die Inhalts-Payload), die verschiedenen
Suchregeln präsentiert
werden sollen. Daten können
in die Suchregister von dem Speicher aus geladen werden, oder können in
die Suchregister und aus diesen heraus von und zu anderen Res sourcen
in dem Regelprozessor bewegt werden. In einem Ausführungsbeispiel
kann eine Vielfalt von Suchen bei dem Inhalt der Suchregister durchgeführt werden.
Diese Suchen sind in der Form von Suchbefehlen oder Suchregeln spezifiziert,
die den Payload-Daten präsentiert
werden. Eine Suche-Ausführungs-Hardware
ist mit den Suchregistern gekoppelt. Diese Hardware führt die Musterabstimmungs-
und Verarbeitungsfunktionalität durch,
die benötigt
wird, um die Ergebnisse der Suchfunktion zu berechnen.
-
1 ist
ein Blockdiagramm eines Ausführungsbeispiels
eines Regelprozessors, der Suchregister 101 und eine Suche-Ausführungs-Hardware 102 umfasst.
Ein Suchbefehl 103 wird den Suchregistern 101 und
der Suche-Ausführungs-Hardware 102 präsentiert.
Der Prozessor umfasst ferner eine Befehlsspeichervorrichtung, die
als Regel-/Befehlsspeicher 104 bezeichnet wird, und eine
Vorrichtung zur Steuerung des Ablaufs von Befehlen, die in einem
Ausführungsbeispiel
eine Befehls-Ablaufssteuerung 105 und einen Befehlszeiger 106 umfasst.
-
In
einem Ausführungsbeispiel
umfassen die Suchregister 101 eine Registerdatei mit 2K
Einträgen von
jeweils einem Byte, wobei die Werte in den Suchregistern 101 durch
eine 11-Bit-Registeradresse adressiert werden. Deshalb können 2 KB
an Inhaltsdaten, die gesucht werden sollen, in die Suchregister 101 geladen
werden.
-
Eine
typische Suche erfordert, dass ein Befehl oder eine Regel den Suchregistern
präsentiert wird.
Die Regel spezifiziert ein Muster zusammen mit einem oder mehreren
zusätzlichen
Suchparametern. In einem Ausführungsbeispiel
sendet die Suchfunktion eine Anzahl von Ergebnissen zurück. Diese
umfassen eine Angabe dahingehend, ob eine Übereinstimmung zwischen dem
Muster und dem Inhalt in den Suchregistern gefunden wurde oder nicht,
und auch eine Übereinstimmungsstelle,
die angibt, wo in den Payload-Suchregistern
die Übereinstimmung aufgetreten
ist.
-
Weitere
Suchsteuerparameter werden von dem Regelprozessor der Suche-Ausführungs-Hardware 102 bereitgestellt.
Suchbefehle können
einen Maskenvektor zusammen mit einem Satz von Bytes bereitstellen,
die das Zielsuchmuster umfassen. Der Maskenvektor kann aus Bits
bestehen, die dem Zielmuster-Byte bzw. den Zielmuster-Bytes entsprechen. In
einem Ausführungsbeispiel
werden spezifische Bytes in dem Zielmuster, die während der
Suchoperation ignoriert werden sollen, ausgewählt, indem die entsprechenden
Bits in dem Maskenvektor auf eine vorbestimmte logische Ebene von
0 oder 1 gesetzt werden. Auf diese Weise kann das Zielmuster, das
in der Suche verwendet wird, größenmäßig reduziert werden.
Außerdem
können
die Regelverarbeitungsbefehle Start- und Endestellen spezifizieren,
die ein Suchfenster oder einen Bereich an Bytes in den Suchregistern 101 bilden,
innerhalb dem die Suche beschränkt
ist.
-
Zusätzliche
Parameter für
Suchbefehle können
eine Sprungadresse umfassen, die von dem Regelprozessor in dem Falle
einer nicht erfolgreichen Suche verwendet werden soll. Dieses Merkmal
würde die
Leistung des Regelprozessors steigern, wenn Suchen nach Strings
von Bytes, die beträchtlich
länger
als die Breite des Datenpfades der Suche-Ausführungs-Hardware 102 sind,
ohne irgendwelche Übereinstimmungen
fehlschlagen, oder nach einem Abgleich von nur den ersten paar Bytes
mit den Inhalten der Suchregistern 101 fehlschlagen. Der
Regelprozessor kann die restlichen Suchbefehle für den aktuellen String überspringen,
indem er zu dem Befehl springt, der auf den letzten Suchbefehl für den aktuellen
String folgt.
-
Ein
Beispiel eines Suchbefehls ist ein Fenster-Finde-Erste-Vorwärts-Befehl (windowed-find-first-forward
instruction). In einem Ausführungsbeispiel
sendet die Suche in einer Fenster-Finde-Erste-Vorwärts-Suche,
bei der ein 8-Byte-Muster, das
in einer oder durch eine Regel spezifiziert ist, eine 8-Bit-Maske, eine Startstelle-Offset-Adresse, die
auf ein Startbyte in den 2 KB von Inhaltsdaten (z. B. Dokumentdaten)
in den Suchregistern 101 zeigt, und eine Endestelle-Offset-Adresse,
die auf ein Endebyte in den 2 KB von Inhaltsdaten (z. B. Dokumentdaten)
in den Suchregistern 101 zeigt, vorgegeben sind, die Startadresse
(z. B. einen 11-Bit-Vektor) in den Suchregistern 101 des
ersten Strings nach der spezifizierten Startstelle-Adresse, die
mit dem abgedeckten Muster übereinstimmt,
zurück,
vorausgesetzt diese Adresse startet vor der Endestelle-Offset-Adresse.
In einem anderen Beispiel kann eine Fenster-Finde-Erste-Rückwärts-Suche
(windowed-find-first-reverse search) durchgeführt werden. In einem Ausführungsbeispiel
sendet die Suche in einer Fenster-Finde-Erste-Rückwärts-Suche, bei der ein 8-Byte-Muster
in der Regel, eine 8-Bit- Maske, eine
Startstelle-Offset-Adresse, die auf ein Startbyte in den 2 KB an
Inhalt in den Suchregistern 101 zeigt, und eine Endestelle-Adresse,
die auf ein Endebyte in den 2 KB an Inhalt in den Suchregistern 101 zeigt, vorgegeben
sind, die Startadresse (z. B. einen 11-Bit-Vektor) des letzten Strings
vor der spezifizierten Endestelle-Adresse zurück, die mit dem abgedeckten
Muster übereinstimmt,
vorausgesetzt diese Adresse startet nach der Startstelle-Offset-Adresse.
-
Der
Regelprozessor stellt auch eine Steuerungsspeichervorrichtung bzw.
einen Regelspeicher 104 bereit, der Regeln oder Regelsätze enthält, die an
die Payload-Daten angelegt werden sollen. In einem Ausführungsbeispiel
hält der
Speicher 104 Regelsätze
oder Sequenzen von Befehlen oder Codesequenzen, die Muster, Regeln,
Ausdrücke
oder Grammatiken beschreiben, die an die Suchregister 101 angelegt
werden müssen
und in diesen entdeckt werden müssen.
Das Regelvokabular kann einen Bereich von Operationen spezifizieren,
der globale oder lokale (Fenster-)Suchen mit entweder exakten Übereinstimmungen
oder teilweisen Übereinstimmungen, mit
individuellen und mehrfachen Übereinstimmungsinformationen,
die einigen Registern geliefert werden, Primitiven zum Erzeugen
von Offsets und Adressen in der Ausgangs-Payload des Regelprozessors,
sowie auch logische Operatoren und Rechenoperatoren, die an die
Suchergebnisse angelegt werden sollen, umfasst, aber nicht darauf
begrenzt ist. Solche Regeln können
aus mehreren Feldern zusammengesetzt sein, die die verschiedenen,
oben beschriebenen Parameter spezifizieren. Jeder Parameter kann
direkt in der Regel spezifiziert werden oder alternativ indirekt
durch die Verwendung eines Zeigers auf eine Register- oder eine
Speicherstelle spezifiziert werden, die den zu verwendenden Wert enthält. In Ausführungsbeispielen,
in denen sowohl direkte als auch indirekte Spezifikationen zulässig sind,
kann jedes dieser Felder ein zusätzliches
Unterfeld enthalten, das anzeigt, ob die direkte oder die indirekte
Spezifikation verwendet wird.
-
In
der nachfolgenden Beschreibung werden zahlreiche Einzelheiten dargelegt,
um ein vollständiges
Verständnis
der vorliegenden Erfindung bereitzustellen. Es wird aber einem Fachmann
auf dem Gebiet offensichtlich sein, dass die vorliegende Erfindung
ohne diese spezifischen Einzelheiten praktiziert werden kann. In
anderen Fällen
werden bekannte Strukturen und Vorrichtun gen eher in Blockdiagrammform
als in Einzelheiten gezeigt, um ein Unverständlich machen der vorliegenden
Erfindung zu vermeiden.
-
Einige
Teile der ausführlichen
Beschreibungen, die folgen, werden in Form von Algorithmen und symbolischen
Repräsentationen
von Operationen bei Datenbits innerhalb eines Computerspeichers
präsentiert.
Diese algorithmischen Beschreibungen und Repräsentationen sind die Mittel,
die von den Fachleuten auf dem Gebiet der Datenverarbeitungskünste verwendet
werden, um den Inhalt ihrer Arbeit anderen Fachleuten auf diesem
Gebiet höchst
effektiv zu vermitteln. Ein Algorithmus wird hierbei und im Allgemeinen
als eine selbstkonsistente Sequenz von Schritten verstanden, die
zu einem gewünschten
Resultat führt.
Die Schritte sind diejenigen, die eine physikalische Manipulation
von physikalischen Größen erfordern.
Für Gewöhnlich,
obwohl nicht notwendigerweise, nehmen diese Größen die Form von elektrischen
oder magnetischen Signalen an, die gespeichert, transferiert, kombiniert,
verglichen und auf andere Weise manipuliert werden können. Es
hat sich hin und wieder als praktisch erwiesen, vor allem aus Gründen der
allgemeinen Verwendung, diese Signale als Bits, Werte, Elemente,
Symbole, Zeichen, Terme, Zahlen oder dergleichen zu bezeichnen.
-
Man
sollte sich aber daran erinnern, dass alle diese und ähnliche
Begriffe mit den geeigneten physikalischen Größen assoziiert werden sollen
und lediglich praktische Bezeichnungen sind, die für diese
Größen verwendet
werden. Wenn nicht ausdrücklich
anderweitig angegeben ist, wie dies aus der nachfolgenden Erörterung
offensichtlich wird, besteht ein Verständnis dahingehend, dass sich
durch die ganze Beschreibung hindurch Erörterungen, die Begriffe wie "Verarbeiten" oder "Datenverarbeitung" oder "Berechnen" oder "Bestimmen" oder "Anzeigen" oder dergleichen
verwenden, auf die Aktion und die Prozesse eines Computersystems
oder einer ähnlichen
elektronischen Datenverarbeitungsvorrichtung beziehen, die Daten,
die als physikalische (elektronische) Größen innerhalb der Register
und Speicher des Computersystems repräsentiert sind, in andere Daten
manipulieren und transformieren, die auf ähnliche Weise als physikalische
Größen in den
Speichern oder Registern des Computersystems oder anderen solchen
Informationsspeicherungs-, -übertragungs-
oder -anzeigevorrichtungen repräsentiert werden.
-
Die
vorliegende Erfindung betrifft auch eine Vorrichtung zum Durchführen der
hier genannten Operationen. Diese Vorrichtung kann speziell für die benötigten Zwecke
konstruiert sein, oder sie kann einen Universalcomputer umfassen,
der von einem Computerprogramm, das in dem Computer gespeichert
ist, selektiv aktiviert oder rekonfiguriert wird. Ein solches Computerprogramm
kann in einem computerlesbaren Speichermedium gespeichert sein,
wie etwa, aber nicht beschränkt
auf jede Art von Disks, einschließlich Floppy Disks, CDs, CD-ROMs
und magnetooptische Disks, Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher
(RAMs), EPROMs, EEPROMs, magnetische oder optische Karten oder irgendeine andere
Art von Medien, die für
das Speichern von elektronischen Befehlen geeignet sind, und die
jeweils mit einem Computersystembus gekoppelt sind.
-
Die
hier präsentierten
Algorithmen und Darstellungen sind nicht inhärent auf einen speziellen Computer
oder irgendeine spezielle andere Vorrichtung bezogen. Verschiedene
Universalsysteme können
mit Programmen gemäß den hier
gegebenen Lehren verwendet werden, oder es kann sich als praktisch
erweisen, eine spezialisiertere Vorrichtung zu konstruieren, um
die benötigten
Verfahrensschritte durchzuführen.
Die benötigte
Struktur für
eine Vielfalt dieser Systeme wird aus der unten aufgeführten Beschreibung
offensichtlich werden. Außerdem
ist die vorliegende Erfindung nicht unter Bezugnahme auf eine bestimmte
Programmiersprache beschrieben. Es wird klar sein, dass eine Vielfalt
von Programmiersprachen verwendet werden kann, um die Lehren der
Erfindung, wie sie hier beschrieben ist, zu implementieren.
-
Ein
maschinenlesbares Medium umfasst jeden Mechanismus zum Speichern
oder Übertragen von
Informationen in einer Form, die von einer Maschine (z. B. einem
Computer) gelesen werden kann. Zum Beispiel umfasst ein maschinenlesbares
Medium einen Nur-Lese-Speicher ("ROM"); einen Direktzugriffsspeicher
("RAM"); Magnetplattenspeichermedien;
optische Speichermedien; Flash-Speicher-Vorrichtungen; elektrische,
optische, akustische oder irgendeine andere Form von Fortpflanzungssignalen (z.
B. Trägerwellen,
Infrarotsignale, digitale Signale, etc.); etc..
-
Eine beispielhafte Regelmaschinenarchitektur
-
Eine
Regelverarbeitungsarchitektur wird für die Verwendung in einem Regelprozessor
für die
Inhaltsanalyse beschrieben, die ein paralleles und rekursives Sequentialisieren
von Regeln gegenüber der
Inhalts-Payload gestattet. Die Architektur sorgt für eine parallele
Musterabstimmungsfähigkeit,
die mit der Fähigkeit
gekoppelt ist, mehrere schnelle inhaltsbasierte Zustandsübergänge zu machen.
-
In
einem Ausführungsbeispiel
umfasst der Regelprozessor eine Befehls- oder Regel-Ablaufsteuerung zum Anwenden
von Regel für
die Ausführung
von einer Programmspeichervorrichtung bei einem Inhalt, der in den
Suchregistern enthalten ist. Die Regeln und der Inhalt werden von
einer Ausführungsmaschine
verarbeitet, die ein Regelvokabular unterstützt, das speziell auf eine
oder mehrere Operationen, wie etwa zum Beispiel Musterabstimmungs-,
lexikalische Analyse-, Parsing- und Interpretationsfunktionen, zugeschnitten
ist.
-
In
einem Ausführungsbeispiel
führt der
Regelprozessor Sequenzen von priorisierten und gerichteten Suchen
nach eingebundenen und nicht eingebundenen Mustern und auf Fenster
und Bereiche festgelegte Suchen für ein willkürlich langes Muster durch,
das an irgendeiner willkürlichen
Stelle in einem Dokument, einem Strom, einer Nachricht oder einem
Paket startet. Die Muster sowie auch die Bereichssteuerung und der
Programmsteuerungsablauf (z. B. Sprungadressen) können statisch
in Regeln spezifiziert werden, die in der Programmspeichervorrichtung
enthalten sind, oder dynamisch indirekt aus einer Registerdatei
unter Verwendung eines Zeigers oder Indexes, der in einer Regel
dargelegt ist, ausgewählt
werden. Dies ermöglicht
eine kraftvolle, dynamische und kontextabhängige Musterabstimmung.
-
Der
Regelprozessor führt
Suchen durch, indem er zum Teil eine spezialisierte Musterabstimmungs-Hardwarestruktur
verwendet, die mit den Suchregistern gekoppelt ist. In einem Ausführungsbeispiel
unterstützt
der Regelprozessor eine reichhaltige Such-, Sortier- und Priorisierungsfunktionalität. In einem
Ausführungsbeispiel
ist die Regelverarbeitungs-Hardware als eine vierstufige Pipeline
mit einem Sucharray und einem Sortiererblock organisiert, die direkt
auf 2 KB von Inhaltsdaten (z. B. Dokumentdaten) wirken, die in den
Suchregistern enthalten sind. Die vier Stufen sind: (1) Regelabruf
aus dem Regelspeicher und Regeldecodierung, (2) Regelassemblierung
von indirekten Fel dern, (3) Suche-Ausführungsoperationen bei Werten
in den Suchregistern, und (4) Sortieroperationen bei den Ergebnissen
der Suchoperationen, gefolgt von der Zustellung der Ergebnisse.
-
Der
Regelprozessor präsentiert
eine oder mehrere Regeln einer Suche einer Suchregisterstruktur.
In einem Ausführungsbeispiel
ist das Suchregister eine 2 KB Registerdatei, wobei jeder Eintrag eine
Breite von einem Byte aufweist. Zu suchende Daten werden in die
Suchregisterdatei geladen. Jede Regel spezifiziert ein Muster, das
der Suchregisterdatei präsentiert
wird, um festzustellen, ob das Muster in den darin gespeicherten
Daten vorhanden ist. Es kann auch eine Maske bereitgestellt werden,
um das Muster weiter zu konfigurieren und/oder um die Größe des Musters,
das in der Suche verwendet wird, zu reduzieren.
-
1 ist
ein Blockdiagramm eines Ausführungsbeispiels
eines Regelprozessors. Unter Bezugnahme auf 1 wird den
Suchregistern 101 und der Suche-Ausführungs-Hardware 102 kollektiv
ein Suchbefehl 103 eingegeben. Der Suchbefehl 103 wird
in 2A weiter veranschaulicht. Unter Bezugnahme auf 2A umfasst
ein Suchbefehl 201 einen Opcode 201a, der den
Typ der Suchoperation, ein Suchmuster 201b, eine Maske 201c,
die die Bytes in dem Muster spezifiziert, die für den aktuellen Suchbefehl
relevant sind, und zwei Offsets 201d und 201e beschreibt,
die jeweils die Start- und Endegrenzen der Stellen in dem Suchregister
spezifizieren, die für den
aktuellen Suchbefehl relevant sind. Die Suche-Ausführungseinheit 202 gibt
ein Ergebnis 203 aus, das in einem Ausführungsbeispiel aus einer Angabe
des Erfolgs der Suchoperation besteht und zusätzlich einen oder mehrere Parameter
wie etwa, aber nicht beschränkt
auf einen Index umfasst, der die Stelle in dem Suchregister angibt,
die den Suchbefehl der Suchoperation befriedigt hat.
-
Die
Suche-Ausführungs-Hardware 202 umfasst
ein Suchregister 202a und einen Sortierer 202b, wie
dies in 2A gezeigt ist. Das Suchregister 202a speichert
suchbare Daten, die der Inhalt von einem Dokument, einer Nachricht,
einem Paket oder irgendeiner anderen bekannten Quelle von Daten
sein können,
die einer Suche unterzogen werden können. Die Größe des Suchregisters 202a kann
willkürlich
M Bytes sein und ist in einem Ausführungsbeispiel in einem größeren Array,
das ein Sucharray 202c genannt wird, mit M Reihen von jeweils
N Bytes organisiert. Daten von dem Suchregister 202a werden
in einer replizierten Art und Weise im Innern des Sucharray gespeichert.
Dieses Ausführungsbeispiel
des Suchregisters kann aus mehreren Gründen, einschließlich der
besseren Leistung für
Suchen bei Mustern von N kontinuierlichen Bytes, bevorzugt sein.
-
In
einem Ausführungsbeispiel
werden Daten, die gesucht werden sollen, in dem Suchregister 202a durch
die Verwendung eines Datengenerators 213 auf der Grundlage
von von dem Adressengenerator 211 erzeugten Adressen gespeichert,
die von dem Adressendecodierer 212 decodiert werden. Der
Prozess des Speicherns erfordert auch das Aufzeichnen der Größe der suchbaren
Daten im Suchregister 202a. Für Datensätze, die größenmäßig kleiner als die Kapazität des Suchregisters 202a sind,
stellt das Suchregister 202a einen Mechanismus zur Beschränkung der
Suchoperation auf die passenden Daten bereit. In einem Ausführungsbeispiel
kann der Datengenerator 213 ein Muster speichern, das von vornherein
so erstellt worden ist, dass es Daten repräsentiert, die für Suchoperationen
in den restlichen Stellen des Sucharray 202c ignoriert
werden, oder in einem alternativen Ausführungsbeispiel deaktiviert das
Suchregister 202a die entsprechenden Stellen des Sucharray 202c aus
der Teilnahme an Suchoperationen.
-
Zusätzlich zu
der Fähigkeit,
ein spezifiziertes Muster zu lokalisieren, kann das Suchregister 202a auch
die Fähigkeit
bereitstellen, spezielle Suchen wie etwa Groß-/Kleinbuchstaben-unabhängige Suchen
bei Zeichendaten durchzuführen.
Zur Unterstützung
solcher und anderer spezieller Suchen kann das Suchregister 202a zusätzliche
Informationen speichern, die mit jedem Byte an suchbaren Daten assoziiert
sind. In einem Ausführungsbeispiel
kann das Suchregister 202a spezielle Bitvektoren speichern,
die mit allen suchbaren Daten assoziiert sind, die Groß-/Kleinbuchstaben-unabhängige Suchen oder
Suchen nach Zeichen erlauben, die zu einer vordefinierten Klasse
von Zeichen gehören.
-
Unabhängig von
der Art und Weise, in der die suchbaren Daten überall in dem Sucharray 202c organisiert
sind, empfängt
das Sucharray 202c ein Muster 201b und eine Maske 201c.
Das Muster 201b wird mit Einträgen in dem Sucharray 202c verglichen. In
einem Ausführungsbeispiel
weist das Sucharray 202c M Reihen von N Bytes auf, wobei
N die gleiche Anzahl an Bytes ist, die sich in dem Muster 201b befinden.
Die Maske 201c stellt eine Angabe derjenigen Bytes in dem
Muster 201b bereit, die kein Teil des gesuchten Musters
sind. Mit anderen Worten, wenn das Muster 201b ein Muster
ist, das weniger als N Bytes beinhaltet, dann spezifiziert die Maske 201c,
welche Bytes des Musters 201b das Sucharray 202c ignorieren
soll. In einem Ausführungsbeispiel
weist das Sucharray 202c eine Ausgangsleitung für jede der
M Reihen in dem Sucharray 202c auf, die angibt, ob das
gesuchte Muster mit den Inhaltsdaten übereinstimmte, die in dieser
bestimmten Reihe gespeichert sind. In einem Ausführungsbeispiel lag eine Übereinstimmung
des Musters mit den Inhaltsdaten in der bestimmten Reihe vor, wenn
der Ausgang eine 1 ist. Die M Ausgangsleitungen des Sucharray 202c sind mit
den Eingängen
des Sortierers 202b gekoppelt.
-
Der
Sortierer 202b ist auch gekoppelt, um Offsets 201d und 201e zu
empfangen, die jeweils einen Start- und Endepunkt eines Bereichs
in dem Suchregister 202a angeben, der gesucht werden soll.
In einem Ausführungsbeispiel
sind diese Offsets Log2M-Bit-Zahlen. Auf
der Basis der Übereinstimmungsangabeleitungen
von dem Sucharray 202c und des Start- und Endebereichs,
wie er von den Offsets 201d und 201e spezifiziert
ist, verarbeitet der Sortierer 202b die Ergebnisse des
Sucharray 202c. Eine solche Verarbeitung kann das Durchführen von einer
oder mehreren Operationen umfassen. Diese Operationen können Indexauflösungsfunktionen sein,
die einen spezifischen Übereinstimmungsindex gemäß dem Typ
der Operation ausgeben. In einem Ausführungsbeispiel umfassen die
Operationen Find_First_Forward (Finde_Erste_Vorwärts), Find_First_Reverse (Finde_Erste_Rückwärts) und Find_Population_Count
(Finde_Bestandszählung). Die
Operationen werden durch den Opcode 201a in dem Suchbefehl 201 spezifiziert.
Der Sortierer 202b kann Zwischenergebnisse oder Endergebnisse
von vorhergehenden Operationen speichern, die in nachfolgenden Operationen
in Verbindung mit den Übereinstimmungsangabeleitungen
von dem Sucharray 202c verwendet werden können. Auf
diese Weise kann der Sortierer 202b verwendet werden, um
progressiv durch den suchbaren Datensatz zu navigieren, indem er
eine Reihe von Operationen ausgibt, die die Ergebnisse von vorhergehenden
Operationen verwenden. Außerdem
kann der Sortierer 202b auch mit einer Registerdatei für die Speicherung
von Ergebnissen vorhergehender Operationen zur Verwen dung in späteren Operationen,
die ausgeführt
werden können,
nachdem eine willkürliche
Anzahl von anderen Operationen ausgeführt worden ist, gekoppelt sein.
Die Ergebnisse des Sortierers 202b können auch mit der Regelprozessor-Befehls-Ablaufsteuerung,
wie etwa der Befehls-Ablaufsteuerung 105 von 1,
gekoppelt sein, um Regelprogramm-Offsets (z. B. Sprungadressen)
zu erzeugen oder bei deren Erzeugung zu assistieren.
-
Nach
dem Verarbeiten erzeugt der Sortierer 202b Ausgaben, die
angeben, ob eine Übereinstimmung
vorliegt, und einen Index, der mit der Übereinstimmung assoziiert ist.
Der Index kann die Stelle (Adresse) in dem Suchregister 202a angeben,
an der im Hinblick auf die Oberseite des Suchregisters 202a die
erste Übereinstimmung
auftritt oder die letzte Übereinstimmung
auftritt. Alternativ dazu kann der Index die Anzahl an Übereinstimmungen
angeben, die innerhalb des Bereichs, der von den Offsets spezifiziert
ist, aufgetreten sind.
-
Es
sei angemerkt, dass der Bereich, der von den Offsets spezifiziert
wird, dynamisch geändert werden
kann. Zum Beispiel kann ein erster Suchbefehl an das Sucharray 202c anfänglich angelegt
werden, während
ein Bereich, der von dem Offset 201d und dem Offset 201e spezifiziert
wird, alle Reihen des Sucharray 202c umfasst. Aber nach
dem ersten Suchbefehl und nachdem eine Übereinstimmung identifiziert
ist, können
die Start- und Endebereiche in einem nachfolgenden Suchbefehl derart
geändert werden,
dass die Suche von einer Stelle aus beginnt, die die Übereinstimmungsleitungen
umfasst, die in dem Bereich gefunden wurden, der von dem vorhergehenden
Suchbefehl spezifiziert wurde. Diese Fähigkeit wird dadurch erreicht,
dass die Funktionalität des
indirekten Vorgehens verwendet wird, die es Feldern einer Regel
oder eines Befehls erlaubt, Bezug auf Werte in einer Universalregisterdatei
zu nehmen.
-
In 2A besteht
das Sucharray 202c in einem Ausführungsbeispiel aus 2K Reihen
von jeweils 8 Bytes. Somit hält
das Suchregister 202a 2K Bytes an Daten. Das Sucharray 202c hält replizierte
Daten. Jeder 8-Byte-String, der mit einem bestimmten Byte in dem
Suchregister 202a beginnt, wird als eine bestimmte Reihe
von Bytes in dem Sucharray 202c gespeichert. Diese Strings
bestehen aus dem bestimmten Byte aus dem Suchregister 202a und
zusätzlich
7 aufeinanderfolgenden Bytes, die auf dieses Byte in dem Suchregister 202a folgen.
Somit hält
jede Reihe des Sucharray 202c die 7 höchstwertigen Bytes der vorhergehenden
Reihe und außerdem
ein unmittelbar nachfolgendes Byte höherer Ordnung, das rechts von
diesen 7 Bytes angehängt
wird.
-
Daten
werden in das Sucharray 202c durch den Datengenerator 213 geladen,
der in einem Ausführungsbeispiel
die geeigneten 8 Bytes an Daten für jede Reihe aus den Quelldaten
liefert.
-
In
einem Ausführungsbeispiel
wird ein 8-Byte-Suchmuster in jedem Suchbefehl präsentiert. Das
Suchmuster ist mit dem Sucharray 202c derart ausgerichtet,
dass jeder der 8 Spalten in dem Array ein einzigartiges Byte präsentiert
wird. Dies ist in 2B gezeigt. Unter Bezugnahme
auf 2B werden die Zustands-Bytes 1 bis 8 in dem Sucharray
für jede
der Reihen 1 bis 2K gespeichert. Für jedes Byte, das als ein Element
des Sucharray von 2K Reihen und 8 Spalten gespeichert ist, wie in 2B gezeigt ist,
existiert eine Signalleitung 310. Zum Beispiel erzeugt
das Byte 1 der Reihe 1 die Signalleitung 31011 , das
Byte 2 der Reihe 1 erzeugt die Signalleitung 31012 ,
das Byte 1 der Reihe 2 erzeugt die Signalleitung 31021 , und so weiter. Das Signal für jedes
Byte wird während
einer Suchoperation aktiviert, wenn das gespeicherte Byte mit dem
Byte des Suchmusters übereinstimmt,
das der gleichen Spalte präsentiert
wird, zu der das Element gehört.
In diesem Ausführungsbeispiel,
bei dem jede Reihe 8 Bytes enthält, werden
8 Signalleitungen, zum Beispiel 31011 bis 31018 , verwendet, um jede der Byte-Ebenen-Übereinstimmungen
in der Reihe anzugeben. Die Byte-Ebenen-Übereinstimmungen für jede Reihe
werden zusammen mit den Masken von den Masken 102c in den
Reihen-&Masken-Resolver-Blöcken 311 einer UND-Funktion
unterzogen. Das Ergebnis der UND-Funktion ist eine Angabe, ob eine Übereinstimmung
in jeder Reihe aufgetreten ist. In diesem Ausführungsbeispiel, bei dem das
Sucharray 2K Reihen umfasst, werden 2K Übereinstimmungsleitungen zu dem
Sortierer ausgegeben. Die Schaltungsstruktur von zwei der Byte-Elemente 312 in
diesem Array ist in 4 gezeigt. Die Schaltung arbeitet
in einer Art und Weise, die eine vollständig parallele Suchoperation
bereitstellt, indem eine gleichzeitige Suche innerhalb aller ihrer
Reihen in einer Taktperiode durchgeführt wird. Wenn eine Suchoperation
durchgeführt wird,
geben alle Byte-Ebenen-Übereinstimmungsleitungen 401 in
einer Spalte gleichzeitig Übereinstimmungen
mit ihren jeweiligen gespeicherten Bytes an. Eine Suchoperation
wird in allen Spalten gleichzeitig aufgerufen, wodurch es dem abgedeckten
Reduktionsblock in jeder Rei he erlaubt wird, eine Reihen-Ebenen-Übereinstimmung
anzugeben. Auf diese Weise wird in diesem Ausführungsbeispiel des Sucharray
in einem einzigen Takt eine parallele Suche von allen 2K Strings
in dem Suchregister, die aus 8 zusammenhängenden Bytes bestehen, durchgeführt, und
die Ergebnisse werden in den 2K Übereinstimmungsleitungen
angegeben.
-
3A ist
ein Blockdiagramm eines Ausführungsbeispiels
eines Sortierers. Unter Bezugnahme auf 3A sind
die Übereinstimmungsleitungen 310 von
dem Sucharray mit einer Bereichsabdeckungs- und -auswahleinheit 301 gekoppelt
und finden in diese Eingang. In einem Ausführungsbeispiel umfassen Übereinstimmungsleitungen 310 die Übereinstimmung
1 bis zu der Übereinstimmung
2048. Die Bereichsabdeckungs- und -auswahleinheit 301 empfängt ein
Paar von Offsets, die einen Bereich von Reihen der M Übereinstimmungsleitungen
aus dem Sucharray spezifizieren, um eine weitere Verarbeitung durchzuführen. In
einem Ausführungsbeispiel sind
die Offsets 11-Bit-Zahlen, die in 2K Maskenbits umgewandelt werden,
die zusammen mit den Übereinstimmungsleitungen
einer UND-Funktion unterzogen werden können, um einen Ausgang bereitzustellen.
Ein solches Beispiel ist in 3B gezeigt,
in der der Offset für
den Startbereich in ein oder mehrere Nullen umgewandelt wird, wobei
die restlichen Bits ein Eins-Bit sind, während der Offset für das Ende des
Bereichs komplett in Nullen beginnend von der Unterseite bis hoch
zu einem bestimmten Punkt, nachdem alle Bits Einsen sein werden,
umgewandelt wird. Indem diese Register mit den Übereinstimmungsleitungen einer
UND-Funktion unterzogen werden, werden die Übereinstimmungen, die in dem spezifizierten
Start- und Endebereich auftreten, ohne Änderung ausgegeben, während andere Übereinstimmungsleitungen
außerhalb
des Bereichs abgedeckt werden (z. B. auf eine vorbestimmte Logik-Ebene
geändert
werden).
-
Der
Ausgang der Bereichsabdeckungs- und -auswahleinheit 301 ist
mit den Eingängen
der Indexauflösungsfunktionen-Einheit 302 gekoppelt.
In einem Ausführungsbeispiel
umfasst die Indexauflösungsfunktionen-Einheit 302 eine
oder mehrere Funktionen, die bei den Ausgängen der Bereichsabdeckungs- und -auswahleinheit 301 durchgeführt werden.
Zum Beispiel umfasst der Sortierer, wie gezeigt ist, einen aufsteigenden
Prioritätscodierer 302A,
um das erste Auftreten (im Hinblick auf die Oberseite des Sucharray)
einer Übereinstimmung zwischen
dem spezifizierten Muster von N Bytes und den Inhaltsdaten in dem
Sucharray zu finden, wie dies von den nicht abgedeckten Übereinstimmungsleitungen
angegeben ist. Ein absteigender Prioritätscodierer 302B kann
ebenfalls enthalten sein, um das letzte Auftreten (im Hinblick auf
die Oberseite des Sucharray) einer Übereinstimmung zwischen dem N-Byte-Muster
und den Inhaltsdaten in dem Sucharray zu finden, wie dies von den
nicht abgedeckten Übereinstimmungsleitungen
angegeben ist. Ein Bestands- bzw. Populationszähler 302C gibt die
Anzahl an Übereinstimmungen
an, die zwischen dem N-Byte-Muster
und den Daten in dem Sucharray auftreten, wie dies von den nicht
abgedeckten Übereinstimmungsleitungen
angezeigt ist. Es können
auch andere Indexselektoren verwendet werden.
-
Die
Ausgänge
der Indexauflösungsfunktionen-Einheit 302 werden
in eine Indexkombinierungs- und -auswahleinheit 303 eingegeben,
die auch gekoppelt ist, um den Opcode 102a zu empfangen.
Der Opcode 102a ist in dem Suchbefehl spezifiziert und wählt einen
der Indexauflösungsfunktionsausgänge als
den Ausgang des Sortierers aus. Die Indexkombinierungs- und -auswahleinheit 303 erzeigt
einen Übereinstimmungsindikator 321,
der angibt, dass es eine Übereinstimmung
gegeben hat, zusammen mit einem Index 322, der die Stelle
innerhalb des Sucharray der Daten angibt, die entweder das erste Auftreten
einer Übereinstimmung
ist, wenn der Ausgang des aufsteigenden Prioritätscodierers 302A ausgewählt ist,
das letzte Auftreten einer Übereinstimmung
in dem Falle ist, dass der Ausgang des absteigenden Prioritätscodierers 302B ausgewählt ist, die
Anzahl an Übereinstimmungen
in den nicht abgedeckten Übereinstimmungsleitungen
angibt, wenn der Bestandszähler 302C ausgewählt ist,
etc.. Nach der Berechnung der Ausgänge, nämlich des Übereinstimmungsindikators 321 und
des Index 322, können diese
verwendet werden, um die Ausführung
eines oder mehrerer Suchbefehle, die noch folgen, zu steuern, indem
die Ausgänge
in Universalregistern gespeichert werden und eine indirekte Spezifikation
in nachfolgenden Befehlen verwendet wird, indem zu einer spezifizierten
Adresse in dem Befehlsspeicher (z. B. dem Befehlsspeicher 104)
in Abhängigkeit
von dem Übereinstimmungsindikator 321 gesprungen wird,
oder durch ähnliche
Techniken.
-
5 veranschaulicht
die Mikroarchitektur eines Regelprozessors, der eine Suchvorrichtung umfasst.
Unter Bezugnahme auf 5 werden die Speicherbefehle
in einem Befehlsspeicher 501 gespeichert. Die Befehle werden von
der Ablaufkontrolle unter Verwendung eines Befehlsabruf-Zeigerregisters 502 ausgewählt. Die
Befehle werden durch einen Decodierer 503 decodiert. Die
einzelnen Untermengen jedes Befehls werden entweder aus dem Befehl herausgenommen
oder aus der Universalregisterdatei 504 abgerufen. Dann
werden die verschiedenen Untermengen jedes Befehls zu den separaten
Einheiten, nämlich
dem Sucharray 505, dem Sortierer 506, der eine
Sortiereinheit 506a gefolgt von einer Charakterisierungseinheit 506b umfasst,
einer herkömmlichen
arithmetischen logischen Einheit (ALU; arithmetic logic unit) 507,
wie diese oben dargelegt sind, geliefert. In einem Ausführungsbeispiel
folgt die Verarbeitung jedes Befehls einer 4-Stufen-Pipeline, die
aus (i) einer Befehlsabrufstufe 508, (ii) einer Befehlsassemblierungsstufe 509,
(iii) einer Suche-/Ausführungsstufe 510 und
(iv) einer Sortier- und Ergebnisbereitstellungs- und/oder Sprungstufe 511 besteht,
wie diese vorher beschrieben wurden.
-
In
einem Ausführungsbeispiel
umfasst das Regel maschinenbefehlsformat ein 128-Bit-Regelformat.
Die 128 Bits der Regel werden in Untermengen aufgeteilt, die verschiedene
Felder enthalten, um Betriebsanweisungen an verschiedene Hardware-Maschinen
in dem Regelprozessor auszugeben. In einem Ausführungsbeispiel enthält die Suchuntermenge
ein Suchen-/Sortieren-Opcode-Feld
(5 Bits), ein Musterfeld (in einem Ausführungsbeispiel beträgt dieses
65 Bits, die einen 8-Byte-Wert oder einen Zeiger auf eine Stelle,
die einen 8-Byte-Wert bereitstellt, zusammen mit einem zusätzlichen
Bit enthalten, das spezifiziert, ob der 8-Byte-Wert in dem Befehl
ein Zeiger ist oder nicht), ein Byte-Ebenen-Maskenfeld (in einem
Ausführungsbeispiel
8 Bits), ein Startstellen-Adressenfeld
(in einem Ausführungsbeispiel
beträgt
dieses Feld 12 Bits, die einen 11-Bit-Wert oder einen Zeiger auf
ein Register umfassen, das einen 11-Bit-Wert bereitstellt, und ein zusätzliches
Bit enthalten, um anzugeben, ob die Startstellenadresse den 11-Bit-Wert
oder einen solchen Zeiger enthält), ein
Endestellen-Adressenfeld (in einem Ausführungsbeispiel enthält dieses
Feld 12 Bits, die einen 11-Bit-Wert oder einen Zeiger auf ein Register,
das einen 11-Bit-Wert
bereitstellt, mit einem zusätzlichen Bit
umfassen, um zu spezifizieren, ob die Endestellen-Adresseninformation
ein Zeiger ist oder nicht), ein Ergebnisregisterfeld, das spezifiziert,
wohin die Ergebnisse der Suchoperationen zurückgesendet werden sollen (in
einem Ausführungsbeispiel
umfasst dieses Feld 6 Bits) und ein Sprungadressenfeld (in einem
Ausführungsbeispiel
umfasst dieses Feld 20 Bits, die einen 19-Bit-Wert oder einen Zeiger
auf ein Register, das ei nen 19-Bit-Wert bereitstellt, mit einem
zusätzlichen
Bit umfassen, um zu spezifizieren, ob die Sprungadresseninformation
ein Zeiger ist oder nicht).
-
6 veranschaulicht
einen beispielhaften Pseudocode 601 eines Regelsatzes,
der von einem Ausführungsbeispiel
des Regelprozessors, das oben beschrieben ist, verarbeitet werden
kann. Die Regel weist mehrere Muster mit einigen spezifischen Einschränkungen
bezüglich
den Stellen auf, an denen solche Muster in einer Nachricht oder
in einem Dokument oder Paket eventuell existieren können. Die
Beschränkungen
werden in dem Pseudocode durch die Verwendung von Schlüsselwörtern wie
VOR (BEFORE) und UND (AND) ausgedrückt. Für die Zwecke der Einfachheit
werden die Muster in 601 in diesem Beispiel ohne irgendwelche
zusätzlichen
Begrenzungszeichen zwischen Strings verwendet, wie dies in der Praxis
der Fall sein kann. Ebenfalls in 6 ist eine
Liste 602 des entsprechenden Mikrocodes für den beispielhaften
Regelprozessor gezeigt. Das Format der Befehle ist derart, wie es
vorher beschrieben worden ist. Wenn man den ersten Befehl 603 für die Veranschaulichung
verwendet, so besteht er aus dem FIND_FIRST_FORWARD-Opcode, bei
dem alle 8 Bytes des Musters "cp/bin/" relevant für die Suche sind
(durch die Verwendung von 0 × FF
als Maske), wobei die Start- und Ende-Offsets als konstante Werte
(durch die Verwendung von Indirektes-Vorgehen-Flags) ausgedrückt sind,
um den Start und das Ende der suchbaren Payload zu kennzeichnen,
die in den Suchregistern gehalten wird. Aus Gründen der Kürze ist die Ableitung der konstanten
Zahlen hier ausgelassen worden. Das Ergebnis dieses Opcodes ist
so gezeigt, dass es in das Universalregister A geladen wird, und
schließlich
wird die Sprungadresse als der konstante Wert von 11 spezifiziert,
welches der Befehl ist, der auf das Mikrocode-Stück folgen würde, das in 6 gezeigt
ist. Dieser Befehl wird bewirken, dass die Suche-Ausführungs-Hardware nach
dem Auftreten von "cp/bin/" in den Byte-Stellen 0 × 03D und
0 × 0800
der Suchregister 202a suchen wird. Alle Reihen in dem Sucharray 202c,
die damit übereinstimmen,
werden ihre jeweiligen Übereinstimmungsleitungen 310 am
Ende der Suche-Ausführungsstufe 510 der
Mikroarchitektur-Pipeline aktivieren. In der Sortier- und Sprungstufe 511 wandelt
der Sortierer 202b 0 x 03D und 0 x 0800 in Bitvektoren um,
wie dies in 3B veranschaulicht ist. Die
Bitvektoren werden verwendet, um die Bereichsabdeckungs- und -auswahlfunktion 301 durchzuführen, um
alle Übereinstimmungen,
die außerhalb
des Stellenfensters von 0 × 03D
bis 0 × 0800
starten, zu negieren. Aus den restlichen Übereinstimmun gen, die sich
nun innerhalb des Stellenfensters befinden, wählt der Opcode dieses Befehls
den aufsteigenden Prioritätscodierer 302A aus
den Indexauflösungsfunktionen 302 aus,
um die Übereinstimmung
mit der kleinsten Zahl in eine binäre codierte 11-Bit-Stelle umzuwandeln.
Wenn eine solche Übereinstimmung gefunden
wurde, würde
die Übereinstimmung 321 aktiviert
und der Index 322 würde
die 11-Bit-Stelle enthalten. Wenn die Übereinstimmung 321 nicht
aktiviert werden sollte, weil keine Übereinstimmung gefunden wurde,
würde die
Befehls-Ablaufsteuerung 105 die Sprungadresse 0 × B in den
Befehlszeiger 106 laden. Der Index 322 würde durch
die Steuerungsschaltung der Registerdatei 504 in das Universalregister
A geladen. Das Laden in das Universalregister A und das Laden des
Befehlszeigers, falls zutreffend, wird an dem Ende der Sortier-
und Sprungausführungsstufe 511 vollendet
sein. Der zweite Befehl 604, FIND_FORWARD_ANCHORED (FINDE_VORWÄRTS_EINGEBUNDEN),
veranschaulicht weiter das reichhaltige Vokabular der beispielhaften
Regelmaschine. Er ist eine Variante von FIND_FIRST_FORWARD darin,
dass die Übereinstimmung
an dem Start_Offset beginnen muß,
damit die Suche erfolgreich ist.
-
7 veranschaulicht
das Ausführen
des Mikrocodes, der in 6 gezeigt ist, in der Mikroarchitektur
des beispielhaften Regelprozessors, der in 5 gezeigt
ist. Die Tabelle 701 zeigt die Ausführung quer durch mehrere Taktzyklen.
Zu Zwecken der Einfachheit wird angenommen, dass alle Suchbefehle
darin erfolgreich sind, die spezifizierten Muster in den Suchregistern
zu finden. Die Ausführung
schreitet in einer Pipeline-Weise durch die 4 Stufen voran, die
in 5 beschrieben sind. Durch die Verwendung der indirekten
Spezifikation kann die Ausführung
eines Suchbefehls die Offsets verwenden, die in dem unmittelbar
vorausgehenden Befehl berechnet wurden. Deshalb werden die Befehle
1 bis 8 in aufeinanderfolgenden Zyklen ausgeführt. Der Befehl 8 ist ein Sprung,
der von dem Ergebnis des Vergleichs der Inhalte des Universalregisters
A und des Universalregisters B anhängig ist, die jeweils im Taktzyklus
8 und Taktzyklus 9 berechnet werden. Der Sprung wird im Taktzyklus
11 ausgeführt,
und die Befehlsausführung ist
im Taktzyklus 14 vollendet. Auf diese Weise wird der komplexe Musterabstimmungsausdruck,
der unter Verwendung des Pseudocodes 601 beschrieben ist,
in nur 14 Taktzyklen ausgeführt,
wobei das reichhaltige Befehlsvokabular des beispielhaften Regelprozessors
verwendet wird. Dieses Beispiel veranschaulicht die Fähigkeit
und die Effizienz des beispielhaften Regelprozessors bei der Ausführung von Funktionen,
die die dynamische und kontextabhängige Suche und Analyse von
Dokumenten, Nachrichten oder Paketen umfassen.
-
Während viele Änderungen
und Modifikationen der vorliegenden Erfindung einem Durchschnittsfachmann
zweifellos nach dem Lesen der obigen Beschreibung offensichtlich
werden, ist es selbstverständlich,
dass jedes spezielle Ausführungsbeispiel,
das zur Veranschaulichung gezeigt und beschrieben wurde, in keinster
Weise als beschränkend
betrachtet werden soll. Deshalb sind Bezugnahmen auf Einzelheiten
verschiedener Ausführungsbeispiele
nicht als Beschränkung
des Schutzumfangs der Ansprüche
gedacht, die in sich selber nur diejenigen Merkmale rezitieren,
die als essentiell für
die Erfindung betrachtet werden.