(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023139460
(43)【公開日】2023-10-04
(54)【発明の名称】磁気ディスク装置
(51)【国際特許分類】
G06F 3/06 20060101AFI20230927BHJP
【FI】
G06F3/06 304F
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022045009
(22)【出願日】2022-03-22
(71)【出願人】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(71)【出願人】
【識別番号】317011920
【氏名又は名称】東芝デバイス&ストレージ株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】曽我部 敬悟
(57)【要約】
【課題】信頼性が高い磁気ディスク装置を提供すること。
【解決手段】磁気ディスク装置は、磁気ディスクと、フラッシュメモリと、揮発性メモリと、コントローラと、を備える。フラッシュメモリは、複数のメモリセルトランジスタを備える。複数のメモリセルトランジスタのしきい値電圧は第1値に対応する第1区分または第2値に対応する前記第1区分よりも低電圧側の第2区分に設定される。揮発性メモリに保持されている第1データである第2データが第1値の数が第2値の数より多い第3データに該当する場合、電源断が発生したとき、コントローラは、第2データをビット反転してフラッシュメモリにライトする。第2データが第1値の数が第2値の数より少ない第4データに該当する場合、電源断が発生したとき、コントローラは、第2データをビット反転せずに前記フラッシュメモリにライトする。
【選択図】
図8
【特許請求の範囲】
【請求項1】
ホスト装置に接続可能な磁気ディスク装置であって、
磁気ディスクと、
複数のメモリセルトランジスタを備え、前記複数のメモリセルトランジスタのしきい値電圧が第1値に対応する第1区分または第2値に対応する前記第1区分よりも低電圧側の第2区分に設定されるフラッシュメモリと、
前記ホスト装置から受信したデータである第1データを前記磁気ディスクにライトするまで保持する揮発性メモリと、
前記揮発性メモリに保持されている前記第1データである第2データが前記第1値の数が前記第2値の数より多い第3データに該当する場合、電源断が発生したとき、前記第2データをビット反転して前記フラッシュメモリにライトし、
前記第2データが前記第1値の数が前記第2値の数より少ない第4データに該当する場合、電源断が発生したとき、前記第2データをビット反転せずに前記フラッシュメモリにライトする、
コントローラと、
を備える磁気ディスク装置。
【請求項2】
前記コントローラは、
前記フラッシュメモリにライトされた前記第2データである第5データが前記第3データに該当する場合、前記電源断の後に電力供給が再開されたとき、前記第5データをビット反転して前記磁気ディスクにライトし、
前記第5データが前記第4データに該当する場合、前記電源断の後に前記電力供給が再開されたとき、前記第5データをビット反転せずに前記磁気ディスクにライトする、
請求項1に記載の磁気ディスク装置。
【請求項3】
前記コントローラは、
前記第2データを前記フラッシュメモリにライトする際に、前記第2データが前記第3データに該当するか前記第4データに該当するかを示す第1情報を前記フラッシュメモリにライトし、
前記電源断の後に前記電力供給が再開されたとき、前記フラッシュメモリにライトされた前記第1情報に基づいて前記第5データをビット反転するか否かを判定する、
請求項2に記載の磁気ディスク装置。
【請求項4】
前記コントローラは、前記第1データを前記揮発性メモリにライトする際に、前記第1データに含まれる前記第1値の数および前記第2値の数をカウントし、カウント結果に基づいて前記第1データが前記第3データに該当するか前記第4データに該当するかを特定し、特定結果に基づいて前記第1情報を生成する、
請求項3に記載の磁気ディスク装置。
【請求項5】
前記コントローラは、
前記電源断が発生したとき、前記第2データが前記第1値および前記第2値のうちの何れか一方のみによって構成される第6データに該当する場合、前記第2データを前記フラッシュメモリにライトせずに、前記第2データが前記第6データに概要することを示す第2情報を前記フラッシュメモリにライトし、
前記電源断の後に前記電力供給が再開されたとき、前記フラッシュメモリに前記第2データが前記第3データに該当することを示す前記第1情報と前記第2情報とがライトされている場合、前記第1値のみによって構成される第7データを生成し、前記第7データを前記磁気ディスクにライトし、
前記電源断の後に前記電力供給が再開されたとき、前記フラッシュメモリに前記第2データが前記第4データに該当することを示す前記第1情報と前記第2情報とがライトされている場合、前記第2値のみによって構成される第8データを生成し、前記第8データを前記磁気ディスクにライトする、
請求項3または請求項4に記載の磁気ディスク装置。
【請求項6】
前記コントローラは、前記第1データを前記揮発性メモリにライトする際に、前記第1データに含まれる前記第1値の数および前記第2値の数をカウントし、カウント結果に基づいて前記第1データが前記第6データに該当するか否かを特定し、特定結果に基づいて前記第2情報を生成する、
請求項5に記載の磁気ディスク装置。
【請求項7】
前記第1データはセクタ単位のデータである、
請求項1から請求項6の何れか一項に記載の磁気ディスク装置。
【発明の詳細な説明】
【技術分野】
【0001】
本実施形態は、磁気ディスク装置に関する。
【背景技術】
【0002】
従来、磁気ディスク装置においては、ホストから受信したユーザデータは、いったん揮発性メモリに格納され、その後、揮発性メモリに格納されたユーザデータが磁気ディスクにライトされる。
【0003】
また、従来の磁気ディスク装置は、パワーロスプロテクションの機能を有する場合がある。パワーロスプロテクションによれば、電源断(power loss)が起きたときに、揮発性メモリ内のまだ磁気ディスクにライトされていないユーザデータがバックアップ電力によってフラッシュメモリに退避(save)される。これによって、揮発性メモリ内のまだ磁気ディスクにライトされていないユーザデータが磁気ディスク装置から失われることが防止される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願公開第2010/0138594号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来の磁気ディスク装置に関しては、信頼性の点でさらなる工夫の余地がある。
【0006】
一つの実施形態は、信頼性が高い磁気ディスク装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
一つの実施形態によれば、磁気ディスク装置はホスト装置に接続可能である。磁気ディスク装置は、磁気ディスクと、フラッシュメモリと、揮発性メモリと、コントローラと、を備える。フラッシュメモリは、複数のメモリセルトランジスタを備える。複数のメモリセルトランジスタのしきい値電圧は第1値に対応する第1区分または第2値に対応する前記第1区分よりも低電圧側の第2区分に設定される。揮発性メモリは、ホスト装置から受信したデータである第1データを磁気ディスクにライトされるまで保持する。揮発性メモリに保持されている第1データである第2データが第1値の数が第2値の数より多い第3データに該当する場合、電源断が発生したとき、コントローラは、第2データをビット反転してフラッシュメモリにライトする。第2データが第1値の数が第2値の数より少ない第4データに該当する場合、電源断が発生したとき、コントローラは、第2データをビット反転せずに前記フラッシュメモリにライトする。
【図面の簡単な説明】
【0008】
【
図1】
図1は、実施形態にかかるディスク装置の構成の一例を示すブロック図である。
【
図2】
図2は、実施形態にかかるDRAMに格納される各種情報の例を説明するための模式的な図である。
【
図3】
図3は、実施形態にかかるビット情報テーブルのデータ構造の一例を示す模式的な図である。
【
図4】
図4は、実施形態にかかるSoCによって実行されるビット反転の処理について説明するための模式的な図である。
【
図5】
図5は、ホスト装置からユーザデータを受信した際の実施形態にかかる磁気ディスク装置の動作の一例を示すフローチャートである。
【
図6】
図6は、バッファエリアに格納されたセクタデータを磁気ディスクにライトする実施形態にかかる磁気ディスク装置の動作の一例を示すフローチャートである。
【
図7】
図7は、電源断が起きた時の実施形態にかかる電源制御回路の動作を説明するための図である。
【
図8】
図8は、実施形態にかかる磁気ディスク装置におけるバックアップの動作の一例を示すフローチャートである。
【
図9】
図9は、電源断の後に電力供給が再開されたときの実施形態にかかる磁気ディスク装置の動作の一例を示すフローチャートである。
【発明を実施するための形態】
【0009】
パワーロスプロテクションにおけるユーザデータの退避先とされるフラッシュメモリとしては、例えば、NOR型のフラッシュメモリまたはNAND型のフラッシュメモリなどが使用される。
【0010】
これらのフラッシュメモリは複数のメモリセルトランジスタを備える。そして、メモリセルトランジスタのしきい値電圧が複数の区分のうちのデータに対応する区分に設定されることで、データがメモリセルトランジスタに記憶される。
【0011】
例えばSLC(Single Level Cell)と称されるタイプのフラッシュメモリでは、1つのメモリセルトランジスタは2値のデータを格納可能である。2値のデータのうちの一方の値(第1値と表記する)は、高電圧側の区分に対応し、2値のデータのうちの他方の値(第2値と表記する)は、低電圧側の区分に対応する。フラッシュメモリに対するデータのイレースの際には、メモリセルトランジスタのしきい値電圧は停電側の区分に設定される。フラッシュメモリに対するデータのライトの際には、ライト対象のデータが第1値の場合には、メモリセルトランジスタの電荷蓄積層に電荷がチャージされることによって、メモリセルトランジスタのしきい値電圧は高電圧側の区分まで昇圧される。ライト対象のデータが第2値の場合には、メモリセルトランジスタのしきい値電圧は低電圧側の区分に維持される。フラッシュメモリに対するデータのリードの際には、メモリセルトランジスタのしきい値電圧が高電圧側の区分および低電圧側の区分のうちの区分のいずれに属するかが判定されることによって、メモリセルトランジスタに格納されているデータが第1値であるか第2値であるかが特定される。
【0012】
上記のように構成されたSLCのタイプのフラッシュメモリにおいて、ユーザデータのライトの際には、当該ユーザデータに含まれる第1値(即ち高電圧側の区分に対応する値)の数が多いほど、ライトに要する時間が多く必要になる。
【0013】
パワーロスプロテクションの機能を備えた磁気ディスク装置においては、電源断後には、スピンドルモータにおいて生成される逆起電力または予めキャパシタなどに蓄えられた電力のようなバックアップ電力が、ユーザデータの退避に使用される。このような電源断後に使用できる電力の量は決して多くはなく、ユーザデータの退避を行うことが可能な時間は限られる。その一方で、前述されたSLCのタイプのフラッシュメモリの特性によれば、退避対象のユーザデータに含まれる第1値の数が多い場合、当該退避対象のユーザデータのフラッシュメモリへの格納に要する時間が多くなる。
【0014】
実施形態では、電源断が起きた時、揮発性メモリ内のユーザデータに含まれる第1値の数が当該ユーザデータに含まれる第2値の数より多い場合、コントローラは、当該ユーザデータをビット反転してフラッシュメモリに格納する。電力供給が再開されたとき、コントローラは、フラッシュメモリ内の当該ユーザデータに対してさらにビット反転することによって、当該ユーザデータを退避の前の状態に復元し、復元された当該ユーザデータを磁気ディスクにライトする。
【0015】
また、電源断が起きた時、揮発性メモリ内のユーザデータに含まれる第1値の数が当該ユーザデータに含まれる第2値の数より少ない場合には、コントローラは、当該ユーザデータをビット反転せずにフラッシュメモリに格納する。電力供給が再開されたとき、コントローラは、フラッシュメモリ内の当該ユーザデータをビット反転せずに磁気ディスクにライトする。
【0016】
上記構成によって、フラッシュメモリに格納されるトータルの第1値の数を抑制し、その結果としてユーザデータの退避に要する時間が短縮される。限られた時間内に確実にユーザデータをフラッシュメモリに退避させることが可能であるので、当該ユーザデータが磁気ディスク装置から失われることを防止でき、磁気ディスク装置の信頼性が向上する。
【0017】
さらに、フラッシュメモリにおいては、第1値をライトする頻度が高いほど、メモリセルトランジスタの電荷蓄積層への電荷のチャージの頻度が高くなる。メモリセルトランジスタの電荷蓄積層への電荷のチャージの頻度が高いほど、メモリセルトランジスタが疲弊する速度が早く、メモリセルトランジスタがデータを保持する能力が早く低下する。メモリセルトランジスタがデータを保持する能力が低下するほど、そのメモリセルトランジスタに格納されたデータが磁気ディスク装置から失われるリスクが高くなる。
【0018】
上記構成の実施形態の磁気ディスク装置によれば、フラッシュメモリに第1値がライトする頻度が抑制されるので、メモリセルトランジスタがデータを保持する能力の低下が抑制される。よって、フラッシュメモリに退避されたユーザデータが失われるリスクが抑制され、磁気ディスク装置の信頼性が向上する。
【0019】
以下に添付図面を参照して、実施形態にかかる磁気ディスク装置を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【0020】
図1は、実施形態にかかるディスク装置の構成の一例を示すブロック図である。磁気ディスク装置1は、ホスト装置HSに接続可能であり、ホスト装置HSの外部記憶装置として機能する。磁気ディスク装置1は、例えば、ハードディスクドライブである。
【0021】
磁気ディスク装置1は、磁気ディスク2、スピンドルモータ(SPM)3、磁気ヘッドMH、アクチュエータアームA、ボイスコイルモータ(VCM)4、SoC(System-on-a-Chip)5、ヘッドIC(Integrated Circuit)6、モータドライバIC7、DRAM(Dynamic Random Access Memory)8、フラッシュメモリ9を有する。SoC5は、HDC(Hard Disc Controller)5a、CPU(Central Processing Unit)5b、およびRWC(Read Write Channel)5cを備える。
【0022】
磁気ディスク2は、各種情報を記録可能な円盤状の記録媒体(例えば、磁気ディスク)である。磁気ディスク2は、SPM3により回転駆動される。
【0023】
図1には1つの磁気ディスク2を具備する磁気ディスク装置1を示されているが、磁気ディスク装置1に具備される磁気ディスク2の数は1に限定されない。複数の磁気ディスク2が1つの磁気ディスク装置1に具備されてもよい。複数の磁気ディスク2が1つの磁気ディスク装置1に具備される場合には、当該複数の磁気ディスク2は一体として回転駆動される。
【0024】
磁気ヘッドMHは、アクチュエータアームAの一方の端に設けられ、磁気ディスク2に対するデータのライトおよびリードを実行する。磁気ヘッドMHは、磁気ディスク2に対してデータをライトするライトヘッドWH、および磁気ディスク2からデータをリードするリードヘッドRHを有する。磁気ヘッドMHは、スライダSL上に支持される。磁気ヘッドMHは、磁気ディスク2の回転によって生じる揚力によって、磁気ディスク2の表面からわずかに浮いた状態を維持しながら、磁気ディスク2の表面に対してダウントラック方向に相対移動する。
【0025】
VCM4は、アクチュエータアームAにおいて、磁気ヘッドMHが設けられた端とは反対側の端に設けられている。VCM4は、軸4aを中心として、アクチュエータアームAを回転駆動させる。これによりVCM4は、磁気ディスク2に対して磁気ヘッドMHをクロストラック方向に相対移動させる。
【0026】
DRAM8は、高速な動作が可能な揮発性メモリである。DRAM8には、ホスト装置HSと磁気ディスク2との間のデータ転送のバッファメモリとして使用されるバッファエリア8aがアロケートされている。特に、バッファエリア8aは、ホスト装置HSから受信したユーザデータのうちのまだ磁気ディスク2にライトされていないユーザデータを保持する。
【0027】
一般に、ホスト装置と磁気ディスク装置との間のデータ転送の速度は、磁気ディスクに対するデータのライトおよびリードの速度よりも早い。高速に動作する揮発性メモリが、ホスト装置と磁気ディスク装置との間のデータ転送のバッファエリアとして使用されることで、ホスト装置と磁気ディスク装置との間のデータ転送の速度と、磁気ディスクに対するデータのライトおよびリードの速度と、の差によるデータの待ちが解消される。
【0028】
なお、バッファエリアとして使用される不揮発性メモリの種類は、DRAMに限定されない。SRAMがバッファエリアとして使用される不揮発性メモリとして適用されてもよい。
【0029】
フラッシュメモリ9は、CPU5bが実行するファームウェアプログラムおよび各種パラメータが不揮発に格納されるメモリである。さらに、フラッシュメモリ9は、電源断の際のユーザデータの退避先として使用される。実施形態では、フラッシュメモリ9のタイプはSLCである。フラッシュメモリ9は、高電圧側の区分には“0”が対応し、低電圧側の区分には“1”が対応するデータコーディングに従って動作する。つまり、“0”は第1値の一例であり、“1”は第2値の一例である。なお、データコーディングはこの例に限定されない。高電圧側の区分には“1”が対応し、低電圧側の区分には“0”が対応するデータコーディングに従って動作するフラッシュメモリであっても適用可能である。
【0030】
ヘッドIC6は、RWC5cから入力されるデータに応じたライト信号(電流)をライトヘッドWHに流すことによって、磁気ディスク2に対してデータのライトを実行する。また、ヘッドIC6は、リードヘッドRHから出力されたリード信号(リードヘッドRHにより磁気ディスク2からリードされたデータ)を増幅して、RWC5cに供給する。
【0031】
SoC5に具備されるRWC5cは、バッファエリア8aに格納されたユーザデータをコード変調して、コード変調されたデータをヘッドIC6に出力する。また、RWC5cは、ヘッドIC6から伝送されてきたデータをコード復調して、コード復調されたユーザデータをバッファエリア8aに出力する。
【0032】
SoC5に具備されるHDC5aは、ホスト装置HSから受信したユーザデータをバッファエリア8aに格納したり、磁気ディスク2からリードされてバッファエリア8aに格納されたユーザデータをホスト装置HSに送信したりする。
【0033】
SoC5に具備されるCPU5bは、ファームウェアプログラムに基づき、磁気ディスク装置1全体の動作を統括的に制御する。
【0034】
なお、SoC5は、実施形態のコントローラの一例である。なお、実施形態のコントローラは、必ずしもSoCとして構成されていなくてもよい。実施形態のコントローラは、2以上のチップによって構成されてもよい。また、実施形態のコントローラは、HDC5a、CPU5b、RWC5cの他の構成要素(例えばDRAM8、フラッシュメモリ9、またはそれ以外の回路)を含み得る。
【0035】
モータドライバIC7は、磁気ディスク装置1が備える各部への電力供給を制御する。また、モータドライバIC7は、VCM4の駆動を制御する。モータドライバIC7は、電源制御回路7aおよびスピンドルモータ制御回路7bを有する。スピンドルモータ制御回路7bは、SPM3の回転を制御する。
【0036】
電源制御回路7aは、ホスト装置HS(外部電源の一例)から供給される電力を受けて、当該電力に基づいて、磁気ディスク装置1の各部を駆動する電力を生成する。電力を生成するとは、例えば、整流、昇圧、または降圧、などの処理を含む。電源制御回路7aは、生成した電力を磁気ディスク装置1の各部に供給する。電源制御回路7aは、供給された電力をそのまま各部に供給してもよい。
【0037】
また、ホスト装置HSからの電力供給が突然途絶えた場合(即ち電源断が起きた場合)、電源制御回路7aは、電源断を検出する。電源制御回路7aは、電源断を検出した場合、SPM3において発生する逆起電力を、スピンドルモータ制御回路7bを介して受ける。そして、電源制御回路7aは、SPM3から受けた逆起電力に基づいて各部を駆動する電力を生成し、生成した電力を磁気ディスク装置1の各部へ供給する。
【0038】
このように、電源制御回路7aは、SPM3の停止時に発生する逆起電力に基づいて各部に供給する電力を生成する。よって、磁気ディスク装置1は、電源断の後のしばらくの期間、逆起電力を利用して動作することができる。この期間に、磁気ディスク装置1では、パワーロスプロテクションが実行される。
【0039】
パワーロスプロテクションでは、バッファエリア8a内のユーザデータがフラッシュメモリ9に退避される。退避は、転送、コピー、または格納と換言され得る。退避は、圧縮、符号化、フォーマット変換、など、データを加工するプロセスを含んでいてもよい。以降、バッファエリア8a内のユーザデータをフラッシュメモリ9に退避する処理を、バックアップと表記することがある。
【0040】
電源制御回路7aは、電源断を検出した場合、バックアップイネーブル(Backup Enable)信号をアサートする。バックアップイネーブル信号は、バックアップが実行可能である旨を示す信号である。バックアップイネーブル信号は、電源制御回路7aからSoC5に供給される。電源制御回路7aは、バックアップイネーブル信号をアサートした後、各部への供給電圧が所定のしきい値を下回ると、バックアップイネーブル信号をネゲートする。
【0041】
上記のしきい値は、SoC5がバックアップを実行するために要する電圧値よりも大きい限り、任意に設定され得る。例えば、SoC5がバックアップを実行するために要する電圧値が、上記しきい値として設定されてもよい。SoC5がバックアップを実行するために要する電圧値に所定のマージンを加算した値が上記しきい値として設定されてもよい。
【0042】
CPU5bは、バックアップイネーブル信号のアサートに応じてバックアップの制御を開始する。ホスト装置HSから電力の供給を受けている間には、バックアップイネーブル信号はネゲートされた状態に維持されている。その場合、CPU5bは、SoC5を制御することによって通常動作の制御を実行する。通常動作の制御は、ホスト装置HSとの間のコマンドおよびデータの送受信、および、磁気ディスク2に対するアクセス(ライトおよびリード)を含む。バックアップイネーブル信号がアサートされると、CPU5bは、通常動作の制御を停止して、バックアップの開始を各部に指示する。
【0043】
図2は、実施形態にかかるDRAM8に格納される各種情報の例を説明するための模式的な図である。
【0044】
前述されたように、DRAM8には、ユーザデータが格納されるバッファエリア8aがアロケートされている。また、DRAM8には、ホスト装置HSから受信しバッファエリア8aに格納されたユーザデータについて、バックアップに使用される情報が記録されるビット情報テーブル81が格納される。
【0045】
図3は、実施形態にかかるビット情報テーブル81のデータ構造の一例を示す模式的な図である。
【0046】
ビット情報テーブル81の各エントリには、セクタアドレスが記録されるフィールドと、反転フラグが記録されるフィールドと、ライト不要フラグが記録されるフィールドと、を含む。
【0047】
磁気ディスク装置1は、ホスト装置HSに対し、位置指定に使用できる論理アドレス空間を提供する。磁気ディスク2には、それぞれ所定サイズのデータを格納可能な多数のセクタが設けられており、磁気ディスク2が備える多数のセクタは、論理アドレス空間にマッピングされている。セクタに格納可能なユーザデータのサイズは、典型的には512バイト(即ち4096ビット)である。なお、セクタに格納可能なユーザデータのサイズは512バイトに限定されない。また、磁気ディスク2は、論理アドレス空間にマッピングされていないセクタを含んでいてもよい。論理アドレス空間にマッピングされていないセクタには、例えば磁気ディスク装置1のシステムデータが格納され得る。
【0048】
ホスト装置HSは、磁気ディスク装置1にユーザデータのライトを要求する場合、当該ユーザデータに対応するライトコマンドを磁気ディスク装置1に送信する。ライトコマンドは、論理アドレスを含む。磁気ディスク装置1においては、SoC5は、ライトが要求されたユーザデータをセクタ単位で分割する。そして、SoC5は、分割されたユーザデータのデータ片の群を、磁気ディスク2における受信したライトコマンドに含まれる論理アドレスが示す位置を先頭とする1以上のセクタの群にライトする。よって、ホスト装置HSから受信したユーザデータを構成するセクタ単位のデータ片のそれぞれのライト先のセクタは一意に決まっている。SoC5は、ホスト装置HSから受信されてバッファエリア8aに格納されたユーザデータの各データ片を、ライト先のセクタの論理アドレスと関連付けて管理する。ビット情報テーブル81に記録されるセクタアドレスは、ホスト装置HSから受信されてバッファエリア8aに格納された1つのデータ片のライト先のセクタの論理アドレスである。SoC5は、バッファエリア8aに格納されたセクタ単位の各データ片を、セクタアドレスと対応付けて記憶している。なお、以降、ユーザデータが分割されて生成されたセクタ単位のデータ片を、セクタデータと表記する。
【0049】
反転フラグは、セクタデータに含まれる“0”の数が当該セクタデータに含まれる“1”の数より多い場合に立てられるビット情報である。本明細書では、一例として、反転フラグが記録されるフィールドは、初期状態では“Invalid”を示す値が記録されている。そして、セクタデータに含まれる“0”の数と“1”の数との比較の結果、“0”の数が“1”の数よりも多いと判定された場合、反転フラグが記録されるフィールドには“Valid”を示す値が記録される。反転フラグが立てられた場合、即ち反転フラグとして“Valid”を示す値が記録された場合、当該反転フラグを含むエントリが示すセクタデータは、電源断の際には、ビット反転された後にフラッシュメモリ9に退避される。また、電源断の後に電力供給が再開された場合、フラッシュメモリ9に退避された当該セクタデータは、ビット反転されて元のセクタデータに復元され、その後に磁気ディスク2にライトされる。
【0050】
“0”の数が“1”の数よりも多くない場合、反転フラグは立てられない。つまり、本明細書の例では、反転フラグは“Invalid”を示す値のまま維持される。
【0051】
なお、“0”の数が“1”の数と等しい場合の処理は上記された例に限定されない。“0”の数が“1”の数と等しい場合も、反転フラグが立てられて、対応するセクタデータは電源断の際にビット反転されてもよい。
【0052】
ライト不要フラグは、バックアップの際にフラッシュメモリ9にライトすることが不要であることを示すビット情報である。実施形態では、オール“1”のセクタデータ、およびビット反転によってオール“1”になるセクタデータ(つまりオール“0”のセクタデータ)のフラッシュメモリ9へのライトが省略される。オール“1”とは、“1”のみによって構成されるデータであり、オール“0”とは、“0”のみによって構成されるデータである。本明細書では、一例として、ライト不要フラグが記録されるフィールドは、初期状態では“Invalid”を示す値が記録されている。そして、セクタデータがオール“1”またはオール“0”である場合、ライト不要フラグが記録されるフィールドには“Valid”を示す値が記録される。ライト不要フラグが立てられた場合、即ちライト不要フラグとして“Valid”を示す値が記録された場合、当該ライト不要フラグを含むエントリが示すセクタデータは、電源断の際にはフラッシュメモリ9に退避されない。電源断の後に電力供給が再開された場合、オール“1”のセクタデータが生成されて、反転フラグに応じてビット反転されるかまたはビット反転されないで、磁気ディスク2にライトされる。
【0053】
SoC5は、ホスト装置HSからユーザデータを受信して当該ユーザデータをバッファエリア8aに格納する際に、当該ユーザデータを構成するセクタデータ毎にビット情報テーブル81にエントリを追加する。電源断時には、SoC5は、ビット情報テーブル81に従って各セクタデータの退避を行する。
【0054】
また、電源断時には、SoC5は、ビット情報テーブル81をDRAM8からフラッシュメモリ9に転送する。これによって、ビット情報テーブル81が不揮発化される。
【0055】
電力供給の再開時には、SoC5は、不揮発化されたビット情報テーブル81に基づき、退避前の各セクタデータの復元を行う。
【0056】
図3に示される例では、セクタアドレス“a”のセクタがライト先のセクタデータと、セクタアドレス“b”のセクタがライト先のセクタデータと、セクタアドレス“c”のセクタがライト先のセクタデータと、セクタアドレス“d”のセクタがライト先のセクタデータと、がバッファエリア8aに格納されている。セクタアドレス“a”のセクタがライト先のセクタデータおよびセクタアドレス“c”のセクタがライト先のセクタデータは、“0”の数は“1”の数よりも多くなく、したがって、それぞれのセクタデータに対応するエントリには反転フラグが立てられていない。セクタアドレス“b”のセクタがライト先のセクタデータおよびセクタアドレス“d”のセクタがライト先のセクタデータは、“0”の数は“1”の数よりも多く、したがって、それぞれのセクタデータに対応するエントリには反転フラグが立てられている。セクタアドレス“a”のセクタがライト先のセクタデータおよびセクタアドレス“b”のセクタがライト先のセクタデータは、オール“0”でもオール“1”でもなく、したがって、それぞれのセクタデータに対応するエントリにはライト不要フラグが立てられていない。セクタアドレス“c”のセクタがライト先のセクタデータおよびセクタアドレス“d”のセクタがライト先のセクタデータは、オール“0”またはオール“1”であり、したがって、それぞれのセクタデータに対応するエントリにはライト不要フラグが立てられている。
【0057】
電源断が起きると、SoC5は、対応するエントリに反転フラグが立てられているセクタアドレス“b”のセクタがライト先のセクタデータおよびセクタアドレス“d”のセクタがライト先のセクタデータに対し、ビット反転を実行する。SoC5は、対応する反転フラグが立てられていないセクタアドレス“a”のセクタがライト先のセクタデータおよびセクタアドレス“c”のセクタがライト先のセクタデータに対しては、ビット反転は実行しない。
【0058】
図4は、実施形態にかかるSoC5によって実行されるビット反転の処理について説明するための模式的な図である。なお、
図4に示される例は、
図3に示されたビット情報テーブル81の例と対応している。
【0059】
図4に示されるように、セクタアドレス“b”のセクタがライト先のセクタデータのビット列を構成する各ビットについて、“0”が“1”に、“1”が“0”に、変換されている。セクタアドレス“d”のセクタがライト先のセクタデータのビット列を構成する各ビットについても、“0”が“1”に、“1”が“0”に、変更されている。このようなビット反転によって、“1”の数が“0”の数よりも多くなる。
【0060】
ビット反転の後、SoC5は、対応するエントリにライト不要フラグが立てられていないセクタアドレス“a”のセクタがライト先のセクタデータおよびセクタアドレス“b”のセクタがライト先のセクタデータを、フラッシュメモリ9に格納する。
【0061】
続いて、磁気ディスク装置1の動作について説明する。
【0062】
図5は、ホスト装置HSからユーザデータを受信した際の実施形態にかかる磁気ディスク装置1の動作の一例を示すフローチャートである。
【0063】
SoC5は、ホスト装置HSからライトコマンドとユーザデータとを受信すると(S101)、ユーザデータのライト先のセクタを示すセクタアドレスを取得する(S102)。受信したユーザデータのサイズが複数セクタ分のサイズを有する場合には、SoC5は、当該ユーザデータをセクタ単位で分割して、分割後のセクタデータ毎にセクタアドレスを取得する。そして、S103~S109の処理は、分割後のセクタデータ毎に実行される。ここでは説明を簡単にするために、ホスト装置HSから受信したデータはセクタのサイズのデータ、つまりセクタデータであることとして説明する。
【0064】
SoC5は、取得したセクタアドレスをビット情報テーブル81の新しいエントリに記録する(S103)。そして、SoC5は、受信したセクタデータに含まれる“0”の数をカウントする(S104)。全てのセクタデータのサイズは固定されているので、セクタデータに含まれる“0”の数がわかれば、セクタデータに含まれる“1”の数が導出できる。つまり、S104の処理は、セクタデータに含まれる“0”の数と“1”の数とを特定する処理に相当する。
【0065】
S104の後、SoC5は、“0”の数が“1”の数より多いか否かを判定する(S105)。
【0066】
“0”の数が“1”の数より多い場合(S105:Yes)、SoC5は、反転フラグを立てる(S106)。つまり、SoC5は、S103においてセクタアドレスを記録したエントリの反転フラグが記録されるフィールドに、“Valid”を示す値を記録する。
【0067】
“0”の数が“1”の数より多くない場合(S105:No)、またはS106の後、SoC5は、セクタデータはオール“1”またはオール“0”であるか否かを判定する(S107)。
【0068】
セクタデータはオール“1”またはオール“0”である場合(S107:Yes)、SoC5は、ライト不要フラグを立てる(S108)。つまり、SoC5は、S103においてセクタアドレスを記録したエントリのライト不要フラグが記録されるフィールドに、“Valid”を示す値を記録する。
【0069】
セクタデータはオール“1”およびオール“0”の何れでもない場合(S107:No)、またはS108の後、SoC5は、セクタデータをバッファエリア8aに格納する(S109)。そして、磁気ディスク装置1がホスト装置HSからユーザデータを受信した際のSoC5による制御の動作が終了する。
【0070】
図6は、バッファエリア8aに格納されたセクタデータを磁気ディスク2にライトする実施形態にかかる磁気ディスク装置1の動作の一例を示すフローチャートである。
図6に示される一連の処理は、まだ磁気ディスク2にライトされていないせセクタデータがバッファエリア8aに存在する場合に実行される。この一連の処理は、ほかに優先すべき処理がない時、またはバッファエリア8aに空きが無くなった時などに実行され得る。
【0071】
SoC5は、バッファエリア8aに存在するセクタデータを選択する(S201)。SoC5は、選択したセクタデータを磁気ディスク2にライトする(S202)。SoC5は、ビット情報テーブル81から、選択したセクタデータに対応するエントリを削除する(S203)。そしてバッファエリア8aに格納されたセクタデータを磁気ディスク2にライトする動作が終了する。磁気ディスク2へのライトが完了したセクタデータは、バッファエリア8aから削除されるか、またはバッファエリア8a内の当該セクタデータが保持されていた位置が開放される。
【0072】
前述されたように、電源断が発生すると、電源制御回路7aは、各部に供給される電力を、SPM3の停止時に発生する逆起電力に基づいて生成する。
【0073】
図7は、電源断が起きた時の実施形態にかかる電源制御回路7aの動作を説明するための図である。本図には、ホスト装置HSからの供給電力の時間的推移、電源制御回路7aが各部に供給する電力の時間的推移、バックアップイネーブル信号の時間的推移、およびバックアップの実行タイミングが示されている。
【0074】
時刻t0において電源断が発生すると、電源制御回路7aは、各部に供給される電力を、逆起電力に基づいて生成する。よって、電源制御回路7aは、電源断の発生の前後で電圧の変動なく電力を供給できる。電源制御回路7aは、電源断を検知した後、バックアップイネーブル信号をアサートする(時刻t1)。電源制御回路7aは、生成する電力の電圧値が所定値を下回ると、バックアップイネーブル信号をネゲートする(時刻t4)。SoC5は、バックアップイネーブル信号がアサートされると、バックアップを開始し(時刻t2)、バックアップイネーブル信号がネゲートされる時刻t4の前にバックアップを終了する(時刻t3)。
【0075】
図8は、実施形態にかかる磁気ディスク装置1におけるバックアップの動作の一例を示すフローチャートである。
【0076】
SoC5は、バックアップイネーブル信号がアサートされたか否かを監視している(S301)。バックアップイネーブル信号がアサートされていない場合(S301:No)、SoC5は、S301の処理を継続する。
【0077】
バックアップイネーブル信号がアサートされた場合(S301:Yes)、SoC5は、まだ磁気ディスク2にライトされていないユーザデータがバッファエリア8aにあるか否かを判定する(S302)。
【0078】
まだ磁気ディスク2にライトされていないユーザデータがバッファエリア8aにある場合(S302:Yes)、SoC5は、まだ磁気ディスク2にライトされていないユーザデータを選択する(S303)。S303では、SoC5は、1つのセクタデータを選択する。SoC5は、バッファエリア8aから当該セクタデータをリードし(S304)、ビット情報テーブル81から対応するエントリをリードする(S305)。
【0079】
そして、SoC5は、リードされたエントリの反転フラグが記録されるフィールドを参照することによって、反転フラグが立っているか否かを判定する(S306)。反転フラグが立っている場合には(S306:Yes)、SoC5は、S303において選択されたセクタデータに対し、ビット反転を実行する(S307)。
【0080】
反転フラグが立っていない場合(S306:No)、またはS307の後、SoC5は、リードされたエントリのライト不要フラグが記録されるフィールドを参照することによって、ライト不要フラグが立っているか否かを判定する(S308)。
【0081】
ライト不要フラグが立っていない場合(S308:No)、SoC5は、セクタデータをフラッシュメモリ9にライトする(S309)。ライト不要フラグが立っている場合(S308:Yes)、SoC5は、S309の処理をスキップする。
【0082】
ライト不要フラグが立っている場合(S308:Yes)、またはS309の後、SoC5は、まだ選択されていないセクタデータがバッファエリア8aにあるか否かを判定する(S310)。まだ選択されていないセクタデータがバッファエリア8aにある場合、制御がS303に移行して、SoC5は、まだ選択されていないセクタデータのうちの一つを選択する。そして、S304~S310の処理が再び実行される。
【0083】
まだ選択されていないセクタデータがバッファエリア8aにない場合(S310:No)、SoC5は、ビット情報テーブル81をフラッシュメモリ9にライトする(S311)。そしてバックアップの動作が完了する。
【0084】
図9は、電源断の後に電力供給が再開されたときの実施形態にかかる磁気ディスク装置1の動作の一例を示すフローチャートである。
【0085】
まず、電源断の後に電源オンされると(S401)、SoC5は、フラッシュメモリ9内に1エントリ以上の情報が記録されたビット情報テーブル81があるか否かを判定する(S402)。
【0086】
フラッシュメモリ9内に1エントリ以上の情報が記録されたビット情報テーブル81がない場合(S402:No)、電源断の後に電力供給が再開されたときの動作が終了する。そして、ホスト装置HSからのアクセスコマンドに応じた通常の動作が開始する。
【0087】
フラッシュメモリ9内に1エントリ以上の情報が記録されたビット情報テーブル81がある場合(S402:Yes)、SoC5は、ビット情報テーブル81をフラッシュメモリ9からDRAM8に転送する(S403)。
【0088】
SoC5は、DRAM8内のビット情報テーブル81から1つのエントリをリードする(S404)。そして、SoC5は、当該エントリのライト不要フラグが記録されるフィールドを参照することによって、ライト不要フラグが立っているか否かを判定する(S405)。
【0089】
ライト不要フラグが立っていない場合(S405:No)、リードされたエントリに対応するセクタデータはフラッシュメモリ9に退避されていると推定される。よって、SoC5は、対応するセクタデータをフラッシュメモリ9からリードする(S406)。
【0090】
ライト不要フラグが立っている場合(S405:Yes)、リードされたエントリに対応するセクタデータはオール“0”またはオール“1”であり、フラッシュメモリ9に退避されていない。よって、SoC5は、オール“1”のセクタデータを生成する(S407)。
【0091】
S406またはS407の後、SoC5は、エントリの反転フラグが記録されるフィールドを参照することによって、反転フラグが立っているか否かを判定する(S408)。
【0092】
反転フラグが立っている場合(S408:Yes)、SoC5は、S406またはS407の処理によって得られたセクタデータに対し、ビット反転を実行する(S409)。
【0093】
反転フラグが立っていない場合(S408:No)、またはS409の後、SoC5は、セクタデータを磁気ディスク2にライトする(S410)。そして、SoC5は、対応するエントリをDRAM8内のビット情報テーブル81から削除する(S411)。
【0094】
続いて、SoC5は、DRAM8内のビット情報テーブル81にまだエントリが残っているか否かを判定する(S412)。DRAM8内のビット情報テーブル81にまだエントリが残っている場合(S412:Yes)、制御がS404に移行して、SoC5は、エントリをリードする。そして、S405~S412の処理が再び実行される。
【0095】
DRAM8内のビット情報テーブル81にまだエントリが残っていない場合(S412:No)、電源断の後に電力供給が再開されたときの動作が終了する。そして、ホスト装置HSからのアクセスコマンドに応じた通常の動作が開始する。
【0096】
以上述べたように、SoC5は、ホスト装置HSから受信したユーザデータを磁気ディスク2にライトするまで揮発性メモリであるDRAM8に保持させる。DRAM8に保持されているユーザデータが第1値(上記の例では“0”)の数が第2値(上記の例では“1”)よりも多いデータである場合、電源断が発生したとき、SoC5は、当該ユーザデータをビット反転してフラッシュメモリ9にライトする。DRAM8に保持されているユーザデータが第1値の数が第2値よりも少ないデータである場合、電源断が発生したとき、SoC5は、当該ユーザデータをビット反転せずにフラッシュメモリ9にライトする。
【0097】
上記構成によって、フラッシュメモリ9に格納されるトータルの第1値の数を抑制し、その結果としてユーザデータの退避に要する時間が短縮される。限られた時間内に確実にユーザデータをフラッシュメモリ9に退避させることが可能であるので、当該ユーザデータが磁気ディスク装置1から失われることを防止でき、磁気ディスク装置1の信頼性が向上する。
【0098】
さらに、フラッシュメモリ9に第1値がライトする頻度が抑制されるので、メモリセルトランジスタがデータを保持する能力の低下が抑制される。よって、フラッシュメモリ9に退避されたユーザデータが失われるリスクが抑制され、磁気ディスク装置1の信頼性が向上する。
【0099】
つまり、実施形態によれば、信頼性が高い磁気ディスク装置1を提供することが可能になる。
【0100】
また、実施形態によれば、フラッシュメモリ9にライトされたユーザデータが第1値の数が第2値の数よりも多いデータに該当する場合、電源断の後に電力供給が再開されたとき、SoC5は、当該ユーザデータをビット反転して磁気ディスク2にライトする。フラッシュメモリ9にライトされたユーザデータが第1値の数が第2値の数よりも少ないデータに該当する場合、電源断の後に電力供給が再開されたとき、SoC5は、当該ユーザデータをビット反転せずに磁気ディスク2にライトする。
【0101】
また、実施形態によれば、SoC5は、ユーザデータをフラッシュメモリ9にライトする際に、反転フラグが記録されたビット情報テーブル81がフラッシュメモリ9にライトされる。反転フラグは、第1値の数と第2値の数との比較に基づいて決められた、ビット反転が実行されるか否かを示す情報である。即ち、反転フラグは、対応するユーザデータが第1値の数が第2値の数よりも多いデータに該当するか、対応するユーザデータが第1値の数が第2値の数よりも少ないデータに該当するかを示していると考えることができる。電源断の後に電力供給が再開されたとき、SoC5は、ビット情報テーブル81に記録された反転フラグに基づいて対応するユーザデータに対してビット反転を実行するか否かを判定する。
【0102】
よって、退避の際にビット反転されたユーザデータは、電力供給の再開後、再びビット反転されることで、オリジナルのユーザデータに復元される。
【0103】
また、実施形態によれば、SoC5は、ユーザデータをDRAM8にライトする際に、当該ユーザデータに含まれる第1値の数および第2値の数をカウントし、カウント結果に基づいて反転フラグを生成する。
【0104】
このように、SoC5は、第1値の数および第2値の数のカウントをバックアップの際ではなくDRAM8にユーザデータをライトする際に実行する。よって、バックアップの際に実行される処理の量を減らすことができる。つまり、バックアップの際に使用可能な電力を効率的に使用することが可能となる。
【0105】
また、実施形態によれば、SoC5は、電源断が発生したとき、ユーザデータが第1値および第2値のうちの何れか一方のみによって構成されるデータに該当する場合、当該ユーザデータをフラッシュメモリ9にライトせずに、ライト不要フラグが立てられたビット情報テーブル81をフラッシュメモリ9にライトする。ライト不要フラグは、ユーザデータが第1値および第2値のうちの何れか一方のみによって構成されるデータである場合に立てられるフラグである。電力供給が再開されたとき、SoC5は、反転フラグが立てられ、かつライト不要フラグが立てられている場合には、第1値のみによって構成されるユーザデータを生成して磁気ディスク2にライトする。電力供給が再開されたとき、SoC5は、反転フラグが立てられておらず、かつライト不要フラグが立てられている場合には、第2値のみによって構成されるユーザデータを生成して磁気ディスク2にライトする。
【0106】
よって、フラッシュメモリ9にライトされるデータの総量が抑制されるので、バックアップに要する時間がさらに短縮される。
【0107】
また、実施形態によれば、SoC5は、ユーザデータをDRAM8にライトする際に、当該ユーザデータに含まれる第1値の数および第2値の数をカウントし、カウント結果に基づいてライト不要フラグを生成する。
【0108】
よって、バックアップの際に実行される処理の量を減らすことができる。つまり、バックアップの際に使用可能な電力を効率的に使用することが可能となる。
【0109】
また、実施形態によれば、SoC5は、セクタ単位でユーザデータのバックアップの管理を行う。
【0110】
バックアップの管理の単位と、磁気ディスク2へのライト先の管理の単位と、が統一されるので、全体の管理が簡単になる。なお、バックアップの管理の単位は必ずしもセクタの単位でなくてもよい。また、以上の例では1セクタの分のデータのサイズは512バイトであることとして説明したが、1セクタの分のデータのサイズは512バイトに限定されない。
【0111】
以上述べた説明において、電源断は、電源供給の意図せぬ停止だけでなく、正常な電源オフシーケンスに従った電源供給の停止をも含みうる。つまり、実施形態は、正常な電源オフシーケンスに従って磁気ディスク装置1への電源供給が停止された場合においても適用され得る。
【0112】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0113】
1 磁気ディスク装置、2 磁気ディスク、3 SPM、4 VCM、4a 軸、5 SoC、5a HDC、5b CPU、5c RWC、6 ヘッドIC、7 モータドライバIC、7a 電源制御回路、7b スピンドルモータ制御回路、8 DRAM、8a バッファエリア、9 フラッシュメモリ、81 ビット情報テーブル。