JP2021141576A - データ処理システム - Google Patents
データ処理システム Download PDFInfo
- Publication number
- JP2021141576A JP2021141576A JP2021017501A JP2021017501A JP2021141576A JP 2021141576 A JP2021141576 A JP 2021141576A JP 2021017501 A JP2021017501 A JP 2021017501A JP 2021017501 A JP2021017501 A JP 2021017501A JP 2021141576 A JP2021141576 A JP 2021141576A
- Authority
- JP
- Japan
- Prior art keywords
- variable length
- data
- chunk
- code
- length code
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 47
- 238000000034 method Methods 0.000 claims description 58
- 230000004913 activation Effects 0.000 claims description 24
- 238000013528 artificial neural network Methods 0.000 claims description 16
- 239000000284 extract Substances 0.000 claims description 13
- 238000004364 calculation method Methods 0.000 description 6
- 230000001537 neural effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4031—Fixed length to variable length coding
- H03M7/4037—Prefix coding
- H03M7/4043—Adaptive prefix coding
- H03M7/4068—Parameterized codes
- H03M7/4075—Golomb codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/70—Type of the data to be coded, other than image and sound
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【課題】可変長符号を含む処理要素及び記憶装置を含むデータ処理システムを提供する。【解決手段】記憶装置は、処理要素によって実行されるとき、データ処理システムに、複数の可変長符号を取得させる符号部分を記憶する。各々の可変長符号は、可変長の第1の部分及び第2の部分を有する。可変長符号は、可変長符号の第1の部分及び可変長符号の第2の部分に分離される。データ処理システムは、可変長符号の第1の部分からのデータを含む処理済みストリームの各々のチャンクに対し、第1の部分からのデータが、制御ルールに従って判定されたサイズを有する処理済みストリームのチャンク内のサブストリームを形成するように、制御ルールのセットを使用して、チャンク内の処理済みストリームを形成する。【選択図】なし
Description
[0001]本発明は、データ処理システムに関し、特に、可変長符号を処理するデータ処理システムに関する。
[0002]当業者に既知である可逆圧縮データ圧縮を実行する1つの方式は、値をゴロムライス符号に変換することである。数値をゴロムライス符号に変換するために、除数として知られるパラメータが選択される。ゴロムライス符号を生成するために、数値が除数によって除算されて2つの部分を生成する。第1の部分は、除数が完全に数値に何回除算したかである商である。第2の部分は、除数を完全に数値に除算した後、存在する場合の残りの数である余りである。
[0003]ゴロムライス符号の例が図1に示される。図1に示される例では、0〜10の値がゴロムライス符号として示される。ゴロムライス符号の第1の部分、商は、単項フォーマットにおいて表される。このフォーマットでは、商の値に等しい「1」の数と、それに続いて「0」であるストップビットによって数が表される。例えば、数9の単項部分は、3が9に3回除算されることを理由に、3つの「1」とストップビット「0」がそれに続く「1110」である。ゴロムライス符号の第2の部分は、固定長二値部分である。この例における除数が「3」であるので、余りは、0、1、または2のみであることがある。したがって、これは、2ビットの固定長二値によって表されることがある。ゴロムライス符号の各々における最後の2ビットは、二値形式において余りを表す。余りは、ゴロムライス符号の単項部分のストップビットの後に現れることを理由に、ゴロムライス符号の「仮数」と称されることがある。
[0004]ゴロムライス符号の単項部分のサイズが変化するので、ゴロムライス符号は、可変長符号のタイプである。各々の符号が復号のために別個に考えられる必要があることを理由に、そのような可変長符号がプロセッサにおいて復号するのに低速であることがある。
[0005]第1の態様に従って、処理要素による使用のための方法が提供され、方法は、複数の可変長符号を取得することであって、各々の可変長符号は、可変長の第1の部分及び第2の部分を有する、取得することと、可変長符号を可変長符号の第1の部分及び可変長符号の第2の部分に分離することと、可変長符号の第1の部分からのデータを含む処理済みストリームの各々のチャンクに対し、第1の部分からのデータが、制御ルールに従って判定されたサイズを有する処理済みストリームのチャンク内のサブストリームを形成するように、制御ルールのセットを使用して、チャンク内の処理済みストリームを形成することと、を含む。
[0006]第2の態様に従って、処理済みデータストリームを復号する方法が提供され、方法は、複数の可変長符号に関連するデータを含む処理済みデータストリームを取得することであって、各々の可変長符号は、可変長の第1の部分及び第2の部分を有し、処理済みストリームは、チャンク内で形成され、処理済みストリームの少なくとも1つのチャンクは、可変長符号の第1の部分から形成されたデータのサブストリームを含む、取得することと、フロー制御ルールのセットを使用して、処理済みデータストリームのチャンク内のサブストリームを識別及び抽出することと、を含む。
[0007]第3の態様に従って、処理要素及び記憶装置を含むデータ処理システムが提供され、記憶装置は、符号部分を記憶し、符号部分は、処理要素によって実行されるとき、データ処理システムに、複数の可変長符号を取得させ、各々の可変長符号は、可変長の第1の部分及び第2の部分を有し、可変長符号を可変長符号の第1の部分及び可変長符号の第2の部分に分離させ、可変長符号の第1の部分からのデータを含む処理済みストリームの各々のチャンクに対し、第1の部分からのデータが、制御ルールに従って判定されたサイズを有する処理済みストリームのチャンク内のサブストリームを形成するように、制御ルールのセットを使用して、チャンク内の処理済みストリームを形成させる。
[0008]添付図面に示されるような実施例を例としてのみ参照して、本技術が更に説明される。
[0025]添付図面を参照して実施形態を議論する前に、実施形態及び関連する利点の以下の説明が提供される。
[0026]一実施形態に従って、処理要素による使用のための方法が提供され、方法は、複数の可変長符号を取得することであって、各々の可変長符号は、可変長の第1の部分及び第2の部分を有する、取得することと、可変長符号を可変長符号の第1の部分及び可変長符号の第2の部分に分離することと、可変長符号の第1の部分からのデータを含む処理済みストリームの各々のチャンクに対し、第1の部分からのデータが、制御ルールに従って判定されたサイズを有する処理済みストリームのチャンク内のサブストリームを形成するように、制御ルールのセットを使用して、チャンク内の処理済みストリームを形成することと、を含む。このようにして、処理済みストリームは、制御ルールから予測可能である可変長符号の第1の部分のサブストリームを有することができる。これは、プロセッサによる可変長符号の第1の部分のより効率的な処理を可能にすることができる。
[0027]可変長符号の第1の部分は、単項部分であってもよく、可変長符号の第2の部分は、仮数部分であってもよい。いくつかのケースでは、可変長符号の仮数部分は、切り捨てられた二値部分である。各々の可変長符号の単項部分は、可変長符号によって表される元の値の商を表してもよい。更に、いくつかのケースでは、各々の可変長符号の仮数部分は、可変長符号によって表される元の値の余りを表す固定長の二値符号である。いくつかの実装態様では、可変長符号は、ゴロムライス符号である。
[0028]処理済みストリームの各々のチャンクは、可変長符号の第1の部分からのデータ及び可変長符号の第2の部分からのデータを含んでもよく、可変長符号の第1の部分からのデータを含んでもよく、及び可変長符号の第2の部分からのデータを含まなくてもよく、または可変長符号の第2の部分からのデータを含んでもよく、及び可変長符号の第1の部分からのデータを含まなくてもよい。
[0029]制御ルールは、各々のチャンク内の単項サブストリームのサイズを直列に判定するように構成されてもよい。いくつかのケースでは、制御ルールは、処理済みストリームに追加されないで残っている可変長符号の単項部分の量に基づいて、各々のチャンク内の単項サブストリームのサイズのサイズを判定するように構成されている。いくつかの実装態様に対し、処理済みストリームは、予め定められた長さのセルから形成され、処理済みストリームに追加されないで残っている可変長符号の単項部分の測定は、処理済みストリームに追加されないで残っているセルと関連付けられた可変長符号の単項部分のビットの数である。セル内のデータを処理することによって、フロー制御ルールは、単項サブストリームのサイズがデコーダによって予測されることを可能にすることができる。
[0030]制御ルールは、予め定められたチャンク構造のセットの間で選択するルールであってもよい。各々のチャンク構造は、チャンク内の各々の位置にあるべきであるデータのタイプを定義してもよい。チャンク構造のセットは、セル内の第1のチャンクに対する少なくとも1つのチャンク構造を含んでもよい。セル内の第1のチャンクに対する少なくとも1つのチャンク構造は、セルに含まれるデータに関する情報を含むヘッダ部分を含んでもよい。
[0031]第1の実施形態に従ったいくつかの方法では、処理済みストリームは、予め定められた長さのセルから形成され、処理済みストリームの各々のセルは、ヘッダ及び複数のチャンクを有し、ヘッダは、セルの長さ及びセル内の可変長符号の単項部分の長さを示す。これは、復号の間にセルに残っている単項データの量をデコーダが追跡することを可能にすることができる。
[0032]第1の実施形態は、第2の複数の可変長符号を取得することと、第2の複数の可変長符号を可変長符号の第1の部分及び可変長符号の第2の部分に分離することと、を更に含んでもよく、チャンク内の処理済みストリームを形成するステップは、第1の複数の可変長符号及び第2の複数の可変長符号のうちの少なくとも1つの第1の部分からのデータを含む処理済みストリームの各々のチャンクに対し、フロー制御ルールが第1の複数の可変長符号の第1の部分の数及び第2の複数の可変長符号の第1の部分の数がチャンクに含まれると判定するように、制御ルールのセットを使用する。
[0033]いくつかの実装態様では、処理済みストリームを形成することは、チャンクに含まれた第1の複数の可変長符号の第1の部分の数とチャンクに含まれた第2の複数の可変長符号の第1の部分の数との間の差を記録するバランス値を維持することを含み、フロー制御ルールは、バランス値に基づいて、チャンクに含まれる第1の複数の可変長符号の第1の部分の数及び第2の複数の可変長の第1の部分の数を判定する。
[0034]いくつかの用途では、複数の可変長符号は、ニューラルネットワークにおける使用のための重み値を表す。他の用途では、複数の可変長符号は、ニューラルネットワークの層の出力である活性化ストリーム内の値を表す。
[0035]第2の実施形態に従って、処理済みデータストリームを復号する方法が提供され、方法は、複数の可変長符号に関連するデータを含む処理済みデータストリームを取得することであって、各々の可変長符号は、可変長の第1の部分及び第2の部分を有し、処理済みストリームは、チャンク内で形成され、処理済みストリームの少なくとも1つのチャンクは、可変長符号の第1の部分から形成されたデータのサブストリームを含む、取得することと、フロー制御ルールのセットを使用して、処理済みデータストリームのチャンク内のサブストリームを識別及び抽出することと、を含む。
[0036]いくつかの実装態様では、可変長符号の各々の第1の部分は、ストップビットを有する単項データとして符号化される。方法は、処理済みデータの複数のチャンクから、複数の識別及び抽出されたサブストリームを取得することと、各々の抽出されたサブストリームを、サブストリーム内のストップビットのビット位置のリストを表す中間形式に変換することと、複数の変換されたサブストリームを組み合わせて、ビット位置の拡大されたリストを形成することと、ビット位置の拡大されたリスト内のストップビットの間の距離を測定して、第1のストリーム内の可変長符号の第1の部分の値を回復することと、を更に含んでもよい。
[0037]いくつかの実施形態では、フロー制御ルールは、処理済みストリームから復号されないで残っている可変長符号の単項部分の量に基づいて、復号されることになる各々のチャンク内の単項サブストリームのサイズを判定するように構成されている。処理済みストリームは、予め定められた長さのセルから形成されてもよく、処理済みストリームから復号されないで残っている可変長符号の単項部分の量は、処理済みストリームから復号されないで残っているセルと関連付けられた可変長符号の単項部分のビットの数であってもよい。
[0038]他の実施形態では、処理済みストリームは加えて、第2の複数の可変長符号に属する可変長符号の第1の部分を含んでもよい。フロー制御ルールは、複数の可変長符号及び第2の複数の可変長符号のうちの少なくとも1つの第1の部分のデータを含む、復号されることになる処理済みストリームの各々のチャンクに対し、フロー制御ルールが、複数の可変長符号の第1の部分の数及び第2の複数の可変長符号の第1の部分の数が復号されることになるチャンクに含まれると判定するように構成されてもよい。
[0039]処理済みストリームのチャンク内のサブストリームを識別及び抽出することは、処理済みストリームから抽出された複数の可変長符号の第1の部分の数と処理済みストリームから抽出された第2の複数の可変長符号の第1の部分の数との間の差を記録するバランス値を維持することを含んでもよい。フロー制御ルールは、バランス値に基づいて、チャンクから抽出されるべき複数の可変長符号の第1の部分の数及び第2の複数の可変長符号の第1の部分の数を判定するために使用されてもよい。
[0040]第3の実施形態に従って、符号部分を記憶した非一時的コンピュータ可読記憶媒体が提供され、符号部分は、処理要素上で実行されるとき、複数の可変長符号を取得することであって、各々の可変長符号は、可変長の第1の部分及び第2の部分を有する、取得すること、可変長符号を可変長符号の第1の部分及び可変長符号の第2の部分に分離すること、並びに可変長符号の第1の部分からのデータを含む処理済みストリームの各々のチャンクに対し、第1の部分からのデータが、制御ルールに従って判定されたサイズを有する処理済みストリームのチャンク内のサブストリームを形成するように、制御ルールのセットを使用して、チャンク内の処理済みストリームを形成すること、の方法を処理要素に実行させる。
[0041]第4の実施形態に従って、符号部分を記憶した非一時的コンピュータ可読記憶媒体が提供され、符号部分は、処理要素上で実行されるとき、処理済みデータストリームを復号する方法を処理要素に実行させ、方法は、複数の可変長符号に関連するデータを含む処理済みデータストリームを取得することであって、各々の可変長符号は、可変長の第1の部分及び第2の部分を有し、処理済みストリームは、チャンク内で形成され、処理済みストリームの少なくとも1つのチャンクは、可変長符号の第1の部分から形成されたデータのサブストリームを含む、取得することと、フロー制御ルールのセットを使用して、処理済みデータストリームのチャンク内のサブストリームを識別及び抽出することと、を含む。
[0042]第5の実施形態に従って、処理要素及び記憶装置を含むデータ処理システムが提供され、記憶装置は、符号部分を記憶し、符号部分は、処理要素によって実行されるとき、データ処理システムに、複数の可変長符号を取得させ、各々の可変長符号は、可変長の第1の部分及び第2の部分を有し、可変長符号を可変長符号の第1の部分及び可変長符号の第2の部分に分離させ、可変長符号の第1の部分からのデータを含む処理済みストリームの各々のチャンクに対し、第1の部分からのデータが、制御ルールに従って判定されたサイズを有する処理済みストリームのチャンク内のサブストリームを形成するように、制御ルールのセットを使用して、チャンク内の処理済みストリームを形成させる。
[0043]第6の実施形態に従って、処理要素及び記憶装置を含むデータ処理システムが提供され、記憶装置は、符号部分を記憶し、符号部分は、処理要素によって実行されるとき、データ処理システムに、複数の可変長符号に関連するデータを含む処理済みデータストリームを取得させ、各々の可変長符号は、可変長の第1の部分及び第2の部分を含み、処理済みストリームは、チャンク内で形成され、処理済みストリームの少なくとも1つのチャンクは、可変長符号の第1の部分から形成されたデータのサブストリームを含み、フロー制御ルールのセットを使用して、処理済みデータストリームのチャンク内のサブストリームを識別及び抽出させる。
[0044]ここで、図面を参照して特定の実施形態が説明される。
[0045]図2は、全てではないがニューラル処理ユニット(NPU)の構成要素2の一部を示し、構成要素2は、人工知能アプリケーションに関連する計算、特に、ニューラルネットワークに関連する計算を実行する特殊チップである。言い換えると、NPUは、ニューラルネットワークに関連する特定の計算のハードウェア加速化を可能にする。構成要素2は、活性化値をNPUの外部のDRAM(図示せず)に書き込む構成要素である。
[0046]ニューラルネットワークに関連する計算を実行するとき、計算は、ニューラルネットワークの各々の層に対して実行されてもよい。それらの計算は、活性化データとして知られる出力を生成し、活性化データは、大容量であることがあり、そのデータを使用して更なる計算を実行することができる前に記憶される必要がある。活性化データをメモリに記憶すること、及び活性化データをメモリから取り出すことは、外部メモリからプロセッサへのデータ転送に対する制約に起因して、相対的に低速の処理であることがある。したがって、プロセッサ性能を改善するために、ゴロムライス符号を使用して活性化層からのデータを圧縮することが望ましい。
[0047]構成要素2は、記憶のために活性化データを処理するように構成される。活性化データが受信され、データのタイルにグループ化される。データのタイルは、要素の8×8のグループとして定義され、要素は、8ビットの圧縮されていない活性化データである。エンコーダ20の形式にある処理要素は、活性化データをゴロムライス符号に変換することによって、受信された活性化データを圧縮するように構成される。以下で説明される更なるステップは次いで、活性化データを復号するのをより容易にするために実行される。
[0048]ゴロムライス符号などの可変長符号を復号するとき、高レートにおいて構文解析することが困難である。これは、先行するゴロムライス符号の長さが、次のゴロムライス符号を識別及び復号することができる前に既知である必要があるように、ゴロムライス符号の間の直列依存性が存在することを理由とする。したがって、ゴロムライス符号を復号する典型的なハードウェア実装態様は、単一のパーサを使用して直接構文解析するとき、クロックサイクルごとに1つまたは2つのゴロムライス符号のレートを達成することができる。
[0049]第1の特定の実施形態において説明される技術は、異なるアプローチを取る。図3は、圧縮されていない活性化データを受信するエンコーダ20によって実行されるステップを示すフローチャートである。ステップS30では、このケースでは、エンコーダ20による変換によって、ゴロムライス符号が取得される。次いで、ステップS31では、エンコーダ20は、ゴロムライス符号を単項値のストリーム及び余り値のストリームに分離し、それらを図2に示されたRAM21に記憶する。
[0050]図4は、3つのデータストリームを示す。ソースデータストリーム40は、ゴロムライス符号のストリームである。ソースデータストリーム40は、値GR1〜GR5によって示される一連のゴロムライス符号を含む。各々のゴロムライス符号は、関連する技術の説明において説明されるタイプの可変長単項部分及び固定長二値部分を有する。3ビットの固定長二値部分が図3に示されるが、二値部分の長さは重要ではなく、他の長さが使用されてもよい。エンコーダ20は、ゴロムライス符号を2つの部分に分割して、図4に示される2つの更なるストリーム41及び42を生成する。第1のストリーム41は、単項ストリームであり、第2のストリーム42は、余りのストリームであり、各々の二値は、固定長を有する。
[0051]ステップS32では、図2に示されたスティッチプロセッサ22は、第1のストリーム及び第2のストリームを共にスティッチして、処理済みストリームを形成する。これは、セルごとに行われ、各々のセルは、2112バイトスロットに記憶された圧縮されていないデータの32個のタイル(2、048個の要素)を表す。何らかのオーバヘッドを許容し、64バイトの全体数に切り上げるために、スロットは、セルよりも大きい。
[0052]各々のセルは、スティッチプロセッサ22によって複数のチャンク内で形成される。セルの第1のチャンクは、ヘッダを常に含む。ストリーム4からの単項データは、スティッチプロセッサ22によって、32ビットの部分において処理済みストリームのチャンクに常にスティッチされる。
[0053]図5及び6を参照してここで説明されるように、セルは、スティッチプロセッサ22によって、フロー制御ルールのセットを使用して形成される。図5は、スティッチプロセッサ22がセルを形成するために使用することができるチャンクの異なる構造を示し、図6は、セルを形成するときにスティッチプロセッサ22によって実行されることになるステップを示す。
[0054]上で言及されたように、セルの第1のチャンクは、ヘッダを含む必要があり、ヘッダは、セルの長さ及びセル内に含まれる単項サブストリームの長さに関する情報を提供する。セル内の余り値の長さは、ヘッダに含まれないが、セルの長さ及び単項サブストリームの長さから導出されることが可能である。
[0055]図5は、構文解析の効率性のために、ゴロムライス符号を復号するデコーダの単一のクロックサイクルにおいて各々のチャンクが消費されることを可能にするために設計された、利用可能なチャンクフォーマットを示す。示されるチャンク構造は、2つのカテゴリに分割され、図5に示される最上部の2つのチャンク構造51及び52は、セルに対する第1のチャンク構造であり、セルの第1のチャンクを形成するときの使用のために選択されてもよい。両方のチャンクフォーマット構造は、32ビット長のヘッダ部分を含む。図5における第1のチャンク構造51及び52の下の、次の5つのチャンク構造53〜57は、セルに含まれることになる圧縮されていないデータの32個のタイルに対応する第1のストリーム及び第2のストリームからの残りの単項データ及び余りデータを含むために、セル内の第1のチャンクがエンコーダ20によって放出された後に使用される。
[0056]使用する適切なチャンク構造を選択するために、エンコーダ20は、フロー制御ルールのセットを使用する。次のチャンクに対するチャンク構造が識別されると、チャンク構造は、適切なデータによりポピュレートされてもよく、放出されてもよい。スティッチプロセッサ22によって使用されるフロー制御ルールは、以下の通りである。セルに対する第1のチャンク構造を選択するとき、図5に示される第1のチャンク構造51は、チャンクに含めるためのスティッチプロセッサ22に対して利用可能なセル内に単項データの32ビットよりも多いビットが存在するときに選択される。そうでなければ、チャンク52がいずれの単項データをも必要としないことを理由に、チャンク構造52は、セルの第1のチャンクを形成するために使用される。単項データの32ビットが利用可能でない状況は、セルに対する圧縮されていない活性化データのいずれもが単項部分を有さない、すなわち、各々の値がゴロムライス符号を生成するために使用される除数未満である場合に起こることがある。このケースでは、エンコーダ20は、ストップビットを単項データとして符号化しない。
[0057]第1のチャンクが放出された後にエンコーダ20によって放出されたセル内の後続のチャンクに対し、セルに含めるための残っている単項データの128ビットよりも多くのビットが存在する場合、チャンク構造53が使用される。単項データが32ビット部分内のチャンクに含まれるので、最終的に、セルに対して符号化されないで残っている単項データの128ビットに満たないビットが存在する。セルに対して符号化されないで残っている単項データの96ビットが存在する場合、次いで、チャンク構造54が使用され、セルに対して符号化されないで残っている単項データの64ビットが存在する場合、次いで、チャンク構造55が使用され、セルに対して符号化されないで残っている単項データの32ビットが存在する場合、次いで、チャンク構造56が使用される。セルの全ての単項データが符号化されたケースでは、次いで、余りデータを放出するためにチャンク構造57が使用される。異なるタイル及び/または要素からの単項データを同一のチャンクに含めることができるように、下位にある活性化データの下位にあるタイル及び要素のグループ化に関わらず、上記チャンク構造に含まれる単項データが選択されることに留意されるべきである。
[0058]上記方法が図6に示される。ステップS60では、図5に示されたチャンク構造51及び52から第1のチャンク構造が選択される。この選択は、上記説明されたような単項データの32ビットの利用可能性に依存する。チャンク構造を選択した後、スティッチプロセッサ22は、ヘッダ部分を生成する。スティッチプロセッサ22は、圧縮されていないデータの32個のタイルに基づいて、セルに含まれることになる単項サブストリームの長さを評価し、その長さを示す情報をヘッダ部分に追加する。セルに含まれることになる全てのデータの長さも評価され、ヘッダ部分に追加される。必要とされる場合、単項データ41の第1のストリームからのデータ、及び余りデータの第2のストリームからのデータは、スティッチプロセッサ22によって選択された、選択されたチャンク構造に従ってチャンクに追加される。
[0059]ステップS61では、上で説明されたフロー制御ルールに従ってチャンク構造53〜57から適切なチャンク構造を選択することによって、処理済みデータストリームの次のチャンクが形成される。チャンク構造を選択した後、単項データ41の第1のストリームからのデータ及び余りデータの第2のストリームからのデータにより、チャンク構造の関連部分を埋めることによって、チャンクが形成される。
[0060]ステップS62では、スティッチプロセッサ22は、より多くのデータがチャンクに形成されるかどうかを判定する。より多くのデータがチャンクに形成される場合、方法は、次のチャンクを形成するようS61に進む。これ以上データが処理されない場合、方法は、S63に進み、終了する。
[0061]上で説明された方法は、セル内の32個のタイルから完全な128ビットのチャンクを形成することができること、及び単項部分を32ビットの部分にスティッチすることができることを想定している。実際には、単項部分の第1のストリーム及び余り部分の第2のストリームが、それらが所望のサイズに到達するまでパディングするためのストップビット「0」を使用してパディングされるケースでは、それらの条件が満たされないことがある。セルに追加されるデータの長さがヘッダに記憶されるにつれて、セル内のデータの長さを識別すること、及び処理済みデータストリームを復号するときにパディングが開始する場所を識別することが可能である。
[0062]次に、デコーダによって記憶された活性化データを復号する方法が図7及び8を参照して説明される。このケースでは、デコーダは、更なる計算における使用のために活性化データがDRAMから読み出されることを可能にするNPUの一部である。デコーダは、処理済みストリームをRAMに記憶するためにエンコーダ20によって使用された、図5に示されたチャンク構造の複製を記憶する。図7のステップS70では、デコーダは、復号するための活性化データのセルの第1のチャンクをRAMから受信する。デコーダは、ヘッダを読み出し、セル内の単項データの長さを識別する。ステップS71では、デコーダは、ヘッダにおいて指定された単項データの長さが32ビット以上であるかどうかを識別する。単項の長さが32ビット以上である場合、次いで、セルの第1のチャンクは、チャンク構造51に従って形成され、単項データ及び余りデータは、既知のチャンク構造に従ってチャンクから抽出されてもよい。ヘッダにおいて識別された単項データの長さが32ビット未満である場合(単項データが32ビット部分においてスティッチされることを理由に、ゼロである)、第1のチャンクは、チャンク構造52に従って形成され、それに従って、第1のチャンクが復号される。データを復号するとき、デコーダは、パラメータU_leftを維持し、パラメータU_leftは、セルのヘッダが検査されるときにセル内の単項の長さの値に最初に設定され、セル内の残っている単項データの量を記録するよう、単項データがチャンクから取り出されるたびに更新される。したがって、チャンク構造51が第1のチャンクに対して使用される場合、次いで、第1のチャンクから単項データの32ビットを抽出した後、パラメータU_leftは32ビットだけ減少する。
[0063]図8は、各々の後続のチャンクに対してチャンク構造を判定するためにデコーダによって使用される方法を示す。ステップS80では、記憶された活性化データの後続のチャンクが受信される。ステップS81では、パラメータU_leftは、セルに対して抽出されないで残っている単項データの量が128ビット以上であるかどうかを判定するよう検査される。抽出されることになる単項データの量が128ビット以上である場合、デコーダは、チャンク構造53が使用されると判定する。ステップS82では、デコーダは、チャンク構造53に従って、チャンクからデータを抽出し、抽出された単項データの量を構成するよう、パラメータU_leftを更新する。
[0064]単項データの128ビット未満のビットが抽出されないで残っている場合、方法は、ステップS83に進む。ステップS83では、パラメータU_leftは、セルに対して抽出されないで残っている単項データの量が96ビットに等しいかどうかを判定するよう検査される。抽出されることになる単項データの量が96ビットに等しい場合、デコーダは、チャンク構造54が使用されると判定する。ステップS84では、デコーダは、チャンク構造54に従って、チャンクからデータを抽出し、抽出された単項データの量を構成するよう、パラメータU_leftを更新する。
[0065]単項データの96ビットよりも多いビットが抽出されないで残っている場合、方法は、ステップS85に進む。ステップS85では、パラメータU_leftは、セルに対して抽出されないで残っている単項データの量が64ビットに等しいかどうかを判定するよう検査される。抽出されることになる単項データの量が64ビットに等しい場合、デコーダは、チャンク構造55が使用されると判定する。ステップS86では、デコーダは、チャンク構造55に従って、チャンクからデータを抽出し、抽出された単項データの量を構成するよう、パラメータU_leftを更新する。
[0066]単項データの64ビット未満のビットが抽出されないで残っている場合、方法は、ステップS87に進む。ステップS87では、パラメータU_leftは、セルに対して抽出されないで残っている単項データの量が32ビットに等しいかどうかを判定するよう検査される。抽出されることになる単項データの量が32ビットに等しい場合、デコーダは、チャンク構造56が使用されると判定する。ステップS86では、デコーダは、チャンク構造56に従って、チャンクからデータを抽出し、抽出された単項データの量を構成するよう、パラメータU_leftを更新する。抽出されることになる単項データの量が32ビットに等しくない場合(ゼロに等しい)、デコーダは、チャンク構造57が使用されると判定する。ステップS89では、デコーダは、チャンク構造57に従って、チャンクからデータを抽出する。
[0067]図7及び8と関連して上で説明された処理に基づいて、デコーダは、エンコーダ20によってRAMに記憶されたデータの処理済みストリームから、単項データ41の第1のストリーム及び余りデータ42の第2のストリームを効率的に再生成することができる。図7及び8に示されるフロー制御ルールを使用することによって、デコーダは、入来する圧縮されたデータストリーム内のデータタイプを示すビットコストなしに、入来するストリーム内のいずれかのポイントにおいて発見されるデータのタイプを決定することができる。
[0068]処理済みデータストリームから単項データ及び余りデータを抽出すると、デコーダは、ゴロムライス符号を復号して、圧縮されていない活性化データを再生成する必要がある。余りデータの第2のストリーム42は、固定長二値の配列であり、本分野において既知の技術を使用して復号するのに単純である。したがって、この処理はここでは更には議論されない。
[0069]ここで、単項データ41の第1のストリームを復号することが図9aと関連して説明される。ステップS90では、単項データの8ビットブロックは、二値形式に変換され、二値形式は、二値ブロック内のストップビットの位置または位置(複数可)を示す。これは、ルックアップテーブルの使用によって行われる。ステップS91では、単項符号が8ビットブロックにわたって及ぶことがあるので、4個の8ビットブロックは32ビットブロックに組み合わされ、次いで、4個の32ビットブロックは、128ビットブロックに組み合わされる。128ビットブロックは再度、ストップビット位置の位置のリストである。単項値を取り出すために、ステップS92では、単項符号の値を与える、各々の隣接するストップビット位置の値の間の差が取られる。
[0070]単項データの8ビットブロックを中間形式に分析するためにルックアップテーブルを使用することによって、図9aの方法を達成することができる。これは、最上部の行94がその下に示される各々のバイト内のビット位置を識別する、図9bに示される。各々のバイトにおける最初のビットが「0」であり、最後のビットが「7」である。第2の行95は、単項データのバイトを示す。単項データにおけるストップビットが「0」であることが想起されよう。第3の行96に示される中間形式では、各々のバイトは、バイト内のストップビットの位置を示す最大で3ビット符号のリストに拡張される。32ビットセグメントへの4個の8ビットセグメントのRadix−4の組み合わせが実行され、図9bの第4の行97及び第5の行98に示される。第4の行97では、識別するビットのペアは、符号への最上位ビット(MSB)として追加される。最初のバイトに対し、値「00」が3ビット符号に追加され、第3のバイトに対し、値「10」が3ビット符号に追加される、などである。第5の行では、5ビット符号が連結されて、32ビットワード内のストップビット位置のリストを形成する。128ビットセグメントへの4個の32ビットセグメントの後続のRadix−4の組み合わせは、同様の処理を使用して、単項ストップビットの位置を示す7ビット符号のリストを生成する。ステップS92にあるように、隣接する値の減算は、単項データの長さ、よって、単項データの値を得る。
[0071]上で説明されたように、第1の特定の実施形態は、セル内のゴロムライス符号の単項部分及び余り部分を組み合わせる。各々のセルは、単項部分及び余り部分の両方を含んでもよい。このセル内の活性化データの単項部分及び余り部分を混合することは、DRAMから取り出される処理済みデータストリームにわたって単項部分及び余り部分を拡散する利点を有する。これは、復号の前に単項データを記憶するためのデコーダにおける構文解析バッファのサイズを低減させることを可能にし、それによって、ハードウェア要件を低減させる。
[0072]第1の特定の実施形態では、活性化データの圧縮が議論された。第2の特定の実施形態では、重み値の圧縮にその技術が適用される。図10aは、第2の特定の実施形態のモバイルデバイス10を示す。モバイルデバイス10が本明細書で説明されるが、説明される技術は、それらに限定されないが、タブレットコンピュータ、ラップトップコンピュータ、パーソナルコンピュータ(PC)、サーバなどを含む、ニューラルネットワークと関連付けられた重み値を取り出す、いずれかのタイプのコンピューティングデバイスに適用されてもよい。図10bは、モバイルデバイス10のハードウェアを示す。モバイルデバイス10は、CPU100の形式にある処理要素及びニューラル処理ユニット(NPU)の形式にある特殊プロセッサ101を含む。モバイルデバイス10は加えて、ランダムアクセスメモリ(RAM)102の形式にある記憶装置を含む。図10bには示されないが、追加の不揮発性記憶装置も設けられる。モバイルデバイス10は、ユーザに情報を表示するためのディスプレイ103、並びにWi−Fi(商標)及びLTE(商標)などの技術を使用して、様々なデータネットワークを通じてデータを転送及び受信するようモバイルデバイス10を接続することを可能にする通信システム104を含む。
[0073]図11は、NPU101と関連付けられたモバイルデバイス10にインストールされたシステムアーキテクチャを示す。システムアーキテクチャは、ニューラルネットワークに関連する計算のハードウェア加速化のために、ソフトウェアアプリケーション110がNPU101にアクセスすることを可能にする。システムアーキテクチャは、携帯電話またはタブレットコンピュータなどの上での使用のための、Android(登録商標)ソフトウェアアーキテクチャである。
[0074]ニューラルネットワーク処理に関連して特定の処理のハードウェア加速化のために、機械学習ライブラリ111を利用するソフトウェアアプリケーション110が開発されてきた。アプリケーション110から命令及びデータを受信する、Android(登録商標)ニューラルネットワークランタイムとして知られる、ランタイム環境112がライブラリの下に設けられる。ランタイム環境112は、ソフトウェアアプリケーション110とNPU101との間の通信、及び最も適切なハードウェアに対する実行タスクのスケジューリングに関与する中間層である。ランタイム環境112の直下に、少なくとも1つのプロセッサドライバ及び関連する特殊プロセッサ、このケースではNPU101が設けられる。デジタルシグナルプロセッサ、ニューラルネットワークプロセッサ、及びグラフィックプロセッサ(GPU)など、複数のプロセッサ及び関連するドライバがランタイム環境112の直下に設けられてもよい。しかしながら、冗長な説明を回避するために、第2の特定の実施形態と関連して、NPU101及び関連するプロセッサドライバ113のみが説明される。
[0075]図12は、NPU101の部分構成要素を示す。NPU101は、モバイルデバイス10のRAM102への外部インタフェース上でのデータ転送を扱う、直接メモリアクセス構成要素121に接続された重みデコーダ120を含む。重みデコーダ120からの復号された値は、NPU101による後続の処理のために、乗算器アキュムレータユニット122に送信される。
[0076]第2の特定の実施形態では、プロセッサドライバ113は、フロー制御ルールのセットによって判定されたチャンク構造に従って、重み値をRAM102に記憶する。続いて、直接メモリアクセス構成要素121は、RAM102から重み値を取り出し、重みデコーダ120は、チャンク構造からデータを抽出する。
[0077]プロセッサドライバ113は、ニューラルネットワークに対する圧縮されていない(未処理の)重み値のセットを取得する。圧縮されていない重み値のソースは、ここで議論される技術を目的として考慮されない。しかしながら、一実施例では、圧縮されていない重み値は、アプリケーション110によって、Androidニューラルネットワークランタイムに提供されてもよい。
[0078]重み値は、二値データなどの圧縮されていないフォーマットにおいて受信される。プロセッサドライバ113によって実行される第1のステップは、ゼロランコーディングである。ゼロランコーディングは、値0を有する重み値が重みストリームにおいて頻繁にある場合に利点を有する。n個の非ゼロ重み値を含む重み値のシーケンスに対し、重み値(weight_values)の配列は、非ゼロ重み値のシーケンスとしてプロセッサドライバ113によって形成される。プロセッサドライバ113は、非ゼロ重み値の間のゼロラン長(zruns)の配列をも識別する。ゼロランの配列は、n+1の長さを有する。zrunsのシーケンスでは、zruns[0]は、最初のゼロラン長であり、zruns[n]は、最後のゼロランである。
[0079]例えば、以下の重みシーケンス、0、5、6、0、0、0、7、0を考える。プロセッサドライバ113は、3つの非ゼロ値が存在することを理由に、n=3をコーディングする。重み値のシーケンスは、weight_values={5,6,7}であり、ゼロランのシーケンスは、zruns={1,0,3,1}である。それらの2つのシーケンスから、元の重みシーケンスが再構築されてもよい。このようにして、プロセッサドライバ113は、重み値の入来するストリームをweight_valuesのシーケンス及びzrunsのシーケンスに分離する。
[0080]weight_valuesは、第1の除数を使用してゴロムライス符号に変換され、zrunsは、第2の除数を使用してゴロムライス符号に変換される。第1の特定の実施形態と同一の方式では、ゴロムライス符号は、プロセッサドライバ113によって、単項ストリーム及び余りストリームに分離される。したがって、プロセッサドライバ113は、RAM102に記憶するためのチャンクに含まれることになる4個の異なるデータストリーム、weight_valuesの単項部分(wunary)、weight_valuesの余り部分(wremain)、zrunsの単項部分(zunary)、及びzrunsの余り部分(zremain)を生成する。それらの異なるデータタイプは、以下で説明されるように、フロー制御ルールのセットを使用してチャンク構造に追加される。
[0081]プロセッサドライバ113によって受信された重み値は、各々のスライスの始めにあるスライスヘッダを有する、スライスにおいてコーディングされる。スライスヘッダは、weight_valueゴロムライス符号を生成するために使用される除数及びzrunゴロムライス符号を生成するために使用される除数に関する情報を含む。スライスヘッダはまた、スライスの長さに関する情報を含む。スライスヘッダの後、上で言及された異なるデータタイプを符号化するいくつかのチャンクが続く。チャンクは、単項値を含むことと余り値を含むこととの間で交互になり、余り値(wremain及びzremain)は、対応する単項値(wunary及びzunary)を含むチャンクの後にチャンクに含まれる。単項値(wunary及びzunary)を符号化する各々のチャンクは、12個の重みシンボル及び12個のゼロランシンボル(各々のシンボルは、ゴロムライス符号の第1の部分に対応する)の最大値を符号化する。数が変化する理由は、シンボルに対応する単項値が可変長の値であり、シンボルの長さが短いケースよりもシンボルの長さが長い場合、より少ない単項値を符号化することができることである。単項チャンクの長さは、デコーダの特性に基づいて選択される最大の予め定義された値を有する。単項データに続き、余り値を含むチャンクは、上で言及されたように、それらが先行するチャンクに含まれる単項シンボルに対応する余り値を含むことを理由に、可変長のチャンクである。
[0082]単項データを含むチャンクに対し、単項値の追加は、それまでにスライス内のチャンクに追加されたwunary値の数から、それまでにスライス内のチャンクに追加されたzunary値の数を差し引いた値であるバランスを記録することによって制御される。バランスが8以上である場合、次いで、zunary値のみが次の単項チャンクに含まれる。バランスが0未満である場合、次いで、wunary値のみが次の単項チャンクに含まれる。
[0083]単項データを含む第1のチャンクを形成するために、最大チャンクサイズを超えない限り、wunary値に値する最大で12個のシンボルがチャンクに追加される。チャンクの余りは次いで、zrunシンボルに対応するzunary値により埋められる。第2のチャンクは、第1のチャンクに追加されたシンボルの単項部分と関連付けられた余り値(wremain及びzremain)を含む。第3のチャンクを形成するとき、3つの可能性が存在する。第1に、上で説明されたバランスが0〜7である場合、次いで、zrunシンボルに対応するzunary値により埋めることがそれに続く、チャンクに追加されたwunaryデータの最大で12個のシンボルにより、第1のチャンクについての同一の処理が続く。第2に、バランスが8以上である場合、次いで、チャンクがzunary値のみにより埋められる。これは、より多くのwunary値が符号化されている場合、zunary値が追いつくことを可能にする。第3に、バランスが0未満である場合、次いで、チャンクがwunary値のみにより埋められる。これは、より多くのzunary値が符号化されている場合、wunary値が追いつくことを可能にする。第4のチャンクは、第3のチャンクに含まれるシンボルに対応する余り値を含む。上で説明されたフロー制御ルールのロジックが図13に示される。この処理は、スライスの全てのデータが符号化されるまで続く。
[0084]後に、重みデータは、直接メモリアクセス構成要素121によって重みデコーダ120における使用のために取り出される。重みデコーダ120は、次の通りに、直接メモリアクセス構成要素121によって取り出された処理済みデータのストリームからの抽出された値を識別する。チャンクを復号するロジックが図14に示される。前に説明された符号化と同様に、バランス値は、重みデコーダ120によって維持される。重みデコーダ120におけるバランス値は、それまでにスライス内のチャンクから抽出されたwunary値の数から、それまでにスライス内のチャンクから抽出されたzunary値の数を差し引いた値である。
[0085]復号されることになる第1のチャンクでは、重みデコーダ120は、チャンクからの全てのデータが抽出されるまで、またはwunary値に値する12個のシンボルが抽出されるまでのいずれかで、wunary値を抽出することを開始する。第1のチャンク内の後続の値は、zunary値として抽出される。
[0086]符号化することと関連して議論されるように、単項チャンクに続くチャンクは、先行するチャンク内のシンボルに対応する余り値を含む。先行するチャンク内のwunary値に値するシンボルの数は既知である。したがって、先行するチャンク内のwunary値に対応する同一の数のwremain値が抽出され、いずれかの後続の値がzremain値として抽出される。後続の単項チャンクに対し、バランスが検査される。バランスがゼロ未満である場合、重みデコーダ120は、全ての単項値をwunary値として抽出する。バランスが8またはそれよりも大きい場合、重みデコーダは、全ての値をzunary値として抽出する。バランスが0〜7である場合、最大で12個のシンボルの第1の単項データがwunary値として抽出され、いずれかの後続の値がzunary値として抽出される。
[0087]このようにして、重みデコーダ120は、データのタイプを識別するためのデータのストリーム内のビットコストなしに、zrunデータ及び重みシーケンスデータの両方の単項部分及び余り部分を抽出する。
[0088]抽出されたzrunデータ及び重みシーケンスデータはその後、下位の重み値を回復するよう復号される。ゴロムライス符号の単項部分及び余り部分の復号が第1の実施形態と関連して議論されており、その説明は、ここでは繰り返されない。
[0089]上記実施形態は、例示的な実施例として理解されることになる。更なる実施形態が想定される。例えば、第1の実施形態では、単項データが32ビット部分内のチャンクに追加される。しかしながら、部分のサイズは重要ではなく、図5に示されるチャンク構造は、チャンクを構文解析することになるプロセッサの特定の要件に応じて適合される。
[0090]第2の実施形態は、Androidニューラルネットワークアーキテクチャを利用する。しかしながら、本明細書で説明される技術は、状況に応じて異なるソフトウェアアーキテクチャに適用されてもよい。例えば、サーバに基づく実装態様のコンテキストにおいて異なるソフトウェアアーキテクチャが使用されてもよい。
Claims (18)
- 処理要素による使用のための方法であって、
複数の可変長符号を取得することであって、各々の可変長符号は、可変長の第1の部分及び第2の部分を有する、取得することと、
前記可変長符号を前記可変長符号の第1の部分及び前記可変長符号の第2の部分に分離することと、
前記可変長符号の前記第1の部分からのデータを含む処理済みストリームの各々のチャンクに対し、前記第1の部分からの前記データが、制御ルールに従って判定されたサイズを有する前記処理済みストリームのチャンク内のサブストリームを形成するように、前記制御ルールのセットを使用して、前記チャンク内の前記処理済みストリームを形成することと、
を備えた、方法。 - 前記可変長符号の前記第1の部分は、単項部分であり、前記可変長符号の前記第2の部分は、仮数部分である、請求項1に記載の方法。
- 前記可変長符号の前記仮数部分は、切り捨てられた二値部分である、請求項2に記載の方法。
- 各々の可変長符号の前記単項部分は、前記可変長符号によって表される元の値の商を表す、請求項2または3に記載の方法。
- 各々の可変長符号の前記仮数部分は、前記可変長符号によって表される値の余りを表す固定長の二値符号である、請求項2〜4のいずれか1項に記載の方法。
- 前記可変長符号は、ゴロムライス符号である、請求項1〜5のいずれか1項に記載の方法。
- 前記処理済みストリームの各々のチャンクは、前記可変長符号の前記第1の部分からのデータ及び前記可変長符号の前記第2の部分からのデータを含むことができ、前記可変長符号の前記第1の部分からのデータを含むことができ、及び前記可変長符号の前記第2の部分からのデータを含まず、または前記可変長符号の前記第2の部分からのデータを含むことができ、及び前記可変長符号の前記第1の部分からのデータを含まない、請求項1〜6のいずれか1項に記載の方法。
- 前記制御ルールは、各々のチャンク内の前記単項サブストリームのサイズを直列に判定するように構成されている、請求項2〜5のいずれか1項に記載の方法。
- 前記制御ルールは、前記処理済みストリームに追加されないで残っている前記可変長符号の前記単項部分の量に基づいて、各々のチャンク内の前記単項サブストリームの前記サイズのサイズを判定するように構成されている、請求項8に記載の方法。
- 前記処理済みストリームは、予め定められた長さのセルから形成され、前記処理済みストリームに追加されないで残っている前記可変長符号の前記単項部分の前記量は、前記処理済みストリームに追加されないで残っているセルと関連付けられた前記可変長符号の前記単項部分のビットの数である、請求項9に記載の方法。
- 前記処理済みストリームは、予め定められた長さのセルから形成され、前記処理済みストリームの各々のセルは、ヘッダ及び複数のチャンクを有し、前記ヘッダは、前記セルの長さ及び前記セル内の前記可変長符号の前記単項部分の長さを示す、請求項1〜10のいずれか1項に記載の方法。
- 第2の複数の可変長符号を取得することと、
前記第2の複数の可変長符号を前記可変長符号の第1の部分及び前記可変長符号の第2の部分に分離することと、を更に備え、
チャンク内の処理済みストリームを形成する前記ステップは、第1の複数の可変長符号及び第2の複数の可変長符号のうちの少なくとも1つの第1の部分からのデータを含む前記処理済みストリームの各々のチャンクに対し、フロー制御ルールが前記第1の複数の可変長符号の第1の部分の数及び前記第2の複数の可変長符号の第1の部分の数が前記チャンクに含まれると判定するように、前記制御ルールのセットを使用する、
請求項1に記載の方法。 - 処理済みストリームを形成することは、チャンクに含まれた前記第1の複数の可変長符号の第1の部分の数とチャンクに含まれた前記前記第2の複数の可変長符号の第1の部分の数との間の差を記録するバランス値を維持することを含み、前記フロー制御ルールは、前記バランス値に基づいて、チャンクに含まれる前記第1の複数の可変長符号の前記第1の部分の数及び前記第2の複数の可変長の前記第1の部分の数を判定するために使用される、請求項12に記載の方法。
- 前記複数の可変長符号は、ニューラルネットワークにおける使用のための重み値を表す、請求項1〜13のいずれか1項に記載の方法。
- 前記複数の可変長符号は、ニューラルネットワークの層の出力である活性化ストリーム内の値を表す、請求項1〜14のいずれか1項に記載の方法。
- 処理済みデータストリームを復号する方法であって、
複数の可変長符号に関連するデータを含む処理済みデータストリームを取得することであって、各々の可変長符号は、可変長の第1の部分及び第2の部分を有し、前記処理済みストリームは、チャンク内で形成され、前記処理済みストリームの少なくとも1つのチャンクは、前記可変長符号の第1の部分から形成されたデータのサブストリームを含む、取得することと、
フロー制御ルールのセットを使用して、前記処理済みデータストリームの前記チャンク内の前記サブストリームを識別及び抽出することと、
を備えた、方法。 - 前記可変長符号の各々の第1の部分は、ストップビットを有する単項データとして符号化され、前記方法は、
前記処理済みデータの複数のチャンクから、複数の識別及び抽出されたサブストリームを取得することと、
各々の抽出されたサブストリームを、前記サブストリーム内のストップビットのビット位置のリストを表す中間形式に変換することと、
複数の前記変換されたサブストリームを組み合わせて、ビット位置の拡大されたリストを形成することと、
ビット位置の前記拡大されたリスト内の前記ストップビットの間の距離を測定して、前記第1のストリーム内の前記可変長符号の前記第1の部分の前記値を回復することと、
を更に備えた、請求項16に記載の方法。 - 処理要素及び記憶装置を備えたデータ処理システムであって、前記記憶装置は、符号部分を記憶し、前記符号部分は、前記処理要素によって実行されるとき、前記データ処理システムに、
複数の可変長符号を取得させ、各々の可変長符号は、可変長の第1の部分及び第2の部分を有し、
前記可変長符号を前記可変長符号の第1の部分及び前記可変長符号の第2の部分に分離させ、
前記可変長符号の前記第1の部分からのデータを含む処理済みストリームの各々のチャンクに対し、前記第1の部分からの前記データが、制御ルールに従って判定されたサイズを有する前記処理済みストリームのチャンク内のサブストリームを形成するように、前記制御ルールのセットを使用して、前記チャンク内の前記処理済みストリームを形成させる、
データ処理システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/809,086 | 2020-03-04 | ||
US16/809,086 US10931303B1 (en) | 2020-03-04 | 2020-03-04 | Data processing system |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021141576A true JP2021141576A (ja) | 2021-09-16 |
Family
ID=74659370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021017501A Pending JP2021141576A (ja) | 2020-03-04 | 2021-02-05 | データ処理システム |
Country Status (3)
Country | Link |
---|---|
US (1) | US10931303B1 (ja) |
JP (1) | JP2021141576A (ja) |
CN (1) | CN113364466A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220398441A1 (en) * | 2021-06-11 | 2022-12-15 | Renesas Electronics Corporation | Semiconductor device |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5396595A (en) * | 1992-04-24 | 1995-03-07 | Spacelabs Medical, Inc. | Method and system for compression and decompression of data |
US7362245B2 (en) * | 2006-05-15 | 2008-04-22 | Taiwan Imagingtek Corporation | Variable length coding method for data compression |
US7953285B2 (en) * | 2006-11-03 | 2011-05-31 | Taiwan Imagingtek Corporation | Method and circuit of high performance variable length coding and decoding for image compression |
US7486211B2 (en) * | 2007-04-13 | 2009-02-03 | Apple Inc. | Method and system for entropy coding |
US7728739B2 (en) * | 2007-10-10 | 2010-06-01 | Apple Inc. | Entropy codec with variable divisor |
JP5337235B2 (ja) * | 2009-03-10 | 2013-11-06 | 日本電信電話株式会社 | 符号化方法、復号方法、符号化装置、復号装置、プログラム及び記録媒体 |
US10142636B2 (en) * | 2014-06-09 | 2018-11-27 | Sony Corporation | Communication system with coding mechanism and method of operation thereof |
US11588499B2 (en) * | 2018-11-05 | 2023-02-21 | Samsung Electronics Co., Ltd. | Lossless compression of neural network weights |
-
2020
- 2020-03-04 US US16/809,086 patent/US10931303B1/en active Active
-
2021
- 2021-02-05 JP JP2021017501A patent/JP2021141576A/ja active Pending
- 2021-03-02 CN CN202110229202.3A patent/CN113364466A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN113364466A (zh) | 2021-09-07 |
US10931303B1 (en) | 2021-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100894002B1 (ko) | 선택적 압축과 복원 및 압축 데이터에 대한 데이터 포맷을위한 장치 및 방법 | |
KR102280943B1 (ko) | 오디오/비디오 샘플 벡터의 피라미드 벡터 양자화 인덱싱 및 디인덱싱을 위한 방법 및 장치 | |
US7872598B2 (en) | Accelerated decompression | |
US7786907B2 (en) | Combinatorial coding/decoding with specified occurrences for electrical computers and digital data processing systems | |
JP4468858B2 (ja) | データ符号化装置、データ符号化方法、プログラム | |
JP2013508867A5 (ja) | ||
JP7321208B2 (ja) | ポーラ符号のレートマッチング方法及び装置 | |
US20090016453A1 (en) | Combinatorial coding/decoding for electrical computers and digital data processing systems | |
KR101870594B1 (ko) | 스펙트럼의 피크 위치의 코딩 및 디코딩 | |
RU2595916C1 (ru) | Кодер, декодер и способ | |
US7650040B2 (en) | Method, apparatus and system for data block rearrangement for LZ data compression | |
US7353233B1 (en) | Apparatus and method for real-time decompression of data streams on limited-resource embedded devices | |
US7786903B2 (en) | Combinatorial coding/decoding with specified occurrences for electrical computers and digital data processing systems | |
RU2611249C1 (ru) | Модификатор энтропии и способ его использования | |
US6748520B1 (en) | System and method for compressing and decompressing a binary code image | |
JP2003524983A (ja) | 複数コーダを用いる最適化ロスレス圧縮のための方法及び装置 | |
JP2021141576A (ja) | データ処理システム | |
US20220005229A1 (en) | Point cloud attribute encoding method and device, and point cloud attribute decoding method and devcie | |
KR101030726B1 (ko) | 확률적 테이블에 의해 생성된 심볼을 기반으로 호프만 테이블을 적용한 메모리 효율이 개선된 멀티미디어용 호프만 디코딩 방법 및 장치 | |
US7683809B2 (en) | Advanced lossless bit coding | |
US10938411B1 (en) | Compression and/or decompression of activation data | |
US6101281A (en) | Method for improving data encoding and decoding efficiency | |
US20230273855A1 (en) | Data authentication for data compression | |
JP2001211082A (ja) | Pcm信号符号化方法及び復号化方法 | |
CN112200301B (zh) | 卷积计算装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231214 |