(57)【要約】【課題】データ保障の信頼性を向上する記憶装置、メモリＩＣ、および、メモリＩＣへのライト処理方法を提供することである。【解決手段】本実施形態に係る記憶装置は、データを記憶するための記憶領域を有し、記憶領域に前記データをライトするのに要するライト時間を測定し、測定されたライト時間とライト時間の閾値とを比較する回路を備えるメモリＩＣと、メモリＩＣの比較結果に基づいて、測定されたライト時間が閾値よりも長いと判定された記憶領域にデータをライトすることを禁止するコントローラと、を備える。【選択図】図１
2018032323.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するための記憶領域を有し、前記記憶領域に前記データをライトするのに要するライト時間を測定し、前記測定されたライト時間とライト時間の閾値とを比較する回路を備えるメモリＩＣと、
前記メモリＩＣの比較結果に基づいて、前記測定されたライト時間が前記閾値よりも長いと判定された記憶領域に前記データをライトすることを禁止するコントローラと、を備える記憶装置。
【請求項２】
前記メモリＩＣは、前記測定されたライト時間が前記閾値よりも長いと判定された場合に、前記測定されたライト時間が前記閾値よりも長いことを示すフラグデータを、前記記憶領域の状態を示すステータス情報として記憶し、
前記コントローラは、前記ステータス情報をリードし、前記リードしたステータス情報から前記フラグデータを検出した場合、前記記憶領域に前記データをライトすることを禁止する、請求項１に記載の記憶装置。
【請求項３】
前記メモリＩＣは、前記記憶領域に前記データのライトを開始したことを示す開始信号と前記記憶領域への前記データのライトを完了したことを示す完了信号とを検出し、前記開始信号を受信してから前記閾値が経過したタイミングで、前記完了信号を受けているかどうかを判定する、請求項１に記載の記憶装置。
【請求項４】
前記メモリＩＣは、前記開始信号として動作状態を示すＢｕｓｙ信号を検出し、前記完了信号として待機状態を示すＲｅａｄｙ信号を検出する、請求項３に記載の記憶装置。
【請求項５】
データを不揮発に記憶可能な記憶媒体と、
前記記憶媒体に記憶されるデータを一時的に記憶する揮発性のバッファメモリと、をさらに備え、
前記コントローラは、前記バッファメモリに一時的に記憶されているデータを前記メモリＩＣに退避する、請求項１に記載の記憶装置。
【請求項６】
前記メモリＩＣは、前記バッファメモリに一時的にライトされているライトデータを退避するための退避領域を備え、
前記コントローラは、前記バッファメモリに一時的にライトされているライトデータを前記退避領域にライトする、請求項５に記載の記憶装置。
【請求項７】
前記メモリＩＣは、前記バッファメモリに一時的にライトされているライトデータを前記退避領域にライトしたライト時間が前記閾値よりも長いと判定された場合に、前記退避領域にライトしたライト時間が前記閾値よりも長いことを示すフラグデータを、前記退避領域の状態を示すステータス情報として記憶し、
前記コントローラは、前記ステータス情報をリードし、前記ステータス情報から前記フラグデータを検出した場合、前記退避領域にライトデータをライトすることを禁止する、請求項６に記載の記憶装置。
【請求項８】
前記閾値は可変である、請求項１に記載の記憶装置。
【請求項９】
データを記憶するための記憶領域と、
前記記憶領域に前記データをライトするのに要するライト時間を測定し、前記測定されたライト時間とライト時間の閾値とを比較する回路と、を備えるメモリＩＣ。
【請求項１０】
前記回路は、前記測定されたライト時間が前記閾値よりも長いと判定された場合に、前記測定されたライト時間が前記閾値よりも長いことを示すフラグデータを出力する、請求項９に記載のメモリＩＣ。
【請求項１１】
前記回路は、前記記憶領域に前記データのライトを開始したことを示す開始信号と前記記憶領域への前記データのライトを完了したことを示す完了信号とを検出し、前記開始信号を受信してから前記閾値が経過したタイミングで、前記完了信号を受けているかどうかを判定する、請求項９に記載のメモリＩＣ。
【請求項１２】
前記回路は、前記開始信号として動作状態を示すＢｕｓｙ信号を検出し、前記完了信号として待機状態を示すＲｅａｄｙ信号を検出する、請求項１１に記載のメモリＩＣ。
【請求項１３】
前記回路は、外部メモリに一時的にライトされているライトデータを退避するための退避領域を備える、請求項９に記載のメモリＩＣ。
【請求項１４】
前記回路は、前記外部メモリに一時的にライトされているライトデータを前記退避領域にライトしたライト時間が前記閾値よりも長いと判定された場合に、前記退避領域にライトしたライト時間が前記閾値よりも長いことを示すフラグデータを、前記退避領域の状態を示すステータス情報にライトする、請求項１３に記載のメモリＩＣ。
【請求項１５】
前記閾値は可変である、請求項９に記載のメモリＩＣ。
【請求項１６】
データを記憶するための記憶領域と、前記記憶領域に前記データをライトするのに要するライト時間を測定し、前記測定されたライト時間とライト時間の閾値とを比較する回路と、を備えるメモリＩＣを備える記憶装置に適用されるメモリＩＣへのライト処理方法であって、
前記比較の結果に基づいて、前記測定されたライト時間が前記閾値よりも長いと判定された記憶領域に前記データをライトすることを禁止する、メモリＩＣへのライト処理方法。
【請求項１７】
前記記憶領域の状態を示すステータス情報をリードし、
前記リードしたステータス情報から前記測定されたライト時間が前記閾値よりも長いことを示すフラグデータを検出した場合、前記記憶領域に前記データをライトすることを禁止する、請求項１６に記載のメモリＩＣへのライト処理方法。
【請求項１８】
前記記憶装置は、データを不揮発に記憶可能な記憶媒体に記憶されるデータを一時的に記憶する揮発性のバッファメモリをさらに備え、
前記バッファメモリに一時的に記憶されているデータを前記メモリＩＣに退避する、請求項１６に記載のメモリＩＣへのライト処理方法。
【請求項１９】
前記バッファメモリに一時的にライトされているライトデータを前記メモリＩＣの退避領域にライトする、請求項１８に記載のメモリＩＣへのライト処理方法。
【請求項２０】
前記記憶領域の状態を示すステータス情報をリードし、
前記ステータス情報から前記測定されたライト時間が前記閾値よりも長いことを示すフラグデータを検出した場合、前記退避領域にライトデータをライトすることを禁止する、請求項１９に記載のメモリＩＣへのライト処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は記憶装置、メモリＩＣ、および、メモリＩＣへのライト処理方法に関する
【背景技術】
【０００２】
近年、記憶装置は、予期せず主電源に異常が生じた場合に、未ライトデータを保証するパワーロス保護（Power Loss Protect :ＰＬＰ）機能を備えている。記憶装置は、このＰＬＰ機能によって、主電源に異常が生じた場合に、揮発性メモリに一時的に格納され、まだ不揮発化されていないライトデータ（未ライトデータ）やこの未ライトデータの管理情報を不揮発性メモリに退避する。記憶装置は、主電源が復旧した際に、不揮発性メモリに退避した未ライトデータの管理情報に基づいて、不揮発性メモリに退避した未ライトデータを元の揮発性メモリに復元できる。すなわち、主電源に異常が生じた場合であっても、未ライトデータ及び未ライトデータの管理情報を不揮発性メモリに退避することで、記憶装置は、未ライトデータの消失を防止することができる。
【０００３】
不揮発性メモリは、一般的に、不揮発性メモリの一部の記憶領域にデータのプログラム（ライト）、及びイレーズを何度も繰り返すことで、この記憶領域に含まれるメモリセルが疲弊する。そのため、不揮発性メモリにおいて、一部の記憶領域に対するライト回数が多くなるに従って、この記憶領域にデータをライトするのに要する時間は長くなる、すなわち、この記憶領域へのデータのライト速度はメモリセルが疲弊していない状態のライト速度よりも遅くなる。このように一部の記憶領域へのライト速度が遅くなることで、不揮発性メモリは、一定の時間内に一定のデータ容量のデータを、この記憶領域にライトできない等のエラーを生じ得る。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第８８９２８１７号明細書
【特許文献２】米国特許第８７９９５６８号明細書
【特許文献３】特開２０１４−０７５０１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の実施形態が解決しようとする課題は、データ保障の信頼性を向上する記憶装置、メモリＩＣ、および、メモリＩＣへのライト処理方法を提供することである。
【課題を解決するための手段】
【０００６】
本実施形態に係る記憶装置は、データを記憶するための記憶領域を有し、前記記憶領域に前記データをライトするのに要するライト時間を測定し、前記測定されたライト時間とライト時間の閾値とを比較する回路を備えるメモリＩＣと、前記メモリＩＣの比較結果に基づいて、前記測定されたライト時間が前記閾値よりも長いと判定された記憶領域に前記データをライトすることを禁止するコントローラと、を備える。
【図面の簡単な説明】
【０００７】
【図１】実施形態に関する記憶装置の構成を示すブロック図である。
【図２】実施形態に係る不揮発性メモリの一例を示す模式図である。
【図３】実施形態に係るメモリセル部に対するデータのライト速度を判定する構成図の一例を示す図である
【図４】（ａ）は、基準信号の信号レベルがＨｉｇｈからＬｏｗになったタイミングでライト信号の信号レベルがＬｏｗである場合のタイミングチャートの一例を示す図であり、（ｂ）は、基準信号の信号レベルがＨｉｇｈからＬｏｗになったタイミングでライト信号の信号レベルがＨｉｇｈである場合のタイミングチャートの一例を示す図である。
【図５】メモリセル部の１つの記憶領域へのライト回数に対するライト速度の一例を示す図である。
【図６】実施形態の記憶装置の不揮発性メモリへのライト処理の一例を示すフローチャートである。
【図７】変形例に関する記憶装置が備える不揮発性メモリの記憶領域の使用が可能か不可能かの判定処理の一例を示すフローチャートである。
【図８】第２実施形態に関する記憶装置の構成を示すブロック図である。
【発明を実施するための形態】
【０００８】
以下、実施の形態につき図面を参照して説明する。  
（第１実施形態）  
図１は、第１実施形態に関する記憶装置１の構成を示すブロック図である。  
本実施形態の記憶装置１は、磁気ディスク装置、例えば、hard disk drive(ＨＤＤ)である。記憶装置１は、後述するヘッドディスクアセンブリ（head-disk assembly：ＨＤＡ）と、ドライバＩＣ２０と、ヘッドアンプ集積回路（以下、ヘッドアンプＩＣ）３０と、揮発性メモリ７０と、バッファメモリ（バッファ）８０と、不揮発性メモリ９０と、１チップの集積回路であるシステムコントローラ１３０とを備える。また、記憶装置１は、ホストシステム（ホスト）１００と接続される。
【０００９】
ＨＤＡは、磁気ディスク（以下、ディスク）１０と、スピンドルモータ（ＳＰＭ）１２と、ヘッド１５を搭載しているアーム１３と、ボイスコイルモータ（ＶＣＭ）１４とを有する。ディスク１０は、スピンドルモータ１２により回転する。アーム１３及びＶＣＭ１４は、アクチュエータを構成している。アクチュエータは、ＶＣＭ１４の駆動により、アーム１３に搭載されているヘッド１５をディスク１０上の所定の位置まで移動制御する。ディスク１０およびヘッド１５は、２つ以上の数が設けられてもよい。
【００１０】
ディスク１０は、データ領域に、ユーザから利用可能な記憶領域１０ａと、システム管理に必要な情報をライトするシステムエリア１０ｂとが割り当てられている。
【００１１】
ヘッド１５は、スライダを本体として、当該スライダに実装されているライトヘッド１５Ｗ、及びリードヘッド１５Ｒを備える。リードヘッド１５Ｒは、ディスク１０上のデータトラックに記憶されているデータをリードする。ライトヘッド１５Ｗは、ディスク１０上にデータをライトする。
【００１２】
ドライバＩＣ２０は、システムコントローラ１３０（詳細には、後述するＭＰＵ６０）の制御に従って、ＳＰＭ１２およびＶＣＭ１４の駆動を制御する。さらに、ドライバＩＣ２０は、記憶装置１の電源、例えば、外部電源（以下、主電源と称する）から供給される電力が遮断、または低下した場合、すなわち、主電源に異常が生じた場合に、電力を供給することができる。ドライバＩＣ２０は、例えば、バックアップ電源２１を備えている。バックアップ電源２１は、供給電力を生成するためにＳＰＭ１２の逆起電力を利用する。バックアップ電源２１は、供給電力を生成するために主電源によって充電されるキャパシタを利用してもよい。バックアップ電源２１は、主電源に異常が生じた場合に、記憶装置１の揮発データの退避動作を維持するために必要な電力を供給する。バックアップ電源２１は、少なくともシステムコントローラ１３０に電力を供給する。
【００１３】
ヘッドアンプＩＣ３０は、リードアンプ及びライトドライバを有する。リードアンプは、リードヘッド１５Ｒにより読み出されたリード信号を増幅して、システムコントローラ１３０内のリード／ライト（Ｒ／Ｗ）チャネル４０に伝送する。ライトドライバは、Ｒ／Ｗチャネル４０から出力されるライトデータに応じたライト電流をライトヘッド１５Ｗに伝送する。
【００１４】
揮発性メモリ７０は、電力供給が断たれると保存しているデータが失われる半導体メモリである。揮発性メモリ７０は、記憶装置１の各部での処理に必要なデータ等を格納する。揮発性メモリ７０は、例えば、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）である。
【００１５】
バッファメモリ８０は、ディスク１０とホストシステム１００との間で送受信されるデータ等を一時的に記憶する半導体メモリである。なお、バッファメモリ８０は、揮発性メモリ７０と一体に配置されていてもよい。バッファメモリ８０は、例えば、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＲＡＭ（Static Random Access Memory）、ＳＤＲＡＭ、ＦｅＲＡＭ（Ferroelectric Random Access memory）、およびＭＲＡＭ（Magnetoresistive Random Access Memory）等である。
【００１６】
不揮発性メモリ（メモリＩＣ）９０は、電力供給が断たれても保存しているデータを記憶する半導体メモリである。不揮発性メモリ９０は、例えば、フラッシュＲＯＭ（Flash Read Only Memory :ＦＲＯＭ）である。さらに、例えば、不揮発性メモリ９０は、ＮＯＲ型のフラッシュメモリ、又はＮＡＮＤ型のフラッシュメモリである。不揮発性メモリ９０は、少なくとも判定回路９３０を含むが、より詳細な構造について図２を用いて説明する
図２は、本実施形態に係る不揮発性メモリ９０の一例を示す模式図である。  
不揮発性メモリ９０は、メモリ部９１０と、入出力（Ｉ／Ｏ）回路９２１と、アドレスレジスタ９２２と、コマンドレジスタ９２３と、ステータスレジスタ９２４と、制御回路９２５と、ロジック回路９２６と、高電圧発生回路９２７と、状態検出回路９２８と、判定回路９３０とを含む。
【００１７】
メモリ部９１０は、メモリセル部９１２を含む。メモリセル部９１２は、データを格納する複数のメモリセルで構成され、退避領域９１４を有する記憶領域を含む。退避領域９１４は、主電源に異常が生じた場合に、データを一時的にライト（以下、退避と称する）するための記憶領域である。
【００１８】
Ｉ／Ｏ回路９２１は、不揮発性メモリ９０の外部と、内部の各部と、の間でのデータ等の送受信を実行する。例えば、Ｉ／Ｏ回路９２１は、外部とメモリ部９１０との間のデータの送受信を実行し、外部やロジック回路からのコマンドを、コマンドレジスタ９２３に転送する。さらに、Ｉ／Ｏ回路９２１は、ステータスレジスタ９２４からのステータスを外部へ出力する。アドレスレジスタ９２２は、アドレス情報等を一時的に記憶する。コマンドレジスタ９２３は、プログラム（ライト）動作、リード動作、及びイレーズ動作等を選択するコマンド情報を一時的に記憶する。ステータスレジスタ９２４は、メモリセル部９１２の状態を示すステータス情報（以下、単に、ステータスと称する）を一時的に記憶する。ステータスは、例えば、メモリセル部９１２の一部の記憶領域（メモリブロック）が、使用が可能か不可能かを示す情報、例えば、ステータスビットを含む。ステータスレジスタ９２４は、このステータスをＩ／Ｏ回路９２１を介して外部に転送する。制御回路９２５は、メモリセル部９１２に対するプログラム動作、リード動作、及びイレーズ動作等の各種の動作を制御する。ロジック回路９２６は、各種の制御信号を受け、これら制御信号に基づいて、制御回路９２５の動作を制御する。高電圧発生回路９２７は、プログラム動作時に使用され不揮発性メモリ９０への電源電圧よりも高い高電圧を発生し、この高電圧をメモリ部９１０に供給する。状態検出回路９２８は、不揮発性メモリ９０の現在の状態を検出し、現在の状態に関するデータを外部に転送する。例えば、状態検出回路９２８は、不揮発性メモリ９０が動作中の場合、Ｂｕｓｙ状態（ＢＹ；ビジィ）を示すＢＹ信号を出力し、不揮発性メモリ９０が待機中の場合、Ｒｅａｄｙ状態（ＲＹ；レディ）を示すＲＹ信号を出力する。状態検出回路９２８は、制御回路９２５を介して後述する判定回路９３０にＢＹ信号及びＲＹ信号を出力できる。
【００１９】
判定回路９３０は、基準信号生成回路９３２と、ライト信号生成回路９３３と、比較回路９３４とを備えている。判定回路９３０は、メモリセル部９１２の一部の記憶領域へ一定のデータ容量のデータをライトする時間（以下、ライト時間と称する）を測定し、測定したライト時間が、基準となるライト時間（以下、基準時間、又は閾値と称する）よりも長いか短いかを判定する。判定回路９３０は、ライト時間が基準時間よりも長いか短いかを判定することで、メモリセル部９１２の一部の記憶領域へ一定のデータ容量のデータをライトする速度（以下、ライト速度と称する）が、基準となるライト速度（以下、基準速度と称する）よりも遅いか速いかを判定する。ライト速度は、ライト速度＝一定のデータ容量のライトデータ／ライト時間で表される。そのため、基準速度は、基準速度＝一定のデータ容量のライトデータ／基準時間で表される。なお、以下で、説明の便宜上、一定のデータ容量のデータを単にデータと表現する場合もある。
【００２０】
例えば、判定回路９３０は、メモリセル部９１２の一部の記憶領域にデータのライトを開始したことを示す信号（開始信号）と、データのライトを完了したことを示す信号（完了信号）とを検出することで、この一部の記憶領域へのデータのライト時間を測定する。開始信号及び完了信号は、パルス信号又はレベル信号等である。判定回路９３０は、測定したライト時間が、基準時間（閾値）と比較して長いか短いかを判定する。判定回路９３０は、ライト時間が基準時間よりも短い場合には、ライト速度が基準速度よりも速いことを示す信号（以下、正常信号と称する）をステータスレジスタ９２４等に出力する。一方、判定回路９３０は、ライト時間が基準時間よりも長い場合には、ライト速度が基準速度よりも遅いことを示す信号（以下、警告信号と称する）をステータスレジスタ９２４等に出力する。なお、基準時間（閾値）は、メモリセル部９１２内のすべての記憶領域で同一の値であっても良いし、メモリセル部９１２内で区分された複数の記憶領域毎に異なる値であっても良い。
【００２１】
基準信号生成回路９３２は、開始信号を受けて、メモリセル部９１２の一部の記憶領域へのデータのライト速度が遅いか速いかを判定するための基準時間（閾値）に対応する信号（以下、基準信号と称する）を出力する。例えば、基準信号生成回路９３２は、基準信号として、開始信号を受けたことに応じて立ち上がり（Ｈｉｇｈ：Ｈとなり）、開始信号を受けた時から基準時間の経過後に立ち下がる（Ｌоｗ：Ｌとなる）信号を出力する。基準信号生成回路９３２は、例えば、遅延回路等である。なお、基準信号生成回路９３２は、異なる複数の基準時間を設定するために、複数の回路を備えていてもよい。この場合、基準信号生成回路９３２は、複数の基準時間から特定の基準時間を選択して、回路を切り換えられるように構成されていればよい。以下で、Ｈは、信号レベルがＨｉｇｈ、つまり、ライト処理が実行中（ＢＹ；ビジィ）であることを示し、Ｌは、信号レベルがＬｏｗ、つまり、ライト処理が停止中（ＲＹ；レディ）であることを示す。
【００２２】
ライト信号生成回路９３３は、基準信号生成回路９３２と同じ開始信号を受けて、メモリセル部９１２の一部の記憶領域にデータをライトするライト時間を示す信号（以下、ライト信号と称する）を出力する。例えば、ライト信号生成回路９３３は、開始信号を受けて信号レベルがＨｉｇｈとなり、完了信号を受けて信号レベルがＬｏｗとなるライト信号を出力する。
【００２３】
比較回路９３４は、基準信号とライト信号とを受けて、基準信号とライト信号とを比較し、基準信号と比較してライト信号が長いか短いかを判定する。例えば、比較回路９３４は、開始信号を受けてから基準時間の経過後までの基準信号と、開始信号を受けてから完了信号を受けるまでのライト信号とを比較する。比較回路９３４は、開始信号を受けてから基準時間の経過後に基準信号レベルがＨｉｇｈからＬоｗになったタイミングで、ライト信号の信号レベルがＨｉｇｈであるか、Ｌｏｗであるかを検出することで、基準信号と比較してライト信号が長いか短いかを判定する。比較回路９３４は、このタイミングでライト信号の信号レベルがＬｏｗである場合、基準時間よりもライト時間が短いと判定し、正常信号を出力する。一方、比較回路９３４は、このタイミングでライト信号の信号レベルがＨｉｇｈである場合、基準時間よりもライト時間が長いと判定し、警告信号を出力する。比較回路９３４は、例えば、ラッチ回路、又はＡＮＤ回路等である。
【００２４】
図３は、本実施形態に係るメモリセル部９１２に対するデータのライト速度を判定する構成の一例を示す図である。  
図３に示すように、判定回路９３０において、メモリセル部９１２の一部の記憶領域へのデータのライト処理が開始されたときに、基準信号生成回路９３２とライト信号生成回路９３３とは、制御回路９２５を介して状態検出回路９２８から同じタイミングで開始信号としてＢＹ信号を受ける。ＢＹ信号を受けたときに、基準信号生成回路９３２及びライト信号生成回路９３３は、それぞれ、基準信号及びライト信号、例えば、信号レベルがＨｉｇｈの基準信号及びライト信号を比較回路９３４に出力する。基準信号生成回路９３２は、ＢＹ信号を受けた時から基準時間の経過後に、信号レベルがＬｏｗの基準信号を比較回路９３４に出力する。メモリセル部９１２の一部の記憶領域へのデータのライト処理が完了したときに、ライト信号生成回路９３３は、制御回路９２５を介して状態検出回路９２８から完了信号としてＲＹ信号を受ける。ＲＹ信号を受けたときに、ライト信号生成回路９３３は、信号レベルがＬｏｗのライト信号を比較回路９３４に出力する。比較回路９３４は、基準信号の信号レベルがＨｉｇｈからＬｏｗになったタイミングで、ライト信号の信号レベルがＨｉｇｈであるか、Ｌｏｗであるかを検出し、基準信号と比較してライト信号が長いか短いかを判定する。比較回路９３４は、このタイミングでライト信号の信号レベルがＬｏｗである場合、ステータスレジスタ９２４に正常信号を出力する。一方、比較回路９３４は、このタイミングでライト信号の信号レベルがＨｉｇｈである場合、ステータスレジスタ９２４に警告信号を出力する。ステータスレジスタ９２４は、比較回路９３４から受けた信号に応じて、データをライトしたメモリセル部９１２の一部の記憶領域に対応するステータスに、この一部の記憶領域の使用が可能か不可能かを示すステータスビットを記憶する。
【００２５】
図４は、基準信号とライト信号とのタイミングチャートの一例を示す図である。図４（ａ）は、基準信号の信号レベルがＨｉｇｈからＬｏｗになったタイミングでライト信号の信号レベルがＬｏｗである場合のタイミングチャートの一例を示す図であり、図４（ｂ）は、基準信号の信号レベルがＨｉｇｈからＬｏｗになったタイミングでライト信号の信号レベルがＨｉｇｈである場合のタイミングチャートの一例を示す図である。図４（ａ）および図４（ｂ）には、基準信号（閾値）とライト信号（ライト時間）とをそれぞれ示している。図４（ａ）及び図４（ｂ）において、Ｔｓ０は、基準信号生成回路９３２及びライト信号生成回路９３３が開始信号、例えば、ＢＹ信号を受けたタイミングを示し、Ｔｔ１は、基準信号の信号レベルがＨｉｇｈからＬｏｗになるタイミングを示す。図４（ａ）において、Ｔｅ１は、ライト信号生成回路９３３が完了信号、例えば、ＲＹ信号を受けたタイミングを示している。図４（ｂ）において、Ｔｅ２は、ライト信号生成回路９３３が完了信号、例えば、ＲＹ信号を受けたタイミングを示している。
【００２６】
図４（ａ）及び図４（ｂ）において、基準信号生成回路９３２が制御回路９２５を介して状態検出回路９２８からＢＹ信号を受けたとき、例えば、タイミングＴｓ０で、基準信号の信号レベルは、ＬｏｗからＨｉｇｈになる。基準時間（＝Ｔｔ１−Ｔｓ０）の経過後に、例えば、タイミングＴｔ１で、基準信号の信号レベルは、ＨｉｇｈからＬｏｗになる。
【００２７】
図４（ａ）において、ライト信号生成回路９３３が制御回路９２５を介して状態検出回路９２８からＢＹ信号を受けたとき、例えば、タイミングＴｓ０で、ライト信号の信号レベルは、ＬｏｗからＨｉｇｈになる。ライト信号生成回路９３３が制御回路９２５を介して状態検出回路９２８からＲＹ信号を受けたとき、例えば、タイミングＴｅ１で、ライト信号の信号レベルは、ＨｉｇｈからＬｏｗになる。図４（ａ）に示す場合、比較回路９３４は、基準信号生成回路９３２からの基準信号とライト信号生成回路９３３からのライト信号とを受けて、タイミングＴｔ１でライト信号の信号レベルがＬｏｗであることを検出する。比較回路９３４は、正常信号をステータスレジスタ９２４に出力する。ステータスレジスタ９２４は、正常信号を比較回路９３４から受けて、データをライトしたメモリセル部９１２の一部の記憶領域に対応するステータスに、この一部の記憶領域の使用が可能であることを示すステータスビット（フラグデータ）、例えば、０を記憶する。
【００２８】
一方、図４（ｂ）において、ライト信号生成回路９３３が制御回路９２５を介して状態検出回路９２８からＢＹ信号を受けたとき、例えば、タイミングＴｓ０で、ライト信号の信号レベルは、ＬｏｗからＨｉｇｈになる。ライト信号生成回路９３３が制御回路９２５を介して状態検出回路９２８からＲＹ信号を受けたとき、例えば、タイミングＴｅ２で、ライト信号の信号レベルは、ＨｉｇｈからＬｏｗになる。図４（ｂ）に示す場合、比較回路９３４は、基準信号生成回路９３２からの基準信号とライト信号生成回路９３３からのライト信号とを受けて、タイミングＴｔ１でライト信号の信号レベルがＨｉｇｈであることを検出する。比較回路９３４は、警告信号をステータスレジスタ９２４に出力する。ステータスレジスタ９２４は、警告信号を比較回路９３４から受けて、データをライトしたメモリセル部９１２の一部の記憶領域に対応するステータスに、この一部の記憶領域の使用が不可能であることを示すステータスビット、例えば、１を記憶する。
【００２９】
図５は、メモリセル部９１２の１つの記憶領域へのライト回数に対するライト速度の一例を示す図である。図５において、縦軸は、１ページ分の記憶領域へのデータのライト時間（Time Page Program : TPP）（μＳ）、つまり、１ページ分の記憶領域へのデータのライト速度を示し、横軸は、この１ページ分の記憶領域へのライト回数を示している。図５には、メモリセル部９１２の複数の記憶領域での測定結果が重ね書きされている。図５には、一例として、１ページ分の記憶領域への１ページ分のデータのライトが許容できる最大の時間で完了するライト速度の限界値ＶｔＮと、１ページ分の記憶領域への１ページ分のデータのライトが基準時間で完了するライト速度の基準速度Ｖｔ１とを示している。つまり、限界値ＶｔＮは、１ページ分のデータをメモリセル部９１２の一部の記憶領域にライトできないエラーが生じる閾値である。基準速度Ｖｔ１は、限界値ＶｔＮよりも小さい値である。したがって、基準時間は、許容できる最大の時間よりも短い時間である。
【００３０】
メモリセル部９１２の一部の記憶領域へのデータのライト、およびイレーズが何度も繰り返し実行されると、メモリセル部９１２のメモリセルが疲弊する。図５に示すように、メモリセル部９１２の一部の記憶領域へのデータのライト回数に比例して、この一部の記憶領域へのデータのライト速度が遅くなる。ライト速度が限界値ＶｔＮよりも遅くなった場合、不揮発性メモリ９０は、メモリセル部９１２の一部の記憶領域へのデータのライト速度が遅いために、一定の時間内にこの記憶領域にライト可能な容量のデータをライトできないエラーを生じ得る。このようなエラーを防止するために、基準速度Ｖｔ１が限界値ＶｔＮよりも速い（小さい）値に設定されている。不揮発性メモリ９０は、メモリセル部９１２の一部の記憶領域へのデータのライト速度（ライト時間）が基準速度Ｖｔ１（基準時間）に達したかどうかを判定することで、この記憶領域が疲弊していることをライト速度が限界値ＶｔＮに達する前に警告できる。
【００３１】
図１において、システムコントローラ（コントローラ）１３０は、例えば、複数の素子が単一チップに集積されたSystem-on-a-Chip(SoC)と称される大規模集積回路（ＬＳＩ）を用いて実現される。システムコントローラ１３０は、リード／ライト（Ｒ／Ｗ）チャネル４０と、ハードディスクコントローラ（ＨＤＣ）５０と、マイクロプロセッサ（ＭＰＵ）６０とを含む。
【００３２】
Ｒ／Ｗチャネル４０は、リードデータ及びライトデータの信号処理を実行する。Ｒ／Ｗチャネル４０は、リードデータの信号品質を測定する回路、又は機能を有している。  
ＨＤＣ５０は、ＭＰＵ６０からの指示に応じて、ホストシステム１００とＲ／Ｗチャネル４０との間のデータ転送を制御する。  
ＭＰＵ６０は、記憶装置１の各部を制御するメインコントローラである。ＭＰＵ６０は、ドライバＩＣ２０を介してＶＣＭ１４を制御し、ヘッド１５の位置決めを行なうサーボ制御を実行する。また、ＭＰＵ６０は、ディスク１０へのデータのライト動作を制御すると共に、ホスト１００から転送されるライトデータの保存先を選択する。さらに、ＭＰＵ６０は、主電源に異常が生じた場合、バックアップ電源２１により一時的に供給される電力を受けて、揮発データの退避動作を実行する。ここで、揮発データの退避動作とは、例えば、ヘッド１５をディスク１０から離れた位置に退避させる動作や、パワーロス保護（Power Loss Protection：ＰＬＰ）機能によるデータの退避動作を含む。ＭＰＵ６０は、主電源が復旧した場合に、データの復元動作を実行する。
【００３３】
ＭＰＵ６０は、領域管理部６１と、検出部６２と、リード／ライト制御部６３と、を含む。ＭＰＵ６０は、これら各部の処理をファームウェア上で実行する。  
領域管理部６１は、主電源に異常が生じた場合にバッファメモリ８０に格納されたデータを退避するための退避領域９１４を、不揮発性メモリ９０のメモリセル部９１２の一部の記憶領域に設定する。領域管理部６１は、設定した退避領域９１４のアドレス等を、不揮発性メモリ９０の記憶領域の管理情報（以下、領域管理情報と称する）として管理する。
【００３４】
検出部６２は、不揮発性メモリ９０のメモリセル部９１２の一部の記憶領域にデータをライトするライトコマンドをホスト１００から受けたときに、不揮発性メモリ９０からこの記憶領域のステータスをリードし、ステータスに警告データが含まれているかどうかを検出する。警告データが含まれている場合、検出部６２は、領域管理情報にフラグを設定すると共に、この記憶領域を使用禁止にする。なお、検出部６２は、主電源に異常が生じた場合に退避領域９１４にデータを退避するときにのみ、不揮発性メモリ９０から退避領域９１４のステータスをリードし、ステータスに警告データが含まれているかどうかを検出するように構成されていてもよい。また、検出部６２は、主電源に異常が生じていない通常の動作時に、不揮発性メモリ９０からメモリセル部９１２の記憶領域のステータスをリードし、ステータスに警告データが含まれているかどうかを予め検出するように構成されていてもよい。
【００３５】
リード／ライト制御部６３は、コマンドに応じて、ホスト１００と記憶装置１の各部とのデータの送受信に関する制御を実行する。  
リード／ライト制御部６３は、主電源に異常が生じた場合、バッファメモリ８０に格納されライト処理が完了していないライトデータ（以下、未ライトデータと称する）および未ライトデータの管理情報を不揮発性メモリ９０の退避領域９１４に退避する。リード／ライト制御部６３は、主電源が復旧した際に、退避した未ライトデータの管理情報に基づいて、退避領域９１４に退避した未ライトデータをバッファメモリ８０に復元する。なお、主電源に異常が生じた際に退避領域９１４の容量に空きがない場合、リード／ライト制御部６３は、メモリセル部９１２に新たに退避領域を設定して未ライトデータを新たな退避領域に退避してもよい。また、この場合に、リード／ライト制御部６３は、メモリセル部９１２の退避領域９１４以外の記憶領域に記憶してもよい。
【００３６】
また、リード／ライト制御部６３は、ホスト１００から転送されるデータやディスク１０にライトされたデータ等を不揮発性メモリ９０のメモリセル部９１２の一部の記憶領域にライトするときに、領域管理情報をリードして、不揮発性メモリ９０のメモリセル部９１２の一部の記憶領域に対応する領域管理情報にフラグが設定されているかどうかを判定する。フラグが設定されている場合、リード／ライト制御部６３は、フラグが設定された記憶領域にデータをライトせずに、フラグが設定されていない他の記憶領域にデータをライトする。なお、リード／ライト制御部６３は、不揮発性メモリ９０の退避領域９１４にデータを退避するときにのみ、領域管理情報をリードして、フラグが設定されているかどうかを判定するように構成されていてもよい。
【００３７】
上記のように構成された記憶装置１は、ホスト１００から転送されるライトデータを受けた時点で、実際にはライト処理が完了していなくとも、ライトコマンドに対応するライト処理の完了をホスト１００に通知し、未ライトデータを管理する機能を備えている。このような、未ライトデータを管理する機能は、例えば、Persistent Write Cache（ＰＷＣ）機能と称される場合もある。記憶装置１は、主電源に異常が生じた場合に、この未ライトデータを管理する機能によって、揮発性の記憶媒体、例えば、バッファメモリ８０に一時的にライトされている未ライトデータ及び未ライトデータの管理情報を不揮発性メモリ９０に退避することができる。
【００３８】
例えば、バッファメモリ８０からディスク１０へライトデータのライト処理中に主電源の異常が生じた場合、記憶装置１は、ＰＬＰ機能により供給される電力を使用して、バッファメモリ８０に一時的にライトされた未ライトデータおよび未ライトデータの管理情報を不揮発性メモリ９０の退避領域９１４の一部の記憶領域に退避する。記憶装置１は、退避領域９１４の一部の記憶領域にデータを退避（ライト）する際に、この一部の記憶領域に対応するステータスをリードする。このステータスに警告データが含まれている場合には、記憶装置１は、この一部の記憶領域に対応する領域管理情報にフラグを設定する。フラグを設定した後に、再び主電源に異常が生じた場合、記憶装置１は、この領域管理情報を参照して、フラグが設定されている退避領域９１４の一部の記憶領域にデータを退避せずに、フラグが設定されていない退避領域９１４の他の記憶領域にデータを退避する。記憶装置１は、主電源が復旧した際に、退避領域９１４の一部の記憶領域に退避した未ライトデータをバッファメモリ８０に復元する。このように、記憶装置１は、予期せず主電源に異常が生じた場合、ＰＬＰ機能により、所定のデータ容量、例えば、退避領域９１４のデータ容量の範囲で、未ライトデータを保証できる。
【００３９】
図６は、本実施形態の記憶装置１の不揮発性メモリ９０へのライト処理の一例を示すフローチャートである。  
ＭＰＵ６０は、ホスト１００からのライトコマンドを受けたことに応じて、ＨＤＣ５０を介して、不揮発性メモリ９０におけるメモリセル部９１２の一部の記憶領域のステータスをリードする（Ｂ６０１）。ＭＰＵ６０は、この記憶領域のステータスに、警告データが含まれているかどうかを判定する（Ｂ６０２）。
【００４０】
警告データが含まれていると判定した場合（Ｂ６０２のＹＥＳ）、ＭＰＵ６０は、メモリセル部９１２の一部の記憶領域に対応する領域管理情報にフラグを設定し、この記憶領域を使用禁止にする（Ｂ６０３）。警告データが含まれていないと判定した場合（Ｂ６０２のＮＯ）、ＭＰＵ６０は、ＨＤＣ５０を介して、この記憶領域にライトデータをライトする（Ｂ６０４）。
【００４１】
ＭＰＵ６０は、他に不揮発性メモリ９０にライトするライトデータがあるかどうかを判定する（Ｂ６０５）。他のライトデータがあると判定した場合（Ｂ６０５のＹＥＳ）、ＭＰＵ６０は、再びＢ６０１処理を実行する。他のライトデータがないと判定した場合（Ｂ６０５のＮＯ）、ＭＰＵ６０は、ライト処理を終了する。
【００４２】
本実施形態によれば、記憶装置１は、不揮発性メモリ９０のメモリセル部９１２の一部の記憶領域へのデータのライト速度を判定する判定回路９３０を有する不揮発性メモリ９０を備えている。記憶装置１は、不揮発性メモリ９０のメモリセル部９１２の一部の記憶領域へのライト速度が遅いと判定された場合に、この記憶領域へデータをライトすることを禁止することができる。このため、記憶装置１は、主電源に異常が生じた場合などのライト処理において生じ得るエラーを回避できる。例えば、記憶装置１は、メモリセル部９１２の一部の記憶領域へのデータのライト速度が遅いために、一定の時間内にこの記憶領域にライト可能な容量のデータをライトできないようなエラーを回避できる。その結果、本実施形態の記憶装置１は、データ保障の信頼性を高めることができる。また、記憶装置１は、不揮発性メモリ９０に判定回路９３０を備えているために、ファームウェアで処理することなく、不揮発性メモリ９０のメモリセル部９１２の一部の記憶領域へのデータのライト速度を判定できる。さらに、記憶装置１は、不揮発性メモリ９０に判定回路９３０を備えているために、不揮発性メモリ９０のメモリセル部９１２の一部の記憶領域へのデータのライト速度を精度良く測定できる。
【００４３】
なお、記憶装置１は、主電源の異常が生じた時にメモリセル部９１２の記憶領域のステータスをリードするとしたが、主電源に異常が生じていない通常の動作時にメモリセル部９１２の記憶領域のステータスを予めリードしてもよい。ステータスに警告データが含まれている場合には、記憶装置１は、ステータスに警告データを含むメモリセル部９１２の一部の記憶領域に対応する領域管理情報にフラグを設定する。フラグを設定した後に、主電源に異常が生じた場合、記憶装置１は、この領域管理情報を参照して、フラグが設定されている退避領域９１４の一部の記憶領域にデータを退避せずに、フラグが設定されていない退避領域９１４の他の記憶領域にデータを退避する。
【００４４】
図７は、本実施形態に係る変形例に関する記憶装置１が備える不揮発性メモリ９０の記憶領域の使用が可能か不可能かの判定処理の一例を示すフローチャートである。図７のフローチャートにおいて、図６と同等の処理については、同一の参照符号を付し、その詳細な説明を簡略化又は省略する。ＭＰＵ６０は、通常の動作時、例えば、起動時やアイドル時等にＨＤＣ５０を介して、不揮発性メモリ９０におけるメモリセル部９１２の一部の記憶領域のステータスをリードする（Ｂ６０１）。ＭＰＵ６０は、この記憶領域のステータスに、警告データが含まれているかどうかを判定する（Ｂ６０２）。警告データが含まれていないと判定した場合（Ｂ６０２のＮＯ）、ＭＰＵ６０は、不揮発性メモリ９０の他の記憶領域があるかどうかを判定する（Ｂ７０１）。他の記憶領域があると判定した場合（Ｂ７０１のＹＥＳ）、ＭＰＵ６０は、再びＢ６０１処理を実行する。他の記憶領域がないと判定した場合（Ｂ７０１のＮＯ）、ＭＰＵ６０は、ライト処理を終了する。このように通常の動作時にメモリセル部９１２の記憶領域のステータスを予めリードする構成であっても、上記の記憶装置１と同じ効果が得られる。
【００４５】
次に他の実施形態に係る記憶装置、メモリＩＣ、および、メモリＩＣへのライト処理方法について説明する。他の実施形態において、前述の実施形態と同一の部分には同一の参照符号を付してその詳細な説明を省略する。  
（第２実施形態）  
記憶装置は、前述の実施形態で示した磁気ディスク装置に限らず、他の記憶装置、例えば、solid state drive(ＳＳＤ)等の不揮発性の半導体メモリを主たる記憶部とする記憶装置にも適用できる。
【００４６】
図８は、第２実施形態に関する記憶装置２の構成を示すブロック図である。  
本第２実施形態に係る記憶装置２は、例えば、ＳＳＤである。記憶装置２は、インターフェースコントローラ２１０と、揮発性メモリ７０と、バッファメモリ８０と、不揮発性メモリ（以下、第１の不揮発性メモリと称する）９０と、ＳＳＤコントローラ（ＳＳＤＣ）２２０と、第２の不揮発性メモリ２３０と、電源回路２４０と、バックアップ電源２５０と、を備える。また、記憶装置２は、ホスト１００と、外部電源３００とに接続される。第１の不揮発性メモリ９０は、例えば、ＮＯＲ型メモリである。第２の不揮発性メモリ２３０は、例えば、ＮＡＮＤ型メモリである。
【００４７】
インターフェースコントローラ２１０は、ホスト１００と、記憶装置２内の各部とのインターフェース処理を実行する。
【００４８】
ＳＳＤＣ（コントローラ）２２０は、記憶装置２の各種動作を処理する。ＳＳＤＣ２２０は、ホスト１００からのライト、リード等のコマンドを受信し、これらのコマンドに応じて、第２の不揮発性メモリ２３０にライト処理やリード処理を実行する。ＳＳＤＣ２２０は、領域管理部６１、検出部６２と、リード／ライト制御部６３と、を備える。つまり、ＳＳＤＣ２２０は、第１実施形態のＭＰＵ６０及びＨＤＣ５０を含むコントローラ１３０と同等の動作を実行することができる。また、ＳＳＤＣ２２０は、主電源に異常が生じた場合、バックアップ電源２５０により供給される電力を受けて、ＰＬＰ機能を含む揮発データの退避動作を実行する。
【００４９】
電源回路２４０は、外部電源３００から供給される電圧に基づいて、記憶装置２の各部を動作させるための電圧を出力する。バックアップ電源２５０は、電源回路２４０と外部電源３００との間に接続されている。バックアップ電源２５０は、記憶装置２が通常の動作をしている場合に、主電源である外部電源３００から供給される電力の一部を充電し、この外部電源３００に異常が生じた場合に、記憶装置２の揮発データの退避動作を維持するために必要な電力を供給する。バックアップ電源２５０は、例えば、キャパシタを含む。
【００５０】
上記のように構成された記憶装置２は、未ライトデータを管理する機能を備えている。記憶装置２は、例えば、バッファメモリ８０から第２の不揮発性メモリ２３０にライトデータをライト処理中に外部電源３００の異常が生じた場合、バックアップ電源２５０を用いたＰＬＰ機能により供給される電力を使用して、バッファメモリ８０に格納された未ライトデータ及び未ライトデータの管理情報を第１の不揮発性メモリ９０の退避領域９１４に退避する。記憶装置２は、第１の不揮発性メモリ９０のメモリセル部９１２の一部の記憶領域にデータを退避する際に、このブロックに対応するステータスをリードする。このステータスに警告データが含まれている場合には、記憶装置２は、このブロックに対応する領域管理情報にフラグを設定する。フラグを設定した後に、再び外部電源３００に異常が生じた場合、記憶装置２は、この領域管理情報を参照して、フラグが設定されている退避領域９１４の一部の記憶領域にデータを退避せずに、フラグが設定されていない退避領域９１４の他の記憶領域にデータを退避する。記憶装置２は、主電源が復旧した際に、退避領域９１４の一部の記憶領域に退避した未ライトデータをバッファメモリ８０に復元する。このように、記憶装置２は、予期せず主電源に異常が生じた場合、ＰＬＰ機能により、所定のデータ容量、例えば、退避領域９１４のデータ容量の範囲で、未ライトデータを保証できる。
【００５１】
本第２実施形態に係る記憶装置２であっても、主電源に異常が生じた場合などの高速なライト処理を求められる場合に生じ得るエラーを回避できる。その結果、本第２実施形態の記憶装置２は、信頼性が高められる。
【００５２】
なお、前述した第１実施形態及び変形例のＨＤＤおよび第２実施形態のＳＳＤは、一例であり、他の記憶装置であってもよい。
【００５３】
いくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５４】
１…磁気ディスク装置（記憶装置）、２…記憶装置、１０…ディスク、１０ａ…記憶領域、１０ｂ…システムエリア、１２…スピンドルモータ（ＳＰＭ）、１３…アーム、１４…ボイスコイルモータ（ＶＣＭ）、１５…ヘッド、１５Ｗ…ライトヘッド（記録ヘッド）、１５Ｒ…リードヘッド（再生ヘッド）、２０…ドライバＩＣ、２１…バックアップ電源、３０…ヘッドアンプＩＣ、４０…Ｒ／Ｗチャネル、５０…ハードディスクコントローラ（ＨＤＣ）、６０…マイクロプロセッサ（ＭＰＵ）、７０…揮発性メモリ、８０…バッファメモリ、９０…不揮発性メモリ（第１の不揮発性メモリ）、１００…ホストシステム、１３０…システムコントローラ、２３０…第２の不揮発性メモリ、９３０…判定回路。
【図１】
2018032323.tif 000003
【図２】
2018032323.tif 000004
【図３】
2018032323.tif 000005
【図４】
2018032323.tif 000006
【図５】
2018032323.tif 000007
【図６】
2018032323.tif 000008
【図７】
2018032323.tif 000009
【図８】
2018032323.tif 000010