(57)【要約】メモリデバイスを有するシステムにおいて、あるイベントがシステム操作中に検出される。メモリデバイスは、そのイベントの検出に応じて、メモリデバイスの使用に起因する劣化を反転させるために加熱される。別のシステムにおいて、メモリデバイスは、そのシステムの別のメモリデバイス内でのデータアクセス操作と同時に使用に起因する劣化を回復させるために加熱される。第１および第２のメモリデバイスと連結されたメモリコントローラを有する別のシステムにおいては、データは、メンテナンス操作が第１のメモリデバイス内において必要であると決定することに応じて、第１のメモリデバイスから第２のメモリデバイスに退避される。【選択図】図１
2013502647.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリデバイスおよび少なくとも１つの他のメモリデバイスを有するシステムを操作する方法であって、
前記システムの操作の間にイベントを検出することと、
前記不揮発性メモリデバイスから前記少なくとも１つの他のメモリデバイスへデータを退避させることと、
前記不揮発性メモリデバイスの使用に起因する劣化を回復させるために閾値温度へ前記不揮発性メモリデバイスを加熱することと、
を含む、方法。
【請求項２】
前記システムの操作の間に前記イベントを検出することは、先行イベントの検出から所定の時間量が経過したことを判定することを含み、前記不揮発性メモリデバイスは、前記先行イベントに応じて前記閾値温度まで事前に加熱されている、請求項１に記載の方法。
【請求項３】
所定の時間量が経過したことを判定することは、前記デバイスが前記先行イベントに応じて前記閾値温度まで事前に加熱されてから、前記不揮発性メモリデバイス内で閾値数の操作が行われたことを判定することを含む、請求項２に記載の方法。
【請求項４】
前記不揮発性メモリデバイスがフラッシュメモリデバイスを含む、請求項１に記載の方法。
【請求項５】
前記システムの操作の間に前記イベントを検出することは、前記不揮発性メモリデバイスの操作に関連してエラー閾値に達したことを判定することを含む、請求項１に記載の方法。
【請求項６】
エラー閾値に達したことを判定することは、所定の数の不良格納ブロックが検出されたことを判定することを含む、請求項５に記載の方法。
【請求項７】
前記システムの操作の間に前記イベントを検出することは、前記システム内のプログラム可能なレジスタによって特定されたイベントの発生を検出することを含む、請求項１に記載の方法。
【請求項８】
前記少なくとも１つの他のメモリデバイスは、不揮発性メモリから実質的になり、前記不揮発性メモリデバイスおよび前記少なくとも１つの他のメモリデバイスがメインメモリの平らな階層でインスタンス化される、請求項１に記載の方法。
【請求項９】
前記不揮発性メモリデバイスは、前記システム内の複数のメモリデバイスのうちの第１のメモリデバイスであり、前記方法は、前記不揮発性メモリデバイスを前記閾値温度まで加熱しながら、前記不揮発性メモリデバイス以外の前記複数のメモリデバイスのうちの少なくとも１つのメモリデバイス内で、メモリアクセスを実行することを含む、請求項８に記載の方法。
【請求項１０】
退避させることは、前記不揮発性メモリデバイスを前記閾値温度まで加熱することに先立って行われる、請求項１に記載の方法。
【請求項１１】
前記少なくとも１つの他のメモリデバイスは、第２のメモリデバイスおよび第３のメモリデバイスを含み、データを退避させることは、第１のサブセットのデータを前記不揮発性メモリデバイスから前記第２のメモリデバイスへ、そして前記第１のサブセットのデータとは異なる第２のサブセットのデータを、前記第３のメモリデバイスへ退避させることを含む、請求項１に記載の方法。
【請求項１２】
データ格納システムであって、
不揮発性メモリデバイスと、
少なくとも１つの他のメモリデバイスと、
前記データ格納システムの操作の間、前記不揮発性メモリデバイスの使用関係の劣化に対抗する必要性を示すイベントを検出し、前記イベントの検出に応じて、前記使用関係の劣化に対抗するため、前記不揮発性メモリデバイスを加熱するための、制御回路と、
（１）前記不揮発性メモリデバイスを加熱することに先立って、前記不揮発性メモリデバイスから前記少なくとも１つの他のメモリデバイスへデータを退避させること、または（２）前記不揮発性メモリデバイスの加熱後に、前記少なくとも１つの他のメモリデバイスから、前記不揮発性メモリデバイス内のデータを復元すること、のうちの１つを行うための、データ移行回路と、を備える、データ格納システム。
【請求項１３】
前記メモリデバイスは、不揮発性記憶セルを含み、前記不揮発性記憶セルは、前記不揮発性記憶セル内に格納されたデータに対してプログラミング操作が実行されるに伴いデータ保持時間が次第に劣化する挙動を、使用関係の劣化の一態様として示す、請求項１２に記載のデータ格納システム。
【請求項１４】
使用関係の劣化を防止する必要性を示しているイベントを検出するための前記回路が、性能を劣化させる操作が前記メモリデバイス内において閾値数実行されたことを検出するための回路を備える、請求項１２に記載のデータ格納システム。
【請求項１５】
性能を劣化させる操作が閾値数実行されたことを検出するための前記回路は、プログラム可能なレジスタと、性能を劣化させる操作の前記閾値数を示す値を前記データ格納システムの外部のソースから受信してプログラム可能なレジスタ内に格納する回路と、を備える、請求項１４に記載のデータ格納システム。
【請求項１６】
前記データ移行退避回路が、不揮発性メモリデバイスを加熱することに先立って前記不揮発性メモリデバイスから前記少なくとも１つの他のメモリデバイスへのデータ退避を実行する、請求項１２に記載のデータ格納システム。
【請求項１７】
使用関係の劣化を防止する必要性を示すイベントを検出するための前記回路が、前記不揮発性メモリデバイスの操作の際に、エラー数が閾値に達したことが検出されたことを判定するための回路を備える、請求項１２に記載のデータ格納システム。
【請求項１８】
前記不揮発性メモリデバイスの操作の際に、エラー数が閾値に達したことが検出されたことを判定するための前記回路が、時間間隔以内に閾値のエラー数が検出されること、およびそれゆえにエラー率が閾値に達したことを判定するための回路を備える、請求項１７に記載のデータ格納システム。
【請求項１９】
エラー数が閾値に達したことが検出されたことを判定するための前記回路が、前記不揮発性メモリデバイスにおいて閾値数の低信頼性記憶領域が確認されたことを検出するための回路を備える、請求項１７に記載のデータ格納システム。
【請求項２０】
エラー数が閾値に達したことが検出されたことを判定するための前記回路が、前記不揮発性メモリデバイス内において閾値数のデータプログラミング操作が不成功となったことを検出するための回路を備える、請求項１９に記載のデータ格納システム。
【請求項２１】
エラー数が閾値に達したことが検出されたことを判定するための前記回路が、前記不揮発性メモリデバイスから読み出されたデータ内に閾値数のビット誤りが存在することを検出するための回路を備える、請求項１９に記載のデータ格納システム。
【請求項２２】
前記使用関係の劣化を防止するために前記不揮発性メモリデバイスを加熱するための前記回路が、前記不揮発性メモリデバイスに近接して配置された熱回路を備える、請求項１２に記載のデータ格納システム。
【請求項２３】
パッケージ構造をさらに含み、前記不揮発性メモリデバイスが前記パッケージ構造内に配置された集積回路ダイを含み、前記加熱構造が前記パッケージ構造内で集積回路ダイに隣接して配置される、請求項２２に記載のデータ格納システム。
【請求項２４】
プリント回路基板をさらに含み、前記熱回路および不揮発性メモリデバイスが、前記プリント回路基板上で相互に近接して取り付けられる、請求項２２に記載のデータ格納システム。
【請求項２５】
前記データ移行回路が、退避段階の順序で前記不揮発性メモリデバイスから前記少なくとも１つの他のメモリデバイスにデータを退避するための回路を含み、前記退避段階が受動的退避段階を含み、前記受動的退避段階において、前記不揮発性メモリデバイス内にすでに格納されたデータが、前記すでに格納されたデータの代わりとして本来前記不揮発性メモリデバイス内に格納されるデータを前記少なくとも１つの他のメモリデバイスにリダイレクトすることで、無効にされる、請求項１２に記載のデータ格納システム。
【請求項２６】
データを段階の順序で退避させるために前記回路で実装される前記退避段階が、さらに、能動的退避段階を含み、前記能動的退避段階において、前記データ退避回路が前記不揮発性メモリデバイス内にすでに記憶されたデータを前記少なくとも１つの他のメモリデバイスにコピーする、請求項２５に記載のデータ格納システム。
【請求項２７】
前記データ格納システムが前記複数のメモリデバイス内でデータのページの格納位置を示すためのページテーブル、および前記不揮発性メモリデバイス内で前記すでに記憶されたデータのリポジトリとして前記少なくとも１つの他のメモリデバイスを特定するために、前記能動的退避段階中に前記ページテーブルを更新するための回路をさらに含む、請求項２６に記載のデータ格納システム。
【請求項２８】
前記不揮発性メモリデバイスが制御回路によって前記不揮発性メモリデバイスの前記使用関係の劣化を防止するために加熱される間隔にわたる間、前記少なくとも１つの他のメモリデバイス内でデータアクセス操作を実行するための回路をさらに含む、請求項１２に記載のデータ格納システム。
【請求項２９】
前記少なくとも１つの他のメモリデバイスは実質的に不揮発性メモリからなり、前記不揮発性メモリデバイスおよび前記少なくとも１つの他のメモリデバイスがメインメモリの平らな階層でインスタンスを生成する、請求項１２に記載のデータ格納システム。
【請求項３０】
データ格納システム内での操作の方法は、
前記第１のメモリデバイスの使用関係の劣化を防止するために、前記データ格納システムの第１のメモリデバイスを第１の時間間隔にわたって加熱することと、
前記第１の時間間隔中に前記データ格納システムの第２のメモリデバイス内でデータアクセス操作を実行することと、
を含む、方法。
【請求項３１】
前記第１および第２のメモリデバイスは不揮発性記憶セルを含み、前記不揮発性記憶セルは、前記不揮発性記憶セル内にデータを格納するプログラミング操作が実行されるに伴いデータ保持時間が次第に減少する挙動を、使用関係の劣化の一態様として示し、前記データ格納システムの第１のメモリデバイスを加熱することは、少なくとも１つの前記不揮発性記憶セルの前記データ保持時間を、前記第１の時間間隔の開始時点における前記少なくとも１つの前記不揮発性記憶セルの前記データ保持時間に比べて改善する温度に前記第１のメモリデバイスを加熱することを含む、請求項３０に記載の方法。
【請求項３２】
さらに、前記第１の時間間隔の終わりにおいて、前記第１のメモリデバイスの加熱を中断すること、および前記第１の時間間隔と重ならず前記第１の時間間隔に続く第２の時間間隔の間に、前記第１および第２のメモリデバイス内で同時にデータアクセス操作を実行することを含む、請求項３０に記載の方法。
【請求項３３】
さらに、前記第２の時間間隔中に前記データ格納システムの第３のメモリデバイスを加熱することを含む、請求項３２に記載の方法。
【請求項３４】
使用関係の劣化を防止する目的で前記第１のメモリデバイスを加熱することが、前記第１のメモリデバイスを、前記第１のメモリデバイス内に格納されたデータが失われることが予期されるアニール温度に加熱することを含む、請求項３０に記載の方法。
【請求項３５】
さらに、前記第１のメモリデバイスを前記アニール温度に加熱することに先立って、前記第１のメモリデバイスが前記データ格納システム内でデータを失うことなく前記アニール温度に加熱されることを可能にするために、データをデータ格納システムの前記第１のメモリデバイスから１つ以上の他のメモリデバイスへ退避させることを含む、請求項３４に記載の方法。
【請求項３６】
データを前記第１のメモリデバイスから前記データ格納システムの１つ以上の他のメモリデバイスに退避させることが、
第２の書き込みデータ値によって占められる前記第１のメモリデバイス内の格納位置に対応するアドレスに第１の書き込みデータ値を格納する要求を受信することと、
前記第１の書き込みデータ値を、前記第１のメモリデバイスの代わりに前記１つ以上の他のメモリデバイスに格納することと、
前記第１のメモリデバイス内の前記格納位置が、前記第２の書き込みデータ値によって占められることを示しているレコードを無効にすることとを含む、請求項３５に記載の方法。
【請求項３７】
第１の書き込みデータ値を前記第１のメモリデバイス内の格納位置に対応するアドレスに格納する要求を受信することが、メモリ書き込み要求と関連して、前記第１のメモリデバイス内の前記格納位置の物理アドレスに対応する仮想アドレスを受信することを含む、請求項３６に記載の方法。
【請求項３８】
前記第１のメモリデバイス内の前記格納位置の物理アドレスに対応する仮想アドレスを受信することが、前記データ格納システムのページテーブルのエントリ内にあらかじめ記憶されている仮想アドレスを受信することを含み、前記ページテーブルの前記エントリが、前記第１のメモリデバイス内の前記格納位置の前記物理アドレスに対応する前記仮想アドレスを特定する、請求項３７に記載の方法。
【請求項３９】
前記第１のメモリデバイスの代わりに前記１つ以上の他のメモリデバイスに前記第１の書き込みデータ値を格納することが、前記ページテーブルへ新しいエントリを挿入することを含み、前記新しいエントリは前記１つ以上の他のメモリデバイス内の格納位置の物理アドレスを示し、前記第１のメモリデバイス内の前記格納位置が前記第２の書き込みデータ値によって占められることを示す記録を無効にすることが、前記第１のメモリデバイスに対応するページテーブルエントリを無効にすることを含む、請求項３６に記載の方法。
【請求項４０】
さらに、前記第１のメモリデバイスから読み込まれたデータ値が１つ以上の他のメモリデバイスに転送されることを可能にするために、前記第１のメモリデバイスに連結するデータ入力経路を、前記１つ以上の他のメモリデバイスに連結するデータ出力経路に、切り替え可能に接続することを含む、請求項３５に記載の方法。
【請求項４１】
前記第１のメモリデバイスから、前記データ格納システムの１つ以上の他のメモリデバイスにデータを退避させることが、少なくとも部分的に、前記複数のデータ値の各々が前記データ格納システム内で受信されるメモリアクセス要求に応えてどれほど最近にアクセスされたかに基づいて、複数のデータ値を前記第１のメモリデバイスから順番に読み出すことと、前記複数のデータ値を前記１つ以上の他のメモリデバイスに書き込むこととを含む、請求項３５に記載の方法。
【請求項４２】
前記複数のデータ値を前記第１のメモリデバイスから、少なくとも部分的に、前記複数のデータ値がどれほど最近にアクセスされたかに基づいて順番に読み出すことが、より以前にアクセスされたデータ値をより最近アクセスされたデータ値より前に読み出すことを含む、請求項４１に記載の方法。
【請求項４３】
複数のデータ値を前記第１のメモリデバイスから読み出すことが、少なくとも部分的に、前記複数のデータ値の各々が前記データ格納システム内で受信されるメモリアクセス要求に応えてどれほど頻繁にアクセスされたかに基づいて順番に、前記第１のメモリデバイスから読み出すことを含む、請求項４１に記載の方法。
【請求項４４】
さらに、トリガーとなるイベントを検出することと、
トリガーとなるイベントを検出することに応えて前記アニール温度に加熱されるよう前記第１のメモリデバイスを選択することとを含む、請求項３０に記載の方法。
【請求項４５】
データ格納システムは、
第１および第２のメモリデバイスと、
前記第１のメモリデバイスの使用関係の劣化を是正するために第１の時間間隔にわたって前記第１のメモリデバイスを加熱する第１の加熱要素と、
前記第１および第２のメモリデバイスと連結し、前記第１の時間間隔中に前記第２のメモリデバイス内でデータにアクセスするための回路を含むメモリコントローラと、
を備える、データ格納システム。
【請求項４６】
前記第２のメモリデバイスの使用関係の劣化を是正するため第２の時間間隔にわたって前記第２のメモリデバイスを加熱するための第２の加熱要素をさらに備え、前記メモリコントローラが、前記第２の時間間隔中に前記第１のメモリデバイス内でデータにアクセスするための回路を含む、請求項４５に記載のデータ格納システム。
【請求項４７】
前記第１のメモリデバイスおよび前記第１の加熱要素が集積回路ダイにおいて互いに一体化した、請求項４５に記載のデータ格納システム。
【請求項４８】
プリント回路基板をさらに備え、そこで前記第１のメモリデバイス及び前記第１の加熱要素が互いに隣接して配置され、前記プリント回路基板に固定される、請求項４５に記載のデータ格納システム。
【請求項４９】
前記プリント回路基板が、別の回路基板に配置されたモジュールコネクタに対し着脱可能な接続を有効にするためのエッジコネクタを有するメモリモジュールである、請求項４８に記載のデータ格納システム。
【請求項５０】
前記第１および前記第２のメモリデバイスがフラッシュメモリデバイスであり、かつ前記メモリコントローラがフラッシュコントローラを含む、請求項４８に記載のデータ格納システム。
【請求項５１】
データ格納システムは、
第１のメモリサブシステムであって、前記第１のメモリサブシステム内でデータ格納および消去操作が実行されるに伴いデータ保持時間が次第に劣化する挙動を示す第１のメモリサブシステムと、
前記第１のメモリサブシステムから第２のメモリサブシステムへデータを転送し、前記データ転送後、前記第１のメモリサブシステムの１つ以上の構成メモリデバイスを、前記１つ以上の構成不揮発性メモリデバイスの前記データ保持時間を増加する温度へ加熱するための制御回路と、
を備える、データ格納システム。
【請求項５２】
前記第１のメモリサブシステムの前記１つ以上の構成メモリデバイスが、１つ以上のフラッシュメモリデバイスを含む、請求項５１に記載のデータ格納システム。
【請求項５３】
制御回路が、前記第１のメモリサブシステムから前記第２のメモリサブシステムへデータを転送すること、および、ユーザ入力に応じて前記１つ以上の構成メモリデバイスを加熱することを有効にすることを可能にする、請求項５１に記載のデータ格納システム。
【請求項５４】
前記第２のメモリサブシステムが、前記データ格納システムの外側に配置される、請求項５１に記載のデータ格納システム。
【請求項５５】
前記第２のメモリサブシステムがデータ格納システム内に含まれる、請求項５１に記載のデータ格納システム。
【請求項５６】
メモリシステム内での操作方法であって、
第１のメモリデバイス内でメンテナンス操作の実行を有効にすることに備えて、メモリシステム内で前記第１のメモリデバイスから、前記メモリシステム内で１つ以上の他のメモリデバイスへデータを退避することと、
前記第１のメモリデバイスからのデータ退避後、前記第１のメモリデバイス内で前記メンテナンス操作を実行することと、
を含む、方法。
【請求項５７】
退避データが、前記第１のメモリデバイスに向けられたデータ書き込み操作を前記１つ以上の他のメモリデバイスへリダイレクトすることにより、前記第１のメモリデバイスから受動的にデータを退避することを含む、請求項５６に記載の方法。
【請求項５８】
退避データが、前記第１のメモリデバイスからデータを読み出すこと、および読み出された前記データを前記１つ以上の他のメモリデバイスへ書き込むことにより、前記第１のメモリデバイスから前記データを能動的に退避することを含む、請求項５６に記載の方法。
【請求項５９】
前記第１のメモリデバイスからデータを読み出すことは、前記メモリシステムの外部のソースからのいかなるメモリアクセス要求も保留中ではないアイドル間隔の間に、前記第１のメモリデバイスからデータを読み出すことを含む、請求項５８に記載の方法。
【請求項６０】
前記第１のメモリデバイス内で前記メンテナンス操作を実行することは、前記メモリデバイスを用いた反復データ格納操作により、少なくとも部分的に引き起こされる酸化物損害を覆す温度に前記メモリデバイスを加熱することを含む、請求項５６に記載の方法。
【請求項６１】
メモリシステムは、
第１および第２のメモリデバイスと、
前記第１および第２のメモリデバイスと連結し、メンテナンス操作が前記第１のメモリデバイス内で必要とされるという判定に応じて、前記第１のメモリデバイスから前記第２のメモリデバイスへデータを退避するための論理を有するメモリコントローラと、
を備える、メモリシステム。
【請求項６２】
前記論理が少なくとも１つの回路または命令論理を含み、前記メモリコントローラがメンテナンス操作が前記第２のメモリデバイス内で必要とされる判定に応じて、前記第２のメモリデバイスから前記第１のメモリデバイスへデータを退避させるための少なくとも１つの回路または命令論理をさらに含む、請求項６１に記載のメモリシステム。
【請求項６３】
前記第１のメモリデバイス内の前記メンテナンス操作は、前記第１のメモリデバイス内で格納された少なくとも幾つかのデータの不慮の損失をもたらすことが予期される、請求項６１に記載のメモリシステム。
【請求項６４】
前記第１のメモリデバイス内で前記メンテナンス操作を実行する論理からさらになり、前記第１のメモリデバイス内での前記メンテナンス操作の実行と同時に前記第２のメモリデバイスからデータを読み取る論理を含む前記メモリコントローラである、請求項６１に記載のメモリシステム。
【請求項６５】
前記メンテナンス操作を実行する論理は、アニール温度へ前記第１のメモリデバイスを加熱するための加熱回路を含む、請求項６１に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書の開示は、データストレージテクノロジーに関する。
【背景技術】
【０００２】
プログラム操作および消去操作は、フラッシュメモリおよび他のフローティングゲートメモリの酸化物絶縁体および電荷トラップ層における度重なる不具合を引き起こし、そのような製品の耐用年数を限定し、頻繁かつ無制限の書き込み操作を要求するアプリケーションにほとんど適さない状態となる。
【０００３】
通常の操作範囲より高いが耐容可能な最大値よりも低い温度までフローティングゲートメモリセルを加熱することにより、そうでなければ永久的にトラップされていたキャリアを、酸化物および電荷トラップ層から取り除くことができ、実際には不具合をアニール（焼きなまし）、ライフタイムを改善することが示されている。
【図面の簡単な説明】
【０００４】
本明細書の開示は、添付図面の図中に例として図示され、限定として図示されるのではなく、同様の参照番号は類似要素を指す。
【図１】ホストプロセッサまたはコントローラおよびアニール可能なメモリシステムを含む、インサイチュでアニール可能なシステムの実施形態を図示する。
【図２Ａ】より詳細に図１のバックグラウンドアニールシーケンスを図示する。
【図２Ｂ】図２Ａの汎用アニールシーケンスの具体的な事例を図示する。
【図３】５つの独立的なアニール可能なメモリデバイスを有するメモリサブシステム内における各メモリデバイスのために、選択、受動的退避、能動的退避およびアニール段階が逐次的に実行される、例示的バックグラウンドアニールサイクルを図示する。
【図４】増大する退避緊急性に対応するアニールコントローラ内の退避状況の例示的進行を図示する。
【図５】メモリアクセス間隔の間および図４の退避状況に従って、図１のアニールコントローラにおける、例示的操作を図示する。
【図６Ａ】アニール許可メモリコントローラの汎用実施形態およびその補助となることができる、様々なアニール可能なメモリ接続形態を図示する。
【図６Ｂ】図６Ａのアニール可能なメモリシステムを配置可能な、汎用データ処理システムを図示する。
【図７Ａ】フラッシュメモリデバイスの１セットへそれぞれの二地点間データリンクを介して連結されたフラッシュによって形成された、ランタイムアニール可能なメモリシステムの実施例を図示する。
【図７Ｂ】アニール対象のペアリングおよび図７Ａのフラッシュコントローラおよびフラッシュメモリサブシステムのコンテキスト内における仮想デバイスを形成するための、代替ストレージを図示する。
【図７Ｃ】図７Ａおよび７Ｂのフラッシュコントローラおよびフラッシュメモリサブシステム内における新規データ書き込み、データ更新およびデータ読み込みに関する詳細を図示する。
【図７Ｄ】図７Ａおよび７Ｂのフラッシュコントローラおよびフラッシュメモリサブシステム内における新規データ書き込み、データ更新およびデータ読み込みに関する詳細を図示する。
【図８】図７Ａおよび７Ｂのメモリサブシステムにおいて新規書き込み操作および更新操作を実行する際の状態の、例示的変化を図示する。
【図９Ａ】アニール対象から代替ストレージへ能動的にデータを退避するための図７Ａのメモリシステム内において実行することができる、例示的データ転送操作を図示する。
【図９Ｂ】アニール対象から代替ストレージへ能動的にデータを退避するための図７Ａのメモリシステム内において実行することができる、例示的データ転送操作を図示する。
【図１０Ａ】アニール進行およびスライス割り当てかつ固定スライス割り当ての実施形態に従ったラウンドロビン進行を図示する。
【図１０Ｂ】アニール進行および振動進行かつ固定スライス割り当ての実施形態に従ったスライス割り当てを図示する。
【図１０Ｃ】アニール進行およびラウンドロビン進行かつ可変スライス割り当ての実施形態に従ったスライス割り当てを図示する。
【図１１Ａ】ランタイム変動する操作セットと、これに対応する、図１０Ａ〜１０Ｃを参照して説明されるスライス割り当てとを管理する能力があるフラッシュコントローラの、より詳細化された実施形態を図示する。
【図１１Ｂ】図１１Ａの共有コマンド／アドレスアーキテクチャの因果関係を図示する。
【図１１Ｃ】専用のコマンド／アドレス経路によってメモリランクの各フラッシュメモリデバイスに連結しているフラッシュコントローラがある、代替ランクベースメモリアーキテクチャを図示する。
【図１１Ｄ】デバイス固有コマンド／アドレスの生成の補助に用いることができるページテーブルの実施形態、および図１１Ｃのフラッシュコントローラ内に示される、スライスコマンド／アドレスアーキテクチャを図示する。
【図１２】ホスト要求または自己生成のメモリアクセスコマンドに応えて図７Ａ〜７Ｂ（および図１１）のフラッシュコントローラにより実行することができる操作の例示的シーケンスを図示しているフローチャートである。
【図１３】アニール可能なマルチドロップメモリシステムの実施形態を図示する。
【図１４】アニールされるデバイスから退避したデータを格納するために複合ストレージが用いられる、図１３のアニール可能なマルチドロップメモリシステムの例示的操作を図示する。
【図１５】アニール可能なマルチチャネルメモリシステムの実施形態、およびそれらのデバイスの例示的ペアリングを図示する。
【図１６】アニール可能なマルチチャネルメモリシステム内においてデバイスをペアリングする代替的なアプローチを図示する。
【図１７】複合ストレージがアニールされるデバイスから退避されたデータを格納するために用いられる、図１５のアニール可能なマルチチャネルメモリシステムの例示的操作を図示する。
【図１８】チャネル間のデータ転送を促進しそれによってデータ再配置操作を加速させるためのスイッチされたメモリＩ／Ｏ回路を有する、マルチチャネルメモリコントローラの実施形態を図示する。
【図１９】１つのメモリチャネル上のアニール対象から読み出されたデータがコントローラコア内に一時的に格納され、その後別のメモリチャネル上で代替ストレージへ書き込まれる図１８のマルチチャネルメモリコントローラ内における代替チャネル間データ再配置操作を図示する。
【図２０Ａ】１つの予備デバイスが他の予備デバイスへのデータ退避と同時にアニールを行われることを可能にするメモリアーキテクチャ内における、アニール操作を図示する。
【図２０Ｂ】１つの予備デバイスが他の予備デバイスへのデータ退避と同時にアニールを行われることを可能にするメモリアーキテクチャ内における、アニール操作を図示する。
【図２０Ｃ】１つの予備デバイスが他の予備デバイスへのデータ退避と同時にアニールを行われることを可能にするメモリアーキテクチャ内における、アニール操作を図示する。
【図２０Ｄ】１つの予備デバイスが他の予備デバイスへのデータ退避と同時にアニールを行われることを可能にするメモリアーキテクチャ内における、アニール操作を図示する。
【図２０Ｅ】１つの予備デバイスが他の予備デバイスへのデータ退避と同時にアニールを行われることを可能にするメモリアーキテクチャ内における、アニール操作を図示する。
【図２１Ａ】２つの予備デバイスが第３の予備デバイスへのデータ退避と同時にアニールを行われる、または第３の予備デバイス内において２つの予備デバイスがアニール操作と同時に退避されることを可能にするメモリアーキテクチャ内における、アニール操作を図示する。
【図２１Ｂ】２つの予備デバイスが第３の予備デバイスへのデータ退避と同時にアニールを行われる、または第３の予備デバイス内において２つの予備デバイスがアニール操作と同時に退避されることを可能にするメモリアーキテクチャ内における、アニール操作を図示する。
【図２１Ｃ】２つの予備デバイスが第３の予備デバイスへのデータ退避と同時にアニールを行われる、または第３の予備デバイス内において２つの予備デバイスがアニール操作と同時に退避されることを可能にするメモリアーキテクチャ内における、アニール操作を図示する。
【図２１Ｄ】２つの予備デバイスが第３の予備デバイスへのデータ退避と同時にアニールを行われる、または第３の予備デバイス内において２つの予備デバイスがアニール操作と同時に退避されることを可能にするメモリアーキテクチャ内における、アニール操作を図示する。
【図２１Ｅ】２つの予備デバイスが第３の予備デバイスへのデータ退避と同時にアニールを行われる、または第３の予備デバイス内において２つの予備デバイスがアニール操作と同時に退避されることを可能にするメモリアーキテクチャ内における、アニール操作を図示する。
【図２２】フォアグラウンドアニール１３０で実行することができる、操作の汎用シーケンスを図示する。
【図２３Ａ】アニール可能なメモリサブシステムまたはホスト装置内における、瞬間的アニールシーケンスを図示する。
【図２３Ｂ】アニール可能なメモリサブシステムまたはホスト装置内における、瞬間的アニールシーケンスを図示する。
【図２３Ｃ】アニール可能なメモリサブシステムまたはホスト装置内における、瞬間的アニールシーケンスを図示する。
【図２４】本来は予備デバイスを持たないメモリサブシステム内において予備メモリデバイスを提供する、または多層予備アニール方法論を活用する目的のために追加の予備メモリデバイスを提供することができる例示的、圧縮されたアニール操作を図示する。
【図２５Ａ】フォアグラウンドおよび／またはバックグラウンドアニール操作に関連して、ランタイムアニール可能なシステムの人間のオペレータへ提示することができる例示的ユーザインターフェースを図示する。
【図２５Ｂ】図２５Ａのユーザインターフェースを提供すること、およびデータ退避および／またはメンテナンス操作に関連してオペレータがオプションを選択または特定することを促すことを実行することができる、ソフトウェアユーティリティプログラムの汎用フローチャートを図示する。
【図２６】インシステムおよびインパッケージアニール回路の組み合わせを有する、フラッシュメモリシステムの実施形態を図示する。
【図２７】インパッケージ加熱構造を有するマルチダイフラッシュメモリパッケージの実施形態を図示する。
【発明を実施するための形態】
【０００５】
使用劣化構成要素のユーティリティを拡張するためのインサイチュアニール操作を実行するシステムが、様々な実施形態で開示される。特に、多数の実施形態は、フラッシュメモリ構成要素（「フラッシュメモリ」は、フローティングゲートセル及び同様にＳＯＮＯＳ（シリコン−酸化物−窒化物−酸化物−シリコン）等のような、より近代的な構造を含む電荷トラップ原理で動作する、あらゆる非揮発性のメモリを意味している。）によって形成されるアニール可能なメモリサブシステムの背景において表されるが、開示された回路および技術は、ライフタイムを増加するために、あるいはその操作がアニール操作または他のメンテナンス操作を通じ改善されることができる、あらゆる構成要素の操作を改善するために、より広く適用される可能性がある。
【０００６】
明らかになるように、代替的種類のアニール可能なデバイスに、あるいは将来開発されるアニール可能なメモリデバイスにおいてさえ適用可能であるか、または可能ではない、アニール可能なメモリサブシステム内に、いくつかの課題が提示される。例えば、以下に記載の実施形態において、概して、アニール操作を受けている（つまり、「アニール」を受けている）メモリデバイスがいくつかのまたは全ての格納されたデータを喪失し、長時間の間読み込みアクセスおよび書き込みアクセスが使用不可能になることが想定される。したがって、アニールされるメモリデバイスから代替ストレージへのデータの移行（または退避）を管理することが、以下に記載のいくつかの実施形態の特性である。処理状態を把握しない回路（つまり、データが格納されていない）の性能を改善するため、またはアニールを通じてデータを確実に保持する能力があるメモリ構成要素に適用されるアニール操作においてのように、これらの想定が適用されない場合、データ移行が省略されることがあり、それゆえアニールを実行するために行われる操作のシーケンスが変更される。逆に、本明細書に記載のデータ移行管理技術は、アニールアプリケーションに限定されず、より一般的にはメモリシステム内の１つ以上のメモリデバイスからデータを退避させるために適用することができ、それによって作動中のメモリデバイスの除去、欠陥のある（または疑わしい）メモリデバイスの隔離、メモリデバイス内でデータ損失をもたらす場合がある操作（メンテナンスまたは他の）の実行、メモリデバイスを読み込みおよび／または書き込みアクセス不可能にする場合がある操作の実行等を可能にする。
【０００７】
ランタイムアニール可能なシステムの概説
図１は、ホストプロセッサまたはコントローラ１０１およびランタイムアニール可能なメモリシステム１０３を含むランタイムアニール可能なシステム１００の実施形態を図示する。ランタイムアニール可能なメモリシステム１０３は、それ自身が１つ以上のメモリコントローラ１０５およびアニール能力のあるメモリサブシステム１０７を含む。第１のアニール能力のあるメモリサブシステム１０７に焦点を当てると、アニール能力は、集積回路メモリダイ内に一体化されるアニール回路（オンダイアニール回路）、１つ以上の集積回路メモリダイとともに集積回路パッケージの内に一体化されるアニール回路（インパッケージアニール回路）、および／または集積回路メモリダイもしくはパッケージと別個に形成されるが、極めて接近して配置されるアニール回路（インシステムアニール回路）によって実装される可能性がある。一般的に、アニール回路は３つの基本構成要素を含み、それらのうちのいずれかまたは全てがオンダイ、インパッケージ、またはインシステム式であってもよく、３つの基本構成要素は、所望のアニール温度または温度のシーケンスに集積回路ダイを加熱するように電力供給されてもよい加熱要素（または複数の要素）と、所望のアニール温度を生成し、加熱要素の電源を選択的にオンまたはオフにする様式で加熱要素に電力を送達するための電力制御回路と、アニール操作を実行する（加熱要素の電源をオンにして、所望のアニール温度またはアニール温度のシーケンスに達するように必要に応じて電力を送達する）ため、また望ましい場合は、アニール操作を終了または中断するために電力制御回路に適用される場合があるコマンドを受信するためのインターフェース回路と、である。アニール操作の持続時間は長さで固定されてもよく（例えば、アニール温度が、アニール操作を実行するためのコマンドに応えて所定の時間適用される）、明示的なアニール開始およびアニール終了コマンドによって制御されてもよく、または、アニール回路内の制御レジスタにプログラムしてもよい。レジスタをプログラムすることにおいては、外部的制御または選択の影響を受けやすいアニール操作のあらゆる態様（例えば、アニール温度、持続時間、頻度、トリガーとなるイベントの仕様等）は、明示的なコマンド、あるいはインターフェースまたは電力制御回路の一部を形成するレジスタ内で設定をプログラムすることによって制御される可能性がある。
【０００８】
オンダイ実装の場合においては、オンダイアニール専用回路が供給されることができ、および／または追加の既存回路構成要素がアニール操作を支持するために適用されることができる。一例に、ワードラインまたはビットラインは、ＰＣＴ公開第ＷＯ２００８／０６７４９４号（ＰＣＴ出願第ＰＣＴ／ＵＳ２００７／０８５９７９号の公報）において記載の通り、加熱要素としても使用されることがある。
【０００９】
インパッケージ実装とともに、１つ以上の個別に制御される加熱要素は、パッケージ内で優先順位を付けられたアニール（つまり、ダイずつ）を可能にするための各集積回路メモリダイ（１つまたはたくさんの）と隣接して配置されることがある。また、全集合または大量のインパッケージメモリダイは、加熱要素単独または集合的に電力を供給される加熱要素グループによって同時にアニールされる場合がある。いずれにせよ、電力制御、および／またはインターフェース回路は、加熱要素と一体化される、または個別に提供される（例えば、パッケージの外側に配置され、またはパッケージ内で他の集積回路により提供され、および／または個別構成要素によって提供される）可能性がある。
【００１０】
メモリデバイス（メモリデバイスは集積回路メモリダイまたは１つ以上のメモリダイを含むパッケージを意味する）から部分的または全体的に切り離して実装されたアニール回路は、例えば、メモリサブシステムを形成する１つ以上のメモリデバイスの真下のプリント回路基板（例えば、マザーボード、ドーターボード、ラインカード、メモリモジュール等）に配置されるか、あるいは、個々のメモリデバイスまたはメモリデバイスのグループ上に配置されるかそれを包囲する構造であってもよい。インパッケージアニール回路と同様に、電力制御回路、および／またはインターフェース回路は、アニール回路と一体化されてもよく、個別に提供されてもよい。例えば、電力制御回路は、メモリコントローラ自体によって提供されてもよい。より一般的には、オンダイ、インパッケージ、またはインシステム実装されているかどうかにかかわらず、メモリサブシステムのアニール能力は、所望のアニール温度に集積回路メモリダイを加熱するための、いずれの実践可能なランタイム制御可能な回路によって実装されてもよい。
【００１１】
ランタイムアニール可能なメモリシステム１０３内で、メモリコントローラ１０５がメモリアクセスコマンド、アドレスおよび制御信号をコマンド経路１１０経由でメモリサブシステム１０７へ発令し、対応している読み込みまたは書き込みデータが、データ経路１０８経由でメモリコントローラおよびメモリサブシステム１０７間に転送される。デバイス識別子（ＩＤ）信号またはチップ選択信号のような制御信号は、メモリサブシステム１０７内でメモリデバイスのすべてまたはサブセットを選択するためにメモリコントローラによって出力される場合があり、コントローラは、様々なメンテナンスコマンド（例えば、更新、消去等）および、その中にデバイスを管理するメモリサブシステムへの構成コマンドを追加的に出力することができる。
【００１２】
アニール能力のあるメモリサブシステム１０７は、アニールによる回復が可能な損傷が見られるいずれのメモリ技術によって実装されてもよいが、本明細書に記載の実施形態は、そこでそれぞれプログラム、読み込みおよび消去操作を通じてデータが書き込み、読み込みおよび消去されるフラッシュメモリデバイス（ＮＯＲまたはＮＡＮＤ）を含むことが想定される。他の種類のメモリと対照的に、データはそのようなデバイスの所定の位置において更新されないが、むしろ代替位置へ書き換えられ、一方で最初のプログラムされた（そして現在は古くなっている）データが無効だと印を付けられ消去される準備ができている。したがって、ページテーブル１１１は、メモリコントローラ１０５（フラッシュコントローラ、ホストコントローラまたは他の種類のメモリコントローラである可能性がある）内で、データの有効な、空のおよび無効な「ページ」の物理的な位置を追跡し、ホストプロセッサ１０１または他のアクセス要求側からデータアクセス操作の根底にある複雑さを隠すために提供することができる。
【００１３】
以下に示す多数の実施形態ではフラッシュメモリを参照しているが、本明細書に記載の様々なデータ退避技術は、限定するわけではないが、システム操作中に１つ以上のメモリデバイスからデータを退避することが望ましいまたは有益であるような、ダイナミックラム（ＤＲＡＭ）、スタティックラム（ＳＲＡＭ）、ゼロコンデンサラム（Ｚ−ＲＡＭ）、ツイントランジスタラム（ＴＴＲＡＭ）、フラッシュメモリ（ポリシリコンまたは、ＳＯＮＯＳ（シリコン−酸化物−窒化物−酸化物−シリコン）、ＳＨＩＮＯＳ（シリコン−高誘電率窒化物−酸化物−シリコン）等のような他の材料を使用する電荷格納層を実装する、非揮発性のメモリ技術を含む）、強誘電体ラム（ＦｅＲＡＭまたはＦＲＡＭ（登録商標））、磁気抵抗ラム（ＭＲＡＭ）、プログラム可能なメタライゼーションセル（ＰＭＣ。導電性ブリッジＲＡＭまたはＣＢＲＡＭとも称する。）、相転移メモリ（ＰＣＭ。ＰｒＡＭ、ＰＣＲＡＭ、Ｃ−ＲＡＭ等とも称する。）、抵抗ラム（ＲＲＡＭ（登録商標））、レーストラックメモリ、ナノラム（ＮＲＡＭ）その他のような、あらゆる種類の揮発性または非揮発性のランダムアクセスメモリ（ＲＡＭ）を含む実質上任意のタイプのメモリ技術を搭載した任意のメモリシステムに広く適用される可能性がある。同様に、本明細書に記載のアニール操作は、時間とともに低下した性能（例えば、プログラム／消去操作またはそこで実行される、他の操作可能なイベントに応じて）を見せ、その性能はアニール操作の実行を通じて改善されることができるあらゆる種類のメモリ技術に適用されることができる。また、本明細書に表された様々な実施形態の実装は、命令論理（つまり、プロセッサまたは機械可読媒体（つまり、ソフトウェア、ファームウェア等）において提供された命令を実行している他の実行エンジン）または専用ハードウェア回路（例えば、論理回路）の観点から説明される場合がある。全ての場合において、このような実施形態は、命令論理によって独占的に、専用ハードウェアによって独占的にまたはあらゆる命令論理および専用ハードウェアの組み合わせによって実装されることができる。
【００１４】
図のように、メモリコントローラ１０５は、ページテーブル１１１と相互に作用するアニールコントローラ１０９を含み、メモリサブシステム１０７のアニール機能と選択的に関与する。示される特定の実施形態において、アニールコントローラ１０９は、メモリコマンド（例えば、フラッシュメモリシステム内のプログラムコマンド、消去コマンド、および読み込みコマンド）を伝えるために使用されるのと同じコマンド経路１１０を経由し、アニールコマンドまたは制御信号１１２（例えば、アニール開始、アニール終了および、アニール操作を制御する（例えば、温度仕様、レジスタプログラム等）ために使用される場合があるあらゆる他のコマンド）を発令する。代替的な実施形態において、１つ以上の追加的信号線によって形成された個別のアニールコマンド経路は、アニール関連コマンドを伝えるために提供される可能性がある。また、アニールコントローラは、代替的実施形態において全体的または部分的に個別に実装される場合がある。
【００１５】
ホストプロセッサまたはコントローラ１０１は、ランタイムアニール可能なシステム１００のコア（または主要な）機能に関与し、１つ以上の特殊目的のまたは多目的のプロセッサ、および／または特定用途向け集積回路（ＡＳＩＣ）によって実装される可能性がある。一例に、ランタイムアニール可能なシステム１００は、多目的なコンピュータシステム（例えば、デスクトップ型ワークステーション、またはモバイルコンピューター）、あるいは携帯電話、グローバルポジショニングシステムデバイス（または類似の携帯用デバイス）、音楽またはビデオプレーヤー、セットトップボックス、ビデオディスプレー、ネットワーク装置、または他のデータ処理を含むあらゆるデバイスのような特殊目的のデバイスの処理基盤を形成することができる。さらに、ランタイムアニール可能なシステム１００は、大型システム内（例えば、固体のディスク（ＳＳＤ）、画像エンジン（グラフィックスカード等で）、バックプレーン相互接続ネットワークスイッチングデバイスまたはルーティングデバイス内でブレード（例えば、ラインカード、スイッチング構造またはプロセッサ）、で採用されるためにそれ自身が構成要素になる場合がある。このような実施形態の全てにおいて、ホストプロセッサまたはコントローラ１０１は、大型システムの部分と見なされ、それゆえにランタイムアニール可能なシステムそれ自身と異なる可能性がある。さらに、その大型システムは、オペレータとやりとりをする構成要素（例えば、ディスプレイ、音声関連構成要素、キーボード、キーパッド、ポインター制御等）、大容量記憶装置および／または着脱式記憶装置にアクセスするための構成要素、ネットワークにアクセスするための構成要素等、任意の数の追加的な（そして示されない）構成要素を含んでもよい。
【００１６】
フォアグラウンドおよびバックグラウンドアニール
さらに図１を参照して、アニールコントローラ１０９によって指示されたアニール操作のシーケンスは、コアシステム操作が持続する、あるいはアニール操作が行われている間に保留されるかどうかに応じて、バックグラウンドアニールまたはアニールフォアグラウンドのどちらか一方に概して分類される可能性がある。図１のメモリシステム内での一般化バックグラウンドアニールシーケンス（１２０）において、個々のメモリＩＣ（つまり、集積回路メモリデバイス）またはメモリＩＣのグループは、すべてコアシステム操作の実質的中断なしに（つまり、システムのユーザ要求操作が実行を継続し、またはバックグラウンドアニールシーケンスを通じた実行を可能にされる。）、選択され（１２１）、退避され（１２３）およびアニールされる（１２５）。それに反して、一般化フォアグラウンドアニール（１３０）において、コアシステム操作は、トリガーとなるイベント（つまり、アニール操作をトリガーする）が検出される（１３１）と保留され、そしてメモリＩＣ（１つまたは複数）が退避され（１３３）、アニールされ（１３５）、およびリロードされている間は保留され続ける。一般的に、フォアグラウンドアニール操作は平行して実行されるのに対して、バックグラウンドアニール操作は順に実行される。その際、あるメモリＩＣ（またはあるメモリＩＣグループ）は、別のメモリＩＣが選択され、退避され、およびアニールされた後で、メモリサブシステム全体を一単位として退避およびアニールを行う。しかしながら、これらの一般的実装には例外がある。例えば、コアシステム操作は、アニール可能なメモリサブシステムなし（つまり、メモリサブシステムからのすべてのデータが、代替的あるいは、キャッシュメモリまたはバックアップメモリのような冗長ソースから入手できる、あるいはさもなければ必要とされない）で持続することができる場合は、メモリサブシステム全体は、同時に退避およびアニールされ（バックグラウンドにおいて）てもよく、本明細書ではこの操作を並行アニールと称する場合がある。一方で、メモリサブシステム内でのメモリＩＣまたはメモリＩＣのグループは、特にアニール可能なメモリサブシステムのための利用可能なバックアップストレージが、メモリサブシステムの全内容をバックアップするには不十分な場合は、フォアグラウンドアニールにおいて順にアニールされることができる。さらに、メモリ退避、アニール対象（アニールされるメモリデバイス）から代替ストレージへデータを転送することは、アニール対象の内容が、システム操作の部分として自然にバックアップされる場合（例えば、アニール対象の内容が、キャッシュメモリへコピーされる場合、またはＲＡＩＤ（安価なディスクの冗長配列）システムにおいて見られるように他のストレージデバイスから回復可能／生産可能である場合）、バックグラウンドまたはフォアグラウンドアニールのどちらかにおいて省略されることがある。
【００１７】
バックグラウンドアニール
図２Ａは、図１のバックグラウンドアニールシーケンス１２０をより詳細に図示する。示される実施形態において、個々のメモリデバイスまたはメモリデバイスのグループは、ブロック１２１におけるアニール対象（アニールされるためのメモリＩＣ）の選択から始まり、ブロック１２３における選択されたメモリＩＣの任意の退避、そして最終的にブロック１２５におけるそれ自身のアニール操作で連続的にアニールされる。
【００１８】
対象選択
アニールされるための個々のメモリデバイスまたはメモリデバイスのグループの選択は、アニール対象を選択する事として本明細書に参照される。アニール対象選択は、固定された順番において始まり、例えば、所定の順序でメモリサブシステムにおける各メモリデバイスを通じて進み、あるいはプログラムされる、または動的に決定されさえする可能性がある。
【００１９】
例えば、メモリサブシステムが、用法の異なる分類を有する格納領域に、論理的に分割される（例えば、書き込み頻度の低い長期にわたるデータ格納、対、書き込み頻度の高い短期間格納）場合、プログラム可能な選択シーケンスは役立つことできる。その場合、比較的低頻度の書き込み（例えば、長期にわたる非揮発性のデータ格納）を含む用法クラスに割り当てられたメモリデバイスは、アニール頻度の低下、あるいはアニールシーケンス全体から省略される可能性があり、それにより、高水準の用法クラスにおける残留デバイスに対するアニール頻度を高めることを可能にする。同様に、中間の使用クラスに割り当てられるデバイスは、それらの高頻度使用クラスより、低頻度アニールのために選択されることがある。ある実装において、例えば、プログラム可能なレジスタは、アニールコントローラ（つまり、図１の要素１０９）および／または、各記憶領域に対する相対的または絶対的アニール頻度の論理的区分および仕様の定義を許可するための個々のメモリデバイス内で供給される。相対アニール頻度は、例えば、アニール優先度（例えば、最大、中間、低度、使用不能（アニールなし））を示すこと、あるいは、対象記憶領域に対する各アニールとアニールとの間においてメモリサブシステム内で完了されるアニールサイクルの総数（数が小さいほど、アニール選択の頻度が高いことを示す）によって特定されることがある。絶対的アニールは、例えば、記憶領域を対象としたアニール操作の間に経過する時間間隔および／またはプログラム／消去操作の数をプログラムすることによって、特定される可能性がある。
【００２０】
プログラム可能な選択またはアニール頻度が役に立つかもしれない他の状況は、メモリサブシステムが、異なる損傷プロファイル（つまり、いくつかのデバイスは、同様の用法レベルにおいて、他のデバイスに比べて損傷し尽くすのが早い。）を有するメモリデバイスによって実装される場合である。このような場合、アニール頻度は、各メモリデバイスと関連する情報、およびメモリコントローラ内でアニールシーケンスまたは頻度をプログラムするために使用される情報によって、直接的（例えば、Ｎプログラム／消去サイクル毎に１回のアニール）または間接的（基本入出力サービス（ＢＩＯＳ）または適切なアニール頻度を決定するための他の制御プログラムにおいて調べられる、デバイスタイプ）に特定されることがある。例えば、経過時間、プログラム／消去サイクル、および／またはエラー閾値検出（例えば、不良ブロックの閾値数、ビットエラー率の閾値、プログラム／消去不成功等の閾値数、および／または他のエラー閾値を検出すること）の関数としてアニール頻度を示す情報は、各メモリデバイス内に記録される、または関連するストレージ内（例えば、メモリモジュールにおける直列プレゼンス検出メモリなどにあるような）に記録される可能性があり、それゆえにシステム起動時にメモリコントローラにより読み込まる、および各メモリデバイスに対するアニール計画（またはアニールシーケンス）をプログラムするためのメモリコントローラまたはホストプロセッサにより使用される可能性がある。
【００２１】
動的に決定されるアニールシーケンスは、メモリ用法パターンがデバイスごとに実質的変化するが、予測または制御することが難しいアプリケーションにおいて役立つことができる。このような場合、メモリデバイスは、例えば、使用のレベル（例えば、デバイスを対象とするプログラム／消去操作数）により指示される順序、および／または時間においてアニールされるための各デバイスを選択することであり、動的に選択されることができる。上に論じられるプログラム可能な実施形態などの場合、用法測定基準は、損傷誘導操作数を絶対的にカウントすることであってもよく、またはメモリデバイスの損傷特性によって決まるものであってもよい。例えば、２，０００プログラム／消去サイクルごとにアニールをすように特定される（または判定される）メモリデバイスにおいての１，０００プログラム／消去サイクルは、１００，０００プログラム／消去限度ごとにアニールを受けるメモリデバイスにおいての５０，０００プログラム／消去サイクルよりも優先される場合がある。
【００２２】
デバイス選択順序が固定され、プログラム可能であり、または動的に決定されてもよいのと同様に、選択された（つまり、必要な場合には退避に進み、さらに、アニールへと進む）各ＩＣ内でアニール操作をトリガーするまたは開始するために使用されるイベントも同様に予め設定され、プログラムされ、または動的に決定されてもよい。所定のトリガーすることは、例えば、定期的に予定された時間間隔で選択された各デバイスに対してアニールシーケンスを開始すること、デバイスからデバイスへアニールシーケンス連続して開始すること（例えば、あるメモリデバイスに対するアニール操作の終わりから、その次のメモリデバイスにおけるアニール操作の開始への遅延なしの処理）、または１つ以上のプログラムされた閾値（経過される時間、用法（例えば、プログラム消去サイクル）、エラー率または量（例えば、ビットエラー率、プログラムエラー率、不良ブロック量等））を越えたことを検出するのに応じて既定のデバイス内でアニールシーケンスを開始すること、を含む。周期的なまたは偶発的な（またはユーザ／ソフトウェアによってトリガーされる）校正／測定は、メンテナンスの必要性を突き止めるために実行されることもある（例えば、データ保持、プログラムサイクル数、またはプログラムするために要求された時間、あるいはアニールまたは他のメンテナンスの必要性の実証的証拠として使用される可能性がある、デバイスのあらゆる他の物理的な性質（１つまたは複数）を測定すること）。測定された値または試験結果は、例えば、アニールまたは他のメンテナンス操作が必要とされるかどうかを決定するために、絶対的な、動的なまたはプログラムされたベンチマークと比較されることがある。また、そのような測定操作は、試験下のメモリデバイスの回路によって（例えば、デバイス自身の意志、または制御デバイスからの測定／校正／試験コマンドに応じて）、メモリデバイス外部の回路によって、あるいはメモリデバイス内および外部の回路、および／または命令論理の組み合わせによって実行されることができる。
【００２３】
発生可能な校正／測定の例としては、コントローラ（例えば、専用回路、ソフトウェア制御プロセッサ、または専用回路および命令制御論理のあらゆる組み合わせにより実装される）が、周期的にまたは特定ユーザの指示により、メモリデバイスをベンチマーク性能または性能における変化について試験することができ、例えば、書き込み（プログラム）操作あるいは消去操作を成功させるために要求されたメモリデバイスに対するプログラム検証（「ＰＶ」）サイクル数（例えば、平均、最大値、最小値または他の測定）が、ライフタイムの残留または過剰損傷を示す１つ以上の閾値と比較される可能性がある。データ校正／測定に関連するあらゆる統計的導出を使用してもよく、この例に限定するわけではないが、（例えば、ページ若しくはブロックに対する、またはメモリデバイスにおいて無作為にサンプリングされたセルに対する）書き込みまたは消去を成功させるための平均ＰＶサイクル要求の変化を単独で、または他の測定値（例えば、書き込みまたは消去操作を成功させるために要求されたＰＶサイクルの標準偏差の変化）と共に使用してもよい。書き込みまたは消去操作の成功に要求された時間は、ＰＶサイクル以外のユニットを使用（例えば、経過時間を使用）して測定されることができる。多くの他のベンチマークもまた使用されることができる。
【００２４】
プログラム可能なトリガー選択には、イベントのタイプ（経過時間、プログラム／消去カウント、エラー検出、校正／測定等）および／またはアニール操作をトリガーするための対応する閾値レベルの、レジスタに基づく選択（例えば、ＢＩＯＳまたは他のプログラムコードを実行するホストプロセッサによる）を含んでもよい。アニール操作は、例えば、読み出されたデータにおいて閾値に相当する数または頻度のエラーを検出したこと、プログラムおよび／または消去操作を成功裏に実施することに失敗したこと、不良ストレージブロック、ベンチマークに適合する測定値／試験値が得られないこと、等に応じて、動的にトリガーされてもよい。
【００２５】
アニール対象の退避
アニール操作をトリガー後、ホストシステムにより後の使用のために保持され、代替的ソース内にすでに存在しないか、またはそこから再生可能ではないアニール対象内容は、代替ストレージへコピーされ（つまり、バックアップされる）、アニール対象の退避として本明細書で称される操作である。図２Ａのブロック１２３を参照して、実際のデータ退避に先立って、代替ストレージデバイスが、退避されたデータのためのあて先（リポジトリ）を構築するために１２４ａで選択または確認される。代替ストレージは、アニール可能なメモリサブシステム内の１つ以上の他のメモリデバイスであってもよく、またはメモリコントローラ内のスクラッチメモリ（つまり、一時的データ格納のために提供されるメモリバッファ）等のような個別のストレージであってもよく、あるいはホストシステム内または外部の全く別個のストレージであってもよい。また、代替ストレージは、予め、または動的に選択されることができる。一例に、以下に記載の多数の実施形態において、代替ストレージは、アニール能力のある（アニール可能な）メモリサブシステム内で、一番最近にアニールされた（それゆえにブランク（空の）である、またはブランクであると仮定される）メモリデバイスである。それゆえに、アニール操作をトリガーすると、アニール対象は一番最近にアニールされたメモリデバイス（前アニール対象）へのデータ転送経由で退避され、その後、アニールされた後、それ自身が次のアニール対象のための代替ストレージとなる。代替ストレージの動的選択において、アニール可能なメモリサブシステム内、またはホストシステムにおける他の場所にある格納デバイス内の他のメモリデバイスが、アニールされるデバイスの退避を支援するのに必要な容量という観点から評価され、そして１つ以上のメモリデバイスまたは他のストレージデバイスが代替ストレージを形成するために選択されることができる。これらの実施形態の例は、以下により詳細に論じられる。
【００２６】
受動的および能動的データ退避
データ退避操作それら自身は、自然トラフィックパターン（受動的退避）の部分としてデータが退避され、そしてそれゆえにただ単にデータを再配置するためにメモリアクセス操作を要求することをしないか、あるいは専用検索および再配置操作（能動的退避）を通じたかどうかに応じて受動的または能動的として分類されることができる。以下に論じられる多数の実施形態において、アニール対象からのデータの退避は、アニールの必要性がより緊急になるにつれて、次第により積極的になり、データ退避しない期間から、受動的退避、能動的退避へと進む。能動的退避段階それ自身内では、データ退避操作は最初にホストにより要求されるアクセスに従って実行され（例えば、ホスト要求が保留されていない場合は日和見的に退避操作を実行する）、その後、メモリサブシステムにアクセスするホスト要求とより活発に競合するように段階的に進展してもよい。さらに、能動的に退避されたデータに関して、操作は最近より以前にアクセスされたページからより最近アクセスされるページへ進む可能性があり、それゆえ、統計的に自然トラフィックパターンの一部として退避される可能性の低いページをまず能動的に退避する。退避操作の異なる各種類およびそれらの間の様々な進行は以下により詳細に論じられる。
【００２７】
受動的退避操作
図のように、１２４ｂで、受動的退避操作は、論理対物理のアドレス再マッピングを通じて、代替ストレージにデータを移行することを可能にするメモリアクセス操作（通常、ホストデバイスによって要求される）である。受動的退避は、ページテーブルエントリ操作を通じて通常もたらされ、アニール対象内での書き込み操作をブロックすること、および代わりに代替ストレージへそれらの操作をリダイレクトすることを含み、そしてそれらが古くなった際、アニール対象内でページをリタイアする。例えば、あらかじめ書き込まれたデータを更新しようとしている書き込み操作（つまり、更新操作）の場合は、更新されたページ（つまり、アニール対象内で有効な既存ページを取り替える、書き込みデータのページ）は、アニール対象の代わりに代替ストレージに書き込まれ、またはプログラムされ、さらに、ページテーブルを更新することによりアニール対象内の古くなったデータページを無効にし、代替ストレージ内に新規に書き込まれたページを反映させる。新規書き込みは、アニール対象に関してページの無効が発生しないことを除いて、通常同様の方法において、アニール対象から代替ストレージへリダイレクトされる（代替ストレージへ新規データを書き込むこと）。それゆえに、アニール対象内の新規書き込みをブロックすることには通常、データリダイレクトまたはバイパスが含まれる一方で、ブロック操作は、アニール対象内のデータの読み込みを防ぐことから、受動的退避の一部として見られる。
【００２８】
１２４ｃで示されるように、能動的退避操作は、ホスト独立型（つまり、メモリコントローラにより自律の）データ検索および書き換え操作、あるいはアニール対象から代替ストレージへデータを移動すること（再配置すること）を含む。能動的退避操作は、そのような操作が、アニール可能なメモリサブシステムへのホスト要求アクセスに従うかまたは競合するかによって、延期または競合と見なされる可能性がさらにある。一般的に、アニールの必要性が緊急でない（つまり、アニール実行の締め切りが切迫していない）場合、能動的退避がアイドル（予備）メモリアクセスサイクルの間、またはリソースが許可する場合、ホスト要求アクセスとともに平行して実行される可能性がある。一方で、アニールの必要性がより緊急の場合（例えば、プログラム／消去サイクル数が、臨界の閾値にアプローチする、エラー率が臨界のレベルに上昇する等）、アニールコントローラが、有効なメモリアクセスサイクルに対するホスト開始メモリアクセス要求と調和しながら、競合退避に着手する場合がある。それゆえに、ある場合には、アニールコントローラは、アニール対象がデータ損失または他のデバイス障害に先立って退避されるということを保証するために、ホスト要求メモリアクセスより先にアニール関連データ読み込みおよび書き込み操作を挿入することができる。一般的に、競合退避筋書きにおいてさえも、アニールコントローラは、たとえ短い間隔間の潜在的低性能でも、少なくともコアシステム操作の続行を保証するために必要とされる程度に、ホスト要求アクセスを保留すると考えられる。
【００２９】
アニールイベント
さらに図２Ａを参照して、アニール対象内の全てのエントリが無効にされた（つまり、代替ストレージにおける更新が原因で受動的に古くなった、または能動に代替ストレージへ再配置された）という判定後、アニールコントローラは、１２５に示されるようにアニール対象とともに実際のアニール操作（修復的に熱すること）操作を開始することができる。アニール操作は、退避確認があり次第早急にトリガーされる可能性があり、またアニールコントローラは、アニール操作を開始する前に予定済みの時間を待ち、または所定のイベントの発生を待ってもよい。
【００３０】
図２Ｂは、図２Ａの一般化アニールシーケンスの具体的な例を図示する。１４０で始まり、メモリサブシステム内のメモリデバイスの１つが、「オフライン」（つまり、ホストの読み込み／書き込み要求に応じてアクセスされる１セットのメモリデバイスから取り除かれる）にし、アイドル（元はオフラインであった）デバイスによって置き換えられる。１４１で、ページテーブルおよびメモリコントローラ内のＩ／Ｏ論理は、新規デバイスセット（つまり、以前のオフラインデバイスを含み、現在オフラインデバイスを含まない）への着信書き込みを再マッピングするために更新される。オフラインデバイス（アニール対象）内のページは新規データが書き込まれた（１４２）としてリタイアされる。決定ブロック１４３でオフラインデバイスが空であると判定される場合は、その後、アニール（つまり、加熱）操作が１４５のように、アニールイベントのシーケンスを完了するために実行される。したがって、１４６で、他のフラッシュデバイスが、アニール対象（次の「オフライン」デバイス）となるために選択され、アニールイベントシーケンスが１４０で始めることを繰り返される。
【００３１】
決定ブロック１４３へ戻り、オフラインデバイスが空でなく、１４７で判定されるように制限時間または他の閾値に達する（例えば、経過時間、暦時間、エラー率、エラーカウント、プログラム消去サイクル数等が所定の値に達する）場合、１４８で「ガーベジコレクション」が実行され、オフラインデバイスから「スクラッチ」デバイス（例えば、スクラッチメモリまたは代替ストレージ）へ残留データを移動させる。１４８のガーベジコレクション／データ移動後、またはその一部として、ページテーブルが１４９のように新規データ位置を反映するために更新される。オフラインデバイスが完全に退避されると、１４５でアニールが開始され、その後、１４６で新規アニール対象が選択され、さらに１４０から始まるアニールシーケンスが繰り返される。
【００３２】
バックグラウンドアニールサイクル
図３は、選択、受動的退避、能動的退避およびアニール段階が、独立してアニール可能な５つのメモリデバイスを有するメモリサブシステム内の各メモリデバイスに対して順番に実行される、バックグラウンドアニールサイクルを例示的に図示する。選択、受動的退避、能動的退避、およびアニール段階が、サブシステムにおけるメモリデバイスに対して順番に行われる実施形態に加え、本明細書において表示される原理を使用し、具体的に検出される必要性、例えば、あらゆる特定のデバイスに対する認識される残りのライフタイム、に応じて、これらの操作を開始させることもまた可能である。
【００３３】
示される実施形態において、５つのメモリデバイス、Ｍ１〜Ｍ５は、メモリデバイスの「ランク」を形成する（マルチドロップおよびマルチチャネル接続形態のような他のメモリ接続形態内でのアニール操作は以下に説明される）。より具体的には、操作可能なメモリセット（または操作可能なセットもしくはデバイスセット）として本明細書おいて言及されるメモリデバイスから動的に選択される４つで１セットのサブセットは、ユニットとして並列にアクセスされ、各回帰読み込みデータ値の４分の１の割当に貢献し、各書き込みデータ値の４分の１の割当を格納している。スタンバイメモリ（または予備メモリ）と呼ばれる残りのデバイスは、アニール対象が操作可能なメモリから選択され、データ退避が始まるまでは、メモリの読み込みおよび書き込み操作には加わらない。バックグラウンドアニールサイクルｉ−１の終わりには、例えば、メモリデバイスＭ１は、スタンバイメモリ（１５３）を構成し、メモリデバイスＭ２〜Ｍ５は操作可能なメモリセット１５１を構成する。示される特定の例において、各メモリデバイスは、複数の格納バンク１５５を有すると仮定し、有効な内容であることを示す場合は影を付け、空白または空のステータスを示す場合は影を付けていない。
【００３４】
バックグラウンドアニールサイクル「ｉ」は、選択段階１６１ｉで始まる。この時点で、Ｍ２が、新規アニール対象として選択され、スタンバイメモリＭ１が代替ストレージとして選択される。示されるように、代替ストレージは、これから起こる退避段階の間のデータの格納および読み出しの目的で仮想デバイス（または仮想デバイスペア）を形成するために、アニール対象とペアになる。より具体的には、受動的退避段階１６３ｉの間、アニール対象内の（影を付けたストレージ配列により示される）有効データをマップする着信読み込み要求がアニール対象から読み込まれ続ける一方で、書き込み操作（新規書き込みおよび更新）は代替ストレージにリダイレクトされる。代替ストレージが密集してくるにつれて（つまり、アニール対象（Ｍ２）の無効にされた（したがって影なし）同等部分に対応する代替ストレージ（Ｍ１）の影付き部分によって示されるようなアニール対象から離されてリダイレクトされるエントリで）、読み込み要求は、有効エントリの位置によって代替ストレージおよびアニール対象の間で分割される。このように、メモリコントローラの観点からすると、代替ストレージおよびアニール対象（Ｍ１およびＭ２）は、本来は単一デバイスによって提供される、データ値の４分の１の割当（他の４分の３はＭ３〜Ｍ５によって提供される）に関与する単一仮想デバイスを構成する。それに応じて、ホスト要求のメモリアクセスは、アニール対象が退避されても、干渉されることなく（途切れなく）実行される。
【００３５】
さらに図３を参照すると、ホストシステムから要求される書き込み操作および更新操作の通常の順序の一部として、アニール対象内のエントリが無効にされ（「使い古され」）ながら、受動的退避（１６３ｉ）が継続する。ある時点で、アニールに対する必要性が、より臨界に近づくにつれて（例えば、アニールに対してより緊急な必要性を示す閾値に達すること）、アニールコントローラは能動的退避段階（１６５ｉ）へ推移し（発展し）、アニール対象を退避することを能動的に開始する。能動的退避段階の間、アニールコントローラ（メモリコントローラ内でコマンドおよびＩ／Ｏ回路を活用している）は、ホストコントローラ／プロセッサによる要求とは別に、アニール対象から残留データを読み出し、そのデータを代替ストレージに書き込むためのコマンドを発する。これら「再配置」操作はＭ２およびＭ１ストレージ配列内の細切れの領域によって示される。以下に説明するように、データ転送（または再配置）は、統合された読み込み／書き込み操作（つまり、対象からの読み込み／代替への書き込み）において、または、まずアニール対象からメモリコントローラ内のスクラッチメモリ（または別の一時的な格納ソース）にデータをコピーし、その後代替ストレージに書き込む、組み合わせ操作において行われてもよい。また、前述の通り、能動的再配置操作は、あまり最近使用されていない（よりコールドな）ページから、より最近使用されている（よりホットな）ページへ進行することができる。この進行は、以下でより詳しく説明される。
【００３６】
データ退避段階１６３ｉおよび１６５ｉを反映して、読み込み操作を仮想デバイスのメモリデバイスＭ１およびＭ２間で分割するために、メモリコントローラが、操作可能なメモリセットにおいてＭ１またはＭ２のどちらかを含むことがわかる。さらに、一実施形態では、メモリコントローラは、能動的退避段階における再配置トランザクション（Ｍ２からＭ１）から仮想デバイス（Ｍ１およびＭ２）を除く全てのメモリデバイスを排除することができる。なお、一般的な実施形態において、システムは、アニール対象となる各メモリデバイスＭ１〜Ｍ５を順に選択していく際、いかなるメモリデバイスも仮想デバイスに向けられる排他的トランザクションに含まれるか、分割読み込みから排除される必要がある可能性がある。それに応じて、このような場合全てにおいて、メモリコントローラは、実行される操作の本質、アクセスされるデータの位置、および所定の位置にある操作可能なメモリセットに基づいて規定されるトランザクションにおいて、メモリデバイスのどのサブセットがアクセスされるべきかを動的に判定する。一実施形態において、同じランク内（つまり、他に１ユニットとしてアクセスされるメモリデバイスのグループ）で異なるメモリデバイスまたはメモリデバイスのサブセットを動的に選択するこの能力は、メモリコントローラからそのランクの各メモリデバイスへ、独立したチップ選択ラインの設備を通じて達成され、そうすることでメモリコントローラがいかなる分割読み込み、リダイレクトされた書き込み、または再配置トランザクションにおいてもメモリデバイスの望ましいサブセット（単一デバイスであってもよい）のみを含むことができる。以下により詳しく説明されるように、メモリコントローラは、操作可能なメモリセットに連結しているデータレーンを動的に切り替えるための回路もさらに含み、操作可能なメモリセットへの書き込まれるまたはそこから読み込まれる全面的なデータ語の個々の部分の重要性の順序を保持することができる。
【００３７】
さらに図３について言及すると、アニールコントローラが、有効データがアニール対象において全く残っていない（つまり、アニール対象が完全に退避される、または空になる）と判定する場合、代替ストレージ（Ｍ１）および他の既に含まれているメモリデバイス（Ｍ３〜Ｍ５）は、新規の操作可能なメモリセットを形成し、そしてアニール操作がアニール段階１６７ｉにおけるアニール対象（Ｍ２）内で実行されることができる。アニール対象にアニールを行った後、バックグラウンドアニールサイクルは完了し、そして現在は空およびアニールされたメモリデバイス（Ｍ２）は新規のスタンバイメモリを構成し、そしてそれは、選択段階１６１ｉ＋１で始まる次のバックグラウンドアニールサイクルにおける代替ストレージとして採用されてもよい。上記で説明したように（そして図３に示されるように）、次のバックグラウンドアニールサイクル（Ｍ３がアニール対象として選択され、Ｍ２が代替ストレージである）は、以前のバックグラウンドアニールの完了後すぐに、または、所定またはプログラムされたスケジュール通りに、または前もって選択されたイベント（例えば、使用量の閾値、エラー率またはエラー数の閾値など）に応じてトリガーされることができる。
【００３８】
退避努力の発展
バックグラウンドアニール工程の一般的な目的は、コアシステム操作への影響を最小化することであり、それによりアニールシーケンスをシステムユーザに対して透過的な状態にする。それに応じて、上述のように、多数の実施形態においてデータ退避努力は受動的操作として可能な限り長く維持され、そしてアニールを行う期限が近づくにつれて受動的退避から次第に能動的退避に発展される。さらに、能動的退避の間、アニールコントローラはアクセスの頻度および／または最新度に基づき、データページ間を識別することができる。つまり、前述のように、アニールコントローラは、より頻繁に使用される「ホット」ページは更新操作においてやがて使い古される可能性が高いという統計学的尤度を考慮して、あまり頻繁にアクセスされていないまたはあまり最近アクセスされていない「コールド」ページを先に再配置してもよい。
【００３９】
図４は、退避の緊急度が発展することに対応する、アニールコントローラ（例えば、図１の要素１０９）内での退避状態の例示的進行を図示する。受動的退避段階１８０の開始時点で、退避状態（可変「ＥｖａｃＭｏｄｅ」によって表される）は、１８１で「受動」（「Ｐａｓｓｉｖｅ」）に設定され、ブロック１８３で更新されるイベントカウンタ（例えば、経過時間カウンタ、エラーカウンタ、プログラム／消去カウンタ等）が決定ブロック１８５で受動的退避の閾値を上回ると判定されるまで、その状態にとどまる。１８２で示されるように、受動的退避状態にある間、アニールコントローラは、ページを自然な（例えば、ホスト要求による）トラフィックの一部として退避させ、代替ストレージへ更新をリダイレクトし、アニール対象における古いエントリを無効にする。
【００４０】
決定ブロック１８５でイベントカウンタが受動的退避の閾値を上回ったことを判定すると、アニールコントローラは、データがホスト要求されるメモリアクセスに従い、能動的に再配置される能動的退避段階１８６に入る。より具体的には、１８７で、能動的だが延期となるデータ再配置を可能にするために退避モードは能動的延期状態（Ａｃｔｉｖｅ．Ｄｅｆｅｒ）に設定される。このように、アイドルサイクルまたは他の時間の際に、操作可能なトラフィック（つまり、ホスト要求のメモリアクセス）との干渉がないまたはごくわずかな場合、アニールコントローラは、データをアニール対象から代替ストレージに再配置する。受動的から能動的延期状態への推移と同様に、イベントカウンタ（ブロック１８９において更新される）がブロック１９１において、より緊急の閾値（Ｔｈｒｅｓｈ＿Ａ）に達すると判定される場合、アニールコントローラは、再配置操作がホスト要求のメモリアクセスと戦う（つまり、競合する）能動的退避状態１９２へ推移する。より具体的には、ブロック１９３で、退避モードは、能動的競合状態を特定するためにＡｃｔｉｖｅ．ＤｅｆｅｒからＡｃｔｉｖｅ．Ｃｏｍｐｅｔｅへ推移する。能動的競合状態にある間、アニールコントローラは、アニール可能なメモリサブシステムへのアクセスに対するホスト要求と競合し、少なくともいくつかの場合において、壊滅的データ損失（またはその期限後には壊滅的なデータ損失が確実に避けられない退避期限を定義すると考えられる、あるイベント）に先立つデータ退避の完了を保証するため、ホスト要求を破棄する。アニール対象が完全に退避される（決定ブロック１９５）ことを判定すると、アニールコントローラは、１９７で非退避状態（ＮｏＥｖａｃ）に戻り、そして次のアニールされるメモリデバイス内でデータ退避が起動されるまでそこにとどまる。
【００４１】
延期または競合のいずれかの状態での能動的データ退避の間、操作トラフィックがアニール対象から代替ストレージにリダイレクトされる更新操作を許す際、受動的退避が継続してもよい。また、上で簡単に説明したように、能動的にデータを退避させる場合、アニールコントローラは、ホットページおよびコールドページ（例えば、ページテーブルにおいて、ページをホットまたはコールドとして（またはより細かい使用グレードで）マークする）を識別し、そしてコールドページを先に退避することができる。一実施形態において、例えば、アニールコントローラは、各ａｃｔｉｖｅ．ｄｅｆｅｒおよびａｃｔｉｖｅ．ｃｏｍｐｅｔｅ状態内で、２つ以上の従属する状態（データ使用グレードの数に従って）を通じて推移する。この操作は、２つのデータ使用グレードを有する実施形態のために１９４に示され、そのグレードは「コールド」ページおよび「ホット」ページであり、コールドページは「ホット」ページに比べあまり最近（またはあまり頻繁に）アクセスされていない。このようにして、能動的延期状態１８６の間、アニールコントローラは、コールドページが退避されるａｃｔｉｖｅ．ｄｅｆｅｒ．ｃｏｌｄ状態から、ホットページが退避されるａｃｔｉｖｅ．ｄｅｆｅｒ．ｈｏｔ状態へ進行する。アニールコントローラは、同様に、能動的競合状態において、ａｃｔｉｖｅ．ｃｏｍｐｅｔｅ．ｃｏｌｄ状態から、ａｃｔｉｖｅ．ｃｏｍｐｅｔｅ．ｈｏｔ状態へ推移することができる。あるいは、コールド／ホット従属状態は、能動的延期または能動的競合状態内でのみ適用されることができる。
【００４２】
図５はメモリアクセス間隔中および図４の退避状態に従う、図１のアニールコントローラ（および包括的メモリコントローラ）の例示的操作を図示する。メモリアクセス間隔（決定ブロック２０１で判定される）の開始時点で、保留になっているメモリアクセス要求がない場合、メモリサブシステムはその間隔の間アイドル状態であると考えられ、アニールコントローラが能動的退避状態（どちらも決定ブロック２０３において肯定的な判定を生み出す、Ａｃｔｉｖｅ．ＤｅｆｅｒまたはＡｃｔｉｖｅ．Ｃｏｍｐｅｔｉｔｖｅ）の場合は、ブロック２０５でアニール対象から代替ストレージへのデータ転送が実行され、その際、アニール対象におけるデータページを無効にして代替ストレージ内の新規エントリを記録するため、ページテーブルに対して対応する更新が行われる。以下で説明するように、この操作は、影響を受けるメモリデバイスへつながる各データ経路の切り替え連結によって達成されることができ、したがって、アニール対象から代替ストレージに読み出されるデータの効果的な移行を可能にする。以下により詳しく説明されるように、このような「シャント転送」操作は、ソースおよび転送先のメモリデバイス内のばらばらの読み込みおよび書き込みトランザクションよりも速く実行されることができる。あるいは、データをローカルバッファまたはメモリコントローラ内のスクラッチメモリへ読み出すこと、そしてその後すぐに、または後のサイクルで、その読み出されたデータを代替ストレージに書き込むことにより、個々の読み込みおよび書き込みトランザクションを実行されることができる。
【００４３】
さらに図５を参照すると、保留のメモリアクセス要求がブロック２０１で検出され、どのデータ退避も進行していない（つまり、ブロック２０７での判定が、ＥｖａｃＭｏｄｅがＮｏＥｖａｃとなっている）場合、メモリコントローラは、読み込みまたは書き込まれる物理アドレス（２０９）を決定するため、メモリアクセス要求が提供される論理アドレスを用いてページテーブルにインデックスをつけ、そして特定された格納位置（２１１）からデータを読み込む、またはデータを書き込む。フラッシュメモリサブシステム内の更新操作の場合は、メモリコントローラは、論理アドレスに対応するページテーブルエントリを無効にし、新しく書き込まれたデータの物理アドレスを反映するための新規エントリを作成する（フラッシュメモリで上書きを有効にするには、一般的に更新されたデータを新規ページにプログラムすること、および最終的消去のために既存および現在では古くなったページにフラグを設定することを伴うことを想起する）。進行しているデータ退避がないため、既存ページ用の操作可能なメモリを構成するものと同一のメモリデバイスが、更新されたページ用としてページテーブルにおいて特定されることができる。
【００４４】
さらに図５を参照すると、退避が進行中であると判定されると（つまり、ブロック２０７での否定的判定）、読み込みまたは書き込みアクセスのどちらが要求されるかによって、ページテーブルは要求データの物理アドレス（２１５）か書き込まれる格納位置の物理アドレス（２２３）を判定するアクセス要求において提供される論理アドレスを用いてインデックスを付けられる。メモリ読み込みの場合、要求データがスクラッチメモリ（以下に説明されるメモリコントローラ内の一時的なストレージ）に配置され、能動的退避が進行中の場合は（決定ブロック２１７で判定）、２２１で、データは、スクラッチメモリから読み出され、アニール対象から代替ストレージへのシャント読み込み／書き込み（および、再配置されたページを反映するための、対応するページテーブルの更新）と同時にホストに戻されることができる。図５において特に示されていないが、メモリコントローラは、時に、再配置操作を実行するために、ホスト要求のメモリ読み込みを一時停止することができる。例えば、退避期が能動的競合期であり、メモリコントローラが所定の（またはプログラムされた）数のホスト要求の読み込み操作が連続して実行されたことを判定する時、メモリコントローラは１つ以上のデータ再配置アクセス（アニール対象から読み込み、代替ストレージに書き込む）を、保留のホスト要求読み込みより先に挿入することができる。
【００４５】
決定ブロック２１７に戻って、要求データがスクラッチメモリ（または他の代替ソース）にない、または退避モードが受動である場合、データはブロック２１９において、ページテーブルによって示されるメモリ位置（アニール可能なメモリサブシステムまたはスクラッチメモリ）から読み出され、要求側へ戻される。
【００４６】
メモリ書き込み操作において、書き込み先がアニール対象またはスクラッチメモリ（決定ブロック２２５）内にある場合、ブロック２３３において、ページテーブルは書き込み先を代替ストレージへ再マッピングするために更新される。その後、ホスト供給の書き込みデータはページテーブルによって示される代替ストレージ内の位置に書き込まれる（ブロック２３５）。書き込み先がアニール対象またはスクラッチメモリ内になく（決定ブロック２２５での否定的判定）、退避モードが能動的競合の場合、書き込みデータはアニール対象および代替ストレージ内の再配置操作（例えばアニール対象から代替ストレージへのシャント読み込み／書き込み）と並行してスクラッチメモリに書き込まれることができ、２２９で示されるようなページテーブルの更新を含む。退避モードが受動または能動的延期（決定ブロック２２７で否定的判定）の場合、データはブロック２３１に示されるように、ページテーブルによって示されるメモリ位置へ書き込まれる。
【００４７】
図５において示されるメモリコントローラおよびアニールコントローラの特定の操作は、支持される可能性がある多くの異なるアニール可能なメモリの接続状態、およびアクセスの優先順位付け方針にについて一般化されていることに留意するべきである。メモリコントローラの特定の操作は、手近なアプリケーションがメモリサブシステムに求める特定の要求を満たすために、示されるものとは異なる可能性がある。
【００４８】
図６Ａは、一般化されたアニールを可能にするメモリコントローラ２７１およびそれが支持する様々なアニール可能なメモリ接続状態を含む、アニール可能なメモリサブシステム２７０の実施形態を示す。メモリコントローラはホストインターフェース２７５（つまり、ホスト入力／出力（Ｉ／Ｏ））、メモリインターフェース２７７（メモリＩ／Ｏ）、制御論理２７３（アニールコントローラ２７４を含む）、ページテーブル２７９、スクラッチメモリ２８１、読み込み／書き込みデータ経路２８７、およびホストサイド２８３ならびにメモリサイド制御経路２８５を含む。メモリアクセス要求は、ホストインターフェース２７５（経路２９２を経由して）を経由してメモリコントローラ２７１内で受信され、ホストサイド制御経路２８３を経由して制御論理２７３へ運ばれる。制御論理２７３は、着信ホストアクセス要求を、対応するメモリアクセスコマンド、アドレスおよび制御信号に変換し、メモリサイド制御経路２８５およびメモリインターフェース２７７を経由する（および最後にはメモリチャネル２９０を経由して）メモリサブシステムへ出力するため、コマンドをスケジュールする。ホスト要求の書き込み操作の場合、書き込みデータはホストインターフェース２７５を経由して受信され、１つ以上の対応するメモリ書き込み（またはメモリプログラム）コマンドと合わせて転送するために、内部データ経路２８７（本明細書に、コントローラの内部データレーンとしても言及される）を経由してメモリインターフェース２７７に転送される。書き込みデータは、メモリチャネル２９０を経由してコマンドとデータ送信間の望ましい時差相関を構築するために、必要に応じてメモリコントローラ２７１内のスクラッチメモリ２８１または他のデータバッファ内のバッファまたはキューに入れられることができる。同様に、ホストリクエストの読み込み操作においても、読み込みデータはメモリインターフェース２７７を経由してメモリサブシステムから受信され、ホストインターフェースを経由して要求ホストへ戻される前に、必要に応じてメモリコントローラ２７１内のスクラッチメモリ２８１または他のデータバッファに入れられることができる。
【００４９】
一般的な実施形態において、ホストインターフェースを経由して受信される読み込みおよび書き込み要求は、制御論理およびページテーブル操作経由でメモリサブシステムまたは他の格納リソース（例えば、スクラッチメモリ２８１）内の特定の格納領域に対応する物理アドレスに変換された仮想アドレス値を含む（またはこれと関連する）。この仮想から物理へのアドレス変換は、制御論理が規定の仮想アドレスを、必要に応じて潜在的なメモリサブシステムの特殊性に適応するように物理格納位置にマッピングすることを可能にする。メモリコントローラはこうして、潜在的な格納場所の配置を仮想化し、メモリサブシステムの管理に関係する複雑さをホスト要求側から隠している。異なるメモリ技術の組み合わせで形成されているメモリサブシステムの場合、例えば、ホスト要求側は、アクセスされる様々な異なる種類のメモリの管理に必要な潜在的な詳細に関係なく、単に仮想アドレスを発行することができる。より一般的には、均一型メモリによって実装されたメモリサブシステムにおいてさえも、メモリアクセスの複雑性および制限は、アクセス要求側から隠されることができる。フラッシュメモリシステムの場合、例えば、データは一般的に所定の位置で更新されることができないため、同じ仮想アドレスに向けられる一連のホスト要求の書き込み操作は、一連の異なる物理メモリアドレスへマッピングされることがあり、この場合において、各継続的書き込み操作は、新規書き込みデータを保持するために新規物理アドレスを割り当てる一方で、前に書き込まれたデータに対応する物理アドレスを無効としてマークし、さらにいずれ消去操作を通じて再利用されるものとしてマークすることにより達成される。
【００５０】
図５および図６に言及すると、受動的データ退避の場合、アニール対象から代替ストレージへのデータのリダイレクトは、本来ならアニール対象に向けられる仮想アドレスを、代わりに代替ストレージ内の物理アドレスにマッピング（または再マッピング）することにより達成することができる。同様に、仮想装置ペアの場合も、メモリ読み込み要求は、ページテーブルエントリによってアニール対象と代替ストレージとの間で分割されることがある。最後に、能動的データ退避の場合、データ再配置はデータをアニール対象から代替ストレージへコピーすること（シャント読み込み／書き込みまたは個々の読み込みおよび書き込み操作を通じて）、およびアニール対象内のエントリを無効にし、代替ストレージをデータのリポジトリとして指定するためにページテーブルを更新することで達成できる。一般的に、このようなデータ退避操作は全て、アニール対象および代替ストレージの選択と同様に、アニールイベントの開始／終了そのものは、制御論理２７３、より具体的には制御論理内のアニールコントローラ２７４によって管理される。
【００５１】
上記のように、アニール対象および代替ストレージの選択は、対象と代替間のデータの移動と同様に、メモリシステムの接続状態によって有意に変化することができる。専門用語の問題として、図６Ａにおける異なるメモリサブシステム接続状態の一般化された見解について言及すると、メモリコントローラと各メモリサブシステム間に連結される独立して制御可能なメモリチャネルの数によって、メモリシステムは単一チャネルシステム３０１またはマルチチャネルシステム３３０に分類されることができる。したがって、単一メモリサブシステム３０２は、単一システムにおけるメモリコントローラに連結しており、マルチメモリサブシステム（３３１Ａ、３３１Ｂ、…）は、マルチチャネルシステムにおけるメモリコントローラに連結している。接続状態分類をさらに絞り込むと、規定のメモリサブシステムを構成するメモリデバイスは、マルチドロップメモリチャネル（３２０）または二地点間メモリチャネル（３０３）を経由してメモリコントローラに連結していてもよく、メモリチャネルそのものはスライス状であるかまたは統合されていてもよい。より具体的には、統合型チャネル接続状態において、メモリサブシステム内の全てのメモリデバイスはメモリチャネルを形成する信号線と共に連結されるのに対し、スライスチャネル構成においては、メモリサブシステム内のメモリデバイスまたはメモリデバイスセットはメモリチャネルを構成する信号線の各サブセットに連結している。３０５でスライス状の二地点間接続形態と接続して示される一実施形態において、メモリチャネルのコマンドとアドレス（ＣＡ）の線（つまり、コマンドおよびアドレス信号を運ぶための信号線）は、マルチメモリデバイス（３０９１、３０９２、…、３０９ｎ／ｍ）に共通して連結される一方で、各サブセットがそれぞれｎ／ｍメモリデバイス３０９の１つと連結された状態で、ｎデータラインのセットがｍデータラインのサブセット（３０６１、３０６２、…、３０６ｎ／ｍ）に、スライスされる。同様に、３２２に示されるスライス状のマルチドロップシステム内で、ｎデータラインのセットは、各サブセットがそれぞれのメモリデバイスセットにマルチドロップ型で連結される状態で、ｍライン（３２５１、３２５２、…、３２５ｎ／ｍ）のサブセットにスライスされてもよい。逆に、３１５に示される二地点間統合の接続形態においては、ｎデータラインは全体が単一メモリデバイス３１７（つまり単一メモリＩＣ）に連結しており、したがって、そのメモリコア３１９にアクセスすることを可能にするためにメモリデバイスのｎ−ビット幅のデータインターフェース（Ｉ／Ｏ３１８）に連結している。
【００５２】
スライス状の二地点間メモリサブシステム接続形態３０５に戻り、それぞれのデータ経路のｍ−ビットスライスに連結しているメモリデバイスは、同じメモリ読み込みおよび書き込みコマンドを各デバイスへ運ぶこと（例えば、特に具体的に示されない共用コマンド経路を経由して）によって、並列ユニットとして操作される。このようなユニットとして（つまり、上記で説明されたようなメモリデバイスの「ランク」として）操作されるメモリデバイスのセットは、メモリコントローラからは統合されたデバイスに見え、各メモリデバイスは、書き込み操作の際にｎ−ビット書き込みデータ値のそれぞれｍ−ビット割当を受信し、読み込み操作の際にｎ−ビット読み込みデータ値のそれぞれｍ−ビット割当を出力する。３２２でスライス状のマルチドロップ接続形態に示されるように、メモリデバイスの多重ランク（３２３１、…、３２３Ｒ）は、例えば、選択されたランク（３２４１、３２４２、…、３２４ｎ／ｍ）のデバイスのみがメモリ読み込みまたは書き込みコマンドに応じることを可能にするアドレス指定処理を通じて定義されてもよい。一実施形態において、例えば、各チップ選択ラインまたはチップ選択ラインのグループは、選択されたランクがメモリサブシステム内の全てのメモリデバイスに連結しているコマンド／アドレス経路を経由して提供されるメモリアクセスコマンドに応じることを可能にするために、メモリデバイス３２３の各ランクに連結している。
【００５３】
図６Ｂは、図６Ａのアニール可能なメモリシステム２７０が発展される場合の、汎用化されたデータ処理システム３３５を図示する。図のように、データ処理システム３３５は、１つ以上のプロセッサ３３６（またはプロセッサコア）を含み、それぞれは様々な種類の内部ストレージ（例えば、レジスタファイル（Ｒｅｇ）、レベル１キャッシュ（Ｌ１）、レベル２キャッシュ（Ｌ２）、不揮発性格納（ＮＶ）など）と、アドレス変換回路３４２（例えば、図６Ａのメモリコントローラ２７１のようなメモリコントローラ内またはそれによって実装される）および１つ以上のメモリモジュール３４１によって形成されるメインメモリ３３７と、半導体ディスク（ＳＳＤ）、ハードディスクドライブ、取り外し可能な媒体（例えば、光媒体、磁気媒体など）のような１つ以上の第２の格納デバイス３３８とを有することがある。特に示されてはいないが、様々な追加構成要素（例えば、バスブリッジ、コプロセッサ、グラフィックコントローラ、ユーザインターフェース構成要素、接続構成要素など）が、データ処理システム内に追加で提供されることがある。このような追加構成要素は、それぞれ、メインメモリ３３７および／または第２の格納デバイス３３８をプロセッサ３３６と共有することができ、各追加構成要素は、アニール可能なメモリシステムによって実装される可能性のある専用メモリを、さらにまたは選択的に含むことができる。
【００５４】
特定の接続形態が何であれ、データ処理システム３３５内の様々なカテゴリーまたは分類のメモリは、規定のデータの要求側に対して格納階層を形成していると見なされるかもしれない。例えば、プロセッサ３３６内でのプロセッサコアの観点からすると、レジスタファイル、Ｌ１キャッシュ、Ｌ２キャッシュ、内部不揮発性メモリ、メインメモリおよび第２のストレージは、格納デバイスの階層を表し、その階層内の各階層は、一般的にそのすぐ上の階層よりも大きな格納容量を見せるがアクセス速度はより遅い。例えば、レジスタファイルは、Ｌ１キャッシュよりも小さくて速く、Ｌ１キャッシュはＬ２キャッシュよりも小さくて速く、Ｌ２キャッシュはメインメモリよりも小さくて速い、など。メモリの階層は、容量およびアクセス速度を越えたいくつもの特性によって区別されることができる。例えば、メモリの各階層は、一般的に、次の、より大きく／より遅い階層よりもプロセッサコアに物理的近接さがより近く配置される。また、仮想アドレス指定スキームを通じてアドレス指定される（つまり、アドレスが３４２のようなアドレス変換回路によって、メモリデバイス自体に適用される物理アドレスを生み出すように変換される）メモリの各階層は、メモリの別の階層によって使用されるアドレス変換テーブルとは異なる共有アドレス変換テーブルを採用することができる。したがって、メインメモリ３３７内に提供されるアドレス変換回路３４２は、メモリモジュール３４１（またはメモリデバイスがマザーボードに直接取り付けられるか、さもなければ取り外し可能なメモリモジュールの設備なしでシステム内に配置される際の他のメモリ構成要素）に適用する全ての物理アドレスを生み出すために使用されることができ、構成メモリデバイスはプロセッサ３３６の観点からはメモリの「平面」階層としてみなされることがある。第２の格納デバイス３３８は、メモリの単一階層またはメモリの別の階層として見なされてもよく、このような各デバイスが独自のアドレス変換回路を含む可能性を有する。
【００５５】
システム操作の際、メモリアクセス要求および対応するアドレスは、プロセッサ３３６（または他の要求側）からメインメモリ３３７へ、要求／アドレス経路３３９を経由して出力される。アドレス変換回路３４２は、着信「仮想」アドレスを、コマンド／アドレス（Ｃ／Ａ）経路３４３を経由して順番にメモリモジュールに出力される物理アドレスに変換する。アドレス変換回路３４２は、チップ選択信号、タイミング信号などの様々な制御信号と同様に、Ｃ／Ａ経路３４３にわたる後続の発行のための着信要求を変換および／またはキュー入力も行うより一般的なメモリコントローラ回路と関連することもできる。データはプロセッサ３３６とメインメモリ３３７間で示されるようなデータ経路３４０を経由して転送される、または、要求／アドレス経路上で時分割されることができ、したがって、後の経路を汎用化された情報信号経路とすることができる。データ経路３４０単体は第２の格納デバイス３３８まで及んでいると描かれるが、描かれたまたは共有されたコマンド／アドレス経路はこのような各デバイスに連結していてもよく、またはデータ経路３４０はより汎用化されたコマンド／データ情報を運ぶために使用されることができる。
【００５６】
さらに図６Ｂについて言及すると、アニール可能なメモリシステム２７０は、示されていないメモリのいかなる追加階層または分類（例えば、メインメモリ階層と２次格納階層との間、またはメモリ階層のあらゆる他の部分の間に階層的に挿入されたグラフィックスメモリまたはメモリの追加階層）と同様に、図６Ｂにおいて示されるメモリの全部または一部の階層を実装するために使用されることができる。特にメインメモリの場合は、メモリモジュール３４１に取り付けられた個々の集積回路メモリデバイス（Ｍ１−Ｍｎ）のサブセットの全部または一部は、時々本明細書に記載されるバックグラウンドおよび／またはフォアグラウンドアニール方法および支持回路を用いてアニールされる、フラッシュメモリデバイスまたは他のタイプのメモリデバイスで実装されてもよい。さらに、メモリモジュールにおいて実装される場合、個々にアニール可能なメモリデバイスは、図６Ａを参照して説明されるように、メモリデバイスの各ランクがマルチドロップ型でスライスされたデータ経路と連結された状態、または各スライスされたデータ経路に二地点間接続で連結された状態で、ランクのスライスを形成することができる。さらに、データ経路３４０がメモリモジュールとプロセッサ間で直接拡張しているとして描かれる間、データはメモリコントローラまたは他の中間デバイスを通過および／またはそこで認識されることがある。他のメモリ階層の階層において、フラッシュメモリデバイス（他のいかなるアニール可能なメモリデバイスとも同様に、ＮＡＮＤタイプフラッシュデバイス、ＮＯＲタイプフラッシュデバイスを含む）は、図６Ａを参照して説明されるように、事実上どんな接続形態においても採用されることができる。
【００５７】
アニール可能なメモリシステムがデータ処理システム３３５内で配置されるどの階層（１つまたは複数の階層）にもかかわらず、アニール可能なメモリサブシステムを構成する個々のメモリデバイス（１つまたは複数）は、同じメモリ階層内の１つ以上の他のデバイスまたは他のメモリデバイスの１つ以上の階層へ退避されることができる。さらに、データが退避される代替ストレージの選択または特定は、構造によって決定される、動的にシステム条件に従って判定される、またはプログラムで制御される（例えば、初期構成、またはユーティリティプログラムの実行の際に指示される場合のオペレータ、またはアニールに関連する他のソフトウェアプログラムによって特定される）ことができる。さらに、このようなデータ退避は、アニールに備えた退避に限定されず、その代わりに、一般的にはメンテナンス操作のため、またはデバイスを「ホット」除去（つまり、通電時の除去）または他の理由のために利用可能な状態にするために実行されてもよい。
【００５８】
汎用化されたメモリシステム２７０の改良は、メモリシステム２７０の使用に応じて、規定のメモリ階層内において適している場合がある。例えば、アドレス変換回路は、プロセッサコアによって直接的、物理的にアドレス指定されたどのメモリ階層からも省略されることができる（例えば、レジスタファイルの実施形態において）。また、メモリの様々な階層が、１つ以上の集積回路ダイ（つまり、「チップ」）および、データ信号経路および制御信号経路によって相互連結されているチップのシステムの離散集合として実装されることができる上、メモリの１つ以上の階層は、システムオンチップ（ＳＯＣ）内へ、または１つ以上のチップによって形成される集積回路パッケージ内に集積されることができる。
【００５９】
図７Ａは、５つで１セットのフラッシュメモリデバイス（ＦＤ０、ＦＤ１、ＦＤ２、ＦＤ３およびＦＤ４）に繋がる各二地点間データを経由して連結されたフラッシュコントローラ３５０（図６Ａに示される、より一般的なメモリコントローラ２７１の特定の例）によって形成される、ランタイムアニール可能なメモリシステムを図示する。フラッシュコントローラは一般的に、上記のメモリコントローラ構成要素を含み、したがって、例えば、制御論理３５１（アニールコントローラ３５２を含む）、ページテーブル３５３、スクラッチメモリ３５５、コマンド経路３５９およびメモリインターフェース３６１を含む。
【００６０】
メモリサブシステムについては、構成要素のフラッシュメモリデバイスは、共通のコマンド／アドレス経路（図７Ａには示されていない）に連結しており、メモリランク（つまり、データの各スライスを受信および出力するが、フラッシュメモリコントローラからはホスト要求の読み込みおよび書き込みアクセス目的のための単一ユニットとして見られるメモリデバイスのセット）にまとめられ、そのメモリランクは単一のスタンバイデバイスおよび４つ１セットのフラッシュメモリデバイスの操作可能なメモリセットを含む。メモリデバイスの合計数が表示の５つよりも多数または少数に一般化される場合があるため、その配置は本明細書にＮ＋１メモリランク（操作可能なメモリセットあたりＮデバイス、プラス予備１つ）またはＮ＋１アーキテクチャとして表される。
【００６１】
さらに図７Ａについて言及すると、ページテーブル３５３には、論理から物理アドレスへの変換だけでなく、規定の論理アドレスにより特定されるデータが存在しているまたはデータが書き込まれる予定の操作可能なメモリセット（つまり、アクセスされる４つのメモリデバイスのサブセット、また本明細書に「操作可能なセット」として表される）も示すアドレス変換エントリ３５４が追加される。それに応じて、ホスト要求メモリ読み込みまたは書き込みと関連して受信される論理アドレスは、制御論理３５１により、ページテーブル３５３にインデックスをつけるために使用されることができ、したがって、操作可能なメモリセットとそこでアクセスされる物理アドレス両方を読み出すことができる。一実施形態において、ｏｐ−ｓｅｔ値（つまり、設定可能なセットを示すコード）は、制御論理３５１に戻され、特定されたＮ＋１付属メモリデバイスのサブセット（Ｎ）へのアクセスを可能にするのに必要なチップ選択信号をアサートするためにそこで使用される。ページテーブル３５３から読み出された物理アドレスは、コマンド／アドレス経路（特に図７Ａでは示されないが、Ｎデバイスに連結している）へ出力され、チップ選択ラインのｏｐｓｅｔ制御によるアサートにより、ページテーブル３５３によって特定される操作可能なセット内で受信され、それにより、付属フラッシュメモリデバイスの適正サブセット内の適正位置で実効される特定のメモリ読み込みまたはメモリ書き込み操作を可能にする。
【００６２】
図７Ｂは、図７Ａと同じフラッシュコントローラ３５０およびフラッシュメモリサブシステムに関連して、データ退避目的の仮想デバイスを形成するためのアニール対象（フラッシュデバイスＦＤ１）と代替ストレージの（フラッシュデバイスＦＤ０）のペアリングを図示する。上記図３を参照、および図７Ｃにおいてより詳しく示されるように、新規書き込み（つまり、まだページテーブルにない論理アドレスへ向けた書き込み操作）および新規更新（つまり、ページテーブルにすでに記録された論理アドレス、したがってその論理アドレスで既存のデータを上書きするための要求へ向けた書き込み操作）は、アニール対象（この例においてはＦＤ１）において起こることが阻止され、代わりに代替ストレージ（ＦＤ０）にリダイレクトされる。新規書き込みの場合、ホスト供給の論理アドレスに対応する新規エントリは、ページテーブルにおいて記録され、データが格納されている物理アドレスを追加され、フラッシュデバイスＦＤ０、ＦＤ２、ＦＤ３およびＦＤ４を操作可能セットとしてリストアップする。更新操作については、既存のページテーブルエントリ（つまり、ホスト供給の論理アドレスに対応している）は、更新されたデータが書き込まれる物理アドレスを反映するため、そしてフラッシュデバイスＦＤ０、ＦＤ２、ＦＤ３およびＦＤ４を操作可能セットとして記載するために修正される。現存データテーブルエントリのこの修正は、アニール対象内の既存データエントリを実質的に無効にする（つまり、アニール対象内のテーブルで特定された物理アドレスでのデータの「使い古し」を達成する）。フラッシュメモリデバイス（またはデータ更新が定位置で実行されることがないが、むしろ新規物理位置への書き込みによって影響される他のメモリタイプ）によって実装されたメモリサブシステムの場合、フラッシュデバイスＦＤ２、ＦＤ３およびＦＤ４へ向けられた更新が、必然的にこれらのデバイス内の未使用物理アドレスへ書き込むことを含み、更新操作に先立ってページテーブル内に記録された物理アドレス（更新前のアドレス）は、更新操作後に記録されるもの（更新後のアドレス）とは異なるだろうことに留意されたい。
【００６３】
メモリ読み込み操作の場合、ホスト供給の論理アドレスに対応するページテーブルエントリは、アクセスされる操作可能セットを判定し（そしてアサートされるチップ選択ラインの組み合わせを判定し）、そしてそこから読み出されるデータの物理アドレスを判定するために参照される。それに応じて、図７Ｄに示されるように、データはフラッシュメモリデバイスＦＤ０、ＦＤ２、ＦＤ３およびＦＤ４を含む操作可能セットから読み込まれる（つまり、求められたデータが既に代替ストレージに再配置されている場合）または、メモリデバイスＦＤ１、ＦＤ２、ＦＤ３およびＦＤ４を含む操作可能セットから読み込まれる（つまり、データがまだ代替ストレージ内に再配置されていない）ことができる。また、データがアニール対象を含む操作可能セットから読み出される場合、そのデータは後の代替ストレージへの転送を容易にするためにスクラッチメモリにコピーされることがある。その場合、図７Ｄに示されるように、ページテーブルに特定された物理アドレスにおけるデータのコピーもスクラッチメモリ内にある（スクラッチメモリ内のアドレスもページテーブル内に記録される）ことを示すために、フラグ（「Ｓ」）がページテーブルエントリ内に設定されてもよく、それによりデータが能動的退避操作の際にスクラッチメモリから代替ストレージに転送されることを可能にする。
【００６４】
図８は、新規書き込み操作および更新操作が実行されるにつれての図７Ａおよび７Ｂのメモリサブシステム内での状態が変化する例を図示する。例示の目的で、状態３７０で以下の条件を仮定する。
●フラッシュデバイスＦＤ２は、最近アニールされ、空白である（データが全く入っていない）。
●フラッシュデバイスＦＤ３は、現在のアニール対象である。
●フラッシュデバイスＦＤ２は、代替ストレージであり、したがってフラッシュデバイスＦＤ２およびＦＤ３はデータ退避目的の仮想ペアを形成する。
●フラッシュデバイスＦＤ２のアニールの際、操作可能なメモリセットの構成要素となるフラッシュデバイスＦＤ０、ＦＤ１、ＦＤ３およびＦＤ４は、データ語Ａ、Ｂ、ＤおよびＣでストライプ状（つまり、同じ物理アドレスに含む）にされ、そのためデータ語ＡのデータスライスＡ０、Ａ１、Ａ２およびＡ３は、それぞれデバイスＦＤ０、ＦＤ１、ＦＤ３およびＦＤ４内に格納され、データ語ＢのデータスライスＢ０、Ｂ１、Ｂ２およびＢ３は、それぞれデバイスＦＤ０、ＦＤ１、ＦＤ３およびＦＤ４に格納される、など。
●消去操作が、デバイスＦＤ２を含む全てのメモリデバイスにわたってストライプ状にされた物理アドレス内で進行している。
【００６５】
状態３７０にある間、プログラミング操作（つまり、フラッシュメモリサブセットへの書き込み）は新規データ語「Ｅ」（つまり、新規書き込み）をメモリサブシステム内に格納するために開始される。フラッシュデバイスＦＤ３がアニール対象のため、デバイスＦＤ０、ＦＤ１、ＦＤ２およびＦＤ４は操作可能セットとして選択され、プログラミング操作がこれらフラッシュデバイスの各未使用格納領域においてデータスライスＥ０、Ｄ１、Ｅ２およびＥ３を格納するために実行される。より具体的には、フラッシュコントローラは、操作可能セット（ＦＤ０、ＦＤ１、ＦＤ２、ＦＤ４）の構成要素となるデバイスのためのチップ選択信号をアサートし、それによりプログラミングコマンドはそれらのフラッシュデバイス内でのみ受信される。また、フラッシュコントローラは、データ語「Ｅ」を形成する４つのデータスライス（つまり、Ｅ０、Ｅ１、Ｅ２、Ｅ３）を、操作可能セットを形成するデバイスに連結しているデータ経路に切り替え、それによってデータスライスが適切なデバイスへ運ばれることを保証している。
【００６６】
データ語「Ｅ」が操作可能セット内に格納された後、メモリサブシステムのコンテンツは、状態３７１に示されるような状態になる。フラッシュデバイスＦＤ３内にスライスＡ２、Ｂ２、Ｃ２およびＤ２が格納されるとともに、フラッシュデバイスＦＤ２内にスライスＥ２が格納されており、様々なデータ語Ａ、Ｂ、Ｃ、Ｄ、Ｅのスライス２がフラッシュデバイスＦＤ２とＦＤ３間で分割されていることから、この状態により、アニール対象および代替ストレージによって形成される仮想デバイスの特性が現れている。
【００６７】
既存データ語「Ｂ」を更新するために実行される更新操作に応じて、メモリサブシステムは状態３７１から状態３７２へ推移する。この場合、更新されたデータ語のスライスＢ０〜Ｂ３は、先在データ語が無効としてマークされると同時に、代替ストレージ（ＦＤ２）を含む操作可能セットの未使用位置内に格納される。この操作によって、データ語「Ｂ」は、両方更新され（データ語「Ｂ」は、定位置に上書きされる代わりに空白の物理的位置に書き込まれる時、デバイスＦＤ０、ＦＤ１およびＦＤ４内の新規位置に格納されることに留意）スライスＤ２は、古いデータ語の無効化により、アニール対象から代替ストレージへ実質的に転送される。
【００６８】
メモリサブシステムは、データ語「Ｄ」の更新に応じて、状態３７２から状態３７３へ推移する。前の更新にあるように、更新されたデータ語のスライスＤ０〜Ｄ３は、代替ストレージ（ＦＤ２）を含む操作可能なセットの未使用位置内に格納され、その一方で先在および現在では古くなったデータ語が無効としてマークされる。データ語「Ｂ」への更新と同様に、データ語「Ｄ」への更新は、メモリサブシステム内に更新されたデータを書き込むため、およびスライスＤ２をアニール対象から代替ストレージに実質的に転送するため両方の目的で行われる。
【００６９】
状態３７３に達すると、データスライスＡ２およびＣ２のみがアニール対象から退避されずに残っている。能動的退避閾に達する時までに更新操作によって使い古されない場合、データスライスＡ２およびＣ２は、アニール対象から代替ストレージへ、能動的退避操作を経由して転送されてもよく、それによりアニール対象を完全に退避させ、アニール操作に備えることができる。
【００７０】
図９Ａおよび９Ｂは、アニール対象から代替ストレージへ能動的にデータを退避させるために図７Ａのメモリシステム内で実行されることができるデータ転送操作の例を図示する。図９Ａは、データが、先ずアニール対象（ＦＤ１）からフラッシュコントローラ３５０内のスクラッチメモリ３５５に転送され（段階１）、そして後にスクラッチメモリ３５５から代替ストレージＦＤ０へ転送される（段階２）二段階転送を図示する。第１段階の転送は、コントローラ主導の転送の一部として実行されることができる（したがって、能動的退避）、またはホスト要求のメモリ読み込み操作の際に達成されることができ、したがって、通常の操作トラフィックの一部として受動的に達成されることができる。
【００７１】
能動的退避の場合、フラッシュコントローラ３５０は、読み込み操作（つまり、アニール対象内でのみ受信される読み込みコマンド）の目的でアニール対象だけのためにチップ選択ラインをアサートしてもよく、したがって他のフラッシュメモリデバイス内の不必要なメモリ読み込み操作を避けることができ、それにより電力を節約することができる。あるいは、フラッシュコントローラは、操作可能なセット（つまりフラッシュデバイスＦＤ１−ＦＤ４）内の全てのメモリデバイスにアクセスすることができ、アニール対象以外のデバイスから読み出されたデータを無視する（つまり、フラッシュデバイスＦＤ２〜ＦＤ４からのデータを受信、保存および／または転送しない）か、読み出されたデータ語全部を保存および／転送する（つまり、内部またはアップストリームのキャッシュ操作を達成すること）。どちらのアプローチにおいても、アニール対象から読み出されたデータスライスは、スクラッチメモリ３５５において格納されることができ、さらに、ページテーブル３５３は、アニール対象内の特定のアドレスからのデータがスクラッチメモリ３５５にコピーされており、代替ストレージへの転送に使用可能であることを示すように更新される（例えば、図７Ｄに示されるようなページテーブルエントリ内のスクラッチメモリフラグを「ｓ」に設定すること）。
【００７２】
受動的退避の場合、再配置されるデータスライスは、操作可能なメモリセットからのホスト要求の読み込みの一部としてアニール対象から読み出される。それに応じて、アニール対象からのスライスを含む操作可能なメモリセットから読み込まれたデータ語の全体は、ホスト要求側にメモリＩ／Ｏ３６１およびデータ読み込み／書き込み経路３５７を経由して転送され、アニール対象からのスライスはスクラッチメモリ３５５に追加で書き込まれる。能動的退避と同様に、ページテーブル３５３は、アニール対象からのデータがスクラッチメモリ内に存在することを示すように更新される。
【００７３】
さらに図９Ａについて言及すると、二段階退避操作の第２の段階において、データはスクラッチメモリ３５５から代替ストレージ（この例ではＦＤ０）へ、能動的退避の一部として転送される。一実施形態において、単一スライスの書き込み操作は、データを代替ストレージへのみ書き込むために実行される。もう１つの実施形態においては、アニール対象を含む操作可能なセット（つまり、「アニールセット」）から読み出された全てのデータ語は、代替ストレージを含む操作可能なセット（「代替セット」）内へ書き換えられる。このような「マルチスライス」操作は、図８への参照において説明される更新操作と似ているが、ホストデバイスよりも、むしろフラッシュコントローラにより主導される。
【００７４】
図９Ｂは、能動的退避の一部としてアニール対象と代替ストレージ間の単一段階データ転送の例を図示する。この操作は、本明細書にシャント読み込み／書き込みとして言及され、フラッシュコントローラ３５０は、単一スライスの代替ストレージへの書き込みＦＤ０に続き、アニール対象ＦＤ１への単一スライスの読み込み命令を発行する（つまり、チップ選択は、アニール対象のためだけにもたらされ、Ｎ＋１ランクの他のデバイスにはもたらされない）。一実施形態において、アニール対象から受信されるデータスライス（つまり、再配置されているデータ）は、アニール対象データ経路（つまり、アニール対象に連結しているデータライン）のための受信側からメモリＩ／Ｏ回路３６１内で循環（シャントされる）、それによりアニール対象から代替ストレージへの低オーバーヘッドのデータ再配置を達成する。つまり、データはアニール対象と代替ストレージの間で、図９Ａの２段階転送のように、メモリＩ／Ｏインターフェース３６１から内部読み込み／書き込みデータ経路３５７およびスクラッチメモリ３５５への転送において発生する遅延または電力消費なしに（つまりメモリコントローラコアへの転送なしに）、転送される。
【００７５】
アニール対象シーケンス
簡潔な図６Ａを参照すると、スライスメモリアーキテクチャ３０５内でｎビットデータ語を構成するｍビットデータスライスは、一般に互いに有意義な順番を有する。従来のメモリシステムにおいて、ここで「スライス割り当て」と参照されているメモリデバイスに対するデータスライスの割り当ては静的であり、メモリコントローラの各内部データレーンの間の専用ハードウェア接続（つまり、リード／ライト経路内のスライス伝達回路）、並びに、それに対応する外部データ経路およびメモリデバイスによって構築される。ランクごとに予備デバイスを有するアニール可能なメモリサブシステムの状況においては、しかしながら、データスライスとメモリデバイスの間の対応は動的であり、既定のメモリアクセスのために選択された操作可能なメモリセットに従って変化する。この動的スライス割り当てには、それぞれの新規アニール対象が選択される時にスライス割り当てを再割り当てするという観点において、そして、より一般的にはアニール対象進行自体（つまり、アニール対象として選択されたメモリデバイスのシーケンス）という観点において、多数の実施課題およびオプションが存在する。例えば、一実施形態において、ラウンドロビンアニール対象進行は、各異なるアニール対象に対してスライス割り当てを固定しながら実装される（つまり、メモリデバイス１から２へ、３へ．．．Ｎへと順番に進め、その後、メモリデバイス０から再び始まるシーケンスを繰り返すこと）。下記で論じるように、このアプローチは比較的に低オーバーヘッドなアニール進行およびスライス割り当て論理の利点をもたらすが、Ｎ＋メモリランク（指定「Ｎ＋」は本明細書において、読み込みおよび書き込みデータ語の幅に適合している操作可能なメモリセットを形成するために必要な、Ｎデバイスを超える、１つ以上の予備デバイスを有するメモリランクの参照のために使用されることに留意すること）を経た各進行の終わりに相当量のデータ再配置の努力を要する。代替実施形態において、振動進行はラウンドロビン／固定スライス割り当てのアプローチに比べてデータ再配置の努力を減少させるが、進行サイクルごとの一様でないアニール操作の数を生む。さらに別の実施形態においては、ラウンドロビンアニール対象進行が用いられるが、アニール対象ごとの多重の可能なスライス割り当て（このように適切なスライス割り当てを判定し追跡するために複雑さが大きくなる）を用いてデータ再配置ボリュームを減少させる。
【００７６】
図１０Ａは上述のラウンドロビン／固定スライス割り当て実施形態に準じたアニール進行およびスライス割り当てを図示する。この示す例は、フラッシュメモリデバイスＦＤ０、ＦＤ１、ＦＤ２、ＦＤ３およびＦＤ５によって形成される、操作可能なメモリセットごとの４つのデバイス（したがって４つのスライス）と、１つの予備デバイスとを有するＮ＋１構造を想定する。アニール対象選択の状態ごとの進行が、左から右へ示され、アニール対象＝ＦＤ１である選択状態「ａ」から始まり、アニール対象＝ＦＤ２である選択状態「ｂ」、アニール対象＝ＦＤ３である選択状態「ｃ」、アニール対象＝ＦＤ４である選択状態「ｄ」およびアニール対象＝ＦＤ０である選択状態「ｅ」へと進む。その後、そのシーケンスは選択状態「ａ」（つまり、アニール対象＝ＦＤ１）で始まる新しいアニールサイクルにおいて繰り返される。各対象選択状態の操作可能なメモリセットは、メモリランクの下に「ｏｐ  ｓｅｔ」（つまり、アニール対象を除いたランクのフラッシュメモリデバイス）として示され、各選択状態の仮想デバイスペアが破線内に囲まれている（３６５の凡例に示されるように、アニール対象および代替ストレージはデバイスの周囲を太線および破線でマークされている）。また、選択状態のデータスライス割り当ては、それぞれの４つのデータスライス（ｄｓ０、ｄｓ１、ｄｓ２、ｄｓ３）から、その選択状態で操作可能なセットのメモリデバイスへの矢印によって示される。それゆえ、選択状態ａ内の代替ストレージＦＤ０およびアニール対象ＦＤ１は仮想デバイスペアを形成し、フラッシュデバイスＦＤ０、ＦＤ２、ＦＤ３およびＦＤ４は、新規書き込みおよび更新操作のための操作可能なセットを形成し（読み込み操作はページテーブルによって示されるデータ退避状態に従って代替ストレージＦＤ０またはアニール対象ＦＤ１へと交互に導かれる）、そしてスライス割り当てはｄｓ０／ＦＤ０、ｄｓ１／ＦＤ２、ｄｓ２／ＦＤ３およびｄｓ３／ＦＤ４である。
【００７７】
図１０Ａをなお参照すると、スライス割り当ては、１つの選択状態から次の選択状態への移行において求められるデータ再配置努力を明確にするために「ｓｌｉｃｅ  ａｓｎ」と表記してメモリランクの下に再度記載されている（データスライスは、「０、２、３、４」のスライス割り当てが、データスライス０はＦＤ０に割り当てられ、データスライス１はＦＤ２に割り当てられ、データスライス２はＦＤ３に割り当てられ、データスライス３はＦＤ４に割り当てられることを意味するように、示される注釈で暗黙的であることに注意）。例えば、選択状態「ａ」から選択状態「ｂ」への進行において、操作可能なセットでデバイスＦＤ１は矢印２→１によって示されるように（つまり、ＦＤ２が新規のアニール対象になるように）、ＦＤ２を取り替え、データスライスｄｓ１はＦＤ２からＦＤ１へ再び割り当てられる。それに応じて、選択状態「ｂ」への進行において操作可能なセットのために新しく加えられたデバイス（つまり、ＦＤ１）は、「ｏｐ  ｓｅｔ」指定の下に下線（ＦＤ１には「１」）でマークされ、データスライスｄｓ１からデバイスＦＤ１への再割り当ては同様に、「ｓｌｉｃｅ  ａｓｎ」指定の下、下線（ＦＤ１には「１」）でマークされた。一般的なアプローチは、それぞれ新規に選択されたアニール対象のデータスライスを代替ストレージに再割り当てすることなので、ただ１つのデータスライス再割り当てが選択状態「ａ」から「ｂ」へ「ｃ」へ「ｄ」へ「ｅ」への各状態進行で発生する一方で、このアプローチの最後には、選択状態「ａ」から選択状態「ｅ」への全進行を経て全ての４つのデータスライス割り当てが１つ分ずれることが分かる。すなわち、ｄｓ１はＦＤ２からＦＤ１へ再び割り当てられ、ｄｓ２はＦＤ３からＦＤ２へ再び割り当てられ、ｄｓ３はＦＤ４からＦＤ３へ再び割り当てられ、ｄｓ０はＦＤ０からＦＤ４へ割り当てられる。それに応じて、選択状態「ｅ」から選択状態「ａ」（つまり、新規のアニールサイクルに備えて）への進行時にスライス割り当ての初期状態へスライス割り当てをリセットするために、データスライスの４つ全てが３６６で示されるように再び割り当てられる。各データスライス再割り当ては一般的に、前にスライスを割り当てられていたデバイスから新しくスライスを割り当てられるデバイスへのデータの再配置を含むので、状態「ｅ」から状態「ａ」への単一進行における全ての４つのデータスライスの再割り当ては、４つの以前の選択状態進行の４倍のデータ再配置を含む。それゆえ、比較的に低オーバーヘッド（つまり、小さな足跡）制御回路がラウンドロビン対象選択および固定スライス割り当てを実装するために提供することができる間に、そのような低オーバーヘッド制御回路は、選択状態進行の１サイクルごと（つまり、１アニールサイクルごと）に比較的厄介なデータ再配置努力という犠牲を払う。
【００７８】
図１０Ｂは上述の固定スライス割り当てのアプローチ、振動進行の実施形態を図示する。ラウンドロビン固定スライスアプローチを用いるように、メモリサブシステムは、選択状態「ａ」から「ｈ」としてマークされた既定のアニール対象のシーケンスを経て進行し、各選択状態のための固定スライス割り当てを有する。ラウンドロビンアプローチとは対照的に、しかしながら、ランク内の全てのＮ＋１メモリデバイスのアニール後に進行シーケンスを繰り返す代わりに、初期方向進行に起因するスライス割り当てのどのような増分変位も復帰方向進行によって逆転できるように、進行シーケンスの方向は逆転される。図１０Ｂのある特定の進行シーケンスにおいて、例えば、デバイスＦＤｉからＦＤｉ＋１最初に下向きに進んで、選択状態「ｄ」の最終デバイスＦＤ４へ達した後、進行方向がデバイスＦＤｉからデバイスＦＤｉ−１へ上向きに進むために置き換えられる。図１０Ｂでマークされたスライス割り当てによって示すように、下向き進行に起因するスライス割り当ての変位は、１つのスライス割り当てのみが選択状態進行ごとに変更されるために、上向き進行シーケンスによって置き換えられる。すなわち、最終選択状態「ｈ」のアニール操作が完了すること（つまり、ＦＤ０において、全進行シーケンスの最終デバイスが見られる）および初期選択状態（ａ）へ戻るために進行方向を逆転することの後に、データスライスｄｓ０のみ再び割り当てられる必要がある（ＦＤ０からＦＤ１へ）。それゆえ、エンドオブランクデバイスＦＤ０およびＦＤ４のアニールの後、選択進行の方向を逆転する（そしてそれによって振動進行シーケンスを実現する）ことによって、ラウンドロビン／固定スライス割り当てのアプローチのマルチスライス再割り当ておよび対応するデータ再配置負荷が避けられる。
【００７９】
エンドオブランクデバイスは、物理的な配置（例えば、エンドオブランクデバイスは図１０Ｂで示されるように、メモリデバイスの列の端に物理的に配置されるものである）に基づいて判定される、または物理的な位置を考慮せずに論理的に配置される場合もあることに注意する。Ｎ個すべてのデバイスがアニールされるごとに進行方向が逆転される限りにおいて、アニール対象のシーケンスを経た逆転方向（反対方向）進行が、初期進行方向で発生したスライス割り当て変位を修復する。物理的な配置との関連で、振動進行シーケンスは、それぞれ新規のアニール対象が仮想デバイスペアを形成するために物理的に隣接したデバイスといつも組み合わされることを確かにする方法と見ることができる。それゆえ、ランクのいずれかの端にあるデバイスに及ぶと、アニール進行が逆転することにより、アニールのために次に選択されるデバイスがエンドオブランクデバイスに隣接して配置されることを確実にする。
【００８０】
図１０Ｂをなお参照すると、各完成アニールサイクル（つまり、選択状態ａから選択状態ｈへの各完成振動）におけるデバイスごとのアニール操作の数が均一でないことを見ることができる。より具体的に言うと、エンドオブランクデバイスはアニールサイクル（つまり、選択状態「ａ」から「ｈ」までの完成進行）ごとに１回アニールされ、エンドオブランクデバイス間に挟まれているデバイス（「内部」メモリデバイス）はアニールサイクルごとに２回アニールされる。全体のアニールサイクルレートを決定するにあたって、すなわち、全てのデバイス選択状態を経た完成進行ごとに各デバイスが１回のみアニールされると仮定した場合の所与のデバイスの要求アニール頻度に基づいて、各デバイス選択状態に割り当てられる時間を設計（またはプログラム）するにあたって、エンドオブランクデバイスのアニールがハーフレートであることを考慮すべきである、というのがこの現象の１つの結果である。アニール操作の悪影響はほとんどの事例においてごくわずかなものであるため、結果となる内部メモリデバイスのアニールの２倍の頻度は、一般的に重要ではない。エンドオブランクデバイスのための対象アニール頻度が満たされる限り、そのシステムは無期限にバックグラウンドアニールを用いて一般的に操作される場合がある。
【００８１】
図１０Ｃは上記で簡潔に言及したラウンドロビン進行、スライス割り当て検索アプローチの実施形態を図示する。この実施形態において、同じラウンドロビン対象選択シーケンスは、図１０Ａのラウンドロビン／固定スライス割り当てのアプローチなどで使用されるが（それゆえ、４＋１アーキテクチャのための「ａ」から「ｈ」を経た５つのデバイス選択状態が示され）、可変スライス割り当ては、１サイクルごとのマルチスライスデータ再配置努力を避けるために利用される。より具体的に言うと、データ書き込みのためのスライス割り当ては、書き込み操作が新規データ書き込みを含むか、前に書き込まれたデータの位置および／またはデータ内容の変更を含むか、によって動的に決定される（例えば、検索またはアルゴリズム生成を通して）。新規データ書き込み（つまり、先在するページテーブルエントリを有する論理アドレスを対象としないもの）は、選択状態に従って固定スライス割り当てが割り当てられ、それによって、新規書き込みスライス割り当てにおける決定論を規定する。図示の実施形態において、例えば、データスライスは、書き込みデータの最小桁のスライスがアニールされる次のデバイスに格納され、それぞれ次のスライスが必要に応じてデバイスＮからデバイス０へ移転する連続的により高い番号のデバイスに格納されるように、デバイス昇順において割り当てられる。それゆえ、デバイスＦＤ１がアニール対象である選択状態「ａ」における、スライス割り当て２、３、４、０は、いずれの新規データ書き込み（つまり、ＦＤ２のｄｓ０、ＦＤ３のｄｓ１、ＦＤ４のｄｓ２、およびＦＤ０のｄｓ３）のためにも使用される。選択状態「ｂ」（アニール対象＝ＦＤ２）における、スライス割り当て３、４、０、１は、いずれの新規データ書き込みのためにも使用され、選択状態「ｃ」ではスライス割り当て４、０、１、２が使用される、などである。分析的に表すと、データスライス０からｎ−１はフラッシュデバイスＦＤｘからＦＤｘ＋ｎ−１にそれぞれ格納される。この場合において、インデックスｘ＝アニール対象のインデックス＋１であり、そして全てのインデックス計算はＮを法とする（つまり、Ｎによる整数除算の後の計算結果の余りに等しく、図１０Ｃの例示的な実施形態ではＮ＝４である）。
【００８２】
新規書き込み操作とは対照的に、ホスト要求更新操作またはコントローラ主導データ再配置（つまり、まとめて変更とされる更新または再配置）は、ページテーブルからあらかじめ記録されたスライス割り当てを読み出し、その後、現在の選択状態におけるアニール対象（つまり、「現在のアニール対象」）に割り当てられたあらゆるデータスライスを、代替ストレージに再び割り当てた結果として、変更されたスライス割り当てを生成することによって達成される。したがって、更新は変更されたスライス割り当てによって示された操作可能なメモリセットに全体の更新されたデータ語を書き込むことによって完了されるが、一方で再配置は改定されたスライス割り当てに従って再び割り当てられたデータスライスにのみ書き込むことによって達成される場合がある（つまり、再び割り当てられたデータスライスはアニール対象（またはスクラッチメモリ）から読み出され、対象データ語の他のスライスの書き換えなしに代替ストレージへ書き込まれる）。
【００８３】
図１０Ｃのアプローチを熟考すると、既定の選択状態におけるアニール対象を完全に退避させる時間までに、操作可能なメモリセット内の各データ語は、データ語が書き換えられた（つまり、更新されたまたは再配置された）か選択状態の間に新たに書き込まれたかどうかによって決まる多重の可能なスライス割り当ての１つを有する場合があることに気づくことがある。より具体的に言うと、既定の選択状態で書き換えられたいずれのデータ語も、スライスがデバイス昇順で割り当てられる時に、Ｎ個の可能な改定スライス割り当てのいずれか１つを使用して格納される場合がある。これを評価するために、選択状態「ａ」（３６８で示される）の空のメモリサブシステムの操作を考慮する。この事例において、全てのデータストレージ操作は新規書き込みになり、それゆえ、スライス割り当てはデバイス昇順で記録され、データスライスｄｓ０をフラッシュデバイス２（アニールされるための次のデバイス）へならびにデータスライスｄｓ１、ｄｓ２およびｄｓ３をフラッシュデバイス３、４および０へそれぞれ割り当てる。それゆえ新規書き込みスライス割り当ては２、３、４、０で示される。
【００８４】
その後、選択状態「ｂ」への進行の後で、新規データ書き込みは、スライス割り当て３、４、０、１（つまり、ＦＤ３へｄｓ０、ＦＤ４へｄｓ１、ＦＤ０へｄｓ２およびＦＤ１へｄｓ３−−フラッシュデバイス３で始まるデバイス昇順）とともに書き込まれ、変更（更新および再配置）が選択状態「ａ」（つまり、その状態で新規データ書き込みのみ発生した時、「２、３、４、０」）で記録された新規書き込みスライス割り当てを読み出すことおよび、アニール対象ＦＤ２に割り当てられたスライスを代替ストレージＦＤ１に再び割り当てること（つまり、選択状態「ａ」から「ｂ」への推移で見られるように「２→１」）によって実行される。それゆえ、選択状態「ａ」で記録された全体のスライス割り当ては「２、３、４、０」から「１、３、４、０」へ変更され、下線が再び割り当てられたデータスライスを示す。アニール対象ＦＤ２から全データが退避された後は、選択状態「ａ」で記録されたスライス割り当てを有するデータは残っていないことに注意。すなわち、アニール対象ＦＤ２内の全てのエントリは、ホスト要求更新操作またはコントローラ主導再配置操作を経て使い古された。したがって、ページテーブルでの全てのエントリは、選択状態「ｂ」のために示された２つのスライス割り当てのうち１つを反映する。
【００８５】
選択状態「ｂ」から選択状態「ｃ」への進行の後、新規書き込みはスライス割り当て４、０、１、２（フラッシュデバイス４で始まるデバイス昇順）とともに格納され、データ書き換え（更新／再配置）は選択状態「ｂ」で記録された２つのスライス割り当てのうちのどちらかを発端として発生する場合がある。それゆえ、新規アニール対象ＦＤ３へ割り当てられたスライスを代替ストレージＦＤ２へ再び割り当てることは、選択状態「ｂ」で新たに書き込まれたデータのためにスライス割り当て３、４、０、１の代わりに２、４、０、１をもたらし、選択状態「ａ」で本来は書き込まれて選択状態「ｂ」で書き換えられたデータのためにスライス割り当て１、３、４、０の代わりに１、２、４、０をもたらす。選択状態「ｂ」と同じように、データ退避が選択状態「ｃ」で完了した後に、アニール対象ＦＤ３内の全ての入力は、ホスト要求更新およびコントローラ主導再配置を経て使い古される。したがって、ページテーブルでの全てのエントリは、選択状態「ｃ」のために示された３つのスライス割り当てのうち１つを反映する。
【００８６】
選択状態「ｄ」への進行の後、新規書き込みはスライス割り当て０、１、２、３とともに格納され、変更は選択状態「ｃ」で記録された３つのスライス割り当てのいずれかを発端として発生する場合がある。それゆえ、新規アニール対象ＦＤ４へ割り当てられたスライスを代替ストレージＦＤ３へ再び割り当てることは、選択状態「ｃ」で新たに書き込まれたデータのためにスライス割り当て４、０、１、２の代わりに３、０、１、２をもたらし、選択状態「ｂ」で本来は書き込まれて選択状態「ｃ」で書き換えられたデータのためにスライス割り当て２、４、０、１の代わりに２、３、０、１をもたらし、選択状態「ａ」で本来は書き込まれて選択状態「ｂ」で書き換えられ、選択状態「ｃ」で再び書き換えられたデータ（つまり、２回書き換えられたデータ）のためにスライス割り当て１、２、４、０の代わりに１、２、３、０をもたらす。他の選択状態と同様に、データ退避が選択状態「ｄ」で完了した後に、ページテーブル内の全てのエントリは、選択状態「ｄ」のために示された４つのスライス割り当てのうち１つを反映する（つまり、アニール対象ＦＤ４内の全てのエントリは、ホスト要求更新およびコントローラ主導再配置を経て使い古される）。
【００８７】
最後に、選択状態「ｅ」への進行の後、新規書き込みはスライス割り当て１、２、３、４とともに格納され、変更は選択状態「ｃ」で記録された４つのスライス割り当てのいずれかを発端として発生する場合がある。それゆえ、ＦＤ０へ割り当てられた新規アニール対象であるスライスを、代替ストレージＦＤ４へ再び割り当てることは、選択状態「ｄ」で新たに書き込まれたデータのスライス割り当て０、１、２、３の代わりに４、１、２、３を、選択状態「ｃ」でもともと書き込まれていて選択状態「ｄ」で書き換えられたデータ（一度書き換えられたデータ）のスライス割り当て３、０、１、２の代わりに３、４、１、２をもたらし、選択状態「ｂ」でもともと書き込まれていて選択状態「ｃ」で書き換えられ選択状態「ｄ」で再び書き換えられたデータ（二度書き換えられたデータ）のスライス割り当て２、３、０、１の代わりに２、３、４、１をもたらし、そして最後に、選択状態「ａ」で本来は書き込まれて選択状態「ｂ」で書き換えられ、選択状態「ｃ」で再び、そして選択状態「ｄ」で再び書き換えられたデータ（三度書き換えられたデータ）のスライス割り当て１、２、３、０の代わりに１、２、３、４をもたらす。データ退避が完了し、ページテーブル内の全てのエントリは、選択状態「ｅ」のために示された５つのスライス割り当てのうち１つを反映する（つまり、アニール対象ＦＤ０内の全てのエントリは、ホスト要求更新およびコントローラ主導再配置を経て使い古される）。
【００８８】
これまでに説明したスライス割り当てパターンを観察すると、いずれかの既定の選択状態においてまさにＮの可能なデバイス昇順スライス割り当てパターンがある。さらに図１０Ｃの実施形態において、既定の選択状態内のそれぞれ異なるスライス割り当ては新規書き込みスライス割り当てのローテーション（つまり、Ｎを法とするシフト）に対応し、各データスライスのための割り当ては、オリジナルデータの書き込み以降、選択状態進行の数（それゆえ、状態から状態への書き込み数）分、循環させられる。それゆえ、選択状態「ｅ」のためのスライス再割り当てを見ると、１つの選択状態進行が発生した場合（つまり、データが選択状態「ｄ」で新たに書き込まれると）、選択状態「ｅ」のための新規書き込みスライス割り当ては、変更されたスライス割り当てをもたらすために１つ循環させられる（つまり、１、２、３、４は４、１、２、３へ循環する）。３つの進行が発生した場合（つまり、データが選択状態「ｂ」で新たに書き込まれると）、選択状態「ｅ」のための新規書き込み割り当ては、変更されたスライス割り当てをもたらすために３つ循環させられる（つまり、１、２、３、４を２、３、４、１へ循環する）。さらに、４つの可能なスライス割り当て（つまり、この例においてはＮ＝４）があるので、いずれの４つの選択状態進行においても、その選択状態のための新規データ書き込みと同じスライス割り当てパターンをもたらし（つまり、１、２、３、４は４つ循環すると１、２、３、４となる）、それゆえ、ローテーションの必要性は発生しない。言い換えれば、ローテーション自体はＮ個の固有のスライス割り当てパターンがＮ＋１選択状態のそれぞれのために存続できるようにＮを法とし、それゆえ、Ｎ×Ｎ＋１スライス割り当てパターンの合計を表す（図１０Ｃの例におけるスライス割り当てパターン４×５＝２０）。アニールコントローラ（またはメモリコントローラのほかの場所）内でスライス割り当てを決定することに関して、既定の選択状態のための新規書き込みおよび変更スライス割り当ては、テーブルで見られるかまたはアルゴリズム的に生成されるかのどちらかの場合である（例えば、アニールコントローラ内での論理回路によって生成される）。どちらの場合も、ラウンドロビン選択状態シーケンスは、アニール対象選択状態のすべての単一進行での厄介なマルチデバイスデータ再配置の必要性なしに用いられる（それゆえ、各完成アニールサイクルで１デバイスごとのアニール操作の均一の数を確かにすること）。それどころか、各選択状態でのデータ再配置はアニール対象から代替ストレージへのデータ転送のみを必要とする。
【００８９】
図１１Ａはランタイム変化の操作可能なセットの管理すること、および図１０Ａ〜１０Ｃを参照して記載されているスライス割り当てに対応することができるフラッシュコントローラ３８０のより詳細な実施形態を図示する。図のように、制御論理３５１は、ホストからメモリアクセスコマンド３８８（つまり、ホスト供給アクセスコマンド、「Ｈｏｓｔ  Ｃｍｄ」）も、アニールコントローラ３５２から自己生成した再配置コマンド３８６（「Ｒｅｌｏｃ  Ｃｍｄ」）も受信するコマンド論理回路３８５を含む。ホスト支給であろうと自己生成であろうと、各メモリアクセスコマンドは、対応するページテーブルエントリ３９５があればその検索を可能にするためにページテーブル３５３へ入力する論理アドレス３９４を含むもしくは付随する。ページテーブル自体は、検索テーブル３９１（ＬＵＴ）と一緒にページテーブルコントローラ３８９（例えば、状態機械（ＦＳＭ）または他の制御論理によって形成される）を含む。ページテーブルコントローラ３８９は、対応するエントリが記録されたかどうかを判定するために検索テーブル３９１にインデックスをつけることによって入力論理アドレス３９４に応答する。コマンド論理３８５がメモリ書き込みが実行されることを示し、検索テーブル３８９が書き込みコマンドに関連する論理アドレスに対応するエントリを含まない場合、ページテーブルコントローラ３８９は、書き込みコマンドを新規データ書き込みとみなし、それに応じて物理アドレス、チップ選択およびスライス割り当て信号を発行する。一実施形態において、例えば、ページテーブルコントローラ３８９は、制御論理３５１から選択状態値を受信し（つまり、現在のアニール対象選択状態を示す）、操作可能なメモリセットおよびその中の空き物理アドレスを判定するため、その情報を使用する。その後、ページテーブルコントローラ３８９は、制御経路３５９を経由して物理アドレス３９７を出力し（例えば、制御論理３５１による対応するメモリコマンド３９６の出力の観点を用いて望ましい時間で）、メモリデバイスＦＤ０〜ＦＤ５の適切なサブセットが物理アドレスおよび対応するメモリコマンドを受信するのを有効にするために、操作可能なメモリセットと関連するチップ選択信号３９８のサブセットを起動する（制御経路３５９の役割と考えられるチップ選択ラインを経由して伝達する）。一実施形態において、メモリインターフェース３６１内の出力ドライバ３２７は、メモリコマンド３９６、物理アドレス３９７、およびチップ選択信号３９８を外部制御経路３９２を形成する信号線のそれぞれのセットの上に出力するために備えられる。詳細図４０７を参照すると、制御経路３９２のコマンドおよびアドレス信号線は、Ｎ＋１メモリランクのフラッシュメモリデバイス（ＦＤ０〜ＦＤ４）のそれぞれのコマンド「ｃｍｄ」およびアドレス「（ａｄｄｒ）」入力へ共通して連結され、チップ選択ラインは、各フラッシュメモリデバイスのチップ選択入力「ｃ−ｓｅｌ」へ連結され、それらを独立して選択可能にする。ほかの実施形態において、コマンドおよびアドレス信号線は、それぞれメモリデバイス（つまり、同じコマンド／アドレスバスへ共通して連結される多重のフラッシュメモリ��バイスを有するのとは対照的に１フラッシュメモリデバイスごとの専用コマンド／アドレスバス）へ連結されることもでき、コマンド、アドレス、および／またはチップ選択ラインのどちらも排除される場合があり、そこを通じて伝達されるはずであった信号は、他の信号線セット上で時分割される。
【００９０】
図１１Ａをなお参照すると、ページテーブルコントローラ３８９は、特定の選択状態のための新規データ書き込みに対応するスライス割り当て値３９９の判定も行い、スライス割り当て値をメモリインターフェース３６１内で備えられるスライスステアリング回路４０２へ出力する（例えば、図１１Ａの実施形態でクロスバースイッチ「ｘｂａｒ」によって実装される）。図のようにスライスステアリング回路４０２は、内部データレーン４０１（内部読み込み／書き込みデータ経路３５７の部品）とデータＩ／Ｏ回路４０３内のデータ受信側／出力ドライバ回路４０４の間に連結される。この配置により、それぞれ対応する個別のデータスライス（ｄｓ０〜ｄｓ３）のＮ内部データレーン４０１は、メモリランク４０６のＮ＋１メモリデバイスへそれぞれ連結されるＮ＋１データ経路スライス（つまり、外部データ４０５のスライス）の適切なサブセットの上に出力される。図１１Ａの特定の実施形態において、例えば、前の図に記載されている例示的な５つのデバイスアーキテクチャは繰り返される、それゆえ、５つのフラッシュメモリデバイス（ＦＤ０〜４）は、既定のメモリアクセスのための操作可能なメモリセットを構成する４つのフラッシュメモリデバイス、およびアニール対象（書き込み操作の場合）または代替ストレージ（アニール対象へマッピングする読み込みの場合）を構成する残留フラッシュメモリデバイスであるＮ＋１接続形態でまとめられる。この接続形態のメモリデバイスのそれぞれは、二地点間の配置で接続されるためと言われている、すなわち、そのような各メモリデバイスのデータレーンは、そのメモリデバイスのためにのみ設けられ、他のデバイスとは接続されない。さらに、４つの内部データレーン４０１は、データスライスｄｓ０〜ｄｓ３を伝達するために設けられ、ページテーブル３５３から備えられるスライス割り当て値３９９に従ってスライスステアリング回路４０２を経由して５つのデータＩ／Ｏ回路４０４のそれぞれのサブセットへ切替可能に連結される。この配置により、操作可能なメモリセットを構成する４つのフラッシュメモリデバイスは、メモリ書き込みコマンドおよび対応する物理アドレスを受信するために選択され（対応するチップ選択信号３９８のアサートを経由して）、４つの発信データスライスは、スライス割り当て値３９９によって制御される順番で選択された操作可能なセットへ送られる。図１０Ａ〜１０Ｃを参照すると、例えば、アニールコントローラが選択状態「ａ」を特定する場合、ページテーブルコントローラは、図１０Ａおよび１０Ｂのアニール進行の場合のデバイス０、２、３、４およびスライス割り当て０、２、３、４（つまり、ＦＤ０へ割り当てられるｄｓ０、ＦＤ２へ割り当てられるｄｓ１、ＦＤ３へ割り当てられるｄｓ２およびＦＤ４へ割り当てられるｄｓ３）、または図１０Ｃのアニール進行の場合のスライス割り当て２、３、４、０によって形成される操作可能なセットを判定（検索またはアルゴリズム生成によって）するために、その情報を使用する。新規データ書き込みの終わりに、ページテーブルコントローラ３８９は、入力論理アドレス３９４に対応する新規エントリを検索テーブル３９１の中へ物理アドレス、操作可能なセットおよび新たに書き込まれたデータのスライス割り当てを特定するために挿入する。ページテーブルエントリは、データ書き込み操作に先立って、それと同時に、またはその後に検索テーブル３９１の中で作られるおよび挿入される場合もあることに留意する。
【００９１】
図１１Ａを続けると、ページテーブルコントローラ３８９が、着信論理アドレス３９４がページテーブルエントリと適合し、ホスト指示メモリ書き込みコマンドが示されると判定する場合、更新操作は特定論理アドレスに関して実行される。その場合において、ページテーブルコントローラ３８９は、１スライス割り当てごとの選択状態が、固定されているか可変かどうかに従い、異なって操作することができる。固定スライス割り当てアプローチ（つまり、図１０Ａおよび１０Ｂで参照して先に述べたように）の場合において、ページテーブルコントローラ３８９は、現在の選択状態に対応する操作可能なセットおよびスライス割り当ても、操作可能なセット内の有効な物理アドレスも判定する（例えば、テーブル検索および／またはアルゴリズム生成によって）。その後、ページテーブルコントローラ３８９は、制御経路３５９を経由して物理アドレス３９７を出力し、操作可能なメモリセットと関連するチップ選択信号３９８をもたらし、スライス割り当て値３９９をスライスステアリング回路４０２へ提供する。動的（可変）スライス割り当て実施形態の場合において、ページテーブルコントローラ３８９は、最後に記録された操作可能なセットおよびスライス割り当てに従って新規スライス割り当てが生成されることによって、データ更新操作を達成する。それゆえ、最後に記録された操作可能なセットが、現在の選択状態のための操作可能なセット（つまり、選択状態が特定論理アドレスのための最後のデータ書き込み操作以降進んでいない）に適合する場合、同じスライス割り当てが使用されるが、異なる物理アドレスで使用される（少なくとも図１１Ａの例示的なフラッシュメモリサブシステムの場合において、データはその場で更新されないため）。最後に記録された操作可能なセットが、現在の選択状態のための操作可能なセット（つまり、選択状態が進んでいる）に適合しない場合、最後の選択状態のために記録されるスライス割り当ては、検索または更新操作で使用されるための新規スライス割り当てを生成するために使用される。図１０Ｃで示されるアプローチに続いて、例えば、最後に記録されたスライス割り当ての第１の桁および現在の選択状態は、検索テーブルにインデックスを付けるために用いることができ、それゆえに現在のスライス割り当てを読み出す。例えば、現在の選択状態が「ｂ」の場合、先行選択状態「ａ」からの４つの可能なインデックスは、２→１、３、４、０あるいは０→０、１、３、４あるいは４→４、０、１、３あるいは３→３、４、０、１の通りの新規スライス割り当てをもたらす。あるいは、新規スライス割り当ては、進行カウント（つまり、データが最初に書き込まれて以降のアニール進行の数）、つまり、例えば、最後の選択状態のための新規書き込みスライス割り当ての最後の桁とあらかじめ記録されたスライス割り当ての最後の桁との間のオフセットによって、順番に判定される値の分だけ新規書き込みスライス割り当てを循環させることによって生成されることができる。それゆえ、選択状態「ｃ」において、あらかじめ記録されたスライス割り当ての最後の桁が０、１、３、４（最後の桁＝４）の場合、新規書き込みスライス割り当て＝４、０、１、２が、２と４の間のオフセット（２−１＝１、２−０＝２、２−４＝３、および２−３＝４のようなモジュロ演算を使用する）の分だけ循環させられ、それゆえ、望ましいスライス割り当て値０、１、２、４を生成する。スライス割り当て生成のための様々な代替アプローチは、図１０Ｃで示されるものとは異なるスライス割り当て進行を生産する代案を含んで用いられる場合がある。
【００９２】
図１１Ａをなお参照すると、論理アドレス３９４が再配置コマンド３８６に関連して備えられる場合、制御支持再配置操作は、特定論理アドレスに関連して実行される。この場合において、更新操作と同様に、ページテーブルコントローラ３８９は、１選択状態ごとのスライス割り当てが固定かまたは可変かに従い、異なって操作することができる。固定スライス割り当てアプローチ（つまり、図１０Ａおよび１０Ｂで参照して先に述べたように）の場合、ページテーブルコントローラ３８９は、現在の選択状態に対応する操作可能なセットおよびスライス割り当ても、操作可能なセット内の有効な物理アドレスも判定する（検索および／またはアルゴリズム生成によって）。その後、フラッシュコントローラ３８０は、メモリ読み込みコマンドおよび再配置操作でアクセスされるメモリデバイス（１つまたは複数）に対応するチップ選択信号（１つまたは複数）と一緒に物理アドレスを出力する。再配置されるデータはそれゆえ、１つ以上の選択されたメモリデバイスから読み込まれ、代替ストレージへシャント書き込みのためにフラッシュコントローラ３８０へ戻される、または代替ストレージへ後で書き戻すために格納される。シャント読み込み／書き込みの場合、アニール対象（およびデータの多重スライスが再配置されている場合、他のデバイス）から再配置されるデータを受け取ると、フラッシュコントローラ３８０は、データが再配置されるメモリデバイス（１つまたは複数）に関連するチップ選択信号（１つまたは複数）をアサートし、選択されたデバイスでデータ書き込みを有効にするために書き込まれるために書き込みコマンドおよび物理アドレスをアサートする。それゆえ、図１０Ｂおよび１０Ｃの実施形態において、および図１０Ａの実施形態における単一スライス再配置操作（つまり、図１０Ａで示される「ｅ」から「ａ」へを除く全ての選択状態進行）、メモリ読み込みは、再配置されるスライスを読み出すためにアニール対象で実行され、そしてメモリ書き込みは、再配置操作を完了するために代替ストレージで実行される。シャント読み込み／書き込みの場合、読み込みおよび書き込み操作は、次から次へ（つまり、データ経路４０５上の操作に干渉せずに）実行される場合があるので、それゆえ、ページテーブルは、物理アドレスへの変更を必要とせずに、アニール対象の代わりにスライス割り当ての代替ストレージを含むための、ページテーブルエントリの修正によって操作の完了時に更新される場合がある。二段階再配置操作（つまり、スクラッチメモリに読み出されたデータを一時的に格納し、そして代替ストレージへ後で書き戻す）の場合、ページテーブル３５３は、スクラッチメモリ（ＦＩＦＯまたは大量のアーキテクチャは、明示的なスクラッチメモリアドレス要求を避けるために用いられる場合があるけれども、スクラッチメモリ内での格納アドレスを示す）にストレージを反映するためのデータ回復段階の後に続いて更新される場合があり、そして完成された再配置操作を反映するためにデータ書き込み段階の後に続いて再び更新される。図１０Ａの状態「ｅ」から「ａ」への進行に示されるマルチスライス再配置操作は、新規の物理アドレスが、データ再配置（例えば、図１１Ａのフラッシュメモリサブシステムまたはその場所で書き込まれるデータを許可しない他のメモリ技術の場合の時）をもたらすために要求される場合もあることに留意する。
【００９３】
図１１Ａをなお参照すると、詳細図３６９は、有限状態機械３８１（またはプロセッサシーケンサーまたは他の制御回路）、１つ以上の操作カウンタ３８２および１つ以上のアニール制御レジスタ３８３を有するアニールコントローラの一般の実施形態を図示する。状態機械３８１は、既定のアニール操作におけるイベントシーケンスに加え、アニールサイクルにおける異なるアニール対象選択状態を経る進行をも管理するための状態間を遷移する。操作カウンタは、様々な操作およびメモリサブシステム内のイベント（例えば、メモリアクセス、プログラム／消去操作、不良ブロックまたは他のエラー／障害検出等）を追跡するために用いられ、それゆえ、アニール操作退避段階を経て進行する、デバイスの選択を行う、アニールのトリガーとなる等の時の状態機械３８１によって評価することができる。例えば、各対象選択状態の間にプログラム／消去サイクルをカウントすることによって、分離プログラム／消去カウントは、各メモリデバイスのために追跡され、そのデバイスでアニールをトリガーするために用いることができ、および／または受動的退避モードから能動的退避モードへの進行を管理する。操作カウンタは、それぞれのメモリデバイスで操作を追跡するために使用される多重のカウンタも含む場合がある。例えば、一実施形態において、操作カウンタ３８２は、各メモリデバイスのためのプログラム／消去カウンタおよびエラーカウンタも、メモリサブシステム内のメモリ書き込み操作（および／またはメモリ読み込みおよび書き込み操作の組み合わせ）の全数を追跡するために使用されるグローバルアクセスカウンタも含む。デバイス特定プログラム／消去カウントは、対応するメモリデバイスで行われるプログラム／消去操作に応じて増加されてもよく、エラーカウンタは、対応するメモリデバイスでのカウントエラー検出のために用いられてもよい（例えば、プログラム／消去障害、エラーコレクションコードまたは他のエラー情報によって示されるようなビット誤り、不良ブロック検出等）。グローバルアクセスカウンタは、例えば、アニールコントローラにメモリサブシステム内のホットページとコールドページを区別させるために用いられる場合がある（例えば、読み込み操作であってもページがホットであるかコールドであるかに関係がある）。一実施形態において、例えば、グローバルアクセスカウント値は、メモリページが更新された時はいつでもページテーブルエントリ内で格納され、それゆえ、データストレージの最新の判定し（例えば、格納されたアクセスカウント値を現在のアクセスカウント値と比較することによって）、それに従って、ページがホットかコールドかどうかの判定（例えば、最新閾と比較することによって）を有効にする。
【００９４】
アニール制御レジスタ３８３は、ホストによってプログラム化した（またはオペレータによってプログラム化した）値も、アニールコントローラの制御操作のための可変のまたは他の状態情報も格納するために用いられる場合がある。示される実施形態において、例えば、アニール制御レジスタ（単一レジスタまたは多重のフィールドを有するレジスタのグループである場合）は、デバイス選択モード（固定またはプログラム可能な選択シーケンスおよびデバイス選択のために用いられるあらゆる閾値）、アニールトリガーモード（例えば、経過または暦時間、エラーレート、エラーカウント、プログラム／消去カウント等）、アニール進行モード（例えば、固定スライス割り当てとラウンドロビン進行、振動進行、可変スライス割り当てとラウンドロビン進行等）、サブシステム接続形態（例えば、スライス、マルチドロップ、マルチチャネル等）、代替ストレージの特性（合成物または統合）、を示す値と同様に、アニール操作がフォアグラウンドかバックグラウンドで実行されるかどうか、瞬間的および／または圧縮されたアニール（共に以下で論じられる）、ホット／コールド（または他のデータの使用グレード）閾値および／または方針（例えば、アクセスの最新、アクセスの頻度、および／または他の基準が、使用グレードの間で区別するために用いられるかどうか）、もしくはいずれかの他のプログラム的にまたは動的に定義されるランタイムアニール可能なシステムの挙動に加え、アニール対象および代替ストレージの識別子（ＩＤ）を格納するために用いられる。アニールレジスタ３８３がアニールコントローラ３５２内（およびフラッシュコントローラ３８０内）に示されているが、そのようなレジスタおよび任意のサブセットが、アニール可能なメモリサブシステム内のメモリデバイスの１つ以上（または全て）の内で、またはアニールコントローラ（およびフラッシュコントローラ）およびメモリデバイスから分離した集積回路デバイス、の中で、代替的にまたは追加的に配置されることに留意されるべきである。
【００９５】
図１１Ｂは、図１１Ａの共有コマンド／アドレスアーキテクチャの結果を図示する。すなわち、欠陥品の局所領域または低信頼性記憶を示す１つ以上のデバイスのランクによって実装されるメモリサブシステムで、１つのメモリデバイスに欠陥領域があると、それらの共通物理アドレスに起因して、そうでなければ機能するはずの同じランクの他のデバイスへのアクセスが制限される。例えば、それが物理的に対応する位置で効果的に全てのデバイスにわたってデータをストライプ状にすることによって複数のフラッシュメモリデバイスにわたるデータをストライプ状にすることが望まれる場合、フラッシュメモリデバイス（図１１Ｂを参照）内の不良ブロックは、他のフラッシュメモリデバイス内の対応する良ブロックを利用できない状態にする。すなわち、そのような実装で、不良ブロックがそのメモリランクの全てのフラッシュデバイスにわたって有効にストライプ状にされるので、本来機能するはずのブロックへのアクセスが制限され、利用できないストレージの量にそのランクのメモリデバイス数が掛け合わされる。
【００９６】
図１１Ｃは、専用コマンド／アドレス経路４１７０〜４１７４によって、メモリランク４０６の各フラッシュメモリデバイスＦＤ０〜ＦＤ４と連結されるフラッシュコントローラ４１５において、代替ランクに基づくメモリアーキテクチャを図示する。さらに、フラッシュコントローラ４１５内のページテーブル４００は、各着信論理アドレス３９４を、対応するフラッシュメモリデバイス内の物理アドレスに、独立して（そして、それゆえに個々におよび異なるように）マップ可能にするため、（状態機械４０８とともに）多重のアドレス検索テーブル（ＬＵＴ）４０９を備える。この実装において、各メモリデバイスにのための不良ブロック情報が、ストライピングに代わるものとして個別に管理されることができる。例えば、着信または自己生成（つまり、アニールコントローラによって）仮想アドレス３９４は、各アドレス検索テーブル４０９にインデックスを付けるために同時に使用されることができ、それゆえに、対応するフラッシュデバイスへそれぞれのアドレス経路４１６経由で出力する多重の物理アドレスを供給することができる。さらに具体的に、詳細図４１９のように、単一の（共有）メモリコマンド３９６は、それぞれの物理アドレス（例えば、ＰｈｙｓＡｄｄｒ  ＦＤ０、ＰｈｙｓＡｄｄｒ  ＦＤ１、…、ＰｈｙｓＡｄｄｒ  ＦＤ４）およびチップ選択信号（ＣｈｉｐＳｅｌ  ＦＤ０〜ＣｈｉｐＳｅｌ  ＦＤ４、スライス割当３９９に従う判定）と共にフラッシュメモリデバイスのそれぞれへ出力されることができる。図のように、各メモリデバイスに対するコマンド／アドレス情報は、コマンド／アドレス出力ドライバ４１８０〜４１８４のそれぞれ１つによって、専用コマンド／アドレス経路４１７０〜４１７４の対応する１つの上に駆動される。この配置によって、各フラッシュメモリデバイスに対する不良ブロックアドレスは、メモリデバイスのみに対する仮想から物理へのアドレスマッピングから省略されることができ、それゆえに、メモリランク全体にわたる不良ブロックアドレスをストライプ状にするための必要性を避けることができる。所与のメモリアクセス操作の間に、それぞれのメモリデバイスへ異なる物理アドレスを使用する自由があることにより、異なるメモリデバイスに異なる損傷平滑化進行を適用することも許される（例えば、動的スライス割り当てまたは他の影響に起因する異なるメモリデバイス内でアクセス相違の説明をするために）。図１１Ｃに示される他の回路ブロックおよび信号（例えば、制御論理３５１、クロスバー４０２、データＩ／Ｏ回路４０３、読み込み／書き込み経路３５７等）は、図１１Ａを参照して説明される同様の番号の回路ブロックおよび信号に対応し、さらにこれらと同様の方法で一般的に実装されてもよい。
【００９７】
メモリランクのフラッシュメモリデバイスにわたる独立型制御が、共有コマンド／アドレス型の、図１１Ａの専用チップ選択接続形態を使用し達成されることができるということを留意されるべきである。例えば、メモリアクセスコマンド、および／またはメモリアドレスは、共有コマンド／アドレス経路上へ時分割される（つまり、順次送る）ことができ、この際、専用のチップ選択線は、メモリデバイスのどれが既定のコマンド／アドレスを受信可能にされるか制御するために使用される。しかしながら、このような接続形態の下で個々のデバイスへコマンドおよびアドレスを発令するに際してさらなる遅延時間が発生する場合があるが、個々のメモリデバイスへのアクセスは、スループット（つまり、めもり帯域幅）が影響を受けずに残留できるようにパイプライン化されることがある。
【００９８】
図１１Ｄは、図１１Ｃのページテーブル４００を実装するために使用され、したがって、メモリランク内の各メモリデバイスへの専用コマンド／アドレス経路を可能にする、並列検索ページテーブル４２５の実施形態を図示する。示されるように、着信論理アドレスは、ページテーブルエントリのための論理アドレステーブル４２８の内容と比較され、ヒット／ミス信号４３７（一致している論理アドレスが検出されたかどうかを示す）および、もしある場合は一致論理アドレスのインデックス４３６をもたらす。論理アドレステーブル４２８（例えば、連想記憶装置または他の並列比較回路によって実装されてもよい）内のヒットを想定して、インデックス４３６が、各フラッシュメモリデバイスＦＤ０〜ＦＤ４に対応する検索テーブルのセットのそれぞれをアドレス指定するために使用される。この操作によって、インデックス４３６は、各メモリデバイス（他のあらゆるデバイス特定データと同様に）対応する多重の物理アドレスを同時に読み出すために使用される。示されるように、インデックスは、操作可能なメモリセット、スライス割り当て、ホット／コールドページ情報および任意の他のデバイス独立データ（つまり、全面的メモリアクセスを定義し、したがってデバイス特定検索テーブルにおける多重インスタンスに格納される必要がないデータ）を得るために、統合検索テーブルに対しても提供される。メモリ読み込み操作において、テーブルから読み出されたスライス割り当て（「Ｒｅａｄ  ＳＡ」）は、マルチプレクサー４３４を経由して選択され、メモリアクセスのためのスライス割り当て３９９となる。それに反して、メモリ書き込み（または更新）操作においては、書き込みスライス割り当て（「Ｗｒｉｔｅ  ＳＡ」）は、制御論理によって（例えば、対象選択状態および進行方針に従って）、制御ポート４３２を経由して供給され、メモリアクセスのためのスライス割り当て３９９としてマルチプレクサー４３４によって（制御ポート４３２を経由してもまた供給される、読み込み／書き込み指定子、「Ｒｄ／Ｗｒ」に応じて）選択される。
【００９９】
一実施形態において、ホット／コールド情報は、テーブル４３０の対応するエントリ内にアクセスカウント値を格納することによって、各仮想アドレスのために記録される。より具体的には、アクセスカウント値（つまり、図１１Ａへの参照において記載されるようなアニールコントローラ内のカウンタによって維持される）は、検索テーブル４３０内に、対応する仮想アドレスへの各メモリ読み込みまたは書き込み（または代替的にメモリ書き込みアクセスのためだけに）の一部として格納される。この操作によって、制御論理（またはそこにおけるアニールコントローラ）は、仮想アドレスと共に、ページテーブルへの現在のアクセスカウントを供給することができ、したがって、格納されたアクセスカウント値の読み出し、および最新論理４３３内の格納されたアクセスカウント値と現在のアクセスカウント値の差異を判定することを可能にする。一実施形態において、最新論理４３３は、ホット／コールド閾値（例えば、図１１Ａへの参照において説明されるようなアニール制御レジスタから）を受信し、格納されたアクセスカウント値と現在のアクセスカウント値の差異を閾値と比較する。この操作により、最新論理４３３は、格納アクセスカウントと現在のアクセスカウントの差異が閾値を上回るかどうかを示し、それに応じて、ページがホットである（差異が閾値より小さい）かコールドである（差異が閾値より大きい）かを示す、ホット／コールド信号４３９を生み出すことができる。様々な代替的なホット／コールド判定（例えば、アクセス最新度に加えて、またはそれよりもむしろアクセス頻度に基づいて）および代替的メモリ使用量グレードは、ページテーブル内の論理か、あるいは他の実施形態においてはフラッシュコントローラ内の論理により、判定および信号で示されることができる。
【０１００】
図１２は、ホスト要求または自己生成のメモリアクセスコマンドに応じて、図７Ａから図７Ｂ（および図１１Ａ、１２Ｃ）のフラッシュコントローラによって実行されることができる操作の例示的なシーケンスを示すフローチャートである。メモリアクセスコマンドが、メモリ読み込み（決定ブロック４５１で判定される）である場合、フラッシュコントローラは、４６１で示される操作可能なシーケンスを実行する。より具体的には、４６２において、フラッシュコントローラは、メモリアクセスコマンドにおいて供給された論理アドレスを使用してページテーブルにインデックスを付け、それにより、要求データのための物理アドレス、操作可能なメモリセット、およびスライス割り当てを得る。したがって、４６４で、フラッシュコントローラは、操作可能なメモリセット内の物理アドレスでメモリ読み込みを実行し、読み出されたデータスライスをスライス割り当てに従って内部コントローラのデータライン上に導く。
【０１０１】
コマンドされたアクセスがメモリ読み込みではない場合、フラッシュコントローラは、供給された論理アドレス（つまり、メモリアクセスコマンドの一部またはそれと関連して供給される）が決定ブロック４５３において、ページテーブルにあるかどうかを判定する。そうでなければ、フラッシュコントローラは、例えば、供給されたアドレスが論理アドレス（更新操作）であるか、物理アドレス（再配置操作）であるかを示すフラグによって、および／または、コマンドおよび／または論理アドレスが自己生成であるかホスト要求であるかを示すフラグによって、メモリアクセスが更新操作か再配置操作のいずれかであるとみなす。
【０１０２】
新規書き込みの場合、フラッシュコントローラは、４７１で示される操作可能なシーケンスを実行する。より具体的には、４７２で、フラッシュコントローラは、現在の選択状態によって操作可能なセットを判定し、そしてその操作可能なセットによってデータ書き込み操作の物理アドレスおよびスライス割り当てを判定する。示される実施形態において、操作可能なセット、物理アドレスおよびスライス割り当ては、各検索操作によって判定される。例えば、現在の選択状態を使用しての操作可能なセット検索テーブルにインデックスをつけること（ＯＳ−ＬｏｏｋＵｐ）、操作可能なセットを使用し次の空きアドレス検索テーブルにインデックスをつけること（Ａｄｄｒ−ＬｏｏｋＵｐ）、および操作可能なセットを使用してスライス割り当てテーブルにインデックスをつけること（ＳＡ−ＬｏｏｋＵｐ）。別の実施形態において、フラッシュコントローラは、操作可能なメモリセット、物理アドレスおよび／またはスライス割り当てをアルゴリズム的に判定することができる。アルゴリズム配置の特定の例として、スライス割り当ては操作可能なメモリセット自体と一致する（または、そうでければそこから派生される）ことができる。どんな場合でも、フラッシュコントローラは、４７４で示されるメモリ書き込み操作を実行し、操作可能なメモリセット内の物理アドレスに書き込み、そして書き込みデータスライスをフラッシュコントローラの内部データレーンから、スライス割り当てによって特定される順番で操作可能なセットの各メモリデバイスに導く。ページテーブルは、アドレス変換（論理から物理への）、操作可能なメモリセットおよびスライス割り当てを反映するために、書き込み操作の終わりまたは最中に更新される。スライス割り当ては、操作可能なメモリセットによって固定される場合、または判定できる場合は、ページテーブルにおいて記録する必要がないことに留意する。
【０１０３】
フラッシュコントローラは、４８１で示される操作可能なシーケンスを実行することにより、更新コマンド（つまり、論理アドレスがページテーブル内の先存エントリと一致することが発見されるメモリ書き込みコマンド）に応じる。４８２から始まり、フラッシュコントローラは、物理アドレス、操作可能なメモリセットおよび、新規スライス割り当てを判定することが必要な場合は先存データのスライス割り当てを得るために、論理アドレスを使用してページテーブルにインデックスを付ける。更新されたデータ値（つまり、論理アドレスと関連して書き込まれるべき、および供給されるべきデータ）が、潜在的な新規操作可能なセット内での新規物理アドレスに書き込まれるため、フラッシュコントローラは、４８４で、操作可能なセットの各デバイスに対する消去のために物理アドレスをマークする。したがって、４８６で、フラッシュコントローラは、現在の選択状態のために操作可能なセットを判定し、そしてその操作可能なセットのための次の空き物理アドレスおよびスライス割り当てを判定する。書き込み操作のためのスライス割り当ては、可変スライス割り当ての実施形態（例えば図１０Ａのような）において過去のスライス割り当てが次のスライス割り当てを判定するために参照される一方で、固定スライス割り当ての実施形態（例えば、図１０Ｂまたは１０Ｃのような）においては過去のスライス割り当てに関わらず判定されてもよいことに留意されたい。操作可能なメモリセット、物理アドレスおよびスライス割り当てを判定した後、フラッシュコントローラは、４８８においてメモリ書き込みを実行し、操作可能なメモリセット内で物理アドレスにおいて更新されたデータを書き込み、そして更新されたデータのスライスを内部データレーンから操作可能なセットの各メモリデバイスへ、スライス割り当てによって示される順番で導く。更新操作中またはその後に、更新されたデータの操作可能なセットおよびスライス割り当て（どちらももう一方から派生してもよく、したがってページテーブルエントリによって黙示的に示される）と同様に、ページテーブルが新規物理アドレスを示すために更新される。
【０１０４】
再配置コマンドの場合、フラッシュコントローラは、４９１で示される、４９２でソースセットおよび再配置先メモリセット（ＳｒｃＳｅｔ、ＤｅｓｔＳｅｔ）を判定することにより始まり、再配置操作のための対応するソースアドレスおよび再配置先アドレス（ＳｒｃＰｈｙｓＡｄｄｒ、ＤｅｓｔＰｈｙｓＡｄｄ）を配置する、汎用化された操作可能なシーケンスを実行する。ソースメモリセットは、再配置されるべきデータがソースアドレスを用いて読み出される、１つ以上のメモリデバイスの１セットであり、配置先のメモリセットは、通過データが目的地アドレスに再配置される（つまり、書き込まれる）、その片方の１つ以上のデバイスの１セットである。単一スライス再配置操作（つまり、データスライスが、定位置にある同じデータ語の他のスライスを残し、アニール対象から代替ストレージへ再配置される）の場合、ソースセットおよび再配置先メモリセットは、アニール対象および代替ストレージへそれぞれ縮小され、そしてソースアドレスおよび再配置先アドレスは、同じ物理アドレス（つまり、再配置コマンドで供給される物理アドレス）であってもよい。逆に、マルチスライス再配置（つまり、同じデータ語の多重のスライスが再配置される）の場合、再配置先メモリセットは、現在の選択状態に対して操作可能なメモリセットの全てのデバイス（または少なくとも２つのサブセット）を含み、ソースメモリセットは、前の選択状態に対して操作可能なメモリセットの全てのデバイス（または少なくとも２つのサブセット）を含む。さらに、同じメモリデバイスがソースメモリセットと再配置先のメモリセットの両方に含まれ、およびデータがその位置で書き換えられていない、または書き換えられることがないマルチスライス再配置においては、コマンドから供給される物理アドレスがソースアドレスを構成するが、新規配置先アドレスが、（読み込みと書き込み両方が行われたメモリデバイス内の物理格納アドレスが、再使用前に消去を要求するため）決定され使用される。例として、図１０Ａのアプローチにおける選択状態「ａ」から選択状態「ｅ」への進行において、マルチスライス再配置が実行されるとその際に、データスライスがフラッシュデバイスＦＤ１〜ＦＤ４から読み出され（つまり、ソースセットが、選択段階「ｅ」の操作可能なメモリセットと等しい）、フラッシュデバイスＦＤ０、ＦＤ２〜ＦＤ４へ書き込まれる（つまり、書き込み先セットが選択状態「ａ」の操作可能なメモリセットと等しい）。メモリデバイスＦＤ２〜ＦＤ４が、ソースセットと目的地セット両方に表れる（つまり、データスライスはそれらのデバイスから読み込まれ、異なるデータスライスがそれらデバイス内に再配置される）ため、ソースメモリセット内でデータが読み出される物理アドレスは、目的地メモリセット内でデータが書き込まれる物理アドレスとは異なる。したがって、図１２の汎用化された再配置シーケンス内で、フラッシュコントローラは４９４で、ソースメモリセット（ＳｒｃＳｅｔ）内のソースアドレス（ＳｒｃＰｈｙｓＡｄｄｒ）において、通過データ（つまり再配置されたデータ）を読み出すために、メモリ読み込みを実行する。ソースメモリセットがアニール対象へ縮小する場合（例えば、図１０Ｂ、１０Ｃの実施形態、および状態「ｅ」から「ａ」を除く図１０Ａの実施形態内の全ての選択状態の進行）は、アニール対象だけが（つまり、アニール対象のためのチップ選択ラインをアサートするが、そのランクの他のメモリデバイスはしない）、単一スライス読み出しを実行するためにアクセスされる。ソースメモリセットが多重デバイスを含む場合は、各デバイスが、マルチスライス通過データ値を読み出すためにアクセスされ、個々のデータスライスを、フラッシュコントローラの内部データレーン上に昇順で送る（つまり、内部レーン０にはｄｓ０、内部レーン１にはｄｓ１等）ために、ソースメモリセットのためのスライス割り当て値（例えば、図１０Ａのアプローチにおける選択状態「ｅ」のためのスライス割り当て）を適用する。
【０１０５】
再配置シーケンス４９１を続いて、二段階再配置操作の場合、ソースメモリセットから読み出された通過データは、スクラッチメモリに４９５で書き込まれ、ページテーブルは新規格納位置を反映するために更新される。そうして、４９７で、フラッシュコントローラは、ページテーブルによって示されたスクラッチメモリのアドレスから通過データを読み出し、そして４９６でメモリ書き込みを実行することを開始する。単一段階再配置操作においては、４９５および４９７でのスクラッチメモリの書き込みおよび読み込み操作は、省略され（そのため、図１２内で表示が破線の外枠になっている）、フラッシュコントローラは直接４９４でのデータ読み出しから、４９６でのデータ書き込みへ進む。
【０１０６】
４９６でのデータ書き込み操作において、通過データは、必要に応じていかなるスライス割り当て転換をも使用し、書き込み先メモリセット（ＤｅｓｔＳｅｔ）内の書き込み先アドレス（ＤｅｓｔＰｈｙｓＡｄｄｒ）に書き込まれる。単一スライス再割り当てでは、書き込み先アドレスへの書き込みは、代替ストレージへの単一スライス書き込みである。逆に、マルチスライス再割り当てにおいては、複数のスライスが書き込み先メモリセットへ書き込まれる。その際、スライスは、その書き込み先メモリセットのスライス割り当てに従って（例えば、図１０Ａのアプローチにおける選択状態「ａ」のスライス割り当て値を使用して）、フラッシュコントローラの内部データレーンから各メモリデバイスへ送られる。。最終的に、データ書き込み操作が完了すると（またはそれと同時に）、ソースメモリセット内のソースアドレス（つまり、単一スライス再割り当ての場合のアニール対象、またはマルチスライス再配置の場合の多重メモリデバイス）は、４９８で即時またはいずれ起こる消去のためにマークされる。
【０１０７】
マルチドロップ接続形態内のアニール操作
アニール操作は、新規アニール対象および対象選択状態の各シーケンスのための代替ストレージに進行するメモリコントローラとともに、スライスされた接続形態などで通常同様のシーケンスにおいてマルチドロップ接続形態内で実行されることができる。図１３は、上述の同様の一般構造を有し（つまり、内蔵アニールコントローラ５０３を搭載した制御論理５０１、ページテーブル５０５、スクラッチメモリ５０７、内部のデータ経路５０９、制御経路５１１、ホストＩ／Ｏ（示されていない）およびメモリＩ／Ｏ５１３とを含む）、しかしスライスされたデータ経路の各スライスの代わりに、マルチドロップデータ経路５１６経由で１セットのフラッシュメモリデバイス５１７（ＦＤ０〜ＦＤ４）と連結している構造を有するフラッシュメモリコントローラを示すこの操作を図示する。各フラッシュメモリデバイス５１７が、メモリデバイスの各ランク部分である（つまり、データ経路５１６は、例えば、図６Ａの３２２示すようにスライスされたデータ経路の１つスライスである）および各メモリランクが１つ以上の予備メモリデバイスを含む実施形態において、上記記載のランクに基づくアニール管理が、各ランクにおいて各メモリデバイスをアニールすために適用される可能性がある。さらに具体的に、既定のランク内の予備デバイスは代替ストレージとして使用されることができ、それゆえに、メモリ読み込み、書き込みおよび再配置目的の仮想デバイスを形成するために選択されるランクのアニール対象とペアになることができる。このような実施形態において、アニール対象は、次のランクへの処理以前の各ランクのメモリデバイスを通じた処理、あるいは次のスライスへの処理以前のデータ経路（つまり、メモリデバイスの「スライス」を通じた処理）の既定のスライスと連結しているメモリデバイスを通じた処理のいずれかによって優先順位を付けられることができる。
【０１０８】
マルチドロップデータ経路５１６と連結している既定のフラッシュメモリデバイスがＮ＋メモリランクの部分でない場合（つまり、メモリランクが１つ以上の予備メモリデバイスを有する）、そのデバイスに対する代替ストレージが、デバイスの同一のスライス内で１つ以上の他のフラッシュメモリデバイスによって形成される可能性がある。図１３の５２０を参照して、例えば、フラッシュデバイスＦＤ１およびＦＤ０は、それぞれ仮想デバイス５３３のアニール対象５３０および代替ストレージ５３１を構成する。図のように、そして上記記載のＮ＋１ランクアーキテクチャにおけるアニール操作のように、そのようなＮ＋スライスアーキテクチャ（つまり、Ｎデバイスのスライス毎の１つ以上の予備メモリデバイス）内でのアニール操作が、新規書き込みおよび更新をアニール対象５３０から代替ストレージ５３１へリダイレクトすること、ならびに代替ストレージ５３１またはアニール対象５３０のいずれかへ、関連するアドレスのためのページテーブル５０５において特定されるデバイスに従ってメモリ読み込みを指示することによって実行されことができる。また、データがメモリ読み込みの部分としてアニール対象から読み出される場合、データがスクラッチメモリ５０７へコピーされることができ、スクラッチメモリ５０７から代替ストレージ５３１への次の転送を可能にするため、対応するページテーブルエントリ内のフラグを設定する（および、ページテーブルエントリにおけるスクラッチメモリ位置または関連する位置を記録する）。図の５１０ように、ページテーブル５０５内でのエントリは、物理アドレスが、格納データの内部メモリアドレスだけでなく、デバイスのスライス内で物理的な格納デバイスを確認するための、デバイス識別子または番号（つまり、デバイスアドレス）も含むことを除いて、Ｎ＋１ランクアーキテクチャのためのページテーブルエントリと同様のフォーマットに通常従うことができる。Ｎ＋１ランクアーキテクチャ内の更新および書き込み操作と同様に、更新されるデータまたは新規に書き込まれるデータのリポジトリとして代替ストレージ５３１を示すため、および更新の場合はアニール対象５３０内の対応するエントリを無効にする（または消去のためのマークする）ため、各書き込みまたは更新操作の後にページテーブルが更新される。データが、アニール対象５３０からの読み込みに続いてスクラッチメモリ５０７において捕らえられる場合、アニール対象内でのソース位置は任意に無効にされるまたは消去（つまり、ページテーブル更新経由で）のためにマークされることができ、それゆえに、読み出されたデータの唯一有効なソースとしてスクラッチメモリを残している。あるいは、アニール対象５３０内のソース位置は、再配置操作を完了するために代替ストレージ５３１へのデータが書き込まれる後までは、無効にされない／消去のためにマークされない、可能性がある。
【０１０９】
あるランクのメモリデバイスとは反対に、既定スライスのメモリデバイスは通常同時にアクセスされないので、それゆえに、スライス順序の考慮によって制限される必要はない。したがって、スライスのあらゆるメモリデバイスが既定のアニール対象５３０に対する代替ストレージ５３１として使用されることができ、そして代替ストレージ選択が、あるアニールサイクルから次へ変化する事ができる。より一般的、図１４のように、代替ストレージが単一のメモリデバイスである必要がなく、代わりに、スライスの２つ以上の他のデバイスにおける有効な記憶領域を含む複合ストレージ５４０であればよい。その場合、複合代替ストレージは、アニール対象の有効的内容をとどめておく十分な容量を有しさえすればよく、それゆえに、アニール対象の合計容量より実質上より小さい格納部分を構成することができる。したがって、アニール対象から複合ストレージへ再配置されたデータは、複合ストレージに寄与するメモリデバイス内で最初に書き込まれた他のデータと共存することができる）。また、図のように、複合ストレージの構成要素領域を意味する影付き領域によって、２つ以上の非連続領域は１つのメモリデバイスによって寄与されることができ、そして異なる量の格納は、各関与デバイスによって複合代替ストレージへと寄与されることができる。
【０１１０】
マルチチャネルメモリ接続形態内でのアニール操作
図１５〜１９は、マルチチャネルランタイムアニール可能なメモリシステム内で実行されるアニール操作を図示する。データ経路の各スライスと連結しているメモリデバイスと対照的に、各チャネル経由でメモリコントローラと連結しているメモリデバイスは、通常独立的に制御される。一実施形態において、例えば、個別のコマンド／アドレス経路は、全体的に異なるメモリトランザクションが、異なるチャネル内で同時に実行されることができる（つまり、時間内に少なくとも部分的に重複すること）ように、各チャネルのデバイスへ供給される（つまり、他の１セットの同様のチャネルデバイスと連結しているコマンド／アドレス経路と分離しているコマンド／アドレス経路を共有する各１セットの同様のチャネルデバイス）。それゆえに、図１５を参照して、チャネルＡのフラッシュデバイス３内のアドレスＸでのメモリ読み込みは（つまり、デバイスＦＤＡ３、メモリチャネル５１６Ａ経由でフラッシュコントローラ５５０と連結している）、チャネルＢのフラッシュデバイス０（ＦＤＢ０、メモリチャネル５１６Ｂ経由でフラッシュコントローラ５５０と連結している）へのメモリ書き込みと同時に実行されることができる。それゆえに、仮想デバイスペアが同様のチャネルのデバイスから引き出される（チャネルそれ自身がスライスされるという概念、マルチドロップまたは両方）実施形態において、受動的および能動的データ退避操作が、そのチャネルにおいて、別のチャネルでのライブメモリアクセス（および／または、受動的および能動的データ退避）と同時に実行されることができる。代替的（または追加的）、仮想デバイスペアは、各チャネルからのデバイスによって形成されることができる。一実施形態において、例えば図１５に示されるように、同様のスライス配置（０、１、２または３）だが個別のメモリチャネル（５１６Ａ、５１６Ｂ）からのデバイスは、仮想デバイスペアのシーケンスを形成するために選択され、他のチャネルのデバイスを通じて進行するための、アニール対象／代替ストレージ選択を逆転する以前に、順番に既定のメモリチャネルの各デバイスのアニールすることができる。図１５の実施形態において、例えば、その進行は、ＦＤＡ０／ＦＤＢ０、ＦＤＡ１／ＦＤＢ１、…、ＦＤＡｎ−１／ＦＤＢｎ−１、ＦＤＢ０／ＦＤＡ０、ＦＤＢ１／ＦＤＡ１、…、ＦＤＢｎ−１／ＦＤＡｎ−１であり、そこでフォーマットＦＤｉ／ＦＤｊの第１のデバイスはアニール対象であり、第２は代替ストレージであり、そして「ｎ」は各チャネル内でのデバイスの数である。あるいは、進行はＦＤＡ０／ＦＤＢ０、ＦＤＢ０／ＦＤＡ０、ＦＤＡ１／ＦＤＢ１、…、のような２つのメモリチャネル間で交互（「ピンポン」）である可能性がある。
【０１１１】
各仮想デバイスペアにおいて、２つのチャネルから同様に配置されたデバイスのペアリングの代わりに、各進行における１つ以上の仮想デバイスペア（またはすべての仮想デバイスペア）は、デバイス配置に関わらず形成されることができる。例えば、図１６の実施形態において、デバイスＦＤＡ１およびＦＤＢ３はペアにされる。この実施形態は役に立つ可能性があり、例えば、予備能力を見せるチャネルの場合である。例えば、ＦＤＢ３が本来は空である限りにおいて、そのデバイスは、チャネルＡのデバイス（例えば、チャネルＡ内で既定のデバイスからＦＤＢ３へ退避し、その後それがアニールされた後、退避されたデバイスをリロードし、そうすることで進行においてＦＤＢ３が進行中の次のデバイスのデータを自由に受信するようにする）だけでなく、チャネルＢの他のデバイスの代替ストレージとして使用されることができる。図１６に示される配置的独立型デバイスペアリングは、１つのチャネルがもう１つのチャネルより多いデバイスを含む場合においても役に立つことができ、より密集しているチャネルにおける１つ以上のデバイスは、同様のまたは異なるチャネルにおける異なる配置のデバイスとともに必ずペアになる必要がある。
【０１１２】
マルチドロップ接続形態のように、マルチチャネル接続形態内の代替ストレージは単一のメモリデバイスである必要がなく、そして代わりに、同様のおよび／または異なるチャネルの２つ以上の他のデバイスにおける使用可能な記憶領域を含む、複合ストレージであってもよい。図１７を参照して、例えば、代替ストレージが、２つの同様のチャネルフラッシュデバイス（ＦＤＡ０およびＦＤＡ２）、および２つの異なるチャネルフラッシュデバイス（ＦＤＢ２、ＦＤＢ３）の記憶領域によって形成される。上記マルチドロップ事例の場合、複合ストレージは、アニール対象の有効的内容をとどめておくために十分な容量を持ちさえすればよく、それゆえに、アニール対象の全容量より、実質上より小さい格納部分を構成することできる。また、容量の異なるストレージは、各関与デバイスによって複合代替ストレージへ「寄与される」ことができる。
【０１１３】
図１８は、チャネルからチャネルへのデータ転送を容易にしそれゆえに、データ再配置操作を加速するための切り替えメモリＩ／Ｏ回路５７３を有するマルチチャネルメモリコントローラ５７０（この例における、フラッシュコントローラ）の実施形態を図示する。示される例において、データがチャネル−Ａ  Ｉ／Ｏ回路５７２Ａ経由でアニール対象（ＦＤ  Ａ１）から読み込まれ、その後クロスバー切り替え５７４経由で（他の切り替え技術が使用される可能性があるが）、チャネルＢに対するＩ／Ｏ回路５７２Ｂへ転送され、そのチャネル上の代替ストレージ（ＦＤ  Ｂ３）に書き込むために書き込みデータを供給する。それゆえに、チャネルＡにおけるアニール対象からチャネルＢにおける代替ストレージへの再配置は、データをコントローラコア５７１へ転送する必要なしに成立する。追加的メモリチャネルが存在する場合、例えば、メモリチャネルＡおよびＢに関連したアニール対象と代替ストレージとの間のデータの再配置と同時に、追加的メモリチャネルに関して自由なメモリアクセストランザクションを実行することができる。
【０１１４】
図１９は、マルチチャネルメモリコントローラ５７０内の代替的チャネル間データ再配置操作を図示し、そこでチャネルＡ上でアニール対象（ＦＤ  Ａ１）から読み込まれたデータがある、コントローラコア５７１内でスクラッチメモリ５８５が格納され（および、任意のホスト要求またはデータ読み込む／書き込む経路５８７経由で戻る）そして、その後チャネルＢ上の代替ストレージ（ＦＤ  Ｂ３）へ、後書き込みされる。データ検索フローは５８３により示され（太破線経路）、およびにデータ書き込むフローは５８５よって示される。この例において、２つのチャネル内のデータ操作は、同時に実行されることができ、したがって、別のメモリ書き込みまたはメモリ読み込みが、通過データがチャネルＡにおいてアニール対象から読み込まれる間（つまり、データが再配置されている）に、チャネルＢにおいて（少なくとも一部分において）実行され、そしてその後別のメモリ書き込みまたはメモリ読み込みが、チャネルＢにおいて通過データが代替ストレージへ書き込まれる間に、チャネルＡにおいて（少なくとも一部分において）実行される。すなわち、ホストは、一度にただ１つのメモリチャネルにわたるデータをアクセス（読み込みまたは書き込み）するよう設定されることができ、それゆえに、ホスト主導トラフィックを妨げないでアニール関連データ退避操作に対する他のチャネルを解放する。スクラッチメモリ５８５は、あるチャネル上のデバイスから他のチャネル上の１つ以上のデバイスへ移行されているデータ（つまり、通過データ）に対し、一時的にとどめておく位置として役立つことができる。スクラッチメモリ５８５は同様に、アニール対象として同様のメモリチャネル上の代替ストレージへ、通過データを一時的に格納することに役立つことができる。どちらの場合においても、ページテーブル５８３は、代替ストレージにおける再配置に先立って通過データを読み込むためのあらゆる要求が、アニール対象へのアクセスを要求する代わりに、スクラッチメモリ５８５からデータの読み出しを達成することができるという、通過データの一時的な位置を反映するために更新されることができる。通過データが、スクラッチメモリ５８０において、一時的にバッファの役割を果たそうとそうでなかろうと、ページテーブルは、データ再配置操作完了に続いて、データの新規リポジトリとして、チャネル−Ｂに代替ストレージを示すために更新される。
【０１１５】
マルチ予備接続形態におけるアニール操作
図２０Ａ〜２０Ｅは、Ｎ＋２メモリアーキテクチャ内でのアニール操作を図示する。つまり、デバイスの各ランクまたは各スライスは２つの予備デバイスを含み、それゆえに、１つの予備デバイスが、もう１つの予備デバイス内へのデータ退避を伴い同時にアニールされる（つまり、加熱される）ことを許可することができる。
【０１１６】
図２０Ａは、操作可能なセット毎に４つのメモリデバイス（Ｎ＝４）を有するが、各Ｎ＋２メモリランク６１５が６つのメモリデバイスを含むように２つの予備デバイスも有する、スライスされたＮ＋２メモリアーキテクチャの実施形態を図示するが。メモリコントローラ６００（この例におけるフラッシュコントローラ、フラッシュメモリデバイスＦＤ０〜ＦＤ５によって実装されるような）は、制御論理６０１（内蔵アニールコントローラ６０２とともに）、ページテーブル６０３、スクラッチメモリ６０５、コマンド経路６１１、データ読み込み／書き込み経路６０７、メモリＩ／Ｏ回路６０９およびコントローラＩ／Ｏ回路（示されていない）を含み、それらすべてが一般的に上記のように操作する。外部データ経路６１４のそれぞれのスライスは、メモリＩ／Ｏ回路６０９と各フラッシュメモリデバイスＦＤ０〜ＦＤ５の間に連結され、そしてコマンド／アドレス経路（示されていない）が、個々に制御可能なチップ選択ラインが、図１１を参照して説明されるように、それらの独立型選択を可能にするための専用の方法において各メモリデバイスへ連結されることを除いて、そのランクのすべてのデバイスへ共通して連結される。上記の代替的実施形態において、各メモリデバイスは、共通のコマンド／アドレス経路と連結している代わりに各（つまり、個別、専用）アドレス経路、および／または各コマンド経路と連結されることができる。このような配置は、各メモリデバイスが既定のメモリアクセス内の異なる物理アドレスを受信することを可能にし、それゆえに、メモリデバイス内の異なる物理位置で不良ブロックに対する耐性を可能にし、そして特定デバイス損傷レベルに対する支持を提供する。
【０１１７】
さらに図２０Ａを参照して、２つの予備デバイスの提供は、メモリコントローラ６００が、本明細書において「アニールデバイス」と呼ばれる、１つの予備メモリデバイス内でアニール操作（つまり、熱すること）を実行することを可能にし、一方でもう１つの予備メモリデバイス内へ次にアニールされるデバイス（「退避デバイス」）を退避している。それゆえに、退避操作およびアニール操作は、図２０Ｃのような選択状態から選択状態へ（各アニールサイクルにおける、状態「ｆ」を通じた、状態「ａ」からの進行）、退避デバイス（ｅｖ）、アニールデバイス（ｘｘ）および代替ストレージ（ａｓ）の段階的な進行で、図２０Ｂのようにパイプライン化されることができる。別のデバイスにおいてアニールが継続している間、最も最近アニールされた予備（ブランクまたは空の）デバイス内へアニールされるための次のデバイスを退避することの同様の一般的アプローチは、図２０Ｄのようにスライスされたアーキテクチャにおいて実行されることができる。示される例示的な状態において、フラッシュデバイス０（Ｆｌａｓｈ  Ｄｅｖ０）およびフラッシュデバイス２は、フラッシュデバイス１がアニールされている間、仮想デバイスの、それぞれ代替ストレージおよび退避デバイスを構成する。
【０１１８】
図２０Ｅは、２つの予備デバイスを有するシステムの別の有利な特性を図示する。つまり、既定のメモリデバイス内でアニール操作完了後、新規アニール対象と一緒にそのデバイスが、既定のメモリアクセスサイクル間（例えば、メモリ書き込み間）アクセスされるデバイスのセットから省略されることができ、そしてそれゆえに、並列データ退避操作に使用可能である。図２０Ｅにおいて、例えば、データ再配置操作は、１つ以上のメモリデバイスＦＤ２〜ＦＤ５内で、ホスト要求されたメモリアクセスと同時に、ちょうどアニールされたデバイスＦＤ０および新規アニール対象ＦＤ１について実行される。示された特定の実施形態において、ＦＤ１からのＦＤ０へのシャント転送はメモリＩ／Ｏ回路を通じて達成され、それゆえに、ホスト要求トラフィックを伴い同時に２つのデバイス間に、無衝突通信を可能にすることができる。この操作によって、ホスト要求メモリアクセス下の能動的データ退避を効果的に隠し、データ退避がホストとデータ再配置操作の間にシリアライゼーションを要求するという実施形態においてよりも、より迅速に完了されることができる。
【０１１９】
図２１Ａ〜２１Ｄはアニール進行およびＮ＋３スライスされたまたはマルチドロップアーキテクチャにおいて採用される可能性がある、代替的アニールパイプラインを図示する。図２１Ａの進行において、メモリランク６４０内の既定デバイスに適用されるアニール操作が、アニール進行において２つの継続的な選択状態におよぶこと、および２つのデバイスが各選択状態において同時にアニールされることが見られるであろう。さらに具体的には、既定の選択状態において、第１のデバイス（先導デバイス）のアニールは、前の選択状態から継続され、現在の選択状態において完結され、一方で第２のデバイス（後続デバイス）のアニールは、現在の選択状態において開始され、そしてそれゆえに、それに続く選択状態（そこで現在状態の後続デバイスが次期状態の先導デバイスになり、現在状態の先導デバイスが次期状態のアニール対象になる状態）において完結される。図２１Ｂは、図２１Ａの選択状態進行に対応するアニールパイプラインを図示し、同様のランクまたはスライス内の多重メモリデバイスの交互だが並列のアニールを示している。
【０１２０】
図２１Ａおよび２１Ｂのアニール進行およびパイプラインは、アニール操作がデバイス退避操作よりも時間がかかる（少なくとも時折）ことが予期されるところ、およびより高いアニール頻度が望まれるところで、特に適用可能である。つまり、平均して（Ｎ＋３）＊２デバイスが、各完了アニールサイクル（つまり、すべての選択状態を通じた進行）の実行毎にアニールされる。それに反して、退避操作がアニール操作よりも時間がかかる（少なくとも時折）ことが予期される実施形態においては、別のアニールの間に２つのメモリデバイスを同時に退避することが望ましい。このような実施形態に対するアニールパイプラインは図２１Ｃに示され、各選択状態に対し、１つのデバイスがアニールされ（アニールデバイス）、それと同時に別のデバイスの退避（先導退避者デバイス）が完了され、第３のデバイスの退避（後続退避者）が開始されることを示している。図２１Ｄは、コントローラ６３０および、７つのメモリデバイスＦＤ０〜ＦＤ６、によって実装されるアニール能力のあるメモリサブシステムを含むＮ＋３メモリシステムと関連するこのアプローチを図示する。図のように、ＦＤ０がアニールされている（つまり、アニール温度に熱される）間隔にわたり、ＦＤ１が退避され、そしてその後ＦＤ２が退避される、その一方でデバイスＦＤ３〜ＦＤ６が操作可能なメモリセットを形成する。
【０１２１】
図２１Ｅは、Ｎ＋３メモリシステム内で適用することができる、別の退避アプローチの方法を図示する。この事例において、ランク６４０内の２つのメモリデバイスは、第３のメモリデバイスをアニールている一方で、同時に退避される。さらに具体的に、示される実施形態において、次にアニールされるメモリデバイスは、別のメモリデバイスが、第２の代替ストレージ（ａｓ）中へ受動的に退避される間隔間に、第１の代替ストレージ（ａｓ）中へ能動的に退避される（「ａｅ」によって示される）。退避者デバイスの受動的および能動的退避の間中加熱されているデバイスは、「ｘｘ」によってマークされる。それゆえに、選択状態「ａ」から「ｂ」への進行において、選択状態「ａ」において能動的に退避されるメモリデバイスはアニールデバイス（ｘｘ）になり、選択状態「ａ」において受動的に退避されるメモリデバイスは能動的に退避されるデバイス（ａｅ）になり、そして選択状態「ａ」においてアニールされるデバイスは、受動的退避（ｐｅ）に対し新規に選択されるデバイスのための代替ストレージ（ａｓ）になる。上記の実施形態のように、退避デバイスおよびそれらの各代替ストレージデバイスは、操作可能なメモリセットの一部を形成する仮想デバイスペアを構成する。それゆえに、図２１Ｅの実施形態において、操作可能なメモリセットは、２つの個々のメモリデバイス（「ｏｐ」）および２つの仮想デバイスペア（ａｅ／ａｓおよびｐｅ／ａｓ）で構成される。異なる数のメモリデバイスは、代替的実施形態においてメモリランク内で含まれることができ、同時に退避されるデバイスの数は（そしてそれゆえに、操作可能なメモリセットにおいて多数の仮想デバイスペアが含まれる）、あらゆる実行可能な数に拡張されることができる。より一般的には、図２１Ａ〜２１Ｅにおいて示される以外の、進行処理、操作可能なパイプラインおよびアーキテクチャが採用されてもよく、そしてＮ＋３のスライスされるまたはマルチドロップアーキテクチャにおいて示される概念は、Ｎ＋４、Ｎ＋５等のデバイス数を有するアーキテクチャへ拡大されることができる。
【０１２２】
フォアグラウンドアニール
図２２は、アニール可能なメモリサブシステム（またはサブシステム）のアニールを行う一方で、コアシステムの操作が保留されアニールが完了する時に再開するランタイムアニール操作であるフォアグラウンドアニール１３０において実行することができる汎用シーケンスの操作を図示する。１３１で示されるように、フォアグラウンドアニールシーケンスはトリガーとなるイベントの発生に応えて開始する。トリガーとなるイベントは、自動的な判定／検出条件または条件６５１の１セットもしくはオペレータ起動６５５であってもよい。自動的な検出の場合、トリガーとなるイベントは、確定的（例えば、予定された、もしくはプログラムされた時間が最終アニール操作から経過したこと、もしくはある特定の時点に達したこと（つまり、計画的）を検出する）、もしくは非確定的（例えば、予定された／プログラムされた時間の間のシステムアイドル、最終アニールからのプログラム数／消去操作数の閾値、エラー数／エラー率の閾値等）、またはそれらのうちどの組み合わせもになることができる。オペレータ起動によるフォアグラウンドアニールの場合、人間またはシステムの人為的なオペレータが、アニール操作を明確に指示することができる、例えば、操作システムユーティリティまたは他のユーザインターフェース選択を使用すること、したがってアニール操作の完了または終了に至っていない保留された状態にそのシステムを配置するために肯定的に選択することである。具体的な例として、アニール可能なメモリサブシステムがコンピュータシステムまたは一般電子製品のメインメモリ（あるいはそうではない頻繁にアクセスされたメモリ）の一部または全ての構成要素となる場合、人間のオペレータは（インジケーターを通してまたは別の方法で）アニールをメモリサブシステムに行うことによりシステム性能が改善すること、およびアニール操作を起動するための制御パネルユーティリティまたは他のメンテナンスコントロールインターフェースを選択することができることを判定することができる。ユーザインターフェースは、そのデバイスまたはアニールを行っている最中であるデバイスの表示、進行中のアニール操作に残された時間、そのデバイスまたはまだアニールが行われていないデバイス（および全てまたはそれぞれの見積もり時間）をそのデバイスまたは既にアニールが行われたデバイスと同様に表示するといったアニールの進捗の追跡に用いることができる。どのような問題のあるメモリ（例えば、不良または低信頼性のセクター、クラスタデバイス、ランク等）も、同様に留意することによってオペレータはメモリ回避（例えば、低信頼性および使用しないものとして問題のあるメモリにマーキングする）および／または交換に関して決定を下すことを促進できる。
【０１２３】
どのようにトリガーされたとしても、フォアグラウンドアニール操作は、アニールが行われるメモリからバックアップストレージまたは予備のアニールデバイス（１つまたは複数）１３３へデータを退避、あるいはアニール（つまり、デバイスの加熱）操作１３５、そしてアニールメモリにあらゆる退避したデータ１３７の再読み込み、といったそれらそれぞれの場合において通常同様に進行する。
【０１２４】
データ退避および再読込み操作は、それらの選択自由な特性を強調するため図２２において破線で示される。すなわち、データが既にバックアップされたさもなければ他のストレージ（キャッシュされた、またはＲｅｄｕｎｄａｎｔ  Ａａｒｒａｙ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋ（ＲＡＩＤ）システムに見られるようなストレージを介した復旧可能なメモリ内容）から復旧可能であるアプリケーションにおいて、データ退避の必要性は履行されず、デバイスの加熱がトリガーとなるイベントに応じてただちに開始することができる。同様に、いくつかの場合において、データはコアシステム操作の再開の前にアニールされたメモリサブシステムへ再読込みされる必要がなく、代わりにシステム操作としてアニールされたメモリを通例の一部として再装着することができる（例えば、キャッシュへのライトバックまたはライトスルー、内容への書き込みまはた更新の一部としてのストレージ等）。
【０１２５】
１３５にてアニールに先立ってデータ退避が行われる場合、６６１に示されるアニール可能なメモリサブシステムとは異なるバックアップメモリデバイスへ、（つまり、アニール可能なメモリサブシステムを含むホストシステム内にある、またはそれとは分離する別のストレージへ）データを退避することができ、あるいは６６３に示されるアニール可能なメモリサブシステムの予備ストレージへ退避することができる。バックグラウンドアニールを目的とするアニール対象の退避に用いられる様々なアプローチは、フォアグラウンドアニールシーケンスの一部として同様にアニール対象の退避に用いることができる。
【０１２６】
アニール操作自体に関しては、アニール可能なメモリサブシステムを構成するメモリデバイスを、６７１に示されるように一斉にアニール（本明細書に記載される「並行」アニール）を行うこと、または６７３に示されるようにデバイスもしくはデバイス群によって逐次的に行うこともできる。逐次アニールの場合、バックグラウンドアニールとの関連で前述されるように、どのデータ退避もアニール対象および１つ以上の代替格納デバイスについて実行することができる。その上、並行アニールと逐次アニールの間の選択を、アプリケーションに従って固定すること、またはプログラムによって定めるさせることができる。いずれにしても、多数の要因は並行と逐次アニールの間の選択に影響を与えるにつれて、考慮に入れるおよび／またはプログラムによって特定することができる。例えば、ポータブルデバイスの場合、ドッキングまたは別の方法として電力線（つまり、バッテリーによる電力ではない）により電力を供給される時のみ並行アニールが有効となることができる。一方で電力線が利用可能である場合、限定されたデバイス機能性の供給（または他のメンテナンス操作の並列した実行）は並行と逐次アニールの間の選択におけるアニール操作の緊急性に一方的に不利になることがある。
【０１２７】
上記に考察したとおり、１３７におけるメモリ再読込み操作は任意であり、要望されたまたは必要性がある場合、明確に実行することができ（例えば、退避されたデータを後退させてアニール可能なメモリサブシステムへ転送する）、および／または通常操作トラフィックとして発生するデータ移行を行うことで達成することができる。いずれにしても、あらゆる要求されたメモリ再読込みが完了した後にホストシステムのコア操作を再開することができる。
【０１２８】
図２３Ａ〜２３Ｃは、本明細書に「瞬間的アニール」と記載されるフォアグラウンドアニールの種類を図示する。瞬間的アニールの通常のシーケンスは図２３Ａの例示的フローチャートに示される。すなわち、メモリサブシステムを含むメモリサブシステムまたは装置を７０１にてオフラインにする。そして、７０３にて、アニールは上述のバックグラウンドアニール方法論に従って実行されるが、（ｉ）アニールコントローラは直接能動的退避へ進み、別のメモリデバイスのアニールと同時にメモリデバイスを退避する（加熱する）、（ｉｉ）移行はシャント転送（例えば、メモリコントローラの入力／出力回路内においてクロスバーまたは別のスイッチング構造を通して転送する）を通して実行し、したがってスクラッチメモリ内の一時的ストレージはない、および／または（ｉｉｉ）多層アニールおよび／またはデータ退避はそれぞれのアニールシーケンスのスレッドにおいて並列で行われる、という場合を除く。７０３の全ての対象としたメモリデバイス内にてアニール操作が完了した後、メモリサブシステムまたは装置は７０５にてオンラインに戻り、再開するためにメモリアクセス操作を有効とする。
【０１２９】
図２３Ｂはフラッシュコントローラ７２０を有するフラッシュメモリシステム内における瞬間的アニール、およびフラッシュデバイス（「フラッシュ」）の一式を図示する。フラッシュコントローラ自体は、クロスバーＩ／Ｏ回路７２６、スクラッチメモリ７２１、ページテーブル７２３、および読み込み／書き込みデータ経路（「読み込み／書き込み経路」）を含み、その機能は一般的に上記のような機能である。示されるように、フラッシュメモリシステムをオフラインとした後、データを第３のフラッシュデバイス内において１つのフラッシュデバイスから最も最近アニールを行ったフラッシュデバイス（つまり、少なくとも時間的に重複する）に、アニール（加熱）操作と同時に能動的に退避する。次にアニールが行われるデバイス完全に退避し、先行アニール対象（この時点で最も最近アニールが行われたフラッシュデバイス）についてアニール操作が完了した後、７２７に示すように完全に退避されたフラッシュを別のフラッシュデバイスの最も最近アニールが行われたデバイスへの能動的退避と同時にアニールを行う（加熱する）。図２３Ｃは図２３Ｂの通り同一フラッシュメモリシステム内における交互瞬間的アニールシーケンスを図示するが、多層アニール（加熱する）操作および多重データ退避も同時に実行されるものである。このような多層同時アニール／退避操作は、各操作は図２３Ｂに記載されるシングルスレッドの瞬間的アニール操作のインスタンスとして実行されるため本明細書のアニールスレッドに記載される。シングルかつマルチスレッドの両アニール操作は、全てのメモリランク全体のアニールを加速させるため、個々のアニールスレッドの構成要素操作内の同時並行性を利用し（およびマルチスレッド操作はさらに２つ以上のこのような個々のアニールスレッド間を同時並行的に活用する）、迅速にアニールを行い本来の業務に戻るようメモリランク全体を有効にする。
【０１３０】
図２４は、メモリサブシステム内における予備メモリデバイス、さもなければ予備デバイスを有していない予備メモリデバイスを提供する、または上述の並列的な予備の技術（例えば、図２３Ａ〜２３Ｃへの参照に記載されるオフライン瞬間的アニール技術と同様のＮ＋２、Ｎ＋３等）の活用を目的とした追加の予備メモリデバイスを提供するため、実行することができる例示的に圧縮されたアニール操作を図示する。７５１にて開始し、ランタイムアニール可能なメモリシステムまたは同一のものを含む装置はオフラインとなる。その後７５３にて、データ格納要求は１つ以上の予備（または追加の予備）メモリデバイスの解放のため減少する。示されるように、多数異なる技術は個々または組み合わせによって、全てまたは一部のデータボリュームのエンコードすることを含むメモリシステムへのデータ格納（つまり、データボリューム）のネットデータ格納要求を減少させるために実行することができる、例えば、ベクトル量子化、データ非重複または他のロスレスもしくはロッシー技術を使用する、あるいはメモリシステム外にあるデータの一部分を移動する、および／または、ディスク、メインメモリ、キャッシュ等のような他の格納システム内に重複して格納すると認められるまたは知られているデータを無効とする（例えば、サブシステムの１つのためのパリティデータの保持に使用されるメモリデバイス（またはデバイス）のような２つ以上の半導体ベースＲＡＩＤ−５メモリサブシステムの統合が、少なくとも一時的であり目的およびそれに従った予備メモリデバイスとして利用可能である必要はない）。メモリサブシステム外へのデータの移動または転送の場合、一実施形態において転送に選択されたデータは、コールドページがホットページの代わりとなるというように、メモリサブシステム（またはホストフラッシュデバイス）内においてほとんど重要（必要）ではないデータの転送に向けてバイアスされるあらかじめまたはプログラムによって選択するされた方法（例えば、図１１Ａに示されるようにアニール制御レジスタ内に格納する）に従って特定することが可能である。いずれの場合においても、オリジナルデータボリュームのネット格納要求が減少する後、現時点で値が小さいデータボリュームは７５５のメモリデバイス数が減少したメモリデバイスへ圧縮され、上述のＮ＋アーキテクチャ（つまり、Ｎ＋１、Ｎ＋２、Ｎ＋３等）にあるように１つ以上の予備または追加の予備メモリデバイスを得る。それゆえに、オリジナル格納配列がたとえ予備デバイスを含まないとしても、アニール操作を７５７にて上述のバックグラウンドアニール方法論および瞬間的アニール方法論に従い実行することができる。全てのメモリサブシステム（またはデバイスの対象とされたサブセット）のメモリデバイスのアニールが行われた後、データはメモリサブシステムまたはホストフラッシュデバイスが７６１にてオンラインに戻る時、再開された操作を有効とするため必要に応じて（７５９に示す）メモリサブシステムへ後退してデコードまたは転送することができる。
【０１３１】
図２５Ａは、フォアグラウンドおよび／またはバックグラウンドアニール操作に関連してランタイムアニール可能なシステムの人間のオペレータへ提供することが可能である例示的ユーザインターフェース６８０を図示する。さらに具体的に、「アニールマネージャー」プログラムの起動（つまり、オペレータ可視のディスプレー上にてユーザインターフェース６８０を表示するインストラクションのシーケンスを実行するためのシステムプロセッサ（１つまたは複数）を指示し、インストラクションの参照はオペレータ入力に従ってアニール操作を実行する）そのシステムは、アニールに関連するステータス情報（例えば、最終アニールから経過した時間、最終アニールからの多数のプログラム／消去操作、プログラムおよび／またはビットの誤り率、デバイスプログラムミングに影響するよう要求されたプログラムサイクル数の履歴分析結果等）を収集し、アニールが必要であるかどうか、全てまたはデバイスのサブセット（および特にアニールを行うデバイス）のアニールを行うかどうか、対象のメモリデバイスの退避、アニールならびに再読込みを必要とされた見積もり時間、およびその他をユーザがそれら情報に基づいて決定することを可能にするための情報を提供することができる。
【０１３２】
示される具体的な実施例に関して、アニールマネージャーユーザインターフェース６８０は、「Ｆｉｌｅ」、「Ａｃｔｉｏｎ」および「Ｈｅｌｐ」と見出しされた例示的プルダウンメニューを含む。Ｆｉｌｅメニューは６８３に示すように「Ｐｒｅｆｅｒｅｎｃｅｓ」、「Ｐｒｉｎｔ  Ｒｅｐｏｒｔ」および「Ｅｘｉｔ」を含むユーザが選択可能なメニューアイテムを提供し、一方Ａｃｔｉｏｎメニューは６８５に示すように「Ｓｅｌｅｃｔ  Ｔａｒｇｅｔ（ｓ）」、「Ｓｔａｒｔ  Ａｎｎｅａｌ」、「Ａｂｏｒｔ  Ａｎｎｅａｌ」および「Ｅｘｉｔ」のメニューアイテムを提供する。メニューのメニューアイテムは示されていないが、ユーザにアニール操作に関する情報を収集することを可能とすること、およびプルダウンメニュー介して様々なオプションならびに一般的なユーザインターフェースを利用可能とする様々なヘルプ機能およびステータスアイテムをを含んでもよい。
【０１３３】
Ｆｉｌｅメニューアイテムに関して「Ｐｒｅｆｅｒｅｎｃｅｓ」は、アニールに関連する様々なオプションおよびプリファレンス（パラメータ）のオペレータ入力のためのプリファレンスウィンドウを得るため選択することができる。例えば、バックグラウンドアニールの有効化、並行アニールまたは逐次アニールの実行、あるいはアニールにとって必要であると示す問題である可能性のある様々な警告の可視／可聴、あるいは受動的および能動的退避段階に関連する閾値、あるいはトリガーとなるイベントの基準／指針、デバイス選択の基準／指針（つまり、プログラム可能な選択シーケンスを含むシステムがどのようにアニール対象および／または代替ストレージを選択するか）、ページテーブル管理オプション、接続形態の詳細な選択／オプション、アニール進行方法論、スクラッチメモリ使用方針、およびその他といったオプションの選択／有効をオペレータが試みることができる。さらにほとんどの場合、いずれの本明細書に記載される選択可能かつ様々なアニール関連のパラメータ（および／または選択、操作等）も、プリファレンスウィンドウ（または他のユーザインターフェースディスプレーは、アニールマネージャープログラムに関して利用可能である）を介してユーザへ提供することができる。
【０１３４】
「Ｐｒｉｎｔ  Ｒｅｐｏｒｔ」メニューアイテムは、過去または進行中のアニール操作に関連する様々なレポートを印刷するために選択可能であり、「Ｅｘｉｔ」メニューアイテムは、アニールマネージャープログラム（ユーティリティ）の実行を終了するために選択することができる。メニューに関して、「Ｓｅｌｅｃｔ  Ｍｅｍｏｒｙ」のメニューアイテムは所定のメモリサブシステム内において、アニールを行うために具体的なメモリサブシステムおよび／または具体的なメモリデバイスを特定するのに使用することができる。「ｓｔａｒｔ  ａｎｎｅａｌ」（アニール開始）および「ｓｔａｒｔ  ａｎｎｅａｌ」のメニューアイテムは、選択されたメモリデバイス（またはプリファレンス選定により保存された対象のデバイス）のそれぞれ起動および停止のために選択することができる。追加的／様々なメニューアイテムおよび／またはプルダウンメニューは、アニールマネージャープログラム内においてアプリケーションのニーズに従って提供することができる。
【０１３５】
さらに例示的ユーザインターフェース６８０に関して、システム内において各アニール可能なメモリサブシステムを一覧化するため、およびアニールステータス（例えば、アニール要求、アニール進捗、最新の状態）、ストレージ容量、未使用のストレージ、ライフタイム（例えば、不揮発性メモリデバイスにおける残りのライフタイムを示すゲージ）、最終アニール操作の日付／時刻、および各ボリュームのアニール操作の完了見積もり時間（例えば、アニール進行中の場合の残り時間、またはアニールが実行中でない場合に要求される合計時間）を表示するために、ボリュームウィンドウ６９１を提供する。アニール完了のためのライフタイムゲージの見積もり時間に関して、この値は格納パラメータに基づいて前もって見積もりされることができ、周期的な測定に基づき決定することができる。このよう決定および測定は、新規のメンテナンスイベント（つまり、データ移行を含むソフトウェア初期メンテナンスイベント）に用いることもできる。その上、ユーザはあらかじめ定められた（例えば、プログラムされた）ライフタイムの数値が所定のデバイスまたはボリューム内においてなくなった時に任意にアニールを開始することを試みることができ、および／またはそのライフタイムが重大な閾値に達した時（例えば、５％または３％−−再度、あらかじめ定められたまたはプログラムされた閾値）、アニールは自動的に実行することができる。図２５Ａに示される特定の実施例において、３つのアニール可能なメモリサブシステムを、サブシステムＡにおけるアニール要求、サブシステムＣにおけるアニール要求がない、およびサブシステムＸにおける進行中のアニール操作を表す。それゆえに、サブシステムＸの残りのライフタイムゲージはアニール段階である意味で「ｎ／ａ」として示される。
【０１３６】
アニール進捗ウィンドウ６９３を、あらゆるアニール進捗の状況を示すためにさらに提供する。示される実施例において、サブシステムＸ内における進行中のアニール操作は６７％完了しており、この時点で６９７に示されるようにアニール操作がストレージ容量の１２４ギガビット（Ｇｂ）を再要求（つまり、前使用にされていない状態から復旧された）された。ユーザ選択可能な制御ボタン（つまり、マウスまたは他のポインターデバイスのユーザ操作を通して作動または「クリック」することができるディスプレーイメージ）は、オペレータがフォアグラウンドアニール操作（制御ボタン７０１）の開始、実行中のアニール操作の停止（制御ボタン７０３）またはアニールステータスウィンドウ（制御ボタン７０５）を表示することを可能とすることを提供する。制御ボタン７０１、７０３、７０５はモーダル状態で利用可能またはシステムの状態に従いオペレータに利用できないようにすることができる。実施例に示される状態において、例えば「ｓｔａｒｔ  ａｎｎｅａｌ」ボタン７０１はアニールが既に進行中であるために利用できない（輪郭が影になった状態で示される）（留意する点として、システムリソースが許容する場合、複数のサブシステムはバックグラウンド、および／またはフォアグラウンドで同時にアニールを行うことは可能）。
【０１３７】
例示的アニールステータスウィンドウ７１１は７１０に示され、アニール段階のメモリサブシステム（本ケースにおけるサブシステムＸ）の画像７１５を含み、構成要素であるデバイスのアニールが完了したこと、それらがアニールが進行中であること、およびそれらがまだアニールが行われていないことを示す。ステータスディスプレーが関連する格納ボリューム、および残された時間の見積もり時間は、示される実施例において繰り返す。多数の他のステータス値および詳細を提供することができ、アニールによる試験結果、依然として完全または部分的に操作不可能であると疑わしいまたは周知されるメモリデバイス、およびその他を含む。その上、多数のメモリデバイス（ただし全てではない）のフォアグラウンドアニール操作に対応するアニールステータスウィンドウ７１１を、同時にアニールを行う。アニールステータスウィンドウは、どの進行中のバックグラウンドアニール操作に関するステータスをも表すことができる、
【０１３８】
図２５Ａのユーザインターフェースは、コントロールパネルアプリケーションまたはソフトウェア実装ユーティリティのようなオペレーティングシステム（例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（「Ｍｉｃｒｏｓｏｆｔ」および「Ｗｉｎｄｏｗｓ」はＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの１つ以上の商標によって保護されることができる））の実行を通して提供することができる。図２５Ｂのフローチャートに典型的に示されるように、このようなソフトウェア実装ユーティリティは、実行した際に、メモリが多重素子格納システムの素子である（または構成要素）メモリメンテナンスイベントの必要性を監視し、データ退避オプションの選択に関連するユーザと対話することを可能とする。例えば、７６５におけるメンテナンスの必要性（またはデバイスの取り替えもしくはあらゆるデータ退避についての他の理由／動機）の検出の上で、ソフトウェアユーティリティはユーザに１セットの１つ以上のオプションで７６７のメモリからデータを再ルーティングすることを初めに促すことができ、ユーザ選択／仕様に応えて、ホストシステムのランタイムの間、メモリを受動的に退避する。したがって、ソフトウェアユーティリティは、７６９でユーザに２回目の（例えば、退避に関連する所定の条件が満たされた後に）１つ以上の付加的なオプションの１セットを促し、例えばこれらは、（ｉ）メンテナンスイベントのシステム性能監視を行い、および／またはメモリの内容が格納システムの素子のもう別の１つへ移動および再配置されるメモリの能動的退避を行うことを含むがこれに限定されない。以下に述べるように、上述のユーザインターフェースいおよび関連する機能は、ソフトウェアプログラムのコンピュータ／プロセッサ実行（つまり、可読媒体機器上に格納することができる実行可能な命令）で実装すことができる。例えば、アニールマネージャーはオペレーティングシステムに関連する設定／管理ツールの一部となることができる。少なくとも一実施形態において、アニールマネージャーはユーザが見積もり残デバイスライフタイムへの定期的にアクセスすること、および／またはメンテナンスイベントの必要性の自動検出を待つことなしにユーザ指示のアニールを実装することを可能とすることができる。
【０１３９】
アニール回路
図１への参照において上述されるように、選択集積回路デバイスをアニール温度に加熱するために使用されたアニール回路は、オンダイ、インパッケージ、またはインシステム実装することができる。図２６はフラッシュメモリシステムの実施形態を図示する、例えば、アニール回路にインシステムとインパッケージ組み合わせを併用する。さらに具体的に、フラッシュコントローラ７８０は、１つ以上のフラッシュメモリをパッケージ内で逐次的にまたは同時に加熱するために使用される各インパッケージヒーターで、加熱制御および／または電力ををコントロール経路７８４を介しインパッケージヒーター７８７の１セットへ提供するヒーター／コントローラデバイス７８１（例えば、それ自体集積回路である）に、アニール制御インターフェース７８２が備わる。ヒーター／コントローラ、および／またはインパッケージヒーターの１セットは、電源論理レベル集積回路に（または少なくとも検出された、または区分された供給によって、および／またはヒーターロードの電力供給が可能な供給によって）使用されるそれらより高電圧（ＶＡ）で電力供給され、それらはしたがってアニール操作に必要不可欠な電力を届ける能力が特別に備わる。
【０１４０】
示されるとおり、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）７８５またはその他の種類のメモリは、スクラッチメモリ（スクラッチメモリを交互にフラッシュコントローラ内に含むことができる）を備えるため、インターフェース７８６を介しフラッシュコントローラに連結することができ、１つ以上の高速インターフェース（例えば第２世代、拡張された周辺構成相互接続バス（ＰＣＩｅ  Ｇｅｎ２）があるがこれに限定されない）１０６を、１つ以上のホストデバイスがフラッシュコントローラとフラッシュメモリシステムへアクセスすることを可能とるよう提供することができる。コマンド、アドレスおよびデータ経路１０８は、システムアプリケーションに適切であるあらゆる接続形態に従ってフラッシュメモリデバイスとフラッシュコントローラ７８０間で連結することができる。
【０１４１】
図２７は、インパッケージ加熱構造を有し、図２６のフラッシュメモリシステム内において使用することができるマルチダイフラッシュメモリパッケージ８００の実施形態を図示する。示されるとおり、フラッシュメモリパッケージは、多重層（積層）回路基盤８０１に積み重なり、それぞれダイアタッチ加熱ブロック８０５を介してに取り付けられた４つのフラッシュメモリダイ８０３１〜８０３４の１セット（それ以上または少ないダイが提供される場合もある）を含む。多重層回路基盤は、ワイヤーボンド８０７またはダイ相互接続パッドがメモリダイ自体上でもう片側パッドに連結する他のダイ相互接続構造と共に、露出した回路基盤の表面のダイ相互接続パッドがはんだくず８１５または回路基盤の下面上で他の回路基盤相互接続構造へ結合するための導電性配分構造を含む。積み重ねたダイ８０３およびダイ相互接続構造８０７は、鋳造８０９または他の筺体によって封入することができる。
【０１４２】
一実施形態において、詳細図８１０に示すように各ダイアタッチ加熱ブロック８０５を実装する。すなわち、最上層８１２は厚さおよそ１２．５から２５ミクロンの熱伝導性ダイアタッチテープまたはフィルムから形成されることができ、およそ２ワットメートル＊毎度ケルビン（Ｗ／ｍＫ）の熱伝導性定数（「ｋ」）を有する。示されるように、加熱ブロックまたは素子自体は中間層８１４を形成し、厚さおよそ２５から５０ミクロンのシリコンスペーサ（例えば、熱生成抵抗体を形成する）、あるいはポリイミド／ＦＥＰ  Ｔｈｅｒｍｏｆｏｉｌ（商標）ヒーター（厚さおよそ７５ミクロン）、または厚さおよそ１から５ミクロンのシリコン・オン・インシュレータ（ＳＯＩ）層のうちのいずれかの１つ（またはそれらの組み合わせ）によって実装することができる。「Ｐｏｌｙｉｍｉｄｅ／ＦＥＰ  Ｔｈｅｒｍｏｆｏｉｌ」および「Ｓｉｌｉｃｏｎｅ  Ｒｕｂｂｅｒ  Ｔｈｅｒｍｏｆｏｉｌ」は、Ｍｉｎｃｏ  Ｃｏｒｐｏｒａｔｉｏｎ（Ｍｉｎｎｅａｐｏｌｉｓ，Ｍｉｎｎｅｓｏｔａ）の１つ以上の商標によって保護されることができ、およびシリコン・オン・インシュレータ層の実施例はＳｉｌｉｃｏｎ  Ｇｅｎｅｓｉｓ  Ｃｏｒｐｏｒａｔｉｏｎ（Ｓａｎ  Ｊｏｓｅ，Ｃａｌｉｆｏｒｎｉａ）によって製造されたものを含むことに留意されたい。最下層６は１２．５から２５ミクロンの範囲であり熱伝導性定数がおよそ０．２Ｗ／ｍである断熱ダイアタッチフィルムまたはテープから形成することができる。ここで留意すべきは、厚み、熱伝導性定数、数量および各ダイアタッチ加熱ブロックの層の材料／構造を実装することを、実施例のみとして提供し、意図した本開示の範囲から逸脱することなしに代替実施形態に変化する可能性がある。さらに一般的に、図２７に示される積み重ねたダイパッケージは図２６のシステム内において使用することのできるインパッケージ加熱装置における１つのみの実施例である（または本開示で記載されるメモリシステムのその他）。上記のインシステムおよびオンダイ加熱装置を含む他の加熱装置は代替実施形態において採用することができる。
【０１４３】
電子表示−コンピュータ可読媒体
注意すべきは、ユーザインターフェースを提供すること、ユーザ入力を受信すること、および実行する基本アニール管理操作を実行することのために用いる図２３のユーザインターフェース６８０および潜在プログラムコード（つまり、命令のシーケンスおよび関連データ）は、後で検索できるように、また、専用または汎用コンピュータシステムの１つ以上のプロセッサまたは一般電子製品もしくは装置内における実行するために、１つ以上のコンピュータ可読媒体上に記録することが可能である。このような命令およびデータが存在するコンピュータ可読媒体は具体化されてもよく、様々な形で機械読み込み可能な記憶媒体を含むが、これに限定されない。このような機械可読媒体の実施例は、例えば、その命令を機械の完全または部分制御下で抽出することができるコンピュータ、またはその他の物理デバイスの一種内におけるフロッピー（登録商標）ディスク、ＣＤ、ＤＶＤ、アクティブＲＡＭのような光学の、磁気の、または半導体の記憶媒体を含むが、これに限定されない。
【０１４４】
本明細書に開示される種々の回路は、その挙動、レジスタ転送、論理構成要素、トランジスタ、レイアウト幾何学形状、および／または他の特徴の観点から、データおよび／または様々なコンピュータ可読媒体内で具体化されるインストラクションのように、本明細書に開示される様々な回路はコンピュータ支援ツールを使用して記載および表現（または、描写）されてもよい。それにかかる回路表現が実装されてもよい、ファイルおよび他のオブジェクトのフォーマットは、Ｃ、Ｖｅｒｉｌｏｇ、およびＶＨＤＬ等の挙動言語対応フォーマット、ＲＴＬ等のレジスタレベル記述言語対応フォーマット、およびＧＤＳＩＩ、ＧＤＳＩＩＩ、ＧＤＳＩＶ、ＣＩＦ、ＭＥＢＥＳ等の幾何学形状記述言語対応フォーマット、ならびにあらゆる他の好適なフォーマットおよび言語を含むが、それらに限定されない。このようなフォーマットされたデータおよび／または命令を有するコンピュータ可読媒体は具体化されてもよく、上記の機械読み込み可能な記憶媒体様々な形態（例えば、光学の、磁気の、または半導体の記憶媒体）を含むが、これに限定されない。
【０１４５】
１つ以上のコンピュータ可読媒体を介して、コンピュータシステム内で受信されると、前述の回路のかかるデータおよび／または命令ベースの表現は、ネットリスト生成プログラム、場所およびルートプログラム等を含むが、それらに限定されない、１つ以上の他のコンピュータプログラムの実行と併せて、コンピュータシステム内の処理エンティティ（例えば、１つ以上のプロセッサ）によって処理され、かかる回路の物理的明示の描写およびイメージを生成してもよい。かかる描写およびイメージは、例えば、素子製造プロセスにおいて、回路の種々の構成要素を形成するために使用される、１つ以上のマスクの生成を有効にすることによって、その後、素子製造において使用されてもよい。
【０１４６】
前述の説明および付随の図面では、特定の用語および図面記号が、本発明の完全な理解を提供するために記載された。いくつかの事例では、用語および記号は、本発明を実践するために要求されない、特定の詳細を含意する場合がある。例えば、特定の数のビット、信号経路幅、信号伝達または動作周波数、構成要素回路または素子等のいずれも、代替実施形態において、前述のものと異なってもよい。その上、回路素子間または示されるもしくは多心信号線として記載される回路ブロックの相互接続は、代替として単心信号線であってもよく、単心信号線は代替として多心信号線であってもよい。シングルエンドとして示されているもしくは記載されている信号および信号経路は、差動であってもよく逆の場合もまた同様である。同様に、記載されたまたはアクティブハイまたはアクティブローの論理レベルを有するよう描かれた信号は、代替実施形態において逆論理レベルを有することができる。集積回路デバイス内の構成要素回路は、論理かつアナログ回路を実装してもよい金属酸化膜半導体（ＭＯＳ）技術、バイポーラ技術、またはその他の技術を用いて実装することができる。用語に関しては、特定の条件を示すために信号がローまたはハイ論理状態になる場合（または、充電されてハイ論理状態になった場合もしくはまたは放電されてロー論理状態になった場合）、信号は「アサート」と呼ばれる。一方で、信号がアサート状態以外の状態（ハイまたはロー論理状態、またはオープンドレインまたはオープンコレクター条件のような信号駆動回路がハイインピーダンス条件に推移した場合に起こる可能性のある浮遊状態を含む）になる（または充電もしくは放電）ことを示すため、信号は「アサート停止」といわれる。信号駆動回路は、信号駆動回路がその信号を信号駆動回路と信号受信回路の間で連結した信号線上にアサート（または、明示的に記載または文脈によって示される場合、アサート停止）すると、信号を信号受信回路へ「出力」することになっている。信号線は、信号線上にアサートされる時「アクティブである」といわれ、その信号がアサート停止される時、「非アクティブである」といわれる。さらに、信号名につけられたプレフィックス記号「／」は、その信号がアクティブローの信号（つまり、アサート状態が論理ローの状態）であることを示す。信号名上につけられた線は（例えば、‘ ’）アクティブローの論理信号を示すのにさらに用いられる。用語「連結される」は、本明細書では、直接接続ならびに１つ以上の介在回路または構造を通した接続を表すために使用される。集積回路デバイス「プログラミング」は、例えば、ホスト命令に応答して、レジスタまたは他のデバイスの格納回路に制御値をロードする、そしてそれに従ってデバイスの操作可能な態様の制御、デバイス設定の確立、またはワンタイムプログラミング動作（例えば、素子生産の際、構成回路内のヒューズを飛ばす）を通したデバイスの操作可能な態様の制御、および／またはデバイスの１つ以上の選択されたピンまたは他の接続構造を基準電圧線（また、均圧環とも称される）に接続し、特定の素子構成または素子の動作態様を確立することを含んでもよいが、それらに限定されない。用語「例示的」は、選好また��要件ではなく、実施例として表すために使用される。
【０１４７】
前述の原理の様々な実施が起こるであろうことも当業者に容易に評価されるべきである。
【０１４８】
例えば、記載されるように、上記に提供された受動的退避技術を、後の交換または他のメンテナンスのためにデバイス（例えば、不揮発性メモリ）の整備に用いることができる。上記に触れたように、このような退避に適用できる技術は、画期的なでき事またはユーザ指示の実装に応えて要求されるかつ引き起こされる場合、能動的退避が続く受動的退避を含む次第に発展した退避を含むことができる。これらの技術はハードウェア（アニールコントローラのような）によってソフトウェアにアンロードされたこれらの機能のいくつか、ほどんど、または全てを用いて管理することができる。上記に記載された工程からの他の特性は、これら技術と適切に組み合わせることができる。
【０１４９】
アニール可能なデバイスおよびアニールコントローラに基づく他のアーキテクチャをさらに使用することもできる。例えば図２６に例示されるように、システムはメモリコントローラ、多層アニール可能なデバイス（例えば、加熱素子を有する集積回路）、およびそれぞれのアニール可能なデバイスのための加熱素子回路の制御経路を有するアニールコントローラを備えることができる。アニールコントローラはとりわけ各アニールプロセスを駆動しヒーター制御回路の機能を果たすために使用された比較的高電圧の補給品を制御することができる。高電圧補給品をアニールコントローラと一体化する、または分離したチップ（ＩＣ）を介して実装することのどちらかを実現でき、アニールコントローラをメモリコントローラと結合することができる、または分離ＩＣ内に実装することもできる。
【０１５０】
また、上述の技術のいずれをも、メモリがメンテナンスイベントの必要性を検出する上でユーザが行動を起こすことを可能とする、およびあらかじめ定められたまたはプログラム可能な画期的な出来事（例えば、アニール、またはより緊急性となる他のメンテナンス）において、ユーザが行動を起こすことを可能とする多重の素子格納システムの１つの素子であるメモリメンテナンスイベントの必要性を監視するデバイス内に実装することができる。このようなシステムは、適切なソフトウェアを実行する。汎用コンピュータシステムを含むことができる。ユーザへは、システムのランタイム間のメモリの受動的または能動的退避を行うため、そのメモリからの再ルーティングデータにおける１つ以上のオプションの１セットが提供されてもよい、例えばユーザは、同一階層、第２のストレージ、もしくはコントローラ「スクラッチ」メモリ内の一時的ストレージ内における他のデバイス（例えば、メインメモリ内のフラッシュデバイス）への退避、またはキャッシュすることを含む退避の方法論を選択することができる。一実施例において、これらの機能をコンピュータオペレーティングシステムの一部として、または既存のコンピュータシステムへのインストールのための配布されたソフトウェアとして提供することができる。
【０１５１】
上記に例示された原理の別の形態は、階層の１つで行われているアニールサイクルでメモリの多重の階層が管理される実施形態であり、退避および／またはデータは、メモリにおける他の階層の１つに依存しているアニールに続いて復元する。例えば、メモリの他の階層がプロセッサキャッシュおよび任意の第２のハードディスクストレージを含むことができる一方、上記に紹介したようにアニール可能なデバイスはメインメモリの一部または全てを構成する多重のフラッシュデバイスを含むことができる。このような実装は、ライフタイムに効果的なポータブルデバイスを拡張するためのアニールまたはメモリ交換の使用で不揮発性のメインメモリ（例えば、携帯用またはラップトップコンピュータ）を起源とするポータブルデバイスの開発を促進する。
【０１５２】
別の実装において、これらの技術は最大許容書き込みサイクル、時間周期、測定された基準、または上述の他のパラメータを使用することに基づきユーザに残りのデバイスライフタイムの表示またはゲージ（例えば、統計図表）を表示するソフトウェアユーティリティで使用することもできる。このようなゲージはさらに、データ退避または別の方法として交換またはメンテナンスのためのメモリを整備することを選択的に実行する論理を採用することもできる。このようなソフトウェアユーティリティを、オペレーティングシステムの一部として配布するか、または独立したソフトウェアとして配布することが可能であり、アニール能力があってもよく、なくてもよい。
【０１５３】
一般的に、上記に提供された本原理は、インシステムアニール、またさもなければ、メモリ内容を退避するアニールまたはメンテナンスの実行、およびメモリを補充するメモリデバイスのメンテナンスの適切な実行の方法を提供する。いくつかの実施形態のため、退避ステップをアニールに先立って実行してもよく、あるいは、他の実施形態において（例えば、ＲＡＩＤシステムのようにデータのバックアップが既に存在する）、退避ステップは後のアニール（または後のメンテナンスステップ）、つまり、事前の退避がないこと、補給ステップを通して再構築される冗長性と、退避の変わりに置換することができる。これらの技術をフラッシュメモリで、またはメモリの他の形態で適用することができる。
【０１５４】
本発明がそれらの具体的な実施形態を参照して記載されている間、本発明の広範な精神および範囲から逸脱することなく様々な修正および変更を行うことができるのは明らかであろう。例えば、あらゆる実施形態の特性または態様は、実施形態のその他と組み合わせて、または同等の特性またはそれらの態様に代えて、少なくとも実行可能なところにおいて適用してもよい。したがって、本明細書および図面は説明上のもので制約的なものでない。
【図１】
2013502647.tif 000003
【図２Ｂ】
2013502647.tif 000004
【図５】
2013502647.tif 000005
【図６Ａ】
2013502647.tif 000006
【図６Ｂ】
2013502647.tif 000007
【図７Ａ】
2013502647.tif 000008
【図７Ｂ】
2013502647.tif 000009
【図７Ｃ】
2013502647.tif 000010
【図７Ｄ】
2013502647.tif 000011
【図８】
2013502647.tif 000012
【図９Ａ】
2013502647.tif 000013
【図９Ｂ】
2013502647.tif 000014
【図１０Ａ】
2013502647.tif 000015
【図１０Ｂ】
2013502647.tif 000016
【図１０Ｃ】
2013502647.tif 000017
【図１１Ａ】
2013502647.tif 000018
【図１１Ｂ】
2013502647.tif 000019
【図１１Ｃ】
2013502647.tif 000020
【図１１Ｄ】
2013502647.tif 000021
【図１２】
2013502647.tif 000022
【図１３】
2013502647.tif 000023
【図１４】
2013502647.tif 000024
【図１５】
2013502647.tif 000025
【図１６】
2013502647.tif 000026
【図１７】
2013502647.tif 000027
【図１８】
2013502647.tif 000028
【図１９】
2013502647.tif 000029
【図２０Ａ】
2013502647.tif 000030
【図２０Ｂ】
2013502647.tif 000031
【図２０Ｃ】
2013502647.tif 000032
【図２０Ｄ】
2013502647.tif 000033
【図２０Ｅ】
2013502647.tif 000034
【図２１Ａ】
2013502647.tif 000035
【図２１Ｂ】
2013502647.tif 000036
【図２１Ｃ】
2013502647.tif 000037
【図２１Ｄ】
2013502647.tif 000038
【図２１Ｅ】
2013502647.tif 000039
【図２３Ｃ】
2013502647.tif 000040
【図２５Ａ】
2013502647.tif 000041
【図２６】
2013502647.tif 000042
【図２７】
2013502647.tif 000043
【図２Ａ】
2013502647.tif 000044
【図３】
2013502647.tif 000045
【図４】
2013502647.tif 000046
【図２２】
2013502647.tif 000047
【図２３Ａ】
2013502647.tif 000048
【図２３Ｂ】
2013502647.tif 000049
【図２４】
2013502647.tif 000050
【図２５Ｂ】
2013502647.tif 000051
【国際調査報告】
2013502647.tif 000052
2013502647.tif 000053