(57)【特許請求の範囲】
【請求項１】
メモリデバイスであって、
１つ以上のサブセクタを有するセクタで構成されるメモリアレイと、
周辺インタフェースバスを介してデータを受信し、送信し、または送受信するように構成されたコントローラであって、
前記メモリデバイスの消耗が大きいサブセクタであって、高ウェアレベルを有し、第１セクタに存在する前記サブセクタを検出し、
低ウェアレベルを有する前記メモリデバイスの第２セクタを決定し、
前記第１セクタを前記第２セクタとスワップし、
前記第１セクタ、前記第２セクタ、またはその両方の少なくとも１つのサブセクタの位置を並べ替えるように構成されたウェアレベリング論理を備える前記コントローラと
を備え、
前記ウェアレベリング論理は、前記第１セクタを前記第２セクタとスワップすると共に前記少なくとも１つのサブセクタの前記位置を並べ替えるように構成される、前記メモリデバイス。
【請求項２】
メモリデバイスであって、
１つ以上のサブセクタを有するセクタで構成されるメモリアレイと、
周辺インタフェースバスを介してデータを受信し、送信し、または送受信するように構成されたコントローラであって、
前記メモリデバイスの消耗が大きいサブセクタであって、高ウェアレベルを有し、第１セクタに存在する前記サブセクタを検出し、
低ウェアレベルを有する前記メモリデバイスの第２セクタを決定し、
前記第１セクタを前記第２セクタとスワップし、
前記第１セクタ、前記第２セクタ、またはその両方の少なくとも１つのサブセクタの位置を並べ替えるように構成されたウェアレベリング論理を備える前記コントローラと
を備え、
前記ウェアレベリング論理は、
最低のウェアレベルを有する前記第２セクタの最小サブセクタを決定し、
前記消耗が大きいサブセクタの前記位置を前記最小サブセクタの位置とスワップすることにより、前記消耗が大きいサブセクタの前記位置を並べ替えるように構成される、前記メモリデバイス。
【請求項３】
メモリデバイスであって、
１つ以上のサブセクタを有するセクタで構成されるメモリアレイと、
周辺インタフェースバスを介してデータを受信し、送信し、または送受信するように構成されたコントローラであって、
前記メモリデバイスの消耗が大きいサブセクタであって、高ウェアレベルを有し、第１セクタに存在する前記サブセクタを検出し、
低ウェアレベルを有する前記メモリデバイスの第２セクタを決定し、
前記第１セクタを前記第２セクタとスワップし、
前記第１セクタ、前記第２セクタ、またはその両方の少なくとも１つのサブセクタの位置を並べ替えるように構成されたウェアレベリング論理を備える前記コントローラと
を備え、
前記ウェアレベリング論理は、
前記第１セクタの全てのサブセクタを第１セットのサブセクタ群に束ね、
前記第２セクタの全てのサブセクタを第２セットのサブセクタ群に束ね、
前記消耗が大きいサブセクタを含む第１の群の位置を、前記最小サブセクタを含む第２の群の位置とスワップするように構成される、前記メモリデバイス。
【請求項４】
メモリデバイスにおいて、消耗が大きいサブセクタであって、高ウェアレベルを有し、第１セクタに存在する前記サブセクタを検出することと、
低ウェアレベルを有する前記メモリデバイスの第２セクタを決定することと、
前記第１セクタを前記第２セクタとスワップすることと、
前記第１セクタ、前記第２セクタ、またはその両方の少なくとも１つのサブセクタの位置を並べ替えることと
を含み、
最低のウェアレベルを有する前記第２セクタの最小サブセクタを決定することと、
前記消耗が大きいサブセクタの前記位置を前記最小サブセクタの位置とスワップすることにより、前記消耗が大きいサブセクタの前記位置を並べ替えることと
を含む、方法。
【請求項５】
メモリデバイスにおいて、消耗が大きいサブセクタであって、高ウェアレベルを有し、第１セクタに存在する前記サブセクタを検出することと、
低ウェアレベルを有する前記メモリデバイスの第２セクタを決定することと、
前記第１セクタを前記第２セクタとスワップすることと、
前記第１セクタ、前記第２セクタ、またはその両方の少なくとも１つのサブセクタの位置を並べ替えることと
を含み、
前記第１セクタの全てのサブセクタを第１セットのサブセクタ群に束ねることと、
前記第２セクタの全てのサブセクタを第２セットのサブセクタ群に束ねることと、
前記消耗が大きいサブセクタを含む第１の群の位置を、前記最小サブセクタを含む第２の群の位置とスワップすることと
を含む、方法。
【請求項６】
有形の非一時的機械可読媒体であって、
メモリデバイスにおいて、消耗が大きいサブセクタであって、高ウェアレベルを有し、第１セクタに存在する前記サブセクタを検出し、
低ウェアレベルを有する前記メモリデバイスの第２セクタを決定し、
前記第１セクタを前記第２セクタとスワップし、
前記第１セクタ、前記第２セクタ、またはその両方の少なくとも１つのサブセクタの位置を、
前記消耗が大きいサブセクタの位置を前記第２セクタ中の消耗が少ないサブセクタの位置とスワップすること、
前記第１セクタ、前記第２セクタ、もしくはその両方の１つ以上のセクタ内アドレスを変更すること、
またはその両方
によって並べ替える命令を含み、
前記第１セクタの全てのサブセクタを第１セットのサブセクタ群に束ね、
前記第２セクタの全てのサブセクタを第２セットのサブセクタ群に束ね、
前記消耗が大きいサブセクタを含む第１の群の位置を、前記消耗が少ないサブセクタを含む前記第２セクタ中の第２の群の位置とスワップすることにより、
前記消耗が大きいサブセクタの前記位置を、前記最小サブセクタ中の前記消耗が少ないサブセクタの前記位置とスワップする命令を含む、前記機械可読媒体。
【請求項７】
メモリコントローラであって、
メモリデバイスの消耗が大きいサブセクタであって、高ウェアレベルを有し、第１セクタに存在する前記サブセクタを検出し、
低ウェアレベルを有する前記メモリデバイスの第２セクタを決定し、
前記第１セクタを前記第２セクタとスワップし、
前記第１セクタ、前記第２セクタ、またはその両方の少なくとも１つのサブセクタの位置を並べ替えるように構成された回路
を備え、
前記回路は、前記第１セクタを前記第２セクタとスワップすると共に前記少なくとも１つのサブセクタの前記位置を並べ替えるように構成される、前記メモリコントローラ。
【請求項８】
メモリコントローラであって、
メモリデバイスの消耗が大きいサブセクタであって、高ウェアレベルを有し、第１セクタに存在する前記サブセクタを検出し、
低ウェアレベルを有する前記メモリデバイスの第２セクタを決定し、
前記第１セクタを前記第２セクタとスワップし、
前記第１セクタ、前記第２セクタ、またはその両方の少なくとも１つのサブセクタの位置を並べ替えるように構成された回路
を備え、
前記回路は、
最低のウェアレベルを有する前記第２セクタの最小サブセクタを決定し、
前記消耗が大きいサブセクタの前記位置を前記最小サブセクタの位置とスワップすることにより、前記消耗が大きいサブセクタの前記位置を並べ替えるように構成される、前記メモリコントローラ。
【請求項９】
メモリコントローラであって、
メモリデバイスの消耗が大きいサブセクタであって、高ウェアレベルを有し、第１セクタに存在する前記サブセクタを検出し、
低ウェアレベルを有する前記メモリデバイスの第２セクタを決定し、
前記第１セクタを前記第２セクタとスワップし、
前記第１セクタ、前記第２セクタ、またはその両方の少なくとも１つのサブセクタの位置を並べ替えるように構成された回路
を備え、
前記回路は、
前記第１セクタの全てのサブセクタを第１セットのサブセクタ群に束ね、
前記第２セクタの全てのサブセクタを第２セットのサブセクタ群に束ね、
前記消耗が大きいサブセクタを含む第１の群の位置を、前記最小サブセクタを含む第２の群の位置とスワップするように構成される、前記メモリコントローラ。
【請求項１０】
メモリシステムであって、
データを管理し、記憶し、または管理及び記憶するように構成されたスレーブデバイスと、
データフレームを前記スレーブデバイスに提供して前記データの前記管理、記憶、または前記管理及び保存を容易にするように構成されたマスタデバイスと、
前記マスタデバイスを前記スレーブデバイスに通信可能に接続するように構成された周辺インタフェースであって、前記データフレームは、前記マスタデバイスから前記スレーブデバイスに前記周辺インタフェースを介して提供される、前記周辺インタフェースと、
ウェア論理であって、
前記スレーブデバイスにおいて、消耗が大きいサブセクタであって、高ウェアレベルを有し、第１セクタに存在する前記サブセクタを検出し、
前記スレーブデバイスにおいて、低ウェアレベルを有する第２セクタを決定し、
前記第１セクタを前記第２セクタとスワップし、
前記第１セクタ、前記第２セクタ、またはその両方の少なくとも１つのサブセクタの位置を並べ替えるように構成された前記ウェア論理と
を備え、
前記ウェア論理は、
前記第１セクタの全てのサブセクタを第１セットのサブセクタ群に束ね、
前記第２セクタの全てのサブセクタを第２セットのサブセクタ群に束ね、
前記消耗が大きいサブセクタを含む第１の群の位置を、前記最小サブセクタを含む第２の群の位置とスワップするように構成される、前記メモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、一般にメモリデバイスの分野に関し、より詳細には、メモリデバイスのウェアレベリングシステム及び方法に関する。
【背景技術】
【０００２】
コンピュータシステム及び他の電気的システムは、一般に１つ以上のメモリデバイスを備える。例えば、コンピュータは、ＮＯＲフラッシュメモリ及びＮＡＮＤフラッシュメモリを使用することが多い。ＮＯＲフラッシュとＮＡＮＤフラッシュにはそれぞれ、他と比較して一定の利点がある。例えば、ＮＯＲフラッシュメモリは、通常、ＮＡＮＤフラッシュよりも書き込み速度及び消去速度が遅い。更に、ＮＡＮＤフラッシュメモリは、通常、ＮＯＲフラッシュメモリよりも耐久性が高い。しかしながら、ＮＯＲフラッシュメモリでは、通常、メモリデバイス内に記憶されたデータへのランダムアクセスが可能であるのに対し、ＮＡＮＤフラッシュメモリでは、一般に、より大きいグループでデータにアクセスし、データを書き込むことが必要である。例えば、ＮＡＮＤフラッシュメモリには、通常、それぞれが複数のページを含む複数のブロックが含まれる。ここで、各ページには多数のバイトデータが含まれる。動作の際、データは、一度に１ブロック消去され、一度に１ページ書き込まれる。
【０００３】
メモリ技術の進歩により、記憶容量の増加を実現しつつ、シリコン領域の大幅な縮小がもたらされてきた。残念ながら、このようにオン・シリコン構造が指数関数的に縮小したことにより、強い干渉が生じて、メモリセルのサイクル耐久性に影響が及んできた。経時的に、データ操作（例えば、読み出し／書き込み操作）が集中すると、メモリセルが劣化する恐れがある。例えば、ＮＡＮＤメモリセルの書き込み／消去サイクル数には制限がある（例えば１００，０００プログラム／消去サイクル）。
【０００４】
これらのメモリデバイスを長寿命化するために、「ウェアレベリング」を適用して、メモリの様々な物理セクタにわたってデータを分散させることができる。ウェアレベリングは、一般に、メモリアレイの特定部分が早期に破壊されないようにするため、データを各種セクタに書き込んでセルの平等な使用を確保することを含む。ウェアレベリングは、最初にデータをメモリアレイの各種セクタの１つに書き込むことを含んでもよく、あるいは、メモリアレイ内のある物理セクタからデータを移動すること、及びその同じデータをメモリアレイの別の物理セクタに書き込むことを含んでもよい。
【０００５】
いくつかのメモリ技術（例えば、ページフラッシュメモリ）は、各セクタ内部に更なる粒度を備えていることを特徴としており、これはサブセクタと呼ばれる。サブセクタは、メモリのセクタ内部のメモリのセグメントである。サブセクタは、個別にアクセス（例えば、プログラム及び／または消去）されてもよい。従って、サブセクタは、別々のサイクルを有するため、メモリ内の他のサブセクタとはウェアアウトが異なる。残念ながら、従来のウェアレベリング技術では、特に、サイクル数が何十万に達し得る高データサイクル用途（例えば、ページフラッシュ実装）において、サブセクタの消耗に対する効果的な対処がなされてこなかった。
【図面の簡単な説明】
【０００６】
【図１】実施形態に従った、セクタ内スワップを実行するサブセクタウェア回路を備えたメモリシステムを表すブロック図である。
【図２】実施形態に従った、サブセクタ対応セクタスワッププロセスを示すフロー図である。
【図３】実施形態に従った、過剰サイクルが生じ得るサブセクタ対応セクタスワップを示す概略図である。
【図４】実施形態に従った、かかるセクタ内スワッププロセスを示すフローチャートである。
【図５】実施形態に従った、図４のプロセスを用いたセクタ内スワップを示す概略図である。
【図６】実施形態に従った、介在的なセクタ内群スワッププロセスを示すフロー図である。
【図７】実施形態に従った、図６のプロセスを用いたセクタ内スワップを示す概略図である。
【図８】実施形態に従った、再スクランブル回路を備えたシステムを示す概略図である。
【図９】実施形態に従った、マルチプレクサ（ＭＵＸ）を使用する再スクランブル回路を備えたシステムを示す概略図である。
【図１０】実施形態に従った、組み合わせ論理を使用する再スクランブル回路を備えたシステムを示す概略図である。
【発明を実施するための形態】
【０００７】
図１は、参照番号１０によって略称されるように、メモリシステムを表すブロック図である。メモリシステム１０は、コンピュータ、ポケットベル、携帯電話、電子手帳、制御回路等に使用されるものなどの、様々な種類のいずれであってもよい。例えば、メモリデバイスは、ＮＡＮＤ型フラッシュメモリまたはＮＯＲ型フラッシュメモリであってもよい。システム１０は、マスタデバイス１２及びスレーブデバイス１４を備える。一実施形態において、マスタデバイス１２はマイクロコントローラを備えてもよく、スレーブデバイス１４はメモリデバイスを備えてもよい。
【０００８】
マスタデバイス１２は、様々な伝送線路を介してスレーブデバイス１４に接続されている。図示した実施形態において、マスタデバイス１２及びスレーブデバイス１４は、周辺インタフェース（ＰＩ）を介して信号を送受信する。図示した実施形態において、ＰＩはＰＩバス１６を含む。いくつかの実施形態において、ＰＩバス１６は、フルデュプレックスモードで動作する同期シリアルデータリンク規格である。ＰＩバス１６上のデバイスは、マスタ／スレーブモードで動作してもよい。このモードにより、マスタデバイス１２が１つ以上のスレーブデバイス１４に対してデータフレームを開始することが可能となる。マスタデバイス１２及びスレーブデバイス１４は、一般にシフトレジスタを備える。このレジスタにより、これらのデバイスがデータ値を交換及び記憶することが可能となる。動作の際、マスタデバイス１２及びスレーブデバイス１４は、レジスタに記憶されたデータを用いて、メモリにデータを保存するなどの様々なことを行うことができる。
【０００９】
図示した実施形態において、スレーブデバイス１４（例えば、メモリデバイス）は、コントローラ１８、キャッシュ２０、メモリアレイ２２及びＥＣＣ２４ステータスレジスタを備える。コントローラ１８は、ＰＩバス１６を介してデータを送受信する。ＰＩバス１６全体に送信されるデータは、コントローラ１８の入力で受信される。コントローラ１８は、メモリデバイス１４の内部にあるデータ転送入出力線（ＤＴ  Ｉ／Ｏ）ならびに制御線２６、２８及び２９を介した信号の送受信も行う。ＤＴ  Ｉ／Ｏ線により、キャッシュ２０との通信が可能になる。制御線２６により、コントローラ１８がキャッシュ２０と制御信号を送受信することが可能になる。制御線２８により、ＰＩコントローラがメモリアレイ２２と制御信号を送受信することが可能になる。制御線２９により、ＰＩコントローラがエラー訂正符号（ＥＣＣ）ステータスレジスタ２４と制御信号を送受信することが可能になる。
【００１０】
動作の際、コントローラ１８は、ＰＩバス１６を介して送信されたデータを受信し、メモリ１４の他の構成要素の間でデータ（ＤＴ  Ｉ／Ｏ）と制御信号のフローを同期させる。例えば、ＰＩコントローラ１８は、バス１６を介してシリアル化形式のデータ及びコマンドを受信してもよく、データ及びコマンドの入力シリアル化信号を解析してもよい。コントローラ１８は、コントローラ１８によって送受信される信号を適切なタイミングで提供するシフトレジスタを備えてもよい。更に、コントローラ１８は、コマンド、アドレス、データ等を含む入力信号を解釈するために、オンボードで動作するアルゴリズムを備えてもよい。このアルゴリズムは、アドレス方式、エラー訂正、メモリアレイ２２内でのデータの移動等を含めて、コントローラ１８の適切な出力を決定するルーチンを備えてもよい。以下で更に詳しく述べるが、いくつかの実施形態において、コントローラ１８は、記憶データを移動させて、データサイクルによって生じる過度な消耗を防ぐようにしてもよい。同様に、コントローラ１８は、バス１６を介したコントローラ１８からマスタデバイス１２へのデータ送信を同期させる回路を備えてもよい。
【００１１】
動作の際、データ（ＤＴ  Ｉ／Ｏ）は、メモリアレイ２２に、またはそこから、キャッシュ２０を通じてバイト単位で転送される。キャッシュ２０は、コントローラ１８からメモリアレイ２２に転送されているデータのデータバッファとして機能する。データは、キャッシュ２０に書き込まれてもよく、その後メモリアレイ２２に書き込まれてもよい。同様に、データは、メモリアレイ２２からキャッシュ２０に読み出されてもよく、その後キャッシュ２０からマスタデバイス１２にコントローラ１８及びバス１６を介して送信されてもよい。キャッシュ２０は、様々なサイズであってよい。例えば、キャッシュ２０は、２０４８バイト、４０９６バイト、８１９２バイト、またはその倍数で構成されてもよい。キャッシュ２０は、２５６バイトまたは５１２バイト等のより小さいサイズであってもよい。ある実施形態において、データレジスタは、キャッシュ２０とメモリアレイ２２の間のデータ転送経路を提供するためにキャッシュ２０またはメモリアレイ２２に存在してもよいことに留意すべきである。換言すれば、複数のデータビットを、メモリアレイ２２のアドレスに書き込まれる前にデータレジスタにシフトしてもよい。
【００１２】
ＥＣＣステータスレジスタ２４は、経時的に進行する電荷の減少／増加に起因して生じるビットエラーのみならず、通常動作中に生じる可能性のあるビットエラーを検出し、かつ／または訂正するのに使用される。例えば、ＥＣＣステータスレジスタ２４は、メモリアレイ２２から再びデータを読み出すときにエラーを検出し、訂正するのに使用される回路を備えてもよい。ＥＣＣステータスレジスタ２４は、コントローラ１８で使用されるアルゴリズムを補完してもよい。ＥＣＣステータスレジスタ２４は、一群のサブレジスタを備えてもよい。これらのサブレジスタは、メモリデバイスデータの付加的なＥＣＣを有効にするＥＣＣイネーブル／ディセーブルレジスタ、発見された総エラー数を記憶するＥＣＣタイプレジスタ、任意の訂正不能なエラーの位置を記憶するＥＣＣロケーションレジスタ、メモリアレイ２２に対する任意のエラー訂正プロセスの結果に関する情報を記憶するＥＣＣ  ＮＡＮＤメモリリザルトレジスタ、またはキャッシュ２０に対する任意のエラー訂正プロセスの結果に関する情報を記憶するＥＣＣキャッシュメモリリザルトレジスタを備えてもよい。ＥＣＣステータスレジスタ２４には、先のＥＣＣサブレジスタの全て、または前述したサブレジスタの任意の組み合わせが含まれてもよい。コントローラ１８の外部にＥＣＣステータスレジスタ２４が存在するように示されているものの、ＥＣＣステータスレジスタ２４は、コントローラ１８と一体であってもよい。
【００１３】
メモリアレイ２２はメモリセルアレイを備えており、このアレイはセクタ３０に分割されている。各セクタは、一定数のサブセクタ３２を含む。メモリアレイ２２は、任意の数及びサイズのセクタ３０及びサブセクタ３２を含んでもよい。メモリアレイ２２は、セクタ３０及び／またはサブセクタ３２のレベルでプログラムされ、かつ／または消去されてもよい。
【００１４】
上述したように、あるメモリセルの書き込み／消去サイクル数には制限がある（例えば１００，０００プログラム／消去サイクル）。メモリデバイス１４を長寿命化するために、「ウェアレベリング」を適用して、メモリの様々な物理的位置にわたってデータを分散させることができる。ウェアレベリングは、一般に、メモリアレイ２２の特定部分が早期に破壊されないようにするため、データを様々な位置に書き込んでセルの平等な使用を確保することを含む。ウェアレベリングは、最初にデータをメモリアレイ２２の様々な位置の１つに書き込むことを含んでもよく、あるいは、メモリアレイ２２内のある物理的位置（例えば、アドレス）からデータを移動すること、及びその同じデータをＮＡＮＤメモリアレイ２２の別の物理的位置に書き込むことを含んでもよい。コントローラ１８は、データをどこに書き込むべきかを決定するのに使用されるウェアレベリングルーチンを管理してもよい。例えば、コントローラ１８のアルゴリズム及び／または回路は、メモリ使用量を監視してもよく、メモリアレイ２２内にデータを書き込むために適切なアドレスを決定してもよい。例えば、コントローラ１８（または、メモリシステム１０の他の構成要素）は、以下で更に詳しく述べるように、メモリアレイ２２内の個々のサブセクタ３２の消耗量に基づいたウェアレベリングを提供するサブセクタウェア回路３４を備えてもよい。ブロックマッピング部（ＢＭＵ）は、セクタ及び／またはサブセクタを再マッピングする（例えば、再マッピングすべきセクタ及び／またはサブセクタのアドレスを更新する）のみならず、スワップ履歴を追跡する役割を果たしてもよい。
【００１５】
図１の実施形態のコントローラ１８の一部としてサブセクタウェア回路３４が示されているが、サブセクタウェア回路３４は、部分的または全面的に、メモリシステム１０の他の構成要素にて実装されてもよい。例えば、いくつかの実施形態において、マスタデバイス１２は、回路３４を構成するウェアレベルルーチンの一部を備えてもよい。更に、スレーブデバイス１４は、回路３４を構成するウェアレベルルーチンの別の部分を備えてもよい。
【００１６】
サブセクタウェア回路３４は、複数の異なる手法を用いて実装されてもよい。一実施形態においては、階層的なウェアレベル手法を実施してもよい。階層的なウェアレベル手法は、各セクタ３０内部でサブセクタ３２のウェアレベリングを実施してもよい。換言すれば、サブセクタ３２は、セクタ３０内のサブセクタ３２の相対的なウェアレベルに基づいてセクタ３０内部でスワップされてもよい。階層的なウェアレベル手法のトレードオフは、かかる手法のハードウェアオーバーヘッドが増大することである。例えば、この手法を実現するためには、個別アドレスの割り当てを再マッピングするハードウェアが各セクタ内で必要となる場合がある。
【００１７】
別の実施形態においては、サブセクタを、それらが個別セクタであるかのように個別にスワップしてもよい。本質的には、このことは、サブセクタ階層を平坦化するように作用して、スワップ数及びスワッピングプールを増大させる。この手法のトレードオフは、特にセクタレベルにおいて、スワッピングプールが増大することによってスワッピングの管理が非常に複雑になり得ることである。
【００１８】
第３の実施形態においては、サブセクタが閾ウェアレベルに到達したときに、サブセクタ対応セクタスワップと呼ばれる、セクタ３０のスワップが行われ得る。図２は、実施形態に従った、サブセクタ対応セクタスワッププロセス５０を示すフロー図である。システム１０は、いずれのセクタ３０が高ウェアレベルを有するかどうかを検出し得る（決定ブロック５２）。前述したように、セクタのウェアレベルは、セクタ３０内の１つ以上のサブセクタ３２に関する情報に基づいてもよい。例えば、消耗は、セクタ３０内のサブセクタ３２の最高サイクル数、所与のセクタ３０内の全てのサブセクタ３２のサブセクタ３２サイクル数の合計、所与のセクタ３０内の全てのサブセクタ３２のサブセクタ３２サイクル数の平均等に基づいて決定されてもよい。一実施形態においては、所定の閾値サイクル数を突破したときに（例えば、サイクル数が１００，０００サイクルを超えたときに）高ウェアレベルを検出してもよい。
【００１９】
セクタ３０が高ウェアレベルを有することが検出されなかった場合、システム１０は、高ウェアレベルを有するセクタ３０を監視し続ける。セクタ３０が高ウェアレベルを有することが一旦検出されたら、スワップを開始してもよい。この場合、高ウェアレベルを有するセクタ３０は、宛先セクタ３０にスワップするためのターゲットセクタである。従って、この高ウェアレベルセクタ３０は「ターゲットセクタ」と呼ばれてもよい。
【００２０】
最良の宛先セクタ３０は、消耗が最も少ないセクタ３０となり得る。このセクタは、「最小セクタ」と呼ばれてもよい。スワップが一旦開始されると、最小セクタが決定される（ブロック５４）。上述したように、ウェアレベルは、セクタ３０内のサブセクタ３２の最高サイクル数、所与のセクタ３０内の全てのサブセクタ３２のサブセクタ３２サイクル数の合計、所与のセクタ３０内の全てのサブセクタ３２のサブセクタ３２サイクル数の平均等に基づいてもよい。従って、最小セクタは、サイクル数に基づいて最低のウェアレベルを有するセクタを特定することによって決定されてもよい。ターゲットセクタ及び最小セクタが一旦決定されると、ターゲットセクタから最小セクタへのスワップが行われる（ブロック５６）。
【００２１】
例えば、スワップは、メモリアレイ２２内のデータをメモリアレイ２２の別の位置に移動させることを含んでもよい。このプロセスは、一般に、メモリアレイ２２の先頭アドレスからキャッシュにデータをロードすることを含んでもよい。その後、キャッシュされたデータを、アレイ２２内の新たな宛先位置に書き込んでもよい。
【００２２】
この手法の下では、セクタレベルにまでスワップを広げる一方、サブセクタのウェアレベルに基づいてスワップを開始することにより、スワッピングレベルの管理がより容易になる。消耗したサブセクタが位置するセクタ３０中の被転送サブセクタ３２は、消耗がより少ない別のセクタ３０においてそれらのサブセクタの位置を保持する。この手法のトレードオフは、過剰サイクルとなる場合がある。例えば、セクタ３０のスワップを、セクタ３０内の１つまたはいくつかのサブセクタ３２の消耗に対処するように開始したとき、セクタ３０のスワップにより、あるサブセクタ３２が、新たなセクタ３０の位置における消耗が相対的により大きいサブセクタ３２に転送される場合がある。従って、これらの転送により、ターゲットサブセクタ３２の消耗が増大する場合がある。図３は、過剰サイクルが生じ得る、サブセクタ対応セクタスワップ６０を示す概略図である。
【００２３】
上述したように、ターゲットセクタ６２から最小セクタ６４に転送するためのサブセクタ３２は、最小セクタ６４においてそれらの相対位置を保持する。従って、ターゲットセクタ６２のサブセクタＳＳ４は、転送後の最小セクタ６４においてもＳＳ４のままである。図示したように、最小セクタ６４のＳＳ４は、最小セクタ６４における相対的に最高のウェアレベルのサブセクタとなる場合がある。従って、このスワップでは、サイクルが累積し、最小セクタ６４が過剰サイクルになる場合がある。
【００２４】
この問題を抑制するために、一実施形態においては、更なる論理／回路を実装してサブセクタ対応セクタスワップを拡張することにより、サブセクタ３２の消耗を低減させるようにしてもよい。特に、図２のサブセクタ対応セクタスワッププロセス５０においてセクタ３０のスワップを開始するときには常に、更なる論理／回路にサブセクタ３２のセクタ内スワップを組み入れてもよい。図４は、かかるセクタ内スワッププロセス７０を示すフローチャートである。
【００２５】
図２と同様に、システム１０は、いずれのセクタ３０が高ウェアレベルを有するかどうかを検出し得る（決定ブロック５２）。更に、セクタのウェアレベルは、セクタ３０内の１つ以上のサブセクタ３２に関する情報に基づいてもよい。このような情報としては、セクタ３０内のサブセクタ３２の最高サイクル数、所与のセクタ３０内の全てのサブセクタ３２のサブセクタ３２サイクル数の合計、所与のセクタ３０内の全てのサブセクタ３２のサブセクタ３２サイクル数の平均等がある。上述したように、所定の閾サイクル数を突破したときに（例えば、サイクル数が１００，０００サイクルを超えたときに）高ウェアレベルを検出してもよい。
【００２６】
セクタ３０が高ウェアレベルを有することが検出されなかった場合、システム１０は、高ウェアレベルを有するセクタ３０を監視し続ける。セクタ３０が高ウェアレベルを有することが一旦検出されたら、ターゲットセクタ６２から最小セクタ６４へのスワップを開始してもよい。スワップが一旦開始されると、最小セクタ６４が決定される（ブロック５４）。上述したように、最小セクタ６４は、サブセクタのサイクル数に基づいて最低のウェアレベルを有するセクタを特定することによって決定されてもよい。
【００２７】
ターゲットセクタ６２及び最小セクタ６４が一旦決定されると、組み込み式のサブセクタスワッププロセス７２を用いたスワップが行われる（ブロック７４）。組み込み式のサブセクタスワッププロセス７２は、最小セクタ６４の最小サブセクタ（最低のウェアレベルを有するサブセクタ）を決定すること（ブロック７６）を含む。その後、ターゲットサブセクタ（例えば、ターゲットセクタ６２中の消耗が大きいサブセクタ）を最小サブセクタとスワップする（ブロック７８）。
【００２８】
プロセス７０の終了時、サブセクタ対応セクタスワップと同様に、最小セクタ６４は、ターゲットセクタ６２の全てのデータを含む。しかしながら、ターゲットサブセクタと最小サブセクタの位置はスワップされている。図５は、図４のプロセス７０に従ったセクタ内スワップ９０を示す概略図である。
【００２９】
図５に示すように、サブセクタＳＳ４は、ターゲットセクタ６２の最大サブセクタ９２である。換言すれば、ＳＳ４は、消去すべきサブセクタである。ターゲットセクタ６２から最小セクタ６４へのスワップに組み込まれたサブセクタスワップを使用して、最大サブセクタ９２を最小サブセクタ９４とスワップする。従って、最小セクタ６４中の相対的に消耗が最も大きいサブセクタ９６に最大サブセクタ９２を確実に配置しないようにすることにより、過剰サイクルが減少し得る。
【００３０】
理解され得るように、最大サブセクタ９２と最小サブセクタ９４のセクタ内スワップにより、サイクルの累積が抑制され得る。図５に記述したシナリオにおいて、例えば、各セクタ３０は１６個のサブセクタ３２を含む。従って、最大サブセクタ９２と最小サブセクタ９４のスワップを実施することにより、サイクル数は、このスワップを利用しないプロセスよりも１６回少なくなり得る。更に、スワップがセクタ内スワップであるため、処理時間の増加は無視できるほどになり得る。
【００３１】
サイクル数が大幅に改善され、かつタイミングコストが最低限であるにも関わらず、プロセス７０は、増加したシリコン領域を利用してもよい。例えば、サブセクタをスワップするために、ブロックマッピング部（ＢＭＵ）は、単にセクタアドレスを追跡する代わりに各サブセクタのアドレスを追跡することが必要となる場合がある。
【００３２】
従って、介在的なセクタ内スワッピングソリューションは、増加したシリコン領域の使用量を減少させるように実施されてもよい。図６は、実施形態に従った、介在的なセクタ内群スワッププロセス１１０を示すフロー図である。
【００３３】
セクタ内スワッププロセス７０において各サブセクタのメモリアドレスを追跡するのに必要とされる増加したシリコン領域の使用量の一部を削減するため、サブセクタを束ねて（ブロック１１２）、複数のサブセクタのより粒度の粗いアドレスが代わりに使用され得るようにしてもよい。図７の考察に関してより詳しく説明されているように、アドレスがより粗い粒度であってもよいため、より少ないビットデータを使用して群状サブセクタのアドレスを定めてもよい。このように、シリコン領域をより少なくして利用してもよい。
【００３４】
システム１０は、いずれのセクタ３０が高ウェアレベルを有するかどうかを検出し得る（決定ブロック５２）。上述したように、セクタのウェアレベルは、セクタ３０内の１つ以上のサブセクタ３２に関する情報に基づいてもよい。このような情報としては、セクタ３０内のサブセクタ３２の最高サイクル数、所与のセクタ３０内の全てのサブセクタ３２のサブセクタ３２サイクル数の合計、所与のセクタ３０内の全てのサブセクタ３２のサブセクタ３２サイクル数の平均等がある。更に、所定の閾サイクル数を突破したときに（例えば、サイクル数が１００，０００サイクルを超えたときに）高ウェアレベルを検出してもよい。
【００３５】
セクタ３０が高ウェアレベルを有することが検出されなかった場合、システム１０は、高ウェアレベルを有するセクタ３０を監視し続ける。セクタ３０が高ウェアレベルを有することが一旦検出されたら、ターゲットセクタ６２から最小セクタ６４へのスワップを開始してもよい。スワップが一旦開始されると、最小セクタが決定される（ブロック５４）。上述したように、最小セクタ６４は、サブセクタのサイクル数に基づいて最低のウェアレベルを有するセクタを特定することによって決定されてもよい。
【００３６】
ターゲットセクタ６２及び最小セクタ６４が一旦決定されると、組み込み式の群状サブセクタスワッププロセス１１４を用いたスワップが行われる（ブロック１１６）。組み込み式の群状サブセクタスワッププロセス１１４は、最小セクタ６４の最小群（最低のウェアレベルを有するサブセクタを含む群、及び／または最低のウェアレベルを有する群）を決定すること（ブロック１１８）を含む。その後、ターゲット群（例えば、ターゲットセクタ６２中の消耗が大きいサブセクタを含む群）を、最小群とスワップする（ブロック１２０）。
【００３７】
プロセス１１０は、プロセス７０よりもサイクル数を少なく削減し得ると共に、標準的なサブセクタ対応セクタスワップ手法と比較してサイクル数を減少させる。更に、スワップには個別のサブセクタではなくサブセクタの群が関与するため、管理の複雑さやシリコン領域の使用量が減少し得る。例えば、ブロックマッピング部は、プロセス７０よりも粗い粒度でスワップを維持し、管理し得る。従って、セクタ内スワップを伴わないセクタとサブセクタのスワップ手法で生じる不要なサイクルの一部を削減したまま、処理の複雑さやシリコン領域が減少し得る。
【００３８】
図７は、図６のプロセス１１０に従ったセクタ内スワップ１４０を示す概略図である。図７に示すように、サブセクタ３２は、アドレス指定可能な群１４２に束ねられる。例えば、セクタ３０が１６個のサブセクタ３２を含む図示した実施形態において、サブセクタは、４つのサブセクタ３２からなる４つ一組に束ねられる。更に、図示したように、各群は、各サブセクタ３２を個別にアドレス指定するときに可能となる方法よりも粒度の粗い方法でアドレス指定可能である。例えば、図示した実施形態の各セクタ３０が４つ一組の４つの群状サブセクタ３２に分割されるため、これらの群は、２ビット１４４を用いてアドレス指定され得る。これに対して、各サブセクタ３２を個別にアドレス指定することは、増加したシリコン領域を利用する場合がある。例えば、１６個のサブセクタ３２からなる図示した実施形態においては、少なくとも４ビットのデータを使用してサブセクタ３２のアドレスを一意に識別することになる。
【００３９】
指示されているように、サブセクタＳＳ４は、ターゲットセクタ６２の最大サブセクタ９２である。換言すれば、ＳＳ４は、消去すべきサブセクタである。更に、アドレス「１０」を有する群１４６は最大群１４６であるが、これは、この群が最大サブセクタ９２を含むためである。ターゲットセクタ６２と最小セクタ６４のスワップに組み込まれた群状サブセクタスワップを使用して、最大群１４６を最小群１４８（群１４２は最小サブセクタ９４を含む）とスワップする。
【００４０】
従って、最小セクタ６４中の相対的に最大の消耗を有するサブセクタ９６を含む群に最大群１４６が確実に配置されないようにすることにより、過剰サイクルが減少し得る。
【００４１】
理解され得るように、最大群１４６と最小群１４８のセクタ内群状サブセクタスワップにより、サイクルの累積が抑制され得る。図７に記述したシナリオにおいて、例えば、各セクタ３０は４つの群１４２を含む。従って、最大群１４６と最小群１４８のスワップを実施することにより、サイクル数は、このスワップを利用しないプロセスよりも４回少なくなり得る。加えて、処理及びシリコン領域の利用は、プロセス７０よりも少なくなり得る。更に、上記のように、スワップがセクタ内スワップであるため、処理時間の増加は無視できるほどになり得る。
【００４２】
いくつかの実施形態においては、セクタ内群スワッププロセス１１０で使用される領域よりも更に大きくシリコン領域の使用量を減少させることが望ましい場合がある。上記を実現し得る１つの方法は、図４及び６の各セクタ内スワップ７２及び／または１１４の代わりにサブセクタ３２の包括的なアドレス再マッピングを実施することによるものである。これは、サブセクタ対応セクタスワップ中にセクタ内アドレスを変更する再スクランブル回路によってなされてもよい。図８は、再スクランブル回路１６２を備えたシステム１６０を示す概略図である。この再スクランブル回路は、最小セクタ６４の最大の消耗を有する最小セクタ６４中のサブセクタ３２の位置に配置することによって最大サブセクタ９２及び／または最大群１４６を平準化するために、サブセクタ、サブセクタの群等のアドレスを包括的に再マッピングすることができる。
【００４３】
図示したように、ブロックマッピング部（ＢＭＵ）１６４は、再スクランブルを行うべきセクタ３０の論理セクタアドレス１６６を受け取る。その後、ＢＭＵ１６４は、セクタ３０の物理セクタアドレス１６８及び１つ以上の設定ビット１７０を出力することによって包括的なアドレス再マッピングを行わせてもよい。この設定ビットにより、論理セクタ内アドレス１７２の再マッピングが個別に行われる。設定ビットは、再スクランブル回路１６２にて受け取られる。ここで、再マッピング後の物理セクタ内アドレス１７４が、設定ビット１７０及び論理セクタ内アドレス１７２に基づいて出力される。
【００４４】
一実施形態において、再スクランブル回路１６２は、図９に示すように、マルチプレクサ（ＭＵＸ）ソリューションを備えてもよい。かかる実施形態において、設定ビット１７０は、複数のビットセット１９０を含んでもよい。この場合、複数のビットセット１９０はスワップすべきアドレスを表す。例えば、図７の実施形態において、複数のビットセット１９０はそれぞれ、４つ一組の群のうちの１つを表す。従って、４（スワップ可能なものの数）×２（スワップされるもののアドレスを表すのに必要なビットの数）が、再スクランブル回路１６２に渡される。そこから、マルチプレクサ（例えば、再スクランブル回路１６２）は、破線１９２によって示すように、再マッピングを行うために複数のビットセット１９０のうちの１つを選択する。マルチプレクサの選択は、再スクランブル回路１６２への入力として受け取った論理セクタ内アドレス１７２によって制御される。選択された複数のビットセット１９０（例えば、ビットセット１９４）に基づき、再マッピング後の物理セクタ内アドレス１７４が出力される。
【００４５】
理解され得るように、この再スクランブルソリューションでは、（例えば、プロセス７０及び／または１１０に従って）セクタ内スワップを実行する回路に比べて必要なシリコン領域が少なくなる場合がある。しかしながら、このプロセスには、若干のオーバーヘッドが更に含まれる場合がある。これは、複数のビットセット１９０の数が非常に多くなり得るためである。従って、いくつかの実施形態においては、設定ビット１７０をより少なくして用いる別のソリューションを使用することが有益となる場合がある。図１０は、システム１６０の実施形態を示す。ここでは、組み合わせ論理２００（例えば、加算論理２０２及び／または排他的Ｏｒ（ＸＯＲ）論理２０４）を、設定ビット１７０のうちの１セット２１０及び論理セクタ内アドレス１７２と連携して使用することにより、再マッピング後の物理セクタ内アドレス１７４を出力する。
【００４６】
前述したように、ブロックマッピング部（ＢＭＵ）１６４は、論理セクタアドレス１６６を入力として受け取る。ＢＭＵ１６４は、出力として、物理セクタアドレス１６８及び設定ビット１７０のセット２１０を提供する。この設定ビット１７０のセット２１０は、論理セクタ内アドレス１７２を再マッピングするために組み合わせ論理２００と連携して使用され得る。本実施形態において、再スクランブル論理によって提供される再マッピングは、消耗が大きいところから消耗が大きいところにサブセクタが配置されることを避けることによってセクタ内サイクルを平準化し得る。しかしながら、本明細書に述べた他のソリューションとは異なり、このソリューションによって最も大きい消耗を最も少ない消耗にするソリューションが必ずしも提供されるわけではない。
【００４７】
再マッピングするために、再スクランブル回路は、論理セクタ内アドレス１７２とセット２１０の間で組み合わせ論理２００を使用して、再マッピング後の物理セクタ内アドレスを出力する。例えば、加算論理２０２を用いてアドレス「０１」を有する４つ一組の群をアドレス「１０」を有する４つ一組の群に再マッピングするためには、ＢＭＵ１６４から提供される設定ビット１７０のセット２１０は「０１」である。あるいは、ＸＯＲ論理２０４を用いて同一の再マッピングを実行するためには、設定ビット１７０のセット２１０は「１１」である。
【００４８】
本明細書に記載したセクタ内スワップシステム及びセクタ内スワップ技術を使用することにより、サブセクタのウェアレベリングを行う際の時間的特性が大幅に向上し得る。更に、セクタ内スワップの代わりに再スクランブル論理を使用することにより、ハードウェア及びソフトウェア論理のオーバーヘッドが減少し得る。
【００４９】
本発明には、様々な変形及び代替形態の余地があり得るが、特定の実施形態を一例として図面に示し、本明細書で詳細に説明してきた。しかしながら、開示された特定の形態に限定されることを本発明が意図するものではないことを理解すべきである。むしろ、本発明は、以下に続く添付された特許請求の範囲によって定められる本発明の趣旨及び範囲に含まれる全ての変形例、均等物及び代替物を網羅しようとするものである。
【図１】
0006317039.tif 000002
【図２】
0006317039.tif 000003
【図３】
0006317039.tif 000004
【図４】
0006317039.tif 000005
【図５】
0006317039.tif 000006
【図６】
0006317039.tif 000007
【図７】
0006317039.tif 000008
【図８】
0006317039.tif 000009
【図９】
0006317039.tif 000010
【図１０】
0006317039.tif 000011