(57)【特許請求の範囲】
【請求項１】
データ処理システム内でメモリ要求を行う方法であって、
複数のデータ・ブロックにキャッシュ・ラインを記憶するステップであって、前記複数のデータ・ブロックの各データ・ブロックはエラー訂正符号ビットのセットと１つのメタビットとを有し、前記複数のデータ・ブロックの前記メタビットが組み合わさってローカル／グローバル状態および特殊訂正不能エラー・ビットを示す、前記記憶するステップと、
前記キャッシュ・ラインを求める要求をローカルに発行するステップと、
１番目のサイクルで前記複数のブロックのデータのうち第１のブロックのデータを受け取るステップと、
前記第１のブロックのデータのメタビットを特定するステップと、
前記第１のブロックのデータの前記メタビットに基づいて前記キャッシュ・ラインのローカル／グローバル状態を判定するステップと
を含む方法。
【請求項２】
前記キャッシュ・ラインの前記ローカル／グローバル状態がローカルであると判定するのに応答して、前記第１のブロックのデータを要求元のプロセッサ・コアに転送するステップをさらに含む請求項１に記載の方法。
【請求項３】
２番目のサイクルで前記複数のブロックのデータのうち第２のブロックのデータを受け取るステップと、
前記第２のブロックのデータのメタビットを特定するステップと、
前記第１のブロックのデータの前記メタビットおよび前記第２のブロックのデータの前記メタビットに基づいて、前記キャッシュ・ラインの特殊訂正不能エラー状態を判定するステップと
をさらに含む請求項２に記載の方法。
【請求項４】
前記特殊訂正不能エラー状態が真であるのに応答してエラー処理を行うステップをさらに含む請求項３に記載の方法。
【請求項５】
前記特殊訂正不能エラー状態に基づいてエラー・ステータスを設定するステップと、
前記エラー・ステータスと共に前記第２のブロックのデータを前記要求元のプロセッサ・コアに転送するステップと
をさらに含む請求項３に記載の方法。
【請求項６】
前記キャッシュ・ラインの前記ローカル／グローバル状態がグローバルであると判定するのに応答して、前記キャッシュ・ラインを求める要求をグローバルに再発行するステップをさらに含む請求項１に記載の方法。
【請求項７】
２番目のサイクルで前記複数のブロックのデータのうち第２のブロックのデータを受け取るステップと、
前記第２のブロックのデータを破棄するステップと
をさらに含む請求項６に記載の方法。
【請求項８】
複数のプロセッサ・コアと、
前記複数のプロセッサ・コアと共に第１のプロセッサ・コアに結合されたキャッシュと、
メモリと
を備え、
前記キャッシュは、前記プロセッサ・コアからメモリ要求を受け取り、前記プロセッサ・コアからアクセスされるデータのキャッシュ・ラインを記憶するように構成され、前記メモリは、複数のデータ・ブロックにキャッシュ・ラインを記憶し、前記複数のデータ・ブロックの各データ・ブロックはエラー訂正符号ビットのセットと１つのメタビットとを有し、前記複数のデータ・ブロックの前記メタビットが組み合わさってローカル／グローバル状態および特殊訂正不能エラー・ビットを示し、
前記キャッシュは、前記キャッシュ・ラインを求める要求をローカルに発行するように構成され、
前記キャッシュは、１番目のサイクルで前記複数のブロックのデータのうち第１のブロックのデータを受け取るように構成され、
前記キャッシュは、前記第１のブロックのデータのメタビットを特定するように構成され、
前記キャッシュは、前記第１のブロックのデータの前記メタビットに基づいて前記キャッシュ・ラインのローカル／グローバル状態を判定するように構成される、装置。
【請求項９】
前記キャッシュは、前記キャッシュ・ラインの前記ローカル／グローバル状態がローカルであると判定するのに応答して、前記第１のブロックのデータを要求元のプロセッサ・コアに転送するように構成される、請求項８に記載の装置。
【請求項１０】
前記キャッシュは、２番目のサイクルで前記複数のブロックのデータのうち第２のブロックのデータを受け取るように構成され、
前記キャッシュは、前記第２のブロックのデータのメタビットを特定するように構成され、
前記キャッシュは、前記第１のブロックのデータの前記メタビットおよび前記第２のブロックのデータの前記メタビットに基づいて、前記キャッシュ・ラインの特殊訂正不能エラー状態を判定するように構成される、請求項９に記載の装置。
【請求項１１】
前記キャッシュは、前記特殊訂正不能エラー状態に基づいてエラー・ステータスを設定し、前記エラー・ステータスと共に前記第２のブロックのデータを前記要求元のプロセッサ・コアに転送するように構成される、請求項１０に記載の装置。
【請求項１２】
前記キャッシュは、前記キャッシュ・ラインの前記ローカル／グローバル状態がグローバルであると判定するのに応答して、前記キャッシュ・ラインを求める要求をグローバルに再発行するように構成される、請求項８に記載の装置。
【請求項１３】
前記キャッシュは、２番目のサイクルで前記複数のブロックのデータのうち第２のブロックのデータを受け取るように構成され、
前記キャッシュは、前記第２のブロックのデータを破棄するように構成される、請求項１２に記載の装置。
【請求項１４】
コンピュータ可読プログラムが記憶されたコンピュータ・プログラムであって、前記コンピュータ可読プログラムは、コンピューティング・デバイスで実行されると、前記コンピューティング・デバイスに、
キャッシュ・ラインを求める要求をローカルに発行させ、前記キャッシュ・ラインは複数のデータ・ブロックに記憶され、前記複数のデータ・ブロックの各データ・ブロックはエラー訂正符号ビットのセットと１つのメタビットとを有し、前記複数のデータ・ブロックの前記メタビットが組み合わさってローカル／グローバル状態および特殊訂正不能エラー・ビットを示し、
１番目のサイクルで前記複数のブロックのデータのうち第１のブロックのデータを受け取らせ、
前記第１のブロックのデータのメタビットを特定させ、
前記第１のブロックのデータの前記メタビットに基づいて前記キャッシュ・ラインのローカル／グローバル状態を判定させる、コンピュータ・プログラム。
【請求項１５】
前記コンピュータ可読プログラムはさらに、前記コンピューティング・デバイスに、
前記キャッシュ・ラインの前記ローカル／グローバル状態がローカルであると判定するのに応答して、前記第１のブロックのデータを要求元のプロセッサ・コアに転送させる、請求項１４に記載のコンピュータ・プログラム。
【請求項１６】
前記コンピュータ可読プログラムはさらに、前記コンピューティング・デバイスに、
２番目のサイクルで前記複数のブロックのデータのうち第２のブロックのデータを受け取らせ、
前記第２のブロックのデータのメタビットを特定させ、
前記第１のブロックのデータの前記メタビットおよび前記第２のブロックのデータの前記メタビットに基づいて、前記キャッシュ・ラインの特殊訂正不能エラー状態を判定させる、請求項１５に記載のコンピュータ・プログラム。
【請求項１７】
前記コンピュータ可読プログラムはさらに、前記コンピューティング・デバイスに、
前記特殊訂正不能エラー状態に基づいてエラー・ステータスを設定させ、
前記エラー・ステータスと共に前記第２のブロックのデータを前記要求元のプロセッサ・コアに転送させる、請求項１６に記載のコンピュータ・プログラム。
【請求項１８】
前記コンピュータ可読プログラムはさらに、前記コンピューティング・デバイスに、
前記キャッシュ・ラインの前記ローカル／グローバル状態がグローバルであると判定するのに応答して、前記キャッシュ・ラインを求める要求をグローバルに再発行させる、請求項１４に記載のコンピュータ・プログラム。
【請求項１９】
前記コンピュータ可読プログラムは、データ処理システム内に記憶され、前記コンピュータ可読プログラムは、ネットワークを通じてリモートのデータ処理システムからダウンロードされたものである、請求項１４に記載のコンピュータ・プログラム。
【請求項２０】
前記コンピュータ可読プログラムは、サーバ・データ処理システム内に記憶され、前記コンピュータ可読プログラムは、リモート・システムと共に使用するために、ネットワークを通じてリモートのデータ処理システムにダウンロードされる、請求項１４に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般には、改良されたデータ処理装置および方法に関し、より詳細には、システム・メモリに効率的にメタビット（metabit）を記憶する機構に関する。
【背景技術】
【０００２】
マイクロプロセッサに多数のコアを搭載する傾向が高まっている。マルチコア・プロセッサは、プログラム命令を読み出し、実行する単位である独立した実際のプロセッサ（「コア」と呼ばれる）を２つ以上備えた単一の演算コンポーネントである。命令は、加算、データ移動、分岐等の通常の中央演算処理装置（ＣＰＵ）の命令であるが、複数のコアが複数の命令を同時に実行することができ、並列コンピューティングに伴うプログラムの全体的な速度を上げることができる。製造者は、通例、１つの集積回路ダイ（チップ・マルチプロセッサまたはＣＭＰと呼ばれる）、または１つのチップ・パッケージの複数のダイにコアを組み込む。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
演算時、対称多重処理（symmetric multiprocessing：ＳＭＰ）ではマルチプロセッサ・コンピュータ・ハードウェア・アーキテクチャを用い、このアーキテクチャでは２つ以上のプロセッサが１つの共有主記憶に接続され、１つのＯＳインスタンスによって制御される。マルチコア・プロセッサの場合は、ＳＭＰアーキテクチャをコアに適用して、各コアを別々のプロセッサとして扱うことができる。複数個のコア・チップでＳＭＰシステムを構築する場合は、増大するスヌープ（snoop）帯域幅要件に対応するためのコヒーレントな相互接続の設計と技術に著しい負担がかかる。相互接続を広くすると、プロセッサ・モジュールとシステム・ボードが複雑かつ高費用になり、結果としてスヌープ帯域幅が大きくなる。
【０００４】
キャッシュ・コヒーレンシとは、共有リソースのローカル・キャッシュに記憶されたデータの整合性を言う。システムの複数の構成要素が共通のメモリ・リソースのキャッシュを保持しているときには、整合性のないデータで問題が発生する可能性がある。これは特に多重処理システムの処理装置の場合にそうである。第１の処理コアが以前に読み出したメモリ・ブロックのコピーを持っていて、第２の処理コアがそのメモリ・ブロックを変更すると、第１の処理には無効なメモリのキャッシュが残され、その変更が通知されない場合がある。キャッシュ・コヒーレンシは、そのような不一致を管理し、キャッシュとメモリとの間の整合性を保つことを目的とする。
【課題を解決するための手段】
【０００５】
一例示的実施形態では、データ処理システム内でメモリ要求を行う方法が提供される。方法は、複数のデータ・ブロックにキャッシュ・ラインを記憶するステップを含む。複数のデータ・ブロックの各データ・ブロックはエラー訂正符号ビットのセットと１つのメタビットとを有する。複数のデータ・ブロックのメタビットが組み合わさってローカル／グローバル状態および特殊訂正不能エラー・ビットを示す。方法はさらに、キャッシュ・ラインを求める要求をローカルに発行するステップを含む。方法はさらに、１番目のサイクルで複数のブロックのデータのうち第１のブロックのデータを受け取り、第１のブロックのデータのメタビットを特定するステップを含む。方法はさらに、第１のブロックのデータのメタビットに基づいてキャッシュ・ラインのローカル／グローバル状態を判定するステップを含む。
【０００６】
別の例示的実施形態では、装置が、複数のプロセッサ・コアと、複数のプロセッサ・コアと共に第１のプロセッサ・コアに結合されたキャッシュと、メモリとを備える。キャッシュは、プロセッサ・コアからメモリ要求を受け取り、プロセッサ・コアからアクセスされるデータのキャッシュ・ラインを記憶するように構成される。メモリは、複数のデータ・ブロックにキャッシュ・ラインを記憶する。複数のデータ・ブロックの各データ・ブロックはエラー訂正符号ビットのセットと１つのメタビットとを有する。複数のデータ・ブロックのメタビットが組み合わさってローカル／グローバル状態および特殊訂正不能エラー・ビットを示す。キャッシュは、キャッシュ・ラインを求める要求をローカルに発行するように構成される。キャッシュは、１番目のサイクルで複数のブロックのデータのうち第１のブロックのデータを受け取り、第１のブロックのデータのメタビットを特定するように構成される。キャッシュは、第１のブロックのデータのメタビットに基づいてキャッシュ・ラインのローカル／グローバル状態を判定するように構成される。
【０００７】
他の例示的実施形態では、コンピュータ可読プログラムを有するコンピュータ使用可能または可読媒体を含むコンピュータ・プログラム製品が提供される。コンピュータ可読プログラムは、コンピューティング・デバイスで実行されると、コンピューティング・デバイスに、方法の例示的実施形態に関して上述した動作のうちの各動作またはそれらの組み合わせを行わせる。
【０００８】
本発明の上記および他の特徴および利点は、以下の本発明の例示的な実施形態の詳細な説明に記載され、またはその説明に照らして当業者に明らかになろう。
【０００９】
本発明ならびにその好ましい使用の態様とさらなる目的および利点は、添付図面と併せて以下の例示的実施形態の詳細な説明を参照することにより最もよく理解される。
【図面の簡単な説明】
【００１０】
【図１】例示的実施形態の態様を実施することが可能な例示的データ処理システムのブロック図である。
【図２】例示的実施形態の態様を実施することが可能なデータ処理システムにおけるキャッシュ階層の例のブロック図である。
【図３】エラー訂正符号を持つキャッシュ・ラインの例を示す図である。
【図４】例示的な実施形態による、エラー訂正符号、ローカル／グローバル・ビット、および特殊訂正不能エラー・ビットを持つキャッシュ・ラインの例を示す図である。
【図５】例示的な実施形態による、ローカル／グローバル・ビットおよび特殊訂正不能エラー・ビットを示すメタビットを持つキャッシュ・ラインの例を示す図である。
【図６】例示的な実施形態による、メタビットで表されるＬ／ＧとＳＵＥ状態の組み合わせを示す表である。
【図７】例示的な実施形態による、要求を処理するキャッシュにおける機構の動作を説明するフローチャートである。
【発明を実施するための形態】
【００１１】
例示的実施形態は、システム・メモリにメタビットを効率的に記憶する機構を提供する。例示的実施形態は種々のデータ処理環境で利用することができる。例示的実施形態の具体的な要素および機能の説明のための文脈を提供するために、以下で、例示的実施形態の態様を実施することが可能な環境の例として図１および図２を提供する。図１および図２は例に過ぎず、本発明の態様または実施形態を実施することが可能な環境に関しての制限を主張または示唆するものではないことを理解されたい。本発明の主旨および範囲から逸脱することなく、図示の環境に多くの変更を加えることができる。
【００１２】
図１は、例示的実施形態の態様を実施することが可能なデータ処理システム例のブロック図である。データ処理システム１００は、本発明の例示的実施形態の処理を実施するコンピュータ使用可能コードまたは命令を置くことが可能なコンピュータの例である。
【００１３】
図の例では、データ処理システム１００は、ノース・ブリッジおよびメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ）１０２ならびにサウス・ブリッジおよび入出力（Ｉ／Ｏ）コントローラ・ハブ（ＳＢ／ＩＣＨ）１０４を含むハブ・アーキテクチャを用いている。処理装置１０６、主記憶１０８、およびグラフィック・プロセッサ１１０は、ＮＢ／ＭＣＨ１０２に接続される。グラフィック・プロセッサ１１０は、アクセラレーテッド・グラフィクス・ポート（ＡＧＰ）を通じてＮＢ／ＭＣＨ１０２に接続することができる。
【００１４】
図の例では、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ１１２がＳＢ／ＩＣＨ１０４に接続する。オーディオ・アダプタ１１６、キーボードおよびマウス・アダプタ１２０、モデム１２２、読取専用メモリ（ＲＯＭ）１２４、ハード・ディスク・ドライブ（ＨＤＤ）１２６、ＣＤ−ＲＯＭドライブ１３０、ユニバーサル・シリアル・バス（ＵＳＢ）ポートおよび他の通信ポート１３２、ならびにＰＣＩ／ＰＣＩｅデバイス１３４が、バス１３８およびバス１４０を通じてＳＢ／ＩＣＨ１０４に接続する。ＰＣＩ／ＰＣＩｅデバイスは、例えば、Ｅｔｈｅｒｎｅｔ（Ｒ）アダプタ、アドイン・カード、ノートブック・コンピュータ用のＰＣカードを含むことができる。ＰＣＩはカード・バス・コントローラを使用するのに対し、ＰＣＩｅはカード・バス・コントローラを使用しない。ＲＯＭ１２４は、例えばフラッシュ基本入出力システム（ＢＩＯＳ）である。
【００１５】
ＨＤＤ１２６およびＣＤ−ＲＯＭドライブ１３０は、バス１４０を通じてＳＢ／ＩＣＨ１０４に接続する。ＨＤＤ１２６およびＣＤ−ＲＯＭドライブ１３０は、例えばIntegrated Drive Electronics（ＩＤＥ）またはSerialAdvanced Technology Attachment（ＳＡＴＡ）インターフェースを使用する。Ｓｕｐｅｒ  Ｉ／Ｏ（ＳＩＯ）デバイス１３６をＳＢ／ＩＣＨ１０４に接続することができる。
【００１６】
オペレーティング・システムが処理装置１０６で実行される。オペレーティング・システムは、図１のデータ処理システム１００内の各種構成要素を連携させ、それらの制御を提供する。クライアントとしてのオペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（Ｒ）７（ＭｉｃｒｏｓｏｆｔおよびＷｉｎｄｏｗｓ（Ｒ）は米国、他の国、またはその両方におけるＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの商標である）等の市販のオペレーティング・システムを用いることができる。Ｊａｖａ（Ｒ）プログラミング・システム等のオブジェクト指向のプログラミング・システムをオペレーティング・システムと連携して実行し、データ処理システム１００で実行されるＪａｖａ（Ｒ）のプログラムやアプリケーションからオペレーティング・システムへの呼び出しを提供することができる（Ｊａｖａ（Ｒ）はＯｒａｃｌｅまたはその関連会社あるいはその両方の商標である）。
【００１７】
サーバとしてのデータ処理システム１００は、例えば、Ａｄｖａｎｃｅｄ  Ｉｎｔｅｒａｃｔｉｖｅ  Ｅｘｅｃｕｔｉｖｅ（ＡＩＸ（Ｒ））オペレーティング・システムまたはＬＩＮＵＸオペレーティング・システムを実行するＩＢＭ（Ｒ）のｅＳｅｒｖｅｒ（ＴＭ）Ｓｙｓｔｅｍ  ｐ（Ｒ）コンピュータ・システムを用いることができる（ＩＢＭ、ｅＳｅｒｖｅｒ、Ｓｙｓｔｅｍ  ｐ、およびＡＩＸは、米国、他の国、またはその両方におけるInternational Business Machines Corporationの商標であり、ＬＩＮＵＸは、米国、他の国、またはその両方におけるLinus Torvaldsの登録商標である）。データ処理システム１００は、処理装置１０６に複数のプロセッサを含む対称マルチプロセッサ（ＳＭＰ）システムとすることができる。あるいは、シングル・プロセッサ・システムを用いてもよい。
【００１８】
オペレーティング・システム、オブジェクト指向プログラミングのシステム、およびアプリケーションまたはプログラムに対する命令は、ＨＤＤ１２６等の記憶装置に置かれ、主記憶１０８にロードして処理装置１０６で実行することができる。本発明の例示的実施形態の処理は、コンピュータ使用可能なプログラム・コードを使用して処理装置１０６によって行うことができ、プログラム・コードは、例えば主記憶１０８やＲＯＭ１２４等のメモリ、または１つまたは複数の周辺装置１２６および１３０に置くことができる。
【００１９】
図１に示すバス１３８やバス１４０等のバス・システムは、１つまたは複数のバスからなることができる。無論、バス・システムは、通信ファブリックまたはアーキテクチャに接続された種々の構成要素やデバイス間のデータ転送を可能にする任意種の通信ファブリックまたはアーキテクチャを使用して実装することができる。図１のモデム１２２やネットワーク・アダプタ１１２等の通信装置は、データの送受信に使用される１つまたは複数のデバイスを含むことができる。メモリは、例えば、主記憶１０８、ＲＯＭ１２４、または図１のＮＢ／ＭＣＨ１０２にあるようなキャッシュとすることができる。
【００２０】
当業者は、図１のハードウェアは実装によって異なってよいことを理解されよう。図１に示すハードウェアに加えて、またはその代わりに、他の内部ハードウェアや、フラッシュ・メモリ、それに相当する不揮発性メモリ、または光学ディスク・ドライブ等の周辺装置を使用することができる。また、例示的実施形態の処理は、本発明の主旨および範囲から逸脱することなく、上記のＳＭＰシステム以外のマルチプロセッサ・データ処理システムに適用することができる。
【００２１】
さらに、データ処理システム１００は、多数の種々のデータ処理システムの形態をとることができ、それらには、クライアント・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、タブレット・コンピュータ、ラップトップ・コンピュータ、電話機もしくは他の通信デバイス、携帯情報端末（ＰＤＡ）等が含まれる。一部の例では、データ処理システム１００は、例えばオペレーティング・システム・ファイルまたはユーザによって生成されたデータあるいはその両方を記憶する不揮発性メモリを提供するためのフラッシュ・メモリを備えた携帯型コンピューティング・デバイスである。基本的に、データ処理システム１００は、現在知られる、または今後開発される任意のデータ処理システムであり、アーキテクチャに関して制限されない。
【００２２】
図２は、例示的実施形態の態様を実施することが可能なデータ処理システムのキャッシュ階層の例のブロック図である。データ処理システム２００は複数の処理装置２１０、２２０を備える。処理装置２１０は複数のコア２１１、２１２を有する。コア２１１はＬ１キャッシュ２１３を有し、コア２１２はＬ１キャッシュ２１４を有する。同様に、処理装置２２０は複数のコア２２１、２２２を有する。コア２２１はＬ１キャッシュ２２３を有し、コア２２２はＬ１キャッシュ２２４を有する。
【００２３】
処理装置２１０内で、コア２１１、２１２はＬ２キャッシュ２１５にアクセスする。処理装置２２０内で、コア２２１、２２２はＬ２キャッシュ２２５にアクセスする。処理装置２１０、２２０は、共有メモリ２３０にアクセスし、共有メモリ２３０は処理装置２１０、２２０に割り当てられている。処理装置２１０は直接メモリ２３１に接続され、処理装置２２０は直接メモリ２３２に接続されているが、処理装置２１０はメモリ２３２にアクセスすることができ、処理装置２２０はメモリ２３１にアクセスすることができる。図２に示す例では２レベルのキャッシュ（Ｌ１およびＬ２）があるが、全体的なキャッシュ階層は任意数のレベルを含むことができる。Ｌ２キャッシュ２１５とＬ２キャッシュ２２５は、コヒーレントな相互接続２２６を介してメモリ２３１およびメモリ２３２にアクセスし、コヒーレントな相互接続２２６は処理装置間のコヒーレントな相互接続ファブリック（バス）からなる。スヌープ等を伴うキャッシュ動作は、コヒーレントな相互接続２２６を使用して行われる。
【００２４】
コア２１１がメモリ２３１にあるデータにアクセスする場合、Ｌ１キャッシュ２１３がキャッシュ・ラインを記憶し、そのキャッシュ・ラインはＬ２キャッシュ２１５にも記憶される。コア２２２がメモリ２３１で同じデータ・アドレスにアクセスすると、Ｌ１キャッシュ２２４は、Ｌ２キャッシュ２２５にキャッシュ・ラインを求める要求を発行する。キャッシュは、キャッシュ・コヒーレンシを行ってキャッシュ間の完全性を保証しなければならない。キャッシュ・コヒーレンシのプロトコルは、各キャッシュがメモリ・アクセスを観察して、いつキャッシュ・ラインが無効になったかを判定することを伴う。各自が多くの処理コアを有する多数の処理装置を含む可能性のあるデータ処理システム２００のような多重処理システムでは、相互接続を広くするとプロセッサ・モジュールとシステム・ボードが複雑かつ高費用となり、その結果コヒーレントな相互接続２２６により大きなスヌープ帯域幅が必要となる。
【００２５】
所与のプロセッサ・モジュールの外部でコヒーレントな相互接続２２６のスヌープ帯域幅を低減させる機構の１つは、メモリ内でデータの各キャッシュ・ブロックに「ローカル／グローバル」ビット（Ｌ／Ｇビット）を含めるものである。このビットは、そのチップの外部にあるプロセッサ／キャッシュがそのデータのコピーを保持しているかどうかを示す。ローカル・プロセッサが、ローカルに接続されたシステム・メモリの一部にあるデータのブロックを要求する時、プロセッサはまず、Ｌ／Ｇビットが「ローカル」を示すと推測して「ローカル」のアクセスを指示する。ローカル・メモリからデータが返されると、プロセッサ／キャッシュのロジックは、データと共に返されたＬ／Ｇビットを調べる。ブロックがリモートのプロセッサ／キャッシュからアクセスされていない場合は、データをコアに転送することができ、コマンドをグローバルに再発行しなくてよい。Ｌ／Ｇビットが「グローバル」を示す場合は、データは要求元のコアに転送されず、メモリ要求をグローバル範囲で再発行しなければならない。Ｌ／Ｇビットは２階層のコマンド範囲を表すが、例示的実施形態は任意の複数階層のコマンド範囲の設計に適用可能である。
【００２６】
バス幅が制限されているために、メモリは、キャッシュ・ブロックを複数のサイクル（ビート）で上位レベルのキャッシュに転送することができる。例えば、６４バイト（６４Ｂ）のキャッシュ・ラインを、１サイクルにつき３２バイト（３２Ｂ）ずつ、２サイクルで転送することができる。要求アドレスに応じて、メモリは、６４Ｂのラインの２つの３２Ｂのセグメントをどちらの順序で返してもよい。性能上の理由から、要求元のキャッシュがメモリからＬ／Ｇビットを受け取るのが早いほど、キャッシュはより早くクリティカル・データをコアに転送するか、要求をグローバルに再発行することができる。したがって、どちらのセグメントが最初に返されるかに関係なく、Ｌ／Ｇビットを最初のサイクルのデータと共に返すことが理想的である。バスを通じてラインを転送するのにより多くのサイクルを要するほど、終端の待ち時間の影響を緩和するためにＬ／Ｇビットをできるだけ早く返すことが重要となる。
【００２７】
Ｌ／Ｇビットに加えて、高信頼性／可用性／保守性（ＲＡＳ）システムの中には、キャッシュ・ラインごとに特殊訂正不能エラー（ＳＵＥ）ビットをメモリに保持するものがある。このＳＵＥビットは、当該キャッシュ・ラインがメモリに書き戻される前（例えばキャッシュのキャストアウト（castout）時に）にシステム内で訂正することができないエラーが検出されたことを意味する。メモリからそのデータが再度読みだされると、ＳＵＥビットはそのデータを「不良」と示し、そのエラーがシステム・メモリで発生したものではないことを示す診断符号を通知する。この情報は、システム内で障害を切り離し、追跡する助けとなる。
【００２８】
大半のコンピュータ・システムは、業界標準のダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）デバイスを使用している。典型的なメモリは、ほぼ必ず７２ビットの最小バス幅で区分される。これは、６４ビットのデータごとに８ビットのエラー訂正符号（ＥＣＣ）をあらかじめ考慮に入れている。それらの構築ブロックから、同じ８：１のデータ対ＥＣＣの比でより大きなデータ構造が実現される。例えば、８バイトのＥＣＣで６４バイトのキャッシュ・ブロックをサポートすることができる。
【００２９】
図３は、エラー訂正符号を含むキャッシュ・ラインの例を示す。すべてのＥＣＣ符号は、関連付けられた誤訂正率を有する。すなわち、本来は訂正可能なエラーがその符号で正しく訂正されない有限の確率がある。所与の量のデータに対してＥＣＣ検査ビットを増やすと誤訂正率が低下する。ＥＣＣ検査ビットを減らすと、誤訂正率が上がる。図３で理解されるように、６４Ｂのキャッシュ・ラインが２つの３２Ｂのデータ・ブロックに分けられ、各ブロックは４ＢのＥＣＣ検査ビットを有する（８：１の比に基づく）。
【００３０】
メモリ内のキャッシュ・ラインごとにＬ／ＧビットとＳＵＥビットを追跡することに伴う問題は、それらのビットにより、エラーの検出と訂正に利用できるＥＣＣ検査ビットの数が減ることである。図４は、例示的実施形態による、エラー訂正符号、ローカル／グローバル・ビット、および特殊訂正不能エラー・ビットを有するキャッシュ・ラインの例を示す。図の例では、Ｌ／Ｇビットが３２Ｂのデータごとに複製され、それにより、どの３２Ｂセグメントがクリティカル・セグメントであるか（すなわち、どのセグメントが最初に読み出されて要求元のキャッシュに返されるか）に関係なく、可能な限り早くＬ／Ｇビットを入手できるようにしている。したがって、２つの３２Ｂのセグメントの合計に対応する８Ｂのうち３ビットをＬ／ＧとＳＵＥに使用しなければならず、６１ビット（８Ｂ−３ビット）をＥＣＣ検査ビットとして使用することができる。ハイエンドのサーバ環境によっては、メモリＲＡＳのレベルとそれに伴う誤訂正率の要件が非常に厳しいため、Ｌ／Ｇビットや、キャッシュ・ラインごとにビットのコピーを複数有する等の性能最適化の実装がはじめから不可能な場合がある。
【００３１】
例示的実施形態は、ＳＵＥビットとＬ／Ｇビットに消費されるＥＣＣ検査ビットの数を最小に抑えながら、キャッシュ・ラインのクリティカルな粒度に対応するメタビットを記憶する効率的な機構を提供する。例示的実施形態は、キャッシュ・ラインにメモリ内でＳＵＥビットが付されている場合、Ｌ／Ｇビットの状態は不定である可能性があり、したがって要求元のキャッシュはそのキャッシュ・ラインをグローバルとして扱わなければならないことを認識する。例示的実施形態は、ＳＵＥの指示とＬ／Ｇ情報を組み合わせて２メタビットにすることにより、各キャッシュ・セグメントのＬ／Ｇ情報を提供しつつＥＣＣの誤訂正率の低下を最小に抑える。
【００３２】
プロセッサ／キャッシュがメモリの１キャッシュ・ラインのデータを要求するとき、キャッシュは、２番目（または後の）サイクルまでそのデータが不良である旨の通知を受け取らない可能性がある。例えば、１２８Ｂのキャッシュ・ラインを受け取るのに４サイクルを要する場合（１サイクル当たり３２Ｂ）、エラーの指示は４番目のサイクルまで到着しない可能性がある。性能上の理由から、特にそのような種類のエラーは非常にまれであるため、エラーの指示を待って最初の３サイクルのデータを停滞させることは望ましくない場合がある。
【００３３】
図４に示す例では、６４Ｂのキャッシュ・ラインを受け取るのに２サイクルかかる（１サイクル当たり３２Ｂ）。ＳＵＥの指示は２番目のサイクルまで到着しない可能性がある。最初のサイクルのデータをコアに提供して、推測に基づいて処理を開始すると有利であると考えられる。
【００３４】
図５は、例示的実施形態による、ローカル／グローバル・ビットと特殊訂正不能エラー・ビットを示すメタビットを有するキャッシュ・ラインの例を示す。これらのメタビットＭ０およびＭ１は、ＳＵＥ情報とＬ／Ｇ状態を組み合わせている。図６は、例示的実施形態による、このメタビットで表されるＬ／ＧおよびＳＵＥの状態の組み合わせを示す表である。ＳＵＥ＝０の時、Ｍ０およびＭ１ビットは同じ値を含み、Ｌ／Ｇビットの真の状態を反映することに留意されたい。したがって、ＳＵＥ＝０の場合（大半の場合はこれが該当する）、キャッシュは、どのサイクルが最初に返されるかに関係なく同じ値を得る。
【００３５】
ゼロ（０）および１の状態は、本明細書に記載の機能に影響を与えずに入れ替えることが可能な２進値の表現であることに留意されたい。つまり、１の状態が真の値を表し、ゼロの状態が偽の値を表す、あるいは、ゼロの状態が真の値を表し、１の状態が偽の値を表すことが可能である。本明細書の説明で使用する場合は、１の状態が真の値またはアサートを表し、ゼロ（０）の状態が偽の値またはデアサートを表す。
【００３６】
ＳＵＥ＝１の場合、キャッシュはＬ／Ｇビットの真の状態を失うが、要求元のキャッシュがクリティカル（最初の）サイクルのデータと共にＬ／Ｇ＝０を受け取るかＬ／Ｇ＝１を受け取るかに関係なく、キャッシュはその後ＳＵＥの指示を認識する。ＳＵＥの指示を認識すると、要求がローカルに処理されたかグローバルに再発行されたかに関係なく、キャッシュは、エラー・ステータスの指示をデータと共にコアに転送することによってエラー処理手順を開始する。これと同じことは、メタビットが破損していた可能性のあるメモリ読み出しで真の訂正不能エラーが検出された場合も当てはまる。
【００３７】
例示的実施形態によると、メモリのエラー・ステータスが分かる前に、最初のサイクル（クリティカル・ビート）をプロセッサ・コアに転送することができる。コアはそのデータを使用することができるが、データのエラー・ステータスが分かるまでは命令を終了しない。しかし、データの最初のビートが到着した時にＬ／Ｇビットの状態が分かっていない場合は、読み出し要求をグローバル範囲で再発行する（Ｌ／Ｇ＝グローバルの場合）必要がある可能性があるため、クリティカル・ビートのデータをコアに転送することができない。コヒーレント動作は常にグローバルに発行することができ、その結果スヌープ帯域幅の需要が増すため、キャッシュ・ラインにＳＵＥを付加しておけば、データが実際にはどのリモート・キャッシュにもない場合でも、Ｌ／Ｇビットの状態を「グローバル」と見なすことができる。ＳＵＥが付されたキャッシュ・ラインは非常にまれにしか発生せず、したがって、ＳＵＥが存在する時にＬ／Ｇの状態をデフォルトで「グローバル」にしても性能にはほとんど影響しない。
【００３８】
Ｌ／Ｇの状態は、「スヌープ・フィルタ・ステータス」信号（ＳＦＳＴＡＴ）を介して要求元のキャッシュに通信される。この信号は、最初のサイクルのデータに合わせてメモリ・コントローラにより要求元のキャッシュに送信される。ＳＦＳＴＡＴ信号の状態は、クリティカル・サイクルのデータに付随することになるメタビットの状態（Ｍ０またはＭ１）に等しい。メモリ・コントローラが２番目（すなわち最後の）サイクルのデータを受け取ると、２メタビットを復号し、等しくない場合は、要求元のキャッシュに返される２番目（すなわち最後の）サイクルのデータに付随するＳＵＥの指示をアサートする。そして、キャッシュは２番目／最後のサイクルのデータに合わせてそのエラー・ステータスをコアに転送する。エラー・ステータス＝１の場合、コアはエラー処理を開始する。
【００３９】
当業者には理解されるように、本発明は、システム、方法、またはコンピュータ・プログラム製品として実施することができる。したがって、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、または、本明細書で一般に「回路」、「モジュール」、もしくは「システム」と称するソフトウェアの態様とハードウェアの態様を組み合わせた実施形態の形をとることができる。さらに、本発明の態様は、コンピュータにより使用可能なプログラム・コードが実施された１つまたは複数のコンピュータ可読媒体として実施されたコンピュータ・プログラム製品の形をとることができる。
【００４０】
１つまたは複数のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体である。コンピュータ可読記憶媒体は、これらに限定されないが、例えば、電子、磁気、光学、電磁気、赤外線、もしくは半導体のシステム、装置、デバイス、またはそれらの適切な組み合わせである。コンピュータ可読記憶媒体のより具体的な例（ただし完全な網羅ではない列挙）は、１つまたは複数の配線を有する電気接続、携帯可能コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、消去可能プログラム可能読取専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、携帯可能コンパクト・ディスク読取専用メモリ（ＣＤＲＯＭ）、光学記憶装置、磁気記憶装置、またはそれらの適切な組み合わせを含む。本文献の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによる使用のために、またはそれらとの関連でプログラムを保持または記憶することが可能な任意の有形の媒体とすることができる。
【００４１】
コンピュータ可読信号媒体は、例えばベースバンドや搬送波の一部として伝搬される、コンピュータ可読のプログラム・コードが内部に具現化された伝搬データ信号を含むことができる。そのような伝搬信号は、これらに限定されないが、電磁気、光学、またはそれらの適切な組み合わせを含む様々な形態をとることができる。コンピュータ可読信号媒体は、命令実行システム、装置、またはデバイスによる使用のために、またはそれらとの関連でプログラムを通信、伝搬、または移送することが可能な、コンピュータ可読記憶媒体以外の任意のコンピュータ可読媒体であってよい。
【００４２】
コンピュータ可読媒体に実施されるコンピュータ・コードは、これらに限定されないが、ワイヤレス、電線、光ファイバ・ケーブル、無線周波（ＲＦ）等、またはそれらの適切な組み合わせを含む適当な媒体を使用して伝送することができる。
【００４３】
本発明の態様の動作を実施するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）（ＴＭ）、Ｓｍａｌｌｔａｌｋ（ＴＭ）、Ｃ＋＋等のオブジェクト指向のプログラミング言語と、「Ｃ」プログラミング言語または類似のプログラミング言語等の従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組み合わせで書くことができる。プログラム・コードは、独立型のソフトウェア・パッケージとして、すべてがユーザのコンピュータで実行されても、一部がユーザのコンピュータで実行されても、一部がユーザのコンピュータで実行され、一部がリモート・コンピュータで実行されても、すべてがリモート・コンピュータまたはサーバで実行されてもよい。後者の場合は、ローカル・エリア・ネットワーク（ＬＡＮ）やワイド・エリア・ネットワーク（ＷＡＮ）を含む任意種のネットワークを通じてリモート・コンピュータをユーザのコンピュータに接続しても、または外部のコンピュータに接続してもよい（例えばインターネット・サービス・プロバイダを使用してインターネットを通じて）。
【００４４】
以下、本発明の例示的実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本発明の態様を説明する。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組み合わせはコンピュータ・プログラム命令によって実施できることが理解されよう。そのようなコンピュータ・プログラム命令を汎用コンピュータ、特殊目的コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供してマシンを作り出し、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を生成することができる。
【００４５】
そのようなコンピュータ・プログラム命令は、コンピュータ可読媒体に記憶して、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに特定の方式で機能するように指示して、コンピュータ可読媒体に記憶された命令で、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する命令を含んだ製造品を作製することもできる。
【００４６】
コンピュータ・プログラム命令は、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードして、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを行わせて、コンピュータまたは他のプログラム可能装置で実行される命令で、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施するための処理を提供するように、コンピュータによって実施される処理を生成してもよい。
【００４７】
図７は、例示的実施形態による、要求を処理するキャッシュ内の機構の動作を説明するフローチャートである。動作はブロック７００で開始し、機構がローカル範囲で要求を発行する（ブロック７０１）。機構は、１番目のサイクルのデータを受け取り（ブロック７０２）、スヌープ・フィルタ・ステータス・ビット（ＳＦＳＴＡＴ）を特定する（ブロック７０３）。機構は、１番目のサイクルのＳＦＳＴＡＴビットがゼロであるか１であるかを判定する（ブロック７０４）。「スヌープ・フィルタ・ステータス」信号（ＳＦＳＴＡＴ）を介してＬ／Ｇの状態が要求元のキャッシュに通信される。この信号は、１番目のサイクルのデータに合わせてメモリ・コントローラにより要求元のキャッシュに送られる。ＳＦＳＴＡＴ信号の状態は、クリティカル・サイクルのデータに付随することになるメタビットの状態（Ｍ０またはＭ１）に等しい。
【００４８】
ＳＦＳＴＡＴ＝０の場合、機構は、Ｌ／Ｇ状態がローカルと見なし、機構は１番目のサイクルのデータを要求元コアに転送する（ブロック７０５）。次いで、機構は２番目のサイクルのデータを受け取り（ブロック７０６）、ＳＵＥビットを特定する（ブロック７０７）。機構は次いで、２番目のサイクルのデータのエラー・ステータスをＳＵＥのステータスに等しく設定し（ブロック７０８）、２番目のサイクルのデータをエラー・ステータスと共にコアに転送する（ブロック７０９）。メモリ・コントローラは、２番目（すなわち最後の）サイクルのデータを受け取ると、２つのメタビットを復号し、等しくない場合は、要求元のキャッシュに返される２番目（すなわち最後の）サイクルのデータに付随するＳＵＥの指示をアサートする。その後、動作はブロック７１０で終了する。
【００４９】
ブロック７０４でＳＦＳＴＡＴ＝１の場合、機構は、２番目のサイクルのデータを受け取って破棄し（ブロック７１１）、グローバル範囲で要求を再発行する（ブロック７１２）。ブロック７１１および７１２の動作はどちらを先に行ってもよい。機構は、１番目のサイクルのデータをグローバル範囲の要求から受け取る（ブロック７１３）。
【００５０】
次いで、動作はブロック７０５に進み、機構は１番目のサイクルのデータをコアに転送する。機構は次いで２番目のサイクルのデータを受け取り（ブロック７０６）、ＳＵＥビットを特定する（ブロック７０７）。機構は次いで、２番目のサイクルのデータのエラー・ステータスをＳＵＥステータスに等しく設定し（ブロック７０８）、エラー・ステータスと共に２番目のサイクルのデータをコアに転送する（ブロック７０９）。その後動作はブロック７１０で終了する。
【００５１】
図のフローチャートおよびブロック図は、本発明の各種実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施のアーキテクチャ、機能、および動作を説明するものである。これに関して、フローチャートまたはブロック図の各ブロックは、指定された（１つまたは複数の）論理的機能を実施する１つまたは複数の実行可能命令を含むモジュール、セグメント、またはコードの一部を表すことができる。一部の代替の実施では、ブロックに記された機能は図に記された順序と異なる順序で行ってよいことに留意されたい。例えば、関係する機能に応じて、連続して示す２つのブロックが実際には実質的に同時に実行される、または２つのブロックが時に逆の順序で実行されることも可能である。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組み合わせは、指定された機能もしくは動作、または特殊目的ハードウェアおよびコンピュータ命令の組み合わせを行う特殊目的のハードウェアを利用したシステムによって実施できることにも留意されたい。
【００５２】
上記のように、例示的実施形態は、システム・メモリにメタビットを効率的に記憶する機構を提供する。機構は、Ｌ／ＧビットとＳＵＥビットを組み合わせてメタビットを形成する。そして、機構は、最初のサイクルのデータでキャッシュ・ラインのローカル／グローバル状態を判定する。機構は、要求元のキャッシュにデータを転送し、要求元のキャッシュは、キャッシュ・ラインのローカル／グローバル状態に基づいて要求をグローバルに再発行することができる。機構は次いで、２番目、すなわち後続のサイクルのデータでキャッシュ・ラインの特殊訂正不能エラーの状態を判定する。機構は、要求がグローバルに再発行されたかどうかに関係なくエラー処理を行う。このように、例示的実施形態の機構は、各データ・ビートごとにＬ／Ｇを提供し、使用されるＥＣＣ検査ビットの数を最小に抑え、ＳＵＥとＬ／Ｇビットの複数個のコピーが別個である場合と比べて誤訂正率を改善する。
【００５３】
上記のように、例示的実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはハードウェア要素とソフトウェア要素の両方を含む実施形態の形態をとりうることが理解されよう。一例示的実施形態では、例示的実施形態の機構は、これらに限定されないが、ファームウェア、常駐ソフトウェア、マイクロコード等を含むソフトウェアまたはプログラム・コードとして実施される。
【００５４】
プログラム・コードを記憶または実行、あるいはその両方を行うのに適したデータ処理システムは、システム・バスを通じてメモリ要素に直接または間接的に結合された少なくとも１つのプロセッサを含む。メモリ要素は、プログラム・コードの実際の実行時に用いられるローカル・メモリ、大容量記憶、および実行時に大容量記憶からコードを取り出す回数を減らすために少なくとも一部のプログラム・コードを一時的に記憶するキャッシュ・メモリを含むことができる。
【００５５】
入出力またはＩ／Ｏ装置（これらに限定されないがキーボード、ディスプレイ、ポインティング・デバイス等を含む）を直接、または介在するＩ／Ｏコントローラを通じてシステムに結合することができる。ネットワーク・アダプタもシステムに結合して、介在する私設または公衆のネットワークを通じてデータ処理システムを他のデータ処理システム、リモート・プリンタ、または記憶装置に結合することができる。モデム、ケーブル・モデム、およびＥｔｈｅｒｎｅｔ（Ｒ）カードは、現在利用することが可能なネットワーク・アダプタの種類の数例である。
【００５６】
本発明の説明は例示と説明のために提示し、網羅的なものでも、本発明を開示される形態に限定するものでもない。当業者には多くの変更と変形が明らかになろう。実施形態は、本発明の原理と実際の応用を最もよく説明し、また当業者が企図される特定の使用に適した各種変更を加えて段落「００１１」の各種実施形態について本発明を理解できるようにするために選択され、説明した。
【図１】
0005706588.tif 000002
【図２】
0005706588.tif 000003
【図３】
0005706588.tif 000004
【図４】
0005706588.tif 000005
【図５】
0005706588.tif 000006
【図６】
0005706588.tif 000007
【図７】
0005706588.tif 000008