(57)【特許請求の範囲】
【請求項１】
ホスト装置から受信するコマンドに基づいてアクセスされる不揮発性のデータ記憶部を有する不揮発性ストレージにおいて、
前記ホスト装置から受信するコマンドが、前記データ記憶部へのアクセスを制御するアクセスコマンドか、複数のアクセスコマンドの転送準備が前記ホスト装置で整ったことを通知する転送準備完了コマンドかを判定するタイプ判定部と、
前記タイプ判定部が前記ホスト装置から転送準備完了コマンドを受信したと判定した場合、転送準備完了コマンドに基づいてダイレクトメモリアクセス要求を前記ホスト装置に発行し、ダイレクトメモリアクセス要求に基づくダイレクトメモリアクセス転送により前記ホスト装置から複数のアクセスコマンドを取得するコマンド取得部と、
前記タイプ判定部が受信したアクセスコマンドまたは前記コマンド取得部が取得したアクセスコマンドを保持するコマンド保持部と、
前記コマンド保持部に保持されたアクセスコマンドに基づいて前記データ記憶部にアクセスするアクセス制御部と
を有することを特徴とする不揮発性ストレージ。
【請求項２】
請求項１に記載の不揮発性ストレージにおいて、
転送準備完了コマンドを保持するバッファ部をさらに有し、
前記タイプ判定部は、前記ホスト装置から受信したコマンドが転送準備完了コマンドである場合、前記ホスト装置から受信した転送準備完了コマンドを前記バッファ部に格納し、
前記コマンド取得部は、前記バッファ部から転送準備完了コマンドを取得する
ことを特徴とする不揮発性ストレージ。
【請求項３】
請求項１に記載の不揮発性ストレージにおいて、
前記ホスト装置から受信するコマンドを保持し、保持したコマンドを前記タイプ判定部に転送するバッファ部と、
前記バッファ部に保持されたコマンドの前記タイプ判定部への転送を停止するか否かを、前記コマンド取得部の動作状態に基づいて判定する停止判定部と
をさらに有することを特徴とする不揮発性ストレージ。
【請求項４】
請求項３に記載の不揮発性ストレージにおいて、
前記停止判定部は、前記コマンド取得部がアクセスコマンドの前記コマンド保持部への転送を実行中、前記バッファ部に保持されたコマンドの前記タイプ判定部への転送を停止すると判定する
ことを特徴とする不揮発性ストレージ。
【請求項５】
請求項３または請求項４に記載の不揮発性ストレージにおいて、
前記タイプ判定部に転送するコマンドを前記バッファ部から読み出し、前記バッファ部から読み出したコマンドが、転送準備完了コマンドより優先して処理することを示す優先情報を含む場合、前記バッファ部から読み出したコマンドを前記停止判定部による判定結果に拘わらず前記タイプ判定部に転送し、前記バッファ部から読み出したコマンドが前記優先情報を含まない場合、前記バッファ部から読み出したコマンドの前記タイプ判定部への転送を、前記停止判定部による判定結果に基づいて実行するバイパス制御部をさらに有する
ことを特徴とする不揮発性ストレージ。
【請求項６】
請求項１ないし請求項５のいずれか１項に記載の不揮発性ストレージにおいて、
前記タイプ判定部または前記コマンド取得部からアクセスコマンドを受けるチャネル判定部をさらに有し、
前記コマンド保持部、前記アクセス制御部および前記データ記憶部は、複数のチャネル毎に設けられ、
前記チャネル判定部は、前記タイプ判定部または前記コマンド取得部から転送されたアクセスコマンドに基づいて前記複数のチャネルのうちのいずれかを選択し、選択したチャネルの前記コマンド保持部に、前記タイプ判定部または前記コマンド取得部から転送されたアクセスコマンドを格納する
ことを特徴とする不揮発性ストレージ。
【請求項７】
ホスト装置から受信するコマンドに基づいてアクセスされる不揮発性のデータ記憶部を有する不揮発性ストレージの処理方法において、
前記不揮発性ストレージが有するタイプ判定部が、前記ホスト装置から受信するコマンドが、前記データ記憶部へのアクセスを制御するアクセスコマンドか、複数のアクセスコマンドの転送準備が前記ホスト装置で整ったことを通知する転送準備完了コマンドかを判定し、
前記不揮発性ストレージが有するコマンド取得部が、前記タイプ判定部が前記ホスト装置から転送準備完了コマンドを受信したと判定した場合、転送準備完了コマンドに基づいてダイレクトメモリアクセス要求を前記ホスト装置に発行し、ダイレクトメモリアクセス要求に基づくダイレクトメモリアクセス転送により前記ホスト装置から複数のアクセスコマンドを取得し、
前記不揮発性ストレージが有するコマンド保持部が、前記タイプ判定部が受信したアクセスコマンドまたは前記コマンド取得部が取得したアクセスコマンドを保持し、
前記不揮発性ストレージが有するアクセス制御部が、前記コマンド保持部に保持されたアクセスコマンドに基づいて前記データ記憶部にアクセスする
ことを特徴とする不揮発性ストレージの処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性ストレージおよび不揮発性ストレージの処理方法に関する。
【背景技術】
【０００２】
コンピュータとハードディスク等のデバイスとを接続するインターフェースの規格の１つであるＡＴＡ（Advanced Technology Attachment）では、ＤＭＡ（Direct Memory Access）方式およびＰＩＯ（Programmed I/O）方式等の転送モードを有する。ＤＭＡ方式は、ＣＰＵ（Central Processing Unit）を介さずにデバイスとメモリとの間でデータ転送を実行する方式である。ＰＩＯ方式は、ＣＰＵがデータ転送を制御する方式である。データ転送が連続する場合、ＣＰＵの負荷は、ＤＭＡ方式のデータ転送の方がＰＩＯ方式のデータ転送に比べて、低減する。
【０００３】
なお、ＣＰＵによるアクセスを実行することなくＰＩＯ転送を連続して複数回実行するインターフェース制御装置が提案されている（例えば、特許文献１参照）。この種のインターフェース制御装置は、ＰＩＯコマンドを含む記述であるＰＩＯスクリプトを複数有する情報を保持する保持手段と、ＰＩＯスクリプトを順番に処理する転送手段とを有する。
【０００４】
また、近年、ＮＡＮＤフラッシュメモリを搭載したＳＳＤ（solid state drive）等の不揮発性ストレージが普及している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−２４２４１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＳＳＤとともにシステムに搭載されるサーバ等のホスト装置は、ＳＳＤに対して読み出しまたは書き込み等を実行するコマンドを発行する。ホスト装置から発行されたコマンドは、ＳＳＤ内の保持部に格納され、順番に処理される。
【０００７】
例えば、ＤＭＡ方式でコマンドを転送するシステムでは、ホスト装置およびＳＳＤの各々が保持部を有し、ホスト装置内の保持部に格納された複数のコマンドは、ＤＭＡ方式のデータ転送により、ＳＳＤ内の保持部に転送される。ＤＭＡ方式では、複数のコマンドがＣＰＵを介さずに連続して転送されるため、ＰＩＯ方式に比べて、複数のコマンドの転送にかかる時間は短縮する。なお、１つのコマンドを転送する場合、ＤＭＡ方式では、ＤＭＡ要求等のＤＭＡを開始するための処理がオーバーヘッドになり、ＰＩＯ方式に比べて、１つのコマンドの転送にかかる時間は増加する。
【０００８】
１つの側面では、本件開示の不揮発性ストレージおよび不揮発性ストレージの処理方法は、ホスト装置から不揮発性ストレージに転送するコマンドの数に拘わらず、コマンドの転送にかかる時間を短縮することを目的とする。
【課題を解決するための手段】
【０００９】
一観点によれば、ホスト装置から受信するコマンドに基づいてアクセスされる不揮発性のデータ記憶部を有する不揮発性ストレージは、ホスト装置から受信するコマンドが、データ記憶部へのアクセスを制御するアクセスコマンドか、複数のアクセスコマンドの転送準備がホスト装置で整ったことを通知する転送準備完了コマンドかを判定するタイプ判定部と、タイプ判定部がホスト装置から転送準備完了コマンドを受信したと判定した場合、転送準備完了コマンドに基づいてダイレクトメモリアクセス要求をホスト装置に発行し、ダイレクトメモリアクセス要求に基づくダイレクトメモリアクセス転送によりホスト装置から複数のアクセスコマンドを取得するコマンド取得部と、タイプ判定部が受信したアクセスコマンドまたはコマンド取得部が取得したアクセスコマンドを保持するコマンド保持部と、コマンド保持部に保持されたアクセスコマンドに基づいてデータ記憶部にアクセスするアクセス制御部とを有する。
【００１０】
別の観点によれば、ホスト装置から受信するコマンドに基づいてアクセスされる不揮発性のデータ記憶部を有する不揮発性ストレージの処理方法では、不揮発性ストレージが有するタイプ判定部が、ホスト装置から受信するコマンドが、データ記憶部へのアクセスを制御するアクセスコマンドか、複数のアクセスコマンドの転送準備がホスト装置で整ったことを通知する転送準備完了コマンドかを判定し、不揮発性ストレージが有するコマンド取得部が、タイプ判定部がホスト装置から転送準備完了コマンドを受信したと判定した場合、転送準備完了コマンドに基づいてダイレクトメモリアクセス要求をホスト装置に発行し、ダイレクトメモリアクセス要求に基づくダイレクトメモリアクセス転送によりホスト装置から複数のアクセスコマンドを取得し、不揮発性ストレージが有するコマンド保持部が、タイプ判定部が受信したアクセスコマンドまたはコマンド取得部が取得したアクセスコマンドを保持し、不揮発性ストレージが有するアクセス制御部が、コマンド保持部に保持されたアクセスコマンドに基づいてデータ記憶部にアクセスする。
【発明の効果】
【００１１】
本件開示の不揮発性ストレージおよび不揮発性ストレージの処理方法は、ホスト装置から不揮発性ストレージに転送するコマンドの数に拘わらず、コマンドの転送にかかる時間を短縮できる。
【図面の簡単な説明】
【００１２】
【図１】不揮発性ストレージおよび不揮発性ストレージの処理方法の一実施形態を示す図である。
【図２】不揮発性ストレージおよび不揮発性ストレージの処理方法の別の実施形態を示す図である。
【図３】図２に示したＣＰＵから不揮発性ストレージに発行されるコマンドの一例を示す図である。
【図４】図２に示したＣＰＵの動作の一例を示す図である。
【図５】図２に示したタイプ判定部の動作の一例を示す図である。
【図６】図２に示したバッファ部およびコマンド取得部の動作の一例を示す図である。
【図７】図２に示したチャネル判定部の動作の一例を示す図である。
【図８】不揮発性ストレージおよび不揮発性ストレージの処理方法の別の実施形態を示す図である。
【図９】図８に示したタイプ判定部および停止判定部の動作の一例を示す図である。
【図１０】図８に示した不揮発性ストレージの動作の一例を示す図である。
【図１１】不揮発性ストレージおよび不揮発性ストレージの処理方法の別の実施形態を示す図である。
【発明を実施するための形態】
【００１３】
以下、実施形態について、図面を用いて説明する。
【００１４】
図１は、不揮発性ストレージおよび不揮発性ストレージの処理方法の一実施形態を示す。図１に示す不揮発性ストレージ１００は、ＳＳＤ等の不揮発性の記憶装置であり、ホスト装置２００に接続される。先ず、ホスト装置２００について説明する。
【００１５】
ホスト装置２００は、例えば、ＣＰＵ２２０とメモリ制御部２４０とＤＲＡＭ（Dynamic Random Access Memory）２６０とを含むサーバ等の情報処理装置であり、不揮発性ストレージ１００にアクセスするコマンドＣＭＤを発行する。図１に示すコマンドＣＭＤａ（ＣＭＤａ１、ＣＭＤａ２）は、データ記憶部１８０へのアクセスを制御するアクセスコマンドである。なお、アクセスコマンドＣＭＤａ１は、アクセスコマンドＣＭＤａのうち、ＣＰＵ２２０からＤＲＡＭ２６０を介さずに不揮発性ストレージ１００に転送されるコマンドである。アクセスコマンドＣＭＤａ２は、アクセスコマンドＣＭＤａのうち、ＣＰＵ２２０からＤＲＡＭ２６０を介して不揮発性ストレージ１００に転送されるコマンドである。また、コマンドＣＭＤｂ１は、複数のアクセスコマンドＣＭＤａ２の転送準備がホスト装置２０２で整ったことを通知する転送準備完了コマンドである。図１に示す例では、タイプ判定部１２０がホスト装置２００から受信するコマンドＣＭＤ１は、ＣＰＵ２２０からＤＲＡＭ２６０を介さずに不揮発性ストレージ１００に転送されるアクセスコマンドＣＭＤａ１および転送準備完了コマンドＣＭＤｂ１等である。
【００１６】
例えば、ＣＰＵ２２０は、不揮発性ストレージ１００内のデータ記憶部１８０に対するアクセスの対象を示すアドレス等を含むアクセスコマンドＣＭＤａ１を、コマンドＣＭＤ１として不揮発性ストレージ１００に出力する。以下、不揮発性ストレージ１００内のデータ記憶部１８０に対するアクセスの対象を示すアドレスは、アクセス先のデータ記憶部１８０のアドレスとも称される。
【００１７】
また、例えば、ＣＰＵ２２０は、ＤＭＡ方式で複数のコマンドＣＭＤ２を不揮発性ストレージ１００に転送する場合、アクセス先のデータ記憶部１８０のアドレス等を含む複数のアクセスコマンドＣＭＤａ２をメモリ制御部２４０を介してＤＲＡＭ２６０に格納する。そして、ＣＰＵ２２０は、コマンドＣＭＤａ２のＤＲＡＭ２６０での格納先を示すアドレス、ＤＭＡ方式でコマンドＣＭＤａ２を転送することを示す情報等を含む転送準備完了コマンドＣＭＤｂ１を、コマンドＣＭＤ１として不揮発性ストレージ１００に出力する。
【００１８】
メモリ制御部２４０は、ＤＲＡＭ２６０の動作を制御する。ＤＲＡＭ２６０の少なくとも一部の領域は、上述したように、不揮発性ストレージ１００内のデータ記憶部１８０にアクセスするアクセスコマンドＣＭＤａ２を格納するキューに割り当てられる。なお、ホスト装置２００の構成は、図１に示す例に限定されない。次に、不揮発性ストレージ１００について説明する。
【００１９】
不揮発性ストレージ１００は、タイプ判定部１２０と、コマンド取得部１４０と、コマンド保持部１６０と、アクセス制御部１７０と、データを記憶する不揮発性のデータ記憶部１８０とを有する。
【００２０】
タイプ判定部１２０は、ホスト装置２００から受信するコマンドＣＭＤ１が、アクセスコマンドＣＭＤａ１か転送準備完了コマンドＣＭＤｂ１かを判定する。例えば、タイプ判定部１２０は、ＣＰＵ２２０から転送されたコマンドＣＭＤ１がＤＭＡ方式でコマンドＣＭＤａ２を転送することを示す情報を含む場合、コマンドＣＭＤ１が転送準備完了コマンドＣＭＤｂ１であると判定する。そして、タイプ判定部１２０は、コマンドＣＭＤ１が転送準備完了コマンドＣＭＤｂ１である場合、転送準備完了コマンドＣＭＤｂ１をコマンド取得部１４０に転送する。
【００２１】
また、タイプ判定部１２０は、例えば、コマンドＣＭＤ１がＤＭＡ方式でコマンドＣＭＤａ２を転送することを示す情報を含まない場合、コマンドＣＭＤ１がアクセスコマンドＣＭＤａ１であると判定する。そして、タイプ判定部１２０は、コマンドＣＭＤ１がアクセスコマンドＣＭＤａ１である場合、すなわち、コマンドＣＭＤ１が転送準備完了コマンドＣＭＤｂ１でない場合、コマンドＣＭＤ１をコマンド保持部１６０に転送する。これにより、アクセスコマンドＣＭＤａ１は、コマンド保持部１６０に格納される。以下、アクセスコマンドＣＭＤａをＣＰＵ２２０からＤＲＡＭ２６０を介さずに不揮発性ストレージ１００内のコマンド保持部１６０に転送する方式は、ＰＩＯ方式とも称される。
【００２２】
コマンド取得部１４０は、タイプ判定部１２０がホスト装置２００から転送準備完了コマンドＣＭＤｂ１を受信したと判定した場合、タイプ判定部１２０から転送される転送準備完了コマンドＣＭＤｂ１を受ける。そして、コマンド取得部１４０は、転送準備完了コマンドＣＭＤｂ１に基づいて、ダイレクトメモリアクセス要求ＤＲＥＱをホスト装置２００のメモリ制御部２４０に発行する。以下、ダイレクトメモリアクセス要求は、ＤＭＡ要求とも称される。
【００２３】
ＤＭＡ要求ＤＲＥＱを受けたメモリ制御部２４０は、ＤＲＡＭ２６０に格納されたアクセスコマンドＣＭＤａ２のうち、ＤＭＡ要求ＤＲＥＱで要求されたアクセスコマンドＣＭＤａ２をコマンド取得部１４０に転送する。これにより、コマンド取得部１４０は、転送準備完了コマンドＣＭＤｂ１で指定されたアクセスコマンドＣＭＤａ２をホスト装置２００から取得する。そして、コマンド取得部１４０は、ホスト装置２００から取得したアクセスコマンドＣＭＤａ２をコマンド保持部１６０に転送する。これにより、アクセスコマンドＣＭＤａ２は、コマンド保持部１６０に格納される。
【００２４】
このように、コマンド取得部１４０は、タイプ判定部１２０がホスト装置２００から転送準備完了コマンドＣＭＤｂ１を受信したと判定した場合、転送準備完了コマンドＣＭＤｂ１に基づいてＤＭＡ要求ＤＲＥＱをホスト装置２００に発行する。そして、コマンド取得部１４０は、ＤＭＡ要求ＤＲＥＱに基づくダイレクトメモリアクセス転送によりホスト装置２００から複数のアクセスコマンドＣＭＤａ２を取得する。ダイレクトメモリアクセス転送は、ＤＭＡ方式によるデータ転送である。以下、ダイレクトメモリアクセス転送は、ＤＭＡ転送とも称される。
【００２５】
コマンド保持部１６０は、例えば、リングバッファ、ＦＩＦＯ（First-In First-Out）等のバッファであり、ホスト装置２００から発行されたアクセスコマンドＣＭＤａを格納するキューとして機能する。例えば、コマンド保持部１６０は、タイプ判定部１２０から転送されたアクセスコマンドＣＭＤａ１およびコマンド取得部１４０から転送されたアクセスコマンドＣＭＤａ２等を保持する。すなわち、コマンド保持部１６０は、タイプ判定部１２０が受信したアクセスコマンドＣＭＤａ１またはコマンド取得部１４０が取得したアクセスコマンドＣＭＤａ２を保持する。
【００２６】
アクセス制御部１７０は、コマンド保持部１６０に保持されたアクセスコマンドＣＭＤａに基づいてデータ記憶部１８０にアクセスする。例えば、アクセス制御部１７０は、データ記憶部１８０からデータを読み出すアクセス、データ記憶部１８０にデータを書き込むアクセス、データ記憶部１８０に保持されたデータを消去するアクセス等を、アクセスコマンドＣＭＤａに基づいて実行する。
【００２７】
データ記憶部１８０は、ＮＡＮＤフラッシュメモリ等の不揮発性のメモリであり、ホスト装置２００等で扱うデータを記憶する。データ記憶部１８０は、コマンド保持部１６０に格納されたアクセスコマンドＣＭＤａに基づいて制御される。すなわち、データ記憶部１８０は、ホスト装置２００から受信するアクセスコマンドＣＭＤａに基づいてアクセスされる。
【００２８】
このように、不揮発性ストレージ１００は、ＤＭＡ方式によるコマンド転送とＰＩＯ方式によるコマンド転送との両方に対応する。
【００２９】
ここで、ＤＭＡ方式によるコマンド転送のみに対応した不揮発性ストレージを搭載したシステムでは、ホスト装置から不揮発性ストレージに１つのコマンドを転送する場合でも、ＤＭＡ転送が実行される。この場合、ＤＭＡ要求等のＤＭＡを開始するための処理がオーバーヘッドになり、ＰＩＯ方式を用いる場合に比べて、コマンドの転送にかかる時間は増加する。
【００３０】
また、ＰＩＯ方式によるコマンド転送のみに対応した不揮発性ストレージを搭載したシステムでは、ホスト装置から不揮発性ストレージに複数のコマンドを連続して転送する場合、ＤＭＡ方式を用いる場合に比べて、コマンドの転送にかかる時間は増加する。
【００３１】
なお、ＤＭＡ方式とＰＩＯ方式とを切り替えるモード設定を予め実行することでＤＭＡ方式とＰＩＯ方式とを切り替える不揮発性ストレージでは、モード設定のための処理がオーバーヘッドになり、コマンドの転送にかかる時間が増加するおそれがある。
【００３２】
これに対し、図１に示す不揮発性ストレージ１００とホスト装置２００とを搭載したシステムは、ＤＭＡ方式とＰＩＯ方式とを切り替えるモード設定を予め実行することなく、ＤＭＡ方式とＰＩＯ方式とのいずれかを選択してコマンド転送を実行できる。
【００３３】
例えば、ホスト装置２００が不揮発性ストレージ１００に１つのコマンドＣＭＤａを転送する場合、ＰＩＯ方式によるコマンド転送を用いることにより、ＤＭＡ方式によるコマンド転送を用いる場合に比べて、コマンドＣＭＤａの転送にかかる時間を短縮できる。また、ホスト装置２００が不揮発性ストレージ１００に複数のコマンドＣＭＤａを連続で転送する場合、ＤＭＡ方式によるコマンド転送を用いることにより、ＰＩＯ方式によるコマンド転送を用いる場合に比べて、コマンドＣＭＤａの転送にかかる時間を短縮できる。このように、ＤＭＡ方式とＰＩＯ方式のうち、コマンドＣＭＤａの転送にかかる時間の短い方をホスト装置２００が選択することにより、ＤＭＡ方式とＰＩＯ方式との一方のみを使用する場合に比べて、コマンドＣＭＤａの転送にかかる時間を短縮することができる。
【００３４】
また、不揮発性ストレージ１００は、ＣＰＵ２２０から転送されるコマンドＣＭＤ１がアクセスコマンドＣＭＤａ１か転送準備完了コマンドＣＭＤｂ１かを判定することで、ＤＭＡ方式によるコマンド転送かＰＩＯ方式によるコマンド転送かを判定する。このため、ＤＭＡ方式とＰＩＯ方式とを予め切り替えるモード設定等のオーバーヘッドの発生を抑制することができる。
【００３５】
このように、不揮発性ストレージ１００は、ホスト装置２００から不揮発性ストレージ１００内のデータ記憶部１８０に転送するコマンドＣＭＤａの数に拘わらず、コマンドＣＭＤａの転送にかかる時間を短縮可能である。
【００３６】
なお、不揮発性ストレージ１００の構成は、図１に示す例に限定されない。例えば、不揮発性ストレージ１００は、図２に示すように、複数のチャネルＣＨを有してもよい。この場合、コマンド保持部１６０、アクセス制御部１７０およびデータ記憶部１８０は、チャネルＣＨ毎に設けられる。
【００３７】
以上、図１に示す実施形態では、不揮発性ストレージ１００は、ホスト装置２００内のＣＰＵ２２０から転送されたコマンドＣＭＤ１がアクセスコマンドＣＭＤａ１か転送準備完了コマンドＣＭＤｂ１かを判定する。そして、不揮発性ストレージ１００は、ＣＰＵ２２０から転送されたコマンドＣＭＤ１がアクセスコマンドＣＭＤａ１である場合、ＣＰＵ２２０から転送されたアクセスコマンドＣＭＤａ１をコマンド保持部１６０に格納する。また、不揮発性ストレージ１００は、ＣＰＵ２２０から転送されたコマンドＣＭＤ１が転送準備完了コマンドＣＭＤｂ１である場合、ホスト装置２００内のＤＲＡＭ２６０に格納されたアクセスコマンドＣＭＤａ２を、ＤＭＡ転送で取得する。そして、不揮発性ストレージ１００は、ＤＲＡＭ２６０からＤＭＡ転送で取得したアクセスコマンドＣＭＤａ２を、コマンド保持部１６０に格納する。不揮発性ストレージ１００がＤＭＡ方式とＰＩＯ方式との両方のコマンド転送に対応するため、ホスト装置２００から不揮発性ストレージ１００に転送するコマンドＣＭＤａの数に拘わらず、コマンドＣＭＤａの転送にかかる時間を短縮することができる。
【００３８】
図２は、不揮発性ストレージおよび不揮発性ストレージの処理方法の別の実施形態を示す。図１で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図２に示す不揮発性ストレージ１０２は、ＳＳＤ等の不揮発性の記憶装置であり、ホスト装置２０２に接続される。先ず、ホスト装置２０２について説明する。
【００３９】
ホスト装置２０２は、インターフェース部２８０が図１に示したホスト装置２００に追加されることを除いて、図１に示したホスト装置２００と同一または同様である。例えば、ホスト装置２０２は、ＣＰＵ２２０とメモリ制御部２４０とＤＲＡＭ２６０とインターフェース部２８０とを含むサーバ等の情報処理装置であり、不揮発性ストレージ１０２にアクセスするコマンドＣＭＤを発行する。
【００４０】
インターフェース部２８０は、例えば、ＰＣＩ（Peripheral Component Interconnect）  Ｅｘｐｒｅｓｓ規格（以下、ＰＣＩｅとも称する）に準拠したインターフェースである。例えば、インターフェース部２８０は、不揮発性ストレージ１０２内のＰＣＩｅに準拠したインターフェース部１１０に接続される。これにより、例えば、ＣＰＵ２２０、メモリ制御部２４０およびＤＲＡＭ２６０等は、インターフェース部２８０、１１０を介して、不揮発性ストレージ１０２内のタイプ判定部１２０およびコマンド取得部１４０等との間のデータ転送を実行する。なお、ホスト装置２０２の構成は、図２に示す例に限定されない。次に、不揮発性ストレージ１０２について説明する。
【００４１】
図２に示す不揮発性ストレージ１０２では、図１に示したアクセス制御部１７０の代わりにコマンド発行部１７２が設けられ、インターフェース部１１０とバッファ部１３０とチャネル判定部１５０とが図１に示した不揮発性ストレージ１００に追加される。また、不揮発性ストレージ１０２では、コマンド保持部１６０とコマンド発行部１７２とデータ記憶部１８０が、複数のチャネルＣＨ（ＣＨ１、ＣＨ２、ＣＨ３、・・・、ＣＨｎ）毎に設けられる。不揮発性ストレージ１０２のその他の構成は、図１に示した不揮発性ストレージ１００と同一または同様である。
【００４２】
例えば、不揮発性ストレージ１０２は、インターフェース部１１０とタイプ判定部１２０とバッファ部１３０とコマンド取得部１４０とチャネル判定部１５０と複数のコマンド保持部１６０と複数のコマンド発行部１７２と複数のデータ記憶部１８０とを有する。インターフェース部１１０は、上述したように、ＰＣＩ  Ｅｘｐｒｅｓｓ規格に準拠したインターフェースである。
【００４３】
タイプ判定部１２０は、図１に示したタイプ判定部１２０と同一または同様である。例えば、タイプ判定部１２０は、ＣＰＵ２２０から転送されたコマンドＣＭＤ１を転送準備完了コマンドＣＭＤｂ１と判定した場合、ＣＰＵ２２０から転送されたコマンドＣＭＤ１、すなわち、転送準備完了コマンドＣＭＤｂ１を、バッファ部１３０に転送する。すなわち、タイプ判定部１２０は、ホスト装置２０２から受信したコマンドＣＭＤ１が転送準備完了コマンドＣＭＤｂ１である場合、ホスト装置２０２から受信した転送準備完了コマンドＣＭＤｂ１をバッファ部１３０に格納する。
【００４４】
また、タイプ判定部１２０は、コマンドＣＭＤ１がアクセスコマンドＣＭＤａ１である場合、すなわち、コマンドＣＭＤ１が転送準備完了コマンドＣＭＤｂ１でない場合、コマンドＣＭＤ１をチャネル判定部１５０に転送する。これにより、アクセスコマンドＣＭＤａ１は、チャネル判定部１５０に転送される。
【００４５】
バッファ部１３０は、例えば、ＦＩＦＯ等のバッファであり、タイプ判定部１２０から転送される転送準備完了コマンドＣＭＤｂ１を保持する。そして、バッファ部１３０は、保持した転送準備完了コマンドＣＭＤｂ１を、コマンド取得部１４０に転送する。なお、例えば、バッファ部１３０は、コマンド取得部１４０がアクセスコマンドＣＭＤａ２をＤＭＡ転送でＤＲＡＭ２６０から取得する処理を実行中、転送準備完了コマンドＣＭＤｂ１のコマンド取得部１４０への転送を待機する。すなわち、バッファ部１３０は、コマンド取得部１４０がアクセスコマンドＣＭＤａ２をＤＭＡ転送でＤＲＡＭ２６０から取得する処理を実行していない場合、転送準備完了コマンドＣＭＤｂ１をコマンド取得部１４０に転送する。
【００４６】
コマンド取得部１４０は、図１に示したコマンド取得部１４０と同一または同様である。例えば、コマンド取得部１４０は、バッファ部１３０から転送準備完了コマンドＣＭＤｂ１を取得する。そして、コマンド取得部１４０は、転送準備完了コマンドＣＭＤｂ１に基づいて、ＤＭＡ要求ＤＲＥＱをホスト装置２０２内のメモリ制御部２４０に発行する。これにより、ＤＲＡＭ２６０に格納されたアクセスコマンドＣＭＤａ２のうち、ＤＭＡ要求ＤＲＥＱで要求されたアクセスコマンドＣＭＤａ２は、コマンド取得部１４０にＤＭＡ転送される。コマンド取得部１４０は、ＤＲＡＭ２６０からＤＭＡ転送された複数のアクセスコマンドＣＭＤａ２をチャネル判定部１５０に順次転送する。
【００４７】
チャネル判定部１５０は、タイプ判定部１２０が受信したアクセスコマンドＣＭＤａ１またはコマンド取得部１４０が取得したアクセスコマンドＣＭＤａ２を受信する。すなわち、チャネル判定部１５０は、タイプ判定部１２０またはコマンド取得部１４０からアクセスコマンドＣＭＤａを受信する。
【００４８】
例えば、チャネル判定部１５０は、タイプ判定部１２０またはコマンド取得部１４０から転送されたアクセスコマンドＣＭＤａに基づいて、アクセス対象のデータ記憶部１８０に対応するチャネルＣＨを特定する。そして、チャネル判定部１５０は、特定したチャネルＣＨのコマンド保持部１６０に、タイプ判定部１２０またはコマンド取得部１４０から転送されたアクセスコマンドＣＭＤａを格納する。
【００４９】
このように、チャネル判定部１５０は、タイプ判定部１２０またはコマンド取得部１４０から受信したアクセスコマンドＣＭＤａに基づいて複数のチャネルＣＨのうちのいずれかを選択する。そして、チャネル判定部１５０は、アクセスコマンドＣＭＤａに基づいて選択したチャネルＣＨのコマンド保持部１６０に、アクセスコマンドＣＭＤａを格納する。
【００５０】
コマンド保持部１６０は、図１に示したコマンド保持部１６０と同一または同様である。例えば、コマンド保持部１６０は、ホスト装置２０２から発行されたアクセスコマンドＣＭＤａを格納するキューとして機能する。
【００５１】
コマンド発行部１７２は、コマンド保持部１６０に保持されたアクセスコマンドＣＭＤａに基づいてデータ記憶部１８０にアクセスするアクセス制御部の一例である。例えば、コマンド発行部１７２は、コマンド保持部１６０に保持されたアクセスコマンドＣＭＤａを読み出し、読み出したアクセスコマンドＣＭＤａをデータ記憶部１８０に発行する。これにより、データ記憶部１８０に対するアクセスがアクセスコマンドＣＭＤａに基づいて実行される。例えば、データ記憶部１８０からデータを読み出すアクセス、データ記憶部１８０にデータを書き込むアクセス、データ記憶部１８０に保持されたデータを消去するアクセス等がアクセスコマンドＣＭＤａに基づいて実行される。
【００５２】
データ記憶部１８０は、図１に示したデータ記憶部１８０と同一または同様である。例えば、データ記憶部１８０は、ＮＡＮＤフラッシュメモリ等の不揮発性のメモリであり、ホスト装置２０２等で扱うデータを記憶する。
【００５３】
なお、不揮発性ストレージ１０２の構成は、図２に示す例に限定されない。例えば、バッファ部１３０は、コマンド取得部１４０内に設けられてもよい。また、タイプ判定部１２０は、アクセスコマンドＣＭＤａ１を保持するＦＩＦＯ等のバッファを有し、アクセスコマンドＣＭＤａ１をバッファを介してチャネル判定部１５０に転送してもよい。この場合、タイプ判定部１２０は、例えば、コマンド取得部１４０がアクセスコマンドＣＭＤａ２をＤＭＡ転送でＤＲＡＭ２６０から取得する処理を実行中、アクセスコマンドＣＭＤａ１のチャネル判定部１５０への転送を待機する。
【００５４】
図３は、図２に示したＣＰＵ２２０から不揮発性ストレージ１０２に発行されるコマンドＣＭＤ１の一例を示す。
【００５５】
ＰＩＯ方式でアクセスコマンドＣＭＤａを転送する場合、コマンドＣＭＤ１としてアクセスコマンドＣＭＤａ１がＣＰＵ２２０から不揮発性ストレージ１０２に発行される（図３（ａ））。この場合、コマンドＣＭＤ１は、論理値”０”のフラグＤＦＬＧと、コマンド種別と、アクセス対象の領域を示すデータ記憶部１８０のアドレスと、アクセス対象の領域の大きさを示すサイズ情報とを有するアクセスコマンドＣＭＤａ１である。フラグＤＦＬＧは、例えば、コマンドＣＭＤ１の先頭ビットに割り当てられ、コマンドＣＭＤ１がアクセスコマンドＣＭＤａである場合、論理値”０”に設定される。コマンド種別は、例えば、データを読み出すリードコマンド、データを書き込むプログラムコマンド、データを消去するイレースコマンド等を識別する識別情報である。
【００５６】
ＤＭＡ方式でアクセスコマンドＣＭＤａを転送する場合、コマンドＣＭＤ１として転送準備完了コマンドＣＭＤｂ１がＣＰＵ２２０から不揮発性ストレージ１０２に発行される（図３（ｂ））。この場合、コマンドＣＭＤ１は、論理値”１”のフラグＤＦＬＧと、アクセスコマンドＣＭＤａ２のＤＲＡＭ２６０での格納先を示すアドレスと、転送対象のアクセスコマンドＣＭＤａ２のサイズを示すサイズ情報とを有する転送準備完了コマンドＣＭＤｂ１である。フラグＤＦＬＧは、例えば、コマンドＣＭＤ１が転送準備完了コマンドＣＭＤｂ１である場合、論理値”１”に設定される。したがって、タイプ判定部１２０は、フラグＤＦＬＧの値により、ＤＭＡ方式かＰＩＯ方式かを判定する。
【００５７】
例えば、フラグＤＦＬＧは、コンピュータにＳＳＤを接続するための通信規格の１つであるＮＶＭ  Ｅｘｐｒｅｓｓ（Non-Volatile Memory Express）規格のＤｏｏｒｂｅｌｌに対応する。なお、コマンドＣＭＤ１のデータ構造は、図３に示す例に限定されない。
【００５８】
図４は、図２に示したＣＰＵ２２０の動作の一例を示す。なお、図４は、不揮発性ストレージ１０２にコマンドＣＭＤ１を発行する際のＣＰＵ２２０の動作を示す。また、ＣＰＵ２２０の動作は、図４に示す例に限定されない。
【００５９】
ステップＳ１００では、ＣＰＵ２２０は、アクセスコマンドＣＭＤａの転送方式としてＤＭＡ方式を選択するか否かを判定する。例えば、ＣＰＵ２２０は、転送対象のコマンド数が予め設定された閾値以上の場合、アクセスコマンドＣＭＤａの転送方式としてＤＭＡ方式を選択する。また、例えば、ＣＰＵ２２０は、転送対象のコマンド数が予め設定された閾値未満の場合、アクセスコマンドＣＭＤａの転送方式としてＰＩＯ方式を選択する。
【００６０】
この場合、閾値は、例えば、転送対象の全てのコマンドをＤＭＡ方式で転送するのにかかる時間が転送対象の全てのコマンドをＰＩＯ方式で転送するのにかかる時間より短くなるコマンド数の最小値である。なお、閾値は、ホスト装置２０２のユーザ等により任意の値に設定されもよい。
【００６１】
このように、ＣＰＵ２２０は、ＤＭＡ方式とＰＩＯ方式のうち、転送対象の全てのコマンドＣＭＤａの転送にかかる時間の短い方を選択する。そして、ＣＰＵ２２０は、アクセスコマンドＣＭＤａの転送方式としてＤＭＡ方式を選択する場合、動作をステップＳ１１０に移す。一方、ＣＰＵ２２０は、アクセスコマンドＣＭＤａの転送方式としてＤＭＡ方式を選択しない場合、すなわち、アクセスコマンドＣＭＤａの転送方式としてＰＩＯ方式を選択する場合、動作をステップＳ１３０に移す。
【００６２】
ステップＳ１１０では、ＣＰＵ２２０は、メモリ制御部２４０を介してＤＲＡＭ２６０に複数のアクセスコマンドＣＭＤａ２を格納する。アクセスコマンドＣＭＤａ２のデータ構造は、例えば、図３に示したアクセスコマンドＣＭＤａ１からフラグＤＦＬＧを省いたデータ構造と同一または同様である。
【００６３】
次に、ステップＳ１２０では、ＣＰＵ２２０は、論理値”１”のフラグＤＦＬＧとＤＲＡＭ２６０のアドレスとサイズ情報とを含むコマンドＣＭＤ１を不揮発性ストレージ１０２に発行する。例えば、ＣＰＵ２２０は、図３に示した転送準備完了コマンドＣＭＤｂ１をコマンドＣＭＤ１として不揮発性ストレージ１０２に発行する。これにより、不揮発性ストレージ１０２にコマンドＣＭＤ１を発行する際のＣＰＵ２２０の動作は、終了する。
【００６４】
ステップＳ１３０では、ＣＰＵ２２０は、論理値”０”のフラグＤＦＬＧとコマンド種別とデータ記憶部１８０のアドレスとサイズ情報とを含むコマンドＣＭＤ１を不揮発性ストレージ１０２に発行する。例えば、ＣＰＵ２２０は、図３に示したアクセスコマンドＣＭＤａ１をコマンドＣＭＤ１として不揮発性ストレージ１０２に発行する。これにより、不揮発性ストレージ１０２にコマンドＣＭＤ１を発行する際のＣＰＵ２２０の動作は、終了する。
【００６５】
図５は、図２に示したタイプ判定部１２０の動作の一例を示す。なお、タイプ判定部１２０の動作は、図５に示す例に限定されない。
【００６６】
ステップＳ２００では、タイプ判定部１２０は、ホスト装置２０２内のＣＰＵ２２０から不揮発性ストレージ１０２に発行されたコマンドＣＭＤ１を、インターフェース部１１０を介して受信する。
【００６７】
次に、ステップＳ２１０では、タイプ判定部１２０は、ＣＰＵ２２０から受信したコマンドＣＭＤ１のフラグＤＦＬＧが論理値”１”であるか否かを判定する。すなわち、タイプ判定部１２０は、ＣＰＵ２２０から受信したコマンドＣＭＤ１が転送準備完了コマンドＣＭＤｂ１であるか否かを判定する。これにより、タイプ判定部１２０は、アクセスコマンドＣＭＤａがＤＭＡ方式で転送されるか否かを判定できる。
【００６８】
コマンドＣＭＤ１のフラグＤＦＬＧが論理値”１”である場合、タイプ判定部１２０の動作は、ステップＳ２２０に移る。一方、コマンドＣＭＤ１のフラグＤＦＬＧが論理値”１”でない場合、すなわち、コマンドＣＭＤ１のフラグＤＦＬＧが論理値”０”である場合、タイプ判定部１２０の動作は、ステップＳ２３０に移る。
【００６９】
ステップＳ２２０では、タイプ判定部１２０は、ＣＰＵ２２０から受信したコマンドＣＭＤ１を、バッファ部１３０に転送する。すなわち、タイプ判定部１２０は、ＣＰＵ２２０から受信した転送準備完了コマンドＣＭＤｂ１を、バッファ部１３０に転送する。これにより、転送準備完了コマンドＣＭＤｂ１がバッファ部１３０に格納される。なお、タイプ判定部１２０は、フラグＤＦＬＧを削除した転送準備完了コマンドＣＭＤｂ１をバッファ部１３０に転送してもよいし、フラグＤＦＬＧを残した転送準備完了コマンドＣＭＤｂ１をバッファ部１３０に転送してもよい。
【００７０】
ステップＳ２３０では、タイプ判定部１２０は、ＣＰＵ２２０から受信したコマンドＣＭＤ１を、チャネル判定部１５０に転送する。すなわち、タイプ判定部１２０は、ＣＰＵ２２０から受信したアクセスコマンドＣＭＤａ１を、チャネル判定部１５０に転送する。例えば、タイプ判定部１２０は、ＣＰＵ２２０から受信したアクセスコマンドＣＭＤａ１のフラグＤＦＬＧを削除し、フラグＤＦＬＧを削除したアクセスコマンドＣＭＤａ１をチャネル判定部１５０に転送する。
【００７１】
図６は、図２に示したバッファ部１３０およびコマンド取得部１４０の動作の一例を示す。
【００７２】
ステップＳ３００では、バッファ部１３０は、コマンド取得部１４０が転送準備完了コマンドＣＭＤｂ１を受信可能なレディ状態であるか否かを判定する。例えば、バッファ部１３０は、コマンド取得部１４０がアクセスコマンドＣＭＤａ２のチャネル判定部１５０への転送を実行中であることを示すビジー信号を、コマンド取得部１４０から受信した場合、コマンド取得部１４０の状態をレディ状態でないと判定する。すなわち、バッファ部１３０は、ビジー信号がコマンド取得部１４０から出力されていない場合、コマンド取得部１４０の状態をレディ状態であると判定する。
【００７３】
コマンド取得部１４０がレディ状態である場合、バッファ部１３０の動作は、ステップＳ３１０に移る。一方、コマンド取得部１４０がレディ状態でない場合、バッファ部１３０の動作は、ステップＳ３００に戻る。すなわち、バッファ部１３０は、コマンド取得部１４０がレディ状態になるまで、ステップＳ３１０の処理の実行を待機する。
【００７４】
ステップＳ３１０では、バッファ部１３０は、保持している転送準備完了コマンドＣＭＤｂ１をコマンド取得部１４０に転送する。なお、バッファ部１３０が保持している転送準備完了コマンドＣＭＤｂ１は、図５に示したステップＳ２２０でタイプ判定部１２０から転送されたコマンドＣＭＤ１である。転送準備完了コマンドＣＭＤｂ１を受信したコマンド取得部１４０は、ステップＳ４００、Ｓ４１０、Ｓ４２０、Ｓ４３０の処理を実行する。
【００７５】
例えば、ステップＳ４００では、コマンド取得部１４０は、転送準備完了コマンドＣＭＤｂ１をバッファ部１３０から受信し、ビジー信号をバッファ部１３０等に出力する。例えば、コマンド取得部１４０は、転送準備完了コマンドＣＭＤｂ１をバッファ部１３０から受信した場合、ビジー信号をアサートする。
【００７６】
次に、ステップＳ４１０では、コマンド取得部１４０は、バッファ部１３０から転送された転送準備完了コマンドＣＭＤｂ１に基づいて、ＤＭＡ要求ＤＲＥＱをホスト装置２０２内のメモリ制御部２４０に発行する。例えば、コマンド取得部１４０は、転送準備完了コマンドＣＭＤｂ１に含まれる情報のうちのＤＲＡＭ２６０のアドレスおよびサイズ情報に基づいてＤＭＡ要求ＤＲＥＱを生成し、生成したＤＭＡ要求ＤＲＥＱをホスト装置２０２内のメモリ制御部２４０に発行する。
【００７７】
次に、ステップＳ４２０では、コマンド取得部１４０は、コマンド種別、データ記憶部１８０のアドレスおよびサイズ情報を含むアクセスコマンドＣＭＤａ２をホスト装置２０２から受信してチャネル判定部１５０に転送する。例えば、コマンド取得部１４０は、図４に示したステップＳ１１０でＤＲＡＭ２６０に格納された複数のアクセスコマンドＣＭＤａ２を、ステップＳ４１０で発行したＤＭＡ要求ＤＲＥＱに基づくＤＭＡ転送によりホスト装置２００から順次取得する。そして、コマンド取得部１４０は、ホスト装置２００内のＤＲＡＭ２６０からＤＭＡ転送により取得した複数のアクセスコマンドＣＭＤａ２を、チャネル判定部１５０に順次転送する。コマンド取得部１４０は、ＤＭＡ要求ＤＲＥＱで要求した複数のアクセスコマンドＣＭＤａ２を全てチャネル判定部１５０に転送した後、ステップＳ４３０の処理を実行する。
【００７８】
ステップＳ４３０では、コマンド取得部１４０は、ビジー信号の出力を停止する。例えば、コマンド取得部１４０は、ビジー信号をネゲートする。
【００７９】
このように、転送準備完了コマンドＣＭＤｂ１は、コマンド取得部１４０の動作状態に応じて、バッファ部１３０からコマンド取得部１４０に転送される。これにより、コマンド取得部１４０が転送準備完了コマンドＣＭＤｂ１を受信可能でない状態のときに、転送準備完了コマンドＣＭＤｂ１がコマンド取得部１４０に転送されることを抑制することができる。なお、タイプ判定部１２０からバッファ部１３０への転送準備完了コマンドＣＭＤｂ１の転送は、コマンド取得部１４０の動作状態に拘わらず実行される。これにより、タイプ判定部１２０は、ホスト装置２０２から転送されるコマンドＣＭＤ１を効率よく受信できる。
【００８０】
なお、バッファ部１３０およびコマンド取得部１４０の動作は、図６に示す例に限定されない。例えば、コマンド取得部１４０は、バッファ部１３０に転送準備完了コマンドＣＭＤｂ１が格納されていることを示す情報を受け、レディ状態のときに、バッファ部１３０から転送準備完了コマンドＣＭＤｂ１を読み出してもよい。
【００８１】
図７は、図２に示したチャネル判定部１５０の動作の一例を示す。なお、チャネル判定部１５０の動作は、図７に示す例に限定されない。
【００８２】
ステップ５００では、チャネル判定部１５０は、タイプ判定部１２０またはコマンド取得部１４０からアクセスコマンドＣＭＤａを受信する。例えば、チャネル判定部１５０は、図５に示したステップＳ２３０でタイプ判定部１２０から転送されるアクセスコマンドＣＭＤａを受信する。また、チャネル判定部１５０は、図６に示したステップＳ４２０でコマンド取得部１４０から転送されるアクセスコマンドＣＭＤａを受信する。
【００８３】
次に、ステップ５１０では、チャネル判定部１５０は、ステップＳ５００で受信したアクセスコマンドＣＭＤａに含まれる情報のうちのデータ記憶部１８０のアドレスに対応するチャネルＣＨを特定する。そして、チャネル判定部１５０は、アクセスコマンドＣＭＤａに基づいて特定したチャネルＣＨのコマンド保持部１６０に、アクセスコマンドＣＭＤａを格納する。このように、チャネル判定部１５０は、ステップＳ５００で受信したアクセスコマンドＣＭＤａの格納先となるコマンド保持部１６０を、アクセスコマンドＣＭＤａに含まれる情報のうちのデータ記憶部１８０のアドレスに基づいて選択する。これにより、アクセスコマンドＣＭＤａは、アクセス対象のデータ記憶部１８０に対応するコマンド保持部１６０に格納される。
【００８４】
以上、図２から図７に示す実施形態においても、図１に示した実施形態と同様の効果を得ることができる。例えば、不揮発性ストレージ１０２内のタイプ判定部１２０は、ホスト装置２０２内のＣＰＵ２２０から転送されたコマンドＣＭＤ１がアクセスコマンドＣＭＤａ１か転送準備完了コマンドＣＭＤｂ１かを判定する。そして、タイプ判定部１２０は、コマンドＣＭＤ１がアクセスコマンドＣＭＤａ１である場合、ＣＰＵ２２０から転送されたアクセスコマンドＣＭＤａ１をチャネル判定部１５０に転送する。また、タイプ判定部１２０は、コマンドＣＭＤ１が転送準備完了コマンドＣＭＤｂ１である場合、ＣＰＵ２２０から転送された転送準備完了コマンドＣＭＤｂ１をバッファ部１３０に格納する。
【００８５】
コマンド取得部１４０は、バッファ部１３０に保持された転送準備完了コマンドＣＭＤｂ１を取得し、転送準備完了コマンドＣＭＤｂ１に基づいて、ＤＭＡ要求ＤＲＥＱをホスト装置２０２に発行する。そして、コマンド取得部１４０は、ホスト装置２０２内のＤＲＡＭ２６０に格納されたアクセスコマンドＣＭＤａ２をＤＭＡ要求ＤＲＥＱに基づくＤＭＡ転送で取得し、取得したアクセスコマンドＣＭＤａ２をチャネル判定部１５０に転送する。
【００８６】
チャネル判定部１５０は、タイプ判定部１２０またはコマンド取得部１４０から受信したアクセスコマンドＣＭＤａに基づいて複数のチャネルＣＨのうちのいずれかを選択し、選択したチャネルＣＨのコマンド保持部１６０にアクセスコマンドＣＭＤａを格納する。このように、不揮発性ストレージ１０２は、ＤＭＡ方式とＰＩＯ方式との両方のコマンド転送に対応する。このため、ホスト装置２０２から不揮発性ストレージ１０２に転送するコマンドＣＭＤａの数に拘わらず、コマンドＣＭＤａの転送にかかる時間を短縮することができる。
【００８７】
図８は、不揮発性ストレージおよび不揮発性ストレージの処理方法の別の実施形態を示す。図１から図７で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図８に示す不揮発性ストレージ１０４は、ＳＳＤ等の不揮発性の記憶装置であり、ホスト装置２０２に接続される。ホスト装置２０２は、図２に示したホスト装置２０２と同一または同様である。
【００８８】
不揮発性ストレージ１０４では、図２に示したタイプ判定部１２０およびバッファ部１３０の代わりにタイプ判定部１２２およびバッファ部１１２が設けられ、停止判定部１２４が図２に示した不揮発性ストレージ１０２に追加される。不揮発性ストレージ１０４のその他の構成は、図２に示した不揮発性ストレージ１０２と同一または同様である。
【００８９】
例えば、不揮発性ストレージ１０４は、インターフェース部１１０とバッファ部１１２とタイプ判定部１２２と停止判定部１２４とコマンド取得部１４０とチャネル判定部１５０とを有する。さらに、不揮発性ストレージ１０４は、図２に示した不揮発性ストレージ１０２と同様に、複数のチャネルＣＨ毎に設けられた複数のコマンド保持部１６０と複数のコマンド発行部１７２と複数のデータ記憶部１８０とを有する。
【００９０】
インターフェース部１１０は、図２に示したインターフェース部１１０と同一または同様である。例えば、インターフェース部１１０は、ＰＣＩ  Ｅｘｐｒｅｓｓ規格に準拠したインターフェースである。
【００９１】
バッファ部１１２は、例えば、ＦＩＦＯ等のバッファであり、ホスト装置２０２から受信するコマンドＣＭＤ１を保持し、保持したコマンドＣＭＤ１をタイプ判定部１２２に転送する。
【００９２】
タイプ判定部１２２は、停止判定部１２４から停止信号ＳＳＩＧを受けている場合に、バッファ部１１２からのコマンドＣＭＤ１の読み出しを停止することを除いて、図２に示したタイプ判定部１２０と同一または同様である。
【００９３】
例えば、タイプ判定部１２２は、停止判定部１２４からの停止信号ＳＳＩＧの出力が停止している場合に、バッファ部１１２からコマンドＣＭＤ１を取得する。そして、タイプ判定部１２２は、例えば、バッファ部１１２から取得したコマンドＣＭＤ１を転送準備完了コマンドＣＭＤｂ１と判定した場合、コマンドＣＭＤ１、すなわち、転送準備完了コマンドＣＭＤｂ１を、コマンド取得部１４０に転送する。すなわち、タイプ判定部１２２は、ホスト装置２０２からバッファ部１１２を介して受信したコマンドＣＭＤ１が転送準備完了コマンドＣＭＤｂ１である場合、ホスト装置２０２から受信した転送準備完了コマンドＣＭＤｂ１をコマンド取得部１４０に転送する。
【００９４】
また、タイプ判定部１２２は、コマンドＣＭＤ１がアクセスコマンドＣＭＤａ１である場合、すなわち、コマンドＣＭＤ１が転送準備完了コマンドＣＭＤｂ１でない場合、コマンドＣＭＤ１をチャネル判定部１５０に転送する。これにより、アクセスコマンドＣＭＤａ１は、チャネル判定部１５０を介してコマンド保持部１６０に格納される。
【００９５】
停止判定部１２４は、バッファ部１１２に保持されたコマンドＣＭＤ１のタイプ判定部１２２への転送を停止するか否かを、コマンド取得部１４０の動作状態に基づいて判定する。例えば、停止判定部１２４は、コマンド取得部１４０がアクセスコマンドＣＭＤａ２のチャネル判定部１５０への転送を実行している場合、ビジー信号ＢＳＩＧをコマンド取得部１４０から受ける。なお、ビジー信号ＢＳＩＧは、コマンド取得部１４０がアクセスコマンドＣＭＤａ２のチャネル判定部１５０への転送を実行中であることを示す信号である。
【００９６】
停止判定部１２４は、ビジー信号ＢＳＩＧを受信した場合、コマンド取得部１４０が転送準備完了コマンドＣＭＤｂ１を受信可能なレディ状態でないと判定し、停止信号ＳＳＩＧをタイプ判定部１２２に出力する。すなわち、停止信号ＳＳＩＧは、コマンドＣＭＤ１のタイプ判定部１２２への転送を停止する信号である。例えば、停止判定部１２４は、ビジー信号ＢＳＩＧがアサートされた場合、停止信号ＳＳＩＧをアサートする。
【００９７】
また、停止判定部１２４は、コマンド取得部１４０からのビジー信号ＢＳＩＧの出力が停止している場合、コマンド取得部１４０が転送準備完了コマンドＣＭＤｂ１を受信可能なレディ状態であると判定し、停止信号ＳＳＩＧの出力を停止する。例えば、停止判定部１２４は、ビジー信号ＢＳＩＧがネゲートされた場合、停止信号ＳＳＩＧをネゲートする。
【００９８】
このように、停止判定部１２４は、コマンド取得部１４０がアクセスコマンドＣＭＤａ２のコマンド保持部１６０への転送を実行中、バッファ部１１２に保持されたコマンドＣＭＤ１のタイプ判定部１２２への転送を停止すると判定する。
【００９９】
コマンド取得部１４０は、図２に示したコマンド取得部１４０と同一または同様である。例えば、コマンド取得部１４０は、タイプ判定部１２２から転送準備完了コマンドＣＭＤｂ１を受信する。そして、コマンド取得部１４０は、転送準備完了コマンドＣＭＤｂ１に基づいて、ＤＭＡ要求ＤＲＥＱをホスト装置２０２内のメモリ制御部２４０に発行する。これにより、ＤＲＡＭ２６０に格納されたアクセスコマンドＣＭＤａ２のうち、ＤＭＡ要求ＤＲＥＱで要求されたアクセスコマンドＣＭＤａ２は、コマンド取得部１４０にＤＭＡ転送される。コマンド取得部１４０は、ＤＲＡＭ２６０からＤＭＡ転送された複数のアクセスコマンドＣＭＤａ２をチャネル判定部１５０に順次転送する。これにより、複数のアクセスコマンドＣＭＤａ２は、チャネル判定部１５０を介してコマンド保持部１６０に格納される。
【０１００】
また、コマンド取得部１４０は、転送準備完了コマンドＣＭＤｂ１をタイプ判定部１２２から受信した場合、ビジー信号ＢＳＩＧを停止判定部１２４等に出力する。例えば、コマンド取得部１４０は、転送準備完了コマンドＣＭＤｂ１をタイプ判定部１２２から受信した場合、ビジー信号ＢＳＩＧをアサートする。そして、コマンド取得部１４０は、ＤＭＡ転送で取得した複数のアクセスコマンドＣＭＤａ２を全てチャネル判定部１５０に転送した後に、ビジー信号ＢＳＩＧの出力を停止する。例えば、コマンド取得部１４０は、ＤＭＡ転送で取得した複数のアクセスコマンドＣＭＤａ２を全てチャネル判定部１５０に転送した後に、ビジー信号ＢＳＩＧをネゲートする。
【０１０１】
このように、コマンド取得部１４０は、ＤＭＡ転送で取得した複数のアクセスコマンドＣＭＤａ２のチャネル判定部１５０への転送を実行している場合、ビジー信号ＢＳＩＧを停止判定部１２４等に出力する。なお、コマンド取得部１４０の動作は、図６に示したコマンド取得部１４０の各ステップＳの説明におけるバッファ部１３０をタイプ判定部１２０（但し、ビジー信号ＢＳＩＧの出力先は停止判定部１２４）に読み替えることにより説明される。
【０１０２】
チャネル判定部１５０、コマンド保持部１６０、コマンド発行部１７２およびデータ記憶部１８０は、図２に示したチャネル判定部１５０、コマンド保持部１６０、コマンド発行部１７２およびデータ記憶部１８０と同一または同様である。
【０１０３】
なお、不揮発性ストレージ１０４の構成は、図８に示す例に限定されない。例えば、停止判定部１２４は、タイプ判定部１２２内に設けられてもよいし、バッファ部１１２内に設けられてもよい。あるいは、停止判定部１２４は、省かれてもよい。この場合、タイプ判定部１２２は、ビジー信号ＢＳＩＧを停止信号ＳＳＩＧとして、コマンド取得部１４０から受けてもよい。また、バッファ部１１２は、ビジー信号ＢＳＩＧをコマンド取得部１４０から受け、コマンドＣＭＤ１のタイプ判定部１２２への転送を停止するか否かをビジー信号ＢＳＩＧに基づいて判定してもよい。
【０１０４】
図９は、図８に示したタイプ判定部１２２および停止判定部１２４の動作の一例を示す。なお、タイプ判定部１２２および停止判定部１２４の動作は、図９に示す例に限定されない。先ず、停止判定部１２４の動作を説明する。
【０１０５】
ステップＳ６００では、停止判定部１２４は、コマンド取得部１４０が転送準備完了コマンドＣＭＤｂ１を受信可能なレディ状態であるか否かを判定する。例えば、停止判定部１２４は、ビジー信号ＢＳＩＧをコマンド取得部１４０から受信した場合、コマンド取得部１４０の状態をレディ状態でないと判定する。すなわち、停止判定部１２４は、ビジー信号がコマンド取得部１４０から出力されていない場合、コマンド取得部１４０の状態をレディ状態であると判定する。
【０１０６】
コマンド取得部１４０がレディ状態である場合、停止判定部１２４の動作は、ステップＳ６１０に移る。一方、コマンド取得部１４０がレディ状態でない場合、停止判定部１２４の動作は、ステップＳ６２０に移る。
【０１０７】
ステップＳ６１０では、停止判定部１２４は、停止信号ＳＳＩＧの出力を停止する。例えば、停止判定部１２４は、停止信号ＳＳＩＧをネゲートする。
【０１０８】
ステップＳ６２０では、停止判定部１２４は、停止信号ＳＳＩＧをタイプ判定部１２２等に出力する。例えば、停止判定部１２４は、停止信号ＳＳＩＧをアサートする。停止判定部１２４が停止信号ＳＳＩＧを出力している場合、タイプ判定部１２２は、ステップＳ２０４、Ｓ２１０、Ｓ２２２、Ｓ２３０の処理の実行を待機する。次に、タイプ判定部１２２の動作を説明する。
【０１０９】
ステップＳ２０２では、タイプ判定部１２２は、停止信号ＳＳＩＧを停止判定部１２４から受信しているか否かを判定する。例えば、タイプ判定部１２２は、停止信号ＳＳＩＧがアサートされているか否かを判定する。タイプ判定部１２２が停止信号ＳＳＩＧを受信していない場合、タイプ判定部１２２の動作は、ステップＳ２０４に移る。一方、タイプ判定部１２２が停止信号ＳＳＩＧを受信している場合、タイプ判定部１２２の動作は、ステップＳ２０２に戻る。すなわち、タイプ判定部１２２は、コマンド取得部１４０が転送準備完了コマンドＣＭＤｂ１を受信可能なレディ状態になるまで、ステップＳ２０４の処理の実行を待機する。
【０１１０】
ステップＳ２０４では、タイプ判定部１２２は、ホスト装置２０２内のＣＰＵ２２０から不揮発性ストレージ１０４に発行されたコマンドＣＭＤ１を、バッファ部１１２から取得する。
【０１１１】
次に、ステップＳ２１０では、タイプ判定部１２２は、ＣＰＵ２２０からバッファ部１１２を介して受信したコマンドＣＭＤ１のフラグＤＦＬＧが論理値”１”であるか否かを判定する。すなわち、タイプ判定部１２２は、ＣＰＵ２２０からバッファ部１１２を介して受信したコマンドＣＭＤ１が転送準備完了コマンドＣＭＤｂ１であるか否かを判定する。これにより、タイプ判定部１２２は、アクセスコマンドＣＭＤａがＤＭＡ方式で転送されるか否かを判定できる。
【０１１２】
コマンドＣＭＤ１のフラグＤＦＬＧが論理値”１”である場合、タイプ判定部１２２の動作は、ステップＳ２２２に移る。一方、コマンドＣＭＤ１のフラグＤＦＬＧが論理値”１”でない場合、すなわち、コマンドＣＭＤ１のフラグＤＦＬＧが論理値”０”である場合、タイプ判定部１２２の動作は、ステップＳ２３０に移る。
【０１１３】
ステップＳ２２２では、タイプ判定部１２２は、ＣＰＵ２２０からバッファ部１１２を介して受信したコマンドＣＭＤ１を、コマンド取得部１４０に転送する。すなわち、タイプ判定部１２２は、ＣＰＵ２２０からバッファ部１１２を介して受信した転送準備完了コマンドＣＭＤｂ１を、コマンド取得部１４０に転送する。なお、タイプ判定部１２２は、フラグＤＦＬＧを削除した転送準備完了コマンドＣＭＤｂ１をコマンド取得部１４０に転送してもよいし、フラグＤＦＬＧを残した転送準備完了コマンドＣＭＤｂ１をコマンド取得部１４０に転送してもよい。
【０１１４】
ステップＳ２３０では、タイプ判定部１２２は、ＣＰＵ２２０からバッファ部１１２を介して受信したコマンドＣＭＤ１を、チャネル判定部１５０に転送する。すなわち、タイプ判定部１２２は、ＣＰＵ２２０からバッファ部１１２を介して受信したアクセスコマンドＣＭＤａ１を、チャネル判定部１５０に転送する。例えば、タイプ判定部１２２は、ＣＰＵ２２０からバッファ部１１２を介して受信したアクセスコマンドＣＭＤａ１のフラグＤＦＬＧを削除し、フラグＤＦＬＧを削除したアクセスコマンドＣＭＤａ１をチャネル判定部１５０に転送する。
【０１１５】
このように、タイプ判定部１２２は、コマンド取得部１４０が転送準備完了コマンドＣＭＤｂ１を受信可能なレディ状態になるまで、バッファ部１１２からコマンドＣＭＤ１を取得する処理（ステップＳ２０４）の実行を待機する。これにより、タイプ判定部１２２は、コマンド取得部１４０がＤＲＡＭ２６０に格納された複数のアクセスコマンドＣＭＤａ２をチャネル判定部１５０に転送している最中に、アクセスコマンドＣＭＤａ１をチャネル判定部１５０に転送することを防止できる。この結果、ＤＭＡ方式で転送される複数のアクセスコマンドＣＭＤａ２がコマンド保持部１６０に格納されている最中に、ＰＩＯ方式で転送されるアクセスコマンドＣＭＤａ１のコマンド保持部１６０への格納が割り込むことを防止することができる。
【０１１６】
図１０は、図８に示した不揮発性ストレージ１０４の動作の一例を示す。図１０では、比較例として、図２に示した不揮発性ストレージ１０２の動作の一例を括弧内に示す。図１０に示す例では、６個のアクセスコマンドＣＭＤａ２（ＣＭＤａ２１、ＣＭＤａ２２、ＣＭＤａ２３、ＣＭＤａ２４、ＣＭＤａ２５、ＣＭＤａ２６）がＤＭＡ転送され、コマンド保持部１６０に格納される。以下、ＤＭＡ方式で転送される複数のアクセスコマンドＣＭＤａ２をコマンド保持部１６０に格納する処理は、ＤＭＡ  ｅｎｑｕｅｕｅとも称される。また、ＰＩＯ方式で転送されるアクセスコマンドＣＭＤａ１をコマンド保持部１６０に格納する処理は、ＰＩＯ  ｅｎｑｕｅｕｅとも称される。
【０１１７】
ＤＭＡ  ｅｎｑｕｅｕｅでは、６個のアクセスコマンドＣＭＤａ２１、ＣＭＤａ２２、ＣＭＤａ２３、ＣＭＤａ２４、ＣＭＤａ２５、ＣＭＤａ２６がコマンド保持部１６０に順次格納される。例えば、アクセスコマンドＣＭＤａ２１、ＣＭＤａ２４は、この順でチャネルＣＨ１のコマンド保持部１６０に格納され、アクセスコマンドＣＭＤａ２２、ＣＭＤａ２５は、この順でチャネルＣＨ２のコマンド保持部１６０に格納される。また、アクセスコマンドＣＭＤａ２３、ＣＭＤａ２６は、この順でチャネルＣＨ３のコマンド保持部１６０に格納される。なお、ＤＭＡ  ｅｎｑｕｅｕｅ中は、停止信号ＳＳＩＧは、高論理レベルにアサートされる。
【０１１８】
そして、アクセスコマンドＣＭＤａ２４がコマンド保持部１６０に格納されるタイミングとほぼ同じタイミングで、アクセスコマンドＣＭＤａ１がバッファ部１１２に格納される（図１０の破線の矩形）。アクセスコマンドＣＭＤａ１のバッファ部１１２からの読み出しは、停止信号ＳＳＩＧがネゲートされるまで、待機される。すなわち、ＰＩＯ  ｅｎｑｕｅｕｅは、停止信号ＳＳＩＧがネゲートされるまで、待機される。そして、アクセスコマンドＣＭＤａ２６がコマンド保持部１６０に格納され、停止信号ＳＳＩＧがネゲートされたとき、アクセスコマンドＣＭＤａ１は、バッファ部１１２から読み出され、チャネルＣＨ２のコマンド保持部１６０に格納される。
【０１１９】
このように、ＤＭＡ  ｅｎｑｕｅｕｅ中のＰＩＯ  ｅｎｑｕｅｕｅの割り込みを許さない場合、アクセスコマンドＣＭＤａ２２、ＣＭＤａ２５、ＣＭＤａ１が、この順でチャネルＣＨ２のコマンド保持部１６０に格納される。
【０１２０】
したがって、チャネルＣＨ１では、アクセスコマンドＣＭＤａ２１、ＣＭＤａ２４に基づくデータの読み出し処理がアクセスコマンドＣＭＤａ２１、ＣＭＤａ２４の順で実行される。なお、図１０の括弧内に示すｒｅａｄは、アクセスコマンドＣＭＤａ２がリードコマンドであることを示し、括弧内に示すｐｒｏｇｒａｍは、アクセスコマンドＣＭＤａ１がプログラムコマンドであることを示す。
【０１２１】
また、チャネルＣＨ２では、アクセスコマンドＣＭＤａ２２、ＣＭＤａ２５に基づくデータの読み出し処理がアクセスコマンドＣＭＤａ２２、ＣＭＤａ２５の順で実行される。そして、アクセスコマンドＣＭＤａ２５に基づくデータの読み出し処理が終了した後、アクセスコマンドＣＭＤａ１に基づくデータの書き込み処理が実行される。
【０１２２】
チャネルＣＨ３では、アクセスコマンドＣＭＤａ２３、ＣＭＤａ２６に基づくデータの読み出し処理がアクセスコマンドＣＭＤａ２３、ＣＭＤａ２６の順で実行される。
【０１２３】
図１０に示す例では、単位時間をＴとした場合、アクセスコマンドＣＭＤａ２１−ＣＭＤａ２６の処理時間、すなわち、リードコマンドの処理時間は、１９Ｔである。なお、ＤＭＡ方式で転送されるアクセスコマンドＣＭＤａ２の処理時間は、転送対象のアクセスコマンドＣＭＤａ２のコマンド保持部１６０への格納開始から転送対象の全てのアクセスコマンドＣＭＤａ２に基づく処理の実行完了までの時間である。
【０１２４】
また、アクセスコマンドＣＭＤａ１の処理時間、すなわち、プログラムコマンドの処理時間は、４９Ｔである。なお、ＰＩＯ方式で転送されるアクセスコマンドＣＭＤａ１の処理時間は、各アクセスコマンドＣＭＤａ１のバッファ部１１２への格納開始から各アクセスコマンドＣＭＤａ１に基づく処理の実行完了までの時間である。アクセスコマンドＣＭＤａ２１−ＣＭＤａ２６の処理時間とアクセスコマンドＣＭＤａ１の処理時間との平均値を平均レイテンシとした場合、平均レイテンシは、３４Ｔである。
【０１２５】
なお、比較例は、ＤＭＡ  ｅｎｑｕｅｕｅ中のＰＩＯ  ｅｎｑｕｅｕｅの割り込みを許す。このため、比較例では、アクセスコマンドＣＭＤａ２４がコマンド保持部１６０に格納されるタイミングとほぼ同じタイミングで、アクセスコマンドＣＭＤａ１がチャネルＣＨ２のコマンド保持部１６０に格納される（図１０の破線の矩形）。すなわち、アクセスコマンドＣＭＤａ１は、アクセスコマンドＣＭＤａ２５がチャネルＣＨ２のコマンド保持部１６０に格納される前に、チャネルＣＨ２のコマンド保持部１６０に格納される。
【０１２６】
したがって、ＤＭＡ  ｅｎｑｕｅｕｅ中のＰＩＯ  ｅｎｑｕｅｕｅの割り込みを許す場合、アクセスコマンドＣＭＤａ２２、ＣＭＤａ１、ＣＭＤａ２５が、この順でチャネルＣＨ２のコマンド保持部１６０に格納される。このため、チャネルＣＨ２では、アクセスコマンドＣＭＤａ２２に基づくデータの読み出し処理が終了した後、アクセスコマンドＣＭＤａ１に基づくデータの書き込み処理が実行される。そして、アクセスコマンドＣＭＤａ１に基づくデータの書き込み処理が終了した後、アクセスコマンドＣＭＤａ２５に基づくデータの読み出し処理が実行される。
【０１２７】
この場合、アクセスコマンドＣＭＤａ２１−ＣＭＤａ２６の処理時間、すなわち、リードコマンドの処理時間は、５２Ｔである。また、アクセスコマンドＣＭＤａ１の処理時間、すなわち、プログラムコマンドの処理時間は、４１Ｔである。なお、ＰＩＯ方式で転送されるアクセスコマンドＣＭＤａ１の処理時間は、各アクセスコマンドＣＭＤａ１のコマンド保持部１６０への格納開始から各アクセスコマンドＣＭＤａ１に基づく処理の実行完了までの時間である。アクセスコマンドＣＭＤａ２１−ＣＭＤａ２６の処理時間とアクセスコマンドＣＭＤａ１の処理時間との平均値である平均レイテンシは、４６．５Ｔである。
【０１２８】
このように、図１０に示す例では、ＤＭＡ  ｅｎｑｕｅｕｅ中のＰＩＯ  ｅｎｑｕｅｕｅの割り込みを許さない場合、ＤＭＡ  ｅｎｑｕｅｕｅ中のＰＩＯ  ｅｎｑｕｅｕｅの割り込みを許す場合に比べて、平均レイテンシは小さくなる。したがって、不揮発性ストレージ１０４は、ＤＭＡ転送される複数のアクセスコマンドＣＭＤａ２に基づく処理を並列に実行する場合等に、図２に示した不揮発性ストレージ１０２に比べて、処理速度を向上させることができる。
【０１２９】
以上、図８から図１０に示す実施形態においても、図１から図７に示した実施形態と同様の効果を得ることができる。例えば、不揮発性ストレージ１０４は、ＤＭＡ方式とＰＩＯ方式との両方のコマンド転送に対応する。このため、ホスト装置２０２から不揮発性ストレージ１０４に転送するコマンドＣＭＤａの数に拘わらず、コマンドＣＭＤａの転送にかかる時間を短縮することができる。
【０１３０】
さらに、タイプ判定部１２２は、コマンド取得部１４０がアクセスコマンドＣＭＤａ２のチャネル判定部１５０への転送を実行中、バッファ部１１２に保持されたコマンドＣＭＤ１の読み出しを停止する。これにより、ＤＭＡ方式で転送される複数のアクセスコマンドＣＭＤａ２がコマンド保持部１６０に格納されている最中に、ＰＩＯ方式で転送されるアクセスコマンドＣＭＤａ１がコマンド保持部１６０に格納されることを防止することができる。この結果、ＤＭＡ方式で転送される複数のアクセスコマンドＣＭＤａ２に基づく処理が終了するまでの時間が増加することを抑制することができる。
【０１３１】
図１１は、不揮発性ストレージおよび不揮発性ストレージの処理方法の別の実施形態を示す。図１から図１０で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図１１に示す不揮発性ストレージ１０６は、ＳＳＤ等の不揮発性の記憶装置であり、ホスト装置２０２に接続される。ホスト装置２０２は、図８に示したホスト装置２０２と同一または同様である。なお、図１１に示したホスト装置２０２内のＣＰＵ２２０は、図３に示したアクセスコマンドＣＭＤａ１に優先情報を付加したアクセスコマンドＣＭＤａ１を、不揮発性ストレージ１０６に発行する場合がある。優先情報は、転送準備完了コマンドＣＭＤｂ１より優先して処理することを示す情報である。
【０１３２】
不揮発性ストレージ１０６では、図８に示したタイプ判定部１２２の代わりにタイプ判定部１２０が設けられ、バイパス判定部１１４が図８に示した不揮発性ストレージ１０４に追加される。不揮発性ストレージ１０６のその他の構成は、図８に示した不揮発性ストレージ１０４と同一または同様である。
【０１３３】
例えば、不揮発性ストレージ１０６は、インターフェース部１１０とバッファ部１１２とバイパス判定部１１４とタイプ判定部１２０と停止判定部１２４とコマンド取得部１４０とチャネル判定部１５０とを有する。さらに、不揮発性ストレージ１０６は、図８に示した不揮発性ストレージ１０４と同様に、複数のチャネルＣＨ毎に設けられた複数のコマンド保持部１６０と複数のコマンド発行部１７２と複数のデータ記憶部１８０とを有する。
【０１３４】
インターフェース部１１０およびバッファ部１１２は、図８に示したインターフェース部１１０およびバッファ部１１２と同一または同様である。
【０１３５】
バイパス判定部１１４は、タイプ判定部１２０に転送するコマンドＣＭＤ１をバッファ部１１２から読み出し、バッファ部１１２から読み出したコマンドＣＭＤが優先情報を含むか否かを判定する。そして、バイパス判定部１１４は、バッファ部１１２から読み出したコマンドＣＭＤ１が優先情報を含む場合、バッファ部１１２から読み出したコマンドＣＭＤ１を停止判定部１２４による判定結果に拘わらずタイプ判定部１２０に転送する。すなわち、バイパス判定部１１４は、バッファ部１１２から読み出したコマンドＣＭＤが優先情報を含む場合、バッファ部１１２から読み出したコマンドＣＭＤ１を停止信号ＳＳＩＧの状態に拘わらずタイプ判定部１２０に転送する。
【０１３６】
また、バイパス判定部１１４は、バッファ部１１２から読み出したコマンドＣＭＤ１が優先情報を含まない場合、バッファ部１１２から読み出したコマンドＣＭＤ１のタイプ判定部１２０への転送を、停止判定部１２４による判定結果に基づいて実行する。例えば、バイパス判定部１１４は、バッファ部１１２から読み出したコマンドＣＭＤ１が優先情報を含まない場合、停止信号ＳＳＩＧがアサートされている期間では、バッファ部１１２から読み出したコマンドＣＭＤ１のタイプ判定部１２０への転送を待機する。また、バイパス判定部１１４は、バッファ部１１２から読み出したコマンドＣＭＤ１が優先情報を含まない場合、停止信号ＳＳＩＧがネゲートされていれば、バッファ部１１２から読み出したコマンドＣＭＤ１をタイプ判定部１２０に転送する。
【０１３７】
このように、転送準備完了コマンドＣＭＤｂ１より優先して処理することを示す優先情報を含むコマンドＣＭＤ１は、停止判定部１２４による判定結果に拘わらずタイプ判定部１２０に転送される。これにより、優先度が転送準備完了コマンドＣＭＤｂ１より高いアクセスコマンドＣＭＤａ１に基づく処理が遅延することを抑制することができる。
【０１３８】
タイプ判定部１２０は、図２に示したタイプ判定部１２０と同一または同様である。例えば、タイプ判定部１２０は、バイパス判定部１１４から転送されたコマンドＣＭＤ１が転送準備完了コマンドＣＭＤｂ１である場合、転送準備完了コマンドＣＭＤｂ１をコマンド取得部１４０に転送する。また、タイプ判定部１２０は、コマンドＣＭＤ１がアクセスコマンドＣＭＤａ１である場合、アクセスコマンドＣＭＤａ１をチャネル判定部１５０に転送する。
【０１３９】
停止判定部１２４は、図８に示した停止判定部１２４と同一または同様である。なお、停止判定部１２４は、停止信号ＳＳＩＧをバイパス判定部１１４に出力する。コマンド取得部１４０は、図８に示したコマンド取得部１４０と同一または同様である。また、チャネル判定部１５０、コマンド保持部１６０、コマンド発行部１７２およびデータ記憶部１８０は、図８に示したチャネル判定部１５０、コマンド保持部１６０、コマンド発行部１７２およびデータ記憶部１８０と同一または同様である。
【０１４０】
なお、不揮発性ストレージ１０６の構成は、図１１に示す例に限定されない。例えば、停止判定部１２４は、バイパス判定部１１４内に設けられてもよい。あるいは、停止判定部１２４は、省かれてもよい。この場合、バイパス判定部１１４は、ビジー信号ＢＳＩＧを停止信号ＳＳＩＧとして、コマンド取得部１４０から受けてもよい。
【０１４１】
以上、図１１に示す実施形態においても、図８から図１０に示した実施形態と同様の効果を得ることができる。例えば、不揮発性ストレージ１０６は、ＤＭＡ方式とＰＩＯ方式との両方のコマンド転送に対応する。このため、ホスト装置２０２から不揮発性ストレージ１０６に転送するコマンドＣＭＤａの数に拘わらず、コマンドＣＭＤａの転送にかかる時間を短縮することができる。また、バイパス判定部１１４は、コマンド取得部１４０がアクセスコマンドＣＭＤａ２のチャネル判定部１５０への転送を実行中、バッファ部１１２に保持されたコマンドＣＭＤ１のタイプ判定部１２２への転送を待機する。これにより、ＤＭＡ方式で転送される複数のアクセスコマンドＣＭＤａ２に基づく処理が終了するまでの時間が増加することを抑制することができる。
【０１４２】
さらに、バイパス判定部１１４は、転送準備完了コマンドＣＭＤｂ１より優先して処理することを示す優先情報を含むコマンドＣＭＤ１を、停止判定部１２４による判定結果に拘わらず、タイプ判定部１２０に転送する。これにより、優先度が転送準備完了コマンドＣＭＤｂ１より高いアクセスコマンドＣＭＤａ１に基づく処理が遅延することを抑制することができる。
【０１４３】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１４４】
１００、１０２、１０４、１０６‥不揮発性ストレージ；１１０‥インターフェース部；１１２‥バッファ部；１１４‥バイパス判定部；１２０、１２２‥タイプ判定部；１２４‥停止判定部；１３０‥バッファ部；１４０‥コマンド取得部；１５０‥チャネル判定部；１６０‥コマンド保持部；１７０‥アクセス制御部；１７２‥コマンド発行部；１８０‥データ記憶部１８０；２００、２０２‥ホスト装置；２２０‥ＣＰＵ；２４０‥メモリ制御部；２６０‥ＤＲＡＭ；２８０‥インターフェース部
【図１】
0006544246.tif 000002
【図２】
0006544246.tif 000003
【図３】
0006544246.tif 000004
【図４】
0006544246.tif 000005
【図５】
0006544246.tif 000006
【図６】
0006544246.tif 000007
【図７】
0006544246.tif 000008
【図８】
0006544246.tif 000009
【図９】
0006544246.tif 000010
【図１０】
0006544246.tif 000011
【図１１】
0006544246.tif 000012