DE69328811T2 - Opcode abhängige Komprimierung für ein Window-System. - Google Patents
Opcode abhängige Komprimierung für ein Window-System.Info
- Publication number
- DE69328811T2 DE69328811T2 DE69328811T DE69328811T DE69328811T2 DE 69328811 T2 DE69328811 T2 DE 69328811T2 DE 69328811 T DE69328811 T DE 69328811T DE 69328811 T DE69328811 T DE 69328811T DE 69328811 T2 DE69328811 T2 DE 69328811T2
- Authority
- DE
- Germany
- Prior art keywords
- data
- data points
- information
- encoding
- request
- 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 - Fee Related
Links
- 238000007906 compression Methods 0.000 title claims description 20
- 230000006835 compression Effects 0.000 title claims description 20
- 230000001419 dependent effect Effects 0.000 title 1
- 238000000034 method Methods 0.000 claims description 27
- 238000004891 communication Methods 0.000 claims description 25
- 230000009467 reduction Effects 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims description 5
- 238000006722 reduction reaction Methods 0.000 claims 6
- 238000012360 testing method Methods 0.000 claims 5
- 238000012795 verification Methods 0.000 claims 2
- 238000010276 construction Methods 0.000 claims 1
- 238000011156 evaluation Methods 0.000 claims 1
- 230000006837 decompression Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000013144 data compression Methods 0.000 description 3
- 238000005056 compaction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30178—Runtime instruction translation, e.g. macros of compressed or encrypted instructions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
- Information Transfer Between Computers (AREA)
Description
- Die vorliegende Erfindung bezieht sich auf die Datenkompression und insbesondere auf eine befehlscodespezifische Kompression für Fenstersysteme, die den Durchsatz und die Leistung von Fensteranwendungen erhöht, wenn häufig benutzte Befehlscodes (opcodes) und Befehlscodesequenzen komprimiert werden.
- Ein vom Massachusetts Institute of Technology (MIT) in Cambridge, Massachussetts, Vereinigte Staaten von Amerika, gesponsertes Konsortium schlug das X-Window-System für Grafiksysteme vor, das es separaten Anwendungen scheinbar gleichzeitig zu laufen ermöglicht, wie es im "X Window System - CLibrary and Protocol Reference" von Robert W. Scheifler et al. beschrieben ist, das von Digital Press veröffentlicht wurde. Jede Anwendung wird auf einem Computer abgearbeitet und auf einer Grafikanzeige innerhalb eines oder mehrerer "Fenster" auf der Anzeige angezeigt. Die verschiedenen Anwendungen oder Clients sind mit einem Anzeige- Server über einen bidirektionalen Datenpfad gekoppelt, wie beispielsweise ein lokales Netzwerk oder eine Fernkommunikationsverbindung, die Telefonleitungen einschließt. Der Anzeige-Server formatiert Anforderungen aus den Clients für eine richtige Anzeige innerhalb des richtigen Fensters bzw. der richtigen Fenster. Der Anzeige-Server stellt wiederum X- Erwiderungen, Ereignisse und Fehler zurück an die Clients zur Verfügung. Die Anforderungen aus den Clients umfassen eine Verbindungsanforderung, die um einen Zugriff auf die Anzeige bittet, und Datenanforderungen zum Übertragen von Daten und Text an den Anzeige-Server. Die Kommunikation zwischen dem Anzeige-Server und den Clients wird über ein X- Wire-Protokoll ausgeführt. Die Anforderungen in dem X-Window-System umfassen mehrere Bytes, die ein Anforderungskopfteil (header) und eine variable Anzahl nachfolgender Bytes einschließen. Das X-Wire-Protokoll ist nicht kompakt und nicht für eine hocheffiziente Datenübertragung ausgebildet. Die X-Wire-Daten können durch Fernkommunikationseinrichtungen, wie beispielsweise Modems, komprimiert und dekomprimiert werden, aber die interaktive Kommunikation, Kompression und Fehlerkorrektur bewirken eine Latenz bei dem Umlauf, d. h. verlangsamen die Kommunikation. So kann insbesondere bei Kanälen geringer Bandbreite, wie beispielsweise Fernkommunikationsverbindungen, die Kommunikation zwischen dem Anzeige-Server und den Clients ziemlich langsam sein. Folglich wird irgendeine Form der Datenkompression vor der Kommunikationsverbindung gewünscht, um die Interaktion zwischen dem Client und dem Anzeige-Server zu beschleunigen.
- Frühere auf X-Window-Systeme angewendete Kompressionstechniken umfassen die Verwendung eines generischen Kompressionsalgorithmus, wie beispielsweise den UNIX-LZW-Algorithmus, der von Terry A. Welch in "A Technique for High Performance Data Compression", IEEE Computer, Band 17, Nr. 6, Juni 1984, Seiten 8-19, beschrieben wird. Ein anderer Algorithmus, der entweder separat oder in Verbindung mit dem generischen Kompressionsalgorithmus verwendet worden ist, ist ein Delta-Codierungs- oder Differenzdatensatz-Codierungsalgorithmus, wie er im Abschnitt 7.0 von "X Remote and Terminal Services" von Kevin Paul Herbert in den Konferenzunterlagen der Silicon Valley Networkung Conference (SVNC) von 1991 beschrieben ist. Zusätzliche Algorithmen, die auf dem X Window Consortium E-Mail-Network vorgeschlagen worden sind, umfassen das Entfernen nicht verwendeter Bytes und spezielle Bitabbildungskompressionsalgorithmen für Bilder. Sämtliche dieser Kompressionstechniken unterstützen die Beschleunigung der Kommunikation zwischen Clients und dem Anzeige-Server, aber es sind weitere Geschwindigkeitsverbesserungen insbesondere für Kanäle geringer Bandbreite erwünscht.
- Dementsprechend schafft die vorliegende Erfindung eine befehlscodespezifische Kompression für Fenstersystemanwendungen, die die Protokollnachrichten weiter komprimiert, um die Leistung von Fensteranwendungen bei Kanälen geringer Bandbreite zu verbessern. An der Schnittstelle zwischen einem Client oder einer X-Window-Anwendung und einem Anzeige- Server kann die Kompression entweder durch die X-Library- Funktionen oder durch einen Proxy-Server angewendet werden. Der Proxy-Server ist mit einem Computer oder mit Computern gekoppelt, auf welchem bzw. welchen sich Clients aufhalten, und darüber hinaus mit einer Server-Schnittstelle über eine Kommunikationsverbindung. Der Proxy-Server komprimiert die Anforderungen aus den Clients für die Anzeigeschnittstelle in Datenpakete, die an die Server-Schnittstelle über die Kommunikationsverbindung gesendet werden. Die Server- Schnittstelle komprimiert dann die Daten und leitet die Daten aus den Datenpaketen an geeignete Client-Dateneingänge eines Anzeige-Servers weiter. Der Anzeige-Server verarbeitet die Daten für jeden Client und stellt die verarbeiteten Daten in dem (den) geeigneten "Fenster(n)" auf einer Anzeigeeinrichtung zur Verfügung. Erwiderungen, Ereignisse und Fehler aus der Anzeigeeinrichtung werden in gleicher Weise von der Server-Schnittstelle komprimiert, über die Kommunikationsverbindung in Form von Datenpaketen an den Proxy-Server übermittelt und dekomprimiert und an den richtigen Client gelenkt.
- Spezielle X-Befehlscodes umfassen PolySegment, PolyLine, PolyRectangle, PolyFillRectangle und ImageText8. Die oben genannten Poly-Befehlscodes umfassen ein Anforderungskopfteil (header) gefolgt von Datenpaaren, wobei jedes Datenpaar zwei 16-Bit-Datenwerte oder 4 Datenbytes aufweist. Sie werden auf ähnliche Weise verarbeitet, indem drei Durchläufe durch N ähnliche Paare von Daten aus jeder X-Anforderung genommen werden. Die drei Durchläufe werden gemacht, um zu bestimmen, ob Anzeigepaare darstellende Daten innerhalb der Anforderung aus 4 Bytes pro Datenpaar (zwei 16-bit-Datenwerte) in 2 Bytes pro Datenpaar (zwei 8-Bit-Datenwerte) reduziert werden können, sowie um die Anzahl der wiederholten Datenpaare zu bestimmen. Der erste Durchlauf (pass) sieht die Daten "wie sie sind" durch. Der zweite Durchlauf codiert die Datenpaare in bezug auf ein erstes Datenpaar. Der dritte Durchlauf codiert die ursprünglichen Datenpaare relativ zu dem letzten (vorhergehenden) Datenpaar. Der Durchlauf, der die größte Anzahl von Zwei-Byte-Datenpaaren und/oder die meisten sich wiederholenden Datenpaare erzeugt, wird ausgewählt, um die vollständige X-Anforderung zu bearbeiten. Für die vollständige X-Anforderung werden die Daten dann cachegespeichert, wie sie verarbeitet werden, und neue Datenpaare werden mit den Datenpaaren in dem Cache verglichen. In den codierten oder komprimierten Daten zeigt ein Identifiziererbyte an, ob jedes von zwei aufeinanderfolgenden Datenpaaren als 4-Byte-Werte, 2-Byte-Werte oder als das gleiche wie das vorhergehende Datenpaar in dem Cache definiert ist. Der richtige Wert für das Datenpaar (die Datenpaare) folgt dem Identifiziererbyte, wenn es nicht das gleiche wie das vorhergehende Datenpaar in dem Cache ist. In gleicher Weise werden die Anforderungskopfteile für aufeinanderfolgende Anforderungen verglichen, und sofern sie gleich sind, werden sie komprimiert, indem ein geeignetes unbenutztes Bit in den nachfolgenden Anforderungskopfteilführungsbytes gesetzt wird.
- Bei ImageText8-Daten sucht der Kompressionsalgorithmus nach identifizierten Sequenzen von Anforderungen mit spezifizierten wiederholten Datenmustern und reduziert eine identifizierte Sequenz in eine einzige komprimierte Anforderung. Die ImageText8-Verarbeitung sichert eine Anforderung für eine begrenzte, vorgegebene Zeitdauer, um eine Anforderungssequenz zu identifizieren. Ob eine ImageText8-Sequenz identifiziert wird oder nicht, der ImageText8-Kopfteil wird ebenso komprimiert, wie oben für die Datenpaar-Anforderungen erörtert wurde, indem Bits in den nachfolgenden ImageText8-Kopf teilführungsbytes gesetzt werden, wenn eine Übereinstimmung gefunden wird.
- Die Aufgaben, Vorteile und neuartigen Merkmale der vorliegenden Erfindung, wie sie in den anhängigen Ansprüchen definiert ist, werden aus der folgenden detaillierten Beschreibung, wenn sie im Zusammenhang mit den beigefügten Zeichnungen gelesen wird, ersichtlich.
- Fig. 1 ist eine Blockdarstellungsansicht eines X-Window- Systems gemäß der vorliegenden Erfindung.
- Fig. 2 ist eine Blockdarstellungsansicht eines Abschnitts einer Schnittstelle zwischen Clients und einem Anzeige-Server für das X-Window-System gemäß der vorliegenden Erfindung.
- Fig. 3 ist eine Darstellung der Bilddatenformate für das X-Window-System.
- Fig. 4 ist eine Darstellung eines unter Verwendung der vorliegenden Erfindung anzuzeigenden Bildes.
- Fig. 5 ist eine Darstellung der Daten für das Bild gemäß Fig. 4, die gemäß der vorliegenden Erfindung komprimiert sind.
- Fig. 6 ist eine Darstellung einer ImageText8-Sequenz von Anforderungen für das X-Window-System.
- Es wird jetzt auf Fig. 1 Bezug genommen, in der ein X- Window-System gezeigt ist, das eine Mehrzahl von Client-Anwendungen 12 aufweist, die auf einem oder mehreren Computern ablaufen, ein Anzeigesystem mit einem Anzeige-Server 14 und eine Anzeigeeinrichtung 16 mit einer Mehrzahl von Fenstern 18, innerhalb welcher die Client-Anwendungen angezeigt werden. Die Ausgaben aus den Client-Anwendungen 12 im X-Wire- Protokoll werden einem Proxy-Server 20 oder einer XLibrary- Funktion innerhalb der Client-Anwendung eingegeben. Der Proxy-Server 20 verarbeitet die Eingaben aus den Client-An wendungen 12, um codierte, komprimierte Pakete der Daten zu erzeugen, die über eine Kommunikationsverbindung 22 an eine Server-Schnittstelle 24 gesendet werden. Die Server-Schnittstelle 24 decodiert und dekomprimiert die Datenpakete aus der Kommunikationsverbindung 22, um die ursprünglichen X- Wire-Protokollinformationen aus den Client-Anwendungen zu rekonstruieren. Die ursprünglichen X-Wire-Protokollinformationen werden dem Anzeige-Server 14 als Daten aus jeder Client-Anwendung 12 eingegeben. Der Anzeige-Server 14 verarbeitet die Daten aus jeder Client-Anwendung 12 für eine Anzeige in dem richtigen Fenster (den richtigen Fenstern) 18 auf der Anzeigeeinrichtung 16.
- Wie es in Fig. 2 gezeigt ist, sind die Konfiguration des Proxy-Servers 20 und der Server-Schnittstelle 24 im wesentlichen identisch, so daß nur eine im Detail beschrieben wird. Die X-Wire-Protokolldatenströme werden anfänglich einem X-befehlscodespezifischen Kompressionsalgorithmus/Codierer 32 eingegeben, wo die Daten komprimiert werden, wie es detaillierter unten beschrieben wird. Die anfänglich komprimierten Daten aus dem X-Befehlscode-Codierer 32 oder die ursprünglichen Daten, sofern keine Befehlscodekompression angewendet wird, werden einem Delta-Kompaktor (Verdichter) - Algorithmus 34 eingegeben. Die Daten am Eingang zu dem Delta-Kompaktor-Algorithmus 34 oder, in Abhängigkeit von der Länge der Daten, die aus dem Delta-Kompaktor-Algorithmus ausgegebenen Daten werden dann einem generischen Kompressionsalgorithmus 36 zur Kombination mit ähnlich komprimierten Daten aus oder für andere Client-Anwendungen 12 in Datenpakete mit einem Kopfteil (header) und einem Anhang (trailer) eingegeben und über die Kommunikationsleitung 22 übermittelt. Der Paket-Kopfteil enthält ein SOequenzbyte, das die Sequenznummer des Pakets in einem Strom von Paketen anzeigt, und ein Client-Anwendung-Identifikationsnummernbyte. Der Anhang (Trailer) enthält zwei zyklische Redundanzprüfungsbytes (CRC-Bytes) und ein spezielles Rahmenbyte. Es kann ein Byte in dem Paket von dem generischen Kompressionsalgorithmus 36 hinzugefügt werden, wenn die Quelle oder das Ziel der Daten innerhalb des Pakets von oder zu einer anderen Client-Anwendung umgeschaltet wird.
- Der Paketstrom wird durch den Proxy-Server/die Server- Schnittstelle 20/24 aus der Kommunikationsleitung 22 empfangen und decodiert. Der Kopfteil jedes Pakets wird für einen Vergleich mit dem Kopfteil des nächsten Pakets cache-gespeichert, um eine korrekte Sequenz von Paketen zu bestimmen, d. h., ob keine Pakete verlorengingen. Die Daten werden an einen generischen Dekompressionsalgorithmus 42 geleitet und dann an einen geeigneten Delta-Dekompaktionsalgorithmus 44 für den bestimmten Client, wenn angezeigt. Der sich ergebende Datenstrom aus dem generischen Dekompaktionsalgorithmus, sofern keine Delta-Dekompression angezeigt wird, oder aus dem Delta-Dekompressionsalgorithmus wird einem Xcode-spezifischen Dekompressionsdecodieralgorithmus 46 eingegeben, wenn angezeigt wird, daß das ursprüngliche X-Wire- Protokoll für oder aus jeder der Client-Anwendungen 12 rekonstruiert werden soll.
- Daten für Bilder können in dem X-Wire-Protokoll entweder als Liniensegmente, PolySegment, zusammenhängende Linien, PolyLine, oder als Rechtecke, PolyRectangle und PolyFill- Rectangle, übermittelt werden. Die Codierfunktion für jede dieser Anforderungstypen ist xspecEncodePolySeg, xspecEncodePolyLine oder xspecEncodePolyRect. Entsprechende Funktionen sind für die jeweiligen Anforderungsdecodierer vorhanden. Wie es in Fig. 3 gezeigt ist, hat eine PolySegment- X-Anforderung aus einer Client-Anwendung 12 einen Zwei-Teil- Anforderungskopfteil von 4 plus 12 Bytes, gefolgt von Paaren von xy-Datenpunkten, wobei jeder Datenpunkt die Koordinate für einen Endpunkt eines Liniensegments bestimmt. Die Anzahl der Datenpunktpaare für jede PolySegment-Anforderung ist in dem Kopfteil enthalten. Jede Koordinate für jeden Datenpunkt wird als ein 16-Bit(2-Byte)-Wert ausgedrückt, so daß die Definition eines Liniensegments 8 Bytes erfordert. Eine Poly- Line-X-Anforderung hat den gleichen Typ eines Kopfteils wie die PolySegment-X-Anforderung mit Ausnahme der Identifikation des Befehlscodetyps. Benachbarte Datenpunkte folgen dem Kopfteil, ausgedrückt in xy-Koordinaten, wobei der vorhergehende Punkt der Startpunkt für ein Liniensegment ist, das mit dem aktuellen Punkt endet. Schließlich ist eine Poly- Rectangle-X-Anforderung der Polysegment-X-Anforderung sehr ähnlich mit der Ausnahme, daß anstelle der Verbindung zweier Datenpunkte miteinander ein Startpunkt in xy-Koordinaten und ein Bereichsausdehnungswert in Form einer Höhe und einer Breite (hw) des Rechtecks das Datenpunktpaar bilden.
- Die Codierung einer PolySegment-X-Anforderung wird als Beispiel der Kompression/Codierung gemäß der vorliegenden Erfindung benutzt. Ein Bild, wie beispielsweise das in Fig. 4 gezeigte, weist eine Mehrzahl von Liniensegmenten auf, die angezeigt werden sollen. Dieses Bild wird ohne weiteres als ein Polysegment angezeigt, wobei das erste Liniensegmentpaar von Datenpunkten die Punkte (1), (2) sind. Nach dem Kopfteil werden die Datenpunkte in Paaren gruppiert, wie es in Fig. 3 gezeigt ist, wobei man sich numerisch vom Punkt (1) zum Punkt (14) bewegt. Die folgende Tabelle 1 liefert in Spalte A die Koordinatenwerte für jeden Datenpunkt des Bildes. TABELLE I
- Der erste Schritt der Codierung besteht darin, die ersten N Datenpunkte in der PolySegment-X-Anforderung zu verarbeiten. Die tatsächliche Anzahl der Datenpunkte in der Anforderung kann größer oder geringer als N sein. Sofern sie geringer als N ist, werden sämtliche Datenpunkte überprüft. Wie es in Fig. 5 gezeigt ist, enthält ein Teil des ersten Schritts einen ersten Durchlauf, in welchem die Datenpunkte "so wie sie sind" getestet werden, um zu sehen, wie viele auf ein einzelnes Byte reduziert werden können, d. h. einen Wert aufweisen, der geringer als dezimal 256 ist. Dann werden in einem zweiten Durchlauf sämtliche der Datenpunkte in bezug auf einen ersten Datenpunkt relativiert, und es wird die Anzahl der Datenpunkte, die jetzt auf ein einziges Byte reduziert werden können, getestet, d. h. die einen Wert im Bereich von +/-127 aufweisen. Schließlich werden in einem dritten Durchlauf die Datenpunkte in bezug auf den jeweils letzten Daten punkt relativiert und getestet, um zu bestimmen, wie viele auf ein einziges Byte reduziert werden können. Gemäß der obigen Tabelle I, Spalte A, können vier Datenpunkte in 8- Bit-Werten ausgedrückt werden, und unter Spalte C können 9 Datenpunkte in 8-Bit-Werten ausgedrückt werden. Dann wird die Anzahl der sich wiederholenden Datenpunkte für jeden Durchlauf bestimmt, um zu einer Effektivitätszahl (figure of merit) für die Codierung zu gelangen. Für die 14 Datenpunkte in den Spalten A und B gibt es keine sich wiederholenden Datenpunkte. Die Effektivitätszahl ist 14/14 = 1. Für die Spalte C gibt es sechs einzigartige Datenpunkte, so daß die Effektivitätszahl 14/6 = 2,33 ist. Auf der Grundlage dieser Analyse der ersten N Datenpunkte, wird die gesamte PolySegment-X-Anforderung relativiert zu dem letzten Datenpunkt verarbeitet, da diese Codiertechnik die größte Anzahl von Datenpunkten aufweist, die Werte haben, die auf ein einzelnes Datenbyte reduziert werden können, und die beste Effektivitätszahl für wiederholte Datenpunkte aufweist.
- Der zweite Schritt besteht darin, die vollständige Anforderung unter Verwendung der ausgewählten Codiertechnik zu komprimieren, bei diesem Beispiel die in Spalte C der Tabelle I dargestellte Technik. Wie es in Fig. 5 veranschaulicht ist, wird für jedes Paar der Datenpunkte ein Identifiziererbyte eingerichtet, bei dem die ersten vier Bits anzeigen, wie der Wert des ersten Datenpunkts des Paars bestimmt werden soll, und die letzten vier Bits anzeigen, wie der Wert des zweiten Datenpunkts des Paars bestimmt werden soll. Wenn die Datenpunkte empfangen werden, werden sie in einen Am-längsten-unbenutzt(LRU)-Ersetzungs-Cache-Speicher plaziert, so daß sich die jüngsten Datenpunkte beim Cachespeicherplatz 0 befinden. Bei diesem speziellen Beispiel werden zwei Konfigurationen von vier Bits, das binärcodierte Dezimal F und das binärcodierte Dezimal E reserviert, um anzuzeigen, daß der zugehörige Datenpunkt entweder zwei 16-Bit- Werte bzw. zwei 8-Bit-Werte ist, und der Wert folgt dem Indikatorbyte. Wenn jedoch der Datenpunkt der gleiche ist, wie ein Datenpunkt in dem Cache-Speicher, dann wird der den Index in den Cache darstellende Wert verwendet.
- Wendet man dies auf das Beispiel gemäß Tabelle I an, so hat der erste Datenpunkt eine Koordinate mit einem Wert außerhalb des Bereichs von +/- 127, wie auch der zweite Datenpunkt. Beim Datenpunkt (2) ist der Wert des Datenpunkts (1) im Speicherplatz 0 in dem Cache-Speicher, aber die Werte sind nicht gleich. Folglich hat das Identifiziererbyte für das erste Datenpunktpaar einen Wert "FF" und wird von den acht Bytes gefolgt, die die vier Werte der xy-Koordinaten des ersten Datenpunktpaars enthalten. Datenpunkt (3) wird mit den Speicherplätzen 0 und 1 in dem Cache-Speicher verglichen, die den Datenpunkten (2) bzw. (1) entsprechen. Da keine Gleichheit mit einem der beiden Punkten in dem Cache vorhanden ist und der Wert außerhalb des Bereichs +/- 127 liegt, wird "F" in den ersten Teil des nächsten Identifiziererbytes eingefügt. Jedoch hat der Datenpunkt (4) den gleichen Wert wie der Datenpunkt (2), welcher sich am Speicherplatz 1 in dem Cache-Speicher in bezug auf den Datenpunkt (4) befindet. Folglich ist der zweite Teil des nächsten Identifiziererbytes "1", so daß das Identifiziererbyte zu "F1" wird. Dem Identifiziererbyte folgen dann die vier Bytes, die erforderlich sind, um die Werte für den Datenpunkt (3) bereitzustellen. Das nächste Paar von Datenpunkten (5) und (6) hat keine gleichen Werte in dem Cache-Speicher, und der Datenpunkt (5) erfordert 16 Bits, während der Datenpunkt (6) nur 8 Bits erfordert. So wird der nächste Identifizierer zu "FE", gefolgt von 6 Bytes Datenwerten. Dem Prozeß entsprechend wird das nächste Paar Datenpunkte als "E1" plus die beiden Bytes für den Datenpunkt (7) komprimiert. Die abschließenden drei Paare Datenpunkte haben entsprechende Werte im Cache, so daß nur das Identifiziererbyte für jedes Paar erforderlich ist und jedes Identifiziererbyte "11" ist, da sich die gleichen Werte für jeden Datenpunkt am Cache-Speicherplatz 1 befinden. Dies komprimiert die Daten für 7 Liniensequente, die ursprünglich von 56 Bytes (4 Bytes pro Punkt mal 14 Punkten) zur Verfügung gestellt wurden, auf 27 Bytes.
- Auf ähnliche Weise kann eine PolyLine-X-Anforderung unter Verwendung aufeinanderfolgender Paare von Datenpunkten codiert und komprimiert werden, die Änderungen in der Richtung eines kontinuierlichen Linienbildes markieren. Der gleiche Prozeß findet auf eine PolyRectangle-X-Anforderung Anwendung. Beim Verarbeiten der PolyRectangle-X-Anforderung jedoch werden die Datenpunktkoordinatenwerte und Flächenausdehnungswerte separat codiert und zwei separaten Cache-Speichern während der Kompressionsphase gespeichert, so daß die Datenpunkte mit Datenpunkten und Bereichsausdehnungswerte mit Bereichsausdehnungswerten verglichen werden. Die erste Tetrade des Identifiziererbytes ist eine Datenkoordinatentetrade und die zweite Tetrade ist eine Bereichsausdehnungstetrade.
- Eine weitere Kompression kann durch Cache-Speicherung des Anforderungskopfteils von einer früheren X-Anforderung verwirklicht werden, um zu bestimmen, ob es eine Identität zwischen Kopfteilfeldern in aufeinanderfolgenden Anforderungen gibt. Wenn dies der Fall ist, werden geeignete, anderenfalls leere Bits, die anzeigen,. welche Kopfteilfelder sich nicht ändern, in den ersten vier Bytes des Kopfteils gesetzt und die zugehörigen Felder in den verbleibenden 12 Bytes des Kopfteils werden gelöscht.
- ImageText8 ist eine X-Anforderung zum Anzeigen von Textbildzeichen. Es gibt bestimmte gemeinsame Sequenzen, die beim Schreiben von Zeichen auf eine Anzeige auftreten. Eine derartige Sequenz ist eine Triade von X-Anforderungen zum Schreiben eines nächsten Zeichens auf eine Zeile angezeigten Textes, wie sie in Fig. 6 gezeigt ist. Die erste X-Anforderung löscht den Cursor auf der Anzeige, indem sie ein Leerzeichen bereitstellt, die zweite Anforderung schreibt das gewünschte Zeichen an den gleichen Ort auf der Anzeige und die dritte Anforderung schreibt den Cursor als Leerschritt mit einem abweichenden grafischen Context an den nächsten Ort auf die Anzeige. Das "D" in dem ImageText8-Format zeigt das Fenster an (X Window "zeichenbar"), "GC" zeigt einen Grafikkontext an, "xy" zeigt den Ort auf der Anzeige an und "TEXT" ist das an dem gekennzeichneten Ort mit dem speziellen Grafikkontext anzuzeigende Zeichen. Anforderung 1 R1 zeigt an, daß ein zeichenbares Zeichen an dem Ort (1) unter Verwendung des Graphikkontexts 1 geschrieben werden soll, wobei das Zeichen ein "Leerschritt" ist, um den gegenwärtig an diesem Ort befindlichen Cursor zu löschen. Anforderung 2 R2 zeigt an, daß ein zeichenbares Zeichen "B" an den gleichen Ort (1) unter Verwendung des gleichen Grafikkontextes geschrieben werden soll. Schließlich zeigt Anforderung 3 R3 an, daß ein zeichenbares Zeichen "Leerzeichen" an den nächsten Ort (2) unter Verwendung des Grafikkontextes 2, wie beispielsweise eine invertierte Anzeige, geschrieben werden soll, um den Cursor zu erzeugen. Eine Zustandsmaschine cache-speichert die erste Anforderung R1 für eine vorgegebene Zeitdauer und vergleicht nachfolgende Anforderungen mit gespeicherten Sequenzen, die mit der ersten Anforderung R1 beginnen. In dieser Situation wird dann, wenn eine zugehörige zweite Anforderung R2 gefunden wird, diese ebenfalls für eine vorgegebene Zeitdauer cache-gespeichert, um die dritte Anforderung R3 zu suchen. Wenn die drei Anforderungen innerhalb einer vorgegebenen Zeitdauer auftreten, dann wird eine Sequenz erkannt, und die Zustandsmaschine gibt eine verdichtete Anforderung aus, die die gesamte Sequenz repräsentiert. Auf diese Weise kann eine ImageText8-Sequenz von drei Anforderungen, die gewöhnlich 60 Bytes Daten erfordert, auf ein einziges komprimiertes Datenbyte plus Anforderungskopfteil reduziert werden. Wiederum kann eine weitere Reduktion erreicht werden, indem der Kopfteil der früheren Anforderung cache-gespeichert und die Anzahl der Bytes in dem Kopfteil von 16 auf vier Bytes reduziert wird, wenn die Arten der Anforderungen gleich sind. Dies kann ausgeführt werden, indem ImageText8-"xy" als ein Delta (Differenz) gegenüber den absoluten "xy" der verdichteten Anforderung codiert werden. Wenn dann die Kopfteilinformationen nachfolgender verdichteter Anforderungen verglichen werden, haben sie das gleiche Fenster ("D"), den gleichen Grafikkontext ("GC") und die gleichen Koordinaten ("xy", welche jetzt lediglich die Änderung der Position gegenüber der vorhergehenden Anforderung sind). Die Deltas sind für eine Textzeile, die inkrementell in dem Fenster angezeigt wird, konstant.
- Obwohl der Delta-Kompaktor 34 verwendet werden kann, um die Größe der verdichteten Anforderung zu reduzieren, resultiert eine weitere Verbesserung aus der Erkenntnis, daß die "Anforderungslänge" in dem Protokollkopfteil für ImageText8 redundant ist, da das "Länge-der-Zeichenkette"-Byte verwendet wird, um sie zu berechnen. Durch Verwendung der höher bewerteten Bits in "Länge-der-Zeichenkette" als Bit-Flags, 15 die eine Verdichtung anzeigen, kann die verdichtete Anforderung auf drei Bytes reduziert werden. In diesem Fall ist die Beschränkung des aktuellen Längenwerts auf wenige Bits geringer Ordnung akzeptabel, da lange Textzeichenketten nicht diejenigen sind, die einer Anforderungssequenzverdichtung unterzogen werden.
- Somit schafft die vorliegende Erfindung eine befehlscodespezifische Kompression für das Window-System durch Auswählen einer geeigneten Codiertechnik, Codieren des Befehlscodes in Übereinstimmung mit der ausgewählten Codiertechnik und weiteres Komprimieren des codierten Befehlscodes in Übereinstimmung mit Delta-Kompaktoren und generischen Kompressoren, um Datenpakete für eine Übertragung zwischen Client-Anwendungen auf einem oder mehreren Computern und Fenstern auf einer Anzeige zu bilden.
Claims (12)
1. Ein Verfahren zum Codieren einer Anforderung aus
einer Client-Anwendung an einen Anzeige-Server, wobei die
Anforderung von einer Art ist, die einen Mehr-Byte-Kopfteil
und eine Mehrzahl von Zwei-Byte-Datenwerten aufweist, wobei
die Paare von Datenwerten Datenpunkte repräsentieren, gemäß
einem speziellen Protokoll, gekennzeichnet durch:
Auswählen einer Codierungstechnik auf der Grundlage
einer ausgewählten Anzahl von Datenpunkten der Anforderung;
und
Codieren der Anforderung gemäß der ausgewählten
Codierungstechnik.
2. Ein Verfahren nach Anspruch 1, wobei der
Auswahlschritt die Schritte umfaßt:
Reduzieren der Datenpunkte in eine Relativform;
Testen der Relativdatenpunkte für eine 8-Bit-Reduktion;
Überprüfen der Anzahl von Datenpunkten, die wiederholt
werden, um eine Effektivitätszahl zu bestimmen; und
Bewerten der Ergebnisse des Reduktions-, Test- und
Überprüfungsschritts, um die Codierungstechnik auszuwählen.
3. Ein Verfahren nach Anspruch 2, wobei der
Reduktionsschritt den Schritt des Relativierens der Datenpunkte in
bezug auf einen ersten Datenpunkt umfaßt.
4. Ein Verfahren nach Anspruch 2, wobei der
Reduktionsschritt den Schritt des Relativierens der Datenpunkte in
bezug auf jeweils einen letzten Datenpunkt umfaßt.
5. Ein Verfahren nach Anspruch 1, wobei der
Auswahlschritt die Schritte umfaßt:
Reduzieren der ausgewählten Anzahl von Datenpunkten auf
eine erste Relativform, indem die Datenpunkte gegenüber
einem ersten Datenpunkt relativiert werden;
Testen der Datenpunkte in der ersten Relativform für
eine 8-Bit-Reduktion;
Überprüfen hinsichtlich sich wiederholender Punkte bei
den Datenpunkten in der ersten Relativform; und
Bewerten der Ergebnisse des Reduktions-, Test- und
Überprüfungsschritts um festzustellen, ob die erste Relativform
für den Codierschritt verwendet werden soll.
6. Das Verfahren nach Anspruch 5, wobei der
Auswahlschritt ferner die Schritte umfaßt:
Wiederholen des Reduktions-, Test-, Überprüfungs- und
Bewertungsschritts mit den Datenpunkten, die auf eine zweite
Relativform reduziert wurden, indem die Datenpunkte
gegenüber jeweils einem letzten Datenpunkt relativiert wurden, um
festzustellen, ob die zweite Relativform für den
Codierschritt verwendet werden soll; und
Verwenden der Datenpunkte ohne Reduktion für den
Codierschritt, wenn weder die erste noch die zweite Relativform
verwendbar sind.
7. Das Verfahren nach Anspruch 1, wobei der
Codierschritt die Schritte umfaßt:
Aufbauen eines Identifizierbytes von zwei Tetraden für
jedes Paar von Datenpunkten, wobei jede Tetrade einen Wert
aufweist, der anzeigt, ob der zugehörige Datenpunkt ein 16-
Bit-Wert, ein 8-Bit-Wert oder ein Zeiger in einen Am-
Längsten-Unbenutzt-Ersetzungs-Cache ist;
Aktualisierung des Cache für jeden Datenpunkt; und
Hinzufügen des geeigneten 16-Bit- oder 8-Bit-Werts für
das Paar von Datenpunkten nach dem Identifiziererbyte, wenn
die Datenpunkte kein cache-gespeicherter Datenpunkt sind.
8. Das Verfahren nach Anspruch 7, wobei der
Aufbauschritt die Schritte umfaßt:
Anordnen eines "F" in der zugehörigen Tetrade, wenn der
Datenpunkt ein 16-Bit-Wert ist;
Anordnen eines "E" in der zugehörigen Tetrade, wenn der
Datenpunkt ein 8-Bit-Wert ist; und
Anordnen einer Nummer, die gleich einem Zeiger in den
Cache ist, um einen wiederholten Datenwert anzuzeigen, wenn
der Datenpunkt ein wiederholter Datenwert ist.
9. Eine Einrichtung zum Codieren spezieller
Befehlscodes für ein X-Window-System einer Art, die eine Mehrzahl
von Client-Anwendungen (12) und einen Anzeige-Server (14)
aufweist, mit einer Anzeigeeinrichtung (16), die die Client-
Anwendungen in Fenstern (18) anzeigt, und einer
Kommunikationsverbindung (22), die zwischen den Client-Anwendungen
und dem Anzeige-Server eingekoppelt ist, gekennzeichnet
durch:
einen zwischen die Client-Anwendungen und die
Kommunikationsverbindung eingekoppelten Proxy-Server (20) zum
Codieren von Informationen aus den Client-Anwendungen für eine
Übertragung über die Kommunikationsverbindung an den
Anzeige-Server und zum Decodieren von Informationen, die aus
dem Anzeige-Server über die Kommunikationsverbindung
empfangen wurden; und
eine zwischen dem Anzeige-Server und der
Kommunikationsverbindung eingekoppelte Server-Schnittstelle (24) zum
Codieren von Informationen aus dem Anzeige-Server für eine
Übertragung über die Kommunikationsverbindung an die Client-
Anwendungen und zum Decodieren von Informationen, die aus
den Client-Anwendungen über die Kommunikationsverbindung
empfangen wurden;
wobei der Proxy-Server und die Server-Schnittstelle
jeweils einen befehlscodespezifischen Codierer (32) zum
Komprimieren der Informationen für eine Übertragung über die
Kommunikationsverbindung sowie eine Delta-Verdichtung (34)
und generische Kompressoren (36) aufweisen, um komprimierte
Datenpakete zu erzeugen, die die Informationen während der
Übertragung repräsentieren, und wobei sie jeweils einen
befehlscodespezifischen Decodierer (46) zum Dekomprimieren
der komprimierten Datenpakete, die aus der
Kommunikationsverbindung empfangen wurden, sowie eine Delta-Entspannung
(decompaction) (42) und generische Dekompressoren (42)
aufweisen, um die Informationen zu reproduzieren.
10. Eine Einrichtung nach Anspruch 9, wobei der
befehlscodespezifische Codierer des Proxy-Servers aufweist:
Mittel zum Auswählen einer Codiertechnik auf der
Grundlage der Informationen; und
Mittel zum Codieren der Informationen in
Zwischen-Datenpakete auf der Grundlage der ausgewählten Codiertechnik,
wobei die Zwischen-Datenpakete mit anderen
Zwischen-Datenpaketen durch den Delta-Verdichter (compactor) und generischen
Kompressor kombiniert werden, um die komprimierten
Datenpakete zu erzeugen.
11. Eine Einrichtung nach Anspruch 10, wobei der
befehlscodespezifische Codierer des Proxy-Servers ferner
aufweist:
Mittel zum Identifizieren spezieller Sequenzen von
Informationen; und
Mittel zum Codieren der speziellen Sequenzen von
Informationen in ein zweites Zwischen-Datenpaket entsprechend den
identifizierten speziellen Sequenzen, wobei das zweite
Zwischen-Datenpaket mit anderen Zwischen-Datenpaketen von dem
Delta-Verdichter (compactor) und generischen Kompressor
kombiniert wird, um die komprimierten Datenpakete zu erzeugen.
12. Eine Einrichtung nach Anspruch 9, wobei der
befehlscodespezifische Codierer des Proxy-Servers aufweist:
Mittel zum Identifizieren spezieller Sequenzen von
Informationen; und
Mittel zum Codieren der speziellen Sequenzen von
Informationen in ein Zwischen-Datenpaket entsprechend der
identifizierten speziellen Sequenz, wobei das Zwischen-Datenpaket
mit anderen Zwischen-Datenpaketen von dem Delta-Verdichter
und generischen Kompressor kombiniert wird, um die
komprimierten Datenpakete zu erzeugen.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US96379592A | 1992-10-20 | 1992-10-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69328811D1 DE69328811D1 (de) | 2000-07-13 |
DE69328811T2 true DE69328811T2 (de) | 2001-01-11 |
Family
ID=25507723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69328811T Expired - Fee Related DE69328811T2 (de) | 1992-10-20 | 1993-09-21 | Opcode abhängige Komprimierung für ein Window-System. |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP0594304B1 (de) |
JP (1) | JP2654749B2 (de) |
DE (1) | DE69328811T2 (de) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6525722B1 (en) | 1995-08-04 | 2003-02-25 | Sun Microsystems, Inc. | Geometry compression for regular and irregular mesh structures |
US5793371A (en) | 1995-08-04 | 1998-08-11 | Sun Microsystems, Inc. | Method and apparatus for geometric compression of three-dimensional graphics data |
US5842004A (en) | 1995-08-04 | 1998-11-24 | Sun Microsystems, Inc. | Method and apparatus for decompression of compressed geometric three-dimensional graphics data |
US6256041B1 (en) | 1995-08-04 | 2001-07-03 | Sun Microsystems, Inc. | Decompression of three-dimensional geometry data representing a regularly tiled surface portion of a graphical object |
US6747644B1 (en) | 1995-08-04 | 2004-06-08 | Sun Microsystems, Inc. | Decompression of surface normals in three-dimensional graphics data |
US6215500B1 (en) | 1995-08-04 | 2001-04-10 | Sun Microsystems, Inc. | Compression of three-dimensional geometry data representing a regularly tiled surface portion of a graphical object |
DE69818558T2 (de) * | 1997-06-30 | 2004-08-05 | Sun Microsystems, Inc., Santa Clara | Verfahren und Vorrichtung zur geometrischen Komprimierung von dreimensionalen Grafiken |
US6263496B1 (en) | 1998-02-03 | 2001-07-17 | Amazing Media, Inc. | Self modifying scene graph |
US6243856B1 (en) * | 1998-02-03 | 2001-06-05 | Amazing Media, Inc. | System and method for encoding a scene graph |
US6961803B1 (en) | 2001-08-08 | 2005-11-01 | Pasternak Solutions Llc | Sliced crossbar architecture with no inter-slice communication |
CN102966936B (zh) * | 2012-11-26 | 2014-11-26 | 杭州国电机械设计研究院有限公司 | 一种低品位废气余热回收的双效相变余热回收系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4199815A (en) * | 1978-05-12 | 1980-04-22 | Electra Corporation | Typesetter character generating apparatus |
JPS5933960A (ja) * | 1982-08-19 | 1984-02-24 | Fuji Xerox Co Ltd | コ−ド情報伝送方式 |
JPH0234038A (ja) * | 1988-07-23 | 1990-02-05 | Hitachi Ltd | データ圧縮装置 |
JPH0257290A (ja) * | 1988-08-24 | 1990-02-27 | Nakanihon Syst:Kk | 一針データのデータ圧縮方法 |
JP3062507B2 (ja) * | 1989-10-30 | 2000-07-10 | シャープ株式会社 | 画像符号化装置及び画像復号装置 |
GB2240230B (en) * | 1990-01-18 | 1994-04-13 | British Broadcasting Corp | Field-rate upconversion of television signals |
US5260693A (en) * | 1991-10-11 | 1993-11-09 | Spacelabs Medical, Inc. | Method and system for lossless and adaptive data compression and decompression |
-
1993
- 1993-09-21 EP EP93307467A patent/EP0594304B1/de not_active Expired - Lifetime
- 1993-09-21 DE DE69328811T patent/DE69328811T2/de not_active Expired - Fee Related
- 1993-10-20 JP JP5285973A patent/JP2654749B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2654749B2 (ja) | 1997-09-17 |
JPH06222905A (ja) | 1994-08-12 |
DE69328811D1 (de) | 2000-07-13 |
EP0594304A3 (de) | 1994-11-30 |
EP0594304A2 (de) | 1994-04-27 |
EP0594304B1 (de) | 2000-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69707021T2 (de) | Verlustfreie leitungskodierung | |
DE60001210T2 (de) | Verfahren und Vorrichtung zur Datenkomprimierung von Netzwerkdatenpaketen | |
DE69838074T2 (de) | Verfahren und vorrichtung zur gleichzeitigen verschlüsselung und komprimierung von daten | |
DE69023329T2 (de) | Vorrichtung zur adaptiven datenkompression für ein bandantriebssystem. | |
DE4340591C2 (de) | Datenkompressionsverfahren unter Verwendung kleiner Wörterbücher zur Anwendung auf Netzwerkpakete | |
DE60000912T2 (de) | Verfahren und Vorrichtung zur Datenkomprimierung von Netzwerkdatenpaketen unter Verwendung von paketweisen Hash Tabellen | |
DE60112103T2 (de) | Verfahren und Vorrichtung zur effizientes Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten | |
DE69527679T2 (de) | Verfahren zur Datenkomprimierung und -Dekomprimierung | |
DE69704362T2 (de) | Datenkompressions-/dekompressionssystem anhand sofortiger zeichenfolgensucheverschachtelter wörterbuchaktualisierung | |
DE69024629T2 (de) | Vorrichtung zur kompression von datenlängen und datenfolgen | |
DE69725215T2 (de) | Verfahren und Vorrichtung zur Komprimierung und Dekomprimierung von Schrifttypen | |
DE3606869C2 (de) | Vorrichtung zur Datenkompression | |
DE68925798T2 (de) | Datenverdichtung | |
DE10301362B4 (de) | Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche | |
DE69706439T2 (de) | Rechnersortiersystem zur datenkompression | |
DE3587107T2 (de) | Drehungsverfahren und -geraet fuer binaere bilder. | |
DE19544761C2 (de) | Verfahren zum Komprimieren eines eingegebenen Symbols | |
DE69328811T2 (de) | Opcode abhängige Komprimierung für ein Window-System. | |
DE60107964T2 (de) | Vorrichtung zur kodierung und dekodierung von strukturierten dokumenten | |
DE69915725T2 (de) | Datenkompression unter Verwendung von Primzahlexponenten | |
DE68928046T2 (de) | Verfahren zur umwandlung und behandlung verdichteter bilddaten zu mehrfachen formaten | |
DE69517852T2 (de) | Datenkompressionsverfahren und System | |
DE60128146T2 (de) | System und verfahren zum komprimieren und dekomprimieren von daten in echtzeit | |
DE102005056122A1 (de) | Verfahren zur Kompression, Dekompression und Verarbeitung von Datensätzen | |
EP2415174A1 (de) | Komprimierungsverfahren, dekomprimierungsverfahren, komprimierungseinheit, dekomprimierungseinheit sowie komprimiertes dokument |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |