使用劣化構成要素のユーティリティを拡張するためのインサイチュアニール操作を実行するシステムが、様々な実施形態で開示される。特に、多数の実施形態は、フラッシュメモリ構成要素(「フラッシュメモリ」は、フローティングゲートセル及び同様にSONOS(シリコン−酸化物−窒化物−酸化物−シリコン)等のような、より近代的な構造を含む電荷トラップ原理で動作する、あらゆる非揮発性のメモリを意味している。)によって形成されるアニール可能なメモリサブシステムの背景において表されるが、開示された回路および技術は、ライフタイムを増加するために、あるいはその操作がアニール操作または他のメンテナンス操作を通じ改善されることができる、あらゆる構成要素の操作を改善するために、より広く適用される可能性がある。
明らかになるように、代替的種類のアニール可能なデバイスに、あるいは将来開発されるアニール可能なメモリデバイスにおいてさえ適用可能であるか、または可能ではない、アニール可能なメモリサブシステム内に、いくつかの課題が提示される。例えば、以下に記載の実施形態において、概して、アニール操作を受けている(つまり、「アニール」を受けている)メモリデバイスがいくつかのまたは全ての格納されたデータを喪失し、長時間の間読み込みアクセスおよび書き込みアクセスが使用不可能になることが想定される。したがって、アニールされるメモリデバイスから代替ストレージへのデータの移行(または退避)を管理することが、以下に記載のいくつかの実施形態の特性である。処理状態を把握しない回路(つまり、データが格納されていない)の性能を改善するため、またはアニールを通じてデータを確実に保持する能力があるメモリ構成要素に適用されるアニール操作においてのように、これらの想定が適用されない場合、データ移行が省略されることがあり、それゆえアニールを実行するために行われる操作のシーケンスが変更される。逆に、本明細書に記載のデータ移行管理技術は、アニールアプリケーションに限定されず、より一般的にはメモリシステム内の1つ以上のメモリデバイスからデータを退避させるために適用することができ、それによって作動中のメモリデバイスの除去、欠陥のある(または疑わしい)メモリデバイスの隔離、メモリデバイス内でデータ損失をもたらす場合がある操作(メンテナンスまたは他の)の実行、メモリデバイスを読み込みおよび/または書き込みアクセス不可能にする場合がある操作の実行等を可能にする。
ランタイムアニール可能なシステムの概説
図1は、ホストプロセッサまたはコントローラ101およびランタイムアニール可能なメモリシステム103を含むランタイムアニール可能なシステム100の実施形態を図示する。ランタイムアニール可能なメモリシステム103は、それ自身が1つ以上のメモリコントローラ105およびアニール能力のあるメモリサブシステム107を含む。第1のアニール能力のあるメモリサブシステム107に焦点を当てると、アニール能力は、集積回路メモリダイ内に一体化されるアニール回路(オンダイアニール回路)、1つ以上の集積回路メモリダイとともに集積回路パッケージの内に一体化されるアニール回路(インパッケージアニール回路)、および/または集積回路メモリダイもしくはパッケージと別個に形成されるが、極めて接近して配置されるアニール回路(インシステムアニール回路)によって実装される可能性がある。一般的に、アニール回路は3つの基本構成要素を含み、それらのうちのいずれかまたは全てがオンダイ、インパッケージ、またはインシステム式であってもよく、3つの基本構成要素は、所望のアニール温度または温度のシーケンスに集積回路ダイを加熱するように電力供給されてもよい加熱要素(または複数の要素)と、所望のアニール温度を生成し、加熱要素の電源を選択的にオンまたはオフにする様式で加熱要素に電力を送達するための電力制御回路と、アニール操作を実行する(加熱要素の電源をオンにして、所望のアニール温度またはアニール温度のシーケンスに達するように必要に応じて電力を送達する)ため、また望ましい場合は、アニール操作を終了または中断するために電力制御回路に適用される場合があるコマンドを受信するためのインターフェース回路と、である。アニール操作の持続時間は長さで固定されてもよく(例えば、アニール温度が、アニール操作を実行するためのコマンドに応えて所定の時間適用される)、明示的なアニール開始およびアニール終了コマンドによって制御されてもよく、または、アニール回路内の制御レジスタにプログラムしてもよい。レジスタをプログラムすることにおいては、外部的制御または選択の影響を受けやすいアニール操作のあらゆる態様(例えば、アニール温度、持続時間、頻度、トリガーとなるイベントの仕様等)は、明示的なコマンド、あるいはインターフェースまたは電力制御回路の一部を形成するレジスタ内で設定をプログラムすることによって制御される可能性がある。
オンダイ実装の場合においては、オンダイアニール専用回路が供給されることができ、および/または追加の既存回路構成要素がアニール操作を支持するために適用されることができる。一例に、ワードラインまたはビットラインは、PCT公開第WO2008/067494号(PCT出願第PCT/US2007/085979号の公報)において記載の通り、加熱要素としても使用されることがある。
インパッケージ実装とともに、1つ以上の個別に制御される加熱要素は、パッケージ内で優先順位を付けられたアニール(つまり、ダイずつ)を可能にするための各集積回路メモリダイ(1つまたはたくさんの)と隣接して配置されることがある。また、全集合または大量のインパッケージメモリダイは、加熱要素単独または集合的に電力を供給される加熱要素グループによって同時にアニールされる場合がある。いずれにせよ、電力制御、および/またはインターフェース回路は、加熱要素と一体化される、または個別に提供される(例えば、パッケージの外側に配置され、またはパッケージ内で他の集積回路により提供され、および/または個別構成要素によって提供される)可能性がある。
メモリデバイス(メモリデバイスは集積回路メモリダイまたは1つ以上のメモリダイを含むパッケージを意味する)から部分的または全体的に切り離して実装されたアニール回路は、例えば、メモリサブシステムを形成する1つ以上のメモリデバイスの真下のプリント回路基板(例えば、マザーボード、ドーターボード、ラインカード、メモリモジュール等)に配置されるか、あるいは、個々のメモリデバイスまたはメモリデバイスのグループ上に配置されるかそれを包囲する構造であってもよい。インパッケージアニール回路と同様に、電力制御回路、および/またはインターフェース回路は、アニール回路と一体化されてもよく、個別に提供されてもよい。例えば、電力制御回路は、メモリコントローラ自体によって提供されてもよい。より一般的には、オンダイ、インパッケージ、またはインシステム実装されているかどうかにかかわらず、メモリサブシステムのアニール能力は、所望のアニール温度に集積回路メモリダイを加熱するための、いずれの実践可能なランタイム制御可能な回路によって実装されてもよい。
ランタイムアニール可能なメモリシステム103内で、メモリコントローラ105がメモリアクセスコマンド、アドレスおよび制御信号をコマンド経路110経由でメモリサブシステム107へ発令し、対応している読み込みまたは書き込みデータが、データ経路108経由でメモリコントローラおよびメモリサブシステム107間に転送される。デバイス識別子(ID)信号またはチップ選択信号のような制御信号は、メモリサブシステム107内でメモリデバイスのすべてまたはサブセットを選択するためにメモリコントローラによって出力される場合があり、コントローラは、様々なメンテナンスコマンド(例えば、更新、消去等)および、その中にデバイスを管理するメモリサブシステムへの構成コマンドを追加的に出力することができる。
アニール能力のあるメモリサブシステム107は、アニールによる回復が可能な損傷が見られるいずれのメモリ技術によって実装されてもよいが、本明細書に記載の実施形態は、そこでそれぞれプログラム、読み込みおよび消去操作を通じてデータが書き込み、読み込みおよび消去されるフラッシュメモリデバイス(NORまたはNAND)を含むことが想定される。他の種類のメモリと対照的に、データはそのようなデバイスの所定の位置において更新されないが、むしろ代替位置へ書き換えられ、一方で最初のプログラムされた(そして現在は古くなっている)データが無効だと印を付けられ消去される準備ができている。したがって、ページテーブル111は、メモリコントローラ105(フラッシュコントローラ、ホストコントローラまたは他の種類のメモリコントローラである可能性がある)内で、データの有効な、空のおよび無効な「ページ」の物理的な位置を追跡し、ホストプロセッサ101または他のアクセス要求側からデータアクセス操作の根底にある複雑さを隠すために提供することができる。
以下に示す多数の実施形態ではフラッシュメモリを参照しているが、本明細書に記載の様々なデータ退避技術は、限定するわけではないが、システム操作中に1つ以上のメモリデバイスからデータを退避することが望ましいまたは有益であるような、ダイナミックラム(DRAM)、スタティックラム(SRAM)、ゼロコンデンサラム(Z−RAM)、ツイントランジスタラム(TTRAM)、フラッシュメモリ(ポリシリコンまたは、SONOS(シリコン−酸化物−窒化物−酸化物−シリコン)、SHINOS(シリコン−高誘電率窒化物−酸化物−シリコン)等のような他の材料を使用する電荷格納層を実装する、非揮発性のメモリ技術を含む)、強誘電体ラム(FeRAMまたはFRAM(登録商標))、磁気抵抗ラム(MRAM)、プログラム可能なメタライゼーションセル(PMC。導電性ブリッジRAMまたはCBRAMとも称する。)、相転移メモリ(PCM。PrAM、PCRAM、C−RAM等とも称する。)、抵抗ラム(RRAM(登録商標))、レーストラックメモリ、ナノラム(NRAM)その他のような、あらゆる種類の揮発性または非揮発性のランダムアクセスメモリ(RAM)を含む実質上任意のタイプのメモリ技術を搭載した任意のメモリシステムに広く適用される可能性がある。同様に、本明細書に記載のアニール操作は、時間とともに低下した性能(例えば、プログラム/消去操作またはそこで実行される、他の操作可能なイベントに応じて)を見せ、その性能はアニール操作の実行を通じて改善されることができるあらゆる種類のメモリ技術に適用されることができる。また、本明細書に表された様々な実施形態の実装は、命令論理(つまり、プロセッサまたは機械可読媒体(つまり、ソフトウェア、ファームウェア等)において提供された命令を実行している他の実行エンジン)または専用ハードウェア回路(例えば、論理回路)の観点から説明される場合がある。全ての場合において、このような実施形態は、命令論理によって独占的に、専用ハードウェアによって独占的にまたはあらゆる命令論理および専用ハードウェアの組み合わせによって実装されることができる。
図のように、メモリコントローラ105は、ページテーブル111と相互に作用するアニールコントローラ109を含み、メモリサブシステム107のアニール機能と選択的に関与する。示される特定の実施形態において、アニールコントローラ109は、メモリコマンド(例えば、フラッシュメモリシステム内のプログラムコマンド、消去コマンド、および読み込みコマンド)を伝えるために使用されるのと同じコマンド経路110を経由し、アニールコマンドまたは制御信号112(例えば、アニール開始、アニール終了および、アニール操作を制御する(例えば、温度仕様、レジスタプログラム等)ために使用される場合があるあらゆる他のコマンド)を発令する。代替的な実施形態において、1つ以上の追加的信号線によって形成された個別のアニールコマンド経路は、アニール関連コマンドを伝えるために提供される可能性がある。また、アニールコントローラは、代替的実施形態において全体的または部分的に個別に実装される場合がある。
ホストプロセッサまたはコントローラ101は、ランタイムアニール可能なシステム100のコア(または主要な)機能に関与し、1つ以上の特殊目的のまたは多目的のプロセッサ、および/または特定用途向け集積回路(ASIC)によって実装される可能性がある。一例に、ランタイムアニール可能なシステム100は、多目的なコンピュータシステム(例えば、デスクトップ型ワークステーション、またはモバイルコンピューター)、あるいは携帯電話、グローバルポジショニングシステムデバイス(または類似の携帯用デバイス)、音楽またはビデオプレーヤー、セットトップボックス、ビデオディスプレー、ネットワーク装置、または他のデータ処理を含むあらゆるデバイスのような特殊目的のデバイスの処理基盤を形成することができる。さらに、ランタイムアニール可能なシステム100は、大型システム内(例えば、固体のディスク(SSD)、画像エンジン(グラフィックスカード等で)、バックプレーン相互接続ネットワークスイッチングデバイスまたはルーティングデバイス内でブレード(例えば、ラインカード、スイッチング構造またはプロセッサ)、で採用されるためにそれ自身が構成要素になる場合がある。このような実施形態の全てにおいて、ホストプロセッサまたはコントローラ101は、大型システムの部分と見なされ、それゆえにランタイムアニール可能なシステムそれ自身と異なる可能性がある。さらに、その大型システムは、オペレータとやりとりをする構成要素(例えば、ディスプレイ、音声関連構成要素、キーボード、キーパッド、ポインター制御等)、大容量記憶装置および/または着脱式記憶装置にアクセスするための構成要素、ネットワークにアクセスするための構成要素等、任意の数の追加的な(そして示されない)構成要素を含んでもよい。
フォアグラウンドおよびバックグラウンドアニール
さらに図1を参照して、アニールコントローラ109によって指示されたアニール操作のシーケンスは、コアシステム操作が持続する、あるいはアニール操作が行われている間に保留されるかどうかに応じて、バックグラウンドアニールまたはアニールフォアグラウンドのどちらか一方に概して分類される可能性がある。図1のメモリシステム内での一般化バックグラウンドアニールシーケンス(120)において、個々のメモリIC(つまり、集積回路メモリデバイス)またはメモリICのグループは、すべてコアシステム操作の実質的中断なしに(つまり、システムのユーザ要求操作が実行を継続し、またはバックグラウンドアニールシーケンスを通じた実行を可能にされる。)、選択され(121)、退避され(123)およびアニールされる(125)。それに反して、一般化フォアグラウンドアニール(130)において、コアシステム操作は、トリガーとなるイベント(つまり、アニール操作をトリガーする)が検出される(131)と保留され、そしてメモリIC(1つまたは複数)が退避され(133)、アニールされ(135)、およびリロードされている間は保留され続ける。一般的に、フォアグラウンドアニール操作は平行して実行されるのに対して、バックグラウンドアニール操作は順に実行される。その際、あるメモリIC(またはあるメモリICグループ)は、別のメモリICが選択され、退避され、およびアニールされた後で、メモリサブシステム全体を一単位として退避およびアニールを行う。しかしながら、これらの一般的実装には例外がある。例えば、コアシステム操作は、アニール可能なメモリサブシステムなし(つまり、メモリサブシステムからのすべてのデータが、代替的あるいは、キャッシュメモリまたはバックアップメモリのような冗長ソースから入手できる、あるいはさもなければ必要とされない)で持続することができる場合は、メモリサブシステム全体は、同時に退避およびアニールされ(バックグラウンドにおいて)てもよく、本明細書ではこの操作を並行アニールと称する場合がある。一方で、メモリサブシステム内でのメモリICまたはメモリICのグループは、特にアニール可能なメモリサブシステムのための利用可能なバックアップストレージが、メモリサブシステムの全内容をバックアップするには不十分な場合は、フォアグラウンドアニールにおいて順にアニールされることができる。さらに、メモリ退避、アニール対象(アニールされるメモリデバイス)から代替ストレージへデータを転送することは、アニール対象の内容が、システム操作の部分として自然にバックアップされる場合(例えば、アニール対象の内容が、キャッシュメモリへコピーされる場合、またはRAID(安価なディスクの冗長配列)システムにおいて見られるように他のストレージデバイスから回復可能/生産可能である場合)、バックグラウンドまたはフォアグラウンドアニールのどちらかにおいて省略されることがある。
バックグラウンドアニール
図2Aは、図1のバックグラウンドアニールシーケンス120をより詳細に図示する。示される実施形態において、個々のメモリデバイスまたはメモリデバイスのグループは、ブロック121におけるアニール対象(アニールされるためのメモリIC)の選択から始まり、ブロック123における選択されたメモリICの任意の退避、そして最終的にブロック125におけるそれ自身のアニール操作で連続的にアニールされる。
対象選択
アニールされるための個々のメモリデバイスまたはメモリデバイスのグループの選択は、アニール対象を選択する事として本明細書に参照される。アニール対象選択は、固定された順番において始まり、例えば、所定の順序でメモリサブシステムにおける各メモリデバイスを通じて進み、あるいはプログラムされる、または動的に決定されさえする可能性がある。
例えば、メモリサブシステムが、用法の異なる分類を有する格納領域に、論理的に分割される(例えば、書き込み頻度の低い長期にわたるデータ格納、対、書き込み頻度の高い短期間格納)場合、プログラム可能な選択シーケンスは役立つことできる。その場合、比較的低頻度の書き込み(例えば、長期にわたる非揮発性のデータ格納)を含む用法クラスに割り当てられたメモリデバイスは、アニール頻度の低下、あるいはアニールシーケンス全体から省略される可能性があり、それにより、高水準の用法クラスにおける残留デバイスに対するアニール頻度を高めることを可能にする。同様に、中間の使用クラスに割り当てられるデバイスは、それらの高頻度使用クラスより、低頻度アニールのために選択されることがある。ある実装において、例えば、プログラム可能なレジスタは、アニールコントローラ(つまり、図1の要素109)および/または、各記憶領域に対する相対的または絶対的アニール頻度の論理的区分および仕様の定義を許可するための個々のメモリデバイス内で供給される。相対アニール頻度は、例えば、アニール優先度(例えば、最大、中間、低度、使用不能(アニールなし))を示すこと、あるいは、対象記憶領域に対する各アニールとアニールとの間においてメモリサブシステム内で完了されるアニールサイクルの総数(数が小さいほど、アニール選択の頻度が高いことを示す)によって特定されることがある。絶対的アニールは、例えば、記憶領域を対象としたアニール操作の間に経過する時間間隔および/またはプログラム/消去操作の数をプログラムすることによって、特定される可能性がある。
プログラム可能な選択またはアニール頻度が役に立つかもしれない他の状況は、メモリサブシステムが、異なる損傷プロファイル(つまり、いくつかのデバイスは、同様の用法レベルにおいて、他のデバイスに比べて損傷し尽くすのが早い。)を有するメモリデバイスによって実装される場合である。このような場合、アニール頻度は、各メモリデバイスと関連する情報、およびメモリコントローラ内でアニールシーケンスまたは頻度をプログラムするために使用される情報によって、直接的(例えば、Nプログラム/消去サイクル毎に1回のアニール)または間接的(基本入出力サービス(BIOS)または適切なアニール頻度を決定するための他の制御プログラムにおいて調べられる、デバイスタイプ)に特定されることがある。例えば、経過時間、プログラム/消去サイクル、および/またはエラー閾値検出(例えば、不良ブロックの閾値数、ビットエラー率の閾値、プログラム/消去不成功等の閾値数、および/または他のエラー閾値を検出すること)の関数としてアニール頻度を示す情報は、各メモリデバイス内に記録される、または関連するストレージ内(例えば、メモリモジュールにおける直列プレゼンス検出メモリなどにあるような)に記録される可能性があり、それゆえにシステム起動時にメモリコントローラにより読み込まる、および各メモリデバイスに対するアニール計画(またはアニールシーケンス)をプログラムするためのメモリコントローラまたはホストプロセッサにより使用される可能性がある。
動的に決定されるアニールシーケンスは、メモリ用法パターンがデバイスごとに実質的変化するが、予測または制御することが難しいアプリケーションにおいて役立つことができる。このような場合、メモリデバイスは、例えば、使用のレベル(例えば、デバイスを対象とするプログラム/消去操作数)により指示される順序、および/または時間においてアニールされるための各デバイスを選択することであり、動的に選択されることができる。上に論じられるプログラム可能な実施形態などの場合、用法測定基準は、損傷誘導操作数を絶対的にカウントすることであってもよく、またはメモリデバイスの損傷特性によって決まるものであってもよい。例えば、2,000プログラム/消去サイクルごとにアニールをすように特定される(または判定される)メモリデバイスにおいての1,000プログラム/消去サイクルは、100,000プログラム/消去限度ごとにアニールを受けるメモリデバイスにおいての50,000プログラム/消去サイクルよりも優先される場合がある。
デバイス選択順序が固定され、プログラム可能であり、または動的に決定されてもよいのと同様に、選択された(つまり、必要な場合には退避に進み、さらに、アニールへと進む)各IC内でアニール操作をトリガーするまたは開始するために使用されるイベントも同様に予め設定され、プログラムされ、または動的に決定されてもよい。所定のトリガーすることは、例えば、定期的に予定された時間間隔で選択された各デバイスに対してアニールシーケンスを開始すること、デバイスからデバイスへアニールシーケンス連続して開始すること(例えば、あるメモリデバイスに対するアニール操作の終わりから、その次のメモリデバイスにおけるアニール操作の開始への遅延なしの処理)、または1つ以上のプログラムされた閾値(経過される時間、用法(例えば、プログラム消去サイクル)、エラー率または量(例えば、ビットエラー率、プログラムエラー率、不良ブロック量等))を越えたことを検出するのに応じて既定のデバイス内でアニールシーケンスを開始すること、を含む。周期的なまたは偶発的な(またはユーザ/ソフトウェアによってトリガーされる)校正/測定は、メンテナンスの必要性を突き止めるために実行されることもある(例えば、データ保持、プログラムサイクル数、またはプログラムするために要求された時間、あるいはアニールまたは他のメンテナンスの必要性の実証的証拠として使用される可能性がある、デバイスのあらゆる他の物理的な性質(1つまたは複数)を測定すること)。測定された値または試験結果は、例えば、アニールまたは他のメンテナンス操作が必要とされるかどうかを決定するために、絶対的な、動的なまたはプログラムされたベンチマークと比較されることがある。また、そのような測定操作は、試験下のメモリデバイスの回路によって(例えば、デバイス自身の意志、または制御デバイスからの測定/校正/試験コマンドに応じて)、メモリデバイス外部の回路によって、あるいはメモリデバイス内および外部の回路、および/または命令論理の組み合わせによって実行されることができる。
発生可能な校正/測定の例としては、コントローラ(例えば、専用回路、ソフトウェア制御プロセッサ、または専用回路および命令制御論理のあらゆる組み合わせにより実装される)が、周期的にまたは特定ユーザの指示により、メモリデバイスをベンチマーク性能または性能における変化について試験することができ、例えば、書き込み(プログラム)操作あるいは消去操作を成功させるために要求されたメモリデバイスに対するプログラム検証(「PV」)サイクル数(例えば、平均、最大値、最小値または他の測定)が、ライフタイムの残留または過剰損傷を示す1つ以上の閾値と比較される可能性がある。データ校正/測定に関連するあらゆる統計的導出を使用してもよく、この例に限定するわけではないが、(例えば、ページ若しくはブロックに対する、またはメモリデバイスにおいて無作為にサンプリングされたセルに対する)書き込みまたは消去を成功させるための平均PVサイクル要求の変化を単独で、または他の測定値(例えば、書き込みまたは消去操作を成功させるために要求されたPVサイクルの標準偏差の変化)と共に使用してもよい。書き込みまたは消去操作の成功に要求された時間は、PVサイクル以外のユニットを使用(例えば、経過時間を使用)して測定されることができる。多くの他のベンチマークもまた使用されることができる。
プログラム可能なトリガー選択には、イベントのタイプ(経過時間、プログラム/消去カウント、エラー検出、校正/測定等)および/またはアニール操作をトリガーするための対応する閾値レベルの、レジスタに基づく選択(例えば、BIOSまたは他のプログラムコードを実行するホストプロセッサによる)を含んでもよい。アニール操作は、例えば、読み出されたデータにおいて閾値に相当する数または頻度のエラーを検出したこと、プログラムおよび/または消去操作を成功裏に実施することに失敗したこと、不良ストレージブロック、ベンチマークに適合する測定値/試験値が得られないこと、等に応じて、動的にトリガーされてもよい。
アニール対象の退避
アニール操作をトリガー後、ホストシステムにより後の使用のために保持され、代替的ソース内にすでに存在しないか、またはそこから再生可能ではないアニール対象内容は、代替ストレージへコピーされ(つまり、バックアップされる)、アニール対象の退避として本明細書で称される操作である。図2Aのブロック123を参照して、実際のデータ退避に先立って、代替ストレージデバイスが、退避されたデータのためのあて先(リポジトリ)を構築するために124aで選択または確認される。代替ストレージは、アニール可能なメモリサブシステム内の1つ以上の他のメモリデバイスであってもよく、またはメモリコントローラ内のスクラッチメモリ(つまり、一時的データ格納のために提供されるメモリバッファ)等のような個別のストレージであってもよく、あるいはホストシステム内または外部の全く別個のストレージであってもよい。また、代替ストレージは、予め、または動的に選択されることができる。一例に、以下に記載の多数の実施形態において、代替ストレージは、アニール能力のある(アニール可能な)メモリサブシステム内で、一番最近にアニールされた(それゆえにブランク(空の)である、またはブランクであると仮定される)メモリデバイスである。それゆえに、アニール操作をトリガーすると、アニール対象は一番最近にアニールされたメモリデバイス(前アニール対象)へのデータ転送経由で退避され、その後、アニールされた後、それ自身が次のアニール対象のための代替ストレージとなる。代替ストレージの動的選択において、アニール可能なメモリサブシステム内、またはホストシステムにおける他の場所にある格納デバイス内の他のメモリデバイスが、アニールされるデバイスの退避を支援するのに必要な容量という観点から評価され、そして1つ以上のメモリデバイスまたは他のストレージデバイスが代替ストレージを形成するために選択されることができる。これらの実施形態の例は、以下により詳細に論じられる。
受動的および能動的データ退避
データ退避操作それら自身は、自然トラフィックパターン(受動的退避)の部分としてデータが退避され、そしてそれゆえにただ単にデータを再配置するためにメモリアクセス操作を要求することをしないか、あるいは専用検索および再配置操作(能動的退避)を通じたかどうかに応じて受動的または能動的として分類されることができる。以下に論じられる多数の実施形態において、アニール対象からのデータの退避は、アニールの必要性がより緊急になるにつれて、次第により積極的になり、データ退避しない期間から、受動的退避、能動的退避へと進む。能動的退避段階それ自身内では、データ退避操作は最初にホストにより要求されるアクセスに従って実行され(例えば、ホスト要求が保留されていない場合は日和見的に退避操作を実行する)、その後、メモリサブシステムにアクセスするホスト要求とより活発に競合するように段階的に進展してもよい。さらに、能動的に退避されたデータに関して、操作は最近より以前にアクセスされたページからより最近アクセスされるページへ進む可能性があり、それゆえ、統計的に自然トラフィックパターンの一部として退避される可能性の低いページをまず能動的に退避する。退避操作の異なる各種類およびそれらの間の様々な進行は以下により詳細に論じられる。
受動的退避操作
図のように、124bで、受動的退避操作は、論理対物理のアドレス再マッピングを通じて、代替ストレージにデータを移行することを可能にするメモリアクセス操作(通常、ホストデバイスによって要求される)である。受動的退避は、ページテーブルエントリ操作を通じて通常もたらされ、アニール対象内での書き込み操作をブロックすること、および代わりに代替ストレージへそれらの操作をリダイレクトすることを含み、そしてそれらが古くなった際、アニール対象内でページをリタイアする。例えば、あらかじめ書き込まれたデータを更新しようとしている書き込み操作(つまり、更新操作)の場合は、更新されたページ(つまり、アニール対象内で有効な既存ページを取り替える、書き込みデータのページ)は、アニール対象の代わりに代替ストレージに書き込まれ、またはプログラムされ、さらに、ページテーブルを更新することによりアニール対象内の古くなったデータページを無効にし、代替ストレージ内に新規に書き込まれたページを反映させる。新規書き込みは、アニール対象に関してページの無効が発生しないことを除いて、通常同様の方法において、アニール対象から代替ストレージへリダイレクトされる(代替ストレージへ新規データを書き込むこと)。それゆえに、アニール対象内の新規書き込みをブロックすることには通常、データリダイレクトまたはバイパスが含まれる一方で、ブロック操作は、アニール対象内のデータの読み込みを防ぐことから、受動的退避の一部として見られる。
124cで示されるように、能動的退避操作は、ホスト独立型(つまり、メモリコントローラにより自律の)データ検索および書き換え操作、あるいはアニール対象から代替ストレージへデータを移動すること(再配置すること)を含む。能動的退避操作は、そのような操作が、アニール可能なメモリサブシステムへのホスト要求アクセスに従うかまたは競合するかによって、延期または競合と見なされる可能性がさらにある。一般的に、アニールの必要性が緊急でない(つまり、アニール実行の締め切りが切迫していない)場合、能動的退避がアイドル(予備)メモリアクセスサイクルの間、またはリソースが許可する場合、ホスト要求アクセスとともに平行して実行される可能性がある。一方で、アニールの必要性がより緊急の場合(例えば、プログラム/消去サイクル数が、臨界の閾値にアプローチする、エラー率が臨界のレベルに上昇する等)、アニールコントローラが、有効なメモリアクセスサイクルに対するホスト開始メモリアクセス要求と調和しながら、競合退避に着手する場合がある。それゆえに、ある場合には、アニールコントローラは、アニール対象がデータ損失または他のデバイス障害に先立って退避されるということを保証するために、ホスト要求メモリアクセスより先にアニール関連データ読み込みおよび書き込み操作を挿入することができる。一般的に、競合退避筋書きにおいてさえも、アニールコントローラは、たとえ短い間隔間の潜在的低性能でも、少なくともコアシステム操作の続行を保証するために必要とされる程度に、ホスト要求アクセスを保留すると考えられる。
アニールイベント
さらに図2Aを参照して、アニール対象内の全てのエントリが無効にされた(つまり、代替ストレージにおける更新が原因で受動的に古くなった、または能動に代替ストレージへ再配置された)という判定後、アニールコントローラは、125に示されるようにアニール対象とともに実際のアニール操作(修復的に熱すること)操作を開始することができる。アニール操作は、退避確認があり次第早急にトリガーされる可能性があり、またアニールコントローラは、アニール操作を開始する前に予定済みの時間を待ち、または所定のイベントの発生を待ってもよい。
図2Bは、図2Aの一般化アニールシーケンスの具体的な例を図示する。140で始まり、メモリサブシステム内のメモリデバイスの1つが、「オフライン」(つまり、ホストの読み込み/書き込み要求に応じてアクセスされる1セットのメモリデバイスから取り除かれる)にし、アイドル(元はオフラインであった)デバイスによって置き換えられる。141で、ページテーブルおよびメモリコントローラ内のI/O論理は、新規デバイスセット(つまり、以前のオフラインデバイスを含み、現在オフラインデバイスを含まない)への着信書き込みを再マッピングするために更新される。オフラインデバイス(アニール対象)内のページは新規データが書き込まれた(142)としてリタイアされる。決定ブロック143でオフラインデバイスが空であると判定される場合は、その後、アニール(つまり、加熱)操作が145のように、アニールイベントのシーケンスを完了するために実行される。したがって、146で、他のフラッシュデバイスが、アニール対象(次の「オフライン」デバイス)となるために選択され、アニールイベントシーケンスが140で始めることを繰り返される。
決定ブロック143へ戻り、オフラインデバイスが空でなく、147で判定されるように制限時間または他の閾値に達する(例えば、経過時間、暦時間、エラー率、エラーカウント、プログラム消去サイクル数等が所定の値に達する)場合、148で「ガーベジコレクション」が実行され、オフラインデバイスから「スクラッチ」デバイス(例えば、スクラッチメモリまたは代替ストレージ)へ残留データを移動させる。148のガーベジコレクション/データ移動後、またはその一部として、ページテーブルが149のように新規データ位置を反映するために更新される。オフラインデバイスが完全に退避されると、145でアニールが開始され、その後、146で新規アニール対象が選択され、さらに140から始まるアニールシーケンスが繰り返される。
バックグラウンドアニールサイクル
図3は、選択、受動的退避、能動的退避およびアニール段階が、独立してアニール可能な5つのメモリデバイスを有するメモリサブシステム内の各メモリデバイスに対して順番に実行される、バックグラウンドアニールサイクルを例示的に図示する。選択、受動的退避、能動的退避、およびアニール段階が、サブシステムにおけるメモリデバイスに対して順番に行われる実施形態に加え、本明細書において表示される原理を使用し、具体的に検出される必要性、例えば、あらゆる特定のデバイスに対する認識される残りのライフタイム、に応じて、これらの操作を開始させることもまた可能である。
示される実施形態において、5つのメモリデバイス、M1〜M5は、メモリデバイスの「ランク」を形成する(マルチドロップおよびマルチチャネル接続形態のような他のメモリ接続形態内でのアニール操作は以下に説明される)。より具体的には、操作可能なメモリセット(または操作可能なセットもしくはデバイスセット)として本明細書おいて言及されるメモリデバイスから動的に選択される4つで1セットのサブセットは、ユニットとして並列にアクセスされ、各回帰読み込みデータ値の4分の1の割当に貢献し、各書き込みデータ値の4分の1の割当を格納している。スタンバイメモリ(または予備メモリ)と呼ばれる残りのデバイスは、アニール対象が操作可能なメモリから選択され、データ退避が始まるまでは、メモリの読み込みおよび書き込み操作には加わらない。バックグラウンドアニールサイクルi−1の終わりには、例えば、メモリデバイスM1は、スタンバイメモリ(153)を構成し、メモリデバイスM2〜M5は操作可能なメモリセット151を構成する。示される特定の例において、各メモリデバイスは、複数の格納バンク155を有すると仮定し、有効な内容であることを示す場合は影を付け、空白または空のステータスを示す場合は影を付けていない。
バックグラウンドアニールサイクル「i」は、選択段階161iで始まる。この時点で、M2が、新規アニール対象として選択され、スタンバイメモリM1が代替ストレージとして選択される。示されるように、代替ストレージは、これから起こる退避段階の間のデータの格納および読み出しの目的で仮想デバイス(または仮想デバイスペア)を形成するために、アニール対象とペアになる。より具体的には、受動的退避段階163iの間、アニール対象内の(影を付けたストレージ配列により示される)有効データをマップする着信読み込み要求がアニール対象から読み込まれ続ける一方で、書き込み操作(新規書き込みおよび更新)は代替ストレージにリダイレクトされる。代替ストレージが密集してくるにつれて(つまり、アニール対象(M2)の無効にされた(したがって影なし)同等部分に対応する代替ストレージ(M1)の影付き部分によって示されるようなアニール対象から離されてリダイレクトされるエントリで)、読み込み要求は、有効エントリの位置によって代替ストレージおよびアニール対象の間で分割される。このように、メモリコントローラの観点からすると、代替ストレージおよびアニール対象(M1およびM2)は、本来は単一デバイスによって提供される、データ値の4分の1の割当(他の4分の3はM3〜M5によって提供される)に関与する単一仮想デバイスを構成する。それに応じて、ホスト要求のメモリアクセスは、アニール対象が退避されても、干渉されることなく(途切れなく)実行される。
さらに図3を参照すると、ホストシステムから要求される書き込み操作および更新操作の通常の順序の一部として、アニール対象内のエントリが無効にされ(「使い古され」)ながら、受動的退避(163i)が継続する。ある時点で、アニールに対する必要性が、より臨界に近づくにつれて(例えば、アニールに対してより緊急な必要性を示す閾値に達すること)、アニールコントローラは能動的退避段階(165i)へ推移し(発展し)、アニール対象を退避することを能動的に開始する。能動的退避段階の間、アニールコントローラ(メモリコントローラ内でコマンドおよびI/O回路を活用している)は、ホストコントローラ/プロセッサによる要求とは別に、アニール対象から残留データを読み出し、そのデータを代替ストレージに書き込むためのコマンドを発する。これら「再配置」操作はM2およびM1ストレージ配列内の細切れの領域によって示される。以下に説明するように、データ転送(または再配置)は、統合された読み込み/書き込み操作(つまり、対象からの読み込み/代替への書き込み)において、または、まずアニール対象からメモリコントローラ内のスクラッチメモリ(または別の一時的な格納ソース)にデータをコピーし、その後代替ストレージに書き込む、組み合わせ操作において行われてもよい。また、前述の通り、能動的再配置操作は、あまり最近使用されていない(よりコールドな)ページから、より最近使用されている(よりホットな)ページへ進行することができる。この進行は、以下でより詳しく説明される。
データ退避段階163iおよび165iを反映して、読み込み操作を仮想デバイスのメモリデバイスM1およびM2間で分割するために、メモリコントローラが、操作可能なメモリセットにおいてM1またはM2のどちらかを含むことがわかる。さらに、一実施形態では、メモリコントローラは、能動的退避段階における再配置トランザクション(M2からM1)から仮想デバイス(M1およびM2)を除く全てのメモリデバイスを排除することができる。なお、一般的な実施形態において、システムは、アニール対象となる各メモリデバイスM1〜M5を順に選択していく際、いかなるメモリデバイスも仮想デバイスに向けられる排他的トランザクションに含まれるか、分割読み込みから排除される必要がある可能性がある。それに応じて、このような場合全てにおいて、メモリコントローラは、実行される操作の本質、アクセスされるデータの位置、および所定の位置にある操作可能なメモリセットに基づいて規定されるトランザクションにおいて、メモリデバイスのどのサブセットがアクセスされるべきかを動的に判定する。一実施形態において、同じランク内(つまり、他に1ユニットとしてアクセスされるメモリデバイスのグループ)で異なるメモリデバイスまたはメモリデバイスのサブセットを動的に選択するこの能力は、メモリコントローラからそのランクの各メモリデバイスへ、独立したチップ選択ラインの設備を通じて達成され、そうすることでメモリコントローラがいかなる分割読み込み、リダイレクトされた書き込み、または再配置トランザクションにおいてもメモリデバイスの望ましいサブセット(単一デバイスであってもよい)のみを含むことができる。以下により詳しく説明されるように、メモリコントローラは、操作可能なメモリセットに連結しているデータレーンを動的に切り替えるための回路もさらに含み、操作可能なメモリセットへの書き込まれるまたはそこから読み込まれる全面的なデータ語の個々の部分の重要性の順序を保持することができる。
さらに図3について言及すると、アニールコントローラが、有効データがアニール対象において全く残っていない(つまり、アニール対象が完全に退避される、または空になる)と判定する場合、代替ストレージ(M1)および他の既に含まれているメモリデバイス(M3〜M5)は、新規の操作可能なメモリセットを形成し、そしてアニール操作がアニール段階167iにおけるアニール対象(M2)内で実行されることができる。アニール対象にアニールを行った後、バックグラウンドアニールサイクルは完了し、そして現在は空およびアニールされたメモリデバイス(M2)は新規のスタンバイメモリを構成し、そしてそれは、選択段階161i+1で始まる次のバックグラウンドアニールサイクルにおける代替ストレージとして採用されてもよい。上記で説明したように(そして図3に示されるように)、次のバックグラウンドアニールサイクル(M3がアニール対象として選択され、M2が代替ストレージである)は、以前のバックグラウンドアニールの完了後すぐに、または、所定またはプログラムされたスケジュール通りに、または前もって選択されたイベント(例えば、使用量の閾値、エラー率またはエラー数の閾値など)に応じてトリガーされることができる。
退避努力の発展
バックグラウンドアニール工程の一般的な目的は、コアシステム操作への影響を最小化することであり、それによりアニールシーケンスをシステムユーザに対して透過的な状態にする。それに応じて、上述のように、多数の実施形態においてデータ退避努力は受動的操作として可能な限り長く維持され、そしてアニールを行う期限が近づくにつれて受動的退避から次第に能動的退避に発展される。さらに、能動的退避の間、アニールコントローラはアクセスの頻度および/または最新度に基づき、データページ間を識別することができる。つまり、前述のように、アニールコントローラは、より頻繁に使用される「ホット」ページは更新操作においてやがて使い古される可能性が高いという統計学的尤度を考慮して、あまり頻繁にアクセスされていないまたはあまり最近アクセスされていない「コールド」ページを先に再配置してもよい。
図4は、退避の緊急度が発展することに対応する、アニールコントローラ(例えば、図1の要素109)内での退避状態の例示的進行を図示する。受動的退避段階180の開始時点で、退避状態(可変「EvacMode」によって表される)は、181で「受動」(「Passive」)に設定され、ブロック183で更新されるイベントカウンタ(例えば、経過時間カウンタ、エラーカウンタ、プログラム/消去カウンタ等)が決定ブロック185で受動的退避の閾値を上回ると判定されるまで、その状態にとどまる。182で示されるように、受動的退避状態にある間、アニールコントローラは、ページを自然な(例えば、ホスト要求による)トラフィックの一部として退避させ、代替ストレージへ更新をリダイレクトし、アニール対象における古いエントリを無効にする。
決定ブロック185でイベントカウンタが受動的退避の閾値を上回ったことを判定すると、アニールコントローラは、データがホスト要求されるメモリアクセスに従い、能動的に再配置される能動的退避段階186に入る。より具体的には、187で、能動的だが延期となるデータ再配置を可能にするために退避モードは能動的延期状態(Active.Defer)に設定される。このように、アイドルサイクルまたは他の時間の際に、操作可能なトラフィック(つまり、ホスト要求のメモリアクセス)との干渉がないまたはごくわずかな場合、アニールコントローラは、データをアニール対象から代替ストレージに再配置する。受動的から能動的延期状態への推移と同様に、イベントカウンタ(ブロック189において更新される)がブロック191において、より緊急の閾値(Thresh_A)に達すると判定される場合、アニールコントローラは、再配置操作がホスト要求のメモリアクセスと戦う(つまり、競合する)能動的退避状態192へ推移する。より具体的には、ブロック193で、退避モードは、能動的競合状態を特定するためにActive.DeferからActive.Competeへ推移する。能動的競合状態にある間、アニールコントローラは、アニール可能なメモリサブシステムへのアクセスに対するホスト要求と競合し、少なくともいくつかの場合において、壊滅的データ損失(またはその期限後には壊滅的なデータ損失が確実に避けられない退避期限を定義すると考えられる、あるイベント)に先立つデータ退避の完了を保証するため、ホスト要求を破棄する。アニール対象が完全に退避される(決定ブロック195)ことを判定すると、アニールコントローラは、197で非退避状態(NoEvac)に戻り、そして次のアニールされるメモリデバイス内でデータ退避が起動されるまでそこにとどまる。
延期または競合のいずれかの状態での能動的データ退避の間、操作トラフィックがアニール対象から代替ストレージにリダイレクトされる更新操作を許す際、受動的退避が継続してもよい。また、上で簡単に説明したように、能動的にデータを退避させる場合、アニールコントローラは、ホットページおよびコールドページ(例えば、ページテーブルにおいて、ページをホットまたはコールドとして(またはより細かい使用グレードで)マークする)を識別し、そしてコールドページを先に退避することができる。一実施形態において、例えば、アニールコントローラは、各active.deferおよびactive.compete状態内で、2つ以上の従属する状態(データ使用グレードの数に従って)を通じて推移する。この操作は、2つのデータ使用グレードを有する実施形態のために194に示され、そのグレードは「コールド」ページおよび「ホット」ページであり、コールドページは「ホット」ページに比べあまり最近(またはあまり頻繁に)アクセスされていない。このようにして、能動的延期状態186の間、アニールコントローラは、コールドページが退避されるactive.defer.cold状態から、ホットページが退避されるactive.defer.hot状態へ進行する。アニールコントローラは、同様に、能動的競合状態において、active.compete.cold状態から、active.compete.hot状態へ推移することができる。あるいは、コールド/ホット従属状態は、能動的延期または能動的競合状態内でのみ適用されることができる。
図5はメモリアクセス間隔中および図4の退避状態に従う、図1のアニールコントローラ(および包括的メモリコントローラ)の例示的操作を図示する。メモリアクセス間隔(決定ブロック201で判定される)の開始時点で、保留になっているメモリアクセス要求がない場合、メモリサブシステムはその間隔の間アイドル状態であると考えられ、アニールコントローラが能動的退避状態(どちらも決定ブロック203において肯定的な判定を生み出す、Active.DeferまたはActive.Competitve)の場合は、ブロック205でアニール対象から代替ストレージへのデータ転送が実行され、その際、アニール対象におけるデータページを無効にして代替ストレージ内の新規エントリを記録するため、ページテーブルに対して対応する更新が行われる。以下で説明するように、この操作は、影響を受けるメモリデバイスへつながる各データ経路の切り替え連結によって達成されることができ、したがって、アニール対象から代替ストレージに読み出されるデータの効果的な移行を可能にする。以下により詳しく説明されるように、このような「シャント転送」操作は、ソースおよび転送先のメモリデバイス内のばらばらの読み込みおよび書き込みトランザクションよりも速く実行されることができる。あるいは、データをローカルバッファまたはメモリコントローラ内のスクラッチメモリへ読み出すこと、そしてその後すぐに、または後のサイクルで、その読み出されたデータを代替ストレージに書き込むことにより、個々の読み込みおよび書き込みトランザクションを実行されることができる。
さらに図5を参照すると、保留のメモリアクセス要求がブロック201で検出され、どのデータ退避も進行していない(つまり、ブロック207での判定が、EvacModeがNoEvacとなっている)場合、メモリコントローラは、読み込みまたは書き込まれる物理アドレス(209)を決定するため、メモリアクセス要求が提供される論理アドレスを用いてページテーブルにインデックスをつけ、そして特定された格納位置(211)からデータを読み込む、またはデータを書き込む。フラッシュメモリサブシステム内の更新操作の場合は、メモリコントローラは、論理アドレスに対応するページテーブルエントリを無効にし、新しく書き込まれたデータの物理アドレスを反映するための新規エントリを作成する(フラッシュメモリで上書きを有効にするには、一般的に更新されたデータを新規ページにプログラムすること、および最終的消去のために既存および現在では古くなったページにフラグを設定することを伴うことを想起する)。進行しているデータ退避がないため、既存ページ用の操作可能なメモリを構成するものと同一のメモリデバイスが、更新されたページ用としてページテーブルにおいて特定されることができる。
さらに図5を参照すると、退避が進行中であると判定されると(つまり、ブロック207での否定的判定)、読み込みまたは書き込みアクセスのどちらが要求されるかによって、ページテーブルは要求データの物理アドレス(215)か書き込まれる格納位置の物理アドレス(223)を判定するアクセス要求において提供される論理アドレスを用いてインデックスを付けられる。メモリ読み込みの場合、要求データがスクラッチメモリ(以下に説明されるメモリコントローラ内の一時的なストレージ)に配置され、能動的退避が進行中の場合は(決定ブロック217で判定)、221で、データは、スクラッチメモリから読み出され、アニール対象から代替ストレージへのシャント読み込み/書き込み(および、再配置されたページを反映するための、対応するページテーブルの更新)と同時にホストに戻されることができる。図5において特に示されていないが、メモリコントローラは、時に、再配置操作を実行するために、ホスト要求のメモリ読み込みを一時停止することができる。例えば、退避期が能動的競合期であり、メモリコントローラが所定の(またはプログラムされた)数のホスト要求の読み込み操作が連続して実行されたことを判定する時、メモリコントローラは1つ以上のデータ再配置アクセス(アニール対象から読み込み、代替ストレージに書き込む)を、保留のホスト要求読み込みより先に挿入することができる。
決定ブロック217に戻って、要求データがスクラッチメモリ(または他の代替ソース)にない、または退避モードが受動である場合、データはブロック219において、ページテーブルによって示されるメモリ位置(アニール可能なメモリサブシステムまたはスクラッチメモリ)から読み出され、要求側へ戻される。
メモリ書き込み操作において、書き込み先がアニール対象またはスクラッチメモリ(決定ブロック225)内にある場合、ブロック233において、ページテーブルは書き込み先を代替ストレージへ再マッピングするために更新される。その後、ホスト供給の書き込みデータはページテーブルによって示される代替ストレージ内の位置に書き込まれる(ブロック235)。書き込み先がアニール対象またはスクラッチメモリ内になく(決定ブロック225での否定的判定)、退避モードが能動的競合の場合、書き込みデータはアニール対象および代替ストレージ内の再配置操作(例えばアニール対象から代替ストレージへのシャント読み込み/書き込み)と並行してスクラッチメモリに書き込まれることができ、229で示されるようなページテーブルの更新を含む。退避モードが受動または能動的延期(決定ブロック227で否定的判定)の場合、データはブロック231に示されるように、ページテーブルによって示されるメモリ位置へ書き込まれる。
図5において示されるメモリコントローラおよびアニールコントローラの特定の操作は、支持される可能性がある多くの異なるアニール可能なメモリの接続状態、およびアクセスの優先順位付け方針にについて一般化されていることに留意するべきである。メモリコントローラの特定の操作は、手近なアプリケーションがメモリサブシステムに求める特定の要求を満たすために、示されるものとは異なる可能性がある。
図6Aは、一般化されたアニールを可能にするメモリコントローラ271およびそれが支持する様々なアニール可能なメモリ接続状態を含む、アニール可能なメモリサブシステム270の実施形態を示す。メモリコントローラはホストインターフェース275(つまり、ホスト入力/出力(I/O))、メモリインターフェース277(メモリI/O)、制御論理273(アニールコントローラ274を含む)、ページテーブル279、スクラッチメモリ281、読み込み/書き込みデータ経路287、およびホストサイド283ならびにメモリサイド制御経路285を含む。メモリアクセス要求は、ホストインターフェース275(経路292を経由して)を経由してメモリコントローラ271内で受信され、ホストサイド制御経路283を経由して制御論理273へ運ばれる。制御論理273は、着信ホストアクセス要求を、対応するメモリアクセスコマンド、アドレスおよび制御信号に変換し、メモリサイド制御経路285およびメモリインターフェース277を経由する(および最後にはメモリチャネル290を経由して)メモリサブシステムへ出力するため、コマンドをスケジュールする。ホスト要求の書き込み操作の場合、書き込みデータはホストインターフェース275を経由して受信され、1つ以上の対応するメモリ書き込み(またはメモリプログラム)コマンドと合わせて転送するために、内部データ経路287(本明細書に、コントローラの内部データレーンとしても言及される)を経由してメモリインターフェース277に転送される。書き込みデータは、メモリチャネル290を経由してコマンドとデータ送信間の望ましい時差相関を構築するために、必要に応じてメモリコントローラ271内のスクラッチメモリ281または他のデータバッファ内のバッファまたはキューに入れられることができる。同様に、ホストリクエストの読み込み操作においても、読み込みデータはメモリインターフェース277を経由してメモリサブシステムから受信され、ホストインターフェースを経由して要求ホストへ戻される前に、必要に応じてメモリコントローラ271内のスクラッチメモリ281または他のデータバッファに入れられることができる。
一般的な実施形態において、ホストインターフェースを経由して受信される読み込みおよび書き込み要求は、制御論理およびページテーブル操作経由でメモリサブシステムまたは他の格納リソース(例えば、スクラッチメモリ281)内の特定の格納領域に対応する物理アドレスに変換された仮想アドレス値を含む(またはこれと関連する)。この仮想から物理へのアドレス変換は、制御論理が規定の仮想アドレスを、必要に応じて潜在的なメモリサブシステムの特殊性に適応するように物理格納位置にマッピングすることを可能にする。メモリコントローラはこうして、潜在的な格納場所の配置を仮想化し、メモリサブシステムの管理に関係する複雑さをホスト要求側から隠している。異なるメモリ技術の組み合わせで形成されているメモリサブシステムの場合、例えば、ホスト要求側は、アクセスされる様々な異なる種類のメモリの管理に必要な潜在的な詳細に関係なく、単に仮想アドレスを発行することができる。より一般的には、均一型メモリによって実装されたメモリサブシステムにおいてさえも、メモリアクセスの複雑性および制限は、アクセス要求側から隠されることができる。フラッシュメモリシステムの場合、例えば、データは一般的に所定の位置で更新されることができないため、同じ仮想アドレスに向けられる一連のホスト要求の書き込み操作は、一連の異なる物理メモリアドレスへマッピングされることがあり、この場合において、各継続的書き込み操作は、新規書き込みデータを保持するために新規物理アドレスを割り当てる一方で、前に書き込まれたデータに対応する物理アドレスを無効としてマークし、さらにいずれ消去操作を通じて再利用されるものとしてマークすることにより達成される。
図5および図6に言及すると、受動的データ退避の場合、アニール対象から代替ストレージへのデータのリダイレクトは、本来ならアニール対象に向けられる仮想アドレスを、代わりに代替ストレージ内の物理アドレスにマッピング(または再マッピング)することにより達成することができる。同様に、仮想装置ペアの場合も、メモリ読み込み要求は、ページテーブルエントリによってアニール対象と代替ストレージとの間で分割されることがある。最後に、能動的データ退避の場合、データ再配置はデータをアニール対象から代替ストレージへコピーすること(シャント読み込み/書き込みまたは個々の読み込みおよび書き込み操作を通じて)、およびアニール対象内のエントリを無効にし、代替ストレージをデータのリポジトリとして指定するためにページテーブルを更新することで達成できる。一般的に、このようなデータ退避操作は全て、アニール対象および代替ストレージの選択と同様に、アニールイベントの開始/終了そのものは、制御論理273、より具体的には制御論理内のアニールコントローラ274によって管理される。
上記のように、アニール対象および代替ストレージの選択は、対象と代替間のデータの移動と同様に、メモリシステムの接続状態によって有意に変化することができる。専門用語の問題として、図6Aにおける異なるメモリサブシステム接続状態の一般化された見解について言及すると、メモリコントローラと各メモリサブシステム間に連結される独立して制御可能なメモリチャネルの数によって、メモリシステムは単一チャネルシステム301またはマルチチャネルシステム330に分類されることができる。したがって、単一メモリサブシステム302は、単一システムにおけるメモリコントローラに連結しており、マルチメモリサブシステム(331A、331B、…)は、マルチチャネルシステムにおけるメモリコントローラに連結している。接続状態分類をさらに絞り込むと、規定のメモリサブシステムを構成するメモリデバイスは、マルチドロップメモリチャネル(320)または二地点間メモリチャネル(303)を経由してメモリコントローラに連結していてもよく、メモリチャネルそのものはスライス状であるかまたは統合されていてもよい。より具体的には、統合型チャネル接続状態において、メモリサブシステム内の全てのメモリデバイスはメモリチャネルを形成する信号線と共に連結されるのに対し、スライスチャネル構成においては、メモリサブシステム内のメモリデバイスまたはメモリデバイスセットはメモリチャネルを構成する信号線の各サブセットに連結している。305でスライス状の二地点間接続形態と接続して示される一実施形態において、メモリチャネルのコマンドとアドレス(CA)の線(つまり、コマンドおよびアドレス信号を運ぶための信号線)は、マルチメモリデバイス(3091、3092、…、309n/m)に共通して連結される一方で、各サブセットがそれぞれn/mメモリデバイス309の1つと連結された状態で、nデータラインのセットがmデータラインのサブセット(3061、3062、…、306n/m)に、スライスされる。同様に、322に示されるスライス状のマルチドロップシステム内で、nデータラインのセットは、各サブセットがそれぞれのメモリデバイスセットにマルチドロップ型で連結される状態で、mライン(3251、3252、…、325n/m)のサブセットにスライスされてもよい。逆に、315に示される二地点間統合の接続形態においては、nデータラインは全体が単一メモリデバイス317(つまり単一メモリIC)に連結しており、したがって、そのメモリコア319にアクセスすることを可能にするためにメモリデバイスのn−ビット幅のデータインターフェース(I/O318)に連結している。
スライス状の二地点間メモリサブシステム接続形態305に戻り、それぞれのデータ経路のm−ビットスライスに連結しているメモリデバイスは、同じメモリ読み込みおよび書き込みコマンドを各デバイスへ運ぶこと(例えば、特に具体的に示されない共用コマンド経路を経由して)によって、並列ユニットとして操作される。このようなユニットとして(つまり、上記で説明されたようなメモリデバイスの「ランク」として)操作されるメモリデバイスのセットは、メモリコントローラからは統合されたデバイスに見え、各メモリデバイスは、書き込み操作の際にn−ビット書き込みデータ値のそれぞれm−ビット割当を受信し、読み込み操作の際にn−ビット読み込みデータ値のそれぞれm−ビット割当を出力する。322でスライス状のマルチドロップ接続形態に示されるように、メモリデバイスの多重ランク(3231、…、323R)は、例えば、選択されたランク(3241、3242、…、324n/m)のデバイスのみがメモリ読み込みまたは書き込みコマンドに応じることを可能にするアドレス指定処理を通じて定義されてもよい。一実施形態において、例えば、各チップ選択ラインまたはチップ選択ラインのグループは、選択されたランクがメモリサブシステム内の全てのメモリデバイスに連結しているコマンド/アドレス経路を経由して提供されるメモリアクセスコマンドに応じることを可能にするために、メモリデバイス323の各ランクに連結している。
図6Bは、図6Aのアニール可能なメモリシステム270が発展される場合の、汎用化されたデータ処理システム335を図示する。図のように、データ処理システム335は、1つ以上のプロセッサ336(またはプロセッサコア)を含み、それぞれは様々な種類の内部ストレージ(例えば、レジスタファイル(Reg)、レベル1キャッシュ(L1)、レベル2キャッシュ(L2)、不揮発性格納(NV)など)と、アドレス変換回路342(例えば、図6Aのメモリコントローラ271のようなメモリコントローラ内またはそれによって実装される)および1つ以上のメモリモジュール341によって形成されるメインメモリ337と、半導体ディスク(SSD)、ハードディスクドライブ、取り外し可能な媒体(例えば、光媒体、磁気媒体など)のような1つ以上の第2の格納デバイス338とを有することがある。特に示されてはいないが、様々な追加構成要素(例えば、バスブリッジ、コプロセッサ、グラフィックコントローラ、ユーザインターフェース構成要素、接続構成要素など)が、データ処理システム内に追加で提供されることがある。このような追加構成要素は、それぞれ、メインメモリ337および/または第2の格納デバイス338をプロセッサ336と共有することができ、各追加構成要素は、アニール可能なメモリシステムによって実装される可能性のある専用メモリを、さらにまたは選択的に含むことができる。
特定の接続形態が何であれ、データ処理システム335内の様々なカテゴリーまたは分類のメモリは、規定のデータの要求側に対して格納階層を形成していると見なされるかもしれない。例えば、プロセッサ336内でのプロセッサコアの観点からすると、レジスタファイル、L1キャッシュ、L2キャッシュ、内部不揮発性メモリ、メインメモリおよび第2のストレージは、格納デバイスの階層を表し、その階層内の各階層は、一般的にそのすぐ上の階層よりも大きな格納容量を見せるがアクセス速度はより遅い。例えば、レジスタファイルは、L1キャッシュよりも小さくて速く、L1キャッシュはL2キャッシュよりも小さくて速く、L2キャッシュはメインメモリよりも小さくて速い、など。メモリの階層は、容量およびアクセス速度を越えたいくつもの特性によって区別されることができる。例えば、メモリの各階層は、一般的に、次の、より大きく/より遅い階層よりもプロセッサコアに物理的近接さがより近く配置される。また、仮想アドレス指定スキームを通じてアドレス指定される(つまり、アドレスが342のようなアドレス変換回路によって、メモリデバイス自体に適用される物理アドレスを生み出すように変換される)メモリの各階層は、メモリの別の階層によって使用されるアドレス変換テーブルとは異なる共有アドレス変換テーブルを採用することができる。したがって、メインメモリ337内に提供されるアドレス変換回路342は、メモリモジュール341(またはメモリデバイスがマザーボードに直接取り付けられるか、さもなければ取り外し可能なメモリモジュールの設備なしでシステム内に配置される際の他のメモリ構成要素)に適用する全ての物理アドレスを生み出すために使用されることができ、構成メモリデバイスはプロセッサ336の観点からはメモリの「平面」階層としてみなされることがある。第2の格納デバイス338は、メモリの単一階層またはメモリの別の階層として見なされてもよく、このような各デバイスが独自のアドレス変換回路を含む可能性を有する。
システム操作の際、メモリアクセス要求および対応するアドレスは、プロセッサ336(または他の要求側)からメインメモリ337へ、要求/アドレス経路339を経由して出力される。アドレス変換回路342は、着信「仮想」アドレスを、コマンド/アドレス(C/A)経路343を経由して順番にメモリモジュールに出力される物理アドレスに変換する。アドレス変換回路342は、チップ選択信号、タイミング信号などの様々な制御信号と同様に、C/A経路343にわたる後続の発行のための着信要求を変換および/またはキュー入力も行うより一般的なメモリコントローラ回路と関連することもできる。データはプロセッサ336とメインメモリ337間で示されるようなデータ経路340を経由して転送される、または、要求/アドレス経路上で時分割されることができ、したがって、後の経路を汎用化された情報信号経路とすることができる。データ経路340単体は第2の格納デバイス338まで及んでいると描かれるが、描かれたまたは共有されたコマンド/アドレス経路はこのような各デバイスに連結していてもよく、またはデータ経路340はより汎用化されたコマンド/データ情報を運ぶために使用されることができる。
さらに図6Bについて言及すると、アニール可能なメモリシステム270は、示されていないメモリのいかなる追加階層または分類(例えば、メインメモリ階層と2次格納階層との間、またはメモリ階層のあらゆる他の部分の間に階層的に挿入されたグラフィックスメモリまたはメモリの追加階層)と同様に、図6Bにおいて示されるメモリの全部または一部の階層を実装するために使用されることができる。特にメインメモリの場合は、メモリモジュール341に取り付けられた個々の集積回路メモリデバイス(M1−Mn)のサブセットの全部または一部は、時々本明細書に記載されるバックグラウンドおよび/またはフォアグラウンドアニール方法および支持回路を用いてアニールされる、フラッシュメモリデバイスまたは他のタイプのメモリデバイスで実装されてもよい。さらに、メモリモジュールにおいて実装される場合、個々にアニール可能なメモリデバイスは、図6Aを参照して説明されるように、メモリデバイスの各ランクがマルチドロップ型でスライスされたデータ経路と連結された状態、または各スライスされたデータ経路に二地点間接続で連結された状態で、ランクのスライスを形成することができる。さらに、データ経路340がメモリモジュールとプロセッサ間で直接拡張しているとして描かれる間、データはメモリコントローラまたは他の中間デバイスを通過および/またはそこで認識されることがある。他のメモリ階層の階層において、フラッシュメモリデバイス(他のいかなるアニール可能なメモリデバイスとも同様に、NANDタイプフラッシュデバイス、NORタイプフラッシュデバイスを含む)は、図6Aを参照して説明されるように、事実上どんな接続形態においても採用されることができる。
アニール可能なメモリシステムがデータ処理システム335内で配置されるどの階層(1つまたは複数の階層)にもかかわらず、アニール可能なメモリサブシステムを構成する個々のメモリデバイス(1つまたは複数)は、同じメモリ階層内の1つ以上の他のデバイスまたは他のメモリデバイスの1つ以上の階層へ退避されることができる。さらに、データが退避される代替ストレージの選択または特定は、構造によって決定される、動的にシステム条件に従って判定される、またはプログラムで制御される(例えば、初期構成、またはユーティリティプログラムの実行の際に指示される場合のオペレータ、またはアニールに関連する他のソフトウェアプログラムによって特定される)ことができる。さらに、このようなデータ退避は、アニールに備えた退避に限定されず、その代わりに、一般的にはメンテナンス操作のため、またはデバイスを「ホット」除去(つまり、通電時の除去)または他の理由のために利用可能な状態にするために実行されてもよい。
汎用化されたメモリシステム270の改良は、メモリシステム270の使用に応じて、規定のメモリ階層内において適している場合がある。例えば、アドレス変換回路は、プロセッサコアによって直接的、物理的にアドレス指定されたどのメモリ階層からも省略されることができる(例えば、レジスタファイルの実施形態において)。また、メモリの様々な階層が、1つ以上の集積回路ダイ(つまり、「チップ」)および、データ信号経路および制御信号経路によって相互連結されているチップのシステムの離散集合として実装されることができる上、メモリの1つ以上の階層は、システムオンチップ(SOC)内へ、または1つ以上のチップによって形成される集積回路パッケージ内に集積されることができる。
図7Aは、5つで1セットのフラッシュメモリデバイス(FD0、FD1、FD2、FD3およびFD4)に繋がる各二地点間データを経由して連結されたフラッシュコントローラ350(図6Aに示される、より一般的なメモリコントローラ271の特定の例)によって形成される、ランタイムアニール可能なメモリシステムを図示する。フラッシュコントローラは一般的に、上記のメモリコントローラ構成要素を含み、したがって、例えば、制御論理351(アニールコントローラ352を含む)、ページテーブル353、スクラッチメモリ355、コマンド経路359およびメモリインターフェース361を含む。
メモリサブシステムについては、構成要素のフラッシュメモリデバイスは、共通のコマンド/アドレス経路(図7Aには示されていない)に連結しており、メモリランク(つまり、データの各スライスを受信および出力するが、フラッシュメモリコントローラからはホスト要求の読み込みおよび書き込みアクセス目的のための単一ユニットとして見られるメモリデバイスのセット)にまとめられ、そのメモリランクは単一のスタンバイデバイスおよび4つ1セットのフラッシュメモリデバイスの操作可能なメモリセットを含む。メモリデバイスの合計数が表示の5つよりも多数または少数に一般化される場合があるため、その配置は本明細書にN+1メモリランク(操作可能なメモリセットあたりNデバイス、プラス予備1つ)またはN+1アーキテクチャとして表される。
さらに図7Aについて言及すると、ページテーブル353には、論理から物理アドレスへの変換だけでなく、規定の論理アドレスにより特定されるデータが存在しているまたはデータが書き込まれる予定の操作可能なメモリセット(つまり、アクセスされる4つのメモリデバイスのサブセット、また本明細書に「操作可能なセット」として表される)も示すアドレス変換エントリ354が追加される。それに応じて、ホスト要求メモリ読み込みまたは書き込みと関連して受信される論理アドレスは、制御論理351により、ページテーブル353にインデックスをつけるために使用されることができ、したがって、操作可能なメモリセットとそこでアクセスされる物理アドレス両方を読み出すことができる。一実施形態において、op−set値(つまり、設定可能なセットを示すコード)は、制御論理351に戻され、特定されたN+1付属メモリデバイスのサブセット(N)へのアクセスを可能にするのに必要なチップ選択信号をアサートするためにそこで使用される。ページテーブル353から読み出された物理アドレスは、コマンド/アドレス経路(特に図7Aでは示されないが、Nデバイスに連結している)へ出力され、チップ選択ラインのopset制御によるアサートにより、ページテーブル353によって特定される操作可能なセット内で受信され、それにより、付属フラッシュメモリデバイスの適正サブセット内の適正位置で実効される特定のメモリ読み込みまたはメモリ書き込み操作を可能にする。
図7Bは、図7Aと同じフラッシュコントローラ350およびフラッシュメモリサブシステムに関連して、データ退避目的の仮想デバイスを形成するためのアニール対象(フラッシュデバイスFD1)と代替ストレージの(フラッシュデバイスFD0)のペアリングを図示する。上記図3を参照、および図7Cにおいてより詳しく示されるように、新規書き込み(つまり、まだページテーブルにない論理アドレスへ向けた書き込み操作)および新規更新(つまり、ページテーブルにすでに記録された論理アドレス、したがってその論理アドレスで既存のデータを上書きするための要求へ向けた書き込み操作)は、アニール対象(この例においてはFD1)において起こることが阻止され、代わりに代替ストレージ(FD0)にリダイレクトされる。新規書き込みの場合、ホスト供給の論理アドレスに対応する新規エントリは、ページテーブルにおいて記録され、データが格納されている物理アドレスを追加され、フラッシュデバイスFD0、FD2、FD3およびFD4を操作可能セットとしてリストアップする。更新操作については、既存のページテーブルエントリ(つまり、ホスト供給の論理アドレスに対応している)は、更新されたデータが書き込まれる物理アドレスを反映するため、そしてフラッシュデバイスFD0、FD2、FD3およびFD4を操作可能セットとして記載するために修正される。現存データテーブルエントリのこの修正は、アニール対象内の既存データエントリを実質的に無効にする(つまり、アニール対象内のテーブルで特定された物理アドレスでのデータの「使い古し」を達成する)。フラッシュメモリデバイス(またはデータ更新が定位置で実行されることがないが、むしろ新規物理位置への書き込みによって影響される他のメモリタイプ)によって実装されたメモリサブシステムの場合、フラッシュデバイスFD2、FD3およびFD4へ向けられた更新が、必然的にこれらのデバイス内の未使用物理アドレスへ書き込むことを含み、更新操作に先立ってページテーブル内に記録された物理アドレス(更新前のアドレス)は、更新操作後に記録されるもの(更新後のアドレス)とは異なるだろうことに留意されたい。
メモリ読み込み操作の場合、ホスト供給の論理アドレスに対応するページテーブルエントリは、アクセスされる操作可能セットを判定し(そしてアサートされるチップ選択ラインの組み合わせを判定し)、そしてそこから読み出されるデータの物理アドレスを判定するために参照される。それに応じて、図7Dに示されるように、データはフラッシュメモリデバイスFD0、FD2、FD3およびFD4を含む操作可能セットから読み込まれる(つまり、求められたデータが既に代替ストレージに再配置されている場合)または、メモリデバイスFD1、FD2、FD3およびFD4を含む操作可能セットから読み込まれる(つまり、データがまだ代替ストレージ内に再配置されていない)ことができる。また、データがアニール対象を含む操作可能セットから読み出される場合、そのデータは後の代替ストレージへの転送を容易にするためにスクラッチメモリにコピーされることがある。その場合、図7Dに示されるように、ページテーブルに特定された物理アドレスにおけるデータのコピーもスクラッチメモリ内にある(スクラッチメモリ内のアドレスもページテーブル内に記録される)ことを示すために、フラグ(「S」)がページテーブルエントリ内に設定されてもよく、それによりデータが能動的退避操作の際にスクラッチメモリから代替ストレージに転送されることを可能にする。
図8は、新規書き込み操作および更新操作が実行されるにつれての図7Aおよび7Bのメモリサブシステム内での状態が変化する例を図示する。例示の目的で、状態370で以下の条件を仮定する。
●フラッシュデバイスFD2は、最近アニールされ、空白である(データが全く入っていない)。
●フラッシュデバイスFD3は、現在のアニール対象である。
●フラッシュデバイスFD2は、代替ストレージであり、したがってフラッシュデバイスFD2およびFD3はデータ退避目的の仮想ペアを形成する。
●フラッシュデバイスFD2のアニールの際、操作可能なメモリセットの構成要素となるフラッシュデバイスFD0、FD1、FD3およびFD4は、データ語A、B、DおよびCでストライプ状(つまり、同じ物理アドレスに含む)にされ、そのためデータ語AのデータスライスA0、A1、A2およびA3は、それぞれデバイスFD0、FD1、FD3およびFD4内に格納され、データ語BのデータスライスB0、B1、B2およびB3は、それぞれデバイスFD0、FD1、FD3およびFD4に格納される、など。
●消去操作が、デバイスFD2を含む全てのメモリデバイスにわたってストライプ状にされた物理アドレス内で進行している。
状態370にある間、プログラミング操作(つまり、フラッシュメモリサブセットへの書き込み)は新規データ語「E」(つまり、新規書き込み)をメモリサブシステム内に格納するために開始される。フラッシュデバイスFD3がアニール対象のため、デバイスFD0、FD1、FD2およびFD4は操作可能セットとして選択され、プログラミング操作がこれらフラッシュデバイスの各未使用格納領域においてデータスライスE0、D1、E2およびE3を格納するために実行される。より具体的には、フラッシュコントローラは、操作可能セット(FD0、FD1、FD2、FD4)の構成要素となるデバイスのためのチップ選択信号をアサートし、それによりプログラミングコマンドはそれらのフラッシュデバイス内でのみ受信される。また、フラッシュコントローラは、データ語「E」を形成する4つのデータスライス(つまり、E0、E1、E2、E3)を、操作可能セットを形成するデバイスに連結しているデータ経路に切り替え、それによってデータスライスが適切なデバイスへ運ばれることを保証している。
データ語「E」が操作可能セット内に格納された後、メモリサブシステムのコンテンツは、状態371に示されるような状態になる。フラッシュデバイスFD3内にスライスA2、B2、C2およびD2が格納されるとともに、フラッシュデバイスFD2内にスライスE2が格納されており、様々なデータ語A、B、C、D、Eのスライス2がフラッシュデバイスFD2とFD3間で分割されていることから、この状態により、アニール対象および代替ストレージによって形成される仮想デバイスの特性が現れている。
既存データ語「B」を更新するために実行される更新操作に応じて、メモリサブシステムは状態371から状態372へ推移する。この場合、更新されたデータ語のスライスB0〜B3は、先在データ語が無効としてマークされると同時に、代替ストレージ(FD2)を含む操作可能セットの未使用位置内に格納される。この操作によって、データ語「B」は、両方更新され(データ語「B」は、定位置に上書きされる代わりに空白の物理的位置に書き込まれる時、デバイスFD0、FD1およびFD4内の新規位置に格納されることに留意)スライスD2は、古いデータ語の無効化により、アニール対象から代替ストレージへ実質的に転送される。
メモリサブシステムは、データ語「D」の更新に応じて、状態372から状態373へ推移する。前の更新にあるように、更新されたデータ語のスライスD0〜D3は、代替ストレージ(FD2)を含む操作可能なセットの未使用位置内に格納され、その一方で先在および現在では古くなったデータ語が無効としてマークされる。データ語「B」への更新と同様に、データ語「D」への更新は、メモリサブシステム内に更新されたデータを書き込むため、およびスライスD2をアニール対象から代替ストレージに実質的に転送するため両方の目的で行われる。
状態373に達すると、データスライスA2およびC2のみがアニール対象から退避されずに残っている。能動的退避閾に達する時までに更新操作によって使い古されない場合、データスライスA2およびC2は、アニール対象から代替ストレージへ、能動的退避操作を経由して転送されてもよく、それによりアニール対象を完全に退避させ、アニール操作に備えることができる。
図9Aおよび9Bは、アニール対象から代替ストレージへ能動的にデータを退避させるために図7Aのメモリシステム内で実行されることができるデータ転送操作の例を図示する。図9Aは、データが、先ずアニール対象(FD1)からフラッシュコントローラ350内のスクラッチメモリ355に転送され(段階1)、そして後にスクラッチメモリ355から代替ストレージFD0へ転送される(段階2)二段階転送を図示する。第1段階の転送は、コントローラ主導の転送の一部として実行されることができる(したがって、能動的退避)、またはホスト要求のメモリ読み込み操作の際に達成されることができ、したがって、通常の操作トラフィックの一部として受動的に達成されることができる。
能動的退避の場合、フラッシュコントローラ350は、読み込み操作(つまり、アニール対象内でのみ受信される読み込みコマンド)の目的でアニール対象だけのためにチップ選択ラインをアサートしてもよく、したがって他のフラッシュメモリデバイス内の不必要なメモリ読み込み操作を避けることができ、それにより電力を節約することができる。あるいは、フラッシュコントローラは、操作可能なセット(つまりフラッシュデバイスFD1−FD4)内の全てのメモリデバイスにアクセスすることができ、アニール対象以外のデバイスから読み出されたデータを無視する(つまり、フラッシュデバイスFD2〜FD4からのデータを受信、保存および/または転送しない)か、読み出されたデータ語全部を保存および/転送する(つまり、内部またはアップストリームのキャッシュ操作を達成すること)。どちらのアプローチにおいても、アニール対象から読み出されたデータスライスは、スクラッチメモリ355において格納されることができ、さらに、ページテーブル353は、アニール対象内の特定のアドレスからのデータがスクラッチメモリ355にコピーされており、代替ストレージへの転送に使用可能であることを示すように更新される(例えば、図7Dに示されるようなページテーブルエントリ内のスクラッチメモリフラグを「s」に設定すること)。
受動的退避の場合、再配置されるデータスライスは、操作可能なメモリセットからのホスト要求の読み込みの一部としてアニール対象から読み出される。それに応じて、アニール対象からのスライスを含む操作可能なメモリセットから読み込まれたデータ語の全体は、ホスト要求側にメモリI/O361およびデータ読み込み/書き込み経路357を経由して転送され、アニール対象からのスライスはスクラッチメモリ355に追加で書き込まれる。能動的退避と同様に、ページテーブル353は、アニール対象からのデータがスクラッチメモリ内に存在することを示すように更新される。
さらに図9Aについて言及すると、二段階退避操作の第2の段階において、データはスクラッチメモリ355から代替ストレージ(この例ではFD0)へ、能動的退避の一部として転送される。一実施形態において、単一スライスの書き込み操作は、データを代替ストレージへのみ書き込むために実行される。もう1つの実施形態においては、アニール対象を含む操作可能なセット(つまり、「アニールセット」)から読み出された全てのデータ語は、代替ストレージを含む操作可能なセット(「代替セット」)内へ書き換えられる。このような「マルチスライス」操作は、図8への参照において説明される更新操作と似ているが、ホストデバイスよりも、むしろフラッシュコントローラにより主導される。
図9Bは、能動的退避の一部としてアニール対象と代替ストレージ間の単一段階データ転送の例を図示する。この操作は、本明細書にシャント読み込み/書き込みとして言及され、フラッシュコントローラ350は、単一スライスの代替ストレージへの書き込みFD0に続き、アニール対象FD1への単一スライスの読み込み命令を発行する(つまり、チップ選択は、アニール対象のためだけにもたらされ、N+1ランクの他のデバイスにはもたらされない)。一実施形態において、アニール対象から受信されるデータスライス(つまり、再配置されているデータ)は、アニール対象データ経路(つまり、アニール対象に連結しているデータライン)のための受信側からメモリI/O回路361内で循環(シャントされる)、それによりアニール対象から代替ストレージへの低オーバーヘッドのデータ再配置を達成する。つまり、データはアニール対象と代替ストレージの間で、図9Aの2段階転送のように、メモリI/Oインターフェース361から内部読み込み/書き込みデータ経路357およびスクラッチメモリ355への転送において発生する遅延または電力消費なしに(つまりメモリコントローラコアへの転送なしに)、転送される。
アニール対象シーケンス
簡潔な図6Aを参照すると、スライスメモリアーキテクチャ305内でnビットデータ語を構成するmビットデータスライスは、一般に互いに有意義な順番を有する。従来のメモリシステムにおいて、ここで「スライス割り当て」と参照されているメモリデバイスに対するデータスライスの割り当ては静的であり、メモリコントローラの各内部データレーンの間の専用ハードウェア接続(つまり、リード/ライト経路内のスライス伝達回路)、並びに、それに対応する外部データ経路およびメモリデバイスによって構築される。ランクごとに予備デバイスを有するアニール可能なメモリサブシステムの状況においては、しかしながら、データスライスとメモリデバイスの間の対応は動的であり、既定のメモリアクセスのために選択された操作可能なメモリセットに従って変化する。この動的スライス割り当てには、それぞれの新規アニール対象が選択される時にスライス割り当てを再割り当てするという観点において、そして、より一般的にはアニール対象進行自体(つまり、アニール対象として選択されたメモリデバイスのシーケンス)という観点において、多数の実施課題およびオプションが存在する。例えば、一実施形態において、ラウンドロビンアニール対象進行は、各異なるアニール対象に対してスライス割り当てを固定しながら実装される(つまり、メモリデバイス1から2へ、3へ...Nへと順番に進め、その後、メモリデバイス0から再び始まるシーケンスを繰り返すこと)。下記で論じるように、このアプローチは比較的に低オーバーヘッドなアニール進行およびスライス割り当て論理の利点をもたらすが、N+メモリランク(指定「N+」は本明細書において、読み込みおよび書き込みデータ語の幅に適合している操作可能なメモリセットを形成するために必要な、Nデバイスを超える、1つ以上の予備デバイスを有するメモリランクの参照のために使用されることに留意すること)を経た各進行の終わりに相当量のデータ再配置の努力を要する。代替実施形態において、振動進行はラウンドロビン/固定スライス割り当てのアプローチに比べてデータ再配置の努力を減少させるが、進行サイクルごとの一様でないアニール操作の数を生む。さらに別の実施形態においては、ラウンドロビンアニール対象進行が用いられるが、アニール対象ごとの多重の可能なスライス割り当て(このように適切なスライス割り当てを判定し追跡するために複雑さが大きくなる)を用いてデータ再配置ボリュームを減少させる。
図10Aは上述のラウンドロビン/固定スライス割り当て実施形態に準じたアニール進行およびスライス割り当てを図示する。この示す例は、フラッシュメモリデバイスFD0、FD1、FD2、FD3およびFD5によって形成される、操作可能なメモリセットごとの4つのデバイス(したがって4つのスライス)と、1つの予備デバイスとを有するN+1構造を想定する。アニール対象選択の状態ごとの進行が、左から右へ示され、アニール対象=FD1である選択状態「a」から始まり、アニール対象=FD2である選択状態「b」、アニール対象=FD3である選択状態「c」、アニール対象=FD4である選択状態「d」およびアニール対象=FD0である選択状態「e」へと進む。その後、そのシーケンスは選択状態「a」(つまり、アニール対象=FD1)で始まる新しいアニールサイクルにおいて繰り返される。各対象選択状態の操作可能なメモリセットは、メモリランクの下に「op set」(つまり、アニール対象を除いたランクのフラッシュメモリデバイス)として示され、各選択状態の仮想デバイスペアが破線内に囲まれている(365の凡例に示されるように、アニール対象および代替ストレージはデバイスの周囲を太線および破線でマークされている)。また、選択状態のデータスライス割り当ては、それぞれの4つのデータスライス(ds0、ds1、ds2、ds3)から、その選択状態で操作可能なセットのメモリデバイスへの矢印によって示される。それゆえ、選択状態a内の代替ストレージFD0およびアニール対象FD1は仮想デバイスペアを形成し、フラッシュデバイスFD0、FD2、FD3およびFD4は、新規書き込みおよび更新操作のための操作可能なセットを形成し(読み込み操作はページテーブルによって示されるデータ退避状態に従って代替ストレージFD0またはアニール対象FD1へと交互に導かれる)、そしてスライス割り当てはds0/FD0、ds1/FD2、ds2/FD3およびds3/FD4である。
図10Aをなお参照すると、スライス割り当ては、1つの選択状態から次の選択状態への移行において求められるデータ再配置努力を明確にするために「slice asn」と表記してメモリランクの下に再度記載されている(データスライスは、「0、2、3、4」のスライス割り当てが、データスライス0はFD0に割り当てられ、データスライス1はFD2に割り当てられ、データスライス2はFD3に割り当てられ、データスライス3はFD4に割り当てられることを意味するように、示される注釈で暗黙的であることに注意)。例えば、選択状態「a」から選択状態「b」への進行において、操作可能なセットでデバイスFD1は矢印2→1によって示されるように(つまり、FD2が新規のアニール対象になるように)、FD2を取り替え、データスライスds1はFD2からFD1へ再び割り当てられる。それに応じて、選択状態「b」への進行において操作可能なセットのために新しく加えられたデバイス(つまり、FD1)は、「op set」指定の下に下線(FD1には「1」)でマークされ、データスライスds1からデバイスFD1への再割り当ては同様に、「slice asn」指定の下、下線(FD1には「1」)でマークされた。一般的なアプローチは、それぞれ新規に選択されたアニール対象のデータスライスを代替ストレージに再割り当てすることなので、ただ1つのデータスライス再割り当てが選択状態「a」から「b」へ「c」へ「d」へ「e」への各状態進行で発生する一方で、このアプローチの最後には、選択状態「a」から選択状態「e」への全進行を経て全ての4つのデータスライス割り当てが1つ分ずれることが分かる。すなわち、ds1はFD2からFD1へ再び割り当てられ、ds2はFD3からFD2へ再び割り当てられ、ds3はFD4からFD3へ再び割り当てられ、ds0はFD0からFD4へ割り当てられる。それに応じて、選択状態「e」から選択状態「a」(つまり、新規のアニールサイクルに備えて)への進行時にスライス割り当ての初期状態へスライス割り当てをリセットするために、データスライスの4つ全てが366で示されるように再び割り当てられる。各データスライス再割り当ては一般的に、前にスライスを割り当てられていたデバイスから新しくスライスを割り当てられるデバイスへのデータの再配置を含むので、状態「e」から状態「a」への単一進行における全ての4つのデータスライスの再割り当ては、4つの以前の選択状態進行の4倍のデータ再配置を含む。それゆえ、比較的に低オーバーヘッド(つまり、小さな足跡)制御回路がラウンドロビン対象選択および固定スライス割り当てを実装するために提供することができる間に、そのような低オーバーヘッド制御回路は、選択状態進行の1サイクルごと(つまり、1アニールサイクルごと)に比較的厄介なデータ再配置努力という犠牲を払う。
図10Bは上述の固定スライス割り当てのアプローチ、振動進行の実施形態を図示する。ラウンドロビン固定スライスアプローチを用いるように、メモリサブシステムは、選択状態「a」から「h」としてマークされた既定のアニール対象のシーケンスを経て進行し、各選択状態のための固定スライス割り当てを有する。ラウンドロビンアプローチとは対照的に、しかしながら、ランク内の全てのN+1メモリデバイスのアニール後に進行シーケンスを繰り返す代わりに、初期方向進行に起因するスライス割り当てのどのような増分変位も復帰方向進行によって逆転できるように、進行シーケンスの方向は逆転される。図10Bのある特定の進行シーケンスにおいて、例えば、デバイスFDiからFDi+1最初に下向きに進んで、選択状態「d」の最終デバイスFD4へ達した後、進行方向がデバイスFDiからデバイスFDi−1へ上向きに進むために置き換えられる。図10Bでマークされたスライス割り当てによって示すように、下向き進行に起因するスライス割り当ての変位は、1つのスライス割り当てのみが選択状態進行ごとに変更されるために、上向き進行シーケンスによって置き換えられる。すなわち、最終選択状態「h」のアニール操作が完了すること(つまり、FD0において、全進行シーケンスの最終デバイスが見られる)および初期選択状態(a)へ戻るために進行方向を逆転することの後に、データスライスds0のみ再び割り当てられる必要がある(FD0からFD1へ)。それゆえ、エンドオブランクデバイスFD0およびFD4のアニールの後、選択進行の方向を逆転する(そしてそれによって振動進行シーケンスを実現する)ことによって、ラウンドロビン/固定スライス割り当てのアプローチのマルチスライス再割り当ておよび対応するデータ再配置負荷が避けられる。
エンドオブランクデバイスは、物理的な配置(例えば、エンドオブランクデバイスは図10Bで示されるように、メモリデバイスの列の端に物理的に配置されるものである)に基づいて判定される、または物理的な位置を考慮せずに論理的に配置される場合もあることに注意する。N個すべてのデバイスがアニールされるごとに進行方向が逆転される限りにおいて、アニール対象のシーケンスを経た逆転方向(反対方向)進行が、初期進行方向で発生したスライス割り当て変位を修復する。物理的な配置との関連で、振動進行シーケンスは、それぞれ新規のアニール対象が仮想デバイスペアを形成するために物理的に隣接したデバイスといつも組み合わされることを確かにする方法と見ることができる。それゆえ、ランクのいずれかの端にあるデバイスに及ぶと、アニール進行が逆転することにより、アニールのために次に選択されるデバイスがエンドオブランクデバイスに隣接して配置されることを確実にする。
図10Bをなお参照すると、各完成アニールサイクル(つまり、選択状態aから選択状態hへの各完成振動)におけるデバイスごとのアニール操作の数が均一でないことを見ることができる。より具体的に言うと、エンドオブランクデバイスはアニールサイクル(つまり、選択状態「a」から「h」までの完成進行)ごとに1回アニールされ、エンドオブランクデバイス間に挟まれているデバイス(「内部」メモリデバイス)はアニールサイクルごとに2回アニールされる。全体のアニールサイクルレートを決定するにあたって、すなわち、全てのデバイス選択状態を経た完成進行ごとに各デバイスが1回のみアニールされると仮定した場合の所与のデバイスの要求アニール頻度に基づいて、各デバイス選択状態に割り当てられる時間を設計(またはプログラム)するにあたって、エンドオブランクデバイスのアニールがハーフレートであることを考慮すべきである、というのがこの現象の1つの結果である。アニール操作の悪影響はほとんどの事例においてごくわずかなものであるため、結果となる内部メモリデバイスのアニールの2倍の頻度は、一般的に重要ではない。エンドオブランクデバイスのための対象アニール頻度が満たされる限り、そのシステムは無期限にバックグラウンドアニールを用いて一般的に操作される場合がある。
図10Cは上記で簡潔に言及したラウンドロビン進行、スライス割り当て検索アプローチの実施形態を図示する。この実施形態において、同じラウンドロビン対象選択シーケンスは、図10Aのラウンドロビン/固定スライス割り当てのアプローチなどで使用されるが(それゆえ、4+1アーキテクチャのための「a」から「h」を経た5つのデバイス選択状態が示され)、可変スライス割り当ては、1サイクルごとのマルチスライスデータ再配置努力を避けるために利用される。より具体的に言うと、データ書き込みのためのスライス割り当ては、書き込み操作が新規データ書き込みを含むか、前に書き込まれたデータの位置および/またはデータ内容の変更を含むか、によって動的に決定される(例えば、検索またはアルゴリズム生成を通して)。新規データ書き込み(つまり、先在するページテーブルエントリを有する論理アドレスを対象としないもの)は、選択状態に従って固定スライス割り当てが割り当てられ、それによって、新規書き込みスライス割り当てにおける決定論を規定する。図示の実施形態において、例えば、データスライスは、書き込みデータの最小桁のスライスがアニールされる次のデバイスに格納され、それぞれ次のスライスが必要に応じてデバイスNからデバイス0へ移転する連続的により高い番号のデバイスに格納されるように、デバイス昇順において割り当てられる。それゆえ、デバイスFD1がアニール対象である選択状態「a」における、スライス割り当て2、3、4、0は、いずれの新規データ書き込み(つまり、FD2のds0、FD3のds1、FD4のds2、およびFD0のds3)のためにも使用される。選択状態「b」(アニール対象=FD2)における、スライス割り当て3、4、0、1は、いずれの新規データ書き込みのためにも使用され、選択状態「c」ではスライス割り当て4、0、1、2が使用される、などである。分析的に表すと、データスライス0からn−1はフラッシュデバイスFDxからFDx+n−1にそれぞれ格納される。この場合において、インデックスx=アニール対象のインデックス+1であり、そして全てのインデックス計算はNを法とする(つまり、Nによる整数除算の後の計算結果の余りに等しく、図10Cの例示的な実施形態ではN=4である)。
新規書き込み操作とは対照的に、ホスト要求更新操作またはコントローラ主導データ再配置(つまり、まとめて変更とされる更新または再配置)は、ページテーブルからあらかじめ記録されたスライス割り当てを読み出し、その後、現在の選択状態におけるアニール対象(つまり、「現在のアニール対象」)に割り当てられたあらゆるデータスライスを、代替ストレージに再び割り当てた結果として、変更されたスライス割り当てを生成することによって達成される。したがって、更新は変更されたスライス割り当てによって示された操作可能なメモリセットに全体の更新されたデータ語を書き込むことによって完了されるが、一方で再配置は改定されたスライス割り当てに従って再び割り当てられたデータスライスにのみ書き込むことによって達成される場合がある(つまり、再び割り当てられたデータスライスはアニール対象(またはスクラッチメモリ)から読み出され、対象データ語の他のスライスの書き換えなしに代替ストレージへ書き込まれる)。
図10Cのアプローチを熟考すると、既定の選択状態におけるアニール対象を完全に退避させる時間までに、操作可能なメモリセット内の各データ語は、データ語が書き換えられた(つまり、更新されたまたは再配置された)か選択状態の間に新たに書き込まれたかどうかによって決まる多重の可能なスライス割り当ての1つを有する場合があることに気づくことがある。より具体的に言うと、既定の選択状態で書き換えられたいずれのデータ語も、スライスがデバイス昇順で割り当てられる時に、N個の可能な改定スライス割り当てのいずれか1つを使用して格納される場合がある。これを評価するために、選択状態「a」(368で示される)の空のメモリサブシステムの操作を考慮する。この事例において、全てのデータストレージ操作は新規書き込みになり、それゆえ、スライス割り当てはデバイス昇順で記録され、データスライスds0をフラッシュデバイス2(アニールされるための次のデバイス)へならびにデータスライスds1、ds2およびds3をフラッシュデバイス3、4および0へそれぞれ割り当てる。それゆえ新規書き込みスライス割り当ては2、3、4、0で示される。
その後、選択状態「b」への進行の後で、新規データ書き込みは、スライス割り当て3、4、0、1(つまり、FD3へds0、FD4へds1、FD0へds2およびFD1へds3−−フラッシュデバイス3で始まるデバイス昇順)とともに書き込まれ、変更(更新および再配置)が選択状態「a」(つまり、その状態で新規データ書き込みのみ発生した時、「2、3、4、0」)で記録された新規書き込みスライス割り当てを読み出すことおよび、アニール対象FD2に割り当てられたスライスを代替ストレージFD1に再び割り当てること(つまり、選択状態「a」から「b」への推移で見られるように「2→1」)によって実行される。それゆえ、選択状態「a」で記録された全体のスライス割り当ては「2、3、4、0」から「1、3、4、0」へ変更され、下線が再び割り当てられたデータスライスを示す。アニール対象FD2から全データが退避された後は、選択状態「a」で記録されたスライス割り当てを有するデータは残っていないことに注意。すなわち、アニール対象FD2内の全てのエントリは、ホスト要求更新操作またはコントローラ主導再配置操作を経て使い古された。したがって、ページテーブルでの全てのエントリは、選択状態「b」のために示された2つのスライス割り当てのうち1つを反映する。
選択状態「b」から選択状態「c」への進行の後、新規書き込みはスライス割り当て4、0、1、2(フラッシュデバイス4で始まるデバイス昇順)とともに格納され、データ書き換え(更新/再配置)は選択状態「b」で記録された2つのスライス割り当てのうちのどちらかを発端として発生する場合がある。それゆえ、新規アニール対象FD3へ割り当てられたスライスを代替ストレージFD2へ再び割り当てることは、選択状態「b」で新たに書き込まれたデータのためにスライス割り当て3、4、0、1の代わりに2、4、0、1をもたらし、選択状態「a」で本来は書き込まれて選択状態「b」で書き換えられたデータのためにスライス割り当て1、3、4、0の代わりに1、2、4、0をもたらす。選択状態「b」と同じように、データ退避が選択状態「c」で完了した後に、アニール対象FD3内の全ての入力は、ホスト要求更新およびコントローラ主導再配置を経て使い古される。したがって、ページテーブルでの全てのエントリは、選択状態「c」のために示された3つのスライス割り当てのうち1つを反映する。
選択状態「d」への進行の後、新規書き込みはスライス割り当て0、1、2、3とともに格納され、変更は選択状態「c」で記録された3つのスライス割り当てのいずれかを発端として発生する場合がある。それゆえ、新規アニール対象FD4へ割り当てられたスライスを代替ストレージFD3へ再び割り当てることは、選択状態「c」で新たに書き込まれたデータのためにスライス割り当て4、0、1、2の代わりに3、0、1、2をもたらし、選択状態「b」で本来は書き込まれて選択状態「c」で書き換えられたデータのためにスライス割り当て2、4、0、1の代わりに2、3、0、1をもたらし、選択状態「a」で本来は書き込まれて選択状態「b」で書き換えられ、選択状態「c」で再び書き換えられたデータ(つまり、2回書き換えられたデータ)のためにスライス割り当て1、2、4、0の代わりに1、2、3、0をもたらす。他の選択状態と同様に、データ退避が選択状態「d」で完了した後に、ページテーブル内の全てのエントリは、選択状態「d」のために示された4つのスライス割り当てのうち1つを反映する(つまり、アニール対象FD4内の全てのエントリは、ホスト要求更新およびコントローラ主導再配置を経て使い古される)。
最後に、選択状態「e」への進行の後、新規書き込みはスライス割り当て1、2、3、4とともに格納され、変更は選択状態「c」で記録された4つのスライス割り当てのいずれかを発端として発生する場合がある。それゆえ、FD0へ割り当てられた新規アニール対象であるスライスを、代替ストレージFD4へ再び割り当てることは、選択状態「d」で新たに書き込まれたデータのスライス割り当て0、1、2、3の代わりに4、1、2、3を、選択状態「c」でもともと書き込まれていて選択状態「d」で書き換えられたデータ(一度書き換えられたデータ)のスライス割り当て3、0、1、2の代わりに3、4、1、2をもたらし、選択状態「b」でもともと書き込まれていて選択状態「c」で書き換えられ選択状態「d」で再び書き換えられたデータ(二度書き換えられたデータ)のスライス割り当て2、3、0、1の代わりに2、3、4、1をもたらし、そして最後に、選択状態「a」で本来は書き込まれて選択状態「b」で書き換えられ、選択状態「c」で再び、そして選択状態「d」で再び書き換えられたデータ(三度書き換えられたデータ)のスライス割り当て1、2、3、0の代わりに1、2、3、4をもたらす。データ退避が完了し、ページテーブル内の全てのエントリは、選択状態「e」のために示された5つのスライス割り当てのうち1つを反映する(つまり、アニール対象FD0内の全てのエントリは、ホスト要求更新およびコントローラ主導再配置を経て使い古される)。
これまでに説明したスライス割り当てパターンを観察すると、いずれかの既定の選択状態においてまさにNの可能なデバイス昇順スライス割り当てパターンがある。さらに図10Cの実施形態において、既定の選択状態内のそれぞれ異なるスライス割り当ては新規書き込みスライス割り当てのローテーション(つまり、Nを法とするシフト)に対応し、各データスライスのための割り当ては、オリジナルデータの書き込み以降、選択状態進行の数(それゆえ、状態から状態への書き込み数)分、循環させられる。それゆえ、選択状態「e」のためのスライス再割り当てを見ると、1つの選択状態進行が発生した場合(つまり、データが選択状態「d」で新たに書き込まれると)、選択状態「e」のための新規書き込みスライス割り当ては、変更されたスライス割り当てをもたらすために1つ循環させられる(つまり、1、2、3、4は4、1、2、3へ循環する)。3つの進行が発生した場合(つまり、データが選択状態「b」で新たに書き込まれると)、選択状態「e」のための新規書き込み割り当ては、変更されたスライス割り当てをもたらすために3つ循環させられる(つまり、1、2、3、4を2、3、4、1へ循環する)。さらに、4つの可能なスライス割り当て(つまり、この例においてはN=4)があるので、いずれの4つの選択状態進行においても、その選択状態のための新規データ書き込みと同じスライス割り当てパターンをもたらし(つまり、1、2、3、4は4つ循環すると1、2、3、4となる)、それゆえ、ローテーションの必要性は発生しない。言い換えれば、ローテーション自体はN個の固有のスライス割り当てパターンがN+1選択状態のそれぞれのために存続できるようにNを法とし、それゆえ、N×N+1スライス割り当てパターンの合計を表す(図10Cの例におけるスライス割り当てパターン4×5=20)。アニールコントローラ(またはメモリコントローラのほかの場所)内でスライス割り当てを決定することに関して、既定の選択状態のための新規書き込みおよび変更スライス割り当ては、テーブルで見られるかまたはアルゴリズム的に生成されるかのどちらかの場合である(例えば、アニールコントローラ内での論理回路によって生成される)。どちらの場合も、ラウンドロビン選択状態シーケンスは、アニール対象選択状態のすべての単一進行での厄介なマルチデバイスデータ再配置の必要性なしに用いられる(それゆえ、各完成アニールサイクルで1デバイスごとのアニール操作の均一の数を確かにすること)。それどころか、各選択状態でのデータ再配置はアニール対象から代替ストレージへのデータ転送のみを必要とする。
図11Aはランタイム変化の操作可能なセットの管理すること、および図10A〜10Cを参照して記載されているスライス割り当てに対応することができるフラッシュコントローラ380のより詳細な実施形態を図示する。図のように、制御論理351は、ホストからメモリアクセスコマンド388(つまり、ホスト供給アクセスコマンド、「Host Cmd」)も、アニールコントローラ352から自己生成した再配置コマンド386(「Reloc Cmd」)も受信するコマンド論理回路385を含む。ホスト支給であろうと自己生成であろうと、各メモリアクセスコマンドは、対応するページテーブルエントリ395があればその検索を可能にするためにページテーブル353へ入力する論理アドレス394を含むもしくは付随する。ページテーブル自体は、検索テーブル391(LUT)と一緒にページテーブルコントローラ389(例えば、状態機械(FSM)または他の制御論理によって形成される)を含む。ページテーブルコントローラ389は、対応するエントリが記録されたかどうかを判定するために検索テーブル391にインデックスをつけることによって入力論理アドレス394に応答する。コマンド論理385がメモリ書き込みが実行されることを示し、検索テーブル389が書き込みコマンドに関連する論理アドレスに対応するエントリを含まない場合、ページテーブルコントローラ389は、書き込みコマンドを新規データ書き込みとみなし、それに応じて物理アドレス、チップ選択およびスライス割り当て信号を発行する。一実施形態において、例えば、ページテーブルコントローラ389は、制御論理351から選択状態値を受信し(つまり、現在のアニール対象選択状態を示す)、操作可能なメモリセットおよびその中の空き物理アドレスを判定するため、その情報を使用する。その後、ページテーブルコントローラ389は、制御経路359を経由して物理アドレス397を出力し(例えば、制御論理351による対応するメモリコマンド396の出力の観点を用いて望ましい時間で)、メモリデバイスFD0〜FD5の適切なサブセットが物理アドレスおよび対応するメモリコマンドを受信するのを有効にするために、操作可能なメモリセットと関連するチップ選択信号398のサブセットを起動する(制御経路359の役割と考えられるチップ選択ラインを経由して伝達する)。一実施形態において、メモリインターフェース361内の出力ドライバ327は、メモリコマンド396、物理アドレス397、およびチップ選択信号398を外部制御経路392を形成する信号線のそれぞれのセットの上に出力するために備えられる。詳細図407を参照すると、制御経路392のコマンドおよびアドレス信号線は、N+1メモリランクのフラッシュメモリデバイス(FD0〜FD4)のそれぞれのコマンド「cmd」およびアドレス「(addr)」入力へ共通して連結され、チップ選択ラインは、各フラッシュメモリデバイスのチップ選択入力「c−sel」へ連結され、それらを独立して選択可能にする。ほかの実施形態において、コマンドおよびアドレス信号線は、それぞれメモリデバイス(つまり、同じコマンド/アドレスバスへ共通して連結される多重のフラッシュメモリデバイスを有するのとは対照的に1フラッシュメモリデバイスごとの専用コマンド/アドレスバス)へ連結されることもでき、コマンド、アドレス、および/またはチップ選択ラインのどちらも排除される場合があり、そこを通じて伝達されるはずであった信号は、他の信号線セット上で時分割される。
図11Aをなお参照すると、ページテーブルコントローラ389は、特定の選択状態のための新規データ書き込みに対応するスライス割り当て値399の判定も行い、スライス割り当て値をメモリインターフェース361内で備えられるスライスステアリング回路402へ出力する(例えば、図11Aの実施形態でクロスバースイッチ「xbar」によって実装される)。図のようにスライスステアリング回路402は、内部データレーン401(内部読み込み/書き込みデータ経路357の部品)とデータI/O回路403内のデータ受信側/出力ドライバ回路404の間に連結される。この配置により、それぞれ対応する個別のデータスライス(ds0〜ds3)のN内部データレーン401は、メモリランク406のN+1メモリデバイスへそれぞれ連結されるN+1データ経路スライス(つまり、外部データ405のスライス)の適切なサブセットの上に出力される。図11Aの特定の実施形態において、例えば、前の図に記載されている例示的な5つのデバイスアーキテクチャは繰り返される、それゆえ、5つのフラッシュメモリデバイス(FD0〜4)は、既定のメモリアクセスのための操作可能なメモリセットを構成する4つのフラッシュメモリデバイス、およびアニール対象(書き込み操作の場合)または代替ストレージ(アニール対象へマッピングする読み込みの場合)を構成する残留フラッシュメモリデバイスであるN+1接続形態でまとめられる。この接続形態のメモリデバイスのそれぞれは、二地点間の配置で接続されるためと言われている、すなわち、そのような各メモリデバイスのデータレーンは、そのメモリデバイスのためにのみ設けられ、他のデバイスとは接続されない。さらに、4つの内部データレーン401は、データスライスds0〜ds3を伝達するために設けられ、ページテーブル353から備えられるスライス割り当て値399に従ってスライスステアリング回路402を経由して5つのデータI/O回路404のそれぞれのサブセットへ切替可能に連結される。この配置により、操作可能なメモリセットを構成する4つのフラッシュメモリデバイスは、メモリ書き込みコマンドおよび対応する物理アドレスを受信するために選択され(対応するチップ選択信号398のアサートを経由して)、4つの発信データスライスは、スライス割り当て値399によって制御される順番で選択された操作可能なセットへ送られる。図10A〜10Cを参照すると、例えば、アニールコントローラが選択状態「a」を特定する場合、ページテーブルコントローラは、図10Aおよび10Bのアニール進行の場合のデバイス0、2、3、4およびスライス割り当て0、2、3、4(つまり、FD0へ割り当てられるds0、FD2へ割り当てられるds1、FD3へ割り当てられるds2およびFD4へ割り当てられるds3)、または図10Cのアニール進行の場合のスライス割り当て2、3、4、0によって形成される操作可能なセットを判定(検索またはアルゴリズム生成によって)するために、その情報を使用する。新規データ書き込みの終わりに、ページテーブルコントローラ389は、入力論理アドレス394に対応する新規エントリを検索テーブル391の中へ物理アドレス、操作可能なセットおよび新たに書き込まれたデータのスライス割り当てを特定するために挿入する。ページテーブルエントリは、データ書き込み操作に先立って、それと同時に、またはその後に検索テーブル391の中で作られるおよび挿入される場合もあることに留意する。
図11Aを続けると、ページテーブルコントローラ389が、着信論理アドレス394がページテーブルエントリと適合し、ホスト指示メモリ書き込みコマンドが示されると判定する場合、更新操作は特定論理アドレスに関して実行される。その場合において、ページテーブルコントローラ389は、1スライス割り当てごとの選択状態が、固定されているか可変かどうかに従い、異なって操作することができる。固定スライス割り当てアプローチ(つまり、図10Aおよび10Bで参照して先に述べたように)の場合において、ページテーブルコントローラ389は、現在の選択状態に対応する操作可能なセットおよびスライス割り当ても、操作可能なセット内の有効な物理アドレスも判定する(例えば、テーブル検索および/またはアルゴリズム生成によって)。その後、ページテーブルコントローラ389は、制御経路359を経由して物理アドレス397を出力し、操作可能なメモリセットと関連するチップ選択信号398をもたらし、スライス割り当て値399をスライスステアリング回路402へ提供する。動的(可変)スライス割り当て実施形態の場合において、ページテーブルコントローラ389は、最後に記録された操作可能なセットおよびスライス割り当てに従って新規スライス割り当てが生成されることによって、データ更新操作を達成する。それゆえ、最後に記録された操作可能なセットが、現在の選択状態のための操作可能なセット(つまり、選択状態が特定論理アドレスのための最後のデータ書き込み操作以降進んでいない)に適合する場合、同じスライス割り当てが使用されるが、異なる物理アドレスで使用される(少なくとも図11Aの例示的なフラッシュメモリサブシステムの場合において、データはその場で更新されないため)。最後に記録された操作可能なセットが、現在の選択状態のための操作可能なセット(つまり、選択状態が進んでいる)に適合しない場合、最後の選択状態のために記録されるスライス割り当ては、検索または更新操作で使用されるための新規スライス割り当てを生成するために使用される。図10Cで示されるアプローチに続いて、例えば、最後に記録されたスライス割り当ての第1の桁および現在の選択状態は、検索テーブルにインデックスを付けるために用いることができ、それゆえに現在のスライス割り当てを読み出す。例えば、現在の選択状態が「b」の場合、先行選択状態「a」からの4つの可能なインデックスは、2→1、3、4、0あるいは0→0、1、3、4あるいは4→4、0、1、3あるいは3→3、4、0、1の通りの新規スライス割り当てをもたらす。あるいは、新規スライス割り当ては、進行カウント(つまり、データが最初に書き込まれて以降のアニール進行の数)、つまり、例えば、最後の選択状態のための新規書き込みスライス割り当ての最後の桁とあらかじめ記録されたスライス割り当ての最後の桁との間のオフセットによって、順番に判定される値の分だけ新規書き込みスライス割り当てを循環させることによって生成されることができる。それゆえ、選択状態「c」において、あらかじめ記録されたスライス割り当ての最後の桁が0、1、3、4(最後の桁=4)の場合、新規書き込みスライス割り当て=4、0、1、2が、2と4の間のオフセット(2−1=1、2−0=2、2−4=3、および2−3=4のようなモジュロ演算を使用する)の分だけ循環させられ、それゆえ、望ましいスライス割り当て値0、1、2、4を生成する。スライス割り当て生成のための様々な代替アプローチは、図10Cで示されるものとは異なるスライス割り当て進行を生産する代案を含んで用いられる場合がある。
図11Aをなお参照すると、論理アドレス394が再配置コマンド386に関連して備えられる場合、制御支持再配置操作は、特定論理アドレスに関連して実行される。この場合において、更新操作と同様に、ページテーブルコントローラ389は、1選択状態ごとのスライス割り当てが固定かまたは可変かに従い、異なって操作することができる。固定スライス割り当てアプローチ(つまり、図10Aおよび10Bで参照して先に述べたように)の場合、ページテーブルコントローラ389は、現在の選択状態に対応する操作可能なセットおよびスライス割り当ても、操作可能なセット内の有効な物理アドレスも判定する(検索および/またはアルゴリズム生成によって)。その後、フラッシュコントローラ380は、メモリ読み込みコマンドおよび再配置操作でアクセスされるメモリデバイス(1つまたは複数)に対応するチップ選択信号(1つまたは複数)と一緒に物理アドレスを出力する。再配置されるデータはそれゆえ、1つ以上の選択されたメモリデバイスから読み込まれ、代替ストレージへシャント書き込みのためにフラッシュコントローラ380へ戻される、または代替ストレージへ後で書き戻すために格納される。シャント読み込み/書き込みの場合、アニール対象(およびデータの多重スライスが再配置されている場合、他のデバイス)から再配置されるデータを受け取ると、フラッシュコントローラ380は、データが再配置されるメモリデバイス(1つまたは複数)に関連するチップ選択信号(1つまたは複数)をアサートし、選択されたデバイスでデータ書き込みを有効にするために書き込まれるために書き込みコマンドおよび物理アドレスをアサートする。それゆえ、図10Bおよび10Cの実施形態において、および図10Aの実施形態における単一スライス再配置操作(つまり、図10Aで示される「e」から「a」へを除く全ての選択状態進行)、メモリ読み込みは、再配置されるスライスを読み出すためにアニール対象で実行され、そしてメモリ書き込みは、再配置操作を完了するために代替ストレージで実行される。シャント読み込み/書き込みの場合、読み込みおよび書き込み操作は、次から次へ(つまり、データ経路405上の操作に干渉せずに)実行される場合があるので、それゆえ、ページテーブルは、物理アドレスへの変更を必要とせずに、アニール対象の代わりにスライス割り当ての代替ストレージを含むための、ページテーブルエントリの修正によって操作の完了時に更新される場合がある。二段階再配置操作(つまり、スクラッチメモリに読み出されたデータを一時的に格納し、そして代替ストレージへ後で書き戻す)の場合、ページテーブル353は、スクラッチメモリ(FIFOまたは大量のアーキテクチャは、明示的なスクラッチメモリアドレス要求を避けるために用いられる場合があるけれども、スクラッチメモリ内での格納アドレスを示す)にストレージを反映するためのデータ回復段階の後に続いて更新される場合があり、そして完成された再配置操作を反映するためにデータ書き込み段階の後に続いて再び更新される。図10Aの状態「e」から「a」への進行に示されるマルチスライス再配置操作は、新規の物理アドレスが、データ再配置(例えば、図11Aのフラッシュメモリサブシステムまたはその場所で書き込まれるデータを許可しない他のメモリ技術の場合の時)をもたらすために要求される場合もあることに留意する。
図11Aをなお参照すると、詳細図369は、有限状態機械381(またはプロセッサシーケンサーまたは他の制御回路)、1つ以上の操作カウンタ382および1つ以上のアニール制御レジスタ383を有するアニールコントローラの一般の実施形態を図示する。状態機械381は、既定のアニール操作におけるイベントシーケンスに加え、アニールサイクルにおける異なるアニール対象選択状態を経る進行をも管理するための状態間を遷移する。操作カウンタは、様々な操作およびメモリサブシステム内のイベント(例えば、メモリアクセス、プログラム/消去操作、不良ブロックまたは他のエラー/障害検出等)を追跡するために用いられ、それゆえ、アニール操作退避段階を経て進行する、デバイスの選択を行う、アニールのトリガーとなる等の時の状態機械381によって評価することができる。例えば、各対象選択状態の間にプログラム/消去サイクルをカウントすることによって、分離プログラム/消去カウントは、各メモリデバイスのために追跡され、そのデバイスでアニールをトリガーするために用いることができ、および/または受動的退避モードから能動的退避モードへの進行を管理する。操作カウンタは、それぞれのメモリデバイスで操作を追跡するために使用される多重のカウンタも含む場合がある。例えば、一実施形態において、操作カウンタ382は、各メモリデバイスのためのプログラム/消去カウンタおよびエラーカウンタも、メモリサブシステム内のメモリ書き込み操作(および/またはメモリ読み込みおよび書き込み操作の組み合わせ)の全数を追跡するために使用されるグローバルアクセスカウンタも含む。デバイス特定プログラム/消去カウントは、対応するメモリデバイスで行われるプログラム/消去操作に応じて増加されてもよく、エラーカウンタは、対応するメモリデバイスでのカウントエラー検出のために用いられてもよい(例えば、プログラム/消去障害、エラーコレクションコードまたは他のエラー情報によって示されるようなビット誤り、不良ブロック検出等)。グローバルアクセスカウンタは、例えば、アニールコントローラにメモリサブシステム内のホットページとコールドページを区別させるために用いられる場合がある(例えば、読み込み操作であってもページがホットであるかコールドであるかに関係がある)。一実施形態において、例えば、グローバルアクセスカウント値は、メモリページが更新された時はいつでもページテーブルエントリ内で格納され、それゆえ、データストレージの最新の判定し(例えば、格納されたアクセスカウント値を現在のアクセスカウント値と比較することによって)、それに従って、ページがホットかコールドかどうかの判定(例えば、最新閾と比較することによって)を有効にする。
アニール制御レジスタ383は、ホストによってプログラム化した(またはオペレータによってプログラム化した)値も、アニールコントローラの制御操作のための可変のまたは他の状態情報も格納するために用いられる場合がある。示される実施形態において、例えば、アニール制御レジスタ(単一レジスタまたは多重のフィールドを有するレジスタのグループである場合)は、デバイス選択モード(固定またはプログラム可能な選択シーケンスおよびデバイス選択のために用いられるあらゆる閾値)、アニールトリガーモード(例えば、経過または暦時間、エラーレート、エラーカウント、プログラム/消去カウント等)、アニール進行モード(例えば、固定スライス割り当てとラウンドロビン進行、振動進行、可変スライス割り当てとラウンドロビン進行等)、サブシステム接続形態(例えば、スライス、マルチドロップ、マルチチャネル等)、代替ストレージの特性(合成物または統合)、を示す値と同様に、アニール操作がフォアグラウンドかバックグラウンドで実行されるかどうか、瞬間的および/または圧縮されたアニール(共に以下で論じられる)、ホット/コールド(または他のデータの使用グレード)閾値および/または方針(例えば、アクセスの最新、アクセスの頻度、および/または他の基準が、使用グレードの間で区別するために用いられるかどうか)、もしくはいずれかの他のプログラム的にまたは動的に定義されるランタイムアニール可能なシステムの挙動に加え、アニール対象および代替ストレージの識別子(ID)を格納するために用いられる。アニールレジスタ383がアニールコントローラ352内(およびフラッシュコントローラ380内)に示されているが、そのようなレジスタおよび任意のサブセットが、アニール可能なメモリサブシステム内のメモリデバイスの1つ以上(または全て)の内で、またはアニールコントローラ(およびフラッシュコントローラ)およびメモリデバイスから分離した集積回路デバイス、の中で、代替的にまたは追加的に配置されることに留意されるべきである。
図11Bは、図11Aの共有コマンド/アドレスアーキテクチャの結果を図示する。すなわち、欠陥品の局所領域または低信頼性記憶を示す1つ以上のデバイスのランクによって実装されるメモリサブシステムで、1つのメモリデバイスに欠陥領域があると、それらの共通物理アドレスに起因して、そうでなければ機能するはずの同じランクの他のデバイスへのアクセスが制限される。例えば、それが物理的に対応する位置で効果的に全てのデバイスにわたってデータをストライプ状にすることによって複数のフラッシュメモリデバイスにわたるデータをストライプ状にすることが望まれる場合、フラッシュメモリデバイス(図11Bを参照)内の不良ブロックは、他のフラッシュメモリデバイス内の対応する良ブロックを利用できない状態にする。すなわち、そのような実装で、不良ブロックがそのメモリランクの全てのフラッシュデバイスにわたって有効にストライプ状にされるので、本来機能するはずのブロックへのアクセスが制限され、利用できないストレージの量にそのランクのメモリデバイス数が掛け合わされる。
図11Cは、専用コマンド/アドレス経路4170〜4174によって、メモリランク406の各フラッシュメモリデバイスFD0〜FD4と連結されるフラッシュコントローラ415において、代替ランクに基づくメモリアーキテクチャを図示する。さらに、フラッシュコントローラ415内のページテーブル400は、各着信論理アドレス394を、対応するフラッシュメモリデバイス内の物理アドレスに、独立して(そして、それゆえに個々におよび異なるように)マップ可能にするため、(状態機械408とともに)多重のアドレス検索テーブル(LUT)409を備える。この実装において、各メモリデバイスにのための不良ブロック情報が、ストライピングに代わるものとして個別に管理されることができる。例えば、着信または自己生成(つまり、アニールコントローラによって)仮想アドレス394は、各アドレス検索テーブル409にインデックスを付けるために同時に使用されることができ、それゆえに、対応するフラッシュデバイスへそれぞれのアドレス経路416経由で出力する多重の物理アドレスを供給することができる。さらに具体的に、詳細図419のように、単一の(共有)メモリコマンド396は、それぞれの物理アドレス(例えば、PhysAddr FD0、PhysAddr FD1、…、PhysAddr FD4)およびチップ選択信号(ChipSel FD0〜ChipSel FD4、スライス割当399に従う判定)と共にフラッシュメモリデバイスのそれぞれへ出力されることができる。図のように、各メモリデバイスに対するコマンド/アドレス情報は、コマンド/アドレス出力ドライバ4180〜4184のそれぞれ1つによって、専用コマンド/アドレス経路4170〜4174の対応する1つの上に駆動される。この配置によって、各フラッシュメモリデバイスに対する不良ブロックアドレスは、メモリデバイスのみに対する仮想から物理へのアドレスマッピングから省略されることができ、それゆえに、メモリランク全体にわたる不良ブロックアドレスをストライプ状にするための必要性を避けることができる。所与のメモリアクセス操作の間に、それぞれのメモリデバイスへ異なる物理アドレスを使用する自由があることにより、異なるメモリデバイスに異なる損傷平滑化進行を適用することも許される(例えば、動的スライス割り当てまたは他の影響に起因する異なるメモリデバイス内でアクセス相違の説明をするために)。図11Cに示される他の回路ブロックおよび信号(例えば、制御論理351、クロスバー402、データI/O回路403、読み込み/書き込み経路357等)は、図11Aを参照して説明される同様の番号の回路ブロックおよび信号に対応し、さらにこれらと同様の方法で一般的に実装されてもよい。
メモリランクのフラッシュメモリデバイスにわたる独立型制御が、共有コマンド/アドレス型の、図11Aの専用チップ選択接続形態を使用し達成されることができるということを留意されるべきである。例えば、メモリアクセスコマンド、および/またはメモリアドレスは、共有コマンド/アドレス経路上へ時分割される(つまり、順次送る)ことができ、この際、専用のチップ選択線は、メモリデバイスのどれが既定のコマンド/アドレスを受信可能にされるか制御するために使用される。しかしながら、このような接続形態の下で個々のデバイスへコマンドおよびアドレスを発令するに際してさらなる遅延時間が発生する場合があるが、個々のメモリデバイスへのアクセスは、スループット(つまり、めもり帯域幅)が影響を受けずに残留できるようにパイプライン化されることがある。
図11Dは、図11Cのページテーブル400を実装するために使用され、したがって、メモリランク内の各メモリデバイスへの専用コマンド/アドレス経路を可能にする、並列検索ページテーブル425の実施形態を図示する。示されるように、着信論理アドレスは、ページテーブルエントリのための論理アドレステーブル428の内容と比較され、ヒット/ミス信号437(一致している論理アドレスが検出されたかどうかを示す)および、もしある場合は一致論理アドレスのインデックス436をもたらす。論理アドレステーブル428(例えば、連想記憶装置または他の並列比較回路によって実装されてもよい)内のヒットを想定して、インデックス436が、各フラッシュメモリデバイスFD0〜FD4に対応する検索テーブルのセットのそれぞれをアドレス指定するために使用される。この操作によって、インデックス436は、各メモリデバイス(他のあらゆるデバイス特定データと同様に)対応する多重の物理アドレスを同時に読み出すために使用される。示されるように、インデックスは、操作可能なメモリセット、スライス割り当て、ホット/コールドページ情報および任意の他のデバイス独立データ(つまり、全面的メモリアクセスを定義し、したがってデバイス特定検索テーブルにおける多重インスタンスに格納される必要がないデータ)を得るために、統合検索テーブルに対しても提供される。メモリ読み込み操作において、テーブルから読み出されたスライス割り当て(「Read SA」)は、マルチプレクサー434を経由して選択され、メモリアクセスのためのスライス割り当て399となる。それに反して、メモリ書き込み(または更新)操作においては、書き込みスライス割り当て(「Write SA」)は、制御論理によって(例えば、対象選択状態および進行方針に従って)、制御ポート432を経由して供給され、メモリアクセスのためのスライス割り当て399としてマルチプレクサー434によって(制御ポート432を経由してもまた供給される、読み込み/書き込み指定子、「Rd/Wr」に応じて)選択される。
一実施形態において、ホット/コールド情報は、テーブル430の対応するエントリ内にアクセスカウント値を格納することによって、各仮想アドレスのために記録される。より具体的には、アクセスカウント値(つまり、図11Aへの参照において記載されるようなアニールコントローラ内のカウンタによって維持される)は、検索テーブル430内に、対応する仮想アドレスへの各メモリ読み込みまたは書き込み(または代替的にメモリ書き込みアクセスのためだけに)の一部として格納される。この操作によって、制御論理(またはそこにおけるアニールコントローラ)は、仮想アドレスと共に、ページテーブルへの現在のアクセスカウントを供給することができ、したがって、格納されたアクセスカウント値の読み出し、および最新論理433内の格納されたアクセスカウント値と現在のアクセスカウント値の差異を判定することを可能にする。一実施形態において、最新論理433は、ホット/コールド閾値(例えば、図11Aへの参照において説明されるようなアニール制御レジスタから)を受信し、格納されたアクセスカウント値と現在のアクセスカウント値の差異を閾値と比較する。この操作により、最新論理433は、格納アクセスカウントと現在のアクセスカウントの差異が閾値を上回るかどうかを示し、それに応じて、ページがホットである(差異が閾値より小さい)かコールドである(差異が閾値より大きい)かを示す、ホット/コールド信号439を生み出すことができる。様々な代替的なホット/コールド判定(例えば、アクセス最新度に加えて、またはそれよりもむしろアクセス頻度に基づいて)および代替的メモリ使用量グレードは、ページテーブル内の論理か、あるいは他の実施形態においてはフラッシュコントローラ内の論理により、判定および信号で示されることができる。
図12は、ホスト要求または自己生成のメモリアクセスコマンドに応じて、図7Aから図7B(および図11A、12C)のフラッシュコントローラによって実行されることができる操作の例示的なシーケンスを示すフローチャートである。メモリアクセスコマンドが、メモリ読み込み(決定ブロック451で判定される)である場合、フラッシュコントローラは、461で示される操作可能なシーケンスを実行する。より具体的には、462において、フラッシュコントローラは、メモリアクセスコマンドにおいて供給された論理アドレスを使用してページテーブルにインデックスを付け、それにより、要求データのための物理アドレス、操作可能なメモリセット、およびスライス割り当てを得る。したがって、464で、フラッシュコントローラは、操作可能なメモリセット内の物理アドレスでメモリ読み込みを実行し、読み出されたデータスライスをスライス割り当てに従って内部コントローラのデータライン上に導く。
コマンドされたアクセスがメモリ読み込みではない場合、フラッシュコントローラは、供給された論理アドレス(つまり、メモリアクセスコマンドの一部またはそれと関連して供給される)が決定ブロック453において、ページテーブルにあるかどうかを判定する。そうでなければ、フラッシュコントローラは、例えば、供給されたアドレスが論理アドレス(更新操作)であるか、物理アドレス(再配置操作)であるかを示すフラグによって、および/または、コマンドおよび/または論理アドレスが自己生成であるかホスト要求であるかを示すフラグによって、メモリアクセスが更新操作か再配置操作のいずれかであるとみなす。
新規書き込みの場合、フラッシュコントローラは、471で示される操作可能なシーケンスを実行する。より具体的には、472で、フラッシュコントローラは、現在の選択状態によって操作可能なセットを判定し、そしてその操作可能なセットによってデータ書き込み操作の物理アドレスおよびスライス割り当てを判定する。示される実施形態において、操作可能なセット、物理アドレスおよびスライス割り当ては、各検索操作によって判定される。例えば、現在の選択状態を使用しての操作可能なセット検索テーブルにインデックスをつけること(OS−LookUp)、操作可能なセットを使用し次の空きアドレス検索テーブルにインデックスをつけること(Addr−LookUp)、および操作可能なセットを使用してスライス割り当てテーブルにインデックスをつけること(SA−LookUp)。別の実施形態において、フラッシュコントローラは、操作可能なメモリセット、物理アドレスおよび/またはスライス割り当てをアルゴリズム的に判定することができる。アルゴリズム配置の特定の例として、スライス割り当ては操作可能なメモリセット自体と一致する(または、そうでければそこから派生される)ことができる。どんな場合でも、フラッシュコントローラは、474で示されるメモリ書き込み操作を実行し、操作可能なメモリセット内の物理アドレスに書き込み、そして書き込みデータスライスをフラッシュコントローラの内部データレーンから、スライス割り当てによって特定される順番で操作可能なセットの各メモリデバイスに導く。ページテーブルは、アドレス変換(論理から物理への)、操作可能なメモリセットおよびスライス割り当てを反映するために、書き込み操作の終わりまたは最中に更新される。スライス割り当ては、操作可能なメモリセットによって固定される場合、または判定できる場合は、ページテーブルにおいて記録する必要がないことに留意する。
フラッシュコントローラは、481で示される操作可能なシーケンスを実行することにより、更新コマンド(つまり、論理アドレスがページテーブル内の先存エントリと一致することが発見されるメモリ書き込みコマンド)に応じる。482から始まり、フラッシュコントローラは、物理アドレス、操作可能なメモリセットおよび、新規スライス割り当てを判定することが必要な場合は先存データのスライス割り当てを得るために、論理アドレスを使用してページテーブルにインデックスを付ける。更新されたデータ値(つまり、論理アドレスと関連して書き込まれるべき、および供給されるべきデータ)が、潜在的な新規操作可能なセット内での新規物理アドレスに書き込まれるため、フラッシュコントローラは、484で、操作可能なセットの各デバイスに対する消去のために物理アドレスをマークする。したがって、486で、フラッシュコントローラは、現在の選択状態のために操作可能なセットを判定し、そしてその操作可能なセットのための次の空き物理アドレスおよびスライス割り当てを判定する。書き込み操作のためのスライス割り当ては、可変スライス割り当ての実施形態(例えば図10Aのような)において過去のスライス割り当てが次のスライス割り当てを判定するために参照される一方で、固定スライス割り当ての実施形態(例えば、図10Bまたは10Cのような)においては過去のスライス割り当てに関わらず判定されてもよいことに留意されたい。操作可能なメモリセット、物理アドレスおよびスライス割り当てを判定した後、フラッシュコントローラは、488においてメモリ書き込みを実行し、操作可能なメモリセット内で物理アドレスにおいて更新されたデータを書き込み、そして更新されたデータのスライスを内部データレーンから操作可能なセットの各メモリデバイスへ、スライス割り当てによって示される順番で導く。更新操作中またはその後に、更新されたデータの操作可能なセットおよびスライス割り当て(どちらももう一方から派生してもよく、したがってページテーブルエントリによって黙示的に示される)と同様に、ページテーブルが新規物理アドレスを示すために更新される。
再配置コマンドの場合、フラッシュコントローラは、491で示される、492でソースセットおよび再配置先メモリセット(SrcSet、DestSet)を判定することにより始まり、再配置操作のための対応するソースアドレスおよび再配置先アドレス(SrcPhysAddr、DestPhysAdd)を配置する、汎用化された操作可能なシーケンスを実行する。ソースメモリセットは、再配置されるべきデータがソースアドレスを用いて読み出される、1つ以上のメモリデバイスの1セットであり、配置先のメモリセットは、通過データが目的地アドレスに再配置される(つまり、書き込まれる)、その片方の1つ以上のデバイスの1セットである。単一スライス再配置操作(つまり、データスライスが、定位置にある同じデータ語の他のスライスを残し、アニール対象から代替ストレージへ再配置される)の場合、ソースセットおよび再配置先メモリセットは、アニール対象および代替ストレージへそれぞれ縮小され、そしてソースアドレスおよび再配置先アドレスは、同じ物理アドレス(つまり、再配置コマンドで供給される物理アドレス)であってもよい。逆に、マルチスライス再配置(つまり、同じデータ語の多重のスライスが再配置される)の場合、再配置先メモリセットは、現在の選択状態に対して操作可能なメモリセットの全てのデバイス(または少なくとも2つのサブセット)を含み、ソースメモリセットは、前の選択状態に対して操作可能なメモリセットの全てのデバイス(または少なくとも2つのサブセット)を含む。さらに、同じメモリデバイスがソースメモリセットと再配置先のメモリセットの両方に含まれ、およびデータがその位置で書き換えられていない、または書き換えられることがないマルチスライス再配置においては、コマンドから供給される物理アドレスがソースアドレスを構成するが、新規配置先アドレスが、(読み込みと書き込み両方が行われたメモリデバイス内の物理格納アドレスが、再使用前に消去を要求するため)決定され使用される。例として、図10Aのアプローチにおける選択状態「a」から選択状態「e」への進行において、マルチスライス再配置が実行されるとその際に、データスライスがフラッシュデバイスFD1〜FD4から読み出され(つまり、ソースセットが、選択段階「e」の操作可能なメモリセットと等しい)、フラッシュデバイスFD0、FD2〜FD4へ書き込まれる(つまり、書き込み先セットが選択状態「a」の操作可能なメモリセットと等しい)。メモリデバイスFD2〜FD4が、ソースセットと目的地セット両方に表れる(つまり、データスライスはそれらのデバイスから読み込まれ、異なるデータスライスがそれらデバイス内に再配置される)ため、ソースメモリセット内でデータが読み出される物理アドレスは、目的地メモリセット内でデータが書き込まれる物理アドレスとは異なる。したがって、図12の汎用化された再配置シーケンス内で、フラッシュコントローラは494で、ソースメモリセット(SrcSet)内のソースアドレス(SrcPhysAddr)において、通過データ(つまり再配置されたデータ)を読み出すために、メモリ読み込みを実行する。ソースメモリセットがアニール対象へ縮小する場合(例えば、図10B、10Cの実施形態、および状態「e」から「a」を除く図10Aの実施形態内の全ての選択状態の進行)は、アニール対象だけが(つまり、アニール対象のためのチップ選択ラインをアサートするが、そのランクの他のメモリデバイスはしない)、単一スライス読み出しを実行するためにアクセスされる。ソースメモリセットが多重デバイスを含む場合は、各デバイスが、マルチスライス通過データ値を読み出すためにアクセスされ、個々のデータスライスを、フラッシュコントローラの内部データレーン上に昇順で送る(つまり、内部レーン0にはds0、内部レーン1にはds1等)ために、ソースメモリセットのためのスライス割り当て値(例えば、図10Aのアプローチにおける選択状態「e」のためのスライス割り当て)を適用する。
再配置シーケンス491を続いて、二段階再配置操作の場合、ソースメモリセットから読み出された通過データは、スクラッチメモリに495で書き込まれ、ページテーブルは新規格納位置を反映するために更新される。そうして、497で、フラッシュコントローラは、ページテーブルによって示されたスクラッチメモリのアドレスから通過データを読み出し、そして496でメモリ書き込みを実行することを開始する。単一段階再配置操作においては、495および497でのスクラッチメモリの書き込みおよび読み込み操作は、省略され(そのため、図12内で表示が破線の外枠になっている)、フラッシュコントローラは直接494でのデータ読み出しから、496でのデータ書き込みへ進む。
496でのデータ書き込み操作において、通過データは、必要に応じていかなるスライス割り当て転換をも使用し、書き込み先メモリセット(DestSet)内の書き込み先アドレス(DestPhysAddr)に書き込まれる。単一スライス再割り当てでは、書き込み先アドレスへの書き込みは、代替ストレージへの単一スライス書き込みである。逆に、マルチスライス再割り当てにおいては、複数のスライスが書き込み先メモリセットへ書き込まれる。その際、スライスは、その書き込み先メモリセットのスライス割り当てに従って(例えば、図10Aのアプローチにおける選択状態「a」のスライス割り当て値を使用して)、フラッシュコントローラの内部データレーンから各メモリデバイスへ送られる。。最終的に、データ書き込み操作が完了すると(またはそれと同時に)、ソースメモリセット内のソースアドレス(つまり、単一スライス再割り当ての場合のアニール対象、またはマルチスライス再配置の場合の多重メモリデバイス)は、498で即時またはいずれ起こる消去のためにマークされる。
マルチドロップ接続形態内のアニール操作
アニール操作は、新規アニール対象および対象選択状態の各シーケンスのための代替ストレージに進行するメモリコントローラとともに、スライスされた接続形態などで通常同様のシーケンスにおいてマルチドロップ接続形態内で実行されることができる。図13は、上述の同様の一般構造を有し(つまり、内蔵アニールコントローラ503を搭載した制御論理501、ページテーブル505、スクラッチメモリ507、内部のデータ経路509、制御経路511、ホストI/O(示されていない)およびメモリI/O513とを含む)、しかしスライスされたデータ経路の各スライスの代わりに、マルチドロップデータ経路516経由で1セットのフラッシュメモリデバイス517(FD0〜FD4)と連結している構造を有するフラッシュメモリコントローラを示すこの操作を図示する。各フラッシュメモリデバイス517が、メモリデバイスの各ランク部分である(つまり、データ経路516は、例えば、図6Aの322示すようにスライスされたデータ経路の1つスライスである)および各メモリランクが1つ以上の予備メモリデバイスを含む実施形態において、上記記載のランクに基づくアニール管理が、各ランクにおいて各メモリデバイスをアニールすために適用される可能性がある。さらに具体的に、既定のランク内の予備デバイスは代替ストレージとして使用されることができ、それゆえに、メモリ読み込み、書き込みおよび再配置目的の仮想デバイスを形成するために選択されるランクのアニール対象とペアになることができる。このような実施形態において、アニール対象は、次のランクへの処理以前の各ランクのメモリデバイスを通じた処理、あるいは次のスライスへの処理以前のデータ経路(つまり、メモリデバイスの「スライス」を通じた処理)の既定のスライスと連結しているメモリデバイスを通じた処理のいずれかによって優先順位を付けられることができる。
マルチドロップデータ経路516と連結している既定のフラッシュメモリデバイスがN+メモリランクの部分でない場合(つまり、メモリランクが1つ以上の予備メモリデバイスを有する)、そのデバイスに対する代替ストレージが、デバイスの同一のスライス内で1つ以上の他のフラッシュメモリデバイスによって形成される可能性がある。図13の520を参照して、例えば、フラッシュデバイスFD1およびFD0は、それぞれ仮想デバイス533のアニール対象530および代替ストレージ531を構成する。図のように、そして上記記載のN+1ランクアーキテクチャにおけるアニール操作のように、そのようなN+スライスアーキテクチャ(つまり、Nデバイスのスライス毎の1つ以上の予備メモリデバイス)内でのアニール操作が、新規書き込みおよび更新をアニール対象530から代替ストレージ531へリダイレクトすること、ならびに代替ストレージ531またはアニール対象530のいずれかへ、関連するアドレスのためのページテーブル505において特定されるデバイスに従ってメモリ読み込みを指示することによって実行されことができる。また、データがメモリ読み込みの部分としてアニール対象から読み出される場合、データがスクラッチメモリ507へコピーされることができ、スクラッチメモリ507から代替ストレージ531への次の転送を可能にするため、対応するページテーブルエントリ内のフラグを設定する(および、ページテーブルエントリにおけるスクラッチメモリ位置または関連する位置を記録する)。図の510ように、ページテーブル505内でのエントリは、物理アドレスが、格納データの内部メモリアドレスだけでなく、デバイスのスライス内で物理的な格納デバイスを確認するための、デバイス識別子または番号(つまり、デバイスアドレス)も含むことを除いて、N+1ランクアーキテクチャのためのページテーブルエントリと同様のフォーマットに通常従うことができる。N+1ランクアーキテクチャ内の更新および書き込み操作と同様に、更新されるデータまたは新規に書き込まれるデータのリポジトリとして代替ストレージ531を示すため、および更新の場合はアニール対象530内の対応するエントリを無効にする(または消去のためのマークする)ため、各書き込みまたは更新操作の後にページテーブルが更新される。データが、アニール対象530からの読み込みに続いてスクラッチメモリ507において捕らえられる場合、アニール対象内でのソース位置は任意に無効にされるまたは消去(つまり、ページテーブル更新経由で)のためにマークされることができ、それゆえに、読み出されたデータの唯一有効なソースとしてスクラッチメモリを残している。あるいは、アニール対象530内のソース位置は、再配置操作を完了するために代替ストレージ531へのデータが書き込まれる後までは、無効にされない/消去のためにマークされない、可能性がある。
あるランクのメモリデバイスとは反対に、既定スライスのメモリデバイスは通常同時にアクセスされないので、それゆえに、スライス順序の考慮によって制限される必要はない。したがって、スライスのあらゆるメモリデバイスが既定のアニール対象530に対する代替ストレージ531として使用されることができ、そして代替ストレージ選択が、あるアニールサイクルから次へ変化する事ができる。より一般的、図14のように、代替ストレージが単一のメモリデバイスである必要がなく、代わりに、スライスの2つ以上の他のデバイスにおける有効な記憶領域を含む複合ストレージ540であればよい。その場合、複合代替ストレージは、アニール対象の有効的内容をとどめておく十分な容量を有しさえすればよく、それゆえに、アニール対象の合計容量より実質上より小さい格納部分を構成することができる。したがって、アニール対象から複合ストレージへ再配置されたデータは、複合ストレージに寄与するメモリデバイス内で最初に書き込まれた他のデータと共存することができる)。また、図のように、複合ストレージの構成要素領域を意味する影付き領域によって、2つ以上の非連続領域は1つのメモリデバイスによって寄与されることができ、そして異なる量の格納は、各関与デバイスによって複合代替ストレージへと寄与されることができる。
マルチチャネルメモリ接続形態内でのアニール操作
図15〜19は、マルチチャネルランタイムアニール可能なメモリシステム内で実行されるアニール操作を図示する。データ経路の各スライスと連結しているメモリデバイスと対照的に、各チャネル経由でメモリコントローラと連結しているメモリデバイスは、通常独立的に制御される。一実施形態において、例えば、個別のコマンド/アドレス経路は、全体的に異なるメモリトランザクションが、異なるチャネル内で同時に実行されることができる(つまり、時間内に少なくとも部分的に重複すること)ように、各チャネルのデバイスへ供給される(つまり、他の1セットの同様のチャネルデバイスと連結しているコマンド/アドレス経路と分離しているコマンド/アドレス経路を共有する各1セットの同様のチャネルデバイス)。それゆえに、図15を参照して、チャネルAのフラッシュデバイス3内のアドレスXでのメモリ読み込みは(つまり、デバイスFDA3、メモリチャネル516A経由でフラッシュコントローラ550と連結している)、チャネルBのフラッシュデバイス0(FDB0、メモリチャネル516B経由でフラッシュコントローラ550と連結している)へのメモリ書き込みと同時に実行されることができる。それゆえに、仮想デバイスペアが同様のチャネルのデバイスから引き出される(チャネルそれ自身がスライスされるという概念、マルチドロップまたは両方)実施形態において、受動的および能動的データ退避操作が、そのチャネルにおいて、別のチャネルでのライブメモリアクセス(および/または、受動的および能動的データ退避)と同時に実行されることができる。代替的(または追加的)、仮想デバイスペアは、各チャネルからのデバイスによって形成されることができる。一実施形態において、例えば図15に示されるように、同様のスライス配置(0、1、2または3)だが個別のメモリチャネル(516A、516B)からのデバイスは、仮想デバイスペアのシーケンスを形成するために選択され、他のチャネルのデバイスを通じて進行するための、アニール対象/代替ストレージ選択を逆転する以前に、順番に既定のメモリチャネルの各デバイスのアニールすることができる。図15の実施形態において、例えば、その進行は、FDA0/FDB0、FDA1/FDB1、…、FDAn−1/FDBn−1、FDB0/FDA0、FDB1/FDA1、…、FDBn−1/FDAn−1であり、そこでフォーマットFDi/FDjの第1のデバイスはアニール対象であり、第2は代替ストレージであり、そして「n」は各チャネル内でのデバイスの数である。あるいは、進行はFDA0/FDB0、FDB0/FDA0、FDA1/FDB1、…、のような2つのメモリチャネル間で交互(「ピンポン」)である可能性がある。
各仮想デバイスペアにおいて、2つのチャネルから同様に配置されたデバイスのペアリングの代わりに、各進行における1つ以上の仮想デバイスペア(またはすべての仮想デバイスペア)は、デバイス配置に関わらず形成されることができる。例えば、図16の実施形態において、デバイスFDA1およびFDB3はペアにされる。この実施形態は役に立つ可能性があり、例えば、予備能力を見せるチャネルの場合である。例えば、FDB3が本来は空である限りにおいて、そのデバイスは、チャネルAのデバイス(例えば、チャネルA内で既定のデバイスからFDB3へ退避し、その後それがアニールされた後、退避されたデバイスをリロードし、そうすることで進行においてFDB3が進行中の次のデバイスのデータを自由に受信するようにする)だけでなく、チャネルBの他のデバイスの代替ストレージとして使用されることができる。図16に示される配置的独立型デバイスペアリングは、1つのチャネルがもう1つのチャネルより多いデバイスを含む場合においても役に立つことができ、より密集しているチャネルにおける1つ以上のデバイスは、同様のまたは異なるチャネルにおける異なる配置のデバイスとともに必ずペアになる必要がある。
マルチドロップ接続形態のように、マルチチャネル接続形態内の代替ストレージは単一のメモリデバイスである必要がなく、そして代わりに、同様のおよび/または異なるチャネルの2つ以上の他のデバイスにおける使用可能な記憶領域を含む、複合ストレージであってもよい。図17を参照して、例えば、代替ストレージが、2つの同様のチャネルフラッシュデバイス(FDA0およびFDA2)、および2つの異なるチャネルフラッシュデバイス(FDB2、FDB3)の記憶領域によって形成される。上記マルチドロップ事例の場合、複合ストレージは、アニール対象の有効的内容をとどめておくために十分な容量を持ちさえすればよく、それゆえに、アニール対象の全容量より、実質上より小さい格納部分を構成することできる。また、容量の異なるストレージは、各関与デバイスによって複合代替ストレージへ「寄与される」ことができる。
図18は、チャネルからチャネルへのデータ転送を容易にしそれゆえに、データ再配置操作を加速するための切り替えメモリI/O回路573を有するマルチチャネルメモリコントローラ570(この例における、フラッシュコントローラ)の実施形態を図示する。示される例において、データがチャネル−A I/O回路572A経由でアニール対象(FD A1)から読み込まれ、その後クロスバー切り替え574経由で(他の切り替え技術が使用される可能性があるが)、チャネルBに対するI/O回路572Bへ転送され、そのチャネル上の代替ストレージ(FD B3)に書き込むために書き込みデータを供給する。それゆえに、チャネルAにおけるアニール対象からチャネルBにおける代替ストレージへの再配置は、データをコントローラコア571へ転送する必要なしに成立する。追加的メモリチャネルが存在する場合、例えば、メモリチャネルAおよびBに関連したアニール対象と代替ストレージとの間のデータの再配置と同時に、追加的メモリチャネルに関して自由なメモリアクセストランザクションを実行することができる。
図19は、マルチチャネルメモリコントローラ570内の代替的チャネル間データ再配置操作を図示し、そこでチャネルA上でアニール対象(FD A1)から読み込まれたデータがある、コントローラコア571内でスクラッチメモリ585が格納され(および、任意のホスト要求またはデータ読み込む/書き込む経路587経由で戻る)そして、その後チャネルB上の代替ストレージ(FD B3)へ、後書き込みされる。データ検索フローは583により示され(太破線経路)、およびにデータ書き込むフローは585よって示される。この例において、2つのチャネル内のデータ操作は、同時に実行されることができ、したがって、別のメモリ書き込みまたはメモリ読み込みが、通過データがチャネルAにおいてアニール対象から読み込まれる間(つまり、データが再配置されている)に、チャネルBにおいて(少なくとも一部分において)実行され、そしてその後別のメモリ書き込みまたはメモリ読み込みが、チャネルBにおいて通過データが代替ストレージへ書き込まれる間に、チャネルAにおいて(少なくとも一部分において)実行される。すなわち、ホストは、一度にただ1つのメモリチャネルにわたるデータをアクセス(読み込みまたは書き込み)するよう設定されることができ、それゆえに、ホスト主導トラフィックを妨げないでアニール関連データ退避操作に対する他のチャネルを解放する。スクラッチメモリ585は、あるチャネル上のデバイスから他のチャネル上の1つ以上のデバイスへ移行されているデータ(つまり、通過データ)に対し、一時的にとどめておく位置として役立つことができる。スクラッチメモリ585は同様に、アニール対象として同様のメモリチャネル上の代替ストレージへ、通過データを一時的に格納することに役立つことができる。どちらの場合においても、ページテーブル583は、代替ストレージにおける再配置に先立って通過データを読み込むためのあらゆる要求が、アニール対象へのアクセスを要求する代わりに、スクラッチメモリ585からデータの読み出しを達成することができるという、通過データの一時的な位置を反映するために更新されることができる。通過データが、スクラッチメモリ580において、一時的にバッファの役割を果たそうとそうでなかろうと、ページテーブルは、データ再配置操作完了に続いて、データの新規リポジトリとして、チャネル−Bに代替ストレージを示すために更新される。
マルチ予備接続形態におけるアニール操作
図20A〜20Eは、N+2メモリアーキテクチャ内でのアニール操作を図示する。つまり、デバイスの各ランクまたは各スライスは2つの予備デバイスを含み、それゆえに、1つの予備デバイスが、もう1つの予備デバイス内へのデータ退避を伴い同時にアニールされる(つまり、加熱される)ことを許可することができる。
図20Aは、操作可能なセット毎に4つのメモリデバイス(N=4)を有するが、各N+2メモリランク615が6つのメモリデバイスを含むように2つの予備デバイスも有する、スライスされたN+2メモリアーキテクチャの実施形態を図示するが。メモリコントローラ600(この例におけるフラッシュコントローラ、フラッシュメモリデバイスFD0〜FD5によって実装されるような)は、制御論理601(内蔵アニールコントローラ602とともに)、ページテーブル603、スクラッチメモリ605、コマンド経路611、データ読み込み/書き込み経路607、メモリI/O回路609およびコントローラI/O回路(示されていない)を含み、それらすべてが一般的に上記のように操作する。外部データ経路614のそれぞれのスライスは、メモリI/O回路609と各フラッシュメモリデバイスFD0〜FD5の間に連結され、そしてコマンド/アドレス経路(示されていない)が、個々に制御可能なチップ選択ラインが、図11を参照して説明されるように、それらの独立型選択を可能にするための専用の方法において各メモリデバイスへ連結されることを除いて、そのランクのすべてのデバイスへ共通して連結される。上記の代替的実施形態において、各メモリデバイスは、共通のコマンド/アドレス経路と連結している代わりに各(つまり、個別、専用)アドレス経路、および/または各コマンド経路と連結されることができる。このような配置は、各メモリデバイスが既定のメモリアクセス内の異なる物理アドレスを受信することを可能にし、それゆえに、メモリデバイス内の異なる物理位置で不良ブロックに対する耐性を可能にし、そして特定デバイス損傷レベルに対する支持を提供する。
さらに図20Aを参照して、2つの予備デバイスの提供は、メモリコントローラ600が、本明細書において「アニールデバイス」と呼ばれる、1つの予備メモリデバイス内でアニール操作(つまり、熱すること)を実行することを可能にし、一方でもう1つの予備メモリデバイス内へ次にアニールされるデバイス(「退避デバイス」)を退避している。それゆえに、退避操作およびアニール操作は、図20Cのような選択状態から選択状態へ(各アニールサイクルにおける、状態「f」を通じた、状態「a」からの進行)、退避デバイス(ev)、アニールデバイス(xx)および代替ストレージ(as)の段階的な進行で、図20Bのようにパイプライン化されることができる。別のデバイスにおいてアニールが継続している間、最も最近アニールされた予備(ブランクまたは空の)デバイス内へアニールされるための次のデバイスを退避することの同様の一般的アプローチは、図20Dのようにスライスされたアーキテクチャにおいて実行されることができる。示される例示的な状態において、フラッシュデバイス0(Flash Dev0)およびフラッシュデバイス2は、フラッシュデバイス1がアニールされている間、仮想デバイスの、それぞれ代替ストレージおよび退避デバイスを構成する。
図20Eは、2つの予備デバイスを有するシステムの別の有利な特性を図示する。つまり、既定のメモリデバイス内でアニール操作完了後、新規アニール対象と一緒にそのデバイスが、既定のメモリアクセスサイクル間(例えば、メモリ書き込み間)アクセスされるデバイスのセットから省略されることができ、そしてそれゆえに、並列データ退避操作に使用可能である。図20Eにおいて、例えば、データ再配置操作は、1つ以上のメモリデバイスFD2〜FD5内で、ホスト要求されたメモリアクセスと同時に、ちょうどアニールされたデバイスFD0および新規アニール対象FD1について実行される。示された特定の実施形態において、FD1からのFD0へのシャント転送はメモリI/O回路を通じて達成され、それゆえに、ホスト要求トラフィックを伴い同時に2つのデバイス間に、無衝突通信を可能にすることができる。この操作によって、ホスト要求メモリアクセス下の能動的データ退避を効果的に隠し、データ退避がホストとデータ再配置操作の間にシリアライゼーションを要求するという実施形態においてよりも、より迅速に完了されることができる。
図21A〜21Dはアニール進行およびN+3スライスされたまたはマルチドロップアーキテクチャにおいて採用される可能性がある、代替的アニールパイプラインを図示する。図21Aの進行において、メモリランク640内の既定デバイスに適用されるアニール操作が、アニール進行において2つの継続的な選択状態におよぶこと、および2つのデバイスが各選択状態において同時にアニールされることが見られるであろう。さらに具体的には、既定の選択状態において、第1のデバイス(先導デバイス)のアニールは、前の選択状態から継続され、現在の選択状態において完結され、一方で第2のデバイス(後続デバイス)のアニールは、現在の選択状態において開始され、そしてそれゆえに、それに続く選択状態(そこで現在状態の後続デバイスが次期状態の先導デバイスになり、現在状態の先導デバイスが次期状態のアニール対象になる状態)において完結される。図21Bは、図21Aの選択状態進行に対応するアニールパイプラインを図示し、同様のランクまたはスライス内の多重メモリデバイスの交互だが並列のアニールを示している。
図21Aおよび21Bのアニール進行およびパイプラインは、アニール操作がデバイス退避操作よりも時間がかかる(少なくとも時折)ことが予期されるところ、およびより高いアニール頻度が望まれるところで、特に適用可能である。つまり、平均して(N+3)*2デバイスが、各完了アニールサイクル(つまり、すべての選択状態を通じた進行)の実行毎にアニールされる。それに反して、退避操作がアニール操作よりも時間がかかる(少なくとも時折)ことが予期される実施形態においては、別のアニールの間に2つのメモリデバイスを同時に退避することが望ましい。このような実施形態に対するアニールパイプラインは図21Cに示され、各選択状態に対し、1つのデバイスがアニールされ(アニールデバイス)、それと同時に別のデバイスの退避(先導退避者デバイス)が完了され、第3のデバイスの退避(後続退避者)が開始されることを示している。図21Dは、コントローラ630および、7つのメモリデバイスFD0〜FD6、によって実装されるアニール能力のあるメモリサブシステムを含むN+3メモリシステムと関連するこのアプローチを図示する。図のように、FD0がアニールされている(つまり、アニール温度に熱される)間隔にわたり、FD1が退避され、そしてその後FD2が退避される、その一方でデバイスFD3〜FD6が操作可能なメモリセットを形成する。
図21Eは、N+3メモリシステム内で適用することができる、別の退避アプローチの方法を図示する。この事例において、ランク640内の2つのメモリデバイスは、第3のメモリデバイスをアニールている一方で、同時に退避される。さらに具体的に、示される実施形態において、次にアニールされるメモリデバイスは、別のメモリデバイスが、第2の代替ストレージ(as)中へ受動的に退避される間隔間に、第1の代替ストレージ(as)中へ能動的に退避される(「ae」によって示される)。退避者デバイスの受動的および能動的退避の間中加熱されているデバイスは、「xx」によってマークされる。それゆえに、選択状態「a」から「b」への進行において、選択状態「a」において能動的に退避されるメモリデバイスはアニールデバイス(xx)になり、選択状態「a」において受動的に退避されるメモリデバイスは能動的に退避されるデバイス(ae)になり、そして選択状態「a」においてアニールされるデバイスは、受動的退避(pe)に対し新規に選択されるデバイスのための代替ストレージ(as)になる。上記の実施形態のように、退避デバイスおよびそれらの各代替ストレージデバイスは、操作可能なメモリセットの一部を形成する仮想デバイスペアを構成する。それゆえに、図21Eの実施形態において、操作可能なメモリセットは、2つの個々のメモリデバイス(「op」)および2つの仮想デバイスペア(ae/asおよびpe/as)で構成される。異なる数のメモリデバイスは、代替的実施形態においてメモリランク内で含まれることができ、同時に退避されるデバイスの数は(そしてそれゆえに、操作可能なメモリセットにおいて多数の仮想デバイスペアが含まれる)、あらゆる実行可能な数に拡張されることができる。より一般的には、図21A〜21Eにおいて示される以外の、進行処理、操作可能なパイプラインおよびアーキテクチャが採用されてもよく、そしてN+3のスライスされるまたはマルチドロップアーキテクチャにおいて示される概念は、N+4、N+5等のデバイス数を有するアーキテクチャへ拡大されることができる。
フォアグラウンドアニール
図22は、アニール可能なメモリサブシステム(またはサブシステム)のアニールを行う一方で、コアシステムの操作が保留されアニールが完了する時に再開するランタイムアニール操作であるフォアグラウンドアニール130において実行することができる汎用シーケンスの操作を図示する。131で示されるように、フォアグラウンドアニールシーケンスはトリガーとなるイベントの発生に応えて開始する。トリガーとなるイベントは、自動的な判定/検出条件または条件651の1セットもしくはオペレータ起動655であってもよい。自動的な検出の場合、トリガーとなるイベントは、確定的(例えば、予定された、もしくはプログラムされた時間が最終アニール操作から経過したこと、もしくはある特定の時点に達したこと(つまり、計画的)を検出する)、もしくは非確定的(例えば、予定された/プログラムされた時間の間のシステムアイドル、最終アニールからのプログラム数/消去操作数の閾値、エラー数/エラー率の閾値等)、またはそれらのうちどの組み合わせもになることができる。オペレータ起動によるフォアグラウンドアニールの場合、人間またはシステムの人為的なオペレータが、アニール操作を明確に指示することができる、例えば、操作システムユーティリティまたは他のユーザインターフェース選択を使用すること、したがってアニール操作の完了または終了に至っていない保留された状態にそのシステムを配置するために肯定的に選択することである。具体的な例として、アニール可能なメモリサブシステムがコンピュータシステムまたは一般電子製品のメインメモリ(あるいはそうではない頻繁にアクセスされたメモリ)の一部または全ての構成要素となる場合、人間のオペレータは(インジケーターを通してまたは別の方法で)アニールをメモリサブシステムに行うことによりシステム性能が改善すること、およびアニール操作を起動するための制御パネルユーティリティまたは他のメンテナンスコントロールインターフェースを選択することができることを判定することができる。ユーザインターフェースは、そのデバイスまたはアニールを行っている最中であるデバイスの表示、進行中のアニール操作に残された時間、そのデバイスまたはまだアニールが行われていないデバイス(および全てまたはそれぞれの見積もり時間)をそのデバイスまたは既にアニールが行われたデバイスと同様に表示するといったアニールの進捗の追跡に用いることができる。どのような問題のあるメモリ(例えば、不良または低信頼性のセクター、クラスタデバイス、ランク等)も、同様に留意することによってオペレータはメモリ回避(例えば、低信頼性および使用しないものとして問題のあるメモリにマーキングする)および/または交換に関して決定を下すことを促進できる。
どのようにトリガーされたとしても、フォアグラウンドアニール操作は、アニールが行われるメモリからバックアップストレージまたは予備のアニールデバイス(1つまたは複数)133へデータを退避、あるいはアニール(つまり、デバイスの加熱)操作135、そしてアニールメモリにあらゆる退避したデータ137の再読み込み、といったそれらそれぞれの場合において通常同様に進行する。
データ退避および再読込み操作は、それらの選択自由な特性を強調するため図22において破線で示される。すなわち、データが既にバックアップされたさもなければ他のストレージ(キャッシュされた、またはRedundant Aarray of Inexpensive Disk(RAID)システムに見られるようなストレージを介した復旧可能なメモリ内容)から復旧可能であるアプリケーションにおいて、データ退避の必要性は履行されず、デバイスの加熱がトリガーとなるイベントに応じてただちに開始することができる。同様に、いくつかの場合において、データはコアシステム操作の再開の前にアニールされたメモリサブシステムへ再読込みされる必要がなく、代わりにシステム操作としてアニールされたメモリを通例の一部として再装着することができる(例えば、キャッシュへのライトバックまたはライトスルー、内容への書き込みまはた更新の一部としてのストレージ等)。
135にてアニールに先立ってデータ退避が行われる場合、661に示されるアニール可能なメモリサブシステムとは異なるバックアップメモリデバイスへ、(つまり、アニール可能なメモリサブシステムを含むホストシステム内にある、またはそれとは分離する別のストレージへ)データを退避することができ、あるいは663に示されるアニール可能なメモリサブシステムの予備ストレージへ退避することができる。バックグラウンドアニールを目的とするアニール対象の退避に用いられる様々なアプローチは、フォアグラウンドアニールシーケンスの一部として同様にアニール対象の退避に用いることができる。
アニール操作自体に関しては、アニール可能なメモリサブシステムを構成するメモリデバイスを、671に示されるように一斉にアニール(本明細書に記載される「並行」アニール)を行うこと、または673に示されるようにデバイスもしくはデバイス群によって逐次的に行うこともできる。逐次アニールの場合、バックグラウンドアニールとの関連で前述されるように、どのデータ退避もアニール対象および1つ以上の代替格納デバイスについて実行することができる。その上、並行アニールと逐次アニールの間の選択を、アプリケーションに従って固定すること、またはプログラムによって定めるさせることができる。いずれにしても、多数の要因は並行と逐次アニールの間の選択に影響を与えるにつれて、考慮に入れるおよび/またはプログラムによって特定することができる。例えば、ポータブルデバイスの場合、ドッキングまたは別の方法として電力線(つまり、バッテリーによる電力ではない)により電力を供給される時のみ並行アニールが有効となることができる。一方で電力線が利用可能である場合、限定されたデバイス機能性の供給(または他のメンテナンス操作の並列した実行)は並行と逐次アニールの間の選択におけるアニール操作の緊急性に一方的に不利になることがある。
上記に考察したとおり、137におけるメモリ再読込み操作は任意であり、要望されたまたは必要性がある場合、明確に実行することができ(例えば、退避されたデータを後退させてアニール可能なメモリサブシステムへ転送する)、および/または通常操作トラフィックとして発生するデータ移行を行うことで達成することができる。いずれにしても、あらゆる要求されたメモリ再読込みが完了した後にホストシステムのコア操作を再開することができる。
図23A〜23Cは、本明細書に「瞬間的アニール」と記載されるフォアグラウンドアニールの種類を図示する。瞬間的アニールの通常のシーケンスは図23Aの例示的フローチャートに示される。すなわち、メモリサブシステムを含むメモリサブシステムまたは装置を701にてオフラインにする。そして、703にて、アニールは上述のバックグラウンドアニール方法論に従って実行されるが、(i)アニールコントローラは直接能動的退避へ進み、別のメモリデバイスのアニールと同時にメモリデバイスを退避する(加熱する)、(ii)移行はシャント転送(例えば、メモリコントローラの入力/出力回路内においてクロスバーまたは別のスイッチング構造を通して転送する)を通して実行し、したがってスクラッチメモリ内の一時的ストレージはない、および/または(iii)多層アニールおよび/またはデータ退避はそれぞれのアニールシーケンスのスレッドにおいて並列で行われる、という場合を除く。703の全ての対象としたメモリデバイス内にてアニール操作が完了した後、メモリサブシステムまたは装置は705にてオンラインに戻り、再開するためにメモリアクセス操作を有効とする。
図23Bはフラッシュコントローラ720を有するフラッシュメモリシステム内における瞬間的アニール、およびフラッシュデバイス(「フラッシュ」)の一式を図示する。フラッシュコントローラ自体は、クロスバーI/O回路726、スクラッチメモリ721、ページテーブル723、および読み込み/書き込みデータ経路(「読み込み/書き込み経路」)を含み、その機能は一般的に上記のような機能である。示されるように、フラッシュメモリシステムをオフラインとした後、データを第3のフラッシュデバイス内において1つのフラッシュデバイスから最も最近アニールを行ったフラッシュデバイス(つまり、少なくとも時間的に重複する)に、アニール(加熱)操作と同時に能動的に退避する。次にアニールが行われるデバイス完全に退避し、先行アニール対象(この時点で最も最近アニールが行われたフラッシュデバイス)についてアニール操作が完了した後、727に示すように完全に退避されたフラッシュを別のフラッシュデバイスの最も最近アニールが行われたデバイスへの能動的退避と同時にアニールを行う(加熱する)。図23Cは図23Bの通り同一フラッシュメモリシステム内における交互瞬間的アニールシーケンスを図示するが、多層アニール(加熱する)操作および多重データ退避も同時に実行されるものである。このような多層同時アニール/退避操作は、各操作は図23Bに記載されるシングルスレッドの瞬間的アニール操作のインスタンスとして実行されるため本明細書のアニールスレッドに記載される。シングルかつマルチスレッドの両アニール操作は、全てのメモリランク全体のアニールを加速させるため、個々のアニールスレッドの構成要素操作内の同時並行性を利用し(およびマルチスレッド操作はさらに2つ以上のこのような個々のアニールスレッド間を同時並行的に活用する)、迅速にアニールを行い本来の業務に戻るようメモリランク全体を有効にする。
図24は、メモリサブシステム内における予備メモリデバイス、さもなければ予備デバイスを有していない予備メモリデバイスを提供する、または上述の並列的な予備の技術(例えば、図23A〜23Cへの参照に記載されるオフライン瞬間的アニール技術と同様のN+2、N+3等)の活用を目的とした追加の予備メモリデバイスを提供するため、実行することができる例示的に圧縮されたアニール操作を図示する。751にて開始し、ランタイムアニール可能なメモリシステムまたは同一のものを含む装置はオフラインとなる。その後753にて、データ格納要求は1つ以上の予備(または追加の予備)メモリデバイスの解放のため減少する。示されるように、多数異なる技術は個々または組み合わせによって、全てまたは一部のデータボリュームのエンコードすることを含むメモリシステムへのデータ格納(つまり、データボリューム)のネットデータ格納要求を減少させるために実行することができる、例えば、ベクトル量子化、データ非重複または他のロスレスもしくはロッシー技術を使用する、あるいはメモリシステム外にあるデータの一部分を移動する、および/または、ディスク、メインメモリ、キャッシュ等のような他の格納システム内に重複して格納すると認められるまたは知られているデータを無効とする(例えば、サブシステムの1つのためのパリティデータの保持に使用されるメモリデバイス(またはデバイス)のような2つ以上の半導体ベースRAID−5メモリサブシステムの統合が、少なくとも一時的であり目的およびそれに従った予備メモリデバイスとして利用可能である必要はない)。メモリサブシステム外へのデータの移動または転送の場合、一実施形態において転送に選択されたデータは、コールドページがホットページの代わりとなるというように、メモリサブシステム(またはホストフラッシュデバイス)内においてほとんど重要(必要)ではないデータの転送に向けてバイアスされるあらかじめまたはプログラムによって選択するされた方法(例えば、図11Aに示されるようにアニール制御レジスタ内に格納する)に従って特定することが可能である。いずれの場合においても、オリジナルデータボリュームのネット格納要求が減少する後、現時点で値が小さいデータボリュームは755のメモリデバイス数が減少したメモリデバイスへ圧縮され、上述のN+アーキテクチャ(つまり、N+1、N+2、N+3等)にあるように1つ以上の予備または追加の予備メモリデバイスを得る。それゆえに、オリジナル格納配列がたとえ予備デバイスを含まないとしても、アニール操作を757にて上述のバックグラウンドアニール方法論および瞬間的アニール方法論に従い実行することができる。全てのメモリサブシステム(またはデバイスの対象とされたサブセット)のメモリデバイスのアニールが行われた後、データはメモリサブシステムまたはホストフラッシュデバイスが761にてオンラインに戻る時、再開された操作を有効とするため必要に応じて(759に示す)メモリサブシステムへ後退してデコードまたは転送することができる。
図25Aは、フォアグラウンドおよび/またはバックグラウンドアニール操作に関連してランタイムアニール可能なシステムの人間のオペレータへ提供することが可能である例示的ユーザインターフェース680を図示する。さらに具体的に、「アニールマネージャー」プログラムの起動(つまり、オペレータ可視のディスプレー上にてユーザインターフェース680を表示するインストラクションのシーケンスを実行するためのシステムプロセッサ(1つまたは複数)を指示し、インストラクションの参照はオペレータ入力に従ってアニール操作を実行する)そのシステムは、アニールに関連するステータス情報(例えば、最終アニールから経過した時間、最終アニールからの多数のプログラム/消去操作、プログラムおよび/またはビットの誤り率、デバイスプログラムミングに影響するよう要求されたプログラムサイクル数の履歴分析結果等)を収集し、アニールが必要であるかどうか、全てまたはデバイスのサブセット(および特にアニールを行うデバイス)のアニールを行うかどうか、対象のメモリデバイスの退避、アニールならびに再読込みを必要とされた見積もり時間、およびその他をユーザがそれら情報に基づいて決定することを可能にするための情報を提供することができる。
示される具体的な実施例に関して、アニールマネージャーユーザインターフェース680は、「File」、「Action」および「Help」と見出しされた例示的プルダウンメニューを含む。Fileメニューは683に示すように「Preferences」、「Print Report」および「Exit」を含むユーザが選択可能なメニューアイテムを提供し、一方Actionメニューは685に示すように「Select Target(s)」、「Start Anneal」、「Abort Anneal」および「Exit」のメニューアイテムを提供する。メニューのメニューアイテムは示されていないが、ユーザにアニール操作に関する情報を収集することを可能とすること、およびプルダウンメニュー介して様々なオプションならびに一般的なユーザインターフェースを利用可能とする様々なヘルプ機能およびステータスアイテムをを含んでもよい。
Fileメニューアイテムに関して「Preferences」は、アニールに関連する様々なオプションおよびプリファレンス(パラメータ)のオペレータ入力のためのプリファレンスウィンドウを得るため選択することができる。例えば、バックグラウンドアニールの有効化、並行アニールまたは逐次アニールの実行、あるいはアニールにとって必要であると示す問題である可能性のある様々な警告の可視/可聴、あるいは受動的および能動的退避段階に関連する閾値、あるいはトリガーとなるイベントの基準/指針、デバイス選択の基準/指針(つまり、プログラム可能な選択シーケンスを含むシステムがどのようにアニール対象および/または代替ストレージを選択するか)、ページテーブル管理オプション、接続形態の詳細な選択/オプション、アニール進行方法論、スクラッチメモリ使用方針、およびその他といったオプションの選択/有効をオペレータが試みることができる。さらにほとんどの場合、いずれの本明細書に記載される選択可能かつ様々なアニール関連のパラメータ(および/または選択、操作等)も、プリファレンスウィンドウ(または他のユーザインターフェースディスプレーは、アニールマネージャープログラムに関して利用可能である)を介してユーザへ提供することができる。
「Print Report」メニューアイテムは、過去または進行中のアニール操作に関連する様々なレポートを印刷するために選択可能であり、「Exit」メニューアイテムは、アニールマネージャープログラム(ユーティリティ)の実行を終了するために選択することができる。メニューに関して、「Select Memory」のメニューアイテムは所定のメモリサブシステム内において、アニールを行うために具体的なメモリサブシステムおよび/または具体的なメモリデバイスを特定するのに使用することができる。「start anneal」(アニール開始)および「start anneal」のメニューアイテムは、選択されたメモリデバイス(またはプリファレンス選定により保存された対象のデバイス)のそれぞれ起動および停止のために選択することができる。追加的/様々なメニューアイテムおよび/またはプルダウンメニューは、アニールマネージャープログラム内においてアプリケーションのニーズに従って提供することができる。
さらに例示的ユーザインターフェース680に関して、システム内において各アニール可能なメモリサブシステムを一覧化するため、およびアニールステータス(例えば、アニール要求、アニール進捗、最新の状態)、ストレージ容量、未使用のストレージ、ライフタイム(例えば、不揮発性メモリデバイスにおける残りのライフタイムを示すゲージ)、最終アニール操作の日付/時刻、および各ボリュームのアニール操作の完了見積もり時間(例えば、アニール進行中の場合の残り時間、またはアニールが実行中でない場合に要求される合計時間)を表示するために、ボリュームウィンドウ691を提供する。アニール完了のためのライフタイムゲージの見積もり時間に関して、この値は格納パラメータに基づいて前もって見積もりされることができ、周期的な測定に基づき決定することができる。このよう決定および測定は、新規のメンテナンスイベント(つまり、データ移行を含むソフトウェア初期メンテナンスイベント)に用いることもできる。その上、ユーザはあらかじめ定められた(例えば、プログラムされた)ライフタイムの数値が所定のデバイスまたはボリューム内においてなくなった時に任意にアニールを開始することを試みることができ、および/またはそのライフタイムが重大な閾値に達した時(例えば、5%または3%−−再度、あらかじめ定められたまたはプログラムされた閾値)、アニールは自動的に実行することができる。図25Aに示される特定の実施例において、3つのアニール可能なメモリサブシステムを、サブシステムAにおけるアニール要求、サブシステムCにおけるアニール要求がない、およびサブシステムXにおける進行中のアニール操作を表す。それゆえに、サブシステムXの残りのライフタイムゲージはアニール段階である意味で「n/a」として示される。
アニール進捗ウィンドウ693を、あらゆるアニール進捗の状況を示すためにさらに提供する。示される実施例において、サブシステムX内における進行中のアニール操作は67%完了しており、この時点で697に示されるようにアニール操作がストレージ容量の124ギガビット(Gb)を再要求(つまり、前使用にされていない状態から復旧された)された。ユーザ選択可能な制御ボタン(つまり、マウスまたは他のポインターデバイスのユーザ操作を通して作動または「クリック」することができるディスプレーイメージ)は、オペレータがフォアグラウンドアニール操作(制御ボタン701)の開始、実行中のアニール操作の停止(制御ボタン703)またはアニールステータスウィンドウ(制御ボタン705)を表示することを可能とすることを提供する。制御ボタン701、703、705はモーダル状態で利用可能またはシステムの状態に従いオペレータに利用できないようにすることができる。実施例に示される状態において、例えば「start anneal」ボタン701はアニールが既に進行中であるために利用できない(輪郭が影になった状態で示される)(留意する点として、システムリソースが許容する場合、複数のサブシステムはバックグラウンド、および/またはフォアグラウンドで同時にアニールを行うことは可能)。
例示的アニールステータスウィンドウ711は710に示され、アニール段階のメモリサブシステム(本ケースにおけるサブシステムX)の画像715を含み、構成要素であるデバイスのアニールが完了したこと、それらがアニールが進行中であること、およびそれらがまだアニールが行われていないことを示す。ステータスディスプレーが関連する格納ボリューム、および残された時間の見積もり時間は、示される実施例において繰り返す。多数の他のステータス値および詳細を提供することができ、アニールによる試験結果、依然として完全または部分的に操作不可能であると疑わしいまたは周知されるメモリデバイス、およびその他を含む。その上、多数のメモリデバイス(ただし全てではない)のフォアグラウンドアニール操作に対応するアニールステータスウィンドウ711を、同時にアニールを行う。アニールステータスウィンドウは、どの進行中のバックグラウンドアニール操作に関するステータスをも表すことができる、
図25Aのユーザインターフェースは、コントロールパネルアプリケーションまたはソフトウェア実装ユーティリティのようなオペレーティングシステム(例えば、Microsoft Windows(「Microsoft」および「Windows」はMicrosoft Corporationの1つ以上の商標によって保護されることができる))の実行を通して提供することができる。図25Bのフローチャートに典型的に示されるように、このようなソフトウェア実装ユーティリティは、実行した際に、メモリが多重素子格納システムの素子である(または構成要素)メモリメンテナンスイベントの必要性を監視し、データ退避オプションの選択に関連するユーザと対話することを可能とする。例えば、765におけるメンテナンスの必要性(またはデバイスの取り替えもしくはあらゆるデータ退避についての他の理由/動機)の検出の上で、ソフトウェアユーティリティはユーザに1セットの1つ以上のオプションで767のメモリからデータを再ルーティングすることを初めに促すことができ、ユーザ選択/仕様に応えて、ホストシステムのランタイムの間、メモリを受動的に退避する。したがって、ソフトウェアユーティリティは、769でユーザに2回目の(例えば、退避に関連する所定の条件が満たされた後に)1つ以上の付加的なオプションの1セットを促し、例えばこれらは、(i)メンテナンスイベントのシステム性能監視を行い、および/またはメモリの内容が格納システムの素子のもう別の1つへ移動および再配置されるメモリの能動的退避を行うことを含むがこれに限定されない。以下に述べるように、上述のユーザインターフェースいおよび関連する機能は、ソフトウェアプログラムのコンピュータ/プロセッサ実行(つまり、可読媒体機器上に格納することができる実行可能な命令)で実装すことができる。例えば、アニールマネージャーはオペレーティングシステムに関連する設定/管理ツールの一部となることができる。少なくとも一実施形態において、アニールマネージャーはユーザが見積もり残デバイスライフタイムへの定期的にアクセスすること、および/またはメンテナンスイベントの必要性の自動検出を待つことなしにユーザ指示のアニールを実装することを可能とすることができる。
アニール回路
図1への参照において上述されるように、選択集積回路デバイスをアニール温度に加熱するために使用されたアニール回路は、オンダイ、インパッケージ、またはインシステム実装することができる。図26はフラッシュメモリシステムの実施形態を図示する、例えば、アニール回路にインシステムとインパッケージ組み合わせを併用する。さらに具体的に、フラッシュコントローラ780は、1つ以上のフラッシュメモリをパッケージ内で逐次的にまたは同時に加熱するために使用される各インパッケージヒーターで、加熱制御および/または電力ををコントロール経路784を介しインパッケージヒーター787の1セットへ提供するヒーター/コントローラデバイス781(例えば、それ自体集積回路である)に、アニール制御インターフェース782が備わる。ヒーター/コントローラ、および/またはインパッケージヒーターの1セットは、電源論理レベル集積回路に(または少なくとも検出された、または区分された供給によって、および/またはヒーターロードの電力供給が可能な供給によって)使用されるそれらより高電圧(VA)で電力供給され、それらはしたがってアニール操作に必要不可欠な電力を届ける能力が特別に備わる。
示されるとおり、ダイナミックランダムアクセスメモリ(DRAM)785またはその他の種類のメモリは、スクラッチメモリ(スクラッチメモリを交互にフラッシュコントローラ内に含むことができる)を備えるため、インターフェース786を介しフラッシュコントローラに連結することができ、1つ以上の高速インターフェース(例えば第2世代、拡張された周辺構成相互接続バス(PCIe Gen2)があるがこれに限定されない)106を、1つ以上のホストデバイスがフラッシュコントローラとフラッシュメモリシステムへアクセスすることを可能とるよう提供することができる。コマンド、アドレスおよびデータ経路108は、システムアプリケーションに適切であるあらゆる接続形態に従ってフラッシュメモリデバイスとフラッシュコントローラ780間で連結することができる。
図27は、インパッケージ加熱構造を有し、図26のフラッシュメモリシステム内において使用することができるマルチダイフラッシュメモリパッケージ800の実施形態を図示する。示されるとおり、フラッシュメモリパッケージは、多重層(積層)回路基盤801に積み重なり、それぞれダイアタッチ加熱ブロック805を介してに取り付けられた4つのフラッシュメモリダイ8031〜8034の1セット(それ以上または少ないダイが提供される場合もある)を含む。多重層回路基盤は、ワイヤーボンド807またはダイ相互接続パッドがメモリダイ自体上でもう片側パッドに連結する他のダイ相互接続構造と共に、露出した回路基盤の表面のダイ相互接続パッドがはんだくず815または回路基盤の下面上で他の回路基盤相互接続構造へ結合するための導電性配分構造を含む。積み重ねたダイ803およびダイ相互接続構造807は、鋳造809または他の筺体によって封入することができる。
一実施形態において、詳細図810に示すように各ダイアタッチ加熱ブロック805を実装する。すなわち、最上層812は厚さおよそ12.5から25ミクロンの熱伝導性ダイアタッチテープまたはフィルムから形成されることができ、およそ2ワットメートル*毎度ケルビン(W/mK)の熱伝導性定数(「k」)を有する。示されるように、加熱ブロックまたは素子自体は中間層814を形成し、厚さおよそ25から50ミクロンのシリコンスペーサ(例えば、熱生成抵抗体を形成する)、あるいはポリイミド/FEP Thermofoil(商標)ヒーター(厚さおよそ75ミクロン)、または厚さおよそ1から5ミクロンのシリコン・オン・インシュレータ(SOI)層のうちのいずれかの1つ(またはそれらの組み合わせ)によって実装することができる。「Polyimide/FEP Thermofoil」および「Silicone Rubber Thermofoil」は、Minco Corporation(Minneapolis,Minnesota)の1つ以上の商標によって保護されることができ、およびシリコン・オン・インシュレータ層の実施例はSilicon Genesis Corporation(San Jose,California)によって製造されたものを含むことに留意されたい。最下層6は12.5から25ミクロンの範囲であり熱伝導性定数がおよそ0.2W/mである断熱ダイアタッチフィルムまたはテープから形成することができる。ここで留意すべきは、厚み、熱伝導性定数、数量および各ダイアタッチ加熱ブロックの層の材料/構造を実装することを、実施例のみとして提供し、意図した本開示の範囲から逸脱することなしに代替実施形態に変化する可能性がある。さらに一般的に、図27に示される積み重ねたダイパッケージは図26のシステム内において使用することのできるインパッケージ加熱装置における1つのみの実施例である(または本開示で記載されるメモリシステムのその他)。上記のインシステムおよびオンダイ加熱装置を含む他の加熱装置は代替実施形態において採用することができる。
電子表示−コンピュータ可読媒体
注意すべきは、ユーザインターフェースを提供すること、ユーザ入力を受信すること、および実行する基本アニール管理操作を実行することのために用いる図23のユーザインターフェース680および潜在プログラムコード(つまり、命令のシーケンスおよび関連データ)は、後で検索できるように、また、専用または汎用コンピュータシステムの1つ以上のプロセッサまたは一般電子製品もしくは装置内における実行するために、1つ以上のコンピュータ可読媒体上に記録することが可能である。このような命令およびデータが存在するコンピュータ可読媒体は具体化されてもよく、様々な形で機械読み込み可能な記憶媒体を含むが、これに限定されない。このような機械可読媒体の実施例は、例えば、その命令を機械の完全または部分制御下で抽出することができるコンピュータ、またはその他の物理デバイスの一種内におけるフロッピー(登録商標)ディスク、CD、DVD、アクティブRAMのような光学の、磁気の、または半導体の記憶媒体を含むが、これに限定されない。
本明細書に開示される種々の回路は、その挙動、レジスタ転送、論理構成要素、トランジスタ、レイアウト幾何学形状、および/または他の特徴の観点から、データおよび/または様々なコンピュータ可読媒体内で具体化されるインストラクションのように、本明細書に開示される様々な回路はコンピュータ支援ツールを使用して記載および表現(または、描写)されてもよい。それにかかる回路表現が実装されてもよい、ファイルおよび他のオブジェクトのフォーマットは、C、Verilog、およびVHDL等の挙動言語対応フォーマット、RTL等のレジスタレベル記述言語対応フォーマット、およびGDSII、GDSIII、GDSIV、CIF、MEBES等の幾何学形状記述言語対応フォーマット、ならびにあらゆる他の好適なフォーマットおよび言語を含むが、それらに限定されない。このようなフォーマットされたデータおよび/または命令を有するコンピュータ可読媒体は具体化されてもよく、上記の機械読み込み可能な記憶媒体様々な形態(例えば、光学の、磁気の、または半導体の記憶媒体)を含むが、これに限定されない。
1つ以上のコンピュータ可読媒体を介して、コンピュータシステム内で受信されると、前述の回路のかかるデータおよび/または命令ベースの表現は、ネットリスト生成プログラム、場所およびルートプログラム等を含むが、それらに限定されない、1つ以上の他のコンピュータプログラムの実行と併せて、コンピュータシステム内の処理エンティティ(例えば、1つ以上のプロセッサ)によって処理され、かかる回路の物理的明示の描写およびイメージを生成してもよい。かかる描写およびイメージは、例えば、素子製造プロセスにおいて、回路の種々の構成要素を形成するために使用される、1つ以上のマスクの生成を有効にすることによって、その後、素子製造において使用されてもよい。
前述の説明および付随の図面では、特定の用語および図面記号が、本発明の完全な理解を提供するために記載された。いくつかの事例では、用語および記号は、本発明を実践するために要求されない、特定の詳細を含意する場合がある。例えば、特定の数のビット、信号経路幅、信号伝達または動作周波数、構成要素回路または素子等のいずれも、代替実施形態において、前述のものと異なってもよい。その上、回路素子間または示されるもしくは多心信号線として記載される回路ブロックの相互接続は、代替として単心信号線であってもよく、単心信号線は代替として多心信号線であってもよい。シングルエンドとして示されているもしくは記載されている信号および信号経路は、差動であってもよく逆の場合もまた同様である。同様に、記載されたまたはアクティブハイまたはアクティブローの論理レベルを有するよう描かれた信号は、代替実施形態において逆論理レベルを有することができる。集積回路デバイス内の構成要素回路は、論理かつアナログ回路を実装してもよい金属酸化膜半導体(MOS)技術、バイポーラ技術、またはその他の技術を用いて実装することができる。用語に関しては、特定の条件を示すために信号がローまたはハイ論理状態になる場合(または、充電されてハイ論理状態になった場合もしくはまたは放電されてロー論理状態になった場合)、信号は「アサート」と呼ばれる。一方で、信号がアサート状態以外の状態(ハイまたはロー論理状態、またはオープンドレインまたはオープンコレクター条件のような信号駆動回路がハイインピーダンス条件に推移した場合に起こる可能性のある浮遊状態を含む)になる(または充電もしくは放電)ことを示すため、信号は「アサート停止」といわれる。信号駆動回路は、信号駆動回路がその信号を信号駆動回路と信号受信回路の間で連結した信号線上にアサート(または、明示的に記載または文脈によって示される場合、アサート停止)すると、信号を信号受信回路へ「出力」することになっている。信号線は、信号線上にアサートされる時「アクティブである」といわれ、その信号がアサート停止される時、「非アクティブである」といわれる。さらに、信号名につけられたプレフィックス記号「/」は、その信号がアクティブローの信号(つまり、アサート状態が論理ローの状態)であることを示す。信号名上につけられた線は(例えば、‘ ’)アクティブローの論理信号を示すのにさらに用いられる。用語「連結される」は、本明細書では、直接接続ならびに1つ以上の介在回路または構造を通した接続を表すために使用される。集積回路デバイス「プログラミング」は、例えば、ホスト命令に応答して、レジスタまたは他のデバイスの格納回路に制御値をロードする、そしてそれに従ってデバイスの操作可能な態様の制御、デバイス設定の確立、またはワンタイムプログラミング動作(例えば、素子生産の際、構成回路内のヒューズを飛ばす)を通したデバイスの操作可能な態様の制御、および/またはデバイスの1つ以上の選択されたピンまたは他の接続構造を基準電圧線(また、均圧環とも称される)に接続し、特定の素子構成または素子の動作態様を確立することを含んでもよいが、それらに限定されない。用語「例示的」は、選好または要件ではなく、実施例として表すために使用される。
前述の原理の様々な実施が起こるであろうことも当業者に容易に評価されるべきである。
例えば、記載されるように、上記に提供された受動的退避技術を、後の交換または他のメンテナンスのためにデバイス(例えば、不揮発性メモリ)の整備に用いることができる。上記に触れたように、このような退避に適用できる技術は、画期的なでき事またはユーザ指示の実装に応えて要求されるかつ引き起こされる場合、能動的退避が続く受動的退避を含む次第に発展した退避を含むことができる。これらの技術はハードウェア(アニールコントローラのような)によってソフトウェアにアンロードされたこれらの機能のいくつか、ほどんど、または全てを用いて管理することができる。上記に記載された工程からの他の特性は、これら技術と適切に組み合わせることができる。
アニール可能なデバイスおよびアニールコントローラに基づく他のアーキテクチャをさらに使用することもできる。例えば図26に例示されるように、システムはメモリコントローラ、多層アニール可能なデバイス(例えば、加熱素子を有する集積回路)、およびそれぞれのアニール可能なデバイスのための加熱素子回路の制御経路を有するアニールコントローラを備えることができる。アニールコントローラはとりわけ各アニールプロセスを駆動しヒーター制御回路の機能を果たすために使用された比較的高電圧の補給品を制御することができる。高電圧補給品をアニールコントローラと一体化する、または分離したチップ(IC)を介して実装することのどちらかを実現でき、アニールコントローラをメモリコントローラと結合することができる、または分離IC内に実装することもできる。
また、上述の技術のいずれをも、メモリがメンテナンスイベントの必要性を検出する上でユーザが行動を起こすことを可能とする、およびあらかじめ定められたまたはプログラム可能な画期的な出来事(例えば、アニール、またはより緊急性となる他のメンテナンス)において、ユーザが行動を起こすことを可能とする多重の素子格納システムの1つの素子であるメモリメンテナンスイベントの必要性を監視するデバイス内に実装することができる。このようなシステムは、適切なソフトウェアを実行する。汎用コンピュータシステムを含むことができる。ユーザへは、システムのランタイム間のメモリの受動的または能動的退避を行うため、そのメモリからの再ルーティングデータにおける1つ以上のオプションの1セットが提供されてもよい、例えばユーザは、同一階層、第2のストレージ、もしくはコントローラ「スクラッチ」メモリ内の一時的ストレージ内における他のデバイス(例えば、メインメモリ内のフラッシュデバイス)への退避、またはキャッシュすることを含む退避の方法論を選択することができる。一実施例において、これらの機能をコンピュータオペレーティングシステムの一部として、または既存のコンピュータシステムへのインストールのための配布されたソフトウェアとして提供することができる。
上記に例示された原理の別の形態は、階層の1つで行われているアニールサイクルでメモリの多重の階層が管理される実施形態であり、退避および/またはデータは、メモリにおける他の階層の1つに依存しているアニールに続いて復元する。例えば、メモリの他の階層がプロセッサキャッシュおよび任意の第2のハードディスクストレージを含むことができる一方、上記に紹介したようにアニール可能なデバイスはメインメモリの一部または全てを構成する多重のフラッシュデバイスを含むことができる。このような実装は、ライフタイムに効果的なポータブルデバイスを拡張するためのアニールまたはメモリ交換の使用で不揮発性のメインメモリ(例えば、携帯用またはラップトップコンピュータ)を起源とするポータブルデバイスの開発を促進する。
別の実装において、これらの技術は最大許容書き込みサイクル、時間周期、測定された基準、または上述の他のパラメータを使用することに基づきユーザに残りのデバイスライフタイムの表示またはゲージ(例えば、統計図表)を表示するソフトウェアユーティリティで使用することもできる。このようなゲージはさらに、データ退避または別の方法として交換またはメンテナンスのためのメモリを整備することを選択的に実行する論理を採用することもできる。このようなソフトウェアユーティリティを、オペレーティングシステムの一部として配布するか、または独立したソフトウェアとして配布することが可能であり、アニール能力があってもよく、なくてもよい。
一般的に、上記に提供された本原理は、インシステムアニール、またさもなければ、メモリ内容を退避するアニールまたはメンテナンスの実行、およびメモリを補充するメモリデバイスのメンテナンスの適切な実行の方法を提供する。いくつかの実施形態のため、退避ステップをアニールに先立って実行してもよく、あるいは、他の実施形態において(例えば、RAIDシステムのようにデータのバックアップが既に存在する)、退避ステップは後のアニール(または後のメンテナンスステップ)、つまり、事前の退避がないこと、補給ステップを通して再構築される冗長性と、退避の変わりに置換することができる。これらの技術をフラッシュメモリで、またはメモリの他の形態で適用することができる。
本発明がそれらの具体的な実施形態を参照して記載されている間、本発明の広範な精神および範囲から逸脱することなく様々な修正および変更を行うことができるのは明らかであろう。例えば、あらゆる実施形態の特性または態様は、実施形態のその他と組み合わせて、または同等の特性またはそれらの態様に代えて、少なくとも実行可能なところにおいて適用してもよい。したがって、本明細書および図面は説明上のもので制約的なものでない。