(57)【要約】      （修正有）【課題】記憶装置は、ホストコンピュータのホストコントローラとのインターフェイスをとるためにドライバを要求する。各ドライバはトランスポート層を有しており、当該トランスポート層はドライバがそれぞれの記憶装置と通信することを可能にする。【解決手段】ホストコンピュータのバスと複数のタイプの記憶装置のうちの何れかとのインターフェイスをとることができるユニバーサルストレージバスアダプタを提供する。このユニバーサルシリアルバスアダプタは、記憶装置のタイプ毎に別個のトランスポート層を設ける必要がないようにトランスポート層機能を提供する。読取り／書込みオペレーションが例外処理およびファイル管理システムの管理の機能をバイパスすることが可能になるように構成された読取り／書込みチムニを有するファイル管理システム（またはストレージスタック）を含む。これらの機能をバイパスすると読取り／書込み動作の処理効率が向上する。【選択図】図２
2006294022.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアインターフェイス層に結合されたトランスポート層を有するコントローラを含むユニバーサルストレージアダプタと、読取り／書込みオペレーションを直接、前記コントローラに及び前記コントローラから通す読取り／書込みチムニと、
を備え、
前記コントローラは、読取り／書込みオペレーションを直接、インターフェイス層へと送出するようになっており、
ファイル管理システム。
【請求項２】
前記トランスポート層が、クラスドライバと、ポートドライバと、バスドライバのうちの少なくとも一つを備える、請求項１に記載のファイル管理システム。
【請求項３】
圧縮／暗号化と、ボリューム管理と、パーティション管理のうちの少なくとも一つを含むサービスを提供するように構成されたストレージスタック管理層を更に備える、請求項１に記載のファイル管理システム。
【請求項４】
前記サービスが、ソフトウェアで実装される、請求項３に記載のファイル管理システム。
【請求項５】
前記コントローラが、前記スタック管理層のサービスに対するハードウェア補完物であるモジュールに結合されている、請求項４に記載のファイル管理システム。
【請求項６】
前記インターフェイス層が、一以上のインターフェイスモジュールを含み、各インターフェイスモジュールが、特定の記憶装置のプロトコル向けに構成される、請求項１に記載のファイル管理システム。
【請求項７】
前記読取り／書込みオペレーションが、ＳＣＳＩベースのコマンドを含み、前記インターフェイスモジュールが、前記特定の記憶装置のプロトコルと前記ＳＣＳＩベースのコマンドとの間の翻訳を行うように構成される、請求項６に記載のファイル管理システム。
【請求項８】
インターフェイス層および前記一以上のモジュールが、ハードウェアで実装され、
ストレージスタック管理層をさらに備え、
前記ストレージスタック管理層のサービスが、ソフトウェアで実装される、請求項７に記載のファイル管理システム。
【請求項９】
前記コントローラが、前記インターフェイス層を介してデータをメインメモリに転送するための読取り／書込みオペレーションを実行するように構成され、前記オペレーションが、転送すべきボリュームと、転送すべきバイト数と、前記データを転送すべきメインメモリ内の位置とを特定するコマンドを含む、請求項１に記載のファイル管理システム。
【請求項１０】
前記ボリュームが、複数のパーティションを備え、前記パーティションが、複数の記憶装置のうちの一以上に格納される、請求項９に記載のファイル管理システム。
【請求項１１】
前記コントローラが、前記記憶装置上に格納され得る少なくとも一つのボリュームを含むボリュームテーブルを指すポインタと、前記少なくとも一つのボリュームの一部分を格納できる前記記憶装置を指すリンクポインタとを格納する複数のレジスタを備える、請求項１０に記載のファイル管理システム。
【請求項１２】
前記コントローラが、ボリュームデータ構造およびリンクデータ構造に応答して、データが転送されるメインメモリ内の領域を指す一連の物理領域記述を確立する、請求項１１に記載のファイル管理システム。
【請求項１３】
データを記憶装置に／記憶装置から転送するためのコンピュータシステムにおいてファイル管理システムを運用する方法であって、
使用可能な記憶装置のボリュームおよびパーティションに関する情報を取得するステップと、
ボリュームデータ構造を第１のレジスタに格納するステップであって、前記ボリュームデータ構造が、ディスクデータ構造を指すポインタを含む、ステップと、
リンクデータ構造を第２のレジスタに格納するステップであって、前記リンクデータ構造が、前記ディスクデータ構造を指すポインタを含む、ステップと、
前記ディスクデータ構造内のコマンドポインタを利用して、前記コンピュータシステムのメインメモリに格納されたデータにアクセスし、前記データを前記メインメモリと前記記憶装置との間で転送するステップと
を含む方法。
【請求項１４】
データが格納されている一連のディスクを指すポインタを定義するために、あるリンクのインターフェイスにアクセスするためのリンクを利用するステップを更に含む、請求項１３に記載の方法。
【請求項１５】
前記各ボリュームのポインタをリンクポインタと組み合わせて、アクセスすべき物理領域記述子を確立する、請求項１３に記載の方法。
【請求項１６】
各ボリュームが、一以上のパーティションを備え、前記コントローラが、転送される前記パーティションのカウントを維持し、前記転送が完了したときに、割込みをメインメモリに供給する、請求項１５に記載の方法。
【請求項１７】
読取り／書込みオペレーションを管理するための、コンピュータ可読媒体でのコンピュータプログラム製品であって、
レジスタ内のリンクポインタおよびボリュームポインタを、ＰＣＩインターフェイスで定義するための第１の命令と、
前記リンクポインタおよび前記ボリュームポインタを利用して、メインメモリ内の領域を、一以上のディスクドライブ内のデータストレージ領域に関連付ける物理領域記述を定義するための第２の命令と、
を備えるコンピュータプログラム製品。
【請求項１８】
前記第１の命令が、前記ボリュームポインタを利用して、一以上のディスク上の複数のパーティションを、前記ディスクと前記メインメモリとの間の転送のために、特定するステップを含む、請求項１７に記載のコンピュータプログラム。
【請求項１９】
メインメモリに転送すべきパーティションを追跡し、転送が完了したときに、その旨を前記コントローラに知らせるための第３の命令を含む、請求項１８に記載のコンピュータプログラム。
【発明の詳細な説明】
【発明の分野】
【０００１】
[0001]本発明は、広く、コンピュータのデータストレージに関するものである。より詳細には、本発明は、より効率的にデータの読取りおよび書込みを実行するユニバーサルストレージバスアダプタに関するものである。
【発明の背景】
【０００２】
[0002]コンピュータおよびその他のシステムは、長年、大容量のデジタル情報を格納するために、ディスクドライブを使用してきた。その理由は、コンピュータおよびその他のシステムは、十分なメインメモリ（ランダムアクセスメモリなど）を有して進行中の計算タスクを処理し得る一方で、オペレーティングシステム、アプリケーションプログラム、プログラムデータなど、大容量のデータを格納する場合には、通常、ディスクドライブなどの大容量記憶装置を必要とするからである。
【０００３】
[0003]フロッピーディスク、ハードディスク、光ディスク（ＤＶＤおよびＣＤ装置を含む）、および不揮発性のソリッドステートメモリ装置（ＲＡＭディスクなど）を含む、多くのタイプの大容量記憶装置がある。これらの大容量記憶装置は、総称して、大容量記憶装置と呼ばれる。さらに、大容量記憶装置とのインターフェイスをとるために、多くの異なる技術が使用されている。今日のパーソナルコンピュータ環境では、二つの汎用インターフェイス技術、すなわち、ＳＣＳＩ（小型コンピュータシステムインターフェイス）、およびＩＤＥ（インテリジェントドライブエレクトロニクス、または統合ドライブエレクトロニクス）が主流である。両技術ともに、それ自体の汎用インターフェイススキーム内に数多くの実装形態を有している。例えば、ＳＣＳＩ−１、ＳＣＳＩ−２、Ｗｉｄｅ  ＳＣＳＩ、Ｆａｓｔ  ＳＣＳＩ、Ｆａｓｔ  Ｗｉｄｅ  ＳＣＳＩ、Ｕｌｔｒａ  ＳＣＳＩ、ＳＣＳＩ−３、Ｕｌｔｒａ２  ＳＣＳＩ、Ｗｉｄｅ  Ｕｌｔｒａ２  ＳＣＳＩ、ＥＩＤＥ、ＵＤＭＡ  ＩＤＥ、Ｕｌｔｒａ−ＡＴＡ  ＩＤＥなどがある。その他の競合システムとしては、ファイバチャネル、インターネットファイバチャネル(internet like fiber channel)、外部ファイバチャネル、ＳＡＳなどがある。
【０００４】
[0004]ＩＤＥは、組込み型コントローラを有するディスクドライブを指す一般用語である。組込み型コントローラは、大容量記憶装置の製造業者が自社の装置に何らかの特定のコントローラの仕様と互換性をもたせる必要がないので、大きな利点がある。要求されるものは、マザーボードと大容量記憶装置とのインターフェイスをとるＩＤＥコネクタだけである。
【０００５】
[0005]今日、大部分のインターフェイス技術は、ＰＣＩ（周辺機器相互接続）バスなどのパラレルバスを介して、大容量記憶装置とマザーボードとのインターフェイスをとっている。その一方、パラレルポートまたはＩＳＡ（業界標準アーキテクチャ）バスなどその他のポートを介して、他のタイプのドライブを接続することもできる。
【０００６】
[0006]各タイプの記憶装置は、ホストコンピュータシステムのホストコントローラとのインターフェイスをとるために、ドライバを要求する。各ドライバは、トランスポート層を有しており、当該トランスポート層はドライバがそれぞれの記憶装置と通信することを可能にする。パーソナルコンピュータはすべて、何らかの抽象化層において小型コンピュータシステムインターフェイス−ＳＣＳＩタイプフォーマットを使用して動作する。ホストコントローラおよび記憶装置ドライバは、ＳＣＳＩタイプフォーマットのコマンドを、記憶装置が使用するフォーマットに翻訳する。新しいフォーマットであるシリアルアタッチドＳＣＳＩ（Ｓｅｒｉａｌ  ａｔｔａｃｈｅｄ  ＳＣＳＩ）は、シリアルＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ：ＳＡＴＡ）をサポートする任意選択の拡張機能を有する。この拡張機能により、シリアルアタッチドＳＣＳＩとＳＡＴＡの記憶装置を混在させ、マッチングすることが可能になる。その他のすべてのプロトコルは、本質的には、何らかのタイプのトランスポート層でカプセル化されたＳＣＳＩプロトコルである。したがって、トランスポート層を除くと、すべての装置がＳＣＳＩと対話する（ｔａｌｋ）。しかし、上述したように、トランスポート層は、記憶装置と通信する必要がある。
【０００７】
[0007]メモリやインターフェイス技術のタイプに関わらず、データの記憶またはデータの回復は、プロセッサによって開始され、このプロセッサは、ホストコントローラに当該プロセッサと大容量記憶装置とのインターフェイスをとらせる。データは、ホストコントローラを介して大容量記憶装置との間を流れる。パーソナルコンピュータにおいては、１９８０年代以降、パラレルデータストレージのＡＴＡ（ＡＴアタッチメント）規格が、ＰＣ向けの標準ストレージインターフェイスを定義している。ＡＴＡは、Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔの略称であり、ディスクドライブ自体にコントローラが統合されているディスクドライブを指す。パラレルＡＴＡは、廉価で、広い支持を受け、よく知られ、広く受け入れられており、高速なパフォーマンスが可能なことも分かってきている。ＡＴＡには、いくつかのバージョンがある。ＡＴＡそれ自体は、ＩＤＥと相互に交換可能に使用されものであり、ＡＴＡ−２（ＥＩＤＥ／Ｆａｓｔ  ＡＴＡ）は、より高速な動作モードおよびマルチワードＤＭＡモード、並びに論理ブロックアドレッシング（ＬＢＡ）およびブロック転送をサポートし、ＡＴＡ−３、Ｕｌｔｒａ−ＡＴＡ（Ｕｌｔｒａ−ＤＭＡ、ＡＴＡ−３３、およびＤＭＡ−３３）は、３３ＭＢｐｓで動作するマルチワードＤＭＡモード３をサポートし、ＡＴＡ／６６はＡＴＡのスループットを２倍にする。また、ＡＴＡ／１００がある。
【０００８】
[0008]パラレルＡＴＡは、有益なことが分かってきてはいるが、制限もある。パラレルＡＴＡは、多数のピンおよび平行導体を必要とし、５Ｖ（ｖｏｌｔ）テクノロジを使用するものであり、マルチメディアアプリケーションに必要となる高いデータレートをサポートするように実装することが困難である。これらの欠点の故に、ＳＡＴＡとしても知られる高パフォーマンスの記憶装置向けインターフェイスであるシリアルＡＴＡが、開発されている。これに引けをとらないように、ＳＣＳＩディスクドライブ用のシリアルインターフェイス規格も、開発されている。
【０００９】
[0009]記憶装置のタイプが急激に増え、現代のディスクドライブにおけるストレージ寸法がますます肥大化することによって、問題が生まれている。単にデータを格納し検索するだけで、プロセッサ時間の大部分を消費することもある。このため、ホストプロセッサのパフォーマンスへの影響を最小限に抑えながら、ホストコンピュータのバス（通常はＰＣＩ）と記憶装置の一つまたは複数のバスとのインターフェイスをとる、ホストバスアダプタ（ＨＢＡ）の必要が生まれている。これには、ホストバスアダプタが、自動的に、あるいはホストプロセッサまたは記憶装置のプロセッサの介入を幾分伴って、多くの低レベルのインターフェイス機能を処理する必要がある。例えば、インテル社が、ＡＨＣＩ（アドバンストホストコントローラインターフェイス）仕様を開発しており、当該仕様は、ＳＡＴＡ装置がどのようにホストコントローラハードウェアとインターフェイスするのかをレジスタレベルで記述する。シリアルＳＣＳＩ装置は、全く異なるＨＢＡを有することができる。
【００１０】
[0010]記憶装置のバスは、いくつかの標準化されたバスのうちの一つとなり得るものであり、あるいはカスタムバスになり得るものであるので、ホストバスアダプタは、使用される記憶装置とマッチするものでなければならない。コンピュータの記憶装置バスのすべてのポートは、本質的に、ＳＣＳＩと同様のコマンドレベルで動作する。従来技術においては、専用のホストコントローラから記憶装置へのコマンドのインターフェイスをとるソフトウェアドライバを使用して、記憶装置のコマンドプロトコルが実装されていた。このソフトウェアドライバは、ホストプロセッサとの対話を必要としていた。ホストコントローラおよびソフトウェアドライバは、ＳＣＳＩタイプフォーマットを記憶装置のプロトコルへと効率的に翻訳する。ファイルシステムとの対話の多いアプリケーションに大容量のメモリ装置が用いられると、ホストプロセッサは、極めて膨大な量の時間を費やして、ソフトウェアドライバの実装している。これは、ＨＢＡがシステムに加えられる時点、ＨＢＡが時間の経過に伴って変更され得る時点、又はＨＢＡが特定のアプリケーションと適合するようにカスタマイズされ得る時点には、使用可能な記憶装置を知り得なないので、極めて困難であり、あるいは費用のかかるものになる可能性がある。
【００１１】
[0011]図１は、従来技術のファイル管理システム１００（またはストレージスタック）が、どのように記憶装置ハードウェア１１４と対話するかを示す概念図である。ファイル管理システム１００は、ファイルシステム１０２の要求を特定のストレージボリュームへと導くボリュームマネージャ１０４と、ファイルシステム１０２の要求をそのストレージボリューム内の特定のパーティションへと導くパーティションマネージャ１０６の両者を実装している。これらは、ホストコンピュータシステムにおける使用可能な記憶装置を識別するものと見なすことができる。ファイル管理システム１００は、ストレージクラスをサポートするクラス（ＳＣＳＩやＩＤＥなど）ドライバ１０８、およびポートＩ／Ｏオペレーションを可能にするポートドライバ１１０も実装している。バスドライバ１１２が、バスの衝突なく信号を必要なバス上に渡すために必要に応じて実装され、最後に、記憶装置ハードウェア１１４が、アクセス対象の記憶装置のストレージバスに接続される。クラスドライバ１０８、ポートドライバ１１０、およびバスドライバ１１２は共同して、アクセス対象の記憶装置に関連するドライバに対するトランスポート層の働きをする。必要に応じて、ファイル管理システム１００は、データ圧縮および暗号化１０３も実装することができる。ここで一般的に説明したアーキテクチャの二つの欠点は、（ｉ）ホストコンピュータシステムで使用される記憶装置のタイプ毎に、別個のトランスポート層が必要になること、および（ｉｉ）ファイルシステム１０２（すなわち、オペレーティングシステム）と、ホストコンピュータシステムにおける様々な記憶装置との間のトランザクションの９０％超は、読取り／書込みオペレーションであり、かかるオペレーションは通常、ファイル管理システム１００の層１０３、１０６、１０８、１１０、および１１２のサービスを必要としないことである。必要とされる中間層を介して各トランザクションを処理するのは、不適当であり、時間も要する。したがって、ホストコンピュータのバスと複数の記憶装置とのインターフェイスをとることができる新しいタイプの装置があれば、有益なはずである。ホストコンピュータのバスと、複数の記憶装置のうちの任意の記憶装置とのインターフェイスをとることもできるユニバーサルストレージバスアダプタは、さらに有益であろう。
【発明の概要】
【００１２】
[0012]本発明の原理を用いた実施形態は、ホストコンピュータのバスと、複数のタイプの記憶装置のうちの任意の記憶装置とのインターフェイスをとることができる、ユニバーサルストレージバスアダプタを提供する。このユニバーサルシリアルバスアダプタは、記憶装置のタイプ毎に別個のトランスポート層を設ける必要がないように、トランスポート層機能を提供する。
【００１３】
[0013]本発明の実施形態は、読取り／書込みチムニを有するファイル管理システム（またはストレージスタック）を備えており、当該チムニは、読取り／書込みオペレーションがファイル管理システムの例外処理及び管理の機能をバイパスすることを可能にするように構成されている。これらの機能をバイパスすると、読取り／書込みオペレーションの処理効率が向上する。さらに、このアーキテクチャは、他のタイプのオペレーションが、ファイル管理システムの例外処理および管理の層におけるサービスにアクセスすることを可能にする。
【００１４】
[0014]以下の詳細な説明を添付の図面と併せて考察すれば、本発明の諸原理を容易に理解することができる。
【好ましい実施形態の詳細な説明】
【００１５】
[0021]本発明の諸原理は、ユニバーサルストレージバスアダプタを提供し、当該ユニバーサルストレージバスアダプタは、データ読取り／書込み要求を直接、ホストコンピュータのバスと異なるタイプの記憶装置との間でインターフェイスする。かかるユニバーサルストレージバスアダプタは、標準化された読取り／書込みコマンドを使用して、ホストプロセッサの介入を幾分伴いあるいは全く伴うことなく、メモリ装置のバスへのデータの書込みおよび読取りができるような方式で、ホストコンピュータのメインバス（ＰＣＩ）を、メモリ装置のバスに結合する。本発明の諸実施形態は、読取り／書込みチムニを有するストレージスタックを使用して、複数のタイプの記憶装置をインターフェイスすることができ、当該チムニは、ストレージスタックの例外処理および管理の機能をバイパスする
【００１６】
[0022]図２は、本発明の諸原理によるコンピュータシステム２００を示している。システム２００は、プロセッサ２０４が使用するプログラムおよびデータを格納するためのメインメモリ２０２を含む。システム２００はさらに、全体的にチップセット２０６として示す補助システムを含んでおり、当該チップセット２０６は、ユニバーサルストレージバスアダプタ２０８を有している。ユニバーサルストレージバスアダプタ２０８は、ＲＡＩＤドライブ用のハードウェア圧縮／伸張エンジンをサポートすることが有益であり、また、その他の特徴も含み得る。ユニバーサルストレージバスアダプタ２０８は、ディスクドライブ２１１、２１３、２１５、および２１７を含むディスクドライブシステムで、データ統合を支援する。ディスクドライブ２１１、２１３、２１５、および２１７を、そうする必要はないが、ＲＡＩＤストレージシステムの一部とすることができる。さらに、ディスクドライブ２１１、２１３、２１５、および２１７を、同じタイプ（たとえば、シリアルＳＣＳＩ）にすることができ、あるいは、それらを異なるタイプ（たとえば、シリアルＳＣＳＩドライブとＳＡＴＡドライブ）にすることもできる。図３および４を用いて以下でさらに詳細に説明するように、ユニバーサルストレージバスアダプタ２０８は、複数のタイプの記憶装置と協働するように設計され、実装される。
【００１７】
[0023]ディスクドライブ２１１、２１３、２１５、および２１７はそれぞれ、個々のディスクドライブ内でのデータの格納および読取りを制御するドライブエレクトロニクス２１２、２１４、２１６、２１８を含む。データは、ユニバーサルストレージバスアダプタ２０８とディスクドライブ２１１、２１３、２１５、および２１７との間で、双方向ストレージバス２１９を介して、渡される。ユニバーサル記憶装置アダプタ２０８は、メインバス、通常はＰＣＩバスを介して、プロセッサ２０４と双方向ストレージバス２１９とのインターフェイスをとる。実際には、双方向ストレージバス２１９は、インターフェイスチップを使用して、一つ以上のディスクドライブ２１１、２１３、２１５、および２１７に接続される。システム２００の様々なコンポーネントの統合を可能にするために、このシステムは、オペレーティングシステム（図示せず）の制御の下で動作する。
【００１８】
[0024]コンピュータシステム２００は、ＳＣＳＩベースのファイル管理システム３００（またはストレージスタック）を実装しており、当該ファイル管理システム３００は、入出力データと共に、読取り／書込みオペレーションを直接、処理のために選択的にユニバーサル記憶装置アダプタ２０８へと渡すための読取り／書込みバイパスを有している。図３は、本発明の一実施形態による、ファイル管理システム３００のアーキテクチャを示している。図示したように、ファイル管理システム３００は、図１のファイル管理システム１００の例外処理及び管理の層を有している。ただし、読取り／書込みオペレーションの優位性を考慮し、ファイル管理システム３００は、読取り／書込みオペレーションを直接、記憶装置のハードウェア層３１４とパイプラインする読取り／書込みチムニ３０９を含んでいる。このアーキテクチャを用いると、読取り／書込みオペレーションが、圧縮／暗号化層３０２、ボリュームマネージャ３０４、パーティションマネージャ３０６、クラスドライバ３０８、ポートドライバ３１０、およびバスドライバ３１２をバイパスすることが可能になる。マルチギガバイトの記憶装置を使用する場合、単に読取り／書込みオペレーションを管理するだけでもプロセッサ時間の大部分を消費することがあるので、これらの例外処理および管理の層をバイパスすることは、非常に有利である。上記に関わらず、図１における従来のファイル管理システム１００の原理による例外処理および管理の層のサービスを使用して、読取り／書込みオペレーション以外のオペレーションを処理することもできる。
【００１９】
[0025]また、図示したように、クラスドライバ３０８、ポートドライブ３１０、およびバスドライバ３１２は、共同してトランスポート層を形成しており、ユニバーサル記憶装置アダプタ２０８内に含まれている。図４を用いて以下でさらに詳細に説明するように、トランスポート層機能をユニバーサル記憶装置アダプタ２０８に移すことにより、その記憶装置がＳＣＳＩベースであるのか、ＳＡＴＡベースであるのか、それともその他の規格ベースであるのかに関わらず、一つのＳＣＳＩベースのトランスポート層を、任意のタイプの記憶装置と共に使用することが可能になる。かかるアーキテクチャによって、記憶装置のタイプ毎に別個のトランスポート層を作成しなければならない事態が回避される。このことは、従来技術のシステムに比し大きな進歩である。
【００２０】
[0026]図４は、本発明の一実施形態による、ファイル管理システム３００およびユニバーサル記憶装置アダプタ２０８の一つの実装アーキテクチャを示している。ストレージスタック管理層４０４は、ファイルシステム３０１から送出されたオペレーションが、モジュール４０１の様々なサービスにアクセスすることを可能にするように構成されている。モジュール４０１は、その他の機能のうちでもとりわけ、図３における圧縮／暗号化層３０２、ボリュームマネージャ３０４、およびパーティションマネージャ３０６の管理機能を含む。本明細書に開示のアーキテクチャは、ファイル管理システム３００から必要とされる機能に応じて、モジュール４０１を追加し、あるいは取り除くことができるように設計されている。一実施形態では、モジュール４０１およびストレージスタック管理層４０４は、ソフトウェアの形で実装される。
【００２１】
[0027]コントローラ４３０は、モジュール４０３およびインターフェイス層４０２に結合されている。一実施形態では、モジュール４０３は、モジュール４０１に対するハードウェア補完物である。したがって、機能がファイル管理システム３００において追加され、あるいは取り除かれた範囲内で、場合によっては、ソフトウェアモジュール４０１が追加され、あるいは取り除かれ、場合によっては、対応するハードウェアモジュール４０３が追加され、あるいは取り除かれる。モジュール４０３は、モジュール４０１の補完物であるので、その他の機能のうちでもとりわけ、圧縮／暗号化層３０２、ボリュームマネージャ３０４、ならびにパーティションマネージャ３０６の管理機能を含んでいる。
【００２２】
[0028]コントローラ４３０は、図３におけるクラスドライバ３０８、ポートドライバ３１０、およびバスドライバ３１２のトランスポート層機能を含む。さらに、一実施形態では、コントローラ４３０およびインターフェイス層４０２は、図３における記憶装置のハードウェア層３１４の機能を含む。
【００２３】
[0029]インターフェイス層４０２は、対応する記憶装置（図示せず）に結合された様々なインターフェイスモジュール（たとえば、インターフェイスモジュール４３８、４４０、４４２、４４４、４４６、４４８、および４５２）を含む。各インターフェイスモジュールは、特定の記憶装置のプロトコル向けに構成され、ファイルシステム３０１から送出されたＳＣＳＩベースのコマンドを、その記憶装置のプロトコルに翻訳し、逆のことも同様に行う。例えば、インターフェイス４４０は、ＳＣＳＩベースのコマンドをＳＡＴＡに翻訳し、ＳＡＴＡベースのコマンドをＳＣＳＩに翻訳するように構成される。一実施形態では、インターフェイス層４０２の機能は、ハードウェアの形で実装される。インターフェイス層４０２を用いると、ＳＡＳ物理層４４２がＳＡＴＡ物理層４４０との下位互換性をもち、したがって、ＳＡＳとＳＡＴＡのどちらのディスクドライブもユニバーサルストレージバスコントローラ４３０に直接接続することが可能になることによる恩恵を、ホストコントローラが享受することが可能になる。
【００２４】
[0030]重要なことに、記憶装置がコンピュータシステム２００に追加される範囲内で、ファイル管理システム３００がその記憶装置と適切に通信できるように、その記憶装置の使用するプロトコルに対応するインターフェイスモジュールを、インターフェイス層４０２に追加することができる。コントローラ４３０にトランスポート層機能が含まれているので、追加された記憶装置をサポートする際に、追加のトランスポート層機能をファイル管理システム３００に追加する必要はない。このようにして、一実施形態では、ユニバーサルストレージバスアダプタ２０８は、モジュール４０３と、コントローラ４３０と、インターフェイス層４０２とを含み、コンピュータシステム２００と共に使用される任意のタイプの記憶装置と適合するように構成される。
【００２５】
[0031]また、図示したように、このアーキテクチャを用いると、コントローラ４３０が、読取り／書込みチムニ３０９を介して、ファイルシステム３０１からのＳＣＳＩタイプの読取り／書込みオペレーションを直接受け入れることが可能になる。図５および６を用いて以下でさらに詳細に説明するように、コントローラ４３０は、これらのオペレーションを、インターフェイス層４０２に接続されている適切な記憶装置に分配して処理するように構成されている。図２を参照すると、読取り／書込みオペレーションに関連するデータが、メインメモリ２０２と、一以上のディスクドライブ２１１、２１３、２１５、および２１７との間で転送されている。先に説明したように、これらの各記憶装置は、特定の記憶装置の使用するプロトコルに基づくインターフェイス層４０２のインターフェイスモジュールのうちの一つに結合されている。
【００２６】
[0032]本発明の諸原理によれば、読取り／書込みオペレーションを実装する負担の大部分が、ハードウェアに移される。これには、ハードウェアがソフトウェアよりも遥かに高速なので、読取り／書込みの待ち時間が短縮されることと、ホストプロセッサをその他のタスクの処理により多く利用できるようになることの二つの利点がある。読取り／書込みオペレーションは、存在する数多くのファイル管理動作のうちのほんの二つにすぎないが、実際に生じるファイルシステムのオペレーションの非常に多くの部分を占めているので、読取り／書込みオペレーションを実装する負担の大部分をハードウェアに移すことは、特に有益である。
【００２７】
[0033]図５および６を参照すると、コントローラ４３０は、本発明に従って、図２のメインメモリ２０２から得られた読取り／書込みコマンド（コントローラコマンドともいう）を実行するように構成されている。コントローラ５００は、（ボリュームＸ、転送すべきバイト数、メモリ位置）というフォーマットのコマンドを実行する。
【００２８】
[0034]コントローラ４３０は、上記の各コマンドから得られた情報を格納する。コントローラコマンドは、データをそこにまたはそこから転送すべき１組のパーティションにあたるボリュームと、転送すべきバイト数と、メインメモリ２０２内のどこにまたはどこからデータを転送すべきかを指定するメモリ位置情報とを提供することが、理解されよう。より具体的には、メモリ位置情報は、データをそこにまたはそこから転送すべきメモリ空間５６０内の領域を記述する、１組の物理領域記述（ｐｈｙｓｉｃａｌ  ｒｅｇｉｏｎ  ｄｅｓｃｒｉｐｔｉｏｎ：ＰＲＤ）を含む。コントローラ４３０は、図２の記憶装置２１１、２１３、２１５、２１７（ここでは記憶装置５１０で表す）にデータを書き込み、またはそこからデータを読み取るように構成されている。これらの記憶装置は通常、複数のディスクドライブを含むＲＡＩＤアレイになっており、そこでは、複数のディスク上で発見される複数のパーティションで、一つのボリュームが識別される。
【００２９】
[0035]コントローラ４３０は、複数のレジスタを備えており、これらは、ＰＣＩまたはその他の標準化されたインターフェイス規格の一部として定義される。これらのレジスタは、制御情報および構成情報を領域５０２に、リンクポインタを領域５０４に、ボリュームポインタを領域５０６にそれぞれ格納する。これらのレジスタを用いて、読取り／書込みコマンドが、実行される。リンクポインタおよびボリュームポインタは、以下で説明する方式で、コントローラコマンドを実行するのに使用される。
【００３０】
[0036]先に説明したように、コントローラコマンド５２０などのコントローラコマンドは、データをそこにまたはそこから転送すべきＲＡＩＤボリュームを含む。コントローラコマンド５２０は、領域５０６内のボリュームポインタレジスタと、コントローラコマンドで指定されたボリュームに対応するボリュームテーブル５１２の両方で索引が付けられ、ボリュームデータ構造５１４に書き込まれる。図示したように、このボリュームに対する後続のコントローラコマンド５２２および５２４を、ボリュームデータ構造５１４に付加することができる。ボリュームデータ構造５１４は、制御およびステータス情報５１５、ならびにディスクボリューム内のディスクパーティション５１６、５１８に関連する情報も含む。こうした情報は、コントローラコマンド５２０で指定されたボリュームに関連する正確なディスクおよびパーティションを判定するために使用される。
【００３１】
[0037]ユニバーサルストレージアダプタ２０８は、複数のディスクストレージドライブを制御する。ディスクストレージドライブは、複数の物理リンク上に分散している。各物理リンクは、複数のディスクストレージドライブをサポートすることができる。コントローラ４３０内には、物理リンク毎に、特定の物理リンクに関連するリンクデータ構造５３０を指すリンクポインタ５０４がある。リンクデータ構造５３０は、リンクに関連するディスクにアクセスするための制御信号を提供する、一連のリンクを含む。リンクデータ構造５３０とボリュームデータ構造５１４とを組み合わせると、一連のディスクデータ構造５３５、５４０が提供される。
【００３２】
[0038]ボリュームデータ構造５１４内のディスクパーティション５１６、５１８はそれぞれ、ディスクデータ構造５３５、５４０を指す。図７のステップ６０２と共に以下でさらに詳細に説明するように、コントローラコマンド５２０は、一以上のディスクコマンドに変換され、当該ディスクコマンドを使用してデータを特定の記憶装置５１０にまたはそこから転送する。このディスクコマンドは、適切なディスクデータ構造において順序付けされる。すなわち、データを所与の記憶装置にまたはそこから転送するためのディスクコマンドは、その記憶装置に対応するディスクデータ構造において順序付けされる。例えば、ディスクコマンド５３６は、データをディスク０にまたはそこから転送し、したがって、ディスクデータ構造５３５内に所在しており、ディスクコマンド５４１、５４２は、データをディスク１にまたはそこから転送し、したがって、ディスクデータ構造５４０内に所在している。ディスクコマンドは、ボリュームデータ構造５１４およびリンクデータ構造５３０からもたらされるものである。さらに、個々のディスクコマンドは、一以上のＰＲＤを含み、当該ＰＲＤは、ディスクコマンドを使用してデータがそこにまたはそこから転送されるメモリ空間５６０内の領域を記述する。異なるディスクコマンドを対象とするＰＲＤは、コントローラコマンド５２０のメモリ位置情報に含まれるＰＲＤに対応している。
【００３３】
[0039]この例示的な説明では、ディスクコマンド５５０の詳細図において、ディスクコマンド５３６のコンポーネントを、三つのＰＲＤとして示してある。同様に、ディスクコマンド５５１の詳細図では、ディスクコマンド５４１が、二つのＰＲＤを含んでおり、ディスクコマンド５５２の詳細図では、ディスクコマンド５４２が、一つのＰＲＤを含んでいる。ディスクコマンド５５０、５５１、５５２は、一連の一以上のＰＲＤであり、ディスク記憶装置５１０からのデータが格納され又は検索されるメモリ空間５６０内の情報にアクセスする。リンクデータ構造５３０は、ハードウェアとのインターフェイスを提供し、ボリュームデータ構造５１４は、ボリューム全体を含むデータが格納されているディスク記憶装置５１０上のパーティションを特定する。このようにして、実行する必要のあるどのコマンドも、ソフトウェアによって定義することができ、次いで、それをユニバーサルストレージバスアダプタ２０８に関連するハードウェアコンポーネント内で実行することができる。
【００３４】
[0040]上記に加えて、ボリュームデータ構造５１４は、対応するコントローラコマンドに関連するディスクコマンドの数をカウントし、その数に等しいディスクコマンドカウントを作成することによって、特定のコントローラコマンドの実行の追跡も行う。各ディスクコマンド５３６、５４１、５４２が実行されると、ディスクデータ構造５３５、５４０は、制御／ステータス情報領域５１５を介して折り返しボリュームデータ構造５１４に、通信し、各ディスクコマンドの完了を通知する。ボリュームデータ構造５１４は、あるディスクコマンドが完了するとその都度ディスクカウントを減少させる。ディスクコマンドのカウントがゼロに達したときは、ボリュームデータ構造５１４は、割込みを、制御／ステータス情報領域５１５を介してファイルシステム３０１へと供給し、コントローラコマンドが完全に実行されたことを知らせる。
【００３５】
[0041]図７は、ファイルシステム３０１から送出された読取り／書込みオペレーションに応答する、本発明のオペレーションにおける一連のステップを示す流れ図である。典型的なコマンドは、（ボリュームＸ、転送すべきバイト数、メモリ位置）を含む。ただし、Ｘは、アクセスすべきボリュームであり、メモリ位置は、アクセス対象のデータが読み取られまたは書き込まれるメインメモリ空間内の位置である。
【００３６】
[0042]ステップ６００で、コントローラコマンド５２０が、ボリュームデータ構造５１４に書き込まれる。ボリュームデータ構造５１４は、ボリュームポインタ５０６がコントローラコマンド５２０を使用して、ボリュームテーブル５１２の索引を指し、該当するボリュームデータ構造５１４を指すことによって、決定される。コントローラコマンド５２０を、読取りコマンドとすることも、書込みコマンドとすることもできる。ステップ６０２で、ユニバーサルストレージバスコントローラが、ボリュームデータ構造５１４内のコントローラコマンド５２０を解析する。ボリュームデータ構造５１４およびリンクデータ構造５３０は共同して、ディスク／パーティションの関係情報、ディスクの先頭に対するパーティションのオフセット情報、パーティションのサイズ情報、その他のボリューム情報など、コントローラコマンド５２０をサポートするのに必要とされる、個々のディスクコマンド５３６、５４１、および５４２を作成するのに必要とされる必要情報を含む。ステップ６０４で、ディスクコマンド５３６、５４１、および５４２が、ディスクデータ構造５３５、および５４０に書き込まれる。各ディスクコマンドは、データが書き込まれまたは読み取られるメインメモリの領域を記述する、一以上のＰＲＤを含む。ディスクデータ構造５３５、および５４０は、複数のディスクコマンドから成る。ステップ６０６で、ディスクデータ構造からの各ディスクコマンド５３６、５４１、および５４２が、実行されて、データが、メモリ空間からディスクドライブ記憶装置に／ディスクドライブ記憶装置からメモリ空間に転送される。ディスクデータ構造５３５、および５４０は、ボリュームデータ構造５１４に、各ディスクコマンドが完了した旨を指示する。ボリュームデータ構造内の、コントローラコマンド５２０についてのディスクコマンドがすべて完了したときは、ステップ６０８で、オペレーティングシステムへの割込みが、生成される。
【００３７】
[0043]以上、本発明を特定の諸実施形態に関して説明してきたが、添付の特許請求の範囲に詳細に記載された本発明のより広い趣旨および範囲を逸脱することなく、本発明に様々な修正および変更を加えることができることが、当業者には理解されるであろう。したがって、上記の説明および添付の図面は、限定的な意味にではなく、例示的なものと見なされるべきである。
【図面の簡単な説明】
【００３８】
【図１】複数のディスクドライブをコンピュータシステムと統合するのに有用な、従来技術におけるストレージバスアダプタの図である。
【図２】本発明を実装するように構成されたコンピュータシステムの図である。
【図３】本発明の一実施形態による、読取り／書込みチムニを含むストレージスタックの概念図である。
【図４】本発明の一実施形態による、図３におけるユニバーサルストレージバスアダプタの機能を示すブロック図である。
【図５】図３におけるストレージスタックおよびチムニを初期化して、記憶装置内のデータにアクセスするのに必要となるイベントシーケンスの概念図である。
【図６】図３におけるストレージスタックおよびチムニを初期化して、記憶装置内のデータにアクセスするのに必要となるイベントシーケンスの概念図である。
【図７】図５および６に示したようにデータを転送するのに使用されるイベントシーケンスの流れ図である。
【符号の説明】
【００３９】
２００…コンピュータシステム、２０２…メインメモリ／ＯＳ／アプリケーション、２０４…プロセッサ、２０６…チップセット、２０８…ユニバーサル記憶装置アダプタ、２１１，２１３，２１５、２１７…ディスクドライブ、２１２，２１４，２１６，２１８…ドライブエレクトロニクス、２１９…双方向ストレージバス、３００…ファイル管理システム、３０９…読取り／書込みチムニ、３１４…ハードウェア層、４０１…モジュール、４０３…モジュール、４０２…インターフェイス層、４３０…コントローラ、５０６…ボリュームポインタ、５１０…記憶装置、５１２…ボリュームテーブル、５１４…ボリュームデータ構造、５３０…リンクデータ構造、５３５…ディスクデータ構造、５６０…メモリ空間。
【図１】
2006294022.tif 000003
【図２】
2006294022.tif 000004
【図３】
2006294022.tif 000005
【図４】
2006294022.tif 000006
【図５】
2006294022.tif 000007
【図６】
2006294022.tif 000008
【図７】
2006294022.tif 000009
【外国語明細書】
2006294022000001.pdf