DE3855712T2 - Bitkettenverdichter mit verarbeitungsmöglichkeit für boolesche-operationen - Google Patents
Bitkettenverdichter mit verarbeitungsmöglichkeit für boolesche-operationenInfo
- Publication number
- DE3855712T2 DE3855712T2 DE3855712T DE3855712T DE3855712T2 DE 3855712 T2 DE3855712 T2 DE 3855712T2 DE 3855712 T DE3855712 T DE 3855712T DE 3855712 T DE3855712 T DE 3855712T DE 3855712 T2 DE3855712 T2 DE 3855712T2
- Authority
- DE
- Germany
- Prior art keywords
- pulse
- string
- bit
- bits
- polarity
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000012545 processing Methods 0.000 title abstract description 76
- 238000000034 method Methods 0.000 claims abstract description 56
- 230000003252 repetitive effect Effects 0.000 claims 2
- 239000000872 buffer Substances 0.000 abstract description 159
- 230000000694 effects Effects 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 60
- 230000008569 process Effects 0.000 description 27
- 230000003068 static effect Effects 0.000 description 26
- 239000003550 marker Substances 0.000 description 19
- 230000000875 corresponding effect Effects 0.000 description 14
- 238000013144 data compression Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000007906 compression Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/46—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Error Detection And Correction (AREA)
- Communication Control (AREA)
- Feed For Specific Animals (AREA)
- Editing Of Facsimile Originals (AREA)
- Air-Conditioning For Vehicles (AREA)
Description
- Diese Erfindung bezieht sich auf ein Verfahren und eine Vorrichtung zum Umwandeln einer Kette von sich wiederholenden Daten, die eine Kette binärer Bits unbestimmter Länge enthalten, in ein komprimiertes Impulsformat, mit welchem Boolesche Operationen ausgeführt werden können.
- Technologische Entwicklungen von der Erfindung der Druckerpresse bis zur automatischen Erfassung der Daten der Weltraumforschung haben uns die Informationsexplosion gebracht. Die ständig ansteigende Anzahl von Datenspeichern, wie etwa Festspeicherplatten, magnetischen Bändern etc. unterstreicht den Bedarf, die Darstellung der Daten irgendwie zu kondensieren, während ihr Informationsgehalt erhalten wird. Darüberhinaus besteht ein Bedarf zur schnellen und ökonomischen Ausführung von Booleschen Operationen mit diesen Daten, ohne die Daten in ihre ursprüngliche Form zu dekomprimieren.
- Im Stand der Technik werden im allgemeinen zwei grundlegende, in Computern verwendete Datenkomprimierungstechniken beschrieben; erstens, Datenkomprimierungstechniken, die in einer Datenbank gespeicherte Daten komprimieren und zweitens, Bit-Ketten-Komprimierungstechniken, die Bit-Ketten komprimieren, die Daten darstellen.
- Ein typisches Computerverfahren der Daten-Komprimierung zeichnet die Statistik der Daten in einer Datenbank auf und modifiziert die Kodierung der Daten in Übereinstimmung mit derselben. Beispielsweise verwendet die Huffman-Kodierung einen Kode variabler Länge, um die Datenkomprimierung in einer großen Datenbank zu erreichen. Siehe Date, An Introduction to Database Systems, 4th Edition, 79-80 (1986). In Übereinstimmung mit dem Schema der Huffman-Kodierung werden Zeichen oder andere grundlegende Gegenstände der Information, die zu verarbeiten ist, in Bit-Ketten variabler Länge kodiert, wobei die kürzesten Ketten den am meisten auftretenden Datengegenständen zugeordnet werden. Auf diese Weise weisen die diese Gegenstände repräsentierenden Bit-Ketten eine durchschnittliche Länge auf, die wesentlich kleiner ist, als die der Bit-Ketten, die derartige Gegenstände in einem herkömmlichen Kode-Format bestimmter Länge darstellen.
- Ein anderes Computerverfahren der Datenkomprimierung ist das holotrophische System, wie es in dem US-Patent 4 068 298 für Dechant et al. offenbart ist. Ein holotrophisches System komprimiert Daten dadurch, daß es automatisch einen Vorteil aus jeglicher Redundanz in den Daten zieht. Ist beispielsweise einmal ein Zeichen, ein Wort, ein Satz, ein Absatz etc. aufgetreten, so muß kein nachfolgendes Auftreten des gleichen Elements in seiner ursprünglichen Form gespeichert werden. Stattdessen notiert das holotrophische System, daß ein zuvor aufgetretenes Element auf eine Weise aufgetreten ist, die die Rekonstruktion jedes oder jedes einzelnen der vielfältigen Datenelemente in ihrer ursprünglichen Umgebung erlaubt. Eine andere Eigenschaft eines holotrophischen Systems ist es, daß jedes Datenelement, nachdem es der Datenbank hinzugefügt wurde, automatisch mit jedem anderen bereits gespeicherten Element korreliert werden kann. Diese Korrelation kann eine Beziehung zwischen einem bestimmten Datenelement und einer Anzahl von bereits gespeicherten Datenelementen aufdecken, die es erlaubt, all die miteinander in Beziehung stehenden Elemente als eine einzige Einheit zu behandeln und zusammen zu speichern. Daher kann eine Anzahl von Elementen, die separat gespeichert wurden, zu einem einzigen Eintrag in der Datenbank komprimiert werden.
- Datenkomprimierungsverfahren, wie sie oben besprochen wurden, benötigen eine ansehnliche Menge von Hardware und Software für ihre Implementierung, wie etwa Wahrscheinlichkeitsverteilungsanalysatoren, Vorhersagefunktionsgeneratoren etc. Die Datenkomprimierung kann auch eine tatsächliche Erweiterung der Information zur Folge haben, da die Informationsquellenstatistiken nicht mit der benötigten Präzision meßbar sein können.
- Darüberhinaus sind die sich ergebenden Bit-Ketten, die die komprimierten Daten darstellen, nicht leicht mit Booleschen Operationen zu verarbeiten. Im allgemeinen müssen die Daten zurück in ihre ursprünglichen Formate bestimmter Länge konvertiert werden, bevor Boolesche Operationen durchgeführt werden können.
- Die zweite Kategorie der im Stand der Technik offenbarten Techniken schließt Verfahren zur Bit-Ketten-Komprimierung ein, die Lauflängen kodierende Schemas verwenden, um Ketten identischer Bit-Werte ("1'en" oder "0'en") darzustellen. Ein Aspekt der vorliegenden Erfindung ist eine Verbesserung bezüglich dieser Komprimierungstechniken. Diese Verfahren sind im allgemeinen datenunabhängig, im Gegensatz zu den oben erwähnten Datenkomprimierungstechniken. Eine typische Anwendung für Lauflängenkodierung wird dazu verwendet, die Anzahl der Bits in redundanten binären Daten, wie etwa in den digitalisierten Abbildungen von technischen Zeichnungen oder in Übertragungen von Daten aus dem Weltraum zu reduzieren. In Bradley, "Optimizing a Scheme for Run Length Encoing", Proceedings of the IEEE (Jan. 1969) wird ein Schema zur Bilddarstellung vorgestellt, welches durch ein zweidimensionales Feld von schwarzen und weißen Bildelementen dargestellt ist. Da das Auftreten von schwarzen und weißen Pixeln in einem Bild immer alterniert, ist es in dem Kodierprozeß nur notwendig, die Länge eines Strangs von weißen Pixeln zu kodieren und nicht die Werte der Bildelemente. Ein Kodierschema variabler Länge wird zur Kodierung des Bildes eingeführt, insbesondere zwei Kodierformate werden diskutiert. Das erste Kodierformat kodiert einen Strang von Nullen, gefolgt von einem Endwert, um das Ende des Strangs zu markieren. Das zweite Kodierformat kodiert einfach eine Kette von aufeinanderfolgender Nullen. Ein Strang von jeder beliebigen Länge kann durch einige Kode- Eingaben des zweiten Eingabetypus dargestellt werden, gefolgt durch eine einzige Eingabe des ersten Typus.
- Das US-Patent Nr. 4 586 027 offenbart ein Verfahren und eine Vorrichtung zur Datenkomprimierung und -wiederherstellung. Eine Eingangsdatenkette, die eine Anzahl von sich wiederholenden Daten enthält, die einen bestimmten Wert übersteigt, wird in eine Ausgangsdatenkette transformiert, die eine erste Region für unkomprimierte Daten und eine zweite Region für komprimierte Daten enthält. Die zweite Region enthält einen Datumswert, der einen Datenkettenabschnitt darstellt, der den Komprimierungsprozeß durchlaufen hat und einen Anzahlwert, welcher die Anzahl der Wiederholungen anzeigt. Es wird somit ein zweiteiliges komprimiertes Format verwendet, um eine Kette von sich wiederholenden Bytes darzustellen, die einen Ein-Byte-Datenindikator und numerische Information enthält, die die Anzahl der Wiederholungen des Ein-Byte-Datenindikators in der ursprünglichen Datenkette anzeigt.
- Obwohl die lauflängen-kodierenden Schematas, wie sie im Stand der Technik diskutiert werden (z.B. Bradley), effizient bei der Komprimierung von Abbildungen und großen Datenübertragungen sind, in denen lange Stränge von "0'-en" auftreten, sind sie nicht zugänglich für traditionelle Formen der Computerverarbeitung, insbesondere in Situationen, in denen die Stranglängen kürzer sind und die Frequenzvariation von Strängen von "1'en" oder "0'en" öfter auftritt. Darüberhinaus sind stranglängen-kodierende Schematas des Standes der Technik nicht strukturiert, um effizient Operationen (z.B. Boolesche Operationen etc.) mit Daten auszuführen. Demgegenüber sind komprimierte Formate mit fester Länge zugänglich für Computeroperationen. Insbesondere können Formate fester Länge auf effiziente Art verarbeitet werden und sie können zur effizienten Kodierung von unkomprimierten Bit-Ketten verwendet werden.
- Schließlich fand bis heute nur eine geringe Entwicklung der Techniken zur effizienten Ausführung von Booleschen Operationen mit komprimierten Bit-Ketten statt. Herkömmliche Techniken verlangen, daß die Booleschen Operationen mit jedem Datenbit ausgeführt werden. Diese Techniken wurden durch die Verwendung von schnellerer Hardware leicht verbessert; es muß jedoch immer noch jedes Datenbit verarbeitet werden. Daher bleibt die Ausführung von Booleschen Operationen mit Bit-Ketten ein relativ ineffizienter Prozeß.
- Gemäß der vorliegenden Erfindung wird ein Verfahren gemäß Anspruch 1 zur Verfügung gestellt.
- Gemäß der vorliegenden Erfindung wird weiterhin ein Prozessor gemäß Anspruch 7 zur Verfügung gestellt.
- Gemäß der vorliegenden Erfindung wird darüberhinaus eine Vorrichtung gemäß Anspruch 8 zur Verfügung gestellt.
- Die vorliegende Erfindung weist daher die Fähigkeit auf, eine Operation mit einer ersten und einer zweiten Bit-Kette effizient auszuführen, welche beide in einer komprimierten Form vorliegen. Zum ersten Mal müssen komprimierte Bit-Ketten nicht dekomprimiert werden, um Datenveränderungen auszuführen. Indem die Daten nicht dekomprimiert werden müssen, wird Computerzeit gespart, und die Verarbeitung wird effizienter gestaltet, da während der Ausführung der Booleschen Operationen weniger Daten berücksichtigt werden müssen. Dieser Aspekt der vorliegenden Erfindung ist ein Verfahren und/oder eine Vorrichtung, die einen Computer zur effizienten Verarbeitung von binären Bit-Ketten verwendet. Jede binäre Bit-Kette wird durch eine Serie von komprimierten Impulsformaten dargestellt. Die komprimierten Impulsformate weisen eine Polaritätsdarstellung und ein entsprechendes Längendarstellungspaar auf. Die Polaritätsdarstellung stellt den binären Wert eines oder mehrerer kontinuierlicher binärer Bits desselben binären Wertes und eines binären Bits des entgegengesetzten binären Wertes in der korrespondierenden Bit-Kette dar. Die Längendarstellung im Paar stellt die Anzahl der binären Bits desselben binären Wertes dar. Im allgemeinen geschieht die Verarbeitung von binären Bit-Ketten in zwei Schritten. Als erstes wird eine erste Serie von komprimierten Impulsformaten, die eine erste Bit-Kette darstellen, gemäß einer ausgewählten Operation mit einer zweiten Serie der komprimierten Impulsformate, die eine zweite Bit-Kette darstellen, verarbeitet. Es ergibt sich ein Zwischenformat, welches einen Abschnitt einer sich ergebenden Bit-Kette darstellt. Das Zwischenformat enthält typischerweise eine Vielzahl von Strangdarstellungen und Impulsen. Als zweites werden die Stränge und Impulse des Zwischenformats in eine Serie von kontinuierlichen, komprimierten Formatimpulsen kombiniert, welche die resultierende Bit-Kette darstellen.
- Die vorliegende Erfindung enthält zwei Ausführungsformen zur Verarbeitung von Booleschen Operationen. In der ersten Ausführungsform geschieht die Verarbeitung einer Booleschen Operation mit den ersten und zweiten komprimierten Bit-Ketten in sechs Schritten. In dem ersten Schritt wird die Länge der ersten Impulse mit der Länge der zweiten Impulse verglichen, um eine minimale Länge zu bestimmen. Die minimale Länge ist die Länge einer zwischengeschalteten, komprimierten Bit-Kette (Zwischen-Bit-Kette), welche durch Verarbeitung von zwei Impulsen, je einen von jeder Bit-Kette, errechnet wird. Als zweites wird eine Verarbeitung der minimalen Länge des ersten und des zweiten Impulses durchgeführt, um die Polarität der Zwischen-Bit-Kette zu bestimmen und um zu bestimmen, ob die Zwischen-Bit-Kette ein Strang oder ein Impuls ist.
- Als drittes werden die Polarität, die Länge und der Typ (Strang oder Impuls) der Zwischen-Bit-Kette in einem temporären Speichergebiet gespeichert. Hier werden eine oder mehrere der Zwischen-Bit-Ketten zu einem Impuls einer resultierenden Bit-Kette kombiniert. Der vierte Schritt schließt die Reduzierung der Länge des ersten und des zweiten Eingangsimpulses um die zuvor berechnete minimale Länge ein. Dieser Schritt berücksichtigt die Bits jedes Impulses, welche bei einer bestimmten Booleschen Operation verarbeitet wurden.
- Der fünfte Schritt bestimmt, ob die Länge des ersten und/oder zweiten Impulses auf null Bit reduziert wurde. Diese Bestimmung ermöglicht dem System zu ermitteln, ob es einen nächsten Impuls entweder der ersten oder der zweiten Bit- Kette entnehmen muß. Insbesondere werden die nächsten Impulse sowohl von der ersten als auch der zweiten Bit-Kette erhalten, wenn die ersten und die zweiten Impulse auf eine Länge Null reduziert werden. Oder es wird ein nächster Impuls der ersten oder der zweiten Bit-Kette erhalten, wenn die entsprechenden Impulse auf eine Länge Null reduziert werden. Der letzte Schritt schließt die Ausführung all der zuvor zitierten Schritte ein, solange bis sich keine Impulse mehr in der (den) ersten und/oder zweiten Bit-Kette (N) befinden.
- In der bevorzugten Ausführungsform schließt der Schritt der Ausführung einer Booleschen Operation ebenfalls den Schritt ein, durch Bezugnahme auf eine Indextabelle zu bestimmen, welche spezifische Operation auszuführen ist. Die Indextabelle ist aus einer Serie von Untertabellen aufgebaut. Jede Untertabelle entspricht einer speziellen Booleschen Operation und jede der Untertabellen enthält eine Matrix der gewünschten Ergebnisse für jede Operation. Jede der Untertabellen enthält weiterhin einen ersten, einen zweiten und einen dritten Index. Der erste Index der Untertabelle dient der Identifizierung der Polarität des ersten Impulses. Der zweite Index der Untertabelle dient der Identifizierung der Polarität des zweiten Impulses. Schließlich dient der dritte Index dazu, zu bestimmen, ob die Länge des ersten Impulses kleiner, größer oder gleich der Länge des zweiten Impulses ist. Durch Bezugnahme auf die ersten, zweiten und dritten Indizes können die zuvor definierten, auszuführenden Operationen bestimmt werden.
- In der zweiten bevorzugten Ausführungsform weist das Verfahren zur Verarbeitung einer Booleschen Operation sieben Schritte auf. Die zweite Ausführungsform der bevorzugten Ausführungsform dient insbesondere der Ausführung der Booleschen Operationen UND, ODER oder EXKLUSIVES ODER mit einer ersten und einer zweiten komprimierten Bit-Kette. In dem ersten Schritt wird die Länge eines ersten Impulses mit der Länge eines zweiten Impulses verglichen, um zu bestimmen, ob die ersten und zweiten Impulslängen gleich oder ungleich sind. Der zweite Schritt schließt die Bestimmung einer resultierenden Zwischen-Bit-Kette ein, wenn die ersten und zweiten Impulse gleich oder ungleich lang sind.
- Wenn die Impulse ungleich lang sind, werden drei Subschritte ausgeführt. Als erstes wird die Länge des ersten Impulses mit der Länge des zweiten Impulses verglichen, um festzustellen, welcher Impuls länger und welcher Impuls kürzer ist. Die kürzere Länge ist die Länge der Zwischen-Bit-Kette. Als zweites wird die Polarität des längeren Impulses durch Bezugnahme auf den mit dem Impuls verbundenen Polaritätsindikator bestimmt. Als drittes wird festgestellt, ob die Zwischen-Bit-Kette ein Impuls oder ein Strang ist. Insbesondere schließt dieser Subschritt die Ausführung dreier getrennter Regeln ein. Regel I: Wenn die Boolesche Operation eine UND Operation ist, zeigt die Polarität des längeren Impulses (wie oben bestimmt) an, ob die Zwischen-Bit-Kette ein Strang oder ein Impuls ist. Regel II: Wenn die Boolesche Operation eine ODER Operation ist, zeigt das Komplement der Polarität des längeren Impulses an, ob die Zwischen-Bit-Kette ein Strang oder ein Impuls ist. Schließlich Regel III: Wenn die Boolesche Operation ein EXKLUSIVES ODER ist, ist die Zwischen-Bit-Kette immer ein Impuls.
- Wenn die ersten und zweiten Bit-Ketten die gleiche Länge aufweisen, schließt der zweite Schritt die Bestimmung der Zwischen-Bit-Kette durch die folgenden zwei Subschritte ein. Als erstes wird die Länge der Zwischen-Bit-Kette der Länge der ersten und zweiten Impulse gleich gesetzt. Als zweites wird bestimmt, ob die Zwischen-Bit-Kette ein Strang oder ein Impuls ist. Dieser Subschritt schließt die Ausführung dreier Regeln ein. Regel I: Wenn die Boolesche Operation entweder eine UND oder eine ODER Operation ist und die Polarität der ersten und der zweiten Impulse sich unterscheidet, ist die Zwischen-Bit-Kette immer ein Strang. Regel II: Wenn die Boolesche Operation entweder ein UND oder ein ODER ist und die Polarität der ersten und der zweiten Impulse die gleiche ist, ist die Zwischen-Bit- Kette immer ein Impuls. Regel III: Wenn die Boolesche Operation ein EXKLUSIVES ODER ist, ist die Zwischen-Bit-Kette immer ein Strang.
- Unabhängig ob der oben diskutierte zweite Schritt die Bestimmung der Zwischen- Bit-Kette einschließt, wenn die ersten und zweiten Bit-Ketten gleich oder ungleich lang sind, wird der dritte Schritt eine spezielle Boolesche Operation mit dem ersten Indikator des ersten Impulses mit dem ersten Indikator des zweiten Impulses ausführen, um die Polarität der Zwischen-Bit-Kette zu bestimmen. Die Polarität, die Länge und der Typ (Strang oder Impuls) der Zwischen-Bit-Kette werden in einem temporären Speicherbereich gespeichert. Hier werden eine oder mehrere Zwischen- Bit-Ketten zu einem Impuls der resultierenden Bit-Kette kombiniert. Im fünften Schritt wird die Länge der ersten und zweiten Impulse um die Länge der Zwischen- Bit-Kette reduziert. Dieser Schritt berücksichtigt die Bits, welche zuvor durch die Boolesche Operation verarbeitet wurden.
- Der sechste Schritt schließt die Bestimmung ein, ob die Länge der ersten oder zweiten Impulse auf null reduziert wurde. Diese Bestimmung erlaubt es dem System zu bestimmen, ob ein nächster Impuls von den ersten und zweiten Bit- Ketten erhalten werden sollte. Genauergesagt werden die nächsten Impulse der ersten und zweiten Bit-Ketten erhalten, wenn die ersten und zweiten Impulse beide auf eine Bitlänge von null reduziert sind, oder ein nächster Impuls der ersten oder der zweiten Bit-Ketten werden erhalten, wenn der entsprechende Impuls auf eine Länge von null reduziert ist. Der letzte Schritt führt all die zuvor zitierten Schritte aus, solange bis sich weder in der ersten noch in der zweiten Bit-Kette keine weiteren Impulse mehr befinden. Auf diese Weise wird ein Verfahren zur Verarbeitung der Booleschen Operationen UND, ODER, EXKLUSIVES ODER mit einer ersten oder einer zweiten Bit-Kette zur Verfügung gestellt, um eine resultierende, komprimierte Bit-Kette aufzubauen.
- Die vorliegende Erfindung enthält ebenfalls eine Ausführungsform zur Ausführung von Booleschen Operationen mit ersten und zweiten Bit-Ketten, die nur komprimierte Stränge enthalten. In der bevorzugten Ausführungsform wird jeder Strang einer Bit-Kette in ein komprimiertes Strangformat umgewandelt. Das komprimierte Strangformat enthält einen ersten und einen zweiten Indikator. Der erste Indikator dient der Anzeige der Polarität des Stranges und der zweite Indikator dient der Anzeige der Länge des Stranges. Die Ausführung einer Booleschen Operation mit zwei Stränge enthaltenen Bit-Ketten geschieht in zwei Schritten. Als erstes werden ein Strang einer ersten Bit-Kette und ein Strang einer zweiten Bit-Kette verglichen, um zu bestimmen, ob sie gleich oder ungleich lang sind. Wenn die Stranglängen ungleich sind, ist die Bitlänge des kürzeren Stranges gleich der Bitlänge des zwischenzeitlich resultierenden Stranges. Wenn die Stränge die gleiche Länge aufweisen, ist die Bitlänge jedes Stranges gleich der Bitlängen der resultierenden Stränge. Der zweite Schritt schließt die Bestimmung der Polarität des resultierenden Stranges ein. Die spezifische Boolesche Operation wird mit den Polaritätsindikatoren der ersten und zweiten Stränge ausgeführt. Das Ergebnis der Booleschen Operation ist die Polarität des zwischenzeitlich resultierenden Stranges. Diese Schritte werden solange ausgeführt, bis alle Stränge beider Bit-Ketten verarbeitet sind und ein resultierender, komprimierter Strang bestimmt ist.
- Diese Ausführungsform der vorliegenden Erfindung erhöht wesentlich die Fähigkeit eines Computers, Boolesche Operationen mit komprimierten Daten auszuführen. Insbesondere können Daten in komprimierter Form effizient verarbeitet werden, ohne daß zuerst die Daten in ihre ursprüngliche nicht-kodierte Form dekomprimiert werden müssen. Darüberhinaus können Boolesche Operationen durch Verwendung einer Indextabelle und/oder der Booleschen Regeln zur Bestimmung des Typus (Strang oder Impuls) effizient auf große Mengen von komprimierten Daten angewendet werden. Durch Einbeziehung der Vorteile der einzigartigen Eigenschaften von Impulsen verarbeitet die vorliegende Erfindung Daten effizienter.
- Fig. 1 zeigt ein Computersystem, welches mit einer Computerplattform ausgestattet ist zur Umwandlung unkomprimierter Bit-Ketten in komprimierte Bit-Ketten und/oder zur Verarbeitung von Booleschen Operationen in Übereinstimmung mit der vorliegenden Erfindung;
- Fig. 1A zeigt die Hardware der Computerplattform, auf welcher Softwareprogramme und/oder Hardware ausgeführt wird zur Umwandlung und Ausführung von Booleschen Operationen;
- Fig. 2A ist eine schematische Darstellung eines einpaketigen, komprimierten Impulsformates zur Wiedergabe eines Impulses mit einer Menge von 2 bis 31 Bits;
- Fig. 2B ist ein zweipaketiges, komprimiertes Impulsformat zur Darstellung eines ersten und eines zweiten Impulses mit einer Länge von 2 bis 5 Bits;
- Fig. 2C ist ein dreipaketiges, komprimiertes Impulsformat zur Darstellung von drei Impulsen mit einer Länge von 2 bis 3 Bits;
- Fig. 2D ist ein vierpaketiges, komprimiertes Impulsformat zur Darstellung eines Impulses mit einer Länge von 2 bis 2³²-1 Bits;
- Fig. 3A und 3B sind Fluß-Blockdiagramme der KODIERE BIT-KETTE Routine;
- Fig. 3C ist ein Fluß-Blockdiagramm der NIMM NÄCHSTEN IMPULS Routine, welche in den KODIERE BIT-KETTE Routinen (Fig. 3A und 3B) aufgerufen wird;
- Fig. 4A zeigt eine nicht-komprimierte Bit-Kette;
- Fig. 4B ist die Bit-Kette der Fig. 4A, dargestellt in dem komprimierten Impulsformat;
- Fig. 5A und 5B sind Tabellen, die die Ergebnisse der mit der nicht-komprimierten Bit-Kette (Fig. 4A) ausgeführten KODIERE BIT-KETTE Routine (Fig. 3A und 3B) und NIMM NÄCHSTEN IMPULS Routine (Fig. 3C);
- Fig. 6 ist ein Fluß-Blockdiagramm der VERARBEITE B00LESCHE OPERATION Routine;
- Fig. 7 ist ein schematisches Blockdiagramm, welches einen Teil der Computerhardware-Ausführung zur Ausführung einer Booleschen Operation mit einer ersten und einer zweiten Bit-Kette darstellt;
- Fig. 8A ist eine Tabelle, welche die Ergebnisse der F2-Funktion der Booleschen Hardwarekonfiguration (Fig. 7) darstellt;
- Fig. 8B ist eine Tabelle, welche die Ergebnisse der F3-Funktion der Booleschen Hardwarekonfiguration (Fig. 7) darstellt;
- Fig. 9A ist eine Darstellung der Wahrheitswertetabelle der Eingänge und der Ergebnisse der F1-Funktion der Booleschen Hardwarekonfiguration (Fig. 7);
- Fig. 9B ist eine Darstellung der Wahrheitswertetabelle der Eingänge und der Ergebnisse der F2-Funktion der Booleschen Hardwarekonfiguration (Fig. 7);
- Fig. 9C ist eine Darstellung der Wahrheitswertetabelle der Eingänge und der Ergebnisse der F4-Funktion der Booleschen Hardwarekonfiguration (Fig. 7);
- Fig. 9D ist eine Darstellung der Wahrheitswertetabelle der Eingänge und der Ergebnisse der F3-Funktion der Booleschen Hardwarekonfiguration (Fig. 7);
- Fig. 9E ist eine Darstellung der Wahrheitswertetabelle der Eingänge und der Ergebnisse der F6-Funktion der Booleschen Hardwarekonfiguration (Fig. 7);
- Fig. 9F ist eine Darstellung der Wahrheitswertetabelle der Eingänge und der Ergebnisse der F2 und F3-Funktionen der Booleschen Hardwarekonfiguration (Fig. 7);
- Fig. 10 zeigt eine Indextabelle, die von der Computerplattform verwendet wird, um eine Boolesche Operation mit einer ersten und einer zweiten Bit- Kette auszuführen;
- Fig. 11A ist ein Flußblockdiagramm der ERZEUGE RESULTIERENDE BIT-KETTE Routine;
- Fig. 11B ist ein schematisches Diagramm einer Statusvariable;
- Fig. 11C ist ein schematisches Blockdiagramm, welches die Hardwarekomponenten des kanonischen Prozessors 25 (Fig. 1) darstellt;
- Fig. 12A zeigt eine zweite Indextabelle, welche von der Computerplattform verwendet wird, um eine von der ERZEUGE RESULTIERENDE BIT-KETTE Routine (Fig. 11A) zu analysierende Statusvariable zu bestimmen;
- Fig. 12B ist eine Tabelle, welche die durch die ERZEUGE RESULTIERENDE BIT- KETTE Routine (Fig. 11A), wie sie durch die Zustandsvariablen dargestellt wird, auszuführenden Operationen darstellt;
- Fig. 13A stellt komprimierte Bit-Ketten A und B dar, welche durch eine Boolesche Operation verarbeitet werden sollen;
- Fig. 13B stellt eine resultierende Bit-Kette dar, welche durch Ausführung einer Booleschen Operation mit Bit-Ketten A und B der Fig. 13A erzeugt wur-
- Fig. 14A und 14B stellen eine Tabelle dar, welche die Ergebnisse der Ausführung der Booleschen UND-Operation mit Bit-Ketten A und B der Fig. 13A zeigt.
- 1) ERZEUGE RESULTIERENDE BIT-KETTE Routine
- 2) Zweite Indextabelle
- 3) Ein detailliertes Beispiel der Booleschen UND-Operation mit zwei komprimierten Bit-Ketten
- Fig. 1 zeigt ein Computersystem mit einem programmierbaren Computer und Computerprogrammen zur Umwandlung einer nicht-komprimierten Bit-Kette in eine komprimierte Bit-Kette und/oder zur Ausführung Boolescher Operationen mit einer ersten und einer zweiten komprimierten Bit-Kette. Das System schließt einen programmierten Mikroprozessor 2, eine Anzeige 3, einen Tastatur-Eingang 11 für den Mikroprozessor und ein externes Gerät 12 zur Speicherung und Pufferung der nicht-komprimierten Bit-Ketten ein. Die Hardware/Software für Umwandlung und die Booleschen Operationen sind in einer Computerplattform 10 (mit gestrichelten Linien dargestellt) untergebracht, welche in den Prozessor 2 eingebaut ist. Die Computerplattform 10 koordiniert die verschiedenen Aktivitäten, die mit der Umwandlung von nicht-komprimierten Bit-Ketten in komprimierte Bit-Ketten und mit der Ausführung von Booleschen Operationen mit Bit-Ketten verbunden sind. Herkömmlicherweise ist die Computerplattform 10 ein vorprogrammierter Computer auf einem gedruckten Schaltkreisboard, welches leicht in den meisten Standardcomputern, einschließlich Personal-, Mini- und Mainframe-Computern, verwendet werden kann. Es ist ebenfalls beabsichtigt, daß die Plattform 10 ein Computer für einen speziellen Zweck sein kann, welcher durch einen Chip mit integriertem Schaltkreis gebildet ist.
- Bezug nehmend auf Fig. 1A enthält die Computerplattform 10 insbesondere einen Kodierer 14, einen optionalen zweiten Speicher 16 (d.h. der zweite Speicher könnte auch außerhalb der Plattform 10 angeordnet worden sein) einen optionalen Pufferspeic her 18, eine Boolesche Logikeinheit (BLU) 20, eine kanonische Verarbeitungseinheit 25 und einen Systemkoordinator 31. Wenn Softwareprogramme zur Kodierung der Bit-Ketten, der Ausführung der Booleschen Operationen und der Koordinierung des Datentransfers zwischen Komponenten in die Computerplattform 10 geladen werden, ist die Plattform 10 vervollständigt und bereit zur Verarbeitung.
- Es wird nunmehr eine detaillierte Diskussion der spezifischen Komponenten der Computerplattform 10 präsentiert. Das externe Gerät 12 ist ein permanenter Pufferspeicher, typischerweise eine Festplatte für nicht-komprimierte Bit-Ketten. Die Bit-Ketten stellen Daten dar, welche in einer relationalen Datenbank organisiert sein können oder stellen unorganisierte Daten dar, welche durch Satellitenkommunikation aus dem Weltraum oder dergleichen aufgenommen wurden. Der Inhalt des externen Gerätes 12 wird mittels des Busses 13 in die Computerplattform 10 und in den Kodierer 14 geladen. Der Kodierer 14 verarbeitet die nicht-komprimierten Bit-Ketten und separiert die Bit-Ketten in eine oder mehrere "Impulse". Ein Impuls ist ein Strang, welcher eine Kette eines oder mehrerer Bits des gleichen binären Wertes oder der gleichen Polarität (z.B. "0'en" oder "1'en") und eines End- Bits ist, welches eine gegenüber der Polarität des Stranges entgegengesetzte Polarität aufweist. Die (zu diskutierenden) Flußdiagramme 3A, 3B und 3C zeigen Routinen, die durch den Kodierer 14 zur Kodierung der Bit-Ketten in eine oder vier unterschiedliche, komprimierte Impulsformate (Fig. 2A, 2B, 2C und 2D) ausgeführt werden. Der zweite Speicher 16 ist optional; er speichert die kodierten Bit-Ketten für kommende Boolesche Operationen. Der zweite Speicher 16 kann eine im Zentralcomputer enthaltene Speicherkomponente sein oder kann eine in der Computerplattform 10 enthaltene Speicherkomponente sein. Der Pufferspeicher 18 ist ein weiterer Speicherbereich zum temporären Halten der kodierten Bit-Ketten vor der Verarbeitung der Bit-Ketten in der BLU 20 oder vor der Speicherung der Bit- Kette im zweiten Speicher 16 nach der Verarbeitung. Die BLU 20 führt Boolesche Operationen mit zwei Bit-Ketten durch Verarbeitung einer einzigartigen BLU-Ausführung (Fig. 10) aus, welche in einem Mikroprozessor (z.B. Intel 80386) implementiert sind, oder durch eine einzigartige BLU-Hardware-Ausführung (Fig. 7), welche durch speziell programmierbare Chips mit Logikschaltungen (z.B. XILINX Chips) implementiert ist. Einige oder alle der Booleschen Operationen sind effizienter, wenn sie direkt in der Hardware implementiert sind. Sogar wenn die Booleschen Operationen in erster Linie durch Software implementiert werden, kann die BLU 20 jedoch die Booleschen Operationen bezüglich Speicherfähigkeit, Geschwindigkeit und dergleichen effizienter ausführen, als zur Zeit bekannte Techniken zur Ausführung von Booleschen Operationen mit komprimierten Bit-Ketten. Die BLU 20 kann alle Vorteile aus den einzigartigen Eigenschaften der neuesten Komponenten, wie etwa 32-Bit-Mikroprozessor-CPU's und dergleichen, ziehen.
- Sobald eine zwischenzeitliche, resultierende, komprimierte Bit-Kette (Zwischen-Bit- Kette), welche das Ergebnis der Ausführung einer Booleschen Operation mit zwei Impulsen ist, durch die BLU 20 bestimmt wurde, wird sie über den Bus 21 zu dem kanonischen Prozessor 25 gesandt. Der kanonische Prozessor 25 ist im wesentlichen ein Paar von Puffern zum temporären Speichern der Zwischen-Bit-Ketten, bis sie zu einem Impuls kombiniert werden können. Wenn ein Impuls (komprimierte Form) an der kanonischen Prozessoreinheit 25 erzeugt wird, wird er über den Bus 23 zum Pufferspeicher 18 ausgegeben.
- Der Systemkoordinator 31 kontrolliert die Verarbeitung der Daten auf der Computerplattform 10. Genauergesagt werden die Operation des Bus-Systems und die Operation der Komponenten auf der Computerplattform 10 durch Softwareprogramme im Systemkoordinator 31 kontrolliert. Die gestrichelten Linien der Fig. 1A, die aus dem Systemkoordinator 31 austreten, zeigen seine Kontrolle über die verschiedenen Komponenten. Der Systemkoordinator 31 muß nicht Teil der Computerplattform 10 sein. Stattdessen könnte er in dem Zentralcomputer geladen sein.
- "00001" und "11110" sind Impulse mit einer Länge von 5 Bits und können sich in einer typischen Bit-Kette befinden. Beide haben die Eigenschaft, daß sie eines oder mehrere Bits gleicher Polarität (z. B. "0000" oder "1111") aufweisen, die gefolgt sind von einem Bit mit einer Polarität, die der Polarität der Bits mit gleicher Polarität entgegengesetzt ist. Die Polarität des ersten Impulses ist "0" und die Polarität des zweiten Impulses ist "1" Die in den Fig. 2A, 2B, 2C und 2D gezeigten, bevorzugten Formate stellen vier komprimierte Impulsformate zur Kodierung eines oder mehrerer Impulse, wie etwa der oben erwähnten 5-Bit-Impulse, dar.
- Obwohl die bevorzugten Formate in der Beschreibung mit einem oder mehreren Bits mit gleicher Polarität (z. B. "000" oder "111") beginnen und von einem Bit gefolgt werden, welches eine Polarität aufweist, die den gleichen Polaritäten entgegengesetzt ist, könnten die Impulse genauso leicht umgekehrt aufgebaut worden sein. Z. B. sind "10000" und "01111" Impulse, die eine Länge von fünf Bits aufweisen und die sich in einer typischen Bit-Kette befinden können. Beide Impulse weisen ein einzelnes Bit mit einer bestimmten Polarität (z. B. "0" oder "1") auf, welches gefolgt ist von einem oder mehreren Bits mit entgegengesetzter Polarität. Unabhängig von der Orientierung der Impulse innerhalb der Bit-Kette (d.h. "1000" oder "0001") stellen die in den Fig. 2A, 2B, 2C und 2D dargestellten, bevorzugten, komprimierten Impulsformate 4 komprimierte Impulsformate dar, um jede Orientierung der Impulse einzuschließen. In den verbleibenden Abschnitten der Beschreibung wird jedoch der Einfachheit halber angenommen, daß die Impulse der Orientierung von einem oder mehreren Bits mit gleicher Polarität, gefolgt durch ein End- Bit mit einer Polarität, die der Polarität der Bits mit gleicher Polarität (z. B. "00001") entgegengesetzt ist, folgen.
- Jedes der komprimierten Impulsformate weist mindestens einen ersten und zweiten Indikator auf. Der erste Indikator stellt die Polarität der Bits gleicher Polarität dar, die dem End-Bit vorausgehen und der zweite Indikator deutet die Länge des Impulses an. Die Länge des Impulses ist die Anzahl des einen oder der mehreren Bits gleicher Polarität und des End-Bits. Andere impulskodierende Konfigurationen werden in Betracht gezogen; in dieser Ausführungsform muß jedoch jedes Kodierschema mindestens einen Indikator zur Anzeige der Polarität und einen Indikator zur Darstellung der Länge aufweisen.
- Fig. 2A stellt das einfachste der vier komprimierten Impulsformate dar und stellt einen einfachen Impuls von 2 bis zu 31 Bits Länge dar. Da dieses komprimierte Impulsformat nur einen Impuls darstellt, wird es als "einpaketiges" Format bezeichnet. Das Bit-Paar "01" bei 22 ist ein Format-Bezeichner für das "einpaketiges" Format. Jedes der Impulsformate weist ein Bit-Paar zur Bezeichnung des jeweiligen Impulsformates auf. Das Bit 24 ist ein Polaritätsbit "P". Das Polaritätsbit deutet an, ob der Impuls einen Strang von "1'en" oder von "0'en" enthält. Ein Impuls mit einem Strang von "1'en" ist eine Bit-Kette mit "1'en", die mit einer "0" endet, und weist ein Polaritätsbit "1" auf, und ein Impuls mit einem Strang von "0'en" ist eine Bit-Kette von "0'en", die mit einem Bit "1" endet und besitzt ein Polaritätsbit "0". Die fünf Bits bei 26 bilden ein Längenfeld "L&sub1;L&sub1;L&sub1;L&sub1;L&sub1;". Das Längenfeld spezifiziert die Länge des einfachen Impulses und ist mit 2 vorbelegt.
- Das komprimierte Format belegt die Länge vor, da alle Impulse mindestens zwei Bits lang sein müssen (z. B. "01" oder "10"). Ein Längenfeld von "00000" spezifiziert daher eine minimale Länge von zwei Bits.
- Die Fig. 2B stellt ein komprimiertes Impulsformat zur Darstellung von zwei Impulsen dar, wobei beide Impulse eine Länge von zwei bis fünf Bits, d.h. "zweipaketiges" Format, aufweisen. Dieses impulskodierende Format weist das Paar formatbezeichnender Bits 28 "10" auf. Die Polaritätsbits "P&sub1;" bei 30 und "P&sub2;" bei 32 dienen der Anzeige der Polarität der ersten bzw. der zweiten Impulse. Die Längenfelder "L&sub2;, L&sub2;" bei 34 und "L&sub1;, L&sub1;" bei 36 stellen die Länge der zweiten bzw. ersten Impulse dar. Im Fall des "einpaketiges" Formats sind die Bitlängenfelder " L&sub2;, L&sub2;" 34 und "L&sub1;, L&sub1;" 36 mit zwei vorbelegt, so daß ein Längenfeld "00" einen Impuls von zwei Bits anzeigt, während ein Längenfeld von "11" eine Impulslänge von fünf Bits anzeigt. Wie in den Fig. 2A und 2D dargestellt, weisen sowohl die ersten und die zweiten Formate die gleiche Länge (acht Bit) und eine ähnliche Konfiguration auf. Tatsächlich wurden die Längenfelder "L&sub2;, L&sub2;" 34 und "L&sub1;, L&sub1;" 36 strategisch in dem Format angeordnet, so daß das "zweipaketige" Format einfach in ein "zweipaketige" Format umgewandelt werden kann und umgekehrt. Versucht das System beispielsweise ein "zweipaketige" Format mit einem ersten Impuls mit fünf Bits zu füllen und es stellt sich heraus, daß der nächste von dem Systemkodierer 14 entwickelte Impuls eine Impulslänge von mehr als fünf Bits aufweist, dann kann der Kodierer das "zweipaketige" Format in ein "einpaketiges" Format durch Wechsel des Formatbezeichners 28 von "10" auf "01" und durch Anordnen einer "0" in "P&sub2;" 32 und von "0'en" in "L&sub2;, L&sub2;" 34 umwandeln. Das Ergebnis ist ein "einpaketiges" Format, kodiert für einen 5-Bit-Impuls. Die Effizienz dieses Kodierschemas wird nach der detaillierten Diskussion der Flußdiagramme der Fig. 3A, 3B und 3C noch klarer werden.
- Die Fig. 2C stellt ein komprimiertes Impulsformat, genannt das "dreipaketige" Format, zur Darstellung von drei Impulsen von zwei oder drei Bits Länge dar und schließt ein paar von Formatbezeichnungsbits "11" bei 38 ein. Die Polaritätsbits "P&sub1;" bei 40, "P&sub2;" bei 42 und "P&sub3;" bei 44 zeigen die Polarität des ersten, zweiten und dritten Impulses. Die Längenfelder "L&sub1;" bei 50, "L&sub2;" bei 46 und "L&sub3;" bei 48 geben die Länge des ersten, zweiten bzw. dritten Impulses wieder. Um fortzufahren sei die tatsächliche Ordnung der Längenfelder "L&sub2;" bei 46, "L&sub3;" bei 48 und "L&sub1;" bei 50. Es sei noch einmal gesagt, daß im Falle der "einpaketigen" und der "zweipaketiges" Formate die Länge des Bit-Indikators mit 2 vorbelegt ist. Wenn das Längen-Bit "0" ist, dann beträgt die Impulslänge zwei Bits und wenn das Längen-Bit "1" ist, dann beträgt die Impulslänge drei Bits. Das Dreierpaket weist eine den "zwei- und "einpaketiges" Formaten ähnliche Konfiguration auf. Insbesondere ist das "dreipaketiges" Format in der Länge (acht Bits) identisch und ähnlich in der Konfiguration. Tatsächlich kann das "dreipaketiges" Format leicht zwischen den "zwei- und "einpaketiges" Konfigurationen hin und her wechseln. Trifft beispielsweise der Kodierer 14 (Fig. 1A) auf einen Impuls von zwei oder drei Bits Länge, wird er versuchen, ein Dreierpaket zuerst zu füllen, so daß in dem Fall, daß andere Impulse mit Längen von zwei oder drei Bits existieren, diese effizient in das "dreipaketige" Format kodiert werden können. In dem Fall, daß die nächste zu kodierende Impulslänge größer als drei Bits ist, kann das "dreipaketige" Format leicht in eine "zweipaketiges" oder eine "einpaketiges" Konfiguration umgewandelt werden, abhängig von der Länge des nächsten Impulses. Weist beispielsweise der zuerst angetroffene Impuls einer Länge von zwei Bits auf, dann wird das Längenfeld "L&sub1;" bei 50 eine "0" aufweisen, die eine vorgegebene Länge von zwei Bits darstellt. Sei weiterhin angenommen, daß der nächste angetroffene Impuls eine Länge von drei Bits aufweist, dann wird das Längenfeld "L&sub2;" bei 46 eine "1" aufweisen, die den nächsten Impuls mit drei Bits Länge anzeigt. Wenn jedoch die Länge des dritten angetroffenen Impulses größer ist als drei Bits, dann wird der Kodierer 14 das Dreierpaket durch Wechseln des Formatbezeichners 38 in "10" in ein Zweierpaket umwandeln, um so das "zweipaketige" Format anzuzeigen. Ein "dreipaketiges" Format läßt sich somit leicht in ein "zweipaketiges" Format umwandeln, um einen ersten Impuls mit einer Länge von zwei Bits und zweiten Impuls mit einer Länge von drei Bits zu bezeichnen. Auf ähnliche Weise kann das Dreierpaket in ein Einerpaket umgewandelt werden. Die Konfigurationen der ein-, zwei- und dreipaketigen Formate maximieren die Effizienz der Kodierung durch Akkomodation von Impulsen mit Längen zwischen 2 und 33 Bits.
- Die Fig. 2D zeigt ein komprimiertes Impulsformat zur Kodierung von Impulsen mit Bit-Längen von 2 bis zu 2³²-1 Bits, genannt das "erweiterte Element". Darüberhinaus wird dieses komprimierte Impulsformat dazu verwendet, eine Ende-einer-Bit- Kette-Bedingung anzuzeigen oder eine Forsetzung einer Bit-Kette in einem anderen Bit-Kettensegment an einer anderen Stelle innerhalb des Speichers anzuzeigen. Eingeschlossen sind ein Paar von Formatbezeichnungsbits "00" 52 für dieses Impulsformat, ein Polaritätsbit "P&sub1;" bei 54 und Bits "RRR" bei 56 zur Anzeige der Ende-einer-Bit-Kette-Bedingung der Verschiebeeinrichtung (wird weiter diskutiert). Die Längenfelder "L&sub1;L&sub1;L&sub1;L&sub1;L&sub1;L&sub1;L&sub1;L&sub1;" 60, "L&sub2;L&sub2;L&sub2;L&sub2;L&sub2;L&sub2;L&sub2;L&sub2;" 62, "L&sub3;L&sub3;L&sub3;L&sub3;L&sub3;- L&sub3;L&sub3;L&sub3;" 64 und "L&sub4;L&sub4;L&sub4;L&sub4;L&sub4;L&sub4;L&sub4;L&sub4;" 65 sind Acht-Bit-Wörter zur Kodierung der Länge eines speziellen Impulses. Ob alle vier, drei, zwei Längenfelder oder ein Längenfeld zur Darstellung eines Impulses benötigt werden, wird durch ein Bit-Paar "NN" 58 angezeigt. Das Längenfeld "L&sub1;L&sub1;L&sub1;L&sub1;L&sub1;L&sub1;L&sub1;L&sub1;" 60 kodiert Impulse mit Längen von 2 bis 2&sup8;-1 Bits. Wenn die Länge eines Impulses größer ist als 2&sup8;-1 Bits, aber kleiner oder gleich 2¹&sup6;-1 Bits, dann werden die beiden Längenfelder "L&sub1; L&sub1; L&sub1; L&sub1; L&sub1; L&sub1; L&sub1; L&sub1;" 60 und " L&sub2;L&sub2;L&sub2;L&sub2;L&sub2;L&sub2;L&sub2;L&sub2;" 62 zur Kodierung benötigt. Dieses Format der erweiterten Elemente kann Impulse mit Längen von 22 bis 2¹&sup6;-1 Bits kodieren. Es werden drei Längenfelder 60, 62 und 64 benötigt, wenn das Format der erweiterten Elemente einen Impuls der Länge 32 bis 2²&sup4;-1 Bits kodieren soll und es werden alle vier Längenfelder 60, 62, 64 und 65 benötigt, wenn das Format der erweiterten Elemente einen Impuls einer Länge von 32 bis 2³²-1 Bits kodieren soll.
- Die Bits "RRR" 56 enthalten "0'en", wenn das Format der erweiterten Elemente zur Kodierung von Impulsen verwendet wird. Das erste Wort des Formats der erweiterten Elemente wirkt jedoch als ein Ende-einer-Bit-Kette-Indikator, wenn die Bits 56 auf "1" gesetzt werden. Eine Ende-einer-Bit-Kette-Bedingung zeigt an, daß sich keine weiteren Bits in der Bit-Kette befinden. Wenn das erste Wort des erweiterten Elementes das folgende Bit-Muster aufweist, "00111111", dann existiert unter der Annahme, daß die Bits "RRR" 56 auf "1" gesetzt sind, eine Ende-einer-Bit-Kette- Bedingung. Genauso zeigt, wenn das erste Wort des erweiterten Elements eine Bit- Kette "00111110" ist, das erweiterte Element an, daß das Bit-Kettensegment das Ende eines Speicherbehälters erreicht hat und sich das nächste Bit-Kettensegment an einem nächsten logischen Speicherbehälter fortsetzt.
- Bezug nehmend auf die Fig. 3A, 3B und 3C wird nunmehr eine detaillierte Beschreibung der Operationen des Kodierers 14 vorgenommen. Der Kodierer 14 (Fig. 1A) folgt den durch die Routine Kodiere-BIT-KETTE in Block 68 (Fig. 3A) vorgegebenen Schritten, um den Kodierer 14 dahingehend zu steuern, wie er eine eintretende nicht-komprimierte Bit-Kette in eine komprimierte Bit-Kette umwandeln soll. Der Kodierer 14 kodiert die Bit-Kette zu dem Zeitpunkt, zu dem sie über den Bus 13 in die Computerplattform 10 (Fig. 1A) geladen wird. In Block 70 wird der erste Impuls der Bit-Kette erhalten und in Block 42 wird die Länge des Impulses durch Zählen der Anzahl der Bits gleicher Polarität und des End-Bits des Impulses bestimmt. In Block 74 wird die Polarität des Impulses durch Bestimmung der Polarität seines Strangs bestimmt und in Block 76 wird festgestellt, ob die Länge des Impulses größer als fünf Bits ist.
- Angenommen die Länge des erhaltenen Impulses ist größer als fünf Bits, dann wird der Block 80 angesteuert, um zu bestimmen, ob in einem Arbeitsregister 9, welches sich im Kodierer 14 (Fig. 1A) befindet, sich in einem drei- oder zweipaketigen Format befindende Impulse vorliegen. Der Zweck des Arbeitsregisters 9 ist es, zwei- und dreipaketige Formate temporär zu speichern, die teilweise mit einem oder zwei Impulsen gefüllt sind. Angenommen es befinden sich in dem Arbeitsregister 9 Impulse, dann wird im Entscheidungsblock 82 bestimmt, wieviele Impulse im Arbeitsregister 9 vorhanden sind. Wenn die Anzahl der wartenden Impulse zwei beträgt, dann muß die Konfiguration des Formats ein dreipaketiges Format sein. Mit anderen Worten warten zwei Impulse auf einen dritten Impuls, um das dreipaketige Format zu füllen. Da der aktuelle Impuls eine Länge von mehr als fünf Bits aufweist, wird er nicht in die dreipaketige Konfiguration passen, so daß das dreipaketige Format in ein zweipaketiges Format (wie oben diskutiert) in Block 84 umgewandelt wird. Die zwei wartenden Impulse befinden sich nunmehr in einem zweipaketigen Format und der Inhalt des Arbeitsregisters wird im Speicher 16 gespeichert. Die Verarbeitung fährt in Block 86 fort.
- Zurück zu Block 80: Wenn festgestellt wird, daß keine Impulse das Arbeitsregister 9 belegen, dann wird der aktuelle Impuls verarbeitet. In jedem Fall wird der aktuelle Impuls anschließend in Block 86 verarbeitet, um zu bestimmen, ob die aktuelle Impulslänge größer als 31 Bits ist. Angenommen die Länge des aktuellen Impulses sei nicht größer als 31 Bits, dann wird der aktuelle Impuls in Block 90 in einer einpaketigen Konfiguration dargestellt und es wird in Block 94 die Subroutine NIMM NÄCHSTEN IMPULS (Fig. 3C) aufgerufen, um den nächsten Impuls der nicht-komprimierten Bit-Kette aufzufinden. Wenn der Kodierer in Block 86 feststellt, daß der aktuelle Impuls eine Länge mehr als 31 Bits aufweist, dann wandelt der Kodierer in Block 92 den aktuellen Impuls in das Format der erweiterten Elemente um und es wird die NIMM NÄCHSTEN IMPULS Routine (Fig. 3C) in Block 96 aufgerufen, um den nächsten Impuls der nicht-komprimierten Bit-Kette aufzufinden.
- Zurück zum Entscheidungsblock 82: Wenn sich nur ein Impuls im Arbeitsregister befindet, muß der Impuls zwischen zwei und fünf Bits aufweisen und zur Zeit kodiert in einer zwei- oder einer dreipaketigen Konfiguration vorliegen. In jedem Fall werden unter der Annahme, daß die Länge des wartenden Impulses größer ist als fünf Bits, in Block 88 die zwei- oder dreipaketigen Formate in ein einpaketiges Format umgewandelt und der Inhalt des Arbeitsregisters 9 im Speicher 16 gespeichert. Der aktuelle Impuls wird dann im Entscheidungsblock 86 überprüft, um zu bestimmen, ob er eine Länge von mehr als 31 Bits aufweist. Wenn die Länge des aktuellen Impulses nicht größer ist als 31 Bits, dann wird der Block 90 angesteuert und der aktuelle Impuls in ein einpaketiges Format umgewandelt und der aktuell kodierte Impuls wird im Speicher 16 gespeichert. In Block 94 wird die NIMM NÄCHSTEN IMPULS Routine (Fig. 3C) aufgerufen, um den nächsten Impuls der nicht-komprimierten Bit-Kette zu erhalten. Wenn jedoch die aktuelle Impulslänge größer ist als 31 Bits wird der aktuelle Impuls in Block 92 in ein Format der erweiterten Elemente umgewandelt und es wird der aktuell kodierte Impuls im Speicher 16 gespeichert. Im Block 96 wird die NIMM NÄCHSTEN IMPULS Routine (Fig. 3C) aufgerufenv um das nächste Element der nicht-komprimierten Bit-Kette zu erhalten.
- Zurück zu Block 76: Wenn die aktuelle Impulslänge nicht größer ist als fünf Bits, wird der Entscheidungsblock 78 (Fig. 3B) angesteuert, um zu bestimmen, ob weitere zu verarbeitende Impulse im Arbeitsregister 9 (Fig. 1A) warten. Angenommen es befinden sich keine wartenden, zu verarbeitenden Impulse im Arbeitsregister, dann wird der Entscheidungsblock 81 angesteuert, um zu bestimmen, ob die aktuelle Impulslänge größer ist als drei Bits. Wenn die aktuelle Impulslänge nicht größer ist als drei Bits, wird der Block 83 angesteuert, um den aktuellen Impuls in ein dreipaketiges Format zu bringen. In Block 85 wird das Dreierpaket in dem Arbeitsregister 9 (Fig. 1A) gespeichert, so daß das Dreierpaket mit zwei anderen Impulsen mit zwei oder drei Bits gefüllt werden kann, oder solange bis das Dreierpaket in ein Zweierpaket oder ein Einerpaket umgewandelt wird. Dann wird die Routine NIMM NÄCHSTEN IMPULS (Fig. 3C) in Block 87 aufgerufen, um den nächsten Impuls in der nicht-komprimierten Bit-Kette zu erhalten.
- Zurück zu Block 81: Wenn der Kodierer 14 feststellt, daß die Impulslänge größer ist als drei Bits, dann wird der Block 89 angesteuert, um den aktuellen Impuls in ein zweipaketiges Format zu kodieren. Auf dieser Stufe hat der Kodierer bestimmt, daß die aktuelle Impulslänge nicht größer ist als fünf Bits (in Block 76) und das die Impulslänge größer ist als drei Bits (in Block 80).
- Der Impuls muß somit in das zweipaketige Format passen, da er entweder vier oder fünf Bits lang ist. In Block 85 wird das Zweierpaket im Arbeitsregister gespeichert und in Block 87 wird die Routine NIMM NÄCHSTEN IMPULS (Fig. 3C) aufgerufen, um den nächsten Impuls in der nicht-komprimierten Bit-Kette zu erhalten.
- Zurück zu Entscheidungsblock 78: Wenn in dem Arbeitsregister 9 (Fig. 1A) Impulse warten, um verarbeitet zu werden, wird der Entscheidungsblock 91 aufgerufen, um zu bestimmen, wieviele Impulse im Arbeitsregister warten. Wenn nicht mehr als zwei Impulse warten, um verarbeitet zu werden, wird der Entscheidungsblock 93 aufgerufen, um zu bestimmen, ob die aktuelle Impulslänge größer ist als drei Bits. Wenn die aktuelle Impulslänge nicht größer ist als drei Bits, dann wird der Block 97 angesteuert, um die aktuelle Impulslänge zusammen mit den wartenden Impulsen in ein Dreierpaket zu kodieren und das Dreierpaket im Speicher 16 zu speichern. Im Block 98 wird die NIMM NÄCHSTEN IMPULS Routine (Fig. 3C) aufgerufen, um den nächsten Impuls in der nicht-komprimierten Bit-Kette zu erhalten.
- Zurück zu Block 93: Wenn der aktuelle Impuls größer ist als drei Bits, wird der Block 95 angesteuert, um die vorhergehenden Impulse in ein Zweierpaket zu kodieren und das kodierte Zweierpaket im Speicher 16 abzuspeichern. Die Verarbeitung setzt sich in Block 81 fort. Während des Blocks 81, wenn der Kodierer 14 feststellt, daß der aktuelle Impuls größer ist als drei Bits, wird der Block 89 angesteuert, um den aktuellen Impuls in ein zweipaketiges Format zu kodieren. Auf dieser Stufe hat der Kodierer festgestellt, daß der aktuelle Impuls nicht größer ist als fünf Bits (in Block 76) und das der Impuls größer ist als drei Bits (in Block 80). Daher muß der Impuls in das zweipaketige Format passen, da er entweder vier oder fünf Bits lang ist. In Block 85 wird das zweipaketige Format im Arbeitsregister gespeichert und in Block 87 wird die Routine NIMM NÄCHSTEN IMPULS (Fig. 3C) aufgerufen, um den nächsten Impuls in der nicht-komprimierten Bit-Kette zu erhalten.
- Zurück zum Entscheidungsblock 78: Wenn Impulse im Arbeitsregister warten und der Kodierer im Entscheidungsblock 91 feststellt, daß nur ein Impuls im Arbeitsregister 9 wartet (z. B. in einem Zweierpaket), dann wird der Block 100 angesteuert, um zu bestimmen, ob die Länge des aktuellen Impulses größer ist als drei Bits. Wenn die aktuelle Impulslänge größer ist als drei Bits, dann wird Block 102 angesteuert, um den aktuellen Impuls und den wartenden Impuls in ein zweipaketiges Format zu kodieren und die kodierten Impulse im Speicher 16 zu speichern. Im Block 104 wird die NIMM NÄCHSTEN IMPULS Routine (Fig. 3C) aufgerufen, um den nächsten Impuls in der nicht-komprimierten Bit-Kette zu erhalten.
- Zurück zum Entscheidungsblock 100: Wenn die aktuelle Impulslänge kleiner oder gleich drei Bits ist, dann wird der Entscheidungsblock 106 angesteuert, um zu bestimmen, ob die Länge des wartenden Impulses im Arbeitsregister 9 ebenfalls kleiner oder gleich drei Bits ist. Wenn die Länge des wartenden Impulses größer ist als drei Bits, dann wird der Block 102 angesteuert, um den aktuellen Impuls und den wartenden Impuls in einem Zweierpaket anzuordnen und die kodierten Impulse im Speicher 16 abzuspeichern. Im Block 104 wird die NIMM NÄCHSTEN IMPULS Routine aufgerufen, um den nächsten Impuls in der nicht-komprimierten Bit-Kette zu erhalten. Wenn im Entscheidungsblock 106 festgestellt wird, daß die Länge des wartenden Impulses kleiner oder gleich drei Bits ist, dann werden im Block 108 der aktuelle Impuls und der wartende Impuls in das bereits im Arbeitsregister 9 existierende dreipaketige Format plaziert. In Block 110 wird das den aktuellen Impuls und den wartenden Impuls enthaltende dreipaketige Format im Arbeitsregister 9 (Fig. 1A) gespeichert und im Block 112 wird die NIMM NÄCHSTEN IMPULS Routine aufgerufen, um den nächsten Impuls in der nicht-komprimierten Bit-Kette zu erhalten.
- Die Fig. 3C ist ein detailliertes Flußdiagramm, welches die NIMM NÄCHSTEN IMPULS Routine darstellt. Der Kodierer 14 ruft diese Routine im Block 11 3 (Fig. 3C) auf und im Block 114 wird die nächste Bit-Gruppe der nicht-komprimierten Bit- Kette erhalten. Es wird der Entscheidungsblock 115 angesteuert, um zu bestimmen, ob in der Bit-Kette Bits verblieben sind, indem der Kodierer 14 feststellt, ob eine Ende-einer-Bit-Kette-Bedingung vorliegt. Wenn eine Ende-einer-Bit-Kette- Bedingung nicht erreicht wird, dann kehrt die Verarbeitung zur Kodiere BIT-KETTE Routine (Fig. 3A) in Block 72 zurück. Wenn jedoch eine Ende-einer-Bit-Kette- Bedingung erreicht wird, wird der Block 119 angesteuert, um zu bestimmen, ob verbleibende Bits in der nicht-komprimierten Bit-Kette einen Strang von "0'en" oder einen Strang von "1'en" bilden oder keine Bits sind. Wenn keine Bits in der Bit- Kette verblieben sind oder die Bits "0" sind, wird der Block 116 angesteuert, um den verbleibenden Impuls zur Speicherung in das Arbeitsregister 9 auszustoßen und der Block 125 wird angesteuert um ein Element zu kodieren, welches eine Ende-einer-Bit-Kette-Bedingung signalisiert. Im Block 118 wird eine EXIT Routine aufgerufen, welches die Verarbeitung zur ursprünglichen Aufruf-Routine der Kodiere BIT-KETTE Routine (Fig. 3A) zurückführt.
- Unter der Annahme, daß im Entscheidungsblock 119 festgestellt wird, daß sich ein Strang von "0'en" in der Bit-Kette befindet, wird der Block 116 angesteuert, um das Arbeitsregister auszulesen und es wird der Block 125 angesteuert, um das erweiterte Element zu kodieren, um eine Ende-einer-Bit-Kette-Bedingung zu signalisieren. Der Block 118 wird aufgerufen, um den Kodierer in die Aufruf-Routine überzuleiten. Diese durch den Kodierer in Block 125 ausgeführte Prozedur verkürzt wirksam den Strang von den "0'en" der Bit-Kette, indem sie die Bits nicht in eines der komprimierten Impulsformate kodiert.
- Andererseits wird der Block 121 angesteuert, um eine "0" an den Strang der "1'en" anzuhängen, wenn das (die) verbleibende(n) Bit(s) ein Strang aus einer "1" ist (ein Strang von "1'en" sind). Ein "1"-Bit deutet an, daß an diesem speziellen Bit- Ort Daten existieren und somit erhalten werden müssen. Im wesentlichen konvertiert der Kodierer im Block 121 den Strang von "1'en" in einen Impuls mit der Polarität "1", so daß er auf konventionelle Weise in das einpaketige Format oder das Format der erweiterten Elemente umgewandelt werden kann. Die Hinzufügung einer "0" zu dem Strang von "1'en" fügt dem Strang von "1'en" aus den oben genannten Gründen keine zusätzliche Information hinzu und er wird keine zusätzlichen Bits zur Kodierung benötigen. Die Verarbeitung kehrt zur Fig. 3(A) zurück, um den neuen Impuls in ein einpaketiges Format oder ein Format der erweiterten Elemente zu kodieren, abhängig von der Größe des Impulses (d.h. Impulse von zwei bis 31 Bits Länge werden in ein einpaketiges und Impulse von 32 bis 2³²-1 Bits werden in ein erweitertes Element kodiert).
- Sobald die gesamte Bit-Kette in das kodierte Format komprimiert ist, wird sie im Speicher 16 gespeichert, in dem sie bis zur weiteren Verarbeitung verbleibt.
- Bezug nehmend auf die Fig. 2A, 2B, 2C, 2D; 3A, 3B, 3C; 4A, 4B; 5A und 5B wird ein detailliertes Beispiel zur Umwandlung einer nicht-komprimierten Bit-Kette in eine komprimierte Bit-Kette diskutiert. Bezug nehmend auf die Fig. 4A wird eine hypothetische nicht-komprimierte Bit-Kette 120 gezeigt. Nachdem die Komprimierungsverarbeitung durch den Kodierer 14 ausgeführt wurde, wird eine komprimierte Bit- Kette erzeugt, wie bei 122 in Fig. 4B gezeigt. Dieses Beispiel wurde gebildet, um jedes der komprimierten Impulsformate, wie sie in den Fig. 2A, 2B, 2C und 2D gezeigt sind und jeden der Kodierprozesse, wie sie in den Fig. 3A, 3B und 3C gezeigt sind, hervorzuheben. In diesem Beispiel ergibt die Komprimierung der nichtkomprimierten Bit-Kette 120 (Fig. 4A) in die komprimierte Bit-Kette 122 (Fig. 4B) eine 25%-Reduzierung der Anzahl der Bits. Insbesondere weist die nicht-komprimierte Bit-Kette 107 Bits auf und die sich ergebende komprimierte Bit-Kette 80 Bits. Typischerweise sind in vielen Datenbank-Voreinstellungen die Stranglängen in einer Bit-Kette wesentlich länger, so daß sich die Wirksamkeit, eine nicht-komprimierte Bit-Kette zu komprimieren, wesentlich erhöht.
- Die nicht-komprimierte Bit-Kette 120 (Fig. 4A) wird dem externen Gerät 12 (Fig. 1A) entnommen und zum Kodierer 14 (Fig. 1A) gesandt, wo sie in eine komprimierte Bit-Kette 122 umgewandelt wird. Die mit der Verarbeitung des Kodierers 14 verbundenen Aktivitäten sind in der Ergebnistabelle der Fig. 5A und 5B dargestellt. Die Ergebnistabelle der Fig. 5A und 5B ist in vier Spalten eingeteilt, eine für die Impuispolarität, eine zweite für die Impulslänge, eine dritte für den Inhalt des Arbeitsregisters 9 (Fig. 1A) und eine vierte für das sich ergebende komprimierte Impulsformat. Jede Zeile zeigt eine Veränderung im Zustand einer oder mehrerer der Spaltenüberschriften.
- Die nicht-komprimierte Bit-Kette 120, wie in Fig. 4A gezeigt, ist in einer Sequenz von Impulsen 124, 130, 136, 144, 156, 162, 170, 178, 184, 190, 198, 204 und 216 teilbar. Es wird deutlich, daß jeder Impuls eines oder mehrere Bits gleicher Polarität gefolgt von einem Bit entgegengesetzter Polarität aufweist. Die sich ergebende komprimierte Bit-Kette 122, wie in Fig. 4B gezeigt, enthält eine Serie von Acht-Bit (oder Vielfache von Acht-Bit)-Wörtern in den einpaketigen, zweipaketigen, dreipaketigen Formaten und den Formaten erweiterter Länge, wie bei 142, 150, 154, 168, 176, 196, 206, 210 und 214 angedeutet. Die Fig. 5A und 5B fassen die Schritte zusammen, die benötigt werden, um jedes der komprimierten Formate und der Fig. 4B aus der Polarität und der Länge der Impulse der Bit-Kette der Fig. 4A gemäß den in den Fig. 3A-C gezeigten Schritten zu erzeugen.
- Sobald der Kodierer 14 die nicht-komprimierte Bit-Kette 120 (Fig. 4A) in die komprimierte Bit-Kette 122 (Fig. 4B), siehe die Fig. 1A, 4A und 4B, umwandelt, wird die komprimierte Bit-Kette 122 in dem zweiten Speicher 16 der Computerplattform 10 (Fig. 1A) gespeichert. Die in dem zweiten Speicher 16 gespeicherte Bit-Kette kann für komprimierte Daten vielerlei Typen stehen. Diese Information kann manipuliert werden, indem Boolesche Operationen direkt mit den Bit-Ketten ausgeführt werden, die die in dem zweiten Speicher 16 gespeicherten Daten darstellen. Der verbleibende Abschnitt dieser Offenbarung konzentriert sich auf den einzigartigen Prozeß der Ausfihrung Boolescher Operationen in der BLU 20 mit den in dem zweiten Speicher 16 gespeicherten komprimierten Bit-Ketten. In dem man in der Lage ist mit komprimierten Bit-Ketten Boolesche Operationen auszuführen, werden erhebliche Einsparungen in der Zeit und im Speicherplatz erreicht. Eine Einsparung an Zeit tritt auf, da die kodierten Bit-Ketten bei Ausführung der Booleschen Operationen nicht in ihre ursprüngliche Form dekomprimiert werden müssen. Darüber hinaus werden die Booleschen Operationen mit den Bit-Ketten durch den Gebrauch einzigartiger Hardware und/oder Software effizienter ausgeführt. Einsparungen an Speicherplatz treten auf, da die Bit-Ketten, welche sich aus den Booleschen Operationen ergeben, in einer komprimierten Form erhalten werden.
- Es sollen nur die primären Booleschen Operationen UND, ODER und EXKLUSIVES ODER im Detail diskutiert werden. Obwohl sich die Diskussion auf die primären Operatoren beschränkt, wird es ins Auge gefaßt, daß alle 16 Booleschen Operationen innerhalb des Bereichs der beiliegenden Ansprüche durch die BLU 20 implementiert werden können. Die Koordination der BLU 20 (Fig. 1A) mit anderen Komponenten der Computerplattform 10 wird durch die vom Systemkoordinator (31, Fig. 1A) ausgeführte Routine VERARBEITE BOOLESCHE OPERATIONEN (Fig. 6) ausgeführt. Der Systemkoordinator 31 (Fig. 1A) beaufsichtigt die Verarbeitung der Booleschen Operationen mit zwei Bit-Ketten und beaufsichtigt die kanonische Verarbeitung der durch die BLU 20 erzeugten Zwischenergebnisse. Es existieren zwei Ausführungsformen der BLU 20: die erste ist eine Boolesche Hardwarekonfiguration (Fig. 7) für einen speziellen Zweck und die zweite ist eine Boolesche Softwarekonfiguration, von welcher ein Teil durch eine Indextabelle (Fig. 10) implementiert werden kann.
- Gemäß Fig. 1A werden die Bit-Ketten dem zweiten Speicher 16 entnommen und über den Bus 17 zum Pufferspeic her 18 gesandt, wenn eine Anfrage zur Ausführung einer Booleschen Operation mit zwei speziellen Bit-Ketten getätigt wird. Die Bit-Ketten verbleiben in ihrer kodierten, komprimierten Form und werden auf Anfrage durch die BLU 20 über den Bus 19 in die BLU geladen. Die BLU 20 führt die spezifizierte, spezielle Boolesche Operation aus und die Zwischenergebnisse werden im kanonischen Speicher 25 (Fig. 1A) tabelliert und gepuffert (gespeichert). Wenn die Verarbeitung der Bit-Ketten vollendet ist, wird die resultierende, komprimierte Bit-Kette über den Bus 23 zum Pufferspeicher 18 gesandt, wo sie solange verbleibt, bis sie zum zweiten Speicher 16 ausgegeben werden kann. Dieser Prozeß des Bewegens von Daten über die Busse zu den verschiedenen Komponenten der Computerplattform 10 (Fig. 1A) wird durch den Systemkoordinator (31, Fig. 1A) kontrolliert.
- Die Fig. 6 ist ein detailliertes Flußdiagramm der VERARBEITE BOOLESCHE OPERATION-Routine, welche durch den Systemkoordinator 31 (Fig. 1A) ausgeführt wird. Diese Routine initiiert die Boolesche Hardware-oder Software-Ausführungsformen der BLU 20 (Fig. 1A), wie in den Fig. 7 und 10 gezeigt, und die Routine initiiert den kanonischen Prozessor 25 (Fig. 1A). Eine detailliertere Diskussion des kanonischen Prozessors (25, Fig. 1A) wird im Abschnitt D präsentiert. Im Block 222 (Fig. 6) wird ein erster Impuls A' aus einer sich im Pufferspeic her 18 (Fig. 1A) befindenden ersten Bit-Kette A erhalten. Genauso wird in dem Block 224 der erste Impuls B' der zweiten Bit-Kette B aus dem Pufferspeicher 18 (Fig. 1A) erhalten. Die minimale Länge beider Impulse A' bzw. B' wird in Block 226 bestimmt. Die minimale Länge ist die Länge einer durch die Verarbeitung des Impulses A' mit dem Impuls B' erhaltenen Zwischen-Bit-Kette. In Block 228 bestimmt der Kodierer 14, ob die Länge des Impulses A' kleiner als, größer als der Impuls B' ist oder gleich dem Impuls B' ist und im Block 230 bestimmt die Boolesche Hardware für den speziellen Zweck (Fig. 7) oder die Boolesche Indextabelle (Fig. 10) die Eigenschaften der Zwischen-Bit-Kette; ob die Zwischen-Bit-Kette ein Impuls oder ein Strang mit der Polarität "0 " oder "1" ist. Aufgrund der einzigartigen Struktur der komprimierten Impulsformate (Fig. 2A, 2B, 2C und 2D) können die Booleschen Operationen sehr effizient ausgeführt werden. Diese Eigenschaft der vorliegenden Erfindung wird noch detaillierter diskutiert werden.
- Die Bestimmung der Zwischen-Bit-Kette durch die BLU in dem Block 230 wird dann dem kanonischen Prozessor 25 (Fig. 1A) über die Subroutine ERZEUGE RESULTIE- RENDE BIT-KETTE in Block 232 (Fig. 11A) eingegeben. Diese Subroutine erzeugt eine von 8 verschiedenen Zustandsvariablen (Fig. 11B), welche in einer zweiten lndextabelle (Fig. 12A) indiziert sind und in der Fig. 12B numeriert sind, um die Zwischen-Bit-Ketten-Ergebnisse in einen oder mehrere Impulse umzuwandeln. Eine detaillierte Diskussion dieser Subroutinen wird ebenfalls vorgestellt.
- Im Entscheidungsblock 234 wird bestimmt, ob eine Ende-einer-Bit-Kette-Bedingung in der Bit-Kette A und/oder der Bit-Kette B aufgetreten ist. Eine Ende-einer-Bit- Kette-Bedingung zeigt an, daß sich in der von der BLU zu verarbeitenden Bit-Kette keine weiteren Impulse befinden. Wenn eine Ende-einer-Bit-Kette-Bedingung in einer der Bit-Ketten aufgetreten ist, dann wird während des Blocks 236 der nächste Impuls aus der Bit-Kette erhalten, welche keine Ende-einer-Bit-Kette-Bedingung aufweist. Die Verarbeitung kehrt dann zurück zur ERZEUGE RESULTIERENDE BIT- KETTE-Routine (Fig. 11 A) im Block 232, welche den nächsten, aus dem Block 236 erhaltenen Impuls verarbeitet. Die Blocks 236, 232 und 234 werden solange angesteuert, bis sich keine weiteren Impulse in der Bit-Kette befinden. Unter der Annahme, daß keine der Bit-Ketten eine Ende-einer-Bit-Kette-Bedingung aufweist, wird der Block 235 angesteuert, um die Länge des Impulses A' und die Länge des Impulses B' um die in dem Block 226 bestimmte minimale Länge zu reduzieren. Dieser Schritt trägt den Bits Rechnung, welche durch die BLU in dem Block 230 verarbeitet wurden.
- Im Block 240 wird bestimmt, ob die Länge des Impulses A' auf "0" reduziert wurde. Wenn die Länge des Impulses A' auf "0" reduziert wurde, dann wird in dem Block 242 der nächste Impuls A' aus der Bit-Kette A erhalten. Unter der Annahme, daß die Länge von A' nicht auf "0" reduziert wurde, oder wenn der Block 242 die Verarbeitung beendet hat, dann wird der Entscheidungsblock 244 angerufen, um zu bestimmen, ob der Impuls B' auf "0" reduziert wurde. Wenn der Impuls B' auf "0" reduziert wurde, dann wird der Block 246 angesteuert, um den nächsten Impuls B' aus der Bit-Kette B zu erhalten. Wenn der Impuls B' nicht auf "0" reduziert wurde, oder wenn der Block 246 die Verarbeitung beendet hat, dann wird der Block 248 angesteuert, um zu bestimmen, ob eine Ende-einer-Bit-Kette-Bedingung in der Bit-Kette A und/oder der Bit-Kette B erreicht wurde. Dieser Schritt wurde ausgeführt, um den Zustand der Bit-Ketten nach der Reduzierung um die minimale Länge der beiden Impulse A' und B' in dem Block 235 zu analysieren. Unter der Annahme, daß keine der Bit-Ketten eine Ende-einer-Bit-Kette-Bedingung erreicht hat, wird die Verarbeitung in den Block 226 der Fig. 6 zurückkehren, um die Verarbeitung des (der) neu erhaltenen Impulses (Impulse) sowohl im Block 242 als auch im Block 246 fortzusetzen, wenn notwendig unter Beibehaltung des anderen Impulses.
- Zurück zum Entscheidungsblock 248: Wenn eine Ende-einer-Bit-Kette-Bedingung in der Bit-Kette A oder der Bit-Kette B oder in beiden erreicht wurde, dann wird der Block 230 angesteuert, um zu bestimmen, wie auf möglichst effiziente Weise die momentane Boolesche Operation mit der die verbleibenden Impulse enthaltenen Bit- Kette ausgeführt werden kann. Genauer gesagt gibt der Block 230 ein Signal aus, welches der ERZEUGE RESULTIERENDE BIT-KETTE-Routine (Fig. 11A) zeigt, wie auf möglichst effiziente Weise die resultierende Bit-Kette ohne tatsächliche Ausführung der Booleschen Operation erzeugt werden kann. Tatsächlich endet die Verarbeitung in der ERZEUGE RESULTIERENDE BIT-KETTE-Routine (Fig. 11A), wenn die Ende-einer-Bit-Kette-Bedingung in beiden Bit-Ketten erreicht wurde, da keine weiteren Impulse existieren, um die Boolesche Operation mit ihnen auszuführen. Wenn jedoch in einer der Bit-Ketten verbleibende Impulse existieren werden die Blocks 232, 234 und 236 ausgeführt, um eine resultierende Bit-Kette zu erzeugen oder die Verarbeitung mündet automatisch in der ERZEUGE RESULTIERENDE BIT- KETTE-Routine (Fig. 11A), abhängig von der Booleschen Operation. (Eine detaillier tere Diskussion wird im Zusammenhang mit den Fig. 7 und 10 präsentiert.)
- Zurück zu den Blocks 226, 228 und 230 der Fig. 6: Eine detailliertere Beschreibung der Vorrichtung und des Verfahrens zur Bestimmung einer Zwischen-Bit-Kette wird nunmehr diskutiert. Wie oben festgestellt, bestimmt der Block 226 die minimale Länge zweier aus den Bit-Ketten aus dem Pufferspeicher 18 (Fig. 1A) erhaltener Impulse. Die minimale Länge wird immer die Länge der Zwischen-Bit-Kette sein, da nur die Bits des Impulses minimaler Länge mit den entsprechenden Bits des längeren Impulses bei der Bestimmung der Zwischen-Bit-Kette verarbeitet werden. Daher wird der längere Impuls immer verbleibende, nicht verarbeitete Bits aufweisen. Darüber hinaus werden die in dem längeren Impuls verarbeiteten Bits immer ein Strang von "1'en" oder ein Strang von "0'en" sein. Wenn die beiden Impulse A' und B' die gleiche Länge aufweisen, dann wird die Länge der Zwischen-Bit-Kette die Länge des Impulses A' bzw. des Impulses B' sein. Der Block 228 bestimmt, ob die Länge des Impulses A' kleiner, gleich oder größer ist als die Länge des Impulses B'. Diese in dem Block 228 bestimmte Information wird durch die Hardware- oder Softwareimplementierungen in den Fig. 7 und 10 während des Blocks 230 verwendet. Mit der in dem Block 226 berechneten Länge der Zwischen-Bit-Kette müssen nur die Eigenschaften der Zwischen-Bit-Kette bestimmt werden, das heißt, ob die Zwischen-Bit-Kette ein Strang von "1'en" oder von "0'en" ist oder ein Impuls mit einer Polarität von "1" oder "0" ist. Der Block 230 (Hardware- oder Software-Ausführungsformen) berechnet effizient diese Eigenschaften der Zwischen-Bit-Kette.
- Die bevorzugte Ausführungsform der Booleschen Hardware zur Berechnung der Eigenschaften einer Zwischen-Bit-Kette ist in dem schematischen Blockdiagramm der Fig. 7 dargestellt. Die Fig. 7 zeigt den Fluß der Information. Die aktuellen Eingänge und Ausgänge für jede Funktion sind in den Fig. 9A, 9B, 9C, 9D, 9E und 9F dargestellt. Eine detaillierte Diskussion ihrer Implementierung wird nunmehr präsentiert. Die Blocks 256, 258, 260, 262 und 264 enthalten anpassbare Chips mit logischen Schaltungen für spezielle Zwecke (z.B. XILINX-Chips) und jeder führt einen bestimmten Schritt bei der Ausführung der Booleschen Operation aus. Genauer gesagt ist es der Zweck der Hardware-Funktion F4 264, die Polarität der Zwischen-Bit-Kette zu bestimmen. Die Hardware-Funktionen F1 256 und F2 258 dienen der Bestimmung des Typus der Zwischen-Bit-Kette (d.h., ob die Zwischen- Bit-Kette ein Strang oder ein Impuls ist), wenn die Impulse A' und B' ungleich lang sind. Die Hardware-Funktion F3 262 bestimmt den Typ der Zwischen-Bit-Kette, wenn die Impulse A' und B' gleich lang sind. Schließlich bestimmt die Hardware- Funktion F6 265, ob eine Ende-einer-Bit-Kette-Bedingung in einer der Bit-Ketten A und/oder B vorliegt.
- Wie gesagt, wird die Funktion F1 256 ausgeführt, wenn die Längen der Impulse A' und B' ungleich sind. Der Zweck der Funktion F1 256 ist es, die Polarität des längeren Impulses zu bestimmen. Die Eingänge nach F1 256 sind die Polarität des Impulses A', genannt "A' (p)", die Polarität des Impulses B', genannt "B' (P)" und die Bedingung "LT", die andeutet, ob die Länge von A' kleiner als die Länge von B', wie sie in dem Block 226 (Fig. 6) bestimmt wurde, ist. Die Funktion F1 gibt die Polarität des längeren Impulses aus, entweder eine "0" für "0"-Polarität oder eine "1" für "1"-Polarität. In der Fig. 9A ist eine die verschiedenen Eingänge und Ergebnisse der Hardware-Funktion F1 wiedergebende Wahrheitstabelle dargestellt. Die oberste Zeile der Wahrheitstabelle zeigt den LT-Eingang; ob die Länge des Impulses A' kleiner ist oder größer ist als die Länge des Impulses B'. Wenn LT "0" ist, dann ist die Länge des Impulses A' größer als der Impuls B' und wenn LT "1" ist, dann ist die Länge des Impulses A' kleiner als der Impuls B'. Genauer gesagt, wenn die Länge des Impulses A' kleiner ist als B', dann gibt die Ergebnisspalte unter "1" den Ausgang von F1 wieder. Genauso gibt die Ergebnisspalte unter "0" den Ausgang der Funktion F1 wieder, wenn die Länge des Impulses A' größer ist als B'. Die linke Seite der Wahrheitstabelle stellt die Polaritätseingänge der Impulse A' und B' dar. Ist beispielsweise die Länge des Impulses A' kleiner als der Impuls B' und die Polarität von A' und B' ist jeweils "0", dann ist die Polarität des längeren Impulses "0" und daher ist das Ergebnis von F1 "0".
- Wenn die von der Booleschen Operation zu verarbeitenden Impulse A' und B' ungleich lang sind, wird ein Strang (d.h. ein Abschnitt des längeren Impulses) immer mit einem kürzeren Impuls verarbeitet. Aus diesem Grund können die Ergebnisse einer Verarbeitung eines Strangs mit der Polarität "0 " oder "1" mit einem Impuls mit der Polarität ("0" oder "1") durch eine Hardware-Funktion modelliert werden und in einer Tabellendarstellung in Fig. 8A dargestellt werden. Insbesondere stellt die Fig. 8A die Funktion F2 dar und zeigt, daß, wenn die Polarität des Strangs oder der Ausgang von F1 bekannt ist und die spezielle, auszuführende Boolesche Operation bekannt ist, die Eigenschaften der Zwischen-Bit-Kette ohne Berechnung der Polarität des Impulse bestimmt werden können.
- Insbesondere ist die Tabelle der Fig. 8A in drei verschiedene Spalten unterteilt. Die erste Spalte 251 auf der linken Seite bezeichnet die von der BLU 20 auszuführende Boolesche Operation. Die zweite Spalte 253 bezeichnet die Eingänge und Ausgänge nach F2 258 (Fig. 7) und die dritte Spalte 255 zeigt die Polarität des Eingangsimpulses, die Polarität des Eingangsstranges und die Polarität des Zwischen- Bit-Ketten-Ergebnisses. Die Tabelle ist darüber hinaus in drei Abschnitte 266, 267 und 268 unterteilt, wobei jeder einer anderen Booleschen Operation entspricht.
- Im Abschnitt 266 sind die Ergebnisse der Ausführung einer UND-Operation dargestellt. Es ist eine Eigenschaft der UND-Operation, daß, wenn ein Impuls mit einer Polarität "0" oder "1" mit einem Strang von "0'en" verarbeitet wird, die aus dieser Operation erhaltene Zwischen-Bit-Kette immer ein Strang von "0'en" ist, unabhängig von der Polarität des Impulses. Dies tritt auf, da sich immer ein Strang von "0'en" ergibt, wenn ein Strang von "0'en" mit UND mit einem Impuls mit der Polarität von "1" oder "0" verarbeitet wird. Genauso ergibt ein Strang von "1'en ", durch UND mit einem Impuls mit einer Polarität von "0" oder "1" verknüpft, immer einen Impuls. Daher können, wenn die Polarität der längeren Bit-Kette (F1) und die durch die BLU auszuführende Operation bekannt sind, die Eigenschaften der Zwischen-Bit-Kette ohne Berechnung der Länge des Strangs (d.h. eines Abschnittes des längeren Impulses) oder des kürzeren Impulses und ohne Berechnung der Polarität des Impulses (d.h. des kürzeren Impulses) bestimmt werden. Wenn der durch F2 bestimmte Typ (Strang oder Impuls) ein Strang ist, gibt die F2-Funktion eine "0" aus und wenn der durch F2 bestimmte Typ ein Impuls ist, dann gibt die F2-Funktion eine "1" aus. Daher kann eine Wahrheitstabellendarstellung der Funktion F2 gemäß Fig. 9B geschaffen werden. Wenn die Boolesche Operation eine UND-Operation ist und die längere Bit-Kette ein Strang mit einer Polarität von "0" ist (z.B. der Ausgang F1), dann ist der Ausgang von F2 eine "0" oder ein Strang. Die Wahrheitstabelle der Fig. 9B, die die Ergebnisse der F2-Funktion 258 (Fig. 7) darstellt, zeigt eine interessante Eigenschaft zur Bestimmung der Eigenschaften der Zwischen-Bit-Kette. Wenn die UND-Operation ausgeführt wird, dann ist der Ausgang der F2-Funktion der Ausgang der F1-Funktion. Darüber hinaus ist der Ausgang der F2-Funktion einfach das Komplement des Ausgangs der F1-Funktion, wenn die Boolesche Operation eine ODER-Operation ist. Schließlich gibt die F2- Funktion automatisch eine "0" ohne Interpretation der Eingangsfunktion F1 aus, wenn die Operation EXKLUSIVES ODER ist. Daher muß die Hardware-Ausführungsform nur die folgenden Funktionen ausführen, wenn die Impulse ungleich lang sind:
- F2 = F1 (UND-Operation);
- F2 = NICHT F1 (ODER-Operation);
- F2 = "0" (EXKLUSIVES ODER-Operation); wobei F1 die Polarität des längeren Impulses ist.
- Aus diesen Beobachtungen werden nun drei formale Regeln zur Bestimmung einer Zwischen-Bit-Kette entwickelt, wenn der Impuls A' eine andere Länge als der Impuls B' aufweist. Regel I: Wenn die Boolesche Operation eine UND-Operation ist, dann deutet die Polarität des längeren Impulses an, ob die Zwischen-Bit-Kette ein Strang oder ein Impuls ist. Insbesondere ist die Zwischen-Bit-Kette immer ein Impuls, wenn die Polarität des längeren Impulses "1" ist und die Boolesche Operation UND ist. Genauso ist die Zwischen-Bit-Kette immer ein Strang, wenn die Polarität der längeren Bit-Kette "0" ist und die Boolesche Operation eine UND- Operation ist. Regel II: Wenn die Boolesche Operation eine ODER-Operation ist, dann deutet das Komplement der Polarität der längeren Bit-Kette an, ob die Zwischen-Bit-Kette ein Strang oder ein Impuls ist. Insbesondere ist die Zwischen-Bit- Kette immer ein Strang, wenn die Polarität der längeren Bit-Kette "1" ist und die Boolesche Operation ODER ist. Genauso ist die Zwischen-Bit-Kette immer ein Impuls, wenn die Polarität der längeren Bit-Kette "0" ist und die Boolesche Operation ODER ist. Schließlich Regel III: Wenn die Boolesche Operation eine EXKLUSI- VES ODER Operation ist, dann ist die Zwischen-Bit-Kette immer ein Impuls, unabhängig von der Polarität der längeren und der kürzeren Bit-Ketten.
- Sobald die Eigenschaft der Zwischen-Bit-Kette bestimmt ist, wird die Polarität der Zwischen-Bit-Kette gleichzeitig durch die Funktion F4 264 (Fig. 7) bestimmt. F4 führt einfach die spezielle Boolesche Operation auf der Polarität des Impulses A' mit der Polarität des Impulses B' aus. Unabhängig davon, ob der Impuls A' länger oder kürzer ist, als der Impuls B', wird die Polarität der sich ergebenden Zwischen- Bit-Kette immer das Ergebnis einer UND-Operation mit den Polaritäten der beiden Impulse sein. Das gleiche Prinzip ist richtig für ODER und EXKLUSIVES ODER mit Impulsen gleicher oder ungleicher Länge.
- In Fig. 9C ist eine Darstellung einer Wahrheitstabelle der Ergebnisse für F4 gezeigt. Die Eingänge nach F4 sind die Booleschen Operationen (d.h. UND, ODER und EXKLUSIVES ODER) und die Polarität ("0" oder "1") der Impulse A' und B' (siehe auch Fig. 7). Wenn die Polaritäten von A' (P) und B' (P) "0" sind und die Boolesche Operation ist UND, dann sind die Ergebnisse der UND-Operation von "0" mit "0" "0", wie in der Abbildung der Fig. 9C gezeigt. Die Hardwareimplementierung folgt logisch der Wahrheitstabelle der Fig. 9C.
- Bis zu diesem Punkt beinhaltet die Diskussion bezüglich der Booleschen Hardware Impulse A' und B' ungleicher Länge. Nunmehr wird eine detaillierte Diskussion zur Verarbeitung von gleichlangen Impulsen A' und B' präsentiert. Insbesondere bestimmt die Funktion F3 262 der Fig. 7 das Zwischenergebnis, wenn die Impulse A' und B' gleich sind. Die Fig. 8B ist eine Tabelle, welche die Bit-Ketten-Zwischenergebnisse der Funktion F3 darstellt. Ähnlich wie die Fig. 8A ist die Fig. 8B in drei Spalten unterteilt. Die erste Spalte 271 auf der linken Seite der Tabelle bezeichnet die Booleschen Operationen, die durch die F3-Funktion (262, Fig. 7) auszuführen sind. Die nächste Spalte 273 bezeichnet die Impulse A' und B' und die Bit-Ketten- Zwischenergebnisse der F3-Funktion. Die Spalte 275 bezeichnet die Polaritäten der Eingangsimpulse und die Polaritäten der sich ergebenen Bit-Ketten. Die Fig. 8B zeigt, daß, wenn die Impulse von gleicher Länge sind, die Eigenschaften der Zwischen-Bit-Kette mit alleiniger Kenntnis der Polaritäten der Impulse A' und B' berechnet werden können. Ist beispielsweise die Boolesche Operation UND und die Impulse A' und B' weisen die Polarität "0 " auf, dann ist die sich ergebene Bit-Kette ein Impuls mit der Polarität "0", wie in der Tabelle der Fig. 8B dargestellt. Diese Ergebnisse ergeben sich auflogische Art und Weise, da die UND-Operation mit Impulsen, welche die gleiche Länge aufweisen und ein "1"-Bit an derselben Stelle aufweisen, die gleiche Bit-Kette erzeugen. Genauso ist die Zwischen-Bit-Kette ein Strang von "0'en", wenn der Impuls A' eine Polarität von "0" und der Impuls B' eine Polarität von "1" aufweist und die Boolesche Operation UND ist.
- Die in Fig. 8B dargestellten Ergebnisse legen den folgenden Satz von Regeln nahe: Regel I: Wenn die Boolesche Operation entweder eine UND- oder eine ODER-Operation ist und wenn die Polarität der Impulse A' und B' unterschiedlich ist, dann ist die Zwischen-Bit-Kette ein Strang. Diese Eigenschaft ist im Feld 276 der Fig. 8B dargestellt. Regel II: Wenn die Boolesche Operation entweder eine UND- oder eine ODER-Operation ist und wenn die Polarität der Impulse A' und B' die gleiche ist, dann ist die Zwischen-Bit-Kette ein wie im Feld 278 der Fig. 8B dargestellter Impuls. Schließlich: Wenn die Boolesche Operation ein EXKLUSIVES ODER ist, dann kommt es nicht auf die Polarität der Impulse A' und B' an, das Ergebnis wird immer ein Strang sein, wie im Feld 280 (Fig. 8B) gezeigt.
- Die Ergebnisse der Funktion F3 können in einer Wahrheitstabelle gemäß Fig. 9D dargestellt werden. Wenn das Ergebnis von F3 "0" ist, dann ist das Ergebnis der Booleschen Operation ein Strang und wenn das Ergebnis "1" ist, dann ist das Ergebnis der Booleschen Operation ein Impuls. Die oberste Reihe der Wahrheits tabelle stellt die Polaritäten von sowohl A' als auch B' dar und die Spalte auf der linken Seite stellt die spezielle Boolesche Operation dar, die auszuführen ist.
- Immer wenn die BLU 20 eine Operation mit zwei Impulsen ausführt, werden die Operationen in F1, F2, F3 und F4 gleichzeitig ausgeführt. Dies tritt auf, da die Hardware Ergebnisse sehr effizient gleichzeitig berechnen kann. Daher wird, abhängig davon, ob die Bit-Ketten gleich oder ungleich sind, bestimmt, ob die Ausgänge von F2 oder von F3 die typische Bestimmung der Zwischen-Bit-Kette bilden. Aus diesem Grund berechnet die Funktion F5, ob die Impulse gleich oder ungleich lang sind und wählt in Übereinstimmung mit dieser Bestimmung aus, welche Ausgänge, F2 oder F3, die Eigenschaften der Zwischen-Bit-Kette zeigen. Ein Ausgang von "0" bedeutet, daß die Zwischen-Bit-Kette ein Strang ist und ein Ausgang von "1" bedeutet, daß der Ausgang ein Impuls ist (siehe Fig. 9(F)). Die F4-Funktion bestimmt jedoch unabhängig von der durch F5 gewählten Funktion die Polarität der Zwischen-Bit-Kette.
- Die Funktionen F1 bis F5 üben die Booleschen Operationen auf die Bit-Ketten A und B aus, um die Zwischen-Bit-Ketten zu bestimmen, solange sich noch Impulse in beiden Bit-Ketten befinden. Wenn alle Impulse von einer oder von beiden Bit- Ketten verarbeitet sind, tritt eine Ende-einer-Bit-Kette-Bedingung auf. Wenn diese Situation auftritt, ist es nicht notwendig, die Boolesche Operation auszuführen. Statt dessen gibt die Funktion F6 ein spezielles Signal zum kanonischen Prozessor 25 (Fig. 1A) aus, um alle in der längeren Bit-Kette verbleibenden Bits in die sich ergebene Bit-Kette auszugeben oder um die Routine zu verlassen, wenn beide Bit- Ketten eine Ende-einer-Bit-Kette-Bedingung aufweisen (z.B. keine weiteren Impulse).
- In Fig. 9E ist eine Wahrheitstabelle der speziellen Ergebnisse für die verschiedenen Booleschen Operationen gezeigt. Insbesondere sind in der Spalte auf der linken Seite die Operationen UND, ODER und EXKLUSIVES ODER gezeigt und in der obersten Reihe sind die Bedingungen in den Bit-Ketten gezeigt, d.h. Ende-einer-Bit- Kette-Bedingung in der Bit-Kette A, "EBSA", Ende-einer-Bit-Kette-Bedingung in der Bit-Kette B "EBSB" und Ende-einer-Bit-Ketten-Bedingung in den Bit-Ketten A und B, "EBSA + EBSB".
- Bezüglich dem Ergebnisteil der Abbildung sind drei Arten von Signalen vorhanden, welche von F6 aufgegeben werden. Als erstes ein "EBSA + EBSB"-Signal, welches den kanonischen Prozessor 25 (Fig. 1A) (über die ERZEUGE RESULTIERENDE BIT-KETTE-Routine (Fig. 11A)) informiert, daß sich keine weiteren Impulse in den Bit-Ketten A oder B befinden. Als zweites informiert ein "EBSA"-Signal den kanonischen Prozeß 25 (über die ERZEUGE RESULTIERENDE BIT-KETTE-Routine (Fig. 11A)), daß sich keine weiteren Impulse in der Bit-Kette A befinden und daß sich ein oder mehrere Impulse B befinden. Schließlich informiert ein "EBSB"-Signal den kanonischen Prozessor 25 (über die ERZEUGE RESULTIERENDE BIT-KETTE-Routine (Fig. 11C)), daß sich keine weiteren Impulse in der Bit-Kette B befinden oder daß sich ein oder mehrere Impulse in der Bit-Kette A befinden.
- Wenn eine "EBSA"-Bedingung in der Bit-Kette A auftritt und die Boolesche Operation UND ist, werden die verbleibenden Bits der Bit-Kette B mit UND gegen einen eingefügten Strang von "0'en" verrechnet, welcher dem Ende der Bit-Kette in A folgt. In der bevorzugten Ausführungsform wird davon ausgegangen, daß alle Bit- Ketten einen unendlichen Strang von "0'en" aufweisen, welcher dem Ende-Bit in der Bit-Kette folgt. Daher wird, wenn die verbleibenden Bits in der längeren Bit- Kette mit UND mit dem unendlichen Strang von "0'en" verrechnet werden, daß Ergebnis immer "0" sein (z.B. "1" UND "0" gleich "0"; "0" UND "0" gleich "0"). Ein Ergebnis von "0" bedeutet, daß sich keine Information in der sich ergebenen Zwischen-Bit-Kette befindet und daher dieser Schritt nicht ausgeführt werden muß. Als Ergebnis gibt die Funktion F6 immer ein "EBSA + EBSB"-Signal, wenn die Operation UND ist. Im Ergebnis bedeutet dieses Signal, daß die längere Bit-Kette abgeschnitten ist, um die gleiche Länge aufzuweisen wie die kürzere Bit-Kette und daß die verbleibenden Bits, die abgeschnitten wurden, nicht verarbeitet werden. Daher wird, unabhängig davon, ob die Bit-Ketten die gleiche Länge aufweisen, die UND-Operation mit der Bit-Kette als abgeschlossen angesehen, wenn eine Endeeiner-Bit-Kette-Bedingung in der Bit-Kette A oder in der Bit-Kette B auftritt.
- Wenn die Boolesche Operation ODER und EXKLUSIVES ODER ist und eine Ende- einer-Bit-Kette-Bedingung in der Bit-Kette A oder B auftritt (beispielsweise sind sie ungleich in der Länge), dann werden die verbleibenden Bits in der längeren Bit- Kette durch den kanonischen Prozessor 25 im Block 232 direkt zu der sich ergebenen Bit-Kette ausgegeben. Genauergesagt gibt die Funktion F6 ein "EBSA"- oder "EBSB"-Signal aus und es werden alle verbleibenden Bits in der längeren Bit- Kette in die sich ergebende Bit-Kette ausgegeben. Die verbleibenden Bits der längeren Bit-Kette werden in die sich ergebende Bit-Kette ausgegeben, ohne sie mit einer unendlichen Reihe "0'en" zu verarbeiten, die auf das Ende-Bit der kürzeren Bit-Kette folgen, da das Ergebnis der EXKLUSIVES ODER- oder ODER-Operation mit den verbleibenden Bits der längeren Bit-Kette und mit der unendlichen Reihe von "0'en" immer die verbleibenden Bits der längeren Bit-Kette ergibt (d. h. "1" ODER "0" = "1"; "0V ODER "0" = "0"; "1" EXKLUSIVES ODER "0" = "1"; und "0" EXKLUSIVES ODER "0 " = "0") Daher muß die Boolesche Operation nicht ausge führt werden und die verbleibenden Bits der längeren Bit-Kette können durch den kanonischen Prozessor 25 direkt ausgegeben werden. Genauso existiert die Verarbeitung, wenn eine Ende-einer-Bit-Kette-Bedingung in beiden Bit-Ketten A und B existiert, da die Boolesche Operation die Verarbeitung auf beiden Bit-Ketten abgeschlossen hat.
- Bis hierhin haben wir im Detail eine Hardware-Ausführungsform (Fig. 7) zur Ausführung von Booleschen Operationen und zur Verarbeitung von Ende-einer-Bit- Kette-Bedingungen diskutiert. Nunmehr wird eine zweite Ausführungsform vorgestellt, welche sowohl Hardware als auch Software (Fig. 10) sein kann.
- Im Falle der Booleschen Hardware-Ausführungsform (Fig. 7) der BLU 20 (Fig. 1A) ist der spezielle Zweck der Booleschen Ausführungsform (Fig. 10) der BLU 20 (Fig. 1A), die Eigenschaften der Zwischen-Bit-Kette zu bestimmen; insbesondere, ob die Zwischen-Bit-Kette ein Strang oder ein Impuls ist, und die Polarität des Strangs oder Impulses. Darüberhinaus ist es der Zweck der Ausführungsform Ende-einer- Bit-Kette-Bedingungen zu berechnen, um zu bestimmen, wie jede Boolesche Operation höchst effizient abgeschlossen werden kann.
- Gemäß Fig. 10 ist ein Abschnitt der zweiten Ausführungsform durch eine Tabelle für den ersten Index implementiert. Die Tabelle für den ersten Index besteht aus einer Serie von Untertabellen 310, 312 und 314, wobei jede der Untertabellen mit einer speziellen Booleschen Operation korrespondiert. Genauergesagt korrespondiert die Untertabelle 310 mit der UND-Operation, die Untertabelle 312 mit der ODER-Operation und die Untertabelle 314 mit der EXKLUSIVES ODER-Operation. Jede der Untertabellen ist eine Matrix von einer oder mehreren Funktionen zur Ausgabe von entsprechenden Signalen (d. h. "00", "EBSA", "EBSB" und "EBSA+EBSB"-Signalen) zu dem kanonischen Prozessor 25 (Fig. 1A).
- Jede Untertabelle weist drei Indizes auf. In Untertabelle 310 sind ein erster und ein zweiter Index zur Bezeichnung der Polarität der Impulse A' und B' bei 327, 328, 317 und 321 gezeigt. "A'01" bei 327 bedeutet, daß der Impuls A' die Polarität "0" aufweist. Genauso bedeutet "B'10" bei 321, daß der Impuls B' die Polarität "1" aufweist. Der dritte Index "A': B'" bei 320 und 322 dient dazu zu identifizieren, ob die Länge des ersten Impulses A' kleiner ist (< ), größer ist (> ) oder die Länge des zweiten Impulses B' gleich (=) der Länge des zweiten Impulses B' ist. Die sich ergebenden Signale bei 324 und 326 (d.h. "10", "00", "01" oder "11") zeigen die Eigenschaften (d. h. Polarität und Typus (Strang oder Impuls)) der sich aus der Booleschen Operation ergebenden Zwischen-Bit-Kette. Kurz gesagt steht das "00"- Signal für einen Strang mit der Polarität "0". Genauso steht das Ausgangssignal "01" für eine Impuls mit einer Polarität "0". Wenn die Boolesche Operation UND ist, wird auf die Untertabelle 310 Bezug genommen und die durch die drei Indizes in Bezug genommene Funktion gibt abhängig von den Eigenschaften der Eingangsimpulse A' und B' (d. h. Polarität und Länge) ein Signal aus, wie es in den Matrizen 324 und 326 dargestellt ist. Die durch die Indextabelle (Fig. 10) bei 324 und 326 definierten Ausgangssignale der Funktionen korrespondieren direkt mit den Ausgängen der Funktion F2, F3, F4 und F5 der oben diskutierten Booleschen Hardware-Ausführung (Fig. 7).
- Es sei beispielsweise angenommen, daß ein Eingangsimpuls A' mit einer Polarität "0" mit UND mit einem Eingangsimpuls B' mit einer Polarität "0" verknüpft wird. Darüberhinaus sei die Länge des Eingangsimpulses A' kleiner als die Länge des Eingangsimpulses B'. Bezug nehmend auf die Untertabelle 310, die der UND-Operation entspricht, ergeben die Indizes für "A'01" bei 321, "B'01" bei 317 und "A': B'" (< ) bei 322 das Ausgangssignal "00" bei 324.
- Die Untertabellen 312 und 314, die den Booleschen Operationen ODER bzw. EXKLUSIVES ODER entsprechen, sind wie die Untertabelle 310 aufgebaut. Die Untertabellen weisen drei Indizes auf und es sind Ausgänge von vordefinierten Funktionen bei 350, 354, 370 und 374 dargestellt. Genauso zeigen die Ausgänge die Eigenschaften der Zwischen-Bit-Kette, die durch die EXKLUSIVES ODER- und ODER-Operationen erzeugt wurde.
- Jede der Untertabellen weist darüberhinaus Matrizen der Ergebnisse auf, die den Ende-einer-Bit-Kette-Bedingungen entsprechen. Insbesondere, Bezug nehmend auf die Untertabelle 310 für die UND-Operation, sind die Ende-einer-Bit-Kette-Bedingungen bei 332 bzw. bei 330 für die A- bzw. B-Bit-Ketten indiziert. Wie in den Bereichen 327, 329 und 331 gezeigt, wird, wenn eine Ende-einer-Bit-Kette-Bedingung in der A-Bit-Kette und/oder in der B-Bit-Kette auftritt, das entsprechende Signal ("EBSA", "EBSB" und "EBSA+EBSB") ausgegeben (Fig. 9E). Die Ende-einer-Bit- Kette-Bedingungen für die UND-Operation werden durch den kanonischen Prozessor 25 auf genau die gleiche Art und Weise berechnet wie für die Ausgangssignale der Funktion F6 der oben diskutierten Booleschen Hardware-Ausführungsform (Fig. 7).
- Genauso werden die Ende-einer-Bit-Kette-Bedingungen für ODER und EXKLUSIVES ODER identisch mit der Funktion F6 (Fig. 7) verarbeitet. Es sei insbesondere betrachtet, was während einer ODER-Operation passiert, wenn eine Ende-einer-Bit- Kette-Bedingung nur in der Bit-Kette A ("EBSA") auftritt. Wie oben diskutiert, werden die verbleibenden Bits der Bit-Kette B mit dem eingefügten unendlichen Strang von "0'en", welcher nach der Ende-einer-Bit-Kette-Bedingung der Bit-Kette A auftritt, durch ODER verknüpft. Die ODER- und EXKLUSIVES ODER-Operation ergibt immer die verbleibenden Bits der längeren Bit-Kette, wie oben festgestellt. Aus diesem Grund muß die ODER- und die EXKLUSIVES ODER-Operation nicht ausgeführt werden und stattdessen werden die verbleibenden Bits der längeren Bit- Kette durch den kanonischen Prozessor 25 direkt in die sich ergebende Bit-Kette ausgegeben. Genauergesagt bedeutet ein sich aus der Untertabelle 312 bei 352 ergebendes "EBSA"-Signal für den kanonischen Prozessor 25, daß die verbleibenden Bits in der längeren Bit-Kette B direkt in die sich ergebende Bit-Kette ausgegeben werden. Wenn die Ende-einer-Bit-Kette-Bedingung sowohl für die Bit-Kette A als auch für die Bit-Kette B bei 348 und 340 auftritt, ist das Ergebnis ein "EBSA+EBSB"-Signal welches dem kanonischen Prozessor 25 bedeutet, daß keine weiteren Bits von den Bit-Ketten zu der sich ergebenden Bit-Kette hinzuaddiert werden müssen und die Routine beendet wird, wie in der Fig. 113A detailliert dargestellt.
- Bis zu diesem Punkt wurde die Boolesche Hardware-Ausführungsform (Fig. 7) und die Boolesche Ausführungsform (Fig. 10) der BLU 20 (Fig. 1A) in Bezug auf die Ausführungsform von Booleschen Operationen mit komprimierten Impulsen beschrieben. Die Booleschen Operationen können auch mit komprimierten Strängen ausgeführt werden.
- Ein komprimiertes Strangformat schließt einen ersten und einen zweiten Indikator ein. Der erste Indikator dient der Indikation der Polarität (z.B. "0" oder "1") des einen oder der mehreren gleichen Polaritätsbits des Strangs. Der zweite Indikator dient der Indikation der Länge des Strangs. Anders als der Prozeß der Bestimmung einer sich ergebenden Bit-Kette durch Ausführung von Booleschen Operationen mit zwei Impulsen ist der Prozeß der Ausführung von Booleschen Operationen mit zwei komprimierten Strängen vereinfacht. Erstens, es muß nicht der Typ, d. h. Strang oder Impuls bestimmt werden, da die Zwischenergebnisse immer Stränge sind. Anders ausgedrückt: Es muß weder auf komplexe Tabellen (d.h. Fig. 10) noch auf durch die Hardware (Fig. 7) ausgeführte komplexe Operationen Bezug genommen werden, da nur die Polaritätsbits des entsprechenden Strangs durch die spezifizierte Boolesche Operation verarbeitet werden müssen und die Länge des sich ergebenden Strangs der des kürzeren Strangs entspricht.
- Wenn eine Anfrage zur Ausführung einer Booleschen Operation mit zwei speziellen Bit-Ketten getätigt wird und die Bit-Ketten in zwei Strangserien getrennt wurdenk dann werden die Bit-Ketten aus dem Speicher 16 genommen und mittels des Busses 17 zum Pufferspeicher 18 gebracht. Wenn die Bit-Ketten über den Bus 19 in die BLU geladen werden, dann führt die BLU 20 die auf die Polaritäten der Stränge abgestimmte Boolesche Operation aus und die Zwischenergebnisse werden tabelliert. Der erste Schritt bei der Ausführung Boolescher Operationen mit Bit- Ketten, die komprimierte Stränge enthalten, ist, den ersten Strang in den ersten und zweiten Bit-Ketten zu erhalten. Die BLU 20 bestimmt dann durch Vergleichen der Längenindikatoren der komprimierten Strangformate, ob die Stränge der ersten bzw. zweiten Bit-Kette gleich oder ungleich lang sind. Wenn die Stränge der ersten und der zweiten Bit-Ketten ungleich lang sind, dann bestimmt die BLU 20 die Länge des kürzeren Strangs. Die kürzere Länge ist die Länge der Bits der resultierenden Zwischen-Bit-Kette. Mit anderen Worten: es werden nur die Bits des kürzeren Strangs mit der gleichen Anzahl von Bits des längeren Strangs verarbeitet, um einen resultierenden Zwischenstrang zu bestimmen. Alle Stränge beider Bit-Ketten werden solange auf diese Weise verarbeitet, bis keine weiteren zu verarbeitenden Strängen mehr vorhanden sind. Die resultierenden Zwischen-Bit-Ketten werden dann zusammen tabelliert, um eine resultierende Bit-Kette zu bilden. Wenn erst einmal die Länge der resultierenden Zwischen-Bit-Kette bestimmt ist, dann wird die Polarität der resultierenden Zwischen-Bit-Kette effizient durch Ausführen deh spezifizierten Booleschen Operation nur des Polaritätsindikators des ersten Stranges wird dem Polaritätsindikator des zweiten Stranges bestimmt. Das Ergebnis dieser Operation ist die Polarität der resultierenden Zwischen-Bit-Kette.
- Wenn der Vergleich der Stränge der ersten und zweiten Bit-Kette ergibt, daß die Stränge gleich lang sind, dann wird die Länge der resultierenden Zwischen-Bit-Kette gleich der Länge entweder des ersten oder des zweiten Strangs gesetzt. Die Länge der resultierenden Zwischen-Bit-Kette ist gleich der Länge jedes Strangs, da beide Stränge vollständig gegenseitig verarbeitet werden, um die resultierende Zwischen Bit-Kette zu erzeugen. Ist die Länge des resultierenden Zwischenstrangs erst einmal bestimmt, dann wird die Polarität des resultierenden Zwischenstrangs durch Anwendung der spezifizierten Booleschen Operation auf den Polaritätsindikator des ersten Strangs mit dem Polaritätsindikator des zweiten Strangs bestimmt.
- Wie in dem Fall der Verarbeitung komprimierter Impulse werden nur die Bit-Längen und die Polaritätsindikatoren der Stränge verarbeitet. Diese Konfiguration erzeugt eine Prozeßeffizienz, da nicht alle der Bits des Strangs nacheinander verarbeitet werden müssen. Die resultierenden Zwischen-Bit-Ketten verbleiben darüber hinaus in komprimierten Strangformaten und sie werden kombiniert, um die resultierende, komprimierte Bit-Kette zu erzeugen.
- Bezug nehmend auf die Fig. 11A, 11B, 11C, 12A und 12B wird nun eine detaillierte Beschreibung des kanonischen Prozessors (25, Fig. 1A und Fig. 11C) diskutiert. In Fig. 11A ist ein detailliertes Flußdiagramm des kanonischen Prozessors 25, genannt ERZEUGE RESULTIERENDE BIT-KETTE-Routine, zur Steuerung der Komponente des kanonischen Prozessors 25 dargestellt. Die Hardware Komponenten des kanonischen Prozessors 25 sind in Fig. 11C gezeigt. Der allgemeine Zweck des kanonischen Prozessors 25 ist es, eine Zwischen-Bit-Kette (d.h. einen Strang oder einen Impuls) mit einer weiteren Zwischen-Bit-Kette (d.h. einem Strang oder einem Impuls) sauber zu kombinieren, um einen Impuls der resultierenden Bit-Kette zu bilden. Darüber hinaus verarbeitet der kanonische Prozessor Ende-einer-Bit-Kette- Bedingungen, wie zuvor diskutiert. Im wesentlichen interpretiert der kanonische Prozessor 25 über die ERZEUGE RESULTIERENDE BIT-KETTE-Routine eine Statusvariable (Fig. 11B), welche auf eine zweite Indextabelle (Fig. 12A) Bezug nimmt, um zu bestimmen, wie die Ausgänge der Booleschen Hardware-Ausführungsform (Fig. 7) oder der Booleschen Ausführungsform (Fig. 10) zu verarbeiten sind. Die Statusvariablen sind Kombinationen von gesetzten Bit-Markern, die in Fig. 12B dargestellt sind.
- Die Fig. 11C stellt die Hardwarekomponenten des kanonischen Prozessors 25 (Fig. 1A) zum Puffern von Zwischen-Bit-Ketten und zur Erzeugung einer resultierenden Bit-Kette dar. Die Hardwarekomponenten zur Verbindung der Zwischen-Bit-Ketten sind der Eingangspuffer 383, der Elementpuffer 385 und der statische Puffer 387. Die Ergebnisse der Zwischen-Bit-Kette werden von den Booleschen Hardware- oder Softwareausführungsformen in Block 230 der Fig. 6 ausgegeben. Die Zwischen-Bit- Kette wird dann zum Eingangspuffer 383 der Fig. 11C zum temporären Speichern gesandt. Der kanonische Prozessor 25 bestimmt dann, wie die Inhalte des Eingangsspeichers 383 mit den Inhalten des Elementspeichers 385 zu kombinieren oder nicht zu kombinieren sind, um einen Impuls einer resultierenden Bit-Kette zu bilden. Der Impuls der resultierenden Bit-Kette wird an den statischen Puffer 387 ausgegeben. Der Zweck des statischen Puffers 387 ist es, alle erzeugten, kodierten Impulse in der richtigen Reihenfolge zu halten, solange bis die Bit-Kette vollständig ist. Nachdem beide Bit-Ketten vollständig verarbeitet wurden (z.B., daß Ende-einer- Bit-Kette-Bedingungen auftreten), ist der Inhalt des statischen Puffers 358 die letzte komprimierte resultierende Bit-Kette und er wird an den Pufferspeicher 389 ausgegeben. Die resultierende Bit-Kette verweilt in dem Pufferspeicher 389 vorübergehend, bis sie in einen zweiten Speicher 401(16, Fig. 1A) verbracht werden kann oder der BLU 20 zur zusätzlichen Booleschen Verarbeitung zur Verfügung gestellt werden kann.
- Die ERZEUGE RESULTIERENDE BIT-KETTE-Routine (Fig. 11A) koordiniert die Komponenten des kanonischen Prozessors der Fig. 11C, wie oben diskutiert. Insbesondere wird in Block 384 die von der BLU 20 Hardware (Fig. 7) oder der zweiten Ausführungsform der BLU 20 (Fig. 10) erzeugte Zwischen-Bit-Kette in den Eingangspuffer 386 (Fig. 11C) plaziert. In Block 386 wird eine Statusvariable (418, Fig. 11B) zur Verarbeitung der Inhalte des Eingangspuffers 383 und des Elementpuffers 385 durch erneutes Aufrufen der zweiten Indextabelle (Fig. 12A) bestimmt. Die Statusvariable besteht aus fünf Bits, wobei jedes Bit einen unterschiedlichen Marker repräsentiert; NIMM 1bei 420, NIMM N bei 422, GIB ZU SP bei 424, GIB ZU EP bei 426, WEG VON SP bei 428. Der erste Marker, NIMM 1, deutet an, daß sich ein Strang mit einer bestimmten Polarität in dem Elementpuffer 385 befindet und dieser mit einem Strang oder einem Impuls in dem Eingangspuffer 383 mit einer entgegengesetzten Polarität kombiniert werden muß; (z.B. ein Strang mit einer Polarität von "0" kombiniert mit einem Strang oder einem Impuls mit einer Polarität von "1") Der zweite Marker, NIMM N deutet an, daß sich ein Strang mit einer bestimmten Polarität in dem Elementpuffer 385 befindet und dieser mit einem Strang oder einem Impuls der gleichen Polarität kombiniert werden muß, welcher sich gerade in dem Eingangspuffer 383 befindet (z.B. ein Strang mit einer Polarität "0" kombiniert mit einem Strang oder einem Impuls mit der Polarität "0"). Der dritte Marker, GIB ZU SP, deutet an, daß sich ein frisch gebildeter Impuls in dem Elementpuffer 385 befindet und dieser in den statischen Puffer 387 gegeben werden soll. Der vierte Marker, GIB ZU EP, deutet an, daß der Inhalt des Eingangspuffers 383 in den Elementpuffer 385 gegeben werden soll. Der fünfte Marker, WEG VON SP, deutet an, daß der statische Puffer 387 eine vollständige sich ergebene Bit-Kette enthält, welche in den Puffer speicher 389 zür vorübergehenden Speicherung ausgegeben werden soll.
- Zurück zu Block 386 der Fig. 11A: Ist erst einmal die Statusvariable 314 (Fig. 11B) aus der zweiten Indextabelle (Fig. 12A) entnommen (eine detaillierte Diskussion des Entnahmeprozesses wird in Kürze folgen), dann werden die verbleibenden Blocks 388, 396, 402, 406 und 410 (Fig. 11A) angesteuert, um den kanonischen Prozessor bestimmen zu lassen, welche Marker in die Statusvariable 418 (Fig. 11B) gesetzt werden. Insbesondere bestimmt im Entscheidungsblock 388 der kanonische Prozessor, ob der NIMM 1 Marker 420 der Statusvariable 418 gesetzt wird. Wenn der Marker 420 gesetzt wird, dann wird in Block 390 ein Bit aus dem Inhalt des Eingangspuffers 383 (Fig. 11C) an den Inhalt des Elementpuffers 385 (Fig. 11C) angehängt. Im Block 392 wird der Längenindikator für den Impuls, welcher sich jetzt im Elementpuffer 385 befindet, hinzugefügt. Zusätzlich wird im Block 394 der Längenindikator für den Inhalt des Eingangspuffers 383 um eins reduziert.
- Wenn der NIMM 1 Marker 420 der Statusvariable 418 nicht gesetzt wird, oder wenn die Verarbeitung in den Blocks 390, 392 und 394 vollendet ist, dann bestimmt im Entscheidungsblock 396 der kanonische Prozessor, ob der NIMM N Marker 422 der Statusvariable 418 gesetzt ist. Wenn der NIMM N Marker 422 gesetzt ist, dann wird der Block 398 angesteuert, um N Bits aus dem Inhalt des Eingangspuffers 383 zu entnehmen und die N Bits dem Inhalt des Elementpuffers 385 hinzuzufügen. Der Block 400 wird angesteuert, um N zu der Länge des Impulses hinzuzufügen, der sich jetzt im Elementpuffer 385 befindet. Wenn der NIMM N Marker 422 der Statusvariable 418 (Fig. 11B) nicht gesetzt ist, oder wenn die Verarbeitung in den Blocks 398 und 400 vollendet ist, dann wird die Verarbeitung im Entscheidungsblock 402 fortgesetzt, um zu bestimmen, ob der GIB ZU SP- Marker 424 gesetzt ist. Wenn der GIB ZU SP-Marker 424 gesetzt ist, dann wird der Block 404 angesteuert, um den Inhalt des Elementpuffers 385 in den statischen Puffer 387 auszugeben. Wenn der GIB ZU SP-Marker 424 nicht gesetzt ist, oder wenn die Verarbeitung im Block 404 vollendet ist, dann wird die Verarbeitung im Block 406 fortgesetzt, um zu bestimmen, ob der GIB ZU EP-Marker-Bit 426 gesetzt ist. Wenn das Marker-Bit 426 gesetzt ist, dann wird im Block 408 der Inhalt des Elementpuffers 385 (Fig. 11C) durch den Inhalt des Eingangspuffers 383 (Fig. 11C) ersetzt. Wenn das Marker-Bit 426 nicht gesetzt ist, oder wenn die Verarbeitung im Block 408 vollendet ist, dann wird die Verarbeitung im Block 410 fortgesetzt, um zu bestimmen, ob das WEG VON SP-Marker-Bit 428 gesetzt ist. Wenn dieses Bit gesetzt ist, dann wird der Block 412 angesteuert, um den Inhalt des statischen Puffers 387 in den Pufferspeicher 389 auszugeben und der Block 414 wird angesteuert, um die ERZEUGE RESULTIERENDE BIT-KETTE-Routine zu verlassen. Wenn das WEG VON SP-Marker-Bit 428 der Statusvariable 418 nicht gesetzt ist, dann kehrt die Verarbeitung zur VERARBEITE BOOLESCHE OPERATION-Routine (Fig. 6) im Block 234 zurück.
- Bezüglich Fig. 12A wird nunmehr eine detaillierte Beschreibung der zweiten Indextabelle, welche ein Abschnitt des kanonischen Prozessors 25 (Fig. 11C) ist, diskutiert. Die zweite Indextabelle ist im wesentlichen eine Indexkonfiguration zur Bestimmung, welcher Satz von Markern der Statusvariable (Fig. 11B) gesetzt wird Wie zuvor erwähnt, sagt die Statusvariable dem kanonischen Prozessor, wie er die Zwischen-Bit-Ketten, die sich in dem Eingangs- und Elementpuffer (383 und 385 der Fig. 11C) befinden, zu verarbeiten hat. Die Spalte 432 auf der linken Seite der zweiten Indextabelle repräsentiert den Inhalt des Elementpuffers 385 (Fig. 11C). der Polarität "0" sein, ein Impuls 446 mit der Polarität "1" sein, ein Strang 448 mit der Polarität "0" sein, ein Strang 450 mit der Polarität "1" sein oder leer sein "MTY" 452. Der obere Abschnitt der zweiten Indextabelle (Fig. 12A) zeigt den Inhalt des Eingangspuffers 383 (Fig. 11C). Der Inhalt des Eingangspuffers 383 (Fig. 11C) kann ein Impuls 434 mit der Polarität "0" sein, ein Impuls 436 mit der Polarität "1" sein, ein Strang 438 mit der Polarität "0" sein, ein Strang 440 mit der Polarität "1" sein oder eine Ende-einer-Bit-Kette-Bedingung sowohl in der Bit-Kette A als auch in der Bit-Kette B, "EBSA + EBSB" 442. Dadurch das der Inhalt des Elementpuffers 385 und der Inhalt des Eingangspuffers 383 bekannt sind, kann auf eine bestimmte Statusvariable (Fig. 11B) zur Steuerung des kanonischen Prozessors 25 (Fig. 11C) Bezug genommen werden. Ist beispielsweise der Inhalt des Elementpuffers ein Strang 448 mit der Polarität "0" und der Inhalt des Eingangspuffers ein Strang mit der Polarität "0", dann wird auf die Statusvariable "01000" bei 478 Bezug genommen. Das zweite Bit der Statusvariable wird entsprechend dem NIMM N Marker gesetzt.
- Zur Vereinfachung wurde jedem Ergebnis, auf welches in der zweiten Indextabelle (Fig. 12A) Bezug genommen wird, ein Name gegeben, welcher in zwei Teile unterteilt ist; beispielsweise "00-01". Der erste Teil vor dem Bindestrich entspricht dem Inhalt des Elementpuffers 385 (Fig. 11C) und der zweite Teil entspricht dem Inhalt des Eingangspuffers 383 (Fig. 11C). Beispielsweise bedeutet "00-01", daß der Inhalt des Elementpuffers 385 (Fig. 11C) ein Strang 448 mit der Polarität "0" ist und der Inhalt des Eingangspuffers ein Impuls 436 mit der Polarität "1" ist. "01-XX" bedeutet, daß der Inhalt des Elementpuffers 385 (Fig. 11C) ein Impuls mit der Polarität "1" ist und der Inhalt des Eingangspuffers 383 (Fig. 11C) ein Strang oder ein Impuls beliebiger Polarität ("0" oder "1") ist. "11-EBSA + EBSB" bei 500 deutet an, daß der Inhalt 385 (Fig. 11C) ein Strang 450 mit der Polarität "1" ist und der Inhalt des Eingangspuffers 383 (Fig. 11C) ein Signal ist, welches eine Ende-einer-Bit-Kette-Bedingung in beiden Bit-Ketten A und B 442 anzeigt.
- Die Fig. 12B zeigt jedes Ergebnis der zweiten Indextabelle. Insbesondere entspricht jede Zeile der Fig. 12B einem unterschiedlichen Ergebnis. Die zweite Indextabelle kann in sechs Teile unterteilt werden; Spalte 532 für die Ergebnisnamen, Spalte 534 für die mit dem jeweiligen Ergebnis verbundenen Statusvariablen, Spalte 536a für die NIMM N und NIMM 1 Marker, Spalte 538 für die sich ergebene Bit-Kette, Spalte 540 für den GIB ZU SP-Marker und Spalte 542 für sowohl den GIB ZU EP- Marker als auch den WEG VON SP-Marker.
- Bezug nehmend auf die Fig. 12A und 12B folgt eine detaillierte Beschreibung jedes Ergebnisses, welches der zweiten Indextabelle entnommen werden kann. Wenn ein befindet und der Inhalt des Eingangspuffers ist ein Impuls mit der Polarität "0" (434, Fig. 12A) oder ein Impuls mit der Polarität "L" (436, Fig. 12A) oder ein Strang mit der Polarität "0" (438, Fig. 12A) oder ein Strang mit der Polarität "1" (440, Fig. 12A), dann findet das "01-XX"-Ergebnis bei 454, 464, 474 und 484 Anwendung. Das "01-XX"-Ergebnis weist eine Statusvariable (Fig. 11B) von "00110V auf, welches bedeutet, daß in allen aufgezählten Fällen sowohl der GIB ZU SP-Marker als auch der GIB ZU EP-Marker gesetzt werden (504, Fig. 12B). In Übereinstimmung mit den gesetzten Markern in der Statusvariable weist die ERZEUGE RESULTIERENDE BIT-KETTE-Routine (Fig. 11A) den kanonischen Prozessor 25 an, den Impuls mit der Polarität "0" im Elementpuffer 385 zu nehmen und ihn in den statischen Puffer 387 zu setzen. Die Inhalte des Eingangspuffers 383 werden ebenfalls in den Elementpuffer 385 gesetzt. Der Impuls mit der Polarität "0" im statischen Puffer (Zeile 504, Spalte 538, Fig. 12B) wird ein Impuls der resultierenden Bit-Kette.
- Zurück zu Fig. 12A: Wenn der Inhalt des Elementpuffers 385 (Fig. 11C) ein Impuls mit der Polarität "1" ist (446, Fig. 12A) und der Inhalt des Eingangspuffers ist ein Impuls 434 mit der Polarität "0", ein Impuls 436 mit der Polarität "1", ein Strang 438 mit der Polarität "0" oder ein Strang 440 mit der Polarität "1", dann ist bei 456, 466, 476 und 486 das Ergebnis "10-XX" (506, Fig. 12B). Das Ergebnis "10-XX" weist eine Statusvariable "00110" auf, welche identisch mit der Statusvariable für "01-XX" (504, Fig. 12B) ist, so daß dieselben Marker GIB ZU SP und GIB ZU EP gesetzt werden. Der einzige Unterschied in den beiden Ergebnissen tritt in der resultierenden Bit-Kette auf; der statische Puffer 387 (Fig. 11C) weist einen Impuls mit der Polarität "1" auf (506, 538, Fig. 12B), anstelle eines Impulses mit der Polarität "0".
- 12A) und der Inhalt des Eingangspuffers ein "EBSA + EBSB"-Signal 442 (Fig. 12A) ist, dann wird auf das "01-EBSA + EBSB"-Ergebnis bei 494 (Fig. 12A) Bezug genommen. Dieses Ergebnis weist eine Statusvariable "00101" (508, 534, Fig. 12B) auf und es werden die Marker GIB ZU SP und WEG VON SP aufgerufen. Der Zweck dieses Ergebnisses ist es, den kanonischen Prozessor anzuweisen, zuerst den Inhalt des Elementpuffers 385 (Fig. 11C) zu nehmen und in den statischen Puffer 387 (Fig. 11C) zu geben und als zweites den Inhalt des statischen Puffers 387 (Fig. 11C) - die resultierende Bit-Kette - zu nehmen und ihn an den Pufferspeicher 389 (Fig. 11C) auszugeben. Die Ende-einer-Bit-Kette-Bedingung signalisiert, daß der sich in dem Elementpuffer 385 befindende Impuls der letzte zu verarbeitende Impuls ist und daß dieser direkt in den statischen Puffer 387 (Fig. 11C) ausgegeben werden kann. Wenn der letzte Impuls im statischen Puffer ist, dann ist die resultierende Bit-Kette vollständig und kann aus dem statischen Puffer 387 (Fig. 11C) in den Pufferspeicher 389 (Fig. 11C) ausgegeben werden.
- Wenn der Inhalt des Elementpuffers 385 (Fig. 11C) ein Impuls 446 mit der Polarität "1" und der Inhalt des Eingangspuffers 383 (Fig. 11C) ein "EBSA + EBSB"-Signal (442, Fig. 12A) ist, dann wird auf das "10-EBSA + EBSB"-Ergebnis (496, Fig. 12A) Bezug genommen. Dieses Ergebnis weist dieselbe Statusvariable "00101" auf, wie das oben diskutierte "01 -EBSA + EBSB"-Ergebnis auf und es wird jedoch ein Impuls mit einer Polarität "1" anstelle eines mit einer Polarität "0" an den statischen Puffer 387 (510, 538, Fig. 12(B)) ausgegeben.
- Wenn der Inhalt des Elementpuffers 385 (Fig. 11C) ein Strang 448 mit der Polarität "0 " ist und der Inhalt des Eingangspuffers 383 (Fig. 11C) ein Strang 438 Mitte der Polarität "0" ist, dann wird auf das Ergebnis "00-00" 478 (512, Fig. 12B) Bezug genommen. Das Ergebnis "00-00" weist eine Statusvariable "01000" auf, welche andeutet, daß der Marker NIMM N gesetzt ist. Wenn das NIMM N-Bit gesetzt ist, dann instruiert die ERZEUGE RESULTIERENDE BIT-KETTE-Routine (Fig. 11A) den kanonischen Prozessor 25 (Fig. 11C) alle Bits in den Eingangspuffer 383 (Fig. 11C) einzulesen und sie an den Inhalt des Elementpuffers 385 anzuhängen. Das Ergebnis ist ein Strang mit der Polarität "0" (512, 538, Fig. 12B). Der Strang mit der Polarität "0" befindet sich solange im Elementpuffer 385 (Fig. 11C), bis später eines oder mehrere Bits zu ihm hinzuaddiert werden können, um einen Impuls zu bilden. Wenn der Inhalt des Elementpuffers 385 (Fig. 11C) ein Strang 448 mit der Polarität "0" ist und der Inhalt des Eingangspuffers 383 (Fig. 11C) ist ein Impuls 434 mit der Polarität "0", dann ist das Ergebnis 458 "00-01" (514, Fig. 12B). Die Statusvariable des Ergebnisses "00-01" ist "01000" (514, 534, Fig. 12(B)). Diese Statusvariable ist die gleiche Statusvariable wie die Statusvariable für das Ergebnis "00-00", mit der Ausnahme, daß ein Impuls im Eingangspuffer 383 (Fig. 11C) mit einem Strang im Elementpuffer 385 (Fig. 11C) kombiniert wird, um einen weiteren Impuls mit der Polarität "0" zu bilden (514, 538, Fig. 12B).
- Wenn der Inhalt des Elementpuffers 385 (Fig. 11C) ein Strang 448 mit der Polarität "0" ist und der Inhalt des Eingangspuffers 383 (Fig. 11C) ein Impuls 436 mit der Polarität "1" ist oder ein Strang 440 mit der Polarität "1" ist, dann wird auf das "00-1X"-Ergebnis 468, 488 (516, Fig. 12B) Bezug genommen. Das Ergebnis "00-1X" weist die Statusvariable "10110" (516, 5341 Fig. 12B) auf, was bedeutet, daß die NIMM-1-Bit-, GIB-ZU-SP-Bit- und die GIB-ZU-EP-Bit-Marker gesetzt sind. Die ERZEUGE RESULTIERENDE BIT-KETTE-Routine (Fig. 11A) instruiert den kanonischen Prozessor 25 (Fig. 11C), ein Bit aus dem Eingangspuffer 383 (Fig. 11C) zu entnehmen und es dem Inhalt des Elementpuffers 385 (Fig. 11C) hinzuzufügen, um einen Impuls aus dem Strang mit einer Polarität "0" zu bilden (516, 538, Fig. 12B). Der Inhalt des Elementpuffers 385 (Fig. 11C) wird an den statischen Puffer 387 (Fig. 11C) ausgegeben. Schließlich wird der ein verbleibendes Bit aufweisende Inhalt des Eingangspuffers 383 (Fig. 11C) in den Elementpuffer 385 (Fig. 11C) gegeben.
- Wenn der Inhalt des Elementpuffers 385 (Fig. 11C) ein Strang 450 mit der Polarität "1" ist und der Inhalt des Eingangspuffers 383 (Fig. 11C) ein Impuls 434 oder ein Strang 438 mit einer Polarität "0" ist, dann wird auf das "11-0X-"Ergebnis bei 460 und 480 (518, Fig. 12B) Bezug genommen. Das Ergebnis "11-0X" weist die Statusvariable "10110" (516, 534, Fig. 12B) auf, welches die gleiche Statusvariable ist wie für das Ergebnis "00-1X". Daher tritt die gleiche Verarbeitung auf; der statische Puffer 387 (Fig. 11C) enthält jedoch anstatt eines Impulses mit einer Polarität "0" einen mit einer Polarität "1" (518, 538, Fig. 12B).
- Wenn der Inhalt des Elementpuffers 385 (Fig. 11C) ein Strang 450 mit einer Polarität "1" ist und der Inhalt des Eingangspuffers 383 (Fig. 11C) ein Impuls 436 mit einer Polarität "1" ist, dann wird auf das Ergebnis "11-10" 470 (520, Fig. 12B) Bezug genommen. Das Ergebnis "11-10" weist eine Statusvariable "01000" (520, 534, Fig. 12B) auf, was bedeutet, daß der NIMM-N-Marker gesetzt ist. Die ERZEU- GE RESULTIERENDE BIT-KETTE-Routine (Fig. 11A) instruiert den kanonischen Prozessor 25 (Fig. 11C) alle "N" Bits aus dem Eingangspuffer 383 (Fig. 11C) zu entnehmen und diese an das Ende des Inhalts des Elementpuffers 385 (Fig. 11C) anzuhängen. Somit ist ein Impuls mit einer Polarität "1" (520, 538, Fig. 12B) erzeugt.
- Wenn der Inhalt des Elementpuffers 385 (Fig. 11C) ein Strang 450 mit der Polarität "1" und der Inhalt des Eingangspuffers 383 (Fig. 11C) ein Strang 440 mit der Polarität "1" ist, dann wird der zweiten Indextabelle (Fig. 12A) das Ergebnis "11-11" 490 (524, Fig. 12B) entnommen. Das Ergebnis "11-11" weist eine Statusvariable "01000" auf, welches die gleiche Statusvariable ist, wie für das Ergebnis "11-10" (520, Fig. 12B). Mit anderen Worten, es tritt die gleiche Verarbeitung auf; da sich ein Strang mit der Polarität "1" in dem Eingangspuffer 383 (Fig. 11C) anstelle eines Impulses mit einer Polarität "1" befindet, ist jedoch das Ergebnis ein Strang mit einer Polarität "1" (524, 538, Fig. 12B) anstelle eines Impulses mit einer Polarität "1" (520, 538, Fig. 12B).
- Wenn der Inhalt des Elementpuffers 385 (Fig. 11C) ein Strang 450 mit der Polarität "1" ist und der Inhalt des Eingangspuffers ist ein "EBSA + EBSB"-Signal 442, dann wird auf das Ergebnis "11-EBSA + EBSB" 500 (526, Fig. 12B) der zweiten Indextabelle (Fig. 12A) Bezug genommen. Das Ergebnis "11-EBSA + EBSB" weist eine Statusvariable "10101" (526, 534, Fig. 12B) auf, was bedeutet, daß der NIMM-1-Marker, der GIB-ZU SP-Marker und der WEG-VON-SP-Marker gesetzt ist. Die ERZEUGE RESULTIERENDE BIT-KETTE-Routine (Fig. 11 A) instruiert den kanonischen Prozessor 25, ein Bit aus dem Inhalt des Eingangspuffers 383 (Fig. 11C) zu entnehmen und es dem Inhalt des Elementpuffers 385 (Fig. 11C) hinzuzufügen, um einen Impuls mit einer Polarität "1" (Zeile 526, Spalte 538, Fig. 12B) zu bilden. Der Impuls mit der Polarität "1" wird dann in den statischen Puffer 387 verbracht und die schließlich resultierende Bit-Kette im statischen Puffer 387 (Fig. 11C) wird an den Pufferspeicher 389 ausgegeben.
- Wenn der Inhalt des Elementpuffers 385 (Fig. 11C) ein Strang 448 mit der Polarität "0 " ist oder wenn der Elementpuffer 385 (Fig. 11C) leer ist 452 und der Inhalt des Eingangspuffers 383 (Fig. 11C) ein "EBSA + EBSB"-Signal 442 ist, dann wird mittels der zweiten Indextabelle (Fig. 12A) auf das Ergebnis "GIB-EBSA + EBSB" bei 498 und bei 502 (528, Fig. 12B) Bezug genommen. Das Ergebnis "GIB-EBSA + EBSB" weist eine Statusvariable "0000I " (528, 534, Fig. 12B) auf,was bedeutet, daß der WEG-VON-SP-Marker gesetzt ist. Der kanonische Prozessor 25 wird den GIB-Marker erkennen und den Inhalt des statischen Puffers 387 an den Pufferspeicher 389 (Fig. 11C) ausgeben. Mit anderen Worten: der kanonische Prozessor 25 (Fig. 11C) sieht den Elementpuffer 385 (Fig. 11C) so an, als ob er ein leerer Elementpuffer 385 (Fig. 11C) wäre, unabhängig davon, ob er einen Strang von "0'envv enthält. Wenn der Elementpuffer 385 (Fig. 11C) einen Strang von "0'en" aufweist, der leer ist und der Inhalt des Eingangspuffers 383 (Fig. 11C) ein "EBSA + EBSB"-Signal ist, dann kann der Inhalt des statischen Puffers 387 (Fig. 11C) direkt zu dem Pufferspeicher 389 (Fig. 11C) ausgegeben werden.
- Wenn der Inhalt des Elementpuffers 385 (Fig. 11C) leer ist 452 und der Inhalt des Eingangspuffers 383 (Fig. 11C) ein Impuls oder ein Strang bei 434, 436, 438 bzw. 440 ist, dann wird mittels der Indextabelle (Fig. 12A) auf das Ergebnis GIB-ZU-EP bei 462, 472, 482 und 492 (530, Fig. 12B) Bezug genommen. Die Subroutine GIB- ZU-EP weist eine Statusvariable "00010" auf, was bedeutet, daß der GIB-ZU-EP- Marker gesetzt ist. Der kanonische Prozessor 25 (Fig. 11C) wird den GIB-Marker erkennen und den Inhalt des Eingangspuffers 383 (Fig. 11C) in den Elementpuffer 385 (Fig. 11C) verschieben. Mit anderen Worten: Der Inhalt des Elementpuffers 385 (Fig. 11C) ist leer, so daß der Inhalt des Eingangspuffers 383 (Fig. 11C) direkt in den Elementpuffer eingegeben werden kann. Dieses Ergebnis tritt typischerweise ganz am Anfang einer Booleschen Operation auf, wenn der Elementpuffer 385 (Fig. 11C) immer noch leer ist.
- Bezug nehmend auf die Fig. 13A, 13B, 14A und 14B wird ein detailliertes Beispiel zur Verarbeitung einer Booleschen UND-Operation mit zwei komprimierten Bit- Ketten präsentiert. Genauer gesagt sei angenommen, daß zwei Bit-Ketten A und B über den Bus 13 von dem externen Gerät 12 auf die Computerplattform 10 heruntergeladen wurden. Hier werden die Bit-Ketten dann in die komprimierten Impulsformate der Fig. 2A, 2B, 2C und 2D durch den Kodierer 14, wie zuvor diskutiert (Fig. 3A, 3B und 3C), kodiert. Die sich ergebenen komprimierten Bit-Ketten werden im zweiten Speicher 16 gespeichert und verbleiben dort, bis eine Anfrage zur Ausführung einer UND-Operation vorliegt. Wenn angefragt wird, werden die beiden komprimierten Bit-Ketten A und B in den Pufferspeic her 18 geladen, wo sie auf die Verarbeitung durch die BLU 20 warten. Beispiele der komprimierten Bit-Ketten A und B sind in der Fig. 13A bei 531 und 538 gezeigt. Zum leichteren Verständnis wurden die Impulse separat beschrieben statt sie in ihrem aktuellen, kodierten Format darzustellen. Es wird jedoch davon ausgegangen, daß die Impulse in ihrem komprimierten Format (Fig. 2A, 2B, 2C und 2D) vorliegen. Beispielsweise weist der Impuls 532 eine Polarität (P) von "0" auf und eine Länge (L/B) von 12 auf und würde normalerweise einpaketig (Fig. 2A) dargestellt. Die komprimierte Bit-Kette A enthält die Impulse 532, 533, 534, 535, 536 und 537. Die komprimierte Bit- Kette B enthält die Impulse 539, 541, 543, 544, 545, 547 und 549.
- Wenn die BLU 20 bereit zur Verarbeitung ist, bringt der Systemkoordinator (31, Fig. 1A) die komprimierten Bit-Ketten A und B mittels des Busses 19 zur BLU 20. Hier wird die Boolesche UND-Operation mit den komprimierten Bit-Ketten A und B ausgeführt und es werden die resultierenden Zwischen-Bit-Ketten erzeugt und dem kanonischen Prozessor 25 mittels des Busses 21 übersandt. Wenn die Boolesche Operation die Verarbeitung der Impulse in beiden Bit-Ketten beendet hat, dann gibt der kanonische Prozessor 25 eine resultierende Bit-Kette an den Pufferspeicher 18 über den Bus 23 aus. Hier verbleibt die komprimierte, resultierende Bit-Kette, bis sie mittels des Busses 27 zum zweiten Speicher 16 gesandt wird oder bis sie mittels des Busses 19 zur weiteren Verarbeitung zur BLU 20 gesandt wird. Die Fig. 13B zeigt die resultierende komprimierte Kette, welche sechs Impulse und ein "Ende-einer-Bit-Kette" enthält.
- Die Fig. 14A und 14B sind detaillierte Ergebnistabellen der Ergebnisse der verschiedenen, von einem Systemkoordinator 31 (Fig. 1A) über die VERARBEITE B00LESCHE OPERATION-Routine (Fig. 6) mit den Bit-Ketten 531 und 538 ausgeführten Schritte. Jede Zeile der Fig. 14A und 14B, durch 540 bis 554 angezeigt, bedeutet die Verarbeitung eines Elementes (Impuls oder Strang) einer Bit-Kette A mit einem Element (Impuls oder Strang) einer Bit-Kette B. Jede Zeile der Fig. 14A und 148 ist in 13 Subabschnitte unterteilt, welche den 13 verschiedenen Spalten der Ergebnistabelle entsprechen, siehe 560 bis 584. Insbesondere die Länge des Impulses A' 560, die Länge des Impulses B' 562, die Länge der resultierenden Zwischen-Bit-Kette 564, die Polarität des Impulses A' 566, die Polarität des Impulses B' 568, ob die Zwischen-Bit-Kette ein Strang oder ein Impuls 570 ist, die Polarität der Zwischen-Bit-Kette 572, der Inhalt des Elementpuffers 574, der Inhalt des Eingangspuffers 576, das Ergebnis der zweiten Indextabelle 578, die Reduzierung des Impulses A' 580, die Reduzierung des Impulses B' 582, und ob eine EBSA- oder eine EBSB-Bedingung existiert; all dies ist als Spaltenüberschrift in den Ergebnistabellen (Fig. 14A und 14B) enthalten.
- Wenn die komprimierten Bit-Ketten A(531 in Fig. 13A) und B(538 in Fig. 13A) in die BLU 20 (Fig. 1A) geladen sind, beginnt der Systemkoordinator 31 (Fig. 1A) mit der Verarbeitung in der VERARBEITE BOOLESCHE OPERATION-Routine (Fig. 6). In Block 222 wird der erste Impuls A' 532 aus der Bit-Kette A (531, Fig. 13A) erhalten und in Block 224 wird der erste Impuls B' 539 von der Bit-Kette B(538, Fig. 13A) erhalten. Die Länge des Impulses A' beträgt 12 Bit (Zeile 540, Spalte 560, Fig. 14A) und die Länge des Impulses B' beträgt 20 Bit (540, 562, Fig. 14A). Im Block 226 wird festgestellt, daß die minimale Bitlänge der Impulse A' und B' 12 Bit beträgt (540, 564, Fig. 14). Die 12-Bit-Länge ist die Länge der sich ergebenen Zwischen-Bit-Kette. In Block 228 wird bestimmt, daß die Länge des Impulses A' kleiner ist als die des Impulses B' und in Block 230 werden die Boolesche Hardware (Fig. 7) oder die Ausführungsformen der zweiten Booleschen Ausführungsform (Fig. 10) dazu veranlaßt, den Typ (Strang oder Impuls) und die Polarität der Zwischen-Bit-Kette zu bestimmen.
- Bezug nehmend auf die Hardware-Ausführungsform (Fig. 7) der BLU 20 (Fig. 7) werden die Funktionen F1 256 und F2 258 ausgeführt, da die Impulse A' und B' ungleich lang sind (z.B. ist A' 12 Bit und B' 20 Bit). In Wirklichkeit wird die Funktion F3 262 gleichzeitig ausgeführt, die Funktion F5 263 wählt jedoch nur Ausgänge von der Funktion F2 258, wenn die Bitlängen von A' 532 (Fig. 13A) und B' 539 (Fig. 13A) ungleich sind. Die Funktion F1 stellt fest, daß der Impuls B' 539 (Fig. 13A) der längere Impuls ist und somit wird die Polarität des Impulses B' ("0 ") durch die Funktion F1 (Fig. 9A) ausgewählt. Wenn die Impulse A' 532 (Fig. 13A) und B' 539 (Fig. 13A) die Polarität "0" aufweisen und die Länge des Impulses A' 532 (Fig. 13A) ist kleiner als die Länge des Impulses B' 539 (Fig. 13A), dann ist der Ausgang von F1 "0" oder die Polarität des längeren Impulses B' 539 (Fig. 13A). Die Funktion F2 bestimmt dann den Typ (Strang oder Impuls) der Zwischen- Bit-Kette. Bezug nehmend auf Fig. 98, wenn die Boolesche Operation UND ist und das Ergebnis von F1 "0" ist, dann ist der Ausgang von F2 "0", was bedeutet, daß die sich ergebene Zwischen-Bit-Kette ein Strang ist. Wenn F1 und F2 verarbeiten, bestimmt F4 gleichzeitig die Polarität der Zwischen-Bit-Kette durch Ausführung der Booleschen Operation UND mit den Polaritäten der Impulse A' 532 (Fig. 13A) und B' 539 (Fig. 13A). Bezug nehmend auf Fig. 9C ergibt die UND-Operation der Polarität "0" und der Polarität "0" eine Polarität "0". Daher ist die Zwischen-Bit-Kette, wie sie durch die Funktion F5 ausgegeben wird, ein Strang (540, 570, Fig. 14A) mit der Polarität "0V (540, 572, Fig. 14B).
- Die gleiche Zwischen-Bit-Ketten-Bestimmung tritt auf, wenn die Boolesche Ausführungsform (Fig. 10) die UND-Operation ausführt. Es wird insbesondere auf die erste Untertabelle 310 für die UND-Operation Bezug genommen. Impuls A' 532 (Fig. 13A) ist ein Impuls mit der Polarität "0" oder "A'01" bei 327 und Impuls B'539 (Fig. 13A) ist ein Impuls mit der Polarität "0" oder "B'01" bei 317. Die Länge von A'01 ist kleiner als die von B'01, entsprechend dem Kleiner-Symbol (< ) bei 322. Der der Tabelle 310 zu entnehmende Ausgang zeigt die Ergebnisse des "00"- Signals mit der Bedeutung, daß die Zwischen-Bit-Kette ein Strang mit der Polarität "0" ist, was dasselbe Ergebnis ist, welches durch die diskutierte Boolesche Hardware Ausführungsform (Fig. 7) bestimmt wurde.
- Wenn die Verarbeitung durch die BLU 20 vervollständigt wurde, wird der kanonische Prozessor 25 (Fig. 11C) durch den Systemkoordinator in Block 232 der Fig. 6 aufgerufen. Insbesondere wird im Block 384 der ERZEUGE RESULTIERENDE BIT- KETTE-Routine (Fig. 11A) die durch die BLU 20 (Fig. 1A) berechnete Zwischen-Bit- Kette in den Eingangspuffer 383 (Fig. 11C) des kanonischen Prozessors 25 (Fig. 1A und 11C) gegeben. Der Eingangspuffer 383 (Fig. 11C) gibt einen Strang von "0'envu ein (540, 576, Fig. 14B) und der Elementpuffer 385 (Fig. 11C) ist leer (540, 574, Fig. 14B). Der Block 386 (Fig. 11A) wird angesteuert, um es dem kanonischen Prozessor 25 (Fig. 11C) zu ermöglichen, den Navigationsvektor gemäß der zweiten Indextabelle (Fig. 12A) zu erhalten, welcher mit einem Strang von "0'en" in dem Eingangspuffer (438, Fig. 12A) und einem leeren Elementpuffer (452, Fig. 12A) verbunden ist. Das in Bezug genommene Ergebnis ist GIB-ZU-EP (482, Fig. 12A) mit einer Statusvariable von "00010" (530, 534, Fig. 12B). Im Entscheidungsblock 388 (Fig. 11A) wird bestimmt, daß das Marker-Bit NIMM 1 in der Statusvariable nicht gesetzt wird und im Entscheidungsblock 396 (Fig. 11A) wird bestimmt, daß das NIMM-N-Bit ebenfalls nicht gesetzt wird. Die Verarbeitung setzt sich im Entscheidungsblock 402 (Fig. 11A) fort, welcher ebenfalls bestimmt, daß der GIB-ZU-SP-Marker nicht gesetzt wird. Im Block 406 (Fig. 11A) wird entschieden, daß das GIB-ZU-EP-Bit nicht gesetzt wird. Daher wird der Block 408 (Fig. 11A) angesteuert, um den Inhalt des Elementpuffers 385 (Fig. 11C) durch den Inhalt des Eingangspuffers 383 (Fig. 11C) zu ersetzen. Im Entscheidungsblock 410 (Fig. 11A) wird entschieden, daß der WEG-VON-SP-Marker nicht gesetzt wird, so daß die Verarbeitung im Block 416 (Fig. 11A) zu dem Entscheidungsblock 234 der VERARBEITE BOOLESCHE OPERATION-Routine (Fig. 6) zurückkehrt.
- Im Block 234 (Fig. 11A) wird bestimmt, daß eine Ende-einer-Bit-Kette-Bedingung weder für die Bit-Kette A noch für die Bit-Kette B existiert und es wird die Verarbeitung im Block 235 fortgesetzt, welcher die Länge des Impulses A' und die Länge des Impulses B' durch die im Block 226 (Fig. 6) berechnete minimale Länge von Bits reduziert. Im Entscheidungsblock 240 wurde die Länge des Impulses A' auf 0 Bit reduziert und in Block 242 wird der nächste Impuls, der Impuls 533 der Fig. 13A, von der Bit-Kette A erhalten. Im Block 224 wird entschieden, daß die Länge des Impulses B' 539 (Fig. 13A) nicht auf 0 Bit reduziert wird; sie wurde auf 8 Bit reduziert (540, 582, Fig. 14B). Impuls B' 539 (Fig. 13A) war 20 Bit lang und wurde um 12 Bit reduziert, nur 8 Bit übriglassend. Es wird der Entscheidungsblock 248 angesteuert und es existiert keine Ende-einer-Bit-Kette-Bedingung, weder in der Bit-Kette A noch in der Bit-Kette B, nach der Reduzierung der minimalen Länge sowohl von A' als auch von B' (540, 584, Fig. 14B).
- Die oben beschriebene Verarbeitung wird für jeden der verbleibenden Impulse der Ketten A und B, wie in den Fig. 14A und 14B, Zeilen 542 bis 554 zusammengefaßt, wiederholt. Wenn die Länge des letzten Impulses A' auf 0 reduziert wird (552, 580, Fig. 14B), wird während des Blocks 242 der nächste Impuls 537 (Fig. 13A) aus der Bit-Kette A 531 (Fig. 13A) erhalten. Während des Entscheidungsblocks 244 wird bestimmt, daß die Länge für den Impuls B' auf 0 reduziert wird (552, 582, Fig. 14B) und der Block 246 erhält den nächsten Impuls 547 (Fig. 13A) aus der Bit-Kette B 538 (Fig. 13A).
- Im Entscheidungsblock 248 der Fig. 6 wird festgestellt, daß eine Ende-einer-Bit- Kette-Bedingung in der Bit-Kette A existiert. Die letzte Gruppe von Bits 537 (Fig. 13A), die von der Bit-Kette A 531 (Fig. 13A) erhalten wurde, ist ein Format der erweiterten Elemente zur Darstellung einer Ende-einer-Bit-Kette-Bedingung in der Bit-Kette A (Fig. 2D). Daher führt der Block 231 die Verarbeitung zurück zu Block 230, um die Hardware- oder Software-Ausführungsformen der BLU auszuführen, um den Typ und die Polarität der Zwischen-Bit-Kette zu bestimmen.
- In der Fig. 7 führt die BLU Hardware-Ausführungsform die F6-Funktion 265 aus, um zu bestimmen, wie eine Ende-einer-Bit-Kette-Bedingung verarbeitet wird. Insbesondere Bezug nehmend auf die Fig. 9E, wenn eine Ende-einer-Bit-Kette-Bedingung in der Bit-Kette A existiert und die Boolesche Operation UND ist, dann gibt die Hardwarekonfiguration ein "EBSA + EBSB"-Signal aus, um zu signalisieren, daß eine Ende-einer-Bit-Kette-Bedingung in beiden Bit-Ketten A und B existiert, unabhängig von der in B verbleibenden Information. Die BLU-Ausführungsform (Fig. 10) gibt ebenfalls ein "EBSA + EBSB"-Signal aus, um eine Ende-einer-Bit-Kette- Bedingung in beiden Bit-Ketten A und B zu signalisieren. Insbesondere ist die Endeeiner-Bit-Kette-Bedingung für die Bit-Kette A bei 332 in der ersten Indextabelle (Fig. 10) indiziert. Die Bit-Kette B enthält einen Impuls mit einer Polarität "0" oder "B'01" bei 317 (Fig. 10). Das festgestellte Ergebnis ist ein "EBSA + EBSB"-Signal bei 327. Zurück zu Fig. 6: das "EBSA + EBSB"-Signal wird vom Block 230 zum kanonischen Prozessor 25 (Fig. 11C) über die ERZEUGE RESULTIERENDE BIT- KETTE-Routine (Fig. 11A) in Block 232 ausgegeben. In Block 384 der Fig. 11A wird das "EBSA + EBSB"-Signal in den Eingangspuffer 383 (Fig. 11C) gesetzt. Im Block 386 bezieht sich der kanonische Prozessor 25 (Fig. 11C) auf die zweite Indextabelle (Fig. 12A), um die Statusvariable zu bestimmen, welche den verbleibenden Abschnitt des kanonischen Prozessors 25 (Fig. 11C) instruiert, wie er die Ende-einer-Bit-Kette-Bedingung zu verarbeiten hat. Der Elementpuffer 385 (Fig. 11C) enthält einen Impuls mit der Polarität "1" bei 446 (Fig. 12A). Der Eingangspuffer 383 (Fig. 11C) ist ein "EBSA + EBSB"-Signal bei 442. Daher ist das durch die zweite Indextabelle angezeigte Ergebnis "10-EBSA + EBSB" bei 496 (Fig. 12A). "10-EBSA + EBSB" weist die Statusvariable "00101" auf. In den Entscheidungsblocks 388, 396, 402, 406, 410 der Fig. 11A bestimmt der kanonische Prozessor die von der zweiten Indextabelle (Fig. 12A) erhaltene Statusvariable und bestimmt, daß der GIB-ZU-SP-Marker und der WEG-VON-SP-Marker gesetzt werden 510 (Fig. 12B). Insbesondere wird im Entscheidungsblock 388 bestimmt, daß der NIMM-1-Marker nicht gesetzt wird und im Block 396 wird bestimmt, daß der NIMM-N-Marker ebenfalls nicht gesetzt wird. Im Block 402 wird bestimmt, daß der GIB-ZU-SP-Marker gesetzt wird und im Block 404 wird der Inhalt des Elementpuffers (385, Fig. 11C) (z.B. ein Impuls mit der Polarität "1") an den statischen Puffer (387, Fig. 11C) ausgegeben. Im Entscheidungsblock 406 wird bestimmt, daß der GIB-ZU-EP-Marker nicht gesetzt wird und im Block 410 wird bestimmt, daß der WEG-VON-SP-Marker gesetzt wird. Im Block 412 wird der Inhalt des statischen Puffers 385 (Fig. 11C), eine resultierende komprimierte Bit-Kette, zum Pufferspeicher 389 (Fig. 11C) ausgegeben und im Block 414 stoppt der kanonische Prozessor 25 (Fig. 11C) die Verarbeitung und verläßt das Programm VERARBEITE BOOLESCHE OPERATION (Fig. 6). Die durch die ERZEUGE RESULTIERENDE BIT- KETTE-Routine (Fig. 11C) erzeugte, komprimierte, resultierende Bit-Kette ist in der Fig. 13(B) gezeigt. Jeder von dem Elementpuffer 385 (Fig. 11C) an den statischen Puffer 387 (Fig. 11C) ausgegebene Impuls ist in der Fig. 13B getrennt dargestellt.
Claims (8)
1. Verfahren, welches einen Computer zum Umwandeln (Figur 3) einer Kette von
sich wiederholenden Daten, die eine Kette binärer Bits unbestimmter Länge (Figur
4A) enthalten, in ein komprimiertes Impulsformat (Figur 4B), mit welchem
Boolesche Operationen ausgeführt werden können und welches dargestellt ist durch
einen ersten Wert, welcher die sich wiederholenden Daten anzeigt, und einen
zweiten Wert, welcher die Anzahl der Wiederholungen anzeigt, verwendet, dadurch
gekennzeichnet, daß:
die aufeinanderfolgenden Bits der Kette in eine entsprechende Sequenz eines oder
mehrerer nicht komprimierter Impulse gruppiert werden, welche zusammen im
wesentlichen die gesamte Bit-Kette (Figur 4A; 120) darstellen, wobei jeder des
einen oder der mehreren nicht komprimierten Impulse einen Strang eines oder
mehrerer kontinuierlicher Bits der Kette enthält, welcher die gleiche Polarität
aufweist und ein End-Bit an einem Ende der Kette aufweist, welches eine gegenüber
der gleichen Polarität des assoziierten Impulses (Figur 4A; 124, 130, 136, 144)
entgegengesetzte Polarität aufweist; und
jeder der nicht komprimierten Impulse (Figur 4A; 124, 130, 136, 144) in Sequenz
in eine entsprechende Sequenz komprimierter Impulsformate (Figur 4B; 142, 150,
154, 168) kodiert wird, wobei jedes eine bestimmte Länge (Figur 2A) und ein
komprimiertes Impulsformat für jeden nicht komprimierten Impuls aufweist, wobei
das komprimierte Impulsformat als den ersten Wert einen ersten binären
Bit-kodierten Indikator (Figur 2A; 24) und als den zweiten Wert einen zweiten binären
Bitkodierten Indikator (Figur 2A; 26) aufweist, wobei der erste Indikator (Figur 2A;
24) die Polarität des einen oder der mehreren Bits gleicher Polarität des
entsprechenden nicht komprimierten Impulses zeigt und der zweite Indikator (Figur 2A;
126) die Anzahl der Bits gleicher Polarität anzeigt, die in dem entsprechenden nicht
komprimierten Impuls gruppiert sind.
2. Verfahren nach Anspruch 1, weiterhin dadurch gekennzeichnet, daß:
die Anzahl der Bits in den nicht komprimierten Impulsen für eines oder mehrere der
Impulse bestimmt wird (Figur 3A; 72); und
die Kodierung des einen oder der mehreren nicht komprimierten Impulse (Figuren
3A - 3B; 83, 89, 90, 92) einschließt, daß Wörter gemeinsamen Formats gebildet
werden, die das komprimierte Impulsformat aufweisen und daß in jedem der Wörter
gemeinsamen Formats eine Darstellung des ersten Indikators (Figur 2A; 24) und
des zweiten Indikators (Figur 2A; 26) für jeden einer variierenden Anzahl des einen
oder der mehreren nicht komprimierten Impulse gebildet wird, wobei die variierende
Anzahl abhängig von der Anzahl der bestimmten Bits variiert.
3. Verfahren nach nach Anspruch 2, weiterhin dadurch gekennzeichnet, daß:
jedes Wort gemeinsamen Formats zu einem Formatindikator (Figur 2; 22, 28, 38,
52) geformt wird, welcher eine Anzeige der Anzahl des einen oder der mehreren
nicht komprimierten Impulse darstellt.
4. Verfahren nach Anspruch 1, in dem die Kodierung des einen oder der mehreren
nicht komprimierten Impulse (Figur 48; 122) weiterhin dadurch gekennzeichnet ist,
jeder des einen oder der mehreren nicht komprimierten Impulse in ein erstes
komprimiertes Impulsformat kodiert wird, wenn ein Impuls mit einer Bitlänge von
2 bis 31 Bits (Figur 3; 88, 90) kodiert wird, in ein zweites komprimiertes
Impulsformat kodiert wird, wenn ein Impuls mit einer Bitlänge von 32 bis 2³²-1 Bits (Figur
3; 92) kodiert wird, in ein drittes komprimiertes Impulsformat kodiert wird, wenn
zwei Impulse kodiert werden, von denen jeder eine Bitlänge von 2 bis 5 Bits (Figur
3; 84, 89, 95, 102) aufweist, oder in ein viertes komprimiertes Impulsformat
kodiert wird, wenn drei Impulse kodiert werden, von denen jeder eine Bitlänge von
zwei oder drei Bits (Figur 4; 83, 97, 108) aufweist.
5. Verfahren nach Anspruch 1, weiterhin dadurch gekennzeichnet, daß:
der zweite Indikator kodiert wird, um die Anzahl der Bit gleicher Polarität
anzuzeigen, die in dem entsprechenden nicht komprimierten Impuls plus dem End-Bit mit
einer gegenüber den Bits gleicher Polarität entgegengesetzter Polarität gruppiert
sind.
6. Verfahren nach Anspruch 4, weiterhin dadurch gekennzeichnet, daß:
der erste binäre Bit-kodierte Indikator (Figur 2A; 24) ein einzelnes binäres Bit ist.
7. Prozessor zum Umwandeln (Figur 1A) einer Kette von sich wiederholenden
Daten, die eine Kette binärer Bits unbestimmter Länge (Figur 4A) enthalten, in ein
komprimiertes Impulsformat (Figur 4B), mit welchem Boolesche Operationen
ausgeführt werden können und welches dargestellt ist durch einen ersten Wert,
welcher die sich wiederholenden Daten anzeigt, und einen zweiten Wert, welcher
die Anzahl der Wiederholungen anzeigt, gekennzeichnet durch:
Mittel zum Gruppieren (Figur 1(A); 14) der aufeinanderfolgenden Bits der Kette in
einer entsprechende Sequenz eines oder mehrerer nicht komprimierter Impulse,
welche zusammen im wesentlichen die gesamte Bit-Kette (Figur 4A; 120)
darstellen, wobei jeder des einen oder der mehreren nicht komprimierten Impulse einen
Strang eines oder mehrerer kontinuierlicher Bits der Kette enthält, welcher die
gleiche Polarität aufweist und ein End-Bit an einem Ende der Kette aufweist,
welches eine gegenüber der gleichen Polarität des assoziierten Impulses (Figur 4A;
1 24, 130, 136, 144) entgegengesetzte Polarität aufweist; und
Mittel zum Kodieren (Figur 1(A); 14) jeder der nicht komprimierten Impulse (Figur
4A; 124, 130, 136, 144) in Sequenz in eine entsprechende Sequenz komprimierter
Impulsformate (Figur 4B; 142, 150, 154, 168), wobei jedes eine bestimmte Länge
(Figur 2A) und ein komprimiertes Impulsformat für jeden nicht komprimierten
Impuls aufweist, wobei das komprimierte Impulsformat als den ersten Wert einen
ersten binären Bit-kodierten Indikator (Figur 2A; 24) und als den zweiten Wert
einen zweiten binären Bit-kodierten Indikator (Figur 2A; 26) aufweist, wobei der
erste Indikator (Figur 2A; 24) die Polarität des einen oder der mehreren Bits gleicher
Polarität des entsprechenden nicht komprimierten Impulses zeigt und der zweite
Indikator (Figur 2A; 126) die Anzahl der Bits gleicher Polarität anzeigt, die in dem
entsprechenden nicht komprimierten Impuls gruppiert sind.
8. Vorrichtung zum Umwandeln (Figur 1A; 14) einer Kette von sich
wiederholenden Daten, die eine Kette binärer Bits unbestimmter Länge (Figur 4A) enthalten, in
ein komprimiertes Impulsformat (Figur 4B), mit welchem Boolesche Operationen
ausgeführt werden können und welches dargestellt ist durch einen ersten Wert,
welcher die sich wiederholenden Daten anzeigt, und einen zweiten Wert, welcher
die Anzahl der Wiederholungen anzeigt, gekennzeichnet durch:
Mittel zum Gruppieren (Figur 1(A); 14) der aufeinanderfolgenden Bits der Kette in
einer entsprechende Sequenz eines oder mehrerer nicht komprimierter Impulse,
welche zusammen im wesentlichen die gesamte Bit-Kette (Figur 4A; 120)
darstellen, wobei jeder des einen oder der mehreren nicht komprimierten Impulse einen
Strang eines oder mehrerer kontinuierlicher Bits der Kette enthält, welcher die
gleiche Polarität aufweist und ein End-Bit an einem Ende der Kette aufweist,
welches eine gegenüber der gleichen Polarität des assoziierten Impulses (Figur 4A;
124, 130, 136, 144) entgegengesetzte Polarität aufweist; und
Mittel zum Kodieren (Figur 1(A); 14) jeder der nicht komprimierten Impulse (Figur
4A; 124, 130, 136, 144) in Sequenz in eine entsprechende Sequenz komprimierter
Impuisformate (Figur 4B; 142, 150, 154, 168), wobei jedes eine bestimmte Länge
(Figur 2A) und ein komprimiertes Impuisformat für jeden nicht komprimierten
Impuls aufweist, wobei das komprimierte Impulsformat als den ersten Wert einen
ersten binären Bit-kodierten Indikator (Figur 2A; 24) und als den zweiten Wert
einen zweiten binären Bit-kodierten Indikator (Figur 2A; 26) aufweist, wobei der
erste Indikator (Figur 2A; 24) die Polarität des einen oder der mehreren Bits gleicher
Polarität des entsprechenden nicht komprimierten Impulses zeigt und der zweite
Indikator (Figur 2A; 126) die Anzahl der Bits gleicher Polarität anzeigt, die in dem
entsprechenden nicht komprimierten Impuls gruppiert sind.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10076187A | 1987-09-24 | 1987-09-24 | |
US07/185,888 US5036457A (en) | 1987-09-24 | 1988-04-22 | Bit string compressor with boolean operation processing capability |
PCT/US1988/003300 WO1989003084A1 (en) | 1987-09-24 | 1988-09-22 | A bit string compressor with boolean operation processing capability |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3855712D1 DE3855712D1 (de) | 1997-01-30 |
DE3855712T2 true DE3855712T2 (de) | 1997-06-19 |
Family
ID=26797516
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3856337T Expired - Lifetime DE3856337T2 (de) | 1987-09-24 | 1988-09-22 | Bitfolgekompressor geeignet für boolesche Operationen |
DE3855712T Expired - Lifetime DE3855712T2 (de) | 1987-09-24 | 1988-09-22 | Bitkettenverdichter mit verarbeitungsmöglichkeit für boolesche-operationen |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3856337T Expired - Lifetime DE3856337T2 (de) | 1987-09-24 | 1988-09-22 | Bitfolgekompressor geeignet für boolesche Operationen |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP0393087B1 (de) |
AT (2) | ATE180932T1 (de) |
AU (1) | AU620365B2 (de) |
CA (1) | CA1311301C (de) |
DE (2) | DE3856337T2 (de) |
WO (1) | WO1989003084A1 (de) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5974411A (en) * | 1997-02-18 | 1999-10-26 | Sand Technology Systems International, Inc. | N-way processing of bit strings in a dataflow architecture |
US9298420B2 (en) | 2013-07-26 | 2016-03-29 | International Business Machines Corporation | Identification of the bit position of a selected instance of a particular bit value in a binary bit string |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4319225A (en) * | 1974-05-17 | 1982-03-09 | The United States Of America As Represented By The Secretary Of The Army | Methods and apparatus for compacting digital data |
US4117470A (en) * | 1976-10-08 | 1978-09-26 | Data General Corporation | Data bit compression system |
US4558302A (en) * | 1983-06-20 | 1985-12-10 | Sperry Corporation | High speed data compression and decompression apparatus and method |
JPH0828053B2 (ja) | 1983-08-08 | 1996-03-21 | 株式会社日立製作所 | データ記録方法 |
JPS61107818A (ja) * | 1984-10-30 | 1986-05-26 | Nec Corp | エントロピ−符号化方式とその装置 |
US4626829A (en) * | 1985-08-19 | 1986-12-02 | Intelligent Storage Inc. | Data compression using run length encoding and statistical encoding |
-
1988
- 1988-09-22 WO PCT/US1988/003300 patent/WO1989003084A1/en active IP Right Grant
- 1988-09-22 EP EP88909930A patent/EP0393087B1/de not_active Expired - Lifetime
- 1988-09-22 AT AT95202343T patent/ATE180932T1/de not_active IP Right Cessation
- 1988-09-22 DE DE3856337T patent/DE3856337T2/de not_active Expired - Lifetime
- 1988-09-22 AT AT88909930T patent/ATE146609T1/de not_active IP Right Cessation
- 1988-09-22 AU AU27888/89A patent/AU620365B2/en not_active Expired
- 1988-09-22 DE DE3855712T patent/DE3855712T2/de not_active Expired - Lifetime
- 1988-09-23 CA CA000578338A patent/CA1311301C/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
AU620365B2 (en) | 1992-02-20 |
DE3856337D1 (de) | 1999-07-08 |
DE3856337T2 (de) | 2000-03-23 |
ATE146609T1 (de) | 1997-01-15 |
CA1311301C (en) | 1992-12-08 |
EP0393087A1 (de) | 1990-10-24 |
DE3855712D1 (de) | 1997-01-30 |
EP0393087B1 (de) | 1996-12-18 |
WO1989003084A1 (en) | 1989-04-06 |
EP0393087A4 (en) | 1991-11-21 |
ATE180932T1 (de) | 1999-06-15 |
AU2788889A (en) | 1989-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0260748B1 (de) | Verfahren und Schaltungsanordung zur Bitratenreduktion | |
DE69027606T2 (de) | Vorrichtung zur datenkompression | |
EP0230437B1 (de) | Verfahren zum komprimieren und dekomprimieren mehrerer strukturverwandter datenfolgen sowie einrichtungen zur durchführung des verfahrens | |
DE69313540T2 (de) | Verbesserte Vorrichtung zur variablen Längendekodierung | |
DE69725215T2 (de) | Verfahren und Vorrichtung zur Komprimierung und Dekomprimierung von Schrifttypen | |
DE69706439T2 (de) | Rechnersortiersystem zur datenkompression | |
DE69413347T2 (de) | Auf die Bytegrenze ausgerichtete Datenkomprimierung | |
DE4340591C2 (de) | Datenkompressionsverfahren unter Verwendung kleiner Wörterbücher zur Anwendung auf Netzwerkpakete | |
DE69905343T2 (de) | Blockweiser adaptiver statistischer datenkompressor | |
DE69024629T2 (de) | Vorrichtung zur kompression von datenlängen und datenfolgen | |
DE69724347T2 (de) | Parallele Datenkomprimierung und -dekomprimierung | |
DE60107964T2 (de) | Vorrichtung zur kodierung und dekodierung von strukturierten dokumenten | |
DE69422654T2 (de) | Verdichter für Kodes variabeler Länger | |
DE68926676T2 (de) | Verfahren und gerät zur statistischen kodierung von digitalen daten | |
DE2264090A1 (de) | Datenverdichtungssystem | |
DE69433620T2 (de) | Datenkomprimierungsverfahren | |
DE3606869A1 (de) | Vorrichtung zur datenkompression | |
DE69607529T2 (de) | Kodierung von videofarbbildern | |
DE60302203T2 (de) | Anordnung zur Komprimierung einer Datentabelle | |
DE69820230T2 (de) | N-weg verarbeitung von bitketten in einer datenflussarchitektur | |
DE4403917A1 (de) | Vorrichtung zum Berechnen einer Besetzungszählung | |
DE2900586C2 (de) | Anordnung zum Decodieren von Codewörtern variabler Länge | |
DE3855712T2 (de) | Bitkettenverdichter mit verarbeitungsmöglichkeit für boolesche-operationen | |
DE69627391T2 (de) | Verfahren und system zum durchführen einer booleschen operation auf bitketten unter benutzung einer maximalen bitscheibe | |
DE3751371T2 (de) | Arithmetische Kodierung mit auf der Entscheidungsgeschichte basierender Wahrscheinlichkeitsschätzung. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |