(57)【特許請求の範囲】
【請求項１】
ホスト装置と第１および第２のストレージ装置が接続可能なインターフェースを有し、前記第１および第２のストレージ装置とのデータの共通化を行う情報処理装置において、
前記第１および第２のストレージ装置の動作状態が記憶可能なストレージ装置状態管理テーブルと、
前記インターフェースを監視し、前記第１および第２のストレージ装置が書き込み中か読み出し中か待機中かの動作状態を前記ストレージ装置状態管理テーブルに設定する監視部と、
前記インターフェースに接続された前記第１および第２のストレージ装置に書き込むデータを一時保持するためのバッファメモリと、
前記ホスト装置から書き込みの指示と書き込み対象のデータを受信し、前記バッファメモリに保持すると共に、前記第１および第２のストレージ装置へのデータの書き込みを指示するコマンド応答部と、
前記コマンド応答部からの書き込み指示により、前記ストレージ装置状態管理テーブルを参照して前記ストレージ装置の中で、前記データを書き込み可能なストレージ装置に対して前記バッファメモリに保持されていたデータを送るデータ処理部と、
前記データ処理部と前記第１および第２のストレージ装置が接続されるいずれか一方の前記インターフェースとの間に介挿され、前記ストレージ装置へ送られるデータにダミーデータを付加して前記ストレージ装置に書き込むデータ付加部と、
メモリと、
前記データに付加した前記ダミーデータの総量を計数し前記メモリに保持するダミーデータ量計数部と、
前記メモリに保持された前記ダミーデータの総量が予め設定された閾値に達した場合、前記データ付加部に対して以降の前記ダミーデータの付加を停止させる制御部と
を具備する情報処理装置。
【請求項２】
ホスト装置と複数のストレージ装置が接続可能なインターフェースを有し、前記複数のストレージ装置とのデータの共通化を行う情報処理装置において、
前記複数のストレージ装置の動作状態が記憶可能なストレージ装置状態管理テーブルと、
前記インターフェースを監視し、前記複数のストレージ装置が書き込み中か読み出し中か待機中かの動作状態を前記ストレージ装置状態管理テーブルに設定する監視部と、
前記インターフェースに接続された前記複数のストレージ装置に書き込むデータを一時保持するためのバッファメモリと、
前記ホスト装置から書き込みの指示と書き込み対象のデータを受信し、前記バッファメモリに保持すると共に、前記複数のストレージ装置へのデータの書き込みを指示するコマンド応答部と、
前記コマンド応答部からの書き込み指示により、前記ストレージ装置状態管理テーブルを参照して前記複数のストレージ装置の中で、前記データを書き込み可能なストレージ装置に対して前記バッファメモリに保持されていたデータを送るデータ処理部と、
各ストレージ装置毎に付加するダミーデータの異なるデータ量が記憶されたダミーデータ管理テーブルと、
前記データ処理部と前記複数のストレージ装置が接続される少なくとも一つの前記インターフェースとの間に介挿され、前記ダミーデータ管理テーブルを参照して書き込み対象のストレージ装置に対応するデータ量のダミーデータを、当該ストレージ装置へのデータに付加して前記ストレージ装置に書き込むデータ付加部と、
メモリと、
前記データに付加した前記ダミーデータの総量を計数し前記メモリに保持するダミーデータ量計数部と、
前記メモリに保持された前記ダミーデータの総量が予め設定された閾値に達した場合、前記データ付加部に対して以降の前記ダミーデータの付加を停止させる制御部と
を具備する情報処理装置。
【請求項３】
前記データ付加部は、
前記ホスト装置からのデータの読み出しの指示により、前記データ処理部が前記ストレージ装置から読み出するデータから前記ダミーデータを取り除き、前記データ処理部に渡す請求項１または２いずれか記載の情報処理装置。
【請求項４】
ホスト装置と第１および第２のストレージ装置が接続可能なインターフェースを有し、前記第１および第２のストレージ装置とのデータの共通化を行う情報処理装置における情報処理方法において、
前記インターフェースを監視し、前記第１および第２のストレージ装置が書き込み中か読み出し中か待機中かの動作状態を、前記第１および第２のストレージ装置の動作状態が記憶可能なストレージ装置状態管理テーブルに設定するステップと、
前記ホスト装置から書き込みの指示と書き込み対象のデータを受信し、バッファメモリに保持すると共に、前記第１および第２のストレージ装置へのデータの書き込みを指示するステップと、
前記書き込み指示により、前記ストレージ装置状態管理テーブルを参照して前記第１および第２のストレージ装置の中で、前記データを書き込み可能なストレージ装置に対して前記バッファメモリに保持されていたデータを送るステップと、
前記第１および第２のストレージ装置のうちの一方のストレージ装置へ送られるデータにダミーデータを付加して前記ストレージ装置に書き込むステップと、
前記データに付加した前記ダミーデータの総量を計数するステップと、
計数した前記ダミーデータの総量が予め設定された閾値に達した場合、以降の前記ダミーデータの付加を停止するステップと
を有する情報処理方法。
【請求項５】
ホスト装置と複数のストレージ装置が接続可能なインターフェースを有し、前記複数のストレージ装置とのデータの共通化を行う情報処理装置における情報処理方法において、
前記インターフェースを監視し、前記複数のストレージ装置が書き込み中か読み出し中か待機中かの動作状態を、前記複数のストレージ装置の動作状態が記憶可能なストレージ装置状態管理テーブルに設定するステップと、
前記ホスト装置から書き込みの指示と書き込み対象のデータを受信し、バッファメモリに保持すると共に、前記複数のストレージ装置へのデータの書き込みを指示するステップと、
前記書き込み指示により、前記ストレージ装置状態管理テーブルを参照して前記複数のストレージ装置の中で、前記データを書き込み可能なストレージ装置に対して前記バッファメモリに保持されていたデータを送るステップと、
各ストレージ装置毎に付加するダミーデータの異なるデータ量が記憶されたダミーデータ管理テーブルを参照して書き込み対象のストレージ装置に対応するデータ量のダミーデータを、当該ストレージ装置へのデータに付加して前記ストレージ装置に書き込むステップと、
前記データに付加した前記ダミーデータのデータ量を計数するステップと、
計数した前記ダミーデータのデータ量が予め設定された閾値に達した場合、以降の前記ダミーデータの付加を停止するステップと、
前記データに付加した前記ダミーデータの総量を計数するステップと、
計数した前記ダミーデータの総量が予め設定された閾値に達した場合、以降の前記ダミーデータの付加を停止するステップと
を有する情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置および情報処理方法に関する。
【背景技術】
【０００２】
例えばビデオサーバなどに記憶された映像コンテンツをリアルタイムに配信するような産業用途向けの装置には、例えば大容量のハートディスク装置などのストレージ装置が使用されている。
【０００３】
この種の装置は、ストレージ装置に対して、一定の時間内にデータの書き込み処理や読み出し処理を完了する必要がある。なぜなら、データの書き込みや読み出しが定められた時間を超えてしまうと、映像や音声の途切れなどが生じるおそれがあるからである。
【０００４】
ハートディスク装置などは、大容量かつ低価格ではあるものの、速度と信頼性の面で難があり、最近は、ソリッド・ステート・ディスク：ＳＳＤが高速なストレージ装置として産業用途向けのシステムで利用されるようになってきた。
【０００５】
産業用途向けのシステムで利用されるＳＳＤは、容量が大きくなるとそれなりに高価であり、安価な汎用用途のＳＳＤ（例えばＳＡＴＡなどの汎用インターフェースで接続可能なタイプ）の利用が望ましい。
【０００６】
しかしながら、汎用のＳＳＤなどのストレージ装置は、データの書き込み処理や読み出し処理の遅延時間が保証されておらず、そのままではデータ処理に遅延が生じることがあり、リアルタイム制御を行う装置には適用できないという問題がある。
【０００７】
そこで、近年では、２つのＩ／Ｏバッファと２つのディスクを用いミラーリングを行うことで、ディスク書き込みに係る応答時間を保証する技術が開発されている（例えば先行技術文献１参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−２２７９２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、このような技術の場合、２つのディスクに同じデータを書き込むことになるため、２つのディスクが同じ時期に寿命に近づくことによりミラーリングが機能しなくなるか、ディスク交換の保守作業が複雑になる。
【００１０】
本発明が解決しようとする課題は、２台以上のストレージ装置を用いて、データの書き込みおよび読み出し遅延時間を保証する上で、同時にストレージ装置が寿命を迎えることを避けることができる情報処理装置および情報処理方法を提供することにある。
【課題を解決するための手段】
【００１１】
実施形態の情報処理装置は、ホスト装置と第１および第２のストレージ装置が接続可能なインターフェースを有し、前記第１および第２のストレージ装置とのデータの共通化を行う情報処理装置において、ストレージ装置状態管理テーブル、監視部、バッファメモリ、コマンド応答部、データ処理部、データ付加部、メモリ、ダミーデータ量計数部、制御部を備える。前記ストレージ装置状態管理テーブルは前記第１および第２のストレージ装置の動作状態が記憶可能である。前記監視部は前記インターフェースを監視し、前記第１および第２のストレージ装置が書き込み中か読み出し中か待機中かの動作状態を前記ストレージ装置状態管理テーブルに設定する。前記バッファメモリは前記インターフェースに接続された前記第１および第２のストレージ装置に書き込むデータを一時保持するためのものである。前記コマンド応答部は前記ホスト装置から書き込みの指示と書き込み対象のデータを受信し、前記バッファメモリに保持すると共に、前記第１および第２のストレージ装置へのデータの書き込みを指示する。前記データ処理部は前記コマンド応答部からの書き込み指示により、前記ストレージ装置状態管理テーブルを参照して前記複数のストレージ装置の中で、前記データを書き込み可能なストレージ装置に対して前記バッファメモリに保持されていたデータを送る。前記データ付加部は前記データ処理部と前記第１および第２のストレージ装置が接続されるいずれか一方の前記インターフェースとの間に介挿され、前記ストレージ装置へ送られるデータにダミーデータを付加して前記ストレージ装置に書き込む。前記ダミーデータ量計数部は前記データに付加した前記ダミーデータの総量を計数し前記メモリに保持する。前記制御部は前記メモリに保持された前記ダミーデータの総量が予め設定された閾値に達した場合、前記データ付加部に対して以降の前記ダミーデータの付加を停止させる。
【図面の簡単な説明】
【００１２】
【図１】第１実施形態の遅延保証ユニットの構成を示す図である。
【図２】第１実施形態の遅延保証ユニットにおける状態テーブルの内容を示す図である。
【図３】第１実施形態の遅延保証ユニットの動作を示すフローチャートである。
【図４】第２実施形態の遅延保証ユニットの構成を示す図である。
【図５】第２実施形態の遅延保証ユニットの動作を示すフローチャートである。
【図６】第３実施形態の遅延保証ユニットの構成を示す図である。
【図７】第３実施形態の遅延保証ユニットにおけるダミーデータ管理テーブルの内容を示す図である。
【図８】第３実施形態を拡張し並列数を３台にした構成例を示す図である。
【図９】第４実施形態の遅延保証ユニットの構成を示す図である。
【図１０】第４実施形態の遅延保証ユニットにおけるパリティデータ管理テーブルの一例を示す図である。
【図１１】第４実施形態の遅延保証ユニットの動作を示すフローチャートである。
【図１２】第４実施形態の遅延保証ユニットの動作を説明するための図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して、実施形態を詳細に説明する。図１は情報処理装置の一つの実施の形態の遅延保証ユニット２の構成を示す図である。
【００１４】
図１に示すように、第１実施形態の遅延保証ユニット２は、ホスト装置１が接続された外部インターフェース２０（以下「外部Ｉ／Ｆ２０」と称す）、タイマー２１、コマンド応答部２２、バッファメモリ２３、データ処理部２４、状態テーブル２５、監視部２６、ディスクインターフェース２７，２８（以下「ディスクＩ／Ｆ２７，２８」と称す）、データ処理部２４といずれか一方のディスクＩ／Ｆ（この例ではディスクＩ／Ｆ２８）との間に介挿されたデータ付加部３０などを有している。
【００１５】
ホスト装置１は、例えばビデオサーバなどであり、ストレージ装置にデータの書き込みや読み出しに応答時間の保証が求められるマルチメディアシステム、情報処理システム、製造プラントシステムなどの産業用途向けのシステムに適用される。
【００１６】
ディスクＩ／Ｆ２７，２８は、少なくとも一つ以上の外部ストレージ装置、例えばソリッド・ステート・ディスク３，４（以下「ＳＳＤ３，４」と称す）などと通信するためのインターフェースであり、例えば、シリアルＡＴＡ（ＳＡＴＡ−２．６または３．０）やＰＣＩ−ｅのポートである。この例では、ディスクＩ／Ｆ２７，２８に、ＳＳＤ３，４がそれぞれ一台ずつ接続されている。
【００１７】
外部Ｉ／Ｆ２０は、ホスト装置１と通信するためのインターフェースであり、例えば、シリアルＡＴＡ（ＳＡＴＡ−２．６または３．０）やＰＣＩ−ｅのポートである。
【００１８】
タイマー２１は、コマンド応答部２２からの指示によりタイマー動作を開始し、カウントされた時間が、予め設定されたタイムアップ時間に達すると、コマンド応答部２２にタイムアップを通知する。
【００１９】
なお、ホスト装置１は、データの書き込み処理および読み出し処理を、システム仕様で定められた許容応答時間以内に完了する必要がある。許容応答時間から、ホスト装置１とコマンド応答部２２間のコマンドの転送時間（インターフェース仕様により決まる一定時間）を差し引いた時間をタイムアップ時間として設定することで遅延時間を一定の時間で納めるようにしている。
【００２０】
ホスト装置１へ応答すべき時間は、予めタイマー２１に設定されており、適用するシステムにより異なる。例えば、映像を扱うシステムでは３３ｍｓ、製造プラントで使用するデータロガーなどであれば１〜１０ｍｓなどである。
【００２１】
タイムアップ時間は、ホスト装置１へ応答を返す上で遅延が許容される最大時間であり、予めタイマー２１に設定しておいてもよく、タイマー２１がタイムアップ時間を参照する書き換え可能なメモリに、外部からアクセスし、扱うシステムに応じてタイムアップ時間を書き換える（変更する）ようにしてもよい。
【００２２】
すなわち、タイマー２１は、コマンド応答部２２からのカウント開始の指示により予め設定されたタイムアップ時間（応答時間）をカウントし、タイムアップすると、タイムアップしたことを指示元のコマンド応答部２２へ通知する。
【００２３】
コマンド応答部２２は、ホスト装置１との間でコマンドおよびデータのやりとりを行う。コマンド応答部２２は、ホスト装置１から受信されたコマンドに応じて、データ処理部２４に対してデータの書き込みまたは読み出しを指示（制御）する。
【００２４】
またコマンド応答部２２は、ホスト装置１から書き込み開始コマンド（データの書き込み要求）が受信されることで、複数のＳＳＤ３，４の書込先として、どのＳＳＤに書き込むかを示すフラグ（書込先フラグ）を状態テーブル２５（図２参照）に設定する。図２は第１実施形態の遅延保証ユニットにおける状態テーブルの内容を示す図である。
【００２５】
またコマンド応答部２２はホスト装置１から書き込み開始コマンド（データの書き込み要求）が受信された場合、タイマー２１へカウント開始を指示すると共に、状態テーブル２５を参照してＳＳＤ３，４の動作状態（待機中か書込中か）を確認し、動作状態に応じてデータの書込先を選定し、データの書込先を状態テーブル２５に設定し、書き込み対象のＳＳＤ（ＳＳＤ３またはＳＳＤ４）への書き込みを指示する制御信号を出力し、ホスト装置１からの書き込み要求の後に一定の単位時間以内に順次送られてくる書き込み対象のデータをバッファメモリ２３へ保持する。ＳＳＤ３，４の動作状態が「待機中」であれば、ＳＳＤ動作状態フラグを「書込中」に変更し、予め設定されている側のＳＳＤを書込先として選定する。
【００２６】
一方、タイマー２１からタイムアップしたことがコマンド応答部２２に通知された時点で、コマンド応答部２２は書き込み要求に対する書き込み完了の応答をホスト装置１へ返す。すなわち、コマンド応答部２２は、バッファメモリ２３へのデータの保持（書き込み）が完了しても直ぐには書き込み完了の応答を返さず、システムの応答時間であるタイムアップ時間を待って応答を返す。これにより、データの受信を完了してからタイムアップ時間までが、ＳＳＤ３，４の側でデータ書き込みの遅延が生じた際の遅延保証時間として確保されることになる。
【００２７】
バッファメモリ２３は、データを一時保持可能である。バッファメモリ２３には、ホスト装置１から受信されたデータが一時的に保持（キャッシュ）される。
【００２８】
データ処理部２４は、コマンド応答部２２からの制御信号を受信すると、状態テーブル２５を参照してＳＳＤ３，４の動作状態と書込先の状態から書き込み可能なＳＳＤ（ＳＳＤ３，４のうちのいずれか）を選定し、選定したＳＳＤに対して、バッファメモリ２３から読み出したデータを、当該ＳＳＤが接続されたディスクＩ／Ｆ（ディスクＩ／Ｆ２７またはディスクＩ／Ｆ２８）へ送信する。
【００２９】
すなわちデータ処理部２４は、コマンド応答部２２からの書き込み指示により、状態テーブル２５を参照してＳＳＤ３，４の中で、データを書き込み可能なＳＳＤ置に対してバッファメモリ２３に保持されていたデータを送る。
【００３０】
データ付加部３０は、データ処理部２４からのデータに固定サイズのダミーデータを付加し、ダミーデータを付加したデータを、ディスクＩ／Ｆ２８を通じてＳＳＤ４へ送り書き込む。
【００３１】
またデータ付加部３０は、ホスト装置１からのデータの読み出しの指示により、データ処理部２４によりＳＳＤ４から読み出されるデータからダミーデータを取り除き（削除し）、データ処理部２４に渡す。
【００３２】
状態テーブル２５には、ディスクＩ／Ｆ２７，２８に接続されたＳＳＤ３，４の動作状態とＳＳＤ３，４の書込先が設定可能であり、監視部２６によりそれぞれにフラグ（“0”または“1”）が設定される。
【００３３】
監視部２６は、ディスクＩ／Ｆ２７，２８へのコマンドまたはデータの入出力を監視する。すなわち監視部２６はディスクＩ／Ｆ２７，２８を介してＳＳＤ３，４を監視し、監視結果として、ＳＳＤ３，４の動作状態と書込先を状態テーブル２５に設定する。
【００３４】
具体的に、監視部２６は、監視結果のＳＳＤ３，４の動作状態を「待機中」と「書込中」のいずれかを示すフラグ（動作状態フラグ）を状態テーブル２５に設定する。
【００３５】
ＳＳＤ３，４の動作状態フラグは、例えば“0”または“1”のいずれが設定され、“0”のときに待機中（いずれのＳＳＤにも書き込みをしていない状態）、“1”のときにどちらかのＳＳＤ３，４にデータを書き込み中であることを示す。
【００３６】
また書込先フラグは、例えば“0”または“1”のいずれが設定され、“0”のときにＳＳＤ３へデータを書き込む（このときは、ＳＳＤ４から読み出しを行う）、“1”のときにＳＳＤ４へデータを書き込む（このときは、ＳＳＤ３から読み出しを行う）ことを示す。例えば、書込先フラグ“０”について、ＳＤ３にデータの書き込みを許可していることを言い換えると、他のＳＳＤ４に対して書き込み禁止の設定をしていることと同じ意味である。
【００３７】
データ処理部２４は状態テーブル２５を参照して、コマンド応答部２２からのコマンドで指示されたデータを書き込み可能または読み出すことが可能な側のＳＳＤ（ＳＳＤ３またはＳＳＤ４のいずれか）に対してデータを書き込みまたは読み出す。
【００３８】
データ処理部２４は、ディスクＩ／Ｆ２７，２８に接続された複数のＳＳＤ３，４に対してデータの共通化を行う。具体的には、ホスト装置１から受信され、バッファメモリ２３に保持したデータを、あるＳＳＤ３に書き込んだ後、そのデータをバッファメモリ２３から読み出して他のＳＳＤ４に書き込むことで、複数のＳＳＤ３，４に対してデータ同期のための処理を行う。
【００３９】
続いて、図３のフローチャートを参照してこの第１実施形態の遅延保証ユニット２の動作を説明する。  
ホスト装置１からは、常に一定周期、一定データサイズの書き込みと読み出しが行われる。この遅延保証ユニット２では、ホスト装置１への遅延保証を実現するために、２台のＳＳＤ３，４のうち常に一方のＳＳＤを読み出し可能な状態で維持しておく。
【００４０】
このためには、２つのＳＳＤ３，４が同じデータを保持している必要がある。このため書き込み先と読み出し先のＳＳＤ３，４を入れ替えながらホスト装置１からの書き込み／読み出し要求にコマンド応答部２２が応答してゆく。
【００４１】
この遅延保証ユニット２の場合、監視部２６がディスクＩ／Ｆ２７，２８へのコマンドまたはデータの入出力を監視しており（図３のステップＳ１０１）、監視結果として、ＳＳＤ３，４の動作状態と書込先を状態テーブル２５に設定する（ステップＳ１０２）。
（データ書き込み動作）
外部のホスト装置１がＳＳＤ（ＳＳＤ３またはＳＳＤ４のいずれか）へデータを書き込む場合、ホスト装置１はデータの書き込みコマンドをコマンド応答部２２へ送信する。
【００４２】
ホスト装置１から送信されてきたコマンドをコマンド応答部２２が受信すると（ステップＳ１０３）、コマンド応答部２２は、受信したコマンドが、書き込みコマンドか読み出しコマンドかを識別し（ステップＳ１０３）、受信したコマンドが書き込みコマンドであれば、タイマー開始コマンドをタイマー２１へ送ると共に、状態テーブル２５を参照して、ＳＳＤ（ＳＳＤ３、ＳＳＤ４共に）が待機中であることをチェックし、ＳＳＤが待機中のとき、状態テーブル２５へ書き込み先変更コマンドを送ることで、状態テーブル２５の書込先フラグを設定する。
【００４３】
例えば、書込先フラグが“０”でＳＳＤが待機中であった場合に、コマンド応答部２２がホスト装置１から送信された書き込みコマンドを受信すると、書込先フラグを“1”に変更し、ＳＳＤ４へ書き込み許可（ＳＳＤ３を書き込み禁止）に設定する。
【００４４】
タイマー２１はタイマー開始コマンドを受けて、カウントを開始する。
【００４５】
またコマンド応答部２２は、待機中のＳＳＤが存在すると、ホスト装置１へ応答の受信可能コマンドを返し、この受信可能コマンドによりホスト装置１からデータが順次送られる。
【００４６】
コマンド応答部２２は、ホスト装置１より送信されてきたデータをバッファメモリ２３に順次保持しながら（ステップＳ１０５）、書込開始を示す制御信号をデータ処理部２４へ送る（ステップＳ１０６）。
【００４７】
データ処理部２４は、コマンド応答部２２からの書込開始を示す制御信号を受けると、状態テーブル２５を参照して書き込み可能なＳＳＤを選定、例えば状態テーブル２５の書込先フラグから書き込み先をＳＳＤ４に決定し、ＳＳＤ４が接続されているディスクＩ／Ｆ２８へ書込開始コマンドを送信し、書込開始コマンドを受信したＳＳＤ４から受信可能コマンドが返されてくると、データ処理部２４はバッファメモリ２３から固定長のデータを順次読み出し、ＳＳＤ４が接続されているディスクＩ／Ｆ２８へ送信する（ステップＳ１０７）。
【００４８】
すると、データ処理部２４とディスクＩ／Ｆ２８との間に設けられているデータ付加部３０が、送られるデータに固定長のダミーデータを付加し、そのデータを、ディスクＩ／Ｆ２８を通じて書き込み対象のＳＳＤ４に書き込む（ステップＳ１０８）。
【００４９】
一方、タイマー２１は、カウントを開始してからタイムアップ時間（応答時間）が経過すると、タイムアップし、タイムアップ通知コマンドをコマンド応答部２２へ返す。
【００５０】
コマンド応答部２２は、一回分の全てのデータがバッファメモリ２３に受信されたとしても受信完了の応答を返さず、タイマー２１からのタイムアップ通知コマンドが受信されるのを待機する。この待機時間が遅延保証時間となる。
【００５１】
そして、タイムアップ通知コマンドを受けると、書込完了コマンドをホスト装置１へ送信する。
【００５２】
また、ＳＳＤ４へのデータの書き込みが完了すると、ＳＳＤ４からは、書込完了コマンドが返されるので、この書込完了コマンドがディスクＩ／Ｆ２８を通じて監視部２６およびデータ処理部２４に受信される。
【００５３】
書込完了コマンドを受けた監視部２６は、状態テーブル２５の、ＳＳＤ動作状態フラグを“1”「書き込み中」→“0”「待機中」へ変更する。
【００５４】
書込完了コマンドを受けたホスト装置１が次のデータの書き込み開始コマンドを送信し、そのコマンドをコマンド応答部２２が受信すると、コマンド応答部２２は、状態テーブル２５の、書込先フラグの状態を“1”「ＳＳＤ４へ書込許可」→“0”「ＳＳＤ３へ書込許可」へ変更する。
【００５５】
データ処理部２４は、書込完了コマンドが受信されると、状態テーブル２５の書き込み先フラグを確認し、書込先フラグが“0”「ＳＳＤ３へ書込許可」であることから、データ同期のため、ＳＳＤ３に対してデータの書込開始コマンドを送信する。
【００５６】
監視部２６は、書込開始コマンドにより状態テーブル２５の、ＳＳＤ動作状態フラグを“1”「書込中」に変更する。
【００５７】
この書込開始コマンドを受信したＳＳＤ３からは、受信可能コマンドが返されるので、この受信可能コマンドがディスクＩ／Ｆ２７および監視部２６を通じてデータ処理部２４に受信されると、データ処理部２４は、バッファメモリ２３に保持されているデータを順次読み出し、ディスクＩ／Ｆ２７を通じて書き込み対象のＳＳＤ３に書き込む。
【００５８】
ＳＳＤ３へのデータの書き込みが完了すると、ＳＳＤ３からは、書込完了コマンドが返されるので、この書込完了コマンドがディスクＩ／Ｆ２７を通じて監視部２６およびデータ処理部２４に受信される。
【００５９】
監視部２６は、書込完了コマンドが受信されると、状態テーブル２５の、ＳＳＤ動作状態フラグを“1”「書込中」→“0”「待機中」へ変更する。
（データ読み出し動作）  
外部のホスト装置１がＳＳＤ３またはＳＳＤ４からデータを読み出す場合、ホスト装置１はデータの読み出しコマンドをコマンド応答部２２へ送信する。
【００６０】
ホスト装置１から送信されたコマンドをコマンド応答部２２が受信すると（ステップＳ１０３）、コマンド応答部２２は、受信したコマンドが、書き込みコマンドか読み出しコマンドかを識別し（ステップＳ１０４）、そのコマンドが読み出しコマンドであれば、データを読み出すよう指示する制御信号をデータ処理部２４へ送る（ステップＳ１０９）。
【００６１】
データ処理部２４は、コマンド応答部２２からの読出開始を指示する制御信号を受けると、状態テーブル２５を参照して、書き込み先として設定されているＳＳＤを決定（選定）し、読出開始コマンドをディスクＩ／Ｆ２７またはディスクＩ／Ｆ２８を通じて対象のＳＳＤ（ＳＳＤ３またはＳＳＤ４）へ送信する（ステップＳ１１０）。
【００６２】
ここでは状態テーブル２５を参照した結果、書込先フラグの状態が“0”「ＳＳＤ３へ書込許可」、つまり「ＳＳＤ４からの読出許可」と設定されていたものとする。
【００６３】
この場合、データ処理部２４は、読出開始コマンドを、ディスクＩ／Ｆ２８を通じてＳＳＤ４へ送信する。
【００６４】
読出開始コマンドを受けたＳＳＤ４は、データを順次読み出して、ディスクＩ／Ｆ２８およびデータ付加部３０を通じてデータ処理部２４へ送る。
【００６５】
ＳＳＤ４からのデータをデータ付加部３０が受けると、そのデータからダミーデータを取り除き（削除し）、データ処理部２４に渡す（ステップＳ１１０）。
【００６６】
データ処理部２４は受け取ったデータをホスト装置１へ送る（ステップＳ１１１）。この場合、バッファメモリ２３は経由しない。
【００６７】
ホスト装置１へのデータの送信が完了すると、ＳＳＤ４は、読出完了コマンドを、ディスクＩ／Ｆ２８を通じてコマンド応答部２２へ送り、さらにコマンド応答部２２からホスト装置１へ読出完了コマンドを送信する。
【００６８】
このようにこの第１実施形態によれば、２台のＳＳＤ３，４を用いてデータ同期（データの多重化またはデータの共通化）を実現し、待機中のＳＳＤにデータを書き込み、他方を書込禁止にしてデータの読み出しに対応することで、リアルタイム制御におけるデータの読み出しに対応することができる。
【００６９】
複数のＳＳＤ３，４を用いてデータ同期（データの多重化またはデータの共通化）して遅延保証する上で、一方のＳＳＤ（この例ではＳＳＤ４）にダミーデータを書き込むことによりＳＳＤ４の方が先にデータの上書き回数の制限値に到達するので、それぞれのＳＳＤ３，４に書き込むデータサイズが不均一となり、各ＳＳＤ３，４の寿命も不均一となる。
【００７０】
なお、コマンド応答部２２、または、データ処理部２４は、このダミーデータの書き込み回数もしくはダミーデータ数をカウントしておき、所定のカウント数を超えた場合、図示しないが警報ランプなどを点灯表示させたり、またはスピーカからアラーム音を発することにより、２台のＳＳＤ３，４が同時に寿命を迎える前にＳＳＤの交換をオペレータに喚起することができる。
【００７１】
この結果、複数のＳＳＤ３，４がほぼ同時に寿命を迎えることを防止でき、寿命を迎えた順にＳＳＤを交換・保守することでＳＳＤ内部のデータを保護することができる。
【００７２】
ホスト装置１からのデータの書き込み要求に対しては、ホスト装置１からのデータをバッファメモリ２３に保持しておく一方で、ＳＳＤ３，４側とは書き込みと読み出しの状態を切り替えながらバッファメモリ２３からデータを適宜書き込むことで、ＳＳＤ３，４で発生する遅延を吸収する。すなわち、遅延保証ユニット２においてＳＳＤ３，４への処理とホスト装置１への処理とを分離することで、ＳＳＤ３，４の応答遅延の影響がホスト装置１側へ及ばなくなり、ＳＳＤの遅延を保証することができる。
【００７３】
また、ホスト装置１からのデータの書き込みの際に、ホスト装置１から送られたデータのバッファメモリ２３への保持が完了しても直ちに書込完了の応答を返さずに、ホスト装置１がデータを送る周期に合わせて、データの書込完了コマンド（書込完了通知）をホスト装置１へ返すようにすることで、ＳＳＤ３，４の側でデータの書き込みに遅延が生じた場合でも、受信データがバッファメモリ２３に溜らなくなり、遅延の影響が吸収されるので、遅延時間が保証されてない汎用のＳＳＤ３，４などをリアルタイム制御に用いることができるようになる。
【００７４】
また、汎用のストレージ装置の一つであるＳＳＤ３，４を接続するユニットを外付けの拡張ユニット（遅延保証ユニット２）とすることで、以下のような効果が得られる。
【００７５】
１）外付けの遅延保証ユニット２に汎用のストレージ装置（ＳＳＤやＨＤＤ）を接続して、データの書き込みおよびデータの読み出しの際に、ストレージ装置に発生する遅延を保証することができる。 
２）ディスクＩ／Ｆ２７，２８の機能を実装変更（ディスクＩ／Ｆ２７，２８を他のＩ／Ｆと置換）するだけで、現在および未来に規格化されるあらゆるストレージ装置に対応可能である。つまりストレージ装置が故障したときや新しい世代のストレージ装置への変更を容易にできる。 
３）コンピュータやサーバーなどの拡張機能とすることも可能であり、インデント品の産業機器にも容易に組み込むことができる。
【００７６】
次に、図４，図５を参照して第２実施形態を説明する。この第２実施形態は、第１実施形態の変形例であり、第１実施形態と同じ構成には同一の符号を付しその説明は省略する。
【００７７】
図４に示すように、第２実施形態の遅延保証ユニット２はデータ付加部３０を制御するための手段（計数部３１、メモリ３２、制御部３３など）が設けられている。
【００７８】
計数部３１は、データ処理部２４からのデータにデータ付加部３０が付加したダミーデータのデータ量を計数（カウント）し、メモリ３２に保持するダミーデータ量計数部である。
【００７９】
メモリ３２は、例えばフラッシュメモリなどの不揮発性のメモリである。このメモリ３２には、計数部３１により計数（カウント）されたダミーデータのデータ量が蓄積される。
【００８０】
制御部３３はメモリ３２に保持されたダミーデータを付加したトータルのデータ量（総量）が予め設定された閾値に達した場合、データ付加部３０に対して以降のダミーデータの付加を停止させる制御を行う。
【００８１】
この第２実施形態の場合、遅延保証のための動作は第１実施形態と同じであり、ＳＳＤ４にデータを書き込む際、およびＳＳＤ４からデータを読み出す際の動作が異なるため、その動作について説明する。
【００８２】
ＳＳＤ４にデータを書き込む場合、データ処理部２４からのデータをデータ付加部３０が受け取ると、データ付加部３０は、受け取った書き込み対象のデータに一定サイズのダミーデータを付加してＳＳＤ４へ送り、書き込む。
【００８３】
この際、図５に示すように、計数部３１は、データ処理部２４からのデータにデータ付加部３０が付加したダミーデータのデータ量を計数（カウント）し（ステップＳ２０１）、メモリ３２に保持する。
【００８４】
制御部３３はメモリ３２のデータ量が更新されるたびに、保持されているダミーデータの付加量（トータルのダミーデータ量（総量））と予めメモリ３２に設定されている閾値とを比較し（ステップＳ２０２）、ダミーデータの付加量（トータルのダミーデータ量（総量））が閾値に達した場合（ステップＳ２０２のＹｅｓ）、データ付加部３０に対して、以降のダミーデータの付加を停止させるよう制御する（ステップＳ２０３）。
【００８５】
言い換えれば、ＳＳＤ４にはダミーデータ書き込み上限値、例えば、閾値として１GByteと設定しておき、メモリ３２は、累積されたダミーデータと閾値を比較し、累積値が１GByteの閾値を越えた場合はダミーデータを付加するのを止める。
【００８６】
これにより、一つのＳＳＤ４に、ある一定の量以上、ダミーデータが追記される（上書き回数が増える）ことがなくなり、片方のＳＳＤ４だけが極端に早く寿命を迎えてしまう、ということがなくなる。
【００８７】
このようにこの第２実施形態によれば、それぞれのＳＳＤ３，４に書き込むデータサイズが不均一となり、ＳＳＤ３，４の寿命を不均一にしながらも一方のＳＳＤ４だけが極端に早く寿命を迎えることを防止できる。
【００８８】
次に、図６，図７、図８を参照して第３実施形態を説明する。この第３実施形態は、第１実施形態の変形例であり、第１実施形態と同様の構成には同一の符号を付しその説明は省略する。
【００８９】
図６に示すように、第３実施形態の遅延保証ユニット２は、データ付加部３０とダミーデータ管理テーブル３４を備える。データ付加部３０はデータ処理部２４と複数のＳＳＤ３，４が接続される少なくとも一つのディスクＩ／Ｆ２７，２８との間に介挿されている。
【００９０】
つまりデータ付加部３０は両方のディスクＩ／Ｆ２７とディスクＩ／Ｆ２８にそれぞれ接続されていてもよく、一方のディスクＩ／Ｆ２７またはディスクＩ／Ｆ２８に接続されていてもよい。
【００９１】
図７に示すように、ダミーデータ管理テーブル３４には、各ＳＳＤ３，４に付加するダミーデータのサイズ（データ量）が記憶されている。例えば、ＳＳＤ３には、ダミーデータを付加しないでＳＳＤ４のみにダミーを付加するとする。その場合、ホスト装置１からのデータに対してＳＳＤ３に対してはダミーデータを付加せず、ＳＳＤ４にはホスト装置１からの１回目の書き込みデータに対して１０Kbyte、２回目には５Kbyte、３回目は２Kbyte・・・の様に書き込み回毎に異なった量のダミーデータを付加するように設定されている。この場合、付加するダミーデータ量を、第１の実施形態で書き込む一定のダミーデータ量以下に抑える様にすると、ディスク容量に対して有効なデータをより割り当てることになり、効率を高く取ることが出来る。また、可変長のデータと組み合わせて書き込み毎のダミーデータを増減する様にしても良い。
【００９２】
またこのダミーデータ管理テーブル３４には、ホスト装置１から指定された情報として、ＳＳＤ毎に、書き込み位置を示す論理アドレス（ＬＢＡ(H)）とデータのサイズ（データ量）、ダミーデータ付加後の指定情報として、ＳＳＤ毎に、書き込み位置を示す論理アドレス（ＬＢＡ(C)）とデータのサイズ（データ量）がデータ付加部３０により登録される。
【００９３】
ここで、ダミーデータ付加後の論理アドレス（ＬＢＡ(C)）とサイズは、ホスト装置１の指定（論理アドレス（ＬＢＡ(H)）とデータのサイズ）に、予めデータ付加部３０に設定されているダミーデータのサイズを加算した後の値である。
【００９４】
上記第１実施形態では、ホスト装置１から送られてくるデータは一定のサイズ、一定の間隔であったが、この第３実施形態の場合、ダミーデータ管理テーブル３４に、ホスト装置１から送られてくるデータの情報とダミーデータ付加後の情報とを登録し管理することで、データサイズは可変長であってもよく、またＳＳＤは２台とは限らず、図８に示すように、３台のＳＳＤ３，４，５を並列に接続した構成の場合も対応できる。つまり並列数が２台以上のものにも対応できる。
【００９５】
この第３実施形態の場合、データ処理部２４は、コマンド応答部２２からの書き込み指示により、状態テーブル２５を参照して複数のＳＳＤ３，４の中で、データを書き込み可能なＳＳＤ３またはＳＳＤ４に対してバッファメモリ２３に保持されていたデータを送る。
データ付加部３０はダミーデータ管理テーブル３４を参照して書き込み対象のＳＳＤ３，４に対応するサイズ（データ量）のダミーデータを、ＳＳＤ３，４へのデータに付加してＳＳＤ３，４に書き込む。図７のダミーデータ管理テーブルの例は、ＳＳＤ３に付加するダミーデータは０Kbyteであり、第１実施形態と同様にＳＳＤ３にはダミーデータを付加しない。
【００９６】
この第３実施形態によれば、ＳＳＤ毎に付加するダミーデータを管理するためのダミーデータテーブル３４を設けたことで、２台以上のＳＳＤ３，４…に対して、書き込みデータに付加するダミーデータのサイズ（データ量）や読み出すデータからダミーデータを削除する情報（論理アドレスやサイズ）を登録でき、より汎用性の高い遅延保証ユニット２を提供できる。
【００９７】
次に、図９乃至図１２を参照して第４実施形態を説明する。この第４実施形態は、第３実施形態の変形例であり、第３実施形態と同じ構成には同一の符号を付しその説明は省略する。
【００９８】
図９に示すように、第４実施形態の遅延保証ユニット２は、外部Ｉ／Ｆ２０、タイマー２１、コマンド応答部２２、バッファメモリ２３、データ処理部２４、状態テーブル２５、監視部２６、ディスクＩ／Ｆ２８、データ処理部２４、データ付加部４０、このデータ付加部４０が生成するパリティデータをどのＳＳＤへ書き込むかを制御する手段（計数部４１、メモリ４２、制御部４３など）、パリティデータ管理テーブル４４を有する。
【００９９】
計数部４１は、データ処理部２４からのデータにデータ付加部４０が付加したパリティデータのデータ付加量を計数（カウント）し、メモリ４２に保持するパリティデータ付加量計数部である。
【０１００】
メモリ４２は、例えばフラッシュメモリなどの不揮発性のメモリである。このメモリ４２には、計数部４１により計数（カウント）されたパリティデータのデータ付加量（総量）が蓄積される。
【０１０１】
メモリ４２には予めＳＳＤ群毎またはＳＳＤ毎に設定したパリティデータの書き込み総量または書き込み比の条件が記憶されている。
【０１０２】
この条件は、全てのストレージ装置間でパリティデータの書き込み総量または書き込み比が異なるように予め設定されたものである。データ付加部４０はこの条件に従って２つの分割データから生成したパリティデータを当該ストレージ装置群へ書き込む。
【０１０３】
書き込み総量が異なるような条件は、ＳＳＤ３ａへのパリティデータの書き込み量をａとし、ＳＳＤ３ｂへのパリティデータの書き込み量をｂとし、ＳＳＤ４ａへのパリティデータの書き込み量をｃとし、ＳＳＤ４ｂへのパリティデータの書き込み量をｄとするならば、ａ≠ｂ≠ｃ≠ｄであるという条件である。
【０１０４】
この条件は、パリティデータをどのＳＳＤにどれだけ書き込むかを示す条件であり、ＳＳＤ３ａ，３ｂ，４ａ，４ｂへのパリティデータの書き込み方と、この書き込み方の切換タイミングを示す閾値である。
【０１０５】
条件として設定した書き込み方の一例を以下に示す。  
パリティデータの書き込み総量が閾値に達するまでは、書き込み可能なストレージ装置群の第１ストレージ装置または第２ストレージ装置のいずれか一方のストレージ装置にパリティデータを書き込む。
【０１０６】
ＳＳＤ群３のＳＳＤ３ａにはパリティデータを書き込まず、ＳＳＤ３ｂには分割データを書き込む毎にパリティデータを毎回書き込み、ＳＳＤ群４のＳＳＤ４ａには分割データを３回書き込む毎にパリティデータを１回書き込み、ＳＳＤ群４のＳＳＤ４ｂには分割データを３回書き込む毎にパリティデータを２回書き込む。
【０１０７】
パリティデータの書き込み総量が閾値に達した場合は、それ以降、各ＳＳＤに分割データを書き込んだ後、パリティデータをＳＳＤ３ａとＳＳＤ３ｂに交互に書き込む。なおＳＳＤ群４についてもＳＳＤ４ａとＳＳＤ４ｂにパリティデータを交互に書き込む。
【０１０８】
書き込み可能なＳＳＤ群（例えばＳＳＤ群３）にデータを書き込んだ後、他方のＳＳＤ群（例えばＳＳＤ群４）が書き込み可能となった場合に、バッファメモリ２３のデータをＳＳＤ群４へ条件に従って書き込む。
【０１０９】
書き込み比が異なるような条件は、ＳＳＤ３ａへのパリティデータの書き込み量をａとし、ＳＳＤ３ｂへのパリティデータの書き込み量をｂとし、ＳＳＤ４ａへのパリティデータの書き込み量をｃとし、ＳＳＤ４ｂへのパリティデータの書き込み量をｄとするならば、ａ：ｂ≠ｃ：ｄであるという条件である。
【０１１０】
制御部４３はメモリ４２に保持されたパリティデータを付加したトータルのパリティデータ量（総量）が予めＳＳＤ群毎またはＳＳＤ毎に設定した閾値に達しない場合、データ付加部４０に対して一方のＳＳＤ３ｂにだけパリティデータを付加させる制御を行う一方、総量が閾値に達した場合、以降、データ付加部４０に対して２つのＳＳＤ３ａ，３ｂにパリティデータを均等に付加させる制御を行う。
すなわち、制御部４３は、予めＳＳＤ群毎またはＳＳＤ毎に設定された書き込み総量または書き込み比の条件に従ってパリティデータを付加する書込先のＳＳＤを変更するようデータ付加部４０を制御する。
【０１１１】
例えばカウントされたパリティデータの付加量（総量）が予め設定された閾値に達した場合、制御部４３は、以降のパリティデータを、ＳＳＤ３ａとＳＳＤ３ｂで交互に付加するようデータ付加部４０を制御する。
【０１１２】
図１０に示すように、パリティデータ管理テーブル４４には、各ＳＳＤ群３，４の各ＳＳＤ３ａ，３ｂ，４ａ，４ｂ毎に、付加するパリティデータのデータサイズに応じてＳＳＤのアドレスを変換するためのアドレス変換データが記憶される。この例では、当初は、ＳＳＤ３ａにはパリティデータを付加せず、アドレス変換しない。ＳＳＤ３ｂにパリティデータを付加してアドレス変換するものとする。
【０１１３】
このパリティデータ管理テーブル４４には、ホスト装置１から指定された情報として、ＳＳＤ毎に、書き込み位置を示す論理アドレス（ＬＢＡ(H)）とデータのサイズ（データ量）、パリティデータ付加後の指定情報として、ＳＳＤ毎に、書き込み位置を示す論理アドレス（ＬＢＡ(C)）とデータのサイズ（データ量）がデータ付加部４０により登録される。
【０１１４】
この場合、ホスト装置１からのデータに対してＳＳＤ３ａに対してはパリティデータを付加せず、ＳＳＤ３ｂにはホスト装置１からの１回目の書き込みデータＤ１（図１２参照）を分割した分割データａ，ｂから、データ付加部４０がパリティデータＰａｂを生成し、そのパリティデータＰａｂを書き込み後は、そのパリティデータＰａｂのデータサイズ分だけずらしたアドレスに次のデータを書き込むようにする。
【０１１５】
なおパリティデータ付加後の論理アドレス（ＬＢＡ(C)）とデータサイズは、ホスト装置１の指定（論理アドレス（ＬＢＡ(H)）とデータのサイズ）に、予めデータ付加部４０により生成されたパリティデータのデータサイズを加算した後の値である。
【０１１６】
つまりこのパリティデータ管理テーブル４４は、ホスト装置から指定されたデータ書込み用のアドレスを、パリティデータを含めて書き込むためのアドレス変換テーブルである。
【０１１７】
データ付加部４０は、データ処理部２４とディスクＩ／Ｆ２８との間に介挿されている。データ付加部４０は、書込み対象のデータＤ１を２つの分割データａ，ｂに分割し、分割した分割データａ，ｂを、書き込み対象のストレージ装置群が例えばＳＳＤ群３であれば、ＳＳＤ群３ヘストライピング動作により書込み、さらに２つの分割データａ，ｂから生成したパリティデータＰａｂを、制御部４３により指示された書込先のＳＳＤに書き込む。
【０１１８】
例えばＳＳＤ毎にパリティデータを付加した総量と閾値との比較の結果、総量が閾値に達していない場合、データ付加部４０はＳＳＤ群３の一方のＳＳＤ３ｂにだけパリティデータを付加してＳＳＤ間で使用差を生じさせる。
【０１１９】
また、ＳＳＤ毎にパリティデータを付加した総量が閾値に達して、ＳＳＤの記憶領域の使用量がある程度不均一になった場合、データ付加部４０はＳＳＤ群３の双方のＳＳＤ３ａとＳＳＤ３ｂにパリティデータを交互に書き込むことで、以降、使用差がそれ以上広がらないようにすることができる。
【０１２０】
その後、他方のストレージ装置群であるＳＳＤ群４が書込み可能となった場合に、データ付加部４０は、バッファメモリ２３に保持されているデータを他方のストレージ装置群であるＳＳＤ群４に上記条件を満たすように書き込む。
【０１２１】
詳細に説明すると、データ付加部４０は、書込み対象のデータＤ１を２つの分割データａ，ｂに分割し、そのうち一方の分割データａを、書き込み対象のストレージ装置群が例えばＳＳＤ群３であれば、ＳＳＤ３ａ（第１ストレージ装置）に書込み、また残りの分割データｂをＳＳＤ群３のＳＳＤ３ｂ（第２ストレージ装置）に書き込み、２つの分割データａ，ｂから生成したパリティデータＰａｂを予め設定した条件に従ってＳＳＤ３ａまたはＳＳＤ３ｂのいずれか一方（この例ではＳＳＤ３ｂ）に書き込む。
【０１２２】
その後、ＳＳＤ群４が書込み可能になると、データ付加部４０は、バッファメモリ２３の書込み対象のデータＤ１を２つの分割データａ，ｂに分割し、そのうち一方の分割データａを、書き込み対象のストレージ装置群であるＳＳＤ群４のＳＳＤ４ａ（第１ストレージ装置）に書込み、また残りの分割データｂをＳＳＤ群４のＳＳＤ４ｂ（第２ストレージ装置）に書き込み、２つの分割データａ，ｂから生成したパリティデータＰａｂを予め設定した条件に従ってＳＳＤ４ａまたはＳＳＤ４ｂのいずれか一方（この例ではＳＳＤ４ａ）に書き込む。
【０１２３】
但し、ＳＳＤ群４とＳＳＤ群３とで使用差を生じさせるため、データ付加部４０は、条件に従ってＳＳＤ群４のＳＳＤ４ａには分割データを３回書き込む毎にパリティデータを１回書き込み、ＳＳＤ群４のＳＳＤ４ｂには分割データを３回書き込む毎にパリティデータを２回書き込む。
【０１２４】
ここで、条件には、付加したパリティデータの総量の閾値（例えば１Gbyteなど）があり、この閾値に総量が達したか否かによってパリティデータの書込先を変える。
つまりパリティデータを付加した総量が閾値に達するまではパリティデータをＳＳＤ３ｂにだけ書き込み、総量が閾値に達した後は、パリティデータの書込先をＳＳＤ３ａ→ＳＳＤ３ｂ→ＳＳＤ３ａ…というように交互に変えてパリティデータを書き込む。
【０１２５】
この例では、パリティデータを付加した総量が閾値（例えば１Gbyteなど）以内であれば、次のパリティデータを一方のＳＳＤ３ｂに書き込み、総量が閾値に達した場合は、以降、パリティデータをＳＳＤ３ａとＳＳＤ３ｂに交互に書き込む。
【０１２６】
この第４実施形態の場合、遅延保証のための動作は第１乃至第３実施形態と同じであり、ストライピング動作によりデータの書き込みおよび読み出しを高速化するために１つのデータを書き込むためのＳＳＤを多数構成（グループ構成または群構成という）としている。
【０１２７】
一方のＳＳＤ群３を２台のＳＳＤ３ａ，３ｂで構成し、他方のＳＳＤ群４を２台のＳＳＤ４ａ，４ｂで構成する。
【０１２８】
またこの第４実施形態では、各ＳＳＤ群３，４のＳＳＤ３ａ，３ｂ，４ａ，４ｂのうちの一方のＳＳＤ（この例ではＳＳＤ３ｂ，４ｂ）に書き込むデータは単なるダミーデータではなく、他のデータとの関連のある（意味のある）パリティデータとしている。
【０１２９】
つまり、この第４実施形態では、書込み対象のデータを分割した上で、ストライピングによりＳＳＤ群３のＳＳＤ３ａ，３ｂに書き込み高速化を図ると共に、一方のＳＳＤ３ｂへパリティデータを付加することにより、ＳＳＤ３ａ，３ｂ間の使用差を発生させると共にデータの信頼性を向上し、その後、書込み可能になったＳＳＤ群４に、バッファメモリ２３に保持されていたデータを分割した分割データをＳＳＤ４ａ，４ｂに書き込み、さらにこれら分割データから生成したパリティデータをＳＳＤ４ａ，４ｂに不均一に書き込むことで、ＳＳＤ３ａ，３ｂ，４ａ，４ｂ間の使用差を発生させる。
【０１３０】
以下、図１１，図１２を参照してこの第４実施形態の動作を説明する。  
この第４実施形態では、監視部２６がディスクＩ／Ｆ２８を監視し、ホスト装置からのコマンドを受けたデータ処理部２４が処理対象のＳＳＤを決定し、書き込みコマンドまたは読み出しコマンドをデータ付加部４０へ送るまでの動作（図１１のステップＳ２０１−Ｓ２０７）は第１実施形態（図３のフローチャート）と同様であり、それ以降の動作について説明する。  
【０１３１】
データ処理部２４から、書き込み対象のデータ（例えば図１２に示すデータＤ１）をデータ付加部４０が受け取ると、データ付加部４０は、受け取ったデータＤ１を２つの分割データａ，ｂに分割し、分割した２つの分割データａ，ｂのうち一方の分割データａをＳＳＤ３ａに書込み、残りの分割データｂをＳＳＤ３ｂに書き込む（図１１のステップＳ２０８）。
【０１３２】
続いて、データ付加部４０は、２つの分割データａ，ｂからパリティデータを生成し、生成したパリティデータを、制御部４３により指定された書込先のＳＳＤへ書き込む。
この際、計数部４１は、データ付加部４０により生成されたパリティデータのデータ量を計数（カウント）し、メモリ４２に保持する。
【０１３３】
制御部４３はメモリ４２のデータ量が更新されるたびに、メモリ４２に保持されているパリティデータの付加量（トータルのパリティデータ量（総量））が閾値Ｓに達したか否かを確認し（ステップＳ２０９）、確認結果に応じて書込先をデータ付加部４０に指示（制御）する。
【０１３４】
例えばパリティデータの総量が閾値Ｓに達していない場合（ステップＳ２０９のＮｏ）、制御部４３はパリティデータをＳＳＤ３ｂにだけ書き込むようデータ付加部４０を制御する。
【０１３５】
この制御により、データ付加部４０は分割データａ，ｂから生成したパリティデータを一方のＳＳＤ３ｂにだけ書き込む（ステップＳ２１０）。
【０１３６】
この後、コマンド応答部２２が状態テーブル２５を参照した結果、ＳＳＤ群４が書込み可能になると、データ付加部４０は、バッファメモリ２３に保持されていた書込み対象のデータとこのデータから生成したパリティデータとをディスクＩ／Ｆ２８を通じて書き込み対象のＳＳＤ群４に書き込む（ステップＳ２１１）。
【０１３７】
ＳＳＤ群４の各ＳＳＤ４ａ，４ｂへデータを書き込むにあたり、図１２に示すように、ＳＳＤ群４のＳＳＤ４ａには、データを３回書き込むうちの１回だけパリティデータを書込み、ＳＳＤ群４のＳＳＤ４ｂにはデータを３回書き込むうちの残りの２回だけパリティデータを書込むことで、各ＳＳＤ４ａ，４ｂへ書き込むデータ量を不均一にすることができる。
【０１３８】
このようにすることで、ＳＳＤ群３，４および各ＳＳＤ３ａ〜４ｂの記憶領域の使用量を不均一にすることができる。
【０１３９】
また、ＳＳＤ群へのデータの書き込みが進み、例えば図１２のデータＤ５を書き込む際に、付加するパリティデータの総量が閾値Ｓに達していた場合（ステップＳ２０９のＹｅｓ）、制御部４３は、以降、書き込むデータに付加するパリティデータをＳＳＤ３ａとＳＳＤ３ｂに交互に書き込むようデータ付加部４０を制御する。
【０１４０】
この制御により、データ付加部４０は、書込み対象のデータがデータＤ５であれば、その分割デーｉ，ｊから生成したパリティデータＰｉｊをＳＳＤ３ａに書き込み、次のデータＤ６のパリティデータＰｍｎについてはＳＳＤ３ｂに書き込むようになる（ステップＳ２１２）。
【０１４１】
言い換えると、ＳＳＤ群３，４のうちパリティデータ書込み回数が一番多いＳＳＤ、例えばＳＳＤ３ｂに、予めパリティデータ書き込みの上限値、例えば閾値Ｓとして１GByteなどと設定しておき、制御部４３は、累積（カウント）されたパリティデータの付加総量（累積値）と閾値Ｓとを比較し、累積値が例えば１GByteの閾値Ｓを越えた場合は、以降、パリティデータをＳＳＤ３ａとＳＳＤ３ｂで交互に書き込ませるようにする。
【０１４２】
なお、ステップＳ２１３−Ｓ２１６の、読み出しコマンドに対するデータの読み出し処理については、第１実施形態（図３のフローチャート）で説明したダミーデータをパリティデータへ変更、およびＳＳＤをＳＳＤ群へ変更したものである。
【０１４３】
この第４実施形態では、ステップＳ２１５の処理が第１実施形態とは異なるためその処理を説明する。
【０１４４】
ステップＳ２１５の処理の場合、データ付加部４０は、データの読み出しが可能なＳＳＤ群の２つのＳＳＤから、読み出し対象のデータの分割データとパリティデータを読み出し、分割データのパリティチェックを行った上で、２つの分割データを１つのデータに結合してデータ処理部２４へ渡す。
【０１４５】
これにより、ＳＳＤ３ａ，３ｂ間（およびＳＳＤ４ａ，４ｂ間）で、ある一定の使用量の差が生じれば、それ以上は差が広がらないようになり、各ＳＳＤ群３，４の片側のＳＳＤ３ｂ，４ｂだけが極端に早く寿命を迎えてしまう、ということがなくなる。
【０１４６】
このようにこの第４実施形態によれば、４台のＳＳＤ３ａ，３ｂ，４ａ，４ｂを利用して、そのうちＳＳＤ３ａ，３ｂをＳＳＤ群３（第１のストレージ装置群）とし、他のＳＳＤ４ａ，４ｂを、応答時間を保証するためのＳＳＤ群４（第２のストレージ装置群）とし、ＳＳＤ群３の各ＳＳＤ３ａ，３ｂを利用してストライピングを行いながら、２つのＳＳＤ群３，４のうちの一方のＳＳＤ群を常にデータ読み出し可能な状態としておくことで、個々のＳＳＤ３ａ，３ｂ，４ａ，４ｂの寿命の不均一化はもとより、データの書込時間の高速化と応答時間の保証を同時に実現することができる。
【０１４７】
この結果、各ＳＳＤの寿命の不均一化と、データ書み出しおよびデータ読み出しの際のストライピングによる高速化と、応答時間の保証とを同時に実現することができる。
【０１４８】
以上のように本発明の各実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１４９】
また上記実施形態に示した各構成要素を、コンピュータのハードディスク装置などのストレージにインストールしたプログラムで実現してもよく、また上記プログラムを、コンピュータ読取可能な電子媒体：electronic mediaに記憶しておき、プログラムを電子媒体からコンピュータに読み取らせることで本発明の機能をコンピュータが実現するようにしてもよい。電子媒体としては、例えばＣＤ−ＲＯＭ等の記録媒体やフラッシュメモリ、リムーバブルメディア：Removable media等が含まれる。さらに、ネットワークを介して接続した異なるコンピュータに構成要素を分散して記憶し、各構成要素を機能させたコンピュータ間で通信することで実現してもよい。
【符号の説明】
【０１５０】
１…ホスト装置、３，４…ソリッド・ステート・ディスク（ＳＳＤ）、２０…外部インターフェース（外部Ｉ／Ｆ）、２１…タイマー、２２…コマンド応答部、２３…バッファメモリ、２４…データ処理部、２５…状態テーブル、２６…監視部、２７，２８…ディスクインターフェース（ディスクＩ／Ｆ）、３０，４０…データ付加部、３１，４１…計数部、３２，４２…メモリ、３３，４３…制御部、３４…ダミーデータ管理テーブル、４４…パリティデータ管理テーブル。
【図１】
0005524279.tif 000002
【図２】
0005524279.tif 000003
【図３】
0005524279.tif 000004
【図４】
0005524279.tif 000005
【図５】
0005524279.tif 000006
【図６】
0005524279.tif 000007
【図７】
0005524279.tif 000008
【図８】
0005524279.tif 000009
【図９】
0005524279.tif 000010
【図１０】
0005524279.tif 000011
【図１１】
0005524279.tif 000012
【図１２】
0005524279.tif 000013