JP2023004848A - 圧縮アクセラレーションの早期アボートのための技術 - Google Patents

圧縮アクセラレーションの早期アボートのための技術 Download PDF

Info

Publication number
JP2023004848A
JP2023004848A JP2022030743A JP2022030743A JP2023004848A JP 2023004848 A JP2023004848 A JP 2023004848A JP 2022030743 A JP2022030743 A JP 2022030743A JP 2022030743 A JP2022030743 A JP 2022030743A JP 2023004848 A JP2023004848 A JP 2023004848A
Authority
JP
Japan
Prior art keywords
compression
output file
source data
size
compress
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022030743A
Other languages
English (en)
Inventor
デイビッド ギルフォード ジェイムス
David Guilford James
ゴパル ヴィノド
Gopal Vinodh
フレデリック カッター ダニエル
Frederick Cutter Daniel
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2023004848A publication Critical patent/JP2023004848A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation
    • H03M7/3071Prediction
    • 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
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10BELECTRONIC MEMORY DEVICES
    • H10B10/00Static random access memory [SRAM] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • 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/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)

Abstract

【課題】データの圧縮にかかる時間を短縮するプロセッサパッケージ及びデータプロセッシングシステムを提供する。【解決手段】データプロセッシングシステムは、ソースデータを出力ファイルに圧縮し、ソフトウェアからの要求を処理する圧縮アクセラレータを含む。圧縮アクセラレータは、圧縮オペレーションの早期アボートを提供するための早期アボート回路を含み、予め定められたサンプルサイズを用いて、出力ファイルの一部についての推定サイズを算定する。サンプルサイズは、推定サイズを算定する前に、ソースデータのどのくらいの量が分析されるべきなのかを指定する。圧縮アクセラレータは、予め定められた早期アボート閾値に基づいて、推定サイズが、許容できる圧縮量を反映しているかを判定し、推定サイズが、許容できる圧縮量を反映していない場合、要求をアボートし、推定サイズが許容できる圧縮量を反映している場合、要求を完了する。【選択図】図1

Description

本開示は、概してデータプロセッシングシステムに関し、特にデータ圧縮のための技術に関する。
多くのデータプロセッシングシステムは、ランダムアクセスメモリ(RAM)及び不揮発性ストレージ(NVS)を含み、RAMは、NVSよりも容量が少ないが、より速いアクセシビリティを有する。かかるデータプロセッシングシステム上のソフトウェアがデータを必要とする場合、データプロセッシングシステムは、NVSからRAMへとそのデータを写してよい。そしてRAMが既にフルである場合、データプロセッシングシステムは、1又は複数の古いデータのページをRAMからNVSへとスワップして、新たなデータの空間を作ってよい。
又は、NVSへと古いページをスワップする代わりに、データプロセッシングシステムは、ソフトウェアツールを用いて、古いページを圧縮し、圧縮データをRAMの別の部分に写してよい。例えば、「Linux(登録商標)」の名前又は商標で知られるオペレーティングシステム(すなわち「Linux OS」)は、その目的で用いられ得る「zswap」として知られるツールを含んでよい。
しかしながら、これはデータを圧縮するのに時間がかかる。さらに、一部のデータは、あまり圧縮性がない。したがって、少なくとも場合によっては、zswapを用いるシステムのパフォーマンスは、RAMからNVSへとデータの古いページをスワップする、より従来のアプローチを用いるシステムよりも、劣り得る。
本発明の特徴及び利点は、添付の特許請求の範囲、1又は複数の例示的実施形態の以下の詳細な説明、及び対応する以下の図面から明らかになるであろう。
圧縮アクセラレーションの早期アボートのための技術を用いたデータプロセッシングシステムの例示的実施形態を示すブロック図である。
図1のデータプロセッシングシステム内の圧縮アクセラレータのための早期アボートパラメータの例示的実施形態を示すテーブルを提示する。
圧縮アクセラレーションの早期アボートを提供するプロセスの例示的実施形態のフローチャートを提示する。
1又は複数の実施形態に係るシステムのブロック図である。
1又は複数の実施形態に係る第1のより具体的な例示的なシステムのブロック図である。
1又は複数の実施形態に係る第2のより具体的な例示的なシステムのブロック図である。
1又は複数の実施形態に係るシステムオンチップのブロック図である。
上記のように、新たなページデータのための空間をRAM内に作るために、データプロセッシングシステムは、古いページをNVSに移動させる代わりに、zswap等のツールを用いて、古いページを圧縮し、その圧縮データをRAMの別の部分に移動させてよい。本開示の目的のために、システム上で動作するソフトウェアにより迅速にアクセスされることができるようにスワップインされたデータを含む、RAMの1又は複数のエリアは、RAMの「ワークエリア」又は「ワーク・プール」と称されてよく、一方で、スワップアウトされたデータを保持する、RAMの1又は複数のエリアは、RAMの「スワップエリア」又は「スワップ・プール」と称されてよい。そして、古いページが、再度必要とされる時、システムは、圧縮データを解凍し、その解凍されたデータをワーク・プールに移動する。したがって、データプロセッシングシステムは、ワーク・プール及びスワップ・プールをRAM内に提供するため、及びワーク・プールとスワップ・プールとの間でデータを移動させる時に、ページレベルでの圧縮及び解凍を用いるために、zswapのようなツールを用いることによって、メモリ階層又はメモリティアを提供してよい。本開示の目的のために、このような種類のプロセスには、少なくとも2つの異なるタイプの、古いページの対するデスティネーションのうち一方を判定することが含まれるので、このような種類のプロセスは、概して「可変デスティネーションスワッピング」と称されてよい。
また、本開示の目的のために、圧縮アクセラレータによって圧縮される入力データは、「ソースデータ」又は「ソースファイル」と称されてよく、生成される圧縮データは、「出力ファイル」と称されてよい。
概して、可変デスティネーションスワッピングの目標は、ストレージ媒体等のより遅いティアへのスワッピングよりもはるかに良いパフォーマンスで、有効なメモリ容量を増加させることである。したがって、達成される圧縮比を最大化(また、それによりRAMを削減)しつつ、圧縮及び解凍についてのレイテンシを最小化することが重要である。理想的なパフォーマンス目標は、はるかに大きいRAM容量を有する、圧縮なしのシステムと比べて、アプリケーションへのパフォーマンス影響がほぼゼロの状態で、(ページ圧縮によって)メモリ削減を最大化することである。
一部のシステムにおいて、圧縮と解凍のタスクは、「Lempel-Ziv-Oberhumer」(LZO)として知られるアルゴリズム等の比較的軽量な圧縮アルゴリズムを用いるソフトウェアによって実行されてよい。かかるアルゴリズムは、速度が比較的高いという利点を有するものの、圧縮が比較的低いという犠牲が伴う。あるいは、システムは、「デフレート」として知られるもの等の圧縮アルゴリズムを用いて、より良い圧縮を達成してよいが、圧縮及び解凍についてのレイテンシが増加するという犠牲が伴う。デフレートは、ハフマン符号化と、LZ77として知られるデータ圧縮アルゴリズムに基づく符号化(又はLempel-Ziv-Storer-Szymanski(LZSS)符号化等のLZ77の派生若しくは変形に基づく符号化)との組合せを用いた出力ファイルフォーマットが含まれる可逆データ圧縮及び解凍プロセスである。しかしながら、かかる重量圧縮アルゴリズムを用いることのレイテンシ影響を低減する1つの方法は、ソフトウェア圧縮ツールの代わりにハードウェア圧縮アクセラレータを用いて、圧縮及び解凍アルゴリズムを実施することである。本開示の目的のために、「アクセラレータ」という用語は、ハードウェア圧縮アクセラレータを意味する。圧縮アクセラレータはまた、「圧縮エンジン」又は「コプロセッサ」と称されてよい。
可変デスティネーションスワッピングのプロセスの一部として、オペレーティングシステム(OS)又は仮想マシンモニタ(VMM)等のソフトウェアは、圧縮されていないソースデータに基づいて、圧縮データを生成するために、アクセラレータを用いてよい。特に、データのページをRAMワーク・プールからスワップするためのスワップアウトオペレーションの圧縮段階の一部として、ソフトウェアは、アクセラレータを、かかる態様で用いてよい。
以下により詳細に説明するように、当該圧縮段階のパフォーマンスを向上させる1つの方法は、圧縮されるデータの特性に基づいて、及び、場合によってはソフトウェア定義パラメータを含む、様々な予め定められたパラメータに基づいて、早期アボート特徴を実施することである。特に、本開示では、ソースデータのサブセットのみを分析した後に、ソフトウェアによってハードウェアアクセラレータにプログラムされたパラメータに基づいて、アクセラレータが圧縮プロセスをアボートすることを可能にする早期アボート回路を有するハードウェア圧縮アクセラレータを説明する。言い換えると、アクセラレータは、ソースデータの一部のみを分析した後、出力としての圧縮データを生成しないと判定してよい。
図1は、圧縮アクセラレーションの早期アボートのための技術を用いたデータプロセッシングシステム10の例示的実施形態を示すブロック図である。特に、データプロセッシングシステム10は、協力して早期アボート機能を提供する様々なコンポーネントを有する早期アボート回路24を含む圧縮アクセラレータ22を含む。特に、早期アボート回路24は、圧縮されるデータの特性に基づいて、及び、様々な予め定められたパラメータに基づいて、圧縮アクセラレータ22に、圧縮オペレーションをアボートさせる。図1の実施形態において、早期アボート回路24は、プロセッサパッケージ12内の1又は複数のプロセッシングコア20と共に、集積回路内に存在する。しかしながら、他の実施形態において、圧縮アクセラレータは、1又は複数のプロセッシングコアを有するプロセッサパッケージ内で、別個の集積回路内に存在してよく、又は、圧縮アクセラレータは、別個のプロセッサパッケージ内に存在してよい。
データプロセッシングシステム10はまた、RAM14及びNVS16等の、プロセッサパッケージ12と通信する他のコンポーネントを含む。RAM14は、例えば1又は複数の動的RAM(DRAM)モジュールを用いて実施されてよく、NVSは、1又は複数のハードディスクドライブ又は任意の他の適した不揮発性データストレージデバイスを用いて実施されてよい。
NVS16はまた、RAM14に写され、プロセッシングコア20及び圧縮アクセラレータ22によって実行されるシステムソフトウェア46を含んでよい。システムソフトウェア46は、スワップインされたページを保持するためのワーク・プール50と、スワップアウトされたページを保持するための、より具体的にはかかるページから生成された圧縮データを保持するためのスワップ・プール52とを有するRAM14を構成する命令を含む、可変デスティネーションスワッピングを実施するためのロジック(例えば実行可能命令)を含む。可変デスティネーションスワッピングを実施するためのロジックはまた、スワップアウトされるページの圧縮を実行する圧縮アクセラレータ22を用いるためのロジックを含む。
例えば、NVS16からワーク・プール50にスワップインされるデータの新たなページ42のために、ワーク・プール50内に空間を作るために、RAM14内のデータの古いページ40がスワップアウトされるべきであると、システムソフトウェア46が判定した時、システムソフトウェア46は、圧縮アクセラレータ22を用いて、古いページ40からのデータを、圧縮データ44に圧縮してよい。そして次に、システムソフトウェア46は、圧縮データ44をスワップ・プール52内に保存してよい。図1において、古いページ40がワーク・プール50にスワップインされたというシナリオに焦点を当てるために、古いページ40は、NVS16において破線の輪郭で示されている。しかし、上記のように、システムソフトウェア46は、新たなページ42のために空間を作るために、古いページ40がスワップアウトされるべきであると判定したため、システムソフトウェア46は、圧縮アクセラレータ22を用いて、古いページ40に基づいて、圧縮データ44を生成し、システムソフトウェア46は、スワップ・プール52内に圧縮データ44を保存した。システムソフトウェア46は、次に、古いページ40によって占有されていたワーク・プール50内のスペースを用いて、新たなページ42をスワップインしてよい。
さらに、圧縮アクセラレータ22を用いるための、システムソフトウェア46内のロジックは、圧縮アクセラレータ22内の早期アボート回路24と協働して圧縮アクセラレーションの早期アボートを用いるためのロジックを含む。以下により詳細に説明するように、早期アボート回路24が、早期アボートを行うと判定した場合、圧縮アクセラレータ22は、圧縮データを戻さなくてよいが、代わりにリターンコード等の結果データをシステムソフトウェア46に戻してよい。例えば、リターンコードは、処理が完了しているか、完了している場合、早期アボートが行われたか、又は圧縮データが生成されたかを示してよい。特に、一実施形態において、システムソフトウェア46は、エンキューオペレーションを用いて、圧縮アクセラレータ22に圧縮要求を送り、そのエンキューオペレーションのペイロードは、完了レコード(CR:completion record)についてのフィールドを含む様々なフィールドを含むために64バイトを有する記述子を含み、圧縮アクセラレータ22は、リターンコードでCRを更新する。システムソフトウェア46は、そのCRにポーリングして、圧縮が完了したか、及び早期アボートが行われたかを判定してよい。例えば、ゼロのリターンコードは、圧縮が依然として進行中であることを示してよく、1のリターンコードは、圧縮がうまく完了したことを示してよく、任意の他のリターンコードは、早期アボートが行われたことを示してよい。
早期アボートの準備をするために、システムソフトウェア46は、様々な早期アボートパラメータ32を圧縮アクセラレータ22内の早期アボート回路24にロードしてよい。図1に示すように、それらのパラメータは、サンプルサイズパラメータと、早期アボート閾値パラメータとを含んでよい。以下により詳細に説明するように、早期アボート回路24はまた、早期アボートサイズ34のテーブルを含んでよい。システムソフトウェア46は、任意の適したアプローチを用いて、圧縮アクセラレータ22に早期アボートパラメータ32を供給してよい。示すように、早期アボート回路24は、早期アボートパラメータ32のテーブルに、様々なフィールドを用いたそれらのパラメータを格納してよい。しかしながら、様々な実施形態において、早期アボートサイズの「テーブル」は、任意の特定の種類のデータ構造である必要はない。例えば、早期アボートサイズは、テーブル、アレイ、リンクリスト、レコード、ディレクトリ等に格納されてよい。したがって、本開示の目的のために、早期アボートサイズを格納するのに用いられるストレージは、「早期アボートサイズストレージ」と称されてよい。
図2は、圧縮アクセラレータ22のための早期アボートパラメータ32の例示的実施形態を示すテーブルを提示する。
圧縮により少なくとも特定の量のサイズ/スペース削減が達成されることが期待されるかどうかを判定するためのチェックを、いつ圧縮アクセラレータ22が実行するか、サンプルサイズフィールドは、指定する。図2の実施形態において、例えば、システムソフトウェア46は、サンプルサイズフィールド内の値をロードして、512バイト、1024バイト、2048バイト、及び4096バイトから成るリストから1つのサイズを選択する。このように、入力された512、1024、2048、又は4096バイトが処理されたら直ちに、早期アボート回路24は、チェックする。また、以下により詳細に説明するように、指定されたサンプルサイズに達した場合、早期アボート回路24は、一度だけチェックしてよい。
早期アボート閾値フィールドは、圧縮を継続するのに必要とされる最小の圧縮比を指定する。したがって、早期アボート閾値は、圧縮を継続するのに必要とされるサイズ/スペース削減の量を指定する。概して、圧縮比は、ソースデータと比べて圧縮出力がどの程度より小さいかを示し、圧縮比は、入力サイズ/出力サイズとして算定されてよい。例えば、圧縮出力が、ソースデータのサイズの半分である場合、圧縮比は50%又は2:1であり、圧縮出力がソースデータのサイズの1/4である場合、圧縮比は25%又は4:1である。このように、パーセンテージとして表現された場合に、「より小さな」圧縮比は、より有効な圧縮を反映し、「より大きな」圧縮比は、より有効でない圧縮を反映する。
以下により詳細に説明するように、早期アボート回路24は、サンプルサイズに従って、ソースデータの一部を分析し、早期アボート回路24は、圧縮がアボートされなかった場合に、ソースデータのその一部に対して、圧縮アクセラレータ22によって達成されるであろう圧縮比の推定値を算定する。特に、圧縮アクセラレータ22は、様々な早期アボート値38を算定して、早期アボートを行うかを判定する。図1に示され、図3に関連して以下により詳細に説明するように、それらの値は、(a)ソースデータからいくつのバイトが、圧縮比を推定するのに用いられるのかを示す部分サイズと、(b)圧縮がアボートされなかった場合に、対応する圧縮データがどの程度大きくなるであろうか(すなわちいくつのバイトになるか)を示す推定圧縮サイズとを含んでよい。そして、早期アボート回路24は、その部分サイズとその推定圧縮サイズを用いて、推定圧縮比を算定してよい。さらに、早期アボート回路24は、圧縮アクセラレータ22による、ソースデータに対する実際の圧縮オペレーションと並行して、ソースデータのその分析を実行してよい。
推定圧縮比が、早期アボート閾値よりも大きい場合、圧縮アクセラレータ22は、早期アボートを行う。図2の実施形態において、例えば、システムソフトウェア46は、値を早期アボート閾値フィールドにロードして、1/8、2/8、3/8、4/8、5/8、6/8、及び7/8から成るリストから最小の圧縮比を選択する。このように、図3に関連して以下により詳細に説明するように、早期アボート閾値はそれぞれ、少なくとも12.5%、少なくとも25%、少なくとも37.5%、少なくとも50%、少なくとも62.5%、少なくとも75%、又は少なくとも87.5%の圧縮比を必要とするよう設定され得る。
さらに、早期アボート閾値はまた、早期アボート機能を有効にする又は無効にするためのフラグとして機能する。特に、システムソフトウェア46は、早期アボート閾値フィールドをゼロに設定して、早期アボートを無効にすることができる。
示すように、図2の実施形態において、早期アボートパラメータ32はまた、解析エンジンコントロール及びステート(EACS:analytics engine control and state)構造に関係する1又は複数のパラメータ等の、圧縮に影響する追加のパラメータについてのフィールドを含む。EACS構造はまた、単に「AECS」と称されてよい。
システムソフトウェア46からの圧縮アクセラレータ22への入力は、(a)圧縮されるデータ(すなわちソースデータ)と、(b)サンプルサイズ及び早期アボート閾値パラメータ等の、圧縮プロセスを制御するためのパラメータとを含む。システムソフトウェア46はまた、圧縮バージョンを選択するためのパラメータ、及び統計値に関係するパラメータ等の他の入力パラメータを供給してよい。
圧縮アクセラレータ22からシステムソフトウェア46への出力は、コントロール及びステート情報を含む。AECSは、ステートの役割とコントロールの役割とを含む、異なるタイミングで異なる役割を務めてよい。「コントロール」の役割において、システムソフトウェア46は、AECSを用いて、圧縮に用いられるハフマンテーブル等の、記述子に合わないパラメータを入力する。「ステート」の役割において、AECSは、(例えば、一度に64キロバイト(KB)ずつ処理することによって1メガバイト(MB)ファイルを圧縮するために)大きなジョブが一連の小さなジョブに分けられた場合に、情報をジョブからジョブに伝えるために用いられる。図2の実施形態において、システムソフトウェア46は、AECSの最大のサイズが64バイトであるか1568バイトであるかを示すためのコントロールサイズフラグを用いてよい。
図3は、圧縮アクセラレーションの早期アボートを提供するプロセスの例示的実施形態のフローチャートを提示する。そのプロセスは、図1からのデータプロセッシングシステム10の文脈において説明する。ブロック310に示すように、そのプロセスは、圧縮アクセラレータ22がシステムソフトウェア46から圧縮アクセラレーションの要求を受信することから開始してよい。例えば、例示的シナリオにおいて、システムソフトウェア46は、古いページ40をスワップアウトすることに関連して、古いページ40を圧縮するために、圧縮アクセラレータ22を用いている。
圧縮の要求に応じて、圧縮アクセラレータ22は、その要求からのパラメータをチェックして、要求が、早期アボートを有効又は無効にしたかを判定する。システムソフトウェア46が早期アボートを無効にすることを要求した場合、ブロック322に示すように、圧縮アクセラレータ22は、完全なソースデータ(例えば古いページ40)に基づいて、圧縮データ(例えば圧縮データ44)を生成してよい。ブロック324に示すように、圧縮アクセラレータ22は、次に、結果をシステムソフトウェア46に戻してよい。例えば、圧縮アクセラレータ22は、リターンコードを、その圧縮がアボートなしで完了したことを示すように設定してよい。次に、プロセスは終了してよい。
しかしながら、再度ブロック320を参照すると、早期アボートが有効にされた場合、圧縮アクセラレータ22は、早期アボート回路24を用いて、ソースデータ全体を圧縮するか、ソースデータ全体を圧縮することなく圧縮プロセスをアボートするかを判定してよい。ブロック328に示すように、早期アボート回路24は、その判定をするために、ソースデータに基づいて、出力トークンの生成を開始する。以下により詳細に説明するように、各出力トークンは、リテラル又は後方参照のいずれかである。ブロック330に示すように、各出力トークンが生成された後、早期アボート回路24は、サンプルサイズに達したかを判定する。処理された入力バイトの数が、サンプルサイズ以上でなく又は等しい場合、プロセスは、ブロック328に戻り、早期アボート回路24は、サンプルサイズに達するまで出力トークンを生成することを継続する。
上記のように、ソースデータから処理されるバイトの数及び早期アボート閾値は、早期アボートパラメータ32内の2つのフィールド、すなわちサンプルサイズフィールド及び早期アボート閾値フィールドによりコントロールされる。
サンプルサイズに達した時、プロセスは、ブロック332に進み、早期アボート回路24は、トークンが生成されたソースデータの一部についての圧縮サイズの推定値を算定する。特に、早期アボート回路24は、(a)出力トークンのうちリテラルの数を合計する又は総数を調べること、(b)後方参照の数に2を掛けること、及び(c)それら2つの結果を共に足すことによって、その推定値を算定する。言い換えると、圧縮サイズの推定値は、リテラルの数に参照の数の2倍を加えたものである。このように、早期アボート回路24は、各リテラルが1バイトを取るであろうと推定し、各参照が2バイトを取るであろうと推定し、ブロックヘッダを無視することで、出力のサイズを概算する。出力サイズを推定するためのこの技術又はヒューリスティックの1つの結果又は属性は、推定サイズが入力サイズより大きくは決してなり得ないことであり、マッチ(match)が見つからなかった場合に等しくなり得るのみであり、これは、デフレートにとって最小のマッチ長さは3であり、早期アボート回路24は、2つの圧縮バイトの推定値を用いるからである。
しかしながら、他の実施形態において、早期アボート回路は、異なる式を用いて、トークンが生成されたソースデータの一部についての圧縮サイズを推定してよい。例えば、オペレーションのモードが、固定された又は定型のハフマンコードを用いた圧縮であり、このハフマンコードがオペレーションの開始時において知られている場合には、早期アボート回路は、各リテラル又は参照に対するシンボルビット長を用いて、より精密なビットレベル推定値を用いることができる。また、早期アボート回路は、コンプレッサのステートにロードされる、適した定型のコードテーブルに基づいたビットレベル推定値を用いてよい。
ブロック334に示すように、早期アボート回路24は次に、指定されたサンプルサイズ及び指定された早期アボート閾値に基づいて、要求された閾値サイズを早期アボートサイズ34のテーブルでルックアップする。例えば、サンプルサイズが512バイトで、早期アボート閾値が4/8である場合、早期アボート回路24は、テーブル34から256バイトの閾値サイズを検索する。
ブロック340に示すように、早期アボート回路24は次に、(a)推定出力サイズ(すなわち、トークンが生成されたソースデータの一部についての推定サイズ)が閾値サイズよりも大きいかを判定する。例えば、512のサンプルサイズ及び4/8の早期アボート閾値での上記シナリオにおいて、早期アボート回路24は、推定出力サイズが256バイトよりも大きいかを判定する。推定出力サイズが、閾値サイズより大きい(又は別の実施形態においては、閾値サイズ以上である)場合、ブロック342に示すように、早期アボート回路24は、残りのソースデータを処理することなく圧縮オペレーションをアボートする。また、ブロック324に示すように、圧縮アクセラレータ22は、その判定をシステムソフトウェア46に報告する。例えば、圧縮アクセラレータ22は、リターンコードを、その圧縮がアボートされたことを示すように設定してよい。
しかしながら、推定出力サイズが閾値サイズ以下(又は別の実施形態においては、閾値サイズ未満)であった場合、ブロック344に示すように、早期アボート回路24は、ソースデータ全体の圧縮に進み、圧縮データ44を生成する。そして、ブロック324に示すように、圧縮アクセラレータ22は次に、その結果をシステムソフトウェア46に報告する。例えば、圧縮アクセラレータ22は、リターンコードを、その圧縮がアボートなしで完了したことを示すように設定してよい。次に、図3のプロセスは終了してよい。このように、出力ファイル(又は出力ファイルの一部)についての推定サイズが、許容できないほど小さな圧縮量を反映したものである場合、早期アボート回路24は、圧縮アクセラレータ22に圧縮要求をアボートさせる。
一実施形態において、早期アボート回路24は、閾値をデフレートコンプレッサに来る入力バイトと比較する、すなわち、任意選択的なゼロ圧縮の先行圧縮段階が生じた後に比較する。
また、他の実施形態において、早期アボート回路は、圧縮サイズの推定値を判定すること、及びその推定サイズが閾値サイズより大きいかを判定すること等のオペレーションを実行するための、他のタイプのスケジュールを用いてよい。例えば、早期アボート回路は、「N」バイト毎の後に(すなわちNバイトの後、2Nバイトの後、3Nバイトの後等に)チェックするように構成されてよく、又はN入力バイト閾値をクロスした後のトークン毎の後にチェックするように構成されてよい。したがって、早期アボート回路は、出力ファイルの異なる部分についての推定サイズが、許容できる圧縮量を反映したものであるかを判定するために、チェックを複数回してよく、それらチェックのいずれかにおいて、早期アボート回路が、許容できないほど小さな圧縮量を検出しない場合のみ、圧縮アクセラレータは、圧縮要求を完了してよい。
上で説明したプロセスを用いることで、圧縮アクセラレータ22は、ソースデータのサブセットのみを分析した後に、圧縮プロセスをアボートすることができる。これにより、圧縮アクセラレータ22は、早期アボートをサポートしないアクセラレータより、迅速に結果を生成することができる。言い換えると、早期アボートを行うことの利点は、圧縮の所望のレベルを達成することが圧縮に期待されない場合に、アクセラレータは、早期アボート回路を有さないアクセラレータと比べて早くソフトウェアに通知することができ、したがって、圧縮比が許容できるものであるかを判定する前に圧縮を完了するプロセスと比べて、プロセスのレイテンシが低減され得ることである。
図3のブロック328に関連して以上に説明したように、各出力トークンは、リテラル又は後方参照のいずれかである。一実施形態において、それらトークンは、デフレート圧縮プロセスのマッチング部分の出力である。その出力は、モノ(things)のストリームであると考えることができ、それらのモノは、概してトークンと称されてよい。トークンは、リテラル又は後方参照のいずれかを表すことができる。後方参照はまた、単に「参照」又は「マッチ」と称されてよい。マッチは、長さと距離から成る。解凍プロセスにおいて、リテラルトークンは、そのリテラルのバイトを出力ストリームに出力するつもりである。マッチトークンは、指定された距離からの指定されたバイトの数を、出力ストリームに写し戻すつもりである。
特に、リテラル及び長さは、符号化されて、1つのハフマンアルファベット(これは、「リテラル及び長さコード」又は「LLコード」と称されてよい)を形成してよく、距離は、符号化されて、もう1つハフマンアルファベット(これは、「距離コード」又は「Dコード」と称されてよい)を形成してよい。デコンプレッサはまず、LLシンボルを復号化する。リテラルの場合は、指定されたバイトを出力し、別のLLシンボルを探す。長さの場合は、Dシンボルとして次の入力ビットを復号化し、長さ/距離を処理し、次に、次のビットをLLシンボルとして処理する。したがって、デフレートブロックの本体は、混合のLL及びDコードから成る。本体は、(a)リテラルコード(すなわちリテラルを表すLLコード)又は(b)長さ/距離ペア(すなわち、長さを表すLLコード、続いてDコード)のいずれかの混合物であるとみなすことができる。各リテラルは、1つのトークンであるとして考えられてよく、各長さ/距離ペアは、1つのトークンであるとして考えられてよい。
このように、圧縮アクセラレータ22は、圧縮プロセスの早期アボートを提供し、これにより、ソースデータを処理する時にシステムソフトウェア46が経験するレイテンシを低減する。
さらに、ページスワッピングアプリケーションに加えて、他タイプのプロセス又はアプリケーションのパフォーマンスを増加させるために、早期アボートは、用いられてよい。例えば、ソースデータが暗号化される場合、暗号化されたデータを圧縮することは、スペースをそれほど削減しないかもしれない。かかるソースデータは、比較的圧縮できないものであると言ってよい。ソースデータのファイル又はブロックが比較的圧縮できないものであるかを迅速に判定するために、早期アボート回路を有する圧縮アクセラレータは、用いられてよい。したがって、ストレージアプリケーション及び通信アプリケーションは、レイテンシを減少させるため及びシステム効率を増加させるために早期アボートを用いることができる他のタイプのアプリケーションである。本明細書において説明される技術は、圧縮レイテンシに敏感に反応する任意のアプリケーションであって、そこでの些細でない数の圧縮ジョブが、圧縮できない又は最小限の圧縮性を有するデータに対するものであり得ることが予想される、アプリケーションによって用いられてよい。
対照的に、早期アボート能力を有しないデータプロセッシングシステムは、完全なソースデータを圧縮し、圧縮出力のサイズをチェックし、それが過度に大きい場合は、圧縮出力を破棄する。そのアプローチには、早期アボートを用いたアプローチと比べて、増加したレイテンシ及び減少したシステム効率が含まれる。
さらに、早期アボート回路は、どれほどの大きさのソースデータの部分が、圧縮比と、圧縮を継続するために望ましい最小圧縮比とを推定するために用いられるかなどのような、早期アボートプロセスのアスペクトを、システムソフトウェアが調整することを可能にする。このように、システムソフトウェアは、異なるタイプのデータセットに対するパラメータを調整することができる。
追加の実施形態
図4は、1又は複数の実施形態に係るシステム1200のブロック図である。システム1200は、コントローラハブ1220に連結された1又は複数のプロセッサ1210、1215を含んでよい。一実施形態において、コントローラハブ1220は、グラフィックスメモリコントローラハブ(GMCH)1290及び入出力ハブ(IOH)1250(別個のチップ又は同じチップ上にあってよい)を含み、GMCH1290は、連結されたメモリ内でのオペレーションを制御するためのメモリコントローラと、メモリ1240及びコプロセッサ1245と連結されたグラフィックスコントローラとを含み、IOH1250は、入力/出力(I/O)デバイス1260をGMCH1290に連結する。あるいは、メモリ及びグラフィックスコントローラの1つ又は両方がプロセッサ内に統合され、メモリ1240及びコプロセッサ1245は、プロセッサ1210に直接連結され、コントローラハブ1220は、IOH1250を有する単一のチップ内にある。
追加のプロセッサ1215の任意選択的な性質が、図4において破線で示される。各プロセッサ1210、1215は、1又は複数のプロセッシングコアを含んでよく、プロセッサ12の何らかのバージョンであってよい。
メモリ1240は、例えば、ダイナミックランダムアクセスメモリ(DRAM)、相変化メモリ(PCM)、又は両者の任意の組合せであってよい。
少なくとも1つの実施形態に対して、コントローラハブ1220は、フロントサイドバス(FSB)等のマルチドロップバス、クイックパスインタコネクト(QPI)等のポイントツーポイントインタフェース、又は同様の接続1295を介して、プロセッサ1210、1215と通信する。
一実施形態において、コプロセッサ1245は、例えば、高スループットMICプロセッサ、ネットワークプロセッサ又は通信プロセッサ、圧縮エンジン、グラフィックスプロセッシングユニット(GPU)、汎用GPU(GPGPU)、組み込みプロセッサ、又はBWアクセラレータ等の特別用途向けプロセッサである。一実施形態において、コントローラハブ1220は、統合グラフィックスアクセラレータを含んでよい。
物理リソース1210と1215との間には、アーキテクチャ特性、マイクロアーキテクチャ特性、熱特性、及び電力消費特性等を含む広範な価値基準の観点から様々な差異が存在し得る。
一実施形態において、プロセッサ1210は、一般的なタイプのデータ処理オペレーションを制御する命令を実行する。それらの命令内にコプロセッサ命令が組み込まれてよい。プロセッサ1210は、それらのコプロセッサ命令を、取り付けられたコプロセッサ1245により実行されるべきタイプのものとして認識する。したがって、プロセッサ1210は、コプロセッサバス又は他の相互接続上で、それらのコプロセッサ命令(又はコプロセッサ命令を表す制御信号)をコプロセッサ1245に対して発行する。コプロセッサ1245は、受信したコプロセッサ命令を受け入れて実行する。
図5は、1又は複数の実施形態に係る第1のより具体的な例示的なシステム1300のブロック図である。図5に示すように、マルチプロセッサシステム1300は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続1350を介して連結された第1のプロセッサ1370及び第2のプロセッサ1380を含む。プロセッサ1370及び1380のそれぞれは、何らかのバージョンのプロセッサ12であってよい。一実施形態において、プロセッサ1370及び1380はそれぞれプロセッサ1210及び1215であり、一方で、コプロセッサ1338はコプロセッサ1245である。別の実施形態において、プロセッサ1370及び1380はそれぞれ、プロセッサ1210及びコプロセッサ1245である。あるいは、プロセッサ1380は、BWアクセラレータであってよい。
プロセッサ1370及び1380は、それぞれ、統合メモリコントローラ(IMC)ユニット1372及び1382を含むものとして示される。プロセッサ1370はまた、そのバスコントローラユニットの一部として、ポイントツーポイント(P―P)インタフェース1376及び1378を含み、同様に、第2のプロセッサ1380は、P‐Pインタフェース1386及び1388を含む。プロセッサ1370、1380は、P‐Pインタフェース回路1378、1388を用いたポイントツーポイント(P‐P)インタフェース1350を介して、情報を交換してよい。図5に示すように、IMC1372及び1382は、プロセッサをそれぞれの対応するメモリ、すなわち、それぞれの対応するプロセッサにローカルに取り付けられたメインメモリの部分であってよいメモリ1332及びメモリ1334に連結する。
プロセッサ1370、1380は各々、ポイントツーポイントインタフェース回路1376、1394、1386、1398を用いた個々のP‐Pインタフェース1352、1354を介して、チップセット1390と情報を交換してよい。チップセット1390は、任意選択で、高性能インタフェース1339を介して、コプロセッサ1338と情報を交換してよい。一実施形態において、コプロセッサ1338は、例えば、高スループットMICプロセッサ、ネットワークプロセッサ又は通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、又は組み込みプロセッサ等の特別用途向けプロセッサである。
プロセッサのいずれか又は両方のローカルキャッシュ情報が、あるプロセッサが低電力モードにされた場合に共有キャッシュに格納され得るように、共有キャッシュ(不図示)が、いずれかのプロセッサ又は両方のプロセッサの外部に含まれてよく、さらに、P―P相互接続を介してプロセッサと接続されてよい。
チップセット1390は、インタフェース1396を介して第1のバス1316に連結されてよい。一実施形態において、第1のバス1316は、ペリフェラルコンポーネント相互接続(PCI)バス、又はPCIエクスプレスバス若しくは別の第3世代I/O相互接続バス等のバスであってよいが、本発明の範囲は、それに限定されない。
図5に示すように、様々なI/Oデバイス1314が、第1のバス1316を第2のバス1320に連結するバスブリッジ1318と共に、第1のバス1316に連結されてよい。一実施形態において、コプロセッサ、高スループットMICプロセッサ、GPGPU、アクセラレータ(例えば、グラフィックスアクセラレータ又はデジタル信号プロセッシング(DSP)ユニット等)、フィールドプログラマブルゲートアレイ(FPGA)又は任意の他のプロセッサ等の1又は複数の追加のプロセッサ1315が、第1のバス1316に連結される。一実施形態において、第2のバス1320は、ローピンカウント(LPC)バスであってよい。一実施形態において、例えば、キーボード及び/又はマウス1322、通信デバイス1327、及び命令/コード及びデータ1330を含んでよいディスクドライブ又は他の大容量ストレージデバイス等のストレージユニット1328を含む様々なデバイスが、第2のバス1320に連結されてよい。さらに、オーディオI/O1324が、第2のバス1320に連結されてよい。他のアーキテクチャが可能であることに留意されたい。例えば、図5のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス又は他のかかるアーキテクチャを実装してよい。
図6は、1又は複数の実施形態に係る第2のより具体的な例示的なシステム1400のブロック図である。図5の特定の態様は、図6の他の態様が不明瞭になることを回避すべく、図6から省略されている。
図6は、プロセッサ1370、1380が、統合メモリ及びI/Oコントロールロジック(「CL」)1372及び1382をそれぞれ含んでよいことを示す。したがって、CL1372、1382は、統合メモリコントローラユニットを含み、I/Oコントロールロジックを含む。図6は、CL1372、1382に連結されるものがメモリ1332、1334のみではなく、I/Oデバイス1414もまた制御ロジック1372、1382に連結されることも示す。レガシI/Oデバイス1415は、チップセット1390に連結される。
図7は、1又は複数の実施形態に係るシステムオンチップ(SoC)1500のブロック図である。破線のボックスは、より高度なSoCにおける任意選択的な特徴である。図7において、相互接続ユニット1502は、(要素であるキャッシュユニット1104A~Nを含む)1又は複数のコア1102A~[0]N及び共有キャッシュユニット1106のセットを含むアプリケーションプロセッサ1510と、システムエージェントユニット1110と、バスコントローラユニット1116と、統合メモリコントローラユニット1114と、統合グラフィックスロジック、イメージプロセッサ、オーディオプロセッサ、ビデオプロセッサ及び/又はBWアクセラレータを含み得るセット若しくは1又は複数のコプロセッサ1520と、静的ランダムアクセスメモリ(SRAM)ユニット1530と、ダイレクトメモリアクセス(DMA)ユニット1532と、1又は複数の外部ディスプレイに連結するためのディスプレイユニット1540とに連結される。一実施形態において、コプロセッサ1520は、例えば、ネットワークプロセッサ又は通信プロセッサ、圧縮エンジン、GPGPU、高スループットMICプロセッサ、組み込みプロセッサ、又はセキュリティプロセッサ等の特別用途向けプロセッサを含む。
実施形態はまた、以下の例を含む。
例A1は、集積回路と、集積回路内の圧縮アクセラレータとを含むプロセッサパッケージである。圧縮アクセラレータは、ソースデータを出力ファイルに圧縮する要求を処理する。プロセッサパッケージはまた、圧縮オペレーションの早期アボートを提供するための、圧縮アクセラレータ内の早期アボート回路を含む。特に、圧縮オペレーションの早期アボートを提供することは、(a)予め定められたサンプルサイズを用いて、出力ファイルの一部についての推定サイズを算定することであって、サンプルサイズは、出力ファイルの一部についての推定サイズを算定する前に、ソースデータのどのくらいの量が分析されるべきなのかを指定する、算定することと、(b)予め定められた早期アボート閾値に基づいて、出力ファイルの一部についての推定サイズが、許容できる圧縮量を反映しているかを判定することと、(c)出力ファイルの一部についての推定サイズが、許容できる圧縮量を反映していない場合、圧縮アクセラレータに要求をアボートさせることとを含む。
例A2は、例A1に記載のプロセッサパッケージであって、ソースデータを出力ファイルに圧縮する要求を処理することは、早期アボート回路が、許容できないほど小さな圧縮量を予測しない場合、要求を完了することを含む、プロセッサパッケージである。
例A3は、例A1に記載のプロセッサパッケージであって、圧縮アクセラレータは、ソフトウェアがサンプルサイズと早期アボート閾値とを指定することを可能にする、プロセッサパッケージである。例A3はまた、例A2の特徴を含んでよい。
例A4は、例A1に記載のプロセッサパッケージであって、予め定められたサンプルサイズを用いて、出力ファイルの一部についての推定サイズを算定するオペレーションは、(a)ソースデータの一部を分析して、ソースデータの一部を圧縮するために用いられ得るリテラルの数と後方参照の数とを判定することと、(b)判定されたリテラルの数と判定された後方参照の数とに基づいて、出力ファイルの一部についての推定サイズを判定することとを含む、プロセッサパッケージである。例A4はまた、例A2~A3のうちいずれか1又は複数の特徴を含んでよい。
例A5は、例A4に記載のプロセッサパッケージであって、判定されたリテラルの数と判定された後方参照の数とに基づいて、出力ファイルの一部についての推定サイズを判定するオペレーションは、出力ファイルの一部についての推定サイズを、リテラル毎に1バイト及び後方参照毎に2バイトとして算定することを含む、プロセッサパッケージである。
例A6は、例A4に記載のプロセッサパッケージであって、ソースデータの一部を分析して、ソースデータの一部を圧縮するために用いられ得るリテラルの数及び後方参照の数を判定するオペレーションは、デフレート圧縮アルゴリズムに従って、ソースデータの一部を圧縮するために用いられるであろうリテラルの数及び後方参照の数を判定することを含む、プロセッサパッケージである。例A6はまた、例A5の特徴を含んでよい。
例B1は、ソフトウェアを実行するためのプロセッシングコアと、プロセッシングコアと通信する圧縮アクセラレータであって、ソースデータを出力ファイルに圧縮する、ソフトウェアからの要求を処理する圧縮アクセラレータとを含む、データプロセッシングシステムである。特に、ソースデータを出力ファイルに圧縮する要求を処理することは、(a)予め定められたサンプルサイズを用いて、出力ファイルの一部についての推定サイズを算定することであって、サンプルサイズは、出力ファイルの一部についての推定サイズを算定する前に、ソースデータのどのくらいの量が分析されるべきなのかを指定する、算定することと、(b)予め定められた早期アボート閾値に基づいて、出力ファイルの一部についての推定サイズが、許容できる圧縮量を反映しているかを判定することと、(c)出力ファイルの一部についての推定サイズが、許容できる圧縮量を反映していない場合、圧縮アクセラレータに要求をアボートさせることとを含む。
例B2は、例B1に記載のデータプロセッシングシステムであって、圧縮アクセラレータは、早期アボート回路を有し、ソースデータを出力ファイルに圧縮する要求を処理することは、早期アボート回路が、許容できないほど小さな圧縮量を予測しない場合、要求を完了することをさらに含む、データプロセッシングシステムである。
例B3は、プロセッシングコアと圧縮アクセラレータとを有する集積回路を備える、例B1に記載のデータプロセッシングシステムである。例B3はまた、例B2の特徴を含んでよい。
例B4は、例B1に記載のデータプロセッシングシステムであって、圧縮アクセラレータは、ソフトウェアがサンプルサイズと早期アボート閾値とを指定することを可能にする、データプロセッシングシステムである。例B4はまた、例B2~B3のうちいずれか1又は複数の特徴を含んでよい。
例B5は、例B1に記載のデータプロセッシングシステムであって、予め定められたサンプルサイズを用いて、出力ファイルの一部についての推定サイズを算定するオペレーションは、(a)ソースデータの一部を分析して、ソースデータの一部を圧縮するために用いられ得るリテラルの数と後方参照の数とを判定することと、(b)判定されたリテラルの数と判定された後方参照の数とに基づいて、出力ファイルの一部についての推定サイズを判定することとを含む、データプロセッシングシステムである。例B5はまた、例B2~B4のうちいずれか1又は複数の特徴を含んでよい。
例B6は、例B5に記載のデータプロセッシングシステムであって、判定されたリテラルの数と判定された後方参照の数とに基づいて、出力ファイルの一部についての推定サイズを判定するオペレーションは、出力ファイルの一部についての推定サイズを、リテラル毎に1バイト及び後方参照毎に2バイトとして算定することを含む、データプロセッシングシステムである。
例B7は、例B5に記載のデータプロセッシングシステムであって、ソースデータの一部を分析して、ソースデータの一部を圧縮するために用いられ得るリテラルの数及び後方参照の数を判定するオペレーションは、デフレート圧縮アルゴリズムに従って、ソースデータの一部を圧縮するために用いられるであろうリテラルの数及び後方参照の数を判定することを含む、データプロセッシングシステムである。例B7はまた、例B6の特徴を含んでよい。
例B8は、例B1に記載のデータプロセッシングシステムであって、プロセッサと通信するNVSをさらに備え、NVSは、ソフトウェアを有し、ソフトウェアは、サンプルサイズ及び早期アボート閾値を指定する、データプロセッシングシステムである。例B8はまた、例B2~B7のうちいずれか1又は複数の特徴を含んでよい。
例B9は、プロセッシングコアと通信するRAMをさらに備える、例B8に記載のデータプロセッシングシステムである。また、ソフトウェアはさらに、(a)RAM内にワーク・プールとスワップ・プールとを設置し、(b)ソースデータを含む古いページをワーク・プールに格納し、(c)ワーク・プールから古いページをスワップアウトすることに関連して、(i)圧縮アクセラレータが要求をアボートしたかを判定し、(ii)圧縮アクセラレータが要求をアボートしなかったことを判定したことに応じて、出力ファイルをスワップ・プールに保存する。
例C1は、装置であって、機械アクセス可能媒体と、機械アクセス可能媒体内の命令であって、早期アボート回路を含む圧縮アクセラレータを有するデータプロセッシングシステムによって実行された場合に、圧縮アクセラレータを用いて、ソースデータを出力ファイルに圧縮する、ソフトウェアからの要求を、データプロセッシングシステムに処理させる命令とを備える装置である。特に、ソースデータを出力ファイルに圧縮する要求を処理することは、(a)予め定められたサンプルサイズを用いて、出力ファイルの一部についての推定サイズを算定することであって、サンプルサイズは、出力ファイルの一部についての推定サイズを算定する前に、ソースデータのどのくらいの量が分析されるべきなのかを指定する、算定することと、(b)予め定められた早期アボート閾値に基づいて、出力ファイルの一部についての推定サイズが、許容できる圧縮量を反映しているかを判定することと、(c)出力ファイルの一部についての推定サイズが、許容できる圧縮量を反映していない場合、要求をアボートさせることとを含む。
例C2は、例C1に記載の装置であって、命令は、サンプルサイズと、早期アボート閾値とを指定する、装置である。
例C3は、例C1に記載の装置であって、予め定められたサンプルサイズを用いて、出力ファイルの一部についての推定サイズを算定するオペレーションは、(a)ソースデータの一部を分析して、ソースデータの一部を圧縮するために用いられ得るリテラルの数と後方参照の数とを判定することと、(b)判定されたリテラルの数と判定された後方参照の数とに基づいて、出力ファイルの一部についての推定サイズを判定することとを含む、装置である。例C3はまた、例C2の特徴を含んでよい。
例C4は、例C3に記載の装置であって、判定されたリテラルの数と判定された後方参照の数とに基づいて、出力ファイルの一部についての推定サイズを判定するオペレーションは、出力ファイルの一部についての推定サイズを、リテラル毎に1バイト及び後方参照毎に2バイトとして算定することを含む、装置である。
例C5は、例C3に記載の装置であって、ソースデータの一部を分析して、ソースデータの一部を圧縮するために用いられ得るリテラルの数及び後方参照の数を判定するオペレーションは、デフレート圧縮アルゴリズムに従って、ソースデータの一部を圧縮するために用いられるであろうリテラルの数及び後方参照の数を判定することを含む、装置である。例C5はまた、例C4の特徴を含んでよい。
例C6は、例C1に記載の装置であって、ソースデータを出力ファイルに圧縮する要求を処理することは、早期アボート回路が、許容できないほど小さな圧縮量を予測しない場合、要求を完了することを含み、装置である。また、命令はさらに、実行された場合に、要求を完了した後、RAM内のワーク・プールから古いページをスワップアウトすることに関連して、データプロセッシングシステム内のRAM内のスワップ・プールに出力ファイルを保存する。
本文及び/又は説明図によって、本開示において説明された原理及び例示的実施形態に鑑みて、説明される実施形態が、本明細書において説明される原理から逸脱することなく、配置及び詳細において変更可能であることを、当業者は認識するであろう。さらに、本開示は、「一実施形態」及び「別の実施形態」等の表現用いて、実施形態の考え得る選択肢を説明する。しかしながら、それらの表現は、本開示の範囲を特定の実施形態の構成に制限することを意図しない。例えば、それらの表現は、同一の実施形態、又は異なる実施形態を参照してよく、それら異なる実施形態は、他の実施形態と組み合わさることが可能である。
さらに、本教示は、多くの異なる種類のデータプロセッシングシステムにおいて利益を得るのに用いられてよい。かかるデータプロセッシングシステムは、メインフレームコンピュータ、ミニコンピュータ、スーパーコンピュータ、高性能コンピューティングシステム、コンピューティングクラスタ、分散コンピューティングシステム、パーソナルコンピュータ(PC)、ワークステーション、サーバ、クライアントサーバシステム、ポータブルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、エンターテイメントデバイス、オーディオデバイス、ビデオデバイス、オーディオ/ビデオデバイス (例えば、テレビ及びセットトップボックス、ハンドヘルドデバイス、スマートフォン、電話、パーソナルデジタルアシスタント(PDA)、ウェアラブルデバイス、車両プロセッシングシステム、アクセラレータ、システムオンチップ(SoC)、及び情報を処理及び/又は送信するための他のデバイスを含んでよいが、それらに限定されない。したがって、明示的に別途指定されない限り、又は文脈により必要とされない限り、任意の特定のタイプのデータプロセッシングシステム(例えば、PC)への言及は、他のタイプのデータプロセッシングシステムも包含すると理解されるべきである。データプロセッシングシステムはまた、「装置」と称されてよい。データプロセッシングシステムのコンポーネントもまた、「装置」と称されてよい。
また、本開示によれば、デバイスは、プロセッサによってアクセスされた場合に、デバイスに特定のオペレーションを実行させる命令及び他のデータを含んでよい。本開示の目的のために、デバイスにオペレーションを実行させる命令又は他のデータは、概して「ソフトウェア」又は「制御ロジック」と称されてよい。ブートプロセスの間に用いられるソフトウェアは、「ファームウェア」と称されてよい。不揮発性メモリに格納されるソフトウェアもまた、「ファームウェア」と称されてよい。ソフトウェアは、任意の適した構造又は構造の組合せを用いて構成されてよい。したがって、プログラム及びモジュールのような用語は、概して、アプリケーションプログラム、サブプログラム、ルーチン、機能、手順、ドライバ、ライブラリ、データ構造、プロセス、マイクロコード、及び他のタイプのソフトウェアコンポーネントを含むがそれらに限定されないソフトウェア構成物の広範囲をカバーするために用いられてよい。また、ソフトウェアモジュールが、1より多いコンポーネントを含んでよく、それらコンポーネントが、協力してモジュールのオペレーションを完了してよいことが理解されるべきである。また、ソフトウェアがデバイスに実行させるオペレーションは、オペレーティングコンテキストを作成すること、特定のデータ構造をインスタンス化すること等を含んでよい。また、実施形態は、任意の適した動作環境及びプログラミング言語(又は動作環境及びプログラミング言語の組合せ)を用いて実施されるソフトウェアを含んでよい。例えば、プログラムコードは、コンパイラ型言語、インタプリタ型言語、プロシージャ言語、オブジェクト指向言語、アセンブリ言語、機械語、又は任意の他の適した言語で実施されてよい。
データを含み、別のコンポーネントにそのデータを取得することを可能にする媒体は、「機械アクセス可能媒体」又は「機械可読媒体」と称されてよい。したがって、実施形態は、本明細書において説明されるオペレーションの一部の又は全てを実行するための命令を含む機械可読媒体を含んでよい。かかる媒体は、概して「装置」と、特に「プログラム製品」と称されてよい。一実施形態において、複数のコンポーネントに対するソフトウェアは、1つの機械可読媒体に格納されてよい。他の実施形態において、2以上の機械可読媒体は、1又は複数のコンポーネントに対するソフトウェアを格納するために用いられてよい。例えば、1つのコンポーネントに対する命令は、1つの媒体に格納されてよく、もう1つのコンポーネントに対する命令は、もう1つの媒体に格納されてよい。又は、1つのコンポーネントに対する命令の一部は、1つの媒体に格納されてよく、そのコンポーネントに対する命令の残り(他のコンポーネントの命令も同様)は、1又は複数の他の媒体に格納されてよい。同様に、一実施形態において特定のデバイス上に存在するとして上で説明したソフトウェアは、他の実施形態において、1又は複数の他のデバイス上に存在してよい。例えば、分散環境において、あるソフトウェアは、ローカルで格納されてよく、あるソフトウェアはリモートで格納されてよい。一部の実施形態に対する機械可読媒体は、磁気ディスク、光ディスク、光磁気ディスク、動的RAM、スタティックRAM、不揮発性RAM(NVRAM)、リードオンリメモリ(ROM)、ソリッドステートドライブ(SSD)、相変化メモリ(PCM)等の有形の非一時的なストレージコンポーネントと、ならびに、プロセッサと、コントローラと、データストレージ設備を含む他のコンポーネントとを含んでよいが、これに限定されない。本開示の目的のために、「ROM」という用語は、概して消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュROM、フラッシュメモリ等の不揮発性メモリデバイスを指すために用いられてよい。
また、一実施形態において1つの特定のデバイス上で実行されるとして説明されるオペレーションは、他の実施形態において1又は複数の他のデバイスによって実行されてよい。また、1又は複数の例示的プロセスは、特定のシーケンスにおいて実行される特定のオペレーションに関連して説明されてきたが、それらのプロセスに多数の変更が適用されて、本発明の多数の代替的な実施形態を導出し得る。例えば、代替的な実施形態は、開示されたオペレーションの全てよりも少ないオペレーションを用いるプロセス、追加のオペレーションを用いるプロセス、及び本明細書において開示された個々のオペレーションが組み合わさった、細分化された、再整理された、又は別の方法で変更されたプロセスを含んでよい。
また、本明細書で示されたハードウェアコンポーネント及びソフトウェアコンポーネントは、それぞれが他から実質的に独立して設計、構築、又は更新され得るように、合理的に自己完結型である機能要素を表すことが理解されるべきである。代替的な実施形態において、コンポーネントは、本明細書で説明及び図示された機能を提供するためのハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組合せとして実施されてよい。例えば、いくつかの実施形態において、説明された機能を実施するための制御ロジックの一部又は全ては、特定用途向け集積回路(ASIC)又はプログラマブルゲートアレイ(PGA)を有するもの等のハードウェアロジック回路において実施されてよい。同様に、制御ロジックの一部又は全ては、集積回路チップ内のマイクロコードとして実施されてよい。また、「回路」及び「回路構成部分」等の用語は、本明細書において、交換可能に用いられてよい。それら用語及び「ロジック」のような用語は、アナログ回路、デジタル回路、プロセッサ回路、マイクロコントローラ回路、ハードウェアロジック回路、配線回路、プログラマブル回路、ステートマシン回路、任意の他のタイプのハードウェアコンポーネント、又はハードウェアコンポーネントの任意の適した組合せを指すために用いられてよい。
また、明確に別途指定されない限り、互いに連結され、互いと通信して、又は互いに応答するもの等として説明されるコンポーネントは、互いに連続的に通信するものである必要はなく、及び、互いに直接的に連結される必要はない。同様に、1つのコンポーネントが、別のコンポーネントからデータを受信する又は別のコンポーネントにデータを送信するものとして説明される場合、明確に別途指定されない限り、そのデータは、1又は複数の中間コンポーネントを通じて送信又は受信されてよい。さらに、データプロセッシングシステムの一部のコンポーネントは、バスと通信するためのインタフェース(例えば、コネクタ)を有するアダプタカードとして実施され得る。あるいは、デバイス又はコンポーネントは、プログラマブル又は非プログラマブルロジックデバイス若しくはアレイ、ASIC、組み込みコンピュータ、スマートカード等のようなコンポーネントを用いて、組み込みコントローラとして実施されてよい。本開示の目的のために、「バス」という用語は、ポイントツーポイント経路のみならず、2又はそれより多いデバイスにより共有されてよい経路を含み得る。同様に、「ライン」、「ピン」等の用語は、ワイヤ、ワイヤのセット、又は任意の他適した導体又は導体のセットを指すと理解されるべきである。例えば、バスは、1又は複数のシリアルリンクを含んでよく、シリアルリンクは、1又は複数のレーンを含んでよく、レーンは、1又は複数の差動信号ペアから構成されてよく、それら導体が搬送している電気の変化する特性は、「信号」と称されてよい。また、本開示の目的のために、「プロセッサ」という用語は、ソフトウェアを実行することが可能なハードウェアコンポーネントを意味する。例えば、プロセッサは、中央処理装置(CPU)又は任意の他の適したタイプの処理要素として実施されてよい。CPUは、1又は複数のプロセッシングコアを含んでよい。プロセッサパッケージはまた、「プロセッサ」と称されてよい。そして、デバイスは、1又は複数のプロセッサを含んでよい。
他実施形態は、データ内で実施されてよく、少なくとも1つの機械によって用いられた場合、少なくとも1つの機械に、本開示に記載の1又は複数のオペレーションを実行する少なくとも1つの集積回路を製造させる非一時的記憶媒体上に格納されてよい。また更なる実施形態は、情報であって、SoC又は他プロセッサの中へと製造された場合に、本開示に記載の1又は複数のオペレーションを実行するためのSoC又は他のプロセッサを構成するための情報を含むコンピュータ可読記憶媒体で実施されてよい。機械により読み取られた場合に本明細書において説明される技術を実行するためのロジックユニットを機械に製造させる、プロセッサ内の様々なロジックユニットを表す機械可読媒体に格納された代表的な命令により、少なくとも1つの実施形態の1又は複数の態様が実施されてよい。様々なロジックユニットを表す命令は、「IPコア」と称されてよく、これらは、有形の機械可読媒体上に格納されてよく、ロジックユニット又はプロセッサを作成する製造マシンにロードするために、様々な顧客又は製造施設に供給されてよい。少なくとも1つの実施形態の1又は複数の態様は、命令を含み、又は本明細書で説明される構造、回路、装置、プロセッサ及び/又はシステムの特徴を定義するハードウェア記述言語等の設計データを含む機械可読媒体を含んでよい。例えば、設計データは、ハードウェア記述言語(HDL)でフォーマットされてよい。
本明細書において説明される例示的実施形態から容易に導出され得る多種多様な有用な置換を鑑み、この詳細な説明は、例示を意図したものに過ぎず、対象とする内容の範囲を制限するものと解釈されるべきではない。
[他の考えられる項目]
(項目1)
プロセッサパッケージであって、
集積回路と、
前記集積回路内の圧縮アクセラレータであって、ソースデータを出力ファイルに圧縮する要求を処理するための圧縮アクセラレータと、
圧縮オペレーションの早期アボートを提供するための、前記圧縮アクセラレータ内の早期アボート回路であって、圧縮オペレーションの早期アボートを提供することは、
予め定められたサンプルサイズを用いて、前記出力ファイルの一部についての推定サイズを算定することであって、前記サンプルサイズは、前記出力ファイルの前記一部についての前記推定サイズを算定する前に、前記ソースデータのどのくらいの量が分析されるべきなのかを指定する、算定することと、
予め定められた早期アボート閾値に基づいて、前記出力ファイルの前記一部についての前記推定サイズが、許容できる圧縮量を反映しているかを判定することと、
前記出力ファイルの前記一部についての前記推定サイズが、前記許容できる圧縮量を反映していない場合、前記圧縮アクセラレータに前記要求をアボートさせることと
を含む、早期アボート回路と
を備えるプロセッサパッケージ。
(項目2)
ソースデータを出力ファイルに圧縮する要求を処理することは、前記早期アボート回路が、許容できないほど小さな圧縮量を予測しない場合、前記要求を完了することを含む、項目1に記載のプロセッサパッケージ。
(項目3)
前記圧縮アクセラレータは、ソフトウェアが前記サンプルサイズと前記早期アボート閾値とを指定することを可能にする、項目1に記載のプロセッサパッケージ。
(項目4)
前記予め定められたサンプルサイズを用いて、前記出力ファイルの前記一部についての前記推定サイズを算定する前記オペレーションは、
前記ソースデータの一部を分析して、前記ソースデータの前記一部を圧縮するために用いられ得るリテラルの数と後方参照の数とを判定することと、
前記判定されたリテラルの数と前記判定された後方参照の数とに基づいて、前記出力ファイルの前記一部についての前記推定サイズを判定することと
を含む、項目1に記載のプロセッサパッケージ。
(項目5)
前記判定されたリテラルの数と前記判定された後方参照の数とに基づいて、前記出力ファイルの前記一部についての前記推定サイズを判定する前記オペレーションは、前記出力ファイルの前記一部についての前記推定サイズを、リテラル毎に1バイト及び後方参照毎に2バイトとして算定することを含む、項目4に記載のプロセッサパッケージ。
(項目6)
前記ソースデータの前記一部を分析して、前記ソースデータの前記一部を圧縮するために用いられ得る前記リテラルの数及び前記後方参照の数を判定する前記オペレーションは、デフレート圧縮アルゴリズムに従って、前記ソースデータの前記一部を圧縮するために用いられるであろう前記リテラルの数及び前記後方参照の数を判定することを含む、項目4に記載のプロセッサパッケージ。
(項目7)
データプロセッシングシステムであって、
ソフトウェアを実行するためのプロセッシングコアと、
前記プロセッシングコアと通信する圧縮アクセラレータであって、前記圧縮アクセラレータは、ソースデータを出力ファイルに圧縮する、前記ソフトウェアからの要求を処理し、ソースデータを出力ファイルに圧縮する要求を処理することは、
予め定められたサンプルサイズを用いて、前記出力ファイルの一部についての推定サイズを算定することであって、前記サンプルサイズは、前記出力ファイルの前記一部についての前記推定サイズを算定する前に、前記ソースデータのどのくらいの量が分析されるべきなのかを指定する、算定することと、
予め定められた早期アボート閾値に基づいて、前記出力ファイルの前記一部についての前記推定サイズが、許容できる圧縮量を反映しているかを判定することと、
前記出力ファイルの前記一部についての前記推定サイズが、前記許容できる圧縮量を反映していない場合、前記要求をアボートすることと
を含む圧縮アクセラレータと
を備えるデータプロセッシングシステム。
(項目8)
前記圧縮アクセラレータは、早期アボート回路を有し、
ソースデータを出力ファイルに圧縮する要求を処理することは、前記早期アボート回路が、許容できないほど小さな圧縮量を予測しない場合、前記要求を完了することをさらに含む、
項目7に記載のデータプロセッシングシステム。
(項目9)
前記プロセッシングコアと前記圧縮アクセラレータとを有する集積回路を備える、項目7に記載のデータプロセッシングシステム。
(項目10)
前記圧縮アクセラレータは、前記ソフトウェアが前記サンプルサイズと前記早期アボート閾値とを指定することを可能にする、項目7に記載のデータプロセッシングシステム。
(項目11)
前記予め定められたサンプルサイズを用いて、前記出力ファイルの前記一部についての前記推定サイズを算定する前記オペレーションは、
前記ソースデータの一部を分析して、前記ソースデータの前記一部を圧縮するために用いられ得るリテラルの数と後方参照の数とを判定することと、
前記判定されたリテラルの数と前記判定された後方参照の数とに基づいて、前記出力ファイルの前記一部についての前記推定サイズを判定することと
を含む、項目7に記載のデータプロセッシングシステム。
(項目12)
前記判定されたリテラルの数と前記判定された後方参照の数とに基づいて、前記出力ファイルの前記一部についての前記推定サイズを判定する前記オペレーションは、前記出力ファイルの前記一部についての前記推定サイズを、リテラル毎に1バイト及び後方参照毎に2バイトとして算定することを含む、項目11に記載のデータプロセッシングシステム。
(項目13)
前記ソースデータの前記一部を分析して、前記ソースデータの前記一部を圧縮するために用いられ得る前記リテラルの数及び前記後方参照の数を判定する前記オペレーションは、デフレート圧縮アルゴリズムに従って、前記ソースデータの前記一部を圧縮するために用いられるであろう前記リテラルの数及び前記後方参照の数を判定することを含む、項目11に記載のデータプロセッシングシステム。
(項目14)
前記プロセッサと通信する不揮発性ストレージ(NVS)をさらに備え、前記NVSは、前記ソフトウェアを有し、前記ソフトウェアは、前記サンプルサイズ及び前記早期アボート閾値を指定する、項目7に記載のデータプロセッシングシステム。
(項目15)
前記プロセッシングコアと通信するランダムアクセスメモリ(RAM)をさらに備え、
前記ソフトウェアはさらに、
前記RAM内にワーク・プールとスワップ・プールとを設置し、
前記ソースデータを含む古いページを前記ワーク・プールに格納し、
前記ワーク・プールから前記古いページをスワップアウトすることに関連して、
前記圧縮アクセラレータが前記要求をアボートしたかを判定し、
前記圧縮アクセラレータが前記要求をアボートしなかったことを判定したことに応じて、前記出力ファイルを前記スワップ・プールに保存する、
項目14に記載のデータプロセッシングシステム。
(項目16)
装置であって、
機械アクセス可能媒体と、
前記機械アクセス可能媒体内の命令であって、早期アボート回路を含む圧縮アクセラレータを有するデータプロセッシングシステムによって実行された場合に、前記圧縮アクセラレータを用いて、ソースデータを出力ファイルに圧縮する、前記ソフトウェアからの要求を、前記データプロセッシングシステムに処理させる命令であって、ソースデータを出力ファイルに圧縮する要求を処理することは、
予め定められたサンプルサイズを用いて、前記出力ファイルの一部についての推定サイズを算定することであって、前記サンプルサイズは、前記出力ファイルの前記一部についての前記推定サイズを算定する前に、前記ソースデータのどのくらいの量が分析されるべきなのかを指定する、算定することと、
予め定められた早期アボート閾値に基づいて、前記出力ファイルの前記一部についての前記推定サイズが、許容できる圧縮量を反映しているかを判定することと、
前記出力ファイルの前記一部についての前記推定サイズが、前記許容できる圧縮量を反映していない場合、前記要求をアボートすることと
を含む、命令と
を備える装置。
(項目17)
前記命令は、前記サンプルサイズと、前記早期アボート閾値とを指定する、項目16に記載の装置。
(項目18)
前記予め定められたサンプルサイズを用いて、前記出力ファイルの前記一部についての前記推定サイズを算定する前記オペレーションは、
前記ソースデータの一部を分析して、前記ソースデータの前記一部を圧縮するために用いられ得るリテラルの数と後方参照の数とを判定することと、
前記判定されたリテラルの数と前記判定された後方参照の数とに基づいて、前記出力ファイルの前記一部についての前記推定サイズを判定することと
を含む、項目16に記載の装置。
(項目19)
前記判定されたリテラルの数と前記判定された後方参照の数とに基づいて、前記出力ファイルの前記一部についての前記推定サイズを判定する前記オペレーションは、前記出力ファイルの前記一部についての前記推定サイズを、リテラル毎に1バイト及び後方参照毎に2バイトとして算定することを含む、項目18に記載の装置。
(項目20)
前記ソースデータの前記一部を分析して、前記ソースデータの前記一部を圧縮するために用いられ得る前記リテラルの数及び前記後方参照の数を判定する前記オペレーションは、デフレート圧縮アルゴリズムに従って、前記ソースデータの前記一部を圧縮するために用いられるであろう前記リテラルの数及び前記後方参照の数を判定することを含む、項目18に記載の装置。
(項目21)
ソースデータを出力ファイルに圧縮する要求を処理することは、前記早期アボート回路が、許容できないほど小さな圧縮量を予測しない場合、前記要求を完了することを含み、
前記命令はさらに、実行された場合に、
前記要求を完了した後、前記ランダムアクセスメモリ(RAM)内のワーク・プールから前記古いページをスワップアウトすることに関連して、前記データプロセッシングシステム内の前記RAM内のスワップ・プールに前記出力ファイルを保存する、
項目16に記載の装置。

Claims (25)

  1. プロセッサパッケージであって、
    集積回路と、
    前記集積回路内の圧縮アクセラレータであって、ソースデータを出力ファイルに圧縮する要求を処理するための圧縮アクセラレータと、
    圧縮オペレーションの早期アボートを提供するための、前記圧縮アクセラレータ内の早期アボート回路であって、圧縮オペレーションの早期アボートを提供することは、
    予め定められたサンプルサイズを用いて、前記出力ファイルの一部についての推定サイズを算定することであって、前記サンプルサイズは、前記出力ファイルの前記一部についての前記推定サイズを算定する前に、前記ソースデータのどのくらいの量が分析されるべきなのかを指定する、算定することと、
    予め定められた早期アボート閾値に基づいて、前記出力ファイルの前記一部についての前記推定サイズが、許容できる圧縮量を反映しているかを判定することと、
    前記出力ファイルの前記一部についての前記推定サイズが、前記許容できる圧縮量を反映していない場合、前記圧縮アクセラレータに前記要求をアボートさせることと
    を含む、早期アボート回路と
    を備えるプロセッサパッケージ。
  2. ソースデータを出力ファイルに圧縮する要求を処理することは、前記早期アボート回路が、許容できないほど小さな圧縮量を予測しない場合、前記要求を完了することを含む、請求項1に記載のプロセッサパッケージ。
  3. 前記圧縮アクセラレータは、ソフトウェアが前記サンプルサイズと前記早期アボート閾値とを指定することを可能にする、請求項1又は2に記載のプロセッサパッケージ。
  4. 前記予め定められたサンプルサイズを用いて、前記出力ファイルの前記一部についての前記推定サイズを算定するオペレーションは、
    前記ソースデータの一部を分析して、前記ソースデータの前記一部を圧縮するために用いられ得るリテラルの数と後方参照の数とを判定することと、
    前記判定されたリテラルの数と前記判定された後方参照の数とに基づいて、前記出力ファイルの前記一部についての前記推定サイズを判定することと
    を含む、請求項1から3のいずれか一項に記載のプロセッサパッケージ。
  5. 前記判定されたリテラルの数と前記判定された後方参照の数とに基づいて、前記出力ファイルの前記一部についての前記推定サイズを判定するオペレーションは、前記出力ファイルの前記一部についての前記推定サイズを、リテラル毎に1バイト及び後方参照毎に2バイトとして算定することを含む、請求項4に記載のプロセッサパッケージ。
  6. 前記ソースデータの前記一部を分析して、前記ソースデータの前記一部を圧縮するために用いられ得る前記リテラルの数及び前記後方参照の数を判定するオペレーションは、デフレート圧縮アルゴリズムに従って、前記ソースデータの前記一部を圧縮するために用いられるであろう前記リテラルの数及び前記後方参照の数を判定することを含む、請求項4又は5に記載のプロセッサパッケージ。
  7. データプロセッシングシステムであって、
    ソフトウェアを実行するためのプロセッシングコアと、
    前記プロセッシングコアと通信する圧縮アクセラレータであって、前記圧縮アクセラレータは、ソースデータを出力ファイルに圧縮する、前記ソフトウェアからの要求を処理し、ソースデータを出力ファイルに圧縮する要求を処理することは、
    予め定められたサンプルサイズを用いて、前記出力ファイルの一部についての推定サイズを算定することであって、前記サンプルサイズは、前記出力ファイルの前記一部についての前記推定サイズを算定する前に、前記ソースデータのどのくらいの量が分析されるべきなのかを指定する、算定することと、
    予め定められた早期アボート閾値に基づいて、前記出力ファイルの前記一部についての前記推定サイズが、許容できる圧縮量を反映しているかを判定することと、
    前記出力ファイルの前記一部についての前記推定サイズが、前記許容できる圧縮量を反映していない場合、前記要求をアボートすることと
    を含む圧縮アクセラレータと
    を備えるデータプロセッシングシステム。
  8. 前記圧縮アクセラレータは、早期アボート回路を有し、
    ソースデータを出力ファイルに圧縮する要求を処理することは、前記早期アボート回路が、許容できないほど小さな圧縮量を予測しない場合、前記要求を完了することをさらに含む、
    請求項7に記載のデータプロセッシングシステム。
  9. 前記プロセッシングコアと前記圧縮アクセラレータとを有する集積回路を備える、請求項7又は8に記載のデータプロセッシングシステム。
  10. 前記圧縮アクセラレータは、前記ソフトウェアが前記サンプルサイズと前記早期アボート閾値とを指定することを可能にする、請求項7から9のいずれか一項に記載のデータプロセッシングシステム。
  11. 前記予め定められたサンプルサイズを用いて、前記出力ファイルの前記一部についての前記推定サイズを算定するオペレーションは、
    前記ソースデータの一部を分析して、前記ソースデータの前記一部を圧縮するために用いられ得るリテラルの数と後方参照の数とを判定することと、
    前記判定されたリテラルの数と前記判定された後方参照の数とに基づいて、前記出力ファイルの前記一部についての前記推定サイズを判定することと
    を含む、請求項7から10のいずれか一項に記載のデータプロセッシングシステム。
  12. 前記判定されたリテラルの数と前記判定された後方参照の数とに基づいて、前記出力ファイルの前記一部についての前記推定サイズを判定する前記オペレーションは、前記出力ファイルの前記一部についての前記推定サイズを、リテラル毎に1バイト及び後方参照毎に2バイトとして算定することを含む、請求項11に記載のデータプロセッシングシステム。
  13. 前記ソースデータの前記一部を分析して、前記ソースデータの前記一部を圧縮するために用いられ得る前記リテラルの数及び前記後方参照の数を判定するオペレーションは、デフレート圧縮アルゴリズムに従って、前記ソースデータの前記一部を圧縮するために用いられるであろう前記リテラルの数及び前記後方参照の数を判定することを含む、請求項11又は12に記載のデータプロセッシングシステム。
  14. プロセッサと通信する不揮発性ストレージ(NVS)をさらに備え、前記NVSは、ソフトウェアを有し、前記ソフトウェアは、前記サンプルサイズ及び前記早期アボート閾値を指定する、請求項7から13のいずれか一項に記載のデータプロセッシングシステム。
  15. 前記プロセッシングコアと通信するランダムアクセスメモリ(RAM)をさらに備え、
    前記ソフトウェアはさらに、
    前記RAM内にワーク・プールとスワップ・プールとを設置し、
    前記ソースデータを含む古いページを前記ワーク・プールに格納し、
    前記ワーク・プールから前記古いページをスワップアウトすることに関連して、
    前記圧縮アクセラレータが前記要求をアボートしたかを判定し、
    前記圧縮アクセラレータが前記要求をアボートしなかったことを判定したことに応じて、前記出力ファイルを前記スワップ・プールに保存する、
    請求項14に記載のデータプロセッシングシステム。
  16. 装置であって、
    機械アクセス可能媒体と、
    前記機械アクセス可能媒体内の命令であって、早期アボート回路を含む圧縮アクセラレータを有するデータプロセッシングシステムによって実行された場合に、前記データプロセッシングシステムに、前記圧縮アクセラレータを用いて、ソースデータを出力ファイルに圧縮する、ソフトウェアからの要求を処理させる命令であって、ソースデータを出力ファイルに圧縮する要求を処理することは、
    予め定められたサンプルサイズを用いて、前記出力ファイルの一部についての推定サイズを算定することであって、前記サンプルサイズは、前記出力ファイルの前記一部についての前記推定サイズを算定する前に、前記ソースデータのどのくらいの量が分析されるべきなのかを指定する、算定することと、
    予め定められた早期アボート閾値に基づいて、前記出力ファイルの前記一部についての前記推定サイズが、許容できる圧縮量を反映しているかを判定することと、
    前記出力ファイルの前記一部についての前記推定サイズが、前記許容できる圧縮量を反映していない場合、前記要求をアボートすることと
    を含む、命令と
    を備える装置。
  17. 前記命令は、前記サンプルサイズと、前記早期アボート閾値とを指定する、請求項16に記載の装置。
  18. 前記予め定められたサンプルサイズを用いて、前記出力ファイルの前記一部についての前記推定サイズを算定するオペレーションは、
    前記ソースデータの一部を分析して、前記ソースデータの前記一部を圧縮するために用いられ得るリテラルの数と後方参照の数とを判定することと、
    前記判定されたリテラルの数と前記判定された後方参照の数とに基づいて、前記出力ファイルの前記一部についての前記推定サイズを判定することと
    を含む、請求項16又は17に記載の装置。
  19. 前記判定されたリテラルの数と前記判定された後方参照の数とに基づいて、前記出力ファイルの前記一部についての前記推定サイズを判定するオペレーションは、前記出力ファイルの前記一部についての前記推定サイズを、リテラル毎に1バイト及び後方参照毎に2バイトとして算定することを含む、請求項18に記載の装置。
  20. 前記ソースデータの前記一部を分析して、前記ソースデータの前記一部を圧縮するために用いられ得る前記リテラルの数及び前記後方参照の数を判定するオペレーションは、デフレート圧縮アルゴリズムに従って、前記ソースデータの前記一部を圧縮するために用いられるであろう前記リテラルの数及び前記後方参照の数を判定することを含む、請求項18又は19に記載の装置。
  21. ソースデータを出力ファイルに圧縮する要求を処理することは、前記早期アボート回路が、許容できないほど小さな圧縮量を予測しない場合、前記要求を完了することを含み、
    前記命令はさらに、実行された場合に、
    前記要求を完了した後、ランダムアクセスメモリ(RAM)内のワーク・プールから古いページをスワップアウトすることに関連して、前記データプロセッシングシステム内の前記RAM内のスワップ・プールに前記出力ファイルを保存する、
    請求項16から20のいずれか一項に記載の装置。
  22. 圧縮アクセラレーションの早期アボートを容易にする方法であって、
    早期アボート回路を含む圧縮アクセラレータを有するデータプロセッシングシステムにおいて、前記圧縮アクセラレータを用いて、ソースデータを出力ファイルに圧縮する、ソフトウェアからの要求を処理する段階
    を備え、
    前記圧縮アクセラレータを用いて、ソースデータを出力ファイルに圧縮する要求を処理する前記段階は、
    予め定められたサンプルサイズを用いて、前記出力ファイルの一部についての推定サイズを算定する段階であって、前記サンプルサイズは、前記出力ファイルの前記一部についての前記推定サイズを算定する前に、前記ソースデータのどのくらいの量が分析されるべきなのかを指定する、段階と、
    予め定められた早期アボート閾値に基づいて、前記出力ファイルの前記一部についての前記推定サイズが、許容できる圧縮量を反映しているかを判定する段階と、
    前記出力ファイルの前記一部についての前記推定サイズが、前記許容できる圧縮量を反映していない場合、前記要求をアボートする段階と
    を有する、方法。
  23. 予め定められたサンプルサイズを用いて、前記出力ファイルの一部についての推定サイズを算定する前記段階は、
    前記ソースデータの一部を分析して、前記ソースデータの前記一部を圧縮するために用いられ得るリテラルの数と後方参照の数とを判定する段階と、
    前記判定されたリテラルの数と前記判定された後方参照の数とに基づいて、前記出力ファイルの前記一部についての前記推定サイズを判定する段階と
    を有する、請求項22に記載の方法。
  24. 前記判定されたリテラルの数と前記判定された後方参照の数とに基づいて、前記出力ファイルの前記一部についての前記推定サイズを判定する前記段階は、前記出力ファイルの前記一部についての前記推定サイズを、リテラル毎に1バイト及び後方参照毎に2バイトとして算定する段階を含む、請求項23に記載の方法。
  25. 前記ソースデータの一部を分析して、前記ソースデータの前記一部を圧縮するために用いられ得るリテラルの数と後方参照の数とを判定する前記段階は、デフレート圧縮アルゴリズムに従って、前記ソースデータの前記一部を圧縮するために用いられるであろう前記リテラルの数及び前記後方参照の数を判定することを含む、請求項23又は24に記載の方法。
JP2022030743A 2021-06-24 2022-03-01 圧縮アクセラレーションの早期アボートのための技術 Pending JP2023004848A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/304,656 2021-06-24
US17/304,656 US20220414014A1 (en) 2021-06-24 2021-06-24 Technology for early abort of compression acceleration

Publications (1)

Publication Number Publication Date
JP2023004848A true JP2023004848A (ja) 2023-01-17

Family

ID=80623869

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022030743A Pending JP2023004848A (ja) 2021-06-24 2022-03-01 圧縮アクセラレーションの早期アボートのための技術

Country Status (7)

Country Link
US (1) US20220414014A1 (ja)
EP (2) EP4109278B1 (ja)
JP (1) JP2023004848A (ja)
KR (1) KR20230001017A (ja)
CN (1) CN115525212A (ja)
TW (1) TW202324109A (ja)
WO (1) WO2022271224A1 (ja)

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7024512B1 (en) * 1998-02-10 2006-04-04 International Business Machines Corporation Compression store free-space management
US6961473B1 (en) * 2000-10-23 2005-11-01 International Business Machines Corporation Faster transforms using early aborts and precision refinements
WO2012053015A2 (en) * 2010-10-22 2012-04-26 Jana, Tejaswini, Ramesh Compression and decompression of data at high speed in solid state storage
US9158686B2 (en) * 2012-03-30 2015-10-13 Altera Corporation Processing system and method including data compression API
US9531403B2 (en) * 2013-09-25 2016-12-27 Nec Corporation Adaptive compression supporting output size thresholds
JP2015115652A (ja) * 2013-12-09 2015-06-22 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム
US9600317B2 (en) * 2014-04-16 2017-03-21 Vmware, Inc. Page compressibility checker
US9753666B2 (en) * 2015-03-27 2017-09-05 Intel Corporation Efficient data compression for solid-state memory
US20170060934A1 (en) * 2015-09-02 2017-03-02 Pure Storage, Inc. Modifying a compressed block of data
US10942844B2 (en) * 2016-06-10 2021-03-09 Apple Inc. Reserved memory in memory management system
US10002081B2 (en) * 2016-07-05 2018-06-19 Intel Corporation Apparatus for hardware implementation of heterogeneous decompression processing
US10579591B1 (en) * 2016-12-20 2020-03-03 Amazon Technologies, Inc. Incremental block compression
US10366026B1 (en) * 2016-12-23 2019-07-30 Amazon Technologies, Inc. Random access to decompressed blocks
US10637879B2 (en) * 2017-10-06 2020-04-28 Carbonite, Inc. Systems and methods for detection and mitigation of malicious encryption
US11303296B2 (en) * 2018-06-26 2022-04-12 International Business Machines Corporation Hardware accelerated compression of instrumentation data
US11061612B2 (en) * 2019-05-20 2021-07-13 Micron Technology, Inc. Internal communication interface management
US11868495B2 (en) * 2020-11-13 2024-01-09 RackTop Systems, Inc. Cybersecurity active defense in a data storage system

Also Published As

Publication number Publication date
CN115525212A (zh) 2022-12-27
KR20230001017A (ko) 2023-01-03
WO2022271224A1 (en) 2022-12-29
TW202324109A (zh) 2023-06-16
EP4109278B1 (en) 2024-02-14
EP4355047A2 (en) 2024-04-17
EP4355047A3 (en) 2024-07-10
US20220414014A1 (en) 2022-12-29
EP4109278A1 (en) 2022-12-28

Similar Documents

Publication Publication Date Title
US10929154B2 (en) Overflow detection and correction in state machine engines
CN107077423B (zh) 用于请求分页的高效解压缩局部性系统
CN106648955B (zh) 压缩方法及相关装置
EP2005305A1 (en) Memory compression in information handling systems
JPH07121352A (ja) 演算処理装置
CN111240743A (zh) 人工智能集成电路
KR101789190B1 (ko) 스크래치 패드 메모리 구조를 이용한 캐시 및 이를 포함하는 프로세서
US9176977B2 (en) Compression/decompression accelerator protocol for software/hardware integration
US9231615B2 (en) Method to shorten hash chains in Lempel-Ziv compression of data with repetitive symbols
US11836133B2 (en) In-memory database (IMDB) acceleration through near data processing
EP4149008A1 (en) Verifying compressed stream fused with copy or transform operations
US8254701B1 (en) Data compression using a geometry shading unit
Choi et al. Design of FPGA-based LZ77 compressor with runtime configurable compression ratio and throughput
US8295621B1 (en) Data decompression using a geometry shading unit
US10848179B1 (en) Performance optimization and support compatibility of data compression with hardware accelerator
JP2023004848A (ja) 圧縮アクセラレーションの早期アボートのための技術
EP2897052B1 (en) Address compression and decompression method, compressor and decompressor
CN118100955B (zh) 一种用于对压缩数据进行并行解压的预处理的方法
US12074618B2 (en) Flexible compression header and code generation
US20210192353A1 (en) Processing unit, processor core, neural network training machine, and method
EP4202692A1 (en) Apparatus and method for constant detection during compress operations
US20240192870A1 (en) Data transform acceleration
Devpura Packet Compression in GPU Architectures
CN118193119A (zh) 使用存储在加速器存储器的元数据的数据变换加速
BR102022023763A2 (pt) Aparelho e método para detecção de constante durante operações de compactação