【手続補正書】
【提出日】平成17年10月3日(2005.10.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサと、
システムメモリと、
前記プロセッサと接続されており、複数のキャッシュライン記憶領域を有するキャッシュと、
第１リクエストを受け取るために接続されており、前記第１リクエストに応じて、第１キャッシュライン記憶領域の第１キャッシュラインを投機的に無効にするように構成されると共に、前記第１キャッシュラインを投機的に無効にすることに応じて、前記第１キャッシュラインの無効が投機的でなくなるまで、前記第１キャッシュラインが置換されるのを防ぐように構成される、キャッシュコントローラと、
前記第１リクエストに対応する少なくとも一つのチェックを実行するように構成されるエラー検出ユニットとを含み、
前記チェックが実行され、エラーを検出しない場合、前記第１キャッシュラインの無効は投機的でなくなる、
コンピュータシステム。
【請求項２】
前記キャッシュコントローラは、前記第１キャッシュラインに関連する有効ビットをトグルすることによって、前記第１キャッシュラインを投機的に無効にするように構成される、請求項１記載のコンピュータシステム。
【請求項３】
前記キャッシュコントローラは、前記チェックが実行され、エラーを検出する場合、前記第１キャッシュラインに関連する前記有効ビットをトグルすることによって、前記投機的な実行をリバースするようにさらに構成される、請求項２記載のコンピュータシステム。
【請求項４】
前記キャッシュコントローラはさらに、前記第１キャッシュラインの無効が非投機的になるまでは、前記第１キャッシュライン中のデータの状態またはデータに依存するリクエストを受け付けないように構成されている、請求項１記載のコンピュータシステム。
【請求項５】
前記キャッシュコントローラは、前記第１キャッシュラインの無効が非投機的になるまで、追加の各リクエストのタイプ、および追加の各リクエストが前記投機的に無効にされた第１キャッシュラインに依存するか、またはそれを変更するかどうかに基づく追加のリクエストを受け付けないように構成されている、請求項１記載のコンピュータシステム。
【請求項６】
前記第１キャッシュラインの無効が非投機的になるまで、前記キャッシュコントローラは、
前記第１キャッシュラインをヒットする上位レベルキャッシュからのフィル・リクエスト、
前記第１キャッシュラインに対するプローブ・リクエスト、もしくはステートチェンジリクエスト、または
置換のために前記第１キャッシュラインを選択する上位レベルキャッシュからのコピー・バック
である追加のリクエストを受け付けないように構成されている、請求項１記載のコンピュータシステム。
【請求項７】
前記キャッシュコントローラは、前記第１キャッシュラインの無効が非投機的になるまでは、前記第１キャッシュラインの第１タグの第１部分に合致する追加のリクエストを受け付けないように構成されている、請求項１記載のコンピュータシステム。
【請求項８】
前記キャッシュコントローラはさらに、前記投機的無効の一部として、前記第１キャッシュラインに関連した事前投機的無効置換状態を保存し、前記第１キャッシュラインがすでに無効にされたかのように事後投機的無効置換状態を更新するように構成されている、請求項１記載のコンピュータシステム。
【請求項９】
前記チェックを実行して、エラーを検出したときに、前記キャッシュコントローラはさらに、前記保存された事前投機的無効置換状態をリストアするように構成されている、請求項８記載のコンピュータシステム。
【請求項１０】
前記キャッシュコントローラはさらに、前記第１キャッシュラインの無効が非投機的になった後に、前記第１キャッシュラインを変更する追加のリクエストを受け付けるように構成されている、請求項１記載のコンピュータシステム。
【請求項１１】
前記少なくとも一つのチェックはオーダリングのチェックを含む、請求項１記載のコンピュータシステム。
【請求項１２】
前記少なくとも一つのチェックはエイリアスのチェックを含む、請求項１記載のコンピュータシステム。
【請求項１３】
前記少なくとも一つのチェックは、アクセスされたキャッシュラインへのアクセスは、前記アクセスされたキャッシュラインの状態が与えられたときに、適切かどうかのチェックを含む、請求項１記載のコンピュータシステム。
【請求項１４】
前記キャッシュは排他キャッシュを含み、前記第１リクエストは、どのキャッシュが排他的であるかに関する、上位レベルキャッシュからのフィル・リクエストである、請求項１記載のコンピュータシステム。
【請求項１５】
キャッシュ中のラインを投機的に無効にする方法であって、
前記キャッシュ中の前記ラインを無効にするリクエストを受け付けるステップと、
前記無効が誤っているかどうかを決定するチェックを開始するステップと、
前記受け付けるステップに応じて、前記ラインを投機的に無効にするステップと、
前記投機的に無効にするステップは、前記ラインが無効であることを示すステップと、前記チェックが完了するまで、前記ラインがその後変更されるのを防ぐステップとを含み、
前記受け付けるステップに応答して、前記保護するステップは、前記チェックが完了するまで、前記投機的に無効にされたライン中のデータまたはその状態に依存する追加のリクエストを受け付けないステップをさらに含み、
前記無効が誤りであることを決定するチェックの一つに応答して、前記ラインが有効であることを示すことによって前記投機的無効をリバースするステップとを含む、方法。
【請求項１６】
前記投機的に無効にするステップは、前記ラインに関連する有効ビットをトグルするステップを含む、請求項１５記載の方法。
【請求項１７】
前記リバースするステップは、前記ラインに関連する有効ビットをトグルするステップを含む、請求項１６記載の方法。
【請求項１８】
前記保護するステップは、前記投機的に無効にされたラインのタグの第１部分に合致する追加のリクエストを受け付けないステップを含む、請求項１５記載の方法。
【請求項１９】
前記投機的に無効にするステップは、前記ラインに関連した事前投機的無効置換状態情報を保存するステップと、前記ラインがすでに無効にされたかのように事後投機的無効置換状態情報を更新するステップとをさらに含む、請求項１５記載の方法。
【請求項２０】
前記無効が誤りであることを決定するチェックの一つに応答して、前記保存された事前投機的無効置換状態情報をリストアするステップをさらに含む、請求項１９記載の方法。
【請求項２１】
前記チェックが終了した後に前記保護を停止するステップをさらに含む、請求項１５記載の方法。
【請求項２２】
排他キャッシュ中の第１キャッシュラインを投機的に無効にする方法であって、
上位レベルキャッシュからのフィル・リクエストを受け付けるステップと、
前記フィル・リクエストが前記排他キャッシュ中でヒットするかどうかを決定するステップと、
前記フィル・リクエストが誤って開始されたかどうかを決定するためのチェックを開始するステップと、
前記排他キャッシュ中で前記フィル・リクエストがヒットすることに応答して、前記第１キャッシュラインを前記排他キャッシュから前記上位レベルキャッシュに供給するステップと、もし前記チェックが未だ完了していないときには、前記排他キャッシュ中の前記第１キャッシュラインを投機的に無効にするステップと、
前記投機的に無効にするステップは、前記第１キャッシュラインが無効であることを示すステップと、前記チェックが完了するまで、前記第１キャッシュラインがその後変更されるのを防ぐステップとを含み、
前記フィル・リクエストが誤って開始されたことを決定する前記フィル・リクエストに関連するチェックの一つに応答して、前記第１キャッシュラインの投機的無効をリバースするステップとを含む、方法。
【請求項２３】
前記第１キャッシュラインが無効であることを示すステップは、前記第１キャッシュラインに関連する有効ビットをトグルするステップを含む、請求項２２記載の方法。
【請求項２４】
前記リバースするステップは、前記第１キャッシュラインに関連する有効ビットをトグルするステップを含む、請求項２３記載の方法。
【請求項２５】
前記投機的に無効にするステップは、前記チェックが完了するまでは、前記第１キャッシュライン中のデータの状態またはデータに依存する追加のリクエストを受け付けないステップをさらに含む、請求項２２記載の方法。
【請求項２６】
前記保護するステップは、前記投機的に無効にされたラインの第１タグの第１部分に合致する追加のリクエストが受け付けられないようにするステップを含む、請求項２２記載の方法。
【請求項２７】
前記保護するステップは、コピーバックが前記投機的に無効にされたラインを上書きすることを検出するステップと、前記検出するステップに応答して、前記コピーバックが異なったラインを上書きするようにさせる、請求項２２記載の方法。
【請求項２８】
前記投機的に無効にするステップは、前記ラインに関連した事前投機的無効置換状態情報を保存するステップと、前記ラインがすでに無効にされたかのように事後投機的無効置換状態情報を更新するステップとをさらに含む、請求項２２記載の方法。
【請求項２９】
前記フィル・リクエストが誤って開始されたことを決定するチェックの一つに応答して、前記保存された事前投機的無効置換状態情報をリストアするステップをさらに含む、請求項２８記載の方法。
【請求項３０】
複数のキャッシュライン記憶領域を有するキャッシュと、
第１リクエストを受け付けるために接続されており、前記第１リクエストの受け付けに応じて、第１キャッシュライン記憶領域中の第１キャッシュラインを投機的に無効にするように形成され、さらに、前記投機的な無効が誤っていることが検出される場合、前記第１キャッシュラインの前記投機的な無効をリバースするように形成され、前記投機的な無効が誤っているかどうかを検出するために複数のサイクルを必要とするキャッシュコントローラと、
前記キャッシュコントローラが前記第１キャッシュラインを投機的に無効にするのに応じて、前記複数のサイクルの間、前記第１キャッシュラインが変更されるのを防ぐように構成される、投機的無効コントローラとを有し、
前記投機的な無効は前記複数のサイクルの後に投機的でなくなり、前記投機的無効コントローラはさらに、前記複数のサイクルにおいて、投機的に無効にされた第１キャッシュラインを変更する、またはそれに依存する追加のリクエストの受付を妨げるように構成されている、
キャッシュサブシステム。
【請求項３１】
前記キャッシュコントローラは、前記第１キャッシュラインに関連する有効ビットをトグルすることによって、前記第１キャッシュラインを投機的に無効にするように構成される、請求項３０記載のキャッシュサブシステム。
【請求項３２】
前記キャッシュコントローラはさらに、前記第１キャッシュラインに関連する前記有効ビットをトグルすることにより、前記投機的な実行をリバースするように構成される、請求項３１記載のキャッシュサブシステム。
【請求項３３】
前記投機的無効コントローラは、前記キャッシュコントローラが前記第１キャッシュラインを投機的に無効にするのに応答して、前記第１キャッシュラインのタグの第１部分をレジスタにロードするように構成されている、請求項３０記載のキャッシュサブシステム。
【請求項３４】
前記レジスタに記憶された前記タグの第１部分と前記キャッシュコントローラに送られた追加のリクエスト中の別のタグとを比較するように構成され、それらのタグが一致するとイネーブル信号をディアサートし、前記キャッシュコントローラにイネーブル信号を供給するようにさらに構成され、前記イネーブル信号がディアサートされたとき、受信したリクエストを受け付けないように構成されている比較器をさらに含む、請求項３３記載のキャッシュサブシステム。
【請求項３５】
前記投機的無効コントローラはさらに、前記投機的無効が非投機的になった後、前記第１キャッシュラインが後から変更されるのを妨げないように構成される、請求項３０記載のキャッシュサブシステム。
【請求項３６】
前記キャッシュコントローラはさらに、前記投機的無効の一部として、前記第１キャッシュラインに関連した事前投機的無効置換状態を保存し、前記第１キャッシュラインがすでに無効にされたかのように事後投機的無効置換状態を更新するように構成されている、請求項３０記載のキャッシュサブシステム。
【請求項３７】
前記第１キャッシュラインの投機的無効は誤りであったことの表示の受信に応答して、前記キャッシュコントローラはさらに、前記保存された事前投機的無効置換状態をリストアするように構成されている、請求項３６記載のキャッシュサブシステム。
【請求項３８】
前記複数のサイクルは前記第１リクエストを開始したイベントのエイリアスチェックを完了するためのサイクル数を含む、請求項３０記載のキャッシュサブシステム。
【請求項３９】
前記キャッシュコントローラは、後続のリクエストが前記第１キャッシュラインを上書きすることを検出して、前記第１キャッシュラインを保護し、それに応答して、前記後続のリクエストに異なったキャッシュラインを上書きさせる、請求項３０記載のキャッシュサブシステム。
【請求項４０】
プロセッサと、
システムメモリと、
前記プロセッサと接続されており、複数のキャッシュライン記憶領域を有するキャッシュと、
第１リクエストを受け取るために接続されており、前記第１リクエストに応じて、第１キャッシュライン記憶領域の第１キャッシュラインを投機的に無効にするように構成されると共に、前記第１キャッシュラインを投機的に無効にすることに応じて、前記第１キャッシュラインの無効が投機的でなくなるまで、前記第１キャッシュラインが置換されるのを防ぐように構成される、キャッシュコントローラと、
前記第１リクエストに対応する少なくとも一つのチェックを実行するように構成され、前記チェックを実行して、エラーを検出しない場合は、前記第１キャッシュラインの無効は非投機的になるエラー検出ユニットとを含み、
前記キャッシュコントローラは、前記第１キャッシュラインの無効が非投機的になるまでは、前記第１キャッシュライン中のデータの状態またはそのデータに依存するリクエストを受け付けないように構成された、
コンピュータシステム。
【請求項４１】
プロセッサと、
システムメモリと、
前記プロセッサと接続されており、複数のキャッシュライン記憶領域を有するキャッシュと、
第１リクエストを受け取るために接続されており、前記第１リクエストに応じて、第１キャッシュライン記憶領域の第１キャッシュラインを投機的に無効にするように構成されると共に、前記第１キャッシュラインを投機的に無効にすることに応じて、前記第１キャッシュラインの無効が投機的でなくなるまで、前記第１キャッシュラインが置換されるのを防ぐように構成される、キャッシュコントローラと、
前記第１リクエストに対応する少なくとも一つのチェックを実行するように構成され、前記チェックを実行して、エラーを検出しない場合は、前記第１キャッシュラインの無効は非投機的になるエラー検出ユニットとを含み、
前記キャッシュコントローラは、前記第１キャッシュラインの無効が非投機的になるまで、追加の各リクエストのタイプ、および追加の各リクエストが前記投機的に無効にされた第１キャッシュラインに依存するか、またはそれを変更するかどうかに基づく追加のリクエストを受け付けないように構成されている、
コンピュータシステム。
【請求項４２】
キャッシュ中のラインを投機的に無効にする方法であって、
前記キャッシュ中の前記ラインを無効にするリクエストを受け付けるステップと、
前記無効が誤っているかどうかを決定するチェックを開始するステップと、
前記受け付けるステップに応じて、前記ラインを投機的に無効にするステップと、
前記投機的に無効にするステップは、前記ラインが無効であることを示すステップと、前記チェックが完了するまで、前記ラインがその後変更されるのを防ぐステップとを含み、
前記保護するステップは、前記投機的に無効にされたライン中のタグの第１部分に合致する追加のリクエストを受け付けないステップを含み、
前記無効が誤りであることを決定するチェックの一つに応答して、前記ラインが有効であることを示すことによって前記投機的無効をリバースするステップとを含む、方法。
【請求項４３】
複数のキャッシュライン記憶領域を有するキャッシュと、
第１リクエストを受け付けるために接続されており、前記第１リクエストの受け付けに応じて、第１キャッシュライン記憶領域中の第１キャッシュラインを投機的に無効にするように形成され、さらに、前記投機的な無効が誤っていることが検出される場合、前記第１キャッシュラインの前記投機的な無効をリバースするように形成され、前記投機的な無効が誤っているかどうかを検出するために複数のサイクルを必要とし、前記複数のサイクルは前記第１リクエストを開始したイベントのエイリアスチェックを完了するためのサイクル数を含むキャッシュコントローラと、
前記キャッシュコントローラが前記第１キャッシュラインを投機的に無効にするのに応じて、前記複数のサイクルの間、前記第１キャッシュラインが変更されるのを防ぐように構成され、前記投機的な無効は前記複数のサイクルの後に投機的でなくなる投機的無効コントローラとを含む、
キャッシュサブシステム。
【請求項４４】
複数のキャッシュライン記憶領域を有するキャッシュと、
第１リクエストを受け付けるために接続されており、前記第１リクエストの受け付けに応じて、第１キャッシュライン記憶領域中の第１キャッシュラインを投機的に無効にするように形成され、さらに、前記投機的な無効が誤っていることが検出される場合、前記第１キャッシュラインの前記投機的な無効をリバースするように形成され、前記投機的な無効が誤っているかどうかを検出するために複数のサイクルを必要とし、後続のリクエストが前記第１キャッシュラインを上書きすることを検出して、前記第１キャッシュラインを保護し、それに応答して、前記後続のリクエストに異なったキャッシュラインを上書きさせるキャッシュコントローラと、  
前記キャッシュコントローラが前記第１キャッシュラインを投機的に無効にするのに応じて、前記複数のサイクルの間、前記第１キャッシュラインが変更されるのを防ぐように構成され、前記投機的な無効は前記複数のサイクルの後に投機的でなくなる投機的無効コントローラとを含む、
キャッシュサブシステム。