(57)【特許請求の範囲】
【請求項１】
ホスト装置と少なくとも一つ以上のストレージ装置が接続可能なインターフェースを有する情報処理装置において、
前記インターフェースに接続された前記ストレージ装置の動作状態とデータの書込先とが設定可能な状態テーブルと、
前記ストレージ装置の動作状態を監視し、監視結果として前記ストレージ装置の動作状態を前記状態テーブルに設定する監視部と、
データを保持可能なバッファメモリと、
前記ホスト装置の種別毎に予め設定、保持される応答時間になるまで時間をカウントし、前記応答時間まで時間がカウントされたことを指示元へ通知するタイマーと、
前記ホスト装置からデータの書き込み要求があった場合、前記タイマーへカウント開始を指示すると共にデータの書込先を前記状態テーブルに設定し、書き込み対象の前記ストレージ装置への書き込みを指示する制御信号を出力し、前記ホスト装置からの書き込み要求の後に前記一定の応答時間内に送られてくる書き込み対象のデータを前記バッファメモリへ保持する一方、前記応答時間まで時間がカウントされたことが前記タイマーから通知されると前記書き込み要求に対する書き込み完了の応答を前記ホスト装置へ返す応答部と、
前記応答部からの前記制御信号が受信されると、前記状態テーブルを参照して前記ストレージ装置の動作状態とデータの書込先の設定からデータを書き込み可能なストレージ装置を選定し、選定したストレージ装置に対して、前記バッファメモリから読み出したデータを書き込むデータ処理部と
を具備する情報処理装置。
【請求項２】
前記監視部は、
前記ストレージ装置の動作状態を監視した監視結果として、前記ストレージ装置の動作状態を、待機中と書込中のいずれかを示すフラグを前記状態テーブルに設定する請求項１記載の情報処理装置。
【請求項３】
前記応答部は、
前記ホスト装置から書き込みコマンドが受信されたとき、前記状態テーブルを参照して前記ストレージ装置の動作状態を確認し、データの書込先を選定し、どのストレージ装置に書き込むのかを示すフラグを前記状態テーブルに設定する請求項１記載の情報処理装置。
【請求項４】
ホスト装置から受信され、前記バッファメモリに保持したデータを、あるストレージ装置に書き込んだ後、前記バッファメモリから読み出して他のストレージ装置に書き込むことで、複数のストレージ装置に対してデータ同期を行う請求項１記載の情報処理装置。
【請求項５】
ホスト装置と少なくとも一つ以上のストレージ装置が接続可能なインターフェースを有する情報処理装置における情報処理方法において、
前記インターフェースに接続されたストレージ装置の動作状態を監視部が監視し、監視結果として前記ストレージ装置の動作状態を状態テーブルに設定し、
前記ホスト装置からデータの書き込み要求があった場合、応答部がタイマーへカウント開始を指示すると共にデータの書込先を前記状態テーブルに設定し、書き込み対象の前記ストレージ装置への書き込みを指示する制御信号を出力し、前記ホスト装置からの書き込み要求の後に一定の応答時間内に送られてくるデータを前記バッファメモリへ保持し、
前記ホスト装置の種別毎に予め設定、保持される応答時間になるまで時間をカウントし、前記応答時間まで時間がカウントされたことを前記応答部へ通知し、
前記制御信号を受信したデータ処理部が、前記状態テーブルを参照して前記ストレージ装置の動作状態とデータの書込先の設定とから書き込み可能なストレージ装置を選定し、選定したストレージ装置に対して、前記バッファメモリから読み出したデータを書き込み、
前記タイマーから前記応答時間まで時間がカウントされたことが前記応答部に通知されると前記応答部が前記書き込み要求に対する書き込み完了の応答を前記ホスト装置へ返す、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置および情報処理方法に関する。
【背景技術】
【０００２】
例えばビデオサーバなどに記憶された映像コンテンツをリアルタイムに配信するような産業用途向けの情報処理装置には、例えば大容量のハートディスク装置などのストレージ装置が使用されている。
【０００３】
この種の情報処理装置は、ストレージ装置に対して、一定の時間内にデータの書き込み処理や読み出し処理を完了する必要がある。なぜなら、データの書き込みや読み出しが定められた時間を超えてしまうと、映像や音声の途切れなどが生じるおそれがあるからである。
【０００４】
ハートディスク装置などは、大容量かつ低価格ではあるものの、速度と信頼性の面で難があり、近年では、ソリッド・ステート・ディスク：ＳＳＤが高速なストレージ装置として産業用途向けのシステムで利用されるようになってきた（例えば特許文献１参照）。
【０００５】
産業用途向けのシステムで利用されるＳＳＤは、容量が大きくなるとそれなりに高価であり、安価な汎用用途のＳＳＤ（例えばＳＡＴＡなどの汎用インターフェースで接続可能なタイプ）の利用が望まれている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−１０２３６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、汎用のＳＳＤなどのストレージ装置は、データの書き込み処理や読み出し処理の遅延時間が保証されておらず、そのままではデータ処理に遅延が生じることがあり、リアルタイム制御を行う装置には適用できないという問題がある。
【０００８】
本発明が解決しようとする課題は、汎用のストレージ装置をリアルタイム制御に用いることができる情報処理装置および情報処理方法を提供することにある。
【課題を解決するための手段】
【０００９】
実施形態の情報処理装置は、ホスト装置と少なくとも一つ以上のストレージ装置が接続可能なインターフェースを有する情報処理装置であり、状態テーブル、監視部、バッファメモリ、タイマー、データ処理部、応答部を備える。前記状態テーブルには、前記インターフェースに接続された前記ストレージ装置の動作状態とデータの書込先とが設定可能である。前記監視部は前記ストレージ装置の動作状態を監視し、監視結果として前記ストレージ装置の動作状態を前記状態テーブルに設定する。前記バッファメモリはデータを一時保持可能である。前記タイマーは前記ホスト装置の種別毎に予め設定、保持される応答時間になるまで時間をカウントし、前記応答時間まで時間がカウントされたことを指示元へ通知する。前記応答部は前記ホスト装置からデータの書き込み要求があった場合、前記タイマーへカウント開始を指示すると共にデータの書込先を前記状態テーブルに設定し、書き込み対象の前記ストレージ装置への書き込みを指示する制御信号を出力し、前記ホスト装置からの書き込み要求の後に一定の前記応答時間内に送られてくる書き込み対象のデータを前記バッファメモリへ保持する一方、前記応答時間まで時間がカウントされたことが前記タイマーから通知されると前記書き込み要求に対する書き込み完了の応答を前記ホスト装置へ返す。前記データ処理部は前記応答部からの前記制御信号が受信されると、前記状態テーブルを参照して前記ストレージ装置の動作状態とデータの書込先の設定からデータを書き込み可能なストレージ装置を選定し、選定したストレージ装置に対して、前記バッファメモリから読み出したデータを書き込む。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態の情報処理装置の構成を示す図である。
【図２】状態テーブルの内容を示す図である。
【図３】データ書き込みの際の各部の動作を示すシーケンスチャートである。
【図４】データ読み出しの際の各部の動作を示すシーケンスチャートである。
【図５】ＳＳＤへのデータの書き込みの際に遅延が発生していない場合のタイムチャートである。
【図６】ＳＳＤへのデータの書き込みの際に遅延が発生したときの動作を示すタイムチャートである。
【図７】第２実施形態の情報処理装置の構成を示す図である。
【図８】第３実施形態の情報処理装置の構成を示す図である。
【図９】第４実施形態の情報処理装置の構成を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、実施形態を詳細に説明する。図１は情報処理装置の一つの実施の形態の遅延保証ユニット２の構成を示す図である。
【００１２】
図１に示すように、この実施形態の遅延保証ユニット２は、ホスト装置１が接続された外部インターフェース２０（以下「外部Ｉ／Ｆ２０」と称す）、タイマー２１、コマンド応答部２２、バッファメモリ２３、データ処理部２４、状態テーブル２５、監視部２６、ディスクインターフェース２７，２８（以下「ディスクＩ／Ｆ２７，２８」と称す）を有している。
【００１３】
ホスト装置１は、例えばビデオサーバなどであり、ストレージ装置にデータの書き込みや読み出しに応答時間の保証が求められるマルチメディアシステム、情報処理システム、製造プラントシステムなどの産業用途向けのシステムに適用される。
【００１４】
ディスクＩ／Ｆ２７，２８は、少なくとも一つ以上の外部ストレージ装置、例えばソリッド・ステート・ディスク３，４（以下「ＳＳＤ３，４」と称す）などと通信するためのインターフェースであり、例えば、シリアルＡＴＡ（ＳＡＴＡ−２．６または３．０）やＰＣＩ−ｅのポートである。この例では、ディスクＩ／Ｆ２７，２８に、ＳＳＤ３，４がそれぞれ一台ずつ接続されている。
【００１５】
外部Ｉ／Ｆ２０は、ホスト装置１と通信するためのインターフェースであり、例えば、シリアルＡＴＡ（ＳＡＴＡ−２．６または３．０）やＰＣＩ−ｅのポートである。
タイマー２１は、コマンド応答部２２からの指示によりタイマー動作を開始し、カウントされた時間が、予め設定されたタイムアップ時間Ｔに達すると、コマンド応答部２２にタイムアップを通知する。
【００１６】
なお、ホスト装置１は、データの書き込み処理および読み出し処理を、システム仕様で定められた許容応答時間t以内に完了する必要がある。許容応答時間tから、ホスト装置１とコマンド応答部２２間のコマンドの転送時間（インターフェース仕様により決まる一定時間）を差し引いた時間をタイムアップ時間Ｔとして設定することで遅延時間を一定の時間で納めるようにしている。
【００１７】
ホスト装置１へ応答すべき時間は、予めタイマー２１に設定されており、適用するシステムにより異なる。例えば、映像を扱うシステムでは３３ｍｓ、製造プラントで使用するデータロガーなどであれば１〜１０ｍｓなどである。
【００１８】
タイムアップ時間Ｔは、ホスト装置１へ応答を返す上で遅延が許容される最大時間であり、予めタイマー２１に設定しておいてもよく、タイマー２１がタイムアップ時間Ｔを参照する書き換え可能なメモリに、外部からアクセスし、扱うシステムに応じてタイムアップ時間Ｔを書き換える（変更する）ようにしてもよい。
【００１９】
すなわち、タイマー２１は、コマンド応答部２２からのカウント開始の指示により予め設定されたタイムアップ時間Ｔ（応答時間）をカウントし、タイムアップすると、タイムアップしたことを指示元のコマンド応答部２２へ通知する。
【００２０】
コマンド応答部２２は、ホスト装置１との間でコマンドおよびデータのやりとりを行う。コマンド応答部２２は、ホスト装置１から受信されたコマンドに応じて、データ処理部２４に対してデータの書き込みまたは読み出しを指示（制御）する。
【００２１】
またコマンド応答部２２は、ホスト装置１から書き込み開始コマンド（データの書き込み要求）が受信されることで、複数のＳＳＤ３，４の書込先として、どのＳＳＤに書き込むかを示すフラグ（書込先フラグ）を状態テーブル２５に設定する。
【００２２】
またコマンド応答部２２はホスト装置１から書き込み開始コマンド（データの書き込み要求）が受信された場合、タイマー２１へカウント開始を指示すると共に、状態テーブル２５を参照してＳＳＤ３，４の動作状態（待機中か書込中か）を確認し、動作状態に応じてデータの書込先を選定し、データの書込先を状態テーブル２５に設定し、書き込み対象のＳＳＤ（ＳＳＤ３またはＳＳＤ４）への書き込みを指示する制御信号を出力し、ホスト装置１からの書き込み要求の後に一定の単位時間t以内に順次送られてくる書き込み対象のデータをバッファメモリ２３へ保持する。ＳＳＤ３，４の動作状態が「待機中」であれば、ＳＳＤ動作状態フラグを「書込中」に変更し、予め設定されている側のＳＳＤを書込先として選定する。
【００２３】
一方、タイマー２１からタイムアップしたことがコマンド応答部２２に通知された時点で、コマンド応答部２２は書き込み要求に対する書き込み完了の応答をホスト装置１へ返す。すなわち、コマンド応答部２２は、バッファメモリ２３へのデータの保持（書き込み）が完了しても直ぐには書き込み完了の応答を返さず、システムの応答時間であるタイムアップ時間Ｔを待って応答を返す。これにより、データの受信を完了してからタイムアップ時間Ｔまでが、ＳＳＤ３，４の側でデータ書き込みの遅延が生じた際の遅延保証時間Ｔ１（図３参照）として確保されることになる。
【００２４】
バッファメモリ２３は、データを一時保持可能である。バッファメモリ２３には、ホスト装置１から受信されたデータが一時的に保持（キャッシュ）される。
【００２５】
データ処理部２４は、コマンド応答部２２からの制御信号を受信すると、状態テーブル２５を参照してＳＳＤ３，４の動作状態と書込先の状態から書き込み可能なＳＳＤ（ＳＳＤ３，４のうちのいずれか）を選定し、選定したＳＳＤに対して、バッファメモリ２３から読み出したデータを書き込む。すなわちデータ処理部２４は、コマンド応答部２２からの制御信号により制御されて、ＳＳＤ３，４にデータを書き込みまたはＳＳＤ３，４から読み出す。
【００２６】
状態テーブル２５には、ディスクＩ／Ｆ２７，２８に接続されたＳＳＤ３，４の動作状態とＳＳＤ３，４の書込先が設定可能であり、監視部２６によりそれぞれにフラグ（“0”または“1”）が設定される。
【００２７】
監視部２６は、ディスクＩ／Ｆ２７，２８へのコマンドまたはデータの入出力を監視する。すなわち監視部２６はディスクＩ／Ｆ２７，２８を介してＳＳＤ３，４を監視し、監視結果として、ＳＳＤ３，４の動作状態と書込先を状態テーブル２５に設定する。
【００２８】
具体的に、監視部２６は、監視結果のＳＳＤ３，４の動作状態を「待機中」と「書込中」のいずれかを示すフラグ（動作状態フラグ）を状態テーブル２５に設定する。
【００２９】
ＳＳＤ３，４の動作状態フラグは、例えば“0”または“1”のいずれが設定され、“0”のときに待機中（いずれのＳＳＤにも書き込みをしていない状態）、“1”のときにどちらかのＳＳＤ３，４にデータを書き込み中であることを示す。
【００３０】
また書込先フラグは、例えば“0”または“1”のいずれが設定され、“0”のときにＳＳＤ３へデータを書き込む（このときは、ＳＳＤ４から読み出しを行う）、“1”のときにＳＳＤ４へデータを書き込む（このときは、ＳＳＤ３から読み出しを行う）ことを示す。例えば、書込先フラグ“０”について、ＳＤ３にデータの書き込みを許可していることを言い換えると、他のＳＳＤ４に対して書き込み禁止の設定をしていることと同じ意味である。
【００３１】
データ処理部２４は状態テーブル２５を参照して、コマンド応答部２２からのコマンドで指示されたデータを書き込み可能または読み出すことが可能な側のＳＳＤ（ＳＳＤ３またはＳＳＤ４のいずれか）に対してデータを書き込みまたは読み出す。
【００３２】
データ処理部２４は、ディスクＩ／Ｆ２７，２８に接続された複数のＳＳＤ３，４に対してデータの共通化を行う。具体的には、ホスト装置１から受信され、バッファメモリ２３に保持したデータを、あるＳＳＤ３に書き込んだ後、そのデータをバッファメモリ２３から読み出して他のＳＳＤ４に書き込むことで、複数のＳＳＤ３，４に対してデータ同期のための処理を行う。
【００３３】
続いて、この実施形態の遅延保証ユニット２の動作を（図３：データ書き込み動作）と（図４：データ読出し動作）に分けて説明する。
（データ書き込み動作）
まず、図３を参照してデータ書き込み動作を説明する。
外部のホスト装置１がＳＳＤ（ＳＳＤ３またはＳＳＤ４のいずれか）へデータを書き込む場合、ホスト装置１はデータの書き込みコマンドをコマンド応答部２２へ送信する（図３のステップＳ１０１）。
【００３４】
ホスト装置１から送信された書き込みコマンドをコマンド応答部２２が受信すると、コマンド応答部２２は、タイマー開始コマンドをタイマー２１へ送ると共に（ステップＳ１０２）、状態テーブル２５を参照して、ＳＳＤ（ＳＳＤ３、ＳＳＤ４共に）が待機中であることをチェックし、ＳＳＤが待機中のとき、状態テーブル２５へ書き込み先変更コマンドを送ることで、状態テーブル２５の書込先フラグを設定する（ステップＳ１０３）。
【００３５】
例えば、書込先フラグが“１”でＳＳＤが待機中であった場合に、コマンド応答部がホスト装置１から送信された書き込みコマンドを受信すると、書込先フラグを“0”に変更し、ＳＳＤ３へ書き込み許可（ＳＳＤ４を書き込み禁止）に設定する。
タイマー２１はタイマー開始コマンドを受けて、カウントを開始する。
【００３６】
またコマンド応答部２２は、待機中のＳＳＤが存在すると、ホスト装置１へ応答の受信可能コマンドを返し（ステップＳ１０４）、この受信可能コマンドによりホスト装置１からデータが順次送られる（ステップＳ１０５）。
【００３７】
コマンド応答部２２は、ホスト装置１より送信されてきたデータＡ〜Ｈをバッファメモリ２３に順次保持しながら、書込開始コマンド（制御信号）をデータ処理部２４へ送る（ステップＳ１０６）。
【００３８】
データ処理部２４は、コマンド応答部２２からの書込開始コマンド（制御信号）を受けると、状態テーブル２５を参照して、状態テーブル２５の書込先フラグから書き込み先をＳＳＤ３に決定し、ＳＳＤ３に対して書込開始コマンドをディスクＩ／Ｆ２７（監視部２６）を通じて送信する（ステップＳ１０７，Ｓ１０８）。
【００３９】
書込開始コマンドを受信したＳＳＤ３からは、受信可能コマンドが返されるので、この受信可能コマンドがディスクＩ／Ｆ２７および監視部２６を通じてデータ処理部２４に受信されると（ステップＳ１０９，Ｓ１１０）、データ処理部２４は、バッファメモリ２３から順次読み出したデータＡ〜ＨをディスクＩ／Ｆ２７を通じて書き込み対象のＳＳＤ３に書き込む（ステップＳ１１１）。
【００４０】
一方、タイマー２１は、カウントを開始してからタイムアップ時間Ｔ（応答時間）が経過すると、タイムアップし、タイムアップ通知コマンドをコマンド応答部２２へ返す（ステップＳ１１２）。
【００４１】
コマンド応答部２２は、一回分の全てのデータＡ〜Ｈがバッファメモリ２３に受信されたとしても受信完了の応答を返さず、タイマー２１からのタイムアップ通知コマンドが受信されるのを待機する。この待機時間が遅延保証時間Ｔ１（図３参照）となる。
【００４２】
そして、タイムアップ通知コマンドを受けると、書込完了コマンドをホスト装置１へ送信する（ステップＳ１１３）。
【００４３】
また、ＳＳＤ３へのデータの書き込みが完了すると、ＳＳＤ３からは、書込完了コマンドが返されるので、この書込完了コマンドがディスクＩ／Ｆ２７を通じて監視部２６およびデータ処理部２４に受信される（ステップＳ１１４）。
書込完了コマンドを受けた監視部２６は、状態テーブル２５の、ＳＳＤ動作状態フラグを“1”「書き込み中」→“0”「待機中」へ変更する。
【００４４】
書込完了コマンドを受けたホスト装置１が次のデータの書き込み開始コマンドを送信し、そのコマンドをコマンド応答部２２が受信すると（ステップＳ１１５）、コマンド応答部２２は、状態テーブル２５の、書込先フラグの状態を“0”「ＳＳＤ３へ書込許可」→“1”「ＳＳＤ４へ書込許可」へ変更する（ステップＳ１１６）。
【００４５】
データ処理部２４は、書込完了コマンドが受信されると、状態テーブル２５の書き込み先フラグを確認し（ステップＳ１１７）、書込先フラグが“1”「ＳＳＤ４へ書込許可」であることから、データ同期のため、ＳＳＤ４に対してデータの書込開始コマンドを送信する（ステップＳ１１８）。
【００４６】
この書込開始コマンドを受信したＳＳＤ４からは、受信可能コマンドが返されるので、この受信可能コマンドがディスクＩ／Ｆ２８および監視部２６を通じてデータ処理部２４に受信されると（Ｓ１１９）、データ処理部２４は、バッファメモリ２３に保持されているデータＡ〜Ｈを順次読み出し、ディスクＩ／Ｆ２８を通じて書き込み対象のＳＳＤ４に書き込む（ステップＳ１２０）。
【００４７】
ＳＳＤ４へのデータの書き込みが完了すると、ＳＳＤ４からは、書込完了コマンドが返されるので、この書込完了コマンドがディスクＩ／Ｆ２８を通じて監視部２６およびデータ処理部２４に受信される（ステップＳ１２１，Ｓ１２２）。
【００４８】
監視部２６は、書込完了コマンドが受信されると、状態テーブル２５の、ＳＳＤ動作状態フラグを“1”「書込中」→“0”「待機中」へ変更する（ステップＳ１２３）。
【００４９】
なお、コマンド応答部２２は、バッファメモリ２３に書き込まれるデータの量が所定のデータ量を超えたときに、その旨を示す情報を制御信号としてデータ処理部２４へ通知する。
【００５０】
（データ読み出し動作）
次に、図４を参照してデータ読み出し動作を説明する。
外部のホスト装置１がＳＳＤ３またはＳＳＤ４からデータを読み出す場合、ホスト装置１はデータの読出コマンドをコマンド応答部２２へ送信する（図４のステップＳ２０１）。
【００５１】
ホスト装置１から送信された読出コマンドをコマンド応答部２２が受信すると、コマンド応答部２２は、その読出コマンドに従い、データを読み出すよう指示する制御信号をデータ処理部２４へ送る（ステップＳ２０２）。
【００５２】
データ処理部２４は、コマンド応答部２２からの読出開始コマンド（制御信号）を受けると、状態テーブル２５を参照して、書き込み先として設定されているＳＳＤを確認し（ステップＳ２０３）、読出開始コマンドを送信可能なＳＳＤを決定し（ステップＳ２０４）、ディスクＩ／Ｆ２７またはディスクＩ／Ｆ２８を通じて対象のＳＳＤ（ＳＳＤ３またはＳＳＤ４）へ送信する（ステップＳ２０５、Ｓ２０６）。
【００５３】
ここでは状態テーブル２５を参照した結果、書込先フラグの状態が“１”「ＳＳＤ４へ書込許可」、つまり「ＳＳＤからの読出許可」と設定されていたものとする。
この場合、データ処理部２４は、読出開始コマンドを、ディスクＩ／Ｆ２７を通じてＳＳＤ３へ送信する。
【００５４】
読出開始コマンドを受けたＳＳＤ３は、データを順次読み出して、ディスクＩ／Ｆ２７を通じてホスト装置１へ送信する（ステップＳ２０７）。この場合、バッファメモリ２３は経由しない。
【００５５】
ホスト装置１へのデータの送信が完了すると、ＳＳＤ３は、読出完了コマンドを、ディスクＩ／Ｆ２７（監視部２６）を通じてコマンド応答部２２へ送り（ステップＳ２０８、Ｓ２０９）、さらにコマンド応答部２２からホスト装置１へ読出完了コマンドを送信する（ステップＳ２１０）。
【００５６】
ここで、図５、図６を参照してＳＳＤ３，４へのデータ書き込みの際に遅延が発生したときの動作を説明する。
【００５７】
まず、図５を参照して、ＳＳＤ３またはＳＳＤ４への書き込み処理の際に遅延が発生していない場合の状態の変化を説明する。
なお、図中、「Ｗｎ」（ｎ＝１，２，３，・・・）は書き込み処理中の時間を、「Ｒｎ」（ｎ＝１，２，３，・・・）は読み出し処理中の時間を示し、時間経過に伴う状態の変化を順に説明する。
【００５８】
状態１では、ホスト装置１から書込開始コマンドが発行され、データ（Ｗ１）をバッファメモリ２３に保持する。データの受信完了後、予め定めたタイムアップ時間Ｔが経過してからホスト装置１へ書込完了応答を送信する。
【００５９】
状態２では、ホスト装置１からの読出開始コマンド（Ｒ１）が受信され、書込先フラグの状態が“0”であり、ＳＳＤ４からデータ（Ｒ１）を読み出し、ホスト装置１に送信する。
【００６０】
状態３では、ホスト装置１から書込開始コマンドが発行され、データ（Ｗ２）を、メモリバッファ２３に保持する。同時に、状態１でバッファメモリ２３に書き込んだデータ（Ｗ１）を、状態テーブル２５の書込先フラグを参照して書込許可されているＳＳＤ４に書き込む。ホスト装置１から書込開始コマンドが受信されたときに、状態テーブル２５のＳＳＤ動作状態フラグが“０”であったら、コマンド応答部２２が状態テーブル２５の書込先フラグを“０”→“１”、つまり、書込先をＳＳＤ３からＳＳＤ４へ切り替えている。
【００６１】
また、ホスト装置１からバッファメモリ２３へのデータ（Ｗ２）の保持が完了した後、バッファメモリ２３のデータ（Ｗ２）をＳＳＤ４へ書き込む。つまり、ホスト装置１からの書き込みデータとＳＳＤ４への書き込みデータが一致するまでＳＳＤ４へのデータ（Ｗ１，Ｗ２）の書き込みを行う。
【００６２】
状態４では、ホスト装置１からの読出開始コマンドに応じて書込禁止設定中のＳＳＤ３からデータ（Ｒ２）を読み出し、ホスト装置１へ送信する。このとき、他方のＳＳＤ４では、データ（Ｗ２）を書き込んでいることがある。
【００６３】
状態５では、ホスト装置１から書込開始コマンドが発行されデータ（Ｗ３）をメモリバッファに保持する。このときに、書込禁止設定のＳＳＤを、ＳＳＤ４からＳＳＤ３へ切り替える。そして、状態１および状態３でバッファメモリ２３に保持していたデータを書き込み禁止していないＳＳＤ３へ書き込む。
【００６４】
そして、１つ前のホスト装置１からの書き込みデータ（Ｗ２）とＳＳＤ４への書き込みデータが一致するまでＳＳＤ４へのデータの書き込みを行う。
【００６５】
状態６では、状態４と同様に読み出し処理を行う。以後、状態３から状態６を繰り返し行う。
【００６６】
次に、図６を参照して、ＳＳＤ３，４への書き込み処理に遅延が発生している場合の状態の変化を説明する。
【００６７】
状態７では、ホスト装置１からの書き込みコマンドが受信された後、ホスト装置１から送信されてきたデータ（Ｗ３）をメモリバッファ２３に書き込む。
これと同時に、ＳＳＤ３へのデータ（Ｗ１）の書き込みも行うが、ＳＳＤ３ではデータ（Ｗ１）の書き込みに遅延が発生し、書き込み処理が次の状態８にまで継続しているものとする。
【００６８】
状態８では、ホスト装置１からの読出開始コマンド（Ｒ３）に応じてＳＳＤ４からデータ（Ｒ３）を読み出す。このとき、他方のＳＳＤ３では、データ（Ｗ１）の書き込み処理が引き続き継続されている。
【００６９】
状態９では、ホスト装置１からの書込開始コマンドが受信された後、ホスト装置１から送られてきたデータ（Ｗ４）をメモリバッファに保持する。これと同時にＳＳＤ３へのデータの書き込み処理が引き続き行われている。
【００７０】
このように、前の状態からＳＳＤ３へのデータの書き込み処理が継続している場合には、書込禁止設定のＳＳＤ４の切り替えを行わない。また、どちらのＳＳＤにホスト装置１からの書き込みデータと一致するまで書き込みを行うのかの設定を切り替える。
【００７１】
状態１０では、ホスト装置１からの読出開始コマンド（Ｒ４）に応じてＳＳＤ４からデータ（Ｒ４）を読み出す。このとき、状態９で書込禁止設定のＳＳＤ４の切り替えをしていないので、状態８と同じＳＳＤ４からデータを読み出している。
【００７２】
このとき、他方のＳＳＤ３では、データの書き込み処理を引き続き継続しているが、データの書き込み処理が完了したときに、次のホスト装置１からの書込開始コマンドが発行されるまでに時間があれば、さらにＳＳＤ３への書き込みを行う。
【００７３】
状態１１では、ホスト装置１からの書込開始コマンドが受信され、書込禁止設定のＳＳＤを、ＳＳＤ４からＳＳＤ３へ切り替える。その後、ホスト装置１から送られてきたデータ（Ｗ５）をメモリバッファ２３に保持する。
これと同時にバッファメモリ２３に保持されているデータ（Ｗ３，Ｗ４）を、書込許可されているＳＳＤ４へ書き込む。
【００７４】
状態９においてどのデータまでＳＳＤ３へ書き込みを行うのかを切り替えているので、１つ前のホスト装置１からの書き込みデータ（Ｗ４）とＳＳＤ４への書き込みデータが一致するまでＳＳＤ４へのデータの書き込みを行う。
【００７５】
状態１２は、基本動作の読み出し処理の動作である。
状態１３は、ホスト装置１からの書き込みコマンドが受信された後、ホスト装置１から送信されてきたデータ（Ｗ６）をメモリバッファ２３に保持する。
これと同時にバッファメモリ２３に保持していたデータ（Ｗ３，Ｗ４，Ｗ５）をＳＳＤ３へ書き込む。
この時点では、ホスト装置１から送られてきている書き込みデータに、ＳＳＤ３へのデータの書き込み処理が追いついていないため、次のデータ（Ｗ４，Ｗ５）についてもＳＳＤ３へ書き込む。
【００７６】
状態１４は、基本動作の読み出し処理の動作である。この時点でもＳＳＤ３へのデータの書き込みは、ホスト装置１からの書き込みデータに追いついていないため、ＳＳＤ３へ次のデータ（Ｗ４の残り，Ｗ５）の書き込みを行う。
【００７７】
状態１５から状態１８は、状態１１から状態１４と同様の動作であり、状態１８のように、ホスト装置１からの書き込みデータに、ＳＳＤ３への書き込みデータが追いつくまで、上記動作を繰り返し行う。以降は、基本動作と同様の動作に戻る。
【００７８】
このようにこの第１実施形態によれば、２台のＳＳＤ３，４を用いてデータ同期を実現し、待機中のＳＳＤにデータを書き込み、他方を書込禁止にしてデータの読み出しに対応することで、リアルタイム制御におけるデータの読み出しに対応することができる。
【００７９】
ホスト装置１からのデータの書き込み要求に対しては、ホスト装置１からのデータをバッファメモリ２３に保持しておく一方で、ＳＳＤ３，４側とは書き込みと読み出しの状態を切り替えながらバッファメモリ２３からデータを適宜書き込むことで、ＳＳＤ３，４で発生する遅延を吸収する。すなわち、遅延保証ユニット２においてＳＳＤ３，４への処理とホスト装置１への処理とを分離することで、ＳＳＤ３，４の応答遅延の影響がホスト装置１側へ及ばなくなり、ＳＳＤの遅延を保証することができる。
【００８０】
また、ホスト装置１からのデータの書き込みの際に、ホスト装置１から送られたデータのバッファメモリ２３への保持が完了しても直ちに書込完了の応答を返さずに、ホスト装置１がデータを送る周期に合わせて、データの書込完了コマンド（書込完了通知）をホスト装置１へ返すようにすることで、ＳＳＤ３，４の側でデータの書き込みに遅延が生じた場合でも、受信データがバッファメモリ２３に溜らなくなり、遅延の影響が吸収されるので、遅延時間が保証されてない汎用のＳＳＤ３，４などをリアルタイム制御に用いることができるようになる。
【００８１】
また、汎用のストレージ装置の一つであるＳＳＤ３，４を接続するユニットを外付けの拡張ユニット（遅延保証ユニット２）とすることで、以下のような効果が得られる。
１）外付けの遅延保証ユニット２に汎用のストレージ装置（ＳＳＤやＨＤＤ）を接続して、データの書き込みおよびデータの読み出しの際に、ストレージ装置に発生する遅延を保証することができる。 
２）ディスクＩ／Ｆ２７，２８の機能を実装変更（ディスクＩ／Ｆ２７，２８を他のＩ／Ｆと置換）するだけで、現在および未来に規格化されるあらゆるストレージ装置に対応可能である。つまりストレージ装置が故障したときや新しい世代のストレージ装置への変更を容易にできる。
３）コンピュータやサーバーなどの拡張機能とすることも可能であり、インデント品の産業機器にも容易に組み込むことができる。
すなわち、本実施形態によれば、汎用のＳＳＤなどのストレージ装置をリアルタイム制御に用いることができる遅延保証ユニット２および遅延保証ユニット２による遅延保証方法を提供することができる。
【００８２】
次に、図７を参照して第２実施形態を説明する。この第２実施形態は、第１実施形態の変形例である。
図７に示すように、第２実施形態の遅延保証ユニット２は、各ディスクＩ／Ｆ２７，２８に監視部２６ａ，２６ｂを設けている。
【００８３】
この第２実施形態によれば、各ディスクＩ／Ｆ２７，２８に監視部２６ａ，２６ｂをそれぞれ設け、各ディスクＩ／Ｆ２７，２８毎のデータやコマンドの流れを監視することで個々の監視部２６ａ，２６ｂの負荷を軽減することができ、比較的価格の安い部品を使用でき、コスト削減に寄与することにできる。
【００８４】
次に、図８を参照して第３実施形態を説明する。この第３実施形態は、第２実施形態の変形例である。
図８に示すように、第３実施形態の遅延保証ユニット２は、ディスクＩ／Ｆ２７，２８の内部に監視部２６ａ，２６ｂを設けている。ディスクＩ／Ｆ２７，２８はＳＡＴＡ規格を採用している。監視部２６ａ，２６ｂはＳＡＴＡ規格のトランスポート層とリンク層の間のＦＩＳコマンドの送受信を監視する機能を有している。
【００８５】
監視部２６ａ，２６ｂは、ディスクＩ／Ｆ２７，２８からＳＳＤ３，４へ送信されたＦＩＳコマンドの送信時刻とそのコマンドに対するＳＳＤ３，４からの返信を受信するまでの時刻を遅延時間として算出し、データ処理部２４に監視情報として出力する機能を有している。
【００８６】
この第３実施形態によれば、ディスクＩ／Ｆ２７，２８の内部に監視部２６ａ，２６ｂを設けることで、ユニットを小型化することができる。
【００８７】
次に、図９を参照して第４実施形態を説明する。この第４実施形態は、第２実施形態の変形例である。第４実施形態の遅延保証ユニット２は、４台のＳＳＤ３〜６を接続した場合の構成例である。
【００８８】
図９に示すように、第４実施形態の遅延保証ユニット２は、４台のＳＳＤ３〜６の制御を２台ずつに分けアレイ化したものであり、アレイ毎にＲＡＩＤ０、ＲＡＩＤ１の各動作が可能である。
【００８９】
アレイ部７は、２台のＳＳＤ３，４を接続したディスクＩ／Ｆ２７，２８アレイ制御部３０などを有している。
【００９０】
アレイ部８は、２台のＳＳＤ５，６を接続したディスクＩ／Ｆ２７，２８、アレイ制御部３０などを有している。アレイ制御部７，８は、アレイ毎の制御を行う。
【００９１】
第４実施形態の動作を説明する。なお説明を分かり易くするために、アレイ部７に視点をおいて説明する。
【００９２】
第４実施形態の場合、ＲＡＩＤ０として制御する場合、データ処理部２４から書き込まれたデータを、一定のデータサイズに分割し、ＳＳＤ３，４にデータを書き込む。これにより、伝送速度の向上を図ることができる。
【００９３】
ＳＳＤ３，４からデータを読み出す際には、ＳＳＤ３，４から対象のデータを読み出し、データ処理部２４から書き込まれたときと同様のデータの並びに結合し、データ処理部２４に出力する。
【００９４】
一方、ＲＡＩＤ１として制御する場合には、データ処理部２４から書き込まれたデータをＳＳＤ３，４にそれぞれ書き込む。
【００９５】
この第４実施形態によれば、ＳＳＤ３，４のどちらか一方が破損した場合にも、もう片方のＳＳＤ（ＳＳＤ３またはＳＳＤ４）でデータの読み書きが可能であり、ストレージシステムとしての信頼性を向上することができる。
【００９６】
以上のように本発明の各実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【００９７】
また上記実施形態に示した各構成要素を、コンピュータのハードディスク装置などのストレージにインストールしたプログラムで実現してもよく、また上記プログラムを、コンピュータ読取可能な電子媒体：electronic mediaに記憶しておき、プログラムを電子媒体からコンピュータに読み取らせることで本発明の機能をコンピュータが実現するようにしてもよい。電子媒体としては、例えばＣＤ−ＲＯＭ等の記録媒体やフラッシュメモリ、リムーバブルメディア：Removable media等が含まれる。さらに、ネットワークを介して接続した異なるコンピュータに構成要素を分散して記憶し、各構成要素を機能させたコンピュータ間で通信することで実現してもよい。
【符号の説明】
【００９８】
１…ホスト装置、３，４…ソリッド・ステート・ディスク（ＳＳＤ）、２０…外部インターフェース（外部Ｉ／Ｆ）、２１…タイマー、２２…コマンド応答部、２３…バッファメモリ、２４…データ処理部、２５…状態テーブル、２６…監視部、２７，２８…ディスクインターフェース（ディスクＩ／Ｆ）。
【図１】
0005514169.tif 000002
【図２】
0005514169.tif 000003
【図３】
0005514169.tif 000004
【図４】
0005514169.tif 000005
【図５】
0005514169.tif 000006
【図６】
0005514169.tif 000007
【図７】
0005514169.tif 000008
【図８】
0005514169.tif 000009
【図９】
0005514169.tif 000010