(57)【要約】【課題】スリープ状態への遷移によってアイドル状態の場合よりも消費電力量が増加してしまう場合をできるだけ回避することができる記憶装置の電力制御方法を提供する。【解決手段】実施形態によれば、受信工程では、コントローラは、不揮発性メモリへのアクセス要求または消費電力の異なる複数のスリープ状態への遷移を要求するスリープ遷移要求を受信する。退避工程では、コントローラは、スリープ遷移要求を受信すると、要求されたスリープ状態に対応するデータの退避処理を実行する。電源供給停止工程では、電源回路は、データの退避処理が終了すると、要求されたスリープ状態に対応してコントローラの一部または不揮発性メモリへの電源の供給を停止する。【選択図】図７
2019159802.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、前記不揮発性メモリへのデータのアクセスを制御するコントローラと、前記不揮発性メモリおよび前記コントローラへの電源の供給のオン／オフを切り替える電源回路と、を備える記憶装置の電力制御方法であって、
前記コントローラは、前記不揮発性メモリへのアクセス要求または消費電力の異なる複数のスリープ状態への遷移を要求するスリープ遷移要求を受信する受信工程と、
前記コントローラは、前記スリープ遷移要求を受信すると、要求された前記スリープ状態に対応するデータの退避処理を実行する退避工程と、
前記電源回路は、前記データの退避処理が終了すると、要求された前記スリープ状態に対応して前記コントローラの一部または前記不揮発性メモリへの電源の供給を停止する電源供給停止工程と、
を含む記憶装置の電力制御方法。
【請求項２】
前記コントローラは、アイドル状態から前記複数のスリープ状態のうちのそれぞれの前記スリープ状態に遷移する場合に前記アイドル状態の消費電力量よりも消費電力量が小さくなる条件を含む遷移判定情報をホストに通知する遷移判定情報通知工程をさらに含む請求項１に記載の記憶装置の電力制御方法。
【請求項３】
前記遷移判定情報は、前記アイドル状態から前記複数のスリープ状態のうちのそれぞれの前記スリープ状態に遷移する場合に前記アイドル状態の消費電力量よりも消費電力量が小さくなる前記スリープ状態の継続時間を含む請求項２に記載の記憶装置の電力制御方法。
【請求項４】
前記遷移判定情報は、前記アイドル状態から前記複数のスリープ状態のうちのそれぞれの前記スリープ状態に遷移する場合に、第１消費電力を有する第１スリープ状態の消費電力量よりも、前記第１消費電力よりも小さい第２消費電力を有する第２スリープ状態の消費電力量が小さくなる前記スリープ状態の継続時間をさらに含む請求項３に記載の記憶装置の電力制御方法。
【請求項５】
前記遷移判定情報は、前記第１スリープ状態から前記第２スリープ状態に遷移する場合に、前記第１スリープ状態の消費電力量よりも前記第２スリープ状態の消費電力量が小さくなる前記スリープ状態の継続時間をさらに含む請求項４に記載の記憶装置の電力制御方法。
【請求項６】
前記遷移判定情報は、前記アイドル状態から前記複数のスリープ状態のうちのそれぞれの前記スリープ状態に遷移する場合の前記アイドル状態時の消費電力、前記複数のスリープ状態のうちのそれぞれの前記スリープ状態への遷移および前記スリープ状態からの復帰に要する消費電力量を含む請求項２に記載の記憶装置の電力制御方法。
【請求項７】
前記遷移判定情報通知工程では、前記コントローラは、前記記憶装置の起動時に所定の前記遷移判定情報を通知する請求項２に記載の記憶装置の電力制御方法。
【請求項８】
前記遷移判定情報通知工程では、前記コントローラは、その時点で前記データの退避処理を実行した場合に得られる前記遷移判定情報を所定のタイミングで通知する請求項２に記載の記憶装置の電力制御方法。
【請求項９】
前記コントローラは、前記アクセス要求による処理ではないバックグラウンド処理が実行可能であることを示す処理推奨通知を受信する処理推奨通知受信工程と、
前記コントローラは、前記処理推奨通知を受信した後に、バックグラウンド処理を実行する処理実行工程と、
をさらに含む請求項１に記載の記憶装置の電力制御方法。
【請求項１０】
不揮発性メモリと、前記不揮発性メモリへのデータのアクセスを制御するコントローラと、前記不揮発性メモリおよび前記コントローラへの電源の供給のオン／オフを切り替える電源回路と、を備える記憶装置の電力制御方法であって、
前記コントローラは、前記不揮発性メモリへのアクセス要求または消費電力の異なる複数のスリープ状態への遷移を要求するスリープ遷移要求を受信する受信工程と、
前記コントローラは、前記スリープ遷移要求を受信すると、要求された前記スリープ状態に対応するデータの退避処理を実行する退避工程と、
前記電源回路は、前記データの退避処理が終了すると、要求された前記スリープ状態に対応して前記コントローラの一部または前記不揮発性メモリへの電源の供給を停止する電源供給停止工程と、
前記コントローラは、前記アクセス要求による処理ではないバックグラウンド処理の実行の可否を示す処理可否通知を受信する処理可否通知受信工程と、
前記コントローラは、前記処理可否通知を受信した後に、前記バックグラウンド処理を実行する処理実行工程と、
を含む記憶装置の電力制御方法。
【請求項１１】
前記処理可否通知は、所定期間前記スリープ状態への遷移が行われないことを示す情報、あるいは応答に遅延が許される前記アクセス要求が続くことを示す情報を含む請求項１０に記載の記憶装置の電力制御方法。
【請求項１２】
前記処理可否通知は、前記スリープ遷移要求が後に受信されることを示す情報を含み、
前記処理実行工程では、前記コントローラは、前記スリープ遷移要求が後に受信されることを示す情報を含む前記処理可否通知を受信した場合に、バックグラウンド処理を実行しない請求項１０に記載の記憶装置の電力制御方法。
【請求項１３】
不揮発性メモリと、
前記不揮発性メモリへのデータのアクセスを制御するコントローラと、
前記不揮発性メモリおよび前記コントローラへの電源の供給のオン／オフを切り替える電源回路と、
を備える記憶装置であって、
前記コントローラは、
前記不揮発性メモリへのアクセス要求を受信すると、前記アクセス要求にしたがって前記不揮発性メモリへのアクセスを実行し、
消費電力の異なる複数のスリープ状態への遷移を要求するスリープ遷移要求を受信すると、要求された前記スリープ状態に対応するデータの退避処理を実行し、
前記電源回路は、前記データの退避処理が終了すると、要求された前記スリープ状態に対応して前記コントローラの一部または前記不揮発性メモリへの電源の供給を停止する記憶装置。
【請求項１４】
前記コントローラは、アイドル状態から前記複数のスリープ状態のうちのそれぞれの前記スリープ状態に遷移する場合に前記アイドル状態の消費電力量よりも消費電力量が小さくなる条件を含む遷移判定情報をホストに通知する請求項１３に記載の記憶装置。
【請求項１５】
前記遷移判定情報は、前記アイドル状態から前記複数のスリープ状態のうちのそれぞれの前記スリープ状態に遷移する場合に前記アイドル状態の消費電力量よりも消費電力量が小さくなる前記スリープ状態の継続時間を含む請求項１４に記載の記憶装置。
【請求項１６】
前記遷移判定情報は、前記アイドル状態から前記複数のスリープ状態のうちのそれぞれの前記スリープ状態に遷移する場合に、第１消費電力を有する第１スリープ状態の消費電力量よりも、前記第１消費電力よりも小さい第２消費電力を有する第２スリープ状態の消費電力量が小さくなる前記スリープ状態の継続時間をさらに含む請求項１５に記載の記憶装置。
【請求項１７】
前記遷移判定情報は、前記第１スリープ状態から前記第２スリープ状態に遷移する場合に、前記第１スリープ状態の消費電力量よりも前記第２スリープ状態の消費電力量が小さくなる前記スリープ状態の継続時間をさらに含む請求項１６に記載の記憶装置。
【請求項１８】
前記遷移判定情報は、前記アイドル状態から前記複数のスリープ状態のうちのそれぞれの前記スリープ状態に遷移する場合の前記アイドル状態時の消費電力、前記複数のスリープ状態のうちのそれぞれの前記スリープ状態への遷移および前記スリープ状態からの復帰に要する消費電力量を含む請求項１４に記載の記憶装置。
【請求項１９】
前記コントローラは、前記記憶装置の起動時に所定の前記遷移判定情報を通知する請求項１４に記載の記憶装置。
【請求項２０】
前記コントローラは、その時点で前記データの退避処理を実行した場合に得られる前記遷移判定情報を所定のタイミングで通知する請求項１４に記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、記憶装置の電力制御方法および記憶装置に関する。
【背景技術】
【０００２】
不揮発性記憶装置を記憶媒体に使用した記憶装置には、電力削減のために１つまたは複数のスリープ状態が用意されている。
【０００３】
しかしながら、従来技術では、電力削減のためにアイドル状態からスリープ状態に遷移した場合の消費電力量が、アイドル状態を継続した場合の消費電力量よりも大きくなってしまう場合もある。そこで、スリープ状態への遷移によって逆に消費電力量が増加してしまう場合をできるだけ回避する技術が望まれている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第９，５６８，９８７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態は、スリープ状態への遷移によってアイドル状態を継続する場合よりも消費電力量が増加してしまう場合をできるだけ回避することができる記憶装置の電力制御方法および記憶装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一つの実施形態によれば、不揮発性メモリと、前記不揮発性メモリへのデータのアクセスを制御するコントローラと、前記不揮発性メモリおよび前記コントローラへの電源の供給のオン／オフを切り替える電源回路と、を備える記憶装置の電力制御方法が提供される。記憶装置の電力制御方法は、受信工程と、退避工程と、電源供給停止工程と、を含む。前記受信工程では、前記コントローラは、前記不揮発性メモリへのアクセス要求または消費電力の異なる複数のスリープ状態への遷移を要求するスリープ遷移要求を受信する。前記退避工程では、前記コントローラは、前記スリープ遷移要求を受信すると、要求された前記スリープ状態に対応するデータの退避処理を実行する。前記電源供給停止工程では、前記電源回路は、前記データの退避処理が終了すると、要求された前記スリープ状態に対応して前記コントローラの一部または前記不揮発性メモリへの電源の供給を停止する。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態による記憶装置の構成の一例を示す図である。
【図２】図２は、第１の実施形態による浅スリープ状態の状態を模式的に示す図である。
【図３】図３は、深スリープ状態の状態を模式的に示す図である。
【図４】図４は、アイドル状態、浅スリープ状態および深スリープ状態での時間に対する消費電力の変化の状態を示す図である。
【図５】図５は、アイドル状態、浅スリープ状態および深スリープ状態での時間に対する消費電力量の推移を示す図である。
【図６】図６は、アイドル状態、浅スリープ状態および深スリープ状態時のそれぞれの消費電力量を示す図である。
【図７】図７は、第１の実施形態による記憶装置の電力制御方法の手順の一例を示すフローチャートである。
【図８】図８は、ホストによるアクセス要求のスケジューリングの一例を模式的に示す図である。
【図９】図９は、アイドル状態、浅スリープ状態および深スリープ状態時のそれぞれの消費電力量の一例を示す図である。
【図１０】図１０は、アイドル状態から浅スリープ状態への遷移時における消費電力の推移を示す図である。
【図１１】図１１は、アイドル状態から浅スリープ状態への遷移時における消費電力量の推移を示す図である。
【図１２】図１２は、浅スリープ状態およびアイドル状態の消費電力量との関係の一例を示す図である。
【図１３】図１３は、第５の実施形態によるホストでの処理タイミング情報の設定手順の一例を示すフローチャートである。
【図１４】図１４は、第５の実施形態によるバックグラウンド処理の実行手順の一例を示すフローチャートである。
【図１５】図１５は、第５の実施形態によるスケジューリングされたアクセス要求と処理タイミング情報の通知の関係を模式的に示す図である。
【図１６】図１６は、比較例によるスリープ状態への遷移とバックグラウンド処理の実行状況の一例を模式的に示す図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態にかかる記憶装置の電力制御方法および記憶装置を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００９】
（第１の実施形態）
図１は、第１の実施形態による記憶装置の構成の一例を示す図である。記憶装置１は、通信路３および電源線４を介してホスト２と接続され、ホスト２の外部装置として機能する。通信路３のインタフェース規格は任意である。通信路３のインタフェース規格として、たとえばＰＣＩｅ（登録商標）（Peripheral  Component  Interconnect  Express）、ＮＶＭｅ（登録商標）（Non-Volatile  Memory  Express）などが使用可能である。なお、通信路３に電源線４が含まれる構成であってもよい。また、以下の例では、記憶装置１がＳＳＤ（Solid  State  Drive）である場合を例に挙げて説明する。
【００１０】
ホスト２は、たとえばコンピュータである。コンピュータは、パーソナルコンピュータ、ポータブルコンピュータ、または、携帯通信機器などを含む。ホスト２は、処理部２１および記憶部２２を有し、それぞれがバス２３を介して接続される。処理部２１は、記憶部２２にロードされたプログラムにしたがって処理を行う。処理部２１は、たとえばＣＰＵ（Central  Processing  Unit）によって構成される。記憶部２２は、処理部２１で使用するプログラムを記憶するＲＯＭ（Read  Only  Memory）などの不揮発性の記憶部、および処理部２１で実行するプログラムがロードされたり、データが一時的に格納されたりするＲＡＭ（Random  Access  Memory）などの揮発性の記憶部などによって構成される。処理部２１は、記憶装置１へのアクセス要求と、記憶装置１へのスリープ遷移要求と、を生成し、アクセス要求およびスリープ遷移要求をスケジューリングして、記憶装置１へと送信する。
【００１１】
記憶装置１は、コントローラ１１と、ＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリという）１２と、揮発性メモリ１３と、電源回路１４と、を備える。
【００１２】
コントローラ１１は、揮発性メモリ１３とＮＡＮＤメモリ１２との間のデータの転送を制御する。データの転送は、ホスト２からの指示によるものと、記憶装置１の都合の指示によるものがある。ホスト２からの指示は、たとえばデータのＮＡＮＤメモリ１２への書き込みを行う書き込みコマンドと、データのＮＡＮＤメモリ１２からの読み出しを行う読み出しコマンドと、を含む。記憶装置１の都合による指示は、ガベージコレクション（コンパクション）処理を行うコマンドを含む。ガベージコレクション処理は、あるブロック中の有効なデータを、他のブロックに移動して、有効なデータが書かれていないフリーブロックを用意する処理である。
【００１３】
コントローラ１１は、電源が互いに分離された複数のエリアを有する。これによって、ホスト２からの指示に応じてエリアごとに電源のオン／オフを切り替えることができる。このようなコントローラ１１は、たとえば  System  ｏn  ａ  Chip（ＳｏＣ）によって構成される。
【００１４】
コントローラ１１は、処理部１１１と、記憶部１１２と、これらを接続するバス１１３と、を有する。処理部１１１は、たとえばＣＭＯＳ（Complementary  Metal-Oxide-Semiconductor）ロジック回路を有し、演算等の処理などを行う。なお、処理部１１１は、ハードウェアで構成されてもよいし、ＣＰＵがファームウェアを実行することによりその機能が実現されてもよい。記憶部１１２は、処理部１１１での演算の際に使用されるデータが格納される。記憶部１１２として、たとえば、ＳＲＡＭ（Static  RAM）、ＤＲＡＭ（Dynamic  RAM）などの揮発性メモリが使用される。
【００１５】
ＮＡＮＤメモリ１２は、メモリセルアレイを有する１以上のＮＡＮＤチップによって構成される。メモリセルアレイは、複数のメモリセルがマトリクス状に配列されて構成される。個々のメモリセルアレイは、イレースの単位である物理ブロックを複数配列して構成される。各物理ブロックは、メモリセルアレイに対する読み出しおよび書き込みの単位であるページを複数備える。ＮＡＮＤメモリ１２においては、物理ブロック単位でイレースされる。
【００１６】
ＮＡＮＤメモリ１２には、たとえばユーザデータおよび管理情報などが格納される。ユーザデータは、ホスト２からの指示によって書き込まれるデータである。管理情報は、コントローラ１１がＮＡＮＤメモリ１２に対するアクセスを行うための情報であり、翻訳情報などを含む。翻訳情報は、論理アドレスを物理アドレスに翻訳するための情報である。翻訳情報によって、論理アドレスで指示される書き込み位置または読み出し位置が、ＮＡＮＤメモリ１２の物理アドレスに翻訳され、この翻訳に基づいてＮＡＮＤメモリ１２へのアクセスが行われる。
【００１７】
揮発性メモリ１３は、たとえば管理情報を記憶する。記憶装置１の起動時においては、揮発性メモリ１３には、ＮＡＮＤメモリ１２から読み出すことができる最新の管理情報が記憶される。ＮＡＮＤメモリ１２へのユーザデータの書き込み、消去、またはガベージコレクション処理によって、揮発性メモリ１３上の管理情報がコントローラ１１によって更新される。更新された管理情報は、任意のタイミングで、ＮＡＮＤメモリ１２へと保存される。
【００１８】
揮発性メモリ１３は、ホスト２とＮＡＮＤメモリ１２との間のデータ転送のためのバッファとしてもコントローラ１１によって使用される。
【００１９】
電源回路１４は、ホスト２から電源線４を介して電源の供給を受け、コントローラ１１からの指示に従って、コントローラ１１、ＮＡＮＤメモリ１２および揮発性メモリ１３への電源の供給のオン／オフを切り替える。なお、コントローラ１１内での電源の供給のオフについては、電源回路１４からオフにされるものだけではなく、コントローラ１１内の内部スイッチによってオフにされるものが設けられていてもよい。
【００２０】
ここで、第１の実施形態による記憶装置１では、低消費電力化を図るため、アクティブモードとスリープモードとの間を切り替えることができる。アクティブモードは、処理部１１１全体、ＮＡＮＤメモリ１２および揮発性メモリ１３が動作している状態にあるモードである。アクティブモードには、ホスト２からの指示あるいは記憶装置１の都合による指示によって動作している動作状態と、ホスト２からの指示を受けておらず処理可能ではあるが処理部１１１による処理が行われていないアイドル状態と、が含まれる。
【００２１】
スリープモードは、処理部１１１の全部または一部が動作していない状態にあるモードであり、消費電力の異なる複数の状態が用意される。第１の実施形態では、スリープモードには、スリープ時の消費電力の大きさによって浅スリープ状態と、深スリープ状態と、が含まれる。深スリープ状態のスリープ時の消費電力の値は、浅スリープ状態のスリープ時の消費電力の値よりも小さい。
【００２２】
図２は、第１の実施形態による浅スリープ状態の状態を模式的に示す図であり、図３は、深スリープ状態の状態を模式的に示す図である。図２に示されるように、浅スリープ状態では、コントローラ１１の処理部１１１および記憶部１１２の一部、並びにＮＡＮＤメモリ１２への電源の供給がオフにされる。アイドル状態から浅スリープ状態への遷移時には、コントローラ１１の処理部１１１が、処理部１１１の各レジスタの値および記憶部１１２中のデータを揮発性メモリ１３へと退避した後（Ｓ１）、電源回路１４が処理部１１１の一部、記憶部１１２およびＮＡＮＤメモリ１２への電源の供給をオフにする（Ｓ２）。なお、処理部１１１のアクティブモードへの復帰のために必要な回路および揮発性メモリ１３には電源が供給されている。図２で、点線の矢印は電源の供給がオフにされた状態を示し、一点鎖線の矢印は電源の供給が一部オフにされた状態を示している。
【００２３】
図３に示されるように、深スリープ状態では、コントローラ１１の処理部１１１および記憶部１１２の一部、揮発性メモリ１３並びにＮＡＮＤメモリ１２への電源の供給がオフにされる。なお、電源の供給がオフにされるコントローラ１１の処理部１１１および記憶部１１２の一部の領域は、深スリープ状態と浅スリープ状態とで異なる場合がある。一般的には、深スリープ状態の方が浅スリープ状態に比してより広い領域への電源の供給がオフにされる。アクティブモードから深スリープ状態への遷移時には、コントローラ１１の処理部１１１が、処理部１１１の各レジスタの値、記憶部１１２および揮発性メモリ１３中のデータをＮＡＮＤメモリ１２へと退避した後（Ｓ５）、電源回路１４が処理部１１１の一部、記憶部１１２、揮発性メモリ１３およびＮＡＮＤメモリ１２への電源の供給をオフにする（Ｓ６）。なお、処理部１１１のアクティブモードへの復帰のために必要な回路には電源が供給されているが、図２の浅スリープ状態に比して揮発性メモリ１３への電源の供給もオフにされているので、深スリープ状態のスリープモード時の消費電力は浅スリープ状態のスリープモード時の消費電力よりも小さくなる。
【００２４】
図４は、アイドル状態、浅スリープ状態および深スリープ状態での時間に対する消費電力の変化の状態を示す図であり、図５は、アイドル状態、浅スリープ状態および深スリープ状態での時間に対する消費電力量の推移を示す図である。これらの図において、（ａ）はアイドル状態での様子を示すグラフであり、（ｂ）は浅スリープ状態での様子を示すグラフであり、（ｃ）は深スリープ状態での様子を示すグラフである。ただし、図４および図５の（ｂ）のグラフでは、浅スリープ状態へ遷移するための退避処理および浅スリープ状態からアイドル状態へ遷移するための復帰処理も含まれている。また、図４および図５の（ｃ）のグラフでは、深スリープ状態へ遷移するための退避処理および深スリープ状態からアイドル状態へ遷移するための復帰処理も含まれている。また、図４において、横軸は時間を示しており、縦軸は消費電力を示している。図５において、横軸は時間を示しており、縦軸は消費電力量を示している。なお、図５に示されるグラフは、図４のそれぞれのグラフを時間に関して積分したものである。
【００２５】
図４（ａ）に示されるように、アイドル状態では、所定の消費電力Ｐiが継続して消費されている状態である。アイドル状態は、処理部１１１全体、記憶部１１２、ＮＡＮＤメモリ１２および揮発性メモリ１３が動作している状態のうちで最も消費される電力が少ない状態である。このアイドル状態がｔa時間継続される場合の消費電力量Ｗiは、図５（ａ）に示されるように、消費電力Ｐiと時間ｔaとの積となる。
【００２６】
一方、浅スリープ状態では、浅スリープ状態時の消費電力Ｐsはアイドル状態の消費電力Ｐiよりも低い。しかし、アイドル状態から浅スリープ状態への遷移時には、図２に示されるように、処理部１１１内のレジスタの値と、記憶部１１２のデータと、を揮発性メモリ１３に退避する処理（以下、退避処理という）が行われる。浅スリープ状態からアイドル状態への復帰時には、揮発性メモリ１３に退避したレジスタの値を処理部１１１に設定し、揮発性メモリ１３に退避したデータを記憶部１１２へと復元する処理（以下、復帰処理という）が行われる。図４（ｂ）で、時刻ｔ０からｔ１までに行われる退避処理、および時刻ｔ２からｔ３までに行われる復帰処理の際の消費電力Ｐaは、消費電力Ｐiよりも大きい。このように、浅スリープ状態へ遷移した場合の消費電力量は、浅スリープ状態時の消費電力Ｐsだけでなく、退避処理時および復帰処理時の消費電力Ｐaも考慮しなければならない。図４（ｂ）に示される浅スリープ状態の場合の消費電力量は、図５（ｂ）に示されている。
【００２７】
深スリープ状態についても、浅スリープ状態の場合と同様である。図４（ｃ）に示されるように、深スリープ状態時の消費電力Ｐdはアイドル状態の消費電力Ｐiおよび浅スリープ状態時の消費電力Ｐsよりも小さくなるが、時刻ｔ０からｔ１１までに行われる退避処理時および時刻ｔ１２からｔ１３までに行われる復帰処理時の消費電力Ｐbは、浅スリープ状態の消費電力Ｐaよりも大きくなる。これは、浅スリープ状態よりも深スリープ状態の方が電力削減のために電源の供給がオフにされる領域が大きいからである。つまり、退避すべきデータ量および処理が増えるためにＰa＜Ｐbとなる。図４（ｃ）に示される深スリープ状態の場合の消費電力量は、図５（ｃ）に示されている。なお、上記した説明では、復帰処理の際の消費電力ＰaおよびＰbは、退避処理の際の消費電力ＰaおよびＰbと等しい場合を例に挙げたが、退避処理の際の消費電力ＰaおよびＰbと異なっていてもよい。
【００２８】
このように、スリープモードへの遷移では、遷移処理時および復帰処理時の消費電力を考慮すると、スリープモードが継続される時間によっては、スリープモード時の消費電力量がアイドル状態の消費電力量よりも大きくなってしまうことも有り得る。
【００２９】
図６は、アイドル状態、浅スリープ状態および深スリープ状態時のそれぞれの消費電力量を示す図である。この図において、横軸は時間を示し、縦軸はそれぞれの状態が継続された時の消費電力量を示している。アイドル状態を継続した時の消費電力量を示す直線をＩ１とし、アイドル状態から浅スリープ状態へ遷移した時の消費電力量を示す曲線をＳ１とし、アイドル状態から深スリープ状態へ遷移した時の消費電力量を示す曲線をＤ１としている。ここで、時刻ｔi2sは、浅スリープ状態を継続した時の消費電力量がアイドル状態を継続した時の消費電力量と等しくなる時間であり、時刻ｔi2dは、深スリープ状態を継続した時の消費電力量がアイドル状態を継続した時の消費電力量と等しくなる時間であり、時刻ｔi2d_goodは、深スリープ状態を継続した時の消費電力量が浅スリープ状態を継続した時の消費電力量と等しくなる時間である。
【００３０】
アイドル状態と浅スリープ状態とを比較すると、ｔi2sよりも短い期間では、アイドル状態の消費電力量が浅スリープ状態時の消費電力量よりも低くなる。一方、ｔi2sよりも長い期間では、浅スリープ状態時の消費電力量がアイドル状態の消費電力量よりも低くなる。そのため、ｔi2sよりも短い期間動作が行われない場合には、アイドル状態を継続させたままにし、ｔi2sよりも長い期間動作が行われない場合には、浅スリープ状態に移行することで、電力消費量を小さくすることができる。
【００３１】
アイドル状態と深スリープ状態とを比較すると、ｔi2dよりも短い期間では、アイドル状態の消費電力量が深スリープ状態時の消費電力量よりも低くなる。一方、ｔi2dよりも長い期間では、深スリープ状態時の消費電力量がアイドル状態の消費電力量よりも低くなる。そのため、ｔi2dよりも短い期間動作が行われない場合には、アイドル状態を継続させたままにし、ｔi2dよりも長い期間動作が行われない場合には、深スリープ状態に移行することで、電力消費量を小さくすることができる。
【００３２】
浅スリープ状態と深スリープ状態とを比較すると、ｔi2d_goodよりも短い期間では、浅スリープ状態時の消費電力量が深スリープ状態時の消費電力量よりも低くなる。一方、ｔi2d_goodよりも長い期間では、深スリープ状態時の消費電力量が浅スリープ状態の消費電力量よりも低くなる。そのため、ｔi2d_goodよりも短い期間動作が行われない場合には、浅スリープ状態に移行し、ｔi2d_goodよりも長い期間動作が行われない場合には、深スリープ状態に移行することで、電力消費量を小さくすることができる。
【００３３】
以上の結果を組み合わせると、アイドル状態がｔi2s未満の期間継続される場合には、スリープモードに移行せずにアイドル状態を維持することが電力量削減に効果がある。アイドル状態がｔi2sよりも長く期間継続される場合には、浅スリープ状態に遷移することが電力量削減に効果がある。アイドル状態がｔi2dよりも長く期間継続される場合には、深スリープ状態に遷移することが電力量削減に効果がある。ただし、アイドル状態がｔi2s〜ｔi2d_goodの期間継続される場合には、浅スリープ状態に遷移し、アイドル状態がｔi2d_goodよりも長く継続される場合には、浅スリープ状態よりも深スリープ状態に遷移することが、電力量削減に効果がある。
【００３４】
そこで、第１の実施形態では、アイドル状態の最低状態継続時間ｔi2s，ｔi2d，ｔi2d_goodを遷移判定情報として、ＮＡＮＤメモリ１２に格納しておき、コントローラ１１は、事前に遷移判定情報をホスト２に通知する。ホスト２に遷移判定情報を通知するタイミングは、たとえば記憶装置１の起動時（再起動時）などである。ホスト２は、遷移判定情報に基づいて、記憶装置１に出すコマンドのタイミングをスケジューリングするとともに、スケジューリング結果にしたがって、アイドル状態、浅スリープ状態および深スリープ状態への記憶装置１の遷移を指示する。
【００３５】
遷移判定情報の算出に当たって、図４（ｂ）の浅スリープ状態の場合の遷移処理時および復帰処理時の際の消費電力Ｐa、および図４（ｃ）の深スリープ状態の場合の遷移処理時および復帰処理時の消費電力Ｐbは、実際の遷移処理時および復帰処理時の消費電力を種々の状況下で計測し、計測結果の平均値をとったものを用いてもよい。あるいは、アイドル状態から浅スリープ状態または深スリープ状態への遷移の際に最大となる消費電力Ｐa_maxおよびＰb_maxの状況を想定し、この想定した消費電力Ｐa_maxおよびＰb_maxを用いてもよい。
【００３６】
図７は、第１の実施形態による記憶装置の電力制御方法の手順の一例を示すフローチャートである。たとえば、記憶装置１が起動された時に、記憶装置１のコントローラ１１は、ＮＡＮＤメモリ１２の所定の領域に格納されている遷移判定情報をホスト２側に通知する（ステップＳ１１）。ホスト２の処理部２１は、遷移判定情報を受信し（ステップＳ１２）、たとえば記憶部２２に記憶する（ステップＳ１３）。
【００３７】
ついで、ホスト２の処理部２１は、記憶装置１へのアクセス要求を生成し（ステップＳ１４）、記憶装置１へのアクセス要求をスケジューリングする（ステップＳ１５）。ここでは、電力削減を優先してスケジューリングするものとする。スケジューリングの結果、浅スリープ状態への遷移または深スリープ状態への遷移がスケジュールに含まれる場合には、浅スリープ状態への遷移の前には、浅スリープ状態への遷移要求が生成され、深スリープ状態への遷移の前には、深スリープ状態への遷移要求が生成される。
【００３８】
たとえば、アクセス要求とアクセス要求との間にアクセスがない時間が存在する場合に、アクセスがない時間を遷移判定情報と比較し、そのアクセスがない時間をアイドル状態、浅スリープ状態および深スリープ状態のいずれにするかを決定する。また、記憶装置１へのアクセス要求のうち、優先度が比較的低いアクセス要求（以下、低優先度のアクセス要求という）がある場合には、低優先度のアクセス要求の前後に設けられるアクセスがない時間がまとまるように低優先度のアクセス要求をスケジューリングして、アクセスがない時間を作成する。そして、このアクセスがない時間について、遷移判定情報と比較し、このアクセスがない時間をアイドル状態、浅スリープ状態および深スリープ状態のどれにするかを決定する。なお、低優先度のアクセス要求は、アクセス要求に対する応答が遅れてもよいアクセス要求である。逆に、アクセス要求に対する応答に遅延がほとんど許されないものは優先度が高いアクセス要求（以下、高優先度のアクセス要求という）である。
【００３９】
その後、ホスト２の処理部２１は、スケジューリングにしたがって、アクセス要求またはスリープ遷移要求を記憶装置１に送信する（ステップＳ１６）。なお、ホスト２は、たとえばスリープ遷移要求を送信する場合で必要な場合に、浅スリープ状態または深スリープ状態からの復帰時間も記憶装置１に供給する。その後、ホスト２では、ステップＳ１４へと処理が戻る。
【００４０】
記憶装置１は、アクセス要求またはスリープ遷移要求を受信したかを判定する（ステップＳ１７）。アクセス要求またはスリープ遷移要求を受信した場合（ステップＳ１７でＹｅｓの場合）には、コントローラ１１の処理部１１１は、スリープ状態であるかを判定する（ステップＳ１８）。スリープ状態である場合（ステップＳ１８でＹｅｓの場合）には、処理部１１１は、復帰処理を行う（ステップＳ１９）。
【００４１】
ステップＳ１９の後またはスリープ状態でない場合（ステップＳ１８でＮｏの場合）には、コントローラ１１の処理部１１１は、ホスト２から受信した要求がアクセス要求であるかを判定する（ステップＳ２０）。アクセス要求である場合（ステップＳ２０でＹｅｓの場合）には、アクセス要求を実行し（ステップＳ２１）、記憶装置１での処理がステップＳ１７へと戻る。
【００４２】
また、コントローラ１１の処理部１１１は、ホスト２から受信した要求がアクセス要求でない場合（ステップＳ２０でＮｏの場合）には、スリープ遷移要求であるので、退避処理を実行する（ステップＳ２２）。たとえば、浅スリープ状態への遷移の場合には、処理部１１１は、処理部１１１内のレジスタの値および記憶部１１２内のデータを揮発性メモリ１３に退避する。深スリープ状態への遷移の場合には、処理部１１１は、処理部１１１内のレジスタの値、記憶部１１２および揮発性メモリ１３内のデータをＮＡＮＤメモリ１２に退避する。
【００４３】
ついで、処理部１１１は、スリープ遷移要求にしたがった電源の供給をオフにする指示を電源回路１４に通知し、電源回路１４は、指示に従って電源の供給をオフにする（ステップＳ２３）。たとえば、浅スリープ状態への遷移の場合には、電源回路１４は、処理部１１１内の所定の部分、記憶部１１２およびＮＡＮＤメモリ１２への電源の供給をオフにする。深スリープ状態への遷移の場合には、電源回路１４は、処理部１１１内の所定の部分、記憶部１１２、ＮＡＮＤメモリ１２および揮発性メモリ１３への電源の供給をオフにする。その後、ステップＳ１７に処理が戻る。
【００４４】
ステップＳ１７でアクセス要求またはスリープ遷移要求を受信していない場合（ステップＳ１７でＮｏの場合）には、コントローラ１１の処理部１１１は、スリープ状態であるかを判定する（ステップＳ２４）。スリープ状態である場合（ステップＳ２４でＹｅｓの場合）には、処理部１１１は、ホスト２から供給された復帰時間であるかを判定する（ステップＳ２５）。復帰時間である場合（ステップＳ２５でＹｅｓの場合）には、処理部１１１は、復帰処理を行う（ステップＳ２６）。たとえば、浅スリープ状態からの復帰の場合には、処理部１１１は、揮発性メモリ１３に退避したレジスタの値を処理部１１１内に設定するとともに、揮発性メモリ１３に退避したデータを記憶部１１２に書き込む。深スリープ状態からの復帰の場合には、処理部１１１は、ＮＡＮＤメモリ１２に退避したレジスタの値を処理部１１１内に設定するとともに、ＮＡＮＤメモリ１２に退避したデータを記憶部１１２および揮発性メモリ１３に書き込む。その後、ステップＳ２４でスリープ状態ではない場合（ステップＳ２４でＮｏの場合）あるいはステップＳ２５で復帰時間ではない場合（ステップＳ２５でＮｏの場合）には、記憶装置１での処理がステップＳ１７へと戻る。以上のように、記憶装置１の電力制御方法が行われる。
【００４５】
図８は、ホストによるアクセス要求のスケジューリングの一例を模式的に示す図である。図８（ａ）は性能を優先した場合のアクセス要求のスケジューリングの一例を示している。高優先度のアクセス要求３０１，３０５，３０７および低優先度のアクセス要求３０２〜３０４，３０６が含まれる。性能優先の場合には、アクセス要求とアクセス要求との間のアクセスがない時間が多く含まれる。このアクセスがない時間を遷移判定情報と比較した結果、スリープモードへの移行が電力削減につながる場合に、スリープモードへの遷移要求が生成されることになる。たとえば、高優先度のアクセス要求３０５と低優先度のアクセス要求３０６との間のアイドル状態の状態継続時間がｔi2s以上となっているために、この部分には浅スリープ状態への遷移要求３１１が含まれ、その後に浅スリープ状態３２１へと遷移している。
【００４６】
図８（ｂ）は、電力削減を優先した場合のアクセス要求のスケジューリングの一例を示している。図８（ａ）では、低優先度のアクセス要求の前にアクセスのない時間が多く設けられている。図８（ｂ）の場合には、これらの低優先度のアクセス要求３０２〜３０４が連続して出されるように、スケジューリングすることで、高優先度のアクセス要求３０１と低優先度のアクセス要求３０２との間に、浅スリープ状態に遷移することが可能な長さのアクセスのない時間を確保している。そして、高優先度のアクセス要求３０１のつぎに浅スリープ状態への遷移要求３１２が配置され、その後に浅スリープ状態３２２へと遷移している。また、より電力削減の効果を高めるために、低優先度のアクセス要求３０６の実行を遅らせることによって、図８（ａ）に設けられていた浅スリープ状態３２１の状態継続時間を長くしている。
【００４７】
図８（ｃ）は、電力削減を優先した場合のアクセス要求のスケジューリングの別の一例を示している。図８（ｃ）は、図８（ｂ）の場合よりもさらに電力削減を優先している。図８（ｃ）では、低優先度のアクセス要求３０２〜３０４を図８（ｂ）の場合よりもさらに遅らせることで、浅スリープ状態３２２の状態継続時間を長くしている。また、低優先度のアクセス要求３０６を、図８（ｂ）の場合よりもさらに遅らせることで、深スリープ状態に遷移することが可能な長さのアクセスのない時間を確保している。その結果、高優先度のアクセス要求３０５のつぎに浅スリープ状態への遷移要求ではなく、深スリープ状態への遷移要求３３１が配置され、その後に深スリープ状態３４１へと遷移している。
【００４８】
なお、記憶装置１からホスト２への遷移判定情報の通知は、種々の方法で実現可能である。ホスト２と記憶装置１との間がＰＣＩｅを使用して通信が行われる場合には、Messageを使って遷移判定情報を通知することができる。この場合には、Vendor_Defined  Messageで遷移判定情報の送信に関して新しく定義したり、新たなMessage  Formatを規格化して遷移判定情報の送信に使用したりすることができる。あるいは、コントローラ１１中のConfigurationレジスタに遷移判定情報を保存しておき、ホスト２にたとえば記憶装置１の起動時にConfigurationレジスタ中の情報を読み込んでもらうようにしてもよい。
【００４９】
また、ホスト２と記憶装置１との間でＮＶＭｅプロトコルを使用して通信が行われる場合には、コントローラ１１のレジスタ空間に遷移判定情報を保存しておき、ホスト２にたとえば記憶装置１の起動時にレジスタ中の情報を読み込んでもらうようにしてもよい。あるいは、ホスト２からIdentifyコマンドを受信した場合に、その応答に遷移判定情報を含めて送信してもよい。あるいは、予めコンフィギュレーションされた設定に基づいて、所定の条件が成立したら記憶装置１側からホスト２にメッセージを通知するAsynchronous  Eventを用いてもよい。
【００５０】
第１の実施形態では、記憶装置１が、たとえばアイドル状態が所定の時間継続するとした場合に、アイドル状態、浅スリープ状態および深スリープ状態のうちのどれが消費電力が小さくなるかを判定する遷移判定情報をホスト２に通知する。ホスト２は、記憶装置１へのアクセス要求を生成し、スケジューリングする際に、遷移判定情報を用いてアクセス要求のスケジューリングを行い、アクセス要求およびスリープ遷移要求を記憶装置１へと送る。記憶装置１は、受信したアクセス要求にしたがって、ＮＡＮＤメモリ１２へのアクセスを行う。また、記憶装置１は、受信したスリープ遷移要求にしたがって、スリープ状態へと遷移する。これによって、アイドル状態を継続した場合よりも電力量が増加してしまう場合を回避することができるという効果を有する。
【００５１】
また、ホスト２は、電力削減優先か、性能優先か、を状況に応じて選択することができる。電力削減優先の場合には、ホスト２は、より電力削減効率が高くなるように、アクセス要求およびスリープ遷移要求をスケジューリングすることができる。
【００５２】
第１の実施形態のようにスケジューリングされていない場合、具体的にはホスト２からのスリープ遷移要求がなく、コントローラ１１自身がスリープ遷移タイミングを決めてしまう場合には、スリープ状態の遷移処理時または復帰処理時にアクセス要求が来ると、スリープからの復帰のためのデータの移動が完了してからアクセス要求に対応することになる。そのため、記憶装置１のパフォーマンスが低下してしまう。しかし、第１の実施形態では、予めホスト２側でアクセス要求とスリープ遷移要求とがスケジューリングされているので、スリープ状態の遷移処理時または復帰処理時にアクセス要求が来ることはなく、上記のようなパフォーマンスの低下を回避することができる。
【００５３】
また、第１の実施形態のようにアクセス要求およびスリープ遷移要求がスケジューリングされていない場合には、省電力効果の高い深スリープ状態への遷移は無駄にＮＡＮＤメモリ１２を疲弊させてしまう。しかし、第１の実施形態では、アクセス要求およびスリープ遷移要求がスケジューリングされているので、不要な深スリープ遷移の発生が抑制される。その結果、不要なスリープ遷移によるＮＡＮＤメモリ１２へのデータの退避でＮＡＮＤメモリ１２が無駄に疲弊してしまうことを防ぐことができるという効果を有する。
【００５４】
（第２の実施形態）
第１の実施形態では、アイドル状態にある場合でのアイドル状態から浅スリープ状態または深スリープ状態への遷移について説明した。複数段階のスリープモードがある場合には、段階的に深いスリープモードに遷移する場合もある。
【００５５】
図９は、アイドル状態、浅スリープ状態および深スリープ状態時のそれぞれの消費電力量の一例を示す図である。図９において、横軸は時間を示し、縦軸はそれぞれの状態が継続された時の消費電力量を示している。この図で、曲線ＳＤは、浅スリープ状態時から深スリープ状態へと遷移する場合の消費電力量を示す曲線であり、曲線Ｓ２は、浅スリープ状態時を継続した場合の消費電力量を示す曲線である。また、ここでは、浅スリープ状態から深スリープ状態へと遷移する場合には、浅スリープ状態からアイドル状態へと戻ってから、深スリープ状態へと遷移する手順を踏むものとする。これは、浅スリープ状態から深スリープ状態へと遷移する場合に、処理部１１１のレジスタの値、記憶部１１２のデータおよび揮発性メモリ１３のデータをＮＡＮＤメモリ１２へと退避させるために、一度浅スリープ状態からアクティブ状態へと復帰させなければならないからである。
【００５６】
浅スリープ状態にある場合には、既にアイドル状態から浅スリープ状態への遷移処理が終わっているので退避処理はなく、消費電力量は、曲線Ｓ２のように示される。一方、浅スリープ状態から深スリープ状態へと遷移する場合には、上記したように、浅スリープ状態からアイドル状態へと一度復帰し、アイドル状態から深スリープ状態へと遷移する。深スリープ状態への遷移は、図６で説明したものと同様である。このような場合の消費電力量は、曲線ＳＤで示される。
【００５７】
曲線Ｓ２と曲線ＳＤとが等しくなる時間ｔs2dが２つの遷移方法の消費電力量が同じになる時間である。また、ｔs2dよりも短い時間であれば浅スリープ状態を維持した方が電力削減効果があることになり、ｔs2dよりも長い時間であれば、浅スリープ状態から深スリープ状態へと遷移した方が電力削減効果があることになる。
【００５８】
そのため、複数のスリープモード間を遷移させる場合には、遷移判定情報に、ｔs2dをさらに含ませればよい。これによって、ホスト２は、浅スリープ状態にある時に、さらに継続したｔs2dの期間、アクセスのない時間を維持できるのならば、深スリープ状態への遷移を選択することができる。深スリープ状態への遷移については、たとえば、ホスト２から深スリープ状態へのスリープ遷移要求を受信することで、一度アイドル状態へと復帰し、退避処理を行った後に深スリープ状態へ遷移させることができる。また、別の例としては、ホスト２から深スリープ遷移条件を含む浅スリープ状態へのスリープ遷移要求を受信することで、浅スリープ状態から深スリープ状態へと遷移することもできる。この場合には、浅スリープ状態にある時に、所定期間ホスト２からのアクセス要求がないことなどの深スリープ遷移条件が満たされると、一時的にアイドル状態へと復帰し、退避処理を行った後に深スリープ状態へ遷移する。
【００５９】
なお、第２の実施形態でのホスト２でのアクセス要求およびスリープ遷移要求のスケジューリング、およびホスト２からアクセス要求およびスリープ遷移要求を受けた時の記憶装置１の動作は、第１の実施形態と同様であるので、その説明を省略する。また、ここでは、浅スリープ状態から深スリープ状態への遷移の際に、一度アイドル状態に遷移する場合を例に挙げたが、浅スリープ状態からアイドル状態を経ずに深スリープ状態へと遷移してもよい。この場合には、アイドル状態を経ないので、浅スリープ状態から深スリープ状態への遷移の際の消費電力量が図９の場合に比して小さくなる。
【００６０】
第２の実施形態によっても、第１の実施形態と同様の効果を有する。
【００６１】
（第３の実施形態）
第１および第２の実施形態では、記憶装置が遷移判定情報としてアイドル状態の最低状態継続時間ｔi2s，ｔi2d，ｔi2d_good，ｔs2dを通知する場合を例に挙げた。しかし、ホスト側で、アイドル状態の最低状態継続時間ｔi2s，ｔi2d，ｔi2d_good，ｔs2dを使用することができるのであれば、他の情報を記憶装置からホストへと通知してもよい。
【００６２】
たとえば、アイドル状態の消費電力をＰiとし、浅スリープ状態時の消費電力をＰsとし、浅スリープ時の退避処理および復帰処理の際の消費電力量をＷaとし、深スリープ状態時の消費電力をＰdとし、深スリープ時の退避処理および復帰処理の際の消費電力量をＷbとすると、各状態を時間ｔだけ継続した場合のアイドル時の消費電力量Ｗi、浅スリープ状態時の消費電力量Ｗs、および深スリープ状態時の消費電力量Ｗdは、それぞれ次式（１）〜（３）で示される。
Ｗi＝Ｐi・ｔ  ・・・（１）
Ｗs＝Ｗa＋Ｐs・ｔ  ・・・（２）
Ｗd＝Ｗb＋Ｐd・ｔ  ・・・（３）
【００６３】
アイドル状態にある時に、浅スリープ状態時の消費電力量Ｗsがアイドル状態の消費電力量Ｗiよりも小さくなる条件として、（１）式および（２）式から次式（４）が求められる。
ｔi2s＞Ｗa／（Ｐi−Ｐs）  ・・・（４）
【００６４】
アイドル状態にある時に、深スリープ状態時の消費電力量Ｗdがアイドル状態の消費電力量Ｗiよりも小さくなる条件として、（１）式および（３）式から次式（５）が求められる。
ｔi2d＞Ｗb／（Ｐi−Ｐd）  ・・・（５）
【００６５】
アイドル状態にある時に、深スリープ状態時の消費電力量Ｗdが浅スリープ状態時の消費電力量Ｗsよりも小さくなる条件として、（２）式および（３）式から次式（６）が求められる。
ｔi2d_good＞（Ｗb−Ｗa）／（Ｐs−Ｐd）  ・・・（６）
【００６６】
浅スリープ状態にある時に、深スリープ状態時の消費電力量Ｗdが浅スリープ状態時の消費電力量Ｗsよりも小さくなるためには、次式（７）が成立する。
Ｗa／２＋Ｗb＋Ｐd・ｔ＜Ｗa／２＋Ｐs・ｔ  ・・・（７）
【００６７】
（７）式に、（２）式および（３）式を代入すると、浅スリープ状態にある時に、深スリープ状態時の消費電力量Ｗdが浅スリープ状態時の消費電力量Ｗsよりも小さくなる条件として、次式（８）が求められる。
ｔs2d＞Ｗb／（Ｐs−Ｐd）  ・・・（８）
【００６８】
（４）式〜（６）式および（８）式に示されるように、アイドル状態の消費電力Ｐi、浅スリープ状態時の消費電力Ｐs、浅スリープ状態の退避処理時および復帰処理時の消費電力量Ｗa、深スリープ状態時の消費電力Ｐd、深スリープ状態の退避処理時および復帰処理時の消費電力量Ｗbがわかれば、スリープ状態の状態継続時間ｔi2s，ｔi2d，ｔi2d_good，ｔs2dを求めることができる。そのため、アイドル状態の消費電力Ｐi、浅スリープ状態時の消費電力Ｐs、浅スリープ状態の退避処理時および復帰処理時の消費電力量Ｗa、深スリープ状態時の消費電力Ｐd、深スリープ状態の退避処理時および復帰処理時の消費電力量Ｗbを遷移判定情報として通知してもよい。
【００６９】
なお、第３の実施形態による記憶装置１の構成および記憶装置１の電力制御方法は、第１の実施形態で説明したものと同様であるので、その説明を省略する。
【００７０】
第３の実施形態によっても、第１の実施形態と同様の効果を得ることができる。また、アイドル状態の消費電力Ｐi、浅スリープ状態時の消費電力Ｐs、浅スリープ状態の退避処理時および復帰処理時の消費電力量Ｗa、深スリープ状態時の消費電力Ｐd、深スリープ状態の退避処理時および復帰処理時の消費電力量Ｗbをホスト２に通知することで、ホスト２側でこれらの数値を使った別の計算を実行することもできる。
【００７１】
（第４の実施形態）
電力削減効果のあるスリープ遷移時間は退避処理時および復帰処理時に消費される電力に大きく依存し、この電力はスリープ遷移時に退避するデータ量に依存する。一方、記憶装置では、スリープ遷移要求がホストからきた時にバッファリングされているデータの量によって退避するデータ量が変化する。第１〜第３の実施形態では、遷移判定情報として、退避するデータ量を予め定めた固定の値として求めたスリープ状態の最低状態継続時間または各スリープ状態の退避処理時および復帰処理時の消費電力量を用いていた。そのため、バッファリングされているデータ量が固定の値からかけ離れている場合には、スリープ状態への移行が電力削減の点から不利になる場合も起こり得る。そこで、第４の実施形態では、ダイナミックに遷移判定情報を更新し、ホストに通知する場合を説明する。
【００７２】
第４の実施形態による記憶装置１は、第１の実施形態で説明したものと略同様であるが、コントローラ１１の処理部１１１に以下に説明する機能が付加される。処理部１１１は、あるタイミングで記憶部１１２および揮発性メモリ１３にバッファリングされているデータ量を取得する。なお、処理部１１１は、ホスト２から受信したアクセス要求から記憶部１１２および揮発性メモリ１３にバッファリングされているデータ量を推測してもよい。また、処理部１１１は、取得したデータ量から、浅スリープ状態での退避処理時および復帰処理時に必要な消費電力量Ｗa、および深スリープ状態での退避処理時および復帰処理時に必要な消費電力量Ｗbを算出する。そして、処理部１１１は、第１の実施形態の場合にはスリープ状態の最低状態継続時間ｔi2s，ｔi2d，ｔi2d_goodを算出し、第２の実施形態の場合にはこれらに加えてｔs2dを算出し、これらを遷移判定情報としてホスト２に通知する。また、処理部１１１は、第３の実施形態の場合には、算出したＷa，Ｗbと、Ｐi，Ｐs，Ｐdと、を遷移判定情報としてホスト２に通知する。ホスト２では、記憶装置１から通知を受けると遷移判定情報を更新する。
【００７３】
なお、処理部１１１が記憶部１１２および揮発性メモリ１３にバッファリングされているデータ量を取得するタイミング、および遷移判定情報をホスト２に通知するタイミングは、任意であり、たとえば所定の時間間隔で行ってもよいし、バッファリングされているデータ量が所定の割合以上変化した場合に行ってもよい。また、処理部１１１は、所定の期間における記憶部１１２および揮発性メモリ１３にバッファリングされているデータ量の平均値を取得し、この平均値を用いて処理を行ってもよい。
【００７４】
図１０は、アイドル状態から浅スリープ状態への遷移時における消費電力の推移を示す図であり、図１１は、アイドル状態から浅スリープ状態への遷移時における消費電力量の推移を示す図である。図１０（ａ）および図１１（ａ）は退避量が少ない第１の場合を示しており、図１０（ｂ）および図１１（ｂ）は退避量が第１の場合よりも多い第２の場合を示している。図１２は、浅スリープ状態およびアイドル状態の消費電力量との関係の一例を示す図である。
【００７５】
図１０に示されるように、第１の場合および第２の場合の両方において、浅スリープ状態時の消費電力Ｐsは同じであり、退避処理時および復帰処理時の消費電力Ｐaも同じであるが、データの退避量が多いほど退避に要する時間がかかる。そのため、第１の場合の退避処理に要する時間または復帰処理に要する時間Δｔ５１は、第２の場合の退避処理に要する時間または復帰処理に要する時間Δｔ５２よりも短い。
【００７６】
そのため、図１１に示されるように、ある期間、浅スリープ状態を維持した時の消費電力量も第１の場合と第２の場合とで異なってくる。すなわち、第１の場合の退避処理時および復帰処理時の消費電力量Ｗa1は、第２の場合の退避処理時および復帰処理時の消費電力量Ｗa2よりも小さくなる。
【００７７】
また、図１２に示されるように、第１の場合と第２の場合とで、アイドル状態を維持した場合よりも消費電力量を小さくするために、浅スリープ状態を継続する時間ｔi2sも異なる。具体的には、退避するデータ量が多いほど、浅スリープ状態を継続する時間ｔi2sが長くなる傾向にある。
【００７８】
たとえば、第１の場合の消費電力量を示す曲線Ｓ３とアイドル状態の曲線Ｉ１とを比較すると、浅スリープ状態をｔi2s_case1以上継続することができる場合には、浅スリープ状態への遷移がアイドル状態を継続する場合よりも電力的に有利である。一方、第２の場合の消費電力量を示す曲線Ｓ４とアイドル状態の曲線Ｉ１とを比較すると、浅スリープ状態をｔi2s_case2以上継続することができる場合には、浅スリープ状態への遷移がアイドル状態を継続する場合よりも電力的に有利である。ただし、ｔi2s_case2は、ｔi2s_case1よりも長い。
【００７９】
図１２には、第１の実施形態のように退避するデータ量を固定した場合の消費電力量の曲線Ｓ１および、浅スリープ状態継続時の消費電力量がアイドル状態継続時の消費電力量と同じになる状態継続時間ｔi2sも示されている。たとえば、第１の実施形態のように、遷移判定情報として状態継続時間ｔi2sがホスト２に通知された場合には、ｔi2s以上処理がされない時間がある場合に、浅スリープ状態への遷移がアイドル状態の継続よりも電力的に有利となる。データ退避量が少ない第１の場合には、ｔi2s_case1はｔi2sよりも小さいので、浅スリープ状態への遷移によって、消費電力量を抑制するという目的を達成することができる。
【００８０】
一方、データ退避量が多い第２の場合には、ｔi2s_case2はｔi2sよりも大きいので、浅スリープ状態を継続する時間がｔi2sの場合には、アイドル状態の消費電力量の方が小さくなる。すなわち、第２の場合には、浅スリープ状態への遷移によって、消費電力量を抑制するという目的を達成することができず、逆に消費電力量が増加してしまう。このような議論は、他のスリープモード（深スリープ状態）への遷移でも同様である。
【００８１】
このように、第１〜第３の実施形態のようにデータの退避量に依らずに固定した状態継続時間を使用すると、上記第２の場合のように、スリープ状態への遷移によって電力消費量が増大してしまう場合もある。一方、第４の実施形態では、記憶部１１２および揮発性メモリ１３にバッファリングされているデータ量を取得し、これに基づいて状態継続時間ｔi2sを算出し、所定のタイミングでホスト２に通知した。状態継続時間ｔi2sの精度が上がるので、第１の実施形態に比して、ホスト２による記憶装置１へのアクセス要求およびスリープ遷移要求がより最適なものとなり、電力削減効果がより高くなるという効果を有する。
【００８２】
なお、第３の実施形態のように、状態継続時間ではなく、Ｗa，Ｗb，Ｐi，Ｐs，Ｐdをホスト２に通知する場合でも、浅スリープ状態の退避処理時および復帰処理時の消費電力量Ｗa並びに深スリープ状態の退避処理時および復帰処理時の消費電力量Ｗbの精度が上がるので、第３の実施形態に比して、ホスト２による記憶装置１へのアクセス要求およびスリープ遷移要求がより最適なものとなり、電力削減効果がより高くなるという効果を有する。
【００８３】
（第５の実施形態）
第１〜第４の実施形態では、ホストが記憶装置に対して適切なタイミングでスリープ遷移要求を出すことができる手法である。しかし、記憶装置はガベージコレクションなどのホストからのアクセス要求が無い時もスリープ状態に遷移せずに動作する場合が存在する。ホストの管理外で、記憶装置の都合（以下、バックグラウンド処理という）での処理が不定期に動作すると、ホストでの適切なスケジューリングに基づいてスリープ遷移要求が出されても、スリープ遷移要求による電力削減効果が低下する可能性がある。そこで、第５の実施形態では、バックグラウンド処理によって電力削減効果が低下してしまうことを防ぐ場合について説明する。
【００８４】
第５の実施形態による記憶装置１は、第１の実施形態で説明したものと略同様であるが、コントローラ１１の処理部１１１に以下に説明する機能が付加される。処理部１１１は、ホスト２からの処理推奨通知を含む処理タイミング情報を受けると、可能な限りこの処理タイミング情報の受信のタイミングでバックグラウンド処理を実行する。ただし、どのくらいの頻度でどの程度の時間、バックグラウンド処理が発生するかをホスト２は判断できないため、コントローラ１１は、ホスト２から処理タイミング情報を受信したときに、バックグラウンド処理の実行が可能なときにバックグラウンド処理を実行する。バックグラウンド処理として、上記したようにガベージコレクション処理が例示される。たとえば、処理部１１１は、バックグラウンド処理を実行するタイミングになると、すぐにバックグラウンド処理を実行するのではなく、所定の時間待ち、この所定の時間内にホスト２から処理タイミング情報を受信すると、バックグラウンド処理を実行することによって、電力削減効果が低下するのを防ぐことが可能になる。この場合、たとえばバックグラウンド処理の実行タイミングでない場合に、ホスト２から処理タイミング情報を受信した場合には、処理部１１１はバックグラウンド処理を行わない。
【００８５】
また、ホスト２は、記憶装置１へのアクセス要求およびスリープ遷移要求のスケジューリングの結果、バックグラウンド処理が可能なタイミングを抽出し、抽出したタイミングで処理タイミング情報を記憶装置１に送信する。バックグラウンド処理が可能なタイミングとして、たとえばアイドル状態が所定時間以上続く時、優先度の低いアクセス要求が続く時などが例示される。アイドル状態が所定時間以上続く時として、所定の期間スリープ遷移を行わないと判断できる時、あるいは記憶装置１へのアクセス要求が切れるが、つぎのアクセス要求までスリープ遷移をしない時などがある。この場合には、どれくらいの期間、スリープ遷移しないかを通知してもよい。
【００８６】
なお、処理タイミング情報には、処理推奨通知ではなく、処理非推奨通知を含めてもよい。たとえば、深スリープ状態への遷移は、かなり長い継続時間を満たさないと、深スリープ状態へと遷移しないので、深スリープ状態への遷移は、頻度が少ないと考えられる。そのため、ホスト２は、深スリープ状態への遷移要求を出す場合には、可能な限り事前に深スリープ状態への遷移が実行されることを示す処理非推奨通知を含む処理タイミング情報を通知する。記憶装置１の処理部１１１は、処理非推奨通知を含む処理タイミング情報を受信すると、深スリープ状態への遷移要求を受信してから深スリープ状態が終了するまでバックグラウンド処理の実行を可能な限り実行しない。
【００８７】
図１３は、第５の実施形態によるホストでの処理タイミング情報の設定手順の一例を示すフローチャートである。ホスト２の処理部２１は、アクセス要求およびスリープ遷移要求をスケジューリングした後（ステップＳ５１）、所定時間アクセス要求がない期間が存在するか判定する（ステップＳ５２）。所定時間アクセス要求がない期間が存在する場合（ステップＳ５２でＹｅｓの場合）には、処理部２１は、たとえば所定時間アクセス要求がない期間の始まりに処理推奨通知を含む処理タイミング情報の送信コマンドを設定する（ステップＳ５３）。このとき、処理推奨通知に、アクセス要求がない期間を含めてもよい。また、処理部２１は、可能な限り事前に深スリープ状態への遷移が実行されることを示す処理非推奨通知を含む処理タイミング情報の送信コマンドを設定してもよい。
【００８８】
ステップＳ５３の後または所定時間アクセス要求がない期間が存在しない場合（ステップＳ５２でＮｏの場合）には、処理部２１は、低優先度のアクセス要求が所定の数以上連続する部分が存在するかを判定する（ステップＳ５４）。低優先度のアクセス要求が所定の数以上連続する部分が存在する場合（ステップＳ５４でＹｅｓの場合）には、処理部２１は、たとえば低優先度のアクセス要求が所定の数以上連続する部分の最初のアクセス要求の前に処理推奨通知を含む処理タイミング情報の送信コマンドを設定する（ステップＳ５５）。低優先度のアクセス要求は、アクセス要求に対する応答が遅れてもよいアクセス要求である。また、処理部２１は、可能な限り事前に深スリープ状態への遷移が実行されることを示す処理非推奨通知を含む処理タイミング情報の送信コマンドを設定してもよい。
【００８９】
ステップＳ５４の後または低優先度のアクセス要求が所定の数以上連続する部分が存在しない場合（ステップＳ５４でＮｏの場合）には、処理部２１は、深スリープ状態への遷移要求が存在するかを判定する（ステップＳ５６）。深スリープ状態への遷移要求が存在する場合（ステップＳ５６でＹｅｓの場合）には、深スリープ状態への遷移要求よりも前に、処理非推奨通知を含む処理タイミング情報の送信コマンドを設定し（ステップＳ５７）、処理が終了する。また、深スリープ状態への遷移要求が存在しない場合（ステップＳ５６でＮｏの場合）には、処理が終了する。
【００９０】
なお、第１の実施形態の図７のフローチャートでは、ホスト２から記憶装置１へと復帰時間が通知される場合を示していたが、図１３のような処理では、処理推奨通知または処理非推奨通知を含む処理タイミング情報の送信コマンドがホスト２から記憶装置１側に送信される。この場合には、図７のステップＳ２５で、処理部１１１は、復帰時間であるかを判定するのではなく、実行すべきバックグラウンド処理があるか、つまり記憶装置１の都合による復帰要因があるかを判定することになる。
【００９１】
図１４は、第５の実施形態によるバックグラウンド処理の実行手順の一例を示すフローチャートである。まず、コントローラ１１の処理部１１１は、バックグラウンド処理発生の条件を満たしたかを判定する（ステップＳ７１）。バックグラウンド処理発生の条件を満たしていない場合（ステップＳ７１でＮｏの場合）には、待ち状態となる。また、バックグラウンド処理発生の条件を満たしている場合（ステップＳ７１でＹｅｓの場合）には、処理部１１１は、ホスト２から処理推奨通知を含む処理タイミング情報を受信したかを判定する（ステップＳ７２）。処理タイミング情報を受信した場合（ステップＳ７２でＹｅｓの場合）には、処理部１１１は、現在、処理推奨期間であるかを判定する（ステップＳ７３）。処理推奨期間である場合（ステップＳ７３でＹｅｓの場合）には、処理部１１１は、バックグラウンド処理を実行し（ステップＳ８２）、処理が終了する。
【００９２】
また、現在処理推奨期間ではない場合（ステップＳ７３でＮｏの場合）には、処理部１１１は、バックグラウンド処理を実行せずに処理推奨期間まで待てるかを判定する（ステップＳ７４）。ここでは、通常、処理推奨期間まで待つことが推奨されるが、緊急性を有するバックグラウンド処理があるなどの場合には、処理推奨期間まで待てない場合（ステップＳ７４でＮｏの場合）には、ステップＳ８２へと処理が移る。また、処理推奨期間まで待てる場合（ステップＳ７４でＹｅｓの場合）には、処理部１１１は、処理推奨期間の開始まで待ち、処理推奨期間になるとステップＳ８２に処理が移る。
【００９３】
ステップＳ７２で処理推奨通知を含む処理タイミング情報を受信していない場合（ステップＳ７２でＮｏの場合）には、処理部１１１は、処理非推奨通知を含む処理タイミング情報を受信したかを判定する（ステップＳ７６）。処理非推奨通知を含む処理タイミング情報を受信した場合（ステップＳ７６でＹｅｓの場合）には、処理部１１１は、現在処理非推奨期間であるかを判定する（ステップＳ７７）。
【００９４】
現在、処理非推奨期間である場合（ステップＳ７７でＹｅｓの場合）には、処理部１１１は、処理推奨期間まで待てるかを判定する（ステップＳ７９）。ここでは、通常、処理推奨期間まで待つことが推奨されるが、処理推奨期間まで待てない場合（ステップＳ７９でＮｏの場合）には、ステップＳ８２へと処理が移る。また、処理推奨期間まで待てる場合（ステップＳ７９でＹｅｓ）の場合には、処理費非推奨期間が終了するまで待ち（ステップＳ８０）、ステップＳ７２へと処理が移る。
【００９５】
現在、処理非推奨期間ではない場合（ステップＳ７７でＮｏの場合）には、処理部１１１は、処理非推奨期間までにバックグラウンド処理が可能かを判定する（ステップＳ７８）。処理非推奨期間までに処理可能ではない場合（ステップＳ７８でＮｏの場合）には、ステップＳ７９へと処理が移る。また、処理委推奨期間内までに、処理可能である場合（ステップＳ７８でＹｅｓの場合）には、ステップＳ８２へと処理が移る。
【００９６】
ステップＳ７６で処理非推奨通知を含む処理タイミング情報を受信した場合（ステップＳ７６でＮｏの場合）には、処理部１１１は、バックグラウンド処理を実行せずに処理推奨期間まで待てるかを判定する（ステップＳ８１）。ここでは、通常、処理推奨期間まで待つことが推奨されるが、処理推奨期間まで待てない場合（ステップＳ８１でＮｏの場合）には、ステップＳ８２へと処理が移る。また、処理推奨期間まで待てる場合（ステップＳ８１でＹｅｓの場合）には、ステップＳ７２へと処理が移る。
【００９７】
図１５は、第５の実施形態によるスケジューリングされたアクセス要求と処理タイミング情報の通知の関係を模式的に示す図である。低優先度のアクセス要求３０２〜３０４は連続して実行されるため、低優先度のアクセス要求３０２の前に処理推奨通知を含む処理タイミング情報の送信コマンド３５１が設定される。その結果、たとえばアクセス要求３０２を受信した時に、記憶装置１が実行すべきバックグラウンド処理を持っている場合には、バックグラウンド処理３６１が実行される。
【００９８】
また、低優先度のアクセス要求３０４と高優先度のアクセス要求３０５との間のアクセス要求がない期間では、アクセス要求が切れるが、つぎのアクセス要求までスリープ遷移要求を出さない旨の処理推奨通知を含む処理タイミング情報の送信コマンド３５２が低優先度のアクセス要求３０４の後に設定される。その結果、処理タイミング情報を受信した時に、記憶装置１が実行すべきバックグラウンド処理を持っている場合には、バックグラウンド処理３６２が実行される。低優先度のアクセス要求３０６と高優先度のアクセス要求３０７との間にもアクセス要求がない期間が存在するが、この場合も同様に、処理推奨通知を含む処理タイミング情報の送信コマンド３５３が設定される。その結果、処理タイミング情報を受信した時に、記憶装置１が実行すべきバックグラウンド処理を持っている場合には、バックグラウンド処理３６３が実行される。これらの場合において、処理タイミング情報に、スリープ遷移要求を出さない期間（時間）を含めてもよい。
【００９９】
高優先度のアクセス要求３０５の後に、深スリープ状態への遷移要求３３１によって深スリープ状態３４１へと遷移する場合には、たとえば低優先度のアクセス要求３０２の前に、深スリープ状態へのスリープ遷移要求３３１が後に出されるがこの期間中にバックグラウンド処理を実行しない旨の処理非推奨通知を含む処理タイミング情報３５４が送信される。これによって、深スリープ状態３４１の最中には、バックグラウンド処理が行われない。
【０１００】
図１６は、比較例によるスリープ状態への遷移とバックグラウンド処理の実行状況の一例を模式的に示す図である。第５の実施形態による処理タイミング情報を通知しない場合には、記憶装置１はバックグラウンド処理をアクセス要求がない時に行う。図１６では、高優先度のアクセス要求３０５を受信して、その処理が終了した後にバックグラウンド処理３６４を実行している。その結果、ホスト２から深スリープ状態へのスリープ遷移要求３３１が高優先度のアクセス要求３０５の後に出されても、記憶装置１はバックグラウンド処理３６４を実行しているため、深スリープ状態へ遷移することができない。バックグラウンド処理３６４が完了した後、深スリープ状態３４１ａへと遷移する。その結果、本来であれば、高優先度のアクセス要求３０５と低優先度のアクセス要求３０６との間はｔi2d_good以上の期間を有しているものが、バックグラウンド処理３６４が入ることによってｔi2d_good未満の期間となると、深スリープ状態３４１ａへの遷移が電力削減にはならなくなってしまう虞がある。
【０１０１】
これに対して、第５の実施形態では、所定の時間アクセス要求がない場合（スリープ状態に遷移しない場合）または低優先度のアクセス要求が連続する場合、あるいは深スリープ状態へのスリープ遷移要求が出される場合に、ホスト２が処理タイミング情報を記憶装置１に送信する。記憶装置１では、バックグラウンド処理の発生条件が満たされた場合に、すぐにバックグラウンド処理を実行するのではなく、その後に受信した処理タイミング情報を待って、バックグラウンド処理を実行する。これによって、アクセス要求が来ない時、優先度の低いアクセス要求が連続する時、あるいはスリープ遷移要求がない時にバックグラウンド処理が実行されるようになるので、可能な限りホスト２の見込み通りのスリープ遷移とその維持を実現することができる。その結果、ホスト２の見込み通りのスリープ遷移が実現されないことによる電力削減効果の低下を防ぐことができる。
【０１０２】
なお、上記した説明では、スリープモードに２つの状態がある場合を示したが、３つ以上の状態が設けられてもよい。また、上記した説明では、揮発性メモリ１３が記憶装置１に設けられる場合を説明したが、揮発性メモリ１３が設けられない構成としてもよい。また、電源回路１４がコントローラ１１内に内蔵されていてもよい。さらに、上記した説明では、ＮＡＮＤメモリ１２を記憶媒体とする場合を例に挙げたが、実施形態がこれに限定されるものではない。記憶媒体として、磁気ディスクなどを用いてもよい。
【０１０３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０４】
１  記憶装置、２  ホスト、３  通信路、４  電源線、１１  コントローラ、１２  ＮＡＮＤメモリ、１３  揮発性メモリ、１４  電源回路、２１，１１１  処理部、２２，１１２  記憶部、２３，１１３  バス。
【図１】
2019159802.tif 000003
【図２】
2019159802.tif 000004
【図３】
2019159802.tif 000005
【図４】
2019159802.tif 000006
【図５】
2019159802.tif 000007
【図６】
2019159802.tif 000008
【図７】
2019159802.tif 000009
【図８】
2019159802.tif 000010
【図９】
2019159802.tif 000011
【図１０】
2019159802.tif 000012
【図１１】
2019159802.tif 000013
【図１２】
2019159802.tif 000014
【図１３】
2019159802.tif 000015
【図１４】
2019159802.tif 000016
【図１５】
2019159802.tif 000017
【図１６】
2019159802.tif 000018