【手続補正書】
【提出日】平成19年5月9日(2007.5.9)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】  複数のプロセッサを含み、前記プロセッサの各々はレジスタファイルと、リオーダバッファと、投機的マルチスレッド実行を支持するための回路とを含み、さらに
リオーダバッファタグ変換バッファを含み、前記変換バッファは、第１のプロセッサのリオーダバッファのエントリを第２のプロセッサのリオーダバッファのエントリにマップし、さらに
スレッド制御装置を含み、前記スレッド制御装置は前記プロセッサ間の命令を記憶および伝送するように構成され、前記命令は前記プロセッサ上のスレッドの投機的実行を支持し、前記スレッドは並行して実行されてもよい、多重プロセッサコンピュータ。
【請求項２】  前記回路は前記スレッドの前記実行の同期を支持するように構成される、請求項１に記載の多重プロセッサコンピュータ。
【請求項３】  前記回路はプロセッサ間通信ユニットを含む、請求項２に記載の多重プロセッサコンピュータ。
【請求項４】  前記プロセッサ間通信ユニットは予約ステーションを含む、請求項３に記載の多重プロセッサコンピュータ。
【請求項５】  前記プロセッサ間通信ユニットは、予約ステーション、ロックされた読取予約ステーション、ロックされた書込予約ステーション、およびスクラッチパッド機能ユニットを含む、請求項３に記載の多重プロセッサコンピュータ。
【請求項６】  前記多重プロセッサコンピュータはスクラッチパッド命令を含み、前記スクラッチパッド命令は、第１のプロセッサ上でランする第１のスレッドと第２のプロセッサ上でランする第２のスレッドとの間で共有されるデータの交換を支持する、請求項５に記載の多重プロセッサコンピュータ。
【請求項７】  前記多重プロセッサコンピュータは複数の前記リオーダバッファタグ変換バッファを含む、請求項１に記載の多重プロセッサコンピュータ。
【請求項８】  前記スレッド制御装置は、前記プロセッサ上の前記スレッドの実行を同期させるように構成される、請求項１に記載の多重プロセッサコンピュータ。
【請求項９】  前記スレッド制御装置は、
記憶バッファと、
同期論理とを含み、前記同期論理は、前記プロセッサ上の前記スレッドの同期を支持するように構成される、請求項８に記載の多重プロセッサコンピュータ。
【請求項１０】  前記スレッド制御装置はさらに、
複数のスクラッチパッドレジスタを含む、請求項９に記載の多重プロセッサコンピュータ。
【請求項１１】  前記記憶バッファは複数のＦＩＦＯを含む、請求項９に記載の多重プロセッサコンピュータ。
【請求項１２】  前記スレッドの前記実行の前記同期は、
第１の同期命令を実行する前記第１のプロセッサと、
第２の同期命令を実行する前記第２のプロセッサと、
前記第１の同期命令が前記第１のプロセッサでリタイアする準備ができていることと前記第２のプロセッサの前記第２の同期命令がリタイアする準備ができていないこととを検出することに応答して、前記第１のプロセッサ上の前記スレッドの実行を停止する前記第１のプロセッサと、
前記第２の同期命令が前記第２のプロセッサでリタイアする準備ができていることと前記第１のプロセッサの前記第１の同期命令がリタイアする準備ができていないこととを検出することに応答して、前記第２のプロセッサ上の前記スレッドの実行を停止する前記第２のプロセッサと、
前記第１の同期命令と前記第２の同期命令とが両方ともリタイアする準備ができていることを検出することに応答して、前記第１のプロセッサ上の前記スレッドの実行を継続する前記第１のプロセッサと、
前記第１の同期命令および前記第２の同期命令が両方ともリタイアする準備ができていることを検出することに応答して、前記第２のプロセッサ上の前記スレッドの実行を継続する前記第２のプロセッサとを含む、請求項８に記載の多重プロセッサコンピュータ。
【請求項１３】
前記スレッドの前記実行の前記同期は、
第１の同期命令を実行する前記第１のプロセッサと、
第２の同期命令を実行する前記第２のプロセッサと、
前記第１の同期命令が前記第１のプロセッサでリタイアする準備ができていることと前記第２のプロセッサの前記第２の同期命令がリタイアする準備ができていないこととを検出することに応答して、前記第１のプロセッサ上の前記スレッドの実行を停止する前記第１のプロセッサと、
前記第２の同期命令は前記第２のプロセッサでリタイアする準備ができていることと前記第１のプロセッサの前記第１の同期命令はリタイアする準備ができていないこととを検出することに応答して、前記第２のプロセッサ上の前記スレッドの実行を停止する前記第２のプロセッサと、
前記第１の同期命令と前記第２の同期命令とが両方ともリタイアする準備ができていることを検出することに応答して、前記第１の同期命令をリタイアする前記第１のプロセッサと、
前記第１の同期命令と前記第２の同期命令とが両方ともリタイアする準備ができていることを検出することに応答して、前記第２の同期命令をリタイアする前記第２のプロセッサと、
前記第１の同期命令が前記第１のプロセッサでリタイアしたことと前記第２のプロセッサで前記第２の同期命令はリタイアしていないことを検出することに応答して、前記第１のプロセッサ上の前記スレッドの実行を停止する前記第１のプロセッサと、
前記第２の同期命令は前記第２のプロセッサでリタイアしたことと前記第１の同期命令は前記第１のプロセッサでリタイアしていないこととを検出することに応答して、前記第２のプロセッサ上の前記スレッドの実行を停止する前記第２のプロセッサと、
前記第１の同期命令と前記第２の同期命令とがリタイアしたことを検出することに応答して、前記第１のプロセッサ上の前記スレッドの実行を継続する前記第１のプロセッサと、
前記第１の同期命令と前記第２の同期命令とがリタイアしたことを検出することに応答
して、前記第２のプロセッサ上の前記スレッドの実行を継続する前記第２のプロセッサとを含む、請求項８に記載の多重プロセッサコンピュータ。
【請求項１４】
前記複数のプロセッサの第１のプロセッサはマスタであり、前記マスタは前記多重プロセッサコンピュータ上のすべての単一スレッドコードを実行する、請求項１に記載の多重プロセッサコンピュータ。
【請求項１５】
複数のマルチスレッド命令をさらに含み、
前記マスタは前記複数のマルチスレッド命令の第１の命令に応答してデータを前記マスタのレジスタファイルから第２のプロセッサに運び、
前記第２のプロセッサは前記複数のマルチスレッド命令の第２の命令に応答してデータを前記第２のプロセッサのレジスタファイルから前記マスタに運び、
前記第２のプロセッサは前記複数のマルチスレッド命令の第３の命令に応答して命令のスレッドの実行を開始し、
前記第２のプロセッサは前記複数のマルチスレッド命令の第４の命令に応答して命令の前記スレッドの実行を終了し、
前記マスタおよび前記第２のプロセッサは前記複数のマルチスレッド命令の第５の命令に応答してスレッド実行を同期させる、請求項１４に記載の多重プロセッサコンピュータ。
【請求項１６】
前記第１の命令はＷｒ２Ｐｒｏｃ命令であり、前記第２の命令はＲｄＦｒＰｒｏｃ命令であって、前記第３の命令はフォーク命令であり、前記第４の命令は結合命令であり、前記第５の命令は同期命令である、請求項１５に記載の多重プロセッサコンピュータ。
【請求項１７】
前記第１の命令、前記第２の命令、および前記第３の命令は前記第２のプロセッサにおいて投機的に実行される、請求項１５に記載の多重プロセッサコンピュータ。
【請求項１８】
前記第１の命令は、前記第１の命令が前記第２のプロセッサの前記リオーダバッファでリタイアする準備ができていることを検出することと前記第１の命令が前記マスタのリオーダバッファからリタイアしたことの表示を前記マスタから受取ることとに応答して、前記第２のプロセッサのリオーダバッファからリタイアされ、
前記第３の命令は、前記第３の命令が前記第２のプロセッサの前記リオーダバッファでリタイアする準備ができていることを検出することと前記第３の命令が前記マスタの前記リオーダバッファからリタイアしたことの表示を前記マスタから受取ることとに応答して、前記第２のプロセッサの前記リオーダバッファからリタイアされる、請求項１５に記載の多重プロセッサコンピュータ。
【請求項１９】
前記第１の命令は、前記第１の命令が前記第２のプロセッサの前記リオーダバッファでリタイアする準備ができていることを検出することと前記第３の命令が前記マスタのリオーダバッファからリタイアしたことの表示を前記マスタから受取ることとに応答して、前記第２のプロセッサのリオーダバッファからリタイアされ、
前記第３の命令は、前記第３の命令が前記第２のプロセッサの前記リオーダバッファでリタイアする準備ができていることを検出することと前記第３の命令が前記マスタの前記リオーダバッファからリタイアしたことの表示を前記マスタから受取ることとに応答して、前記第２のプロセッサの前記リオーダバッファからリタイアされる、請求項１５に記載の多重プロセッサコンピュータ。
【請求項２０】
第２のプロセッサ上でのスレッドの実行のためのスレッドセットアップを行なうステップを含み、前記セットアップは前記第２のプロセッサにセットアップ命令を運ぶ第１のプロセッサを含み、前記セットアップ命令は前記第２のプロセッサ上で投機的に実行され、
さらに
前記第１のプロセッサにリオーダバッファのリオーダバッファタグを記憶するステップを含み、前記リオーダバッファタグは、前記セットアップ命令の第１の命令を含む前記第１のプロセッサの前記リオーダバッファの場所に対応し、さらに
前記第１のプロセッサから前記第２のプロセッサに起動命令を運ぶステップを含み、前記起動命令は前記第２のプロセッサ上で投機的に実行され、さらに
前記起動命令を受取ることに応答して前記第２のプロセッサ上で前記スレッドを実行するステップを含み、前記スレッドは投機的に実行され、前記スレッドは前記第１のプロセッサ上のスレッドの実行と並行して実行され、さらに
前記第２のプロセッサ上の前記スレッドの前記実行を終了させるステップを含み、前記終了は前記第２のプロセッサにおける第１の終了命令をリタイアするステップを含み、さらに
前記第２のプロセッサが検索結果命令を受取ることに応答して前記第１のプロセッサに前記第２のプロセッサ上の前記スレッドの前記実行の結果を運ぶステップを含み、前記検索結果命令は前記第２のプロセッサによって投機的に実行され、さらに
リオーダバッファタグ変換バッファを更新するステップを含み、前記更新は前記変換バッファ中の場所に前記第２のプロセッサの前記リオーダバッファのリオーダバッファタグを記憶するステップを含み、前記第２のプロセッサの前記リオーダバッファの前記リオーダバッファタグは前記第２のプロセッサの前記リオーダバッファ中の前記第１の命令の場所に対応し、前記変換バッファ中の前記場所は前記第１のプロセッサの前記リオーダバッファの前記リオーダバッファタグによって選択される、方法。
【請求項２１】
結果を運ぶ前記ステップは、
前記第１のプロセッサからの検索結果指示を第１のＦＩＦＯに記憶するステップと、
前記第２のプロセッサによって前記第１のＦＩＦＯから前記検索結果命令を読取るステップと、
前記第２のプロセッサによって前記第２のプロセッサのレジスタファイルからデータを読取るステップとを含み、前記データは前記第２のプロセッサの前記レジスタファイルの場所に対応し、前記場所は前記検索結果命令によって表示され、さらに
前記データを第２のＦＩＦＯに記憶するステップと、
前記第１のプロセッサによって前記第２のＦＩＦＯから前記データを読取るステップとを含む、請求項２０に記載の方法。
【請求項２２】
結果を運ぶ前記ステップは前記第２のプロセッサにおける前記第１の終了命令をリタイアする前記ステップに続き、前記運ぶステップは前記第１のプロセッサにおける第２の終了命令をリタイアするステップに続く、請求項２０に記載の方法。
【請求項２３】
前記第１のプロセッサ上の前記スレッドの前記実行を前記第２のプロセッサ上の前記スレッドの前記実行と同期させるステップをさらに含む、請求項２０に記載の方法。
【請求項２４】
前記同期させるステップは、
前記第１のプロセッサ上で第１の同期命令を実行するステップと、
前記第２のプロセッサ上で第２の同期命令を実行するステップと、
前記第１の同期命令がリタイアする準備ができていることと前記第２の同期命令はリタイアする準備ができていないこととを検出することに応答して、前記第１のプロセッサ上の前記スレッドの実行を停止するステップと、
前記第２の同期命令がリタイアする準備ができていることと前記第１の同期命令はリタイアする準備ができていないこととを検出することに応答して、前記第２のプロセッサ上の前記スレッドの実行を停止するステップと、
第１の同期命令および前記第２の同期命令が両方ともリタイアする準備ができているこ
とに応答して、前記第１のプロセッサ上の前記スレッドおよび前記第２のプロセッサ上の前記スレッドの実行を継続するステップとを含む、請求項２３に記載の方法。
【請求項２５】
前記同期するステップは、
前記第１のプロセッサ上の第１の同期命令を実行するステップと、
前記第２のプロセッサ上の第２の同期命令を実行するステップと、
前記第１の同期命令がリタイアする準備ができていることと前記第２の同期命令はリタイアする準備ができていないこととを検出することに応答して、前記第１のプロセッサ上の前記スレッドの実行を停止するステップと、
前記第２の同期命令はリタイアする準備ができていることと前記第１の同期命令はリタイアする準備ができていないこととを検出することに応答して、前記第２のプロセッサ上の前記スレッドの実行を停止するステップと、
前記第１の同期命令と前記第２の同期命令とが両方ともリタイアする準備ができていることを検出することに応答して、前記第１の同期命令と前記第２の同期命令とをリタイアするステップと、
前記第１の同期命令はリタイアしたことと前記第２の同期命令はリタイアしていないこととを検出することに応答して、前記第１のプロセッサ上の前記スレッドの実行を停止するステップと、
前記第２の同期命令はリタイアしたことと前記第１の同期命令はリタイアしていないこととを検出することに応答して、前記第２のプロセッサ上の前記スレッドの実行を停止するステップと、
前記第１の同期命令および前記第２の同期命令が両方ともリタイアしたことを検出することに応答して、前記第１のプロセッサ上の前記スレッドおよび前記第２のプロセッサ上の前記スレッドの実行を継続するステップとを含む、請求項２３に記載の方法。
【請求項２６】
前記第１のセットアップ命令が前記第２のプロセッサの前記リオーダバッファでリタイアする準備ができていることを検出することと前記第１のセットアップ命令が前記第１のプロセッサのリオーダバッファからリタイアしたことの表示を受取ることとに応答して、前記第２のプロセッサのリオーダバッファから前記セットアップ命令の第１のセットアップ命令をリタイアするステップと、
前記起動命令が前記第２のプロセッサの前記リオーダバッファでリタイアする準備ができていることを検出することと前記起動命令が前記第１のプロセッサの前記リオーダバッファからリタイアしたことの表示を受取ることとに応答して、第２のプロセッサのリオーダバッファから前記起動命令をリタイアするステップとをさらに含む、請求項２０に記載の方法。
【請求項２７】
前記セットアップ命令は前記第２のプロセッサの前記リオーダバッファでリタイアする準備ができていることを検出することと前記起動命令が前記第１のプロセッサのリオーダバッファからリタイアしたことの表示を前記第１のプロセッサから表示を受取ることに応答して、前記第２のプロセッサのリオーダバッファから前記セットアップ命令をリタイアするステップと、
前記起動命令が前記第２のプロセッサの前記リオーダバッファでリタイアする準備ができていることを検出することと前記起動命令が前記第１のプロセッサの前記リオーダバッファからリタイアしたことの表示を前記第１のプロセッサから受取ることとに応答して、第２のプロセッサのリオーダバッファから前記起動命令をリタイアするステップとをさらに含む、請求項２０に記載の方法。
【請求項２８】
前記第１のプロセッサによってスクラッチパッド命令をデコードするステップを含み、前記デコードするステップは複数の動作を生成し、前記複数の動作はスクラッチパッド機能ユニットおよび第１のリオーダバッファに運ばれ、前記複数の動作はロックされた読取
動作、ＡＬＵ動作、およびロックされた書込動作を含み、さらに
前記ロックされた読取動作をロックされた読取予約ステーションに記憶し、前記ロックされた書込動作をロックされた書込予約ステーションに記憶するステップと、
前記読取予約ステーションのすべての前のロックされた読取動作が完了したことに応答して、前記ロックされた読取予約ステーションから前記ロックされた読取動作を発行するステップと、
記憶に場所をロックするステップとを含み、前記場所は、前記場所がロックされていないことを検出することに応答して、前記ロックされた読取動作によってロックされ、
前記ロックされた場所の内容を読取るステップと、
前記ロックされた書込動作はその入力オペランドを受取ることと前記ロックされた書込動作は前記第１のリオーダバッファにおいて次にリタイアすることとを検出することに応答して、前記ロックされた書込動作を前記ロックされた書込予約ステーションから発行するステップと、
前記場所にデータを記憶するステップと、
前記場所をアンロックするステップと、
前記ロックされた読取動作および前記ロックされた書込動作が完了したことを検出することに応答して、前記ロックされた読取動作を前記ロックされた読取予約ステーションから取除き、前記ロックされた書込動作を前記ロックされた書込予約ステーションから取除くステップとをさらに含む、請求項２０に記載の方法。
【請求項２９】
リオーダバッファの分岐命令が誤って予測されることを検出するステップと、
前記リオーダバッファの前記分岐命令に続く複数の命令を無効にするステップと、
複数の命令のうち１つはロックされた命令であることを検出するステップと、
複数のリオーダバッファタグをスクラッチパッド機能ユニットに運ぶステップとを含み、前記リオーダバッファタグは前記ロックされた命令に対応し、前記ロックされた命令は前記分岐命令に続く前記第１のリオーダバッファにおける第１のロックされた命令であって、
前記スクラッチパッド機能ユニットのロックされた命令を無効にするステップを含み、前記ロックされた命令は前記複数のリオーダバッファタグに対応し、さらに
前記ロックされた命令の１つはロックされた読取命令であることを検出することに応答してスクラッチパッドレジスタにおける場所をアンロックするステップをさらに含み、前記ロックされた読取命令はロックされた読取予約ステーションの前にあり、前記ロックされた読取命令は発行されている、請求項２８に記載の方法。