(57)【要約】【課題】コンピュータ・システム内のデータ記憶装置間でデータを直接転送するためのコントローラ装置を提供すること。【解決手段】本発明のコントローラ装置は、コントローラを複数のデータ記憶装置、例えばハード・ディスク装置およびＣＤ−ＲＷ装置に接続するための装置インタフェース論理と、コントローラをＰＣＩバスのようなバスを介してホストまたはホスト・コンピュータに接続するためのホスト・インタフェース論理とを含む。ホストは、それに接続された多数の他のコンポーネント、例えばホスト・メモリを含む。コントローラは、データを発信元のデータ記憶装置から少なくとも１つの宛先データ記憶装置へ直接、つまり転送データをコントローラからバスを介してホストおよび／またはホスト・メモリに受け渡すことなく、転送することを可能にする、スイッチング回路機構を含む。【選択図】図４
2006059365.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ・システム内の第１装置から少なくとも１つの第２装置へのデータの転送を制御するためのコントローラ（１００）において、
第２バスを介してインタフェースしたホスト・メモリを有するホスト・コンピュータに、第１バスを介して前記コントローラをインタフェースするためのホスト・インタフェース論理（１０２）と、
第１装置バスを介して前記コントローラを前記第１装置とインタフェースするための第１装置インタフェース論理（１０４）であって、前記第１バスを介して前記第１装置からデータを読み出す第１装置インタフェース論理と、
第２装置バスを介して前記コントローラを前記第２装置とインタフェースするための第２装置インタフェース論理（１０６）であって、前記第２バスを介して前記第２装置へデータを書き込む第２装置インタフェース論理と、
前記第１装置インタフェース論理と前記ホスト・インタフェース論理との間に接続され、それらの間のデータ転送を制御するための第１バッファ（１１２）と、
前記第２装置インタフェース論理と前記ホスト・インタフェース論理との間に接続され、前記第２装置インタフェース論理と前記ホスト・インタフェース論理との間のデータ転送を制御するための第２バッファ（１１６）と、
前記第１バッファと前記ホスト・インタフェース論理との間に接続され、かつ前記第１バッファと前記第２バッファとの間に接続された第１多重化回路機構（１１４）であって、データが前記ホスト・インタフェース論理ならびに前記第１バス、前記ホスト・コンピュータ、前記第２バス、および前記ホスト・メモリのうちの少なくとも１つに渡されることなく、前記第２バッファから前記第１バッファへのデータの転送を制御する第１多重化回路機構と、
前記第２バッファと前記ホスト・インタフェース論理との間に接続され、かつ前記第２バッファと前記第１バッファとの間に接続された第２多重化回路機構（１１８）であって、転送データが前記ホスト・インタフェース論理ならびに前記第１バス、前記ホスト・コンピュータ、前記第２バス、および前記ホスト・メモリのうちの少なくとも１つに渡されることなく、前記第１バッファから前記第２バッファへのデータの転送を制御する第２多重化回路機構と、
を備えたコントローラ。
【請求項２】
前記第１装置から前記第２装置へのデータの転送が、前記第１装置から前記第２装置へ少なくとも１組のデータをコピーすることを含む、請求項１に記載のコントローラ。
【請求項３】
前記第１バッファおよび第２バッファに接続されたデータ検証論理であって、転送データが前記ホスト・インタフェース論理ならびに前記第１バス、前記ホスト・コンピュータ、前記第２バス、および前記ホスト・メモリのうちの少なくとも１つに渡されることなく、前記第１装置と前記第２装置との間で転送されるデータに対し少なくとも１回のデータ検証動作を実行するように構成されたデータ検証論理をさらに備えた、請求項１に記載のコントローラ。
【請求項４】
前記ホスト・コンピュータが少なくとも１つのシリアル・アドバンスト・テクノロジー・アタッチメント（ＳＡＴＡ）ＩＩ最適化機能を実行するための論理を含み、前記ホスト・コンピュータが前記少なくとも１つのＳＡＴＡ  ＩＩ最適化機能を使用不能にしたときに、転送データが前記ホスト・インタフェース論理ならびに前記第１バス、前記ホスト・コンピュータ、前記第２バス、および前記ホスト・メモリのうちの少なくとも１つに渡されることなく、前記コントローラが前記第１および第２装置間のデータの転送を制御して成る、請求項１に記載のコントローラ。
【請求項５】
前記ホスト・コンピュータがネイティブ・コマンド・キューイング（ＮＣＱ）を実行するための論理を含み、ネイティブ・コマンド・キューイングが使用可能であるときに、転送データが前記第１バス、前記ホスト・コンピュータ、前記第２バス、および前記ホスト・メモリのうちの少なくとも１つに渡されることなく、前記コントローラが前記第１および第２装置間のデータの転送を制御するためのネイティブ・コマンド・キューイング論理をさらに備えて成る、請求項１に記載のコントローラ。
【請求項６】
前記コントローラが第１コントローラおよび少なくとも１つの第２コントローラをさらに備え、前記第１コントローラが第１コントローラ・インタフェースを介してバス・スイッチとインタフェースし、前記少なくとも１つの第２コントローラが対応する第２コントローラ・インタフェースを介して前記バス・スイッチとインタフェースし、前記バス・スイッチは、前記ホスト・コンピュータが前記第１バス、前記バス・スイッチ、および対応するコントローラ・インタフェースを介して前記第１コントローラとインタフェースするように、前記第１バスを介して前記ホスト・コンピュータおよび前記少なくとも１つの第２コントローラとインタフェースし、前記第１コントローラ、前記バス・スイッチ、および前記少なくとも１つの第２コントローラは、転送データが前記第１バス、前記ホスト・コンピュータ、前記第２バス、および前記ホスト・メモリのうちの少なくとも１つに渡されることなく、前記第１コントローラおよび前記第２コントローラ間のデータ転送を制御して成る、請求項１に記載のコントローラ。
【請求項７】
前記第１バッファが、
前記第１装置インタフェース論理と前記ホスト・インタフェース論理との間に接続され、かつ前記第１装置インタフェース論理と前記第２多重化回路機構との間に接続された第１先入れ先出し（ＦＩＦＯ）バッファ装置と、
前記第１多重化回路機構と前記第１装置インタフェース論理との間に接続された第２ＦＩＦＯバッファ装置と、
をさらに備えて成る、請求項１に記載のコントローラ。
【請求項８】
前記第２バッファが、
前記第２装置インタフェース論理と前記ホスト・インタフェース論理との間に接続され、かつ前記第２装置インタフェース論理と前記第１多重化回路機構との間に接続された第３ＦＩＦＯバッファ装置と、
前記第２多重化回路機構と前記第２装置インタフェース論理との間に接続された第４ＦＩＦＯバッファ装置と、
をさらに備えて成る、請求項１に記載のコントローラ。
【請求項９】
前記第１バス、前記第１装置バス、および前記第２装置バスのうちの少なくとも１つがＰＣＩバスをさらに備えて成る、請求項１に記載のコントローラ。
【請求項１０】
前記コントローラの少なくとも一部分が集積回路（ＩＣ）として製造される、請求項１に記載のコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シリアルＡＴＡ（ＳＡＴＡ）ホスト・コントローラのようなコントローラに関する。さらに詳しくは、本発明は、ホストおよびホスト・メモリのデータ転送タスクを軽減して、ホストとコントローラとの間のインタフェース上のデータ転送の量を低減する、改良されたコントローラに関する。
【背景技術】
【０００２】
コンピュータおよびコンピュータ・アーキテクチャの世界では、データ記憶装置およびそれらのインタフェースはその製造および動作がいっそう高度になってきており、したがって結果的にデータ転送および格納の速度が増大している。コンピュータ・ハード・ディスクのような装置とコンパクト・ディスク読出し／書込み（ＣＤ−ＲＷ）ドライブのようなドライブとの間でデータが転送される速度は、ホスト・コンピュータのメモリのサイクル・タイム（クロック速度）の増加より大きい割合で増大している。例えば、アドバンスト・テクノロジー・アタッチメント（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）（ＡＴＡ）として知られるディスク・ドライブ・インタフェース標準を使用するデータ記憶装置は、インテグレーテッド・ドライブ・エレクトロニクス（Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）（ＩＤＥ）としても知られ、現在、少なくとも２．４ギガビット毎秒（Ｇｂ／ｓ）の転送速度を有する。シリアルＡＴＡ（ＳＡＴＡまたはＳ−ＡＴＡ）として知られる標準に発展したＡＴＡ標準は、装置自体における装置コントローラの一体化を特徴とする。
【０００３】
装置間のデータ転送は一般に、第１装置からホスト・メモリへのデータの転送、次いでホスト・メモリから第２装置へのデータの転送を含む。データ記憶装置は、通常はＩＤＥケーブルのようなインタフェース・ケーブルを介して、コントローラ、例えばホスト・コントローラとインタフェースすることによって、ホスト・コンピュータに接続する。コントローラ、例えばＡＴＡコントローラまたはＳＡＴＡコントローラは、バス、例えばＰＣＩバスまたはＰＣＩエクスプレス・バスを介してホスト・コンピュータおよびそのメモリとインタフェースする。ＰＣＩバスは、周辺コンポーネント相互接続（ＰＣＩ）バス標準に従って製造され動作するインタフェース・バスである。
【０００４】
上述した比較的高いデータ転送速度でデータ記憶装置のデータにアクセスすると、ホスト、ホスト・メモリ、およびホストをコントローラに接続するバスに負荷を加える。さらに、他の装置およびそれらのインタフェース、例えばユニバーサル・シリアル・バス（ＵＳＢ）およびファイヤワイヤ・インタフェースが、ホストおよびホスト・メモリに接続されたバス上でデータ転送時間を得るために競う。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
したがって、ホスト、ホスト・メモリ、およびホストとコントローラとの間のバスに従来要求されるタスクを軽くすることによって、データ転送動作中のホスト、ホスト・メモリ、およびホストとコントローラとの間のバスの使用を軽減する、改善されたコントローラ装置および方法を持つことが望まれる。
【課題を解決するための手段】
【０００６】
本発明は、コンピュータ・システム内のデータ記憶装置間でデータを転送するための改良されたコントローラ装置に具現される。改良されたコントローラ装置は、コントローラを複数のデータ記憶装置、例えばハード・ディスク装置およびＣＤ−ＲＷ装置に接続するための装置インタフェース論理と、ＰＣＩバスのようなバスを介してコントローラをホストまたはホスト・コンピュータに接続するためのホスト・インタフェース論理とを含む。ホストは、それに接続された多数の他のコンポーネント、例えばホスト・メモリを含む。データ記憶装置間の従来のデータ転送では、発信元装置からのデータは、コントローラによって読み出され、コントローラからバスを介してホストおよび／またはホスト・メモリ装置に転送される。次いで、データはホスト・メモリ装置および／またはホストから、バスを介してコントローラに転送され、次いでコントローラから宛先装置に書き込まれる。したがって、従来のデータ転送では、データはホストとコントローラの間のバスを数回転送され、ホストのコンピューティング資源およびホスト・メモリのストレージ資源を一時的に占有する。本発明の実施形態では、コントローラは、データを発信元データ記憶装置から少なくとも１つの宛先データ記憶装置へ直接、つまり転送データをコントローラからバスを介してホストおよび／またはホスト・メモリに受け渡すことなく、転送することを可能にする、スイッチング回路機構を含む。スイッチング回路機構は、発信元装置インタフェースおよび発信元装置インタフェース論理を介してデータを発信元装置から、宛先装置インタフェース論理および宛先装置インタフェースを介して宛先装置へ直接転送するために、適切なバッファリング回路機構および多重化回路機構を含む。多重化回路機構は、バッファリング回路機構がデータ記憶装置から、または従来の方法でホスト・バスからデータを受け取ることを可能にする。本発明の代替的実施形態から、改良されたコントローラは、データ転送の完全性を検証するためのデータ検証論理をも含む。本発明の実施形態では、改良されたコントローラは、大半のデータ転送動作中に、ホスト、ホスト・メモリ、およびホストとコントローラとの間のバスをデータ転送責任の多くから解放する。また、本発明の実施形態では、データ転送に要する時間が短縮され、データ転送コンポーネントの消費電力が低下する。
【発明を実施するための最良の形態】
【０００７】
以下の説明では、図面の説明を通して発明の理解を高めるために、同様の参照番号は同様のコンポーネントを示す。また、以下では特定の特徴、形状構成、および配置について論じるが、単に例示目的でそうするにすぎないことを理解すべきである。本発明の精神および範囲から逸脱することなく、他の工程、形状構成、および配置が有用であることを、関連技術分野の熟練者は認識されるであろう。
【０００８】
今、図１を参照すると、ホスト・コントローラ（ＨＣ）のような従来の大容量記憶コントローラ１０の簡易模式図が示されている。従来、ホスト・バス・アダプタ（ＨＢＡ）としても知られるコントローラ１０は、マザーボード上のＰＣＩスロットにプラグインされるコンピュータ回路基板上に物理的に配置される。代替的に、コントローラ１０またはコントローラ１０の一部分は集積回路（ＩＣ）として製造され、あるいはコントローラ１０は、ＰＣＩバスをも（内部に）含むコンピュータ・チップ上に集積化される。
【０００９】
コントローラ１０は、バス・インタフェースまたはバス１４を介してホストまたはホスト・コンピュータ１２に接続される。バス１４の１つの型がＰＣＩバスであり、それは周辺コンポーネント相互接続（ＰＣＩ）バス標準に従う仕様を有するバスである。一般に、バス１４は、接続の各端に配置された適切なインタフェース論理または制御論理を介して、ホスト・コンピュータ１２に接続される。そのような論理は、スタンドアロンと識別された場合、時々、入力コントローラまたはインタフェース・コントローラと呼ばれる。しかし、この考察では、コントローラ１０との混同を回避するために、そのような論理をインタフェース論理または制御論理と呼ぶ。
【００１０】
例えば、バス１４は、ホスト・コンピュータ１２の一部である第１インタフェース論理１６と、コントローラ１０の一部であるホスト・インタフェース論理１８との間に接続される。各インタフェース論理は、ホスト・コンピュータ１２およびコントローラ１０がバス１４を介して相互に適切に通信することを可能にするために、適切な制御論理を含む。また、一般に、ホスト・コンピュータ１２内に含まれる第１インタフェース論理１６は、ホスト・コンピュータ１２が適切なホスト・メモリ・バス２４およびメモリ・インタフェース論理２６を介して、または何らかの他の適切なインタフェース装置を介して、他のシステム・コンポーネント、例えばホスト・メモリ装置２２とインタフェースすることを可能にする、適切な制御論理を含む。
【００１１】
複数のデータ記憶装置がコントローラ１０に接続される。例えば、両方とも、アドバンスト・テクノロジー・アタッチメント（ＡＴＡ）として知られ、インテグレーテッド・ドライブ・エレクトロニクス（ＩＤＥ）としても知られるディスク・ドライブ・インタフェース標準を使用する、読出し／書込み可能なハード・ディスク（ＨＤ）３２および読出し／書込み可能なコンパクト・ディスク（ＣＤ−ＲＷ）３４は、ディジー・チェーン接続ＩＤＥケーブルのようなインタフェース３６および適切な装置インタフェース論理３８を介して、コントローラ１０に接続される。データ記憶装置をコントローラ１０に接続するために、他の適切な装置が存在することを理解する必要がある。概して、インタフェース３６は、コントローラ１０がデータをデータ記憶装置３２、３４のいずれかからホスト・メモリ２２へ（ホスト１２を介して）転送するか、またはデータをホスト・メモリ２２からデータ記憶装置３２、３４のいずれかに転送することを可能にする。
【００１２】
第１装置から第２装置への従来のデータ転送動作では、データ・セットまたはデータ・ファイルが第１または発信元装置、例えばハード/ドライブ３２から、コントローラ１０およびホスト１２を介して、ホスト・メモリ２２に読み出される。次いで、データ・セットは、ホスト１２およびコントローラ１０を通して、ホスト・メモリ２２から第２または宛先装置、例えばＣＤ−ＲＷドライブ３４に書き込まれる。少し詳細な観点から見ると、データ転送動作は複数のデータ転送に分割され、各データ転送は一般にわずか６４キロバイト（Ｋバイト）しか転送しない。概して、ビット・レベルでは、データ転送は、複数の物理領域記述子（ＰＲＤ）を含む物理領域記述子テーブルの使用を含む。
【００１３】
装置の１つによってコピー動作を要求されたことがホストに通知されると、ホストによってＰＲＤが作成される。一般に、各ＰＲＤは８バイト、つまり各々４バイトのＤｗｏｒｄ２個を含む。各ＰＲＤの第１のＤｗｏｒｄはメモリ領域物理ベース・アドレスを含む。各ＰＲＤの第２のＤｗｏｒｄでは、最初の２バイトは予約される。しかし、この予約フィールドの最上位ビットは、例えば論理により、テーブルの終わりに達したかどうかを示す。各ＰＲＤの第２のＤｗｏｒｄの次の２バイトは、ＰＲＤバイト・カウントのフィールドを含む。バイト・カウント・フィールドは、メモリ領域物理ベース・アドレスを先頭に何バイトを転送するかを示す。バイト・カウントが零の場合には、６４Ｋバイトが転送される。例えば、ハード・ディスクからＣＤ−ＲＷへの６００メガバイト（Ｍバイト）のコピー動作の場合、コピー動作は、複数のＰＲＤテーブルを使用して、または新しい内容で再利用される同じＰＲＤテーブルを使用して、約１０，０００個のＰＲＤに分割される。
【００１４】
データ転送がエラー無く行われたことを検証するために、転送されたデータは一般に読み戻される。１つの従来の方法では、原データは発信元装置（例えばハード・ディスク３２）からホスト１２に読み戻され、コピーされたデータは宛先装置（例えばＣＤ−ＲＷドライブ３４）からホスト１２に読み戻され、２つは、例えば２組のデータ間の相違を識別する従来のプログラムを使用して、ホスト１２によって比較される。別の従来のデータ検証方法では、ホスト１２は、コピーされたデータ・セットのデジタル・シグネチャまたはフィンガプリントを取り、それをソース・データ・セットから事前計算されたデジタル・シグネチャと比較する。この方法では、コピーされたデータ・セットだけを宛先装置からホスト１２に読み戻さなければならない。例えば、ＭＤ５アルゴリズムのようなアルゴリズムは、ソース・データ・セットがコピーされる前に、ソース・データ・セットの「メッセージ・ダイジェスト」として知られるデジタル・シグネチャを事前計算する。コピー動作後、コピーされたデータ・セットは宛先装置からホストに読み戻され、一般にホスト１２内に配置されたＭＤ５アルゴリズムは、コピーされたデータ・セットのデジタル・シグネチャを計算し、コピーされたデータ・セットのデジタル・シグネチャをソース・データ・セットのデジタル・シグネチャと比較する。
【００１５】
しかし、いずれの方法においても、ホスト１２がデータにアクセスしてデータ検証プロセスを実行することができるホスト・メモリ２２に、少なくとも１つのデータ・セットをバス１４で読み戻さなければならない。したがって、従来のデータ転送動作および検証の場合、完全なデータ・セットが３回または４回転送され、データ・セット転送のたびに、バス１４、ホスト・メモリ２２、およびホスト１２のようなコンピューティング資源が占有される。
【００１６】
引き続き図１を参照しながら、今、図２を参照すると、２つの外部装置間のデータ転送動作中の時間の関数として、従来のホスト・コントローラ（例えばコントローラ１０）とホスト・コンピュータ（例えばホスト１２）との間に接続されたバス１４の利用の簡略図が示されている。例えば、ハード・ディスク３２とＣＤ−ＲＷ３４との間のデータの転送の場合、ホスト１２は、発信元装置、例えばハード・ディスク３２からデータ転送要求を受け取る。ホスト１２はデータ転送要求を受け取ると、例えば上述したように、ＰＲＤテーブルの作成を含め、バス１４でのデータ読出し転送のための初期セットアップを実行する（４２として図示）。例示を目的として、データ読出し動作のための２つのＰＲＤテーブルおよびデータ書込み動作のための２つのＰＲＤテーブルだけを図示し、本明細書で説明する。
【００１７】
初期セットアップ４２の後、コントローラ１０は、読み出そうとするデータのバイト・カウントおよびメモリ・アドレス（他の情報の中で）を求めて、第１のＰＲＤテーブルにアクセスする（一般に４４として図示）。データ・セットのデータの第１バッファ部分４６は、インタフェース３６を介してハード・ディスク３２（つまり発信元装置）からコントローラ１０に読み出され、次いでバス１４、ホスト１２、およびホスト・メモリ・バス２４を介してホスト・メモリ２２に読み出される。バス１４を介するデータの第１バッファ部分４６の読出し動作を、一般に矢印４８によって示す。
【００１８】
次いで、コントローラ１０は次のＰＲＤテーブルにアクセスし（一般に５２として図示）、データ・セットの次のバッファ部分、例えば第２バッファ部分５４がハード・ディスク３２からコントローラ１０に読み出され、次いでバス１４、ホスト１２、ホスト・メモリ・バス２４を介して、ホスト・メモリ２２に読み出される。バス１４を介してデータの第２バッファ部分５４のデータ読出しを、一般に矢印５６によって示す。ちょうど述べたばかりの方法で、コントローラ１０は次いで後続のＰＲＤテーブルにアクセスし（図示せず）、データ・セット内の全てのデータがハード・ディスク３２からホスト・メモリ２２に読み出されるまで、後続のデータ読出しが実行される（図示せず）。
【００１９】
データ・セットがハード・ディスク３２からホスト・メモリ２２に読み出された後、コントローラ１０はバス１４を介して割込みを発行する（５８として図示）。次いで、ホスト１２は、ＰＲＤテーブルの作成を含め、データ書込み動作のためのセットアップを実行する（６２として図示）。次いでコントローラ１０は書込みＰＲＤテーブルのうちの最初のテーブルにアクセスし（一般に６４として図示）、以前にホスト・メモリ２２に読み出されたデータの第１バッファ部分（６６として図示）が、ホスト・メモリ２２からホスト・メモリ・バス２４、ホスト１２、およびバス１４を介してコントローラ１０に書き込まれ、次いで装置インタフェース３６を介して宛先装置（例えばＣＤ−ＲＷ３４）に書き込まれる。データ・セットの第１バッファ部分６６のデータ書込み動作を一般に矢印６８で示す。
【００２０】
次に、コントローラ１０は次のＰＲＤテーブルにアクセスし（一般に７２として図示）、以前にハード・ディスク３２からホスト・メモリ２２に読み出されたデータ・セットの次のバッファ部分（７４として図示）が、ホスト・メモリ２２から（ホスト・メモリ・バス２４、ホスト１２、およびバス１４を介して）コントローラ１０に書き込まれ、次いで装置インタフェース３６を介して宛先装置（例えばＣＤ−ＲＷ３４）に書き込まれる。そのようなデータ書込み動作を一般に矢印７６で示す。データ・セット内の全てのデータが宛先装置に書き込まれた後、コントローラ１０はホスト１２に割込み（７８として図示）を発行する。
【００２１】
今、図３を参照すると、別の従来のコントローラ８０、例えば、ＡＴＡ標準から発展した標準であるシリアル・アドバンスト・テクノロジー・アタッチメント（ＳＡＴＡまたはＳ−ＡＴＡ）ディスク・ドライブ・インタフェース標準に従って製造されかつ動作するデータ記憶装置とインタフェースする、ホスト・コントローラの簡易模式図が示されている。そのようなコントローラ８０、つまりＳＡＴＡホスト・コントローラは、ホスト１２（バス１４を介して）と、ハード・ディスク３２およびＣＤ−ＲＷ３４のような複数のデータ記憶装置との間をインタフェースする。コントローラ８０は、コントローラ８０がバス１４とインタフェースすることを可能にするインタフェース論理または制御論理８２を含む。
【００２２】
コントローラ８０はまた、各データ記憶装置が、例えば図１に示すようにディジー・チェーン接続構成を介してではなく、直接的にコントローラ８０とインタフェースすることを可能にする、別個の装置インタフェース論理または制御論理をも含む。つまり、コントローラ８０は、第１装置、例えばハード・ディスク３２が第１インタフェース８５を介してコントローラ８０に直接接続することを可能にする、第１装置インタフェース論理８４を含む。また、コントローラ８０は、第２装置、例えばＣＤ−ＲＷ３４が第２インタフェース８７を介してコントローラ８０に直接接続することを可能にする、第２装置インタフェース論理８６を含む。第１および第２インタフェースの各々は、例えばＩＤＥケーブルまたは他の適切なインタフェースである。
【００２３】
コントローラ８０は１対のメモリ・バッファ９２、９３を含む。メモリ・バッファは例えば先入れ先出しメモリ（ＦＩＦＯ）を含み、それは転送されるデータを一時的に格納することによって、コントローラ８０を介するデータ転送を円滑にする。例えば、第１メモリ・バッファ９２は、ハード・ディスク３２からホスト１２へのデータの転送を円滑にするために、ホスト・インタフェース論理８２と第１装置インタフェース論理８４との間に接続された第１ＦＩＦＯ９５を含む。また、第１メモリ・バッファ９２は、ホスト１２からハード・ディスク３２へのデータの転送、例えばホスト・メモリ２２からハード・ディスク３２へのデータの書込みを円滑にするために、ホスト・インタフェース論理８２と第１装置インタフェース論理８４との間に接続された第２ＦＩＦＯ９６を含む。同様に、第２メモリ・バッファ９３は、ホスト１２とＣＤ−ＲＷ３４との間のデータの転送を円滑にするために、ホスト・インタフェース論理８２と第２装置インタフェース論理８６との間に接続された第３ＦＩＦＯ９７および第４ＦＩＦＯ９８を含む。
【００２４】
また、一般に、コントローラ８０は、両方のバッファに特定レベルを超えてデータが充填されるのを避けるために、フロー制御ハードウェア（図示せず）を含む。つまり、フロー制御ハードウェアは、メモリ・バッファの宛先側がそのバッファに格納されたデータの一部を空けるまで、メモリ・バッファの発信元側が追加データを送信するのを防止する。この方法により、転送されるデータは失われない。
【００２５】
図３に示す従来の構成では、装置３２、３４の両方がデータをコントローラ８０へ、またはコントローラ８０から同時に転送することができる。しかし、コントローラ８０は依然として、発信元装置からホスト・メモリ２２へのデータ転送のためにＰＲＤテーブルをセットアップする工程およびホスト・メモリ２２から宛先装置へのデータ転送のためにＲＰＤテーブルをセットアップする工程を含め、図１に示した構成におけるコントローラ１０の場合と同じデータ転送工程を実行しなければならない。
【００２６】
ホスト・メモリ２２への、またはホスト・メモリ２２からのデータの転送に関し、コントローラ８０は直接メモリ・アクセス（ＤＭＡ）転送をサポートするハードウェアを含む。ＤＭＡ転送では、データはホスト１２を介在することなく、直接的にホスト・メモリ２２とインタラクトする。例えば、発信元装置から転送されるデータはコントローラ８０によって読み出され、次いでコントローラ８０から、ホスト・インタフェース論理１６、ホスト・メモリ・バス２４、およびメモリ・インタフェース論理２６を介して、ホスト・メモリ２２に受け渡される。同様に、ホスト・メモリ２２から転送されるデータは、メモリ・インタフェース論理２６、ホスト・メモリ・バス２４、およびホスト・インタフェース論理１６を介して、コントローラ８０に受け渡される。次いでデータはコントローラ８０から宛先装置に書き込まれる。
【００２７】
動作上の観点からは、ＤＭＡ転送は、コントローラ８０がバス・アービタ（図示せず）から、コントローラ８０とホスト１２との間のバス１４のバス・マスタになる許可を要求して得ることを含む。一般に、バス・アービタはコントローラ８０の一部ではない。例えばバス・アービタはホスト１２の一部である。コントローラ８０がバス１４のバス・マスタになる許可をバス・アービタが付与すると、コントローラ８０は直接的に、つまりホスト１２を介在せずに、ホスト・メモリ２２とインタラクトして、データ記憶装置間のデータの転送を管理する。
【００２８】
本明細書で前述した通り、多くの従来のデータ転送動作は、ホストとコントローラとの間のバスを介する数回のデータ転送を含むと共に、ホストおよびホスト・メモリを周期的に占有する。これらのコンピューティング資源の占有は、コンピュータ・デバイスおよびそれらのインタフェース、例えばユニバーサル・シリアル・バス（ＵＳＢ）およびファイヤワイヤ・インタフェースがこれらの資源を利用する能力に悪影響を及ぼす。
【００２９】
本発明の実施形態では、コントローラは、大半のデータ転送動作中に、バス、ホスト、およびホスト・メモリをデータ転送責任の多くから解放することができる改良された構成を含む。また、データ転送に要する時間が短縮され、データ転送コンポーネントの消費電力が低下する。本発明の実施形態では、改良されたコントローラが、コントローラとホスト（したがってホスト・メモリ）との間のバスを迂回して、発信元装置からのデータを宛先装置に直接向ける。代替的に、改良されたコントローラはまた、ホスト、ホスト・メモリ、およびコントローラとホストとの間のバスのようなコンピューティング資源を占有することなく、データ検証動作をも実行する。
【００３０】
今、図４を参照すると、本発明の実施形態に係るコントローラ１００の簡易模式図が示されている。本発明の実施形態では、コントローラ１００またはコントローラ１００の一部分は、マザーボード上のＰＣＩスロットにプラグインされるコンピュータ回路基板上に物理的に配置される。本発明の代替実施形態では、コントローラ１００またはコントローラ１００の一部分は集積回路として製造される。
【００３１】
コントローラ１００は、ホスト・インタフェース論理または制御論理１０２、第１装置インタフェース論理１０４、第２インタフェース論理１０６、およびスイッチング回路機構１０８を含む。ホスト・インタフェース論理１０２は、コントローラ１００がバス１４、例えばＰＣＩバスを介して、ホスト１２（図１および３に図示）とインタフェースすることを可能にする。上述の通り、ホストは一般に、ホスト・メモリ装置２２（図１および３に図示）を含め、他のシステム・コンポーネントとインタフェースする。
【００３２】
第１装置インタフェース論理１０４は、コントローラ１００が、ＩＤＥケーブルまたは他の適切なインタフェースであるインタフェース８５を介して、第１装置、例えばハード・ディスク３２とインタフェースすることを可能にする。第２装置インタフェース論理１０６は、コントローラ１００が、ＩＤＥケーブルまたは他の適切なインタフェースであるインタフェース８７を介して、第２装置、例えばＣＤ−ＲＷ３４とインタフェースすることを可能にする。
【００３３】
スイッチング回路機構１０８は、ホスト・インタフェース論理１０２と装置インタフェース論理、つまり第１装置インタフェース論理１０４および第２装置インタフェース論理１０６との間を接続する。以下でさらに詳述するように、本発明の実施形態では、スイッチング回路機構１０８は、データ記憶装置間のデータ転送を、ホスト、ホスト・メモリ、およびホストとコントローラ１００との間のバス１４のコンピューティング資源を不必要に関与させることなく、コントローラ１００内に留めることを可能にする。
【００３４】
スイッチング回路機構１０８の第１部分は、ホスト・インタフェース論理１０２と第１装置インタフェース論理１０４との間に接続された、第１メモリ・バッファ１１２および第１多重化回路機構１１４を含む。スイッチング回路機構１０８の別の部分は、ホスト・インタフェース論理１０２と第２装置インタフェース論理１０６との間に接続された、第２メモリ・バッファ１１６および第２多重化回路機構１１８を含む。
【００３５】
第１メモリ・バッファ１１２は、第１装置インタフェース論理１０４およびインタフェース８５を介して第１装置（例えばハード・ディスク３２）とやり取りされるデータを一時的に格納する。第１メモリ・バッファ１１２は、第１装置３２から読み出されたデータを一時的に格納する少なくとも１つのバッファ装置（例えば第１ＦＩＦＯメモリ１２２）、および第１装置３２に書き込まれるデータを一時的に格納する少なくとも１つのバッファ装置（例えば第２ＦＩＦＯメモリ１２４）を含む。
【００３６】
同様に、第２メモリ・バッファ１１６は、第２装置インタフェース論理１０６およびインタフェース８７を介して第２装置（例えばＣＤ−ＲＷ３４）とやり取りされるデータを一時的に格納する。第２メモリ・バッファ１１６は、第２装置３４から読み出されたデータを一時的に格納する少なくとも１つのバッファ装置（例えば第３ＦＩＦＯメモリ１２６）、および第２装置３４に書き込まれるデータを一時的に格納する少なくとも１つのバッファ装置（例えば第４ＦＩＦＯメモリ１２８）を含む。
【００３７】
第１多重化回路機構１１４は、第１装置に書き込まれるデータを保存するメモリ装置（つまり第２ＦＩＦＯメモリ１２４）が、ホスト・インタフェース論理１０２を介してバス１４から、または第３ＦＩＦＯメモリ１２６を介して第２装置３４から、データを受け取ることを可能にする回路機構を含む。同様に、第２多重化回路機構１１８は、第２装置に書き込まれるデータを保存するメモリ装置（つまり第４ＦＩＦＯメモリ１２８）が、ホスト・インタフェース論理１０２を介してバス１４から、または第１ＦＩＦＯメモリ１２２を介して第１装置３２から、データを受け取ることを可能にする回路機構を含む。本発明の実施形態では、第１多重化回路機構１１４および第２多重化回路機構１１８は、制御可能にデータを２つ以上のソースから受け取ることを可能にする、いずれかの適切な回路機構である。
【００３８】
スイッチング回路機構１０８は、第１および第２メモリ・バッファ１１２、１１６ならびに第１および第２多重化回路機構１１４および１１８に、発信元装置から読み出されたデータを、例えば従来の方法で、バス１４を介してホスト（およびホスト・メモリ）に転送するか、それともそれぞれのメモリ・バッファを介して宛先装置に直接転送するかを通知するための適切な制御回路機構（図示せず）を含む。スイッチング回路機構１０８内の制御回路機構はまた、第１および第２多重化回路機構１１４、１１８がホストから、および発信元装置のメモリ・バッファからデータを受け取る能力を使用可能または使用不能にする。
【００３９】
本発明の実施形態では、ホストはスイッチング回路機構内の制御回路機構に、データを発信元装置から宛先装置に直接転送するか、それともホストおよびホスト・メモリを介し、次いで宛先装置に転送するかを通知する。例えば、ホストは、転送用データを発信元装置から宛先装置に直接書き込むべきであることを指示するように、スイッチング回路機構内のレジスタ制御ビットをセットする。多重化回路機構がホストからデータを受け取る能力を使用不能にし、かつ多重化回路機構が発信元装置のメモリ・バッファからデータを受け取る能力を使用可能にするための適切な制御ビットは、多重化回路機構でセットされる。それ以外の場合、レジスタ制御ビットがセットされなければ、データは従来の方法で、つまり発信元装置からホスト・メモリへ、次いでホスト・メモリから宛先装置へ転送される。
【００４０】
引き続き図４を参照しながら、今、図５を参照すると、発信元装置（例えばハード・ディスク３２）と宛先装置（例えばＣＤ−ＲＷ３４）との間におけるデータ転送動作中の時間の関数として、本発明の実施形態に係るホストとコントローラ１００との間に接続されたバス１４の利用の簡略図が示されている。最初に、ホストは発信元装置からデータ転送要求を受け取ると、初期セットアップを実行する（一般に１３２として図示）。セットアップは適切なＰＲＤテーブルの作成を含む。
【００４１】
例えば本発明の実施形態では、ホストは、例えば、発信元装置から転送されるデータを読み出すための１つまたはそれ以上のＰＲＤテーブル、および宛先装置に転送されるデータを書き込むための１つまたはそれ以上のＰＲＤテーブルを同時にセットアップする。また、本明細書で上述した通り、ホストは、転送用データが、適切な読取りバッファを介して発信元装置から、適切な書込みバッファを介して適切な多重化回路機構の入力へ、そして宛先装置へ直接転送されることをスイッチング回路機構１０８に通知するために、適切なレジスタ・ビットをセットする。この方法により、スイッチング回路機構１０８は発信元装置から読み出されたデータにバス１４（およびホスト・インタフェース論理１０２）を迂回させ、代わりに、宛先装置の書込み経路内の多重化回路機構（例えば多重化回路機構１１８）の入力に向かわせる。また、宛先装置の書込み経路内の多重化回路機構は、バス１４からではなく、発信元装置の読取り経路内のメモリ・バッファ（例えば第１ＦＩＦＯ１２２）からデータを受け取ることを知る。
【００４２】
ホストが初期セットアップ１３２を実行し、適切なＰＲＤテーブルを作成すると、コントローラ１００はバイト・カウントのために第１ＰＲＤテーブルにアクセスする（一般的に１３４として図示）。本発明の実施形態では、転送されるデータはホスト・メモリ内の場所に書き込まれないので、コントローラ１００はメモリ・アドレスを知る必要が無いことに注目されたい。ＰＲＤテーブルはホスト１２またはホスト・メモリ２２内に配置されるので（例えば図１および３を参照）、コントローラ１００はバス１４を介してＰＲＤテーブルにアクセスする。コントローラ１００がバイト・カウントのために第１ＰＲＤテーブルにアクセスすると、転送されるデータの第１部分（一般に１３６として図示）が発信元装置（例えばハード・ディスク３２）から、インタフェース８５およびインタフェース論理１０４を介して、コントローラ１００に読み出される。
【００４３】
データの第１部分１３６は、発信元装置の適切なメモリ・バッファ（この実施例では、第１ＦＩＦＯメモリ１２２）に一時的に格納される。そこから、コントローラ１００は一般に第１書込みＰＲＤテーブルにアクセスする。しかし、コントローラ１００はバイト・カウントを必要とするだけであり、それは第１書込みＰＲＤテーブル内でも、第１読出しＰＲＤテーブル内と同一である。したがって、本発明の実施形態では、コントローラ１００はバイト・カウントのために再び第１読出しＰＲＤテーブルにアクセスすることができる。したがって、第１書込みＰＲＤテーブルは作成する必要が無い。この方法で、作成しなければならないＰＲＤテーブル（つまり書込みＰＲＤテーブル）の個数が低減され、コントローラ１００によって要求される全体的な処理が簡素化される。コントローラ１００は第１読取りＰＲＤテーブルからバイト・カウントに再びアクセスすると（一般に１３８として図示）、データの第１部分１３６が、適切な多重化回路機構（この実施例では第２多重化回路機構１１８）を介して、宛先装置の適切なメモリ・バッファ（この実施例では第４ＦＩＦＯメモリ１２８）に直接転送される。
【００４４】
本明細書で前述した通り、ホストは、データの第１部分１３６がホスト・インタフェース論理１０２を迂回し、発信元装置メモリ・バッファから宛先装置多重化回路機構を介して宛先装置メモリ・バッファに直接転送されることを、コントローラ１００に知らせる適切な制御レジスタ・ビットをセットした。また、宛先装置多重化回路機構は、制御レジスタ・ビットのセッティングから、データがホスト・インタフェース論理１０２からではなく、発信元装置メモリ・バッファから受け取ることを知る。宛先装置多重化回路機構から、データの第１部分１３６は、第２装置インタフェース論理１０６およびインタフェース８７を介して宛先装置（例えばＣＤ−ＲＷ３４）に書き込まれる。データの第１部分１３６の宛先装置への書込み動作は一般に、矢印１４２によって図示される。
【００４５】
コントローラ１００は次いで、バイト・カウントのために次の読出しＰＲＤテーブルにアクセスする（一般に１４４として図示）。コントローラ１００がバイト・カウントを得ると、転送されるデータの第２または次の部分（一般に１４６として図示）が、ハード・ディスク３２（つまり発信元装置）からインタフェース８５および装置インタフェース論理１０４を介してコントローラ１００に読み出される。再び、データの第２部分１４６は第１ＦＩＦＯメモリ１２２に一時的に格納される。次いで、コントローラ１００は次の書込みＰＲＤテーブルにアクセスし（一般に１４８として図示）、データの第２部分１４６が第１ＦＩＦＯメモリ１２２から、第２多重化回路機構１１８を介して、第４ＦＩＦＯメモリ１２８に直接転送される。次いで、データの第２部分１４６が、第２装置インタフェース論理１０６およびインタフェース８７を介して、ＣＤ−ＲＷ３４（宛先装置）に書き込まれる。データの第２部分１４６のＣＤ−ＲＷ３４への書込み動作は、一般に矢印１５２によって示される。
【００４６】
同様に、コントローラ１００は次いで後続の読出しＰＲＤテーブルおよび書込みＰＲＤテーブル（図示せず）にアクセスし、データ・セット内のデータが全部ハード・ディスク３２からＣＤ−ＲＷ３４に読み出されるまで、後続のデータ読出しおよびデータ書込み（図示せず）が実行される。データ・セット全体がハード・ディスク３２から読み出され、ＣＤ−ＲＷ３４へ書き込まれた後、コントローラ１００はバス１４を介して割込みを発行する（１５４として図示）。
【００４７】
図５で分かるように、発信元装置（例えばハード・ディスク３２）から宛先装置（例えばＣＤ−ＲＷ３４）へのデータの転送中に、ホストとコントローラ１００との間のバス１４は、初期転送要求（初期セットアップ１３２の一部）、コントローラ１００によるＰＲＤテーブルのアクセス、およびコントローラ１００によって発行される割込み１５４のためにだけ使用される。そのようなバスの使用は、例えば図２に示すような装置間の従来のデータ転送中のバスの使用に比較して有利である。
【００４８】
本明細書で従来のデータ転送動作に関連して前述したように、データが発信元装置から宛先装置に転送されると、一種のデータ検証動作の使用を通して、データ転送の完全性が検証される。例えば、コピーされたデータ・セットのメッセージ・ダイジェストのようなデジタル・シグネチャが抽出され、（一般に）事前計算された原データ・セットのデジタル・シグネチャと比較される。従来、データ検証命令セットまたはアルゴリズム（例えばＭＤ５アルゴリズム）は通常ホスト・メモリに常駐し、ホストがデータ検証プロセスを実行して、コピーされたデータ・セットのデジタル・シグネチャを得、原データ・セットの事前計算されたシグネチャと比較する。しかし、本明細書で前述したように、この方法による検証は、データ検証を実行するためにホストに必要なコンピューティング資源に加えて、バスでコントローラからホスト（および時々ホスト・メモリ）へデータ・セット全体を少なくとも１回完全に転送することを含む。
【００４９】
したがって、本発明の代替実施形態では、コントローラ１００はデータ検証回路機構を含むように構成される。データ検証回路機構を含むことによって、コントローラ１００はホスト、ホスト・メモリ、およびホストとコントローラ１００との間のバス１４をいっそう多くの義務、つまりデータ転送動作のデータ検証部分に関係するデータ転送および処理義務から解放する。
【００５０】
今、図６を参照すると、本発明の代替実施形態に係るコントローラ１００の簡易模式図が示されている。この代替実施形態におけるコントローラ１００の構成は、図４に示したコントローラ１００の構成と同様であるが、この代替実施形態では、コントローラは適切なデータ検証論理または回路機構（１５６として図示）をも含む。本発明の代替実施形態では、データ検証回路機構１５６は、いずれかの適切なデータ検証動作を実行するために必要なハードウェアおよび／またはソフトウェア、例えば従来のＭＤ２もしくはＭＤ５アルゴリズムのようないずれかの適切なメッセージ・ダイジェスト・アルゴリズム、または従来のＣＲＣ−３２もしくはＣＲＣ−６４回路機構のようないずれかの適切な巡回冗長検査（ＣＲＣ）回路機構を含む。
【００５１】
データ検証技術によっては、回路機構の実装に関連するサイズおよび複雑性により、どのデータ検証動作がコントローラ１００の一部として含めるのに最もよく適するかを決定することができる。例えば、一部のメッセージ・ダイジェスト・アルゴリズムの実装は、既存のコントローラ回路機構に比較的大規模の回路を追加することを必要とすることがある。同様に、一部の冗長技術、例えばＣＲＣ−３２の使用は、コントローラ１００による比較的大量の処理を必要とすることがある。しかし、本発明の実施形態では、いずれかの適切なデータ検証技術がコントローラ１００に組み込まれることを理解されたい。
【００５２】
図６に示すように、コントローラ１００は例えばＣＲＣ−６４データ検証回路機構１５６を含む。データ検証回路機構１５６は、ホスト・インタフェース論理１０２と操作可能に通信するように、コントローラ１００内に実装される。また、データ検証回路機構１５６はコントローラ１００内で、データ検証回路機構１５６の入力が、第１または第２装置から読み出されたデータを一時的に格納するバッファ装置の出力に接続されるように構成される。つまり、第１装置３２が発信元装置であるときに第１装置（例えばハード・ディスク３２）から読み出されたデータを一時的に格納する第１ＦＩＦＯメモリ１２２の出力が、データ検証回路機構１５６の入力の１つである。データ検証回路機構１５６の他の入力は、第２装置３４が発信元装置であるときに第２装置（例えばＣＤ−ＲＷ３４）から読み出されたデータを一時的に格納する、第３ＦＩＦＯメモリ１２６の出力である。
【００５３】
動作中、データ検証回路機構１５６は、発信元装置のメモリ・バッファの出力から宛先装置の多重化回路機構の入力にも転送されるデータを受け取る。データ検証回路機構１５６が転送されるデータを受け取るときに、データ検証回路機構１５６は、データ・セット全体が宛先装置のメモリ・バッファに転送されるまで、データ検証実行情報、例えばＣＲＣ−６４値を蓄積する。データ・セット全体が転送されると、データ検証回路機構１５６は必要なデータ検証情報をそこに格納しており、それは次いで、例えば従来の方法で、ホストによって読み出すことができる。
【００５４】
ホストがすでに原データ・セットのデータ検証情報を持っている場合には、コピーされたデータについてデータ検証回路機構１５６によって蓄積されたデータ検証情報が、ホストによって読み出され、原データ・セットについて前から存在するデータ検証情報と比較される。ホストが原データ・セットのデータ検証情報を持っていない場合には、上述したように、原データ・セットが例えば宛先装置にコピーされるときに、データ検証回路機構１５６が検証実行情報を蓄積する。次いで、データ・セット全体が宛先装置に転送されると、データ検証回路機構１５６は、コピーされたデータ・セットの宛先装置からデータ検証回路機構１５６へのその後の受渡しから、データ検証実行情報を蓄積することができる。次いで、ホストはコピーされたデータ・セットからこのデータ検証情報を読み出し、それを原データ・セットから、つまり発信元装置から宛先装置への原データ転送から蓄積されたデータ検証情報と比較することができる。
【００５５】
本発明の実施形態では、ちょうど述べたばかりの方法で、データ・セットが発信元装置から宛先装置へ直接転送されるときに、データ検証が実行される。データ検証を使用する従来の構成とは異なり、本発明の実施形態では、データ・セット全体をデータ検証計算のためにバス１４でコントローラ１００からホストへ読み出す必要が無い。それどころか、データ検証は、コントローラ１００内のデータ検証回路機構１５６によって実行される。最終データ検証結果だけがコントローラ１００からバス１４へ転送される。したがって、この方法では、データ検証を目的とするホスト、ホスト・メモリ、およびバス１４の使用は、従来の構成に比較して低減される。
【００５６】
今、図７を参照すると、本発明の別の代替実施形態に係る複数のコントローラの簡易模式図が示されている。本発明の実施形態では、データ転送は、同一コントローラに接続された装置に限定されない。データは、１つのコントローラとインタフェースされた発信元装置から、異なるコントローラとインタフェースされた宛先装置へ転送することができる。
【００５７】
本発明の代替実施形態に係る多重コントローラ構成１６０は、例えばＳＡＴＡホスト・コントローラのような第１コントローラ１６２と、ＳＡＴＡホスト・コントローラのような第２コントローラ１６４と、バス・スイッチまたはＰＣＩスイッチのようなハードウェア・スイッチ１６６とを含む。第１コントローラ１６２には、複数の装置、例えばハード・ディスクのような第１装置１７２およびＣＤ−ＲＷのような第２装置１７４が接続される。同様に、第２コントローラ１６４には、複数の装置、例えばハード・ディスクのような第３装置１７６およびＣＤ−ＲＷのような第４装置１７８が接続される。装置は、例えば本発明の他の実施形態に関連して本明細書で上述したように、適切なインタフェースを介して、それらのそれぞれのコントローラに接続される。多重コントローラ構成１６０は、スイッチ１６６に接続された２つのコントローラを示しているが、本発明の実施形態は、３つ以上のコントローラが適切なインタフェースを介してスイッチ１６６に接続される構成を含む。
【００５８】
単一のコントローラがＰＣＩバスのようなバスを介してホスト１２と直接インタフェースされる、本発明のこれまでの実施形態とは異なり、本発明のこの代替実施形態では、コントローラ１６２、１６４がハードウェア・スイッチ１６６に接続される。各コントローラは、適切なインタフェース、例えばＰＣＩエクスプレス接続を介して、スイッチ１６６に接続される。スイッチ１６６は、適切なインタフェース、例えば上述したようにＰＣＩバスとすることのできるバス１４を介して、ホスト１２に接続される。
【００５９】
動作時に、装置の１つからホスト１２へのデータ転送要求中に、発信元装置および宛先装置が同一コントローラに接続されているか否かを決定する試験が（例えばホスト１２によって）実行される。この方法で試験する能力は、以下でさらに詳述するように例えばオペレーティング・システムの一部とすることができ、あるいは適切なドライバ・ソフトウェアの一部とすることができる。
【００６０】
発信元装置および宛先装置が同一コントローラに接続されている場合、上述した本発明の実施形態に従って、または従来の方法で、データ転送が実行される。発信元装置および宛先装置が同一コントローラに接続されていない場合、ホスト１２およびコントローラ１６２、１６４内の制御論理が、１つのコントローラに接続された発信元装置と、他のコントローラに接続された宛先装置との間のスイッチ１６６を介するデータ転送を管理する。各コントローラ内のデータの転送は、例えば本発明の他の実施形態に関して本明細書で上述したように、個々のコントローラに含まれるスイッチング回路機構およびインタフェース論理によって管理される。
【００６１】
例えば、第１装置１７２から第４装置１７８にデータ・セットを転送する際に、データは、例えば本発明の実施形態に関して本明細書で上述したように、第１（発信元）装置１７２から第１コントローラ装置１６２に転送される。しかし、宛先装置が別のコントローラに接続されているので、データは、第１コントローラ１６２とスイッチ１６６との間のインタフェースを介してスイッチ１６６に転送され、次いでスイッチ１６６と第２コントローラ１６４との間のインタフェースを介して、スイッチ１６６から第２コントローラ１６４に転送される。次いでデータは、例えば本発明の実施形態に関連して上述したように、第２コントローラ１６４から第４（宛先）装置１７８へ転送される。
【００６２】
したがって、データが異なるコントローラに接続された装置間で転送される場合であっても、本発明の実施形態では、コントローラとバス・スイッチ１６６との間の接続を通して、データ転送が行われる。スイッチ１６６とホスト１２との間のバス１４は、特定の機能、例えば初期データ転送要求（セットアップの一部）、コントローラによるＰＲＤテーブル・アクセス、およびコントローラ発行割込みに使用される。しかし、本発明の他の実施形態と同様に、本発明のこの代替実施形態では、ホスト・バス１４、ホスト１２、およびホスト・メモリ（図示せず）はデータを転送するためには使用されない。
【００６３】
本発明の実施形態では、本明細書に記載の改善されたデータ転送は、ホストおよび／またはコントローラによって使用することができる様々な他の機能および標準と互換可能である。例えば、多くのコントローラが、ＳＡＴＡ  ＩＩとして知られる標準に従って動作するように構成される。この標準には、データ記憶装置がＤＭＡ転送のようにデータ転送を最適化することを可能にする、任意選択的機能がある。これらの機能の一部は、本明細書で上述した本発明のデータ転送方法と衝突することがあるが、他の機能はそうではない。本発明の実施形態では、ホストは、本発明のデータ転送方法を実行する前に、本明細書に記載した本発明のデータ転送方法に悪影響を及ぼすかもしれない任意選択的な機能を使用不能にし、かつデータ転送方法が完了した後で、そのような任意選択的な機能を使用可能にするように構成される。使用不能にされる機能は、例えば「ＤＭＡセットアップ・フレーム情報構造（ＦＩＳ）における非零バッファ・オフセット」として知られる機能を含む。該機能は、データ・セットの先頭以外の位置からデータ転送を行うことを可能にし、データ・セットの先頭は後の動作で転送される。この機能は本発明のデータ転送を混乱させるので、本発明の実施形態に係るデータ転送方法を実行する前に使用不能にする。使用不能にする別の機能として、例えば、複数の部分データ転送を可能にするネイティブ・コマンド・キューイング（ＮＣＱ）がある。
【００６４】
本発明のデータ転送方法と衝突しない任意選択的な特徴については、そのような特徴は、本発明のデータ転送方法が実行される間、使用可能な状態のままにされる。使用可能な状態に維持される機能は、例えば「順序通りのデータ配布の保証」として知られる機能を含む。該機能は、データ記憶装置が順序が狂ったデータを返すことによって最適化を実行することを阻止する。
【００６５】
ネイティブ・コマンド・キューイング（ＮＣＱ）に関して、本発明の代替実施形態では、本発明の実施形態に係るデータ転送動作と共にＮＣＱの動作を受け入れるために、追加的回路機構および制御論理が既存のスイッチング回路機構１０８に追加される。追加的回路機構および制御論理は、コントローラ１００が複数の発信元装置および宛先装置を検出および識別し、追加データを格納するための適切なバッファ・ストレージを提供し、複数の装置からどの発信元装置および宛先装置をデータ転送で使用するかを選択することを可能にする。制御論理はまた、ＮＣＱ動作が使用可能状態であるときにデータ転送を制御するために適切なフラッグおよび制御ビットをセットする。この方法で、本発明の実施形態に係るデータ転送は、ＮＣＱ機能を使用不能にすることなく、実行される。
【００６６】
最後に、本発明の実施形態では、本明細書で上述した改善されたデータ転送方法のための命令は、ホスト、ホスト・メモリ、またはホストがアクセス可能な他の適切な場所に常駐する。例えば、命令は、ホストのオペレーティング・システムが容易にアクセスできるホスト・メモリの一部分に常駐する、スタンドアロン・ユーティリティ・プログラムである。代替的に、命令はホストのオペレーティング・システムの一部である。
【００６７】
例えば、ホストのオペレーティング・システムの既存のコピー・コマンドは、本発明の実施形態に係る改善されたデータ転送方法のための命令を組み込むように変更される。この方法により、ホストは、データ転送を本発明の実施形態に従って、つまりデータをホストおよびホスト・メモリに転送することなく、実行することができるかどうかを、コピー・コマンドの実行の一部として自動的に決定する。ホストは、発信元装置および宛先装置が同一コントローラに接続されているか、それとも本明細書で前述したように、例えばバス・スイッチによって適切にリンクされた異なるコントローラに接続されているか、を決定する。そうである場合、コピー・コマンドは、本発明の実施形態に従ってデータ転送を実行するために、必要な命令をコントローラに提供することができる。そうでない場合、コピー・コマンドはコントローラに従来の方法でデータ転送を実行するように命令することができる。
【００６８】
添付した請求の範囲によって定義される本発明の精神および範囲、ならびにそれらの全範囲の均等物から逸脱することなく、本明細書に記載した発明の実施形態に対し多くの変形および置換を施すことができることは、当業者には明白であろう。例えば、本発明の実施形態では、例えば同一コントローラを通して、またはコントローラとホストとの間に接続されたバスを通して、発信元装置から複数の宛先装置に同時にデータを読み出すことができる。
【図面の簡単な説明】
【００６９】
【図１】ＰＣＩバスのようなバスと複数のデータ記憶装置との間でインタフェースされた従来のＡＴＡホスト・コントローラの簡易模式図である。
【図２】２つの外部装置間のコピー動作中の時間の関数としての従来のコントローラのバス利用の簡略図である。
【図３】ＰＣＩバスのようなバスと複数のデータ記憶装置との間でインタフェースされた従来のＳＡＴＡホスト・コントローラの簡易模式図である。
【図４】本発明の実施形態に係るＳＡＴＡホスト・コントローラのようなコントローラの簡易模式図である。
【図５】図４のコントローラを使用しての２つの外部装置間のコピー動作中のバス利用の簡略図である。
【図６】本発明の代替実施形態に係る、データ検証論理が組み込まれたＳＡＴＡホスト・コントローラのようなコントローラの簡易模式図である。
【図７】本発明の代替実施形態に係る、ＰＣＩスイッチのようなバス・スイッチを介してホストとインタフェースされたＳＡＴＡホスト・コントローラのような複数のコントローラの簡易模式図である。
【図１】
2006059365.tif 000003
【図２】
2006059365.tif 000004
【図３】
2006059365.tif 000005
【図４】
2006059365.tif 000006
【図５】
2006059365.tif 000007
【図６】
2006059365.tif 000008
【図７】
2006059365.tif 000009