【誤訳訂正書】
【提出日】平成19年12月11日(2007.12.11)
【誤訳訂正１】
【訂正対象書類名】特許請求の範囲
【訂正対象項目名】全文
【訂正方法】変更
【訂正の内容】
【特許請求の範囲】
【請求項１】
１つの方法であって、１つのプロセッサにおける１つの命令を実行して、前記プロセッサのために１つのロックを取得するのに役立つことと、前記ロックが利用可能でない場合、前記プロセッサにおける前記命令をスリープさせることとを含み、前記命令は、１つのイベントが生じるまでスリープし、
前記命令は、前記プロセッサによる前記ロック取得のための１つの比較および交換動作を行う１つの比較および交換命令を備え、前記比較および交換動作は、１つのアトミック比較および交換動作を含み、前記比較および交換動作がスリープ状態である間、前記プロセッサは、他の命令の実行を継続し、前記比較および交換動作が起動されてリタイアされるまで、前記他の命令はリタイアされないことを特徴とする方法。
【請求項２】
請求項１に記載の前記方法であって、前記ロックに対応する１つのメモリアドレスを監視することをさらに備え、前記ロックは、１つのメモリの１つの共有メモリ空間に対するプロセッサアクセスを制御するためのものであることを特徴とする方法。
【請求項３】
請求項１に記載の前記方法であって、前記イベントが生じたかを決定するための１つのロック値を有する１つの宛先を監視することであって、前記宛先の前記監視は、以下の、前記ロック値における１つの変更と、前記ロック値を変更する試行とのうち、１つまたはそれ以上を観測することを含み、前記宛先は、１つのレジスタまたは１つのメモリ位置を含む、監視と、前記イベントの前記発生を検出することと、前記イベントが発生した場合、前記命令を起動することであって、前記イベントは、以下の、前記ロック値が変化した場合は前記ロックが利用可能になったことと、前記ロック値を変更する前記試行が発生した場合は前記ロックが潜在的に利用可能になったこととのうち、１つまたはそれ以上を備る、起動と、前記プロセッサが前記利用可能なロックを取得することとをさらに含むことを特徴とする方法。
【請求項４】
請求項１に記載の前記方法であって、前記命令の前記スリープ化は、以下の、複数の命令をロードすることと、前記複数の命令を実行することとのうち、１つまたそれ以上を含む複数の他のタスクを行うために、前記プロセッサのための複数のリソースを用いることを放棄することを含むことを特徴とする方法。
【請求項５】
請求項４に記載の前記方法であって、前記複数のリソースの前記放棄は、
１つのレジスタプール内の複数のレジスタを放棄することと、
１つの命令キュー内の複数の命令キュー入力を放棄することと、
１つの記憶バッファ内の複数の記憶バッファ入力を放棄することと、
１つの再順序付けバッファ内の複数の再順序付けバッファ入力を放棄することとを含むことを特徴とする方法。
【請求項６】
１つのプロセッサであって、１つの命令を実行して、前記プロセッサのために１つのロックを取得することが可能な１つの実行部と、前記プロセッサが前記ロックを取得できなかった場合、前記命令をスリープさせる１つのスリープ‐起動機構とを備え、前記命令は、１つのイベントが生じるまでスリープし、
前記命令は、前記プロセッサによる前記ロック取得のための１つの比較および交換動作を行う１つの比較および交換命令を備え、前記比較および交換動作は、１つのアトミック比較および交換動作を含み、前記比較および交換動作がスリープ状態である間、前記プロセッサは、他の命令の実行を継続し、前記比較および交換動作が起動されてリタイアされるまで、前記他の命令はリタイアされないことを特徴とするプロセッサ。
【請求項７】
請求項６に記載の前記プロセッサであって、前記イベントが生じたかを決定するための１つのロック値を有する１つの宛先を監視する監視論理であって、前記宛先の前記監視は、以下の、前記ロック値における１つの変更と、前記ロック値を変更する１つの試行とのうち、１つまたはそれ以上を観測することを含み、前記宛先は、１つの専用レジスタまたは１つのメモリ位置を含む、監視論理と、前記イベントの前記発生を検出する検出論理と、前記イベントが発生した場合、前記命令を起動する前記スリープ‐起動機構であって、前記イベントは、以下の、前記ロック値が変化した場合は前記ロックが利用可能になったことと、前記ロック値を変更する前記試行が発生した場合は前記ロックが潜在的に利用可能になったこととのうち、１つまたはそれ以上を備える、前記スリープ‐起動機構とをさらに備えることを特徴とするプロセッサ。
【請求項８】
請求項６に記載の前記プロセッサであって、前記命令の前記スリープ化は、以下の、複数の命令をロードすることと、前記複数の命令を実行することとのうち、１つまたそれ以上を含む複数の他のタスクを行うために、前記プロセッサのための複数のリソースを用いることを放棄することを含むことを特徴とするプロセッサ。
【請求項９】
請求項８に記載の前記プロセッサであって、前記複数のリソースの前記放棄は、
１つのレジスタプール内の複数のレジスタを放棄することと、
１つの命令キュー内の複数の命令キュー入力を放棄することと、
１つの記憶バッファ内の複数の記憶バッファ入力を放棄することと、
１つの再順序付けバッファ内の複数の再順序付けバッファ入力を放棄することとを含むことを特徴とするプロセッサ。
【請求項１０】
請求項６に記載の前記プロセッサであって、前記プロセッサを１つのメモリに結合させる１つのバスインターフェイスをさらに備え、前記バスインターフェイスは、前記専用のレジスタをさらに備えることを特徴とするプロセッサ。
【請求項１１】
請求項６に記載の前記プロセッサであって、前記比較および交換命令を含む複数の命令を有する１つの命令の組をさらに備えることを特徴とするプロセッサ。
【請求項１２】
１つのシステムであって、１つの第１のプロセッサを含む複数のプロセッサであって、１つの命令を実行して、前記第１のプロセッサのために１つのロックを取得することが可能な１つの実行部と、前記第１のプロセッサが前記ロックを取得できなかった場合、前記命令をスリープさせる１つのスリープ‐起動機構であって、前記命令は、１つのイベントが生じるまでスリープする、スリープ‐起動機構とを有する、第１のプロセッサと、前記複数のプロセッサに結合され、前記複数のプロセッサによって共有された、１つのメモリ空間を有する１つのメモリと、前記メモリおよび前記複数のプロセッサに結合され、前記メモリ空間に対するアクセスを制御する前記ロックを有する１つのロック記憶位置とを備え、
前記命令は、前記プロセッサによる前記ロック取得のための１つの比較および交換動作を行う１つの比較および交換命令を備え、前記比較および交換動作は、１つのアトミック比較および交換動作を含み、前記比較および交換動作がスリープ状態である間、前記プロセッサは、他の命令の実行を継続し、前記比較および交換動作が起動されてリタイアされるまで、前記他の命令はリタイアされないことを特徴とするシステム。
【請求項１３】
請求項１２に記載の前記システムであって、前記イベントが生じたかを決定するための１つのロック値を有する１つの宛先を監視する監視論理であって、前記宛先の前記監視は、以下の、前記ロック値における１つの変更と、前記ロック値を変更する１つの試行とのうち、１つまたはそれ以上を観測することを含み、前記宛先は、１つの専用レジスタまたは１つのメモリ位置を含む、監視論理と、前記イベントの前記発生を検出する検出論理と、前記イベントが発生した場合、前記命令を起動する前記スリープ‐起動機構であって、前記イベントは、以下の、前記ロック値が変化した場合は前記ロックが利用可能になったことと、前記ロック値を変更する前記試行が発生した場合は前記ロックが潜在的に利用可能になったこととのうち、１つまたはそれ以上を備える、前記スリープ‐起動機構とをさらに備えることを特徴とするシステム。
【請求項１４】
請求項１２に記載の前記システムであって、前記命令の前記スリープ化は、以下の、複数の命令をロードすることと、前記複数の命令を実行することとのうち、１つまたそれ以上を含む複数の他のタスクを行うために、前記第１のプロセッサのための複数のリソースを用いることを放棄することを含むことを特徴とするシステム。
【請求項１５】
請求項１４に記載の前記システムであって、前記複数のリソースの前記放棄は、
１つのレジスタプール内の複数のレジスタを放棄することと、
１つの命令キュー内の複数の命令キュー入力を放棄することと、
１つの記憶バッファ内の複数の記憶バッファ入力を放棄することと、
１つの再順序付けバッファ内の複数の再順序付けバッファ入力を放棄することとを含むことを特徴とするシステム。
【請求項１６】
複数の命令の複数の組を表すデータを記憶する１つの機械読み取り可能媒体であって、複数の命令の前記複数の組は、機械によって実行される場合、以下の、１つのプロセッサにおける１つの命令を実行して、前記プロセッサのために１つのロックを取得するのに役立つことと、前記ロックが利用可能でない場合、前記プロセッサにおける前記命令をスリープさせることとを含み、前記命令は、１つのイベントが生じるまでスリープすることと、前記プロセッサによる前記ロック取得のための１つの比較および交換動作を行う１つの比較および交換命令を備えることと、を前記機械に対して行わせ、前記比較および交換動作は、１つのアトミック比較および交換動作を含み、前記比較および交換動作がスリープ状態である間、前記プロセッサは、他の命令の実行を継続し、前記比較および交換動作が起動されてリタイアされるまで、前記他の命令はリタイアされないことを特徴とする媒体。
【請求項１７】
請求項１６に記載の前記機械読み取り可能媒体であって、複数の命令の前記複数の組は、前記機械によって実行されると、前記ロックに対応する１つのメモリアドレスを監視することを前記機械に対してさらに行わせ、前記ロックは、１つのメモリの１つの共有メモリ空間に対するプロセッサアクセスを制御するためのものであることを特徴とする媒体。
【請求項１８】
請求項１６に記載の前記機械読み取り可能媒体であって、複数の命令の前記複数の組は、前記機械によって実行されると、前記イベントが生じたかを決定するための１つのロック値を有する１つの宛先を監視することであって、前記宛先の前記監視は、以下の、前記ロック値における１つの変更と、前記ロック値を変更する試行とのうち、１つまたはそれ以上を観測することを含み、前記宛先は、１つのレジスタまたは１つのメモリ位置を含む、監視と、前記イベントの前記発生を検出することと、前記イベントが発生した場合、前記命令を起動することであって、前記イベントは、以下の、前記ロック値が変化した場合は前記ロックが利用可能になったことと、前記ロック値を変更する前記試行が発生した場合は前記ロックが潜在的に利用可能になったこととのうち、１つまたはそれ以上を備える、起動と、前記プロセッサのために前記利用可能なロックを取得することとを前記機械に対してさらに行わせることを特徴とする媒体。
【請求項１９】
請求項１６に記載の前記機械読み取り可能媒体であって、前記命令の前記スリープ化は、以下の、複数の命令をロードすることと、前記複数の命令を実行することとのうち、１つまたそれ以上を含む複数の他のタスクを行うために、前記プロセッサのための複数のリソースを用いることを放棄することを含むことを特徴とする媒体。
【請求項２０】
請求項１９に記載の前記機械読み取り可能媒体であって、前記複数のリソースの前記放棄は、
１つのレジスタプール内の複数のレジスタを放棄することと、
１つの命令キュー内の複数の命令キュー入力を放棄することと、
１つの記憶バッファ内の複数の記憶バッファ入力を放棄することと、
１つの再順序付けバッファ内の複数の再順序付けバッファ入力を放棄することとを含むことを特徴とする媒体。
【誤訳訂正２】
【訂正対象書類名】明細書
【訂正対象項目名】００３３
【訂正方法】変更
【訂正の内容】
【００３３】
一実施形態において、ＣＭＰＸＣＨＧ＿ＳＷ命令６１０〜６１２を１つのスリープ状態にすることは、ＣＭＰＸＣＨＧ＿ＳＷ命令６１０〜６１２はアイドルであり、それを起動またはトリガする１つのイベントを待っていることを示す。ＣＭＰＸＣＨＧ＿ＳＷ命令６１０〜６１２がアイドルまたはスリープ状態である間、ＣＭＰＸＣＨＧ＿ＳＷ命令６１０〜６１２が起動、実行、およびリタイアされるまで、プロセッサ６０６〜６０８は、複数の他の命令６２８〜６３０の実行などといった複数の他のタスクの実行を継続していてもよい。但し、命令６２８〜６３０は、リタイアされることはないであろう。別の言い方をすれば、任意の後続のロード（例えば、命令６２８または６３０）はその値を得て、複数の所定のタスクおよび計算を行うことができるが、プロセッサ６０４〜６０６において１つの一時的または投機的な状態で待機しうる。再順序バッファ（ＲＯＢ）からの任意の命令を順不同で実行できるが、最も古いＣＭＰＸＣＨＧ＿ＳＷ命令６１０〜６１２が起動されてリタイアされるまでは、まだ投機的段階にある新規またはより若い命令６２８〜６３０は、リタイアされなくてもよい。
【誤訳訂正３】
【訂正対象書類名】明細書
【訂正対象項目名】００３４
【訂正方法】変更
【訂正の内容】
【００３４】
プロセッサ６０４〜６０６に様々なタスクを行わせて、ローカルの共有コピー上で継続的にスピン待ち（ロードおよび比較）する代わりに、ＣＭＰＸＣＨＧ＿ＳＷ命令６１０〜６１２がスリープである間、プロセッサ６０４〜６０６がブロックまたはボトルネックしないようにするのに役立つ。この技法により、電力および時間の節約、ならびに性能の向上に役立つ。さらに、本技法は、同期している複数の処理の間で動的なデータ共有のない、同時並行進行に役立つ。例えば、１つのハッシュテーブルを１つのロック６３４によって保護して、複数の処理が同時にそれを更新しないようにすると想定すると、２つの処理がハッシュテーブルの互いに異なる部分の更新を必要とした場合（例えば、互いに異なるビンに要素を追加する）、本技法は、当該２つの処理が同時に進行することを許可しうる。これは、たとえ任意の他のプロセッサを動的に妨害しなくても、任意の他のプロセッサ上の全ての有益なワークを完全にブロックするという犠牲の上で、１つのプロセッサに更新を行わせるということと区別される。例えば、プロセッサ６０２は、ロックを所有して、適切なハッシュテーブルビンを見つけて、それをその値で更新してもよい。ところで、ロックを所有していないプロセッサ６０４も、適切なビンを見つけ、書き込まれるべき値および位置を準備してもよいが、プロセッサ６０４がロックを取得しＣＭＰＸＣＨＧ＿ＳＷ命令６０８をリタイアできるまでは、ハッシュテーブルを更新する複数の命令をリタイアしなくてもよい。
【誤訳訂正４】
【訂正対象書類名】明細書
【訂正対象項目名】００３５
【訂正方法】変更
【訂正の内容】
【００３５】
一実施形態において、ＣＭＰＸＣＨＧ＿ＳＷ命令６１０〜６１２の起動は、１つのイベントの発生でトリガされうる。イベントは、例えば、ロック６３４が解除される（そして、利用可能になる）こと、または（命令シーケンス例６２０において）ロック６３４を有するプロセッサ６０２によって１つの試行がなされて、ロック６３４の潜在的な利用可能性を示すロック値を書き換えることである。例えば、命令６１０がスリープ状態にある間、プロセッサ６０４は、１つの新たなロック値（例えば、ロックが解除される）をシークするか、または１つのプロセッサによるロック値を変更しようとする１つの試行（例えば、ロックが場合によっては解除され、共有空間６３６を含むキャッシュラインが無効化され、ロック６３４を含むキャッシュラインが無効化される）を観測することによって、ロック６３４の利用可能性を監視してもよい。１つのプロセッサによってロック値を変更しようとする試みがなされると（例えば、プロセッサ６０２が、ロック変数に書き込みを行う排他的所有を得るために、プロセッサ６０４〜６０６の（図示しない）複数のキャッシュ内の変数を無効化する）、ＣＭＰＸＣＨＧ＿ＳＷ命令６１０の起動がトリガされる。その後、プロセッサ６０４は、新たな値を読み出し、再び、共有空間６３６内のロック６３４（例えば、ロック変数）を要求して、要求に応答してロック変数６３４を受信し、ＣＭＰＸＣＨＧ＿ＳＷ命令６１０が実行およびリタイアされ、（ＣＭＰＸＣＨＧ＿ＳＷ６１０命令がスリープしている間に実行された）複数の任意の他の命令６２８も、その後リタイアされる。プロセッサ６１０をスリープさせることによって、プロセッサ６０４は、典型的なロード、比較、および分岐シーケンスを通る継続的なストリーミングを回避することで、効率性を高めかつ電力を節約するのに役立つ。
【誤訳訂正５】
【訂正対象書類名】明細書
【訂正対象項目名】００４０
【訂正方法】変更
【訂正の内容】
【００４０】
一実施形態において、ＣＭＰＸＣＨＧ＿ＳＷ命令がスリープ中に、プロセッサのメモリシステムは、ロック値の変化を監視する。さらに、ＲＯＢ内の複数の他のＣＭＰＸＣＨＧ＿ＳＷおよびロード命令を含む複数の他の命令をロードおよび実行して、プロセッサが処理ブロック７１２において複数の他のタスクの実行を継続してもよい。言い換えれば、プロセッサにおけるＣＭＰＸＣＨＧ＿ＳＷ命令のスリープは、プロセッサを１つの継続スピンまたは「Ｗｈｉｌｅ」ループに入れさせないだけでなく、プロセッサをブロックまたは無能にしない。代わりに、順不同ではあるが、任意の数の後続の命令を臨界領域内にロードおよび投機的に実行してもよいが、最も古い命令（例えば、スリープしているＣＭＰＸＣＨＧ＿ＳＷ命令）がリタイアされるまでは、スリープしているＣＭＰＸＣＨＧ＿ＳＷ命令より若い命令は、リタイアされないようにしてもよい。どのプロセッサもブロックされず、複数の有益なタスクの実行を継続するので、電力時間の節約および性能の改善となる。
【誤訳訂正６】
【訂正対象書類名】明細書
【訂正対象項目名】００４１
【訂正方法】変更
【訂正の内容】
【００４１】
判断ブロック７１４において、ロック値が変化したか、または値を書き換えようとする試行がなされたかについての判断がなされる。もしそうでなければ、処理ブロック７１２において、複数の他の命令を実行する処理が継続する。しかしながら、ロック値を変更しようとする試行がなされたか、または値が変更された場合には、スリープしているＣＭＰＸＣＨＧ＿ＳＷ命令の起動が、処理ブロック７１６においてトリガされる。ＣＭＰＸＣＨＧ＿ＳＷ命令がいったん起動されて、ロックが利用可能となると、ロックは、処理ブロック７０６においてプロセッサによって取得される。ＣＭＰＸＣＨＧ＿ＳＷ命令の起動の一部として、その後、ＣＭＰＸＣＨＧ＿ＳＷ命令はリタイアされてもよい。また、臨界領域における、投機的に実行が行われた任意の後続の命令も、リタイアされてもよい。
【誤訳訂正７】
【訂正対象書類名】明細書
【訂正対象項目名】００４４
【訂正方法】変更
【訂正の内容】
【００４４】
一実施形態において、１つのタイムアウトカウンタを導入して、スリープ時間に対して１つの制約を提供してもよい。例えば、タイムアウトカウンタ８２２の開始で、プロセッサが８１２でスリープを開始してから所定の時間量が経過した後、スリープ時間は終了する。別の言い方をすれば、プロセッサは、他のプロセッサまたは１つのイベントによる起動を諦めて、代わりに、他のタスクを行う（例えば、処理ステップ８０６へ進む）。例えば、タイムアウトカウンタが必要となるのは、１つのロックが１つのイナクティブなプロセッサによって所有される場合であって、それにより、複数の他のプロセッサがロックを取得することがほとんどまたは全くできない状態で待つこととなりうる場合である。一実施形態において、タイムアウトカウンタによって起動されると、命令はロックを取得しようと試行して、１つの失敗条件でリタイアとなってもよい。他の実施形態において、起動されると、命令はロック取得の試行を風刺して、単に１つの失敗条件でリタイアとなってもよい。また、ロックを待つプロセッサ（例えば、スリープモードのＣＭＰＸＣＨＧ＿ＳＷ命令を有するプロセッサ）は、８２４でタイムアウトして、特定のロックを取得するのを諦め、複数の他のタスクを行って、効率的であることを継続する。また、８２４のタイムアウトにより、８１２のスリープ状態から抜け出すことになり、プロセッサが当分の間ロック取得をシークすることを示すこととなりうるが、他のプロセッサがラインを書き込んでいることを示すキャッシュの無効化を証明することはできなかった。
【誤訳訂正８】
【訂正対象書類名】明細書
【訂正対象項目名】００４６
【訂正方法】変更
【訂正の内容】
【００４６】
一実施形態において、例えば、比較器がｅａｘ［２：０］の値（例えば、ｅａｘの下位３ビット）を保持し、データがｌｏａｄ＿ｗｉｔｈ＿ｓｔｏｒｅ＿ｉｎｔｅｎｔ  ｕｏｐのための１つのキャッシュ（例えば、Ｌ１キャッシュ）から返された場合は、ｅａｘ比較器に対して比較される。ｌｏａｄ＿ｗｉｔｈ＿ｓｔｏｒｅ＿ｉｎｔｅｎｔ  ｕｏｐは、ｃｍｐｘｃｈｇ＿ｓｗ命令の１つの構成ｕｏｐであり、使用中のメモリ位置の値を、１つのロック変数としてロードする。２つが等しい場合、値はライトバックバス上に書き戻される。２つが等しくない場合、ＤＣＵはライトバックを打ち切って、ロードをＭＯＢ内でスリープさせ、タイムアウトカウンタを開始する。ＭＯＢがロックキャッシュラインについて１つの無効化スヌープを検出する場合、ｌｏａｄ＿ｗｉｔｈ＿ｓｔｏｒｅ＿ｉｎｔｅｎｔ  ｕｏｐを起動および再発信する。その後、タイムアウトカウンタは、クロック毎に減分されてもよい。０に等しい場合、ＤＣＵは、１つのタイムアウト信号をＭＯＢに送ってもよい。ＭＯＢは、タイムアウト信号を受信するときに、ｌｏａｄ＿ｗｉｔｈ＿ｓｔｏｒｅ＿ｉｎｔｅｎｔ  ｕｏｐを発信する。この発信中に、ｌｏａｄ＿ｗｉｔｈ＿ｓｔｏｒｅ＿ｉｎｔｅｎｔ  ｕｏｐは実行完了し、比較結果に関係なく、リタイアとなる。