(57)【要約】  ＰＣＩ−Ｅｘｐｒｅｓｓリンクを介して通信している第１および第２のＲＡＩＤコントローラを有する、効率的なミラー化ポステッド書き込み動作を実行するためのシステムが開示される。第１のバスブリッジが、ＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰを、第２のバスブリッジに送信する。ＴＬＰヘッダは、ペイロードデータが、第２の書き込みキャッシュメモリに書き込まれたことを証明する証明を、第１のＣＰＵが要求するかどうかの指示を含む。指示が証明を要求する場合、第２のバスブリッジは、ペイロードデータを第２の書き込みキャッシュメモリに書き込んだ後で、第２のＣＰＵとは無関係に第１のバスブリッジに証明を自動的に送信する。第１のバスブリッジは、証明を受信することに応答して、第１のＣＰＵに対する割り込みを生成する。証明された転送は、とりわけＲＡＩＤコントローラ上で書き込みキャッシュディレクトリのミラー化されたコピーを、有効化および／または無効化するために使用されることができる。
2008544421.tif 000002
【特許請求の範囲】
【請求項１】
ミラー化ポステッド書き込み動作を実行するためのシステムであって、該システムが、
ＰＣＩ−Ｅｘｐｒｅｓｓリンクを介して通信する第１および第２の安価なディスクからなる冗長なアレイ（ＲＡＩＤ）コントローラを備え、各ＲＡＩＤコントローラが、ＣＰＵと、書き込みキャッシュメモリと、前記ＣＰＵ、前記書き込みキャッシュメモリ、および通信リンクに結合されたバスブリッジとを含み、
第１のバスブリッジが、前記通信リンク上で第２のバスブリッジに、ＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求トランザクションレイヤパケット（ＴＬＰ）を送信するように構成され、前記ＴＬＰが、ペイロードデータおよびヘッダを含み、前記ヘッダが、第１のＣＰＵによって証明が要求されるかどうかの指示を含み、前記証明が、前記ペイロードデータが第２の書き込みキャッシュメモリに書き込まれたことを証明し、
前記指示が、前記証明を要求する場合に、前記第２のバスブリッジが、前記ペイロードデータを前記第２の書き込みキャッシュメモリに書き込んだ後で、前記第２のＣＰＵとは無関係に、前記第１のバスブリッジに前記証明を自動的に送信するように構成され、
前記第１のバスブリッジが、前記証明を受信することに応答して、前記第１のＣＰＵに対する割り込みを生成するように構成される、システム。
【請求項２】
前記指示が、前記第２のバスブリッジによって前記指示として解釈される前記ＴＬＰヘッダのフィールドの所定のビットを含む、請求項１に記載のシステム。
【請求項３】
前記ＴＬＰヘッダの前記フィールドの前記所定のビットの指示が、前記第２のバスブリッジによって前記指示として解釈される前記ＴＬＰヘッダのアドレスフィールドの所定のアドレスビットを含む、請求項２に記載のシステム。
【請求項４】
前記ＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰが、データフォーマットを有する４つのダブルワードヘッダを持ち、前記所定のアドレスビットが、アドレスフィールドのビット６３からビット３２までのうちの１つである、請求項３に記載のシステム。
【請求項５】
前記ＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰが、データフォーマットを有する３つのダブルワードヘッダを持ち、前記所定のアドレスビットが、アドレスフィールドのビット３１である、請求項３に記載のシステム。
【請求項６】
前記第２のバスブリッジが、アドレス範囲を記憶するための記憶要素を含み、前記指示が、前記第２の書き込みキャッシュ内の前記ペイロードデータの宛先を指定する前記ＴＬＰヘッダ内のメモリアドレスを含み、前記指示が、前記メモリアドレスが前記アドレス範囲内にある場合に、前記証明が要求されることを示す、請求項１に記載のシステム。
【請求項７】
前記第２のＣＰＵが、前記第２のＲＡＩＤコントローラの初期設定時に、前記記憶要素に前記アドレス範囲を書き込むように構成される、請求項６に記載のシステム。
【請求項８】
前記ペイロードデータが、前記書き込みキャッシュの１つまたは複数の書き込みキャッシュバッファが有効かどうかを示す、前記書き込みキャッシュのディレクトリの部分を含む、請求項１に記載のシステム。
【請求項９】
前記第１のＣＰＵが、
前記第１の書き込みキャッシュから前記第２の書き込みキャッシュに前記ディレクトリの前記部分を転送し、かつ前記証明を受信することに応答して前記第１のＣＰＵに対する前記割り込みを生成するように、前記第１のバスブリッジに命令し、前記第１のバスブリッジが、前記第１のＣＰＵからの前記命令に応答して、前記指示を、前記証明を要求するための所定の値に設定して、前記リンク上で前記第２のバスブリッジに前記ＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰを送信するように構成され、
前記ディレクトリの前記部分を転送するように前記第１のバスブリッジに命令する前に、前記ディレクトリの前記部分内で前記１つまたは複数の書き込みキャッシュバッファを無効化するように構成される、請求項８に記載のシステム。
【請求項１０】
前記第１のバスブリッジが、
前記第１のＣＰＵに対する前記割り込みを生成した後で、前記第１の書き込みキャッシュにポステッド書き込みデータを書き込み、前記第２の書き込みキャッシュに書き込むために、前記第２のバスブリッジに前記ポステッド書き込みデータのコピーをブロードキャストするように構成される、請求項９に記載のシステム。
【請求項１１】
前記第１のＣＰＵが、
前記第１のバスブリッジが、前記第２のバスブリッジに前記ポステッド書き込みデータの前記コピーをブロードキャストした後で、前記ディレクトリの前記部分内で前記１つまたは複数の書き込みキャッシュバッファを有効化し、
前記ディレクトリの前記部分内で前記１つまたは複数の書き込みキャッシュバッファを有効化した後で、前記第１の書き込みキャッシュから前記第２の書き込みキャッシュに前記ディレクトリの前記有効化された部分を転送し、第２の前記証明を受信することに応答して、前記第１のＣＰＵに対する第２の割り込みを生成するように、前記第１のバスブリッジに命令するようにさらに構成される、請求項１０に記載のシステム。
【請求項１２】
前記第１のＣＰＵが、
前記第１の書き込みキャッシュから前記第２の書き込みキャッシュに、前記ディレクトリの前記有効化された部分を転送するように前記第１のバスブリッジに命令する前に、前記第１および第２のＲＡＩＤコントローラに結合されたディスクドライブアレイのディスクドライブと、前記ポステッド書き込みデータの前記ディスクドライブ上の宛先の位置とを指定する情報を、前記ディレクトリの前記部分に格納するようにさらに構成される、請求項１１に記載のシステム。
【請求項１３】
前記第１のＣＰＵが、
前記第１のバスブリッジからの前記第２の割り込みを受けることに応答して、前記第１のＲＡＩＤコントローラに結合されたホストコンピュータにミラー化ポステッド書き込み動作に関する正常状態を送信するようにさらに構成される、請求項１１に記載のシステム。
【請求項１４】
前記第１のＲＡＩＤコントローラが、
前記第１のＲＡＩＤコントローラに結合されたホストコンピュータから受信される前記ポステッド書き込みデータを受信するように、かつ前記第１のバスブリッジに前記ポステッド書き込み書き込みデータを書き込むように構成された、前記第１のバスブリッジに結合されたホストインターフェースをさらに含み、前記第１のバスブリッジが、前記ホストインターフェースが前記第１のバスブリッジに前記ポステッド書き込み書き込みデータを書き込むことに応答して、前記第１の書き込みキャッシュにポステッド書き込みデータを書き込み、かつ前記ポステッド書き込みデータの前記コピーをブロードキャストする、請求項１０に記載のシステム。
【請求項１５】
前記第１のＣＰＵが、
前記ディレクトリの前記部分を転送するように前記第１のバスブリッジに命令した後で、タイマの実行を開始し、
前記第１のバスブリッジが、所定の時間内に前記第１のＣＰＵに対する前記割り込みを生成しないかどうかを判定するように構成される、請求項９に記載のシステム。
【請求項１６】
前記第１のＣＰＵが、
前記第１の書き込みキャッシュから前記第２の書き込みキャッシュに前記ディレクトリの前記部分を転送し、かつ前記証明を受信することに応答して、前記第１のＣＰＵに対する前記割り込みを生成するように、前記第１のバスブリッジに命令し、前記第１のバスブリッジが、前記第１のＣＰＵからの前記命令に応答して、前記指示を前記証明を要求するための所定の値に設定して、前記リンク上で前記第２のバスブリッジに前記ＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰを送信するように構成され、
前記ディレクトリの前記部分を転送するように前記第１のバスブリッジに命令する前に、前記ディレクトリの前記部分内で前記１つまたは複数の書き込みキャッシュバッファを有効化するように構成される、請求項８に記載のシステム。
【請求項１７】
前記第１のＣＰＵが、
前記第１の書き込みキャッシュから前記第２の書き込みキャッシュに前記ディレクトリの前記有効化された部分を転送するように、前記第１のバスブリッジに命令する前に、前記第１および第２のＲＡＩＤコントローラに結合されたディスクドライブアレイのディスクドライブと、前記ポステッド書き込みデータの前記ディスクドライブ上の宛先の位置とを指定する情報を、前記ディレクトリの前記部分に格納するようにさらに構成される、請求項１６に記載のシステム。
【請求項１８】
前記第１のＣＰＵが、
前記第１のバスブリッジからの前記第２の割り込みを受けることに応答して、前記第１のＲＡＩＤコントローラに結合されたホストコンピュータにミラー化ポステッド書き込み動作に関する正常状態を送信するようにさらに構成される、請求項１６に記載のシステム。
【請求項１９】
前記第１のバスブリッジが、
前記第１のＣＰＵが、前記ディレクトリの前記部分を転送するように前記第１のバスブリッジに命令する前に、前記第１の書き込みキャッシュにポステッド書き込みデータを書き込み、かつ前記第２の書き込みキャッシュに書き込むために前記第２のバスブリッジに前記ポステッド書き込みデータのコピーをブロードキャストするように構成される、請求項１６に記載のシステム。
【請求項２０】
前記第１のＣＰＵが、
前記第１のバスブリッジが、前記第２のバスブリッジに前記ポステッド書き込みデータの前記コピーをブロードキャストする前に、前記ディレクトリの前記部分内で前記１つまたは複数の書き込みキャッシュバッファを無効化し、かつ
前記ディレクトリの前記部分内で前記１つまたは複数の書き込みキャッシュバッファを無効化した後で、前記第１の書き込みキャッシュから前記第２の書き込みキャッシュに前記ディレクトリの前記無効化された部分を転送し、かつ第２の前記証明を受信することに応答して、前記第１のＣＰＵに対する第２の割り込みを生成するように前記第１のバスブリッジに命令するようにさらに構成される、請求項１９に記載のシステム。
【請求項２１】
前記第１のＲＡＩＤコントローラが、
ホストインターフェースをさらに含み、該ホストインターフェースが、前記第１のＲＡＩＤコントローラに結合されたホストコンピュータから受信される前記ポステッド書き込みデータを受信するように、および前記第１のバスブリッジに前記ポステッド書き込み書き込みデータを書き込むように構成され、前記第１のバスブリッジは、前記ホストインターフェースが、前記第１のバスブリッジに前記ポステッド書き込み書き込みデータを書き込むことに応答して、前記第１の書き込みキャッシュに前記ポステッド書き込みデータを書き込み、かつ前記ポステッド書き込みデータの前記コピーをブロードキャストする、請求項１９に記載のシステム。
【請求項２２】
前記ペイロードデータが、ＲＡＩＤ５パリティデータログを含む、請求項１に記載のシステム。
【請求項２３】
前記証明が、第２のＰＣＩ−Ｅｘｐｒｅｓｓ  ＴＬＰを含む、請求項１に記載のシステム。
【請求項２４】
第２のＴＬＰヘッダが、前記ペイロードデータが前記第２の書き込みキャッシュメモリに書き込まれたことを証明する第２の指示を含む、請求項２３に記載のシステム。
【請求項２５】
前記第２のＰＣＩ−Ｅｘｐｒｅｓｓ  ＴＬＰが、ＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰを含む、請求項２４に記載のシステム。
【請求項２６】
前記第２の指示が、前記ペイロードデータが前記第２の書き込みキャッシュメモリに書き込まれたことを証明する前記第２の指示として、前記第１のバスブリッジによって解釈される前記第２のメモリ書き込み要求ＴＬＰのフィールドの所定のビットを含む、請求項２５に記載のシステム。
【請求項２７】
前記第１のバスブリッジが、アドレス範囲を記憶するための記憶要素を含み、前記第２の指示が、第２のＴＬＰヘッダ内のメモリアドレスを含み、前記第２の指示が、前記メモリアドレスが前記アドレス範囲内にある場合に、前記ペイロードデータが、前記第２の書き込みキャッシュメモリに書き込まれたことを証明する、請求項２４に記載のシステム。
【請求項２８】
前記第２のＰＣＩ−Ｅｘｐｒｅｓｓ  ＴＬＰが、ＰＣＩ−Ｅｘｐｒｅｓｓベンダ規定メッセージＴＬＰを含む、請求項２３に記載のシステム。
【請求項２９】
前記第２のＰＣＩ−Ｅｘｐｒｅｓｓ  ＴＬＰが、ＰＣＩ−Ｅｘｐｒｅｓｓメッセージシグナル割り込み（ＭＳＩ）メッセージＴＬＰを含む、請求項２３に記載のシステム。
【請求項３０】
前記第１のバスブリッジが、
タイマを含み、該タイマは、前記第１のバスブリッジが、前記リンク上で前記第２のバスブリッジに前記ＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰを送信するときに、実行を開始するように構成され、前記第１のバスブリッジは、前記第１のバスブリッジが、所定の時間内に前記第２のバスブリッジから前記証明を受信しない場合に、前記第１のＣＰＵに割り込みをかけるように構成される、請求項１に記載のシステム。
【請求項３１】
ＰＣＩ−Ｅｘｐｒｅｓｓリンクを介して通信する第１および第２の安価なディスクからなる冗長なアレイ（ＲＡＩＤ）コントローラの間で、証明されたメモリ間転送動作を実行するための方法であって、各ＲＡＩＤコントローラが、ＣＰＵと、書き込みキャッシュメモリと、ＣＰＵ、書き込みキャッシュメモリ、および通信リンクに結合されたバスブリッジとを含み、前記方法が、
第１のバスブリッジが、リンク上で第２のバスブリッジにＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求トランザクションレイヤパケット（ＴＬＰ）を送信することであって、ＴＬＰが、ペイロードデータおよびヘッダを含み、ヘッダが、第１のＣＰＵによって証明が要求されるかどうかの指示を含み、証明が、ペイロードデータが第２の書き込みキャッシュメモリに書き込まれたことを証明する、送信することと、
第２のバスブリッジが、指示が証明を要求するかどうかを判定することと、
指示が証明を要求する場合に、第２のバスブリッジが、ペイロードデータを第２の書き込みキャッシュに書き込んだ後で、第２のＣＰＵとは無関係に第１のバスブリッジに証明を自動的に送信することと、
第１のバスブリッジが、証明を受信することに応答して、第１のＣＰＵに対する割り込みを生成することとを含む、方法。
【請求項３２】
ペイロードデータが、書き込みキャッシュの１つまたは複数の書き込みキャッシュバッファが有効かどうかを示す、書き込みキャッシュのディレクトリの部分を含む、請求項３１に記載の方法。
【請求項３３】
第１のＣＰＵが、第１の書き込みキャッシュから第２の書き込みキャッシュにディレクトリの部分を転送し、かつ証明を受信することに応答して、第１のＣＰＵに対する割り込みを生成するように、第１のバスブリッジに命令することをさらに含み、第１のバスブリッジが、前記第１のＣＰＵが命令することに応答して、指示を、証明を要求するための所定の値に設定して、リンク上で第２のバスブリッジにＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰを送信するように構成され、方法がさらに、
第１のＣＰＵが、前記ディレクトリの部分を転送するように第１のＣＰＵが第１のバスブリッジに命令することの前に、ディレクトリの部分内で１つまたは複数の書き込みキャッシュバッファを無効化することを含む、請求項３２に記載の方法。
【請求項３４】
第１のバスブリッジが、前記第１のＣＰＵに対する割り込みを生成することの後で、第１の書き込みキャッシュにポステッド書き込みデータを書き込み、かつ第２の書き込みキャッシュに書き込むために第２のバスブリッジにポステッド書き込みデータのコピーをブロードキャストすることをさらに含む、請求項３３に記載の方法。
【請求項３５】
前記第１のバスブリッジが、第２のバスブリッジにポステッド書き込みデータのコピーをブロードキャストすることの後で、第１のＣＰＵが、ディレクトリの部分内で１つまたは複数の書き込みキャッシュバッファを有効化することと、
前記ディレクトリの部分内で１つまたは複数の書き込みキャッシュバッファを有効化することの後で、第１のＣＰＵが、第１の書き込みキャッシュから第２の書き込みキャッシュにディレクトリの有効化された部分を転送し、かつ第２の証明を受信することに応答して、第１のＣＰＵに対する第２の割り込みを生成するように、第１のバスブリッジに命令することとをさらに含む、請求項３４に記載の方法。
【請求項３６】
前記第１の書き込みキャッシュから第２の書き込みキャッシュにディレクトリの有効化された部分を転送するように、第１のバスブリッジに命令することの前に、第１のＣＰＵが、第１および第２のＲＡＩＤコントローラに結合されたディスクドライブアレイと、ポステッド書き込みデータのディスクドライブアレイ上の宛先の位置とを指定する情報を、ディレクトリの部分に格納することをさらに含む、請求項３５に記載の方法。
【請求項３７】
第１のＣＰＵが、第１のバスブリッジからの第２の割り込みを受けることに応答して、第１のＲＡＩＤコントローラに結合されたホストコンピュータにミラー化ポステッド書き込み動作に関する正常状態を送信することをさらに含む、請求項３５に記載の方法。
【請求項３８】
第１のＣＰＵが、ディレクトリの部分を転送するように第１のバスブリッジに命令することの後で、タイマの実行を開始することと、
第１のＣＰＵが、第１のバスブリッジが、所定の時間内に第１のＣＰＵに対する割り込みを生成しないかどうかを判定することとをさらに含む、請求項３３に記載の方法。
【請求項３９】
第１のＣＰＵが、第１の書き込みキャッシュから第２の書き込みキャッシュにディレクトリの部分を転送し、かつ証明を受信することに応答して、第１のＣＰＵに対する割り込みを生成するように第１のバスブリッジに命令することであって、第１のバスブリッジが、前記第１のＣＰＵが命令することに応答して、指示を、証明を要求するための所定の値に設定して、リンク上で第２のバスブリッジにＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰを送信するように構成される、命令することと、
第１のＣＰＵが、前記ディレクトリの部分を転送するように第１のバスブリッジに命令することの前に、ディレクトリの部分内で１つまたは複数の書き込みキャッシュバッファを有効化することとをさらに含む、請求項３２に記載の方法。
【請求項４０】
前記第１の書き込みキャッシュから第２の書き込みキャッシュにディレクトリの有効化された部分を転送するように、第１のバスブリッジに命令することの前に、第１のＣＰＵが、第１および第２のＲＡＩＤコントローラに結合されたディスクドライブアレイと、ポステッド書き込みデータのディスクドライブアレイ上の宛先の位置とを指定する情報を、ディレクトリの部分に格納することをさらに含む、請求項３９に記載の方法。
【請求項４１】
第１のＣＰＵが、第１のバスブリッジからの第２の割り込みを受けることに応答して、第１のＲＡＩＤコントローラに結合されたホストコンピュータにミラー化ポステッド書き込み動作に関する正常状態を送信することをさらに含む、請求項３９に記載の方法。
【請求項４２】
第１のバスブリッジは、前記第１のＣＰＵが、ディレクトリの部分を転送するように第１のバスブリッジに命令することの前に、第１の書き込みキャッシュにポステッド書き込みデータを書き込み、かつ第２の書き込みキャッシュに書き込むために第２のバスブリッジにポステッド書き込みデータのコピーをブロードキャストすることをさらに含む、請求項３９に記載の方法。
【請求項４３】
前記第１のバスブリッジが、第２のバスブリッジにポステッド書き込みデータのコピーをブロードキャストすることの前に、第１のＣＰＵが、ディレクトリの部分内で１つまたは複数の書き込みキャッシュバッファを無効化することと、
前記ディレクトリの部分内で１つまたは複数の書き込みキャッシュバッファを無効化することの後で、第１のＣＰＵが、第１の書き込みキャッシュから第２の書き込みキャッシュにディレクトリの無効化された部分を転送し、かつ第２の前記証明を受信することに応答して、第１のＣＰＵに対する第２の割り込みを生成するように、第１のバスブリッジに命令することとをさらに含む、請求項４２に記載の方法。
【請求項４４】
前記ペイロードデータが、ＲＡＩＤ５パリティデータログを含む、請求項３１に記載の方法。
【請求項４５】
証明が、第２のＰＣＩ−Ｅｘｐｒｅｓｓ  ＴＬＰを含む、請求項３１に記載の方法。
【請求項４６】
第１のバスブリッジが、リンク上で第２のバスブリッジにＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰを送信するときに、タイマの実行を開始することと、
第１のバスブリッジが、所定の時間内に第２のバスブリッジから証明を受信しない場合に、第１のバスブリッジが、第１のＣＰＵに割り込みをかけることとをさらに含む、請求項３１に記載の方法。
【請求項４７】
ＰＣＩ−Ｅｘｐｒｅｓｓリンク上で通信のために結合された、プライマリおよびセカンダリの安価なディスクからなる冗長なアレイ（ＲＡＩＤ）コントローラそれぞれにおける具体化のためのバスブリッジであって、
ＰＣＩ−Ｅｘｐｒｅｓｓリンクに結合するように構成されたＰＣＩ−Ｅｘｐｒｅｓｓインターフェースと、
それぞれのＲＡＩＤコントローラのＣＰＵに結合するように構成されたローカルバスインターフェースと、
それぞれのＲＡＩＤコントローラの書き込みキャッシュメモリに結合するように構成されたメモリバスインターフェースと、
前記ＰＣＩ−Ｅｘｐｒｅｓｓインターフェース、前記ローカルバスインターフェース、および前記メモリバスインターフェースに結合され、かつ制御するように構成された制御論理とを含み、
プライマリ制御論理が、プライマリＰＣＩ−Ｅｘｐｒｅｓｓインターフェースを制御して、前記リンク上でＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求トランザクションレイヤパケット（ＴＬＰ）を送信するように構成され、前記ＴＬＰが、ペイロードデータおよびヘッダを含み、前記ヘッダが、プライマリＣＰＵによって証明が要求されるかどうかの指示を含み、前記証明は、前記ペイロードデータが、セカンダリ書き込みキャッシュメモリに書き込まれたことを証明し、
セカンダリ制御論理が、セカンダリＰＣＩ−Ｅｘｐｒｅｓｓインターフェースによって受信された前記指示が、前記証明を要求するかどうかを判定するように、および前記指示が、前記証明を要求する場合に、セカンダリメモリバスインターフェースを制御して、前記ペイロードデータをセカンダリ書き込みキャッシュメモリに書き込んだ後で、前記セカンダリＰＣＩ−Ｅｘｐｒｅｓｓインターフェースを自動的に制御して、セカンダリＣＰＵに無関係に前記リンク上で前記証明を送信するように構成され、
前記プライマリ制御論理が、前記プライマリＰＣＩ−Ｅｘｐｒｅｓｓインターフェースが前記証明を受信することに応答して、前記ローカルバスインターフェースを制御して前記プライマリＣＰＵに対する割り込みを生成するように構成される、バスブリッジ。
【請求項４８】
前記ペイロードデータが、前記プライマリ書き込みキャッシュの１つまたは複数の書き込みキャッシュバッファが有効かどうかを示す、前記プライマリ書き込みキャッシュのディレクトリの部分を含む、請求項４７に記載のバスブリッジ。
【請求項４９】
前記プライマリローカルバスインターフェースは、前記プライマリバスブリッジが、前記プライマリ書き込みキャッシュから前記セカンダリ書き込みキャッシュに前記ディレクトリの無効化された前記部分を転送するようにとの命令を、前記プライマリＣＰＵから受信し、かつ前記証明を受信することに応答して、前記プライマリＣＰＵに対する前記割り込みを生成するように構成され、前記プライマリ制御論理が、前記プライマリＣＰＵからの前記命令に応答して、前記指示を、前記証明を要求するための所定の値に設定して、前記リンク上で前記ＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰを送信するように、前記プライマリＰＣＩ−Ｅｘｐｒｅｓｓインターフェースを制御するように構成される、請求項４８に記載のバスブリッジ。
【請求項５０】
前記プライマリ制御論理が、
前記プライマリローカルバスインターフェースを制御して前記プライマリＣＰＵに対する前記割り込みを生成した後で、前記プライマリメモリバスインターフェースを制御して、前記プライマリ書き込みキャッシュにポステッド書き込みデータを書き込み、かつ前記セカンダリ書き込みキャッシュに書き込むために前記リンク上で前記ポステッド書き込みデータのコピーをブロードキャストするように構成される、請求項４９に記載のバスブリッジ。
【請求項５１】
前記プライマリバスブリッジが、前記セカンダリバスブリッジが前記セカンダリ書き込みキャッシュに書き込むために、前記リンク上で前記プライマリ書き込みキャッシュから前記ディレクトリの有効化された前記部分を転送し、かつ第２の前記証明を受信することに応答して、前記プライマリＣＰＵに対する第２の割り込みを生成する第２の命令を、前記プライマリＣＰＵから受信するように、前記プライマリローカルバスインターフェースが構成される、請求項５０に記載のバスブリッジ。
【請求項５２】
前記プライマリＲＡＩＤコントローラのホストインターフェースに結合するように構成された第２のローカルバスインターフェースをさらに含み、前記プライマリの第２のローカルバスインターフェースが、前記プライマリＲＡＩＤコントローラに結合されたホストコンピュータから、前記ホストインターフェースによって受信される前記ポステッド書き込みデータを受信するように構成される、請求項５０に記載のバスブリッジ。
【請求項５３】
前記プライマリＲＡＩＤコントローラのディスクインターフェースに結合するように構成された第３のローカルバスインターフェースをさらに含み、前記プライマリの第３のローカルバスインターフェースが、前記プライマリＲＡＩＤコントローラに結合された１つまたは複数のディスクドライブに書き込むために、前記ディスクインターフェースに前記ポステッド書き込みデータを書き込むように構成される、請求項５２に記載のバスブリッジ。
【請求項５４】
前記プライマリＲＡＩＤコントローラのディスクインターフェースに結合するように構成された第２のローカルバスインターフェースをさらに含み、前記プライマリの第２のローカルバスインターフェースが、前記プライマリＲＡＩＤコントローラに結合された１つまたは複数のディスクドライブに書き込むために、前記ディスクインターフェースに前記ポステッド書き込みデータを書き込むように構成される、請求項５０に記載のバスブリッジ。
【請求項５５】
前記制御論理が、
前記プライマリＰＣＩ−Ｅｘｐｒｅｓｓインターフェースが、前記リンク上で前記ＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰを送信するときに、実行を開始するように構成されたタイマを含み、前記プライマリ制御論理は、前記プライマリＰＣＩ−Ｅｘｐｒｅｓｓインターフェースが、所定の時間内に前記セカンダリバスブリッジから前記証明を受信しない場合に、前記プライマリローカルバスインターフェースに前記プライマリＣＰＵに対して割り込みをかけさせるように構成される、請求項４７に記載のバスブリッジ。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、あらゆる目的でそれらの全体が参照により本明細書に組み込まれる、以下の同時係属中の米国非仮出願公開の一部継続出願（ＣＩＰ）である。
【表１】
2008544421.tif 000003
【０００２】
係属中の米国特許出願公開第１０／９４６３４１号（ＣＨＡＰ．０１１３）は、あらゆる目的でその全体が参照により本明細書に組み込まれる、以下の米国特許の一部継続出願（ＣＩＰ）である。
Ｄｏｃｋｅｔ  ＣＨＡＰ．０１２９−ＰＣＴ
【表２】
2008544421.tif 000004
【０００３】
係属中の米国特許出願公開第１０／９４６３４１号（ＣＨＡＰ．０１１３）は、あらゆる目的でそれらの全体が参照により本明細書に組み込まれる、以下の同時係属中の米国非仮出願公開の一部継続出願（ＣＩＰ）である。
【表３】
2008544421.tif 000005
【０００４】
係属中の米国特許出願公開第１０／９４６３４１号（ＣＨＡＰ．０１１３）は、あらゆる目的でその全体が参照により本明細書に組み込まれる、以下の失効した米国仮出願公開の利益を主張するものである。
【表４】
2008544421.tif 000006
【０００５】
係属中の米国特許出願公開第１１／１７８７２７号（ＣＨＡＰ．０１２５）は、あらゆる目的でその全体が参照により本明細書に組み込まれる、以下の係属中の米国仮出願公開の利益を主張するものである。
【表５】
2008544421.tif 000007
【０００６】
本出願は、あらゆる目的でその全体が参照により本明細書に組み込まれる、以下の米国仮出願公開の利益を主張するものである。
【表６】
2008544421.tif 000008
【０００７】
係属中の米国特許出願公開第１１／２７２３４０号（ＣＨＡＰ．０１２６）は、係属中の米国特許出願公開第０９／９６７１２６号（４４３０−２９）、米国特許出願公開第０９／９６７１９４号（４４３０−３２）、米国特許出願公開第１０／３６８６８８号（ＣＨＡＰ．０１０１）、米国特許出願公開第１０／９４６３４１号（ＣＨＡＰ．０１１３）、および米国特許出願公開第１１／１７８７２７号（ＣＨＡＰ．０１２５）の一部継続出願（ＣＩＰ）である。
【０００８】
本発明は、概してミラー化された冗長なＲＡＩＤコントローラの分野に関し、具体的にはそれらのコントローラ間の効率的なメモリ間データ転送に関する。
【背景技術】
【０００９】
安価なディスクからなる冗長なアレイ（ＲＡＩＤ）システムは、トランザクション処理、銀行業務、医療用途、データベースサーバ、インターネットサーバ、メールサーバ、科学計算、およびその他の用途のホストなどの、高性能、大容量記憶、および／または高いデータ可用性を必要とする用途において使用される、今日のほとんどのコンピュータシステムにおける大容量記憶システムの有力な形態となった。ＲＡＩＤコントローラは、一群の複数の物理ディスクドライブを、コンピュータのオペレーティングシステムに対して単一の論理ディスクドライブ（または複数の論理ディスクドライブ）に見せるようなやり方で制御する。ＲＡＩＤコントローラは、性能およびデータ可用性を向上させるために、データストライピングおよびデータの冗長の技術を使用する。
【００１０】
ＲＡＩＤシステムにおいて高いデータ可用性を提供するための１つの技術は、システムに冗長なフォールトトレラントＲＡＩＤコントローラを含むことである。冗長なフォールトトレラントＲＡＩＤコントローラを提供することは、コントローラのうちの１つが故障する場合に、他の冗長なコントローラのうちの１つが、故障したコントローラの機能を実行し続けるように、２つ以上のコントローラを提供することを意味する。例えば、一部のＲＡＩＤコントローラは、冗長なホットプラグ可能なフィールド交換可能ユニット（ＦＲＵ）を含み、そのため、コントローラが故障するとき、多くの場合、ＦＲＵが、迅速に交換されて、システムをそのシステムの元のデータ可用性のレベルに回復することができる。
【００１１】
特にトランザクション処理、または大容量データストリームのリアルタイムのデータ収集などの特定の用途におけるＲＡＩＤコントローラの重要な特徴は、高速な書き込み性能を提供することである。特に、ＲＡＩＤコントローラの書き込み遅延が比較的小さい場合、コンピュータシステムの性能全体が、大幅に改善される可能性がある。書き込み遅延は、コンピュータシステムからの書き込み要求を完了するために、ＲＡＩＤコントローラが要する時間である。
【００１２】
多くのＲＡＩＤコントローラは、ディスクドライブからのユーザデータをキャッシュするための比較的大きなキャッシュメモリを含む。要求されたデータがキャッシュメモリにある場合、ＲＡＩＤコントローラは、ディスクドライブからデータを読み込む時間のかかる動作を実行する必要がないので、データをキャッシュすることは、ＲＡＩＤコントローラが迅速にデータをコンピュータシステムに返すことを可能にする。キャッシュメモリは、一般にポステッド書き込み動作、または書き込みキャッシュ動作と呼ばれる動作を有効にすることによって、書き込み要求遅延を減らすために使用されることもできる。ポステッド書き込み動作において、ＲＡＩＤコントローラは、コンピュータシステムによって指定されたデータを、コンピュータシステムからＲＡＩＤコントローラのキャッシュメモリに受信し、続いて直ちに、たとえＲＡＩＤコントローラが、当該データをディスクドライブにまだ書き込み終わっていなくても、書き込み要求が完了していることをコンピュータシステムに知らせる。いくつかの冗長なＲＡＩＤレベルにおいて、システムの書き込み要求を遂行するために、ディスクドライブに対するリードモディファイ書き込み動作が実行されなければならないので、ポステッド書き込みは、ＲＡＩＤコントローラにおいて特に有益である。すなわち、指定されたシステムデータが、ディスクドライブに書き込まれなければならないだけでなく、ディスクドライブの一部が、ユーザデータおよび冗長なデータがディスクに書き込まれる可能性がある前に、読み込まれる必要があり、そのことは、ポステッド書き込みの利点がなければ、ＲＡＩＤコントローラの書き込み遅延を、非ＲＡＩＤコントローラよりもさらに長くする可能性がある。
【００１３】
しかし、ポステッド書き込み動作は、ユーザデータが、ディスクドライブに書き込まれる前に、ＲＡＩＤコントローラの故障が起こった場合に、システムがデータを喪失し易くする。冗長なＲＡＩＤコントローラシステムにおいて、書き込みキャッシュＲＡＩＤコントローラの故障が起こった場合のデータ喪失の可能性を減らすために、１つのコントローラが故障する場合に、もう一方のコントローラがポステッド書き込みデータをディスクにフラッシュすることができるように、ユーザデータが、ＲＡＩＤコントローラの両方に書き込まれる。ユーザデータを両方のＲＡＩＤコントローラの書き込みキャッシュに書き込むことは、一般にミラー化書き込み動作と呼ばれる。書き込みポスティングが有効化される場合、動作は、ミラー化ポステッド書き込み動作である。
【００１４】
ミラー化ポステッド書き込み動作は、正しいユーザデータがディスクドライブに書き込まれることを保証するために、２つのコントローラ間の通信に、２つのコントローラの書き込みキャッシュの間の同期を提供することを要求する。このキャッシュ同期通信は、非効率である可能性がある。具体的には、この通信は、ミラー化ポステッド書き込み動作にさらなる遅延をもたらす可能性があり、ＲＡＩＤコントローラ上のＣＰＵの貴重な処理帯域幅を消費する可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【００１５】
したがって、必要とされているのは、冗長なＲＡＩＤコントローラシステムにおいてミラー化ポステッド書き込み動作を実行するためのより効率的な手段である。
【課題を解決するための手段】
【００１６】
本発明は、プライマリＲＡＩＤコントローラからセカンダリＲＡＩＤコントローラへのＰＣＩ−Ｅｘｐｒｅｓｓリンク上での証明されたメモリ間データ転送を実行するためのシステムおよび方法を提供し、これらのシステムおよび方法において、セカンダリＲＡＩＤコントローラ上のＣＰＵを関与させることなしに、セカンダリＲＡＩＤコントローラ上のバスブリッジが、データをセカンダリキャッシュメモリに成功裏に書き込んだことを示すために、セカンダリＲＡＩＤコントローラ上のバスブリッジが、プライマリＲＡＩＤコントローラ上のバスブリッジに自動的に受け渡し証明を返し、プライマリバスブリッジが、当該受け渡し証明を受け取ったときに、データがセカンダリキャッシュメモリに成功裏に書き込まれたことを示すために、プライマリバスブリッジが、プライマリＣＰＵに割り込みをかける。証明されたメモリ間転送は、例えば、ミラー化ポステッド書き込み動作中に、書き込みキャッシュディレクトリのミラー化されたコピーの効率的な有効化および／または無効化を実行するために使用されることができる。この動作は、セカンダリＣＰＵが、書き込みキャッシュディレクトリの有効化および／または無効化に関与させられる必要がないので、より効率的である。
【００１７】
一態様において、本発明は、ミラー化ポステッド書き込み動作を実行するためのシステムを提供する。システムは、ＰＣＩ−Ｅｘｐｒｅｓｓリンクを介して通信している、第１および第２の安価なディスクからなる冗長なアレイ（ＲＡＩＤ）コントローラを含む。各ＲＡＩＤコントローラは、ＣＰＵと、書き込みキャッシュメモリと、ＣＰＵ、書き込みキャッシュメモリ、および通信リンクに結合されたバスブリッジとを含む。第１のバスブリッジは、リンク上で第２のバスブリッジにＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求トランザクションレイヤパケット（ＴＬＰ）を送信するように構成される。ＴＬＰは、ペイロードデータおよびヘッダを含む。ヘッダは、第１のＣＰＵによって証明が要求されるかどうかの指示を含む。証明は、ペイロードデータが、第２の書き込みキャッシュメモリに書き込まれたことを証明する。指示が証明を要求する場合、第２のバスブリッジは、ペイロードデータを第２の書き込みキャッシュメモリに書き込んだ後で、第２のＣＰＵとは無関係に第１のバスブリッジに証明を自動的に送信する。第１のバスブリッジは、証明を受信することに応答して、第１のＣＰＵに対する割り込みを生成する。
【００１８】
別の態様において、本発明は、ＰＣＩ−Ｅｘｐｒｅｓｓリンクを介して通信している第１および第２の安価なディスクからなる冗長なアレイ（ＲＡＩＤ）コントローラの間の証明されたメモリ間転送動作を実行するための方法を提供する。各ＲＡＩＤコントローラは、ＣＰＵと、書き込みキャッシュメモリと、ＣＰＵ、書き込みキャッシュメモリ、および通信リンクに結合されたバスブリッジとを含む。方法は、第１のバスブリッジが、リンク上で第２のバスブリッジにＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求トランザクションレイヤパケット（ＴＬＰ）を送信することを含む。ＴＬＰは、ペイロードデータおよびヘッダを含む。ヘッダは、第１のＣＰＵによって証明が要求されるかどうかの指示を含む。証明は、ペイロードデータが、第２の書き込みキャッシュメモリに書き込まれたことを証明する。方法は、第２のバスブリッジが、指示が証明を要求するかどうかを判定することも含む。方法は、指示が証明を要求する場合に、第２のバスブリッジが、ペイロードデータを第２の書き込みキャッシュメモリに書き込んだ後で、第２のＣＰＵとは無関係に第１のバスブリッジに証明を自動的に送信することも含む。方法は、第１のバスブリッジが、証明を受信することに応答して第１のＣＰＵに対する割り込みを生成することも含む。
【００１９】
別の態様において、本発明は、バスブリッジを提供する。バスブリッジは、ＰＣＩ−Ｅｘｐｒｅｓｓリンク上で通信のために結合されたプライマリのおよびセカンダリの安価なディスクからなる冗長なアレイ（ＲＡＩＤ）コントローラのそれぞれにおいて具体化されるように構成される。バスブリッジは、ＰＣＩ−Ｅｘｐｒｅｓｓリンクに結合するように構成されたＰＣＩ−Ｅｘｐｒｅｓｓインターフェースを含む。バスブリッジは、それぞれのＲＡＩＤコントローラのＣＰＵに結合するように構成されたローカルバスインターフェースも含む。バスブリッジは、それぞれのＲＡＩＤコントローラの書き込みキャッシュメモリに結合するように構成されたメモリバスインターフェースも含む。バスブリッジは、ＰＣＩ−Ｅｘｐｒｅｓｓインターフェース、ローカルバスインターフェース、およびメモリバスインターフェースに結合され、これらのインターフェースを制御するように構成された制御論理も含む。プライマリ制御論理は、プライマリＰＣＩ−Ｅｘｐｒｅｓｓインターフェースを制御して、リンク上でＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求トランザクションレイヤパケット（ＴＬＰ）を送信する。ＴＬＰは、ペイロードデータおよびヘッダを含む。ヘッダは、プライマリＣＰＵによって証明が要求されるかどうかの指示を含む。証明は、ペイロードデータが、セカンダリ書き込みキャッシュメモリに書き込まれたことを証明する。セカンダリ制御論理は、セカンダリＰＣＩ−Ｅｘｐｒｅｓｓインターフェースによって受信された指示が、証明を要求するかどうかを判定し、指示が証明を要求する場合に、セカンダリメモリバスインターフェースを制御してペイロードデータをセカンダリ書き込みキャッシュメモリに書き込んだ後で、セカンダリＰＣＩ−Ｅｘｐｒｅｓｓインターフェースを自動的に制御して、セカンダリＣＰＵとは無関係にリンク上で証明を送信する。プライマリ制御論理は、プライマリＰＣＩ−Ｅｘｐｒｅｓｓインターフェースが証明を受信することに応答して、ローカルバスインターフェースを制御して、プライマリＣＰＵに対する割り込みを生成する。
【発明を実施するための最良の形態】
【００２０】
ここで図１を参照すると、本発明によるアクティブ−アクティブ冗長フォールトトレラントＲＡＩＤシステム１００を示す構成図が示される。システム１００は、個別にプライマリＲＡＩＤコントローラ１０２ＡおよびセカンダリＲＡＩＤコントローラ１０２Ｂと表記され、総称してＲＡＩＤコントローラ１０２と表記され、まとめてＲＡＩＤコントローラ１０２と表記される、２つのＲＡＩＤコントローラを含む。ＲＡＩＤコントローラ１０２は、プライマリおよびセカンダリと呼ばれるが、これらのＲＡＩＤコントローラ１０２は、どちらかのコントローラ１０２が故障する場合に、もう一方のコントローラにフェイルオーバされることができるという観点からすれば対称的である。ＲＡＩＤコントローラ１０２は、ＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８によって互いに結合される。一実施形態において、ＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８は、そこにＲＡＩＤコントローラ１０２が接続する筐体のバックプレーンまたはミッドプレーン上に信号トレースを含む。一実施形態において、ＲＡＩＤコントローラ１０２は、バックプレーンにホットプラグ可能である。
【００２１】
ＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８は、２００３年４月１５日のＰＣＩ  Ｅｘｐｒｅｓｓ  Ｂａｓｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｒｅｖｉｓｉｏｎ  １．０ａに記述されているように、コンピュータシステム内のコンポーネント間でデータを転送するために設計された効率的で高速なシリアルリンクである。ＰＣＩ  Ｅｘｐｒｅｓｓの仕様は、ｗｗｗ．ｐｃｉｓｉｇ．ｃｏｍに見られるＰＣＩ  Ｓｐｅｃｉａｌ  Ｉｎｔｅｒｅｓｔ  Ｇｒｏｕｐ（ＳＩＧ）を通じて管理および発信されている。ＰＣＩ−Ｅｘｐｒｅｓｓは、はるかに少ないピンカウントを使用しながら、より高い性能を有するプラットフォームを提供するために、ＰＣＩおよびＰＣＩ−Ｘバス仕様のパラレルバス実装を置き換えるシリアルアーキテクチャである。ＰＣＩ  Ｅｘｐｒｅｓｓの完全な検討は、本明細書の範囲を超えているが、完全な背景および説明は、あらゆる目的で参照により本明細書に組み込まれる以下の書籍、すなわち、Ａｄａｍ  Ｗｉｌｅｎ、Ｊｕｓｔｉｎ  Ｓｃｈａｄｅ、Ｒｏｎ  ＴｈｏｒｎｂｕｒｇによるＩｎｔｒｏｄｕｃｔｉｏｎ  ｔｏ  ＰＣＩ  Ｅｘｐｒｅｓｓ，Ａ  Ｈａｒｄｗａｒｅ  ａｎｄ  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｅｒ’ｓ  Ｇｕｉｄｅと、Ｅｄｗａｒｄ  ＳｏｌａｒｉおよびＢｒａｄ  ＣｏｎｇｄｏｎによるＴｈｅ  Ｃｏｍｐｌｅｔｅ  ＰＣＩ  Ｅｘｐｒｅｓｓ  Ｒｅｆｅｒｅｎｃｅ，Ｄｅｓｉｇｎ  Ｉｎｓｉｇｈｔｓ  ｆｏｒ  Ｈａｒｄｗａｒｅ  ａｎｄ  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｅｒｓと、Ｒａｖｉ  Ｂｏｄｒｕｋ、Ｄｏｎ  Ａｎｄｅｒｓｏｎ、Ｔｏｍ  ＳｈａｎｌｅｙによるＰＣＩ  Ｅｘｐｒｅｓｓ  Ｓｙｓｔｅｍ  Ａｒｃｈｉｔｅｃｔｕｒｅとにおいて見られることができ、これらの書籍の全てはｗｗｗ．ａｍａｚｏｎ．ｃｏｍにおいて入手可能である。
【００２２】
有利なことに、本明細書において説明される本発明のシステム１００の実施形態は、ＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８を利用して、冗長なフォールトトレラントＲＡＩＤコントローラ１０２が、メッセージおよびデータを互いに対して送信することによって通信することを可能にする。システム１００において使用されるＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８は、このリンクが、記憶装置のＩ／Ｏなどのその他の機能と共有されるのではなく、プロセッサ間通信およびメモリ間転送専用であるので、ファイバチャネルおよびＳＣＳＩなどの従来のＲＡＩＤシステムの通信リンクに優る以下の利点、すなわち、より広い帯域幅と、より少ない遅延と、より低いコストと、組み込みのエラー回復および複数再試行メカニズムと、不通に対するより高い耐性とを有する。
【００２３】
ＰＣＩ−Ｅｘｐｒｅｓｓは、ローカルバスとしてのその系統のためにロードストアアーキテクチャを提供する。結果として、ＰＣＩ−Ｅｘｐｒｅｓｓコントローラに対するプログラミングモデルは、概して比較的高レベルのプログラミングモデルを提供する、ファイバチャネルまたはＳＣＳＩコントローラよりも低レベルである。特に、ＰＣＩ−Ｅｘｐｒｅｓｓは、より高いレベルのソフトウェア機能を関与させることなしに、証明されたメモリ書き込みを要求するためのプリミティブを提供しない。本開示は、以下で詳細に説明されるように、ＲＡＩＤコントローラ１０２が、宛先のＣＰＵを関与させることなしに、および要求元のＣＰＵが、転送の成功裏の完了と同時に割り込みを受けるように、一方のＲＡＩＤコントローラ１０２のメモリ空間からもう一方のＲＡＩＤコントローラ１０２のメモリ空間にデータを自動的に転送するために、ＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８を介して互いに通信する、システム１００および方法を説明する。
【００２４】
図１の各ＲＡＩＤコントローラ１０２は同一であり、包括的に説明されることになるが、図１の各要素は、当該要素がそれぞれプライマリＲＡＩＤコントローラ１０２ＡまたはセカンダリＲＡＩＤコントローラ１０２Ｂの一部であることを示すために、当該要素の参照符号に接尾辞ＡまたはＢを含む。
【００２５】
各ＲＡＩＤコントローラは、ＣＰＵ１０８、またはプロセッサ１０８、またはプロセッサ複合体１０８を含む。プロセッサ１０８は、例えば、ｘ８６アーキテクチャのプロセッサ、ならびにノースブリッジまたはメモリコントロールハブ（ＭＣＨ）、およびＩＳＡバスまたはＰＣＩ系のバスに対するインターフェースなどのＩ／Ｏバスインターフェースを含む、サウスブリッジまたはＩ／Ｏコントロールハブ（ＩＣＨ）と一般に呼ばれるものなどのプロセッサおよびチップセットを含むがこれらに限定されない、記憶されたプログラムを実行することができる任意のプロセッサであってよい。一実施形態において、プロセッサ複合体１０８は、統合されたノースブリッジおよびＡＬｉ  Ｍ１５６３Ｓサウスブリッジを含む、Ｔｒａｎｓｍｅｔａ  ＴＭ８８００プロセッサを含む。別の実施形態において、プロセッサ１０８は、ＡＭＤ  Ｅｌａｎ  ＳＣ−５２０マイクロコントローラを含む。別の実施形態において、プロセッサ１０８は、Ｉｎｔｅｌ  Ｃｅｌｅｒｏｎ  ＭプロセッサならびにＭＣＨおよびＩＣＨを含む。一実施形態において、プロセッサ１０８に結合されるのは、プロセッサ１０８がそのメモリから記憶されたプログラムを実行するランダムアクセスメモリ（ＲＡＭ）である。一実施形態において、コードＲＡＭは、ダブルデータレート（ＤＤＲ）ＲＡＭを含み、プロセッサ１０８は、ＤＤＲバスを介してＤＤＲ  ＲＡＭに結合される。
【００２６】
ディスクインターフェース１２８は、ＲＡＩＤコントローラ１０２と、ディスクドライブ、またはテープドライブ、ソリッドステートディスク（ＳＳＤ）、およびＣＤＲＯＭもしくはＤＶＤドライブなどの光学式記憶装置を含むがこれらに限定されない、その他の大容量記憶装置とのインターフェースをする。図１に示された実施形態において、各ＲＡＩＤコントローラ１０２のディスクインターフェース１２８は、プライマリディスクアレイ１１６Ａおよびセカンダリディスクアレイ１１６Ｂと表記される、２組の１つまたは複数のディスクアレイ１１６に結合される。ディスクアレイ１１６は、ユーザデータを記憶する。ディスクインターフェース１２８は、以下のインターフェース、すなわち、ファイバチャネル、小型コンピュータシステムインターフェース（ＳＣＳＩ）、アドバンスドテクノロジーアタッチメント（ＡＴＡ）、シリアルアタッチドＳＣＳＩ（ＳＡＳ）、シリアルアドバンスドテクノロジーアタッチメント（ＳＡＴＡ）、イーサネット（登録商標）、インフィニバンド、ＨＩＰＰＩ、ＥＳＣＯＮ、ｉＳＣＳＩ、またはＦＩＣＯＭを含むことができるがこれらに限定されない。ＲＡＩＤコントローラ１０２は、ＲＡＩＤコントローラ１０２のそれぞれのホストインターフェース１２６に接続される、図１のホストコンピュータ１１４などのホストコンピュータから受信されたＩ／Ｏ要求に応答して、ディスクドライブからデータを読み込み、ディスクドライブにデータを書き込む。
【００２７】
ホストインターフェース１２６は、ＲＡＩＤコントローラ１０２とホストコンピュータ１１４とのインターフェースをする。一実施形態において、ＲＡＩＤコントローラ１０２は、ＰＣＩ、ＰＣＩ−Ｘ、コンパクトＰＣＩ、ＰＣＩ−Ｅｘｐｒｅｓｓ、ＰＣＩ−Ｘ２、ＥＩＳＡ、ＶＥＳＡ、ＶＭＥ、ＲａｐｉｄＩＯ、ＡＧＰ、ＩＳＡ、３ＧＩＯ、ハイパートランスポート、Ｆｕｔｕｒｅｂｕｓ、ＭｕｌｔｉＢｕｓ、または任意のその他のローカルバスなどの、ホストコンピュータシステム１１４のローカルＩ／Ｏバスに接続するかまたは統合されるコントローラなどの、ローカルバスベースのコントローラである。この種類の実施形態において、ホストインターフェース１２６は、ローカルバスタイプのローカルバスインターフェースを含む。別の実施形態において、ＲＡＩＤコントローラ１０２は、ＲＡＩＤコントローラ１０２にＩ／Ｏ要求を発行するホストコンピュータ１１４とは別個の筐体の独立したコントローラである。例えば、ＲＡＩＤコントローラ１０２は、ストレージエリアネットワーク（ＳＡＮ）の一部であってよい。この種類の実施形態において、ホストインターフェース１２６は、ファイバチャネル、イーサネット（登録商標）、インフィニバンド、ＳＣＳＩ、ＨＩＰＰＩ、トークンリング、アークネット、ＦＤＤＩ、ローカルトーク、ＥＳＣＯＮ、ＦＩＣＯＭ、ＡＴＭ、ＳＡＳ、ＳＡＴＡ、ｉＳＣＳＩなどの種々のインターフェースを含むことができる。
【００２８】
バスブリッジ１２４は、プロセッサ１０８に結合される。一実施形態において、プロセッサ１０８およびバスブリッジ１２４は、ＰＣＩ、ＰＣＩ−Ｘ、ＰＣＩ−Ｅｘｐｒｅｓｓ、またはその他のＰＣＩ系のローカルバスなどのローカルバスによって結合される。さらにバスブリッジ１２４に結合されるのは、キャッシュメモリ１４４、ホストインターフェース１２６、およびディスクインターフェース１２８である。一実施形態において、キャッシュメモリ１４４は、ＤＤＲバスを介してバスブリッジ１２４に結合されたＤＤＲ  ＲＡＭを含む。一実施形態において、ホストインターフェース１２６およびディスクインターフェース１２８は、それぞれＰＣＩ−ＸバスまたはＰＣＩ−Ｅｘｐｒｅｓｓバスを介して、バスブリッジ１２４に結合されたＰＣＩ−ＸデバイスまたはＰＣＩ−Ｅｘｐｒｅｓｓデバイスを含む。
【００２９】
キャッシュメモリ１４４は、ＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８を介してその他のＲＡＩＤコントローラ１０２から受信されたメッセージおよびデータをバッファするために使用される。具体的には、プロセッサ１０８上で実行されるソフトウェアが、キャッシュメモリ１４４の一部を、複数のメッセージバッファに割り当てる。ＲＡＩＤコントローラ１０２間のメッセージの通信は、上で参照された米国特許出願公開第１１／１７８７２７号（代理人整理番号ＣＨＡＰ．０１２５）において詳細に記載されている。
【００３０】
さらに、キャッシュメモリ１４４は、ユーザデータが、それぞれホストインターフェース１２６およびディスクインターフェース１２８を介して、ホストコンピュータとディスクドライブとの間で転送されるときに、そのユーザデータをバッファまたはキャッシュするために使用される。キャッシュメモリ１４４の一部は、ＲＡＩＤコントローラ１０２が、ポストされた書き込みデータをディスクアレイ１１６に書き込むまたはフラッシュするまで、当該データを保持するための書き込みキャッシュ１０４Ａ／Ｂ−１として使用される。キャッシュメモリ１４４の別の部分は、その他のＲＡＩＤコントローラ１０２上の書き込みキャッシュのミラー化されたコピー１０４Ａ／Ｂ−２として使用される。図１は、プライマリＲＡＩＤコントローラ１０２Ａのキャッシュメモリ１４４内のプライマリ書き込みキャッシュ１０４Ａ−１と、セカンダリＲＡＩＤコントローラ１０２Ｂのキャッシュメモリ１４４内のセカンダリ書き込みキャッシュ１０４Ｂ−１と、プライマリＲＡＩＤコントローラ１０２Ａのキャッシュメモリ１４４内のセカンダリ書き込みキャッシュのミラー化されたコピー１０４Ａ−２と、セカンダリＲＡＩＤコントローラ１０２Ｂのキャッシュメモリ１４４内のプライマリ書き込みキャッシュのミラー化されたコピー１０４Ｂ−２とを示す。キャッシュメモリ１４４の一部は、ディスクアレイ１１６の論理ブロックアドレス（ＬＢＡ）およびシリアル番号、ならびに（図６に関して以下で説明される）各書き込みキャッシュバッファ６０４に関連する有効ビットなどの、書き込みキャッシュ１０４Ａ／Ｂ−１内の各書き込みキャッシュバッファ６０４の状態についての情報を保持するための、（図６に関して以下で説明される）エントリ６０２のディレクトリ１２２Ａ／Ｂ−１としても使用される。キャッシュメモリ１４４の別の部分は、他のＲＡＩＤコントローラ１０２上のディレクトリのミラー化されたコピー１２２Ａ／Ｂ−２として使用される。図１は、プライマリＲＡＩＤコントローラ１０２Ａのキャッシュメモリ１４４内のプライマリディレクトリ１２２Ａ−１と、セカンダリＲＡＩＤコントローラ１０２Ｂのキャッシュメモリ１４４内のセカンダリディレクトリ１２２Ｂ−２と、プライマリＲＡＩＤコントローラ１０２Ａのキャッシュメモリ１４４内のセカンダリディレクトリのミラー化されたコピー１２２Ａ−２と、セカンダリＲＡＩＤコントローラ１０２Ｂのキャッシュメモリ１４４内のプライマリディレクトリのミラー化されたコピー１２２Ｂ−２とを示す。キャッシュメモリ１４４ならびに具体的には書き込みキャッシュ１０４およびディレクトリ１２２のレイアウトおよび使用は、図５から図９までに関して以下でより詳細に説明される。
【００３１】
プロセッサ１０８、ホストインターフェース１２６、およびディスクインターフェース１２８は、バスブリッジ１２４を介してキャッシュメモリ１４４からデータを読み込み、かつキャッシュメモリ１４４にデータを書き込む。プロセッサ１０８は、ディスクアレイ１１６とホスト１１４との間のデータの転送を制御するプログラムを実行する。プロセッサ１０８は、ディスクアレイ１１６にデータを転送するか、またはディスクアレイ１１６からデータを転送するようにとの命令をホスト１１４から受信する。それに応答して、プロセッサ１０８は、ディスクアレイ１１６とのデータ転送を遂行するために、ディスクインターフェース１２８に命令を発行する。さらに、プロセッサ１０８は、ホストインターフェース１２６を介してホスト１１４に命令の完了を提供する。プロセッサ１０８は、ＲＡＩＤ制御、論理ブロック変換、バッファ管理、およびデータキャッシュなどの記憶装置コントローラ機能も実行する。
【００３２】
図１に示された実施形態において、各ＲＡＩＤコントローラ１０２のディスクインターフェース１２８は、プライマリディスクアレイ１１６Ａおよびセカンダリディスクアレイ１１６Ｂと表記される、２組の１つまたは複数のディスクアレイ１１６に結合される。通常、プライマリＲＡＩＤコントローラ１０２Ａは、プライマリディスクアレイ１１６Ａを制御し、セカンダリＲＡＩＤコントローラ１０２Ｂは、セカンダリディスクアレイ１１６Ｂを制御する。しかし、プライマリＲＡＩＤコントローラ１０２Ａの故障の場合は、システム１００は、プライマリディスクアレイ１１６Ａを制御するためにセカンダリＲＡＩＤコントローラ１０２Ｂにフェイルオーバし、逆に、セカンダリＲＡＩＤコントローラ１０２Ｂの故障の場合は、システム１００は、セカンダリディスクアレイ１１６Ｂを制御するためにプライマリＲＡＩＤコントローラ１０２Ａにフェイルオーバする。具体的には、通常動作中、ホストコンピュータ１１４が、プライマリディスクアレイ１１６Ａにデータを書き込むために、プライマリＲＡＩＤコントローラ１０２ＡにＩ／Ｏ要求を送信するとき、プライマリＲＡＩＤコントローラ１０２Ａは、セカンダリＲＡＩＤコントローラ１０２Ｂのキャッシュメモリ１１４Ｂにおける記憶のために、セカンダリＲＡＩＤコントローラ１０２Ｂにユーザデータのコピーをさらにブロードキャストするので、プライマリＲＡＩＤコントローラ１０２Ａが、プライマリディスクアレイ１１６Ａにユーザデータをフラッシュする前に、そのプライマリＲＡＩＤコントローラ１０２Ａが故障する場合、セカンダリＲＡＩＤコントローラ１０２Ｂが、引き続いてプライマリディスクアレイ１１６Ａにユーザデータをフラッシュすることができる。逆に、ホストコンピュータ１１４が、セカンダリディスクアレイ１１６Ｂにデータを書き込むために、セカンダリＲＡＩＤコントローラ１０２ＢにＩ／Ｏ要求を送信するとき、セカンダリＲＡＩＤコントローラ１０２Ｂは、プライマリＲＡＩＤコントローラ１０２Ａのキャッシュメモリ１１４Ａにおける記憶のために、プライマリＲＡＩＤコントローラ１０２Ａにユーザデータのコピーをさらにブロードキャストするので、セカンダリＲＡＩＤコントローラ１０２Ｂが、セカンダリディスクアレイ１１６Ｂにユーザデータをフラッシュする前に、そのセカンダリＲＡＩＤコントローラ１０２Ｂが故障する場合、プライマリＲＡＩＤコントローラ１０２Ａが、引き続いてセカンダリディスクアレイ１１６Ｂにユーザデータをフラッシュすることができる。
【００３３】
ＲＡＩＤコントローラ１０２が、それらのＲＡＩＤコントローラ１０２の書き込みキャッシュ１０４およびディレクトリ１２２の同期を維持するためにどのように通信するのかを説明する前に、別の可能な同期方法の理解が有益である。上述のように、ミラー化ポステッド書き込み動作において、ユーザデータは、両方のＲＡＩＤコントローラの書き込みキャッシュに書き込まれる。これは、様々な手段によって遂行され得る。１つは、単にホストコンピュータに、各ＲＡＩＤコントローラに対してデータを書き込ませることである。しかし、これは、比較的非効率で性能の低い解決方法である可能性がある。代替の手段は、ホストコンピュータが、ＲＡＩＤコントローラのうちの１つにだけデータを書き込み、次に、受信したＲＡＩＤコントローラに、もう一方のＲＡＩＤコントローラに対して当該データのコピーを書き込ませるか、またはブロードキャストさせることである。上で参照された米国特許出願公開第１０／３６８６８８号（代理人整理番号ＣＨＡＰ．０１０１）は、冗長なＲＡＩＤコントローラに対するブロードキャストデータの転送を効率的に実行するそのようなシステムを記載している。しかし、米国特許出願公開第１０／３６８６８８号は、２つの書き込みキャッシュ間の同期を維持するために、２つのＲＡＩＤコントローラがどのように通信するかを詳細に記載しない。
【００３４】
図１のミラー化ポステッド書き込みブロードキャストシステム１００において使用され得る書き込みキャッシュの同期を維持する１つの方法は、以下の通りである。大まかに言って、プライマリＲＡＩＤコントローラ１０２Ａが、ホストコンピュータ１１４からのＩ／Ｏ書き込み要求を受信するときに、プライマリディレクトリのミラー化されたコピー１２２Ｂ−２を、プライマリディレクトリ１２２Ａ−１と同期された状態に維持するための３ステップのプロセスが、使用されることができる。第１のステップは、プライマリＣＰＵ１０８Ａが、プライマリ書き込みキャッシュ１０４Ａ−１内で必要な書き込みキャッシュバッファ６０４を割り当て、プライマリディレクトリ１２２Ａ−１内でそれらのキャッシュバッファ６０４を無効化し、プライマリディレクトリのミラー化されたコピー１２２Ｂ−２内で、プライマリ書き込みキャッシュの対応するミラー化されたコピー１０４Ｂ−２の書き込みキャッシュバッファ６０４を無効化するように、セカンダリＣＰＵ１０８Ｂに命令するメッセージをセカンダリＣＰＵ１０８Ｂに送信することである。プライマリＣＰＵ１０８Ａは、上で参照された米国特許出願公開第１１／１７８７２７号（代理人整理番号ＣＨＡＰ．０１２５）に記載されたメッセージングシステムを介して、メッセージを送信することができる。プライマリＣＰＵ１０８ＡとセカンダリＣＰＵ１０８Ｂとの間の通信を可能にするためのＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８を持たないさらに従来のシステムにおいて、プライマリＣＰＵ１０８Ａは、ＳＣＳＩまたはファイバチャネルなどのその他の通信リンクを介してメッセージを送信する。システム１００においてＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８を使用することは、米国特許出願公開第１１／１７８７２７号で検討されたように、このリンクが、記憶装置のＩ／Ｏなどのその他の機能と共有されるのではなく、プロセッサ間通信専用であるので、従来のＲＡＩＤシステムに優る以下の利点、すなわち、より広い帯域幅と、より少ない遅延と、より低いコストと、組み込みのエラー回復および複数再試行メカニズムと、不通に対するより高い耐性とを有する。
【００３５】
いったんセカンダリＣＰＵ１０８Ｂが、無効化を実行し、かつプライマリＣＰＵ１０８Ａに、そのセカンダリＣＰＵ１０８Ｂが無効化を実行したことを知らせると、プライマリＣＰＵ１０８Ａは、ホストコンピュータ１１４からのユーザデータを、プライマリバスブリッジ１２４Ａを介してプライマリ書き込みキャッシュ１０４Ａ−１に転送するように、プライマリホストインターフェース１２６Ａをプログラムする第２のステップを実行する。それに応答して、プライマリバスブリッジ１２４Ａは、ユーザデータを、プライマリ書き込みキャッシュ１０４Ａ−１に書き込み、当該ユーザデータのコピーを、セカンダリＲＡＩＤコントローラ１０２Ｂにブロードキャストし、そのセカンダリＲＡＩＤコントローラ１０２Ｂは、当該ユーザデータを、プライマリ書き込みキャッシュのミラー化されたコピー１０４Ｂ−２に書き込む。
【００３６】
いったんプライマリホストインターフェース１２６Ａが、プライマリＣＰＵ１０８Ａに、ユーザデータが書き込まれたことを知らせると、プライマリＣＰＵ１０８Ａは、宛先のプライマリディスクアレイ１１６Ａのシリアル番号および論理ブロックアドレスを用いて、プライマリディレクトリのミラー化されたコピー１２２Ｂ−２を更新するように、およびプライマリディレクトリのミラー化されたコピー１２２Ｂ−２内で、第２のステップで書き込まれた書き込みキャッシュバッファ６０４を有効化するように、セカンダリＣＰＵ１０８Ｂに命令するメッセージを、セカンダリＣＰＵ１０８Ｂに送信する第３のステップを実行する。いったんセカンダリＣＰＵ１０８Ｂが、有効化を実行し、かつプライマリＣＰＵ１０８Ａに、セカンダリＣＰＵ１０８Ｂが有効化を実行したことを知らせると、プライマリＣＰＵ１０８Ａは、ホストコンピュータ１１４に、Ｉ／Ｏ書き込み要求が成功裏に完了されていることを知らせる。
【００３７】
ディレクトリ１２２を無効化する第１のステップが、ユーザデータを宛先の書き込みキャッシュバッファ６０４に書き込むよりも前に実行されなければならないことは必須であり、さもなければ、データの破壊が発生する恐れがある。例えば、無効化ステップの前に、すなわち、ディレクトリ１２２が、宛先の書き込みキャッシュバッファ６０４が有効であることをまだ示している間に、ユーザデータが書き込まれ、全てのデータが、プライマリ書き込みキャッシュのミラー化されたコピー１０４Ｂ−２にブロードキャストされる前に、プライマリＲＡＩＤコントローラ１０２Ａが故障すると仮定する。システム１００が、セカンダリＲＡＩＤコントローラ１０２Ｂにフェイルオーバするとき、セカンダリＲＡＩＤコントローラ１０２Ｂは、書き込みキャッシュバッファ６０４が有効であることを検出し、不完全なデータを適切なプライマリディスクアレイ１１６Ａにフラッシュし、データの破壊を生じるであろう。
【００３８】
上述から認められるであろうように、上述の３ステップのプロセスは、特に、メッセージを交換することと、セカンダリＣＰＵ１０８Ｂに、プライマリディレクトリのミラー化されたコピー１２２Ｂ−２を無効化および有効化するように要求することとに、当該プロセスが、比較的大量のプライマリＣＰＵ１０８ＡおよびセカンダリＣＰＵ１０８Ｂの帯域幅を消費するために、非効率であるという欠点を有し、そのことが、実行されることができる毎秒のミラー化ポステッド書き込み動作の最大数を減少させることなどによって、システム１００の性能を低下させることがある。さらに、そのことは、例えば、セカンダリＣＰＵ１０８Ｂが、プライマリＣＰＵ１０８Ａからの無効化メッセージに応答して割り込みを処理し、プライマリディレクトリのミラー化されたコピー１２２Ｂ−２を無効化し、逆に、プライマリＣＰＵ１０８Ａからの有効化メッセージに応答して割り込みを処理し、プライマリディレクトリのミラー化されたコピー１２２Ｂ−２を有効化しなければならないために、ミラー化ポステッド書き込み動作に遅延を加え、そのことが、実行されることができる毎秒のミラー化ポステッド書き込み動作の最大数を減少させることなどによって、システム１００の性能をやはり低下させることがある。
【００３９】
この問題を解決するために、上で参照された米国特許出願公開第１１／２７２３４０号（代理人整理番号ＣＨＡＰ．０１２６）に記載されたシステムの実施形態は、第２のバスブリッジが、プライマリ書き込みキャッシュのミラー化されたコピー１０４Ｂ−２に、ユーザデータのブロードキャストされたコピーを書き込むが、プライマリディレクトリのミラー化されたコピー１２２Ｂ−２内で、宛先の書き込みキャッシュバッファ６０４を前もって自動的に無効化するように、第１および第２のステップを効果的に組み合わせ、それによって、セカンダリＣＰＵ１０８Ｂが、無効化ステップを実行する必要がないようにする。しかし、米国特許出願公開第１１／２７２３４０号に記載されたシステムは、ディレクトリ１２２の構造、およびキャッシュメモリ１４４内でのそのディレクトリ１２２の位置の情報を持つことをバスブリッジ１２４に要求する。
【００４０】
有利なことに、本明細書において説明される本発明のシステム１００の実施形態は、バスブリッジ１２４が、ディレクトリ１２２の構造および位置に関して知ることはできないが、それでもやはりミラー化ポステッド書き込み動作の性能に対する、ＣＰＵ１０８の関与の量を減らすことを可能にする。具体的には、バスブリッジ１２４は、以下で詳細に説明されるように、第１のステップ（有効化）および第３のステップ（無効化）の間に、ディレクトリ１２２の関連する部分の証明されたメモリ間転送を、プライマリＣＰＵ１０８Ａが要求することを可能にするように構成され、それによって、セカンダリＣＰＵ１０８Ｂが、その証明されたメモリ間転送に対していかなる関与もしないようにする。
【００４１】
図１は、図７および図８、ならびにそれらの代替実施形態に関して以下でより詳細に説明される、本発明によるミラー化ポステッド書き込み動作のデータフローの一部を、番号付けされた太い黒矢印によって示す。太い黒矢印上の番号は、図８の同様に番号付けされたブロックに実質的に対応する。具体的には、太い黒矢印は、有利なことにセカンダリＣＰＵ１０８Ｂのいかなる関与も必要としない、プライマリキャッシュメモリ１４４Ａからセカンダリキャッシュメモリ１４４Ｂへの証明されたメモリ間転送動作を示す。
【００４２】
矢印１６１において、プライマリＣＰＵ１０８Ａは、証明されたメモリ間転送動作を実行するように、プライマリバスブリッジ１２４Ａに命令する。矢印１６２において、プライマリバスブリッジ１２４Ａは、プライマリキャッシュメモリ１４４Ａから命令によって指定されたデータ（プライマリディレクトリ１２２Ａ−１の１つまたは複数のエントリ６０２など）を読み込む。矢印１６３において、プライマリバスブリッジ１２４Ａは、ＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８上で当該データを、セカンダリバスブリッジ１２４Ｂに送信する。矢印１６４において、セカンダリバスブリッジ１２４Ｂは、当該データをセカンダリキャッシュメモリ１４４Ｂに書き込む。次に、矢印１６５において、セカンダリバスブリッジ１２４Ｂは、データが、セカンダリキャッシュメモリ１４４Ｂに成功裏に書き込まれたことを証明するために、プライマリバスブリッジ１２４Ａに受け渡し証明を、セカンダリＣＰＵ１０８Ｂによる関与または認識なしに自動的に送信する。矢印１６６において、プライマリバスブリッジ１２４Ａは、受け渡し証明の受信を示すために、プライマリＣＰＵ１０８Ａ対する割り込み要求を生成する。有利なことに、セカンダリバスブリッジ１２４は、データをセカンダリキャッシュメモリ１４４Ｂに書き込んだ後に、受け渡し証明を自動的に送信し、したがってセカンダリＣＰＵ１０８Ｂに無関係であり、それによって、３ステップのプロセスにおける上述された欠点を効果的に取り除く。
【００４３】
ここで図２を参照すると、本発明による図１のバスブリッジ１２４をより詳細に示す構成図が示される。バスブリッジ１２４は、バスブリッジ１２４の種々の部分を制御するための制御論理２１４を含む。制御論理２１４は、キャッシュメモリ１４４内の１つの位置からキャッシュメモリ１４４内のもう１つの位置への直接メモリデータ転送を実行するために、ＣＰＵ１０８によってプログラム可能であるダイレクトメモリアクセスコントローラ（ＤＭＡＣ）２３８を含む。さらに、上で参照された米国特許出願公開第１１／１７８７２７号（代理人整理番号ＣＨＡＰ．０１２５）に記載されたように、ＣＰＵ１０８は、とりわけ２つのＲＡＩＤコントローラ１０２の間でメッセージを含むデータを通信するために有用であるＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８を介して、プライマリＲＡＩＤコントローラ１０２Ａのキャッシュメモリ１４４内の１つの位置から、セカンダリＲＡＩＤコントローラ１０２Ｂのキャッシュメモリ１４４内のある位置への、およびその逆の、直接メモリデータ転送を実行するように、ＤＭＡＣ２３８をプログラムすることができる。しかし、米国特許出願公開第１１／１７８７２７号に記載されたデータ転送方法は、セカンダリＣＰＵ１０８Ｂによる関与を必要とする。有利なことに、本開示は、プライマリおよびセカンダリバスブリッジ１２４が、プライマリキャッシュメモリ１４４Ａからセカンダリキャッシュメモリ１４４Ｂへの証明されたＤＭＡ転送を実行して、セカンダリＣＰＵ１０８Ｂによる関与の必要をなくす実施形態を説明する。
【００４４】
一実施形態において、ＤＭＡＣ２３８は、そのリストのベースアドレスを、プロセッサ１０８がアドレスレジスタにプログラムするスキャッタ／ギャザーリストによってそのチャンクのメモリロケーションが指定される、一連の物理的に不連続なデータチャンクを転送することができる。ＤＭＡＣ２３８は、データチャンクを含む複数のＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求トランザクションレイヤパケット（ＴＬＰ）を、ＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８上で、その他のＲＡＩＤコントローラ１０２のキャッシュメモリ１４４に送信するために、スキャッタ／ギャザーリストのアドレス／長さの対を使用する。
【００４５】
バスブリッジ１２４は、証明タイマ２３６も含む。制御論理２１４は、バスブリッジ１２４が、ＣＥＲＴＩＦＹフラグ４０６を設定している、図４ＡのＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰ４００をＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８上で送信する度に、所定の時間を用いて証明タイマ２３６の実行を開始する。一実施形態において、所定の時間は、３０秒である。別の実施形態において、所定の時間は、１００ミリ秒である。システム１００の用途および必要に適合されたその他のタイムアウト値を有する、その他の実施形態が考えられる。バスブリッジ１２４が、ＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８上でその他のバスブリッジ１２４からの対応する受け取り証明（ＤＥＬＩＶＥＲＥＤフラグ４０８を設定している、図４ＢのＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰ４０１）を受信する前に、証明タイマ２３６が時間切れになる場合、バスブリッジ１２４は、ＣＰＵ１０８に対する割り込み要求を生成する。割り込み要求を生成する前に、バスブリッジ１２４は、割り込みの原因を示すために、当該バスブリッジ１２４の制御および状態レジスタ（ＣＳＲ）２０２のうちの１つまたは複数の状態レジスタに情報を格納する。ＣＳＲ２０２は、ローカルバスインターフェース２１２に、および制御論理２１４に結合される。ＣＳＲ２０２は、バスブリッジ１２４を制御するために、図１のＣＰＵ１０８によってプログラムされることができ、バスブリッジ１２４がＣＰＵ１０８に状態を提供するために、ＣＰＵ１０８によって読まれることができる。ＣＳＲ２０２は、ＣＰＵ１０８がＤＭＡＣ２３８をプログラムするためのレジスタも含む。
【００４６】
バスブリッジ１２４は、バスブリッジ１２４をディスクインターフェース１２８とインターフェースするための（ＰＣＩ−Ｘインターフェースなどの）ローカルバスインターフェース２１６、バスブリッジ１２４をホストインターフェース１２６とインターフェースするための（ＰＣＩ−Ｘインターフェースなどの）別のローカルバスインターフェース２１８、バスブリッジ１２４をキャッシュメモリ１４４とインターフェースするための（ＤＤＲ  ＳＤＲＡＭインターフェースなどの）メモリバスインターフェース２０４、およびバスブリッジ１２４をＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８とインターフェースするためのＰＣＩ−Ｅｘｐｒｅｓｓインターフェース２０８も含む。ローカルバスインターフェース２１６および２１８、メモリバスインターフェース２０４、ならびにＰＣＩ−Ｅｘｐｒｅｓｓインターフェース２０８は、全て制御論理２１４に結合され、種々のインターフェースの間のデータ転送をバッファし、かつそれらのインターフェースの間の並列で高速なデータパスを提供する、（先入れ先出し（ＦＩＦＯ）バッファなどの）バッファ２０６にも結合される。バスブリッジ１２４は、バスブリッジ１２４をＣＰＵ１０８とインターフェースするための、制御論理２１４に結合された、ＰＣＩインターフェースなどのローカルバスインターフェース２１２も含む。ＣＰＵ１０８は、ＰＣＩインターフェース２１２を介して、キャッシュメモリ１４４、ディスクインターフェース１２８、およびホストインターフェース１２６にアクセスする。
【００４７】
ＰＣＩ−Ｅｘｐｒｅｓｓインターフェース２０８は、図３および図４Ａ、図４Ｂに関して以下でより詳細に説明されるように、ＰＣＩ−Ｅｘｐｒｅｓｓ  ＴＬＰおよびデータリンクレイヤパケット（ＤＬＬＰ）、ならびに特にメモリ書き込み要求ＴＬＰなどのＰＣＩ−Ｅｘｐｒｅｓｓパケットを送信および受信することを含め、ＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８上でＰＣＩ−Ｅｘｐｒｅｓｓプロトコルを実行する。一実施形態において、本明細書において説明されるＣＥＲＴＩＦＹフラグ４０６、ＤＥＬＩＶＥＲＥＤフラグ４０８、および関連する機能的修正を例外として、ＰＣＩ−Ｅｘｐｒｅｓｓインターフェース２０８は、２００３年４月１５日のＰＣＩ  Ｅｘｐｒｅｓｓ  Ｂａｓｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｒｅｖｉｓｉｏｎ  １．０ａの関連する部分に実質的に従う。
【００４８】
ここで図３を参照すると、従来技術のＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求トランザクションレイヤパケット（ＴＬＰ）ヘッダ３００を示す構成図が示される。図３のパケットヘッダ３００は、２００３年４月１５日の最新のＰＣＩ  Ｅｘｐｒｅｓｓ  Ｂａｓｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｒｅｖｉｓｉｏｎ  １．０ａによって指定された、データフォーマットメモリ書き込み要求ＴＬＰヘッダを有する、通常の４つのダブルワードヘッダを示す。ヘッダ３００は、４つの３２ビットダブルワードを含む。第１のダブルワードは、左から右に向かって、予約ビット（Ｒ）と、ＴＬＰヘッダが、データフォーマットＴＬＰを有する４つのダブルワードヘッダであることを示す、フォーマット（Ｆｏｒｍａｔ）フィールド内のブール値１１と、ＴＬＰがメモリ要求を含み、かつアドレスルーティングが使用されるべきであることを示すため、タイプ（Ｔｙｐｅ）フィールド内のブール値０００００と、予約ビット（Ｒ）と、３ビットのトランザクションクラス（Ｔｒａｎｓａｃｔｉｏｎ  Ｃｌａｓｓ）（ＴＣ）フィールドと、４つの予約ビット（Ｒ）と、ＴＬＰダイジェスト（ＴＬＰ  Ｄｉｇｅｓｔ）ビット（ＴＤ）と、ポイズンドデータ（ＥＰ）ビットと、２つの属性（Ａｔｔｒｉｂｕｔｅ）（Ａｔｔｒ）ビットと、２つの予約ビット（Ｒ）と、データペイロードの長さを指定する１０長さ（Ｌｅｎｇｔｈ）ビットとを含む。第２のダブルワードは、左から右に向かって、１６ビットのリクエスタＩＤ（Ｒｅｑｕｅｓｔｅｒ  ＩＤ）フィールドと、タグ（Ｔａｇ）フィールドと、ラストダブルワードバイトイネーブル（Ｌａｓｔ  ｄｏｕｂｌｅ  ｗｏｒｄ  ｂｙｔｅ  ｅｎａｂｌｅ）（ＤＷ  ＢＥ）フィールドと、ファーストダブルワードバイトイネーブル（Ｆｉｒｓｔ  ｄｏｕｂｌｅ  ｗｏｒｄ  ｂｙｔｅ  ｅｎａｂｌｅ）（ＤＷ  ＢＥ）フィールドとを含む。第３のダブルワードは、データペイロードの宛先メモリアドレスのビット６３からビット３２までを指定する、３２ビットのアドレス（Ａｄｄｒｅｓｓ）フィールドを含む。第４のダブルワードは、データペイロードの宛先メモリアドレスのビット３１からビット２までを指定する、３０ビットのアドレスフィールドと、それに続く２つの予約（Ｒ）ビットとを含む。
【００４９】
ここで図４Ａを参照すると、そのデータの転送が、本発明により証明されるデータを転送するための、修正されたＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求トランザクションレイヤパケット（ＴＬＰ）ヘッダ４００を示す構成図が示される。修正されたＴＬＰパケットヘッダ４００は、図３の通常のＴＬＰパケットヘッダ３００と類似しているが、修正されたＴＬＰパケットヘッダ４００は、アドレスフィールドのビット６３を占めるＣＥＲＴＩＦＹフラグ４０６を含む。ＣＥＲＴＩＦＹフラグ４０６によって占められるアドレスフィールドのビットは、バスブリッジ１２４によってアドレスフィールドの一部として解釈されない。より正確に言えば、アドレスフィールドは、図３の通常のＰＣＩ−Ｅｘｐｒｅｓｓ  ＴＬＰヘッダ３００と比べて短縮される。したがって、図４Ａの修正されたＴＬＰパケットヘッダ４００は、セカンダリＣＰＵ１０８Ｂを関与させることなしに証明されたやり方でＴＬＰを使用して、プライマリキャッシュメモリ１４４Ａからセカンダリキャッシュメモリ１４４Ｂにデータを転送する機能と引き換えに、ＲＡＩＤコントローラ１０２によってもう一方のＲＡＩＤコントローラ１０２内でアクセスされることができる、メモリアドレス空間を削減する。設定されたＣＥＲＴＩＦＹフラグ４０６は、受信バスブリッジ１２４が、受信されたメモリ書き込み要求ＴＬＰのペイロードデータを、そのキャッシュメモリ１４４に成功裏に書き込んだ後で、送信バスブリッジ１２４に（図４Ｂのヘッダ４０１を用いたメモリ書き込み要求ＴＬＰなどの）受け渡し証明を送信するように、受信バスブリッジ１２４に命令する。
【００５０】
図４Ａは、ＣＥＲＴＩＦＹフラグ４０６用にアドレスフィールドの特定のビットを使用することを示したが、本発明は、この特定のビットに限定されず、それどころかその他のビットが使用されることができる。例えば、ＣＥＲＴＩＦＹフラグ４０６ビットが、ＴＬＰヘッダのアドレスフィールド内の最上位ビットである実施形態が説明されたが、ＣＥＲＴＩＦＹフラグ４０６用に、アドレスフィールドのその他のビットが使用されてよい。さらに、ＴＬＰが、データフォーマットを有する４つのダブルワードヘッダを持つ実施形態が示されているが、アドレス指定されるべきキャッシュメモリの量が、３２ビットからＣＥＲＴＩＦＹフラグ４０６用の１ビットを引いたビット数によって、アドレスされるほど十分に小さい場合、データフォーマットＴＬＰを有する３つのダブルワードヘッダ内のアドレスビットが、ＣＥＲＴＩＦＹフラグ４０６用に使用されることができる。重要なことは、ＣＥＲＴＩＦＹフラグ４０６用に使用されるビットが、受信ＲＡＩＤコントローラ内のメモリをアドレス指定するために必要とされないアドレスフィールド内のビットであること、および選択されるビットが予め決められており、その結果当該予め決められたビットをＣＥＲＴＩＦＹフラグ４０６として解釈するように、ＰＣＩ−Ｅｘｐｒｅｓｓコントローラが構成されることができることである。
【００５１】
さらに、ＣＥＲＴＩＦＹフラグ４０６が、アドレスフィールド以外のＴＬＰヘッダのフィールドの不要なビットに配置されるその他の実施形態が考えられる。例えば、ＴＬＰヘッダ内の予約フィールドのうちの１つまたは複数が、ＣＥＲＴＩＦＹフラグ４０６ビット用に使用される可能性がある。別の例として、システムの設計者は、データポイズニングをサポートせず、ＴＬＰヘッダ内のＥＰビットを、ＣＥＲＴＩＦＹフラグ４０６として利用することを決定する可能性がある。同様に、システムの設計者は、ＴＬＰダイジェストをサポートせず、ＴＬＰヘッダ内のＴＤビットを、ＣＥＲＴＩＦＹフラグ４０６として利用することを決定する可能性がある。同様に、システムの設計者は、区別されたサービスクラスをサポートしないか、またはそれらのサービスクラスの一部のみをサポートし、かつＴＬＰヘッダ内の余りのＴＣビットを、ＣＥＲＴＩＦＹフラグ４０６として利用することを決定する可能性がある。同様に、システムの設計者は、リラックスオーダリングおよび／またはハードウェアコヒーレンシー管理をサポートせず、かつＴＬＰヘッダ内のアトリビュートビットの一方または両方を、ＣＥＲＴＩＦＹフラグ４０６として利用することを決定する可能性がある。同様に、システムの設計者は、データ転送がダブルワードの境界に配置されることを要求し、かつＴＬＰヘッダのバイトイネーブルフィールドの一方または両方の中のビットを、ＣＥＲＴＩＦＹフラグ４０６として利用することを決定する可能性がある。同様に、システムの設計者は、未処理の要求の最大数未満をサポートし、かつＴＬＰヘッダのトランザクションＩＤ（ｔｒａｎｓａｃｔｉｏｎ  ＩＤ）のタグフィールドおよび／または機能番号（ｆｕｎｃｔｉｏｎ  ｎｕｍｂｅｒ）フィールド内の不要なビットを、ＣＥＲＴＩＦＹフラグ４０６として利用することを決定する可能性がある。この場合もまた、重要なことは、ＣＥＲＴＩＦＹフラグ４０６用に使用されるビットが、通常のＰＣＩ−Ｅｘｐｒｅｓｓの機能に必要とされないこと、および選択されるビットが、予め決められており、その結果、ＰＣＩ−Ｅｘｐｒｅｓｓコントローラが、当該予め決められたビットをＣＥＲＴＩＦＹフラグ４０６として解釈するように、構成されることができることである。
【００５２】
ここで図４Ｂを参照すると、本発明による、受け渡し証明として使用されるための修正されたＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求トランザクションレイヤパケット（ＴＬＰ）ヘッダ４０１を示す構成図が示される。修正されたＴＬＰパケットヘッダ４０１は、図３の通常のＴＬＰパケットヘッダ３００と類似しているが、修正されたＴＬＰパケットヘッダ４００は、アドレスフィールドのビット６０を占めるＤＥＬＩＶＥＲＥＤフラグ４０８を含む。ＤＥＬＩＶＥＲＥＤフラグ４０８によって占められるアドレスフィールドのビットは、バスブリッジ１２４によってアドレスフィールドの一部として解釈されない。むしろ、アドレスフィールドは、図３の通常のＰＣＩ−Ｅｘｐｒｅｓｓ  ＴＬＰヘッダ３００と比べて短縮される。したがって、図４Ｂの修正されたＴＬＰパケットヘッダ４０１は、セカンダリＣＰＵ１０８Ｂを関与させることなしに、証明されたやり方でＴＬＰを使用して、プライマリキャッシュメモリ１４４Ａからセカンダリキャッシュメモリ１４４Ｂにデータを転送する機能と引き換えに、ＲＡＩＤコントローラ１０２内でもう一方のＲＡＩＤコントローラ１０２によってアクセスされることができるメモリアドレス空間を削減する。設定されたＤＥＬＩＶＥＲＥＤフラグ４０８は、送信バスブリッジ１２４が、前に送信されたメモリ書き込み要求ＴＬＰのペイロードデータを、そのキャッシュメモリ１４４に成功裏に書き込んだことを受信バスブリッジ１２４に知らせ、そのことを示すために受信バスブリッジ１２４にそのＣＰＵ１０８に対して割り込みをかけるように命令する。
【００５３】
図４Ｂは、ＤＥＬＩＶＥＲＥＤフラグ４０８用にアドレスフィールドの特定のビットを使用することを示したが、本発明は、この特定のビットに限定されず、それどころかその他のビットが、図４ＡのＴＬＰパケットヘッダ４００に関して上述されたやり方と同様のやり方で使用されることができる。さらに、ＰＣＩ−Ｅｘｐｒｅｓｓベンダ規定メッセージパケット、またはメッセージシグナル割り込み（ＭＳＩ）パケットを含むがこれらに限定されない、受け渡し証明の種々のその他の実施形態が考えられる。重要なことは、セカンダリバスブリッジ１２４Ｂが、セカンダリＣＰＵ１０８Ｂとは無関係にＣＥＲＴＩＦＹフラグ４０６に応答して、受け渡し証明を自動的に送信するので、本明細書において説明される証明されたメモリ間転送の方法は、受け渡し証明の形態によらず、セカンダリＣＰＵ１０８Ｂによる関与を必要としないことである。一実施形態において、バスブリッジ１２４が、ＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰの送信および受信を実行するための論理を使用するが、例えばＰＣＩ−Ｅｘｐｒｅｓｓメッセージパケットおよび／またはＩ／Ｏ要求パケットなどの全てのＰＣＩ−Ｅｘｐｒｅｓｓプロトコルを実装することは要求されないので、図４Ｂの実施形態は、より少ない論理ゲートを必要とするという利点を有することに留意されたい。
【００５４】
ここで図５を参照すると、本発明による、図１のシステム１００の２つのＲＡＩＤコントローラ１０２内のミラー化されたキャッシュメモリ１４４の構成を示す構成図が示される。図５は、プライマリバスブリッジ１２４Ａに結合されたプライマリキャッシュメモリ１４４Ａと、セカンダリバスブリッジ１２４Ｂに結合されたセカンダリキャッシュメモリ１４４Ｂと、ＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８を介して結合されたプライマリおよびセカンダリバスブリッジ１２４とを示し、これら全ては図１のものである。
【００５５】
プライマリキャッシュメモリ１４４Ａは、図１のプライマリディレクトリ１２２Ａ−１、セカンダリディレクトリのミラー化されたコピー１２２Ａ−２、プライマリ書き込みキャッシュ１０４Ａ−１、およびセカンダリ書き込みキャッシュのミラー化されたコピー１０４Ａ−２を含む。プライマリキャッシュメモリ１４４Ａは、プライマリ読み込みキャッシュ５０８Ａも含む。プライマリ読み込みキャッシュ５０８Ａは、要求されたときに、ホストコンピュータ１１４にキャッシュデータを迅速に提供するために、ディスクアレイ１１６から読み込まれたデータをキャッシュするために使用され、そのため、データを取得するために、ディスクアレイ１１６にアクセスする必要がない。セカンダリキャッシュメモリ１４４Ｂは、図１のプライマリディレクトリのミラー化されたコピー１２２Ｂ−２、セカンダリディレクトリ１２２Ｂ−１、プライマリ書き込みキャッシュのミラー化されたコピー１０４Ｂ−２、およびセカンダリ書き込みキャッシュ１０４Ｂ−１を含む。セカンダリキャッシュメモリ１４４Ｂは、セカンダリ読み込みキャッシュ５０８Ｂも含む。セカンダリ読み込みキャッシュ５０８Ｂは、要求されたときに、ホストコンピュータ１１４にキャッシュデータを迅速に提供するために、ディスクアレイ１１６から読み込まれたデータをキャッシュするために使用され、そのため、データを取得するために、ディスクアレイ１１６にアクセスする必要がない。
【００５６】
書き込みキャッシュ１０４は、ＲＡＩＤコントローラ１０２によって、ホストコンピュータ１１４から受信されたデータを、ＲＡＩＤコントローラ１０２が当該データをディスクアレイ１１６に書き込むまで、バッファするために使用される。具体的には、ポステッド書き込み動作中、いったんホストコンピュータ１１４のデータが、書き込みキャッシュ１０４の書き込みキャッシュバッファ６０４に書き込まれてしまうと、ＲＡＩＤコントローラ１０２は、当該データが成功裏に書き込まれたことを示すために、ホストコンピュータ１１４に正常終了状態を送信する。
【００５７】
プライマリ書き込みキャッシュ１０４Ａ−１は、プライマリディスクアレイ１１６Ａに書き込まれるべきデータをバッファするために、プライマリＲＡＩＤコントローラ１０２Ａによって使用され、セカンダリ書き込みキャッシュ１０４Ｂ−１は、セカンダリディスクアレイ１１６Ｂに書き込まれるべきデータをバッファするために、セカンダリＲＡＩＤコントローラ１０２Ｂによって使用される。上述のように、通常動作中（すなわち、プライマリおよびセカンダリ両方のＲＡＩＤコントローラ１０２が、適切に動作しており、その結果、もう一方のＲＡＩＤコントローラ１０２へのフェイルオーバがないとき）、プライマリＲＡＩＤコントローラ１０２Ａは、プライマリディスクアレイ１１６Ａを制御し、セカンダリＲＡＩＤコントローラ１０２Ｂは、セカンダリディスクアレイ１１６Ｂを制御する。したがって、通常動作中、プライマリＲＡＩＤコントローラ１０２Ａは、ホストコンピュータ１１４からプライマリディスクアレイ１１６ＡにアクセスするためのＩ／Ｏ要求のみを受信し、セカンダリＲＡＩＤコントローラ１０２Ｂは、ホストコンピュータ１１４からセカンダリディスクアレイ１１６ＢにアクセスするためのＩ／Ｏ要求のみを受信する。図５に示されるように、プライマリバスブリッジ１２４Ａによって受信されたプライマリディスクアレイ１１６Ａ宛てのユーザデータ１６２は、プライマリ書き込みキャッシュ１０４Ａ−１に書き込まれ、セカンダリバスブリッジ１２４Ｂによって受信されたセカンダリディスクアレイ１１６Ｂ宛てのユーザデータ１６２は、セカンダリ書き込みキャッシュ１０４Ｂ−１に書き込まれる。
【００５８】
さらに、プライマリ書き込みキャッシュ１０４Ａ−１は、プライマリブロードキャストアドレス範囲として指定されたアドレス範囲内にある。プライマリバスブリッジ１２４Ａが、プライマリホストインターフェース１２６Ａから、プライマリブロードキャストアドレス範囲内のアドレスを指定するトランザクションを受信する場合、プライマリバスブリッジ１２４Ａは、ユーザデータ１６２をプライマリ書き込みキャッシュ１０４Ａ−１に書き込むだけでなく、ユーザデータのコピー１６４を、ＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８を介してセカンダリバスブリッジ１２４Ｂにブロードキャストする。応答して、セカンダリバスブリッジ１２４Ｂは、ユーザデータのコピー１６４を、プライマリ書き込みキャッシュのミラー化されたコピー１０４Ｂ−２に書き込む。その結果、プライマリＲＡＩＤコントローラ１０２Ａが故障する場合、ユーザデータのコピー１６４が、プライマリ書き込みキャッシュのミラー化されたコピー１０４Ｂ−２内で利用可能であるので、セカンダリＲＡＩＤコントローラ１０２Ｂは、フェイルオーバされることができ、引き続いてユーザデータのコピー１６４を、適切なプライマリディスクアレイ１１６Ａにフラッシュすることができる。逆に、セカンダリ書き込みキャッシュ１０４Ｂ−１は、セカンダリブロードキャストアドレス範囲として指定されたアドレス範囲内にある。セカンダリバスブリッジ１２４Ｂが、セカンダリホストインターフェース１２６Ｂから、セカンダリブロードキャストアドレス範囲内のアドレスを指定するトランザクションを受信する場合、セカンダリバスブリッジ１２４Ｂは、ユーザデータ１６２をセカンダリ書き込みキャッシュ１０４Ｂ−１に書き込むだけでなく、ユーザデータのコピー１６４を、ＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８を介してプライマリバスブリッジ１２４Ａにブロードキャストする。応答して、プライマリバスブリッジ１２４Ａは、ユーザデータのコピー１６４を、セカンダリ書き込みキャッシュのミラー化されたコピー１０４Ａ−２に書き込む。その結果、セカンダリＲＡＩＤコントローラ１０２Ｂが故障する場合、ユーザデータのコピー１６４が、セカンダリ書き込みキャッシュのミラー化されたコピー１０４Ａ−２内で利用可能であるので、プライマリＲＡＩＤコントローラ１０２Ａは、フェイルオーバされることができ、引き続いてユーザデータのコピー１６４を、適切なセカンダリディスクアレイ１１６Ｂにフラッシュすることができる。一実施形態において、バスブリッジ１２４は、ブロードキャストアドレス範囲を指定するＣＳＲ２０２内の制御レジスタを含む。ＣＰＵ１０８は、ＲＡＩＤコントローラ１０２の初期設定時に、ブロードキャストアドレス範囲を制御レジスタにプログラムすることができる。一実施形態において、ＲＡＩＤコントローラ１０２は、初期設定時に通信して、書き込みキャッシュ１０４のミラー化を容易にするために、それらのＲＡＩＤコントローラ１０２のブロードキャストアドレス範囲の値を交換する。
【００５９】
ここで図６を参照すると、本発明による図１の書き込みキャッシュ１０４およびディレクトリ１２２の構成を示す構成図が示される。図６は、１つの書き込みキャッシュ１０４および１つのディレクトリ１２２のみを示すが、図１および５に示されたように、各ＲＡＩＤコントローラ１０２は、２つの書き込みキャッシュ１０４および２つのディレクトリ１２２を含む。書き込みキャッシュ１０４は、書き込みキャッシュバッファ６０４のアレイとして構成され、ディレクトリ１２２は、ディレクトリエントリ６０２のアレイとして構成される。各書き込みキャッシュバッファ６０４は、アレイインデックスを有する。書き込みキャッシュ１０４のアレイインデックスは、０からＮまでで示される。各ディレクトリエントリ６０２は、アレイインデックスを有する。ディレクトリ１２２のアレイインデックスは、書き込みキャッシュ１０４のアレイインデックスに対応する０からＮまでで示される。図６の実施形態において、書き込みキャッシュバッファ１０４のサイズは、書き込みキャッシュバッファ１０４が、（それぞれのディスクセクタが５１２バイトである）３２個のディスクセクタに対するデータを記憶することを可能にする１６ＫＢである。図６の実施形態において、ディレクトリエントリ６０２のサイズは、３２バイトである。
【００６０】
図６の実施形態において、各ディレクトリエントリ６０２は、８バイトの開始ＬＢＡフィールド６１２と、４バイトの有効ビットフィールド６１４と、８バイトのディスクアレイシリアル番号フィールド６１６と、８バイトのタイムスタンプまたはシーケンス番号６２２と、４バイトの予約フィールド６１８とを含む。ディスクアレイシリアル番号フィールド６１６は、書き込みキャッシュバッファ６０４内のデータが書き込まれるべきディスクアレイ１１６を、一意に識別するシリアル番号を記憶する。一実施形態において、ディスクアレイシリアル番号フィールド６１６は、書き込みキャッシュバッファ６０４内のデータが書き込まれるべきディスクアレイ１１６のパーティションを、一意に識別するシリアル番号を記憶する。開始ＬＢＡフィールド６１２は、対応する書き込みキャッシュバッファ６０４の第１の有効なセクタのディスクアレイ１１６の論理ブロックアドレスを含む。有効ビットフィールド６１４内には３２個の有効ビットが存在し、１つのビットが、それぞれの書き込みキャッシュバッファ６０４内の３２セクタのそれぞれに対応する。有効ビットが、セクタに対して設定される場合、書き込みキャッシュバッファ６０４の当該セクタ内のデータは、有効またはダーティであり、もう一方のＲＡＩＤコントローラ１０２の故障が発生した場合にフェイルオーバされる、ＲＡＩＤコントローラ１０２によってディスクアレイ１１６にフラッシュされる必要がある。有効ビットが、セクタに対して設定されていない場合、書き込みキャッシュバッファ６０４の当該セクタ内のデータは、無効またはクリーンである。一実施形態において、タイムスタンプまたはシーケンス番号６２２フィールドは、ミラー化ポステッド書き込みデータが、書き込みキャッシュ１０４に書き込まれた時間を示す値を記憶する。一実施形態において、タイムスタンプまたはシーケンス番号６２２フィールドは、ホストのＩ／Ｏ要求のデータが、書き込みキャッシュ１０４に書き込まれる度にインクリメントされる、カウンタの値を記憶する。タイムスタンプまたはシーケンス番号６２２は、ディスクアレイ１１６上の同じ論理ブロックアドレスに関するディレクトリ１２２内の重複する有効なエントリ６０２を避けるために使用されることができ、それらの重複する有効なエントリ６０２は、書き込みキャッシュバッファ６０４が、それら書き込みキャッシュバッファ６０４の次の使用の直前まで無効化されないので、タイムスタンプまたはシーケンス番号６２２が使用されなければ発生することがある。
【００６１】
ここで図７を参照すると、本発明の一実施形態による、ミラー化ポステッド書き込み動作を実行するためのシステム１００の動作を示すフローチャートが示される。ブロック７０２においてフローが開始する。
【００６２】
ブロック７０２において、プライマリホストインターフェース１２６Ａが、ホストコンピュータ１１４からのＩ／Ｏ要求を受信し、プライマリＣＰＵ１０８ＡにＩ／Ｏ要求の受信を知らせるために、そのプライマリＣＰＵ１０８Ａに割り込みをかける。フローはブロック７０４に進む。
【００６３】
ブロック７０４において、割り込みに応答して、プライマリＣＰＵ１０８Ａは、Ｉ／Ｏ要求を検査し、Ｉ／Ｏ要求が書き込み要求であるかどうかを判定する。図７のフローチャートは、書き込みポスティングが、ＲＡＩＤコントローラ１０２上で有効化されることを仮定する。応答して、プライマリＣＰＵ１０８Ａは、プライマリ書き込みキャッシュ１０４Ａ−１内で書き込みキャッシュバッファ６０４を割り当て、プライマリディレクトリ１２２Ａ−１内の対応するディレクトリエントリ６０２内の適切な有効ビット６１４をクリアすることによって、割り当てられた書き込みキャッシュバッファ６０４を無効化する。一実施形態において、プライマリＣＰＵ１０８Ａは、有効ビット６１４をクリアした後で、宛先のプライマリディスクアレイ１１６Ａのシリアル番号および論理ブロックアドレスも、ディレクトリエントリ６０２に書き込む。フローはブロック７０６に進む。
【００６４】
ブロック７０６において、プライマリＣＰＵ１０８Ａは、ブロック７０４において無効化されたプライマリディレクトリ１２２Ａ−１のエントリ６０２を、プライマリディレクトリのミラー化されたコピー１２２Ｂ−２内の対応するエントリ６０２にコピーするために、証明されたメモリ間転送を実行するようにプライマリバスブリッジ１２４Ａに命令する。具体的には、プライマリＣＰＵ１０８Ａは、図８のブロック１６１に関して詳細に説明されるように、証明されたメモリ間転送を実行するように、プライマリバスブリッジ１２４ＡのＤＭＡＣ２３８をプログラムする。フローはブロック７０８に進む。
【００６５】
ブロック７０８において、プライマリバスブリッジ１２４Ａは、ブロック７０６において要求された証明されたコピーが完了していることを示すために、プライマリＣＰＵ１０８Ａに割り込みをかける。具体的には、プライマリバスブリッジ１２４Ａが、図８のブロック１６６に関して詳細に説明されるように、プライマリＣＰＵ１０８Ａに割り込みをかける。図８は、有効化され証明されたメモリ間コピーを実行するためのシステム１００の動作をより詳細に説明する。フローはブロック７１２に進む。
【００６６】
ブロック７１２において、プライマリＣＰＵ１０８Ａは、割り当てられた書き込みキャッシュバッファ６０４のメモリアドレスと、Ｉ／Ｏ書き込み要求において指定される、書き込みキャッシュバッファ６０４に書き込まれるべきデータの長さとを用いて、プライマリホストインターフェース１２６Ａをプログラムする。一実施形態において、Ｉ／Ｏ書き込み要求において指定されたデータの量が、単一の書き込みキャッシュバッファ６０４よりも大きく、十分な物理的に連続した書き込みキャッシュバッファ６０４が、利用可能でない場合、プライマリＣＰＵ１０８Ａは、複数の書き込みキャッシュバッファ６０４を割り当て、プライマリホストインターフェース１２６Ａに、書き込みキャッシュバッファ６０４のアドレス／長さの対のスキャッタ／ギャザーリストを提供する。フローはブロック７１４に進む。
【００６７】
ブロック７１４において、プライマリホストインターフェース１２６Ａは、Ｉ／Ｏ要求において指定されたユーザデータを書き込むために、プライマリホストインターフェース１２６Ａをプライマリバスブリッジ１２４Ａに結合するバス上で、ＰＣＩ−Ｘメモリ書き込みトランザクションなどの書き込みトランザクションを生成する。書き込みトランザクションは、ブロック７０４において割り当てられた書き込みキャッシュバッファ６０４のメモリアドレスを含む。メモリアドレスは、図５において示されたプライマリブロードキャストアドレス範囲内にある。フローはブロック７１６に進む。
【００６８】
ブロック７１６において、プライマリバスブリッジ１２４Ａは、書き込みトランザクションにおいて指定されたデータを、書き込みトランザクションによって指定されたプライマリ書き込みキャッシュ１０４Ａ−１内のアドレス、すなわち、ブロック７０４において割り当てられた書き込みキャッシュバッファ６０４のアドレスに書き込む。さらに、プライマリバスブリッジ１２４Ａは、書き込みトランザクションのアドレスが、プライマリブロードキャストアドレス範囲内にあることを検出し、ユーザデータのコピーを、ＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８を介してセカンダリバスブリッジ１２４Ｂにブロードキャストする。プライマリバスブリッジ１２４Ａは、図３のＴＬＰヘッダ３００を有するＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰを送信することによって、ブロードキャストを実行する。ＴＬＰヘッダ３００のアドレスフィールドは、プライマリホストインターフェース１２６Ａによって生成されたメモリ書き込みトランザクションにおいて指定されたメモリアドレスを含み、ＴＬＰヘッダ３００の長さフィールドは、プライマリホストインターフェース１２６Ａによって生成されたメモリ書き込みトランザクションにおいて指定された長さを含む。一実施形態において、Ｉ／Ｏ要求で指定されたユーザデータの長さが、２ＫＢを超える場合、プライマリホストインターフェース１２６Ａは、プライマリバスブリッジ１２４Ａへのデータ転送を、それぞれのトランザクションが２ＫＢ以下である複数の書き込みトランザクションに分割し、その結果、プライマリバスブリッジ１２４Ａは、それぞれのＴＬＰがユーザデータのうちの２ＫＢ以下を含む、複数のＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰを送信する。この実施形態において、ホストインターフェース１２６は、バスブリッジ１２４を介した書き込みキャッシュ１０４への転送のために、ホストコンピュータ１１４から受信されたユーザデータをバッファする、２ＫＢの内部ＦＩＦＯバッファを含む。図２のバスブリッジ１２４のＦＩＦＯバッファ２０６も、ホストインターフェース１２６から受信されたユーザデータをバッファするための２ＫＢのバッファを含む。さらに、バスブリッジ１２４は、ホストインターフェース１２６をバスブリッジ１２４に結合するＰＣＩ−Ｘバス上で、アービトレーションを実行するＰＣＩ−Ｘアービタなどのアービタを含む。アービタは、ホストインターフェース１２６がＰＣＩ−Ｘバス上でバスブリッジ１２４に対して、アトミックであり、サイズが最小で１セクタ（すなわち、５１２バイト）であり、セクタサイズの倍数である、ＰＣＩ−Ｘ書き込みトランザクションを常に生成することを可能にするように構成される。フローはブロック７１８に進む。
【００６９】
ブロック７１８において、セカンダリバスブリッジ１２４Ｂは、セカンダリ書き込みキャッシュのミラー化されたコピー１０４Ａ−２内の宛先の書き込みキャッシュバッファ６０４のアドレスである、ＴＬＰヘッダ３００のアドレスにおいて指定されたセカンダリキャッシュメモリ１４４Ｂのアドレスに、ＴＬＰペイロードからのユーザデータを書き込む。セカンダリ書き込みキャッシュのミラー化されたコピー１０４Ａ−２内の宛先の書き込みキャッシュバッファ６０４は、ブロック７０４においてプライマリ書き込みキャッシュ１０４Ａ−１内で割り当てられた書き込みキャッシュバッファ１０４のミラー化された複製である。フローはブロック７２２に進む。
【００７０】
ブロック７２２において、いったんプライマリホストインターフェース１２６Ａが、ユーザデータの全てをプライマリバスブリッジ１２４Ａに転送し終わると、プライマリホストインターフェース１２６Ａは、プライマリＣＰＵ１０８Ａに割り込みをかける。フローはブロック７２４に進む。
【００７１】
ブロック７２４において、ブロック７２２において生成された割り込みに応答して、プライマリＣＰＵ１０８Ａは、（ブロック７０４においてシリアル番号およびＬＢＡが書き込まれなかった場合）ブロック７０４において割り当てられ、無効化されたプライマリディレクトリ１２２Ａ−１のディレクトリエントリ６０２に、シリアル番号およびＬＢＡを書き込み、次に、ブロック７０４においてクリアされた有効ビット６１４でもある、ブロック７１６において書き込まれたセクタに対応する有効ビット６１４を有効化する（すなわち、設定する）。一実施形態において、セカンダリＣＰＵ１０８Ｂは、有効ビット６１４を有効化する前に、図６のタイムスタンプまたはシーケンス番号６２２にも情報を格納する。タイムスタンプまたはシーケンス番号６２２は、ディスクアレイ１１６上の同じ論理ブロックアドレスに関するディレクトリ１２２内の重複する有効なエントリ６０２をフラッシュすることを避けるために使用され、重複する有効なエントリ６０２をフラッシュすることは、書き込みキャッシュバッファ６０４が、それら書き込みキャッシュバッファ６０４の次の使用の直前まで無効化されないので、タイムスタンプまたはシーケンス番号６２２が使用されなければ発生することがありうる。フローはブロック７２６に進む。
【００７２】
ブロック７２６において、プライマリＣＰＵ１０８Ａは、ブロック７２４において有効化されたプライマリディレクトリ１２２Ａ−１のエントリ６０２を、プライマリディレクトリのミラー化されたコピー１２２Ｂ−２内の対応するエントリ６０２にコピーするために、証明されたメモリ間転送を実行するようにプライマリバスブリッジ１２４Ａに命令する。具体的には、プライマリＣＰＵ１０８Ａは、図８のブロック１６１に関して詳細に説明されるように、証明されたメモリ間転送を実行するように、プライマリバスブリッジ１２４ＡのＤＭＡＣ２３８をプログラムする。一実施形態において、バスブリッジ１２４は、ブロック７１８において書き込まれたユーザデータをフラッシュするために、証明されたメモリ間転送データの送信が保証されるように構成される。フローはブロック７２８に進む。
【００７３】
ブロック７２８において、プライマリバスブリッジ１２４Ａは、ブロック７２６においてプライマリＣＰＵ１０８Ａによって要求され証明されたメモリ間コピー動作の完了を示すために、プライマリＣＰＵ１０８Ａに割り込みをかける。具体的には、プライマリバスブリッジ１２４Ａが、図８のブロック１６６に関して詳細に説明されるように、プライマリＣＰＵ１０８Ａに割り込みをかける。図８は、無効化の証明されたメモリ間コピーを実行するためのシステム１００の動作をより詳細に説明する。フローはブロック７３２に進む。
【００７４】
ブロック７３２において、ブロック７２８において生成され証明されたコピー完了割り込みに応答して、プライマリＣＰＵ１０８Ａは、Ｉ／Ｏ書き込み要求に関してホストコンピュータ１１４に正常終了状態を送信するように、プライマリホストインターフェース１２６Ａに命令する。引き続いて、適切なときに、プライマリＲＡＩＤコントローラ１０２Ａが、適切なディスクアレイ１１６にポステッド書き込みデータをフラッシュする。ブロック７３２においてフローが終了する。
【００７５】
ここで図８を参照すると、本発明の一実施形態による証明されたメモリ間転送動作を実行するためのシステム１００の動作を示すフローチャートが示される。上述のように、図１の太い黒矢印上の番号は、図８の同様に番号付けされたブロックに実質的に対応する。ブロック１６１においてフローが開始する。
【００７６】
ブロック１６１において、プライマリＣＰＵ１０８Ａが、プライマリキャッシュメモリ１４４Ａからセカンダリキャッシュメモリ１４４Ｂへの証明されたデータ転送を実行するように、プライマリバスブリッジ１２４Ａをプログラムする。一実施形態において、プライマリＣＰＵ１０８Ａは、スキャッタ／ギャザーリストのアドレスを用いて、ＤＭＡＣ２３８のＣＳＲ２０２をプログラムする。一実施形態において、スキャッタ／ギャザーリストは、プライマリキャッシュメモリ１４４Ａ内に配置される。別の実施形態において、スキャッタ／ギャザーリストは、図１に関して上述されたコードＲＡＭなどの、ＣＰＵ１０８Ａによって使用されるプログラムコードおよびデータを記憶するために使用されるＣＰＵ複合体１０８Ａのメモリ内に配置される。スキャッタ／ギャザーリストは、要素のリストを含む。各要素は、転送されるべきデータのメモリアドレスとデータの長さとを指定する。転送はミラー化された転送であるので、メモリアドレスは、プライマリキャッシュメモリ１４４Ａ内のデータの転送元アドレスを指定し、セカンダリキャッシュメモリ１４４Ｂ内のデータの宛先アドレスも指定する。一実施形態において、スキャッタ／ギャザーリストの要素は、転送元および宛元アドレスの両方を含む。スキャッタ／ギャザーリストの要素は、当該要素が、リスト内の最後の要素であるかどうかを示すフラグなどの制御情報も含む。制御情報は、スキャッタ／ギャザーリストによって記述されたメモリ間データ転送が、当該転送が成功裏に終了したことを示す受け渡し証明を必要とすることを、バスブリッジ１２４に知らせるために、メモリ間転送が証明された転送であるかどうかを示すフラグも含む。一実施形態において、プライマリＣＰＵ１０８Ａは、スキャッタ／ギャザーリストの最後の要素内の証明フラグを設定する。フローはブロック１６２に進む。
【００７７】
ブロック１６２において、プライマリバスブリッジ１２４Ａは、ブロック１６１においてプライマリＣＰＵ１０８Ａの命令によって指定されたデータを、プライマリキャッシュメモリ１４４Ａから読み込む。データは、図７のブロック７０６または７２６に関して説明されたようなディレクトリエントリ６０２であってよく、または証明されたやり方でおよびセカンダリＣＰＵ１０８Ｂによる関与なしに、プライマリＣＰＵ１０８Ａが、セカンダリキャッシュメモリ１４４Ｂに書き込むことを望む任意のその他のデータであってよい。フローはブロック１６３に進む。
【００７８】
ブロック１６３において、プライマリバスブリッジ１２４Ａは、ＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８上で、ＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰをセカンダリバスブリッジ１２４Ｂに送信する。具体的には、ＴＬＰは、図４Ａによるヘッダ４００を有し、設定されたＣＥＲＴＩＦＹフラグ４０６を有する。上で検討されたように、ブロック１６１においてプライマリＣＰＵ１０８Ａからプライマリバスブリッジ１２４Ａに発行された命令は、２つ以上の要素を有するスキャッタ／ギャザーリストを含むことができ、したがってデータの複数の不連続なチャンクを記述することができる。これは、ＲＡＩＤ５のパリティデータログなどの、（概して連続している）ディレクトリエントリ６０２以外のデータを転送するために、証明されたメモリ間転送が使用される場合に特に有益である。この場合、プライマリバスブリッジ１２４Ａは、複数のＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰ、すなわち、各それぞれのスキャッタ／ギャザーリストの要素によって指定された各データチャンクに対して、１つのＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰを送信し、最後のＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰヘッダ４００のみが、設定されたＣＥＲＴＩＦＹフラグ４０６を有する。さらに、プライマリバスブリッジ１２４Ａは、図２の証明タイマ２３６の実行を開始する。フローはブロック１６４に進む。
【００７９】
ブロック１６４において、セカンダリバスブリッジ１２４Ｂは、ブロック１６３において送信されたＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰを受信する。応答して、セカンダリバスブリッジ１２４Ｂは、ＴＬＰヘッダ４００において指定されたアドレスのセカンダリキャッシュメモリ１４４Ｂに、ＴＬＰペイロードデータ（例えば、ディレクトリエントリ６０２）を書き込む。フローはブロック１６５に進む。
【００８０】
ブロック１６５において、セカンダリバスブリッジ１２４Ｂは、ブロック１６４において受信されたＴＬＰヘッダ４００内のＣＥＲＴＩＦＹフラグ４０６が設定されていることを検出する。応答して、セカンダリバスブリッジ１２４Ｂは、ブロック１６４において受信されたメモリ書き込み要求ＴＬＰのペイロードデータが、セカンダリキャッシュメモリ１４４Ｂに成功裏に書き込まれたことを示すために、ＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８上でプライマリバスブリッジ１２４Ａに受け渡し証明を送信する。一実施形態において、受け渡し証明は、ＤＥＬＩＶＥＲＥＤフラグ４０８が設定された図４Ｂによるヘッダ４０１を有する、ＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰを含むが、上述のようにその他の実施形態も考えられる。フローは、判断ブロック８０２に進む。
【００８１】
判断ブロック８０２において、プライマリバスブリッジ１２４Ａは、証明タイマ２３６が時間切れになっているかどうかを判定する。一実施形態において、ＣＳＲ２０２は、割り込みの原因を判定するために、プライマリＣＰＵ１０８Ａが読み込む割り込み状態レジスタを含む。証明タイマ２３６が時間切れになっている場合、フローはブロック８０４に進み、証明タイマ２３６が時間切れになっていない場合、フローはブロック１６６に進む。
【００８２】
ブロック８０４において、プライマリバスブリッジ１２４Ａは、プライマリＣＰＵ１０８Ａに対するタイムアウトエラー割り込みを生成する。代替実施形態において、プライマリバスブリッジ１２４ＡではなくプライマリＣＰＵ１０８Ａが、証明されたメモリ間データ転送要求をタイムアウトに関して監視する機能を実行する。具体的には、ブロック１６１において、プライマリＣＰＵ１０８Ａが、プライマリバスブリッジ１２４Ａに証明されたメモリ間データ転送を実行するように命令した後で、プライマリＣＰＵ１０８Ａがタイマを始動する。ブロック８０２において、プライマリＣＰＵ１０８Ａのタイマが時間切れである場合、プライマリＣＰＵ１０８Ａは、タイムアウトに応答してエラー回復動作を実行する。一実施形態において、プライマリＣＰＵ１０８Ａは、動作を再試行することによってエラーを処理する。いずれの場合も、所定の回数の再試行の後で動作が失敗する場合、プライマリＲＡＩＤコントローラ１０２Ａが、フェイルオーバ動作を実行する、すなわち、故障したセカンダリＲＡＩＤコントローラ１０２Ｂに関するセカンダリディスクアレイ１１６Ｂの制御を引き継ぐ。ブロック８０４においてフローが終了する。
【００８３】
ブロック１６６において、プライマリバスブリッジ１２４Ａは、ブロック１６５においてセカンダリバスブリッジ１２４Ｂによって送信された受け渡し証明を受信する。応答して、プライマリバスブリッジ１２４Ａは、ブロック１６１において要求され証明されたメモリ間転送の成功裏の完了を示すために、プライマリＣＰＵ１０８Ａに対する割り込みを生成する。一実施形態において、ＣＳＲ２０２は、割り込みの原因を判定するために、プライマリＣＰＵ１０８Ａが読み込む割り込み状態レジスタを含む。ブロック１６６においてフローが終了する。
【００８４】
上述のように、図８の証明されたメモリ間データ転送は、図７において説明されたように書き込みキャッシュディレクトリ６０２の情報を転送するために使用されることができるが、証明されたメモリ間転送方法は、その他のデータを転送するために使用されてもよい。例えば、証明されたメモリ間転送方法の別の使用は、プライマリキャッシュメモリ１４４Ａからセカンダリキャッシュメモリ１４４Ｂに、冗長なＲＡＩＤ５パリティデータログを転送することである。しかし、証明されたメモリ間転送方法の使用は、本明細書において説明されたデータ転送の種類に限定されず、セカンダリＣＰＵ１０８Ｂが当該データ転送に関与させられるかまたは当該データ転送について知ることなしに、データが、セカンダリキャッシュメモリ１４４Ｂに成功裏に転送されたことの保証を、プライマリＣＰＵ１０８Ａがそのメモリ間転送に対して要求する、任意のデータのメモリ間転送を行うために使用されることができる。
【００８５】
上述のように、ＰＣＩ−Ｅｘｐｒｅｓｓは、ローカルバスとしてのその系統のために、ロードストアアーキテクチャを提供する。その結果、ＰＣＩ−Ｅｘｐｒｅｓｓによって提供されるデータ転送プリミティブは、それらのそれぞれのアドレス空間を対象とする、異なるメモリ、Ｉ／Ｏ、構成、およびメッセージトランザクションタイプのみを含む。具体的には、メモリ書き込みトランザクションタイプは、非ポステッド転送タイプを含まない。したがって、メモリ書き込みトランザクションのリクエスタは、データ転送の成功または失敗を示すための完了を受信しない。さらに、Ｉ／Ｏ書き込みトランザクションタイプは、非ポステッドＩ／Ｏ書き込み転送タイプを提供するが、非ポステッドＩ／Ｏ書き込みトランザクションタイプは、いくつかの理由で、ＲＡＩＤコントローラの大容量高速データ転送の要件に対する実際的な解決策を提供しない。第１に、Ｉ／Ｏ書き込み要求は、メモリアドレス空間ではなくＩ／Ｏアドレス空間を対象とする。第２に、Ｉ／Ｏ書き込み要求は、たった４バイトの最大長しか認めない。第３に、Ｉ／Ｏ書き込み要求は、Ｉ／Ｏ空間をアドレス指定するための３２アドレスビットに制限される。最後に、たとえ非ポステッドＩ／Ｏ書き込み要求が、メモリデータ転送のリクエスタに送信されるべき完了パケットを提供するとしても、完了パケットの受信時のリクエスタに対する割り込みの自動生成のための手段がなく、それどころか、宛先ノードにおいてＣＰＵ上で実行されるより高レベルのソフトウェアによる関与を要求する、ＭＳＩなどの別個の異なる割り込みが、宛先ノードによって生成されなければならない。しかし、有利なことに、本明細書において説明されたのは、宛先バスブリッジ１２４が、宛先ＣＰＵ１０８を関与させることなしに、受け渡し証明を自動的に送信し、かつ要求元ＣＰＵ１０８が、宛先ＣＰＵ１０８を関与させることなしに、データの成功裏の書き込みを示すための証明割り込みを受ける、ＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８を介して証明されたメモリ間転送を実行するＲＡＩＤコントローラシステム１００である。
【００８６】
上述のように、米国特許出願公開第１１／２７２３４０号に記載されたシステムは、ディレクトリ１２２の構造、およびキャッシュメモリ１４４内でのそのディレクトリ１２２の位置の情報を持つことを、バスブリッジ１２４に要求する。有利なことに、本明細書において説明された本発明のシステム１００の実施形態は、バスブリッジ１２４が、ディレクトリ１２２の構造および位置に関して知ることはできないが、それでもやはりミラー化ポステッド書き込み動作の性能に対するＣＰＵ１０８の関与の量を減らすことを可能にする。特に、ディレクトリエントリ６０２の構造が、バスブリッジ１２４の修正を必要とせずに変更されることができる。その代わりに、ＣＰＵ１０８上で実行されるソフトウェアが、ディレクトリエントリ６０２の構造の変更に対応するために変更されることができる。
【００８７】
ここで図９を参照すると、本発明の代替実施形態による証明されたメモリ間転送動作を実行するためのシステム１００の動作を示すフローチャートが示される。図９のフローチャートは、図４Ａの修正されたＴＬＰヘッダ４００を要求するのではなく、データを転送するために通常のＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰが使用されることができる実施形態を示す。図９のフローチャートは、図８のフローチャートに類似しているが、図９のブロック９６３が、図８のブロック１６３を置き換え、図９のブロック９６５が、図８のブロック１６５を置き換える。
【００８８】
ブロック９６３において、プライマリバスブリッジ１２４Ａは、ブロック１６３と同様に、ＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８上でセカンダリバスブリッジ１２４ＢにＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求ＴＬＰを送信する。しかし、ＴＬＰは、図３による通常のＰＣＩ−Ｅｘｐｒｅｓｓヘッダ３００を有するが、アドレスフィールドにおいて指定されるメモリアドレスが、所定のＣＥＲＴＩＦＹアドレス範囲内である。一実施形態において、ＣＥＲＴＩＦＹアドレス範囲は、起動時に、それぞれのＣＰＵ１０８によってＣＳＲ２０２にプログラムされる。一実施形態において、セカンダリＲＡＩＤコントローラ１０２Ｂに関するＣＥＲＴＩＦＹアドレス範囲は、プライマリディレクトリのミラー化されたコピー１２２Ｂ−２によって占められるメモリ領域であり、プライマリＲＡＩＤコントローラ１０２Ａに関するＣＥＲＴＩＦＹアドレス範囲は、セカンダリディレクトリのミラー化されたコピー１２２Ａ−２によって占められるメモリ領域である。
【００８９】
ブロック９６５において、セカンダリバスブリッジ１２４Ｂは、ＴＬＰヘッダ３００のアドレスが、ＣＥＲＴＩＦＹアドレス範囲内にある場合に、セカンダリバスブリッジ１２４Ｂが、ブロック１６４において、セカンダリキャッシュメモリ１４４Ｂにペイロードデータを成功裏に書き込んだ後で、プライマリバスブリッジ１２４ＡにＰＣＩ−Ｅｘｐｒｅｓｓリンク１１８上で受け渡し証明を送信しなければならないことを認識するように構成される。
【００９０】
本発明ならびに本発明の目的、特徴、および利点が、詳細に説明されたが、その他の実施形態は、本発明によって包含される。例えば、証明されたメモリ間転送のデータペイロードが、ディレクトリエントリ６０２の情報である実施形態が説明されたが、その他のデータが、本明細書において説明されたように転送されることができる。
【００９１】
最後に、当業者は、特許請求の範囲によって規定される本発明の精神および範囲を逸脱することなしに、本発明の同じ目的を成し遂げるために、その他の構造を設計または修正するための基礎として、開示された概念および特定の実施形態を、当業者が容易に使用できることを認識されたい。
【図面の簡単な説明】
【００９２】
【図１】本発明によるアクティブ−アクティブ冗長フォールトトレラントＲＡＩＤシステムを示す構成図である。
【図２】本発明による図１のバスブリッジをより詳細に示す構成図である。
【図３】従来技術のＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求トランザクションレイヤパケット（ＴＬＰ）ヘッダを示す構成図である。
【図４Ａ】本発明による、そのデータの転送が証明されるデータを転送するための修正されたＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求トランザクションレイヤパケット（ＴＬＰ）ヘッダを示す構成図である。
【図４Ｂ】本発明による、受け渡し証明として使用されるための修正されたＰＣＩ−Ｅｘｐｒｅｓｓメモリ書き込み要求トランザクションレイヤパケット（ＴＬＰ）ヘッダを示す構成図である。
【図５】本発明による図１のシステムの２つのＲＡＩＤコントローラ内のミラー化されたキャッシュメモリの構成を示す構成図である。
【図６】本発明による図１の書き込みキャッシュおよびディレクトリの構成を示す構成図である。
【図７】本発明の一実施形態によるミラー化ポステッド書き込み動作を実行するためのシステムの動作を示すフローチャートである。
【図８】本発明の一実施形態による証明されたメモリ間転送動作を実行するためのシステムの動作を示すフローチャートである。
【図９】本発明の代替実施形態による証明されたメモリ間転送動作を実行するためのシステムの動作を示すフローチャートである。
【図１】
2008544421.tif 000009
【図２】
2008544421.tif 000010
【図３】
2008544421.tif 000011
【図４Ａ】
2008544421.tif 000012
【図４Ｂ】
2008544421.tif 000013
【図５】
2008544421.tif 000014
【図６】
2008544421.tif 000015
【図７】
2008544421.tif 000016
【図８】
2008544421.tif 000017
【図９】
2008544421.tif 000018
【国際調査報告】
2008544421.tif 000019
2008544421.tif 000020