JP6681313B2 - データを符号化するための方法、コンピュータ・プログラムおよびシステム - Google Patents

データを符号化するための方法、コンピュータ・プログラムおよびシステム Download PDF

Info

Publication number
JP6681313B2
JP6681313B2 JP2016211783A JP2016211783A JP6681313B2 JP 6681313 B2 JP6681313 B2 JP 6681313B2 JP 2016211783 A JP2016211783 A JP 2016211783A JP 2016211783 A JP2016211783 A JP 2016211783A JP 6681313 B2 JP6681313 B2 JP 6681313B2
Authority
JP
Japan
Prior art keywords
input data
dynamic huffman
dynamic
symbols
counts
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.)
Expired - Fee Related
Application number
JP2016211783A
Other languages
English (en)
Other versions
JP2017098946A (ja
Inventor
アバリ、ブーレント
ブラナー、バーソロミュー
ライリー、ジョン、ジョセフ
フランケ、フベルトゥス
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 JP2017098946A publication Critical patent/JP2017098946A/ja
Application granted granted Critical
Publication of JP6681313B2 publication Critical patent/JP6681313B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は、ハフマンベースのデータ符号化に関し、より詳細には、動的ハフマン・テーブルをハードウェア中で作成する技法に関する。
多くのハードウェアおよびソフトウェア・アプリケーションは、データ圧縮を使用して、ストレージおよびメモリ容量を削減し、また、ネットワークおよび入出力帯域幅を削減する。ハフマン符号化がしばしば使用されて、データが例えばDeflate(gzip)標準で圧縮される。ハフマン符号は、最も頻繁なデータ・アイテムがより少数のビットで符号化される、可変長符号である。動的ハフマン符号は、データ・アイテムの頻度に基づいて進行中に構築されるカスタム符号である。
米国特許第5,744,844号
動的ハフマン(DH)テーブルをハードウェア中で作成することは、時間および領域を消費するプロセスである。例えば、従来のDHベースの圧縮は、ソフトウェア介入の関与を必要とするか、または、Deflateソフトウェア・アルゴリズムの、ハードウェアへの複雑なマッピングを必要とする。これらは、性能または圧縮率またはシリコン面積の不利益につながることがある。
結果として、多くのハードウェア実装は、動的ハフマン(DH)方法の代わりに固定ハフマン(FH)方法を使用することを選ぶ。FHの欠点は、DHと比較して圧縮が少ないことである。
したがって、動的ハフマン・テーブルをハードウェア中で作成するための、単純化された高速な技法が望ましいであろう。
本発明は、動的ハフマン・テーブルをハードウェア中で作成する技法を提供する。本発明の一態様では、データを符号化する方法が提供される。この方法は、サンプル・データ・セットから事前計算された複数のハフマン木形状を表す動的ハフマン・テーブルをハードウェア中で実装するステップであって、ハフマン木形状が動的ハフマン・テーブル中で符号長値によって表される、実装するステップと;入力データの受取り時に、入力データからのシンボルおよびそれらのカウントを動的ハフマン・テーブルに書き込むステップと;入力データからのシンボルおよびカウントを用いて、動的ハフマン・テーブルのそれぞれについてのスコアを算出するステップであって、スコアが、事前計算されたハフマン木形状の符号長値と、入力データからのカウントとに基づく、算出するステップと;動的ハフマン・テーブルのうちで最も低いスコアを有する所与の1つを、入力データの符号化のために選択するステップとを含む。
本発明の別の態様では、データを符号化するための、スタティック・ランダム・アクセス・メモリ(SRAM)ベースの方法が提供される。この方法は、サンプル・データ・セットから事前計算された複数のハフマン木形状を表す動的ハフマン・テーブルをハードウェア中で実装するステップであって、ハフマン木形状が動的ハフマン・テーブル中で符号長値によって表され、ハードウェアがSRAMモジュールを含み、動的ハフマン・テーブルが、動的ハフマン・テーブルのうちの1つについての符号長値のソート済みリストでSRAMモジュールのそれぞれを初期化することによってハードウェア中で実装される、実装するステップと;入力データの受取り時に、入力データからのシンボルおよびそれらのカウントをSRAMモジュールのそれぞれの中の動的ハフマン・テーブルに書き込むステップと;入力データからのシンボルおよびカウントを用いて、動的ハフマン・テーブルのそれぞれについてのスコアを算出するステップであって、スコアが、事前計算されたハフマン木形状の符号長値と、入力データからのカウントとに基づく、算出するステップと;動的ハフマン・テーブルのうちで最も低いスコアを有する所与の1つを、入力データの符号化のために選択するステップとを含む。
本発明のより完全な理解、ならびに本発明のさらに他の特徴および利点は、後続の詳細な記述および図面を参照することによって得られるであろう。
本発明の一実施形態による、ハフマン・アルゴリズムを使用して構築される例示的なプレフィックス符号を示す図である。 本発明の一実施形態による、高度に歪んだシンボル分布のヒストグラムを示す図である。 本発明の一実施形態による、高度に歪んだシンボル分布のハフマン木形状を示す図である。 本発明の一実施形態による、高度に歪んだシンボル分布の事前計算済みテーブルを示す図である。 本発明の一実施形態による、中程度に歪んだシンボル分布のヒストグラムを示す図である。 本発明の一実施形態による、中程度に歪んだシンボル分布のハフマン木形状を示す図である。 本発明の一実施形態による、中程度に歪んだシンボル分布の事前計算済みテーブルを示す図である。 本発明の一実施形態による、低程度に歪んだシンボル分布のヒストグラムを示す図である。 本発明の一実施形態による、低程度に歪んだシンボル分布のハフマン木形状を示す図である。 本発明の一実施形態による、低程度に歪んだシンボル分布の事前計算済みテーブルを示す図である。 本発明の一実施形態による、図2cのテーブルに書き込まれたシンボルおよびカウントを示す図である。 本発明の一実施形態による、図3cのテーブルに書き込まれたシンボルおよびカウントを示す図である。 本発明の一実施形態による、図4cのテーブルに書き込まれたシンボルおよびカウントを示す図である。 本発明の一実施形態による、動的ハフマン・テーブルを作成するための例示的な方法を示す図である。 本発明の一実施形態による、本明細書に提示される方法の1つまたは複数を実施するための例示的な装置を示す図である。
上に提供したように、従来の動的ハフマン(DH)ベースの圧縮は、ソフトウェア介入を必要とする。有利なことに、本明細書では、DHテーブルをハードウェア中で作成するための単純化された高速な技法が提供される。以下に詳細に述べるように、本技法は一般に、プレフィックス木を作成するためのハードウェア方法に関係し、この場合、シンボル頻度を表す複数の木形状およびテーブル、ならびにいくつかのテーブル作成ステップが、プレシリコン(pre-silicon)ステップ中に事前計算され、したがってその結果、ハードウェア実装が単純化される。各テーブルの総ビット・コストが算出され、最も小さい出力サイズのテーブルが、圧縮において使用されるために選択される。
当技術分野で知られているように、ハフマン・アルゴリズムは、圧縮中に使用されて、可変長プレフィックス符号を生み出す。より頻繁なシンボルはより少数のビットを得て、したがって、よりよい圧縮を達成する。図1は、ハフマン・アルゴリズムを使用して構築されるプレフィックス符号の例である。符号化されることになるシンボル(この例ではA、B、およびZ)が、2進木の葉に割り当てられる。根からシンボルの葉まで枝を辿ることによって、プレフィックス符号が導出される。例えば、シンボルAは、2進ビット「0」で符号化され、Bは、2進ビット「10」で符号化され、Zは「11」で符号化される。ハフマン・アルゴリズムは、総ビットが最も少数となる最適化された2進木形状を作成する。この例では、シンボル確率は、データ・ストリーム中でシンボルAが1/2の確率で発生し、BおよびZが1/4の確率で発生する、といった確率である。木形状は、Aの符号が、BおよびZの符号よりも少ないビットを有する、といった形状である。
従来のプロセスによれば、これらのシンボル確率を使用して、カスタム木が実行時に生成される。比較すると、本技法は、従来のプロセスにおけるように木を実行時に作成しようとする代わりに、木形状をそれぞれが表すテーブルのセットを事前計算することによって、DHハードウェアを単純化する。これらの複数の事前計算されたテーブルは、ハードウェアに組み込まれ、どんな圧縮動作が開始される前にも、使用される準備ができている。本明細書で提示される例示的な実装形態では、各テーブルは、スタティック・ランダム・アクセス・メモリ(SRAM)中にある。
各テーブルは、シンボルの分布を表す。事前計算されたテーブルは、複数のシンボル分布を表すように選ばれる。圧縮されることになる入力データ中のシンボルの分布に応じて、あるテーブルが他のテーブルよりもよい圧縮率をもたらすことになる。
図2〜4は、異なる3つのシンボル分布、すなわち高度に、中程度に、低程度に歪んだシンボル分布をそれぞれ表す。図2〜4のそれぞれにおいて、シンボルのヒストグラムが提供されており、最も頻繁なシンボルが原点にあり、最も頻繁でないシンボルがx軸上で原点から最も遠くにある。また、それぞれの(高、中、または低)シンボル分布によって生成されるはずのハフマン木形状を表す木形状も提供されている。最後に、図2〜4のそれぞれは、目下の事前計算されたテーブルを提供する。これらのヒストグラム、ハフマン木形状、および事前計算済みテーブル・フィーチャには、図2〜4で参照番号a、b、およびcがそれぞれ与えられている。
図2a〜cは、高度に歪んだシンボル分布を表し、この場合、いくつかのシンボルが他のシンボルよりもずっと多く発生する。例示的な高度に歪んだ分布は、いくつかのシンボルが、次のシンボルの発生の2倍、3倍、4倍、さらにはそれ以上発生するときのものである。例えば、圧縮されていないグラフィックス・ファイル中では、背景色など、最も一般的な色が、次に頻繁な色の数百倍多く発生することがある。別の例では、2進ファイルは通常、16進数「00」を、次に頻繁なバイト文字の数十倍から数百倍多く含む。図3a〜cは、中程度に歪んだ分布を表す。図4a〜cは、低程度に歪んだ分布を表し、この場合、入力ストリーム中でシンボルがおよそ同じ頻度で発生する。低程度に歪んだ分布では、ファイル中のシンボル頻度は、相互のわずかなパーセンテージ・ポイント内である。例えば、標準的な英語テキスト中では、最も頻繁な文字「e」、「t」、「a」は、それぞれ12、9、8パーセントの確率で発生する。図2a、3a、および4aで提供されるヒストグラムは、各ケースにおけるカウントによってソートされたシンボルの関数として、全体的なカウントをプロットしている。前述のように、最も頻繁なシンボルが原点にあり、最も頻繁でないシンボルがx軸上で原点から最も遠くにある。したがって、予想されるように、ヒストグラムは、シンボルの発生の頻度の差が少ないほど、より平坦になる(すなわち、対応する高度に歪んだシンボル分布から、対応する低程度に歪んだシンボル分布に移る)。図2b、3b、および4bで提供される木形状は、これらの高度、中程度、低程度に歪んだシンボル分布によって生成されるはずのハフマン木形状を表す。
図2c、3c、および4cには、それぞれの木形状およびシンボル分布をそれぞれが表す、目下の事前計算されたテーブルが提供されている。入力ストリームは図示のテーブルのいずれによっても符号化され得るが、シンボル分布に応じて、テーブルのうちの1つが、最良の圧縮率、すなわち最も小さい圧縮出力をもたらすことになる。
有利なことに、シンボルをハフマン木の葉(すなわちテーブル)に割り当てることは、圧縮時に行われる。言い換えれば、木の形状(すなわちそれぞれのテーブルによって表される)は事前計算済みだが、ハフマン木の葉にあるはずのシンボルは、最初は割り当てられず、実際の圧縮ステップまで延期される。図2〜4で提供される例は、図1に示されるハフマン木の例とは異なり、シンボルが木の葉に割り当てられていない(すなわち疑問符「?」が使用されている)ことによって、この初期状況を表す。
木のテーブル表現(図2c、3c、および4c参照)では、符号長(「Len」のラベルが付いている)は、木の形状を記述するのに十分である。すなわち、木の根からの木の各葉の距離が、最も短い符号から最も長い符号(この例示的なDeflate実装形態ではそれぞれ1ビットおよび15ビット)まで順番にリストされている。例えば、図1に示されるハフマン木の例は、符号長値1、2、2で表すことができる。
本技法によれば、各テーブル・エントリは、3つ組{CodeLength,Count,Symbol}からなり、CodeLengthは、そのそれぞれの木形状の事前計算された符号長である。CountおよびSymbolは、最初はそれぞれ0およびNULLである。これらは、圧縮のDH計算ステップの間に更新されることになる。
圧縮動作が開始されると、入力データが走査され、シンボル頻度が決定される。例えば、文字「A」が入力データ中で1000回発生する場合、そのカウントは1000である。シンボルカウントは、最も高いカウントから最も低いカウントへとソートされる。ソートは、当技術分野で知られている多くの異なる方法のうちの1つを使用して行われてよい。例えば、適切なソート・アルゴリズムは、挿入ソート、クイック・ソート、またはバイトニック(Bitonic)ソート・アルゴリズムを含むが、これらに限定されない。
ハードウェアをさらに一層単純化するために、概略ソート・アルゴリズムを使用してシンボルカウントを半ソートすることもできる。その場合、最も頻繁なシンボルだけが正しい順序でソートされ、頻繁でないシンボルは、必ずしも正しい順序でソートされない。例えば、標準的な英語テキスト中では、最も頻繁な文字「e、t、a、o、i、n、s、h、r」は、70%の確率で発生する。この9つの文字を正しい順序でソートすれば、圧縮タスクの70%が正しく達成されることになり、一方、残りの文字の順序を得ることは、圧縮率の改善にとって重要性がより低い。後続の記述から、頻繁でないシンボルは圧縮率への寄与が減少することが明らかになるであろう。したがって、実行時間の短縮およびシリコン面積の削減のためには、圧縮率のわずかな増加は許容可能である場合がある。
次いで、ソートまたは半ソートされたシンボルカウントは、事前計算されたテーブルのフィールドCountおよびSymbolに書き込まれる。したがって、3つ組{CodeLength,Count,およびSymbol}は、最も高いカウントのシンボルが最も短い符号長とペアにされ、2番目に高いカウントのシンボルが2番目に短い符号長とペアにされ、以下同様となるように書き込まれる。このステップは、複数のテーブルについて並行して実施される。例えば、図5a、b、およびcを参照されたいが、これらの図は、シンボルおよびカウントが図2c、3c、および4cのテーブルに書き込まれたものをそれぞれ示す。
各テーブルがCountおよびSymbolの値でポピュレートされていくのに伴い、CodeLength×Countの積の合計もまた、TotalLengthと言う名前のレジスタに蓄積される。例示的な一実施形態によれば、1つのテーブルにつき1つのアキュムレータ・レジスタが存在する。積の値の合計は、入力データをハフマン符号化するのにその特定のテーブルが使用された場合の、圧縮データのサイズである。したがって、最良の圧縮率は、最も小さいTotalLength値を有するテーブルが圧縮に使用されたときに達成される。例えば、図5a〜cで提供される例では、最も小さいTotalLength値を有するテーブルは、2920ビットの長さ総計(TotalLen)を有する図5aのテーブルである(図5bおよび5cのテーブル中の4415ビットおよび12635ビットと比較して)。
事前計算された各木形状が、他の多くの部分木を含むことは、留意に値する。したがって、各木(したがってテーブル)は、実際には、複数の木を表す。したがって、有利なことに、ハードウェア中で実装される限られた数のテーブルによって、ずっと多くのシンボル分布が表される。例えば、事前計算された木形状がN個の葉を有する場合、この木形状は、有利なことに、N、N−1、N−2、N−3、...3、2、1個の葉を有する約N個の異なる木を表す。符号化されているデータシンボルの数に応じて、実際上、各テーブルは、その木の形状をとる。例えば、入力データは4つのシンボルA、Z、B、およびQしか含まないが、テーブルは15個のシンボルのための空間を有すると仮定する。例えば、図5a〜cを参照されたい。テーブルは、上から下に、シンボルカウント1000、500、300、および5でポピュレートされる。すべてのテーブルのカウントに対する残りのテーブル・エントリは、0のままとなる。したがって、実際上、各テーブルによって実現される木形状は、元のより大きい15要素の木の部分木である、4葉の木の木形状である。
上の記述を前提として、次に、図6の方法600を参照することによって、動的ハフマン・テーブルを作成するための本技法の例示的な一実装形態について述べる。上で強調したように、このプロセスの一部を遂行して、ハードウェア中で実装される木形状が事前計算される。したがって、これらの事前計算ステップは、ハードウェア設計中やハードウェア電源投入初期化中などに、1回だけ実施されれば済む。圧縮動作が開始されると、圧縮動作ごとに、事前計算された木形状にシンボルが割り当てられる。テーブル作成ステップのいくつかを(ハードウェア中で)事前計算することで、圧縮中に必要とされる動作が単純化され、それにより、他のDH技法と比較して、本プロセスの速度および効率が著しく改善される。
図6に示すように、木形状を事前計算するプロセスは、ステップ602で、データ・ファイルのサンプル・セットについてシンボル分布のセットを識別することによって開始する。すなわち、これは事前計算動作なので(すなわち、そして圧縮のための特定の入力データ・ストリームはまだ存在しないので)、サンプル・データ・セットを使用して複数の木形状が計算される。例示的な一実施形態によれば、サンプル・データ・セットは、一般的に使用されるデータ・ファイルを含む。一般的に使用されるファイルは、概して各領域に特有である。例えば、英語テキストを扱うコンピューティング・システム中では、サンプル・ファイルが統計的に分析されてよく、木形状が英語アルファベットの文字の頻度に従って構築されてよい。別の例では、グラフィックス・ファイルを扱うコンピューティング・システム中では、サンプル・ファイルが統計的に分析されてよく、木形状が色情報の頻度に従って構築されてよい、等である。
ステップ604で、やはり事前計算される動作として、サンプル・データ・セット中で見つかったシンボル分布にマッチするDH符号テーブルが作成される。上に提供したように、符号長(CodeLength)は、木形状を記述するのに十分である。したがって、ステップ604で、DH符号テーブルのCodeLengthフィールドが、サンプル・データ・セットを使用してポピュレートされる。CountおよびSymbolフィールド(最初はそれぞれ0およびNULLに設定されている)は、圧縮動作中に更新されることになる(以下参照)。
ステップ606で、やはり事前計算される動作として、可変長符号および符号長だけが残るようにDHハフマン符号テーブル(ステップ604で作成された)からシンボルが除去される。すなわち、上で強調したように、本技法は、圧縮中にテーブルをポピュレートすることを必要とし、したがって、ステップ606でシンボル−長さ割当てを除去することによって、残されるのは木形状だけになる。実際のシンボル−長さ割当ては、圧縮中に行われることになる。
ステップ608で、やはり事前計算される動作として、符号長をソート・キーとして使用して、符号および符号長が、最も短いものから最も長いものへの順でソートされる。すなわち、上に提供したように、ここでのタスクは、木の根からの木の各葉の距離を、最も短い符号から最も長い符号へと順番にリストすることである。例えば、図2c、3c、および4cを参照されたいが、これらの図では、CodeLengthが、最も短いものから最も長いものへと順序付けられている。
ステップ610で、DH符号テーブルがハードウェア中で実装される。ハードウェア中での実装は、ハードウェア中でロジックを再現するソフトウェア実装とは反対に、ハードウェア回路自体が動作を実施することを意味する。例示的な一実施形態によれば、本技法は、スタティック・ランダム・アクセス・メモリ(SRAM)モジュールを使用してハードウェア中で実装される。当技術分野で知られているように、SRAMは、フリップフロップ回路を使用してデータの各ビットを記憶する。例えば、樋口に発行された、「CMOS SRAM Cell」という名称の米国特許第5,744,844号を参照されたい。
上で強調したように、ハードウェア中で実装される各DH符号テーブルは、Code、CodeLength、Symbol、およびCountという、4つのフィールドを含む。プロセス中のこの段階では、CodeおよびCodeLengthフィールドだけがポピュレートされる。CountおよびSymbolフィールドは、圧縮動作中に更新されることになる(以下参照)。
例示的な一実施形態によれば、SRAM中で実装されるときは、ステップ610は、第1のSRAMエントリから順次、符号および符号長のソート済みリストで各SRAMモジュールを初期化するステップを含む。すなわち、例えば1つのシンボル分布につき1つのアキュムレータを初期化することによって、ステップ602からの各シンボル分布が1つのSRAMモジュールに書き込まれる。当技術分野で知られているように、アキュムレータは、中間ロジック結果がその中に記憶されることが可能なレジスタである。
プロセスの事前計算段階が、今や完了している。ステップ602〜610は、例えばハードウェア設計中または初期化中に、1回だけ実施されれば済む。圧縮動作は、ステップ612で、例えば入力データ・ストリームの受取り時に開始する。事前計算動作と比較して、圧縮ステップ612〜626は、各圧縮動作につき実施されることになる。
ステップ614で、DH符号テーブルのSymbolおよびCountフィールドが、それぞれNULLおよび0に初期化される。したがって、現在、CodeおよびCodeLengthフィールド(事前計算ステップからの)だけがポピュレートされている。
圧縮されることになる入力データ・ストリームの処理を開始するために、ステップ616で、入力データ・ストリーム中のシンボルがカウントされる。ステップ618で、カウントをソート・キーとして使用して、入力データ・ストリーム中のシンボルおよびそれらのそれぞれのカウントが、最も頻繁なカウントから最も頻繁でないカウントへの順でソートされる。
ステップ620で、入力データ・ストリームからのシンボルおよびカウントが、ハードウェア中のDH符号テーブルに書き込まれる。ここまでに、テーブルのCodeおよびCodeLengthフィールドだけがポピュレート済みである。例示的な一実施形態によれば、SRAM中で実装されるときは、ステップ620は、第1のSRAMエントリから順次前進しながら、DH符号テーブルのSymbolおよびCountフィールドをSRAMに書き込むことを含む。上に提供したように、これらのテーブルをSRAMハードウェア中で実装することは、符号および符号長のソート済みリストで各SRAMモジュールを初期化することを含んでいた。この場合、各シンボル分布が1つのSRAMモジュールに書き込まれる。次に、シンボルおよびカウントが、各SRAMモジュールに書き込まれる。後で詳細に述べるが、ここでの目標は、入力データ・ストリームの可変長符号化のために、最も小さいカウントを有するシンボル分布を選択することである。各SRAMモジュールに異なるシンボル分布が書き込まれるので、次いで(ステップ620により)シンボルカウントをこれらの分布のそれぞれに適用することを使用して、これらの分布のうちのどれが最も小さいカウントを与えるかを決定することができる。
ステップ620で書き込まれている各エントリにつき、ステップ622で、符号長(ステップ610(上記参照)による)が読み取られる。ステップ624で、符号長にカウントが掛けられ、この値がアキュムレータ・レジスタに書き込まれる。すべてのシンボルおよびカウントが例えばSRAMモジュールに書き込まれるまで、ステップ622および624が繰り返される。
ステップ626で、最も低いカウントをもたらすDH符号テーブルが、入力データ・ストリームの符号化のために選択される。SRAM中での例示的な実装では、最も小さいカウントを有するアキュムレータ・レジスタをステップ626で識別することができ、それぞれのSRAMモジュール内容、すなわち符号および符号長が、入力データの可変長符号化に使用される。
入力データからのシンボルおよびカウントをハードウェア中の事前計算済みDHテーブルに書き込み、最も小さいカウントのテーブルを入力データの符号化における使用のために選択するという本概念について、後続の非限定的な例を参照することによってさらに例証する。この例では、簡単にするために、図2c、3c、および4cに示されるDHテーブルが、サンプル・データから導出されるものであり、これらのテーブルが前述のようにSRAMモジュール中で実装されると仮定する。入力データが受け取られると、次いで、シンボルおよびそれらのそれぞれのカウントが、図2c、3c、および4cのテーブルに書き込まれる。目標は、各テーブルが入力データに使用された場合の出力のサイズを最初に算出し、次いで、最も低い出力を生み出すテーブル(すなわち最も小さいテーブル)をデータの符号化のために選択することである。したがって、例えば、図2cのテーブルをポピュレートすることは、次のように進行する可能性がある。すなわち、シンボルAが符号長1およびカウント1000を有する場合は、テーブル中の第1のエントリは{CodeLength,Count,Symbol}={1,1000,A}となり、シンボルBが符号長2およびカウント500を有する場合は、テーブル中の第2のエントリは{CodeLength,Count,Symbol}={2,500,B}となり、以下同様となる。同じプロセスが、図3cおよび図4cのテーブルをポピュレートするために実施される。次いで、符号長とカウントとの積に基づいて、各テーブル中の総カウントについてのスコアが生み出される。例えば、この例では、図2cのテーブルについてのスコアは、1×1000(シンボルAについてのテーブル中のエントリに対する)+2×500(シンボルBについてのテーブル中のエントリに対する)...以下同様として計算されることになる。これから、図2cのテーブルが使用された場合の出力のサイズを表す単一のスコアが生み出される。次いで、同じプロセスを使用して、図3cのテーブルについてのスコア、および図4cのテーブルについてのスコアが算出される。SRAM中で実装されるときは、各スコアは、それぞれのモジュールのアキュムレータ・レジスタに記憶されてよい。各テーブルについてのスコアが他のスコアと比較され、入力データに対して最も低いスコアを生み出すテーブルが、符号化のために選択される。この最も低いスコアを有するテーブルは、入力データに対して最も低い出力を生み出すことになる。
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組合せとすることができる。コンピュータ・プログラム製品は、本発明の態様をプロセッサに遂行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(1つまたは複数)を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用される命令を保持および記憶できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せとすることができるが、これらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取専用メモリ(ROM)、消去可能プログラム可能な読取専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取専用メモリ(CD−ROM)、ディジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、機械的にエンコードされたデバイス(命令が記録された、パンチカード、または溝の中の隆起構造)、およびこれらの任意の適切な組合せを含む。本明細書におけるコンピュータ可読ストレージ媒体は、電波もしくは他の自由伝搬する電磁波、導波管もしくは他の伝送媒体を介して伝搬する電磁波(例えば、光ファイバ・ケーブルの中を通る光パルス)、またはワイヤを介して伝送される電気信号など、一時的な信号自体であると解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされてよく、あるいは、ネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはそれらの組合せ)を介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードされてよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを含むことができる。各コンピューティング/処理デバイス中の、ネットワーク・アダプタ・カードまたはネットワーク・インタフェースが、コンピュータ可読プログラム命令をネットワークから受け取り、これらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に記憶されるように転送する。
本発明の動作を遂行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データであってよく、または、Smalltalk(R)やC++などのオブジェクト指向プログラミング言語、および、「C」プログラミング言語や類似のプログラミング言語などの従来の手続き型プログラミング言語を含めた、1つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードとオブジェクト・コードとのいずれかであってよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行されるか、スタンドアロンソフトウェアパッケージとして部分的にユーザのコンピュータ上で実行されるか、部分的にユーザのコンピュータ上で実行され部分的にリモート・コンピュータ上で実行されるか、または完全にリモート・コンピュータもしくはサーバ上で実行される場合がある。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含めた任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または、接続は、外部コンピュータに対して(例えば、インターネット・サービス・プロバイダを使用してインターネット経由で)行われてもよい。いくつかの実施形態では、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を例えば含む電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人化することによって、コンピュータ可読プログラム命令を実行することができる。
本明細書では、本発明の態様を、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の、フローチャート説明またはブロック図あるいはその両方に関して述べている。フローチャート説明またはブロック図あるいはその両方の各ブロック、ならびに、フローチャート説明またはブロック図あるいはその両方の中のブロックの組合せを、コンピュータ可読プログラム命令によって実現できることは理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロック中で指定される機能/行為を実現する手段をもたらすように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供され、マシンを生み出すものであってよい。これらのコンピュータ可読プログラム命令はまた、命令が記憶されたコンピュータ可読ストレージ媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロック中で指定される機能/行為の態様を実現する命令を含む製造品を含むように、コンピュータ可読ストレージ媒体に記憶され、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはそれらの組合せに、特定の方式で機能するよう指示するものであってもよい。
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロック中で指定される機能/行為を実現するように、コンピュータ実装プロセスを生み出すべく、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態の、アーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の中の各ブロックは、モジュール、セグメント、または命令の一部を表すことができ、これは、指定される論理機能を実現するための1つまたは複数の実行可能命令を含む。いくつかの代替実装形態では、ブロック中で示される機能は、図中で示される順序とは異なる順序で生じる場合がある。例えば、関連する機能に応じて、連続して示される2つのブロックが実際にはほぼ同時に実行される場合もあり、またはこれらのブロックが逆の順序で実行されることもある。また、ブロック図またはフローチャート説明あるいはその両方の各ブロック、および、ブロック図またはフローチャート説明あるいはその両方の中のブロックの組合せは、指定される機能もしくは行為を実施するかまたは専用ハードウェアとコンピュータ命令との組合せを遂行する、専用ハードウェアベースのシステムによって実現できることにも気付くであろう。
次に図7に移ると、本明細書で提示される方法の1つまたは複数を実現するための装置700のブロック図が示されている。例に過ぎないが、装置700は、図6の方法600のステップの1つまたは複数を実現するように構成されてよい。
装置700は、コンピュータ・システム710および取外し可能媒体750を備える。コンピュータ・システム710は、プロセッサ・デバイス720、ネットワーク・インタフェース725、メモリ730、媒体インタフェース735、およびオプションのディスプレイ740を備える。ネットワーク・インタフェース725は、コンピュータ・システム710がネットワークに接続するのを可能にし、媒体インタフェース735は、コンピュータ・システム710がハード・ドライブや取外し可能媒体750などの媒体と対話するのを可能にする。
プロセッサ・デバイス720は、本明細書で開示される方法、ステップ、および機能を実現するように構成されてよい。メモリ730は、分散型またはローカルであってよく、プロセッサ・デバイス720は、分散型または単一であってよい。メモリ730は、電気、磁気、もしくは光学メモリ、またはこれらもしくは他のタイプのストレージ・デバイスの任意の組合せとして実現されてよい。さらに、用語「メモリ」は、プロセッサ・デバイス720によってアクセスされるアドレス指定可能な空間中のアドレスに対して読取りまたは書込みができる任意の情報を包含するのに十分なくらい広く解釈されるべきである。この定義によれば、ネットワーク・インタフェース725を介してアクセス可能なネットワーク上の情報もなお、メモリ730内にある。というのは、プロセッサ・デバイス720がネットワークから情報を取り出すことができるからである。プロセッサ・デバイス720を構成する各分散プロセッサは一般に、それ自体のアドレス指定可能なメモリ空間を含むことに留意されたい。また、コンピュータ・システム710のいくらかまたはすべてが、特定用途向けまたは汎用の集積回路に組み込まれてもよいことにも留意されたい。
オプションのディスプレイ740は、装置700の人間ユーザとの対話に適した任意のタイプのディスプレイである。一般に、ディスプレイ740は、コンピュータ・モニタまたは他の類似のディスプレイである。
本発明の例証的な実施形態について本明細書に述べたが、本発明はこれらの正確な実施形態に限定されないこと、および、本発明の範囲を逸脱することなく他の様々な変更および修正が当業者によって加えられてもよいことを理解されたい。
700 装置
710 コンピュータ・システム
720 プロセッサ・デバイス
725 ネットワーク・インタフェース
730 メモリ
735 媒体インタフェース
740 ディスプレイ
750 取外し可能媒体

Claims (16)

  1. データを符号化する方法であって、
    サンプル・データ・セットから事前計算された複数のハフマン木形状を表す動的ハフマン・テーブルをハードウェア中で実装するステップであって、前記ハフマン木形状が前記動的ハフマン・テーブル中で符号長値によって表される、前記実装するステップと、
    入力データの受け取りに応じて、前記入力データからのシンボルおよびそれらのカウントを前記動的ハフマン・テーブルに書き込むステップと、
    前記入力データからの前記シンボルおよびカウントを用いて前記動的ハフマン・テーブルのそれぞれについてのスコアを算出するステップであって、前記スコアが、前記事前計算されたハフマン木形状の前記符号長値と前記入力データからの前記カウントとに基づく、前記算出するステップと、
    前記動的ハフマン・テーブルのうちで最も低いスコアを有する所与の1つを、前記入力データの符号化のために選択するステップと
    を含む方法。
  2. 前記動的ハフマン・テーブルがスタティック・ランダム・アクセス・メモリ(SRAM)モジュール中で実装される、請求項1に記載の方法。
  3. 前記動的ハフマン・テーブルをハードウェア中で実装する前記ステップが、
    前記SRAMモジュールのそれぞれを、前記動的ハフマン・テーブルのうちの1つについての前記符号長値のソート済みリストで初期化するステップを含む、請求項2に記載の方法。
  4. 前記入力データからの前記シンボルおよびそれらのカウントを前記動的ハフマン・テーブルに書き込む前記ステップが、
    前記入力データからの前記シンボルおよびそれらのカウントを前記SRAMモジュールのそれぞれに書き込むステップを含む、請求項2または3に記載の方法。
  5. 前記動的ハフマン・テーブルのそれぞれについての前記スコアを算出する前記ステップが、
    前記動的ハフマン・テーブルのそれぞれの中のエントリごとの、事前計算された符号長値と前記入力データからのカウントとの積の、合計を決定するステップを含む、請求項1ないし4のいずれかに記載の方法。
  6. 前記動的ハフマン・テーブルをハードウェア中で実装する前記ステップがさらに、
    前記サンプル・データ・セットについてのシンボル分布のセットを識別するステップを含む、請求項1ないし5のいずれかに記載の方法。
  7. 前記動的ハフマン・テーブルをハードウェア中で実装する前記ステップがさらに、
    可変符号長値だけが残るように前記動的ハフマン・テーブルからシンボルを除去するステップを含む、請求項1ないし6のいずれかに記載の方法。
  8. 前記動的ハフマン・テーブルをハードウェア中で実装する前記ステップがさらに、
    前記動的ハフマン・テーブル中の前記符号長値を最短から最長へとソートするステップを含む、請求項1ないし7のいずれかに記載の方法。
  9. 入力データの受け取りに応じて、前記動的ハフマン・テーブル中のシンボルフィールドをNULLに初期化し、前記動的ハフマン・テーブル中のカウント・フィールドを0に初期化するステップをさらに含む、請求項1ないし8のいずれかに記載の方法。
  10. 前記入力データ中の前記シンボルをカウントするステップをさらに含む、請求項1ないし9のいずれかに記載の方法。
  11. 前記入力データ中の前記シンボルを、それらのカウントによって、最も頻繁なカウントから最も頻繁でないカウントへの順でソートするステップをさらに含む、請求項1ないし10のいずれかに記載の方法。
  12. データを符号化する方法であって、
    サンプル・データ・セットから事前計算された複数のハフマン木形状を表す動的ハフマン・テーブルをハードウェア中で実装するステップであって、前記ハフマン木形状が前記動的ハフマン・テーブル中で符号長値によって表され、前記ハードウェアがSRAMモジュールを含み、前記動的ハフマン・テーブルが、前記動的ハフマン・テーブルのうちの1つについての前記符号長値のソート済みリストで前記SRAMモジュールのそれぞれを初期化することによって前記ハードウェア中で実装される、前記実装するステップと、
    入力データの受取り時に、前記入力データからのシンボルおよびそれらのカウントを前記SRAMモジュールのそれぞれの中の前記動的ハフマン・テーブルに書き込むステップと、
    前記入力データからの前記シンボルおよびカウントを用いて、前記動的ハフマン・テーブルのそれぞれについてのスコアを算出するステップであって、前記スコアが、前記事前計算されたハフマン木形状の前記符号長値と前記入力データからの前記カウントとに基づく、前記算出するステップと、
    前記動的ハフマン・テーブルのうちで最も低いスコアを有する所与の1つを、前記入力データの符号化のために選択するステップと
    を含む方法。
  13. データを符号化するためのコンピュータ・プログラムであって、
    サンプル・データ・セットから事前計算された複数のハフマン木形状を表す動的ハフマン・テーブルをハードウェア中で実装することであって、前記ハフマン木形状が前記動的ハフマン・テーブル中で符号長値によって表される、前記実装することと、
    入力データの受取り時に、前記入力データからのシンボルおよびそれらのカウントを前記動的ハフマン・テーブルに書き込むことと、
    前記入力データからの前記シンボルおよびカウントを用いて前記動的ハフマン・テーブルのそれぞれについてのスコアを算出することであって、前記スコアが、前記事前計算されたハフマン木形状の前記符号長値と前記入力データからの前記カウントとに基づく、前記算出することと、
    前記動的ハフマン・テーブルのうちで最も低いスコアを有する所与の1つを、前記入力データの符号化のために選択することと
    をコンピュータに実行させる、コンピュータ・プログラム。
  14. 請求項1ないし12のいずれかに記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
  15. 請求項1ないし12のいずれかに記載の方法の各ステップを実行するための手段を備える、システム。
  16. プロセッサと前記プロセッサに接続可能な第二のメモリであり、前記動的ハフマン・テーブルが実装されない前記第二のメモリを備えるシステムであって、
    前記第二のメモリがコンピュータ・プログラムを含み、前記プロセッサが前記第二のメモリから前記コンピュータ・プログラムを読み出して、請求項1ないし12のいずれかに記載の方法の各ステップを実行する、
    システム。
JP2016211783A 2015-11-17 2016-10-28 データを符号化するための方法、コンピュータ・プログラムおよびシステム Expired - Fee Related JP6681313B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/943,590 US9584156B1 (en) 2015-11-17 2015-11-17 Creating a dynamic Huffman table
US14/943590 2015-11-17

Publications (2)

Publication Number Publication Date
JP2017098946A JP2017098946A (ja) 2017-06-01
JP6681313B2 true JP6681313B2 (ja) 2020-04-15

Family

ID=57139845

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016211783A Expired - Fee Related JP6681313B2 (ja) 2015-11-17 2016-10-28 データを符号化するための方法、コンピュータ・プログラムおよびシステム

Country Status (4)

Country Link
US (1) US9584156B1 (ja)
JP (1) JP6681313B2 (ja)
DE (1) DE102016220801B4 (ja)
GB (1) GB2544587B (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10693493B1 (en) * 2019-02-14 2020-06-23 International Business Machines Corporation Reducing latch count to save hardware area for dynamic Huffman table generation
US10651871B1 (en) * 2019-07-10 2020-05-12 Citrix Systems, Inc. Real-time history-based byte stream compression
US11663119B2 (en) 2020-05-29 2023-05-30 International Business Machines Corporation Select decompression headers and symbol start indicators used in writing decompressed data
CN112437060B (zh) * 2020-11-11 2022-11-18 平安普惠企业管理有限公司 一种数据传输方法、装置、计算机设备及存储介质
CN113676187A (zh) * 2021-08-11 2021-11-19 山东云海国创云计算装备产业创新中心有限公司 一种哈夫曼修正编码方法、系统及相关组件
CN113708772A (zh) * 2021-08-11 2021-11-26 山东云海国创云计算装备产业创新中心有限公司 一种哈夫曼编码方法、系统、装置及可读存储介质
CN113965207B (zh) * 2021-12-17 2022-03-15 苏州浪潮智能科技有限公司 一种基于deflate霍夫曼编码的动态码表生成装置和方法
US20240022260A1 (en) * 2022-07-12 2024-01-18 Samsung Display Co., Ltd. Low complexity optimal parallel huffman encoder and decoder

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5848195A (en) * 1995-12-06 1998-12-08 Intel Corporation Selection of huffman tables for signal encoding
JP3824343B2 (ja) 1996-03-29 2006-09-20 富士通株式会社 半導体装置
US5953503A (en) 1997-10-29 1999-09-14 Digital Equipment Corporation Compression protocol with multiple preset dictionaries
US6839005B1 (en) * 2003-11-07 2005-01-04 Broadcom Corporation Low memory and MIPS efficient technique for decoding Huffman codes using multi-stage, multi-bits lookup at different levels
US7737870B1 (en) * 2007-09-04 2010-06-15 Nortel Networks Limited Bit-stream huffman coding for data compression
US7834781B2 (en) 2009-04-06 2010-11-16 International Business Machines Corporation Method of constructing an approximated dynamic Huffman table for use in data compression
TWI343192B (en) * 2009-06-12 2011-06-01 Ind Tech Res Inst Decoding method
JP5087166B2 (ja) * 2011-11-02 2012-11-28 日本電信電話株式会社 符号表選択方法、符号化装置、及びプログラム
US8610606B2 (en) 2011-11-24 2013-12-17 International Business Machines Corporation Compression algorithm incorporating dynamic selection of a predefined huffman dictionary

Also Published As

Publication number Publication date
JP2017098946A (ja) 2017-06-01
US9584156B1 (en) 2017-02-28
DE102016220801A1 (de) 2017-05-18
GB2544587B (en) 2018-02-07
DE102016220801B4 (de) 2019-05-09
GB2544587A (en) 2017-05-24
GB201615020D0 (en) 2016-10-19

Similar Documents

Publication Publication Date Title
JP6681313B2 (ja) データを符号化するための方法、コンピュータ・プログラムおよびシステム
US9390098B2 (en) Fast approximation to optimal compression of digital data
US10547324B2 (en) Data compression coding method, apparatus therefor, and program therefor
US20130307709A1 (en) Efficient techniques for aligned fixed-length compression
US5585793A (en) Order preserving data translation
US20200034389A1 (en) Directed graph compression
EP4082119A1 (en) Systems and methods of data compression
Al-Okaily et al. Toward a better compression for DNA sequences using Huffman encoding
GB2539966A (en) Data processing method and apparatus
JP5656593B2 (ja) 符号化データを復号する装置及び方法
TWI643061B (zh) 用於熵編碼之系統層級測試之電腦實施方法、系統及電腦程式產品
JP4758494B2 (ja) ビット長を符号に変換する回路及び方法
JP2011145883A (ja) 圧縮装置、方法及びプログラム、並びに展開装置、方法及びプログラム
CN104682966B (zh) 列表数据的无损压缩方法
JP6645013B2 (ja) 符号化プログラム、符号化方法、符号化装置および伸長方法
Hameed et al. A new lossless method of Huffman coding for text data compression and decompression process with FPGA implementation
JP6512294B2 (ja) 圧縮プログラム、圧縮方法および圧縮装置
Prezza Can Lempel-Ziv and Burrows-Wheeler compression be asymptotically compared
US7791509B2 (en) Preprocessing variable-length code (VLC) bitstream information
EP3422582B1 (en) System and method for real-time compression of data frames
Pannirselvam et al. A Comparative Analysis on Different Techniques in Text Compression
Alzahir A fast lossless compression algorithm for Arabic textual images
WO2017056327A1 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
Saini et al. Optimizing Parameters For Generalized Huffman Based Text Compression
Rachid Research Article Two Efficient Techniques to Find Approximate Overlaps between Sequences

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190326

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200306

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: 20200317

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200323

R150 Certificate of patent or registration of utility model

Ref document number: 6681313

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees