(57)【要約】【課題】ホストからのコマンドの応答を高速に行うインターフェース装置を提供する。【解決手段】インターフェース装置は、ホスト２１からコマンドを受信すると、コマンドが正常か異常かを判定し、コマンドが正常であると判定する場合は、第１の判定結果を発行し、コマンドが異常であると判定する場合は、第２の判定結果を発行するコマンドチェック部７３と、ホスト２１からコマンドを受信すると、第１の判定結果に対応する第１の応答データを生成し、コマンドチェック部７３から第１の判定結果を受信する場合、第１の応答データをホスト２１に送信し、コマンドチェック部７３から第２の判定結果を受信する場合、第１の応答データを第２の応答データに修正し、ホスト２１に第２の応答データを送信するデータ生成部７４と、を備える。【選択図】      図２
2013171332.tif 000002
【特許請求の範囲】
【請求項１】
ホストと通信し、シリアルＡＴＡ規格に準拠するインターフェース部と、
前記インターフェース部に設けられ、前記ホストから送信されるコマンドに係るデータを保持するレジスタと、
前記インターフェース部を制御する制御部と、
を備え、
前記インターフェース部及び制御部は、
前記ホストからコマンドを受信すると、前記レジスタに保持されている前記データ、または前記制御部によって、前記コマンドが正常か異常かを判定し、
前記コマンドが正常であると判定する場合は、第１の判定結果を発行し、
前記コマンドが異常であると判定する場合は、第２の判定結果を発行するコマンドチェック部と、
前記ホストから前記コマンドを受信すると、前記コマンドチェック部が、前記コマンドが正常か異常かを判定している間、前記第１の判定結果に対応する前記第１の応答データを生成し、
前記コマンドチェック部から第１の判定結果を受信する場合、前記第１の応答データを前記ホストに送信し、
前記コマンドチェック部から第２の判定結果を受信する場合、前記制御部によって、前記第１の応答データを、第２の応答データに修正し、前記ホストに前記第２の応答データを送信するデータ生成部と、
を備えることを特徴とするインターフェース装置。
【請求項２】
ホストからコマンドを受信すると、前記コマンドが正常か異常かを判定し、
前記コマンドが正常であると判定する場合は、第１の判定結果を発行し、
前記コマンドが異常であると判定する場合は、第２の判定結果を発行するコマンドチェック部と、
前記ホストから前記コマンドを受信すると、前記第１の判定結果に対応する前記第１の応答データを生成し、
前記コマンドチェック部から第１の判定結果を受信する場合、前記第１の応答データを前記ホストに送信し、
前記コマンドチェック部から第２の判定結果を受信する場合、前記第１の応答データを、第２の応答データに修正し、前記ホストに前記第２の応答データを送信するデータ生成部と、
を備えることを特徴とするインターフェース装置。
【請求項３】
前記データ生成部は、前記コマンドチェック部が、前記コマンドが正常か異常かを判定している間、前記第１の判定結果に対応する前記第１の応答データを生成することを特徴とする請求項２に記載のインターフェース装置。
【請求項４】
前記ホストと通信するインターフェース部と、
前記インターフェース部を制御する制御部と、を更に備え、
前記インターフェース部及び前記制御部は、前記コマンドチェック部及び前記データ生成部を備え、
前記コマンドが正常か異常かを判定すること、及び
前記第１の応答データを、第２の応答データに修正することは、
前記制御部によって実行されることを特徴とする請求項２または３に記載のインターフェース装置。
【請求項５】
前記インターフェース部に設けられ、前記コマンドに係るデータを保持するレジスタを更に備え、
前記コマンドチェック部は、前記レジスタに記憶されているデータを確認することで、前記コマンドが正常か異常かの判定を行うことを特徴とする請求項４に記載のインターフェース装置。
【請求項６】
前記インターフェース部は、シリアルＡＴＡであることを特徴とする請求項４または５に記載のインターフェース装置。
【請求項７】
ホストから送信されたコマンドの判定を行うコマンドチェック部と、
前記ホストに、前記コマンドチェック部の判定結果を送信するデータ生成部と、
を備えるインターフェース装置の制御方法であって、
前記ホストからコマンドを受信すると、前記コマンドチェック部によって、前記コマンドが正常か異常かを判定することと、
前記コマンドチェック部によって、前記コマンドが正常であると判定する場合は、第１の判定結果を発行することと、
前記コマンドチェック部によって、前記コマンドが異常であると判定する場合は、第２の判定結果を発行することと、
前記ホストから前記コマンドを受信すると、前記データ生成部によって、前記第１の判定結果に対応する前記第１の応答データを生成することと、
前記コマンドチェック部から第１の判定結果を受信する場合、前記データ生成部によって、前記第１の応答データを前記ホストに送信することと、
前記コマンドチェック部から第２の判定結果を受信する場合、前記データ生成部によって、前記第１の応答データを、第２の応答データに修正し、前記ホストに前記第２の応答データを送信することと、
を備えることを特徴とする、インターフェース装置の制御方法。
【請求項８】
前記インターフェース装置は、
前記ホストと通信するインターフェース部と、
前記インターフェース部を制御する制御部と、を更に備え、
前記コマンドが正常か異常かを判定すること、及び
前記第１の応答データを、第２の応答データに修正することは、
前記制御部によって実行されることを特徴とする請求項７に記載のインターフェース装置の制御方法。
【請求項９】
前記コマンドが正常か異常かを判定することと、
前記第１の応答データを生成することと、
は同時に行われることを特徴とする請求項７または８に記載のインターフェース装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インターフェース装置とその制御方法に関する。
【背景技術】
【０００２】
例えばＳＳＤ（Solid-State Drive）などのストレージデバイスに用いられるシリアルＡＴＡ（Serial AT Attachment 規格によるインターフェース仕様）(以下、ＳＡＴＡと称す)インターフェースは、通信プロトコルや通信速度などが規格により定められており、ＳＳＤやハードディスク装置のようなＳＡＴＡインターフェースを使用するＳＡＴＡデバイスや、これを利用するホストは、この規格に基づく機能を実装している。
【０００３】
しかし、ＳＡＴＡ規格は、その一部にデバイスやホストを開発するベンダーが独自に仕様を定義することができる部分や、任意の仕様を許容する曖昧な規格がある。このため、ＳＡＴＡデバイスとホストとの間で通信を行う場合、通信が不安定となり、通信に失敗することがある。この場合、ＳＡＴＡデバイスが使用できないこととなる。ＳＡＴＡデバイスは、例えば記憶装置に適用されることが多いため、ＳＡＴＡデバイスが使用できないことは、記憶装置にデータを保存したり、記憶装置からデータを読み出したりすることができなくなるため大きな問題である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１１６５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ホストからのコマンドに対する応答を高速に行うインターフェース装置を提供する。
【課題を解決するための手段】
【０００６】
実施形態に係るインターフェース装置は、ホストからコマンドを受信すると、前記コマンドが正常か異常かを判定し、前記コマンドが正常であると判定する場合は、第１の判定結果を発行し、前記コマンドが異常であると判定する場合は、第２の判定結果を発行するコマンドチェック部と、前記ホストから前記コマンドを受信すると、前記第１の判定結果に対応する前記第１の応答データを生成し、前記コマンドチェック部から第１の判定結果を受信する場合、前記第１の応答データを前記ホストに送信し、前記コマンドチェック部から第２の判定結果を受信する場合、前記第１の応答データを、第２の応答データに修正し、前記ホストに前記第２の応答データを送信するデータ生成部と、を備える。
【図面の簡単な説明】
【０００７】
【図１】図１は、実施形態に係るＳＡＴＡデバイスを示すブロック図である。
【図２】図２は、実施形態に係るＳＳＤコントローラの機能的な構成を示すブロック図である。
【図３】図３は、実施形態に係るコマンド応答処理を示すフローチャートである。
【図４】図４は、図３に示すコマンド応答処理と、時間との関係を示す図である。
【図５】図５は、実施形態に係るコマンドチェック動作を示すフローチャートである。
【図６】図６は、図５に示すコマンドチェック動作と、時間との関係を示す図である。
【図７】図７は、比較例に係るコマンド応答処理を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下に、実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。また、以下に示す各実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、構成部品の構造、配置等を下記のものに特定するものでない。実施形態の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【０００９】
（実施形態）
＜１．１  構成＞
＜１．１．１  ＳＳＤの構成＞
まず、図１を用いて、実施形態に係るＳＳＤについて概略的に説明をする。  
図１は、実施形態が適用されるＳＡＴＡデバイスを示すものであり、本実施形態を例えばＳＳＤに適用した場合を示している。
【００１０】
ＳＳＤ１１は、ホスト（外部機器）２１にＳＡＴＡケーブル５１により接続され、ホスト２１からのアクセスに応じた処理を行う。ホスト２１は、例えばパーソナルコンピュータなどにより構成される。
【００１１】
ＳＳＤ１１は、記憶装置としてのＮＡＮＤフラッシュメモリ３１と、ＳＳＤコントローラ４１を有している。
【００１２】
ＮＡＮＤフラッシュメモリ３１は、例えば積層ゲート構造のメモリセル、又はＭＯＮＯＳ構造のメモリセルにより構成されている。このＮＡＮＤフラッシュメモリ３１は、例えばユーザデータや、アプリケーションソフトウェアを記憶する。さらに、ＮＡＮＤフラッシュメモリ３１は、ＳＡＴＡデバイスのプロパティや通信速度の情報を記憶するデバイスプロパティ領域を有している。
【００１３】
ＳＳＤコントローラ４１は、例えばＳＡＴＡインターフェース４２、ＮＡＮＤインターフェース４３、ＣＰＵ４４、ＲＯＭ（Read only Memory）４５、ＲＡＭ（Random Access Memory）４６、及びバッファ４７により構成されている。
【００１４】
ＳＡＴＡインターフェース４２は、ＳＡＴＡの仕様に従って、ＳＳＤコントローラ４１とホスト２１との間のインターフェース処理を行う。また、ＮＡＮＤインターフェース４３は、ＮＡＮＤフラッシュメモリ３１との間のインターフェース処理を行う。また、ＳＡＴＡインターフェース４２は、例えばホスト２１から送信されるコマンド処理、応答に係るデータを保持するレジスタ４２−１を備えている。
【００１５】
ＣＰＵ４４は、ＳＳＤ１１全体の制御を司るものである。ＣＰＵ４４は、ホスト２１からライト（書き込み）コマンド、リード（読み出し）コマンド、イレース（消去）コマンドなどを受けてＮＡＮＤフラッシュメモリ３１上の領域をアクセスしたり、バッファ４７を介してデータ転送処理を制御したりする。
【００１６】
ＲＯＭ４５は、ＣＰＵ４４により使用されるＩＰＬ（Initial Program loader）、制御プログラム、コマンドを処理するコマンド処理モジュール、デバイスを初期化する初期化処理モジュールなどのファームウェアを格納する。
【００１７】
ＲＡＭ４６は、ＣＰＵ４４の作業エリアとして使用され、制御プログラムやIdentify Device （Ｉ．Ｄ．）テーブル等のテーブルを記憶する。
【００１８】
バッファ４７は、ホスト２１から送られてくるデータを、例えばＮＡＮＤフラッシュメモリ３１へ書き込む際、一定量のデータを一時的に記憶したり、ＮＡＮＤフラッシュメモリ３１から読み出されたデータをホスト２１へ送り出す際、一定量のデータを一時的に記憶したりする。
【００１９】
ホスト２１は、ＣＰＵ（不図示）、メモリ（不図示）、及びＳＡＴＡインターフェース６１を有している。ＳＡＴＡインターフェース６１は、ＳＡＴＡの仕様に従って、ホスト２１とＳＳＤコントローラ４１との間のインターフェース処理を行う。
【００２０】
また、本実施形態では、例えば、ＳＡＴＡインターフェース４２及びＣＰＵ４４を含む構成をインターフェース装置５０と定義している。
【００２１】
＜１．１．２  ＳＳＤコントローラの概念図＞
次に、図２を用いて、実施形態に係るインターフェース装置５０の概念的な構成について概略的に説明する。
【００２２】
図２に示すように、インターフェース装置５０は、ホスト２１及びＮＡＮＤインターフェース４３に接続されている。また、インターフェース装置５０は、互いに協働して機能するＳＡＴＡブリッジ７１及びファームウェア７２を有している。ファームウェア７２は、ＣＰＵ４４により実行される各種機能のうち、インターフェース処理機能を示す部分として、インターフェース装置５０に図示されている。ＳＡＴＡブリッジ７１は、物理層（PHY）７１−１と、リンク層（Link）７１−２と、トランスポート層（transport）７１−３と、コマンド層（command）７１−４とを有している。
【００２３】
コマンド層７１−４は、トランスポート層７１−３とコマンドの送受信を行う。トランスポート層７１−３は、受信したコマンド等をＦＩＳ（frame information structure）の形に成形する。リンク層７１−２は、トランスポート層からのＦＩＳ送信要求に従って、種々のプリミティブを発行する。また、リンク層７１−２は、受信したプリミティブを解析する。物理層７１−１は、接続先（例えばホスト）の物理層（不図示）と、１ｂｉｔの信号列に変換したプリミティブの送受信を行う。
【００２４】
また、コマンド層７１−４は、エラーチェック部（コマンドチェック部）７３と、応答データ生成部７４とを有している。エラーチェック部７３は、トランスポート層７１−３を介してホスト２１から受信したコマンドの中身を解析し、該コマンドが実行可能か否かを判定する。そして、エラーチェック部７３は、コマンドの正当性を確認する。具体的には、エラーチェック部７３は、該コマンドが実行可能である（例えば該コマンドにエラー等が無い）場合は、判定結果通知（正常）を応答データ生成部７４に供給し、該コマンドを実行することができない（例えば該コマンドにエラー等がある）場合は、判定結果通知（異常）を応答データ生成部７４に供給する。応答データ生成部７４は、ホスト２１からコマンドを受信すると、応答用のデータを予め作成する。この応答用のデータは、エラーチェック部７３から判定結果通知（正常）を受信した場合に、ホスト２１に返信するデータである。そして、応答データ生成部７４は、エラーチェック部７３から判定結果通知（正常）を受信すると、予め生成したおいた正常応答のデータをホスト２１に返信する。また、応答データ生成部７４は、エラーチェック部７３から判定結果通知（異常）を受信すると、予め生成しておいた正常応答のデータの一部を書き換えて、異常応答のデータを生成し、ホスト２１に異常応答のデータを返信する。
【００２５】
ところで、本実施形態において、エラーチェック部７３、及び応答データ生成部７４は、ＳＡＴＡインターフェース４２及びＣＰＵ４４の構成の一部を用いて実現することを想定している。  
エラーチェック部７３、及び応答データ生成部７４を、ＳＡＴＡインターフェース４２及びＣＰＵ４４の構成の一部を用いて実現する場合、ＣＰＵ４４を介さずに、ＳＡＴＡインターフェース４２のみで処理を行うことも可能である。例えば、エラーチェック部７３によって、ホスト２１から供給されたコマンドが正常か異常かすぐに判断できる場合に、ＳＡＴＡインターフェース４２のみで処理を行うことが可能である。
【００２６】
具体的には、ＳＡＴＡインターフェース４２の内部に設けられているレジスタ４２−１に登録されている情報のみで、コマンドの実行可否を判断できる場合には、ＣＰＵ４４を介さずに、ＳＡＴＡインターフェース４２のみで処理を行うことができる。
【００２７】
しかし、ＳＡＴＡインターフェース４２の内部に設けられているレジスタ４２−１に登録されている情報のみでは、コマンドの実行可否を判断できない場合には、ＳＡＴＡインターフェース４２は、ＣＰＵ４４を介して処理を行う。例えば、ホスト２１から受信した論理アドレス（ＬＢＡ）をＮＡＮＤフラッシュメモリ３１の物理アドレスに変換するアドレス変換処理が必要な場合は、ＣＰＵ４４を介してコマンドの実行可否を判断する。
【００２８】
また、応答データ生成部７４が、正常応答のデータを生成する場合には、ＳＡＴＡインターフェース４２のみで正常応答のデータを生成する。これは、例えば、ＳＡＴＡインターフェース４２のレジスタ４２−１に正常応答のデータが予め保存されていることで、実現可能である。また、応答データ生成部７４が、異常応答のデータを生成する場合には、ＣＰＵ４４が、正常応答のデータを異常応答のデータへと修正する。
【００２９】
また、ファームウェア７２は、例えばホスト２１から供給されたコマンドの処理等を行う。  
ところで、ＳＡＴＡブリッジ７１は、図１で説明した、ＳＡＴＡインターフェース４２、及びＣＰＵ４４等のハードウェアによって実現される。また、ファームウェア７２は、図１で説明したＣＰＵ４４、及びＲＯＭ４５等のハードウェアにより実現される。
【００３０】
＜１．２  動作＞
＜１．２．０  コマンドチェック動作＞
ところで、一般的にＳＡＴＡインターフェースでは、ホスト２１から受信したコマンドを実行する前に、該コマンドのチェックを行う動作が行われる。具体的には、デバイス側（例えばＳＳＤ１１）がホスト２１からコマンドを受信した際に、そのコマンドをチェックし、そのコマンドに対するエラーの有無等をホスト２１に通知する。
【００３１】
そこで、コマンド層７１−４がトランスポート層７１−３からコマンドを受け取ってから、応答コマンドをトランスポート層７１−３に返すまでの流れについて説明をする。ここでは、コマンド層７１−４の動作に主眼を置く為、物理層７１−１、リンク層７１−２、及びトランスポート層７１−３の動作についての説明は省略する。
【００３２】
図３及び図４は、本実施形態に係る基本的なコマンドチェック動作を概略的に示したフローチャートである。
【００３３】
＜１．２．１  コマンドチェック動作の具体例１＞
まず、図３を用いて、ホスト２１から供給されたコマンドを、ＳＳＤ１１が実行することが可能である場合におけるコマンドチェック動作について説明する。
【００３４】
［ステップＳ１０］コマンド受信
エラーチェック部７３及び応答データ生成部７４は、バス等を介してホスト２１から出力されたコマンド（ＲｅｇＨＤ（Register-Host to Device）コマンド）を受信する。
【００３５】
［ステップＳ１１］応答データ作成
応答データ生成部７４は、コマンドを受信すると、ホスト２１への応答用のデータを生成する。この応答用のデータは、ＳＳＤ１１が、ホスト２１から供給されたコマンドを実行することが可能であることを意味する正常応答のデータである。ホスト２１は、この正常応答のデータを受信することで、ＳＳＤ１１に対してコマンドの実行を開始する。
【００３６】
［ステップＳ１２］エラーチェック
エラーチェック部７３は、コマンドを受信すると、該コマンドのエラーチェックを開始する。例えば、ホスト２１が、ＮＡＮＤフラッシュメモリ３１へのデータの書き込みを要求している場合、エラーチェック部７３は、ＮＡＮＤフラッシュメモリ３１の空き領域の確認を行い、該コマンドが実行可能か否か等を判定する。
【００３７】
［ステップＳ１３］判定結果通知
エラーチェック部７３は、その判定結果を応答データ生成部７４に送信する。エラーチェック部７３は、ホスト２１から供給されたコマンドが実行可能であると判定する場合、実行可能であることを意味する判定結果通知（正常）を応答データ生成部７４に送信する。
【００３８】
［ステップＳ１４］応答データ返信
応答データ生成部７４は、エラーチェック部７３から判定結果通知（正常）を受信すると、予め生成しておいた正常応答のデータをホスト２１に送信する。
【００３９】
ホスト２１は、正常応答のデータを受信することで、ＳＳＤ１１でのコマンドの実行を開始する。このコマンドの実行に関する説明は、ここでは省略する。
【００４０】
ここで、図４を用いて、図３で説明した、コマンドチェック動作と、時間との関係を説明する。  
図４に示すように、時刻ｔ０において、エラーチェック部７３及び応答データ生成部７４は、ホスト２１からコマンドを受信する（ステップＳ１０）。そして、時刻ｔ２において、エラーチェック部７３は、コマンドのエラーチェックを行い（ステップＳ１２，１３）、応答データ生成部７４は、応答用のデータ（正常応答）の生成を行う（ステップＳ１１）。そして、時刻ｔ２〜時刻ｔ３にかけて、応答データ生成部７４は、エラーチェック部７３からの判定結果通知（正常）を受信すると、正常応答のデータをホスト２１に送信する。
【００４１】
＜１．２．２  コマンドチェック動作の具体例２＞
次に、図５を用いて、ホスト２１から供給されたコマンドを、ＳＳＤ１１が実行することが可能ではない場合におけるコマンドチェック動作について説明する。
【００４２】
［ステップＳ２０］コマンド受信
エラーチェック部７３及び応答データ生成部７４は、バス等を介してホスト２１から出力されたコマンドを受信する。
【００４３】
［ステップＳ２１］応答データ作成
応答データ生成部７４は、コマンドを受信すると、ホスト２１への応答用のデータを生成する。この応答用のデータは、ＳＳＤ１１が、ホスト２１から供給されたコマンドを実行することが可能であることを意味する正常応答のデータである。
【００４４】
［ステップＳ２２］エラーチェック
エラーチェック部７３は、コマンドを受信すると、該コマンドのエラーチェックを開始する。
【００４５】
［ステップＳ２３］判定結果通知
エラーチェック部７３が、例えば、ホスト２１から送信されたコマンドにエラーがあると判定する場合、またはＳＳＤ１１が該コマンドを実行することができないと判定する場合において、エラーチェック部７３は、コマンドを実行することができないことを意味する判定結果通知（異常）を応答データ生成部７４に送信する。
【００４６】
［ステップＳ２４］修正
応答データ生成部７４は、エラーチェック部７３から判定結果通知（異常）を受信すると、予め生成しておいた正常応答のデータを、異常応答のデータへと修正する。これは、正常応答のデータの一部を書き換えるのみで良いので、短時間で処理が可能である。また、この異常応答のデータに、エラーの種類等を示すデータを添付することで、ホスト２１は、エラーの種類を判断することが可能となる。
【００４７】
［ステップＳ２５］応答データ返信
応答データ生成部７４は、異常応答のデータを生成すると、ホスト２１に該異常応答のデータを送信する。
【００４８】
ホスト２１は、異常応答のデータを受信すると、例えばＳＳＤ１１でのコマンドを実行しない。ホスト２１の動作に関する説明は、ここでは省略する。
【００４９】
ここで、図６を用いて、図５で説明した、コマンドチェック動作と、時間との関係を説明する。  
図６に示すように、時刻ｔ０において、エラーチェック部７３及び応答データ生成部７４は、ホスト２１からコマンドを受信する（ステップＳ２０）。そして、時刻ｔ２において、エラーチェック部７３は、コマンドのエラーチェックを行い（ステップＳ２２，２３）、応答データ生成部７４は、応答用のデータ（正常応答）の生成を行う（ステップＳ２１）。そして、時刻ｔ２〜時刻ｔ４（期間Δｔ１）にかけて、応答データ生成部７４は、エラーチェック部７３からの判定結果通知（異常）を受信すると、正常応答のデータを、異常応答のデータへと修正する。時刻ｔ４〜時刻ｔ５において、応答データ生成部７４は、異常応答のデータを、ホスト２１に送信する。
【００５０】
上述したように、図５及び６に示すコマンドチェック動作においては、応答用のデータを修正するために、図３及び４に示すコマンドチェック動作に比べて、期間Δｔ１だけ時間が掛かってしまう。しかし、該修正は、正常応答のデータの一部を修正するだけで良いので、他のステップの動作よりも短い時間で該正常応答のデータの修正が終了する。
【００５１】
＜１．３  実施形態の作用効果＞
上述した実施形態によれば、インターフェース装置は、ホスト２１と通信するインターフェース部（ＳＡＴＡインターフェース）４２と、インターフェース部４２に設けられ、ホスト２１から送信されるコマンドに係るデータを保持するレジスタ４２−１と、インターフェース部４２を制御する制御部（ＣＰＵ）４４とを備えている。また、インターフェース部４２及び制御部４４は、ホスト２１からコマンドを受信すると、レジスタ４２−１に保持されているデータ、または制御部４４によって、コマンドが正常か異常かを判定し、コマンドが正常であると判定する場合は、第１の判定結果を発行し、コマンドが異常であると判定する場合は、第２の判定結果を発行するコマンドチェック部（エラーチェック部）７３を備えている。また、インターフェース部４２及び制御部４４は、ホスト２１からコマンドを受信すると、コマンドチェック部７３が、コマンドが正常か異常かを判定している間、第１の判定結果に対応する前記第１の応答データを生成し、コマンドチェック部７３から第１の判定結果を受信する場合、第１の応答データをホスト２１に送信し、コマンドチェック部７３から第２の判定結果を受信する場合、制御部４４によって、第１の応答データを、第２の応答データに修正し、ホスト２１に第２の応答データを送信するデータ生成部（応答データ生成部）７４を備えている。
【００５２】
このように、本実施形態では、コマンドが正常か異常かを判定することと、第１の応答データを生成することと、を同時に行うことで、コマンド応答処理時間を短縮することができ、ＳＡＴＡインターフェースの転送速度をより高速にすることが可能となる。
【００５３】
ここで、本実施形態の効果の理解を容易にするために、図７を用いて、比較例に係るコマンド応答処理について説明する。比較例では、応答データ生成部７４はホスト２１からコマンドを受信せず、エラーチェック部７３からの判定結果通知を待ってから、応答用のデータを生成する構成となっている。
【００５４】
時刻ｔ０において、エラーチェック部７３は、バス等を介してホスト２１から出力されたコマンドを受信する（ステップＳ３０）。
【００５５】
時刻ｔ１において、エラーチェック部７３は、コマンドを受信すると、該コマンドのエラーチェックを開始する。エラーチェック部７３は、その判定結果を応答データ生成部７４に送信する（ステップＳ３１）。
【００５６】
時刻ｔ２〜時刻ｔ６（期間Δｔ２（Δｔ２＞Δｔ１））において、応答データ生成部７４は、エラーチェック部７３から、判定結果通知を受信すると、ホスト２１への応答用のデータを生成する（ステップＳ３２）。
【００５７】
時刻ｔ６〜ｔ７において、応答データ生成部７４は、応答用のデータをホスト２１に送信する（ステップＳ３３）。
【００５８】
以上のように、比較例において、応答データ生成部７４は、ホスト２１から、コマンドを受信せず、エラーチェック部７３からの判定結果通知を受信してから、ホスト２１への応答用のデータを生成する。この場合、例えば図４で説明した場合（応答データ生成部が、正常応答のデータをホストに送信する場合）と比べて、比較例は、ステップＳ３２の分（期間Δｔ２）だけ、時間が掛かっていることがわかる。また、例えば図６で説明した場合（応答データ生成部が、異常応答のデータをホストに送信する場合）と比べて、比較例は、ステップＳ３２−ステップＳ２４の分（期間Δｔ２−期間Δｔ１）だけ、時間が掛かっていることがわかる。
【００５９】
しかしながら、上述した実施形態では、コマンドの受信情報をエラーチェック部７３と同時に応答データ生成部７４にも通知する。そして、応答データ生成部７４は、この時点でコマンドが正常であったと仮定して正常応答のデータを作成し、送信直前までの手続きを進めておく。そして、エラーチェック部７３が、該コマンドが正常と判断した場合、応答データ生成部７４は作成していた正常応答のデータをホスト２１に対して送信する。また、エラーチェック部７３が、該コマンドが異常だと判断した場合は、応答データ生成部７４は、作成した正常応答のデータから必要な個所だけをエラー用のデータに書き換える。そののち、応答データ生成部７４を異常応答としてホストに送信する。
【００６０】
そのため、ホスト２１から受信したコマンドが正常であった場合は、無駄なく高速にホスト２１にその旨を通知することが可能となる。また、例え、該コマンドにエラー等があった場合においても、ホスト２１に送信すべきデータの殆どは予め生成されているため、早急に異常応答のデータの生成を生成することが可能となる。このように、上述した実施形態を用いることで、コマンド層７１−４がトランスポート層７１−３からコマンドを受け取ってから、応答コマンドをトランスポート層７１−３に返すまでの速度を高速化することができる。結果として、ホスト２１からのコマンドに対するコマンド応答に要する処理時間を大幅に短縮することができ、ＳＡＴＡインターフェースの転送速度をより高速にすることが可能となる。
【００６１】
（変形例等）
また、本実施形態において、エラーチェック部７３、及び応答データ生成部７４は、ＳＡＴＡインターフェース４２及びＣＰＵ４４の構成の一部を用いて実現することを想定している。しかしながら、ＳＡＴＡインターフェース４２及びＣＰＵ４４とは別に、上述した機能を有するハードウェアを設けることによって実現しても良い。
【００６２】
また、図４，６，７において、エラーチェック時間と、応答用のデータを作成する時間とが、同一の時間として示されているが、それぞれのステップの時間は模式的に示されており、必ずしも同一である必要はない。
【００６３】
また、本実施形態では、ＳＡＴＡインターフェース４２及びＣＰＵ４４をインターフェース装置５０としているが、これに限らず、上述したエラーチェック部７３、及び応答データ生成部７４を実現することが可能なものであれば、種々変形が可能である。
【００６４】
また、上述した実施形態では、ＳＳＤを例に説明をしたが、これに限らず、ホストからのコマンドのエラーチェックを行い、ホストにチェック結果を送信しなければならない構成であれば、どのようなものでも適用可能である。例えば、ＨＤＤについても本実施形態は適用可能である。
【００６５】
以上、本発明の実施形態を説明したが、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない範囲内において種々変形して実施することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示された構成要件を適宜組み合わせることによって種々の発明が抽出される。例えば、開示された構成要件からいくつかの構成要件が削除されても、所定の効果が得られるものであれば、発明として抽出され得る。
【符号の説明】
【００６６】
１１…ＳＳＤ、  ２１…ホスト、  ３１…ＮＡＮＤフラッシュメモリ
４１…ＳＳＤコントローラ、  ４２…ＳＡＴＡインターフェース
４２−１…レジスタ、  ４３…ＮＡＮＤインターフェース
４４…ＣＰＵ、  ４５…ＲＯＭ、  ４６…ＲＡＭ、  ４７…バッファ
５０…インターフェース装置、  ５１…ＳＡＴＡケーブル
６１…ＳＡＴＡインターフェース、  ７１…ＳＡＴＡブリッジ、  ７１−１…物理層
７１−２…リンク層、  ７１−３…トランスポート層、  ７１−４…コマンド層
７２…ファームウェア、  ７３…エラーチェック部、  ７４…応答データ生成部。
【図１】
2013171332.tif 000003
【図２】
2013171332.tif 000004
【図３】
2013171332.tif 000005
【図４】
2013171332.tif 000006
【図５】
2013171332.tif 000007
【図６】
2013171332.tif 000008
【図７】
2013171332.tif 000009