ホストコンピュータからのユーザデータを記憶する、同心円状に配列する複数のデータトラックを有する磁気記録ディスクと、前記データトラックにデータを書き込む書き込みヘッドと、前記複数のデータトラックの中から、前記書き込みヘッドがデータを書き込むデータトラックを選択するコントローラと、前記コントローラに結合されたメモリと、を備え、前記コントローラは、a前記複数のデータトラックを、所定数のデータトラックをそれぞれ有する複数のセグメントにグループ化するステップと、b前記各々のセグメントへの書き込み回数をカウントするステップと、c前記複数のセグメントの何れかのカウントが閾値に達した場合、当該セグメント内の前記所定数のデータトラックを、それよりも少数のデータトラックをそれぞれ有する複数のセグメントにグループ化するステップと、を実行する、ディスクドライブ。前記コントローラは、前記bのステップ及び前記cのステップを繰り返し、前記セグメント内の前記データトラックの数が所定の最小数に達した場合、前記所定の最小数のデータトラックを有する前記セグメントについて前記cのステップを終了する、請求項1に記載のディスクドライブ。前記データトラックからデータを読み取る読み取りヘッドをさらに備え、前記コントローラは、前記所定の最小数のデータトラックを有する前記セグメントの前記カウントが閾値に達した場合、前記所定の最小数のデータトラックを有する前記セグメント内のすべてのデータトラックからデータを読み出し、前記所定の最小数のデータトラックを有する前記セグメント内のすべてのデータトラックから読み出されたデータを再び書き込み、前記所定の最小数のデータトラックを有する前記セグメントの前記カウントをゼロにリセットする、請求項2に記載のディスクドライブ。前記データを読み出すことは、前記所定の最小数のデータトラックを有する前記セグメントに半径方向に隣接する、半径方向内側の少なくとも1つのデータトラックと、前記所定の最小数のデータトラックを有する前記セグメントに半径方向に隣接する、半径方向外側の少なくとも1つのデータトラックと、からデータを読み出すことを含み、前記データを再び書き込むことは、前記所定の最小数のデータトラックを有する前記セグメントに半径方向に隣接する、半径方向内側の少なくとも1つのデータトラックと、前記所定の最小数のデータトラックを有する前記セグメントに半径方向に隣接する、半径方向外側の少なくとも1つのデータトラックと、からの前記データを再び書き込むことを含む、請求項3に記載のディスクドライブ。前記所定の最小数は1である、請求項2に記載のディスクドライブ。前記各々のデータトラックは複数のデータセクタを有し、前記コントローラは、前記bのステップ及び前記cのステップを繰り返し、前記セグメント内の前記データトラックの数が1に達した場合、当該1のデータトラックへの書き込み回数をカウントし、前記1のデータトラックのカウントが閾値に達した場合、前記1のデータトラックに含まれる前記複数のデータセクタを、所定数のデータセクタをそれぞれ有する複数のサブセグメントにグループ化し、前記各々のサブセグメントへの書き込み回数をカウントする、請求項1に記載のディスクドライブ。前記コントローラは、前記カウントをメモリに記憶する、請求項1に記載のディスクドライブ。前記コントローラは、前記カウントが閾値に達したセグメントよりも少数のデータトラックを有する前記複数のセグメントが、所定の時間中に書き込まれなかった場合、前記カウントが閾値に達したセグメントよりも少数のデータトラックを有する前記複数のセグメントを、単一のセグメントに再グループ化し、前記カウントが閾値に達したセグメントよりも少数のデータトラックを有する前記複数のセグメントの前記カウントの記憶に使用された前記メモリを解放する、請求項7に記載のディスクドライブ。前記メモリは不揮発性メモリである、請求項7に記載のディスクドライブ。データを記憶する、同心円状に配列する複数のデータトラックを有する磁気記録ディスクと、前記データトラックにデータを書き込むための書き込み磁場を生成する書き込みヘッドと、前記データトラックに書き込まれたデータを読み取る読み取りヘッドと、前記書き込みヘッドによる前記データトラックへのデータの書き込みを制御するコントローラと、前記コントローラに結合されるメモリと、を備え、前記コントローラは、a前記複数のデータトラックを、同数のデータトラックをそれぞれ有する複数のセグメントにグループ化するステップと、b前記各々のセグメントに書き込まれた回数をカウントするステップと、c前記各々のセグメントのカウントをメモリに記憶するステップと、d前記複数のセグメントの何れかの前記カウントが閾値に達した場合、当該セグメント内の前記データトラックを、その半分の数のデータトラックをそれぞれ有する2つのセグメントに分割するステップと、e前記b~dのステップを繰り返すステップと、f前記セグメントが所定の最小数のデータトラックを含み、前記所定の最小数を有する前記セグメントの前記カウントが閾値に達した場合、前記所定の最小数を有する前記セグメント内のすべてのデータトラックからデータを読み出し、前記所定の最小数を有する前記セグメント内のすべてのデータトラックからの前記データを再び書き込むステップと、を実行する、ディスクドライブ。前記データを読み出すことは、前記所定の最小数のデータトラックを有する前記セグメントに半径方向に隣接する、半径方向内側の少なくとも1つのデータトラックと、前記所定の最小数のデータトラックを有する前記セグメントに半径方向に隣接する、半径方向外側の少なくとも1つのデータトラックと、からデータを読み出すことを含み、前記データを再び書き込むことは、前記所定の最小数のデータトラックを有する前記セグメントに半径方向に隣接する、半径方向内側の少なくとも1つのデータトラックと、前記所定の最小数のデータトラックを有する前記セグメントに半径方向に隣接する、半径方向外側の少なくとも1つのデータトラックと、からの前記データを再び書き込むことを含む、請求項10に記載のディスクドライブ。前記所定の最小数は1である、請求項10に記載のディスクドライブ。前記コントローラは、前記カウントが閾値に達したセグメント内の前記データトラックの半分の数のデータトラックをそれぞれ有する前記2つのセグメントが、所定の時間中に書き込まれなかった場合、前記カウントが閾値に達したセグメント内の前記データトラックの半分の数のデータトラックをそれぞれ有する前記2つのセグメントを単一のセグメントに再グループ化し、前記カウントが閾値に達したセグメント内の前記データトラックの半分の数のデータトラックをそれぞれ有する前記2つのセグメントの前記カウントの記憶に使用された前記メモリを解放する、請求項10に記載のディスクドライブ。データを記憶する、同心円状に配列する複数のデータトラックを有する磁気記録ディスクと、前記データトラックにデータを書き込むための書き込み磁場を生成する書き込みヘッドと、前記データトラックに書き込まれたデータを読み取る読み取りヘッドと、前記書き込みヘッドによる前記データトラックへのデータの書き込みを制御するコントローラと、前記コントローラに結合されるメモリと、を備え、前記コントローラは、a前記複数のデータトラックを、同数のデータトラックをそれぞれ有する複数のセグメントにグループ化するステップと、b前記各々のセグメントに書き込まれた回数をカウントするステップと、c前記各々のセグメントのカウントをメモリに記憶するステップと、d前記複数のセグメントの何れかの前記カウントが閾値に達した場合、当該セグメント内の前記データトラックを、その半分の数のデータトラックをそれぞれ有する2つのセグメントに分割するステップと、e前記セグメント内の前記データトラックの数が1に達し、当該1のデータトラックのカウントが閾値に達した場合、前記1のデータトラックに含まれる複数のデータセクタを、所定数のデータセクタをそれぞれ有する複数のサブセグメントにグループ化するステップと、f前記各々のサブセグメントにデータが書き込まれた回数をカウントするステップと、g前記各々のサブセグメントのカウントをメモリに記憶するステップと、h前記複数のサブセグメントの何れかのカウントが閾値に達した場合、当該サブセグメント内の前記所定数のデータセクタを、その半分の数のデータセクタをそれぞれ有する2つのサブセグメントに分割するステップと、i前記サブセグメント内のデータセクタの数が所定の最小数に達し、前記所定の最小数のデータセクタを有する前記サブセグメントの前記カウントが閾値に達した場合、前記所定の最小数のデータセクタを有する前記サブセグメント内のすべてのデータセクタからデータを読み出し、前記所定の最小数のデータセクタを有する前記サブセグメント内のすべてのデータセクタから読み出された前記データを再び書き込むステップと、j前記所定の最小数のデータセクタを有する前記サブセグメントの前記カウントをゼロにリセットするステップと、を実行する、ディスクドライブ。したがって、必要なのは、メモリを効率的に使用しながら、それでもなおATEの問題に効率的に対処するように、データトラックへの書き込みをカウントするHDDである。本発明は、データトラックへの書き込みの適応カウントを使用して、ATEの影響を最低限に抑えるHDDに関する。トラックはセグメントにグループ化され、カウンタが各セグメントに関連付けられるが、セグメント内のトラック数は固定されず、セグメントへの書き込み回数に応じて様々であり、すなわち、セグメントへの書き込み回数に適応する。したがって、セグメントは、比較的多数のトラックを有することを意味する粗い粒度、または比較的少数のトラックを有することを意味する細かい粒度を有することができる。粗いセグメントへの書き込み回数のカウントが増大して、所定の閾値に達すると、セグメントは、より少数のトラックを有するいくつかのより細かいセグメントに分割される。元のセグメントはもはや存在せず、メモリは元のセグメントのカウントを記憶する必要はない。このプロセスは続けられ、セグメントは、所定の最小数トラック、例えば、1つのみのトラックに達するまで、より少数のトラックを有する粒度のより細かいセグメントに分割され続ける。最小数トラックを有するセグメントへの書き込み回数のカウントが所定の閾値に達した場合、そのセグメント内のすべてのトラックおよびそのセグメントの両側で半径方向に隣接するトラックが読み取られ、好ましくは同じトラックに再び書き込まれ、そのセグメントのカウンタはゼロにリセットされる。適応カウントは、単一トラックを超えてトラック内の個々のデータセクタに拡張することもできる。1つのみのトラックを有するセグメントへの書き込み回数のカウントが所定の閾値に達した場合、その単一トラックを読み取って再び書き込むことに代えて、1トラックセグメントを、そのトラックの複数のデータセクタを含むサブセグメントに分割する動作を続けることができる。本発明は、セグメントの再グループ化につながるメモリ内でのカウンタのガーベッジコレクションGCプロセスも含む。GCは、適応カウントが動作中であった所定時間の後、例えば、一定の時間後に、HDDスタートアップ時等の場合に定期的に、アイドル時間中に、または使用されるメモリが、適応カウントプロセスに割り振られたメモリに近づきつつある場合に実行することができる。GCプロセス中、最後のGC以来、書き込まれていないセグメントが識別され、これらセグメントはより粒度の粗いセグメントに再グループ化され、それらセグメントのカウンタは解放される。本発明の性質および利点をより十分に理解するために、添付図と共に解釈される以下の詳細な説明を参照すべきである。図1は、本発明による磁気記録ディスクドライブHDD10のブロック図である。HDD10は、マイクロコントローラまたはマイクロプロセッサを含むことができ、かつ/またはそれらにより実施することができるハードディスクコントローラHDC12を含む。コントローラ12は、メモリ14に記憶されており、さらに後述する論理およびアルゴリズムを具現するコンピュータプログラムを実行する。メモリ14は、コントローラ12とは別個であってもよく、またはコントローラチップに埋め込まれたメモリであってもよい。コンピュータプログラムは、マイクロコードに実装してもよく、またはコントローラ12がアクセス可能な他の種類のメモリに実装してもよい。コントローラ12は、ホストコンピュータ18と通信するホストインタフェース16に接続される。ホストコンピュータ18は、電池電力で動作可能なポータブルコンピュータであり得る。ホストインタフェース16は、シリアルATA高度技術アタッチメントまたはSCSI小型コンピュータシステムインタフェース等の従来の任意のコンピュータHDDインタフェースであり得る。図1の上面図は単一ディスク24および関連する読み/書きヘッド22のみを示すが、HDD10は通常、スピンドル23に取り付けられ、スピンドルモータ図示せずにより回転するディスク24のスタックを含み、各ディスク面には複数のヘッド22のうちの1つが関連付けられる。読み/書きヘッド22は通常、誘導性書き込みヘッドと磁気抵抗読み取りヘッドとの組み合わせであり、ヘッドキャリアまたはスライダ30の後縁端部または端面に配置される。スライダ30は、ディスク24が矢印130の方向に回転する際、スライダがディスク24により生成されるエアベアリング上でピッチまたはロールできるようにするサスペンション32によりアクチュエータアーム31上に支持される。ディスク24は半径方向に離間された同心円データトラックを有し、データトラックのうちの1つを101として示す。各データトラックは、トラック開始を示す参照インデックス121を有する。データトラックは半径方向に、いくつかの環状データ帯またはゾーンにグループ化されるため、HDD10は、ゾーンビット記録ZBRHDDとして示され、環状データ帯またはゾーンのうちの3つをゾーン151、152、および153として示すが、本発明はZBRを使用しないHDDにも十分に適用可能であり、その場合、HDDは単一データゾーンのみを有する。各ゾーン内で、トラックは円周方向にも、半径方向において外側のデータゾーン内の典型的なデータセクタ164等のいくつかの連続した物理データセクタに分けられる。各データセクタ164には、典型的な同期フィールド163等の同期syncフィールドが前置される。同期フィールド163は、データセクタ164内にデータビットの読み取りおよび書き込みを行うために、読み取りヘッドにより検出可能である。同期フィールド163は、データが関連付けられたデータセクタ164に書き込まれる都度、磁化されるディスク上の非データ領域である。各データトラックは、ヘッド22を所望のデータトラックに移動させ、ヘッド22をデータトラック上に維持するために、読み取りヘッドにより検出可能な位置決め情報を含む、複数の円周方向、すなわち角度的に離間されたサーボセクタ120も含む。各トラック内のサーボセクタは、半径方向に向けられたサーバセクタ120により表されるように、概して半径方向においてトラックを横切って延びるように、その他のトラック内のサーボセクタと円周方向において位置合わせされる。サーボセクタ120は、通常、ディスクの製造中またはフォーマット中に一度磁化されるディスク上の非データ領域であり、HDDの通常動作中での消去を意図されない。各トラック内で、各サーボセクタ120は、サーボセクタの開始を示すサーボタイミングマークSTMとも呼ばれるサーボ識別SIDマークを有する。通常、サーボセクタ間には複数のデータセクタ164が配置される。HDD10に関連付けられる電子回路は、サーボ電子回路40も含む。HDD10の動作の際、読み/書きチャネル20は信号をヘッド22から受信し、サーボ情報をサーボセクタ120からサーボ電子回路40に渡すと共に、データ信号をデータセクタ164からコントローラ12に渡す。サーボ電子回路40は通常、サーボセクタ120からのサーボ情報を使用して、制御信号を生成する制御アルゴリズムを実行するサーボ制御プロセッサを含む。制御信号は、アクチュエータ28を駆動させてヘッド22を位置決めする電流に変換される。HDD10の動作に際して、インタフェース16は、データセクタ164の読み取りまたは書き込みを行う要求をホストコンピュータ18から受信する。コントローラ12は、要求されたデータセクタのリストをインタフェース16から受信し、ディスク面、トラック、およびデータセクタを一意に識別する数セットに変換する。数はサーボ電子回路40に渡され、ヘッド22を適切なデータセクタ164に位置決めできるようにする。コントローラ12は、ヘッド22がディスク24に書き込むために、書き込みデータブロックをホストコンピュータ18から読み/書きチャネル20を通して転送すると共に、読み取りデータブロックをディスク24から再びホストコンピュータ18に転送するデータコントローラとして動作する。HDDは通常、回転するディスク記憶装置の他に、データがホストコンピュータとディスク記憶装置との間で転送される前に、データを一時的に保持する固体状態メモリキャッシュと呼ばれるも含む。従来のキャッシュは、かなりの回数の書き込み/消去サイクルを経ることができ、高いデータ転送速度を有する揮発性形態のメモリであるダイナミックランダムアクセスメモリDRAMである。HDDは不揮発性メモリも含み得る。一種類の不揮発性メモリはフラッシュメモリであり、フラッシュメモリは、ブロック単位で電気的に消去プログラムが可能なセルと呼ばれる浮動ゲートトランジスタアレイに情報を記憶する。したがって、HDD10では、コントローラ12は、データバス54を介して揮発性メモリ50DRAMとして示されるおよびオプションとして不揮発性メモリ52フラッシュとして示されるとも通信する。高密度データを有するHDDの需要を満たすために、データトラック間隔、すなわちピッチは低減された。これは、同心円トラックが共により密に詰め込まれることを意味する。これは、書き込まれたトラックの誤り率を増大させるのみならず、隣接トラック侵入ATEの問題も悪化させる。一般に、ATEは、書き込み中のトラックに隣接するトラックに記憶されている古いデータが、その書き込み中のデータトラックへの多数回の書き込み後に劣化する場合に発生する。ATEは一般に、ビット誤り率BERの増大に繋がり、結果として、ディスクドライブの性能が低下する。いくつかの深刻な場合では、不良BERは復元不可能なデータ誤りエラーの大きな増大に繋がることになる。ATEは、非特許文献1に記載されている。ATEの問題を、ディスク24および関連付けられた読み/書きヘッド22の断面図である図2に概略的に示す。ディスク24は、書き込まれたデータトラックn-1~n1を有する記録層24’と共に示される。読み/書きヘッド22の書き込み極60は、極60と位置合わせされたトラックnに向けられた書き込み磁場70を生成する。しかし、書き込み場70は一般にデータトラックよりも広いため、書き込み極60がトラックnに書き込んでいるとき、書き込み場70の外側部分フリンジ場と呼ばれるは、少なくとも、書き込み中のトラックの各側の1つのトラック:トラックn1およびn-1に重なる。この重複は、トラックn1およびn-1上のデータのノイズの追加および劣化に繋がるATEである。ATEは、書き込み中のトラックから離れて2つ以上のトラック、例えば、2つのトラックで発生する場合もある。ATE問題に対処する一手法は、各トラックへの書き込み回数をカウントすることである。トラックに所定回数の書き込みがなされた場合、そのトラックおよびそのトラックの両側の1つまたは複数の隣接トラックが読み取られ、次に再び書き込まれる。単一トラックへの相当回数の繰り返し書き込みが回避されるため、ATEの影響は蓄積されない。ATEの影響が蓄積される前に、隣接トラックは再書き込みされるため、隣接トラック上のデータの信頼性が向上する。この手法は、本願と同じ譲受人に譲渡された特許文献1に記載されている。HDDは多数のトラック、例えば、数10万ものトラックを有し得るため、各トラックのカウントを記憶するために、かなりの量のメモリが必要であり得る。したがって、トラックを、同じ一定数のトラック、例えば、4つのトラックをそれぞれ有するセグメントにグループ化し、各セグメントへの書き込み回数をカウントすることが提案されている。‘400号特許の手法と同様に、セグメントに所定の回数の書き込みがなされた場合、そのセグメント内のすべてのトラックおよびそのセグメントの両側の1つまたは複数のトラックが読み出され、次に再び書き込まれる。本発明では、データトラックへの書き込みの適応カウントを使用して、ATEの影響を最低限に抑える。いくつかのデータファイルは他のデータファイルよりも頻繁に再書き込みされるため、それらファイルはディスクのホットスポットになる。すなわち、それらファイルに属するデータセクタは、他のデータセクタよりも頻繁に再書き込みされる。本発明では、トラックはセグメントにグループ化され、カウンタが各セグメントに関連付けられるが、セグメント内のトラック数は一定ではなく、セグメントへの書き込み回数に応じて様々であり、またはセグメントへの書き込み回数に適応する。したがって、セグメントは、比較的多数のトラックを有することを意味する粗い粒度または比較的少数のトラックを有することを意味する細かい粒度を有することができる。粗いセグメントへの書き込み回数が増大するにつれて、セグメントはより少数のトラックを有するより細かいセグメントに分割される。セグメントの適応粒度は、カウンタに必要なメモリ量と不必要な読み出しおよび再書き込み動作によるディスクドライブ性能オーバーヘッドとのトレードオフを最適化する。細かい粒度の場合、多数のカウンタがあるため、メモリ要件は大きくなるが、読み出して再書き込みする必要のあるトラックはより少数であるため、必要な読み出しおよび再書き込み動作によるディスクドライブ性能オーバーヘッドは小さくなる。粗い粒度の場合、カウンタがより少数であるため、メモリ要件は小さくなるが、読み出して再書き込みする必要のあるトラックが多数であるため、ディスクドライブ性能オーバーヘッドは大きくなる。図3は、本発明の一実施態様を示す決定木である。すべてのデータトラックの書き込み回数をカウントする適応手法では、セグメント数は変化し、トラック/セグメントの数Mは様々である。図3に示すように、最初、すべてのデータトラックはN個のセグメントにグループ化され、各セグメントはM=M1個のトラックを有し、したがって、HDD内には合計でN×M1個のトラックがある。NおよびM1の値は、特定のHDD、例えば、その意図される用途に基づいて選択し得る。理論上、Nは1であり得、M1はHDD内のデータトラック総数であり得る。図1の例では、本発明のこの実施態様の説明を簡易化するために、M1=8である。動作中、コントローラ図1のHDC12またはHDD内の別のコントローラもしくはマイクロプロセッサは、データブロックが書き込まれたセグメントを識別し、データブロックがN個の各セグメントに書き込まれた回数をカウントする。したがって、最初、N個のカウンタがあり、各カウンタは初期値、通常は0に設定される。カウント値は、コントローラ12に関連付けられたメモリ、例えば、メモリ14、揮発性メモリ50、または不揮発性メモリ52に記憶される。任意のセグメントのカウントCが所定の閾値Tに達した場合、そのセグメントは、元のM1個のトラックの半分をそれぞれ有する2つのセグメントに分割される。Tの値は、特定のHDD、例えば、HDDの既知のトラック密度および/またはHDDの意図される目的、ならびに製造中に測定されたHDDのBERに基づいて選択することができる。2テラバイトTBHDDの一例では、Tは200万であり得る。決定ノード201において、セグメント1のカウントCが値Tに達し、2つの新しいセグメントN1およびN2が、過度に書き込まれたセグメント1から形成される。各セグメントN1およびN2は、M=M2=M1/2=4個のトラックを有する。セグメント1はもはや存在せず、メモリはセグメント1のカウントを記憶する必要はない。各セグメントN1およびN2のカウントCは0に設定され、動作が続けられ、コントローラ12は、すべてのセグメント、すなわち、セグメント2~N2への書き込み回数を追跡し続ける。このプロセスは、決定木を進み続ける。決定ノード202において、セグメントN2のカウントCが値Tに達し、2つの新しいセグメントN3およびN4が、過度に書き込まれたセグメントN2から形成される。各セグメントN3およびN4は、M=M3=M2/2=2個のトラックを有する。したがって、粒度は、セグメント1での8トラック/セグメントからセグメントN3での2トラック/セグメントに低減した。セグメントN2はもはや存在せず、メモリはセグメントN2のカウントを記憶する必要はない。動作は続けられ、コントローラ12は、すべてのセグメント、すなわち、セグメント2~N1、N3、およびN4への書き込み回数を追跡し続ける。決定ノード203において、セグメントN4のカウントCが値Tに達し、2つの新しいセグメントN5およびN6が、過度に書き込まれたセグメントN4から形成される。各セグメントN4およびN5はM=M4=M3/2=1個のトラックを有する。図3の例では、トラック/セグメントの数Mの最小値MINとして1が選択された。しかし、1よりも大きなMINを選択してもよい。動作は続けられ、コントローラ12は、セグメントN5およびN6を含め、残っているすべてのセグメントへの書き込み回数を追跡し続ける。しかし、それらセグメントのそれぞれはM=M4=1=MINを有するため、それらセグメントのさらなる分割は終了する。したがって、決定ノード204に示されるように、セグメントN5がC=Tの場合、このセグメント内のすべてのトラックおよびセグメントN5内のトラックの両側で半径方向に隣接するトラックが読み出され、好ましくは同じトラックに再び書き込まれ、セグメントN5のカウンタCは0に設定される。粒度がトラック/セグメントに基づき、したがって、図3の例に示されるように、粒度が8トラック/セグメントから1トラック/セグメントに低減する本発明を説明した。しかし、本発明は、トラック内の個々のデータセクタに適用することも可能である。再び図1を参照すると、各データトラックは複数のデータセクタ164を有する。通常、データセクタは一定数のバイト、例えば、512または4096バイトを有する。円周方向に隣接するサーボセクタ120間には複数のデータセクタ164がある。再び図3を参照すると、ノード204において、セグメントN5の単一トラックおよび半径方向に隣接するトラックを読み出して再び書き込むことに代えて、動作はノード204に続くことができ、1トラックセグメントN5は、そのトラックの複数のデータセクタをそれぞれ含むサブセグメントに分割される。例えば、200個のサーボセクタがある場合、セグメントN5を、一方がサーボセクタ1~100のすべてのデータセクタを含み、他方がサーボセクタ101~200のすべてのデータセクタを含む2つのサブセグメントに分割し得る。このプロセスは、判断C=Tを使用して上述したように続けて、データセクタのサブセグメントを、より少数のデータセクタを有するサブセグメントにさらに細分し、それにより、さらに細かい粒度を提供することができる。本発明の上記説明では、Tは、各粒度レベルで同じ値を有するものとして選択された。しかし、Tは、セグメントが2つのより小さなセグメントに分割される都度、異なる値を有するように選択してもよい。例えば、Tは、セグメントを2つのより小さなセグメントに分割する都度、より小さくしてもよい。本発明は、セグメントの再グループ化に繋がるメモリ内でのカウンタのガーベッジコレクションGCプロセスも含む。GCは、適応カウントが動作してから所定の時間後、例えば、一定の時間後、またはHDDスタートアップ時等のように定期的に、アイドル時間中に、または使用されるメモリが、適応カウントプロセスに割り振られたメモリに近づきつつある場合に実行することができる。一手法では、1ビットマーカが各セグメントに割り当てられる。上述した適応カウントプロセス中、各セグメントマーカは、そのセグメントにデータが初めて書き込まれた場合、1に設定される。次に、GCが実行され、すべてのセグメントはトラバースされ、マーカが0に設定されているセグメントが、最後のGC以来、書き込まれていないものとして識別されるセグメントである。それらセグメントは、より粗い粒度のセグメントに再グループ化され、それらセグメントのカウンタは解放される。図4Aおよび図4Bは、上述した動作の前図4Aおよび後図4Bの図である。図4Aでは、それぞれ8トラック/セグメントを有する2つのセグメントAおよびBを有する16個のトラックがある。図4Bでは、セグメントAへの過度の書き込みにより、セグメントAは、4トラック/セグメントをそれぞれ有するセグメントA1およびA2に分割された。セグメントA2への過度の書き込みにより、セグメントA2は、2トラック/セグメントをそれぞれ有するセグメントA21およびA22に分割された。セグメントA21への過度の書き込みにより、セグメントA21は、最小値である1トラック/セグメントをそれぞれ有するセグメントA211およびA212に分割された。セグメントA211トラック5のカウントは閾値Tに達したため、セグメント211およびセグメント211に隣接するトラックは、読み出して再書き込みすることが可能である。同様の状況がセグメントBでも発生し、1トラックトラック14を含むセグメントB212およびトラック14に隣接するトラックは、読み出して再書き込みすることが可能である。したがって、トラック5および14をホットスポットとみなすことができる。図4Bを参照すると、次にGCを実行して、セグメントのカウントの保持に使用されたメモリを解放することができる。前回のGCの完了後、すべてのマーカは0にリセットされた。セグメントへのいかなる書き込みによっても、セグメントマーカは1になるすなわち、最近使用されたものとしてマークする。GCが開始されると、GCはすべてのノードをトラバースし、マーカがまだ0に設定されているあらゆるセグメントを発見する。例えば、図4Bでは、前回のGC後にセグメントA212およびA211に書き込まれなかった場合、それらのマーカは0に設定されている。その場合、GCは、セグメントA211およびA212を単一のセグメントA21に再グループ化し、メモリ内のそれらセグメントのカウンタを解放する。上述したHDDの動作は、メモリに記憶され、HDCまたはHDD内の別個のコントローラもしくはマイクロプロセッサ等のプロセッサにより実行可能なコンピュータプログラム命令セットとして実装し得る。コントローラは、メモリに記憶されるプログラム命令に基づいて論理演算および算術演算を実行し、したがって、上述され図示された機能を実行することが可能である。本発明について好ましい実施形態を参照して特に示し説明したが、本発明の主旨および範囲から逸脱せずに、形態および詳細に様々な変更を行い得ることを当業者には理解されるであろう。したがって、開示される本発明は単なる例示としてみなされるべきであり、本発明の範囲は、添付の特許請求の範囲の規定によってのみ限定されるべきである。