DE112013006339T5 - Kompression hoher Bandbreite um Datenströme zu Verschlüsseln - Google Patents

Kompression hoher Bandbreite um Datenströme zu Verschlüsseln Download PDF

Info

Publication number
DE112013006339T5
DE112013006339T5 DE112013006339.5T DE112013006339T DE112013006339T5 DE 112013006339 T5 DE112013006339 T5 DE 112013006339T5 DE 112013006339 T DE112013006339 T DE 112013006339T DE 112013006339 T5 DE112013006339 T5 DE 112013006339T5
Authority
DE
Germany
Prior art keywords
data
matches
cycle
dictionary
substring
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.)
Granted
Application number
DE112013006339.5T
Other languages
English (en)
Other versions
DE112013006339B4 (de
Inventor
Damir Anthony Jamsek
Harm Peter Hofstee
Kanak Behari Agarwal
Andrew Kenneth Martin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112013006339T5 publication Critical patent/DE112013006339T5/de
Application granted granted Critical
Publication of DE112013006339B4 publication Critical patent/DE112013006339B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput
    • H03M7/6029Pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Es wird ein Mechanismus in einem Datenverarbeitungssystem für eine pipeline-artige Kompression von Mehrfach-Byte-Frames vorgestellt. Der Mechanismus kombiniert einen aktuellen Zyklus von Daten in einem Eingangsdatenstrom mit mindestens einem nächsten Zyklus von Daten in dem Eingangsdatenstrom, um einen Frame von Daten zu Bilden. Der Mechanismus stellt eine Mehrzahl von Übereinstimmungen in einer Mehrzahl von Directory-Speichern fest. Der Mechanismus stellt einen Teilsatz von Übereinstimmungen in der Mehrzahl der Übereinstimmungen fest, der eine beste Abdeckung des aktuellen Zyklus von Daten darstellt. Der Mechanismus verschlüsselt den Frame von Daten in einen verschlüsselten Ausgangsdatenstrom.

Description

  • Hintergrund
  • Die vorliegende Anmeldung bezieht sich im Allgemeinen auf eine verbesserte Datenverarbeitungsvorrichtung und ein Verfahren und im Besonderen auf einen Mechanismus für eine Kompression hoher Bandbreite zur Kodierung bzw. Verschlüsselung von Datenströmen.
  • Deflate ist ein verlustloser Datenkompressionsalgorithmus, der eine Kombination der Algorithmen LZ77 und Huffman-Verschlüsselung nutzt. Der LZ77-Algorithmus erreicht eine Verschlüsselung durch eine Ersetzung von sich wiederholenden Vorkommen von Daten durch eine einzige Kopie der entsprechenden Daten, die bereits vorher im (unkomprimierten) Eingangsdatenstrom vorkam. Eine Übereinstimmung wird durch ein Zahlenpaar, genannt Längen-Distanz-Paar, verschlüsselt, was gleichbedeutend ist mit der Anweisung „jeder der nächsten Länge von Zeichen ist gleich zu den Zeichen, die exakt den Zeichenabstand dahinter in dem unkomprimierten Strom haben”. Der „Abstand” wird manchmal auch der „Offset” genannt.
  • Huffman-Verschlüsselung ist ein Entropie-Verschlüsselungsalgorithmus, welches für eine verlustfreie Kompression genutzt wird. Der Begriff bezieht sich auf die Nutzung einer Code-Tabelle variabler Länge zum Verschlüsseln eines Ausgangssymbols, wobei die Code-Tabelle variabler Länge auf eine besondere Art und Weise basierend auf einer geschätzten Wahrscheinlichkeit eines Vorkommens für jeden möglichen Wert des Ausgangssignals abgeleitet wurde.
  • Wenn eine duplizierte Serie von Bytes innerhalb von komprimierten Blöcken erkannt wird (ein wiederholter String), wird eine Rück-Referenz eingefügt, die anstelle dessen auf den vorhergehenden Platz des identischen String verweist. Eine Verschlüsselungsübereinstimmung mit einem vorherigen String besteht aus einer Länge (1–32.768 Bytes) und einer Entfernung (1–32.768 Bytes). Relative Rückreferenzen können über eine beliebige Anzahl von Blocks solange gemacht werden wie die Distanz innerhalb der letzten 32 kB nicht komprimierter, unverschlüsselter Daten erscheinen (genannt das gleitende Fenster).
  • Die zweite Kompressionsstufe besteht aus einer Ersetzung typischerweise genutzter Symbole durch kürzere Darstellungen und weniger häufiger genutzter Symbole durch längere Darstellungen. Huffman-Verschlüsselung erzeugt einen Baum ohne Präfixe von nicht-überlappenden Intervallen, wobei die Länge jeder Sequenz umgekehrt proportional zu der Wahrscheinlichkeit ist, dass das Symbol verschlüsselt werden muss. Je wahrscheinlicher ein Symbol verschlüsselt werden muss, desto kürzer wird seine Bitsequenz sein.
  • Zusammenfassung
  • In einem dargestellten Ausführungsbeispiel weist ein Verfahren in einem Datenverarbeitungssystem für eine Pipeline-artige Kompression von Multi-Byte Frames eine Kombination eines aktuellen Zyklus von Daten in einem Eingangsdatenstrom mit mindestens einem Anteil eines nächsten Zyklus von Daten in dem Eingangsdatenstrom auf, um einen Daten-Frame zu bilden. Das Verfahren weist weiterhin ein Erkennen einer Mehrzahl von Übereinstimmungen in einer Mehrzahl von Directory-Speichern auf. Jede Übereinstimmung bringt einen gegebenen Teilstring in dem Daten-Frame in Übereinstimmung. Das Verfahren weist ferner ein Erkennen einer Untergruppe von Übereinstimmungen aus der Mehrzahl der Übereinstimmungen auf, welches eine beste Abdeckung des aktuellen Zyklus von Daten liefert. Das Verfahren weist weiterhin ein Verschlüsseln des Daten-Frame in einen verschlüsselten Ausgangsdatenstrom auf.
  • In anderen dargestellten Ausführungsbeispielen wird ein Computer-Programm-Produkt vorgestellt, welches ein Computer-nutzbares oder -lesbares Medium aufweist, welches ein Computer-lesbares Programm aufweist. Wenn das Computer-lesbare Programm auf einer Computing-Vorrichtung ausgeführt wird, veranlasst es die Vorrichtung zur Ausführung von Variationen und/oder Kombinationen von Anweisungen, die in Bezug auf das oben dargestellten Ausführungsbeispiel des Verfahrens dargestellt wurde.
  • In einem weiteren dargestellten Ausführungsbeispiel wird ein System/eine Vorrichtung vorgestellt. Die Vorrichtung für eine Kompression großer Bandbreite für einen verschlüsselten Datenstrom weist eine Directory-Lookup-/Aktualisierungsstufe auf, welche eine Mehrzahl von Directory-Speichern und zugeordnete Logik, eine Übereinstimmungsauswahlstufe, welche eine Mehrzahl von Vergleichsschaltkreisen und zugehörige Logik und eine Verschlüsselungsstufe aufweisen. Die Directory-Lookup-/Aktualisierungsstufe empfängt einen Daten-Frame, welcher einen aktuellen Datenzyklus in einem Ausgangsdatenstrom kombiniert mit mindestens einem Anteil eines nächsten Daten-Zyklus in dem Eingangsdatenstrom aufweist, und erkennt eine Mehrzahl von Übereinstimmungen in der Mehrzahl der Directory-Speicher. Jede Übereinstimmung bringt einen Teil des gegebenen Teilstring in dem Daten-Frame in Übereinstimmung. Die Übereinstimmungsauswahlstufe erkennt eine Teilgruppe von Übereinstimmungen aus der Mehrzahl der Übereinstimmungen, welches eine beste Abdeckung des aktuellen Datenzyklus unter Nutzung der Mehrzahl der Vergleichsschaltkreise liefert. Die Verschlüsselungsstufe verschlüsselt den Daten-Frame in einen verschlüsselten Ausgangsdatenstrom.
  • Diese und andere Merkmale und Vorteile der vorliegenden Erfindung werden beschrieben oder werden für den Fachmann angesichts der folgenden detaillierten Beschreibung von Ausführungsbeispielen der vorliegenden Erfindung ersichtlich.
  • Kurze Beschreibung von mehreren Ansichten der Figuren
  • Die Erfindung genauso wie bevorzugte Nutzungsarten und weitere Ziele und diesbezügliche Vorteile werden am geeignetsten unter Bezugnahme auf die folgende detaillierte Beschreibung von dargestellten Ausführungsbeispielen erkennbar, wenn sie in Verbindung mit den begleitenden Figuren gelesen wird.
  • 1 beschreibt eine schematische Darstellung eines Beispiels eines verteilten Datenverarbeitungssystems, in dem Aspekte der dargestellten Ausführungsbeispiele implementiert sind.
  • 2 ist ein Blockdiagramm eines Beispiels eines Datenverarbeitungssystems, in dem Aspekte der dargestellten Ausführungsbeispiele implementiert sind.
  • 3 ist ein Blockdiagramm, welches einen Mechanismus zur Verarbeitung eines durchschnittlichen Stroms von Bytes von durchschnittlicher Länge und einen Ausgangsdatenstrom von Bytes in einem komprimierten Datenformat entsprechend einem dargestellten Ausführungsbeispiel darstellt.
  • 4 beschreibt eine Umwandlungsphase zum Konvertieren eines Eingangsdatenstromes in einem 2-Zyklus Daten-Frame entsprechend eines dargestellten Ausführungsbeispiels.
  • 5 beschreibt eine Erzeugung von Adressen für eine Directory-Lookup/Aktualisierung entsprechend einem dargestellten Ausführungsbeispiel.
  • 6 beschreibt eine Directory-Lookup/Aktualisierungsphase entsprechend eines dargestellten Ausführungsbeispiels.
  • 7 ist ein Blockdiagramm, welches einen Mechanismus zur Übereinstimmungsauswahl entsprechend einem dargestellten Ausführungsbeispiel darstellt.
  • 8 stellt eine Übereinstimmungsauswahl und einen Abgleich in Übereinstimmung mit einem dargestellten Ausführungsbeispiel dar.
  • 9 ist ein Flussdiagramm, welches einen Betrieb eines Mechanismus für eine Kompression hoher Bandbreite zum Verschlüsseln eines Datenstromes entsprechend einem dargestellten Ausführung darstellt.
  • Detaillierte Beschreibung
  • Die dargestellten Ausführungsbeispiele liefern einen Mechanismus zum Verarbeiten eines Datenstromes in kontinuierlichen Zyklen, welche zu einer geringen Verzögerung und einem hohen Durchsatz führt. Die Organisationen des Directory geschieht mithilfe von Feldern, wobei jeweils ein Feld für jeden Byte-Offset in einem Daten-Zyklus vorgesehen ist. Jede Stufe erfordert, dass ein Ergebnis in derselben Stufe unmittelbar für eine Nutzung für den nächsten Zyklus verfügbar ist.
  • Die dargestellten Ausführungsbeispiele können in mehreren unterschiedlichen Arten von Datenverarbeitungsumgebungen genutzt werden. Um einen Kontext für die Beschreibung der spezifischen Elementen und Funktionalitäten der dargestellten Ausführungsbeispiele zu liefern, sind 1 und 2 im Folgenden als beispielhafte Ausführungsbeispiele dargestellt, in denen Aspekte der dargestellten Ausführungsbeispiele implementiert sein können. Es sei darauf hingewiesen, dass 1 und 2 nicht dafür vorgesehen sind, Grenzen in Bezug auf die Umgebung, in denen Aspekte oder Ausführungsbeispiele der vorliegenden Erfindung implementiert sein können, zu implizieren oder nahe zulegen. Viele Änderungen können an der beschriebenen Umgebung vorgenommen werden, ohne vom Geist und Umfang der vorliegenden Erfindung abzuweichen.
  • 1 beschreibt eine symbolische Darstellung eines Beispiels eines verteilten Datenverarbeitungssystems, in denen Aspekte der dargestellten Ausführungsbeispiele implementiert sein können. Ein verteiltes Datenverarbeitungssystem 100 kann ein Netzwerk von Computern aufweisen, in denen Aspekte der dargestellten Ausführungsbeispiele implementiert sein können. Das verteilte Datenverarbeitungssystem 100 weist mindestens ein Netzwerk 102 auf, welches ein Medium, um Kommunikationsverbindungen zwischen verschiedenen Vorrechten und Computern, die miteinander in dem verteilten Datenverarbeitungssystem 100 verbunden sind, ist. Das Netzwerk 102 kann Verbindungen wie etwa Kabel, drahtlose Kommunikationsverbindungen oder Glasfaserkabel aufweisen.
  • In dem dargestellten Beispiel sind der Server 104 und der Server 106 zusammen mit einer Speichereinheit 108 mit dem Netzwerk 102 verbunden. Darüber hinaus sind die Clients 110, 112 und 114 auch mit dem Netzwerk 102 verbunden. Die Clients 110, 112 und 114 können beispielsweise Personal Computer, Netzwerk Computer oder Ähnliches sein. In dem dargestellten Beispiel liefert der Server 104 Daten, wie beispielsweise Boot-Dateien, Betriebssystemabbilder oder Anwendungen an die Clients 110, 112 und 114. Die Clients 110, 112 und 114 sind Clients hinsichtlich des Servers 104 in dem dargestellten Beispiel. Das verteilte Datenverarbeitungssystem 100 kann zusätzliche Server, Clients und andere nicht dargestellte Vorrichtungen aufweisen.
  • In dem dargestellten Beispiel ist das verteilte Datenverarbeitungssystem 100 das Internet mit Netzwerk 102, welches eine weltweite Sammlung von Netzwerken und Gateways repräsentiert, welche die Transmission Control Protocol/Internet Protocol Suite von Protokollen nutzt, um miteinander zu kommunizieren. Im Kern ist das Internet ein Backbone von Hochgeschwindigkeitsdatenkommunikationsleitungen zwischen Hauptknoten oder Host-Computern, welches Tausende von kommerziellen, behördlichen, ausbildungstechnischen oder anderen Computer-Systemen aufweist, welches Daten und Nachrichten weiterleitet. Natürlich kann das Datenverarbeitungssystem 100 auch so implementiert sein, dass es eine Anzahl unterschiedlicher Typen von Netzwerken wie beispielsweise einem Intranet, ein Local-Area-Network (LAN) oder ein Wide-Area-Network aufweist. Wie bereits erwähnt besteht der Zweck von 1 darin, als Beispiel zu dienen und nicht zum Aufzeigen von Architektur bedingten Begrenzungen der vorliegenden Erfindung. Deshalb sollten die besonderen Elemente in 1 nicht als begrenzend hinsichtlich der Umgebung, in der die dargestellten Ausführungsbeispiele der vorliegenden Erfindung implementiert sein können, verstanden werden.
  • 2 ist ein Blockdiagramm eines beispielhaften Datenverarbeitungssystems, in denen Aspekte der dargestellten Ausführungsbeispiele implementiert sein können. Das Datenverarbeitungssystem 200 ist ein Beispiel für einen Computer – wie beispielsweise Client 110 in 1 – in dem Computer-nutzbarer Code oder Instruktionen den Prozess für dargestellte Ausführungsbeispiele der vorliegenden Erfindung angesiedelt sein kann.
  • In dem dargestellten Beispiel nutzt das Datenverarbeitungssystem 200 eine Hub-Architektur inklusive einer North-Bridge und eines Speichersteuerungs-Hub (NB/MCH) und einer South-Bridge und eines Eingangs-/Ausgangs-(I/o)-Steuerungs-Hub (SB/ICH). Die Verarbeitungseinheit 206, der Hauptspeicher 208 und der Grafikprozessor 210 sind mit der NB/MCH verbunden. Der Grafik Prozessor 210 kann mit der NB/MBH durch einen beschleunigten Grafik-Port (AGP) verbunden sein.
  • In dem dargestellten Beispiel ist der Local-Area-Network-(LAN)-Adapter an die SB/ICH 204 angeschlossen. Ein Audio-Adapter 206, ein Keyboard und ein Mouse-Adapter 220, ein Modem 222, ein ROM (read only memroy), eine Festplatte (HDD), ein CD-ROM-Laufwerk 230, USB-Ports (universal serial bus) und andere Kommunikationsports 232 und andere der PCI/PCIe-Vorrichtungen 234 sind mit der SB/ICH 204 durch den Bus 238 und den Bus 240 verbunden. Die PCI/PCIe-Vorrichtungen können beispielsweise Internet-Adapter, Add-in-Karten und PC-Karten für Notebook-Computer aufweisen. PCI nutzt einen Card-Bus-Controller, während PCIe es nicht tut. Das ROM 224 kann beispielsweise ein Flash-BIOS (basic input/output) sein.
  • Die Festplatte HDD 226 und das CD-ROM-Laufwerk 230 sind mit dem SB/ICH 204 über dem Bus 240 verbunden. Die Festplatte HDD 226 und das CD-ROM-Laufwerk 230 können beispielsweise ein IDE-(integrated device electronics) oder SATA-Interface (serial advanced technology attachment) aufweisen. Super-I/O-Vorrichtungen (SIO) 236 können an die SB/ICH 204 angeschlossen sein.
  • Ein Betriebssystem läuft auf der Verarbeitungseinheit 206. Das Betriebssystem bietet eine Steuerung für und koordiniert verschiedene Komponenten innerhalb des Datenverarbeitungssystems 200 von 2. Als Client kann das Betriebssystem ein kommerziell erhältliches Betriebssystem wie beispielsweise Microsoft Windows 7 (Microsoft und Windows sind eingetragene Marken der Microsoft Corporation in den USA und/oder anderen Staaten) sein. Eine Objekt-orientierte Programmierumgebung wie beispielsweise das Java-Programmiersystem kann in Zusammenarbeit mit dem Betriebssystem ablaufen und Aufrufe an das Betriebssystem von Java-Programmen oder Anwendungen bieten, die auf dem Datenverarbeitungssystem 200 ausgeführt werden (Java ist eine eingetragene Marke von Oracle und/oder seinen Niederlassungen).
  • Als Server kann das Datenverarbeitungssystem 200 beispielsweise ein IBM® eServer® System p®, die mit dem Advanced Interactive Executive (AIX®) Betriebssystem oder dem LINUX-Betriebssystem laufen (IBM, eServer, System p und AIX sind eingetragene Warenzeichen von International Business Machines in den USA und/oder anderen Staaten und LINUX ist eine eingetragene Marke von Linus Torvalds in den USA und/oder anderen Staaten). Das Datenverarbeitungssystem 200 kann ein symmetrisches Multiprozessor-System (SMP) sein, welches eine Mehrzahl von Prozessoren in der Prozessoreinheiten 206 aufweist. Alternativ kann ein Single-Prozessorsystem betrieben werden.
  • Befehle für das Betriebssystem, die Objekt-orientierte Programmierumgebung und Anwendungen oder Programme liegen auf Speichervorrichtungen – wie etwa HDD 226 – und können für eine Ausführung in den Hauptspeicher 208 durch die Prozessoreinheiten 206 geladen werden. Die Prozesse für veranschaulichende Ausführungsbeispiele der vorliegenden Erfindung können durch die Verarbeitungseinheit 206 ausgeführt werden, wobei Computer-nutzbarer Programm-Code genutzt wird, der in einen Speicher befindet, wie beispielsweise dem Hauptspeicher 208, dem ROM 224 oder in einem oder mehreren peripheren Vorrichtungen 226 und 230.
  • Ein Bus-System wie der Bus 238 oder der Bus 240 – wie in 2 dargestellt – kann ein oder mehrere Busse aufweisen. Natürlich kann das Bus-System so implementiert sein, dass es jeder Art von Kommunikationsnetzwerk oder Architektur nutzt, welches eine Übertragung von Daten zwischen verschiedenen Komponenten oder Vorrichtungen, die an das Netzwerk oder die an die Architektur angeschlossen sind, überträgt. Eine Kommunikationseinheit – wie etwa Modem 222 oder Netzwerkadapter 212 in 2 – kann eine oder mehrere Vorrichtungen aufweisen, die für ein Senden und ein Empfangen von Daten genutzt wird. Der Speicher kann beispielsweise Hauptspeicher 208, ROM 224 oder ein Cache sein, wie er im NB/MCH 202 von 2 anzutreffen ist.
  • Der Fachmann wird erkennen, dass die Hardware von 1 und 2 abhängig von der Implementierung variieren kann. Andere interne Hardware- oder Peripherievorrichtungen wie etwa Flash-Memory, alternative nicht-flüchtige Speicher, Laufwerke für Optical Disks oder Ähnliches kann zusätzlich oder anstelle der Hardware genutzt werden, wie sie von 1 und 2 beschrieben sind. Darüber hinaus können die Prozesse der dargestellten Ausführungsbeispiele auf eine Multi-Prozessor-Datenverarbeitungssystem, welches keines der oben erwähnten SMP-Systemen ist, angewendet werden, ohne vom Geist und Umfang der vorliegenden Erfindung abzuweichen.
  • Darüber hinaus kann das Datenverarbeitungssystem 200 die Form von irgendeiner Anzahl von unterschiedlichen Datenverarbeitungssystemen annehmen, was Client-Computern-Vorrichtungen, Server-Computern-Vorrichtungen, Tablet-Computer, Laptop-Computer, Telefone oder andere Kommunikationsvorrichtungen, einen PDA (personal digital assistent) oder Ähnliches einschließt. In einigen Ausführungsbeispielen kann das Datenverarbeitungssystem 200 eine transportable Computing-Vorrichtung sein, welche mit einem Flash-Speicher ausgerüstet ist, um als nichtflüchtiger Speicher zum Speichern von beispielsweise Betriebssystemdateien und/oder Anwender-erzeugten Daten dient. Grundsätzlich kann das Datenverarbeitungssystem 200 jedes bekannte oder später entwickelte Datenverarbeitungssystem ohne Architekturbeschränkungen darstellen.
  • Das Datenverarbeitungssystem 200 kann aus verschiedenen Gründen eine Datenkompression erfordern. Beispielsweise kann das Datenverarbeitungssystem 200 Daten, welche auf der Platte 226 gespeichert sind, oder Daten, die über einen Netzwerkadapter 212 übertragen werden, komprimieren.
  • 3 ist ein Blockdiagramm, welches einen Mechanismus zum Verarbeiten eines durchschnittlichen Stromes von Daten von durchschnittlicher Länge darstellt, und diesen Strom von Daten in einem komprimierten Format entsprechend einem dargestellten Ausführungsbeispiel ausgibt. Der Mechanismus nimmt kontinuierlich N Bytes in jedem Zyklus von dem Eingangsstrom auf und erzeugt einen verschlüsselten Ausgangsstrom. Der Mechanismus berücksichtigt vier Phasen: Dictionary-Lookup/-Aktualisierung 301, Abgleich der Auswahl 302, Huffman-Verschlüsselung 303 und schließlich Bit/Byte-Ausrichtung 304.
  • 4 stellt eine Umwandlungsphase zum Umwandeln eines Eingangsdatenstrom in 2-Zyklus-Frames von Daten entsprechend einem dargestellten Ausführungsbeispiel dar. In Stufe 0 400 werden N-Byte Zyklen C0, C1‚ C2, C3 empfangen. Der Stufe-0-Umwandlungsmechanismus wandelt den Eingangsstrom in 2-Zyklus-Frames C0/C1 C1/C2, C2/C3 um.
  • 5 beschreibt eine Erzeugung von Adressen für eine Dictionary-Lookup/-Aktualisierung entsprechend einem dargestellten Ausführungsbeispiel. In der Dictionary-Lookup/-Aktualisierungs-Phase überprüft der Mechanismus für jeden Zyklus die Daten von zwei aufeinanderfolgenden Zyklen, d. h., 2N – 1 Bytes. Der Mechanismus untersucht jeden N-Byte-Teilstring (sub-string) von Bytes und beginnt dabei bei jeden der N Bytes des ersten Zyklus von Daten, was – mit Ausnahme des ersten – in Teilstrings resultiert, welche die Zyklus-Grenzen überschreitet. Somit untersucht der Mechanismus den Teilstring D0–DF für den Eingangs-Frame Ck/Ck + 1. Der Mechanismus führt ein Hashing auf jedem Teilstring durch, um die Adressen A0–AF zu erzeugen (für den Fall der Notation F = N – 1).
  • 6 beschreibt eine Dictionary-Lookup/-Aktualisierungsphase entsprechend einem dargestellten Ausführungsbeispiel. Für jedes der N-Byte Offset-Positionen betreibt der Stufe-1-Dictionary-Lookup/-Aktualisierungsmechanismus 600 einen N-Lese-, 1-Schreib-Memory-Speicher 601, 602, 603. Der Mechanismus sucht jeden der N-Byte Teilstrings in jedem der N Speicher unter Nutzung der Adressen A0–AF und gibt bis zu N2 Übereinstimmung mit vorher aufgenommenen Daten und der vorherigen Position in dem Byte-Strom zurück. Der Dictionary-Lookup/-Aktualisierungsmechanismus 600 aktualisiert jeden Dictionary-Speicher 601, 602, 603 mit seinem N-Byte Teilstring, um die Teilstrings zusammen mit den Positionen in dem Byte-Strom für spätere Übereinstimmung aufzuzeichnen, die in dem Byte-Strom vorkamen.
  • Somit empfängt der Dictionary-Lookup/-Aktualisierungsmechanismus 600 eine Adresse A0–AF, Daten D0–DF und Positionen P0–PF für jeden Teilstring von 5. Die Adresse A0–AF ist der Hashwert der Daten D0–DF. Die Position P0–PF ist die Position im Byte-Strom. Angenommen sei ein Frame von Ck/Ck +1, Pi = (Position von Ck) + i, wobei jede Position Pi die Position für einen i-ten Teilstring ist, wobei i = 0 bis F gilt. Jeder Directory-Speicher 601, 602, 603 schreibt eine entsprechende Adresse der Daten und Position. Somit schreibt der Dictionary-Speicher 601 Daten D1 und Position D1 an der Adresse A1 und der Dictionary-Speicher 603 schreibt Daten DF und Position PF an der Adresse AF.
  • Jeder Dictionary-Speicher 601, 602, 603 verarbeitet N Lesezugriffe auf die Adressen A0–AF. Das Lesen des Speichers 601 an der Adresse A0 ergibt das gültige Bit V00, gelesene Daten R00 und Positionswert P00. Das Lesen des Speichers 601 an der Adresse A1 ergibt das gültige Bit V01, gelesene Daten R01 und Positionswert P01. Das Lesen des Speichers 601 an der Adresse AF ergibt das gültige Bit V0F, gelesene Daten R0F und Positionswert P0F.
  • Das Lesen des Speichers 602 an der Adresse A0 ergibt das gültige Bit V10, gelesene Daten R10 und Positionswert P10. Das Lesen des Speichers 611 an der Adresse A1 ergibt das gültige Bit V11, gelesene Daten R11 und Positionswert P11. Das Lesen des Speichers 601 an der Adresse AF ergibt das gültige Bit V1F, gelesene Daten R1F und Positionswert P1F.
  • Das Lesen des Speichers 603 an der Adresse A0 ergibt das gültige Bit VF0, gelesene Daten RF0 und Positionswert PF0. Das Lesen des Speichers 601 an der Adresse A1 ergibt das gültige Bit VF1, gelesene Daten RF1 und Positionswert PF1. Das Lesen des Speichers 601 an der Adresse AF ergibt das gültige Bit VFF, gelesene Daten RFF und Positionswert PFF.
  • Somit ergibt sich für jeden Zyklus, dass die Lookup-/Aktualisierungs-Phase in N-faches Schreiben und N2-faches Lesen (N Lesevorgänge für jeden der N Teilstrings) durchführt. Am Anfang ist jeder Eintrag in dem Dictionary-Speicher 601, 602, 603 ungültig. Jedes Schreiben auf die Dictionary-Speicher 601, 602, 603 setzt das Gültigkeitsbit. Somit gibt das Gültigkeitsbit für jedes Lesen an einer gegebenen Adresse an, ob vorher gültige Daten an die Stelle entsprechender Adressen geschrieben wurden.
  • 7 ist ein Blockdiagramm, welches einen Mechanismus zum Übereinstimmungsauswahl einer dargestellten Ausführungsform darstellt. Der Stufe-2-Übereinstimmungsauswahl-Mechanismus 700 weist Vergleichskomponenten 701, 702, 703 auf. Der Übereinstimmungsauswahl-Mechanismus 700 empfängt N Sätze von gelesenen Daten von den Dictionary-Speichern 601, 602, 603. Für jeden Satz von gelesenen Daten empfängt der Übereinstimmungsauswahl-Mechanismus 700 Teilstringdaten D0–DF.
  • Jede Vergleichskomponente 701, 702, 703 vergleicht gültig gelesene Daten von den Dictionary-Speichern 601, 602, 603 mit dem Teilstringdaten D0–DF. Beispielsweise vergleicht die Vergleichskomponente 701 R00–R0F mit den Teilstringdaten D0. Für jedes R00–R0F stellt die Vergleichskomponente 701 fest wie viele zusammenhängende Bytes übereinstimmen, wenn man mit dem Anfang des Teilstrings beginnt. Die Vergleichskomponente 701 wählt dann die Lesedaten R00–R0F mit der größten Übereinstimmung aus. Die Vergleichskomponente 701 gibt dann die längste Übereinstimmung M0 aus, wenn es eine gibt, sowie die Anzahl von Bytes, die mit B0 übereinstimmen.
  • Dementsprechend vergleicht die Vergleichskomponente 702 R10–R1F mit den Teilstringdaten D1. Für jedes R10–R1F stellt die Vergleichskomponente 702 fest wie viele zusammenhängende Bytes übereinstimmen, wenn man mit dem Anfang des Teilstrings beginnt. Die Vergleichskomponente 702 wählt dann die Lesedaten R10–R1F mit der größten Übereinstimmung aus. Die Vergleichskomponente 702 gibt dann die längste Übereinstimmung M1 aus, wenn es eine gibt, sowie die Anzahl von Bytes, die mit B1 übereinstimmen.
  • Dementsprechend vergleicht die Vergleichskomponente 703 RF0–RFF mit den Teilstringdaten DF1. Für jedes RF0–RFF stellt die Vergleichskomponente 703 fest wie viele zusammenhängende Bytes übereinstimmen, wenn man mit dem Anfang des Teilstrings beginnt. Die Vergleichskomponente 703 wählt dann die Lesedaten RF0–RFF mit der größten Übereinstimmung aus. Die Vergleichskomponente 703 gibt dann die längste Übereinstimmung MF aus, wenn es eine gibt, sowie die Anzahl von Bytes, die mit MF übereinstimmen.
  • 8 stellt eine Übereinstimmungsauswahl und Ausrichtung entsprechend einem dargestellten Ausführungsbeispiel dar. Angenommen seien mögliche überlappende Übereinstimmungen A, B, C, D. Die Übereinstimmungsauswahl- und Ausrichtungsphase muss die Übereinstimmungen auswählen, um eine Abdeckung der Daten zu maximieren. Wie man aus dem Beispiel von 8 erkennt, gibt es eine Überlappung zwischen Datenmengen B und D, eine Überlappung zwischen Datenmengen A und D und eine Überlappung der Datenmengen A und C. Der Mechanismus des dargestellten Ausführungsbeispiels wählt die möglichen Kombinationen von Übereinstimmungen aus, welche den größten Teil der Ursprungsdaten abdeckt.
  • Wie sich aus 8 ergibt, bilden die Übereinstimmungen von A und B die beste Abdeckung, wobei die geringste Anzahl von Bytes nicht übereinstimmend bleibt. Weil die Datenmenge A die Zyklusgrenze von 4 Bytes überschreitet, können die ersten vier Teilstrings in dem nächsten Zyklus ignoriert werden.
  • Somit wählt der Mechanismus des dargestellten Ausführungsbeispiels die längste Übereinstimmung aus den N Byte-Offset-Positionen aus den N Byte potentiellen Übereinstimmungen in der Position aus, wobei eine Reduzierung der Anzahl der potentiellen Übereinstimmung von N2 herunter auf N Übereinstimmungen – eine für jeden Byte-Offset in dem aktuellen Zyklus – erreicht wird. Der Mechanismus wählt einen Teilsatz dieser Übereinstimmungen aus, um zu versuchen, so viele wie möglich der 2N – 1 Bytes abzudecken.
  • Der Mechanismus findet zuerst eine Übereinstimmungsdatenmenge, welche die Zyklusgrenze überschreitet und verarbeitet so viel wie möglich von dem aktuellen Zyklus. Der Mechanismus findet dann zusätzliche Übereinstimmungen, um mehr Bytes in dem aktuellen Zyklus abzudecken. Der Mechanismus lässt genug Informationen für den nächsten Zyklus über Bytes zurück, die durch die Grenzüberschreitung abgedeckt sind.
  • Die Ergebnisse der Übereinstimmungsauswahl- und Ausrichtungsphase ergibt nicht abgedeckte Bytes und übereinstimmende Bytes. In einem Ausführungsbeispiel führt der Mechanismus des dargestellten Ausführungsbeispiels dann Huffman-Coding auf den nicht-abgedeckten Bytes in dem aktuellen Zyklus als Literale aus. Der Mechanismus des dargestellten Ausführungsbeispiels verschlüsselt die Übereinstimmungen mit Längen und Distanz.
  • Dann liefert die Bit/Byte-Paketierungsphase eine Abfolge von Bytes, die mit der „geschrumpften” Beschreibung übereinstimmen. Erste variable Bitbreiten-Codes werden in dem aktuellen Zyklus durch eine Bitverschiebungsoperation ausgerichtet, was in einer Anzahl von Bytes resultiert, bei der Teil-Bytes übrig bleiben können, die zu den Bits des nächsten Zyklus hinzu gezählt werden. Die Bytes in einem Zyklus werden zusammengefügt bis N Bytes in einem einzigen Zyklus ausgegeben werden können.
  • Ein Fachmann wird erkennen, dass die vorliegende Erfindung als System, Verfahren oder Computer-Programm-Produkt ausgeführt sein kann. Dementsprechend können Aspekte der vorliegenden Erfindung die Form eines kompletten Hardware-Ausführungsbeispiels, eines kompletten Software-Ausführungsbeispiels (inklusive Firmware, Resident Software, Makro-Code, usw.) annehmen oder einer Kombination aus Software- und Hardware-Aspekten entsprechen, auf welche hierin insbesondere durch „Schaltkreis”, „Modul” oder „System” Bezug genommen wird. Darüber hinaus können Aspekte der vorliegenden Erfindung die Form eines Computer-Programm-Produktes annehmen, welches in einem oder mehreren Computer-lesbaren Medien verkörpert sein kann, welches Computer-nutzbaren Programm-Code darauf enthalten kann.
  • Jede Kombination von einem oder mehreren Computer-lesbaren Medien können genutzt werden. Das Computer-lesbare Medium kann ein Computer-lesbares Signalmedium oder ein Computer-lesbares Speichermedium sein. Ein Computer-lesbares Speichermedium kann beispielsweise – ist aber nicht darauf beschränkt – sein: ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot, oder Halbleitersystem, Vorrichtung, Gerät oder eine Kombination des Vorangegangenen. Speziellere Beispiele (nicht erschöpfende Liste) eines Computer-lesbaren Speichermediums könnte Folgendes aufweisen: eine elektrische Verbindung mit einem oder mehreren Kabeln, eine transportable Computer-Diskette, eine Festplatte, ein RAM (random access memory), ein ROM (read-only memory), ein EPROM (erasable programmable ROM oder Flash-Memroy), eine Glasfaser, eine transportable CDROM (compact disc ROM), eine optische Speichervorrichtung, eine magnetische Speichervorrichtung oder eine geeignete Kombination des Vorangegangenen. Im Kontext dieses Dokumentes kann ein Computer-lesbares Speichermedium jedes handhabbare Medium sein, das ein Programm enthalten kann oder speichern kann, welches durch oder in Kombination mit einem Instruktionen-ausführendem System, Vorrichtung oder Gerät genutzt werden kann.
  • Ein Computer-lesbares Signalmedium kann ein voranschreitendes Datensignal aufweisen, in dem Computer-lesbarer Programmcode eingebettet ist – beispielsweise in einem Baseband oder als Teil einer Trägerwelle. Solch ein voranschreitendes Signal kann verschiedene Varianten von Formen inklusive – ohne darauf beschränkt zu sein – eine opto-magnetische, eine optische oder eine geeignete Kombination davon annehmen. Ein Computer-lesbares Signalmedium kann jedes Computer-lesbare Medium sein, welches ein Computer-lesbare Speichermedium ist und welches ein Programm kommunizieren, weitergeben oder transportieren kann, welches durch oder in Verbindung mit einem Instruktionen verarbeitenden System, Vorrichtung oder Gerät nutzbar ist.
  • Computer-Code, welcher in ein Computer-lesbares Medium eingebettet ist, kann durch die Nutzung jedes geeigneten Mediums transportiert werden; dazu gehören – ohne darauf beschränkt zu sein – drahtlose, drahtgebundene, optische Glasfaser-Kabel, Funkfrequenzen (RF) usw. oder geeigneten Kombinationen davon.
  • Computer-Programm-Code zum Ausführung von Operationen für Aspekte der vorliegenden Erfindung können in jeder Kombination einer oder mehrerer Programmiersprachen geschrieben sein, inklusive einer Objekt-orientierten Programmiersprache wie etwa JavaTM, SmalltalkTM, C++ oder ähnlichen und konventionellen prozeduralen Programmiersprachen wie etwa der „C”-Programmiersprache oder ähnlichen Programmiersprachen. Der Programm-Code kann komplett auf einem Anwender-Computer ausgeführt werden, teilweise auf einem Anwender-Computer als ein selbstständiges Software-Paket, teilweise auf einem Anwender-Computer und teilweise auf einem entfernten Computer oder gänzlich auf dem entfernten Computer oder Server. In dem letzten Szenario kann der entfernte Computer mit dem Anwender-Computer durch ein beliebiges Netzwerk verbunden sein, inklusive eines LAN (local eare network) oder eines WAN (wide area network), oder es kann eine Verbindung mit einem externen Computer (z. B. durch das Internet unter Nutzung eines Internet Service Providers) hergestellt werden.
  • Aspekte der vorliegenden Erfindung werden nachfolgend durch Bezugnahme auf Flussdiagramm-Darstellungen und/oder Blockdiagramme von Verfahren, Vorrichtungen (Systeme) und Computer-Programm-Produkte entsprechend den dargestellten Ausführungsbeispielen der Erfindung beschrieben. Es ist klar, dass jeder Block der Flussdiagramm-Darstellungen und/oder Blockdiagramme und Kombinationen von Blöcken in den Flussdiagrammdarstellungen und/oder Blockdiagrammen durch Computer-Programm-Instruktionen implementiert sein können. Diese Computer-Programm-Instruktionen können einem Prozessor eines Standard-Computers, eines Spezial-Computers oder einer programmierbaren Daten-verarbeitenden-Vorrichtung zur Verfügung gestellt werden, um eine Maschine zu bilden, so dass die Instruktionen, die über den Prozessor des Computers oder anderer programmierbare Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel zur Implementierung der Funktionen/Eigenarten, die in dem Flussdiagramm und/oder erzeugen Blockdiagramm-Block oder -Blöcken spezifiziert sind, erzeugen.
  • Diese Computer-Programm-Instruktionen können auch in einem Computer-lesbaren Medium gespeichert sein, welches einen Computer oder programmierbare Datenverarbeitungsvorrichtung oder andere Vorrichtungen veranlassen, sich in einer bestimmten Art und Weise zu verhalten, so dass die Instruktionen, die in dem Computer-lesbaren Medium gespeichert sind, eine Fertigungsvorrichtung inklusive Instruktionen erzeugen, welche die Funktionen/Eigenarten implementieren, die in dem Flussdiagramm und/oder Blockdiagramm-Block oder -Blöcken spezifiziert sind.
  • Die Computer-Programm-Instruktionen können auch auf einen Computer oder einer anderen programmierbaren Datenverarbeitungsvorrichtung oder anderen Vorrichtungen geladen werden, um eine Reihe von operationalen Schritten zur Ausführung auf dem Computer oder einer anderen programmierbaren Vorrichtung oder Geräten zu bewirken, um einen Computer-implementierten Prozess zu erzeugen, so dass die Instruktionen, welche auf dem Computer oder anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zur Implementierung der Funktionen/Eigenarten führen, die in dem Flussdiagramm und/oder Blockdiagramm-Block oder -Blöcken spezifiziert sind.
  • 9 ist ein Flussdiagramm, welches Operationen eines Mechanismus für eine Kompression hoher Bandbreite darstellt, um einen Datenstrom entsprechend einem dargestellten Ausführungsbeispiel zu verschlüsseln. Die Operationen beginnen (Block 900) und der Mechanismus wandelt einen Teil des Datenstromes in einen 2-Zyklus-Frame (Block 901) um. Der Mechanismus startet mit dem ersten nicht-verschlüsselten Byte (Block 902) und berechnet einen Hash-Wert für jeden Teilstring jeder Zykluslänge der Daten in dem Frame (Block 903). Der Mechanismus schreibt dann jeden Teilstring von Daten unter Nutzung des Hash-Wertes an einer Adresse eines entsprechenden Dictionary-Speichers (Block 904). Für einen 2-Zyklus-Frame, bei dem jeder Zyklus N Bytes entspricht, schreibt der Mechanismus einen N-Byte Teilstring in jedes der N Dictionary-Speicher.
  • Der Mechanismus liest Teilstrings von Daten von allen Dictionary-Speichern unter Nutzung aller berechneten Hash-Werte als Adressen (Block 905). In Block 905 führt der Mechanismus N Leseoperationen von N Dictionary-Speichern aus, obwohl viele der Leseroperationen in ungültigen Daten resultieren können. Dann vergleicht der Mechanismus jeden Teilstring mit den gelesenen Daten von dem entsprechenden Dictionary-Speicher (Block 906) und wählt die längste Übereinstimmung von zusammenhängenden Bytes aus, wobei dabei mit dem ersten Byte des Teilstring (Block 907) begonnen wird. Der Mechanismus hat dann eine Übereinstimmung von jedem Dictionary-Speicher für insgesamt N Datenpaketen.
  • Danach wählt der Mechanismus einen Teilsatz der Datenblöcke aus (Block 908). Der Mechanismus wählt Datenblöcke aus, um so viele wie möglich der 2N – 1 Bytes abzudecken. Der Mechanismus kann zuerst einen Datensatz auswählen, der eine Zyklusgrenze überschreitet und so viel wie möglich des aktuellen Zyklus abdeckt. Der Mechanismus kann dann zusätzliche Übereinstimmungen auswählen, um mehr Bytes des aktuellen Zyklus abzudecken. Der Mechanismus verschlüsselt dann nicht-übereinstimmende Bytes als Literal (selbst deutendes Zeichen) und verschlüsselt die Übereinstimmungen mit Längen- und Distanz-Informationen (Block 909), wobei die Länge auf die Länge in Bytes der Übereinstimmung hinweist und die Differenz auf ein vorheriges Vorkommen der Daten in dem Datenstrom referenziert. Dann führt der Mechanismus das Bit/Byte-Ausrichtung durch (Block 910).
  • Der Mechanismus bestimmt dann, ob der aktuelle Zyklus in dem letzten Zyklus (Block 911) ist. Wenn der aktuelle Zyklus nicht der letzte Zyklus in den Datenstrom ist, betrachtet der Mechanismus den nächsten Zyklus von Daten in dem Datenstrom (Block 912) und es geht bei Block 901 weiter, um die Daten in einen 2-Zyklus-Frame zu konvertieren. Dann geht es mit dem nächsten Zyklus weiter. Wenn der aktuelle Zyklus der letzte Zyklus von Daten in dem Datenstrom in Block 911 ist, endet der Ablauf (Block 913).
  • Die Flussdiagramme und Blockdiagramme in den Figuren stellen die Architektur, Funktionalität und den Betrieb von möglichen Implementierungen von Systemen, Verfahren und Computer-Programm-Produkten entsprechend verschiedener Ausführungsbeispielen der vorliegenden Erfindung dar. In dieser Hinsicht kann jeder Block in dem Flussdiagramm oder Blockdiagrammen ein Modul, ein Segment oder ein Code-Anteil repräsentieren, welcher eine oder mehrere ausführbare Instruktionen zur Implementierung der spezifizierten logischen Funktione(en) aufweist. Es versteht sich, dass in alternativen Implementierungen die Funktionen, die in den Blöcken dargestellt sind, in einer anderen Reihenfolge vorkommen können als in den Figuren dargestellt. Beispielsweise können tatsächlich zwei Blöcke, die als aufeinanderfolgend dargestellt sind, im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können gelegentlich in umgekehrter Reihenfolge abhängig von der betroffenen Funktionalitäten ausgeführt werden. Es sei darauf hingewiesen, dass jeder Block in den Blockdiagrammen und/oder Flussdiagramm-Darstellungen und Kombinationen von Blöcken in den Blockdiagrammen und/oder Flussdiagramm-Darstellungen mittels eines speziellen Hardware-basierenden Systems implementiert sein kann, welches die spezifizierten Funktionen oder Eigenheiten oder Kombinationen von spezieller Hardware oder Computer Instruktionen ausführen.
  • Somit liefern die dargestellten Ausführungsbeispiele Mechanismen für eine Kompression hoher Bandbreite für verschlüsselte Datenströme. Der Mechanismus verarbeitet Daten in kontinuierlichen Zyklen, was zu einer geringeren Verzögerung und höherem Durchsatz führt. Für einen N-Byte Zyklus von Daten nutzt der Mechanismus N Directory-Speicher, welche N Lese- und einen Schreibvorgang für jeden Byte-Offset in den N Byte-Daten nutzt. Mehrere Stufen erfordern ein Ergebnis, das unmittelbar für den nächsten Zyklus in der gleichen Stufe verfügbar ist.
  • Wie bereits erwähnt, sollte verstanden werden, dass dargestellte Ausführungsbeispiele in Form eines kompletten Hardware-Ausführungsbeispiels bzw. eines kompletten Software-Ausführungsbeispiels dargestellt werden kann, oder eines Ausführungsbeispiels welches sowohl Hardware- wie auch Softwareelemente enthält. Ein beispielhaftes Ausführungsbeispiel des Mechanismus der dargestellten Ausführungsbeispiele ist komplett in Software oder Programm-Code implementiert, welches – ohne darauf beschränkt zu sein – Firmware, Resident Software, Microcode, usw. ausweist.
  • Eine Datenverarbeitungsvorrichtung, die für ein Speichern und/oder Ausführung von Programm-Code geeignet ist, wird mindestens einen Prozessor aufweisen, der direkt oder indirekt mit Speicherelementen durch ein Bus-System verbunden ist. Die Speicherelemente können lokale Speicher, die während einer tatsächlichen Ausführung des Programm-Code genutzt werden, Massenspeicher und Cache-Speicher aufweisen, welche temporäre Speichermöglichkeiten für mindestens ein Teil des Programm-Code bereitstellen, um die Anzahl von Malen zu reduzieren, bei denen Code von dem Massenspeicher während der Ausführung beschafft werden muss.
  • Eingabe-/Ausgabe- oder I/O-Vorrichtungen (umfassend – aber nicht darauf beschränkt – Tastaturen, Bildschirme, zeige Vorrichtungen, usw.) können entweder direkt oder durch zwischengeschaltete I/O-Steuerungen angeschlossen sein. Netzwerkadapter können außerdem an das System angeschlossen sein, um dem Datenverarbeitungssystem zu ermöglichen, mit anderen Datenverarbeitungssystemen oder entfernten Druckern oder Speichervorrichtungen durch zwischengeschaltete private oder öffentliche Netzwerke verbunden zu werden. Modems, Kabel-Modems und Ethernet-Karten sind nur einige wenige von aktuell erhältlichen Arten von Netzwerkadaptern.
  • Die Beschreibung der vorliegenden Erfindung wurde für Zwecke der Illustration und Beschreibung vorgestellt und ist nicht darauf ausgerichtet, voll umfassend zu sein und die Erfindung auf die dargestellte Form zu reduzieren. Viele Änderungen oder Variationen ergeben sich für den Fachmann. Das Ausführungsbeispiel wurden ausgesucht und beschrieben, um bestmöglich die Prinzipien der Erfindung darzustellen, deren praktischer Anwendung darzustellen und anderen Fachleuten zu ermöglichen, die Erfindung mit verschiedenen Ausführungsbeispielen mit verschiedenen Modifikationen, die hinsichtlich der speziellen Nutzung angebracht sind, zu verstehen.

Claims (32)

  1. Ein Verfahren in einem Datenverarbeitungssystem für eine Kompression für verketteter Mehr-Byte-Frames, wobei das Verfahren aufweist: Kombinieren eines aktuellen Zyklus von Daten in einem Eingangsdatenstrom mit mindestens einem Teil eines nächsten Zyklus von Daten in dem Eingangsdatenstrom, um einen Frame von Daten zu bilden; Feststellen einer Mehrzahl von Übereinstimmungen in eine Mehrzahl von Directory-Speichern, wobei jede Übereinstimmung mit einem Teil in einem gegebenen Teilstring in dem Frame von Daten übereinstimmt; Feststellen eines Teilsatzes von Übereinstimmungen aus der Vielzahl der Übereinstimmungen, welche eine beste Abdeckung des aktuellen Zyklus von Daten liefert; und Verschlüsseln des Frame von Daten in einen verschlüsselten Ausgangsdatenstrom.
  2. Das Verfahren gemäß Anspruch 1, wobei das Kombinieren des aktuellen Zyklus von Daten mit mindestens einem Teil des nächsten Zyklus von Daten ein Bilden einer Mehrzahl von Teilstrings aufweist, wobei jeder davon mit einem Byte des aktuellen Zyklus von Daten beginnt und eine Länge gleich der Länge des aktuellen Zyklus von Daten aufweist.
  3. Das Verfahren gemäß Anspruch 1 oder Anspruch 2, wobei der Teilsatz der Übereinstimmungen eine Grenzen zwischen dem ersten Zyklus von Daten und dem nächsten Zyklus von Daten überschreitet.
  4. Das Verfahren gemäß einem der Ansprüche 1 bis 3, wobei das Verschlüsseln des Frame von Daten in den verschlüsselten Ausgangsdatenstrom aufweist: Verschlüsseln jedes der Teilsetze von Übereinstimmungen mit Längen- und Distanz-Informationen, um übereinstimmende verschlüsselte Daten zu bilden; Verschlüsseln nicht-übereinstimmender Daten in dem aktuellen Zyklus von Daten in dem Ausgangsdatenstrom unter Nutzung einer verlustfreien Kompression, um komprimierte verschlüsselter Daten zu bilden; und Ausrichten der übereinstimmenden verschlüsselten Daten und der komprimierten verschlüsselten Daten in einen Ausgangsdatenstrom.
  5. Des Verfahren nach einem der Ansprüche 1 bis 4, weiterhin aufweisend: Erzeugen einer Adresse basierend auf einem gegebenen Teilstring in der Mehrzahl der Teilstrings, um eine Mehrzahl von Adressen zu bilden.
  6. Das Verfahren gemäß Anspruch 5, wobei das Erzeugen der Adressen ein Anwenden einer Hash-Funktion auf dem gegebenen Teilstring aufweist.
  7. Das Verfahren gemäß Anspruch 5 oder Anspruch 6, weiterhin aufweisend: Schreiben jedes gegebenen Teilstring oder eines entsprechenden Positionswertes in einen entsprechendes Dictionary-Speicher innerhalb der Mehrzahl von Dictionary-Speichern unter Nutzung der Adresse, die mittels des gegebenen Teilstring erzeugt wurde.
  8. Das Verfahren nach einem der Ansprüche 5 bis 7, wobei das Feststellen der Mehrzahl der Übereinstimmungen aufweist: Nutzung der Mehrzahl von Adressen, um von einem gegebenen Directory-Speicher innerhalb der Mehrzahl der Dictionary-Speicher zu lesen, um keines oder mehrere gültige Einträge für jeden Dictionary-Speicher zu empfangen.
  9. Das Verfahren gemäß Anspruch 8, wobei das Feststellen der Mehrzahl der Übereinstimmungen weiterhin aufweist: Vergleichen des mindestens einen gültigen Eintrages in einem zugeordneten Teilstring für jeden Dictionary-Speicher mit mindestens einem gültigen Eintrag; und Auswählen einer längsten Übereinstimmung basierend auf einer Anzahl von zusammenhängenden übereinstimmenden Bytes für jeden Dictionary-Speicher, der mindestens einen gültigen Eintrag aufweist, beginnend mit dem Anfang des entsprechenden Teilstring, um eine Mehrzahl von Übereinstimmungen zu bilden.
  10. Das Verfahren gemäß Anspruch 9, wobei jede der Mehrzahl der Übereinstimmungen einen Übereinstimmungslängenwert und einen Positionswert aufweist, wobei der Längenwert auf eine Länge der übereinstimmenden Daten hinweist und der Positionswert auf ein vorheriges Vorkommen der übereinstimmenden Daten in dem Eingangsdatenstrom referenziert.
  11. Eine Vorrichtung für eine Kompression hoher Bandbreite bezüglich eines verschlüsselten Datenstromes, wobei die Vorrichtung aufweist: eine Dictionary/Lookup-Stufe aufweisend eine Mehrzahl von Dictionary-Speichern und zugeordnete Logik; eine Übereinstimmungsauswahlstufe aufweisend eine Mehrzahl von Vergleichsschaltkreisen und zugeordnete Logik; eine Verschlüsselungsstufe; wobei die Dictionary/Lookup-Stufe einen Frame von Daten empfängt, der einen aktuellen Zyklus von Daten in einem Eingangsdatenstrom kombiniert mit mindestens einem Teil eines nächsten Zyklus von Daten in dem Eingangsdatenstrom aufweist, und eine Mehrzahl von Übereinstimmungen in der Mehrzahl der Dictionary-Speichern feststellt, wobei jede Übereinstimmung mit einem Anteil eines gegebenen Teilstring in der Mehrzahl der Teilstrings übereinstimmt; wobei die Übereinstimmungsauswahlstufe einen Teilsatz der Übereinstimmungen in der Mehrzahl der Übereinstimmungen feststellt, der eine beste Abdeckung des aktuellen Zyklus von Daten unter Nutzung der Mehrzahl der Vergleichsschaltkreise bietet; und wobei die Verschlüsselungsstufe den Frame von Daten in einen verschlüsselten Ausgangsdatenstrom verschlüsselt.
  12. Die Vorrichtung gemäß Anspruch 11, wobei das Kombinieren des aktuellen Zyklus von Daten mit mindestens einem Anteil des nächsten Zyklus von Daten ein Bilden einer Mehrzahl von Teilstrings aufweist, wobei jeder bei einem entsprechenden Byte des aktuellen Zyklus von Daten beginnt und eine Länge aufweist, die gleich dem aktuellen Zyklus von Daten ist.
  13. Die Vorrichtung gemäß Anspruch 11 oder Anspruch 12, wobei der Teilsatz von Übereinstimmungen eine Zyklusgrenze zwischen dem ersten Zyklus von Daten und dem zweiten Zyklus von Daten überschreitet.
  14. Die Vorrichtung nach einem der Ansprüche 11 bis 13, wobei die Verschlüsselungsstufe jedes der Teilsätze von Übereinstimmungen mit Längen- und Distanz-Informationen verschlüsselt, um verschlüsselte Übereinstimmungsdaten zu bilden und um nicht übereinstimmende Daten in dem aktuellen Zyklus von Daten in dem Eingangsdatenstrom unter Nutzung einer verlustfreien Kompression verschlüsselt, um komprimierte verschlüsselter Daten zu bilden.
  15. Die Vorrichtung gemäß Anspruch 14, wobei die Verschlüsselungsstufe einen Huffman-Verschlüsselungsschaltkreis aufweist, und wobei die Verschlüsselungsstufe nicht übereinstimmende Daten mittels des Huffman-Verschlüsselungsschaltkreis verschlüsselt.
  16. Die Vorrichtung nach einem der Ansprüche 11 bis 15, weiterhin aufweisend: eine Bit-/Byte-Ausrichtungsstufe, wobei die Bit-/Byte-Ausrichtungsstufe die verschlüsselten Übereinstimmungsdaten und die komprimierten verschlüsselten Daten in einem Ausgangsdatenstrom ausgerichtet.
  17. Die Vorrichtung nach einem der Ansprüche 11 bis 16, wobei die Dictionary/Lookup-Stufe eine Adresse erzeugt, die auf einem gegebenen Teilstring in der Mehrzahl der Teilstrings basiert, um eine Mehrzahl von Adressen zu bilden.
  18. Die Vorrichtung gemäß Anspruch 17, wobei die Dictionary/Lookup-Aktualisierungsstufe die Adresse durch Ausführung eines Hashing auf dem gegebenen Teilstring erzeugt.
  19. Die Vorrichtung gemäß Anspruch 17 oder Anspruch 18, wobei die Dictionary/Lookup-Aktualisierungsstufe jeden gegebenen Teilstring und einen entsprechenden Positionswert in einen entsprechenden Directory-Speicher innerhalb der Mehrzahl der Directory-Speicher schreibt, wobei die Adresse, die aus dem gegebenen Teilstring erzeugt wurde, genutzt wird.
  20. Die Vorrichtung nach einem der Ansprüche 17 bis 19, wobei die Dictionary/Lookup-Aktualisierungsstufe die Mehrzahl der Übereinstimmungen durch Nutzung der Mehrzahl der Adressen, um von jedem Directory-Speicher aus der Mehrzahl der Directory-Speicher zu lesen, feststellt, um keinen oder mehrere gültige Einträge für jeden Directory-Speicher zu empfangen.
  21. Die Vorrichtung gemäß Anspruch 20, wobei die Übereinstimmungsauswahlstufe einen Teilsatz von Übereinstimmungen für jeden Directory-Speicher feststellt, der mindestens einen gültigen Eintrag aufweist, den mindestens einen gültigen Eintrag mit einem entsprechenden Teilstring vergleicht, und für jeden gültigen Directory-Speicher, der mindestens eine gültige Adresse aufweist, eine längste Übereinstimmung basierend auf der Anzahl einer zusammenhängenden Übereinstimmung auswählt, beginnend mit dem Anfang eines entsprechenden Teilstring, um die Mehrzahl der Übereinstimmungen zu bilden.
  22. Die Vorrichtung gemäß Anspruch 21, wobei jeder der Mehrzahl der Übereinstimmungen einen Übereinstimmungslängenwert und einen Positionswert aufweist, wobei der Längenwert auf eine Länge der übereinstimmenden Daten hinweist, und der Positionswert ein vorheriges Vorkommen der übereinstimmenden Daten in dem Eingangsdatenstrom referenziert.
  23. Ein Computer-Programm-Produkt, aufweisend ein Computer-lesbares Speichermedium, das ein Computer-lesbares Programm darin aufweist, wobei das Computer-lesbare Programm, wenn es auf einer Computing-Vorrichtung ausgeführt wird, die Computing-Vorrichtung veranlasst zum: Kombinieren eines aktuellen Zyklus von Daten in einem Eingangsdatenstrom mit mindestens einem Teil eines nächsten Zyklus von Daten in dem Eingangsdatenstrom, um einen Frame von Daten zu bilden; Feststellen einer Mehrzahl von Übereinstimmungen in einer Mehrzahl von Directory-Speichern, wobei jede Übereinstimmung mit einem Teil eines gegebenen Teilstring in dem Frame von Daten übereinstimmt; Feststellen eines Teilsatzes von Übereinstimmungen in der Mehrzahl der Übereinstimmungen, welche eine beste Abdeckung des aktuellen Zyklus von Daten liefert; und Verschlüsseln des Frame von Daten in einen verschlüsselten Ausgangsdatenstrom.
  24. Das Computer-Programm-Produkt gemäß Anspruch 23, wobei das Kombinieren des aktuellen Zyklus von Daten mit mindestens einem Anteil des nächsten Zyklus von Daten ein Bilden einer Mehrzahl von Teilstrings aufweist, wobei jeder bei einem entsprechenden Byte des aktuellen Zyklus von Daten beginnt und eine Länge aufweist, die gleich dem aktuellen Zyklus von Daten ist.
  25. Das Computer-Programm-Produkt gemäß Anspruch 23 oder Anspruch 24, wobei der Teilsatz von Übereinstimmungen eine Zyklusgrenze zwischen dem ersten Zyklus von Daten und dem zweiten Zyklus von Daten überschreitet.
  26. Das Computer-Programm-Produkt gemäß einem der Ansprüche 23 und 25, wobei das Verschlüsseln des Frame von Daten in einen verschlüsselten Ausgangsdatenstrom aufweist: Verschlüsseln jedes der Teilsätze der Übereinstimmungen mit Längen- und Distanz-Informationen, um verschlüsselte Übereinstimmungsdaten zu bilden; Verschlüsseln nicht übereinstimmender Daten in dem aktuellen Zyklus von Daten in den Ausgangsdatenstrom unter Nutzung einer verlustlosen Kompression, um komprimierte verschlüsselte Daten zu bilden; und Ausrichten der übereinstimmenden verschlüsselten Daten und der komprimierten verschlüsselten Daten in einem Ausgangsdatenstrom.
  27. Das Computer-Programm-Produkt gemäß einem der Ansprüche 23 bis 26, wobei das Computer-Programm-Produkt weiterhin die Computing-Vorrichtung veranlasst zum: Erzeugen einer Adresse basierend auf jeden gegebenen Teilstring aus der Mehrzahl der Teilstrings, um eine Mehrzahl von Adressen zu bilden.
  28. Des Computer-Programm-Produkt gemäß Anspruch 27, wobei das Erzeugen der Adresse ein Ausführen eines Hashing auf dem gegebenen Teilstring aufweist.
  29. Das Computer-Programm-Produkt gemäß Anspruch 27 bis 28, wobei das Computer-lesbare Programm weiterhin die Computing-Vorrichtung veranlasst zum: Schreiben jedes gegebenen Teilstring und eines entsprechenden Positionswertes in einen entsprechendes Dictionary-Speicher aus der Mehrzahl der Dictionary-Speicher unter Nutzung der Adresse, die von dem gegebenen Teilstring erzeugt wurde.
  30. Das Computer-Programm-Produkt gemäß einem der Ansprüche 27 bis 29., wobei das Feststellen der Mehrzahl der Übereinstimmungen aufweist: Nutzen der Mehrzahl der Adressen, um von jedem gegebenen Dictionary-Speicher innerhalb der Mehrzahl der Dictionary-Speicher zu lesen, um keine oder mehrere gültige Einträge für jeden Dictionary-Speicher zu erhalten.
  31. Das Computer-Programm-Produkt gemäß Anspruch 30, wobei das Feststellen der Mehrzahl der Übereinstimmungen Folgendes aufweist: Vergleichen des mindestens einen gültigen Eintrages mit einem entsprechenden Teilstring für jeden Dictionary-Speicher, der mindestens einen gültigen Eintrag aufweist; und Auswählen einer längsten Übereinstimmung basierend auf einer Anzahl von zusammenhängenden übereinstimmenden Bytes beginnend mit dem Anfang des entsprechenden Teilstring für jeden Dictionary-Speicher, der mindestens einen gültigen Eintrag aufweist, um eine Mehrzahl von Übereinstimmungen zu bilden.
  32. Das Computer-Programm-Produkt gemäß Anspruch 31, wobei jede der Mehrzahl der Übereinstimmungen eine Übereinstimmungslängenwert und einen Positionswert aufweist, wobei der Längenwert auf eine Länge der übereinstimmenden Daten hinweist, und wobei der Positionswert ein vorheriges Vorkommen in den übereinstimmenden Daten in dem Eingangsdatenstrom referenziert.
DE112013006339.5T 2013-01-03 2013-12-02 Kompression hoher Bandbreite um Datenströme zu Verschlüsseln Active DE112013006339B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
USUS-13/733,354 2013-01-03
US13/733,354 US8704686B1 (en) 2013-01-03 2013-01-03 High bandwidth compression to encoded data streams
US13/733,354 2013-01-03
PCT/IB2013/060559 WO2014106782A1 (en) 2013-01-03 2013-12-02 High bandwidth compression to encoded data streams

Publications (2)

Publication Number Publication Date
DE112013006339T5 true DE112013006339T5 (de) 2015-09-17
DE112013006339B4 DE112013006339B4 (de) 2022-12-22

Family

ID=50481835

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013006339.5T Active DE112013006339B4 (de) 2013-01-03 2013-12-02 Kompression hoher Bandbreite um Datenströme zu Verschlüsseln

Country Status (6)

Country Link
US (1) US8704686B1 (de)
JP (1) JP6381546B2 (de)
CN (1) CN104904123B (de)
DE (1) DE112013006339B4 (de)
GB (1) GB2521082A (de)
WO (1) WO2014106782A1 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2524515A (en) 2014-03-25 2015-09-30 Ibm Method to improve compression ratio for a compression engine
GB2524516A (en) * 2014-03-25 2015-09-30 Ibm Hardware compression method finding backward references with multi-level hashes
US9160362B1 (en) * 2014-05-08 2015-10-13 Qualcomm Incorporated Lempel-Ziv (LZ)-based data compression employing implicit variable-length distance coding
US9590655B2 (en) 2015-03-27 2017-03-07 Microsoft Technology Licensing, Llc Scalable high-bandwidth architecture for lossless compression
US9503122B1 (en) 2015-05-11 2016-11-22 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that sorts hash chains based on node string match probabilities
US9515678B1 (en) * 2015-05-11 2016-12-06 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that directly huffman encodes output tokens from LZ77 engine
US9628111B2 (en) 2015-05-11 2017-04-18 Via Alliance Semiconductor Co., Ltd. Hardware data compressor with multiple string match search hash tables each based on different hash size
US9509337B1 (en) 2015-05-11 2016-11-29 Via Alliance Semiconductor Co., Ltd. Hardware data compressor using dynamic hash algorithm based on input block type
US9509336B1 (en) 2015-05-11 2016-11-29 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that pre-huffman encodes to decide whether to huffman encode a matched string or a back pointer thereto
US10027346B2 (en) 2015-05-11 2018-07-17 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that maintains sorted symbol list concurrently with input block scanning
US9509335B1 (en) 2015-05-11 2016-11-29 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that constructs and uses dynamic-prime huffman code tables
JP2023039698A (ja) 2021-09-09 2023-03-22 キオクシア株式会社 データ圧縮装置およびメモリシステム
JP2023043618A (ja) 2021-09-16 2023-03-29 キオクシア株式会社 圧縮回路、圧縮方法、及びストレージシステム
JP2023131392A (ja) 2022-03-09 2023-09-22 キオクシア株式会社 辞書式圧縮装置及びメモリシステム
US11914862B2 (en) 2022-03-22 2024-02-27 Western Digital Technologies, Inc. Data compression with entropy encoding
CN116567097B (zh) * 2023-07-04 2023-09-01 广东慧航天唯科技有限公司 基于数据监控的废机油调度数据安全管理系统

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3038234B2 (ja) * 1990-09-20 2000-05-08 富士通株式会社 データ圧縮装置の辞書検索方式
US5140321A (en) 1991-09-04 1992-08-18 Prime Computer, Inc. Data compression/decompression method and apparatus
US5406278A (en) 1992-02-28 1995-04-11 Intersecting Concepts, Inc. Method and apparatus for data compression having an improved matching algorithm which utilizes a parallel hashing technique
US5406279A (en) * 1992-09-02 1995-04-11 Cirrus Logic, Inc. General purpose, hash-based technique for single-pass lossless data compression
US5467087A (en) * 1992-12-18 1995-11-14 Apple Computer, Inc. High speed lossless data compression system
US5572206A (en) * 1994-07-06 1996-11-05 Microsoft Corporation Data compression method and system
US5771010A (en) * 1995-03-22 1998-06-23 Ibm Corporation Apparatus for compressing data using a Lempel-Ziv-type algorithm
US5861827A (en) * 1996-07-24 1999-01-19 Unisys Corporation Data compression and decompression system with immediate dictionary updating interleaved with string search
US6624762B1 (en) 2002-04-11 2003-09-23 Unisys Corporation Hardware-based, LZW data compression co-processor
US20040022312A1 (en) * 2002-07-31 2004-02-05 Jones Simon R. Lossless data compression
US6667700B1 (en) 2002-10-30 2003-12-23 Nbt Technology, Inc. Content-based segmentation scheme for data compression in storage and transmission including hierarchical segment representation
US7051126B1 (en) 2003-08-19 2006-05-23 F5 Networks, Inc. Hardware accelerated compression
JP4556766B2 (ja) 2005-05-23 2010-10-06 ソニー株式会社 文字列検索回路及び文字列検索方法
US7307552B2 (en) 2005-11-16 2007-12-11 Cisco Technology, Inc. Method and apparatus for efficient hardware based deflate
US7538695B2 (en) 2007-06-29 2009-05-26 Rmi Corporation System and method for deflate processing within a compression engine
US9772936B2 (en) * 2008-07-10 2017-09-26 Micron Technology, Inc. Data collection and compression in a solid state storage device

Also Published As

Publication number Publication date
CN104904123B (zh) 2018-04-27
GB2521082A (en) 2015-06-10
JP6381546B2 (ja) 2018-08-29
JP2016506197A (ja) 2016-02-25
GB201506285D0 (en) 2015-05-27
DE112013006339B4 (de) 2022-12-22
US8704686B1 (en) 2014-04-22
CN104904123A (zh) 2015-09-09
WO2014106782A1 (en) 2014-07-10

Similar Documents

Publication Publication Date Title
DE112013006339B4 (de) Kompression hoher Bandbreite um Datenströme zu Verschlüsseln
DE112012004873T5 (de) Hohe Bandbreitendekomprimierung von mit variabler Länge verschlüsselten Datenströmen
WO2004066505A2 (de) Blockdatenkompressionssystem, bestehend aus einer kompressionseinrichtung und einer dekompressionseinrichtung, und verfahren zur schnellen blockdatenkompression mit multi-byte-suche
DE102009061814B3 (de) Verfahren, Sender, Empfänger und System für ein Paketisierungsschema auf Link- und Lane-Ebene für die Codierung in seriellen Links
DE60033184T2 (de) Verfahren und Vorrichtung zur Datenkomprimierung von Netzwerkdatenpaketen unter Verwendung von paketweisen Hash Tabellen
DE69838074T2 (de) Verfahren und vorrichtung zur gleichzeitigen verschlüsselung und komprimierung von daten
DE112012005557T5 (de) Erzeugen eines Code-Alphabets von Symbolen zum Erzeugen von Codewörtern für Wörter, die mit einem Programm verwendet werden
DE102016221813A1 (de) Datenreplikation auf der Grundlage des Verlaufs des Komprimierungsverhältnisses
DE102020110578A1 (de) Selbstprüfungskompression
EP2326013B1 (de) Verfahren und Anordnung zur arithmetischen Enkodierung und Dekodierung mit Verwendung mehrerer Tabellen
DE112008002903T5 (de) Datensequenzkompression
DE112012003503T5 (de) Skalierbares Deduplizierungssystem mit kleinen Blöcken
US20230041067A1 (en) Systems and methods of data compression
DE112013000734B4 (de) Multiplex-Klassifizierung zum Komprimieren von Tabellendaten
DE112014000251T5 (de) Echtzeitklassifizierung von Daten in Datenkomprimierungsdomänen
DE112014000578T5 (de) System und Verfahren zum Erkennen eines kompromittierten Computersystems
DE102020133861A1 (de) Normalisierte-wahrscheinlichkeit-bestimmung für zeichenkodierung
EP3195481B1 (de) Vorrichtung zur hash-verarbeitung mit adaptiver ratenkomprimierung
DE112013000392T5 (de) Volles Ausnutzen von Parallelprozessoren zum Verarbeiten von Daten
Edwards et al. Parallel algorithms for Burrows–Wheeler compression and decompression
WO2017149149A1 (de) Kennungscodierungseinrichtung und kennungsdecodierungseinrichtung zur datenverteilung in netzwerken sowie derartige einrichtungen aufweisende netzwerkelemente
US8593310B1 (en) Data-driven variable length encoding of fixed-length data
Baruah et al. Enhancing dictionary based preprocessing for better text compression
Haghighi et al. Optimizing run-length algorithm using octonary repetition tree
DE102018126763B4 (de) Kryptographieverfahren

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final