(57)【要約】      （修正有）【課題】ネットワークと記憶部との間でデータを通信するためのネットワークストレージ装置を提供する。【解決手段】ネットワークストレージ装置２は、記憶部６の記憶空間を管理する組み込みシステムプロセッサ８、ネットワークインタフェース部１２、及び、記憶データ通信を構成して記憶データを通信する記憶部管理プロセッサ１０を有する。データを処理するための専用のハードウェアに実装されたハードウェアプロセッサ２０をネットワークインタフェース部１２が含むことをネットワークストレージ装置２は特徴とする。ネットワークインタフェース部１２はその他に、制御データインタフェース２４と記憶データインタフェース２８とを含む。記憶データインタフェース２８と制御データインタフェース２４とは完全に分離されている。【選択図】図２
2007317181.tif 000002
【特許請求の範囲】
【請求項１】
制御データ又は記憶データを含むデータペイロードと、ネットワーク（４）を通してデータを移動させるための少なくとも一つのナビゲーション部分と、を含むデータを前記ネットワーク（４）と記憶部（６）との間で通信するネットワークストレージ装置（２）であって、
前記記憶部（６）の記憶空間を管理し、制御データを通信および処理する組み込みシステムプロセッサ（８）と、
前記組み込みシステムプロセッサ（８）と制御データを交換するためのローカル組み込みプロセッサ（２２）を含むネットワークインタフェース部（１２）であって、前記ネットワーク（４）を前記ネットワークストレージ装置（２）に接続するネットワークインタフェース部（１２）と、
記憶データの通信をオーガナイズし、前記ネットワークインタフェース部（１２）と前記記憶部（６）との間で記憶データを通信する記憶部管理プロセッサ（１０）と、を備え、
前記ネットワークインタフェース部（１２）は、
データペイロードと少なくとも一つのナビゲーション部分とを含むデータであり、前記ネットワーク（４）と前記記憶部（６）との間で通信されるデータ、を処理するための専用のハードウェアに実装されたハードウェアプロセッサ（２０）を含み、
前記ネットワークインタフェース部（１２）は、
制御データインタフェース（２４）と、記憶データインタフェース（２８）と、をさらに含み、前記組み込みシステムプロセッサ（８）とは前記制御データインタフェース（２４）を通して、制御データのみを含むデータペイロードを通信し、前記記憶部管理プロセッサ（１０）とは前記記憶データインタフェース（２８）を通して、記憶データのみを含むデータペイロードを通信し、前記記憶データインタフェース（２８）と前記制御データインタフェース（２４）とが完全に分離されていることを特徴とする前記ネットワークストレージ装置（２）。
【請求項２】
前記ハードウェアプロセッサ（２０）は、前記ネットワークストレージ装置（２）と交換するデータのナビゲーション部分を処理し、前記ナビゲーション部分の内容に従い、前記制御データインタフェース（２４）へは、制御データを含む関連のデータペイロードを転送し、前記記憶データインタフェース（２８）へは、記憶データを含む関連のデータペイロードを転送することを特徴とする請求項１に記載のネットワークストレージ装置（２）。
【請求項３】
前記ハードウェアプロセッサ（２０）は、前記記憶データインタフェース（２８）に複数の仮想記憶データ通信チャネルを確立し、
前記仮想記憶データ通信チャネルの各々は、前記記憶部（６）に対して入出力される記憶データの個々のデータ転送に対応し、かつ、記憶データ通信用に決定されて保証されたバンド幅を有することを特徴とする請求項１または２に記載のネットワークストレージ装置（２）。
【請求項４】
前記ハードウェアプロセッサ（２０）が、前記ネットワークストレージ装置（２）へ送信されるデータのナビゲーション部分を処理し、前記ナビゲーション部分の内容に従って対応する仮想記憶データチャネルへ記憶データを含む関連のデータペイロードを転送することを特徴とする請求項３に記載のネットワークストレージ装置（２）。
【請求項５】
前記記憶データインタフェース（２８）は関連づけられた専用のメモリバッファ（３２）を含み、
前記ハードウェアプロセッサ（２０）は、仮想記憶データ通信チャネルを確立するために通信データの少なくとも一つのナビゲーション部分に含まれるデータに前記専用のメモリバッファ（３２）のセグメントを関連づけるようにプログラムされていることを特徴とする請求項３または４に記載のネットワークストレージ装置（２）。
【請求項６】
前記ハードウェアプロセッサ（２０）は、仮想記憶データ通信チャネルの持続時間に相当する時間に、前記ローカル組み込みプロセッサ（２２）と共同して仮想記憶データ通信チャネルを確立し、
前記ハードウェアプロセッサ（２０）が、前記仮想記憶データ通信チャネルの持続時間中、当該ネットワークストレージ装置（２）への割込要求の全てを拒絶することを特徴とする請求項３〜５のいずれか一項に記載のネットワークストレージ装置（２）。
【請求項７】
前記ローカル組み込みプロセッサ（２２）は、前記ハードウェアプロセッサ（２０）と共同して、既存の仮想記憶データ通信チャネル全体でのバンド幅の和と、確立された場合にその仮想記憶データ通信チャネルに割り当てられるようになるバンド幅と、を含むバンド幅の累積値を計算し、前記バンド幅の累積値が前記ネットワークストレージ装置（２）に割り当てられるバンド幅の上限値よりも小さい場合にのみ前記ローカル組み込みプロセッサ（２２）が仮想記憶データ通信チャネルを確立することを特徴とする請求項３〜６のいずれか一項に記載のネットワークストレージ装置（２）。
【請求項８】
当該ネットワークストレージ装置（２）は、専用のハードウェアに実装されて前記記憶部（６）と前記記憶部管理プロセッサ（１０）との間で記憶データを通信するシリアルアタッチドＳＣＳＩインタフェース（４８）を備え、
前記記憶部管理プロセッサ（１０）は、いずれも専用のハードウェアに実装された、ストリームプロセッサ（４２）、分離プロセッサ（４４）、及びＳＣＳＩコントローラ（４６）を含み、
前記ストリームプロセッサ（４２）が前記ハードウェアプロセッサ（２０）と前記分離プロセッサ（４４）との間で記憶データを通信し、
前記分離プロセッサ（４４）が、その記憶データをデータ記憶ブロックに分割し、前記ＳＣＳＩコントローラ（４６）を通して前記記憶部（６）と前記データ記憶ブロックを通信し、
前記ＳＣＳＩコントローラ（４６）が、前記シリアルアタッチドＳＣＳＩインタフェース（４８）を通して前記記憶部（６）と直接、データ記憶ブロックを交換することを特徴とする請求項１〜７のいずれか一項に記載のネットワークストレージ装置（２）。
【請求項９】
前記記憶部（６）は複数のハードディスクドライブを含み、
前記ＳＣＳＩコントローラ（４６）は複数のＳＣＳＩコントローラチャネルをパラレルに含み、
前記シリアルアタッチドＳＣＳＩインタフェース（４８）は複数のシリアルアタッチドＳＣＳＩインタフェースチャネルをパラレルに含み、
前記記憶部（６）の複数のハードディスクドライブの各々が、前記ＳＣＳＩコントローラ（４６）ではＳＣＳＩコントローラチャネルに個別に関連づけられ、前記シリアルアタッチドＳＣＳＩインタフェース（４８）ではシリアルアタッチドＳＣＳＩインタフェースチャネルに個別に関連づけられ、
ＳＣＳＩコントローラチャネルの各々が、関連づけられたシリアルアタッチドＳＣＳＩインタフェースチャネルを介して、関連づけられたハードディスクドライブと直接、記憶データを交換することにより、ハードディスクドライブへのアクセスがパラレルに、かつ同時に行われること、を特徴とする請求項８に記載のネットワークストレージ装置（２）。
【請求項１０】
前記ハードウェアプロセッサ（２０）が、前記ネットワーク（４）から入力されるデータを処理して転送し、
そのデータが、イーサネット（登録商標）プロトコルのナビゲーション部分に含まれるＭＡＣアドレスの検出、インターネットプロトコルのナビゲーション部分に含まれるＩＰアドレスの検出、及び、ＴＣＰのナビゲーション部分に含まれるデータペイロード用の宛先ポート番号の検出によって処理されて転送され、
前記宛先ポート番号が前記制御データインタフェース（２４）と前記記憶データインタフェース（２８）とに対応すること、を特徴とする請求項１〜９のいずれか一項に記載のネットワークストレージ装置（２）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークと記憶部との間でデータ通信を行うためのネットワークストレージ装置に関する。
【背景技術】
【０００２】
ネットワーク接続ストレージ（ＮＡＳ：Network Attached Storage）は、記憶部に記憶されたデータを、ネットワークに接続された複数のクライアント、すなわちアプリケーションによってアクセス可能にしている。ＮＡＳは一般に、そのデバイスをネットワークスイッチに接続することによって構築される。そのネットワークスイッチには、他のデバイス又はサーバで実行されている多くのアプリケーションが接続される。
【０００３】
ＮＡＳは、ネットワークインタフェースカード、中央処理部、ハードディスクドライブを含む記憶部、及び、ＲＡＩＤ（Redundant Array of Independent Disks）コントローラを有する。全ての構成要素が単一のボードに実装されていても良く、記憶部が他の構成要素から独立していても良い。ＮＡＳを単一のボードに実装することは、コンパクトである点、及び、必要に応じてボードを追加することによって記憶容量を容易に増大できる点で有利である。中央処理部は高速のＳＣＳＩ（Small Computer System Interface）又はＡＴＡ（Advanced Technology Attachment）を通して記憶部にリンクされる。ＮＡＳは一般にネットワーク接続を通してアクセスされる。そのネットワーク接続ではＮＡＳがネットワークに、ＩＰ（Internet Protocol）アドレスを持つ単一のノードとして現れる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
記憶容量の増大に対する要求に伴い、１万回転／分の速度で機能し、かつ１テラバイトに近い記憶容量を持つ高性能のハードディスクドライブアレイが必要とされている。
【０００５】
そのようなスループットには、ＮＡＳの内部でネットワークと記憶部との間に効率的なデータ通信が必要である。内部通信バスの容量を最大限に利用するには、ネットワークへのデータの流れとネットワークからのデータの流れとは、高速のＳＣＳＩ内部バスと同程度以上の速さであるべきである。
【０００６】
しかし、ネットワークに接続されたデバイスで実行されているアプリケーションとＮＡＳの記憶部との間で大量のデータが転送されるとき、又は、ネットワークデバイスへのデータ通信が同時に多数存在するとき、ＮＡＳは通信のネックとなる。その結果、受信側ではデータの到着が遅れ、バンド幅がランダムに変動する。
【０００７】
複数のネットワークデバイスのアプリケーションによってアクセス可能なデータ記憶空間をＮＡＳに追加するというように、大きな記憶容量をＮＡＳに実装することは、ＮＡＳが通信のネックとなる危険性を更に増大させる。
【０００８】
本発明の目的は、記憶部とネットワークとの間で効率的なデータ処理と保証されたデータ通信とを行うネットワークストレージ装置を提供することにある。
【課題を解決するための手段】
【０００９】
本発明は、上記の目的を達成するために、請求項１に記載の、ネットワークと記憶部との間でデータ通信を行うためのネットワークストレージ装置を提供する。
【００１０】
このネットワークストレージ装置の他の特徴は従属請求項に記載されている。
【００１１】
本発明の上記の目的、特徴、及び他の利点は、添付の図面と共に、以下の詳細な説明から最も良く理解されるであろう。
【００１２】
図面では同じ符号は同じ構成要素を示す。
【発明を実施するための最良の形態】
【００１３】
図１には、ネットワーク４と記憶部６との間でデータ通信を行うためのネットワークストレージ装置２が示されている。ネットワーク４で通信されるデータは、少なくとも一つのナビゲーション部分（navigational portion）とデータペイロードとを含む。
【００１４】
データペイロードはネットワーク４を通し、ネットワークストレージ装置２と、例えばサーバ等、ネットワーク４に接続されたデバイスで実行されているアプリケーションとの間で通信される。
【００１５】
データペイロードは制御データ又は記憶データを有する。制御データは、ネットワークストレージ装置２とネットワーク４との間で記憶データの通信をオーガナイズ（organise）し、かつ同期させる情報を含む。又は、制御データは、ネットワーク４に接続されたデバイスを制御する情報を含む。
【００１６】
記憶データは例えばカメラから生で通信される映像データである。すなわち、その記憶データはサーバに一時的に記憶され、ネットワークストレージ装置２に転送され、記憶部６に記憶される。記憶データは、記憶部６に記憶された録画映像であっても同様によい。その記憶データは、ネットワーク４に接続されたデバイス上の再生用アプリケーションに転送される。
【００１７】
制御データは記憶データよりデータ量がかなり小さい。しかしそれでも、制御データによる遅延は抑えねばならない。
【００１８】
記憶部６はＲＡＩＤ（Redundant Array of Independent Disks）である。その他の実施形態としては、記憶部６が単一のハードディスクドライブであってもよい。
【００１９】
本発明のこの実施形態では、ネットワーク４がイーサネット（登録商標）のネットワーク基盤を利用して構成され、ネットワーク４でのデータのナビゲーションにイーサネット（登録商標）とインターネットとのプロトコルを利用する。
【００２０】
記憶データと制御データとのペイロードを含むデータの通信は、イーサネット（登録商標）プロトコルのナビゲーション部分（すなわち、イーサネット（登録商標）フレーム）、又は、ＴＣＰ（Tranport Control Protocol）、ＩＰ（Internet Protocol）、ＵＤＰ（User Datagram Protocol）、若しくはＲＴＰ（Realtime Transport Protocol）のナビゲーション部分を使う。
【００２１】
制御データを含むデータペイロードの通信はその他に、ＲＴＣＰ（Realtime Control Protocol）、ＡＲＰ（Address Resolution Protocol）、ＩＣＭＰ（Internet Control Message Protocol）、又はＩＧＭＰ（Internet Group Management Protocol）のナビゲーション部分を使ってもよい。
【００２２】
ネットワークストレージ装置２は、制御データの通信及び処理、並びに記憶部６の記憶空間の管理を行う組み込みシステムプロセッサ８と、記憶データの通信のオーガナイズ及び記憶部６との記憶データの通信を行う記憶部管理プロセッサ１０と、ネットワークインタフェース部１２とを有する。ネットワークインタフェース部１２はネットワーク４をネットワークストレージ装置２に接続し、制御データを組み込みシステムプロセッサ８と交換し、記憶データを記憶部管理プロセッサ１０と交換する。
【００２３】
組み込みシステムプロセッサ８は、特定のソフトウェアを実行する標準的なハードウェアプロセッサであり、ＤＤＲ−ＳＤＲＡＭ（Double Data Rate Synchronous Dynamic Random Access Memory）１４と共同して動作する。組み込みシステムプロセッサ８は、ソフトウェアプロセッサとして機能することで、制御データのみを処理し、制御データのみを送受信する。その制御データは、記憶部６とネットワーク４との間での記憶データの通信の管理、又はネットワーク４に接続されたデバイスの制御に利用される。
【００２４】
制御命令を有する制御データは、ネットワークインタフェース部１２から直接、又は、ネットワークインタフェース部１２を通してネットワーク４から直接受信される。制御命令は組み込みシステムプロセッサ８によって解読され、実行される。組み込みシステムプロセッサ８は制御データを、ネットワークインタフェース部１２を通してネットワーク４上のデバイスに送り、又は記憶部管理プロセッサ１０に直接送るようになっている。組み込みシステムプロセッサ８はまた、記憶部管理プロセッサ１０と共同で、記憶部６からネットワークインタフェース部１２への記憶データの転送をオーガナイズするようになっている。
【００２５】
組み込みシステムプロセッサ８は、ローカルなデジタルファイル管理方法を実行するソフトウェアを含む。その管理方法は、記憶部６での記憶データの物理的な配置及び構成を管理する。
【００２６】
記憶部管理プロセッサ１０は、組み込みシステムプロセッサ８の制御に従い、記憶部６への記憶データの転送を準備する。ローカルなデジタルファイル管理方法は、ディスク上での記憶データの物理的なオーガニゼーション（organisation）を管理する。ローカルなデジタルファイル管理方法は、記憶部管理プロセッサ１０によって受信された記憶データをディスクアクセスブロックに分割した後、５１２バイトのＲＡＩＤディスクのディスクセクタにそれらのディスクアクセスブロックの物理的な配置をオーガナイズし、かつそれらを実際に配置する。
【００２７】
ローカルなデジタルファイル管理方法は、組み込みシステムプロセッサ８に含まれる記憶データの割り当てテーブルを更新することにより、ディスクセクタの中での記憶データの物理的な位置を記録し続ける。記憶データの割り当てテーブルには、どのセクタがどの記憶データに属し、かつどのセクタが未使用のままであるかが記録されている。
【００２８】
組み込みシステムプロセッサ８は、少なくとも一つの他のネットワークストレージ装置２の組み込みシステムプロセッサ８と通信するためのストレージクラスタインタフェース１６を含む。組み込みシステムプロセッサ８は、分散型デジタルファイル管理方法を実行するソフトウェアを含む。その管理方法は、他のネットワークストレージ装置２に記憶された記憶データに関する情報だけでなく、制御データを他のネットワークストレージ装置２と通信する。こうして、記憶部のクラスタが形成可能である。
【００２９】
図２に、ネットワークインタフェース部１２の詳細を示す。ネットワークインタフェース部１２は、ネットワーク４との接続を確立するネットワークインタフェース１８と、ネットワーク４とのデータ通信及びそのデータ処理に専用のハードウェアを構築するためのハードウェアプロセッサ２０と、ナビゲーション部分及び制御データのソフトウェアによる処理のためのローカル組み込みプロセッサ２２と、制御データを含むデータペイロードの通信を組み込みシステムプロセッサ８と制御データチャネル２６を通して行うための制御データインタフェース２４と、記憶データを含むデータペイロードの通信をハードウェアプロセッサ２０と記憶部管理プロセッサ１０との間で記憶データチャネル３０を通して行うための記憶データインタフェース２８とを有する。
【００３０】
制御データは、そのナビゲーション部分に含まれる宛先に応じ、ローカル組み込みプロセッサ２２又は組み込みシステムプロセッサ８のいずれかによって利用される。制御データは、ローカルにはローカル組み込みプロセッサ２２によってネットワークインタフェース部１２の設定制御に利用され、組み込みシステムプロセッサ８によって記憶部管理プロセッサ１０の制御に利用される。
【００３１】
ネットワークインタフェース１８は、ネットワークインタフェース部１２をネットワーク４に接続するＲＪ４５コネクタを少なくとも一つ有する。その他の実施形態では、光リンクが、ネットワークストレージ装置２とネットワーク４との間の更に高い帯域でのデータ通信に利用される。ネットワークインタフェース１８はまた、ネットワーク４の物理的な通信媒体に沿ったデータビットの送信、及び、ネットワーク４の物理的な通信媒体からのデータバイトの受信に対応するハードウェア回路を含む。
【００３２】
ハードウェアプロセッサ２０は、ナビゲーション部分とデータペイロードとを含む受信データを、ネットワーク４からネットワークインタフェース１８を通して受信する。ハードウェアプロセッサ２０はまた、ナビゲーション部分とデータペイロードとを含む送信データを、ネットワークインタフェース１８を通してネットワーク４に送信する。
【００３３】
ハードウェアプロセッサ２０は、ＡＳＩＣ（Application Specific Integrated Circuit）又はＦＰＧＡ（Field-Programmable Gate Array）の中に集積度の高いロジック部を含む専用のハードウェアプロセッサである。
【００３４】
ハードウェアプロセッサ２０はハードウェア的にプログラムされることにより、ネットワーク４からの受信データのデータリンク層、ネットワーク層、及びトランスポート層に対応するナビゲーション部分を受信して処理し、かつ、ネットワーク４への送信のために、記憶部管理プロセッサ１０からハードウェアプロセッサ２０へ転送されるデータペイロードに、データリンク層、ネットワーク層、及びトランスポート層に対応するナビゲーション部分を付加する。
【００３５】
ハードウェアプロセッサ２０は、イーサネット（登録商標）プロトコル、ＩＰ、ＴＣＰ、及びＵＤＰのナビゲーション部分を処理するようにプログラムされている。ハードウェアプロセッサ２０は、ネットワークインタフェース１８からデータを受信すると、イーサネット（登録商標）プロトコルのナビゲーション部分の中にあるＭＡＣ（Medium Access Controller）アドレスを検出するようにプログラムされている。更に、ナビゲーション部分の中のＭＡＣアドレスがネットワークインタフェース部１２のＭＡＣアドレスに一致したときのみ、受信データは処理される。
【００３６】
処理は更に続き、ＩＰのナビゲーション部分を調べてＩＰアドレスの検出と確認とを行う。受信データがユニキャストでネットワークインタフェース部１２に送られていれば、ハードウェアプロセッサ２０は、ＴＣＰ又はＵＤＰのナビゲーション部分を調べ、データペイロードの宛先が制御データインタフェース２４又は記憶データインタフェース２８のいずれであるのかを検出し、その後、そのデータペイロードを対応するインタフェースに転送する。制御データを含むデータペイロードは制御データインタフェース２４に転送され、記憶データを含むデータペイロードは記憶データインタフェース２８に転送される。
【００３７】
受信データがマルチキャストやブロードキャストによって送られている場合、ハードウェアプロセッサ２０は、上記のようなＴＣＰ又はＵＤＰのナビゲーション部分の処理を行う前にＩＰのナビゲーション部分を調べ、そのＩＰアドレスがネットワークストレージ装置２のＩＰアドレスに一致するか、又は、ネットワークストレージ装置２に関連づけられているかを確認する。更に、受信データがユニキャストで送られている場合、ハードウェアプロセッサ２０はまた、その受信データに対するフィルタの必要性についてＩＰのナビゲーション部分を調べるようにもなっている。
【００３８】
その他に、もし受信データがＩＰアドレスを含まなければ、又は、ＴＣＰ又はＵＤＰのナビゲーション部分に含まれるそのデータの宛先がローカル組み込みプロセッサ２２であれば、ハードウェアプロセッサ２０はローカル組み込みプロセッサ２２にデータを転送するようにプログラムされている。
【００３９】
ローカル組み込みプロセッサ２２は標準的なハードウェアプロセッサであり、特定のソフトウェアを実行し、付属のＤＤＲ−ＳＤＲＡＭ３１を持つ。ローカル組み込みプロセッサ２２は、制御データしか含まないデータペイロードを含むデータを受信する。その制御データは、ローカル組み込みプロセッサ２２で実行されるソフトウェアによってローカルに処理される。
【００４０】
ローカル組み込みプロセッサ２２はソフトウェアによる処理を利用し、データリンク層からアプリケーション層までのプロトコル層を含むプロトコルスタック全体を処理する。ローカル組み込みプロセッサ２２は、ｉＳＣＳＩ（Internet ＳＣＳＩ）等、アプリケーション層のプロトコルのナビゲーション部分を処理し、ネットワーク４を通して転送されるべき記憶データを記憶部６から検索する準備を行う。
【００４１】
ローカル組み込みプロセッサ２２はまた、ナビゲーション部分を生成してハードウェアプロセッサ２０に渡す。ハードウェアプロセッサ２０はそのナビゲーション部分を、ネットワーク４に通信されるべきデータペイロードに付加する。
【００４２】
ネットワークインタフェース部１２に通信される、ＲＴＣＰ（Realtime Control Protocol）、ＡＲＰ（Address Resolution Protocol）、ＩＣＭＰ（Internet Control Message Protocol）、又はＩＧＭＰ（Internet Group Management Protocol）のナビゲーション部分を含むデータは全てハードウェアプロセッサ２０によってローカル組み込みプロセッサ２２に送られてローカルに処理される。そのデータはその後、組み込みシステムプロセッサ８に通信される場合もある。
【００４３】
これらのプロトコルは、記憶部６とネットワーク４との間での記憶データの通信のオーガナイズ及び同期に利用される。ローカル組み込みプロセッサ２２は、組み込みシステムプロセッサ８又はローカル組み込みプロセッサ２２からネットワーク４への制御データの通信中、上記のプロトコル用のナビゲーション部分を生成するようになっている。
【００４４】
ローカル組み込みプロセッサ２２はまた、ネットワークインタフェース部１２で受信される如何なる予期されていないデータ通信をも処理する。
【００４５】
受信データの宛先が、ローカル組み込みプロセッサ２２、制御データインタフェース２４、又は記憶データインタフェース２８のいずれであるかは、ＴＣＰ又はＵＤＰ等、トランスポート層のプロトコルのナビゲーション部分、並びに、ローカル組み込みプロセッサ２２、制御データインタフェース２４、及び記憶データインタフェース２８のそれぞれに割り当てられた個別のＩＰアドレスを使って識別される。
【００４６】
ローカル組み込みプロセッサ２２、制御データインタフェース２４、及び記憶データインタフェース２８はそれぞれ、通信接続を開いた後に、個別のポート番号とＩＰアドレスとを割り当てられる。ローカル組み込みプロセッサ２２がＴＣＰを利用してネットワークストレージ装置２とネットワーク４上の別のデバイスとの間にＴＣＰ接続を確立するとき、ＴＣＰポート番号が割り当てられる。
【００４７】
ローカル組み込みプロセッサ２２は組み込みシステムプロセッサ８と共同で、標準的なソケットのシステムコールである、"connect"、"bind"、"listen"、及び"shutdown"の機能を使ってその接続を確立する。ローカル組み込みプロセッサ２２はソケットを開き、ネットワーク４からの接続を受動的にリスン（listen）する。ネットワーク４上のデバイスは、最初のＳＹＮ（synchronisation）のＴＣＰナビゲーション部分をローカル組み込みプロセッサ２２経由で組み込みシステムプロセッサ８に送ることにより、アクティブオープンの要求を開始する。ローカル組み込みプロセッサ２２はその応答としてＳＹＮのＴＣＰナビゲーション部分を返す。ＡＣＫ（acknowledgement）のＴＣＰナビゲーション部分はローカル組み込みプロセッサ２２を経由して組み込みシステムプロセッサ８へ送られる。その結果、データ通信用の接続が創設され、送信元と受信先とのＴＣＰポート番号がその接続用に割り当てられる。ローカル組み込みプロセッサ２２はネットワーク４上のデバイスと共に、ローカル組み込みプロセッサ２２、制御データインタフェース２４、及び記憶データインタフェース２８にポート番号とＩＰアドレスとを設定する。その結果、データがネットワーク４を通し、ローカル組み込みプロセッサ２２、制御データインタフェース２４、及び記憶データインタフェース２８に、それぞれのＴＣＰポート番号とＩＰアドレスとを利用して通信可能になる。
【００４８】
接続の過程では、使用されるべきトランスポートプロトコルに関する情報、すなわち、データ通信のバンド幅に関するパラメータに加えてデバイスのＩＰアドレスとＭＡＣアドレスとが交換される。こうして、ネットワーク４上の一つ又は複数のデバイスに複数の接続を構成することができる。
【００４９】
ポート番号とＩＰアドレスとはＴＣＰ（又は、ＵＤＰを用いた通信の接続が開かれている場合はＵＤＰ）及びＩＰのナビゲーション部分に挿入され、通信対象のデータの宛先を示す。
【００５０】
データ接続は、ローカル組み込みプロセッサ２２がデータ転送の終了を示すＴＣＰナビゲーション部分をネットワーク４上のデバイスに通信することによって閉じられる。その接続は、同様なＴＣＰナビゲーション部分がローカル組み込みプロセッサ２２によってネットワーク４上のデバイスから受信されたときにも閉じられる。
【００５１】
ハードウェアプロセッサ２０は、データペイロードがネットワークストレージ装置２への送信中に失われていないことを確認するようにプログラムされている。ＴＣＰのナビゲーション部分はシーケンス番号を含む。ハードウェアプロセッサ２０はそのシーケンス番号をデータの受信時に確認する。それにより、ハードウェアプロセッサ２０は、そのデータペイロードが正しい順序で到着したことを確認できる。その確認後、ハードウェアプロセッサ２０は、データペイロードの受信確認を含むＴＣＰナビゲーション部分をネットワーク４上の送信元のデバイスに送る。もしその確認応答が所定の時間内にその送信元のデバイスによって受信されなければ、データがネットワークインタフェース部１２に再送される。
【００５２】
ネットワークインタフェース部１２からネットワーク４へデータが送られるとき、所定時間の経過後に確認応答がネットワーク４上の受信先のデバイスから送られなければ、ハードウェアプロセッサ２０はデータを再送するようにプログラムされている。
【００５３】
ハードウェアプロセッサ２０はまた、受信データについてチェックサムを検査し、その結果を受信されたＴＣＰナビゲーション部分のチェックサムと比較することにより、データバイトが損傷を受けていないことを確認するようにプログラムされている。ハードウェアプロセッサ２０は更に、送信対象のＴＣＰナビゲーション部分に挿入されてネットワーク４へ送信されるデータについてチェックサムを生成するようにもプログラムされている。
【００５４】
ハードウェアプロセッサ２０によって制御データインタフェース２４に送信される制御データは、制御データチャネル２６を通して組み込みシステムプロセッサ８に送信される。ハードウェアプロセッサ２０は、ハードウェアプロセッサ２０と制御データインタフェース２４との間で制御データのみを転送するようにプログラムされている。
【００５５】
前にも述べた通り、組み込みシステムプロセッサ８は、特定のソフトウェアを実行する標準的なハードウェアプロセッサである。制御データは、ローカル組み込みプロセッサ２２から直接、又は、ネットワーク４からハードウェアプロセッサ２０を通して受信される。組み込みシステムプロセッサ８は制御データを、ローカル組み込みプロセッサ２２又はハードウェアプロセッサ２０を通してネットワーク４上のデバイスに送るようになっている。組み込みシステムプロセッサ８はまた、記憶部管理プロセッサ１０から記憶データインタフェース２８を通してハードウェアプロセッサ２０への記憶データの転送をオーガナイズするようにもなっている。
【００５６】
ネットワーク４上のデバイスとのデータ通信用の接続の開閉は、上記のように、ローカル組み込みプロセッサ２２とネットワーク４上のデバイスとの間での制御データの交換を通して達成される。更に、その接続が確立された後に、送信元と受信先とのポート番号等の情報が交換される。組み込みシステムプロセッサ８は接続管理テーブルを含み、ネットワーク４上のデバイスとの接続が開閉されるごとにそのテーブルを更新し続ける。
【００５７】
組み込みシステムプロセッサ８は、ＭＡＣアドレス、ＩＰアドレス、及びＴＣＰポート番号等、データ通信に必要な接続の特性をローカル組み込みプロセッサ２２に通信する。ローカル組み込みプロセッサ２２はそのとき、ハードウェアプロセッサ２０の環境を設定し、ネットワーク４上のデバイスからデータを受信したときに接続を同定する。ローカル組み込みプロセッサ２２は更に、関連するＭＡＣアドレス、ＩＰアドレス、及びＴＣＰポート番号をハードウェアプロセッサ２０に渡す。それらはハードウェアプロセッサ２０により、ネットワーク４へのデータの送信時にそのナビゲーション部分に付加される。
【００５８】
ＵＤＰやＲＴＰに使用されるデータ通信の接続の開閉、及び、それに続く接続の特性のローカル組み込みプロセッサ２２への転送は同様に行われる。
【００５９】
ＲＴＰによってマルチメディア通信のサービス品質を管理し、又は、ＴＣＰを利用して到達する記憶データのシーケンスの中断若しくはタイムアウトの発生を記録し続けるといった他の形式による制御データの通信は、組み込みシステムプロセッサ８とネットワーク４上のデバイスとの間でのローカル組み込みプロセッサ２２経由での制御データの通信によって実行される。
【００６０】
ネットワーク４上のデバイスが「ファイルのオープン、ファイルの取得、ファイルのクローズ」という種類の制御データ命令を組み込みシステムプロセッサ８にローカル組み込みプロセッサ２２経由で送って記憶データファイルを要求する場合、組み込みシステムプロセッサ８は制御命令を記憶部管理プロセッサ１０に送ってその記憶データファイルを開き、検索し、閉じ、更にそのファイルに含まれる記憶データを記憶データインタフェース２８に転送する。組み込みシステムプロセッサ８はその後、ローカル組み込みプロセッサ２２にその記憶データファイルの宛先を知らせる。
【００６１】
記憶データはハードウェアプロセッサ２０に転送される。ハードウェアプロセッサ２０はローカル組み込みプロセッサ２２によって接続の詳細を知らされる。ハードウェアプロセッサ２０は関連するナビゲーション部分を記憶データペイロードに付加する。続いて、その記憶データがネットワーク４に送られる。
【００６２】
ネットワークインタフェース部１２に入力された記憶データはハードウェアプロセッサ２０によって記憶データインタフェース２８へのみ転送され、続いて、記憶データチャネル３０を通して記憶部管理プロセッサ１０に転送される。ハードウェアプロセッサ２０は、全てのナビゲーション部分を除去し、記憶データを含むデータペイロードを上記のように正しい順序で組み立て、記憶データインタフェース２８と記憶部管理プロセッサ１０への記憶データチャネル３０上とに記憶データの連続的なデータストリームを形成するようにプログラムされている。
【００６３】
ネットワークストレージ装置２への記憶データの通信要求、又はネットワークストレージ装置２からの記憶データの受信要求は、ネットワーク４上の他のデバイスで実行されている多くのアプリケーションによって発生し得る。また、一つのアプリケーションが記憶データの通信を複数確立しようと要求することもあり得る。
【００６４】
ハードウェアプロセッサ２０は、記憶データインタフェース２８の中に複数の仮想記憶データ通信チャネルを確立するようになっている。各仮想記憶データ通信チャネルは、記憶データインタフェース２８と記憶部管理プロセッサ１０との間で記憶データチャネル３０を通して通信を行う。各仮想記憶データ通信チャネルは記憶データ通信に対応し、記憶データを記憶部管理プロセッサ１０へ、又は記憶部管理プロセッサ１０から転送する。ハードウェアプロセッサ２０はまた、記憶データの転送が完了すれば、仮想記憶データ通信チャネルを終了させるようにもなっている。
【００６５】
上記のように、ネットワークストレージ装置２とネットワーク４上のデバイスとの間でのローカル組み込みプロセッサ２２経由での制御データの交換を通して標準的なソケットコールシステムが利用され、データ通信の接続が開かれる。それにより、一つ又は複数の仮想記憶データ通信チャネルが開かれる。仮想記憶データ通信チャネルが一つ存在することは、一つのデータファイル又は複数のデータファイルが一回アクセスされていることに対応する。
【００６６】
接続が一旦開かれれば、仮想記憶データ通信チャネルにはＴＣＰポート番号が割り当てられる。各仮想記憶データ通信チャネルには個別に異なるＩＰアドレスが割り当てられる。この実施形態では、各仮想記憶データ通信チャネル、すなわち、ネットワークインタフェース部１２への受信データ通信とネットワークインタフェース部１２からの送信データ通信とのそれぞれには個別に宛先ＩＰアドレスが割り当てられる。こうして、この実施形態では、仮想記憶データ通信チャネルが同じポート番号（記憶データインタフェース２８のポート番号）を持つ反面、異なる宛先ＩＰアドレスを持つ。接続が開かれた各仮想記憶データ通信チャネルに対するＩＰアドレスとポート番号との記録は、組み込みシステムプロセッサ８の接続管理テーブルに維持されている。
【００６７】
ハードウェアプロセッサ２０はそのとき、メモリバスを通して記憶データインタフェース２８に接続された専用のメモリバッファセグメントに仮想記憶データ通信チャネルを関連づけることにより、記憶データインタフェース２８に仮想記憶データ通信チャネルを設定する。その専用のメモリバッファセグメントはまた、記憶部管理プロセッサ１０に接続されている。専用のメモリバッファセグメントはそれぞれ、記憶部管理プロセッサ１０に接続されたケーブル等の物理的に分離された通信媒体を持つ。
【００６８】
メモリバッファセグメントは単一のＤＲＡＭ３２のセグメントである。そのセグメントは、ファーストイン・ファーストアウト（ＦＩＦＯ）の原理で管理されたデータフローを使って分割されている。そのメモリセグメントは、記憶部６からネットワーク４へのデータフローについては連続的に満杯状態に維持されている。ネットワーク４から記憶部６へのデータフローについては、そのメモリセグメントは連続的に空き状態に維持されている。
【００６９】
別の実施形態では、ＤＲＡＭ３２と記憶部管理プロセッサ１０との間で単一の接続が利用される。仮想記憶データ通信チャネルの記憶データは、ハードウェアプロセッサ２０によって付加された内的なナビゲーション部分を使ってシリアルに通信される。
【００７０】
図２には、ＤＲＡＭ３２ａ、３２ｂの全部で８つのセグメントが示されている。従って、この実施形態では全部で８つの仮想記憶データ通信チャネルが創設される。図２では説明の都合上、単一のＤＲＡＭ３２が二つの部分３２ａ、３２ｂで描かれている。
【００７１】
メモリバッファは、ネットワークインタフェース部１２のデータスループットを記憶部管理プロセッサ１０のスループット要求に適合するようにオーガナイズされている。メモリバッファセグメント一つ当たりのサイズは、そのメモリバッファセグメントの記憶部管理プロセッサ１０への接続が分離された媒体として構成されるか、単一のシリアル接続として構成されるかに依存する。単一のシリアル接続の利用には、全ての仮想記憶データ通信チャネルのデータを一時的に記憶して多重化することが必要である。
【００７２】
メモリバッファセグメントのサイズはまた、そのメモリセグメントと記憶部管理プロセッサ１０との間の通信に利用される通信インタフェースの性質、すなわち、独自のものであるか、それとも、例えばＰＣＩ  ｅｘｐｒｅｓｓ（Proprietary or Peripheral Component Interconnect express）であるか、にも依存する。使用される通信インタフェースの性質が転送データのサイズを決めるので、メモリバッファセグメントのサイズは、転送データに対するオーバーヘッドのサイズ比を減らすように最適化される。
【００７３】
仮想記憶データ通信チャネルはこうして、記憶データインタフェース２８からメモリバスを通して専用のメモリセグメントへ接続され、更に、個別のセグメント接続を通して記憶部管理プロセッサ１０へと設定される。この実施形態では記憶データチャネル３０が８つの仮想記憶データ通信チャネルを有する。
【００７４】
仮想記憶データ通信チャネルの宛先ＩＰアドレスは、ローカル組み込みプロセッサ２２経由でハードウェアプロセッサ２０に通信される。仮想記憶データ通信チャネルの確立を目的として、ローカル組み込みプロセッサ２２によってセグメント識別番号がメモリバッファセグメント３２ａ、３２ｂに割り当てられ、そのセグメント識別番号が仮想記憶データ通信チャネルの宛先ＩＰアドレスに関連づけられるように、ハードウェアプロセッサ２０はプログラムされている。
【００７５】
ローカル組み込みプロセッサ２２は組み込みシステムプロセッサ８にメモリバッファセグメント３２ｂを通知する。そのメモリバッファセグメント３２ｂを通じ、ある宛先ＩＰアドレス宛てで受信される記憶データが組み込みシステムプロセッサ８に通信される。ローカル組み込みプロセッサ２２はまた、組み込みシステムプロセッサ８にメモリバッファセグメント３２ａも通知する。記憶部管理プロセッサ１０はそのメモリバッファセグメント３２ａへ、ハードウェアプロセッサ２０によってネットワーク４上のある宛先ＩＰアドレスへ送られるべき記憶データを通信する。
【００７６】
分割された単一のＤＲＡＭ３２ａ、３２ｂは複数のメモリバッファセグメントを含むが、それらのセグメントのうち、宛先ＩＰアドレスを割り当てられたものだけがアクティブであり、残りのセグメントは他の仮想記憶データ通信チャネルの確立用に空いたままにされている。
【００７７】
ハードウェアプロセッサ２０は、各仮想記憶データ通信チャネルの宛先ＩＰアドレスを検出することで、異なる仮想記憶データ通信チャネル上の受信データを区別する。ハードウェアプロセッサ２０は更に、その受信記憶データを記憶データインタフェース２８と、その仮想記憶データ通信チャネルの宛先ＩＰアドレスに関連づけられたセグメント識別番号を持つメモリバッファセグメント３２ｂとへ流す。ハードウェアプロセッサ２０は既に述べたように、そのデータから全てのナビゲーション部分を除去し、そのデータについてチェックサムを実行する。
【００７８】
ハードウェアプロセッサ２０は、メモリバッファセグメント３２ａのセグメント識別番号を利用し、記憶部管理プロセッサ１０によってハードウェアプロセッサ２０に送られたデータを区別する。そのメモリバッファセグメント３２ａには、記憶部管理プロセッサ１０によってその記憶データが送られる。ハードウェアプロセッサ２０は、そのデータを記憶データインタフェース２８から転送し、ローカル組み込みプロセッサ２２によって供給された接続特性を、ネットワーク４への通信用のデータペイロードに組み込まれたナビゲーション部分に挿入する。ハードウェアプロセッサ２０はまた、送信データについてチェックサムを実行し、そのデータに挿入する。
【００７９】
ハードウェアプロセッサ２０は、標準的なソケットシステムコールの「送信」機能と「受信」機能とを使い、記憶部管理プロセッサ１０と記憶データを通信するようにプログラムされている。図２に示されている全部で８つの仮想記憶データ通信チャネルのうち、４つはネットワークインタフェース部１２によって受信される記憶データを伝送し、４つはネットワークインタフェース部１２から送られる記憶データを送信する。
【００８０】
ネットワーク４上のデバイスと記憶部管理プロセッサ１０との間での記憶データ通信が完了すれば、ハードウェアプロセッサ２０には組み込みシステムプロセッサ８からローカル組み込みプロセッサ２２経由で接続の閉鎖が通知される。仮想記憶データ通信チャネルを停止する目的で、ローカル組み込みプロセッサ２２は直ちにハードウェアプロセッサ２０をプログラムし、仮想記憶データ通信チャネルのＩＰアドレスとメモリバッファセグメント３２ａ、３２ｂのセグメント識別番号との間の関連づけを外させる。
【００８１】
ネットワークインタフェース部１２は、ネットワークストレージ装置２とネットワーク４との間の通信用に割り当てられたバンド幅の上限値を持つ。このバンド幅の上限値はネットワーク４上のネットワークマネージャによって決定される。ネットワークインタフェース部１２へ向かう記憶データ用の仮想記憶データ通信チャネルと、ネットワークインタフェース部１２から送信される記憶データ用の仮想記憶データ通信チャネルとを含む、記憶データインタフェース２８に確立された仮想記憶データ通信チャネルの全てのバンド幅の累積、及び、制御データ通信に利用されるバンド幅が、常に、バンド幅の上限値より抑えられている。この実施形態では、制御データにはバンド幅の上限値の２０％が割り当てられ、８０％が記憶データ用に残されている。
【００８２】
ある仮想記憶データ通信チャネルが開かれている間、ネットワークストレージ装置２とネットワーク４上のデバイスとはローカル組み込みプロセッサ２２経由で、データ通信用に取り決められたその仮想記憶データ通信チャネルのバンド幅と持続時間とに関して制御データを交換する。そのバンド幅と持続時間とは、ネットワークストレージ装置２又はネットワーク４上のデバイスによって要求されるデータ転送サイズに従って決められる。
【００８３】
そのデータ転送サイズは複数のデータパケットに分割される。データパケット一つ当たりのサイズもまた、調節可能なパラメータである。仮想記憶データ通信チャネルのデータビットレートが小さいほど、記憶データの転送を完結させるのに必要なその仮想記憶データ通信チャネルの持続時間は長い。
【００８４】
ネットワーク４とローカル組み込みプロセッサ２２とはバンド幅と持続時間との各パラメータを一致させる。ハードウェアプロセッサ２０は、ローカル組み込みプロセッサ２２により、仮想記憶データ通信チャネルの持続時間中に受信される如何なる割込要求をも無視するようにプログラムされるようになっている。但し、ハードウェアプロセッサ２０はローカル組み込みプロセッサ２２によって制御されるので、ハードウェアプロセッサ２０はローカル組み込みプロセッサ２２から取消命令を受信可能である。その取消命令はネットワーク４上のデバイス又はユーザから発信される。記憶データインタフェース２８に仮想記憶データ通信チャネルが一旦開かれて確立されれば、記憶データの転送が開始される。その仮想記憶データ通信チャネルとそのバンド幅とはその持続時間中ではローカル組み込みプロセッサ２２の制御を全く受けない。
【００８５】
仮想記憶データ通信チャネルの持続時間の終了時、その仮想記憶データ通信チャネルの接続が閉じられ、ハードウェアプロセッサ２０がローカル組み込みプロセッサ２２により、記憶データインタフェース２８内でのその仮想記憶データ通信チャネルの設定を停止するようにプログラムされる。記憶データインタフェース２８内でその仮想記憶データ通信チャネルが停止したとき、その仮想記憶データ通信チャネルのバンド幅だけが新たな仮想記憶データ通信チャネルによって利用可能になっている。その停止後、組み込みシステムプロセッサ８がローカル組み込みプロセッサ２２によって更新され、その接続の閉鎖について接続管理テーブルを更新する。
【００８６】
仮想記憶データ通信チャネルの持続時間では、ネットワーク４上のデバイス、ネットワークマネージャ、又はネットワークストレージ装置２は、その仮想記憶データ通信チャネルの一致したパラメータを変えることができず、データ転送に干渉できない。
【００８７】
もしバンド幅の累積が、ネットワークインタフェース部１２によって記憶データ通信用に確保されたバンド幅の上限値の８０％より低ければ、その場合でのみ、ローカル組み込みプロセッサ２２はハードウェアプロセッサ２０と共同で仮想記憶データ通信チャネルを開くようにプログラムされている。ここで、そのバンド幅の累積は、既存の仮想記憶データ通信チャネル全体でのバンド幅の和と、仮想記憶データ通信チャネルへの通信に対する現在の接続要求に応えた場合にそれらの仮想記憶データ通信チャネルに割り当てられるようになるバンド幅とを含む。ローカル組み込みプロセッサ２２は任意の時点でそのバンド幅の累積値を計算するようになっている。
【００８８】
ネットワーク４から記憶部管理プロセッサ１０へ記憶データが通信される間、ダイレクトメモリアクセス（ＤＭＡ）が実行され、通信される記憶データがハードウェアプロセッサ２０から、メモリバッファ３２ｂの専用のメモリバッファセグメントに設定されたＤＭＡチャネルに転送される。外部の受信ＤＭＡコントローラ３４は、ローカル組み込みプロセッサ２２と共にプログラム可能なハードウェアに実装され、記憶データチャネル３０の仮想記憶データ通信チャネルに沿った記憶部管理プロセッサ１０への記憶データの転送を制御する。
【００８９】
ネットワークインタフェース部１２は、ネットワーク４からの記憶データの受信器として機能するとき、記憶データのストリームを生成して仮想記憶データ通信チャネルを通して記憶部管理プロセッサ１０へ流すインタフェースとして機能する。
【００９０】
記憶部管理プロセッサ１０からネットワーク４へ記憶データが通信される間もまた、ダイレクトメモリアクセス（ＤＭＡ）が実行され、通信される記憶データが記憶部管理プロセッサ１０から、メモリバッファ３２ｂの専用のメモリバッファセグメントに設定されたＤＭＡチャネルに転送される。外部の送信ＤＭＡコントローラ３６は、ローカル組み込みプロセッサ２２と共にプログラム可能なハードウェアに実装され、仮想記憶データ通信チャネルに沿った記憶データインタフェース２８とハードウェアプロセッサ２０とへの記憶データの転送を制御する。
【００９１】
ハードウェアプロセッサ２０は、記憶データインタフェース２８からの記憶データを処理してネットワーク４へ転送し、制御データインタフェース２４からの制御データを処理してネットワーク４へ転送するようにプログラムされている。ローカル組み込みプロセッサ２２は、組み込みシステムプロセッサ８との制御データの交換を通じて、かつ、メモリバッファセグメントのセグメント識別番号を利用して、各仮想記憶データ通信チャネルを識別し、各仮想記憶データ通信チャネルについてデータの宛先を認識するようになっている。ローカル組み込みプロセッサ２２はハードウェアプロセッサ２０による、トランスポート層、ネットワーク層、及びデータリンク層でのナビゲーション部分へのデータの挿入を準備してプログラムする。アプリケーション層に対するナビゲーション部分のデータはローカル組み込みプロセッサ２２によって生成され、挿入される。
【００９２】
記憶データインタフェース２８から入力される記憶データ、又は制御データインタフェース２４から入力される制御データを含むデータペイロードに、ＵＤＰ又はＴＣＰのナビゲーション部分が付加される。ナビゲーション部分はＩＰ及びイーサネット（登録商標）プロトコルについても付加される。その結果得られるデータの集合がハードウェアプロセッサ２０によってネットワークインタフェース１８に転送され、ネットワーク４へ送信される。
【００９３】
図２に示されているように、ネットワーク４への送信用の制御データと記憶データとは制御データチャネル２６と記憶データチャネル３０とを通じてネットワークインタフェース部１２に到達する。ネットワークマネージャによって決められた、インタフェース装置３とネットワーク４との間の通信に対して割り当てられるバンド幅の上限値が、制御データの送受信と仮想記憶データ通信チャネルでの記憶データの送受信とで共用される。
【００９４】
上記のとおり、この実施形態では、制御データにはバンド幅の上限値の２０％が割り当てられ、８０％が記憶データ用に残されている。仮想記憶データ通信チャネルの許容バンド幅が守られること、及び、確立された仮想記憶データ通信チャネルがバンド幅の上限値の８０％を越えないことが保証されるように、図３に示されている記憶データビットレート調整機構がネットワークへの記憶データの送信の制御に利用される。記憶データビットレート調整機構は外部の送信ＤＭＡコントローラ３６と共に、ローカル組み込みプロセッサ２２によって管理される。
【００９５】
記憶データビットレート調整機構（図３）の本質は、規則的なチックの送出によって外部の送信ＤＭＡコントローラ３６を作動させ、データを記憶データインタフェース２８とハードウェアプロセッサ２０とに転送することにある。各仮想記憶データ通信チャネルからのデータパケットはＦＩＦＯ型のメモリバッファ３２ａに一時的に記憶され、メモリバッファ３２ａからハードウェアプロセッサ２０への転送が記憶データビットレート調整機構によって制御される。各仮想記憶データ通信チャネルに対するチックが一つ生じるごとに、ハードウェアプロセッサ２０への転送が行われる。
【００９６】
チック周期Pは、図３に示されている４つの送信用の仮想記憶データ通信チャネル（ＶＳＣＣ）のそれぞれについて設定される。仮想記憶データ通信チャネルに対して認められたデータパケットのサイズを仮想記憶データ通信チャネルのビットレートで割った値によってチック周期Pが決まる。チック周期Pごとにデータパケットが一つ送られる。
【００９７】
仮想記憶データ通信チャネルのチックが生じると、前のデータペイロードの送信が終了次第、次のデータペイロードの送信が行われる。図３に示されている送信開始時の場合のように、異なる仮想記憶データ通信チャネルに属する複数のチックが同時に生じれば、送信は順繰りに行われる。
【００９８】
以上の結果として得られる仮想記憶データ通信チャネル（ＶＳＣＣ）の送信シーケンスが図３に示されている。それは多重化されたストリームであり、ビットレートの瞬時値が仮想記憶データ通信チャネルのバンド幅の上限値を決して超えない。
【００９９】
バンド幅の上限値の２０％を越えないことが保証されるように、制御データビットレート調整機構もハードウェアプロセッサ２０への制御データ（その後、ネットワーク４へ送られるもの）の送信の制御に利用される。制御データビットレート調整機構はタイマと共に、組み込みシステムプロセッサ８によって管理される。
【０１００】
制御データビットレート調整機構は、バンド幅全体を飽和させるかも知れないほどビットレートの高さに制限がなく、かつ短時間での望ましくない転送を避ける。ハードウェアプロセッサ２０への制御データの転送ごとにタイマが転送時間を開始させる。その転送時間が終了するまでハードウェアプロセッサ２０への次の転送が生じ得ないので、データ転送レートが制御され得る。転送時間は転送サイズに依存する。転送サイズが大きいほど、転送時間が長い。転送ビットレートは、転送サイズを転送時間で割った値である。タイマは、バンド幅が制御データに割り当てられた値を超えないことを保証する。
【０１０１】
制御データビットレート調整機構と記憶データビットレート調整機構とは、ネットワークインタフェース部１２によって引き続いて行われるデータ送信の期間中、仮想記憶データ通信チャネルのバンド幅が許容値を超えないことを保証する。ネットワーク４上の送信デバイスは同様な機構を使用し、仮想記憶データ通信チャネルに割り当てられたバンド幅を守る。
【０１０２】
記憶部管理プロセッサ１０は、図４に詳細に示されているように、ＤＤＲ−ＳＤＲＡＭ３８と共同で動作する。記憶部管理プロセッサ１０は、制御部４０、ストリームプロセッサ４２、分割プロセッサ４４、及びＳＣＳＩコントローラ４６を有する。制御部４０は組み込みシステムプロセッサ８と制御データを通信するためのものである。ストリームプロセッサ４２は分割プロセッサ４４と記憶データを通信する。分割プロセッサ４４はその記憶データを、ＳＣＳＩコントローラ４６を通して記憶部６へ送られるべきデータ記憶ブロックに分割する。ＳＣＳＩコントローラ４６は記憶部６とシリアルアタッチドＳＣＳＩ（ＳＡＳ）インタフェース４８を通したデータ転送を直接行う。組み込みシステムプロセッサ８は、制御部４０、ストリームプロセッサ４２、分割プロセッサ４４、及びＳＣＳＩコントローラ４６を含む記憶部管理プロセッサ１０の全ての構成要素を制御する。
【０１０３】
記憶部管理プロセッサ１０は専用のハードウェアプロセッサとして組み込まれている。ＳＡＳインタフェース４８も専用のハードウェアで実現されている。ＳＣＳＩコントローラ４６は複数のＳＣＳＩコントローラチャネルをパラレルに含む（図示せず）。ＳＡＳインタフェース４８は複数のＳＡＳインタフェースチャネルをパラレルに含む。
【０１０４】
記憶部６のＲＡＩＤディスクごとに、ＳＣＳＩコントローラ４６のＳＣＳＩコントローラチャネルとＳＡＳインタフェース４８のＳＡＳインタフェースチャネルとが個別に設けられている。記憶部６の各ＲＡＩＤディスクは別々のシリアルＳＣＳＩインタフェースチャネルを通し、個別に対応するＳＣＳＩコントローラチャネルと通信する。各ディスクへのアクセスは並行して同時に行われる。
【０１０５】
記憶部管理プロセッサ１０はＲＡＩＤコントローラの機能を果たすようになっている。記憶部管理プロセッサ１０は組み込みシステムプロセッサ８と共同で、ＲＡＩＤディスクについてＲＡＩＤレベル５によるデータ整理を行うようにハードウェアでプログラムされている。
【０１０６】
制御部４０は、組み込みシステムプロセッサ８の命令を実行し、ストリームプロセッサ４２、分割プロセッサ４４、及びＳＣＳＩコントローラ４６と制御命令を通信するようになっている。
【０１０７】
ストリームプロセッサ４２は、専用のメモリバッファセグメントを含むＤＲＡＭ３２を通して記憶データインタフェース２８とハードウェアプロセッサ２０とへ、ネットワーク４に送られるべき記憶データペイロードを転送する。ストリームプロセッサ４２はまた、記憶データインタフェース２８からＤＲＡＭ３２を通して分割プロセッサ４４へ記憶データを送る。ストリームプロセッサ４２はそれら二つの動作を双方向で、かつ同時に行う。
【０１０８】
ストリームプロセッサ４２は記憶データを各仮想記憶データ通信チャネルと各メモリバッファセグメント３２ｂとから分割プロセッサ４４へ流す。組み込みシステムプロセッサ８は制御部４０経由で分割プロセッサ４４及びＳＣＳＩコントローラ４６と制御命令を交換する。こうして、ストリームプロセッサ４２は組み込みシステムプロセッサ８と共同で、記憶部６への記憶データの書き込みを達成する。
【０１０９】
読み出し期間中でのネットワーク４への記憶データの転送は、組み込みシステムプロセッサ８の制御の下で同様に達成される。組み込みシステムプロセッサ８は、仮想記憶データ通信チャネルの接続ポート番号とＩＰアドレスとに関連づけられたメモリバッファセグメント３２ａのセグメント識別番号に関する情報を持つので、組み込みシステムプロセッサ８はこの情報を、記憶データが転送されるべきメモリバッファセグメント３２ａの識別に利用する。
【０１１０】
組み込みシステムプロセッサ８は続いて、分割プロセッサ４４からストリームプロセッサ４２を通してメモリバッファセグメント３２ａへの記憶データの転送を制御する。そのメモリバッファセグメント３２ａは、記憶データが通信されるべき仮想記憶データ通信チャネルの宛先ＩＰアドレスに関連づけられたセグメント識別番号を持つ。
【０１１１】
記憶部６に記憶データが転送される間、分割プロセッサ４４は記憶データのストリームを、記憶部６内のＲＡＩＤディスクのディスクアクセスサイズである１６ビットのデータ記憶ブロックずつに分割するようになっている。
【０１１２】
記憶部管理プロセッサ１０はその他に、ストライプバッファ４９を有する。ストライプバッファ４９は複数のチャネルバッファの並列接続、すなわちストライプを含む。各ＳＣＳＩコントローラチャネルに個別にチャネルバッファが関連づけられている。記憶データ通信の最適化を目的として、各バッファは複数のデータ記憶ブロックを一時的に記憶してデータをグループ化し、分割プロセッサ４４と記憶部６内のディスクアレイとの間でＳＣＳＩコントローラ４６とＳＡＳインタフェース４８とを通して転送する。
【０１１３】
ＳＣＳＩコントローラ４６はＳＡＳインタフェースを通してＲＡＩＤディスクと通信し、１６ビットのデータブロックをＲＡＩＤディスクに書き込み、データをＲＡＩＤディスクから読み出す。ディスクに対するデータの読み書きではＳＣＳＩコントローラ４６の応答が速いので、記憶部６とネットワーク４との間での記憶データの転送速度が最適化される。更に、ＳＣＳＩコントローラ４６は記憶データの読み書きの期間中、ＲＡＩＤディスクと、ホストである組み込みシステムプロセッサ８との間での制御データの高速通信を可能にする。
【０１１４】
記憶部管理プロセッサ１０はまた、パリティ生成部５０と再構築部５２とを有する。
【０１１５】
パリティ生成部５０は分割プロセッサ４４と共同で動作する。パリティ生成部５０はＸＯＲアレイをベースにし、ビット単位で記憶データのＸＯＲを計算する。再構築部５２は制御部４０と共同で、ＲＡＩＤディスクの損傷部分に含まれるデータを再構成するようになっている。使用されていたディスクのセクタしか再構成されない。再構築部５２はハードウェアで実装され、その読み出し動作、ＸＯＲ動作、及びセクタの書き込み動作は自律的であり、システムとデータを交換することなく行われる。従って、再構築動作は、読み書きの期間中ではＲＡＩＤディスクへの他のアクセスと競合する。再構築動作は一回のアクセスより多くのバンド幅を「費やす」ことがないので、分散型のファイル管理システムによって管理可能である。
【０１１６】
ＳＣＳＩコントローラ４６はハードウェアで実装され、ストライプバッファ４９からＳＡＳディスクインタフェースへの大量の通信をパラレルに行う。ストライプ一つ当たりにバッファが一つあり、ストライプ一つ当たりにＳＣＳＩコントローラが一つあり、ディスク一枚当たりにＳＡＳインタフェースが一つあるので、ディスク一枚当たりにケーブルが一本ある。この実施形態はＳＡＳディスク（又は、他の実施形態ではシリアルＡＴＡ）を利用することで、処理速度、信頼性、小型化等の多くの利点を持つ。このパラレルアーキテクチャによってアクセス時間が短縮され、典型的なシークタイムがほぼ決定論的に決まり、平均値が決定可能であるので、その平均値をコマンドに先行する処理に利用できる。但し、その分散は未知のパラメータのままである。
【０１１７】
ストライプバッファ４９はディスクと同数のチャネルを含む。ストライプバッファ４９は通信の最適化だけでなく、ディスクに対するアクセス時間の最適化に必要なサイズである。そのアクセス時間は、制御時間、ヘッドの変位に要する時間、及び、メディア上へのデータの転送に要する時間を含む。転送サイズが小さいほど、維持される転送レート（ビットレート）が低い。転送サイズを増やすには、ストライプバッファにデータを蓄積してディスクに対するアクセス数を制限しなければならない。ストライプバッファのサイズの増大が経済的に不利になる点（メモリの容量の増大）と、ストライプバッファの使用による時間的な「損失」が転送時間と比べて重大になる点との比較考量によって、ストライプバッファのサイズは選択される。同様に、バッファ経由の経路によってデータフローに生じる待ち時間が場合によっては不具合（サーバにとっては二次的な不具合）になり得る。それらのことから、ストライプバッファには、チャネル一つ当たり１２８キロビットから１メガビットまでのサイズを与えれば良いことがわかる。
【０１１８】
仮想記憶データ通信チャネルは、ネットワーク４、ネットワークマネージャ、及びネットワークストレージ装置２により、外的な操作や干渉から保護されている。仮想記憶データ通信チャネルの創設によってバンド幅がネットワークストレージ装置２のバンド幅の上限値を超える場合、仮想記憶データ通信チャネルを追加して確立することはできない。記憶データの通信期間中、仮想記憶データ通信チャネルのバンド幅は保証されている。それらの結果、記憶部６とネットワーク４との間では記憶データが確実に通信され、通信のネックにはならない。
【０１１９】
ネットワークストレージ装置２の内部で制御データと記憶データとを完全に分離し、ハードウェアプロセッサ２０、ハードウェアで実装された記憶部管理プロセッサ１０、及びＳＡＳインタフェース４８を利用する。それにより、ネットワーク４と記憶部６との間での記憶データのストリーミングを確実に、高度に並列化させ、かつ効率化できる。
【０１２０】
ネットワークストレージ装置（２）の全ての構成要素を複製して冗長性を与え、ネットワークストレージ装置を常に利用可能にすることで、信頼性と利用可能性とを持つネットワークストレージ装置が実現可能になる。
【０１２１】
ネットワークストレージ装置２は、専用のハードウェアプロセッサをベースにして分散アーキテクチャを実装する。データ転送動作と再構築動作とは「マネージャ」（組み込みシステムプロセッサ）によって初期化されて制御される。しかし、データ転送と処理とは専用のハードウェアプロセッサによって実行される。ネットワークストレージ装置２は分散アーキテクチャにより、サーバ一つ当たり１０ギガビット／秒のデータ転送要求を満たすことができる。そのデータ転送要求は、ＨＤＤのストレージ技術に対して期待されている発展に合わせて予測されたものである。それに対し、ソフトウェアによるマルチプロセッサを有する現行のネットワークストレージ装置は１ギガビット／秒のデータ転送が困難である。
【０１２２】
本発明によれば、ハードウェアとソフトウェアとが混合されたアーキテクチャは、データフローの高速化だけでなく、デバイスの消費電力を比較的低く維持することを可能にし、強制的な冷却要素を不要にする。その結果、小型のネットワークストレージ装置の大容量及び高密度化、処理の高効率化、データスループットの向上が可能になり、ネットワークストレージ装置に、ＲＡＩＤと再構築機能とによる高い信頼性、及び冗長性による利用可能性を与えることができる。
【図面の簡単な説明】
【０１２３】
【図１】本発明によるネットワークストレージ装置の概略的なブロック図である。
【図２】図１のネットワークストレージ装置について、そのネットワークインタフェースの詳細を示す概略的なブロック図である。
【図３】記憶データのビットレート調整機構の操作を示すフローチャートである。
【図４】図１のネットワークストレージ装置について、その記憶部管理プロセッサの詳細を示す概略的なブロック図である。
【図１】
2007317181.tif 000003
【図２】
2007317181.tif 000004
【図３】
2007317181.tif 000005
【図４】
2007317181.tif 000006
【外国語明細書】
2007317181000001.pdf