(57)【特許請求の範囲】
【請求項１】
ホスト装置とソリッド・ステート・ディスクが接続可能なインターフェースを有する情報処理装置において、
前記インターフェースに接続された前記ソリッド・ステート・ディスクの動作状態が書込・読出中か待機中かを設定可能な状態テーブルと、
前記ソリッド・ステート・ディスクの動作状態を監視し、監視結果として前記ソリッド・ステート・ディスクの動作状態を前記状態テーブルに設定する監視部と、
前記ソリッド・ステート・ディスクへデータを書き込むための書き込み用バッファメモリと、
前記ソリッド・ステート・ディスクからデータを読み出すための読み出し用バッファメモリと、
カウント開始の指示により、リード要求に対して予めシステムとして許容可能な時間に設定された許容応答時間をカウントし、タイムアップを通知するタイマーと、
前記ホスト装置からデータのライト要求があった場合、前記ライト要求の後に前記ホスト装置から前記一定周期で送られてくる書き込み対象のデータを前記書き込み用バッファメモリへ保持した後、前記状態テーブルを参照して前記ソリッド・ステート・ディスクの動作状態が待機中の場合に前記ソリッド・ステート・ディスクに対してデータの書き込みを指示する一方、前記ホスト装置からのリード要求に対しては、前記タイマーにカウント開始を指示した後、前記ソリッド・ステート・ディスクからのデータの読み出しを指示するコマンド応答部と、
前記コマンド応答部からの書き込み指示により前記書き込み用バッファメモリからデータを読み出して前記ソリッド・ステート・ディスクに書き込む一方、前記コマンド応答部からの読み出し指示により、指示されたデータを前記ソリッド・ステート・ディスクから読み出し前記読み出し用バッファメモリに保持するデータ処理部と、
前記タイマーからのタイムアップ通知を受けた時点で前記読み出し用バッファメモリに保持されているデータを前記ホスト装置へ送信するリード制御部と
を具備する情報処理装置。
【請求項２】
前記書き込み用バッファメモリおよび・または前記読み出し用バッファメモリは、前記ソリッド・ステート・ディスクの書き込み遅延が想定される時間と前記ホスト装置の要求に対して応答が返るまでのシステムとしての許容可能な時間との関係から記憶領域の段数が設定される請求項１記載の情報処理装置。
【請求項３】
ホスト装置とソリッド・ステート・ディスクが接続可能なインターフェースとデータを書き込むための書き込み用バッファメモリとデータを読み出すための読み出し用バッファメモリを有する情報処理装置における情報処理方法において、
前記ソリッド・ステート・ディスクの動作状態を監視し、監視結果として前記インターフェースに接続された前記ソリッド・ステート・ディスクの動作状態が書込・読出中か待機中かを状態テーブルに設定し、
カウント開始の指示により、リード要求に対して予めシステムとして許容可能な時間に設定された許容応答時間をカウントし、タイムアップを通知し、
前記ホスト装置からデータのライト要求があった場合、前記ライト要求の後に前記ホスト装置から前記一定周期で送られてくる書き込み対象のデータを前記書き込み用バッファメモリへ保持した後、前記状態テーブルを参照して前記ソリッド・ステート・ディスクの動作状態が待機中の場合、前記ソリッド・ステート・ディスクに対してデータの書き込みを指示する一方、前記ホスト装置からのリード要求に対しては、前記タイマーにカウント開始を指示した後、前記ソリッド・ステート・ディスクからのデータの読み出しを指示し、
前記書き込み指示により前記書き込み用バッファメモリからデータを読み出して前記ソリッド・ステート・ディスクに書き込む一方、前記コマンド応答部からの読み出し指示により、指示されたデータを前記ソリッド・ステート・ディスクから読み出し、前記読み出し用バッファメモリに保持し、
前記タイマーからのタイムアップ通知を受けた時点で前記読み出し用バッファメモリに保持されているデータを前記ホスト装置へ送信する情報処理方法。
【請求項４】
前記書き込み用バッファメモリおよび・または前記読み出し用バッファメモリは、前記ソリッド・ステート・ディスクの書き込み遅延が想定される時間と前記ホスト装置の要求に対して応答が返るまでのシステムとしての許容可能な時間との関係から記憶領域の段数が設定される請求項３記載の情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置および情報処理方法に関する。
【背景技術】
【０００２】
例えばビデオサーバなどに記憶された映像コンテンツをリアルタイムに配信するような産業用途向けの情報処理装置には、例えば大容量のハードディスク装置などのストレージ装置が使用されている。
【０００３】
この種の情報処理装置は、ストレージ装置に対して、一定の時間内にデータの書き込み処理や読み出し処理を完了する必要がある。なぜなら、データの書き込みや読み出しが定められた時間を超えてしまうと、映像や音声の途切れなどが生じるおそれがあるからである。
【０００４】
ハードディスク装置などは、大容量かつ低価格ではあるものの、速度と信頼性の面で難があり、近年では、ソリッド・ステート・ディスク：ＳＳＤが高速なストレージ装置として産業用途向けのシステムで利用されるようになってきた（例えば特許文献１参照）。
【０００５】
産業用途向けのシステムで利用されるＳＳＤは、容量が大きくなるとそれなりに高価であり、安価な汎用用途のＳＳＤ（例えばＳＡＴＡなどの汎用インターフェースで接続可能なタイプ）の利用が望ましい。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−１０２３６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、汎用のＳＳＤなどのストレージ装置は、データの書き込み処理や読み出し処理の遅延時間が保証されておらず、特にＳＳＤなどでは、データ書き込み時にガベージコレクションに代表されるように特有の遅延現象が発生する。このため、そのままではデータ処理に遅延が生じることがあり、例えばテレビジョン放送などのリアルタイム制御を行う装置またはシステムには利用することができないという問題がある。
【０００８】
本発明が解決しようとする課題は、１台のストレージ装置を用いてリアルタイム制御を行うことができる情報処理装置および情報処理方法を提供することにある。
【課題を解決するための手段】
【０００９】
実施形態の情報処理装置は、ホスト装置とソリッド・ステート・ディスクが接続可能なインターフェース、状態テーブル、監視部、書き込み用バッファメモリ、読み出し用バッファメモリ、タイマー、コマンド応答部、データ処理部、リード制御部を有する。前記状態テーブルは、前記インターフェースに接続された前記ソリッド・ステート・ディスクの動作状態が書込・読出中か待機中かを設定可能である。前記監視部は前記ソリッド・ステート・ディスクの動作状態を監視し、監視結果として前記ソリッド・ステート・ディスクの動作状態を前記状態テーブルに設定する。前記書き込み用バッファメモリは、データを書き込むためのものである。読み出し用バッファメモリはデータを読み出すためのものである。前記タイマーは、カウント開始の指示により、リード要求に対して予めシステムとして許容可能な時間に設定された許容応答時間をカウントし、タイムアップを通知する。前記コマンド応答部は前記ホスト装置からデータのライト要求があった場合、前記ライト要求の後に前記ホスト装置から前記一定時間毎に送られてくる書き込み対象のデータを前記書き込み用バッファメモリへ保持した後、前記状態テーブルを参照して前記ソリッド・ステート・ディスクの動作状態が待機中の場合に前記ソリッド・ステート・ディスクに対してデータの書き込みを指示する一方、前記ホスト装置からのリード要求に対しては、前記タイマーにカウント開始を指示した後、前記ソリッド・ステート・ディスクからのデータの読み出しを指示する。前記データ処理部は、前記コマンド応答部からの書き込み指示により前記書き込み用バッファメモリからデータを読み出して前記ソリッド・ステート・ディスクに書き込む一方、前記コマンド応答部からの読み出し指示により、指示されたデータを前記ソリッド・ステート・ディスクから読み出し、前記読み出し用バッファメモリに保持する。前記リード制御部は前記タイマーからのタイムアップ通知を受けた時点で前記読み出し用バッファメモリに保持されているデータを前記ホスト装置へ送信する。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態の遅延保証ユニットの構成を示す図である。
【図２】状態テーブルの内容を示す図である。
【図３】通常の動作を示すシーケンスチャートである。
【図４】書き込み遅延発生時の動作を示すシーケンスチャートである。
【図５】他の例の遅延保証ユニットの構成を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して実施形態を詳細に説明する。図１は情報処理装置の一つの実施の形態の遅延保証ユニット２の構成を示す図である。
【００１２】
図１に示すように、この実施形態の遅延保証ユニット２は、ホスト装置１が接続された外部インターフェース２０（以下「外部Ｉ／Ｆ２０」と称す）、タイマー２１、コマンド応答部２２、バッファメモリ２３、データ処理部２４、状態テーブル２５、監視部２６、ディスクインターフェース２７（以下「ディスクＩ／Ｆ２７」と称す）、リード制御部４０を有している。
【００１３】
ホスト装置１は、例えばビデオサーバなどであり、ストレージ装置にデータの書き込みや読み出しに応答時間の保証が求められるマルチメディアシステム、情報処理システム、製造プラントシステムなどの産業用途向けのシステムに適用される。
【００１４】
ディスクＩ／Ｆ２７は、少なくとも一つ以上の外部ストレージ装置、例えばソリッド・ステート・ディスク３（以下「ＳＳＤ３」と称す）などと通信するためのインターフェースであり、例えば、シリアルＡＴＡ（ＳＡＴＡ−２．６または３．０）やＰＣＩ−ｅのポートである。この例では、ディスクＩ／Ｆ２７にＳＳＤ３が一台接続されている。
【００１５】
外部Ｉ／Ｆ２０は、ホスト装置１と通信するためのインターフェースであり、例えば、シリアルＡＴＡ（ＳＡＴＡ−２．６または３．０）やＰＣＩ−ｅのポートである。
【００１６】
タイマー２１は、コマンド応答部２２からの指示によりタイマー動作を開始し、カウントされた時間が、予め設定されたタイムアップ時間（一定時間Ｔ）に達すると、コマンド応答部２２およびリード制御部４０にタイムアップを通知する。つまりタイマー２１は、カウント開始の指示により、リードコマンド（読出要求）に対して予めシステムが許容可能な最大時間に設定された許容応答時間をカウントし、タイムアップを通知する。
【００１７】
なお、テレビジョン放送等では、通常、遅延が許容される時間は２ｓｅｃ程度であり、ホスト装置１は、データの書き込み処理および読み出し処理を、システムの仕様で予め定められた許容応答時間以内に完了する必要がある。この遅延保証ユニット２の場合、許容応答時間から、ホスト装置１とコマンド応答部２２間のコマンドの転送時間（インターフェース仕様により決まる一定時間）を差し引いた時間をタイムアップ時間（一定時間Ｔ）として設定することで、遅延時間を一定の時間内で納めるようにしている。
【００１８】
ホスト装置１へ応答すべき時間は、予めタイマー２１に設定されており、適用するシステムにより異なる。例えば、映像を扱うシステムでは３３ｍｓｅｃ（テレビジョンの動画の１フレーム分の時間：１／３０ｓｅｃ）、製造プラントで使用するデータロガーなどであれば１〜１０ｍｓｅｃなどである。
【００１９】
タイムアップ時間（一定時間Ｔ）は、ホスト装置１へ応答を返す上で遅延が許容される最大時間であり、予めタイマー２１に設定しておいてもよく、タイマー２１がタイムアップ時間（一定時間Ｔ）を参照する書き換え可能なメモリに、外部からアクセスし、扱うシステムに応じてタイムアップ時間（一定時間Ｔ）を書き換える（変更する）ようにしてもよい。
【００２０】
すなわち、タイマー２１は、コマンド応答部２２からのカウント開始の指示により予め設定されたタイムアップ時間Ｔをカウントし、タイムアップすると、タイムアップしたことを指示元のコマンド応答部２２およびリード制御部４０へ通知する。
【００２１】
コマンド応答部２２は、ホスト装置１との間でコマンドおよびデータのやりとりを行う。コマンド応答部２２は、ホスト装置１から受信されたコマンドに応じて、データ処理部２４に対してデータの書き込みまたは読み出しを指示（制御）する。
【００２２】
またコマンド応答部２２はホスト装置１からライトコマンド（データの書き込み要求）を受信した場合、図２に示される状態テーブル２５を参照してＳＳＤ３の動作状態（待機中か書込・読出中か）を確認する。
【００２３】
この確認の結果、ＳＳＤ３の動作状態が「待機中」であれば、書き込み可能であり、この場合、コマンド応答部２２はＳＳＤ３への書き込みを指示する制御信号を出力し、ホスト装置１から一定周期tで送られてくる書き込み対象のデータをバッファメモリ２３へ保持する。コマンド応答部２２はこれと共に状態テーブル２５のＳＳＤ３の動作状態フラグの設定を「待機中」から「書込・読出中」に変更する。
【００２４】
またリード制御部４０はタイムアップ通知を受けて、バッファメモリ２３に保持されているデータをホスト装置１へ送信する。
【００２５】
すなわち、コマンド応答部２２およびリード制御部４０は、バッファメモリ２３へのデータの保持（書き込み）が完了すると、直ぐに書き込み完了の応答をホスト１へ返す。これにより、データの受信を完了してからタイムアップ時間（一定時間Ｔ）までが、ＳＳＤ３の側でデータ書き込みの遅延が生じた際の遅延保証時間として確保されることになる。
【００２６】
バッファメモリ２３には、複数の記憶領域（第１記憶領域２３ａおよび第２記憶領域２３ｂなど）が設けられている。第１記憶領域２３ａにはホスト装置１から受信されたデータを一時保持可能である。第２記憶領域２３ｂにはＳＳＤ３から読み出されたデータを一時保持可能である。バッファメモリ２３には、ホスト装置１およびＳＳＤ３からそれぞれ受信されたデータが一時的に保持（キャッシュ）される。
【００２７】
第１記憶領域２３ａおよび・または第２記憶領域２３ｂは、ＳＳＤ３の書き込み遅延が想定される時間とホスト装置１の要求に対して応答が返るまでのシステムとしての許容可能な時間との関係から記憶領域の段数が設定される。この例では、第１記憶領域２３ａの段数は２段に設定され、第２記憶領域２３ｂの段数は３段に設定されている。
【００２８】
データ処理部２４は、コマンド応答部２２から制御信号を受信すると、状態テーブル２５を参照してＳＳＤ３の動作状態から書き込み可能か否かを判定し、書き込み可能な場合にバッファメモリ２３から読み出したデータをＳＳＤ３に書き込む。すなわちデータ処理部２４は、コマンド応答部２２からの制御信号により制御されて、ＳＳＤ３にデータを書き込みまたはＳＳＤ３からデータを読み出す。
【００２９】
具体的には、データ処理部２４は、コマンド応答部２２からの書き込み指示の制御信号によりバッファメモリ２３の第１記憶領域２３ａからデータを読み出してＳＳＤ３３に書き込む一方、コマンド応答部２２からの読み出し指示の制御信号により、指示されたデータをＳＳＤ３から読み出し、バッファメモリ２３の第２記憶領域２３ｂに保持する。
【００３０】
状態テーブル２５には、ディスクＩ／Ｆ２７に接続されたＳＳＤ３の動作状態が設定可能であり、監視部２６によりそれぞれにフラグ（“0”または“1”）が設定される。
【００３１】
監視部２６は、ディスクＩ／Ｆ２７へのコマンドまたはデータの入出力を監視する。すなわち監視部２６はディスクＩ／Ｆ２７を介してＳＳＤ３を監視し、監視結果として、ＳＳＤ３の動作状態を状態テーブル２５に設定する。
【００３２】
具体的に、監視部２６は、監視結果のＳＳＤ３の動作状態を「待機中」と「書込・読出中」のいずれかを示すフラグ（動作状態フラグ）を状態テーブル２５に設定する。
【００３３】
ＳＳＤ３の動作状態フラグは、例えば“0”または“1”のいずれが設定され、“0”のときに待機中（いずれのＳＳＤにも書き込みをしていない状態）、“1”のときは、ＳＳＤ３にデータを書き込み中であることを示す。
【００３４】
データ処理部２４は状態テーブル２５を参照して、コマンド応答部２２からのライトコマンドで指示されたデータを、ＳＳＤ３が書き込み可能なときに（待機中）、ＳＳＤ３にデータを書き込む。またデータ処理部２４はコマンド応答部２２からのリードコマンドで指示されたデータを、ＳＳＤ３が待機中のときＳＳＤ３からデータを読み出す。
【００３５】
続いて、この実施形態の遅延保証ユニット２の動作を（図３：通常時の動作）と（図４：ＳＳＤに書込遅延が発生したときの動作）に分けて説明する。
【００３６】
（通常時の動作）
まず、図３、図４を参照して通常時の動作を説明する。
（状態遷移１）
外部のホスト装置１がＳＳＤ３へデータを書き込む場合、ホスト装置１はデータの書込開始コマンドをコマンド応答部２２へ送信する。
【００３７】
ホスト装置１からのライトコマンドに対して、コマンド応答部２２がコマンドを解釈し、コマンド内のアドレスや書込サイズをチェックする。ライトコマンドに対してデータを受信可能であれば、受信可能を示すコマンド（受信可能コマンド）をホスト装置１へ送信する。
【００３８】
ホスト装置１は、受信可能コマンドを受けてデータの送信を開始する。なおホスト装置１からのライトデータを保持するバッファメモリ２３の例えば、第１記憶領域２３ａに、ＳＳＤ３に書き込みを完了していないデータがある場合には、別の記憶領域に書き込むものとする。
【００３９】
コマンド応答部２２は、ここではバッファメモリ２３の第１記憶領域の中へ書き込むように指示する。コマンド応答部２２は受信したデータサイズをチェックし、ライトコマンドに含まれる書込サイズに達したら書込完了応答をホスト装置１へ送信する。
【００４０】
これと同時に、コマンド応答部２２は、状態テーブル２５を参照して動作状態フラグ（０：待機中、１：書込・読出中）を確認する。なお、この状態テーブル２５の確認はホスト装置１からのデータの単位サイズの受信が終了した時点で行ってもよい。
【００４１】
この場合、ホスト装置１からのデータ単位を、ＳＳＤ３への書き込みデータ単位が追い越さないことを監視する必要がある。
【００４２】
（状態遷移２）
コマンド応答部２２は、状態テーブル２５を確認した結果、ＳＳＤ３が待機中であることを確認すると、データ処理部２４に対してＳＳＤ３へのデータの書き込みを指示する。このとき、コマンド応答部２２は、バッファメモリ２３のどの領域に格納されたデータをＳＳＤ３に書き込むかの情報も指示する。
【００４３】
なお状態テーブル２５を確認した結果、「書込・読出中」であった場合、コマンド応答部２２は定期的に状態テーブル２５を確認するとともに、ホストからのコマンドも待つ。
【００４４】
待機中の場合、データ処理部２４は、監視部２６を通じてＳＳＤ３に対して書込開始コマンドを送信する。これと同時に監視部２６は、状態テーブル２５の動作状態フラグを「待機中」から「書込・読出中」に変更する。
【００４５】
ＳＳＤ３からの受信可能コマンドを受信した後、データ処理部２４はバッファメモリ２３からデータを読み出し、ＳＳＤ３へ送信しＳＳＤ３にデータを書き込む。
【００４６】
そしてＳＳＤ３は、書き込んだデータがライトコマンドに含まれる書込サイズに達したら、書込完了応答を送信する。監視部２６はその書込完了応答を受け取り、状態テーブル２５の動作状態フラグを「書込・読出中」から「待機中」に変更する。
【００４７】
（状態遷移３）
ホスト装置１からのリードコマンドに対して、コマンド応答部２２がコマンドを解釈し、コマンド内のアドレスや書込サイズをチェックする。これと同時に、コマンド応答部２２はタイマー２１に対してタイマー動作を開始させるための開始コマンドを通知する。
【００４８】
コマンド応答部２２がホスト装置１に対してコマンド受信完了を送信する。これと同時に、コマンド応答部２２は状態テーブル２５を参照してＳＳＤ３の状態を状態テーブル２５のＳＳＤ３の動作状態フラグ（０：待機中、１：書込・読出中）を確認する。
【００４９】
コマンド応答部２２は、ＳＳＤ３が「待機中」であることを確認すると、データ処理部２４に対してリードコマンドを送り、ＳＳＤ３からの読み出しを指示する。なお状態テーブル２５のＳＳＤ３の動作状態フラグが「書込・読出中」であった場合には、コマンド応答部２２は定期的に状態テーブル２５を確認するとともに、ホスト装置１からのコマンドを待つ。
【００５０】
これと同時に、コマンド応答部２２はアドレスや読込サイズを通知すると共に、読み込んだデータを格納するバッファメモリ２３の領域も指示する。このとき、バッファメモリ２３にホスト装置１への読み出しを完了していないデータがある場合、バッファメモリ２３の別の記憶領域へデータを書き込むものとする。
【００５１】
データ処理部２４は、監視部２６を通じてＳＳＤ３に対して読込開始コマンドを送信する。同時に監視部２６は、状態テーブル２５に対して読込中である状態フラグに変更を行う。ＳＳＤ３からのデータを受信した後、読出完了応答をＳＳＤ３から監視部２６が受け取ると、監視部２６は状態テーブル２５に対して［待機中］を示す状態フラグに変更する。
【００５２】
（状態遷移４）
タイマー２１がカウントを開始して一定時間Ｔ経過した後、タイムアップ通知コマンドをリード制御部４０およびコマンド応答部２２へ通知する。
【００５３】
リード制御部４０はバッファメモリ２３からデータを読み込み、ホスト装置１に対してデータ送信する。またコマンド応答部２２はデータ送信が完了した後、読出完了応答をホスト装置１へ送信する。この例では、「Ｒ-ａ」のホスト装置１へのデータ送信と同時に、「Ｒ-ｃ」のＳＳＤ３からバッファメモリ２３へのデータ受信も行われる。
【００５４】
（状態遷移５）  ここで、図４を参照する。
状態遷移２での、データ処理部２４はバッファメモリ２３からデータを読み出し、ＳＳＤ３へ送信する際、ＳＳＤ３が「Ｗ-Ｂ」のデータの書込中に遅延を発生した場合、監視部２６が書込完了応答を受信するまでの間は、状態テーブル２５は「書込・読出中」となっている。
【００５５】
遅延発生中に、ホスト装置１から次の「Ｒ-ｂ」のリードコマンドを受信した場合、コマンド応答部２２がコマンドを解釈し、コマンド内のアドレスや書込サイズをチェックする。これと同時に、コマンド応答部２２はタイマー２１に対して開始コマンドを通知する。
なお、説明が前後するが、先のリードコマンド「Ｒ−ａ」を受信した場合に対しても同様にタイマー２１に対して開始コマンドが通知されるので実質的にタイマー２１は、２つの内部タイマーを備えていることになる。
【００５６】
コマンド応答部２２はホスト装置１に対してコマンド受信完了を送信する。これと同時に、状態テーブル２５を参照して状態テーブル２５のＳＳＤ３動作状態フラグ（０：待機中、１：書込・読出中）を確認する。
【００５７】
このとき、ＳＳＤ３では書込遅延が発生しているため、状態テーブル２５を確認した結果は「書込・読出中」である。
【００５８】
さらに、状態遷移１での、ホスト装置１からのライトコマンドに対して、コマンド応答部２２がコマンドを解釈し、コマンド内のアドレスや書込サイズをチェックする。
【００５９】
受信可能であれば、ホスト装置１に対して受信可能コマンドを送信する。ホスト装置１は、受信可能コマンドを受け、「Ｗ-Ｃ」のデータの送信を開始する。
【００６０】
ホスト装置１からのライトデータを格納するバッファメモリ２３の領域は、ＳＳＤ３に書込を完了していない「Ｗ-Ｂ」のデータが、バッファメモリ２３の第１記憶領域２３ａの第一段目にあるためこの第一段目とは別の領域である第二段目に書き込むよう、コマンド応答部２２はバッファメモリ２３へ指示する。
【００６１】
この例の場合、この時点では「Ｗ-Ｂ」のデータの書き込みが終了していないので、コマンド応答部２２は「Ｗ-Ｃ」のデータを、バッファメモリ２３の第１記憶領域２３ａの第二段目に書き込むと共に、バッファメモリ２３の第１記憶領域２３ａの使用率（いくつの段を使っているか）を認識する。
【００６２】
そして、コマンド応答部２２は、受信したデータをバッファメモリ２３の第１記憶領域２３ａの第二段目に書き込みながらデータのサイズをチェックし、ライトコマンドに含まれる書込サイズに達したら書込完了応答をホスト装置１へ送信する。
【００６３】
（状態遷移６）
ＳＳＤ３において、「Ｗ-Ｂ」のデータの書込遅延が終わり、ＳＳＤ３から書込完了応答を受信すると、監視部２６は状態テーブル２５に対して状態フラグを「待機中」に変更する。
【００６４】
このとき、コマンド応答部２２は、定期的に状態テーブル２５を確認し「待機中」になることをチェックする。または、監視部２６がＳＳＤ３から書込完了応答を受信したら、監視部２６からコマンド応答部２２に対して書込完了を通知してもよい。
【００６５】
コマンド応答部２２は、ＳＳＤ３が「待機中」であることを確認すると、データ処理部２４に対して読込開始コマンドを通知し、ＳＳＤ３からの読込を指示する。なお上記と同様に状態テーブルが「書込・読出中」であった場合には、コマンド応答部２２は状態テーブル２５を定期的に確認するとともに、ホスト装置１からのコマンドを待つ。
【００６６】
これと同時に、コマンド応答部２２は、アドレスや読込サイズをデータ処理部２４に通知すると共に、読み込んだデータを保持しているバッファメモリ２３の記憶領域も通知する。このとき、ホスト装置１への読み出しを完了していないデータがバッファメモリ２３にある場合、読み出し中の領域とは別の領域への書き込みとする。
【００６７】
データ処理部２４は、監視部２６を介してＳＳＤ３に対して読出開始コマンドを送信する。これと同時に監視部２６は、状態テーブル２５の状態フラグを「待機中」から「書込・読出中」に変更する。
【００６８】
ＳＳＤ３からのデータを受信した後、読出完了応答をＳＳＤ３から監視部２６が受け取ると、監視部２６は状態テーブル２５の状態フラグを「待機中」に変更する。
【００６９】
この例では、ＳＳＤ３からの「Ｒ-ｂ」のデータの読み込みタイミングで、バッファメモリ２３の第２記憶領域２３ｂの第一段目に保持されていた「Ｒ-ａ」のデータのホスト装置１への送信が同時に行われる。
【００７０】
結果的に、ホスト装置１からの「Ｒ-ａ」のリードコマンドが受信されてから、４周期目（４ｔ）で、第２記憶領域２３ｂの第一段目に保持されていた「Ｒ-ａ」のデータがホスト装置１へ送信されるため、ホスト装置１の側では、読み出したデータをシステムとして遅延なく、次の工程で利用することができる。
【００７１】
（状態遷移７）
タイマー２１は、「Ｒ-ｂ」のリードコマンドの受信後に一定時間Ｔカウントした後、タイムアップ通知をリード制御部４０およびコマンド応答部２２に通知する。
【００７２】
リード制御部４０はバッファメモリ２３の第２記憶領域の第２段目に保持されていた「Ｒ-ｂ」のデータを読み出しホスト装置１へ送信する。
【００７３】
またコマンド応答部２２は「Ｒ-ｂ」のデータの送信が完了した後、読出完了応答をホスト装置１へ送信する。この例では、上記「Ｒ-ｂ」のデータをホスト装置１へ送信したと同時に、ＳＳＤ３への「Ｗ-Ｄ」のデータの書き込みと、その後「Ｒ-ｄ」のデータの読み込みが行われる。
【００７４】
このときも、結果的には、ホスト装置１からの「Ｒ-ｂ」のリードコマンドが受信されてからちょうど４周期目（４ｔ）で、バッファメモリ２３の第２記憶領域２３ａの第２段目に保持されていた「Ｒ-ｂ」のデータがホスト装置１へ送信されるため、ＳＳＤ３における書込遅延の影響をホスト装置１が受けることなく、ホスト装置１では４周期目（４ｔ）目で遅延保証ユニット２から受信したデータをシステムとして問題なく次の工程で利用することができる。
【００７５】
このようにこの第１実施形態によれば、１台のＳＳＤ３を用いて一定周期ｔでリード動作とライト動作を行うことでデータ同期を実現しつつ、リードコマンド受信後に一定時間（４周期）だけ常に遅延してホスト装置１へリードデータを送信するようにすることで、ＳＳＤ３に発生する書き込み遅延時間を吸収し、汎用のＳＳＤ３をリアルタイム制御に利用することができるようになる。
【００７６】
すなわちホスト装置１からのリードコマンドに対しては、ＳＳＤ３から読み出したデータをバッファメモリ２３にシステムが許容する最大の待ち時間だけ保持しておくことで、ＳＳＤ３で発生する書込遅延を吸収する。すなわち、遅延保証ユニット２においてＳＳＤ３への処理とホスト装置１への処理とを分離することで、ＳＳＤ３の応答遅延の影響がホスト装置１側へ及ばなくなり、ＳＳＤの書込遅延を保証することができる。
【００７７】
以上のように本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【００７８】
上記実施形態では、バッファメモリ２３に、ライト用の第１記憶領域２３ａとリード用の第２記憶領域２３ｂを設けたが、例えば図５に示すように、ライト用バッファメモリ２３ｃとリード用バッファメモリ２３ｄとを設けてもよい。
【００７９】
この場合、バッファメモリとしての部品コストは増加するもののリードデータとライトデータをそれぞれ独立したバッファメモリに保持しリート／ライトの処理をできることから、処理性能を向上することができる。
【００８０】
また上記実施形態に示した各構成要素を、コンピュータのハードディスク装置などのストレージにインストールしたプログラムで実現してもよく、また上記プログラムを、コンピュータ読取可能な電子媒体：electronic mediaに記憶しておき、プログラムを電子媒体からコンピュータに読み取らせることで本発明の機能をコンピュータが実現するようにしてもよい。電子媒体としては、例えばＣＤ−ＲＯＭ等の記録媒体やフラッシュメモリ、リムーバブルメディア：Removable media等が含まれる。さらに、ネットワークを介して接続した異なるコンピュータに構成要素を分散して記憶し、各構成要素を機能させたコンピュータ間で通信することで実現してもよい。
【符号の説明】
【００８１】
１…ホスト装置、３…ソリッド・ステート・ディスク（ＳＳＤ）、２０…外部インターフェース（外部Ｉ／Ｆ）、２１…タイマー、２２…コマンド応答部、２３…バッファメモリ、２４…データ処理部、２５…状態テーブル、２６…監視部、２７…ディスクインターフェース（ディスクＩ／Ｆ）、４０…リード制御部。
【図１】
0005524156.tif 000002
【図２】
0005524156.tif 000003
【図３】
0005524156.tif 000004
【図４】
0005524156.tif 000005
【図５】
0005524156.tif 000006