(57)【要約】【課題】不揮発性半導体メモリ装置を有するディスク・ドライブ装置において、効率的なリング・バッファ制御を行う。【解決手段】本発明の一形態において、ＨＤＤ１は、フラッシュ・メモリ装置２５を有する。ＨＤＤ１は、セクタ・バッファとしてリング・バッファ２４１を使用する。フラッシュ・メモリ装置は、特定データ・サイズの記録単位を有しており、その記録単位毎にメモリ領域にユーザ・データを書き込む。フラッシュ・メモリ装置は、記録単位内において一つにまとめた複数のデータ・ブロックを、メモリ領域に一括して書き込む。これより、処理効率を向上することができる。セクタ・バッファのポインタを効果的に制御することで、効率的なリング・バッファ制御を行う。【選択図】図３
2009054209.tif 000002
【特許請求の範囲】
【請求項１】
ホストからのデータを格納するリング・バッファと、
前記リング・バッファから転送されたデータを格納するディスクと、
前記リング・バッファに対して、転送ポインタと転送完了ポインタと転送中断ポインタと、を設定するバッファ制御部と、
前記転送ポインタに従ってデータ・ブロック毎にデータを前記リング・バッファから転送し、前記転送中断ポインタに従ってデータ転送を中断し、前記転送完了ポインタに従ってデータ転送を完了する転送処理部と、
前記リング・バッファから転送されたデータをセル・アレイに格納する不揮発性半導体メモリ装置と、を有し、
前記バッファ制御部は、一または複数のデータ・ブロックのそれぞれに対応する転送ポインタと転送中断ポインタとを設定し、さらに、最後データ・ブロックに対応する転送ポインタと転送完了ポインタとを設定し、
前記転送処理部は、前記対応する転送ポインタと転送中断ポインタとに従って前記一または複数のデータ・ブロックを前記不揮発性半導体メモリ装置に順次転送し、その後、前記転送ポインタと前記転送完了ポインタに従って前記最後データ・ブロックを前記不揮発性半導体メモリ装置に転送し、
前記不揮発性半導体メモリ装置は、前記最後データ・ブロックを受け取ると、受け取った前記一または複数のデータ・ブロック及び前記最後データ・ブロックを、まとめて前記セル・アレイに格納する、
ディスク・ドライブ装置。
【請求項２】
前記転送処理部は、前記転送中断ポインタ毎に前記バッファ制御部に転送の中断を通知し、
前記バッファ制御部は、前記中断の通知を受けると、次のデータ・ブロックに対応したポインタ設定を行う、
請求項１に記載のディスク・ドライブ装置。
【請求項３】
前記転送中断ポインタは、次にホストから転送されるライト・データが格納される位置に対応し、
前記不揮発性半導体メモリが一つのデータ・ブロックのみを前記セル・アレイに格納する場合において、前記転送処理部は、前記一つのデータ・ブロックの転送中に転送データのアドレスが対応する転送中断ポインタに追いついた場合、その転送を中断する、
請求項１に記載のディスク・ドライブ装置。
【請求項４】
前記転送処理部が前記複数のデータ・ブロック及び前記最後のデータ・ブロックを転送している間、前記転送中断ポインタの位置はライト・コマンドと独立に制御される、
請求項３に記載のディスク・ドライブ装置。
【請求項５】
前記転送処理部は、前記ディスクへのデータ転送中に転送データのアドレスが前記中断ポインタに追いついた場合にその転送を中断する、
請求項３に記載のディスク・ドライブ装置。
【請求項６】
データを記憶するディスクと不揮発性半導体メモリ装置とを有するディスク・ドライブ装置において、前記不揮発性半導体メモリ装置のセル・アレイにデータを格納する方法であって、
リング・バッファから転送する第１データ・ブロックに対応した転送ポインタと転送中断ポインタとを設定し、
前記転送ポインタに従って前記第１データ・ブロックを前記不揮発性半導体メモリ装置に転送し、前記転送中断ポインタに従って前記不揮発性半導体メモリ装置へのデータ転送を中断し、
前記リング・バッファから転送する第２データ・ブロックに対応する転送ポインタと転送完了ポインタとを設定し、
前記転送ポインタに従って前記第２データ・ブロックを前記不揮発性半導体メモリ装置に転送し、前記転送完了ポインタに従って前記不揮発性半導体メモリ装置へのデータ転送を完了し、
前記第２データ・ブロックの転送後に、前記第１及び前記第２データ・ブロックをまとめて前記セル・アレイに格納する、方法。
【請求項７】
前記第１データ・ブロックと前記第２データ・ブロックとの間において、第３データ・ブロックを前記不揮発性半導体メモリ装置へ転送し、
前記第１データ・ブロック転送後、前記第３データ・ブロックに対応した転送ポインタと転送中断ポインタとの設定する、
請求項５に記載の方法。
【請求項８】
前記転送中断ポインタは、次にホストから転送されるライト・データが格納される位置に対応し、
一つのデータ・ブロックのみを前記セル・アレイに格納する場合において、前記一つのデータ・ブロックの転送中に転送データのアドレスが対応する転送中断ポインタに追いついた場合、その転送を中断する、
請求項１に記載のディスク・ドライブ装置。
【請求項９】
前記第１及び第２データ・ブロックを転送している間、前記転送中断ポインタの位置はライト・コマンドと独立に制御される、
請求項８に記載のディスク・ドライブ装置。
【請求項１０】
前記ディスクへのデータ転送中に転送データのアドレスが前記中断ポインタに追いついた場合にその転送を中断する、
請求項８に記載のディスク・ドライブ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はユーザ・データを保存するためのディスクと不揮発性半導体メモリ装置とを有するディスク・ドライブ装置及びそのディスク・ドライブ装置において不揮発性半導体メモリ装置にデータを格納する方法に関する。
【背景技術】
【０００２】
データ記憶装置として、光ディスク、光磁気ディスク、あるいはフレキシブル磁気ディスクなどの様々な態様のメディアを使用する装置が知られているが、その中で、ハードディスク・ドライブ（ＨＤＤ）は、コンピュータの記憶装置として広く普及し、現在のコンピュータ・システムにおいて欠かすことができない記憶装置の一つとなっている。さらに、コンピュータにとどまらず、動画像記録再生装置、カーナビゲーション・システム、携帯電話など、ＨＤＤの用途は、その優れた特性により益々拡大している。
【０００３】
ＨＤＤは、磁気ディスクへのアクセス（リードもしくはライト）のために、磁気ディスクを回転し、ヘッド・スライダを目的のデータ・セクタに移動する。このため、ＨＤＤの消費電力は半導体メモリに比較して大きく、また、そのアクセス・スピードも半導体メモリよりも遅い。特に、スピンドル・モータのスピン・アップ時間は他の動作に比較して多くの時間を必要とする。このため、ＨＤＤの起動時や、省電力低減のためのパワー・セーブ・モードから復帰するときに多くの処理時間を必要とする。
【０００４】
このため、ＨＤＤに不揮発性半導体メモリ装置の一つであるフラッシュ・メモリ装置を実装することが提案されている（例えば、特許文献１を参照）。フラッシュ・メモリ装置は半導体メモリ装置であるため、磁気ディスクよりもアクセス・スピードが速く、消費電力が小さい。また、フラッシュ・メモリ装置は不揮発性メモリ装置であるため、電源オフ状態であってもデータを保存しておくことができる。
【０００５】
ＨＤＤに実装するフラッシュ・メモリ装置の容量は、コストなどの点から制限される。従って、典型的には、ＨＤＤは特定のユーザ・データのみをフラッシュ・メモリ装置に保存し、その他のユーザ・データを磁気ディスクに保存する。例えば、ホストの起動に必要なデータや、ホストが頻繁にアクセスするデータをフラッシュ・メモリ装置に保存しておくことによって、ホストの起動時間の短縮、ＨＤＤのパフォーマンスの向上、あるいはスピンドル・モータの回転数を小さくするパワー・セーブ・モードによる消費電力の低減を図ることができる。
【０００６】
フラッシュ・メモリ装置は、そのセル・アレイに対して、特定の大きさのデータ単位でデータを書き込む。従って、一コマンドに対応した小さいデータ・ブロック毎にデータを書き込むのではなく、上記データ単位内で複数のデータ・ブロックをまとめて、それらを同時にフラッシュ・メモリ装置のアレイ・セルに書き込むことが好ましい。セル・アレイへのデータ書き込みは相応の処理時間を必要とするため、これによって処理時間の短縮とパフォーマンスの向上を図ることができる（例えば、特許文献２を参照）。
【特許文献１】特開２００６−１１４２０６号公報
【特許文献２】特開２００６−２３６３０４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ホストからのライト・データは、バッファに一時的に格納された後、磁気ディスクあるいはフラッシュ・メモリ装置に保存される。バッファリングの方法としてはいくつかのものが知られているが、制御処理が単純であり処理効率が高いことから、リング・バッファが多くのＨＤＤにおいて採用されている。リング・バッファは、先頭アドレスから最後アドレスに向かう方向に、順次、データを格納していく。さらに、その先頭アドレスと最後アドレスが連続しており、リング・バッファはリング状のバッファ構造を有している。
【０００８】
フラッシュ・メモリ装置による複数のデータ・ブロックの一括書き込みを実現する場合、その処理は、リング・バッファから磁気ディスクへのデータ転送（書き込み）あるいはフラッシュ・メモリ装置のデータ・ブロック単位のデータ書き込み処理と機能を共有することが好ましい。これによって、フラッシュ・メモリ付ＨＤＤに一括書き込み処理を実装しやすくなり、また制御回路構成をシンプルなものとすることができる。また、一括書き込み処理は他の処理と異なるため、それに特有の機能を実装することも重要である。
【課題を解決するための手段】
【０００９】
本発明の一態様に係るディスク・ドライブ装置は、ホストからのデータを格納するリング・バッファと、前記リング・バッファから転送されたデータを格納するディスクと、前記リング・バッファに対して、転送ポインタと転送完了ポインタと転送中断ポインタとを設定するバッファ制御部と、前記転送ポインタに従ってデータ・ブロック毎にデータを前記リング・バッファから転送し、前記転送中断ポインタに従ってデータ転送を中断し、前記転送完了ポインタに従ってデータ転送を完了する転送処理部と、前記リング・バッファから転送されたデータをセル・アレイに格納する不揮発性半導体メモリ装置とを有する。前記バッファ制御部は、一または複数のデータ・ブロックのそれぞれに対応する転送ポインタと転送中断ポインタとを設定し、さらに、最後データ・ブロックに対応する転送ポインタと転送完了ポインタとを設定する。前記転送処理部は、前記対応する転送ポインタと転送中断ポインタとに従って前記一または複数のデータ・ブロックを前記不揮発性半導体メモリ装置に順次転送し、その後、前記転送ポインタと前記転送完了ポインタに従って前記最後データ・ブロックを前記不揮発性半導体メモリ装置に転送する。前記不揮発性半導体メモリ装置は、前記最後データ・ブロックを受け取ると、受け取った前記一または複数のデータ・ブロック及び前記最後データ・ブロックを、まとめて前記セル・アレイに格納する。上記構成によって、通常のリング・バッファの制御において必要とされるポインタを使用して、不揮発性メモリ装置における複数データ・ブロックの一括書き込み処理を行うことができる。
【００１０】
好ましくは、前記転送処理部は、前記転送中断ポインタ毎に前記バッファ制御部に転送の中断を通知し、前記バッファ制御部は、前記中断の通知を受けると、次のデータ・ブロックに対応したポインタ設定を行う。このように転送中断ポインタの機能を使用することで、一つの転送中断ポインタで制御することができる。
【００１１】
好ましくは、前記転送中断ポインタは、次にホストから転送されるライト・データが格納される位置に対応し、前記不揮発性半導体メモリが一つのデータ・ブロックのみを前記セル・アレイに格納する場合において、前記転送処理部は、前記一つのデータ・ブロックの転送中に転送データのアドレスが対応する転送中断ポインタに追いついた場合、その転送を中断する。これによって、複数データ・ブロックの転送と一つのデータ・ブロックのみの転送とを、同一のポインタを使用して制御することができる。
【００１２】
前記転送処理部が前記複数のデータ・ブロック及び前記最後のデータ・ブロックを転送している間、前記転送中断ポインタの位置はライト・コマンドと独立に制御されることが好ましい。これによって、ライト・コマンドによって複数データ・ブロックのデータ転送が阻害されることを避けることができる。
【００１３】
前記転送処理部は、前記ディスクへのデータ転送中に転送データのアドレスが前記中断ポインタに追いついた場合にその転送を中断することが好ましい。これによって、ディスクへのデータ転送と不揮発性メモリ装置へのデータ転送とにおいて同じポインタを利用することができる。
【００１４】
本発明の他の態様は、データを記憶するディスクと不揮発性半導体メモリ装置とを有するディスク・ドライブ装置において、前記不揮発性半導体メモリ装置のセル・アレイにデータを格納する方法である。この方法は、リング・バッファから転送する第１データ・ブロックに対応した転送ポインタと転送中断ポインタとを設定する。前記転送ポインタに従って前記第１データ・ブロックを前記不揮発性半導体メモリ装置に転送し、前記転送中断ポインタに従って前記不揮発性半導体メモリ装置へのデータ転送を中断する。前記リング・バッファから転送する第２データ・ブロックに対応する転送ポインタと転送完了ポインタとを設定する。前記転送ポインタに従って前記第２データ・ブロックを前記不揮発性半導体メモリ装置に転送し、前記転送完了ポインタに従って前記不揮発性半導体メモリ装置へのデータ転送を完了する。前記第２データ・ブロックの転送後に、前記第１及び前記第２データ・ブロックをまとめて前記セル・アレイに格納する。上記方法によって、通常のリング・バッファの制御において必要とされるポインタを使用して、不揮発性メモリ装置における複数データ・ブロックの一括書き込み処理を行うことができる。
【発明の効果】
【００１５】
本発明によれば、不揮発性半導体メモリ装置を有するディスク・ドライブ装置において、複数データ・ブロックを不揮発性半導体メモリ装置のセル・アレイにまとめて書き込む場合、効率的なリング・バッファ制御を行うことができる。
【発明を実施するための最良の形態】
【００１６】
以下に、本発明を適用可能な実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、各図面において、同一要素には同一の符号が付されており、必要に応じて重複説明は省略されている。以下においては、ディスク・ドライブ装置の一例であるハードディスク・ドライブ（ＨＤＤ）について説明する。
【００１７】
本形態のＨＤＤは、ユーザ・データを保存するために、磁気ディスク領域の他にフラッシュ・メモリ装置を有する。フラッシュ・メモリ装置は、不揮発性半導体メモリ装置である。本形態のＨＤＤは、セクタ・バッファとしてリング・バッファを使用する。本形態のフラッシュ・メモリ装置は、特定データ・サイズの記録単位を有しており、その記録単位毎にメモリ領域にデータを書き込む。フラッシュ・メモリ装置は、セクタ・バッファからの複数のデータ・ブロックを、記録単位内において一つにまとめる。フラッシュ・メモリ装置は、さらに、一つにまとめた複数のデータ・ブロックをメモリ領域に一括して書き込む。このように、セクタ・バッファからの複数データ・ブロックを、上記記録単位内でまとめ、それらを同時にメモリ領域に書き込むことで、処理効率を向上することができる。本実施形態は、上記書き込み処理におけるセクタ・バッファのポインタ制御に特徴を有している。
【００１８】
まず、本形態のＨＤＤの全体構成を、図１のブロック図を参照して説明する。ＨＤＤ１は、エンクロージャ１０の外側に固定された回路基板２０を備えている。回路基板２０上には、リード・ライト・チャネル（ＲＷチャネル）２１、モータ・ドライバ・ユニット２２、ハードディスク・コントローラ（ＨＤＣ）とマイクロ・プロセッサ・ユニット（ＭＰＵ）の集積回路（ＨＤＣ／ＭＰＵ）２３、揮発性半導体メモリであるＲＡＭ２４、及び不揮発性半導体メモリ装置であるフラッシュ・メモリ装置２５などの各回路を有している。
【００１９】
エンクロージャ１０内において、スピンドル・モータ（ＳＰＭ）１４は所定の角速度で磁気ディスク１１を回転する。磁気ディスク１１は、データを記憶する不揮発性のディスク・メモリである。各ヘッド・スライダ１２は、磁気ディスク上を浮上するスライダと、スライダに固定され磁気信号と電気信号との間の変換（データの読み書き）を行うヘッド素子部とを有している。各ヘッド・スライダ１２はアクチュエータ１６の先端部に固定されている。アクチュエータ１６はボイス・コイル・モータ（ＶＣＭ）１５に連結され、回動軸を中心に回動することによって、ヘッド・スライダ１２を回転する磁気ディスク１１上においてその半径方向に移動する。モータ・ドライバ・ユニット２２は、ＨＤＣ／ＭＰＵ２３からの制御データに従って、ＳＰＭ１４及びＶＣＭ１５を駆動する。
【００２０】
アーム電子回路（ＡＥ：Arm Electronics）１３は、ＨＤＣ／ＭＰＵ２３からの制御データに従って複数のヘッド素子部１２の中から磁気ディスク１１にアクセス（リードもしくはライト）するヘッド・スライダ１２を選択し、リード／ライト信号の増幅を行う。ＲＷチャネル２１は、リード処理において、ＡＥ１３から取得したリード信号からサーボ・データ及びユーザ・データを抽出し、デコード処理を行う。デコード処理されたデータは、ＨＤＣ／ＭＰＵ２３に供給される。また、ＲＷチャネル２１は、ライト処理において、ＨＤＣ／ＭＰＵ２３から供給されたライト・データをコード変調し、さらに、コード変調されたデータをライト信号に変換してＡＥ１３に供給する。
【００２１】
ＨＤＣ／ＭＰＵ２３において、ＨＤＣはロジック回路であり、ＭＰＵはＲＡＭ２４にロードされたファームウェアに従って動作する。ＨＤＤ１の起動に伴い、ＲＡＭ２４には、制御及びデータ処理に必要とされるデータが磁気ディスク１１やフラッシュ・メモリ装置２５からロードされる。ＨＤＣ／ＭＰＵ２３は、ヘッド・ポジショニング制御、インターフェース制御、ディフェクト管理などのデータ処理に関する必要な処理の他、ＨＤＤ１の全体制御を実行する。
【００２２】
ホスト５１からのユーザ・データ（ライト・データ）は、ＲＡＭ２４内のセクタ・バッファに一旦格納された後、磁気ディスク１１及び／もしくはフラッシュ・メモリ装置２５に保存される。フラッシュ・メモリ装置２５に保存するデータは、磁気ディスク１１のＬＢＡで特定することができる。ＨＤＣ／ＭＰＵ２３は、予め設定されているＬＢＡへのライト・コマンドを受信すると、そのユーザ・データをフラッシュ・メモリ装置２５に保存する。ＨＤＣ／ＭＰＵ２３は、フラッシュ・メモリ装置２５に保存するユーザ・データのＬＢＡを自ら設定することができ、また、ホスト５１から指定されたＬＢＡのユーザ・データをフラッシュ・メモリ装置２５に保存する。
【００２３】
本形態のＨＤＤ１は、ライト・データのセクタ・バッファとして、リング・バッファを使用する。リング・バッファは、先頭アドレスから最後アドレスに向かう方向に、順次、データを格納していく。さらに、その先頭アドレスと最後アドレスが連続しており、リング・バッファはリング状のバッファ構造を有している。具体的には、最後アドレスにデータを格納した後、リング・バッファは最初アドレスから順次データを格納する。
【００２４】
リング・バッファへのデータ書き込み及びリング・バッファからのデータ読み出しは、ポインタによって制御される。図２は、リング・バッファ２４１からフラッシュ・メモリ装置２５へのデータ転送を模式的に示すブロック図である。転送ポインタが示すアドレスから転送完了ポインタが示すアドレスまでの連続領域に格納されているデータ・ブロックが、フラッシュ・メモリ装置２５に転送される。転送ポインタは、データ転送に従って、転送完了ポインタに向かって順次移動していく。
【００２５】
フラッシュ・メモリ装置２５は、内部バッファ２５１とセル・アレイ２５２とを有している。内部バッファ２５１は、ＲＡＭにより構成することができる。セル・アレイ２５２は半導体論理回路で構成され、その記憶領域は不揮発性半導体メモリ領域である。フラッシュ・メモリ装置２５は、リング・バッファ２４１からのデータ・ブロックを、一時的に内部バッファ２５１に格納した後、セル・アレイ２５２にそれを保存する。フラッシュ・メモリ装置２５は、転送完了ポインタが示すデータ・ブロックを取得すると、バッファ２５１内のデータをセル・アレイ２５２に保存する。フラッシュ・メモリ装置２５は、特定の書き込み単位毎に、セル・アレイ２５２にデータを書き込む。例えば、書き込み単位のサイズは、３２ＫＢである。データ書き換えにおいて、フラッシュ・メモリ装置２５は、書き込み単位の領域のデータ消去を行い、その後、その領域に書き込み単位でデータを書き込む。
【００２６】
図３は、フラッシュ・メモリ装置２５が複数のデータ・ブロックを、一度にまとめてセル・アレイ２５２に書き込む処理を模式的に示すブロック図である。図３の例において、リング・バッファ２４１内のデータ・ブロック３が最初にフラッシュ・メモリ装置２５に転送される［１］。その後、データ・ブロック１がフラッシュ・メモリ装置２５に転送され［２］、最後にデータ・ブロック２がフラッシュ・メモリ装置２５に転送される［３］。データ・ブロック１〜３は、フラッシュ・メモリ装置２５の内部バッファ２５１に格納される。
【００２７】
データ・ブロック１〜３のトータルのデータ・サイズは、セル・アレイ２５２への書き込み単位よりも小さい。フラッシュ・メモリ装置２５は、内部バッファ２５１内のデータ・ブロック１〜３を、まとめてセル・アレイ２５２に書き込む［４］。複数のデータ・ブロックをまとめて書き込むことによって、データ書き込む回数を低減し、パフォーマンスを向上することができる。
【００２８】
続いて、図４（ａ）〜図４（ｃ）を参照して、図３に示した処理におけるリング・バッファ２４１のポインタ制御について説明する。以下のバッファ制御は、転送完了ポインタの他に、転送中断ポインタを使用する。データ・ブロックの転送順序は、図３における順序と同一である。最初に、図４（ａ）に示すように、転送ポインタと転送中断ポインタが、データ・ブロック３に対してセットされる。データ・ブロック３は、リング・バッファ２４１からフラッシュ・メモリ装置２５に転送される［１］。フラッシュ・メモリ装置２５は、転送中断ポインタが特定するデータ・ブロック３をセル・アレイ２５２に書き込むことなく、バッファ２５１内に保持する。
【００２９】
次に、図４（ｂ）に示すように、転送ポインタと転送中断ポインタが、データ・ブロック１に対してセットされる。データ・ブロック１は、リング・バッファ２４１からフラッシュ・メモリ装置２５に転送される［２］。フラッシュ・メモリ装置２５は、転送中断ポインタが特定するデータ・ブロック１をセル・アレイ２５２に書き込むことなく、バッファ２４１内に保持する。
【００３０】
最後に、図４（ｃ）に示すように、転送ポインタと転送完了ポインタが、データ・ブロック２に対してセットされる。データ・ブロック２は、リング・バッファ２４１からフラッシュ・メモリ装置２５に転送される［３］。フラッシュ・メモリ装置２５は、転送完了ポインタが特定するデータ・ブロック２をバッファ２５１に格納する。データ・ブロック２の指定に転送完了ポインタが使用されているため、フラッシュ・メモリ装置２５は、内部バッファ２５１に格納されている３つのデータ・ブロック１〜３を、一度の処理でセル・アレイ２５２に書き込む。
【００３１】
図５は、リング・バッファ２４１からフラッシュ・メモリ装置２５へのデータ転送及びフラッシュ・メモリ装置２５内のデータ保存処理に関連する機能構成要素を模式的に示すブロック図である。図５のブロック図を参照して、図４に示した処理における各構成要素の動作について説明する。まず、ＭＰＵ２３１は、ＨＤＣ２３２内のレジスタ群３２１に、転送ポインタと転送中断ポインタを設定する。メモリ・マネージャ３２２は、その転送ポインタと転送中断ポインタに従って、リング・バッファ２４１からデータ・ブロック３を取得し、それをフラッシュ・メモリ装置２５に転送する。フラッシュ・メモリ装置２５内のフラッシュ・コントローラ２５３は、メモリ・マネージャ３２２からの転送データ・ブロック３を、バッファ２５１に格納する。
【００３２】
メモリ・マネージャ３２２は、転送中断ポインタが示すデータ・ブロック３の転送が完了すると、割り込みによってそれをＭＰＵ２３１に通知する。ＭＰＵ２３１は、その通知に応答して、転送ポインタと転送中断ポインタをレジスタ群３２１に再設定する。これらポインタは、データ・ブロック１を示す。メモリ・マネージャ３２２は、その転送ポインタと転送中断ポインタに従って、リング・バッファ２４１からデータ・ブロック１を取得し、それをフラッシュ・メモリ装置２５に転送する。フラッシュ・メモリ装置２５内のフラッシュ・コントローラ２５３は、メモリ・マネージャ３２２からの転送データ・ブロック１を、バッファ２５１に格納する。
【００３３】
メモリ・マネージャ３２２は、転送中断ポインタが示すデータ・ブロック１の転送が完了すると、それをＭＰＵ２３１に通知する。ＭＰＵ２３１は、その通知に応答して、転送ポインタと転送完了ポインタを設定する。これらポインタは、データ・ブロック２を示す。メモリ・マネージャ３２２は、その転送ポインタと転送完了ポインタに従って、リング・バッファ２４１からデータ・ブロック１を取得し、それをフラッシュ・メモリ装置２５に転送する。フラッシュ・メモリ装置２５内のフラッシュ・コントローラ２５３は、メモリ・マネージャ３２２からの転送データ・ブロック１を、バッファ２５１に格納する。
【００３４】
メモリ・マネージャ３２２は、転送完了ポインタのデータ・ブロック２の転送が完了すると、フラッシュ・コントローラ２５３に対して、セル・アレイ２５３へのデータ書き込みを指示する。フラッシュ・コントローラ２５３は、フラッシュ・コントローラ２５３からの指示に従って、バッファ５２１内に格納されているデータ・ブロック１〜３を、まとめてセル・アレイ２５２に書き込む。
【００３５】
リング・バッファ２４１は、特定の記憶領域内において、新しいデータを古いデータに上書きしていく。従って、既にリング・バッファ２４１から転送したデータを、再び転送することを禁止するポインタが必要となる。上記転送中断ポインタは、このように、転送済データを誤って再転送することを防ぐポインタとして使用される。この転送中断ポインタを利用することによって、新たなポインタを定義することなく、フラッシュ・メモリ装置２５における複数データ・ブロックの一括書き込みを実現することができる。
【００３６】
以下においては、本発明に係るリング・バッファ制御のより具体的な例を説明する。ＨＤＤ１は、ホスト５１からのデータをリング・バッファ２４１に格納し、格納されているデータをフラッシュ・メモリ装置２５と磁気ディスク１１とに転送する。また、フラッシュ・メモリ装置２５は、ＨＤＣ／ＭＰＵ２３の制御に従って、一回の書き込み処理で一つのデータ・ブロックをセル・アレイ２５２に書き込む、あるいは、複数のデータ・ブロックをまとめて書き込む。
【００３７】
まず、ホスト５１からのデータをリング・バッファ２４１に格納する処理について、図６（ａ）〜図６（ｃ）を参照して説明する。図６（ａ）に示すように、メモリ・マネージャ３２２は、ホスト５１からライト・コマンドを取得すると、ライト・データを格納するためのポインタＨＰＡＧＥをレジスタ群３２１にセットする。ポインタＨＰＡＧＥは、ホスト５１からのデータの格納位置を示す。図６（ｂ）に示すように、データがリング・バッファ２４１に格納されていくにしたがって、メモリ・マネージャ３２２はポインタＨＰＡＧＥをインクリメントしていく。図６（ｃ）に示すように、リング・バッファ２４１へのデータ・ブロックの格納が完了したタイミングで、ポインタＨＰＡＧＥは次のデータを格納するアドレスを示している。
【００３８】
リング・バッファ２４１へのデータ・ブロックの格納が完了すると、メモリ・マネージャ３２２は、新たに格納したデータ・ブロックの開始位置を示すＨＣＰＡＧＥをレジスタ群３２１にセットする。ポインタＨＣＰＡＧＥは、ホスト５１からデータの上書きを禁止するポインタである。ポインタＨＰＡＧＥがＨＣＰＡＧＥに到着すると、メモリ・マネージャ３２２はリング・バッファ２４１へのデータ格納を中断し、ＭＰＵ２３１にそれを通知する。ＭＰＵ２３１は、その通知に対応した処理を実行する。
【００３９】
メモリ・マネージャ３２２は、さらに、ポインタＨＰＡＧＥに対応したポインタＤＣＰＡＧＥをレジスタ群３２１にセットする。メモリ・マネージャ３２２は、ポインタＤＣＰＡＧＥを、ポインタＨＰＡＧＥと同様にインクリメントする。ポインタＤＣＰＡＧＥは、リング・バッファ２４１から磁気ディスク１１へのデータ転送において使用される。次に、図７（ａ）及び図７（ｂ）を参照して、データ・ブロックをリング・バッファ２４１から磁気ディスク１１に書き出す処理について説明する。
【００４０】
図７（ａ）に示すように、ＭＰＵ２３１は、リング・バッファ２４１内のデータ・ブロックを指定するポインタＤＰＡＧＥをレジスタ群３２１にセットする。また、ＭＰＵ２３１は、転送するデータ長を示すデータもレジスタ群３２１にセットする。図７（ｂ）に示すように、メモリ・マネージャ３２２は、ポインタＤＰＡＧＥが示すデータから転送を開始し、データ転送に従ってポインタＤＰＡＧＥをインクリメントする。
【００４１】
メモリ・マネージャ３２２は、ポインタＤＰＡＧＥと同様に、ポインタＨＣＰＡＧＥをインクリメントする。ポインタＤＰＡＧＥはデータ転送済みのアドレスを示すため、ホスト５１からのデータによる上書きを禁止するポインタＨＣＰＡＧＥも、それに従って移動する。データ転送中にポインタＤＰＡＧＥがポインタＤＣＰＡＧＥに追いつくと、メモリ・マネージャ３２２は転送を中断して、それをＭＰＵ２３１に通知する。図７（ｂ）の例においては、ポインタＤＰＡＧＥがポインタＤＣＰＡＧＥに追いつくことなく、データ・ブロックのデータ転送が完了する。
【００４２】
次に、図８（ａ）〜図８（ｃ）を参照して、リング・バッファ２４１内の複数データ・ブロックを、リング・バッファ２４１内のアドレス順序とは異なる順序で磁気ディスク１１に転送する処理の例を説明する。データ・ブロックのＬＢＡ順序とリング・バッファへの格納順序は、必ずしも一致するものではないため、磁気ディスク１１への書き込み処理順序に合わせてデータ転送することで、書き込み時間の短縮を図ることができる。本例において、ＨＤＣ／ＭＰＵ２３は、データ・ブロック１〜データ・ブロック３を磁気ディスク１１に転送する。転送順序は、最初がデータ・ブロック３、次がデータ・ブロック１、そして最後がデータ・ブロック２である。リング・バッファ２４１への格納順序は、データ・ブロック１、データ・ブロック２、データ・ブロック３の順である。
【００４３】
この処理において、ポインタＨＣＰＡＧＥは、ポインタＤＰＡＧＥとは独立に設定される。ポインタＨＣＰＡＧＥがポインタＤＰＡＧＥに連動すると、この処理の途中においてホスト５１からのデータをリング・バッファ２４１に格納する場合に不具合が生じる。つまり、データ・ブロック３の転送直後にホスト５１からのデータを格納する場合、ポインタＨＣＰＡＧＥがポインタＤＰＡＧＥと同じ値を示していると、データ・ブロック１あるいはデータ・ブロック２が、新しいデータで上書きされる可能性がある。そのため、ＭＰＵ２３１は、ポインタＨＣＰＡＧＥを、データ・ブロック１の開始位置に設定し、ポインタＨＣＰＡＧＥはその位置に維持される。
【００４４】
ＭＰＵ２３１は、ＨＤＣ２３２が有する磁気ディスク１１への順次書き出し機能（以下においてリスト・ライト機能と呼ぶ）を使用して、データ・ブロック１〜データ・ブロック３を磁気ディスク１１に書き出す。以下、この処理について具体的に説明する。ＭＰＵ２３１は、データ・ブロック３に対応したポインタＤＰＡＧＥ、データ長、そして目的とするＬＢＡをレジスタ群３２１のリスト・ライト・テーブルにセットする。同様に、ＭＰＵ２３１は、データ・ブロック１そしてデータ・ブロック２に対応した、ポインタＤＰＡＧＥ、データ長、目的とするＬＢＡを、レジスタ群３２１のリスト・ライト・テーブルに、順次、セットする。なお、この処理に並行して、アクチュエータ１６は、ヘッド・スライダ１２をターゲット・トラックに移動する。
【００４５】
ＭＰＵ２３からリスト・ライトの指示があると、メモリ・マネージャ３２２は、リスト・ライト・テーブルに登録されているデータ・ブロック１〜データ・ブロック３を、指定されている順序に従ってリング・バッファ２５１から取り出し、それらを、順次、ＲＷチャネル２１（磁気ディスク１１）に転送する。つまり、メモリ・マネージャ３２２は、データ・ブロック３、データ・ブロック１、データ・ブロック２の順序で、各データ・ブロックを磁気ディスク１１に書き出す。これらの処理が完了すると、ＨＤＣ２３２は、その完了をＭＰＵ２３１に通知する。なお、上記転送処理の間、ポインタＨＰＡＧＥとポインタＤＣＰＡＧＥとは、最後に格納されたデータ・ブロック３の次のアドレスに維持される。
【００４６】
次に、リング・バッファ２４１からフラッシュ・メモリ装置２５へのデータ転送におけるポインタ制御について、図９を参照して説明する。図９は、一つのデータ・ブロックをフラッシュ・メモリ装置２５に転送する例を示している。データ・ブロックは、リング・バッファ２４１内で連続した領域に格納されていると共に、磁気ディスク１１上のＬＢＡにおいても連続している。リング・バッファ２４１の連続領域に格納されていても、ＬＢＡが連続してないデータは、異なるデータ・ブロックとして処理される。
【００４７】
ポインタＨＣＰＡＧＥ、ＨＰＡＧＥは、上記の例と同じものである。フラッシュ・メモリ装置２５へのデータ転送においても、ポインタＤＰＡＧＥが使用される。ポインタＣＰＬＢＡ（Complete LBA）は、転送されるデータ・ブロックの最終ＬＢＡを示す。ポインタＮＶＰＡＧＥは、セル・アレイ２５２におけるデータ・ブロックの格納開始アドレスを示す。ＤＬＢＡは、データ・ブロックの磁気ディスク１１上のＬＢＡを示すデータである。
【００４８】
ＭＰＵ２３１は、ポインタＤＰＡＧＥとＣＰＬＢＡとをレジスタ群３２１にセットする。ＭＰＵ２３１は、さらに、ＤＬＢＡをレジスタ群３２１にセットする。メモリ・マネージャ３２２は、ＭＰＵ２３１から指示にしたがって、データ・ブロックの転送を開始する。転送されるデータは、データ・ブロックとＤＬＢＡである。データ・ブロックのデータ転送に従って、メモリ・マネージャ３２２は、ポインタＤＰＡＧＥをインクリメントする。フラッシュ・メモリ装置２５は、ポインタＮＶＰＡＧＥが示すアドレスに転送されてくるデータを保存する。ポインタＤＰＡＧＥがポインタＣＰＬＢＡに追いつくと、メモリ・マネージャ３２２はデータ転送を完了し、それをＭＰＵ２３１に通知する。
【００４９】
以上の説明が、リング・バッファ２４１から磁気ディスク１１へのデータ転送処理、そして、リング・バッファ２４１からフラッシュ・メモリ装置２５へ一つのデータ・ブロックを転送する処理のポインタ制御である。本例のＨＤＣ／ＭＰＵ２３は、これらのポインタを利用して、フラッシュ・メモリ装置２５における複数データ・ブロックの一括書き込み処理を制御する。
【００５０】
図１０（ａ）〜図１０（ｃ）を参照して、フラッシュ・メモリ装置２５への複数データ・ブロックの転送処理及びそれら複数データ・ブロックのセル・アレイ２５２への一括書き込み処理におけるポインタ制御ついて説明する。このポインタ制御は、図４（ａ）〜図４（ｃ）を参照して説明したポインタ制御に従う。ポインタＤＰＡＧＥは転送ポインタの一例であり、ポインタＣＰＬＢＡは転送完了ポインタの一例であり、ポインタＤＣＰＡＧＥは転送中断ポインタの一例である。
【００５１】
まず、図１０（ａ）に示すように、ＭＰＵ２３１は、データ・ブロック３に対応するポインタＤＰＡＧＥとＤＣＰＡＧＥとをレジスタ群３２１に設定する。ポインタＣＰＬＢＡは、データ・ブロック２に対応する位置に設定される。メモリ・マネージャ３２２は、データ・ブロック３のデータ転送を開始する。データ・ブロック３のデータ転送に従って、メモリ・マネージャ３２２は、ポインタＤＰＡＧＥをインクリメントする。ポインタＤＰＡＧＥがポインタＤＣＰＡＧＥに追いつくと、メモリ・マネージャ３２２はデータ転送を中断し、それをＭＰＵ２３１に通知する。
【００５２】
通知を受けたＭＰＵ２３１は、データ・ブロック１に対応するポインタＤＰＡＧＥとＤＣＰＡＧＥとをレジスタ群３２１に設定する。メモリ・マネージャ３２２は、データ・ブロック１のデータ転送を開始する。ポインタＤＰＡＧＥがポインタＤＣＰＡＧＥに追いつくと、メモリ・マネージャ３２２はデータ転送を中断し、それをＭＰＵ２３１に通知する。通知を受けたＭＰＵ２３１は、データ・ブロック２に対応するポインタＤＰＡＧＥをレジスタ群３２１に設定する。
【００５３】
メモリ・マネージャ３２２は、データ・ブロック２のデータ転送を開始する。ポインタＤＰＡＧＥがポインタＣＰＬＢＡに追いつくと、データ・ブロック１〜３の転送処理が完了する。メモリ・マネージャ３２２は、転送完了の通知をフラッシュ・コントローラ２５３に行う。フラッシュ・コントローラ２５３は、バッファ２５１に格納されている３つのデータ・ブロック１〜３を、一回の書き込み処理でセル・アレイ２５２に保存する。
【００５４】
上述のように、転送開始を示すポインタＤＰＡＧＥ、転送中断を指示ポインタＤＣＰＡＧＥ、そして転送完了を示すポインタＣＰＬＢＡを利用することによって、リング・バッファ２４１から複数のデータ・ブロック１〜３を転送し、さらに、それらデータ・ブロック１〜３を、まとめてフラッシュ・メモリ装置２５のセル・アレイ２５２に書き込むことができる。
【００５５】
また、上述のように、データ・ブロック１〜３をリオーダリングして転送する処理は、リオーダされた順序において、データ・ブロック１〜３のＬＢＡが連続し、一つのセグメントとして扱うことができる場合に有効である。つまり、例えば、データ・ブロック１、２、３のＬＢＡがそれぞれ、１１０ｈ−１１ｆｈ、１２０ｈ−１２Ｆｈ、１００ｈ−１０Ｆｈであるとする。この場合、上述のようにデータ・ブロック３、１、２の順序にリオーダすることで、３つのデータ・ブロックを一つのセグメントとして扱うことができる。
【００５６】
図６（ａ）を参照して説明したように、ホスト５１がライト・コマンドを発行すると、メモリ・マネージャ３２２は、自動的にポインタＨＰＡＧＥを設定する。メモリ・マネージャ３２２は、さらに、ポインタＨＰＡＧＥに対応するポインタＤＣＰＡＧＥも設定する。フラッシュ・メモリ装置２５への複数データ・ブロックの転送中にライト・コマンドが発行され、ポインタＤＣＰＡＧＥがそれに応じて設定されると、データ転送を中断する正確なポイントが失われ、データ転送にエラーが発生することが考えられる。
【００５７】
そこで、ＭＰＵ２３１は、フラッシュ・メモリ装置２５への複数データ・ブロックの転送を開始する前に、ポインタＤＣＰＡＧＥをライト・コマンドにリンクせず、それと独立して変化するように設定する。具体的には、ＭＰＵ２３１は、レジスタ群３２１にそれを指示するフラグを設定する。メモリ・マネージャ３２２は、このフラグが格納されているレジスタを参照し、フラグが立っている場合には、ホスト５１からのライト・コマンドを受けてもポインタＤＣＰＡＧＥを変更しない。転送処理が完了すると、ＭＰＵ２３１は、上記のフラグを解除する。この処理によって、フラッシュ・メモリ装置２５への複数データ・ブロックの転送中にライト・コマンドを受信しても、安全かつ正確にデータ・ブロックをフラッシュ・メモリ装置２５へ転送することができる。
【００５８】
次に、データ・ブロック１〜３を、リオーダすることなく、データ・ブロック１、２、３の順序でフラッシュ・メモリ装置２５へ転送する例について説明する。バッファの格納順序に従ってフラッシュ・メモリ装置２５へデータ・ブロックを転送するため、転送処理をより簡便化することができる。図１１（ａ）〜図１１（ｃ）を参照して、この処理について具体的に説明する。
【００５９】
まず、図１１（ａ）に示すように、ＭＰＵ２３１は、データ・ブロック１に対応するポインタＤＰＡＧＥとＤＣＰＡＧＥとをレジスタ群３２１に設定する。ポインタＣＰＬＢＡは、ポインタＨＰＡＧＥに対応する位置に設定される。メモリ・マネージャ３２２は、データ・ブロック１のデータ転送を開始する。データ・ブロック１のデータ転送に従って、メモリ・マネージャ３２２は、ポインタＤＰＡＧＥをインクリメントする。ポインタＤＰＡＧＥがポインタＤＣＰＡＧＥに追いつくと、メモリ・マネージャ３２２はデータ転送を中断し、それをＭＰＵ２３１に通知する。
【００６０】
通知を受けたＭＰＵ２３１は、データ・ブロック２に対応するポインタＤＰＡＧＥとＤＣＰＡＧＥとをレジスタ群３２１に設定する。メモリ・マネージャ３２２は、データ・ブロック２のデータ転送を開始する。ポインタＤＰＡＧＥがポインタＤＣＰＡＧＥに追いつくと、メモリ・マネージャ３２２はデータ転送を中断し、それをＭＰＵ２３１に通知する。通知を受けたＭＰＵ２３１は、データ・ブロック３に対応するポインタＤＰＡＧＥをレジスタ群３２１に設定する。
【００６１】
メモリ・マネージャ３２２は、データ・ブロック３のデータ転送を開始する。ポインタＤＰＡＧＥがポインタＣＰＬＢＡに追いつくと、データ・ブロック１〜３の転送処理が完了する。メモリ・マネージャ３２２は、転送完了の通知をフラッシュ・コントローラ２５３に行う。フラッシュ・コントローラ２５３は、バッファ２５１に格納されている３つのデータ・ブロック１〜３を、一回の書き込み処理でセル・アレイ２５２に保存する。
【００６２】
上述のように、転送開始を示すポインタＤＰＡＧＥ、転送中断を指示ポインタＤＣＰＡＧＥ、そして転送完了を示すポインタＣＰＬＢＡを利用することによって、リング・バッファ２４１から複数のデータ・ブロック１〜３を転送し、さらに、それらデータ・ブロック１〜３を、まとめてフラッシュ・メモリ装置２５のセル・アレイ２５２に書き込むことができる。
【００６３】
以上、本発明について好ましい態様を使用して説明したが、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、上述の実施の形態においては、ＨＤＤを例にとって説明したが、光ディスクや光磁気ディスクなど他のディスクを使用するディスク・ドライブ装置に本発明を適用してもよい。
【００６４】
データ・ブロックは、リング・バッファからフラッシュ・メモリ装置へ転送される単位を意味しており、上記のデータ・ブロックに限定されるものではない。不揮発性半導体メモリ装置としては、フラッシュ・メモリ装置以外のメモリ装置を使用してもよい。また、複数のＩＣを使用して不揮発性半導体メモリ装置のメモリ領域を形成してもよい。フラッシュ・メモリ装置は、メモリ・マネージャからの指示ではなく、ＣＰＬＢＡ（転送完了ポインタ）を自ら参照することによって、一括書き込みのタイミングを特定してもよい。ＣＰＬＢＡ（転送完了ポインタ）は、複数データ・ブロックの転送中のいずれかのタイミングで設定してもよい。
【図面の簡単な説明】
【００６５】
【図１】本実施の形態にかかるハードディスク・ドライブの全体構成を模式的に示すブロック図である。
【図２】本実施の形態において、リング・バッファからフラッシュ・メモリ装置へのデータ転送を模式的に示すブロック図である。
【図３】本実施の形態において、フラッシュ・メモリ装置が複数のデータ・ブロックを、一度にまとめてセル・アレイに書き込む処理を模式的に示すブロック図である。
【図４】本実施の形態において、図３に示した処理におけるリング・バッファのポインタ制御について説明する図である。
【図５】本実施の形態において、リング・バッファからフラッシュ・メモリ装置へのデータ転送及びフラッシュ・メモリ装置内のデータ保存処理に関連する機能構成要素を模式的に示すブロック図である。
【図６】本実施の形態において、ホストからのデータをリング・バッファに格納する処理を模式的に示す図である。
【図７】本実施の形態において、データ・ブロックをリング・バッファから磁気ディスクに書き出す処理を説明する図である。
【図８】本実施の形態において、リング・バッファ内の複数データ・ブロックを、リング・バッファ内のアドレス順序とは異なる順序で磁気ディスクに転送する処理の例を説明する図である。
【図９】本実施の形態において、リング・バッファからフラッシュ・メモリ装置２５へのデータ転送におけるポインタ制御について説明する図である。
【図１０】本実施の形態において、フラッシュ・メモリ装置への複数データ・ブロックの転送処理及びそれら複数データ・ブロックのセル・アレイへの一括書き込み処理におけるポインタ制御ついて説明する図である。
【図１１】本実施の形態において、フラッシュ・メモリ装置への複数データ・ブロックの転送処理及びそれら複数データ・ブロックのセル・アレイへの一括書き込み処理におけるポインタ制御の他の例について説明する図である。
【符号の説明】
【００６６】
１  ハードディスク・ドライブ、１０  エンクロージャ、１１  磁気ディスク
１２  ヘッド・スライダ、１３  アーム・エレクトロニクス、１４  スピンドル・モータ
１５  ボイス・コイル・モータ、１６  アクチュエータ、２０  回路基板
２１  リード・ライト・チャネル、２２  モータ・ドライバ・ユニット
２３  ハードディスク・コントローラ／マイクロ・プロセッサ・ユニット
２４  ランダム・アクセス・メモリ、２５  フラッシュ・メモリ装置
２３１  マイクロ・プロセッサ・ユニット、２３２  ハードディスク・コントローラ
３２１  レジスタ群、３２２  メモリ・マネージャ
２４１  リング・バッファ、２５１  フラッシュ・メモリ装置内のバッファ
２５２  フラッシュ・メモリ装置のセル・アレイ、２５３  フラッシュ・コントローラ
【図１】
2009054209.tif 000003
【図２】
2009054209.tif 000004
【図３】
2009054209.tif 000005
【図４】
2009054209.tif 000006
【図５】
2009054209.tif 000007
【図６】
2009054209.tif 000008
【図７】
2009054209.tif 000009
【図８】
2009054209.tif 000010
【図９】
2009054209.tif 000011
【図１０】
2009054209.tif 000012
【図１１】
2009054209.tif 000013