(57)【要約】  マルチコアオンダイメモリコントローラ１５０のための装置、システム、方法、及びコンピュータプログラムプロダクトが開示される。集積回路デバイス１２３、２１２、７００は、不揮発性メモリセルのアレイ２００及びマイクロコントローラユニット１５０を含む。マイクロコントローラユニット１５０は、複数の処理ユニット３０２、４０２、４０４を含む。異なる処理ユニット３０２、４０２、４０４は、不揮発性メモリセルのアレイ２００に対して異なるカテゴリのタスクを並列に実行する。【選択図】図２
2020510951.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
集積回路デバイス内の不揮発性メモリセルのアレイと、
前記集積回路デバイス内のマイクロコントローラユニットと、
前記マイクロコントローラユニットの複数の処理ユニットであって、異なる処理ユニットは、前記不揮発性メモリセルのアレイに対して異なるカテゴリのタスクを並列に実行する、複数の処理ユニットと、を備える、装置。
【請求項２】
前記集積回路デバイス内に１つ以上の追加のマイクロコントローラユニットを更に備え、前記１つ以上の追加のマイクロコントローラユニットは、前記マイクロコントローラユニットよりも少ない処理ユニットを含み、より少ないカテゴリのタスクを実行する、請求項１に記載の装置。
【請求項３】
前記マイクロコントローラユニットの前記複数の処理ユニットが、前記不揮発性メモリセルのアレイ上で複数のテスト動作を実行するように構成された組み込み自己テストユニットを含み、前記１つ以上の追加のマイクロコントローラユニットの前記より少ない処理ユニットが、組み込み自己テストユニットを有しない、請求項２に記載の装置。
【請求項４】
前記マイクロコントローラユニットの前記複数の処理ユニットが、前記不揮発性メモリセルのアレイ上でプログラム動作及び読み出し動作を実行するように構成されており、前記１つ以上の追加のマイクロコントローラユニットの前記より少ない処理ユニットが、前記不揮発性メモリセルのアレイ上で読み出し動作を実行し、かつプログラム動作を実行しないよう、構成されている、請求項２に記載の装置。
【請求項５】
前記マイクロコントローラユニットが、前記不揮発性メモリセルのアレイの各サブセット上で前記プログラム動作を実行するように構成されており、前記１つ以上の追加のマイクロコントローラユニットが、前記不揮発性メモリセルのアレイの異なるサブセット上で読み出し動作を実行するように構成されている、請求項４に記載の装置。
【請求項６】
前記不揮発性メモリセルのアレイが、前記集積回路デバイスの第１のレベル内にあり、前記マイクロコントローラユニットが、前記集積回路デバイスの第２のレベル内にあり、前記第２のレベルは、前記第１のレベルと平行であり、かつ前記第１のレベルからオフセットされている、請求項１に記載の装置。
【請求項７】
前記マイクロコントローラユニットのクロックレートは、前記マイクロコントローラが、前記不揮発性メモリセルのアレイ上でのデータ操作を、前記データ操作の待ち時間を増大させることなく単一の処理ユニットで直列に実行することができるクロックレートよりも低く設定され、前記マイクロコントローラユニットの前記複数の処理ユニットは、前記不揮発性メモリセルのアレイ上でのデータ操作を、前記データ操作の待ち時間を増大させることなく、前記設定されたクロックレートで並列に実行する、請求項１に記載の装置。
【請求項８】
前記マイクロコントローラユニットの前記複数の処理ユニットが、前記異なるカテゴリのタスクに関連付けられた異なる命令セットをサポートする、請求項１に記載の装置。
【請求項９】
前記複数の処理ユニットが、フロー制御処理ユニット、タイミング制御処理ユニット、電圧制御処理ユニット、及びデータラッチ制御処理ユニットのうちの１つ以上を含む、請求項１に記載の装置。
【請求項１０】
前記異なるカテゴリのタスクが、フロー制御タスク、タイミング制御タスク、データラッチ制御タスク、電圧制御タスク、及び組み込み自己テストタスクのうちの１つ以上を含む、請求項１に記載の装置。
【請求項１１】
前記集積回路デバイスの揮発性メモリであって、前記複数の処理ユニットが、前記異なるカテゴリのタスクを実行するために前記揮発性メモリ内にデータを記憶する、揮発性メモリを更に備え、前記複数の処理ユニットの組み込み自己テストユニットが、前記不揮発性メモリセルのアレイから読み出されたテストデータを前記揮発性メモリの部分に記憶し、前記揮発性メモリの前記部分は、前記組み込み自己テストユニットのテストモードにないとき、前記複数の処理ユニットの他の処理ユニットによって別な方法で使用される、請求項１に記載の装置。
【請求項１２】
システムであって、
不揮発性メモリメディアを含む集積回路デバイスと、
前記不揮発性メモリメディアのためのタスクを実行するための複数の処理ユニットを有するマイクロコントローラと、
前記マイクロコントローラよりも少ない処理ユニットを含む１つ以上の追加のマイクロコントローラと、を含む、システム。
【請求項１３】
前記複数の処理ユニットの異なる処理ユニットが、前記不揮発性メモリメディアに対して異なる種類のタスクを並列に実行し、前記１つ以上の追加のマイクロコントローラが、前記マイクロコントローラよりも少ない種類のタスクを実行する、請求項１２に記載のシステム。
【請求項１４】
前記不揮発性メモリメディアが、前記集積回路デバイスの第１のレベル内に配設され、前記マイクロコントローラ及び前記１つ以上の追加のマイクロコントローラが、前記集積回路デバイスの第２のレベル内に配設されており、前記第２のレベルは、前記第１のレベルと平行であり、かつ前記第１のレベルからオフセットされている、請求項１２に記載のシステム。
【請求項１５】
前記マイクロコントローラの前記複数の処理ユニットが、前記不揮発性メモリメディア上で複数のテスト動作を実行するように構成された組み込み自己テストユニットを含み、前記１つ以上の追加のマイクロコントローラの前記より少ない処理ユニットが、組み込み自己テストユニットを有しない、請求項１２に記載のシステム。
【請求項１６】
前記マイクロコントローラの前記複数の処理ユニットが、前記不揮発性メモリメディア上でプログラム動作及び読み出し動作を実行するように構成されており、前記１つ以上の追加のマイクロコントローラの前記より少ない処理ユニットが、前記不揮発性メモリメディア上で読み出し動作を実行し、かつプログラム動作を実行しないよう、構成されている、請求項１２に記載のシステム。
【請求項１７】
前記マイクロコントローラユニットが、前記不揮発性メモリメディアの各ダイプレーン上で前記プログラム動作を実行するように構成されており、前記１つ以上の追加のマイクロコントローラユニットが、前記不揮発性メモリメディアの異なるダイプレーン上で読み出し動作を実行するように構成されている、請求項１６に記載のシステム。
【請求項１８】
装置であって、
データを記憶する手段と、
前記データを記憶する手段のためのタスクをタスクのカテゴリでソートする手段と、
前記データを記憶する手段のための異なる処理ユニットを使用して、前記データを記憶する手段のための異なるカテゴリのタスクを並列に実行する手段と、を備える、装置。
【請求項１９】
前記データを記憶する手段のための異なるセットの処理ユニットを使用して、前記データを記憶する手段のためのより少ないカテゴリのタスクを実行する手段を更に備える、請求項１８に記載の装置。
【請求項２０】
前記データを記憶する手段が、集積回路デバイスの第１のレベル内に配設され、前記異なるカテゴリのタスクを実行する手段及び前記異なる処理ユニットが、前記集積回路デバイスの第２のレベル内に配設されており、前記第２のレベルは、前記第１のレベルと平行であり、かつ前記第１のレベルからオフセットされている、請求項１８に記載の装置。
【請求項２１】
方法であって、
メモリ動作の要求を受信することと、
前記メモリ動作を完了するための複数のタスクを判定することであって、前記複数のタスクの異なるタスクは、異なる命令セットに関連付けられている、ことと、
マイクロコントローラの異なる処理ユニットを使用して、前記複数のタスクの前記異なるタスクを並列に実行することであって、前記異なる処理ユニットは、前記異なる命令セットをサポートする、ことと、を含む、方法。
【請求項２２】
前記マイクロコントローラより少ない処理ユニットを有する追加のマイクロコントローラを使用して後続のメモリ動作を実行することと、より少ない命令セットをサポートすることと、を更に含む、請求項２１に記載の方法。
【請求項２３】
装置であって、
集積回路デバイスのメモリアレイのためのマイクロコントローラであって、前記マイクロコントローラが、
第１の処理ユニットを使用して、メモリ動作のための複数のタスクを選択し、
第２の処理ユニットを使用して、前記メモリ動作のための前記複数のタスクのタイミングを制御し、
第３の処理ユニットを使用して、前記メモリ動作のための前記複数のタスクのための電圧を設定する、ように構成されている、マイクロコントローラを備える、装置。
【請求項２４】
前記集積回路デバイスのための１つ以上の追加のマイクロコントローラを更に備え、前記１つ以上の追加のマイクロコントローラユニットは、前記マイクロコントローラよりも少ない処理ユニットを含む、請求項２３に記載の装置。
【請求項２５】
前記マイクロコントローラが、プログラム動作、読み出し動作、及びテスト動作を実行するように構成されており、前記１つ以上の追加のマイクロコントローラが、読み出し動作を実行し、かつプログラム動作及びテスト動作を実行しないよう、構成されている、請求項２４に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、様々な実施形態において、不揮発性及び／又は揮発性メモリに関し、より詳細には、不揮発性及び／又は揮発性メモリ用のオンダイメモリマイクロコントローラに関する。
【背景技術】
【０００２】
メモリデバイスは、メモリデバイスの特定の動作を制御する状態マシンを有し得る。しかしながら、ひとたび状態マシンが「テープアウト」され、生産状態になると、誤り又は設計欠陥に対処するために行うことができる変更は、あってもごくわずかであり、設計サイクルを大幅に延ばすことのない開発及び試験の柔軟性は制限される。
【発明の概要】
【０００３】
マルチコアオンダイメモリコントローラのための装置、システム、方法、及びコンピュータプログラムプロダクトが開示される。一実施形態では、装置は、集積回路デバイス内の不揮発性メモリセルのアレイを含む。装置は、更なる実施形態において、集積回路デバイス内のマイクロコントローラユニットを含む。ある実施形態では、装置は、マイクロコントローラユニットの複数の処理ユニットを含む。異なる処理ユニットは、いくつかの実施形態において、不揮発性メモリセルのアレイに対して異なるカテゴリのタスクを並列に実行する。
【０００４】
システムは、一実施形態において、１つ以上の層をそれぞれ含んでいる複数のレベルを含む集積回路デバイスを含む。集積回路デバイスの第１のレベルは、ある実施形態において、不揮発性メモリメディアを含む。更なる実施形態では、集積回路デバイスの第２のレベルは、第１のレベルと平行であり、かつ第１のレベルからオフセットされている。集積回路デバイスの第２のレベルは、一実施形態において、複数の処理ユニットを有するマイクロコントローラを含む。異なる処理ユニットは、様々な実施形態において、不揮発性メモリメディアに対して異なる種類のタスクを並列に実行する。
【０００５】
別の装置は、ある実施形態において、データを記憶する手段を含む。一実施形態では、装置は、データを記憶する手段のためのタスクをタスクのカテゴリでソートする手段を含む。装置は、いくつかの実施形態において、データを記憶する手段のための異なる処理ユニットを使用して、データを記憶する手段のための異なるカテゴリのタスクを並列に実行する手段を含む。
【０００６】
方法は、一実施形態において、メモリ動作の要求を受信することを含む。ある実施形態では、方法は、メモリ動作を完了するための複数のタスクを判定することを含む。複数のタスクの異なるタスクは、一実施形態において、異なる命令セットに関連付けられている。方法は、いくつかの実施形態において、マイクロコントローラの異なる処理ユニットを使用して、複数のタスクの異なるタスクを並列に実行することを含む。異なる処理ユニットは、一実施形態において、異なる命令セットをサポートする。
【０００７】
更なる装置は、いくつかの実施形態において、集積回路デバイスのメモリアレイのためのマイクロコントローラを含む。マイクロコントローラは、一実施形態において、第１の処理ユニットを使用してメモリ動作のための複数のタスクを選択するように構成されている。マイクロコントローラは、更なる実施形態において、第２の処理ユニットを使用してメモリ動作のための複数のタスクのタイミングを制御するように構成されている。ある実施形態では、マイクロコントローラは、第３の処理ユニットを使用してメモリ動作のための複数のタスクのための電圧を設定するように構成されている。
添付図面に示される特定の実施形態を参照して、以下により詳しい説明を含める。これらの図面は本開示のある実施形態のみを示し、したがってその範囲を限定するものとして見なされるべきではないと理解した上で、以下の添付図面を使用して、付加的な特殊性及び詳細を伴って本開示を記述し説明する。
【図面の簡単な説明】
【０００８】
【図１】オンダイメモリマイクロコントローラのためのシステムの一実施形態を示す概略的なブロック図である。
【図２】オンダイメモリマイクロコントローラのためのシステムの別の実施形態を示す概略的なブロック図である。
【図３】オンダイメモリマイクロコントローラの一実施形態を示す概略的なブロック図である。
【図４】オンダイメモリマイクロコントローラの更なる実施形態を示す概略的なブロック図である。
【図５】複数のオンダイメモリマイクロコントローラコアを有するシステムの一実施形態を示す概略的なブロック図である。
【図６】複数のオンダイメモリマイクロコントローラコアを有するシステムの別の実施形態を示す概略的なブロック図である。
【図７】オンダイメモリマイクロコントローラを有する集積回路デバイスの一実施形態を示す概略的なブロック図である。
【図８】オンダイメモリマイクロコントローラのための方法の一実施形態を示す概略的なフローチャート図である。
【図９】オンダイメモリマイクロコントローラのための方法の更なる実施形態を示す概略的なフローチャート図である。
【発明を実施するための形態】
【０００９】
本開示の態様は、装置、システム、方法、又はコンピュータプログラムプロダクトとして具現化され得る。よって、本開示の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又はソフトウェアの態様及びハードウェアの態様を組み合わせた実施形態の形をとってもよく、これら全ては概して本明細書において「回路」、「モジュール」、「装置」、又は「システム」として参照され得る。更に、本開示の態様は、コンピュータ可読の及び／又は実行可能なプログラムコードを記憶する１つ以上の非一時的コンピュータ可読のストレージメディアにおいて具現化されるコンピュータプログラムプロダクトの形をとってもよい。
【００１０】
本明細書に記載の機能ユニットの多くは、その実装独立性をより強調するためにモジュールとしてラベル化されている。例えば、モジュールは、カスタムＶＬＳＩ回路又はゲートアレイ、論理チップ、トランジスタ、又は他のディスクリート部品等の市販の半導体、を含むハードウェア回路として実装されてもよい。モジュールは、フィールドプログラマブル・ゲートアレイ、プログラマブルアレイロジック、プログラマブルロジックデバイス等の、プログラマブルハードウェアに実装されてもよい。
【００１１】
モジュールは、様々なタイプのプロセッサによって実行されるソフトウェアにおいて、少なくとも部分的に実装されてもよい。実行可能コードの特定されたモジュールは、例えば、オブジェクト、プロシジャ、又は機能として編成され得るコンピュータ命令の１つ以上の物理又は論理ブロックを例えば備えてもよい。それにもかかわらず、特定されたモジュールの実行可能ファイルは、物理的に一緒に位置する必要はないが、論理的に結合された場合にモジュールを備え、モジュールのための上記目的を達成する、異なる位置に記憶された異種命令を備えてもよい。
【００１２】
実際に、実行可能コードのモジュールは、単一の命令、又は多くの命令を含んでもよく、いくつかの異なるコードセグメントにわたって、いくつかの異なるプログラムの中で、いくつかのメモリデバイス等を介して分配されてもよい。モジュール又はモジュールの一部をソフトウェアで実装した場合、ソフトウェアの部分は１つ以上のコンピュータ可読の及び／又はコンピュータ実行可能なストレージメディア上に記憶されてもよい。１つ以上のコンピュータ可読のストレージメディアの任意の組み合わせが利用されてもよい。コンピュータ可読のストレージメディアは、例えば、限定されないが、電子的、磁気的、光学的、電磁的、赤外線の、又は半導体の、システム、装置、又はデバイス、又はこれらの適切な任意の組み合わせを含んでもよいが、伝播する信号を含むものではない。この文書の文脈では、コンピュータ可読の及び／又はコンピュータ実行可能なストレージメディアは、命令実行システム、装置、プロセッサ、又はデバイスによって又はそれらと関連して使用されるプログラムを含み得る又は記憶し得る有形及び／又は非一時的な媒体であってもよい。
【００１３】
本開示の態様のための動作を実行するためのコンピュータプログラムコードは、Ｐｙｔｈｏｎ、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋、Ｃ＃、Ｏｂｊｅｃｔｉｖｅ  Ｃ等のオブジェクト指向プログラミング言語、「Ｃ」プログラミング言語等の従来のプロシジャプログラミング言語、スクリプトプログラミング言語、及び／又は他の同様なプログラミング言語を含む、１つ以上のプログラミング言語の任意の組み合わせで書き込まれてもよい。プログラムコードは、１つ以上のユーザのコンピュータ上で及び／又はリモートコンピュータ若しくはサーバ上でデータネットワーク等を介して、部分的又は全体的に実行されてもよい。
【００１４】
構成要素は、本明細書で用いられるとき、有形で、物理的で、非一時的なデバイスを構成する。例えば、構成要素は、カスタムＶＬＳＩの回路、ゲートアレイ、若しくは他の集積回路を備えるハードウェア論理回路、論理チップ、トランジスタ、若しくは他のディスクリートデバイス等の市販の半導体の装置、及び／又は他の機械的若しくは電気的なデバイスとして実装されてもよい。構成要素はまた、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、プログラマブルロジックデバイス等の、プログラマブルハードウェアに実装されてもよい。構成要素は、プリント回路基板（ＰＣＢ）の電気線等を介して１つ以上の他の構成要素と電気的通信を行う、１つ以上のシリコン集積回路デバイス（例えば、チップ、ダイ、ダイプレーン、パッケージ）、又は他のディスクリート電気素子を備えてもよい。本明細書で説明されるモジュールの各々は、ある実施形態では、代替的に、構成要素によって具現化されるか又は構成要素として実装されてもよい。
【００１５】
回路は、本明細書で使用されるとき、電流のための１つ以上の経路を提供する１つ以上の電気的及び／又は電子的構成要素のセットを含む。ある実施形態では、回路は、回路が閉ループであるように、電流のための戻り経路を含んでもよい。しかしながら、別の実施形態では、電流のための戻り経路を含まない構成要素のセットが回路（例えば、開ループ）と称されてもよい。例えば、集積回路が（電流のための戻り経路として）接地に結合されているかどうかにかかわらず、集積回路は回路と称されてもよい。様々な実施形態では、回路は、集積回路の一部、集積回路、集積回路のセット、又は集積回路デバイスを有する若しくは有しない非集積型電気的構成要素及び／若しくは電気的構成要素のセット等を含んでもよい。一実施形態では、回路は、カスタムＶＬＳＩ回路、ゲートアレイ、論理回路、若しくは他の集積回路、論理チップ、トランジスタ、若しくは他のディスクリートデバイス等の市販の半導体、及び／又は他の機械的若しくは電気的デバイスを含んでもよい。回路はまた、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、プログラマブルロジックデバイス等のプログラマブルハードウェアデバイス内の合成された回路として（例えば、ファームウェア、ネットリスト等として）実装されてもよい。回路は、プリント回路基板（ＰＣＢ）の電気線等を介して１つ以上の他の構成要素と電気的通信を行う、１つ以上のシリコン集積回路デバイス（例えば、チップ、ダイ、ダイプレーン、パッケージ）、又は他のディスクリート電気素子を備えてもよい。本明細書で説明されるモジュールの各々は、ある実施形態では、回路によって具現化されるか又は回路として実装されてもよい。
【００１６】
本明細書の全体を通して、「一実施形態（one embodiment）」、「一実施形態（an embodiment）」、又はそれに類似した言葉の参照は、本実施形態に関連して記載される特定の特徴、構造、又は特性が、本開示の少なくとも１つの実施形態に含まれることを意味する。よって、本明細書の全体を通して、「一実施形態では（in one embodiment）」、「一実施形態では（in an embodiment）」、及びそれに類似した言葉の語句の表記は、必ずしも全て同一の実施形態を参照するのではなく、特に明示しない限り、「１つ以上ではあるが全てではない実施形態」を意味し得る。「含む（including）」、「備える（comprising）」、「有する（having）」という用語及びそれらの変形は、特に明示しない限り、「〜を含むが、限定されない」ことを意味する。列挙された項目の一覧は、特に明示しない限り、それらの項目のいずれか又は全てを相互に排他する及び／又は相互に含めることを暗に意味するものではない。「ａ」、「ａｎ」、及び「ｔｈｅ」はまた、特に明示しない限り、「１つ以上」を表す。
【００１７】
本開示の態様は、本開示の実施形態に従って、方法、装置、システム、及びコンピュータプログラムプロダクトの概略的なフローチャート図及び／又は概略的なブロック図を参照して以下に説明される。概略的なフローチャート図及び／又は概略的なブロック図の各ブロック、並びに、概略的なフローチャート図及び／又は概略的なブロック図におけるブロックの組み合わせは、コンピュータプログラム命令によって実施することができると理解される。これらのコンピュータプログラム命令は、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサに提供されて、プロセッサ又は他のプログラマブルデータ処理装置を介して実行する命令が、概略的なフローチャート図及び／又は概略的なブロック図のブロック（単数又は複数）で指定された機能及び／又は作用を実施するための手段を生成するように、マシンを作成してもよい。
【００１８】
なお、いくつかの代替の実施形態では、ブロック内で示された機能は、図において示された順序とは異なって生じてもよい。例えば、連続して示す２つのブロックが実質的に並行して実行されてもよいし、又はそれらのブロックが、関連する機能に応じて逆の順序で実行される場合があってもよい。他の工程及び方法として、機能、論理、又は効果の点で、示された図の１つ以上のブロック、又はその部分と同等なものを着想してもよい。様々な矢印のタイプ及び線のタイプがフローチャート及び／又はブロック図で用いられ得るが、それらは対応する実施形態の範囲を限定しないものとして理解される。例えば、矢印は、図示された実施形態の列挙された工程間の不特定の継続時間の待ち又は監視期間を示してもよい。
【００１９】
以下の詳細な説明では、その一部をなす添付図面を参照する。前述した概要は、例示的なものにすぎず、いかようにも限定することを意図していない。上述した例示的な態様、実施形態、及び特徴に加えて、更なる態様、実施形態、及び特徴を、図面及び以下の詳細な説明を参照することにより明らかにする。各図における要素の説明は、先の図の要素を参照し得る。同じ番号は、図において同じ要素を参照する場合があり、それは同じ要素の代替実施形態を含む。
【００２０】
図１は、オンダイメモリマイクロコントローラ１５０のためのシステム１００の一実施形態のブロック図である。システム１００は、不揮発性及び／又は揮発性メモリデバイス１２０のメモリメディア１２２のための１つ以上のマイクロコントローラ１５０を備える。マイクロコントローラ１５０は、不揮発性及び／又は揮発性メモリ素子１２３の一部であってもよく、不揮発性及び／又は揮発性メモリメディアコントローラ１２６、デバイスドライバ等と通信してもよい。いくつかの実施形態では、マイクロコントローラ１５０は、コンピューティングデバイス１１０の不揮発性及び／又は揮発性メモリシステム１０２上で少なくとも部分的に動作し、かつ／又はこれと通信してもよく、コンピューティングデバイス１１０は、プロセッサ１１１、揮発性メモリ１１２、及び通信インターフェース１１３を備え得る。プロセッサ１１１は、１つ以上の中央処理装置、１つ以上の汎用プロセッサ、１つ以上の特定用途向けプロセッサ、１つ以上の仮想プロセッサ（例えば、コンピューティングデバイス１１０は、ホスト内で動作する仮想マシンであってもよい）、１つ以上のプロセッサコア等を備えてもよい。通信インターフェース１１３は、コンピューティングデバイス１１０及び／又はメモリコントローラ１２６を、例えば、インターネットプロトコル（ＩＰ）ネットワーク、ストレージエリアネットワーク（ＳＡＮ）、無線ネットワーク、有線ネットワーク等の通信ネットワーク１１５に通信可能に結合するように構成された１つ以上のネットワークインターフェースを備えてもよい。
【００２１】
マイクロコントローラ１５０は、本明細書で使用されるとき、メモリメディア１２２のダイ及び／又はチップ１２３（例えば、メモリ素子１２３又は他の集積回路デバイス）等の、１つ以上の回路又は他の論理ハードウェアを備える。例えば、一実施形態では、マイクロコントローラ１５０は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）等のプログラマブルロジックデバイス上に配置及び／又はルーティングされた合成可能な論理（例えば、Ｖｅｒｉｌｏｇ、ＶＨＳＩＣハードウェア記述言語（ＶＨＤＬ）等のハードウェア記述言語、ゲートレベルのネットリスト、ソフトコア、及び／又は別の論理設計で定義されたもの）、特定用途向け集積回路（ＡＳＩＣ）デバイスとして製造されたもの、及び／又は別の集積回路デバイス１２３を備えてもよい。更なる実施形態では、マイクロコントローラ１５０は、アナログ及び／又は混合信号論理（例えば、トランジスタレイアウトフォーマット、ＡＳＩＣ、ディスクリートロジック部品、ハードコア、及び／又は別の集積回路デバイス１２３で定義及び／又は設計されたもの）を備えてもよい。
【００２２】
マイクロコントローラ１５０は、管理機能等の、メモリメディア１２２のメモリ素子１２３のための１つ以上のタスクを実行及び／又は制御してもよい。マイクロコントローラ１５０は、タスク又は動作を実行するためにマイクロコード又は他のコンピュータ実行可能コード（例えば、命令セット）を処理及び／又は実行する、１つ以上の処理ユニット、処理コア等を備えてもよい。このように、新しい集積回路デバイスの製造又はファームウェアのアップグレードの代わりに、又はそれに加えて、マイクロコントローラ１５０の１つ以上の機能及び／又はタスクは、マイクロコントローラ１５０のマイクロコード又は他のコンピュータ実行可能コードを変更及び／又は更新することによって更新されてもよい。マイクロコントローラ１５０は、マイクロコントローラ１５０が、マイクロコードを記憶する、メモリメディア１２２のアレイのための、及び／又はそれからのデータを記憶する、設定及び／又は構成パラメータを記憶する等のために使用し得る、揮発性及び／又は不揮発性のメモリ又はストレージを備えてもよい。
【００２３】
ある実施形態では、メモリデバイス１２０及び／又はメモリ素子１２３は、様々なアプリケーション及び／又は環境で使用されてもよい。様々な温度及び他の環境条件において適切に機能するために、マイクロコントローラ１５０及び／又はメモリ素子１２３のクロックレートは、広範囲の動作条件において安定性、信頼性等を改善するように、人為的に低く設定されてもよい。例えば、様々な実施形態では、マイクロコントローラ１５０のクロックレートは、約５０ＭＨｚ未満、約４０ＭＨｚ未満、約３０ＭＨｚ未満、約２０ＭＨｚ未満、約１５ＭＨｚ未満、約１４ＭＨｚ、約１３．５ＭＨｚ、約１３ＭＨｚ、約１２．５ＭＨｚ、約１２ＭＨｚ、約１２ＭＨｚ未満等に設定されてもよい。
【００２４】
しかしながら、マイクロコントローラ１５０のこのような低いクロックレートは、ある実施形態では、マイクロコントローラ１５０が、単一の処理ユニットを使用して、データ操作の待ち時間を増加させることなく、メモリメディア１２２に対するデータ操作を実行することができるクロックレートよりも、低く設定されてもよい（例えば、単一の処理ユニット又はコアは、読み出し及び／又は書き込み動作を減速させ、マイクロコントローラ１５０がボトルネック等になることなく、データを不揮発性メモリメディア１２３から読み出す及び／又はこれに書き込めるほど、クロックレート又は周波数において十分に高速でなくてもよい）。マイクロコントローラ１５０は、一実施形態において、（例えば、メモリメディア１２２のアクセス待ち時間に対する遅いマイクロコントローラクロックレートの影響を低減及び／又は排除する等のために）メモリメディア１２２のアレイに対して異なるカテゴリのタスク及び／又はタスクの異なる部分を並列に実行する複数の処理ユニット及び／又はコアを含んでもよく、それらに関連付けられてもよく、かつ／又はそれらへのアクセスを有してもよい。
【００２５】
処理ユニットは、本明細書で使用されるとき、１つ以上のマイクロコントローラ１５０に関連付けられ、かつ１つ以上のコマンド及び／又は命令（例えば、マイクロコード、命令セット等）を実行及び／又は処理することができる、サブブロック及び／又は構成要素を含む。処理ユニットは、マイクロコントローラ１５０の一部であっても、複数のマイクロコントローラ１５０等によって共有されてもよい。処理ユニットは、処理コア、ソフトコア、ハードコア、合成可能な論理、アナログ及び／若しくは混合信号論理、実行ユニット、モジュール、サブ構成要素、並びに／又は命令を実行することができるマイクロコントローラ１５０の他の部分を含み得る。一実施形態では、異なる処理ユニットは、独立してコマンド及び／又は命令を受信するために、別個の論理及び／又は物理インターフェース（例えば、バス、制御線、アドレス、及び／又はアドレス空間等）を有してもよい。他の実施形態では、異なる処理ユニットは、論理及び／又は物理インターフェースを共有してもよく、受信したコマンド及び／又は命令をカテゴリ、コマンドタイプ、命令セット、フラグ、識別子等によって動的に区別してもよい。
【００２６】
マイクロコントローラ１５０の異なる処理ユニット及び／又はコアは、異なる処理ユニット及び／又はコアに割り当てられたタスクのカテゴリ及び／又は種類に基づいて、異なる命令セット（例えば、異なるマイクロコードコマンド及び／又は命令）をサポートしてもよい。処理ユニットのための命令セットは、本明細書で使用されるとき、処理ユニットによってサポートされる及び／又は処理ユニットと互換性がある１つ以上のコマンド及び／又は命令を含んでもよい。様々な実施形態では、命令セットは、１つ以上のマイクロコード命令、アセンブリコード命令、機械命令、メモリ命令、デバイス命令、制御及び／又は管理命令等を含んでもよく、かつ／又はそれらをサポートしてもよい。
【００２７】
一実施形態では、１つ以上の処理ユニットは、フロー制御カテゴリのタスク（例えば、フロー制御命令セット）を実行してもよい。１つ以上の処理ユニットは、ある実施形態において、タイミング制御カテゴリのタスク（例えば、タイミング制御命令セット）を実行してもよい。１つ以上の処理ユニットは、更なる実施形態において、データラッチ制御カテゴリのタスク（例えば、データラッチ制御命令セット）を実行してもよい。一実施形態では、１つ以上の処理ユニットは、電圧制御カテゴリのタスク（例えば、電圧制御命令セット）を実行してもよい。１つ以上の処理ユニットは、ある実施形態において、組み込み自己テスト（ＢＩＳＴ）カテゴリのタスク（例えば、自己テスト命令セット）を実行してもよい。一実施形態では、１つ以上の処理ユニットは、１つ以上の他の種類及び／又はカテゴリのタスク、命令セット等を実行してもよい。２つの命令セットは、ある実施形態において、１つの命令セットに含まれ、別の命令セットに含まれない、少なくとも１つの命令及び／又はコマンドに応じて、異なるものであってもよい。マイクロコントローラ１５０は、一実施形態において、マイクロコントローラ１５０に関連付けられた及び／又はそれに利用可能である処理ユニットによってサポートされている異なる命令セットの結合された和及び／又は全体を含んでいる命令セットを含み、かつ／又はこれをサポートする。
【００２８】
一実施形態では、マイクロコントローラ１５０は、メモリ素子１２３の縁部及び／若しくは周辺部に、又はそこに向かって、メモリメディア１２２のアレイに隣接して、及び／又はその隣に（例えば、図２に示されるように）配設されてもよい。更なる実施形態では、マイクロコントローラ１５０は、メモリメディア１２２のアレイとは異なる集積回路デバイス１２３のレベル、層、及び／又はプレーン上に（例えば、アレイと平行であり、かつアレイからオフセットされた、アレイの下のＣＭＯＳ又は他の回路等として）配設されてもよい。メモリメディア１２２のアレイとは異なる集積回路デバイス１２３のレベル上にマイクロコントローラ１５０を形成及び／又は配置することは、ある実施形態において、集積回路デバイス１２３の空間を節約し、より多くの回路（例えば、より多く又はより大きいマイクロコントローラ１５０及び／又はマイクロコントローラコア１５０、処理ユニット、より大きいメモリメディア１２２のアレイ等）、より小さい集積回路デバイス１２３等を可能にしてもよい。ある実施形態では、集積回路デバイス１２３の異なるレベル間のシリコン貫通ビア（例えば、ＴＳＶ）は、１つ以上のマイクロコントローラ１５０とメモリメディア１２２のアレイとの間に電気接続を提供してもよい。
【００２９】
ある実施形態では、集積回路デバイス１２３は、１つ以上の追加のマイクロコントローラ１５０、マイクロコントローラコア１５０等を含んでもよい。異なるマイクロコントローラ１５０及び／又はマイクロコントローラコア１５０は、互いに同じレベル及び／又は層（例えば、メモリアレイのレベルと平行であり、かつメモリアレイのレベルからオフセットされた、メモリアレイとは異なるレベル及び／又は層等）上にあってもよく、複数の異なるレベル及び／又は層（例えば、メモリアレイのレベルと平行であり、かつメモリアレイのレベルからオフセットされ、かつ互いにオフセットされている、メモリアレイとは異なる複数のレベル及び／又は層等）上にあってもよく、メモリアレイと同じ１つ以上のレベル及び／又は層等の上にあってもよい。
【００３０】
一実施形態では、集積回路デバイス１２３の空間を節約するために、１つ以上の追加のマイクロコントローラ１５０及び／又はマイクロコントローラコア１５０は、第１のマイクロコントローラ１５０及び／又はマイクロコントローラコア１５０と比べて、より少ない処理ユニットを含んでもよく、より少ない種類及び／又はカテゴリのタスクを実行するように構成された処理ユニット等を含んでもよい（例えば、より少ない処理ユニットを含むニ次の、部分的な、より小さい、及び／又は縮小された１つ以上のマイクロコントローラコア１５０を有する一次の、メインの、制御用の、フルの、及び／又は完全なマイクロコントローラコア１５０等）。
【００３１】
例えば、第１のマイクロコントローラ１５０及び／又はマイクロコントローラコア１５０は、メモリメディア１２２のアレイ上で自己テスト動作を実行するように構成された組み込み自己テスト処理ユニットを含んでもよく、かつ／又はそれと通信してもよいが、１つ以上の追加のマイクロコントローラ１５０及び／又はマイクロコントローラコア１５０は、組み込み自己テスト処理ユニットを有しなくてもよい。更なる実施形態では、第１のマイクロコントローラ１５０及び／又はマイクロコントローラコア１５０は、メモリアレイ上でプログラム／書き込み動作及び読み出し動作の両方を実行するように構成されているが、１つ以上の追加のマイクロコントローラ１５０及び／又はマイクロコントローラコア１５０は、メモリアレイ上で読み出し動作を実行するが、プログラム／書き込み動作は実行しないように構成されてもよい（例えば、第１のマイクロコントローラ１５０よりも小さいフットプリント及び／又はサイズを有してもよい）。
【００３２】
ある実施形態では、１つ以上のマイクロコントローラ１５０の第１のセット（例えば、一次の、メインの、制御用の、フルの、及び／又は完全なマイクロコントローラコア１５０等）は、メモリメディア１２２のアレイ全体（例えば、集積回路デバイス１２３のメモリセルの各チャネル、サブセット、及び／又は領域）に対してプログラム／書き込み動作を実行してもよいが、１つ以上のマイクロコントローラ１５０の第１のセット及び１つ以上のマイクロコントローラ１５０の第２のセット（例えば、より少ない処理ユニットを含むニ次の、部分的な、より小さい、及び／又は縮小された１つ以上のマイクロコントローラコア１５０等）の両方は、メモリメディア１２２のアレイの異なる部分（例えば、集積回路デバイス１２３のメモリセルの異なるチャネル、サブセット、及び／又は領域に割り当てられている）に対して読み出し動作を実行してもよい。
【００３３】
メモリデバイス１２０は、様々な実施形態において、コンピューティングデバイス１１０に対して１つ以上の異なる位置に配設されてもよい。一実施形態では、メモリデバイス１２０は、１つ以上のプリント回路基板、ストレージ筐体、並びに／又は他の機械的及び／若しくは電気的支持構造体の上に配設された半導体チップ若しくはパッケージ又は他の集積回路デバイス等の、１つ以上の不揮発性及び／又は揮発性メモリ素子１２３を備える。例えば、メモリデバイス１２０は、１つ以上のダイレクトインラインメモリモジュール（ＤＩＭＭ）カード、１つ以上の拡張カード及び／若しくはドータカード、メモリカード、ユニバーサルシリアルバス（ＵＳＢ）ドライブ、ソリッドステートドライブ（ＳＳＤ）若しくは他のハードドライブデバイスを備えてもよく、かつ／又は別のメモリ及び／若しくはストレージフォームファクタを有してもよい。メモリデバイス１２０は、コンピューティングデバイス１１０のマザーボードと一体化され、かつ／又はマザーボード上に実装されてもよいし、コンピューティングデバイス１１０のポート及び／又はスロットに搭載されてもよいし、異なるコンピューティングデバイス１１０上に及び／又は外部バスを介してコンピューティングデバイス１１０と通信しているネットワーク１１５上の専用のストレージ機器（例えば、外部ハードドライブ）上に実装される等してもよい。
【００３４】
メモリデバイス１２０は、一実施形態において、プロセッサ１１１のメモリバス上に（例えば、揮発性メモリ１１２と同じメモリバス上に、揮発性メモリ１１２とは異なるメモリバス上に、又は揮発性メモリ１１２と置き換えて等で）配設されてもよい。更なる実施形態では、メモリデバイス１２０は、ペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩ  Ｅｘｐｒｅｓｓ又はＰＣＩｅ）バス、シリアルアドバンスドテクノロジーアタッチメント（ＳＡＴＡ）バス、パラレルアドバンスドテクノロジーアタッチメント（ＰＡＴＡ）バス、スモールコンピュータシステムインターフェース（ＳＣＳＩ）バス、ファイヤワイヤバス、ファイバチャネル接続、ユニバーサルシリアルバス（ＵＳＢ）、ＰＣＩｅアドバンスドスイッチング（ＰＣＩｅ−ＡＳ）バス等の、コンピューティングデバイス１１０の周辺バス上に配設されてもよい。別の実施形態では、メモリデバイス１２０は、イーサネットネットワーク、インフィニバンドネットワーク、ネットワーク１１５上のＳＣＳＩ  ＲＤＭＡ、ストレージエリアネットワーク（ＳＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、インターネット等のワイドエリアネットワーク（ＷＡＮ）、別の有線及び／又は無線ネットワーク１１５等の、データネットワーク１１５上に配設されてもよい。
【００３５】
コンピューティングデバイス１１０は、非一時的なコンピュータ可読のストレージメディア１１４を更に備えてもよい。コンピュータ可読のストレージメディア１１４は、コンピューティングデバイス１１０（例えば、プロセッサ１１１）に、本明細書に開示される方法のうちの１つ以上のステップを実行させるように構成された実行可能命令を備えてもよい。代替的に、又は追加して、マイクロコントローラ１５０は、非一時的ストレージメディア１１４に記憶された１つ以上のコンピュータ可読命令を含んでもよい。
【００３６】
一実施形態では、マイクロコントローラ１５０は、不揮発性及び／又は揮発性メモリ素子１２３の論理ハードウェア、他のプログラマブルロジック、不揮発性及び／又は揮発性メモリ素子１２３のためのファームウェア、不揮発性及び／又は揮発性メモリ素子１２３による実行のためのマイクロコード等を備えてもよい。別の実施形態では、マイクロコントローラ１５０は、不揮発性及び／又は揮発性メモリ素子１２３の論理ハードウェアによる実行のための（例えば、マイクロコントローラ１５０自体、プロセッサ１１１等による実行のための）コンピュータ可読のストレージメディア上に記憶された、実行可能なソフトウェアコード（例えば、マイクロコード）を少なくとも部分的に備えてもよい。更なる実施形態では、マイクロコントローラ１５０は、実行可能なソフトウェアコード及び論理ハードウェアの両方の組み合わせを含んでもよい。
【００３７】
一実施形態では、マイクロコントローラ１５０は、バス１２５、１２７、メモリメディアコントローラ１２６等を介して、デバイスドライバ又は他の実行可能なアプリケーションからの要求及び／又はコマンドを受信するように構成されている。マイクロコントローラ１５０は、バス１２５を介してデバイスドライバ及び／又はストレージクライアント１１６に／からデータを伝送するように更に構成されてもよい。したがって、いくつかの実施形態において、マイクロコントローラ１５０は、記憶要求及び関連データの伝送を容易にするために、１つ以上のダイレクトメモリアクセス（ＤＭＡ）モジュール、リモートＤＭＡモジュール、バスコントローラ、ブリッジ、バッファ等を含んでもよく、かつ／又はそれらと通信してもよい。別の実施形態では、マイクロコントローラ１５０は、ストレージクライアント１１６からのＡＰＩコールとして、又はＩＯ−ＣＴＬコマンド等として、記憶要求及び／又はリフレッシュコマンドを受信してもよい。
【００３８】
一実施形態では、マイクロコントローラ１５０は、メモリ素子１２３上に一体化され（例えば、オンダイコントローラ及び／又は他の論理ハードウェア若しくは実行可能コード）、デバイスコントローラ１２６、ホストデバイス１１０、及び／又はプロセッサ１１１からコマンドを受信する。他の実施形態では、マイクロコントローラ１５０の一部は、デバイスコントローラ１２６又は他のインターポーザ上に配設されてもよく、マイクロコントローラ１５０の一部は、メモリ素子１２３等の上に配設されてもよい。
【００３９】
様々な実施形態によれば、メモリコントローラ１２６及び／又はマイクロコントローラ１５０は、１つ以上のメモリデバイス１２０及び／又はメモリ素子１２３を管理してもよい。メモリデバイス１２０は、アドレス指定可能な複数のメディア記憶位置に配置及び／又は区画化されているソリッドステートストレージデバイス及び／又は半導体ストレージデバイス等の、記録デバイス、メモリデバイス、及び／又はストレージデバイスを備えてもよい。本明細書で使用されるとき、メディア記憶位置は、メモリの任意の物理的単位（例えば、メモリデバイス１２０上の任意の量の物理的ストレージメディア）を参照する。メモリ単位及び／又は領域は、限定されないが、ページ、メモリ区画、ブロック、セクタ、物理的記憶位置のコレクション又はセット（例えば、論理ページ、論理ブロック）等を含んでもよい。
【００４０】
デバイスドライバ、メモリメディアコントローラ１２６、及び／又はマイクロコントローラ１５０は、ある実施形態では、論理アドレス空間１３４をストレージクライアント１１６に提示してもよい。本明細書で使用されるとき、論理アドレス空間１３４は、メモリ資源の論理的表現を参照する。論理アドレス空間１３４は、複数の論理アドレス（例えば、範囲）を備えてもよい。本明細書で使用されるとき、論理アドレスは、メモリ資源（例えば、データ）を参照するための任意の識別子を参照し、その識別子は、限定されないが、論理ブロックアドレス（logical block address、ＬＢＡ）、シリンダ／ヘッド／セクタ（cylinder/head/sector、ＣＨＳ）、ファイル名、オブジェクト識別子、汎用一意識別子（Universally Unique Identifier、ＵＵＩＤ）、グローバル一意識別子（Globally Unique Identifier、ＧＵＩＤ）、ハッシュコード、署名、インデックスエントリ、範囲、エクステント等を含む。
【００４１】
メモリデバイス１２０のためのデバイスドライバは、論理アドレス空間１３４の論理アドレスをメモリデバイス１２０上のメディア記憶位置にマップするために、論理−物理アドレスマッピング構造等の、メタデータ１３５を保持してもよい。デバイスドライバは、１つ以上のストレージクライアント１１６にストレージサービスを提供するように構成されてもよい。ストレージクライアント１１６は、コンピューティングデバイス１１０上で動作するローカルストレージクライアント１１６、及び／又はネットワーク１１５及び／又はネットワークインターフェース１１３を介してアクセス可能な遠隔のストレージクライアント１１６を含んでもよい。ストレージクライアント１１６は、限定されないが、オペレーティングシステム、ファイルシステム、データベースアプリケーション、サーバアプリケーション、カーネルレベルプロセス、ユーザレベルプロセス、アプリケーション等を含んでもよい。
【００４２】
デバイスドライバは、１つ以上のメモリデバイス１２０に通信可能に結合されてもよい。１つ以上のメモリデバイス１２０は、ソリッドステートストレージデバイス、半導体ストレージデバイス、ＳＡＮストレージリソース、揮発性メモリデバイス、不揮発性メモリデバイス等を含むがこれらに限定されない、異なるタイプのメモリデバイスを含んでもよい。１つ以上のメモリデバイス１２０は、１つ以上の対応のメモリメディアコントローラ１２６及びメモリメディア１２２を備えてもよい。デバイスドライバは、伝統的なブロックＩ／Ｏインターフェース１３１を介して、１つ以上のメモリデバイス１２０へのアクセスを提供してもよい。更に、デバイスドライバは、ＳＣＭインターフェース１３２を介して拡張された機能へのアクセスを提供してもよい。メタデータ１３５は、ブロックＩ／Ｏインターフェース１３１、ＳＣＭインターフェース１３２、キャッシュインターフェース１３３、又はその他の関連インターフェースのいずれかを介して行われるデータ操作を管理及び／又は追跡するために使用されてもよい。
【００４３】
キャッシュインターフェース１３３は、メモリデバイス１２０のためのデバイスドライバを介してアクセス可能なキャッシュ固有の機能を公開してもよい。また、いくつかの実施形態では、ストレージクライアント１１６に提示されるＳＣＭインターフェース１３２は、１つ以上のメモリデバイス１２０及び／又は１つ以上のメモリメディアコントローラ１２６によって実施されるデータ変換へのアクセスを提供する。
【００４４】
デバイスドライバは、論理アドレス空間１３４を１つ以上のインターフェースを介してクライアント１１６に提示してもよい。上述のように、論理アドレス空間１３４は、それぞれが１つ以上のメモリデバイス１２０上の各々のメディア位置に対応する、複数の論理アドレスを備えてもよい。デバイスドライバは、論理アドレスとメディア位置との間等の任意対任意マッピングを備えるメタデータ１３５を保持してもよい。
【００４５】
デバイスドライバは更に、バス１２５を介して１つ以上のメモリデバイス１２０にデータ、コマンド、及び／又はクエリを伝送するように構成されたメモリデバイスインターフェース１３９を備えてもよく、かつ／又はその不揮発性メモリデバイスインターフェース１３９と通信してもよく、バス１２５は、限定されないが、プロセッサ１１１のメモリバス、ペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩ  Ｅｘｐｒｅｓｓ又はＰＣＩｅ）バス、シリアルアドバンスドテクノロジーアタッチメント（ＡＴＡ）バス、パラレルＡＴＡバス、スモールコンピュータシステムインターフェース（ＳＣＳＩ）、ファイヤワイヤ、ファイバチャネル、ユニバーサルシリアルバス（ＵＳＢ）、ＰＣＩｅアドバンスドスイッチング（ＰＣＩｅ−ＡＳ）バス、ネットワーク１１５、インフィニバンド、ＳＣＳＩ  ＲＤＭＡ等を含み得る。メモリデバイスインターフェース１３９は、入出力制御（ＩＯ−ＣＴＬ）コマンド、ＩＯ−ＣＴＬコマンド拡張、リモートダイレクトメモリアクセス等を使用して、１つ以上のメモリデバイス１２０と通信してもよい。
【００４６】
通信インターフェース１１３は、コンピューティングデバイス１１０及び／又はメモリコントローラ１２６をネットワーク１１５及び／又は１つ以上の遠隔のネットワークアクセス可能なストレージクライアント１１６に通信可能に結合するように構成された１つ以上のネットワークインターフェースを備えてもよい。ストレージクライアント１１６は、コンピューティングデバイス１１０上で動作するローカルストレージクライアント１１６、並びに／又はネットワーク１１５及び／若しくはネットワークインターフェース１１３を介してアクセス可能な遠隔のストレージクライアント１１６を含んでもよい。メモリコントローラ１２６は、１つ以上のメモリデバイス１２０の一部であり、かつ／又はそれらと通信する。図１は単一のメモリデバイス１２０を示しているが、本開示はこの点に関して限定されず、任意の数のメモリデバイス１２０、１つ以上の揮発性メモリデバイス１２０と１つ以上の不揮発性メモリデバイス１２０との組み合わせ等を組み込むように適合され得る。
【００４７】
メモリデバイス１２０は、メモリメディア１２２の１つ以上の素子１２３を備えてもよい。一実施形態では、メモリメディア１２２の素子１２３は、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ）ＳＤＲＡＭ、スタティックＲＡＭ（ＳＲＡＭ）、サイリスタＲＡＭ（Ｔ−ＲＡＭ）、ゼロキャパシタＲＡＭ（Ｚ−ＲＡＭ）等の、揮発性メモリメディア１２２を備える。ある実施形態では、メモリメディア１２２の素子１２３は、ＲｅＲＡＭ、メモリスタメモリ、プログラマブルメタライゼーションセルメモリ、相変化メモリ（ＰＣＭ、ＰＣＭＥ、ＰＲＡＭ、ＰＣＲＡＭ、Ｏｖｏｎｉｃ  Ｕｎｉｆｉｅｄ  Ｍｅｍｏｒｙ、Ｃｈａｌｃｏｇｅｎｉｄｅ  ＲＡＭ、又はＣ−ＲＡＭ）、ＮＡＮＤフラッシュメモリ（例えば、２Ｄ  ＮＡＮＤフラッシュメモリ、３Ｄ  ＮＡＮＤフラッシュメモリ）、ＮＯＲフラッシュメモリ、ナノランダムアクセスメモリ（ナノＲＡＭ又はＮＲＡＭ）、ナノクリスタルワイヤベースメモリ、シリコン酸化物系のサブ−１０ナノメートルプロセスメモリ、グラフェンメモリ、シリコン酸化物窒化物酸化物シリコン（ＳＯＮＯＳ）メモリ、プログラマブルメタライゼーションセル（ＰＭＣ）メモリ、導電性ブリッジングＲＡＭ（ＣＢＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、磁気ストレージメディア（例えば、ハードディスク、テープ）、光ストレージメディア等の、不揮発性メモリメディア１２２を備える。メモリメディア１２２の１つ以上の素子１２３は、ある実施形態では、ストレージクラスメモリ（ＳＣＭ）を備える。
【００４８】
ＮＡＮＤフラッシュ等のレガシー技術がブロック及び／又はページアドレス指定可能である一方、ストレージクラスメモリは、一実施形態では、バイトアドレス指定可能である。更なる実施形態では、ストレージクラスメモリは、ＮＡＮＤフラッシュよりも速くかつ／又はより長い寿命（例えば、耐久）を有してもよく、ＤＲＡＭよりも、低コストであり、使用電力が少なく、かつ／又は高い記憶密度を有してもよく、あるいは他の技術と比較して、１つ以上の他の利点又は改善を提供してもよい。例えば、ストレージクラスメモリは、ＲｅＲＡＭ、メモリスタメモリ、プログラマブルメタライゼーションセルメモリ、相変化メモリ、ナノＲＡＭ、ナノクリスタルワイヤベースメモリ、シリコン酸化物系のサブ−１０ナノメートルプロセスメモリ、グラフェンメモリ、ＳＯＮＯＳメモリ、ＰＭＣメモリ、ＣＢＲＡＭ、ＭＲＡＭ、及び／又はそれらの変形、といった１つ以上の不揮発性メモリ素子１２３を備えてもよい。
【００４９】
不揮発性メモリメディア１２２は、本明細書において「メモリメディア」として参照されるが、様々な実施形態では、不揮発性メモリメディア１２２は、不揮発性メモリメディア、不揮発性ストレージメディア等として参照され得る、データを記録可能な１つ以上の不揮発性記録メディアをより一般的に備えてもよい。また、不揮発性メモリデバイス１２０は、様々な実施形態では、不揮発性記録デバイス、不揮発性メモリデバイス、不揮発性ストレージデバイス等を備えてもよい。同様に、不揮発性メモリ素子１２３は、様々な実施形態では、不揮発性記録素子、不揮発性メモリ素子、不揮発性ストレージ素子等を備えてもよい。
【００５０】
不揮発性メモリメディア１２２は、チップ、パッケージ、プレーン、ダイ等を含み得るが、これらに限定されない、１つ以上の不揮発性メモリ素子１２３を備えてもよい。不揮発性メモリメディアコントローラ１２６は、不揮発性メモリメディア１２２に対するデータ操作を管理するように構成されてもよく、１つ以上の、プロセッサ、プログラマブルプロセッサ（例えば、ＦＰＧＡ）、ＡＳＩＣ、マイクロコントローラ等を備えてもよい。いくつかの実施形態では、不揮発性メモリメディアコントローラ１２６は、不揮発性メモリメディア１２２にデータを記憶しかつ／又はデータを読み出し、不揮発性メモリデバイス１２０等に／からデータを伝送するように構成される。
【００５１】
不揮発性メモリメディアコントローラ１２６は、バス１２７を介して不揮発性メモリメディア１２２（例えば、マイクロコントローラ１５０）に通信可能に結合されてもよい。バス１２７は、不揮発性メモリ素子１２３及び／又は関連するマイクロコントローラ１５０に／からデータを通信するためのＩ／Ｏバスを備えてもよい。バス１２７は、アドレス並びに他のコマンド及び制御情報を不揮発性メモリ素子１２３及び／又はマイクロコントローラ１５０に通信するための制御バスを更に備えてもよい。いくつかの実施形態では、バス１２７は、不揮発性メモリ素子１２３（例えば、マイクロコントローラ１５０）を不揮発性メモリメディアコントローラ１２６に並列に通信可能に結合してもよい。この並列アクセスは不揮発性メモリ素子１２３をグループとして管理できるようにして、論理メモリ素子１２９を形成してもよい。論理メモリ素子は、それぞれの論理メモリ単位（例えば、論理ページ）及び／又は論理メモリ分割（例えば、論理ブロック）に区画化されてもよい。論理メモリ単位は、各不揮発性メモリ素子の物理的メモリ単位を論理的に組み合わせることによって形成されてもよい。
【００５２】
不揮発性メモリコントローラ１２６及び／又はマイクロコントローラ１５０は、コンピューティングデバイス１１０上で実行されるデバイスドライバを備えてもよく、かつ／又はそのデバイスドライバと通信してもよい。デバイスドライバは、１つ以上のインターフェース１３１、１３２、及び／又は１３３を介してストレージクライアントにストレージ１１６にサービスを提供してもよい。いくつかの実施形態では、デバイスドライバは、ストレージクライアント１１６によるブロックレベルのＩ／Ｏ動作が実行される際に介されるブロックデバイスＩ／Ｏインターフェース１３１を提供する。代替的に、又は追加して、デバイスドライバは、他のストレージサービスをストレージクライアント１１６に提供し得るストレージクラスメモリ（storage class memory、ＳＣＭ）インターフェース１３２を提供してもよい。いくつかの実施形態では、ＳＣＭインターフェース１３２は、ブロックデバイスインターフェース１３１への拡張を備えてもよい（例えば、ストレージクライアント１１６が、ブロックデバイスインターフェース１３１への拡張又は追加を介してＳＣＭインターフェース１３２にアクセスし得る）。代替的に、又は追加して、ＳＣＭインターフェース１３２は、別のＡＰＩ、サービス、及び／又はライブラリとして提供されてもよい。デバイスドライバは、不揮発性メモリシステム１０２を使用してデータをキャッシュするキャッシュインターフェース１３３を提供するように更に構成されてもよい。デバイスドライバは、上述のように、バス１２５を介して不揮発性メモリメディアコントローラ１２６及び／又はマイクロコントローラ１５０にデータ、コマンド、及び／又はクエリを伝送するように構成された不揮発性メモリデバイスインターフェース１３９を更に備えてもよい。
【００５３】
図２は、１つ以上のマイクロコントローラ１５０を有する、１つ以上のメモリダイ又はチップ２１２を含み得る不揮発性ストレージデバイス２１０の実施形態を示す。不揮発性ストレージデバイス２１０は、図１を参照して説明された不揮発性メモリデバイス１２０と実質的に同様であってもよい。図２の１つ以上のマイクロコントローラ１５０は、メモリダイ及び／又はチップ２１２の周辺部に向かって（例えば、集積回路デバイス１２３内のメモリアレイ２００と同じ物理レベル上に）示されているが、他の実施形態では、１つ以上のマイクロコントローラ１５０は、図７に示されるように、メモリダイ及び／又はチップ２１２の、メモリアレイ２００とは異なる物理レベル上に（例えば、集積回路デバイス１２３内のメモリアレイ２００のレベルと平行で、かつそこからオフセットされて）配設されてもよい。
【００５４】
メモリダイ２１２は、いくつかの実施形態において、メモリセル、オンダイコントローラ２２０、及び読み出し／書き込み回路２３０Ａ／２３０Ｂのアレイ２００（例えば、２次元又は３次元）を含む。一実施形態では、様々な周辺回路によるメモリアレイ２００へのアクセスは、アレイの反対側で対称的に実装され、これによりそれぞれの側のアクセスライン及び回路の密度が半分に低減する。読み出し／書き込み回路２３０Ａ／２３０Ｂは、更なる実施形態では、メモリセルのページを読み出すことができる又は並列にプログラムすることが可能な複数のセンスブロック２５０を含む。ある実施形態では、センスブロック２５０は、１つ以上のマイクロコントローラ１５０と通信している。
【００５５】
メモリアレイ２００は、様々な実施形態では、行デコーダ２４０Ａ／２４０Ｂを介してワード線によって及び列デコーダ２４２Ａ／２４２Ｂを介してビット線によってアドレス指定可能である。いくつかの実施形態では、コントローラ２４４は、１つ以上のメモリダイ２１２と同じメモリデバイス２１０（例えば、リムーバブルストレージカード又はパッケージ）に含まれる。コマンド及びデータは、線２３２を介してホストとコントローラ２４４との間で、及び線２３４を介してコントローラと１つ以上のメモリダイ２１２との間で伝送される。ある実施態様は、複数のチップ２１２を含むことができる。
【００５６】
オンダイコントローラ２２０は、一実施形態において、読み出し／書き込み回路２３０Ａ／２３０Ｂと協働してメモリアレイ２００上でメモリ動作を行う。オンダイコントローラ２２０は、ある実施形態では、マイクロコントローラ１５０と、オンチップアドレスデコーダ２２４と、電力制御回路２２６と、を含む。一実施形態では、オンチップアドレスデコーダ２２４及び／又は電力制御回路２２６は、マイクロコントローラ１５０の一部であってもよく、かつ／又はマイクロコントローラ１５０によって制御されてもよい。
【００５７】
マイクロコントローラ１５０は、一実施形態において、メモリ動作のチップレベル制御を提供する。オンチップアドレスデコーダ２２４は、ホスト又はメモリコントローラによって使用されるアドレスの間を、デコーダ２４０Ａ、２４０Ｂ、２４２Ａ、２４２Ｂによって使用されるハードウェアアドレスに変換するためにアドレスインターフェースを提供する。電力制御回路２２６は、メモリ動作中にワード線及びビット線に供給される電力及び電圧を制御する。一実施形態では、電力制御回路２２６は、電源電圧より大きな電圧を生成することができる１つ以上のチャージポンプを含む。
【００５８】
一実施形態では、オンダイコントローラ２２０、マイクロコントローラ１５０、電力制御回路２２６、デコーダ回路２２４、デコーダ回路２４２Ａ、デコーダ回路２４２Ｂ、デコーダ回路２４０Ａ、デコーダ回路２４０Ｂ、読み出し／書き込み回路２３０Ａ、読み出し／書き込み回路２３０Ｂ、及び／若しくはコントローラ２４４のうちの１つ又はこれらの任意の組み合わせは、１つ以上の管理回路として参照され得る。
【００５９】
図３は、オンダイメモリマイクロコントローラユニット１５０を有するシステム３００の一実施形態を示す。図３のマイクロコントローラ１５０は、ある実施形態では、図１のマイクロコントローラ１５０及び／又は図２のマイクロコントローラ１５０と実質的に同様であってもよい。
【００６０】
図示の実施形態では、マイクロコントローラ１５０は、複数の処理ユニット３０２ａ〜ｎを備えており、かつ／又はそれらと通信している。いくつかの処理ユニット３０２ａ、３０２ｂ、３０２ｎは、マイクロコントローラ１５０の内部にあり、かつ／又はその一部であるが、他の処理ユニット３０２ｃ、３０２ｄは、マイクロコントローラ１５０の外部にあり（例えば、外部処理ユニット、機能ユニット等）、かつマイクロコントローラ１５０と通信している（例えば、１つ以上の追加のマイクロコントローラ１５０及び／又はマイクロコントローラコア１５０と通信してもよい）。ある実施形態では、マイクロコントローラ１５０の外部にある処理ユニット３０２ｃ、３０２ｄは、集積回路デバイス１２３の内部に（例えば、メモリアレイ２００等の下で）マイクロコントローラ１５０と同じレベル（例えば、１つ以上の層、プレーン等）に配設されてもよい。
【００６１】
処理ユニット３０２ａ〜ｎは、様々な実施形態において、読み出し処理ユニット３０２、プログラム／書き込み処理ユニット３０２、組み込み自己テスト処理ユニット３０２、フロー制御処理ユニット３０２、タイミング制御処理ユニット３０２、電圧制御処理ユニット３０２、及び／又はデータラッチ制御処理ユニット３０２等のうちの１つ以上を含んでもよい。処理ユニット３０２ａ〜ｎは、フロー制御タスク、タイミング制御タスク、データラッチ制御タスク、電圧制御タスク、及び／又は組み込み自己テストタスク等の、異なるカテゴリのタスクを実行してもよい。
【００６２】
ある実施形態では、マイクロコントローラ１５０を使用することは（例えば、有限状態マシン等の代わりに及び／又はそれに加えて）、マイクロコントローラ１５０及び／又は関連する集積回路デバイス１２３のハードウェアが、完成及び／又は製造された後であっても、現場等において、ハードウェアを変更することなく、マイクロコントローラ１５０のためのタイミング、電圧、論理動作、命令、コマンド、マイクロコード等に対する動的な更新及び／又は変更を可能にしてもよい。複数の処理ユニット３０２ａ〜ｎは、一実施形態において、並列（例えば、マルチスレッド）で動作して、メモリアレイ２００上でのメモリ動作（例えば、読み出し、プログラム／書き込み、消去）の待ち時間をやはり増大させることなく、マイクロコントローラ１５０が他方法で可能であるよりも低いクロック速度で動作することを可能にしてもよい。
【００６３】
各処理ユニット３０２は、ある実施形態では、処理ユニット３０２が、揮発性メモリモジュール（例えば、図４に関して以下に説明する揮発性メモリモジュール４０６等）からの命令／コマンド及び／又はデータにアクセスするために使用し得る読み出しポートを備える。処理ユニット３０２１〜ｎ間の通信は、コマンド及びデータの両方を伝送する標準インターフェース（例えば、異なるタイプの処理ユニット３０２ａ〜ｎに対して同じプロトコル）を介して行われてもよい。一実施形態では、マイクロコントローラ１５０の内部にある処理ユニット３０２ａ、３０２ｂ、３０２ｎのために、及びマイクロコントローラ１５０の外側にある処理ユニット３０２ｃ、３０２ｄのために、同じインターフェースが使用されてもよい。
【００６４】
図４は、オンダイメモリマイクロコントローラ１５０を有するシステム４００の一実施形態を示す。マイクロコントローラ１５０は、ある実施形態では、上述の、図１のマイクロコントローラ１５０、図２のマイクロコントローラ１５０、及び／又は図３のマイクロコントローラ１５０のうちの１つ以上と実質的に同様であってもよい。図示の実施形態では、マイクロコントローラ１５０は、フロー制御処理ユニット４０２ａ、タイミング制御処理ユニット４０２ｂ、データラッチ制御処理ユニット４０２ｃ、電圧制御処理ユニット４０２ｄを備えており、それぞれは、揮発性メモリ４０６と、及びマイクロコントローラ１５０の外部にある１つ以上の外部処理ユニット４０４ａ〜ｎと通信している。
【００６５】
フロー制御処理ユニット４０２ａは、ある実施形態では、メモリアレイ２００に対する１つ以上のメモリ動作（例えば、読み出し動作、書き込み／プログラム動作、消去動作、ガベージコレクション動作等の管理動作、等）の実行を制御及び／又は追跡してもよい。例えば、フロー制御処理ユニット４０２ａは、異なるメモリ動作を実行するように１つ以上の他の処理ユニット４０２（例えば、タイミング制御ユニット４０２ｂ、データラッチ制御ユニット４０２ｃ、電圧制御ユニット４０２ｄ、１つ以上の外部処理ユニット４０４ａ〜ｎ等）を管理すること、それらにコマンド／命令を送信すること、異なるメモリ動作中の他の処理ユニット４０２、４０４の状態を判定すること等を行って、異なるメモリ動作のための一連の状態を指示してもよい。フロー制御処理ユニット４０２ａは、一実施形態において、メモリ動作のためのデータパス（例えば、デバイスコントローラ１２６とメモリアレイ２００との間、マイクロコントローラ１５０とメモリアレイ２００との間、等）のデータパスを管理してもよい。フロー制御処理ユニット４０２ａは、いくつかの実施形態において、マイクロコントローラ１５０等を備える集積回路デバイス１２３の、マイクロコントローラ１５０の１つ以上の内部データバスを管理してもよい。
【００６６】
フロー制御処理ユニット４０２ａは、一実施形態において、メモリアレイ２００からデータを読み出し、読み出したデータを（例えば、デバイスコントローラ１２６、ホストデバイス１１０、ストレージクライアント１１６等からの読み出し要求に応じて）デバイスコントローラ１２６、ホストデバイス１１０、ストレージクライアント１１６等に提供するためのマイクロコード、アセンブリコード、及び／又は他のコンピュータ実行可能コードのサブルーチンを（例えば、１つ以上の他の処理ユニット４０２ａ〜ｎ、４０４ａ〜ｎと並列に）実行及び／又は管理するように構成された読み出し処理ユニットを備えてもよく、又は別の方法で含んでもよい。
【００６７】
フロー制御処理ユニット４０２ａは、一実施形態において、デバイスコントローラ１２６、ホストデバイス１１０、ストレージクライアント１１６等からの書き込み要求に応じて、メモリアレイ２００にデータを書き込み／プログラムするためのマイクロコード、アセンブリコード、及び／又は他のコンピュータ実行可能コードのサブルーチンを（例えば、１つ以上の他の処理ユニット４０２ａ〜ｎ、４０４ａ〜ｎと並列に）実行及び／又は管理するように構成された書き込み／プログラム処理ユニットを備えてもよく、又は別の方法で含んでもよい。図６に関して以下に説明するように、ある実施形態では、第１のマイクロコントローラ１５０ａは、書き込み／プログラム処理ユニット及び読み出し処理ユニットと共にフロー制御処理ユニット４０２ａを備えてもよいが、１つ以上の他のマイクロコントローラ１５０ｂ〜ｎは、（例えば、電力、回路サイズ／空間等を節約するために）書き込み／プログラム処理ユニットなしで読み出し処理ユニットを備える。
【００６８】
一実施形態では、フロー制御処理ユニット４０２ａは、組み込み自己テスト処理ユニットを備える。図６に関して以下に説明するように、ある実施形態では、第１の１つ以上のマイクロコントローラ１５０ａは、集積回路デバイス１２３及び／又はメモリアレイ２００のための組み込み自己テスト処理ユニットを備えているが、１つ以上の他のマイクロコントローラ１５０ｂ〜ｎは、（例えば、電力、回路サイズ／空間等を節約するために）組み込み自己テスト処理ユニットを備えていない。
【００６９】
一実施形態では、複数のマイクロコントローラ１５０システムにおいて、組み込み自己テスト処理ユニットなしの、１つ以上の縮小サイズのマイクロコントローラ１５０は、同じ集積回路デバイス１２３の一次又はフルサイズのマイクロコントローラ１５０の組み込み自己テスト処理ユニットによって実行されるダイソート又は他のテスト、妥当性確認、及び／若しくは適合確認プロセス中にアイドルであってもよい。１つ以上の縮小サイズのマイクロコントローラ１５０が使用されていない状態では、アイドルのマイクロコントローラ１５０に関連する揮発性メモリ４０６の少なくとも一部もまた使用されていなくてもよく、利用可能であってもよい。ある実施形態では、フロー制御処理ユニット４０２ａは、フロー制御処理ユニット４０２ａの組み込み自己テスト処理ユニットによって実行されたテストの間、テスト用にメモリアレイ２００から読み出されたデータを記憶及び処理するために、１つ以上のアイドルのマイクロコントローラ１５０の揮発性メモリ４０６の利用可能な余剰容量を活用してもよい。
【００７０】
フロー制御処理ユニット４０２ａは、メモリアレイ２００から揮発性メモリ４０６にテストデータをストリームしてもよく、組み込み自己テストユニットは、エラー等に対してデータを処理してもよい。フロー制御処理ユニット４０２ａの組み込み自己テスト処理ユニットは、集積回路デバイス１２３及び／又はメモリアレイ１２０の１つ以上の機能をテストするために（例えば、１つ以上の不良ビット線、不良ワード線、不良消去ブロックを識別し、印を付けるために、テスター、ホストデバイス１１０、ストレージクライアント１１６に１つ以上のテスト及び／又はエラーレポートを生成するために等）、１つ以上のデータ伝送、データ処理、タイマー機能等を実行してもよい。
【００７１】
一実施形態では、フロー制御処理ユニット４０２ａは、１つ以上の割り込みポート（例えば、ソフト又は論理割り込みポート、ハード物理又は電気割り込みポート等）を備えてもよく、これを介して、フロー制御処理ユニット４０２ａは、１つ以上の信号（例えば、動作モード選択信号、フィードバック信号、プログラム及び／若しくは消去パルスカウント、プログラム及び／若しくは消去検証合格若しくは失敗信号、並びに／又は、フロー制御処理ユニット４０２ａがマイクロコントローラ１５０の１つ以上のメモリ動作を管理することを可能にする他の割り込み若しくは他の信号）を受信してもよい。
【００７２】
ある実施形態では、フロー制御処理ユニット４０２ａは、マイクロコントローラ１５０のステータス（例えば、レディー、ビジー等）をデバイスコントローラ１２６、ホストデバイス１１０、ストレージクライアント１１６等に提供してもよく、マイクロコントローラ１５０及び／又はメモリアレイ２００のための１つ以上のコマンド及び／又は動作を受信してもよい。フロー制御処理ユニット４０２ａは、コマンドを定期的にポーリングし、待ち時間及び遅延を導入するのではなく、コマンドに対して迅速に（例えば、実質的に直ちに）応答するために、１つ以上の割り込みポートを使用してもよい。フロー制御処理ユニット４０２ａは、１つ以上の割り込みポート上の信号、動作のための受信されたコマンド等に基づいて、マイクロコントローラ１５０の１つ以上の処理ユニット４０２ａ〜ｄ、４０４ａ〜ｎによる実行のためのサブルーチンを選択／判定してもよい。
【００７３】
例えば、一実施形態では、フロー制御処理ユニット４０２ａは、コマンド割り込み信号（例えば、単一のビット等）、コマンドインデックス（例えば、コマンド割り込み信号がどの既定の動作を呼び出しているかを示す複数のビット）、コマンド動作コード若しくはオペコード（例えば、コマンド割り込み、サスペンド割り込み、再開割り込み、リセット割り込み等の、割り込みの種類を示す複数のビット）、及び／又は１つ以上の他の割り込み信号を（例えば、デバイスコントローラ１２６、ホストデバイス１１０、ストレージクライアント１１６等から）受信してもよく、これに基づいて、フロー制御処理ユニット４０２ａは、マイクロコントローラ１５０の１つ以上の処理ユニット４０２ａ〜ｄ、４０４ａ〜ｎに対する１つ以上の命令を含むサブルーチンを選択／判定してもよい。
【００７４】
フロー制御処理ユニット４０２ａは、ある実施形態では、ハード割り込み要求に応答してもよく、受信したコマンドインデックスをマイクロコントローラ１５０のプログラムカウンタ等に（例えば、プログラムカウンタの下位ビット又は別の既定の位置に）コピーしてもよい。プログラムカウンタ内のコマンドインデックスに対応する命令は、要求された動作を実行する標的サブルーチンを指す無条件ジャンプ命令を含んでもよい。
【００７５】
一実施形態では、フロー制御処理ユニット４０２ａは、読み出しハザード及び／又は１つ以上の他のハザード（例えば、書き込み後読み出しハザード、書き込み後書き込みハザード、構造ハザード、制御ハザード等）を回避するために、１つ以上の他の処理ユニット４０２ａ〜ｄ、４０４ａ〜ｎを管理してもよい。例えば、フロー制御処理ユニット４０２ａは、読み出し後書き込みハザード、別のハザード等を回避するための実行順序を強制するために、単一割り込み待機（ＳＩＷ）命令及び／又はグループ割り込み待機（ＧＩＷ）命令を待機文等として使用して、フロー制御処理ユニット４０２ａの外側のステータスを積極的にチェックし、（例えば、ソフト／論理割り込み信号、ハード／物理割り込み信号、別の既定の条件等を待って）待機してもよい。
【００７６】
ある実施形態では、フロー制御処理ユニット４０２ａは、１つ以上の割り込み待機命令（例えば、ＳＩＷ及び／又はＧＩＷ）を使用することによって、１つ以上の他の処理ユニット４０２ａ〜ｄ、４０４ａ〜ｎの実行順序を管理してもよい。例えば、フロー制御処理ユニット４０２ａは、第１の命令シーケンスを実行し、割り込み条件（例えば、外部信号等）を識別するＳＩＷ及び／又はＧＩＷコマンドを実行し、割り込み条件を待機し、割り込み条件が満たされたことに応じて第２の命令シーケンスを実行してもよい。
【００７７】
ＧＩＷ待機命令は、一実施形態において、フロー制御処理ユニット４０２ａに、既定のグループ内の複数の割り込み信号（例えば、ハードウェア内で物理的にグループ化された複数の割り込み信号等）を待機させることを除いて、ＳＩＷ待機命令と実質的に同様である。ある実施形態では、ＧＩＷ待機命令は、選択された複数の割り込み信号の間で２項演算子ＡＮＤ又は２項演算子ＯＲを選択的に使用するように構成可能であってもよい。例えば、ＡＮＤ２項演算子が選択されると、ＧＩＷ待機命令は、全ての選択された複数の割り込み信号を受信するまで待機することになる。ＯＲ２項演算子が選択されると、ＧＩＷ待機命令は、選択された複数の割り込み信号のうちのいずれか１つを受信するまで待機することになり、その後、ＧＩＷ待機命令は、フロー制御処理ユニット４０２ａが続行することを可能にする。
【００７８】
ある実施形態では、複数の標的割り込み信号が物理的にグループ化されてなく、したがって、ＧＩＷ待機命令が、複数の標的割り込み信号のために使用されなくてもよい場合、フロー制御処理ユニット４０２ａは、一連の連続したＳＩＷ命令をサポートしてもよく、これらは全体として単一のＧＩＷ命令等のように挙動し得る。
【００７９】
一実施形態では、フロー制御処理ユニット４０２ａは、１つ以上の他の処理ユニット４０２ｂ〜ｄ、４０４ａ〜ｎのコマンドセンターとして機能する。フロー制御処理ユニット４０２ａは、コマンド及び／又はデータを他の処理ユニット４０２ｂ〜ｄ、４０４ａ〜ｎに送信し、それらのステータスを監視してもよい。この１対全ての通信パターンは、ある実施形態では、マイクロコードを削減し、設計の複雑性を低減し得る。一実施形態では、フロー制御処理ユニット４０２ａによって使用される命令メモリ空間４０６を最小化するために、及び／又はフロー制御処理ユニット４０２ａが性能ボトルネックになるのを防ぐために、フロー制御処理ユニット４０２ａは、いくつかのタスクを制御及び追跡し得るが、１つ以上の処理ユニット４０２ｂ〜ｄ、４０４ａ〜ｎに対する他のタスクを、進行中のステータスを監視及び／又は追跡することなく呼び出し得る。
【００８０】
フロー制御処理ユニット４０２ａによる制御を容易にする及び／又は単純化するために、ある実施形態では、１つ以上の他の処理ユニット４０２ｂ〜ｄ、４０４ａ〜ｎは、実質的に同様のインターフェース（例えば、標準インターフェース等）を有してもよい。１つ以上の異なる処理ユニット４０２ａ〜ｄ、４０４ａ〜ｎは、標準インターフェースを有してもよいが、異なるカテゴリ及び／又は種類のタスクを実行するための異なる命令セットをサポートしてもよい。
【００８１】
多くのタスク（例えば、複雑なアルゴリズム及び／又は反復実行を有する）は、フロー制御処理ユニット４０２ａの標準インターフェースプロトコルを介して、処理ユニット４０２ｂ〜ｄ、４０４ａ〜ｎによって制御されてもよいが、特定の種類の動作のために他の小さなかつ／又は１回限りの実行のタスクが存在してもよい。多くのこのような小さなタスクが存在する実施形態では、フロー制御処理ユニット４０２ａは、それらのタスク、経時的な新しいタスク、カスタムタスク等のためのサポートを提供する拡張された及び／又はカスタマイズ可能なインターフェースを備えてもよい。
【００８２】
例えば、フロー制御処理ユニット４０２ａは、マイクロコントローラ１５０の制御レジスタアレイ（例えば、６４ビット×１６ビット等）内で１つ以上のコマンドテーブルをサポートしてもよい。制御レジスタアレイは、ある実施形態では、フロー制御処理ユニット４０２ａのロード（ＬＯＤ）及び／又はストア（ＳＴＲ）命令によってアクセスされてもよい。制御レジスタアレイの空間の少なくとも一部は仮想であってもよく、なぜなら、フロー制御処理ユニット４０２ａの設計は、空間のサブセット（例えば、６４個のレジスタのうちの５つ等）のみを占有し得るためである。制御レジスタアレイの残部は、カスタムタスク等で使用するために、フロー制御処理ユニット４０２ａから比較的独立していてもよい。フロー制御処理ユニット４０２ａ用に予約されていない制御レジスタアレイ内の１つ以上のレジスタは、ある実施形態では、小さなタスク、１回限りのタスク、経時的な新しいタスク等を実行するために、カスタムコマンドテーブルを記憶してマイクロコントローラの機能性を拡張してもよい。
【００８３】
いくつかの実施形態では、１対全ての通信パターンは、マイクロコントローラ１５０のペースを制御し得る、フロー制御処理ユニット４０２ａとタイミング制御処理ユニット４０２ｂとの間の往復の信号／コマンドペアを使用してもよい。タイミング制御処理ユニット４０２ｂの出力は、メモリアクセス動作のタイミングを制御するために、メモリアクセス動作の全体を通してメモリアレイ２００の１つ以上の周辺モジュールに送達されてよい。フロー制御処理ユニット４０２ａは、マイクロコントローラ１５０内の唯一のマスタモジュールのままである場合、メモリアレイ２００上でのメモリアクセス動作の各工程のためにタイミング制御処理ユニット４０２ｂの進捗を監視してもよく、フロー制御処理ユニット４０２ａが、（例えば、フロー制御処理ユニット４０２ａの割り込みインターフェース等を介して）タイミング制御ユニット４０２ｂにコマンドを送信し、タイミング制御ユニット４０２ｂからフィードバック信号を受信するとき、フロー制御処理ユニット４０２ａ及びタイミング制御ユニット４０２ｂを同期させるために処理時間及び／又は揮発性メモリ４０６のオーバーヘッドを使用する。
【００８４】
マイクロコントローラ１５０の処理ユニット４０２ａ〜ｄ、４０４ａ〜ｎ及び／又はパイプラインの並列性を改善する、マイクロコードの行数を削減する、命令／データメモリ空間４０６を節約する等のために、処理ユニット４０２ａ〜ｄ、４０４ａ〜ｎのうちの１つ以上は、１つ以上のバッファ及び／又は出力ステージを備えてもよい。フロー制御処理ユニット４０２ａがマイクロコントローラ１５０のマスタのままであってもよいが、タイミング制御処理ユニット４０２ｂは、フロー制御処理ユニット４０２ａによって有効化されたときに、メモリアレイ２００上での１つ以上のメモリ動作のために適時に他の処理ユニット４０２ｃ〜ｄ、４０４ａ〜ｎをトリガするフロー制御処理ユニット４０２ａのプロキシになってもよい。
【００８５】
タイミング制御ユニット４０２ｂがマイクロコントローラ１５０全体のタイミング及び／又はペースを制御し得るとき、タイミング制御処理ユニット４０２ｂは、メモリ動作の実行進捗の知識を有してもよい。タイミング制御処理ユニット４０２ｂは、タイミング制御処理ユニット４０２ｂの命令セットをフロー制御処理ユニット４０２ａよりも拡張するためのより多くの利用可能な空間を（例えば、タイミング制御ユニット４０２ｂに関連付けられた揮発性メモリ４０６内に）有してもよく、この空間は、タイミング制御処理ユニット４０２ｂがフロー制御処理ユニット４０２ａのプロキシとして機能することを可能にするために使用され得る。例えば、タイミング制御処理ユニット４０２ｂの命令符号化テーブル内の空間のわずかな部分のみが、命令識別コード、引数、及びスイッチ（例えば、有効化／無効化ビット）で埋められてもよく、更なる引数及びスイッチを含めるための余地がタイミング制御処理ユニット４０２ｂの命令符号化テーブル内に残される。
【００８６】
ある実施形態では、タイミング制御処理ユニット４０２ｂの命令符号化テーブルの余剰容量は、タイミング制御処理ユニット４０２ｂが他の処理ユニット４０２ｃ〜ｄ、４０４ａ〜ｎ等をトリガするために使用するトリガを定義しているアレイ（例えば、８ビットアレイ等）を記憶してもよい。例えば、フロー制御処理ユニット４０２ａは、タイミング制御処理ユニット４０２ｂを起動及び／又は始動させてサブルーチンを実行してもよい。タイミング制御処理ユニット４０２ｂは、１つ以上のトリガをフロー制御処理ユニット４０２ａ、データラッチ制御ユニット４０２ｃ、電圧制御処理ユニット４０２ｄ、１つ以上の外部処理ユニット４０４ａ〜ｎ等に提供するために、バックグラウンドプロセスとして（例えば、フロー制御処理ユニット４０２ａと並列に）動作してもよい。
【００８７】
フロー制御処理ユニット４０２ａは、次のタスクを準備する、更新を提供する、バッファ内に出力を準備する等のために、１つ以上の他の処理ユニット４０２ｂ〜ｄ、４０４ａ〜ｎに準備コマンドを送信してもよい。フロー制御処理ユニット４０２ａは、様々な実施形態において、次の準備コマンドを送信するために、関連するタスクに応じて、タイミング制御処理ユニット４０２ｂのトリガを待機してもしなくてもよい。タイミング制御処理ユニット４０２ｂは、１つ以上の他の処理ユニット４０２ａ、４０２ｃ、４０２ｄ、４０４ａ〜ｎをトリガして、（例えば、タスクを完了する、タスクの次の工程をトリガする等のために）バッファ値を関連する出力ステージ等にコピーしてもよい。
【００８８】
フロー制御処理ユニット４０２ａは、処理ユニット４０２ｂ〜ｄ、４０４ａ〜ｎに初期化コマンド（例えば、起動コマンド、準備コマンド等）を送信してもよく、タイミング制御処理ユニット４０２ｂは、タスクの後続の部分を始動させるトリガを処理ユニット４０２ｃ〜ｄ、４０４ａ〜ｎに送信する、フィードバックをフロー制御処理ユニット４０２ａに（例えば、フロー制御処理ユニット４０２ａの割り込みポート又は他の割り込みインターフェースを介して）送信する等をしてもよい。タイミング制御処理ユニット４０２ｂからのトリガ信号は、出力信号、値等を提供するように（例えば、データラッチ制御処理ユニット４０２ｃには値をデータラッチにロードするように、電圧制御処理ユニット４０２ｄには出力電圧を供給するように等）、タスクを完了するように、タスクの中間工程として等、別の処理ユニット４０２ｃ〜ｄ、４０４ａ〜ｎをトリガしてもよい。
【００８９】
例えば、電圧制御処理ユニット４０２ｄは、マイクロコントローラ１５０からのバイナリ及び／又はデジタル値をメモリアレイ２００用のアナログ電圧（例えば、プログラム電圧、消去電圧、読み出し電圧、バイアス電圧、ワード線電圧、ビット線電圧、禁止電圧等）に変換してもよい。データラッチ制御処理ユニット４０２ｃは、ある実施形態では、メモリアレイ用の１つ以上のデータバッファ、メモリアレイ２００用の論理回路（例えば、センスアンプ２５０を制御するＹＬＯＧ論理回路、読み出し／書き込み回路２３０、行デコーダ２４０等）、及び／又は集積回路デバイス１２３のメモリアレイ２００用の他の回路を制御してもよい。
【００９０】
一実施形態では、データラッチ制御処理ユニット４０２ｃは、揮発性メモリ４０６からのデータをコマンドインデックスに復号してもよい（例えば、３２ビット及び／又は６４ビットのＳＲＡＭデータを１つ以上のコマンドインデックスに復号する等）。データラッチ制御処理ユニット４０２ｃは、ある実施形態では、ハードコードされた組み合わせ論理及び／又は他のルールを使用して、復号されたコマンドインデックスを１つ以上のコマンド（例えば、ＹＬＯＧコマンド）に変換してもよい。データラッチ制御処理ユニット４０２ｃは、クロックサイクル又はクロックサイクルのセットごとに、所定の数のコマンドをバッファしてもよい。例えば、データラッチ制御処理ユニット４０２ｃは、クロックサイクルごとに４つのコマンドをバッファし、４つの論理コマンドのうちの１つをクロックサイクルの４分の１ごとに（例えば、８０ナノ秒のクロックサイクルに対して２０ナノ秒ごとに等）出力してもよい。データラッチ制御処理ユニット４０２ｃは、既定のコマンドシーケンス（例えば、ＹＬＯＧコマンドシーケンス）を揮発性メモリ４０６等に記憶してもよい。
【００９１】
例えば、一実施形態では、データラッチ制御処理ユニット４０２ｃは、コマンドの１つ以上の順序付けられたリストをそれぞれに含む、約６４、１２８、２５６、又はそれ以上のコマンドシーケンスを記憶してもよい。コマンドシーケンスは、様々な実施形態において、単一のコマンド、複数のコマンド、最大５つのコマンド、最大１０個のコマンド、最大１３個のコマンド、最大１５個のコマンド、最大２０個のコマンド、２０個を超えるコマンド等を含んでもよい。
【００９２】
マイクロコントローラ１５０は、データラッチに記憶された値の柔軟な制御を提供してもよく、データラッチ制御処理ユニット４０２ｃは、コマンドシーケンスに復号されたコマンドインデックスに基づいてデータラッチ内にデータを記憶し、フロー制御処理ユニット４０２ａは、１つ以上のデータラッチに記憶されたデータを選択的にオーバーライドする。例えば、フロー制御処理ユニット４０２ａは、コマンドシーケンス（例えば、メモリアレイ２００用及び／又はセンスアンプ２５０、読み出し／書き込み回路２３０、行デコーダ２４０用の１つ以上のコマンド等）を生成するサブルーチン（例えば、マイクロコード又は他のコンピュータ実行可能プログラムコード）を実行するように、データラッチ制御処理ユニット４０２ｃを始動させてもよく、フロー制御処理ユニット４０２ａは、１つ以上のデータ値を１つ以上のデータラッチに直接記憶してもよく、フロー制御処理ユニット４０２ａは、データラッチに対してコマンドインデックスをマスク、トランケート、変更、更新、及び／又は上書きしてもよい。
【００９３】
ある実施形態では、メモリアレイ２００用の読み出しコマンドは、プログラム及び／又は消去コマンドよりも高い優先度を有してもよい（例えば、ＮＡＮＤフラッシュメモリにおいて、読み出し動作は、プログラム及び／又は消去動作よりも実質的に高速に実行されてもよい等）。マイクロコントローラ１５０は、割り込みの読み出し要求等の受信に応じてプログラム又は消去コマンドシーケンスの実行から読み出しコマンドシーケンスに切り替わり、読み出し命令シーケンスの完了に応じてプログラム又は消去コマンドシーケンスに戻ってもよい。マイクロコントローラ１５０は、プログラム又は消去コマンドシーケンス内の中断した位置でプログラム又は消去サブルーチンに戻ってもよい。
【００９４】
一実施形態では、マイクロコントローラ１５０は、サスペンドが影響した場所を示しているマイクロコントローラ１５０のステータスを記憶するシャドウレジスタのセットを含んでもよい。しかしながら、ある実施形態では、シャドウレジスタよりも少ない電力及び回路空間を使用するために、フロー制御処理ユニット４０２ａは、処理ユニット４０２ａ〜ｄ、４０４ａ〜ｎのためのレジスタファイル及び保留中のコマンドシーケンスをスレッド切り替えスタックにプッシュしてもよく、割り込みの読み出し動作後にプログラム又は消去動作を再開することに応じて、スレッド切り替えスタックからレジスタファイル及び保留中のコマンドシーケンスをポップしてもよい。処理ユニット４０２ａ〜ｄ、４０４ａ〜ｎは、中断されたプログラム又は読み出し動作をそれらが中断した位置から開始してもよく、又は、コマンドシーケンス内の特定のコマンドを再実行して、適切な動作状態等を再作成してもよい。スレッド切り替えスタックを使用することは、マイクロコントローラ１５０全体にシャドウレジスタを使用するよりも少ないレジスタを追加し得ると同時に、フロー制御処理ユニット４０２ａ及びタイミング制御処理ユニット４０２ｂが同期されたままであることを可能にし、その結果、他の処理ユニット４０２ｃ〜ｄ、４０４ａ〜ｎは、タイミング制御処理ユニット４０２ｂがそれらをトリガしたときに、中断されたプログラム又は消去動作を再開した後であっても、正しいバッファ値を準備することができる。
【００９５】
図５は、スレッド管理ユニット５０２によって同期及び／又は管理された複数のオンダイメモリマイクロコントローラコア１５０ａ〜ｎを有するシステム５００の一実施形態を示す。図示の実施形態では、マイクロコントローラコア１５０ａ〜ｎの各々は、同様のサイズを有する（例えば、同様の処理ユニット３０２ａ〜３０２ｄ、同様の数の処理ユニット３０２ａ〜３０２ｄ等を有してもよい）。
【００９６】
各マイクロコントローラコア１５０ａ〜ｎは、ある実施形態では、メモリメディア１２２の異なるサブセット（例えば、１つ以上の異なるダイ、ダイプレーン、ブロック、消去ブロック等）に関連付けられてもよく、それぞれは、メモリメディア１２２の関連するサブセット上でプログラム、読み出し、及び／又は消去動作を実行することができる。更なる実施形態では、異なるマイクロコントローラコア１５０ａ〜ｎは、メモリメディア１２２の任意の選択されたサブセット（例えば、１つ以上の異なるダイ、ダイプレーン、ブロック、消去ブロック等）上でプログラム、読み出し、及び／又は消去動作を実行するように構成されてもよい。
【００９７】
図６は、複数のオンダイメモリマイクロコントローラコア１５０ａ〜ｎとスレッド管理ユニット５０２とを有するシステム６００の別の実施形態を示す。図示の実施形態では、１つのマイクロコントローラコア１５０ａは、１つ以上の追加のマイクロコントローラコア１５０ｂ〜ｎよりも大きいサイズを有する（例えば、マイクロコントローラコア１５０ａは、より少ない及び／又はより小さい処理ユニット３０２ａ〜ｃを有する１つ以上の追加のマイクロコントローラコア１５０ｂ〜ｎと比べて、より多い及び／又はより大きい処理ユニット３０２ａ〜３０２ｄを有してもよい、等）。
【００９８】
図５に示されるように、それぞれがフルの能力を有する、複数のフルサイズのマイクロコントローラコア１５０ａ〜ｎは、集積回路デバイス１２３の電力及び／又は回路面積をより多く消費し得る。図６では、システム６００は、１つ以上のフルサイズのマイクロコントローラコア１５０ａと、１つ以上の縮小サイズ及び／又は部分的なマイクロコントローラコア１５０ｂ〜ｎと、を含む（例えば、電力を節約するために（to conserver power）、回路サイズを縮小するために、等）。例えば、図示の実施形態では、例示のみを目的として、第１のフルサイズのマイクロコントローラコア１５０ａは、４つの処理ユニット３０２ａ〜ｄを備えているが、１つ以上の部分的な及び／又は縮小サイズのマイクロコントローラコア１５０ｂ〜ｎは、（例えば、フルサイズ（fill size）のコントローラコア１５０ａよりも少ない）３つの処理ユニット３０２ａ〜ｃを備える。
【００９９】
１つ以上の部分的な及び／又は縮小サイズのマイクロコントローラコア１５０ｂ〜ｎは、サイズを縮小するために、不要なレジスタ、ほとんど使用されない命令、ポインタスタック、レジスタファイルエントリ等を除去されていてもよい。部分的な及び／又は縮小サイズのマイクロコントローラコア１５０ｂ〜ｎは、ある実施形態では、全てのユーザモード動作、ユーザモード動作の所定のセット等を実行することが可能であり得るが、フルサイズの完全なマイクロプロセッサコア１５０ａより小さくてもよい。フルサイズの完全なマイクロコントローラ１５０ａは、ユーザモード動作及び組み込み自己テストのテストモード動作の両方を実行することが可能であってもよい。
【０１００】
例えば、フルサイズの完全なマイクロコントローラ１５０ａは、組み込み自己テスト処理ユニットを備えるフロー制御処理ユニット４０２ａを備えてもよく、その一方で、部分的な及び／又は縮小サイズのマイクロコントローラコア１５０ｂ〜ｎは、組み込み自己テスト処理ユニットを有しないフロー制御処理ユニット４０２ａを備えてもよい。更なる実施形態では、フルサイズの完全なマイクロコントローラ１５０ａは、読み出し処理ユニット及びプログラム／書き込み処理ユニットの両方を備えるフロー制御処理ユニット４０２ａを備えてもよく、その一方で、部分的な及び／又は縮小サイズのマイクロコントローラコア１５０ｂ〜ｎは、読み出し処理ユニットを有するがプログラム／書き込み処理ユニットを有しないフロー制御処理ユニット４０２ａを備えてもよい。
【０１０１】
フルサイズの完全なマイクロコントローラ１５０ａは、１つ以上の部分的な及び／又は縮小サイズのマイクロコントローラコア１５０ｂ〜ｎが１つ以上の動作をサポートしなくてもよいので、その１つ以上の動作（例えば、プログラム動作、消去動作、組み込み自己テストのテスト動作等）を集積回路デバイス１２３のメモリメディア１２２の各異なるサブセット（例えば、１つ以上の異なるダイ、ダイプレーン、ブロック、消去ブロック等）に対して実行してもよい。ある実施形態では、マイクロコントローラコア１５０ａ〜ｎの各々がサポートする動作（例えば、読み取り動作）のために、異なるマイクロコントローラコア１５０ａ〜ｎが、集積回路デバイス１２３のメモリメディア１２２の異なるサブセット（例えば、１つ以上の異なるダイ、ダイプレーン、ブロック、消去ブロック等）に割り当てられてもよい。
【０１０２】
例えば、一実施形態では、集積回路デバイス１２３のダイは、複数のダイプレーン（例えば、４つのダイプレーン）を備えてもよく、それぞれは、メモリ動作を並列に実行することができる別個のメモリアレイ２００を有する。ダイプレーンは、互いに集積回路デバイス１２３の同じレベル（例えば、半導体、金属又は他の導体、絶縁体等の１つ以上の層）内に（例えば、同じレベル内で隣接して）、又は異なるオフセットされたレベル内に平行に、等で配設されてもよい。
【０１０３】
各ダイプレーンは、一実施形態において、マイクロコントローラコア１５０ａ〜ｎの各々によってサポートされている動作（例えば、読み出し動作）のために、異なるマイクロコントローラコア１５０ａ〜ｎを割り当てられてもよく、その一方で、単一のマイクロコントローラコア１５０ａ（例えば、フルサイズの完全なマイクロコントローラコア１５０ａ）は、各ダイプレーンに対してマイクロコントローラコア１５０ａ〜ｎの各々によってサポートされていない１つ以上の動作（例えば、プログラム動作、消去動作、組み込み自己テストのテスト動作等）を実行してもよい。例えば、４つのダイプレーンと、４つのダイプレーンの各々に対してプログラム動作を実行することができる１つのフルサイズのマイクロコントローラコア１５０ａと、３つの追加の縮小サイズのマイクロコントローラコア１５０ｂ〜ｎと、を有し、４つ全てのマイクロコントローラコア１５０ａ〜ｎが、読み出し動作を実行するために異なるダイプレーンに割り当てられている、一実施形態では、最大４つの読み出し動作が並列に実行されてもよく、又は３つの読み出し動作及び１つのプログラム動作、等が、並列に実行されてもよい。
【０１０４】
このようにして、ある実施形態では、高優先度動作（例えば、読み出し動作等）は、電力消費及び回路サイズを依然として最小化しながら、複数のメモリダイ、又はメモリの他の領域上で並列に実行されてもよい。単一のプログラム及び／又は消去動作のみを一度に実行することは、ある実施形態では、プログラム及び／又は消去動作に使用されるピーク電力のため、電力管理に最適であり得、その一方で、読み出し動作は、より少ない電力を使用し得る。
【０１０５】
１つ以上のより小さい縮小サイズのマイクロコントローラコア１５０ｂ〜ｎは、一実施形態において、それぞれタイミング制御処理ユニット４０２ｂを含んでもよい。ある実施形態では、１つ以上のより小さい縮小サイズのマイクロコントローラコア１５０ｂ〜ｎのためのフロー制御処理ユニット４０２ａは、より大きいフルサイズのマイクロコントローラコア１５０ａの場合より小さくても（読み出し動作を実行するのに十分だが、プログラム動作等には不十分な論理を有する、より小さい命令セットで、縮小、除去されても）よい。
【０１０６】
更なる実施形態では、１つ以上のより小さい縮小サイズのマイクロコントローラコア１５０ｂ〜ｎは、フロー制御処理ユニット４０２ａを有しなくてもよいが、フロー制御処理ユニット４０２ａの論理及び／又は機能の一部は、タイミング制御処理ユニット４０２ｂ等と組み合わされてもよい。複数のより小さい縮小サイズのマイクロコントローラコア１５０ｂ〜ｎは、一実施形態において、単一のデータラッチ制御処理ユニット４０２ｃ等を共有してもよい。ある実施形態では、フルサイズのマイクロコントローラコア１５０ａ及び縮小サイズのマイクロコントローラコア１５０ｂ〜ｎの両方は、同じファームウェアコードを共有し得るが、異なるサブルーチン等を実行してもよい。揮発性メモリバッファ４０６は、一実施形態において、１つ以上の縮小サイズのマイクロコントローラコア１５０ｂ〜ｎ内の回路サイズを縮小するために、サイズ縮小、共有、排除等が行われてもよい。
【０１０７】
ある実施形態では、各マイクロコントローラコア１５０ａ〜ｎが個別のタイミング制御処理ユニット４０２ｂを含むことが有益であってもよく、その結果、集積回路デバイス１２３のメモリメディア１２２の各チャネル、ダイプレーン、又は他のサブセットが、連続的な個別のタイミング制御を受信してもよい。更なる実施形態では、各マイクロコントローラコア１５０ａ〜ｎは、異なるマイクロコントローラコア１５０ａ〜ｎ間でのスレッド切り替えが、異なるマイクロコントローラコア１５０ａ〜ｎ間の同期の増加及び頻繁な切り替えに起因して、性能に悪影響を及ぼし得るため、個別のフロー制御処理ユニット４０２ａを含んでもよい。フロー制御処理ユニット４０２ａ及び／又はタイミング制御処理ユニット４０２ｂの縮小バージョン（例えば、読み出し動作を扱うがプログラム動作は扱わない等）は、縮小された命令セット、縮小された揮発性メモリ４０６等を有してもよい。
【０１０８】
スレッド管理ユニット（ＴＭＵ）５０２は、ある実施形態では、コマンドを異なるマイクロコントローラコア１５０ａ〜ｎに分配する（例えば、集積回路デバイス１２３のメモリメディア１２２の異なるチャネル、ダイプレーン、及び／又は他のサブセットのためのコマンド等）。例えば、スレッド管理ユニット５０２は、デバイスコントローラ１２６からコマンド（例えば、読み出しコマンド、書き込み／プログラムコマンド、消去コマンド、テストコマンド等）を受信し、マイクロコントローラコア１５０ａ〜ｎを選択してもよい（例えば、コマンドのアドレス又は他のインジケータに基づいて、どのマイクロコントローラ１５０ａ〜ｎが利用可能及び／又はビジーであるかに基づいて、等）。スレッド管理ユニット５０２は、（例えば、コマンドを完了するマイクロコントローラ、コマンド実行中のビジーステータス等に応じて）コマンドのステータスをデバイスコントローラ１２６にレポートしてもよい。
【０１０９】
スレッド管理ユニット５０２は、様々な実施形態において、マイクロコントローラコア１５０ａ〜ｎ間の共有リソース（例えば、外部処理ユニット４０４ａ〜ｎ、共有揮発性メモリ４０６等）を割り当ててもよく、マイクロコントローラコア１５０ａ〜ｎのための電力を管理し（例えば、異なるマイクロコントローラコア１５０ａ〜ｎをウェイク及び／又はスリープさせて電力を管理する等）、マイクロコントローラコア１５０ａ〜ｎ間の競合及び／若しくは衝突を管理し、並びに／又は別の方法で異なるマイクロコントローラコア１５０ａ〜ｎ間を調整してもよい。
【０１１０】
ある実施形態では、スレッド管理ユニット５０２は、異なるマイクロコントローラコア１５０ａ〜ｎの各フロー制御処理ユニット４０２ａから標的タイミング制御処理ユニット４０２ｂにコマンドをディスパッチし、１つのマイクロコントローラコア１５０ａ〜ｎのフロー制御処理ユニット４０２ａと、異なるマイクロコントローラコア１５０ａ〜ｎのタイミング制御処理ユニット４０２ｂとの間での通信、タスクの共有、タスクの転送等を可能にする。
【０１１１】
例えば、より大きいフルサイズのマイクロコントローラ１５０ａのためのフロー制御処理ユニット４０２ａは、集積回路デバイス１２３のメモリメディア１２２の各ダイプレーン又は他のサブセットに対するプログラム動作を管理してもよく、その一方で、マイクロコントローラコア１５０ａ〜ｎのタイミング制御処理ユニット４０２ｂは、メモリメディア１２２の異なるダイプレーン又は他のサブセットに対して専用であってもよく（例えば、導体線の配置やルーティングを簡素化するために等）、スレッド管理ユニット５０２は、プログラム動作のために、フロー制御処理ユニット４０２ａから他のタイミング制御処理ユニット４０２ｂにコマンド、タスク等を送信して、フロー制御処理ユニット４０２ａからのコマンドをプログラム動作用の適切なチャネル（例えば、ダイプレーン）にリンクしてもよい。
【０１１２】
スレッド管理ユニット５０２は、ある実施形態では、動作、コマンド、及び／又はタスクをフルサイズのマイクロコントローラ１５０ａのフロー制御処理ユニット４０２ａからプログラム動作用のチャネルに関連付けられたタイミング制御処理ユニット４０２ｂにルーティングするために、並びにタスクを他の（例えば、縮小サイズのマイクロコントローラ１５０ｂ〜ｎの）フロー制御処理ユニット４０２ａからそれらの対応のチャネルに関連付けられたタイミング制御処理ユニット４０２ｂにルーティングするために、割り当てテーブル及びマルチプレクサを使用してもよい。
【０１１３】
図７は、オンダイメモリマイクロコントローラ１５０を有する集積回路デバイス７００の一実施形態を示す概略的なブロック図である。図示の実施形態では、メモリアレイ２００（例えば、１つ以上のダイプレーン等）は、集積回路デバイス７００の１つのレベル（例えば、導体、絶縁体、半導体等の１つ以上の層）内にあり、マイクロコントローラ１５０及び他の回路７０４（例えば、センスアンプ、ワード線スイッチ等）は、（例えば、アレイ２００の下で）集積回路デバイス７００の異なるレベル内にあり、１つ以上の相互接続部７０２（例えば、絶縁層、導電層、シリコン貫通ビア、孔、バス等）を介してメモリアレイ２００と通信する。図示の実施形態では、メモリアレイ２００は、集積回路デバイス７００の第１のレベル内にあり、マイクロコントローラ１５０は、第１のレベルと平行であり、かつ第１のレベルからオフセットされている、集積回路デバイス７００の第２のレベル内にある。基板７０６は、集積回路デバイス７００の第３のレベル（例えば、１つ以上の他の層が上に形成及び／又は堆積されている支持構造体）を含み、他の層と平行であり、かつ他の層からオフセットされている。
【０１１４】
図８は、オンダイメモリマイクロコントローラ１５０のための方法８００の一実施形態を示す概略的なフローチャート図である。方法８００が開始すると、マイクロコントローラ１５０は、集積回路デバイス１２３のメモリアレイ２００に対するメモリ動作の要求（例えば、読み出し要求、書き込み／プログラム要求、消去要求等）を受信する（８０２）。
【０１１５】
フロー制御処理ユニット４０２ａ及び／又はスレッド管理ユニット５０２は、受信した（８０２）メモリ動作の要求のためのタスクを異なる処理ユニット３０２ａ〜ｎ、４０２ａ〜ｄ、４０４ａ〜ｎに割り当てる（８０４）。１つ以上の処理ユニット３０２ａ〜ｎ、４０２ａ〜ｄ、４０４ａ〜ｎは、割り当てられたタスク（８０４）を実行してメモリ動作を完了し（８０６）、方法８００は終了する。
【０１１６】
図９は、オンダイメモリマイクロコントローラ１５０のための方法９００の一実施形態を示す概略的なフローチャート図である。方法９００が開始すると、マイクロコントローラ１５０は、集積回路デバイス１２３のメモリアレイ２００に対するメモリ動作の要求（例えば、読み出し要求、書き込み／プログラム要求、消去要求等）を受信する（９０２）。
【０１１７】
フロー制御処理ユニット４０２ａ及び／又はスレッド管理ユニット５０２は、受信したメモリ動作の要求（９０２）のためのタスクを判定する（９０４）。フロー制御処理ユニット４０２ａ及び／又はスレッド管理ユニット５０２は、フロー制御タスクが存在するかどうかを判定し（９０６）、フロー制御処理ユニット４０２ａは、判定された（９０６）フロー制御タスクを実行する（９０８）。フロー制御処理ユニット４０２ａ及び／又はスレッド管理ユニット５０２は、タイミング制御タスクが存在するかどうかを判定し（９１０）、タイミング制御処理ユニット４０２ｂは、判定された（９１０）タイミング制御タスクを実行する（９１２）。フロー制御処理ユニット４０２ａ及び／又はスレッド管理ユニット５０２は、電圧制御タスクが存在するかどうかを判定し（９１４）、電圧制御処理ユニット４０２ｄは、判定された（９１４）電圧制御タスクを実行する（９１６）。フロー制御処理ユニット４０２ａ及び／又はスレッド管理ユニット５０２は、データラッチ制御タスクが存在するかどうかを判定し（９１８）、データラッチ制御処理ユニット４０２ｃは、判定された（９１８）データラッチ制御タスクを実行する（９２０）。方法９００は継続し、マイクロコントローラ１５０は、メモリ動作のための１つ以上の追加の要求を受信する（９０２）。
【０１１８】
データを記憶する手段は、様々な実施形態において、メモリデバイス１２０、メモリメディア１２２、メモリ素子１２３、メモリアレイ２００、揮発性メモリメディア１２２（例えば、ＲＡＭ、ＤＲＡＭ、ＳＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＳＲＡＭ、Ｔ−ＲＡＭ、Ｚ−ＲＡＭ等）、不揮発性メモリメディア１２２（例えば、ＲｅＲＡＭ、メモリスタメモリ、プログラマブルメタライゼーションセルメモリ、ＰＣＭ、ＰＣＭＥ、ＰＲＡＭ、ＰＣＲＡＭ、Ｏｖｏｎｉｃ  Ｕｎｉｆｉｅｄ  Ｍｅｍｏｒｙ、Ｃ−ＲＡＭ、ＮＡＮＤフラッシュメモリ、２Ｄ  ＮＡＮＤフラッシュメモリ、３Ｄ  ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、ナノＲＡＭ又はＮＲＡＭ、ナノクリスタルワイヤベースメモリ、シリコン酸化物系のサブ−１０ナノメートルプロセスメモリ、グラフェンメモリ、ＳＯＮＯＳメモリ、ＰＭＣメモリ、ＣＢＲＡＭ、ＭＲＡＭ、ハードディスク又はテープドライブ等の磁気ストレージメディア、光ストレージメディア、ＳＣＭ等）等を含んでもよい。他の実施形態は、データを記憶するための同様又は同等の手段を含んでもよい。
【０１１９】
タスクのカテゴリでタスクをソートする手段は、様々な実施形態において、マイクロコントローラ１５０、フロー制御処理ユニット４０２ａ、スレッド管理ユニット５０２、データラッチ制御処理ユニット４０２ｃ、集積回路デバイス１２３、及び／若しくは他の論理ハードウェア、又はコンピュータ可読のストレージメディア上に記憶されたコンピュータ実行可能コードを含んでもよい。他の実施形態は、タスクのカテゴリでタスクをソートするための同様又は同等の手段を含んでもよい。
【０１２０】
異なるカテゴリのタスクを並列に実行する手段は、様々な実施形態において、マイクロコントローラ１５０、フロー制御処理ユニット４０２ａ、タイミング制御処理ユニット４０２ｂ、データラッチ制御処理ユニット４０２ｃ、電圧制御処理ユニット４０２ｄ、外部処理ユニット４０４ａ〜ｎ、別の処理ユニット３０２ａ〜ｎ、４０２ａ〜ｄ、４０４ａ〜ｎ、集積回路デバイス１２３、及び／若しくは他の論理ハードウェア、又はコンピュータ可読のストレージメディア上に記憶されたコンピュータ実行可能コードを含んでもよい。他の実施形態は、異なるカテゴリのタスクを並列に実行するための同様又は同等の手段を含んでもよい。
【０１２１】
異なるセットの処理ユニットを使用してより少ないカテゴリのタスクを実行する手段は、様々な実施形態において、マイクロコントローラ１５０、フロー制御処理ユニット４０２ａ、タイミング制御処理ユニット４０２ｂ、データラッチ制御処理ユニット４０２ｃ、電圧制御処理ユニット４０２ｄ、外部処理ユニット４０４ａ〜ｎ、別の処理ユニット３０２ａ〜ｎ、４０２ａ〜ｄ、４０４ａ〜ｎ、集積回路デバイス１２３、及び／若しくは他の論理ハードウェア、又はコンピュータ可読のストレージメディア上に記憶されたコンピュータ実行可能コードを含んでもよい。他の実施形態は、異なるセットの処理ユニットを使用してより少ないカテゴリのタスクを実行するための同様又は同等の手段を含んでもよい。
【０１２２】
本開示は、その趣旨又は本質的な特性から逸脱することなく他の特定の形態で具現化されてもよい。説明された実施形態は、あらゆる点で、例示的であり、かつ制限的でないものと考慮されるべきである。本開示の範囲は、このため、上記の説明よりもむしろ添付の特許請求の範囲により示される。特許請求の範囲の意味及び均等物の範囲内に収まる全ての変更は、それらの範囲に包含されるべきである。
【図１】
2020510951.tif 000003
【図２】
2020510951.tif 000004
【図３】
2020510951.tif 000005
【図４】
2020510951.tif 000006
【図５】
2020510951.tif 000007
【図６】
2020510951.tif 000008
【図７】
2020510951.tif 000009
【図８】
2020510951.tif 000010
【図９】
2020510951.tif 000011
【国際調査報告】
2020510951.tif 000012
2020510951.tif 000013
2020510951.tif 000014
2020510951.tif 000015