JP7481073B2 - メモリ境界の収容のためのオーバーフロー管理方法、システム、プログラム - Google Patents
メモリ境界の収容のためのオーバーフロー管理方法、システム、プログラム Download PDFInfo
- Publication number
- JP7481073B2 JP7481073B2 JP2021545748A JP2021545748A JP7481073B2 JP 7481073 B2 JP7481073 B2 JP 7481073B2 JP 2021545748 A JP2021545748 A JP 2021545748A JP 2021545748 A JP2021545748 A JP 2021545748A JP 7481073 B2 JP7481073 B2 JP 7481073B2
- Authority
- JP
- Japan
- Prior art keywords
- source
- buffer
- accelerator
- operand
- block
- 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.)
- Active
Links
- 238000007726 management method Methods 0.000 title 1
- 239000000872 buffer Substances 0.000 claims description 317
- 238000012545 processing Methods 0.000 claims description 125
- 238000003860 storage Methods 0.000 claims description 82
- 238000007906 compression Methods 0.000 claims description 77
- 230000006835 compression Effects 0.000 claims description 77
- 238000000034 method Methods 0.000 claims description 65
- 230000006837 decompression Effects 0.000 claims description 51
- 238000004590 computer program Methods 0.000 claims description 15
- 230000010365 information processing Effects 0.000 claims 2
- 230000006870 function Effects 0.000 description 173
- 238000006243 chemical reaction Methods 0.000 description 56
- 230000036961 partial effect Effects 0.000 description 31
- 238000010586 diagram Methods 0.000 description 25
- 238000004422 calculation algorithm Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 24
- 230000001419 dependent effect Effects 0.000 description 22
- 230000008859 change Effects 0.000 description 20
- 230000004075 alteration Effects 0.000 description 12
- 230000008901 benefit Effects 0.000 description 12
- 230000015572 biosynthetic process Effects 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 10
- 230000009466 transformation Effects 0.000 description 9
- 238000005192 partition Methods 0.000 description 8
- 230000000295 complement effect Effects 0.000 description 6
- 239000013256 coordination polymer Substances 0.000 description 6
- 238000013144 data compression Methods 0.000 description 6
- 239000013598 vector Substances 0.000 description 6
- 238000001514 detection method Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 108091081062 Repeated sequence (DNA) Proteins 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4031—Fixed length to variable length coding
- H03M7/4037—Prefix coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Executing Machine-Instructions (AREA)
- Table Devices Or Equipment (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Devices For Executing Special Programs (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
・圧縮データ・セットが一連のブロックを含む。3種類のブロックが存在する。1つの種類は、3ビットのヘッダーならびにその後に続く長さの情報および圧縮されていないデータを含み、ブロックの2つの種類は、3ビットのヘッダーおよびその後に続く圧縮データ要素を含む。
・圧縮データ要素は、動的ハフマン・テーブルの圧縮表現、圧縮データ・シンボル、およびブロック終結(EOB:end-of-block)シンボルを含んでよい。
・圧縮データ要素は、さまざまなビット長を有する。
・圧縮データ要素は、ストレージ内のバイト境界間で開始または終了し得る。
・圧縮データ要素は、例えば右端のビット位置から左端のビット位置まで、順番にバイトに読み込まれる。
・汎用レジスタ1、R1、R2、およびR3のビット位置40~63の内容は、パラメータ・ブロック、第1のオペランド、第2のオペランド、および円形履歴バッファのアドレスをそれぞれ構成し、ビット位置0~39の内容が無視される。
・更新された第1のオペランド・アドレスおよび第2のオペランド・アドレスのビット40~63は、汎用レジスタR1およびR2内の対応するビットをそれぞれ置き換える。更新されたアドレスのビット位置40からの繰り上げが無視され、汎用レジスタR1およびR2のビット位置32~39の内容が0に設定される。汎用レジスタR1およびR2のビット位置0~31の内容は変化しない。命令が部分的完了または正常完了の状態で終了し、更新されたオペランド・アドレスが命令の実行の開始時のオペランド・アドレスに等しい場合、対応する汎用レジスタのビット位置32~39が0に設定される。
・汎用レジスタR1+1およびR2+1のビット位置32~63の内容は、第1および第2のオペランド内のバイト数をそれぞれ指定する、例えば32ビットの符号なし2進整数を形成する。汎用レジスタR1+1およびR2+1のビット位置0~31の内容は無視される。
・更新された第1のオペランドおよび第2のオペランドの長さのビット32~63は、汎用レジスタR1+1およびR2+1内の対応するビットをそれぞれ置き換える。汎用レジスタR1+1およびR2+1のビット位置0~31の内容は変化しない。
・汎用レジスタ1、R1、R2、およびR3のビット位置33~63の内容は、パラメータ・ブロック、第1のオペランド、第2のオペランド、および円形履歴バッファのアドレスをそれぞれ構成し、ビット位置0~32の内容が無視される。
・更新された第1のオペランド・アドレスおよび第2のオペランド・アドレスのビット33~63は、汎用レジスタR1およびR2内の対応するビットをそれぞれ置き換える。更新されたアドレスのビット位置33からの繰り上げが無視され、汎用レジスタR1およびR2のビット位置32の内容が0に設定される。汎用レジスタR1およびR2のビット位置0~31の内容は変化しない。命令が部分的完了または正常完了の状態で終了し、更新されたオペランド・アドレスが命令の実行の開始時のオペランド・アドレスに等しい場合、対応する汎用レジスタのビット位置32が0に設定される。
・汎用レジスタR1+1およびR2+1のビット位置32~63の内容は、第1および第2のオペランド内のバイト数をそれぞれ指定する、32ビットの符号なし2進整数を形成する。汎用レジスタR1+1およびR2+1のビット位置0~31の内容は無視される。
・更新された第1のオペランドおよび第2のオペランドの長さのビット32~63は、汎用レジスタR1+1およびR2+1内の対応するビットをそれぞれ置き換える。汎用レジスタR1+1およびR2+1のビット位置0~31の内容は変化しない。
・汎用レジスタ1、R1、R2、およびR3のビット位置0~63の内容は、パラメータ・ブロック、第1のオペランド、第2のオペランド、および円形履歴バッファのアドレスをそれぞれ構成する。
・更新された第1のオペランド・アドレスおよび第2のオペランド・アドレスのビット0~63は、汎用レジスタR1およびR2内の対応するビットをそれぞれ置き換える。更新されたアドレスのビット位置0からの繰り上げは無視される。
・汎用レジスタR1+1およびR2+1のビット位置0~63の内容は、第1および第2のオペランド内のバイト数をそれぞれ指定する、64ビットの符号なし2進整数を形成する。
・更新された第1のオペランドおよび第2のオペランドの長さのビット0~63は、汎用レジスタR1+1およびR2+1内の対応するビットをそれぞれ置き換える。
DHTGC 意味
0 0に等しいリテラル・バイト、重複列の長さ、およびポインタ距離の数を、1に等しいとして扱う(汎用DHT(universal DHT)を生成する)。
1 0に等しい重複列の長さおよびポインタ距離の数を、1に等しいとして扱う。
OESC(16進数) 意味
00 追加情報が提供されない。
01 パラメータ・ブロック・バージョン番号362によって指定されたパラメータ・ブロックの形式が、モデルによってサポートされない。
02 DFLTCC-CMPR機能またはDFLTCC-XPND機能が指定され、履歴長フィールド385(図3L)が例えば32,768より大きく、新しいタスク・フィールド374(図3L)が0である。
11 BTYPE(ブロック・タイプ)が2進数11に等しい圧縮データ・ブロックが発生する。
12 BTYPEが2進数00に等しい圧縮データ・ブロック、およびLEN(長さ)の1の補数に等しくないNLENが発生する。
21 CDHTLフィールド366(図3L)が適用され、例えば、42より小さいか、または2283より大きい。
22 動作中に使用される圧縮されたDHTのHLIT部分要素が、例えば29より大きい(無効なDHT)。
23 動作中に使用される圧縮されたDHTのHDIST部分要素が、例えば29より大きい(無効なDHT)。
24 動作中に使用される圧縮されたDHTが、圧縮されたDHTに対して定義された可能な(例えば、19個の)コード長のビット長を指定するコードのシーケンス内にある、機能するハフマン・ツリーを指定するためにハフマン・アルゴリズムによって必要とされる長さより小さいコードを指定する(無効なDHT)。
26 動作中に使用される圧縮されたDHTが、リテラル・バイト、EOBシンボル、および重複列の長さで構成されている要素のセットの第1のコード長としてコード長16(前のコード長のコピー)を指定する(無効なDHT)。
27 動作中に使用される圧縮されたDHTが、リテラル・バイトのコード長を指定するコードのシーケンス内にあるコードを指定し、このコードが、圧縮されたDHT内で前に指定された、参照されるコード長のセットを表すために決定されたコードのいずれにも一致しない(無効なDHT)。
28 動作中に使用される圧縮されたDHTが、コード長0(CL0)をEOBシンボルに割り当てるコードを指定する。この場合、対応するDHTが、EOBシンボルを表すためのハフマン・コードを指定しない(無効なDHT)。
29 動作中に使用される圧縮されたDHTが、重複列の長さおよびポインタ距離のコード長を指定するコードのシーケンス内にあるコードを指定し、このコードが、圧縮されたDHT内で前に指定された、参照されるコード長のセットを表すために決定されたコードのいずれにも一致しない(無効なDHT)。
2A 動作中に使用される圧縮されたDHTが、HLITフィールド、HDISTフィールド、および例えば258の値の和によって指定された、DHT内のハフマン・コードの数より大きいコード長の数を指定する。これは、例えば、コード長16、17、および18の不適切な使用を伴っている可能性がある(無効なDHT)。
2B 動作中に使用される圧縮されたDHTが、リテラル・バイト、EOBシンボル、および重複列の長さのセットに対して、機能するハフマン・ツリーを指定するためにハフマン・アルゴリズムによって必要とされる長さより小さいコード長を指定する(無効なDHT)。
2D 動作中に使用される圧縮されたDHTが、重複列のポインタ距離のセットに対して、機能するハフマン・ツリーを指定するためにハフマン・アルゴリズムによって必要とされる長さより小さいコード長を指定する(無効なDHT)。
2F CDHTLフィールド366(図3L)が適用され、動作中に使用されるCDHTフィールド367(図3L)内の圧縮されたDHTの長さに等しくない。
31 動作中に使用される圧縮されたDHTが、動作中に処理されるリテラル・バイトまたは重複列の長さに対応するハフマン・コードを指定しないか(不完全な非汎用DHT)、またはDFLTCC-XPND機能が指定され、BTYPEが2進数01に等しい圧縮データ・ブロック内で発生する圧縮データ・シンボルが、重複列の長さに対して無効なコード(2進数11000110または11000111)を指定する。
32 動作中に使用される圧縮されたDHTが、動作中に処理される重複列のポインタ距離に対応するハフマン・コードを指定しないか(不完全な非汎用DHT)、またはDFLTCC-XPND機能が指定され、BTYPEが2進数01に等しい圧縮データ・ブロック内で発生する圧縮データ・シンボルが、重複列のポインタ距離に対して無効なコード(2進数11110または11111)を指定する。
40 重複列のポインタであり、シンボルを処理する時点で使用可能な履歴の長さより大きい距離を指定する圧縮データ・シンボルが発生する。
・リテラル・バイト、EOBシンボル、および重複列の長さを表すハフマン・コードの数を指定するためのHLITフィールド。
・重複列のポインタ距離を表すハフマン・コードの数を指定するためのHDISTフィールド。
・コード長を表すハフマン・コードの数を指定するためのHCLEN(ハフマン・コード長)フィールド。
・圧縮されたDHTに対して定義された例えば19個のコード長の各々に対してビット長を指定するコードのシーケンス。
・リテラル・バイト、EOBシンボル、および重複列の長さで構成されるセットの要素の各々に対してコード長を指定するコードのシーケンス。
・重複列のポインタ距離で構成されるセットの要素の各々に対してコード長を指定するコードのシーケンス。
・第2のオペランドの最初の32Kバイトのみが、DHTを生成するために使用される。
・第2のオペランドの最初の32Kバイトを超える位置に対して、アクセス例外が認識されない。
IFS(2進数) 意味
0000 BFINALが1に等しいブロックの最後の要素をデコードした後に、動作が終了した。
1000 BTYPEが2進数00に等しく、BFINALが0に等しいブロックの最後の要素以外の要素をデコードした後に、動作が終了した。
1001 BTYPEが2進数00に等しく、BFINALが1に等しいブロックの最後の要素以外の要素をデコードした後に、動作が終了した。
1010 BTYPEが2進数01に等しく、BFINALが0に等しいブロックの最後の要素以外の要素をデコードした後に、動作が終了した。
1011 BTYPEが2進数01に等しく、BFINALが1に等しいブロックの最後の要素以外の要素をデコードした後に、動作が終了した。
1100 BTYPEが2進数10に等しく、BFINALが0に等しいブロックの最後の要素以外の要素をデコードした後に、動作が終了した。
1101 BTYPEが2進数10に等しく、BFINALが1に等しいブロックの最後の要素以外の要素をデコードした後に、動作が終了した。
1110 動作がブロック境界で終了しており、BFINALが1に等しいブロックの最後の要素がデコードされておらず、その後のブロックのブロック・ヘッダーの最初の要素がまだ処理されていない。
・NTビットが1である場合、1の値が4バイトのベース入力に使用される。
・Adler-32チェック値生成において定義された和を65,521で割った余りが計算される。
・その結果が、ビッグエンディアン・バイト・オーダーでチェック値フィールドに格納される。すなわち、チェック値の最上位バイトがバイト48に位置し、チェック値の最下位バイトがバイト51に位置する。
・NTビットが1である場合、0の値が4バイトのベース入力に使用される。
・CRC-32チェック値の生成において除数として使用される多項式は、x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x1+x0であり、16進数104C11DB7として表される。この表現では、左端のビットが最上位ビットに対応する。
・チェック値を生成する最初の段階では、ベース入力の1の補数を計算し、最後の段階では、結果を格納する前に、結果の1の補数を計算する。
・その結果が、リトルエンディアン・バイト・オーダーでチェック値フィールドに格納される。すなわち、チェック値の最下位バイトがバイト48に位置し、チェック値の最上位バイトがバイト51に位置する。
・モデルに依存する値が、パラメータ・ブロックのモデル・バージョン番号(MVN)フィールド363に格納される。
・パラメータ・ブロックの継続フラグ(CF)フィールド373が0に設定される。
・パラメータ・ブロックのサブバイト境界(SBB)フィールド381が更新される。
・パラメータ・ブロックのブロック終結の長さ(EOBL)389フィールドおよびブロック終結シンボル(EOBS)388フィールドが更新される。
・パラメータ・ブロックの履歴長(HL)フィールド385が更新される。
・適用可能な場合、パラメータ・ブロックの履歴オフセット(HO)フィールド386が更新される。
・パラメータ・ブロックの動作終了補助コード(OESC)フィールド365が0に設定される。
・パラメータ・ブロックのチェック値フィールド387が更新される。
・汎用レジスタR1内のアドレスが、ビット0の処理を含む第1のオペランドの処理されたバイト数だけインクリメントされ、汎用レジスタR1+1内の長さが同じ数だけデクリメントされる。ビット0の処理を含む第1のオペランドの処理されたバイト数は、整数除算から得られた整数化した商であり、被除数は、処理された出力ビット数およびSBBの元の値の和であり、除数は8の値である。
・汎用レジスタR2内のアドレスが、処理されたソース・バイト数だけインクリメントされ、汎用レジスタR2+1内の長さが同じ数だけデクリメントされる。
・条件コード0が設定される。
・パラメータ・ブロック内の継続フラグ(CF)ビット373が1に設定される。
・パラメータ・ブロック内の継続状態バッファ(CSB)フィールド392が更新される。
・パラメータ・ブロックのサブバイト境界(SBB)フィールド381が更新される。
・パラメータ・ブロックの履歴長(HL)フィールド385が更新される。
・適用可能な場合、パラメータ・ブロックの履歴オフセット(HO)フィールド386が更新される。
・パラメータ・ブロックのチェック値フィールド387が更新される。
・モデルに依存する値が、パラメータ・ブロックのモデル・バージョン番号(MVN)フィールド363に格納される。
・パラメータ・ブロックのブロック終結の長さ(EOBL)389フィールドおよびブロック終結シンボル(EOBS)388フィールドが更新される。
・パラメータ・ブロックの動作終了補助コード(OESC)フィールド365が0に設定される。
・汎用レジスタR1内のアドレスが、ビット0の処理を含む第1のオペランドの処理されたバイト数だけインクリメントされ、汎用レジスタR1+1内の長さが同じ数だけデクリメントされる。ビット0の処理を含む第1のオペランドの処理されたバイト数は、整数除算から得られた整数化した商であり、被除数は、処理された出力ビット数およびSBBの元の値の和であり、除数は8の値である。
・汎用レジスタR2内のアドレスが、処理されたソース・バイト数だけインクリメントされ、汎用レジスタR2+1内の長さが同じ数だけデクリメントされる。
・条件コード3が設定される。
・汎用レジスタR1+1の内容によって指定された第1のオペランドの長さが、命令の実行の開始時に0である。
・命令の実行中に第1のオペランドの長さが0に等しくなり、正常完了が発生しない。
・パラメータ・ブロック内の継続フラグ(CF)ビット373が1に設定される。
・パラメータ・ブロック内の継続状態バッファ(CSB)フィールド392が更新される。
・パラメータ・ブロックのサブバイト境界(SBB)フィールド381が更新される。
・パラメータ・ブロックの履歴長(HL)フィールド385が更新される。
・適用可能な場合、パラメータ・ブロックの履歴オフセット(HO)フィールド386が更新される。
・パラメータ・ブロックのチェック値フィールド387が更新される。
・モデルに依存する値が、パラメータ・ブロックのモデル・バージョン番号(MVN)フィールド363に格納される。
・パラメータ・ブロックのブロック終結の長さ(EOBL)389フィールドおよびブロック終結シンボル(EOBS)388フィールドが更新される。
・パラメータ・ブロックの動作終了補助コード(OESC)フィールド365が0に設定される。
・汎用レジスタR1内のアドレスが、ビット0の処理を含む第1のオペランドの処理されたバイト数だけインクリメントされ、汎用レジスタR1+1内の長さが同じ数だけデクリメントされる。ビット0の処理を含む第1のオペランドの処理されたバイト数は、整数除算から得られた整数化した商であり、被除数は、処理された出力ビット数およびSBBの元の値の和であり、除数は8の値である。
・汎用レジスタR2内のアドレスが、処理されたソース・バイト数だけインクリメントされ、汎用レジスタR2+1内の長さが同じ数だけデクリメントされる。
・条件コード1が設定される。
・条件コード1が設定される。
・下で説明されているように、パラメータ・ブロックに格納する。
・第1のオペランドの位置に格納する。
・第3のオペランドの位置に格納し、この格納が、例えば履歴バッファ・タイプ(HBT)が1(円形)である場合に発生する。
・パラメータ・ブロックに関して、適用可能な場合、PERストレージ変更イベントが認識される。
・格納されたパラメータ・ブロックの一部に関して、適用可能な場合、PERストレージ変更イベントが認識される。
・モデルに依存する値が、パラメータ・ブロックのモデル・バージョン番号(MVN)フィールド363に格納される。
・パラメータ・ブロックの継続フラグ(CF)フィールド373が0に設定される。
・パラメータ・ブロックのサブバイト境界(SBB)フィールド381が更新される。
・パラメータ・ブロックの履歴長(HL)フィールド385が更新される。
・適用可能な場合、パラメータ・ブロックの履歴オフセット(HO)フィールド386が更新される。
・パラメータ・ブロックの圧縮された動的ハフマン・テーブル(CDHT)フィールド367および圧縮された動的ハフマン・テーブルの長さ(CDHTL)フィールド366が0に設定される。
・パラメータ・ブロックの動作終了補助コード(OESC)フィールド365が0に設定される。
・パラメータ・ブロックのチェック値フィールド387が更新される。
・汎用レジスタR1内のアドレスが、第1のオペランドの位置に格納されたバイト数だけインクリメントされ、汎用レジスタR1+1内の長さが同じ数だけデクリメントされる。
・汎用レジスタR2内のアドレスが、ビット0の処理を含む第2のオペランドの処理されたバイト数だけインクリメントされ、汎用レジスタR2+1内の長さが同じ数だけデクリメントされる。ビット0の処理を含む第2のオペランドの処理されたバイト数は、整数除算から得られた整数化した商であり、被除数は、処理された入力ビット数およびSBBの元の値の和であり、除数は8の値である。
・条件コード0が設定される。
・パラメータ・ブロック内の継続フラグ(CF)ビット373が1に設定される。
・パラメータ・ブロック内の継続状態バッファ(CSB)フィールド392が更新される。
・パラメータ・ブロックのサブバイト境界(SBB)フィールド381が更新される。
・パラメータ・ブロックの圧縮された動的ハフマン・テーブル(CDHT)フィールド367および圧縮された動的ハフマン・テーブルの長さ(CDHTL)フィールド366が更新される。BTYPE値が2進数10であるブロックを処理しているときに部分的完了が発生した場合、テーブルを表すために必要とされないCDHTフィールドのバイトが0として格納される。BTYPE値が2進数00または01であるブロックを処理しているときに部分的完了が発生した場合、CDHTフィールドおよびCDHTLフィールドに0が格納される。
・パラメータ・ブロックの履歴長(HL)フィールド385が更新される。
・適用可能な場合、パラメータ・ブロックの履歴オフセット(HO)フィールド386が更新される。
・パラメータ・ブロックのチェック値フィールド387が更新される。
・モデルに依存する値が、パラメータ・ブロックのモデル・バージョン番号(MVN)フィールド363に格納される。
・パラメータ・ブロックの動作終了補助コード(OESC)フィールド365が0に設定される。
・パラメータ・ブロックの不完全な機能の状態(IFS)フィールド383が更新される。
・適用可能な場合、パラメータ・ブロックの不完全な機能の長さ(IFL)フィールド384が更新される。
・汎用レジスタR1内のアドレスが、第1のオペランドの位置に格納されたバイト数だけインクリメントされ、汎用レジスタR1+1内の長さが同じ数だけデクリメントされる。
・汎用レジスタR2内のアドレスが、ビット0の処理を含む第2のオペランドの処理されたバイト数だけインクリメントされ、汎用レジスタR2+1内の長さが同じ数だけデクリメントされる。ビット0の処理を含む第2のオペランドの処理されたバイト数は、整数除算から得られた整数化した商であり、被除数は、処理された入力ビット数およびSBBの元の値の和であり、除数は8の値である。
・条件コード3が設定される。
・動作中に、BFINALが1に等しい圧縮データ・ブロックの最後の要素がデコードされておらず、第2のオペランドの長さおよびSBBによって指定された第2のオペランドのビット数が、次にデコードする要素のビット数よりも少なく、第2のオペランドの位置からのデータのデコーディングのすべての結果が第1のオペランドの位置に配置されている。
・パラメータ・ブロック内の継続フラグ(CF)ビット373が1に設定される。
・パラメータ・ブロック内の継続状態バッファ(CSB)フィールド392が更新される。
・パラメータ・ブロックのサブバイト境界(SBB)フィールド381が更新される。
・パラメータ・ブロックの圧縮された動的ハフマン・テーブル(CDHT)フィールド367および圧縮された動的ハフマン・テーブルの長さ(CDHTL)フィールド366が更新される。BTYPE値が2進数10であるブロックを処理しているときに部分的完了が発生した場合、テーブルを表すために必要とされないCDHTフィールドのバイトが0として格納される。BTYPE値が2進数00または01であるブロックを処理しているときに部分的完了が発生した場合、CDHTフィールドおよびCDHTLフィールドに0が格納される。
・パラメータ・ブロックの履歴長(HL)フィールド385が更新される。
・適用可能な場合、パラメータ・ブロックの履歴オフセット(HO)フィールド386が更新される。
・パラメータ・ブロックのチェック値フィールド387が更新される。
・モデルに依存する値が、パラメータ・ブロックのモデル・バージョン番号(MVN)フィールド363に格納される。
・パラメータ・ブロックの動作終了補助コード(OESC)フィールド365が0に設定される。
・パラメータ・ブロックの不完全な機能の状態(IFS)フィールド383が更新される。
・適用可能な場合、パラメータ・ブロックの不完全な機能の長さ(IFL)フィールド384が更新される。
・汎用レジスタR1内のアドレスが、第1のオペランドの位置に格納されたバイト数だけインクリメントされ、汎用レジスタR1+1内の長さが同じ数だけデクリメントされる。
・汎用レジスタR2内のアドレスが、ビット0の処理を含む第2のオペランドの処理されたバイト数だけインクリメントされ、汎用レジスタR2+1内の長さが同じ数だけデクリメントされる。ビット0の処理を含む第2のオペランドの処理されたバイト数は、整数除算から得られた整数化した商であり、被除数は、処理された入力ビット数およびSBBの元の値の和であり、除数は8の値である。
・条件コード2が設定される。
・第1のオペランドの長さが0に等しいため、第2のオペランドの位置からのデータのデコーディングの結果を第1のオペランドの位置に配置することができない。
・パラメータ・ブロック内の継続フラグ(CF)ビット373が1に設定される。
・パラメータ・ブロック内の継続状態バッファ(CSB)フィールド392が更新される。
・パラメータ・ブロックのサブバイト境界(SBB)フィールド381が更新される。
・パラメータ・ブロックの圧縮された動的ハフマン・テーブル(CDHT)フィールド367および圧縮された動的ハフマン・テーブルの長さ(CDHTL)フィールド366が更新される。BTYPE値が2進数10であるブロックを処理しているときに部分的完了が発生した場合、テーブルを表すために必要とされないCDHTフィールドのバイトが0として格納される。BTYPE値が2進数00または01であるブロックを処理しているときに部分的完了が発生した場合、CDHTフィールドおよびCDHTLフィールドに0が格納される。
・パラメータ・ブロックの履歴長(HL)フィールド385が更新される。
・適用可能な場合、パラメータ・ブロックの履歴オフセット(HO)フィールド386が更新される。
・パラメータ・ブロックのチェック値フィールド387が更新される。
・モデルに依存する値が、パラメータ・ブロックのモデル・バージョン番号(MVN)フィールド363に格納される。
・パラメータ・ブロックの動作終了補助コード(OESC)フィールド365が0に設定される。
・パラメータ・ブロックの不完全な機能の状態(IFS)フィールド383が更新される。
・適用可能な場合、パラメータ・ブロックの不完全な機能の長さ(IFL)フィールド384が更新される。
・汎用レジスタR1内のアドレスが、第1のオペランドの位置に格納されたバイト数だけインクリメントされ、汎用レジスタR1+1内の長さが同じ数だけデクリメントされる。
・汎用レジスタR2内のアドレスが、ビット0の処理を含む第2のオペランドの処理されたバイト数だけインクリメントされ、汎用レジスタR2+1内の長さが同じ数だけデクリメントされる。ビット0の処理を含む第2のオペランドの処理されたバイト数は、整数除算から得られた整数化した商であり、被除数は、処理された入力ビット数およびSBBの元の値の和であり、除数は8の値である。
・条件コード1が設定される。
・本明細書において説明されているように、パラメータ・ブロックに格納する。
・第1のオペランドの位置に格納する。
・第3のオペランドの位置に格納し、この格納が、例えば履歴バッファ・タイプ(HBT)が1(円形)である場合に発生する。
・パラメータ・ブロックに関して、適用可能な場合、PERストレージ変更イベントが認識される。
・格納されたパラメータ・ブロックの一部に関して、適用可能な場合、PERストレージ変更イベントが認識される。
・圧縮データ・ブロック600が、b0として識別されるバイト0のビット4から開始し、b60として識別されるバイト7のビット0で終了するビット・ストリーム602で構成される。
・ビット・ストリームに出現する最初の要素が、バイト0のビット4におけるBFINAL(ブロック・ヘッダーの最後のビット)である。
・ビット・ストリームに出現する2番目の要素が、バイト0のビット2~3におけるBTYPE(ブロック・タイプ)である。この例では、BTYPEは2進数00である。
・BTYPEが2進数00である場合、BTYPEの左にあるビット(この例では、バイト0のビット0~1)およびバイト境界の右にあるビットが無視される。
・ビット・ストリームに出現する3番目の要素が、LENフィールドの最下位バイト(LSB:least significant byte)であり、その後にLENフィールドの最上位バイト(MSB:most significant byte)が続く。LENフィールドは、リテラル・データを含むブロック内のバイト数を指定する。リテラル・データは、例えば圧縮されていないデータである。リテラル・データを含むバイトは、ビット・ストリーム内のNLENフィールドの後に続く。NLENは、LENの1の補数である。1つの例では、バイト1~2が、リトルエンディアン・バイト・オーダーでLENフィールドを含む。
・LENフィールドの後に続いてビット・ストリームに出現する要素が、NLENフィールドの最下位バイトであり、その後にNLENフィールドの最上位バイトが続く。バイト3~4が、リトルエンディアン・バイト・オーダーでNLENフィールドを含む。NLENフィールドは、LENフィールドの1の補数である。
・NLENフィールドの後に続いてビット・ストリームに出現する要素が、リテラル・バイトとして識別される圧縮されていないデータである。バイト5~7は、このブロックを生成するために使用されるソース・データから変更されない、圧縮されていないデータを含む。
・このブロックに含まれているどの要素も、ハフマン・コードではない。このブロック内のすべての要素は、デフレート規格によって規定されているように、要素の最下位ビットから最上位ビットへの順序で、ビット・ストリームに格納される。LEN、NLEN、およびリテラルの各要素が、バイト境界上でアライメントされた整数個のバイトであるため、これらの要素は、バイト単位で処理されてよく、必ずしもビット単位で処理されなくてよい。
・圧縮データ・ブロック700が、b0として識別されるバイト0のビット4から開始し、b89として識別されるバイト11のビット3で終了するビット・ストリーム702で構成される。
・ビット・ストリームに出現する最初の要素が、バイト0のビット4におけるBFINALである。
・ビット・ストリームに出現する2番目の要素が、バイト0のビット2~3におけるBTYPEである。この例では、BTYPEは2進数01である。
・固定ハフマン・テーブル(FHT)が、ブロックの構成要素ではない。
・ビット・ストリームに出現する第3の要素が、バイト0のビット1で開始する最初の圧縮データ・シンボルである。圧縮データ・シンボルは、1つの例では、示されている順序でビット・ストリームに出現する以下の部分要素で構成される。
1.変数の長さのハフマン・コード。このコードの最上位ビットは、コードの長さを指定する。このコードは、コードの最上位ビットから開始してビット・ストリームに出現し、コードの最下位ビットで終了する。このコードがリテラル値またはブロック終結シンボルを表す場合、このコードは、圧縮データ・シンボルの単なる部分要素である。このコードが履歴バッファへのポインタの長さを表す場合、このコードの後に、圧縮データ・シンボルのその後の部分要素が続く。
2.適用可能な場合、デフレート規格によって規定されているように、ポインタの長さを表すハフマン・コードの後に、追加の長さビットが続いてよい。追加の長さビットは、追加の長さビットの最下位ビットから開始してビット・ストリームに出現し、追加の長さビットの最上位ビットで終了する。
3.次にビット・ストリームに出現する部分要素は、履歴バッファへのポインタの5ビットの距離コードである。この距離コードは、例えばコードの最上位ビットから開始してビット・ストリームに出現し、距離コードの最下位ビットで終了する。
4.適用可能な場合、デフレート規格によって規定されているように、距離コードの後に、追加の距離ビットが続いてよい。追加の距離ビットは、追加の距離ビットの最下位ビットから開始してビット・ストリームに出現し、追加の距離ビットの最上位ビットで終了する。
・一例として、バイト0のビット0~1、バイト1~9のすべてのビット、およびバイト10のビット2~7が、圧縮データ・シンボルのビットを含む。
・ビット・ストリームに出現する最後の要素が、単一の部分要素を含む圧縮データ・シンボルであり、この部分要素は、ブロック終結(EOB)シンボルを表すハフマン・コードである。BTYPEが2進数01であるブロックのEOBシンボルは、2進数0000000である。この例では、バイト10のビット1が、EOBシンボルの最上位ビットを含み、バイト11のビット3が、EOBシンボルの最下位ビットを含む。
・バイト11のビット3が、圧縮データ・ブロックの最後のビットである、ビット・ストリームの最後のビットを含む。
・圧縮データ・ブロック800が、b0として識別されるバイト0のビット4から開始し、b89として識別されるバイト11のビット3で終了するビット・ストリーム802で構成される。
・ビット・ストリームに出現する最初の要素が、バイト0のビット4におけるBFINALである。
・ビット・ストリームに出現する2番目の要素が、バイト0のビット2~3におけるBTYPEである。この例では、BTYPEは2進数10である。
・ビット・ストリームに出現する第3の要素が、バイト0のビット1で開始する動的ハフマン・テーブル(DHT)の圧縮表現である。DHTの圧縮表現は、1つの例では、示されている順序でビット・ストリームに出現する以下の部分要素で構成される。
1.HLIT:5ビットのHLIT部分要素および257の和が、リテラル・バイト、EOBシンボル、および重複列の長さを表すハフマン・コードの数を指定する。HLITの有効な値の範囲は、例えば0~29である。HLITビットは、HLIT部分要素の最下位ビットから開始してビット・ストリームに出現し、HLIT部分要素の最上位ビットで終了する。この例では、b3として識別されるバイト0のビット1が、HLIT部分要素の最下位ビットである。
2.HDIST:5ビットのHDIST部分要素および1の和が、重複列のポインタ距離を表すハフマン・コードの数を指定する。HDISTの有効な値の範囲は、例えば0~29である。HDISTビットは、HDIST部分要素の最下位ビットから開始してビット・ストリームに出現し、HDIST部分要素の最上位ビットで終了する。
3.HCLEN:4ビットのHCLEN部分要素および4の和が、コード長を表すハフマン・コードの数を指定する。HCLENの有効な値の範囲は、例えば0~15である。HCLENビットは、HCLEN部分要素の最下位ビットから開始してビット・ストリームに出現し、HCLEN部分要素の最上位ビットで終了する。
4.圧縮されたDHTに対して定義されたコード長の各々に対してビット長を指定するコードのシーケンス。コードの数は、HCLENおよび4の和に等しい。各コードは3ビットである。
5.リテラル・バイト、EOBシンボル、および重複列の長さで構成されるセットの要素の各々に対してコード長を指定するコードのシーケンス。指定されるコード長の数は、HLITおよび257の和に等しい。
6.重複列のポインタ距離で構成されるセットの要素の各々に対してコード長を指定するコードのシーケンス。指定されるコード長の数は、HDISTおよび1の和に等しい。
・ビット・ストリームに出現する第4の要素が、最初の圧縮データ・シンボルである。圧縮データ・シンボルは、1つの実施形態では、示されている順序でビット・ストリームに出現する以下の部分要素で構成される。
1.変数の長さのハフマン・コード。このコードの最上位ビットは、コードの長さを指定する。このコードは、コードの最上位ビットから開始してビット・ストリームに出現し、コードの最下位ビットで終了する。このコードがリテラル値またはブロック終結シンボルを表す場合、このコードは、圧縮データ・シンボルの単なる部分要素である。このコードが履歴バッファへのポインタの長さを表す場合、このコードの後に、圧縮データ・シンボルのその後の部分要素が続く。
2.適用可能な場合、デフレート規格によって規定されているように、ポインタの長さを表すハフマン・コードの後に、追加の長さビットが続いてよい。追加の長さビットは、例えば追加の長さビットの最下位ビットから開始してビット・ストリームに出現し、追加の長さビットの最上位ビットで終了する。
3.次にビット・ストリームに出現する部分要素は、履歴バッファへのポインタの5ビットの距離コードである。この距離コードは、例えばコードの最上位ビットから開始してビット・ストリームに出現し、距離コードの最下位ビットで終了する。
4.適用可能な場合、デフレート規格によって規定されているように、距離コードの後に、追加の距離ビットが続いてよい。追加の距離ビットは、例えば追加の距離ビットの最下位ビットから開始してビット・ストリームに出現し、追加の距離ビットの最上位ビットで終了する。
・ビット・ストリームに出現する、例えばバイト10のビット5までの、ビット5を含むその後のビットは、圧縮データ・シンボルのビットを含む。
・ビット・ストリームに出現する最後の要素が、単一の部分要素を含む圧縮データ・シンボルであり、この部分要素は、ブロック終結(EOB)シンボルを表すハフマン・コードである。この例では、バイト10のビット4が、EOBシンボルの最上位ビットを含み、バイト11のビット3が、EOBシンボルの最下位ビットを含む。
・バイト11のビット3が、圧縮データ・ブロックの最後のビットである、ビット・ストリームの最後のビットを含む。
・単一のパラメータ・ブロックが定義され、圧縮データ・セット全体を処理するために、デフレート変換呼び出し命令の複数の使用によって参照されてよい。パラメータ・ブロックのチェック値フィールド387およびチェック値タイプ・フィールド375が、圧縮データ・セット内の圧縮データ・ブロック(例えば、すべてのブロック)に適用されるべきである。パラメータ・ブロックのサブバイト境界・フィールド381が、個別のブロック間の移行に適用されるべきである。履歴長385および履歴オフセット386が複数のブロックに適用されてよい。パラメータ・ブロックの残りのフィールドは、1つの例では、デフレート変換呼び出し命令の特定の実行によって処理されている個別の圧縮データ・ブロックのみに適用される。
・個別のチェック値が、例えば、圧縮データ・セットによって表された圧縮されていないデータのすべてに適用される。
・ブロック1には、第1の圧縮データ・シンボルに関して参照する履歴が存在しない。ブロック1内のその後のシンボルは、以前にブロック1に出現したシンボルに対応する履歴を参照し得る。ブロック2内のシンボルは、以前にブロック2および1に出現したシンボルに対応する履歴を参照し得る。ブロック3内のシンボルは、以前にブロック3、2、および1に出現したシンボルに対応する履歴を参照し得る。
1.最後のブロックの指示(BFINAL)。
2.ブロック・タイプ(BTYPE)。
3.適用可能な場合、動的ハフマン・テーブルの圧縮形式。
4.圧縮データ・シンボル。
5.ブロック終結(EOB)シンボル。
・動作を再開するために命令が再実行されており(命令の実行の開始時にパラメータ・ブロックのCFフィールド373が1であり)、第2のオペランドを参照せずに、パラメータ・ブロックのCSBフィールド392を参照して、動作を完了させることができる。
・空の圧縮データ・ブロックを生成する。空の圧縮データ・ブロックは、例えばブロック・ヘッダー、適用可能な場合、圧縮形式のDHT、およびEOBシンボルで構成される。
・開いている圧縮データ・ブロックを閉じる。すなわち、単にEOBシンボルを圧縮データ・ブロックの末尾に格納する。
・新しいタスク(NT)374が1である場合、参照できる初期履歴が存在しない。
・NTが0であり、汎用レジスタ0のビット56(HBT)が0(直列)である場合、参照できる初期履歴が、第2のオペランドの左端のバイトの左に隣接して存在し、初期履歴の長さが、パラメータ・ブロックの履歴長(HL)フィールド385によって指定される。
・NTが0であり、汎用レジスタ0のビット56(HBT)が1(円形)である場合、参照できる初期履歴が、パラメータ・ブロックの履歴オフセット(HO)386フィールドおよび履歴長(HL)385フィールドによって指定された第3のオペランドの位置に存在する。
・HBTが直列である場合、履歴が更新されるときに、第2のオペランドの位置に対するストレージの更新が不要である。更新された第2のオペランド・アドレスおよび更新されたHLは、得られた履歴の更新された位置および更新された長さを指定する。
・HBTが円形である場合、履歴が更新されるときに、第3のオペランドの位置に対するストレージの更新が実行される。第3のオペランド・アドレス、更新されたHO、および更新されたHLは、得られた履歴の更新された位置および更新された長さを指定する。
・第3のオペランドの位置のバイトの範囲への格納が行われる。このバイトの範囲は、例えば次式によって指定された位置から開始し、この位置を含む。
R3+modulo32K(HOO+HLO)
ここで、
HOO:命令が実行される前の履歴オフセット。
HLO:命令が実行される前の履歴長。
R3+modulo32K(HOO+HLO+BP-1)
ここで、
BP:命令の実行中に第2のオペランドの位置から処理されたバイト数。
・ストレージ位置の内容を変更しない、必要ではない格納が、前述した範囲に含まれない第3のオペランドの位置のバイトに対して行われてよい。そのような位置への格納も、格納タイプ・アクセス例外、PERストレージ変更イベント、および設定変更ビットの対象になる。
・モデルに依存する値が、パラメータ・ブロックのモデル・バージョン番号(MVN)フィールド363に格納される。
・パラメータ・ブロックのサブバイト境界(SBB)フィールド381が更新される。
・パラメータ・ブロックのブロック終結の長さ(EOBL)389フィールドおよびブロック終結シンボル(EOBS)388フィールドが更新される。
・汎用レジスタR1内のアドレスが、ビット0の処理を含む第1のオペランドの処理されたバイト数だけインクリメントされ、汎用レジスタR1+1内の長さが同じ数だけデクリメントされる。ビット0の処理を含む第1のオペランドの処理されたバイト数は、整数除算から得られた整数化した商であり、被除数は、処理された出力ビット数およびSBBの元の値の和であり、除数は8の値である。
・汎用レジスタR2内のアドレスが、処理されたソース・バイト数だけインクリメントされ、汎用レジスタR2+1内の長さが同じ数だけデクリメントされる。
・新しいタスク(NT)374が1である場合、参照できる初期履歴が存在しない。
・NTが0であり、汎用レジスタ0のビット56(HBT)が0(直列)である場合、参照できる初期履歴が、第1のオペランドの左端のバイトの左に隣接して存在し、初期履歴の長さが、パラメータ・ブロックの履歴長(HL)フィールド385によって指定される。
・NTが0であり、汎用レジスタ0のビット56(HBT)が1(円形)である場合、参照できる初期履歴が、パラメータ・ブロックの履歴オフセット(HO)386フィールドおよび履歴長(HL)385フィールドによって指定された第3のオペランドの位置に存在する。
・HBTが直列である場合、第1のオペランドの位置に対するストレージの更新が、得られた履歴に対する更新も構成する。更新された第1のオペランド・アドレスおよび更新されたHLは、得られた履歴の更新された位置および更新された長さを指定する。
・HBTが円形である場合、履歴が更新されるときに、第3のオペランドの位置に対するストレージの更新が実行される。第3のオペランド・アドレス、更新されたHO、および更新されたHLは、得られた履歴の更新された位置および更新された長さを指定する。
・第3のオペランドの位置のバイトの範囲への格納が行われる。このバイトの範囲は、次式によって指定された位置から開始し、この位置を含む。
R3+modulo32K(HOO+HLO)
ここで、
HOO:命令が実行される前の履歴オフセット。
HLO:命令が実行される前の履歴長。
R3+modulo32K(HOO+HLO+BP-1)
ここで、
BP:命令の実行中に第1のオペランドの位置に格納されたバイト数。
・ストレージ位置の内容を変更しない、必要ではない格納が、前述した範囲に含まれない第3のオペランドの位置のバイトに対して行われてよい。そのような位置への格納も、格納タイプ・アクセス例外、PERストレージ変更イベント、および設定変更ビットの対象になる。
・モデルに依存する値が、パラメータ・ブロックのモデル・バージョン番号(MVN)フィールド363に格納される。
・パラメータ・ブロックのサブバイト境界(SBB)フィールド381が更新される。
・汎用レジスタR1内のアドレスが、第1のオペランドの位置に格納されたバイト数だけインクリメントされ、汎用レジスタR1+1内の長さが同じ数だけデクリメントされる。
・汎用レジスタR2内のアドレスが、ビット0の処理を含む第2のオペランドの処理されたバイト数だけインクリメントされ、汎用レジスタR2+1内の長さが同じ数だけデクリメントされる。ビット0の処理を含む第2のオペランドの処理されたバイト数は、整数除算から得られた整数化した商であり、被除数は、処理された入力ビット数およびSBBの元の値の和であり、除数は8の値である。
・命令が再実行されており(例えば、命令の実行の開始時にパラメータ・ブロックのCFフィールド373が1であり)、命令が前に実行されたときに、第2のオペランド全体が処理された。
・ブロック・ヘッダー。
・ブロック・タイプが2進数00であるブロックのLENフィールド。
・ブロック・タイプが2進数00であるブロックのNLENフィールド。
・動的ハフマン・テーブルの圧縮形式。
・ブロック終結(EOB)シンボル。
・パラメータ・ブロック・バージョン番号362によって指定されたパラメータ・ブロックの形式が、モデルによってサポートされない。
・パラメータ・ブロック・バージョン番号362によって指定されたパラメータ・ブロックの形式が、モデルによってサポートされない。
・NT374が0であり、HL385が例えば32,768より大きい。
・HTT376が1であり、CDHTL366が、例えば42未満であるか、または例えば2283より大きい。
・HTT376が1であり、CDHTL366が、CDHTフィールド367で指定された圧縮形式のDHTの長さに等しくない。
・HTT376が1であり、圧縮形式のDHTのHLIT部分要素が例えば29より大きい(無効なDHT)。
・HTT376が1であり、圧縮形式のDHTのHDIST部分要素が例えば29より大きい(無効なDHT)。
・HTT376が1であり、DHT(CDHTフィールド367の内容)の圧縮形式が、圧縮されたDHTに対して定義された可能な例えば19個のコード長のビット長を指定するコードのシーケンス内にある、機能するハフマン・ツリーを指定するためにハフマン・アルゴリズムによって必要とされる長さより小さいコードを指定する(無効なDHT)。
・HTT376が1であり、DHT(CDHTフィールド367の内容)の圧縮形式が、リテラル・バイト、EOBシンボル、および重複列の長さで構成されている要素のセットの第1のコード長として例えばコード長16(前のコード長のコピー)を指定する(無効なDHT)。
・HTT376が1であり、DHT(CDHTフィールド367の内容)の圧縮形式が、リテラル・バイトのコード長を指定するコードのシーケンス内にあるコードを指定し、このコードが、圧縮されたDHT内で前に指定された、参照されるコード長のセットを表すために決定されたコードのいずれにも一致しない(無効なDHT)。
・HTT376が1であり、DHT(CDHTフィールド367の内容)の圧縮形式が、コード長0(CL0)をEOBシンボルに割り当てるコードを指定する。この場合、対応するDHTが、EOBシンボルを表すためのハフマン・コードを指定しない(無効なDHT)。
・HTT376が1であり、DHT(CDHTフィールド367の内容)の圧縮形式が、重複列の長さおよびポインタ距離のコード長を指定するコードのシーケンス内にあるコードを指定し、このコードが、圧縮されたDHT内で前に指定された、参照されるコード長のセットを表すために決定されたコードのいずれにも一致しない(無効なDHT)。
・HTT376が1であり、DHT(CDHTフィールド367の内容)の圧縮形式が、HLITフィールド、HDISTフィールド、および例えば258の値の和によって指定された、DHT内のハフマン・コードの数より大きいコード長の数を指定する。これは、例えば、コード長16、17、および18の不適切な使用を伴っている可能性がある(無効なDHT)。
・HTT376が1であり、DHT(CDHTフィールド367の内容)の圧縮形式が、リテラル・バイト、EOBシンボル、および重複列の長さのセットに対して、機能するハフマン・ツリーを指定するためにハフマン・アルゴリズムによって必要とされる長さより小さいコード長を指定する(無効なDHT)。
・HTT376が1であり、DHT(CDHTフィールド367の内容)の圧縮形式が、重複列のポインタ距離のセットに対して、機能するハフマン・ツリーを指定するためにハフマン・アルゴリズムによって必要とされる長さより小さいコード長を指定する(無効なDHT)。
・CPUが、第2のオペランド内のリテラル・バイトを表すために圧縮データ・シンボルを生成しようとし、CDHTフィールドの内容から導出されたDHTが非汎用であり、そのリテラル・バイトに対応するハフマン・コードを指定しない。
・CPUが、第2のオペランド内の重複列を表すために圧縮データ・シンボルを生成しようとし、CDHTフィールドの内容から導出されたDHTが非汎用であり、その重複列の長さまたはポインタ距離に対応するハフマン・コードを指定しない。
・パラメータ・ブロック・バージョン番号362によって指定されたパラメータ・ブロックの形式が、モデルによってサポートされない。
・NT374が0であり、HL385が例えば32,768より大きい。
・BTYPEが2進数11に等しい圧縮データ・ブロックが発生する。
・BTYPEが2進数00に等しい圧縮データ・ブロック、およびLENの1の補数に等しくないNLENが発生する。
・圧縮形式のDHT(BTYPEが2進数10に等しい圧縮データ・ブロックの内容)が発生し、圧縮されたDHTのHLIT部分要素が例えば29より大きい(無効なDHT)。
・圧縮形式のDHT(BTYPEが2進数10に等しい圧縮データ・ブロックの内容)が発生し、圧縮されたDHTのHDIST部分要素が例えば29より大きい(無効なDHT)。
・圧縮形式のDHT(BTYPEが2進数10に等しい圧縮データ・ブロックの内容)が発生し、このDHTが、圧縮されたDHTに対して定義された可能な例えば19個のコード長のビット長を指定するコードのシーケンス内にある、機能するハフマン・ツリーを指定するためにハフマン・アルゴリズムによって必要とされる長さより小さいコードを指定する(無効なDHT)。
・圧縮形式のDHT(BTYPEが2進数10に等しい圧縮データ・ブロックの内容)が発生し、このDHTが、リテラル・バイト、EOBシンボル、および重複列の長さで構成されている要素のセットの第1のコード長として例えばコード長16(前のコード長のコピー)を指定する(無効なDHT)。
・圧縮形式のDHT(BTYPEが2進数10に等しい圧縮データ・ブロックの内容)が発生し、このDHTが、リテラル・バイトのコード長を指定するコードのシーケンス内にあるコードを指定し、このコードが、圧縮されたDHT内で前に指定された、参照されるコード長のセットを表すために決定されたコードのいずれにも一致しない(無効なDHT)。
・圧縮形式のDHT(BTYPEが2進数10に等しい圧縮データ・ブロックの内容)が発生し、このDHTが、コード長0(CL0)をEOBシンボルに割り当てるコードを指定する。この場合、対応するDHTが、EOBシンボルを表すためのハフマン・コードを指定しない(無効なDHT)。
・圧縮形式のDHT(BTYPEが2進数10に等しい圧縮データ・ブロックの内容)が発生し、このDHTが、重複列の長さおよびポインタ距離のコード長を指定するコードのシーケンス内にあるコードを指定し、このコードが、圧縮されたDHT内で前に指定された、参照されるコード長のセットを表すために決定されたコードのいずれにも一致しない(無効なDHT)。
・圧縮形式のDHT(BTYPEが2進数10に等しい圧縮データ・ブロックの内容)が発生し、このDHTが、HLITフィールド、HDISTフィールド、および例えば258の値の和によって指定された、DHT内のハフマン・コードの数より大きいコード長の数を指定する。これは、例えば、コード長16、17、および18の不適切な使用を伴っている可能性がある(無効なDHT)。
・圧縮形式のDHT(BTYPEが2進数10に等しい圧縮データ・ブロックの内容)が発生し、このDHTが、リテラル・バイト、EOBシンボル、および重複列の長さのセットに対して、機能するハフマン・ツリーを指定するためにハフマン・アルゴリズムによって必要とされる長さより小さいコード長を指定する(無効なDHT)。
・圧縮形式のDHT(BTYPEが2進数10に等しい圧縮データ・ブロックの内容)が発生し、このDHTが、重複列のポインタ距離のセットに対して、機能するハフマン・ツリーを指定するためにハフマン・アルゴリズムによって必要とされる長さより小さいコード長を指定する(無効なDHT)。
・BTYPEが2進数10に等しい圧縮データ・ブロックに出現する圧縮データ・シンボルが、同じブロック内の圧縮形式のDHTから導出された非汎用DHTによって定義されていないハフマン・コードを指定する。この場合、一般オペランド・データ例外を認識する目的で処理するために使用できる第2のオペランドのビット数は、モデルに依存する。より詳細には、定義されていないコードをデコードしようとするモデルは、より少ないビットを処理した後に例外を決定できたとしても、例外を認識する前に、例えば15ビットを処理し得る。
・重複列のポインタであり、シンボルを処理する時点で使用可能な履歴の長さより大きい距離を指定する圧縮データ・シンボルが発生する。
・BTYPEが2進数01に等しい圧縮データ・ブロックに出現する圧縮データ・シンボルが、無効なコード(例えば、重複列の長さの場合は2進数11000110または11000111のコード、あるいは重複列のポインタ距離の場合は2進数11110または11111のコード)を指定する。この場合、一般オペランド・データ例外を認識する目的で処理するために使用できる第2のオペランドのビット数は、モデルに依存する。より詳細には、無効なコードをデコードしようとするモデルは、より少ないビットを処理した後に例外を決定できたとしても、例外を認識する前に、例えば、重複列の長さの場合は8ビット、または重複列のポインタ距離の場合は5ビットを処理し得る。
・パラメータ・ブロックが第1のまたは第2のオペランドと重なる。
・第1のオペランドが第2のオペランドと重なる。
・指定された履歴バッファ・タイプ(HBT)が円形であり、第3のオペランドが、第1のオペランド、第2のオペランド、またはパラメータ・ブロックと重なる。
・指定された履歴バッファ・タイプ(HBT)が直列であり、DFLTCC-CMPR機能が指定され、履歴が、第1のオペランドまたはパラメータ・ブロックと重なる。
・指定された履歴バッファ・タイプ(HBT)が直列であり、DFLTCC-XPND機能が指定され、履歴が、第2のオペランドまたはパラメータ・ブロックと重なる。
0 正常完了
1 第1のオペランドの長さが、動作を完了するのに不十分である
2 第2のオペランドの長さが、動作を完了するのに不十分である(DFLTCC-XPND)
3 CPUによって決定された処理済みのデータの量
・アクセス(フェッチ、オペランド2、直列履歴、フェッチおよび格納、パラメータ・ブロック、オペランド1、オペランド3)
・DXC0を含むデータ、一般オペランド
・演算(デフレート変換機能がインストールされていない場合)
・指定
・トランザクション制約
1.~6.一般的なケースに関する、プログラム割り込み条件の優先度と同じ優先度を持つ例外。
7.A 第2の命令のハーフワードに関するアクセス例外。
7.B 演算例外。
7.C トランザクション制約。
8.A 無効な機能コードまたは無効なレジスタ番号に起因する指定例外。
8.B 4Kバイト境界上で指定されないパラメータ・ブロックに起因する指定例外。
8.C 4Kバイト境界上で指定されない円形履歴バッファに起因する指定例外。
9.パラメータ・ブロックへのアクセスに関するアクセス例外。
10.パラメータ・ブロックの指定された形式がモードによってサポートされていない場合の一般オペランド・データ例外。
11.命令の実行の開始時に第2のオペランドの長さが0に等しく、CFが0に等しいことに起因する指定例外。
12.命令の実行の開始時に第1のオペランドの長さが0に等しく、DFLTCC-CMPRが指定されたことに起因する条件コード1。
13.A DFLTCC-CMPRまたはDFLTCC-XPNDが指定された場合に、履歴長フィールドが32,768より大きく、新しいタスク・フィールドが0であることに起因する一般オペランド・データ例外。
13.B 第1のオペランドへのアクセスに関するアクセス例外であり、第1のオペランドの長さが0以外である。
13.C 第2のオペランドへのアクセスに関するアクセス例外であり、第2のオペランドの長さが0以外である。
13.D 命令の実行の開始時に指定された直列履歴へのアクセスに関するアクセス例外。
13.E 第3のオペランドへのアクセスに関するアクセス例外。
14.A 上の項目10および13.Aに含まれている条件以外の条件に起因する一般オペランド・データ例外。
14.B 上の項目12に含まれている条件以外の条件に起因する条件コード1、2、または3。
15.条件コード0。
1.データを圧縮または復元するときに、デフレート変換呼び出し命令が実行される回数を最小限に抑えて動作が実行された場合に、全体的な効率が高くなることがある。言い換えると、大きいオペランドを使用してDFLTCCを実行することは、小さいオペランドを使用して複数回DFLTCCを実行することよりも効率的であることがある。
2.圧縮動作および復元動作で、条件コード3が設定された場合、プログラムが命令に分岐して戻り、動作を続行できるように、命令によって使用される汎用レジスタおよびパラメータ・ブロックが更新されている。
3.1つの実施形態では、命令のパラメータによって指定された処理の、CPUによって決定された下位部分を実行した後に、デフレート変換呼び出し命令が完了し得る。指定されたすべての処理の代わりに、CPUによって決定された量の処理のみを実行した後に命令が完了した場合、命令が条件コード3を設定する。そのような完了時に、命令に分岐して戻り、命令を再実行することによって命令の処理を再開できるように、PSW(program status word:プログラム状態ワード)内の命令アドレスが次の順次命令を指定し、命令のオペランド・パラメータが調整されている。命令は、指定されたすべての処理を実行したときに、3以外の条件コードを設定する。
4.DFLTCC-CMPR機能が指定され、パラメータ・ブロックのサブバイト境界(SBB)フィールド内の0以外の値と共に動作が終了した場合、動作は、得られた第1のオペランド・アドレスによって指定されたバイトに格納することを含んでいた。DFLTCC-XPND機能が指定され、SBB内の0以外の値と共に動作が終了した場合、動作は、得られた第2のオペランド・アドレスによって指定されたバイトをフェッチすることを含んでいた。
5.0以外の条件コードが設定されて動作が終了した場合、パラメータ・ブロックのCSBフィールド392が、部分的に処理されたデータを含んでよく、プログラムが命令を再実行して動作を再開することが期待される。
6.0以外の条件コードが設定されて動作が終了した後に、動作を再開する目的で命令を再実行する前に、プログラムはパラメータ・ブロックのどのフィールドも変更するべきではなく、そうでない場合、結果が予測不可能になる。
7.DFLTCC-GDHT機能が指定された場合、生成されたDHTの圧縮表現が、ハフマン・アルゴリズムに従って、3つの正しい完全なハフマン・コード・ツリーを表す。すなわち、不完全なハフマン・コード・ツリーは表されない。不完全なハフマン・コード・ツリーは、適切な機能するハフマン・ツリーを指定するためにハフマン・アルゴリズムによって必要とされる長さより大きい要素のコード長を指定するDHTの圧縮表現から導出される。
8.条件コード1が設定されてDFLTCC-CMPR機能が終了した場合、パラメータ・ブロックのサブバイト境界(SBB)フィールド381に格納された結果は、2進数000である。このシナリオを認識することは、デフレート変換呼び出し命令で使用するための出力バッファを割り当てるプログラムに関連することがある。
デフレート変換呼び出し命令の個別の実行で使用するために指定された入力バッファまたは出力バッファのサイズが比較的小さい(例えば、512バイト)場合、バッファされたデータ(例えば、最大32Kバイト)の複数のセグメントにわたる履歴が、少数のバイトを処理するデフレート変換呼び出し命令への入力として使用されてよい。
デフレート変換呼び出し命令の個別の実行で使用するために指定された入力バッファまたは出力バッファのサイズが比較的大きい(例えば、128Kバイト)場合、バッファされたデータ(例えば、最大32Kバイト)の以前のセグメントの履歴が、データの最初の32Kバイトを処理しているデフレート変換呼び出し命令への入力として使用されてよい。
(a)圧縮されていないデータのリテラル・バイト、
(b)3~258の長さを有する圧縮されていないデータのリテラル・バイトのシーケンス、
(c)ハフマン・エンコーディングを適用した後の(a)の圧縮されたエンコーディング、
(d)ハフマン・エンコーディングを適用した後の、単一の距離/長さの組によって表されると仮定する、(b)の圧縮されたエンコーディング、
(e)「ブロック終結」シンボルを付加して両方とも拡張された、(c)および(d)、ならびに
(f)動的ブロックである場合はエンコードされたDHTを含む、デフレート・ヘッダー(DEFLATE header)。
Claims (25)
- 処理ユニットと、
アクセラレータと、
外部ソースから受信されたソース・シンボルの第1の部分を格納するように構成されたメイン・ソース・バッファと、ここで、前記受信されたソース・シンボルのサイズが前記メイン・ソース・バッファの使用可能なサイズよりも大きい、
前記アクセラレータから受信された出力シンボルを格納するように構成されたメイン・ターゲット・バッファと、
オーバーフロー・ソース・バッファと
を含むメモリ・ブロックを備えているシステムであって、
前記処理ユニットまたは前記アクセラレータが、前記メイン・ソース・バッファ内に格納された前記第1の部分を前記オーバーフロー・ソース・バッファにコピーし、そして、前記アクセラレータが、前記オーバーフロー・ソース・バッファ内にコピーされた前記第1の部分と、前記外部ソースから受け取った前記ソース・シンボルの第2の部分とをフェッチし、前記フェッチされた第1の部分と前記第2の部分とを一緒に前記出力シンボルに復元又は圧縮する復元動作又は圧縮動作を実行するように構成され、ここで、前記第2の部分が、前記第1の部分に含まれていない前記ソース・シンボルの部分を含んでおり、
前記処理ユニットが、前記アクセラレータを呼び出して前記復元動作又は前記圧縮動作を実行するように構成されている、
前記システム。 - 前記フェッチされた第1の部分と前記第2の部分とを一緒に前記出力シンボルに復元する復元動作を実行するように構成されている、請求項1に記載のシステム。
- 前記処理ユニットが、ミリコードを介して前記アクセラレータの前記復元動作又は前記圧縮動作を制御するために操作可能である、請求項1に記載のシステム。
- 前記第1の部分が、前記メイン・ソース・バッファ中の使用可能な最後のビット空間に格納される、請求項1ないし請求項3のいずれか1項に記載のシステム。
- 前記ソース・シンボルが圧縮ヘッダーを含む、請求項1ないし請求項4のいずれか1項に記載のシステム。
- 前記メモリ・ブロックが、前記復元動作又は前記圧縮動作が中断されたか、又は一次停止された場合に、前記復元動作又は前記圧縮動作を再開するのに必要なパラメータをさらに含む、請求項1ないし請求項5のいずれか1項に記載のシステム。
- 処理ユニットと、
アクセラレータと、
外部ソースから受信されたソース・シンボルを格納するように構成されたメイン・ソース・バッファと、
前記アクセラレータから受信された出力シンボルの第1の部分を格納するように構成されたメイン・ターゲット・バッファと、ここで、前記受信された出力シンボルのサイズが前記メイン・ターゲット・バッファの使用可能なサイズよりも大きい、
オーバーフロー・ターゲット・バッファと
を含むメモリ・ブロックを備えているシステムであって、
前記オーバーフロー・ターゲット・バッファが、前記アクセラレータから受信された前記出力シンボルの第2の部分を格納するように構成され、ここで、前記第2の部分が、前記第1の部分に含まれていない前記出力シンボルの部分を含んでおり、
前記処理ユニットまたは前記アクセラレータが、前記メイン・ターゲット・バッファ内に格納された前記第1の部分を前記オーバーフロー・ターゲット・バッファにコピーし、そして、前記アクセラレータが、前記オーバーフロー・ターゲット・バッファ内にコピーされた前記第1の部分と、前記外部ソースから受け取った前記ソース・シンボルの第2の部分とをフェッチし、前記フェッチされた第1の部分と前記第2の部分とを一緒に前記出力シンボルに復元又は圧縮する復元動作又は圧縮動作を実行するように構成され、
前記処理ユニットが、前記アクセラレータを呼び出して前記復元動作又は前記圧縮動作を実行するように構成されている、
前記システム。 - 前記フェッチされた第1の部分と前記第2の部分とを一緒に前記出力シンボルに復元する復元動作を実行するように構成されている、請求項7に記載のシステム。
- 前記処理ユニットが、ミリコードを介して前記アクセラレータの前記復元動作又は前記圧縮動作を制御する、請求項7または請求項8のいずれか1項に記載のシステム。
- 前記メイン・ターゲット・バッファが、前記出力シンボルの前記第1の部分を前記メイン・ターゲット・バッファ中の使用可能な最後のビット空間に格納する、請求項7ないし請求項9のいずれか1項に記載のシステム。
- 圧縮モードで、前記ソース・シンボルが圧縮ヘッダーを含む、請求項7ないし請求項10のいずれか1項に記載のシステム。
- 前記メモリ・ブロックが、記復元動作又は前記圧縮動作が中断されたか、又は一次停止された場合に、前記復元動作又は前記圧縮動作を再開するのに必要なパラメータをさらに含む、請求項7ないし請求項11のいずれか1項に記載のシステム。
- コンピュータの情報処理による方法であって、
処理ユニットまたはアクセラレータによって、外部ソースから受信されたソース・シンボルの第1の部分をメイン・ソース・バッファに格納すること、ここで、前記受信されたソース・シンボルのサイズが前記メイン・ソース・バッファの使用可能なサイズよりも大きい、
前記第1の部分が、前記外部ソースから受信された前記ソース・シンボルの第2の部分を含んでないとの決定に基づいて、前記処理ユニットまたは前記アクセラレータによって、前記メイン・ソース・バッファ内に格納された前記第1の部分をオーバーフロー・ソース・バッファにコピーすること、
前記アクセラレータによって、前記オーバーフロー・ソース・バッファにコピーされた前記第1の部分、前記外部ソースから受け取った前記ソース・シンボルの第2の部分とをフェッチすること、
前記アクセラレータによって、前記フェッチされた第1の部分と前記第2の部分とを出力シンボルに一緒に前記出力シンボルに復元又は圧縮すること、
前記処理ユニットまたは前記アクセラレータによって、前記アクセラレータから受信された前記出力シンボルをメイン・ターゲット・バッファに格納すること
を含み、
ここで、前記ソース・シンボルの前記第2の部分が、前記第1の部分に含まれていない前記ソース・シンボルの部分を含み、前記アクセラレータがハードウェア・エンジンを含む、
前記方法。 - 前記処理ユニットが、ミリコードを介して前記アクセラレータの動作を制御する、請求項13に記載の方法。
- 前記メイン・ソース・バッファが、前記ソース・シンボルの前記第1の部分を前記メイン・ソース・バッファ中の使用可能な最後のビット空間に格納する、請求項13または請求項14のいずれか1項に記載の方法。
- 前記使用可能な最後のビット空間が、ページ・アクセス例外が発生する位置の直前の前記メイン・ソース・バッファ内の空間である、請求項15に記載の方法。
- 前記フェッチされた第1の部分と前記第2の部分とを一緒に前記出力シンボルに復元する復元動作を実行するように構成されている、請求項13ないし請求項16のいずれか1項に記載の方法。
- コンピュータの情報処理による方法であって、
処理ユニットまたはアクセラレータによって、外部ソースから受信されたソース・シンボルをメイン・ソース・バッファに格納すること、
前記処理ユニットまたは前記アクセラレータによって、前記アクセラレータから受信された出力シンボルの第1の部分をメイン・ターゲット・バッファに格納すること、ここで、前記受信された出力シンボルのサイズが前記メイン・ターゲット・バッファの使用可能なサイズよりも大きい、
前記出力シンボルの第2の部分を格納することに前記メイン・ターゲット・バッファを使用できないということの決定に基づいて、前記処理ユニットまたは前記アクセラレータによって、前記アクセラレータから受信された前記第2の部分をオーバーフロー・ターゲット・バッファに格納すること
前記アクセラレータによって、前記オーバーフロー・ターゲット・バッファに格納された前記第1の部分と前記第2の部分とを一緒に出力シンボルに復元動作又は圧縮動作を実行すること、
を含み、
ここで、前記ソース・シンボルの前記第2の部分が、前記第1の部分に含まれていない前記ソース・シンボルの部分を含み、前記アクセラレータがハードウェア・エンジンを含む、
前記方法。 - 前記処理ユニットが、ミリコードを介して前記アクセラレータの前記復元動作又は前記圧縮動作を制御する、請求項18に記載の方法。
- 前記メイン・ソース・バッファが、前記ソース・シンボルの前記第1の部分を前記メイン・ソース・バッファ中の使用可能な最後のビット空間に格納する、請求項18または請求項19のいずれか1項に記載の方法。
- 前記使用可能な最後のビット空間が、ページ・アクセス例外が発生する位置の直前の前記メイン・ソース・バッファ内の空間である、請求項20に記載の方法。
- 前記復元動作又は前記圧縮動作が中断されたか、又は一次停止された場合に、前記オーバーフロー・ターゲット・バッファに格納された前記出力シンボルの前記第2の部分を前記メイン・ターゲット・バッファに供給することによって、前記復元動作又は前記圧縮動作を再開することをさらに含む、請求項18ないし請求項21のいずれか1項に記載の方法。
- 請求項13ないし請求項22のいずれか1項に記載の方法をコンピュータに実行させる、コンピュータ・プログラム。
- 請求項23に記載の前記コンピュータ・プログラムをコンピュータ可読ストレージ媒体に格納した、ストレージ媒体。
- コンピュータ可読ストレージ媒体に格納されて、請求項1ないし請求項12のいずれか1項に記載の前記システムのいずれかの内部メモリに読み込まれるコンピュータ・プログラムであって、前記コンピュータ・プログラムが前記システムで実行された場合に請求項13ないし請求項22のいずれか1項に記載の方法をコンピュータに実行させる、前記コンピュータ・プログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/286,703 US10673460B1 (en) | 2019-02-27 | 2019-02-27 | Spilling temporary results for accommodation of memory boundaries |
US16/286,703 | 2019-02-27 | ||
PCT/EP2020/055105 WO2020174033A1 (en) | 2019-02-27 | 2020-02-27 | Spilling temporary results for accommodation of memory boundaries |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2022521465A JP2022521465A (ja) | 2022-04-08 |
JPWO2020174033A5 JPWO2020174033A5 (ja) | 2022-06-07 |
JP7481073B2 true JP7481073B2 (ja) | 2024-05-10 |
Family
ID=69726569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021545748A Active JP7481073B2 (ja) | 2019-02-27 | 2020-02-27 | メモリ境界の収容のためのオーバーフロー管理方法、システム、プログラム |
Country Status (9)
Country | Link |
---|---|
US (1) | US10673460B1 (ja) |
EP (1) | EP3931971A1 (ja) |
JP (1) | JP7481073B2 (ja) |
CN (1) | CN113474999A (ja) |
AU (1) | AU2020230012B2 (ja) |
CA (1) | CA3131257A1 (ja) |
IL (1) | IL284763B1 (ja) |
MX (1) | MX2021010029A (ja) |
WO (1) | WO2020174033A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10831497B2 (en) * | 2019-01-31 | 2020-11-10 | International Business Machines Corporation | Compression/decompression instruction specifying a history buffer to be used in the compression/decompression of data |
US11119928B2 (en) | 2019-02-27 | 2021-09-14 | International Business Machines Corporation | Instant quiescing of an accelerator |
CN112988673B (zh) | 2021-02-22 | 2023-02-28 | 山东英信计算机技术有限公司 | 一种处理解压缩过程中数据溢出的方法和设备 |
US11669331B2 (en) * | 2021-06-17 | 2023-06-06 | International Business Machines Corporation | Neural network processing assist instruction |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180293028A1 (en) | 2017-04-05 | 2018-10-11 | International Business Machines Corporation | In-place data compression with small working memory |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05189157A (ja) * | 1992-01-13 | 1993-07-30 | Toshiba Corp | ディスク型記憶装置 |
JPH10232838A (ja) * | 1996-11-05 | 1998-09-02 | Hitachi Ltd | ディスク記憶システム |
CA2434257A1 (en) | 2003-07-03 | 2005-01-03 | Ibm Canada Limited - Ibm Canada Limitee | Pairing of spills for parallel registers |
US9031826B2 (en) | 2006-03-30 | 2015-05-12 | International Business Machines Corporation | Method and apparatus for simulating operation in a data processing system |
US20100030927A1 (en) | 2008-07-29 | 2010-02-04 | Telefonaktiebolaget Lm Ericsson (Publ) | General purpose hardware acceleration via deirect memory access |
WO2012103359A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Hardware acceleration components for translating guest instructions to native instructions |
US8495258B2 (en) | 2011-05-24 | 2013-07-23 | International Business Machines Corporation | Implementing storage adapter performance optimization with hardware accelerators offloading firmware for buffer allocation and automatically DMA |
US8824569B2 (en) * | 2011-12-07 | 2014-09-02 | International Business Machines Corporation | High bandwidth decompression of variable length encoded data streams |
US9152673B2 (en) | 2012-12-11 | 2015-10-06 | Intel Corporation | Non-deterministic finite automaton (NFA) overflow recovery that ejects an end of scan set of active states into a buffer |
US9171007B2 (en) * | 2013-03-15 | 2015-10-27 | International Business Machines Corporation | Compression/decompression accelerator protocol for software/hardware integration |
CN105579959B (zh) | 2013-09-24 | 2019-06-07 | 渥太华大学 | 硬件加速器虚拟化 |
US9306596B2 (en) * | 2014-06-27 | 2016-04-05 | Intel Corporation | Hybrid CAM assisted deflate decompression accelerator |
US9419647B2 (en) * | 2014-12-16 | 2016-08-16 | Intel Corporation | Partitioned data compression using accelerator |
US9755731B2 (en) | 2015-01-10 | 2017-09-05 | Hughes Network Systems, Llc | Hardware TCP accelerator |
US10067893B2 (en) | 2015-04-03 | 2018-09-04 | Futurewei Technologies, Inc. | Acceleration framework with direct data transfer mechanism |
US9952865B2 (en) * | 2015-04-04 | 2018-04-24 | Texas Instruments Incorporated | Low energy accelerator processor architecture with short parallel instruction word and non-orthogonal register data file |
US9690488B2 (en) * | 2015-10-19 | 2017-06-27 | Intel Corporation | Data compression using accelerator with multiple search engines |
US10169073B2 (en) | 2015-12-20 | 2019-01-01 | Intel Corporation | Hardware accelerators and methods for stateful compression and decompression operations |
US10177782B2 (en) * | 2015-12-26 | 2019-01-08 | Intel Corporation | Hardware apparatuses and methods for data decompression |
US10055255B2 (en) | 2016-04-14 | 2018-08-21 | International Business Machines Corporation | Performance optimization of hardware accelerators |
US10241956B2 (en) | 2016-09-12 | 2019-03-26 | International Business Machines Corporation | Virtualizing coherent hardware accelerators |
US9715470B1 (en) | 2016-09-26 | 2017-07-25 | International Business Machines Corporation | Direct memory access between an accelerator and a processor using a coherency adapter |
US10691996B2 (en) | 2016-12-15 | 2020-06-23 | Beijing Deephi Intelligent Technology Co., Ltd. | Hardware accelerator for compressed LSTM |
US11178063B2 (en) | 2017-06-30 | 2021-11-16 | Intel Corporation | Remote hardware acceleration |
-
2019
- 2019-02-27 US US16/286,703 patent/US10673460B1/en active Active
-
2020
- 2020-02-27 AU AU2020230012A patent/AU2020230012B2/en active Active
- 2020-02-27 MX MX2021010029A patent/MX2021010029A/es unknown
- 2020-02-27 JP JP2021545748A patent/JP7481073B2/ja active Active
- 2020-02-27 EP EP20708064.9A patent/EP3931971A1/en active Pending
- 2020-02-27 CA CA3131257A patent/CA3131257A1/en active Pending
- 2020-02-27 IL IL284763A patent/IL284763B1/en unknown
- 2020-02-27 CN CN202080015708.8A patent/CN113474999A/zh active Pending
- 2020-02-27 WO PCT/EP2020/055105 patent/WO2020174033A1/en unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180293028A1 (en) | 2017-04-05 | 2018-10-11 | International Business Machines Corporation | In-place data compression with small working memory |
Also Published As
Publication number | Publication date |
---|---|
EP3931971A1 (en) | 2022-01-05 |
IL284763A (en) | 2021-08-31 |
CA3131257A1 (en) | 2020-09-03 |
WO2020174033A1 (en) | 2020-09-03 |
IL284763B1 (en) | 2024-09-01 |
JP2022521465A (ja) | 2022-04-08 |
CN113474999A (zh) | 2021-10-01 |
AU2020230012A1 (en) | 2021-06-03 |
US10673460B1 (en) | 2020-06-02 |
MX2021010029A (es) | 2022-06-16 |
AU2020230012B2 (en) | 2023-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7481073B2 (ja) | メモリ境界の収容のためのオーバーフロー管理方法、システム、プログラム | |
US10698854B1 (en) | Secure and efficient application data processing | |
JP7442529B2 (ja) | データの圧縮/解凍で使用する履歴バッファを指定する圧縮/解凍命令 | |
JP7442526B2 (ja) | 圧縮/解凍オペレーションを実行するための汎用プロセッサ命令 | |
US11119928B2 (en) | Instant quiescing of an accelerator | |
WO2020174300A1 (en) | Functional completion when retrying non-interruptible instruction in bi-modal execution environment | |
US11487547B2 (en) | Extended asynchronous data mover functions compatibility indication | |
JP7430195B2 (ja) | 複数のマシン世代にわたる複合体の機能の互換性の維持 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20220512 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220527 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220725 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230630 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230711 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231005 |
|
RD12 | Notification of acceptance of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7432 Effective date: 20231005 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20231227 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240119 |
|
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: 20240409 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20240411 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240423 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7481073 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |