DE112012004873T5 - Hohe Bandbreitendekomprimierung von mit variabler Länge verschlüsselten Datenströmen - Google Patents

Hohe Bandbreitendekomprimierung von mit variabler Länge verschlüsselten Datenströmen Download PDF

Info

Publication number
DE112012004873T5
DE112012004873T5 DE112012004873.3T DE112012004873T DE112012004873T5 DE 112012004873 T5 DE112012004873 T5 DE 112012004873T5 DE 112012004873 T DE112012004873 T DE 112012004873T DE 112012004873 T5 DE112012004873 T5 DE 112012004873T5
Authority
DE
Germany
Prior art keywords
data
input line
symbol
data input
encrypted
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
DE112012004873.3T
Other languages
English (en)
Other versions
DE112012004873B4 (de
Inventor
c/o IBM Corp. Agarwal Kanak B.
c/o IBM Corp. Jamsek Damir A.
c/o IBM Corp. Ms 9062007d Hofstee Harm P.
c/o IBM Corp. Martin Andrew K.
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 DE112012004873T5 publication Critical patent/DE112012004873T5/de
Application granted granted Critical
Publication of DE112012004873B4 publication Critical patent/DE112012004873B4/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
    • 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
    • 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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • 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/6005Decoder aspects

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 werden Mechanismen bereitgestellt zum Entschlüsseln eines mit variabler Länge verschlüsselten Datenstroms. Eine Entschlüsselungseinheit eines Datenverarbeitungssystems empfängt eine Daten-Eingabezeile. Die Daten-Eingabezeile ist ein Abschnitt des mit variabler Länge verschlüsselten Datenstroms. Die Entschlüsselungseinheit ermittelt eine Bit-Überlaufmenge der Daten-Eingabezeile auf eine nächste Daten-Eingabezeile; Die Entschlüsselungseinheit richtet die nächste Daten-Eingabezeile aus, sodass sie auf der Grundlage der ermittelten Bit-Überlaufmenge an einer Grenze eines verschlüsselten Symbols beginnt. Die Entschlüsselungseinheit zerlegt die Daten-Eingabezeile in Token, um einen Satz von Token zu erzeugen. Jedes Token entspricht einem verschlüsselten Symbol in der ausgerichteten nächsten Daten-Eingabezeile. Die Entschlüsselungseinheit erzeugt ein Daten-Ausgabewort auf der Grundlage des Satzes von Token. Das Daten-Ausgabewort entspricht einem Datenwort in dem ursprünglichen Satz von Daten.

Description

  • HINTERGRUND
  • Die vorliegende Anmeldung betrifft allgemein eine verbesserte Vorrichtung und ein verbessertes Verfahren zur Datenverarbeitung und insbesondere Mechanismen zum Bereitstellen von hoher Bandbreitendekomprimierung von mit variabler Länge verschlüsselten Datenströmen.
  • Verlustlose Datenkomprimierung ist eine Klasse von Datenkomprimierungsalgorithmen, die gestatten, die exakten ursprünglichen Daten aus den komprimierten Daten wiederherzustellen. Der Begriff „verlustlos” steht im Gegensatz zu verlustbehafteten Datenkomprimierungstechniken, die im Tausch gegen bessere Komprimierungsraten nur eine Näherung der wiederherzustellenden ursprünglichen Daten gestatten. Eine verlustlose Datenkomprimierung wird in vielen verschiedenen Anwendungstypen verwendet, einschließlich dem ZIP-Komprimierungsformat, der GZIP-Komprimierung in Datenverarbeitungssystemen auf der Grundlage von Unix-Betriebssystemen und dergleichen.
  • Ein Typ von verlustloser Datenkomprimierung ist der DEFLATE-Datenkomprimierungsalgorithmus, der im U.S.-Patent Nr. 5 051 745 beschrieben wird. Der DEFLATE-Datenkomprimierungsalgorithmus verwendet eine Kombination des Lempel-Ziv LZ77-Komprimierungsalgorithmus und der Huffman-Codierung. Die LZ77-Komprimierung ist eine Gleitfenster-Komprimierungstechnik, bei der für einen Bereich (oder ein Fenster) von Daten Literal-Bytes von Zeichenfolgen gespeichert werden, die noch nicht als dupliziert erfasst wurden, und wenn eine doppelte Zeichenfolge in dem Bereich (oder dem Fenster) erfasst wird, wird stattdessen ein Zeiger auf die vorher gespeicherten Literal-Bytes gespeichert. Der Zeiger weist eine Länge und einen Rückwärtsabstand in dem Bereich (oder dem Fenster) auf. Die Huffman-Codierung wird dann auf die Literal-Bytes und Zeiger in dem LZ77-Algorithmus angewendet. Die Huffman-Codierung stellt die Fähigkeit bereit, Literal-Bytes und Zeiger unter Verwendung einer Verschlüsselung variabler Länge zu verschlüsseln. Weitere Informationen zum DEFLATE-Datenkomprimierungsalgorithmus finden sich in Deutsch, „DEFLATE Compressed Data Format Specification”, Version 1.3, Network Working Group RFC 1951, Mai 1996.
  • KURZDARSTELLUNG DER ERFINDUNG
  • In einer veranschaulichenden Ausführungsform wird ein Verfahren in einem Datenverarbeitungssystem zum Entschlüsseln eines mit variabler Länge verschlüsselten Datenstroms bereitgestellt. Das Verfahren umfasst ein Empfangen einer Daten-Eingabezeile durch eine Entschlüsselungseinheit des Datenverarbeitungssystems, wobei die Daten-Eingabezeile ein Abschnitt des mit variabler Länge verschlüsselten Datenstroms ist. Das Verfahren weist ferner ein Ermitteln einer Bit-Überlaufmenge der Daten-Eingabezeile auf eine nächste Daten-Eingabezeile zur Symbolausrichtung durch die Entschlüsselungseinheit auf. Außerdem weist das Verfahren ein Ausrichten der Daten-Eingabezeile durch die Entschlüsselungseinheit auf, sodass sie auf der Grundlage der ermittelten Bit-Überlaufmenge aus der vorherigen Daten-Eingabezeile an einer Symbolgrenze beginnt. Des Weiteren weist das Verfahren ein Zerlegen der ausgerichteten Daten-Eingabezeile in Token durch die Entschlüsselungseinheit auf, um einen Satz von Token zu erzeugen, wobei jedes Token einem mit variabler Länge verschlüsselten Symbol in der ausgerichteten nächsten Eingabezeile entspricht. Außerdem weist das Verfahren ein Erzeugen eines Daten-Ausgabeworts auf der Grundlage des Satzes von Token durch die Entschlüsselungseinheit auf, wobei das Daten-Ausgabewort einem Datenwort in dem ursprünglichen Satz von Daten entspricht.
  • In weiteren veranschaulichenden Ausführungsformen wird ein Computerprogrammprodukt bereitgestellt, das ein von einem Computer verwendbares oder lesbares Medium mit einem computerlesbaren Programm aufweist. Wenn das computerlesbare Programm auf einer Datenverarbeitungseinheit ausgeführt wird, veranlasst es die Datenverarbeitungseinheit, verschiedene der einzelnen Operationen und Kombinationen davon auszuführen, die oben in Bezug auf das Verfahren der veranschaulichenden Ausführungsform dargelegt sind.
  • In noch einer weiteren veranschaulichenden Ausführungsform wird ein System/eine Vorrichtung bereitgestellt. Das System/die Vorrichtung kann einen oder mehrere Prozessoren und einen Arbeitsspeicher aufweisen, der mit dem einen oder den mehreren Prozessoren verbunden ist. Der Arbeitsspeicher kann Anweisungen aufweisen, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen, verschiedene der einzelnen Operationen und Kombinationen davon auszuführen, die oben in Bezug auf das Verfahren der veranschaulichenden Ausführungsform dargelegt sind.
  • Diese und andere Merkmale und Vorteile der vorliegenden Erfindung werden in der folgenden ausführlichen Beschreibung der beispielhaften Ausführungsformen der vorliegenden Erfindung beschrieben oder werden dadurch für den Fachmann offenkundig.
  • KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
  • Die Erfindung sowie ein bevorzugter Verwendungsmodus und weitere ihrer Zielsetzungen und Vorteile lassen sich am besten unter Bezugnahme auf die folgende ausführliche Beschreibung von veranschaulichenden Ausführungsformen in Verbindung mit den begleitenden Zeichnungen verstehen, wobei:
  • 1 eine bildliche Darstellung eines Beispiels für ein verteiltes Datenverarbeitungssystem ist, in dem Aspekte der veranschaulichenden Ausführungsformen umgesetzt werden können;
  • 2 ein Blockschaubild eines Beispiels für ein Datenverarbeitungssystem ist, in dem Aspekte der veranschaulichenden Ausführungsformen umgesetzt werden können;
  • 3 ein Beispiel-Blockschaubild einer Architektur einer Entschlüsselungseinheit/Dekomprimierungseinheit gemäß einer veranschaulichenden Ausführungsform ist;
  • 4 eine beispielhafte Darstellung ist, die eine Vielzahl von Eingabezeilen veranschaulicht, die einen Bit-Überlauf eines Abschnitts von Daten von einer Eingabezeile in eine andere veranschaulichen;
  • 5 ein Beispiel-Blockschaubild ist, das eine Operation der Ausrichtungslogik der Entschlüsselungseinheit/Dekomprimierungseinheit veranschaulicht, wenn die Ausrichtung einer Eingabezeile gemäß einer veranschaulichenden Ausführungsform ermittelt wird;
  • 6 ein Beispiel-Blockschaubild einer Tokenizer-Logikpipeline gemäß einer veranschaulichenden Ausführungsform ist;
  • 7 ein Beispiel-Blockschaubild einer Ausgabegeneratorlogik gemäß einer veranschaulichenden Ausführungsform ist; und
  • 8 ein Ablaufplan ist, der eine Beispieloperation zum Verarbeiten eines mit variabler Länge verschlüsselten Datenstroms gemäß einer veranschaulichenden Ausführungsform aufgliedert.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die veranschaulichenden Ausführungsformen stellen Mechanismen zum Bereitstellen einer hohen Bandbreitendekomprimierung von mit variabler Länge verschlüsselten Datenströmen bereit. Die Mechanismen der veranschaulichenden Ausführungsformen gleichen die mit variabler Länge verschlüsselten Symbole in einem komprimierten Datenstrom aus, die durch die verwendete Komprimierungstechnik eingefügt werden, z. B. die Huffman-Codierung mit variabler Länge oder andere Verschlüsselungstechniken mit variabler Länge. Mit den Mechanismen der veranschaulichenden Ausführungsformen, die diese mit variabler Länge verschlüsselten Symbole in dem verschlüsselten Datenstrom ausgleichen, kann eine parallele Dekomprimierung an einem Datenblock in dem Datenstrom ausgeführt werden, wodurch sich der Durchsatz und die Geschwindigkeit der Dekomprimierungsoperation erhöhen. Als Ergebnis dessen wird ein Hochgeschwindigkeits-Dekomprimierungsmechanismus hoher Bandbreite bereitgestellt, der mit variabler Länge verschlüsselte Datenströme bearbeiten kann.
  • Wie einem Fachmann klar sein wird, können Aspekte der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend können Aspekte der vorliegenden Erfindung in der Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (einschließlich Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform vorliegen, die Software- und Hardware-Aspekte kombiniert, auf die alle hierin allgemein als „Schaltung”, „Modul” oder „System” Bezug genommen werden kann. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren beliebigen computerlesbaren Medien mit einem darin ausgeführten, von einem Computer verwendbaren Programmcode verkörpert ist.
  • Jede Kombination von einem oder mehreren computerlesbaren Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung, Einheit oder jede geeignete Kombination aus dem Vorgenannten sein, ist aber nicht darauf beschränkt. Zu spezielleren Beispielen (eine nicht erschöpfende Liste) für das computerlesbare Speichermedium würde Folgendes zählen: eine elektrische Verbindung mit einer oder mehreren Drahtleitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer CD-ROM, eine optische Speichereinheit, eine Magnetspeichereinheit oder jede geeignete Kombination des Vorgenannten. In dem Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes konkrete Medium sein, das ein Programm enthalten oder speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Anweisungsausführung verwendet werden kann.
  • Ein computerlesbares Signalmedium kann ein verbreitetes Datensignal mit einem darin verkörperten computerlesbaren Programmcode enthalten, zum Beispiel in einem Basisband oder als Teil einer Trägerwelle. Ein derartiges verbreitetes Signal kann jede einer Vielfalt von Formen annehmen, einschließlich elektromagnetisch, optisch oder jede geeignete Kombination davon, es ist aber nicht darauf beschränkt. Ein computerlesbares Signalmedium kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Anweisungsausführung übertragen, verbreiten oder transportieren kann.
  • In einem computerlesbaren Medium verkörperter Computercode kann unter Verwendung jedes geeigneten Mediums übertragen werden, einschließlich drahtlos, drahtgebunden, über ein Lichtwellenleiterkabel, Funkfrequenz (HF) usw. oder jeder geeigneten Kombination davon, ist aber nicht darauf beschränkt.
  • Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination von einer oder mehreren Programmiersprachen geschrieben werden, einschließlich einer objektorientierten Programmiersprache wie JavaTM, SmalltalkTM, C++ oder dergleichen und herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C” oder ähnlichen Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk verbunden werden, einschließlich ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Nutzung eines Internet-Dienstanbieters).
  • Aspekte der vorliegenden Erfindung werden im Folgenden unter Bezugnahme auf Ablaufplanveranschaulichungen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß den veranschaulichenden Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern und Kombinationen von Blöcken in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können für einen Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen erstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsartikel erzeugen, einschließlich Anweisungen, die die in dem Block oder den Blöcken von Ablaufplan und/oder Blockschaubild angegebene Funktion/Handlung umsetzen.
  • Die Computerprogrammanweisungen können auch auf einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten geladen werden, um die Ausführung einer Serie von Arbeitsschritten auf dem Computer, einer anderen Vorrichtung, die programmierbare Daten ausführt, oder anderen Einheiten zu veranlassen, um einen über den Computer umgesetzten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Handlungen bereitstellen, die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaubilds angegeben sind.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Diesbezüglich kann jeder Block in dem Ablaufplan oder in den Blockschaubildern ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktion(en) aufweist. Es ist ebenfalls anzumerken, dass in einigen alternativen Umsetzungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge auftreten können als in den Figuren angegeben. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es wird ebenfalls angemerkt, dass jeder Block in den Blockschaubildern und/oder in der Ablaufplanveranschaulichung und Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplanveranschaulichung durch spezielle Systeme auf der Grundlage von Hardware, die die angegebenen Funktionen oder Handlungen ausführen, oder Kombinationen von spezieller Hardware und Computeranweisungen umgesetzt werden können.
  • Somit können die veranschaulichenden Ausführungsformen in vielen verschiedenen Typen von Datenverarbeitungsumgebungen verwendet werden. Um einen Kontext für die Beschreibung der spezifischen Elemente und der Funktionalität der veranschaulichenden Ausführungsformen bereitzustellen, werden die 1 und 2 im Folgenden als Beispielumgebungen angegeben, in denen Aspekte der veranschaulichenden Ausführungsformen umgesetzt werden können. Es sollte klar sein, dass die 1 und 2 nur Beispiele sind und durch sie keinerlei Einschränkung hinsichtlich der Umgebungen festgestellt oder impliziert werden soll, in denen Aspekte oder Ausführungsformen der vorliegenden Erfindung umgesetzt werden können. Viele Modifizierungen können an den dargestellten Umgebungen vorgenommen werden, ohne von dem Erfindungsgedanken und Schutzumfang der vorliegenden Erfindung abzuweichen.
  • 1 zeigt eine bildliche Darstellung eines Beispiels für ein verteiltes Datenverarbeitungssystem, in dem Aspekte der veranschaulichenden Ausführungsformen umgesetzt werden können. Ein verteiltes Datenverarbeitungssystem 100 kann ein Netzwerk von Computern enthalten, in dem Aspekte der veranschaulichenden Ausführungsformen umgesetzt werden können. Das verteilte Datenverarbeitungssystem 100 enthält mindestens ein Netzwerk 102, welches das Medium ist, das zum Bereitstellen von Datenübertragungsverbindungen zwischen verschiedenen Einheiten und Computern verwendet wird, die in dem verteilten Datenverarbeitungssystem 100 miteinander verbunden sind. Das Netzwerk 102 kann Verbindungen enthalten, wie drahtgebundene, drahtlose Datenübertragungsverbindungen oder Lichtwellenleiterkabel.
  • In dem dargestellten Beispiel sind ein Server 104 und ein Server 106 zusammen mit einer Speichereinheit 108 mit dem Netzwerk 102 verbunden. Außerdem sind auch die Clients 110, 112 und 114 mit dem Netzwerk 102 verbunden. Diese Clients 110, 112 und 114 können zum Beispiel Personal Computer, Netzwerk-Computer oder dergleichen sein. In dem dargestellten Beispiel stellt der Server 104 Daten wie beispielsweise Boot-Dateien, Betriebssystemabbilder und Anwendungen für die Clients 110, 112 und 114 bereit. Die Clients 110, 112 und 114 sind Clients für den Server 104 in dem dargestellten Beispiel. Das verteilte Datenverarbeitungssystem 100 kann zusätzliche Server, Clients und weitere nicht gezeigte Einheiten enthalten.
  • In dem dargestellten Beispiel ist das verteilte Datenverarbeitungssystem 100 das Internet, wobei das Netzwerk 102 für eine weltweite Sammlung von Netzwerken und Gateways steht, welche die Protokollgruppe Transmission Control Protocol/Internet Protocol (TCP/IP) für den Datenaustausch untereinander verwenden. Das Kernstück des Internet ist ein Backbone von Hochgeschwindigkeits-Datenübertragungsleitungen zwischen Hauptknoten oder Host-Computern, die aus Tausenden von gewerblichen, behördlichen, schulischen und anderen Computersystemen bestehen, die Daten und Nachrichten weiterleiten. Selbstverständlich kann das verteilte Datenverarbeitungssystem 100 auch so umgesetzt werden, dass es eine Anzahl von verschiedenen Typen von Netzwerken enthält, wie zum Beispiel ein Intranet, ein lokales Netzwerk (LAN), ein Weitverkehrsnetz (WAN) oder dergleichen. Wie oben ausgeführt, soll 1 als Beispiel dienen, nicht als Architektureinschränkung für verschiedene Ausführungsformen der vorliegenden Erfindung, und daher sollten die in 1 gezeigten speziellen Elemente hinsichtlich der Umgebungen, in denen die veranschaulichenden Ausführungsformen der vorliegenden Erfindung umgesetzt werden können, als nicht einschränkend betrachtet werden.
  • 2 ist ein Blockschaubild eines Beispiels für ein Datenverarbeitungssystem, in dem Aspekte der veranschaulichenden Ausführungsformen umgesetzt werden können. Ein Datenverarbeitungssystem 200 ist ein Beispiel für einen Computer wie dem Client 110 in 1, in dem sich ein vom Computer verwendbarer Code oder Anweisungen befinden können, welche die Prozesse für veranschaulichende Ausführungsformen der vorliegenden Erfindung umsetzen.
  • In dem dargestellten Beispiel verwendet das Datenverarbeitungssystem 200 eine Hub-Architektur mit einem Northbridge und Arbeitsspeicher-Controller-Hub (NB/MCH) 202 und einem Southbridge und Eingabe/Ausgabe-(E/A)Controller-Hub (SB/ICH) 204. Eine Verarbeitungseinheit 206, ein Hauptarbeitsspeicher 208 und ein Grafikprozessor 210 sind mit dem NB/MCH 202 verbunden. Der Grafikprozessor 210 kann mit dem NB/MCH 202 über einen beschleunigten Grafikanschluss (AGP) verbunden sein.
  • In dem dargestellten Beispiel ist lokaler Netzwerk-(LAN)Adapter 212 mit dem SB/ICH 204 verbunden. Ein Audio-Adapter 216, ein Tastatur- und Maus-Adapter 220, ein Modem 222, ein Nur-Lese-Speicher (ROM) 224, ein Festplattenlaufwerk (HDD) 226, ein CD-ROM-Laufwerk 230, Universal-Serial-Bus-(USB)Anschlüsse und weitere Datenübertragungsanschlüsse 232 und PCI/PCIe-Einheiten 234 sind mit dem SB/ICH 204 über einen Bus 238 und einen Bus 240 verbunden. Zu PCI/PCIe-Einheiten können beispielsweise Ethernet-Adapter, Add-in-Karten und PC-Karten für Notebook-Computer gehören. PCI verwendet einen Karten-Bus-Controller, PCIe hingegen nicht. Der ROM 224 kann beispielsweise ein grundlegendes Flash-Eingabe/Ausgabe-System (BIOS) sein.
  • Das HDD 226 und das CD-ROM-Laufwerk 230 sind mit dem SB/ICH 204 über den Bus 240 verbunden. Das HDD 226 und das CD-ROM-Laufwerk 230 können zum Beispiel eine Integrated Drive Electronics-(IDE) oder Serial Advanced Technology Attachment-(SATA)Schnittstelle verwenden. Eine Super I/O-(SIO)Einheit 236 kann mit dem SB/ICH 204 verbunden sein.
  • Auf der Verarbeitungseinheit 206 wird ein Betriebssystem ausgeführt. Das Betriebssystem koordiniert und stellt eine Steuerung von verschiedenen Komponenten in dem Datenverarbeitungssystem 200 in 2 bereit. Als Client kann das Betriebssystem ein im Handel erhältliches Betriebssystem wie Microsoft® Windows 7® sein. Ein objektorientiertes Programmiersystem wie das Java-Programmiersystem kann zusammen mit dem Betriebssystem ausgeführt werden und stellt Aufrufe an das Betriebssystem aus JavaTM-Programmen oder Anwendungen bereit, die auf dem Datenverarbeitungssystem 200 ausgeführt werden.
  • Als Server kann das Datenverarbeitungssystem 200 zum Beispiel ein IBM® eServerTM System p®-Computersystem sein, welches das Advanced Interactive Executive-(AIX®)Betriebssystem oder das Linux®-Betriebssystem ausführt. Das Datenverarbeitungssystem 200 kann ein symmetrisches Multiprozessor-(SMP)System mit einer Vielzahl von Prozessoren in der Verarbeitungseinheit 206 sein. Alternativ kann ein Einzelprozessorsystem verwendet werden.
  • Anweisungen für das Betriebssystem, das objektorientierte Programmiersystem und Anwendungen oder Programme befinden sich auf Speichereinheiten wie dem HDD 226 und können zum Ausführen durch die Verarbeitungseinheit 206 in den Hauptarbeitsspeicher 208 geladen werden. Die Prozesse für veranschaulichende Ausführungsformen der vorliegenden Erfindung können durch die Verarbeitungseinheit 206 unter Verwendung von computerlesbarem Programmcode ausgeführt werden, der in sich in einem Arbeitsspeicher befinden kann wie beispielsweise dem Hauptarbeitsspeicher 208, dem ROM 224 oder zum Beispiel in einer oder mehreren Peripherie-Einheiten 226 und 230.
  • Ein Bussystem wie beispielsweise der Bus 238 oder der Bus 240, wie in 2 gezeigt, kann sich aus einem oder mehreren Bussen zusammensetzen. Selbstverständlich kann das Bussystem unter Verwendung jedes beliebigen Typs von Datenübertragungsstruktur oder -architektur umgesetzt werden, der eine Datenübertragung zwischen verschiedenen Komponenten oder Einheiten bereitstellt, die an die Struktur oder Architektur angeschlossen sind. Eine Datenübertragungseinheit wie beispielsweise der Modem 222 oder der Netzwerk-Adapter 212 von 2 kann eine oder mehrere Einheiten enthalten, die zum Senden und Empfangen von Daten verwendet werden. Ein Arbeitsspeicher kann zum Beispiel der Hauptarbeitsspeicher 208, der ROM 224 oder ein Zwischenspeicher sein, wie er im NB/MCH 202 in 2 zu finden ist.
  • Fachleuten wird klar sein, dass die Hardware in den 1 und 2 je nach Umsetzung unterschiedlich sein kann. Weitere interne Hardware- oder Peripherie-Einheiten wie Flash-Arbeitsspeicher, gleichwertiger nicht-flüchtiger Arbeitsspeicher oder optische Plattenlaufwerke und dergleichen können zusätzlich zu oder anstelle der Hardware verwendet werden, die in den 1 und 2 dargestellt ist. Des Weiteren können die Prozesse der veranschaulichenden Ausführungsformen auf ein anderes Mehrfachprozessor-Datenverarbeitungssystem als das vorher erwähnte SMP-System angewendet werden, ohne von dem Erfindungsgedanken und dem Schutzumfang der vorliegenden Erfindung abzuweichen.
  • Des Weiteren kann das Datenverarbeitungssystem 200 die Form von jedem einer Anzahl von verschiedenen Datenverarbeitungssystemen annehmen, einschließlich Client-Datenverarbeitungseinheiten, Server-Datenverarbeitungseinheiten, einem Tablet-Computer, Laptop-Computer, Telefon oder einer anderen Datenübertragungseinheit, einem Personal Digital Assistant (PDA) oder dergleichen. In einigen veranschaulichenden Beispielen kann das Datenverarbeitungssystem 200 eine tragbare Datenverarbeitungseinheit sein, die mit einem Flash-Arbeitsspeicher konfiguriert ist, um beispielsweise nicht-flüchtigen Arbeitsspeicher zum Speichern von Betriebssystemdateien und/oder vom Benutzer erzeugten Daten bereitzustellen. Im Wesentlichen kann das Datenverarbeitungssystem 200 jedes bekannte oder später entwickelte Datenverarbeitungssystem ohne Architektureinschränkung sein.
  • Unter erneuter Bezugnahme auf die 1 und 2 empfängt eine Datenverarbeitungseinheit oder ein Datenverarbeitungssystem, wie beispielsweise der Server 106 in der 1, der zum Beispiel als das Datenverarbeitungssystem von 2 umgesetzt werden kann, oder ein anderer Typ eines Datenverarbeitungssystems mit einer verschiedenen Konfiguration und Zusammensetzung von Elementen, jedoch fähig, die Mechanismen der veranschaulichenden Ausführungsformen umzusetzen, wie hierin im Folgenden beschrieben, einen verschlüsselten Datenstrom mit Abschnitten variabler Länge von komprimierten Daten, die in die ursprünglichen Daten des verschlüsselten Datenstroms entschlüsselt werden müssen, sodass das Datenverarbeitungs-/Computing-System fähig ist, die ursprünglichen Daten zu verarbeiten. Der verschlüsselte Datenstrom kann von einem bzw. einer oder mehreren der anderen Datenverarbeitungssysteme/Datenverarbeitungseinheiten übertragen werden, die mit dem Server 106 in diesem Beispiel verbunden sind, z. B. der Server 104, die Clients 110, 112 und/oder 114 oder dergleichen. Der verschlüsselte Datenstrom kann über das eine oder die mehreren Netzwerke 102 übertragen werden. Selbstverständlich kann jedes andere Szenario, in dem ein mit variabler Länge verschlüsselter Datenstrom von einem Datenverarbeitungssystem/einer Datenverarbeitungseinheit empfangen werden kann, von dem bzw. von der die Mechanismen der veranschaulichenden Ausführungsformen umgesetzt wird, ebenfalls mit den Mechanismen der veranschaulichenden Ausführungsformen verwendet werden. Das heißt, dass es nicht wichtig ist, auf welche Weise der mit variabler Länge verschlüsselte Datenstrom übertragen wird, oder die Umstände, unter denen der mit variabler Länge verschlüsselte Datenstrom an das Datenverarbeitungssystem/die Datenverarbeitungseinheit übertragen wird, sondern nur, dass ein mit variabler Länge verschlüsselter Datenstrom an dem Datenverarbeitungssystem/der Datenverarbeitungseinheit empfangen wird und anschließend von den Mechanismen der veranschaulichenden Ausführungsformen bearbeitet wird, wie hierin im Folgenden beschrieben wird.
  • Der mit variabler Länge verschlüsselte Datenstrom kann unter Verwendung jedes bekannten oder später entwickelten Verschlüsselungsalgorithmus verschlüsselt werden, der Symbole variabler Länge erzeugt, um ursprüngliche nichtverschlüsselte Daten zu verschlüsseln. Für Zwecke der vorliegenden Beschreibung wird angenommen, dass der mit variabler Länge verschlüsselte Datenstrom unter Verwendung eines DEFLATE-Algorithmus verschlüsselt wurde, und somit der mit variabler Länge verschlüsselte Datenstrom ein DEFLATE-Format hat. Es sollte jedoch klar sein, dass die vorliegende Erfindung nicht auf die Verwendung mit DEFLATE-formatierten Datenströmen begrenzt ist, und andere Datenströme mit einer Verschlüsselung variabler Länge mit den Mechanismen der veranschaulichenden Ausführungsformen verwendet werden können, ohne von dem Erfindungsgedanken und dem Schutzumfang der veranschaulichenden Ausführungsformen abzuweichen.
  • Typischerweise sind mit variabler Länge verschlüsselte Datenströme nicht geeignet für parallele Entschlüsselungsoperationen, d. h. ein Prozessor eines Datenverarbeitungssystems ist nicht fähig, Abschnitte des Datenstroms parallel zu entschlüsseln. Der Grund dafür ist, dass in dem Datenstrom keine Byte-Ausrichtungsmarkierungen vorhanden sind und daher von dem Datenstrom aus nicht ermittelt werden kann, wo ein Datenabschnitt beginnt und endet und ein anderer Datenabschnitt beginnt und endet, z. B. kann ein Datenabschnitt 7 Bit lang sein, ein anderer Abschnitt kann 9 Bit lang sein, noch ein anderer kann 16 Bit lang sein usw., und aus dem Datenstrom kann nicht ermittelt werden, wo diese Grenzen liegen. Als Ergebnis dessen kann der Datenstrom nicht einfach in Datenblöcke aufgegliedert werden, die dann parallel verarbeitet werden, weil das Aufgliedern möglicherweise innerhalb eines Symbols erfolgt, wodurch verursacht wird, dass ein falsches Dekomprimierungsergebnis erzeugt wird. Als Ergebnis dessen wird die Verarbeitung eines mit variabler Länge verschlüsselten Datenstroms im Allgemeinen unter Verwendung einer sequenziellen Entschlüsselungsoperation ausgeführt, was den Durchsatz und die Geschwindigkeit begrenzt, mit der die Entschlüsselung des mit variabler Länge verschlüsselten Datenstroms ausgeführt werden kann.
  • Die veranschaulichenden Ausführungsformen stellen Mechanismen zum Berücksichtigen der Symbole variabler Länge in einem verschlüsselten (oder komprimierten) Datenstrom bereit, wenn eine Entschlüsselungs- oder Dekomprimierungsoperation an dem verschlüsselten Datenstrom ausgeführt wird. Das heißt, die veranschaulichenden Ausführungsformen stellen einen Mechanismus einer Entschlüsselungseinheit oder Dekomprimierungseinheit bereit, der mit variabler Länge verschlüsselte Datenströme parallel bearbeitet. 3 ist ein Beispiel-Blockschaubild einer derartigen Architektur einer Entschlüsselungseinheit/Dekomprimierungseinheit gemäß einer veranschaulichenden Ausführungsform. Die in 3 gezeigten Elemente können in Hardware, Software, die von einer oder mehreren Hardware-Einheiten umgesetzt wird oder einer beliebigen Kombination von Hardware und/oder Software ausgeführt werden. In einer veranschaulichenden Ausführungsform werden die Elemente von 3 in einer Schaltungslogik umgesetzt und stellen somit eine nur Hardware veranschaulichende Ausführungsform dar. In weiteren veranschaulichenden Ausführungsformen können ein oder mehrere der in 3 gezeigten Elemente als Software, Firmware oder dergleichen umgesetzt werden, die von einer Hardware-Einheit ausgeführt werden, z. B. einem in Hardware umgesetzten Prozessor, um ihre Funktionen auszuführen. In noch weiteren veranschaulichenden Ausführungsformen können einige der Elemente in 3 als Nur-Hardware-Schaltung umgesetzt werden, wogegen andere Elemente als Software, Firmware oder dergleichen umgesetzt werden können, die auf einer oder mehreren Hardware-Einheiten ausgeführt werden.
  • Wie in 3 gezeigt, weist eine Entschlüsselungseinheit/Dekomprimierungseinheit 300 eine Ausrichtungslogik 310, eine Tokenizer-Logik 320, einen Token-Tabellendatenstrukturspeicher 325, eine Ausgabegeneratorlogik 330 und einen Datenstrom-Eingabezeilenspeicher 340 auf. Die Entschlüsselungseinheit/Dekomprimierungseinheit 300 empfängt als Eingabe einen mit variabler Länge verschlüsselten Datenstrom 350. Während jedes Prozessorzyklus empfängt die Entschlüsselungseinheit/Dekomprimierungseinheit 300 eine „Eingabezeile” des mit variabler Länge verschlüsselten Datenstroms 350, der als eine Anzahl von Datenbytes des Eingabe-Datenstroms definiert wird, der während eines Prozessorzyklus empfangen wird. Die Eingabezeile hat eine festgelegte Größe oder Anzahl von Bytes M. Für ein Komprimierungsverhältnis des mit variabler Länge verschlüsselten Datenstroms 350, das größer oder gleich 1 ist, ist die Anzahl von Bytes M in der Eingabezeile kleiner oder gleich einer Anzahl von Bytes N einer dekomprimierten Ausgabe, die in jedem Prozessorzyklus zu erzeugen versucht wird.
  • In dem mit variabler Länge verschlüsselten Datenstrom 350 werden Zeichen fester Länge in den ursprünglichen Daten als Symbole variabler Länge verschlüsselt. Wenn zum Beispiel die Huffman-Codierung verwendet wird, wie in dem spezifischen Fall des Datenstroms variabler Länge 350, der unter Verwendung eines DEFLATE-Komprimierungsalgorithmus mit statischer Huffman-Codierung erzeugt wird, kann jedes der verschlüsselten Symbole eine variable Länge zwischen einer mindesten Huffman-Codelänge Hmin (z. B. 7 Bit) bis zu einer längsten Huffman-Codelänge Hmax (z. B. 31 Bit) haben.
  • Die Ausrichtungslogik 310 der Entschlüsselungseinheit/Dekomprimierungseinheit 300 arbeitet, um die Eingabedaten in der Eingabezeile so auszurichten, dass sie an einer Grenze eines verschlüsselten Symbols beginnen, an der ein Symbol in dem verschlüsselten Datenstrom unter Verwendung einer variablen Anzahl von Bits dargestellt wird und das Symbol einem oder mehreren Bytes der ursprünglichen Daten vor der Verschlüsselung/Komprimierung entspricht. Zum Beispiel wird ein Symbol in komprimierten Daten mit der Huffman-Codierung unter Verwendung einer Huffman-Verschlüsselung variabler Länge verschlüsselt, wobei das verschlüsselte Symbol entweder ein Literal-Byte der ursprünglichen Daten oder einen Zeiger auf mehrere aufeinander folgende Bytes der vorher erfassten ursprünglichen Daten darstellt. Aufgrund der Veränderlichkeit der Länge der verschlüsselten Symbole in der Eingabezeile mit festgelegter Größe können die Eingabezeilen nicht so ausgerichtet sein, dass sie an einer Symbolgrenze beginnen, und einige verschlüsselte Symbole können mehrere Eingabezeilen umspannen, z. B. von einer Eingabezeile bis zu einer nächsten Eingabezeile.
  • Wie oben erwähnt, verweist eine Eingabezeile in dem Kontext der vorliegenden Beschreibung auf verschlüsselte Daten mit einer festgelegten Anzahl von Bytes. Eine Eingabezeile wird in jedem Prozessorzyklus empfangen und verarbeitet. Der Begriff „Symbol”, wie hierin in Bezug auf den verschlüsselten Datenstrom verwendet, verweist auf eine Darstellung einer Verschlüsselung variabler Länge in dem verschlüsselten Datenstrom, wobei jedes Symbol entschlüsselt/dekomprimiert werden kann, um ein oder mehrere Bytes von ursprünglichen Daten zu erstellen. Zum Beispiel kann eine Eingabezeile empfangen werden, die 8 Bytes (64 Bits) enthält, und die 5 Symbole mit Längen von 17, 8, 9, 21 und 11 Bit (insgesamt = 66) enthalten kann. In diesem Beispiel kann das Symbol 1 mit 17 Bit in 13 Bytes von ursprünglichen Daten entschlüsselt werden, Symbol 2 kann in 1 Byte von ursprünglichen Daten entschlüsselt werden usw. Außerdem beträgt die Gesamtanzahl von Bits in den Symbolen 1 bis 566 Bits, und damit liegt ein Bit-Überlauf von 2 Bit vor. Somit muss die nächste Zeile um 2 Bits verschoben werden, um sie so auszurichten, dass sie an einer neuen Symbolgrenze beginnt.
  • 4 ist eine Beispieldarstellung, die eine Vielzahl von Eingabezeilen veranschaulicht, die einen Bit-Überlauf eines verschlüsselten Symbols von einer Eingabezeile in eine andere veranschaulichen. 4 zeigt die Symbole 410 bis 424, die verschlüsselten oder komprimierten Symbolen in den komprimierten Daten entsprechen. Eine erste Eingabezeile 430, die wiederum eine Anzahl von Bytes von komprimierten Daten ist, die in einem Prozessorzyklus empfangen wurden, weist die Symbole 410 bis 414 und einen ersten Teil eines Symbols 416 auf. Das Symbol 416 läuft in die nächste Eingabezeile 440 über, sodass Bits des Symbols 416 sowohl in der Eingabezeile 430 als auch der Eingabezeile 440 vorhanden sind. Dies wird als „Bit-Überlauf” bezeichnet. Somit hängt die Verschiebung in der Eingabezeile 440, die den Beginn eines Symbols 418 identifiziert, von der Anzahl von Bits ab, die aus der Eingabezeile 430 überlaufen. Die Mindestanzahl von Bits, die überlaufen, ist 0, wogegen der maximale Überlauf Hmax – 1 beträgt, da die Größe eines verschlüsselten Symbols höchstens die maximalen Größe des Codes Hmax ist und mindestens ein Bit in der Eingabezeile 430 vorhanden sein muss, damit ein Überlauf vorliegt.
  • Um die Eingabezeile 440 auszurichten muss somit zuerst die Überlaufmenge aus der vorherigen Eingabezeile 430 ermittelt und dieser Überlauf ausgeglichen werden. Dies ist die Funktion, die von der Ausrichtungslogik 310 der Entschlüsselungseinheit/Dekomprimierungseinheit 300 in 3 bereitgestellt wird. Um eine parallele Verarbeitung dieser Eingabezeilen auszuführen, müssen die Eingabezeilen an dem Beginn einer Symbolgrenze ausgerichtet werden, um einen Bit-Überlauf auszugleichen. Wenn eine Ausrichtung durch Ausgleichen eines derartigen Bit-Überlaufs erfolgt ist, können die Mechanismen der veranschaulichenden Ausführungsformen die ausgerichteten Eingabezeilen parallel bearbeiten.
  • Da nicht von vornherein bekannt ist, wie hoch der Bit-Überlauf für ein bestimmtes Paar von Eingabezeilen 430 und 440 ist, verwendet die Ausrichtungslogik 310 der veranschaulichenden Ausführungsformen eine Pipeline-Architektur für eine spekulative Entschlüsselung mit allen Überlaufoptionen, gefolgt von einer späteren Auswahloperation. Das spekulative Entschlüsseln weist eine spekulative Hmax-Verarbeitung jeder Zeile für alle möglichen Verschiebungen von 0 bis Hmax-1 auf. Das heißt, dass jede mögliche Verschiebung beim Entschlüsseln der Zeile parallel berücksichtigt wird, und auf der Grundlage der Ergebnisse der Entschlüsselung und eines Entschlüsselungsergebnisses einer vorherigen Zeile wird eines der entschlüsselten Ergebnisse für eine der möglichen Verschiebungen ausgewählt. Die spekulative Entschlüsselung wird für jede Verschiebung in der Eingabezeile parallel und in der Weise einer Pipeline ausgeführt.
  • Die Art und Weise, durch die der korrekte Bit-Überlauf identifiziert und die entsprechende Verschiebung ermittelt wird, wird ferner unter Betrachtung des folgenden vereinfachten Beispielfalls erklärt. Es wird angenommen, dass es nur zwei mögliche Verschiebungen gibt, die einer Verschiebung von x Bits und einer Verschiebung von y Bits entsprechen. Dann wird angenommen, dass eine Eingabezeile maximal n Symbole enthalten darf und die Datenverarbeitungseinheit höchstens ein Symbol pro Prozessorzyklus verarbeiten kann, sodass es mehrere Zyklen dauert, um die Eingabezeile zu verarbeiten. Im Zyklus 1 wird die Eingabezeile 1 empfangen, und das erste Symbol in der Eingabezeile 1 wird unter Berücksichtigung einer Verschiebung von x Bits und einer Verschiebung von y Bits verarbeitet, um die Länge des ersten Symbols in der Eingabezeile für die zwei Verschiebungsfälle zu finden. In dem nächsten Prozessorzyklus wird die Eingabezeile 2 empfangen, und auf ähnliche Weise wird das erste Symbol der Zeile 2 unter Berücksichtigung einer Verschiebung von x Bits und einer Verschiebung von y Bits verarbeitet. In demselben Prozessorzyklus wird das zweite Symbol der Eingabezeile 1 für die beiden spekulativen Szenarios verarbeitet. Dieser Prozess wird fortgesetzt und in n Zyklen werden alle möglichen n Symbole der Eingabezeile 1 verarbeitet, und die Datenverarbeitungseinheit kennt die Länge aller möglichen n Symbole in der Zeile. Die Gesamtlänge aller Symbole abzüglich der Länge der Eingabezeile gibt mögliche Werte eines Bit-Überlaufs auf die nächste Zeile an. Wenn zum Beispiel die Gesamtlängen aller Symbole für die beiden spekulativen Fälle 69 Bit und 71 Bit beträgt, und die Länge der Eingabezeile 64 Bit ist, gibt es zwei mögliche spekulative Bit-Überlaufwerte (5 Bit und 7 Bit). Ein Auswahlmechanismus wird bereitgestellt, um auf der Grundlage des aus der Entschlüsselung einer vorherigen Daten-Eingabezeile ermittelten Bit-Überlaufs bzw. der ermittelten Verschiebung auszuwählen, welcher der spekulativen Bit-Überläufe bzw. welche der Verschiebungen der korrekte Bit-Überlauf bzw. die korrekte Verschiebung ist.
  • Mit den Mechanismen der veranschaulichenden Ausführungsformen kann jede Anzahl von möglichen Bit-Überläufen oder Verschiebungen parallel berücksichtigt werden statt nur zwei mögliche Verschiebungen oder Bit-Überläufe zu berücksichtigen. Zum Beispiel werden bei einer veranschaulichenden Ausführungsform mögliche Bit-Überläufe oder Verschiebungen von 0 bis Hmax-1 Bit beim Verarbeiten jeder Eingabezeile berücksichtigt.
  • 5 ist ein Beispiel-Blockschaubild, das eine Operation der Ausrichtungslogik 310 der Entschlüsselungseinheit/Dekomprimierungseinheit 300 veranschaulicht, wenn die Ausrichtung einer Eingabezeile gemäß einer veranschaulichenden Ausführungsform ermittelt wird. Wie in 5 gezeigt, empfängt die Ausrichtungslogik 310 eine Eingabezeile 510, die M Bytes von verschlüsselten/komprimierten Daten aufweist. Eine Auffülllogik 520 der Ausrichtungslogik 310 füllt die Eingabezeile 510 mit einer maximalen Überlaufanzahl von Bits aus einer vorherigen Eingabezeile auf. Somit kann zum Beispiel in einem ersten Prozessorzyklus eine erste Eingabezeile empfangen und gespeichert werden, und in dem nächsten Prozessorzyklus kann eine zweite Eingabezeile empfangen und mit der ersten Eingabezeile, die während des vorherigen Prozessorzyklus empfangen wurde, bis zu einer maximalen Überlauf-Bitanzahl kombiniert werden. Die aufgefüllte Eingabezeile wird in parallele Pipelines 530 bis 550 eingegeben. Jede der parallelen Pipelines 530 bis 550 führt eine Verschiebung der aufgefüllten Eingabezeile um eine der möglichen Verschiebungs-(Bit-Überlauf-) mengen aus. Zum Beispiel führt die erste Pipeline 530 eine Verschiebung um 0 Bit aus, eine zweite Pipeline (nicht gezeigt) kann eine Verschiebung um 1 Bit ausführen, eine dritte Pipeline (nicht gezeigt) kann eine Verschiebung um 2 Bits ausführen usw. Somit führt die Pipeline 540 eine Verschiebung von i Bits aus, und eine abschließende Pipeline 550 führt eine Verschiebung von (Hmax-1) Bits oder eine maximale Verschiebung (Bit-Überlauf) aus.
  • In jeder Pipeline 530 bis 550 speichert jede Stufe 532 bis 536, 542 bis 546 und 552 bis 556 die verschobene und aufgefüllte Eingabezeile und entschlüsselt das nächste Symbol der verschobenen und aufgefüllten Eingabezeile. Die Pipelines 530 bis 550 haben eine Pipeline-Tiefe von 8·M/Hmin, wobei Hmin die Mindestlänge des verschlüsselten Symbols ist, die in diesem speziellen Beispiel einer statischen Huffman-Verschlüsselung 7 Bit beträgt. Die Größe des Symbols beruht auf dem Symboltyp und hat eine Breite w (oder Länge), die in dem Verschlüsselungsalgorithmus angegeben ist und die der Ausrichtungslogik 310 bekannt ist. Zum Beispiel sind bei Verwendung des DEFLATE-Algorithmus und -Datenformats Längen (Breiten) für bestimmte Codes in den Symbolen in der verschobenen und aufgefüllten Eingabezeile bekannt, indem eine Verschlüsselungstabelle gelesen wird, die dem Verschlüsselungsalgorithmus zugehörig ist. Zum Beispiel hat die Verschlüsselungstabelle Einträge, die für ein bestimmtes Bitmuster definieren, welche Länge das nächste verschlüsselte Symbol haben wird. Zum Beispiel kann die Verschlüsselungstabelle definieren, dass, wenn die nächsten n Bits 1010111.. lauten, die Länge des nächsten Symbols x ist, und wenn die nächsten n Bits 111000... lauten, die Länge des nächsten Symbols y ist usw. Wenn die Länge des nächsten Symbols bekannt ist, kann die Eingabezeile um diese Anzahl von Bits verschoben werden, und die nächsten n Bits können wieder untersucht werden, um die Länge des nächsten Symbols zu finden usw.
  • Jede Stufe 532 bis 536, 542 bis 546 und 552 bis 556 weist ein oder mehrere Register und eine Entschlüsselungs-/Dekomprimierungslogik auf, auf die als Datenverarbeitungslogik (Computation Logic) (CL) verwiesen wird, die das nächste Symbol der verschobenen und aufgefüllten Eingabezeile 510 entschlüsselt/dekomprimiert und eine summierte Verschiebemenge aktualisiert, d. h. die summierte Verschiebemenge für eine Stufe 532 bis 536, 542 bis 546 und 552 bis 556 ist gleich der summierten Verschiebemenge aus der vorherigen Stufe zuzüglich der Breite des nächsten Symbols, das von der gegenwärtigen Stufe 532 bis 536, 542 bis 546 und 552 bis 556 verarbeitet wird. Diese Verschiebemenge wird summiert, bis ein Ende der Eingabezeile von ursprünglich M Bytes vorliegt. Das heißt, dass die Entschlüsselung bis zu dem Punkt ausgeführt wird, an dem die kumulative Verschiebung größer oder gleich der nicht aufgefüllten Eingabezeilenlänge ist. Dies kann an jeder der Stufen 532 bis 536, 542 bis 546 und 552 bis 556 der Pipelines 530 bis 550 abhängig von der Verschiebemenge und den Breiten der Symbole geschehen. Wenn diese summierte Verschiebemenge der Größe einer Eingabezeile entspricht oder diese überschreitet (in dem dargestellten Beispiel weist die Eingabezeile 8·M Bits auf, wobei M die Anzahl von komprimierten Bytes in der Eingabezeile ist und 8 die Anzahl von Bits pro Byte darstellt), werden die Eingabezeile und aktuelle summierte Verschiebemenge von Stufe zu Stufe ohne Aktualisierung übergeben statt damit fortzufahren, die Verschiebemenge zu summieren. Wenn die ursprüngliche Eingabezeilenlänge zum Beispiel 64 Bit beträgt und auf 94 Bit aufgefüllt wird, wird die Entschlüsselung bis zu einem Punkt ausgeführt, an dem die kumulative Verschiebung größer oder gleich 64 Bit ist. In diesem Fall wird das Auffüllen der Eingabezeile auf bis zu 94 Bit notwendig, da ein Symbol vorhanden sein kann, dass zum Beispiel bei Bit 63 beginnt und sich bis zu Bit 94 erstreckt, und dieses Symbol kann nur entschlüsselt werden, wenn alle 94 Bits bekannt sind. Die Anzahl von Bits über die ursprüngliche nicht aufgefüllte Eingabezeilenlänge von 64 Bit hinaus ist der Überlauf bzw. die Verschiebung für die nächste Eingabezeile.
  • Am Ende der Pipelines 530 bis 550 wird die Größe der Eingabezeile (8·M) von der summierten Verschiebemenge „shift” subtrahiert, um den spekulativen Bit-Überlauf auf die nächste Eingabezeile zu erhalten. Somit ist ein spekulativer Bit-Überlaufwert für jede Pipeline 530 bis 550 vorhanden, der in den Multiplexer 560 eingegeben wird. Eine der spekulativen Bit-Überlaufwerteingaben in den Multiplexer 560 wird als ein tatsächlicher Bit-Überlauf ausgewählt, der zum Ausführen einer Verschiebeoperation (z. B. einer Linksverschiebeoperation) auf der nächsten Eingabezeile verwendet werden soll, um so die nächste Eingabezeile auf die Symbolgrenze auszurichten, wodurch die ausgerichtete Eingabezeile 570 erzeugt wird.
  • Unter erneuter Bezugnahme auf das vorhergehende Beispiel, in dem zwei mögliche Bit-Überlaufwerte x oder y vorhanden sind, wird der Multiplexer 560 verwendet, um einen dieser beiden Werte als den Überlauf zum Ausrichten der nächsten Eingabezeile auszuwählen. Der Multiplexer 560 kennt die Verschiebung (oder den Bit-Überlauf) der allerersten Eingabezeile in dem komprimierten Datenstrom, und somit ist es möglich, einen der beiden Bit-Überlauf- oder Verschiebungswerte auf der Grundlage der bekannten Verschiebung der allerersten Eingabezeile, d. h. Eingabezeile 1 auszuwählen (es gibt keinen Überlauf von einer vorherigen Eingabezeile für die allererste Eingabezeile, aber sie kann einige bekannte Header-Bits enthalten). Wenn diese Auswahl getroffen worden ist, ist der tatsächliche Bit-Überlauf von der Eingabezeile 1 auf die Eingabezeile 2 bekannt. In einem nächsten Prozessorzyklus kann dieser tatsächliche Bit-Überlauf von der Eingabezeile 1 auf die Eingabezeile 2 verwendet werden, um den tatsächlichen Bit-Überlauf von der Zeile 2 auf die Zeile 3 auszuwählen. Der tatsächliche Bit-Überlauf von der Eingabezeile 2 auf die Zeile 3 kann dann verwendet werden, um den tatsächlichen Bit-Überlauf von der Zeile 3 auf die Zeile 4 auszuwählen usw.
  • Unter erneuter Bezugnahme auf 3 wird die ausgerichtete Eingabezeile 570 als Eingabe in die Tokenizer-Logik 320 bereitgestellt. Die Tokenizer-Logik 320 wurde zwar als von der Ausrichtungslogik 310 getrennt veranschaulicht, es sollte aber klar sein, dass die Pipeline-Stufen der Tokenizer-Logik 320 mit den Stufen der Pipelines in der Ausrichtungslogik 310 integriert sein können, ohne von dem Erfindungsgedanken und dem Schutzumfang der veranschaulichenden Ausführungsformen abzuweichen. Die Tokenizer-Logik 320 extrahiert Symboldaten aus den komprimierten Symbolen in der ausgerichteten Eingabezeile in der Weise einer Pipeline, wie in 6 gezeigt. Wie in 6 gezeigt, weist die Tokenizer-Logik 320 eine Vielzahl von Stufen 610 bis 640 auf, wobei jede Stufe eine Datenverarbeitungslogik (CL) und ein oder mehrere Register zum Speichern der Ergebnisse der Datenverarbeitungslogik aufweist. Die Pipeline-Tiefe ist gleich der maximalen Anzahl von gültigen Token pro Eingabezeile (t), die eine Obergrenze von 8·M/Hmin Bits hat.
  • Die Datenverarbeitungslogik an jeder Stufe 610 bis 640 extrahiert die Symboldaten für das nächste verschlüsselte Symbol, das einem oder mehreren Bytes in den ursprünglichen Daten in der ausgerichteten Eingabezeile entspricht. Die Symboldaten können ein gültiges Bit, ein Typ-Bit (z. B. entweder ein Literal oder einen Zeiger/Verweis auf eine vorher gespeicherte Folge von Bytes), einen Literalwert (wenn das Typ-Bit ein Literal angibt), einen Rückwärtsabstand (wenn das Typ-Bit einen Zeiger/Verweis angibt) und dergleichen enthalten. Die Datenverarbeitungslogik ermittelt ferner eine Anzahl von dem Symbol zugehörigen dekomprimierten Bytes (inflated bytes) (IB), d. h. eine Anzahl von Bytes von entschlüsselten/nicht komprimierten Daten, die aus dem Symbol in der ausgerichteten Eingabezeile erzeugt wurden, und verwaltet eine Gesamtanzahl von dekomprimierten Bytes (IBt) für die Eingabezeile von Stufe zu Stufe 610 bis 640 in der Pipeline der Tokenizer-Logik 320.
  • In einer abschließenden Stufe 640 der Pipeline der Tokenizer-Logik 320 wird eine Token-Tabelle 650 mit den aus den Symbolen extrahierten Informationen aktualisiert, um dadurch Token-Einträge in die Token-Tabelle 650 zu erzeugen. Wie in 6 gezeigt, weist die Token-Tabelle 650 einen oder mehrere Einträge auf, wobei jeder Eintrag einem Symbol in der Eingabezeile entspricht. Jeder Eintrag in die Token-Tabelle 650 speichert abhängig von dem Typ des Symbols (des Tokens) für das entsprechende Token das extrahierte gültige Bit, den Typ (d. h. Literal oder Zeiger/Verweis), einen Schreibzeiger (wr_ptr) und einen Rückwärtsabstand oder das tatsächliche entschlüsselte/dekomprimierte Literalsymbol. Der Schreibzeiger (wr_ptr) für ein Token zeigt auf eine Speicherposition in dem nicht komprimierten Datenstrom, an der die Bytes eingefügt werden sollten, die durch das Entschlüsseln des Tokens erzeugt werden. Der Schreibzeiger für ein Symbol/Token i wird in der abschließenden Stufe 640 auf der Grundlage des letzten Schreibzeigers wr_last aktualisiert, der den gesamten dekomprimierten Bytes entspricht, die von allen Symbolen bis zum Ende der vorherigen Eingabezeile erzeugt wurden, summiert mit einer kumulativen Anzahl von dekomprimierten Bytes bis zu dem vorherigen Symbol/Token i – 1 in der aktuellen ausgerichteten Zeile, d. h. wr_last + IBi-1. Das erste Token in der ausgerichteten Eingabezeile hat einen Schreibzeiger wr_ptr, der für die vorherige Eingabezeile auf den Wert wr_last gesetzt ist, da er das erste Symbol/Token in der ausgerichteten Eingabezeile ist. Der letzte Schreibzeiger wr_last wird in der abschließenden Stufe 640 ebenfalls aktualisiert, sodass dieser Wert für die Verwendung beim Verarbeiten der nächsten ausgerichteten Eingabezeile gespeichert wird. Die in der Token-Tabelle 650 gespeicherten Token können an die Ausgabegeneratorlogik 330 in 3 ausgegeben werden.
  • Die Ausgabegeneratorlogik 330 nimmt die von der Tokenizer-Logik 320 erzeugten Token und erzeugt in jedem Prozessorzyklus entschlüsselte/dekomprimierte Daten von N Bytes. In einer veranschaulichenden Ausführungsform weisen diese N Bytes ein Datenwort auf, das von der Ausgabegeneratorlogik 330 ausgegeben wird, wobei das Datenwort die entschlüsselten/dekomprimierten Bytes aus den ursprünglichen Daten aufweist, die die Quelle der verschlüsselten Eingabezeile waren. Die Ausgabegeneratorlogik 330 weist eine Zustandsmaschine auf, die die Token analysiert, die von der Tokenizer-Logik 320 erzeugt wurden und deren Informationen in Einträgen der Token-Tabelle 650 gespeichert werden, und erzeugt pro Prozessorzyklus die N Bytes. Die Ausgabegeneratorlogik 330 verwaltet eine aktuelle Wortposition in dem entschlüsselten/dekomprimierten Ausgabestrom (out_ctr) und identifiziert ein Quellentoken für jedes der N Bytes eines aktuellen Ausgabeworts (src_token [0:N – 1]). Zum Beispiel ist das Token X die Quelle für das Byte i, wenn wr_ptr(tokenx) ≤ (out_ctr + i) < wr_ptr(tokenx+1), d. h. wenn der Schreibzeiger, der auf den Beginn des Tokens X zeigt, kleiner oder gleich der Summe der aktuellen Wortposition und des Byte-Index ist, und die Summe der aktuellen Wortposition und des Byte-Index kleiner als der Schreibzeiger des nächsten Tokens X + 1 ist.
  • Die Ausgabegeneratorlogik 330 verarbeitet Token aus mehreren Eingabezeilen gleichzeitig, z. B. Token aus mindestens zwei Eingabezeilen gleichzeitig. Wenn ein Satz von Token von dem aktuellen Ausgabewort nicht vollständig in Anspruch genommen wird (alle Token in dem Satz werden verwendet, um das aktuelle Ausgabewort von N Bytes zu erzeugen), d. h. wr_last (Token-Satz 1) > (out_ctr + N), werden die Pipelines der Ausrichtungslogik 310 und/oder der Tokenizer-Logik 320 blockiert. Wenn das Ausgabewort erzeugt wird, ermittelt die Ausgabegeneratorlogik 330, ob das Ausgabe-Byte ein Literal ist, und im zutreffenden Fall wird der Literalwert in das Ausgabe-Byte kopiert. Wenn das Ausgabe-Byte andererseits ein Zeiger oder ein Verweis auf ein Byte in der vorher identifizierten Folge von Bytes ist, wird eine Arbeitsspeichersuchoperation unter Verwendung der Rückwärtsabstands-Informationen ausgeführt, die in der Token-Tabelle 650 gespeichert sind, um die Byte-Daten aus dem Arbeitsspeicher abzurufen und in das Ausgabewort zu kopieren. Wenn nicht genügend Token verfügbar sind, um das Ausgabewort zu erzeugen, d. h. [wr_last(Token-Satz 2) < (out_crt + N), wird ein teilweises Ausgabewort gespeichert, out_ctr wird gehalten und ein neuer Satz von Token wird abgerufen; andernfalls wird out_ctr um N erhöht und die Operation wird wiederholt.
  • 7 ist ein Beispiel-Blockschaubild einer Ausgabegeneratorlogik gemäß einer veranschaulichenden Ausführungsform. Wie in 7 gezeigt, werden die zwei Token-Sätze 710 und 712, z. B. jeweils einer von zwei verschiedenen Eingabezeilen, als Eingaben in die N Multiplexer 720 bis 724 empfangen, wobei N die Anzahl von Bytes pro Prozessorzyklus der gewünschten Ausgabe für die bestimmte Architektur ist. Die Token-Sätze 710 bis 712 werden aus der Token-Tabelle 650 erhalten, die von der Tokenizer-Logik 320 erzeugt wird, und weisen somit Token-Einträge aus der Token-Tabelle 650 zusammen mit all den Informationen auf, die in diesen Einträgen gespeichert sind.
  • Jeder Multiplexer 720 bis 724 ist einem entsprechenden Quellentoken-Auswahlsignal src_token[i] für dieses Byte zugehörig, wobei i im Bereich von 0 bis N – 1 liegt. Somit wählt jeder Multiplexer ein Token aus dem Token-Satz, der dem Quellentoken-Auswahlsignal src_token[i] entspricht, welches das Quellen-Token für dieses bestimmte Byte in dem Ausgabewort identifiziert. Der Multiplexer 720 bis 724 weist zusätzliche Logik auf, um auf der Grundlage des Token-Eintrags in dem Token-Satz, der dem ausgewählten Token entspricht, den entsprechenden Token-Typ (Literal oder Zeiger/Verweis) als ein Auswahlsignal in einen weiteren Multiplexer 730 bis 734 auszugeben, die Literaldaten aus dem Token-Tabelleneintrag, falls der Token-Typ ein Literal ist, als eine Eingabe in den Multiplexer 730 bis 734 auszugeben, und eine Leseaktivierung/Leseadresse auszugeben, die auf der Grundlage eines Rückwärtsabstandsfelds des Token-Tabelleneintrags ermittelt wurde in dem Fall, dass der Token-Typ ein Zeiger/Verweis ist, der in einen weiteren Multiplexer 740 bis 744 und auch in den RAM 750 bis 754 eingegeben wird.
  • Ein separater dedizierter Arbeitsspeicher 750 bis 754 oder ein Abschnitt eines gemeinsam genutzten Arbeitsspeichers mit N Leseanschlüssen wird für jedes der Ausgabe-Bytes bereitgestellt, die pro Prozessorzyklus erstellt werden sollen. Jeder dieser Arbeitsspeicher 750 bis 754 speichert dieselben dekomprimierten/entschlüsselten Daten, d. h. jeder dieser Arbeitsspeicher 750 bis 754 ist ein Duplikat des anderen. Jeder der N Arbeitsspeicher 750 bis 754, die den N Bytes in dem Ausgabewort 760 entsprechen, ist als ein N-Byte-Wort strukturiert. Alternativ kann ein gemeinsam genutzter Arbeitsspeicher verwendet werden, der als ein N-Byte-Wort strukturiert ist und N-Leseanschlüsse hat, wobei jeder Leseanschluss eines der N Bytes in dem Ausgabewort 760 bedient. Die Arbeitsspeicher 750 bis 754 können sich einen gemeinsamen Schreibanschluss teilen. Die gesamte Arbeitsspeicherkapazität wird durch frühere Historie bestimmt, auf die durch einen Zeiger/ein Referenz-Token verwiesen werden kann. Zum Beispiel beträgt die Historie für DEFLATE-Spezifikationen 32 KB. Wenn angenommen wird, dass N = 16, ist dieser 32-KB-Arbeitsspeicher als 2-K-Arbeitsspeicherworte von jeweils 16 Bytes strukturiert. Abhängig vom Leseaktivierungs- und Leseadressensignal wird ein Arbeitsspeicherwort von 16 Byte gelesen. Die höchstwertigen Bits des Leseadressensignals werden zum Lesen eines Worts aus dem Arbeitsspeicher verwendet (11 Bits in dem Fall des 32-KB-Arbeitsspeichers), und die niedrigstwertigen Bits (4 Bits in dem Fall des 16-Byte-Worts) werden zum Auswählen von einem der N Bytes verwendet, die aus dem Arbeitsspeicher gelesen werden (die Multiplexer 740 bis 744).
  • Das aus dem Arbeitsspeicher 750 bis 754 ausgewählte Byte wird zusammen mit der Literal-Ausgabe aus dem Multiplexer 720 bis 724 als eine Eingabe in den Multiplexer 730 bis 734 eingegeben. Auf der Grundlage des Token-Typs, d. h. des Literals oder Zeigers/Verweises, wird eine dieser Eingaben als ein Ausgabe-Byte für das Ausgabewort 760 an einer entsprechenden Speicherposition 1 bis N in dem Ausgabewort ausgewählt. Wenn der Token-Typ zum Beispiel ein Literal-Typ ist, werden die in den Multiplexer 730 bis 734 eingegebenen Literaldaten ausgewählt. Wenn der Token-Typ ein Zeiger/Verweis ist, wird das aus dem Multiplexer 740 bis 744 ausgegebene Byte von dem Multiplexer 730 bis 734 zur Ausgabe ausgewählt. Somit gibt jeder der Multiplexer 730 bis 734 ein Datenbyte aus, das in das Ausgabewort 760 an der korrekten Position in das Ausgabewort aufgenommen werden soll. Dieses Ausgabewort 760 kann dann einer weiteren Logik in der Datenverarbeitungseinheit zum Verarbeiten bereitgestellt werden, z. B. einem zentralen Prozessor oder einer anderen Funktionseinheit in der Datenverarbeitungseinheit, die das Ausgabewort 760 auf der Grundlage von Software, Firmware oder dergleichen bearbeiten kann, die auf der Datenverarbeitungseinheit ausgeführt werden. Das entschlüsselte Ausgabewort wird auch als ein N-Byte-Wort in jedem der N Arbeitsspeicher an einem Arbeitsspeicherort gespeichert, der durch die aktuelle Wortposition in dem entschlüsselten/dekomprimierten Ausgabestrom ermittelt wird.
  • Somit wird mit den Mechanismen der veranschaulichenden Ausführungsformen eine parallele Verarbeitung mit hoher Bandbreite von mit variabler Länge verschlüsselten Datenströmen ermöglicht. Mit diesen Mechanismen kann ein einzelner Datenstrom parallel verarbeitet werden, selbst wenn der einzelne Datenstrom Symbole variabler Länge aufweist. Die Mechanismen der veranschaulichenden Ausführungsformen gleichen die Symbole variabler Länge aus durch Ermitteln eines Bit-Überlaufs von einer Eingabezeile zu einer anderen, durch erneutes Ausrichten der Eingabezeilen, sodass sie an einer Symbolgrenze beginnen, und durch anschließendes paralleles und in der Weise einer Pipeline ausgeführtes Verarbeiten der Zeilen und ihrer entsprechenden Symbole/Token. Dadurch werden der Durchsatz und die Geschwindigkeit in hohem Maße gesteigert, mit der mit variabler Länge verschlüsselte Datenströme verarbeitet werden können, indem die Anforderung beseitigt wird, derartige Datenströme der Reihe nach zu verarbeiten.
  • 8 ist ein Ablaufplan, der eine Beispieloperation zum Verarbeiten eines mit variabler Länge verschlüsselten Datenstroms gemäß einer veranschaulichenden Ausführungsform aufgliedert. Die in 8 dargelegte Operation kann in einer Entschlüsselungseinheit/Dekomprimierungseinheit eines Datenverarbeitungssystems/einer Datenverarbeitungseinheit umgesetzt werden. Diese Entschlüsselungseinheit/Dekomprimierungseinheit kann zum Beispiel in das Datenverarbeitungssystem/die Datenverarbeitungseinheit als ein Co-Prozessor, als Teil eines Netzwerk- oder Speicheradapters, als eine separate Hardware-Einheit oder eine Kombination von einer oder mehreren dieser Hardware-Einheiten und einem oder mehreren Software-Mechanismen integriert werden, die auf einer oder mehreren Prozessoreinheiten ausgeführt werden.
  • Wie in 8 gezeigt, beginnt die Operation damit, dass die Entschlüsselungseinheit/Dekomprimierungseinheit eine Daten-Eingabezeile von Daten empfängt, die ein Abschnitt eines mit variabler Länge verschlüsselten Datenstroms ist, der zu dem Datenverarbeitungssystem/der Datenverarbeitungseinheit übertragen wird, in dem bzw. in der die Entschlüsselungseinheit/Dekomprimierungseinheit umgesetzt ist (Schritt 810). Die Entschlüsselungseinheit/Dekomprimierungseinheit ermittelt eine Bit-Überlaufmenge der Daten-Eingabezeile auf eine nächste Eingabezeile von Daten (Schritt 820) zur Symbolausrichtung. Die Entschlüsselungseinheit/Dekomprimierungseinheit richtet die Daten-Eingabezeile auf der Grundlage der ermittelten Bit-Überlaufmenge aus (Schritt 830). Die Entschlüsselungseinheit/Dekomprimierungseinheit zerlegt die ausgerichtete Daten-Eingabezeile in Token, um einen Satz von Token zu erzeugen, wobei jedes Token einem Symbol in der verschlüsselten Daten-Eingabezeile entspricht (Schritt 840). Die Entschlüsselungseinheit/Dekomprimierungseinheit erzeugt ein Daten-Ausgabewort auf der Grundlage des Satzes von Token (Schritt 850). Das Daten-Ausgabewort entspricht einem Datenwort in dem ursprünglichen Satz von Daten. Das Ausgabewort wird an weitere Elemente des Datenverarbeitungssystems/der Datenverarbeitungseinheit zur Verarbeitung ausgegeben (Schritt 860), und die Operation endet.
  • Wie oben angemerkt sollte klar sein, dass die veranschaulichenden Ausführungsformen die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform oder einer Ausführungsform annehmen können, die Hardware- und Software-Elemente enthält. In einer beispielhaften Ausführungsform sind die Mechanismen der veranschaulichenden Ausführungsformen in Software oder einem Programmcode umgesetzt, der Firmware, residente Software, Mikrocode usw. enthält, aber nicht darauf beschränkt ist.
  • Ein Datenverarbeitungssystem, das zum Speichern und/oder Ausführen von Programmcode geeignet ist, enthält mindestens einen Prozessor, der direkt oder indirekt über einen Systembus mit Arbeitsspeicherelementen verbunden ist. Die Arbeitsspeicherelemente können einen lokalen Arbeitsspeicher, der während der tatsächlichen Ausführung des Programmcodes verwendet wird, einen Massenspeicher und Cache-Speicher enthalten, die eine vorübergehende Speicherung von mindestens einigem Programmcode bereitstellen, um die Anzahl zu verringern, wie oft Code während der Ausführung aus dem Massenspeicher abgerufen werden muss.
  • Eingabe-/Ausgabe- oder E/A-Einheiten (einschließlich Tastaturen, Anzeigen, Zeigeeinheiten usw., jedoch nicht darauf beschränkt) können entweder direkt oder über zwischengeschaltete E/A-Controller mit dem System verbunden werden. Netzwerkadapter können ebenfalls mit dem System verbunden werden, um zu ermöglichen, dass das Datenverarbeitungssystem mit anderen Datenverarbeitungssystemen oder entfernt angeordneten Druckern oder Speichereinheiten über dazwischenliegende private oder öffentliche Netzwerke verbunden werden kann. Modems, Kabelmodems oder Ethernet-Karten sind nur einige der derzeit verfügbaren Typen von Netzwerkadaptern.
  • Die Beschreibung der vorliegenden Erfindung wurde zum Zweck der Veranschaulichung und Beschreibung erstellt und soll keineswegs erschöpfend oder auf die Erfindung in der offenbarten Form eingeschränkt sein. Viele Modifizierungen und Variationen werden für den Fachmann offenkundig sein. Die Ausführungsform wurde ausgewählt und beschrieben, um die Grundgedanken der Erfindung, die praktische Anwendung optimal zu erklären und andere Fachleute in die Lage zu versetzen, die Erfindung für verschiedene Ausführungsformen mit verschiedenen Modifizierungen zu verstehen, die für die vorgesehene bestimmte Verwendung geeignet sind.

Claims (25)

  1. Verfahren in einem Datenverarbeitungssystem zum Entschlüsseln eines mit variabler Länge verschlüsselten Datenstroms, das aufweist: Empfangen einer Daten-Eingabezeile durch eine Entschlüsselungseinheit des Datenverarbeitungssystems, wobei die Daten-Eingabezeile ein Abschnitt des mit variabler Länge verschlüsselten Datenstroms ist; Ermitteln einer Bit-Überlaufmenge der Daten-Eingabezeile auf eine nächste Daten-Eingabezeile durch die Entschlüsselungseinheit; Ausrichten der nächsten Daten-Eingabezeile durch die Entschlüsselungseinheit, sodass sie auf der Grundlage der ermittelten Bit-Überlaufmenge an einer Grenze eines verschlüsselten Symbols beginnt, um eine ausgerichtete nächste Daten-Eingabezeile zu erzeugen; Zerlegen der ausgerichteten nächsten Daten-Eingabezeile durch die Entschlüsselungseinheit in Token, um einen Satz von Token zu erzeugen, wobei jedes Token einem Symbol in der ausgerichteten nächsten Daten-Eingabezeile entspricht; und Erzeugen eines Daten-Ausgabeworts durch die Entschlüsselungseinheit auf der Grundlage des Satzes von Token, wobei das Daten-Ausgabewort einem Datenwort in dem ursprünglichen Satz von Daten entspricht.
  2. Verfahren nach Anspruch 1, wobei das Ermitteln einer Bit-Überlaufmenge der Daten-Eingabezeile auf eine nächste Daten-Eingabezeile aufweist: Ausführen einer Vielzahl von spekulativen Entschlüsselungsoperationen der Daten-Eingabezeile, wobei jede spekulative Entschlüsselungsoperation einer von einer Vielzahl von verschiedenen möglichen Bit-Überlaufmengen entspricht; und Ermitteln einer Bit-Überlaufmenge der Daten-Eingabezeile auf der Grundlage von Ergebnissen der Vielzahl von spekulativen Entschlüsselungsoperationen der Daten-Eingabezeile für jede von einer Vielzahl von möglichen Bit-Überlaufmengen.
  3. Verfahren nach Anspruch 2, wobei eine Bit-Überlaufmenge im Bereich von 0 Bit bis Hmax-1 Bit liegt, wobei Hmax eine maximale Länge eines Symbols variabler Länge in der Daten-Eingabezeile ist, und wobei eine spekulative Entschlüsselungsoperation für jede mögliche Anzahl von Überlauf-Bits in dem Bereich von 0 bis Hmax-1 ausgeführt wird.
  4. Verfahren nach Anspruch 2, wobei die Vielzahl von spekulativen Entschlüsselungsoperationen parallel ausgeführt wird, und wobei das Ermitteln einer Bit-Überlaufmenge der Daten-Eingabezeile ein Auswählen eines Ergebnisses von einer der Vielzahl von spekulativen Entschlüsselungsoperationen auf der Grundlage einer ermittelten Bit-Überlaufmenge für eine vorherige Datenzeile in dem mit variabler Länge verschlüsselten Datenstrom aufweist.
  5. Verfahren nach Anspruch 2, wobei das Ermitteln einer Bit-Überlaufmenge ein Ermitteln der Bit-Überlaufmenge auf der Grundlage der Ergebnisse der Vielzahl von spekulativen Entschlüsselungsoperationen und eines Entschlüsselungsergebnisses einer vorherigen Datenzeile aufweist.
  6. Verfahren nach Anspruch 1, wobei ein Zerlegen der ausgerichteten nächsten Daten-Eingabezeile durch die Entschlüsselungseinheit in Token, um einen Satz von Token zu erzeugen, ein Verarbeiten der ausgerichteten nächsten Eingabezeile über eine Tokenizer-Pipeline aufweist, die eine Vielzahl von Stufen hat, wobei jede Stufe eine Datenverarbeitungslogik aufweist, die Symboldaten für ein nächstes verschlüsseltes Symbol in der ausgerichteten nächsten Eingabezeile extrahiert, eine Anzahl von dekomprimierten Bytes ermittelt, die den extrahierten Symboldaten zugehörig sind, und eine Gesamtanzahl von dekomprimierten Bytes für die ausgerichtete nächste Eingabezeile auf der Grundlage einer vorherigen Summe von dekomprimierten Bytes für die ausgerichtete nächste Eingabezeile und eine Größe der extrahierten Symboldaten summiert.
  7. Verfahren nach Anspruch 6, wobei eine abschließende Stufe der Tokenizer-Pipeline eine Token-Tabellendatenstruktur mit Einträgen für extrahierte Symboldaten aktualisiert, die aus der ausgerichteten nächsten Eingabezeile extrahiert wurden.
  8. Verfahren nach Anspruch 7, wobei ein Erzeugen eines Daten-Ausgabeworts auf der Grundlage des Satzes von Token ein Verarbeiten von Token aus mindestens zwei Eingabezeilen zu einer im Wesentlichen selben Zeit aufweist.
  9. Verfahren nach Anspruch 7, wobei das Extrahieren von Symboldaten für ein nächstes verschlüsseltes Symbol ein Extrahieren von Daten aufweist, die einen Typ eines entsprechenden extrahierten Symbols entweder als einen Literalsymbol-Typ oder einen Verweis auf einen Literalsymbol-Typ angeben, wobei die Daten einen Literalwert in Reaktion auf den Typ angeben, der einen Literalsymbol-Typ angibt, und die Daten einen Rückwärtsabstandzeiger in Reaktion auf den Typ angeben, der einen Verweistyp angibt, und wobei ein Aktualisieren einer Token-Tabellendatenstruktur mit Einträgen ein Auffüllen der Einträge mit extrahierten Symboldaten aufweist, die einem extrahierten Symbol entsprechen, das dem Token-Tabelleneintrag zugehörig ist.
  10. Verfahren nach Anspruch 1, wobei der mit variabler Länge verschlüsselte Datenstrom ursprüngliche Daten aufweist, die unter Verwendung eines Huffman-Verschlüsselungsalgorithmus verschlüsselt wurden.
  11. Verfahren nach Anspruch 1, wobei das Verfahren in der Weise einer Pipeline ausgeführt wird, um eine Daten-Eingabezeile aus dem mit variabler Länge verschlüsselten Datenstrom in jedem Taktzyklus zu verarbeiten.
  12. Verfahren nach Anspruch 1, wobei ein Erzeugen eines Daten-Ausgabeworts auf der Grundlage des Satzes von Token mindestens eines aufweist von: Speichern eines selben Abschnitts von entschlüsselten Daten aus dem mit variabler Länge verschlüsselten Datenstrom in jeder einer Vielzahl von N Arbeitsspeichern einer Ausgabegeneratorlogik, wobei N eine Anzahl von Bytes von entschlüsselten Daten ist, die in jedem Prozessorzyklus in dem Ausgabewort ausgegeben werden sollen; und Ausgeben, abhängig von dem Symboltyp, entweder eines Datenbytes, das aus einem entsprechenden Arbeitsspeicher in der Vielzahl von N Arbeitsspeichern ausgelesen wurde, oder eines Literalwerts aus einem Token-Tabelleneintrag für jedes der N Bytes in dem Daten-Ausgabewort; oder Speichern eines Abschnitts von Entschlüsselungsdaten in einem einzelnen gemeinsam genutzten Arbeitsspeicher der Ausgabegeneratorlogik, wobei der einzelne gemeinsam genutzte Arbeitsspeicher N Leseanschlüsse hat, einen für jedes Byte von entschlüsselten Daten, die pro Prozessorzyklus in dem Daten-Ausgabewort ausgegeben werden sollen; und Ausgeben, abhängig vom Symboltyp, entweder eines Datenbytes, das aus einem entsprechenden Leseanschluss in der Vielzahl von N Leseanschlüssen ausgelesen wurde, oder eines Literalwerts aus einem Token-Tabelleneintrag für jedes der N Bytes in dem Daten-Ausgabewort.
  13. Computerprogrammprodukt, das ein computerlesbares Speichermedium aufweist, das ein darin gespeichertes computerlesbares Programm aufweist, wobei das computerlesbare Programm, wenn es auf einem Datenverarbeitungssystem ausgeführt wird, das Datenverarbeitungssystem veranlasst zum: Empfangen einer Daten-Eingabezeile, wobei die Daten-Eingabezeile ein Abschnitt des mit variabler Länge verschlüsselten Datenstroms ist; Ermitteln einer Bit-Überlaufmenge der Daten-Eingabezeile auf eine nächste Daten-Eingabezeile; Ausrichten der nächsten Daten-Eingabezeile, sodass sie auf der Grundlage der ermittelten Bit-Überlaufmenge an einer Grenze eines verschlüsselten Symbols beginnt; Zerlegen der ausgerichteten nächsten Daten-Eingabezeile, um einen Satz von Token zu erzeugen, wobei jedes Token einem Symbol in der ausgerichteten nächsten Daten-Eingabezeile entspricht; und Erzeugen eines Daten-Ausgabeworts auf der Grundlage des Satzes von Token, wobei das Daten-Ausgabewort einem Datenwort in dem ursprünglichen Satz von Daten entspricht.
  14. Computerprogrammprodukt nach Anspruch 13, wobei das computerlesbare Programm das Datenverarbeitungssystem veranlasst, eine Bit-Überlaufmenge der Daten-Eingabezeile auf eine nächste Daten-Eingabezeile zu ermitteln durch: Ausführen einer Vielzahl von spekulativen Entschlüsselungsoperationen der Daten-Eingabezeile, wobei jede spekulative Entschlüsselungsoperation einer von einer Vielzahl von verschiedenen möglichen Bit-Überlaufmengen entspricht; und Ermitteln einer Bit-Überlaufmenge der Daten-Eingabezeile auf der Grundlage von Ergebnissen der Vielzahl von spekulativen Entschlüsselungsoperationen der Daten-Eingabezeile für jede von einer Vielzahl von möglichen Bit-Überlaufmengen.
  15. Computerprogrammprodukt nach Anspruch 14, wobei eine Bit-Überlaufmenge im Bereich von 0 Bit bis Hmax-1 Bit liegt, wobei Hmax eine maximale Länge eines Symbols variabler Länge in der Daten-Eingabezeile ist, und wobei eine spekulative Entschlüsselungsoperation für jede mögliche Anzahl von Überlauf-Bits in dem Bereich von 0 bis Hmax-1 ausgeführt wird.
  16. Computerprogrammprodukt nach Anspruch 14, wobei die Vielzahl von spekulativen Entschlüsselungsoperationen parallel ausgeführt wird, und wobei das computerlesbare Programm das Datenverarbeitungssystem veranlasst, eine Bit-Überlaufmenge der Daten-Eingabezeile durch Auswählen eines Ergebnisses von einer der Vielzahl von spekulativen Entschlüsselungsoperationen auf der Grundlage einer ermittelten Bit-Überlaufmenge für eine vorherige Datenzeile in dem mit variabler Länge verschlüsselten Datenstrom zu ermitteln.
  17. Computerprogrammprodukt nach Anspruch 14, wobei das computerlesbare Programm das Datenverarbeitungssystem veranlasst, eine Bit-Überlaufmenge durch Ermitteln der Bit-Überlaufmenge auf der Grundlage der Ergebnisse der Vielzahl von spekulativen Entschlüsselungsoperationen und eines Entschlüsselungsergebnisses einer vorherigen Datenzeile zu ermitteln.
  18. Computerprogrammprodukt nach Anspruch 13, wobei das computerlesbare Programm das Datenverarbeitungssystem veranlasst, die ausgerichtete nächste Daten-Eingabezeile in Token zu zerlegen, um einen Satz von Token zu erzeugen durch Verarbeiten der ausgerichteten nächsten Eingabezeile über eine Tokenizer-Pipeline, die eine Vielzahl von Stufen hat, wobei jede Stufe eine Datenverarbeitungslogik aufweist, die Symboldaten für ein nächstes verschlüsseltes Symbol in der ausgerichteten nächsten Eingabezeile extrahiert, eine Anzahl von dekomprimierten Bytes ermittelt, die den extrahierten Symboldaten zugehörig sind, und eine Gesamtanzahl von dekomprimierten Bytes für die ausgerichtete nächste Eingabezeile auf der Grundlage einer vorherigen Summe von dekomprimierten Bytes für die ausgerichtete nächste Eingabezeile und eine Größe der extrahierten Symboldaten summiert.
  19. Computerprogrammprodukt nach Anspruch 18, wobei eine abschließende Stufe der Tokenizer-Pipeline eine Token-Tabellendatenstruktur mit Einträgen für extrahierte Symboldaten aktualisiert, die aus der ausgerichteten nächsten Eingabezeile extrahiert wurden.
  20. Computerprogrammprodukt nach Anspruch 19, wobei das computerlesbare Programm das Datenverarbeitungssystem veranlasst, ein Daten-Ausgabewort auf der Grundlage des Satzes von Token durch Verarbeiten von Token aus mindestens zwei Eingabezeilen zu einer im Wesentlichen selben Zeit zu erzeugen.
  21. Computerprogrammprodukt nach Anspruch 19, wobei das computerlesbare Programm das Datenverarbeitungssystem veranlasst, Symboldaten für ein nächstes verschlüsseltes Symbol durch Extrahieren von Daten zu extrahieren, die einen Typ eines entsprechenden extrahierten Symbols entweder als einen Literalsymbol-Typ oder einen Verweis auf einen Literalsymbol-Typ angeben, wobei die Daten einen Literalwert in Reaktion auf den Typ angeben, der einen Literalsymbol-Typ angibt, und die Daten einen Rückwärtsabstandzeiger in Reaktion auf den Typ angeben, der einen Verweistyp angibt, und wobei das computerlesbare Programm das Datenverarbeitungssystem veranlasst, eine Token-Tabellendatenstruktur mit Einträgen durch Auffüllen der Einträge mit extrahierten Symboldaten zu aktualisieren, die einem extrahierten Symbol entsprechen, das dem Token-Tabelleneintrag zugehörig ist.
  22. Computerprogrammprodukt nach Anspruch 13, wobei der mit variabler Länge verschlüsselte Datenstrom ursprüngliche Daten aufweist, die unter Verwendung eines Huffman-Verschlüsselungsalgorithmus verschlüsselt wurden.
  23. Computerprogrammprodukt nach Anspruch 13, wobei das Computerprogrammprodukt das Datenverarbeitungssystem veranlasst, eine Datenzeile aus dem mit variabler Länge verschlüsselten Datenstrom in der Weise einer Pipeline zu bearbeiten, um eine Daten-Eingabezeile aus dem mit variabler Länge verschlüsselten Datenstrom in jedem Taktzyklus zu verarbeiten.
  24. Computerprogrammprodukt nach Anspruch 13, wobei das computerlesbare Programm das Datenverarbeitungssystem ferner veranlasst, ein Daten-Ausgabewort auf der Grundlage des Satzes von Token zu erzeugen durch mindestens eines von: Speichern eines selben Abschnitts von entschlüsselten Daten aus dem mit variabler Länge verschlüsselten Datenstrom in jeder einer Vielzahl von N Speichern einer Ausgabegeneratorlogik, wobei N eine Anzahl von Bytes von entschlüsselten Daten ist, die in jedem Prozessorzyklus in dem Ausgabewort ausgegeben werden sollen; und Ausgeben, abhängig von dem Symboltyp, entweder eines Datenbytes, das aus einem entsprechenden Arbeitsspeicher in der Vielzahl von N Arbeitsspeichern ausgelesen wurde, oder eines Literalwerts aus einem Token-Tabelleneintrag für jedes der N Bytes in dem Daten-Ausgabewort; oder Speichern eines Abschnitts von Entschlüsselungsdaten in einem einzelnen gemeinsam genutzten Arbeitsspeicher der Ausgabegeneratorlogik, wobei der einzelne gemeinsam genutzte Arbeitsspeicher N Leseanschlüsse hat, einen für jedes Byte von entschlüsselten Daten, die pro Prozessorzyklus in dem Daten-Ausgabewort ausgegeben werden sollen; und Ausgeben, abhängig vom Symboltyp, entweder eines Datenbytes, das aus einem entsprechenden Leseanschluss in der Vielzahl von N Leseanschlüssen ausgelesen wurde, oder eines Literalwerts aus einem Token-Tabelleneintrag für jedes der N Bytes in dem Daten-Ausgabewort.
  25. Vorrichtung, die aufweist: einen Prozessor; und eine mit dem Prozessor verbundene Schnittstelle, wobei ein mit variabler Länge verschlüsselter Datenstrom über die Schnittstelle empfangen wird, und wobei der Prozessor Logik aufweist zum: Empfangen einer Daten-Eingabezeile, wobei die Daten-Eingabezeile ein Abschnitt des mit variabler Länge verschlüsselten Datenstroms ist; Ermitteln einer Bit-Überlaufmenge der Daten-Eingabezeile auf eine nächste Daten-Eingabezeile; Ausrichten der nächsten Daten-Eingabezeile, sodass sie auf der Grundlage der ermittelten Bit-Überlaufmenge an einer Grenze eines verschlüsselten Symbols beginnt; Zerlegen der ausgerichteten nächsten Daten-Eingabezeile, um einen Satz von Token zu erzeugen, wobei jedes Token einem Symbol in der ausgerichteten nächsten Daten-Eingabezeile entspricht; und Erzeugen eines Daten-Ausgabeworts auf der Grundlage des Satzes von Token, wobei das Daten-Ausgabewort einem Datenwort in dem ursprünglichen Satz von Daten entspricht.
DE112012004873.3T 2011-12-07 2012-11-12 Hohe Bandbreitendekomprimierung von mit variabler Länge verschlüsselten Datenströmen Active DE112012004873B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
USUS-13/313,072 2011-12-07
US13/313,072 US8824569B2 (en) 2011-12-07 2011-12-07 High bandwidth decompression of variable length encoded data streams
US13/313,072 2011-12-07
PCT/CN2012/084440 WO2013082990A1 (en) 2011-12-07 2012-11-12 High bandwidth decompression of variable length encoded data streams

Publications (2)

Publication Number Publication Date
DE112012004873T5 true DE112012004873T5 (de) 2014-08-21
DE112012004873B4 DE112012004873B4 (de) 2024-03-21

Family

ID=48571482

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012004873.3T Active DE112012004873B4 (de) 2011-12-07 2012-11-12 Hohe Bandbreitendekomprimierung von mit variabler Länge verschlüsselten Datenströmen

Country Status (6)

Country Link
US (2) US8824569B2 (de)
JP (1) JP5878644B2 (de)
CN (1) CN103975533B (de)
DE (1) DE112012004873B4 (de)
GB (1) GB2512762B (de)
WO (1) WO2013082990A1 (de)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI455595B (zh) * 2011-09-29 2014-10-01 Mstar Semiconductor Inc 布林熵解碼器及影像播放系統之布林熵解碼方法
US8824569B2 (en) * 2011-12-07 2014-09-02 International Business Machines Corporation High bandwidth decompression of variable length encoded data streams
US20140006536A1 (en) * 2012-06-29 2014-01-02 Intel Corporation Techniques to accelerate lossless compression
US9311721B1 (en) 2013-04-04 2016-04-12 Sandia Corporation Graphics processing unit-assisted lossless decompression
US9454653B1 (en) * 2014-05-14 2016-09-27 Brian Penny Technologies for enhancing computer security
US9374106B2 (en) 2013-08-28 2016-06-21 International Business Machines Corporation Efficient context save/restore during hardware decompression of DEFLATE encoded data
US8933824B1 (en) 2013-08-28 2015-01-13 International Business Machines Corporation Hardware decompression of deflate encoded data with multiple blocks
US9086871B2 (en) 2013-09-26 2015-07-21 International Business Machines Corporation Reordering the output of recirculated transactions within a pipeline
US9800640B2 (en) 2013-10-02 2017-10-24 International Business Machines Corporation Differential encoder with look-ahead synchronization
US9524169B2 (en) 2014-09-24 2016-12-20 Intel Corporation Technologies for efficient LZ77-based data decompression
US9647684B2 (en) * 2014-10-21 2017-05-09 Huawei Technologies Co., Ltd. Memory-based history search
US9946705B2 (en) * 2015-06-29 2018-04-17 International Business Machines Corporation Query processing using a dimension table implemented as decompression dictionaries
US10135461B2 (en) * 2015-09-25 2018-11-20 Intel Corporation Systems, methods, and apparatuses for decompression using hardware and software
US9537504B1 (en) * 2015-09-25 2017-01-03 Intel Corporation Heterogeneous compression architecture for optimized compression ratio
US10034407B2 (en) * 2016-07-22 2018-07-24 Intel Corporation Storage sled for a data center
US10367604B2 (en) * 2016-11-18 2019-07-30 International Business Machines Corporation Encoding variable length symbols to enable parallel decoding
US9819359B1 (en) 2016-12-11 2017-11-14 Microsoft Technology Licensing, Llc Multi-symbol, multi-format, parallel symbol decoder for hardware decompression engines
US10680644B2 (en) 2017-09-15 2020-06-09 Groq, Inc. Decompression of model parameters using functions based upon cumulative count distributions
EP3818439A4 (de) * 2018-07-05 2022-04-27 Mythic, Inc. Systeme und verfahren zur implementierung einer datenverarbeitungsrechnerarchitektur
US11119928B2 (en) 2019-02-27 2021-09-14 International Business Machines Corporation Instant quiescing of an accelerator
US10673460B1 (en) * 2019-02-27 2020-06-02 International Business Machines Corporation Spilling temporary results for accommodation of memory boundaries
TWI729939B (zh) * 2019-03-22 2021-06-01 美商葛如克公司 使用基於累積計數分佈之函數之用於模型參數之解壓縮之方法及處理器
TWI708196B (zh) * 2019-03-22 2020-10-21 美商葛如克公司 使用基於累積計數分佈之函數之用於模型參數之解壓縮之方法及處理器
CN112631595B (zh) * 2019-10-09 2024-03-01 安徽寒武纪信息科技有限公司 混洗方法、装置、计算机设备及可读存储介质
JP2021129143A (ja) 2020-02-10 2021-09-02 キオクシア株式会社 デコード装置
CN112988673B (zh) * 2021-02-22 2023-02-28 山东英信计算机技术有限公司 一种处理解压缩过程中数据溢出的方法和设备
CN113965207B (zh) * 2021-12-17 2022-03-15 苏州浪潮智能科技有限公司 一种基于deflate霍夫曼编码的动态码表生成装置和方法
CN114244373B (zh) * 2022-02-24 2022-05-20 麒麟软件有限公司 Lz系列压缩算法编解码速度优化方法
CN117200803B (zh) * 2023-03-01 2024-09-13 山东华科信息技术有限公司 用于电力数据的数据解压缩系统

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9405914D0 (en) 1994-03-24 1994-05-11 Discovision Ass Video decompression
JPS63278468A (ja) * 1987-05-09 1988-11-16 Fujitsu Ltd 可変長符号デ−タ解読回路
US5146221A (en) 1989-01-13 1992-09-08 Stac, Inc. Data compression apparatus and method
US5051745A (en) * 1990-08-21 1991-09-24 Pkware, Inc. String searcher, and compressor using same
US5212742A (en) * 1991-05-24 1993-05-18 Apple Computer, Inc. Method and apparatus for encoding/decoding image data
US5784631A (en) 1992-06-30 1998-07-21 Discovision Associates Huffman decoder
US5440753A (en) * 1992-11-13 1995-08-08 Motorola, Inc. Variable length string matcher
US5878273A (en) 1993-06-24 1999-03-02 Discovision Associates System for microprogrammable state machine in video parser disabling portion of processing stages responsive to sequence-- end token generating by token generator responsive to received data
KR100203246B1 (ko) * 1995-10-19 1999-06-15 윤종용 고속의 가변장복호화장치
JP3371677B2 (ja) * 1996-04-09 2003-01-27 富士ゼロックス株式会社 可変長復号化装置
US5909569A (en) 1997-05-07 1999-06-01 International Business Machines Terminal emulator data stream differencing system
US6061775A (en) * 1997-12-12 2000-05-09 Advanced Micro Devices, Inc. Apparatus and method for predicting a first microcode instruction of a cache line and using predecode instruction data to identify instruction boundaries and types
US5890006A (en) * 1997-12-12 1999-03-30 Advanced Micro Devices, Inc. Apparatus for extracting instruction specific bytes from an instruction
US6219457B1 (en) * 1998-05-26 2001-04-17 Silicon Graphics, Inc. Method and system for decoding data encoded in a variable length code word
US6865668B1 (en) 1998-09-15 2005-03-08 Trustees Of Columbia University In The City Of New York Variable-length, high-speed asynchronous decoder circuit
US6215424B1 (en) 1998-12-16 2001-04-10 Thomson Licensing S.A. System for variable length codeword processing suitable for video and other applications
US6822589B1 (en) 1999-01-29 2004-11-23 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
US6601104B1 (en) 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
US8913667B2 (en) * 1999-11-09 2014-12-16 Broadcom Corporation Video decoding system having a programmable variable-length decoder
JP2001274690A (ja) * 2000-03-28 2001-10-05 Toshiba Corp 可変長復号器
JP2002016501A (ja) * 2000-04-28 2002-01-18 Matsushita Electric Ind Co Ltd 可変長復号化装置
US6310563B1 (en) 2000-05-12 2001-10-30 International Business Machines Corporation Method and apparatus for enhanced decompressor parsing
US6856651B2 (en) * 2000-07-25 2005-02-15 Peribit Networks, Inc. System and method for incremental and continuous data compression
US6732198B1 (en) * 2001-07-20 2004-05-04 Lsi Logic Corporation Methods and apparatus for saving and restoring scatter/gather list processing context in intelligent controllers
US7092578B2 (en) * 2001-10-23 2006-08-15 Agilent Technologies, Inc. Signaling adaptive-quantization matrices in JPEG using end-of-block codes
US7681013B1 (en) * 2001-12-31 2010-03-16 Apple Inc. Method for variable length decoding using multiple configurable look-up tables
US6944751B2 (en) * 2002-02-11 2005-09-13 Hewlett-Packard Development Company, L.P. Register renaming to reduce bypass and increase apparent physical register size
US6963613B2 (en) * 2002-04-01 2005-11-08 Broadcom Corporation Method of communicating between modules in a decoding system
GB0210604D0 (en) 2002-05-09 2002-06-19 Ibm Method and arrangement for data compression
GB0213687D0 (en) * 2002-06-14 2002-07-24 Ibm Multi-byte lempel-ziv 1 (LZ1) decompression
US7305542B2 (en) * 2002-06-25 2007-12-04 Intel Corporation Instruction length decoder
US6781529B1 (en) 2002-10-24 2004-08-24 Apple Computer, Inc. Methods and apparatuses for variable length encoding
US8107885B2 (en) * 2002-10-30 2012-01-31 Motorola Mobility, Inc. Method and apparatus for providing a distributed architecture digital wireless communication system
US20040120404A1 (en) * 2002-11-27 2004-06-24 Takayuki Sugahara Variable length data encoding method, variable length data encoding apparatus, variable length encoded data decoding method, and variable length encoded data decoding apparatus
US6867715B2 (en) 2003-06-25 2005-03-15 Broadcom Corporation System, method, and apparatus for variable length decoder
GB0315152D0 (en) * 2003-06-28 2003-08-06 Ibm Data parsing and tokenizing apparatus,method and program
GB0323284D0 (en) * 2003-10-04 2003-11-05 Koninkl Philips Electronics Nv Method and apparatus for processing image data
US7594098B2 (en) 2005-07-01 2009-09-22 Stmicroelectronics, Sa Processes and devices for compression and decompression of executable code by a microprocessor with RISC architecture and related system
JP2007043595A (ja) * 2005-08-05 2007-02-15 Nec Corp 可変長符号復号化方法および装置ならびにデータ伸長装置
US7180433B1 (en) * 2005-09-22 2007-02-20 Tandberg Storage Asa Fast data compression and decompression system and method
US7665015B2 (en) * 2005-11-14 2010-02-16 Sun Microsystems, Inc. Hardware unit for parsing an XML document
US8189688B2 (en) * 2006-02-06 2012-05-29 Panasonic Corporation Image decoding device and image decoding method
US8731051B1 (en) * 2006-02-10 2014-05-20 Nvidia Corporation Forward and inverse quantization of data for video compression
SE531398C2 (sv) * 2007-02-16 2009-03-24 Scalado Ab Generering av en dataström och identifiering av positioner inuti en dataström
JP4398987B2 (ja) * 2007-03-19 2010-01-13 株式会社東芝 マルチデコーダ装置及び方法
US7538695B2 (en) 2007-06-29 2009-05-26 Rmi Corporation System and method for deflate processing within a compression engine
US7492290B1 (en) 2007-08-15 2009-02-17 Red Hat, Inc. Alternative encoding for LZSS output
US7900006B2 (en) 2008-04-30 2011-03-01 Netapp, Inc. Maintaining checkpoints during backup of live system
US7692561B2 (en) * 2008-07-17 2010-04-06 International Business Machines Corporation Method and apparatus for data decompression in the presence of memory hierarchies
US8244911B2 (en) * 2008-07-22 2012-08-14 International Business Machines Corporation Method and apparatus for concurrent and stateful decompression of multiple compressed data streams
US7872598B2 (en) * 2008-12-10 2011-01-18 Intel Corporation Accelerated decompression
US8013762B2 (en) 2009-11-03 2011-09-06 Seagate Technology Llc Evaluating alternative encoding solutions during data compression
US8325069B2 (en) 2009-12-22 2012-12-04 Intel Corporation System, method, and apparatus for a scalable processor architecture for a variety of string processing applications
US20110280314A1 (en) 2010-05-12 2011-11-17 Texas Instruments Incorporated Slice encoding and decoding processors, circuits, devices, systems and processes
US20130103695A1 (en) * 2011-10-21 2013-04-25 Microsoft Corporation Machine translation detection in web-scraped parallel corpora
US8824569B2 (en) 2011-12-07 2014-09-02 International Business Machines Corporation High bandwidth decompression of variable length encoded data streams

Also Published As

Publication number Publication date
GB201409981D0 (en) 2014-07-16
GB2512762A (en) 2014-10-08
GB2512762B (en) 2019-12-11
US8824569B2 (en) 2014-09-02
CN103975533B (zh) 2017-11-21
WO2013082990A1 (en) 2013-06-13
US20130148745A1 (en) 2013-06-13
US8804852B2 (en) 2014-08-12
JP5878644B2 (ja) 2016-03-08
DE112012004873B4 (de) 2024-03-21
CN103975533A (zh) 2014-08-06
US20130147644A1 (en) 2013-06-13
JP2015505432A (ja) 2015-02-19

Similar Documents

Publication Publication Date Title
DE112012004873B4 (de) Hohe Bandbreitendekomprimierung von mit variabler Länge verschlüsselten Datenströmen
DE112013006339B4 (de) Kompression hoher Bandbreite um Datenströme zu Verschlüsseln
DE69413347T2 (de) Auf die Bytegrenze ausgerichtete Datenkomprimierung
DE69027606T2 (de) Vorrichtung zur datenkompression
DE69704362T2 (de) Datenkompressions-/dekompressionssystem anhand sofortiger zeichenfolgensucheverschachtelter wörterbuchaktualisierung
DE69330196T2 (de) Textkomprimierungstechnik unter Anwendung einer frequenzgeordneten Matrix von Wort-Nummern-Abbildungen
DE69706439T2 (de) Rechnersortiersystem zur datenkompression
DE102016221813B4 (de) Datenreplikation auf der Grundlage des Verlaufs des Komprimierungsverhältnisses
WO2004066505A2 (de) Blockdatenkompressionssystem, bestehend aus einer kompressionseinrichtung und einer dekompressionseinrichtung, und verfahren zur schnellen blockdatenkompression mit multi-byte-suche
DE3606869C2 (de) Vorrichtung zur Datenkompression
DE102011010613B4 (de) Verfahren zum Speichern und Wiederherstellen von Daten, Verwendung der Verfahren in einer Storage Cloud, Speicherserver und Computerprogrammprodukt
DE102016204602A1 (de) Huffmann-Paralleldecoder
DE112017006020T5 (de) Verfahren und System für suchmusterblinde dynamische symmetrische durchsuchbare Verschlüsselung
DE102020110578A1 (de) Selbstprüfungskompression
DE60131247T2 (de) Dezimal-Binär Kodierer/Dekodierer
DE112012005557T5 (de) Erzeugen eines Code-Alphabets von Symbolen zum Erzeugen von Codewörtern für Wörter, die mit einem Programm verwendet werden
US10965316B2 (en) Parallel Lempel-Ziv compression for highly-parallel computer architectures
DE112008002903T5 (de) Datensequenzkompression
DE112017005823T5 (de) Codieren von symbolen variabler länge zum ermöglichen eines parallelen decodierens
DE112016004359T5 (de) Systeme, Verfahren und Vorrichtungen für eine Dekompression unter Verwendung von Hardware und Software
Edwards et al. Parallel algorithms for Burrows–Wheeler compression and decompression
DE69326793T2 (de) Parallelisierter Grössevergleicher zum Vergleichen einer Binärzahl mit einer bestimmten Zahl
DE10141460A1 (de) Potenzrestberechnungseinheit unter Verwendung eines Montgomery-Algorithmus
DE112010005315T5 (de) Verfahren und Vorrichtung zur sicheren Verteilung und Speicherung von Daten unter Verwendung von N Kanälen
EP3576001A1 (de) Computerimplementiertes verfahren zum übergeben eines datenstrings von einer anwendung an eine datenschutzeinrichtung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R084 Declaration of willingness to licence
R016 Response to examination communication
R018 Grant decision by examination section/examining division