(57)【要約】 【課題】不揮発性半導体メモリの性能劣化を抑制することが可能なストレージ装置及びそのデータ処理方法を提供する。【解決手段】制御部２７は、デバイススリープ要求を受けた場合、デバイススリープ処理の実行条件を満たす場合、揮発性メモリ２９，３０に保持された管理情報を第２のストレージ１０に書き込み、電源制御部４１により揮発性メモリ２９，３０、第１、第２のストレージ１０，２０の電源を遮断する第１のデバイススリープ処理を実行し、デバイススリープ処理の実行条件を満たさない場合、揮発性メモリ２９，３０に保持された管理情報を第２のストレージ１０に書き込まず、電源制御部４１により揮発性メモリ３０に電源を供給させ、第１、第２のストレージ１０，２０の電源を遮断する第２のデバイススリープ処理を実行する。【選択図】図１
2016014957.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する磁気ディスクへのデータ記録を制御する第１のストレージ制御部と、
データを記憶する不揮発性メモリへのデータ記録を制御する第２のストレージ制御部と、
前記第１、第２のストレージ制御部に記録されるデータを保持する揮発性メモリと、
前記第１、第２のストレージ制御部、及び揮発性メモリの電源を制御する電源制御部と、
デバイススリープ要求を受けた際、デバイススリープ処理の実行条件を満たす場合、前記揮発性メモリに保持された前記データを前記第２のストレージ制御部により前記不揮発性メモリに書き込み、前記電源制御部により前記揮発性メモリ、前記第１、第２のストレージ制御部の電源を遮断する第１のデバイススリープ処理を実行し、
前記デバイススリープ処理の実行条件を満たさない場合、前記揮発性メモリに保持された前記データを前記不揮発性メモリに書き込まず、前記電源制御部により前記揮発性メモリに電源を供給させ、前記第１、第２のストレージ制御部の電源を遮断する第２のデバイススリープ処理を実行するように制御する制御部と、
を具備するストレージ装置。
【請求項２】
前記制御部は、前記デバイススリープ処理の実行条件として、前回の前記第１のデバイススリープ処理から復帰した時点から現在までの時間Ｄｔが前記データの保存可能時間Ｍｔを越えているかを判断し、前記時間Ｄｔが前記時間Ｍｔを越えていないと判断された場合、前記第２のデバイススリープ処理を実行する請求項１記載のストレージ装置。
【請求項３】
前記制御部は、前記デバイススリープ処理の実行条件として、前記第１のデバイススリープ処理が実行された通算の回数Ｔｃが第１の閾値Ｆｃを超えているかを判断し、前記通算の回数Ｔｃが前記第１の閾値Ｆｃを超えていると判断された場合、前記第２のデバイススリープ処理を実行する請求項１又は２記載のストレージ装置。
【請求項４】
前記制御部は、前記デバイススリープ処理の実行条件として、一定の時間間隔内に前記第１のデバイススリープ処理が実行された回数Ｐｃが第２の閾値Ｇｃを超えているかを判断し、前記回数Ｐｃが前記第２の閾値Ｇｃを超えていると判断された場合、前記第２のデバイススリープ処理を実行する請求項１乃至３のいずれかに記載のストレージ装置。
【請求項５】
データを記憶する磁気ディスクへのデータ記録を制御する第１のストレージ制御部と、データを記憶する不揮発性メモリへのデータ記録を制御する第２のストレージ制御部と、前記第１、第２のストレージ制御部に記録されるデータを保持する揮発性メモリと、前記第１、第２のストレージ制御部、及び揮発性メモリの電源を制御する電源制御部と、を具備するストレージ装置のデータ処理方法であって、
デバイススリープ要求を受けた際、デバイススリープ処理の実行条件を満たす場合、前記揮発性メモリに保持された前記データを前記第２のストレージ制御部により前記不揮発性メモリに書き込み、前記電源制御部により前記揮発性メモリ、前記第１、第２のストレージ制御部の電源を遮断する第１のデバイススリープ処理を実行し、
前記デバイススリープ処理の実行条件を満たさない場合、前記揮発性メモリに保持された前記データを前記不揮発性メモリに書き込まず、前記電源制御部により前記揮発性メモリに電源を供給させ、前記第１、第２のストレージ制御部の電源を遮断する第２のデバイススリープ処理を実行するように制御することを特徴とするストレージ装置のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ストレージ装置及びそのデータ処理方法に関する。
【背景技術】
【０００２】
近年、デバイススリープ機能を有するストレージ装置の開発が行われている。デバイススリープ機能は、ホストから供給されるトリガー信号により、低消費電力状態（以下、デバイススリープ状態と称す）に入る機能である。
【０００３】
デバイススリープ状態に入る前に、ＤＲＡＭやＳＲＡＭのような揮発性メモリに記憶されているデータは、ＮＡＮＤフラッシュメモリのような不揮発性メモリに書き込まれてから電源が遮断される。
【０００４】
しかし、デバイススリープ状態に入る毎に、揮発性メモリのデータを不揮発性メモリに書き込むことで、不揮発性メモリの性能劣化が助長される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２０１４／００４０６５０号明細書
【特許文献２】米国特許出願公開第２０１１／００５１２７６号明細書
【特許文献３】米国特許出願公開第２００７／００５０５７１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本実施形態は、不揮発性半導体メモリの性能劣化を抑制することが可能なストレージ装置及びそのデータ処理方法を提供するものである。
【課題を解決するための手段】
【０００７】
本実施形態のストレージ装置は、データを記憶する磁気ディスクへのデータ記録を制御する第１のストレージ制御部と、データを記憶する不揮発性メモリへのデータ記録を制御する第２のストレージ制御部と、前記第１、第２のストレージ制御部に記録されるデータを保持する揮発性メモリと、前記第１、第２のストレージ制御部、及び揮発性メモリの電源を制御する電源制御部と、デバイススリープ要求を受けた際、デバイススリープ処理の実行条件を満たす場合、前記揮発性メモリに保持された前記データを前記第２のストレージ制御部により前記不揮発性メモリに書き込み、前記電源制御部により前記揮発性メモリ、前記第１、第２のストレージ制御部の電源を遮断する第１のデバイススリープ処理を実行し、前記デバイススリープ処理の実行条件を満たさない場合、前記揮発性メモリに保持された前記データを前記不揮発性メモリに書き込まず、前記電源制御部により前記揮発性メモリに電源を供給させ、前記第１、第２のストレージ制御部の電源を遮断する第２のデバイススリープ処理を実行するように制御する制御部と、を具備する。
【図面の簡単な説明】
【０００８】
【図１】本実施形態が適用されるストレージ装置の一例を示す構成図。
【図２】デバイススリープ処理のシーケンスを概略的に示すシーケンスチャート。
【図３】第１の実施形態に係る動作を概略的に示すフローチャート。
【図４】第１の実施形態に係るデバイススリープ処理の実行を示すフローチャート。
【図５】第１のデバイススリープ処理の前処理を示すフローチャート。
【図６】第２のデバイススリープ処理の前処理を示すフローチャート。
【図７】デバイススリープ状態からの復帰動作の一例を示すフローチャート。
【図８】第２の実施形態に係るデバイススリープ処理の実行を示すフローチャート。
【図９】第３の実施形態に係る動作を概略的に示すフローチャート。
【図１０】第３の実施形態に係るデバイススリープ処理の実行を示すフローチャート。
【発明を実施するための形態】
【０００９】
ハードディスク装置とＮＡＮＤフラッシュメモリを搭載した所謂、ハイブリッド・ハードディスク装置（以下、ハイブリッドドライブとも言う）において、デバイススリープ状態に入る時、消費電力を低減させるため、スタティックＲＡＭやＳＤＲＡＭ（Synchronous DRAM）等の揮発性メモリの電源が遮断される。この場合、揮発性メモリに保持されているシステム領域の管理情報等は、ＮＡＮＤフラッシュメモリ等の不揮発性メモリ、又はハードディスクに書き込まれ、バックアップされる。
【００１０】
デバイススリープ状態から復帰するまでの時間を短縮するためには、管理情報等はハードディスク装置ではなく、ＮＡＮＤフラッシュメモリにバックアップする必要がある。しかし、頻繁にデバイススリープ動作が実行される場合、ＮＡＮＤフラッシュメモリへの書き込みが頻発する。このため、製品の動作保証期間前にＮＡＮＤフラッシュメモリは書き込み回数の上限に達する可能性がある。そこで、本実施形態は、デバイススリープ処理の実行に伴うＮＡＮＤフラッシュメモリの性能劣化を抑制可能とする。
【００１１】
以下、実施の形態について、図面を参照して説明する。
【００１２】
（第１の実施形態）
（ハイブリッドドライブの構成）
図１は、第１の実施形態に係るストレージ装置、すなわち、ハイブリッドドライブ１の構成例を示している。ハイブリッドドライブ１は、例えばパーソナルコンピュータ、ビデオカメラ、音楽プレーヤー、携帯端末、携帯電話機、タブレット端末、プリンタ装置等の電子機器に搭載される。
【００１３】
ハイブリッドドライブ１は、ソリッドステートドライブ（ＳＳＤ）のような半導体ドライブユニット１０と、磁気ディスクドライブユニット２０と、から構成される。
【００１４】
（半導体ドライブユニット１０）
半導体ドライブユニット１０は、ＮＡＮＤフラッシュメモリ（以下、ＮＡＮＤメモリと称する）１１と、メモリコントローラ１２とを含む。
【００１５】
ＮＡＮＤメモリ１１は、ホスト装置５１によってアクセスされたデータを格納するためのキャッシュメモリとして用いられる。このため、ホスト装置５１は、ハイブリッドドライブ１をストレージ装置として利用する際、高速にアクセスすることができる。ＮＡＮＤメモリ１１は、図示せぬ複数のメモリセルが配置された記憶領域としてのメモリセルアレイを備える。メモリセルアレイは、データの消去単位である複数のブロックにより構成され、システム領域とキャッシュ領域とに区分される。
【００１６】
メモリコントローラ１２は、メインコントローラ２７からのアクセスコマンド（例えば、ライトコマンドまたはリードコマンド）に応じて、ＮＡＮＤメモリ１１へのアクセスを制御する。メモリコントローラ１２は、ホストインタフエースコントローラ（以下、ホストＩＦと称する）１２１と、メモリインタフエースコントローラ（以下、メモリＩＦと称する）１２２と、マイクロプロセッサユニット（ＭＰＵ）１２３と、読み出し専用メモリ（ＲＯＭ）１２４と、ランダムアクセスメモリ（ＲＡＭ）１２５とを含む。
【００１７】
ホストＩＦ１２１は、メインコントローラ２７と電気的に接続され、メインコントローラ２７から転送される信号を受信し、メインコントローラ２７に信号を送信する。具体的には、ホストＩＦ１２１は、メインコントローラ２７から転送されるコマンド（ライトコマンド、リードコマンド等）を受信し、これらのコマンドをＭＰＵ１２３に転送する。また、ホストＩＦ１２１は、メインコントローラ２７から転送されたコマンドに対するＭＰＵ１２３からの応答を、メインコントローラ２７に返信する。このように、ホストＩＦ１２１は、メインコントローラ２７とＭＰＵ１２３との間のデータ転送を制御する。
【００１８】
メモリＩＦ１２２は、ＮＡＮＤメモリ１１と電気的に接続され、ＭＰＵ１２３の制御に従い、ＮＡＮＤメモリ１１にアクセスする。
【００１９】
ＭＰＵ１２３は、メインコントローラ２７から転送されたコマンドに基づいて、ＮＡＮＤメモリ１１へのアクセス処理（例えば、ライト処理またはリード処理）を、所定の制御プログラムに従って実行する。
【００２０】
ＲＯＭ１２４は、ＭＰＵ１２３を実行させるための制御プログラムを予め格納している。
【００２１】
ＲＡＭ１２５は、必要なデータを一時的に格納する。ＲＡＭ１２５は、その記憶領域の一部が、ＭＰＵ１２３のワーク領域として用いられる。
【００２２】
（磁気ディスクドライブユニット２０）
磁気ディスクドライブユニット２０は、ディスク２１と、ヘッド２２と、スピンドルモータ（ＳＰＭ）２３と、アクチュエータ２４と、ドライバ集積回路（ＩＣ）２５と、ヘッドＩＣ２６と、メインコントローラ２７と、フラッシュＲＯＭ（ＦＲＯＭ）２８と、スタティックＲＡＭ（ＳＲＡＭ）２９と、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）３０とを含む。
【００２３】
不揮発性メモリとしてのディスク２１は、例えばその一方の面に、データが磁気記録される記録面を有している。ディスク２１は、ＳＰＭ２３によって高速に回転される。ＳＰＭ２３は、ドライバＩＣ２５から供給される駆動電流（または駆動電圧）により駆動される。ディスク２１の記録面は、同心円状、又はスパイラル状に配置された複数のトラックを備えている。
【００２４】
ヘッド（ヘッドスライダ）２２は、ディスク２１の記録面に対応して配置される。ヘッド２２は、アクチュエータ２４のアームから延出したサスペンションの先端に取り付けられている。アクチュエータ２４は、当該アクチュエータ２４の駆動源となるボイスコイルモータ（ＶＣＭ）２４０を有している。ＶＣＭ２４０は、ドライバＩＣ２５から供給される駆動電流（又は駆動電圧）により駆動される。ヘッド２２は、アクチュエータ２４がＶＣＭ２４０によって駆動されることにより、ディスク２１上を当該ディスク２１の半径方向に、円弧を描くように移動する。
【００２５】
尚、図１は、一枚のディスク２１を備えた構成を示している。しかし、ディスク２１が複数枚積層配置されてもよい。また、図１において、ディスク２１は、その一方の面に記録面を備えているが、これに限らず、ディスク２１の両面に記録面を備え、当該両記録面にそれぞれ対応してヘッドが配置されてもよい。
【００２６】
ドライバＩＣ２５は、メインコントローラ２７の制御に従い、ＳＰＭ２３とＶＣＭ２４０とを駆動する。ドライバＩＣ２５によりＶＣＭ２４０が駆動されることで、ヘッド２２はディスク２１上の目標トラックに位置付けられる。さらに、ドライバＩＣ２５は、電源コントローラ４１から電源を受け、後述するように、各部に電源を供給する。
【００２７】
ヘッドＩＣ２６は、図１ではアクチュエータ２４から離れた箇所に配置されているが、例えばアクチュエータ２４の所定の箇所に固定され、フレキシブル印刷回路基板（ＦＰＣ）を介してメインコントローラ２７と電気的に接続される。ヘッドＩＣ２６は、ヘッド２２のリード素子によりリードされたリード信号を増幅する。また、ヘッドＩＣ２６は、メインコントローラ２７から供給されるライトデータをライト電流に変換して、当該ライト電流をヘッド２２のライト素子に出力する。
【００２８】
メインコントローラ２７は、例えば複数の要素が単一チップに集積された大規模集積回路（ＬＳＩ）によって実現される。メインコントローラ２７は、リード／ライト（Ｒ／Ｗ）チャネル２７１と、ハードディスクコントローラ（ＨＤＣ）２７２と、ＭＰＵ２７３とを含む。
【００２９】
Ｒ／Ｗチャネル２７１は、リード／ライトに関連する信号を処理する。即ち、Ｒ／Ｗチャネル２７１は、ヘッドＩＣ２６によって増幅されたリード信号をデジタルデータに変換し、このデジタルデータからリードデータを復号する。また、Ｒ／Ｗチャネル２７１は、ＭＰＵ２７３を介してＨＤＣ２７２から供給されるライトデータを符号化し、この符号化されたライトデータをヘッドＩＣ２６に転送する。
【００３０】
ＨＤＣ２７２は、デバイスインターフェース（デバイスＩＦ）２７４を介してホスト装置５１のホストインターフェース（ホストＩＦ）５２と電気的に接続される。デバイスＩＦ２７４は、ホスト装置５１から転送される信号を受信し、ホスト装置５１に信号を転送する。具体的には、ＨＤＣ２７２は、ホスト装置５１から転送されるアクセスコマンド（ライトコマンド、リードコマンド等）を受信して、当該受信されたコマンドをＭＰＵ２７３に転送する。ＨＤＣ２７２は、ホスト装置５１とＨＤＣ２７２との間のデータ転送を制御する。ＨＤＣ２７２は、ＭＰＵ２７３、Ｒ／Ｗチャネル２７１、ヘッドＩＣ２６、及びヘッド２２を介して、ディスク２１へのライト及びディスク２１からのリードを制御するディスクインタフエースコントローラとしても機能する。
【００３１】
ＭＰＵ２７３は、ホスト装置５１からのアクセスコマンド（ライトコマンド、又はリードコマンド）に応じて、メモリコントローラ１２を介したＮＡＮＤメモリ１１へのアクセスと、Ｒ／Ｗチャネル２７１、ヘッドＩＣ２６、及びヘッド２２を介したディスク２１へのアクセスを制御する。
【００３２】
また、ＭＰＵ２７３はホスト装置５１から供給されるデバイススリープ（DEVSLP）信号に基づき、電源コントローラ４１を制御し、後述するデバイススリープ処理を実行する。
【００３３】
ＭＰＵ２７３の上記動作は、ＦＲＯＭ２８に格納されたファームウェアにより実行される。
【００３４】
ＳＲＡＭ２９の記憶領域の一部は、ＭＰＵ２７３のワーク領域として用いられ、ＮＡＮＤメモリ１１のシステム領域に格納されたデータなどを一時的に保持する。
【００３５】
ＳＤＲＡＭ３０は、ＮＡＮＤメモリ１１のシステム領域に格納されたデータなどを一時的に保持する。
【００３６】
電源コントローラ４１は、ＭＰＵ２７３又はホスト装置５１から供給される要求に基づき、ハイブリッドドライブ１の電源を制御する。すなわち、電源コントローラ４１は、ホストＩＦ５２を介してホスト装置５１に接続されるとともに、メインコントローラ２７のＭＰＵ２７３、磁気ディスクドライブユニット２０のドライバＩＣ２５、及びＳＤＲＡＭ３０に接続されている。電源コントローラ４１は、ドライバＩＣ２５、及びＳＤＲＡＭ３０に電源を供給する。ドライバＩＣ２５は、電源コントローラ４１からの電源をＮＡＮＤメモリ１１、メモリコントローラ１２、ヘッドＩＣ２６、メインコントローラ２７、ＦＲＯＭ２８、ＳＲＡＭ２９、及びＳＤＲＡＭ３０へ供給する。さらに、ドライバＩＣ２５は、電源が供給されたとき、メインコントローラ２７にパワーオンリセット信号を供給する。
【００３７】
また、電源コントローラ４１は、後述するように、デバイススリープ状態に入る時、各部の電源を遮断する。この電源コントローラ４１は、デバイススリープ状態から復帰する時、ホスト装置５１から供給されるDEVSLP信号のネゲートに従ってブートインジケータ信号を生成し、ＭＰＵ２７３に供給する。ブートインジケータ信号には、デバイススリープ状態でＳＤＲＡＭ３０に電源を供給していたか否かの情報も含まれている。ＭＰＵ２７３は、電源コントローラ４１から供給されるブートインジケータ信号に基づき、通常のパワーオンかデバイススリープ状態からの復帰かを判断する。
【００３８】
尚、上記ハイブリッドドライブ１は、ディスク２１とＮＡＮＤメモリ１１からなる２つの不揮発性メモリを含む例を示した。しかし、ハイブリッドドライブ１は、これに限定されるものではなく、アクセス速度や記憶容量が異なる複数種類の不揮発性メモリにより構成されていればよい。
【００３９】
（デバイススリープ処理のシーケンス）
図２は、デバイススリープ処理のシーケンスを概略的に示している。
【００４０】
図２に示すように、ハイブリッドドライブ１のステイタスが、ファイレディ（PHYRDY）、パーシャル（Partial）、又はスランバ(Slumber)の状態において、ホスト装置５１から供給されるDEVSLP信号は、ネゲート(negate)状態にある。この状態において、DEVSLP信号がアサート(assert)されると、ＭＰＵ２７３は、デバイススリープ状態に移行するための準備を実行する。また、後述するように、DEVSLP信号がアサートされると、ＭＰＵ２７３及び電源コントローラ４１によりデバイススリープ状態に移行するための前処理が実行され、この後、デバイスＩＦ２７４を含むハイブリッドドライブ１の電源がオフとされる。このため、デバイスＩＦ２７４は、ホストＩＦ５２より遅れてデバイススリープ状態に移行する。
【００４１】
本実施形態において、デバイススリープ処理は、後述するように、ＳＤＲＡＭ３０の電源をオフする場合（以下、第１のデバイススリープ処理と称す）と、ＳＤＲＡＭ３０の電源をオンのままとする場合（以下、第２のデバイススリープ処理と称す）とがある。
【００４２】
第１のデバイススリープ処理の場合、ＳＲＡＭ２９及びＳＤＲＡＭ３０に保持されているデータはＮＡＮＤメモリ１１にバックアップされる。また、第２のデバイススリープ処理の場合、ＳＲＡＭ２９に格納されているデータはＳＤＲＡＭ３０にバックアップされる。第２のデバイススリープ処理は、ＮＡＮＤメモリ１１の書き込み回数を抑制することが可能である。
【００４３】
上記準備が完了した後、ＭＰＵ２７３から電源コントローラ４１に電源オフの要求が発行される。第２のデバイススリープ処理の場合、電源コントローラ４１は、この要求に従い、ドライバＩＣ２５の電源をオフとすることにより、電源コントローラ４１及び、又はＳＤＲＡＭ３０を除き、ハイブリッドドライブ１の電源がオフとされ、デバイススリープ状態となる。
【００４４】
一方、デバイススリープ状態から復帰する場合において、ホスト装置５１から電源コントローラ４１に供給されるDEVSLP信号がネゲートされると、電源コントローラ４１は、ドライバＩＣ２５の電源をオンとする。ドライバＩＣ２５は、メインコントローラ２７、ＦＲＯＭ２８、ＳＲＡＭ２９、ＳＤＲＡＭ３０等に電源を供給するとともに、メインコントローラ２７にパワーオンリセット信号を供給する。メインコントローラ２７は、パワーオン処理を実行してファームウェアを起動する。メインコントローラ２７のＭＰＵ２７３は、通常のパワーオンであるか、デバイススリープ状態からの復帰であるかを電源コントローラ４１から供給されるブートインジケータ信号により判断する。この結果、デバイススリープからの復帰である場合、ＮＡＮＤメモリ１１又はＳＤＲＡＭ３０にバックアップしていたデータがＳＲＡＭ２９に復旧される。この後、ホスト装置５１からのＯＯＢ（out of band ：例えばCOMRESET、又はCOMWAKE）を待ち、ＯＯＢを検出すると、ファイレディ（PHYRDY）状態に復帰する。
【００４５】
（第２のデバイススリープ処理に移行するための条件）
上記のように、本実施形態は、第１、第２のデバイススリープ処理を有している。デバイススリープ状態に移行する際に、下記（１）（２）（３）のいずれかの条件が成立する場合、電源コントローラ４１はＳＤＲＡＭ３０の電源を切らず、ＭＰＵ２７３はシステム領域の管理情報等（以下、単にデータとも称す）をＳＤＲＡＭ３０に保存し、ＮＡＮＤメモリ１１には保存しない第２のデバイススリープ処理に移行する。
【００４６】
（１）前回の第１のデバイススリープ処理から復帰した時点から現在までの時間Ｄｔが、ＮＡＮＤメモリ１１のデータの保存可能間隔（時間）Ｍｔを超えていない。
【００４７】
（２）第１のデバイススリープ処理に入った通算回数Ｔｃが閾値Ｆｃを超えている。
【００４８】
（３）任意の時間間隔Ｉｔ内に第１のデバイススリープ処理に入った回数Ｐｃが閾値Ｇｃを超えている。
【００４９】
上記条件（１）（２）（３）の何れかを用いて、第２のデバイススリープ処理に入ることにより、ホスト装置５１から発行されるデバイススリープ要求の頻度が多い場合においても、ＮＡＮＤメモリ１１への書き込み回数を抑制することができる。
【００５０】
また、時間Ｍｔ、閾値Ｆｃ、及び閾値Ｇｃを可変にすることにより、ＮＡＮＤメモリ１１の書き換え回数の上限を考慮した製品動作保証期間を満たす範囲において、ホスト装置５１のデバイススリープ要求に応じて第１のデバイススリープ処理に入ることができる。
【００５１】
尚、上記条件（１）（２）（３）は、個別に判断しても良いし、組み合わせて判断しても良い。以下の実施形態においては、条件（１）（２）（３）を個別に判断する場合について説明する。
【００５２】
（第１の実施形態）
第１の実施形態は、条件（１）を判断することにより、第１のデバイススリーブ処理、又は第２のデバイススリープ処理に移行する。
【００５３】
上記条件（１）に用いられる管理情報等の保存可能間隔Ｍｔの算出方法の一例を下記に示す。
【００５４】
ＮＡＮＤメモリ１１の書き換え可能回数をＮｃ、システム領域の管理情報等の保存用に確保したＮＡＮＤメモリ１１上の領域のサイズ（Ｂｙｔｅ）をＮｓ、デバイススリープ実行時における１回当りのシステム領域の管理情報等の保存サイズ（Ｂｙｔｅ）をＳｓ、システム領域の管理情報等の保存可能回数をＳｃと定義すると、保存可能回数Ｓｃは、次式（１）で示される。
【００５５】
Ｓｃ＝（Ｎｃ×Ｎｓ）／Ｓｓ          …（１）
製品動作保証期間（時間）がＬｔである場合、システム領域の管理情報等の保存可能間隔（時間）Ｍｔは、次式（２）で示される。
【００５６】
Ｍｔ＝Ｌｔ／Ｓｃ
＝Ｌｔ／（（Ｎｃ×Ｎｓ）／Ｓｓ）    …（２）
次式（３）を満たすまでは、ホスト装置５１からデバイススリープ要求があっても、第２のデバイススリープ処理（ＮＡＮＤメモリ１１にデータを保存せず、ＳＤＲＡＭ３０に電源を供給する）にするようにしてＮＡＮＤメモリ１１に書き込まないようにすれば、製品動作保証期間を満たすことができる。
【００５７】
Ｄｔ≧Ｍｔ                          …（３）
ここで、Ｄｔは、前回の第１のデバイススリープ処理（ＮＡＮＤメモリ１１にデータを保存して電源を切る）から復帰してから現在までの時間である。
【００５８】
例えばＮｃ＝１００００回、Ｎｓ＝２ＧＢｙｔｅ、Ｓｓ＝２ＭＢｙｔｅ、Ｌｔ＝２６２８０時間（３年）の場合、システム領域に保存された管理情報等の保存可能回数Ｓｃは、式（１）から次のようになる。
【００５９】
Ｓｃ＝（Ｎｃ×Ｎｓ）／Ｓｓ＝１０，０００，０００回
システム領域に保存された管理情報等の保存可能間隔（時間）Ｍｔは、式（２）から次のようになる。
【００６０】
Ｍｔ＝Ｌｔ／Ｓｃ
＝２６２８０時間／１０，０００，０００回
＝９．４６秒                          
このため、最短で９．４６秒に１回、第１のデバイススリープ処理が実行されている場合でも、製品動作保証期間を満たすことができる。
【００６１】
（第１の実施形態の動作）
図３乃至図７を参照して条件（１）を用いた第１の実施形態の動作について説明する。
【００６２】
図３に示すように、ハイブリッドドライブ１の電源がオンとされた場合、電源コントローラ４１は、ドライバＩＣ２５の電源をオンとする。ドライバＩＣ２５は、メインコントローラ２７に電源を供給するとともに、パワーオンリセット信号を供給する。メインコントローラ２７は、パワーオン初期化処理を実行してファームウェアを起動する（Ｓ１１）。メインコントローラ２７のＭＰＵ２７３は、電源コントローラ４１から供給されるブートインジケータ信号により、通常のパワーオンであることを判断する。
【００６３】
この後、例えばＭＰＵ２７３に内蔵された図示せぬハードウェアタイマの動作が開始され、時間が計測される（Ｓ１２）。尚、ハードウェアタイマに限定されるものではなく、ソフトウェアタイマを用いることも可能である。
【００６４】
次いで、パワーオン初期化処理により、ＮＡＮＤメモリ１１のシステム領域の管理情報等の保存可能間隔（時間）Ｍｔが算出される（Ｓ１３）。
【００６５】
上記保存可能間隔Ｍｔが算出された後、ＭＰＵ２７３は、レディー状態となる（Ｓ１４）。
【００６６】
この後、ホスト装置５１から発行されたコマンドを受信したかどうかが判断される（Ｓ１５）。この結果、コマンドを受信したと判断された場合、コマンドに対応する処理が実行される（Ｓ１６）。例えばライトコマンドを受信した場合、ライトコマンドに従って、データの書き込み処理が実行される。この後、制御がＳ１５に移行される。
【００６７】
また、コマンドが受信されていない場合、ホスト装置５１からのデバイススリープ要求が検出されたかが判定される（Ｓ１７）。すなわち、DEVSLP信号がアサートされたかどうかが判断される。この結果、DEVSLP信号がアサートされてない場合、制御がＳ１５に移行される。
【００６８】
一方、DEVSLP信号がアサートされたと判断された場合、デバイススリープ処理が実行される（Ｓ１８）。
【００６９】
図４は、第１の実施形態に係るデバイススリープ処理の実行を示している。
【００７０】
図４において、先ず、前回の第１のデバイススリープ処理から復帰してから現在までの時間Ｄｔが算出される（Ｓ２１）。この時間Ｄｔは、例えばハードウェアタイマにより計測された時間を用いて算出される。前回の第１のデバイススリープ処理から復帰した時間は、例えばＮＡＮＤメモリ１１又はディスク２１に保存されており、この時間は、パワーオン初期化処理において読み出される。
【００７１】
次に、時間Ｄｔがシステム領域の管理情報等の保存可能間隔（時間）Ｍｔを超えているかどうかが判断される（Ｓ２２）。この結果、時間Ｄｔが時間Ｍｔを越えていると判断された場合、第１のデバイススリープ処理の前処理が実行され（Ｓ２３）、時間Ｄｔが時間Ｍｔを越えていないと判断された場合、第２のデバイススリープ処理の前処理が実行される（Ｓ２４）。
【００７２】
図５は、第１のデバイススリープ処理の前処理の一例を示している。
【００７３】
第１のデバイススリープ処理の前処理において、先ず、揮発性メモリとしてのＳＲＡＭ２９、ＳＤＲＡＭ３０に保存されている管理情報等が、不揮発性メモリとしてのＮＡＮＤメモリ１１のシステム領域にバックアップされる（Ｓ３１）。
【００７４】
この後、電源コントローラ４１により、ＳＲＡＭ２９、ＳＤＲＡＭ３０の電源が遮断される（Ｓ３２）。
【００７５】
図６は、第２のデバイススリープ処理の前処理の一例を示している。
【００７６】
第２のデバイススリープ処理の前処理において、先ず、揮発性メモリとしてのＳＲＡＭ２９に保存されているデータが、ＳＤＲＡＭ３０にバックアップされる（Ｓ４１）。
【００７７】
この後、電源コントローラ４１により、ＳＲＡＭ２９の電源が遮断され、ＳＤＲＡＭ３０には電源が供給されたままとされる（Ｓ４２）。
【００７８】
上記第１又は第２のデバイススリープ処理の前処理が実行された後、制御が図４に示すＳ２５に移行される。Ｓ２５において、揮発性メモリと電源コントローラ４１以外の回路の電源が遮断される。すなわち、第１のデバイススリープ処理の前処理Ｓ２３を通った場合、ＳＲＡＭ２９、ＳＤＲＡＭ３０の電源が既にオフとされている。この状態において、電源コントローラ４１以外の回路の電源がオフとされる。また、第２のデバイススリープ処理の前処理Ｓ２４を通った場合、ＳＲＡＭ２９の電源が既にオフとされ、ＳＤＲＡＭ３０の電源はオンのままとされている。この状態において、ＳＤＲＡＭ３０と電源コントローラ４１以外の回路の電源が遮断される。このように、電源コントローラ４１以外の回路の電源が遮断されて、デバイススリープ状態に移行される（Ｓ２６）。
【００７９】
デバイススリープ状態において、電源コントローラ４１により、デバイススリープ状態からの復帰要求が検出されたかどうか判断される（Ｓ２７）。すなわち、電源コントローラ４１は、ホスト装置５１から供給されるDEVSLP信号のネゲートの検出待ち状態にある。この状態において、電源コントローラ４１により、DEVSLP信号のネゲートが検出された場合、制御が図３にＳ１９で示すデバイススリープ状態からの復帰動作に移行される。
【００８０】
図７は、デバイススリープ状態からの復帰動作の一例を示している。
【００８１】
ホスト装置５１から電源コントローラ４１に供給されるDEVSLP信号がネゲートされると、前述したように、電源コントローラ４１は、ドライバＩＣ２５の電源をオンとする。ドライバＩＣ２５は、メインコントローラ２７、ＦＲＯＭ２８、ＳＲＡＭ２９、ＳＤＲＡＭ３０等に電源を供給するとともに、メインコントローラ２７にパワーオンリセット信号を供給する。メインコントローラ２７は、パワーオン処理を実行してファームウェアを起動する（Ｓ５１）。
【００８２】
メインコントローラ２７のＭＰＵ２７３は、通常のパワーオンであるか、デバイススリープ状態からの復帰であるかを電源コントローラ４１から供給されるブートインジケータ信号により判断する。この結果、デバイススリープからの復帰である場合、ＳＤＲＡＭ３０の電源がオフ状態であったかどうか判断される（Ｓ５２）。この判断は、ブートインジケータ信号に含まれる、デバイススリープ状態でＳＤＲＡＭ３０に電源を供給していたか否かの情報により行なわれる。この結果、ＳＤＲＡＭ３０の電源がオフ状態であった場合、第１のデバイススリープ処理からの復帰と判断され、ＮＡＮＤメモリ１１にバックアップしたデータが読み出され、ＳＲＡＭ２９、ＳＤＲＡＭ３０に復旧される（Ｓ５３）。また、ＳＤＲＡＭ３０の電源がオフ状態ではなかった場合、第２のデバイススリープ処理からの復帰と判断され、ＳＤＲＡＭ３０にバックアップしたデータが読み出され、ＳＲＡＭ２９に復旧される（Ｓ５４）。
【００８３】
この後、ホスト装置５１からのＯＯＢの検出待ちとなる（Ｓ５５）。この状態において、ＯＯＢが検出されると、ホストＩＦ、デバイスＩＦの電源ステートがファイレディ（PHYRDY）状態に復帰され（Ｓ５６）、デバイススリープ状態から復帰される（Ｓ５７）。
【００８４】
上記第１の実施形態によれば、デバイススリープ状態に入る際、前回のデバイススリープ状態から復帰してから現在までの時間Ｄｔが、システム領域の管理情報等の保存可能間隔（時間）Ｍｔを超えているかどうかが判断される。時間Ｄｔが時間Ｍｔを超えていない場合、第２のデバイススリープ処理により、ＳＲＡＭ２９に保持されているデータがＮＡＮＤメモリ１１にバックアップされず、電源が供給され続けられるＳＤＲＡＭ３０にバックアップされている。このため、ＮＡＮＤメモリ１１に対する書き込み回数を削減でき、ＮＡＮＤメモリ１１の性能劣化を抑制することができる。
【００８５】
また、システム領域に保存された管理情報等の保存可能間隔（時間）Ｍｔ、閾値Ｆｃ、及び閾値Ｇｃは可変とされている。このため、ＮＡＮＤメモリ１１の書き換え回数の上限を考慮した製品動作保証期間を満たす範囲において、ホスト装置５１のデバイススリープ要求に応じて第１のデバイススリープ処理に入ることができる。したがって、第１のデバイススリープ処理に移行されるまでの期間を可変することができ、ＮＡＮＤメモリ１１の性能劣化の防止と消費電力の低減を両立することが可能である。
【００８６】
（第２の実施形態）
上記第１の実施形態は、条件（１）に基づき、第１のデバイススリープ処理への移行か第２のデバイススリープ処理への移行かを判断した。これに対して、第２の実施形態は、条件（２）を判断することにより、第１のデバイススリーブ処理、又は第２のデバイススリープ処理に移行する。
【００８７】
上記条件（２）は、第１のデバイススリープ処理に入った通算回数Ｔｃが閾値Ｆｃを超えているかどうかを判断する。
【００８８】
条件（２）に用いられる閾値Ｆｃの算出方法の一例を下記に示す。
【００８９】
ここで、通算通電時間（Power ON Life Time）をＰＬｔと定義すると、
閾値Ｆｃは次式（４）で示される。
【００９０】
Ｆｃ＝Ｓｃ×（ＰＬｔ／Ｌｔ）            …（４）
ここで、Ｓｃは、システム領域の管理情報等の保存可能回数、Ｌｔは、製品動作保証期間（時間）である。
【００９１】
ここで、Ｓｃに式（１）を代入すると、閾値Ｆｃは次式（５）で示される。
【００９２】
Ｆｃ＝（（Ｎｃ×Ｎｓ）／Ｓｓ）×（ＰＬｔ／Ｌｔ）      …（５）
ここで、Ｎｃは、ＮＡＮＤメモリ１１の書き換え可能回数、Ｎｓは、システム領域の管理情報等の保存用に確保したＮＡＮＤメモリ１１上の領域のサイズ、Ｓｓは、デバイススリープ実行時における１回当りのシステム領域の管理情報等の保存サイズである。
【００９３】
よって、これまでに第１のデバイススリープ処理が実行された通算回数Ｔｃ、すなわち、システム領域の管理情報等をＮＡＮＤメモリ１１に保存した通算回数Ｔｃが、閾値Ｆｃを超えていなければ、連続して第１のデバイススリープ処理を実行することができる。
【００９４】
例えばシステム領域の管理情報等の保存可能回数Ｓｃが１０，０００，０００回、通算通電時間ＰＬｔが１０時間、製品動作保証期間Ｌｔが２６２８０時間（３年）である場合、閾値Ｆｃは式（５）から次のようになる。
【００９５】
Ｆｃ＝１０，０００，０００回×（１０時間／２６２８０時間）
＝３８０５回
すなわち、ハイブリッドドライブ１の通算通電時間ＰＬｔが１０時間の場合、１０時間の間に全く第１のデバイススリープ処理に入っていないのであれば、３８０５回のデバイススリープ要求があっても、連続して第１のデバイススリープ処理に入ることが可能となる。つまり、次に、第１のデバイススリープ処理に入ることが可能になるまでの期間を条件（１）の場合と異なり可変とすることができる。
【００９６】
尚、デバイススリープ状態に入った通算回数Ｔｃは、第１のデバイススリープ処理になる度にインクリメントするものとする。
【００９７】
（第２の実施形態の動作）
図３、図８を参照して条件（２）を用いた第２の実施形態の動作について説明する。尚、第１の実施形態と同一部分については、同一符号を付し、説明は省略する。
【００９８】
図３に示すように、ハイブリッドドライブ１の電源がオンとされた場合、Ｓ１１でファームウェアが起動され、Ｓ１２でハードウェアタイマの動作が開始される。この後、パワーオン初期化処理により、第１のデバイススリープ処理に入った通算回数Ｔｃが算出される（Ｓ１３）。この通算回数Ｔｃは、例えば動作ログの記録に基づき算出される。この動作の後、レディー状態となる（Ｓ１４）。
【００９９】
次いで、Ｓ１５〜Ｓ１７が実行され、Ｓ１７において、デバイススリープ要求が検出された場合、デバイススリープが実行される（Ｓ１８）。
【０１００】
図８は、第２の実施形態に係るデバイススリープ処理の実行を示している。
【０１０１】
図８において、先ず、上記式（５）を用いて閾値Ｆｃが算出される（Ｓ６１）。この後、デバイススリープ状態に入った通算回数Ｔｃが閾値Ｆｃを超えていないかどうかが判断される（Ｓ６２）。この結果、通算回数Ｔｃが閾値Ｆｃを超えていない場合、通算回数Ｔｃがインクリメントされ（Ｓ６３）、図５に示した第１のデバイススリープ処理の前処理が実行される（Ｓ２３）。一方、通算回数Ｔｃが閾値Ｆｃを超えている場合、図６に示した第２のデバイススリープ処理の前処理が実行される（Ｓ２４）。
【０１０２】
このようにして、第１又は第２のデバイススリープ処理の前処理が実行された後、Ｓ２５を介してデバイススリープ状態に移行される（Ｓ２６）。この後、デバイススリープ状態からの復帰要求が検出されると（Ｓ２７）、図３に示すＳ１９により、デバイススリープからの復帰処理が実行される。
【０１０３】
上記第２の実施形態によれば、デバイススリープ状態に入る際、デバイススリープ状態に入った通算回数Ｔｃが閾値Ｆｃを超えているかどうかが判断される。この結果、通算回数Ｔｃが閾値Ｆｃを超えている場合、第２のデバイススリープ処理に移行される。このため、ＮＡＮＤメモリ１１に対する書き込み回数を削減でき、ＮＡＮＤメモリ１１の性能劣化を抑制することができる。
【０１０４】
しかも、第２の実施形態によれば、通算通電時間ＰＬｔや製品動作保証期間Ｌｔなどを用いて閾値Ｆｃを算出することにより、閾値Ｆｃを可変することができる。このため、第２のデバイススリープ処理に移行されるまでの期間を可変することができ、ＮＡＮＤメモリ１１の性能劣化の防止と消費電力の低減を両立することが可能である。
【０１０５】
（第３の実施形態）
第３の実施形態は、条件（３）を判断することにより、第１のデバイススリーブ処理、又は第２のデバイススリープ処理に移行する。
【０１０６】
条件（３）は、任意の時間間隔Ｉｔ内に第１のデバイススリープ処理に入った回数Ｐｃが閾値Ｇｃを超えているかどうかを判断する。
【０１０７】
条件（３）に用いられる閾値Ｇｃの算出方法の一例を下記に示す。
【０１０８】
ここで、システム領域の管理情報等の保存可能回数をＳｃ、任意の時間間隔をＩｔ、製品動作保証期間をＬｔと定義すると、閾値Ｇｃは、次式（６）で示される。
【０１０９】
Ｇｃ＝Ｓｃ×（Ｉｔ／Ｌｔ）                    …（６）
式（６）に式（１）を代入すると、次式（７）となる。
【０１１０】
Ｇｃ＝（（Ｎｃ×Ｎｓ）／Ｓｓ）×（Ｉｔ／Ｌｔ）…（７）
ここで、Ｎｃは、ＮＡＮＤメモリ１１の書き換え可能回数、Ｎｓは、システム領域の管理情報等の保存用に確保したＮＡＮＤメモリ１１上の領域のサイズ、Ｓｓは、デバイススリープ実行時における１回当りのシステム領域の管理情報等の保存サイズである。
【０１１１】
よって、任意の時間間隔Ｉｔの間に第１のデバイススリープ処理になった回数Ｐｃがこの閾値Ｇｃを超えていなければ、連続して第１のデバイススリープ処理に入っても問題ない。
【０１１２】
尚、電源オン時、及び通電時間Ｐｔが任意の時間間隔Ｉｔ×ｎ（ｎは自然数）に達する度に、第１のデバイススリープ処理に入った回数Ｐｃを“０”に初期化し、第１のデバイススリープ処理になる度にＰｃをインクリメントするものとする。また、任意の時間間隔Ｉｔは、電源オン後に任意のタイミングで変更可能とする。
【０１１３】
（第３の実施形態の動作）
図９、図１０を参照して条件（３）を用いた第３の実施形態の動作について説明する。尚、第１、第２の実施形態と同一部分については、同一符号を付し、説明は省略する。
【０１１４】
図９に示すように、ハイブリッドドライブ１の電源がオンとされた場合、Ｓ１１でファームウェアが起動され、Ｓ１２でハードウェアタイマの動作が開始される。この後、通電時間Ｐｔと任意の時間間隔Ｉｔ内に第１のデバイススリープ処理に入った回数Ｐｃとがクリアされ、任意の時間間隔Ｉｔが一定値に初期設定され、“ｎ”が“１”に初期設定される（Ｓ７１）。
【０１１５】
上記初期設定の後、ＭＰＵ２７３は、レディー状態となる（Ｓ１４）。
【０１１６】
次いで、ハードウェアタイマの値が通電時間Ｐｔに設定される（Ｓ７２）。
【０１１７】
この後、通電時間Ｐｔが任意の時間間隔Ｉｔ×ｎ以上となったかどうかが判断される（Ｓ７３）。この結果、通電時間Ｐｔが任意の時間間隔Ｉｔ×ｎ以上である場合、第１のデバイススリープ処理に入った回数Ｐｃが“０”にクリアされ、“ｎ”の値がインクリメントされる（Ｓ７４）。また、Ｓ７３の判断において、通電時間Ｐｔが任意の時間間隔Ｉｔ×ｎに達していない場合、Ｓ７４はスキップされる。
【０１１８】
次いで、Ｓ１５〜Ｓ１７が実行され、Ｓ１７において、デバイススリープ要求が検出された場合、デバイススリープ処理が実行される（Ｓ１８）。
【０１１９】
図１０は、第３の実施形態に係るデバイススリープ処理の実行を示している。
【０１２０】
図１０において、先ず、式（６）を用いて、閾値Ｇｃが算出される（Ｓ８１）。
【０１２１】
この後、任意の時間間隔Ｉｔの間に第１のデバイススリープ処理になった回数Ｐｃが閾値Ｇｃを超えていないかどうかが判断される（Ｓ８２）。この結果、回数Ｐｃが閾値Ｇｃを超えていない場合、回数Ｐｃがインクリメントされ（Ｓ８３）、図５に示した第１のデバイススリープ処理の前処理が実行される（Ｓ２３）。また、判別の結果、回数Ｐｃが閾値Ｇｃを超えている場合、図６に示した第２のデバイススリープ処理の前処理が実行される（Ｓ２４）。
【０１２２】
このようにして、第１又は第２のデバイススリープ処理の前処理が実行された後、Ｓ２５を介してデバイススリープ状態に移行される（Ｓ２６）。この後、デバイススリープ状態からの復帰要求が検出されると（Ｓ２７）、図９に示すＳ１９により、デバイススリープからの復帰処理が実行される。
【０１２３】
上記第３の実施形態によれば、デバイススリープ状態に入る際、任意の時間間隔Ｉｔ内に第１のデバイススリープ処理に入った回数Ｐｃが閾値Ｇｃを超えているかどうかが判断される。この結果、回数Ｐｃが閾値Ｇｃを超えている場合、第２のデバイススリープ処理に移行される。このため、ＮＡＮＤメモリ１１に対する書き込み回数を削減でき、ＮＡＮＤメモリ１１の性能劣化を抑制することができる。
【０１２４】
しかも、第３の実施形態によれば、任意の時間間隔Ｉｔを可変することができる。このため、第２のデバイススリープ処理に移行されるまでの期間を可変することができ、ＮＡＮＤメモリ１１の性能劣化の防止と消費電力の低減を両立することが可能である。
【０１２５】
その他、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【０１２６】
１…ハイブリッドドライブ、１０…半導体ドライブユニット、１１…ＮＡＮＤメモリ（不揮発性メモリ）、２０…磁気ディスクドライブユニット、２１…ディスク（不揮発性メモリ）、２７…メインコントローラ、２９…ＳＲＡＭ（揮発性メモリ）、３０…ＳＤＲＡＭ（揮発性メモリ）、４１…電源コントローラ。
【図１】
2016014957.tif 000003
【図２】
2016014957.tif 000004
【図３】
2016014957.tif 000005
【図４】
2016014957.tif 000006
【図５】
2016014957.tif 000007
【図６】
2016014957.tif 000008
【図７】
2016014957.tif 000009
【図８】
2016014957.tif 000010
【図９】
2016014957.tif 000011
【図１０】
2016014957.tif 000012