【誤訳訂正書】
【提出日】平成26年12月2日(2014.12.2)
【誤訳訂正１】
【訂正対象書類名】明細書
【訂正対象項目名】００４５
【訂正方法】変更
【訂正の内容】
【００４５】
2013254484.tif 000001
【誤訳訂正２】
【訂正対象書類名】明細書
【訂正対象項目名】００５２
【訂正方法】変更
【訂正の内容】
【００５２】
例１：プログラムコードループ
2013254484.tif 000002
【誤訳訂正３】
【訂正対象書類名】明細書
【訂正対象項目名】００５７
【訂正方法】変更
【訂正の内容】
【００５７】
ｄｅｓｔ＝ＶｅｃｔｏｒＩｎｄｅｘ（Ｓｔａｒｔ，Ｉｎｃｒｅｍｅｎｔ）
ＶｅｃｔｏｒＩｎｄｅｘは、Ｓｔａｒｔによって指定されたスカラ開始値から増分によって単調に調整を行う値のベクトルを生成するための命令である。この命令は、指標調整が一定である場合にループ指標変数を初期化するために使用することができる。叙述又はゼロ化が適用された場合、最初のアクティブな要素が開始値を受け取り、次のアクティブな要素のみに増分が適用される。例えば、
2013254484.tif 000003
【誤訳訂正４】
【訂正対象書類名】明細書
【訂正対象項目名】００５８
【訂正方法】変更
【訂正の内容】
【００５８】
ｄｅｓｔ＝ＰｒｏｐａｇａｔｅＰｏｓｔＴ（ｄｅｓｔ，ｓｒｃ，ｐｒｅｄ）
ＰｒｏｐａｇａｔｅＰｏｓｔＴ命令は、ｐｒｅｄによって決定されるｓｒｃ内のアクティブな要素の値を、ｄｅｓｔの次の非アクティブな要素に伝播する。ｄｅｓｔでは、アクティブな要素、及び最初のアクティブな要素に先行するあらゆる非アクティブな要素はそのままである。この命令の目的は、条件的に計算された値を取ることであり、この条件的に計算された値を、同等のスカラーコード内に生じる次のループ反復に伝播する。例えば、
2013254484.tif 000004
【誤訳訂正５】
【訂正対象書類名】明細書
【訂正対象項目名】００５９
【訂正方法】変更
【訂正の内容】
【００５９】
ｄｅｓｔ＝ＰｒｏｐａｇａｔｅＰｒｉｏｒＦ（ｓｒｃ，ｐｒｅｄ）
ＰｒｏｐａｇａｔｅＰｒｉｏｒＦ命令は、ｐｒｅｄによって決定されるｓｒｃの非アクティブな要素の値を、ｄｅｓｔ内の次のアクティブな要素に伝播する。非アクティブな要素はｓｒｃからｄｅｓｔにコピーされる。述語の最初の要素がアクティブである場合、ｓｒｃの最後の要素がその位置に伝播される。例えば、
2013254484.tif 000005
【誤訳訂正６】
【訂正対象書類名】明細書
【訂正対象項目名】００６２
【訂正方法】変更
【訂正の内容】
【００６２】
一例として、上記の例１のループにおける依存について検討する。このループでは、条件節の真の反復と偽の反復の間の遷移が、並列化の中断を必要とするループ伝搬依存を表す。これは、以下の命令を使用して処理することができる。
2013254484.tif 000006
【誤訳訂正７】
【訂正対象書類名】明細書
【訂正対象項目名】００６４
【訂正方法】変更
【訂正の内容】
【００６４】
ｄｅｓｔ＝ＧｅｎｅｒａｔｅＰｒｅｄｉｃａｔｅｓ（Ｐｒｅｄ，ＤＩＶ）
ＧｅｎｅｒａｔｅＰｒｅｄｉｃａｔｅｓは、依存指標ベクトル、ＤＩＶを取り、ｐｒｅｄによって示される処理された前のグループを所与として、安全に並列に処理できる次の要素グループに対応する述語を生成する。ｐｒｅｄの要素がどれも非アクティブな場合、安全に並列に処理できる最初の要素グループに対して述語が生成される。Ｐｒｅｄが、ベクトルの最後の要素が処理されたことを示す場合、この命令は、要素を処理すべきでないことを示す非アクティブな述語の結果ベクトルを生成し、ＺＦフラグが設定される。結果の最後の要素がアクティブであることを示すためには、ＣＦフラグを設定する。第１の例の値を使用すると、ＧｅｎｅｒａｔｅＰｒｅｄｉｃａｔｅｓ（述語生成）は以下のように動作する。
2013254484.tif 000007
【誤訳訂正８】
【訂正対象書類名】明細書
【訂正対象項目名】００７２
【訂正方法】変更
【訂正の内容】
【００７２】
例２Ａ：プログラムコードループ１
2013254484.tif 000008
【誤訳訂正９】
【訂正対象書類名】明細書
【訂正対象項目名】００７３
【訂正方法】変更
【訂正の内容】
【００７３】
例２Ｂ：プログラムコードループ２
2013254484.tif 000009
【誤訳訂正１０】
【訂正対象書類名】明細書
【訂正対象項目名】００７７
【訂正方法】変更
【訂正の内容】
【００７７】
ｄｅｓｔ＝Ｒｅｍａｉｎｉｎｇ（Ｐｒｅｄ）
Ｒｅｍａｉｎｉｎｇ命令は、述語のベクトル、Ｐｒｅｄ、を評価し、ベクトル内の残りの要素を計算する。これは、最後のアクティブな述語に続く非アクティブな述語の組に対応する。Ｐｒｅｄ内にアクティブな要素が存在しない場合、全てのアクティブな述語のベクトルが戻される。同様に、Ｐｒｅｄが全てのアクティブな述語のベクトルである場合、非アクティブな述語のベクトルが戻される。例えば、
2013254484.tif 000010
【誤訳訂正１１】
【訂正対象書類名】明細書
【訂正対象項目名】００８３
【訂正方法】変更
【訂正の内容】
【００８３】
例３：プログラムコードループ３
2013254484.tif 000011
【誤訳訂正１２】
【訂正対象書類名】明細書
【訂正対象項目名】００８６
【訂正方法】変更
【訂正の内容】
【００８６】
上述したＣｏｎｄｉｔｉｏｎａｌＳｔｏｐ命令と同様に、依存先のデータを生成する反復に対応する要素位置を、このデータに依存する反復に対応する要素位置の宛先ベクトルに記憶することができる。データ依存が存在しない場合、依存のない反復に対応する要素位置の宛先ベクトルにゼロを記憶することができる。例えば、
2013254484.tif 000012
【誤訳訂正１３】
【訂正対象書類名】明細書
【訂正対象項目名】００８９
【訂正方法】変更
【訂正の内容】
【００８９】
上記の例のメモリアクセスは、３つのメモリハザードを有する。しかしながら、説明する実施形態では、関連するメモリ動作を安全に処理するために２つの区分しか必要としなくてよい。より具体的には、要素位置３における最初のハザードを処理することにより、これよりも小さな又はこれに等しい番号の要素位置における後続の依存が実際的に無意味なものとなる。例えば、
2013254484.tif 000013
【誤訳訂正１４】
【訂正対象書類名】明細書
【訂正対象項目名】００９０
【訂正方法】変更
【訂正の内容】
【００９０】
以下、説明する実施形態で使用する、ベクトルをどこで分割すべきかを判断するためにＤＩＶを分析するための処理を疑似コードで示す。いくつかの実施形態では、プロセッサ１０２のベクトル実行ユニット２０４が、この計算を並列に行うことができる。例えば、
2013254484.tif 000014
【誤訳訂正１５】
【訂正対象書類名】明細書
【訂正対象項目名】００９３
【訂正方法】変更
【訂正の内容】
【００９３】
いくつかの実施形態では、以下に示すようなＶｅｃｔｏｒＭａｘ（Ａ，Ｂ）命令を使用してＤＩＶを組み合わせることができる。
2013254484.tif 000015
【誤訳訂正１６】
【訂正対象書類名】明細書
【訂正対象項目名】００９８
【訂正方法】変更
【訂正の内容】
【００９８】
例４：プログラムコードループ４
2013254484.tif 000016
【誤訳訂正１７】
【訂正対象書類名】明細書
【訂正対象項目名】０１０３
【訂正方法】変更
【訂正の内容】
【０１０３】
例５
2013254484.tif 000017
【誤訳訂正１８】
【訂正対象書類名】明細書
【訂正対象項目名】０１０５
【訂正方法】変更
【訂正の内容】
【０１０５】
例６
2013254484.tif 000018
【誤訳訂正１９】
【訂正対象書類名】特許請求の範囲
【訂正対象項目名】全文
【訂正方法】変更
【訂正の内容】
【特許請求の範囲】
【請求項１】
述語生成命令に続く最初の条件付き分岐命令を検出するステップを含み、前記最初の条件付き分岐命令は、分岐成立時に後方に分岐するためのものであり、前記述語生成命令は、実行時に、依存ベクトルに依存する述語ベクトルを生成するためのものであり、前記依存ベクトルの各要素は、ベクトル命令の要素間にデータ依存が存在するかどうかを示す指標を含み、
前記最初の条件付き分岐命令の予測精度の指示を受け取るステップと、
前記予測精度の指示に基づいて前記最初の条件付き分岐命令の予測精度が閾値を満たさないと判断したことに応答して、前記述語生成命令が依存する前記依存ベクトルが利用可能になるまで前記最初の条件付き分岐命令の予測を抑制するステップと、
をさらに含むことを特徴とする方法。
【請求項２】
前記依存ベクトルが利用可能であることを検出したことに応答して、前記依存ベクトル内に示されるデータ依存情報を使用して前記最初の条件付き分岐命令を予測するステップをさらに含む、
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記述語生成命令が、マクロスカラのＧｅｎｅｒａｔｅＰｒｅｄｉｃａｔｅｓ命令である、
ことを特徴とする請求項１に記載の方法。
【請求項４】
前記最初の条件付き分岐命令の予測を抑制するステップが、前記最初の条件付き分岐命令を予測して該予測を廃棄するステップを含む、
ことを特徴とする請求項１に記載の方法。
【請求項５】
前記最初の条件付き分岐命令の予測を抑制するステップが、前記依存ベクトルが利用可能になるまで新たな命令が実行されるのを防ぐステップを含む、
ことを特徴とする請求項１に記載の方法。
【請求項６】
前記最初の条件付き分岐命令の予測を抑制するステップが、前記最初の条件付き分岐命令の実行によりプログラム命令の実行を制御するフローが変化しない旨の以前に生成された予測を廃棄するステップを含む、
ことを特徴とする請求項１に記載の方法。
【請求項７】
前記最初の条件付き分岐命令の各実行に応答してプログラム命令の実行を制御するフローが変化する回数を決定するために前記依存ベクトルが利用可能になった時に、該依存ベクトルを使用するステップをさらに含む、
ことを特徴とする請求項１に記載の方法。
【請求項８】
前記最初の条件付き分岐命令の予測を抑制するステップが、前記依存ベクトルが利用可能になるまで新たな命令が実行パイプライン内にフェッチされるのを防ぐステップを含む、
ことを特徴とする請求項１に記載の方法。
【請求項９】
請求項１〜８のいずれかに記載の方法を実行するための１又はそれ以上の手段を備える、
ことを特徴とするプロセッサ。
【請求項１０】
実行命令を選択的にフェッチするように構成されたフェッチユニットと、
前記フェッチユニットに結合されて、述語生成命令に続く最初の条件付き分岐命令を検出するように構成された予測ユニットを備え、前記最初の条件付き分岐命令は、分岐成立時に後方に分岐するためのものであり、前記述語生成命令は、実行時に、依存ベクトルに依存する述語ベクトルを生成するためのものであり、前記依存ベクトルの各要素は、ベクトル命令の要素間にデータ依存が存在するかどうかを示す指標を含み、
前記予測ユニットは、前記最初の条件付き分岐命令の予測精度の指示を生成するように構成されるとともに、
前記最初の条件付き分岐命令の予測精度が閾値を満たさないと判断したことに応答して、前記述語生成命令が依存する前記依存ベクトルが利用可能になるまで前記最初の条件付き分岐命令の予測を抑制するように構成される、
ことを特徴とするプロセッサ。
【請求項１１】
前記予測ユニットが、前記依存ベクトル内に示されるデータ依存情報を受け取ったことに応答して、前記最初の条件付き分岐命令を予測するように構成される、
ことを特徴とする請求項１０に記載のプロセッサ。
【請求項１２】
前記フェッチユニットが、前記依存ベクトルが利用可能になるのを待っている間にストールするように構成される、
ことを特徴とする請求項１０に記載のプロセッサ。
【請求項１３】
前記フェッチユニットに結合されて、前記依存ベクトルが利用可能になるのを待っている間に文脈を切り換えるように構成された実行ユニットをさらに備える、
ことを特徴とする請求項１０に記載のプロセッサ。
【請求項１４】
前記予測ユニットが、前記最初の条件付き分岐命令の予測を生成するように構成されるとともに、前記最初の条件付き分岐命令の予測を抑制するために、前記最初の条件付き分岐命令の予測精度が前記閾値を満たさないと判断したことに応答して、前記最初の条件付き分岐命令の予測を廃棄するように構成される、
ことを特徴とする請求項１０に記載のプロセッサ。
【請求項１５】
前記最初の条件付き分岐命令が、命令ループの境界を定め、前記依存ベクトルが、前記命令ループが実行される回数を示す、
ことを特徴とする請求項１０に記載のプロセッサ。
【請求項１６】
前記予測ユニットが、前記依存ベクトルが利用可能であることを検出したことに応答して、ループフェッチ指示を与えるように構成され、前記フェッチユニットが、前記ループフェッチ指示を受け取ったことに応答して、前記命令ループの各反復のための命令をフェッチするように構成される、
ことを特徴とする請求項１５に記載のプロセッサ。
【請求項１７】
前記最初の条件付き分岐命令の予測を抑制するために、前記予測ユニットが、前記依存ベクトルが利用可能になるまで新たな命令の実行を防ぐようにさらに構成される、
ことを特徴とする請求項１０に記載のプロセッサ。
【請求項１８】
前記述語生成命令が、マクロスカラのＧｅｎｅｒａｔｅＰｒｅｄｉｃａｔｅｓ命令である、
ことを特徴とする請求項１０に記載のプロセッサ。
【請求項１９】
プログラム命令を記憶するように構成されたメモリと、
前記メモリに結合された、請求項１０から１８のいずれかに記載のプロセッサの１又はそれ以上のインスタンスと、
を備えることを特徴とするシステム。