(57)【要約】【課題】ホスト装置との間の通信路の状態の遷移に関する制御を改善する記憶装置を提供することである。【解決手段】実施形態によれば、記憶装置は、第１処理手段、第２処理手段および第３処理手段を具備する。第１処理手段は、メモリに対するアクセスを実行する。第２処理手段は、ホスト装置が発行するコマンドを受信し、第１処理手段による処理の実行結果をホスト装置に返信する。第３処理手段は、第２処理手段がアイドル状態となっている期間が第１期間を超えた場合、通信路の状態を第１ステートから低消費電力の第２ステートへ遷移させる。第３処理手段は、所定の条件下において、前記第２処理手段がアイドル状態となっている期間が第１期間を超えた場合における通信路の状態を第１ステートに維持する。【選択図】図１
2017033501.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性の第１メモリと、
揮発性の第２メモリと、
前記第１メモリに対するアクセスのための処理を前記第２メモリを介在させて実行する第１処理手段と、
通信路を介して接続されるホスト装置が発行する前記第１メモリに対するアクセスを要求するコマンドを受信し、前記第１処理手段による前記コマンドに対応する処理の実行結果を前記ホスト装置に返信するための処理を実行する第２処理手段と、
前記第２処理手段がアイドル状態となっている期間が第１期間を超えた場合、前記通信路の状態を第１ステートから前記第１ステートよりも低消費電力の第２ステートへ遷移させるための処理を実行する第３処理手段とを具備し、
前記第３処理手段は、所定の条件下において、前記第２処理手段がアイドル状態となっている期間が第１期間を超えた場合における前記通信路の状態を前記第１ステートに維持する記憶装置。
【請求項２】
前記第３処理手段は、所定の条件下において、前記通信路の状態が前記第２ステートであって前記第２処理手段がアイドル状態である場合に前記通信路の状態を前記第１ステートへ遷移させる請求項１に記載の記憶装置。
【請求項３】
前記第３処理手段は、前記第１処理手段が処理を実行中である未完了のコマンドが存在する場合、前記第２処理手段がアイドル状態となっている期間が第１期間を超えた場合における前記通信路の状態を前記第１ステートに維持する請求項１に記載の記憶装置。
【請求項４】
前記第３処理手段は、前記第１処理手段が処理を実行中である未完了のコマンドの転送長が第１値未満である場合、前記第２処理手段がアイドル状態となっている期間が第１期間を超えた場合における前記通信路の状態を前記第１ステートに維持する請求項１に記載の記憶装置。
【請求項５】
前記第３処理手段は、前記第１メモリからのデータの読出しを要求するコマンドに対応する処理を前記第１処理手段が実行中に前記通信路の状態が前記第２ステートである場合において、前記第１メモリが読出し対象データの準備を完了した場合、前記通信路の状態を前記第１ステートへ遷移させる請求項１に記載の記憶装置。
【請求項６】
前記第３処理手段は、前記第１メモリからのデータの読出しを要求するコマンドに対応する処理を前記第１処理手段が実行中に前記通信路の状態が前記第２ステートである場合において、前記第１メモリに格納される読出し対象データの前記第２メモリへの格納が完了した場合、前記通信路の状態を前記第１ステートへ遷移させる請求項１に記載の記憶装置。
【請求項７】
前記第３処理手段は、前記第１メモリに対するアクセスを要求するコマンドに対応する処理を前記第１処理手段が実行中に前記通信路の状態が前記第２ステートである場合において、前記第１処理手段が処理を実行中である未完了のコマンドの受信時からの経過期間が前記第１期間よりも長い第２期間を超えた場合、前記通信路の状態を前記第１ステートへ遷移させる請求項１に記載の記憶装置。
【請求項８】
前記第２期間は、前記第１処理手段が処理を実行中である未完了のコマンドの転送長に応じて決定される請求項７に記載の記憶装置。
【請求項９】
メモリと、
通信路を介して接続されるホスト装置が発行する前記メモリに対するアクセスを要求するコマンドを受信するための通信、および、前記コマンドの実行結果を前記ホスト装置に返信するための通信が非実行状態となっている期間が第１期間を超えた場合、前記通信路の状態を第１ステートから前記第１ステートよりも低消費電力の第２ステートへ遷移させる制御手段とを具備し、
前記制御手段は、所定の条件下において、前記通信が非実行状態となっている期間が第１期間を超えた場合における前記通信路の状態を前記第１ステートに維持する記憶装置。
【請求項１０】
不揮発性の第１メモリと、揮発性の第２メモリとを有する記憶装置における制御方法であって、
前記第１メモリに対するアクセスのための第１処理を前記第２メモリを介在させて実行することと、
通信路を介して接続されるホスト装置が発行する前記第１メモリに対するアクセスを要求するコマンドを受信し、前記コマンドに対応する前記第１処理の実行結果を前記ホスト装置に返信するための第２処理を実行することと、
前記第２処理がアイドル状態となっている期間が第１期間を超えた場合、前記通信路の状態を第１ステートから前記第１ステートよりも低消費電力の第２ステートへ遷移させるための第３処理を実行することとを具備し、
前記第３処理を実行することは、所定の条件下において、前記第２処理がアイドル状態となっている期間が第１期間を超えた場合における前記通信路の状態を前記第１ステートに維持することを含む制御方法。
【請求項１１】
前記第３処理を実行することは、所定の条件下において、前記通信路の状態が前記第２ステートであって前記第２処理がアイドル状態である場合に前記通信路の状態を前記第１ステートへ遷移させることを含む請求項１０に記載の制御方法。
【請求項１２】
前記第３処理を実行することは、前記第１処理が実行中である未完了のコマンドが存在する場合、前記第２処理がアイドル状態となっている期間が第１期間を超えた場合における前記通信路の状態を前記第１ステートに維持することを含む請求項１０に記載の制御方法。
【請求項１３】
前記第３処理を実行することは、前記第１処理が実行中である未完了のコマンドの転送長が第１値未満である場合、前記第２処理がアイドル状態となっている期間が第１期間を超えた場合における前記通信路の状態を前記第１ステートに維持することを含む請求項１０に記載の制御方法。
【請求項１４】
前記第３処理を実行することは、前記第１メモリからのデータの読出しを要求するコマンドに対応する前記第１処理が実行中に前記通信路の状態が前記第２ステートである場合において、前記第１メモリが読出し対象データの準備を完了した場合、前記通信路の状態を前記第１ステートへ遷移させることを含む請求項１０に記載の制御方法。
【請求項１５】
前記第３処理を実行することは、前記第１メモリからのデータの読出しを要求するコマンドに対応する前記第１処理が実行中に前記通信路の状態が前記第２ステートである場合において、前記第１メモリに格納される読出し対象データの前記第２メモリへの格納が完了した場合、前記通信路の状態を前記第１ステートへ遷移させることを含む請求項１０に記載の制御方法。
【請求項１６】
前記第３処理を実行することは、前記第１メモリに対するアクセスを要求するコマンドに対応する前記第１処理が実行中に前記通信路の状態が前記第２ステートである場合において、前記第１処理が実行中である未完了のコマンドの受信時からの経過期間が前記第１期間よりも長い第２期間を超えた場合、前記通信路の状態を前記第１ステートへ遷移させることを含む請求項１０に記載の制御方法。
【請求項１７】
前記第２期間は、前記第１処理が実行中である未完了のコマンドの転送長に応じて決定される請求項１６に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、記憶装置および制御方法に関する。
【背景技術】
【０００２】
近年、ＳＳＤ（Solid State Drive）等、不揮発性メモリを搭載する記憶装置が広く普及している。ＳＳＤは、ＮＡＮＤメモリ（フラッシュメモリ）を適用した記憶装置であり、高性能・低電力消費という利点を有することから、ＨＤＤ（Hard Disk Drive）に代わって、ＰＣ（Personal Computer）やサーバ等の様々なコンピュータでメインストレージとして利用され始めている。
【０００３】
ＳＳＤは、通常、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）と称されるインタフェース規格に準拠した通信路を介してホスト装置（コンピュータ）と接続される。ＰＣＩｅでは、デバイス（コンピュータ、ＳＳＤ）が動作状態にあっても、ＰＣＩｅにおいてリンクと称している通信路の状態を、通常のステート（Ｌ0）から低消費電力のステート（Ｌ1）へ遷移させることが可能な通信路制御機能が規定されている。この通信路制御機能は、ＡＳＰＭ（Active State Power Management）と称されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−２６６３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ホスト装置との通信のために、ＳＳＤには、データリンク層（レイヤ）が設けられている。データリンク層は、ホスト装置によって発行された、データの書込みまたは読出しを要求するコマンドを、下位層の物理層から受取り、アプリケーション層を含む上位層へ中継する。また、データリンク層は、コマンドに対するアプリケーション層の処理結果、例えばＮＡＮＤメモリから読み出されたデータ等を、アプリケーション層を含む上位層から受取り、ホスト装置へ返送すべく下位層の物理層へ中継する。
【０００６】
ここで、ＳＳＤにおいて、アプリケーション層が処理を実行中、データリンク層での処理が無くなったという状況を考える。データリンク層での処理が無くなると、前述のＡＳＰＭの制御により、データリンク層は、通常のステートから低消費電力のステートへ遷移する。
【０００７】
しかしながら、そうすると、その後、アプリケーション層が処理を終えて、その処理結果をホスト装置に返送しようとしたときに、データリンク層が低消費電力のステートから通常のステートへ復帰することが必要となる。このようなタイミングでデータリンク層の低消費電力のステートから通常のステートへの復帰に費やされる時間は、オーバヘッドとして見えてしまい、ＳＳＤの性能に悪影響を及ぼす。
【０００８】
本発明が解決しようとする課題は、ホスト装置との間の通信路の状態の遷移に関する制御を改善する記憶装置および制御方法を提供することである。
【課題を解決するための手段】
【０００９】
実施形態によれば、記憶装置は、不揮発性の第１メモリ、揮発性の第２メモリ、第１処理手段、第２処理手段および第３処理手段を具備する。第１処理手段は、前記第１メモリに対するアクセスのための処理を前記第２メモリを介在させて実行する。第２処理手段は、通信路を介して接続されるホスト装置が発行する前記第１メモリに対するアクセスを要求するコマンドを受信し、前記第１処理手段による前記コマンドに対応する処理の実行結果を前記ホスト装置に返信するための処理を実行する。第３処理手段は、前記第２処理手段がアイドル状態となっている期間が第１期間を超えた場合、前記通信路の状態を第１ステートから前記第１ステートよりも低消費電力の第２ステートへ遷移させるための処理を実行する。前記第３処理手段は、所定の条件下において、前記第２処理手段がアイドル状態となっている期間が第１期間を超えた場合における前記通信路の状態を前記第１ステートに維持する。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態に係る記憶装置の一構成例を示すブロック図。
【図２】同第１実施形態の記憶装置におけるホスト装置との間の通信路の状態の遷移を説明するためのシーケンスチャート。
【図３】同第１実施形態の記憶装置によって実行されるホスト装置との間の通信路の状態の遷移に関する制御の手順を示すフローチャート。
【図４】第２実施形態に係る記憶装置の一構成例を示すブロック図。
【図５】同第２実施形態の記憶装置におけるホスト装置との間の通信路の状態の遷移を説明するためのシーケンスチャート。
【図６】同第２実施形態の記憶装置によって実行されるホスト装置との間の通信路の状態の遷移に関する制御の手順を示すフローチャート。
【図７】第３実施形態に係る記憶装置の一構成例を示すブロック図。
【図８】同第３実施形態の記憶装置におけるホスト装置との間の通信路の状態の遷移を説明するためのシーケンスチャート。
【図９】同第３実施形態の記憶装置によって実行されるホスト装置との間の通信路の状態の遷移に関する制御の手順を示すフローチャート。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、実施形態を説明する。
【００１２】
（第１実施形態）
まず、第１実施形態について説明する。
【００１３】
図１は、本実施形態に係る記憶装置の一構成例を示すブロック図である。ここでは、記憶装置が、ホスト装置２の例えばメインストレージとして利用されるＳＳＤ１として実現されているものと想定する。ホスト装置２は、ＰＣやサーバ等のコンピュータである。ＳＳＤ１とホスト装置２とは、ＰＣＩｅ規格に準拠したインタフェースにより接続される。ＳＳＤ１は、ホスト装置２に内蔵されるものに限らず、ホスト装置２に外部接続されるものであってもよい。
【００１４】
図１に示すように、ＳＳＤ１は、ホストインタフェース（Ｉ／Ｆ）１０、ＣＰＵ２０、データバッファ３０、ＮＡＮＤコントローラ４０およびＮＡＮＤメモリ５０を有する。
【００１５】
ホストインタフェース１０は、ホスト装置２との間の通信を実行するモジュールであって、ホスト装置２が発行するコマンドを受信し、当該コマンドの実行結果をホスト装置２に返信するモジュールである。図１に示すように、ホストインタフェース１０は、ＡＳＰＭ制御部１１、物理（ＰＨＹ）レイヤ１２、データリンクレイヤ１３、トランザクションレイヤ１４およびアプリケーションレイヤ１５を有する。本実施形態のＳＳＤ１に特有のＡＳＰＭ制御部１１の動作原理を含むホストインタフェース１０内の各コンポーネントの動作の詳細については後述する。
【００１６】
ＣＰＵ２０は、ＳＳＤ１の中枢部であって、ホストインタフェース１０、データバッファ３０およびＮＡＮＤコントローラ４０の動作を制御するモジュールである。
【００１７】
データバッファ３０は、例えばＤＲＡＭ（Dynamic Random Access Memory）であって、ＮＡＮＤメモリ５０に書込まれるユーザデータ（ホスト装置２から転送されてくるデータ）、ＮＡＮＤメモリ５０から読み出されたユーザデータ、ホスト装置２が認識する論理ブロックアドレス（ＬＢＡ）空間とＮＡＮＤメモリ５０上の物理記憶位置との対応関係を管理するためのシステムデータ等が一時的に格納されるストレージデバイスである。データバッファ３０は、ＤＲＡＭ以外であってもよく、例えば、ＳＲＡＭ（Static Random Access Memory）、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）などであってもよい。
【００１８】
ＮＡＮＤコントローラ４０は、（キャッシュメモリとして）データバッファ３０を用いながら、ＮＡＮＤメモリ５０へのデータの書込みおよびＮＡＮＤメモリ５０からのデータの読出しを実行するモジュールである。
【００１９】
そして、ＮＡＮＤメモリ５０は、前述のユーザデータおよびシステムデータ等が恒久的に格納されるストレージデバイスである。
【００２０】
ここで、ホスト装置２によってコマンドが発行された場合のホストインタフェース１０の動作について説明する。
【００２１】
ホスト装置２によって発行されたコマンドは、まず、最下位層の物理レイヤ１２により受信され、中間層のデータリンクレイヤ１３およびトランザクションレイヤ１４を経由して最上位層のアプリケーションレイヤ１５へ伝達される。アプリケーションレイヤ１５は、例えばＮＶＭｅ（Non-Volatile Memory Express:登録商標）規格に準拠した、このコマンドに対応する処理を実行する。例えば、ホスト装置２によってリードコマンドが発行された場合、アプリケーションレイヤ１５は、ＮＡＮＤコントローラ４０を介してＮＡＮＤメモリ５０からの読み出し処理を行う。アプリケーションレイヤ１５は、データバッファ３０を、読み出されたデータのバッファとして利用する。また、ホスト装置２によってライトコマンドが発行された場合、アプリケーションレイヤ１５は、ＮＡＮＤコントローラ４０を介してＮＡＮＤメモリ５０に対する書き込み処理を行う。アプリケーションレイヤ１５は、データバッファ３０を、書き込み用データのバッファとして利用する。一方、最上位層のアプリケーションレイヤ１５による処理の結果は、中間層のトランザクションレイヤ１４およびデータリンクレイヤ１３を経由して最下位層の物理レイヤ１２へ伝達され、ホスト装置２へ返送される。
【００２２】
また、ＡＳＰＭ制御部１１は、ＰＣＩｅで規定される通信路制御機能を実現するためのモジュールである。ＡＳＰＭ制御部１１は、データリンクレイヤ１３がアイドル状態となっている期間が予め定められた期間を超えた場合、データリンクレイヤ１３に対して、通常のステート（Ｌ0）から低消費電力のステート（Ｌ1）への移行を指示する。データリンクレイヤ１３におけるアイドル状態とは、下位層から上位層へのコマンドの中継と、上位層から下位層への（コマンドに対応する処理の）処理結果の中継とのいずれもが行われていない状態である。これにより、ＳＳＤ１の消費電力量を低減させることができる。当該予め定められた期間は、例えばホスト装置２からの制御により随時・任意に設定することができる。当該予め定められた期間としては、少なくともデータリンクレイヤ１３が低消費電力のステート（Ｌ1）から通常のステート（Ｌ0）に復帰するための所要時間よりも長い期間であって、例えば、データリンクレイヤ１３が低消費電力のステート（Ｌ1）にある状況下においてホスト装置２よりコマンドが発行されてからアプリケーションレイヤ１５による当該コマンドに対応する処理の実行に伴ってＮＡＮＤコントローラ４０が動作を開始するまでの時間に相当する期間などを設定し得る。
【００２３】
ところで、前述したように、中間層のデータリンクレイヤ１３は、下位層から上位層へのコマンドの中継と、上位層から下位層への（コマンドに対応する処理の）処理結果の中継とを行う。したがって、データリンクレイヤ１３が予め定められた期間を超えてアイドル状態となるケースとして、コマンドの上位層（トランザクションレイヤ１４）への中継完了後、アプリケーションレイヤ１５による当該コマンドに対応する処理が予め定められた期間を超えた場合も考えられ得る。つまり、データリンクレイヤ１３は、（コマンドに対応する処理の）処理結果を下位層（物理レイヤ１２）へ中継する前に、通常のステート（Ｌ0）から低消費電力のステート（Ｌ1）へ遷移し得る。この場合、データリンクレイヤ１３は、（コマンドに対応する処理の）処理結果を下位層（物理レイヤ１２）へ中継するにあたり、低消費電力のステート（Ｌ1）から通常のステート（Ｌ0）へ復帰することが必要となる。このようなタイミングでデータリンクレイヤ１３の低消費電力のステート（Ｌ1）から通常のステート（Ｌ0）への復帰に費やされる時間は、オーバヘッドとして見えてしまい、ＳＳＤ１の性能に悪影響を及ぼす。本実施形態のＳＳＤ１は、このデータリンクレイヤ１３の状態の遷移に関する制御を改善するための仕組み（未完了コマンド判定モジュール１１１）を備えたものであり、以下、この点について詳述する。
【００２４】
前述のようなＳＳＤ１の性能に悪影響を及ぼす事象を回避するために、ＡＳＰＭ制御部１１は、未完了コマンド有無判定モジュール１１１を備える。未完了コマンド有無判定モジュール１１１は、アプリケーションレイヤ１５が処理中のコマンドの有無を判定するモジュールである。なお、ここでは、未完了コマンド有無判定モジュール１１１がＡＳＰＭ制御部１１内に設けられることを想定して説明するが、例えば、未完了コマンド有無判定モジュール１１１をＡＳＰＭ制御部１１とは別にホストインタフェース１０内に設けて、未完了コマンド有無判定モジュール１１１が外部からＡＳＰＭ制御部１１を制御するようにしてもよい。
【００２５】
図２を参照して、この未完了コマンド有無判定モジュール１１１を備えたＡＳＰＭ制御部１１によって実行されるデータリンクレイヤ１３の状態の遷移に関する制御の概要を説明する。図２は、本実施形態のＳＳＤ１におけるデータリンクレイヤ１３の状態の遷移を説明するためのシーケンスチャートである。なお、図２においては、物理レイヤ１２とトランザクションレイヤ１４との表記を省略する。
【００２６】
ホスト装置２によりコマンドが発行されると（図２のａ１）、そのコマンドは、データリンクレイヤ１３を介してアプリケーションレイヤ１５へ中継される（図２のａ２）。そして、アプリケーションレイヤ１５は、そのコマンドに対応する処理を実行する（図２のａ３）。
【００２７】
ここで、アプリケーションレイヤ１５が処理を実行中に、コマンドの中継を完了したデータリンクレイヤ１３がアイドル状態となってからの経過時間が予め定められた期間を超えた場合（タイムアウト発生）を想定する（図２のａ４）。タイムアウトが発生すると、ＡＳＰＭ制御部１１（未完了コマンド有無判定モジュール１１１）は、アプリケーションレイヤ１５が処理中のコマンドの有無を判定する。この判定手法としては、例えばコマンドが格納されるキューを参照する等、種々の手法を採用し得る。
【００２８】
アプリケーションレイヤ１５が処理中のコマンドが存在する場合、ＡＳＰＭ制御部１１は、データリンクレイヤ１３の状態を通常のステート（Ｌ0）に維持する。換言すれば、データリンクレイヤ１３の状態が低消費電力のステート（Ｌ1）に移行することを抑止する（図２のａ５）。これにより、その後、処理を完了したアプリケーションレイヤ１５から処理結果が出力された場合（図２のａ６）、その処理結果は、通常のステート（Ｌ0）に維持されたデータリンクレイヤ１３を介してホスト装置２に中継される（図２のａ７）。低消費電力のステート（Ｌ1）から通常のステート（Ｌ0）へ復帰させる必要がないので、従来のように低消費電力のステート（Ｌ1）から通常のステート（Ｌ0）へ復帰させる場合と比較して、データリンクレイヤ１３による中継について高速化が図られる。
【００２９】
次に、処理結果の中継を完了したデータリンクレイヤ１３がアイドル状態となってからの経過時間が予め定められた期間を超えた場合（タイムアウト発生）を想定する（図２のａ８）。前述したように、タイムアウトが発生すると、ＡＳＰＭ制御部１１（未完了コマンド有無判定モジュール１１１）は、アプリケーションレイヤ１５が処理中のコマンドの有無を判定する。そして、アプリケーションレイヤ１５が処理中のコマンドが存在しない場合、ＡＳＰＭ制御部１１は、データリンクレイヤ１３の状態を低消費電力のステート（Ｌ1）に移行させる（図２のａ９）。これにより、ＳＳＤ１の消費電力量を低減させることができる。
【００３０】
図３は、本実施形態のＳＳＤ１によって実行されるデータリンクレイヤ１３の状態の遷移に関する制御の手順を示すフローチャートである。
【００３１】
ＳＳＤ１は、データリンクレイヤ１３がアイドル状態となっている期間が予め定められた期間を超えたことを検知した場合（ブロックＡ１のＹＥＳ）、アプリケーションレイヤ１５が処理中の未完了コマンドの有無を調べる（ブロックＡ２）。未完了コマンドが存在しない場合（ブロックＡ３のＮＯ）、ＳＳＤ１は、データリンクレイヤ１３の状態を通常のステート（Ｌ0）から低消費電力のステート（Ｌ1）へ遷移させる（ブロックＡ４）。
【００３２】
一方、未完了コマンドが存在する場合（ブロックＡ３のＹＥＳ）、ＳＳＤ１は、データリンクレイヤ１３の状態を通常のステート（Ｌ0）から低消費電力のステート（Ｌ1）へ遷移させることは行わず、データリンクレイヤ１３の状態を通常のステート（Ｌ0）に維持する（ブロックＡ５）。
【００３３】
このように、本実施形態のＳＳＤ１は、データリンクレイヤ１３の状態の遷移に関する制御の改善が達成される。
【００３４】
ところで、以上の説明では、データリンクレイヤ１３がアイドル状態となっている期間が予め定められた期間を超えた場合において、アプリケーションレイヤ１５が処理中の未完了コマンドが存在する場合、データリンクレイヤ１３の状態が通常のステート（Ｌ0）から低消費電力のステート（Ｌ1）に遷移することを抑止する例を示した。ＡＳＰＭでは、さらに低消費電力のステート（Ｌ2，Ｌ3）が定義されているので、未完了コマンドが存在するか否かに応じて、遷移するステートを分けるようにしてもよい。より具体的には、ステート（Ｌ2，Ｌ3）はステート（Ｌ1）よりも低消費電力である一方で、ステート（Ｌ0）への復帰に要する時間は長い。この点を勘案して、未完了コマンドが存在しない場合、データリンクレイヤ１３の状態をステート（Ｌ2，Ｌ3）に遷移させ、未完了コマンドが存在する場合には、データリンクレイヤ１３の状態をステート（Ｌ1）に遷移させるようにしてもよい。
【００３５】
（第２実施形態）
次に、第２実施形態について説明する。
【００３６】
図４は、本実施形態に係る記憶装置の一構成例を示すブロック図である。前述の第１実施形態と同様、ここでも、記憶装置が、ホスト装置２の例えばメインストレージとして利用されるＳＳＤ１として実現されているものと想定する。そこで、前述の第１実施形態と同一のコンポーネント等については、本実施形態においても、同一の符号を使用し、また、その説明については省略する。
【００３７】
図４に示すように、本実施形態のＳＳＤ１は、ホストインタフェース１０のＡＳＰＭ制御部１１が、（第１実施形態の未完了コマンド判定モジュール１１１に代わって）未完了コマンド転送長判定モジュール１１２を備える。未完了コマンド転送長判定モジュール１１２は、アプリケーションレイヤ１５が処理中のコマンド長を判定するモジュールである。ここで、コマンド長とは、データリンクレイヤ１３によるコマンドの中継時における（例えばライトデータ等も含む）総転送長である。なお、言うまでもないが、前述の第１実施形態と同様、未完了コマンド転送長判定モジュール１１２は、ＡＳＰＭ制御部１１内ではなく、例えば、ＡＳＰＭ制御部１１とは別にホストインタフェース１０内に設けるようにしてもよい。
【００３８】
図５を参照して、この未完了コマンド転送長判定モジュール１１２を備えたＡＳＰＭ制御部１１によって実行されるデータリンクレイヤ１３の状態の遷移に関する制御の概要を説明する。図５は、本実施形態のＳＳＤ１におけるデータリンクレイヤ１３の状態の遷移を説明するためのシーケンスチャートである。なお、前述の第１実施形態と同様、図５においても、物理レイヤ１２とトランザクションレイヤ１４との表記を省略する。
【００３９】
ホスト装置２によりコマンドが発行されると（図５のｂ１）、そのコマンドは、データリンクレイヤ１３を介してアプリケーションレイヤ１５へ中継される（図５のｂ２）。この時、ＡＳＰＭ制御部１１（未完了コマンド転送長判定モジュール１１２）は、当該データリンクレイヤ１３によるコマンドの転送長を取得する。そして、アプリケーションレイヤ１５は、そのコマンドに対応する処理を実行する（図５のｂ３）。
【００４０】
ここで、アプリケーションレイヤ１５が処理を実行中に、コマンドの中継を完了したデータリンクレイヤ１３がアイドル状態となってからの経過時間が予め定められた期間を超えた場合（タイムアウト発生）を想定する（図５のｂ４）。タイムアウトが発生すると、ＡＳＰＭ制御部１１（未完了コマンド転送長判定モジュール１１２）は、アプリケーションレイヤ１５が処理中のコマンドの転送長が閾値以上か否かを判定する。ここでは、まず、コマンドの転送長が閾値未満である場合を想定する。当該コマンドの転送長の閾値も、例えばホスト装置２からの制御により随時・任意に設定することができる。
【００４１】
コマンドの転送長が短い場合、データリンクレイヤ１３の状態の低消費電力のステート（Ｌ1）から通常のステート（Ｌ0）への復帰（リカバリ）に費やされる時間のコマンド処理（図５のｂ３）の時間に対する割合が大きいと推測される。つまり、性能に対する影響が大きいと考えられる。そこで、このような場合、性能を優先して、ＡＳＰＭ制御部１１は、データリンクレイヤ１３の状態を通常のステート（Ｌ0）に維持する。換言すれば、データリンクレイヤ１３の状態が低消費電力のステート（Ｌ1）に移行することを抑止する（図５のｂ５）。これにより、その後、処理を完了したアプリケーションレイヤ１５から処理結果が出力された場合（図５のｂ６）、その処理結果は、通常のステート（Ｌ0）に維持されたデータリンクレイヤ１３を介してホスト装置２に中継される（図５のｂ７）。前述のケースと同様、低消費電力のステート（Ｌ1）から通常のステート（Ｌ0）へ復帰させる必要がないので、従来のように低消費電力のステート（Ｌ1）から通常のステート（Ｌ0）へ復帰させる場合と比較して、データリンクレイヤ１３による中継について高速化が図られる。
【００４２】
ここで、再度、ホスト装置２によりコマンドが発行され（図５のｂ８）、データリンクレイヤ１３を介してアプリケーションレイヤ１５へ中継され（図５のｂ９）、アプリケーションレイヤ１５が処理を実行中（図５のｂ１０）、コマンドの中継を完了したデータリンクレイヤ１３がアイドル状態となってからの経過時間が予め定められた期間を超えた場合（タイムアウト発生）を想定する（図５のｂ１１）。
【００４３】
前述したように、データリンクレイヤ１３によるコマンドの中継時、ＡＳＰＭ制御部１１（未完了コマンド転送長判定モジュール１１２）は、その転送長を取得しており、タイムアウトが発生すると、その転送長が閾値以上か否かを判定する。ここでは、今度は、コマンドの転送長が閾値以上である場合を想定する。
【００４４】
コマンドの転送長が長い場合、データリンクレイヤ１３の状態の低消費電力のステート（Ｌ1）から通常のステート（Ｌ0）への復帰（リカバリ）に費やされる時間のコマンド処理（図５のｂ１０）の時間に対する割合は小さいと推測される。つまり、性能に対する影響は小さいと考えられる。そこで、このような場合、電力削減を優先して、ＡＳＰＭ制御部１１は、データリンクレイヤ１３の状態を低消費電力のステート（Ｌ1）に移行させる（図５のｂ１２）。これにより、ＳＳＤ１の消費電力量を低減させることができる。
【００４５】
なお、その後、処理を完了したアプリケーションレイヤ１５から処理結果が出力された場合（図５のｂ１３）、ＡＳＰＭ制御部１１は、データリンクレイヤ１３の状態を通常のステート（Ｌ0）へ復帰させる（図５のｂ１４）。通常のステート（Ｌ0）へ復帰したデータリンクレイヤ１３を介して、アプリケーションレイヤ１５から出力された処理結果は、ホスト装置２に中継される（図５のｂ１５）。
【００４６】
図６は、本実施形態のＳＳＤ１によって実行されるデータリンクレイヤ１３の状態の遷移に関する制御の手順を示すフローチャートである。
【００４７】
ＳＳＤ１は、データリンクレイヤ１３がアイドル状態となっている期間が予め定められた期間を超えたことを検知した場合（ブロックＢ１のＹＥＳ）、アプリケーションレイヤ１５が処理中の未完了コマンドの転送長を調べる（ブロックＢ２）。コマンドの転送長が閾値以上の場合（ブロックＢ３のＹＥＳ）、ＳＳＤ１は、データリンクレイヤ１３の状態を通常のステート（Ｌ0）から低消費電力のステート（Ｌ1）に遷移させる（ブロックＡ４）。
【００４８】
一方、コマンドの転送長が閾値未満の場合（ブロックＢ３のＮＯ）、ＳＳＤ１は、データリンクレイヤ１３の状態を通常のステート（Ｌ0）から低消費電力のステート（Ｌ1）へ遷移させることは行わず、データリンクレイヤ１３の状態を通常のステート（Ｌ0）に維持する（ブロックＢ５）。
【００４９】
このように、本実施形態のＳＳＤ１は、データリンクレイヤ１３の状態の遷移に関する制御の改善が達成される。
【００５０】
（第３実施形態）
次に、第３実施形態について説明する。
【００５１】
図７は、本実施形態に係る記憶装置の一構成例を示すブロック図である。前述の第１実施形態と同様、ここでも、記憶装置が、ホスト装置２の例えばメインストレージとして利用されるＳＳＤ１として実現されているものと想定する。そこで、前述の第１実施形態と同一のコンポーネント等については、本実施形態においても、同一の符号を使用し、また、その説明については省略する。
【００５２】
図７に示すように、本実施形態のＳＳＤ１は、ホストインタフェース１０のＡＳＰＭ制御部１１が、（第１実施形態の未完了コマンド判定モジュール１１１に代わって）リカバリタイミング判定モジュール１１３を備える。リカバリタイミング判定モジュール１１３は、例えば、ホスト装置２からリードコマンドが発行された場合に、ＮＡＮＤメモリ５０においてリードデータの準備が完了したこと（ＮＡＮＤコントローラ４０によるデータの出力準備が完了したこと）を検知し、または、ＮＡＮＤメモリ５０から読み出されたデータのデータバッファ３０への格納が完了したことを検知するモジュールである。なお、言うまでもないが、前述の第１実施形態と同様、リカバリタイミング判定モジュール１１３は、ＡＳＰＭ制御部１１内ではなく、例えば、ＡＳＰＭ制御部１１とは別にホストインタフェース１０内に設けるようにしてもよい。
【００５３】
図８を参照して、このリカバリタイミング判定モジュール１１３を備えたＡＳＰＭ制御部１１によって実行されるデータリンクレイヤ１３の状態の遷移に関する制御の概要を説明する。図８は、本実施形態のＳＳＤ１におけるデータリンクレイヤ１３の状態の遷移を説明するためのシーケンスチャートである。なお、ここでは、リカバリタイミング判定モジュール１１３が、ＮＡＮＤメモリ５０においてリードデータの準備が完了したか否かを判定する場合を想定する。また、前述の第１実施形態と同様、図８においても、物理レイヤ１２とトランザクションレイヤ１４との表記を省略する。
【００５４】
ホスト装置２によりリードコマンドが発行されると（図８のｃ１）、そのリードコマンドは、データリンクレイヤ１３を介してアプリケーションレイヤ１５へ中継される（図８のｃ２）。そして、アプリケーションレイヤ１５は、そのリードコマンドに対応する処理を実行する。
【００５５】
より具体的には、アプリケーションレイヤ１５は、ＮＡＮＤコントローラ４０に対して、リードコマンドを発行する（図８のｃ３）。これを受けて、ＮＡＮＤコントローラ４０も、ＮＡＮＤメモリ５０に対して、リードコマンドを発行し（図８のｃ４）、ＮＡＮＤメモリ５０は、リードコマンドに対応するデータ（リードデータ）を準備する（図５のｃ５）。
【００５６】
ここで、リードコマンドの中継を完了したデータリンクレイヤ１３がアイドル状態となってからの経過時間が予め定められた期間を超えた場合（タイムアウト発生）を想定する（図８のｃ６）。タイムアウトが発生すると、ＡＳＰＭ制御部１１は、データリンクレイヤ１３の状態を低消費電力のステート（Ｌ1）に移行させる（図８のｃ７）。その後、ＮＡＮＤメモリ５０がリードデータの準備を完了させると（図８のｃ８）、ＡＳＰＭ制御部１１（リカバリタイミング判定モジュール１１３）が、その旨を検知する。この検知手法としては、例えばＮＡＮＤコントローラ４０がホストインタフェース１０へ通知する等、種々の手法を採用し得る。
【００５７】
ＡＳＰＭ制御部１１は、ＮＡＮＤメモリ５０がリードデータの準備を完了させたことを契機として、データリンクレイヤ１３の状態の低消費電力のステート（Ｌ1）から通常のステート（Ｌ0）への復帰（リカバリ）を開始する（図８のｃ９）。一方、リードデータの準備を完了させたＮＡＮＤメモリ５０は、リードデータをＮＡＮＤコントローラ４０に転送し（図８のｃ１０）、また、ＮＡＮＤコントローラ４０は、リードデータをアプリケーションレイヤ１５に転送する（図８のｃ１１）。そして、アプリケーションレイヤ１５は、このリードデータを処理結果として出力する（図８のｃ１２）。
【００５８】
この時には、データリンクレイヤ１３の状態は、通常のステート（Ｌ0）へ復帰しているので、アプリケーションレイヤ１５から出力された処理結果は、通常のステート（Ｌ0）へ復帰しているデータリンクレイヤ１３を介して、ホスト装置２に中継される（図８のｃ１３）。前述のケースと同様、低消費電力のステート（Ｌ1）から通常のステート（Ｌ0）へ復帰させる必要がないので、従来のように低消費電力のステート（Ｌ1）から通常のステート（Ｌ0）へ復帰させる場合と比較して、データリンクレイヤ１３による中継について高速化が図られる。
【００５９】
図９は、本実施形態のＳＳＤ１によって実行されるデータリンクレイヤ１３の状態の遷移に関する制御の手順を示すフローチャートである。
【００６０】
ＳＳＤ１は、リードコマンドの中継後、データリンクレイヤ１３がアイドル状態となっている期間が予め定められた期間を超えたことを検知した場合（ブロックＣ１のＹＥＳ）、データリンクレイヤ１３の状態を通常のステート（Ｌ0）から低消費電力のステート（Ｌ1）に遷移させる（ブロックＣ２）。
【００６１】
また、ＳＳＤ１は、ＮＡＮＤメモリ５０がリードデータの準備を完了させたことを検知すると（ブロックＣ３のＹＥＳ）、そのタイミングで、データリンクレイヤ１３の状態の低消費電力のステート（Ｌ1）から通常のステート（Ｌ0）への復帰（リカバリ）を開始する（ブロックＣ４）。
【００６２】
このように、本実施形態のＳＳＤ１は、データリンクレイヤ１３の状態の遷移に関する制御の改善が達成される。
【００６３】
なお、前述したように、リカバリタイミング判定モジュール１１３は、ＮＡＮＤメモリ５０においてリードデータの準備が完了したことに限らず、ＮＡＮＤメモリ５０から読み出されたデータのデータバッファ３０への格納が完了したことを検知してもよい。この場合、データリンクレイヤ１３の状態が、リードコマンドを中継後に低消費電力のステート（Ｌ1）に遷移している場合に、ＮＡＮＤメモリ５０から読み出されたデータがデータバッファ３０へ格納され終わったことを契機として、データリンクレイヤ１３の状態の低消費電力のステート（Ｌ1）から通常のステート（Ｌ0）への復帰（リカバリ）を開始するようにしてもよい。
【００６４】
そのほか、例えば、リードコマンドの場合に限らず、コマンドをデータリンクレイヤ１３が受信してからの経過時間が予め定められた期間に達したことを契機として、データリンクレイヤ１３の状態の低消費電力のステート（Ｌ1）から通常のステート（Ｌ0）への復帰（リカバリ）を開始するようにしてもよい。この場合、さらに、例えばデータリンクレイヤ１３によるコマンドの中継時に取得されるコマンドの転送長に応じて、リカバリ開始までの期間を適応的に決定してもよい。
【００６５】
このように、近い将来の処理結果の中継に備えて、前もって、データリンクレイヤ１３の状態を低消費電力のステート（Ｌ1）から通常のステート（Ｌ0）へ復帰させる契機として、種々のタイミングを採用し得る。
【００６６】
本実施形態に記載された様々な機能の各々は、処理回路によって実現されてもよい。処理回路の例には、中央処理装置（ＣＰＵ）のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたプログラムを実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例は、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、マイクロコントローラ、コントローラ、他の電気回路部品も含む。
【００６７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６８】
１…ＳＳＤ、２…ホスト装置、１０…ホストインタフェース、１１…ＡＳＰＭ制御部、１２…物理レイヤ、１３…データリンクレイヤ、１４…トランザクションレイヤ、１５…アプリケーションレイヤ、２０…ＣＰＵ、３０…データバッファ、４０…ＮＡＮＤコントローラ、５０…ＮＡＮＤメモリ、１１１…未完了コマンド有無判定モジュール、１１２…未完了コマンド転送長判定モジュール、１１３…リカバリタイミング判定モジュール。
【図１】
2017033501.tif 000003
【図２】
2017033501.tif 000004
【図３】
2017033501.tif 000005
【図４】
2017033501.tif 000006
【図５】
2017033501.tif 000007
【図６】
2017033501.tif 000008
【図７】
2017033501.tif 000009
【図８】
2017033501.tif 000010
【図９】
2017033501.tif 000011