JP2020510951A - マルチコアオンダイメモリマイクロコントローラ - Google Patents

マルチコアオンダイメモリマイクロコントローラ Download PDF

Info

Publication number
JP2020510951A
JP2020510951A JP2019551286A JP2019551286A JP2020510951A JP 2020510951 A JP2020510951 A JP 2020510951A JP 2019551286 A JP2019551286 A JP 2019551286A JP 2019551286 A JP2019551286 A JP 2019551286A JP 2020510951 A JP2020510951 A JP 2020510951A
Authority
JP
Japan
Prior art keywords
microcontroller
processing unit
volatile memory
memory
processing units
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2019551286A
Other languages
English (en)
Inventor
イン,イボ
ジャン,ヘンリー
ライ,ポー−シェン
チンコール,ヴィジャイ
ゲオルガキス,スピリドン
リー,ヤン
裕之 水越
裕之 水越
達 三輪
達 三輪
パカール,ジェイシュ
リウ,ツー−イー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Technologies LLC
Original Assignee
SanDisk Technologies LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Priority claimed from PCT/US2018/024103 external-priority patent/WO2018231313A1/en
Publication of JP2020510951A publication Critical patent/JP2020510951A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/14Implementation of control logic, e.g. test mode decoders
    • G11C29/16Implementation of control logic, e.g. test mode decoders using microprogrammed units, e.g. state machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/785Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers) with decentralized control, e.g. smart memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Microcomputers (AREA)
  • Semiconductor Integrated Circuits (AREA)
  • Read Only Memory (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

マルチコアオンダイメモリコントローラ150のための装置、システム、方法、及びコンピュータプログラムプロダクトが開示される。集積回路デバイス123、212、700は、不揮発性メモリセルのアレイ200及びマイクロコントローラユニット150を含む。マイクロコントローラユニット150は、複数の処理ユニット302、402、404を含む。異なる処理ユニット302、402、404は、不揮発性メモリセルのアレイ200に対して異なるカテゴリのタスクを並列に実行する。【選択図】図2

Description

本開示は、様々な実施形態において、不揮発性及び/又は揮発性メモリに関し、より詳細には、不揮発性及び/又は揮発性メモリ用のオンダイメモリマイクロコントローラに関する。
メモリデバイスは、メモリデバイスの特定の動作を制御する状態マシンを有し得る。しかしながら、ひとたび状態マシンが「テープアウト」され、生産状態になると、誤り又は設計欠陥に対処するために行うことができる変更は、あってもごくわずかであり、設計サイクルを大幅に延ばすことのない開発及び試験の柔軟性は制限される。
マルチコアオンダイメモリコントローラのための装置、システム、方法、及びコンピュータプログラムプロダクトが開示される。一実施形態では、装置は、集積回路デバイス内の不揮発性メモリセルのアレイを含む。装置は、更なる実施形態において、集積回路デバイス内のマイクロコントローラユニットを含む。ある実施形態では、装置は、マイクロコントローラユニットの複数の処理ユニットを含む。異なる処理ユニットは、いくつかの実施形態において、不揮発性メモリセルのアレイに対して異なるカテゴリのタスクを並列に実行する。
システムは、一実施形態において、1つ以上の層をそれぞれ含んでいる複数のレベルを含む集積回路デバイスを含む。集積回路デバイスの第1のレベルは、ある実施形態において、不揮発性メモリメディアを含む。更なる実施形態では、集積回路デバイスの第2のレベルは、第1のレベルと平行であり、かつ第1のレベルからオフセットされている。集積回路デバイスの第2のレベルは、一実施形態において、複数の処理ユニットを有するマイクロコントローラを含む。異なる処理ユニットは、様々な実施形態において、不揮発性メモリメディアに対して異なる種類のタスクを並列に実行する。
別の装置は、ある実施形態において、データを記憶する手段を含む。一実施形態では、装置は、データを記憶する手段のためのタスクをタスクのカテゴリでソートする手段を含む。装置は、いくつかの実施形態において、データを記憶する手段のための異なる処理ユニットを使用して、データを記憶する手段のための異なるカテゴリのタスクを並列に実行する手段を含む。
方法は、一実施形態において、メモリ動作の要求を受信することを含む。ある実施形態では、方法は、メモリ動作を完了するための複数のタスクを判定することを含む。複数のタスクの異なるタスクは、一実施形態において、異なる命令セットに関連付けられている。方法は、いくつかの実施形態において、マイクロコントローラの異なる処理ユニットを使用して、複数のタスクの異なるタスクを並列に実行することを含む。異なる処理ユニットは、一実施形態において、異なる命令セットをサポートする。
更なる装置は、いくつかの実施形態において、集積回路デバイスのメモリアレイのためのマイクロコントローラを含む。マイクロコントローラは、一実施形態において、第1の処理ユニットを使用してメモリ動作のための複数のタスクを選択するように構成されている。マイクロコントローラは、更なる実施形態において、第2の処理ユニットを使用してメモリ動作のための複数のタスクのタイミングを制御するように構成されている。ある実施形態では、マイクロコントローラは、第3の処理ユニットを使用してメモリ動作のための複数のタスクのための電圧を設定するように構成されている。
添付図面に示される特定の実施形態を参照して、以下により詳しい説明を含める。これらの図面は本開示のある実施形態のみを示し、したがってその範囲を限定するものとして見なされるべきではないと理解した上で、以下の添付図面を使用して、付加的な特殊性及び詳細を伴って本開示を記述し説明する。
オンダイメモリマイクロコントローラのためのシステムの一実施形態を示す概略的なブロック図である。 オンダイメモリマイクロコントローラのためのシステムの別の実施形態を示す概略的なブロック図である。 オンダイメモリマイクロコントローラの一実施形態を示す概略的なブロック図である。 オンダイメモリマイクロコントローラの更なる実施形態を示す概略的なブロック図である。 複数のオンダイメモリマイクロコントローラコアを有するシステムの一実施形態を示す概略的なブロック図である。 複数のオンダイメモリマイクロコントローラコアを有するシステムの別の実施形態を示す概略的なブロック図である。 オンダイメモリマイクロコントローラを有する集積回路デバイスの一実施形態を示す概略的なブロック図である。 オンダイメモリマイクロコントローラのための方法の一実施形態を示す概略的なフローチャート図である。 オンダイメモリマイクロコントローラのための方法の更なる実施形態を示す概略的なフローチャート図である。
本開示の態様は、装置、システム、方法、又はコンピュータプログラムプロダクトとして具現化され得る。よって、本開示の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、又はソフトウェアの態様及びハードウェアの態様を組み合わせた実施形態の形をとってもよく、これら全ては概して本明細書において「回路」、「モジュール」、「装置」、又は「システム」として参照され得る。更に、本開示の態様は、コンピュータ可読の及び/又は実行可能なプログラムコードを記憶する1つ以上の非一時的コンピュータ可読のストレージメディアにおいて具現化されるコンピュータプログラムプロダクトの形をとってもよい。
本明細書に記載の機能ユニットの多くは、その実装独立性をより強調するためにモジュールとしてラベル化されている。例えば、モジュールは、カスタムVLSI回路又はゲートアレイ、論理チップ、トランジスタ、又は他のディスクリート部品等の市販の半導体、を含むハードウェア回路として実装されてもよい。モジュールは、フィールドプログラマブル・ゲートアレイ、プログラマブルアレイロジック、プログラマブルロジックデバイス等の、プログラマブルハードウェアに実装されてもよい。
モジュールは、様々なタイプのプロセッサによって実行されるソフトウェアにおいて、少なくとも部分的に実装されてもよい。実行可能コードの特定されたモジュールは、例えば、オブジェクト、プロシジャ、又は機能として編成され得るコンピュータ命令の1つ以上の物理又は論理ブロックを例えば備えてもよい。それにもかかわらず、特定されたモジュールの実行可能ファイルは、物理的に一緒に位置する必要はないが、論理的に結合された場合にモジュールを備え、モジュールのための上記目的を達成する、異なる位置に記憶された異種命令を備えてもよい。
実際に、実行可能コードのモジュールは、単一の命令、又は多くの命令を含んでもよく、いくつかの異なるコードセグメントにわたって、いくつかの異なるプログラムの中で、いくつかのメモリデバイス等を介して分配されてもよい。モジュール又はモジュールの一部をソフトウェアで実装した場合、ソフトウェアの部分は1つ以上のコンピュータ可読の及び/又はコンピュータ実行可能なストレージメディア上に記憶されてもよい。1つ以上のコンピュータ可読のストレージメディアの任意の組み合わせが利用されてもよい。コンピュータ可読のストレージメディアは、例えば、限定されないが、電子的、磁気的、光学的、電磁的、赤外線の、又は半導体の、システム、装置、又はデバイス、又はこれらの適切な任意の組み合わせを含んでもよいが、伝播する信号を含むものではない。この文書の文脈では、コンピュータ可読の及び/又はコンピュータ実行可能なストレージメディアは、命令実行システム、装置、プロセッサ、又はデバイスによって又はそれらと関連して使用されるプログラムを含み得る又は記憶し得る有形及び/又は非一時的な媒体であってもよい。
本開示の態様のための動作を実行するためのコンピュータプログラムコードは、Python、Java、Smalltalk、C++、C#、Objective C等のオブジェクト指向プログラミング言語、「C」プログラミング言語等の従来のプロシジャプログラミング言語、スクリプトプログラミング言語、及び/又は他の同様なプログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書き込まれてもよい。プログラムコードは、1つ以上のユーザのコンピュータ上で及び/又はリモートコンピュータ若しくはサーバ上でデータネットワーク等を介して、部分的又は全体的に実行されてもよい。
構成要素は、本明細書で用いられるとき、有形で、物理的で、非一時的なデバイスを構成する。例えば、構成要素は、カスタムVLSIの回路、ゲートアレイ、若しくは他の集積回路を備えるハードウェア論理回路、論理チップ、トランジスタ、若しくは他のディスクリートデバイス等の市販の半導体の装置、及び/又は他の機械的若しくは電気的なデバイスとして実装されてもよい。構成要素はまた、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、プログラマブルロジックデバイス等の、プログラマブルハードウェアに実装されてもよい。構成要素は、プリント回路基板(PCB)の電気線等を介して1つ以上の他の構成要素と電気的通信を行う、1つ以上のシリコン集積回路デバイス(例えば、チップ、ダイ、ダイプレーン、パッケージ)、又は他のディスクリート電気素子を備えてもよい。本明細書で説明されるモジュールの各々は、ある実施形態では、代替的に、構成要素によって具現化されるか又は構成要素として実装されてもよい。
回路は、本明細書で使用されるとき、電流のための1つ以上の経路を提供する1つ以上の電気的及び/又は電子的構成要素のセットを含む。ある実施形態では、回路は、回路が閉ループであるように、電流のための戻り経路を含んでもよい。しかしながら、別の実施形態では、電流のための戻り経路を含まない構成要素のセットが回路(例えば、開ループ)と称されてもよい。例えば、集積回路が(電流のための戻り経路として)接地に結合されているかどうかにかかわらず、集積回路は回路と称されてもよい。様々な実施形態では、回路は、集積回路の一部、集積回路、集積回路のセット、又は集積回路デバイスを有する若しくは有しない非集積型電気的構成要素及び/若しくは電気的構成要素のセット等を含んでもよい。一実施形態では、回路は、カスタムVLSI回路、ゲートアレイ、論理回路、若しくは他の集積回路、論理チップ、トランジスタ、若しくは他のディスクリートデバイス等の市販の半導体、及び/又は他の機械的若しくは電気的デバイスを含んでもよい。回路はまた、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、プログラマブルロジックデバイス等のプログラマブルハードウェアデバイス内の合成された回路として(例えば、ファームウェア、ネットリスト等として)実装されてもよい。回路は、プリント回路基板(PCB)の電気線等を介して1つ以上の他の構成要素と電気的通信を行う、1つ以上のシリコン集積回路デバイス(例えば、チップ、ダイ、ダイプレーン、パッケージ)、又は他のディスクリート電気素子を備えてもよい。本明細書で説明されるモジュールの各々は、ある実施形態では、回路によって具現化されるか又は回路として実装されてもよい。
本明細書の全体を通して、「一実施形態(one embodiment)」、「一実施形態(an embodiment)」、又はそれに類似した言葉の参照は、本実施形態に関連して記載される特定の特徴、構造、又は特性が、本開示の少なくとも1つの実施形態に含まれることを意味する。よって、本明細書の全体を通して、「一実施形態では(in one embodiment)」、「一実施形態では(in an embodiment)」、及びそれに類似した言葉の語句の表記は、必ずしも全て同一の実施形態を参照するのではなく、特に明示しない限り、「1つ以上ではあるが全てではない実施形態」を意味し得る。「含む(including)」、「備える(comprising)」、「有する(having)」という用語及びそれらの変形は、特に明示しない限り、「〜を含むが、限定されない」ことを意味する。列挙された項目の一覧は、特に明示しない限り、それらの項目のいずれか又は全てを相互に排他する及び/又は相互に含めることを暗に意味するものではない。「a」、「an」、及び「the」はまた、特に明示しない限り、「1つ以上」を表す。
本開示の態様は、本開示の実施形態に従って、方法、装置、システム、及びコンピュータプログラムプロダクトの概略的なフローチャート図及び/又は概略的なブロック図を参照して以下に説明される。概略的なフローチャート図及び/又は概略的なブロック図の各ブロック、並びに、概略的なフローチャート図及び/又は概略的なブロック図におけるブロックの組み合わせは、コンピュータプログラム命令によって実施することができると理解される。これらのコンピュータプログラム命令は、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサに提供されて、プロセッサ又は他のプログラマブルデータ処理装置を介して実行する命令が、概略的なフローチャート図及び/又は概略的なブロック図のブロック(単数又は複数)で指定された機能及び/又は作用を実施するための手段を生成するように、マシンを作成してもよい。
なお、いくつかの代替の実施形態では、ブロック内で示された機能は、図において示された順序とは異なって生じてもよい。例えば、連続して示す2つのブロックが実質的に並行して実行されてもよいし、又はそれらのブロックが、関連する機能に応じて逆の順序で実行される場合があってもよい。他の工程及び方法として、機能、論理、又は効果の点で、示された図の1つ以上のブロック、又はその部分と同等なものを着想してもよい。様々な矢印のタイプ及び線のタイプがフローチャート及び/又はブロック図で用いられ得るが、それらは対応する実施形態の範囲を限定しないものとして理解される。例えば、矢印は、図示された実施形態の列挙された工程間の不特定の継続時間の待ち又は監視期間を示してもよい。
以下の詳細な説明では、その一部をなす添付図面を参照する。前述した概要は、例示的なものにすぎず、いかようにも限定することを意図していない。上述した例示的な態様、実施形態、及び特徴に加えて、更なる態様、実施形態、及び特徴を、図面及び以下の詳細な説明を参照することにより明らかにする。各図における要素の説明は、先の図の要素を参照し得る。同じ番号は、図において同じ要素を参照する場合があり、それは同じ要素の代替実施形態を含む。
図1は、オンダイメモリマイクロコントローラ150のためのシステム100の一実施形態のブロック図である。システム100は、不揮発性及び/又は揮発性メモリデバイス120のメモリメディア122のための1つ以上のマイクロコントローラ150を備える。マイクロコントローラ150は、不揮発性及び/又は揮発性メモリ素子123の一部であってもよく、不揮発性及び/又は揮発性メモリメディアコントローラ126、デバイスドライバ等と通信してもよい。いくつかの実施形態では、マイクロコントローラ150は、コンピューティングデバイス110の不揮発性及び/又は揮発性メモリシステム102上で少なくとも部分的に動作し、かつ/又はこれと通信してもよく、コンピューティングデバイス110は、プロセッサ111、揮発性メモリ112、及び通信インターフェース113を備え得る。プロセッサ111は、1つ以上の中央処理装置、1つ以上の汎用プロセッサ、1つ以上の特定用途向けプロセッサ、1つ以上の仮想プロセッサ(例えば、コンピューティングデバイス110は、ホスト内で動作する仮想マシンであってもよい)、1つ以上のプロセッサコア等を備えてもよい。通信インターフェース113は、コンピューティングデバイス110及び/又はメモリコントローラ126を、例えば、インターネットプロトコル(IP)ネットワーク、ストレージエリアネットワーク(SAN)、無線ネットワーク、有線ネットワーク等の通信ネットワーク115に通信可能に結合するように構成された1つ以上のネットワークインターフェースを備えてもよい。
マイクロコントローラ150は、本明細書で使用されるとき、メモリメディア122のダイ及び/又はチップ123(例えば、メモリ素子123又は他の集積回路デバイス)等の、1つ以上の回路又は他の論理ハードウェアを備える。例えば、一実施形態では、マイクロコントローラ150は、フィールドプログラマブルゲートアレイ(FPGA)等のプログラマブルロジックデバイス上に配置及び/又はルーティングされた合成可能な論理(例えば、Verilog、VHSICハードウェア記述言語(VHDL)等のハードウェア記述言語、ゲートレベルのネットリスト、ソフトコア、及び/又は別の論理設計で定義されたもの)、特定用途向け集積回路(ASIC)デバイスとして製造されたもの、及び/又は別の集積回路デバイス123を備えてもよい。更なる実施形態では、マイクロコントローラ150は、アナログ及び/又は混合信号論理(例えば、トランジスタレイアウトフォーマット、ASIC、ディスクリートロジック部品、ハードコア、及び/又は別の集積回路デバイス123で定義及び/又は設計されたもの)を備えてもよい。
マイクロコントローラ150は、管理機能等の、メモリメディア122のメモリ素子123のための1つ以上のタスクを実行及び/又は制御してもよい。マイクロコントローラ150は、タスク又は動作を実行するためにマイクロコード又は他のコンピュータ実行可能コード(例えば、命令セット)を処理及び/又は実行する、1つ以上の処理ユニット、処理コア等を備えてもよい。このように、新しい集積回路デバイスの製造又はファームウェアのアップグレードの代わりに、又はそれに加えて、マイクロコントローラ150の1つ以上の機能及び/又はタスクは、マイクロコントローラ150のマイクロコード又は他のコンピュータ実行可能コードを変更及び/又は更新することによって更新されてもよい。マイクロコントローラ150は、マイクロコントローラ150が、マイクロコードを記憶する、メモリメディア122のアレイのための、及び/又はそれからのデータを記憶する、設定及び/又は構成パラメータを記憶する等のために使用し得る、揮発性及び/又は不揮発性のメモリ又はストレージを備えてもよい。
ある実施形態では、メモリデバイス120及び/又はメモリ素子123は、様々なアプリケーション及び/又は環境で使用されてもよい。様々な温度及び他の環境条件において適切に機能するために、マイクロコントローラ150及び/又はメモリ素子123のクロックレートは、広範囲の動作条件において安定性、信頼性等を改善するように、人為的に低く設定されてもよい。例えば、様々な実施形態では、マイクロコントローラ150のクロックレートは、約50MHz未満、約40MHz未満、約30MHz未満、約20MHz未満、約15MHz未満、約14MHz、約13.5MHz、約13MHz、約12.5MHz、約12MHz、約12MHz未満等に設定されてもよい。
しかしながら、マイクロコントローラ150のこのような低いクロックレートは、ある実施形態では、マイクロコントローラ150が、単一の処理ユニットを使用して、データ操作の待ち時間を増加させることなく、メモリメディア122に対するデータ操作を実行することができるクロックレートよりも、低く設定されてもよい(例えば、単一の処理ユニット又はコアは、読み出し及び/又は書き込み動作を減速させ、マイクロコントローラ150がボトルネック等になることなく、データを不揮発性メモリメディア123から読み出す及び/又はこれに書き込めるほど、クロックレート又は周波数において十分に高速でなくてもよい)。マイクロコントローラ150は、一実施形態において、(例えば、メモリメディア122のアクセス待ち時間に対する遅いマイクロコントローラクロックレートの影響を低減及び/又は排除する等のために)メモリメディア122のアレイに対して異なるカテゴリのタスク及び/又はタスクの異なる部分を並列に実行する複数の処理ユニット及び/又はコアを含んでもよく、それらに関連付けられてもよく、かつ/又はそれらへのアクセスを有してもよい。
処理ユニットは、本明細書で使用されるとき、1つ以上のマイクロコントローラ150に関連付けられ、かつ1つ以上のコマンド及び/又は命令(例えば、マイクロコード、命令セット等)を実行及び/又は処理することができる、サブブロック及び/又は構成要素を含む。処理ユニットは、マイクロコントローラ150の一部であっても、複数のマイクロコントローラ150等によって共有されてもよい。処理ユニットは、処理コア、ソフトコア、ハードコア、合成可能な論理、アナログ及び/若しくは混合信号論理、実行ユニット、モジュール、サブ構成要素、並びに/又は命令を実行することができるマイクロコントローラ150の他の部分を含み得る。一実施形態では、異なる処理ユニットは、独立してコマンド及び/又は命令を受信するために、別個の論理及び/又は物理インターフェース(例えば、バス、制御線、アドレス、及び/又はアドレス空間等)を有してもよい。他の実施形態では、異なる処理ユニットは、論理及び/又は物理インターフェースを共有してもよく、受信したコマンド及び/又は命令をカテゴリ、コマンドタイプ、命令セット、フラグ、識別子等によって動的に区別してもよい。
マイクロコントローラ150の異なる処理ユニット及び/又はコアは、異なる処理ユニット及び/又はコアに割り当てられたタスクのカテゴリ及び/又は種類に基づいて、異なる命令セット(例えば、異なるマイクロコードコマンド及び/又は命令)をサポートしてもよい。処理ユニットのための命令セットは、本明細書で使用されるとき、処理ユニットによってサポートされる及び/又は処理ユニットと互換性がある1つ以上のコマンド及び/又は命令を含んでもよい。様々な実施形態では、命令セットは、1つ以上のマイクロコード命令、アセンブリコード命令、機械命令、メモリ命令、デバイス命令、制御及び/又は管理命令等を含んでもよく、かつ/又はそれらをサポートしてもよい。
一実施形態では、1つ以上の処理ユニットは、フロー制御カテゴリのタスク(例えば、フロー制御命令セット)を実行してもよい。1つ以上の処理ユニットは、ある実施形態において、タイミング制御カテゴリのタスク(例えば、タイミング制御命令セット)を実行してもよい。1つ以上の処理ユニットは、更なる実施形態において、データラッチ制御カテゴリのタスク(例えば、データラッチ制御命令セット)を実行してもよい。一実施形態では、1つ以上の処理ユニットは、電圧制御カテゴリのタスク(例えば、電圧制御命令セット)を実行してもよい。1つ以上の処理ユニットは、ある実施形態において、組み込み自己テスト(BIST)カテゴリのタスク(例えば、自己テスト命令セット)を実行してもよい。一実施形態では、1つ以上の処理ユニットは、1つ以上の他の種類及び/又はカテゴリのタスク、命令セット等を実行してもよい。2つの命令セットは、ある実施形態において、1つの命令セットに含まれ、別の命令セットに含まれない、少なくとも1つの命令及び/又はコマンドに応じて、異なるものであってもよい。マイクロコントローラ150は、一実施形態において、マイクロコントローラ150に関連付けられた及び/又はそれに利用可能である処理ユニットによってサポートされている異なる命令セットの結合された和及び/又は全体を含んでいる命令セットを含み、かつ/又はこれをサポートする。
一実施形態では、マイクロコントローラ150は、メモリ素子123の縁部及び/若しくは周辺部に、又はそこに向かって、メモリメディア122のアレイに隣接して、及び/又はその隣に(例えば、図2に示されるように)配設されてもよい。更なる実施形態では、マイクロコントローラ150は、メモリメディア122のアレイとは異なる集積回路デバイス123のレベル、層、及び/又はプレーン上に(例えば、アレイと平行であり、かつアレイからオフセットされた、アレイの下のCMOS又は他の回路等として)配設されてもよい。メモリメディア122のアレイとは異なる集積回路デバイス123のレベル上にマイクロコントローラ150を形成及び/又は配置することは、ある実施形態において、集積回路デバイス123の空間を節約し、より多くの回路(例えば、より多く又はより大きいマイクロコントローラ150及び/又はマイクロコントローラコア150、処理ユニット、より大きいメモリメディア122のアレイ等)、より小さい集積回路デバイス123等を可能にしてもよい。ある実施形態では、集積回路デバイス123の異なるレベル間のシリコン貫通ビア(例えば、TSV)は、1つ以上のマイクロコントローラ150とメモリメディア122のアレイとの間に電気接続を提供してもよい。
ある実施形態では、集積回路デバイス123は、1つ以上の追加のマイクロコントローラ150、マイクロコントローラコア150等を含んでもよい。異なるマイクロコントローラ150及び/又はマイクロコントローラコア150は、互いに同じレベル及び/又は層(例えば、メモリアレイのレベルと平行であり、かつメモリアレイのレベルからオフセットされた、メモリアレイとは異なるレベル及び/又は層等)上にあってもよく、複数の異なるレベル及び/又は層(例えば、メモリアレイのレベルと平行であり、かつメモリアレイのレベルからオフセットされ、かつ互いにオフセットされている、メモリアレイとは異なる複数のレベル及び/又は層等)上にあってもよく、メモリアレイと同じ1つ以上のレベル及び/又は層等の上にあってもよい。
一実施形態では、集積回路デバイス123の空間を節約するために、1つ以上の追加のマイクロコントローラ150及び/又はマイクロコントローラコア150は、第1のマイクロコントローラ150及び/又はマイクロコントローラコア150と比べて、より少ない処理ユニットを含んでもよく、より少ない種類及び/又はカテゴリのタスクを実行するように構成された処理ユニット等を含んでもよい(例えば、より少ない処理ユニットを含むニ次の、部分的な、より小さい、及び/又は縮小された1つ以上のマイクロコントローラコア150を有する一次の、メインの、制御用の、フルの、及び/又は完全なマイクロコントローラコア150等)。
例えば、第1のマイクロコントローラ150及び/又はマイクロコントローラコア150は、メモリメディア122のアレイ上で自己テスト動作を実行するように構成された組み込み自己テスト処理ユニットを含んでもよく、かつ/又はそれと通信してもよいが、1つ以上の追加のマイクロコントローラ150及び/又はマイクロコントローラコア150は、組み込み自己テスト処理ユニットを有しなくてもよい。更なる実施形態では、第1のマイクロコントローラ150及び/又はマイクロコントローラコア150は、メモリアレイ上でプログラム/書き込み動作及び読み出し動作の両方を実行するように構成されているが、1つ以上の追加のマイクロコントローラ150及び/又はマイクロコントローラコア150は、メモリアレイ上で読み出し動作を実行するが、プログラム/書き込み動作は実行しないように構成されてもよい(例えば、第1のマイクロコントローラ150よりも小さいフットプリント及び/又はサイズを有してもよい)。
ある実施形態では、1つ以上のマイクロコントローラ150の第1のセット(例えば、一次の、メインの、制御用の、フルの、及び/又は完全なマイクロコントローラコア150等)は、メモリメディア122のアレイ全体(例えば、集積回路デバイス123のメモリセルの各チャネル、サブセット、及び/又は領域)に対してプログラム/書き込み動作を実行してもよいが、1つ以上のマイクロコントローラ150の第1のセット及び1つ以上のマイクロコントローラ150の第2のセット(例えば、より少ない処理ユニットを含むニ次の、部分的な、より小さい、及び/又は縮小された1つ以上のマイクロコントローラコア150等)の両方は、メモリメディア122のアレイの異なる部分(例えば、集積回路デバイス123のメモリセルの異なるチャネル、サブセット、及び/又は領域に割り当てられている)に対して読み出し動作を実行してもよい。
メモリデバイス120は、様々な実施形態において、コンピューティングデバイス110に対して1つ以上の異なる位置に配設されてもよい。一実施形態では、メモリデバイス120は、1つ以上のプリント回路基板、ストレージ筐体、並びに/又は他の機械的及び/若しくは電気的支持構造体の上に配設された半導体チップ若しくはパッケージ又は他の集積回路デバイス等の、1つ以上の不揮発性及び/又は揮発性メモリ素子123を備える。例えば、メモリデバイス120は、1つ以上のダイレクトインラインメモリモジュール(DIMM)カード、1つ以上の拡張カード及び/若しくはドータカード、メモリカード、ユニバーサルシリアルバス(USB)ドライブ、ソリッドステートドライブ(SSD)若しくは他のハードドライブデバイスを備えてもよく、かつ/又は別のメモリ及び/若しくはストレージフォームファクタを有してもよい。メモリデバイス120は、コンピューティングデバイス110のマザーボードと一体化され、かつ/又はマザーボード上に実装されてもよいし、コンピューティングデバイス110のポート及び/又はスロットに搭載されてもよいし、異なるコンピューティングデバイス110上に及び/又は外部バスを介してコンピューティングデバイス110と通信しているネットワーク115上の専用のストレージ機器(例えば、外部ハードドライブ)上に実装される等してもよい。
メモリデバイス120は、一実施形態において、プロセッサ111のメモリバス上に(例えば、揮発性メモリ112と同じメモリバス上に、揮発性メモリ112とは異なるメモリバス上に、又は揮発性メモリ112と置き換えて等で)配設されてもよい。更なる実施形態では、メモリデバイス120は、ペリフェラルコンポーネントインターコネクトエクスプレス(PCI Express又はPCIe)バス、シリアルアドバンスドテクノロジーアタッチメント(SATA)バス、パラレルアドバンスドテクノロジーアタッチメント(PATA)バス、スモールコンピュータシステムインターフェース(SCSI)バス、ファイヤワイヤバス、ファイバチャネル接続、ユニバーサルシリアルバス(USB)、PCIeアドバンスドスイッチング(PCIe−AS)バス等の、コンピューティングデバイス110の周辺バス上に配設されてもよい。別の実施形態では、メモリデバイス120は、イーサネットネットワーク、インフィニバンドネットワーク、ネットワーク115上のSCSI RDMA、ストレージエリアネットワーク(SAN)、ローカルエリアネットワーク(LAN)、インターネット等のワイドエリアネットワーク(WAN)、別の有線及び/又は無線ネットワーク115等の、データネットワーク115上に配設されてもよい。
コンピューティングデバイス110は、非一時的なコンピュータ可読のストレージメディア114を更に備えてもよい。コンピュータ可読のストレージメディア114は、コンピューティングデバイス110(例えば、プロセッサ111)に、本明細書に開示される方法のうちの1つ以上のステップを実行させるように構成された実行可能命令を備えてもよい。代替的に、又は追加して、マイクロコントローラ150は、非一時的ストレージメディア114に記憶された1つ以上のコンピュータ可読命令を含んでもよい。
一実施形態では、マイクロコントローラ150は、不揮発性及び/又は揮発性メモリ素子123の論理ハードウェア、他のプログラマブルロジック、不揮発性及び/又は揮発性メモリ素子123のためのファームウェア、不揮発性及び/又は揮発性メモリ素子123による実行のためのマイクロコード等を備えてもよい。別の実施形態では、マイクロコントローラ150は、不揮発性及び/又は揮発性メモリ素子123の論理ハードウェアによる実行のための(例えば、マイクロコントローラ150自体、プロセッサ111等による実行のための)コンピュータ可読のストレージメディア上に記憶された、実行可能なソフトウェアコード(例えば、マイクロコード)を少なくとも部分的に備えてもよい。更なる実施形態では、マイクロコントローラ150は、実行可能なソフトウェアコード及び論理ハードウェアの両方の組み合わせを含んでもよい。
一実施形態では、マイクロコントローラ150は、バス125、127、メモリメディアコントローラ126等を介して、デバイスドライバ又は他の実行可能なアプリケーションからの要求及び/又はコマンドを受信するように構成されている。マイクロコントローラ150は、バス125を介してデバイスドライバ及び/又はストレージクライアント116に/からデータを伝送するように更に構成されてもよい。したがって、いくつかの実施形態において、マイクロコントローラ150は、記憶要求及び関連データの伝送を容易にするために、1つ以上のダイレクトメモリアクセス(DMA)モジュール、リモートDMAモジュール、バスコントローラ、ブリッジ、バッファ等を含んでもよく、かつ/又はそれらと通信してもよい。別の実施形態では、マイクロコントローラ150は、ストレージクライアント116からのAPIコールとして、又はIO−CTLコマンド等として、記憶要求及び/又はリフレッシュコマンドを受信してもよい。
一実施形態では、マイクロコントローラ150は、メモリ素子123上に一体化され(例えば、オンダイコントローラ及び/又は他の論理ハードウェア若しくは実行可能コード)、デバイスコントローラ126、ホストデバイス110、及び/又はプロセッサ111からコマンドを受信する。他の実施形態では、マイクロコントローラ150の一部は、デバイスコントローラ126又は他のインターポーザ上に配設されてもよく、マイクロコントローラ150の一部は、メモリ素子123等の上に配設されてもよい。
様々な実施形態によれば、メモリコントローラ126及び/又はマイクロコントローラ150は、1つ以上のメモリデバイス120及び/又はメモリ素子123を管理してもよい。メモリデバイス120は、アドレス指定可能な複数のメディア記憶位置に配置及び/又は区画化されているソリッドステートストレージデバイス及び/又は半導体ストレージデバイス等の、記録デバイス、メモリデバイス、及び/又はストレージデバイスを備えてもよい。本明細書で使用されるとき、メディア記憶位置は、メモリの任意の物理的単位(例えば、メモリデバイス120上の任意の量の物理的ストレージメディア)を参照する。メモリ単位及び/又は領域は、限定されないが、ページ、メモリ区画、ブロック、セクタ、物理的記憶位置のコレクション又はセット(例えば、論理ページ、論理ブロック)等を含んでもよい。
デバイスドライバ、メモリメディアコントローラ126、及び/又はマイクロコントローラ150は、ある実施形態では、論理アドレス空間134をストレージクライアント116に提示してもよい。本明細書で使用されるとき、論理アドレス空間134は、メモリ資源の論理的表現を参照する。論理アドレス空間134は、複数の論理アドレス(例えば、範囲)を備えてもよい。本明細書で使用されるとき、論理アドレスは、メモリ資源(例えば、データ)を参照するための任意の識別子を参照し、その識別子は、限定されないが、論理ブロックアドレス(logical block address、LBA)、シリンダ/ヘッド/セクタ(cylinder/head/sector、CHS)、ファイル名、オブジェクト識別子、汎用一意識別子(Universally Unique Identifier、UUID)、グローバル一意識別子(Globally Unique Identifier、GUID)、ハッシュコード、署名、インデックスエントリ、範囲、エクステント等を含む。
メモリデバイス120のためのデバイスドライバは、論理アドレス空間134の論理アドレスをメモリデバイス120上のメディア記憶位置にマップするために、論理−物理アドレスマッピング構造等の、メタデータ135を保持してもよい。デバイスドライバは、1つ以上のストレージクライアント116にストレージサービスを提供するように構成されてもよい。ストレージクライアント116は、コンピューティングデバイス110上で動作するローカルストレージクライアント116、及び/又はネットワーク115及び/又はネットワークインターフェース113を介してアクセス可能な遠隔のストレージクライアント116を含んでもよい。ストレージクライアント116は、限定されないが、オペレーティングシステム、ファイルシステム、データベースアプリケーション、サーバアプリケーション、カーネルレベルプロセス、ユーザレベルプロセス、アプリケーション等を含んでもよい。
デバイスドライバは、1つ以上のメモリデバイス120に通信可能に結合されてもよい。1つ以上のメモリデバイス120は、ソリッドステートストレージデバイス、半導体ストレージデバイス、SANストレージリソース、揮発性メモリデバイス、不揮発性メモリデバイス等を含むがこれらに限定されない、異なるタイプのメモリデバイスを含んでもよい。1つ以上のメモリデバイス120は、1つ以上の対応のメモリメディアコントローラ126及びメモリメディア122を備えてもよい。デバイスドライバは、伝統的なブロックI/Oインターフェース131を介して、1つ以上のメモリデバイス120へのアクセスを提供してもよい。更に、デバイスドライバは、SCMインターフェース132を介して拡張された機能へのアクセスを提供してもよい。メタデータ135は、ブロックI/Oインターフェース131、SCMインターフェース132、キャッシュインターフェース133、又はその他の関連インターフェースのいずれかを介して行われるデータ操作を管理及び/又は追跡するために使用されてもよい。
キャッシュインターフェース133は、メモリデバイス120のためのデバイスドライバを介してアクセス可能なキャッシュ固有の機能を公開してもよい。また、いくつかの実施形態では、ストレージクライアント116に提示されるSCMインターフェース132は、1つ以上のメモリデバイス120及び/又は1つ以上のメモリメディアコントローラ126によって実施されるデータ変換へのアクセスを提供する。
デバイスドライバは、論理アドレス空間134を1つ以上のインターフェースを介してクライアント116に提示してもよい。上述のように、論理アドレス空間134は、それぞれが1つ以上のメモリデバイス120上の各々のメディア位置に対応する、複数の論理アドレスを備えてもよい。デバイスドライバは、論理アドレスとメディア位置との間等の任意対任意マッピングを備えるメタデータ135を保持してもよい。
デバイスドライバは更に、バス125を介して1つ以上のメモリデバイス120にデータ、コマンド、及び/又はクエリを伝送するように構成されたメモリデバイスインターフェース139を備えてもよく、かつ/又はその不揮発性メモリデバイスインターフェース139と通信してもよく、バス125は、限定されないが、プロセッサ111のメモリバス、ペリフェラルコンポーネントインターコネクトエクスプレス(PCI Express又はPCIe)バス、シリアルアドバンスドテクノロジーアタッチメント(ATA)バス、パラレルATAバス、スモールコンピュータシステムインターフェース(SCSI)、ファイヤワイヤ、ファイバチャネル、ユニバーサルシリアルバス(USB)、PCIeアドバンスドスイッチング(PCIe−AS)バス、ネットワーク115、インフィニバンド、SCSI RDMA等を含み得る。メモリデバイスインターフェース139は、入出力制御(IO−CTL)コマンド、IO−CTLコマンド拡張、リモートダイレクトメモリアクセス等を使用して、1つ以上のメモリデバイス120と通信してもよい。
通信インターフェース113は、コンピューティングデバイス110及び/又はメモリコントローラ126をネットワーク115及び/又は1つ以上の遠隔のネットワークアクセス可能なストレージクライアント116に通信可能に結合するように構成された1つ以上のネットワークインターフェースを備えてもよい。ストレージクライアント116は、コンピューティングデバイス110上で動作するローカルストレージクライアント116、並びに/又はネットワーク115及び/若しくはネットワークインターフェース113を介してアクセス可能な遠隔のストレージクライアント116を含んでもよい。メモリコントローラ126は、1つ以上のメモリデバイス120の一部であり、かつ/又はそれらと通信する。図1は単一のメモリデバイス120を示しているが、本開示はこの点に関して限定されず、任意の数のメモリデバイス120、1つ以上の揮発性メモリデバイス120と1つ以上の不揮発性メモリデバイス120との組み合わせ等を組み込むように適合され得る。
メモリデバイス120は、メモリメディア122の1つ以上の素子123を備えてもよい。一実施形態では、メモリメディア122の素子123は、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレート(DDR)SDRAM、スタティックRAM(SRAM)、サイリスタRAM(T−RAM)、ゼロキャパシタRAM(Z−RAM)等の、揮発性メモリメディア122を備える。ある実施形態では、メモリメディア122の素子123は、ReRAM、メモリスタメモリ、プログラマブルメタライゼーションセルメモリ、相変化メモリ(PCM、PCME、PRAM、PCRAM、Ovonic Unified Memory、Chalcogenide RAM、又はC−RAM)、NANDフラッシュメモリ(例えば、2D NANDフラッシュメモリ、3D NANDフラッシュメモリ)、NORフラッシュメモリ、ナノランダムアクセスメモリ(ナノRAM又はNRAM)、ナノクリスタルワイヤベースメモリ、シリコン酸化物系のサブ−10ナノメートルプロセスメモリ、グラフェンメモリ、シリコン酸化物窒化物酸化物シリコン(SONOS)メモリ、プログラマブルメタライゼーションセル(PMC)メモリ、導電性ブリッジングRAM(CBRAM)、磁気抵抗RAM(MRAM)、磁気ストレージメディア(例えば、ハードディスク、テープ)、光ストレージメディア等の、不揮発性メモリメディア122を備える。メモリメディア122の1つ以上の素子123は、ある実施形態では、ストレージクラスメモリ(SCM)を備える。
NANDフラッシュ等のレガシー技術がブロック及び/又はページアドレス指定可能である一方、ストレージクラスメモリは、一実施形態では、バイトアドレス指定可能である。更なる実施形態では、ストレージクラスメモリは、NANDフラッシュよりも速くかつ/又はより長い寿命(例えば、耐久)を有してもよく、DRAMよりも、低コストであり、使用電力が少なく、かつ/又は高い記憶密度を有してもよく、あるいは他の技術と比較して、1つ以上の他の利点又は改善を提供してもよい。例えば、ストレージクラスメモリは、ReRAM、メモリスタメモリ、プログラマブルメタライゼーションセルメモリ、相変化メモリ、ナノRAM、ナノクリスタルワイヤベースメモリ、シリコン酸化物系のサブ−10ナノメートルプロセスメモリ、グラフェンメモリ、SONOSメモリ、PMCメモリ、CBRAM、MRAM、及び/又はそれらの変形、といった1つ以上の不揮発性メモリ素子123を備えてもよい。
不揮発性メモリメディア122は、本明細書において「メモリメディア」として参照されるが、様々な実施形態では、不揮発性メモリメディア122は、不揮発性メモリメディア、不揮発性ストレージメディア等として参照され得る、データを記録可能な1つ以上の不揮発性記録メディアをより一般的に備えてもよい。また、不揮発性メモリデバイス120は、様々な実施形態では、不揮発性記録デバイス、不揮発性メモリデバイス、不揮発性ストレージデバイス等を備えてもよい。同様に、不揮発性メモリ素子123は、様々な実施形態では、不揮発性記録素子、不揮発性メモリ素子、不揮発性ストレージ素子等を備えてもよい。
不揮発性メモリメディア122は、チップ、パッケージ、プレーン、ダイ等を含み得るが、これらに限定されない、1つ以上の不揮発性メモリ素子123を備えてもよい。不揮発性メモリメディアコントローラ126は、不揮発性メモリメディア122に対するデータ操作を管理するように構成されてもよく、1つ以上の、プロセッサ、プログラマブルプロセッサ(例えば、FPGA)、ASIC、マイクロコントローラ等を備えてもよい。いくつかの実施形態では、不揮発性メモリメディアコントローラ126は、不揮発性メモリメディア122にデータを記憶しかつ/又はデータを読み出し、不揮発性メモリデバイス120等に/からデータを伝送するように構成される。
不揮発性メモリメディアコントローラ126は、バス127を介して不揮発性メモリメディア122(例えば、マイクロコントローラ150)に通信可能に結合されてもよい。バス127は、不揮発性メモリ素子123及び/又は関連するマイクロコントローラ150に/からデータを通信するためのI/Oバスを備えてもよい。バス127は、アドレス並びに他のコマンド及び制御情報を不揮発性メモリ素子123及び/又はマイクロコントローラ150に通信するための制御バスを更に備えてもよい。いくつかの実施形態では、バス127は、不揮発性メモリ素子123(例えば、マイクロコントローラ150)を不揮発性メモリメディアコントローラ126に並列に通信可能に結合してもよい。この並列アクセスは不揮発性メモリ素子123をグループとして管理できるようにして、論理メモリ素子129を形成してもよい。論理メモリ素子は、それぞれの論理メモリ単位(例えば、論理ページ)及び/又は論理メモリ分割(例えば、論理ブロック)に区画化されてもよい。論理メモリ単位は、各不揮発性メモリ素子の物理的メモリ単位を論理的に組み合わせることによって形成されてもよい。
不揮発性メモリコントローラ126及び/又はマイクロコントローラ150は、コンピューティングデバイス110上で実行されるデバイスドライバを備えてもよく、かつ/又はそのデバイスドライバと通信してもよい。デバイスドライバは、1つ以上のインターフェース131、132、及び/又は133を介してストレージクライアントにストレージ116にサービスを提供してもよい。いくつかの実施形態では、デバイスドライバは、ストレージクライアント116によるブロックレベルのI/O動作が実行される際に介されるブロックデバイスI/Oインターフェース131を提供する。代替的に、又は追加して、デバイスドライバは、他のストレージサービスをストレージクライアント116に提供し得るストレージクラスメモリ(storage class memory、SCM)インターフェース132を提供してもよい。いくつかの実施形態では、SCMインターフェース132は、ブロックデバイスインターフェース131への拡張を備えてもよい(例えば、ストレージクライアント116が、ブロックデバイスインターフェース131への拡張又は追加を介してSCMインターフェース132にアクセスし得る)。代替的に、又は追加して、SCMインターフェース132は、別のAPI、サービス、及び/又はライブラリとして提供されてもよい。デバイスドライバは、不揮発性メモリシステム102を使用してデータをキャッシュするキャッシュインターフェース133を提供するように更に構成されてもよい。デバイスドライバは、上述のように、バス125を介して不揮発性メモリメディアコントローラ126及び/又はマイクロコントローラ150にデータ、コマンド、及び/又はクエリを伝送するように構成された不揮発性メモリデバイスインターフェース139を更に備えてもよい。
図2は、1つ以上のマイクロコントローラ150を有する、1つ以上のメモリダイ又はチップ212を含み得る不揮発性ストレージデバイス210の実施形態を示す。不揮発性ストレージデバイス210は、図1を参照して説明された不揮発性メモリデバイス120と実質的に同様であってもよい。図2の1つ以上のマイクロコントローラ150は、メモリダイ及び/又はチップ212の周辺部に向かって(例えば、集積回路デバイス123内のメモリアレイ200と同じ物理レベル上に)示されているが、他の実施形態では、1つ以上のマイクロコントローラ150は、図7に示されるように、メモリダイ及び/又はチップ212の、メモリアレイ200とは異なる物理レベル上に(例えば、集積回路デバイス123内のメモリアレイ200のレベルと平行で、かつそこからオフセットされて)配設されてもよい。
メモリダイ212は、いくつかの実施形態において、メモリセル、オンダイコントローラ220、及び読み出し/書き込み回路230A/230Bのアレイ200(例えば、2次元又は3次元)を含む。一実施形態では、様々な周辺回路によるメモリアレイ200へのアクセスは、アレイの反対側で対称的に実装され、これによりそれぞれの側のアクセスライン及び回路の密度が半分に低減する。読み出し/書き込み回路230A/230Bは、更なる実施形態では、メモリセルのページを読み出すことができる又は並列にプログラムすることが可能な複数のセンスブロック250を含む。ある実施形態では、センスブロック250は、1つ以上のマイクロコントローラ150と通信している。
メモリアレイ200は、様々な実施形態では、行デコーダ240A/240Bを介してワード線によって及び列デコーダ242A/242Bを介してビット線によってアドレス指定可能である。いくつかの実施形態では、コントローラ244は、1つ以上のメモリダイ212と同じメモリデバイス210(例えば、リムーバブルストレージカード又はパッケージ)に含まれる。コマンド及びデータは、線232を介してホストとコントローラ244との間で、及び線234を介してコントローラと1つ以上のメモリダイ212との間で伝送される。ある実施態様は、複数のチップ212を含むことができる。
オンダイコントローラ220は、一実施形態において、読み出し/書き込み回路230A/230Bと協働してメモリアレイ200上でメモリ動作を行う。オンダイコントローラ220は、ある実施形態では、マイクロコントローラ150と、オンチップアドレスデコーダ224と、電力制御回路226と、を含む。一実施形態では、オンチップアドレスデコーダ224及び/又は電力制御回路226は、マイクロコントローラ150の一部であってもよく、かつ/又はマイクロコントローラ150によって制御されてもよい。
マイクロコントローラ150は、一実施形態において、メモリ動作のチップレベル制御を提供する。オンチップアドレスデコーダ224は、ホスト又はメモリコントローラによって使用されるアドレスの間を、デコーダ240A、240B、242A、242Bによって使用されるハードウェアアドレスに変換するためにアドレスインターフェースを提供する。電力制御回路226は、メモリ動作中にワード線及びビット線に供給される電力及び電圧を制御する。一実施形態では、電力制御回路226は、電源電圧より大きな電圧を生成することができる1つ以上のチャージポンプを含む。
一実施形態では、オンダイコントローラ220、マイクロコントローラ150、電力制御回路226、デコーダ回路224、デコーダ回路242A、デコーダ回路242B、デコーダ回路240A、デコーダ回路240B、読み出し/書き込み回路230A、読み出し/書き込み回路230B、及び/若しくはコントローラ244のうちの1つ又はこれらの任意の組み合わせは、1つ以上の管理回路として参照され得る。
図3は、オンダイメモリマイクロコントローラユニット150を有するシステム300の一実施形態を示す。図3のマイクロコントローラ150は、ある実施形態では、図1のマイクロコントローラ150及び/又は図2のマイクロコントローラ150と実質的に同様であってもよい。
図示の実施形態では、マイクロコントローラ150は、複数の処理ユニット302a〜nを備えており、かつ/又はそれらと通信している。いくつかの処理ユニット302a、302b、302nは、マイクロコントローラ150の内部にあり、かつ/又はその一部であるが、他の処理ユニット302c、302dは、マイクロコントローラ150の外部にあり(例えば、外部処理ユニット、機能ユニット等)、かつマイクロコントローラ150と通信している(例えば、1つ以上の追加のマイクロコントローラ150及び/又はマイクロコントローラコア150と通信してもよい)。ある実施形態では、マイクロコントローラ150の外部にある処理ユニット302c、302dは、集積回路デバイス123の内部に(例えば、メモリアレイ200等の下で)マイクロコントローラ150と同じレベル(例えば、1つ以上の層、プレーン等)に配設されてもよい。
処理ユニット302a〜nは、様々な実施形態において、読み出し処理ユニット302、プログラム/書き込み処理ユニット302、組み込み自己テスト処理ユニット302、フロー制御処理ユニット302、タイミング制御処理ユニット302、電圧制御処理ユニット302、及び/又はデータラッチ制御処理ユニット302等のうちの1つ以上を含んでもよい。処理ユニット302a〜nは、フロー制御タスク、タイミング制御タスク、データラッチ制御タスク、電圧制御タスク、及び/又は組み込み自己テストタスク等の、異なるカテゴリのタスクを実行してもよい。
ある実施形態では、マイクロコントローラ150を使用することは(例えば、有限状態マシン等の代わりに及び/又はそれに加えて)、マイクロコントローラ150及び/又は関連する集積回路デバイス123のハードウェアが、完成及び/又は製造された後であっても、現場等において、ハードウェアを変更することなく、マイクロコントローラ150のためのタイミング、電圧、論理動作、命令、コマンド、マイクロコード等に対する動的な更新及び/又は変更を可能にしてもよい。複数の処理ユニット302a〜nは、一実施形態において、並列(例えば、マルチスレッド)で動作して、メモリアレイ200上でのメモリ動作(例えば、読み出し、プログラム/書き込み、消去)の待ち時間をやはり増大させることなく、マイクロコントローラ150が他方法で可能であるよりも低いクロック速度で動作することを可能にしてもよい。
各処理ユニット302は、ある実施形態では、処理ユニット302が、揮発性メモリモジュール(例えば、図4に関して以下に説明する揮発性メモリモジュール406等)からの命令/コマンド及び/又はデータにアクセスするために使用し得る読み出しポートを備える。処理ユニット3021〜n間の通信は、コマンド及びデータの両方を伝送する標準インターフェース(例えば、異なるタイプの処理ユニット302a〜nに対して同じプロトコル)を介して行われてもよい。一実施形態では、マイクロコントローラ150の内部にある処理ユニット302a、302b、302nのために、及びマイクロコントローラ150の外側にある処理ユニット302c、302dのために、同じインターフェースが使用されてもよい。
図4は、オンダイメモリマイクロコントローラ150を有するシステム400の一実施形態を示す。マイクロコントローラ150は、ある実施形態では、上述の、図1のマイクロコントローラ150、図2のマイクロコントローラ150、及び/又は図3のマイクロコントローラ150のうちの1つ以上と実質的に同様であってもよい。図示の実施形態では、マイクロコントローラ150は、フロー制御処理ユニット402a、タイミング制御処理ユニット402b、データラッチ制御処理ユニット402c、電圧制御処理ユニット402dを備えており、それぞれは、揮発性メモリ406と、及びマイクロコントローラ150の外部にある1つ以上の外部処理ユニット404a〜nと通信している。
フロー制御処理ユニット402aは、ある実施形態では、メモリアレイ200に対する1つ以上のメモリ動作(例えば、読み出し動作、書き込み/プログラム動作、消去動作、ガベージコレクション動作等の管理動作、等)の実行を制御及び/又は追跡してもよい。例えば、フロー制御処理ユニット402aは、異なるメモリ動作を実行するように1つ以上の他の処理ユニット402(例えば、タイミング制御ユニット402b、データラッチ制御ユニット402c、電圧制御ユニット402d、1つ以上の外部処理ユニット404a〜n等)を管理すること、それらにコマンド/命令を送信すること、異なるメモリ動作中の他の処理ユニット402、404の状態を判定すること等を行って、異なるメモリ動作のための一連の状態を指示してもよい。フロー制御処理ユニット402aは、一実施形態において、メモリ動作のためのデータパス(例えば、デバイスコントローラ126とメモリアレイ200との間、マイクロコントローラ150とメモリアレイ200との間、等)のデータパスを管理してもよい。フロー制御処理ユニット402aは、いくつかの実施形態において、マイクロコントローラ150等を備える集積回路デバイス123の、マイクロコントローラ150の1つ以上の内部データバスを管理してもよい。
フロー制御処理ユニット402aは、一実施形態において、メモリアレイ200からデータを読み出し、読み出したデータを(例えば、デバイスコントローラ126、ホストデバイス110、ストレージクライアント116等からの読み出し要求に応じて)デバイスコントローラ126、ホストデバイス110、ストレージクライアント116等に提供するためのマイクロコード、アセンブリコード、及び/又は他のコンピュータ実行可能コードのサブルーチンを(例えば、1つ以上の他の処理ユニット402a〜n、404a〜nと並列に)実行及び/又は管理するように構成された読み出し処理ユニットを備えてもよく、又は別の方法で含んでもよい。
フロー制御処理ユニット402aは、一実施形態において、デバイスコントローラ126、ホストデバイス110、ストレージクライアント116等からの書き込み要求に応じて、メモリアレイ200にデータを書き込み/プログラムするためのマイクロコード、アセンブリコード、及び/又は他のコンピュータ実行可能コードのサブルーチンを(例えば、1つ以上の他の処理ユニット402a〜n、404a〜nと並列に)実行及び/又は管理するように構成された書き込み/プログラム処理ユニットを備えてもよく、又は別の方法で含んでもよい。図6に関して以下に説明するように、ある実施形態では、第1のマイクロコントローラ150aは、書き込み/プログラム処理ユニット及び読み出し処理ユニットと共にフロー制御処理ユニット402aを備えてもよいが、1つ以上の他のマイクロコントローラ150b〜nは、(例えば、電力、回路サイズ/空間等を節約するために)書き込み/プログラム処理ユニットなしで読み出し処理ユニットを備える。
一実施形態では、フロー制御処理ユニット402aは、組み込み自己テスト処理ユニットを備える。図6に関して以下に説明するように、ある実施形態では、第1の1つ以上のマイクロコントローラ150aは、集積回路デバイス123及び/又はメモリアレイ200のための組み込み自己テスト処理ユニットを備えているが、1つ以上の他のマイクロコントローラ150b〜nは、(例えば、電力、回路サイズ/空間等を節約するために)組み込み自己テスト処理ユニットを備えていない。
一実施形態では、複数のマイクロコントローラ150システムにおいて、組み込み自己テスト処理ユニットなしの、1つ以上の縮小サイズのマイクロコントローラ150は、同じ集積回路デバイス123の一次又はフルサイズのマイクロコントローラ150の組み込み自己テスト処理ユニットによって実行されるダイソート又は他のテスト、妥当性確認、及び/若しくは適合確認プロセス中にアイドルであってもよい。1つ以上の縮小サイズのマイクロコントローラ150が使用されていない状態では、アイドルのマイクロコントローラ150に関連する揮発性メモリ406の少なくとも一部もまた使用されていなくてもよく、利用可能であってもよい。ある実施形態では、フロー制御処理ユニット402aは、フロー制御処理ユニット402aの組み込み自己テスト処理ユニットによって実行されたテストの間、テスト用にメモリアレイ200から読み出されたデータを記憶及び処理するために、1つ以上のアイドルのマイクロコントローラ150の揮発性メモリ406の利用可能な余剰容量を活用してもよい。
フロー制御処理ユニット402aは、メモリアレイ200から揮発性メモリ406にテストデータをストリームしてもよく、組み込み自己テストユニットは、エラー等に対してデータを処理してもよい。フロー制御処理ユニット402aの組み込み自己テスト処理ユニットは、集積回路デバイス123及び/又はメモリアレイ120の1つ以上の機能をテストするために(例えば、1つ以上の不良ビット線、不良ワード線、不良消去ブロックを識別し、印を付けるために、テスター、ホストデバイス110、ストレージクライアント116に1つ以上のテスト及び/又はエラーレポートを生成するために等)、1つ以上のデータ伝送、データ処理、タイマー機能等を実行してもよい。
一実施形態では、フロー制御処理ユニット402aは、1つ以上の割り込みポート(例えば、ソフト又は論理割り込みポート、ハード物理又は電気割り込みポート等)を備えてもよく、これを介して、フロー制御処理ユニット402aは、1つ以上の信号(例えば、動作モード選択信号、フィードバック信号、プログラム及び/若しくは消去パルスカウント、プログラム及び/若しくは消去検証合格若しくは失敗信号、並びに/又は、フロー制御処理ユニット402aがマイクロコントローラ150の1つ以上のメモリ動作を管理することを可能にする他の割り込み若しくは他の信号)を受信してもよい。
ある実施形態では、フロー制御処理ユニット402aは、マイクロコントローラ150のステータス(例えば、レディー、ビジー等)をデバイスコントローラ126、ホストデバイス110、ストレージクライアント116等に提供してもよく、マイクロコントローラ150及び/又はメモリアレイ200のための1つ以上のコマンド及び/又は動作を受信してもよい。フロー制御処理ユニット402aは、コマンドを定期的にポーリングし、待ち時間及び遅延を導入するのではなく、コマンドに対して迅速に(例えば、実質的に直ちに)応答するために、1つ以上の割り込みポートを使用してもよい。フロー制御処理ユニット402aは、1つ以上の割り込みポート上の信号、動作のための受信されたコマンド等に基づいて、マイクロコントローラ150の1つ以上の処理ユニット402a〜d、404a〜nによる実行のためのサブルーチンを選択/判定してもよい。
例えば、一実施形態では、フロー制御処理ユニット402aは、コマンド割り込み信号(例えば、単一のビット等)、コマンドインデックス(例えば、コマンド割り込み信号がどの既定の動作を呼び出しているかを示す複数のビット)、コマンド動作コード若しくはオペコード(例えば、コマンド割り込み、サスペンド割り込み、再開割り込み、リセット割り込み等の、割り込みの種類を示す複数のビット)、及び/又は1つ以上の他の割り込み信号を(例えば、デバイスコントローラ126、ホストデバイス110、ストレージクライアント116等から)受信してもよく、これに基づいて、フロー制御処理ユニット402aは、マイクロコントローラ150の1つ以上の処理ユニット402a〜d、404a〜nに対する1つ以上の命令を含むサブルーチンを選択/判定してもよい。
フロー制御処理ユニット402aは、ある実施形態では、ハード割り込み要求に応答してもよく、受信したコマンドインデックスをマイクロコントローラ150のプログラムカウンタ等に(例えば、プログラムカウンタの下位ビット又は別の既定の位置に)コピーしてもよい。プログラムカウンタ内のコマンドインデックスに対応する命令は、要求された動作を実行する標的サブルーチンを指す無条件ジャンプ命令を含んでもよい。
一実施形態では、フロー制御処理ユニット402aは、読み出しハザード及び/又は1つ以上の他のハザード(例えば、書き込み後読み出しハザード、書き込み後書き込みハザード、構造ハザード、制御ハザード等)を回避するために、1つ以上の他の処理ユニット402a〜d、404a〜nを管理してもよい。例えば、フロー制御処理ユニット402aは、読み出し後書き込みハザード、別のハザード等を回避するための実行順序を強制するために、単一割り込み待機(SIW)命令及び/又はグループ割り込み待機(GIW)命令を待機文等として使用して、フロー制御処理ユニット402aの外側のステータスを積極的にチェックし、(例えば、ソフト/論理割り込み信号、ハード/物理割り込み信号、別の既定の条件等を待って)待機してもよい。
ある実施形態では、フロー制御処理ユニット402aは、1つ以上の割り込み待機命令(例えば、SIW及び/又はGIW)を使用することによって、1つ以上の他の処理ユニット402a〜d、404a〜nの実行順序を管理してもよい。例えば、フロー制御処理ユニット402aは、第1の命令シーケンスを実行し、割り込み条件(例えば、外部信号等)を識別するSIW及び/又はGIWコマンドを実行し、割り込み条件を待機し、割り込み条件が満たされたことに応じて第2の命令シーケンスを実行してもよい。
GIW待機命令は、一実施形態において、フロー制御処理ユニット402aに、既定のグループ内の複数の割り込み信号(例えば、ハードウェア内で物理的にグループ化された複数の割り込み信号等)を待機させることを除いて、SIW待機命令と実質的に同様である。ある実施形態では、GIW待機命令は、選択された複数の割り込み信号の間で2項演算子AND又は2項演算子ORを選択的に使用するように構成可能であってもよい。例えば、AND2項演算子が選択されると、GIW待機命令は、全ての選択された複数の割り込み信号を受信するまで待機することになる。OR2項演算子が選択されると、GIW待機命令は、選択された複数の割り込み信号のうちのいずれか1つを受信するまで待機することになり、その後、GIW待機命令は、フロー制御処理ユニット402aが続行することを可能にする。
ある実施形態では、複数の標的割り込み信号が物理的にグループ化されてなく、したがって、GIW待機命令が、複数の標的割り込み信号のために使用されなくてもよい場合、フロー制御処理ユニット402aは、一連の連続したSIW命令をサポートしてもよく、これらは全体として単一のGIW命令等のように挙動し得る。
一実施形態では、フロー制御処理ユニット402aは、1つ以上の他の処理ユニット402b〜d、404a〜nのコマンドセンターとして機能する。フロー制御処理ユニット402aは、コマンド及び/又はデータを他の処理ユニット402b〜d、404a〜nに送信し、それらのステータスを監視してもよい。この1対全ての通信パターンは、ある実施形態では、マイクロコードを削減し、設計の複雑性を低減し得る。一実施形態では、フロー制御処理ユニット402aによって使用される命令メモリ空間406を最小化するために、及び/又はフロー制御処理ユニット402aが性能ボトルネックになるのを防ぐために、フロー制御処理ユニット402aは、いくつかのタスクを制御及び追跡し得るが、1つ以上の処理ユニット402b〜d、404a〜nに対する他のタスクを、進行中のステータスを監視及び/又は追跡することなく呼び出し得る。
フロー制御処理ユニット402aによる制御を容易にする及び/又は単純化するために、ある実施形態では、1つ以上の他の処理ユニット402b〜d、404a〜nは、実質的に同様のインターフェース(例えば、標準インターフェース等)を有してもよい。1つ以上の異なる処理ユニット402a〜d、404a〜nは、標準インターフェースを有してもよいが、異なるカテゴリ及び/又は種類のタスクを実行するための異なる命令セットをサポートしてもよい。
多くのタスク(例えば、複雑なアルゴリズム及び/又は反復実行を有する)は、フロー制御処理ユニット402aの標準インターフェースプロトコルを介して、処理ユニット402b〜d、404a〜nによって制御されてもよいが、特定の種類の動作のために他の小さなかつ/又は1回限りの実行のタスクが存在してもよい。多くのこのような小さなタスクが存在する実施形態では、フロー制御処理ユニット402aは、それらのタスク、経時的な新しいタスク、カスタムタスク等のためのサポートを提供する拡張された及び/又はカスタマイズ可能なインターフェースを備えてもよい。
例えば、フロー制御処理ユニット402aは、マイクロコントローラ150の制御レジスタアレイ(例えば、64ビット×16ビット等)内で1つ以上のコマンドテーブルをサポートしてもよい。制御レジスタアレイは、ある実施形態では、フロー制御処理ユニット402aのロード(LOD)及び/又はストア(STR)命令によってアクセスされてもよい。制御レジスタアレイの空間の少なくとも一部は仮想であってもよく、なぜなら、フロー制御処理ユニット402aの設計は、空間のサブセット(例えば、64個のレジスタのうちの5つ等)のみを占有し得るためである。制御レジスタアレイの残部は、カスタムタスク等で使用するために、フロー制御処理ユニット402aから比較的独立していてもよい。フロー制御処理ユニット402a用に予約されていない制御レジスタアレイ内の1つ以上のレジスタは、ある実施形態では、小さなタスク、1回限りのタスク、経時的な新しいタスク等を実行するために、カスタムコマンドテーブルを記憶してマイクロコントローラの機能性を拡張してもよい。
いくつかの実施形態では、1対全ての通信パターンは、マイクロコントローラ150のペースを制御し得る、フロー制御処理ユニット402aとタイミング制御処理ユニット402bとの間の往復の信号/コマンドペアを使用してもよい。タイミング制御処理ユニット402bの出力は、メモリアクセス動作のタイミングを制御するために、メモリアクセス動作の全体を通してメモリアレイ200の1つ以上の周辺モジュールに送達されてよい。フロー制御処理ユニット402aは、マイクロコントローラ150内の唯一のマスタモジュールのままである場合、メモリアレイ200上でのメモリアクセス動作の各工程のためにタイミング制御処理ユニット402bの進捗を監視してもよく、フロー制御処理ユニット402aが、(例えば、フロー制御処理ユニット402aの割り込みインターフェース等を介して)タイミング制御ユニット402bにコマンドを送信し、タイミング制御ユニット402bからフィードバック信号を受信するとき、フロー制御処理ユニット402a及びタイミング制御ユニット402bを同期させるために処理時間及び/又は揮発性メモリ406のオーバーヘッドを使用する。
マイクロコントローラ150の処理ユニット402a〜d、404a〜n及び/又はパイプラインの並列性を改善する、マイクロコードの行数を削減する、命令/データメモリ空間406を節約する等のために、処理ユニット402a〜d、404a〜nのうちの1つ以上は、1つ以上のバッファ及び/又は出力ステージを備えてもよい。フロー制御処理ユニット402aがマイクロコントローラ150のマスタのままであってもよいが、タイミング制御処理ユニット402bは、フロー制御処理ユニット402aによって有効化されたときに、メモリアレイ200上での1つ以上のメモリ動作のために適時に他の処理ユニット402c〜d、404a〜nをトリガするフロー制御処理ユニット402aのプロキシになってもよい。
タイミング制御ユニット402bがマイクロコントローラ150全体のタイミング及び/又はペースを制御し得るとき、タイミング制御処理ユニット402bは、メモリ動作の実行進捗の知識を有してもよい。タイミング制御処理ユニット402bは、タイミング制御処理ユニット402bの命令セットをフロー制御処理ユニット402aよりも拡張するためのより多くの利用可能な空間を(例えば、タイミング制御ユニット402bに関連付けられた揮発性メモリ406内に)有してもよく、この空間は、タイミング制御処理ユニット402bがフロー制御処理ユニット402aのプロキシとして機能することを可能にするために使用され得る。例えば、タイミング制御処理ユニット402bの命令符号化テーブル内の空間のわずかな部分のみが、命令識別コード、引数、及びスイッチ(例えば、有効化/無効化ビット)で埋められてもよく、更なる引数及びスイッチを含めるための余地がタイミング制御処理ユニット402bの命令符号化テーブル内に残される。
ある実施形態では、タイミング制御処理ユニット402bの命令符号化テーブルの余剰容量は、タイミング制御処理ユニット402bが他の処理ユニット402c〜d、404a〜n等をトリガするために使用するトリガを定義しているアレイ(例えば、8ビットアレイ等)を記憶してもよい。例えば、フロー制御処理ユニット402aは、タイミング制御処理ユニット402bを起動及び/又は始動させてサブルーチンを実行してもよい。タイミング制御処理ユニット402bは、1つ以上のトリガをフロー制御処理ユニット402a、データラッチ制御ユニット402c、電圧制御処理ユニット402d、1つ以上の外部処理ユニット404a〜n等に提供するために、バックグラウンドプロセスとして(例えば、フロー制御処理ユニット402aと並列に)動作してもよい。
フロー制御処理ユニット402aは、次のタスクを準備する、更新を提供する、バッファ内に出力を準備する等のために、1つ以上の他の処理ユニット402b〜d、404a〜nに準備コマンドを送信してもよい。フロー制御処理ユニット402aは、様々な実施形態において、次の準備コマンドを送信するために、関連するタスクに応じて、タイミング制御処理ユニット402bのトリガを待機してもしなくてもよい。タイミング制御処理ユニット402bは、1つ以上の他の処理ユニット402a、402c、402d、404a〜nをトリガして、(例えば、タスクを完了する、タスクの次の工程をトリガする等のために)バッファ値を関連する出力ステージ等にコピーしてもよい。
フロー制御処理ユニット402aは、処理ユニット402b〜d、404a〜nに初期化コマンド(例えば、起動コマンド、準備コマンド等)を送信してもよく、タイミング制御処理ユニット402bは、タスクの後続の部分を始動させるトリガを処理ユニット402c〜d、404a〜nに送信する、フィードバックをフロー制御処理ユニット402aに(例えば、フロー制御処理ユニット402aの割り込みポート又は他の割り込みインターフェースを介して)送信する等をしてもよい。タイミング制御処理ユニット402bからのトリガ信号は、出力信号、値等を提供するように(例えば、データラッチ制御処理ユニット402cには値をデータラッチにロードするように、電圧制御処理ユニット402dには出力電圧を供給するように等)、タスクを完了するように、タスクの中間工程として等、別の処理ユニット402c〜d、404a〜nをトリガしてもよい。
例えば、電圧制御処理ユニット402dは、マイクロコントローラ150からのバイナリ及び/又はデジタル値をメモリアレイ200用のアナログ電圧(例えば、プログラム電圧、消去電圧、読み出し電圧、バイアス電圧、ワード線電圧、ビット線電圧、禁止電圧等)に変換してもよい。データラッチ制御処理ユニット402cは、ある実施形態では、メモリアレイ用の1つ以上のデータバッファ、メモリアレイ200用の論理回路(例えば、センスアンプ250を制御するYLOG論理回路、読み出し/書き込み回路230、行デコーダ240等)、及び/又は集積回路デバイス123のメモリアレイ200用の他の回路を制御してもよい。
一実施形態では、データラッチ制御処理ユニット402cは、揮発性メモリ406からのデータをコマンドインデックスに復号してもよい(例えば、32ビット及び/又は64ビットのSRAMデータを1つ以上のコマンドインデックスに復号する等)。データラッチ制御処理ユニット402cは、ある実施形態では、ハードコードされた組み合わせ論理及び/又は他のルールを使用して、復号されたコマンドインデックスを1つ以上のコマンド(例えば、YLOGコマンド)に変換してもよい。データラッチ制御処理ユニット402cは、クロックサイクル又はクロックサイクルのセットごとに、所定の数のコマンドをバッファしてもよい。例えば、データラッチ制御処理ユニット402cは、クロックサイクルごとに4つのコマンドをバッファし、4つの論理コマンドのうちの1つをクロックサイクルの4分の1ごとに(例えば、80ナノ秒のクロックサイクルに対して20ナノ秒ごとに等)出力してもよい。データラッチ制御処理ユニット402cは、既定のコマンドシーケンス(例えば、YLOGコマンドシーケンス)を揮発性メモリ406等に記憶してもよい。
例えば、一実施形態では、データラッチ制御処理ユニット402cは、コマンドの1つ以上の順序付けられたリストをそれぞれに含む、約64、128、256、又はそれ以上のコマンドシーケンスを記憶してもよい。コマンドシーケンスは、様々な実施形態において、単一のコマンド、複数のコマンド、最大5つのコマンド、最大10個のコマンド、最大13個のコマンド、最大15個のコマンド、最大20個のコマンド、20個を超えるコマンド等を含んでもよい。
マイクロコントローラ150は、データラッチに記憶された値の柔軟な制御を提供してもよく、データラッチ制御処理ユニット402cは、コマンドシーケンスに復号されたコマンドインデックスに基づいてデータラッチ内にデータを記憶し、フロー制御処理ユニット402aは、1つ以上のデータラッチに記憶されたデータを選択的にオーバーライドする。例えば、フロー制御処理ユニット402aは、コマンドシーケンス(例えば、メモリアレイ200用及び/又はセンスアンプ250、読み出し/書き込み回路230、行デコーダ240用の1つ以上のコマンド等)を生成するサブルーチン(例えば、マイクロコード又は他のコンピュータ実行可能プログラムコード)を実行するように、データラッチ制御処理ユニット402cを始動させてもよく、フロー制御処理ユニット402aは、1つ以上のデータ値を1つ以上のデータラッチに直接記憶してもよく、フロー制御処理ユニット402aは、データラッチに対してコマンドインデックスをマスク、トランケート、変更、更新、及び/又は上書きしてもよい。
ある実施形態では、メモリアレイ200用の読み出しコマンドは、プログラム及び/又は消去コマンドよりも高い優先度を有してもよい(例えば、NANDフラッシュメモリにおいて、読み出し動作は、プログラム及び/又は消去動作よりも実質的に高速に実行されてもよい等)。マイクロコントローラ150は、割り込みの読み出し要求等の受信に応じてプログラム又は消去コマンドシーケンスの実行から読み出しコマンドシーケンスに切り替わり、読み出し命令シーケンスの完了に応じてプログラム又は消去コマンドシーケンスに戻ってもよい。マイクロコントローラ150は、プログラム又は消去コマンドシーケンス内の中断した位置でプログラム又は消去サブルーチンに戻ってもよい。
一実施形態では、マイクロコントローラ150は、サスペンドが影響した場所を示しているマイクロコントローラ150のステータスを記憶するシャドウレジスタのセットを含んでもよい。しかしながら、ある実施形態では、シャドウレジスタよりも少ない電力及び回路空間を使用するために、フロー制御処理ユニット402aは、処理ユニット402a〜d、404a〜nのためのレジスタファイル及び保留中のコマンドシーケンスをスレッド切り替えスタックにプッシュしてもよく、割り込みの読み出し動作後にプログラム又は消去動作を再開することに応じて、スレッド切り替えスタックからレジスタファイル及び保留中のコマンドシーケンスをポップしてもよい。処理ユニット402a〜d、404a〜nは、中断されたプログラム又は読み出し動作をそれらが中断した位置から開始してもよく、又は、コマンドシーケンス内の特定のコマンドを再実行して、適切な動作状態等を再作成してもよい。スレッド切り替えスタックを使用することは、マイクロコントローラ150全体にシャドウレジスタを使用するよりも少ないレジスタを追加し得ると同時に、フロー制御処理ユニット402a及びタイミング制御処理ユニット402bが同期されたままであることを可能にし、その結果、他の処理ユニット402c〜d、404a〜nは、タイミング制御処理ユニット402bがそれらをトリガしたときに、中断されたプログラム又は消去動作を再開した後であっても、正しいバッファ値を準備することができる。
図5は、スレッド管理ユニット502によって同期及び/又は管理された複数のオンダイメモリマイクロコントローラコア150a〜nを有するシステム500の一実施形態を示す。図示の実施形態では、マイクロコントローラコア150a〜nの各々は、同様のサイズを有する(例えば、同様の処理ユニット302a〜302d、同様の数の処理ユニット302a〜302d等を有してもよい)。
各マイクロコントローラコア150a〜nは、ある実施形態では、メモリメディア122の異なるサブセット(例えば、1つ以上の異なるダイ、ダイプレーン、ブロック、消去ブロック等)に関連付けられてもよく、それぞれは、メモリメディア122の関連するサブセット上でプログラム、読み出し、及び/又は消去動作を実行することができる。更なる実施形態では、異なるマイクロコントローラコア150a〜nは、メモリメディア122の任意の選択されたサブセット(例えば、1つ以上の異なるダイ、ダイプレーン、ブロック、消去ブロック等)上でプログラム、読み出し、及び/又は消去動作を実行するように構成されてもよい。
図6は、複数のオンダイメモリマイクロコントローラコア150a〜nとスレッド管理ユニット502とを有するシステム600の別の実施形態を示す。図示の実施形態では、1つのマイクロコントローラコア150aは、1つ以上の追加のマイクロコントローラコア150b〜nよりも大きいサイズを有する(例えば、マイクロコントローラコア150aは、より少ない及び/又はより小さい処理ユニット302a〜cを有する1つ以上の追加のマイクロコントローラコア150b〜nと比べて、より多い及び/又はより大きい処理ユニット302a〜302dを有してもよい、等)。
図5に示されるように、それぞれがフルの能力を有する、複数のフルサイズのマイクロコントローラコア150a〜nは、集積回路デバイス123の電力及び/又は回路面積をより多く消費し得る。図6では、システム600は、1つ以上のフルサイズのマイクロコントローラコア150aと、1つ以上の縮小サイズ及び/又は部分的なマイクロコントローラコア150b〜nと、を含む(例えば、電力を節約するために(to conserver power)、回路サイズを縮小するために、等)。例えば、図示の実施形態では、例示のみを目的として、第1のフルサイズのマイクロコントローラコア150aは、4つの処理ユニット302a〜dを備えているが、1つ以上の部分的な及び/又は縮小サイズのマイクロコントローラコア150b〜nは、(例えば、フルサイズ(fill size)のコントローラコア150aよりも少ない)3つの処理ユニット302a〜cを備える。
1つ以上の部分的な及び/又は縮小サイズのマイクロコントローラコア150b〜nは、サイズを縮小するために、不要なレジスタ、ほとんど使用されない命令、ポインタスタック、レジスタファイルエントリ等を除去されていてもよい。部分的な及び/又は縮小サイズのマイクロコントローラコア150b〜nは、ある実施形態では、全てのユーザモード動作、ユーザモード動作の所定のセット等を実行することが可能であり得るが、フルサイズの完全なマイクロプロセッサコア150aより小さくてもよい。フルサイズの完全なマイクロコントローラ150aは、ユーザモード動作及び組み込み自己テストのテストモード動作の両方を実行することが可能であってもよい。
例えば、フルサイズの完全なマイクロコントローラ150aは、組み込み自己テスト処理ユニットを備えるフロー制御処理ユニット402aを備えてもよく、その一方で、部分的な及び/又は縮小サイズのマイクロコントローラコア150b〜nは、組み込み自己テスト処理ユニットを有しないフロー制御処理ユニット402aを備えてもよい。更なる実施形態では、フルサイズの完全なマイクロコントローラ150aは、読み出し処理ユニット及びプログラム/書き込み処理ユニットの両方を備えるフロー制御処理ユニット402aを備えてもよく、その一方で、部分的な及び/又は縮小サイズのマイクロコントローラコア150b〜nは、読み出し処理ユニットを有するがプログラム/書き込み処理ユニットを有しないフロー制御処理ユニット402aを備えてもよい。
フルサイズの完全なマイクロコントローラ150aは、1つ以上の部分的な及び/又は縮小サイズのマイクロコントローラコア150b〜nが1つ以上の動作をサポートしなくてもよいので、その1つ以上の動作(例えば、プログラム動作、消去動作、組み込み自己テストのテスト動作等)を集積回路デバイス123のメモリメディア122の各異なるサブセット(例えば、1つ以上の異なるダイ、ダイプレーン、ブロック、消去ブロック等)に対して実行してもよい。ある実施形態では、マイクロコントローラコア150a〜nの各々がサポートする動作(例えば、読み取り動作)のために、異なるマイクロコントローラコア150a〜nが、集積回路デバイス123のメモリメディア122の異なるサブセット(例えば、1つ以上の異なるダイ、ダイプレーン、ブロック、消去ブロック等)に割り当てられてもよい。
例えば、一実施形態では、集積回路デバイス123のダイは、複数のダイプレーン(例えば、4つのダイプレーン)を備えてもよく、それぞれは、メモリ動作を並列に実行することができる別個のメモリアレイ200を有する。ダイプレーンは、互いに集積回路デバイス123の同じレベル(例えば、半導体、金属又は他の導体、絶縁体等の1つ以上の層)内に(例えば、同じレベル内で隣接して)、又は異なるオフセットされたレベル内に平行に、等で配設されてもよい。
各ダイプレーンは、一実施形態において、マイクロコントローラコア150a〜nの各々によってサポートされている動作(例えば、読み出し動作)のために、異なるマイクロコントローラコア150a〜nを割り当てられてもよく、その一方で、単一のマイクロコントローラコア150a(例えば、フルサイズの完全なマイクロコントローラコア150a)は、各ダイプレーンに対してマイクロコントローラコア150a〜nの各々によってサポートされていない1つ以上の動作(例えば、プログラム動作、消去動作、組み込み自己テストのテスト動作等)を実行してもよい。例えば、4つのダイプレーンと、4つのダイプレーンの各々に対してプログラム動作を実行することができる1つのフルサイズのマイクロコントローラコア150aと、3つの追加の縮小サイズのマイクロコントローラコア150b〜nと、を有し、4つ全てのマイクロコントローラコア150a〜nが、読み出し動作を実行するために異なるダイプレーンに割り当てられている、一実施形態では、最大4つの読み出し動作が並列に実行されてもよく、又は3つの読み出し動作及び1つのプログラム動作、等が、並列に実行されてもよい。
このようにして、ある実施形態では、高優先度動作(例えば、読み出し動作等)は、電力消費及び回路サイズを依然として最小化しながら、複数のメモリダイ、又はメモリの他の領域上で並列に実行されてもよい。単一のプログラム及び/又は消去動作のみを一度に実行することは、ある実施形態では、プログラム及び/又は消去動作に使用されるピーク電力のため、電力管理に最適であり得、その一方で、読み出し動作は、より少ない電力を使用し得る。
1つ以上のより小さい縮小サイズのマイクロコントローラコア150b〜nは、一実施形態において、それぞれタイミング制御処理ユニット402bを含んでもよい。ある実施形態では、1つ以上のより小さい縮小サイズのマイクロコントローラコア150b〜nのためのフロー制御処理ユニット402aは、より大きいフルサイズのマイクロコントローラコア150aの場合より小さくても(読み出し動作を実行するのに十分だが、プログラム動作等には不十分な論理を有する、より小さい命令セットで、縮小、除去されても)よい。
更なる実施形態では、1つ以上のより小さい縮小サイズのマイクロコントローラコア150b〜nは、フロー制御処理ユニット402aを有しなくてもよいが、フロー制御処理ユニット402aの論理及び/又は機能の一部は、タイミング制御処理ユニット402b等と組み合わされてもよい。複数のより小さい縮小サイズのマイクロコントローラコア150b〜nは、一実施形態において、単一のデータラッチ制御処理ユニット402c等を共有してもよい。ある実施形態では、フルサイズのマイクロコントローラコア150a及び縮小サイズのマイクロコントローラコア150b〜nの両方は、同じファームウェアコードを共有し得るが、異なるサブルーチン等を実行してもよい。揮発性メモリバッファ406は、一実施形態において、1つ以上の縮小サイズのマイクロコントローラコア150b〜n内の回路サイズを縮小するために、サイズ縮小、共有、排除等が行われてもよい。
ある実施形態では、各マイクロコントローラコア150a〜nが個別のタイミング制御処理ユニット402bを含むことが有益であってもよく、その結果、集積回路デバイス123のメモリメディア122の各チャネル、ダイプレーン、又は他のサブセットが、連続的な個別のタイミング制御を受信してもよい。更なる実施形態では、各マイクロコントローラコア150a〜nは、異なるマイクロコントローラコア150a〜n間でのスレッド切り替えが、異なるマイクロコントローラコア150a〜n間の同期の増加及び頻繁な切り替えに起因して、性能に悪影響を及ぼし得るため、個別のフロー制御処理ユニット402aを含んでもよい。フロー制御処理ユニット402a及び/又はタイミング制御処理ユニット402bの縮小バージョン(例えば、読み出し動作を扱うがプログラム動作は扱わない等)は、縮小された命令セット、縮小された揮発性メモリ406等を有してもよい。
スレッド管理ユニット(TMU)502は、ある実施形態では、コマンドを異なるマイクロコントローラコア150a〜nに分配する(例えば、集積回路デバイス123のメモリメディア122の異なるチャネル、ダイプレーン、及び/又は他のサブセットのためのコマンド等)。例えば、スレッド管理ユニット502は、デバイスコントローラ126からコマンド(例えば、読み出しコマンド、書き込み/プログラムコマンド、消去コマンド、テストコマンド等)を受信し、マイクロコントローラコア150a〜nを選択してもよい(例えば、コマンドのアドレス又は他のインジケータに基づいて、どのマイクロコントローラ150a〜nが利用可能及び/又はビジーであるかに基づいて、等)。スレッド管理ユニット502は、(例えば、コマンドを完了するマイクロコントローラ、コマンド実行中のビジーステータス等に応じて)コマンドのステータスをデバイスコントローラ126にレポートしてもよい。
スレッド管理ユニット502は、様々な実施形態において、マイクロコントローラコア150a〜n間の共有リソース(例えば、外部処理ユニット404a〜n、共有揮発性メモリ406等)を割り当ててもよく、マイクロコントローラコア150a〜nのための電力を管理し(例えば、異なるマイクロコントローラコア150a〜nをウェイク及び/又はスリープさせて電力を管理する等)、マイクロコントローラコア150a〜n間の競合及び/若しくは衝突を管理し、並びに/又は別の方法で異なるマイクロコントローラコア150a〜n間を調整してもよい。
ある実施形態では、スレッド管理ユニット502は、異なるマイクロコントローラコア150a〜nの各フロー制御処理ユニット402aから標的タイミング制御処理ユニット402bにコマンドをディスパッチし、1つのマイクロコントローラコア150a〜nのフロー制御処理ユニット402aと、異なるマイクロコントローラコア150a〜nのタイミング制御処理ユニット402bとの間での通信、タスクの共有、タスクの転送等を可能にする。
例えば、より大きいフルサイズのマイクロコントローラ150aのためのフロー制御処理ユニット402aは、集積回路デバイス123のメモリメディア122の各ダイプレーン又は他のサブセットに対するプログラム動作を管理してもよく、その一方で、マイクロコントローラコア150a〜nのタイミング制御処理ユニット402bは、メモリメディア122の異なるダイプレーン又は他のサブセットに対して専用であってもよく(例えば、導体線の配置やルーティングを簡素化するために等)、スレッド管理ユニット502は、プログラム動作のために、フロー制御処理ユニット402aから他のタイミング制御処理ユニット402bにコマンド、タスク等を送信して、フロー制御処理ユニット402aからのコマンドをプログラム動作用の適切なチャネル(例えば、ダイプレーン)にリンクしてもよい。
スレッド管理ユニット502は、ある実施形態では、動作、コマンド、及び/又はタスクをフルサイズのマイクロコントローラ150aのフロー制御処理ユニット402aからプログラム動作用のチャネルに関連付けられたタイミング制御処理ユニット402bにルーティングするために、並びにタスクを他の(例えば、縮小サイズのマイクロコントローラ150b〜nの)フロー制御処理ユニット402aからそれらの対応のチャネルに関連付けられたタイミング制御処理ユニット402bにルーティングするために、割り当てテーブル及びマルチプレクサを使用してもよい。
図7は、オンダイメモリマイクロコントローラ150を有する集積回路デバイス700の一実施形態を示す概略的なブロック図である。図示の実施形態では、メモリアレイ200(例えば、1つ以上のダイプレーン等)は、集積回路デバイス700の1つのレベル(例えば、導体、絶縁体、半導体等の1つ以上の層)内にあり、マイクロコントローラ150及び他の回路704(例えば、センスアンプ、ワード線スイッチ等)は、(例えば、アレイ200の下で)集積回路デバイス700の異なるレベル内にあり、1つ以上の相互接続部702(例えば、絶縁層、導電層、シリコン貫通ビア、孔、バス等)を介してメモリアレイ200と通信する。図示の実施形態では、メモリアレイ200は、集積回路デバイス700の第1のレベル内にあり、マイクロコントローラ150は、第1のレベルと平行であり、かつ第1のレベルからオフセットされている、集積回路デバイス700の第2のレベル内にある。基板706は、集積回路デバイス700の第3のレベル(例えば、1つ以上の他の層が上に形成及び/又は堆積されている支持構造体)を含み、他の層と平行であり、かつ他の層からオフセットされている。
図8は、オンダイメモリマイクロコントローラ150のための方法800の一実施形態を示す概略的なフローチャート図である。方法800が開始すると、マイクロコントローラ150は、集積回路デバイス123のメモリアレイ200に対するメモリ動作の要求(例えば、読み出し要求、書き込み/プログラム要求、消去要求等)を受信する(802)。
フロー制御処理ユニット402a及び/又はスレッド管理ユニット502は、受信した(802)メモリ動作の要求のためのタスクを異なる処理ユニット302a〜n、402a〜d、404a〜nに割り当てる(804)。1つ以上の処理ユニット302a〜n、402a〜d、404a〜nは、割り当てられたタスク(804)を実行してメモリ動作を完了し(806)、方法800は終了する。
図9は、オンダイメモリマイクロコントローラ150のための方法900の一実施形態を示す概略的なフローチャート図である。方法900が開始すると、マイクロコントローラ150は、集積回路デバイス123のメモリアレイ200に対するメモリ動作の要求(例えば、読み出し要求、書き込み/プログラム要求、消去要求等)を受信する(902)。
フロー制御処理ユニット402a及び/又はスレッド管理ユニット502は、受信したメモリ動作の要求(902)のためのタスクを判定する(904)。フロー制御処理ユニット402a及び/又はスレッド管理ユニット502は、フロー制御タスクが存在するかどうかを判定し(906)、フロー制御処理ユニット402aは、判定された(906)フロー制御タスクを実行する(908)。フロー制御処理ユニット402a及び/又はスレッド管理ユニット502は、タイミング制御タスクが存在するかどうかを判定し(910)、タイミング制御処理ユニット402bは、判定された(910)タイミング制御タスクを実行する(912)。フロー制御処理ユニット402a及び/又はスレッド管理ユニット502は、電圧制御タスクが存在するかどうかを判定し(914)、電圧制御処理ユニット402dは、判定された(914)電圧制御タスクを実行する(916)。フロー制御処理ユニット402a及び/又はスレッド管理ユニット502は、データラッチ制御タスクが存在するかどうかを判定し(918)、データラッチ制御処理ユニット402cは、判定された(918)データラッチ制御タスクを実行する(920)。方法900は継続し、マイクロコントローラ150は、メモリ動作のための1つ以上の追加の要求を受信する(902)。
データを記憶する手段は、様々な実施形態において、メモリデバイス120、メモリメディア122、メモリ素子123、メモリアレイ200、揮発性メモリメディア122(例えば、RAM、DRAM、SDRAM、DDR SDRAM、SRAM、T−RAM、Z−RAM等)、不揮発性メモリメディア122(例えば、ReRAM、メモリスタメモリ、プログラマブルメタライゼーションセルメモリ、PCM、PCME、PRAM、PCRAM、Ovonic Unified Memory、C−RAM、NANDフラッシュメモリ、2D NANDフラッシュメモリ、3D NANDフラッシュメモリ、NORフラッシュメモリ、ナノRAM又はNRAM、ナノクリスタルワイヤベースメモリ、シリコン酸化物系のサブ−10ナノメートルプロセスメモリ、グラフェンメモリ、SONOSメモリ、PMCメモリ、CBRAM、MRAM、ハードディスク又はテープドライブ等の磁気ストレージメディア、光ストレージメディア、SCM等)等を含んでもよい。他の実施形態は、データを記憶するための同様又は同等の手段を含んでもよい。
タスクのカテゴリでタスクをソートする手段は、様々な実施形態において、マイクロコントローラ150、フロー制御処理ユニット402a、スレッド管理ユニット502、データラッチ制御処理ユニット402c、集積回路デバイス123、及び/若しくは他の論理ハードウェア、又はコンピュータ可読のストレージメディア上に記憶されたコンピュータ実行可能コードを含んでもよい。他の実施形態は、タスクのカテゴリでタスクをソートするための同様又は同等の手段を含んでもよい。
異なるカテゴリのタスクを並列に実行する手段は、様々な実施形態において、マイクロコントローラ150、フロー制御処理ユニット402a、タイミング制御処理ユニット402b、データラッチ制御処理ユニット402c、電圧制御処理ユニット402d、外部処理ユニット404a〜n、別の処理ユニット302a〜n、402a〜d、404a〜n、集積回路デバイス123、及び/若しくは他の論理ハードウェア、又はコンピュータ可読のストレージメディア上に記憶されたコンピュータ実行可能コードを含んでもよい。他の実施形態は、異なるカテゴリのタスクを並列に実行するための同様又は同等の手段を含んでもよい。
異なるセットの処理ユニットを使用してより少ないカテゴリのタスクを実行する手段は、様々な実施形態において、マイクロコントローラ150、フロー制御処理ユニット402a、タイミング制御処理ユニット402b、データラッチ制御処理ユニット402c、電圧制御処理ユニット402d、外部処理ユニット404a〜n、別の処理ユニット302a〜n、402a〜d、404a〜n、集積回路デバイス123、及び/若しくは他の論理ハードウェア、又はコンピュータ可読のストレージメディア上に記憶されたコンピュータ実行可能コードを含んでもよい。他の実施形態は、異なるセットの処理ユニットを使用してより少ないカテゴリのタスクを実行するための同様又は同等の手段を含んでもよい。
本開示は、その趣旨又は本質的な特性から逸脱することなく他の特定の形態で具現化されてもよい。説明された実施形態は、あらゆる点で、例示的であり、かつ制限的でないものと考慮されるべきである。本開示の範囲は、このため、上記の説明よりもむしろ添付の特許請求の範囲により示される。特許請求の範囲の意味及び均等物の範囲内に収まる全ての変更は、それらの範囲に包含されるべきである。

Claims (25)

  1. 装置であって、
    集積回路デバイス内の不揮発性メモリセルのアレイと、
    前記集積回路デバイス内のマイクロコントローラユニットと、
    前記マイクロコントローラユニットの複数の処理ユニットであって、異なる処理ユニットは、前記不揮発性メモリセルのアレイに対して異なるカテゴリのタスクを並列に実行する、複数の処理ユニットと、を備える、装置。
  2. 前記集積回路デバイス内に1つ以上の追加のマイクロコントローラユニットを更に備え、前記1つ以上の追加のマイクロコントローラユニットは、前記マイクロコントローラユニットよりも少ない処理ユニットを含み、より少ないカテゴリのタスクを実行する、請求項1に記載の装置。
  3. 前記マイクロコントローラユニットの前記複数の処理ユニットが、前記不揮発性メモリセルのアレイ上で複数のテスト動作を実行するように構成された組み込み自己テストユニットを含み、前記1つ以上の追加のマイクロコントローラユニットの前記より少ない処理ユニットが、組み込み自己テストユニットを有しない、請求項2に記載の装置。
  4. 前記マイクロコントローラユニットの前記複数の処理ユニットが、前記不揮発性メモリセルのアレイ上でプログラム動作及び読み出し動作を実行するように構成されており、前記1つ以上の追加のマイクロコントローラユニットの前記より少ない処理ユニットが、前記不揮発性メモリセルのアレイ上で読み出し動作を実行し、かつプログラム動作を実行しないよう、構成されている、請求項2に記載の装置。
  5. 前記マイクロコントローラユニットが、前記不揮発性メモリセルのアレイの各サブセット上で前記プログラム動作を実行するように構成されており、前記1つ以上の追加のマイクロコントローラユニットが、前記不揮発性メモリセルのアレイの異なるサブセット上で読み出し動作を実行するように構成されている、請求項4に記載の装置。
  6. 前記不揮発性メモリセルのアレイが、前記集積回路デバイスの第1のレベル内にあり、前記マイクロコントローラユニットが、前記集積回路デバイスの第2のレベル内にあり、前記第2のレベルは、前記第1のレベルと平行であり、かつ前記第1のレベルからオフセットされている、請求項1に記載の装置。
  7. 前記マイクロコントローラユニットのクロックレートは、前記マイクロコントローラが、前記不揮発性メモリセルのアレイ上でのデータ操作を、前記データ操作の待ち時間を増大させることなく単一の処理ユニットで直列に実行することができるクロックレートよりも低く設定され、前記マイクロコントローラユニットの前記複数の処理ユニットは、前記不揮発性メモリセルのアレイ上でのデータ操作を、前記データ操作の待ち時間を増大させることなく、前記設定されたクロックレートで並列に実行する、請求項1に記載の装置。
  8. 前記マイクロコントローラユニットの前記複数の処理ユニットが、前記異なるカテゴリのタスクに関連付けられた異なる命令セットをサポートする、請求項1に記載の装置。
  9. 前記複数の処理ユニットが、フロー制御処理ユニット、タイミング制御処理ユニット、電圧制御処理ユニット、及びデータラッチ制御処理ユニットのうちの1つ以上を含む、請求項1に記載の装置。
  10. 前記異なるカテゴリのタスクが、フロー制御タスク、タイミング制御タスク、データラッチ制御タスク、電圧制御タスク、及び組み込み自己テストタスクのうちの1つ以上を含む、請求項1に記載の装置。
  11. 前記集積回路デバイスの揮発性メモリであって、前記複数の処理ユニットが、前記異なるカテゴリのタスクを実行するために前記揮発性メモリ内にデータを記憶する、揮発性メモリを更に備え、前記複数の処理ユニットの組み込み自己テストユニットが、前記不揮発性メモリセルのアレイから読み出されたテストデータを前記揮発性メモリの部分に記憶し、前記揮発性メモリの前記部分は、前記組み込み自己テストユニットのテストモードにないとき、前記複数の処理ユニットの他の処理ユニットによって別な方法で使用される、請求項1に記載の装置。
  12. システムであって、
    不揮発性メモリメディアを含む集積回路デバイスと、
    前記不揮発性メモリメディアのためのタスクを実行するための複数の処理ユニットを有するマイクロコントローラと、
    前記マイクロコントローラよりも少ない処理ユニットを含む1つ以上の追加のマイクロコントローラと、を含む、システム。
  13. 前記複数の処理ユニットの異なる処理ユニットが、前記不揮発性メモリメディアに対して異なる種類のタスクを並列に実行し、前記1つ以上の追加のマイクロコントローラが、前記マイクロコントローラよりも少ない種類のタスクを実行する、請求項12に記載のシステム。
  14. 前記不揮発性メモリメディアが、前記集積回路デバイスの第1のレベル内に配設され、前記マイクロコントローラ及び前記1つ以上の追加のマイクロコントローラが、前記集積回路デバイスの第2のレベル内に配設されており、前記第2のレベルは、前記第1のレベルと平行であり、かつ前記第1のレベルからオフセットされている、請求項12に記載のシステム。
  15. 前記マイクロコントローラの前記複数の処理ユニットが、前記不揮発性メモリメディア上で複数のテスト動作を実行するように構成された組み込み自己テストユニットを含み、前記1つ以上の追加のマイクロコントローラの前記より少ない処理ユニットが、組み込み自己テストユニットを有しない、請求項12に記載のシステム。
  16. 前記マイクロコントローラの前記複数の処理ユニットが、前記不揮発性メモリメディア上でプログラム動作及び読み出し動作を実行するように構成されており、前記1つ以上の追加のマイクロコントローラの前記より少ない処理ユニットが、前記不揮発性メモリメディア上で読み出し動作を実行し、かつプログラム動作を実行しないよう、構成されている、請求項12に記載のシステム。
  17. 前記マイクロコントローラユニットが、前記不揮発性メモリメディアの各ダイプレーン上で前記プログラム動作を実行するように構成されており、前記1つ以上の追加のマイクロコントローラユニットが、前記不揮発性メモリメディアの異なるダイプレーン上で読み出し動作を実行するように構成されている、請求項16に記載のシステム。
  18. 装置であって、
    データを記憶する手段と、
    前記データを記憶する手段のためのタスクをタスクのカテゴリでソートする手段と、
    前記データを記憶する手段のための異なる処理ユニットを使用して、前記データを記憶する手段のための異なるカテゴリのタスクを並列に実行する手段と、を備える、装置。
  19. 前記データを記憶する手段のための異なるセットの処理ユニットを使用して、前記データを記憶する手段のためのより少ないカテゴリのタスクを実行する手段を更に備える、請求項18に記載の装置。
  20. 前記データを記憶する手段が、集積回路デバイスの第1のレベル内に配設され、前記異なるカテゴリのタスクを実行する手段及び前記異なる処理ユニットが、前記集積回路デバイスの第2のレベル内に配設されており、前記第2のレベルは、前記第1のレベルと平行であり、かつ前記第1のレベルからオフセットされている、請求項18に記載の装置。
  21. 方法であって、
    メモリ動作の要求を受信することと、
    前記メモリ動作を完了するための複数のタスクを判定することであって、前記複数のタスクの異なるタスクは、異なる命令セットに関連付けられている、ことと、
    マイクロコントローラの異なる処理ユニットを使用して、前記複数のタスクの前記異なるタスクを並列に実行することであって、前記異なる処理ユニットは、前記異なる命令セットをサポートする、ことと、を含む、方法。
  22. 前記マイクロコントローラより少ない処理ユニットを有する追加のマイクロコントローラを使用して後続のメモリ動作を実行することと、より少ない命令セットをサポートすることと、を更に含む、請求項21に記載の方法。
  23. 装置であって、
    集積回路デバイスのメモリアレイのためのマイクロコントローラであって、前記マイクロコントローラが、
    第1の処理ユニットを使用して、メモリ動作のための複数のタスクを選択し、
    第2の処理ユニットを使用して、前記メモリ動作のための前記複数のタスクのタイミングを制御し、
    第3の処理ユニットを使用して、前記メモリ動作のための前記複数のタスクのための電圧を設定する、ように構成されている、マイクロコントローラを備える、装置。
  24. 前記集積回路デバイスのための1つ以上の追加のマイクロコントローラを更に備え、前記1つ以上の追加のマイクロコントローラユニットは、前記マイクロコントローラよりも少ない処理ユニットを含む、請求項23に記載の装置。
  25. 前記マイクロコントローラが、プログラム動作、読み出し動作、及びテスト動作を実行するように構成されており、前記1つ以上の追加のマイクロコントローラが、読み出し動作を実行し、かつプログラム動作及びテスト動作を実行しないよう、構成されている、請求項24に記載の装置。
JP2019551286A 2017-06-12 2018-03-23 マルチコアオンダイメモリマイクロコントローラ Pending JP2020510951A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762518584P 2017-06-12 2017-06-12
US62/518,584 2017-06-12
IN201841008353 2018-03-07
IN201841008353 2018-03-07
PCT/US2018/024103 WO2018231313A1 (en) 2017-06-12 2018-03-23 Multicore on-die memory microcontroller

Publications (1)

Publication Number Publication Date
JP2020510951A true JP2020510951A (ja) 2020-04-09

Family

ID=68206363

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019551286A Pending JP2020510951A (ja) 2017-06-12 2018-03-23 マルチコアオンダイメモリマイクロコントローラ

Country Status (4)

Country Link
JP (1) JP2020510951A (ja)
KR (1) KR102238957B1 (ja)
CN (1) CN110447075B (ja)
DE (1) DE112018000842T5 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113568848B (zh) * 2020-07-29 2023-07-11 华为技术有限公司 处理器、信号调整方法及计算机系统
CN112612746A (zh) * 2020-12-18 2021-04-06 中国电子科技集团公司第四十七研究所 一种基于存储器互联的可重构微处理器系统
CN116090383A (zh) * 2022-12-27 2023-05-09 广东高云半导体科技股份有限公司 实现静态时序分析的方法、装置、计算机存储介质及终端
CN116189745B (zh) * 2023-04-26 2023-09-15 长鑫存储技术有限公司 存储器和命令序列处理系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005235259A (ja) * 2004-02-17 2005-09-02 Toshiba Corp 半導体集積回路装置
JP2006127623A (ja) * 2004-10-28 2006-05-18 Sony Corp 半導体記憶装置とそのアクセス方法
JP2013109823A (ja) * 2011-11-21 2013-06-06 Samsung Electronics Co Ltd 不揮発性メモリ装置及び不揮発性メモリ装置を制御するコントローラの動作方法
WO2016025173A1 (en) * 2014-08-15 2016-02-18 Micron Technology, Inc. Apparatuses and methods for concurrently accessing different memory planes of a memory
US9558846B1 (en) * 2015-11-04 2017-01-31 Texas Instruments Incorporated Feedback validation of arbitrary non-volatile memory data
JP2018045747A (ja) * 2016-09-15 2018-03-22 東芝メモリ株式会社 半導体記憶装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615159A (en) * 1995-11-28 1997-03-25 Micron Quantum Devices, Inc. Memory system with non-volatile data storage unit and method of initializing same
KR101086855B1 (ko) * 2008-03-10 2011-11-25 주식회사 팍스디스크 고속 동작하는 반도체 스토리지 시스템 및 그 제어 방법
US9448940B2 (en) * 2011-10-28 2016-09-20 The Regents Of The University Of California Multiple core computer processor with globally-accessible local memories
US20140137119A1 (en) * 2012-11-15 2014-05-15 Elwha LLC, a limited liability corporation of the State of Delaware Multi-core processing in memory
US9478292B2 (en) * 2013-10-27 2016-10-25 Sandisk Technologies Llc Read operation for a non-volatile memory
KR20170140225A (ko) * 2015-04-30 2017-12-20 마이크로칩 테크놀로지 인코포레이티드 향상된 명령어 세트를 구비한 중앙 처리 유닛
US9564233B1 (en) * 2016-03-04 2017-02-07 Sandisk Technologies Llc Open block source bias adjustment for an incompletely programmed block of a nonvolatile storage device

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005235259A (ja) * 2004-02-17 2005-09-02 Toshiba Corp 半導体集積回路装置
JP2006127623A (ja) * 2004-10-28 2006-05-18 Sony Corp 半導体記憶装置とそのアクセス方法
JP2013109823A (ja) * 2011-11-21 2013-06-06 Samsung Electronics Co Ltd 不揮発性メモリ装置及び不揮発性メモリ装置を制御するコントローラの動作方法
WO2016025173A1 (en) * 2014-08-15 2016-02-18 Micron Technology, Inc. Apparatuses and methods for concurrently accessing different memory planes of a memory
US20160048343A1 (en) * 2014-08-15 2016-02-18 Micron Technology, Inc. Apparatuses and methods for concurrently accessing different memory planes of a memory
JP2017527897A (ja) * 2014-08-15 2017-09-21 マイクロン テクノロジー, インク. メモリの異なるメモリプレーンに同時にアクセスするための装置および方法
US9558846B1 (en) * 2015-11-04 2017-01-31 Texas Instruments Incorporated Feedback validation of arbitrary non-volatile memory data
JP2018045747A (ja) * 2016-09-15 2018-03-22 東芝メモリ株式会社 半導体記憶装置

Also Published As

Publication number Publication date
KR102238957B1 (ko) 2021-04-13
KR20190115072A (ko) 2019-10-10
CN110447075A (zh) 2019-11-12
CN110447075B (zh) 2023-07-21
DE112018000842T5 (de) 2019-12-24

Similar Documents

Publication Publication Date Title
US10528255B2 (en) Interface for non-volatile memory
US10635526B2 (en) Multicore on-die memory microcontroller
US10528267B2 (en) Command queue for storage operations
TWI594182B (zh) 用於在共用記憶體通道上實施多位準記憶體階層之裝置及方法
US20180322085A1 (en) Memory device for a hierarchical memory architecture
KR101767359B1 (ko) 다이렉트 액세스를 갖는 다중-레벨 메모리
US10528286B2 (en) Interface for non-volatile memory
TWI752619B (zh) 存取儲存的元資料以識別儲存資料的記憶體裝置
US10372446B2 (en) Technology to dynamically modulate memory device read granularity
KR102238957B1 (ko) 멀티코어 온-다이 메모리 마이크로컨트롤러
US20190102287A1 (en) Remote persistent memory access device
WO2013028859A1 (en) Methods and systems for mapping a peripheral function onto a legacy memory interface
US9996280B2 (en) Data register copying for non-volatile storage array operations
US10725933B2 (en) Method and apparatus for redirecting memory access commands sent to unusable memory partitions
US20210286551A1 (en) Data access ordering for writing-to or reading-from memory devices
EP3926451A1 (en) Communication of data relocation information by storage device to host to improve system performance
CN116324744A (zh) 具有多个命令子队列和对应的仲裁器的存储器控制器
EP4202704A1 (en) Interleaving of heterogeneous memory targets
US11487548B2 (en) Dynamic re-evaluation of parameters for non-volatile memory using microcontroller
US11188474B2 (en) Balanced caching between a cache and a non-volatile memory based on rates corresponding to the cache and the non-volatile memory
KR20220150199A (ko) 최적화된 판독을 갖는 비휘발성 메모리

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190913

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200717

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200901

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20201201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210301

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210921

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220420