JP2006059365A - 改善されたデータ転送のためのコントローラ装置および方法 - Google Patents

改善されたデータ転送のためのコントローラ装置および方法 Download PDF

Info

Publication number
JP2006059365A
JP2006059365A JP2005238068A JP2005238068A JP2006059365A JP 2006059365 A JP2006059365 A JP 2006059365A JP 2005238068 A JP2005238068 A JP 2005238068A JP 2005238068 A JP2005238068 A JP 2005238068A JP 2006059365 A JP2006059365 A JP 2006059365A
Authority
JP
Japan
Prior art keywords
controller
data
host
bus
buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005238068A
Other languages
English (en)
Other versions
JP4928100B2 (ja
Inventor
Alan J Greenberger
ジェー.グリーンバーガー アラン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Agere Systems LLC
Original Assignee
Agere Systems LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Agere Systems LLC filed Critical Agere Systems LLC
Publication of JP2006059365A publication Critical patent/JP2006059365A/ja
Application granted granted Critical
Publication of JP4928100B2 publication Critical patent/JP4928100B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F01MACHINES OR ENGINES IN GENERAL; ENGINE PLANTS IN GENERAL; STEAM ENGINES
    • F01PCOOLING OF MACHINES OR ENGINES IN GENERAL; COOLING OF INTERNAL-COMBUSTION ENGINES
    • F01P11/00Component parts, details, or accessories not provided for in, or of interest apart from, groups F01P1/00 - F01P9/00
    • F01P11/02Liquid-coolant filling, overflow, venting, or draining devices
    • F01P11/0204Filling
    • F01P11/0209Closure caps
    • F01P11/0238Closure caps with overpressure valves or vent valves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F01MACHINES OR ENGINES IN GENERAL; ENGINE PLANTS IN GENERAL; STEAM ENGINES
    • F01PCOOLING OF MACHINES OR ENGINES IN GENERAL; COOLING OF INTERNAL-COMBUSTION ENGINES
    • F01P11/00Component parts, details, or accessories not provided for in, or of interest apart from, groups F01P1/00 - F01P9/00
    • F01P11/02Liquid-coolant filling, overflow, venting, or draining devices
    • F01P11/029Expansion reservoirs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Abstract

【課題】コンピュータ・システム内のデータ記憶装置間でデータを直接転送するためのコントローラ装置を提供すること。
【解決手段】本発明のコントローラ装置は、コントローラを複数のデータ記憶装置、例えばハード・ディスク装置およびCD−RW装置に接続するための装置インタフェース論理と、コントローラをPCIバスのようなバスを介してホストまたはホスト・コンピュータに接続するためのホスト・インタフェース論理とを含む。ホストは、それに接続された多数の他のコンポーネント、例えばホスト・メモリを含む。コントローラは、データを発信元のデータ記憶装置から少なくとも1つの宛先データ記憶装置へ直接、つまり転送データをコントローラからバスを介してホストおよび/またはホスト・メモリに受け渡すことなく、転送することを可能にする、スイッチング回路機構を含む。
【選択図】図4

Description

本発明は、シリアルATA(SATA)ホスト・コントローラのようなコントローラに関する。さらに詳しくは、本発明は、ホストおよびホスト・メモリのデータ転送タスクを軽減して、ホストとコントローラとの間のインタフェース上のデータ転送の量を低減する、改良されたコントローラに関する。
コンピュータおよびコンピュータ・アーキテクチャの世界では、データ記憶装置およびそれらのインタフェースはその製造および動作がいっそう高度になってきており、したがって結果的にデータ転送および格納の速度が増大している。コンピュータ・ハード・ディスクのような装置とコンパクト・ディスク読出し/書込み(CD−RW)ドライブのようなドライブとの間でデータが転送される速度は、ホスト・コンピュータのメモリのサイクル・タイム(クロック速度)の増加より大きい割合で増大している。例えば、アドバンスト・テクノロジー・アタッチメント(Advanced Technology Attachment)(ATA)として知られるディスク・ドライブ・インタフェース標準を使用するデータ記憶装置は、インテグレーテッド・ドライブ・エレクトロニクス(Integrated Drive Electronics)(IDE)としても知られ、現在、少なくとも2.4ギガビット毎秒(Gb/s)の転送速度を有する。シリアルATA(SATAまたはS−ATA)として知られる標準に発展したATA標準は、装置自体における装置コントローラの一体化を特徴とする。
装置間のデータ転送は一般に、第1装置からホスト・メモリへのデータの転送、次いでホスト・メモリから第2装置へのデータの転送を含む。データ記憶装置は、通常はIDEケーブルのようなインタフェース・ケーブルを介して、コントローラ、例えばホスト・コントローラとインタフェースすることによって、ホスト・コンピュータに接続する。コントローラ、例えばATAコントローラまたはSATAコントローラは、バス、例えばPCIバスまたはPCIエクスプレス・バスを介してホスト・コンピュータおよびそのメモリとインタフェースする。PCIバスは、周辺コンポーネント相互接続(PCI)バス標準に従って製造され動作するインタフェース・バスである。
上述した比較的高いデータ転送速度でデータ記憶装置のデータにアクセスすると、ホスト、ホスト・メモリ、およびホストをコントローラに接続するバスに負荷を加える。さらに、他の装置およびそれらのインタフェース、例えばユニバーサル・シリアル・バス(USB)およびファイヤワイヤ・インタフェースが、ホストおよびホスト・メモリに接続されたバス上でデータ転送時間を得るために競う。
したがって、ホスト、ホスト・メモリ、およびホストとコントローラとの間のバスに従来要求されるタスクを軽くすることによって、データ転送動作中のホスト、ホスト・メモリ、およびホストとコントローラとの間のバスの使用を軽減する、改善されたコントローラ装置および方法を持つことが望まれる。
本発明は、コンピュータ・システム内のデータ記憶装置間でデータを転送するための改良されたコントローラ装置に具現される。改良されたコントローラ装置は、コントローラを複数のデータ記憶装置、例えばハード・ディスク装置およびCD−RW装置に接続するための装置インタフェース論理と、PCIバスのようなバスを介してコントローラをホストまたはホスト・コンピュータに接続するためのホスト・インタフェース論理とを含む。ホストは、それに接続された多数の他のコンポーネント、例えばホスト・メモリを含む。データ記憶装置間の従来のデータ転送では、発信元装置からのデータは、コントローラによって読み出され、コントローラからバスを介してホストおよび/またはホスト・メモリ装置に転送される。次いで、データはホスト・メモリ装置および/またはホストから、バスを介してコントローラに転送され、次いでコントローラから宛先装置に書き込まれる。したがって、従来のデータ転送では、データはホストとコントローラの間のバスを数回転送され、ホストのコンピューティング資源およびホスト・メモリのストレージ資源を一時的に占有する。本発明の実施形態では、コントローラは、データを発信元データ記憶装置から少なくとも1つの宛先データ記憶装置へ直接、つまり転送データをコントローラからバスを介してホストおよび/またはホスト・メモリに受け渡すことなく、転送することを可能にする、スイッチング回路機構を含む。スイッチング回路機構は、発信元装置インタフェースおよび発信元装置インタフェース論理を介してデータを発信元装置から、宛先装置インタフェース論理および宛先装置インタフェースを介して宛先装置へ直接転送するために、適切なバッファリング回路機構および多重化回路機構を含む。多重化回路機構は、バッファリング回路機構がデータ記憶装置から、または従来の方法でホスト・バスからデータを受け取ることを可能にする。本発明の代替的実施形態から、改良されたコントローラは、データ転送の完全性を検証するためのデータ検証論理をも含む。本発明の実施形態では、改良されたコントローラは、大半のデータ転送動作中に、ホスト、ホスト・メモリ、およびホストとコントローラとの間のバスをデータ転送責任の多くから解放する。また、本発明の実施形態では、データ転送に要する時間が短縮され、データ転送コンポーネントの消費電力が低下する。
以下の説明では、図面の説明を通して発明の理解を高めるために、同様の参照番号は同様のコンポーネントを示す。また、以下では特定の特徴、形状構成、および配置について論じるが、単に例示目的でそうするにすぎないことを理解すべきである。本発明の精神および範囲から逸脱することなく、他の工程、形状構成、および配置が有用であることを、関連技術分野の熟練者は認識されるであろう。
今、図1を参照すると、ホスト・コントローラ(HC)のような従来の大容量記憶コントローラ10の簡易模式図が示されている。従来、ホスト・バス・アダプタ(HBA)としても知られるコントローラ10は、マザーボード上のPCIスロットにプラグインされるコンピュータ回路基板上に物理的に配置される。代替的に、コントローラ10またはコントローラ10の一部分は集積回路(IC)として製造され、あるいはコントローラ10は、PCIバスをも(内部に)含むコンピュータ・チップ上に集積化される。
コントローラ10は、バス・インタフェースまたはバス14を介してホストまたはホスト・コンピュータ12に接続される。バス14の1つの型がPCIバスであり、それは周辺コンポーネント相互接続(PCI)バス標準に従う仕様を有するバスである。一般に、バス14は、接続の各端に配置された適切なインタフェース論理または制御論理を介して、ホスト・コンピュータ12に接続される。そのような論理は、スタンドアロンと識別された場合、時々、入力コントローラまたはインタフェース・コントローラと呼ばれる。しかし、この考察では、コントローラ10との混同を回避するために、そのような論理をインタフェース論理または制御論理と呼ぶ。
例えば、バス14は、ホスト・コンピュータ12の一部である第1インタフェース論理16と、コントローラ10の一部であるホスト・インタフェース論理18との間に接続される。各インタフェース論理は、ホスト・コンピュータ12およびコントローラ10がバス14を介して相互に適切に通信することを可能にするために、適切な制御論理を含む。また、一般に、ホスト・コンピュータ12内に含まれる第1インタフェース論理16は、ホスト・コンピュータ12が適切なホスト・メモリ・バス24およびメモリ・インタフェース論理26を介して、または何らかの他の適切なインタフェース装置を介して、他のシステム・コンポーネント、例えばホスト・メモリ装置22とインタフェースすることを可能にする、適切な制御論理を含む。
複数のデータ記憶装置がコントローラ10に接続される。例えば、両方とも、アドバンスト・テクノロジー・アタッチメント(ATA)として知られ、インテグレーテッド・ドライブ・エレクトロニクス(IDE)としても知られるディスク・ドライブ・インタフェース標準を使用する、読出し/書込み可能なハード・ディスク(HD)32および読出し/書込み可能なコンパクト・ディスク(CD−RW)34は、ディジー・チェーン接続IDEケーブルのようなインタフェース36および適切な装置インタフェース論理38を介して、コントローラ10に接続される。データ記憶装置をコントローラ10に接続するために、他の適切な装置が存在することを理解する必要がある。概して、インタフェース36は、コントローラ10がデータをデータ記憶装置32、34のいずれかからホスト・メモリ22へ(ホスト12を介して)転送するか、またはデータをホスト・メモリ22からデータ記憶装置32、34のいずれかに転送することを可能にする。
第1装置から第2装置への従来のデータ転送動作では、データ・セットまたはデータ・ファイルが第1または発信元装置、例えばハード/ドライブ32から、コントローラ10およびホスト12を介して、ホスト・メモリ22に読み出される。次いで、データ・セットは、ホスト12およびコントローラ10を通して、ホスト・メモリ22から第2または宛先装置、例えばCD−RWドライブ34に書き込まれる。少し詳細な観点から見ると、データ転送動作は複数のデータ転送に分割され、各データ転送は一般にわずか64キロバイト(Kバイト)しか転送しない。概して、ビット・レベルでは、データ転送は、複数の物理領域記述子(PRD)を含む物理領域記述子テーブルの使用を含む。
装置の1つによってコピー動作を要求されたことがホストに通知されると、ホストによってPRDが作成される。一般に、各PRDは8バイト、つまり各々4バイトのDword2個を含む。各PRDの第1のDwordはメモリ領域物理ベース・アドレスを含む。各PRDの第2のDwordでは、最初の2バイトは予約される。しかし、この予約フィールドの最上位ビットは、例えば論理により、テーブルの終わりに達したかどうかを示す。各PRDの第2のDwordの次の2バイトは、PRDバイト・カウントのフィールドを含む。バイト・カウント・フィールドは、メモリ領域物理ベース・アドレスを先頭に何バイトを転送するかを示す。バイト・カウントが零の場合には、64Kバイトが転送される。例えば、ハード・ディスクからCD−RWへの600メガバイト(Mバイト)のコピー動作の場合、コピー動作は、複数のPRDテーブルを使用して、または新しい内容で再利用される同じPRDテーブルを使用して、約10,000個のPRDに分割される。
データ転送がエラー無く行われたことを検証するために、転送されたデータは一般に読み戻される。1つの従来の方法では、原データは発信元装置(例えばハード・ディスク32)からホスト12に読み戻され、コピーされたデータは宛先装置(例えばCD−RWドライブ34)からホスト12に読み戻され、2つは、例えば2組のデータ間の相違を識別する従来のプログラムを使用して、ホスト12によって比較される。別の従来のデータ検証方法では、ホスト12は、コピーされたデータ・セットのデジタル・シグネチャまたはフィンガプリントを取り、それをソース・データ・セットから事前計算されたデジタル・シグネチャと比較する。この方法では、コピーされたデータ・セットだけを宛先装置からホスト12に読み戻さなければならない。例えば、MD5アルゴリズムのようなアルゴリズムは、ソース・データ・セットがコピーされる前に、ソース・データ・セットの「メッセージ・ダイジェスト」として知られるデジタル・シグネチャを事前計算する。コピー動作後、コピーされたデータ・セットは宛先装置からホストに読み戻され、一般にホスト12内に配置されたMD5アルゴリズムは、コピーされたデータ・セットのデジタル・シグネチャを計算し、コピーされたデータ・セットのデジタル・シグネチャをソース・データ・セットのデジタル・シグネチャと比較する。
しかし、いずれの方法においても、ホスト12がデータにアクセスしてデータ検証プロセスを実行することができるホスト・メモリ22に、少なくとも1つのデータ・セットをバス14で読み戻さなければならない。したがって、従来のデータ転送動作および検証の場合、完全なデータ・セットが3回または4回転送され、データ・セット転送のたびに、バス14、ホスト・メモリ22、およびホスト12のようなコンピューティング資源が占有される。
引き続き図1を参照しながら、今、図2を参照すると、2つの外部装置間のデータ転送動作中の時間の関数として、従来のホスト・コントローラ(例えばコントローラ10)とホスト・コンピュータ(例えばホスト12)との間に接続されたバス14の利用の簡略図が示されている。例えば、ハード・ディスク32とCD−RW34との間のデータの転送の場合、ホスト12は、発信元装置、例えばハード・ディスク32からデータ転送要求を受け取る。ホスト12はデータ転送要求を受け取ると、例えば上述したように、PRDテーブルの作成を含め、バス14でのデータ読出し転送のための初期セットアップを実行する(42として図示)。例示を目的として、データ読出し動作のための2つのPRDテーブルおよびデータ書込み動作のための2つのPRDテーブルだけを図示し、本明細書で説明する。
初期セットアップ42の後、コントローラ10は、読み出そうとするデータのバイト・カウントおよびメモリ・アドレス(他の情報の中で)を求めて、第1のPRDテーブルにアクセスする(一般に44として図示)。データ・セットのデータの第1バッファ部分46は、インタフェース36を介してハード・ディスク32(つまり発信元装置)からコントローラ10に読み出され、次いでバス14、ホスト12、およびホスト・メモリ・バス24を介してホスト・メモリ22に読み出される。バス14を介するデータの第1バッファ部分46の読出し動作を、一般に矢印48によって示す。
次いで、コントローラ10は次のPRDテーブルにアクセスし(一般に52として図示)、データ・セットの次のバッファ部分、例えば第2バッファ部分54がハード・ディスク32からコントローラ10に読み出され、次いでバス14、ホスト12、ホスト・メモリ・バス24を介して、ホスト・メモリ22に読み出される。バス14を介してデータの第2バッファ部分54のデータ読出しを、一般に矢印56によって示す。ちょうど述べたばかりの方法で、コントローラ10は次いで後続のPRDテーブルにアクセスし(図示せず)、データ・セット内の全てのデータがハード・ディスク32からホスト・メモリ22に読み出されるまで、後続のデータ読出しが実行される(図示せず)。
データ・セットがハード・ディスク32からホスト・メモリ22に読み出された後、コントローラ10はバス14を介して割込みを発行する(58として図示)。次いで、ホスト12は、PRDテーブルの作成を含め、データ書込み動作のためのセットアップを実行する(62として図示)。次いでコントローラ10は書込みPRDテーブルのうちの最初のテーブルにアクセスし(一般に64として図示)、以前にホスト・メモリ22に読み出されたデータの第1バッファ部分(66として図示)が、ホスト・メモリ22からホスト・メモリ・バス24、ホスト12、およびバス14を介してコントローラ10に書き込まれ、次いで装置インタフェース36を介して宛先装置(例えばCD−RW34)に書き込まれる。データ・セットの第1バッファ部分66のデータ書込み動作を一般に矢印68で示す。
次に、コントローラ10は次のPRDテーブルにアクセスし(一般に72として図示)、以前にハード・ディスク32からホスト・メモリ22に読み出されたデータ・セットの次のバッファ部分(74として図示)が、ホスト・メモリ22から(ホスト・メモリ・バス24、ホスト12、およびバス14を介して)コントローラ10に書き込まれ、次いで装置インタフェース36を介して宛先装置(例えばCD−RW34)に書き込まれる。そのようなデータ書込み動作を一般に矢印76で示す。データ・セット内の全てのデータが宛先装置に書き込まれた後、コントローラ10はホスト12に割込み(78として図示)を発行する。
今、図3を参照すると、別の従来のコントローラ80、例えば、ATA標準から発展した標準であるシリアル・アドバンスト・テクノロジー・アタッチメント(SATAまたはS−ATA)ディスク・ドライブ・インタフェース標準に従って製造されかつ動作するデータ記憶装置とインタフェースする、ホスト・コントローラの簡易模式図が示されている。そのようなコントローラ80、つまりSATAホスト・コントローラは、ホスト12(バス14を介して)と、ハード・ディスク32およびCD−RW34のような複数のデータ記憶装置との間をインタフェースする。コントローラ80は、コントローラ80がバス14とインタフェースすることを可能にするインタフェース論理または制御論理82を含む。
コントローラ80はまた、各データ記憶装置が、例えば図1に示すようにディジー・チェーン接続構成を介してではなく、直接的にコントローラ80とインタフェースすることを可能にする、別個の装置インタフェース論理または制御論理をも含む。つまり、コントローラ80は、第1装置、例えばハード・ディスク32が第1インタフェース85を介してコントローラ80に直接接続することを可能にする、第1装置インタフェース論理84を含む。また、コントローラ80は、第2装置、例えばCD−RW34が第2インタフェース87を介してコントローラ80に直接接続することを可能にする、第2装置インタフェース論理86を含む。第1および第2インタフェースの各々は、例えばIDEケーブルまたは他の適切なインタフェースである。
コントローラ80は1対のメモリ・バッファ92、93を含む。メモリ・バッファは例えば先入れ先出しメモリ(FIFO)を含み、それは転送されるデータを一時的に格納することによって、コントローラ80を介するデータ転送を円滑にする。例えば、第1メモリ・バッファ92は、ハード・ディスク32からホスト12へのデータの転送を円滑にするために、ホスト・インタフェース論理82と第1装置インタフェース論理84との間に接続された第1FIFO95を含む。また、第1メモリ・バッファ92は、ホスト12からハード・ディスク32へのデータの転送、例えばホスト・メモリ22からハード・ディスク32へのデータの書込みを円滑にするために、ホスト・インタフェース論理82と第1装置インタフェース論理84との間に接続された第2FIFO96を含む。同様に、第2メモリ・バッファ93は、ホスト12とCD−RW34との間のデータの転送を円滑にするために、ホスト・インタフェース論理82と第2装置インタフェース論理86との間に接続された第3FIFO97および第4FIFO98を含む。
また、一般に、コントローラ80は、両方のバッファに特定レベルを超えてデータが充填されるのを避けるために、フロー制御ハードウェア(図示せず)を含む。つまり、フロー制御ハードウェアは、メモリ・バッファの宛先側がそのバッファに格納されたデータの一部を空けるまで、メモリ・バッファの発信元側が追加データを送信するのを防止する。この方法により、転送されるデータは失われない。
図3に示す従来の構成では、装置32、34の両方がデータをコントローラ80へ、またはコントローラ80から同時に転送することができる。しかし、コントローラ80は依然として、発信元装置からホスト・メモリ22へのデータ転送のためにPRDテーブルをセットアップする工程およびホスト・メモリ22から宛先装置へのデータ転送のためにRPDテーブルをセットアップする工程を含め、図1に示した構成におけるコントローラ10の場合と同じデータ転送工程を実行しなければならない。
ホスト・メモリ22への、またはホスト・メモリ22からのデータの転送に関し、コントローラ80は直接メモリ・アクセス(DMA)転送をサポートするハードウェアを含む。DMA転送では、データはホスト12を介在することなく、直接的にホスト・メモリ22とインタラクトする。例えば、発信元装置から転送されるデータはコントローラ80によって読み出され、次いでコントローラ80から、ホスト・インタフェース論理16、ホスト・メモリ・バス24、およびメモリ・インタフェース論理26を介して、ホスト・メモリ22に受け渡される。同様に、ホスト・メモリ22から転送されるデータは、メモリ・インタフェース論理26、ホスト・メモリ・バス24、およびホスト・インタフェース論理16を介して、コントローラ80に受け渡される。次いでデータはコントローラ80から宛先装置に書き込まれる。
動作上の観点からは、DMA転送は、コントローラ80がバス・アービタ(図示せず)から、コントローラ80とホスト12との間のバス14のバス・マスタになる許可を要求して得ることを含む。一般に、バス・アービタはコントローラ80の一部ではない。例えばバス・アービタはホスト12の一部である。コントローラ80がバス14のバス・マスタになる許可をバス・アービタが付与すると、コントローラ80は直接的に、つまりホスト12を介在せずに、ホスト・メモリ22とインタラクトして、データ記憶装置間のデータの転送を管理する。
本明細書で前述した通り、多くの従来のデータ転送動作は、ホストとコントローラとの間のバスを介する数回のデータ転送を含むと共に、ホストおよびホスト・メモリを周期的に占有する。これらのコンピューティング資源の占有は、コンピュータ・デバイスおよびそれらのインタフェース、例えばユニバーサル・シリアル・バス(USB)およびファイヤワイヤ・インタフェースがこれらの資源を利用する能力に悪影響を及ぼす。
本発明の実施形態では、コントローラは、大半のデータ転送動作中に、バス、ホスト、およびホスト・メモリをデータ転送責任の多くから解放することができる改良された構成を含む。また、データ転送に要する時間が短縮され、データ転送コンポーネントの消費電力が低下する。本発明の実施形態では、改良されたコントローラが、コントローラとホスト(したがってホスト・メモリ)との間のバスを迂回して、発信元装置からのデータを宛先装置に直接向ける。代替的に、改良されたコントローラはまた、ホスト、ホスト・メモリ、およびコントローラとホストとの間のバスのようなコンピューティング資源を占有することなく、データ検証動作をも実行する。
今、図4を参照すると、本発明の実施形態に係るコントローラ100の簡易模式図が示されている。本発明の実施形態では、コントローラ100またはコントローラ100の一部分は、マザーボード上のPCIスロットにプラグインされるコンピュータ回路基板上に物理的に配置される。本発明の代替実施形態では、コントローラ100またはコントローラ100の一部分は集積回路として製造される。
コントローラ100は、ホスト・インタフェース論理または制御論理102、第1装置インタフェース論理104、第2インタフェース論理106、およびスイッチング回路機構108を含む。ホスト・インタフェース論理102は、コントローラ100がバス14、例えばPCIバスを介して、ホスト12(図1および3に図示)とインタフェースすることを可能にする。上述の通り、ホストは一般に、ホスト・メモリ装置22(図1および3に図示)を含め、他のシステム・コンポーネントとインタフェースする。
第1装置インタフェース論理104は、コントローラ100が、IDEケーブルまたは他の適切なインタフェースであるインタフェース85を介して、第1装置、例えばハード・ディスク32とインタフェースすることを可能にする。第2装置インタフェース論理106は、コントローラ100が、IDEケーブルまたは他の適切なインタフェースであるインタフェース87を介して、第2装置、例えばCD−RW34とインタフェースすることを可能にする。
スイッチング回路機構108は、ホスト・インタフェース論理102と装置インタフェース論理、つまり第1装置インタフェース論理104および第2装置インタフェース論理106との間を接続する。以下でさらに詳述するように、本発明の実施形態では、スイッチング回路機構108は、データ記憶装置間のデータ転送を、ホスト、ホスト・メモリ、およびホストとコントローラ100との間のバス14のコンピューティング資源を不必要に関与させることなく、コントローラ100内に留めることを可能にする。
スイッチング回路機構108の第1部分は、ホスト・インタフェース論理102と第1装置インタフェース論理104との間に接続された、第1メモリ・バッファ112および第1多重化回路機構114を含む。スイッチング回路機構108の別の部分は、ホスト・インタフェース論理102と第2装置インタフェース論理106との間に接続された、第2メモリ・バッファ116および第2多重化回路機構118を含む。
第1メモリ・バッファ112は、第1装置インタフェース論理104およびインタフェース85を介して第1装置(例えばハード・ディスク32)とやり取りされるデータを一時的に格納する。第1メモリ・バッファ112は、第1装置32から読み出されたデータを一時的に格納する少なくとも1つのバッファ装置(例えば第1FIFOメモリ122)、および第1装置32に書き込まれるデータを一時的に格納する少なくとも1つのバッファ装置(例えば第2FIFOメモリ124)を含む。
同様に、第2メモリ・バッファ116は、第2装置インタフェース論理106およびインタフェース87を介して第2装置(例えばCD−RW34)とやり取りされるデータを一時的に格納する。第2メモリ・バッファ116は、第2装置34から読み出されたデータを一時的に格納する少なくとも1つのバッファ装置(例えば第3FIFOメモリ126)、および第2装置34に書き込まれるデータを一時的に格納する少なくとも1つのバッファ装置(例えば第4FIFOメモリ128)を含む。
第1多重化回路機構114は、第1装置に書き込まれるデータを保存するメモリ装置(つまり第2FIFOメモリ124)が、ホスト・インタフェース論理102を介してバス14から、または第3FIFOメモリ126を介して第2装置34から、データを受け取ることを可能にする回路機構を含む。同様に、第2多重化回路機構118は、第2装置に書き込まれるデータを保存するメモリ装置(つまり第4FIFOメモリ128)が、ホスト・インタフェース論理102を介してバス14から、または第1FIFOメモリ122を介して第1装置32から、データを受け取ることを可能にする回路機構を含む。本発明の実施形態では、第1多重化回路機構114および第2多重化回路機構118は、制御可能にデータを2つ以上のソースから受け取ることを可能にする、いずれかの適切な回路機構である。
スイッチング回路機構108は、第1および第2メモリ・バッファ112、116ならびに第1および第2多重化回路機構114および118に、発信元装置から読み出されたデータを、例えば従来の方法で、バス14を介してホスト(およびホスト・メモリ)に転送するか、それともそれぞれのメモリ・バッファを介して宛先装置に直接転送するかを通知するための適切な制御回路機構(図示せず)を含む。スイッチング回路機構108内の制御回路機構はまた、第1および第2多重化回路機構114、118がホストから、および発信元装置のメモリ・バッファからデータを受け取る能力を使用可能または使用不能にする。
本発明の実施形態では、ホストはスイッチング回路機構内の制御回路機構に、データを発信元装置から宛先装置に直接転送するか、それともホストおよびホスト・メモリを介し、次いで宛先装置に転送するかを通知する。例えば、ホストは、転送用データを発信元装置から宛先装置に直接書き込むべきであることを指示するように、スイッチング回路機構内のレジスタ制御ビットをセットする。多重化回路機構がホストからデータを受け取る能力を使用不能にし、かつ多重化回路機構が発信元装置のメモリ・バッファからデータを受け取る能力を使用可能にするための適切な制御ビットは、多重化回路機構でセットされる。それ以外の場合、レジスタ制御ビットがセットされなければ、データは従来の方法で、つまり発信元装置からホスト・メモリへ、次いでホスト・メモリから宛先装置へ転送される。
引き続き図4を参照しながら、今、図5を参照すると、発信元装置(例えばハード・ディスク32)と宛先装置(例えばCD−RW34)との間におけるデータ転送動作中の時間の関数として、本発明の実施形態に係るホストとコントローラ100との間に接続されたバス14の利用の簡略図が示されている。最初に、ホストは発信元装置からデータ転送要求を受け取ると、初期セットアップを実行する(一般に132として図示)。セットアップは適切なPRDテーブルの作成を含む。
例えば本発明の実施形態では、ホストは、例えば、発信元装置から転送されるデータを読み出すための1つまたはそれ以上のPRDテーブル、および宛先装置に転送されるデータを書き込むための1つまたはそれ以上のPRDテーブルを同時にセットアップする。また、本明細書で上述した通り、ホストは、転送用データが、適切な読取りバッファを介して発信元装置から、適切な書込みバッファを介して適切な多重化回路機構の入力へ、そして宛先装置へ直接転送されることをスイッチング回路機構108に通知するために、適切なレジスタ・ビットをセットする。この方法により、スイッチング回路機構108は発信元装置から読み出されたデータにバス14(およびホスト・インタフェース論理102)を迂回させ、代わりに、宛先装置の書込み経路内の多重化回路機構(例えば多重化回路機構118)の入力に向かわせる。また、宛先装置の書込み経路内の多重化回路機構は、バス14からではなく、発信元装置の読取り経路内のメモリ・バッファ(例えば第1FIFO122)からデータを受け取ることを知る。
ホストが初期セットアップ132を実行し、適切なPRDテーブルを作成すると、コントローラ100はバイト・カウントのために第1PRDテーブルにアクセスする(一般的に134として図示)。本発明の実施形態では、転送されるデータはホスト・メモリ内の場所に書き込まれないので、コントローラ100はメモリ・アドレスを知る必要が無いことに注目されたい。PRDテーブルはホスト12またはホスト・メモリ22内に配置されるので(例えば図1および3を参照)、コントローラ100はバス14を介してPRDテーブルにアクセスする。コントローラ100がバイト・カウントのために第1PRDテーブルにアクセスすると、転送されるデータの第1部分(一般に136として図示)が発信元装置(例えばハード・ディスク32)から、インタフェース85およびインタフェース論理104を介して、コントローラ100に読み出される。
データの第1部分136は、発信元装置の適切なメモリ・バッファ(この実施例では、第1FIFOメモリ122)に一時的に格納される。そこから、コントローラ100は一般に第1書込みPRDテーブルにアクセスする。しかし、コントローラ100はバイト・カウントを必要とするだけであり、それは第1書込みPRDテーブル内でも、第1読出しPRDテーブル内と同一である。したがって、本発明の実施形態では、コントローラ100はバイト・カウントのために再び第1読出しPRDテーブルにアクセスすることができる。したがって、第1書込みPRDテーブルは作成する必要が無い。この方法で、作成しなければならないPRDテーブル(つまり書込みPRDテーブル)の個数が低減され、コントローラ100によって要求される全体的な処理が簡素化される。コントローラ100は第1読取りPRDテーブルからバイト・カウントに再びアクセスすると(一般に138として図示)、データの第1部分136が、適切な多重化回路機構(この実施例では第2多重化回路機構118)を介して、宛先装置の適切なメモリ・バッファ(この実施例では第4FIFOメモリ128)に直接転送される。
本明細書で前述した通り、ホストは、データの第1部分136がホスト・インタフェース論理102を迂回し、発信元装置メモリ・バッファから宛先装置多重化回路機構を介して宛先装置メモリ・バッファに直接転送されることを、コントローラ100に知らせる適切な制御レジスタ・ビットをセットした。また、宛先装置多重化回路機構は、制御レジスタ・ビットのセッティングから、データがホスト・インタフェース論理102からではなく、発信元装置メモリ・バッファから受け取ることを知る。宛先装置多重化回路機構から、データの第1部分136は、第2装置インタフェース論理106およびインタフェース87を介して宛先装置(例えばCD−RW34)に書き込まれる。データの第1部分136の宛先装置への書込み動作は一般に、矢印142によって図示される。
コントローラ100は次いで、バイト・カウントのために次の読出しPRDテーブルにアクセスする(一般に144として図示)。コントローラ100がバイト・カウントを得ると、転送されるデータの第2または次の部分(一般に146として図示)が、ハード・ディスク32(つまり発信元装置)からインタフェース85および装置インタフェース論理104を介してコントローラ100に読み出される。再び、データの第2部分146は第1FIFOメモリ122に一時的に格納される。次いで、コントローラ100は次の書込みPRDテーブルにアクセスし(一般に148として図示)、データの第2部分146が第1FIFOメモリ122から、第2多重化回路機構118を介して、第4FIFOメモリ128に直接転送される。次いで、データの第2部分146が、第2装置インタフェース論理106およびインタフェース87を介して、CD−RW34(宛先装置)に書き込まれる。データの第2部分146のCD−RW34への書込み動作は、一般に矢印152によって示される。
同様に、コントローラ100は次いで後続の読出しPRDテーブルおよび書込みPRDテーブル(図示せず)にアクセスし、データ・セット内のデータが全部ハード・ディスク32からCD−RW34に読み出されるまで、後続のデータ読出しおよびデータ書込み(図示せず)が実行される。データ・セット全体がハード・ディスク32から読み出され、CD−RW34へ書き込まれた後、コントローラ100はバス14を介して割込みを発行する(154として図示)。
図5で分かるように、発信元装置(例えばハード・ディスク32)から宛先装置(例えばCD−RW34)へのデータの転送中に、ホストとコントローラ100との間のバス14は、初期転送要求(初期セットアップ132の一部)、コントローラ100によるPRDテーブルのアクセス、およびコントローラ100によって発行される割込み154のためにだけ使用される。そのようなバスの使用は、例えば図2に示すような装置間の従来のデータ転送中のバスの使用に比較して有利である。
本明細書で従来のデータ転送動作に関連して前述したように、データが発信元装置から宛先装置に転送されると、一種のデータ検証動作の使用を通して、データ転送の完全性が検証される。例えば、コピーされたデータ・セットのメッセージ・ダイジェストのようなデジタル・シグネチャが抽出され、(一般に)事前計算された原データ・セットのデジタル・シグネチャと比較される。従来、データ検証命令セットまたはアルゴリズム(例えばMD5アルゴリズム)は通常ホスト・メモリに常駐し、ホストがデータ検証プロセスを実行して、コピーされたデータ・セットのデジタル・シグネチャを得、原データ・セットの事前計算されたシグネチャと比較する。しかし、本明細書で前述したように、この方法による検証は、データ検証を実行するためにホストに必要なコンピューティング資源に加えて、バスでコントローラからホスト(および時々ホスト・メモリ)へデータ・セット全体を少なくとも1回完全に転送することを含む。
したがって、本発明の代替実施形態では、コントローラ100はデータ検証回路機構を含むように構成される。データ検証回路機構を含むことによって、コントローラ100はホスト、ホスト・メモリ、およびホストとコントローラ100との間のバス14をいっそう多くの義務、つまりデータ転送動作のデータ検証部分に関係するデータ転送および処理義務から解放する。
今、図6を参照すると、本発明の代替実施形態に係るコントローラ100の簡易模式図が示されている。この代替実施形態におけるコントローラ100の構成は、図4に示したコントローラ100の構成と同様であるが、この代替実施形態では、コントローラは適切なデータ検証論理または回路機構(156として図示)をも含む。本発明の代替実施形態では、データ検証回路機構156は、いずれかの適切なデータ検証動作を実行するために必要なハードウェアおよび/またはソフトウェア、例えば従来のMD2もしくはMD5アルゴリズムのようないずれかの適切なメッセージ・ダイジェスト・アルゴリズム、または従来のCRC−32もしくはCRC−64回路機構のようないずれかの適切な巡回冗長検査(CRC)回路機構を含む。
データ検証技術によっては、回路機構の実装に関連するサイズおよび複雑性により、どのデータ検証動作がコントローラ100の一部として含めるのに最もよく適するかを決定することができる。例えば、一部のメッセージ・ダイジェスト・アルゴリズムの実装は、既存のコントローラ回路機構に比較的大規模の回路を追加することを必要とすることがある。同様に、一部の冗長技術、例えばCRC−32の使用は、コントローラ100による比較的大量の処理を必要とすることがある。しかし、本発明の実施形態では、いずれかの適切なデータ検証技術がコントローラ100に組み込まれることを理解されたい。
図6に示すように、コントローラ100は例えばCRC−64データ検証回路機構156を含む。データ検証回路機構156は、ホスト・インタフェース論理102と操作可能に通信するように、コントローラ100内に実装される。また、データ検証回路機構156はコントローラ100内で、データ検証回路機構156の入力が、第1または第2装置から読み出されたデータを一時的に格納するバッファ装置の出力に接続されるように構成される。つまり、第1装置32が発信元装置であるときに第1装置(例えばハード・ディスク32)から読み出されたデータを一時的に格納する第1FIFOメモリ122の出力が、データ検証回路機構156の入力の1つである。データ検証回路機構156の他の入力は、第2装置34が発信元装置であるときに第2装置(例えばCD−RW34)から読み出されたデータを一時的に格納する、第3FIFOメモリ126の出力である。
動作中、データ検証回路機構156は、発信元装置のメモリ・バッファの出力から宛先装置の多重化回路機構の入力にも転送されるデータを受け取る。データ検証回路機構156が転送されるデータを受け取るときに、データ検証回路機構156は、データ・セット全体が宛先装置のメモリ・バッファに転送されるまで、データ検証実行情報、例えばCRC−64値を蓄積する。データ・セット全体が転送されると、データ検証回路機構156は必要なデータ検証情報をそこに格納しており、それは次いで、例えば従来の方法で、ホストによって読み出すことができる。
ホストがすでに原データ・セットのデータ検証情報を持っている場合には、コピーされたデータについてデータ検証回路機構156によって蓄積されたデータ検証情報が、ホストによって読み出され、原データ・セットについて前から存在するデータ検証情報と比較される。ホストが原データ・セットのデータ検証情報を持っていない場合には、上述したように、原データ・セットが例えば宛先装置にコピーされるときに、データ検証回路機構156が検証実行情報を蓄積する。次いで、データ・セット全体が宛先装置に転送されると、データ検証回路機構156は、コピーされたデータ・セットの宛先装置からデータ検証回路機構156へのその後の受渡しから、データ検証実行情報を蓄積することができる。次いで、ホストはコピーされたデータ・セットからこのデータ検証情報を読み出し、それを原データ・セットから、つまり発信元装置から宛先装置への原データ転送から蓄積されたデータ検証情報と比較することができる。
本発明の実施形態では、ちょうど述べたばかりの方法で、データ・セットが発信元装置から宛先装置へ直接転送されるときに、データ検証が実行される。データ検証を使用する従来の構成とは異なり、本発明の実施形態では、データ・セット全体をデータ検証計算のためにバス14でコントローラ100からホストへ読み出す必要が無い。それどころか、データ検証は、コントローラ100内のデータ検証回路機構156によって実行される。最終データ検証結果だけがコントローラ100からバス14へ転送される。したがって、この方法では、データ検証を目的とするホスト、ホスト・メモリ、およびバス14の使用は、従来の構成に比較して低減される。
今、図7を参照すると、本発明の別の代替実施形態に係る複数のコントローラの簡易模式図が示されている。本発明の実施形態では、データ転送は、同一コントローラに接続された装置に限定されない。データは、1つのコントローラとインタフェースされた発信元装置から、異なるコントローラとインタフェースされた宛先装置へ転送することができる。
本発明の代替実施形態に係る多重コントローラ構成160は、例えばSATAホスト・コントローラのような第1コントローラ162と、SATAホスト・コントローラのような第2コントローラ164と、バス・スイッチまたはPCIスイッチのようなハードウェア・スイッチ166とを含む。第1コントローラ162には、複数の装置、例えばハード・ディスクのような第1装置172およびCD−RWのような第2装置174が接続される。同様に、第2コントローラ164には、複数の装置、例えばハード・ディスクのような第3装置176およびCD−RWのような第4装置178が接続される。装置は、例えば本発明の他の実施形態に関連して本明細書で上述したように、適切なインタフェースを介して、それらのそれぞれのコントローラに接続される。多重コントローラ構成160は、スイッチ166に接続された2つのコントローラを示しているが、本発明の実施形態は、3つ以上のコントローラが適切なインタフェースを介してスイッチ166に接続される構成を含む。
単一のコントローラがPCIバスのようなバスを介してホスト12と直接インタフェースされる、本発明のこれまでの実施形態とは異なり、本発明のこの代替実施形態では、コントローラ162、164がハードウェア・スイッチ166に接続される。各コントローラは、適切なインタフェース、例えばPCIエクスプレス接続を介して、スイッチ166に接続される。スイッチ166は、適切なインタフェース、例えば上述したようにPCIバスとすることのできるバス14を介して、ホスト12に接続される。
動作時に、装置の1つからホスト12へのデータ転送要求中に、発信元装置および宛先装置が同一コントローラに接続されているか否かを決定する試験が(例えばホスト12によって)実行される。この方法で試験する能力は、以下でさらに詳述するように例えばオペレーティング・システムの一部とすることができ、あるいは適切なドライバ・ソフトウェアの一部とすることができる。
発信元装置および宛先装置が同一コントローラに接続されている場合、上述した本発明の実施形態に従って、または従来の方法で、データ転送が実行される。発信元装置および宛先装置が同一コントローラに接続されていない場合、ホスト12およびコントローラ162、164内の制御論理が、1つのコントローラに接続された発信元装置と、他のコントローラに接続された宛先装置との間のスイッチ166を介するデータ転送を管理する。各コントローラ内のデータの転送は、例えば本発明の他の実施形態に関して本明細書で上述したように、個々のコントローラに含まれるスイッチング回路機構およびインタフェース論理によって管理される。
例えば、第1装置172から第4装置178にデータ・セットを転送する際に、データは、例えば本発明の実施形態に関して本明細書で上述したように、第1(発信元)装置172から第1コントローラ装置162に転送される。しかし、宛先装置が別のコントローラに接続されているので、データは、第1コントローラ162とスイッチ166との間のインタフェースを介してスイッチ166に転送され、次いでスイッチ166と第2コントローラ164との間のインタフェースを介して、スイッチ166から第2コントローラ164に転送される。次いでデータは、例えば本発明の実施形態に関連して上述したように、第2コントローラ164から第4(宛先)装置178へ転送される。
したがって、データが異なるコントローラに接続された装置間で転送される場合であっても、本発明の実施形態では、コントローラとバス・スイッチ166との間の接続を通して、データ転送が行われる。スイッチ166とホスト12との間のバス14は、特定の機能、例えば初期データ転送要求(セットアップの一部)、コントローラによるPRDテーブル・アクセス、およびコントローラ発行割込みに使用される。しかし、本発明の他の実施形態と同様に、本発明のこの代替実施形態では、ホスト・バス14、ホスト12、およびホスト・メモリ(図示せず)はデータを転送するためには使用されない。
本発明の実施形態では、本明細書に記載の改善されたデータ転送は、ホストおよび/またはコントローラによって使用することができる様々な他の機能および標準と互換可能である。例えば、多くのコントローラが、SATA IIとして知られる標準に従って動作するように構成される。この標準には、データ記憶装置がDMA転送のようにデータ転送を最適化することを可能にする、任意選択的機能がある。これらの機能の一部は、本明細書で上述した本発明のデータ転送方法と衝突することがあるが、他の機能はそうではない。本発明の実施形態では、ホストは、本発明のデータ転送方法を実行する前に、本明細書に記載した本発明のデータ転送方法に悪影響を及ぼすかもしれない任意選択的な機能を使用不能にし、かつデータ転送方法が完了した後で、そのような任意選択的な機能を使用可能にするように構成される。使用不能にされる機能は、例えば「DMAセットアップ・フレーム情報構造(FIS)における非零バッファ・オフセット」として知られる機能を含む。該機能は、データ・セットの先頭以外の位置からデータ転送を行うことを可能にし、データ・セットの先頭は後の動作で転送される。この機能は本発明のデータ転送を混乱させるので、本発明の実施形態に係るデータ転送方法を実行する前に使用不能にする。使用不能にする別の機能として、例えば、複数の部分データ転送を可能にするネイティブ・コマンド・キューイング(NCQ)がある。
本発明のデータ転送方法と衝突しない任意選択的な特徴については、そのような特徴は、本発明のデータ転送方法が実行される間、使用可能な状態のままにされる。使用可能な状態に維持される機能は、例えば「順序通りのデータ配布の保証」として知られる機能を含む。該機能は、データ記憶装置が順序が狂ったデータを返すことによって最適化を実行することを阻止する。
ネイティブ・コマンド・キューイング(NCQ)に関して、本発明の代替実施形態では、本発明の実施形態に係るデータ転送動作と共にNCQの動作を受け入れるために、追加的回路機構および制御論理が既存のスイッチング回路機構108に追加される。追加的回路機構および制御論理は、コントローラ100が複数の発信元装置および宛先装置を検出および識別し、追加データを格納するための適切なバッファ・ストレージを提供し、複数の装置からどの発信元装置および宛先装置をデータ転送で使用するかを選択することを可能にする。制御論理はまた、NCQ動作が使用可能状態であるときにデータ転送を制御するために適切なフラッグおよび制御ビットをセットする。この方法で、本発明の実施形態に係るデータ転送は、NCQ機能を使用不能にすることなく、実行される。
最後に、本発明の実施形態では、本明細書で上述した改善されたデータ転送方法のための命令は、ホスト、ホスト・メモリ、またはホストがアクセス可能な他の適切な場所に常駐する。例えば、命令は、ホストのオペレーティング・システムが容易にアクセスできるホスト・メモリの一部分に常駐する、スタンドアロン・ユーティリティ・プログラムである。代替的に、命令はホストのオペレーティング・システムの一部である。
例えば、ホストのオペレーティング・システムの既存のコピー・コマンドは、本発明の実施形態に係る改善されたデータ転送方法のための命令を組み込むように変更される。この方法により、ホストは、データ転送を本発明の実施形態に従って、つまりデータをホストおよびホスト・メモリに転送することなく、実行することができるかどうかを、コピー・コマンドの実行の一部として自動的に決定する。ホストは、発信元装置および宛先装置が同一コントローラに接続されているか、それとも本明細書で前述したように、例えばバス・スイッチによって適切にリンクされた異なるコントローラに接続されているか、を決定する。そうである場合、コピー・コマンドは、本発明の実施形態に従ってデータ転送を実行するために、必要な命令をコントローラに提供することができる。そうでない場合、コピー・コマンドはコントローラに従来の方法でデータ転送を実行するように命令することができる。
添付した請求の範囲によって定義される本発明の精神および範囲、ならびにそれらの全範囲の均等物から逸脱することなく、本明細書に記載した発明の実施形態に対し多くの変形および置換を施すことができることは、当業者には明白であろう。例えば、本発明の実施形態では、例えば同一コントローラを通して、またはコントローラとホストとの間に接続されたバスを通して、発信元装置から複数の宛先装置に同時にデータを読み出すことができる。
PCIバスのようなバスと複数のデータ記憶装置との間でインタフェースされた従来のATAホスト・コントローラの簡易模式図である。 2つの外部装置間のコピー動作中の時間の関数としての従来のコントローラのバス利用の簡略図である。 PCIバスのようなバスと複数のデータ記憶装置との間でインタフェースされた従来のSATAホスト・コントローラの簡易模式図である。 本発明の実施形態に係るSATAホスト・コントローラのようなコントローラの簡易模式図である。 図4のコントローラを使用しての2つの外部装置間のコピー動作中のバス利用の簡略図である。 本発明の代替実施形態に係る、データ検証論理が組み込まれたSATAホスト・コントローラのようなコントローラの簡易模式図である。 本発明の代替実施形態に係る、PCIスイッチのようなバス・スイッチを介してホストとインタフェースされたSATAホスト・コントローラのような複数のコントローラの簡易模式図である。

Claims (10)

  1. コンピュータ・システム内の第1装置から少なくとも1つの第2装置へのデータの転送を制御するためのコントローラ(100)において、
    第2バスを介してインタフェースしたホスト・メモリを有するホスト・コンピュータに、第1バスを介して前記コントローラをインタフェースするためのホスト・インタフェース論理(102)と、
    第1装置バスを介して前記コントローラを前記第1装置とインタフェースするための第1装置インタフェース論理(104)であって、前記第1バスを介して前記第1装置からデータを読み出す第1装置インタフェース論理と、
    第2装置バスを介して前記コントローラを前記第2装置とインタフェースするための第2装置インタフェース論理(106)であって、前記第2バスを介して前記第2装置へデータを書き込む第2装置インタフェース論理と、
    前記第1装置インタフェース論理と前記ホスト・インタフェース論理との間に接続され、それらの間のデータ転送を制御するための第1バッファ(112)と、
    前記第2装置インタフェース論理と前記ホスト・インタフェース論理との間に接続され、前記第2装置インタフェース論理と前記ホスト・インタフェース論理との間のデータ転送を制御するための第2バッファ(116)と、
    前記第1バッファと前記ホスト・インタフェース論理との間に接続され、かつ前記第1バッファと前記第2バッファとの間に接続された第1多重化回路機構(114)であって、データが前記ホスト・インタフェース論理ならびに前記第1バス、前記ホスト・コンピュータ、前記第2バス、および前記ホスト・メモリのうちの少なくとも1つに渡されることなく、前記第2バッファから前記第1バッファへのデータの転送を制御する第1多重化回路機構と、
    前記第2バッファと前記ホスト・インタフェース論理との間に接続され、かつ前記第2バッファと前記第1バッファとの間に接続された第2多重化回路機構(118)であって、転送データが前記ホスト・インタフェース論理ならびに前記第1バス、前記ホスト・コンピュータ、前記第2バス、および前記ホスト・メモリのうちの少なくとも1つに渡されることなく、前記第1バッファから前記第2バッファへのデータの転送を制御する第2多重化回路機構と、
    を備えたコントローラ。
  2. 前記第1装置から前記第2装置へのデータの転送が、前記第1装置から前記第2装置へ少なくとも1組のデータをコピーすることを含む、請求項1に記載のコントローラ。
  3. 前記第1バッファおよび第2バッファに接続されたデータ検証論理であって、転送データが前記ホスト・インタフェース論理ならびに前記第1バス、前記ホスト・コンピュータ、前記第2バス、および前記ホスト・メモリのうちの少なくとも1つに渡されることなく、前記第1装置と前記第2装置との間で転送されるデータに対し少なくとも1回のデータ検証動作を実行するように構成されたデータ検証論理をさらに備えた、請求項1に記載のコントローラ。
  4. 前記ホスト・コンピュータが少なくとも1つのシリアル・アドバンスト・テクノロジー・アタッチメント(SATA)II最適化機能を実行するための論理を含み、前記ホスト・コンピュータが前記少なくとも1つのSATA II最適化機能を使用不能にしたときに、転送データが前記ホスト・インタフェース論理ならびに前記第1バス、前記ホスト・コンピュータ、前記第2バス、および前記ホスト・メモリのうちの少なくとも1つに渡されることなく、前記コントローラが前記第1および第2装置間のデータの転送を制御して成る、請求項1に記載のコントローラ。
  5. 前記ホスト・コンピュータがネイティブ・コマンド・キューイング(NCQ)を実行するための論理を含み、ネイティブ・コマンド・キューイングが使用可能であるときに、転送データが前記第1バス、前記ホスト・コンピュータ、前記第2バス、および前記ホスト・メモリのうちの少なくとも1つに渡されることなく、前記コントローラが前記第1および第2装置間のデータの転送を制御するためのネイティブ・コマンド・キューイング論理をさらに備えて成る、請求項1に記載のコントローラ。
  6. 前記コントローラが第1コントローラおよび少なくとも1つの第2コントローラをさらに備え、前記第1コントローラが第1コントローラ・インタフェースを介してバス・スイッチとインタフェースし、前記少なくとも1つの第2コントローラが対応する第2コントローラ・インタフェースを介して前記バス・スイッチとインタフェースし、前記バス・スイッチは、前記ホスト・コンピュータが前記第1バス、前記バス・スイッチ、および対応するコントローラ・インタフェースを介して前記第1コントローラとインタフェースするように、前記第1バスを介して前記ホスト・コンピュータおよび前記少なくとも1つの第2コントローラとインタフェースし、前記第1コントローラ、前記バス・スイッチ、および前記少なくとも1つの第2コントローラは、転送データが前記第1バス、前記ホスト・コンピュータ、前記第2バス、および前記ホスト・メモリのうちの少なくとも1つに渡されることなく、前記第1コントローラおよび前記第2コントローラ間のデータ転送を制御して成る、請求項1に記載のコントローラ。
  7. 前記第1バッファが、
    前記第1装置インタフェース論理と前記ホスト・インタフェース論理との間に接続され、かつ前記第1装置インタフェース論理と前記第2多重化回路機構との間に接続された第1先入れ先出し(FIFO)バッファ装置と、
    前記第1多重化回路機構と前記第1装置インタフェース論理との間に接続された第2FIFOバッファ装置と、
    をさらに備えて成る、請求項1に記載のコントローラ。
  8. 前記第2バッファが、
    前記第2装置インタフェース論理と前記ホスト・インタフェース論理との間に接続され、かつ前記第2装置インタフェース論理と前記第1多重化回路機構との間に接続された第3FIFOバッファ装置と、
    前記第2多重化回路機構と前記第2装置インタフェース論理との間に接続された第4FIFOバッファ装置と、
    をさらに備えて成る、請求項1に記載のコントローラ。
  9. 前記第1バス、前記第1装置バス、および前記第2装置バスのうちの少なくとも1つがPCIバスをさらに備えて成る、請求項1に記載のコントローラ。
  10. 前記コントローラの少なくとも一部分が集積回路(IC)として製造される、請求項1に記載のコントローラ。
JP2005238068A 2004-08-19 2005-08-19 改善されたデータ転送のためのコントローラ装置および方法 Expired - Fee Related JP4928100B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/921,723 US7284082B2 (en) 2004-08-19 2004-08-19 Controller apparatus and method for improved data transfer
US10/921,723 2004-08-19

Publications (2)

Publication Number Publication Date
JP2006059365A true JP2006059365A (ja) 2006-03-02
JP4928100B2 JP4928100B2 (ja) 2012-05-09

Family

ID=35910859

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005238068A Expired - Fee Related JP4928100B2 (ja) 2004-08-19 2005-08-19 改善されたデータ転送のためのコントローラ装置および方法

Country Status (4)

Country Link
US (1) US7284082B2 (ja)
JP (1) JP4928100B2 (ja)
KR (1) KR101035225B1 (ja)
CN (1) CN100527112C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014106977A (ja) * 2012-11-26 2014-06-09 Samsung Electronics Co Ltd 記憶装置及びそれを含むコンピューティングシステムと、それのデータ転送方法

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI269968B (en) * 2004-04-22 2007-01-01 Mediatek Inc Method for processing the noise in the SATA
TWI242716B (en) * 2004-04-30 2005-11-01 Mediatek Inc Method for processing interference of noise
US7865803B2 (en) * 2004-04-30 2011-01-04 Mediatek Inc. Method for processing noise interference in data accessing device with serial advanced technology attachment (SATA) interface
US8572755B2 (en) * 2005-03-29 2013-10-29 Microsoft Corporation Trust verification in copy and move operations
JP4442523B2 (ja) * 2005-06-30 2010-03-31 セイコーエプソン株式会社 データ転送制御装置及び電子機器
US20070214277A1 (en) * 2006-03-07 2007-09-13 Ahmed Ali U Peer-to-peer network communications using SATA/SAS technology
US8886892B2 (en) * 2007-01-26 2014-11-11 Hewlett-Packard Development Company, L.P. Memory module and method employing a multiplexer to replace a memory device
US7650447B2 (en) * 2007-02-16 2010-01-19 Apple Inc. System and method for a host to access an internal SATA storage device within an accessible host using an external serial ATA connection
KR20080111691A (ko) * 2007-06-19 2008-12-24 삼성전자주식회사 커넥터 및 그 통신방법
US7793032B2 (en) * 2007-07-11 2010-09-07 Commex Technologies, Ltd. Systems and methods for efficient handling of data traffic and processing within a processing device
KR100922635B1 (ko) * 2008-12-02 2009-10-22 (주) 제노맥스 Pci 익스프레스 버스 기반 테스터 인터페이스 장치
CN101782883B (zh) * 2009-01-16 2013-03-20 鸿富锦精密工业(深圳)有限公司 Sata设备控制电路及方法
WO2012109078A2 (en) 2011-02-08 2012-08-16 Lsi Corporation Selective enablement of operating modes or features via host transfer rate detection
US9423983B2 (en) * 2012-01-19 2016-08-23 Syncsort Incorporated Intelligent storage controller
US8898506B2 (en) 2012-07-25 2014-11-25 Lsi Corporation Methods and structure for hardware serial advanced technology attachment (SATA) error recovery in a serial attached SCSI (SAS) expander
US8589607B1 (en) * 2012-08-07 2013-11-19 Lsi Corporation Methods and structure for hardware management of serial advanced technology attachment (SATA) DMA non-zero offsets in a serial attached SCSI (SAS) expander
US8745296B2 (en) * 2012-10-02 2014-06-03 Intel Corporation Serial storage protocol compatible frame conversion, at least in part being compatible with SATA and one packet being compatible with PCIe protocol
WO2014174548A1 (en) * 2013-04-22 2014-10-30 Hitachi, Ltd. Storage apparatus and data copy control method
ES2652117T3 (es) * 2013-07-04 2018-01-31 Omicron Electronics Gmbh Transmisión de datos a través de una memoria de un dispositivo de comunicación
US10169257B2 (en) * 2015-03-06 2019-01-01 Rambus Inc. Module based data transfer
US10671549B2 (en) * 2015-03-25 2020-06-02 Toshiba Memory Corporation Memory system
US20170147228A1 (en) * 2015-11-25 2017-05-25 Advanced Micro Devices, Inc. Computation along a datapath between memory blocks
KR20180021284A (ko) * 2016-08-18 2018-03-02 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20180043451A (ko) * 2016-10-19 2018-04-30 삼성전자주식회사 컴퓨팅 시스템 및 그것의 동작 방법
US10559351B2 (en) 2017-02-20 2020-02-11 Texas Instruments Incorporated Methods and apparatus for reduced area control register circuit
US11226909B2 (en) 2018-08-24 2022-01-18 Rambus Inc. DRAM interface mode with interruptible internal transfer operation
SG10202105796SA (en) 2021-06-01 2021-07-29 Flexxon Pte Ltd Module and method for authenticating data transfer between a storage device and a host device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02299014A (ja) * 1989-05-12 1990-12-11 Nec Corp データコピー/比較方式
JPH096549A (ja) * 1995-06-26 1997-01-10 Hitachi Ltd 積層型ディスクアレイ装置
JP2003316522A (ja) * 2002-04-26 2003-11-07 Hitachi Ltd 計算機システムおよび計算機システムの制御方法
JP2005215729A (ja) * 2004-01-27 2005-08-11 Hitachi Global Storage Technologies Netherlands Bv データ伝送制御方法及び記憶装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60110067A (ja) * 1983-11-21 1985-06-15 Mitsubishi Electric Corp 簡易型メモリデ−タ転送装置
JPS62138948A (ja) * 1985-12-13 1987-06-22 Hitachi Ltd デ−タ転送装置
US4991084A (en) * 1988-02-05 1991-02-05 International Business Machines Corporation N×M round robin order arbitrating switching matrix system
CA2014799A1 (en) * 1989-05-08 1990-11-08 John W. Whisler System and method for reading and writing disks formatted for an operating system foreign to the host computer
JPH0340122A (ja) * 1989-07-07 1991-02-20 Nec Corp ディスク内ダイレクトコピー機能付ハードディスクコントローラ
JP2910303B2 (ja) * 1990-06-04 1999-06-23 株式会社日立製作所 情報処理装置
US5522050A (en) * 1993-05-28 1996-05-28 International Business Machines Corporation Bus-to-bus bridge for a multiple bus information handling system that optimizes data transfers between a system bus and a peripheral bus
US5799161A (en) * 1993-06-25 1998-08-25 Intel Corporation Method and apparatus for concurrent data routing
US5859988A (en) * 1995-09-29 1999-01-12 Intel Corporation Triple-port bus bridge
KR100197407B1 (ko) * 1995-12-28 1999-06-15 유기범 전전자 교환기에 있어서 프로세서들간 통신버스구조
US6175888B1 (en) * 1996-04-10 2001-01-16 International Business Machines Corporation Dual host bridge with peer to peer support
US5889935A (en) * 1996-05-28 1999-03-30 Emc Corporation Disaster control features for remote data mirroring
US6081863A (en) * 1998-03-13 2000-06-27 International Business Machines Corporation Method and system for supporting multiple peripheral component interconnect PCI buses by a single PCI host bridge within a computer system
US6763416B1 (en) * 1999-07-29 2004-07-13 Micron Technology, Inc. Capturing read data
JP2001256176A (ja) * 2000-03-13 2001-09-21 Mitsubishi Electric Corp ブリッジ装置
US6633296B1 (en) * 2000-05-26 2003-10-14 Ati International Srl Apparatus for providing data to a plurality of graphics processors and method thereof
EP1191456B1 (en) * 2000-09-25 2008-02-27 Bull S.A. A method of transferring data in a processing system
JP4009434B2 (ja) * 2001-04-18 2007-11-14 株式会社日立製作所 磁気ディスク装置間結合装置
US6792486B1 (en) * 2002-04-30 2004-09-14 Western Digital Ventures, Inc. System and method for managing information storage among plural disk drives
US6954811B2 (en) * 2002-07-19 2005-10-11 Calix Networks, Inc. Arbiter for an input buffered communication switch
US7349416B2 (en) * 2002-11-26 2008-03-25 Cisco Technology, Inc. Apparatus and method for distributing buffer status information in a switching fabric

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02299014A (ja) * 1989-05-12 1990-12-11 Nec Corp データコピー/比較方式
JPH096549A (ja) * 1995-06-26 1997-01-10 Hitachi Ltd 積層型ディスクアレイ装置
JP2003316522A (ja) * 2002-04-26 2003-11-07 Hitachi Ltd 計算機システムおよび計算機システムの制御方法
JP2005215729A (ja) * 2004-01-27 2005-08-11 Hitachi Global Storage Technologies Netherlands Bv データ伝送制御方法及び記憶装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014106977A (ja) * 2012-11-26 2014-06-09 Samsung Electronics Co Ltd 記憶装置及びそれを含むコンピューティングシステムと、それのデータ転送方法

Also Published As

Publication number Publication date
KR101035225B1 (ko) 2011-05-18
JP4928100B2 (ja) 2012-05-09
KR20060017470A (ko) 2006-02-23
CN1737781A (zh) 2006-02-22
CN100527112C (zh) 2009-08-12
US20060041702A1 (en) 2006-02-23
US7284082B2 (en) 2007-10-16

Similar Documents

Publication Publication Date Title
JP4928100B2 (ja) 改善されたデータ転送のためのコントローラ装置および方法
US8762789B2 (en) Processing diagnostic requests for direct block access storage devices
TWI278755B (en) An apparatus and method for high performance volatile disk drive memory access using an integrated DMA engine
US8200857B2 (en) Coalescing multiple contexts into a single data transfer in a media controller architecture
JP5960517B2 (ja) フラッシュメディアコントローラの内部のメタデータハンドリング
TW202234263A (zh) 實施用於雲端遊戲資料儲存及擷取之高速資料通信組構之系統及方法
JP2013025795A (ja) フラッシュデバイスのためのフラッシュコントローラハードウェアアーキテクチャ
WO2012117435A1 (en) Storage apparatus and data processing method of the same
US7600058B1 (en) Bypass method for efficient DMA disk I/O
JP6649989B2 (ja) ストレージシステム及びその制御方法
US8230134B2 (en) Fast path SCSI IO
KR100638378B1 (ko) 디스크 제어장치의 메모리 구조에 대한 시스템 및 방법
JP2007011526A (ja) Hddコントローラ及びそれを搭載したシステム
US7596639B2 (en) Skip mask table automated context generation
Xuan et al. Design of NVME SSD Realtime High Speed Storage System Based on ZYNQ UltraScale+ MPSoC
JP2015215641A (ja) 情報処理装置,エミュレーションプログラム,及びエミュレーション方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080811

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110131

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110428

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110509

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110531

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110603

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110629

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110704

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110729

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120118

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120210

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150217

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees