(57)【特許請求の範囲】
【請求項１】
連続データを記憶するデータ記憶部から所望の連続データを読み出す複数のデータ記憶制御部と、
前記データ記憶制御部によって読み出された前記連続データを保持するための複数のバッファ記憶部と、
前記バッファ記憶部に保持されている前記連続データを読み出し、収容した通信路に送り出す複数の通信制御部とを備え、
前記バッファ記憶部を、１つ又は複数のデータ記憶制御部からなる１つのデータ記憶制御部群と１つ又は複数の通信制御部からなる１つの通信制御部群とからなる群の組合せのそれぞれに対して少なくとも１つずつ専用に存在するように設けたことを特徴とする連続データサーバ装置。
【請求項２】
少なくとも１つの前記バッファ記憶部は、該バッファ記憶部に書き込みを行なう前記データ記憶制御部群を複数受持つものであり、
複数の前記データ記憶制御部群を受持つ前記バッファ記憶部は、アクセス要求のあった連続データを記憶する前記データ記憶部に対応する前記データ記憶制御部の属する前記データ記憶制御部群を選択する選択手段を有することを特徴とする請求項１に記載の連続データサーバ装置。
【請求項３】
前記データ記憶部は、連続データを分割して順に記憶させた複数のデータ記憶装置からなることを特徴とする請求項１に記載の連続データサーバ装置。
【請求項４】
前記データ記憶制御部群と前記バッファ記憶部との間を接続するパスと、前記通信制御部群と前記バッファ記憶部との間を接続するパスとを互いに独立して設けたことを特徴とする請求項１に記載の連続データサーバ装置。
【請求項５】
前記データ記憶制御部群と前記バッファ記憶部との間を接続するパスを、各々の前記データ記憶制御部群ごとに独立して設けたことを特徴とする請求項４に記載の連続データサーバ装置。
【請求項６】
前記通信制御部群と前記バッファ記憶部との間を接続するパスを、各々の前記通信制御部群ごとに独立して設けたことを特徴とする請求項４に記載の連続データサーバ装置。
【請求項７】
対応する前記データ記憶制御部群と前記バッファ記憶部との間にそれぞれ接続された４端子を有する複数の演算部を更に備え、
前記複数の演算部は上下に直列に接続され、
前記演算部夫々は、
バッファ記憶部側の端子から入力したデータと上側の端子から入力したデータを元に、排他的論理和演算を行ない、演算結果を下側の端子に出力する第１の機能と、
上側の端子から入力したデータを下側の端子に出力する第２の機能と、
前記データ記憶制御部群側の端子から入力したデータをバッファ記憶部側の端子から出力する第３の機能とを有し、
最上位の演算部の上端の端子からは０を入力するように設定され、
データ記憶制御部がデータ記憶部から読み出したデータは対応するバッファ記憶部に接続している演算部が前記第３の機能で動作させてそのバッファ記憶部に書き込み、
いずれかのバッファ記憶部からデータを読み出す場合には、そのバッファ記憶部に接続している演算部は前記第１の機能で動作させ、その演算部以外の演算部は前記第２の機能で動作させ、最下段の演算部の下端の端子からデータを読み出し、
いずれかのバッファ記憶部に対応するデータを復元しながら読み出す場合には、そのバッファ記憶部に接続している演算部は前記第２の機能で動作させ、その演算部以外の演算部は前記第１の機能で動作させ、最下段の演算部の下端の端子からデータを読み出すことを特徴とする請求項１に記載の連続データサーバ装置。
【請求項８】
連続データを記憶したデータ記憶装置から所望の連続データを読み出す複数のデータ記憶制御装置と、読み出された該連続データを保持するためのバッファ記憶装置と、該バッファ記憶装置に保持された該連続データを通信路に送り出す複数の通信制御装置とを備え、前記バッファ記憶装置を１つのデータ記憶制御装置と１つの通信制御装置とからなる組合せすべてに対して専用に少なくとも１つずつ設けた連続データサーバ装置において要求された連続データを要求された転送先に転送するための連続データ送出方法であって、
外部から連続データのアクセス要求を受け付け、
要求された連続データを記憶する前記データ記憶装置が接続された前記データ記憶制御装置と、該連続データの転送先に通じる通信路を収容している前記通信制御装置とを選択し、
選択した前記データ記憶制御装置に前記データ記憶装置に記憶された前記連続データを読み出させ、
前記データ記憶制御装置に読み出した前記連続データを当該データ記憶制御装置と選択した前記通信制御装置とに接続された専用の前記バッファ記憶装置に書き込ませ、
前記通信制御装置に前記バッファ記憶装置内に書き込まれている前記連続データを読み出させ、
前記通信制御装置に前記連続データを所定の通信路に送り出させることを特徴とする連続データ送出方法。
【請求項９】
外部から受け付けるアクセス要求が複数で、これら複数の要求に対応する連続データの読み出しおよび送り出しのタイミングをスケジューリングするステップをさらに含むことを特徴とする請求項８に記載の連続データ送出方法。
【請求項１０】
複数系統のディスク装置を接続する接続口を有し、接続した複数系統のディスク装置に対するアクセスを並列に行なうディスクアレイ装置において、
前記接続口から入出力するデータを格納するために、該接続口夫々に対応して設けたバッファ記憶部と、
対応する前記接続口と前記バッファ記憶部との間にそれぞれ接続された４端子を有する複数の演算部とを備え、
前記複数の演算部は上下に直列に接続され、
前記演算部夫々は、
バッファ記憶部側の端子から入力したデータと上側の端子から入力したデータを元に、排他的論理和演算を行ない、演算結果を下側の端子に出力する第１の機能と、
上側の端子から入力したデータを下側の端子に出力する第２の機能と、
ディスク装置側の端子から入力したデータをバッファ記憶部側の端子から出力する第３の機能とを有し、
最上位の演算部の上端の端子からは０を入力するように設定され、
ディスク装置から読み出したデータは対応するバッファ記憶部に接続している演算部が前記第３の機能で動作させてそのバッファ記憶部に書き込み、
いずれかのバッファ記憶部からデータを読み出す場合には、そのバッファ記憶部に接続している演算部は前記第１の機能で動作させ、その演算部以外の演算部は前記第２の機能で動作させ、最下段の演算部の下端の端子からデータを読み出し、
いずれかのバッファ記憶部に対応するデータを復元しながら読み出す場合には、そのバッファ記憶部に接続している演算部は前記第２の機能で動作させ、その演算部以外の演算部は前記第１の機能で動作させ、最下段の演算部の下端の端子からデータを読み出すことを特徴とするディスクアレイ装置。
【請求項１１】
前記データ記憶部には連続するデータが前記複数のデータ記憶部制御部に跨るように記憶されており、前記複数のバッファ記憶部に保持された複数のデータを前記複数のバッファ記憶部から順次読み出すものであり、
前記連続データサーバ装置は、前記複数のバッファ記憶部に接続される演算部を更に備え、
この演算部は、順次読み出された複数のデータのうちの一部を記憶する機能と、順次読み出された複数のデータのうちの一部の排他的論理和を計算する機能と、この排他的論理和の計算結果及び前記記憶されたデータを所望の順序で出力する機能とを含むことを特徴とする請求項１に記載の連続データサーバ装置。
【請求項１２】
前記複数のバッファ記憶部に接続される演算部を更に備え、
この演算部は、本装置の外部から入力される複数のデータの排他的論理和を計算する機能と、この排他的論理和の計算結果及び前記入力されたデータを所望の順序で前記複数のバッファ記憶部に対し順次送り出す機能とを含むことを特徴とする請求項１に記載の連続データサーバ装置。
【請求項１３】
前記演算部は、前記排他的論理和の計算結果を蓄積する機能と、この蓄積された値を所定のタイミングで前記複数のバッファ記憶部のうちの一つに送り出す機能とを更に含み、この送り出され前記複数のバッファ記憶部のうちの一つに保持されることとなった値を対応する前記データ記憶制御部によって前記データ記憶部へ書き込むことを特徴とする請求項１１に記載の連続データサーバ装置。
【請求項１４】
前記複数のバッファ記憶部からデータを読み出すためのバスを更に備え、
このバスを時分割で使用することによりデータを前記複数のバッファ記憶部から順次読み出す処理を行うことを特徴とする請求項１１乃至１３のいずれか1項に記載の連続データサーバ装置。
【請求項１５】
連続データを記憶するデータ記憶部から所望の連続データを読み出す複数のデータ記憶制御部と、
前記データ記憶制御部によって読み出された前記連続データを保持するための複数のバッファ記憶部と、
前記バッファ記憶部に保持されている前記連続データを読み出し、収容した通信路に送り出す少なくとも１つの通信制御部とを備え、
前記バッファ記憶部を１つの前記データ記憶制御部と１つの前記通信制御部とからなる組合せのそれぞれに対して専用に少なくとも１つずつ設け、
前記データ記憶部には連続するデータがワード単位で前記複数のデータ記憶制御部に跨るように記憶されており、
前記データ記憶制御部による読み出しはブロック単位で行われ、前記複数のバッファ記憶部に保持されたブロック単位のデータをワード単位で前記複数のバッファ記憶部から順次読み出して得られる連続データを、収容した通信路に送り出すものであることを特徴とする連続データサーバ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の連続データのアクセス要求に同時に応答して映像や音声等の連続データのサービスを行う連続データサーバ装置および連続データ送出方法、ならびに複数系統のディスク装置を接続しデータを組にして入出力するディスクアレイ装置に関する。
【０００２】
【従来の技術】
映像や音声のような連続データを扱う連続データサーバ装置は、記憶装置に記憶した連続データを読み出し、端末装置に対して時間に同期しながらリアルタイムに連続的にデータを送り出す機能を持つ。このような連続データサーバ装置は、複数の映画等のビデオデータを記憶し、端末からのリクエストに応じて任意の映画を送り出すビデオ・オン・デマンドや、ネットワークを介して映像による商品情報を提供するオンラインショッピングなどの分野で使用される。それゆえ、連続データサーバ装置には、複数のユーザからランダムにリクエストが送られてくるので、同時に多数のユーザに対してそれぞれ異なる連続データの送り出しを行う能力が要求されることになる。
【０００３】
以下、従来の連続データサーバ装置について詳しく説明する。
【０００４】
従来の連続データサーバ装置の１つに、図５７に示すような構成を持つものがある。このような連続データサーバ装置において、ユーザあるいはアプリケーションプログラムによって発せられた連続データへのアクセス要求が、プロセス間通信やネットワークを経由した通信等によって送られて来る。このアクセス要求は、通信制御装置７０６からバス７２０を介して中央制御装置７１０に伝えられ、受理される。中央制御装置７１０は、要求された連続データの読み出しを、必要なデータ記憶制御装置７０４に伝える。データ記憶制御装置７０４は、指示された連続データをデータ記憶装置７０２から読み出してバッファ記憶装置７０８に書き込む。中央制御装置７１０は、バッファ記憶装置７０８上のデータの送り出しを通信制御装置７０６に指示する。通信制御装置７０６は、アクセス要求にて指定された転送先に向けて、連続データを送り出す。中央制御装置７１０は、基本的には、電子計算機と同じように、ＣＰＵとメモリ装置から構成される。中央制御装置７１０は、アクセス要求を伝えるための通信装置を備え、ユーザあるいはアプリケーションプログラムからのアクセス要求は、通信制御装置７０６ではなく中央制御装置の持つ通信制御によって伝えられる。連続データを記憶するデータ記憶装置７０２には、ディスク装置を用いることが多い。ディスク装置としては、磁気ディスク装置を用いる場合が多いが、光ディスクや光磁気ディスク装置等を用いる場合もある。ディスク装置以外にも、ＲＡＭやＥＥＰＲＯＭ等の半導体記憶装置を用いることもある。
【０００５】
さて、図５７のような従来の連続データサーバ装置において、例えばデータ記憶装置７０２としてディスク装置を用いたものを考えると、特定のディスク装置に記憶している連続データの異なる部分へ同時に多数のユーザからのアクセスが集中することがある。例えば、連続データとして１台の磁気ディスクにビデオが入っており、１本のビデオを多数のユーザが１分おきにずれて見るような状況がこれにあたる。このような場合、従来の連続データサーバ装置では、ディスクのアクセス速度が隘路となり、すべてのユーザにリアルタイムでデータを送り出すことができなくなる不具合がある。例えば、映像データを扱う場合、１人のユーザの端末に対して平均１．５Ｍｂｉｔ／ｓｅｃの速度で連続データを送り出すものとし、この映像データを記憶する磁気ディスク装置が最大２ＭＢｙｔｅ／ｓｅｃの速度でデータを読み出せるものとすると、１台の磁気ディスク装置から同時に最大１０ユーザへの送出を行う能力しか得られないことになる。
【０００６】
このようなディスク装置の問題を解消する手法として、ストライピングという技法が知られている。ストライピング技法は、複数台のディスク装置を用いて全体のデータ転送能力（総バンド幅）を大きくするとともに、１つの連続データを分割して複数台のディスク装置に記憶することによって、同一の連続データへより多数のユーザが同時にアクセスすることを可能にするものである。ストライピングを行うことで、複数のユーザが同一の連続データの異なる部分へアクセスするような最悪の場合にも対処できるバンド幅の広い記憶装置を構成することが可能になる。
【０００７】
ところが、図５７のように１台の中央制御装置７１０に数多くのディスク装置を接続し、ストライピングでバンド幅を稼いだとしても、その中央制御装置７１０の持つバス７２０の転送速度によって同時にアクセスできるユーザ数は限定されてしまう。例えば、１３３ＭＢｙｔｅ／ｓｅｃの転送能力を持つＰＣＩバスの場合、１本の連続データのアクセス速度が１．５Ｍｂｉｔ／ｓｅｃであるとすると、１本あたりディスク装置７０２からバッファ記憶装置７０８に転送するために使う１．５Ｍｂｉｔ／ｓｅｃとバッファ記憶装置７０８から通信制御装置７０６に転送するために使う１．５Ｍｂｉｔ／ｓｅｃの合計３Ｍｂｉｔ／ｓｅｃのバス７２０のデータ転送能力（バンド幅）を占有する。よって、バスが１００％の効率で動作すると仮定した場合でも３５４本までの連続データしか同時にアクセスできないことになる。実際には、バスを１００％の効率で動作させることはないので、同時にアクセスできるユーザ数はさらに低減される。
【０００８】
そこで、従来の１系統の連続データサーバ装置だけでは実現できないような多数のユーザに対する同時アクセスを実現するために、図５７のような１系統の連続データサーバ装置を複数系統並設した構成が考えられる。そのような連続データサーバ装置を図５８に示す。この場合、連続データは、１つの連続データサーバ装置８００に接続されたデータ記憶装置８０２間でストライピングを行って記憶される（異なる連続データサーバ装置８００に接続されたデータ記憶装置８０２間ではストライピングは行なわない）。この場合、全体制御用計算機８０１が、統括して連続データのアクセス要求を受け、要求された連続データを持つ連続データサーバ装置８００に対してアクセス要求を伝える。その後、アクセス要求を伝えられた連続データサーバ装置８００の中央制御装置（図示せず）がデータの送り出しを制御する。図５８のようなシステムによれば、連続データサーバ装置８００の系統を増設することによって、同時に連続データにアクセスできるユーザ数を容易に増加させることができる。
【０００９】
しかしながら、多数系統の連続データサーバ装置８００のデータ記憶装置８０２に同じデータのコピーを持たせなければ、同一の連続データの異なる部分に全ユーザがアクセスするような場合には対処できない。したがって、全データのコピーを多くの系統の連続データサーバ装置８００に持たせるためのコストが非常に大きくなるという欠点があった。
【００１０】
連続データのコピーを多くの系統の連続データサーバ装置に持たせずに、同時にアクセスできるユーザ数を増やす方法としては、図５９に示すように複数の中央制御装置（ＣＰＵ）９１０，９１１をデータ転送能力（バンド幅）の大きなスイッチ（結合路）９２１で接続した超並列計算機を利用して、データ記憶装置９０２から通信制御装置９０６へ至るデータパスを多重化する方式がある。この場合、各中央制御装置９１０，９１１の持つ記憶装置９０８，９０９をバッファ記憶装置として使う。中央制御装置９１０，９１１間を接続するスイッチ９２１は、任意のデータ記憶制御装置９０４を持つ中央制御装置９１０と任意の通信制御装置９０６を持つ中央制御装置９１１の間でのデータ転送を可能とする必要があるため、クロスバスイッチやハイパーキューブあるいはＡＴＭのような多段網を用いる。
【００１１】
ところが、このような構成を持つ連続データサーバ装置では、通信制御装置９０６を持つ１つの中央制御装置９１１に対してデータ記憶制御装置９０２を持つ複数の中央制御装置９１０からデータの転送が発生するため、アービトレーションの機能が必要となる。そのため、結合路９２１を構成するクロスバスイッチやＡＴＭネットワーク等のハードウェアが複雑となり、コストも非常に大きくなる欠点があった。
【００１２】
【発明が解決しようとする課題】
従来、１台の連続データサーバ装置で同時に連続データにアクセスできるユーザ数は、連続データサーバ装置を構成するバス等のデータパスのバンド幅によって制限されるという問題点があった。
【００１３】
１台の連続データサーバ装置の能力よりも多くのユーザが同時に連続データに対してアクセスすることを可能にするために、複数系統の連続データサーバ装置を用いて、それぞれに連続データのコピーを持たせたものでは、データ記憶装置のコストが大きいという問題点があった。
【００１４】
クロスバスイッチやＡＴＭ等のスイッチを用いてデータパスの多重化を行うことで、同時にアクセス可能なユーザ数を大きくしたものでは、スイッチのハードウェアが複雑になり、コストも大きいという問題点があった。
【００１５】
本発明は、上記事情に鑑みてなされたものであり、コストを増大させることなく、従来の１台の連続データサーバ装置の能力を越えるような多数のユーザからの連続データへの同時アクセスに応答できるようにした連続データサーバ装置および連続データ送出方法を提供すること目的とする。
【００１６】
また、本発明は、複数系統のディスク装置の接続口を有するディスクアレイ装置に接続したディスク装置の故障により失われた情報の復元を少ないハードウェア構成で実現することのできるディスクアレイ装置を提供すること目的とする。
【００１７】
【課題を解決するための手段】
本発明（請求項１）に係る連続データサーバ装置は、連続データを記憶するデータ記憶部から所望の連続データを読み出す複数のデータ記憶制御部と、前記データ記憶制御部によって読み出された前記連続データを保持するための複数のバッファ記憶部と、前記バッファ記憶部に保持されている前記連続データを読み出し、収容した通信路に送り出す複数の通信制御部とを備え、前記バッファ記憶部を、１つ又は複数のデータ記憶制御部からなる１つのデータ記憶制御部群と１つ又は複数の通信制御部からなる１つの通信制御部群とからなる群の組合せのそれぞれに対して少なくとも１つずつ専用に存在するように設けたことを特徴とする。
好ましくは、少なくとも１つの前記バッファ記憶部は、該バッファ記憶部に書き込みを行なう前記データ記憶制御部群を複数受持つものであり、複数の前記データ記憶制御部群を受持つ前記バッファ記憶部は、アクセス要求のあった連続データを記憶する前記データ記憶部に対応する前記データ記憶制御部の属する前記データ記憶制御部群を選択する選択手段を有するようにしてもよい。
好ましくは、前記データ記憶部は、連続データを分割して順に記憶させた複数のデータ記憶装置からなるようにしてもよい。
好ましくは、前記データ記憶制御部群と前記バッファ記憶部との間を接続するパスと、前記通信制御部群と前記バッファ記憶部との間を接続するパスとを互いに独立して設ける
ようにしてもよい。
好ましくは、前記データ記憶制御部群と前記バッファ記憶部との間を接続するパスを、各々の前記データ記憶制御部群ごとに独立して設けるようにしてもよい。
好ましくは、前記通信制御部群と前記バッファ記憶部との間を接続するパスを、各々の前記通信制御部群ごとに独立して設けるようにしてもよい。
好ましくは、対応する前記データ記憶制御部群と前記バッファ記憶部との間にそれぞれ接続された４端子を有する複数の演算部を更に備え、前記複数の演算部は上下に直列に接続され、前記演算部夫々は、バッファ記憶部側の端子から入力したデータと上側の端子から入力したデータを元に、排他的論理和演算を行ない、演算結果を下側の端子に出力する第１の機能と、上側の端子から入力したデータを下側の端子に出力する第２の機能と、前記データ記憶制御部群側の端子から入力したデータをバッファ記憶部側の端子から出力する第３の機能とを有し、最上位の演算部の上端の端子からは０を入力するように設定され、データ記憶制御部がデータ記憶部から読み出したデータは対応するバッファ記憶部に接続している演算部が前記第３の機能で動作させてそのバッファ記憶部に書き込み、いずれかのバッファ記憶部からデータを読み出す場合には、そのバッファ記憶部に接続している演算部は前記第１の機能で動作させ、その演算部以外の演算部は前記第２の機能で動作させ、最下段の演算部の下端の端子からデータを読み出し、いずれかのバッファ記憶部に対応するデータを復元しながら読み出す場合には、そのバッファ記憶部に接続している演算部は前記第２の機能で動作させ、その演算部以外の演算部は前記第１の機能で動作させ、最下段の演算部の下端の端子からデータを読み出すようにしてもよい。
好ましくは、前記データ記憶部には連続するデータが前記複数のデータ記憶部制御部に跨るように記憶されており、前記複数のバッファ記憶部に保持された複数のデータを前記複数のバッファ記憶部から順次読み出すものであり、前記連続データサーバ装置は、前記複数のバッファ記憶部に接続される演算部を更に備え、この演算部は、順次読み出された複数のデータのうちの一部を記憶する機能と、順次読み出された複数のデータのうちの一部の排他的論理和を計算する機能と、この排他的論理和の計算結果及び前記記憶されたデータを所望の順序で出力する機能とを含むようにしてもよい。
好ましくは、前記複数のバッファ記憶部に接続される演算部を更に備え、この演算部は、本装置の外部から入力される複数のデータの排他的論理和を計算する機能と、この排他的論理和の計算結果及び前記入力されたデータを所望の順序で前記複数のバッファ記憶部に対し順次送り出す機能とを含むようにしてもよい。
好ましくは、前記演算部は、前記排他的論理和の計算結果を蓄積する機能と、この蓄積された値を所定のタイミングで前記複数のバッファ記憶部のうちの一つに送り出す機能とを更に含み、この送り出され前記複数のバッファ記憶部のうちの一つに保持されることとなった値を対応する前記データ記憶制御部によって前記データ記憶部へ書き込むようにしてもよい。
好ましくは、前記複数のバッファ記憶部からデータを読み出すためのバスを更に備え、
このバスを時分割で使用することによりデータを前記複数のバッファ記憶部から順次読み出す処理を行うようにしてもよい。
また、本発明（請求項８）は、連続データを記憶したデータ記憶装置から所望の連続データを読み出す複数のデータ記憶制御装置と、読み出された該連続データを保持するためのバッファ記憶装置と、該バッファ記憶装置に保持された該連続データを通信路に送り出す複数の通信制御装置とを備え、前記バッファ記憶装置を１つのデータ記憶制御装置と１つの通信制御装置とからなる組合せすべてに対して専用に少なくとも１つずつ設けた連続データサーバ装置において要求された連続データを要求された転送先に転送するための連続データ送出方法であって、外部から連続データのアクセス要求を受け付け、要求された連続データを記憶する前記データ記憶装置が接続された前記データ記憶制御装置と、該連続データの転送先に通じる通信路を収容している前記通信制御装置とを選択し、選択した前記データ記憶制御装置に前記データ記憶装置に記憶された前記連続データを読み出させ、前記データ記憶制御装置に読み出した前記連続データを当該データ記憶制御装置と選択した前記通信制御装置とに接続された専用の前記バッファ記憶装置に書き込ませ、前記通信制御装置に前記バッファ記憶装置内に書き込まれている前記連続データを読み出させ、前記通信制御装置に前記連続データを所定の通信路に送り出させることを特徴とする。
好ましくは、外部から受け付けるアクセス要求が複数で、これら複数の要求に対応する連続データの読み出しおよび送り出しのタイミングをスケジューリングするステップをさらに含むようにしてもよい。
また、本発明（請求項１０）は、複数系統のディスク装置を接続する接続口を有し、接続した複数系統のディスク装置に対するアクセスを並列に行なうディスクアレイ装置において、前記接続口から入出力するデータを格納するために、該接続口夫々に対応して設けたバッファ記憶部と、対応する前記接続口と前記バッファ記憶部との間にそれぞれ接続された４端子を有する複数の演算部とを備え、前記複数の演算部は上下に直列に接続され、前記演算部夫々は、バッファ記憶部側の端子から入力したデータと上側の端子から入力したデータを元に、排他的論理和演算を行ない、演算結果を下側の端子に出力する第１の機能と、上側の端子から入力したデータを下側の端子に出力する第２の機能と、ディスク装置側の端子から入力したデータをバッファ記憶部側の端子から出力する第３の機能とを有し、最上位の演算部の上端の端子からは０を入力するように設定され、ディスク装置から読み出したデータは対応するバッファ記憶部に接続している演算部が前記第３の機能で動作させてそのバッファ記憶部に書き込み、いずれかのバッファ記憶部からデータを読み出す場合には、そのバッファ記憶部に接続している演算部は前記第１の機能で動作させ、その演算部以外の演算部は前記第２の機能で動作させ、最下段の演算部の下端の端子からデータを読み出し、いずれかのバッファ記憶部に対応するデータを復元しながら読み出す場合には、そのバッファ記憶部に接続している演算部は前記第２の機能で動作させ、その演算部以外の演算部は前記第１の機能で動作させ、最下段の演算部の下端の端子からデータを読み出すことを特徴とする。
また、本発明（請求項１５）は、連続データを記憶するデータ記憶部から所望の連続データを読み出す複数のデータ記憶制御部と、前記データ記憶制御部によって読み出された前記連続データを保持するための複数のバッファ記憶部と、前記バッファ記憶部に保持されている前記連続データを読み出し、収容した通信路に送り出す少なくとも１つの通信制御部とを備え、前記バッファ記憶部を１つの前記データ記憶制御部と１つの前記通信制御部とからなる組合せのそれぞれに対して専用に少なくとも１つずつ設け、前記データ記憶部には連続するデータがワード単位で前記複数のデータ記憶制御部に跨るように記憶されており、前記データ記憶制御部による読み出しはブロック単位で行われ、前記複数のバッファ記憶部に保持されたブロック単位のデータをワード単位で前記複数のバッファ記憶部から順次読み出して得られる連続データを、収容した通信路に送り出すものであることを特徴とする。
【００３４】
（作用）
本発明（請求項１）に係る連続データサーバ装置では、データ記憶制御装置と通信制御装置の組のそれぞれ、またはいくつかのデータ記憶制御装置からなる群といくつかの通信制御装置からなる群の組それぞれに対して、その間のデータの受け渡し専用のバッファ記憶装置を設けるとともに、各データ記憶制御装置と各通信制御装置は、それがアクセスする必要のあるバッファ記憶装置を含む一部のバッファ記憶装置のみと接続している。
【００３５】
このため、データ記憶制御装置とバッファ記憶装置の間のデータパスおよびバッファ記憶装置と通信制御装置の間のデータパスの多重度を上げることができ、連続データへの同時アクセスユーザ数を増加させることが可能になる。
【００３６】
この場合、各データ記憶制御装置と各通信制御装置を、それがアクセスする必要のあるバッファ記憶装置のみと接続すれば、データパスの多重度をより効果的に上げることができ、連続データへの同時アクセスユーザ数をさらに増加させることができる。また、各バッファ記憶装置は１つあるいは複数のデータ記憶制御装置の接続された１つのデータパスと、１つあるいは複数の通信制御装置の接続された１つのデータパスに接続されるため、バッファ記憶装置へのアクセスに対するアービトレーションが非常に簡単になる。
【００３７】
さらに、従来のように高コストを要する転送速度の大きいバスやスイッチを使う必要がないので、コストの増大を招くことなく、連続データへの同時アクセスユーザ数を増加させることができる。
【００３８】
また、前記データ記憶制御装置と前記バッファ記憶装置との間を接続するパスと、前記通信制御装置と前記バッファ記憶装置との間を接続するパスとを互いに独立して設けた場合、バスへの負荷が分散され、バスのバンド幅が小さくて済む。さらに、前記データ記憶制御装置と前記バッファ記憶装置との間を接続するパスを各々の前記データ記憶制御装置ごとに独立して設け、あるいは前記通信制御装置と前記バッファ記憶装置との間を接続するパスを各々の前記通信制御装置ごとに独立して設ければ、さらなる負荷分散が可能になり、バスに要求されるバンド幅をさらに小さくすることができる。
【００３９】
また、本発明（請求項８）の連続データ転送方法では、要求された連続データを記憶する前記データ記憶装置が接続された前記データ記憶制御装置が、該連続データを読み出して、当該データ記憶制御装置と該連続データの転送先に通じる通信路を収容している前記通信制御装置とに接続された専用のバッファ記憶装置に書き込み、当該通信制御装置はこの前記バッファ記憶装置内に書き込まれている前記連続データを読み出して、所定の通信路に送り出す。
【００４０】
このため、データ記憶制御装置とバッファ記憶装置の間のデータパスおよびバッファ記憶装置と通信制御装置の間のデータパスの多重度を上げることができ、連続データへの同時アクセスユーザ数を増加させることが可能になる。
【００４１】
また、各バッファ記憶装置は１つあるいは複数のデータ記憶制御装置の接続された１つのデータパスと、１つあるいは複数の通信制御装置の接続された１つのデータパスに接続されるため、バッファ記憶装置へのアクセスに対するアービトレーションが非常に簡単になる。
【００４２】
さらに、高コストを要する転送速度の大きいバスによりデータパスの多重度を上げる必要がないので、コストの増大を招くことなく、連続データへの同時アクセスユーザ数を増加させることができる。
【００４３】
また、本発明において、対応するディスク制御部とバッファ記憶部との間にそれぞれ接続された４端子を有する複数の演算部とを備え、この演算部を適宜動作させることにより、例えば以下のような操作を行なうことができる。
【００４４】
（ｉ）各ディスク制御部に接続するディスク装置夫々に組をなすｎ＋１個のデータが格納されているとする。
【００４５】
ここで、演算部を、ディスク制御部側から入力したデータをそのままバッファ記憶部側に出力するように動作させれば、各ディスク装置のデータを対応するバッファ記憶部に格納することができる。
【００４６】
また、所望のディスク装置のデータだけ対応するバッファ記憶部に格納することもできる。
【００４７】
（ｉｉ）
所望のバッファ記憶部に接続された演算部はバッファ記憶部側の端子から入力されたデータを下側の端子に出力し、下段の演算部は上側の端子から入力されたデータを下側の端子に出力するように動作させれば、該所望のバッファ記憶部に格納されたデータを最下段の演算部から取り出すことができる。
【００４８】
（ｉｉｉ）
所望のバッファ記憶部に接続された演算部は上側の端子からの入力を下側の端子に出力し、それ以外の演算部はバッファ記憶部側の端子から入力されたデータと上側の端子から入力されたデータの排他的論理和または排他的論理積を下側の端子に出力するように動作させれば、該所望のバッファ記憶部以外に格納されたデータの排他的論理和または排他的論理積を最下段の演算部から取り出すことができる。
【００４９】
ｎ＋１個のバッファ記憶部に格納されたデータがＲＡＩＤの組をなすデータ、すなわちｎ個の元データとそのパリティーより１個欠けたものであれば、欠けたデータを復元し、最下段の演算部より取り出すことができる。
【００５０】
（ｉｖ）
所望のバッファ記憶部に接続された演算部は下側の端子から入力されたデータをバッファ記憶部側の端子に出力し、下段の演算部は下側の端子から入力されたデータを上側の端子に出力するように動作させれば、最下段の演算部から入力したデータを該所望のバッファ記憶部に格納することができる。
【００５１】
（ｖ）
各バッファ記憶部に接続するディスク装置夫々に組をなすｎ＋１個のデータが格納されているとする。
【００５２】
ここで、演算部を、バッファ記憶部側から入力したデータをそのままディスク制御部側に出力するように動作させれば、各バッファ記憶部側のデータを対応するディスク装置に格納することができる。
【００５３】
また、所望のバッファ記憶部のデータだけ対応するディスク装置に格納することもできる。
【００５４】
（ｖｉ）
所定のバッファ記憶部に接続された第１の演算部は上側の端子から入力されたデータと下側の端子から入力されたデータの排他的論理和または排他的論理積をバッファ記憶部側の端子に出力し、該第１の演算部より上段の演算部が存在するときそれらはバッファ記憶部側の端子から入力されたデータと上側の端子から入力されたデータの排他的論理和または排他的論理積を下側の端子に出力し、最下段の演算部は下側の端子から入力された入力データを上側の端子およびバッファ記憶部側の端子に出力し、それ以外の演算部が存在するときはそれらはバッファ記憶部側の端子から入力されたデータと下側の端子から入力されたデータの排他的論理和または排他的論理積を上側の端子に出力するように動作させ、最上段の演算部の上側の端子からは排他的論理和のとき０、排他的論理積のとき１を入力すれば、前記入力データを最下段の演算部に対応するバッファ記憶部に格納するとともに、所望のバッファ記憶部には前記入力データと所望のバッファ記憶部および最下段の演算部に対応するバッファ記憶部以外に格納されたデータとの排他的論理和または排他的論理積、すなわちこれらデータのパリティーを格納することができる。
【００５５】
（ｖｉｉ）
所定のバッファ記憶部に接続された第１の演算部は上側の端子から入力されたデータと下側の端子から入力されたデータの排他的論理和または排他的論理積をバッファ記憶部側の端子に出力し、該第１の演算部より上段の演算部が存在するときそれらはバッファ記憶部側の端子から入力されたデータと上側の端子から入力されたデータの排他的論理和または排他的論理積を下側の端子に出力し、該第１の演算部より下段の演算部が存在するときそれらはバッファ記憶部側の端子から入力されたデータと下側の端子から入力されたデータの排他的論理和または排他的論理積を上側の端子に出力するように動作させ、最上段の演算部の上側の端子および最下段の演算部の下側の端子からは排他的論理和のとき０、排他的論理積のとき１を入力すれば、所望のバッファ記憶部には所望のバッファ記憶部以外に格納されたデータの排他的論理和または排他的論理積を格納することができる。
【００５６】
ｎ＋１個のバッファ記憶部に格納されたデータがＲＡＩＤの組をなすデータ、すなわちｎ個の元データとそのパリティーから１個欠けたものであれば、欠けているデータの入るべき所望のバッファ記憶部に接続されたデータを復元し、さらにディスク装置に書き込むことができる。
【００５９】
プロセッサを用いる方法と異なり実行中プロセッサの仕事を妨げるおそれがなく、また並列に排他的論理和等をとる回路を用いる方法と異なり配線の集中や回路の複雑化を引き起こさないようにするために、専用のハードウェアの構成を工夫したものである。
【００６０】
以上のように本発明によれば、ディスク装置およびバッファ記憶部の各系統に上記のような演算部を専用に設け、これらを直列に接続したので、例えば、ディスク装置の故障に対処するためのデータ復元処理やパリティーの生成を少ないハードウェア構成で実現可能であるとともに、ハードウェアで処理を行なうので処理の高速化を図ることができる。
【００６１】
本発明（請求項１５）に係るディスクアレイ装置では、複数のディスク制御部のそれぞれに対応させてバッファ記憶部を設けるとともに、ディスク装置には連続するデータがワード単位で複数のディスク制御部に跨るように記憶されており、複数のバッファ記憶部に保持されたブロック単位のデータをワード単位で複数のバッファ記憶部から順次読み出すようになっている。
【００６２】
このため、ディスク制御部とバッファ記憶部の間のデータパスの多重度を上げて、連続データを構成するデータをブロック単位で受け渡しすることができる。そして、このブロック中のデータは、連続するデータがワード単位で複数のディスク制御部に跨るようになっているため、バッファ記憶部に読み込まれた段階では連続するデータとはなっていないが、このデータをバッファ記憶部から読み出すときに、複数のバッファ記憶部から順次ワード単位で読み出すことにより、読み出されたデータは再度連続するデータに戻っていることになる。このように、複数のバッファ記憶部は、ディスク装置から読み出される連続していないデータを連続するデータに並べ替える働きをするとともに、ディスク装置のバースト的なアクセスパターンを一定の速度でアクセスできるようにも機能する。
【００６３】
したがって、連続するデータがワード単位で複数のディスク制御部に跨っていても最終的に連続するデータを外部に供給することができる。また、連続するデータがワード単位で複数のディスク装置に跨るようになっていることで、下記のようなことも可能になる。
【００６４】
すなわち、複数のバッファ記憶部からワード単位で順次読み出されたデータを演算部に入力し、この演算部において、入力されたデータの一部を記憶するとともに、ＲＡＩＤの組になるデータより１個欠けた（ディスク装置が故障した場合にこの故障したディスク装置に対応するデータが欠けることになる）データの排他的論理和を計算し、この計算結果及び演算部内部に記憶されたデータを所望の順序（連続するデータを構成する順序）で出力すれば、ディスク装置の故障時に複数のバッファ記憶部から順次読み出したデータのうち一部が不正なものであっても、正しい連続データを出力することができる。なお、この場合には、連続するデータを構成する複数のデータ及びそのパリティがワード単位で複数のディスク制御部に跨っていることになる。
【００６５】
このとき、データがワード単位で複数のディスク装置に跨るように配置されているため、演算部内部で記憶する必要のあるデータの量を数ワードに減少させることができる。
【００６６】
また、上記演算部を、本装置の外部から入力されるデータの排他的論理和を計算してパリティを作成し、データとパリティを所望の順序（連続するデータを構成する複数のデータ及びそのパリティがワード単位で複数のディスク制御部に跨るような順序）で複数のバッファ記憶部に対し順次送り出すように構成すれば、外部からのデータの入力とともにパリティを生成しこれらをディスク装置に書き込むことが可能になる。この場合、演算部内部の記憶容量は、計算されたパリティ分の１ワードのみで済むことになる。
【００６７】
また、上記演算部を、複数のバッファ記憶部から順次読み出されたデータ（ＲＡＩＤの組になるデータ）より１個欠けた（故障したディスク装置に対応するデータが欠けた）データの排他的論理和を計算し、この結果を故障したディスク装置に対応するバッファ記憶部に書き込むために送り出すように構成すれば、故障して交換したディスク装置に対応するバッファ記憶部に故障する前のデータを復元することができる。さらに、バッファ記憶部に復元したデータを、対応する前記ディスク制御部によって、故障して交換したディスク装置へ書き込むことで、ディスク装置の内容を修復することができる。この場合も、演算部内部の記憶容量は、計算されたパリティ分の１ワードのみで済むことになる。
【００６８】
さらに、複数のバッファ記憶部からデータを読み出すためのバスを時分割で使用することによりデータをワード単位で複数のバッファ記憶部から順次読み出すようにすれば、配線の効率的な使用が可能で、ハードウェア量を減少させることができる。
【００６９】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施の形態を説明する。
【００７０】
図１に、本発明の一実施形態に係る連続データサーバ装置の構成を示す。
【００７１】
本実施形態の連続データサーバ装置は、ｎ（ｎは１以上の整数）台のデータ記憶制御装置４（図中４−１〜４−ｎ）、各データ記憶制御装置４ごとに所定台数接続されたデータ記憶装置２、ｍ（ｍは１以上の整数）台の通信制御装置６（図中６−１〜６−ｍ）、１つのデータ記憶制御装置４と１つの通信制御装置６に接続されたｎ×ｍ台のバッファ装置８、中央制御装置１０を備える。
【００７２】
データ記憶装置２は、映像や音声等の連続データを記憶するためのものであり、磁気ディスク装置、光ディスク装置あるいは光磁気ディスク装置等のディスク装置を用いることができる。また、ディスク装置以外にも、ＲＡＭやＥＥＰＲＯＭ等の半導体記憶装置など種々のものを用いることができる。
【００７３】
データ記憶装置２に記憶する連続データは、連続したビットあるいはバイトの並んだ構造を持つデータである。連続データは、好ましくは、ブロックなど一纏まりの単位で記憶・管理される。
【００７４】
データ記憶制御装置４は夫々、所定台数のデータ記憶装置２を接続しており、中央制御装置１０の制御に従い、データ記憶装置２に記憶された連続データを読み出し、これを指示されたバッファ記憶装置８の指示された番地に書き込む。
【００７５】
データ記憶装置２として磁気ディスク装置を用いる場合、データ記憶制御装置４は、ディスクコントローラにより実現することができる。磁気ディスク装置がＳＣＳＩインタフェースを持つものである場合、データ記憶制御装置４にＳＣＳＩコントローラを持たせれば、これによりディスク中のデータを読み出すことができる。
【００７６】
一般に、ディスクコントローラなどからなるデータ記憶制御装置４には、磁気ディスク装置などからなる複数のデータ記憶装置２を接続することができる。例えば、ＳＣＳＩインタフェースであれば、１本のＳＣＳＩケーブルに７台のディスク装置を接続することができる。また、中央制御装置１０には、複数のデータ記憶制御装置４を接続することが可能である。ディスクコントローラなどからなる複数のデータ記憶制御装置４を持つことで、１つのデータ記憶制御装置４だけでは接続することのできない多数のデータ記憶装置を１つの中央制御装置１０に接続することができる。
【００７７】
なお、１つのデータ記憶制御装置４に接続するデータ記憶装置２の台数を、全データ記憶制御装置４について揃える必要はなく、適宜設定して構わない。
【００７８】
本実施形態は、良く知られたストライピングの技法を適用することができる。その際、例えば図１のように連続データをすべてのデータ記憶制御装置４間に渡って分散しても良いし、あるいは一部のデータ記憶制御装置４間に渡って分散しても良い。
【００７９】
バッファ記憶装置６は、データ記憶制御装置４から転送された連続データを、一時格納するためのものであり、後述するように２ポートメモリやＶＲＡＭなどを用いて構成することができる。
【００８０】
このバッファ記憶装置６は、本発明に従って、図１のようにデータ記憶制御装置４および通信制御装置６のすべての組合せに対して１台ずつ（あるいは１台以上ずつ）、データ記憶制御装置４と通信制御装置６に接続する。
【００８１】
このような構成により、任意のデータ記憶制御装置４と任意の通信制御装置６の間でのデータの受渡しに用いるバッファ記憶装置をすべての組合せに対して専用に設けることができ、データ記憶制御装置４とバッファ記憶装置８の間のデータパスおよびバッファ記憶装置８と通信制御装置６の間のデータパスの双方が多重化され、データパスのデータ転送能力を高めることができる。
【００８２】
しかも、それぞれのデータパスを与えるバス２０，２１として従来と同じようなデータ転送能力（バンド幅）を有するものを用いても、データ記憶制御装置４と通信制御装置６の間のデータ転送能力を飛躍的に向上させることができるので、従来のようにデータ転送能力（バンド幅）のより大きい高価なバスやスイッチを用いてデータ転送能力を向上させるためにコストの増大を招くことがない。
【００８３】
なお、図１では、それぞれのバス２０，２１を互いに独立した形で専用に設けているが、図１中の任意の複数のバスが１本として結合されたものであっても構わない。
【００８４】
通信制御装置６は、指定されたバッファ記憶装置８の指定された番地から連続データを読み出し、これをネットワークやＣＡＴＶ（ケーブルテレビ）の同軸ケーブル等の通信路に対して送り出す。通信制御装置６には、ＡＴＭネットワークやイーサネット、ＦＤＤＩなどを用いることができる。
【００８５】
中央制御装置１０は、システム全体の制御を司るものであり、例えば電子計算機と同じようにＣＰＵとメモリ装置から構成し、システム全体に対する制御を記述したプログラムをＣＰＵで実行することにより、その機能を得ることができる。必要に応じてアクセス要求を伝えるための通信装置（ネットワークインタフェースなど）を備えても良い。
【００８６】
中央制御装置１０は、システム全体を制御するために、システム内に記憶している各連続データの仕様、各連続データのデータ記憶装置２への配置状態、各通信制御装置６が接続できる通信路など、システム内の情報をすべて管理している、あるいは知ることができる。連続データの仕様としては、連続データ名あるいはＩＤコードなどの各連続データを特定するための情報の他に、例えば各連続データの全データ長や、連続データが複数のブロックからなる場合の全ブロック数などが考えられる。
【００８７】
中央制御装置１０は、概略的には、ネットワークを介した通信やプロセス間通信あるいは手続き呼出し等の手段によって伝えられてくるユーザやアプリケーションプログラムからの連続データのアクセス要求を受け付け、その要求に応答するために用いるデータ記憶制御装置４と通信制御装置６を調べ、それらに対して要求された連続データを指定された転送先に向けて通信路から送り出すために必要な動作の指示を出す。データ記憶制御装置４に対しては、どのデータ記憶装置２に記憶されているどの連続データをどのバッファ記憶装置８のどの番地に転送するかを指示するとともに、通信制御装置６に対しては、どのバッファ記憶装置のどの番地にある連続データを通信路を介してどこに送信するかを指示する。
【００８８】
次に、本実施形態の連続データサーバ装置の動作の流れについて説明する。ここでは、説明を簡潔にするため、図２に示すようにデータ記憶装置を８台、データ記憶制御装置を４台、バッファ記憶装置を８台、通信制御装置を２台設けた具体例を使って説明する。
【００８９】
データ記憶装置２に記憶する連続データは、連続したビットあるいはバイトの並んだ構造を持つデータである。連続データは、いくつかのブロック、例えば図３に示すようにＢ１〜Ｂ１６の１６ブロックに分割され、図２に示すような配置で、各データ記憶装置２−１〜２−８に記憶される。すなわち、１番目のブロックＢ１はデータ記憶装置２−１に、Ｂ２はデータ記憶装置２−２に、…、Ｂ１６はデータ記憶装置２−８にというように記憶する。このような記憶の方式は、前述したようにストライピングと呼ばれ、同一のデータに対して同時に多数がアクセスすることを可能にするための技法として知られている。
【００９０】
ストライピングを行うために連続データを複数のブロックに分割する場合、分割の単位のとり方には種々の方式がある。例えば、連続データを一定の大きさに分割する方式、その場合に分割の単位をデータ記憶装置に用いるディスク装置等の読み出しの単位となる大きさに合わせる方式、音声や映像などの連続データを再生した場合に一定の再生時間になるような単位で分割する方式、連続データがＭＰＥＧのデータ構造を持つ場合にＧＯＰなどＭＰＥＧのデータ構造として意味のある切れ目で分割する方式など様々のものがある。
【００９１】
なお、図２では、図３に示した１つの連続データをデータ記憶装置にストライピングを行って記憶する例を示しているが、実際には、連続データサーバ装置内に、図２と同様の方法で、複数の連続データをデータ記憶装置２にブロック単位で記憶することができる。
【００９２】
以下、図２のような構成を有する連続データサーバ装置に対しネットワーク等を介して図３に示した連続データへのアクセス要求が与えられ、この要求が中央制御装置１０に伝えられた場合の動作を、１つの連続データへのアクセス要求について説明する。このときの中央制御装置１０の動作の流れを図４のフローチャートに示す。
【００９３】
なお、Ｂ１、Ｂ２、Ｂ３、Ｂ４のように同時に扱うブロックの集まりを、ブロックグループと呼ぶ。また、各バッファ記憶装置８−１〜８−８中で図２のようにダブルバッファとして使う２つのバッファ領域をバッファａ、バッファｂと呼ぶ。
【００９４】
まず、中央制御装置１０は、アクセス要求のあった連続データを先頭のブロックから読み出すようにデータ記憶制御装置４−１〜４−４に指示する（ステップＳ１）。すなわち、データ記憶制御装置４−１〜４−４に対し、それぞれの先頭のブロックＢ１、Ｂ２、Ｂ３、Ｂ４を読み出してバッファ記憶装置８−１〜８−４の指定した番地（バッファａ）に書き込むように指示する。
【００９５】
各データ記憶制御装置４−１〜４−４の読み出し処理が終了すると、図５に示すようにバッファ記憶装置８−１〜８−４に連続データのブロックＢ１、Ｂ２、Ｂ３、Ｂ４がそれぞれ書き込まれる。
【００９６】
ブロックＢ１、Ｂ２、Ｂ３、Ｂ４がバッファ記憶装置８−１〜８−４に書き込まれると、中央制御装置１０は、バッファ記憶装置８−１〜８−４に書き込まれたＢ１からＢ４まで順に通信制御装置６−１に送り出すよう指示を出す（ステップＳ３）。
【００９７】
通信制御装置６−１は、指示されたバッファ記憶装置８−１〜８−４に書き込まれているデータを、指示された転送先に対して送信する。通信制御装置６が、イーサネットのようなネットワークの場合は、ブロックの内容をパケットにして指示されたアドレスへ送り出す。通信制御装置６が、ケーブルテレビ同軸ケーブルのような場合は、指示されたデータを定められた転送レートで順に送り出す。
【００９８】
さて、通信制御装置６−１がＢ１、Ｂ２、Ｂ３、Ｂ４の順に送り出している間に、中央制御装置１０は、データ記憶制御装置４−１〜４−４に対し、それぞれの次のブロックＢ５、Ｂ６、Ｂ７、Ｂ８を読み出してバッファ記憶装置８−１〜８−４の指定した（先程とは別の）番地（バッファｂ）に書き込むように指示する（ステップＳ４）。
【００９９】
この読み出しが終了すると、各バッファ記憶装置８−１〜８−４の内容は図６のようになる。
【０１００】
通信制御装置６−１によるＢ１、Ｂ２、Ｂ３、Ｂ４の送り出しが終了すると、中央制御装置１０は、通信制御装置６−１に対して、バッファ記憶装置８−１〜８−４に書き込まれている次のブロックグループをＢ５からＢ８まで順に送り出すように指示を出す（ステップＳ７）。
【０１０１】
通信制御装置６−１がＢ５、Ｂ６、Ｂ７、Ｂ８を送り出している間に、中央制御装置１０は、データ記憶制御装置４−１〜４−４に対して、それぞれの次のブロックＢ９、Ｂ１０、Ｂ１１、Ｂ１２を読み出すように指示する（ステップＳ８）。
【０１０２】
ブロックＢ９、Ｂ１０、Ｂ１１、Ｂ１２の読み出しが終了すると、バッファ記憶装置８−１〜８−４の内容は図７のようになる。
【０１０３】
そして、これ以降、上記したような動作が、連続データの送り出し完了まで繰り返して行われる。
【０１０４】
以上は、説明を簡潔にするために、１ユーザからの要求に対する応答について、その手順を追って行ったものであり、１つのデータ記憶制御装置２は１つの連続データについての読み出しだけを行い、１つのバッファ記憶装置８は１つの連続データのブロックのみを記憶し、１つの通信制御装置６は１つの連続データの送り出しのみを行う場合について説明した。しかし、本実施形態の連続データサーバ装置は、複数のユーザからの要求に同時に応答することが可能であり、１つのデータ記憶制御装置２が複数の連続データについての読み出しを同時に行なうことができ、１つの通信制御装置６が複数の連続データのブロックの送り出しを同時に担当できるようにし、あるいは各バッファ記憶装置８が複数の連続データのブロックを同時に記憶できるように、中央制御装置１０が全体のデータの流れを制御することで容易に実現できる。
【０１０５】
次に、バッファ管理方式について説明する。
【０１０６】
図２の連続データサーバ装置では、データ記憶制御装置４と通信制御装置６の間のバッファ記憶装置８は、図８に示すような管理方式を用いた。すなわち、図８において、通信制御装置６−１がバッファ記憶装置８−１〜８−４上のａ側の領域Ｒ１、Ｒ２、Ｒ３、Ｒ４からデータを読み出して送り出している間に、データ記憶制御装置４−１〜４−４は、バッファ記憶装置８−１〜８−４上のｂ側の領域Ｒ５、Ｒ６、Ｒ７、Ｒ８にデータを書き込む。通信制御装置６−１がバッファ記憶装置８−１〜８−４上のａ側の領域Ｒ１、Ｒ２、Ｒ３、Ｒ４のデータの送り出しを完了すると、バッファ記憶装置８−１〜８−４上の領域Ｒ１、Ｒ２、Ｒ３、Ｒ４と領域Ｒ５、Ｒ６、Ｒ７、Ｒ８の役割は入れ替わり、データ記憶制御装置４−１〜４−４は、バッファ記憶装置８−１〜８−４上のａ側の領域Ｒ１、Ｒ２、Ｒ３、Ｒ４にデータを書き込み、通信制御装置６−１はバッファ記憶装置８−１〜８−４上のｂ側の領域Ｒ５、Ｒ６、Ｒ７、Ｒ８からデータを読み出して送り出す。
【０１０７】
このようなバッファ管理方式は、データ記憶制御装置４−１〜４−４の間でＲＡＩＤの技法を行なう場合に有効である。ＲＡＩＤ技法は、ストライピング技法を利用し、ディスク装置の故障に対処できるようにしたものであり、ｎ台のディスク装置にストライピングを行っている場合、ｎ台のディスクに記憶したデータの排他的論理和をとり、その値をパリティとしてｎ＋１台目のディスクに記憶することにより、ｎ＋１台のディスク装置の内の１台が故障した場合でも、他のディスク装置のデータの排他的論理和を計算することで復旧できるものである。
【０１０８】
一方、複数のデータ記憶制御装置４の間でＲＡＩＤを行わない場合は、図９に示すようなより単純なバッファ管理方式を用いることができる。すなわち、通信制御装置６−１がバッファ記憶装置８−１上の領域Ｒ１からデータの送り出しを行っている間に、データ記憶制御装置４−２はバッファ記憶装置８−２上の領域Ｒ２にデータの読み込みを行う。通信制御装置６−１がバッファ記憶装置８−２上の領域Ｒ２からデータの送り出しを行っている間に、データ記憶制御装置４−３はバッファ記憶装置８−３上の領域Ｒ３にデータの読み込みを行う。同様に、通信制御装置６−１がバッファ記憶装置８−３上の領域Ｒ３からデータの送り出しを行っている間に、データ記憶制御装置４−４はバッファ記憶装置８−４上の領域Ｒ４にデータの読み込みを行う。このような操作を、以降同様に繰返して行く。
【０１０９】
また、ＲＡＩＤを行う場合には、図１０に示すようなバッファ管理を行うこともできる。図１０では、データ記憶制御装置４−１〜４−４が１つのＲＡＩＤのグループを組み、さらにデータ記憶装置４−５〜４−８が別のＲＡＩＤのグループを組んでいるものとする。このとき、通信制御装置６−１がバッファ記憶装置８−１〜８−４の領域Ｒ１、Ｒ２、Ｒ３、Ｒ４からデータを送り出ししている間に、データ記憶装置４−５〜４−８は、バッファ記憶装置８−５〜８−８の領域Ｒ５、Ｒ６、Ｒ７、Ｒ８にデータの読み込みを行う。領域Ｒ１、Ｒ２、Ｒ３、Ｒ４からのデータの送り出しが完了すると、今度は逆に、通信制御装置６−１がバッファ記憶装置８−５〜８−８の領域Ｒ５、Ｒ６、Ｒ７、Ｒ８からデータを送り出している間に、データ記憶装置４−１〜４−４は、バッファ記憶装置８−１〜８−４の領域Ｒ１、Ｒ２、Ｒ３、Ｒ４にデータの読み込みを行う。
【０１１０】
以上のように、本実施形態の連続データサーバ装置では、すべてのデータ記憶制御装置と通信制御装置の組に対して、その間のデータの受け渡し専用のバッファ記憶装置を設けたので、データ記憶制御装置とバッファ記憶装置の間のデータパスおよびバッファ記憶装置と通信制御装置の間のデータパスの多重度を上げることができ、連続データへの同時アクセスユーザ数を増加させることが可能になる。
【０１１１】
各データ記憶制御装置と各通信制御装置をそれらがアクセスする必要のあるバッファ記憶装置のみと接続するようにすれば、各データパスが専用にバスを使用できるのでより効果的である。
【０１１２】
従来、本実施形態と同様の転送能力を得ようとする場合、同一の連続データを多数のデータ記憶装置に記憶させたり、クロスバスイッチやＡＴＭのような高価なスイッチやネットワークを使ったりしなければならず、非常にコストがかかった。一方、本実施形態によれば、各データ記憶制御装置と各通信制御装置に対してバッファ記憶装置をマトリクス状に結合するだけなので、特殊なスイッチやネットワークを必要とせず、連続データのコピーを持つ必要もなくなる。また、従来のように例えばクロスバスイッチを用いて複数のデータ記憶制御装置とバッファ記憶装置を接続する場合、同時に複数のデータ記憶制御装置からバッファ記憶装置への書き込みを調停する回路が必要であったが、本実施形態では、バッファ記憶装置がその機能を果たしてくれるので、調停回路を設ける必要はない。そのため、従来より小さいコストで同時に多数の連続データの送り出しを行う連続データサーバ装置を構成することができる。
【０１１３】
また、各バッファ記憶装置はひとつのデータ記憶制御装置とひとつの通信制御装置に接続されるため、バッファ記憶装置へのアクセスに対するアービトレーションは非常に簡単になる利点がある。
【０１１４】
また、連続データを複数のデータ記憶制御装置の管理するデータ記憶装置にストライピングして記憶している場合、ストライピングを行っている連続データをバッファ記憶装置を介してひとつの通信制御装置に集める必要があるが、本実施形態の連続データサーバ装置では、バッファ記憶装置は単にバッファ記憶としての働きだけではなく、データ記憶制御装置と通信制御装置の間を接続するクロスバスイッチとしての役割を果たしている。
【０１１５】
次に、図１の連続データサーバ装置の構成を拡張した例を図１１に示す。
【０１１６】
ここで、図１に示した構成は、ｍ台のバッファ記憶装置８とデータ記憶制御装置４を接続するバス２０には、データ記憶制御装置４を１台だけ接続し、ｎ台のバッファ記憶装置８と通信制御装置６を接続するバス２１には、通信制御装置６を１台だけ接続するものであったが、本発明は、複数のデータ記憶制御装置４によりバス２０を共有した場合にも適用可能である。あるいは、複数の通信制御装置６によりバス２１を共有しても構わない。また、複数のデータ記憶制御装置４によりバス２０を共有するとともに、複数の通信制御装置６によりバス２１を共有する構成も可能である。そのような構成例を図１１に示す。なお、図１１では、全バスについて同じ共有の仕方をしているが、バスごとに、接続するデータ記憶制御装置４や通信制御装置６の台数を適宜設定して構わない。また、ｎ個の記憶制御装置とｍ個の通信制御装置から専用に用いられるバッファと、ｌ個の記憶制御装置（ｌ≠ｎ）とｋ個の通信制御装置（ｋ≠ｍ）から専用に用いられるバッファが混在しても良い。
【０１１７】
この例の場合、中央制御装置１０ａは、前述した中央制御装置１０と同様の機能である。バス２０は、それに接続されたデータ記憶制御装置４同士の間でアクセスの競合が発生した場合の調停を行なう機能を持つ。２１は、それに接続された通信制御装置６同士の間でアクセスの競合が発生した場合の調停を行う機能を持つ。
【０１１８】
次に、図１１の連続データサーバ装置の構成をさらに拡張した例を図１２に示す。
【０１１９】
この連続データサーバ装置では、データ記憶制御装置４とバッファ記憶装置８を接続しているバス２０を複数本束ね、それらをセレクタ２３を介して１つのバッファ記憶装置８に接続するようにしている。セレクタ２３は、データ記憶制御装置４の接続されている複数のバス２０からのバッファ記憶装置８に対するアクセスリクエストを調停するために、ある時点で１つのバスを選択的にバッファ記憶装置８に接続する機能を持つ。これにより、データ記憶制御装置４の接続されている複数のバス２０が１つのバッファ記憶装置８を共有することができる。
【０１２０】
バッファ記憶装置８上のバッファ領域は、複数のストリーム間で共有して使い回すこともできるし、各ストリームにバッファ領域を固定的に割り付けて使用することもできる。異なるストリーム間でバッファ領域を使い回す場合、各ストリームがバッファ領域の使用を開始してから終了するまでの時間をストリーム間で重ならないようにスクジューリングしなければならないが、１つのストリームが同じバッファ領域を占有できる場合はこのスケジューリングが非常に単純になる。そのため、バッファ管理の観点からは、同じストリーム間でバッファ記憶装置８上のバッファ領域を使い回すことが望ましい。しかし、これを実現するためには、データ記憶制御装置４とバッファ記憶装置８とを接続するバス２０が増加すれば、それに比例してバッファ記憶装置８の容量も増やす必要がある。そこで、図１２のように、複数のバス間でバッファ記憶装置８を共有することで、バッファ記憶装置８の容量の増加を防ぐことが可能になる。
【０１２１】
なお、データパス２１には通信制御装置６を１台だけ接続するようにしても良いし、複数の通信制御装置６によりデータパス２１を共有しても構わない。データパス２０にはデータ記憶制御装置４を１台だけ接続するようにしても良いし、複数のデータ記憶制御装置４によりデータパス２０を共有しても構わない。また、ｎ個の記憶制御装置とｍ個の通信制御装置から専用に用いられるバッファ記憶装置と、ｌ個の記憶制御装置（ｌ≠ｎ）とｋ個の通信制御装置（ｋ≠ｍ）から専用に用いられるバッファ記憶装置が混在しても良い。
【０１２２】
この例の場合、中央制御装置１０ｂは、前述した中央制御装置１０と同様の機能である。
【０１２３】
次に、バッファ記憶装置８の構成について説明する。
【０１２４】
バッファ記憶装置８は、データ記憶制御装置４によるデータ書き込みに使用されるポートと、通信制御装置６によるデータ読み出しに使用されるポートを持つメモリである。
【０１２５】
バッファ記憶装置８としては、２ポートメモリを用いることができる。例えば図１３に示すように、２ポートメモリ３０は、データ記憶制御装置４が書き込むためのアドレスおよびデータを指定する端子と必要に応じて書き込みやチップセレクト等の制御端子を持つとともに、通信制御装置６が読み出すためのアドレスおよびデータ端子と必要に応じてチップセレクト等の制御端子を持つ。
【０１２６】
２ポートメモリは、書き込みポートと読み出しポートを１つずつ持つものであるので、例えば広く使われている２つの読み出し書き込み兼用ポートを持つ２ポートメモリを利用し、一方は書き込み専用、もう一方は読み出し専用にして使うことで、２ポートメモリと同等の働きをさせることは容易である。
【０１２７】
また、２ポートメモリの構成方法には他にもさまざまな手法を用いることができる。
【０１２８】
例えば、図１４は、通常の１ポートのメモリを使って２ポートメモリを構成する方式を示している。データ記憶制御装置からの書き込み要求と通信制御装置からの読み出し要求はメモリコントローラ７０が調停してどちらかをメモリ７１に指示する。２つのアクセス要求がぶつかった場合は一方を待たせる。
【０１２９】
図１５は、通常の１ポートのメモリを２つ使って２ポートメモリを構成するものであり、基本的には図１４の例と同様に、データ記憶制御装置からの書き込み要求と通信制御装置からの読み出し要求はメモリコントローラ８０が調停してどちらかをメモリ８１やメモリ８２に指示する。２つのアクセス要求がぶつかった場合は一方を待たせる点も同様である。しかし、ここでは２つメモリ８１，８２を使い、一方が使用中でも他方に対するアクセス要求であれば同時にアクセスできるので、同時に発生した２つのアクセス要求がぶつかって一方が待たされる確率を減らすことができる。
【０１３０】
もちろん、図１３、図１４、図１５に示したような２ポートメモリは、通常のメモリと同様に、それらをマルチバンクにしてインタリーブすることで、読み出しや書き込みの速度を向上させることができる。
【０１３１】
ここで、図１６に、２ポートメモリ３０をバッファ記憶装置として用いた例を示す。ただし、図中、データ記憶装置２と中央制御装置１０を省略してある。図中の２ポートメモリ３０のブロック内に記した符号Ｍｉ，ｊ  （ｉ＝１〜ｎ、ｊ＝１〜ｍ）は、当該２ポートメモリ３０がデータ記憶制御装置４−ｉと通信制御装置６−ｊに専用に接続されていることを表している。
【０１３２】
データ記憶制御装置４−ｉからは、バッファ記憶装置Ｍｉ，１  、Ｍｉ，２  、…、Ｍｉ，ｍ  に対して書き込みができる。このとき、データ記憶装置４−ｉから見たアドレス空間は、例えば図１７のように、Ｍｉ，１  、Ｍｉ，２  、…、Ｍｉ，ｍ  が適当な番地にマッピングされるように構成することができる。
【０１３３】
一方、通信制御装置６−ｊからはバッファ記憶装置Ｍ１，ｊ  、Ｍ２，ｊ  、…、Ｍｎ，ｊ  に対して読み出しができる。このとき、通信制御装置ｊから見たアドレス空間は、例えば図１８のように、Ｍ１，ｊ  、Ｍ２，ｊ  、…、Ｍｎ，ｊ  が適当な番地にマッピングされるように構成することができる。
【０１３４】
次に、図１９に示すような２ポートメモリ３０ａを用いた場合のバッファ記憶装置の構成方式について詳しく説明する。図１９の２ポートメモリ３０ａは、データ記憶制御装置４からの書き込みのためにアドレス端子Ａｉｎ、データ端子Ｄｉｎ、書き込み信号端子Ｗを持つとともに、通信制御装置６からの読み出しのためにアドレス端子Ａｏｕｔ、データ端子Ｄｏｕｔを持つものとする。Ａｉｎ、Ｄｉｎ、Ａｏｕｔ、Ｄｏｕｔは、実際には、複数のビット幅を持つ。
【０１３５】
図２０に、データ記憶制御装置とバッファ記憶装置の接続例を示す。これは、図１６の構成の一部分を抜き出して示したものに相当する。
【０１３６】
図１９の２ポートメモリ３０ａを用いたバッファ記憶装置を示してあり、２ポートメモリＭｉ，１  、Ｍｉ，２  、Ｍｉ，３  は、図示しないデータ記憶制御装置４−ｉと図示しない３つの通信制御装置６−１，６−２，６−３の各組に対して設けられたものである。図中、３６〜３８は、ＡＮＤ回路である。
【０１３７】
このような構成において、アドレスの上位をデコーダ３２によりデコードして２ポートメモリＭｉ，１  、Ｍｉ，２  、Ｍｉ，３  を異なるアドレスに対応させ、それぞれの２ポートメモリＭｉ，１  、Ｍｉ，２  、Ｍｉ，３  のマッピングされたアドレスに対して書き込み信号がアクティブになったときのみ、対応する２ポートメモリのＷ端子がアクティブになり書き込みが行われる。
【０１３８】
図２１に、通信制御装置とバッファ記憶装置の接続例を示す。これは、図１６の構成の一部分を抜き出して示したものに相当する。
【０１３９】
図１９の２ポートメモリ３０ａを用いたバッファ記憶装置を示してあり、２ポートメモリＭ１，ｊ  、Ｍ２，ｊ  、Ｍ３，ｊ  、Ｍ４，ｊ  は、図示しない４つのデータ記憶制御装置４−１，４−２，４−３，４−４と図示しない通信制御装置６−ｊの各組に対して設けられたものである。図中、４５〜４８は、ゲート回路である。
【０１４０】
このような構成において、アドレスの上位をデコーダ４０によりデコードして、２ポートメモリＭ１，ｊ  、Ｍ２，ｊ  、Ｍ３，ｊ  、Ｍ４，ｊ  がマッピングされているアドレスが選ばれた時に、その２ポートメモリからのデータを通信制御装置６−ｊに送る。
【０１４１】
上記のような構成を有する連続データサーバ装置でＲＡＩＤを行う場合には、通信制御装置とバッファ記憶装置の接続を工夫することでパリティの計算を自動的に行うことができる。図２２は、これを実現する接続方式の例を示している。
【０１４２】
この例は、図２１の構成に、２入力の排他的論理和回路５０〜５３、ＡＮＤ回路５４〜５７、４入力の排他的論理和回路５８を設けただけであり、非常に簡易な構成である。ここでは、２ポートメモリＭ１，ｊ  、Ｍ２，ｊ  、Ｍ３，ｊ  、Ｍ４，ｊ  には、ブロックＢ１、Ｂ２、Ｂ３、Ｂ４が書き込まれており、このうちのひとつがパリティであるとする。例えば、Ｂ４がパリティであり、Ｂ４の内容は、Ｂ１、Ｂ２、Ｂ３のデータの排他的論理和であるとする。
【０１４３】
さて、信号Ｅ１、Ｅ２、Ｅ３、Ｅ４は、それぞれのデータ記憶制御装置４−１〜４−４あるいはそれらに接続されているデータ記憶装置２の故障によってデータが正しくないことを示す障害発生検出信号であるとする。この障害発生検出信号Ｅ１、Ｅ２、Ｅ３、Ｅ４は、例えば、中央制御装置１０がいずれかのデータ記憶装置２あるいはデータ記憶制御装置４等の障害の発生を検出したときに対応する信号をアクティブにする実現方式や、データ記憶制御装置４が正しく動作できないと判断したときに自ら障害発生検出信号をアクティブにする方式、データ記憶制御装置４からバッファ記憶装置８への書き込みを監視していて一定時間以上あるいは前回の読み出し以降書き込みが無ければ障害が発生したと判断して障害発生検出信号をアクティブにする方式などを用いることができる。
【０１４４】
図２２の回路では、すべての障害発生検出信号Ｅ１、Ｅ２、Ｅ３、Ｅ４がアクティブでない場合は、図２１と同様に２ポートメモリからの出力データをそのまま（すなわちパリティであるＢ４を除いてＢ１〜Ｂ３の順に）通信制御装置６−ｊに渡す。しかし、読み出そうとしている１つの２ポートメモリ（例えばＭ１，ｊ  ）に対応する障害発生検出信号がアクティブな場合には、読み出そうとする２ポートメモリ以外のすべての２ポートメモリ（例えばＭ２，ｊ  、Ｍ３，ｊ  、Ｍ４，ｊ  ）のデータの排他的論理和をデータとして通信制御装置に渡す。すなわち、この段階で正しくないデータをパリティを使って回復させている。
【０１４５】
このような単純なパリティは、同時にひとつの障害が発生した場合にしか対応できないが、より高度な誤り訂正能力を持つ符号化方式を使うと、同時に複数の誤りがある場合にも対応できるのは明らかである。
【０１４６】
次に、バッファ記憶装置にＶＲＡＭを使った例について説明する。
【０１４７】
バッファ記憶装置には、図２３に示すようなＶＲＡＭと呼ばれるメモリ素子を用いることもできる。ＶＲＡＭ９０は、パラレルの書き込みポート（読み出しができるものもある）とシリアルの読み出しポートを持つ２ポートメモリである。図２３に示すように、ＶＲＡＭ９０を、パラレルのポートをデータ記憶制御装置４からの書き込み用に、シリアルのポートを通信制御装置６からの読み出し用に使う。各ＶＲＡＭからのシリアル出力は、図２４に示すように、通信制御装置６に接続し、通信制御装置６は必要なＶＲＡＭからのデータを選択して送り出すようにすれば、前述してきたようなバッファ記憶装置に２ポートメモリを使ったものと同様な連続データサーバ装置を構成することができる。
【０１４８】
次に、複数の既存の計算機を用いて本実施形態の連続データサーバ装置を実現した例について説明する。そのような連続データサーバ装置の構成の一例を図２５に示す。
【０１４９】
この例では、計算機Ａが中央制御装置１０の働きをし、計算機Ｂ１、Ｂ２、…、Ｂｎがデータ記憶制御装置４−１〜４−ｎの働きをし、計算機Ｂ１、Ｂ２、…、ＢｎにＳＣＳＩバス１００などのインタフェースで接続した磁気ディスクがデータ記憶装置２の働きをし、計算機Ｃ１、Ｃ２、…、Ｃｍが通信制御装置４−１〜４−ｎの働きをし、計算機Ｃ１、Ｃ２、…、Ｃｍの持つＡＴＭインタフェースによって連続データの送り出しを行う。
【０１５０】
バッファ記憶装置８には、２ポートメモリを用い、各２ポートメモリは対応する計算機Ｂｉと計算機Ｃｊのパス上に配置する。中央制御装置１０の働きをする計算機Ａは、イーサネットなどのバス１０１によって計算機Ｂ１、Ｂ２、…、Ｂｎ、Ｃ１、Ｃ２、…、Ｃｍに動作を指示する。
【０１５１】
本実施形態は、連続データを複数のデータ記憶装置２にストライピングやさらにＲＡＩＤを行って記憶させた場合に有効であるが、ストライピングを行わない場合においてもデータ記憶制御装置４から通信制御装置６へ至るデータパスのデータ転送能力を大きくできるので有効である。
【０１５２】
なお、バッファ記憶装置８にＶＲＡＭを用いる場合、前述した図２４に示すように各ＶＲＡＭからのシリアル出力を通信制御装置６に接続し、通信制御装置６は必要なＶＲＡＭからのデータを選択して送り出すようにすれば良い。
【０１５３】
バッファ記憶装置８に対して、データ記憶制御装置４と通信制御装置６の両方から読み書き可能にしておくことで、ネットワークから来たデータを通信制御装置６が受けてバッファ記憶装置８に書き込み、それをデータ記憶制御装置４が読み出してデータ記憶装置２に書き込むことが可能である。
【０１５４】
さて、以下では、複数のディスク装置に一連のデータを所定の単位（例えばブロック単位）で分散して格納しておき、必要時に該一連のデータを該所定の単位で各ディスク装置から読出すようなシステムにおけるディスク装置のエラーに対処するためにＲＡＩＤを取り入れた実施形態について説明する。
【０１５５】
前にも触れたように、ディスク装置のエラーを訂正する方法としてＲＡＩＤが知られている（例えば、´Ａ  Ｃａｓｅ  ｆｏｒ  Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ（ＲＡＩＤ）´，Ｄａｖｉｄ  Ａ．  Ｐａｔｔｅｒｓｏｎ，  Ｇａｒｔｈ  Ｇｉｂｓｏｎ，  ａｎｄ  Ｒａｎｄｙ  Ｈ．  Ｋａｔｚ，  ＡＣＭ  ＳＩＧＭＯＤ  Ｄｅｃ．´８８  ｖｏｌ．１７  Ｎｏ．３  ｐｐ．１０９−１１６）。ＲＡＩＤは、冗長符合化を用いて複数のディスク装置に符合化したデータを分散して配置し、ディスク装置の故障があった場合に元の情報を復元するための技術である。符合化したデータを用いて元の情報を復元するためには、各ディスクの内容の排他的論理和あるいは排他的論理積をとることにより復元される。
【０１５６】
ＲＡＩＤを実施するために排他的論理和等をとる方法としては、（１）プロセッサを用いて行なう方法と、（２）故障またはエラー検出された場合、ディスクからのデータを排他的論理和回路等に並列に入力し、高速に正しい解を求める方法とがある。
【０１５７】
本実施形態では、プロセッサを用いる方法と異なり実行中プロセッサの仕事を妨げるおそれがなく、また並列に排他的論理和等をとる回路を用いる方法と異なり配線の集中や回路の複雑化を引き起こさないようにするために、専用のハードウェアの構成を工夫したものである。
【０１５８】
以下、そのような２つの実施形態について説明する。なお、以下では、パリティとして排他的論理和を用いる構成について説明するが、言うまでもなく排他的論理積を取る構成することも容易に実施可能である。
【０１５９】
まず、ディスクの故障の訂正を高速に行なうための装置を少ないハードウェア構成で実現した実施形態について図２６〜図３２を参照しながら説明する。
【０１６０】
本実施形態では、まず、ある情報についてＲＡＩＤのために用いるディスク装置の接続口の数（例えば図１、図２のデータ記憶制御装置４あるいは図２６のディスク制御部１０４の台数に相当；図２では４、図２６では５）をｎ＋１とすると、格納する情報をｎのグループに分割する。グルーピングにあたっては、情報は固定されたデータ長のブロックに分割される。
【０１６１】
ｎ個のグループの各々から同時に読み出すブロックを１個ずつ合計ｎ個取り出して組にする。同一組のｎ個に対して排他的論理和をとった結果を新たなブロックとして合計ｎ＋１個のブロックで組とする。ｎ＋１個のブロックをそれぞれ接続口につながるｎ＋１台のディスク装置のいずれかに格納してＲＡＩＤの組とする。
【０１６２】
ｎ＋１台のディスク装置が接続される接続口には、それぞれ対応するバッファメモリが存在し、対応関係にある接続口とバッファメモリとの間にはそれぞれ専用のハードウェアである演算部を接続するとともに、ｎ＋１台の演算部は上下に直列に接続されるように結合する。
【０１６３】
ここで、あるディスク装置に故障またはエラーが検出された場合、接続口から入力され対応するバッファメモリに格納されるデータにはエラーがあると考えられる。従って、そのディスク装置に対応するバッファメモリを読み出す場合には、該バッファメモリの内容は正しくないと考えられるので、対応する演算部は、当該バッファメモリからデータを読み出す代わりに前段の演算部の出力をそのまま出力し、他の演算部は前段の演算部の出力と対応するバッファメモリを読みだした値との排他的論理和を出力する。各バッファメモリの内容はＲＡＩＤの組をなしているので、演算部によって計算された、故障またはエラーに対応するバッファメモリ以外のバッファメモリの内容の排他的論理和が、正しい値として出力される。
【０１６４】
故障またはエラーのない正常なディスク装置に対応するバッファメモリを読み出す場合には、対応する演算部は、当該バッファメモリからデータを読み出して後段に渡し、他の演算部は前段の演算部の出力をそのまま出力する。これにより、ディスク装置の接続される接続口から故障またはエラーのデータが入力されない場合には、所望のバッファメモリから読みだした値を出力させることができる。
【０１６５】
以上のように、データに誤りがある場合は、演算部により正しいデータを出力し、データに誤りがない場合は、演算部をバイパスすることにより正しいデータを得ることができる。
【０１６６】
次に、本実施形態をより詳しく説明する。
【０１６７】
図２６は、本実施形態に係るシステムの全体構成である。また、図２７に、システム全体をコントロールする中央制御部１１０の制御の流れを示す。
【０１６８】
図２６に示すように、本システムは、ＲＡＩＤの組をなすデータを記憶するディスク装置１０２から所望の連続データを読み出す複数のディスク制御部１０４と、各ディスク制御部１０４によって読み出されたデータを保持するために、各ディスク制御部１０４に対応して設けられた複数のバッファメモリ１０８と、各バッファメモリ１０８のメモリコントローラ１０７と、各ディスク制御部１０４とメモリコントローラ１０７およびバッファメモリ１０８との間に接続された演算部１０３と、システム全体をコントロールする中央制御部１１０とを備えているとともに、演算部１０３は直列に接続している。また、演算部１０３は、排他的論理和演算回路１６１、マルチプレクサ１６２、デコード部１６３から構成される。
【０１６９】
図２６では、４つのディスクに対して１つのパリティを備えるシステムを示しているが、パリティの比は自由であり、例えば８つのディスクに対して１つのパリティを備えるなど種々の構成が可能である。
【０１７０】
ディスク制御部１０４の接続口には、ディスク装置１０２を複数台数接続することが可能である。例えば、ディスクインタフェースとしてＳＣＳＩを使用すれば７つのデバイスまでを一本のＳＣＳＩに接続することが可能である。また、ディスク制御部１０４に複数のＳＣＳＩを接続することで、さらに多数のディスク装置１０２を接続することも可能である。
【０１７１】
メモリコントローラ１０７は、ディスク装置１０２からのデータをバッファメモリ１０８の指定されたアドレスに格納するとともに、バッファメモリ１０８の指定されたアドレスから読出したデータを演算部１０３に与えるためのものである。
【０１７２】
ディスク制御部１０４は、メモリコントローラ１０７を介してバッファメモリ１０８にデータを転送する。
【０１７３】
中央制御部１１０は、要求されたデータの存在するディスク装置１０２のつながるディスク制御部１０４に命令を送るとともに、ＲＡＩＤの組になる情報の蓄積されているディスク装置１０２からＲＡＩＤの組になる情報を読み出すために対応するディスク制御部１０４に命令を送る。
【０１７４】
また、中央制御部１１０は、ＲＡＩＤの組になる情報がバッファメモリ１０８に全て揃うのを待ち、ＲＡＩＤの組になる情報が全て揃ったらバッファメモリ１０８から読みだし動作を始める。
【０１７５】
中央制御部１１０は、バッファメモリ１０８を読み出すとき、要求に基づき、必要な情報が蓄積されている各ディスク装置１０２の接続される接続口に対応する各バッファメモリ１０８に対するＤＥＣＯＤＥ＿Ｘ信号を１つづつ順次アクティブにしていく。
【０１７６】
ディスク制御部１０４は、中央制御部１１０から指示された命令に基づきディスク装置１０２の制御を行なうとともに、ディスク装置１０２の故障またはエラーが検出された場合は、ＥＲＲＯＲ＿Ｘ信号を中央制御部１１０に対して送り知らせる。
【０１７７】
なお、ディスク装置１０２からの読み出しの応答が規定時間内に終らない場合には、ディスク装置１０２のエラーとみなして同様にＥＲＲＯＲ＿Ｘ信号を中央制御部１１０に対して送り、他のディスクの情報から規定時間内に終らなかったディスク装置１０２の内容を復元するようにしても良い。
【０１７８】
また、ディスク制御部１０４が自分の故障を検出した場合もディスク装置１０２のエラーとみなして、同様にＥＲＲＯＲ＿Ｘ信号を中央制御部１１０に対して送り知らせても良い。
【０１７９】
ＥＲＲＯＲ＿Ｘ信号は、ディスク制御部１０４それぞれに対して用意され（図２６中のＥＲＲＯＲ＿０〜ＥＲＲＯＲ＿４）、どのディスクの接続口に故障またはエラーが発生したか識別できる。
【０１８０】
図２８には、ＥＲＲＯＲ＿Ｘ信号およびＤＥＣＯＤＥ＿Ｘ信号からＨＩＴＡＮＹ信号を生成する回路を示す。図２８のように、この回路は、ＥＲＲＯＲ＿Ｘ信号およびＤＥＣＯＤＥ＿Ｘ信号を入力とするＡＮＤ回路１８１〜１８２と、全ＡＮＤ回路の出力を入力とするＯＲ回路１８６からなる。
【０１８１】
ＨＩＴＡＮＹ信号は、読み出そうとする情報が蓄積されていたディスク装置１０２に故障またはエラーが起こったことを示す信号で、ＲＡＩＤによる情報の復元が必要なことを示している。
【０１８２】
図２９には、演算部１０３の構成を示す。
【０１８３】
排他的論理和演算回路１３１には、直列に接続された前段の演算部１０３からの出力と、マルチプレクサ１３２からの出力が与えられる。
【０１８４】
マルチプレクサ１３２のＡ入力には０が、もう一方のＢ入力にはメモリコントローラ１０７を介してバッファメモリ１０８の出力が接続され、デコード部１３３からの制御信号により切替えられる。
【０１８５】
Ａ入力に切替えられた場合は、前段の演算部１０３からのデータをそのまま後段に伝えることになる。一方、Ｂ入力に切替えられた場合は、前段の演算部１０３からのデータとバッファメモリ１０８から読出したデータの排他的論理和を演算した結果を後段に伝えることになる。
【０１８６】
デコード部１３３は、ＥＲＲＯＲ＿Ｘ、ＤＥＣＯＤＥ＿Ｘ、ＨＩＴＡＮＹの値に応じてマルチプレクサ１３２を切替えるための制御信号を生成する回路であり、その論理を図３０に示す。
【０１８７】
図３０のケース（１）は、対応するバッファメモリ１０８からデータを読み出すべき場合に、対応するディスク装置１０２に故障またはエラーが検出されたケースであり、Ａ入力に切替えらる。
【０１８８】
ケース（２）は、対応しない他のバッファメモリ１０８からデータを読み出す場合で、自身に対応するディスク装置１０２にも該他のバッファメモリ１０８に対応するディスク装置１０２にも故障またはエラーが検出されていないケースであり、Ａ入力に切替えらる。
【０１８９】
ケース（３）は、対応しない他のバッファメモリ１０８からデータを読み出す場合に、自身に対応するディスク装置１０２には故障またはエラーが検出されず、該他のバッファメモリ１０８に対応するディスク装置１０２に故障またはエラーが検出されたケースであり、Ｂ入力に切替えらる。
【０１９０】
ケース（４）は、対応するバッファメモリ１０８からデータを読み出すべき場合で、対応するディスク装置１０２に故障またはエラーのが検出されていないケースであり、Ｂ入力に切替えらる。
【０１９１】
ケース（５）は、対応しない他のバッファメモリ１０８からデータを読み出す場合で、自身に対応するディスク装置１０２に故障またはエラーが検出されたが、該他のバッファメモリ１０８に対応するディスク装置１０２には故障またはエラーが検出されていないケースであり、Ａ入力に切替えらる。
【０１９２】
図２６のように、演算部１０３の直列に接続された初段は、入力が０に固定されている。一方、演算部１０３の終段は、対応するバッファメモリ１０８から読出したデータまたはＲＡＩＤにより復元したデータが現れる出力端子となる。
【０１９３】
上記のような構成において、中央制御部１１０は、外部からデータ読み出しの要求を受け付けると（ステップＳ１１）、要求されたデータについてＲＡＩＤの組が存在するディスク装置１０２を接続しているディスク制御部１０４に対して該当データをバッファメモリ１０８へ転送するよう転送命令を送る（ステップＳ１２）。転送命令を受けたディスク制御部１０４は、要求されたデータのＲＡＩＤの組になるデータをディスク装置１０２から読出し、対応するバッファメモリ１０８に格納する。
【０１９４】
バッファメモリ１０８へのデータ転送が完了すると（ステップＳ１３）、バッファメモリ１０８からのデータ読出しを行なう（ステップＳ１４）。
【０１９５】
以下、ステップＳ４のバッファメモリ１０８からのデータ読出しについてさらに具体的に説明する。ここでは、図２６中の＃０〜＃３の系統が元のデータであり、＃４の系統がパリティーであるものとする。
【０１９６】
中央制御部１１０は、例えば＃０のバッファメモリ１０８から＃１、＃２、＃３というように、順番にバッファメモリ１０８からのデータ読みだしを行なうよう制御する。
【０１９７】
各バッファメモリ１０８からのデータ読みだしにおいては、中央制御部１１０の指令により各演算部１０３のマルチプレクサ１０３が夫々切替えられ、演算部１０３による演算結果が順次後段に渡され、最終段から結果が出力される。
【０１９８】
例えば、＃０のバッファメモリ１０８からのデータ読みだしを行なう場合を考える。この場合、ＤＥＣＯＤＥ＿０信号を１にし、他のＤＥＣＯＤＥ＿Ｘ信号を０にする。
【０１９９】
ここで、中央制御部１１０は、各ディスク制御部１０４から送られるＥＲＲＯＲ＿Ｘ信号を監視しており、この情報が各演算部１０３の切替えに用いられる。
【０２００】
＃０のディスク装置１０２に故障またはエラーが検出されていない場合、ＥＲＲＯＲ＿０信号は０となるので、ＨＩＴＡＮＹ信号は０になる。
【０２０１】
従って、＃０の演算部１０３のデコード部１３３への入力は、ＥＲＲＯＲ＿０信号＝０、ＨＩＴＡＮＹ信号＝０、ＤＥＣＯＤＥ＿０信号＝１となるので、＃０の演算部１０３は上記したケース（４）のように動作し、０とバッファメモリ１０８からのデータの排他的論理和、すなわちバッファメモリ１０８からのデータをそのまま出力する。
【０２０２】
一方、他の系統の演算部１０３のデコード部１３３への入力は、ＥＲＲＯＲ＿Ｘ信号＝０、ＨＩＴＡＮＹ信号＝０、ＤＥＣＯＤＥ＿Ｘ信号＝０となるので、各演算部１０３は上記したケース（２）のように動作し、入力をそのまま通過させる。
【０２０３】
このようにして、＃０バッファメモリ１０８からのデータが出力される。
【０２０４】
一方、＃０のディスク装置１０２に故障またはエラーが検出された場合、ＥＲＲＯＲ＿０信号は１となるので、ＨＩＴＡＮＹ信号は１になる。
【０２０５】
従って、＃０の演算部１０３のデコード部１３３への入力は、ＥＲＲＯＲ＿０信号＝１、ＨＩＴＡＮＹ信号＝１、ＤＥＣＯＤＥ＿０信号＝１となるので、＃０の演算部１０３は上記したケース（１）のように動作し、固定値０を出力する。
【０２０６】
一方、他の系統の演算部１０３のデコード部１３３への入力は、ＥＲＲＯＲ＿Ｘ信号＝０、ＨＩＴＡＮＹ信号＝１、ＤＥＣＯＤＥ＿Ｘ信号＝０となるので、各演算部１０３は上記したケース（３）のように動作し、前段からの入力と対応するバッファメモリ１０８からのデータの排他的論理和を後段に伝える。
【０２０７】
この結果、＃１〜＃４のバッファメモリ１０８からのデータの排他的論理和が得られ、これが＃０の系統の正しいデータとして出力される。
【０２０８】
上記のようにして、＃０の系統のデータから＃４の系統のデータが１つづつ順次読み出される。
【０２０９】
なお、ここでは排他的論理和を演算に用いているが、排他的論理積（排他的論理和の否定）を演算に使用した場合には、初段の演算部１０３および各演算部１０３のマルチプレクサ１３２のＡ入力に固定値として０を入力する代りに、１を入力する。
【０２１０】
上記した実施形態では演算部１０３を組合せ論理として記述しているが、演算部１０３間にパイプラインレジスタを配置することにより、高速なクロックでの動作が可能となる。
【０２１１】
以上の実施形態では、ディスク装置１０２からバッファメモリ１０８の転送と、バッファメモリ１０８からの読み出しを逐次的に行なう方法を説明したが、バッファメモリ１０８がダブルバッファを構成し、ディスク装置１０２からの転送とともにバッファメモリ１０８を読み出すことも可能である。
【０２１２】
また、ディスクの読み出しの一時的なエラーのためにディスク装置１０２がリトライ動作を行ない、アクセスが規定時間内に終らなかった場合に、ディスク制御部１０４はディスク装置１０２のエラーとしてＥＲＲＯＲ＿Ｘ信号を立てて知らせることで、ディスク装置１０２の故障と等価に扱うことも可能である。
【０２１３】
次に、本実施形態の好ましい用途の一つとして、動画を含めたマルチメディアデータのサーバに用いた例について図３１を参照しながら説明する。
【０２１４】
動画をディスク装置１０２にディジタルデータで記録する方法としては、動画を圧縮して記憶するＭＰＥＧなどの方法が知られている。ディスク装置１０２に記録されるデータは、ストライピングを用いて本実施形態のＲＡＩＤの組に記録すれば、バッファメモリ１０８上に読みだしたデータは動画の再生が連続している限り必ず読み出されるので、ディスクの読みだしに関して無駄がない。
【０２１５】
以下、図３１を参照しながらストライピングしたマルチメディアデータの再生を説明する。
【０２１６】
図３１の元データがＭＰＥＧのビデオストリームであるとすると、このデータをディスク装置１０２の読み出しのブロックの単位、例えば１２８ＫＢごとに切ってＲＡＩＤの組とする。この例では、４つに切ってＲＡＩＤの組とする。それぞれのブロックには、４つに切った場合のグループの番号０から３までが対応している。
【０２１７】
ＲＡＩＤの組にするために、パリティのブロックを０から３までのブロックから排他的論理和をとることで作成し、グループ４としておく。
【０２１８】
ディスク装置１０２からバッファメモリ１０８に転送すると、＃０のバッファメモリにはグループ＃０の情報が、＃１のバッファメモリにはグループ１の情報が、＃２のバッファメモリにはグループ２の情報が、＃３のバッファメモリにはグループ３の情報が、＃４のバッファメモリにはパリティ情報が入る。
【０２１９】
これを、＃０のバッファメモリから順に読み出すと、前述した演算部１０３が働いて、読みだしデータは図３１のように０、１、２、３の順に並んだストリームとして再生される。
【０２２０】
次に、本実施形態の好ましい用途の他の例として、ディスクを用いたデータベースサーバについて図３２を参照しながら説明する。なお、図３２中で、ディスクアレイ装置１２０は、図２６のディスク装置１０２を除いた部分に相当する。
【０２２１】
例えば、図３２のように、一つのデータベースをレコードごとに区切ってディスクに分散配置しておく。一般に、ディスクの転送速度はＣＰＵの処理速度より遅いので、ディスクアレイ装置１２０を用いてディスク装置１０２を読み出すと、並列にデータを読み出すことの効果で、より高速なデータベースのアクセスが可能である。
【０２２２】
ディスクアレイ装置１２０の出力にデータベース処理を行なうデータベース処理装置１２１を配置し、検索、選択などのデータベース処理が可能である。
【０２２３】
以上のように本実施形態によれば、ディスクの故障を訂正するための装置が少ないハードウェア構成で可能である。また、ハードウェアで処理を行なうので高速に処理を行なうことができる。
【０２２４】
上記した手法は、図１等を用いて説明した先の実施形態に適用することができる。図１のシステムに適用する場合、ディスク装置１０２がデータ記憶装置２に対応し、ディスク制御部１０４がデータ記憶制御装置４に対応し、中央制御部１１０が中央制御装置１０に対応する。また、図２６に示されているバッファメモリ１０８は、図１の１台の通信制御装置６バッファ記憶装置８に接続されたバッファ記憶装置８に対応する。演算部１０３は、データ記憶制御部４とこれに対応する１または複数のバッファ記憶部８との間にそれぞれ接続する。このように適用した構成例を図４５に示す。
【０２２５】
また、図１１や図１２のシステムに適用する場合、演算部１０３は、１つのバス２０を共有するデータ記憶制御部４の群とこれに対応する１または複数のバッファ記憶部８との間にそれぞれ接続する。
【０２２６】
次に、ディスクに書き込むパリティの生成および故障したディスクを復元するための情報の生成を高速に行なうための装置を少ないハードウェア構成で実現した実施形態について図３３〜図４４を参照しながら説明する。なお、本実施形態は、図２６〜図３２を参照しながら説明した先の実施形態の作用効果を包含するものである。
【０２２７】
本実施形態では、まず、ある情報についてＲＡＩＤのために用いるディスク装置の接続口の数（例えば図１、図２のデータ記憶制御装置４あるいは図３３のディスク制御部２０４の台数に相当；図２では４、図３３では５）をｎ＋１とすると、格納する情報をｎのグループに分割する。グルーピングにあたっては、情報は固定されたデータ長のブロックに分割される。
【０２２８】
ｎ個のグループの各々から同時に読み出すブロックを１個ずつ合計ｎ個取り出し組にする。
【０２２９】
なお、後述するように、本実施形態の専用のハードウェアの働きによって、同一組のｎ個に対して排他的論理和がとられる。この結果を新たなブロックとして合計ｎ＋１個のブロックで組とする。そして、ｎ＋１個のブロックは、それぞれ接続口につながるｎ＋１台のディスク装置のいずれかに格納されＲＡＩＤの組とされる。
【０２３０】
ｎ＋１台のディスク装置が接続される接続口には、それぞれ対応するバッファメモリが存在し、対応関係にある接続口とバッファメモリとの間にはそれぞれ専用のハードウェアである演算部を接続するとともに、ｎ＋１台の演算部は上下に直列に接続されるように結合する。
【０２３１】
上下に直列接続される各演算部は、パリティー生成、データ読み出しおよびパリティーによるデータの復元などを行なうために、
（１）直列に接続された隣接する演算部からのデータを排他的論理和をとりながらバッファメモリに書き込む機能と、
（２）下段からのデータをバッファメモリに書き込みながら上段におくる機能と、
（３）バッファメモリから読みだしたデータと上段の演算部のデータを排他的論理和をとりながら下段の演算部に送る機能と、
（４）バッファメモリから読みだしたデータと下段の演算部のデータを排他的論理和をとりながら上段の演算部に送る機能と、
（５）上段の演算部のデータを下段にバイパスする機能と、
（６）下段の演算部のデータを上段にバイパスする機能と、
（７）ディスク装置の接続する口からバッファメモリに書き込む機能と、
（８）バッファメモリから読み出してディスク装置の接続する口にデータを送り込む機能とを有する。
【０２３２】
各演算部は、必要に応じて上記機能のうちのいずれかを取る。
【０２３３】
ディスク装置にデータを書き込むときには、ｎ−１個のブロックをそれぞれ最上段から順に対応するバッファメモリに書き込む。
【０２３４】
最後にｎ個目のブロックを最下段に書き込むときに、演算部を切替えて、最上段からｎ−１個まではバッファメモリから読みだしたデータと上段からのデータの排他的論理和をとって下段に出力し、最下段は演算部を切替えてバッファメモリに書き込みながらそのデータを上段に送るように設定する。ｎ段目の演算部は、上段と下段のデータの排他的論理和がバッファメモリに書き込まれるように設定する。
【０２３５】
これにより、ｎ段目のバッファメモリにパリティが生成されている。
【０２３６】
次に、ｎ＋１個のバッファメモリに生成されたデータをディスク装置に送る。
【０２３７】
ディスク装置のうち一つが故障した場合は、そのディスクを交換し、故障したディスク装置に入っていたデータを復元する必要がある。
【０２３８】
本実施形態では、データブロックをｎ＋１個の組にしてそれぞれのデータブロックの排他的論理和が０になるように構成しているので、故障したディスク装置内のデータブロックは他のｎ個のデータブロックから復元できる。
【０２３９】
故障したディスク装置を交換したあと、故障していたディスク装置の接続される接続口以外の接続口から対応するバッファメモリに故障していたディスク装置に格納されていたデータブロックと組になるｎ個のデータをそれぞれ読みだし、次に、故障していたディスク装置の接続されていた口より上段の演算部をバッファメモリを読みだした値と上段の演算部の出力の排他的論理和をとって下段に送るように切替え、故障していたディスク装置の接続されていた口より下段の演算部をバッファメモリを読みだした値と下段の演算部の出力の排他的論理和をとって上段に送るように切替え、故障していたディスク装置の接続されていた口に対応する演算部を上段の演算部の出力と、下段の演算部の出力の排他的論理和をとってバッファメモリに書き込まれるように切替える。
【０２４０】
この結果、ｎ＋１個の組の内容は排他的論理和をとると０になるようになるので、故障した部分の復元ができる。
【０２４１】
次に、本実施形態をより詳しく説明する。
【０２４２】
図３３は、本実施形態に係るシステムの全体構成である。
【０２４３】
図２６に示すように、本システムは、ＲＡＩＤの組をなすデータを記憶するディスク装置２０２から所望の連続データを読み出す複数のディスク制御部２０４と、各ディスク制御部２０４によって読み出されたデータを保持するために、各ディスク制御部２０４に対応して設けられた複数のバッファメモリ２０８と、各バッファメモリ２０８のメモリコントローラ２０７と、各ディスク制御部２０４とメモリコントローラ２０７およびバッファメモリ２０８との間に接続された演算部２０３と、システム全体をコントロールする中央制御部２１０とを備えている。また、演算部１０３は、上下に直列に接続されている。
【０２４４】
図３３では、４つのディスクに対して１つのパリティを備えるシステムを示しているが、パリティの比は自由であり、例えば８つのディスクに対して１つのパリティを備えるなど種々の構成が可能である。
【０２４５】
ディスク制御部２０４の接続口には、ディスク装置２０２を複数台数接続することが可能である。例えば、ディスクインタフェースとしてＳＣＳＩを使用すれば７つのデバイスまでを一本のＳＣＳＩに接続することが可能である。また、ディスク制御部２０４に複数のＳＣＳＩを接続することで、さらに多数のディスク装置２０２を接続することも可能である。
【０２４６】
演算部２０３は、Ｕ端子、Ｄ端子、Ｌ端子、Ｒ端子の４つの端子を有し、Ｕ端子およびＤ端子により上下に直列に接続される。
【０２４７】
ディスク制御部２０４には、それぞれ演算部２０３がＬ端子で接続されている。演算部２０３のＲ端子には、それぞれメモリコントローラ２０７を介してバッファメモリ２０８が接続される。
【０２４８】
演算部２０３の最上段のＵ端子は０に固定されている。また、演算部２０３の最下段のＤ端子はデータが入出力される端子である。
【０２４９】
メモリコントローラ２０７は、ディスク装置２０４からのデータをバッファメモリ２０８の指定されたアドレスに格納するとともに、バッファメモリ２０８の指定されたアドレスから読出したデータを演算部２０３に与えるためのものである。
【０２５０】
ディスク制御部２０４は、演算部２０３からメモリコントローラ２０７を介してバッファメモリ２０８にデータを転送する。
【０２５１】
中央制御部２１０は、データ入力の要求、ディスクからの故障信号、ディスク交換が終ったことを示す信号を受け付け、各バッファメモリ２０８に対するデータ書き込みおよびデータ読出しの制御、各演算部２０３の機能の切替え制御、ディスク制御部２０４への命令の出力を行なう。また、ディスクの永久的な故障はその旨を外部に知らせる。
【０２５２】
図３４に、上記（１）〜（８）の機能を有する演算部２０３の内部構成の一例を示す。
【０２５３】
図３４に示すように、演算部２０３は、ゲート回路２９０〜２９３、ＡＮＤ回路２９４，２９９、排他的論理和演算回路（ＥＸＯＲ回路）２９５〜２９７、マルチプレクサ２９８からなる。
【０２５４】
ゲート回路２９０はＵＰＯＥ＿Ｘ信号により、ゲート回路２９１はＤＩＳＫＯＥ＿Ｘ信号により、ゲート回路２９２はＤＮＯＥ＿Ｘ信号により、ゲート回路２９３はＭＥＭＯＥ＿Ｘ信号により、それぞれ導通制御される。
【０２５５】
２入力のＡＮＤ回路２９４の一方の出力には、ＭＥＭＥＮ＿Ｘ信号が入力される。
【０２５６】
２入力のＡＮＤ回路２９９の一方の出力には、ＵＰＤＩＳ＿Ｘ信号が入力される。
【０２５７】
２入力のマルチプレクサ２９８は、ＢＵＦＩＮＳＥＬ＿Ｘ信号により切替え制御される。
【０２５８】
各演算部２０３は、パリティーの生成、正常データの読み出しおよびパリティーによるデータの復元を行なうために、各信号の値に応じて以下のような動作をする。
（１）Ｕ端子およびＤ端子からの入力の排他的論理和をとり、Ｒ端子から出力する（つまり、バッファメモリ２０８に与える）。
Ｕ端子から入力したデータが０の場合、Ｄ端子から入力したデータをそのままバッファメモリ２０８に書き込むことになる。
（２）Ｄ端子からの入力を、Ｒ端子から出力する（つまり、バッファメモリ２０８に与える）とともに、Ｕ端子に出力する。
（３）Ｒ端子から入力したデータ（つまり、バッファメモリ２０８から読みだしたデータ）とＵ端子からデータの排他的論理和をとり、Ｄ端子から出力する。
Ｕ端子から入力したデータが０の場合、バッファメモリ２０８から読みだしたデータをそのままＤ端子から出力することになる。
（４）Ｒ端子から入力したデータ（つまり、バッファメモリ２０８から読みだしたデータ）とＤ端子からデータの排他的論理和をとり、Ｕ端子から出力する。
Ｄ端子から入力したデータが０の場合、バッファメモリ２０８から読みだしたデータをそのままＵ端子から出力することになる。
（５）Ｕ端子から入力したデータをバイパスしてＤ端子から出力する。
（６）Ｄ端子から入力したデータをバイパスしてＵ端子から出力する。
（７）Ｌ端子から入力したデータをバイパスしてＲ端子から出力する。
これは、ディスク装置２０２の接続する接続口からのデータをバッファメモリ２０８に書き込むときに使われる。
（８）Ｒ端子から入力したデータをバイパスしてＬ端子から出力する。
これは、バッファメモリ２０８から読み出してディスク装置２０２の接続する接続口にデータを送り込むときに使われる。
（９）全端子について非導通状態とする。
【０２５９】
次に、本実施例の動作について図３５〜図４４を参照しながら説明する。図３５、図３７、図３９、図４１、図４３にはそれぞれの動作における各演算部に与える各信号の値を示し、図３６、図３８、図４０、図４２、図４４にはそれぞれの動作の概要を示すとともに、各動作において各演算部が上記（１）〜（９）のいずれの状態にあるかを示す。
【０２６０】
（１）まず、ディスク装置２０２への書き込みについて説明する。
【０２６１】
ディスク装置２０２に新しいデータを書き込む場合は、まず、データをｎ個の組に分割する。そして、１個目からｎ−１個目までのブロックを順次バッファメモリ２０８に書き込み（動作１）、ｎ個目をｎ＋１番目のバッファメモリ２０８に書き込むとともに、先に書き込んでおいた１個目からｎ−１個のブロックおよびｎ個目のブロックの排他的論理和をとり、ｎ＋１番目のバッファメモリ２０８に書き込む（動作２）。
【０２６２】
以下、動作１および動作２について具体的に説明する。
【０２６３】
＜動作１＞
書き込むデータは、４個の同じ長さのブロックに分割する。
【０２６４】
ブロック０は＃０のバッファメモリに、ブロック１は＃１のバッファメモリに、ブロック２は＃２のバッファメモリのバッファメモリに順に書き込むように演算部２０３を制御部が切替える。
【０２６５】
図３５には、＃１のバッファメモリに書き込む場合の演算部２０３の信号を示す。
【０２６６】
図３６には、＃１のバッファメモリへの書き込みのデータパスを示す。
【０２６７】
＜動作２＞
ここでは、ブロック３を＃４のバッファメモリへ書き込むと同時に、パリティーを生成し、＃３のバッファメモリへ書き込む。
【０２６８】
このときに演算部２０３に与える信号は図３７のようになる。図３８には、このときの各演算部２０３の働きとデータの流れを示す。
【０２６９】
ブロック３は、＃４の演算部が上記（２）の動作をすることにより、＃４のバッファメモリに書き込まれる。
【０２７０】
また、このときに既に＃０〜＃２のバッファメモリに格納してあるブロック０〜２の排他的論理和が＃２の演算部のＤ端子にあらわれ、これと＃４の演算部のＵ端子にあらわれるブロック３の排他的論理和をとったものがパリティーとして＃３のバッファメモリに書き込まれる。
【０２７１】
なお、＃０〜＃４のバッファメモリに書き込まれた、ブロック０、ブロック１、ブロック２、パリティー、ブロック３の各データは、それぞれ対応する＃０〜＃４のディスク装置に書き込まれる。なお、５つの演算部はすべて、上記の（８）の動作をとる。
【０２７２】
次に、ディスク装置２０２が永久的に故障した場合の修復について説明する。
【０２７３】
ディスク装置２０２からバッファメモリ２０８への読みだし時に、ひとつのディスク装置２０２の接続する接続口にディスク装置２０２の故障を示す信号が入力されたときは、故障に対応するディスク装置２０２を中央制御部２１０が記録し、外部に故障が起こったこととディスク装置２０２を知らせ、故障したディスク装置の交換後、故障したディスクに対応するディスクの接続された接続口以外の接続口から故障したディスク装置２０２に対応する他のデータをｎ個のバッファメモリに読みだし（動作３）、ｎ個のバッファメモリ２０８の排他的論理和をとり、残った１個のバッファメモリ２０８に書き込み（動作４）、このバッファメモリ２０８から故障後に交換したディスク装置２０２に書き込みの命令を発行する（動作５）。
【０２７４】
以下、動作３〜動作５について具体的に説明する。
【０２７５】
＜動作３＞
ここでは、故障したディスク装置２０２は、＃１のディスク制御装置に接続されていたものとする。
【０２７６】
中央制御部２１０は、故障の信号を＃１のディスク制御装置より知らされ、これが一定の回数起こると、永久故障と判断する。中央制御部２１０は、外部に信号を出して、故障したディスク装置２０２の交換が必要なことを知らせる。
【０２７７】
ディスク装置２０２が交換された後、中央制御部２１０は、交換したディスク装置２０２に入っていた元の情報を復元するために、ディスク装置２０２の接続する接続口から対応するバッファメモリ２０８にデータを書き込ませる。その際、ディスク装置２０２に対する読み出しのブロックは、ｎ＋１個の排他的論理和をとると０になるようにディスク装置２０２に読み出しの命令を発行する。
【０２７８】
例えば、この場合、＃０、＃２、＃３および＃４のディスク制御部に対し、交換したディスク装置２０２に入っていたデータブロックと組になるデータブロックを読み出す命令を送る。
【０２７９】
命令を受けた＃０、＃２、＃３および＃４のディスク制御部２０４は、該当するディスク装置２０２からデータブロックを読みだし、＃０、＃２、＃３、＃４のバッファメモリに書き込む。
【０２８０】
このとき、演算部２０３は図３９に示されるように切替えられ、データパスは図４０のようになる。
【０２８１】
ただし、この場合、＃１のバッファメモリに読み出されたデータブロックは使用されない。
【０２８２】
＜動作４＞
データブロックが読み出されると、修復データを＃１のバッファメモリに作る。すなわち、＃０、＃２、＃３および＃４のバッファメモリのデータブロックの排他的論理和を＃１のバッファメモリに書き込む。
【０２８３】
このときに演算部２０３に与える信号は図４１のようになる。なお、＃４の排他的論理和部には０を入力する。
【０２８４】
図４２には、このときの各演算部２０３の働きとデータの流れを示す。
【０２８５】
＜動作５＞
＃１のバッファメモリに修復データが書き込まれると、このデータブロックをディスク装置２０２に書き込んで修復動作が終了する。
【０２８６】
図４３に演算部２０３のデータパスを切替える信号を、図４４にデータパスを示す。
【０２８７】
なお、ディスク交換時の修復動作は、ディスク装置２０２の容量がバッファメモリ２０８より大きいのが普通であるので、ディスク装置全体の容量を複数のデータブロックに分割し、一回の動作で一つのデータブロックが修復され、これを複数回行なってディスク装置全体を修復する。
【０２８８】
以上のように本実施形態によれば、ディスクに書き込むパリティの生成および故障したディスクを復元するための情報の生成が高速に行なえるとともに、少ないハードウェア構成で可能である。
【０２８９】
なお、本実施形態では排他的論理和を用いたが、排他的論理積を用いても簡単な回路の変更だけで容易に実施可能なことは自明である。
【０２９０】
また、上記した実施形態では演算部２０３は直列に接続されているが、タイミング制約を満たすために演算部２０３の接続部にパイプラインレジスタを加えることも可能である。
【０２９１】
また、以上の実施形態では、ディスク装置２０２からバッファメモリ２０８の転送と、バッファメモリ２０８からの読み出しを逐次的に行なう方法を説明したが、バッファメモリ２０８がダブルバッファを構成し、ディスク装置２０２からの転送とともにバッファメモリ２０８を読み出すことも可能である。
【０２９２】
また、ディスクの読み出しの一時的なエラーのためにディスク装置２０２がリトライ動作を行ない、アクセスが規定時間内に終らなかった場合に、ディスク制御部２０４はディスク装置２０２のエラーとして知らせることで、ディスク装置２０２の故障と等価に扱うことも可能である。
【０２９３】
上記した手法は、図１等を用いて説明した先の実施形態に適用することができる。この場合、ディスク装置２０２がデータ記憶装置２に対応し、ディスク制御部２０４がデータ記憶制御装置４に対応し、中央制御部２１０が中央制御装置１０に対応する。また、図２６に示されているバッファメモリ２０８は、図１の１台の通信制御装置６バッファ記憶装置８に接続されたバッファ記憶装置８に対応する。演算部２０３は、データ記憶制御部４とこれに対応する１または複数のバッファ記憶部８との間にそれぞれ接続する。このように適用した構成例を図４６に示す。
【０２９４】
また、図１１や図１２のシステムに適用する場合、演算部２０３は、１つのバス２０を共有するデータ記憶制御部４の群とこれに対応する１または複数のバッファ記憶部８との間にそれぞれ接続する。
【０２９５】
さて、図２６〜４６を用いて説明した実施形態ではＲＡＩＤ４またはＲＡＩＤ５に基づいた実施について詳しく述べた。前述の実施形態では、連続したデータはあるブロックのサイズで複数のディスク制御装置に跨るように配置されていた。
【０２９６】
以下では、別の実施形態としてＲＡＩＤ３に基づいた実施について図を参照しながら説明する。図４７は本実施形態に係るシステムの構成を示している。
【０２９７】
複数のディスク制御部３０４は各々対応するメモリコントローラ３０７に接続され、各々のメモリコントローラ３０７には対応するバッファメモリ３０８が接続される。メモリコントローラ３０７は共通のバス（Ｖｂｕｓ）に接続され、ＶｂｕｓはＲＡＩＤコントローラ３０３に接続されている。ＲＡＩＤコントローラ３０３のＶｂｕｓと反対側は入出力バスであり、ここでデータの入出力を行なう。中央制御部３０１はディスク制御部３０４やメモリコントローラ３０７、ＲＡＩＤコントローラ３０３に接続され、これらを制御している。
【０２９８】
この装置の動作を説明する前に、図５５を参照しながらＲＡＩＤ３におけるディスク装置のデータ配置方法について説明する。
【０２９９】
まず、連続したデータはある一定の長さのブロック（例えば１２８ＫＢｙｔｅ）で分割され管理される。ディスクへのアクセスはこのブロックを単位としてある一定の時間内（例えば１００ｍｓｅｃ）に行なわれる。この一定の時間はタイムスロットと呼ばれている。ディスク装置３０２はＲＡＩＤグループと呼ばれるグループに分けられている。一つのＲＡＩＤグループは一つのタイムスロットで並列に読み書きされる。
【０３００】
図５５の例ではＲＡＩＤグループが二つあり、交互にアクセスされている。元データはまずＲＡＩＤグループに分割され、さらにＲＡＩＤグループ内部ではワード毎にディスク制御部に跨るように配置される。例えば、元データは０−１，１−１，２−１，３−１，０−２，１−２，２−２，３−２，…のようにワード単位のデータが並んで連続するデータを構成しており、このうちの０−１〜３−１００、０−２０１〜３−３００、…がＲＡＩＤグループ１へ、０−１０１〜３−２００、０−３０１〜３−４００、…がＲＡＩＤグループ２へ割り当てられる。そして、０−１は＃０の行のディスク装置の１番目のデータとして、１−１は＃１の行のディスク装置の１番目のデータとして、…０−２は＃０の行のディスク装置の２番目のデータとして、…すなわちｍ−ｎは＃ｍの行のディスク装置のｎ番目のデータとして割り当てられる。
【０３０１】
さらに図５５の例では４ワードに対して１つのパリティワードを加えるように構成されているので、＃４の行のディスク装置のｘ番目のデータとしては０−ｘ，１−ｘ，２−ｘ，３−ｘの排他的論理和が入るようになっている。
【０３０２】
一つのタイムスロットで読み出されるＲＡＩＤグループのデータはバッファメモリ３０８にブロック単位で書き込まれる。すなわち、＃ｍの行のバッファメモリには、ｍ−１，ｍ−２，…ｍ−１００が１ブロックのデータとして書き込まれる。
【０３０３】
そして、バッファメモリ＃０，＃１，＃２，…から順にデータをワード毎に読み出せば、元のデータ０−１，１−１，２−１，…が読み出せる。このように順にワード毎にデータを読み出すには、Ｖｂｕｓを時分割で使用すれば、効率が良い。
【０３０４】
以下では図４７のシステムがどのように動作するかについて説明し、さらにＲＡＩＤコントローラ３０３の構成について説明する。
【０３０５】
まず、ディスク読み出し時の故障を訂正する動作の説明を図４８に示す。図４８ではバッファメモリとＲＡＩＤコントローラの働きを中心に説明する。
【０３０６】
ディスク装置の故障が起こると中央制御部３１０にディスク制御部から信号が伝達され、中央制御部はどのようにＲＡＩＤコントローラ３０３を制御するかを決定する。
【０３０７】
図４８では＃２のディスク装置が故障したと仮定する。この時＃２のバッファメモリ３０８には不正な値が入っている。バッファメモリから出力に読み出す時は、中央制御部３１０が制御信号を発生し、バッファメモリからＶｂｕｓを時分割で使用しａ，ｂ，ｄ，ｅの順でＲＡＩＤコントローラ３０３にデータが入力される。ＲＡＩＤコントローラ３０３の内部のＦＩＦＯ３４９はこのうちａ，ｂ，ｄを記憶するよう中央制御部３１０の指示により動作する。
【０３０８】
一方アキュムレータ３４７には排他的論理和部３４５により演算されたａ，ｂ，ｄ，ｅの排他的論理和の値すなわち故障したディスク装置に入っていた値ｃが蓄積されている。これを中央制御部の指示によりマルチプレクサ３４１を所定のタイミングで切替えれば、出力にはａ，ｂ，ｃ，ｄの順にデータが出力される。
【０３０９】
図４９は図４８の動作をタイミングチャートで示したものである。サイクル１，２，４，５でａ，ｂ，ｄ，ｅの値をＶｂｕｓに読みだし、ＦＩＦＯ３４９にはａ，ｂ，ｄの値のみを書き込むために中央制御部３１０の指示によりＦＩＦＯ  Ｗｒｉｔｅ信号が与えられる。ＦＩＦＯ  Ｒｅａｄ信号はアキュムレータからｃが出力する以外のタイミングでＦＩＦＯ３４９からデータを読み出すために中央制御部３１０から与えられる。
【０３１０】
上述の例では＃２のディスク装置が故障したものとして説明を行なったが、故障がない場合はＦＩＦＯ３４９をＶｂｕｓからのデータが通過するように制御すればよい。あるいは、故障がない場合にも、複数のバッファメモリのうち１個が不正な値を持つものとして制御を行ってもよい。
【０３１１】
次に、ディスク装置に書き込む動作の説明を図５０に示す。データを書き込むのは、ビデオサーバーなどの用途では映画などのコンテンツをディスク装置にロードする場合で、これはネットワークから通信制御部を経由してＲＡＩＤコントローラに与えられる場合と、ＲＡＩＤコントローラにテープドライブやビデオエンコーダなどのデバイスを直接接続する場合が考えられる。
【０３１２】
ＲＡＩＤコントローラ３０３の入力として、時系列でワード単位のデータがａ，ｂ，ｃ，ｄの順に与えられる。このデータはＶｂｕｓに順に与えられると同時に、排他的論理和部３３５とアキュムレータ３３７によりａ，ｂ，ｃ，ｄの排他的論理和ｅが計算される。続いてマルチプレクサ３３１を切替えてｅをＶｂｕｓに出力する。
【０３１３】
図５１にはタイミングチャートを示した、Ｖｂｕｓにはａ，ｂ，ｃ，ｄ，ｅの順に出力され、バッファメモリ（１）からバッファメモリ（５）に順にデータが書き込まれ、これが１タイムスロット分バッファメモリに溜ると、中央制御装置の指示によりディスク制御部からディスク装置に書き込まれる。図５０で説明した動作により、ディスク装置に書き込む際にハードウェアによりパリティを作成することができる。
【０３１４】
さて、ＲＡＩＤ構成でディスク装置が故障した場合には故障したディスク装置を交換し、故障したディスク装置に入っていた情報を新しく交換したディスク装置に復元しなければならない。この操作は、まず、故障したディスク装置を交換し、故障したのと同じＲＡＩＤグループに属するディスク装置のデータの排他的論理和をとったものを新しいディスク装置に書き込むことで行なう。ディスク装置の容量は１つのタイムスロットでは処理しきれないので、複数のタイムスロットを使って故障したディスク装置を復元する。
【０３１５】
図５２はこの動作を示したものである。図５２では＃２に接続されるディスク装置に故障があって交換したと仮定する。まず、中央制御部の指示によりバッファメモリ（１）、バッファメモリ（２）、バッファメモリ（４）、バッファメモリ（５）には故障したディスク装置と同じＲＡＩＤグループに属するディスク装置から１タイムスロット分のデータがコピーされる。
【０３１６】
次にこのデータを１ワード分ずつ、ａ，ｂ，ｄ，ｅの順でＶｂｕｓに転送する。Ｖｂｕｓの値を受けたＲＡＩＤコントローラは排他的論理和部３４５によりこれらの排他的論理和ｃを計算しアキュムレータ３４７にこの値を蓄積する。そして、適当なタイミングでこのｃをＶｂｕｓに出力する。
【０３１７】
図５３はこの動作のタイミングチャートを示している。サイクル１，２，４，５でａ，ｂ，ｄ，ｅの値を読み出し、サイクル５で求めた排他的論理和ｃをサイクル７でバッファメモリ（３）に書き込む。１ワードずつの操作を１タイムスロット分のデータについて行なったら、これらのデータを中央制御部の指示によりバッファメモリからメモリコントローラ３０７、ディスク制御部３０４を介してディスク装置３０２に書き込む。これを交換したディスク装置の必要な部分について繰り返せば、ディスク装置に入っていたデータの復元が可能となる。
【０３１８】
図５４はＲＡＩＤコントローラの内部のデータパスを説明する図である。図５４を図４８、図５０、図５２とともに参照し、各部の対応を説明する。図４８におけるマルチプレクサ３４１は図５４におけるマルチプレクサ（２）３４１であり、バッファ（２）３４３が図４８では省略されている。図４８の排他的論理和部３４５は図５４の排他的論理和部（２）３４５であり、アキュムレータ３４７はアキュムレータ（２）３４７である。
【０３１９】
図５０で示されるマルチプレクサ３３１は図５４のマルチプレクサ（１）３３１であり図５４のバッファ（１）３３３は省略されている。図５０で示されるアキュムレータ３３７と排他的論理和部３３５は図５４のアキュムレータ（１）３３７と排他的論理和部（１）３３５に対応する。
【０３２０】
図５２で示されるアキュムレータ３４７および排他的論理和部３４５は、バッファメモリからの読み出し時に使用されるアキュムレータと同一で、図５４のアキュムレータ（２）３４７、および排他的論理和部３４５である。図５２ではマルチプレクサ３３１は省略されバッファ（１）３３３を経由してＶｂｕｓに値が与えられる。
【０３２１】
図５６はこの実施形態をビデオサーバなどの連続データサーバに適用した場合の図である。Ｖｂｕｓを複数に分散することで入出力に大きいバンド幅を確保することができる。
【０３２２】
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
【０３２３】
【発明の効果】
本発明に係る連続データサーバ装置によれば、データ記憶制御部と通信制御部の組それぞれまたはいくつかのデータ記憶制御部からなる群といくつかの通信制御部からなる群の組それぞれに対して、その間のデータの受け渡し専用のバッファ記憶部を設けるとともに、各データ記憶制御部と各通信制御部は、それがアクセスする必要のあるバッファ記憶部を含む一部のバッファ記憶部のみと接続している。
【０３２４】
このため、データ記憶制御部とバッファ記憶部の間のデータパスおよびバッファ記憶部と通信制御部の間のデータパスの多重度を上げることができ、連続データへの同時アクセスユーザ数を増加させることが可能になる。
【０３２５】
さらに、従来のように高コストを要する転送速度の大きいバスやスイッチを使う必要がないので、コストの増大を招くことなく、連続データへの同時アクセスユーザ数を増加させることができる。
【０３２６】
また、本発明の連続データ転送方法では、要求された連続データを記憶する前記データ記憶部が接続された前記データ記憶制御部が、該連続データを読み出して、当該データ記憶制御部と該連続データの転送先に通じる通信路を収容している前記通信制御部とに接続された専用のバッファ記憶部に書き込み、当該通信制御部はこの記バッファ記憶部内に書き込まれている前記連続データを読み出して、所定の通信路に送り出す。
【０３２７】
このため、データ記憶制御部とバッファ記憶部の間のデータパスおよびバッファ記憶部と通信制御部の間のデータパスの多重度を上げることができ、連続データへの同時アクセスユーザ数を増加させることが可能になる。
【０３２８】
さらに、高コストを要する転送速度の大きいバスによりデータパスの転送能力を上げる必要がないので、コストの増大を招くことなく、連続データへの同時アクセスユーザ数を増加させることができる。
【０３２９】
本発明に係るディスクアレイ装置によれば、接続するディスク装置およびバッファ記憶部の各系統に種々の機能を有する演算部を専用に設け、これらを直列に接続したので、例えば、ディスク装置の故障に対処するためのデータ復元処理やパリティーの生成を少ないハードウェア構成で実現可能であるとともに、ハードウェアで処理を行なうので処理の高速化を図ることができる。
【図面の簡単な説明】
【図１】本発明の一つの実施の形態に係る連続データサーバ装置の構成の一例を示す図
【図２】同実施の形態の連続データサーバ装置の動作を説明するための図
【図３】連続データの構造を説明するための図
【図４】同実施の形態の中央制御装置の動作の流れを示すフローチャート
【図５】同実施の形態の連続データサーバ装置の動作を説明するための図
【図６】同実施の形態の連続データサーバ装置の動作を説明するための図
【図７】同実施の形態の連続データサーバ装置の動作を説明するための図
【図８】同実施の形態のバッファ記憶装置の管理方式の一例を説明するための図
【図９】同実施の形態のバッファ記憶装置の管理方式の他の例を説明するための図
【図１０】同実施の形態のバッファ記憶装置の管理方式のさらに他の例を説明するための図
【図１１】同実施の形態の連続データサーバ装置の他の構成例を示す図
【図１２】同実施の形態の連続データサーバ装置のさらに他の構成例を示す図
【図１３】２ポートメモリの一例を示す図
【図１４】２ポートメモリの他の例を示す図
【図１５】２ポートメモリのさらに他の例を示す図
【図１６】２ポートメモリをバッファ記憶装置として用いた例を示す図
【図１７】データ記憶制御装置から見たアドレス空間の一例を示す図
【図１８】通信制御装置から見たアドレス空間の一例を示す図
【図１９】２ポートメモリの一例を示す図
【図２０】データ記憶制御装置とバッファ記憶装置の接続方式の一例を示す図
【図２１】通信制御装置とバッファ記憶装置の接続方式の一例を示す図
【図２２】通信制御装置とバッファ記憶装置の接続方式の他の例を示す図
【図２３】ＶＲＡＭの一例を示す図
【図２４】ＶＲＡＭをバッファ記憶装置として用いた例を示す図
【図２５】電子計算機を用いて連続データサーバ装置を構成した例を示す図
【図２６】本発明の他の実施の形態に係るディスクアレイ装置の構成の一例を示す図
【図２７】同実施の形態の中央制御部の動作の流れを示すフローチャート
【図２８】ＨＩＴＡＮＹ信号の生成回路の一例を示す図
【図２９】同実施の形態の演算部の構成の一例を示す図
【図３０】マルチプレクサを切替える論理を示す図
【図３１】ストライピングしたマルチメディアデータを再生するシステムの一例を説明するための図
【図３２】データベースを分散配置するデータベースサーバの一例を説明するための図
【図３３】本発明のさらに他の実施の形態に係るディスクアレイ装置の構成の一例を示す図
【図３４】同実施の形態の演算部の構成の一例を示す図
【図３５】同実施の形態において演算部に与える各信号の値の一例を示す図
【図３６】同実施の形態の一つの動作を説明するための図
【図３７】同実施の形態において演算部に与える各信号の値の一例を示す図
【図３８】同実施の形態の他の動作を説明するための図
【図３９】同実施の形態において演算部に与える各信号の値の一例を示す図
【図４０】同実施の形態のさらに他の動作を説明するための図
【図４１】同実施の形態において演算部に与える各信号の値の一例を示す図
【図４２】同実施の形態のさらに他の動作を説明するための図
【図４３】同実施の形態において演算部に与える各信号の値の一例を示す図
【図４４】同実施の形態のさらに他の動作を説明するための図
【図４５】連続データサーバ装置の実施の形態の一例を示す図
【図４６】連続データサーバ装置のさらに別の実施の形態の一例を示す図
【図４７】ディスクアレイ装置の実施の形態の一例を示す図
【図４８】同実施の形態のデータ読み出しに係る説明の図
【図４９】同実施の形態のデータ読み出しに係るタイミングの説明の図
【図５０】同実施の形態のデータ書き込みに係る説明の図
【図５１】同実施の形態のデータ書き込みに係るタイミングの説明の図
【図５２】同実施の形態のデータ修復に係る説明の図
【図５３】同実施の形態のデータ修復に係るタイミングの説明の図
【図５４】同実施の形態のＲＡＩＤコントローラの説明の図
【図５５】ＲＡＩＤ３方式のデータとディスク装置への配置の関係を説明する図
【図５６】同実施の形態の連続データサーバ装置への適用の説明の図
【図５７】従来の連続データサーバ装置の一例を示す図
【図５８】従来の連続データサーバ装置の他の例を示す図
【図５９】従来の連続データサーバ装置のさらに他の一例を示す図
【符号の説明】
２，２−１〜２−８…データ記憶装置
４，４−１〜４−４…データ記憶制御装置
６，６−１〜６−２…通信制御装置
８，８−１〜８−８…バッファ装置
１０，１０ａ，１０ｂ…中央制御装置
２０，２１…バス
２３…セレクタ
３０，３０ａ…２ポートメモリ
３２，４０…デコーダ
３６〜３８…ＡＮＤ回路
４５〜４８…ゲート回路
５０〜５３，５８…排他的論理和回路
５４〜５７…ＡＮＤ回路
７０，８０…メモリコントローラ
７１，８１，８２…メモリ
９０…ＶＲＡＭ
１０２，２０２，３０２…ディスク装置
１０３，２０３…演算部
３０３…ＲＡＩＤコントローラ
１０４，２０４，３０４…ディスク制御部
１０７，２０７，３０７…メモリコントローラ
１０８，２０８，３０８…バッファメモリ
１１０，２１０，３１０…中央制御部
１２０…ディスクアレイ装置
１２１…データベース処理装置
１３１，２９５〜２９７…排他的論理和演算回路
１３２，２９８，３３１，３４１…マルチプレクサ
１３３…デコード部
１８１〜１８２，２９４，２９９…ＡＮＤ回路
１８６…ＯＲ回路
２９０〜２９３…ゲート回路
３１２…通信制御部
３３３…バッファ（１）
３３５…排他的論理和部（１）
３３７…アキュムレータ（１）
３４３…バッファ（２）
３４５…排他的論理和部（２）
３４７…アキュムレータ（２）
３４９…ＦＩＦＯ
【図１】
0003600334.tif 000002
【図２】
0003600334.tif 000003
【図３】
0003600334.tif 000004
【図４】
0003600334.tif 000005
【図５】
0003600334.tif 000006
【図６】
0003600334.tif 000007
【図７】
0003600334.tif 000008
【図８】
0003600334.tif 000009
【図９】
0003600334.tif 000010
【図１０】
0003600334.tif 000011
【図１１】
0003600334.tif 000012
【図１２】
0003600334.tif 000013
【図１３】
0003600334.tif 000014
【図１４】
0003600334.tif 000015
【図１５】
0003600334.tif 000016
【図１６】
0003600334.tif 000017
【図１７】
0003600334.tif 000018
【図１８】
0003600334.tif 000019
【図１９】
0003600334.tif 000020
【図２０】
0003600334.tif 000021
【図２１】
0003600334.tif 000022
【図２２】
0003600334.tif 000023
【図２３】
0003600334.tif 000024
【図２４】
0003600334.tif 000025
【図２５】
0003600334.tif 000026
【図２６】
0003600334.tif 000027
【図２７】
0003600334.tif 000028
【図２８】
0003600334.tif 000029
【図２９】
0003600334.tif 000030
【図３０】
0003600334.tif 000031
【図３１】
0003600334.tif 000032
【図３２】
0003600334.tif 000033
【図３３】
0003600334.tif 000034
【図３４】
0003600334.tif 000035
【図３５】
0003600334.tif 000036
【図３６】
0003600334.tif 000037
【図３７】
0003600334.tif 000038
【図３８】
0003600334.tif 000039
【図３９】
0003600334.tif 000040
【図４０】
0003600334.tif 000041
【図４１】
0003600334.tif 000042
【図４２】
0003600334.tif 000043
【図４３】
0003600334.tif 000044
【図４４】
0003600334.tif 000045
【図４５】
0003600334.tif 000046
【図４６】
0003600334.tif 000047
【図４７】
0003600334.tif 000048
【図４８】
0003600334.tif 000049
【図４９】
0003600334.tif 000050
【図５０】
0003600334.tif 000051
【図５１】
0003600334.tif 000052
【図５２】
0003600334.tif 000053
【図５３】
0003600334.tif 000054
【図５４】
0003600334.tif 000055
【図５５】
0003600334.tif 000056
【図５６】
0003600334.tif 000057
【図５７】
0003600334.tif 000058
【図５８】
0003600334.tif 000059
【図５９】
0003600334.tif 000060