DE112019007381T5 - Controller für eine speicherkomponente - Google Patents

Controller für eine speicherkomponente Download PDF

Info

Publication number
DE112019007381T5
DE112019007381T5 DE112019007381.8T DE112019007381T DE112019007381T5 DE 112019007381 T5 DE112019007381 T5 DE 112019007381T5 DE 112019007381 T DE112019007381 T DE 112019007381T DE 112019007381 T5 DE112019007381 T5 DE 112019007381T5
Authority
DE
Germany
Prior art keywords
area
controller
memory
firmware
user
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
DE112019007381.8T
Other languages
English (en)
Inventor
Alberto Troia
Antonino Mondello
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.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of DE112019007381T5 publication Critical patent/DE112019007381T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318533Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
    • G01R31/318555Control logic
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318533Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
    • G01R31/318558Addressing or selecting of subparts of the device under test
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318533Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
    • G01R31/318597JTAG or boundary scan test of memory devices
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0736Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • 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/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/328Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for runtime instruction patching
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)

Abstract

Ein Controller für eine Speicherkomponente umfasst eine Verarbeitungseinheit und mindestens eine mit der Verarbeitungseinheit gekoppelte Speichereinheit, wobei die Speichereinheit mindestens einen ersten Bereich zum Speichern einer Benutzer-Firmware und einen zweiten Bereich zum Speichern einer Controller-Firmware umfasst; die Verarbeitungseinheit ist so konfiguriert, dass sie eine Speicheradresse eines auszuführenden Programmbefehls erfasst, die Speicheradresse mit einem Referenzwert vergleicht und basierend auf diesem Vergleich Aktionen freigibt/ einschränkt, die mit dem Programmbefehl verbunden sind. Eine zugehörige Speicherkomponente und zugehörige Verfahren werden ebenfalls offenbart.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung betrifft Speichervorrichtungen und insbesondere einen Controller für eine Speicherkomponente.
  • STAND DER TECHNIK
  • Nichtflüchtige Flash-Speicher sind heute einer der grundlegenden Bausteine in modernen elektronischen Systemen, insbesondere für Echtzeitbetriebssysteme (RTOS). Im Allgemeinen wird der Betrieb der nichtflüchtigen Flash-Speicher von einem Controller verwaltet, der eine eingebettete Firmware umfasst, wobei ein solcher Controller die erforderlichen Schreib-/Lese-/Löschvorgänge durchführt.
  • Die Leistungen von Flash-Speichern in Bezug auf Geschwindigkeit, Verbrauch, Veränderbarkeit, Nichtflüchtigkeit und die zunehmende Bedeutung der Rekonfigurierbarkeit von Systemen haben bisher ihre Integration in System-on-Chip (SoC)-Geräte gefördert.
  • Ein SoC ist ein integrierter Halbleiterschaltkreis, in dem alle Komponenten eines Computers oder anderer elektronischer Systeme integriert sind. Diese Komponenten umfassen in der Regel eine zentrale Verarbeitungseinheit (CPU), SoC-Controller, Speicherbereiche, Ein-/Ausgabeanschlüsse und sekundäre Speicherkomponenten, die alle auf einem einzigen Halbleitersubstrat untergebracht sind. Ein SoC kann je nach Anwendung digitale, analoge, Mixed-Signal- und oft auch Hochfrequenz-Signalverarbeitungsfunktionen enthalten. Da sie auf einem einzigen elektronischen Substratintegriert sind, kann ein SoC-Bauelement viel weniger Strom verbrauchen und viel weniger Fläche beanspruchen als Multi-Chip-Designs mit äquivalenter Funktionalität. SoC-Geräte sind heute gängig im Mobile Computing, in eingebetteten Systemen und im Internet der Dingeweit verbreitet.
  • Wenn ein Flash-Speicher mit einem SoC gekoppelt ist, kommuniziert und interagiert der SoC-Controller mit dem Flash-Controller, d.h. mit dem Controller des Flash-Speichers.
  • Generell ist bei den bekannten Lösungen die Interaktion eines externen Controllers, beispielsweise des SoC-Controllers, mit dem Flash-Controller nur auf Standard-Kundenbefehle beschränkt und der Zugriff auf die im Flash-Controller eingebettete Firmware soll nicht gestattet werden. Die Flash-Controller-Firmware wird daher nur vom internen Flash-Controller verwendet und darf vom Benutzer nicht verwendet werden.
  • Figurenliste
    • 1 ist eine schematische und perspektivische Ansicht einer System-on-Chip-Vorrichtung gemäß dem Stand der Technik und mit einem eingebetteten Speicherabschnitt;
    • 2 ist eine schematische und perspektivische Ansicht einer System-on-Chip-Vorrichtung gemäß der vorliegenden Offenbarung und eine Speicherkomponente umfasst, die den eingebetteten Speicherabschnitt der Vorrichtungen nach dem Stand der Technik ersetzt;
    • 3 ist eine schematische Ansicht der Speicherkomponente gemäß der vorliegenden Offenbarung;
    • 4 zeigt schematisch eine Architektur eines Controllers der Speicherkomponente gemäß der vorliegenden Offenbarung;
    • 5 ist ein Beispiel für eine Anweisung, die von der Steuerung gemäß der vorliegenden Offenbarung gefiltert wird;
    • 6A und 6B zeigen schematisch eine Zugriffsoperation auf Bereiche eines ROM des Controllers der vorliegenden Offenbarung; und
    • 7 zeigt schematisch eine Initialisierung eines Benutzerbereichs des ROM des Controllers der vorliegenden Offenbarung;
    • 8 zeigt ein Flussdiagramm eines Verfahrens gemäß der vorliegenden Offenbarung.
    • 9 zeigt ein Flussdiagramm eines Verfahrens gemäß der vorliegenden Offenbarung.
  • DETAILLIERTE BESCHREIBUNG
  • Unter Bezugnahme auf diese Zeichnungen werden hierin Systeme und Verfahren offenbart, die einen Controller für eine Speicherkomponente (insbesondere einschließlich eines nichtflüchtigen Speichers) beinhalten.
  • Genauer gesagt, wie im Folgenden detailliert beschrieben wird, umfasst ein beispielhafter Controller für eine Speicherkomponente eine Verarbeitungseinheit und mindestens eine mit der Verarbeitungseinheit gekoppelte Speichereinheit, wobei die Speichereinheit mindestens einen ersten Bereich zum Speichern eines Benutzers umfasst Firmware und einen zweiten Bereich zum Speichern einer Controller-Firmware, wobei die Verarbeitungseinheit konfiguriert ist, um eine Speicheradresse eines auszuführenden Programmbefehls zu erfassen, wobei die Speicheradresse der Speichereinheit zugeordnet ist, die Speicheradresse mit einem Referenzwert zu vergleichen, und , basierend auf diesem Vergleich, Aktionen aktivieren/deaktivieren (d.h. einschränken), die mit dem Programmbefehl verbunden sind. Insbesondere ist der Controller der Speicherkomponente so konfiguriert, dass er bestimmte Informationen speichert, die mit einem externen Controller (beispielsweise mit einem System-on-Chip-Controller) geteilt werden können, während andere gespeicherte Informationen geheim bleiben und der Benutzer nicht darauf zugreifen darf dazu.
  • Darüber hinaus umfasst ein beispielhaftes Verfahren gemäß der vorliegenden Offenbarung die Schritte des Speicherns einer Benutzerfirmware in einem ersten Bereich einer Speichereinheit und des Speicherns einer Controller-Firmware in einem zweiten Bereich der Speichereinheit, Erfassen einer Speicheradresse eines Programmbefehls, der zu ausgeführt, Vergleichen der Speicheradresse mit einem Referenzwert und, basierend auf diesem Vergleich, Aktivieren/Deaktivieren (d.h. Einschränken) von Aktionen, die dem Programmbefehl zugeordnet sind.
  • Nichtflüchtige Speicher behalten ihren Inhalt, wenn die Stromversorgung ausgeschaltet wird, was sie zu einer guten Wahl zum Speichern von Informationen macht, die nach einem System-Power-Cycle abgerufen werden sollen. Ein nichtflüchtiger Speicher ist jedoch typischerweise langsamer als ein flüchtiger Speicher und weist häufig komplexere Schreib- und Löschvorgänge auf.
  • Ein Flash-Speicher ist eine Art nichtflüchtiger Speicher, der gespeicherte Daten speichert und sich durch eine sehr schnelle Zugriffszeit auszeichnet. Es kann in Blöcken anstelle von jeweils einem Byte gelöscht werden. Jeder löschbare Speicherblock umfasst eine Vielzahl von nichtflüchtigen Speicherzellen, die in einer Matrix von Zeilen und Spalten angeordnet sind. Jede Zelle ist mit einer Zugangsleitung und/oder einer Datenleitung gekoppelt. Die Zellen werden durch Manipulation der Spannungen auf den Datenleitungen programmiert und gelöscht.
  • Derzeit ermöglicht die Technologie der komplexen Halbleiterstrukturen, die als System-on-Chips bekannt sind, die Integration von mindestens einem eingebetteten nichtflüchtigen Speicher bis zu 128 Mbit.
  • 1 zeigt ein Beispiel für eine bekannte Lösung einer komplexen System-on-Chip (SoC)-Struktur 100, die einen großen Schaltungsabschnitt umfasst, der von einem herkömmlichen eingebetteten nichtflüchtigen Speicherabschnitt 110 eingenommen wird.
  • Dieser eingebettete nichtflüchtige Speicherabschnitt 110 enthält ein Array von Flash-Speicherzellen, das in 1 als eFlash-Array angezeigt wird.
  • Um die Speicherzellen des Arrays zu lesen, wird ein dedizierter Schaltungsabschnitt 130 bereitgestellt, der eine optimierte Lese-Finite-State-Maschine enthält, die verwendet wird, um eine hohe Leseleistung sicherzustellen, wie z.B. Verzweigungsvorhersage, Fetch/Pre-Fetch, Interrupt-Verwaltung, Fehlerkorrektur und so weiter.
  • Um die Speicherzellen des Arrays zu beschreiben und zu löschen, ist ein spezieller logischer Schaltungsteil 140 vorgesehen, der einen vereinfachten RISC-Controller (Reduced Instruction Set Computer) oder eine Modify Finite State Machine enthält, der die logische Schaltung für die Handhabung der Programmier- und Löschalgorithmen ist.
  • Wie in 2 gezeigt, wird gemäß der vorliegenden Offenbarung der Speicherteil (d.h. die Referenznummer 110 aus 1) aus der SoC-Struktur entfernt, wodurch der entsprechende Halbleiterbereich für andere Logikschaltungen und zur Unterstützung einer strukturell unabhängigen Speicherkomponente 210, die eine SoC-Struktur 200 teilweise überlappt, verwendet werden kann. Die Größe dieses Speicherbausteins 210 wird auf über 256 Mbit oder sogar 512 Mbit vergrößert. Im Allgemeinen hat die Speicherkomponente 210 eine variable Größe in Abhängigkeit von der Größe des darin enthaltenen Speicherarrays, das gemäß den Bedürfnissen des Benutzers in einem Wertebereich von 128 Mbit bis 512 Mbit oder mehr hergestellt wird.
  • Das Entfernen des eingebetteten Speicherabschnitts hat ferner den großen Vorteil, Speicherplatz freizugeben, wodurch ein Halbleiterbereich 220 der SoC-Struktur 200 erhalten wird, der die Integration zusätzlicher Benutzerfunktionen und/oder eine Reduzierung des gesamten SoC-Bereichs ermöglicht.
  • Das Ergebnis dieser Lösung ist die neue SoC-Struktur aus 2, die eng mit der neuen strukturell unabhängigen Speicherkomponente 210 verbunden ist, die mit der SoC-Struktur 200 gekoppelt ist, zum Beispiel durch eine Vielzahl von Kopplungselementen 230, wie Säulen, sowie durch Silizium-Durchkontaktierungen, Ball-in-Grid, Flip-Chip-Technologie, drahtlose Verbindungen (Spulen) und dergleichen. In einer Ausführungsform handelt es sich bei den Kopplungselementen um Säulen, die in dem Halbleiterbereich 220 angeordnet sind, der zuvor für den eingebetteten Speicherteil 110 in 1 vorgesehen war.
  • In einer Ausführungsform der vorliegenden Offenbarung umfasst die Speicherkomponente 210 für die SoC-Struktur 200 mindestens einen Speicherabschnitt und einen Logikschaltungsabschnitt zum Interagieren mit dem Speicherabschnitt und mit der SoC-Struktur 200, wobei die Speicherkomponente 210 strukturell unabhängig ist Halbleiterbauelement, das mit der System-on-Chip-Struktur 200 gekoppelt ist und diese teilweise überlappt. Eine Logikschaltung 240 ist in die SoC-Struktur 200 integriert, um mit dem Logikschaltungsabschnitt der Speicherkomponente 210 zusammenzuarbeiten.
  • Allgemeiner gesagt weist die Speicherkomponente 210 im Vergleich zu der größeren Größe der SoC-Struktur 200 eine geringere Größe auf, wobei der Begriff „teilweise überlappend“ bedeutet, dass die Speicherkomponente 210 den Bereich der SoC-Struktur 200 nur teilweise oder nicht vollständig abdeckt.
  • Die Kopplung zwischen der SoC-Struktur 200 und der Speicherkomponente 210 erfolgt durch die Verbindung einer Vielzahl von entsprechenden Pads oder Stiftanschlüssen, die einander in einem Schaltungslayout zugewandt sind, das die Ausrichtung der Pads beibehält, selbst wenn die Größe der Speicherkomponente 210 geändert wird.
  • In einer Ausführungsform der vorliegenden Offenbarung wurde die Anordnung der Pads der Speicherkomponente 210 auf einer Oberfläche der Speicherkomponente 210 realisiert. Genauer gesagt sind die Pads über dem Array angeordnet, so dass, wenn die Speicherkomponente 210 umgekehrt wird, ihre Pads den entsprechenden Pads der SoC-Struktur 200 zugewandt sind. Der Halbleiterbereich 220, der in bekannten System-on-Chip-Bauelementen 100 von dem eingebetteten nichtflüchtigen Speicherteil belegt wurde, ist für die Unterbringung der Verbindungspads vorgesehen, die den Pads der Speicherkomponente 210 entsprechen, und wird gleichzeitig für andere Schaltungen verwendet.
  • Auch eine größere Speicherkomponente kann mit den Pads der SoC-Struktur 200 abgestützt und verbunden werden, wobei die Position und Versetzung der Verbindungspads beibehalten wird.
  • Im Rahmen der vorliegenden Offenbarung ist die Oberseite der SoC-Struktur 200 mit der Rückseite der Speicherkomponente 210 verbunden, wobei die Pads der SoC-Struktur 200 auf die entsprechenden Pads der umgekehrten Speicherkomponente ausgerichtet sind. Alternativ kann die strukturell unabhängige Speicherkomponente 210 auch drahtlos mit der SoC-Struktur 200 verbunden werden. Bei einer drahtlosen Kopplung könnte ein Stapel von Speicherkomponenten gleicher Größe überlagert werden, so dass eine Stapelstruktur entsteht, bei der jede unabhängige Komponente von der Logikschaltung der SoC-Struktur 200 über eine entsprechende Identifikationsadresse adressiert wird.
  • Der zuvor von dem eingebetteten Speicherabschnitt 110 eingenommene Halbleiterbereich 220 wird nun verwendet, um zusätzliche Funktionalitäten zu implementieren und das Halbleiterbauelement für eine Logic Over Pads-Technologie vorzubereiten. Der Ausdruck „Logik über Pads“ bedeutet, dass eine logische Schaltung vorgesehen ist, die einige Verbindungspads überlappt, die sich im Inneren einer ersten oder Basisschicht befinden, die durch ein vollständiges Halbleiterprodukt, d. h. die SoC-Struktur 200, dargestellt wird.
  • Die Speicherkomponente 210 stellt somit eine obere Schicht dar, die an die SoC-Basisstruktur 200 gekoppelt und mit ihr verbunden ist. Die Speicherkomponente 210 überlappt teilweise die SoC-Strukturoberfläche, die zumindest den Halbleiterbereich 220 bedeckt, der zuvor von dem eingebetteten Speicherabschnitt 110 eingenommen wurde. Die Speicherkomponente 210 weist jedoch eine größere Kapazität auf und kann einen größeren Halbleiterbereich abdecken als der Halbleiterbereich 220. In dieser Hinsicht ist die Größe der überlappenden Speicherkomponente 210 größer als die Größe des überlappten Halbleiterbereichs 220, der den Verbindungen mit einer solchen überdeckenden Speicherkomponente 210 gewidmet ist. Mit anderen Worten ist die Fläche der überlappenden Speicherkomponente 210 größer als die Halbleiterfläche 220 der SoC-Struktur 200, die den Verbindungspads für die Speicherkomponente 210 gewidmet ist.
  • Darüber hinaus kann für ein besseres Funktionieren der SoC-Struktur 200 sogar der Logikschaltungsabschnitt 140 von 1 (der in der SoC-Vorrichtung 100 von 1 die Modify Finite State Machine oder RISC beinhaltet) entfernt und in Verbindung mit dem Speicher neu organisiert werden Komponente 210. Um die Schreib- und Löschphasen zu unterstützen, die auf der größeren Speicherkomponente 210 durchgeführt werden, ist eine Modify Finite State Machine oder RISC 240 in die Speicherkomponente 210 migriert.
  • Wie zuvor angegeben, beinhaltet die Speicherkomponente 210 den Logikschaltungsabschnitt zum Interagieren mit dem Speicherabschnitt und mit der SoC-Struktur 200.
  • Die Trennung und Optimierung des Logikschaltungsabschnitts ermöglicht es ferner, die Funktionalität der gesamten SoC-Struktur 200 zu verbessern, wodurch eine unabhängige Halbleiterspeicherkomponente 210 erhalten wird, die an die SoC-Struktur 200 gekoppelt ist.
  • Diese unabhängige Halbleiterspeicherkomponente 210 beinhaltet daher mindestens den Speicherabschnitt (vorzugsweise einen nichtflüchtigen Speicherabschnitt) und die zugehörige Modifizierungs-Finite-State-Maschine 240, die beide in ein Halbleiterprodukt integriert sind, dass an die SoC-Struktur 200 gekoppelt ist. In diesem Fall ist die Speicherlogik in der SoC-Struktur 200 diejenige, die Speicherschnittstellenkommunikation handhabt.
  • Mit anderen Worten, sowohl der nichtflüchtige Speicherabschnitt als auch der zugehörige Logikschaltungsabschnitt sind in der unabhängigen Halbleiterspeicherkomponente 210 integriert, die mit der SoC-Struktur 200 gekoppelt und verbunden ist.
  • Nun wird mit spezifischerer Bezugnahme auf das Beispiel von 3 die Hauptstruktur der Speicherkomponente 310 gemäß einer Ausführungsform der vorliegenden Offenbarung offenbart, wobei die Referenz 310 von 3 der Referenz 210 von 2 entspricht.
  • Die Speicherkomponente 310 umfasst mindestens: eine IO-Schaltung, einen Mikrosequenzer, ein Array von Speicherzellen 320, eine Array-Peripherie, eine Ladungspumpenarchitektur (einschließlich positiver und negativer Pumpen), Adressdecoder, Leseverstärker und entsprechende Latches, eine Servicelogik zur Verbindung aller Teile des Speichers und eine Befehlsbenutzerschnittstelle, beispielsweise einen CUI-Block. Die Speicherkomponente kommuniziert durch eine Vielzahl von Hochgeschwindigkeits-Pads und eine Vielzahl von Hoch-/Low-Speed-JTAG-Pads, die gegen elektrostatische Entladung (ESD) geschützt sein können.
  • Das Array von Speicherzellen 320 umfasst in einem Beispiel nichtflüchtige Flash-Speicherzellen.
  • In einer Ausführungsform der vorliegenden Offenbarung implementiert die Speicherkomponente 310 einen Speicher vom Typ mit direktem Speicherzugriff, um das eingebettete Speicherarray bekannter SoC-Vorrichtungen zu ersetzen.
  • Darüber hinaus sieht die vorgeschlagene Idee die Implementierung des Speicherbauelements 310 in einem „Known Good Die“ (KGD)-Formfaktor oder Bare-Die vor, der es erlaubt, die Leseverstärkerausgänge, bis auf eine Zwischenspeicher-Struktur in der Mitte, direkt mit einem Controller der SoC-Struktur.
  • Strategien zur Erzielung des KGD-Formfaktors basierten auf der Nutzung der vorhandenen Infrastruktur zum Testen und Einbrennen von herkömmlich verpackten Komponenten. Dies minimiert die Menge an Hardware, Werkzeugen oder Einfügungen, die Bare-Die-Produkte kostspieliger machen.
  • Darüber hinaus wird eine JTAG-Schnittstelle für den Test der Speicherkomponente 310 verwendet, was die Wiederverwendung des Testwerkzeugs ermöglicht. Daher umfasst die Speicherkomponente 310 auch eine JTAG-Logik.
  • Die Speicherkomponente 310 verwendet die Verbindungspads und den Logikschaltungsabschnitt, um die Verbindung mit der SoC-Struktur zu ermöglichen.
  • Die endgültige Konfiguration ist eine Face-to-Face-Verbindung SoC/Flash Array, bei der die Leseverstärker der Speicherkomponente 310 in einer Direktspeicherzugriffskonfiguration mit dem SoC verbunden sind. Die Verbindungen umfassen auch die JTAG-Schnittstelle und Steuerpins für Test- und andere Zwecke.
  • Auf diese Weise ist es möglich, die Anzahl der erforderlichen Verbindungen relativ gering zu halten, zum Beispiel im Bereich von 600 bis 650 Pads.
  • Das Speicherarray 320 der Speicherkomponente 310 ist als eine Sammlung von Unterarrays aufgebaut. Die Abtastketten können verbunden werden, um ein eindeutiges Schieberegister zu bilden, um die Verbindungen richtig zu testen.
  • Der Vorteil dieser Architektur ist, dass sie sehr skalierbar ist, wobei eine Erweiterung und/oder Verringerung der Dichte des Endgeräts lediglich die Spiegelung eines Teilarrays und die Herstellung der Verbindung bedeutet.
  • Der Direct Memory Access ermöglicht es, die endgültige Latenz, die der SoC beim Lesen der Daten erfahren kann, zu reduzieren.
  • Gemäß der vorliegenden Offenbarung ist die Speicherkomponente 310 mit einem Controller 300 des Flash-Arrays 320 (im Folgenden als Flash-Array-Controller bezeichnet) ausgestattet, wobei der Flash-Array-Controller 300 eine Architektur aufweist, die es ermöglicht, einige Flash-Array-Ressourcen mit dem SoC-Controller zu teilen, ohne die Geheimhaltung bestimmter darin gespeicherter Informationen (z. B. Algorithmen, Flash-Array-Spannungen, Ströme und allgemeinere Prozessinformationen) zu beeinträchtigen, und ein mögliches Kundenrückführungsmanagement gewährleistet.
  • 4 ist eine schematische Ansicht der Architektur einer Steuerung 400 gemäß der vorliegenden Offenbarung, wobei die Steuerung 400 der Steuerung 300 aus 3 entspricht.
  • Die Steuerung 400 umfasst eine Verarbeitungseinheit 410 und eine Speichereinheit 420, die operativ mit der Verarbeitungseinheit 410 verbunden ist.
  • Gemäß einer Ausführungsform der vorliegenden Offenbarung, wie in 4 gezeigt, ist die Speichereinheit 420 ein Nur-Lese-Speicher (ROM) in Form eines dedizierten Flash-Arrays, das von außerhalb des Flash-Array-Controllers teilweise adressierbar (lesbar/beschreibbar) ist 400, d.h. vom SoC-Controller, wie es im Folgenden detailliert beschrieben wird.
  • Insbesondere umfasst die ROM-ähnliche Struktur mindestens zwei verschiedene Flash-Blöcke, die logisch als kontinuierlicher Adressraum abgebildet sind. Mit anderen Worten, der ROM ist in einen ersten Bereich 420' und in einen zweiten Bereich 420" unterteilt, die als kontinuierlicher Adressraum abgebildet sind, die physisch getrennt sind und unabhängig gelöscht werden können.
  • Wie in 4 gezeigt, umfasst die Verarbeitungseinheit 410 einen Steuerabschnitt 430 (der auch als ROM-Benutzerbereich - RUA - Wachhund bezeichnet wird) konfiguriert ist, um dem Benutzer einen selektiven und geführten Zugriff auf die Bereiche des ROM zu ermöglichen, wie es im Folgenden beschrieben wird.
  • Gemäß einer Ausführungsform der vorliegenden Offenbarung kann der Benutzer seine eigene Firmware in den ersten Bereich 420' des ROM schreiben und speichern. Daher umfasst der erste Bereich 420' die Benutzerfirmware und kann von einem externen Controller, beispielsweise dem Controller des SoC, aufgerufen werden.
  • Andererseits ist der zweite Bereich 420" konfiguriert, um die Flash-Array-Controller-Firmware zu speichern (d.h. die interne Controller-Firmware, die den Betrieb des Systems verwaltet und vom Hersteller geschrieben wurde), und der Benutzer kann nicht direkt zugreifen. Der zweite Bereich 420" kann somit nur vom Hersteller beschrieben werden und der Benutzer kann nicht direkt darauf zugreifen und die darin eingebettete Firmware nicht direkt verwenden und ändern.
  • Aufgrund der obigen Trennung des ersten und zweiten Bereichs ist der ROM des Controllers 400 der vorliegenden Offenbarung somit durch den SoC-Controller teilweise adressierbar (lesbar/beschreibbar).
  • Um korrekt zu identifizieren, welcher Befehl der Benutzer-Firmware zur Ausführung abgerufen werden sollte, umfasst die Steuerung 400 ein Register, das identifiziert, welcher Firmware-Befehl als nächstes abgerufen und ausgeführt werden soll, wobei ein solches Register allgemein als Programmzähler (PC) bezeichnet wird.
  • Der Steuerabschnitt 430 der Verarbeitungseinheit 410 ist über einen Adressbus mit dem Programmzähler PC verbunden, so dass er den Wert des Programmzählers PC erfassen und die Speicheradresse des auszuführenden Befehls lesen kann, wobei auf diese Adresse hier Bezug genommen wird als PC_Adr.
  • Die Verarbeitungseinheit 410, insbesondere der Steuerabschnitt 430, ist dann konfiguriert, um die vom Programmzähler PC empfangene Speicheradresse mit einem Referenzwert (oder Schwellenwertadresse, im Folgenden als User_ADDR_limit bezeichnet) zu vergleichen, der zuvor in der Verarbeitungseinheit 410 gespeichert wurde. Der Referenzwert User_ADDR_limit kann vom Hersteller je nach Bedarf und/oder Umständen eingestellt werden.
  • Gemäß einer Ausführungsform der vorliegenden Offenbarung ist der Referenzwert User_ADDR_limit eine ROM-Speicheradresse, die den ersten Bereich 420' vom zweiten Bereich 420' abgrenzt. Vorzugsweise gehört der Referenzwert User_ADDR_limit zum ersten Bereich 420' des ROM und ist die Speicheradresse an der Trennung zwischen dem ersten Bereich 420' und dem zweiten Bereich 420" des ROM.
  • Insbesondere wenn die vom Programmzähler PC empfangene Speicheradresse PC_addr zum ersten Bereich 420' der Speichereinheit 420 gehört (d.h. sie ist dem ersten Bereich 420' zugeordnet), wird die Verarbeitungseinheit 410, insbesondere der Steuerabschnitt 430' , ein entsprechendes Ausgangssignal erzeugt, das geeignet ist, Aktionen zu deaktivieren, die mit der auszuführenden Anweisung der Benutzer-Firmware verbunden sind und die der Speicheradresse PC_addr entspricht, wodurch eine Beschränkung auf die Anweisung der Benutzer-Firmware angewendet wird.
  • Auf diese Weise kann der Controller 400 erkennen, dass der auszuführende Befehl kein Befehl der vom Hersteller geschriebenen Controller-Firmware ist, sondern ein Befehl der Benutzer-Firmware mit einer niedrigeren (oder allgemein anderen) Prioritätsstufe und daher mit einigen Einschränkungen, so dass ein Teil des Herstellercodes im zweiten Bereich 420" sowie andere Bereiche für den externen Benutzer nicht direkt zugänglich sind.
  • Insbesondere ist das erzeugte Ausgangssignal angepasst, um dedizierte Filterblöcke des Controllers 400 zu triggern, wobei die Filterblöcke konfiguriert sind, um auf die Anweisungen der Benutzer-Firmware (z. B. auf die Zieladressen solcher Anweisungen) zu reagieren, um die Ausführung einiger Aktionen, die diesen Anweisungen zugeordnet sind, wobei auf diese Weise die oben angegebenen Einschränkungen auf die Anweisungen der Benutzerfirmware angewendet werden.
  • Das oben erwähnte Ausgangssignal der Verarbeitungseinheit 410 wird im Folgenden auch als RUA-Signal bezeichnet.
  • Genauer gesagt wird das RUA-Signal in einer Ausführungsform der vorliegenden Offenbarung von einer Zustandsmaschine in der Verarbeitungseinheit 410 erzeugt, wobei ein solches Signal basierend auf dem obigen Vergleich der Speicheradresse PC_addr mit dem Referenzwert User_ADDR_limit unterschiedliche Werte annimmt. Zum Beispiel kann das RUA-Signal hoch sein (z.B. gleich 1), wenn die der Benutzeranweisung zugeordnete Speicheradresse PC_addr eine Adresse des ersten Bereichs 420' des ROM ist, und kann niedrig (d.h. gleich 0) sein, wenn die Speicheradresse PC_addr eine Adresse des zweiten ersten Bereichs 420" des ROM ist.
  • In einer Ausführungsform der vorliegenden Offenbarung ist die Verarbeitungseinheit 410, insbesondere ihr Steuerabschnitt 430, konfiguriert, um das RUA-Signal zu erzeugen und geltend zu machen, wenn der Wert des Programmzählers PC kleiner oder gleich dem Referenzwert User_ADDR_limit ist, d.h. wenn der Programmzähler PC befindet sich innerhalb des ROM-Bereichs, der mit der externen Steuerung geteilt wird (nämlich innerhalb des ersten Bereichs 420' des ROM). Der Steuerabschnitt 430 der Verarbeitungseinheit 410 ist somit konfiguriert, um zu überprüfen, ob PC_addr User_ADDR_limit ist.
  • Auf der Grundlage des obigen Vergleichs zwischen der erfassten Speicheradresse PC_addr des Programmbefehls und dem Referenzwert User_ADDR_limit ist es daher möglich, Aktionen zu aktivieren/deaktivieren, die den Programmbefehlen der Benutzerfirmware zugeordnet sind, insbesondere dank des RUA-Signals, dass von der Verarbeitungseinheit 410 erzeugt wird.
  • Wie im Folgenden ausführlicher offenbart wird, können die mit den Programmanweisungen der Benutzerfirmware verbundenen Aktionen beispielsweise der Zugriff auf bestimmte Teile des ROM sowie die Auswahl bestimmter Adressen eines RAM sein, oder auch die Auswahl bestimmter Testregister, die in der Speicherkomponente implementiert sind, die der Steuerung 400 zugeordnet ist. Die oben erwähnten Filterblöcke, die durch das RUA-Signal aktiviert werden (d.h. aktiviert, wenn PC_addr User_ADDR_limit) sind daher in der Lage, die jeweilige Zieladresse dieser Befehle zu erkennen und darauf zu reagieren, um diese Aktionen zu verhindern.
  • Gemäß einer Ausführungsform der vorliegenden Offenbarung kann die Benutzer-Firmware einige Unterprogramme der Controller-Firmware verwenden, ohne direkten Zugriff auf und Kenntnis von den Einzelheiten dieser Unterprogramme zu haben.
  • Um insbesondere die Benutzerfirmware des ersten Bereichs 420' mit der Controller-Firmware des zweiten Bereichs 420" zu verbinden, umfasst der zweite Bereich 420" der Speichereinheit 420 eine Vielzahl von Anwendungsprogrammierschnittstellen (APIs). Gemäß einer Ausführungsform der vorliegenden Offenbarung ist es nicht möglich, eine API des zweiten Bereichs 420" durch die Benutzerfirmware direkt aufzurufen, d.h. direkt aus dem ersten Bereich 420', so dass einige reservierte Informationen nicht mit dem Benutzer geteilt werden. Die API wird wie im Folgenden beschrieben aufgerufen.
  • Insbesondere ist der zweite Bereich 420" des ROM weiter konfiguriert, um mehrere Anrufbefehle zu speichern, die von der Benutzerfirmware aufgerufen werden können, wobei jeder dieser Anrufbefehle einer spezifischen Adresse des zweiten Bereichs 420" zugeordnet ist. Die Call-Befehle unterbrechen den Programmfluss, indem sie die Steuerung an ein Unterprogramm der Controller-Firmware übergeben. Auf diese Weise definiert die Vielzahl von Anrufbefehlen einen Unterbereich 420sub innerhalb des zweiten Bereichs 420" der Speichereinheit 420, wobei dieser Unterbereich 420sub alle benötigten Anrufbefehle speichert. Die Aufrufbefehle dieses Unterbereichs 420sub sind dazu ausgelegt, alle im zweiten Bereich 420" des ROM enthaltenen APIs aufzurufen und sind daher angepasst, um die Benutzerfirmware des ersten Bereichs 420' mit Unterprogrammen der Controller-Firmware des ROM zu verbinden zweiter Bereich 420".
  • Die API im zweiten Bereich 420" wird vom Hersteller geschrieben und der Benutzer kann nicht direkt darauf zugreifen und sie nicht ändern. Auf diese Weise kann das Benutzerprogramm im ersten Bereich 420' durch die Call-Befehle des Unterbereichs 420sub mit dem Steuerungsprogramm im zweiten Bereich 420" ohne direkten Zugriff auf diesen interagieren.
  • Die Vielzahl von Aufrufbefehlen im Unterbereich 420sub des zweiten Bereichs 420" definiert eine API-Nachschlagetabelle im zweiten Bereich 420" der Speichereinheit 420, wobei diese API-Nachschlagetabelle eine Sammlung von Aufrufbefehlen ist, die angepasst sind, um eine Schnittstelle für den externen Benutzer.
  • Die Adressen der im Unterbereich 420sub des zweiten ROM-Bereichs 420" gespeicherten Aufrufbefehle sind zwischen den Speicheradressen des ersten Bereichs 420' und den restlichen Adressen des zweiten Bereichs 420' enthalten, wobei der Unterbereich direkt zugänglich durch Anweisungen der Benutzer-Firmware ist.
  • Insbesondere wird gemäß einer Ausführungsform der vorliegenden Offenbarung der Unterbereich 420sub, der die Anrufbefehle enthält, über dem zweiten Bereich 420" zugewiesen, und der Referenzwert User_ADDR_limit ist die niedrigste Adresse des ersten Bereichs 420'. Mit anderen Worten, der Unterbereich 420sub ist der Teil des zweiten Bereichs 420", der durch höhere Adressen gekennzeichnet ist, selbst wenn andere Konfigurationen nicht ausgeschlossen sind.
  • Gemäß einer Ausführungsform der vorliegenden Offenbarung verhindert das von der Verarbeitungseinheit 410 erzeugte RUA-Signal einen direkten Aufruf einer API-Anweisung im zweiten Bereich 420" durch die Benutzerfirmware aus dem ersten Bereich 420'. Genauer gesagt, wenn eine API direkt durch eine Benutzer-Firmware-Anweisung aufgerufen wird, erfasst der Steuerabschnitt 430 der Verarbeitungseinheit 410 die entsprechende Adresse PC_addr des Programmzählers PC und stellt fest, dass sie zum ersten Bereich 420' gehört: das RUA-Signal wird erzeugt (z. B. ist das RUA-Signal gleich 1), und es ist dem Benutzer nicht erlaubt, direkt eine API aufzurufen, die sich im zweiten Bereich 420" befindet.
  • Insbesondere ist die Verarbeitungseinheit 410 gemäß einer Ausführungsform der vorliegenden Offenbarung dazu konfiguriert, einen ersten Filterblock 440 zu implementieren, der basierend auf dem RUA-Signal auf die Benutzerprogrammanweisung einwirkt. Wenn das RUA-Signal erzeugt wird (z. B. das RUA-Signal gleich 1 ist), ist der erste Filterblock 440 konfiguriert, um Parameter des Programmbefehls der Benutzerfirmware zu maskieren, um den direkten Aufruf des zweiten Bereichs der Speichereinheit zu verhindern, wie in 5 gezeigt, wo einige Bits auf 0 gezwungen werden (z. B. die Bits, die in 5 als „Maskiertes Bit“ gekennzeichnet sind). Wenn beispielsweise das RUA-Signal gleich 1 ist, wird der Befehl so gefiltert, dass die Zieladressen von JMPs und Calls-Befehlen maskiert werden, um einen direkten Sprung in den internen FLASH-Bereich des Controllers zu verhindern, und die signifikanten Ziffern auf 0 gesetzt werden. Der von der Architektur des Controllers erlaubte weitere Sprung/Aufruf erfolgt daher in den API-Look-Table-Bereich, d. h. in den Unterbereich 420sub.
  • Wenn andererseits der Benutzerprogrammbefehl einen Aufrufbefehl der API-Nachschlagetabelle im Unterbereich 420sub aufruft, erkennt der Steuerabschnitt 430, dass PC_addr > User_ADDR_limit und kein Steuerausgangssignal erzeugt wird (d.h. das RUA-Signal ist gleich auf 0), da die Speicheradresse in diesem Fall eine Adresse ist, die einem Aufrufbefehl im Unterbereich 420sub zugeordnet ist, der ein zulässiger Bereich ist; auf diese Weise kann der von der Anwender-Firmware aufgerufene Call-Befehl eine API des zweiten Bereichs 420" aufrufen, die somit ohne Einschränkung ausgeführt wird, da er von einem Befehl im Unterbereich 420sub aufgerufen wird, wie in 6A und 6B gezeigt. 6A veranschaulicht dieses allgemeine Prinzip und 6B veranschaulicht einen Beispielfall, in dem die erste API der Vielzahl von APIs durch den entsprechenden Aufrufer im Unterbereich 420sub aufgerufen wird. Wenn ein Unterprogramm von einem Aufrufer entsprechend einem RUA-Signal gleich 0 aufgerufen wird, sind daher alle Aktionen erlaubt. Der Aufruf (und die entsprechende Rückgabe) ist daher ein zweistufiger Prozess und kein direkter Aufruf ist erlaubt.
  • Auf diese Weise kann der Benutzer mittels der Call-Befehle im Unterbereich 420sub die gewünschte API des zweiten Bereichs 420" aufrufen und die zugehörigen Aktionen ausführen.
  • Zusammenfassend kann eine API durch einen Befehl aufgerufen werden, der im Unterbereich 420sub gespeichert ist, d.h. innerhalb des Flash-Rom-Bereichs des internen Controllers, der Speicheradressen zwischen dem Referenzwert User_Addr_limit und einem weiteren Grenzwert im zweiten Bereich 420" aufweist als APC_ADDR_limit bezeichnet. Ein solcher Aufrufbefehl wird zuerst durch einen Befehl der Benutzer-Firmware aufgerufen, d.h. innerhalb des Benutzer-Flash-Rom-Bereichs. Dies hat den Vorteil, dass der Benutzer im ersten Bereich seine eigene Firmware schreiben kann und im zweiten Bereich mit der steuerungsinternen Firmware interagieren kann, wobei die Geheimhaltung bestimmter Informationen gewahrt wird, wodurch eine sehr vielseitige und zuverlässige Steuerung bereitgestellt wird.
  • Unter erneuter Bezugnahme auf 4 umfasst der Controller 400 gemäß einer Ausführungsform der vorliegenden Offenbarung ferner einen Direktzugriffsspeicher (RAM) 450, der einen ersten RAM-Bereich 450' umfasst, auf den die Benutzerfirmware direkt zugreifen kann (und daher direkt zugreifbar ist), durch einen externen Controller wie den SoC-Controller) und einen zweiten RAM-Bereich 450" mit unterschiedlichen Adressen. Der erste Bereich 450' des RAM ist der Stapelzeiger, in dem Daten in einer LIFO-Konfiguration organisiert sind, was die Ausführung von PUSH-POP-Befehlen wie im Stand der Technik bekannt ermöglicht. Dementsprechend darf der Benutzer immer ohne Einschränkung auf diesen Bereich zugreifen. Die Trenn-RAM-Adresse zwischen dem ersten RAM-Bereich 450' und dem zweiten RAM-Bereich 450" wird im Folgenden als STACK_ADDR bezeichnet.
  • Der zweite Bereich 450" des RAM umfasst einen ersten Teil 451, auf den der Benutzer niemals zugreifen kann (nur der Hersteller kann auf diesen ersten Teil 451 zugreifen) und einen zweiten Teil 452, auf den der Benutzer unter bestimmten Umständen zugreifen kann.
  • Insbesondere wenn die Verarbeitungseinheit 410 das Ausgangssignal erzeugt (d.h. wenn das RUA-Signal gleich 1 ist), verhindert ein dedizierter zweiter Filterblock 460 (im Folgenden als R_Addr_filter bezeichnet) die Auswahl aller Adressen des zweiten Bereichs 450'' des RAM, und auch der zweite Teil 451 dieses Bereichs ist nicht adressierbar. In diesem Fall kann der Benutzer durch PUSH/POP-Befehle nur die Kontrolle über den ersten Bereich 450' haben, d.h. den Stapelzeigerbereich.
  • Mit anderen Worten, wenn der Programmbefehl der Benutzerfirmware einer Speicheradresse zugeordnet ist, die zum ersten Bereich 420' des ROM gehört, erkennt die Verarbeitungseinheit 410, dass ein solcher Befehl nicht die erforderlichen Privilegien hat, um auf den Abschnitt 452 des ROM zuzugreifen RAM, so dass der zweite Filterblock 460, der am Eingang die Adresse (angezeigt als ram_addr) des Teils des RAM empfängt, auf den der Benutzer zugreifen möchte, die relevanten Parameter des Befehls maskiert, so dass ein solcher Teil nicht adressierbar ist.
  • Wenn jedoch das Ausgangssignal nicht erzeugt wird (nämlich wenn das RUA-Signal gleich 0 ist), d.h. wenn eine API des zweiten Bereichs 420" durch den richtigen Call-Befehl im Unterbereich 420sub (der wiederum aufgerufen durch den Benutzerprogrammbefehl im ersten Bereich 420'), werden alle Beschränkungen für diesen speziellen Befehl aufgehoben und der Benutzer kann Zugriff auf den zweiten Bereich 450" des RAM haben, insbesondere auf den zweiten Teil 452 des zweiten Bereich des RAM. Mit anderen Worten, wenn der RAM von einer API adressiert wird, die von ihrem richtigen Aufrufer aufgerufen wird, werden die Beschränkungen der RAM-Adresse entfernt.
  • Darüber hinaus umfasst der Controller gemäß einer Ausführungsform der vorliegenden Offenbarung eine Schnittstelle mit mehreren Testregistern (einfach als T_reg bezeichnet), wobei jedes Register einer bestimmten Adresse (als T_reg_addr bezeichnet) zum Testen der Funktionalität des Speichers zugeordnet ist Komponente, der Controller 400 zugeordnet ist, oder allgemein zum Verbinden der Speicherkomponente mit einer Testmaschine und/oder einem externen Controller.
  • Die Testmode-Architektur des Speicherbausteins basiert daher auf diesen Registern, die unter Umständen vom SoC-Controller über die JTAG-Schnittstelle, von der Testmaschine über die JTAG-Schnittstelle und vom Flash-Array-Controller 400 über geschrieben/gelesen werden können interne Busse.
  • Die Testregister T_reg enthalten die Anweisungen (zB Parameter wie Ströme/Spannungen) für den Test des Speicherbausteins.
  • Insbesondere sind Testregister in mehreren Bänken organisiert, von denen jede N Register enthält (N = 8, 16 usw.) und einer bestimmten Adresse (im Folgenden als TL_addr bezeichnet) zugeordnet sind. Jede Bank kann auch eine oder mehrere Makrofunktionen (analog oder digital) steuern. Zum Beispiel ist Bank 0 der Positive Read Charge Pump gewidmet und jedes Bit der Bank entspricht einer bestimmten Funktion (z. B. Bit 0 = PUMP aktivieren, Bit 5:1 = Taktfrequenz, Bit 7:6 = Antriebsfähigkeit (max. Strom)), während Bank 12 dem Sense Amplifier gewidmet ist.
  • Der Test des Speicherbausteins wird daher von einem Protokoll basierend auf einer JTAG-Schnittstelle unter Verwendung der Anweisungen der Testregister T_reg verwaltet. Wie bereits erwähnt, kann der Test vom SoC-Controller oder von einer externen Testmaschine gesteuert werden. In jedem Fall basieren beide Ansätze auf einem integrierten Selbsttest (BIST), der von der internen Flash-Array-Steuerung 400 der vorliegenden Offenbarung ausgeführt wird. Dieser Ansatz hält auch den internen Algorithmus mit empfindlichen technologischen Parametern (wie Zeitsteuerungsspannungen und dergleichen) geheim.
  • Um die Verwendung einiger Testregister zu ermöglichen und den Zugriff auf andere reservierte Testregister zu deaktivieren, umfasst der Controller 400 gemäß einer vorteilhaften Ausführungsform der vorliegenden Offenbarung einen dritten Filterblock 470 (auch als T_Addr-Filter bezeichnet).
  • Tatsächlich kann der externe Benutzer nicht auf alle Testregister T_reg zugreifen, und der dritte Filterblock 470 ist dazu konfiguriert, den Zugriff auf einige Testregister T_reg auf Grundlage des von der Verarbeitungseinheit 410 erzeugten RUA-Signals zu deaktivieren. In dieser Ausführungsform ist der dritte Filterblock 470 so konfiguriert, dass, wenn das RUA-Signal von der Verarbeitungseinheit 410 erzeugt wird, einige reservierte Register nicht durch Maskieren der spezifischen Adresse eines solchen Registers adressierbar sind, und die Ausgabe eines solchen dritten der Filterblock 470 liefert nur das erste erlaubte Register T_reg.
  • Die nicht adressierbaren Testregister T_reg werden von der Steuerung 400 in ein Konfigurationsregister geschrieben.
  • Wie zuvor gesehen, ist das RUA-Signal gleich, sobald die vom Programmzähler PC erfasste Adresse innerhalb des zweiten Bereichs 420" des ROM liegt (d.h. wenn PC_addr > User_ADDR_limit) das RUA-Signal gleich ist und alle Beschränkungen entfernt werden. Mit anderen Worten, wenn auf ein Testregister T_reg durch eine API zugegriffen wird, die von einem richtigen Aufrufer im Unterbereich 420sub aufgerufen wird, ist ein solches Register nicht verboten und kann vom externen Benutzer verwendet werden (jedoch kann es vom Benutzer nicht direkt verwendet werden). Firmware). Auf diese Weise kann der Benutzer auf einige Register zugreifen, ohne die Möglichkeit, solche Register direkt zu schreiben/zu löschen, d.h. er hat einen indirekten Zugriff auf die Register.
  • In einer Ausführungsform kann auf einige Register T_reg niemals durch die Benutzer-Firmware zugegriffen werden und es kann nur durch den Hersteller zugegriffen werden, der die erforderlichen Privilegien hat, um einen spezifischen Testmodus auszuführen, der den Benutzer eines solchen verbotenen Registers erfordert.
  • Gemäß einer Ausführungsform der vorliegenden Offenbarung ist die Verarbeitungseinheit 410 auch dazu konfiguriert, an einem Eingang davon ein weiteres Signal zu empfangen, das den Steuerabschnitt 430 zwingt, kein RUA-Signal zu erzeugen (d.h. sie setzt RUA standardmäßig auf 0). Beispielsweise ist dieses weitere Signal, hier als Force_RUA_low bezeichnet, der Ausgang eines der Vielzahl von Testregistern T_reg, vorzugsweise eines Registers, auf das der externe Benutzer nicht zugreifen kann (d.h. ein Register, auf das nur mit einem High-Privilege-Test zugegriffen werden kann). -Modus, der beispielsweise nur vom Hersteller durchgeführt werden kann). In diesem Fall werden alle Einschränkungen entfernt.
  • 8 zeigt ein Flussdiagramm eines Verfahrens 800 gemäß der vorliegenden Offenbarung. Das Verfahren kann verwendet werden, um eine Speicherkomponente zu betreiben, beispielsweise eine Speicherkomponente 210 oder 310, die oben unter Bezugnahme auf die 2 bis 7 beschrieben wurde.
  • Das Verfahren 800 umfasst in Schritt 810 das Speichern einer Benutzerfirmware in einem ersten Bereich einer Speichereinheit und das Speichern einer Controller-Firmware in einem zweiten Bereich der Speichereinheit. Beispielsweise kann die Benutzer-Firmware im ersten Bereich der Speichereinheit frei gespeichert werden, während die Controller-Firmware in dem zweiten Bereich der Speichereinheit gespeichert werden kann, auf den der Benutzer nicht zugreifen kann, wie oben beschrieben.
  • Das Verfahren 800 umfasst bei Schritt 820 das Erfassen einer Speicheradresse eines auszuführenden Programmbefehls. Die Speicheradresse kann von der Verarbeitungseinheit 410 erfasst werden, wie beispielsweise unter Bezugnahme auf 4 beschrieben.
  • Das Verfahren 800 umfasst in Schritt 830 das Vergleichen der Speicheradresse mit einem Referenzwert.
  • Das Verfahren 800 umfasst außerdem in Schritt 840 basierend auf dem Vergleich das Freigeben/Einschränken von Aktionen, die mit der Programmanweisung verbunden sind. Wie oben unter Bezugnahme auf die 2-7 beschrieben, kann die Steuerung den Vergleich durchführen und jede Freigabe- oder Einschränkungsaktion auf den Speicherbereich anwenden.
  • Das Verfahren 800 kann ferner die Schritte des Erzeugens eines Ausgangssignals umfassen, wenn die erfasste Speicheradresse des Programmbefehls eine Adresse des ersten Bereichs der Speichereinheit ist, wobei das Ausgangssignal die mit dem Befehl der Benutzerfirmware verbundenen Aktionen einschränkt; zum Auslösen von Filterblöcken, die auf die Anweisung der Benutzer-Firmware wirken, über das Ausgangssignal, um die mit der Anweisung verbundenen Aktionen zu verhindern.
  • Das Verfahren 800 kann die Schritte des Speicherns mehrerer Anwendungsprogrammierschnittstellen (API) im zweiten Bereich der Speichereinheit und des Speicherns mehrerer Aufrufbefehle im zweiten Bereich der Speichereinheit umfassen, wobei jeder der Aufrufbefehle mit eine spezifische Adresse des zweiten Bereichs, die darin einen Unterbereich definiert, und über die Aufrufbefehle eine jeweilige API des zweiten Bereichs aufruft und die Benutzer-Firmware mit der Controller-Firmware koppelt; und optional des Maskierens von Parametern des Benutzerprogrammbefehls, um zu verhindern, dass der Benutzerprogrammbefehl des ersten Bereichs direkt eine in dem zweiten Bereich gespeicherte API aufruft.
  • Das Verfahren 800 kann ferner die Schritte des Verhinderns der Auswahl spezifischer Adressen des zweiten RAM-Bereichs umfassen; des Verhinderns der Auswahl spezifischer Testregister, wobei die Testregister angepasst sind, um die Speicherkomponente mit einer Testmaschine und/oder einem externen Controller zu verbinden; und/oder des Erkennens verschiedener Benutzer mit unterschiedlichen Privilegien und des Anwendens verschiedener Beschränkungen auf die Aktionen, die mit dem Programmbefehl gemäß den Privilegien verbunden sind.
  • Die Schritte des Verfahrens 800 müssen nicht in der in 8 berichteten Reihenfolge ausgeführt werden, und zusätzliche Schritte (nicht berichtet) können ausgeführt werden.
  • 9 zeigt, dass der externe Controller (z. B. der Controller des SoC) gemäß einer Ausführungsform der vorliegenden Offenbarung nicht in der Lage ist, den ersten Bereich 420' des ROM direkt zu programmieren. Das Steuergerät kann dann vom Benutzer durch ein Verfahren 900 programmiert werden, das Folgendes umfasst: Schreiben einer Firmware in einen Teil des RAM mit Hilfe des JTAG-Protokolls (Schritt 910), insbesondere in den zweiten Teil 452 des zweiten RAM-Bereichs 450", wie in 7 dargestellt. Das Verfahren umfasst dann das Aufrufen einer API, die im zweiten Bereich 420" des ROM gespeichert ist (Schritt 920), wobei diese API speziell für die Phase der Programmierung durch den Benutzer bestimmt ist, und dann das Verschieben der Firmware über diese API in den ersten Bereich 420' des ROM (Schritt 930), wo sie gespeichert ist. Die API für Benutzer-Flash-Updates löscht und programmiert dann die Firmware in den Flash-Block. Der Betrieb ist möglich, weil die beiden FLASHs einen „Well-Bereich“ getrennt haben.
  • Zusammenfassend lässt sich sagen, dass das vorgestellte Steuergerät es dem Benutzer ermöglicht, seine eigene Firmware in den dafür vorgesehenen ROM-Bereich zu schreiben und einige Informationen zur Durchführung bestimmter Operationen mitzuteilen, während geheime Informationen geheim bleiben, da sie auf indirekte Weise mit Hilfe der API-Lookup-Tabelle ausgeführt werden und auf einige Bereiche des Steuergeräts niemals zugegriffen werden kann. Insbesondere ist es dank des von der Verarbeitungseinheit erzeugten RUA-Signals möglich, einen „Befehlsfilter“ zu implementieren, der konfiguriert ist, um einige Befehle des Benutzerprogramms zu filtern, um Aufrufe/JUMPs außerhalb des zulässigen Bereichs zu vermeiden. Während der Codeausführung aus dem Benutzer-FLASH-Rom-Bereich (d.h. wenn RUA = 1) werden daher einige Einschränkungen auf erreichbare Codebereiche, adressierbare RAM-Adressen und T_REG und dann verwendbare Textmodi angewendet. Selbst wenn der Benutzer einige Ressourcen des Controllers verwenden darf, kann er daher nicht direkt auf verbotene Bereiche dieses Controllers zugreifen/auf diese schreiben.
  • Diese modifizierte Architektur gewährleistet eine große Vielseitigkeit des Controllers der vorliegenden Offenbarung und ermöglicht dem Benutzer, einige Funktionalitäten zu verwenden, ohne direkt auf verbotene Bereiche zuzugreifen.
  • Darüber hinaus können die Filter so konfiguriert werden, dass unterschiedliche Beschränkungen für unterschiedliche Benutzer mit unterschiedlichen Zugriffsrechten angewendet werden können (beispielsweise unterschiedliche RAM-Bereiche, unterschiedliche Beschränkungen für T_reg und unterschiedliche verfügbare APIs). Insbesondere können die Filter des Controllers zusätzliche Eingaben empfangen, die den jeweils durchzuführenden Testmodus berücksichtigen, wobei jeder Testmodus einem bestimmten Benutzer mit einem bestimmten Privileg zugeordnet ist, was es dem Controller ermöglicht, unterschiedliche Einschränkungen für verschiedene Benutzer anzuwenden, wie oben angegeben. So ist es möglich, verschiedene Test-Modi mit unterschiedlichen Privilegien durchzuführen, und entsprechend dieser Privilegien ist der Zugriff auf einige Bereiche des Controllers verboten.
  • Mit anderen Worten können die Filterblöcke je nach den unterschiedlichen Benutzern unterschiedlich konfiguriert werden, was von der Steuerung während der Authentifizierung erkannt werden kann, wodurch diese Steuerung die Filter entsprechend konfiguriert.
  • In der vorangehenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen verwiesen, die einen Teil des Dokuments bilden und in denen zur Veranschaulichung spezifische Beispiele dargestellt sind. In den Zeichnungen beschreiben gleiche Bezugszeichen in den verschiedenen Ansichten im Wesentlichen ähnliche Komponenten. Es können auch andere Beispiele verwendet werden, und es können strukturelle, logische und/oder elektrische Änderungen vorgenommen werden, ohne den Rahmen der vorliegenden Offenbarung zu sprengen. Darüber hinaus sollen die Proportionen und/oder der relative Maßstab der in den Figuren bereitgestellten Elemente bestimmte Ausführungsformen der vorliegenden Offenbarung veranschaulichen und sollten nicht in einem einschränkenden Sinne verstanden werden.
  • Wie hierin verwendet, kann sich „ein“, „oder“ „eine Anzahl von“ auf eines oder mehrere solcher Dinge beziehen. Eine „Vielzahl“ von etwas das zwei oder mehr beabsichtigt. Wie hierin verwendet, kann der Begriff „gekoppelt“ elektrisch gekoppelt, direkt gekoppelt und/oder direkt verbunden ohne dazwischenliegende Elemente (zB durch direkten physischen Kontakt) oder indirekt gekoppelt und/oder verbunden mit dazwischenliegenden Elementen umfassen. Der Begriff gekoppelt kann ferner zwei oder mehr Elemente umfassen, die zusammenwirken oder miteinander interagieren (z. B. wie in einer Ursache-Wirkungs-Beziehung).
  • Obwohl hier spezifische Beispiele illustriert und beschrieben wurden, wird der Fachmann erkennen, dass die gezeigten spezifischen Ausführungsformen durch eine Anordnung ersetzt werden können, mit der die gleichen Ergebnisse erzielt werden. Diese Offenbarung soll Anpassungen oder Variationen einer oder mehrerer Ausführungsformen der vorliegenden Offenbarung abdecken. Es versteht sich, dass die obige Beschreibung veranschaulichend und nicht einschränkend gemacht wurde. Daher sollte der Umfang von einer oder mehreren Ausführungsformen der vorliegenden Offenbarung unter Bezugnahme auf die beigefügten Ansprüche bestimmt werden, gemeinsam mit der vollständigen Spanne an Äquivalenten, zu denen derartige Ansprüche berechtigt sind.

Claims (27)

  1. Ein Controller für eine Speicherkomponente, umfassend - eine Verarbeitungseinheit; und - mindestens eine mit der Verarbeitungseinheit gekoppelte Speichereinheit, wobei die Speichereinheit mindestens einen ersten Bereich zum Speichern einer Benutzer-Firmware und einen zweiten Bereich zum Speichern einer Controller-Firmware umfasst; wobei die Verarbeitungseinheit konfiguriert ist zum: - Erfassen einer Speicheradresse eines auszuführenden Programmbefehls; - Vergleichen der Speicheradresse mit einem Referenzwert; und - basierend auf dem Vergleich Aktivieren/Einschränken von Aktionen, die der Programmanweisungzugeordnet sind.
  2. Controller nach Anspruch 1, wobei der Referenzwert eine Speicheradresse der Speichereinheit ist, die den ersten Bereich von dem zweiten Bereich abgrenzt, und wobei die Verarbeitungseinheit konfiguriert ist, um ein Ausgangssignal zu erzeugen, wenn die erfasste Speicheradresse des Befehls eine Adresse von des ersten Bereichs der Speichereinheit ist, wobei das Ausgangssignal angepasst ist, um die mit der Anweisung der Benutzerfirmware verbundenen Aktionen einzuschränken.
  3. Controller nach Anspruch 2, wobei das Ausgangssignal der Verarbeitungseinheit angepasst ist, um Filterblöcke auszulösen, wobei die Filterblöcke konfiguriert sind, um auf die Anweisungen der Benutzerfirmware zu reagieren, um die mit den Anweisungen verbundenen Aktionen zu verhindern.
  4. Controller nach Anspruch 1, wobei die Speichereinheit ein Read Only Memory (ROM) ist, der physikalisch in den ersten Bereich und den zweiten Bereich getrennt ist, wobei die Bereiche als kontinuierlicher Adressraum abgebildet sind.
  5. Controller nach Anspruch 1, wobei der zweite Bereich der Speichereinheit konfiguriert ist, um mehrere Anwendungsprogrammierschnittstellen (API) zu speichern.
  6. Controller nach Anspruch 5, wobei der zweite Bereich ferner konfiguriert ist, um mehrere Aufrufbefehle zu speichern, wobei jeder der Aufrufbefehle einer spezifischen Speicheradresse des zweiten Bereichs zugeordnet ist, die darin einen Unterbereich definiert, und wobei Aufrufbefehle sind dafür ausgelegt, eine jeweilige API des zweiten Bereichs aufzurufen, die Benutzer-Firmware des ersten Bereichs mit der Controller-Firmware des zweiten Bereichs verbindet.
  7. Steuerung nach Anspruch 6, wobei die Adressen der im Unterbereich des zweiten Bereichs gespeicherten Aufrufbefehle zwischen den Adressen des ersten Bereichs und den verbleibenden Adressen des zweiten Bereichs liegen.
  8. Controller nach Anspruch 3 und 5, umfassend einen ersten Filterblock, der konfiguriert ist, um Parameter des Benutzerprogrammbefehls zu maskieren, um zu verhindern, dass der Benutzerprogrammbefehl im ersten Bereich eine im zweiten Bereich gespeicherte API direkt aufruft.
  9. Controller nach Anspruch 1, der ferner einen Direktzugriffsspeicher (RAM) umfasst, der mindestens einen ersten RAM-Bereich umfasst, auf den die Benutzer-Firmware direkt zugreifen kann, und einen zweiten RAM-Bereich mit anderen RAM-Adressen als der erste RAM-Bereich.
  10. Controller nach Anspruch 3 und 9, umfassend einen zweiten Filterblock, der konfiguriert ist, um die Auswahl einer spezifischen Adresse des zweiten RAM-Bereichs basierend auf dem Steuersignal der Verarbeitungseinheit zu verhindern.
  11. Controller nach Anspruch 1, umfassend eine Schnittstelle mit einer Vielzahl von Testregistern, die angepasst ist, um die Speicherkomponente mit einer Testmaschine und/oder einem externen Controller zu verbinden, wobei jedes der Testregister einer spezifischen Adresse zugeordnet ist.
  12. Controller nach Anspruch 3 und 11, umfassend einen dritten Filterblock, der konfiguriert ist, um den Zugriff auf bestimmte Testregister zu deaktivieren.
  13. Controller nach Anspruch 1, wobei die Verarbeitungseinheit konfiguriert ist, um die Adresse des auszuführenden Programmbefehls von einem Programmzähler zu lesen.
  14. Controller nach Anspruch 1, wobei die Speicherkomponente mit einer System-on-Chip-(SoC)-Struktur gekoppelt ist.
  15. Controller nach Anspruch 4, wobei das ROM ein Flash-Array umfasst.
  16. Controller nach Anspruch 1, wobei die Verarbeitungseinheit konfiguriert ist, um ein Signal zu empfangen, das die Verarbeitungseinheit zwingt, alle Beschränkungen für die Programmanweisungen aufzuheben.
  17. Controller nach Anspruch 3, wobei die Filterblöcke konfiguriert sind, um unterschiedliche Beschränkungen auf die Aktionen anzuwenden, die mit dem Programmbefehl verbunden sind, für unterschiedliche Benutzer mit unterschiedlichen Privilegien.
  18. Speicherkomponente für eine System-on-Chip (SoC)-Struktur, wobei die Speicherkomponente ein Flash-Array und einen Controller beinhaltet, wobei der Controller umfasst: - eine Verarbeitungseinheit; und - mindestens eine mit der Verarbeitungseinheit gekoppelte Speichereinheit, wobei die Speichereinheit mindestens einen ersten Bereich zum Speichern einer Benutzer-Firmware und einen zweiten Bereich zum Speichern einer Controller-Firmware umfasst; wobei die Verarbeitungseinheit der Steuerung konfiguriert ist zum: - Erfassen einer Speicheradresse eines auszuführenden Programmbefehls; - Vergleichen der Speicheradresse mit einem Referenzwert; und - basierend auf dem Vergleich Aktivieren/Einschränken von Aktionen, die der Programmanweisungzugeordnet sind.
  19. Das Verfahren umfasst die folgenden Schritte: - Speichern einer Benutzer-Firmware in einem ersten Bereich einer Speichereinheit und Speichern einer Controller-Firmware in einem zweiten Bereich der Speichereinheit; - Erfassen einer Speicheradresse eines auszuführenden Programmbefehls; - Vergleichen der Speicheradresse mit einem Referenzwert; und basierend auf dem Vergleich Aktivieren/Einschränken von Aktionen, die der Programmanweisung zugeordnet sind.
  20. Verfahren nach Anspruch 19, das den Schritt des Erzeugens eines Ausgangssignals umfasst, wenn die erfasste Speicheradresse des Programmbefehls eine Adresse des ersten Bereichs der Speichereinheit ist, wobei das Ausgangssignal die mit dem Befehl der Benutzerfirmware verbundenen Aktionen einschränkt.
  21. Verfahren nach Anspruch 20, umfassend den Schritt des Auslösens von Filterblöcken, die auf die Anweisung der Benutzerfirmware wirken, über das Ausgangssignal, um die mit der Anweisung verbundenen Aktionen zu verhindern.
  22. Verfahren nach Anspruch 19, ferner die folgenden Schritte umfassend: - Speichern einer Vielzahl von Anwendungsprogrammierschnittstellen (API) im zweiten Bereich der Speichereinheit; und - Speichern einer Vielzahl von Aufrufbefehlen im zweiten Bereich der Speichereinheit, wobei jeder der Aufrufbefehle einer spezifischen Adresse des zweiten Bereichs zugeordnet ist, die darin einen Unterbereich definiert; und - Aufrufen einer entsprechenden API des zweiten Bereichs über die Call-Anweisungen und zum Verbinden der Benutzer-Firmware mit der Controller-Firmware.
  23. Verfahren nach Anspruch 22, umfassend den Schritt des Maskierens von Parametern des Benutzerprogrammbefehls, um zu verhindern, dass der Benutzerprogrammbefehl des ersten Bereichs direkt eine im zweiten Bereich gespeicherte API aufruft.
  24. Verfahren nach Anspruch 19, umfassend den Schritt des Verhinderns der Auswahl spezifischer Adressen des zweiten RAM-Bereichs.
  25. Verfahren nach Anspruch 19, das den Schritt des Verhinderns der Auswahl spezifischer Testregister umfasst, wobei die Testregister angepasst sind, um die Speicherkomponente mit einer Testmaschine und/oder einem externen Controller zu verbinden.
  26. Verfahren nach Anspruch 19, umfassend das Erkennen unterschiedlicher Benutzer mit unterschiedlichen Privilegien und das Anwenden unterschiedlicher Beschränkungen auf die Aktionen, die mit dem Programmbefehl gemäß den Privilegien verbunden sind.
  27. Verfahren zum Initialisieren eines Speichercontrollers, der mindestens einen RAM und einen ROM umfasst, wobei der ROM in mindestens einen ersten Bereich und einen zweiten Bereich unterteilt ist, wobei das Verfahren umfasst: - Schreiben einer Firmware in einen Teil eines RAM unter Verwendung eines JTAG-Protokolls; - Aufrufen einer im zweiten Bereich des ROM gespeicherten API; - Verschieben der Firmware über die API in den ersten Bereich des ROM.
DE112019007381.8T 2019-05-31 2019-05-31 Controller für eine speicherkomponente Pending DE112019007381T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2019/000478 WO2020240235A1 (en) 2019-05-31 2019-05-31 Controller for a memory component

Publications (1)

Publication Number Publication Date
DE112019007381T5 true DE112019007381T5 (de) 2022-03-10

Family

ID=66999862

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019007381.8T Pending DE112019007381T5 (de) 2019-05-31 2019-05-31 Controller für eine speicherkomponente

Country Status (4)

Country Link
US (2) US11334377B2 (de)
CN (1) CN113924623A (de)
DE (1) DE112019007381T5 (de)
WO (1) WO2020240235A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11334377B2 (en) * 2019-05-31 2022-05-17 Micron Technology, Inc. Controller for a memory component

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2503471B (en) * 2012-06-27 2015-05-06 Nordic Semiconductor Asa Integrated-circuit radio
TWI497415B (zh) * 2013-06-21 2015-08-21 Wistron Neweb Corp 韌體升級方法與使用此方法的裝置
US9853974B2 (en) * 2014-01-27 2017-12-26 Cryptography Research, Inc. Implementing access control by system-on-chip
US10740084B2 (en) * 2018-08-16 2020-08-11 Intel Corporation Soc-assisted resilient boot
US11334377B2 (en) * 2019-05-31 2022-05-17 Micron Technology, Inc. Controller for a memory component

Also Published As

Publication number Publication date
WO2020240235A1 (en) 2020-12-03
US20220276885A1 (en) 2022-09-01
US20210333327A1 (en) 2021-10-28
US11334377B2 (en) 2022-05-17
CN113924623A (zh) 2022-01-11
US11755350B2 (en) 2023-09-12

Similar Documents

Publication Publication Date Title
DE69914864T2 (de) Steuerung der konfiguration in einer programmierbaren logik-einheit mittels nichtflüchtiger bauelemente
DE60118622T2 (de) Benutzer-konfigurierbares on-chip speichersystem
DE2954731C2 (de) Monolithischer Mikroprozessor
DE69433320T2 (de) Ferngesteuerter rreprogrammierbarer programmspeicher fuer einen mikrokontroller
DE3853759T2 (de) Datenprozessor mit zwei Betriebsmoden.
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE112019007371T5 (de) Eine mit einem system-on-chip gekoppelte speichergerätearchitektur
DE60012081T2 (de) Nichtflüchtige Halbleiterspeicheranordnung, die eine Datenleseoperation während einer Datenschreib/lösch-Operation erlaubt
DE3618163A1 (de) Speicher-management fuer ein mikroprozessorsystem
DE112015005102T5 (de) Systeme und verfahren zum erzeugen von einem hostbefehl zugeordneten hinweisinformationen
WO2013110736A1 (de) Speichercontroller zur bereitstellung mehrerer definierter bereiche eines massenspeichermediums als unabhängige massenspeicher an einen master-betriebssystem - kern zur exklusiven bereitstellung an virutelle maschinen
EP1358558B1 (de) Mikroprozessorschaltung für datenträger und verfahren zum organisieren des zugriffs auf in einem speicher abgelegten daten
DE112018004577T5 (de) Multiprozessorkern-vorrichtung mit mbist
DE19922155A1 (de) Speicheranordnung mit Adreßverwürfelung
DE3788704T2 (de) Speichersteuerungsanordnung und Logik-in-Speichervorrichtung.
DE102016109892B4 (de) Datenverarbeitungsvorrichtung und Verfahren zum Einsparen von Leistung in einer Datenverarbeitungsvorrichtung
DE60102466T2 (de) Zwei-tor cam speicher für simultanen flash speicher betrieb
EP0500973A1 (de) Initialisierungsroutine im EEPROM
EP1468362A2 (de) Verfahren und anordnung zum beschreiben von nv-memories in einer controller-architektur sowie ein entsprechendes computerprogrammprodukt und ein entsprechendes computerlesbares speichermedium
DE102022121767A1 (de) In-memory-assoziativverarbeitung für vektoren
DE112019007381T5 (de) Controller für eine speicherkomponente
DE19882617B4 (de) Speicherattributpalette
DE60221607T2 (de) Nichtflüchtiger Halbleiterspeicher und Informationsgerät
DE102004018473A1 (de) Monolithische Lesen-beim-Schreiben-Flashspeicher-Vorrichtung
DE3410497A1 (de) Rechneranordnung

Legal Events

Date Code Title Description
R012 Request for examination validly filed