(57)【特許請求の範囲】
【請求項１】
コンピュータシステムの通信網において、第３レベルキャッシュとメモリ記憶ユニットとの間でデータを送信するときの輻輳を制御するための方法であって、
前記コンピュータシステムが複数のクロスバースイッチに結合された前記メモリ記憶ユニットを有し、前記複数のクロスバースイッチのそれぞれ１つが、少なくとも１つの前記第３レベルキャッシュに結合され、前記メモリ記憶ユニットと、前記複数のクロスバースイッチと、前記第３レベルキャッシュとが、前記コンピュータシステムの前記通信網を介して相互接続され、
（１）メッセージが、フェッチ要求またはデータ転送のうちの１つを備えたデータメッセージであることを第１の判定手段によって判定するステップであって、第１のクロスバースイッチが前記第１の判定手段を含む、判定するステップと、
（２）ステップ（１）において前記データメッセージであると判定された場合、ＨＯＬＤ信号を含む、前記第１のクロスバースイッチからメモリ記憶ユニットまでのデータメッセージのフローを防ぐための手段が、非アクティブであることを前記第１の判定手段によって判定するステップと、
（３）ステップ（２）において非アクティブであると判定された場合、前記データメッセージを前記メモリ記憶ユニットへ送信手段によって送信するステップであって、前記第１のクロスバースイッチが前記送信手段を含む、送信するステップと、
（４）前記メモリ記憶ユニット内の前記データメッセージが、データ転送、パージ要求、またはリターン要求のうちの１つであることを第２の判定手段によって判定するステップであって、前記メモリ記憶ユニットは前記第２の判定手段を含み、前記第１の判定手段が前記データメッセージはフェッチ要求であると判定した場合、前記第２の判定手段は、前記フェッチ要求が限定的なデータラインに対するものである場合には前記データメッセージがパージ要求であると判定し、又は前記フェッチ要求が共用なデータラインに対するものである場合には前記データメッセージがリターン要求であると判定する、判定するステップと、
（５）ステップ（４）においてデータ転送、パージ要求、またはリターン要求のうちの１つであると判定された場合、ＨＯＬＤ信号を含む、前記メモリ記憶ユニットから第２のクロスバースイッチへの、データ転送、パージ要求、またはリターン要求のうち１つのフローを防ぐための手段が、非アクティブであることを前記第２の判定手段によって判定するステップと、
（６）ステップ（５）において非アクティブであると判定された場合、前記メモリ記憶ユニットから第３レベルキャッシュへ、第２のクロスバースイッチを介して前記データメッセージを送信するステップと
を具えたことを特徴とする方法。
【請求項２】
請求項１に記載の方法において、ステップ（１）の前に実行される、
（ａ）前記メッセージを第３レベルキャッシュから第１のクロスバースイッチへ送信するステップ
をさらに具えたことを特徴とする方法。
【請求項３】
請求項１に記載の方法において、ステップ（３）が、
（ｂ）前記送信手段によって送信することに先立ち、前記データメッセージを前記第１のクロスバースイッチ内に配置された検出手段で受信するステップと、
（ｃ）１つのデータメッセージにより第１の未処理メッセージカウンタを前記第１のクロスバースイッチ内に配置された増加手段によって増加させるステップであって、前記第１の未処理メッセージカウンタが、バッファの制限内でデータメッセージの数を維持するように、前記第１のクロスバースイッチから前記メモリ記憶ユニットへ送信されるデータメッセージの数を追跡し、前記第１の未処理メッセージカウンタが前記第１のクロスバースイッチに附随している、増加させるステップと
をさらに具えたことを特徴とする方法。
【請求項４】
請求項３に記載の方法において、ステップ（３）が、
（ｄ）前記送信手段による送信の後、未処理メッセージのバッファの制限内で未処理メッセージの数を維持するように、前記第１のクロスバースイッチから前記メモリ記憶ユニットへ送信される未処理メッセージの数を追跡するために、１つのデータメッセージにより前記第１の未処理メッセージカウンタを前記第１のクロスバースイッチ内に配置された減少手段によって減少させるステップ
をさらに具えたことを特徴とする方法。
【請求項５】
請求項１に記載の方法において、ステップ（６）が、
（ｅ）前記第２のクロスバースイッチで前記データメッセージを受信したときに、前記メモリ記憶ユニットから前記第１のクロスバースイッチへメモリ肯定応答メッセージを送信するステップ
をさらに具えたことを特徴とする方法。
【請求項６】
請求項１に記載の方法において、ステップ（６）が、
（ｆ）１つのデータメッセージにより第２の未処理メッセージカウンタを前記第２のクロスバースイッチ内に配置された増加手段によって増加させるステップであって、バッファの制限内でデータメッセージの数を維持するように、前記第２の未処理メッセージカウンタが前記メモリ記憶ユニットから前記第２のクロスバースイッチで受信されたデータメッセージの数を追跡し、前記第２の未処理メッセージカウンタが前記第２のクロスバースイッチに附随している、増加させるステップ
をさらに具えたことを特徴とする方法。
【請求項７】
コンピュータシステムの通信網において、第１の第３レベルキャッシュから第２の第３レベルキャッシュへデータを送信するときの輻輳を制御するための方法であって、
前記コンピュータシステムが複数のクロスバースイッチに結合されたメモリ記憶ユニットを有し、前記クロスバースイッチが複数の第３レベルキャッシュに結合され、前記メモリ記憶ユニットと、前記複数のクロスバースイッチと、前記複数の第３レベルキャッシュとが、前記コンピュータシステムの前記通信網を介して相互接続され、
（１）第１のクロスバースイッチ内にあるメッセージが、第１の第３レベルキャッシュからのフェッチ要求またはデータ転送のうちの１つからなるデータメッセージであることを第１の判定手段によって判定するステップであって、第１のクロスバースイッチが前記第１の判定手段を含む、判定するステップと、
（２）ステップ（１）において前記データメッセージであると判定された場合、ＨＯＬＤ信号を含む、前記第１のクロスバースイッチからメモリ記憶ユニットまでのデータメッセージのフローを防ぐための手段が、アクティブであることを前記第１の判定手段によって判定するためのステップと、
（３）ステップ（２）においてアクティブであると判定された場合、前記データメッセージを、前記第１のクロスバースイッチ内のメッセージ待ち行列に一時的に格納するステップと、
（４）ステップ（１）において前記データメッセージであると判定された場合、ＨＯＬＤ信号を含む、前記第１のクロスバースイッチから前記メモリ記憶ユニットまでのデータメッセージのフローを防ぐための手段が、非アクティブであることを前記第１の判定手段によって判定するためのステップと、
（５）ステップ（４）において非アクティブであると判定された場合、前記データメッセージを前記メモリ記憶ユニットに送信手段によって送信するステップであって、前記第１のクロスバースイッチが前記送信手段を含む、送信するステップと、
（６）前記メモリ記憶ユニット内の前記データメッセージが、データ転送、パージ要求、またはリターン要求のうちの１つであることを第２の判定手段によって判定するステップであって、前記メモリ記憶ユニットは前記第２の判定手段を含み、前記第１の判定手段が前記データメッセージはフェッチ要求であると判定した場合、前記第２の判定手段は、前記フェッチ要求が限定的なデータラインに対するものである場合には前記データメッセージがパージ要求であると判定し、又は前記フェッチ要求が共用なデータラインに対するものである場合には前記データメッセージがリターン要求であると判定する、判定するステップと、
（７）ステップ（５）においてデータ転送、パージ要求、またはリターン要求のうちの１つであると判定された場合、ＨＯＬＤ信号を含む、前記メモリ記憶ユニットから第２のクロスバースイッチまでのデータメッセージのフローを防ぐための手段が、アクティブであることを前記第２の判定手段によって判定するステップと、
（８）ステップ（７）においてアクティブであると判定された場合、前記データメッセージを、前記メモリ記憶ユニットに附随したメッセージ待ち行列内に一時的に格納するステップと、
（９）ステップ（５）においてデータ転送、パージ要求、またはリターン要求のうちの１つであると判定された場合、ＨＯＬＤ信号を含む、前記メモリ記憶ユニットから第２のクロスバースイッチまでのデータメッセージのフローを防ぐための手段が、非アクティブであることを前記第２の判定手段によって判定するステップと、
（１０）ステップ（９）において非アクティブであると判定された場合、前記データメッセージを、前記メモリ記憶ユニット待ち行列から第２の第３レベルキャッシュに送信するステップと
を具えたことを特徴とする方法。
【請求項８】
請求項７に記載の方法において、ステップ（１）の前に実行される、
（ａ）前記メッセージを前記第３レベルキャッシュから前記第１のクロスバースイッチへ送信することを試みるステップ
をさらに具えたことを特徴とする方法。
【請求項９】
請求項７に記載の方法において、ステップ（５）が、
（ｂ）前記送信手段によって送信することに先立ち、前記データメッセージを前記第１のクロスバースイッチ内に配置された検出手段で受信するステップと、
（ｃ）１つのデータメッセージにより第１の未処理メッセージカウンタを前記第１のクロスバースイッチ内に配置された増加手段によって増加させるステップであって、前記第１の未処理メッセージカウンタが、バッファの制限内でデータメッセージの数を維持するように、前記第１のクロスバースイッチから前記メモリ記憶ユニットへ送信されるデータメッセージの数を追跡し、前記第１の未処理メッセージカウンタが前記第１のクロスバースイッチに附随している、増加させるステップと
をさらに具えたことを特徴とする方法。
【請求項１０】
請求項７に記載の方法において、ステップ（１０）が、
（ｅ）前記第２のクロスバースイッチで前記データメッセージを受信したときに、前記メモリ記憶ユニットから前記第１のクロスバースイッチへメモリ肯定応答メッセージを送信するステップ
をさらに具えたことを特徴とする方法。
【請求項１１】
請求項７に記載の方法において、ステップ（１０）が、
（ｆ）１つのデータメッセージにより前記第２のクロスバースイッチに附随した第２の未処理メッセージカウンタを前記第２のクロスバースイッチ内に配置された増加手段によって増加させるステップであって、バッファの制限内でデータメッセージの数を維持するように、前記第２の未処理メッセージカウンタが前記メモリ記憶ユニットから前記第２のクロスバースイッチで受信されたデータメッセージの数を追跡する、増加させるステップ
をさらに具えたことを特徴とする方法。
【請求項１２】
コンピュータシステムの通信網において、第３レベルキャッシュから入出力モジュールへメッセージを伝送するときのデッドロックを防ぐための方法であって、
前記コンピュータシステムが、メモリ記憶ユニットと、前記第３レベルキャッシュおよび前記入出力モジュールに結合された複数のクロスバースイッチとを有し、前記複数のクロスバースイッチと、前記第３レベルキャッシュと、前記入出力モジュールとが、前記コンピュータシステムの前記通信網を介して相互接続され、
（１）第３レベルキャッシュから、クロスバースイッチに附随したメッセージ待ち行列に、メッセージを送信するステップと、
（２）前記クロスバースイッチに附随したメッセージカウンタを増加させるステップと、
（３）前記メッセージをメモリ記憶ユニットに前記第１のクロスバースイッチに附随している第１の送信手段によって送信するステップと、
（４）ＨＯＬＤ信号を含む、前記クロスバースイッチから入出力モジュールまでのメッセージのフローを防ぐための手段が、アクティブであることを前記メモリ記憶ユニットに附随している判定手段によって判定するステップと、
（５）ステップ（４）においてアクティブであると判定された場合、前記メッセージを、前記クロスバースイッチに附随した補助バッファに前記メモリ記憶ユニットに附随している第２の送信手段によって送信するステップと、
（６）ＨＯＬＤ信号を含む、前記クロスバースイッチから前記入出力モジュールまでのメッセージのフローを防ぐための手段が、非アクティブであることを前記判定手段によって判定するステップと、
（７）ステップ（６）において非アクティブであると判定された場合、前記メッセージを前記入出力モジュールに前記メモリ記憶ユニットに附随している第３の送信手段によって送信するステップと
を具えたことを特徴とする方法。
【請求項１３】
コンピュータシステムの通信網において、第１の第３レベルキャッシュから第２の第３レベルキャッシュへメッセージを伝送するときのデッドロックを防ぐための方法であって、
前記コンピュータシステムが、メモリ記憶ユニットと複数の第３レベルキャッシュに結合された複数のクロスバースイッチとを有し、メモリ記憶ユニットと、前記複数のクロスバースイッチと、前記複数の第３レベルキャッシュとが、前記コンピュータシステムの前記通信網を介して相互接続され、
（１）ＨＯＬＤ信号を含む、第１の第３レベルキャッシュから第１のクロスバースイッチまでのメッセージのフローを防ぐための手段が、非アクティブであることを第１の判定手段によって判定するステップであって、前記第１の判定手段が前記第１の第３レベルキャッシュの一部である、判定するステップと、
（２）ステップ（１）において非アクティブであると判定された場合、前記第１の第３レベルキャッシュから前記第１のクロスバースイッチへ、メッセージを送信するステップと、
（３）前記第１のクロスバースイッチからメモリ記憶ユニットへ、メッセージを送信するステップと、
（４）ＨＯＬＤ信号を含む、第２のクロスバースイッチから第２の第３レベルキャッシュまでのメッセージのフローを防ぐための手段が、非アクティブであることを第２の判定手段によって判定するステップであって、前記第２の判定手段が前記メモリ記憶ユニットの一部である、判定するステップと
（５）ステップ（４）において非アクティブであると判定された場合、前記第２のクロスバースイッチから前記第２の第３レベルキャッシュへ、前記メッセージを送信するステップと
を具えたことを特徴とする方法。
【請求項１４】
請求項１３に記載の方法において、ステップ（１）の前に実行される、
（ａ）前記メッセージを前記第１の第３レベルキャッシュから前記第１のクロスバースイッチへ送信することを試みるステップ
をさらに具えたことを特徴とする方法。
【請求項１５】
請求項１３に記載の方法において、ステップ（２）が、
（ｂ）送信された前記メッセージを前記第１のクロスバースイッチ内に配置された検出手段で受信するステップと、
（ｃ）１つのデータメッセージにより第１の未処理メッセージカウンタを前記第１のクロスバースイッチ内に配置された増加手段によって増加させるステップであって、前記第１の未処理メッセージカウンタが、バッファの制限内でデータメッセージの数を維持するように、前記第１のクロスバースイッチから前記メモリ記憶ユニットへ送信されるデータメッセージの数を追跡し、前記第１の未処理メッセージカウンタが前記第１のクロスバースイッチに附随している、増加させるステップと
をさらに具えたことを特徴とする方法。
【請求項１６】
請求項１３に記載の方法において、ステップ（４）が、
（ｄ）前記第２の判定手段によって非アクティブであると判定された場合、前記第１のクロスバースイッチに附随したメインストリームバッファセットに、前記メッセージを一時的に格納するステップ
をさらに具えたことを特徴とする方法。
【請求項１７】
請求項１６に記載の方法において、ステップ（４）が、
（ｅ）ステップ（ｄ）に続いて、未処理メッセージのバッファの制限内で未処理メッセージの数を維持するように、前記第１のクロスバースイッチから前記メモリ記憶ユニットへ送信される未処理メッセージの数を追跡するために、１つのデータメッセージにより第１の未処理メッセージカウンタを前記第１のクロスバースイッチ内に配置された減少手段によって減少させるステップ
をさらに具えたことを特徴とする方法。
【請求項１８】
コンピュータシステムの通信網において、第１の第３レベルキャッシュから第２の第３レベルキャッシュへメッセージを伝送するときのデッドロックを防ぐための方法であって、
前記コンピュータシステムが、メモリ記憶ユニットと複数の第３レベルキャッシュに結合された複数のクロスバースイッチとを有し、メモリ記憶ユニットと、前記複数のクロスバースイッチと、前記複数の第３レベルキャッシュとが、前記コンピュータシステムの前記通信網を介して相互接続され、
（１）ＨＯＬＤ信号を含む、前記第１の第３レベルキャッシュから前記第１のクロスバーまでのメッセージのフローを防ぐための手段が、アクティブであることを第１の判定手段によって判定するステップであって、前記第１の判定手段が前記第１の第３レベルキャッシュの一部である、判定するステップと、
（２）ステップ（１）においてアクティブであると判定された場合、前記第１の第３レベルキャッシュから前記第１のクロスバースイッチへ、メッセージが送信されるのを防ぐステップと、
（３）ＨＯＬＤ信号を含む、前記第１の第３レベルキャッシュから前記第１のクロスバーまでのメッセージのフローを防ぐための手段が、非アクティブであることを前記第１の判定手段によって判定するステップと、
（４）ステップ（３）において非アクティブであると判定された場合、前記第１の第３レベルキャッシュから前記第１のクロスバースイッチへ、前記メッセージを送信するステップと、
（５）前記第１のクロスバースイッチから前記メモリ記憶ユニットへ、前記メッセージを送信するステップと、
（６）ＨＯＬＤ信号を含む、第２のクロスバースイッチから前記第２の第３レベルキャッシュまでのメッセージのフローを防ぐための手段が、アクティブであることを第２の判定手段によって判定するステップであって、前記第２の判定手段が前記メモリ記憶ユニットの一部である、判定するステップと、
（７）ステップ（６）においてアクティブであると判定された場合、前記クロスバースイッチに附随した補助バッファに、前記メッセージを一時的に格納するステップと、
（８）ＨＯＬＤ信号を含む、第２のクロスバースイッチから第２の第３レベルキャッシュまでのメッセージのフローを防ぐための手段が、非アクティブであることを前記第２の判定手段によって判定するステップと、
（９）ステップ（８）において非アクティブであると判定された場合、前記第２のクロスバースイッチ補助バッファから前記第２の第３レベルキャッシュへ、前記メッセージを送信するステップと
を具えたことを特徴とする方法。
【請求項１９】
請求項１８に記載の方法において、ステップ（１）の前に実行される、
（ａ）前記メッセージを前記第１の第３レベルキャッシュから前記第１のクロスバースイッチへ送信することを試みるステップ
をさらに具えたことを特徴とする方法。
【請求項２０】
請求項１８に記載の方法において、ステップ（４）が、
（ｂ）送信された前記メッセージを前記第１のクロスバースイッチ内に配置された検出手段で受信するステップと、
（ｃ）１つのデータメッセージにより第１の未処理メッセージカウンタを前記第１のクロスバースイッチ内に配置された増加手段によって増加させるステップであって、前記第１の未処理メッセージカウンタが、バッファの制限内でデータメッセージの数を維持するように、前記第１のクロスバースイッチから前記メモリ記憶ユニットへ送信されるデータメッセージの数を追跡し、前記第１の未処理メッセージカウンタが前記第１のクロスバースイッチに附随している、増加させるステップと
をさらに具えたことを特徴とする方法。
【請求項２１】
請求項１８に記載の方法において、ステップ（８）が、
（ｄ）前記第２の判定手段によって非アクティブであると判定された場合、前記第１のクロスバースイッチに附随したメインストリームバッファセットに、前記メッセージを一時的に格納するステップ
をさらに具えたことを特徴とする方法。
【請求項２２】
請求項２１に記載の方法において、ステップ（８）が、
（ｅ）ステップ（ｄ）に続いて、未処理メッセージのバッファの制限内で未処理メッセージの数を維持するように、前記第１のクロスバースイッチから前記メモリ記憶ユニットへ送信される未処理メッセージの数を追跡するために、１つのデータメッセージにより第１の未処理メッセージカウンタを前記第１のクロスバースイッチ内に配置された減少手段によって減少させるステップ
をさらに具えたことを特徴とする方法。
【請求項２３】
コンピュータシステムの通信網において、第３レベルキャッシュとメモリ記憶ユニットとの間でデータを送信するときの輻輳を制御するためのシステムであって、
前記コンピュータシステムが、複数のクロスバースイッチに結合された前記メモリ記憶ユニットを有し、前記複数のクロスバースイッチのそれぞれ１つが、少なくとも１つの前記第３レベルキャッシュに結合され、前記メモリ記憶ユニットと、前記複数のクロスバースイッチと、前記第３レベルキャッシュとが、前記コンピュータシステムの前記通信網を介して相互接続され、
第１のクロスバースイッチが、メモリ記憶ユニットにデータを送信するのを防ぐ手段と、
前記メモリ記憶ユニットが、前記第１のクロスバースイッチにデータを送信するのを防ぐ手段と、
第２のクロスバースイッチが、前記メモリ記憶ユニットにデータを送信するのを防ぐ手段と、
前記メモリ記憶ユニットが、前記第２のクロスバースイッチにデータを送信するのを防ぐ手段と
を具えた、データフローを制御するためのデータフロー制御手段、
ならびに、
前記第１のクロスバースイッチが、前記メモリ記憶ユニットにコマンドを送信するのを防ぐ手段と、
前記メモリ記憶ユニットが、前記第１のクロスバースイッチにコマンドを送信するのを防ぐ手段と、
前記第２のクロスバースイッチが、前記メモリ記憶ユニットにコマンドを送信するのを防ぐ手段と、
前記メモリ記憶ユニットが、前記第２のクロスバースイッチにコマンドを送信するのを防ぐ手段と
を具えた、コマンドフローを制御するためのコマンドフロー制御手段
を具え、各防ぐ手段はＨＯＬＤ信号を含む
ことを特徴とするシステム。
【請求項２４】
コンピュータシステムの通信網において、該通信網を使用する前記コンピュータシステム内でメッセージを伝送するときのデッドロックを防ぐためのシステムであって、
前記コンピュータシステムが複数の第３レベルキャッシュおよび複数の入出力モジュールに結合された複数のクロスバースイッチと、複数のプロセッサに結合された前記第３レベルキャッシュとを有し、前記複数の入出力モジュールと、複数のクロスバースイッチと、複数の第３レベルキャッシュと、複数のプロセッサとが、前記コンピュータシステムの前記通信網を介して相互接続され、
前記クロスバースイッチが、前記入出力モジュールを介して前記プロセッサにメッセージを送信するのを防ぐ手段と、
前記プロセッサが、前記入出力モジュールを介して前記クロスバースイッチにメッセージを送信するのを防ぐ手段と、
前記クロスバースイッチが前記第３レベルキャッシュにメッセージを送信するのを防ぐ手段と、
前記第３レベルキャッシュが前記クロスバースイッチにメッセージを送信するのを防ぐ手段と
を具え、各防ぐ手段はＨＯＬＤ信号を含む
ことを特徴とするシステム。
【発明の詳細な説明】
【０００１】
（発明の背景）
（発明の分野）
本発明はコンピュータシステムに関し、特に、通信中の輻輳を最小限に抑えデッドロックを防ぐために、メッセージフローを制御するためのシステムおよび方法に関する。
【０００２】
（関連技術）
典型的なコンピュータシステムはいくつかのノードを有し、各ノードがプロセッサ、メモリ、１つまたは複数の入出力（Ｉ／Ｏ）デバイス、およびすべてのノードを接続するインターフェースを有する。また典型的なコンピュータシステムは、ノードが相互に通信できるように通信スキームを有する。多くのコンピュータシステムは、コンピュータシステム内の通信網を横切って、ノード間でメッセージを渡すことによって通信を行う。
【０００３】
たとえば、第１のプロセッサが第２のプロセッサのメモリからデータを読み取りたいと仮定する。また、この第２のプロセッサも、第１のプロセッサのメモリからデータを読み取りたいと仮定する。これら２つのタスクを遂行するためには、第１のプロセッサと第２のプロセッサとの間で、通信網上をメッセージが送信される。第１の例では、第１のプロセッサが（データを読み取るための）要求を第２のプロセッサに送信する。この要求が第２のプロセッサ側に到達すると、第２のプロセッサは第１のプロセッサに応答を送信しなければならない。この応答は、第２のプロセッサが正確な型の要求データを所有していないということであるかもしれない。あるいは、この応答が要求データを含んでいるかもしれない。いずれにせよ、この２つのプロセッサは、相互間でメッセージを渡すことによって通信を行う。
【０００４】
メッセージ受け渡しシステムでは、たとえば、２つの特定ノード間で受け渡されるメッセージトラフィックが多すぎると、輻輳が発生する可能性がある。この輻輳が、通信網内にデッドロック状態を作ってしまうことがある。通信網内のメッセージが前進できなくなったときに、デッドロックが存在する。
ニュエン（Ｎｇｕｙｅｎ）のＵ.Ｓ.特許５，０１６，１６７号は、マルチプロセッサシステムを開示しており、それは、システム内の各プロセッサへ’ビジー予知’期間を送信することで、論点のデッドロックを検知して防ぐ。たとえインタリーブされたメモリモジュールの要求がバックアップされるとしても、システムデータに対してデータ要求を与えるための主な制御手段は、プロセッサが要求を作ることを禁じ却下する。
【０００５】
（発明の概要）
本発明は、コンピュータシステム内のメッセージフローを制御するためのシステムおよび方法を対象とする。本発明は、制御信号および補助バッファを利用して、データパスからのメッセージを保持し転送する。これにより、必要な時に、入出力モジュールおよびプロセッサに向けてデータが流れ、都合がよい時に、メッセージが流れるようにできる。したがって、本発明は、コンピュータシステム内で輻輳を最小限に抑え、通信中のデッドロックを防ぐ。
【０００６】
本発明が作用するコンピュータシステムは、複数のメモリ記憶ユニットを含む。このメモリ記憶ユニットは、メモリ記憶ユニットのインターフェースバスを介して複数の処理モジュールに結合されている。各処理モジュールは、少なくとも２つのサブ処理モジュールに結合された、少なくとも１つのクロスバースイッチを含む。
【０００７】
各サブ処理モジュールは、少なくとも１つの第３レベルキャッシュを含む。クロスバースイッチは、第３レベルキャッシュバスを介して、サブ処理モジュールに結合される。各サブ処理モジュールは、複数の統一ドメインに結合された、少なくとも１つの第３レベルキャッシュを含む。各統一ドメインは、複数の第２レベルキャッシュおよび複数のプロセッサを含む。第３レベルキャッシュと第２レベルキャッシュおよびプロセッサを含む統一ドメインは、プロセッサバスを介して接続される。
【０００８】
処理モジュール内のクロスバースイッチはまた、入出力バスを介して少なくとも１つの入出力モジュールにも結合される。各入出力モジュールは、ペリフェラル・コンポーネント・インターコネクトバスを介して少なくとも１つの周辺機器構成要素に結合された、少なくとも１つのブリッジを含む。
【０００９】
好適実施形態において、本発明は、２つの処理モジュールに結合された２つのメモリ記憶ユニットを含む。各処理ユニットは、２つの入出力モジュールに結合され、１つのクロスバースイッチと２つのサブ処理モジュールとを含む。各入出力モジュールは、１つのブリッジと３つの周辺機器構成要素とを含む。各サブ処理モジュールは、１つの第３レベルキャッシュ、４つの第２レベルキャッシュ、および４つのプロセッサを含む。
【００１０】
本発明は、第１および第２の第３レベルキャッシュとメモリ記憶ユニットとの間でデータを送信するときの輻輳を制御する。第１の第３レベルキャッシュから第１のクロスバースイッチへメッセージが送信された後、本発明は、そのメッセージがデータメッセージであることを判定する。次いで本発明は、第１のクロスバースイッチから関連付けられたメモリ記憶ユニットへのデータメッセージフローが、禁止されているかどうかを判定する。第１のクロスバースイッチから関連付けられたメモリ記憶ユニットへのデータメッセージフローが、禁止されていないならば、本発明は、そのデータメッセージをメモリ記憶ユニットへ送信し、メモリ記憶ユニット内のデータメッセージが、データ転送、パージ要求、またはリターン要求のうちの１つであるかどうかを判定する。メモリ記憶ユニット内のデータメッセージが、データ転送、パージ要求、またはリターン要求のうちの１つであるならば、その時本発明は、メモリ記憶ユニットから第２のクロスバースイッチへのデータ転送、パージ要求、またはリターン要求のうちの１つのフローが不可能にされているかどうかを判定する。メモリ記憶ユニットから第２のクロスバースイッチへのデータ転送、パージ要求、またはリターン要求のうちの１つのフローが禁止されていないならば、次いで本発明は、第２のクロスバースイッチを介して、メモリ記憶ユニットから第２の第３レベルキャッシュへ、データメッセージを送信する。
【００１１】
本発明の様々な実施形態の構造および動作のみならず、本発明の更なる特徴および効果もまた添付の図面を参照しながら、以下に詳細に述べられる。
【００１２】
（好適実施形態の詳細な説明）
目次
Ｉ．序
ＩＩ．実施形態の環境
ＩＩＩ．キャッシングスキーム
ＩＶ．メッセージ受け渡し
Ａ．構造
Ｂ．メッセージ
Ｃ．ＨＯＬＤ信号
Ｄ．輻輳を最小限に抑えるためのメッセージフロー制御
１．ＭＩバス１３０を横切るメッセージフロー
２．デッドロック
Ｖ．デッドロックを回避するためのメッセージフロープロトコル
Ａ．構造
Ｂ．ＭＩ／Ｏバス２３０を横切るデッドロック回避メッセージフロー
Ｃ．ＴＣＴ  １１０２Ａからブリッジ  ３１０Ａへのデッドロック回避メッセージフロー
Ｄ．ＴＣＴ  １１０２Ａからブリッジ  ３１０Ｂへのデッドロック回避メッセージフロー
Ｅ．ＴＣＴ  １１０２ＡからＴＣＴ  １１０２Ｂへのデッドロック回避メッセージフロー
Ｆ．ブリッジ  ３１０ＡからＴＣＴ  １１０２Ａへのデッドロック回避メッセージフロー
Ｇ．ブリッジ  ３１０ＡからＴＣＴ  １１０２Ｂへのデッドロック回避メッセージフロー
ＶＩ．結論
【００１３】
Ｉ．序
本発明は、通信中の輻輳を最小限に抑えデッドロックを防ぐための、コンピュータシステムにおけるメッセージフローを制御するためのシステムおよび方法を対象とする。本発明は、メッセージの背後にトラップをかけることで、処理進行を要するデータによって生じる、Ｉ／Ｏと主メモリとの間、ならびにプロセッサと主メモリとの間のデッドロックを防ぐ。本発明は、制御信号および補助バッファを使用してデータパスからのメッセージを保持し転送する。これにより、必要な時に、Ｉ／Ｏおよびプロセッサに向けてデータが流れ、都合がよい時に、メッセージが流れるようにできる。
【００１４】
ＩＩ．実施形態の環境
図１は、複数の処理ユニット間および複数のメモリ記憶システム間でメッセージを受け渡すために有用な、システムプラットフォーム１００の実施形態の環境を示す。システムプラットフォーム１００は、１つまたは複数のメモリ記憶ユニット（ＭＳＵ）１１０と、１つまたは複数の処理モジュール（ＰＯＤ）１２０と、１つまたは複数のＭＳＵインターフェース（ＭＩ）バス１３０とを含む。ＭＳＵ  １１０は、ＭＩバス１３０を介してＰＯＤ  １２０と通信を行う。
【００１５】
本発明の１好適実施形態では、インテル・ペンティアム・プロ・ファミリ（Ｉｎｔｅｌ  Ｐｅｎｔｉｕｍ  Ｐｒｏ  Ｆａｍｉｌｙ）プロセッサおよび、将来のインテル・プロセッサが利用される。ただし、本発明はこの実施形態に限定されるものではない。たとえば本発明は、様々なプロセッサ（たとえばＡシリーズ（カプリコーン（Ｃａｐｒｉｃｏｒｎ））、２２００（ボイジャー（Ｖｏｙａｇｅｒ））、およびユニックス／ＮＴ（ＵＮＩＸ／ＮＴ（タイタン（ＴＩＴＡＮ））システム））を使用して実施することができる。さらに本発明は、１つのＭＳＵ、１つのＰＯＤ（プロセッサおよびキャッシュ）、ならびに１つのＩ／Ｏサブシステムを基準にして述べることができる。ただし、本発明の好適実施形態は、複数のＭＳＵ、複数のＰＯＤ、および複数のＩ／Ｏサブシステムを利用する。
【００１６】
ＭＩバス１３０は、システムプラットフォーム１００全体でメッセージを転送するための、１つまたは複数の専用（またはポイント間）リンク（個別には表示せず）を含む。各ＭＩバス１３０内の各リンクは、起点（またはソース）で始まり、宛先地点で終了する。
【００１７】
ＰＯＤ  １２０は、ＭＩバス１３０の１つを介した、任意のＭＳＵ  １１０内にあるデータへの直接アクセスを有する。たとえばＭＩバス１３０ＡはＰＯＤ  １２０ＡがＭＳＵ  １１０Ａに直接アクセスすることを可能とし、ＭＩバス１３０ＣはＰＯＤ  １２０ＡがＭＳＵ  １１０Ｂに直接アクセスすることを可能とする。ＰＯＤ  １２０およびＭＳＵ１１０については、以下でさらに詳細に論じる。
【００１８】
図２は、ＰＯＤ  １２０の相互接続性をさらに詳細に示す。ＰＯＤ  １２０は、１つまたは複数のクロスバー２５０と、１つまたは複数のサブ処理モジュール（サブＰＯＤ）２１０とを含む。クロスバー２５０は、１つまたは複数の第３レベルキャッシュ（ＭＴ）バス２３０を介して、サブＰＯＤ  ２１０に相互接続される。クロスバー２５０は、１つまたは複数の入出力（ＭＩ／Ｏ）バス２４０を介して、１つまたは複数の入出力（Ｉ／Ｏ）モジュール２２０と相互接続される。
【００１９】
クロスバー２５０は相互接続スイッチマトリックスであって、この相互接続スイッチマトリックスを介した１つのパスで、スイッチマトリックス内にある任意のノードが、スイッチマトリックス内にある任意の他のノードと通信することを可能とする。すなわち、クロスバー２５０は、ソースから宛先へ直接通信させることができるため、中間ノードがメッセージまたはデータを妨害することがない。
【００２０】
１好適実施形態では、クロスバー２５０が高帯域データバス、ならびにメモリマップ済みＩ／Ｏおよびメッセージ受け渡しを使用する割込み送達をサポートする。たとえば、クロスバー２５０は、ＭＩバス１３０、ＭＴバス２３０、およびＭＩ／Ｏバス２４０上のノードを介してメッセージを経路指定する。クロスバー２５０はまた、サブＰＯＤ  ２１０からＩ／Ｏモジュール２２０かサブＰＯＤ  ２１０のいずれかへのメッセージおよびデータパスを提供し、ならびにその逆を行う。クロスバー２５０は、ノード間のどんな順列のトラフィックパターンでも、同時に経路指定することができる。すなわち、クロスバー２５０は、たとえば、Ｉ／Ｏモジュール２２０Ａからのメッセージおよびデータを、ＭＩ／Ｏバス２４０Ａを横切り、ＭＳＵ  １１０Ａを通過し、ＭＩバス１３０Ｂを横切り、クロスバー２５０を通過して戻り、ＭＴバス２３０Ｂを横切り、サブＰＯＤ  ２１０Ｂ内のノードへと、経路指定することができる。スイッチマトリックス技術は当分野では周知であり、本明細書では簡潔にするためにより詳細には述べない。
【００２１】
図３は、Ｉ／Ｏモジュール２２０の相互接続性をさらに詳細に示す。Ｉ／Ｏモジュール２２０は、１つまたは複数のブリッジ３１０、１つまたは複数の周辺機器構成要素３２０、および１つまたは複数のペリフェラル・コンポーネント・インターコネクトバス（ＰＣＩバス）３３０を含む。ＭＩ／Ｏバス２４０は、ブリッジ３１０とＰＯＤ  １２０を接続する。ＰＣＩバス３３０は、周辺機器構成要素３２０とＩ／Ｏモジュール２２０を相互接続する。
【００２２】
ブリッジ３１０は、一般に、同じタイプの２つのネットワークを接続する装置である。ブリッジ３１０は、１つのバス上のトランザクションをリモートバス上で完了させることができる。ブリッジ３１０は、通信プロトコル変換を提供し、割込み処理および分割トランザクションを提供し、キャッシュおよびメモリのエージェントとしての役割を果たす。１好適実施形態では、ブリッジ３１０は、ＭＩ／Ｏバス２４０上のメッセージおよびデータをＰＣＩバス３３０に渡すことができる。ブリッジ技術は当分野では周知であり、本明細書では簡潔にするためにより詳細には述べない。
【００２３】
ＰＣＩバス３３０は、一般に、高帯域プロセッサ独立バスであり、それ自体が周辺バスに対してプラットフォームとして機能することができる。ＰＣＩバス３３０は、接続された他のバスをサポートすることができる。
【００２４】
周辺機器構成要素３２０は、一般に、入出力（Ｉ／Ｏ）装置、またはＩ／Ｏ装置を相互接続する分離バスである。典型的な周辺機器構成要素３２０は、グラフィック表示モジュール、ローカルディスクドライブ、プリンタ、ＣＤ  ＲＯＭ、ローカルエリアネットワーク（ＬＡＮ）、サウンドモジュール、および小型コンピュータシステムインターフェース（ＳＣＳＩ）を含む。ＳＣＳＩはそれ自体が、Ｉ／Ｏ装置をサポートするために使用される一種のバスである。１好適実施形態では、周辺機器構成要素３２０はＳＣＳＩまたはＬＡＮである。
【００２５】
図４Ａから図４Ｄは、本発明のシステムプラットフォームにおけるメッセージフローを示す、タイミング図である。図４Ａは、ＭＩバス１３０からＭＩ／Ｏバス２４０へのメッセージフローのタイミングを示す。図４Ｂは、ＭＩ／Ｏバス２４０からＭＩバス１３０へのメッセージフローのタイミングを示す。図４Ｃは、ＭＩバス１３０からＭＴバス２３０へのメッセージフローのタイミングを示す。図４Ｄは、ＭＴバス２３０からＭＩバス１３０へのメッセージフローのタイミングを示す。
【００２６】
図５は、サブＰＯＤ  ２１０の一実施形態をさらに詳細に示す。この実施形態では、サブＰＯＤ  ２１０は、第３レベルキャッシュ５１０および１つまたは複数の統一ドメイン５４０を含む。第３レベルキャッシュ５１０は、プロセッサバス５２０を介して各統一ドメイン５４０に接続される。第３レベルキャッシュ５１０は、すべての統一ドメイン５４０間の一貫性を維持する。
【００２７】
１好適実施形態では、サブＰＯＤ  ２１０は、インテル・ペンティアム・プロ・ファミリ（Ｉｎｔｅｌ  Ｐｅｎｔｉｕｍ  Ｐｒｏ  Ｆａｍｉｌｙ）プロセッサおよび将来のインテル互換プロセッサ、バス当たり２プロセッサ（またはサブＰＯＤ当たり４プロセッサ）を備えた２つの互換バス、ならびにプログラム可能割込みコントローラ機能をサポートする。
【００２８】
本発明のこの実施形態では、各統一ドメイン５４０は、キャッシュ５６０、およびバス５２０を介してそれぞれの第２レベルキャッシュ５６０に接続されたプロセッサ５５０との２つまたはそれ以上の階層を含む。各統一ドメイン５４０内の第２レベルキャッシュ５６０は、自身の統一ドメイン内で一貫性を維持する。本発明の１好適実施形態では、各統一ドメイン５４０内の第２レベルキャッシュ５６０が、それら自体の間でも同様に一貫性を維持する。本発明のこれと他の実施形態におけるキャッシュコヒーレンすは、参照により全体として本明細書に組み込まれた、弁護士整理番号第ＴＮ０５０号（１５２１．００８０００００）「Ｄｉｒｅｃｔｏｒｙ  Ｂａｓｅｄ  Ｃａｃｈｅ  Ｃｏｈｅｒｅｎｃｙ  Ｓｙｓｔｅｍ」にさらに詳細に述べられている。
【００２９】
図６は、ＭＳＵ  １１０をさらに詳細に示す。ＭＳＵ  １１０は、メモリコントローラ６１０、メモリ６２０、およびメモリクロスバー６４０を含む。メモリ６２０は、複数のデータライン（データライン６３０として図示）を含む。各データライン６３０は、データを格納するための、１つまたは複数のアドレス可能データ記憶位置を含む。データライン６３０は、システムプラットフォーム１００内のＭＳＵ  １１０間およびＰＯＤ  １２０間で転送されるデータ量が最も少ない。本発明の１好適実施形態では、データライン６３０は８データワード（または６４バイト）からなる。
【００３０】
メモリコントローラ６１０は、メモリ６２０のメモリマネージャとして動作する。メモリコントローラ６１０は、ＭＩバス１３０の制御およびアドレスラインをＰＯＤ  １２０から受け取る。メモリコントローラ６１０は、各データライン６３０の状態を制御し、監視する。メモリコントローラ６１０は、メモリクロスバー６４０も制御する。
【００３１】
メモリクロスバー６４０は、ＭＩバス１３０のデータラインに相互接続される。メモリクロスバー６４０は、ＭＩバス１３０のデータラインとメモリデータバス６５０との間のスイッチとして機能する。メモリクロスバー６４０は、データライン６３０からのデータを、ＭＩバス１３０を介して、メモリ６２０からシステムプラットフォーム１００内のいずれか１つのＰＯＤ  １２０へ流すことができる。
【００３２】
図７は、本発明で有用なコヒーレンスプロトコルの一実施形態を示す。この実施形態では、メモリ６２０および各レベルのキャッシュ（すなわち第３レベルキャッシュ５１０、第２レベルキャッシュ５６０など）が、一貫性を維持するためにディレクトリプロトコルを実行する。図７に示すように、メモリ６２０はメモリディレクトリ７４０を有し、第３レベルキャッシュ５１０は第３レベルキャッシュディレクトリ７５０を有し、第２レベルキャッシュ５６０は第２レベルキャッシュディレクトリ７６０を有する。ディレクトリプロトコルは、参照により全体として本明細書に組み込まれた、弁護士整理番号第ＴＮ０５０号（１５２１．００８０００００）「Ｄｉｒｅｃｔｏｒｙ  Ｂａｓｅｄ  Ｃａｃｈｅ  Ｃｏｈｅｒｅｎｃｙ  Ｓｙｓｔｅｍ」でさらに詳細に論じられている。
【００３３】
図８は、本発明で有用な、コヒーレンスプロトコルの他の実施形態を示す。この実施形態では、メモリ６２０および第３レベルキャッシュ５１０のみが、一貫性を維持するためにディレクトリプロトコルを実行する。図８に示すように、メモリ６２０はメモリディレクトリ７４０を有し、第３レベルキャッシュ５１０は第３レベルキャッシュディレクトリ７５０を有する。本発明のこの実施形態では、第２レベルキャッシュ５６０が「スヌーピ」プロトコルを実行する。一般にスヌーピプロトコルは、書込み無効化または書込み更新（書込み同報通信とも呼ばれる）という２つの方法のうち１つに従う。図８に示された本発明の実施形態は、変更され、限定的で、共用な、無効（ＭＥＳＩ）プロトコル、または書込み無効化プロトコルである。
【００３４】
図９Ａ、９Ｂは、コヒーレント（ｃｏｈｅｒｅｎｔ）システム９００を示す。コヒーレントシステム９００は、２つのメモリ６２０、２つの第３レベルキャッシュ５１０、および４つのプロセッサ５５０を含む。メモリ６２０は、バス９４５を介して第３レベルキャッシュ５１０に接続される。第３レベルキャッシュ５１０Ａは、バス５２０Ａを介してプロセッサ５５０Ａおよびプロセッサ５５０Ｂに接続される。第３レベルキャッシュ５１０Ｂは、バス５２０Ｂを介してプロセッサ５５０Ｃおよびプロセッサ５５０Ｄに接続される。第３レベルキャッシュ５１０Ｂは、バス５２０Ｃを介してプロセッサ５５０Ｅおよび５５０Ｆに接続される。第３レベルキャッシュ５１０Ｂは、バス５２０Ｄを介してプロセッサ５５０Ｇおよびプロセッサ５５０Ｈに接続される。
【００３５】
メモリ６２０は、複数のデータライン６２０を含む。第３レベルキャッシュ５１０は、１つまたは複数の第３レベルキャッシュライン７２０を含む。プロセッサ５５０は、第１レベルキャッシュ（図示せず）、第２レベルキャッシュ（図示せず）などのような１つまたは複数のキャッシュ５６０を含む場合もある。各キャッシュ５６０は、１つまたは複数のキャッシュライン７３０を含む。
【００３６】
ＩＩＩ．キャッシングスキーム
キャッシングスキームは時間を削減するために開発されたが、別に、メモリ６２０からデータライン６３０を読み取るプロセッサに必要とされる。キャッシュライン７３０Ａにデータライン６３０Ａのコピーを格納するために、キャッシュ５６０Ａなどのキャッシュが使用される。キャッシュ５６０Ａは一般的に、プロセッサ５５０Ａの近傍またはその内部に配置された少容量のメモリからなる。これによって、メモリ６２０Ａからのデータライン６３０Ａに対する読取りに必要な待ち時間がなく、プロセッサ５５０Ａはキャッシュ５６０Ａからキャッシュライン７３０Ａに即時にアクセスすることができるようになる。プロセッサ５５０Ａが特定のデータライン６３０Ａを読み取るときは、キャッシュ５６０Ａが調べられ、その特定のデータライン６３０Ａに対応するキャッシュライン７３０Ａが、キャッシュ５６０Ａ内に存在するかどうかを判定する。対応するキャッシュライン７３０Ａがキャッシュ５６０Ａ内に見つかると、「読取りヒット」が発生する。対応するキャッシュライン７３０Ａがキャッシュ５６０Ａ内に見つからないと、「読取りミス」が発生する。
【００３７】
プロセッサ５５０Ａが読取りヒットを取得したとすると、プロセッサ５５０Ａはキャッシュ５６０Ａからキャッシュライン７３０Ａを読み取る。プロセッサ５５０Ａが読取りミスを取得したとすると、プロセッサ５５０Ａは、他のキャッシュ（たとえばプロセッサ５５０Ａ内の他のキャッシュ、第３レベルキャッシュ５１０Ａなど）またはメモリ６２０Ａからのいずれかにおいてキャッシュラインを見つけなければならない。この場合、メモリ６３０Ａからであろうと他のキャッシュからであろうと、プロセッサ５５０Ａがその特定データラインをいったん取得すると、プロセッサ５５０Ａはその特定データラインをキャッシュライン７３０Ａとしてキャッシュ５６０Ａ内に格納する。このようにして、プロセッサ５５０Ａによる特定データラインの後続の読取りは、キャッシュ５６０Ａからの読取りヒットを達成していく。
【００３８】
第３レベルキャッシュ５１０Ａなどの他のキャッシュは、プロセッサ５５０Ａとメモリ６２０Ａとの間で追加のキャッシュとして動作し、メモリ６２０Ａからの特定データラインの実際の読取り数を削減する。
【００３９】
データライン６３０Ａのコピーのための専用の内部キャッシュを調べた後、プロセッサ５５０Ａは、任意のプロセッサまたはバス５４０Ａ上の第３レベルキャッシュ５１０が、データライン６３０Ａに対応するキャッシュライン７３０または７２０を有するかどうかを判定する。これは、ＭＥＳＩプロトコルとして知られる技術に従って達成される。プロセッサ５５０Ａは、データライン６３０Ａのコピーのためにバス５４０Ａに要求を発行する。バス５２０Ａに接続された各プロセッサ５５０および第３レベルキャッシュ５１０は、この要求に対してバス５２０Ａを監視する。データライン６３０Ａに対応するキャッシュラインを有する、プロセッサ５５０または第３レベルキャッシュ５１０はどれでも、この要求に応答することができる。この要求に応答する第１のプロセッサ５５０または第３レベルキャッシュ５１０は、そのキャッシュライン７３０または７２０をプロセッサ５５０Ａに提供する。
【００４０】
プロセッサ５５０または第３レベルキャッシュ５１０のどれもがこの要求に応答しないとすると、プロセッサ５５０Ａは、第３レベルキャッシュ５１０に要求を発行し、データライン６３０のコピーが任意のそのキャッシュドメイン５４０内に存在するかどうかを判定する。第３レベルキャッシュ５１０は、データライン６３０に対応するキャッシュライン７２０が、第３レベルキャッシュ５１０内に存在するかどうかを再度調べる。キャッシュライン７２０が存在し、第３レベルキャッシュ５１０がデータキャッシュであれば、第３レベルキャッシュ５１０は、プロセッサ５５０Ａにキャッシュライン７２０を提供する。キャッシュライン７２０が存在し、第３レベルキャッシュ５１０が一貫性のあるキャッシュであれば、第３レベルキャッシュ５１０は、第３レベルキャッシュライン７２０内に示されたプロセッサ５５０から、データライン６３０に対応するキャッシュライン７３０に対して要求を発行する。第３レベルキャッシュライン７２０が第３レベルキャッシュ５１０内に存在しなければ、第３レベルキャッシュ５１０は、データライン６３０に対する要求をバス５２０Ｂに発行する。任意のプロセッサ５５０が、データライン６３０に対応するキャッシュライン７３０を提供することによってその要求に応答すると、第３レベルキャッシュ５１０はキャッシュライン７３０を受け取り、それをプロセッサ５５０Ａに提供する。さらに、第３レベルキャッシュ５１０は、キャッシュライン７３０のコピーをキャッシュライン７２０として格納する。
【００４１】
ＩＶ．メッセージ受け渡し
本発明のシステムプラットフォーム１００は、アーキテクチャの機能性を実施するために、互いに通信する個々のノードを含んでいると考えてよい。すなわち、プロセッサ５５０を含むノードが、メモリ、第２レベルキャッシュ５６０、第３レベルキャッシュ５１０、またはＭＳＵ  １１０を含むノードと通信する可能性がある。同様に、Ｉ／Ｏ装置を含むノードが、プロセッサを含むノードと通信する可能性がある。実際上は、あらゆるノードがあらゆる他のノードと通信することができる。たとえば、プロセッサ５５０は、第３レベルキャッシュ５１０を介してＭＳＵ  １１０にメッセージを送ることができる。
【００４２】
システムプラットフォーム１００内にある構成要素間での通信を容易にするために、本発明はメッセージ受け渡しスキームを利用する。すなわち、システムプラットフォーム１００内にある２つの構成要素が互いに通信したいときには、これらの間でメッセージが受け渡される。
【００４３】
Ａ．構造
本発明の１好適実施形態のメッセージ受け渡し構造を、図１０Ａ、１０Ｂ、１１ＡＡ、１１ＡＢ、１１ＢＡ、１１ＢＢ、および１２を参照しながら説明する。図１０Ａおよび１０Ｂは、システムプラットフォーム１００の１好適実施形態の実施を示す。システムプラットフォーム１００は、ＭＳＵ  １１０、ＭＩバス１３０、クロスバー２５０、ＭＴバス２３０、ＭＩ／Ｏバス２４０、ブリッジ３１０、第３レベルキャッシュ５１０、プロセッサバス５４０、プロセッサ５５０、ＰＣＩバス３３０、周辺機器構成要素３２０、および割込みコントローラ（ＩＣ）バス１０１０を含む。ＭＩバス１３０は、ＭＳＵ  １１０とクロスバー２５０とを相互接続する。ＭＩ／Ｏバス２４０は、クロスバー２５０とブリッジ３１０とを相互接続する。ＭＴバス２３０は、クロスバー２５０と第３レベルキャッシュ５１０とを相互接続する。ＰＣＩバス３３０は、ブリッジ３１０と周辺機器構成要素３２０とを相互接続する。ＩＣバス１０１０は、周辺機器構成要素３２０とプロセッサ５５０とを相互接続し、プロセッサ５５０を互いに相互接続する。
【００４４】
図１１ＡＡ、１１ＡＢは、ＭＩバス１３０上のメッセージフローを示す。トランザクションは、ＭＩバス１３０およびＭＩバスインターフェース１１０４を介してＭＳＵ  １１０とクロスバー２５０との間で、ＭＩ／Ｏバスインターフェース１１０６を経由してＭＩ／Ｏバス２４０を介してクロスバー２５０とブリッジ３１０との間で、さらにＭＴバス２３０および第３レベルキャッシュインターフェース（ＴＣＴ）１１０２を介してクロスバー２５０と第３レベルキャッシュ５１０（図示せず）との間で発生する。
【００４５】
図１１ＢＡ、１１ＢＢは、ＭＳＵ  １１０、ＭＩバス１３０、クロスバー２５０、ブリッジ３１０、ＴＣＴ  １１０２、ＭＩバスインターフェース１１０４、ＭＩ／Ｏバスインターフェース１１０６、およびＭＴバスインターフェース１１０８の間の、メッセージフローを制御するのに必要なＨＯＬＤ信号を示す。すべてのＨＯＬＤ信号は、ＨＯＬＤ信号が行き来するバスインターフェース用のバスクロックと同期している。ＭＩバスインターフェース１１０４、ＭＩ／Ｏバスインターフェース１１０６、およびＭＴバスインターフェース１１０８は、クロスバー２５０に結合されてはいるが、外部の物として示されている。ただし、バスインターフェースはクロスバー２５０の一体部分であってもよい。
【００４６】
ＭＩバスインターフェース１１０４は、ＰＯＤ  １２０とＭＳＵ  １１０との間に接続を提供する。１好適実施形態では、ＭＩバスインターフェース１１０４は、単方向性の制御ライン、２２の双方向性アドレスおよび機能ライン、および８０の双方向性データラインからなる。
【００４７】
ＭＩ／Ｏバスインターフェース１１０６は、ブリッジ３１０とクロスバー２５０との間に相互接続を提供する。ＭＩ／Ｏバスインターフェース１１０６は、ＭＩバスインターフェース１１０４と同様に機能する。１好適実施形態では、ＭＩ／Ｏバスインターフェース１１０６が、ブリッジ３１０とクロスバー２５０の間で、７６のデータと２０のアドレスおよび機能双方向性信号を調整する。追加の信号は、インターフェース要求を制御するために提供される。
【００４８】
ＭＴバスインターフェース１１０８は、ＴＣＴ  １１０２とクロスバー２５０との間に相互接続を提供する。１好適実施形態では、ＭＴバスインターフェース１１０８が、ＭＴバスインターフェース１１０８とＴＣＴ  １１０２との間にある、１００の個別データ関連ビットと２４のアドレスおよび機能関連信号とからなる。これら１２４の双方向信号は、データおよびアドレスにパスを提供する。追加の信号は、インターフェース要求および応答を制御するために提供される。
【００４９】
Ｂ．メッセージ
メッセージとは、２つの構成要素間で交換される論理ユニットである。メッセージは、どのような長さのバイトでもよい。システムプラットフォーム１００は、要求メッセージ、応答メッセージ、およびリターンメッセージをサポートする。メッセージは、フロー制御機構１２００、１３００、および１４００、クロスバー２５０、ＭＩバス１３０、ＭＩ／Ｏバス２４０、ＭＴバス２３０、ＭＩバスインターフェース１１０４、ＭＩ／Ｏバスインターフェース１１０６、およびＭＴバスインターフェース１１０８を使用して、システムプラットフォーム１００全体で転送される。メッセージ応答およびデータ充填は、メッセージ送信側によって供給される。メッセージ応答およびデータ充填は、メッセージ受信側によって解釈される。
【００５０】
ＰＯＤ  １２０からＭＳＵ  １１０への要求メッセージは、ＰＯＤ  １２０Ａのような１つのＰＯＤによる、１２０Ｂのような他のＰＯＤからのデータをフェッチするための要求を含む。ＰＯＤからメモリへの要求メッセージはまた、データおよび／または所有権をＰＯＤ１２０からＭＳＵ  １１０へ逆に「格納する」かまたは転送するための要求も含む。ＰＯＤからメモリへの要求メッセージは、ＰＯＤ  １２０ＡからＰＯＤ  １２０Ｂへのように、１つのＰＯＤから別のＰＯＤへメッセージを送信する要求を含む。ＭＳＵ  １１０からＰＯＤ  １２０への要求メッセージは、ＭＳＵ  １１０による要求を含み、それは、すべてのＰＯＤ  １２０がＰＯＤ  １２０内にある特定キャッシュラインの任意のコピーをパージ（ｐｕｒｇｅ）する（または無効にする）ものである。ＭＳＵ  １１０からＰＯＤ  １２０への要求メッセージは、ＭＳＵ  １１０による要求を含み、それは、ＰＯＤ  １２０が特定キャッシュラインを返し（またはその所有権を解放し）、キャッシュラインが修正された場合には、キャッシュラインをＭＳＵ  １１０へ戻して転送するものである。
【００５１】
フェッチ要求は、一般にＭＳＵ  １１０からＰＯＤ  １２０へデータを転送するメッセージである。データが別のＰＯＤ  １２０によって所有されているとすると、フェッチ要求は、データを所有している特定のＰＯＤ  １２０に対してリターンメッセージを扇動する。このリターンメッセージは、あるリターンメッセージを介してＭＳＵ  １１０へ戻される。次いでＭＳＵ  １１０は、このデータを要求元ＰＯＤ  １２０へと経路指定する。
【００５２】
フェッチ要求メッセージは、一般に読取り要求または書込み要求である。読取り要求とは、特定のデータラインに関する読取り所有権のための、エージェントによる要求である。（ブリッジ３１０は、周辺機器構成要素３２０に対してキャッシュおよびメモリのエージェントとしての役割を果たす。第３レベルキャッシュ５１０は、プロセッサ５５０に対してキャッシュおよびメモリのエージェントとしての役割を果たす。）言い換えれば、読取り要求中に、エージェントは、別のエージェントからデータラインの共用コピーを要求している。本発明の１好適実施形態によれば、エージェントはディレクトリベースプロトコルを採用するために、エージェントは次に高位のエージェントからの読取り所有権を要求する。エージェントはスヌーピベースプロトコルを採用するために、エージェントは次に高位のエージェントからの、または同位のエージェントからの読取り所有権を要求することができる。
【００５３】
書込み要求とは、特定のデータラインに関する書込み所有権のための、エージェントによる要求である。それは、エージェントが、別のエージェントからのデータラインの独占的コピーを要求しているというものである。本発明の１好適実施形態によれば、エージェントはディレクトリベースプロトコルを採用するために、エージェントは次に高位のエージェントからの書込み所有権を要求する。エージェントはスヌーピベースプロトコルを採用するために、エージェントは次に高位のエージェントからの、または同位のエージェントからの所有権を要求することができる。
【００５４】
フェッチ要求は、通常は（エラーなしと仮定すると）リターンまたは８ワードデータを発生させる、メモリへの要求を開始する。ＭＩ／Ｏバス１３０を横切って送信された要求アドレスは、偶数の８ワード境界を指す、３６バイトアドレスの最上位３０ビットである。このアドレスが変換され、適切なＭＳＵ  １１０宛に要求が送られる。
【００５５】
データパージ要求メッセージとは、低位のエージェントに対してあるエージェントが出す要求であり、その低位のエージェントがそのメモリから特定のデータラインのコピーを除去するかまたは破棄するようにする。データパージは、別のエージェントがデータラインに関する書込み所有権を要求しているときに必要であり、データラインがそのデータラインの有効なコピーのみを有することを保証する。これは具体的には、データラインのコピーの状況を「存在せず」または「無効」としてマークすることによって達成される。データパージ要求メッセージは、ＭＳＵ  １１０からの完了のハンドシェーク（またはリターン）を必要としない。要求メッセージの例を、表１に示す。
【００５６】
【表１】
0003782661.tif 000002
【００５７】
フェッチ要求、データパージ要求、またはリターン要求のいずれかの要求は、１９の双方向性ビット上における、２サイクルのアドレスおよび機能動作からなる。たとえば、Ｄ＿ＲＥＱ信号は、ホールド（ｈｏｌｄ）がなければ、２サイクルアドレス機能転送のうちの最初のサイクルのみと同時に、ブリッジ３１０からクロスバー２５０へアサートされる。ホールドについては、以下でより詳細に論じる。Ｄ＿ＡＤＲ＿ＦＮＣには、実行されるコマンドおよび変換されるアドレス、トランザクションを追跡するためのジョブ番号、ならびに他の制御情報が含まれる。
【００５８】
メッセージ受け渡しプロセスを開始するためには、たとえば、関連付けられたアクティブなホールド信号がない限り、ブリッジ３１０がクロスバー２５０に対してＤ＿ＲＥＱを発生させる。関連付けられた何らかのアクティブなホールド信号がない限り、ブリッジ３１０へのパージを開始するために、クロスバー２５０がＤ＿ＡＲＢをアサートする。
【００５９】
応答メッセージは、前述のフェッチ要求またはメモリマップ読取り要求に関連付けられたデータを転送するために機能する。応答メッセージの例を表２に示す。
【００６０】
【表２】
0003782661.tif 000003
【００６１】
１好適実施形態では、応答メッセージは２サイクルの情報からなり、３つの形式を有する。形式１はフェッチをサポートする。形式２は遅延パージ肯定応答をサポートする。形式２は、障害および上書きもサポートする。形式３はメッセージをサポートする。たとえば、関連するホールドがアクティブでない限り、フェッチおよび上書きに応答するために、Ｐ＿ＲＥＳＰＯＮＳＥがブリッジ３１０に送られる。Ｐ＿ＲＥＳＰＯＮＳＥはまた、関連するホールドがアクティブでない限り、メッセージおよび遅延パージ肯定応答を示すために、ブリッジ３１０に送られる。
【００６２】
リターン要求とは、低位のエージェントに対してあるエージェントが出す要求であり、データが修正されていようとなかろうと、その低位のエージェントが書込み所有権を有する特定のデータラインのコピーをリターンするようにする。この要求は、他のエージェントが特定のデータラインに関する書込み所有権を希望する時に必要である。リターン要求は、特定データラインに対するすべての変更が、後の高位エージェントに逆に組み込まれることを保証するものであり、それは、他のエージェントがそのデータライン内のデータを続いて修正する前に行われる。本発明の１好適実施形態では、特定データラインに対する変更は、そのエージェントに戻って組み込まれ、そのエージェントのキャッシュドメインは、そのエージェントのそのデータラインの所有権放棄およびそのエージェントのそのデータラインの所有権要求の両方を含む。場合によっては、これが適用されるエージェントはメモリ６２０のみである。本発明の他の実施形態では、たとえばデータライン６３０への変更は、書込み所有権が他のエージェントに与えられる前に、メモリ６２０に戻って組み込まれる。
【００６３】
格納メッセージは、リターンメッセージである可能性がある。格納とは、ＰＯＤ  １２０からＭＳＵ  １１０に戻すデータおよび／または所有権を転送するメッセージである。格納メッセージを発する３つの機構がある。第３レベルキャシュ５１０が、修正済みのキャッシュラインおよび／または所有権をそのままにしておきたい場合、その時ＴＣＴ  １１０２はＭＳＵ  １１０に格納メッセージを送る。ＭＳＵ  １１０からＰＯＤ  １２０へリターンメッセージが発行された場合、その時ＰＯＤ  １２０は、戻すように要求されたものは何でも（典型的にはデータまたはキャッシュライン）戻す。Ｉ／Ｏサブシステム２２０がフェッチオリジナル非コヒーレンスメッセージを発行し、データを受け取り、修正されたかまたはされていないデータの所有権を戻そうとした場合、ブリッジ３１０はリターンメッセージを送る。
【００６４】
データは、応答またはリターンとして転送することができる。データは、８ワード転送を構成するために、８つの連続したサイクル内の６４ビット情報を使用して送信される。その８ワードは、昇順ワードアドレスで転送される。同期的なデータ転送をサポートするために、データストローブが生成され、ＭＩ／Ｏインターフェース１１０６を横切って送信される。ストローブは、宛先でデータを同期的にタイミングをとるために使用され、それによって２重転送（ｔｒａｎｓｆｅｒｓ）が可能になる。双方向性データバスは、フェッチデータを転送し、データを格納し、情報をメッセージで送信するために機能する。
【００６５】
他のメッセージには、読取りまたは書込み（あるいはＭＭＲｅｑ）メッセージへのメモリマップ済みＩ／Ｏ要求、メモリマップ済みＩ／Ｏ応答メッセージ、Ｉ／Ｏ割込み（またはＩＣｉｎｔ）メッセージ、プロセッサ間割込み（またはＩＣｉｐｉ）メッセージ、および割込み終了（またはＥＯＩ）メッセージが含まれる。メモリマップ済み応答メッセージは、ブリッジ３１０からクロスバー２５０へ、ＭＩ／Ｏバス２３０を横切って、ＭＳＵ  １１０に向かって、内向きに流れる。同様に、ＩＣｉｎｔメッセージは、ブリッジ３１０からクロスバー２５０へ、ＭＩ／Ｏバス２３０を横切って、ＭＳＵ  １１０に向かって、内向きに流れる。メモリマップ済み要求メッセージおよび割込み終了メッセージは、ＭＳＵ  １１０から外向きに、クロスバー２５０からブリッジ３１０へ、ＭＩ／Ｏバス２３０を横切って流れる。これら２つのメッセージはひとまとめにして、メモリマップ済み要求メッセージ／割込み終了（またはＭＭＲｅｑ／ＥＯＩ）メッセージと呼ばれる。ＭＭＲｅｑメッセージおよびＩＣｉｐｉメッセージの長さは８ワードである。すなわち、８ワードが様々なバスを横切って転送される。
【００６６】
すべての場合、宛先のＰＯＤ  １２０に経路指定するために、メッセージはＭＳＵ  １１０に対して発行され、ここでクロスバー２５０がそれを適切な宛先バスに向けて送る。たとえば、図１０Ａを参照すると、ＩＣｉｐｉメッセージはプロセッサ５５０Ａで始まり、プロセッサ５５０Ｅで終わる。ＥＯＩメッセージはプロセッサ５５０で始まり、ブリッジ３１０で終わる。同様に、ＭＭＲｅｑメッセージはプロセッサ５５０で始まり、ブリッジ３１０で終わる。メモリマップ済み応答メッセージは、ブリッジ３１０で始まり、プロセッサ５５０で終わる。
【００６７】
Ｃ．ＨＯＬＤ信号
図１１Ｂを参照すると、本発明の１好適実施形態は、システムプラットフォーム１００内のメッセージフローを制御するためのＨＯＬＤ信号を含む。ＭＩ／Ｏバス２４０には、ＨＯＬＤデータ信号１１４２、ＨＯＬＤフェッチ信号１１４４、ＨＯＬＤ  ＩＣｉｎｔ信号１１４６、ＨＯＬＤ  ＭＭＲｅｑ／ＥＯＩ信号１１４８、およびＨＯＬＤデータ／パージ信号１１５０が含まれる。ＭＩバス１３０には、ＨＯＬＤフェッチ信号１１６６、ＨＯＬＤデータ信号１１６８、ＨＯＬＤデータ／パージ信号１１７０、およびＨＯＬＤリターン信号１１７２が含まれる。ＭＴバス２３０には、ＨＯＬＤデータ信号１１５２、ＨＯＬＤフェッチ信号１１５４、ＨＯＬＤ  ＩＣｉｐｉ信号１１５６、ＨＯＬＤ  ＭＭＲｅｑ／ＥＯＩ信号１１５８、ＨＯＬＤデータ／パージ信号１１６０、ＨＯＬＤリターン信号１１６２、およびＨＯＬＤ  ＩＣａｌｌ信号１１６４が含まれる。
【００６８】
たとえば、本発明はＨＯＬＤデータ信号を含む。ＨＯＬＤデータ信号がアサートされるときに、このＨＯＬＤデータ信号がアサートされるノードは、データをアサートしているノードに送ることができない。ＨＯＬＤデータ信号がアサート解除される（または非アクティブである）とき、このＨＯＬＤデータ信号がアサートされるノードは、アサートしているノードにデータを送ることができる。この機能は、ＨＯＬＤデータ信号１１４２、１１５２、および１１６８に適用される。
【００６９】
特に、ＨＯＬＤデータ信号１１４２は、クロスバー２５０によってブリッジ３１０にアサートされる。ＨＯＬＤデータ信号１１４２は、ＨＯＬＤデータ信号１１４２がクロスバー２５０によってアサート解除されるまで、どんなタイプのデータもこれ以上発行しないように、ブリッジ３１０に対して、指示する。したがって、すべての格納要求メッセージ、メモリマップ済み読取り応答メッセージ、および割込みメッセージは、クロスバー２５０がＨＯＬＤデータ信号１１４２をアサート解除するまで、ブリッジ３１０で保持される。
【００７０】
同様に、ＨＯＬＤデータ信号１１５２は、クロスバー２５０によってＴＣＴ  １１０２にアサートされる。ＨＯＬＤデータ信号１１５２は、ＨＯＬＤデータ信号１１５２がアサート解除されるまで、どんな格納要求メッセージ、メモリマップ済み要求メッセージ、または割込みメッセージも、これ以上ＭＴバス２３０に対して発行しないように、ＴＣＴ  １１０２に対して、指示する。ＨＯＬＤデータ信号１１５２がアサートされると、クロスバー２５０はどんな種類のデータも受け入れることができない。ＴＣＴ  １１０２は、ＨＯＬＤデータ信号１１４２を利用して、メッセージの順序付けを維持する。
【００７１】
さらに、ＨＯＬＤデータ信号１１６８は、ＭＳＵ  １１０によってＭＩバスインターフェース１１０４にアサートされる。ＨＯＬＤデータ信号１１６８は、ＨＯＬＤデータ信号１１６８がアサート解除されるまで、どんな格納要求メッセージ、メモリマップ済み要求メッセージ、または割込みメッセージも、これ以上ＭＩバス１３０に対して発行しないように、クロスバー２５０に対して、指示する。
【００７２】
本発明は、ＨＯＬＤフェッチ信号も含む。ＨＯＬＤフェッチ信号がアサートされるときに、このＨＯＬＤフェッチ信号がアサートされるノードは、メモリフェッチ要求をアサーティングノードに送ることができない。ＨＯＬＤフェッチ信号がアサート解除されるときに、このＨＯＬＤフェッチ信号がアサートされるノードは、アサーティングノードにデータを送ることができる。この機能は、ＨＯＬＤフェッチ信号１１４４、１１５４、および１１６６に適用される。
【００７３】
特に、ＨＯＬＤフェッチ信号１１４４は、クロスバー２５０によってブリッジ３１０にアサートされる。ＨＯＬＤフェッチ信号１１４４は、ＨＯＬＤフェッチ信号１１４４信号がアサート解除されるまで、どんなメモリフェッチ要求もこれ以上発行しないように、ブリッジ３１０に対して、指示する。これは、クロスバー２５０のメモリ要求待ち行列が「ＨＯＬＤ」ポイントに達しており、満杯になろうとしているためであり、メモリ要求が急速に殺到したため、あるいはＭＳＵ  １１０がそのＨＯＬＤフェッチ信号１１６６をアサートした結果である。どちらの場合も、クロスバー２５０はＭＩ／Ｏバス２４０からこれ以上フェッチ要求を受け入れることはできない。
【００７４】
同様に、ＨＯＬＤフェッチ信号１１５４は、クロスバー２５０によって、ＴＣＴ  １１０２にアサートされる。ＨＯＬＤフェッチ信号１１５４は、ＨＯＬＤフェッチ信号１１５４がクロスバー２５０によってアサート解除されるまで、ＭＳＵ  １１０フェッチ要求メッセージをこれ以上発行しないように、ＴＣＴ  １１０２に対して、指示する。
【００７５】
さらに、ＨＯＬＤフェッチ信号１１６６は、ＭＳＵ  １１０によって、クロスバー２５０にアサートされる。ＨＯＬＤフェッチ信号１１６６は、ＨＯＬＤフェッチ信号１１６６がＭＳＵ  １１０によってアサート解除されるまで、ＭＳＵ  １１０フェッチ要求メッセージをこれ以上発行しないように、クロスバー２５０に対して、指示する。
【００７６】
本発明は、ＨＯＬＤデータ／パージ信号も含む。ＨＯＬＤデータ／パージ信号がアサートされるときに、このＨＯＬＤデータ／パージ信号がアサートされるノードは、データまたはパージメッセージのいずれかをアサーティングノードに送ることができない。ＨＯＬＤデータ／パージ信号がアサート解除されるときに、このＨＯＬＤデータ／パージ信号がアサートされるノードは、アサーティングノードにデータおよびパージメッセージを送ることができる。この機能は、ＨＯＬＤデータ／パージ信号１１５０、１１６０、および１１７０に適用される。
【００７７】
たとえば、ＨＯＬＤデータ／パージ信号１１５０は、ブリッジ３１０によってクロスバー２５０にアサートされる。ＨＯＬＤデータ／パージ信号１１５０のアサートは、ブリッジ３１０がＨＯＬＤデータ／パージ信号１１５０をアサート解除するまで、フェッチデータ応答メッセージ、パージ要求メッセージ、メモリマップ済み要求メッセージ、およびＩＣ  ＥＯＩメッセージを、ＭＩ／Ｏバス２４０を横切って送信されないように、クロスバー２５０に対して、指示する。本来、ＨＯＬＤデータ／パージ信号１１５０は、ブリッジ３１０がどんな種類のデータも受け入れられないことを、クロスバー２５０に伝える。パージはフェッチ済みデータで順序付けされたままでなければならないため、ＨＯＬＤデータ／パージ信号１１５０は、クロスバー２５０でデータおよびパージの両方を停止することによって、この順序付けを強制する。したがってクロスバー２５０は、ＭＩ／Ｏバス２４０向けの要求と応答との間の順序付けを維持する。
【００７８】
同様に、ＨＯＬＤデータ／パージ信号１１６０は、ＴＣＴ１１０２によってクロスバー２５０にアサートされる。ＨＯＬＤデータ／パージ信号１１６０は、ＨＯＬＤデータ／パージ信号１１６０がアサート解除されるまで、パージ要求メッセージ、フェッチ応答メッセージ、メモリマップ済み応答メッセージ、または割込みメッセージを、これ以上ＭＴバス２３０に発行しないように、クロスバー２５０に対して、命令する。本質的に、ＨＯＬＤデータ／パージ信号１１６０は、ＴＣＴ  １１０２がどんな種類のデータも受け入れられないことを、クロスバー２５０に伝える。ＨＯＬＤデータ／パージ信号１１６０は、クロスバー２５０でデータおよびパージの両方を停止することによって、パージおよびフェッチデータの順序付けを強制する。
【００７９】
さらに、ＨＯＬＤデータ／パージ信号１１７０は、クロスバー２５０によって、ＭＳＵ  １１０にアサートされる。ＨＯＬＤデータ／パージ信号１１７０は、ＨＯＬＤデータ／パージ信号１１７０がアサート解除されるまで、パージ要求メッセージ、フェッチ応答メッセージ、メモリマップ済み応答メッセージ、または割込みメッセージを、これ以上ＭＩバス１３０に発行しないように、ＭＳＵ  １１０に対して、命令する。
【００８０】
本発明は、ＨＯＬＤ  ＭＭＲｅｑ／ＥＯＩ信号も含む。ＨＯＬＤ  ＭＭＲｅｑ／ＥＯＩ信号がアサートされるときに、このＨＯＬＤ  ＭＭＲｅｑ／ＥＯＩ信号がアサートされるノードは、メモリマップ済み読取り、メモリマップ済み書込み、または割込み終了のいずれかのメッセージをアサーティングノードに送ることができない。ＨＯＬＤ  ＭＭＲｅｑ／ＥＯＩ信号がアサート解除されるときに、このＨＯＬＤ  ＭＭＲｅｑ／ＥＯＩ信号がアサートされるノードは、アサーティングノードに、メモリマップ済み読取り、メモリマップ済み書込み、または割込み終了のいずれかのメッセージを送ることができる。この機能は、ＨＯＬＤ  ＭＭＲｅｑ／ＥＯＩ信号１１４８および１１５８に適用される。
【００８１】
たとえば、ＨＯＬＤ  ＭＭＲｅｑ／ＥＯＩ信号１１４８は、ブリッジ３１０によってクロスバー２５０にアサートされる。ＨＯＬＤ  ＭＭＲｅｑ／ＥＯＩ信号１１４８は、メモリマップ済みの読取りまたは書込み要求をこれ以上発行しないように、クロスバー２５０に対して、指示する。これは、割込み終了メッセージをＭＩ／Ｏバス２４０に送らないことも示している。ＨＯＬＤ  ＭＭＲｅｑ／ＥＯＩ信号１１４８がアサートされると、ＭＭＲｅｑおよびＥＯＩメッセージは、ＭＭＲｅｑ／ＥＯＩ信号１１４８がブリッジ３１０によってアサート解除されるまで、受け取った順序で保持される。
【００８２】
同様に、ＨＯＬＤ  ＭＭＲｅｑ／ＥＯＩ信号１１５８は、クロスバー２５０によって、ＴＣＴ  １１０２にアサートされる。ＨＯＬＤ  ＭＭＲｅｑ／ＥＯＩ信号１１５８は、メモリマップ済み要求またはＥＯＩ（ＭＭＲｅｑ／ＥＯＩ）メッセージをこれ以上発行しないように、ＴＣＴ  １１０２に対して、指示する。すなわち、ＩＣ  ＥＯＩメッセージが、この信号によって保持される。
【００８３】
本発明は、ＨＯＬＤリターン信号も含む。ＨＯＬＤリターン信号がアサートされるときに、このＨＯＬＤリターン信号がアサートされるノードは、要求メッセージをアサーティングノードに送ることができない。ＨＯＬＤリターン信号がアサート解除されるときに、このＨＯＬＤリターン信号がアサートされるノードは、アサーティングノードに要求メッセージを送ることができる。この機能は、ＨＯＬＤリターン信号１１６２および１１７２に適用される。
【００８４】
たとえば、ＨＯＬＤリターン信号１１６２は、ＴＣＴ  １１０２によって、クロスバー２５０にアサートされる。ＨＯＬＤリターン信号１１６２は、これ以上リターン要求メッセージを発行しないように、クロスバー２５０に対して、指示する。ＨＯＬＤリターン信号１１７２は、クロスバー２５０によって、ＭＳＵ  １１０にアサートされる。ＨＯＬＤリターン信号１１７２は、これ以上リターン要求メッセージを発行しないように、ＭＳＵ  １１０に対して、指示する。
【００８５】
本発明は、ＨＯＬＤ  ＩＣｉｎｔ信号、ＨＯＬＤ  ＩＣｉｐｉ信号、およびＨＯＬＤ  ＩＣａｌｌ信号も含む。ＨＯＬＤ  ＩＣｘｘ信号がアサートされるときに、このＨＯＬＤ  ＩＣｘｘ信号がアサートされるノードは、割込みメッセージをアサーティングノードに送ることができない。ＨＯＬＤ  ＩＣｘｘ信号がアサート解除されるときに、このＨＯＬＤ  ＩＣｘｘ信号がアサートされるノードは、割込みメッセージをアサーティングノードに送ることができる。この機能は、ＨＯＬＤ  ＩＣｉｎｔ信号１１４６、ＨＯＬＤ  ＩＣｉｐｉ信号１１５６、およびＨＯＬＤ  ＩＣａｌｌ信号１１６４に適用される。
【００８６】
たとえば、ＨＯＬＤ  ＩＣｉｎｔ信号１１４６は割込みコントローラの割込みメッセージを停止する。ＨＯＬＤ  ＩＣｉｎｔ信号１１４６は、クロスバー２５０によってブリッジ３１０にアサートされる。ＨＯＬＤ  ＩＣｉｎｔ信号１１４６は、ＨＯＬＤ  ＩＣｉｎｔ信号１１４６がアサート解除されるまで、これ以上割込みメッセージを発行しないよう、ブリッジ３１０に対して、に命令する。ＨＯＬＤ  ＩＣｉｐｉ信号１１５６は、プロセッサ間割込みメッセージを停止する。ＨＯＬＤ  ＩＣｉｐｉ信号１１５６は、クロスバー２５０によってＴＣＴ  １１０２にアサートされる。ＨＯＬＤ  ＩＣｉｐｉ信号１１５６は、ＨＯＬＤ  ＩＣｉｐｉ信号１１５６がアサート解除されるまで、これ以上プロセッサ間割込み（ＩＣｉｐｉ）メッセージを発行しないように、ＴＣＴ  １１０２に対して、指示する。割込み終了（ＥＯＩ）メッセージは、ＨＯＬＤ  ＩＣｉｐｉ信号によって保持されない。ＨＯＬＤ  ＩＣａｌｌ信号１１６４は、割込みコントローラの割込みメッセージおよびプロセッサ間割込みメッセージの両方を停止する。ＨＯＬＤ  ＩＣａｌｌ信号１１６４は、ＴＣＴ  １１０２によってクロスバー２５０にアサートされる。ＨＯＬＤ  ＩＣａｌｌ信号１１６４は、ＨＯＬＤ  ＩＣａｌｌ信号１１６４がＴＣＴ  １１０２によってアサート解除されるまで、これ以上ＩＣｉｐｉおよびＩＣｉｎｔメッセージを発行しないように、クロスバー２５０に対して、命令する。ＨＯＬＤ  ＩＣａｌｌ信号１１６４のアサートは、送達されるべき割込みメッセージのバックログを有する、ＴＣＴ  １１０２の割込み待ち行列ロジックの結果発生する。
【００８７】
Ｄ．輻輳を最小限に抑えるためのメッセージフロー制御
本発明のフロー制御プロセスは、システムプラットフォーム１００内にある構成要素間のメッセージフローを制御する。このフロー制御機構は、フィードバックを利用して、別のメッセージをいつ送信してよいるかを送信側構成要素に通知する。メッセージ肯定応答信号形式でのフィードバックは、専用ラインを介して、送信側構成要素に即時に送り戻されるため、受信側構成要素が次のメッセージ用のスペースを作れるまで、送信側構成要素と受信側構成要素との間のすべてのリンクがフリーズされる。
【００８８】
メッセージはいくつかのパケットに分割され、各パケットにパケットの宛先とメッセージの一部が含まれる。メッセージ肯定応答信号は、受信側構成要素が、さらに多くのパケットを送信する許可を取得するまでに、所定数のパケットを送信する権利を送信側構成要素に与えられるようにする。パケット交換を利用する設計の兼ね合いは、システムプラットフォーム１００が固定量の帯域幅を有し、これに対して少量および大量両方のメッセージトラフィックがアクセスすることである。したがって、大量のメッセージトラフィックは、システムプラットフォーム１００内に輻輳を作り出す可能性がある。
【００８９】
メッセージトラフィックが削減されるまで、新しいメッセージがシステムプラットフォーム１００に入らないようにすることによって、メッセージフローの輻輳が最小限に抑えられる。本発明は、ＨＯＬＤ信号の形式におけるメッセージフロー制御を使用して、システムプラットフォーム１００全体を通じてメッセージフローを制御することによって、これを達成する。ＨＯＬＤ信号の利点は、送信中のメッセージをバッファに入れるために利用される待ち行列構造がより小さいことである。すべてのＨＯＬＤ信号は、信号が横切るインターフェース用のバスクロックと同期している。
【００９０】
本発明の１好適実施形態では、メッセージフロー制御機構は、ＭＳＵ  １１０に対するソフトウェアインターフェースプロトコル、およびクロスバー２５０との間に直接的にハードウェア肯定応答ラインを含む。たとえば、このプロトコルは、ＭＳＵ  １１０が受け取るあらゆるメッセージの送信側に対してメッセージ応答を戻す、ＭＳＵ  １１０を備える。これにより、送信側のクロスバー２５０は、所与のＭＳＵ  １１０への未処理のメッセージ数を追跡し、これを制限することができる。
【００９１】
１．ＭＩバス１３０を横切るメッセージフロー
図１２は、クロスバー２５０とＭＳＵ  １１０との間のメッセージフローを制御するためのフロー制御機構１２００をより詳細に示す。ＭＳＵ  １１０は、メッセージ待ち行列１２０２を含む。１好適実施形態では、各メッセージ待ち行列１２０２が、いずれか１つのＭＩバスインターフェース１１０４から、一度に４つのメッセージを受け入れて保持することができる。フロー制御機構１２００には、メッセージ肯定応答ロジックのブロック１２０４、メッセージ検出ロジックのブロック１２０６、ＭＳＵメッセージ待ち行列のセット１２０８、および未処理メッセージカウンタセット１２１０が含まれる。各未処理メッセージカウンタセット１２１０は、未処理メッセージの制限が監視されることを保証する責務を負う。未処理メッセージカウンタ１２１０は、クロスバー２５０から特定のＭＳＵ  １１０に送信されたが次のクロスバー２５０にはまだ送信されていないメッセージを追跡する。カウンタセット１２１０は、各ＭＳＵ  １１０に対して１つずつ、合計４つのカウンタからなる１セットを含む。ＭＳＵの数が増えた場合は、より多くのカウンタを追加することができる。
【００９２】
一般に、メッセージは必要に応じて、送信側ノード、中継点、および受信側ノードで、待ち行列に入れられる。したがって、送信側から受信側に対して任意の遅延が生じる。ただし、メッセージの順序は１対の構成要素間で維持される。メッセージ間で正しい送達順序を保証するために、特定ＰＯＤ向けのすべてのメッセージは、同じＭＳＵ  １１０を介して送達されなければならない。フロー制御機構１２００は、ＭＳＵ  １１０に対してソフトインターフェースプロトコルを実行する。
【００９３】
フロー制御機構１２００は、クロスバー２５０とＭＳＵ  １１０との間のメッセージフローを制御する。クロスバー２５０によりＭＳＵ  １１０に向けて渡されたメッセージは、ＭＳＵ  １１０によって受信側クロスバー２５０に送達されることが保証される。各ＭＳＵメッセージ待ち行列１２０２は、所定数のメッセージを受け入れて保持することができる。１好適実施形態では、メッセージ待ち行列１２０２が、いずれか１つのフロー制御機構１２００から、一度に４つのメッセージを受け入れて保持することができる。各未処理メッセージカウンタ１２１０は、未処理のメッセージ制限が監視されることを保証する責務を負う。
【００９４】
未処理メッセージカウンタ１２１０は、クロスバー２５０から特定のＭＳＵ  １１０へ送信中のメッセージを追跡する。１好適実施形態では、未処理メッセージカウンタ１２１０が、各ＭＳＵ  １１０に対して１つずつ、合計４つのカウンタからなる１セットを含む。即ち、未処理メッセージカウンタ１２１０は、特定のクロスバー２５０から特定のＭＳＵ  １１０へ送信中のメッセージ数を反映する。
【００９５】
メモリ肯定応答メッセージが、未処理メッセージカウンタ１２１０に加えられる。それは、ＭＳＵ  １１０によってメッセージソースクロスバー２５０に戻るように発行され、宛先クロスバー２５０へのメッセージ送達を肯定応答するメッセージである。ソースクロスバー２５０は、このメッセージを使用して、その未処理メッセージカウンタ１２１０を減少させる。
【００９６】
図１６Ａおよび図１６Ｂは、クロスバーからＭＳＵ、そしてクロスバーへの、フロー制御機構１２００の動作のフローチャート１６００を示す。フローチャート１６００はステップ１６０２で開始され、制御が即時にステップ１６０４に渡される。
【００９７】
ステップ１６０４では、送信されるメッセージがデータメッセージであるかフェッチメッセージであるかを判定するために、クロスバー２５０Ａが、クロスバーメッセージ待ち行列１２０８Ａを調べる。送信されるメッセージがデータメッセージでもフェッチメッセージでもない場合、フローチャート１６００の制御は、ステップ１６０６に渡される。
【００９８】
ステップ１６０６では、クロスバーメッセージ待ち行列１２０８Ａがメッセージ検出ロジック１２０６Ａにメッセージを送信する。ステップ１６０８では、メッセージ検出ロジック１２０６Ａが未処理メッセージカウンタ１２０４Ａを増加させるために、信号を送信する。ステップ１６１０では、メッセージ検出ロジック１２０６ＡがＭＳＵ  １１０にメッセージを送信する。このメッセージは、その宛先までの経路に沿って次の地点へ送達されるまで、ＭＳＵメッセージ待ち行列１２０２に格納される。
【００９９】
ステップ１６１２では、ＭＳＵメッセージ待ち行列１２０２が、未処理メッセージカウンタ１２０４Ａを減少させるために信号を送信する。未処理メッセージカウンタ１２０４Ａが減少された後、フローチャート１６００の制御は、ステップ１６２２に渡される。
【０１００】
ステップ１６２２では、ＭＳＵメッセージ待ち行列１２０２が、送信されるメッセージがデータメッセージ、パージメッセージ、またはリターンメッセージのいずれであるかを判定する。送信されるメッセージがデータメッセージでも、パージメッセージでも、またはリターンメッセージでもない場合、フローチャート１６００の制御はステップ１６２６に渡される。
【０１０１】
ステップ１６２６では、ＭＳＵメッセージ待ち行列が、メモリ肯定応答メッセージロジック１２０６Ｂにメッセージを送信する。ステップ１６２８では、メモリ肯定応答メッセージロジック１２０６Ｂが、未処理メッセージカウンタ１２０４Ｂに信号を送信する。この信号が、未処理メッセージカウンタ１２０４Ｂを増加させる。ステップ１６３０では、メモリ肯定応答メッセージロジック１２０６Ｂが、クロスバー２５０Ｂメッセージ待ち行列１２０８Ｂにメッセージを送信する。ステップ１６３４に示したように、フローチャート１６００の動作が完了する。
【０１０２】
ステップ１６０４で判定したように、送信されるメッセージがデータメッセージまたはフェッチメッセージであれば、その時フローチャート１６００の制御は、ステップ１６２０に渡される。ステップ１６２０では、クロスバーメッセージ待ち行列１２０８Ａが、アサートされるＨＯＬＤフェッチ信号１１３４またはＨＯＬＤデータ信号１１３６があるかどうかを判定する。アサートされるＨＯＬＤフェッチ信号１１３４またはＨＯＬＤデータ信号１１３６がある場合、フローチャート１６００の制御はステップ１６１４に渡される。そうでない場合、制御はステップ１６０６に渡される。
【０１０３】
ステップ１６１４では、クロスバーメッセージ待ち行列１２０８Ａが、データメッセージまたはフェッチメッセージをクロスバーメッセージ待ち行列１２０８内に保持する。フローチャート１６００の動作は、ステップ１６２０とステップ１６１４との間で循環を続け、それは、ＨＯＬＤフェッチ信号１１３４またはＨＯＬＤデータ信号１１３６がアサート解除されたことが、ステップ１６２０で判定されるまで続く。ＨＯＬＤフェッチ信号１１３４またはＨＯＬＤデータ信号１１３６がアサート解除されると、フローチャート１６００の制御はステップ１６０６に渡され、フローチャート１６００の動作は前述のように続行する。
【０１０４】
ステップ１６２２で、メッセージがデータメッセージ、パージメッセージ、またはリターンメッセージであると判定されると、フローチャート１６００の制御はステップ１６２４に渡される。
【０１０５】
ステップ１６２４では、ＭＳＵメッセージ待ち行列１２０２が、ＨＯＬＤデータ／パージ信号１１３８がアサートされたかどうか、またはＨＯＬＤリターン信号１１４０がアサートされたかどうかを判定する。ＨＯＬＤデータ／パージ信号１１３８がアサートされた、またはＨＯＬＤリターン信号１１４０がアサートされたと判定された場合、その時、フローチャート１６００の制御はステップ１６３２に渡される。そうでない場合、制御はステップ１６２６に渡される。
【０１０６】
ステップ１６３２では、ＭＳＵメッセージ待ち行列１２０２が、データ、パージ、またはリターンメッセージをＭＳＵメッセージ待ち行列１２０２内に保持する。フローチャート１６００の動作は、ステップ１６２４とステップ１６３２との間で循環を続け、それは、ＨＯＬＤデータ／パージ信号１１３８またはＨＯＬＤリターン信号１１４０がアサート解除されたと判定されるまで続く。ＨＯＬＤデータ／パージ信号１１３８がアサート解除されるか、またはＨＯＬＤリターン信号１１４０がアサート解除されると、フローチャート１６００の制御はステップ１６２６に渡され、フローチャート１６００の動作は前述のように続行される。
【０１０７】
２．デッドロック
前述のメッセージフロー制御機構を利用し、２つのシナリオに従ってデッドロックが発生する。第１に、ＰＣＩバス３３０Ａがフェッチ要求に専念した場合、ＰＣＩバス３３０ＡはＭＳＵ  １１０からのデータ送達を見越して機能停止する。ブリッジ３１０ＡのＭＩ／Ｏバス入力メッセージ待ち行列が満杯であると、ブリッジ３１０Ａは、ＭＩ／Ｏバス２４０上のＨＯＬＤデータ／パージ信号１１５０およびＨＯＬＤ  ＭＭＲｅｑ／ＥＯＩ信号１１４８をアサートする。その結果、クロスバー２５０Ａは、関連付けられたデータだけでなく、メッセージもそのバッファ内で保持し始める。フェッチされたデータが、ＭＭＲｅｑ／ＥＯＩおよび他のメッセージの背後でクロスバー２５０Ａのバッファに保持されると、デッドロック状態が発生する。
【０１０８】
前述のメッセージフロー制御機構を利用する第２のシナリオでは、ＴＣＴ  １１０２ＡのＭＴバス入力メッセージ待ち行列が満杯になり、ＴＣＴ  １１０２ＡがＭＴバス２３０上でＨＯＬＤ  ＩＣａｌｌ信号１１６９をアサートする時、デッドロックが発生する可能性がある。
【０１０９】
たとえば、プロセッサ５５０が、割込みを完了させるためにメモリマップ済み読取りを実行しなければならないと想定する。ＴＣＴ  １１０２は、ＭＴバス２３０上でＨＯＬＤ  ＩＣａｌｌ信号１１６９をアサートし、その結果、データパケットといっしょである割込みメッセージに、クロスバー２５０内へバックアップさせる。すなわち、クロスバー２５０のデータ待ち行列内で保持される割込みメッセージデータの背後で、戻ってくる読取りデータがブロックされることになる。プロセッサ５５０が（たとえばデータの）割込み送達を受け入れる前。戻ってくる読取りデータがプロセッサ５５０に送達されない限り、プロセッサ５５０は割込みを完了することができない。これはまた、プロセッサ５５０がその割込み処理中レジスタから割込みを除去できないということも意味している。ＴＣＴ  １１０２の割込みメッセージ送達機構は、割込みメッセージ送達をリトライする。それは、リトライカウンタが満了し、送達不能割込みとして割込みエラーログに新しい割込みがリトライされるまで行われる。
【０１１０】
Ｖ．デッドロックを回避するためのメッセージフロープロトコル
本発明は、システムプラットフォーム１００内のメッセージフローを制御するために、いくつかのフロー制御機構を使用してデッドロックを回避する。たとえば、フロー制御機構１３００は、クロスバー間のメッセージフローを制御する。フロー制御機構１４００も、クロスバー間のメッセージフローを制御する。これらのフロー制御機構は、適当なメッセージ順序を維持することによって、デッドロックを回避する。
【０１１１】
Ａ．構造
図１３は、メモリマップ済み要求メッセージおよび割込み終了メッセージを制御するためのフロー制御機構１３００を、より詳細に示す。フロー制御機構１３００には、ＭＳＵ  １１０、クロスバー２５０、ブリッジ３１０、第３レベルキャッシュロジック１１０２（またはＴＣＴ  １１０２）、ＭＩ／Ｏバス２３０、ＭＴバス２４０が含まれる。ＭＳＵ  １１０には、メッセージ待ち行列１３０２が含まれる。クロスバー２５０には、キックアサイド（ｋｉｃｋ−ａｓｉｄｅ）バッファセット１３０４、メッセージ待ち行列１３０６、およびＭＭＲｅｑ／ＥＯＩカウンタセット１３０８が含まれる。ＭＭＲｅｑ／ＥＯＩカウンタセット１３０８内の各カウンタは、未処理のＭＭＲｅｑおよびＥＯＩメッセージがいくつあるかを追跡する。それらのメッセージは、ソースクロスバー２５０が各宛先クロスバー２５０に対して発行したもので、ＭＩ／Ｏバス２４０向けである。
【０１１２】
ＭＭＲｅｑ／ＥＯＩフロー制御機構１３００は、ブリッジ３１０、クロスバー２５０、およびＴＣＴ１１０２の間のメッセージフローを制御する。前述のように、メモリマップ済み要求メッセージおよび割込み終了（またはＭＭＲｅｑ／ＥＯＩ）メッセージは、クロスバー２５０からブリッジ３１０へ、ＭＩ／Ｏバス２３０を横切って、ＭＳＵ  １１０から外向きに、流れる。すなわち、ＥＯＩメッセージは、プロセッサ５５０で始まってブリッジ３１０で終わり、ＭＭＲｅｑメッセージは、プロセッサ５５０で始まってブリッジ３１０で終わる。ＭＭＲｅｑ／ＥＯＩカウンタ１３０８内の各カウンタは、未処理のＭＭＲｅｑおよびＥＯＩメッセージがいくつあるかを追跡する。これらのメッセージは、ソースクロスバー２５０が各宛先クロスバー２５０に対して発行したもので、ＭＩ／Ｏバス２４０向けである。
【０１１３】
ＭＭＲｅｑ／ＥＯＩカウンタ１３０８は、ＭＭＲｅｑ／ＥＯＩメッセージ肯定応答信号セットと共に動作し、ＭＭＲｅｑ／ＥＯＩカウンタ１３０８の減分を制御する。各ＭＭＲｅｑ／ＥＯＩメッセージ肯定応答信号は、宛先クロスバー２５０からソースクロスバー２５０に戻る。システムプラットフォーム１００内で、各宛先クロスバー２５０から各ソースクロスバー２５０への１つのＭＭＲｅｑ／ＥＯＩメッセージ肯定応答信号がある。１好適実施形態では、全体で１２の外部および４つの内部ＭＭＲｅｑ／ＥＯＩメッセージ肯定応答信号がある。４つの内部ＭＭＲｅｑ／ＥＯＩメッセージ肯定応答信号（またはクロスバー２５０当たり１つ）があるのは、各ソースクロスバー２５０が、同じＭＭＲｅｑ／ＥＯＩメッセージ肯定応答信号のための宛先クロスバー２５０でもありうるためである。
【０１１４】
図１４は、割込みメッセージフローを制御するためのフロー制御機構１４００を、より詳細に示す。フロー制御機構１４００には、ＭＳＵ  １１０、クロスバー２５０Ａ、クロスバー２５０Ｂ、ＭＴバス２４０、ＭＩ／Ｏバス２３０、第３レベルキャッシュ１１１０、およびブリッジ３１０が含まれる。ＭＳＵ  １１０にはメッセージ待ち行列１４０２が含まれる。クロスバー２５０には、メモリバッファセット１４０４、キックアサイドバッファセット１４０６、およびメッセージ検出ロジック１４０８が含まれる。クロスバー２５０には、ＩＣｉｎｔ／ＩＣｉｐｉカウンタセット１４１０も含まれる。
【０１１５】
ＩＣｉｎｔ／ＩＣｉｐｉカウンタセット１４１０内の各カウンタは、未処理のＩ／Ｏ割込み（ＩＣｉｎｔ）およびプロセッサ間割込み（ＩＣｉｐｉ）メッセージがいくつあるかを追跡する。それらのメッセージは、ソースクロスバー２５０が各宛先クロスバー２５０に対して発行したものであり、ＭＩ／Ｏバス２４０向けである。ＩＣｉｎｔ／ＩＣｉｐｉキックアサイドバッファセット１４０６は、ＩＣｉｎｔ／ＩＣｉｐｉカウンタセット１４１０およびＩＣｉｎｔ／ＩＣｉｐｉメッセージ肯定応答信号にリンクされる。
【０１１６】
ＩＣｉｎｔ／ＩＣｉｐｉカウンタセット１４１０はまた、メッセージ肯定応答信号セットと共に動作し、ＩＣｉｎｔ／ＩＣｉｐｉカウンタセット１４１０の減分を制御する。各ＩＣｉｎｔ／ＩＣｉｐｉメッセージ肯定応答信号は、宛先クロスバー２５０からソースクロスバー２５０に戻る。システムプラットフォーム１００内に、各宛先クロスバー２５０から各ソースクロスバー２５０への１つのＩＣｉｎｔ／ＩＣｉｐｉメッセージ肯定応答信号がある。
【０１１７】
１好適実施形態では、各キックアサイドバッファが、ＰＯＤ  １２０当たり４つのメッセージ位置を有する。各クロスバー２５０内には４つのキックアサイドバッファがある。ＭＭＲｅｑ／ＥＯＩキックアサイドバッファセット１３０４は、各ＭＩ／Ｏバス２４０に関連付けられたキックアサイドバッファセットである。ＩＣｉｎｔ／ＩＣｉｐｉキックアサイドバッファセット１４０６は、各ＭＴバス２３０に関連付けられたキックアサイドバッファセットである。
【０１１８】
図１５に示すように、ＴＣＴ  １１０２およびブリッジ３１０には、どちらもメッセージ送達ＭＳＵ選択機構１５００が含まれる。メッセージ送達メモリ記憶選択機構１５００には、ルックアップテーブル１５０２、セレクタ１５０４、ゲート１５０６、インバータ１５０８、ゲート１５１０、およびバスメッセージ要求ビットストア１５１２が含まれる。
【０１１９】
ルックアップテーブル１５０２には、ＭＳＵ  １１０Ａ用のエントリ１５１４、ＭＳＵ  １１０Ｂ用のエントリ１５１６、ＭＳＵ  １１０Ｃ用のエントリ１５１８、およびＭＳＵ  １１０Ｄ用のエントリ１５２０が含まれる。
【０１２０】
構成要素間でメッセージを送信するためには、送信側構成要素が受信側構成要素の参照を有することが必要である。参照は、メッセージ内でＩＤとして表される。ルックアップテーブル１５０２は、メッセージ要求内で使用されなければならないＭＳＵ  ＩＤを保持する。ルックアップテーブル１５０２は、ＭＴバスメッセージ要求サイクル１が必要とする、２ビットフィールド１５２２を提供する。ルックアップテーブル１５０２は、ＭＩ／Ｏバスメッセージ要求サイクル２の２ビットフィールド（図示しないが、２ビットライン１５２２と同様）も提供する。システムの初期設定時に、ソース／宛先ＰＯＤ  ＩＤスイッチ設定１５２４が設定される。選択されるＭＳＵ  １１０は、メッセージの選択可能ソースＰＯＤ  ＩＤ  １５２６または宛先ＰＯＤ  ＩＤ  １５２８に依存する。
【０１２１】
Ｂ．ＭＩ／Ｏバス２３０を横切るデッドロック回避メッセージフロー
したがって本発明は、特定のＨＯＬＤ状態に関連付けられた入力メッセージを保持するための、「メモリフロー外」バッファリングを提供する。キックアサイドバッファは、追加のバッファリングを提供する。
【０１２２】
１好適実施形態では、クロスバー２５０内に４つのキックアサイドバッファがある。各ＭＩ／Ｏバス２４０および各ＭＴバス２３０に関連して、１つのキックアサイドバッファセットがある。各キックアサイドバッファは、ＰＯＤ  １２０当たり４つのメッセージ位置を有する。
【０１２３】
ＭＭＲｅｑ／ＥＯＩキックアサイドバッファセット１３０４は、ＭＩ／Ｏバス２４０に関連付けられる。ＭＭＲｅｑ／ＥＯＩキックアサイドバッファセット１３０４は、ＭＭＲｅｑ／ＥＯＩカウンタ１３０８およびＭＭＲｅｑ／ＥＯＩメッセージ肯定応答信号にリンクされる。１好適実施形態では、ＭＭＲｅｑ／ＥＯＩキックアサイドバッファ１３０４が１対の待ち行列構造を含む。第１の待ち行列がＭＭＲｅｑ／ＥＯＩメッセージを保持し、第２の待ち行列がこのメッセージに関連付けられたデータパケットを保持する。
【０１２４】
ＩＣｉｎｔ／ＩＣｉｐｉキックアサイドバッファセット１４０６は、ＭＴバス２３０に関連付けられる。ＩＣｉｎｔ／ＩＣｉｐｉキックアサイドバッファセット１４０６は、ＩＣｉｎｔ／ＩＣｉｐｉカウンタセット１４１０およびＩＣｉｎｔ／ＩＣｉｐｉメッセージ肯定応答信号にリンクされる。
【０１２５】
Ｃ．ＴＣＴ  １１０２Ａからブリッジ  ３１０Ａへのデッドロック回避メッセージフロー
前述のように、データはＭＳＵ  １１０へ向かって、ＭＩ／Ｏバス２４０を横切り、ブリッジ３１０からクロスバー２５０へ流れる。出力される応答データがクロスバー２５０によってＭＩ／Ｏバス２４０からいったん受け取られると、クロスバー２５０はこのデータをＭＳＵ  １１０に転送する。クロスバー２５０が何のデータも受け入れられない場合は、ＨＯＬＤデータ信号１１４２をＭＩ／Ｏバス２４０上でアサートする。クロスバー２５０によってＨＯＬＤデータ信号１１４２がアサートされると、ＨＯＬＤデータ信号１１４２がクロスバー２５０によってアサート解除されるまで、ブリッジ３１０はそれ以上データを送信するのを停止する。
【０１２６】
ＭＭＲｅｑ／ＥＯＩメッセージは、ＭＩ／Ｏバス２４０を横切り、クロスバー２５０からブリッジ３１０へ流れる。ブリッジ３１０は、外向きのメモリマップ済み要求メッセージおよびＥＯＩメッセージ（ひとまとめにしてＨＯＬＤ  ＭＭＲｅｑ／ＥＯＩ信号１１４６と呼ばれる）を制御するために、２つのフロー制御信号を有する。ブリッジ３１０はＥＯＩメッセージを受け取ると、特定のＥＯＩメッセージに関連付けられた割込みをリセットするのに備えて、内部的にリダイレクションテーブルを走査する（そのテーブルは、図示しないが、ルックアップテーブル１５０２と同様であり、その論理構造は、割込みがどのＰＣＩバス３３０に関連付けられるかの指示を与えるようになっている）。ブリッジ３１０は、どのＰＣＩバス３３０が割込みを生成したかも示す。ブリッジ３１０は、リダイレクションテーブルから特定のＰＣＩバス３３０エントリを選択し、後で割込み処理中ビットをクリアするために、それを持っている。次いでブリッジ３１０は、特定のＰＣＩバス３３０用の待ち行列に入れられたＭＭＲｅｑ／ＥＯＩ信号１１１６上で保留中のすべての要求を、リターンする前に強制的にフラッシュして、割込み処理中ビットをクリアする。これにより、不正割込みが生成されるリスクが軽減される。これが必要なのは、入力されるＥＯＩメッセージがＭＭＲｅｑメッセージの後に処理されるためである。どちらのメッセージも、ブリッジ３１０にその割込みラインをアサート解除するように通知することができる。
【０１２７】
図１７は、ＴＣＴ  １１０２Ａからブリッジ３１０Ａまでの、クロスバー２５０Ａ内にあるＭＭＲｅｑ／ＥＯＩメッセージの、メッセージフロー動作を示すフローチャート１７００である。フローチャート１７００はステップ１７０２で始まり、制御は即時にステップ１７０４に渡される。
【０１２８】
ステップ１７０４では、ＴＣＴ  １１０２ＡがＭＭＲｅｑ／ＥＯＩメッセージをＭＭＲｅｑ／ＥＯＩメッセージ待ち行列１３０６Ａに送る。ステップ１７０６では、ＭＭＲｅｑ／ＥＯＩメッセージ待ち行列１３０６Ａが、ＭＭＲｅｑ／ＥＯＩカウンタ１３０８Ａを増加させるために信号を送る。ステップ１７０８では、ＭＭＲｅｑ／ＥＯＩメッセージ待ち行列１３０６Ａが、ＭＭＲｅｑ／ＥＯＩメッセージをＭＭＲｅｑ／ＥＯＩキックアサイドバッファ１３０４Ａに送る。ステップ１７１０では、ＭＭＲｅｑ／ＥＯＩキックアサイドバッファ１３０４Ａが、ＭＭＲｅｑ／ＥＯＩキックアサイドバッファ１３０４ＡからＭＭＲｅｑ／ＥＯＩメッセージを解放する。
【０１２９】
ステップ１７１２では、ＭＭＲｅｑ／ＥＯＩキックアサイドバッファ１３０４Ａが、ＭＭＲｅｑ／ＥＯＩカウンタ１３０８Ａを減少させるために信号を送る。この時点で、ＭＭＲｅｑ／ＥＯＩメッセージがブリッジ３１０Ａに到達する。
【０１３０】
ＭＭＲｅｑ／ＥＯＩメッセージがブリッジ３１０Ａに到達すると、ステップ１７１４に示すように、フローチャート１７００の動作が完了する。
【０１３１】
Ｄ．ＴＣＴ  １１０２Ａからブリッジ  ３１０Ｂへのデッドロック回避メッセージフロー
図１８は、第３レベルキャッシュ１１０２Ａからブリッジ３１０Ｂにメッセージを渡す、ＭＭＲｅｑ／ＥＯＩフロー制御機構１３００の動作を示す、フローチャート１８００である。フローチャート１８００はステップ１８０２で始まり、制御は即時にステップ１８０４に渡される。
【０１３２】
ステップ１８０４では、ＴＣＴ  １１０２ＡがＭＭＲｅｑ／ＥＯＩメッセージを、ＭＴバス２３０Ａを横切ってＭＭＲｅｑ／ＥＯＩメッセージ待ち行列１３０６に送る。ステップ１８０６では、ＭＭＲｅｑ／ＥＯＩメッセージ待ち行列１３０６ＡがＭＭＲｅｑ／ＥＯＩカウンタ１３０８Ａを増加させるために信号を送る。ステップ１８０８では、ＭＭＲｅｑ／ＥＯＩメッセージ待ち行列１３０６が、ＭＭＲｅｑ／ＥＯＩメッセージをＭＳＵ  １１０に送る。ステップ１８１４では、ＭＳＵ  １１０が、ＨＯＬＤ  ＭＭＲｅｑ／ＥＯＩ信号１１４８がアサートされるかどうかを判定する。ＨＯＬＤ  ＭＭＲｅｑ／ＥＯＩ信号１１４８がアサートされると、次いでフローチャート１８００の動作は、ステップ１８１２に渡される。
【０１３３】
ステップ１８１２では、ＭＳＵ  １１０がＭＭＲｅｑ／ＥＯＩメッセージをＭＳＵ  １１０メッセージ待ち行列１３０２内に保持する。フローチャート１８００の動作は、ＨＯＬＤ  ＭＭＲｅｑ／ＥＯＩ信号１１４８がアサート解除されるまで、ステップ１８１４と１８１２との間で循環を続ける。ＨＯＬＤ  ＭＭＲｅｑ／ＥＯＩ信号１１４８がアサート解除されると、フローチャート１８００の動作はステップ１８１０に渡される。
【０１３４】
ステップ１８１０では、ＭＳＵ  １１０がＭＭＲｅｑ／ＥＯＩメッセージを、ＭＩバス１３０Ｂを横切ってＭＭＲｅｑ／ＥＯＩキックアサイドバッファ１３０４Ｂに送る。
【０１３５】
ステップ１８１１では、ＭＭＲｅｑ／ＥＯＩキックアサイドバッファ１３０４ＢがＭＭＲｅｑ／ＥＯＩメッセージを、ＭＩ／Ｏバス２４０Ａを横切ってブリッジ３１０Ｂに送る。
【０１３６】
ブリッジ３１０がＭＭＲｅｑ／ＥＯＩメッセージをＭＭＲｅｑ／ＥＯＩキックアサイドバッファ１３０４Ｂから受け取った後、ステップ１８１６で示すように、フローチャート１８００の動作が完了する。
【０１３７】
前述のように、ＩＣｉｎｔメッセージは、ＭＳＵ  １１０に向かって内向きに、ＭＩ／Ｏバス２３０を横切って、ブリッジ３１０からクロスバー２５０へ流れる。
【０１３８】
ＩＣｉｎｔ／ＩＣｉｐｉカウンタセット１４１０内の各カウンタは、未処理のＩ／Ｏ割込み（ＩＣｉｎｔ）メッセージおよびプロセス間割込み（ＩＣｉｐｉ）メッセージがいくつあるかを追跡する。それらのメッセージは、ソースクロスバー２５０が各宛先クロスバー２５０に対して発行したもので、ＭＩ／Ｏバス２４０向けである。
【０１３９】
ＩＣｉｎｔ／ＩＣｉｐｉカウンタセット１４１０はまた、メッセージ肯定応答信号セットと共に動作し、ＩＣｉｎｔ／ＩＣｉｐｉカウンタセット１４１０の減分を制御する。各ＩＣｉｎｔ／ＩＣｉｐｉメッセージ肯定応答信号は、宛先クロスバー２５０からソースクロスバー２５０に戻る。システムプラットフォーム１００内に、各宛先クロスバー２５０から各ソースクロスバー２５０への１つのＩＣｉｎｔ／ＩＣｉｐｉメッセージ肯定応答信号がある。
【０１４０】
Ｅ．ＴＣＴ  １１０２ＡからＴＣＴ  １１０２Ｂへのデッドロック回避メッセージフロー
図１９は、本発明の割込みメッセージフロー制御機構１４００の動作を示すフローチャート１９００である。フローチャート１９００は、ＴＣＴ  １１０２ＡからＴＣＴ  １１０２ＢへのＩＣｉｐｉメッセージフローを表す。フローチャート１９００はステップ１９０２で始まり、制御は即時にステップ１９０４に渡される。
【０１４１】
ステップ１９０４では、ＴＣＴ  １１０２Ａが、ＨＯＬＤ  ＩＣｉｐｉ信号１１５６がアサートされるかどうかを判定する。アサートされるＨＯＬＤ  ＩＣｉｐｉ信号１１５６がない場合は、制御がステップ１９０６に渡される。ステップ１９０６では、ＴＣＴ  １１０２がＩＣｉｐｉメッセージをＭＴ  ＩＣｉｐｉメッセージ検出ロジック１４０８Ａへ送る。ステップ１９０８では、ＭＴ  ＩＣｉｐｉメッセージ検出ロジック１４０８Ａが、ＩＣｉｐｉカウンタ１４１０Ａを増加させるためにその信号を送る。ステップ１９１０では、ＭＴ  ＩＣｉｐｉメッセージ検出ロジック１４０８が、ＩＣｉｐｉメッセージをＭＳＵ  １１０に送る。
【０１４２】
ステップ１９１１では、ＭＴ  ＩＣｉｐｉメッセージ検出ロジック１４０８が、ＩＣカウンタ１４１０Ａを減少させるために信号を送る。
【０１４３】
ステップ１９１８では、ＭＳＵ  １１０が、ＨＯＬＤ  ＩＣａｌｌ信号がアサートされるかどうかを判定する。ＨＯＬＤ  ＩＣａｌｌ信号１１６４がアサートされない場合、フローチャート１９００の制御はステップ１９１２に渡される。
【０１４４】
ステップ１９１２では、ＭＳＵがＩＣｉｐｉメッセージをメインバッファ１４０４Ｂに送る。ステップ１９１４では、メインバッファ１４０４ＢがＩＣｉｐｉメッセージをＴＣＴ  １１０２Ｂに送る。ＩＣｉｐｉメッセージが１１２０Ｂに送信された後、ステップ１９２０に示すように、フローチャート１９００の動作が完了する。
【０１４５】
ステップ１９０４で、ＨＯＬＤ  ＩＣｉｐｉ信号１１５６がアサートされたと判定された場合、フローチャート１９００は、ＨＯＬＤ  ＩＣｉｐｉ信号１１５６がアサート解除されたと判定されるまで、ステップ１９０４を繰り返し実行する。ＨＯＬＤ  ＩＣｉｐｉ信号１１５６がアサート解除されると、フローチャート１９００の制御はステップ１９０６に渡され、フローチャート１９００の動作は前述のように続行される。
【０１４６】
ステップ１９１８で、ＨＯＬＤ  ＩＣａｌｌ信号１１６４がアサートされたと判定された場合、フローチャート１９００の制御はステップ１９１６に渡される。ステップ１９１６で、ＩＣｉｐｉメッセージがＩＣｉｐｉキックアサイドバッファセット１４０６Ｂ内に保持される。フローチャート１９００の動作は、ステップ１９１６と１９１８の間で循環を続け、それは、ステップ１９１８でＨＯＬＤ  ＩＣａｌｌ信号１１６４がアサート解除されたと判定されるまで続く。ＨＯＬＤ  ＩＣａｌｌ信号１１６４がアサート解除されると、フローチャート１９００の制御はステップ１９１２に渡され、フローチャート１９００の動作は前述のように続行される。
【０１４７】
Ｆ．ブリッジ  ３１０ＡからＴＣＴ  １１０２Ａへのデッドロック回避メッセージフロー
図２０は、ＩＣｉｎｔメッセージがブリッジ３１０ＡからＴＣＴ  １１０２Ａに渡されるときの、割込みメッセージフロー制御機構１４００を示すフローチャート２０００である。フローチャート２０００はステップ２００２で始まり、制御は即時にステップ２００４に渡される。
【０１４８】
ステップ２００４では、ブリッジ３１０Ａが、ＨＯＬＤ  ＩＣｉｎｔ信号がアサートされるかどうかを判定する。ＨＯＬＤ  ＩＣｉｎｔ信号がアサートされる場合、フローチャート２０００は、ＨＯＬＤ  ＩＣｉｎｔ信号がアサート解除されるまで、ステップ２００４の実行を継続する。ＨＯＬＤ  ＩＣｉｎｔ信号がアサート解除される時、フローチャート２０００の制御はステップ２００６に渡される。
【０１４９】
ステップ２００６では、ブリッジ３１０がＩＣｉｎｔメッセージをＭＩ／Ｏ  ＩＣｉｎｔメッセージ検出ロジック１４０８Ａに送る。ステップ２００８では、ＭＩ／Ｏ  ＩＣｉｎｔメッセージ検出ロジック１４０８Ａが、ＩＣｉｎｔカウンタセット１４１０Ａを増加させるために信号を送る。
【０１５０】
ステップ２０１６では、ＩＣｉｎｔメッセージ検出ロジック１４０８が、ＨＯＬＤ  ＩＣａｌｌがアサートされたかどうかを判定する。ＨＯＬＤ  ＩＣａｌｌ信号がアサートされていない場合、フローチャート２０００の制御はステップ２０１０に渡される。ステップ２０１０では、ＭＩ／Ｏ  ＩＣｉｎｔメッセージ検出ロジック１４０８Ａが、ステップ２０１０に示すように、ＩＣｉｎｔメッセージをメインストリームバッファ１４０４Ａに送る。ステップ２０１２では、メインストリームバッファ１４０４Ａが、ＩＣｉｎｔメッセージをＴＣＴ  １１０２Ａに送る。ＴＣＴ  １１０２ＡがＩＣｉｎｔメッセージを受け取った後、ステップ２０３０に示すように、フローチャート２０００の動作が完了する。
【０１５１】
ステップ２０１６でＨＯＬＤ  ＩＣａｌｌ信号１１６４がアサートされた場合、フローチャート２０００の制御はステップ２０１４に渡される。ステップ２０１４では、ＩＣｉｎｔキックアサイドバッファセット１４０６ＡがＩＣｉｎｔメッセージを保持する。ＩＣｉｎｔメッセージがＩＣｉｎｔキックアサイドバッファセット１４０６Ａに保持される。そして、フローチャート２０００の動作は、ステップ２０１４から２０１６の間で循環を続ける。それは、ステップ２０１６で、ＨＯＬＤ  ＩＣａｌｌ信号１１６４がアサート解除されたと判定されるまで続く。ＨＯＬＤ  ＩＣａｌｌ信号１１６４がアサート解除されると、フローチャート２０００の制御はステップ２０１０に渡され、フローチャート２０００の動作は前述のように続行される。
【０１５２】
Ｇ．ブリッジ  ３１０ＡからＴＣＴ  １１０２Ｂへのデッドロック回避メッセージフロー
図２１は、ＩＣｉｎｔメッセージがブリッジ３１０ＡからＴＣＴ  １１０２Ｂに渡されるときの、割込みメッセージフロー制御機構１４００を示すフローチャート２１００である。フローチャート２１００はステップ２１０２で始まり、制御は即時にステップ２１０４に渡される。
【０１５３】
ステップ２１０４では、ブリッジ３１０Ａが、ＨＯＬＤ  ＩＣｉｎｔ信号がアサートされるかどうかを判定する。ＨＯＬＤ  ＩＣｉｎｔ信号１１４６がアサートされる場合、フローチャート２１００は、ＨＯＬＤ  ＩＣｉｎｔ信号１１４６がアサート解除されるまで、ステップ２１０４の実行を継続する。ＨＯＬＤ  ＩＣｉｎｔ信号がアサート解除されると、フローチャート２１００の制御はステップ２１０６に渡される。
【０１５４】
ステップ２１０６では、ブリッジ３１０ＡがＩＣｉｎｔメッセージをＭＩ／Ｏ  ＩＣｉｎｔメッセージ検出ロジック１４０８Ａに送る。
【０１５５】
ステップ２１０８では、ＭＩ／Ｏ  ＩＣｉｎｔメッセージ検出ロジック１４０８Ａが、ＩＣｉｎｔカウンタセット１４１０Ａを増加させるために信号を送る。ステップ２１１０では、ＭＩ／Ｏ  ＩＣｉｎｔメッセージ検出ロジック１４０８Ａが、ＩＣｉｎｔメッセージをＭＳＵ  １１０に送る。
【０１５６】
ステップ２１２０では、ＭＳＵ  １１０がＨＯＬＤ  ＩＣａｌｌ信号がアサートされたかどうかを判定する。ＨＯＬＤ  ＩＣａｌｌ信号１１６４がアサートされない場合、次いでフローチャート２１００の制御はステップ２１１４に渡される。ステップ２１１４では、ＭＳＵ  １１０がＩＣｉｎｔメッセージをメインストリームバッファ１４０４Ｂに送る。ステップ２１１６では、メインストリームバッファ１４０４ＢがＩＣｉｎｔメッセージをＴＣＴ  １１０２Ｂに送る。ＴＣＴ  １１０２ＢがＩＣｉｎｔメッセージを受け取った後、ステップ２１２２に示すように、フローチャート２１００の動作が完了する。
【０１５７】
ステップ２１２０で、ＨＯＬＤ  ＩＣａｌｌ信号がアサートされたと判定された場合、フローチャート２１００の制御はステップ２１１８に渡される。ステップ２１１８では、ＩＣｉｎｔメッセージがＩＣｉｎｔキックアサイドバッファセット１４０６Ｂに保持される。ステップ２１２０で、ＨＯＬＤ  ＩＣａｌｌ信号１１６４がアサート解除されたと判定されるまで、フローチャート２１００の動作は、ステップ２１１８とステップ２１２０の間で循環を続ける。ＨＯＬＤ  ＩＣａｌｌ信号１１６４がアサート解除されると、フローチャート２１００の制御はステップ２１１４に渡され、フローチャート２１００の動作は前述のように続行される。
【０１５８】
ＶＩ．結論
以上、本発明について、その好適実施形態により、詳細に図示および説明してきたが、本発明の趣旨および範囲を逸脱することなく、その範囲内において、形式および詳細の様々な変更が実行可能であることを、当分野の技術者であれば理解されよう。
【図面の簡単な説明】
本発明は、同じ参照番号を有する参照が同一のまたは機能的に同様の要素を示す図面を参照することで、最もよく理解される。さらに、最上位桁の数字は、その参照が添付の図面中で最初に現れる図面を示す。
【図１】  複数の処理ユニットおよび複数のメモリ記憶ユニット間でメッセージを渡す際に有用な、システムプラットフォームの実施形態の例を示す図である。
【図２】  複数のＰＯＤの相互接続性を示す図である。
【図３】  入出力モジュールの相互接続性を示す図である。
【図４Ａ】  本発明のシステムプラットフォーム内のメッセージフローを示す、タイミング図である。
【図４Ｂ】  本発明のシステムプラットフォーム内のメッセージフローを示す、タイミング図である。
【図４Ｃ】  本発明のシステムプラットフォーム内のメッセージフローを示す、タイミング図である。
【図４Ｄ】  本発明のシステムプラットフォーム内のメッセージフローを示す、タイミング図である。
【図５】  サブＰＯＤの一実施形態を示す図である。
【図６】  メモリ記憶ユニットを示す図である。
【図７】  本発明で有用なコヒーレント（ｃｏｈｅｒｅｎｔ）プロトコルの一実施形態を示す図である。
【図８】  本発明で有用なコヒーレンスプロトコルの代替実施形態を示す図である。
【図９Ａ】  コヒーレントシステムを示す図である。
【図９Ｂ】  コヒーレントシステムを示す図である。
【図１０Ａ】  本発明の実施に好適なシステムプラットフォームの、１好適実施形態を示す図である。
【図１０Ｂ】  本発明の実施に好適なシステムプラットフォームの、１好適実施形態を示す図である。
【図１１ＡＡ】  ＭＩバス１３０上のメッセージフローを示す図である。
【図１１ＡＢ】  ＭＩバス１３０上のメッセージフローを示す図である。
【図１１ＢＡ】  ＨＯＬＤ信号の接続性を示す図である。
【図１１ＢＢ】  ＨＯＬＤ信号の接続性を示す図である。
【図１２】  クロスバーとメモリ記憶ユニットとの間のメッセージフローを制御するためのフロー制御機構を、より詳細に示す図である。
【図１３】  本発明のシステムプラットフォーム内で、メモリマップ済み要求メッセージおよび割込み終了メッセージのフローを制御するためのフロー制御機構を、より詳細に示す図である。
【図１４】  本発明のシステムプラットフォーム内で、割込みメッセージのフローを制御するためのフロー制御機構を、より詳細に示す図である。
【図１５】  メッセージ送達メモリ記憶ユニット選択機構を示す図である。
【図１６Ａ】  メモリ記憶ユニットのインターフェースバスを横切るメッセージフローを制御する、フロー制御機構の動作を表すフローチャートである。
【図１６Ｂ】  メモリ記憶ユニットのインターフェースバスを横切るメッセージフローを制御する、フロー制御機構の動作を表すフローチャートである。
【図１７】  第３レベルキャッシュロジックからブリッジへのクロスバー内での、メモリマップ済み要求メッセージおよび割込み終了メッセージのメッセージフローの動作を表すフローチャートである。
【図１８】  第３レベルキャッシュロジックからブリッジへメッセージを渡す、メモリマップ済み要求メッセージおよび割込み終了メッセージのフロー制御機構の動作を表すフローチャートである。
【図１９】  本発明の割込みフロー制御機構の動作を表すフローチャートである。
【図２０】  ＩＣｉｎｔメッセージがブリッジから第３レベルキャッシュロジックに渡されるときの、割込みフロー制御機構の動作を表すフローチャートである。
【図２１】  ＩＣｉｎｔメッセージをブリッジから第３レベルキャッシュ論理に渡すときの、割込みフロー制御機構の動作を表すフローチャートである。
【図１】
0003782661.tif 000004
【図２】
0003782661.tif 000005
【図３】
0003782661.tif 000006
【図４Ａ】
0003782661.tif 000007
【図４Ｂ】
0003782661.tif 000008
【図４Ｃ】
0003782661.tif 000009
【図４Ｄ】
0003782661.tif 000010
【図５】
0003782661.tif 000011
【図６】
0003782661.tif 000012
【図７】
0003782661.tif 000013
【図８】
0003782661.tif 000014
【図９Ａ】
0003782661.tif 000015
【図９Ｂ】
0003782661.tif 000016
【図１０Ａ】
0003782661.tif 000017
【図１０Ｂ】
0003782661.tif 000018
【図１１ＡＡ】
0003782661.tif 000019
【図１１ＡＢ】
0003782661.tif 000020
【図１１ＢＡ】
0003782661.tif 000021
【図１１ＢＢ】
0003782661.tif 000022
【図１２】
0003782661.tif 000023
【図１３】
0003782661.tif 000024
【図１４】
0003782661.tif 000025
【図１５】
0003782661.tif 000026
【図１６Ａ】
0003782661.tif 000027
【図１６Ｂ】
0003782661.tif 000028
【図１７】
0003782661.tif 000029
【図１８】
0003782661.tif 000030
【図１９】
0003782661.tif 000031
【図２０】
0003782661.tif 000032
【図２１】
0003782661.tif 000033