JP2009054209A - 不揮発性半導体メモリ装置を有するディスク・ドライブ装置及びそのディスク・ドライブ装置において不揮発性半導体メモリ装置にデータを格納する方法 - Google Patents
不揮発性半導体メモリ装置を有するディスク・ドライブ装置及びそのディスク・ドライブ装置において不揮発性半導体メモリ装置にデータを格納する方法 Download PDFInfo
- Publication number
- JP2009054209A JP2009054209A JP2007217560A JP2007217560A JP2009054209A JP 2009054209 A JP2009054209 A JP 2009054209A JP 2007217560 A JP2007217560 A JP 2007217560A JP 2007217560 A JP2007217560 A JP 2007217560A JP 2009054209 A JP2009054209 A JP 2009054209A
- Authority
- JP
- Japan
- Prior art keywords
- transfer
- pointer
- data
- memory device
- data block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Signal Processing For Digital Recording And Reproducing (AREA)
- Read Only Memory (AREA)
Abstract
【課題】不揮発性半導体メモリ装置を有するディスク・ドライブ装置において、効率的なリング・バッファ制御を行う。
【解決手段】本発明の一形態において、HDD1は、フラッシュ・メモリ装置25を有する。HDD1は、セクタ・バッファとしてリング・バッファ241を使用する。フラッシュ・メモリ装置は、特定データ・サイズの記録単位を有しており、その記録単位毎にメモリ領域にユーザ・データを書き込む。フラッシュ・メモリ装置は、記録単位内において一つにまとめた複数のデータ・ブロックを、メモリ領域に一括して書き込む。これより、処理効率を向上することができる。セクタ・バッファのポインタを効果的に制御することで、効率的なリング・バッファ制御を行う。
【選択図】図3
【解決手段】本発明の一形態において、HDD1は、フラッシュ・メモリ装置25を有する。HDD1は、セクタ・バッファとしてリング・バッファ241を使用する。フラッシュ・メモリ装置は、特定データ・サイズの記録単位を有しており、その記録単位毎にメモリ領域にユーザ・データを書き込む。フラッシュ・メモリ装置は、記録単位内において一つにまとめた複数のデータ・ブロックを、メモリ領域に一括して書き込む。これより、処理効率を向上することができる。セクタ・バッファのポインタを効果的に制御することで、効率的なリング・バッファ制御を行う。
【選択図】図3
Description
本発明はユーザ・データを保存するためのディスクと不揮発性半導体メモリ装置とを有するディスク・ドライブ装置及びそのディスク・ドライブ装置において不揮発性半導体メモリ装置にデータを格納する方法に関する。
データ記憶装置として、光ディスク、光磁気ディスク、あるいはフレキシブル磁気ディスクなどの様々な態様のメディアを使用する装置が知られているが、その中で、ハードディスク・ドライブ(HDD)は、コンピュータの記憶装置として広く普及し、現在のコンピュータ・システムにおいて欠かすことができない記憶装置の一つとなっている。さらに、コンピュータにとどまらず、動画像記録再生装置、カーナビゲーション・システム、携帯電話など、HDDの用途は、その優れた特性により益々拡大している。
HDDは、磁気ディスクへのアクセス(リードもしくはライト)のために、磁気ディスクを回転し、ヘッド・スライダを目的のデータ・セクタに移動する。このため、HDDの消費電力は半導体メモリに比較して大きく、また、そのアクセス・スピードも半導体メモリよりも遅い。特に、スピンドル・モータのスピン・アップ時間は他の動作に比較して多くの時間を必要とする。このため、HDDの起動時や、省電力低減のためのパワー・セーブ・モードから復帰するときに多くの処理時間を必要とする。
このため、HDDに不揮発性半導体メモリ装置の一つであるフラッシュ・メモリ装置を実装することが提案されている(例えば、特許文献1を参照)。フラッシュ・メモリ装置は半導体メモリ装置であるため、磁気ディスクよりもアクセス・スピードが速く、消費電力が小さい。また、フラッシュ・メモリ装置は不揮発性メモリ装置であるため、電源オフ状態であってもデータを保存しておくことができる。
HDDに実装するフラッシュ・メモリ装置の容量は、コストなどの点から制限される。従って、典型的には、HDDは特定のユーザ・データのみをフラッシュ・メモリ装置に保存し、その他のユーザ・データを磁気ディスクに保存する。例えば、ホストの起動に必要なデータや、ホストが頻繁にアクセスするデータをフラッシュ・メモリ装置に保存しておくことによって、ホストの起動時間の短縮、HDDのパフォーマンスの向上、あるいはスピンドル・モータの回転数を小さくするパワー・セーブ・モードによる消費電力の低減を図ることができる。
フラッシュ・メモリ装置は、そのセル・アレイに対して、特定の大きさのデータ単位でデータを書き込む。従って、一コマンドに対応した小さいデータ・ブロック毎にデータを書き込むのではなく、上記データ単位内で複数のデータ・ブロックをまとめて、それらを同時にフラッシュ・メモリ装置のアレイ・セルに書き込むことが好ましい。セル・アレイへのデータ書き込みは相応の処理時間を必要とするため、これによって処理時間の短縮とパフォーマンスの向上を図ることができる(例えば、特許文献2を参照)。
特開2006−114206号公報
特開2006−236304号公報
ホストからのライト・データは、バッファに一時的に格納された後、磁気ディスクあるいはフラッシュ・メモリ装置に保存される。バッファリングの方法としてはいくつかのものが知られているが、制御処理が単純であり処理効率が高いことから、リング・バッファが多くのHDDにおいて採用されている。リング・バッファは、先頭アドレスから最後アドレスに向かう方向に、順次、データを格納していく。さらに、その先頭アドレスと最後アドレスが連続しており、リング・バッファはリング状のバッファ構造を有している。
フラッシュ・メモリ装置による複数のデータ・ブロックの一括書き込みを実現する場合、その処理は、リング・バッファから磁気ディスクへのデータ転送(書き込み)あるいはフラッシュ・メモリ装置のデータ・ブロック単位のデータ書き込み処理と機能を共有することが好ましい。これによって、フラッシュ・メモリ付HDDに一括書き込み処理を実装しやすくなり、また制御回路構成をシンプルなものとすることができる。また、一括書き込み処理は他の処理と異なるため、それに特有の機能を実装することも重要である。
本発明の一態様に係るディスク・ドライブ装置は、ホストからのデータを格納するリング・バッファと、前記リング・バッファから転送されたデータを格納するディスクと、前記リング・バッファに対して、転送ポインタと転送完了ポインタと転送中断ポインタとを設定するバッファ制御部と、前記転送ポインタに従ってデータ・ブロック毎にデータを前記リング・バッファから転送し、前記転送中断ポインタに従ってデータ転送を中断し、前記転送完了ポインタに従ってデータ転送を完了する転送処理部と、前記リング・バッファから転送されたデータをセル・アレイに格納する不揮発性半導体メモリ装置とを有する。前記バッファ制御部は、一または複数のデータ・ブロックのそれぞれに対応する転送ポインタと転送中断ポインタとを設定し、さらに、最後データ・ブロックに対応する転送ポインタと転送完了ポインタとを設定する。前記転送処理部は、前記対応する転送ポインタと転送中断ポインタとに従って前記一または複数のデータ・ブロックを前記不揮発性半導体メモリ装置に順次転送し、その後、前記転送ポインタと前記転送完了ポインタに従って前記最後データ・ブロックを前記不揮発性半導体メモリ装置に転送する。前記不揮発性半導体メモリ装置は、前記最後データ・ブロックを受け取ると、受け取った前記一または複数のデータ・ブロック及び前記最後データ・ブロックを、まとめて前記セル・アレイに格納する。上記構成によって、通常のリング・バッファの制御において必要とされるポインタを使用して、不揮発性メモリ装置における複数データ・ブロックの一括書き込み処理を行うことができる。
好ましくは、前記転送処理部は、前記転送中断ポインタ毎に前記バッファ制御部に転送の中断を通知し、前記バッファ制御部は、前記中断の通知を受けると、次のデータ・ブロックに対応したポインタ設定を行う。このように転送中断ポインタの機能を使用することで、一つの転送中断ポインタで制御することができる。
好ましくは、前記転送中断ポインタは、次にホストから転送されるライト・データが格納される位置に対応し、前記不揮発性半導体メモリが一つのデータ・ブロックのみを前記セル・アレイに格納する場合において、前記転送処理部は、前記一つのデータ・ブロックの転送中に転送データのアドレスが対応する転送中断ポインタに追いついた場合、その転送を中断する。これによって、複数データ・ブロックの転送と一つのデータ・ブロックのみの転送とを、同一のポインタを使用して制御することができる。
前記転送処理部が前記複数のデータ・ブロック及び前記最後のデータ・ブロックを転送している間、前記転送中断ポインタの位置はライト・コマンドと独立に制御されることが好ましい。これによって、ライト・コマンドによって複数データ・ブロックのデータ転送が阻害されることを避けることができる。
前記転送処理部は、前記ディスクへのデータ転送中に転送データのアドレスが前記中断ポインタに追いついた場合にその転送を中断することが好ましい。これによって、ディスクへのデータ転送と不揮発性メモリ装置へのデータ転送とにおいて同じポインタを利用することができる。
本発明の他の態様は、データを記憶するディスクと不揮発性半導体メモリ装置とを有するディスク・ドライブ装置において、前記不揮発性半導体メモリ装置のセル・アレイにデータを格納する方法である。この方法は、リング・バッファから転送する第1データ・ブロックに対応した転送ポインタと転送中断ポインタとを設定する。前記転送ポインタに従って前記第1データ・ブロックを前記不揮発性半導体メモリ装置に転送し、前記転送中断ポインタに従って前記不揮発性半導体メモリ装置へのデータ転送を中断する。前記リング・バッファから転送する第2データ・ブロックに対応する転送ポインタと転送完了ポインタとを設定する。前記転送ポインタに従って前記第2データ・ブロックを前記不揮発性半導体メモリ装置に転送し、前記転送完了ポインタに従って前記不揮発性半導体メモリ装置へのデータ転送を完了する。前記第2データ・ブロックの転送後に、前記第1及び前記第2データ・ブロックをまとめて前記セル・アレイに格納する。上記方法によって、通常のリング・バッファの制御において必要とされるポインタを使用して、不揮発性メモリ装置における複数データ・ブロックの一括書き込み処理を行うことができる。
本発明によれば、不揮発性半導体メモリ装置を有するディスク・ドライブ装置において、複数データ・ブロックを不揮発性半導体メモリ装置のセル・アレイにまとめて書き込む場合、効率的なリング・バッファ制御を行うことができる。
以下に、本発明を適用可能な実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、各図面において、同一要素には同一の符号が付されており、必要に応じて重複説明は省略されている。以下においては、ディスク・ドライブ装置の一例であるハードディスク・ドライブ(HDD)について説明する。
本形態のHDDは、ユーザ・データを保存するために、磁気ディスク領域の他にフラッシュ・メモリ装置を有する。フラッシュ・メモリ装置は、不揮発性半導体メモリ装置である。本形態のHDDは、セクタ・バッファとしてリング・バッファを使用する。本形態のフラッシュ・メモリ装置は、特定データ・サイズの記録単位を有しており、その記録単位毎にメモリ領域にデータを書き込む。フラッシュ・メモリ装置は、セクタ・バッファからの複数のデータ・ブロックを、記録単位内において一つにまとめる。フラッシュ・メモリ装置は、さらに、一つにまとめた複数のデータ・ブロックをメモリ領域に一括して書き込む。このように、セクタ・バッファからの複数データ・ブロックを、上記記録単位内でまとめ、それらを同時にメモリ領域に書き込むことで、処理効率を向上することができる。本実施形態は、上記書き込み処理におけるセクタ・バッファのポインタ制御に特徴を有している。
まず、本形態のHDDの全体構成を、図1のブロック図を参照して説明する。HDD1は、エンクロージャ10の外側に固定された回路基板20を備えている。回路基板20上には、リード・ライト・チャネル(RWチャネル)21、モータ・ドライバ・ユニット22、ハードディスク・コントローラ(HDC)とマイクロ・プロセッサ・ユニット(MPU)の集積回路(HDC/MPU)23、揮発性半導体メモリであるRAM24、及び不揮発性半導体メモリ装置であるフラッシュ・メモリ装置25などの各回路を有している。
エンクロージャ10内において、スピンドル・モータ(SPM)14は所定の角速度で磁気ディスク11を回転する。磁気ディスク11は、データを記憶する不揮発性のディスク・メモリである。各ヘッド・スライダ12は、磁気ディスク上を浮上するスライダと、スライダに固定され磁気信号と電気信号との間の変換(データの読み書き)を行うヘッド素子部とを有している。各ヘッド・スライダ12はアクチュエータ16の先端部に固定されている。アクチュエータ16はボイス・コイル・モータ(VCM)15に連結され、回動軸を中心に回動することによって、ヘッド・スライダ12を回転する磁気ディスク11上においてその半径方向に移動する。モータ・ドライバ・ユニット22は、HDC/MPU23からの制御データに従って、SPM14及びVCM15を駆動する。
アーム電子回路(AE:Arm Electronics)13は、HDC/MPU23からの制御データに従って複数のヘッド素子部12の中から磁気ディスク11にアクセス(リードもしくはライト)するヘッド・スライダ12を選択し、リード/ライト信号の増幅を行う。RWチャネル21は、リード処理において、AE13から取得したリード信号からサーボ・データ及びユーザ・データを抽出し、デコード処理を行う。デコード処理されたデータは、HDC/MPU23に供給される。また、RWチャネル21は、ライト処理において、HDC/MPU23から供給されたライト・データをコード変調し、さらに、コード変調されたデータをライト信号に変換してAE13に供給する。
HDC/MPU23において、HDCはロジック回路であり、MPUはRAM24にロードされたファームウェアに従って動作する。HDD1の起動に伴い、RAM24には、制御及びデータ処理に必要とされるデータが磁気ディスク11やフラッシュ・メモリ装置25からロードされる。HDC/MPU23は、ヘッド・ポジショニング制御、インターフェース制御、ディフェクト管理などのデータ処理に関する必要な処理の他、HDD1の全体制御を実行する。
ホスト51からのユーザ・データ(ライト・データ)は、RAM24内のセクタ・バッファに一旦格納された後、磁気ディスク11及び/もしくはフラッシュ・メモリ装置25に保存される。フラッシュ・メモリ装置25に保存するデータは、磁気ディスク11のLBAで特定することができる。HDC/MPU23は、予め設定されているLBAへのライト・コマンドを受信すると、そのユーザ・データをフラッシュ・メモリ装置25に保存する。HDC/MPU23は、フラッシュ・メモリ装置25に保存するユーザ・データのLBAを自ら設定することができ、また、ホスト51から指定されたLBAのユーザ・データをフラッシュ・メモリ装置25に保存する。
本形態のHDD1は、ライト・データのセクタ・バッファとして、リング・バッファを使用する。リング・バッファは、先頭アドレスから最後アドレスに向かう方向に、順次、データを格納していく。さらに、その先頭アドレスと最後アドレスが連続しており、リング・バッファはリング状のバッファ構造を有している。具体的には、最後アドレスにデータを格納した後、リング・バッファは最初アドレスから順次データを格納する。
リング・バッファへのデータ書き込み及びリング・バッファからのデータ読み出しは、ポインタによって制御される。図2は、リング・バッファ241からフラッシュ・メモリ装置25へのデータ転送を模式的に示すブロック図である。転送ポインタが示すアドレスから転送完了ポインタが示すアドレスまでの連続領域に格納されているデータ・ブロックが、フラッシュ・メモリ装置25に転送される。転送ポインタは、データ転送に従って、転送完了ポインタに向かって順次移動していく。
フラッシュ・メモリ装置25は、内部バッファ251とセル・アレイ252とを有している。内部バッファ251は、RAMにより構成することができる。セル・アレイ252は半導体論理回路で構成され、その記憶領域は不揮発性半導体メモリ領域である。フラッシュ・メモリ装置25は、リング・バッファ241からのデータ・ブロックを、一時的に内部バッファ251に格納した後、セル・アレイ252にそれを保存する。フラッシュ・メモリ装置25は、転送完了ポインタが示すデータ・ブロックを取得すると、バッファ251内のデータをセル・アレイ252に保存する。フラッシュ・メモリ装置25は、特定の書き込み単位毎に、セル・アレイ252にデータを書き込む。例えば、書き込み単位のサイズは、32KBである。データ書き換えにおいて、フラッシュ・メモリ装置25は、書き込み単位の領域のデータ消去を行い、その後、その領域に書き込み単位でデータを書き込む。
図3は、フラッシュ・メモリ装置25が複数のデータ・ブロックを、一度にまとめてセル・アレイ252に書き込む処理を模式的に示すブロック図である。図3の例において、リング・バッファ241内のデータ・ブロック3が最初にフラッシュ・メモリ装置25に転送される[1]。その後、データ・ブロック1がフラッシュ・メモリ装置25に転送され[2]、最後にデータ・ブロック2がフラッシュ・メモリ装置25に転送される[3]。データ・ブロック1〜3は、フラッシュ・メモリ装置25の内部バッファ251に格納される。
データ・ブロック1〜3のトータルのデータ・サイズは、セル・アレイ252への書き込み単位よりも小さい。フラッシュ・メモリ装置25は、内部バッファ251内のデータ・ブロック1〜3を、まとめてセル・アレイ252に書き込む[4]。複数のデータ・ブロックをまとめて書き込むことによって、データ書き込む回数を低減し、パフォーマンスを向上することができる。
続いて、図4(a)〜図4(c)を参照して、図3に示した処理におけるリング・バッファ241のポインタ制御について説明する。以下のバッファ制御は、転送完了ポインタの他に、転送中断ポインタを使用する。データ・ブロックの転送順序は、図3における順序と同一である。最初に、図4(a)に示すように、転送ポインタと転送中断ポインタが、データ・ブロック3に対してセットされる。データ・ブロック3は、リング・バッファ241からフラッシュ・メモリ装置25に転送される[1]。フラッシュ・メモリ装置25は、転送中断ポインタが特定するデータ・ブロック3をセル・アレイ252に書き込むことなく、バッファ251内に保持する。
次に、図4(b)に示すように、転送ポインタと転送中断ポインタが、データ・ブロック1に対してセットされる。データ・ブロック1は、リング・バッファ241からフラッシュ・メモリ装置25に転送される[2]。フラッシュ・メモリ装置25は、転送中断ポインタが特定するデータ・ブロック1をセル・アレイ252に書き込むことなく、バッファ241内に保持する。
最後に、図4(c)に示すように、転送ポインタと転送完了ポインタが、データ・ブロック2に対してセットされる。データ・ブロック2は、リング・バッファ241からフラッシュ・メモリ装置25に転送される[3]。フラッシュ・メモリ装置25は、転送完了ポインタが特定するデータ・ブロック2をバッファ251に格納する。データ・ブロック2の指定に転送完了ポインタが使用されているため、フラッシュ・メモリ装置25は、内部バッファ251に格納されている3つのデータ・ブロック1〜3を、一度の処理でセル・アレイ252に書き込む。
図5は、リング・バッファ241からフラッシュ・メモリ装置25へのデータ転送及びフラッシュ・メモリ装置25内のデータ保存処理に関連する機能構成要素を模式的に示すブロック図である。図5のブロック図を参照して、図4に示した処理における各構成要素の動作について説明する。まず、MPU231は、HDC232内のレジスタ群321に、転送ポインタと転送中断ポインタを設定する。メモリ・マネージャ322は、その転送ポインタと転送中断ポインタに従って、リング・バッファ241からデータ・ブロック3を取得し、それをフラッシュ・メモリ装置25に転送する。フラッシュ・メモリ装置25内のフラッシュ・コントローラ253は、メモリ・マネージャ322からの転送データ・ブロック3を、バッファ251に格納する。
メモリ・マネージャ322は、転送中断ポインタが示すデータ・ブロック3の転送が完了すると、割り込みによってそれをMPU231に通知する。MPU231は、その通知に応答して、転送ポインタと転送中断ポインタをレジスタ群321に再設定する。これらポインタは、データ・ブロック1を示す。メモリ・マネージャ322は、その転送ポインタと転送中断ポインタに従って、リング・バッファ241からデータ・ブロック1を取得し、それをフラッシュ・メモリ装置25に転送する。フラッシュ・メモリ装置25内のフラッシュ・コントローラ253は、メモリ・マネージャ322からの転送データ・ブロック1を、バッファ251に格納する。
メモリ・マネージャ322は、転送中断ポインタが示すデータ・ブロック1の転送が完了すると、それをMPU231に通知する。MPU231は、その通知に応答して、転送ポインタと転送完了ポインタを設定する。これらポインタは、データ・ブロック2を示す。メモリ・マネージャ322は、その転送ポインタと転送完了ポインタに従って、リング・バッファ241からデータ・ブロック1を取得し、それをフラッシュ・メモリ装置25に転送する。フラッシュ・メモリ装置25内のフラッシュ・コントローラ253は、メモリ・マネージャ322からの転送データ・ブロック1を、バッファ251に格納する。
メモリ・マネージャ322は、転送完了ポインタのデータ・ブロック2の転送が完了すると、フラッシュ・コントローラ253に対して、セル・アレイ253へのデータ書き込みを指示する。フラッシュ・コントローラ253は、フラッシュ・コントローラ253からの指示に従って、バッファ521内に格納されているデータ・ブロック1〜3を、まとめてセル・アレイ252に書き込む。
リング・バッファ241は、特定の記憶領域内において、新しいデータを古いデータに上書きしていく。従って、既にリング・バッファ241から転送したデータを、再び転送することを禁止するポインタが必要となる。上記転送中断ポインタは、このように、転送済データを誤って再転送することを防ぐポインタとして使用される。この転送中断ポインタを利用することによって、新たなポインタを定義することなく、フラッシュ・メモリ装置25における複数データ・ブロックの一括書き込みを実現することができる。
以下においては、本発明に係るリング・バッファ制御のより具体的な例を説明する。HDD1は、ホスト51からのデータをリング・バッファ241に格納し、格納されているデータをフラッシュ・メモリ装置25と磁気ディスク11とに転送する。また、フラッシュ・メモリ装置25は、HDC/MPU23の制御に従って、一回の書き込み処理で一つのデータ・ブロックをセル・アレイ252に書き込む、あるいは、複数のデータ・ブロックをまとめて書き込む。
まず、ホスト51からのデータをリング・バッファ241に格納する処理について、図6(a)〜図6(c)を参照して説明する。図6(a)に示すように、メモリ・マネージャ322は、ホスト51からライト・コマンドを取得すると、ライト・データを格納するためのポインタHPAGEをレジスタ群321にセットする。ポインタHPAGEは、ホスト51からのデータの格納位置を示す。図6(b)に示すように、データがリング・バッファ241に格納されていくにしたがって、メモリ・マネージャ322はポインタHPAGEをインクリメントしていく。図6(c)に示すように、リング・バッファ241へのデータ・ブロックの格納が完了したタイミングで、ポインタHPAGEは次のデータを格納するアドレスを示している。
リング・バッファ241へのデータ・ブロックの格納が完了すると、メモリ・マネージャ322は、新たに格納したデータ・ブロックの開始位置を示すHCPAGEをレジスタ群321にセットする。ポインタHCPAGEは、ホスト51からデータの上書きを禁止するポインタである。ポインタHPAGEがHCPAGEに到着すると、メモリ・マネージャ322はリング・バッファ241へのデータ格納を中断し、MPU231にそれを通知する。MPU231は、その通知に対応した処理を実行する。
メモリ・マネージャ322は、さらに、ポインタHPAGEに対応したポインタDCPAGEをレジスタ群321にセットする。メモリ・マネージャ322は、ポインタDCPAGEを、ポインタHPAGEと同様にインクリメントする。ポインタDCPAGEは、リング・バッファ241から磁気ディスク11へのデータ転送において使用される。次に、図7(a)及び図7(b)を参照して、データ・ブロックをリング・バッファ241から磁気ディスク11に書き出す処理について説明する。
図7(a)に示すように、MPU231は、リング・バッファ241内のデータ・ブロックを指定するポインタDPAGEをレジスタ群321にセットする。また、MPU231は、転送するデータ長を示すデータもレジスタ群321にセットする。図7(b)に示すように、メモリ・マネージャ322は、ポインタDPAGEが示すデータから転送を開始し、データ転送に従ってポインタDPAGEをインクリメントする。
メモリ・マネージャ322は、ポインタDPAGEと同様に、ポインタHCPAGEをインクリメントする。ポインタDPAGEはデータ転送済みのアドレスを示すため、ホスト51からのデータによる上書きを禁止するポインタHCPAGEも、それに従って移動する。データ転送中にポインタDPAGEがポインタDCPAGEに追いつくと、メモリ・マネージャ322は転送を中断して、それをMPU231に通知する。図7(b)の例においては、ポインタDPAGEがポインタDCPAGEに追いつくことなく、データ・ブロックのデータ転送が完了する。
次に、図8(a)〜図8(c)を参照して、リング・バッファ241内の複数データ・ブロックを、リング・バッファ241内のアドレス順序とは異なる順序で磁気ディスク11に転送する処理の例を説明する。データ・ブロックのLBA順序とリング・バッファへの格納順序は、必ずしも一致するものではないため、磁気ディスク11への書き込み処理順序に合わせてデータ転送することで、書き込み時間の短縮を図ることができる。本例において、HDC/MPU23は、データ・ブロック1〜データ・ブロック3を磁気ディスク11に転送する。転送順序は、最初がデータ・ブロック3、次がデータ・ブロック1、そして最後がデータ・ブロック2である。リング・バッファ241への格納順序は、データ・ブロック1、データ・ブロック2、データ・ブロック3の順である。
この処理において、ポインタHCPAGEは、ポインタDPAGEとは独立に設定される。ポインタHCPAGEがポインタDPAGEに連動すると、この処理の途中においてホスト51からのデータをリング・バッファ241に格納する場合に不具合が生じる。つまり、データ・ブロック3の転送直後にホスト51からのデータを格納する場合、ポインタHCPAGEがポインタDPAGEと同じ値を示していると、データ・ブロック1あるいはデータ・ブロック2が、新しいデータで上書きされる可能性がある。そのため、MPU231は、ポインタHCPAGEを、データ・ブロック1の開始位置に設定し、ポインタHCPAGEはその位置に維持される。
MPU231は、HDC232が有する磁気ディスク11への順次書き出し機能(以下においてリスト・ライト機能と呼ぶ)を使用して、データ・ブロック1〜データ・ブロック3を磁気ディスク11に書き出す。以下、この処理について具体的に説明する。MPU231は、データ・ブロック3に対応したポインタDPAGE、データ長、そして目的とするLBAをレジスタ群321のリスト・ライト・テーブルにセットする。同様に、MPU231は、データ・ブロック1そしてデータ・ブロック2に対応した、ポインタDPAGE、データ長、目的とするLBAを、レジスタ群321のリスト・ライト・テーブルに、順次、セットする。なお、この処理に並行して、アクチュエータ16は、ヘッド・スライダ12をターゲット・トラックに移動する。
MPU23からリスト・ライトの指示があると、メモリ・マネージャ322は、リスト・ライト・テーブルに登録されているデータ・ブロック1〜データ・ブロック3を、指定されている順序に従ってリング・バッファ251から取り出し、それらを、順次、RWチャネル21(磁気ディスク11)に転送する。つまり、メモリ・マネージャ322は、データ・ブロック3、データ・ブロック1、データ・ブロック2の順序で、各データ・ブロックを磁気ディスク11に書き出す。これらの処理が完了すると、HDC232は、その完了をMPU231に通知する。なお、上記転送処理の間、ポインタHPAGEとポインタDCPAGEとは、最後に格納されたデータ・ブロック3の次のアドレスに維持される。
次に、リング・バッファ241からフラッシュ・メモリ装置25へのデータ転送におけるポインタ制御について、図9を参照して説明する。図9は、一つのデータ・ブロックをフラッシュ・メモリ装置25に転送する例を示している。データ・ブロックは、リング・バッファ241内で連続した領域に格納されていると共に、磁気ディスク11上のLBAにおいても連続している。リング・バッファ241の連続領域に格納されていても、LBAが連続してないデータは、異なるデータ・ブロックとして処理される。
ポインタHCPAGE、HPAGEは、上記の例と同じものである。フラッシュ・メモリ装置25へのデータ転送においても、ポインタDPAGEが使用される。ポインタCPLBA(Complete LBA)は、転送されるデータ・ブロックの最終LBAを示す。ポインタNVPAGEは、セル・アレイ252におけるデータ・ブロックの格納開始アドレスを示す。DLBAは、データ・ブロックの磁気ディスク11上のLBAを示すデータである。
MPU231は、ポインタDPAGEとCPLBAとをレジスタ群321にセットする。MPU231は、さらに、DLBAをレジスタ群321にセットする。メモリ・マネージャ322は、MPU231から指示にしたがって、データ・ブロックの転送を開始する。転送されるデータは、データ・ブロックとDLBAである。データ・ブロックのデータ転送に従って、メモリ・マネージャ322は、ポインタDPAGEをインクリメントする。フラッシュ・メモリ装置25は、ポインタNVPAGEが示すアドレスに転送されてくるデータを保存する。ポインタDPAGEがポインタCPLBAに追いつくと、メモリ・マネージャ322はデータ転送を完了し、それをMPU231に通知する。
以上の説明が、リング・バッファ241から磁気ディスク11へのデータ転送処理、そして、リング・バッファ241からフラッシュ・メモリ装置25へ一つのデータ・ブロックを転送する処理のポインタ制御である。本例のHDC/MPU23は、これらのポインタを利用して、フラッシュ・メモリ装置25における複数データ・ブロックの一括書き込み処理を制御する。
図10(a)〜図10(c)を参照して、フラッシュ・メモリ装置25への複数データ・ブロックの転送処理及びそれら複数データ・ブロックのセル・アレイ252への一括書き込み処理におけるポインタ制御ついて説明する。このポインタ制御は、図4(a)〜図4(c)を参照して説明したポインタ制御に従う。ポインタDPAGEは転送ポインタの一例であり、ポインタCPLBAは転送完了ポインタの一例であり、ポインタDCPAGEは転送中断ポインタの一例である。
まず、図10(a)に示すように、MPU231は、データ・ブロック3に対応するポインタDPAGEとDCPAGEとをレジスタ群321に設定する。ポインタCPLBAは、データ・ブロック2に対応する位置に設定される。メモリ・マネージャ322は、データ・ブロック3のデータ転送を開始する。データ・ブロック3のデータ転送に従って、メモリ・マネージャ322は、ポインタDPAGEをインクリメントする。ポインタDPAGEがポインタDCPAGEに追いつくと、メモリ・マネージャ322はデータ転送を中断し、それをMPU231に通知する。
通知を受けたMPU231は、データ・ブロック1に対応するポインタDPAGEとDCPAGEとをレジスタ群321に設定する。メモリ・マネージャ322は、データ・ブロック1のデータ転送を開始する。ポインタDPAGEがポインタDCPAGEに追いつくと、メモリ・マネージャ322はデータ転送を中断し、それをMPU231に通知する。通知を受けたMPU231は、データ・ブロック2に対応するポインタDPAGEをレジスタ群321に設定する。
メモリ・マネージャ322は、データ・ブロック2のデータ転送を開始する。ポインタDPAGEがポインタCPLBAに追いつくと、データ・ブロック1〜3の転送処理が完了する。メモリ・マネージャ322は、転送完了の通知をフラッシュ・コントローラ253に行う。フラッシュ・コントローラ253は、バッファ251に格納されている3つのデータ・ブロック1〜3を、一回の書き込み処理でセル・アレイ252に保存する。
上述のように、転送開始を示すポインタDPAGE、転送中断を指示ポインタDCPAGE、そして転送完了を示すポインタCPLBAを利用することによって、リング・バッファ241から複数のデータ・ブロック1〜3を転送し、さらに、それらデータ・ブロック1〜3を、まとめてフラッシュ・メモリ装置25のセル・アレイ252に書き込むことができる。
また、上述のように、データ・ブロック1〜3をリオーダリングして転送する処理は、リオーダされた順序において、データ・ブロック1〜3のLBAが連続し、一つのセグメントとして扱うことができる場合に有効である。つまり、例えば、データ・ブロック1、2、3のLBAがそれぞれ、110h−11fh、120h−12Fh、100h−10Fhであるとする。この場合、上述のようにデータ・ブロック3、1、2の順序にリオーダすることで、3つのデータ・ブロックを一つのセグメントとして扱うことができる。
図6(a)を参照して説明したように、ホスト51がライト・コマンドを発行すると、メモリ・マネージャ322は、自動的にポインタHPAGEを設定する。メモリ・マネージャ322は、さらに、ポインタHPAGEに対応するポインタDCPAGEも設定する。フラッシュ・メモリ装置25への複数データ・ブロックの転送中にライト・コマンドが発行され、ポインタDCPAGEがそれに応じて設定されると、データ転送を中断する正確なポイントが失われ、データ転送にエラーが発生することが考えられる。
そこで、MPU231は、フラッシュ・メモリ装置25への複数データ・ブロックの転送を開始する前に、ポインタDCPAGEをライト・コマンドにリンクせず、それと独立して変化するように設定する。具体的には、MPU231は、レジスタ群321にそれを指示するフラグを設定する。メモリ・マネージャ322は、このフラグが格納されているレジスタを参照し、フラグが立っている場合には、ホスト51からのライト・コマンドを受けてもポインタDCPAGEを変更しない。転送処理が完了すると、MPU231は、上記のフラグを解除する。この処理によって、フラッシュ・メモリ装置25への複数データ・ブロックの転送中にライト・コマンドを受信しても、安全かつ正確にデータ・ブロックをフラッシュ・メモリ装置25へ転送することができる。
次に、データ・ブロック1〜3を、リオーダすることなく、データ・ブロック1、2、3の順序でフラッシュ・メモリ装置25へ転送する例について説明する。バッファの格納順序に従ってフラッシュ・メモリ装置25へデータ・ブロックを転送するため、転送処理をより簡便化することができる。図11(a)〜図11(c)を参照して、この処理について具体的に説明する。
まず、図11(a)に示すように、MPU231は、データ・ブロック1に対応するポインタDPAGEとDCPAGEとをレジスタ群321に設定する。ポインタCPLBAは、ポインタHPAGEに対応する位置に設定される。メモリ・マネージャ322は、データ・ブロック1のデータ転送を開始する。データ・ブロック1のデータ転送に従って、メモリ・マネージャ322は、ポインタDPAGEをインクリメントする。ポインタDPAGEがポインタDCPAGEに追いつくと、メモリ・マネージャ322はデータ転送を中断し、それをMPU231に通知する。
通知を受けたMPU231は、データ・ブロック2に対応するポインタDPAGEとDCPAGEとをレジスタ群321に設定する。メモリ・マネージャ322は、データ・ブロック2のデータ転送を開始する。ポインタDPAGEがポインタDCPAGEに追いつくと、メモリ・マネージャ322はデータ転送を中断し、それをMPU231に通知する。通知を受けたMPU231は、データ・ブロック3に対応するポインタDPAGEをレジスタ群321に設定する。
メモリ・マネージャ322は、データ・ブロック3のデータ転送を開始する。ポインタDPAGEがポインタCPLBAに追いつくと、データ・ブロック1〜3の転送処理が完了する。メモリ・マネージャ322は、転送完了の通知をフラッシュ・コントローラ253に行う。フラッシュ・コントローラ253は、バッファ251に格納されている3つのデータ・ブロック1〜3を、一回の書き込み処理でセル・アレイ252に保存する。
上述のように、転送開始を示すポインタDPAGE、転送中断を指示ポインタDCPAGE、そして転送完了を示すポインタCPLBAを利用することによって、リング・バッファ241から複数のデータ・ブロック1〜3を転送し、さらに、それらデータ・ブロック1〜3を、まとめてフラッシュ・メモリ装置25のセル・アレイ252に書き込むことができる。
以上、本発明について好ましい態様を使用して説明したが、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、上述の実施の形態においては、HDDを例にとって説明したが、光ディスクや光磁気ディスクなど他のディスクを使用するディスク・ドライブ装置に本発明を適用してもよい。
データ・ブロックは、リング・バッファからフラッシュ・メモリ装置へ転送される単位を意味しており、上記のデータ・ブロックに限定されるものではない。不揮発性半導体メモリ装置としては、フラッシュ・メモリ装置以外のメモリ装置を使用してもよい。また、複数のICを使用して不揮発性半導体メモリ装置のメモリ領域を形成してもよい。フラッシュ・メモリ装置は、メモリ・マネージャからの指示ではなく、CPLBA(転送完了ポインタ)を自ら参照することによって、一括書き込みのタイミングを特定してもよい。CPLBA(転送完了ポインタ)は、複数データ・ブロックの転送中のいずれかのタイミングで設定してもよい。
1 ハードディスク・ドライブ、10 エンクロージャ、11 磁気ディスク
12 ヘッド・スライダ、13 アーム・エレクトロニクス、14 スピンドル・モータ
15 ボイス・コイル・モータ、16 アクチュエータ、20 回路基板
21 リード・ライト・チャネル、22 モータ・ドライバ・ユニット
23 ハードディスク・コントローラ/マイクロ・プロセッサ・ユニット
24 ランダム・アクセス・メモリ、25 フラッシュ・メモリ装置
231 マイクロ・プロセッサ・ユニット、232 ハードディスク・コントローラ
321 レジスタ群、322 メモリ・マネージャ
241 リング・バッファ、251 フラッシュ・メモリ装置内のバッファ
252 フラッシュ・メモリ装置のセル・アレイ、253 フラッシュ・コントローラ
12 ヘッド・スライダ、13 アーム・エレクトロニクス、14 スピンドル・モータ
15 ボイス・コイル・モータ、16 アクチュエータ、20 回路基板
21 リード・ライト・チャネル、22 モータ・ドライバ・ユニット
23 ハードディスク・コントローラ/マイクロ・プロセッサ・ユニット
24 ランダム・アクセス・メモリ、25 フラッシュ・メモリ装置
231 マイクロ・プロセッサ・ユニット、232 ハードディスク・コントローラ
321 レジスタ群、322 メモリ・マネージャ
241 リング・バッファ、251 フラッシュ・メモリ装置内のバッファ
252 フラッシュ・メモリ装置のセル・アレイ、253 フラッシュ・コントローラ
Claims (10)
- ホストからのデータを格納するリング・バッファと、
前記リング・バッファから転送されたデータを格納するディスクと、
前記リング・バッファに対して、転送ポインタと転送完了ポインタと転送中断ポインタと、を設定するバッファ制御部と、
前記転送ポインタに従ってデータ・ブロック毎にデータを前記リング・バッファから転送し、前記転送中断ポインタに従ってデータ転送を中断し、前記転送完了ポインタに従ってデータ転送を完了する転送処理部と、
前記リング・バッファから転送されたデータをセル・アレイに格納する不揮発性半導体メモリ装置と、を有し、
前記バッファ制御部は、一または複数のデータ・ブロックのそれぞれに対応する転送ポインタと転送中断ポインタとを設定し、さらに、最後データ・ブロックに対応する転送ポインタと転送完了ポインタとを設定し、
前記転送処理部は、前記対応する転送ポインタと転送中断ポインタとに従って前記一または複数のデータ・ブロックを前記不揮発性半導体メモリ装置に順次転送し、その後、前記転送ポインタと前記転送完了ポインタに従って前記最後データ・ブロックを前記不揮発性半導体メモリ装置に転送し、
前記不揮発性半導体メモリ装置は、前記最後データ・ブロックを受け取ると、受け取った前記一または複数のデータ・ブロック及び前記最後データ・ブロックを、まとめて前記セル・アレイに格納する、
ディスク・ドライブ装置。 - 前記転送処理部は、前記転送中断ポインタ毎に前記バッファ制御部に転送の中断を通知し、
前記バッファ制御部は、前記中断の通知を受けると、次のデータ・ブロックに対応したポインタ設定を行う、
請求項1に記載のディスク・ドライブ装置。 - 前記転送中断ポインタは、次にホストから転送されるライト・データが格納される位置に対応し、
前記不揮発性半導体メモリが一つのデータ・ブロックのみを前記セル・アレイに格納する場合において、前記転送処理部は、前記一つのデータ・ブロックの転送中に転送データのアドレスが対応する転送中断ポインタに追いついた場合、その転送を中断する、
請求項1に記載のディスク・ドライブ装置。 - 前記転送処理部が前記複数のデータ・ブロック及び前記最後のデータ・ブロックを転送している間、前記転送中断ポインタの位置はライト・コマンドと独立に制御される、
請求項3に記載のディスク・ドライブ装置。 - 前記転送処理部は、前記ディスクへのデータ転送中に転送データのアドレスが前記中断ポインタに追いついた場合にその転送を中断する、
請求項3に記載のディスク・ドライブ装置。 - データを記憶するディスクと不揮発性半導体メモリ装置とを有するディスク・ドライブ装置において、前記不揮発性半導体メモリ装置のセル・アレイにデータを格納する方法であって、
リング・バッファから転送する第1データ・ブロックに対応した転送ポインタと転送中断ポインタとを設定し、
前記転送ポインタに従って前記第1データ・ブロックを前記不揮発性半導体メモリ装置に転送し、前記転送中断ポインタに従って前記不揮発性半導体メモリ装置へのデータ転送を中断し、
前記リング・バッファから転送する第2データ・ブロックに対応する転送ポインタと転送完了ポインタとを設定し、
前記転送ポインタに従って前記第2データ・ブロックを前記不揮発性半導体メモリ装置に転送し、前記転送完了ポインタに従って前記不揮発性半導体メモリ装置へのデータ転送を完了し、
前記第2データ・ブロックの転送後に、前記第1及び前記第2データ・ブロックをまとめて前記セル・アレイに格納する、方法。 - 前記第1データ・ブロックと前記第2データ・ブロックとの間において、第3データ・ブロックを前記不揮発性半導体メモリ装置へ転送し、
前記第1データ・ブロック転送後、前記第3データ・ブロックに対応した転送ポインタと転送中断ポインタとの設定する、
請求項5に記載の方法。 - 前記転送中断ポインタは、次にホストから転送されるライト・データが格納される位置に対応し、
一つのデータ・ブロックのみを前記セル・アレイに格納する場合において、前記一つのデータ・ブロックの転送中に転送データのアドレスが対応する転送中断ポインタに追いついた場合、その転送を中断する、
請求項1に記載のディスク・ドライブ装置。 - 前記第1及び第2データ・ブロックを転送している間、前記転送中断ポインタの位置はライト・コマンドと独立に制御される、
請求項8に記載のディスク・ドライブ装置。 - 前記ディスクへのデータ転送中に転送データのアドレスが前記中断ポインタに追いついた場合にその転送を中断する、
請求項8に記載のディスク・ドライブ装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007217560A JP2009054209A (ja) | 2007-08-23 | 2007-08-23 | 不揮発性半導体メモリ装置を有するディスク・ドライブ装置及びそのディスク・ドライブ装置において不揮発性半導体メモリ装置にデータを格納する方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007217560A JP2009054209A (ja) | 2007-08-23 | 2007-08-23 | 不揮発性半導体メモリ装置を有するディスク・ドライブ装置及びそのディスク・ドライブ装置において不揮発性半導体メモリ装置にデータを格納する方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009054209A true JP2009054209A (ja) | 2009-03-12 |
Family
ID=40505165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007217560A Pending JP2009054209A (ja) | 2007-08-23 | 2007-08-23 | 不揮発性半導体メモリ装置を有するディスク・ドライブ装置及びそのディスク・ドライブ装置において不揮発性半導体メモリ装置にデータを格納する方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009054209A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101820422A (zh) * | 2010-03-30 | 2010-09-01 | 南京恩瑞特实业有限公司 | 安全计算机报文缓冲实现方法 |
JP2012521032A (ja) * | 2009-03-20 | 2012-09-10 | インディリンクス カンパニー リミテッド | Ssdコントローラおよびssdコントローラの動作方法 |
-
2007
- 2007-08-23 JP JP2007217560A patent/JP2009054209A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012521032A (ja) * | 2009-03-20 | 2012-09-10 | インディリンクス カンパニー リミテッド | Ssdコントローラおよびssdコントローラの動作方法 |
CN101820422A (zh) * | 2010-03-30 | 2010-09-01 | 南京恩瑞特实业有限公司 | 安全计算机报文缓冲实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2009020986A (ja) | ディスク・ドライブ装置及びディスク・ドライブ装置において不揮発性半導体メモリ領域上のデータを管理するテーブルを保存する方法 | |
US7320050B2 (en) | Data transmission control method and storage device | |
JP4679943B2 (ja) | データ記憶装置及びその不揮発性メモリ内データ書き換え処理方法 | |
JP2008243269A (ja) | ディスク・ドライブ装置及びそのデータの再書き込み方法 | |
JP2008034085A (ja) | 複数の動作モードを有する不揮発性メモリを備えたディスクドライブ | |
JP2007200537A (ja) | ハイブリッドディスクドライブおよびハイブリッドディスクドライブのデータ制御方法 | |
JP2011253576A (ja) | 記録媒体制御装置、及びその方法 | |
CN111696586B (zh) | 磁盘装置及其控制方法 | |
JP2010049764A (ja) | 異なるサイズのデータ・セクタによるインターフェースをサポートするディスク・ドライブ装置及びそのデータ・ライト方法 | |
US20150113208A1 (en) | Storage apparatus, cache controller, and method for writing data to nonvolatile storage medium | |
US8117491B2 (en) | Disk-drive device and method for error recovery thereof | |
US20170090768A1 (en) | Storage device that performs error-rate-based data backup | |
US20060129716A1 (en) | Data storage device and buffer control method thereof | |
US20130194696A1 (en) | Disk drive and write control method | |
JP2009054209A (ja) | 不揮発性半導体メモリ装置を有するディスク・ドライブ装置及びそのディスク・ドライブ装置において不揮発性半導体メモリ装置にデータを格納する方法 | |
JP2006251844A (ja) | データ記憶装置及びそのライト・キャッシュ制御方法 | |
JP4919983B2 (ja) | データ記憶装置及びデータ記憶装置におけるデータ管理方法 | |
US8693130B2 (en) | Magnetic disk device and control method thereof, and information processor | |
JP2006185162A (ja) | データ記憶装置及びその制御方法 | |
US20080270672A1 (en) | Disk drive device and method for accessing disk thereof | |
JP5331670B2 (ja) | 磁気ディスク・ドライブ及びそのリフレッシュ・ライト方法 | |
US20150205543A1 (en) | Storage device and data storing method | |
US20140068178A1 (en) | Write performance optimized format for a hybrid drive | |
JP6178287B2 (ja) | 記憶装置、及び制御方法 | |
JP5221714B2 (ja) | 磁気ディスク装置、制御方法および情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20100510 |