DE112018000842T5 - MORE NUCLEAR-ON-THE MEMORY MICROCONTROLLER - Google Patents

MORE NUCLEAR-ON-THE MEMORY MICROCONTROLLER Download PDF

Info

Publication number
DE112018000842T5
DE112018000842T5 DE112018000842.8T DE112018000842T DE112018000842T5 DE 112018000842 T5 DE112018000842 T5 DE 112018000842T5 DE 112018000842 T DE112018000842 T DE 112018000842T DE 112018000842 T5 DE112018000842 T5 DE 112018000842T5
Authority
DE
Germany
Prior art keywords
microcontroller
processing units
tasks
processing unit
operations
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
DE112018000842.8T
Other languages
German (de)
Inventor
Yibo Yin
Henry Zhang
Po-Shen Lai
Vijay Chinchole
Spyridon Georgakis
Yan Li
Hiroyuki Mizukoshi
Toru Miwa
Jayesh Pakhale
Tz-yi Liu
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 DE112018000842T5 publication Critical patent/DE112018000842T5/en
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

Vorrichtungen, Systeme, Verfahren und Computerprogrammprodukte werden für eine Mehrkern-On-Die-Speichersteuerung 150 offenbart. Eine integrierte Schaltungsvorrichtung 123, 212, 700 schließt ein Array von nichtflüchtigen Speicherzellen 200 und eine Mikrocontrollereinheit 150 ein. Eine Mikrocontrollereinheit 150 schließt eine Vielzahl von Verarbeitungseinheiten 302, 402, 404 ein. Verschiedene Verarbeitungseinheiten 302, 402, 404 führen verschiedene Kategorien von Aufgaben parallel für ein Array von nichtflüchtigen Speicherzellen 200 aus.Devices, systems, methods, and computer program products are disclosed for a multi-core on-die memory controller 150. An integrated circuit device 123, 212, 700 includes an array of non-volatile memory cells 200 and a microcontroller unit 150. A microcontroller unit 150 includes a plurality of processing units 302, 402, 404. Different processing units 302, 402, 404 perform different categories of tasks in parallel for an array of non-volatile memory cells 200.

Description

TECHNISCHES GEBIETTECHNICAL AREA

Die vorliegende Offenbarung bezieht sich in verschiedenen Ausführungsformen auf nichtflüchtigen und/oder flüchtigen Speicher und bezieht sich genauer auf einen On-Die-Speichermikrocontroller für nichtflüchtigen und/oder flüchtigen Speicher.The present disclosure relates to non-volatile and / or volatile memory in various embodiments, and more particularly relates to an on-die memory microcontroller for non-volatile and / or volatile memory.

HINTERGRUNDBACKGROUND

Eine Speichervorrichtung kann eine Zustandsmaschine aufweisen, die bestimmte Operationen der Speichervorrichtung steuert. Sobald die Zustandsmaschine jedoch das „Tapeout“ durchlaufen hat und sich in Produktion befindet, können, wenn überhaupt, minimale Änderungen vorgenommen werden, um Fehler oder Entwurfsfehler zu adressieren, wodurch die Entwicklungs- und Testflexibilität eingeschränkt wird, ohne dass der Entwurfszyklus deutlich verlängert wird.A storage device may include a state machine that controls certain operations of the storage device. However, once the state machine goes through the tapeout and is in production, minimal, if any, changes can be made to address bugs or design flaws, reducing development and test flexibility without significantly extending the design cycle.

KU RZDARSTELLU NGKU RZDARSTELLU NG

Vorrichtungen, Systeme, Verfahren und Computerprogrammprodukte werden für eine Mehrkern-On-Die-Speichersteuerung offenbart. In einer Ausführungsform schließt eine Vorrichtung ein Array von nichtflüchtigen Speicherzellen in einer integrierten Schaltungsvorrichtung ein. Eine Vorrichtung schließt in einer weiteren Ausführungsform eine Mikrocontrollereinheit in einer integrierten Schaltungsvorrichtung ein. In bestimmten Ausführungsformen schließt eine Vorrichtung eine Vielzahl von Verarbeitungseinheiten einer Mikrocontrollereinheit ein. Verschiedene Verarbeitungseinheiten führen in einigen Ausführungsformen verschiedene Kategorien von Aufgaben parallel für ein Array von nichtflüchtigen Speicherzellen aus.Devices, systems, methods, and computer program products are disclosed for multi-core on-die memory control. In one embodiment, a device includes an array of non-volatile memory cells in an integrated circuit device. In a further embodiment, a device includes a microcontroller unit in an integrated circuit device. In certain embodiments, a device includes a plurality of processing units of a microcontroller unit. Different processing units, in some embodiments, perform different categories of tasks in parallel for an array of non-volatile memory cells.

Ein System schließt in einer Ausführungsform eine integrierte Schaltungsvorrichtung einschließlich mehrerer Stufen ein, die jeweils eine oder mehrere Schichten aufweisen. Eine erste Stufe einer integrierten Schaltungsvorrichtung schließt in bestimmten Ausführungsformen ein nichtflüchtiges Speichermedium ein. In einer weiteren Ausführungsform ist eine zweite Stufe einer integrierten Schaltungsvorrichtung parallel zu und versetzt von einer ersten Stufe. Eine zweite Stufe einer integrierten Schaltungsvorrichtung schließt in einer Ausführungsform einen Mikrocontroller mit einer Vielzahl von Verarbeitungseinheiten ein. Verschiedene Verarbeitungseinheiten führen in verschiedenen Ausführungsformen verschiedene Arten von Aufgaben parallel für ein nichtflüchtiges Speichermedium aus.In one embodiment, a system includes an integrated circuit device including multiple stages, each having one or more layers. A first stage of an integrated circuit device includes a non-volatile storage medium in certain embodiments. In a further embodiment, a second stage of an integrated circuit device is parallel to and offset from a first stage. In one embodiment, a second stage of an integrated circuit device includes a microcontroller with a plurality of processing units. Different processing units perform different types of tasks in parallel for a non-volatile storage medium in different embodiments.

Eine andere Vorrichtung schließt in bestimmten Ausführungsformen Mittel zum Speichern von Daten ein. In einer Ausführungsform schließt eine Vorrichtung Mittel zum Sortieren von Aufgaben für ein Mittel zum Speichern von Daten nach Aufgabenkategorie ein. Eine Vorrichtung schließt in einigen Ausführungsformen Mittel zum parallelen Ausführen verschiedener Kategorien von Aufgaben für ein Mittel zum Speichern von Daten unter Verwendung verschiedener Verarbeitungseinheiten für die Mittel zum Speichern von Daten ein.Another device, in certain embodiments, includes means for storing data. In one embodiment, an apparatus includes task sorting means for means for storing data by task category. In some embodiments, an apparatus includes means for performing different categories of tasks in parallel for a means for storing data using different processing units for the means for storing data.

Ein Verfahren schließt in einer Ausführungsform das Empfangen einer Anforderung für eine Speicheroperation ein. In bestimmten Ausführungsformen schließt ein Verfahren das Bestimmen einer Vielzahl von Aufgaben zum Abschließen einer Speicheroperation ein. Verschiedene Aufgaben einer Vielzahl von Aufgaben sind in einer Ausführungsform mit verschiedenen Anweisungssätzen verknüpft. Ein Verfahren schließt in einigen Ausführungsformen das parallele Ausführen verschiedener Aufgaben einer Vielzahl von Aufgaben unter Verwendung verschiedener Verarbeitungseinheiten eines Mikrocontrollers ein. Verschiedene Verarbeitungseinheiten unterstützen in einer Ausführungsform verschiedene Anweisungssätze.In one embodiment, a method includes receiving a request for a store operation. In certain embodiments, a method includes determining a variety of tasks to complete a storage operation. Different tasks of a plurality of tasks are linked to different sets of instructions in one embodiment. In some embodiments, a method includes performing different tasks of a plurality of tasks in parallel using different processing units of a microcontroller. Different processing units support different sets of instructions in one embodiment.

Eine weitere Vorrichtung schließt in einigen Ausführungsformen einen Mikrocontroller für ein Speicherarray einer integrierten Schaltungsvorrichtung ein. Ein Mikrocontroller ist in einer Ausführungsform dazu eingerichtet, eine Vielzahl von Aufgaben für eine Speicheroperation unter Verwendung einer ersten Verarbeitungseinheit auszuwählen. Ein Mikrocontroller ist in einer weiteren Ausführungsform dazu eingerichtet, das Timing einer Vielzahl von Aufgaben für eine Speicheroperation unter Verwendung einer zweiten Verarbeitungseinheit zu steuern. In bestimmten Ausführungsformen ist ein Mikrocontroller dazu eingerichtet, Spannungen für eine Vielzahl von Aufgaben für eine Speicheroperation unter Verwendung einer dritten Verarbeitungseinheit einzustellen.Another device in some embodiments includes a microcontroller for a memory array of an integrated circuit device. In one embodiment, a microcontroller is set up to select a plurality of tasks for a memory operation using a first processing unit. In a further embodiment, a microcontroller is set up to control the timing of a multiplicity of tasks for a memory operation using a second processing unit. In certain embodiments, a microcontroller is configured to set voltages for a variety of tasks for a memory operation using a third processing unit.

Figurenlistelist of figures

Eine speziellere Beschreibung wird nachstehend unter Bezugnahme auf spezifische, in den beigefügten Zeichnungen veranschaulichte Ausführungsformen eingeschlossen. Angesichts dessen, dass diese Zeichnungen nur bestimmte Ausführungsformen der Offenlegung darstellen und deshalb nicht als ihren Umfang einschränkend betrachtet werden sollen, wird die Offenlegung mit zusätzlicher Spezifität und Detail durch die Verwendung der beigefügten Zeichnungen beschrieben und erläutert, in denen:

  • 1 ist ein schematisches Blockdiagramm, das eine Ausführungsform eines Systems für einen On-Die-Speichermikrocontroller veranschaulicht;
  • 2 ist ein schematisches Blockdiagramm, das eine andere Ausführungsform eines Systems für einen On-Die-Speichermikrocontroller veranschaulicht;
  • 3 ist ein schematisches Blockdiagramm, das eine Ausführungsform eines On-Die-Speichermikrocontrollers veranschaulicht;
  • 4 ist ein schematisches Blockdiagramm, das eine weitere Ausführungsform eines On-Die-Speichermikrocontrollers veranschaulicht;
  • 5 ist ein schematisches Blockdiagramm, das eine Ausführungsform eines Systems mit mehreren On-Die-Speichermikrocontroller-Kernen veranschaulicht;
  • 6 ist ein schematisches Blockdiagramm, das eine andere Ausführungsform eines Systems mit mehreren On-Die-Speichermikrocontroller-Kernen veranschaulicht;
  • 7 ist ein schematisches Blockdiagramm, das eine Ausführungsform einer integrierten Schaltungsvorrichtung mit einem On-Die-Speichermikrocontroller veranschaulicht;
  • 8 ist ein schematisches Flussdiagramm, das eine Ausführungsform eines Verfahrens für einen On-Die-Speichermikrocontroller veranschaulicht; und
  • 9 ist ein schematisches Flussdiagramm, das eine weitere Ausführungsform eines Verfahrens für einen On-Die-Speichermikrocontroller veranschaulicht.
A more specific description is included below with reference to specific embodiments illustrated in the accompanying drawings. Given that these drawings illustrate only certain embodiments of the disclosure and are therefore not to be considered limiting of the scope thereof, the disclosure is described and explained with additional specificity and detail through the use of the accompanying drawings, in which:
  • 1 10 is a schematic block diagram illustrating an embodiment of a system for an on-die memory microcontroller;
  • 2 Figure 3 is a schematic block diagram illustrating another embodiment of a system for an on-die memory microcontroller;
  • 3 10 is a schematic block diagram illustrating an embodiment of an on-die memory microcontroller;
  • 4 Fig. 4 is a schematic block diagram illustrating another embodiment of an on-die memory microcontroller;
  • 5 FIG. 12 is a schematic block diagram illustrating an embodiment of a system with multiple on-die memory microcontroller cores;
  • 6 FIG. 12 is a schematic block diagram illustrating another embodiment of a system with multiple on-die memory microcontroller cores;
  • 7 10 is a schematic block diagram illustrating an embodiment of an integrated circuit device with an on-die memory microcontroller;
  • 8th FIG. 12 is a schematic flow diagram illustrating one embodiment of a method for an on-die memory microcontroller; and
  • 9 FIG. 12 is a schematic flow diagram illustrating another embodiment of a method for an on-die memory microcontroller.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

Gesichtspunkte der vorliegenden Offenbarung können als eine Vorrichtung, ein System, ein Verfahren oder ein Computerprogramm ausgeführt sein. Folglich können Gesichtspunkte der vorliegenden Offenlegung die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (einschließlich Firmware, residente Software, Mikrocode, oder dergleichen) oder einer Software- und Hardwareaspekte kombinierenden Ausführungsform annehmen, die alle allgemein hierin als „Schaltkreis“, „Modul“, „Vorrichtung“ oder „System“ bezeichnet werden können. Weiterhin können Gesichtspunkte der vorliegenden Offenlegung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren nichtflüchtigen computerlesbaren Speichermedien verkörpert ist, die computerlesbaren und/oder ausführbaren Programmcode speichern.Aspects of the present disclosure may be embodied as an apparatus, system, method, or computer program. Accordingly, aspects of the present disclosure may take the form of a full hardware embodiment, a full software embodiment (including firmware, resident software, microcode, or the like), or a software and hardware aspect combining embodiment, all of which are generally referred to herein as "circuitry", "Module", "device" or "system" can be called. Furthermore, aspects of the present disclosure may take the form of a computer program product embodied in one or more non-volatile computer readable storage media that store computer readable and / or executable program code.

Viele der in dieser Patentschrift beschriebenen Funktionseinheiten wurden als Module bezeichnet, um ihre Implementierungsunabhängigkeit zusätzlich hervorzuheben. Zum Beispiel kann ein Modul als eine Hardwareschaltung implementiert sein, die kundenspezifische VLSI-Schaltungen oder Gate-Arrays, handelsübliche Halbleiter wie etwa Logikchips, Transistoren oder anderen diskrete Komponenten aufweist. Ein Modul kann auch in programmierbaren Hardwarevorrichtungen wie etwa feldprogrammierbaren Gate-Arrays, einer programmierbaren Array-Logik, programmierbaren Logikvorrichtungen oder dergleichen implementiert sein.Many of the functional units described in this patent were referred to as modules in order to additionally emphasize their independence from implementation. For example, a module can be implemented as a hardware circuit that includes custom VLSI circuits or gate arrays, commercially available semiconductors such as logic chips, transistors, or other discrete components. A module can also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices or the like.

Module können auch zumindest teilweise in Software zur Ausführung durch verschiedene Arten von Prozessoren implementiert sein. Ein identifiziertes Modul ausführbaren Codes kann beispielsweise einen oder mehrere physische oder logische Blöcke von Computeranweisungen aufweisen, die beispielsweise als ein Objekt, eine Prozedur oder eine Funktion organisiert sein können. Nichtsdestotrotz müssen die ausführbaren Programme eines identifizierten Moduls nicht physisch zusammen angeordnet sein, sondern können unterschiedliche Anweisungen aufweisen, die an verschiedenen Orten gespeichert sind, die, wenn sie logisch miteinander verbunden sind, das Modul aufweisen und den angegebenen Zweck für das Modul erfüllen.Modules can also be implemented, at least in part, in software for execution by various types of processors. For example, an identified executable code module may include one or more physical or logical blocks of computer instructions that may be organized, for example, as an object, procedure, or function. Nevertheless, the executable programs of an identified module do not have to be physically arranged together, but can have different instructions stored in different locations which, when logically connected, have the module and serve the stated purpose for the module.

Infolgedessen kann ein Modul ausführbaren Codes eine einzelne Anweisung oder viele Anweisungen einschließen und kann sogar über mehrere unterschiedliche Codesegmente, in verschiedenen Programmen, über mehrere Speichervorrichtungen oder dergleichen verteilt sein. Wo ein Modul oder Teile eines Moduls in Software implementiert sind, können die Softwareteile auf einem oder mehreren computerlesbaren und/oder ausführbaren Speichermedien gespeichert sein. Jede Kombination von einem oder mehreren computerlesbaren Speichermedien kann verwendet werden. Ein computerlesbares Speichermedium kann beispielsweise, ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine Vorrichtung oder ein Gerät oder irgendeine geeignete Kombination der vorstehenden sein, würde aber keine sich ausbreitenden Signale einschließen. Im Kontext dieses Dokuments kann ein computerlesbares und/oder ausführbares Speichermedium jedes konkrete und/oder nichtflüchtige Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem Befehlsausführungssystem, einer Vorrichtung, einem Prozessor oder einem Gerät enthalten oder speichern kann.As a result, a module of executable codes can include a single instruction or many instructions, and can even be distributed over several different code segments, in different programs, over several storage devices or the like. Where a module or parts of a module are implemented in software, the software parts can be stored on one or more computer-readable and / or executable storage media. Any combination of one or more computer readable storage media can be used. For example, but not limited to, a computer readable storage medium may be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus or device, or any suitable combination of the foregoing, but would not include propagating signals. In the context of this document, a computer readable and / or executable storage medium may be any concrete and / or non-volatile medium that can contain or store a program for use by or in connection with an instruction execution system, device, processor, or device.

Computerprogrammcode zur Durchführung von Operationen für Gesichtspunkte der vorliegenden Offenlegung kann in einer beliebigen Kombination von einer oder mehreren Programmiersprachen geschrieben werden, einschließlich einer objektorientierten Programmiersprache wie etwa Python, Java, Smalltalk, C++, C#, Objektiv C oder dergleichen, herkömmlicher prozeduraler Programmiersprachen wie die Programmiersprache „C“, Skript-Programmiersprachen und/oder anderer ähnlicher Programmiersprachen. Der Programmcode kann teilweise oder vollständig auf einem oder mehreren Computern eines Benutzers und/oder auf einem entfernten Computer oder Server über ein Datennetz oder dergleichen ausgeführt werden.Computer program code for performing operations for aspects of the present disclosure can be written in any combination of one or more programming languages, including an object-oriented programming language such as Python, Java, Smalltalk, C ++, C #, Objective C, or the like, conventional procedural programming languages such as the programming language "C", script Programming languages and / or other similar programming languages. The program code can be executed partially or completely on one or more computers of a user and / or on a remote computer or server via a data network or the like.

Eine Komponente, wie sie hierin verwendet wird, weist eine konkrete, physische, nichtflüchtige Vorrichtung auf. Zum Beispiel kann eine Komponente als eine Hardware-Logikschaltung implementiert sein, die kundenspezifische VLSI-Schaltungen, Gate-Arrays oder andere integrierte Schaltungen aufweist; handelsübliche Halbleiter, wie etwa Logikchips, Transistoren oder andere diskrete Vorrichtungen; und/oder andere mechanische oder elektrische Vorrichtungen. Eine Komponente kann auch in programmierbaren Hardwarevorrichtungen wie etwa feldprogrammierbaren Gate-Arrays, einer programmierbaren Array-Logik, programmierbaren Logikvorrichtungen oder dergleichen implementiert sein. Eine Komponente kann eine oder mehrere siliziumbasierte integrierte Schaltungsvorrichtungen (z. B. Chips, Dies, Die-Ebenen, Pakete) oder andere diskrete elektrische Vorrichtungen in elektrischer Verbindung mit einer oder mehreren anderen Komponenten über elektrische Leitungen einer Schaltungsplatine (PCB) oder dergleichen aufweisen. Jedes der hierin beschriebenen Module kann in bestimmten Ausführungsformen alternativ durch eine Komponente verkörpert oder implementiert sein.A component as used herein has a concrete, physical, non-volatile device. For example, a component can be implemented as a hardware logic circuit that includes custom VLSI circuits, gate arrays, or other integrated circuits; commercially available semiconductors such as logic chips, transistors or other discrete devices; and / or other mechanical or electrical devices. A component can also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices or the like. A component may include one or more silicon-based integrated circuit devices (e.g., chips, dies, die levels, packets) or other discrete electrical devices in electrical communication with one or more other components via electrical circuit board (PCB) lines or the like. Each of the modules described herein may alternatively be embodied or implemented by a component in certain embodiments.

Eine Schaltung, wie hierin verwendet, weist einen Satz von einer oder mehreren elektrischen und/oder elektronischen Komponenten auf, die einen oder mehrere Wege für elektrischen Strom bereitstellen. In bestimmten Ausführungsformen kann eine Schaltung einen Rückführweg für elektrischen Strom einschließen, sodass die Schaltung eine geschlossene Schleife ist. In einer anderen Ausführungsform kann jedoch ein Satz von Komponenten, der keinen Rückführweg für elektrischen Strom einschließt, als eine Schaltung (z. B. eine offene Schleife) bezeichnet werden. Zum Beispiel kann eine integrierte Schaltung unabhängig davon als eine Schaltung bezeichnet werden, ob die integrierte Schaltung an Masse gekoppelt ist (als Rückführweg für elektrischen Strom) oder nicht. In verschiedenen Ausführungsformen kann eine Schaltung einen Abschnitt einer integrierten Schaltung, eine integrierte Schaltung, einen Satz von integrierten Schaltungen, einen Satz von nicht integrierten elektrischen und/oder elektrischen Komponenten mit oder ohne Vorrichtungen mit integrierter Schaltung oder dergleichen einschließen. In einer Ausführungsform kann eine Schaltung individuelle VLSI-Schaltungen, Gate-Arrays, Logikschaltungen oder andere integrierte Schaltungen; handelsübliche Halbleiter, wie etwa Logikchips, Transistoren oder andere diskrete Vorrichtungen; und/oder andere mechanische oder elektrische Vorrichtungen. Eine Schaltung kann auch als eine synthetisierte Schaltung in einer programmierbaren Hardwarevorrichtung, wie etwa einem feldprogrammierbaren Gate-Array, einer programmierbaren Array-Logik, einer programmierbaren Logikvorrichtung oder dergleichen (z. B. als Firmware, Netzliste oder dergleichen) implementiert sein. Eine Schaltung kann eine oder mehrere integrierte Schaltungsvorrichtungen auf Siliziumbasis (z. B. Chips, Dies, Die-Ebenen, Pakete) oder andere diskrete elektrische Vorrichtungen aufweisen, die mit einer oder mehreren anderen Komponenten über elektrische Leitungen einer Schaltungsplatine (PCB) oder dergleichen elektrisch verbunden sind. Jedes der hier beschriebenen Module kann in bestimmten Ausführungsformen durch eine Schaltung verkörpert oder implementiert sein.A circuit as used herein comprises a set of one or more electrical and / or electronic components that provide one or more paths for electrical power. In certain embodiments, a circuit may include an electrical return path so that the circuit is a closed loop. However, in another embodiment, a set of components that does not include an electrical return path may be referred to as a circuit (e.g., an open loop). For example, an integrated circuit can be referred to as a circuit regardless of whether the integrated circuit is coupled to ground (as a return path for electrical current) or not. In various embodiments, a circuit may include a portion of an integrated circuit, an integrated circuit, a set of integrated circuits, a set of non-integrated electrical and / or electrical components with or without integrated circuit devices, or the like. In one embodiment, a circuit may include individual VLSI circuits, gate arrays, logic circuits, or other integrated circuits; commercially available semiconductors such as logic chips, transistors or other discrete devices; and / or other mechanical or electrical devices. A circuit may also be implemented as a synthesized circuit in a programmable hardware device, such as a field programmable gate array, programmable array logic, programmable logic device, or the like (e.g., as firmware, netlist, or the like). A circuit may include one or more silicon-based integrated circuit devices (e.g., chips, dies, die levels, packets) or other discrete electrical devices that are electrically connected to one or more other components via electrical wiring of a circuit board (PCB) or the like are connected. Each of the modules described herein can be embodied or implemented by circuitry in certain embodiments.

Die Bezugnahme auf „eine Ausführungsform“, „Ausführungsform“ oder ein ähnlicher Sprachgebrauch in dieser Patentschrift bedeutet, dass ein bestimmtes Merkmal, eine spezielle Struktur oder Charakteristik, die in Verbindung mit der Ausführungsform beschrieben ist, in mindestens einer Ausführungsform der vorliegenden Offenlegung eingeschlossen ist. Daher können die Ausdrücke „in einer Ausführungsform“, „in der Ausführungsform“ und ähnlich gelagerter Sprachgebrauch in dieser Beschreibung, wo sie vorkommen, sich nicht notwendigerweise alle auf dieselbe Ausführungsform beziehen, sondern „eine oder mehrere, aber nicht alle Ausführungsformen“ bedeuten, sofern nicht ausdrücklich etwas anderes angegeben ist. Die Begriffe „einschließlich“, „aufweisend“, „besitzend“ und Variationen dessen bedeuten „einschließlich aber nicht darauf beschränkt“, sofern nicht ausdrücklich etwas anderes angegeben ist. Eine aufzählende Auflistung von Elementen impliziert nicht, dass sich irgendeines oder alle der Elemente gegenseitig ausschließen und/oder gegenseitig einschließen, sofern nicht ausdrücklich etwas anderes angegeben ist. Die Begriffe „ein/e/s“, und „der/die/das“ beziehen sich auch auf „eines oder mehrere“, sofern nicht ausdrücklich etwas anderes angegeben ist.Reference to "an embodiment", "embodiment", or similar usage in this specification means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present disclosure. Therefore, the terms "in one embodiment," "in the embodiment," and similarly used language in this description, where they occur, may not necessarily all refer to the same embodiment, but may mean "one or more, but not all, embodiments" if so not expressly stated otherwise. The terms "including", "exhibiting", "possessing" and variations thereof mean "including but not limited to" unless expressly stated otherwise. An enumerating list of elements does not imply that any or all of the elements are mutually exclusive and / or mutually exclusive, unless expressly stated otherwise. The terms "a" and "the" refer to "one or more" unless expressly stated otherwise.

Gesichtspunkte der vorliegenden Offenlegung werden unten unter Bezugnahme auf schematische Flussdiagramme und/oder schematische Blockdiagramme von Verfahren, Vorrichtungen, Systemen und Computerprogrammprodukten gemäß Ausführungsformen der Offenlegung beschrieben. Es versteht sich, dass jeder Block der schematischen Flussdiagramme und/oder schematischen Blockdiagramme und Kombinationen von Blöcken in den schematischen Flussdiagrammen und/oder schematischen Blockdiagrammen durch Computerprogrammanweisungen implementiert werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Computers oder einer anderen programmierbaren Rechenvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Anweisungen, die über den Prozessor oder eine andere programmierbare Rechenvorrichtung ausgeführt werden, Mittel zum Implementieren der Funktionen und/oder Schritte erzeugen, die in den schematischen Flussdiagrammen und/oder schematischen Blockdiagrammen Block oder Blöcken spezifiziert sind.Aspects of the present disclosure are described below with reference to schematic flow diagrams and / or schematic block diagrams of methods, devices, systems and computer program products according to embodiments of the disclosure. It is understood that each block of the schematic flow diagrams and / or schematic block diagrams and combinations of blocks in the schematic flow diagrams and / or schematic block diagrams can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a computer or other programmable computing device to generate a machine so that the Instructions executed by the processor or other programmable computing device generate means for implementing the functions and / or steps specified in the schematic flow diagrams and / or schematic block diagrams block or blocks.

Es sollte auch beachtet werden, dass in einigen alternativen Implementierungen die in dem Block angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, abhängig von der involvierten Funktionalität. Andere Schritte und Verfahren, die in Funktion, Logik oder Wirkung äquivalent zu einem oder mehreren Blöcken oder Teilen davon der dargestellten Figuren sind, können konzipiert werden. Obwohl verschiedene Pfeilarten und Linienarten in dem Flussdiagramm und/oder den Blockdiagrammen verwendet werden können, sind sie so zu verstehen, dass sie den Umfang der entsprechenden Ausführungsformen nicht einschränken. Zum Beispiel kann ein Pfeil eine Wartungs- oder Überwachungsperiode einer nicht spezifizierten Dauer zwischen aufgezählten Schritten der dargestellten Ausführungsform angeben.It should also be noted that in some alternative implementations, the functions specified in the block may occur out of the order shown in the figures. For example, two blocks shown in sequence may actually be executed substantially simultaneously, or the blocks may sometimes be executed in the reverse order, depending on the functionality involved. Other steps and methods that are equivalent in function, logic or effect to one or more blocks or parts thereof of the figures shown can be conceived. Although various types of arrows and lines can be used in the flowchart and / or the block diagrams, they are to be understood that they do not limit the scope of the corresponding embodiments. For example, an arrow may indicate a maintenance or monitoring period of an unspecified duration between enumerated steps in the illustrated embodiment.

In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil davon bilden. Die vorhergehende Zusammenfassung ist nur veranschaulichend und soll in keiner Weise einschränkend sein. Zusätzlich zu den oben beschriebenen veranschaulichenden Gesichtspunkten, Ausführungsformen und Merkmalen werden weitere Gesichtspunkte, Ausführungsformen und Merkmale unter Bezugnahme auf die Zeichnungen und die folgende ausführliche Beschreibung deutlich. Die Beschreibung von Elementen in jeder Figur kann sich auf Elemente von fortlaufenden Figuren beziehen. Gleiche Bezugszeichen können sich auf gleiche Elemente in den Figuren beziehen, einschließlich alternativer Ausführungsformen gleicher Elemente.In the following detailed description, reference is made to the accompanying drawings, which form a part hereof. The previous summary is illustrative only and is not intended to be limiting in any way. In addition to the illustrative aspects, embodiments and features described above, other aspects, embodiments and features will become apparent with reference to the drawings and the following detailed description. The description of elements in each figure can refer to elements of continuous figures. Like reference numerals may refer to like elements in the figures, including alternative embodiments of like elements.

1 ist ein Blockdiagramm einer Ausführungsform eines Systems 100 für einen On-Die-Speichermikrocontroller 150. Das System 100 weist einen oder mehrere Mikrocontroller 150 für Speichermedien 122 einer nichtflüchtigen und/oder flüchtigen Speichervorrichtung 120 auf. Ein Mikrocontroller 150 kann Teil eines nichtflüchtigen und/oder flüchtigen Speicherelements 123 sein und kann in Kommunikation mit einer Steuerung 126 nichtflüchtiger und/oder flüchtiger Speichermedien, einem Vorrichtungstreiber oder dergleichen sein. In einigen Ausführungsformen kann ein Mikrocontroller 150 mindestens teilweise auf und/oder in Kommunikation mit einem nichtflüchtigen und/oder flüchtigen Speichersystem 102 einer Rechenvorrichtung 110 arbeiten, die einen Prozessor 111, flüchtigen Speicher 112 und eine Kommunikationsschnittstelle 113 aufweisen kann. Der Prozessor 111 kann eine oder mehrere zentrale Verarbeitungseinheiten, einen oder mehrere Universalprozessoren, einen oder mehrere anwendungsspezifische Prozessoren, einen oder mehrere virtuelle Prozessoren (z. B. kann die Rechenvorrichtung 110 eine virtuelle Maschine sein, die in einem Host arbeitet), einen oder mehrere Prozessorkerne oder dergleichen aufweisen. Die Kommunikationsschnittstelle 113 kann eine oder mehrere Netzwerkschnittstellen aufweisen, die dazu eingerichtet sind, die Rechenvorrichtung 110 und/oder die Speichersteuerung 126 kommunikativ mit einem Kommunikationsnetzwerk 115, wie etwa einem Internetprotokoll-(IP-)Netzwerk, einem Speicherbereichsnetzwerk (Storage Area Network, SAN), einem drahtlosen Netzwerk, einem drahtgebundenen Netzwerk oder dergleichen, zu koppeln. 1 Figure 3 is a block diagram of one embodiment of a system 100 for an on-die memory microcontroller 150 , The system 100 has one or more microcontrollers 150 for storage media 122 a non-volatile and / or volatile storage device 120 on. A microcontroller 150 may be part of a non-volatile and / or volatile memory element 123 and can be in communication with a controller 126 non-volatile and / or volatile storage media, a device driver or the like. In some embodiments, a microcontroller 150 at least partially on and / or in communication with a non-volatile and / or volatile storage system 102 a computing device 110 work that a processor 111 , volatile memory 112 and a communication interface 113 can have. The processor 111 can be one or more central processing units, one or more universal processors, one or more application-specific processors, one or more virtual processors (e.g. the computing device 110 a virtual machine operating in a host), one or more processor cores, or the like. The communication interface 113 may have one or more network interfaces that are configured to the computing device 110 and / or memory control 126 communicative with a communication network 115 , such as an Internet Protocol (IP) network, a storage area network (SAN), a wireless network, a wired network, or the like.

Ein Mikrocontroller 150, wie hierin verwendet, weist eine oder mehrere Schaltungen oder andere logische Hardware einer integrierten Schaltungsvorrichtung, wie etwa ein Die und/oder einen Chip 123 von Speichermedien 122 (z. B. ein Speicherelement 123 oder eine andere integrierte Schaltungsvorrichtung), auf. Beispielsweise kann in einer Ausführungsform ein Mikrocontroller 150 synthetisierbare Logik (z.B. definiert in einer Hardwarebeschreibungssprache wie etwa Verilog, VHSIC-Hardwarebeschreibungssprache (VHDL) oder dergleichen; eine Netzliste auf Gate-Ebene; einen Softcore; und/oder eine andere logische Struktur), die auf einer programmierbaren Logikvorrichtung wie etwa einem feldprogrammierbaren Gate-Array (FPGA), hergestellt als eine Vorrichtung mit anwendungsspezifischer integrierter Schaltung (Application Specific Integrated Circuit, ASIC), platziert ist und/oder darauf geleitet wird; und/oder eine andere integrierte Schaltungsvorrichtung 123 aufweisen. In einer weiteren Ausführungsform kann ein Mikrocontroller 150 Analog- und/oder Mischsignal-Logik aufweisen (z. B. definiert und/oder entworfen in einem Transistoranordnungsformat, einem ASIC, diskreten Logikkomponenten, einem Hardcore und/oder einer anderen integrierten Schaltungsvorrichtung 123).A microcontroller 150 As used herein, one or more circuitry or other logic hardware includes an integrated circuit device, such as a die and / or a chip 123 of storage media 122 (e.g. a storage element 123 or another integrated circuit device). For example, in one embodiment, a microcontroller 150 synthesizable logic (e.g., defined in a hardware description language such as Verilog, VHSIC hardware description language (VHDL) or the like; a gate level network list; a softcore; and / or other logical structure) based on a programmable logic device such as a field programmable gate - Array (FPGA), manufactured as an Application Specific Integrated Circuit (ASIC), is placed and / or routed thereon; and / or another integrated circuit device 123 exhibit. In a further embodiment, a microcontroller 150 Analog and / or mixed signal logic (e.g., defined and / or designed in a transistor array format, an ASIC, discrete logic components, a hardcore and / or other integrated circuit device 123 ).

Ein Mikrocontroller 150 kann eine oder mehrere Aufgaben für ein Speicherelement 123 von Speichermedien 122, wie etwa Verwaltungsfunktionen oder dergleichen, ausführen und/oder steuern. Ein Mikrocontroller 150 kann eine bzw. einen oder mehrere Verarbeitungseinheiten, Verarbeitungskerne oder dergleichen aufweisen, die Mikrocode oder anderen computerausführbaren Code (z. B. einen Anweisungssatz) verarbeiten und/oder ausführen, um Aufgaben oder Operationen auszuführen. Auf diese Weise können anstelle oder zusätzlich zu der Herstellung einer neuen integrierten Schaltungsvorrichtung oder der Aktualisierung von Firmware eine oder mehrere Funktionen und/oder Aufgaben eines Mikrocontrollers 150 durch Ändern und/oder Aktualisieren von Mikrocode oder anderem computerausführbarem Code des Mikrocontrollers 150 aktualisiert werden. Ein Mikrocontroller 150 kann flüchtigen bzw. flüchtige und/oder nichtflüchtigen bzw. nichtflüchtige Speicher oder Speicherung aufweisen, die der Mikrocontroller 150 verwenden kann, um Mikrocode zu speichern, um Daten für ein und/oder aus einem Array von Speichermedien 122 zu speichern, um Einstellungen und/oder Konfigurationsparameter zu speichern oder dergleichen.A microcontroller 150 can do one or more tasks for a storage element 123 of storage media 122 , such as management functions or the like, perform and / or control. A microcontroller 150 may include one or more processing units, processing cores, or the like that process and / or execute microcode or other computer-executable code (e.g., a set of instructions) to perform tasks or operations. In this way, instead of or in addition to making a new integrated Circuit device or updating firmware one or more functions and / or tasks of a microcontroller 150 by changing and / or updating microcode or other computer-executable code of the microcontroller 150 be updated. A microcontroller 150 can have volatile or volatile and / or non-volatile or non-volatile memory or storage that the microcontroller 150 Can use microcode to store data for and / or from an array of storage media 122 save to save settings and / or configuration parameters or the like.

In bestimmten Ausführungsformen können die Speichervorrichtung 120 und/oder die Speicherelemente 123 in einer Reihe von Anwendungen und/oder Umgebungen verwendet werden. Um bei verschiedenen Temperaturen und anderen Umgebungsbedingungen richtig zu funktionieren, kann eine Taktrate eines Mikrocontrollers 150 und/oder eines Speicherelements 123 künstlich niedrig eingestellt werden, um Stabilität, Zuverlässigkeit oder dergleichen in einem breiten Bereich von Betriebsbedingungen zu verbessern. Beispielsweise kann in verschiedenen Ausführungsformen eine Taktrate für einen Mikrocontroller 150 auf weniger als etwa 50 MHz, weniger als etwa 40 MHz, weniger als etwa 30 MHz, weniger als etwa 20 MHz, weniger als etwa 15 MHz, etwa 14 MHz, etwa 13,5 MHz, etwa 13 MHz, etwa 12,5 MHz, etwa 12 MHz, weniger als etwa 12 MHz oder dergleichen eingestellt werden.In certain embodiments, the storage device 120 and / or the storage elements 123 can be used in a number of applications and / or environments. In order to function properly at different temperatures and other environmental conditions, a clock rate of a microcontroller can 150 and / or a storage element 123 artificially set low to improve stability, reliability or the like in a wide range of operating conditions. For example, in various embodiments, a clock rate for a microcontroller 150 to less than about 50 MHz, less than about 40 MHz, less than about 30 MHz, less than about 20 MHz, less than about 15 MHz, about 14 MHz, about 13.5 MHz, about 13 MHz, about 12.5 MHz , about 12 MHz, less than about 12 MHz, or the like.

Jedoch kann eine solche niedrige Taktrate für einen Mikrocontroller 150 in bestimmten Ausführungsformen niedriger eingestellt werden als eine Taktrate, mit welcher der Mikrocontroller 150 Datenoperationen für die Speichermedien 122 unter Verwendung einer einzigen Verarbeitungseinheit ausführen kann, ohne eine Latenz der Datenoperationen zu erhöhen (z. B. ist möglicherweise eine einzige Verarbeitungseinheit oder ein einziger Verarbeitungskern bei der Taktrate oder -frequenz nicht schnell genug, um Daten aus dem nichtflüchtigen Speichermedium 123 zu lesen und/oder darin zu schreiben, ohne die Lese- und/oder Schreiboperationen zu verlangsamen, wodurch der Mikrocontroller 150 zu einem Engpass wird, oder dergleichen). Ein Mikrocontroller 150 kann in einer Ausführungsform eine Vielzahl von Verarbeitungseinheiten und/oder -kernen einschließen, damit verknüpft sein und/oder Zugriff darauf haben, die verschiedene Kategorien und/oder Teile von Aufgaben für ein Array von Speichermedien 122 parallel ausführen (z. B. um eine Wirkung einer langsamen Mikrocontroller-Taktrate auf die Zugriffslatenz für die Speichermedien 122 zu reduzieren und/oder zu eliminieren oder dergleichen).However, such a low clock rate can be a microcontroller 150 in certain embodiments are set lower than a clock rate at which the microcontroller 150 Data operations for the storage media 122 using a single processing unit without increasing latency of data operations (e.g., a single processing unit or processing core may not be fast enough in clock speed or frequency to extract data from the non-volatile storage medium 123 to read and / or write to it without slowing down the read and / or write operations, thereby causing the microcontroller 150 becomes a bottleneck, or the like). A microcontroller 150 may, in one embodiment, include, be associated with, and / or have access to, a plurality of processing units and / or cores that have different categories and / or parts of tasks for an array of storage media 122 run in parallel (e.g. to an effect of a slow microcontroller clock rate on the access latency for the storage media 122 to reduce and / or eliminate or the like).

Eine Verarbeitungseinheit, wie hierin verwendet, weist einen Unterblock und/oder eine Unterkomponente auf, der bzw. die mit einem oder mehreren Mikrocontrollern 150 verknüpft und in der Lage ist, einen bzw. eine oder mehrere Befehle und/oder Anweisungen (z. B. Mikrocode, einen Anweisungssatz oder dergleichen) auszuführen und/oder zu verarbeiten. Eine Verarbeitungseinheit kann Teil eines Mikrocontrollers 150 sein, kann von mehreren Mikrocontrollern 150 gemeinsam genutzt werden oder dergleichen. Eine Verarbeitungseinheit kann einen Verarbeitungskern, einen Softcore, einen Hardcore, synthetisierbare Logik, Analog- und/oder Mischsignal-Logik, eine Ausführungseinheit, ein Modul, eine Unterkomponente und/oder einen anderen Teil eines Mikrocontrollers 150 mit der Fähigkeit zur Ausführung einer Anweisung aufweisen. In einer Ausführungsform können verschiedene Verarbeitungseinheiten getrennte logische und/oder physische Schnittstellen (z. B. Busse, Steuerleitungen, Adressen und/oder Adressräume oder dergleichen) aufweisen, um Befehle und/oder Anweisungen unabhängig zu empfangen. In anderen Ausführungsformen können verschiedene Verarbeitungseinheiten eine logische und/oder physische Schnittstelle gemeinsam nutzen und können empfangene Befehle und/oder Anweisungen nach Kategorie, Befehlstyp, Anweisungssatz, Flag, Identifikator oder dergleichen dynamisch unterscheiden.A processing unit, as used herein, has a sub-block and / or a sub-component that is associated with one or more microcontrollers 150 linked and capable of executing and / or processing one or more commands and / or instructions (e.g. microcode, an instruction set or the like). A processing unit can be part of a microcontroller 150 can be from multiple microcontrollers 150 shared or the like. A processing unit can be a processing core, a soft core, a hardcore, synthesizable logic, analog and / or mixed signal logic, an execution unit, a module, a sub-component and / or another part of a microcontroller 150 with the ability to execute an instruction. In one embodiment, different processing units may have separate logical and / or physical interfaces (e.g. buses, control lines, addresses and / or address spaces or the like) to receive commands and / or instructions independently. In other embodiments, different processing units can share a logical and / or physical interface and can dynamically differentiate received commands and / or instructions by category, command type, instruction set, flag, identifier or the like.

Verschiedene Verarbeitungseinheiten und/oder -kerne eines Mikrocontrollers 150 können verschiedene Anweisungssätze (z. B. verschiedene Mikrocodebefehle und/oder -anweisungen) basierend auf den Kategorien und/oder Arten von Aufgaben, die den verschiedenen Verarbeitungseinheiten und/oder -kernen zugewiesen sind, unterstützen. Ein Anweisungssatz für eine Verarbeitungseinheit, wie hierin verwendet, kann einen bzw. eine oder mehrere Befehle und/oder Anweisungen aufweisen, die von der Verarbeitungseinheit unterstützt werden und/oder damit kompatibel sind. In verschiedenen Ausführungsformen kann ein Anweisungssatz eine oder mehrere Mikrocodeanweisungen, Assemblercodeanweisungen, Maschinenanweisungen, Speicheranweisungen, Vorrichtungsanweisungen, Steuer- und/oder Verwaltungsanweisungen oder dergleichen einschließen und/oder unterstützen.Different processing units and / or cores of a microcontroller 150 can support different instruction sets (e.g., different microcode instructions and / or instructions) based on the categories and / or types of tasks assigned to the different processing units and / or cores. An instruction set for a processing unit, as used herein, may include one or more commands and / or instructions that are supported and / or compatible with the processing unit. In various embodiments, an instruction set may include and / or support one or more microcode instructions, assembly code instructions, machine instructions, memory instructions, device instructions, control and / or management instructions, or the like.

In einer Ausführungsform können eine oder mehrere Verarbeitungseinheiten eine Flusssteuerkategorie von Aufgaben (z. B. einen Flusssteuerungs-Anweisungssatz) ausführen. Eine oder mehrere Verarbeitungseinheiten können in bestimmten Ausführungsformen eine Zeitsteuerkategorie von Aufgaben (z. B. einen Zeitsteuerungs-Anweisungssatz) ausführen. Eine oder mehrere Verarbeitungseinheiten können in einer weiteren Ausführungsform eine Datenlatchsteuerkategorie von Aufgaben (z. B. einen Datenlatchsteuerungs-Anweisungssatz) ausführen. In einer Ausführungsform können eine oder mehrere Verarbeitungseinheiten eine Spannungssteuerkategorie von Aufgaben (z. B. einen Spannungssteuerungs-Anweisungssatz) ausführen. Eine oder mehrere Verarbeitungseinheiten können in bestimmten Ausführungsformen eine Aufgabenkategorie für eingebauten Selbsttest (Built-In Self-Test, BIST) ausführen (z. B. einen Selbsttestanweisungssatz). In einer Ausführungsform können eine oder mehrere Verarbeitungseinheiten eine oder mehrere andere Arten und/oder Kategorien von Aufgaben, Anweisungssätzen oder dergleichen ausführen. Zwei Anweisungssätze können in bestimmten Ausführungsformen als Reaktion darauf unterschiedlich sein, dass mindestens eine Anweisung und/oder ein Befehl, die bzw. der in einem Anweisungssatz eingeschlossen ist, nicht in einem anderen Anweisungssatz eingeschlossen ist. Ein Mikrocontroller 150 weist in einer Ausführungsform auf und/oder unterstützt einen Anweisungssatz, der eine kombinierte Summe und/oder Gesamtmenge der verschiedenen Anweisungssätze aufweist, die von den Verarbeitungseinheiten unterstützt werden, die mit dem Mikrocontroller 150 verknüpft und/oder dafür verfügbar sind.In one embodiment, one or more processing units can be one Execute a flow control category of tasks (for example, a flow control instruction set). One or more processing units may, in certain embodiments, execute a timing category of tasks (e.g., a timing instruction set). In another embodiment, one or more processing units can execute a data latch control category of tasks (e.g., a data latch control instruction set). In one embodiment, one or more processing units can perform a voltage control category of tasks (e.g., a voltage control instruction set). In certain embodiments, one or more processing units may execute a built-in self-test (BIST) task category (e.g., a self-test instruction set). In one embodiment, one or more processing units can perform one or more other types and / or categories of tasks, instruction sets, or the like. Two instruction sets may be different in certain embodiments in response to at least one instruction and / or command included in one instruction set not being included in another instruction set. A microcontroller 150 In one embodiment, comprises and / or supports an instruction set that has a combined sum and / or total of the different instruction sets that are supported by the processing units that operate with the microcontroller 150 linked and / or available for it.

In einer Ausführungsform kann ein Mikrocontroller 150 an oder hin zu einem Rand und/oder Umfang eines Speicherelements 123, benachbart zu und/oder neben einem Array von Speichermedien 122, angeordnet sein (z.B. wie in 2 dargestellt). In einer weiteren Ausführungsform kann ein Mikrocontroller 150 auf einer anderen Stufe, Schicht und/oder Ebene einer integrierten Schaltungsvorrichtung 123 als ein Array von Speichermedien 122 angeordnet sein (z. B als CMOS oder eine andere Schaltung unter dem Array, parallel zu und versetzt von dem Array oder dergleichen). Das Ausbilden und/oder Platzieren eines Mikrocontrollers 150 auf einer anderen Stufe einer integrierten Schaltungsvorrichtung 123 als ein Array von Speichermedien 122 kann in bestimmten Ausführungsformen Raum der integrierten Schaltungsvorrichtung 123 sparen, wodurch mehr Schaltungen (z. B. mehr oder größere Mikrocontroller 150 und/oder Mikrocontrollerkerne 150, Verarbeitungseinheiten, eine größeres Array von Speichermedien 122 oder dergleichen), eine kleinere integrierte Schaltungsvorrichtung 123 oder dergleichen ermöglicht werden. In bestimmten Ausführungsformen können z. B. Silizium-Durchkontaktierungen (Through-Silicon Vias, TSV) zwischen verschiedenen Stufen einer integrierten Schaltungsvorrichtung 123 elektrische Verbindungen zwischen einem oder mehreren Mikrocontrollern 150 und einem Array von Speichermedien 122 bereitstellen.In one embodiment, a microcontroller 150 on or towards an edge and / or circumference of a storage element 123 , adjacent to and / or next to an array of storage media 122 , be arranged (e.g. as in 2 ) Shown. In a further embodiment, a microcontroller 150 at another level, layer and / or level of an integrated circuit device 123 as an array of storage media 122 be arranged (e.g. as CMOS or another circuit under the array, in parallel with and offset from the array or the like). Forming and / or placing a microcontroller 150 at another stage of an integrated circuit device 123 as an array of storage media 122 may, in certain embodiments, space the integrated circuit device 123 save, resulting in more circuits (e.g. more or larger microcontrollers 150 and / or microcontroller cores 150 , Processing units, a larger array of storage media 122 or the like), a smaller integrated circuit device 123 or the like. In certain embodiments, e.g. B. silicon vias (TSV) between different stages of an integrated circuit device 123 electrical connections between one or more microcontrollers 150 and an array of storage media 122 provide.

In bestimmten Ausführungsformen kann eine integrierte Schaltungsvorrichtung 123 einen oder mehrere zusätzliche Mikrocontroller 150, Mikrocontrollerkerne 150 oder dergleichen aufweisen. Verschiedene Mikrocontroller 150 und/oder Mikrocontrollerkerne 150 können auf der gleichen Stufe und/oder Schicht zueinander (z. B. einer anderen Stufe und/oder Schicht als ein Speicherarray, parallel zu und versetzt von einer Stufe des Speicherarrays oder dergleichen) sein, können auf mehreren anderen Stufen und/oder Schichten (z. B. mehreren anderen Stufen und/oder Schichten als das Speicherarray, parallel zu und versetzt von einer Stufe des Speicherarrays und voneinander oder dergleichen) sein, können auf einer oder mehreren gleichen Stufen und/oder Schichten wie ein Speicherarray sein oder dergleichen.In certain embodiments, an integrated circuit device 123 one or more additional microcontrollers 150 , Microcontroller cores 150 or the like. Different microcontrollers 150 and / or microcontroller cores 150 may be on the same level and / or layer to each other (e.g. a different level and / or layer than a storage array, parallel to and offset from a level of the storage array or the like), may be on several other levels and / or layers ( e.g., multiple levels and / or layers other than the storage array, parallel to and offset from a level of the storage array and from each other or the like) may be on one or more of the same levels and / or layers as a storage array or the like.

In einer Ausführungsform können, um Raum einer integrierten Schaltungsvorrichtung 123 zu sparen, ein oder mehrere zusätzliche Mikrocontroller 150 und/oder Mikrocontrollerkerne 150 weniger Verarbeitungseinheiten aufweisen, können Verarbeitungseinheiten aufweisen, die zum Ausführen von weniger Arten und/oder Kategorien von Aufgaben oder dergleichen eingerichtet sind als ein erster Mikrocontroller 150 und/oder Mikrocontrollerkern 150 (z.B. ein primärer, Haupt-, Steuer-, Voll- und/oder Komplett-Mikrocontrollerkern 150 mit einem oder mehreren sekundären, partiellen, kleineren und/oder reduzierten Mikrocontrollerkernen 150, die weniger Verarbeitungseinheiten aufweisen, oder dergleichen).In one embodiment, to space an integrated circuit device 123 to save one or more additional microcontrollers 150 and / or microcontroller cores 150 have fewer processing units, may have processing units that are configured to perform fewer types and / or categories of tasks or the like than a first microcontroller 150 and / or microcontroller core 150 (e.g. a primary, main, control, full and / or complete microcontroller core 150 with one or more secondary, partial, smaller and / or reduced microcontroller cores 150 which have fewer processing units, or the like).

Beispielsweise kann ein erster Mikrocontroller 150 und/oder Mikrocontrollerkem 150 eine eingebaute Selbsttestverarbeitungseinheit aufweisen und/oder in Kommunikation damit sein, die dazu eingerichtet ist, Selbsttestoperationen auf einem Array von Speichermedien 122 auszuführen, während ein oder mehrere zusätzliche Mikrocontroller 150 und/oder Mikrocontrollerkeme 150 möglicherweise keine eingebaute Selbsttestverarbeitungseinheit aufweisen. In einer weiteren Ausführungsform ist ein erster Mikrocontroller 150 und/oder Mikrocontrollerkem 150 dazu eingerichtet, sowohl Programmier-/Schreib- als auch Leseoperationen auf einem Speicherarray auszuführen, während ein oder mehrere zusätzliche Mikrocontroller 150 und/oder Mikrocontrollerkeme 150 dazu eingerichtet sein können, Leseoperationen, jedoch keine Programmier-/Schreiboperationen auf dem Speicherarray auszuführen (und z. B. einen kleineren Platzbedarf und/oder eine kleinere Größe aufweisen können als der erste Mikrocontroller 150).For example, a first microcontroller 150 and / or microcontroller core 150 have a built-in self-test processing unit and / or be in communication therewith, which is set up to perform self-test operations on an array of storage media 122 execute while one or more additional microcontrollers 150 and / or microcontroller core 150 may not have a built-in self-test processing unit. In a further embodiment there is a first microcontroller 150 and / or microcontroller core 150 set up to perform both programming / writing and reading operations on a memory array while one or more additional microcontrollers 150 and / or microcontroller core 150 can be set up to carry out read operations, but no programming / writing operations on the memory array (and, for example, can have a smaller space requirement and / or a smaller size than the first microcontroller 150 ).

In bestimmten Ausführungsformen kann ein erster Satz von einem oder mehreren Mikrocontrollern 150 (z. B. primären, Haupt-, Steuer-, Voll- und/oder Komplett-Mikrocontrollerkernen 150 oder dergleichen) Programmier-/Schreiboperationen für ein gesamtes Array von Speichermedien 122 (z. B. jeden Kanal, Teilsatz und/oder Bereich von Speicherzellen einer integrierten Schaltungsvorrichtung 123) ausführen, während sowohl der erste Satz von einem oder mehreren Mikrocontrollern 150 als auch ein zweiter Satz von einem oder mehreren Mikrocontrollern 150 (z. B. ein oder mehrere sekundäre, partielle, kleinere und/oder reduzierte Mikrocontrollerkerne 150, die weniger Verarbeitungseinheiten aufweisen, oder dergleichen) Leseoperationen für verschiedene Teile des Arrays von Speichermedien 122 ausführen können (z. B. unter Zuweisung zu verschiedenen Kanälen, Teilsätzen und/oder Bereichen von Speicherzellen einer integrierten Schaltungsvorrichtung 123).In certain embodiments, a first set of one or more microcontrollers 150 (e.g. primary, main, control, full, and / or full microcontroller cores 150 or the like) programming / writing operations for an entire array of storage media 122 (e.g., each channel, subset and / or area of memory cells of an integrated circuit device 123 ) run while both the first set of one or more microcontrollers 150 as well as a second set of one or more microcontrollers 150 (e.g. one or more secondary, partial, smaller and / or reduced microcontroller cores 150 , which have fewer processing units, or the like) Read operations for different parts of the array of storage media 122 can perform (e.g., assigning to different channels, subsets and / or areas of memory cells of an integrated circuit device 123 ).

Die Speichervorrichtung 120 kann in verschiedenen Ausführungsformen an einem oder mehreren unterschiedlichen Orten relativ zu der Rechenvorrichtung 110 angeordnet sein. In einer Ausführungsform weist die Speichervorrichtung 120 ein oder mehrere nichtflüchtige und/oder flüchtige Speicherelemente 123 auf, wie etwa Halbleiterchips oder -gehäuse oder andere integrierte Schaltungsvorrichtungen, die auf einer bzw. einem oder mehreren Schaltungsplatinen, Speichergehäusen und/oder anderen mechanischen und/oder elektrischen Trägerstrukturen angeordnet sind. Beispielsweise kann die Speichervorrichtung 120 eine oder mehrere Karten für ein direktes Inline-Speichermodul (Direct Inline Memory Module, DIMM), eine oder mehrere Erweiterungskarten und/oder Tochterkarten, eine Speicherkarte, ein Universal-Serial-Bus-(USB-)Laufwerk, ein Solid-State-Drive (SSD) oder eine andere Festplattenvorrichtung aufweisen und/oder kann einen anderen Speicher- und/oder Speicherungsformfaktor aufweisen. Die Speichervorrichtung 120 kann in einer Hauptplatine der Rechenvorrichtung 110 integriert und/oder darauf montiert sein, in einem Port und/oder Steckplatz der Rechenvorrichtung 110 installiert sein, auf einer anderen Rechenvorrichtung 110 und/oder einem dedizierten Speichergerät auf dem Netzwerk 115 installiert sein, mit der Rechenvorrichtung 110 über einen externen Bus (z. B. eine externe Festplatte) in Kommunikation sein oder dergleichen.The storage device 120 may, in various embodiments, be in one or more different locations relative to the computing device 110 be arranged. In one embodiment, the storage device 120 one or more non-volatile and / or volatile memory elements 123 , such as semiconductor chips or packages or other integrated circuit devices, which are arranged on one or more circuit boards, memory packages and / or other mechanical and / or electrical carrier structures. For example, the storage device 120 One or more cards for a direct inline memory module (DIMM), one or more expansion cards and / or daughter cards, a memory card, a universal serial bus (USB) drive, a solid-state drive (SSD) or another hard disk device and / or can have a different storage and / or storage form factor. The storage device 120 can be in a motherboard of the computing device 110 integrated and / or mounted thereon, in a port and / or slot of the computing device 110 be installed on another computing device 110 and / or a dedicated storage device on the network 115 be installed with the computing device 110 be in communication via an external bus (e.g. an external hard drive) or the like.

Die Speichervorrichtung 120 kann in einer Ausführungsform auf einem Speicherbus eines Prozessors 111 (z. B. auf dem gleichen Speicherbus wie der flüchtige Speicher 112, auf einem anderen Speicherbus als der flüchtige Speicher 112, anstelle des flüchtigen Speichers 112 oder dergleichen) angeordnet sein. In einer weiteren Ausführungsform kann die Speichervorrichtung 120 auf einem peripheren Bus der Rechenvorrichtung 110, wie etwa einem Peripheral-Component-Interconnect-Express-(PCI-Express- oder PCIe-)Bus, einem Serial-Advanced-Technology-Attachment-(SATA-)Bus, einem Parallel-Advanced-Technology-Attachment-(PATA-)Bus, einem Small-Computer-System-Interface-(SCSI-)Bus, einem FireWire-Bus, einer Fibre-Channel-Verbindung, einem Universal Serial Bus (USB), einem PCIe-Advanced-Switching-(PCIe-AS-)Bus oder dergleichen, angeordnet sein. In einer anderen Ausführungsform kann die Speichervorrichtung 120 auf einem Datennetzwerk 115, wie einem Ethernet-Netzwerk, einem Infiniband-Netzwerk, SCSI-RDMA über ein Netzwerk 115, einem Speicherbereichsnetzwerk (Storage Area Network, SAN), einem lokalen Netzwerk (Local Area Network, LAN), einem Weitverkehrsnetzwerk (Wide Area Network, WAN) wie etwa dem Internet, einem anderen drahtgebundenen und/oder drahtlosen Netzwerk 115 oder dergleichen, angeordnet sein.The storage device 120 may, in one embodiment, on a processor memory bus 111 (e.g. on the same memory bus as the volatile memory 112 , on a different memory bus than the volatile memory 112 , instead of volatile memory 112 or the like) may be arranged. In another embodiment, the storage device 120 on a peripheral bus of the computing device 110 , such as a Peripheral Component Interconnect Express (PCI Express or PCIe) bus, a Serial Advanced Technology Attachment (SATA) bus, a Parallel Advanced Technology Attachment (PATA) ) Bus, a small computer system interface (SCSI) bus, a FireWire bus, a fiber channel connection, a universal serial bus (USB), a PCIe Advanced Switching (PCIe-AS- ) Bus or the like. In another embodiment, the storage device 120 on a data network 115 , such as an Ethernet network, an Infiniband network, SCSI-RDMA over a network 115 , a storage area network (SAN), a local area network (LAN), a wide area network (WAN) such as the Internet, another wired and / or wireless network 115 or the like.

Die Rechenvorrichtung 110 kann weiterhin ein nichtflüchtiges, computerlesbares Speichermedium 114 aufweisen. Das computerlesbare Speichermedium 114 kann ausführbare Anweisungen aufweisen, die eingerichtet sind, um zu bewirken, dass die Rechenvorrichtung 110 (z. B. Prozessor 111) Schritte eines oder mehrerer der hierin offenbarten Verfahren ausführt. Alternativ oder zusätzlich kann der Mikrocontroller 150 eine oder mehrere computerlesbare Anweisungen einschließen, die auf dem nichtflüchtigen Speichermedium 114 gespeichert sind.The computing device 110 can still be a non-volatile, computer-readable storage medium 114 exhibit. The computer readable storage medium 114 may include executable instructions configured to cause the computing device 110 (e.g. processor 111 ) Performing steps of one or more of the methods disclosed herein. Alternatively or additionally, the microcontroller 150 include one or more computer readable instructions that are on the non-volatile storage medium 114 are saved.

In einer Ausführungsform kann ein Mikrocontroller 150 logische Hardware eines nichtflüchtigen und/oder flüchtigen Speicherelements 123, andere programmierbare Logik, Firmware für ein nichtflüchtiges und/oder flüchtiges Speicherelement 123, Mikrocode zur Ausführung durch ein nichtflüchtiges und/oder flüchtiges Speicherelement 123 oder dergleichen aufweisen. In einer anderen Ausführungsform kann ein Mikrocontroller 150 mindestens teilweise ausführbaren Softwarecode (z. B. Mikrocode) aufweisen, der auf einem computerlesbaren Speichermedium zur Ausführung durch logische Hardware eines nichtflüchtigen und/oder flüchtigen Speicherelements 123 (z. B. zur Ausführung durch den Mikrocontroller 150 selbst, durch den Prozessor 111 oder dergleichen) gespeichert ist. In einer weiteren Ausführungsform kann ein Mikrocontroller 150 eine Kombination von sowohl ausführbarem Softwarecode als auch logischer Hardware einschließen.In one embodiment, a microcontroller 150 logical hardware of a non-volatile and / or volatile memory element 123 , other programmable logic, firmware for a non-volatile and / or volatile memory element 123 , Microcode for execution by a non-volatile and / or volatile memory element 123 or the like. In another embodiment, a microcontroller 150 have at least partially executable software code (eg microcode) on a computer-readable storage medium for execution by logical hardware of a non-volatile and / or volatile memory element 123 (e.g. for execution by the microcontroller 150 itself, through the processor 111 or the like) is stored. In a further embodiment, a microcontroller 150 include a combination of both executable software code and logical hardware.

In einer Ausführungsform ist der Mikrocontroller 150 dazu eingerichtet, Anforderungen und/oder Befehle von einem Vorrichtungstreiber oder einer anderen ausführbaren Anwendung über Busse 125, 127, eine Speichermediensteuerung 126 oder dergleichen zu empfangen. Der Mikrocontroller 150 kann weiterhin dazu eingerichtet sein, Daten zu/von einem Vorrichtungstreiber und/oder Speicher-Clients 116 über den Bus 125 zu übertragen. Dementsprechend kann der Mikrocontroller 150 in einigen Ausführungsformen ein, eine bzw. einen oder mehrere Module mit Direktspeicherzugriff (Direct Memory Access, DMA), Module mit entferntem DMA, Bussteuerungen, Brücken, Puffer und so weiter aufweisen und/oder damit in Kommunikation sein, um die Übertragung von Speicheranforderungen und zugehörigen Daten zu erleichtern. In einer anderen Ausführungsform kann der Mikrocontroller 150 Speicheranforderungen und/oder Refresh-Befehle als API-Aufruf von einem Speicher-Client 116, als IO-CTL-Befehl oder dergleichen empfangen.In one embodiment, the microcontroller 150 set up to receive requests and / or commands from a device driver or other executable application via buses 125 . 127 , a storage media controller 126 or the like. The microcontroller 150 can also be configured to transfer data to / from a device driver and / or storage clients 116 over the bus 125 transferred to. Accordingly, the microcontroller 150 in some embodiments, include, and / or be in communication with, and / or in communication with direct memory access (DMA) modules, modules with remote DMA, bus controllers, bridges, buffers, and so on, for the transfer of memory requests and to facilitate associated data. In another embodiment, the microcontroller 150 Storage requests and / or refresh commands as an API call from a storage client 116 , received as an IO-CTL command or the like.

In einer Ausführungsform ist ein Mikrocontroller 150 auf einem Speicherelement 123 integriert (z. B. eine On-Die-Steuerung und/oder andere logische Hardware oder ausführbarer Code) und empfängt Befehle von einer Vorrichtungssteuerung 126, einer Hostvorrichtung 110 und/oder einem Prozessor 111. In anderen Ausführungsformen kann ein Teil eines Mikrocontrollers 150 auf einer Vorrichtungssteuerung 126 oder einem anderen Interposer angeordnet sein und ein Teil eines Mikrocontrollers 150 kann auf einem Speicherelement 123 angeordnet sein oder dergleichen. In one embodiment is a microcontroller 150 on a storage element 123 integrates (e.g., on-die control and / or other logic hardware or executable code) and receives commands from a device controller 126 , a host device 110 and / or a processor 111 , In other embodiments, part of a microcontroller 150 on a device control 126 or another interposer and be part of a microcontroller 150 can on a storage element 123 be arranged or the like.

Gemäß verschiedenen Ausführungsformen können eine Speichersteuerung 126 und/oder ein Mikrocontroller 150 eine bzw. ein oder mehrere Speichervorrichtungen 120 und/oder Speicherelemente 123 verwalten. Die Speichervorrichtung(en) 120 können Aufzeichnungs-, Speicher- und/oder Speicherungsvorrichtungen, wie etwa Solid-State-speicherungsvorrichtung(en) und/oder Halbleiterspeicherungsvorrichtung(en), aufweisen, die in einer Vielzahl von adressierbaren Medienspeicherorten angeordnet und/oder partitioniert sind. Wie hierin verwendet, bezieht sich ein Medienspeicherort auf eine beliebige physische Speichereinheit (z. B. eine beliebige Menge von physischen Speichermedien auf einer Speichervorrichtung 120). Speichereinheiten und/oder -bereiche können, ohne jedoch darauf beschränkt zu sein, Folgendes einschließen: Seiten, Speicherabschnitte, Blöcke, Sektoren, Sammlungen oder Sätze von physischen Speicherorten (z. B. logische Seiten, logische Blöcke) oder dergleichen.According to various embodiments, memory control 126 and / or a microcontroller 150 one or more storage devices 120 and / or storage elements 123 manage. The storage device (s) 120 may include recording, storage, and / or storage devices, such as solid state storage device (s) and / or semiconductor storage device (s), arranged and / or partitioned in a variety of addressable media storage locations. As used herein, a media location refers to any physical storage device (e.g., any amount of physical storage media on a storage device 120 ). Storage devices and / or areas may include, but are not limited to, pages, storage sections, blocks, sectors, collections, or sets of physical storage locations (e.g., logical pages, logical blocks), or the like.

Ein Vorrichtungstreiber, die Speichermediensteuerung 126 und/oder ein Mikrocontroller 150 können in bestimmten Ausführungsformen den Speicher-Clients 116 einen logischen Adressraum 134 präsentieren. Wie hierin verwendet, bezieht sich ein logischer Adressraum 134 auf eine logische Repräsentation von Speicherressourcen. Der logische Adressraum 134 kann eine Vielzahl (z. B. einen Bereich) von logischen Adressen aufweisen. Wie hierin verwendet, bezieht sich eine logische Adresse auf jeden Identifikator zum Referenzieren einer Speicherressource (z. B. Daten), einschließlich, ohne jedoch darauf beschränkt zu sein: einer logische Blockadresse (LBA), einer Zylinder/Kopf/Sektor(Cylinder/Head/Sector, CHS)-Adresse, einem Dateinamen, einem Objektidentifikator, einem global eindeutigen Identifikator (Globally Unique Identifier, GUID), einem Hash-Code, einer Signatur, einem Indexeintrag, einem Bereich, einem Umfang oder dergleichen.A device driver, the storage media controller 126 and / or a microcontroller 150 can, in certain embodiments, the storage clients 116 a logical address space 134 present. As used herein, a logical address space refers 134 for a logical representation of storage resources. The logical address space 134 may have a plurality (e.g., a range) of logical addresses. As used herein, a logical address refers to any identifier for referencing a memory resource (e.g., data), including but not limited to: a logical block address (LBA), a cylinder / head / sector (Cylinder / Head) / Sector, CHS) address, a file name, an object identifier, a globally unique identifier (GUID), a hash code, a signature, an index entry, an area, a scope or the like.

Ein Vorrichtungstreiber für die Speichervorrichtung 120 kann Metadaten 135, wie etwa eine Logisch-zu-physisch-Adressabbildungsstruktur, verwalten, um logische Adressen des logischen Adressraums 134 auf Medienspeicherorte auf der Speichervorrichtung bzw. den Speichervorrichtungen 120 abzubilden. Ein Vorrichtungstreiber kann dazu eingerichtet sein, Speicherdienste für einen oder mehrere Speicher-Clients 116 bereitzustellen. Die Speicher-Clients 116 können lokale Speicher-Clients 116, die auf der Rechenvorrichtung 110 arbeiten, und/oder Remote-Speicher-Clients 116, auf die über das Netzwerk 115 und/oder die Netzwerkschnittstelle 113 zugegriffen werden kann, aufweisen. Die Speicher-Clients 116 können einschließen, ohne jedoch darauf beschränkt zu sein: Betriebssysteme, Dateisysteme, Datenbankanwendungen, Serveranwendungen, Prozesse auf Kernel-Ebene, Benutzerebenenprozesse, Anwendungen und dergleichen.A device driver for the storage device 120 can metadata 135 , such as a logical-to-physical address mapping structure, to manage logical addresses of the logical address space 134 media locations on the storage device or devices 120 map. A device driver can be set up to provide storage services for one or more storage clients 116 provide. The storage clients 116 can local storage clients 116 that on the computing device 110 work, and / or remote storage clients 116 that on the network 115 and / or the network interface 113 can be accessed. The storage clients 116 may include, but are not limited to: operating systems, file systems, database applications, server applications, kernel level processes, user level processes, applications, and the like.

Ein Vorrichtungstreiber kann kommunikativ mit einer oder mehreren Speichervorrichtungen 120 gekoppelt sein. Die eine oder mehreren Speichervorrichtungen 120 können verschiedene Arten von Speichervorrichtungen einschließen, einschließlich, ohne jedoch darauf beschränkt zu sein: Solid-State-Speicherungsvorrichtungen, Halbleiterspeicherungsvorrichtungen, SAN-Speicherressourcen, flüchtige Speichervorrichtungen, nichtflüchtige Speichervorrichtungen oder dergleichen. Die eine oder mehreren Speichervorrichtungen 120 können eine oder mehrere jeweilige Speichermediensteuerungen 126 und Speichermedien 122 aufweisen. Ein Vorrichtungstreiber kann Zugriff auf die eine oder mehreren Speichervorrichtungen 120 über eine herkömmliche Block-E/A-Schnittstelle 131 bereitstellen. Zusätzlich kann ein Vorrichtungstreiber Zugriff auf eine verbesserte Funktionalität über die SCM-Schnittstelle 132 bereitstellen. Die Metadaten 135 können verwendet werden, um Datenoperationen zu verwalten und/oder zu verfolgen, die durch eine der Block-E/A-Schnittstellen 131, SCM-Schnittstellen 132, Cache-Schnittstellen 133 oder anderen verwandten Schnittstellen durchgeführt werden.A device driver can communicate with one or more storage devices 120 be coupled. The one or more storage devices 120 may include various types of storage devices, including but not limited to: solid state storage devices, semiconductor storage devices, SAN storage resources, volatile storage devices, non-volatile storage devices, or the like. The one or more storage devices 120 can have one or more respective storage media controls 126 and storage media 122 exhibit. A device driver can access the one or more storage devices 120 via a conventional block I / O interface 131 provide. In addition, a device driver can access improved functionality via the SCM interface 132 provide. The metadata 135 can be used to manage and / or track data operations through one of the block I / O interfaces 131 , SCM interfaces 132 , Cache interfaces 133 or other related interfaces.

Die Cache-Schnittstelle 133 kann Cache-spezifische Merkmale freilegen, auf die über einen Vorrichtungstreiber für die Speichervorrichtung 120 zugegriffen werden kann. Außerdem stellt in einigen Ausführungsformen die SCM-Schnittstelle 132, die den Speicher-Clients 116 präsentiert wird, Zugriff auf Datentransformationen bereit, die durch die eine oder mehreren Speichervorrichtungen 120 und/oder die eine oder mehreren Speichermediensteuerungen 126 implementiert werden.The cache interface 133 may expose cache-specific features to those via a device driver for the storage device 120 can be accessed. In addition, in some embodiments, the SCM interface provides 132 that the storage clients 116 is presented, access to data transformations provided by the one or more storage devices 120 and / or the one or more storage media controls 126 be implemented.

Ein Vorrichtungstreiber kann den Speicher-Clients 116 einen logischen Adressraum 134 über eine oder mehrere Schnittstellen präsentieren. Wie vorstehend erörtert, kann der logische Adressraum 134 eine Vielzahl von logischen Adressen aufweisen, von denen jede jeweiligen Medienorten auf der einen oder den mehreren Speichervorrichtungen 120 entspricht. Ein Vorrichtungstreiber kann Metadaten 135 verwalten, die Beliebig-zu-Beliebig-Zuordnungen zwischen logischen Adressen und Medienorten oder dergleichen aufweisen.A device driver can be used by the storage clients 116 a logical address space 134 present via one or more interfaces. As discussed above, the logical address space 134 have a plurality of logical addresses, each having respective media locations on the one or more storage devices 120 equivalent. A device driver can have metadata 135 manage the random-to-arbitrary mappings between logical addresses and media locations or the like.

Ein Vorrichtungstreiber kann weiterhin eine Speichervorrichtungsschnittstelle 139, die zum Übertragen von Daten, Befehlen und/oder Anforderungen an die eine oder mehreren Speichervorrichtungen 120 über einen Bus 125 eingerichtet ist, aufweisen und/oder damit in Kommunikation sein, was einschließen kann, ohne jedoch darauf beschränkt zu sein: einen Speicherbus eines Prozessors 111, einen Peripheral-Component-Interconnect-Express-(PCI-Express- oder PCIe-)Bus, einen seriellen Advanced-Technology-Attachment-(ATA-)Bus, einen parallelen ATA-Bus, ein Small Computer System Interface (SCSI), FireWire, Fibre Channel, einen Universal Serial Bus (USB), einen PCIe-Advanced-Switching-(PCIe-AS-)Bus, ein Netzwerk 115, Infiniband, SCSI-RDMA oder dergleichen. Die Speichervorrichtungsschnittstelle 139 kann mit der einen oder den mehreren Speichervorrichtungen 120 mittels eines Befehls bzw. Befehlen zur Eingabe-Ausgabe-Steuerung (IO-CTL), einer IO-CTL-Befehlserweiterung bzw. IO-CTL-Befehlserweiterungen, entferntem Direktspeicherzugriff oder dergleichen kommunizieren.A device driver may also have a storage device interface 139 used to transfer data, commands and / or requests to the one or more storage devices 120 over a bus 125 is set up, and / or in communication with it, which may include, but is not limited to: a memory bus of a processor 111 , a Peripheral Component Interconnect Express (PCI Express or PCIe) bus, a serial Advanced Technology Attachment (ATA) bus, a parallel ATA bus, a Small Computer System Interface (SCSI), FireWire, Fiber Channel, a Universal Serial Bus (USB), a PCIe Advanced Switching (PCIe-AS) bus, a network 115 , Infiniband, SCSI-RDMA or the like. The storage device interface 139 can with the one or more storage devices 120 communicate by means of a command or commands for input / output control (IO-CTL), an IO-CTL command extension or IO-CTL command extensions, remote direct memory access or the like.

Die Kommunikationsschnittstelle 113 kann eine oder mehrere Netzwerkschnittstellen aufweisen, die dazu eingerichtet sind, die Rechenvorrichtung 110 und/oder die Speichersteuerung 126 kommunikativ mit einem Netzwerk 115 und/oder mit einem oder mehreren entfernten, netzwerkzugänglichen Speicher-Clients 116 zu koppeln. Die Speicherclients 116 können lokale Speicher-Clients 116, die auf der Rechenvorrichtung 110 arbeiten, und/oder entfernte Speicher-Clients 116 einschließen, auf die über das Netzwerk 115 und/oder die Netzwerkschnittstelle 113 zugegriffen werden kann. Die Speichersteuerung 126 ist Teil von und/oder in Kommunikation mit einer oder mehreren Speichervorrichtungen 120. Obwohl 1 eine einzige Speichervorrichtung 120 darstellt, ist die Offenbarung in dieser Hinsicht nicht beschränkt und könnte angepasst werden, um eine beliebige Anzahl von Speichervorrichtungen 120, eine Kombination von einer oder mehreren flüchtigen Speichervorrichtungen 120 und einer oder mehreren nichtflüchtigen Speichervorrichtungen 120 oder dergleichen einzuschließen.The communication interface 113 may have one or more network interfaces that are configured to the computing device 110 and / or memory control 126 communicative with a network 115 and / or with one or more remote, network-accessible storage clients 116 to couple. The storage clients 116 can local storage clients 116 that on the computing device 110 work, and / or remote storage clients 116 include on the over the network 115 and / or the network interface 113 can be accessed. The memory controller 126 is part of and / or in communication with one or more storage devices 120 , Even though 1 a single storage device 120 the disclosure is not limited in this regard, and could be adapted to any number of storage devices 120 , a combination of one or more volatile storage devices 120 and one or more non-volatile memory devices 120 or the like.

Die Speichervorrichtung 120 kann ein oder mehrere Elemente 123 von Speichermedien 122 aufweisen. In einer Ausführungsform weist ein Element 123 von Speichermedien 122 ein flüchtiges Speichermedium 122 auf, wie etwa Direktzugriffsspeicher (Random Access Memory, RAM), dynamisches RAM (DRAM), synchrones DRAM (SDRAM), Doppeldatenraten-(DDR-)SDRAM, statisches RAM (SRAM), Thyristor-RAM (T-RAM), Null-Kondensator-RAM (Zero-Capacitor RAM, Z-RAM) oder dergleichen. In bestimmten Ausführungsformen weist ein Element 123 von Speichermedien 122 ein nichtflüchtiges Speichermedium 122 auf, wie etwa ReRAM, Memristorspeicher, programmierbaren Metallisierungszellenspeicher, Phasenänderungsspeicher (PCM, PCME, PRAM, PCRAM, Ovonic Unified Memory, Chalkogenid-RAM oder C-RAM), NAND-Flashspeicher (z. B. 2D-NAND-Flashspeicher, 3D-NAND-Flashspeicher), NOR-Flashspeicher, Nano-Direktzugriffsspeicher (Nano-RAM oder NRAM), drahtbasierten Nanokristallspeicher, Siliziumoxid-basierten Sub-10-Nanometer-Prozessspeicher, Graphenspeicher, Silizium-Oxid-Nitrid-Oxid-Silizium-(SONOS-)Speicher, programmierbaren Metallisierungszellen- (Programmable-Metallization-Cell-, PMC-)Speicher, RAM mit leitfähiger Überbrückung (Conductive-Bridging RAM, CBRAM), magnetoresistives RAM (MRAM), magnetische Speichermedien (z. B. Festplatte, Band), optische Speichermedien oder dergleichen. Das eine oder die mehreren Elemente 123 von Speichermedien 122 weisen in bestimmten Ausführungsformen Speicherklassenspeicher (Storage Class Memory, SCM) auf.The storage device 120 can be one or more elements 123 of storage media 122 exhibit. In one embodiment, an element 123 of storage media 122 a volatile storage medium 122 on, such as random access memory (RAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate (DDR) SDRAM, static RAM (SRAM), thyristor RAM (T-RAM), zero Capacitor RAM (Zero-Capacitor RAM, Z-RAM) or the like. In certain embodiments, an element has 123 of storage media 122 a non-volatile storage medium 122 such as ReRAM, memristor memory, programmable metallization cell memory, phase change memory (PCM, PCME, PRAM, PCRAM, Ovonic Unified Memory, chalcogenide RAM or C-RAM), NAND flash memory (e.g. 2D-NAND flash memory, 3D NAND flash memory), NOR flash memory, nano random access memory (nano RAM or NRAM), wire-based nanocrystal memory, silicon oxide-based sub-10 nanometer process memory, graphene memory, silicon oxide nitride oxide silicon (SONOS) Memory, programmable metallization cell (PMC) memory, RAM with conductive bridging (Conductive Bridging RAM, CBRAM), magnetoresistive RAM (MRAM), magnetic storage media (e.g. hard disk, tape), optical Storage media or the like. The one or more elements 123 of storage media 122 have storage class memory (SCM) in certain embodiments.

Während Legacy-Technologien, wie etwa NAND-Flash, block- und / oder seitenadressierbar sein können, ist Speicherklassenspeicher in einer Ausführungsform byteadressierbar. In weiteren Ausführungsformen kann Speicherklassenspeicher schneller sein und/oder eine längere Lebensdauer (z. B. Standzeit) als NAND-Flash aufweisen; kann geringere Kosten verursachen, weniger Leistung verwenden und/oder eine höhere Speicherdichte als DRAM aufweisen; oder einen oder mehrere andere Vorteile oder Verbesserungen im Vergleich zu anderen Technologien bieten. Zum Beispiel kann der Speicherklassenspeicher ein oder mehrere nichtflüchtige Speicherelemente 123 aus ReRAM, Memristorspeicher, programmierbarem Metallisierungszellenspeicher, Phasenänderungsspeicher, Nano-RAM, drahtbasiertem Nanokristallspeicher, Siliziumoxid-basiertem Sub-10-Nanometer-Prozessspeicher, Graphenspeicher, SONOS-Speicher, PMC-Speicher, CBRAM, MRAM und/oder Variationen davon aufweisen.While legacy technologies, such as NAND flash, can be block and / or page addressable, storage class memory is byte addressable in one embodiment. In other embodiments, storage class storage may be faster and / or have a longer lifespan (e.g., idle time) than NAND flash; may be less costly, use less power, and / or have higher memory density than DRAM; or offer one or more other advantages or improvements over other technologies. For example, the storage class storage may include one or more non-volatile storage elements 123 from ReRAM, memristor memory, programmable metallization cell memory, phase change memory, nano-RAM, wire-based nanocrystal memory, silicon oxide-based sub-10 nanometer process memory, graphene memory, SONOS memory, PMC memory, CBRAM, MRAM and / or variations thereof.

Während das nichtflüchtige Speichermedium 122 hierin als „Speichermedium“ bezeichnet wird, kann das nichtflüchtige Speichermedium 122 in verschiedenen Ausführungsformen allgemeiner ein oder mehrere nichtflüchtige Aufzeichnungsmedien aufweisen, die in der Lage sind, Daten aufzuzeichnen, die als nichtflüchtiges Speichermedium, nichtflüchtiges Speicherungsmedium oder dergleichen bezeichnet werden können. Weiterhin kann die nichtflüchtige Speichervorrichtung 120 in verschiedenen Ausführungsformen eine nichtflüchtige Aufzeichnungsvorrichtung, eine nichtflüchtige Speichervorrichtung, eine nichtflüchtige Speicherungsvorrichtung oder dergleichen aufweisen. In ähnlicher Weise kann ein nichtflüchtiges Speicherelement 123 in verschiedenen Ausführungsformen ein nichtflüchtiges Aufzeichnungselement, ein nichtflüchtiges Speicherelement, ein nichtflüchtiges Speicherungselement oder dergleichen aufweisen.While the non-volatile storage medium 122 referred to herein as a "storage medium" may be the non-volatile storage medium 122 more generally, in various embodiments, include one or more non-volatile recording media capable of recording data that may be referred to as non-volatile storage media, non-volatile storage media, or the like. Furthermore, the non-volatile memory device 120 in various embodiments include a non-volatile recording device, a non-volatile storage device, a non-volatile storage device, or the like. Similarly, one can non-volatile memory element 123 in various embodiments include a non-volatile recording element, a non-volatile storage element, a non-volatile storage element or the like.

Das nichtflüchtige Speichermedium 122 kann ein oder mehrere nichtflüchtige Speicherelemente 123 aufweisen, die Chips, Pakete, Ebenen, Dies oder dergleichen einschließen können, ohne jedoch darauf beschränkt zu sein. Eine Steuerung 126 eines nichtflüchtigen Speichermediums kann eingerichtet sein, um Datenoperationen auf dem nichtflüchtigen Speichermedium 122 zu verwalten, und kann einen oder mehrere Prozessoren, programmierbare Prozessoren (z. B. FPGAs), ASICs, Mikrocontroller oder dergleichen aufweisen. In einigen Ausführungsformen ist die Steuerung 126 des nichtflüchtigen Speichermediums dazu eingerichtet, Daten zu speichern und/oder Daten aus dem nichtflüchtigen Speichermedium 122 zu lesen, Daten zu/von der nichtflüchtigen Speichervorrichtung 120 zu übertragen und so weiter.The non-volatile storage medium 122 can have one or more non-volatile memory elements 123 which may include, but are not limited to, chips, packets, levels, dies, or the like. One control 126 a non-volatile storage medium can be set up to perform data operations on the non-volatile storage medium 122 to manage, and may include one or more processors, programmable processors (e.g. FPGAs), ASICs, microcontrollers or the like. In some embodiments, control is 126 of the non-volatile storage medium to store data and / or data from the non-volatile storage medium 122 to read data to / from the non-volatile storage device 120 to transfer and so on.

Die Steuerung 126 nichtflüchtiger Speichermedien kann kommunikativ mit den nichtflüchtigen Speichermedien 122 (z. B. mit dem Mikrocontroller 150) über einen Bus 127 gekoppelt sein. Der Bus 127 kann einen E/A-Bus zum Kommunizieren von Daten zu/von den nichtflüchtigen Speicherelementen 123 und/oder den zugehörigen Mikrocontrollern 150 aufweisen. Der Bus 127 kann weiterhin einen Steuerbus zum Kommunizieren von Adressier- und anderen Befehls- und Steuerinformationen an die nichtflüchtigen Speicherelemente 123 und/oder die Mikrocontroller 150 aufweisen. In einigen Ausführungsformen kann der Bus 127 die nichtflüchtigen Speicherelemente 123 (z. B. die Mikrocontroller 150) parallel kommunikativ mit der Steuerung 126 nichtflüchtiger Speichermedien koppeln. Dieser parallele Zugriff kann ermöglichen, dass die nichtflüchtigen Speicherelemente 123 als eine Gruppe verwaltet werden, wodurch ein logisches Speicherelement 129 gebildet wird. Das logische Speicherelement kann in entsprechende logische Speichereinheiten (z. B. logische Seiten) und/oder logische Speicherbereiche (z. B. logische Blöcke) unterteilt sein. Die logischen Speichereinheiten können gebildet werden, indem physische Speichereinheiten von jedem der nichtflüchtigen Speicherelemente logisch kombiniert werden.The control 126 Non-volatile storage media can communicate with the non-volatile storage media 122 (e.g. with the microcontroller 150 ) via a bus 127 be coupled. The bus 127 can be an I / O bus for communicating data to / from the non-volatile memory elements 123 and / or the associated microcontrollers 150 exhibit. The bus 127 may further include a control bus for communicating addressing and other command and control information to the non-volatile memory elements 123 and / or the microcontrollers 150 exhibit. In some embodiments, the bus 127 the non-volatile memory elements 123 (e.g. the microcontrollers 150 ) communicative with the control system in parallel 126 Pair non-volatile storage media. This parallel access can allow the non-volatile storage elements 123 managed as a group, creating a logical storage element 129 is formed. The logical storage element can be subdivided into corresponding logical storage units (e.g. logical pages) and / or logical storage areas (e.g. logical blocks). The logical storage units can be formed by logically combining physical storage units from each of the non-volatile storage elements.

Die Steuerung 126 von nichtflüchtigem Speicher und/oder ein Mikrocontroller 150 können einen Vorrichtungstreiber, der auf der Rechenvorrichtung 110 ausgeführt wird, aufweisen und/oder damit in Kommunikation sein. Ein Vorrichtungstreiber kann über eine oder mehrere Schnittstellen 131, 132 und/oder 133 Speicherdienste für die Speicher-Clients 116 bereitstellen. In einigen Ausführungsformen stellt ein Vorrichtungstreiber eine Blockvorrichtungs-E/A-Schnittstelle 131 bereit, durch die Speicher-Clients 116 E/A-Operationen auf Blockebene durchführen. Altemativ oder zusätzlich kann ein Vorrichtungstreiber eine Speicherklassenspeicher-(SCM) Schnittstelle 132 bereitstellen, die andere Speicherdienste für die Speicher-Clients 116 bereitstellen kann. In einigen Ausführungsformen kann die SCM-Schnittstelle 132 Erweiterungen zu der Blockvorrichtungsschnittstelle 131 aufweisen (z. B. können die Speicher-Clients 116 auf die SCM-Schnittstelle 132 über Erweiterungen oder Ergänzungen zu der Blockvorrichtungsschnittstelle 131 zugreifen). Alternativ oder zusätzlich kann die SCM-Schnittstelle 132 als separate API, Dienst und/oder Bibliothek bereitgestellt werden. Ein Vorrichtungstreiber kann weiterhin so eingerichtet sein, dass er eine Cache-Schnittstelle 133 zum Zwischenspeichern von Daten unter Verwendung des nichtflüchtigen Speichersystems 102 bereitstellt. Ein Vorrichtungstreiber kann weiterhin eine Schnittstelle 139 für nichtflüchtige Speichervorrichtungen aufweisen, die dazu eingerichtet ist, Daten, Befehle und/oder Abfragen zu der Steuerung 126 nichtflüchtiger Speichermedien und/oder einem Mikrocontroller 150 über einen Bus 125 zu übertragen, wie vorstehend beschrieben.The control 126 of non-volatile memory and / or a microcontroller 150 can have a device driver running on the computing device 110 executed, and / or be in communication with it. A device driver can have one or more interfaces 131 . 132 and or 133 Storage services for the storage clients 116 provide. In some embodiments, a device driver provides a block device I / O interface 131 ready by the storage clients 116 Perform I / O operations at the block level. Alternatively or additionally, a device driver may have a storage class storage (SCM) interface 132 provide the other storage services to the storage clients 116 can provide. In some embodiments, the SCM interface 132 Extensions to the block device interface 131 (e.g., the storage clients 116 to the SCM interface 132 about extensions or additions to the block device interface 131 access). Alternatively or additionally, the SCM interface 132 be provided as a separate API, service and / or library. A device driver can also be set up to have a cache interface 133 for caching data using the non-volatile storage system 102 provides. A device driver can also interface 139 for non-volatile memory devices, which is set up to send data, commands and / or queries to the controller 126 non-volatile storage media and / or a microcontroller 150 over a bus 125 to be transmitted as described above.

2 veranschaulicht eine Ausführungsform einer nichtflüchtigen Speicherungsvorrichtung 210, die ein bzw. einen oder mehrere Speicher-Dies oder -Chips 212 mit einem oder mehreren Mikrocontrollern 150 einschließen kann. Die nichtflüchtige Speicherungsvorrichtung 210 kann der unter Bezugnahme auf 1 beschriebenen nichtflüchtigen Speichervorrichtung 120 im Wesentlichen ähnlich sein. Obwohl der eine oder die mehreren Mikrocontroller 150 von 2 zu einem Umfang des Speicher-Dies und/oder -Chips 212 hin (z. B. auf einer gleichen physischen Stufe wie das Speicherarray 200 in einer integrierten Schaltungsvorrichtung 123) dargestellt sind, können in anderen Ausführungsformen ein oder mehrere Mikrocontroller 150 auf einer anderen physischen Stufe des Speicher-Dies und/oder -Chips 212 als das Speicherarray 200 (z.B. parallel zu und versetzt von einer Stufe des Speicherarrays 200 in einer integrierten Schaltungsvorrichtung 123) angeordnet sein, wie in 7 dargestellt. 2 illustrates an embodiment of a non-volatile storage device 210 that have one or more memory dies or chips 212 with one or more microcontrollers 150 can include. The non-volatile storage device 210 can the referring to 1 described non-volatile memory device 120 to be essentially similar. Although the one or more microcontrollers 150 of 2 to an extent of memory dies and / or chips 212 (e.g. at the same physical level as the storage array 200 in an integrated circuit device 123 ) are shown, in other embodiments, one or more microcontrollers 150 at a different physical level of memory dies and / or chips 212 than the storage array 200 (eg parallel to and offset from a level of the storage array 200 in an integrated circuit device 123 ) be arranged as in 7 shown.

Das Speicher-Die 212 schließt in einigen Ausführungsformen ein Array 200 (z.B. zweidimensional oder dreidimensional) von Speicherzellen, eine On-Die-Steuerung 220 und Lese-/Schreibschaltungen 230A/230B ein. In einer Ausführungsform ist der Zugriff auf das Speicherarray 200 durch die verschiedenen peripheren Schaltungen auf eine symmetrische Weise auf gegenüberliegenden Seiten des Arrays implementiert, sodass die Dichten von Zugriffsleitungen und Schaltlogik auf jeder Seite um die Hälfte reduziert sind. Die Lese-/Schreibschaltungen 230A/230B schließen in einer weiteren Ausführungsform mehrere Leseblöcke 250 ein, die ermöglichen, dass eine Seite von Speicherzellen parallel gelesen oder programmiert wird. In bestimmten Ausführungsformen sind die Leseblöcke 250 in Kommunikation mit dem einen oder den mehreren Mikrocontrollern 150.The memory die 212 closes an array in some embodiments 200 (eg two-dimensional or three-dimensional) of memory cells, an on-die control 220 and read / write circuits 230A / 230B on. In one embodiment, access to the storage array is 200 implemented by the various peripheral circuits in a symmetrical manner on opposite sides of the array so that the densities of access lines and switching logic on each side are reduced by half. The read / write circuits 230A / 230B close a further reading blocks in a further embodiment 250 one that enable that one side of memory cells is read or programmed in parallel. In certain embodiments, the reading blocks 250 in communication with the one or more microcontrollers 150 ,

Das Speicherarray 200 ist in verschiedenen Ausführungsformen durch Wortleitungen über Zeilendecodierer 240A/240B und durch Bitleitungen über Spaltendecodierer 242A/242B adressierbar. In einigen Ausführungsformen ist ein Steuerung 244 in der gleichen Speichervorrichtung 210 (z. B. einer entfernbaren Speicherkarte oder einem Paket) wie das eine oder die mehreren Speicher-Dies 212 eingeschlossen. Befehle und Daten werden zwischen dem Host und der Steuerung 244 über Leitungen 232 und zwischen der Steuerung und dem einen oder den mehreren Speicher-Dies 212 über Leitungen 234 übertragen. Eine Implementierung kann mehrere Chips 212 einschließen.The storage array 200 is in different embodiments by word lines via row decoders 240A / 240B and through bit lines via column decoders 242A / 242B addressable. In some embodiments, there is a controller 244 in the same storage device 210 (e.g., a removable memory card or package) like the one or more memory dies 212 locked in. Commands and data are between the host and the controller 244 over lines 232 and between the controller and the one or more memory dies 212 over lines 234 transfer. An implementation can have multiple chips 212 lock in.

Die On-Die-Steuerung 220 arbeitet in einer Ausführungsform mit den Lese-/Schreibschaltungen 230A/230B zusammen, um Speicheroperationen auf dem Speicherarray 200 auszuführen. Die On-Die-Steuerung 220 schließt in bestimmten Ausführungsformen einen Mikrocontroller 150, einen On-Chip-Adressdecodierer 224 und eine Leistungssteuerschaltung 226 ein. In einer Ausführungsform können der On-Chip-Adressdecodierer 224 und/oder die Leistungssteuerschaltung 226 Teil von dem Mikrocontroller 150 sein und/oder davon gesteuert werden.The on-die control 220 works with the read / write circuits in one embodiment 230A / 230B together to perform storage operations on the storage array 200 perform. The on-die control 220 includes a microcontroller in certain embodiments 150 , an on-chip address decoder 224 and a power control circuit 226 on. In one embodiment, the on-chip address decoder 224 and / or the power control circuit 226 Part of the microcontroller 150 be and / or controlled by it.

Der Mikrocontroller 150 stellt in einer Ausführungsform eine Steuerung von Speicheroperationen auf Chip-Ebene bereit. Der On-Chip-Adressdecodierer 224 stellt eine Adressschnittstelle bereit, um die Adresse, die von dem Host oder einer Speichersteuerung verwendet wird, in die Hardwareadresse umzuwandeln, die von den Decodern 240A, 240B, 242A, 242B verwendet wird. Die Leistungssteuerschaltung 226 steuert die Leistung und Spannungen, die den Wortleitungen und Bitleitungen während Speicheroperationen zugeführt werden. Gemäß einer Ausführungsform schließt die Steuerschaltung 226 eine oder mehrere Ladepumpen ein, die Spannungen, die größer als die Versorgungsspannung sind, erzeugen können.The microcontroller 150 provides control of memory operations at the chip level in one embodiment. The on-chip address decoder 224 provides an address interface to convert the address used by the host or memory controller to the hardware address used by the decoders 240A . 240B . 242A . 242B is used. The power control circuit 226 controls the power and voltages applied to the word lines and bit lines during memory operations. According to one embodiment, the control circuit closes 226 one or more charge pumps that can generate voltages that are greater than the supply voltage.

In einer Ausführungsform können eines oder eine beliebige Kombination von der On-Die-Steuerung 220, dem Mikrocontroller 150, der Leistungssteuerschaltung 226, der Decodierschaltung 224, der Decodierschaltung 242A, der Decodierschaltung 242B, der Decodierschaltung 240A, der Decodierschaltung 240B, den Lese-/Schreibschaltungen 230A, den Lese-/Schreibschaltungen 230B und/oder der Steuerung 244 als eine oder mehrere Verwaltungsschaltungen bezeichnet werden.In one embodiment, any or any combination of the on-die control 220 , the microcontroller 150 , the power control circuit 226 , the decoding circuit 224 , the decoding circuit 242A , the decoding circuit 242B , the decoding circuit 240A , the decoding circuit 240B , the read / write circuits 230A , the read / write circuits 230B and / or the controller 244 are referred to as one or more management circuits.

3 stellt eine Ausführungsform eines Systems 300 mit einer On-Die-Speichermikrocontroller-Einheit 150 dar. Der Mikrocontroller 150 von 3 kann in bestimmten Ausführungsformen im Wesentlichen dem Mikrocontroller 150 von 1 und/oder dem Mikrocontroller 150 von 2 ähnlich sein. 3 represents an embodiment of a system 300 with an on-die memory microcontroller unit 150 The microcontroller 150 of 3 can essentially the microcontroller in certain embodiments 150 of 1 and / or the microcontroller 150 of 2 be similar to.

In der dargestellten Ausführungsform weist der Mikrocontroller 150 eine Vielzahl von Verarbeitungseinheiten 302a-n auf und/oder ist damit in Kommunikation. Einige Verarbeitungseinheiten 302a, 302b, 302n befinden sich innerhalb des Mikrocontrollers 150 und/oder sind Teil davon, während andere Verarbeitungseinheiten 302c, 302d sich außerhalb des Mikrocontrollers 150 befinden (z. B. externe Verarbeitungseinheiten, Funktionseinheiten oder dergleichen) und in Kommunikation mit dem Mikrocontroller 150 sind (und z. B. in Kommunikation mit einem oder mehreren zusätzlichen Mikrocontrollern 150 und/oder Mikrocontrollerkernen 150 sein können). In bestimmten Ausführungsformen können die außerhalb des Mikrocontrollers 150 befindlichen Verarbeitungseinheiten 302c, 302d auf der gleichen Stufe (z. B. einer oder mehreren Schichten, Ebenen oder dergleichen) wie der Mikrocontroller 150 innerhalb einer integrierten Schaltungsvorrichtung 123 (z. B. unter einem Speicherarray 200 oder dergleichen) angeordnet sein.In the embodiment shown, the microcontroller has 150 a variety of processing units 302a-n on and / or is in communication with it. Some processing units 302a . 302b . 302n are inside the microcontroller 150 and / or are part of it, while other processing units 302c . 302d yourself outside of the microcontroller 150 located (e.g. external processing units, functional units or the like) and in communication with the microcontroller 150 are (and e.g. in communication with one or more additional microcontrollers 150 and / or microcontroller cores 150 could be). In certain embodiments, the outside of the microcontroller 150 processing units located 302c . 302d at the same level (e.g. one or more layers, levels or the like) as the microcontroller 150 within an integrated circuit device 123 (e.g. under a storage array 200 or the like) may be arranged.

Die Verarbeitungseinheiten 302a-n können in verschiedenen Ausführungsformen eine oder mehrere von einer Leseverarbeitungseinheit 302, einer Programmier-/Schreibverarbeitungseinheit 302, einer eingebauten Selbsttestverarbeitungseinheit 302, einer Flusssteuerungs-Verarbeitungseinheit 302, einer Zeitsteuerungs-Verarbeitungseinheit 302, einer Spannungssteuerungs-Verarbeitungseinheit 302 und/oder einer Datenlatchsteuerungs-Verarbeitungseinheit 302 oder dergleichen aufweisen. Die Verarbeitungseinheiten 302a-n können verschiedene Kategorien von Aufgaben, wie Flusssteueraufgaben, Zeitsteueraufgaben, Datenlatchsteueraufgaben, Spannungssteueraufgaben und/oder eingebaute Selbsttestaufgaben oder dergleichen, ausführen.The processing units 302a-n In various embodiments, one or more of a read processing unit 302 , a programming / writing processing unit 302 , a built-in self-test processing unit 302 , a flow control processing unit 302 , a timing processing unit 302 , a voltage control processing unit 302 and / or a data latch control processing unit 302 or the like. The processing units 302a-n can perform various categories of tasks such as flow control tasks, timing control tasks, data latch control tasks, voltage control tasks and / or built-in self-test tasks or the like.

In bestimmten Ausführungsformen kann die Verwendung eines Mikrocontrollers 150 (z. B. anstelle und/oder zusätzlich zu einer endlichen Zustandsmaschine oder dergleichen) dynamische Aktualisierungen und/oder Änderungen an Zeitsteuerung, Spannungen, logischen Operationen, Anweisungen, Befehlen, Mikrocode oder dergleichen für den Mikrocontroller 150 sogar nach Fertigstellung und/oder Herstellung der Hardware des Mikrocontrollers 150 und/oder der zugehörigen integrierten Schaltungsvorrichtung 123, vor Ort oder dergleichen ermöglichen, ohne die Hardware zu ändern. Die mehreren Verarbeitungseinheiten 302a-n können in einer Ausführungsform parallel arbeitend (z. B. multithreaded) ermöglichen, dass der Mikrocontroller 150 bei einer niedrigeren Taktgeschwindigkeit arbeitet, als es sonst möglich wäre, ohne auch eine Latenz von Speicheroperationen (z. B. Lesen, Programmieren/Schreiben, Löschen) auf dem Speicherarray 200 zu erhöhen.In certain embodiments, the use of a microcontroller 150 (e.g., instead of and / or in addition to a finite state machine or the like) dynamic updates and / or changes to timing, voltages, logic operations, instructions, commands, microcode or the like for the microcontroller 150 even after completion and / or manufacture of the hardware of the microcontroller 150 and / or the associated integrated circuit device 123 , on-site or the like without changing the hardware. The multiple processing units 302a-n In one embodiment, working in parallel (e.g. multithreaded) can enable the microcontroller 150 operates at a lower clock speed than would otherwise be possible without also latency of memory operations (e.g. reading, programming / writing, erasing) on the memory array 200 to increase.

Jede Verarbeitungseinheit 302 weist in bestimmten Ausführungsformen einen Leseport auf, den die Verarbeitungseinheit 302 verwenden kann, um auf Anweisungen/Befehle und/oder Daten aus einem flüchtigen Speichermodul (z. B. den nachstehend in Bezug auf 4 beschriebenen flüchtigen Speichermodulen 406 oder dergleichen) zuzugreifen. Kommunikation zwischen den Verarbeitungseinheiten 302a-n kann über eine Standardschnittstelle (z. B. das gleiche Protokoll für verschiedene Arten von Verarbeitungseinheiten 302a-n) erfolgen, die sowohl Befehle als auch Daten überträgt. In einer Ausführungsform kann die gleiche Schnittstelle für die Verarbeitungseinheiten 302a, 302b, 302n innerhalb eines Mikrocontrollers 150 und für die Verarbeitungseinheiten 302c, 302d außerhalb des Mikrocontrollers 150 verwendet werden.Every processing unit 302 in certain embodiments has a read port that the processing unit 302 may be used to refer to instructions / commands and / or data from a volatile memory module (e.g. the one below with respect to 4 volatile memory modules described 406 or the like). Communication between the processing units 302a-n can use a standard interface (e.g. the same protocol for different types of processing units 302a-n) take place, which transmits both commands and data. In one embodiment, the same interface can be used for the processing units 302a . 302b . 302n inside a microcontroller 150 and for the processing units 302c . 302d outside the microcontroller 150 be used.

4 stellt eine Ausführungsform eines Systems 400 mit einem On-Die-Speichermikrocontroller 150 dar. Der Mikrocontroller 150 kann in bestimmten Ausführungsformen im Wesentlichen einem oder mehreren von dem Mikrocontroller 150 von 1, dem Mikrocontroller 150 von 2 und/oder dem Mikrocontroller 150 von 3, die vorstehend beschrieben sind, ähnlich sein. In der dargestellten Ausführungsform weist der Mikrocontroller 150 eine Flusssteuerungs-Verarbeitungseinheit 402a, eine Zeitsteuerungs-Verarbeitungseinheit 402b, eine Datenlatchsteuerungs-Verarbeitungseinheit 402c und eine Spannungssteuerungs-Verarbeitungseinheit 402d auf, die jeweils in Kommunikation mit flüchtigem Speicher 406 und mit einer oder mehreren externen Verarbeitungseinheiten 404an, die sich außerhalb des Mikrocontrollers 150 befinden, sind. 4 represents an embodiment of a system 400 with an on-die memory microcontroller 150 The microcontroller 150 may be essentially one or more of the microcontroller in certain embodiments 150 of 1 , the microcontroller 150 of 2 and / or the microcontroller 150 of 3 described above may be similar. In the embodiment shown, the microcontroller has 150 a flow control processing unit 402a , a timing processing unit 402b , a data latch control processing unit 402c and a voltage control processing unit 402d on, each in communication with volatile memory 406 and with one or more external processing units 404a n that are outside the microcontroller 150 are.

Eine Flusssteuerungs-Verarbeitungseinheit 402a kann in bestimmten Ausführungsformen die Ausführung einer oder mehrerer Speicheroperationen (z. B. Leseoperationen, Schreib-/Programmieroperationen, Löschoperationen, Verwaltungsoperationen wie Speicherbereinigungsoperationen oder dergleichen) für ein Speicherarray 200 steuern und/oder verfolgen. Beispielsweise kann eine Flusssteuerungs-Verarbeitungseinheit 402a eine Reihe von Zuständen für verschiedene Speicheroperationen, das Verwalten einer oder mehrerer anderer Verarbeitungseinheiten 402 (z. B. einer Zeitsteuereinheit 402b, einer Datenlatchsteuereinheit 402c, einer Spannungssteuereinheit 402d, einer oder mehrerer externer Verarbeitungseinheiten 404a-n oder dergleichen) zum Ausführen der verschiedenen Speicheroperationen, das Senden von Befehlen/Anweisungen an diese, das Bestimmen eines Zustands der anderen Verarbeitungseinheiten 402, 404 während der verschiedenen Speicheroperationen oder dergleichen lenken. Eine Flusssteuerungs-Verarbeitungseinheit 402a kann in einer Ausführungsform einen Datenpfad für Speicheroperationen (z. B. zwischen einer Vorrichtungssteuerung 126 und einem Speicherarray 200, zwischen einem Mikrocontroller 150 und einem Speicherarray 200 oder dergleichen) verwalten. Eine Flusssteuerungs-Verarbeitungseinheit 402a kann in einigen Ausführungsformen einen oder mehrere interne Datenbusse eines Mikrocontrollers 150, einer integrierten Schaltungsvorrichtung 123, die den Mikrocontroller 150 aufweist, oder dergleichen verwalten.A flow control processing unit 402a may, in certain embodiments, perform one or more memory operations (e.g., read operations, write / program operations, erase operations, management operations such as garbage collection operations, or the like) for a memory array 200 control and / or track. For example, a flow control processing unit 402a a set of states for different storage operations, managing one or more other processing units 402 (e.g. a time control unit 402b , a data latch control unit 402c , a voltage control unit 402d , one or more external processing units 404a-n or the like) for performing the various storage operations, sending commands / instructions thereto, determining a state of the other processing units 402 . 404 routing during various storage operations or the like. A flow control processing unit 402a In one embodiment, a data path can be used for storage operations (e.g., between device controllers 126 and a storage array 200 , between a microcontroller 150 and a storage array 200 or the like) manage. A flow control processing unit 402a may, in some embodiments, one or more internal data buses of a microcontroller 150 , an integrated circuit device 123 that the microcontroller 150 has, or manage the like.

Eine Flusssteuerungs-Verarbeitungseinheit 402a kann in einer Ausführungsform eine Leseverarbeitungseinheit aufweisen oder anderweitig einschließen, die dazu eingerichtet ist, eine Subroutine von Mikrocode, Assemblercode und/oder anderem computerausführbarem Code auszuführen und/oder zu verwalten (z. B. parallel zu einer oder mehreren anderen Verarbeitungseinheiten 402a-n, 404a-n), um Daten aus einem Speicherarray 200 zu lesen und die gelesenen Daten einer Vorrichtungssteuerung 126, einer Hostvorrichtung 110, einem Speicher-Client 116 oder dergleichen bereitzustellen (z. B. als Reaktion auf eine Leseanforderung von der Vorrichtungssteuerung 126, der Hostvorrichtung 110, dem Speicher-Client 116 oder dergleichen).A flow control processing unit 402a may, in one embodiment, include or otherwise include a read processing unit configured to execute and / or manage a subroutine of microcode, assembly code, and / or other computer-executable code (e.g., in parallel with one or more other processing units 402a-n . 404a-n) to get data from a storage array 200 to read and the read data of a device controller 126 , a host device 110 , a storage client 116 or the like (e.g., in response to a read request from the device controller 126 , the host device 110 , the storage client 116 or similar).

Eine Flusssteuerungs-Verarbeitungseinheit 402a kann in einer Ausführungsform eine Schreib-/Programmierverarbeitungseinheit aufweisen oder anderweitig einschließen, die dazu eingerichtet ist, eine Subroutine von Mikrocode, Assemblercode und/oder anderem computerausführbarem Code (z. B. parallel zu einer oder mehreren anderen Verarbeitungseinheiten 402a-n, 404a-n) auszuführen und/oder zu verwalten, um Daten als Reaktion auf eine Schreibanforderung von einer Vorrichtungssteuerung 126, einer Hostvorrichtung 110, einem Speicher-Client 116 oder dergleichen in ein Speicherarray 200 zu schreiben/programmieren. Wie nachstehend in Bezug auf 6 beschrieben, kann in bestimmten Ausführungsformen ein erster Mikrocontroller 150a eine Flusssteuerungs-Verarbeitungseinheit 402a mit einer Schreib-/Programmierverarbeitungseinheit und einer Leseverarbeitungseinheit aufweisen, während ein oder mehrere andere Mikrocontroller 150b-n eine Leseverarbeitungseinheit ohne eine Schreib-/Programmierverarbeitungseinheit aufweisen (z. B. um Energie, Schaltungsumfang/-platz oder dergleichen zu sparen).A flow control processing unit 402a In one embodiment, may include or otherwise include a write / program processing unit configured to run a subroutine of microcode, assembly code, and / or other computer-executable code (e.g., in parallel with one or more other processing units 402a-n . 404a-n) execute and / or manage data in response to a write request from a device controller 126 , a host device 110 , a storage client 116 or the like in a storage array 200 to write / program. As below regarding 6 described, in certain embodiments, a first microcontroller 150a a flow control processing unit 402a having a write / programming processing unit and a reading processing unit, while one or more other microcontrollers 150b-n have a read processing unit without a write / programming processing unit (e.g. in order to save energy, circuit size / space or the like).

In einer Ausführungsform weist eine Flusssteuerungs-Verarbeitungseinheit 402a eine eingebaute Selbsttestverarbeitungseinheit auf. Wie nachstehend in Bezug auf 6 beschrieben, weisen in bestimmten Ausführungsformen ein oder mehrere erste Mikrocontroller 150a eine eingebaute Selbsttestverarbeitungseinheit für eine integrierte Schaltungsvorrichtung 123 und/oder ein Speicherarray 200 auf, während ein oder mehrere andere Mikrocontroller 150b-n keine eingebaute Selbsttestverarbeitungseinheit aufweisen (z. B. um Energie, Schaltungsumfang/-platz oder dergleichen zu sparen).In one embodiment, a flow control processing unit 402a a built-in self-test processing unit. As below regarding 6 described, point in certain embodiments, one or more first microcontrollers 150a a built-in self-test processing unit for an integrated circuit device 123 and / or a storage array 200 on while one or more other microcontrollers 150b-n have no built-in self-test processing unit (e.g. to save energy, circuit size / space or the like).

In einer Ausführungsform können in einem System mit mehreren Mikrocontrollern 150 ein oder mehrere in der Größe reduzierte Mikrocontroller 150 ohne eingebaute Selbsttestverarbeitungseinheiten während eines Die-Sortier- oder eines anderen Test-, Validierungs- und/oder Verifizierungsprozesses, der von einer eingebauten Selbsttestverarbeitungseinheit eines Primär- oder Vollgrößen-Mikrocontrollers 150 der gleichen integrierten Schaltungsvorrichtung 123 ausgeführt wird, leer laufen. Wenn ein oder mehrere in der Größe reduzierte Mikrocontroller 150 nicht genutzt werden, kann mindestens ein Teil des flüchtigen Speichers 406, der mit den leer laufenden Mikrocontrollern 150 verknüpft ist, ebenfalls ungenutzt und verfügbar sein. In bestimmten Ausführungsformen kann eine Flusssteuerungs-Verarbeitungseinheit 402a die verfügbare überschüssige Kapazität des flüchtigen Speichers 406 von einem oder mehreren leer laufenden Mikrocontrollern 150 während eines Tests, der durch eine eingebaute Selbsttestverarbeitungseinheit der Flusssteuerungs-Verarbeitungseinheit 402a durchgeführt wird, nutzen, um aus dem Speicherarray 200 für den Test ausgelesene Daten zu speichern und zu verarbeiten.In one embodiment, in a system with multiple microcontrollers 150 one or more reduced-size microcontrollers 150 without built-in self-test processing units during a die sorting or other test, validation and / or verification process, that of a built-in self-test processing unit of a primary or full-size microcontroller 150 the same integrated circuit device 123 running, run empty. If one or more microcontrollers reduced in size 150 at least part of the volatile memory can not be used 406 with the empty microcontrollers 150 is also unused and available. In certain embodiments, a flow control processing unit 402a the available excess capacity of volatile memory 406 from one or more idle microcontrollers 150 during a test performed by a built-in self-test processing unit of the flow control processing unit 402a is used to take out of the storage array 200 save and process data read out for the test.

Die Flusssteuerungs-Verarbeitungseinheit 402a kann Testdaten aus dem Speicherarray 200 in den flüchtigen Speicher 406 streamen, wo die eingebaute Selbsttesteinheit die Daten hinsichtlich Fehlern oder dergleichen verarbeiten kann. Eine eingebaute Selbsttestverarbeitungseinheit einer Flusssteuerungs-Verarbeitungseinheit 402a kann eine oder mehrere Datenübertragungen, Datenverarbeitungen, Zeitgeberfunktionen oder dergleichen ausführen, um eine oder mehrere Funktionen einer integrierten Schaltungsvorrichtung 123 und/oder eines Speicherarrays 120 zu testen (z. B. um eine oder mehrere fehlerhafte Bitleitungen, fehlerhafte Wortleitungen, fehlerhafte Löschblöcke zu identifizieren; um einen oder mehrere Test- und/oder Fehlerberichte für eine Testvorrichtung, eine Hostvorrichtung 110, einen Speicher-Client 116 oder dergleichen zu generieren).The flow control processing unit 402a can get test data from the storage array 200 in volatile memory 406 stream where the built-in self-test unit can process the data for errors or the like. A built-in self-test processing unit of a flow control processing unit 402a may perform one or more data transfers, data processing, timer functions, or the like to perform one or more functions of an integrated circuit device 123 and / or a storage array 120 to test (e.g. to identify one or more faulty bit lines, faulty word lines, faulty erase blocks; one or more test and / or fault reports for a test device, a host device 110 , a storage client 116 or the like to generate).

In einer Ausführungsform kann eine Flusssteuerungs-Verarbeitungseinheit 402a einen oder mehrere Interruptports (z. B. Soft- oder Logikinterruptports, physische oder elektrische Hardinterruptports oder dergleichen) aufweisen, über welche die Flussteuerungs-Verarbeitungseinheit 402a ein oder mehrere Signale empfangen kann (z. B. Betriebsmodusauswahlsignale, Rückkopplungssignale, Programmier- und/oder Löschimpulszählungen, Bestätigungs- oder Fehlschlagsignale zur Programmier- und/oder Löschverifizierung und/oder andere Interrupts oder andere Signale, die es der Flusssteuerungs-Verarbeitungseinheit 402a ermöglichen, eine oder mehrere Speicheroperationen für den Mikrocontroller 150 zu verwalten).In one embodiment, a flow control processing unit 402a have one or more interrupt ports (e.g., soft or logic interrupt ports, physical or electrical hard interrupt ports, or the like) through which the flow control processing unit 402a may receive one or more signals (e.g., operating mode selection signals, feedback signals, programming and / or erase pulse counts, acknowledgment or failure signals for programming and / or erase verification, and / or other interrupts or other signals to the flow control processing unit 402a enable one or more memory operations for the microcontroller 150 manage).

In bestimmten Ausführungsformen kann eine Flusssteuerungs-Verarbeitungseinheit 402a einen Status (z. B. bereit, ausgelastet oder dergleichen) des Mikrocontrollers 150 einer Vorrichtungssteuerung 126, einer Hostvorrichtung 110, einem Speicher-Client 116 oder dergleichen bereitstellen und kann einen bzw. eine oder mehrere Befehle und/oder Operationen für den Mikrocontroller 150 und/oder das Speicherarray 200 empfangen. Die Flusssteuerungs-Verarbeitungseinheit 402a kann den einen oder die mehreren Interruptports verwenden, um schnell (z. B. im Wesentlichen unmittelbar) auf einen Befehl zu reagieren, anstatt periodisch einen Befehl abzufragen und Latenz und Verzögerung einzuführen. Eine Flusssteuerungs-Verarbeitungseinheit 402a kann eine Subroutine zur Ausführung durch eine oder mehrere Verarbeitungseinheiten 402a-d, 404a-n eines Mikrocontrollers 150 basierend auf Signalen an dem einen oder den mehreren Interruptports, einem empfangenen Befehl für eine Operation oder dergleichen auswählen/bestimmen.In certain embodiments, a flow control processing unit 402a a status (e.g. ready, busy or the like) of the microcontroller 150 a device controller 126 , a host device 110 , a storage client 116 or the like and can provide one or more commands and / or operations for the microcontroller 150 and / or the storage array 200 receive. The flow control processing unit 402a may use the one or more interrupt ports to respond quickly (e.g., substantially immediately) to a command, rather than periodically polling a command and introducing latency and delay. A flow control processing unit 402a can be a subroutine for execution by one or more processing units 402a-d . 404a-n of a microcontroller 150 select based on signals on the one or more interrupt ports, a received command for an operation, or the like.

Beispielsweise kann in einer Ausführungsform eine Flusssteuerungs-Verarbeitungseinheit 402a (z.B. von einer Vorrichtungssteuerung 126, einer Hostvorrichtung 110, einem Speicher-Client 116 oder dergleichen) ein Befehlsinterruptsignal (z. B. ein einziges Bit oder dergleichen), einen Befehlsindex (z. B. mehrere Bits, die anzeigen, welche vordefinierte Operation das Befehlsinterruptsignal aufruft), einen Befehlsoperationscode oder OPCODE (z. B. mehrere Bits, die eine Art des Interrupts, wie etwa einen Befehlsinterrupt, einen Aussetzinterrupt, einen Wiederaufnahmeinterrupt, einen Rücksetzinterrupt oder dergleichen, anzeigen) und/oder ein oder mehrere andere Interruptsignale empfangen, auf deren Basis die Flusssteuerungs-Verarbeitungseinheit 402a eine Subroutine auswählen/bestimmen kann, die eine oder mehrere Anweisungen für eine oder mehrere Verarbeitungseinheiten 402a-d, 404a-n des Mikrocontrollers 150 aufweist.For example, in one embodiment, a flow control processing unit 402a (e.g. from a device controller 126 , a host device 110 , a storage client 116 or the like) a command interrupt signal (e.g., a single bit or the like), a command index (e.g., several bits indicating which predefined operation calls the command interrupt signal), a command operation code or OPCODE (e.g. multiple bits, which indicate a type of interrupt, such as a command interrupt, a suspend interrupt, a resume interrupt, a reset interrupt or the like) and / or receive one or more other interrupt signals based on which the flow control processing unit 402a a subroutine can select / determine one or more instructions for one or more processing units 402a-d . 404a-n of the microcontroller 150 having.

Eine Flusssteuerungs-Verarbeitungseinheit 402a kann in bestimmten Ausführungsformen auf eine Anforderung für einen harten Interrupt reagieren, kann einen empfangenen Befehlsindex in einen Programmzähler des Mikrocontrollers 150 (z. B. in die niedrigeren Bits oder einen anderen vordefinierten Ort des Programmzählers) kopieren oder dergleichen. Eine Anweisung, die dem Befehlsindex in dem Programmzähler entspricht, kann eine unbedingte Sprunganweisung aufweisen, die auf eine Zielsubroutine weist, welche die angeforderte Operation ausführt.A flow control processing unit 402a may respond to a hard interrupt request in certain embodiments, may receive a received command index into a program counter of the microcontroller 150 Copy (e.g. into the lower bits or another predefined location of the program counter) or the like. An instruction that corresponds to the instruction index in the program counter can have an unconditional branch instruction that points to a Directs the target subroutine to perform the requested operation.

In einer Ausführungsform kann eine Flusssteuerungs-Verarbeitungseinheit 402a eine oder mehrere andere Verarbeitungseinheiten 402a-d, 404a-n verwalten, um eine Schreiben-nach-Lesen-Gefahr und/oder eine oder mehrere andere Gefahren (z. B. Lesen-nach-Schreiben-Gefahren, Schreiben-nach-Schreiben-Gefahren, strukturelle Gefahren, Steuerungsgefahren oder dergleichen) zu vermeiden. Beispielsweise kann eine Flussteuerungs-Verarbeitungseinheit 402a eine Anweisung für einen Einzelinterrupt-Wartevorgang (Single Interrupt Wait, SIW) und/oder einen Gruppeninterrupt-Wartevorgang (Group Interrupt Wait, GIW) als Warteanweisungen oder dergleichen verwenden, um proaktiv einen Status außerhalb der Flusssteuerungs-Verarbeitungseinheit 402a zu überprüfen und darauf zu warten (z. B. Warten auf ein Signal für einen weichen/logischen Interrupt, ein Signal für einen harten/physischen Interrupt, eine andere vordefinierte Bedingung oder dergleichen), um eine Ausführungsreihenfolge zur Vermeidung einer Schreiben-nach-Lesen-Gefahr, einer anderen Gefahr oder dergleichen zu erzwingen.In one embodiment, a flow control processing unit 402a one or more other processing units 402a-d . 404a-n manage to avoid a write-after-read risk and / or one or more other dangers (e.g. read-after-write risks, write-after-write risks, structural risks, control risks or the like). For example, a flow control processing unit 402a use an instruction for a single interrupt wait (SIW) and / or a group interrupt wait (GIW) as wait instructions or the like to proactively detect a status outside the flow control processing unit 402a check and wait (e.g., waiting for a soft / logical interrupt signal, a hard / physical interrupt signal, another predefined condition, or the like) to execute order to avoid write-after-read -Danger to force another danger or the like.

In bestimmten Ausführungsformen kann eine Flusssteuerungs-Verarbeitungseinheit 402a eine Ausführungsreihenfolge für eine oder mehrere andere Verarbeitungseinheiten 402a-d, 404a-n mittels einer oder mehrerer Interruptwarteanweisungen (z. B. SIW und/oder GIW) verwalten. Beispielsweise kann eine Flusssteuerverwaltungseinheit 402a eine erste Anweisungssequenz ausführen, einen SIW- und/oder GIW-Befehl ausführen, der eine Interruptbedingung (z. B. ein externes Signal oder dergleichen) identifiziert, auf die Interruptbedingung warten und eine zweite Anweisungssequenz als Reaktion auf die Erfüllung der Interruptbedingung ausführen.In certain embodiments, a flow control processing unit 402a an order of execution for one or more other processing units 402a-d . 404a-n Manage using one or more interrupt waiting instructions (e.g. SIW and / or GIW). For example, a flow control management unit 402a execute a first sequence of instructions, execute a SIW and / or GIW instruction which identifies an interrupt condition (e.g. an external signal or the like), wait for the interrupt condition and execute a second sequence of instructions in response to the fulfillment of the interrupt condition.

Eine GIW-Warteanweisung ist in einer Ausführungsform im Wesentlichen einer SIW-Warteanweisung ähnlich, außer dass sie bewirkt, dass die Flusssteuerungs-Verarbeitungseinheit 402a auf mehrere Interruptsignale in einer vordefinierten Gruppe (z. B. mehrere physisch in Hardware gruppierte Interruptsignale oder dergleichen) wartet. In bestimmten Ausführungsformen kann eine GIW-Warteanweisung einrichtbar sein, um selektiv den binären Operator UND oder den binären Operator ODER unter den ausgewählten mehreren Interruptsignalen zu verwenden. Wenn beispielsweise ein binärer UND-Operator ausgewählt wird, wartet die GIW-Warteanweisung, bis sie alle ausgewählten mehreren Interruptsignale empfängt. Wenn ein binärer ODER-Operator ausgewählt wird, warte die GIW-Warteanweisung, bis sie eines der ausgewählten mehreren Interruptsignale empfängt, woraufhin die GIW-Warteanweisung der Flusssteuerungs-Verarbeitungseinheit 402a erlaubt, fortzufahren.A GIW wait instruction is essentially similar to a SIW wait instruction in one embodiment, except that it causes the flow control processing unit 402a waiting for multiple interrupt signals in a predefined group (e.g. multiple interrupt signals physically grouped in hardware or the like). In certain embodiments, a GIW wait instruction may be set up to selectively use the binary operator AND or the binary operator OR among the selected plurality of interrupt signals. For example, if a binary AND operator is selected, the GIW wait instruction waits until it receives all of the selected multiple interrupt signals. If a binary OR operator is selected, the GIW wait instruction waits until it receives one of the selected multiple interrupt signals, whereupon the flow control processing unit's GIW wait instruction 402a allowed to continue.

In bestimmten Ausführungsformen kann, wenn mehrere Zielinterruptsignale nicht physisch gruppiert sind und eine GIW-Warteanweisung daher nicht für die mehreren Zielinterruptsignale verwendet werden kann, eine Flusssteuerungs-Verarbeitungseinheit 402a eine Folge von aufeinanderfolgenden SIW-Anweisungen, die sich zusammen wie eine einzige GIW-Anweisung verhalten können, unterstützen oder dergleichen.In certain embodiments, when multiple target interrupt signals are not physically grouped, and therefore a GIW wait instruction cannot be used for the multiple target interrupt signals, a flow control processing unit can 402a support a sequence of successive SIW instructions, which together can behave as a single GIW instruction, or the like.

In einer Ausführungsform fungiert eine Flusssteuerungs-Verarbeitungseinheit 402a als das Befehlszentrum einer oder mehrerer anderer Verarbeitungseinheiten 402b-d, 404a-n. Eine Flusssteuerungs-Verarbeitungseinheit 402a kann Befehle und/oder Daten an andere Verarbeitungseinheiten 402b-d, 404a-n senden und ihren Status überwachen. Dieses Eine-an-alle-Kommunikationsmuster kann in bestimmten Ausführungsformen Mikrocode- und Entwurfskomplexität verringern. In einer Ausführungsform kann, um einen von der Flusssteuerungs-Verarbeitungseinheit 402a verwendeten Anweisungsspeicherraum 406 zu minimieren und/oder um zu verhindern, dass die Flusssteuerungs-Verarbeitungseinheit 402a zu einem Leistungsengpass wird, die Flusssteuerungs-Verarbeitungseinheit 402a einige Aufgaben steuern und verfolgen, jedoch andere Aufgaben für eine oder mehrere Verarbeitungseinheiten 402b-d, 404a-n aufrufen, ohne einen aktuellen Status zu überwachen und/oder zu verfolgen.In one embodiment, a flow control processing unit functions 402a as the command center of one or more other processing units 402b-d . 404a-n , A flow control processing unit 402a can send commands and / or data to other processing units 402b-d . 404a-n send and monitor their status. This one-to-all communication pattern can reduce microcode and design complexity in certain embodiments. In one embodiment, one may be from the flow control processing unit 402a statement storage space used 406 to minimize and / or to prevent the flow control processing unit 402a becomes a performance bottleneck, the flow control processing unit 402a control and track some tasks, but other tasks for one or more processing units 402b-d . 404a-n access without monitoring and / or tracking a current status.

Um die Steuerung durch eine Flusssteuerungs-Verarbeitungseinheit 402a zu erleichtern und/oder zu vereinfachen, können in bestimmten Ausführungsformen eine oder mehrere andere Verarbeitungseinheiten 402b-d, 404a-n eine im Wesentlichen ähnliche Schnittstelle (z. B. eine Standardschnittstelle oder dergleichen) aufweisen. Eine oder mehrere unterschiedliche Verarbeitungseinheiten 402a-d, 404a-n können eine Standardschnittstelle aufweisen, können jedoch einen unterschiedlichen Anweisungssatz zum Ausführen verschiedener Kategorien und/oder Arten von Aufgaben unterstützen.For control by a flow control processing unit 402a To facilitate and / or simplify, in certain embodiments, one or more other processing units 402b-d . 404a-n have a substantially similar interface (e.g. a standard interface or the like). One or more different processing units 402a-d . 404a-n can have a standard interface, but can support a different set of instructions to perform different categories and / or types of tasks.

Während viele Aufgaben (z. B. mit komplexen Algorithmen und/oder wiederholter Ausführung) durch die Verarbeitungseinheiten 402b-d, 404a-n über das Standardschnittstellenprotokoll der Flusssteuerungs-Verarbeitungseinheit 402a gesteuert werden können, kann es andere kleine und/oder einmalig ausgeführte Aufgaben für bestimmte Arten von Operationen geben. In Ausführungsformen, in denen es viele solcher kleinen Aufgaben gibt, kann die Flusssteuerungs-Verarbeitungseinheit 402a eine erweiterte und/oder anpassbare Schnittstelle aufweisen, um Unterstützung für die Aufgaben, für neue Aufgaben im Zeitverlauf, für benutzerdefinierte Aufgaben oder dergleichen bereitzustellen.During many tasks (e.g. with complex algorithms and / or repeated execution) by the processing units 402b-d . 404a-n via the standard interface protocol of the flow control processing unit 402a can be controlled, there may be other small and / or one-time tasks for certain types of operations. In embodiments where there are many such small tasks, the flow control processing unit can 402a have an extended and / or customizable interface to support the tasks for new ones Provide tasks over time, for custom tasks, or the like.

Beispielsweise kann die Flusssteuerungs-Verarbeitungseinheit 402a eine oder mehrere Befehlstabellen in einer Steuerregisteranordnung (z. B. 64 Bits mal 16 Bits oder dergleichen) des Mikrocontrollers 150 unterstützen. Auf eine Steuerregisteranordnung kann in bestimmten Ausführungsformen durch die Anweisungen der Flusssteuerungs-Verarbeitungseinheit 402a zum Laden (LOD) und/oder Speichern (STR) zugegriffen werden. Mindestens ein Abschnitt des Raums der Steuerregisteranordnung kann virtuell sein, da das Design der Flusssteuerungs-Verarbeitungseinheit 402a möglicherweise nur eine Teilmenge des Raums (z. B. 5 der 64 Register oder dergleichen) einnimmt. Der Rest der Steuerregisteranordnung kann relativ unabhängig von der Flusssteuerungs-Verarbeitungseinheit 402a, zur Verwendung durch benutzerdefinierte Aufgaben oder dergleichen, sein. Ein oder mehrere Register in der Steuerregisteranordnung, die nicht für die Flusssteuerungs-Verarbeitungseinheit 402a reserviert sind, können in bestimmten Ausführungsformen benutzerdefinierte Befehlstabellen speichern, um die Funktionalität des Mikrocontrollers zum Ausführen von kleinen Aufgaben, einmaligen Aufgaben, neuen Aufgaben im Zeitverlauf oder dergleichen zu erweitern.For example, the flow control processing unit 402a one or more instruction tables in a control register array (e.g. 64 bits by 16 bits or the like) of the microcontroller 150 support. A control register array can be accessed in certain embodiments by the instructions of the flow control processing unit 402a can be accessed for loading (LOD) and / or saving (STR). At least a portion of the space of the control register array can be virtual because of the design of the flow control processing unit 402a may occupy only a subset of the space (e.g. 5 of the 64 registers or the like). The rest of the control register arrangement can be relatively independent of the flow control processing unit 402a , for use by custom tasks or the like. One or more registers in the control register array that are not for the flow control processing unit 402a reserved, in certain embodiments, can store custom command tables to extend the functionality of the microcontroller to perform small tasks, one-time tasks, new tasks over time, or the like.

In einigen Ausführungsformen kann ein Eine-an-alle-Kommunikationsmuster Hin-undzurück-Signal-/Befehlspaare zwischen der Flusssteuerungs-Verarbeitungseinheit 402a und der Zeitsteuerungs-Verarbeitungseinheit 402b verwenden, welche die Geschwindigkeit des Mikrocontrollers 150 steuern können. Eine Ausgabe der Zeitsteuerungs-Verarbeitungseinheit 402b kann während einer gesamten Speicherzugriffsoperations an ein oder mehrere periphere Module des Speicherarrays 200 geliefert werden, um das Timing der Speicherzugriffsoperations zu steuern. Wenn die Flussteuerungs-Verarbeitungseinheit 402a das einzige Hauptmodul in dem Mikrocontroller 150 bleibt, kann sie den Fortschritt der Zeitsteuerungs-Verarbeitungseinheit 402b für jeden Schritt einer Speicherzugriffsoperations auf einem Speicherarray 200 unter Verwendung der Verarbeitungszeit und/oder des Overheads von flüchtigem Speicher 406 überwachen, um die Flusssteuerungs-Verarbeitungseinheit 402a und die Zeitsteuereinheit 402b zu synchronisieren, da die Flusssteuerungs-Verarbeitungseinheit 402a Befehle an die Zeitsteuereinheit 402b sendet und Rückkopplungssignale von der Zeitsteuerungs-Verarbeitungseinheit 402b empfängt (z. B. über die Interruptschnittstelle der Flusssteuerungs-Verarbeitungseinheit 402a oder dergleichen).In some embodiments, a one-to-all communication pattern back and forth signal / command pairs may exist between the flow control processing unit 402a and the timing processing unit 402b use which is the speed of the microcontroller 150 can control. An output from the timing processing unit 402b can be attached to one or more peripheral modules of the storage array during an entire memory access operation 200 are provided to control the timing of the memory access operation. If the flow control processing unit 402a the only main module in the microcontroller 150 remains, it can monitor the progress of the timing processing unit 402b for each step of a memory access operation on a memory array 200 using processing time and / or overhead of volatile memory 406 monitor to the flow control processing unit 402a and the timing unit 402b to synchronize as the flow control processing unit 402a Commands to the timing unit 402b sends and feedback signals from the timing processing unit 402b receives (e.g. via the interrupt interface of the flow control processing unit 402a or similar).

Um die Parallelität der Verarbeitungseinheiten 402a-d, 404a-n und/oder Pipelines eines Mikrocontrollers 150 zu verbessern, um eine Anzahl von Mikrocodezeilen zu reduzieren, Anweisungs-/Datenspeicherraum 406 zu sparen oder dergleichen, können eine oder mehrere der Verarbeitungseinheiten 402a-d, 404a-n eine oder mehrere Puffer- und/oder Ausgabestufen aufweisen. Während die Flusssteuerungs-Verarbeitungseinheit 402a weiterhin ein Master für den Mikrocontroller 150 sein kann, kann bei Aktivierung durch die Flusssteuerungs-Verarbeitungseinheit 402a die Zeitsteuerungs-Verarbeitungseinheit 402b ein Proxy für die Flusssteuerungs-Verarbeitungseinheit 402a werden, der zeitnah andere Verarbeitungseinheiten 402c-d, 404a-n für eine oder mehrere Speicheroperationen auf einem Speicherarray 200 auslöst.The parallelism of the processing units 402a-d . 404a-n and / or pipelines of a microcontroller 150 improve, to reduce a number of microcode lines, instruction / data storage space 406 to save or the like, one or more of the processing units 402a-d . 404a-n have one or more buffer and / or output stages. While the flow control processing unit 402a still a master for the microcontroller 150 can be when activated by the flow control processing unit 402a the timing processing unit 402b a proxy for the flow control processing unit 402a the other processing units in real time 402c-d . 404a-n for one or more storage operations on a storage array 200 triggers.

Die Zeitsteuerungs-Verarbeitungseinheit 402b kann Kenntnis über den Ausführungsfortschritt der Speicheroperation haben, da die Zeitsteuereinheit 402b das Timing und/oder die Geschwindigkeit des gesamten Mikrocontrollers 150 steuern kann. Die Zeitsteuerungs-Verarbeitungseinheit 402b kann mehr verfügbaren Raum (z. B. in mit der Zeitsteuereinheit 402b verknüpftem flüchtigem Speicher 406) zur Erweiterung des Anweisungssatzes der Zeitsteuerungs-Verarbeitungseinheit 402b aufweisen als die Flusssteuerungs-Verarbeitungseinheit 402a, welcher verwendet werden kann, um zu ermöglichen, dass die Zeitsteuerungs-Verarbeitungseinheit 402b als Proxy für die Flusssteuerungs-Verarbeitungseinheit 402a fungiert. Beispielsweise kann nur ein kleiner Teil an Platz in der Anweisungscodiertabelle der Zeitsteuerungs-Verarbeitungseinheit 402b mit Anweisungsidentifikationscode, Argumenten und Schaltern (z. B. Aktivierungs-/Deaktivierungsbits) gefüllt sein, wodurch Raum in der Anweisungscodiertabelle der Zeitsteuerungs-Verarbeitungseinheit 402b zum Einschließen weiterer Argumente und Schalter bleibt.The timing processing unit 402b may have knowledge of the progress of the storage operation since the timing unit 402b the timing and / or the speed of the entire microcontroller 150 can control. The timing processing unit 402b may have more available space (e.g. in with the timer 402b linked volatile memory 406 ) to expand the instruction set of the timing processing unit 402b have as the flow control processing unit 402a which can be used to enable the timing processing unit 402b as a proxy for the flow control processing unit 402a acts. For example, only a small portion of space in the instruction processing table of the timing processing unit 402b filled with instruction identification code, arguments, and switches (e.g., enable / disable bits), creating space in the instruction encoding table of the timing processing unit 402b to include further arguments and switches remains.

In bestimmten Ausführungsformen kann überschüssige Kapazität der Anweisungscodiertabelle der Zeitsteuerungs-Verarbeitungseinheit 402b ein Array (z. B. ein 8-Bit-Array oder dergleichen) speichern, das Trigger zur Verwendung durch die Zeitsteuerungs-Verarbeitungseinheit 402b zum Auslösen der anderen Verarbeitungseinheiten 402c-d, 404a-n oder dergleichen definiert. Beispielsweise kann die Flusssteuerungs-Verarbeitungseinheit 402a die Zeitsteuerungs-Verarbeitungseinheit 402b starten und/oder initiieren, um eine Subroutine auszuführen. Die Zeitsteuerungs-Verarbeitungseinheit 402b kann als ein Hintergrundprozess (z. B. parallel mit der Flusssteuerungs-Verarbeitungseinheit 402a) ausgeführt werden, um einen oder mehrere Trigger an die Flusssteuerungs-Verarbeitungseinheit 402a, die Datenlatchsteuereinheit 402c, die Spannungssteuerungs-Verarbeitungseinheit 402d, eine oder mehrere externe Verarbeitungseinheiten 404a-n oder dergleichen bereitzustellen.In certain embodiments, excess capacity of the instruction processing table of the timing processing unit 402b store an array (e.g., an 8-bit array or the like), the trigger for use by the timing processing unit 402b to trigger the other processing units 402c-d . 404a-n or the like. For example, the flow control processing unit 402a the timing processing unit 402b start and / or initiate to execute a subroutine. The timing processing unit 402b can be used as a background process (e.g. in parallel with the flow control processing unit 402a) are executed to trigger one or more of the flow control processing unit 402a , the data latch control unit 402c , the voltage control processing unit 402d , one or more external processing units 404a-n or the like.

Die Flusssteuerungs-Verarbeitungseinheit 402a kann einen Erstellungsbefehl an eine oder mehrere andere Verarbeitungseinheiten 402b-d, 404a-n zum Erstellen einer nächsten Aufgabe, Bereitstellen einer Aktualisierung, Erstellen einer Ausgabe in einem Puffer oder dergleichen senden. Die Flusssteuerungs-Verarbeitungseinheit 402a kann in verschiedenen Ausführungsformen in Abhängigkeit von der zugeordneten Aufgabe auf den Trigger der Zeitsteuerungs-Verarbeitungseinheit 402b warten oder nicht warten, um einen nächsten Erstellungsbefehl zu senden. Die Zeitsteuerungs-Verarbeitungseinheit 402b kann eine oder mehrere andere Verarbeitungseinheiten 402a, 402c, 402d, 404a-n dazu auslösen, einen Pufferwert an eine zugeordnete Ausgabestufe zu kopieren oder dergleichen (z. B. um eine Aufgabe abzuschließen, um einen nächsten Schritt einer Aufgabe auszulösen oder dergleichen). The flow control processing unit 402a can issue a build command to one or more other processing units 402b-d . 404a-n send to create a next task, provide an update, create an output in a buffer, or the like. The flow control processing unit 402a can trigger the timing processing unit in various embodiments depending on the assigned task 402b wait or not wait to send a next build command. The timing processing unit 402b can be one or more other processing units 402a . 402c . 402d . 404a-n trigger to copy a buffer value to an associated output stage or the like (e.g., to complete a task, to trigger a next step of a task, or the like).

Die Flusssteuerungs-Verarbeitungseinheit 402a kann einen Initialisierungsbefehl (z.B. Startbefehl, Erstellungsbefehl oder dergleichen) an eine Verarbeitungseinheit 402b-d, 404a-n senden, und die Zeitsteuerungs-Verarbeitungseinheit 402b kann Trigger zum Initiieren nachfolgender Abschnitte einer Aufgabe an eine Verarbeitungseinheit 402c-d, 404a-n senden, kann Feedback an die Flusssteuerungs-Verarbeitungseinheit 402a senden (z. B. über einen Interruptport oder eine andere Interruptschnittstelle der Flusssteuerungs-Verarbeitungseinheit 402a) oder dergleichen. Ein Triggersignal aus der Zeitsteuerungs-Verarbeitungseinheit 402b kann eine andere Verarbeitungseinheit 402c-d, 404a-n dazu auslösen, ein Ausgabesignal, einen Wert oder dergleichen bereitzustellen (z. B. die Datenlatchsteuerungs-Verarbeitungseinheit 402c dazu, einen Wert in ein Datenlatch zu laden, die Spannungssteuerungs-Verarbeitungseinheit 402d dazu, eine Ausgangsspannung bereitzustellen, oder dergleichen), um eine Aufgabe abzuschließen, als Zwischenschritt einer Aufgabe oder dergleichen.The flow control processing unit 402a can send an initialization command (eg start command, creation command or the like) to a processing unit 402b-d . 404a-n send, and the timing processing unit 402b can trigger to initiate subsequent sections of a task to a processing unit 402c-d . 404a-n can send feedback to the flow control processing unit 402a send (e.g. via an interrupt port or another interrupt interface of the flow control processing unit 402a) or similar. A trigger signal from the timing processing unit 402b can be another processing unit 402c-d . 404a-n trigger to provide an output signal, value, or the like (e.g., the data latch control processing unit 402c to load a value into a data latch, the voltage control processing unit 402d to provide an output voltage or the like) to complete a task, as an intermediate step of a task or the like.

Beispielsweise kann die Spannungssteuerungs-Verarbeitungseinheit 402d binäre und/oder digitale Werte von dem Mikrocontroller 150 in analoge Spannungen für das Speicherarray 200 umwandeln (z. B. Programmierspannungen, Löschspannungen, Lesespannungen, Vorspannungen, Wortleitungsspannungen, Bitleitungsspannungen, Sperrspannungen oder dergleichen). Die Datenlatchsteuerungs-Verarbeitungseinheit 402c kann in bestimmten Ausführungsformen einen oder mehrere Datenpuffer für das Speicherarray, logische Schaltungen für das Speicherarray 200 (z. B. YLOG-Logikschaltungen, welche die Leseverstärker 250, Lese-/Schreibschaltungen 230, Zeilendecodierer 240 oder dergleichen steuern) und/oder andere Schaltungen für ein Speicherarray 200 einer integrierten Schaltungsvorrichtung 123 steuern.For example, the voltage control processing unit 402d binary and / or digital values from the microcontroller 150 into analog voltages for the memory array 200 convert (e.g. programming voltages, erase voltages, read voltages, bias voltages, word line voltages, bit line voltages, reverse voltages or the like). The data latch control processing unit 402c may, in certain embodiments, one or more data buffers for the memory array, logic circuitry for the memory array 200 (e.g., YLOG logic circuits that the sense amplifiers 250 , Read / write circuits 230 , Row decoder 240 or the like) and / or other circuitry for a memory array 200 an integrated circuit device 123 Taxes.

In einer Ausführungsform kann die Datenlatchsteuerungs-Verarbeitungseinheit 402c Daten aus einem flüchtigen Speicher 406 in einen Befehlsindex decodieren (z. B. Decodieren von 32- Bit- und/oder 64-Bit-SRAM-Daten in einen oder mehrere Befehlsindizes oder dergleichen). Die Datenlatchsteuerungs-Verarbeitungseinheit 402c kann in bestimmten Ausführungsformen decodierte Befehlsindizes in einen oder mehrere Befehle (z. B. YLOG-Befehle) unter Verwendung von hartcodierter Kombinationslogik und/oder anderen Regeln übersetzen. Die Datenlatchsteuerungs-Verarbeitungseinheit 402c kann eine vorher festgelegte Anzahl von Befehlen pro Taktzyklus oder Satz von Taktzyklen puffern. Beispielsweise kann die Datenlachtsteuerungs-Verarbeitungseinheit 402c vier Befehle pro Taktzyklus puffern und einen der vier logischen Befehle pro Viertel eines Taktzyklus ausgeben (z. B. alle 20 Nanosekunden für einen 80-Nanosekunden-Taktzyklus oder dergleichen). Die Datenlatchsteuerungs-Verarbeitungseinheit 402c kann vordefinierte Befehlssequenzen (z. B. YLOG-Befehlssequenzen) in flüchtigem Speicher 406 oder dergleichen speichern.In one embodiment, the data latch control processing unit 402c Data from a volatile memory 406 decode into a command index (e.g., decode 32-bit and / or 64-bit SRAM data into one or more command indexes or the like). The data latch control processing unit 402c may, in certain embodiments, translate decoded instruction indexes into one or more instructions (e.g., YLOG instructions) using hard-coded combination logic and / or other rules. The data latch control processing unit 402c can buffer a predetermined number of instructions per clock cycle or set of clock cycles. For example, the data laundering control processing unit 402c Buffer four instructions per clock cycle and issue one of the four logical instructions per quarter of a clock cycle (e.g., every 20 nanoseconds for an 80 nanosecond clock cycle or the like). The data latch control processing unit 402c can have predefined command sequences (e.g. YLOG command sequences) in volatile memory 406 or save the like.

Beispielsweise kann in einer Ausführungsform die Datenlatchsteuerungs-Verarbeitungseinheit 402c etwa 64, 128, 256 oder mehr Befehlssequenzen speichern, die jeweils eine oder mehrere geordnete Listen von Befehlen aufweisen. Eine Befehlssequenz kann in verschiedenen Ausführungsformen einen einzigen Befehl, mehrere Befehle, bis zu fünf Befehle, bis zu zehn Befehle, bis zu dreizehn Befehle, bis zu fünfzehn Befehle, bis zu zwanzig Befehle, mehr als zwanzig Befehle oder dergleichen einschließen.For example, in one embodiment, the data latch control processing unit 402c about 64, 128 . 256 or store more command sequences, each having one or more ordered lists of commands. A command sequence may include a single command, multiple commands, up to five commands, up to ten commands, up to thirteen commands, up to fifteen commands, up to twenty commands, more than twenty commands, or the like, in various embodiments.

Ein Mikrocontroller 150 kann eine flexible Steuerung von in Datenlatches gespeicherten Werten bereitstellen, wobei die Datenlatchsteuerungs-Verarbeitungseinheit 402c Daten in Datenlatches basierend auf zu Befehlssequenzen decodierten Befehlsindizes speichert und die Flusssteuerungs-Verarbeitungseinheit 402a in einem oder mehreren Datenlatches gespeicherte Daten selektiv außer Kraft setzt. Beispielsweise kann die Flussteuerungs-Verarbeitungseinheit 402a die Datenlatchsteuerungs-Verarbeitungseinheit 402c dazu initiieren, eine Subroutine (z. B. Mikrocode oder anderen computerausführbaren Programmcode) auszuführen, um eine Befehlssequenz zu erstellen (z. B. einen oder mehrere Befehle für das Speicherarray 200 und/oder für Leseverstärker 250, Lese-/Schreibschaltungen 230, Zeilendecodierer 240 oder dergleichen), die Flusssteuerungs-Verarbeitungseinheit 402a kann einen oder mehrere Datenwerte direkt in einem oder mehreren Datenlatches speichern; die Flusssteuerungs-Verarbeitungseinheit 402a kann einen Befehlsindex für das Datenlatch maskieren, abschneiden, ändern, aktualisieren und/oder überschreiben.A microcontroller 150 can provide flexible control of values stored in data latches, the data latch control processing unit 402c Stores data in data latches based on instruction indices decoded into instruction sequences and the flow control processing unit 402a selectively overrides data stored in one or more data latches. For example, the flow control processing unit 402a the data latch control processing unit 402c initiate to execute a subroutine (e.g., microcode or other computer-executable program code) to create an instruction sequence (e.g., one or more instructions for the memory array 200 and / or for sense amplifiers 250 , Read / write circuits 230 , Row decoder 240 or the like), the flow control processing unit 402a can store one or more data values directly in one or more data latches; the flow control processing unit 402a can mask, truncate, modify, update, and / or override a command index for the data latch.

In bestimmten Ausführungsformen kann ein Lesebefehl für ein Speicherarray 200 eine höhere Priorität haben als ein Programmier- und/oder Löschbefehl (z. B. können in NAND-Flashspeicher Leseoperationen im Wesentlichen schneller ausgeführt werden als Programmier- und/oder Löschoperationen oder dergleichen). Der Mikrocontroller 150 kann als Reaktion auf das Empfangen einer zwischenzeitlichen Leseanforderung von der Ausführung einer Programmier- oder Löschbefehlssequenz auf eine Lesebefehlssequenz umschalten oder dergleichen und als Reaktion auf die Beendigung der Leseanweisungssequenz wieder auf die Programmier- oder Löschbefehlssequenz umschalten. Der Mikrocontroller 150 kann wieder auf die Programmier- oder Löschsubroutine umschalten, wo er in der Programmier- oder Löschbefehlssequenz aufgehört hat. In certain embodiments, a read command for a memory array 200 have a higher priority than a programming and / or erase command (e.g., read operations in NAND flash memory can be performed substantially faster than programming and / or erase operations or the like). The microcontroller 150 may switch from executing a program or erase instruction sequence to a read instruction sequence or the like in response to receiving an interim read request, and switch back to the program or erase instruction sequence in response to termination of the read instruction sequence. The microcontroller 150 can switch back to the programming or erase subroutine where it left off in the programming or erase command sequence.

In einer Ausführungsform kann ein Mikrocontroller 150 einen Satz von Schattenregistern einschließen, die einen Status für den Mikrocontroller 150 speichern, der anzeigt, wo die Aussetzung wirksam wurde. Jedoch kann in einer bestimmten Ausführungsform, um weniger Leistung und Schaltplatz zu verwenden als Schattenregister, die Flusssteuerungs-Verarbeitungseinheit 402a eine Registerdatei und anhängige Befehlssequenzen für die Verarbeitungseinheiten 402a-d, 404a-n auf einen Threadwechselstapel pushen und kann die Registerdatei und die anhängigen Befehlssequenzen als Reaktion auf die Wiederaufnahme der Programmier- oder Löschoperation nach einer zwischenzeitlichen Leseoperation von dem Threadwechselstapel poppen. Die Verarbeitungseinheiten 402a-d, 404a-n können die unterbrochene Programmier- oder Leseoperation dort beginnen, wo sie aufgehört haben, oder können bestimmte Befehle in der Befehlssequenz erneut ausführen, um den richtigen Operationszustand wiederherzustellen, oder dergleichen. Die Verwendung eines Threadwechselstapels kann weniger Register als die Verwendung von Schattenregistern für den gesamten Mikrocontroller 150 hinzufügen, während gleichzeitig ermöglicht wird, dass die Flusssteuerungs-Verarbeitungseinheit 402a und die Zeitsteuerungs-Verarbeitungseinheit 402b synchronisiert bleiben, sodass andere Verarbeitungseinheiten 402c-d, 404a-n in der Lage sind, die korrekten Pufferwerte zu erstellen, wenn die Zeitsteuerungs-Verarbeitungseinheit 402b sie auslöst, sogar nachdem eine unterbrochene Programmier- oder Löschoperation wiederaufgenommen wurde.In one embodiment, a microcontroller 150 include a set of shadow registers that provide status for the microcontroller 150 save, which shows where the suspension took effect. However, in a particular embodiment, to use less power and slot than shadow registers, the flow control processing unit can 402a a register file and pending instruction sequences for the processing units 402a-d . 404a-n push to a thread change stack and can pop the register file and pending instruction sequences from the thread change stack in response to resuming the program or delete operation after an interim read. The processing units 402a-d . 404a-n may begin the interrupted programming or reading operation from where it left off, or may rerun certain instructions in the instruction sequence to restore the correct operating state, or the like. Using a thread switch stack can have fewer registers than using shadow registers for the entire microcontroller 150 add while allowing the flow control processing unit 402a and the timing processing unit 402b remain synchronized so that other processing units 402c-d . 404a-n are able to create the correct buffer values when the timing processing unit 402b it triggers even after an interrupted programming or erasing operation is resumed.

5 stellt eine Ausführungsform eines Systems 500 mit mehreren On-Die-Speichermikrocontroller-Kernen 150a-n dar, die von einer Threadverwaltungseinheit 502 synchronisiert und/oder verwaltet werden. In der dargestellten Ausführungsform weist jeder der Mikrocontrollerkerne 150a-n eine ähnliche Größe auf (z. B. kann er ähnliche Verarbeitungseinheiten 302a-302d, eine ähnliche Anzahl von Verarbeitungseinheiten 302a-302d oder dergleichen aufweisen). 5 represents an embodiment of a system 500 with multiple on-die memory microcontroller cores 150a-n represented by a thread management unit 502 synchronized and / or managed. In the illustrated embodiment, each of the microcontroller cores 150a-n a similar size (e.g. it can have similar processing units 302a - 302d , a similar number of processing units 302a - 302d or the like).

Jeder Mikrocontrollerkern 150a-n kann in bestimmten Ausführungsformen mit einem unterschiedlichen Teilsatz von Speichermedien 122 (z. B. einem bzw. einer oder mehreren unterschiedlichen Dies, Die-Ebenen, Blöcken, Löschblöcken oder dergleichen) verknüpft sein, die jeweils in der Lage sind, Programmier-, Lese- und/oder Löschoperationen auf den verknüpften Teilsätzen von Speichermedien 122 auszuführen. In einer weiteren Ausführungsform können verschiedene Mikrocontrollerkerne 150a-n dazu eingerichtet sein, Programmier-, Lese- und/oder Löschoperationen auf einem beliebigen ausgewählten Teilsatz von Speichermedien 122 (z. B. einem bzw. einer oder mehreren unterschiedlichen Dies, Die-Ebenen, Blöcken, Löschblöcken oder dergleichen) auszuführen.Any microcontroller core 150a-n may, in certain embodiments, have a different subset of storage media 122 (e.g., one or more different dies, die levels, blocks, erase blocks, or the like), each capable of performing programming, reading, and / or erasing operations on the linked subsets of storage media 122 perform. In a further embodiment, different microcontroller cores can be used 150a-n be set up to perform programming, reading and / or erasing operations on any selected subset of storage media 122 (e.g., one or more different dies, die levels, blocks, erase blocks, or the like).

6 stellt eine andere Ausführungsform eines Systems 600 mit mehreren On-Die-Speichermikrocontroller-Kernen 150a-n und einer Threadverwaltungseinheit 502 dar. In der dargestellten Ausführungsform weist ein Mikrocontrollerkern 150a eine größere Größe als ein oder mehrere zusätzliche Mikrocontrollerkerne 150b-n auf (z. B. kann der Mikrocontrollerkern 150a mehr und/oder größere Verarbeitungseinheiten 302a-302d als die eine oder mehreren zusätzlichen Mikrocontrollerkerne 150b-n mit weniger und/oder kleineren Verarbeitungseinheiten 302a-c aufweisen oder dergleichen). 6 represents another embodiment of a system 600 with multiple on-die memory microcontroller cores 150a-n and a thread management unit 502 In the illustrated embodiment, a microcontroller core has 150a a larger size than one or more additional microcontroller cores 150b-n (e.g. the microcontroller core 150a more and / or larger processing units 302a - 302d than the one or more additional microcontroller cores 150b-n with fewer and / or smaller processing units 302a-c have or the like).

Mehrere Mikrocontrollerkerne 150a-n in Vollgröße, jeder mit vollständigen Fähigkeiten, wie in 5 dargestellt, können eine größere Menge an Energie und/oder Schaltungsfläche einer integrierten Schaltungsvorrichtung 123 verbrauchen. In 6 schließt das System 600 einen oder mehrere Mikrocontrollerkerne 150a in Vollgröße und einen oder mehrere in der Größe reduzierte und/oder partielle Mikrocontrollerkerne 150b-n ein (z. B. um Energie zu sparen, um die Schaltungsgröße zu reduzieren oder dergleichen). Beispielsweise weist in der dargestellten Ausführungsform nur zu Veranschaulichungszwecken ein erster Mikrocontrollerkern 150a in Vollgröße vier Verarbeitungseinheiten 302a-d auf, während ein oder mehrere partielle und/oder in der Größe reduzierte Mikrocontrollerkerne 150b-n drei Verarbeitungseinheiten 302a-c aufweisen (z. B. weniger als der Controllerkern 150a in Vollgröße).Multiple microcontroller cores 150a-n full size, everyone with full skills as in 5 can represent a larger amount of energy and / or circuit area of an integrated circuit device 123 consume. In 6 closes the system 600 one or more microcontroller cores 150a full size and one or more reduced and / or partial microcontroller cores 150b-n on (e.g., to save energy, reduce circuit size, or the like). For example, in the illustrated embodiment, a first microcontroller core points for illustration purposes only 150a full-size four processing units 302a-d on while one or more partial and / or reduced size microcontroller cores 150b-n three processing units 302a-c have (e.g. less than the controller core 150a in full size).

Bei dem einen oder den mehreren partiellen und/oder in der Größe reduzierten Mikrocontrollerkerne 150b-n wurden möglicherweise unnötige Register, selten verwendete Anweisungen, Zeigerstapel, Registerdateieinträge oder dergleichen entfernt, um die Größe zu reduzieren. Partielle und/oder in der Größe reduzierte Mikrocontrollerkerne 150b-n können in bestimmten Ausführungsformen in der Lage sein, alle Benutzermodusoperationen, einen vordefinierten Satz von Benutzermodusoperationen oder dergleichen auszuführen, können jedoch kleiner sein als ein vollständiger Mikroprozessorkern 150a in Vollgröße. Ein vollständiger Mikrocontroller 150a in Vollgröße kann in der Lage sein, sowohl Benutzermodusoperationen als auch eingebaute Selbsttest-Testmodusoperationen auszuführen.With the one or more partial and / or reduced in size microcontroller cores 150b-n unnecessary registers, rarely used instructions, pointer stacks, register file entries or the like may have been removed to reduce the size. Partial and / or reduced in size microcontroller cores 150b-n may be able in certain embodiments However, performing all user mode operations, a predefined set of user mode operations, or the like may be smaller than a full microprocessor core 150a full size. A complete microcontroller 150a full size may be able to perform both user mode operations and built-in self test test mode operations.

Beispielsweise kann ein vollständiger Mikrocontroller 150a in Vollgröße eine Flusssteuerungs-Verarbeitungseinheit 402a aufweisen, die eine eingebaute Selbsttestverarbeitungseinheit aufweist, während die partiellen und/oder in der Größe reduzierten Mikrocontrollerkerne 150b-n Flusssteuerungs-Verarbeitungseinheiten 402a ohne eingebaute Selbsttestverarbeitungseinheiten aufweisen können. In einer weiteren Ausführungsform kann ein vollständiger Mikrocontroller 150a in Vollgröße eine Flusssteuerungs-Verarbeitungseinheit 402a aufweisen, die sowohl eine Leseverarbeitungseinheit als auch eine Programmier-/Schreibverarbeitungseinheit aufweist, während die partiellen und/oder in der Größe reduzierten Mikrocontrollerkerne 150b-n Flusssteuerungs-Verarbeitungseinheiten 402a mit Leseverarbeitungseinheiten, jedoch ohne Programmier-/Schreibverarbeitungseinheiten aufweisen können.For example, a full microcontroller 150a a full-size flow control processing unit 402a have a built-in self-test processing unit, while the partial and / or reduced in size microcontroller cores 150b-n Flow control processing units 402a can have without built-in self-test processing units. In a further embodiment, a complete microcontroller 150a a full-size flow control processing unit 402a have both a read processing unit and a programming / writing processing unit, while the partial and / or reduced in size microcontroller cores 150b-n Flow control processing units 402a with reading processing units, but without programming / writing processing units.

Der vollständige Mikrocontroller 150a in Vollgröße kann eine oder mehrere Operationen (z. B. Programmieroperationen, Löschoperationen, eingebaute Selbsttest-Testoperationen oder dergleichen) für jeden unterschiedlichen Teilsatz von Speichermedien 122 einer integrierten Schaltungsvorrichtung 123 (z. B. ein bzw. eine oder mehrere unterschiedliche Dies, Die-Ebenen, Blöcke, Löschblöcke oder dergleichen) ausführen, da der eine oder die mehreren partiellen und/oder in der Größe reduzierten Mikrocontrollerkerne 150b-n die eine oder mehreren Operationen möglicherweise nicht unterstützen. In bestimmten Ausführungsformen können für Operationen, die jeder der Mikrocontrollerkerne 150a-n unterstützt (z. B. Leseoperationen), die verschiedenen Mikrocontrollerkerne 150a-n verschiedenen Teilsätzen von Speichermedien 122 einer integrierten Schaltungsvorrichtung 123 (z. B. einem bzw. einer oder mehreren Dies, Die-Ebenen, Blöcken, Löschblöcken oder dergleichen) zugewiesen sein.The complete microcontroller 150a Full size can be one or more operations (e.g., programming, erasing, built-in self-test operations, or the like) for each different subset of storage media 122 an integrated circuit device 123 (e.g. one or more different dies, die levels, blocks, erase blocks or the like) because the one or more partial and / or reduced-sized microcontroller cores 150b-n that may not support one or more operations. In certain embodiments, for operations each of the microcontroller cores 150a-n supports (e.g. read operations) the various microcontroller cores 150a-n different subsets of storage media 122 an integrated circuit device 123 (e.g. one or more dies, die levels, blocks, erase blocks, or the like).

Beispielsweise kann in einer Ausführungsform ein Die einer integrierten Schaltungsvorrichtung 123 mehrere Die-Ebenen (z. B. vier Die-Ebenen) aufweisen, jede mit getrennten Speicherarrays 200, die in der Lage sind, Speicheroperationen parallel auszuführen. Die-Ebenen können auf der gleichen Stufe (z. B. einer oder mehreren Schichten von Halbleitern, Metall oder anderen Leitern, Isolatoren oder dergleichen) einer integrierten Schaltungsvorrichtung 123 zueinander (z. B. benachbart auf der gleichen Stufe) angeordnet sein oder parallel auf verschiedenen versetzten Stufen oder dergleichen.For example, in one embodiment, a die of an integrated circuit device 123 have multiple die levels (e.g., four die levels), each with separate storage arrays 200 that are able to perform memory operations in parallel. The levels can be at the same level (e.g., one or more layers of semiconductors, metal, or other conductors, insulators, or the like) of an integrated circuit device 123 to each other (e.g. adjacent on the same step) or in parallel on different staggered steps or the like.

Jeder Die-Ebene kann in einer Ausführungsform ein unterschiedlicher Mikrocontrollerkem 150a-n für von jedem der Mikrocontrollerkerne 150a-n unterstützte Operationen (z. B. Leseoperationen) zugewiesen sein, während ein einziger Mikrocontrollerkern 150a (z. B. ein vollständiger Mikrocontrollerkern 150a in Vollgröße) eine oder mehrere Operationen, die nicht von jedem der Mikrocontrollerkerne 150a-n unterstützt werden, für jede Die-Ebene ausführen kann (z. B. Programmieroperationen, Löschoperationen, eingebaute Selbsttest-Testoperationen oder dergleichen). Beispielsweise können in einer Ausführungsform mit vier Die-Ebenen, einem Mikrocontrollerkern 150a in Vollgröße, der in der Lage ist, Programmieroperationen für jede der vier Die-Ebenen auszuführen, und drei zusätzlichen in der Größe reduzierten Mikrocontrollerkernen 150b-n, wobei alle vier Mikrocontrollerkerne 150a-n unterschiedlichen Die-Ebenen zur Ausführung von Leseoperationen zugewiesen sind, bis zu vier Leseoperationen parallel ausgeführt werden oder drei Leseoperationen und eine Programmieroperation oder dergleichen.In one embodiment, each die level can have a different microcontroller core 150a-n for from each of the microcontroller cores 150a-n supported operations (e.g., read operations) may be assigned while a single microcontroller core 150a (e.g. a full microcontroller core 150a full size) one or more operations that are not performed by each of the microcontroller cores 150a-n can be carried out for each die level (e.g. programming operations, delete operations, built-in self-test operations or the like). For example, in one embodiment with four die levels, one microcontroller core 150a full-size capable of performing programming operations for each of the four die levels, and three additional reduced-size microcontroller cores 150b-n , with all four microcontroller cores 150a-n are assigned different die levels for performing read operations, up to four read operations are performed in parallel, or three read operations and one programming operation or the like.

Auf diese Weise können in bestimmten Ausführungsformen Operationen mit hoher Priorität (z. B. Leseoperationen oder dergleichen) parallel auf mehreren Speicher-Dies oder anderen Speicherbereichen ausgeführt und dennoch Energieverbrauch und Schaltungsgröße minimiert werden. Das Ausführen jeweils nur einer einzigen Programmier- und/oder Löschoperation kann in bestimmten Ausführungsformen aufgrund der für Programmier- und/oder Löschoperationen verwendeten Spitzenleistung optimal für die Energieverwaltung sein, während Leseoperationen weniger Leistung verwenden können.In this way, in certain embodiments, high priority operations (e.g., read operations or the like) can be performed in parallel on multiple memory dies or other memory areas, and yet power consumption and circuit size can be minimized. Performing only a single program and / or erase operation may be optimal for power management in certain embodiments due to the peak power used for program and / or erase operations, while read operations may use less power.

Der eine oder die mehreren kleineren, in der Größe reduzierten Mikrocontrollerkerne 150b-n können in einer Ausführungsform jeweils eine Zeitsteuerungs-Verarbeitungseinheit 402b einschließen. In bestimmten Ausführungsformen kann eine Flusssteuerungs-Verarbeitungseinheit 402a für den einen oder die mehreren kleineren, in der Größe reduzierten Mikrocontrollerkerne 150b-n kleiner sein (z. B. reduziert, entfernt, mit einem kleineren Anweisungssatz, mit ausreichender Logik zum Ausführen einer Leseoperation, jedoch keiner Programmieroperation, oder dergleichen) als in dem größeren Mikrocontrollerkern 150a in Vollgröße.The one or more smaller, smaller-sized microcontroller cores 150b-n may each have a timing processing unit in one embodiment 402b lock in. In certain embodiments, a flow control processing unit 402a for one or more smaller, smaller-sized microcontroller cores 150b-n be smaller (e.g., reduced, removed, with a smaller set of instructions, with enough logic to perform a read operation but not a programming operation, or the like) than in the larger microcontroller core 150a full size.

In einer weiteren Ausführungsform weisen der eine oder die mehreren kleineren, in der Größe reduzierten Mikrocontrollerkerne 150b-n möglicherweise keine Flusssteuerungs-Verarbeitungseinheit 402a auf, jedoch kann ein Teil der Logik und/oder Funktionalität der Flusssteuerungs-Verarbeitungseinheit 402a mit einer Zeitsteuerungs-Verarbeitungseinheit 402b oder dergleichen kombiniert sein. Mehrere kleinere, in der Größe reduzierte Mikrocontrollerkerne 150b-n können in einer Ausführungsform eine einzige Datenlatchsteuerungs-Verarbeitungseinheit 402c oder dergleichen gemeinsam nutzen. In bestimmten Ausführungsformen können sowohl Mikrocontrollerkerne 150a in Vollgröße als auch in der Größe reduzierte Mikrocontrollerkerne 150b-n den gleichen Firmwarecode nutzen, können jedoch verschiedene Subroutinen oder dergleichen ausführen. Flüchtige Speicherpuffer 406 können in einer Ausführungsform in der Größe reduziert, gemeinsam genutzt, eliminiert oder dergleichen sein, um die Schaltungsgröße in einem oder mehreren in der Größe reduzierten Mikrocontrollerkernen 150b-n zu reduzieren.In a further embodiment, the one or more smaller, reduced-size microcontroller cores 150b-n may not be a flow control processing unit 402a but some of the logic and / or functionality of the flow control processing unit 402a with a timing processing unit 402b or the like can be combined. Several smaller, smaller-sized microcontroller cores 150b-n can, in one embodiment, a single data latch control processing unit 402c or share the like. In certain embodiments, both microcontroller cores 150a full-size and reduced-size microcontroller cores 150b-n use the same firmware code, but can execute different subroutines or the like. Volatile memory buffers 406 may be reduced in size, shared, eliminated, or the like, in one embodiment, to reduce the circuit size in one or more reduced-size microcontroller cores 150b-n to reduce.

In bestimmten Ausführungsformen kann es für jeden Mikrocontrollerkern 150a-n vorteilhaft sein, einzelne Zeitsteuerungs-Verarbeitungseinheiten 402b einzuschließen, sodass jeder Kanal, jede Die-Ebene oder jeder andere Teilsatz von Speichermedien 122 einer integrierten Schaltungsvorrichtung 123 eine kontinuierliche, individuelle Zeitsteuerung erhalten kann. In einer weiteren Ausführungsform kann jeder Mikrocontrollerkern 150a-n einzelne Flusssteuerungs-Verarbeitungseinheiten 402a einschließen, da ein Threadwechsel zwischen verschiedenen Mikrocontrollerkernen 150a-n aufgrund der erhöhten Synchronisation zwischen den verschiedenen Mikrocontrollerkernen 150a-n und dem häufigen Wechsel nachteilig für die Leistung sein kann. Eine reduzierte Version einer Flusssteuerungs-Verarbeitungseinheit 402a und/oder einer Zeitsteuerungs-Verarbeitungseinheit 402b (z. B. zum Handhaben von Leseoperationen, jedoch keinen Programmieroperationen, oder dergleichen) kann reduzierte Anweisungssätze, reduzierten flüchtigen Speicher 406 oder dergleichen aufweisen.In certain embodiments, it can be for any microcontroller core 150a-n be advantageous individual timing processing units 402b include so that every channel, every die level or any other subset of storage media 122 an integrated circuit device 123 can receive a continuous, individual time control. In a further embodiment, each microcontroller core can 150a-n individual flow control processing units 402a include, since a thread change between different microcontroller cores 150a-n due to the increased synchronization between the different microcontroller cores 150a-n and the frequent change can be detrimental to performance. A reduced version of a flow control processing unit 402a and / or a timing processing unit 402b (e.g., to handle read operations, but not programming operations, or the like) may have reduced instruction sets, reduced volatile memory 406 or the like.

Die Threadverwaltungseinheit (Thread Management Unit, TMU) 502 verteilt in bestimmten Ausführungsformen Befehle an verschiedene Mikrocontrollerkeme 150a-n (z. B. Befehle für verschiedene Kanäle, Die-Ebenen und/oder andere Teilsätze von Speichermedien 122 einer integrierten Schaltungsvorrichtung 123 oder dergleichen). Beispielsweise kann die Threadverwaltungseinheit 502 Befehle von einer Vorrichtungssteuerung 126 empfangen (z.B. Lesebefehle, Schreib-/Programmierbefehle, Löschbefehle, Testbefehle oder dergleichen) und einen Mikrocontrollerkern 150a-n auswählen (z. B. basierend auf einer Adresse oder einem anderen Indikator des Befehls, basierend darauf, welche Mikrocontroller 150a-n verfügbar und/oder ausgelastet sind, oder dergleichen). Die Threadverwaltungseinheit 502 kann einen Status eines Befehls zurück an die Vorrichtungssteuerung 126 berichten (z. B. als Reaktion auf einen Mikrocontroller, der einen Befehl abschließt, einen Status der Auslastung während der Ausführung eines Befehls oder dergleichen).The Thread Management Unit (TMU) 502 distributes commands to different microcontroller cores in certain embodiments 150a-n (e.g. commands for different channels, die levels and / or other subsets of storage media 122 an integrated circuit device 123 or similar). For example, the thread management unit 502 Commands from a device controller 126 received (eg read commands, write / program commands, delete commands, test commands or the like) and a microcontroller core 150a-n select (e.g. based on an address or other indicator of the command based on which microcontrollers 150a-n are available and / or busy, or the like). The thread management unit 502 can return a status of a command to the device controller 126 report (e.g., in response to a microcontroller completing a command, a status of the load during the execution of a command, or the like).

Die Threadverwaltungseinheit 502 kann in verschiedenen Ausführungsformen gemeinsam genutzte Ressourcen zwischen Mikrocontrollerkernen 150a-n (z. B. externe Verarbeitungseinheiten 404a-n, gemeinsam genutzten flüchtigen Speicher 406 oder dergleichen) zuweisen, kann Energie für die Mikrocontrollerkerne 150a-n verwalten (z. B. verschiedene Mikrocontrollerkerne 150a-n wecken und/oder schlafen legen, um Energie zu verwalten, oder dergleichen), Konflikte und/oder Kollisionen zwischen Mikrocontrollerkernen 150a-n verwalten und/oder anderweitig zwischen den verschiedenen Mikrocontrollerkernen 150a-n koordinieren.The thread management unit 502 may, in various embodiments, share resources between microcontroller cores 150a-n (e.g. external processing units 404a-n , shared volatile memory 406 or the like) can allocate energy for the microcontroller cores 150a-n manage (e.g. different microcontroller cores 150a-n wake up and / or go to sleep to manage energy, or the like), conflicts and / or collisions between microcontroller cores 150a-n manage and / or otherwise between the different microcontroller cores 150a-n coordinate.

In bestimmten Ausführungsformen kann die Threadverwaltungseinheit 502 Befehle von jeder Flusssteuerungs-Verarbeitungseinheit 402a der verschiedenen Mikrocontrollerkerne 150a-n an eine Ziel-Zeitsteuerungs-Verarbeitungseinheit 402b senden, wodurch Kommunikation, gemeinsame Aufgaben, übertragene Aufgaben oder dergleichen zwischen einer Flusssteuerungs-Verarbeitungseinheit 402a eines Mikrocontrollerkems 150a-n und einer Zeitsteuerungs-Verarbeitungseinheit 402b eines anderen Mikrocontrollerkems 150a-n ermöglicht werden.In certain embodiments, the thread manager 502 Instructions from each flow control processing unit 402a of the different microcontroller cores 150a-n to a target timing processing unit 402b send, thereby causing communication, shared tasks, transferred tasks or the like between a flow control processing unit 402a a microcontroller core 150a-n and a timing processing unit 402b of another microcontroller core 150a-n be made possible.

Beispielsweise kann eine Flussteuerungs-Verarbeitungseinheit 402a für einen größeren Mikrocontroller 150a in Vollgröße Programmieroperationen für jede Die-Ebene oder jeden anderen Teilsatz von Speichermedien 122 einer integrierten Schaltungsvorrichtung 123 verwalten, während Zeitsteuerungs-Verarbeitungseinheiten 402b der Mikrocontrollerkerne 150a-n anderen Die-Ebenen oder anderen Teilsätzen von Speichermedien 122 zugeordnet sein können (z. B. um Platzierung und Führung von Leiterbahnen oder dergleichen zu vereinfachen), und die Threadverwaltungseinheit 502 kann Befehle, Aufgaben oder dergleichen von der Flusssteuerungs-Verarbeitungseinheit 402a an die anderen Zeitsteuerungs-Verarbeitungseinheiten 402b für Programmieroperationen senden, um Befehle von der Flusssteuerungs-Verarbeitungseinheit 402a mit den richtigen Kanälen (z. B. Die-Ebenen) für die Programmieroperationen zu verknüpfen.For example, a flow control processing unit 402a for a larger microcontroller 150a Full-size programming operations for any die level or any other subset of storage media 122 an integrated circuit device 123 manage while timing processing units 402b the microcontroller cores 150a-n other die levels or other subsets of storage media 122 can be assigned (e.g. to simplify placement and routing of conductor tracks or the like), and the thread management unit 502 can receive commands, tasks or the like from the flow control processing unit 402a to the other timing processing units 402b for programming operations to send commands from the flow control processing unit 402a with the right channels (e.g. die levels) for the programming operations.

Die Threadverwaltungseinheit 502 kann in bestimmten Ausführungsformen eine Zuordnungstabelle und einen Multiplexer verwenden, um Operationen, Befehle und/oder Aufgaben von der Flusssteuerungs-Verarbeitungseinheit 402a des Mikrocontrollers 150a in Vollgröße an die Zeitsteuerungs-Verarbeitungseinheit 402b zu leiten, die mit dem Kanal für die Programmieroperation verknüpft ist, und um Aufgaben von den anderen Flusssteuerungs-Verarbeitungseinheiten 402a (z. B. von den in der Größe reduzierten Mikrocontrollern 150b-n) an die Zeitsteuerungs-Verarbeitungseinheiten 402b zu leiten, die mit ihren jeweiligen Kanälen verknüpft sind.The thread management unit 502 may, in certain embodiments, use a mapping table and a multiplexer to carry out operations, commands and / or tasks from the flow control processing unit 402a of the microcontroller 150a full-sized to the timing processing unit 402b routing associated with the channel for the programming operation and tasks from the other flow control processing units 402a (e.g. from those in size reduced microcontrollers 150b-n) to the timing processing units 402b to manage that are linked to their respective channels.

7 ist ein schematisches Blockdiagramm, das eine Ausführungsform einer integrierten Schaltungsvorrichtung 700 mit einem On-Die-Speichermikrocontroller 150 veranschaulicht. In der dargestellten Ausführungsform befindet sich ein Speicherarray 200 (z. B. eine oder mehrere Die-Ebenen oder dergleichen) auf einer Stufe der integrierten Schaltungsvorrichtung 700 (z. B. einer oder mehreren Schichten von Leitern, Isolatoren, Halbleitern oder dergleichen) und der Mikrocontroller 150 und andere Schaltlogik 704 (z. B. Leseverstärker, Wortleitungsschalter oder dergleichen) befinden sich auf einer anderen Stufe der integrierten Schaltungsvorrichtung 700 (z. B. unter dem Array 200) und sind über eine oder mehrere Verbindungen 702 (z. B. Isolierschichten, leitfähige Schichten, durch Silizium-Durchkontaktierungen, Löcher, Busse oder dergleichen) in Kommunikation mit dem Speicherarray 200. In der dargestellten Ausführungsform befindet sich das Speicherarray 200 auf einer ersten Stufe der integrierten Schaltungsvorrichtung 700, und der Mikrocontroller 150 befindet sich auf einer zweiten Stufe der integrierten Schaltungsvorrichtung 700, die parallel zu und versetzt von der ersten Stufe ist. Ein Substrat 706 weist eine dritte Stufe der integrierten Schaltungsvorrichtung 700 auf (z. B. eine Trägerstruktur, auf der eine oder mehrere andere Schichten ausgebildet und/oder abgeschieden sind) und ist parallel zu und versetzt von den anderen Schichten. 7 10 is a schematic block diagram illustrating one embodiment of an integrated circuit device 700 with an on-die memory microcontroller 150 illustrated. In the illustrated embodiment, there is a memory array 200 (e.g., one or more die levels or the like) at one level of the integrated circuit device 700 (e.g. one or more layers of conductors, insulators, semiconductors or the like) and the microcontroller 150 and other switching logic 704 (e.g., sense amplifiers, word line switches, or the like) are at another level of the integrated circuit device 700 (e.g. under the array 200 ) and are via one or more connections 702 (e.g. insulation layers, conductive layers, through silicon vias, holes, buses or the like) in communication with the memory array 200 , In the illustrated embodiment, the memory array is located 200 at a first stage of the integrated circuit device 700 , and the microcontroller 150 is on a second stage of the integrated circuit device 700 that is parallel to and offset from the first stage. A substrate 706 has a third stage of the integrated circuit device 700 (e.g., a support structure on which one or more other layers are formed and / or deposited) and is parallel to and offset from the other layers.

8 ist ein schematisches Flussdiagramm, das eine Ausführungsform eines Verfahrens 800 für einen On-Die-Speichermikrocontroller 150 veranschaulicht. Das Verfahren 800 beginnt, und ein Mikrocontroller 150 empfängt 802 eine Anforderung für eine Speicheroperation (z. B. eine Leseanforderung, eine Schreib-/Programmieranforderung, eine Löschanforderung oder dergleichen) für ein Speicherarray 200 einer integrierten Schaltungsvorrichtung 123. 8th 10 is a schematic flow diagram illustrating one embodiment of a method 800 for an on-die memory microcontroller 150 illustrated. The procedure 800 starts, and a microcontroller 150 receives 802 a request for a memory operation (e.g., a read request, a write / program request, an erase request, or the like) for a memory array 200 an integrated circuit device 123 ,

Eine Flusssteuerungs-Verarbeitungseinheit 402a und/oder eine Threadverwaltungseinheit 502 weist 804 Aufgaben für die empfangene 802 Anforderung für die Speicheroperation verschiedenen Verarbeitungseinheiten 302a-n, 402a-d, 404a-n zu. Eine oder mehrere Verarbeitungseinheiten 302a-n, 402a-d, 404a-n führen 806 die zugewiesenen Aufgaben 804 aus, um die Speicheroperation abzuschließen, und das Verfahren 800 endet.A flow control processing unit 402a and / or a thread management unit 502 has 804 Tasks for the received 802 Request for the storage operation different processing units 302a-n . 402a-d . 404a-n to. One or more processing units 302a-n . 402a-d . 404a-n to lead 806 the assigned tasks 804 to complete the save operation and the procedure 800 ends.

9 ist ein schematisches Flussdiagramm, das eine Ausführungsform eines Verfahrens 900 für einen On-Die-Speichermikrocontroller 150 veranschaulicht. Das Verfahren 900 beginnt, und ein Mikrocontroller 150 empfängt 902 eine Anforderung für eine Speicheroperation (z. B. eine Leseanforderung, eine Schreib-/Programmieranforderung, eine Löschanforderung oder dergleichen) für ein Speicherarray 200 einer integrierten Schaltungsvorrichtung 123. 9 10 is a schematic flow diagram illustrating one embodiment of a method 900 for an on-die memory microcontroller 150 illustrated. The procedure 900 starts, and a microcontroller 150 receives 902 a request for a memory operation (e.g., a read request, a write / program request, an erase request, or the like) for a memory array 200 an integrated circuit device 123 ,

Eine Flusssteuerungs-Verarbeitungseinheit 402a und/oder eine Threadverwaltungseinheit 502 bestimmt 904 Aufgaben für die empfangene 902 Anforderung für die Speicheroperation. Die Flusssteuerungs-Verarbeitungseinheit 402a und/oder die Threadverwaltungseinheit 502 bestimmt 906, ob Flusssteueraufgaben vorhanden sind, und die Flusssteuerungs-Verarbeitungseinheit 402a führt 908 die bestimmten 906 Flusssteueraufgaben aus. Die Flusssteuerungs-Verarbeitungseinheit 402a und/oder die Threadverwaltungseinheit 502 bestimmt 910, ob Zeitsteueraufgaben vorhanden sind, und eine Zeitsteuerungs-Verarbeitungseinheit 402b führt 912 die bestimmten 910 Zeitsteueraufgaben aus. Die Flusssteuerungs-Verarbeitungseinheit 402a und/oder die Threadverwaltungseinheit 502 bestimmt 914, ob Spannungssteueraufgaben vorhanden sind, und die Spannungssteuerungs-Verarbeitungseinheit 402d führt 916 die bestimmten 914 Spannungssteueraufgaben aus. Die Flusssteuerungs-Verarbeitungseinheit 402a und/oder die Threadverwaltungseinheit 502 bestimmt 918, ob Datenlatchsteueraufgaben vorhanden sind, und die Datenlatchsteuerungs-Verarbeitungseinheit 402c führt 920 die bestimmten 918 Datenlatchsteueraufgaben aus. Das Verfahren 900 wird fortgesetzt, und der Mikrocontroller 150 empfängt 902 eine oder mehrere zusätzliche Anforderungen für Speicheroperationen.A flow control processing unit 402a and / or a thread management unit 502 certainly 904 Tasks for the received 902 Store operation request. The flow control processing unit 402a and / or the thread management unit 502 certainly 906 whether there are flow control tasks and the flow control processing unit 402a leads 908 the certain 906 Flow control duties. The flow control processing unit 402a and / or the thread management unit 502 certainly 910 whether there are timing tasks and a timing processing unit 402b leads 912 the certain 910 Time control tasks. The flow control processing unit 402a and / or the thread management unit 502 certainly 914 whether there are voltage control tasks and the voltage control processing unit 402d leads 916 the certain 914 Voltage control tasks. The flow control processing unit 402a and / or the thread management unit 502 certainly 918 whether there are data latch control tasks and the data latch control processing unit 402c leads 920 the certain 918 Data latch control tasks. The procedure 900 continues and the microcontroller 150 receives 902 one or more additional requirements for storage operations.

Mittel zum Speichern von Daten können in verschiedenen Ausführungsformen eine Speichervorrichtung 120, ein Speichermedium 122, ein Speicherelement 123, ein Speicherarray 200, ein flüchtiges Speichermedium 122 (z.B. RAM, DRAM, SDRAM, DDR-SDRAM, SRAM, T-RAM, Z-RAM oder dergleichen), ein nichtflüchtiges Speichermedium 122 (z. B. ReRAM, Memristorspeicher, programmierbaren Metallisierungszellenspeicher, PCM, PCME, PRAM, PCRAM, Ovonic Unified Memory, C-RAM, NAND-Flashspeicher, 2D-NAND-Flashspeicher, 3D-NAND-Flashspeicher, NOR-Flashspeicher, Nano-RAM oder NRAM, drahtbasierten Nanokristallspeicher, Siliziumoxid-basierten Sub-10-Nanometer-Prozessspeicher, Graphenspeicher, SONOS-Speicher, PMC-Speicher, CBRAM, MRAM, magnetische Speichermedien wie etwa ein Festplatten- oder Bandlaufwerk, optische Speichermedien, SCM oder dergleichen) oder dergleichen einschließen. Andere Ausführungsformen können ähnliche oder äquivalente Mittel zum Speichern von Daten einschließen.In various embodiments, means for storing data can be a storage device 120 , a storage medium 122 , a storage element 123 , a storage array 200 , a volatile storage medium 122 (e.g. RAM, DRAM, SDRAM, DDR-SDRAM, SRAM, T-RAM, Z-RAM or the like), a non-volatile storage medium 122 (e.g. ReRAM, memristor memory, programmable metallization cell memory, PCM, PCME, PRAM, PCRAM, Ovonic Unified Memory, C-RAM, NAND flash memory, 2D NAND flash memory, 3D NAND flash memory, NOR flash memory, nano- RAM or NRAM, wire-based nanocrystal memory, silicon oxide-based sub-10-nanometer process memory, graphene memory, SONOS memory, PMC memory, CBRAM, MRAM, magnetic storage media such as a hard disk or tape drive, optical storage media, SCM or the like) or include the like. Other embodiments may include similar or equivalent means for storing data.

Mittel zum Sortieren von Aufgaben nach Aufgabenkategorie können in verschiedenen Ausführungsformen einen Mikrocontroller 150, eine Flusssteuerungs-Verarbeitungseinheit 402a, eine Threadverwaltungseinheit 502, eine Datenlatchsteuerungs-Verarbeitungseinheit 402c, eine integrierte Schaltungsvorrichtung 123 und/oder andere logische Hardware oder computerausführbaren Code, der auf einem computerlesbaren Speichermedium gespeichert ist, einschließen. Andere Ausführungsformen können ähnliche oder äquivalente Mittel zum Sortieren von Aufgaben nach Aufgabenkategorie einschließen.In various embodiments, means for sorting tasks by task category can be a microcontroller 150 , a flow control processing unit 402a , a thread management unit 502 , a data latch control processing unit 402c , an integrated circuit device 123 and / or other logical hardware or computer executable code stored on a computer readable storage medium. Other embodiments may include similar or equivalent means of sorting tasks by task category.

Mittel zum parallelen Ausführen verschiedener Kategorien von Aufgaben können in verschiedenen Ausführungsformen einen Mikrocontroller 150, eine Flusssteuerungs-Verarbeitungseinheit 402a, eine Zeitsteuerungs-Verarbeitungseinheit 402b, eine Datenlatchsteuerungs-Verarbeitungseinheit 402c, eine Spannungssteuerungs-Verarbeitungseinheit 402d, eine externe Verarbeitungseinheit 404a-n, eine andere Verarbeitungseinheit 302a-n, 402a-d, 404a-n, eine integrierte Schaltungsvorrichtung 123 und/oder andere logische Hardware oder computerausführbaren Code, der auf einem computerlesbaren Speichermedium gespeichert ist, einschließen. Andere Ausführungsformen können ähnliche oder äquivalente Mittel zum parallelen Ausführen verschiedener Kategorien von Aufgaben einschließen.Means for executing different categories of tasks in parallel can be a microcontroller in different embodiments 150 , a flow control processing unit 402a , a timing processing unit 402b , a data latch control processing unit 402c , a voltage control processing unit 402d , an external processing unit 404a-n , another processing unit 302a-n . 402a-d . 404a-n , an integrated circuit device 123 and / or other logical hardware or computer executable code stored on a computer readable storage medium. Other embodiments may include similar or equivalent means of performing different categories of tasks in parallel.

Mittel zum Ausführen von weniger Kategorien von Aufgaben unter Verwendung eines anderen Satzes von Verarbeitungseinheiten können in verschiedenen Ausführungsformen einen Mikrocontroller 150, eine Flusssteuerungs-Verarbeitungseinheit 402a, eine Zeitsteuerungs-Verarbeitungseinheit 402b, eine Datenlatchsteuerungs-Verarbeitungseinheit 402c, eine Spannungssteuerungs-Verarbeitungseinheit 402d, eine externe Verarbeitungseinheit 404a-n, eine andere Verarbeitungseinheit 302a-n, 402a-d, 404a-n, eine integrierte Schaltungsvorrichtung 123 und/oder andere logische Hardware oder computerausführbaren Code, der auf einem computerlesbaren Speichermedium gespeichert ist, einschließen. Andere Ausführungsformen können ähnliche oder äquivalente Mittel zum Ausführen von weniger Kategorien von Aufgaben unter Verwendung eines anderen Satzes von Verarbeitungseinheiten einschließen.Means for performing fewer categories of tasks using a different set of processing units may be a microcontroller in various embodiments 150 , a flow control processing unit 402a , a timing processing unit 402b , a data latch control processing unit 402c , a voltage control processing unit 402d , an external processing unit 404a-n , another processing unit 302a-n . 402a-d . 404a-n , an integrated circuit device 123 and / or other logical hardware or computer executable code stored on a computer readable storage medium. Other embodiments may include similar or equivalent means of performing fewer categories of tasks using a different set of processing units.

Die vorliegende Offenbarung kann in anderen spezifischen Formen ausgeführt werden, ohne von ihrem Wesen oder ihren wesentlichen Eigenschaften abzuweichen. Die beschriebenen Ausführungsformen sind in jeder Hinsicht nur als veranschaulichend und nicht als einschränkend zu betrachten. Der Schutzumfang der Offenbarung ist daher eher durch die beigefügten Ansprüche als durch die vorangehende Beschreibung angegeben. Alle Änderungen, die in die Bedeutung und den Äquivalenzbereich der Ansprüche fallen, sollen in ihren Schutzumfang fallen.The present disclosure can be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the disclosure is, therefore, indicated by the appended claims rather than by the foregoing description. All changes that come within the meaning and range of equivalency of the claims are to be embraced within their scope.

Claims (25)

Vorrichtung aufweisend: ein Array von nichtflüchtigen Speicherzellen in einer integrierten Schaltungsvorrichtung; eine Mikrocontrollereinheit in der integrierten Schaltungsvorrichtung; und eine Vielzahl von Verarbeitungseinheiten der Mikrocontrollereinheit, wobei verschiedene Verarbeitungseinheiten verschiedene Kategorien von Aufgaben parallel für das Array von nichtflüchtigen Speicherzellen ausführen.Having device: an array of non-volatile memory cells in an integrated circuit device; a microcontroller unit in the integrated circuit device; and a plurality of processing units of the microcontroller unit, wherein different processing units execute different categories of tasks in parallel for the array of non-volatile memory cells. Vorrichtung gemäß Anspruch 1, weiterhin aufweisend eine oder mehrere zusätzliche Mikrocontrollereinheiten in der integrierten Schaltungsvorrichtung, wobei die eine oder mehreren zusätzlichen Mikrocontrollereinheiten weniger Verarbeitungseinheiten als die Mikrocontrollereinheit aufweisen und weniger Kategorien von Aufgaben ausführen.Device according to Claim 1 , further comprising one or more additional microcontroller units in the integrated circuit device, the one or more additional microcontroller units having fewer processing units than the microcontroller unit and performing fewer categories of tasks. Vorrichtung gemäß Anspruch 2, wobei die Vielzahl von Verarbeitungseinheiten der Mikrocontrollereinheit eine eingebaute Selbsttesteinheit aufweisen, die dazu eingerichtet ist, eine Vielzahl von Testoperationen auf dem Array von nichtflüchtigen Speicherzellen auszuführen, und die weniger Verarbeitungseinheiten der einen oder mehreren zusätzlichen Mikrocontrollereinheiten keine eingebaute Selbsttesteinheit aufweisen.Device according to Claim 2 , wherein the plurality of processing units of the microcontroller unit have a built-in self-test unit which is set up to carry out a multiplicity of test operations on the array of non-volatile memory cells, and the fewer processing units of the one or more additional microcontroller units have no built-in self-test unit. Vorrichtung gemäß Anspruch 2, wobei die Vielzahl von Verarbeitungseinheiten der Mikrocontrollereinheit dazu eingerichtet sind, Programmieroperationen und Leseoperationen auf dem Array von nichtflüchtigen Speicherzellen auszuführen, und die weniger Verarbeitungseinheiten der einen oder mehreren zusätzlichen Mikrocontrollereinheiten dazu eingerichtet sind, Leseoperationen und keine Programmieroperationen auf dem Array von nichtflüchtigen Speicherzellen auszuführen.Device according to Claim 2 , wherein the plurality of processing units of the microcontroller unit are configured to perform programming and reading operations on the array of non-volatile memory cells, and the fewer processing units of the one or more additional microcontroller units are configured to perform reading operations and no programming operations on the array of non-volatile memory cells. Vorrichtung gemäß Anspruch 4, wobei die Mikrocontrollereinheit dazu eingerichtet ist, die Programmieroperationen auf jedem Teilsatz des Arrays von nichtflüchtigen Speicherzellen auszuführen, und die eine oder mehreren zusätzlichen Mikrocontrollereinheiten dazu eingerichtet sind, Leseoperationen auf verschiedenen Teilsätzen des Arrays von nichtflüchtigen Speicherzellen auszuführen.Device according to Claim 4 wherein the microcontroller unit is configured to perform the programming operations on each subset of the array of non-volatile memory cells and the one or more additional microcontroller units are configured to perform read operations on different subsets of the array of non-volatile memory cells. Vorrichtung gemäß Anspruch 1, wobei sich das Array von nichtflüchtigen Speicherzellen auf einer ersten Stufe der integrierten Schaltungsvorrichtung befindet und sich die Mikrocontrollereinheit auf einer zweiten Stufe der integrierten Schaltungsvorrichtung befindet, wobei die zweite Stufe parallel zu und versetzt von der ersten Stufe ist.Device according to Claim 1 , wherein the array of non-volatile memory cells is on a first level of the integrated circuit device and the microcontroller unit is on a second level of the integrated circuit device, the second level being parallel to and offset from the first level. Vorrichtung gemäß Anspruch 1, wobei eine Taktrate für die Mikrocontrollereinheit niedriger eingestellt ist als eine Taktrate, mit welcher der Mikrocontroller Datenoperationen auf dem Array von nichtflüchtigen Speicherzellen seriell mit einer einzigen Verarbeitungseinheit ausführen kann, ohne eine Latenz der Datenoperationen zu erhöhen, wobei die Vielzahl von Verarbeitungseinheiten der Mikrocontrollereinheit Datenoperationen parallel auf dem Array von nichtflüchtigen Speicherzellen mit der eingestellten Taktrate ausführen, ohne eine Latenz der Datenoperationen zu erhöhen. Device according to Claim 1 , wherein a clock rate for the microcontroller unit is set lower than a clock rate with which the microcontroller can perform data operations on the array of non-volatile memory cells in series with a single processing unit without increasing a latency of the data operations, the plurality of processing units of the microcontroller unit performing data operations in parallel Execute on the array of non-volatile memory cells at the set clock rate without increasing the latency of the data operations. Vorrichtung gemäß Anspruch 1, wobei die Vielzahl von Verarbeitungseinheiten der Mikrocontrollereinheit verschiedene Anweisungssätze unterstützen, die mit den verschiedenen Kategorien von Aufgaben verknüpft sind.Device according to Claim 1 , wherein the plurality of processing units of the microcontroller unit support different sets of instructions associated with the different categories of tasks. Vorrichtung gemäß Anspruch 1, wobei die Vielzahl von Verarbeitungseinheiten eine oder mehrere von einer Flusssteuerungs-Verarbeitungseinheit, einer Zeitsteuerungs-Verarbeitungseinheit, einer Spannungssteuerungs-Verarbeitungseinheit und einer Datenlatchsteuerungs-Verarbeitungseinheit aufweisen.Device according to Claim 1 wherein the plurality of processing units include one or more of a flow control processing unit, a timing processing unit, a voltage control processing unit, and a data latch control processing unit. Vorrichtung gemäß Anspruch 1, wobei die verschiedenen Kategorien von Aufgaben eine oder mehrere von Flusssteueraufgaben, Zeitsteueraufgaben, Datenlatchsteueraufgaben, Spannungssteueraufgaben und eingebauten Selbsttestaufgaben aufweisen.Device according to Claim 1 , wherein the various categories of tasks include one or more of flow control tasks, timing control tasks, data latch control tasks, voltage control tasks, and built-in self-test tasks. Vorrichtung gemäß Anspruch 1, weiterhin aufweisend flüchtigen Speicher der integrierten Schaltungsvorrichtung, wobei die Vielzahl von Verarbeitungseinheiten Daten in dem flüchtigen Speicher speichern, um die verschiedenen Kategorien von Aufgaben auszuführen, wobei eine eingebaute Selbsttesteinheit der Vielzahl von Verarbeitungseinheiten Testdaten, die aus dem Array von nichtflüchtigen Speicherzellen gelesen werden, in einem Abschnitt des flüchtigen Speichers speichert, wobei der Abschnitt des flüchtigen Speichers durch andere Verarbeitungseinheiten der Vielzahl von Verarbeitungseinheiten anderweitig verwendet wird, wenn er sich nicht in einem Testmodus der eingebauten Selbsttesteinheit befindet.Device according to Claim 1 , further comprising volatile memory of the integrated circuit device, wherein the plurality of processing units store data in the volatile memory to perform the various categories of tasks, wherein a built-in self-test unit of the plurality of processing units test data read from the array of non-volatile memory cells in stores a portion of the volatile memory, the portion of the volatile memory being otherwise used by other processing units of the plurality of processing units when not in a test mode of the built-in self-test unit. System, aufweisend: eine integrierte Schaltungsvorrichtung, aufweisend ein nichtflüchtiges Speichermedium; einen Mikrocontroller mit einer Vielzahl von Verarbeitungseinheiten zur Ausführung von Aufgaben für das nichtflüchtige Speichermedium; und einen oder mehrere zusätzliche Mikrocontroller, aufweisend weniger Verarbeitungseinheiten als der Mikrocontroller.System, comprising: an integrated circuit device comprising a non-volatile storage medium; a microcontroller with a plurality of processing units for performing tasks for the non-volatile storage medium; and one or more additional microcontrollers, having fewer processing units than the microcontroller. System gemäß Anspruch 12, wobei verschiedene Verarbeitungseinheiten der Vielzahl von Verarbeitungseinheiten verschiedene Arten von Aufgaben parallel für das nichtflüchtige Speichermedium ausführen und der eine oder die mehreren zusätzlichen Mikrocontroller weniger Arten von Aufgaben als der Mikrocontroller ausführen.System according to Claim 12 , wherein different processing units of the plurality of processing units perform different types of tasks in parallel for the non-volatile storage medium and the one or more additional microcontrollers perform fewer types of tasks than the microcontroller. System gemäß Anspruch 12, wobei das nichtflüchtige Speichermedium auf einer ersten Stufe der integrierten Schaltungsvorrichtung angeordnet ist und der Mikrocontroller und der eine oder die mehreren zusätzlichen Mikrocontroller auf einer zweiten Stufe der integrierten Schaltungsvorrichtung angeordnet sind, wobei die zweite Stufe parallel zu und versetzt von der ersten Stufe ist.System according to Claim 12 , wherein the non-volatile storage medium is arranged on a first stage of the integrated circuit device and the microcontroller and the one or more additional microcontrollers are arranged on a second stage of the integrated circuit device, the second stage being parallel to and offset from the first stage. System gemäß Anspruch 12, wobei die Vielzahl von Verarbeitungseinheiten des Mikrocontrollers eine eingebaute Selbsttesteinheit aufweisen, die dazu eingerichtet ist, eine Vielzahl von Testoperationen auf dem nichtflüchtigen Speichermedium auszuführen, und die weniger Verarbeitungseinheiten der einen oder mehreren zusätzlichen Mikrocontroller keine eingebaute Selbsttesteinheit aufweisen.System according to Claim 12 , wherein the plurality of processing units of the microcontroller have a built-in self-test unit, which is set up to carry out a multiplicity of test operations on the non-volatile storage medium, and the fewer processing units of the one or more additional microcontrollers have no built-in self-test unit. System gemäß Anspruch 12, wobei die Vielzahl von Verarbeitungseinheiten des Mikrocontrollers dazu eingerichtet sind, Programmieroperationen und Leseoperationen auf dem nichtflüchtigen Speichermedium auszuführen, und die weniger Verarbeitungseinheiten des einen oder der mehreren zusätzlichen Mikrocontroller dazu eingerichtet sind, Leseoperationen und keine Programmieroperationen auf dem nichtflüchtigen Speichermedium auszuführen.System according to Claim 12 , wherein the plurality of processing units of the microcontroller are set up to carry out programming operations and reading operations on the non-volatile storage medium, and the fewer processing units of the one or more additional microcontrollers are set up to carry out reading operations and no programming operations on the non-volatile storage medium. System gemäß Anspruch 16, wobei die Mikrocontrollereinheit dazu eingerichtet ist, die Programmieroperationen auf jeder Die-Ebene des nichtflüchtigen Speichermediums auszuführen, und die eine oder mehreren zusätzlichen Mikrocontrollereinheiten dazu eingerichtet sind, Leseoperationen auf verschiedenen Die-Ebenen des nichtflüchtigen Speichermediums auszuführen.System according to Claim 16 , wherein the microcontroller unit is configured to perform the programming operations on each die level of the non-volatile storage medium, and the one or more additional microcontroller units are configured to perform reading operations on different die levels of the non-volatile storage medium. Vorrichtung aufweisend: Mittel zum Speichern von Daten; Mittel zum Sortieren von Aufgaben für die Mittel zum Speichern von Daten nach Aufgabenkategorie; und Mittel zum parallelen Ausführen verschiedener Kategorien von Aufgaben für die Mittel zum Speichern von Daten unter Verwendung verschiedener Verarbeitungseinheiten für die Mittel zum Speichern von Daten.Apparatus comprising: means for storing data; Means for sorting tasks for the means for storing data by task category; and means for performing different categories of tasks in parallel for the means for storing data using different ones Processing units for the means for storing data. Vorrichtung gemäß Anspruch 18, weiterhin aufweisend Mittel zum Ausführen von weniger Kategorien von Aufgaben für die Mittel zum Speichern von Daten unter Verwendung eines anderen Satzes von Verarbeitungseinheiten für die Mittel zum Speichern von Daten.Device according to Claim 18 , further comprising means for performing fewer categories of tasks for the data storage means using a different set of processing units for the data storage means. Vorrichtung gemäß Anspruch 18, wobei die Mittel zum Speichern von Daten auf einer ersten Stufe einer integrierten Schaltungsvorrichtung angeordnet sind und die Mittel zum Ausführen verschiedener Kategorien von Aufgaben und die verschiedenen Verarbeitungseinheiten auf einer zweiten Stufe der integrierten Schaltungsvorrichtung angeordnet sind, wobei die zweite Stufe parallel zu und versetzt von der ersten Stufe ist.Device according to Claim 18 , the means for storing data being arranged on a first stage of an integrated circuit device and the means for carrying out different categories of tasks and the different processing units being arranged on a second stage of the integrated circuit device, the second stage being parallel to and offset from the first stage is. Verfahren, aufweisend: Empfangen einer Anforderung für eine Speicheroperation; Bestimmen einer Vielzahl von Aufgaben zum Abschließen der Speicheroperation, wobei verschiedene Aufgaben der Vielzahl von Aufgaben mit verschiedenen Anweisungssätzen verknüpft sind; und paralleles Ausführen der verschiedenen Aufgaben der Vielzahl von Aufgaben unter Verwendung verschiedener Verarbeitungseinheiten eines Mikrocontrollers, wobei die verschiedenen Verarbeitungseinheiten die verschiedenen Anweisungssätze unterstützen.Process, comprising: Receiving a request for a store operation; Determining a plurality of tasks to complete the storage operation, wherein different tasks of the plurality of tasks are associated with different sets of instructions; and executing the various tasks of the plurality of tasks in parallel using different processing units of a microcontroller, the different processing units supporting the different instruction sets. Verfahren gemäß Anspruch 21, weiterhin aufweisend das Ausführen einer nachfolgenden Speicheroperation unter Verwendung eines zusätzlichen Mikrocontrollers mit weniger Verarbeitungseinheiten als der Mikrocontroller und das Unterstützen von weniger Anweisungssätzen.Procedure according to Claim 21 , further comprising performing a subsequent memory operation using an additional microcontroller with fewer processing units than the microcontroller and supporting fewer sets of instructions. Vorrichtung aufweisend: einen Mikrocontroller für ein Speicherarray einer integrierten Schaltungsvorrichtung, wobei der Mikrocontroller eingerichtet ist, um: eine Vielzahl von Aufgaben für eine Speicheroperation unter Verwendung einer ersten Verarbeitungseinheit auszuwählen; das Timing der Vielzahl von Aufgaben für die Speicheroperation unter Verwendung einer zweiten Verarbeitungseinheit zu steuern; und Spannungen für die Vielzahl von Aufgaben für die Speicheroperation unter Verwendung einer dritten Verarbeitungseinheit einzustellen.Having device: a microcontroller for a memory array of an integrated circuit device, the microcontroller being set up to: select a plurality of tasks for a memory operation using a first processing unit; control the timing of the plurality of tasks for the memory operation using a second processing unit; and Set voltages for the plurality of tasks for the memory operation using a third processing unit. Vorrichtung gemäß Anspruch 23, weiterhin aufweisend einen oder mehrere zusätzliche Mikrocontroller für die integrierte Schaltungsvorrichtung, wobei die eine oder mehreren zusätzlichen Mikrocontrollereinheiten weniger Verarbeitungseinheiten als der Mikrocontroller aufweisen.Device according to Claim 23 , further comprising one or more additional microcontrollers for the integrated circuit device, the one or more additional microcontroller units having fewer processing units than the microcontroller. Vorrichtung gemäß Anspruch 24, wobei der Mikrocontroller dazu eingerichtet ist, Programmieroperationen, Leseoperationen und Testoperationen auszuführen, und der eine oder die mehreren zusätzlichen Mikrocontroller dazu eingerichtet sind, Leseoperationen und keine Programmieroperationen und Testoperationen auszuführen.Device according to Claim 24 , wherein the microcontroller is configured to perform programming operations, read operations and test operations, and the one or more additional microcontrollers are configured to perform read operations and not programming operations and test operations.
DE112018000842.8T 2017-06-12 2018-03-23 MORE NUCLEAR-ON-THE MEMORY MICROCONTROLLER Pending DE112018000842T5 (en)

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
DE112018000842T5 true DE112018000842T5 (en) 2019-12-24

Family

ID=68206363

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018000842.8T Pending DE112018000842T5 (en) 2017-06-12 2018-03-23 MORE NUCLEAR-ON-THE MEMORY MICROCONTROLLER

Country Status (4)

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

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210101785A (en) * 2020-02-11 2021-08-19 에스케이하이닉스 주식회사 Memory system, memory controller, and operating method of memory system
CN113568848B (en) * 2020-07-29 2023-07-11 华为技术有限公司 Processor, signal adjusting method and computer system
CN112612746A (en) * 2020-12-18 2021-04-06 中国电子科技集团公司第四十七研究所 Reconfigurable microprocessor system based on memory interconnection
CN116189745B (en) * 2023-04-26 2023-09-15 长鑫存储技术有限公司 Memory and command sequence processing system

Family Cites Families (13)

* 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
JP4153882B2 (en) * 2004-02-17 2008-09-24 株式会社東芝 Semiconductor integrated circuit device
JP2006127623A (en) * 2004-10-28 2006-05-18 Sony Corp Semiconductor memory device and its accessing method
KR101086855B1 (en) * 2008-03-10 2011-11-25 주식회사 팍스디스크 Solid State Storage System with High Speed and Controlling Method thereof
US9448940B2 (en) * 2011-10-28 2016-09-20 The Regents Of The University Of California Multiple core computer processor with globally-accessible local memories
KR101903095B1 (en) * 2011-11-21 2018-10-02 삼성전자주식회사 Nonvolatile memory device and oeprating method of controller controlling nonvolailte memory device
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
US9691452B2 (en) * 2014-08-15 2017-06-27 Micron Technology, Inc. Apparatuses and methods for concurrently accessing different memory planes of a memory
JP2018514868A (en) * 2015-04-30 2018-06-07 マイクロチップ テクノロジー インコーポレイテッドMicrochip Technology Incorporated Central processing unit with improved instruction set
US9558846B1 (en) * 2015-11-04 2017-01-31 Texas Instruments Incorporated Feedback validation of arbitrary non-volatile memory data
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
JP6753746B2 (en) * 2016-09-15 2020-09-09 キオクシア株式会社 Semiconductor memory device

Also Published As

Publication number Publication date
CN110447075B (en) 2023-07-21
KR102238957B1 (en) 2021-04-13
CN110447075A (en) 2019-11-12
KR20190115072A (en) 2019-10-10
JP2020510951A (en) 2020-04-09

Similar Documents

Publication Publication Date Title
US20210042219A1 (en) Apparatuses and methods for memory address translation during block migration
DE102017113439B4 (en) Mapping tables for storage devices
DE102011076895B4 (en) Cache coherence protocol for persistent storage
DE112011106078B4 (en) Method, apparatus and system for implementing a multi-level random access memory
DE102020106971A1 (en) DATA WRITE MANAGEMENT IN NON-VOLATILE MEMORY
DE102011076894B9 (en) Persistent storage for a main memory of a processor
DE112018000842T5 (en) MORE NUCLEAR-ON-THE MEMORY MICROCONTROLLER
DE112017001471T5 (en) MORE LEVELS MEMORY MANAGEMENT
DE102020116362B3 (en) DYNAMIC ASSIGNMENT OF SUB BLOCKS
US10635526B2 (en) Multicore on-die memory microcontroller
DE102017104150A1 (en) Wear compensation in storage devices
DE112011106032T5 (en) Energy savings through memory channel shutdown
DE112011106013T5 (en) System and method for intelligent data transfer from a processor to a storage subsystem
CN107784121A (en) Lowercase optimization method of log file system based on nonvolatile memory
DE112014006118T5 (en) Speculative prefetching of data stored in a flash memory
DE102020122182A1 (en) VIRTUAL MACHINE REPLICATION AND MIGRATION
DE102021115763A1 (en) WRITE CURRENT PRIORITY IDENTIFICATION AND CLASSIFICATION
DE112020007201T5 (en) Memory allocation for distributed processing devices
DE102022107778A1 (en) ADDRESS TRANSLATION AT A TARGET NETWORK INTERFACE DEVICE
DE102022129936A1 (en) Techniques for expanding system memory by utilizing available device memory
DE102018204931A1 (en) Persistent caching of memory-side cache content
DE102022121773A1 (en) IN-MEMORY ASSOCIATIVE PROCESSING SYSTEM
DE102022102980A1 (en) OPERATIONAL TECHNIQUES OF DATA MOVEMENT
DE112016007538T5 (en) TECHNOLOGY FOR REALIZING A BINARY DISCONTINUED NON-VOLATILE MEMORY EXPRESS DRIVER
DE102021117355A1 (en) SSD managed host write atomicity with any transfer length

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

Representative=s name: MURGITROYD & COMPANY, DE