DE112017005823T5 - Codieren von symbolen variabler länge zum ermöglichen eines parallelen decodierens - Google Patents

Codieren von symbolen variabler länge zum ermöglichen eines parallelen decodierens Download PDF

Info

Publication number
DE112017005823T5
DE112017005823T5 DE112017005823.6T DE112017005823T DE112017005823T5 DE 112017005823 T5 DE112017005823 T5 DE 112017005823T5 DE 112017005823 T DE112017005823 T DE 112017005823T DE 112017005823 T5 DE112017005823 T5 DE 112017005823T5
Authority
DE
Germany
Prior art keywords
symbol
fixed
width data
data blocks
symbols
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.)
Pending
Application number
DE112017005823.6T
Other languages
English (en)
Inventor
Andrew Kenneth Martin
Anita Shaw
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 DE112017005823T5 publication Critical patent/DE112017005823T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0023Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the signalling
    • H04L1/0028Formatting
    • H04L1/003Adaptive formatting arrangements particular to signalling, e.g. variable amount of bits
    • 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
    • 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/6017Methods or arrangements to increase the throughput
    • H03M7/6023Parallelization

Landscapes

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

Abstract

Es wird ein Lösungsansatz bereitgestellt, bei dem ein Quellensystem mehrere Symbolsätze in mehrere Datenblöcke mit fester Breite partitioniert. Während des Partitionierens erzeugt das Quellensystem Symbolgrenzinformationen, die Symbolen im Symbolsatz in Bezug auf Grenzen der Datenblöcke mit fester Breite entsprechen. Das Quellensystem kombiniert die Datenblöcke mit fester Breite der Reihe nach auf der Grundlage der Symbolgrenzinformationen in einen gemultiplexten Bitstrom und überträgt den gemultiplexten Bitstrom an ein Zielsystem.

Description

  • HINTERGRUND
  • Die vorliegende Offenbarung betrifft Codieren eines Symbolstroms in einem Quellensystem mit Symbolen variabler Länge, um einem Zielsystem zu ermöglichen, mehrere Decodierer zum Decodieren des Symbolstroms zu verwenden.
  • Computersysteme verwenden Komprimierungstechniken zum Verringern der Anzahl von Bits, die im Speicher gespeichert oder über Computernetzwerke an andere Computersysteme übertragen werden. Datenkomprimierung ist eine Technik zum Verringern der Größe einer Datendatei durch „Komprimieren“ einer Anzahl von Bits in eine kleinere Anzahl von Bits. Beim Quellencodieren handelt es sich um eine Komprimierungstechnik, die die über ein Computernetzwerk zu übertragende Bitmenge verringert, beispielsweise bei Datenströmen.
  • Datenstromkomprimierungsformate können Daten unter Verwendung von „Symbolen“ variabler Länge codieren. Aufgrund der Veränderlichkeit der Symbollänge ist der Prozess des Decodierens der Symbole in einem Zielsystem grundsätzlich sequenziell, da das Zielsystem ein Symbol decodieren muss, um eine Startposition des nächsten Symbols im Datenstrom zu ermitteln.
  • KURZDARSTELLUNG
  • Gemäß einer Ausführungsform der vorliegenden Offenbarung wird ein Lösungsansatz bereitgestellt, bei dem ein Quellensystem mehrere Symbolsätze in mehrere Datenblöcke mit fester Breite partitioniert. Während des Partitionierens erzeugt das Quellensystem Symbolgrenzinformationen, die Symbolen in den Symbolsätzen in Bezug auf Grenzen der Datenblöcke mit fester Breite entsprechen. Das Quellensystem kombiniert die Datenblöcke mit fester Breite auf der Grundlage der Symbolgrenzinformationen der Reihe nach zu einem gemultiplexten Bitstrom und überträgt den gemultiplexten Bitstrom an ein Zielsystem.
  • Das Vorhergehende ist eine Zusammenfassung und enthält daher notwendigerweise Vereinfachungen, Verallgemeinerungen und Auslassungen von Einzelheiten; infolgedessen werden Fachleute verstehen, dass die Zusammenfassung lediglich der Veranschaulichung dient und in keiner Weise einschränkend sein soll. Andere Aspekte, erfindungsgemäße Merkmale und Vorteile der vorliegenden Erfindung, wie sie ausschließlich durch die Ansprüche definiert werden, gehen aus der im Folgenden dargelegten nicht einschränkenden ausführlichen Beschreibung hervor.
  • Figurenliste
  • Die vorliegende Offenbarung kann besser verstanden und ihre zahlreichen Aufgaben, Merkmale und Vorteile für Fachleute deutlich gemacht werden unter Bezugnahme auf die beigefügten Zeichnungen, in denen:
    • 1 ein Blockschaltbild eines Datenverarbeitungssystems ist, in dem die hierin beschriebenen Verfahren implementiert werden können;
    • 2 eine Erweiterung der in 1 gezeigten Datenverarbeitungssystemumgebung bereitstellt, um zu veranschaulichen, dass die hierin beschriebenen Verfahren in einer breiten Vielfalt von Datenverarbeitungssystemen ausgeführt werden können, die in einer vernetzten Umgebung arbeiten;
    • 3 eine Darstellung ist, die einen Quellensymbolcodierer (source symbol encoder), der einen ursprünglichen Symbolstrom in einen gemultiplexten Bitstrom umwandelt, und einen Zielsystemdecodierer (destination system decoder) zeigt, der mehrere Decodierer verwendet, um den gemultiplexten Bitstrom in einen decodierten Symbolstrom umzuwandeln;
    • 4 eine Übersichtsdarstellung ist, die einen Komprimierer und einen Dekomprimierer zeigt, die den in 3 gezeigten Symbolcodierer und Symboldecodierer verwenden;
    • 5 eine ausführliche Darstellung ist, die Abschnitte eines ursprünglichen Symbolstroms zeigt, der in einen gemultiplexten Bitstrom umgewandelt wird;
    • 6 eine Darstellung ist, die Stromwandler (stream converters) zeigt, die Bitströme in Datenblöcke mit fester Bitbreite partitionieren und eine Pull-Zeitsteuerung (pull timing) erzeugen;
    • 7 eine Darstellung ist, die einen Lösungsansatz mit einem Multiplexer mit fester Breite zeigt, der Datenblöcke mit fester Bitbreite aus mehreren Bitströmen in einer Reihenfolge lädt, die mit der Art und Weise übereinstimmt, wie die Datenblöcke mit fester Bitbreite durch Zielsymboldecodierer mit fester Bitbreite verarbeitet werden;
    • 8 ein Übersichtsablaufplan ist, der einen Quellencodierer zeigt, der einen gemultiplexten Bitstrom erzeugt, der zum parallelen Decodieren an einen Zielsystemdecodierer übertragen wird;
    • 9 ein Ablaufplan ist, der Schritte zeigt, die von einem Stromwandler ausgeführt werden, um einen Symbolteilstrom in einen Bitstrom mit Datenblöcken mit fester Bitbreite umzuwandeln und eine Pull-Zeitsteuerung zu erzeugen, die den Datenblöcken mit fester Bitbreite entspricht;
    • 10 ein Ablaufplan ist, der Schritte zeigt, die von einem Multiplexer mit fester Breite ausgeführt werden, um Datenblöcke mit fester Bitbreite aus mehreren Bitströmen auf der Grundlage von Pull-Zeitsteuerungsinformationen zu einem gemultiplexten Bitstrom zu kombinieren;
    • 11 ein Ablaufplan ist, der Schritte zeigt, die von einem Zielsystem ausgeführt werden, um paralleles Decodieren eines eingehenden gemultiplexten Bitstroms auszuführen; und
    • 12 eine Darstellung ist, die ein Beispiel von mehreren Decodierern mit fester Breite zeigt, die mit einer Bitstrom-Partitionierungseinrichtung (bit stream partitioner) verbunden sind, um Datenblöcke mit fester Bitbreite anzufordern und zu verarbeiten.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die hierin verwendete Terminologie dient lediglich der Beschreibung von bestimmten Ausführungsformen und soll die Offenbarung nicht einschränken. Wie hierin verwendet, sollen die Singularformen „ein(e)“, und „der/die/das“ auch die Pluralformen mit einschließen, sofern aus dem Kontext nicht eindeutig etwas anderes hervorgeht. Außerdem versteht es sich von selbst, dass die Begriffe „aufweist“ und/oder „aufweisend“ bei Verwendung in dieser Beschreibung das Vorhandensein von dargelegten Merkmalen, ganzen Zahlen, Schritten, Arbeitsgängen, Elementen und/oder Komponenten angeben, jedoch das Vorhandensein oder Hinzufügen von einem oder mehreren anderen Merkmalen, ganzen Zahlen, Schritten, Arbeitsgängen, Elementen, Komponenten und/oder Gruppen von diesen nicht ausschließen.
  • Zu den entsprechenden Strukturen, Materialien, Vorgängen und Äquivalenten von allen Mitteln oder Schritt-plus-Funktion-Elementen in den folgenden Ansprüchen sollen eine beliebige Struktur, ein beliebiges Material oder ein beliebiger Vorgang zum Ausführen der Funktion zusammen mit anderen beanspruchten Elementen gehören, wie sie im Einzelnen beansprucht werden. Die Beschreibung der vorliegenden Offenbarung dient der Veranschaulichung und Beschreibung, soll jedoch nicht erschöpfend sein oder die Offenbarung auf die beschriebene Form beschränken. Viele Modifikationen und Änderungen sind für Fachleute offensichtlich, ohne vom Schutzumfang und Gedanken der Offenbarung abzuweichen. Die Ausführungsform wurde gewählt und beschrieben, um den Grundgedanken der Offenbarung und die praktische Anwendung bestmöglich zu erläutern und anderen Fachleuten ein Verständnis der Offenbarung für verschiedene Ausführungsformen mit verschiedenen Modifikationen zu ermöglichen, wie sie für die jeweils beabsichtigte Verwendung geeignet sind.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) beinhalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. ein Lichtwelleneiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zum Umsetzen der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der angegebenen logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die angegebenen Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen. Die folgende ausführliche Beschreibung folgt im Allgemeinen der Kurzdarstellung der Offenbarung, wie sie oben dargelegt ist, wobei die Definitionen der verschiedenen Aspekte und Ausführungsformen der Offenbarung näher erläutert werden.
  • 1 veranschaulicht ein Informationsverarbeitungssystem 100, bei dem es sich um ein vereinfachtes Beispiel eines Computersystems handelt, das die hierin beschriebenen Datenverarbeitungsvorgänge ausführen kann. Das Informationsverarbeitungssystem 100 enthält einen oder mehrere Prozessoren 110, die mit einem Prozessorschnittstellenbus 112 verbunden sind. Der Prozessorschnittstellenbus 112 verbindet die Prozessoren 110 mit einer Northbridge 115, die auch als Speichersteuereinheit-Hub (Memory Controller Hub, MCH) bekannt ist. Die Northbridge 115 ist mit einem Systemspeicher 120 verbunden und stellt ein Mittel für den(die) Prozessor(en) 110 bereit, um auf den Systemspeicher zuzugreifen. Eine Grafiksteuereinheit (graphics controller) 125 ist ebenfalls mit der Northbridge 115 verbunden. In einer Ausführungsform verbindet ein PCI-Express-Bus (Peripheral Component Interconnect (PCI) Express bus) 118 die Northbridge 115 mit der Grafiksteuereinheit 125. Die Grafiksteuereinheit 125 mit einer Anzeigeeinheit 130, beispielsweise einem Computermonitor, verbunden.
  • Die Northbridge 115 und eine Southbridge 135 sind unter Verwendung eines Busses 119 miteinander verbunden. In einer Ausführungsform handelt es sich bei dem Bus um einen direkten Medienschnittstellenbus (Direct Media Interface (DMI) bus), der Daten mit hoher Geschwindigkeit zwischen der Northbridge 115 und der Southbridge 135 in jede Richtung überträgt. In einer anderen Ausführungsform verbindet ein PCI-Bus die Northbridge und die Southbridge. Bei der Southbridge 135, auch als Ein-/Ausgabe- (E/A-) Steuereinheit-Hub (Input/Output (I/O) Controller Hub, ICH) bekannt, handelt es sich um einen Chip, der im Allgemeinen Fähigkeiten implementiert, die bei niedrigeren Geschwindigkeiten als die von der Northbridge bereitgestellten Fähigkeiten arbeiten. Die Southbridge 135 stellt normalerweise verschiedene Busse bereit, die zum Verbinden verschiedener Komponenten verwendet werden. Zu diesen Bussen gehören zum Beispiel PCI- und PCI-Express-Busse, ein ISA-Bus, ein Systemverwaltungsbus (System Management Bus, SMBus oder SMB) und/oder ein LPC-Bus (Low Pin Count bus). Der LPC-Bus verbindet oftmals Einheiten mit geringer Bandbreite, beispielsweise einen Boot-ROM (boot ROM) 196 und „Legacy“-I/O-Einheiten („legacy“ I/O devices) (unter Verwendung eines „Super-I/O“-Chips). Zu den „Legacy“-I/O-Einheiten (198) können zum Beispiel serielle und parallele Anschlüsse, eine Tastatur, eine Maus und/oder eine Diskettensteuereinheit gehören. Zu anderen Komponenten, die oftmals in der Southbridge 135 enthalten sind, gehören eine Direktzugriffsspeicher- (DMA-) Steuereinheit (Direct Memory Access (DMA) controller), eine programmierbare Unterbrechungssteuereinheit (Programmable Interrupt Controller, PIC) und eine Speichersteuereinheit, die die Southbridge 135 unter Verwendung des Busses 184 mit einer nichtflüchtigen Speichereinheit 185, beispielsweise einem Festplattenlaufwerk, verbindet.
  • Bei einer ExpressCard 155 handelt es sich um einen Steckplatz, der Hot-Plugfähige (hot-pluggable) Geräte mit dem Informationsverarbeitungssystem verbindet. Die ExpressCard 155 unterstützt sowohl die PCI-Express- als auch USB-Anschlussfähigkeit, da sie unter Verwendung sowohl des Universal Serial Busses (USB) als auch des PCI-Express-Busses an die Southbridge 135 angeschlossen werden kann. Die Southbridge 135 beinhaltet eine USB-Steuereinheit 140, die eine USB-Anschlussfähigkeit für Geräte bereitstellt, die an USB angeschlossen werden. Zu diesen Einheiten gehören eine Webcam (Kamera) 150, ein Infrarot- (IR-) Empfänger 148, eine Tastatur und ein Tastfeld 144 sowie eine Bluetooth-Einheit 146, die drahtlose Personal Area-Netzwerke (personal area networks, PANs) bereitstellt. Die USB-Steuereinheit 140 stellt auch eine USB-Anschlussfähigkeit für diverse andere über USB verbundene Einheiten 142 bereit, beispielsweise eine Maus, eine austauschbare nichtflüchtige Speichereinheit 145, Modems, Netzwerkkarten, ISDN-Stecker, Faxgeräte, Drucker, USB-Hubs und viele andere Arten von über USB verbundenen Einheiten. Obwohl die austauschbare nichtflüchtige Steuereinheit 145 als eine über USB verbundene Einheit gezeigt ist, könnte die austauschbare nichtflüchtige Steuereinheit 145 unter Verwendung einer anderen Schnittstelle, wie etwa einer Firewire-Schnittstelle usw., verbunden werden.
  • Eine drahtlose lokale Netzwerk- (LAN-) Einheit 175 ist über einen PCI- oder PCI-Express-Bus 172 mit der Southbridge 135 verbunden. Die LAN-Einheit setzt normalerweise eine der IEEE802.11-Standards von Over-the-Air-Modulationstechniken um, die alle das gleiche Protokoll verwenden, um drahtlos Daten zwischen dem Informationsverarbeitungssystem 100 und einem anderen Computersystem oder einer anderen Einheit auszutauschen. Eine optische Speichereinheit 190 ist unter Verwendung eines seriellen ATA- (SATA-) Busses 188 mit der Southbridge 135 verbunden. Der serielle ATA-Bus verbindet die Southbridge 135 außerdem mit anderen Arten von Speichereinheiten wie etwa Festplattenlaufwerken. Eine Audioschaltungsanordnung 160, beispielsweise eine Sound-Karte, ist über einen Bus 158 mit der Southbridge verbunden. Die Audioschaltungsanordnung 160 stellt auch eine Funktionalität bereit wie beispielsweise eine Audioleitungseingang (audio line-in) und einen optischen digitalen Audioeingangsanschluss (optical digital audio in port) 162, einen optische digitale Ausgangs- und Kopfhörerbuchse 164, interne Lautsprecher 166 und ein internes Mikrofon 168. Eine Ethernet-Steuereinheit 170 ist unter Verwendung eines Busses, beispielsweise des PCI- oder PCI-Express-Busses, mit der Southbridge 135 verbunden. Die Ethernet-Steuereinheit 170 verbindet das Informationsverarbeitungssystem 100 mit einem Computernetzwerk, beispielsweise mit einem lokalen Netz (LAN), dem Internet und anderen öffentlichen und privaten Computernetzwerken.
  • Zwar ist in 1 ein Informationsverarbeitungssystem gezeigt, ein Informationsverarbeitungssystem kann jedoch viele Formen annehmen. Zum Beispiel kann ein Informationsverarbeitungssystem die Form eines Desktop-Computers, eines Servers, eines tragbaren Computers, eines Laptops, eines Notebooks oder eines Computers oder Informationsverarbeitungssystems mit einem anderen Formfaktor annehmen. Zudem kann ein Informationsverarbeitungssystem andere Formen annehmen wie etwa die eines Personal Digital Assistant (PDA), eines Spielegerätes, eines Geldausgabeautomaten (ATM - Automated Teller Maschine), eines tragbaren Telefongerätes, eines Kommunikationsgerätes oder anderer Geräte, die einen Prozessor und Speicher enthalten.
  • 2 stellt eine Erweiterung der Umgebung des in 1 gezeigten Informationsverarbeitungssystems bereit, um zu veranschaulichen, dass die hierin beschriebenen Verfahren auf vielen verschiedenen Informationsverarbeitungssystemen ausgeführt werden können, die in einer vernetzten Umgebung arbeiten. Die Arten von Informationsverarbeitungssystemen reichen von kleinen Handgeräten wie etwa einem tragbaren Computer/Mobiltelefon 210, bis zu großen Hauptsystemen wie etwa einem Großrechner 270. Zu Beispielen des tragbaren Computers 210 gehören Personal Digital Assistants (PDA), persönliche Entertainment-Geräte, wie etwa MP3-Player, tragbare Fernsehgeräte und CD-Player. Zu anderen Beispielen von Informationsverarbeitungssystemen gehören ein Stift- oder Tablet-Computer 220, ein Laptop- oder Notebook-Computer 230, eine Arbeitsstation 240, ein Personal-Computer-System 250 und ein Server 260. Andere Arten von Informationsverarbeitungssystemen, die in 2 nicht einzeln gezeigt werden, werden durch ein Informationsverarbeitungssystem 280 dargestellt. Wie gezeigt, können die diversen Informationsverarbeitungssysteme unter Verwendung eines Computernetzwerks 200 miteinander vernetzt werden. Zu den Arten von Computernetzwerk, die verwendet werden können, um die diversen Informationsverarbeitungssysteme miteinander zu verbinden, gehören lokale Netzwerke (LAN), drahtlose lokale Netzwerke (WLAN), das Internet, das öffentliche Telefonnetz (PSTN), andere drahtlose Netzwerke und eine beliebige andere Netzwerktopologie, die verwendet werden kann, um die Informationsverarbeitungssysteme miteinander zu verbinden. Viele der Informationsverarbeitungssysteme enthalten nichtflüchtige Datenspeicher wie etwa Festplatten und/oder einen nichtflüchtigen Speicher. Einige der in 2 gezeigten Informationsverarbeitungssysteme zeigen getrennte nichtflüchtige Datenspeicher (der Server 260 verwendet einen nichtflüchtigen Datenspeicher 265, der Großrechner 270 verwendet einen nichtflüchtigen Datenspeicher 275, und das Informationsverarbeitungssystem 280 verwendet einen nichtflüchtigen Datenspeicher 285). Der nichtflüchtige Datenspeicher kann eine Komponente sein, die außerhalb der diversen Informationsverarbeitungssysteme liegt oder sich innerhalb eines der Informationsverarbeitungssysteme befinden kann. Zudem kann eine austauschbare nichtflüchtige Speichereinheit 145 von zwei oder mehreren Informationsverarbeitungssystemen gemeinsam genutzt werden unter Verwendung diverser Techniken, wie etwa Verbinden der austauschbaren nichtflüchtigen Speichereinheit 145 mit einem USB-Anschluss oder einem anderen Anschluss der Informationsverarbeitungssysteme.
  • Die 3 bis 12 zeigen ein Informationsverarbeitungssystem, das einen Symbolstrom mit Symbolen variabler Länge in einem Quellensystem codiert, damit ein Zielsystem ein paralleles Decodieren eines gemultiplexten Bitstroms ausführen kann. Wie zuvor erläutert, bestehen heutige komprimierte Datenformate aus einem Strom von Symbolen variabler Länge, und infolgedessen ist der Prozess des Decodierens dieser Symbolströme grundsätzlich sequenziell, und es ist schwierig, den Decodierungsprozess zu parallelisieren, um die Leistungsfähigkeit zu verbessern.
  • Um dieses Problem zu entschärfen, führt ein Quellensystem Umwandlungsschritte mit einem eingehenden Symbolstrom aus, um einem Zielsystem zu ermöglichen, paralleles Decodieren auszuführen. Der ursprüngliche Symbolstrom wird in n (z.B. 4) unabhängige Symbolteilströme gedemultiplext, die sodann in Datenblöcke mit fester Bitbreite mit entsprechenden Pull-Zeitsteuerungsinformationen partitioniert werden, die Positionen von Symbolen in Bezug auf Grenzen der Datenblöcke mit fester Bitbreite entsprechen. Die Datenblöcke mit fester Bitbreite werden sodann auf der Grundlage der Pull-Zeitsteuerungsinformationen zusammen gemultiplext und an ein Zielsystem übertragen.
  • Das Zielsystem verwendet eine Bitstrom-Partitionierungseinrichtung (bit stream partitioner), die die gemultiplexten Bitströme in Datenblöcke mit fester Bitbreite teilt und die Datenblöcke mit fester Bitbreite auf Anforderung der Decodierer mehreren Decodierern zuführt. Die mehreren Decodierer decodieren Symbole parallel und führen die decodierten Symbole einem Kombinierer zu. Der Kombinierer kombiniert die Symbole zu einem decodierten Symbolstrom und überträgt den decodierten Symbolstrom zur Nachbearbeitung.
  • 3 ist eine Darstellung, die einen Quellensymbolcodierer, der einen ursprünglichen Symbolstrom in einen gemultiplexten Bitstrom umwandelt, und einen Zielsystemdecodierer zeigt, der mehrere Decodierer verwendet, um den gemultiplexten Bitstrom in einen decodierten Symbolstrom umzuwandeln.
  • Ein Symbolcodierer 300 empfängt einen ursprünglichen Bitstrom 310, der in einer Ausführungsform Symbole variabler Länge (z.B. Huffman-Gzip-Strom) enthält. Ein Demultiplexer 320 demultiplext den ursprünglichen Symbolstrom 310 in Symbolsätze, bei denen es sich um Symbolteilströme 325 und 330 handelt. Das Beispiel in 3 zeigt zwei gedemultiplexte Symbolteilströme 325 und 330. In diesem Beispiel speichert der Demultiplexer 320 das erste Symbol aus dem ursprünglichen Symbolstrom 310 im Symbolteilstrom 325, das zweite Symbol aus dem ursprünglichen Symbolstrom 310 im Symbolteilstrom 330, das dritte Symbol aus dem ursprünglichen Symbolstrom 310 zurück in den Symbolteilstrom 325, usw. (weitere Einzelheiten siehe 5 und entsprechenden Text).
  • Ein Stromwandler A 335 und ein Stromwandler B 340 partitionieren ihre entsprechenden Symbolteilströme gleichzeitig in Datenblöcke mit fester Bitbreite, die in einem Bitstrom A 337 und einem Bitstrom B 342 gespeichert werden. Die Größe der Datenblöcke mit fester Bitbreite stimmt mit der Größe der Puffer überein, die von den Decodierern A 370 und B 375 mit fester Breite in einem Zielsystemdecodierer 360 verwendet werden (z.B. 16 Bit). Der Stromwandler A 335 und der Stromwandler B 340 erzeugen außerdem eine Pull-Zeitsteuerung A 339 und eine Pull-Zeitsteuerung B 344, die Positionen der Symbole in Bezug auf Grenzen der Datenblöcke mit fester Bitbreite entsprechen (Einzelheiten der Verarbeitung siehe 6 und entsprechenden Text). Die Pull-Zeitsteuerungsinformationen werden von einem Multiplexer 350 mit fester Breite verwendet, um die Datenblöcke mit fester Bitbreite von den Stromwandlern A 335 und B 340 ordnungsgemäß zu einem gemultiplexten Bitstrom 355 zu organisieren, so dass eine Übereinstimmung mit den Zeiten erreicht wird, zu denen die Decodierer A 370 und B 375 mit fester Breite Datenblöcke mit fester Bitbreite aus einer Bitstrom-Partitionierungseinrichtung 365 anfordern oder „ziehen“ („pull“), wie im Folgenden erläutert wird.
  • Die Bitstrom-Partitionierungseinrichtung 365 des Symboldecodierers 360 partitioniert den gemultiplexten Bitstrom 355 in Datenblöcke mit fester Bitbreite (mit derselben Größe wie die vom Symbolcodierer 300 partitionierten Datenblöcke mit fester Bitbreite). Die Decodierer A 370 und B 375 mit fester Breite fordern als Erstes Datenblöcke mit fester Bitbreite von der Bitstrom-Partitionierungseinrichtung 365 an, um zunächst ihre entsprechenden Puffer (z.B. zwei Puffer) zu laden. Anschließend beginnen die Decodierer A 370 und B 375 mit fester Breite gleichzeitig damit, die Symbole in ihren geladenen Datenblöcken mit fester Bitbreite zu decodieren. Wenn der Decodierer A 370 oder B 375 mit fester Breite mehr Datenblöcke mit fester Bitbreite benötigt, beispielsweise wenn eines der decodierten Symbole die Grenze seines ersten Puffers erreicht, fordert der Decodierer einen weiteren Datenblock mit fester Bitbreite von der Bitstrom-Partitionierungseinrichtung 365 an (weitere Einzelheiten siehe 11 bis12 und entsprechenden Text).
  • Die Decodierer mit fester Breite erzeugen decodierte Symbolströme 380 und 385, die ein Kombinierer 390 im Umlaufverfahren zu einem decodierten Symbolstrom 395 kombiniert, der bereit für die Nachverarbeitung ist. Der Symboldecodierer 360 steigert die Decodierleistung durch Verwenden mehrerer Decodierer mit fester Breite, um paralleles Decodieren auszuführen.
  • 4 ist eine Übersichtsdarstellung, die einen Komprimierer und einen Dekomprimierer zeigt, die den in 3 gezeigten Symbolcodierer und Symboldecodierer verwenden. Ein Komprimierer 400 beinhaltet einen Datencodierer 420, der einen nichtkomprimierten Bytestrom 410 empfängt und den ursprünglichen Symbolstrom 310 erzeugt. Der ursprüngliche Symbolstrom 310 wird dem Symbolcodierer 300 zugeführt, der den gemultiplexten Bitstrom 355 erzeugt, wie oben erläutert.
  • Ein Dekomprimierer 430 beinhaltet den Symboldecodierer 360, der einen decodierten Symbolstrom 395 erzeugt, wie oben erläutert. Ein Datendecodierer 440 decodiert der Reihe nach die Symbole im decodierten Symbolstrom 395, um einen rekonstruierten Bytestrom 450 zu erzeugen.
  • 5 ist eine ausführliche Darstellung, die Abschnitte eines ursprünglichen Symbolstroms zeigt, der in einen gemultiplexten Bitstrom umgewandelt wird. Der ursprüngliche Symbolstrom 310 enthält Symbole S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15 und S16 mit variabler Länge. Der Demultiplexer 320 sortiert die Symbole in sequenzieller Reihenfolge zu einem Symbolteilstrom A 325 und einem Symbolteilstrom B 330. Wie zu erkennen ist, enthält der Symbolteilstrom A 325 Symbole S1, S3, S5, S7, S9, S11, S13 und S15, und der Symbolteilstrom B 330 enthält Symbole S2, S4, S6, S8, S10, S12, S14 und S16.
  • Der Stromwandler A 335 partitioniert den Symbolteilstrom A 325 in Datenblöcke A1, A2, A3, A4 und A5 mit fester Bitbreite und speichert die Datenblöcke mit fester Bitbreite in den Bitstrom A 337. Der Stromwandler A 335 erzeugt außerdem die Pull-Zeitsteuerung A 339, die Einsen in Slots zu Zeitpunkten enthält, in denen Symbole aus dem Symbolteilstrom A 325 eine Grenze eines Datenblocks mit fester Bitbreite überqueren (weitere Einzelheiten siehe 6 und entsprechenden Text).
  • Gleichermaßen partitioniert der Stromwandler B 340 den Symbolteilstrom B 330 in Datenblöcke B1, B2, B3, B4, B5 und B6 mit fester Bitbreite und speichert die Datenblöcke mit fester Bitbreite in den Bitstrom B 342. Der Stromwandler B 340 erzeugt außerdem die Pull-Zeitsteuerung B 344, die Einsen in Slots zu Zeitpunkten enthält, in denen Symbole aus dem Symbolteilstrom B 330 eine Grenze von einem seiner Datenblöcke mit fester Bitbreite überqueren.
  • Der Multiplexer 350 mit fester Breite durchläuft sodann einen Prozess des Kombinierens von Datenblöcken mit fester Bitbreite aus dem Bitstrom A 337 und dem Bitstrom B 342. Der Multiplexer 350 mit fester Breite lädt zunächst Datenblöcke A1 mit fester Bitbreite, dann B1, dann A2, dann B2, da die Decodierer A 370 und B 375 mit fester Breite ein erstes Laden ihrer beiden Puffer ausführen. Als Nächstes analysiert der Multiplexer 350 mit fester Breite die Pull-Zeitsteuerung A 339 und B 344, um zu ermitteln, wann Datenblöcke mit fester Bitbreite aus dem Bitstrom A 337 oder B 342 geladen werden müssen (weitere Einzelheiten siehe 7 und entsprechenden Text). Der Multiplexer 350 mit fester Breite überträgt den gemultiplexten Bitstrom 355 zum späteren Decodieren über ein Computernetzwerk an den Symboldecodierer 360. In einer Ausführungsform speichert der Multiplexer 350 mit fester Breite den gemultiplexten Bitstrom 355 in einem Speicherbereich zum späteren Abruf.
  • 6 ist eine Darstellung, die Stromwandler zeigt, die Bitströme in Datenblöcke mit fester Bitbreite partitionieren und eine Pull-Zeitsteuerung erzeugen. Der Stromwandler A 335 partitioniert den Bitstrom A 337 in Datenblöcke A1, A2, A3, A4 und A5 mit fester Bitbreite. Die Datenblöcke mit fester Bitbreite entsprechen der Größe der von den Decodierern mit fester Breite verwendeten Puffer, da die Decodierer mit fester Breite Datenblöcke der gleichen Größe von der Bitstrom-Partitionierungseinrichtung 365 anfordern (im Folgenden erläutert). Wenn die Puffergröße des Decodierers A 370 zum Beispiel 16 Bit beträgt, verwendet der Stromwandler A 335 einen Datenblock mit fester Bitbreite mit der Größe von 16 Bit.
  • Der Stromwandler A analysiert sodann die Symbole S1, S3, S5, S7, S9, S11, S13 und S15 in Bezug auf die Grenzen der Datenblöcke mit fester Bitbreite. Wenn eines der Symbole eine Grenze überschreitet, lädt der Stromwandler A 335 eine 1 in die Pull-Zeitsteuerung A 339, da die Decodierer im Symboldecodierer 360 zu diesem Zeitpunkt einen weiteren Datenblock mit fester Bitbreite anfordern, was auch der Grund dafür ist, dass der Multiplexer 350 mit fester Breite die Datenblöcke mit fester Bitbreite in einer Reihenfolge auf der Grundlage der Pull-Zeitsteuerung lädt (weitere Einzelheiten siehe 12 und entsprechenden Text). Ausgehend von dem in 6 gezeigten Beispiel analysiert der Stromwandler A 335 die Symbole und führt pro Symbol die folgenden Schritte aus:
    • S1 überschreitet keine Grenze, Laden einer 0 in Pull-Zeitsteuerung A 339;
    • S3 überschreitet Grenze 610, Laden einer 1 in Pull-Zeitsteuerung A 339;
    • S5 überschreitet keine Grenze, Laden einer 0 in Pull-Zeitsteuerung A 339;
    • S7 überschreitet keine Grenze, Laden einer 0 in Pull-Zeitsteuerung A 339;
    • S9 überschreitet Grenze 615, Laden einer 1 in Pull-Zeitsteuerung A 339;
    • S11 überschreitet Grenze 620, Laden einer 1 in Pull-Zeitsteuerung A 339;
    • S13 überschreitet keine Grenze, Laden einer 0 in Pull-Zeitsteuerung A 339; und
    • S15 überschreitet Grenze 625, Laden einer 1 in Pull-Zeitsteuerung A 339.
  • Ebenso partitioniert der Stromwandler B 340 den Bitstrom B 342 in Datenblöcke B1, B3, B3, B4, B5 und B6 mit fester Bitbreite. Der Stromwandler B 340 analysiert sodann die Symbole S2, S4, S6, S8, S10, S12, S14 und S16 in Bezug auf die Grenzen der Datenblöcke mit fester Bitbreite. Ausgehend von dem in 6 gezeigten Beispiel analysiert der Stromwandler B 340 die Symbole und führt pro Symbol die folgenden Schritte aus:
    • S2 überschreitet keine Grenze, Laden einer 0 in Pull-Zeitsteuerung B 344;
    • S4 überschreitet Grenze 610, Laden einer 1 in Pull-Zeitsteuerung B 344;
    • S6 überschreitet Grenze 610, Laden einer 1 in Pull-Zeitsteuerung B 344;
    • S8 überschreitet Grenze 610, Laden einer 1 in Pull-Zeitsteuerung B 344;
    • S10 überschreitet keine Grenze, Laden einer 0 in Pull-Zeitsteuerung B 344;
    • S12 überschreitet Grenze 620, Laden einer 1 in Pull-Zeitsteuerung B 344;
    • S14 überschreitet Grenze 610, Laden einer 1 in Pull-Zeitsteuerung B 344; und
    • S16 überschreitet keine Grenze, Laden einer 0 in Pull-Zeitsteuerung B 344.
  • Der Multiplexer 350 mit fester Breite nutzt sodann die Pull-Zeitsteuerung, um die Datenblöcke mit fester Bitbreite aus dem Bitstrom A 337 und dem Bitstrom B 342 in einer bestimmten Reihenfolge einzufügen (weitere Einzelheiten siehe 7 und entsprechenden Text).
  • 7 ist eine Darstellung, die einen Lösungsansatz zeigt, in dem der Multiplexer 350 Datenblöcke mit fester Bitbreite aus mehreren Bitströmen in einer Reihenfolge lädt, die mit der Art und Weise übereinstimmt, wie die Datenblöcke mit fester Bitbreite von den Decodierern A 370 und B 375 im Symboldecodierer 360 verarbeitet werden.
  • Wie in den 11 bis 12 gezeigt, führen die Decodierer mit fester Breite zunächst ein erstes Laden ihrer Puffer in sequenzieller Reihenfolge aus. Beispielsweise lädt der Multiplexer 350 mit fester Breite Block A1, dann B1, dann A2, dann B2 in Slots 1, 2, 3 und 4 des gemultiplexten Bitstroms 355.
  • Danach prüft der Multiplexer 350 mit fester Breite die Pull-Zeitsteuerung A 339 und B 344 in sequenzieller Reihenfolge, um zu ermitteln, welche Datenblöcke mit fester Bitbreite als Nächstes geladen werden müssen. Weder die Pull-Zeitsteuerung A 339 noch die Pull-Zeitsteuerung B 344 enthalten eine 1 in ihrem ersten Slot, daher führt der Multiplexer mit fester Breite keine Aktion aus. Die Pull-Zeitsteuerung A 339 enthält eine 1 im zweiten Slot, folglich lädt der Multiplexer 350 mit fester Breite den Block A3 in den 5. Slot des gemultiplexten Bitstroms 355. Die Pull-Zeitsteuerung B 344 enthält ebenfalls eine 1 im zweiten Slot, folglich lädt der Multiplexer 350 mit fester Breite den Block B3 in den 6. Slot des gemultiplexten Bitstroms 355. Die Pull-Zeitsteuerung A 339 enthält eine 0 im dritten Slot, folglich wird nichts geladen. Die Pull-Zeitsteuerung B 344 enthält eine 1 im dritten Slot, folglich lädt der Multiplexer 350 mit fester Breite B4 in den 7. Slot des gemultiplexten Bitstroms 355.
  • Im weiteren Verlauf enthält die Pull-Zeitsteuerung A 339 eine 0 im vierten Slot, folglich wird nichts geladen. Die Pull-Zeitsteuerung B 344 enthält eine 1 im vierten Slot, folglich lädt der Multiplexer 350 mit fester Breite B5 in den 8. Slot des gemultiplexten Bitstroms 355. Die Pull-Zeitsteuerung A 339 enthält eine 1 im fünften Slot, folglich lädt der Multiplexer 350 mit fester Breite A4 in den 9. Slot des gemultiplexten Bitstroms 355. Die Pull-Zeitsteuerung B 344 enthält eine 0 im fünften Slot, folglich wird nichts geladen. Die Pull-Zeitsteuerung A 339 enthält eine 1 im sechsten Slot, folglich lädt der Multiplexer 350 mit fester Breite A5 in den 10. Slot des gemultiplexten Bitstroms 355. Die Pull-Zeitsteuerung B 344 enthält ebenfalls eine 1 im sechsten Slot, folglich lädt der Multiplexer 350 mit fester Breite B6 in den 11. Slot des gemultiplexten Bitstroms 355. In einer Ausführungsform, beispielsweise der in 7 gezeigten, wird aufgrund des anfänglichen Ladens der Datenblöcke wie oben erläutert nicht die gesamte Pull-Zeitsteuerung genutzt.
  • 8 ist ein Übersichts-Ablaufplan, der einen Quellencodierer zeigt, der einen gemultiplexten Bitstrom erzeugt, der zum parallelen Decodieren an einen Symboldecodierer übertragen wird. Die Verarbeitung beginnt bei 800, woraufhin der Prozess im Schritt 810 eine Anzahl (n) von Symbolteilströmen ermittelt, um einen ursprünglichen Bitstrom zu demultiplexen (z.B. n=2). Im Schritt 820 ermittelt der Prozess das erste Symbol in einem ursprünglichen Bitstrom 310 und lädt das erste Symbol in den ersten Symbolteilstrom (z.B., Symbolteilstrom 325).
  • Anschließend ermittelt der Prozess, ob sich weitere Symbole im ursprünglichen Symbolstrom 310 befinden (Entscheidung 830). Wenn sich weitere Symbole im ursprünglichen Symbolstrom 310 befinden, verzweigt die Entscheidung 830 zum ,Ja‘-Zweig, der in einer Schleife zurückkehrt, um das nächste Symbol zu ermitteln und das nächste Symbol in den nächsten Symbolteilstrom 330 zu laden. Diese Schleifenverarbeitung wird fortgesetzt, um Symbole auf sequenzielle Weise aus dem ursprünglichen Bitstrom 310 in den entsprechenden Symbolteilstrom zu laden (z.B., 325, 330, 325, 330...), bis sich keine weitere Symbole mehr im ursprünglichen Symbolstrom 310 befinden, wobei die Entscheidung 830 an diesem Punkt zum ,Nein‘-Zweig verzweigt, woraufhin die Schleife verlassen wird.
  • Beim vordefinierten Prozess 840 partitioniert der Prozess die Symbolteilströme für jeden der Symbolteilströme in Datenblöcke mit fester Bitbreite und lädt die Datenblöcke mit fester Bitbreite in ihre entsprechenden Bitströme 337 und 342. Wie hierin erläutert, erzeugt der Prozess außerdem Pull-Zeitsteuerungsinformationen, die Positionen der Symbole in Bezug auf Grenzen der Datenblöcke mit fester Bitbreite entsprechen (Einzelheiten der Verarbeitung siehe 9 und entsprechenden Text).
  • Beim vordefinierten Prozess 850 kombiniert der Prozess die Datenblöcke mit fester Bitbreite aus den mehreren Bitströmen zu einem gemultiplexten Bitstrom auf der Grundlage der Pull-Zeitsteuerungsinformationen (Verarbeitungsdetails siehe 10 und entsprechenden Text). Anschließend überträgt der Prozess den gemultiplexten Bitstrom im Schritt 860 an den Symboldecodierer 360, und die Verarbeitung von 8 endet bei 870. Der Symboldecodierer 360 führt wiederum paralleles Decodieren des gemultiplexten Bitstroms 335 aus (weitere Einzelheiten siehe 11, 12 und entsprechenden Text).
  • 9 ist ein Ablaufplan, der Schritte zeigt, die von einem Stromumwandlungsprozess ausgeführt werden, um einen Symbolteilstrom in einen Bitstrom mit Datenblöcken mit fester Bitbreite umzuwandeln und eine Pull-Zeitsteuerung entsprechend den Datenblöcken mit fester Bitbreite zu erzeugen. Das in 9 gezeigte Beispiel zeigt Schritte, die vom Stromwandler A 335 beim Verarbeiten des Symbolteilstroms A 325 ausgeführt werden. Wie hierin erläutert, beruht die Anzahl von Stromwandlern zum Umwandeln der mehreren Symbolteilströme auf der Anzahl von Symbolteilströmen, die vom Demultiplexer 320 erzeugt werden, und jeder der Stromwandler führt die in 9 gezeigten Schritte aus. In einer Ausführungsform kann der Symbolcodierer 300 während des Umwandlungsprozesses weniger Stromwandler als Symbolteilströme verwenden, beispielsweise einen Stromwandler zum Umwandeln mehrerer Symbolteilströme.
  • Die Verarbeitung beginnt bei 900, woraufhin der Prozess im Schritt 910 den Symbolteilstrom A 320 in Datenblöcke mit fester Bitbreite partitioniert, beispielsweise 16 Bit, und die Datenblöcke mit fester Bitbreite in den Bitstrom 337 lädt. In einer Ausführungsform lädt der Prozess die Datenblöcke mit fester Bitbreite in einen temporären Speicherbereich und markiert die Grenzen von jedem der Datenblöcke mit fester Bitbreite. Im Schritt 915 setzt der Prozess einen Zeiger auf den Anfang des Bitstroms, und im Schritt 920 bewegt der Prozess den Zeiger an das Ende des ersten Symbols.
  • Anschließend ermittelt der Prozess, ob der Zeiger eine feste Bitbreitengrenze überschritten hat wie etwa eine in 6 gezeigte Grenze 615 (Entscheidung 930). Der Prozess führt diesen Schritt des Ermittelns aus, da der Decodierer mit fester Breite im Zielsystem einen weiteren Datenblock mit fester Bitbreite von der Bitstrom-Partitionierungseinrichtung 365 anfordert, wenn ein Symbol eine Puffergrenze überschreitet, das die gleiche Größe hat wie der Datenblock mit fester Bitbreite.
  • Wenn der Zeiger eine Grenze überschritten hat, verzweigt die Entscheidung 930 zum ,Ja‘-Zweig, woraufhin der Prozess im Schritt 950 eine „1“ im ersten Slot der Pull-Zeitsteuerung A 339 speichert. Wenn der Zeiger dagegen keine feste Bitbreitengrenze überschritten hat, verzweigt die Entscheidung 930 zum ,Nein‘-Zweig, woraufhin der Prozess im Schritt 940 eine „0“ im ersten Slot der Pull-Zeitsteuerung A 339 speichert. Unter erneuter Bezugnahme auf 6 zeigt das Beispiel in 6, dass das Ende des ersten Symbols „S1“ die Grenze 610 nicht überschreitet.
  • Der Prozess ermittelt, ob weitere Symbole im Bitstrom A 337 verarbeitet werden müssen (Entscheidung 960). Wenn weitere Symbole im Bitstrom A 337 verarbeitet werden müssen, verzweigt die Entscheidung 960 zum ,Ja‘-Zweig, der in einer Schleife zurückkehrt, um den Zeiger an das Ende des nächsten Symbols zu verschieben und zu ermitteln, ob der Zeiger eine Grenze überschritten hat. Unter Bezugnahme auf 6 verschiebt der Prozess den Zeiger an das Ende des Symbols „S3“, das die Grenze 610 überschreitet. Diese Schleifenverarbeitung wird fortgesetzt, bis keine weiteren Symbole mehr im Bitstrom A 337 zu verarbeiten sind, wobei die Entscheidung 960 an diesem Punkt zum ,Nein‘-Zweig verzweigt, wodurch die Schleife verlassen wird. In einer Ausführungsform können an diesem Punkt Symbole vorhanden sein, die nicht ausgegeben wurden, da ihr Ende den Zeiger nicht über eine feste Bitbreitengrenze verschoben hat. In dieser Ausführungsform kann die Verarbeitung einen weiteren Block mit fester Breite ausgeben, der diese Symbole enthält.
  • Im Schritt 970 überträgt der Prozess den Bitstrom A 337 (der die Datenblöcke mit fester Bitbreite enthält) und die Pull-Zeitsteuerung A 339 an den Multiplexer 350 mit fester Breite. Wie in 10 gezeigt wird, kombiniert der Multiplexer mit fester Breite die mehreren Bitströme von den mehreren Stromwandlern auf der Grundlage ihrer jeweiligen Pull-Zeitsteuerung. Anschließend kehrt die Verarbeitung von 9 bei 995 zurück zur aufrufenden Routine (siehe 8).
  • 10 ist ein Ablaufplan, der Schritte zeigt, die von einem Multiplexer mit fester Breite ausgeführt werden, um Datenblöcke mit fester Bitbreite aus mehreren Bitströmen auf der Grundlage von Pull-Zeitsteuerungsinformationen in einen gemultiplexten Bitstrom zu kombinieren. Die Verarbeitung beginnt bei 1000, woraufhin der Prozess im Schritt 1010 erste Datenblöcke aus dem Bitstrom 337, dann aus dem Bitstrom 342, dann aus dem Bitstrom 337 und dann aus dem Bitstrom 342 in den gemultiplexten Bitstrom 335 lädt. Die Verarbeitung führt das anfängliche Laden auf diese Weise aus, um nachzuahmen, wie die Decodierer A 370 und B 375 mit fester Breite des Ziels ein anfängliches Laden durchführen werden (weitere Einzelheiten siehe 12 und entsprechenden Text).
  • Der Prozess ermittelt, ob der erste Slot in der Pull-Zeitsteuerung A 339 eine „1“ enthält, wodurch angezeigt wird, dass eines der Symbole des Bitstroms A 337 eine Grenze überschritten hat und der Decodierer A 370 mit fester Breite des Zielsystems folglich einen weiteren Datenblock mit fester Bitbreite anfordern wird (Entscheidung 1020). Wenn der erste Slot in der Pull-Zeitsteuerung A 339 eine „1“ enthält, verzweigt die Entscheidung 1020 zum ,Ja'-Zweig, woraufhin der Prozess im Schritt 1030 den nächsten Datenblock mit fester Bitbreite aus dem Bitstrom A 337 lädt. Enthält der erste Slot in der Pull-Zeitsteuerung A 339 dagegen keine „1“, verzweigt die Entscheidung 1020 zum ,Nein‘-Zweig.
  • Anschließend ermittelt der Prozess, ob der erste Slot in der Pull-Zeitsteuerung B 344 eine „1“ enthält, wodurch angezeigt wird, dass eines der Symbole des Bitstroms B 342 eine Grenze überschritten hat und der Decodierer B 375 mit fester Breite des Zielsystems folglich einen weiteren Datenblock mit fester Bitbreite anfordern wird (Entscheidung 1040). Wenn der erste Slot in der Pull-Zeitsteuerung B 344 eine „1“ enthält, verzweigt die Entscheidung 1040 zum ,Ja‘-Zweig, woraufhin der Prozess im Schritt 1050 den nächsten Datenblock mit fester Bitbreite aus dem Bitstrom B 342 lädt. Enthält der erste Slot in der Pull-Zeitsteuerung B 344 dagegen keine „1“, verzweigt die Entscheidung 1040 zum ,Nein‘-Zweig.
  • Der Prozess ermittelt sodann, ob das Ende der Bitströme erreicht ist (Entscheidung 1060). Wenn das Ende der Bitströme nicht erreicht ist, verzweigt die Entscheidung 1060 zum ,Nein‘-Zweig, der in einer Schleife zurückkehrt, um das Verarbeiten der Bitströme fortzusetzen. Diese Schleifenverarbeitung wird bis zum Ende der Bitströme fortgesetzt, wobei die Entscheidung 1060 an diesem Punkt zum ,Ja‘-Zweig verzweigt, wodurch die Schleife verlassen wird. In einer Ausführungsform werden bei der Verarbeitung an dieser Stelle ein oder mehrere „Dummy“-Blöcke in den gemultiplexten Bitstrom 355 geladen. Anschließend kehrt die Verarbeitung von 10 bei 1095 zurück zur aufrufenden Routine (siehe 8).
  • 11 ist ein Ablaufplan, der Schritte zeigt, die von einem Zielsystem ausführt werden, um paralleles Decodieren eines eingehenden gemultiplexten Bitstroms auszuführen. Unter Bezugnahme auf 3 enthält der Symboldecodierer 360 den Decodierer A 370 mit fester Breite und den Decodierer B 375 mit fester Breite, die gleichzeitig Symbole decodieren, die im gemultiplexten Bitstrom 355 enthalten sind. Wie zuvor erläutert, partitioniert die Bitstrom-Partitionierungseinrichtung 365 einen gemultiplexten Bitstrom 355 in Datenblöcke mit fester Bitbreite und stellt die Datenblöcke mit fester Bitbreite bereit, wenn sie vom Decodierer A 370 mit fester Breite und vom Decodierer B 375 mit fester Breite angefordert werden.
  • Die Verarbeitung eines Decodierers A 110 mit fester Breite beginnt bei 1100, woraufhin der Decodierer A 370 mit fester Breite im Schritt 1105 einen ersten Datenblock mit fester Bitbreite von der Bitstrom-Partitionierungseinrichtung 365 anfordert und den Datenblock mit fester Bitbreite in seinen ersten Puffer lädt (weitere Einzelheiten siehe 12 und entsprechenden Text). Die Verarbeitung des Decodierers B 375 mit fester Breite beginnt gleichzeitig bei 1150, wobei der Decodierer B 375 mit fester Breite im Schritt 1155 den nächsten Datenblock (zweiten Block) mit fester Bitbreite von der Bitstrom-Partitionierungseinrichtung 365 anfordert und den zweiten Datenblock mit fester Bitbreite in seinen ersten Puffer lädt.
  • Im Schritt 1110 fordert der Decodierer A 370 mit fester Breite den nächsten Datenblock (dritten Block) mit fester Bitbreite an und lädt diesen in seinen zweiten Puffer. Ebenso fordert der Decodierer B 375 mit fester Breite im Schritt 1160 den nächsten Datenblock (vierten Block) mit fester Bitbreite an und lädt diesen in seinen zweiten Puffer. Zu diesem Zeitpunkt sind die Puffer sowohl des Decodierers A 370 mit fester Breite als auch des Decodierers B 373 mit fester Breite voll.
  • Im Schritt 1115 setzt der Decodierer A 370 mit fester Breite seinen Zeiger auf den Anfang seines ersten Puffers, und im Schritt 1120 decodiert der Decodierer A 370 mit fester Breite das erste Symbol und lädt das decodierte Symbol in einen decodierten Symbolstrom A 380 und verschiebt den Zeiger auf den Anfang des nächsten Symbols. Der Decodierer A 370 mit fester Breite ermittelt, ob der Zeiger die Grenze des ersten Puffers überschritten und den zweiten Puffer erreicht hat, wodurch angezeigt wird, dass ein weiterer Datenblock mit fester Bitbreite von der Bitstrom-Partitionierungseinrichtung 365 angefordert werden muss (Entscheidung 1125). Wenn der Zeiger die Grenze des ersten Puffers nicht überschritten hat, verzweigt die Entscheidung 1125 zum ,Nein‘-Zweig, der in einer Schleife zurückkehrt, um das nächste Symbol zu verarbeiten und den Zeiger zu verschieben. Diese Schleifenverarbeitung wird fortgesetzt, bis der Zeiger die Grenze des ersten Puffers überschreitet, wobei die Entscheidung 1125 an dieser Stelle zum ,Ja‘-Zweig verzweigt, wodurch die Schleife verlassen wird.
  • Der Decodierer A 370 mit fester Breite ermittelt, ob die Bitstrom-Partitionierungseinrichtung 365 weitere Datenblöcke mit fester Bitbreite enthält (Entscheidung 1130). Wenn die Bitstrom-Partitionierungseinrichtung 365 weitere Datenblöcke mit fester Bitbreite enthält, verzweigt die Entscheidung 1130 zum ,Ja‘-Zweig, der in einer Schleife zurückkehrt, um den Inhalt des zweiten Puffers in den ersten Puffer zu verschieben (Schritt 1135) und einen weiteren Datenblock mit fester Bitbreite von der Bitstrom-Partitionierungseinrichtung 365 anzufordern und diesen in seinen zweiten Puffer zu laden (Schritt 1140). Diese Schleifenverarbeitung wird fortgesetzt, bis keine weiteren Datenblöcke mit fester Bitbreite mehr zu verarbeiten sind, wobei die Entscheidung 1130 an dieser Stelle zum ,Nein‘-Zweig verzweigt, wodurch die Schleife verlassen wird, und anschließend endet die Verarbeitung des Decodierers A 370 mit fester Breite bei 1145.
  • Der Decodierer A 370 mit fester Breite ermittelt, ob weitere Symbole in seinen Puffern vorhanden sind, die decodiert werden müssen (Entscheidung 1142). Wenn weitere zu decodierende Symbole in seinen Puffern vorhanden sind, verzweigt die Entscheidung 1142 zum ,Ja‘-Zweig, der in einer Schleife zurückkehrt, um das nächste Symbol zu decodieren. Diese Schleifenverarbeitung wird fortgesetzt, bis keine Symbole mehr in seinen Puffern vorhanden sind, die decodiert werden müssen, wobei die Entscheidung 1142 an dieser Stelle zum ,Nein‘-Zweig verzweigt, wodurch die Schleife verlassen wird, und die Verarbeitung des Decodierers A 370 mit fester Breite endet bei 1145.
  • Der Decodierer B 375 mit fester Breite führt gleichzeitig ähnliche Schritte wie der Decodierer A 370 mit fester Breite aus. Im Schritt 1165 setzt der Decodierer B 375 mit fester Breite seinen Zeiger auf den Anfang seines ersten Puffers, und im Schritt 1170 decodiert der Decodierer B 375 mit fester Breite das erste Symbol und lädt das decodierte Symbol in einen decodierten Symbolstrom B 385 und verschiebt den Zeiger auf das nächste Symbol. Der Decodierer B 375 mit fester Breite ermittelt, ob der Zeiger die Grenze des ersten Puffers überschreitet und den zweiten Puffer erreicht, wodurch angezeigt wird, dass ein weiterer Datenblock mit fester Bitbreite von der Bitstrom-Partitionierungseinrichtung 365 angefordert werden muss (Entscheidung 1175). Wenn der Zeiger die Grenze des ersten Puffers nicht überschritten hat, verzweigt die Entscheidung 1175 zum ,Nein‘-Zweig, der in einer Schleife zurückkehrt, um das nächste Symbol zu verarbeiten und den Zeiger zu verschieben. Diese Schleifenverarbeitung wird fortgesetzt, bis der Zeiger die Grenze des ersten Puffers überschreitet, wobei die Entscheidung 1175 an dieser Stelle zum ,Ja‘-Zweig verzweigt, wodurch die Schleife verlassen wird.
  • Der Decodierer B 375 mit fester Breite ermittelt, ob die Bitstrom-Partitionierungseinrichtung 365 weitere Datenblöcke mit fester Bitbreite enthält (Entscheidung 1180). Wenn die Bitstrom-Partitionierungseinrichtung 365 weitere Datenblöcke mit fester Bitbreite enthält, verzweigt die Entscheidung 1180 zum ,Ja‘-Zweig, der in einer Schleife zurückkehrt, um den Inhalt des zweiten Puffers in den ersten Puffer zu verschieben (Schritt 1185) und einen weiteren Datenblock mit fester Bitbreite von der Bitstrom-Partitionierungseinrichtung 365 anzufordern und diesen in seinen zweiten Puffer zu laden (Schritt 1190). Diese Schleifenverarbeitung wird fortgesetzt, bis keine weiteren Datenblöcke mit fester Bitbreite mehr zu verarbeiten sind, wobei die Entscheidung 1180 an dieser Stelle zum ,Nein‘-Zweig verzweigt, wodurch die Schleife verlassen wird.
  • Der Decodierer B 375 mit fester Breite ermittelt, ob weitere Symbole in seinen Puffern vorhanden sind, die decodiert werden müssen (Entscheidung 1192). Wenn weitere zu decodierende Symbole in seinen Puffern vorhanden sind, verzweigt die Entscheidung 1192 zum ,Ja‘-Zweig, der in einer Schleife zurückkehrt, um das nächste Symbol zu decodieren. Diese Schleifenverarbeitung wird fortgesetzt, bis keine Symbole mehr in seinen Puffern vorhanden sind, die decodiert werden müssen, wobei die Entscheidung 1192 an dieser Stelle zum ,Nein‘-Zweig verzweigt, wodurch die Schleife verlassen wird, und die Verarbeitung des Decodierers B 375 mit fester Breite endet bei 1195.
  • 12 ist eine Darstellung, die ein Beispiel von mehreren Decodierern mit fester Breite zeigt, die mit einer Bitstrom-Partitionierungseinrichtung verbunden sind, um Datenblöcke mit fester Bitbreite anzufordern und zu verarbeiten.
  • Der Decodierer A 370 mit fester Breite enthält einen ersten Puffer 1200 und einen zweiten Puffer 1210. Entsprechend enthält der Decodierer B 375 mit fester Breite einen ersten Puffer 1220 und einen zweiten Puffer 1230. Die Größe der Puffer entspricht der Größe der Datenblöcke mit fester Bitbreite, die vom Symbolcodierer 300 partitioniert wurden (z.B. jeweils 16 Bit). Die Bitstrom-Partitionierungseinrichtung 365 empfängt den gemultiplexten Bitstrom 355 und partitioniert den gemultiplexten Bitstrom 355 in Datenblöcke mit fester Bitbreite. Unter Bezugnahme auf 5 handelt es sich bei den Datenblöcken mit fester Bitbreite um A1, B1, A2, B2, A3, B3, B4, B5, A4, A5 und B6.
  • Der Decodierer A 370 mit fester Breite und der Decodierer B 375 mit fester Breite fordern Datenblöcke mit fester Bitbreite von der Bitstrom-Partitionierungseinrichtung 365 im Umlaufverfahren an, um ihre entsprechenden Puffer erstmals zu laden. So empfängt der Decodierer A 370 den Datenblock A1 und lädt ihn in seinen ersten Puffer 1200. Der Decodierer B 375 mit fester Breite empfängt sodann den Datenblock B1 und lädt ihn in seinen ersten Puffer 1220. Als Nächstes empfängt der Decodierer A 370 mit fester Breite den Block A2 und lädt ihn in seinen zweiten Puffer 1210. Anschließend empfängt der Decodierer B 375 den Block B2 und lädt ihn in seinen zweiten Puffer 1230.
  • An dieser Stelle sind beide Decodierer bereit, mit dem Decodieren der Symbole mit variabler Länge zu beginnen. Wie hierin erläutert, fordern die Decodierer zusätzliche Datenblöcke mit fester Bitbreite von der Bitstrom-Partitionierungseinrichtung 365 an, wenn sie ein Symbol decodieren, das die Grenze zwischen ihrem ersten Puffer und ihrem zweiten Puffer überschreitet. Wenn dies geschieht, verschieben die Decodierer den Inhalt aus ihrem zweiten Puffer in ihren ersten Puffer und laden den neu empfangenen Datenblock mit fester Bitbreite in ihren zweiten Puffer.
  • In Bezug auf das in 12 gezeigte Beispiel decodiert der Decodierer A 370 mit fester Breite das Symbol S1 und parallel dazu decodiert der Decodierer B 375 mit fester Breite das Symbol S2. Zu diesem Zeitpunkt fordert keiner der Decodierer einen weiteren Datenblock mit fester Bitbreite an, da die Symbole S1 und S2 die Grenze des ersten Puffers nicht überschritten haben. Der Decodierer A 370 mit fester Breite decodiert sodann das Symbol S3, und parallel dazu decodiert der Decodierer B 375 mit fester Breite das Symbol S4. Der Decodierer A 370 mit fester Breite fordert einen Datenblock mit fester Bitbreite von der Bitstrom-Partitionierungseinrichtung 365 an, da das Symbol S3 die Grenze des ersten Puffers 1200 überschritten hat, und der Decodierer B 375 fordert ebenfalls einen Datenblock mit fester Bitbreite von der Bitstrom-Partitionierungseinrichtung 365 an, da das Symbol S4 die Grenze des ersten Puffers 1220 überschritten hat. Die Ausgangssignale beider Decodierer werden dem Kombinierer 390 zugeführt und in den decodierten Symbolstrom 395 kombiniert, wie in 3 gezeigt wird.
  • Zwar wurden bestimmte Ausführungsformen der vorliegenden Offenbarung gezeigt und beschrieben, für Fachleute ist es jedoch aufgrund der Lehre hierin offensichtlich, dass Änderungen und Modifikationen vorgenommen werden können, ohne von dieser Offenbarung und ihren weiterreichenden Aspekten abzuweichen. Daher sollen die angehängten Ansprüche in ihrem Schutzumfang alle derartigen Änderungen und Modifikationen umfassen, die innerhalb des wahren Gedankens und Schutzumfangs dieser Offenbarung liegen. Außerdem muss verstanden werden, dass die Offenbarung ausschließlich durch die angehängten Ansprüche definiert wird. Fachleute werden verstehen, dass, wenn eine spezifische Ziffer eines eingeführten Anspruchselements gemeint ist, eine solche Absicht ausdrücklich in dem Anspruch angegeben wird, und in Abwesenheit einer solchen Bezeichnung keine derartige Einschränkung vorliegt. Als ein nicht einschränkendes Beispiel, als Hilfestellung zum Verständnis, enthalten die folgenden angehängten Ansprüche die Verwendung der einleitenden Formulierungen „mindestens ein(e)“ und „ein(e) oder mehrere“ zum Einführen von Anspruchselementen. Die Verwendung solcher Formulierungen sollte jedoch nicht so ausgelegt werden, dass sie implizieren, dass die Einführung eines Anspruchselements durch die unbestimmten Artikel „ein“ oder „eine“ einen bestimmten Anspruch, der ein solches eingeführtes Anspruchselement enthält, auf Offenbarungen beschränkt, die lediglich ein derartiges Element enthalten, selbst wenn derselbe Anspruch die einleitenden Formulierungen „ein(e) oder mehrere“ oder „mindestens ein(e)“ und unbestimmte Artikel wie „ein“ oder „eine“ enthält; das Gleiche gilt für die Verwendung von bestimmten Artikeln in den Ansprüchen.

Claims (25)

  1. Verfahren, das von einem Informationsverarbeitungssystem implementiert wird, wobei das Verfahren aufweist: Partitionieren von jedem aus einer Mehrzahl von Symbolsätzen in eine Mehrzahl von Datenblöcken mit fester Breite, Erzeugen von Symbolgrenzinformationen, die Positionen von einem oder mehreren aus einer Mehrzahl von Symbolen, die in der Mehrzahl von Symbolsätzen enthalten sind, in Bezug auf eine oder mehrere Grenzen entsprechen, die der Mehrzahl von Datenblöcken mit fester Breite entsprechen; Kombinieren der Mehrzahl von Datenblöcken mit fester Breite zu einem gemultiplexten Bitstrom auf der Grundlage der Symbolgrenzinformationen; und Bereitstellen des gemultiplexten Bitstroms einem Zielsystem.
  2. Verfahren nach Anspruch 1, das außerdem aufweist: vor dem Partitionieren Aufteilen eines Symbolstroms in eine Mehrzahl von Symbolteilströmen, wobei das Partitionieren mit jedem aus der Mehrzahl von Symbolteilströmen einzeln ausgeführt wird, und wobei die Mehrzahl von Symbolen einer Mehrzahl von verschiedenen Symbollängen entspricht; und Festlegen einer festen Größe des Datenblocks mit fester Breite auf der Grundlage einer größten aus der Mehrzahl von verschiedenen Symbollängen.
  3. Verfahren nach Anspruch 2, wobei das Verfahren für einen ausgewählten aus der Mehrzahl von Symbolteilströmen außerdem aufweist: Auswählen von einem aus der Mehrzahl von Symbolen, das einem ausgewählten der ein oder mehreren Datenblöcke mit fester Breite entspricht; Ermitteln, ob das ausgewählte Symbol eine ausgewählte der ein oder mehreren Grenzen überschreitet, die dem ausgewählten Datenblock mit fester Breite entsprechen; Speichern eines ersten Anzeigers im ausgewählten Slot der Symbolgrenzinformationen in Reaktion auf ein Feststellen, dass das ausgewählte Symbol die ausgewählte Grenze überschreitet; und Speichern eines zweiten Anzeigers in einem ausgewählten Slot der Symbolgrenzinformationen in Reaktion auf ein Feststellen, dass das ausgewählte Symbol die ausgewählte Grenze nicht überschreitet.
  4. Verfahren nach Anspruch 3, wobei das Kombinieren außerdem aufweist: Ausführen eines ersten Ladevorgangs, der einen Teil aus der Mehrzahl von Datenblöcken mit fester Breite in einer Reihenfolge, die auf jedem aus der Mehrzahl von Symbolteilströmen beruht, in den gemultiplexten Bitstrom lädt; im Anschluss an den ersten Ladevorgang Ermitteln, ob der ausgewählte Slot den ersten Anzeiger enthält; und in Reaktion auf ein Feststellen, dass der ausgewählte Slot den ersten Anzeiger enthält, Laden eines ausgewählten Datenblocks mit fester Breite, der dem ausgewählten Symbolteilstrom entspricht, in den gemultiplexten Bitstrom.
  5. Verfahren nach Anspruch 2, wobei das Verfahren vor dem Partitionieren außerdem aufweist: Codieren eines nichtkomprimierten Bytestroms in die Mehrzahl von Symbolen; und Aufnehmen der Mehrzahl von Symbolen in den Symbolstrom.
  6. Informationsverarbeitungssystem, das aufweist: einen oder mehrere Prozessoren; einen Speicher, der mit mindestens einem der Prozessoren verbunden ist; einen Satz von Computerprogrammanweisungen, die im Speicher gespeichert sind und von mindestens einem der Prozessoren ausgeführt werden, um folgende Vorgänge auszuführen: Partitionieren von jedem aus einer Mehrzahl von Symbolsätzen in eine Mehrzahl von Datenblöcken mit fester Breite, Erzeugen von Symbolgrenzinformationen, die Positionen von einem oder mehreren aus der Mehrzahl von Symbolen, die in der Mehrzahl von Symbolsätzen enthalten sind, in Bezug auf eine oder mehrere Grenzen entsprechen, die der Mehrzahl von Datenblöcken mit fester Breite entsprechen; Kombinieren der Mehrzahl von Datenblöcken mit fester Breite in einen gemultiplexten Bitstrom auf der Grundlage der Symbolgrenzinformationen; und Bereitstellen des gemultiplexten Bitstroms dem Zielsystem.
  7. Informationsverarbeitungssystem nach Anspruch 6, wobei die Prozessoren zusätzliche Vorgänge ausführen, wobei die Vorgänge aufweisen: vor dem Partitionieren Aufteilen eines Symbolstroms in eine Mehrzahl von Symbolteilströmen, wobei das Partitionieren mit jedem aus der Mehrzahl von Symbolteilströmen einzeln ausgeführt wird, und wobei die Mehrzahl von Symbolen einer Mehrzahl von verschiedenen Symbollängen entspricht; und Festlegen einer festen Größe des Datenblocks mit fester Breite auf der Grundlage von einer größten aus der Mehrzahl von verschiedenen Symbollängen.
  8. Informationsverarbeitungssystem nach Anspruch 7, wobei die Prozessoren für einen ausgewählten aus der Mehrzahl von Symbolteilströmen zusätzliche Vorgänge ausführen, wobei die Vorgänge aufweisen: Auswählen von einem aus der Mehrzahl von Symbolen, das einem der ein oder mehreren Datenblöcke mit fester Breite entspricht; Ermitteln, ob das ausgewählte Symbol eine der ein oder mehreren Grenzen überschreitet, die dem ausgewählten Datenblock mit fester Breite entsprechen; Speichern eines ersten Anzeigers im ausgewählten Slot der Symbolgrenzinformationen in Reaktion auf ein Feststellen, dass das ausgewählte Symbol die ausgewählte Grenze überschreitet; und Speichern eines zweiten Anzeigers in einem ausgewählten Slot der Symbolgrenzinformationen in Reaktion auf ein Feststellen, dass das ausgewählte Symbol die ausgewählte Grenze nicht überschreitet.
  9. Informationsverarbeitungssystem nach Anspruch 8, wobei die Prozessoren zusätzliche Vorgänge ausführen, wobei die Vorgänge aufweisen: Ausführen eines ersten Ladevorgangs, der einen Teil der Mehrzahl von Datenblöcken mit fester Breite in einer Reihenfolge, die auf jedem aus der Mehrzahl von Symbolteilströmen beruht, in den gemultiplexten Bitstrom lädt; im Anschluss an den ersten Ladevorgang Ermitteln, ob der ausgewählte Slot den ersten Anzeiger enthält; und in Reaktion auf ein Feststellen, dass der ausgewählte Slot den ersten Anzeiger enthält, Laden eines ausgewählten Datenblocks mit fester Breite, der dem ausgewählten Symbolteilstrom entspricht, in den gemultiplexten Bitstrom.
  10. Informationsverarbeitungssystem nach Anspruch 7, wobei die Prozessoren vor dem Partitionieren zusätzliche Vorgänge ausführen, wobei die Vorgänge aufweisen: Codieren eines nichtkomprimierten Bytestroms in die Mehrzahl von Symbolen; und Aufnehmen der Mehrzahl von Symbolen in den Symbolstrom.
  11. In einem durch einen Computer lesbaren Speichermedium gespeichertes Computerprogrammprodukt, das einen Computerprogrammcode aufweist, der beim Ausführen durch ein Informationsverarbeitungssystem das Informationsverarbeitungssystem veranlasst, Vorgänge auszuführen, wobei die Vorgänge aufweisen: Partitionieren von jedem aus einer Mehrzahl von Symbolsätzen in eine Mehrzahl von Datenblöcken mit fester Breite, Erzeugen von Symbolgrenzinformationen, die Positionen von einem oder mehreren aus einer Mehrzahl von Symbolen, die in der Mehrzahl von Symbolsätzen enthalten sind, in Bezug auf eine oder mehrere Grenzen entsprechen, die der Mehrzahl von Datenblöcken mit fester Breite entsprechen; Kombinieren der Mehrzahl von Datenblöcken mit fester Breite in einen gemultiplexten Bitstrom auf der Grundlage der Symbolgrenzinformationen; und Bereitstellen des gemultiplexten Bitstroms einem Zielsystem.
  12. Computerprogrammprodukt nach Anspruch 11, wobei das Informationsverarbeitungssystem weitere Vorgänge ausführt, die aufweisen: vor dem Partitionieren Aufteilen eines Symbolstroms in eine Mehrzahl von Symbolteilströmen, wobei das Partitionieren mit jedem aus der Mehrzahl von Symbolteilströmen einzeln ausgeführt wird und wobei die Mehrzahl von Symbolen einer Mehrzahl von verschiedenen Symbollängen entspricht; und Festlegen einer festen Größe des Datenblocks mit fester Breite auf der Grundlage einer größten aus der Mehrzahl von verschiedenen Symbollängen.
  13. Computerprogrammprodukt nach Anspruch 12, wobei das Informationsverarbeitungssystem für einen ausgewählten aus der Mehrzahl von Symbolteilströmen weitere Vorgänge ausführt, wobei die Vorgänge aufweisen: Auswählen von einem aus der Mehrzahl von Symbolen, das einem ausgewählten der ein oder mehreren Datenblöcke mit fester Breite entspricht; Ermitteln, ob das ausgewählte Symbol eine der ein oder mehreren Grenzen überschreitet, die dem ausgewählten Datenblock mit fester Breite entsprechen; Speichern eines ersten Anzeigers im ausgewählten Slot der Symbolgrenzinformationen in Reaktion auf ein Feststellen, dass das ausgewählte Symbol die ausgewählte Grenze überschreitet; und Speichern eines zweiten Anzeigers in einem ausgewählten Slot der Symbolgrenzinformationen in Reaktion auf ein Feststellen, dass das ausgewählte Symbol die ausgewählte Grenze nicht überschreitet.
  14. Computerprogrammprodukt nach Anspruch 13, wobei das Informationsverarbeitungssystem weitere Vorgänge ausführt, wobei die Vorgänge aufweisen: Ausführen eines ersten Ladevorgangs, der einen Teil der Mehrzahl von Datenblöcken mit fester Breite in einer Reihenfolge, die auf jedem aus der Mehrzahl von Symbolteilströmen beruht, in den gemultiplexten Bitstrom lädt; im Anschluss an den ersten Ladevorgang Ermitteln, ob der ausgewählte Slot den ersten Anzeiger enthält; und in Reaktion auf ein Feststellen, dass der ausgewählte Slot den ersten Anzeiger enthält, Laden eines ausgewählten Datenblocks mit fester Breite, der dem ausgewählten Symbolteilstrom entspricht, in den gemultiplexten Bitstrom.
  15. Computerprogrammprodukt nach Anspruch 12, wobei das Informationsverarbeitungssystem vor dem Partitionieren weitere Vorgänge ausführt, wobei die Vorgänge aufweisen: Codieren eines nichtkomprimierten Bytestroms in die Mehrzahl von Symbolen; und Aufnehmen der Mehrzahl von Symbolen in den Symbolstrom.
  16. Von einem Informationsverarbeitungssystem implementiertes Verfahren, wobei das Verfahren aufweist: Partitionieren eines gemultiplexten Bitstroms in eine Mehrzahl von Datenblöcken mit fester Breite; Decodieren einer Mehrzahl von Symbolen, die in der Mehrzahl von Datenblöcken mit fester Breite enthalten sind, unter Verwendung einer Mehrzahl von Decodierern, woraus sich eine Mehrzahl von decodierten Symbolteilströmen ergibt; Kombinieren der Mehrzahl von decodierten Symbolteilströmen zu einem decodierten Symbolstrom; und Verarbeiten des decodierten Symbolstroms.
  17. Verfahren nach Anspruch 16, wobei jeder aus der Mehrzahl von Decodierern einen ersten Puffer und einen zweiten Puffer enthält, die beide auf einer festen Größe der Mehrzahl von Datenblöcken mit fester Breite beruhen, und wobei die Mehrzahl von Symbolen einer Mehrzahl von verschiedenen Symbollängen entspricht.
  18. Verfahren nach Anspruch 17, wobei das Verfahren unter Verwendung eines ausgewählten aus der Mehrzahl von Decodierern außerdem aufweist: Decodieren eines ausgewählten aus der Mehrzahl von Symbolen, die sich im ersten Puffer befinden; Feststellen, dass das ausgewählte Symbol in den zweiten Puffer hineinreicht; und in Reaktion auf ein Feststellen, dass das ausgewählte Symbol in den zweiten Puffer hineinreicht: Verschieben von Inhalten aus dem zweiten Puffer in den ersten Puffer; und Anfordern eines nachfolgenden Datenblocks mit fester Breite.
  19. Verfahren nach Anspruch 18, das außerdem aufweist: Empfangen des nachfolgenden Datenblocks mit fester Breite; und Laden des nachfolgenden Datenblocks mit fester Breite in den zweiten Puffer.
  20. Verfahren nach Anspruch 16, wobei das Verarbeiten außerdem aufweist: Decodieren des decodierten Symbolstroms, woraus sich ein rekonstruierter Bytestrom ergibt.
  21. Informationsverarbeitungssystem, das aufweist: einen oder mehrere Prozessoren; einen Speicher, der mit mindestens einem der Prozessoren verbunden ist; einen Satz von Computerprogrammanweisungen, die im Speicher gespeichert sind und von mindestens einem der Prozessoren ausgeführt werden, um folgende Vorgänge auszuführen: Partitionieren eines gemultiplexten Bitstroms in eine Mehrzahl von Datenblöcken mit fester Breite; Decodieren einer Mehrzahl von Symbolen, die in der Mehrzahl von Datenblöcken mit fester Breite enthalten sind, unter Verwendung einer Mehrzahl von Decodierern, woraus sich eine Mehrzahl von decodierten Symbolteilströmen ergibt; Kombinieren der Mehrzahl von Symbolteilströmen zu einem decodierten Symbolstrom; und Verarbeiten des decodierten Symbolstroms.
  22. Informationsverarbeitungssystem nach Anspruch 21, wobei jeder aus der Mehrzahl von Decodierern einen ersten Puffer und einen zweiten Puffer enthält, die beide auf einer festen Größe der Mehrzahl von Datenblöcken mit fester Breite beruhen, und wobei die Mehrzahl von Symbolen einer Mehrzahl von verschiedenen Symbollängen entspricht.
  23. Informationsverarbeitungssystem nach Anspruch 22, wobei die Prozessoren unter Verwendung eines ausgewählten aus der Mehrzahl von Decodierern zusätzliche Vorgänge ausführen, wobei die Vorgänge aufweisen: Decodieren eines ausgewählten aus der Mehrzahl von Symbolen, die sich im ersten Puffer befinden; Feststellen, dass das ausgewählte Symbol in den zweiten Puffer hineinreicht; und in Reaktion auf ein Feststellen, dass das ausgewählte Symbol in den zweiten Puffer hineinreicht: Verschieben von Inhalten aus dem zweiten Puffer in den ersten Puffer; und Anfordern eines nachfolgenden Datenblocks mit fester Breite.
  24. Informationsverarbeitungssystem nach Anspruch 23, wobei die Prozessoren zusätzliche Vorgänge ausführen, wobei die Vorgänge aufweisen: Empfangen des nachfolgenden Datenblocks mit fester Breite; und Laden des nachfolgenden Datenblocks mit fester Breite in den zweiten Puffer.
  25. Informationsverarbeitungssystem nach Anspruch 21, wobei die Prozessoren zusätzliche Vorgänge ausführen, wobei die Vorgänge aufweisen: Decodieren des decodierten Symbolstroms, woraus sich ein rekonstruierter Bytestrom ergibt.
DE112017005823.6T 2016-11-18 2017-10-27 Codieren von symbolen variabler länge zum ermöglichen eines parallelen decodierens Pending DE112017005823T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/356,468 US10367604B2 (en) 2016-11-18 2016-11-18 Encoding variable length symbols to enable parallel decoding
US15/356,468 2016-11-18
PCT/IB2017/056682 WO2018091994A1 (en) 2016-11-18 2017-10-27 Encoding variable length symbols to enable parallel decoding

Publications (1)

Publication Number Publication Date
DE112017005823T5 true DE112017005823T5 (de) 2019-08-08

Family

ID=62146204

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017005823.6T Pending DE112017005823T5 (de) 2016-11-18 2017-10-27 Codieren von symbolen variabler länge zum ermöglichen eines parallelen decodierens

Country Status (6)

Country Link
US (2) US10367604B2 (de)
JP (1) JP6970747B2 (de)
CN (1) CN109937537B (de)
DE (1) DE112017005823T5 (de)
GB (1) GB2571666B (de)
WO (1) WO2018091994A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10367604B2 (en) 2016-11-18 2019-07-30 International Business Machines Corporation Encoding variable length symbols to enable parallel decoding
JP2022074807A (ja) * 2020-11-05 2022-05-18 株式会社日立製作所 ファイルストレージ及びコンピュータシステム
US11791838B2 (en) 2021-01-15 2023-10-17 Samsung Electronics Co., Ltd. Near-storage acceleration of dictionary decoding
CN112821987B (zh) * 2021-04-16 2021-08-31 苏州华兴源创科技股份有限公司 信道编码中的数据处理方法、计算机设备及存储介质
JP2023007760A (ja) 2021-07-02 2023-01-19 キオクシア株式会社 圧縮装置及び伸張装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5583500A (en) * 1993-02-10 1996-12-10 Ricoh Corporation Method and apparatus for parallel encoding and decoding of data
US5717394A (en) * 1993-02-10 1998-02-10 Ricoh Company Ltd. Method and apparatus for encoding and decoding data
US5502493A (en) 1994-05-19 1996-03-26 Matsushita Electric Corporation Of America Variable length data decoder for use with MPEG encoded video data
US5491480A (en) 1994-05-25 1996-02-13 Industrial Technology Research Institute Variable length decoder using serial and parallel processing
US5910783A (en) 1997-06-02 1999-06-08 Intel Corporation Pseudo barrel shifting for entropy encoding
US6449394B1 (en) * 1999-07-09 2002-09-10 Sarnoff Corporation Packing variable-length code bits at fixed positions
SE9903191D0 (sv) * 1999-09-08 1999-09-08 Pacesetter Ab Compression and decompression coding scheme and apparatus
TW200929895A (en) * 2007-12-19 2009-07-01 Univ Nat Sun Yat Sen Encode system and decode system of conversion between variable-length code and fixed-length code and method thereof
US8805852B2 (en) 2009-03-02 2014-08-12 International Business Machines Corporation Automatic query execution plan management and performance stabilization for workloads
IL205528A (en) * 2009-05-04 2014-02-27 Storwize Ltd A method and system for compressing logical information objects for storage
US8520958B2 (en) * 2009-12-21 2013-08-27 Stmicroelectronics International N.V. Parallelization of variable length decoding
US8817771B1 (en) * 2010-07-16 2014-08-26 Marvell International Ltd. Method and apparatus for detecting a boundary of a data frame in a communication network
JP5811775B2 (ja) * 2011-11-01 2015-11-11 富士通株式会社 可変長符号化装置及び可変長復号装置
US8824569B2 (en) * 2011-12-07 2014-09-02 International Business Machines Corporation High bandwidth decompression of variable length encoded data streams
CN103248449B (zh) 2012-02-02 2017-11-28 中兴通讯股份有限公司 并行数据的码元定界方法及装置
US8949699B1 (en) 2012-08-29 2015-02-03 Xilinx, Inc. Circuit for forward error correction encoding of data blocks across multiple data lanes
US9100042B2 (en) 2013-06-20 2015-08-04 International Business Machines Corporation High throughput decoding of variable length data symbols
WO2016119162A1 (en) * 2015-01-29 2016-08-04 Panasonic Intellectual Property Corporation Of America Wireless communication method and device
US10367604B2 (en) 2016-11-18 2019-07-30 International Business Machines Corporation Encoding variable length symbols to enable parallel decoding

Also Published As

Publication number Publication date
GB2571666B (en) 2020-02-12
US10367604B2 (en) 2019-07-30
US20180145791A1 (en) 2018-05-24
JP2019536367A (ja) 2019-12-12
GB2571666A (en) 2019-09-04
US10721019B2 (en) 2020-07-21
WO2018091994A1 (en) 2018-05-24
CN109937537A (zh) 2019-06-25
JP6970747B2 (ja) 2021-11-24
CN109937537B (zh) 2023-05-30
GB201908207D0 (en) 2019-07-24
US20190253179A1 (en) 2019-08-15

Similar Documents

Publication Publication Date Title
DE112017005823T5 (de) Codieren von symbolen variabler länge zum ermöglichen eines parallelen decodierens
DE112012004873B4 (de) Hohe Bandbreitendekomprimierung von mit variabler Länge verschlüsselten Datenströmen
DE112017003708T5 (de) Technologien zur hochleistungs-einzelstrom-lz77-kompression querverweis auf verwandte anmeldungen
DE10301362B4 (de) Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
DE69935811T3 (de) Frequenzbereichsaudiodekodierung mit Entropie-code Moduswechsel
DE69736329T2 (de) Verschachtelte verteilte kodierung von spärlich bestückten datensätzen
DE112013006339B4 (de) Kompression hoher Bandbreite um Datenströme zu Verschlüsseln
DE112012005557B4 (de) Erzeugen eines Code-Alphabets von Symbolen zum Erzeugen von Codewörtern für Wörter, die mit einem Programm verwendet werden
DE112008002903T5 (de) Datensequenzkompression
DE112013003376T5 (de) System und Verfahren zum Betrachten von medizinischen Bildern
DE102004030034A1 (de) Anweisungssatzerweiterung mit einem 3-Byte-Escape-Opcode
DE102016125131A1 (de) Effiziente Erzeugung stochastischer Spike-Muster in kernbasierten neuromorphen Systemen
DE102019127726A1 (de) Für fernarbeitsplatz-anwendungen geeignetes streaming individueller anwendungsfenster
DE112015003584T5 (de) Maschinenbefehle zum Umsetzen von einem dezimalen Gleitkommaformat zu einem gepackten Dezimalformat
DE112013000392T5 (de) Volles Ausnutzen von Parallelprozessoren zum Verarbeiten von Daten
EP3624456A1 (de) Verfahren zur kompression und dekompression von bilddaten
DE112018004462T5 (de) Abfrageverarbeitung
DE10129240A1 (de) Verfahren und Vorrichtung zum Verarbeiten von zeitdiskreten Audio-Abtastwerten
DE102021121333A1 (de) Parallele dekomprimierung von komprimierten datenströmen
DE112015003626T5 (de) System und verfahren zum erhöhen der bittiefe von bildern
DE112015003588T5 (de) Maschinenbefehle zum Umsetzen von einem gepackten Dezimalformat zu einem dezimalen Gleitkommaformat
DE112020006010T5 (de) Schulung eines neuronalen netzwerks durch verwenden eines datenflussgraphen und dynamische verwaltung von arbeitsspeicher
DE112016004359T5 (de) Systeme, Verfahren und Vorrichtungen für eine Dekompression unter Verwendung von Hardware und Software
DE60015755T2 (de) Verlustfreie adaptive codierung von daten eines endlichen alphabets
DE112010003445B4 (de) Verfahren und System zur Erkennung der Rahmengrenze eines in der Vorwärtsfehlerkorrekturschicht im Ethernet empfangenen Datenstroms

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence