(57)【要約】開示される本発明の実施形態は、ＳＡＴＡ規格に準拠するように構成され、１つ以上のホストとＳＡＴＡデバイスとの間の通信をもたらす通信システムを含む。本発明の一実施形態による通信システムは、１つ以上のホストからのコマンドおよびステータスに応答するコマンドステータスマネージャ（ＣＳＭ）と、１つ以上のホストからのデータに応答して、コマンドおよびステータスのデータとは実質的に別々に、データをバッファリングするためのデータマネージャ（ＤＭ）とを有する、マルチポートブリッジデバイスを含む。
2010514063.tif 000002
【特許請求の範囲】
【請求項１】
ＳＡＴＡ規格に準拠するように構成され、１つ以上のホストとＳＡＴＡデバイスとの間の通信をもたらす通信システムであって、
マルチポートブリッジデバイス
を備え、
該マルチポートブリッジデバイスは、
１つ以上のホストからのコマンドおよびステータスに応答するコマンドステータスマネージャ（ＣＳＭ）と、
コマンドおよびステータスのデータとは実質的に別々に、データをバッファリングするために、１つ以上のホストからデータに応答するデータマネージャ（ＤＭ）と
を含む、
システム。
【請求項２】
前記ＣＳＭに連結され、前記１つ以上のホストの第１のホストからのコマンドおよびステータスに応答する第１の接続プロトコルマネージャ（ＣＰＭ）と、該ＣＳＭに連結され、該１つ以上のホストの第２のホストからのコマンドおよびステータスに応答する第２のＣＰＭとをさらに含む、請求項１に記載の通信システム。
【請求項３】
前記第１のＣＰＭと、コマンド、データ、およびステータスを受信するために、前記第１のホストとの間に連結される第１のＳＡＳポートをさらに含む、請求項２に記載の通信システム。
【請求項４】
前記第２のＣＰＭと、コマンド、データ、およびステータスを受信するために、前記第２のホストとの間に連結される第２のＳＡＳポートをさらに含む、請求項３に記載の通信システム。
【請求項５】
ＳＡＴＡデバイスと前記１つ以上のホストとの間のステータス、コマンド、およびデータの転送をもたらすために、前記ＣＳＭおよびＤＭに連結されるドライブマネージャ（ＤＲＶＭ）をさらに含む、請求項４に記載の通信システム。
【請求項６】
前記ＣＳＭは、第１の受信バッファと、第２の受信バッファとをさらに含み、該第１のバッファは、前記第１のＣＰＭに連結され、該第２の受信バッファは、前記第２のＣＰＭに連結される、請求項５に記載の通信システム。
【請求項７】
前記ＣＳＭは、コマンドを処理するために、前記第１および第２の受信バッファに連結される、コマンド処理ステートマシンをさらに含む、請求項６に記載の通信システム。
【請求項８】
前記ＣＳＭは、前記１つ以上のホストからのコマンドを受信および格納するために、前記コマンド処理ステートマシンに連結されるコマンドバッファをさらに含む、請求項７に記載の通信システム。
【請求項９】
前記ＣＳＭは、前記１つ以上のホストからのコマンドと関連付けられる属性を受信および格納するために、前記コマンド処理ステートマシンに連結されるコマンド属性テーブルをさらに含む、請求項８に記載の通信システム。
【請求項１０】
前記ＣＳＭは、前記１つ以上のホストから受信した前記コマンドを格納するために、前記コマンド処理ステートマシンによってアクセスされるコマンド保留テーブルをさらに含む、請求項９に記載の通信システム。
【請求項１１】
前記コマンド保留テーブルは、前記コマンドが到着すると、前記１つ以上のホストから受信したコマンドを格納するためのキューまたはキューポインタである、請求項１０に記載の通信システム。
【請求項１２】
前記コマンド保留テーブルは、先着順に基づくリンクリストである、請求項１０に記載の通信システム。
【請求項１３】
前記コマンド保留テーブルは、優先度順にコマンドを優先させるために使用される優先順位リストである、請求項１０に記載の通信システム。
【請求項１４】
前記コマンド保留テーブルは、コマンドポインタのリンクリストを有する第１のリストと、優先順位リストであり、他の受信コマンドよりも高優先レベルに基づく順序で実行可能な優先コマンドのリストを含む第２のリストとを含む、請求項１０に記載の通信システム。
【請求項１５】
前記第２のリストは、システムに連結されるホストに対し透過的なままで実行されるコマンドの優先度を変化させる、請求項１４に記載の通信システム。
【請求項１６】
前記ＣＳＭは、前記１つ以上のホストから前記ＳＡＴＡデバイスにコマンドを発行させるために、前記コマンド保留テーブルに連結されるコマンド発行ステートマシンをさらに含む、請求項１０に記載の通信システム。
【請求項１７】
前記コマンド発行ステートマシンは、複数のイニシエータに、同一または異なるＳＡＳポートに対する他のイニシエータコマンドの完了前に、ＳＡＳポートに対してコマンドを送信させる、請求項１０に記載の通信システム。
【請求項１８】
前記コマンド発行ステートマシンは、前記ＳＡＴＡデバイスに送信されるコマンドの数として、最大パフォーマンスのコマンドの数を使用する、請求項１７に記載の通信システム。
【請求項１９】
前記ＣＳＭは、前記コマンド発行ステートマシンによって、前記ＳＡＴＡドライブに発行されることが判断されるコマンドをキューに入れるために、該コマンド発行ステートマシンに連結されるドライブキューテーブルをさらに含む、請求項１７に記載の通信システム。
【請求項２０】
前記ドライブキューテーブルは、行と列とを含み、
「有効な」ビット列は、関連付けられた行のコマンドの有効性に関する情報を含み、
コマンドバッファへのポインタ列は、それぞれ、前記コマンドバッファ内の場所と、前記コマンド属性テーブル内の場所とを指し示す関連付けられたインデックスのためのポインタを含み、
イニシエータ番号列は、イニシエータ番号を含み、それぞれ、インデックスと関連付けられ、
イニシエータタグ列は、イニシエータによってシステムに最初に送信されるタグを含む、請求項１７に記載の通信システム。
【請求項２１】
前記ＣＳＭは、前記第１のＣＰＭに連結される第１の受信ステータスマネージャをさらに含む、請求項１９に記載の通信システム。
【請求項２２】
前記ＣＳＭは、前記第２のＣＰＭに連結される第２の受信ステータスマネージャをさらに含む、請求項２１に記載の通信システム。
【請求項２３】
前記ＣＳＭは、前記ＳＡＴＡデバイスからステータスを受信し、該受信したステータスを前記第１または第２のステータスマネージャに提供するように連結される受信ステータスステートマシンをさらに含む、請求項２２に記載の通信システム。
【請求項２４】
前記ＣＳＭは、前記１つ以上のホストから受信したコマンドをカウントするために、前記コマンドプロセッサステートマシンに連結されるコマンドカウンタをさらに含む、請求項２３に記載の通信システム。
【請求項２５】
前記ＣＳＭは、コマンドへのポインタの可用性に関する情報を格納するために、前記コマンドプロセッサステートマシンおよび前記第１および第２のステータスマネージャに連結される未使用キューポインタ場所をさらに含む、請求項２４に記載の通信システム。
【請求項２６】
前記ＣＳＭは、前記コマンド属性テーブルに連結され、前記ドライブキューテーブルにさらに連結され、前記テーブルを検索するために、前記第１および第２の受信ステータスマネージャにさらに連結されるサーチエンジンをさらに含む、請求項２５に記載の通信システム。
【請求項２７】
前記ＤＭは、データの少なくとも１つのフレームを格納するために、データバッファを含む、請求項５に記載の通信システム。
【請求項２８】
前記ＤＭは、ＳＡＴＡデバイスから受信した制御ＦＩＳを格納するために、制御ＦＩＳバッファを含む、請求項２７に記載の通信システム。
【請求項２９】
前記１つ以上のホストは、ＳＡＳリンクを通して、前記ブリッジデバイスに連結されるイニシエータである、請求項４に記載の通信システム。
【請求項３０】
前記第１のＳＡＳポートは、第１のＳＡＳリンクを通して、前記イニシエータ間の情報に応答し、ＳＡＴＡドライブから該イニシエータに情報を転送するように動作する第１のＳＡＳエンジンを含む、請求項５に記載の通信システム。
【請求項３１】
前記第２のＳＡＳポートは、第２のＳＡＳリンクを通して、前記イニシエータ間の情報に応答し、ＳＡＴＡドライブから該イニシエータに情報を転送するように動作する第２のＳＡＳエンジンを含む、請求項３０に記載の通信システム。
【請求項３２】
前記第１および第２のＳＡＳエンジンはそれぞれ、その個々のＳＡＳリンクとの接続をもたらすために、ＳＭＰバッファとステートマシンとを含む、請求項３１に記載の通信システム。
【請求項３３】
種々のタスクを行うために、前記デバイスに連結されるマイクロプロセッサをさらに含む、請求項３２に記載の通信システム。
【請求項３４】
前記デバイスに連結される汎用入力／出力（ＧＰＩＯ）をさらに含む、請求項３３に記載の通信システム。
【請求項３５】
前記デバイスは、ＳＡＴＡデバイスを制御するためのＳＴＰターゲットまたはＳＭＰターゲットである端末デバイスである、請求項１に記載の通信システム。
【請求項３６】
前記コマンド発行ステートマシンは、ホストから前記デバイスへのタグの割り当てを動的に生じさせる、請求項１６に記載の通信システム。
【請求項３７】
ＳＡＴＡデバイスに送信されるコマンドの数は、前記システムの最大パフォーマンスを示す閾値数に制限される、請求項１に記載の通信システム。
【請求項３８】
イニシエータからＳＡＴＡデバイスに保留コマンドを転送する方法であって、
保留コマンドが待機コマンドであるかどうかを判断するステップと、
該保留コマンドが待機コマンドであるという判断に応じて、該ＳＡＴＡデバイスがキューモードにあるかどうかを判断するステップと、
該保留コマンドが待機コマンドであるという判断に応じて、ドライブキューテーブル内の場所が利用可能であるかどうかを判断するステップと、
該テーブル内の該場所が利用可能であると判断される場合、該待機コマンドを該テーブルに格納するステップと、
該格納された待機コマンドを該ＳＡＴＡデバイスに転送するステップと
を包含する、方法。
【請求項３９】
前記保留コマンドが待機コマンドであるという判断に応じて、待機モードを設定する、請求項３８に記載の転送方法。
【請求項４０】
前記保留コマンドが非待機コマンドであるという判断に応じて、非待機モードを設定する、請求項３８に記載の転送方法。
【請求項４１】
１つ以上のイニシエータから、ＳＡＴＡデバイス対象のコマンドを転送する方法であって、
コマンドを受信するステップと、
該コマンドが格納され得る場所を指し示すための未使用ポインタを判断するステップと、
該未使用ポインタを使用して、該コマンドが格納される記憶場所を特定するステップと、
該ポインタによって特定される該記憶場所内に、該コマンドを格納するステップと、
該ＳＡＴＡデバイスに転送するために、該格納されたコマンドの優先順位を決めるステップと、
該優先コマンドを該ＳＡＴＡデバイスに転送するステップと
を包含する、方法。
【請求項４２】
ＳＡＴＡドライブのステータスをホストに転送する方法であって、
該ＳＡＴＡドライブからステータスを受信するステップと、
現在のモードが待機モードであるかどうか判断するステップと、
該モードが待機モードであると判断される場合、該受信したステータスを復号化し、該復号化されたステータスに従って、保持レジスタ内のビットを設定し、該モードが待機モードではないと判断される場合、該受信したステータスを送信するステップと、
手動ステータス要求がなされたかどうかを判断するステップと、
手動ステータス要求がなされたと判断される場合、該受信したステータスを手動で送信するステップと、
手動ステータス要求がなされていないと判断される場合、該モードがキューモードであるかどうかを判断するステップと、
該モードがキューモードではないと判断される場合、該受信したステータスを送信するステップと、
ドライブキューテーブルを更新するステップと、
未使用キューポインタを更新するステップと、
コマンド属性テーブルを更新するステップと
を包含する、方法。
【請求項４３】
手動ステータス要求がなされておらず、前記モードが待機であるという判断に応じて、コマンドステータスが利用可能であるかどうか判断され、
該コマンドステータスが利用可能ではないと判断される場合、前記ドライブからステータスを受信するステップを継続し、
該コマンドステータスが利用可能であると判断される場合、最優先ステータスをイニシエータに送信し、
利用可能である場合、次の保留ステータスを反映するために、ドライブキューテーブルを更新するステップをさらに含む、請求項４２に記載のステータスを転送する方法。
【請求項４４】
コマンド属性テーブルを更新し、未使用キューテーブルを更新するステップをさらに含む、請求項４３に記載のステータスを転送する方法。
【請求項４５】
メモリシステムであって、
複数のイニシエータと、
ＳＡＴＡドライブと、
該イニシエータと該ＳＡＴＡドライブとの間に連結され、少なくとも２つのＳＡＳポートを有し、該イニシエータと該ＳＡＴＡドライブとの間のデータ、コマンド、およびステータスフローを実質的に別々にバッファリングするように動作するターゲットと
を備える、システム。
【請求項４６】
ＳＡＳ−ＳＡＴＡ変換デバイスであって、
１つ以上のホストからのコマンドおよびステータスに応答するコマンドステータスマネージャ（ＣＳＭ）と、
１つ以上のホストからデータに応答するデータマネージャ（ＤＭ）と
を含み、
データ、コマンド、およびステータスは、別々に管理されることにより、システムパフォーマンスを実質的に向上させる、
デバイス。
【請求項４７】
前記ＣＳＭに連結され、前記１つ以上のホストの第１のホストからのコマンドおよびステータスに応答する第１の接続プロトコルマネージャ（ＣＰＭ）と、該ＣＳＭに連結され、該１つ以上のホストの第２のホストからのコマンドおよびステータスに応答する第２のＣＰＭとをさらに含む、請求項４６に記載の通信システム。
【請求項４８】
コマンド、データ、およびステータスを受信するために、前記第１のＣＰＭと前記第１のホストとの間に連結される第１のＳＡＳポートをさらに含む、請求項４７に記載の通信システム。
【請求項４９】
コマンド、データ、およびステータスを受信するために、前記第２のＣＰＭと前記第２のホストとの間に連結される第２のＳＡＳポートをさらに含む、請求項４８に記載の通信システム。
【請求項５０】
ＳＡＴＡデバイスと前記１つ以上のホストとの間のステータス、コマンド、およびデータの転送をもたらすために、前記ＣＳＭおよびＤＭに連結されるドライブマネージャ（ＤＲＶＭ）をさらに含む、請求項４９に記載の通信システム。
【請求項５１】
前記ＣＳＭは、第１の受信バッファと、第２の受信バッファとをさらに含み、該第１のバッファは、前記第１のＣＰＭに連結され、該第２の受信バッファは、前記第２のＣＰＭに連結される、請求項５０に記載の通信システム。
【請求項５２】
前記ＣＳＭは、コマンドを処理するために、前記第１および第２の受信バッファに連結されるコマンド処理ステートマシンをさらに含む、請求項５１に記載の通信システム。
【請求項５３】
前記ＣＳＭは、前記１つ以上のホストからのコマンドを受信および格納するために、前記コマンド処理ステートマシンに連結されるコマンドバッファをさらに含む、請求項５２に記載の通信システム。
【請求項５４】
前記ＣＳＭは、前記１つ以上のホストからのコマンドと関連付けられる属性を受信および格納するために、前記コマンド処理ステートマシンに連結されるコマンド属性テーブルをさらに含む、請求項５３に記載の通信システム。
【請求項５５】
前記ＣＳＭは、前記１つ以上のホストから受信した前記コマンドを格納するために、前記コマンド処理ステートマシンによってアクセスされるコマンド保留テーブルをさらに含む、請求項５４に記載の通信システム。
【請求項５６】
前記コマンド保留テーブルは、前記コマンドが到着すると、前記１つ以上のホストから受信したコマンドのポインタを格納またはキューに入れるためのキューである、請求項５５に記載の通信システム。
【請求項５７】
前記コマンド保留テーブルは、先着順に基づくリンクリストである、請求項５６に記載の通信システム。
【請求項５８】
前記コマンド保留テーブルは、優先度順にコマンドを優先させるために使用される優先順位リストである、請求項５７に記載の通信システム。
【請求項５９】
前記コマンド保留テーブルは、コマンドポインタのリンクリストを有する第１のリストと、優先順位リストであり、他の受信コマンドよりも高優先レベルに基づく順序で実行可能な優先コマンドのリストを含む第２のリストとを含む、請求項５８に記載の通信システム。
【請求項６０】
前記第２のリストは、システムに連結されるホストに対し透過的なままで、実行されるコマンドの優先度を変化させる、請求項５９に記載の通信システム。
【請求項６１】
前記ＣＳＭは、前記１つ以上のホストから前記ＳＡＴＡデバイスにコマンドを発行させるために、前記コマンド保留テーブルに連結されるコマンド発行ステートマシンをさらに含む、請求項６０に記載の通信システム。
【請求項６２】
前記コマンド発行ステートマシンは、複数のイニシエータに、同一または異なるＳＡＳポートに対する他のイニシエータコマンドの完了前に、ＳＡＳポートにコマンドを送信させる、請求項６１に記載の通信システム。
【請求項６３】
前記コマンド発行ステートマシンは、前記ＳＡＴＡデバイスに送信されるコマンドの数として、最大パフォーマンスのコマンドの数を使用する、請求項６２に記載の通信システム。
【請求項６４】
前記ＣＳＭは、前記コマンド発行ステートマシンによって、前記ＳＡＴＡドライブに発行されることが判断されるコマンドをキューに入れるために、該コマンド発行ステートマシンに連結されるドライブキューテーブルをさらに含む、請求項６３に記載の通信システム。
【請求項６５】
前記ドライブキューテーブルは、行と列とを含み、
「有効な」ビット列は、関連付けられた行のコマンドの有効性に関する情報を含み、
コマンドバッファへのポインタ列は、それぞれ、前記コマンドバッファ内の場所と、前記コマンド属性テーブル内の場所とを指し示す、関連付けられたインデックスのためのポインタを含み、
イニシエータ番号列は、イニシエータ番号を含み、それぞれ、インデックスと関連付けられ、
イニシエータタグ列は、イニシエータによってシステムに最初に送信されるタグを含む、請求項６４に記載の通信システム。
【請求項６６】
前記ＣＳＭは、前記第１のＣＰＭに連結される第１の受信ステータスマネージャをさらに含む、請求項６５に記載の通信システム。
【請求項６７】
前記ＣＳＭは、前記第２のＣＰＭに連結される第２の受信ステータスマネージャをさらに含む、請求項６６に記載の通信システム。
【請求項６８】
前記ＣＳＭは、前記ＳＡＴＡデバイスからステータスを受信し、該受信したステータスを前記第１または第２のステータスマネージャに提供するように連結される受信ステータスステートマシンをさらに含む、請求項６７に記載の通信システム。
【請求項６９】
前記ＣＳＭは、前記１つ以上のホストから受信したコマンドをカウントするために、前記コマンドプロセッサステートマシンに連結されるコマンドカウンタをさらに含む、請求項６８に記載の通信システム。
【請求項７０】
前記ＣＳＭは、コマンドへのポインタの可用性に関する情報を格納するために、前記コマンドプロセッサステートマシンおよび前記第１および第２のステータスマネージャに連結される未使用キューポインタ場所をさらに含む、請求項６９に記載の通信システム。
【請求項７１】
前記ＣＳＭは、前記コマンド属性テーブルと、前記ドライブキューテーブルと、前記テーブルを検索するために、前記第１および第２の受信ステータスマネージャとに連結されるサーチエンジンをさらに含む、請求項７０に記載の通信システム。
【請求項７２】
前記ＤＭは、データの少なくとも１つのフレームを格納するために、データバッファを含む、請求項５０に記載の通信システム。
【請求項７３】
前記ＤＭは、ＳＡＴＡデバイスから受信した制御ＦＩＳを格納するために、制御ＦＩＳバッファを含む、請求項７２に記載の通信システム。
【請求項７４】
前記１つ以上のホストは、ＳＡＳリンクを通して、前記ブリッジデバイスに連結されるイニシエータである、請求項７３に記載の通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
（発明の分野）
本発明は、概して、シリアルアドバンストテクノロジーアタッチメント（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ  ＡＴＡ；ＳＡＴＡ）／Ｈｉｇｈ  Ｓｐｅｅｄ  Ｓｅｒｉａｌｉｚｅｄ  ＡＴ  Ａｔｔａｃｈｍｅｎｔおよび／またはシリアルアタッチトスモールコンピュータシステムインターフェース（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ；ＳＣＳＩ、ＳＡＳ）規格に準拠して、ホストにデバイスとの通信を行わせる大容量メモリシステムに関し、より具体的には、ＳＡＳおよびＳＡＴＡ接続のブリッジングに関する。
【背景技術】
【０００２】
（ＳＡＴＡプロトコルの概要）
種々のアプリケーションのための大容量メモリシステムの必要性に伴い、ここ数１０年において、その使用のフレキシビリティを向上させることを目指して、大容量メモリシステムによる通信を規格化する必要性が生じている。
【０００３】
ＳＡＴＡは、大容量記憶デバイスのパラレルＡｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ（ＡＴＡ）アタッチメントの代わりとなる高速シリアルリンクである。採用されるシリアルリンクは、当業者には既知のギガビット技術と、８ｂ／１０ｂ符号化とを利用するポイントツーポイント高速差動リンクである。ＳＡＴＡプロトコルは、Ｏｐｅｎ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ（ＯＳＩ）Ｒｅｆｅｒｅｎｃｅ  Ｍｏｄｅｌと類似の階層通信モデルに基づく。概要は、以下に提示される。詳細は、参照することによって本明細書に組み込まれ、２００５年１０月２７日付刊行物「Ｓｅｒｉａｌ  ＡＴＡ：Ｈｉｇｈ  Ｓｐｅｅｄ  Ｓｅｒｉａｌｉｚｅｄ  ＡＴＡ  Ａｔｔａｃｈｍｅｎｔ」または「Ｓｅｒｉａｌ  ＡＴＡ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｏｒｇａｎｉｚａｔｉｏｎ：Ｓｅｒｉａｌ  ＡＴＡ」  Ｒｅｖｉｓｉｏｎｓ２．５、および２００２年１０月１６日付刊行物「Ｓｅｒｉａｌ  ＡＴＡ  ＩＩ：Ｅｘｔｅｎｓｉｏｎｓ  ｔｏ  Ｓｅｒｉａｌ  ＡＴＡ  １．０」Ｒｅｖｉｓｉｏｎ２．５に提供され、両方とも、Ｓｅｒｉａｌ  ＡＴＡワークグループのウェブサイトｗｗｗ．ｓｅｒｉａｌａｔａ．ｏｒｇから現在利用可能である、ＳＡＴＡ規格または仕様を参照されたい。
【０００４】
ＳＡＴＡプロトコルでは、プロトコルの各層は、その相手側と直接または間接的に通信する。シリアルＡＴＡリンクは、既知の規格に従うプロトコルによって規定されており、４つの通信層、すなわち、物理レベルで通信を行うための物理層、リンク層、トランスポート層、およびコマンド層として称される場合もあるアプリケーション層を有する。送信器および受信器は、直接相互に後の層と通信することはできず、これらの層は、他の応答する層に到達する前に、システムの他の層を通り抜けなければならない。例えば、送信器の物理層が受信器のトランスポート層と通信するためには、最初にリンク層を通って送信器のトランスポート層およびアプリケーション層、その後、シリアルＡＴＡリンクを通って受信器のアプリケーション層に進み、最後に、受信器のトランスポート層に到達しなければならない。
【０００５】
通信または交換の基本単位はフレームである。フレームは、フレーム開始部（ＳＯＦ）と、フレーム終了部（ＥＯＦ）とから構成され、ＳＡＴＡおよびＳＡＳ仕様に従って、異なるデリミタである。ＳＡＴＡでは、ＳＴＰは、フレーム情報構造（ＦＩＳ）、ＦＩＳのコンテンツにわたって計算されるＣｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋｓｕｍ（ＣＲＣ）、およびフレーム終了部（ＥＯＦ）プリミティブを備える。シリアルＡＴＡ機関は、フレームの定義が提供される仕様を規定しており、それは、本文書全体にわたって使用されることを意図する。プリミティブは、シリアルラインのステータスを制御および提供するために用いられるダブルワード（Ｄｗｏｒｄ）エンティティである。シリアルＡＴＡ機関は、許可されるプリミティブの定義が提供される仕様を規定しており、それは、本文書全体にわたって使用されることを意図する。
【０００６】
図１は、フレーム３０の例を示す。フレームは、図１では、ＳＯＦプリミティブ３０ａで開始し、次に、第１のＦＩＳコンテンツ３０ｂ、次に、送信器が利用可能なデータを有しないことを示すＨＯＬＤプリミティブ３０ｃ、次に、第２のＦＩＳコンテンツ３０ｄ、次に、ＨＯＬＤプリミティブの受信を通知するために送信され、受信機バッファが「レディ」状態ではないことを示し、受信機によって送信されるＨＯＬＤＡプリミティブ３０ｅ、次に、ＣＲＣ３０ｆ、およびＥＯＦプリミティブ３０ｇが続く。
【０００７】
フレーム３０は、図１では、フロー制御のために用いられる２つのプリミティブであるＨＯＬＤおよびＨＯＬＤＡプリミティブを含む。ＨＯＬＤプリミティブは、ＦＩＳコンテンツを送信または受信できないことを示す。ＨＯＬＤＡプリミティブは、ＨＯＬＤプリミティブの受信を通知するために送信される。例えば、受信ノードが、そのバッファがほぼフルであることを検出すると、ＨＯＬＤプリミティブを送信ノードに送信し、送信機ノードを停止するように要求し、バッファがさらにデータを受信するためにレディ状態になると、受信ノードは、ＨＯＬＤプリミティブの送信を停止するであろう。送信ノードは、ＨＯＬＤプリミティブの受信を通知するためにＨＯＬＤＡプリミティブを送信する。ＨＯＬＤＡプリミティブが受信されるまで、受信ノードは、データの受信を継続する。バッファのオーバーランを防止するために、ＳＡＴＡプロトコルは、ＨＯＬＤプリミティブを送信するノードとＨＯＬＤＡプリミティブを受信するノードとの間に２０Ｄｗｏｒｄｓの最大遅延を必要とする。
【０００８】
いくつかの異なるフレームタイプがある。例えば、Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ（ＤＭＡ）を介してデータを送信するために、ＤＭＡセットアップＦＩＳとして既知のフレームが利用され、次に、ＤＭＡデータＦＩＳが続く。概して、３つのタイプのＦＩＳ構造があり、１つは、コマンド用、１つは、転送のセットアップ用、およびもう１つは、転送に関連するデータ用である。各フレーム構造は、異なった目的で用いられる。コマンドタイプのフレームは、コマンドを実行するために送信され、セットアップフレームは、コマンドのデータ転送フェーズを準備するために用いられ、データフレームは、データを転送するために用いられる。
【０００９】
「ＳＡＴＡドライブ」は、本明細書で使用されるように、ドライブ間で情報を転送するためのＳＡＴＡ規格に準拠するメディアまたはディスクドライブを指す。ドライブと、そこに連結されるデバイスとの間のインターフェースは、ＳＡＴＡ規格によって規定される。「ＳＡＴＡポート」は、ＳＡＴＡ規格に従うポートである。「ＳＡＴＡドライブ」は、「ＳＡＴＡデバイス」の例であり、「ＳＡＴＡデバイス」は、「ターゲット」の例である。「ターゲット」は、コマンドを受け入れ、受信したコマンドに応答するデバイスである。
【００１０】
ＳＡＴＡホストとＳＡＴＡデバイス、またはＳＡＳホストとＳＡＴＡデバイス、あるいはＳＡＴＡデバイスを有する複数のＳＡＳデバイス等のＳＡＴＡとＳＡＳデバイスとの間の通信をブリッジングするためのデバイスまたは機器の必要性がある。
【００１１】
ＳＡＳをリンクとして使用することによって、３つの異なるタイプの通信プロトコルを採用して、接続をオープンしてもよい。それらは、Ｓｅｒｉａｌ  ＡＴＡ  Ｔｕｎｎｅｌｅｄ  Ｐｒｏｔｏｃｏｌ（ＳＴＰ）、ＳＳＰ、およびＳＭＰである。ＳＴＰは、ＳＡＴＡで使用される。ＳＴＰを使用して、ＳＡＴＡ規格に規定されるＳＡＴＡ通信方法を可能にし、ＳＳＰおよびＳＭＰを使用して、ＳＡＳ規格に規定される小型コンピュータシステムインターフェース（ＳＣＳＩ）タイプの通信を可能にする。
【００１２】
ＳＴＰ接続が「オープン」になると、概して、ＳＡＴＡプロトコルに従う。ＳＭＰ接続が「オープン」になると、ＳＭＰプロトコルに従う。より具体的には、接続がオープンとなり、接続が確立され、要求フレームがイニシエータによって送信され、応答フレームがターゲットによって送信され、接続がクローズされる。上述の通信技術およびＳＡＳに関するさらなる情報は、ＳＡＳ規格に見られ、そのコピーは、ウェブサイトｗｗｗ．ｔ１０．ｏｒｇを参照することによって検索できる。イニシエータからの要求は、ベンダユニークエリアとして、エリアがリザーブされる機能コードを含み、例えば、ターゲットによって行われる機能をさらに規定するために使用される。
【００１３】
「イニシエータ」は、本明細書で使用されるように、コマンドを送信し、コマンドを送信するための応答を受信可能なユニットまたはデバイスを指す。「ターゲット」は、本明細書で使用されるように、コマンドを受信可能なユニットまたはデバイスを指す。
【００１４】
現在、２つ以上のＳＡＳポートとＳＡＴＡデバイスとの間の通信をもたらすための単一デバイスはない。さらに、ＳＡＳ規格に規定されるようなＳＴＰターゲットであると自己報告する、ＳＡＳ規格に規定されるような端末デバイスタイプはない。ＳＡＳポートは、ＳＡＳ規格に準拠するポートである。さらに、ＳＡＴＡデバイスの動作速度は、恐らく、ＳＡＳホストよりも遅い場合が多く、現在、パフォーマンスにおけるこの差異は、システムパフォーマンスに伝播する。したがって、低速によって生じる明らかな遅延がないように、システムパフォーマンスに透過的であるべきであるＳＡＳおよびＳＡＴＡデバイス／ホストのパフォーマンス速度に差異をもたらす必要性がある。
【発明の概要】
【発明が解決しようとする課題】
【００１５】
上述の観点から、ＳＡＴＡまたはＳＡＳポートおよびＳＡＴＡデバイスの異なるトポロジ間の通信を可能にする高パフォーマンスデバイスの必要性が生じる。
【課題を解決するための手段】
【００１６】
（発明の概要）
簡潔には、本発明の実施形態は、ＳＡＴＡ規格に準拠するように構成され、１つ以上のホストとＳＡＴＡデバイスとの間の通信をもたらす、通信システムを含む。本発明の一実施形態による通信システムは、１つ以上のホストからのコマンドおよびステータスに応答するコマンドステータスマネージャ（ＣＳＭ）と、コマンドおよびステータスのデータとは実質的に別々に、データをバッファリングするために、１つ以上のホストからデータに応答するデータマネージャ（ＤＭ）とを有する、マルチポートブリッジデバイスを含む。
【００１７】
本発明の上述のおよび他の目的、特徴、および利点は、図面のいくつかの図を参照して、好ましい実施形態の以下の発明を実施するための形態から明白となるであろう。
【図面の簡単な説明】
【００１８】
【図１】図１は、従来のＳＡＴＡプロトコル通信層を示す。
【図２】図２は、本発明の別の実施形態による、ＳＡＳポート１２と、ＳＡＳポート１４とを含み、ＳＡＴＡポート１８に連結して示されるマルチポートブリッジデバイス１６と通信するように示される、通信システム１０を示す。
【図３】図３は、本発明の代替実施形態による、ＳＡＴＡポート４４に連結して示されるブリッジデバイス４２に連結される、ＳＡＳポート４０を示す。
【図４】図４は、本発明の実施形態による、その挙動においてＳＡＴＡタイプであるが、ＳＡＴＡポートではない、ポート５０と通信するように示されるブリッジデバイス４８と通信する、ＳＡＳポート４６を示す。
【図５】図５は、ＳＡＴＡポートと通信するように示されるブリッジデバイス５４と通信する、ＳＡＴＡポート５２を示す。
【図６】図６は、ＳＡＴＡポート６４と通信するように示されるマルチポートブリッジデバイス６２と通信する、ＳＡＴＡポート５８およびＳＡＴＡポート６０を示す。
【図７】図７は、システム１０は、図６のものと類似構成を含むが、但し、図７のマルチポートブリッジデバイス７０は、ポート５８および６０に応答し、デバイス６２にさらに連結される、マルチプレクサ７８をさらに含む、代替実施形態を示す。
【図８】図８は、本発明の実施形態による、図２のシステム１０のさらなる詳細を示す。
【図９】図９は、本発明の実施形態による、ＣＳＭ９４のさらなる詳細を示す。
【図１０】図１０は、テーブル１１６のコンテンツの例を示す。
【図１０（ａ）】図１０（ａ）は、本発明の方法による、ステータスがＳＡＴＡデバイスから受信されると、ステートマシン１１９によって行われる関連ステップのフローチャートを示す。
【図１１】図１１は、ＳＡＴＡデバイスから受信したステータス１５０の例と、ステータス内を示す。
【図１２】図１２は、図１０（ａ）のマッピングのブロック図を示す。
【図１３】図１３は、図８内のＳＡＳポート０または１のうちの１つ内のＳＡＳエンジン１６０のさらなる詳細を示す。
【図１４】図１４は、本発明の実施形態による、データマネージャ９６のさらなる詳細を示す。
【図１５】図１５は、コマンドの数に対する、ＳＡＴＡデバイスのパフォーマンスのグラフを示す。
【図１６】図１６は、コマンドがホストから受信されると、ＣＳＭ９４によって行われるステップのフローチャートを示す。
【図１７】図１７は、（図９の）ＣＳＭ９４のステートマシン１１８によって行われる関連ステップを示す。
【図１８】図１８は、図１７のステップ２１４において、受信したコマンドが待機コマンドではないと判断後、ステートマシン１１８によって行われる関連ステップを示す。
【図１９】図１９〜図２１は、ＳＡＴＡデバイスまたはドライブが、ホストあるいはイニシエータにステータスをリターンする際に実行される関連ステップを示す。
【図２０】図１９〜図２１は、ＳＡＴＡデバイスまたはドライブが、ホストあるいはイニシエータにステータスをリターンする際に実行される関連ステップを示す。
【図２１】図１９〜図２１は、ＳＡＴＡデバイスまたはドライブが、ホストあるいはイニシエータにステータスをリターンする際に実行される関連ステップを示す。
【図２２】図２２は、上述の公正ポリシーを施行する際に、ステータスマネージャ１２０または１２１によって行われる関連ステップを示す。
【図２３】図２３は、ＳＡＴＡデバイスがイニシエータの要求に応答して、ステータスをリターンする際の関連ステップを示す。
【図２４】図２４は、ステータスレジスタ１２０および１２１のそれぞれ内に含まれる、例示的な保持ステータスレジスタ３１４を示す。
【図２５】図２５は、本発明の実施形態による、エキスパンダ１４００、Ｅ０、およびＥ１の群に連結されるイニシエータ１２００、Ｉ０、およびＩ１の群を含み、エキスパンダの群は、通信システム１６００と通信する、メモリシステム１０００を示す。
【発明を実施するための形態】
【００１９】
（好適な実施形態の詳細な説明）
実施形態の以下の説明では、その一部を形成する添付の図面が参照され、例示として、本発明が実践され得る特定の実施形態が示される。本発明の範囲から逸脱することなく、構造的変更がなされ得るため、他の実施形態が利用されてもよいことを理解されたい。
【００２０】
本発明の実施形態では、通信システムは、ＳＡＴＡ規格に準拠するように構成され、１つ以上のホストとＳＡＴＡデバイスとの間の通信をもたらす。本発明の一実施形態による通信システムは、１つ以上のホストからのコマンドおよびステータスに応答するコマンドステータスマネージャ（ＣＳＭ）と、コマンドおよびステータスのデータとは実質的に別々に、データをバッファリングするために、１つ以上のホストからデータに応答するデータマネージャ（ＤＭ）とを有する、マルチポートブリッジデバイスを含む。
【００２１】
Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ（ＲＡＩＤ）等の大容量メモリシステムでは、マルチポートブリッジデバイスを使用して、１つ以上のイニシエータとターゲットとの間で通信を行う。ターゲットは、イニシエータによって提供され、イニシエータによってアクセスされる情報を格納するためのディスクドライブであってもよい。ホストおよびイニシエータは、本明細書の同一デバイスを指すために使用される。業界は、本業界で周知のＳＡＴＡおよびＳｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（ＳＡＳ）規格に準拠する記憶装置のためのシリアルインターフェース通信インターフェースを規格化している。
【００２２】
通信ブリッジを使用して、１つまたは複数のＳＡＳポートあるいはＳＡＴＡポートと、ＳＡＴＡデバイスまたはＳＡＴＡタイプのデバイスとの間の通信を可能にする。デバイスの例は、ディスクドライブまたはＣＤ−ＲＯＭである。
【００２３】
次に図２を参照すると、本発明の別の実施形態による、通信システム（または、ブリッジ）１０は、ＳＡＴＡポート１８に連結して示されるマルチポートブリッジデバイス１６と通信するように示される、ＳＡＳポート１２およびＳＡＳポート１４を含むように示される。ポート１２および１４は、ＳＡＳ規格に準拠し、ポート１８は、図２の実施形態におけるＳＡＴＡ規格に準拠する。図２では図示されないが、ポート１８は、ＳＡＴＡリンクと称される場合がある接続２４を通して、ＳＡＴＡデバイスと通信し、各ポート１２および１４は、それぞれ、接続２０および２２を通して、ホストと通信する。接続２０および２２はそれぞれ、ＳＡＳリンクと称される場合がある。
【００２４】
本発明の一実施形態では、通信システム１０は、メモリまたは記憶装置である。ポート１８に連結されるＳＡＴＡデバイスは、ターゲットとしてみなされ、ＳＡＴＡ規格に準拠する。デバイス１６は、ＳＡＳプロトコルをＳＡＴＡまたはＳＡＴＡタイプの挙動に変換する。
【００２５】
次に、システム１０の異なる構成またはトポロジが、種々の本発明の実施形態を参照して示されるが、他の構成またはトポロジも企図される。代替実施形態である図３では、ＳＡＳポート４０は、ＳＡＴＡポート４４に連結して示されるブリッジデバイス４２に連結して示される。
【００２６】
図４は、本発明の代替実施形態によると、その挙動においてＳＡＴＡタイプであるが、ＳＡＴＡポートではない、ポート５０と通信するように示されるブリッジデバイス４８と通信するように示される、ＳＡＳポート４６を示す。図５は、ＳＡＴＡポートと通信するように示されるブリッジデバイス５４と通信する、ＳＡＴＡポート５２を示す。図６は、ＳＡＴＡポート６４と通信するように示されるマルチポートブリッジデバイス６２と通信する、ＳＡＴＡポート５８およびＳＡＴＡポート６０を示す。上述の図では図示されないが、ホストまたはイニシエータは、ＳＡＳポートと通信する。例えば、図６では、ホストは、ポート５８に連結されてもよく、別のホストは、ポート６０に連結されてもよい。図２および６の実施形態の差異は、後者の場合は、ポート６４の出力は、ＳＡＴＡドライブに向けられて示され、図６では、ブリッジ６２は、２つのＳＡＴＡポート５８および６０に連結されて示されるが、図２では、ＳＡＳポートに連結されて示される。
【００２７】
上述の図のいずれかにおけるブリッジデバイスが、２つ以上のソースから入力を受信する場合、図２および図６に示されるように複数ポートを有するが、その入力が、１つのソースからの場合、図３、図４、および図５に示されるように、複数ポートを有する必要はない。さらに、２つのＳＡＳまたはＳＡＴＡポートが、ブリッジデバイスに連結して示される実施形態では、多数のそのようなポートが、そこに連結されてもよい。
【００２８】
図７は、システム１０が、図６と類似構成を含むが、但し、図７のマルチポートブリッジデバイス７０は、ポート５８および６０に応答し、デバイス６２にさらに連結されるマルチプレクサ７８をさらに含む、代替実施形態を示す。図７の実施形態では、マルチプレクサ７８は、２つのポート５８と６０との間で選択するが、ポート５８および６０の両方をブリッジ６２に連結可能にするために、無効化または不使用（あるいは、除去）可能である。
【００２９】
図８は、本発明の実施形態による、図２のシステム１０のさらなる詳細を示す。図８では、本発明の実施形態による、ＳＡＳ−ＳＡＴＡ変換デバイス８０が、バス８４を通して、入力／出力および周辺デバイス８２に連結されて示される。デバイス８０は、デバイス７０、あるいはデバイス６２、もしくはデバイス５４、４８、４２、または１６等の前図に示されるブリッジデバイスであってもよい。
【００３０】
本発明の一実施形態では、デバイス８０は、ＳＡＴＡデバイスを制御するためのＳＴＰターゲットまたはＳＭＰターゲットである端末デバイスである。
【００３１】
システム１０は、バス８４を通して、デバイス８２およびデバイス８０に連結されるマイクロプロセッサ１００を含むようにさらに示され、マイクロプロセッサ１００は、コントローラ、ステートマシン等の任意の種類の処理ユニットであることができ、メモリ１０２に連結してさらに示される。マイクロプロセッサ１００の機能は、フレームの構築、情報トラフィックの誘導、およびマイクロプロセッサによって行われる他のタイプの機能等、種々のシステム機能を行うことである。メモリ１０２は、オプションであって、ステートマシン等に制限されない、他のデバイスに交換されてもよい。
【００３２】
デバイス８０は、ＳＡＳポート８６および８８、接続プロトコルマネージャ（ＣＰＭ）０  ９０およびＣＰＭ  １  ９２、コマンドステータスマネージャ（ＣＳＭ）９４、データマネージャ９６、およびドライブマネージャ（ＤＲＶＭ）９８を含むように示される。ポート８６は、ＣＰＭ  ０  ９０に連結して示され、ポート８８は、ＣＰＭ  １  ９２に連結して示される。マネージャ９８は、ＳＡＴＡディスクドライブ等のＳＡＴＡデバイスと通信するが、他のタイプのＳＡＴＡデバイスが採用されてもよい。
【００３３】
ポート８６は、ＣＳＭ９４およびＤＭ９６に連結して示される、ＣＰＭ  ０  ９０に連結して示される。ポート８８は、ＤＭ９６およびＣＳＭ９４に連結して示される、ＣＰＭ  １  ９２に連結して示される。ＣＳＭ９４およびＤＭ９６は、互いに連結して示され、ＤＲＶＭ９８は、ＤＭ９６に連結して示される。ＤＲＶＭ９８は、ＣＳＭ９４に連結して示される。
【００３４】
参照番号１０４の下方では、ＳＡＴＡプロトコルに従うが、参照番号１０４の上方では、ポート８６および８８によって、ＳＡＳプロトコルに従う。ＣＰＭ  ０  ９０およびＣＰＭ  １  ９２はそれぞれ、ＳＡＴＡプロトコルがそれらに準拠することを確実にする。また、ＣＰＭ  ０  ９０およびＣＰＭ  １  ９２はそれぞれ、コマンドフレームと、データフレームと、制御フレームとを区別し、それに従って、処理のために、コマンドフレームをＣＳＭ９４に、データフレームをＤＭ９６に伝送する。ＣＳＭ９４は、コマンドをＤＲＶＭ９８に発行または伝送し、ＤＲＶＭ９８は、本情報を使用して、最終的には、コマンドをＳＡＴＡデバイスに送信し、ＳＡＴＡデバイス（図示せず）が情報を返送する場合、ＤＲＶＭ９８からのコマンドに応答して、情報をＣＳＭ９４に伝送または送信する。それに応答して、ＤＲＶＭ９８は、ステータスをＣＳＭ９４に送信し、ＣＳＭ９４は、ＣＰＭ  ０  ９０およびＣＰＭ  １  ９２の一方または両方に情報を送信する。しかし、応答が、データまたは制御タイプである場合、ＤＲＶＭ９８は、情報をＤＭ９６に送信し、ＤＭ９６は、ＣＰＭ  ０  ９０またはＣＰＭ  １  ９２の一方にデータを伝送する。
【００３５】
デバイス８０に連結して示されるデバイス８２は、汎用入力／出力（ＧＰＩＯ）および周辺デバイスを含むようにさらに示され、バス８４は、上述のように、システム１０の種々のブロックと通信する。バス８４は、マイクロプロセッサバスと称される場合がある。マイクロプロセッサ１００は、システム１０の残りが、ＧＰＩＯを使用するように、ＧＰＩＯを構成する。
【００３６】
ブリッジ機能は、ＤＲＶＭ９８までの参照番号１０４の下方に位置するブロックによって行われる。ＤＲＶＭ９８は、ＳＡＴＡプロトコルに従い、ＳＡＴＡ仕様の要件を充足するように機能する。システム１０は、任意の多重化または選択プロセスを伴わずに、ポート８６および８８の一方または両方からコマンドを受け入れる。すなわち、ポートのそれぞれからのコマンドは、システム１０のブロックの残りを通過し、それによって処理される。このように、ＳＭＰは、参照番号１０４の上方の通信のために使用され、ＳＴＰは、参照番号１０４の下方の通信のために使用される。さらに、ＣＳＭ９４は、ポート８６および８８の両方からコマンドを受信し、受信したコマンドをバッファリングまたは格納する。このように、システム１０は、任意の多重化または選択プロセスを伴わずに、２つのポートからコマンドを受信する。
【００３７】
１つのみのＳＡＳポートが使用される実施形態では、ポート８６またはポート８８の一方が存在せず、ＣＰＭ０またはＣＰＭ１に連結されるそのそれぞれもまた、存在しないであろう。ポート８６および８８はそれぞれ、構成テーブルを維持するために、個々のＳＡＳエンジン（図８に図示せず）を含む。本明細書で使用されるように、テーブルは、更新可能な任意のタイプの記憶場所であることができる。各ポートのステータス情報と、ポートと通信するために連結されるイニシエータとを含む構成テーブルは、個々のＳＡＳポート内に維持される。例えば、ポート８６と、ポート８６に連結される（または、連結されない）イニシエータとのステータスに関する情報は、ポート８６のＳＡＳエンジン内に維持され、構成テーブルの一部である。同様に、ポート８８と、ポート８８に連結される（または、連結されない）イニシエータとのステータスに関する情報は、ポート８８のＳＡＳエンジン内に維持され、構成テーブルの一部である。各ＳＡＳリンクは、より大きな構成テーブルの一部である構成テーブルを有する。より大きな構成テーブルは、ポート８６および８８のそれぞれから、テーブルの一部を結合することによって形成される。次に、以下の図を参照して、図８の関連ブロックのさらなる詳細が論じられる。
【００３８】
図９は、本発明の実施形態による、ＣＳＭ９４のさらなる詳細を示す。図９では、ＣＳＭ９４は、本発明の実施形態による、受信バッファ０  １０３、受信バッファ１  １０６、コマンドプロセッサステートマシン１０８、コマンドバッファ１１０、ステータス０マネージャ１２０、ステータス１マネージャ１２１、コマンド保留記憶場所１１４、コマンド属性テーブル１１２、ドライブキューテーブル１１６、コマンド発行ステートマシン１１８、および受信ステータスステートマシン１１９を含むように示される。
【００３９】
バッファ０  １０３および１  １０６は、コマンドバッファ１１０に連結されて示され、コマンド属性テーブル１１２およびコマンド保留記憶場所１１４に連結されてさらに示される、ステートマシン１０８に連結されて示される。コマンド保留記憶場所１１４は、ステートマシン１１８に連結されて示される。ステートマシン１１９は、テーブル１１６に連結されて示され、テーブル１１２は、ステートマシン１１８に連結されて示される。サーチエンジン１０５は、ステータス０マネージャ１２０およびステータス１マネージャ１２１に連結されて示される。
【００４０】
バッファ０  １０３および１  １０６はそれぞれ、その個々のＣＰＭを通して、個々のホストからのコマンドに応答し、故に、その個々のＣＰＭに連結して示される。例えば、バッファ０  １０３は、ＣＰＭ０からコマンドを受信し、バッファ０  １０６は、ＣＰＭ１からコマンドを受信する。バッファ０  １０３および１  １０６はそれぞれ、その処理のために、受信したコマンドおよびそれに関連する情報をステートマシン１０８に伝える。
【００４１】
本明細書で称されるように、ステートマシンは、プロセスを制御または生じさせる。例えば、ステートマシン１０８は、コマンドを処理させる。コマンドバッファ１１０は、ステートマシン１１８に連結して示される。
【００４２】
記憶場所１１４は、コマンド発行ステートマシン１１８に連結して示され、順に、ＤＲＶＭ９８に連結される。ステートマシン１１８は、テーブル１１６に連結して示される。ステータス０マネージャ１２０およびステータス１マネージャ１２１は、ステートマシン１１９およびコマンド属性テーブル１１２に連結して示され、ＣＰＭ  ０  ９０およびＣＰＭ  １  ９２にさらに連結される。ステータスマネージャ１２０は、ステータスマネージャ１２１のように、ステートマシン１０８に連結して示される。また、ステータスマネージャ１２０および１２１は、データマネージャ９６との間で情報を受信および伝送するように示される、テーブル１１６に連結して示される。
【００４３】
図９にさらに示されるように、ＣＳＭ９４は、ステートマシン１０８に連結されるコマンドカウンタ９１と、ステートマシン１０８、状態マネージャ１２０および１２１、ステートマシン１１９に連結される未使用キューポインタテーブル９３とを含む。カウンタ９１は、ステータスマネージャ０  １２０および１  １２１に連結してさらに示される。カウンタ９１は、イニシエータまたはホストが存在するだけの数のカウンタまたはカウント計測方法を含むことに留意されたい。
【００４４】
加えて、ＣＳＭ９４は、マイクロプロセッサ１００と、テーブル１１２と、テーブル１１６とに連結される、サーチエンジン１０５を含むように示される。テーブル９３は、それぞれ、バッファ１１０およびにテーブル１１２にコマンドならびにコマンド属性を格納する際、ステートマシン１０８によって使用するための未使用または利用可能なポインタを格納する。コマンドの実行が終了すると、実行されるコマンドのためのポインタは、ステートマシン１１９によって、利用可能なポインタとして、テーブル９３内に復元される。コマンドが受信されると、テーブル９３は、ステートマシン１０８によってアクセスされ、未使用ポインタを検索し、ポインタを使用して、それぞれ、バッファ１１０およびテーブル１１２にコマンドならびにコマンド属性を格納する。同様に、ステータスマネージャ０  １２０および１  １２１はそれぞれ、テーブル９３を更新可能である。
【００４５】
オプションであるが、使用される場合、各イニシエータのためのカウンタであるコマンドカウンタ９１は、コマンドプロセッサステートマシン１０８の一部であって、イニシエータから受信したコマンドをカウントする。カウンタ９１によって計測されるカウントは、イニシエータに割り当てられたコマンドの数を表す所定の値と比較され、比較が割り当てられたコマンドの数の過剰を示す場合、エラーメッセージが、ステートマシン１０８によって、コマンドが受信されたステータスマネージャに報告される。カウンタ９１内のコマンドカウントは、随意に、種々の他の理由のために使用されてもよい。各イニシエータは、それと関連付けられた一意の所定の最大のコマンドの数を有し、この目的を達成するために、各そのような所定のコマンドの数が、カウンタ９１内の種々のカウンタによって使用される。本発明の一実施形態では、イニシエータと関連付けられた所定の最大のコマンドの数は、構成テーブル内に格納される。
【００４６】
サーチエンジン１０５は、マイクロプロセッサ１００の指揮下、テーブル１１６および／またはテーブル１１２を検索する能力を有し、したがって、コマンド、属性等に関する有益な情報を提供することができる。随意に、サーチエンジン１０５を使用して、ステータスマネージャ０  １２０および１  １２１内を検索する。
【００４７】
記憶場所１１４は、イニシエータから受信したコマンドのトラックを維持する一方、テーブル１１６は、ＳＡＴＡデバイスに実際に伝達するまたは伝送されることが可能なコマンドのトラックを維持する。２つのそのような場所の存在は、イニシエータのコマンドが、ＳＡＴＡデバイスによって実行可能なコマンドの数を超える場合を考慮したフレキシビリティを提供する。したがって、イニシエータから入って来るコマンドは、記憶場所１１４に待機され、ＳＡＴＡデバイスへ送信される準備ができているコマンドは、テーブル１１６に待機される。これによって、ＳＡＴＡデバイスが処理可能以上のコマンドを受け入れ、エラーを報告することなく、行うことが可能となる。この点において、イニシエータの観点から、本状況は、懸念の必要がない。
【００４８】
ステートマシン１１８は、記憶場所１１４内のコマンドが、待機または非待機コマンドであるかを判断し、コマンドのタイプに応じて、コマンドタイプ、すなわち、待機対非待機が、ＳＡＴＡデバイス内の保留コマンドのタイプと一致することが確実となる。非待機コマンドの場合、コマンドは、ＳＡＴＡデバイスが、保留コマンドを有していなくなるまで、ＳＡＴＡデバイスに送信されない。待機コマンドの場合、コマンドは、待機コマンドを受け入れ可能または他の保留待機コマンドを有することが可能な場合、ＳＡＴＡデバイスに送信される。イニシエータが、（図７の）システム１０に連結される場合、ステートマシン１１８によって、同一または異なるポートへの他のイニシエータコマンドの完了前であっても、複数のイニシエータは、同一（ＳＡＳ）ポートへ、あるいはＳＡＳリンク８６または８８を通して、コマンドを送信可能となる。
【００４９】
動作において、コマンドは、並行して、受信バッファ０  １０４および１  １０６のそれぞれによって受信される。次に、受信したコマンドは、ステートマシン１０８によって処理される。バッファ０  １０４および１  １０６によって受信されたコマンドは、ＳＡＴＡプロトコルに従うことに留意されたい。利用可能なポインタは、未使用キューポインタテーブル９３から検索される。ステートマシン１０８は、次いで、テーブル９３からのポインタの場所に基づいて、処理されたコマンドをバッファ１１０内に格納する。テーブル９３からの、バッファ１１０内の場所を指し示すポインタは、コマンドを格納するために使用される、すなわち、コマンドポインタは、ステートマシン１０８によって、記憶場所１１４内に格納される。
【００５０】
記憶場所１１４は、コマンドが到着すると、コマンドのポインタを格納またはキューに入れるためのキューである。この点において、記憶場所１１４は、先着順に基づくリンクリストである。別様に、優先順位リストを使用して、優先度順にコマンドを優先化する。さらに別様に、２つのリストを採用されるが、１つのリストは、コマンドポインタのリンクリストを含む、別のリストである優先順位リストは、他の受信コマンドよりも高優先レベルに基づく順序で実行可能な、優先コマンドのリストを含む。実行されるコマンドの優先度の変更は、システム１０に連結されるイニシエータに透過的なままである。
【００５１】
コマンドのポインタが、場所１１４内の他のコマンドポインタのリストの先頭に来ると、コマンドは、バッファ１１０から、ステートマシン１１８内に格納され、コマンドをデバイスまたはディスクドライブ（または、ターゲット）に発行するＤＲＶＭ９８に提供される。ステートマシン１１８は、コマンド情報をテーブル１１６内に格納し、それをＤＲＶＭ９８に送信する。ステートマシン１１８が、コマンドをドライブ（ＳＡＴＡデバイス）に送信すると、同様に、コマンド情報をテーブル１１６に送信する。
【００５２】
ターゲットは、最終的には、ステートマシン１１９内にステータスを格納するＤＲＶＭ９８に、ステータスを返送する。ステートマシン１１９は、順に、ステータスマネージャ０  １２０または１  １２１の一方または両方にステータスを提供し、ステータスを受信したいずれかのステータスマネージャは、次いで、ＤＲＶＭ９８から受信したステータスを含むフレームを構築するであろう。ＳＡＴＡ規格に準拠する構築されたフレームは、フレームを構築したステータスマネージャに応答して、ＣＰＭ  ０  ９０またはＣＰＭ  １  ９２に伝送される。言い換えると、ステータスマネージャ０  １２０が、フレームを構築すると、フレームは、ＣＰＭ  ０  ９０に伝送され、ステータスマネージャ１  ９２が、フレームを構築すると、フレームは、ＣＰＭ１  ９２に伝送される。ステータスマネージャを通してフレームを受信するＣＰＭは、最終的には、そのＳＡＳポートまたはエンジンを通して、システム１０に連結されるイニシエータ（図示せず）にフレームを伝送する。ＤＲＶＭからＳＡＳ初期化へのステータスのパスは、「リターンステータス」と称される。上述のように、ＳＡＳプロトコルはすべて、ＣＳＭ９４に到達する前に、フレームから除去されるため、ＳＡＴＡフレームのみ処理され、ＣＳＭ９４によって受信される。
【００５３】
テーブル１１６のコンテンツの例は、図１０に示される。テーブル１１６の行は、インデックスと称され、インデックス０〜３１と標識される３２のインデックスが存在する。テーブル１１６の列は、「有効な」ビット列１４０、コマンドバッファへのポインタ列１４２、イニシエータ番号列１４４、およびイニシエータタグ列１４６を含む。列１４２は、コマンドバッファ１１０内の場所およびコマンド属性テーブル１１２内の場所をそれぞれ指し示す、関連付けられたインデックスのためのポインタを格納する。コマンド属性テーブル１１２は、コマンドに関する属性、すなわち、コマンドのタイプ、コマンドと関連付けられた潜在的エラー等を含み、コマンドが到着すると、ステートマシン１０８によって更新される。テーブル１１６は、ステートマシン１１８、あるいはステータスマネージャ１１９、もしくはステータスマネージャ１２０または１２１によって更新される。
【００５４】
ポインタは、最終的には、テーブル９３内に格納され、他のコマンドのための使用に利用可能である。列１４４は、そこからインデックスを付けられた行のコマンドが由来する、インデックスと関連付けられたイニシエータ番号を含み、列１４０は、テーブル１１６の関連付けられた行のコマンドの有効性に関する情報を表す。タグは、最初、イニシエータによって、システム１０に送信され、コマンド属性テーブル１１２内に格納される。格納されたタグは、次いで、例えば、２つのタグ０が、ＳＡＴＡデバイスまたはドライブに送信不可能なため、イニシエータが、同一タグに送信される状況を回避するように、再マッピングされる。タグの再マッピングは、本状況を回避し、ステートマシン１１８によってなされる。ステートマシン１１８は、タグがその中で利用可能な第１のエントリのために、テーブル１１６を検索し、見つけたエントリを使用する。
【００５５】
他の実施形態では、最終エントリまたは乱数エントリ等を含むが、それらに限定されない、第１のエントリ以外が見つけられてもよい。すなわち、テーブル１１６を使用して、次または第１の有効なインデックスを見つける。ステートマシン１１８は、「有効」ではないと示されるテーブル１１６内の第１の場所を探し、新しいタグとして、その中のタグ値を使用する。列１４６は、次いで、最終的には、テーブル１１６の各インデックスまたは行に対し、ＳＡＴＡデバイスをアドレス指定するために使用されるタグを含む。
【００５６】
関連付けられた列１４０内に値を有し、無効なコマンドに設定されるテーブル１１６の行は、タグに対し保留コマンドがないため、自由に使用される関連付けられた列１４６内に（イニシエータ）タグを有するであろう。ＳＡＴＡデバイスまたはドライブへのイニシエータタグのマッピングおよびその逆は、本発明の実施形態に従って、非固定フォーマットで、あるいは動的に行われる。すなわち、タグは、イニシエータと関連付けられる一方、従来の技術システムでは、一式のタグは、所与のイニシエータに永久に割り当てられ、別の一式のタグは、イニシエータおよび固定されたままのタグの関係を有し、別のイニシエータに永久に割り当てられ、本発明の一実施形態では、イニシエータタグは、動力学に基づいて割り当てられる。すなわち、タグは、イニシエータに永久に割り当てられず、むしろ、ステートマシン１１８は、タグをイニシエータに割り当て、後で別のイニシエータに再割り当て可能である。一実施形態では、コマンド発行ステートマシン１１８は、動的に、ホストからＳＡＴＡデバイスにタグの割り当てをもたらす。
【００５７】
列１４２によって、イニシエータが、コマンドへの再アクセスを所望する場合、コマンドバッファへのポインタを使用して、容易に成し得るように、コマンドは、コマンドバッファ１１０内または属性テーブル１１２内に容易に位置することが可能となる。列１４４は、ステータスマネージャ０  １２０および１  １２１の一方または両方を判断するための情報を含み、ＳＡＴＡデバイスは、それにステータスを送信する。例えば、ＳＡＴＡデバイスがステータスを提供し、ステータスが２つの異なるイニシエータに提供されるように生じる場合、またはＳＡＴＡデバイスが応答し、応答が２つの異なるイニシエータに提供されるように生じる場合、ステータスは、２つのステータスマネージャに提供される。
【００５８】
テーブル１１６において、「ＮＯＴ  ＳＥＴ」を示す関連した「有効な」エントリがあるいずれかのインデックスまたは行では、それと関連付けられたタグは、使用に利用可能である。図１０の例では、３２のインデックスが存在するため、３２のタグが使用可能である。テーブル１１６がフルである場合、または３２すべてのインデックスが、有効なコマンドを有している場合、ＳＡＴＡデバイスにコマンドを発行することはできない。数字３２は、例として単に使用され、したがって、他の数のインデックスが採用されてもよい。
【００５９】
ステータスは、１つ以上のイニシエータにリターンされてもよい。したがって、テーブル１１６は、１つ以上のイニシエータが、ステータスをリターンしたかどうか、およびどのタグが、ＳＡＴＡドライブに割り当てられているかを判断する方法を提供する。
【００６０】
次に、図９および図１０のテーブル１１６内の情報がマッピングされる方法のいくつかの議論が提示される。図１０（ａ）では、本発明の方法による、ステータスがＳＡＴＡデバイスから受信される場合に、ステートマシン１１９によって行われる関連ステップのフローチャートが示される。最初に、ステップ１８９では、ＤＲＶＭ９８は、ステータスをステートマシン１１９に提供する。次いで、ステップ１９１では、ステートマシン１１９は、組み合わせ復号化を行い、次いで、ステップ１９３では、ステータスをステータスマネージャ０  １２０および１  １２１に提供する。ステップ１９１では、ＤＲＶＭ９８からのステータスは、テーブル１１６内の情報と組み合わせて比較され、効率的かつ迅速な方式でイニシエータにステータスをもたらす。別様に、組み合わせ比較以外が採用されてもよい。
【００６１】
図１１は、ＳＡＴＡデバイスから受信したステータス１５０の例と、ステータス内を示す。ＳＡＴＡ仕様では、ステータス１５０は、ＳＡＣＴＩＶＥレジスタと称される。３２ビットあり、各ビットは、テーブル１１６のインデックスのうちの１つとして機能する。タグあたり１ビットあり、したがって、タグの数は、ステータス１５０のビットの幅または数によって判断される。次に、テーブル１１６のコンテンツによって享受される利点のうちのいくつかが、図１１および図１２に関連してさらに説明される。
【００６２】
図１２では、図１０（ａ）のマッピングのブロック図を示す。第１のタグの例は、テーブル１１６へのインデックスとして機能し、イニシエータおよびタグに関する情報を迅速に検索する。すなわち、ステップ１５２では、ステータス１５０内のビット１の値が判断され、ステップ１５４では、テーブル１１６内のインデックス１とインデックスが付けられた行に、インデックスを付けるために使用される。次に、ステップ１５６では、インデックス１と関連付けられた列１４４内のイニシエータ番号と、インデックス１と関連付けられた列１４６のＩタグとが、テーブル１１６から検索される。次に、適切なビットが、次のビットまたはインデックスに設定される。テーブル１１６の使用によって、イニシエータ番号およびＩタグ（イニシエータタグ）は、両方とも周知の組み合わせ論理またはメモリのいずれかを使用して、迅速に検索可能になる。
【００６３】
イニシエータは、未履行タグよりも多くコマンドを発行することが防止される。すなわち、上述の例では、３３番目のコマンドが、イニシエータによって発行されるが、３２が未履行である場合、エラーが生じる。「非待機」コマンドの場合、同一イニシエータに対し２つ以上の非待機コマンドが存在するかどうか判断され、その場合、エラーとなる。上述のように、コマンドを処理するためのルールは、コマンド属性テーブル１１２によって検証される。「待機」コマンドは、上記に参照したように、ＳＡＴＡ規格に規定される。
【００６４】
図１３は、図８内のＳＡＳポート０または１のうちの１つ内のＳＡＳエンジン１６０のさらなる詳細を示す。図１３では、ＳＡＳエンジン１６０は、接続ステートマシン１６２、アフィリエーション（ａｆｆｉｌｉａｔｉｏｎ）テーブル１６４、プリミティブ割り込みプロセッサ１６８、ＳＭＰバッファステートマシン１６６を含むように示され、すべて、ステートマシン１７０に連結して示される。テーブル１６４は、本明細書に参照される構成テーブルの一部である。エンジン１６０は、リンク８６または８８であり得、ＣＰＭ０  ９０または  ＣＰＭ１  ９２の一方に連結されるＳＡＳリンクを通して、情報を受信する。エンジン１６０は、動作時、最初に、オープンフレームを構築し、ＳＡＳリンクを通して、イニシエータにオープンフレームを送信し、イニシエータからオープン承認プリミティブを受信し、イニシエータへの接続を確立する。ＣＰＭは、イニシエータへの接続を要求し、次いで、ステートマシン１６２および１６６は、ＳＡＳバス（または、リンク）を要求されたイニシエータに接続するために必要なステップを行う。
【００６５】
接続が確立され、データが転送されると、接続がクローズされる。システム１０のアーキテクチャによって、接続は、すぐにクローズされる、または所定の時間後にクローズされる、あるいはクローズするフレームタイプを使用して、プログラムすることができる。後者の例は、フレームが転送された時を検出することによって、またはフレームのステータスによって、接続がオープンのままであっても、接続を使用することを含む。別の例では、フレームのタイプを知ることによって、使用のために必要な接続の時間が既知となり、したがって、タイマを使用して、検出されたフレームタイプおよびタイマが所定の時間に達した時に基づいて、所定の時間を記録し、接続をクローズすることができる。データ／ステータス／制御のバッファリングによって、ドライブから情報を受信するための待ち時間が回避される。すなわち、フレームがバッファリングまたは格納され、接続のクローズを待つ必要がなく、システムのパフォーマンス向上に貢献するため、接続がオープンとなり、データのフレームがバッファリングされ、次いで、接続は、クローズされ、データは、その後、ＳＡＴＡデバイスに送信可能となる。これは、システムを通して伝播するために、ＳＡＴＡデバイスと関連付けられるいかなる遅延も却下する際にさらに重要である。さらに、コマンドは、ＳＡＴＡデバイスの能力を制限することなく、イニシエータからリアルタイムで受信可能である。
【００６６】
イニシエータがデータをＳＡＴＡデバイスに送信している場合、データは、システム１０によって受信されるとバッファリングされ、次いで、ＳＡＴＡデバイスに送信され、それによって、データを受け入れるＳＡＴＡデバイスと関連付けられる遅延を回避する。これは、システム効率およびパフォーマンスの向上に貢献する。
【００６７】
イニシエータは、ＳＭＰ接続をオープンにし、ＳＭＰ機能を行う。エンジン１６０に対しやり取りされる情報は、ＳＭＰバッファおよびステートマシン１６６内に格納される。マイクロプロセッサ１００は、イニシエータに送信されるフレームを構築し、ＳＭＰバッファおよびステートマシン１６６内に格納し、最終的には、イニシエータに伝送される。このように、イニシエータは、ＳＡＴＡのアクティビティから独立して、制御機能を行うことができ、システムパフォーマンスの向上に貢献する。
【００６８】
図１４は、本発明の実施形態による、データマネージャ９６のさらなる詳細を示す。データマネージャ９６は、本発明の実施形態による、上流ステートマシン１７６、データバッファ１７４、制御ＦＩＳバッファ１７８、ＦＩＳプロセッサステートマシン１８２、データマネージャ制御ステートマシン１７２、および下流ステートマシン１８０を含むように示される。ステートマシン１８０は、ＤＲＶＭ９８に連結して示され、ステートマシン１７６は、ＣＰＭ０およびＣＰＭ１に連結して示される。ステートマシン１７２は、ＣＳＭ９４に連結して示される。ステートマシン１７６は、ステートマシン１７２と、バッファ１７８と、データバッファ１７４とに連結してさらに示される。
【００６９】
ステートマシン１８２は、バッファ１７８に連結して示され、順に、ステートマシン１８０に連結して示される。データバッファ１７４は、１つ以上のフレームを格納する。図１４では、制御ＦＩＳは、バッファ１７８によって、バッファリングされる。情報のフローは、ステートマシン１７６からステートマシン１８０へ、またはその逆のいずれかである。一実施形態では、ステートマシン１７２および１８２は、物理的に同一ステートマシンであってもよい。
【００７０】
動作において、制御ＦＩＳが、ＳＡＴＡデバイスから受信されると、バッファ１７８内にバッファリングまたは格納される。制御ＦＩＳが受信されると、ステートマシン１８２は、受信した制御ＦＩＳを修正し、修正された制御ＦＩＳをさらに修正し、ステートマシン１７６に通知し、バッファ１７８からデータを送信する、ステートマシン１７２に通知する。
【００７１】
ステートマシン１７６から下方に情報を送信する場合、ステートマシン１７６は、ステートマシン１８０に通知し、情報を送信するステートマシン１７２に情報を提供し、転送の完了に応じて、ステートマシン１７２は、ステートマシン１８０に通知し、バッファ１７４からＦＩＳを除去する。
【００７２】
データに関し、受信すると、ステートマシン１８２の指揮下で、データは、データバッファ１７４内にバッファリングまたは格納され、その後、ステートマシン１８０に送信される。データは、ＳＡＴＡデバイスのために、イニシエータに送信する準備ができると、ステートマシンが、バッファ１７４からデータを検索し、ステートマシン１７２に通知し、次いで、ステートマシン１７６に通知し、データが送信される。ＳＡＴＡデバイスからイニシエータに送信するデータが来ると、ステートマシン１８２の指揮下、ステートマシン１７２に通知され、データは、バッファ１７４内に格納され、ステートマシン１７２は、ステートマシン１７６に通知し、ステートマシン１８０を通して提供されたデータは、イニシエータに伝送される。システム１０から送信されるデータフレームの順序は、受信と同一順序である。
【００７３】
フレーム全体のバッファリングによって、ＳＡＴＡリンクと関連付けられる遅延が存在する場合、本発明の種々の実施形態のバッファリングが主な原因であるＳＡＳリンクは、拘束されない。さらに、ＳＡＳとＳＡＴＡリンクとの間の異なるデータ速度が達成され、フレームバッファリングによって、イニシエータに対し透過的となり、また、接続をクローズする効率的方法を可能にする。一例として、ＳＡＳリンクが、１秒あたり６ギガビットの速度で情報を転送する一方、本発明の種々の実施形態のバッファリングによって、ＳＡＴＡドライブが、１秒あたり３ギガビットの速度でしか情報を受信可能でない場合、イニシエータは遅延を受けないが、従来技術では、遅延を受ける。本発明の実施形態のシステム１０は、本質的に、いかなるそのような遅延も緩和する。
【００７４】
本発明の実施形態になされるように、システム１０によるステータス、コマンド、制御、およびデータのバッファリングによって、別のイニシエータがそれを使用可能にするために、ＳＡＳリンクの空きを作ることによって、システム改良を実現する。フレーム全体をバッファリングすることによって、データマネージャ内で行われるように、ＳＡＴＡデバイスと関連付けられる遅延は、透過的なままである。
【００７５】
図１５は、コマンドの数に対する、ＳＡＴＡデバイスのパフォーマンスのグラフを示す。すなわち、ｘ軸上には、コマンドの数が示され、ｙ軸上には、システムのパフォーマンスが示される。システムの最大パフォーマンスは、３２個のコマンドの前に生じ、実際に、３２個のコマンドの点の後およびその近傍で減少し、パフォーマンスは、一定のままである。最大パフォーマンスのコマンドの数が計算され、ステートマシン１１８内に格納される。ステートマシン１１８は、最大パフォーマンスのコマンドの数から１を引いた数のみに対してテーブル１１６内を検索し、このように、コマンドの検索に関連付けられた時間を短縮する。また、ＳＡＴＡデバイスに送信されるコマンドの数を減少することは、図１５のグラフに見られるように、ＳＡＴＡデバイスのパフォーマンスを向上させることによって、システムパフォーマンスを向上させる。
【００７６】
図１６は、コマンドがホストから受信されると、ＣＳＭ９４によって行われるステップのフローチャートを示す。最初に、ステップ２００では、未使用または利用可能なポインタは、未使用キューポインタテーブル９３から検索される。ポインタが利用可能な場合、プロセスは、ステップ２０２に進むが、しかしながら、未使用ポインタが利用可能ではない場合、２０４ではフェイルとなり、エラー状態が通知される。
【００７７】
ステップ２０２では、受信したコマンド自体がチェックされ、有効または可読コマンドであるかどうか判断し、そうである場合、プロセスは、２０６に進み、そうではない場合、プロセスは、２０４に進む。２０６では、コマンドが待機しているかどうか判断され、そうである場合、プロセスは、ステップ２０８に進み、そうではない場合、プロセスは、ステップ２１０に進む。ステップ２１０では、受信したコマンドは、コマンドバッファ１１０内に格納され、イニシエータ番号、待機または非待機コマンドステータス、および他の関連付けられた属性等の受信したコマンドの属性は、テーブル１１２内に格納される。他の実施形態では、コマンド属性は、コマンドに関する他の情報であってもよい。
【００７８】
ステップ２０８では、ステータスマネージャ１２０または１２１は、「解放」を送信するように通知され、終了すると、ステータスマネージャが、ＣＰＭを通して、連結され、コマンドを受信していたリンクを効果的に解放するか、または使えるようにする。次に、ステップ２１０では、受信したコマンドは、場所１１４内に配置または格納される。
【００７９】
図１７は、（図９の）ＣＳＭ９４のステートマシン１１８によって行われる関連ステップを示す。２１２では、ドライブに未だ送信されておらず、したがって、キュー（場所１１４内）内で実行されるのを待っている場所１１４内には保留コマンドが存在する。次に、２１４では、現在の（または、保留）コマンド（または、次に実行されるコマンド）が、「待機」コマンドであるかどうか判断される。コマンドが、待機コマンドであると判断される場合、プロセスは、２１８に進み、そうではない場合、プロセスは、２１６に進む。
【００８０】
２１８では、ステートマシン１１８は、ＳＡＴＡデバイスが、キューモードにあるかどうか判断し、そうである場合、プロセスは、２２４に進み、そうではない場合、プロセスは、ステップ２２０に進む。ステートマシン１１８内のステータスビットは、キュー／非キューモードを示す。キューモードは、待機コマンドを有しているのと同じであって、非キューモードは、非待機コマンドを有しているのと同じである。キューモードは、２つ以上のコマンドをＳＡＴＡデバイスに送信可能とする一方、非キューモードは、１つのコマンドをそこに送信することのみ可能にする。ＳＡＴＡ規格は、キューモードおよび非キューモードを規定する。
【００８１】
ステップ２２０では、テーブル１１６が空になる、すなわち、キューモードから脱するのを待つための時間が割かれ、同様に、ステータスマネージャ１１８が空になるのを待つための時間が割かれ、これが生じると、ステップ２２２が行われ、ステートマシン１１８内のステータスは、キューモードに設定され、プロセスは、２１８に進み、ステートマシン１１８がキューモードにあると判断される。
【００８２】
次に、２２４では、テーブル１１６内の場所が、利用可能であるかどうか判断され、そうである場合、プロセスは、ステップ２２６に進み、そうではない場合、場所が１１６内で利用可能になるのを待つための時間が割かれる。次に、ステップ２２６では、ＳＡＴＡドライブまたはデバイスに送信されるコマンドは、場所１１４からテーブル１１６に移動する。次に、ステップ２２８では、コマンドは、ＳＡＴＡデバイスに送信され、プロセスは、ステップ２１２に戻る。
【００８３】
図１８では、図１７のステップ２１４において、受信したコマンドが待機コマンドではないと判断後、ステートマシン１１８によって行われる関連ステップを示す。図１８では、２１６後、２３０において、ステートマシン１１８がキューモードにあるかどうか判断され、そうである場合、プロセスは、ステップ２３２に進み、テーブル１１６が空になるのを待つための時間が割かれ、それが行われると、次のステップ２３４が実行される。ステップ２３４では、ステートマシン１１８は、非キューモードに設定され、プロセスは、２３０に進む。２３０において、ステートマシン１１８がキューモードにあると判断される場合、ステップ２３６が行われる。ステップ２３６では、テーブル１１６が空になるのを待つための時間が割かれる。テーブル１１６が空になると、コマンドは、ＳＡＴＡデバイスに送信され、プロセスは、図１７のステップ２１２に戻る。
【００８４】
図１９〜図２１は、ＳＡＴＡデバイスまたはドライブが、ホストあるいはイニシエータにステータスをリターンすると、行われる関連ステップを示す。図１９では、ステップ２４０において、ＳＡＴＡデバイスまたはドライブは、ステートマシン１１９によって管理されるデバイス８０に、ステータスをリターンまたは返送する。ステートマシン１１９は、現在のモードが待機モードであるかどうかを判断する。モードがキューモードである場合、ステップ２４４では、ステータスは、ステートマシン１１９によって、復号化される。次に、ステップ２４６では、ステータスマネージャ１２０または１２１の保持レジスタ内のビットは、ステータスをホストに中継するために、復号化されたステータスに従って設定され、プロセスは、２４８に進む。
【００８５】
２４２において、モードがキューモードではないと判断される場合、プロセスは、ステップ２５０に進み、ＳＡＴＡデバイスから受信したステータス情報は、ステータスマネージャ１２０または１２１に送信され、プロセスは、２４８に進む。
【００８６】
図２０では、２４８の後、２５２において、手動ステータス要求がなされたかどうか判断され、そうである場合、プロセスは、ステップ２５４に進み、ＳＡＴＡデバイスのステータスは、手動で送信される。２５２において、手動ステータス要求が送信されていないと判断される場合、プロセスは、２５６に進み、キューモードに関する判断が行われ、現在のモードがキューモードであると判断される場合、プロセスは、２５８に進むが、しかしながら、キューモードが検出されない場合、プロセスは、２６０に進み、別の判断が行われる。２６０では、コマンドステータスが利用可能であるかどうか判断され、そうである場合、プロセスは、ステップ２６２に進み、そうではない場合、プロセスは、２５２に戻る。
【００８７】
２６０において、コマンドステータスが利用可能であると判断される場合、コマンドステータスは、ステップ２６２において、ホストまたはイニシエータに送信される。次に、ステップ２６４では、テーブル１１６は更新され、利用可能な場合、次の保留ステータスを反映する。さらに、ステップ２６６では、テーブル９３が更新され、使用されたポインタを再び利用可能にする。同様に、ステップ２６８では、テーブル１１２が更新される。
【００８８】
２５８の後、プロセスは、２７０に進み、図２１では、ＣＳＭ９４によって、コマンドステータスが利用可能であるかどうか判断され、コマンドステータスが利用可能ではないと判断される場合、プロセスは、図１９のステップ２４０に進み、そうでなければ、プロセスは、ステップ２７２に進む。ステップ２７２では、最優先ステータスは、イニシエータに送信される。２７４では、ステータスが、イニシエータに無事送信されたかどうか判断され、そうである場合、プロセスは、ステップ２７６に進み、そうでなければ、プロセスは、ステップ２４０に進む。
【００８９】
ステップ２７６では、優先ステータスは、ステップ２７２で送信された前の最優先ステータスに照らして更新される。次に、ステップ２７８では、テーブル１１６が更新され、利用可能な場合、次の保留ステータスを反映する。さらに、ステップ２８０では、テーブル１１２が更新され、同様に、ステップ２８２では、テーブル９３が更新され、ポインタを利用可能にする。ステップ２８２後、プロセスは、ステップ２４０に戻る。
【００９０】
また、ステータスマネージャ１２０および１２１はそれぞれ、実行される要求の公正を達成するために、イニシエータからの要求を実行する際の公正を記録する。本公正ポリシーは、最初に実行されたイニシエータからの最も古い要求に基づき、さらに、イニシエータのステータスがビジー状態であるかどうかに基づく。ステータスマネージャは、図１３のリトライタイマ１７１をチェックすることによって、イニシエータがビジー状態であるかどうかの知識を有する。イニシエータがビジー状態であると判断されると、ＳＡＳエンジンは、タイマ１７１を始動し、タイマ１７１が満了していると、ＳＡＳエンジンは、イニシエータの可用性を判断する目的のために、ステータスマネージャによってチェックされるステータスビットを消去する。
【００９１】
ビジー状態ではないイニシエータからの最も古い要求は、最初に実行され、次に、ビジー状態ではないイニシエータからの次に最も古い要求が続き、以降同様である。イニシエータからの要求が実行されると、要求は、要求リストの最後に移動する。したがって、テーブルまたはリンクリストが使用される場合、ビジー状態ではないイニシエータからのテーブルまたはリンクリストの最初に位置する要求が実行され、実行後、テーブルまたはリンクリストの最後に移動する。
【００９２】
図２２は、上述の公正ポリシーを施行する際に、ステータスマネージャ１２０または１２１によって行われる関連ステップを示す。ステップ２９０では、保留ステータスが存在し、ステータスは空ではないと仮定すると、次のステップ２９２は、イニシエータに対する保留要求（上述のように、本発明の一実施形態では、これらの要求は、テーブルまたはリンクリスト内にあるであろう）の中の最初のエントリをフェッチし、次いで、２９４では、ステップ２９２において要求がフェッチされたイニシエータがビジー状態であるかどうか判断し、そうである場合、フェッチされたエントリは処理されず、むしろ、ステップ２９６において、要求テーブルまたはリンクリストの最初から、次のエントリがフェッチされ、エントリがステップ２９６においてフェッチされたイニシエータは、２９４において、ビジー状態をチェックされる。イニシエータが、ビジー状態であると検出されると、ステータスマネージャが、本エントリをスキップし、優先順位リストの最初に維持することを確認可能なように、図１３のリトライタイマ１７１が始動される。
【００９３】
２９４において、イニシエータがビジー状態ではないと分かった場合、ステップ２９８においてフェッチされたエントリまたは要求に応答して、ステータスは、イニシエータに送信される。次に、３００では、送信されたステータスの成功が検証され、ステータスが無事に送信されなかったと判断される場合、プロセスは、ステップ２９０に戻り、そうでなければ、プロセスは、ステップ３０２に進む。
【００９４】
ステップ３０２では、要求テーブル内にないイニシエータからの新しいエントリまたは要求は、テーブルまたはリストの最後に追加される。すなわち、テーブルが更新され、追加要求を含むが、公正ポリシーに従って、新しい要求は、テーブルの最後に追加される。
【００９５】
次に、３０８では、保留イニシエータのさらなるステータスがないかどうか判断される場合、そうである場合、プロセスは、ステップ３０６に進み、そうでなければ、プロセスは、ステップ２９０に戻る。ステップ３０６では、イニシエータからのさらなるエントリまたは要求があると判断される場合、追加要求／エントリは、エントリのリストまたはテーブルの最後に格納される。
【００９６】
図２３は、ＳＡＴＡデバイスがイニシエータの要求に応答して、ステータスをリターンする際の関連ステップを示す。最初に、ステップ３１０では、ＳＡＴＡデバイスのステータスは、ＤＲＶＭ９８からリターンされる。一実施形態では、これは、３２ビット値であるが、値は、長さならびにフォーマットが異なり得ることを理解されたい。次に、上述のように、テーブル１１６のマッピングが行われる。次に、ステップ３１２では、送受信され得る現在のステータスは、ステータスマネージャ１２０または１２１内に格納されたステータスと、後者によって比較される。格納されたステータスは、保持ステータスレジスタ３１４内に位置する。
【００９７】
図２４は、ステータスレジスタ１２０および１２１のそれぞれ内に含まれる、例示的な保持ステータスレジスタ３１４を示す。レジスタ３１４は、ステータスマネージャに入って来るステータスを比較し、同様に、レジスタ３１４から出て行くステータスを比較する。
【００９８】
次に図２５を参照すると、メモリシステム１０００は、本発明の実施形態による、エキスパンダ１４００、Ｅ０、およびＥ１の群に連結されるイニシエータ１２００、Ｉ０、およびＩ１の群を含むように示され、エキスパンダの群は、通信システム１６００と通信する。２つのイニシエータおよび２つのエキスパンダが示されるが、任意の数のイニシエータおよびエキスパンダが採用されてもよいことを理解されたい。システム１６００は、「ターゲット」とみなされ得る。エキスパンダＥ０およびＥ１は、スイッチとして機能し、典型的には、そこに接続される多くのターゲットおよび／またはエキスパンダの階層を有する。随意に、エキスパンダが使用されなくても、さらに随意に、イニシエータは、エキスパンダ内に位置されてもよい。全体として、システム１０００のトポロジは、フレキシブルに変更可能である。Ｉ０は、Ｅ０およびＥ１に連結して示され、Ｉ１は、Ｅ１およびＥ０に連結して示され、Ｅ０およびＥ１は、互いに連結して示される。
【００９９】
システム１０００は、ＳＡＴＡディスクドライブ１８００に連結して示される。ディスクドライブ１８００は、ＳＡＴＡドライブであって、したがって、ＳＡＴＡ規格を使用して、システム１０００と通信する。システム１０００は、ＳＡＳインターフェースを使用して、エキスパンダＥ０およびＥ１との通信をもたらすための２つのポート、ポート２０００および２２００を含むように示される。システム１０００は、ＳＡＴＡ規格プロトコルを使用して、ドライブ１８００と通信するために、第３のポート２４００を使用する。ドライブ１８００は、同時に有効であってもよい２つ以上の通信パスを有するデュアルポートである。
【０１００】
図２５には示されないが、実際の用途では、システム１０００は、エキスパンダに連結されるドライブ１８００に類似の多くのドライブを含んでもよい。例えば、エキスパンダ２６００は、多数のドライブに連結されてもよく、エキスパンダ２６００以外に、他のエキスパンダ（図示せず）を採用し、他のドライブをシステムにさらに連結してもよい。上述のシステムでは、典型的には、同様に、多数のイニシエータが存在するであろう。それ自体がシステム１０の用途例である、図２５のシステム１０００のいくつかの用途例は、文書の記憶および検索、写真の記憶および検索、会計ソフトウェアの記憶および検索、ならびにＲＡＩＤを使用する基本的にあらゆる他の用途を含むが、それらに限定されない。大記憶容量が採用されるため、そのステータスおよびエラーに関する種々の情報同様に、イニシエータ等のデバイスへの複数のパスを有することが、非常に望ましい。これによって、他の効果の中でも、さらなるフレキシビリティ、より優れたシステムパフォーマンス、およびさらなる低コストを可能にすることが明白である。
【０１０１】
ドライブ１８００は、ＲＡＩＤに類似するが、但し、デュアルポートであって、電子情報の記憶のためのドライブを使用するイニシエータによってアクセスされる。２つ以上のイニシエータが採用される場合、イニシエータがすべてのドライブへのアクセスを必要とする等の複数の課題が生じるが、本明細書に開示される種々の実施形態および方法によって解決される。
【０１０２】
本発明は、特定の実施形態の観点から説明されたが、その変更および修正は、当業者には明白となることは疑う余地がないことが予測される。したがって、以下の請求項は、本発明の真の精神および範囲内であるとして、あらゆるそのような変更および修正を網羅するものと解釈されることが意図される。本発明と従来技術を組み合わせ、本発明の教示を含む、複数の機能を行うデバイスおよび方法を開発することは、当業者には明白である。そのようなデバイスおよび方法は、本発明の範囲内である。
【図１】
2010514063.tif 000003
【図２】
2010514063.tif 000004
【図３】
2010514063.tif 000005
【図４】
2010514063.tif 000006
【図５】
2010514063.tif 000007
【図６】
2010514063.tif 000008
【図７】
2010514063.tif 000009
【図８】
2010514063.tif 000010
【図９】
2010514063.tif 000011
【図１０】
2010514063.tif 000012
【図１０（ａ）】
2010514063.tif 000013
【図１１】
2010514063.tif 000014
【図１２】
2010514063.tif 000015
【図１３】
2010514063.tif 000016
【図１４】
2010514063.tif 000017
【図１５】
2010514063.tif 000018
【図１６】
2010514063.tif 000019
【図１７】
2010514063.tif 000020
【図１８】
2010514063.tif 000021
【図１９】
2010514063.tif 000022
【図２０】
2010514063.tif 000023
【図２１】
2010514063.tif 000024
【図２２】
2010514063.tif 000025
【図２３】
2010514063.tif 000026
【図２４】
2010514063.tif 000027
【図２５】
2010514063.tif 000028
【国際調査報告】
2010514063.tif 000029
2010514063.tif 000030
2010514063.tif 000031