【誤訳訂正書】
【提出日】平成27年6月2日(2015.6.2)
【誤訳訂正１】
【訂正対象書類名】特許請求の範囲
【訂正対象項目名】全文
【訂正方法】変更
【訂正の内容】
【特許請求の範囲】
【請求項１】
ゼロマスク・ビフォー・末尾ゼロ（ＫＺＢＴＺ）命令を復号化する復号化ロジックにおいて、前記ＫＺＢＴＺ命令が第１のソース書き込みマスク・オペランドおよびデスティネーション書き込みマスク・オペランドを示す復号化ロジックと、
前記第１のソース書き込みマスク・オペランドにおいて末尾の最下位ゼロビット・ポジションを検出し、前記デスティネーション書き込みマスク・オペランドを、前記第１のソース書き込みマスク・オペランドの値を有するようにセットするが、前記第１のソース書き込みマスク・オペランドにおける前記末尾の最下位ゼロビット・ポジションよりも最上位ビット・ポジションに近い全てのビット・ポジションはゼロにセットされた状態になるように、前記復号化されたＫＺＢＴＺ命令を実行する実行ロジックとを備え、
前記ＫＺＢＴＺ命令がさらに、第２のソース書き込みマスク・オペランドを示し、前記末尾の最下位ゼロビット・ポジションが、前記第１のソース書き込みマスク・オペランドのビット・ポジションがゼロにセットされており、かつ、前記第２のソース書き込みマスク・オペランドの対応するビット・ポジションが１にセットされているという条件を満たすビット・ポジションのうち、最下位のビット・ポジションである、
装置。
【請求項２】
前記書き込みマスク・オペランドが専用書き込みマスク・レジスタである、請求項１に記載の装置。
【請求項３】
前記専用書き込みマスク・レジスタのサイズが８または１６ビットである、請求項２に記載の装置。
【請求項４】
前記書き込みマスク・オペランドが汎用レジスタである、請求項１に記載の装置。
【請求項５】
前記実行ロジックが、前記第１のソース書き込みマスク・オペランドの各ビット・ポジションを最下位から最上位まで直列に評価する、請求項１から４のいずれか１項に記載の装置。
【請求項６】
前記ビット・ポジションの全てが何時評価完了したか判定するために、カウンタが前記実行ロジックで使用される、請求項５に記載の装置。
【請求項７】
コンピュータ・プロセッサでゼロマスク・ビフォー・末尾ゼロ（ＫＺＢＴＺ）命令を実行する方法であって、前記ＫＺＢＴＺ命令が、第１のソース書き込みマスク・オペランドおよびデスティネーション書き込みマスク・オペランドを示し、
前記第１のソース書き込みマスク・オペランドにおいて末尾の最下位ゼロビット・ポジションを検出するステップと、
前記デスティネーション書き込みマスク・オペランドを、前記第１のソース書き込みマスク・オペランドの値を有するようにセットするが、前記第１のソース書き込みマスク・オペランドにおける前記末尾の最下位ゼロビット・ポジションよりも最上位ビット・ポジションに近い全てのビット・ポジションはゼロにセットされた状態になるようにするステップとを含み、
前記ＫＺＢＴＺ命令がさらに、第２のソース書き込みマスク・オペランドを示し、前記末尾の最下位ゼロビット・ポジションが、前記第１のソース書き込みマスク・オペランドのビット・ポジションがゼロにセットされており、かつ、前記第２のソース書き込みマスク・オペランドの対応するビット・ポジションが１にセットされているという条件を満たすビット・ポジションのうち、最下位のビット・ポジションである、方法。
【請求項８】
前記書き込みマスク・オペランドが専用書き込みマスク・レジスタである、請求項７に記載の方法。
【請求項９】
前記専用書き込みマスク・レジスタのサイズが８または１６ビットである、請求項８に記載の方法。
【請求項１０】
前記書き込みマスク・オペランドが汎用レジスタである、請求項７に記載の方法。
【請求項１１】
前記第１のソース書き込みマスク・オペランドの各ビット・ポジションが、最下位から最上位まで直列に評価される、請求項７から１０のいずれか１項に記載の方法。
【請求項１２】
前記ビット・ポジションの全てが何時評価完了したかを、カウンタに基づいて判定する、請求項１１に記載の方法。
【請求項１３】
ゼロマスク・ビフォー・末尾ゼロ（ＫＺＢＴＺ）命令をプロセッサに実行させるコードを含んだ、プログラムであって、前記ＫＺＢＴＺ命令が、第１のソース書き込みマスク・オペランドおよびデスティネーション書き込みマスク・オペランドを示し、
前記第１のソース書き込みマスク・オペランドにおいて末尾の最下位ゼロビット・ポジションを検出するステップと、
前記デスティネーション書き込みマスク・オペランドを、前記第１のソース書き込みマスク・オペランドの値を有するようにセットするが、前記第１のソース書き込みマスク・オペランドにおける前記末尾の最下位ゼロビット・ポジションよりも最上位ビット・ポジションに近い全てのビット・ポジションはゼロにセットされた状態になるようにするステップとを前記プロセッサに実行させ、
前記ＫＺＢＴＺ命令がさらに、第２のソース書き込みマスク・オペランドを示し、前記末尾の最下位ゼロビット・ポジションが、前記第１のソース書き込みマスク・オペランドのビット・ポジションがゼロにセットされており、かつ、前記第２のソース書き込みマスク・オペランドの対応するビット・ポジションが１にセットされているという条件を満たすビット・ポジションのうち、最下位のビット・ポジションである、プログラム。
【請求項１４】
前記書き込みマスク・オペランドが専用書き込みマスク・レジスタである、請求項１３に記載のプログラム。
【請求項１５】
前記専用書き込みマスク・レジスタのサイズが８または１６ビットである、請求項１４に記載のプログラム。
【請求項１６】
前記書き込みマスク・オペランドが汎用レジスタである、請求項１３に記載のプログラム。
【請求項１７】
前記第１のソース書き込みマスク・オペランドの各ビット・ポジションが、最下位から最上位まで直列に評価される、請求項１３から１６のいずれか１項に記載のプログラム。
【誤訳訂正２】
【訂正対象書類名】明細書
【訂正対象項目名】００２３
【訂正方法】変更
【訂正の内容】
【００２３】
上記の「Compute_Mask_of_Non_Conflicting_Elements」は自明ではない操作である。ｖｃｏｎｆｌｉｃｔと併用した既存の命令は全て、１つの問題を共有する。つまり、２つのインデックス・セットの範囲内で起こり得るデータの依存関係を全て検出するには、ｖｃｏｎｆｌｉｃｔの複数のインスタンスを実行し、その比較結果を追加操作しなければならない。具体的には、上記の例において、リード・アフター・ライト（ＲＡＷ）依存性を検出するために、集約インデックス・ベクトルと分散インデックス・ベクトルとの重複インデックスをどのように検出しなければならないのか示している。しかしながら、この提案した、リード・アフター・ライト（ＲＡＷ）依存性を守らせ、いくつかの要素の処理を遅延させる解決策は、ライト・アフター・ライト（ＷＡＷ）依存性またはライト・アフター・リード（ＷＡＲ）依存性の違反を引き起こす可能性がある。例えば、Ｂ［０］＝０、Ｂ［１］＝１、Ｂ［２］＝２、Ｃ［０］＝１、Ｃ［１］＝３、およびＣ［２］＝３であると仮定する。上記の例と同様に、第２のイタレーションは第１のイタレーションに対してＲＡＷ依存性を有するので、その第２のイタレーションは遅延するはずである。第３のイタレーションにはＲＡＷ依存性が無く、したがってその第３のイタレーションを第１のイタレーションと同時に実行する選択肢が存在する可能性がある。しかしながら、それが行われた場合、Ａ［Ｃ［２］］（＝Ａ［３］）への書き込みがＡ［Ｃ［１］］（＝Ａ［３］）への書き込みの前に生じ、ＷＡＷ依存性を違反する。
【誤訳訂正３】
【訂正対象書類名】明細書
【訂正対象項目名】００３９
【訂正方法】変更
【訂正の内容】
【００３９】
ＫＺＢＴＺの使用例について以下で説明する。この例では、上記に対する解決策は、先のイタレーションの前に後のイタレーションの実行を許可しないことである。したがってベクトル／ＳＩＭＤの実行は、最初のＲＡＷ依存時に停止しなければならない。入力マスクｋ２が、残りのＲＡＷ依存性を持たないまだ計算する必要がある要素のためにセットされたビットを有するマスクであり、入力マスクｋ３がまだ計算する必要がある全ての要素を示すマスクである場合、ベクトル／ＳＩＭＤの実行では、ＲＡＷ競合を有する最初の要素を検出し、それより後の要素のための全てのビットをゼロにする。これにより、このようなベクトル化ループのための以下のアルゴリズムが導かれる。
for (i=0; i<N; i+=SIMD_WIDTH) {
gather_indices = vload (&B[i]);
scatter_indices = vload (&C[i]);
comparisons = vconflict (gather_indices, scatter_indices);
elements_left_mask = all_ones;
do{
no_raw_mask = Compute_Mask_of_Elements_w/o_RAW_Dependence (comparisons, elements_left_mask);
stop_at_first_conf_mask = kzbtz (no_raw_mask, elements_left_mask);
Gather_Compute_Scatter (gather_indices, scatter_indices, stop_at_first_conf_mask);
elements_left_mask ^= stop_at_first_conf_mask;
} while (elements_left_mask != 0);
}