(57)【特許請求の範囲】
【請求項１】
多重プロセッサシステム（１００）において、
少なくとも１つのメモリ記憶装置（１１０）と
インタフェースバス（１３０）を介して前記少なくとも１つのメモリ記憶装置（１１０）のそれぞれに接続されている少なくとも１つのキャッシュメモリ（５１０）と、
前記少なくとも１つのキャッシュメモリ（５１０）を複数のプロセッサ（５４０）に接続し、前記複数のプロセッサ（５４０）のそれぞれは前記少なくとも１つのメモリ記憶装置（１１０）にデータを要求する手段（５４０）を含む少なくとも１つのプロセッサインタフェースバス（５２０）と、
前記複数のプロセッサ（５４０）の１つによって要求されたデータはまもなく使用可能となること、および前記複数のプロセッサ（５４０）の前記１つは接続先の前記プロセッサインタフェースバス（５２０）の使用に対するアービトレーションを開始すべきことを前記複数のプロセッサ（５４０）の１つに通知する早期警告信号（７４０）を生成する手段（２１０）と、
前記少なくとも１つのメモリ記憶装置（１１０）の１つを前記少なくとも１つのキャッシュメモリ（５１０）の１つに接続し、該接続によって前記警告信号（７４０）が送信される少なくとも１つの早期警告バス（７１０）と
を備えたことを特徴とするシステム。
【請求項２】
Ｉ／Ｏインタフェースバスを介して前記少なくとも１つのメモリ記憶装置に接続されている複数のＩ／Ｏモジュールをさらに備え、該複数のＩ／Ｏモジュールのそれぞれは前記少なくとも１つのメモリ記憶装置のそれぞれにデータを要求する手段を有し、前記早期警告信号が前記早期警告バス上で転送された後に前記要求されたデータを前記Ｉ／Ｏインタフェースバスに転送し、前記早期警告バスによって前記早期警告信号は、前記Ｉ／Ｏモジュールが前記要求されたデータの受信前に前記Ｉ／Ｏインタフェースバスに対するアービトレーションを行うことを可能にすることを特徴とする請求項１に記載のシステム。
【請求項３】
前記早期警告バスは、
要求元バスを識別するためのデータラインと、
要求元装置を識別するためのデータラインと、
前記要求されたデータが前記少なくとも１つのメモリ記憶装置の１つから転送されることを指示する少なくとも１つのデータラインと
を備え、前記メモリ記憶装置によって前記早期警告信号が前記要求元装置に送られることを特徴とする請求項１に記載のシステム。
【請求項４】
前記プロセッサインタフェースバスの使用に対するアービトレーションが開始したときに計数を開始するタイマをさらに備え、および前記タイマが前記要求されたデータの到着前に期限切れになった場合に前記アービトレーションは終了することを特徴とする請求項３に記載のシステム。
【請求項５】
前記早期警告バスは、前記少なくとも１つのメモリ記憶装置の１つと前記少なくとも１つのキャッシュメモリの１つの間の前記インタフェースバスの一部であることを特徴とする請求項１に記載のシステム。
【請求項６】
多重プロセッサ処理システム（１００）においてメモリ記憶装置（１１０）から複数の要求元装置（５４０、３２０）の１つへのデータ転送に関する早期警告を提供する方法であって、
（１）前記複数の要求元装置（５４０、３２０）の１つによって、メモリ記憶装置（１１０）にデータ（２３０）を要求するステップと、
（２）前記要求されたデータ（２３０）がまもなく来るということ、および前記複数の要求元装置（５４０、３２０）の１つがバスアービトレーションを開始すべきことを前記複数の要求元装置（５４０、３２０）の１つに指示するためにメモリ記憶装置（１１０）から早期警告信号（７４０）を送信するステップであって、
第１の信号（７２０）を早期警告バス（７１０）に送信し、前記第１の信号（７２０）は複数のインタフェースバス（３３０、３４０）から前記データ（２３０）が要求された１つを識別するステップと、
第２の信号（７３０）を前記早期警告バス（７１０）に送信し、前記第２の信号（７３０）は前記複数の要求元装置（５４０、３２０）の１つを識別するステップと、
第３の信号（７４０）を早期警告バス（７１０）に送信し、前記第３の信号（７４０）は、有効な早期警告が実際に与えられたこと、および前記複数の要求元装置（５４０、３２０）の１つによって前記バスアービトレーションが開始されるべきことを指示するステップと
を含むステップと、
（３）前記複数の要求元装置（５４０、３２０）の１つによって、前記複数のバスインタフェース（５２０、３４０）の１つの使用に関するアービトレーションを行うステップと、
（４）前記複数の要求元装置（５４０、３２０）の１つによって要求された前記データ（２３０）を受信するステップと
を備えることを特徴とする方法。
【請求項７】
ステップ（３）は
前記バスアービトレーションが開始したときにタイマを設定するステップと、
ステップ（４）で前記要求されたデータが送信される前に前記タイマが期限切れになった場合に前記バスアービトレーションを解放するステップと
を備えることを特徴とする請求項６に記載の方法。
【請求項８】
多重プロセッサ処理システム（１００）においてメモリ記憶装置（１１０）から複数の要求元装置（５４０、３２０）の１つへのデータ転送に関する早期警告を提供するシステムであって、
前記複数の装置（５４０、３２０）の１つによって、メモリ記憶装置（１１０）からのデータ（２３０）を要求する手段（３３０、３４０）と、
前記要求されたデータ（２３０）がまもなく来るということ、および前記複数の要求元装置（５４０、３２０）の１つがバスアービトレーションを開始すべきことを前記複数の要求元装置（５４０、３２０）の１つに指示するためにメモリ記憶装置（１１０）から早期警告信号（７４０）を送信する手段（７１０）であって、
第１の信号（７２０）を早期警告バス（７４０）に送信し、前記第１の信号（７２０）は複数の要求先インタフェースバス（３３０、３４０）から前記データ（２３０）が要求された１つを識別する手段と、
第２の信号（７３０）を前記早期警告バス（７４０）に送信し、前記第２の信号（７３０）は前記複数の要求元装置（５４０、３２０）の１つを識別する手段と、
第３の信号（７４０）を早期警告バスに送信し、前記第３の信号（７４０）は、有効な早期警告が実際に送られたこと、および前記複数の要求元装置（５４０、３２０）の１つによって前記バスアービトレーションが開始されるべきことを指示する手段と
を含む手段と、
前記複数の要求元装置（５４０、３２０）の１つによって、前記複数のバスインタフェース（５２０、３４０）の１つの使用に関するアービトレーションを行う手段（５４０、３２０）と、
前記複数の要求元装置（５４０、３２０）の１つによって要求された前記データ（２３０）を受信する手段（１１０）と
を備えたことを特徴とするシステム。
【請求項９】
前記アービトレーションを行う手段は、
前記バスアービトレーションが開始したときにタイマを設定する手段と、
前記送信手段により前記要求データが送信される前に前記タイマが期限切れになった場合に、前記バスアービトレーションを解放する手段と
を備えたことを特徴とする請求項８に記載のシステム。
【請求項１０】
前記早期警告バスは前記メモリ記憶装置と前記複数の要求元装置の１つとの間に接続されることを特徴とする請求項６に記載の方法。
【請求項１１】
前記早期警告バスは前記メモリ記憶装置と前記複数の要求元装置の１つとの間に接続されることを特徴とする請求項８に記載のシステム。
【発明の詳細な説明】
【０００１】
（発明の背景）
（発明の分野）
本発明は、一般に、多重プロセッサシステムに関するものであり、より詳しくは、メモリ記憶ユニットから多重プロセッサシステム内の装置へデータを転送する動作を加速する手法に関する。
【０００２】
（関連技術）
多重プロセッサシステムにおいて、マイクロプロセッサ、メモリバンク（memory bank）、および周辺制御装置などの装置は複数のバスにより相互接続されている。このようなシステムでは、メモリやデータバスなどのマシンリソース（machine resources）を割り当てる、アービトレーション（arbitration）と呼ばれる規則を採用している。複数の装置がデータ転送のためバスアクセスに関して競合する多重プロセッサバス環境では、それぞれの装置はバスの所有権を得るためにアービトレーションを必要とする。たとえば、プロセッサが１単位のデータをメモリに対し要求した場合、しばらくしてから、そのデータはプロセッサに配信される。メモリ装置（memory unit）がデータの要求を受信すると、そのメモリ装置はデータロケーション（data location）を読み込み、物理データにアクセスし、そのデータをプロセッサに配信しなければならない。データの要求を受信してからデータが送信されるまでのメモリの待ち時間は長くなる場合がある。
この例は、アップルコンピュータ社（Apple Computer, Inc）の国際出願番号ＷＯ９６／３５１７２の出願に見出すことができる。この出願は、システムバスに結合された要求元エージェントを有するシステム内のグラフィック・コントローラについて開示している。このシステムでは、コントローラはアービトレーションを初期化して要求元エージェントがメモリ内のフレーム・バッファをアクセスすることを可能にしている。
【０００３】
データをメモリ（またはキャッシュ）からプロセッサに配信する前に、データを配信するバスエージェント（bus agent）はデータバスの所有権を獲得するためにアービトレーションを行わなければならない。アービトレーションは時間のかかる作業である。メモリコントローラがディレクトリ情報をデータ自体と同じ媒体に格納するディレクトリベースのシステムでは、メモリコントローラは要求元プロセッサへの転送のため関連データを取得するのと同時にディレクトリ情報も取得する。ディレクトリ状態が適切でなければ、読み込まれたデータは転送されず、ディレクトリを要求を満たす適切な状態にする処置が講じられる。しかし、時間の大半はデータがプロセッサへ転送することが可能である。メモリコントローラがディレクトリ情報を観察するまで待ち、それからアービトレーションを開始する場合、要求を満たすためにアービトレーションの時間を無駄にすることになる。メモリコントローラがアービトレーションの直接制御を行ったとすれば、データが記憶媒体から使用可能となったときにデータバスを使用可能とするアービトレーションを開始し、およびアービトレーションの時間を失わずにバス上にデータを配信するか、またはディレクトリ状態が適切でない場合にデータ転送せずにバスを解放することができる。大規模なマルチプロセッサシステムでは、メモリコントローラはバスの介在でプロセッサバスから分離され、データ配信のためプロセッサバスに対し推論的にアービトレーションを行う方法とシステムが必要である。
【０００４】
（発明の概要）
簡単に説明すると、本発明は、マルチリクエスタバス（multi-requestor bus）環境でリクエスタ（requestor）（装置）がメモリ記憶ユニットからデータを受け取るのに要する時間を最適化するシステムと方法を対象とするものである。本発明は、早期警告信号と呼ばれ、プロセッサバス上のバスエージェントがプロセッサの代わりにＭＳＵにデータを要求した後にメモリ記憶ユニットからそのエージェントに送信される単方向信号を提供する。この信号は、データがまもなく来ることを知らせるバスエージェントへの警告である。この早期警告信号により、エージェントはデータバスのアービトレーションを行うことができるため、データが到着したときに、エージェント側でデータバスの所有権に関するアービトレーションを実施していることになり、データを即座に配信できる。
【０００５】
好ましい実施形態において、本発明は、メインメモリ、キャッシュメモリ、１つまたは２つ以上のプロセッサモジュール、１つまたは２つ以上のＩ／Ｏモジュール、および早期警告バスを備える。キャッシュメモリは、インタフェースバスを介してメインメモリに接続されている。プロセッサモジュールは、プロセッサインタフェースバスを介してキャッシュメモリに接続されている。Ｉ／Ｏモジュールは、Ｉ／Ｏインタフェースバスを介してメインメモリに接続されている。プロセッサモジュールとＩ／Ｏモジュールは両方とも、データ単位をメインメモリに要求する手段を含む。早期警告バスは、メインメモリとキャッシュメモリとの間に接続されている。
【０００６】
早期警告バスは、転送先バスエージェントを識別する第１のフィールドと、「１」に設定されたときに有効な早期警告信号であることを示す有効ビットを含む。
【０００７】
要求されたデータ単位は、早期警告信号が早期警告バス上で転送された後要求元インタフェースバスを介して転送される。早期警告信号を使用することにより、バスエージェントは要求されたデータ単位を受信する前にデータバスのアービトレーションを行うことができる。
【０００８】
早期警告信号の推測的性質を考慮するために、本発明はさらに、早期警告信号を受信したときに設定されるエージェントのアービトレーション・ロジック内にタイマがさらに備えられ、これにより、エージェントは、要求されたデータがまだ届いていない場合にタイマが期限切れになると、バスを解放するかまたはアービトレーションの試行を中止する。本発明では、警告信号なしでメインメモリからデータを受信したときに、エージェントがバスのアービトレーションを実行し、そのデータを配信できることも必要である。
【０００９】
本発明の他の特長と利点について、本発明のさまざまな実施形態の構造と動作とともに、添付図面を参照しながら以下の段で詳述する。図面では、類似の参照番号は一般に、同一の要素、機能上類似している要素、および／または構造上類似している要素を示す。最初にある要素が示されている図面は、対応する参照番号の一番右の２つの桁の左側にある。
【００１０】
（好ましい実施形態の詳細な説明）
本発明の好ましい実施形態を以下で詳細に解説する。特定の構成を解説しているが、これは例示を目的としてのみ行うものであることを理解すべきである。当業者は、本発明の趣旨および範囲から逸脱することなく、他の部品および構成を用いてもよいことを理解するであろう。
【００１１】
本発明は、マルチリクエスタバス環境でリクエスタ（装置）がメモリ記憶ユニットからデータを受け取るのに要する時間を最適化するシステムと方法を対象とするものである。本発明は、ときに装置がデータのフェッチ要求を実行した後に、データがまもなく来るということを装置に警告するためメモリ記憶ユニットからその装置に送信される、早期警告信号と呼ばれる単方向応答信号を提供する。この早期警告信号により、装置はデータバスのアービトレーションを行うことができるため、データが到着したときに、装置側はデータバスの排他的所有権を持ち、データを即座に受け付ける。
【００１２】
本発明を詳細に説明する前に、システム処理プラットフォームの例の説明を行う。図１は、本発明が使用されているシステム処理プラットフォーム１００のブロック図である。システム処理プラットフォーム１００は、多数の処理システムおよび多数のメモリ記憶システム間でのデータフローを管理するのに有用である。システム処理プラットフォーム１００は、１つまたは２つ以上のメモリ記憶ユニット（ＭＳＵ）１１０（ＭＳＵ１１０ＡおよびＭＳＵ１１０Ｂとして図示）および１つまたは２つ以上の処理モジュール（ＰＯＤ）１２０（ＰＯＤ１２０ＡおよびＰＯＤ１２０Ｂとして図示）を含む。顧客は、追加のＭＳＵ１１０やＰＯＤ１２０を付加することにより、システム処理プラットフォーム１００を拡張することができる。
【００１３】
各ＭＳＵ１１０はＭＳＵインタフェース（ＭＩ）バス１３０（ＭＩバス１３０Ａ、１３０Ｂ、１３０Ｃ、および１３０Ｄとして図示）を介して各ＰＯＤ１２０に接続されている。ＭＩバス１３０は、個別のアドレス／機能およびデータバスを有するポイント−ツー−ポイントのインタフェースである。ＭＩバス１３０は単方向制御バス、双方向要求バスおよび双方向データバスを含む。要求バスはシステムクロック周波数（ＳＹＳＣＬＫ）で動作し、データバスはシステムクロック周波数の２倍のソース同期で動作する。好ましい実施形態では、システム処理プラットフォーム１００で、システムクロック周波数は１００メガヘルツ（ＭＨＺ）である。
【００１４】
ＰＯＤ１２０はＭＩバス１３０の１つを介して、あらゆるＭＳＵ１１０のデータに直接的なアクセス権を有している。例えば、ＭＩバス１３０ＡはＰＯＤ１２０ＡのＭＳＵ１１０Ａへの直接アクセスを可能にし、ＭＩバス１３０ＣはＰＯＤ１２０ＡのＭＳＵ１１０Ｂへの直接アクセスを可能にする。
【００１５】
図２に、メモリ記憶ユニット（ＭＳＵ）１１０を更に詳細に示す。ＭＳＵ１１０はメモリコントローラ２１０とメモリ２２０とを含む。メモリ２２０は複数のデータライン２３０を備える。各データライン２３０は、システムプラットフォーム１００においてＭＳＵ１１０とＰＯＤ１２０との間で転送されるデータの最小量である。システム処理プラットフォーム１００において、データライン２３０は６４バイトの情報と同等である。
【００１６】
メモリコントローラ２１０はメモリ２２０のメモリマネージャとして動作する。メモリコントローラ２１０はＭＩバス１３０を介して、ＰＯＤ１２０から制御およびアドレスラインを受信する。メモリコントローラ２１０は、以下で詳細に解説する方法で各データライン２３０のステータスを制御し監視する。
【００１７】
ＰＯＤ１２０の詳細なブロック図は図３に示されている。ＰＯＤ１２０は、クロスバー３５０、１つまたは２つ以上のサブ処理モジュール（サブＰＯＤ）（サブＰＯＤ３１０ＡおよびサブＰＯＤ３１０Ｂとして図示）および１つまたは２つ以上の入出力（Ｉ／Ｏ）モジュール３２０（Ｉ／Ｏモジュール３２０ＡおよびＩ／Ｏモジュール３２０Ｂとして図示）を備える。システム処理プラットフォーム１００において、各ＰＯＤ１２０は２つのサブＰＯＤ３１０および２つのＩ／Ｏモジュール３２０を備える。
【００１８】
クロスバー３５０は、ＭＩバス１３０を介してサブＰＯＤ３１０およびＩ／Ｏモジュール３２０をＭＳＵ１１０に接続している。サブＰＯＤ３１０（サブＰＯＤ３１０ＡおよびサブＰＯＤ３１０Ｂとして図示）は、インタフェース３３０（インタフェース３３０Ａおよびインタフェース３３０Ｂとして図示）を介してクロスバー３５０に接続されている。クロスバー３５０は、インタフェース３４０（インタフェース３４０Ａおよびインタフェース３４０Ｂとして図示）を介してＩ／Ｏモジュール３２０（Ｉ／Ｏモジュール３２０ＡおよびＩ／Ｏモジュール３２０Ｂとして図示）にインタフェースしている。システム処理プラットフォーム１００において、ＭＩバス１３０およびインタフェース３３０は同等の転送レートでデータを転送する。Ｉ／Ｏモジュール３２０とクロスバー３５０との間のインタフェース３４０は、ＭＩバス１３０およびインタフェース３３０と同様の構成を有しているが、半分の転送レートで動作する。
【００１９】
Ｉ／Ｏモジュール３２０は図４に示されている。Ｉ／Ｏモジュール３２０は、ＰＯＤ１２０と、Ｉ／Ｏ３２０に接続された１つまたは２つ以上のＩ／Ｏ装置（図示されていない）との間のインタフェースとして機能する。Ｉ／Ｏモジュール３２０は、バス４３０（バス４３０Ａ、バス４３０Ｂおよびバス４３０Ｃとして図示）を介して、１つまたは２つ以上のペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）（ＰＣＩ４２０Ａ、ＰＣＩ４２０ＢおよびＰＣＩ４２０Ｃとして図示）を相互接続するブリッジ４１０を含む。ブリッジ４１０は、図３に示されているようにバス３４０を介してＰＯＤ１２０のクロスバー３５０にも接続されている。ブリッジ４１０は、ＰＯＤ１２０が各ＰＣＩ４２０にアクセスすることを可能にする、バス３４０とバス３３０との間のスイッチとして機能する。
【００２０】
ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）４２０は、各種Ｉ／Ｏ装置（図示されていない）をＩ／Ｏモジュール３２０に接続するＩ／Ｏバスである。システム処理プラットフォーム１００において、各ＰＣＩ４２０は４つまでの装置を支援できる。これらの装置は、モニタ、キーボード、プリンタ、ディスクまたはテープドライブなどを含むが、これらに限定されない。
【００２１】
サブＰＯＤ３１０のブロック図は図５に示されている。サブＰＯＤ３１０は、第３レベルキャッシュ（ＴＬＣ）５１０および１つまたは２つ以上のコヒーレントドメイン５３０（コヒーレントドメイン５３０Ａおよびコヒーレントドメイン５３０Ｂとして図示）を含む。ＴＬＣ５１０はバス５２０（バス５２０Ａおよびバス５２０Ｂとして図示）を介して各コヒーレントドメイン５３０に接続されている。ＴＬＣ５１０は、各コヒーレントドメイン５３０間のコヒーレンシを維持する。各コヒーレントドメイン５３０は、２つまたは３つ以上の第２レベルキャッシュ（ＳＬＣ）５５０（コヒーレントドメイン５３０ＡにおけるＳＬＣ５５０ＡおよびＳＬＣ５５０Ｂならびにコヒーレントドメイン５３０ＢにおけるＳＬＣ５５０ＣおよびＳＬＣ５５０Ｄとして図示）および、バス５６０（コヒーレントドメイン５３０Ａにおけるバス５６０Ａおよびバス５６０Ｂならびにコヒーレントドメイン５３０Ｂにおけるバス５６０Ｃおよびバス５６０Ｄとして図示）を介して各ＳＬＣ５５０に接続されたプロセッサ５４０（コヒーレントドメイン５３０Ａにおけるプロセッサ５４０Ａおよびプロセッサ５４０Ｂならびにコヒーレントドメイン５３０Ｂにおけるプロセッサ５４０Ｃおよびプロセッサ５４０Ｄとして図示）を備える。各バスインタフェース５２０は、コヒーレントドメイン５３０における２つまでのプロセッサ／ＳＬＣ（５４０／５５０）の構成を支援する。プロセッサモジュール５４０は、例えば、デシュート（Ｄｅｓｈｕｔｅｓ）スタイルＰ６、メルセド（Ｍｅｒｃｅｄ）スタイルＰ７、ボイジャー（Ｖｏｙａｇｅｒ）スタイル２２００またはカプリコーン（Ｃａｐｒｉｃｏｒｎ）スタイルＡシリーズの命令処理装置のうち１つを含むことができる。これら４種類の命令処理装置の全てが当業者にはよく知られている。
【００２２】
各コヒーレントドメイン５３０のＳＬＣ５５０は、それらの間ならびにそれら独自のコヒーレントドメイン内においてコヒーレンスを維持する。これは、バス５２０を共有し、スヌーピーベースのコヒーレンスに従うことによって達成される。スヌーピーベースのコヒーレンスによれば、各ＳＬＣ５５０は要求バス５２０を「覗いて（スヌープ）」データライン２３０の状態を確認して、必要であれば、そこに記憶されたデータラインの状態を更新する。スヌーピープロトコルに関する更に詳細な解説は、参照によって本明細書中にその全体を含めた、本願と同時に出願した「ディレクトリ・ベースのキャッシュ・コヒーレンシ・システム」という名称の並行して係属中である出願（代理人整理番号ＴＮ０５０；１５２１．００８００００）に含まれている。
【００２３】
ＰＯＤ１２０およびＭＳＵ１１０は協同してコヒーレントメモリシステムを作り出す。システム処理プラットフォーム１００のコヒーレンシスキームはディレクトリベースの所有権プロトコルである。図６は、システム処理プラットフォーム１００に使用されたディレクトリベースの所有権プロトコルを示している。メモリ２２０および各レベルのキャッシュ（すなわち、ＴＬＣ５１０、ＳＬＣ５５０など）がコヒーレンスを維持するためのディレクトリプロトコルを許容している。図６に示したように、メモリ２２０はメモリディレクトリ６１０を有し、ＴＬＣ５１０はＴＬＣディレクトリ６４０を有し、ＳＬＣ５５０はＭＥＳＩ（Modified Exclusive Shared Invalid）というＳＬＣディレクトリ６５０を有している。
【００２４】
好ましい実施形態では、各キャッシュ５１０および５５０は、キャッシュライン（ＴＬＣ５１０ではキャッシュライン６２０、ＳＬＣ５５０ではキャッシュライン６３０として図示）と呼ばれるデータライン記憶用のメモリを含む。キャッシュラインは、１つまたは２つ以上のキャッシュ５１０、５５０に存在するデータラインのコピーである。
【００２５】
ディレクトリ６１０において、各データライン２３０についての情報は監視されて、状態６１２とベクトル６１４とを使って更新される。状態６１２は、データライン２３０に関してリクエスタに与えられたアクセス権のステータスについての情報を維持する。かかるステータスは現在のステータス、共有ステータスおよび独占ステータスを含むことができる。現在のステータスは、データライン２３０がメモリ２２０にのみ存在することを示している。共有ステータスは、データライン２３０のリードオンリーのコピーが１つまたは２つ以上のＰＯＤ１２０に存在することを示している。これは、これら１つまたは２つ以上のＰＯＤ１２０がデータライン２３０のコピーを自由に読むことができることを示している。独占ステータスは、単一のリクエスタのみがデータライン２３０への書き込みアクセス権を与えられていることを示している。これは、単一のリクエスタのみがデータライン２３０を修正する権利を有することを示している。ベクトル６１４は、メモリ状態６１２が独占ステータスを示しているときに、書き込みアクセス権が与えられているサブＰＯＤ３１０へのポインタである。ベクトル６１４は、メモリステータス６１２が共有ステータスを示しているときに、どのサブＰＯＤ３１０がリードオンリーコピーを有するかを示すビットのマスクである。
【００２６】
ＴＬＣディレクトリ６４０では、各キャッシュライン６２０に関する情報が監視されており、状態６４２とベクトル６４４を使用して更新される。状態６４２は、キャッシュライン６２０のステータスに関する３つの情報を保持している。この情報には、所有権、データステータス、およびバスの権利が含まれる。ベクトル６４４は、キャッシュライン６２０が存在している１つまたは２つ以上のロケーションを指している。
【００２７】
所有権は、独占権、共有権および未知の権利を含むことができる。独占権は、ＴＬＣ５１０がキャッシュライン６２０への独占権（すなわち、書き込みアクセス権）を有することを示しており、この独占権はメモリ２２０におけるデータライン２３０の対応するステータスと一致する。共有権は、メモリ２２０がキャッシュライン６２０を共有されたもの（すなわち、リードオンリーアクセス）として関連づけていることを示している。未知の権利は、キャッシュライン６２０に関する所有権が未知であることを示している。
【００２８】
ＴＬＣディレクトリ６４０のデータステータスは、データなし、修正データまたはクリーンデータを含むことができる。データなしは、キャッシュライン６２０ロケーションにデータが存在しないことを示している。修正データは、キャッシュライン６２０上のデータが修正されたことを意味している。修正データはメモリ２２０に書き戻されなければならない。クリーンデータは、キャッシュライン６２０上のデータが修正されていないことを示している。
【００２９】
バスの権利は、バス５２０Ａまたは５２０Ｂのどちらに権利が与えられたかを示している。バスの権利も状態とベクトル（状態およびベクトルとも図示されていない）を含む。バスの権利は、独占状態、共有状態または未知の状態を含むことができる。独占権は、バス５２０Ａまたは５２０Ｂのどちらかに関連づけられたＳＬＣ５５０に独占的所有権が属することを示している。共有権は、バス５２０Ａと５２０Ｂの両方に権利が与えられていることを示している。未知の権利は、どちらのバスが権利を有しているか分からないことを示している。
【００３０】
ＳＬＣディレクトリ６５０において、キャッシュライン６３０の状態のみが維持されている。状態は、修正されたステータス、独占ステータス、共有ステータスまたは無効なステータスを含むことができる。修正されたステータスは、キャッシュライン６３０上のデータが修正されていることを示している。独占ステータスは、キャッシュライン６３０上のデータを修正することができ、関連づけられたＳＬＣ５５０はデータが含まれる唯一の装置であることを示している。共有ステータスは、キャッシュライン６３０上のデータが装置間で共有されていることを示している。無効なステータスは、ＳＬＣ５５０のキャッシュライン６３０にあるデータライン２３０のコピーは、別の装置のデータライン２３０で行われた書き込みのために、もはや有効ではないことを示している。
【００３１】
プロセッサ５４０などのプロセッサによって必要とされる時間を削減し、メモリ２２０のデータライン２３０を読み取るために、キャッシュスキームが開発された。システム処理プラットフォーム１００で使用されているようなキャッシュシステムは、システム処理プラットフォーム１００が適切かつ効率的に処理を遂行できるように、メモリ２２０、ＴＬＣ５１０およびＳＬＣ５５０の各々の中でコヒーレントなデータを維持しなければならない。
【００３２】
コヒーレンシは当該事業分野ではよく知られた用語であり、多数のメモリと処理装置を備えたシステムにおいてデータのアクセスを管理する。コヒーレントシステムは、データラインの読み取りは最近書き込まれたそのデータラインの値を戻し、データラインの書き込みは、読み取りアクセス権を有する全てのエージェントが所有するそのデータラインの全てのコピーを無効にすることを要求する。処理システムプラットフォーム１００に関しては、コヒーレンシは、ＰＯＤ１２０がそのリクエスタの１つにキャッシュ５１０および５５０のいずれかの中でキャッシュライン６２０または６３０を修正することを許可する前に、このデータについてＭＳＵ１１０から所有権許可（特に、独占的または書き込み所有権）を得なければならないことを意味する。独占的所有権が与えられると、ＰＯＤ１２０のリクエスタは、ＭＳＵ１１０と対話することなくキャッシュライン６２０を変更することを許可される。ＰＯＤ１２０がキャッシュライン６２０との関係が断たれたとき、キャッシュライン６２０はＭＳＵ１１０に書き戻される。
【００３３】
ＭＳＵ１１０は、ＴＬＣ５１０およびＩ／Ｏバスインタフェース３４０でキャッシュライン６２０状態情報を追跡する。ＭＳＵ１１０はディレクトリ構造６１０を使ってこれを行う。ディレクトリ６１０は、ＭＳＵ１１０、特定のＴＬＣ５１０または特定のＩ／Ｏバスインタフェース３４０のいずれがデータライン２３０を所有しているかに関する情報を維持する。ディレクトリ６１０は、もしあるとすれば、どのＴＬＣ５１０がデータライン２３０の未処理のコピーを有しているか、あるいは、特定のＩ／Ｏが未処理のコヒーレントコピーを有しているかに関する情報を維持する。ディレクトリ６１０は、特定のデータライン２３０が修正不可能なエラーを含んでいるかどうかも示す。
【００３４】
システム処理プラットフォーム１００のコヒーレンシスキームは、一度に１つの所有者しか許容せず、コヒーレンシはキャッシュラインベースで実行される。したがって、別のＴＬＣ５１０またはＩ／Ｏバスインタフェース３４０が修正されたキャッシュライン６２０または６３０へのアクセス権を有する必要がある場合には、新たなデータをリクエスタに送るために、所有者に対してキャッシュライン６２０または６３０をＭＳＵ１１０に戻すように要求することはＭＳＵ１１０の責任である。リクエスタがキャッシュライン６２０または６３０を修正したいのであれば、元の所有者は対応するキャッシュライン６２０または６３０をそのキャッシュから削除する（無効にする）。次に、その特定のキャッシュライン６２０または６３０に再びアクセスする必要があれば、最新のコピーを求めてＭＳＵ１１０に行かされるであろう。リクエスタがデータライン２３０を読みたいのであれば、元の所有者は対応するキャッシュライン６２０または６３０のコピーを保持することを許可される。いずれの場合にも、元の所有者は、対応するキャッシュライン６２０または６３０においてデータのいずれをも修正する特権を失っており、そうするためには、ＭＳＵ１１０に独占的所有権を再び要求しなければならない。
【００３５】
システム処理プラットフォーム１００のコヒーレンシスキームは、本願と同時に出願された「ディレクトリ・ベースのキャッシュ・コヒーレンシ・システム」という名称の並行して係属中の出願（代理人整理番号ＴＮ０５０；１５２１．００８００００）で更に説明している。
【００３６】
本発明については、上記の例の環境で説明している。これらの用語の説明は利便性ためにのみ行っている。本発明をこの例の環境における応用に限定することは意図していない。事実、以下の説明を読んだ後に、当業者には他のメモリ記憶ユニットや処理モジュールの構成で本発明をどのように実施するのかが明らかになるであろう。例えば、本発明は、複数のプロセッサに接続されたバス階層を利用した如何なるシステムにも適用性を有する。複数レベルのキャッシングは本発明を実施するためには要求されない。
【００３７】
図７に本発明の好ましい実施形態の図を示す。前記のように、本発明はデータをＭＳＵ１１０からフェッチしなければならないときにＭＳＵ１１０からＰＯＤ１２０へのデータライン２３０の転送を加速するシステムと方法である。本発明は、データライン２３０の要求を行ったときに早期警告（Ｅ＿Ｗ）信号を送信することによって、ＭＳＵ１１０からＰＯＤ１２０へのデータ転送を加速する。早期警告信号によって、要求元装置（たとえば、プロセッサ５４０やＩ／Ｏモジュール３２０）は、データバスのアービトレーションによりデータライン２３０の到着を準備し、したがって、データライン２３０が使用可能となったときに、データライン２３０を要求した装置は即座にそれを受け入れることができる。
【００３８】
プロセッサ５４０またはＩ／Ｏモジュール３２０のような要求元装置は、ＭＳＵ１１０に対するデータフェッチ要求を実行する。データがＭＳＵ１１０から要求元装置に戻る前に、要求元装置はデータバスのアービトレーションを実行しなければならない。本発明では、要求データの転送前に早期警告バス上でＭＳＵ１１０から要求元装置に転送する早期警告信号を提供する。早期警告信号により、要求元装置は要求データを受信する前にデータバスのアービトレーションを行うことができる。要求データの受信前にアービトレーションを行うと、要求元装置はデータの到着後直ちにデータにアクセスできる。
【００３９】
好ましい実施形態において、本発明は、ＭＩバス１３０のサブセットである（図１に示されている）。それとは別に、本発明の他の実施形態ではバスを別にすることができる。本発明は、ＭＳＵ１１０からＰＯＤ１２０への早期警告単方向バス（Ｅ＿Ｗ［２：０］）７１０を提供する。早期警告単方向バス７１０は、Ｒ＿ｂｕｓ信号７２０、Ｐ＿ｂｕｓ信号７３０、およびＶａｌｉｄ信号７４０を含む。
【００４０】
Ｒ＿ｂｕｓ信号７２０は、どのインタフェースバスがデータを要求しているかを示す。より詳しく述べると、Ｒ＿ｂｕｓ信号７２０はデータの要求がどのリクエスタバス（Ｉ／Ｏモジュール３２０に対してはバス３４０およびバス３４０Ｂ、サブＰＯＤ３１０に対してはバス３３０Ａおよびバス３３０Ｂ）から出たかを示す。Ｐ＿ｂｕｓ信号７３０は、要求元装置を識別する。より詳しく述べると、Ｒ＿ｂｕｓ７２０がＩ／Ｏモジュール３２０からデータ要求が発行されたということを示している場合に、Ｐ＿ｂｕｓ７３０はＩ／Ｏモジュール３２０のどれが要求を出したかを示す。Ｒ＿ｂｕｓ７２０がＴＬＣインタフェースバス３３０からデータ要求が来たということを示している場合に、Ｐ＿ｂｕｓ７３０はプロセッサ５４０のどれが要求を出したかを示す。Ｖａｌｉｄ信号７４０は、１に設定され、信号が有効であることを示し、データがまもなく来るという早期警告を出す。
【００４１】
本発明の好ましい実施形態では、タイマ（図示されていない）は、データが指定時間範囲内に要求元装置に到着していない場合にアービトレーションを解放するために使用される。タイマは、Ｅ＿Ｗバス７１０上の有効な情報を指示するＶａｌｉｄ信号７４０の０から１への遷移を受け取ると、それを合図に起動する。指定された時間内にデータが転送できない理由はいくつかある。たとえば、データライン２３０のコピーが要求されても、他のリクエスタがデータライン２３０を所有していれば、必ずしも更新されたコピーではないため現在ＭＳＵ１１０内にあるデータライン２３０は第１のリクエスタに配信されない。更新されたコピーは現在所有者側にある。しかし、Ｅ＿Ｗバス７１０はそのまま、ＭＳＵ１１０が単独でデータライン２３０を保有したのと同時にリクエスタに送られる。さらに、データライン２３０を要求元ＰＯＤ１２０に配信するのを妨げるが、Ｅ＿Ｗバス７１０の送信は禁止しないＭＩ１３０の双方向的性質と関連するタイミングの時間枠もある。このような場合、要求データライン２３０はすぐには到着しない。したがって、タイマを使って、アービトレーションを解放し、データバスの利用率を最大にする。
【００４２】
Ｖａｌｉｄ信号７４０を実行するＭＳＵ１１０からプロセッサ５４０へのデータ転送のタイミング図を図８に示す。ＲＥＱ信号８１０によって、ＰＯＤ１２０からＭＳＵ１１０への要求トランザクションが開始する。ＲＥＱ信号８１０は、任意のクロックサイクルでアサートできる。好ましい実施形態では、ＲＥＱ信号８１０は１クロックサイクル長である。ＭＩバス１３０上のアドレスおよびファンクション（ＡＤＲ＿ＦＮＣ）信号８２０は、２クロックサイクルを要する。好ましい実施形態では、ＲＥＱ信号８１０はＡＤＲ＿ＦＮＣ信号８２０の第１のサイクルでアサートされる。Ｒ＿ｂｕｓ７２０およびＰ＿ｂｕｓ７３０は、ＡＤＲ＿ＦＮＣ信号８２０に含まれる。ＭＳＵ１１０は、Ｅ＿Ｗ［２：０］バス７１０、Ｒ＿ｂｕｓ７２０、およびＰ＿ｂｕｓ７３０に、ＡＤＲ＿ＦＮＣ信号８２０から得られた値を出し、Ｅ＿Ｗ［２：０］バス７１０を介してＰＯＤ１２０に早期警告を送る。Ｖａｌｉｄ信号７４０は、データライン２３０の到着の２クロックサイクル前に出現する。ＭＳＵ１１０は、ＭＳＵ１１０がデータライン２３０を所有しているという仮定を使用してすべての内部データパス経路制御優先度（routing priorities）が解決された後に有効な信号７４０を送信する。これは、ＭＳＵ１１０が、データライン２３０を所有しているかどうかを知る前である。ＰＯＤ１２０に転送された有効なデータ２３０の開始は、ＭＳＵ１１０からＰＯＤ１２０へのＲｅｓｐｏｎｓｅ信号８４０によって示される。ＭＳＵ１１０が後になって、データライン２３０を所有していないことを検出した場合、Ｒｅｓｐｏｎｓｅ信号８４０は禁止される。Ｒｅｓｐｏｎｓｅ信号８４０は、ＭＩインタフェース１３０の一部である。Ｖａｌｉｄ信号７４０がトリガとなって、要求元装置はバスアービトレーション信号８３０を発生する。バスアービトレーション信号８３０は、要求元装置への要求であって、これによりデータバス（たとえば、プロセッサバス５２０）のアービトレーションが行われる。データバスはこれでデータライン２３０の到着後、直ちにそのデータラインを受け付ける用意ができた。Ｒｅｓｐｏｎｓｅ信号８４０が有効な信号７４０に関して２クロックのタイミング時間枠内で到着しない場合、他の転送のためにデータバスは解放される。
【００４３】
これまで本発明のさまざまな実施形態について説明してきたが、例示のためのみに提示されており、制限していないことが理解されるであろう。したがって、本発明の範囲は上述の実施形態の例によって制限されず、前記の特許請求の範囲およびその均等物によってのみ定義されるべきであろう。
【図面の簡単な説明】
添付図面を参照しながら本発明について説明する。
【図１】  本発明の好ましい実施形態によるシステムプラットフォーム環境のブロック図である。
【図２】  メモリ記憶ユニットの実施形態を示す図である。
【図３】  処理モジュールの実施形態を示す図である。
【図４】  Ｉ／Ｏモジュールの実施形態を示す図である。
【図５】  サブ処理モジュールの実施形態を示す図である。
【図６】  ディレクトリベースのメモリおよびキャッシュシステムの実施形態を示す図である。
【図７】  本発明の好ましい実施形態を示す図である。
【図８】  本発明の好ましい実施形態を使用してデータ転送を加速するためのタイミング図である。
【図１】
0003635634.tif 000002
【図２】
0003635634.tif 000003
【図３】
0003635634.tif 000004
【図４】
0003635634.tif 000005
【図５】
0003635634.tif 000006
【図６】
0003635634.tif 000007
【図７】
0003635634.tif 000008
【図８】
0003635634.tif 000009