IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

特許7631308エンコーディング及びデコーディングテーブルを用いたセミソーティング圧縮
<>
  • 特許-エンコーディング及びデコーディングテーブルを用いたセミソーティング圧縮 図1
  • 特許-エンコーディング及びデコーディングテーブルを用いたセミソーティング圧縮 図2
  • 特許-エンコーディング及びデコーディングテーブルを用いたセミソーティング圧縮 図3
  • 特許-エンコーディング及びデコーディングテーブルを用いたセミソーティング圧縮 図4
  • 特許-エンコーディング及びデコーディングテーブルを用いたセミソーティング圧縮 図5
  • 特許-エンコーディング及びデコーディングテーブルを用いたセミソーティング圧縮 図6
  • 特許-エンコーディング及びデコーディングテーブルを用いたセミソーティング圧縮 図7
  • 特許-エンコーディング及びデコーディングテーブルを用いたセミソーティング圧縮 図8
  • 特許-エンコーディング及びデコーディングテーブルを用いたセミソーティング圧縮 図9
  • 特許-エンコーディング及びデコーディングテーブルを用いたセミソーティング圧縮 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-07
(45)【発行日】2025-02-18
(54)【発明の名称】エンコーディング及びデコーディングテーブルを用いたセミソーティング圧縮
(51)【国際特許分類】
   H03M 7/30 20060101AFI20250210BHJP
【FI】
H03M7/30 Z
【請求項の数】 16
(21)【出願番号】P 2022508996
(86)(22)【出願日】2020-08-12
(65)【公表番号】
(43)【公表日】2022-10-28
(86)【国際出願番号】 US2020045903
(87)【国際公開番号】W WO2021034565
(87)【国際公開日】2021-02-25
【審査請求日】2023-08-08
(31)【優先権主張番号】16/542,872
(32)【優先日】2019-08-16
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】アレクサンダー ディー. ブレスロウ
(72)【発明者】
【氏名】ヌワン ジャヤセーナ
(72)【発明者】
【氏名】ジョン カラマティアノス
【審査官】原田 聖子
(56)【参考文献】
【文献】特表2012-502573(JP,A)
【文献】米国特許出願公開第2011/0158323(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H03M 7/30
(57)【特許請求の範囲】
【請求項1】
データ処理プラットフォームであって、
メモリと、
前記メモリに結合されたプロセッサと、を備え、
前記プロセッサは、
データ項目のセットを受け取ることと、
前記データ項目の個々のデータ項目毎に、サフィックスデータ及びプレフィックスを前記個々のデータ項目のデータ内容に基づいて選択することと、
前記プレフィックスに基づいて前記データ項目のセットをソートすることと、
複数のエンコーディングテーブルに問い合わせ、前記複数のエンコーディングテーブルから得られた複数の整数を合計することによって前記プレフィックスをエンコードして、前記データ項目のセットに対する全てのプレフィックスの値を表す圧縮情報を含むコードワードσを生成することと、
前記データ項目毎の前記サフィックスデータと前記コードワードσとを前記メモリに記憶することと、
前記コードワードσを復元して前記プレフィックスを再生することと、
前記再生されたプレフィックスを各々のサフィックスデータと組にすることと、
を行うように動作可能である、
データ処理プラットフォーム。
【請求項2】
前記複数のエンコーディングテーブルの各々は、いくつかのプレフィックス位置を含み、
前記複数のエンコーディングテーブルに問い合わせることによって、前記プレフィックスの各々のプレフィックス位置を表す前記複数の整数が得られる、
請求項1のデータ処理プラットフォーム。
【請求項3】
前記エンコーディングテーブルは、プレフィックス毎に、前記プレフィックス位置を表す個々のプレフィックスインデックスが、順序付け特性によって順序付けられたプレフィックス値の複数の順序付き集合に基づく数値を提供するように設けられており、
前記数値は、前記順序付き集合内の前記プレフィックスの相対位置に基づいている、
請求項2のデータ処理プラットフォーム。
【請求項4】
個々のプレフィックスインデックス毎の前記数値は、プレフィックス値の順序付き集合の数を示し、各々の順序付き集合のサイズは、前記順序付き集合内の前記プレフィックス値の相対位置に適用される関数の出力であり、前記順序付き集合内の全てのプレフィックス値は、前記順序付け特性によって計算された前記個々のプレフィックスの値よりも小さい、
請求項3のデータ処理プラットフォーム。
【請求項5】
前記プロセッサは、前記コードワードσを復元する要求に応じて、前記複数のエンコーディングテーブルを少なくとも部分的に計算するように動作可能である、
請求項1のデータ処理プラットフォーム。
【請求項6】
前記複数のエンコーディングテーブルは、数kのエンコーディングテーブルl~lk-1を含み、前記エンコーディングテーブルは、k個のプレフィックスの各々のプレフィックスを部分的にエンコードする、
請求項1のデータ処理プラットフォーム。
【請求項7】
前記プロセッサは、
前記コードワードσを生成する場合に、前記複数のエンコーディングテーブルにアクセスして、以下の式の個々の部分値を取得するように動作可能であり、
【数1】

σは、コードワードであり、pは、前記プレフィックスに基づいて前記データ項目のセットをソートすることによって得られた順序におけるi番目のプレフィックスの値である、
請求項6のデータ処理プラットフォーム。
【請求項8】
複数のエンコーディングテーブルは、前記プレフィックス値と、前記プレフィックス値の順序で配列されていないプレフィックスインデックスと、を含む、
請求項7のデータ処理プラットフォーム。
【請求項9】
前記コードワードσを復元することは、複数の反復を行うことを含み、
前記複数の反復は、
第1の反復において、iをk-1に初期化し、検索値σ’を前記コードワードσに等しい値に初期化することと、
エンコーディングテーブルlを検索して、前記検索値σ’以下の最大値を検索することと、
記プレフィックスpを、前記検索で見つかった前記最大値のテーブルインデックスに等しい値に設定することと、
後続の反復において、iをデクリメントして、前記検索値σ’を、以前の検索値σ’から以前の検索反復で見つかった最大値を引いたものに等しい値に設定することと、
エンコーディングテーブルlを検索して、前記検索値σ’以下の最大値を検索することと、
記プレフィックスpを、前記検索で見つかった前記最大値のテーブルインデックスに等しい値に設定することと、を含む、
請求項8のデータ処理プラットフォーム。
【請求項10】
前記プロセッサは、前記プレフィックスのみを用いて前記データ項目をソートする、
請求項1のデータ処理プラットフォーム。
【請求項11】
データを圧縮して記憶する方法であって、
データ項目のセットを受け取ることと、
前記データ項目のセット内の個々のデータ項目毎に、サフィックスデータ及びプレフィックスを前記個々のデータ項目のデータ内容に基づいて選択することと、
前記プレフィックスに基づいて前記データ項目のセットをソートすることと、
複数のエンコーディングテーブルに問い合わせ、前記複数のエンコーディングテーブルから得られた複数の整数を合計することによって前記プレフィックスをエンコードして、前記データ項目のセットに対する全てのプレフィックスの値を表す圧縮情報を含むコードワードσを生成することと、
前記データ項目毎の前記サフィックスデータと前記コードワードσとを記憶することと、
前記コードワードを復元して前記プレフィックスを再生することと、
前記再生されたプレフィックスを各々のサフィックスデータと組にすることと、を含む、
方法。
【請求項12】
前記複数のエンコーディングテーブルの各々は、いくつかのプレフィックス位置を含み、
前記複数のエンコーディングテーブルに問い合わせることによって、前記プレフィックスの各々のプレフィックス位置を表す前記複数の整数が得られる、
請求項11の方法。
【請求項13】
前記エンコーディングテーブルは、プレフィックス毎に、前記プレフィックス位置を表す個々のプレフィックスインデックスが、順序付け特性によって順序付けられたプレフィックス値の複数の順序付き集合に基づく数値を提供するように設けられており、
前記数値は、前記順序付き集合内の前記プレフィックスの相対位置に基づいている、
請求項12の方法。
【請求項14】
個々のプレフィックスインデックス毎の前記数値は、プレフィックス値の順序付き集合の数を示し、各々の順序付き集合のサイズは、前記順序付き集合内の前記プレフィックス値の相対位置に適用される関数の出力であり、前記順序付き集合内の全てのプレフィックス値は、前記順序付け特性によって計算された前記個々のプレフィックスの値よりも小さい、
請求項13の方法。
【請求項15】
前記複数のエンコーディングテーブルは、数kのエンコーディングテーブルl~lk-1を含み、前記エンコーディングテーブルは、k個のプレフィックスの各々のプレフィックスを部分的にエンコードする、
請求項11の方法。
【請求項16】
前記コードワードσを生成する場合に、前記複数のエンコーディングテーブルにアクセスして、以下の式の個々の部分値を取得することをさらに含み、
【数2】

σは、コードワードであり、pは、前記プレフィックスに基づいて前記データ項目のセットをソートすることによって得られた順序におけるi番目のプレフィックスの値である、
請求項15の方法。
【発明の詳細な説明】
【背景技術】
【0001】
セミソーティング(semi-sorting)は、カッコウフィルタ(cuckoo filters)及びd-leftカウンティングブルームフィルタ(d-left counting Bloom filters)においてフィンガープリントを圧縮する際に使用されることについて説明されている。これらは、他のアプリケーション(例えば、データベースシステム、ゲノムシーケンシング及びファイルシステム)の中でも、ネットワーキングハードウェア及びソフトウェアにおいて普及している2つの重要な近似セットメンバーシップデータ構造(ASMDS)である。フィンガープリントは、ASMDSが近似的に表すセット内の項目(item)の存在をエンコードする短いハッシュである。典型的に、フィンガープリントは、ASMDS内のバケット(キャッシュセットに似ている)に記憶される。バケット内のフィンガープリントの位置は、その意味を変えない。
【0002】
従来の研究では、これらのフィンガープリントをそれらのプレフィックスによって順序付けて、プレフィックスをコードワードと取り替えている。フィンガープリントをエンコード及びデコードするために、従来の研究では、一組のエンコーディング及びデコーディングテーブルを用いている。しかし実際には、これらのテーブルのサイズの、連想度に対するこれらのテーブルのサイズの増加率は、連想度が4の場合にルックアップテーブルのサイズが数キロバイトになるため、バケットの連想度を4以下に制限している。したがって、これらのテーブルのサイズを小さくして、ハードウェアキャッシュや他のメモリへのそれらの記憶を改良するソリューションが望まれている。
【図面の簡単な説明】
【0003】
図1】いくつかの実施形態による、圧縮を含むデータ処理プラットフォームのブロック図である。
図2】いくつかの実施形態による、データを圧縮及び復元するためのプロセスのフロー図である。
図3】いくつかの実施形態による、圧縮データを含むコードワードを形成するためのより詳細なプロセスのフロー図である。
図4】いくつかの実施形態による、エンコーディングテーブルを用いて圧縮データを含むコードワードを形成するためのプロセスを示すテーブルである。
図5】いくつかの実施形態による、セミソーティングプロセスを示す図である。
図6】いくつかの実施形態による、エンコーディングテーブルを用いてコードワードを形成する例を示す図である。
図7】いくつかの実施形態による、コードワードを復元するためのプロセスのフロー図である。
図8】いくつかの実施形態による、エンコーディングテーブルを用いてコードワードを復元するプロセスの一部を示す図である。
図9図8のプロセスのさらなる部分を示す図である。
図10】いくつかの典型的な実施形態による、取得された圧縮性能の例を示すチャートである。
【発明を実施するための形態】
【0004】
以下の説明において、異なる図面での同じ符号の使用は、類似又は同一のアイテムを示す。特に断らない限り、「結合された」という用語及びその対応付けられる動詞の形態には、当該技術分野で周知の手段による直接接続及び間接的な電気接続の両方が含まれ、特に断らない限り、直接接続の任意の説明には、間接的な電気接続の適切な形態を用いた代替的な実施形態の意味も含む。
【0005】
データ処理プラットフォームは、メモリと、メモリに結合されたプロセッサと、を含み、プロセッサは、データ項目のセットの圧縮及び復元を行うことができる。プロセッサは、データ項目のセットを受け取り、データ項目のセット内の各々の個々のデータ項目に対してサフィックスデータ及びプレフィックスを、個々のデータ項目のデータ内容に基づいて選択する。データ項目のセットをプレフィックスに基づいてソートする。プレフィックスを、複数のエンコーディングテーブルに問い合わせる(querying)ことによってエンコードして、データ項目のセットに対する全てのプレフィックスの値を表す圧縮情報を含むコードワードを形成する。データ項目の各々及びコードワードに対するサフィックスデータを、メモリに記憶する。コードワードを復元してプレフィックスを再生し、再生したプレフィックスをその個々のサフィックスデータと組にする。
【0006】
方法は、データ項目を圧縮及び記憶する。データ項目のセットを受け取り、データ項目のセット内の各々の個々のデータ項目に対してサフィックスデータ及びプレフィックスを、個々のデータ項目のデータ内容に基づいて選択する。データ項目のセットをプレフィックスに基づいてソートする。プレフィックスを、複数のエンコーディングテーブルに問い合わせることによってエンコードして、データ項目のセットに対する全てのプレフィックスの値を表す圧縮情報を含むコードワードを形成する。データ項目の各々に対するコードワード及びサフィックスデータを記憶する。コードワードを復元してプレフィックスを再生する。再生したプレフィックスをその個々のサフィックスデータと組にする。
【0007】
有形の非一時的なコンピュータ可読媒体が、少なくとも1つのプロセッサによってデータ項目を圧縮及び復元することが実行可能なプログラム製品を保持する。データ項目のセットを受け取り、データ項目のセット内の各々の個々のデータ項目に対してサフィックスデータ及びプレフィックスを、個々のデータ項目のデータ内容に基づいて選択する。データ項目のセットをプレフィックスに基づいてソートする。プレフィックスを、複数のエンコーディングテーブルに問い合わせることによってエンコードして、データ項目のセットに対する全てのプレフィックスの値を表す圧縮情報を含むコードワードを形成する。データ項目の各々に対するコードワード及びサフィックスデータを、メモリに記憶する。コードワードを復元してプレフィックスを再生する。再生したプレフィックスをその個々のサフィックスデータと組にする。
【0008】
図1に、いくつかの実施形態による、圧縮を含むデータ処理プラットフォームのブロック図を示す。データ処理プラットフォーム100は、任意の並べ直し得る(may be reordered)高いエントロピを伴うデータ項目のセットを圧縮する必要があるプラットフォームであり得る。例えば、本明細書における技術には、近似セットメンバーシップデータ構造(approximate set membership data structures)におけるソフトウェア及びハードウェアキャッシュタグ及びフィンガープリントの圧縮のような多くの用途がある。全般的に、データ処理プラットフォーム100は、固定長の項目のセットに対する圧縮及び復元を行う。本技術は、その順番を置換することができる一様なランダム項目(すなわち、情報エントロピが最大)のときに、最も有用である。用途は、ネットワーキング、ソフトウェアシステム及びハードウェアキャッシュから変化し得る。
【0009】
データ処理プラットフォーム100は、ネットワーク又はホストシステム10と通信して、データ記憶及び取り出しに対する要求を満たすか、ホストシステムに対する暗号化鍵取り出し又はキャッシング等の動作を実行する。データ処理プラットフォーム100には、この例では、ランダムアクセスメモリ(RAM)112と通信するプロセッサ110が含まれる。ランダムアクセスメモリ(RAM)112は、プロセッサ110の内部又は外部にあってもよい。RAM112は、例えば、プロセッサ110の統合キャッシュの一部であってもよいし、プラットフォーム100のメインメモリ内にあってもよい。また、プロセッサ110は、不揮発性メモリ120と通信する。不揮発性メモリ120は、圧縮及び復元プログラムコード122等のコンピュータプログラムコードを保持する有形の非一時的なコンピュータ可読媒体(例えば、フラッシュメモリ又はハードドライブ)である。
【0010】
RAM112は、以下で説明する圧縮技術で用いられるデータを保持する。例えば、コードワードσ及びサフィックス0~サフィックスk-1(数kのサフィックスが存在し、それぞれk個のデータ項目のうち何れかと対応付けられる)である。このようなデータも不揮発性メモリに記憶されてよい。プログラムコード122が不揮発性メモリ120からロードされると、RAM112内に圧縮及び復元プログラムコードが存在する。これを、ロードされた圧縮エンジン114及びロードされた復元エンジン116によって示す。本明細書で説明する技術と共に用いる他のデータ(例えば、圧縮されるデータ項目及びエンコーディングテーブル)も、RAM112又は不揮発性メモリ120に保持されてよい。
【0011】
この実施形態では、データ処理プラットフォームには、プログラムコード命令を実行するプロセッサ110が含まれているが、他の実施形態では、圧縮機能の一部又は全部を、ネットワーキングASIC、CPU、GPU又はFPGA内のプログラマブルロジックにおけるデジタルロジック等のハードウェアで実施してもよい。
【0012】
図2に、いくつかの実施形態による、データ圧縮及び復元するためのプロセス200のフロー図を示す。データ項目のセットを圧縮用に用意する(ブロック202)。データ項目は、典型的には、固定長の項目であり、前述したようにエントロピが高い場合が多い。データ項目内のビットのいくつかのサブシーケンスはエントロピが高い場合があり、一方で、他のサブシーケンスの方が、ランダム性が低い場合がある。例えば、例を挙げると、ASMDSからの種々のタイプのキャッシュライン、キャッシュタグ、フィンガープリント、ネットワークルーティングデータ、分岐予測器若しくはハードウェアプリフェッチャからのハードウェアテーブル、又は、データベースエントリである。
【0013】
ブロック204において、プロセス200は、セット内の各データ項目に対してプレフィックス及びサフィックスデータを、項目のデータ内容に基づいて選択する。いくつかの実施形態では、データ項目は、識別されたプレフィックス及びサフィックスを既に有していることがあり、その場合、ブロック204は必要ない。例えば、データ項目のセットは、キャッシュタグが既に与えられているキャッシュラインのセットであってもよく、一部又は完全タグがプレフィックスとして用いられる。プレフィックスを選択するとき、プロセス200は、好ましくは、各項目からビットの確定論的なサブシーケンス(例えば、項目から最初のビットの数)を選択する。サブシーケンスは、データ項目の任意の所望の一部から選択してもよく、データ項目からの不連続ビット(例えば、データ項目からの不連続ビットサブシーケンスから計算されたフィンガープリント又はハッシュ)を含んでいてもよい。代替的に、データ項目の所望の一部に対するハッシュ又は計算を特定の実施形態で用いて、プレフィックスを選択するか生成する。サフィックスデータは、典型的に、プレフィックスを除いたデータ項目内に残ったビットである。
【0014】
次に、ブロック206において、データ項目をプレフィックスに基づいてソートする。ソートは、データ項目の全セットに対して行ってもよいし、セットをサブセットに分割してサブセットをソートしてもよい。いくつかの実施形態では、データ項目をプレフィックスの順序付けに従う順番で記憶し、これらの実施形態の場合、ブロック206を実行する必要はない。次に、ブロック208において、セット内の全てのプレフィックスの圧縮された値を表すコードワードを形成する。これについては、後述する。コードワードを、ソートしたセットに基づいて形成する。コードワードは、非損失性(non-lossy)であってもよく、すなわち、圧縮されたプレフィックスの全てのビットを再現することができてもよい。複数のサブセットをソートする場合、コードワードは、典型的に、各サブセットに対して形成する。
【0015】
ブロック210において、サフィックスデータ及びコードワードをメモリに記憶する。用途に応じて、記憶用に用いるメモリは、短期(short term)RAM(例えば、RAM112(図1))又は記憶メモリ(例えば、不揮発性メモリ120(図1))であってもよい。また、サフィックスデータ及びコードワードを、圧縮及び復元を行うデータ処理プラットフォームの一部ではないデータベース又はネットワーク接続された記憶装置に記憶してもよい。
【0016】
データセットからの情報が要求されると、記憶したサフィックスデータ及びコードワードを取り出して、プレフィックスを復元する(ブロック212)。1つの好適な復元プロセスの例について以下に説明する。次に、復元したプレフィックスをプレフィックスデータと組にして、完全なデータ項目を得る。場合によっては、後述するように、所望のデータ項目が復元プロセスの早くに抽出された場合には、完全なコードワードを復元する必要がない。
【0017】
図3に、いくつかの実施形態による、圧縮データを含むコードワードを形成するためのより詳細なプロセス300のフロー図を示す。圧縮プロセスのさらなる例を図4図6に示す。これらのプロセスは、ソフトウェア圧縮エンジン(例えば、図1の圧縮エンジン114)によって、又は、ハードウェア及びソフトウェアの他の好適な組み合わせによって行われてよい。
【0018】
プロセス300は、ブロック302においてコードワードの形成を始める。ブロック304では、コードワードの形成に必要なエンコーディングテーブルを、それらをメモリから取り出すか、それらを計算するか、又は、それらを部分的に計算することによって設ける。これについては後述する。
【0019】
各プレフィックスに対して、ソーティングによって与えられる順番で、ブロック306は、複数のエンコーディングテーブルに問い合わせることによってプレフィックスをエンコードして、データ項目のセットに対する全てのプレフィックスの値を表す圧縮情報を含むコードワードσを形成する。この実施形態では、ブロック306は、エンコーディングテーブルに問い合わせて、エンコーディングテーブル内の個々のプレフィックス位置を表す複数の整数を取得する。
【0020】
データ項目がそのプレフィックス値を介して順序付けられる限り、図5に示すように、プロセスは、ソーティング結果の変化を処理してもよい。ブロック308において、複数の入力テーブルに問い合わせた結果を用いて、この実施形態では、図示するように、結果として得られる整数を合計することによって、コードワードσを形成する。図5に、プレフィックス及びサフィックスが識別されたデータ項目のセットの未処理入力を示す。図示したデータ項目は、簡単にするために、少数の小さいデータ項目を伴う単なる一例であり、本明細書の技術によりデータ項目の他の多くの構成を記憶してもよい。これらのデータ項目をブロック206(図2)で述べたようにソートする。このソートは、データ項目に対するセミソート(semi-sort)を構成する。なぜならば、ソーティングにおいてサフィックスデータを用いておらず、プレフィックスデータのみ用いるからである。したがって、ソートの結果は、順番が変化し得る。これは、図5のソート出力A及びBによって示す通りであり、これらは両方とも、データ項目に対するプレフィックスベースのソートの正当な結果である。なお、同じプレフィックス(101)を共有する2つのデータ項目が、A及びBにおける交換位置に現れている。より全般的には、同じプレフィックスを伴うデータ項目が互いのソートの出力に任意の順番で現れ得るが、出力の正しさには影響しない。入力データの順番の変化(例えば、図5に示すもの)が起こり得るにもかかわらず、プロセス300は効果的である。
【0021】
図3を再び参照すると、ブロックは順次的であると示しているが、実際の順番は実施形態に依存する。プロセッサによって行われると、プロセスは各プレフィックスを反復して、各反復において累積した合計に整数値を加え得る。より並列な実施形態の場合、エンコーディングテーブルルックアップを並列に実行し得る。全ての整数が合計されると(ブロック308)、完了した合計によってコードワードσが得られる。
【0022】
図4に、いくつかの実施形態による、エンコーディングテーブルを用いて圧縮データを含むコードワードを形成するためのプロセスのテーブルを示す。圧縮エンコーディングは、k個のrビットプレフィックスの順序付きリストを取得し、それらを表現するコードワードを出力する。整数kはセット内のデータ項目の数を表し、rは各プレフィックスにおけるビットの数を表す。このようなエンコーディング方式の一つを示す。これは、組合せ論的表現
【数1】

の変形を用いてエンコーディングを列挙している。この方式では、セット0,1,2,...,k-2,k-1においてデータ項目を列挙するイテレータiを用いている。列挙する際、2の代わりにi番目のデータ項目に対するプレフィックスの値(pと言う)、kの代わりにi+1(ゼロインデックスでなければkの代わりにiとなる)番目のデータ項目に対するプレフィックスの値に付け加えられる。そして、これらの部分表現にわたって合計して、正味の合計を生成する。この実施形態ではk個のプレフィックスをエンコードするコードワードσに対する数式が、式(1)によって与えられる。
【数2】
【0023】
図示したテーブル400には、k=4及びr=log(3)に続くこの数式の適用の例を示す。この例では、プロセスは、4個のデータ項目プレフィックスを取り、それらの記憶コストを4log(3)~6.34ビットからlog(15)~3.91ビットに減らす。このエンコーディングは、1つ以上の事前に計算されたテーブルにアクセスすることによって、計算値を必要とする圧縮又は復元要求に応じて閉形式表現(closed form expressions)を計算することによって、又は、これらの組み合わせによって行うことができる。さらに別の代替案は、値又は部分値を必要時に計算するのみであるが、関連するデータ又はハードウェア構造において値が計算された後にそれをキャッシュして、後の使用に備えることである。計算に含まれる乗算計算を一連の等価な加算、シフト及びマスキング動作まで減らすことも可能である。
【0024】
事前に計算されたエンコーディングルックアップテーブルを用いるバージョンでは、セット内の各データ項目に対して別個のルックアップテーブルを用いることが好ましい(エンコーディングが恒等関数である0番目のデータ項目を除く)。テーブル400から、4つのエンコーディングテーブルl~lが形成されて、4つの各列において示される組合せ論的表現に対する値を保持している。そしてこれらの同じテーブルも、デコーディングに対して用いることができる。これについては後述する。
【0025】
この実施形態では、テーブルの数は、プレフィックスkの数に等しい。他の実施形態では、より少ないテーブルを用いてもよい。例えば、暗黙的なエンコーディングを用いてテーブルlを実装することができる。これについては、図10に関してさらに後述する。テーブルは、概して、テーブルl~lk-1と呼ばれる。各lは、i番目のデータ項目のプレフィックスpに対するエンコーディングテーブルである。各lは、2個のエントリを保持し、特定のp(特定のエンコーディングを示す)によってインデックス付けされる。具体的には、
【数3】

は、i(0≦i≦k-1)の全ての整数値及びp(0≦p≦2-1)の全ての整数値に対するものである。この実施形態では、テーブル内のプレフィックス位置を表すインデックス値を用いてプレフィックスをエンコードする。他の実施形態では、他の値を用いてもよい。例えば、インデックス付き値が、テーブル内で示される順番とは異なる順番で現れ得る。この場合、返されるインデックスは、必ずしもプレフィックス位置ではない。
【0026】
エンコーディングテーブルを計算又は記憶する効率を上げるために種々の技術を用いてもよい。実行中にエンコーディングテーブルを部分的に計算してその記憶コストを減らすことができる。例えば、全ての2の乗算をシフト演算として実施してもよく、したがって、シフトされた値ではなくこのようなシフトのカウントを記憶する方が効率的である。エンコーディングテーブルl~lk-1を提供する際に、エンコーディングテーブル内の2つのエントリが同じ値を記憶する場合には、プロセスは、2つのエントリをマージして単一のエントリにしてもよい。例えば、r及びkに対する適切な値を選択することによって、プロセスは、
【数4】

という特性又は他の暗号化方式に対する同様の特性を利用して、記憶する必要があるテーブル毎のエントリの数を減らしてもよい(例えば、pi=5及びi=2の場合、
【数5】

であり、何れも35である)。その場合、プロセスは、個々のlを、タプルp及びiによってインデックス付けされた単一の行列と取り替えてもよい。これは、i+1がp-1に等しい場合には重複値を記憶しない(例えば、プロセスは
【数6】

の両方を記憶しない)。
【0027】
いくつかの実施形態では、エンコーディングテーブルは、r及びkの共通の値に対してサイズがキロバイトを超えない場合がある。プロセスはただ、2k個のエントリのオーダーで記憶すれば良いので、約4~8の範囲のrの値を用いてもよく、一方で、依然としてスペース節約の大部分が得られ、エンコーディングテーブルに対する面積オーバーヘッドが小さい。この範囲のr値における典型的な実施形態に対して記憶要求が下がることを以下の図10で見ることができる。
【0028】
図5及び図6のシーケンスに、8ビットデータ項目を使用して3ビットプレフィックスを用いる圧縮プロセス例を示す。図5に、いくつかの実施形態による、セミソーティングプロセスの結果500を示す。図示しているのは、プロセスに対する4つの未処理入力データ項目(それぞれ8ビット)である。3ビットプレフィックスと残りの5ビットサフィックスとが識別される。セミソートされた出力(例えば、図2のブロック206の出力)の2つの正当な変化を、示されたA及びBとして示す。図から分かるように、セット内の2つのデータ項目のプレフィックス値は101である。その個々のプレフィックスの相対的な順序付けを受けるデータ項目がソートによって再配列されるため、ソートされた出力において、プレフィックス101である2つの図示したデータ項目は、正確さに影響することなく互いに置き換えられ得る。
【0029】
図6に、いくつかの実施形態による、エンコーディングテーブルを用いてコードワードを形成する典型的なプロセス600を示す。図示したシナリオでは、図5からのデータ項目のセット(出力Aによりソートされている)を用いる。符号化プロセスは、概して、k個のrビットプレフィックスで開始され、プレフィックスをエンコードして、プレフィックスの圧縮表現であるコードワードσを生成する。このシナリオでは、kは4であり、プロセス600は、4つのエンコーディングテーブルl~lを用いる。エンコーディングテーブルは、図4に関して説明した技術により、又は、他の好適な技術を用いて生成してもよい。図に、各プレフィックス値からこのプレフィックスに対する個々のエンコーディングテーブル内のテーブルエントリまでの矢印を示す。プレフィックス値は、テーブル内でインデックスとして用いられることが示されている。関数「nCr」は、組合せ論的表現「n選択k(n choose k)」(順番が問題とならない場合にn個の項目のグループからk個の項目を選択する方法の数)を示す。それぞれの個々のエントリにおいて整数値が結果として生じるのは、図3のブロック306に関して説明した通りである。テーブルエントリから加算器ブロックまでの矢印は、整数値が合計されてコードワードσ(この例では、261の値を有する)が生成されることを表す。このコードワード値を5ビットのサフィックス値と一緒にメモリに記憶する。
【0030】
いくつかの実施形態では、エンコーディングテーブルは、各プレフィックスに対して、個々のプレフィックスインデックスが、順序付け特性によって順序付けられたプレフィックス値の複数の順序付き集合に基づいてカウントを与えるように設けられており、カウントは、順序付き集合内のプレフィックスの相対位置に基づいている。それぞれの個々のプレフィックスインデックスに対するカウントは、プレフィックス値の順序付き集合の数を示し、それぞれの順序付き集合のサイズは、順序付き集合内でのプレフィックス値の相対位置に適用される関数の出力であり、順序付き集合内の全てのプレフィックス値は、順序付け特性によって計算された個々のプレフィックスの値よりも小さい。例えば、図6の実施形態では、i番目のプレフィックス(0≦i<k)を試験する場合、i番目のプレフィックスのエンコーディングを、l[プレフィックス]上でテーブルルックアップを行うことによって取り出す。返されるインデックス値は、i番目のプレフィックスを含む第1のリストを数値的に先行するプレフィックスの長さi+1のソートされたリストの数のカウントである。例えば、iが3でプレフィックスが2である場合、l[2]に、リスト2,0,0,0に先行する非増加の順番で順序付けられた長さ3+1のリストの数のカウントが記憶される。これらは(1,1,1,1)、(1,1,1,0)、(1,1,0,0)、(1,0,0,0)及び(0,0,0,0)であり、全体で5つである。この実施形態では、順序付き集合とともに用いる順序付け特性は非増加であるが、規定された順番でプレフィックス値を配置する任意の好適な順序付け特性を用いてもよい。
【0031】
図7に、いくつかの実施形態による、コードワードを復元するためのプロセス700のフロー図を示す。図8に、いくつかの実施形態による、エンコーディングテーブルを用いてコードワードを復元するプロセス800の一部を示す。図9は、図8のプロセスのさらなる部分900を示す図である。以下の説明では、必要に応じて図7図9を参照する。プロセス700は、ソフトウェア復元エンジン116(図1)、又は、他の好適なハードウェア実施形態によって行われてもよい。図示した復号プロセスは、前述した所定の符号化プロセスを用い得る一例である。上記のエンコーディング又は他のエンコーディングに対して、他のデコーディング方式が可能である。
【0032】
ブロック702において、データ項目のセットからデータを得る要求に応じて、プロセス700は、データ項目のセットに対するコードワードσをメモリから取り出して、復元を始める。図8の一番上に沿って示すように、データ項目のセットの記憶したサフィックスも取り出す。デコーディングは、全般的に、k個のrビットプレフィックスの圧縮表現であるコードワードσで始まり、プレフィックスのデコードをk-1番目のプレフィックスから始めて0番目のプレフィックスまで行う。プロセス700にはk個の反復(この例では4つ、プレフィックスあたり1つ)が含まれる。反復では、エンコーディングテーブルl~l図8及び9に示すような)を、セミソーティングによって生成された順番で用いる。この実施形態では、使用するテーブルは、テーブルlk-1からテーブルlのエンコーディングで用いたのと同じエンコーディングテーブルである。
【0033】
第1の反復において、ブロック704におけるプロセス700では、整数iをk1に、検索値σ’をコードワードσに等しい値に初期化する。次にブロック706において、エンコーディングテーブルlを検索して、検索値σ’以下の最大値を探す。これを図8に例示する。図8では、テーブルlを、261のσ’よりも小さい最高値の検索から強調された検索結果とともに示している。これは、最後のエントリで見られる値210である。
【0034】
この検索結果をブロック708で用いる。ブロック708では、再生したプレフィックスpを、検索で見つかった最大値のテーブルインデックスに等しい値に設定する。図9の例において、再生したプレフィックスを、テーブルl内の最後のエントリのインデックス111に設定する。再生したプレフィックス値の111を、記憶したサフィックス値10111と、コードワードをエンコードするときに用いたソートによって得られた順番で結合し、テーブルlの下に示す完全なデータ項目が得られる。
【0035】
次にブロック710において、整数iを減らして設定して、次の反復に進む。ブロック712において、検索値σ’を、以前の検索値σ’から、以前の検索値σ’以下であった以前の検索反復で見つかった最大値を引いたものに等しい値に設定する。図9の例では、この値を、261-210=51として計算された新しい検索値σ’によって示す。値の供給元を、加算ブロック902に送り込まれる矢印によって示す。
【0036】
次にブロック714において、エンコーディングテーブルlを検索して、新しい検索値σ’以下の最大値を探す。これを、図8において、テーブルl内の強調された検索結果である35(51よりも小さい最大のテーブルエントリ)によって示す。ブロック716において、再生したプレフィックスpを、検索で見つかった最大値のテーブルインデックスに等しい値に設定する。例では、再生したプレフィックスpを、テーブルlに対して、強調されたインデックス値101に設定する。このプレフィックスを、記憶したサフィックスデータと結合して、プレフィックスpに対する完全なデータ項目が得られ、10111111である。
【0037】
ブロック710~716を、整数iがゼロにおいて最後の反復が完了するまで繰り返し、再生したプレフィックスのセットが完成する。図8図9の例では、最後の2つの反復が示され、結果として得られる値を示している。テーブルlをσ’の値16を用いて検索する。これは、以前の反復からの以前の検索値51から、見つかった最大値35を引いたものに等しい。再生したインデックスpを、16を用いた検索で見つかったテーブルインデックス値(101であり、テーブルlからのインデックス15)に設定する。次にテーブルlを、σ’の値1を用いて検索する。これは、以前の検索値16から、これまでに見つかった最大値15を引いたものに等しい。再生したインデックスpを、1を用いた検索で見つかったテーブルインデックス値(001であり、テーブルl内で見られる値1のインデックス)に設定する。
【0038】
なお、図示したプロセス700では、プレフィックス再生又は復元が完全に生じると示しているが、これは限定ではなく、プロセスの早くに再生されたプレフィックスからのみ値が必要である場合には、プロセスは単に部分的に完了する場合がある。
【0039】
ブロック706及び714の検索は、小さいテーブルに対して線形又は並列な方法で行ってもよいし、代替的に、より大きいテーブルに対して、修正された二分探索等の別の好適な検索アルゴリズムを用いて行ってもよい。前述したように、プロセスは、プログラムコードを実行するマイクロプロセッサを用いて、特定用途向けデジタルロジックを用いて、又は、プログラマブルロジックを用いて実施してもよい。
【0040】
図10に、いくつかの実施形態により得られた圧縮性能の例のチャートを示す。チャート1000に、複数のデータセットに対する前述したプロセス例の性能を示し、データ項目あたりのビット減少(垂直軸)対ビットで表したプレフィックス長(r)(項目あたりの圧縮ビットの数)(水平軸)を示す。チャート記号によってデータセットの異なる連想度を識別している。本明細書では、「連想度」という用語を、当該技術分野で通常使用されるように用いて、データのキャッシュセット又は同様のセットを説明する。すなわち、各メモリアドレス又は他のデータ項目識別子は、データ項目のセット又はグループ内の可能な数の位置にマッピングされる。可能な位置の数が連想度である。連想度が2の累乗で増える毎に、圧縮されたプレフィックスあたりほぼ1ビット節約されることに留意されたい(rに対する適切な値を想定する)。
【0041】
k項目セットがrビットプレフィックスを伴うことを想定すると、これらのプレフィックスを記憶する最初のスペースはkrビットである。このようなエンコーディングによって、記憶プロセスは、複製が許されるk個のrビット数のセットの全て2rk個の並べ換えをエンコードすることができる。しかし、データ項目あたり正確に2個の別個の値がある場合、これらの値が順序付けられていると、問題は、krビット数の全ての並べ換えを記憶する必要があることから、単に組み合わせを記憶する必要があることに発展する。
【数7】

個のこのような組み合わせが存在し、完全な2rk個の並べ換えよりもはるかに少ない。したがって、本明細書における技術は、
【数8】

ビットにおけるこれらの組み合わせを最も近い全体ビットに丸めたときに、エンコードすることができる。したがって、セットあたりの正味の節約は、k個のrビット数(krビット)の正味のサイズから新しいサイズ(
【数9】

ビット)を引いたものである。正味の節約をセットあたりの項目数(k)で割ることで、圧縮されたプレフィックス(又は、その事に対する項目)あたりのビット節約が得られる。これは、図10でいくつかの例に対してプロットされ、式(2)によって概略的に記述される。
【数10】
【0042】
チャート1000から理解され得るように、連想度が高い構造の場合、プレフィックスの記憶コストは、セット連想度に応じて1~4ビットだけ下げることができる場合が多い。ASMDSでは、データ項目は、長さが単に8~数10ビットであることが多く、項目あたり1~4ビットの節約は重要である。さらに、プレフィックスは、圧縮の利益の大部分を実現するために、長さが数ビットであればよい。この特性は重要である。なぜならば、本明細書のプロセス例における個々のエンコーディングルックアップテーブルは、それぞれ2個のエントリを有しているため、プレフィックスが長くなるとエンコーディングテーブルサイズの点でコストがかかるからである。
【0043】
従来の研究では、1つのデコーディングテーブルと1つのエンコーディングテーブルとを用いている。圧縮の前にソーティングを行っていないと、完全な2rk個の並べ換えは、それぞれエンコーディングテーブル内にエントリが必要となる。圧縮の前にプレフィックスによるソーティングを行っていれば、
【数11】

個のエントリを伴うテーブルのみが必要となる。例えば、各エントリが4バイトのサイズである場合、r=4及びk=4であっても、ルックアップテーブル内に3867エントリが存在する。項目あたり2バイトの場合、各テーブルは約8KB(両方に対して16KB)となる。
【0044】
対照的に、本明細書のいくつかの実施例ではk個のルックアップテーブルを使用し、それぞれ2エントリを伴っている。k=4及び4=4の場合、このようなデザインでは最大でk2個のエントリを用いる。エントリあたり2バイトでは、全体的なスペースコストは2バイト*4*2^4=128バイトとなる。このアプローチの記憶コストは、rが固定されているときにkに対してほぼ直線的にスケール変更するが、線形挙動から逸脱する。なぜならば、各ルックアップテーブルエントリは、
【数12】

ビットのオーダーでエンコードするからである。実行中にルックアップテーブル値を計算することによってエンコーディング及びデコーディングを行うことで、記憶コストがさらに減る。前述したように、別の利用可能な最適化は、最後のルックアップテーブルを暗黙にすることである。なぜならば、それは常に
【数13】

であり、単にpであるため、復元プロセスのk-1個の反復後に残っているものは何であれ、最後のプレフィックスだからである。同様に、エンコーディング中に、ゼロ番目のプレフィックスを整数合計に加えることによって、符号化プロセスの最後のプレフィックスをコードワードにエンコードしてもよい(図3の308)。
【0045】
本明細書で説明した技術は、ハードウェア及びソフトウェアの様々な組み合わせを用いて実施することができる。例えば、ハードウェア回路は、デジタルロジック、有限状態機械、プログラマブルロジックアレイ(PLA)等を含んでもよい。圧縮及び復元プロセスは、マイクロコントローラが、記憶されたプログラム命令を実行して、保留中のコマンドの相対的なタイミングの適格性を評価することで実施することができる。この場合、命令の一部を非一時的なコンピュータメモリ又はコンピュータ可読記憶媒体に記憶して、マイクロコントローラが実行するようにしてもよい。様々な実施形態では、非一時的なコンピュータ可読記憶媒体は、磁気若しくは光ディスク記憶装置、フラッシュメモリ等の個体記憶装置、又は、他の不揮発性メモリ装置若しくはデバイスを含む。非一時的なコンピュータ可読記憶媒体に記憶されるコンピュータ可読命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され及び/又は実行可能な他の命令フォーマットであってもよい。
【0046】
図1のデータ処理プラットフォーム100、その任意の部分(例えば、プロセッサ110等)、又は、他の実施形態(例えば、カスタマイズされたデジタルロジック実施形態等)は、データベース、データベースインデックスの形態のコンピュータアクセス可能なデータ構造、または他のデータ構造であって、集積回路を製造するためにプログラムによって読み出し、直接又は間接的に使用できるものによって、記述又は表現されてもよい。例えば、このデータ構造は、例えばVerilog又はVHDL等の高レベル設計言語(HDL)におけるハードウェア機能の動作レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。この記述は、合成ライブラリからゲートのリストを含むネットリストを生成するためにこの記述を合成し得る合成ツールによって読み出されてもよい。ネットリストには、集積回路を含むハードウェアの機能を表すゲートのセットが含まれる。そして、マスクに適用される幾何学的形状を記述するデータセットを生成するために、ネットリストを配置及びルーティングしてもよい。そして、マスクを種々の半導体製造ステップで用いて、集積回路を製造してもよい。代替的に、コンピュータアクセス可能な記憶媒体上のデータベースは、ネットリスト(合成ライブラリ付き若しくは無し)又はデータセット、必要に応じて、グラフィックスデータシステム(GDS)IIデータであってもよい。
【0047】
特定の実施形態について説明してきたが、これらの実施形態に対する種々の変更が当業者には明らかである。例えば、データセット内のデータのタイプは、異なる実施形態において異なっていてもよく、例えば、様々なタイプのキャッシュライン、キャッシュタグ、ASMDSからのフィンガープリント、ネットワークルーティングデータ、分岐予測器若しくはハードウェアプリフェッチャからのハードウェアテーブル、又は、データベースエントリ等である。エンコーディングテーブルを生成するために用いられる数学的アルゴリズムは、異なっていてもよい。複数のテーブルに基づくエンコーディング及びデコーディング用の特定のプロセスも異なっていてもよい。エンコーディングテーブルを設ける方法も異なっていてもよく、テーブル値の計算又は部分的な計算が含まれる。さらに、本明細書の例では単一のコードワードを用いているが、他の実施形態では、使用する圧縮アルゴリズムに応じて、特定のデータセットに対して複数のコードワードを生成してもよい。
【0048】
したがって、添付の特許請求の範囲によって、本開示の範囲に含まれる開示した実施形態の全ての変更をカバーすることが意図されている。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10