JP2020141402A - データを圧縮する方法および装置 - Google Patents

データを圧縮する方法および装置 Download PDF

Info

Publication number
JP2020141402A
JP2020141402A JP2020030252A JP2020030252A JP2020141402A JP 2020141402 A JP2020141402 A JP 2020141402A JP 2020030252 A JP2020030252 A JP 2020030252A JP 2020030252 A JP2020030252 A JP 2020030252A JP 2020141402 A JP2020141402 A JP 2020141402A
Authority
JP
Japan
Prior art keywords
data
block
compression technique
exemplary
header
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
JP2020030252A
Other languages
English (en)
Other versions
JP7548706B2 (ja
Inventor
リゴ ヴァレンティナ
Rigo Valentina
リゴ ヴァレンティナ
バーナード デヴィッド
Bernard David
バーナード デヴィッド
マクグリン ピーター
Mcglynn Peter
マクグリン ピーター
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.)
Movidius Ltd Netherland
Original Assignee
Movidius Ltd Netherland
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 Movidius Ltd Netherland filed Critical Movidius Ltd Netherland
Publication of JP2020141402A publication Critical patent/JP2020141402A/ja
Application granted granted Critical
Publication of JP7548706B2 publication Critical patent/JP7548706B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4043Adaptive prefix coding
    • H03M7/4056Coding table selection
    • 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/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • 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
    • 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/6047Power optimization with respect to the encoder, decoder, storage or transmission
    • 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/6064Selection of Compressor
    • H03M7/607Selection between different types of compressors
    • 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/6064Selection of Compressor
    • H03M7/6082Selection strategies
    • H03M7/6088Selection strategies according to the data type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Memory System (AREA)
  • Executing Machine-Instructions (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

【課題】データを圧縮する方法、装置、システムおよび製造物品を提供する。【解決手段】装置は、複数のデータブロックのうちの第1のブロックに対する第1の圧縮技術を、第1のブロックの第1の特性に基づいて選択し、複数のデータブロックのうちの第2のブロックに対する第2の圧縮技術を、第2のブロックの第2の特性に基づいて選択するプロセッサと、第1の圧縮技術を使用して第1のブロックを圧縮して第1の圧縮データブロックを生成する第1の圧縮器と、第2の圧縮技術を使用して第2のブロックを圧縮して第2の圧縮データブロックを生成する第2の圧縮器と、第1の圧縮技術を特定する第1のヘッダおよび第2の圧縮技術を特定する第2のヘッダを生成するヘッダ生成器と、オフチップメモリに記憶される、第1のヘッダを伴う第1の圧縮データブロックおよび第2のヘッダを伴う第2の圧縮データブロックを送信するインターフェースと、を含む。【選択図】図2

Description

この開示は、概してプロセッサに関し、より詳細には、データを圧縮する方法および装置に関する。
近年、プロセッサチップ上に(例えば、オンチップで)実装されるハードウェアベースのニューラルネットワークが、種々のデータ処理システムにおいて人気が高まっている。ニューラルネットワークは、機械学習アルゴリズムが連帯して、大規模および/または複雑なデータを処理するためのフレームワークを提供する。いくつかの例では、ニューラルネットワークは、オンチップのニューラルネットワークの利用可能な容量を増大させるために、オフチップメモリ(例えば、プロセッサチップ外に位置するメモリ)に接続されている。
例示的なデータ圧縮器およびデータ伸長器を含む図のブロック実装である。 図1のデータ圧縮器およびデータ伸長器の例示的な実装のブロック図である。 図1および/または図2の例示的なデータ圧縮器を実装してデータセットを圧縮するために実行され得る例示的な機械読み取り可能命令を表すフローチャートである。 図1および/または図2の例示的なデータ圧縮器を実装してデータセットを圧縮するために実行され得る例示的な機械読み取り可能命令を表すフローチャートである。 図1および/または図2の例示的なデータ伸長器を実行して圧縮データセットを伸長するために実行され得る例示的な機械読み取り可能命令を表すフローチャートである。 図1および/または図2のデータ伸長器によって実行され得る例示的なデータ伸長プロセスを示す。 図1および/または図2の例示的なデータ圧縮器を実装するために、図3〜図4の命令を実行するように構成された例示的な処理プラットフォームのブロック図である。 図1および/または図2の例示的なデータ伸長器を実装するために、図5の命令を実行するように構成された例示的な処理プラットフォームのブロック図である。
図面は縮尺通りではない。一般に、同一または類似の部分を参照するために図面および添付の発明を実施するための形態の全体を通じて、同一の参照番号を使用する。
パーソナルコンピュータおよび/またはモバイルデバイスを含む典型的なコンピューティングシステムは、先進的な画像処理またはコンピュータビジョンアルゴリズムを採用して、人間の視覚が行うことができるタスクを自動化する。コンピュータビジョンタスクには、デジタル画像の取得、処理、分析、および/または理解が含まれる。このようなタスクは、部分的に、デジタル画像から寸法データを抽出し、数値情報および/または記号情報を生成することを容易にする。コンピュータビジョンアルゴリズムは、数値情報および/または記号情報を使用して、意思決定を行い、そうでなければ、とりわけ3次元(3−D)姿勢推定、イベント検出、オブジェクト認識、ビデオトラッキング等に関連する動作を実行する。したがって、拡張現実(AR)、仮想現実(VR)、ロボット工学および/または他の用途をサポートするためには、このようなタスクを迅速に(例えばリアルタイムまたはほぼリアルタイムで)かつ効率的に実行することが重要である。
高度な画像処理またはコンピュータビジョンアルゴリズムは、ハードウェアアクセラレータおよび/または畳み込みニューラルネットワーク(CNNまたはConvNet)を採用することがある。ハードウェアアクセラレータは、汎用中央処理装置(CPU)によって実装されるソフトウェアよりも効率的に機能(例えば、画像の分類、画像のクラスタ化、オブジェクト認識の実行等)を実行するハードウェア構成要素である。CNNは、画像の分類、類似性による画像のクラスタ化(例えば、フォトサーチ)、および/または畳み込みを使用した画像内での物体認識の実行に使用できるディープ人工ニューラルネットワークである。本明細書で使用されるように、畳み込みは、一方の関数の形状が他方の関数の形状によってどのように修飾されるかを表現する積分によって、2つの与えられた関数から導出される関数であると定義される。したがって、CNNは、入力画像内の画像特徴の一致を特定するために、入力画像の画像特徴(例えば、水平線、2次元(2−D)形状等)に対応する1つ以上のフィルタの出力を通すことによって、入力画像に含まれる顔、個人、道路標識、動物等を特定するために使用され得る。
いくつかのハードウェアアクセラレータおよび/またはCNNは制限されたメモリ容量を有する。したがって、プロセッサチップに配置されたこのようなハードウェアアクセラレータおよび/またはCNNは、メモリ(例えば、ダイナミックランダムアクセスメモリ(DRAM)のようなオフチップメモリ)に接続されてもよく、メモリハードウェアアクセラレータおよび/またはCNNの増加したデータ処理パワーをサポートする容量を増加させる。しかし、オフチップメモリからオンチップハードウェアアクセラレータおよび/またはCNNへのデータの転送は、限定された帯域幅に対応するボトルネック効果を生成し、ハードウェアアクセラレータおよび/またはCNNの処理パワーを制限する。いくつかの技術は、オンチップハードウェアアクセラレータおよび/またはCNNに移動される必要があるデータ量を低減する可逆圧縮技術(例えば、ハフマン圧縮)を使用して、オフチップメモリインターフェースの帯域幅要件を低減する。しかし、このような技術は、いくつかのハードウェアアクセラレータおよび/またはCNNが動作する周波数および/または復号器が動作する必要がある周波数とは互換性がない。
本明細書で開示する例は、ハードウェアアクセラレータおよび/またはCNNの周波数と互換性のあるハードウェア伸長実装を可能にしながら、可逆符号化技術によって提供される帯域幅改善を最適化するためのオフチップデータ圧縮技術を含む。本明細書で開示する例は、オフチップメモリに格納されるデータをある数のデータのブロックに分割(例えば、グループ化)し、各ブロックのデータの特性に基づいてブロックごとに圧縮技術(例えば、ランレングス符号化、一部ハフマン符号化、無符号化、および/または任意の他の可逆圧縮技術)を適用することを含む。
たとえば、ブロック内の全てのデータが同じ文字(例えば、全ての「0」、全ての「1」、全ての「a」)に対応する場合、本明細書で開示する実施例はRLE符号化を使用してブロックを圧縮する。RLE符号化は、全てのブロックデータを、元のブロックの文字数の情報を含むブロックの全ての値を表す単一の値に圧縮する可逆データ圧縮である。例えば、ブロックが16文字のデータブロックであり、各文字が「0」に対応する場合、RLE符号化は、データブロックの元のサイズを示す文字(例えば16)を含む16個の「0」の文字を表す単一の文字「0」にサブブロックを圧縮する。
ブロック内のデータが全て同じ文字に対応するわけではない場合、本明細書に開示された実施例は、ハフマン技術(例えば、完全ハフマン技術または一部ハフマン技術)を実施してもよい。ハフマン技術は、可変長符号を入力文字に割り当てる可逆データ圧縮/符号化アルゴリズムであり、符号の長さは、対応する入力文字の周波数に基づいている。従って、ハフマン技術は、不均一な長さコードをもたらす。例えば、ブロックの頻度の高い文字は、ブロックの頻度の低い文字よりも短い長さコードに割り当てられる。従って、ハフマン技術は、繰り返し文字を備えたデータブロックのサイズを低減する。ハフマン符号化を適用するために、データセット内の各文字の出現頻度に基づいてハフマンツリーを生成する。データブロックの各文字は、ハフマンツリーに基づくコードに割り当てられる。ほとんどの場合、ハフマン符号化技術を使用してデータを符号化すると、可逆データ圧縮をもたらす。
一部ハフマン符号化技術は、ハフマン符号化技術をプリセットされた文字数のみに適用し、残りの文字は非符号化のままとする。次いで、各文字は、符号化されたあるいは符号化されていないとしてマークまたはタグ付けされる。このようにして、復号時間は短縮され、ハフマン符号化データを復号するために必要とされるハフマンテーブルのサイズは縮小される。ハフマンテーブルのサイズを縮小すると、符号化データと共に復号器に送信される必要のあるデータ量が低減される。追加的に、ハフマンテーブルを縮小すると、復号速度を増加させるハードウェア解決を容易にする。本明細書に開示された実施例は、概して、一部ハフマン技術に対応する。しかし、完全ハフマン技術を代替的に使用することができる。
追加的に、本明細書に開示された例は、ハフマン符号化データブロックを符号化データサブブロックに分割する。このような符号化データサブブロックは、各サブブロックの末端にプリセットされたコードを追加することによってパディングされ、オンチップ復号器は並列復号のためにサブブロックを分割することができ、それによって計算帯域幅を増加させることができる。いくつかの例では、ブロック内に繰り返し文字がほとんどないか、またはまったくないような場合に、一部ハフマン技術は、含まれるヘッダに対応するオーバーヘッド量のために、データブロックのサイズを縮小しないことがある。従って、本明細書で開示された例は、一部ハフマン技術がデータブロックのサイズを縮小しないブロックについては、いかなる圧縮/符号化技術も実行しない。
本明細書に開示された例を用いて、ユーザは、より高い圧縮比を達成する特定のアプリケーションデータプロファイルに合わせた圧縮スキームを調整することができる。追加的に、本明細書に開示された例は、ハードウェアメモリ制限および速度要件と互換性があるように、ハフマン符号化ルックアップテーブルの要件を低減する。追加的に、本明細書に開示された例は、復号および/または符号並列化を可能にし、それによって高い復号帯域幅に対応する。
図1は、例示的なオフチップ構成要素100および例示的なオンチップ構成要素102のブロック図である。例示的なオフチップ構成要素100は、データ/データセットを記憶する例示的なオフチップメモリ104と、ハードウェアベースの処理のために例示的なオンチップ構成要素102に送信する前に、例示的なオフチップメモリ104に記憶されたデータセットを圧縮するレジ的なデータ圧縮器106とを含む。例示的なオンチップ構成要素102は、圧縮データセットを伸長する例示的なデータ伸長器108と、データセットを処理する例示的なハードウェアアクセラレータ/ニューラルネットワークエンジン110とを含む。図1の例示的なブロック図は、オフチップ構成要素100を含むが、例示的なオフチップメモリ104および/または例示的なデータ圧縮器106は、例示的なオンチップ構成要素102と同じチップに配置されてもよい(例えば、図1の全ての構成要素が同じチップに配置されてもよい)。
図1の例示的なオフチップ構成要素100は、ハードウェアアクセラレータ/ニューラルネットワーク110によって処理されるデータを記憶するオフチップメモリ104(例えば、DRAM)を含む。例示的なオフチップメモリ104は、ハードウェアアクセラレータ/ニューラルネットワーク110によって処理され得る追加データを記憶する追加メモリを提供することによって、例示的なハードウェアアクセラレータ/ニューラルネットワーク110のメモリ容量を増加させる。上述のように、オフチップメモリ104からハードウェアアクセラレータ/ニューラルネットワーク110へ非圧縮データを転送すると、オフチップメモリ104(例えばDRAM)の帯域幅制限によりボトルネックを生成する。従って、例示的なデータ圧縮器106は、オンチップ構成要素102に送信する前に、オフチップメモリ104に記憶され、かつ/あるいは既に記憶されているデータを圧縮して、データのサイズを縮小し、ボトルネックの問題を低減および/または除去する。例示的なデータ圧縮器106は、記憶されたデータをデータのブロックに分割し、ブロックのデータの特性に基づいて3つの圧縮/符号化技術を使用してデータを圧縮する。追加的に、例示的なデータ圧縮器106は、使用される圧縮/符号化技術を特定するブロックのヘッダ(例えば、第1のブロックに対する第1のヘッダ、第2のブロックに対する第2のヘッダ等)を生成し、例示的なデータ伸長器108がブロックを伸長するのに使用することができる情報(例えば、ブロックサイズ、符号化テーブル、サブブロックサイズ等)を提供する。このようにして、例示的なデータ伸長器108が圧縮データを適切に伸長することができる。圧縮されると、例示的なデータ圧縮器106は、例示的なオフチップメモリ104に圧縮データを記憶する。このようにして、オフチップメモリ104は、例示的なハードウェアアクセラレータ/ニューラルネットワーク110によって処理される圧縮データを送信することができる。いくつかの例では、データ圧縮器106は、複数のデータブロックを並列に圧縮する複数のプロセッサを含み、それによって計算帯域幅を増加させる。例示的なデータ圧縮器106は、図2に関連して以下にさらに説明される。
図1の例示的なオンチップ構成要素102は、オフチップ構成要素100とインターフェースで接続して、オフチップメモリ104から圧縮データを受信し、ハードウェアアクセラレータ/ニューラルネットワーク110に送信される前に圧縮データを伸長するデータ伸長器108を含む。いくつかの例では、データ伸長器108はハードウェアアクセラレータである。例示的なデータ伸長器108は、圧縮データを受信し、圧縮データのブロックのヘッダを特定して、圧縮技術を決定する。このようにして、データ伸長器108は、各ブロックのヘッダで特定された圧縮技術に基づいて圧縮されたブロックを伸長する。伸長されると、例示的なデータ伸長器108は、例示的なハードウェアアクセラレータ/ニューラルネットワーク110に伸長データを送信する。例示的なハードウェアアクセラレータ/ニューラルネットワーク110は、ハードウェアアクセラレータ/ニューラルネットワーク110の設定に基づいて伸長データを処理する。例示的なデータ伸長器108は、図2に関連して以下にさらに説明する。
図2は、例示的なデータ圧縮器106の実装例のブロック図と、図1の例示的なデータ伸長器108の実装例のブロック図である。例示的なデータ圧縮器106は、例示的なメモリインターフェース200と、例示的なデータスライサ202と、例示的なデータプロセッサ204と、例示的な圧縮器206と、例示的なヘッダ生成器208と、例示的なパッダ210と、例示的な圧縮データアセンブラ212とを含む。例示的なデータ伸長器108は、例示的なオフチップインターフェース218と、例示的なヘッダプロセッサ220と、例示的なデータスプリッタ221と、例示的な伸長器222と、例示的な伸長データアセンブラ224と、例示的なハードウェアアクセラレータ/ニューラルネットワークインターフェース226とを含む。
図2の例示的なメモリインターフェース200は、圧縮され、例示的なオンチップデータ伸長器108に送信されるデータを図1の例示的なオフチップメモリ104から受信する。データ圧縮器106がデータを圧縮すると、図2の例示的なメモリインターフェース200は、例示的なオフチップメモリ104に圧縮データを送信し、圧縮データが図1のオンチップ構成要素102によって検索され得るようにする。
メモリインターフェース200が例示的なオフチップメモリ104からデータを取得すると、例示的なデータスライサ202は、データをデータブロックに分割(例えばスライス)する。いくつかの例では、データスライサ202がデータを均一な固定サイズブロックに分割する。追加的に、データスライサ202が符号化データ(例えば、一部ハフマン圧縮を使用して符号化されたブロック)を符号化データサブブロックにスライスして、以下にさらに説明するように、例示的なデータ伸長器108の並列伸長処理を可能にしてもよい。いくつかの例では、データスライサ202は、2つのデータスライサを含む。例えば、元のデータをデータブロックに分割する第1のデータスライサと、ハフマン符号化データを符号化データサブブロックに分割する第2のデータスライサとがある。
図2の例示的なデータプロセッサ204は、ブロックのデータの特性に基づいて、データブロックに使用する圧縮技術(例えば、RLE符号化、ハフマン符号化、符号化なし、および/または、任意の他の可逆圧縮技術)を決定(例えば、選択)する1つ以上のデータプロセッサである。例えば、データプロセッサ(複数可)204がブロックを取得する場合に、データプロセッサ204は、ブロックの全てのデータが同じ値および/または文字(例えば、全ての「0」、全て「1」、全て「a」等)に対応するかどうかを決定する。データプロセッサ204が、ブロックのデータは同じ値/文字に対応すると決定した場合、データプロセッサ204は、情報の損失なしにブロックを圧縮するために、RLE符号化技術がブロックに適用され得ると決定する。データプロセッサ204が、ブロックのデータは異なる値/文字に対応すると決定した場合、データプロセッサ204は、(例えば、一部または完全)ハフマン符号化または符号化なしがブロックに適用されるべきであると決定し得る。上述したように、ハフマン符号化技術をいくつかのブロックに適用すると、(例えば、ブロックが繰り返される値/文字をほとんどあるいは全く持たない場合に)より大きなデータ量をもたらすことがある。したがって、いくつかの例において、例示的なデータプロセッサ204がデータブロックを処理して、データブロックの一部ハフマン符号化技術は、より小さなあるいはより大きなデータ量をもたらすかどうかを決定してもよい。このような例において、例示的なデータプロセッサ204が、データブロックの一部ハフマン符号化が、(例えば、確率的モデリングを使用して)符号化なしよりも多くのデータをもたらすと決定した場合、データプロセッサ204は、符号化なしがデータブロックに適用されると決定する。他の例では、圧縮器206は、一部ハフマン符号化をデータに適用し、データプロセッサ204は、結果が、圧縮技術を適用しない場合(例えば、符号化なし)よりも大きいか小さいかを決定する。データプロセッサ204が、結果が圧縮技術を適用しない場合よりも大きいと決定した場合、データプロセッサ204は、ハフマン符号化データを破棄し、それによってデータブロックを非符号化のまま(例えば、非圧縮)にする。データプロセッサ204は、単一のデータプロセッサであってもよく、複数のデータプロセッサあってもよい。例えば、複数のデータプロセッサ204が、データブロックを並列に処理するために利用され得る。
図2の例示的な圧縮器206は、データプロセッサ204によって選択された技術に基づいて、データブロックに対して圧縮技術(例えば、RLE符号化、ハフマン符号化、および/または任意の他の可逆圧縮技術)を実行する。上述のように、データプロセッサ204は、ブロックの全てのデータが同じ値および/または文字(例えば、全ての「0」、全ての「1」、全ての「a」等)に対応する場合に、RLE符号化を選択する。データプロセッサ204がデータブロックに対してRLEを選択する場合に、データプロセッサ204は、ヘッダ生成器208に、ブロックの繰り返し値および/または値の繰り返し数を特定するヘッダまたはデータパケットを生成するように指示する。例えば、ブロックが、各ビットが「1」に対応する8文字ブロックである場合、データプロセッサ204は、ヘッダ生成器208に、8文字の各々が「1」の値に対応し、「1」が8回繰り返されることの表示を特定するヘッダを生成するように指示する。
図2のデータプロセッサ204がハフマン符号化または一部ハフマン符号化を選択する場合に、例示的な圧縮器206はハフマン符号化または一部ハフマン符号化をデータブロックに適用する。上述のように、ハフマン符号化を適用するために、ハフマンツリーがデータセットにおける各文字の出現頻度に基づいて生成される。ブロックのデータの各文字は、ハフマンツリーに基づいて符号に割り当てられる。ほとんどの場合、ハフマン符号化技術を使用してデータを符号化すると、可逆データ圧縮をもたらす。一部ハフマン符号化技術には、ハフマン符号化技術をプリセットされた文字数にだけ適用し、残りの文字は非符号化のままにすることが含まれ、それによって復号時間を短縮し、ハフマン符号化データを復号するのに必要なハフマンテーブルのサイズを縮小する。符号化データ内の文字の前には、その文字が符号化されているかどうかを特定するマーカーが付加される。いくつかの例では、データプロセッサ204は、ヘッダオーバヘッドとデータ圧縮との間のトレードオフを含めたハフマン符号化においてどれをプリセットされた文字にするか、かつ/あるいはいくつプリセットされた文字にするかを決定する。例えば、データプロセッサ204が、一部ハフマン技術は236個の可能な文字のうちの8文字のみに適用され得ると決定してもよい。従って、データプロセッサ204は、最も頻繁に繰り返されるデータのうちの8つの文字を決定し、圧縮器206は、8つの決定された文字を使用した一部ハフマン符号化を適用するために、8つの決定された文字に対してシンボルを適用する。一部ハフマン符号化技術を適用することにより、より高速な圧縮が可能となり、メモリ104は、ハフマン符号化技術を使用して圧縮されたブロックを伸長(例えば、復号)するために使用されるより小さなハフマンテーブルを送信することが可能となる。圧縮器206は、単一の圧縮器であってもよく、複数の圧縮器であってもよい。例えば、複数の圧縮器206が、データブロックを並列に符号化(例えば、圧縮)するために利用されてもよい。
図2の例示的なヘッダ生成器208は、データのブロックを符号化および/または圧縮するために使用される、符号化および/または圧縮タイプ(例えば、RLE符号化、ハフマン符号化、符号化なし、および/または、任意の他の可逆圧縮技術)を特定するヘッダおよび/またはデータパケットを生成する。たとえば、ブロックの圧縮タイプがRLE圧縮である場合、ヘッダ生成器208はRLC圧縮並びにRLE圧縮に対応する繰り返し文字、およびその文字が繰り返しされる回数を特定するヘッダおよび/またはデータパケットを生成する。ブロックの圧縮タイプがハフマン圧縮または一部ハフマン圧縮である場合、ヘッダ生成器208は、ハフマン圧縮および/または一部ハフマン圧縮技術に対応するヘッダおよび/またはデータパケットを生成する。例えば、ヘッダ生成器208は、ブロックがハフマン符号化されていること、データを復号するテーブル、符号化データのサイズ、サブブロックのサイズ、および/またはサブブロックが符号化されているかどうかを示す文字マーカーを含むヘッダを生成してもよい。ブロックの圧縮タイプが符号化および/または圧縮されていない場合、例示的なヘッダ生成器208は、圧縮なしおよび/または符号化なしに対応すると共に、非符号化のデータのサイズに対応するヘッダおよび/またはデータパケットを生成する。例示的なヘッダ生成器208は、符号化または非符号化ブロックにヘッダおよび/またはデータパケットを追加する。このようにして、例示的なデータ伸長器108は、各ブロックに対してどの圧縮技術が使用されたかを特定し、圧縮技術に基づいて圧縮ブロックを伸長することができる。ヘッダ生成器208は、単一のヘッダ生成器であってもよく、複数のヘッダ生成器であってもよい。例えば、ヘッダ生成器208は、並列にデータのブロックに対するヘッダを生成するために利用され得る。
ハフマン符号化または一部ハフマン符号化が、ブロックデータに適用されてハフマン符号化データを生成する場合、図2の例示的なスライサ202は、ハフマン符号化データを、N個の符号化サブブロックに対応するプリセット数の符号化サブブロックにスライス(例えば、グループ化)する。例えば、符号化データが27ハフマン符号を含み、符号化サブブロックのプリセット数は9である場合、スライサ202は、各サブブロックに対して3ハフマン符号をグループ化する。符号化サブブロックのプリセット数は、データ伸長器108の並列プロセッサの数に基づいてもよい。このようにして、各並列プロセッサは、各符号化サブブロックまたはN個のサブブロックを並列に処理することができる。符号化サブブロックにスライスされると、例示的なパッダ210は、サブブロックの終わりを表す定義済みのコードパターンで個々のサブブロックをパッドする。上述するように、ハフマン符号は、長さが可変(例えば、不均一)である。例えば、第1の16ビットのサブブロックの第1のハフマン符号は8ビットの長さであってもよい一方で、第2の16ビットのサブブロックの第2のハフマン符号は10ビットの長さであってもよい。したがって、1つ以上のハフマン符号をグループ化することは、可変(例えば、不均一)長さ符号化サブブロックに対応する。したがって、パッダ210は、サブブロックの終わりに定義済みのコードを追加し、ヘッダ生成器208は、ヘッダにパディングされたサブブロックのサイズを含み、例示的なデータ伸長器108が、ヘッダで特定されているサイズに基づいて、個々の符号化サブブロックを分割して、並列復号を容易にするようにする。パッダ210は、単一のパッダであっても、複数のパッダあってもよい。例えば、パッダ210が、並列に符号化サブブロックにパッドするために利用されてもよい。
図2の例示的な圧縮データアセンブラ212は、生成されたヘッダと共に順番にパディングされた符号化サブブロックをアセンブルして、データブロックのハフマン符号化を完了する。追加的に、例示的な圧縮データアセンブラ212は、符号化(例えば圧縮)または非符号化(例えば非圧縮)データブロックをアセンブルして、例示的なデータ伸長器108に送信される圧縮データ全体を生成する。いくつかの例において、データブロックが並列に処理されてもよい。したがって、圧縮データアセンブラ212は、データブロックが符号化の前に並べられたのと同じ順序で、符号化ブロックを組み立てることができるようにブロックをモニタする。
図2の例示的なオフチップインターフェース218は、例示的なオフチップメモリ104から圧縮データを取得する。圧縮データが取得されると、例示的なヘッダプロセッサ220は圧縮データを処理して圧縮データのブロックのヘッダを特定する。上述のように、ヘッダは、圧縮データの各ブロックを圧縮するために使用された符号化技術を特定する情報を含む。したがって、ヘッダプロセッサ220は、データブロックの伸長のためのヘッダを特定することによって圧縮ブロックを分割することができる。
図2の例示的な伸長器222は、対応する各ブロックのヘッド内で特定された対応する圧縮情報に基づいてデータブロックを伸長する。例えば、符号化データの第1のブロックの第1のヘッダがRLE圧縮に対応する場合、伸長器222は第1のヘッダを処理して、どの文字が繰り返されているかと、その文字が何回繰り返されるかを特定し、決定された繰り返された文字の数を伸長データアセンブラ224に渡す。回数は、プリセットされていてもよいし、ヘッダ内で特定されていてもよい。符号化データの第2のブロックの第2のヘッダが符号化なしに対応する場合、伸長器222は、ヘッダを削除し、そのデータを伸長(例えば復号)せずに非符号化データを伸長データアセンブラに渡す。符号化データの第3のブロックの第3のヘッダが(例えば、一部または完全)ハフマン符号化に対応する場合、伸長器222は、ハフマン符号に対応するブロックのヘッダからハフマンテーブルを使用して、符号化データの第3のブロックを伸長する。いくつかの例では、データスプリッタ221は、ヘッダ内で特定されるサブブロックサイズに基づいて、圧縮データ圧縮データのブロックをサブブロックに分割する。この点、各サブグループが、複数の伸長器222によって並列処理されることができる。伸長されると、伸長器222は、伸長サブブロックを例示的な伸長データアセンブラ224に渡す。
図2の例示的な伸長データアセンブラ224は、復号サブブロックをアセンブルして、データブロックのハフマン復号を完了する。例えば、ハフマン符号化サブブロックを並列に復号する複数の伸長器222がある場合、伸長データアセンブラ224は、伸長サブブロックを並べて伸長ブロックデータを生成することができるように並列プロセッサをモニタする。追加的に、例示的な伸長データアセンブラ224は、復号(例えば伸長)データブロックをアセンブルして、例示的なハードウェアアクセラレータ/ニューラルネットワーク110に送信される伸長データ全体を生成する。いくつかの例では、データブロックは並列に処理される(例えば、伸長および/または復号される)。したがって、伸長データアセンブラ224は、データブロックが受信されたのと同じ順序で、復号ブロックをアセンブルすることができるようにブロックをモニタする。図2のハードウェアアクセラレータ/ニューラルネットワークインターフェース226は、図1のオンチップ構成要素102の例示的なハードウェアアクセラレータ/ニューラルネットワーク110にフルセットの伸長データを送信する。
図2に、図1の例示的なデータ圧縮器106および例示的なデータ伸長器108を実装する例示的な方法が示されているが、図2に示された要素、プロセスおよび/またはデバイスのうちの1つ以上が、組み合わされ、分割され、再配置され、省略され、除去され、および/または他の方法で実装されてもよい。さらに、図2の例示的なメモリインターフェース200、例示的なデータスライサ202、例示的なデータプロセッサ204、例示的な圧縮器206、例示的なヘッダ生成器208、例示的なパッダ210、例示的な圧縮データアセンブラ212、例示的なオフチップインターフェース218、例示的なヘッダプロセッサ220、例示的なデータスプリッタ221、例示的な伸長器222、例示的な伸長データアセンブラ224、例示的なハードウェアアクセラレータ/ニューラルネットワークインターフェース226、および/またはより一般的には、例示的なデータ圧縮器106および/または例示的なデータ伸長器108が、ハードウェア、ソフトウェア、ファームウェア、および/またはハードウェア、ソフトウェア、および/またはファームウェアの任意の組み合わせによって実装されてもよい。従って、例えば、図2の例示的なメモリインターフェース200、例示的なデータスライサ202、例示的なデータプロセッサ204、例示的な圧縮器206、例示的なヘッダ生成器208、例示的なパッダ210、例示的な圧縮データアセンブラ212、例示的なオフチップインターフェース218、例示的なヘッダプロセッサ220、例示的なデータスプリッタ221、例示的な伸長器222、例示的な伸長データアセンブラ224、例示的なハードウェアアクセラレータ/ニューラルネットワークインターフェース226、および/またはより一般的には、例示的なデータ圧縮器106および/または例示的なデータ伸長器108は、1つ以上のアナログまたはデジタル回路、論理回路、プログラマブルプロセッサ、プログラマブルコントローラ、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、プログラマブル論理デバイス(PLD)、および/またはフィールドプログラマブル論理デバイス(FPLD)によって実現することができる。純粋にソフトウェアおよび/またはファームウェアの実装をカバーするために、この特許の装置またはシステムの請求項のいずれかを読むと、図2の例示的なメモリインターフェース200、例示的なデータスライサ202、例示的なデータプロセッサ204、例示的な圧縮器206、例示的なヘッダ生成器208、例示的なパッダ210、例示的な圧縮データアセンブラ212、例示的なオフチップインターフェース218、例示的なヘッダプロセッサ220、例示的なデータスプリッタ221、例示的な伸長器222、例示的な伸長データアセンブラ224、例示的なハードウェアアクセラレータ/ニューラルネットワークインターフェース226、および/またはより一般的には、例示的なデータ圧縮器106および/または例示的なデータ伸長器108は、メモリ、デジタル多用途ディスク(DVD)、コンパクトディスク(CD)、ブルーレイ(登録商標)ディスク等、ソフトウェアおよび/またはファームウェアを含む非一時的なコンピュータ読み取り可能記憶デバイスまたは記憶ディスクを含むように本明細書に明確に定義されている。さらに、図2の例示的なデータ圧縮器106および/またはデータ伸長器108が、図2に示すものに加えて、あるいはその代わりに、1つ以上の要素、プロセスおよび/またはデバイスを含んでもよく、および/または図示の要素、プロセスおよびデバイスのいずれかまたは全てのうちの2つ以上を含んでもよい。本明細書で使用する「通信中」という語句は、その変形を含み、1つ以上の中間構成要素を介した直接的な通信および/または間接的な通信を包含し、直接的な物理的(例えば有線)通信および/または常時通信を必要とせず、むしろ、周期的な間隔、スケジュールされた間隔、非周期的な間隔、および/またはワンタイムイベントにおける選択的な通信を追加的に含む。
図1および/または図2の例示的なデータ圧縮器106を実装するための、例示的なハードウェア論理、機械読み取り可能命令、ハードウェア実装状態機械、および/またはそれらの任意の組み合わせを表すフローチャートを図3〜4に示す。図1および/または図2の例示的なデータ伸長器108を実装するための、例示的なハードウェア論理、機械読み取り可能命令、ハードウェア実装状態機械、および/またはそれらの任意の組み合わせを表すフローチャートを図5に示す。機械読み取り可能命令が、図7および/または図8に関連して下記に論じる例示的なプロセッサプラットフォーム700、800に示されるプロセッサ712、812のようなコンピュータプロセッサによる実行のための実行可能プログラムまたは実行可能プログラムの一部であってもよい。プログラムが、CD−ROM、フロッピーディスク、ハードドライブ、DVD、ブルーレイディスク、プロセッサ712、812に関連付けられたメモリ等の非一時的なコンピュータ読み取り可能な記憶媒体に記憶されたソフトウェアで具体化されてよいが、プログラム全体および/またはその一部は、代替的に、プロセッサ712、812以外のデバイスによって実行され、かつ/あるいはファームウェアまたは専用ハードウェアで具体化することができる。さらに、例示的なプログラムが図3〜図5に示すフローチャートを参照して説明されているが、図2の例示的なデータ圧縮器106および/またはデータ伸長器108を実装する多くの他の方法が代替的に使用されてもよい。例えば、ブロックの実行順序が変更されてもよく、かつ/あるいは説明したブロックのいくつかが変更、削除、または組み合わせられてもよい。追加的または代替的に、ブロックの任意または全部が、ソフトウェアまたはファームウェアを実行することなく対応する動作を実行するように構成された1つ以上のハードウェア回路(例えば、離散および/または集積アナログおよび/またはデジタル回路、FPGA、ASIC、比較器、演算増幅器(op−amp)、論理回路など)によって実装されてもよい。
上述したように、図3〜図5の例示的なプロセスが、ハードディスクドライブ、フラッシュメモリ、読み出し専用メモリ、コンパクトディスク、デジタル汎用ディスク、キャッシュ、ランダムアクセスメモリ、および/または情報が任意の期間(例えば、長期間、永久的、短時間、一時的なバッファリング、および/または情報のキャッシュ)記憶される任意の他の記憶デバイスまたは記憶ディスク等の非一時的なコンピュータおよび/または機械読み取り可能媒体に記憶される実行可能な命令(例えば、コンピュータおよび/または機械読み取り可能な命令)を使用して実装されてもよい。本明細書で使用される非一時的なコンピュータ読み取り可能媒体という用語は、任意のタイプのコンピュータ読み取り可能記憶デバイスおよび/または記憶ディスクを含み、伝搬信号を排除し、伝送媒体を排除するように明確に定義される。
本明細書において「含む(including)」および「含む(comprising)」(ならびにその全ての形式および時制)は、オープンエンドの用語として使用される。したがって、「含む(include)」または「含む(comprise)」のいずれかの形式(例えば、comprises、includes、comprising、including、having等)を請求項がプリアンブルとして、あるいは任意の種類の請求項の規定内に採用する場合にはいつでも、追加の要素、用語等が、対応する請求項または規定の範囲外に該当することなく存在してよいと理解されるべきである。本明細書で使用される、例えば、請求項のプリアンブルにおいて「少なくとも」という語句が移行句として使用される場合に、「含む(comprising)」および「含む(including)」という語句がオープンエンドであるのと同様に、オープンエンドである。A、B、および/またはCのような形式で「および/または」という用語が使用される場合には、(1)Aのみ、(2)Bのみ、(3)Cのみ、(4)AとB、(5)AとC、(6)BとC、(7)AとBとC等、A,B,Cの任意の組み合わせまたはサブセットを指す。
図3は、図1のオンチップ構成要素102に送信される前に、オフチップに記憶されたデータを圧縮する、図1および/または図2のデータ圧縮器106の例示的な実装によって実行され得る機械読み取り可能命令を表す例示的なフローチャート300である。図3のフローチャート300は、図1および/または図2の例示的なデータ圧縮器106に関連して説明されているが、代わりに、他のタイプのデータ圧縮器および/または他のタイプのプロセッサが利用されてもよい。図3の例示的なフローチャート300は、RLE圧縮、ハフマン圧縮、および/または圧縮なしに関連して説明されているが、他の圧縮技術が追加的または代替的に使用されてもよい。
ブロック302において、例示的なデータスライサ202は、例示的なメモリインターフェースを介して、例示的なオフチップメモリ104からデータセットを取得する。データセットは、データセットのハードウェアベースの処理を実行する図1の例示的なオンチップハードウェアアクセラレータ/ニューラルネットワーク110によって使用される例示的なオフチップメモリ104に記憶されるデータセットである。ブロック304において,データスライサ202は、データセットをN個のデータブロックに分割する。ブロックのサイズおよび/または数が、ユーザおよび/または製造業者の好みに基づいてもよい。N個のデータブロックは、サイズが均一であってもなくてもよい。ブロック306において、例示的なデータ圧縮器106は、図4に関連して後述されるように、データブロックを圧縮する。
ブロック308において、例示的な圧縮データアセンブラ212は、圧縮されたブロックをアセンブルして圧縮データセットを生成する。例えば、データ圧縮器106が順序通りにブロックを圧縮する場合、データアセンブラ212は、ブロックが圧縮された順序と同じ順序で圧縮ブロックを取り付ける。データ圧縮器106がブロックを順序通りではなく、あるいは並列に圧縮する場合、データアセンブラ212は、圧縮データブロックをデータセットからのデータと同じ順序で再アセンブルすることができるように圧縮をモニタする。ブロック310において、例示的なインターフェース202は、圧縮データセットを図のオフチップメモリ104に送信し、圧縮データとして記憶される。
図4は、図3に関連して上述したように、データのブロックを圧縮するために、図1および/または図2のデータ圧縮器106の例示的な実装によって実行され得る、例示的な機械読み取り可能命令の例示的なフローチャート306である。図4のフローチャート306は、図1および/または図2の例示的なデータ圧縮器106に関連して説明されているが、代わりに、他のタイプのデータ圧縮器および/または他のタイプのプロセッサが使用されてもよい。図4の例示的なフローチャート306は、(例えば、並列データスライサ202、データプロセッサ204、圧縮器206、ヘッダ生成器208、および/またはパッダ210によって)線形および/または並列に、データの複数のブロックに対して実行されてもよい。図4の例示的なフローチャート306は、RLE圧縮、ハフマン圧縮、および/または、圧縮なしに関連して説明されているが、他の圧縮技術が追加的または代替的に使用されてもよい。
データのNブロックの各々について(ブロック402〜430)、例示的なデータプロセッサ204は、データブロックの全てのデータが同じ値および/または文字に対応するかどうかを決定する(ブロック404)。例えば、データブロックが全て「a」であるものを含む場合、例示的なデータプロセッサ204は、データブロックの全てのデータが同じ文字に対応すると決定する。
例示的なデータプロセッサ204が、ブロックの全てのデータが同じ値および/または文字に対応すると決定した場合(ブロック404:YES)、例示的な圧縮器206は、ブロックのデータを符号化/圧縮するRLE圧縮技術を実行する(ブロック406)。例えば、圧縮器206が、ヘッダ生成器208に、その文字がデータのブロック内で繰り返される繰り返し文字および/またはその文字の繰り返し数を特定するデータパケットを生成するように指示してもよい。ブロック408において、例示的なヘッダ生成器208は、データブロックがRLE圧縮技術を用いて圧縮されたことを特定する圧縮データに含めるためのデータパケットおよび/またはヘッダを生成する。このようにして、例示的なデータ伸長器108は、ブロックをRLE圧縮に対応するものとして特定し、RLE伸長技術に基づいてブロックを伸長することができる。
例示的なデータプロセッサ204が、ブロックのデータの全てが同じ値および/または文字に対応していないと決定した場合(ブロック404:NO)、例示的な圧縮器206は、一部ハフマン符号化技術を実行して、データブロックを符号化/圧縮する(ブロック412)。いくつかの例では、圧縮器206が、完全ハフマン符号化技術を実行してもよい。上述したように、ハフマン符号化を適用するために、例示的な圧縮器206は、データのセットにおける各文字の出現頻度に基づいてハフマンツリーを生成する。圧縮器206は、ハフマンツリーに基づいてブロックのデータの各文字にコードを割り当てる。ほとんどの場合、ハフマン符号化技術を用いてデータを符号化すると、無符号化よりもサイズが小さい可逆データ圧縮が生じる。一部ハフマン符号化技術を適用するために、例示的な圧縮器206は、ハフマン符号化技術をプリセットされた文字数にのみ適用し、残りの文字を非符号化のまま残し、それによって、符号化および/または復号時間を増加させ、ハフマン符号化データを復号するのに必要なハフマンテーブルのサイズを低減させる。追加的に、例示的な圧縮器206が、各文字を符号化または非符号化としてマークを付ける。
ブロック414において、例示的なデータプロセッサ204は、符号化データおよびヘッダが、非符号化データよりも多くのビットに対応するかどうかを決定する。上述したように、ハフマンまたは一部ハフマン圧縮技術は、ブロック内の文字の繰り返しがほとんどあるいは全くないデータブロックについてはより多くのデータに対応することがある。いくつかの例において、データプロセッサ204が、ブロック内のデータの繰り返しに基づいて、ハフマン圧縮または一部ハフマン圧縮が、圧縮を実行する前(例えば、ブロック412の前)に、より多くのビットをもたらすかどうかを決定してもよい。
例示的なデータプロセッサ204が符号化データおよびヘッダが、非符号化データよりも多くのビットに対応すると決定した場合(ブロック414:YES)、例示的なデータプロセッサ204は、符号化データを破棄する(ブロック416)。ブロック418において、例示的なヘッダ生成器208は、符号化なしに対応するヘッダを生成する。このようにして、例示的なデータ伸長器108は、ブロックのデータが非符号化および/または非圧縮と決定することができる。ブロック420において、例示的なヘッダ生成器208は、生成されたヘッダを伴ったブロックの非符号化データを例示的な圧縮データアセンブラ212に渡す。
例示的なデータプロセッサ204が、符号化データは非符号化デーよりも多くのビットに対応していないと決定した場合(ブロック414:NO)、例示的なヘッダ生成器208は、ハフマンおよび/または一部ハフマン(PF)符号化に対応するヘッダを生成する(ブロック422)。このようにして、例示的なデータ伸長器108は、ハフマンおよび/またはPH圧縮に対応するブロックを特定し、ハフマンおよび/またはPH伸長技術に基づいてブロックを伸長する。ブロック424において、例示的なデータスライサ202は、符号化データを符号化サブブロックにスライス、分割および/またはグループ化する。サブブロックは、1つ以上のハフマン符号を含んでもよい。サブブロック当たりのハフマンコードの数は、プリセットされており、カスタマイズ可能であり、かつ/あるいはユーザおよび/または製造業者の好みに基づいてもよい。例えば、サブブロック当たりのハフマン符号の数は、例示的なデータ伸長器108における並列プロセッサの数に対応してもよく、それによって、データ伸長器108の処理能力を最適化する。
ブロック424において、例示的なパッダ210は、定義済みのパターンを使用して符号化サブブロックをパッドする。上述のように、異なるハフマン符号が、符号化処理プロセスの結果として不均一(例えば、異なる)長さに対応してもよい。例えば、第1のハフマン符号が2ビットのデータであってもよく、第2のハフマン符号が4ビットのデータであってもよい。従って、スライスされたサブブロックのサイズが、不均一な(例えば、異なる)長さに対応することがある。したがって、例示的なパッダ210は、サブブロックの終わりに対応して定義済みのパターンで、符号化サブブロックの各々をパッドする。いくつかの例では、パディングは、各可変サイズのサブブロックが同じ長さ(例えば、選択された長さ)であることを保証する。このようにして、例示的なデータ伸長器108は、選択されたサブブロック長に基づいてサブブロックを分割することによって、並列伸長のために圧縮サブブロックを分割することができる。いくつかの例では、パディングされたサブブロックは異なる長さである。このような例では、データ伸長器108は、ヘッダ内の指定されたパディングに基づいて、符号化ブロックをサブブロックに分割する。ブロック428において、例示的なパッダ210は、図2の例示的なオンチップ構成要素102を送信する前に、ヘッダを伴うパディングされたサブブロックを、アセンブルされるように例示的な圧縮データアセンブラ212に渡す。
図5は、図1の例示的なオフチップ構成要素100から圧縮データを伸長する図1および/または図2のデータ伸長器108の例示的な実装によって実行され得る例示的な機械読み取り可能命令を表す例示的なフローチャート500である。図5のフローチャート500は、図1および/または図2の例示的なデータ伸長器108に関連して説明されているが、代わりに、他のタイプのデータ伸長器および/または他のタイプのプロセッサが利用されてもよい。フローチャート500が、圧縮ブロックの連続伸長に関連して説明されているが、フローチャートは、各ブロックが並列に処理される並列伸長プロセスに関連して使用されてよい。
ブロック502において、例示的なヘッダプロセッサ220は、例示的なオフチップインターフェース218から圧縮データセットを取得する。圧縮データセットは、本明細書に開示された技術を使用して例示的なデータ圧縮器106によって圧縮された例示的なオフチップメモリ104に記憶されたデータに対応する。圧縮データブロックの各々について(ブロック504〜530)(例えば、単一の伸長器222で順次処理される)、例示的なヘッダプロセッサ220は、データの符号化ブロックに対応する利用可能な圧縮ブロックのヘッダを特定する(ブロック506)。上述のように、データの圧縮中、各圧縮データブロックは、データブロックを圧縮するために使用される圧縮のタイプを特定するヘッダを含む。したがって、ブロック508において、例示的なヘッダプロセッサ220は、符号化ブロックのヘッダに基づいて圧縮および/または符号化タイプを決定する。図5の例示的なフローチャート500は、RLE圧縮、ハフマン圧縮、および/または圧縮なしを使用して圧縮されたデータに関連して説明されているが、ヘッダは、追加的および/または代替的な圧縮技術に対応してもよい。このような実施例では、データ伸長器108は、このような付加的および/または代替的な圧縮技術に基づいてデータを伸長する。
圧縮データブロックの各々について(ブロック508〜530)(例えば、例示的なデータスプリッタ221によって分割され、単一の伸長器222によって順次処理される)の各々について、例示的な伸長器222は、圧縮タイプがRLE符号化および/または圧縮に対応するかどうか決定する(ブロック510)。例示的な伸長器222が、圧縮タイプはRLE符号化に対応すると決定した場合(ブロック510:YES)、例示的な伸長器222は、ヘッダ情報に基づいてデータを復号するためにRLE伸長を実行する(ブロック512)。例えば、ヘッダ情報がデータのブロックが16回繰り返された「a」に対応することを特定する場合、伸長器222は、データを伸長して16回繰り返された「a」を生成する。ブロック514において、例示的な伸長器222は、伸長データ(例えば、上記の例における16回繰り返された「a」)を例示的な伸長データアセンブラ224に渡す。
例示的な伸長器222が、圧縮タイプはRLE符号化に対応していないと決定した場合(ブロック510:NO)、例示的な伸長器222は、圧縮タイプが非符号化データに対応するかどうかを決定する(ブロック516)。例示的な伸長器222が圧縮タイプは非符号化データに対応すると決定した場合(ブロック516:YES)、例示的な伸長器222は、非符号化データを伸長データアセンブラ224に渡す。例示的な伸長器222が、圧縮タイプは非符号化データに対応していないと決定した場合(ブロック516:NO)、例示的な伸長器222は、ヘッダにおいて特定されるサイズのサブブロックに基づいて、ハフマンまたは一部ハフマン符号化データブロックの符号化サブブロックを決定する(ブロック520)。上述したように、例示的なデータ圧縮器106は、データブロックのサブブロックの終わりを定義済みのエンドパターンでパッドする。このようにして、例示的な伸長器222は、ヘッダにおいて特定されたサブブロックサイズに基づいてブロックをサブブロックに分割することができる。
各符号化サブブロックについて(ブロック520〜528)(例えば、例示的なデータスプリッタ221によってサブブロックに分割され、単一の伸長器222を使用して線形に、あるいは複数の伸長器222を使用して並列に処理される)、例示的な伸長器222は、符号化サブブロックにブロック(例えば、一部または完全ハフマン)復号を実行する。例えば、伸長器222が、伸長データを表す文字にハフマン符号を対応させたハフマンテーブルを利用して、符号化としてマークが付けられた文字を伸長および/または復号し、非符号化としてマークが付けられた文字を変えないままにしてもよい。ブロック526において、例示的な伸長器222は、復号サブブロックを伸長データアセンブラ224に渡す。ブロック529において、例示的な伸長データアセンブラ224は、サブブロックを伸長ブロックにアセンブルする。
ブロック532において、例示的な伸長データアセンブラ224は、例示的なオフチップメモリ104に記憶されたデータセットに対応する順序で、復号ブロックを伸長データセットにアセンブルする。ブロック534において、例示的なハードウェアアクセラレータ/ニューラルネットワークインターフェース226は、図1のハードウェアアクセラレータ/ニューラルネットワーク110に伸長データセットを送信する。
図6は、図1および/または図2の例示的なデータ圧縮器106を使用して、図1の例示的なオフチップ構成要素100からのデータの例示的なデータ伸長プロセス600を示す。例示的な伸長プロセス600は、例示的なデータセット601、例示的なデータブロック602、例示的な決定ブロック604、614、例示的なRLE圧縮606、例示的なヘッダ608、616、620、例示的な圧縮データセット610、例示的な符号化ブロック612、例示的なハフマン圧縮613、例示的な符号化データブロック616、例示的な非符号化データブロック618、例示的な符号化ブロック622、例示的なスライシング624、例示的な符号化サブブロック626、および例示的なパディング628を含む。
図6の例示的なデータセット601は、例示的なオフチップメモリ100に記憶されるデータに対応する。例示的なデータスライサ202は、例示的なデータブロック602を含む複数のデータブロックにデータセット601をスライスする。スライスされると、例示的なデータプロセッサ204は、決定ブロック604においてデータブロック602のデータの特性に基づいて符号化技術を選択する。データプロセッサ204が、ブロックの全てのデータは同じであると決定した場合、データプロセッサ204は、RLE圧縮606を選択して、データブロック602を圧縮する。データプロセッサ204が、ブロックの全てのデータは同じというわけではないと判断した場合、データプロセッサ204は、一部ハフマン圧縮(または完全ハフマン圧縮)613を選択する。
RLE圧縮606が選択される場合、例示的なヘッダ生成器208は、RLE圧縮技術に対応する例示的なヘッダ608を生成し、データブロック内の全てのデータを表す値と、ヘッダにおいて特定された繰り返し数とを特定する。従って、例示的なヘッダ608は、圧縮データセット610内の符号化データブロック612として含まれる。一部ハフマン圧縮613が選択される場合、圧縮器206が一部ハフマン圧縮613を実行すると、データプロセッサ204は、符号化データおよびヘッダが閾値(例えば、非符号化データブロック602に対応するデータ量に対応する閾値)より大きいかどうかを決定する。データプロセッサ204が、符号化データおよび対応するヘッダは閾値より大きいと決定する場合、圧縮器206は符号化データブロックを破棄し、ヘッダ生成器208が符号化なしに対応する例示的なヘッダ616を生成し、圧縮データセット610の符号化ブロック612として非符号化データブロック602を伴うヘッダ616を含める。
データプロセッサ204が、符号化データおよび対応するヘッダが閾値よりも小さいと決定した場合、例示的なヘッダ生成器208は、一部ハフマン圧縮613を特定する例示的なヘッダ620を生成する。追加的に、例示的なデータスライサ202は、例示的なスライシングブロック624においてハフマン符号化データ622をスライスして、符号化サブブロック626を生成する。符号化データサブブロック626は、不均一サイズであってもよいため(例えば、各データサブブロック626は、異なるサイズに対応してもよい)、例示的なパッダ210は、例示的なパディングブロック628において選択されたパターンで符号化データサブブロック626をパッドする。さらに、ヘッダ生成器208は、各サブブロックのサイズをヘッダに追加する。このようにして、例示的なデータ伸長器108は、特定されたサイズに基づいて、符号化ブロック612を例示的な符号化データサブブロック626に分割することができる。パディングされると、ヘッダ620、パディングされたサブブロックおよび対応するヘッダは、符号化ブロック612として、例示的な圧縮データセット610に含まれる。
図7は、図2の例示的なデータ圧縮器106を実装する図3〜4の命令を実行するように構成された例示的なプロセッサプラットフォーム700のブロック図である。プロセッサプラットフォーム700は、例えば、サーバ、パーソナルコンピュータ、ワークステーション、自己学習機械(例えばニューラルネットワーク)、モバイルデバイス(例えば、携帯電話、スマートフォン、iPad(登録商標)のようなタブレット)、または任意の他の種類のコンピューティングデバイスとすることができる。
図示された例のプロセッサプラットフォーム700は、プロセッサ712を含む。図示された例のプロセッサ712は、ハードウェアである。例えば、プロセッサ712は、1つ以上の集積回路、論理回路、マイクロプロセッサ、GPU、DSP、または任意の所望のファミリーまたは製造業者のコントローラによって実装されることができる。ハードウェアプロセッサが半導体ベース(例えば、シリコンベース)デバイスであってもよい。この例では、プロセッサは、図2の例示的なメモリインターフェース200、例示的なデータスライサ202、例示的なデータプロセッサ204、例示的な圧縮器206、例示的なヘッダ生成器208、例示的なパッダ210および/または例示的な圧縮データアセンブラ212を実装する。
図示された例のプロセッサ712は、ローカルメモリ713(例えば、キャッシュ)を含む。いくつかの例では、ローカルメモリ713は、例示的な結果ストレージ218を実装する。図示された例のプロセッサ712は、バス718を介して、揮発性メモリ714および不揮発性メモリ716を含むメインメモリと通信している。揮発性メモリ714が、SDRAM(同期ダイナミック・ランダム・アクセス・メモリ)、DRAM(ダイナミック・ランダム・アクセス・メモリ)、RDRAM(登録商標)(RAMBUS(登録商標)ダイナミック・ランダム・アクセス・メモリ)および/または任意の他のタイプのランダムアクセスメモリデバイスによって実装されてもよい。不揮発性メモリ716が、フラッシュメモリおよび/または任意の他の所望のタイプのメモリデバイスによって実装されてもよい。メインメモリ714、716へのアクセスはメモリコントローラによって制御される。
図示された例のプロセッサプラットフォーム700は、インターフェース回路720も含む。インターフェース回路720が、Ethernet(登録商標)インターフェース、ユニバーサルシリアルバス(USB)、Bluetooth(登録商標)インターフェース、近距離無線通信(NFC)インターフェースおよび/またはPCIエクスプレスインターフェース等、任意のタイプのインターフェース規格によって実装されてもよい。
図示された例では、1つ以上の入力デバイス722がインターフェース回路720に接続されている。入力デバイス722は、ユーザがデータおよび/またはコマンドをプロセッサ712に入力することを可能にする。入力デバイスは、例えば、オーディオセンサ、マイクロホン、カメラ、(スチルまたはビデオ)キーボード、ボタン、マウス、タッチスクリーン、トラックパッド、トラックボール、アイソポイント、および/または音声認識システムによって実装されることができる。
1つ以上の出力デバイス724も、図示された例のインターフェース回路720に接続されている。出力デバイス724は、例えば、ディスプレイデバイス(例えば、発光ダイオード(LED)、有機発光ダイオード(OLED)、液晶ディスプレイ(LCD)、陰極線管ディスプレイ(CRT)、IPS(in−place switching)ディスプレイ、タッチスクリーン等)、触覚出力デバイス、プリンタおよび/またはスピーカによって実装されることができる。したがって、図示された例のインターフェース回路720は、典型的には、グラフィックスドライバカード、グラフィックスドライバチップおよび/またはグラフィックスドライバプロセッサを含む。
図示された例のインターフェース回路720は、送信機、受信機、トランシーバ、モデム、住宅用ゲートウェイ、無線アクセスポイント、ネットワークインターフェース、ネットワーク726を介して外部機械(例えば任意の種類の計算デバイス)とのデータの交換を容易にするネットワークインターフェース等の通信デバイスも含む。通信は、例えば、Ethernet接続、デジタル加入者回線(SDL)接続、電話回線接続、同軸ケーブルシステム、衛星システム、ラインオブサイト無線システム、セルラー電話システム等を介することができる。
図示された例のプロセッサプラットフォーム700は、ソフトウェアおよび/またはデータを記憶するための1つ以上のマスストレージデバイス728も含む。このようなマスストレージデバイス728の例には、フロッピーディスクドライブ、ハードドライブディスク、コンパクトディスクドライブ、ブルーレイディスクドライブ、RAID(redundant array of independent disks)、およびデジタル多用途ディスク(DVD)ドライブが含まれる。
図3〜図4の機械実行可能命令732は、大容量ストレージ72デバイス8内、揮発性メモリ714内、不揮発性メモリ716内、および/またはCD、DVD等のリムーバブル非一時的なコンピュータ読み取り可能記憶媒体上に記憶され得る。
図8は、図2の例示的なデータ圧縮器106を実施する図5の命令を実行するように構成された例示的なプロセッサプラットフォーム800のブロック図である。プロセッサプラットフォーム800は、例えば、サーバ、パーソナルコンピュータ、ワークステーション、自己学習機械(例えば、ニューラルネットワーク)、モバイルデバイス(例えば、携帯電話、スマートフォン、iPadのようなタブレット)、または任意の他のタイプのコンピューティングデバイスとすることができる。
図示された例のプロセッサプラットフォーム800は、プロセッサ812を含む。図示された例のプロセッサ812はハードウェアである。例えば、プロセッサ812は、1つ以上の集積回路、論理回路、マイクロプロセッサ、GPU、DSP、または任意の所望のファミリーまたは製造業者のコントローラによって実装されることができる。ハードウェアプロセッサが半導体ベース(例えばシリコンベース)デバイスであってもよい。この例では、プロセッサは、図2の例示的なオフチップインターフェース218、例示的なヘッダプロセッサ220、例示的なデータスプリッタ221、例示的な伸長器222、例示的な伸長データアセンブラ224、および/または例示的なハードウェアアクセラレータ/ニューラルネットワークインターフェース226を実装する。
図示された例のプロセッサ812は、ローカルメモリ813(例えば、キャッシュ)を含む。いくつかの例では、ローカルメモリ813は、例示的な結果ストレージ218を実装する。図示された例のプロセッサ812は、バス818を介して、揮発性メモリ814および不揮発性メモリ816を含むメインメモリと通信している。揮発性メモリ814が、SDRAM(同期ダイナミック・ランダム・アクセス・メモリ)、DRAM(ダイナミック・ランダム・アクセス・メモリ)、RDRAM(RAMBUSダイナミック・ランダム・アクセス・メモリ)および/または任意の他のタイプのランダムアクセスメモリデバイスによって実装されてもよい。不揮発性メモリ816が、フラッシュメモリおよび/または任意の他の所望のタイプのメモリデバイスによって実装されてもよい。メインメモリ814、816へのアクセスは、メモリコントローラによって制御される。
図示された例のプロセッサプラットフォーム800は、インターフェース回路820も含む。インターフェース回路820が、Ethernetインターフェース、ユニバーサルシリアルバス(USB)、Bluetoothインターフェース、近距離無線通信(NFC)インターフェースおよび/またはPCIエクスプレスインターフェース等、任意のタイプのインターフェース規格によって実装されてもよい。
図示された例では、1つ以上の入力デバイス822がインターフェース回路820に接続されている。入力デバイス822は、ユーザがデータおよび/またはコマンドをプロセッサ812に入力することを可能にする。入力デバイスは、例えば、オーディオセンサ、マイクロホン、カメラ(スチルまたはビデオ)、キーボード、ボタン、マウス、タッチスクリーン、トラックパッド、トラックボール、アイソポイント、および/または音声認識システムによって実装されることができる。
1つ以上の出力デバイス824も、図示された例のインターフェース回路820に接続されている。出力デバイス824は、例えば、ディスプレイデバイス(例えば、発光ダイオード(LED)、有機発光ダイオード(OLED)、液晶ディスプレイ(LCD)、陰極線管ディスプレイ(CRT)、PS(in−place switching)ディスプレイ、タッチスクリーン等)、触覚出力デバイス、プリンタおよび/またはスピーカによって実装されることができる。したがって、図示された例のインターフェース回路820は、典型的には、グラフィックスドライバカード、グラフィックスドライバチップおよび/またはグラフィックスドライバプロセッサを含む。
図示された例のインターフェース回路720は、送信機、受信機、トランシーバ、モデム、住宅用ゲートウェイ、無線アクセスポイント、ネットワークインターフェース、ネットワーク726を介して外部機械(例えば任意の種類の計算デバイス)とのデータの交換を容易にするネットワークインターフェース等の通信デバイスも含む。通信は、例えば、Ethernet接続、デジタル加入者回線(SDL)接続、電話回線接続、同軸ケーブルシステム、衛星システム、ラインオブサイト無線システム、セルラー電話システム等を介することができる。
図示された例のプロセッサプラットフォーム800は、ソフトウェアおよび/またはデータを記憶するための1つ以上の大容量ストレージデバイス828も含む。このようなマスストレージデバイス728の例には、フロッピーディスクドライブ、ハードドライブディスク、コンパクトディスクドライブ、ブルーレイディスクドライブ、RAID(redundant array of independent disks)、およびデジタル多用途ディスク(DVD)ドライブが含まれる。
図5の機械実行可能命令832は、大容量ストレージデバイス828内、揮発性メモリ814内、不揮発性メモリ816内、および/またはCDまたはDVDのようなリムーバブル非一時的なコンピュータ読み取り可能記憶媒体上に記憶され得る。
データを圧縮する例示的な方法、装置、システム、および製造物品が本明細書に開示されている。さらなる実施例およびそれらの組み合わせは、以下を含む。
実施例1は、データを記憶するオフチップメモリと、データセットを複数のデータブロックに分割するデータスライサと、データプロセッサであって、複数のデータブロックのうちの第1のブロックに対する第1の圧縮技術を、第1のブロックの第1の特性に基づいて選択し、複数のデータブロックのうちの第2のブロックに対する第2の圧縮技術を、第2のブロックの第2の特性に基づいて選択する、データプロセッサと、第1の圧縮技術を使用して第1のブロックを圧縮して第1の圧縮データブロックを生成する第1の圧縮器と、第2の圧縮技術を使用して第2のブロックを圧縮して第2の圧縮データブロックを生成する第2の圧縮器と、第1の圧縮技術を特定する第1のヘッダおよび第2の圧縮技術を特定する第2のヘッダを生成するヘッダ生成器と、オフチップメモリに記憶される、第1のヘッダを伴う第1の圧縮データブロックおよび第2のヘッダを伴う第2の圧縮データブロックを送信するインターフェースと、を含む装置を含む。
実施例2は、実施例1の装置を含み、データプロセッサは、ブロックのデータが同じ値に対応する場合に、第1の圧縮技術を選択し、ブロックのデータが少なくとも1つの異なる値を含む場合に第2の圧縮技術を選択するものである。
実施例3は、実施例1の装置を含み、第1の圧縮技術は、ハフマン圧縮技術、RLE圧縮技術または圧縮技術なしのうちの少なくとも1つである。
実施例4は、実施例3の装置を含み、データプロセッサは、ハフマン圧縮技術が圧縮技術なしよりも多くのデータをもたらす場合に、第1の圧縮技術を圧縮技術なしと選択するものである。
実施例5は、実施例1の装置を含み、圧縮器は、第1の圧縮データブロックを第1の圧縮データのサブブロックに分割するものである。
実施例6は、実施例5の装置を含み、第1の圧縮データのサブブロックは、サイズが不均一である。
実施例7は、実施例5の装置を含み、サブブロックにパターンを追加することによって、パターンでサブブロックをパッドする1つ以上のパッダをさらに含む。
実施例8は、実施例1の装置を含み、データブロックは、サイズが均一である。
実施例9は、実施例1の装置を含み、第1の圧縮器および第2の圧縮器は、第1の圧縮技術および第2の圧縮技術をそれぞれのブロックに対して並列に実行するものである。
実施例10は、実施例1の装置を含み、圧縮器は、選択された第1の圧縮技術が圧縮技術なしよりも多くのデータをもたらす場合に、第1の圧縮データブロックを破棄し、非圧縮のデータブロックを保持するものである。
実施例11は、実施例10の装置を含み、第1のヘッダは、圧縮技術なしを特定する。
実施例12は、実行されると、少なくとも機械に、データセットを複数のデータブロックに分割し、複数のデータブロックのうちの第1のブロックに対する第1の圧縮技術を、第1のブロックの第1の特性に基づいて選択し、複数のデータブロックのうちの第2のブロックに対する第2の圧縮技術を、第2のブロックの第2の特性に基づいて選択し、第1の圧縮技術を使用して第1のブロックを圧縮して第1の圧縮データブロックを生成し、第2の圧縮技術を使用して第2のブロックを圧縮して第2の圧縮データブロックを生成し、第1の圧縮技術を特定する第1のヘッダおよび第2の圧縮技術を特定する第2のヘッダを生成し、第1のヘッダを伴う第1の圧縮データブロックおよび第2のヘッダを伴う第2の圧縮データブロックをチップメモリに記憶する、ことをさせる命令を含む非一時的なコンピュータ読み取り可能記憶媒体を含む。
実施例13は、実施例12のコンピュータ読み取り可能な記憶媒体を含み、命令は、ブロックのデータが同じ値に対応する場合に、機械に第1の圧縮技術を選択させ、ブロックのデータが少なくとも1つの異なる値を含む場合に、第2の圧縮技術を選択させる。
実施例14は、実施例12のコンピュータ読み取り可能な記憶媒体を含み、第1の圧縮技術は、ハフマン圧縮技術、RLE圧縮技術または圧縮技術なしのうちの少なくとも1つである。
実施例15は、実施例14のコンピュータ読み取り可能な記憶媒体を含み、命令は、機械に、ハフマン圧縮技術が圧縮技術なしよりも多くのデータをもたらす場合に、第1の圧縮技術を圧縮技術なしと選択させる。
実施例16は、実施例12のコンピュータ読み取り可能な記憶媒体を含み、命令は、機械に、第1の圧縮データブロックを第1の圧縮データのサブブロックに分割させる。
実施例17は、実施例16のコンピュータ読み取り可能な記憶媒体を含み、第1の圧縮データのサブブロックは、サイズが不均一である。
実施例18は、実施例16のコンピュータ読み取り可能な記憶媒体を含み、命令は、機械に、サブブロックにパターンを追加することによって、該パターンでサブブロックをパッドさせる。
実施例19は、実施例12のコンピュータ読み取り可能な記憶媒体を含み、データブロックは、サイズが均一である。
実施例20は、実施例12のコンピュータ読み取り可能な記憶媒体を含み、命令は、機械に、第1の圧縮技術および第2の圧縮技術をそれぞれのブロックに対して並列に実行させる。
実施例21は、実施例12のコンピュータ読み取り可能な記憶媒体を含み、命令は、機械に、選択された第1の圧縮技術が圧縮技術なしよりも多くのデータをもたらす場合に、第1の圧縮データブロックを破棄させ、非圧縮データブロックを保持させる。
実施例22は、実施例20のコンピュータ読み取り可能な記憶媒体を含み、第1のヘッダは、圧縮技術なしを特定する。
実施例23は、データセットを複数のデータブロックに分割することと、複数のデータブロックのうちの第1のブロックに対する第1の圧縮技術を、第1のブロックの第1の特性に基づいて選択することと、複数のデータブロックのうちの第2のブロックに対する第2の圧縮技術を、第2のブロックの第2の特性に基づいて選択することと、第1の圧縮技術を使用して第1のブロックを圧縮して第1の圧縮データブロックを生成することと、第2の圧縮技術を使用して第2のブロックを圧縮して第2の圧縮データブロックを生成することと、第1の圧縮技術を特定する第1のヘッダおよび第2の圧縮技術を特定する第2のヘッダを生成することと、第1のヘッダを伴う第1の圧縮データブロックおよび第2のヘッダを伴う第2の圧縮データブロックをチップメモリに記憶することと、を含む方法を含む。
実施例24は、実施例23の方法を含み、第1の圧縮技術は、ブロックのデータが同じ値に対応する場合に選択され、第2の圧縮技術は、ブロックのデータが少なくとも1つの異なる値を含む場合に選択される。
実施例25は、実施例23の装置を含み、第1の圧縮技術は、ハフマン圧縮技術、RLE圧縮技術または無圧縮技術なしのうちの少なくとも1つである。
実施例26は、実施例25の装置を含み、第1の圧縮技術は、ハフマン圧縮技術が圧縮技術なしよりも多くのデータをもたらす場合に、圧縮技術なしと選択される。
実施例27は、実施例23の装置を含み、第1の圧縮データブロックを、第1の圧縮データのサブブロックに分割することをさらに含む。
実施例28は、実施例27の装置を含み、第1の圧縮データのサブブロックは、サイズが不均一である。
実施例29は、実施例27の装置を含み、サブブロックにパターンを追加することによって、該パターンでサブブロックをパッドすることをさらに含む。
実施例30は、実施例23の装置を含み、データブロックは、サイズが均一である。
実施例31は、実施例23の装置を含み、第1の圧縮技術および第2の圧縮技術が、それぞれのブロックに対して並列に実行される。
実施例32は、実施例23の装置を含み、選択された第1の圧縮技術が、圧縮技術なしよりも多くのデータをもたらす場合に、第1の圧縮データブロックを廃棄し、非圧縮データブロックを保持することをさらに含む。
実施例33は、実施例32の装置を含み、第1のヘッダは、圧縮技術なしを特定する。
実施例34は、実行されると、少なくとも機械に、実行のための第2の命令を配布、設定、アセンブル、インストール、インスタンス化、検索、伸長および復号することのうちの少なくとも1つを実行させる第1の命令と、実行されると、少なくとも機械に、データセットを複数のデータブロックに分割し、複数のデータブロックのうちの第1のブロックに対する第1の圧縮技術を、第1のブロックの第1の特性に基づいて選択し、複数のデータブロックのうちの第2のブロックに対する第2の圧縮技術を、第2のブロックの第2の特性に基づいて選択し、第1の圧縮技術を使用して第1のブロックを圧縮して第1の圧縮データブロックを生成し、第2の圧縮技術を使用して第2のブロックを圧縮して第2の圧縮データブロックを生成し、第1の圧縮技術を特定する第1のヘッダおよび第2の圧縮技術を特定する第2のヘッダを生成し、第1のヘッダを伴う第1の圧縮データブロックおよび第2のヘッダを伴う第2の圧縮データブロックをチップメモリに記憶する、ことをさせる第2の命令とを含む例示的なコンピュータ読み取り可能記憶媒体。
実施例35は、実施例34のコンピュータ読み取り可能記憶媒体を含み、命令は、ブロックのデータが同じ値に対応する場合に、機械に第1の圧縮技術を選択させ、ブロックのデータが少なくとも1つの異なる値を含む場合に、第2の圧縮技術を選択させる。
実施例36は、実施例34のコンピュータ読み取り可能記憶媒体を含み、第1の圧縮技術は、ハフマン圧縮技術、RLE圧縮技術または圧縮技術なしのうちの少なくとも1つである。
実施例37は、実施例36のコンピュータ読み取り可能記憶媒体を含み、命令は、機械に、ハフマン圧縮技術が圧縮技術なしよりも多くのデータをもたらす場合に、第1の圧縮技術を圧縮技術なしと選択させる。
実施例38は、実施例34のコンピュータ読み取り可能記憶媒体を含み、命令は、機械に、第1の圧縮データブロックを第1の圧縮データのサブブロックに分割させる。
実施例39は、実施例38のコンピュータ読み取り可能記憶媒体を含み、第1の圧縮データのサブブロックは、サイズが不均一である。
実施例40は、実施例38のコンピュータ読み取り可能記憶媒体を含み、命令は、機械に、サブブロックにパターンを追加することによって、該パターンでサブブロックをパッドさせる。
実施例41は、実施例34のコンピュータ読み取り可能記憶媒体を含み、データブロックは、サイズが均一である。
実施例42は、実施例34のコンピュータ読み取り可能記憶媒体を含み、命令は、機械に、第1の圧縮技術および第2の圧縮技術をそれぞれのブロックに対して並列に実行させる。
実施例43は、実施例34のコンピュータ読み取り可能記憶媒体を含み、命令は、機械に、選択された第1の圧縮技術が圧縮技術なしよりも多くのデータをもたらす場合に、第1の圧縮データブロックを破棄させ、非圧縮データブロックを保持させる。
実施例44は、実施例42のコンピュータ読み取り可能記憶媒体を含み、第1のヘッダは、圧縮技術なしを特定する。
以上から、オンチップニューラルネットワークおよび/またはハードウェアアクセラレータに送信される前に、オフチップメモリに記憶されたデータを圧縮する例示的な方法、装置および製造物品が開示されていることが理解されるであろう。開示された方法、装置および製造物品は、オンチップのニューラルネットワークおよび/またはハードウェアアクセラレータと共にオフチップメモリの利用を容易にし、メモリ容量を増加させることによって、計算デバイスの効率を改善する。本明細書に開示された例を用いて、ユーザは、より高い圧縮比を達成するために、特定のアプリケーションデータプロファイルに圧縮スキームを仕立てるができる。オフチップ構成要素からオンチップ構成要素にデータを転送する前にデータを圧縮することによって、本明細書に開示された実施例は、圧縮なしでデータを送信することのボトルネック効果を防ぐ、そうでなければ低減する。追加的に、データをデータのブロックおよび/またはサブブロックに分割することによって、本明細書に開示された実施例は、オンチップ構成要素を使用するデータの並列復号を容易にし、それによってオンチップ構成要素の処理帯域幅を増加させる。本明細書に開示された一部ハフマン符号化スキームの例を使用することにより、ハードウェアメモリの制限および速度の要件と互換性があるようにハフマン符号化ルックアップテーブルの要件を低減する。従って、開示された方法、装置、および製造物品は、コンピュータの機能における1つまたは複数の改良に向けられている。
一定の例示的な方法、装置および製造物品が本明細書に開示されているが、本特許がカバーする範囲はそれに限定されない。それどころか、この特許は、この特許の特許請求の範囲内にある全ての方法、装置および製造物品をカバーする。

Claims (33)

  1. データを記憶するオフチップメモリと、
    データセットを複数のデータブロックに分割するデータスライサと、
    データプロセッサであって、
    前記複数のデータブロックのうちの第1のブロックに対する第1の圧縮技術を、該第1のブロックの第1の特性に基づいて選択し、
    前記複数のデータブロックのうちの第2のブロックに対する第2の圧縮技術を、該第2のブロックの第2の特性に基づいて選択する、データプロセッサと、
    前記第1の圧縮技術を使用して前記第1のブロックを圧縮して第1の圧縮データブロックを生成する第1の圧縮器と、
    前記第2の圧縮技術を使用して前記第2のブロックを圧縮して第2の圧縮データブロックを生成する第2の圧縮器と、
    前記第1の圧縮技術を特定する第1のヘッダおよび前記第2の圧縮技術を特定する第2のヘッダを生成するヘッダ生成器と、
    前記オフチップメモリに記憶される、前記第1のヘッダを伴う前記第1の圧縮データブロックおよび前記第2のヘッダを伴う前記第2の圧縮データブロックを送信するインターフェースと、を含む装置。
  2. 前記データプロセッサは、前記ブロックのデータが同じ値に対応する場合に、前記第1の圧縮技術を選択し、
    前記ブロックの前記データが少なくとも1つの異なる値を含む場合に第2の圧縮技術を選択するものである、請求項1に記載の装置。
  3. 前記第1の圧縮技術は、ハフマン圧縮技術、RLE圧縮技術または圧縮技術なしのうちの少なくとも1つである、請求項1に記載の装置。
  4. 前記データプロセッサは、ハフマン圧縮技術が前記圧縮技術なしよりも多くのデータをもたらす場合に、前記第1の圧縮技術を前記圧縮技術なしと選択するものである、請求項3に記載の装置。
  5. 前記第1の圧縮器は、前記第1の圧縮データブロックを第1の圧縮データのサブブロックに分割するものである、請求項1に記載の装置。
  6. 前記第1の圧縮データのサブブロックは、サイズが不均一である、請求項5に記載の装置。
  7. 前記サブブロックにパターンを追加することによって、該パターンで前記サブブロックをパッドする1つ以上のパッダをさらに含む、請求項5に記載の装置。
  8. 前記データブロックは、サイズが均一である、請求項1に記載の装置。
  9. 前記第1の圧縮器および前記第2の圧縮器は、前記第1の圧縮技術および前記第2の圧縮技術をそれぞれのブロックに対して並列に実行するものである、請求項1に記載の装置。
  10. 前記第1の圧縮器は、選択された前記第1の圧縮技術が圧縮技術なしよりも多くのデータをもたらす場合に、前記第1の圧縮データブロックを破棄し、非圧縮の前記データブロックを保持するものである、請求項1に記載の装置。
  11. 前記第1のヘッダは、前記圧縮技術なしを特定する、請求項10に記載の装置。
  12. 実行されると、少なくとも機械に、
    データセットを複数のデータブロックに分割し、
    前記複数のデータブロックのうちの第1のブロックに対する第1の圧縮技術を、該第1のブロックの第1の特性に基づいて選択し、
    前記複数のデータブロックのうちの第2のブロックに対する第2の圧縮技術を、該第2のブロックの第2の特性に基づいて選択し、
    前記第1の圧縮技術を使用して前記第1のブロックを圧縮して第1の圧縮データブロックを生成し、
    前記第2の圧縮技術を使用して前記第2のブロックを圧縮して第2の圧縮データブロックを生成し、
    前記第1の圧縮技術を特定する第1のヘッダおよび前記第2の圧縮技術を特定する第2のヘッダを生成し、
    前記第1のヘッダを伴う前記第1の圧縮データブロックおよび前記第2のヘッダを伴う前記第2の圧縮データブロックをチップメモリに記憶する、
    ことをさせる命令を含む非一時的なコンピュータ読み取り可能記憶媒体。
  13. 前記命令は、前記ブロックのデータが同じ値に対応する場合に、前記機械に前記第1の圧縮技術を選択させ、前記ブロックの前記データが少なくとも1つの異なる値を含む場合に、前記第2の圧縮技術を選択させる、請求項12に記載のコンピュータ読み取り可能記憶媒体。
  14. 前記第1の圧縮技術は、ハフマン圧縮技術、RLE圧縮技術または圧縮技術なしのうちの少なくとも1つである、請求項12に記載のコンピュータ読み取り可能記憶媒体。
  15. 前記命令は、前記機械に、ハフマン圧縮技術が前記圧縮技術なしよりも多くのデータをもたらす場合に、前記第1の圧縮技術を前記圧縮技術なしと選択させる、請求項14に記載のコンピュータ読み取り可能記憶媒体。
  16. 前記命令は、前記機械に、前記第1の圧縮データブロックを第1の圧縮データのサブブロックに分割させる、請求項12に記載のコンピュータ読み取り可能記憶媒体。
  17. 前記第1の圧縮データのサブブロックは、サイズが不均一である、請求項16に記載のコンピュータ読み取り可能記憶媒体。
  18. 前記命令は、前記機械に、前記サブブロックにパターンを追加することによって、該パターンで前記サブブロックをパッドさせる、請求項16に記載のコンピュータ読み取り可能記憶媒体。
  19. 前記データブロックは、サイズが均一である、請求項12に記載のコンピュータ読み取り可能記憶媒体。
  20. 前記命令は、前記機械に、前記第1の圧縮技術および前記第2の圧縮技術をそれぞれのブロックに対して並列に実行させる、請求項12に記載のコンピュータ読み取り可能記憶媒体。
  21. 前記命令は、前記機械に、選択された前記第1の圧縮技術が圧縮技術なしよりも多くのデータをもたらす場合に、前記第1の圧縮データブロックを破棄させ、非圧縮データブロックを保持させる、請求項12に記載のコンピュータ読み取り可能記憶媒体。
  22. 前記第1のヘッダは、圧縮技術なしを特定する、請求項20に記載のコンピュータ読み取り可能記憶媒体。
  23. データセットを複数のデータブロックに分割することと、
    前記複数のデータブロックのうちの第1のブロックに対する第1の圧縮技術を、該第1のブロックの第1の特性に基づいて選択することと、
    前記複数のデータブロックのうちの第2のブロックに対する第2の圧縮技術を、該第2のブロックの第2の特性に基づいて選択することと、
    前記第1の圧縮技術を使用して前記第1のブロックを圧縮して第1の圧縮データブロックを生成することと、
    前記第2の圧縮技術を使用して前記第2のブロックを圧縮して第2の圧縮データブロックを生成することと、
    前記第1の圧縮技術を特定する第1のヘッダおよび前記第2の圧縮技術を特定する第2のヘッダを生成することと、
    前記第1のヘッダを伴う前記第1の圧縮データブロックおよび前記第2のヘッダを伴う前記第2の圧縮データブロックをチップメモリに記憶することと、を含む方法。
  24. 前記第1の圧縮技術は、前記ブロックのデータが同じ値に対応する場合に選択され、前記第2の圧縮技術は、前記ブロックの前記データが少なくとも1つの異なる値を含む場合に選択される、請求項23に記載の方法。
  25. 前記第1の圧縮技術は、ハフマン圧縮技術、RLE圧縮技術または無圧縮技術なしのうちの少なくとも1つである、請求項23に記載の方法。
  26. 前記第1の圧縮技術は、ハフマン圧縮技術が前記圧縮技術なしよりも多くのデータをもたらす場合に、圧縮技術なしと選択される、請求項25に記載の方法。
  27. 前記第1の圧縮データブロックを、第1の圧縮データのサブブロックに分割することをさらに含む、請求項23に記載の方法。
  28. 前記第1の圧縮データのサブブロックは、サイズが不均一である、請求項27に記載の方法。
  29. 前記サブブロックにパターンを追加することによって、該パターンで前記サブブロックをパッドすることをさらに含む、請求項27に記載の方法。
  30. 前記データブロックは、サイズが均一である、請求項23に記載の方法。
  31. 前記第1の圧縮技術および前記第2の圧縮技術が、それぞれのブロックに対して並列に実行される、請求項23に記載の方法。
  32. 選択された前記第1の圧縮技術が、圧縮技術なしよりも多くのデータをもたらす場合に、前記第1の圧縮データブロックを廃棄し、非圧縮データブロックを保持することをさらに含む、請求項23に記載の方法。
  33. 前記第1のヘッダは、前記圧縮技術なしを特定する、請求項32に記載の方法。
JP2020030252A 2019-02-27 2020-02-26 データを圧縮する方法および装置 Active JP7548706B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/288026 2019-02-27
US16/288,026 US11075647B2 (en) 2019-02-27 2019-02-27 Methods and apparatus to compress data

Publications (2)

Publication Number Publication Date
JP2020141402A true JP2020141402A (ja) 2020-09-03
JP7548706B2 JP7548706B2 (ja) 2024-09-10

Family

ID=72139129

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020030252A Active JP7548706B2 (ja) 2019-02-27 2020-02-26 データを圧縮する方法および装置

Country Status (5)

Country Link
US (2) US11075647B2 (ja)
JP (1) JP7548706B2 (ja)
KR (1) KR20200105432A (ja)
CN (1) CN111626411A (ja)
DE (1) DE102020201153A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022187683A (ja) * 2021-06-08 2022-12-20 株式会社日立製作所 データ圧縮伸長システム、及びその方法

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3831067A1 (en) * 2018-08-03 2021-06-09 V-Nova International Limited Upsampling for signal enhancement coding
EP3633857B1 (en) * 2018-10-03 2022-01-26 BlackBerry Limited Methods and devices for on-the-fly coder mapping updates in point cloud coding
US11075647B2 (en) 2019-02-27 2021-07-27 Movidius Limited Methods and apparatus to compress data
EP3817236B1 (en) * 2019-11-04 2024-10-16 Samsung Electronics Co., Ltd. Neural network data processing method and apparatus
US11664816B2 (en) 2020-04-22 2023-05-30 Apple Inc. Lossy compression techniques
US11405622B2 (en) * 2020-04-22 2022-08-02 Apple Inc. Lossless compression techniques
US11296995B2 (en) 2020-08-31 2022-04-05 Micron Technology, Inc. Reduced sized encoding of packet length field
US11412075B2 (en) 2020-08-31 2022-08-09 Micron Technology, Inc. Multiple protocol header processing
US11360920B2 (en) 2020-08-31 2022-06-14 Micron Technology, Inc. Mapping high-speed, point-to-point interface channels to packet virtual channels
US11539623B2 (en) 2020-08-31 2022-12-27 Micron Technology, Inc. Single field for encoding multiple elements
US11418455B2 (en) 2020-08-31 2022-08-16 Micron Technology, Inc. Transparent packet splitting and recombining
CN112200301B (zh) * 2020-09-18 2024-04-09 星宸科技股份有限公司 卷积计算装置及方法
US11791838B2 (en) 2021-01-15 2023-10-17 Samsung Electronics Co., Ltd. Near-storage acceleration of dictionary decoding
CN113485950A (zh) * 2021-06-22 2021-10-08 上海天数智芯半导体有限公司 一种合并发送PCIe存储器写请求的系统及方法
CN113381768B (zh) * 2021-08-11 2021-11-09 苏州浪潮智能科技有限公司 一种哈夫曼校正编码方法、系统及相关组件
KR102703790B1 (ko) * 2021-10-22 2024-09-06 에이치씨에스테크놀로지 주식회사 정밀 패터닝을 위한 레이저 롤 패터닝 장치
US12535950B2 (en) * 2023-03-24 2026-01-27 Samsung Electronics Co., Ltd. Memory device compressing soft decision data and operating method thereof
WO2024197659A1 (zh) * 2023-03-29 2024-10-03 华为技术有限公司 数据传输方法、通信装置及通信系统
CN117579079B (zh) * 2024-01-15 2024-03-29 每日互动股份有限公司 一种数据压缩的处理方法、装置、设备及介质
WO2026079841A1 (ko) * 2024-10-13 2026-04-16 삼성전자주식회사 압축 회로를 포함하는 전자 장치
CN121000872B (zh) * 2025-10-15 2026-02-06 摩尔线程智能科技(北京)股份有限公司 视频切片编码控制方法及熵编码器、设备、可读存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05344162A (ja) * 1992-06-09 1993-12-24 Canon Inc データ伝送装置
JPH07212242A (ja) * 1992-02-13 1995-08-11 Ind Technol Res Inst 可変長復号化器
JPH08107360A (ja) * 1994-10-07 1996-04-23 Matsushita Electric Ind Co Ltd データ記憶装置ならびにデータ読出装置
JPH10232838A (ja) * 1996-11-05 1998-09-02 Hitachi Ltd ディスク記憶システム
JPH11284518A (ja) * 1998-03-30 1999-10-15 Hitachi Ltd 前処理付きデータ圧縮方法および圧縮データの伸長方法
JP2001045479A (ja) * 1999-07-29 2001-02-16 Sanyo Electric Co Ltd 可変長符号化データの誤り保護方法、及び装置
US20020097172A1 (en) * 1998-12-11 2002-07-25 Fallon James J. Content independent data compression method and system
JP2004200893A (ja) * 2002-12-17 2004-07-15 Fuji Xerox Co Ltd 符号化装置、符号化方法および符号化プログラム
JP2018061199A (ja) * 2016-10-07 2018-04-12 株式会社東芝 データ圧縮装置、及び、データ伸張装置、並びに、データ圧縮伸張装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101241508B (zh) * 2007-08-01 2011-05-18 金立 结构化数据序列的压缩方法
US8194736B2 (en) * 2008-04-15 2012-06-05 Sony Corporation Video data compression with integrated lossy and lossless compression
JP2013506917A (ja) * 2009-09-30 2013-02-28 サンプリファイ システムズ インコーポレイテッド 圧縮及び復元を用いたマルチ・プロセッサの波形データ交換の改善
US9158686B2 (en) * 2012-03-30 2015-10-13 Altera Corporation Processing system and method including data compression API
WO2014029081A1 (zh) * 2012-08-21 2014-02-27 华为技术有限公司 压缩方法及设备
CN103997648B (zh) * 2014-06-11 2017-04-05 中国科学院自动化研究所 一种基于dsp的jpeg2000标准图像快速解压缩系统及方法
US10691361B2 (en) * 2017-02-24 2020-06-23 Microsoft Technology Licensing, Llc Multi-format pipelined hardware decompressor
CN107565970B (zh) * 2017-08-17 2021-01-15 苏州浪潮智能科技有限公司 一种基于特征识别的混合无损压缩方法及装置
US11075647B2 (en) 2019-02-27 2021-07-27 Movidius Limited Methods and apparatus to compress data

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07212242A (ja) * 1992-02-13 1995-08-11 Ind Technol Res Inst 可変長復号化器
JPH05344162A (ja) * 1992-06-09 1993-12-24 Canon Inc データ伝送装置
JPH08107360A (ja) * 1994-10-07 1996-04-23 Matsushita Electric Ind Co Ltd データ記憶装置ならびにデータ読出装置
JPH10232838A (ja) * 1996-11-05 1998-09-02 Hitachi Ltd ディスク記憶システム
JPH11284518A (ja) * 1998-03-30 1999-10-15 Hitachi Ltd 前処理付きデータ圧縮方法および圧縮データの伸長方法
US20020097172A1 (en) * 1998-12-11 2002-07-25 Fallon James J. Content independent data compression method and system
JP2001045479A (ja) * 1999-07-29 2001-02-16 Sanyo Electric Co Ltd 可変長符号化データの誤り保護方法、及び装置
JP2004200893A (ja) * 2002-12-17 2004-07-15 Fuji Xerox Co Ltd 符号化装置、符号化方法および符号化プログラム
JP2018061199A (ja) * 2016-10-07 2018-04-12 株式会社東芝 データ圧縮装置、及び、データ伸張装置、並びに、データ圧縮伸張装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
XIAOKE QIN ET AL.: "Decoding-Aware Compression of FPGA Bitstreams", IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS, vol. 19, no. 3, JPN6024001406, 2011, pages 411 - 419, ISSN: 0005242851 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022187683A (ja) * 2021-06-08 2022-12-20 株式会社日立製作所 データ圧縮伸長システム、及びその方法
JP7801853B2 (ja) 2021-06-08 2026-01-19 株式会社日立製作所 データ圧縮伸長システム、データ圧縮伸長方法、及びデータ圧縮伸長プログラム

Also Published As

Publication number Publication date
JP7548706B2 (ja) 2024-09-10
US20200274552A1 (en) 2020-08-27
US20220158654A1 (en) 2022-05-19
US11075647B2 (en) 2021-07-27
KR20200105432A (ko) 2020-09-07
DE102020201153A1 (de) 2020-08-27
CN111626411A (zh) 2020-09-04
US11817887B2 (en) 2023-11-14

Similar Documents

Publication Publication Date Title
JP7548706B2 (ja) データを圧縮する方法および装置
CN113810057B (zh) 用于语义值数据压缩和解压缩的方法、设备和系统
TWI875684B (zh) 用於影像壓縮之頻率分量選擇
JP4801776B2 (ja) データ圧縮
CN114116635B (zh) 压缩数据流的并行解压缩
TWI757303B (zh) 影像壓縮方法與設備
KR102175020B1 (ko) 데이터의 소스-인코딩 및 디코딩 디바이스 및 방법
US10547324B2 (en) Data compression coding method, apparatus therefor, and program therefor
JP6045123B2 (ja) エンコーダ、デコーダ及び方法
US9661321B2 (en) Remote viewing of large image files
KR20120018360A (ko) 가변 길이 코딩을 위한 방법 및 장치
KR20220003104A (ko) 무손실 데이터 압축 및 압축 해제를 위한 방법, 장치 및 컴퓨터 프로그램 제품
KR20180067956A (ko) 데이터 압축 장치 및 방법
KR101948403B1 (ko) 코딩 메커니즘을 갖는 통신 시스템 및 그 동작 방법
CN111832257B (zh) 编码数据的条件转码
JP6005273B2 (ja) データストリームの符号化方法、送信方法、伝送方法、データストリームを符号化するための符号化装置、送信装置、および、伝送装置
CN101980464A (zh) 数据编码方法、解码方法、编码器和解码器
US10491241B1 (en) Data compression scheme utilizing a repetitive value within the data stream
KR100636370B1 (ko) 결정 비트를 이용한 부호화 장치 및 그 방법과 그에 따른복호화 장치 및 그 방법
US9948320B1 (en) Semi-dynamic backend coder for data compression
JPWO2011001790A1 (ja) 圧縮データ送受信装置、データ圧縮装置、圧縮データ受信装置及びデータ圧縮方法
HK40056158A (en) Methods, devices and systems for semantic value data compression and decompression
CN116566962A (zh) 音频数据的传输方法、装置、电子设备及存储介质
CN104811207A (zh) 传送器装置、接收器装置、数据压缩及数据解压缩方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240123

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240423

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240730

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240829

R150 Certificate of patent or registration of utility model

Ref document number: 7548706

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150