DE102020116032A1 - Schnittstelle für nichtflüchtige speicher - Google Patents

Schnittstelle für nichtflüchtige speicher Download PDF

Info

Publication number
DE102020116032A1
DE102020116032A1 DE102020116032.1A DE102020116032A DE102020116032A1 DE 102020116032 A1 DE102020116032 A1 DE 102020116032A1 DE 102020116032 A DE102020116032 A DE 102020116032A DE 102020116032 A1 DE102020116032 A1 DE 102020116032A1
Authority
DE
Germany
Prior art keywords
circuit
command
memory
decoder
sequence
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
DE102020116032.1A
Other languages
English (en)
Inventor
Sajal Mittal
Sneha Bhatia
Vinayak Ghatawade
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
Publication of DE102020116032A1 publication Critical patent/DE102020116032A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/06Clock generators producing several clock signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/08Address circuits; Decoders; Word-line control 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/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/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Read Only Memory (AREA)

Abstract

Eine Schaltung, die ein nichtflüchtiges Speicherarray, eine Eingabe-/Ausgabe-(E/A-)Schaltung, eine Dekodiererschaltung, eine Steuerschaltung und eine Lese-/Schreibschaltung umfasst. Das nichtflüchtige Speicherarray ist mit einem Adressendekodierer gekoppelt, der einen Ort innerhalb des nichtflüchtigen Speicherarrays für einen Speicherbefehl identifiziert. Die E/A-Schaltung ist über einen Steuerbus mit einer Dekodiererschaltung gekoppelt. Die Dekodiererschaltung dekodiert eine Befehlsadresse und einen Speicherbefehl aus einer Befehlssequenz mit fester Länge, die von der E/A-Schaltung über den Datenbus empfangen wird. Die Dekodiererschaltung kann eine Serien-Parallel-Schaltung (Serial-In-Parallel-Out, SIPO) für das Dekodieren und den parallelen Betrieb einschließen. Die Steuerschaltung koppelt mit der E/A- und der Dekodiererschaltung und erzeugt Steuersignale, um dekodierte Speicherbefehle auszuführen. Die Lese-/Schreibschaltung koppelt mit dem nichtflüchtigen Speicherarray und der Steuerschaltung. Als Reaktion auf die Speicherbefehle überträgt die Lese-/Schreibschaltung Daten zwischen dem nichtflüchtigen Speicherarray und der E/A-Schaltung.

Description

  • HINTERGRUND
  • Flash-Speicher mit niedriger Latenz verarbeiten und speichern derzeit die großen Mengen an Daten, die in der heutigen digitalen Welt erzeugt werden. Beim Entwurf von Flash-Speichern mit niedriger Latenz werden Gesichtspunkte des Entwurfs und der Funktionalität auf Möglichkeiten zur weiteren Verringerung der Latenz untersucht, einschließlich der Lesezeiten, der hohen Schreib- bis Lesezeiten, der Befehls- und Adresszeiten (CA), der Dekodierzeiten für Befehle und Adressen usw.
  • Übliche CA-Verarbeitungsverfahren können ein Engpass beim Hochgeschwindigkeits-Lesebetrieb in Flash-Speichern mit niedriger Latenz sein. Die Übertragung sowie das Dekodieren der Befehls- und Adressdaten unter Verwendung von üblichen Dekodierern dauern zu lange. Dies ist zum Teil auf die Umsetzung einer Anzahl von Protokollen, wie dem Toggle-Modus und der offenen NAND-Flash-Schnittstelle (ONFI), zurückzuführen, die Befehlssequenzen mit variabler Länge verwenden. Die Interpretation von Befehlen, die eine variable Anzahl von Bytes variabler Länge aufweisen, erfordert eine separate Steuerungslinie, um zu signalisieren, wann der Befehlsabschnitt einer Übertragung beginnt und endet und wann ein Adressierungsabschnitt beginnt und endet. Ferner können die üblichen Protokolle zwei oder mehr Taktsignale verwenden. Zum Beispiel kann in bestimmten Protokollen ein Taktsignal für die Übertragung von Daten verwendet werden und ein getrenntes, möglicherweise langsameres Taktsignal für die Übertragung der Befehlsdaten (die Befehlsanweisungen selbst) und der Adressdaten.
  • Die CA-Übertragungszeit sollte die spezifischen Einstell- und Haltezeiten berücksichtigen, die der Dekodierer benötigt, um die CA-Daten zu sperren. Angesichts einer Beschränkung der Einstell- und Haltezeit und der maximalen Betriebsgeschwindigkeit eines Dekodierers ist das Bereitstellen von schnelleren CA-Anweisungen nicht hilfreich, wenn der Dekodierer diese nicht verarbeiten kann. Übliche Vorrichtungen senden CA unter Verwendung einer einzigen Datenrate (SDR) und einer getrennten Steuerleitung (d. h. einer Schreibfreigabe- oder WEx-Steuerlinie) als einen Takt für die CA. Die WEx-Taktperiode kann 10 ns betragen, was zu einer CA-Übertragungszeit von 70 ns bis 100 ns führt. Die Abweichung der Übertragungszeit ist auf die variable Länge der CA-Befehlssequenz zurückzuführen.
  • Es wird eine Lösung benötigt, um die Übertragungszeit und Dekodierungsgeschwindigkeit für CA-Daten zu verbessern und dadurch eine zusätzliche Latenzverringerung für Flash-Speicher mit geringer Latenz bereitzustellen.
  • KU RZDARSTELLU NG
  • Diese Offenbarung bezieht sich auf eine Schaltung, die ein nichtflüchtiges Speicherarray, eine Eingangs-/Ausgangs-(E/A-)Schaltung, eine Dekodiererschaltung, eine Steuerschaltung und eine Lese-/Schreibschaltung umfasst. Das nichtflüchtige Speicherarray ist mit einem Adressendekodierer gekoppelt. Der Adressendekodierer legt einen Ort innerhalb des nichtflüchtigen Speicherarrays für einen Speicherbefehl fest. Die E/A-Schaltung ist mit einem Datenbus gekoppelt. Die Dekodiererschaltung ist mit einem Steuerbus und der E/A-Schaltung gekoppelt. Die Dekodiererschaltung dekodiert eine Befehlsadresse und einen Speicherbefehl aus einer Befehlssequenz mit fester Länge, die von der E/A-Schaltung über den Datenbus empfangen wird. Die Steuerschaltung ist mit der E/A-Schaltung und der Dekodiererschaltung gekoppelt. Die Steuerschaltung erzeugt Steuersignale, um die Speicherbefehle auszuführen, die von der Dekodiererschaltung dekodiert werden. Die Lese-/Schreibschaltung ist mit dem nichtflüchtigen Speicherarray und der Steuerschaltung gekoppelt. Als Reaktion auf die Speicherbefehle überträgt die Lese-/Schreibschaltung Daten zwischen dem nichtflüchtigen Speicherarray und der E/A-Schaltung.
  • Diese Offenbarung bezieht sich ferner auf ein System, das eine Vielzahl von Speicher-Dies und eine Speichersteuerung umfasst. Jeder der Speicher-Dies ist an eine Speicherschnittstelle gekoppelt, die einen Datenbus und einen Steuerbus umfasst. Die Speichersteuerung ist über die Speicherschnittstelle mit den Speicher-Dies gekoppelt. Die Speichersteuerung umfasst einen Schnittstellenmanager, der Daten und eine Befehlsadressensequenz mit fester Länge unter Verwendung der Speicherschnittstelle an die Speicher-Dies überträgt. Die Speicher-Dies schließen jeweils eine Die-Steuerung mit einem Die-Schnittstellenmanager ein, der über die Speicherschnittstelle mit der Speichersteuerung kommuniziert. Der Schnittstellenmanager der Speichersteuerung und die Die-Schnittstellenmanager übertragen die Befehlsadressensequenz mit fester Länge unter Verwendung eines Protokolls mit doppelter Datenrate über den Datenbus. Der Datenbus umfasst ein Taktsignal, das eingerichtet ist, um bei einer Geschwindigkeit von 2 Nanosekunden pro Taktzyklus betrieben zu werden.
  • Schließlich bezieht sich diese Offenbarung auf ein Verfahren, das von der offenbarten Schaltung und dem System umgesetzt werden kann. Zunächst wird eine Befehlssequenz mit fester Länge unter Verwendung eines Protokolls mit doppelter Datenrate von einer Speichersteuerung über einen Datenbus als Reaktion auf ein Befehlssteuersignal empfangen. Das Befehlssteuersignal prüft, ob der Datenbus einen Speicherbefehl oder Daten trägt. Die Befehlssequenz mit fester Länge wird dann dekodiert, um den Speicherbefehl zu bestimmen, der durch die Befehlssequenz mit fester Länge identifiziert wird. Schließlich wird der identifizierte Speicherbefehl ausgeführt.
  • Figurenliste
  • Um die Diskussion über ein bestimmtes Element oder eine bestimmte Handlung zu erleichtern, nehmen die wichtigsten Ziffern in einem Bezugszeichen auf die Nummer der Figur Bezug, in der dieses Element zum ersten Mal vorgestellt wird.
    • 1 veranschaulicht ein System 100 gemäß einer Ausführungsform.
    • 2 veranschaulicht eine Speichervorrichtung 200 gemäß einer Ausführungsform.
    • 3 veranschaulicht eine Befehlssequenz mit fester Länge 300 gemäß einer Ausführungsform.
    • 4 ist ein Blockdiagramm eines exemplarischen Speichersystems 400 gemäß einer Ausführungsform.
    • 5 veranschaulicht eine Dekodiererschaltung 500 gemäß einer Ausführungsform.
    • 6 veranschaulicht eine Die-Steuerung 600 gemäß einer Ausführungsform.
    • 7 veranschaulicht eine Routine 700 gemäß einer Ausführungsform.
    • 8 ist ein exemplarisches Blockdiagramm einer Rechenvorrichtung 800, das in einer Ausführungsform verwendet werden kann.
  • DETAILLIERTE BESCHREIBUNG
  • Diese Offenbarung bezieht sich auf eine Lösung zur Verbesserung der Latenz aufgrund der Befehlssequenz, insbesondere des Dekodierens der Befehlsadressensequenz (CA) in Flash-Speichern mit niedriger Latenz. „Befehlssequenz“ nimmt Bezug auf einen Satz von Datenbytes, der eingerichtet ist, um einen Befehl oder eine Anweisung für einen Empfänger der Befehlssequenz darzustellen. In bestimmten Ausführungsformen schließt eine Befehlssequenz einen Ort oder eine Befehlsadresse ein, die für den Befehl oder die Anweisung gilt, die in der Befehlssequenz kommuniziert wird. In solchen Ausführungsformen kann die Befehlssequenz als eine Befehlsadressensequenz bezeichnet werden. „Befehlsadressensequenz“ bezieht sich auf eine Befehlssequenz, die sowohl einen Speicherbefehl als auch eine Befehlsadresse für den Speicherbefehl einschließt. Die Ausführungsformen der Lösung schließen eine Befehlssequenz mit fester Länge für die Übertragung einer Befehlsadressensequenz von einer Steuerung zu einem Empfänger ein. Die Befehlssequenz mit fester Länge wird anstelle einer Befehlssequenz mit variabler Länge/Größe verwendet.
  • „Speicherbefehl“ bezieht sich auf jeden Befehl, der sich auf einen Speicherbetrieb bezieht. Beispiele für Speicherbefehle schließen, ohne darauf beschränkt zu sein, Lesebefehle, Schreibbefehle, Wartungsbefehle, Konfigurationsbefehle, Administrationsbefehle, Diagnosebefehle, Testmodusbefehle, Befehle für Gegenmaßnahmen und alle anderen Befehle ein, die eine Speichersteuerung von einem Host empfangen oder an eine andere Komponente, eine Vorrichtung oder ein System ausgeben kann. „Speicherbetrieb“ nimmt Bezug auf einen Betrieb, der an einer Speicherzelle durchgeführt wird, um den Wert von Daten zu ändern oder zu erhalten, die durch eine Zustandseigenschaft der Speicherzelle dargestellt werden. Beispiele für Speichervorgänge schließen das Lesen (oder das Erkennen eines Zustands) von Daten aus einer Speicherzelle, das Schreiben (oder Programmieren) von Daten in eine Speicherzelle und/oder das Löschen von in einer Speicherzelle gespeicherten Daten ein, sind aber nicht darauf beschränkt.
  • „Speicher“ nimmt Bezug auf jede Hardware, Schaltung, Komponente, Modul, Logik, Vorrichtung oder Gerät, die eingerichtet, programmiert, entworfen, angeordnet oder konstruiert wurde, um Daten zu speichern. Bestimmte Arten von Speichern erfordern die Verfügbarkeit einer konstanten Leistungsquelle, um die Daten zu speichern und zu bewahren. Andere Arten von Speicher behalten und/oder speichern die Daten, wenn eine Leistungsquelle nicht verfügbar ist.
  • „Nichtflüchtiges Speicherarray“ nimmt Bezug auf einen Satz nichtflüchtiger Speicherzellen (auch als Speicherzellen oder nichtflüchtige Speicherzellen bezeichnet), die in einer Arraystruktur mit Zeilen und Spalten organisiert sind. Ein Speicherarray ist unter Verwendung eines Zeilenidentifizierer und eines Spaltenidentifizierers adressierbar.
  • „Speicherblock“ bezieht sich auf einen Satz von Speicherzellen, die so organisiert sind, dass die Speicherbetriebe auf Gruppen von Speicherzellen parallel durchgeführt werden können. Die Organisation des Satzes von Speicherzellen kann auf physikalische oder logischer Ebene umgesetzt werden. Somit kann ein Speicherblock in einer Ausführungsform eine physikalische Seite, wie eine Wortlinie umfassen, eine logische Seite, die physikalische Seiten umfasst, die Ebenen und/oder Speicher-Die überspannen, einen physikalischen Löschblock, der einen Satz physikalischer Seiten umfasst, einen logischen Löschblock (LEB), der einen Satz logischer Seiten umfasst, oder dergleichen. Ein Speicherblock kann hier als ein „Block“, ein Π, „Speicherblock“ oder ein LEB bezeichnet werden.
  • „Speicherzelle“ nimmt Bezug auf einen Typ von Speichermedien, die so eingerichtet sind, dass sie einen oder mehrere binäre Werte mittels einer bestimmbaren Eigenschaft des Speichermediums darstellen, wenn das Speichermedium abgetastet, gelesen oder erkannt wird, um die binären Werte zu bestimmen, die in der Speicherzelle gespeichert sind oder durch die bestimmbare Eigenschaft der Speicherzelle dargestellt werden. Speicherzelle und Speicherungszelle werden hierin austauschbar verwendet.
  • Die Art der bestimmbaren Eigenschaft, die zum Speichern von Daten in einer Speicherzelle verwendet werden, kann je nach Art des Speichers oder der verwendeten Speichertechnologie variieren. Zum Beispiel in Flash-Speicherzellen, in denen jede Speicherzelle einen Transistor, mit einem Sourceanschluss, einem Drainanschluss und einem Gate aufweist, ist die bestimmbare Eigenschaft ein Spannungspegel, der, wenn er an das Gate angebracht wird, die Speicherzelle veranlasst, einen Strom zwischen dem Drain- und dem Sourceanschluss zu leiten. Der Spannungspegel in diesem Beispiel wird hierin als Schwellenspannung bezeichnet. Eine Schwellenspannung kann auch als eine Steuergate-Referenzspannung (Control Gate Reference Voltage, CGRV), eine Lesespannung oder eine Referenzspannung bezeichnet werden.
  • Beispiele für bestimmbare physikalische Eigenschaften schließen eine Schwellenspannung für einen Transistor, einen elektrischen Widerstandswert einer Speicherzelle, einen Strompegel durch eine Speicherzelle, eine Magnetpolausrichtung, ein Spin-Transfer-Drehmoment und dergleichen ein, ohne darauf beschränkt zu sein.
  • „Schwelle“ bezieht sich auf einen Pegel, Punkt, Betrag, eine Intensität oder einen Wert, über dem eine Bedingung wahr ist oder auftreten wird und unter dem die Bedingung nicht wahr ist oder nicht auftreten wird. (Recherche: „Schwelle" auf Merriam-Webster.com. Merriam-Webster, 2019. Web. 14. November 2019. Bearbeitet)
  • „Speichermedien“ nimmt Bezug auf alle physischen Medien, die organisiert und eingerichtet sind, um ein oder mehrere Datenbits zu speichern. In einer Ausführungsform beziehen sich Speichermedien auf physische Speicherzellen und/oder Speicherungszellen, die in flüchtigen Speichermedien verwendet werden. In einer anderen Ausführungsform beziehen sich Speichermedien auf physische Speicherzellen und/oder Speicherungszellen, die in nichtflüchtigen Speichermedien verwendet werden.
  • „Flüchtige Speichermedien“ nimmt Bezug auf jede Hardware, Vorrichtung, Komponente, Element oder Schaltung, die eingerichtet ist, um eine veränderbare physikalische Eigenschaft zur Darstellung eines Binärwerts von Null oder Eins aufrechtzuerhalten, für den die veränderbare physische Eigenschaft in einen Standardzustand zurückkehrt, der nicht mehr den Binärwert darstellt, wenn eine primäre Leistungsquelle entfernt wird, oder wenn keine primäre Leistungsquelle verwendet wird, um den dargestellten Binärwert aufzufrischen. Beispiele für flüchtige Speichermedien schließen dynamische Direktzugriffsspeicher (Dynamic Random Access Memory - DRAM), statische Direktzugriffsspeicher (Static Random Access Memory - SRAM), Direktzugriffsspeicher mit doppelter Datenrate (Double Data Rate Random Access Memory - DDR RAM) oder andere Festkörperspeicher mit Direktzugriff ein, sind aber nicht darauf beschränkt.
  • Während die flüchtigen Speichermedien hierin in verschiedenen Ausführungsformen als „Speichermedien“ bezeichnet werden, können die flüchtigen Speichermedien allgemeiner als flüchtiger Speicher bezeichnet werden.
  • In bestimmten Ausführungsformen sind Daten, die in flüchtigen Speichermedien gespeichert sind, auf Byte-Ebene adressierbar, was bedeutet, dass die Daten in den flüchtigen Speichermedien in Bytes (8 Bit) von Daten organisiert sind, die jeweils eine einzigartige Adresse haben, wie eine logische Adresse.
  • In bestimmten Ausführungsformen kann eine Befehlssequenz mit fester Länge verwendet werden, die ein Adressenfeld, ein Befehlsfeld, ein oder mehrere Befehlspräfixfelder und ein oder mehrere Befehlssuffixfelder umfasst, die zusammen in eine feste Gesamtgröße passen. „Befehlsadresse“ bezieht sich auf eine Adresse innerhalb eines nichtflüchtigen Speicherarrays, die einem Speicherbefehl zugeordnet ist. Wenn ein Speicherbefehl ein Lesebefehl ist, ist die Befehlsadresse die Adresse des Bytes, der logischen Seite, der physischen Seite des Datenblocks und/oder des Speicherblocks, aus dem die Daten gelesen werden sollen. Wenn ein Speicherbefehl ein Schreib-/Programmbefehl ist, ist die Befehlsadresse die Adresse des Bytes, der logischen Seite, der physischen Seite des Datenblocks und/oder des Speicherblocks oder des Offsets darin, an der Daten für den Schreib-/Programmbefehl geschrieben/gespeichert werden sollen. Wenn ein Speicherbefehl ein Wartungsbefehl ist, wie ein Löschbefehl, ist die Befehlsadresse die Adresse des physischen Löschblocks, des logischen Löschblocks und/oder des Speicherblocks, der gelöscht werden soll.
  • „Dekodierer“ nimmt Bezug auf jede Hardware, Vorrichtung, Komponente, Element oder Schaltung, die eingerichtet ist, um Signale auf einer Kommunikationslinie, wie einer Daten- und/oder Steuerzeile, zu interpretieren. In bestimmten Ausführungsformen ist ein Dekodierer eingerichtet, um die Signale als einen Datenwert zu interpretieren, der eingerichtet ist, um einen Befehl wie einen Speicherbefehl darzustellen. Alternativ oder zusätzlich kann der Dekodierer eingerichtet werden, um die Signale als einen Datenwert zu interpretieren, der eingerichtet ist, um einen Ort oder eine Adresse, wie eine Befehlsadresse, darzustellen. Alternativ oder zusätzlich kann der Dekodierer eingerichtet werden, um die Signale als einen Datenwert zu interpretieren, der eingerichtet ist, um Daten darzustellen, die auf einem Speichermedium, wie einem nichtflüchtigen Speichermedium, gespeichert oder von einem solchen abgerufen werden. „Hardware“ nimmt Bezug auf eine Logik, die als analoger und/oder digitaler Schaltkreis enthalten ist.
  • „Nichtflüchtige Speichermedien“ nimmt Bezug auf jede Hardware, Vorrichtung, Komponente, jedes Element oder jeden Schaltkreis, die bzw. der so eingerichtet ist, dass sie bzw. er eine veränderbare physikalische Eigenschaft beibehält, die verwendet wird, um einen binären Wert von Null oder Eins darzustellen, nachdem eine primäre Stromquelle entfernt wurde. Nichtflüchtige Speichermedien können hierin austauschbar mit dem Begriff nichtflüchtige Speicherungsmedien verwendet werden.
  • Die Befehlssequenz mit fester Länge kann unter Verwendung des DDR-Protokolls (Double Data Rate) an ein adressiertes Speicher-Die gesendet werden. „Speicher-Die“ nimmt Bezug auf einen kleinen Block aus Halbleitermaterial, auf dem eine gegebene Funktionsschaltung hergestellt wird. Üblicherweise werden integrierte Schaltkreise in großen Chargen auf einem einzigen Wafer aus elektronischem Silizium (Electronic-Grade Silicon, EGS) oder einem anderen Halbleiter (wie GaAs) durch Prozesse wie Fotolithografie hergestellt. Der Wafer wird in viele Stücke geschnitten (zerteilt), die jeweils eine Kopie der Schaltung enthalten. Jedes dieser Stücke wird als Die bezeichnet. (Recherche: Die (integrierte Schaltung) auf Wikipedia.com 9. Oktober 2019. Zugriffsdatum 18. November 2019.) Ein Speicher-Die ist in einer Ausführungsform ein Die, das eine Funktionsschaltung für den Betrieb als ein nichtflüchtiges Speichermedium und/oder ein nichtflüchtiges Speicherarray enthält.
  • „Nichtflüchtige Speichermedien“ nimmt Bezug auf jede Hardware, Vorrichtung, Komponente, jedes Element oder jeden Schaltkreis, die bzw. der so eingerichtet ist, dass sie bzw. er eine veränderbare physikalische Eigenschaft beibehält, die verwendet wird, um einen binären Wert von Null oder Eins darzustellen, nachdem eine primäre Stromquelle entfernt wurde.
  • „Protokoll mit doppelter Datenrate“ nimmt Bezug auf ein Kommunikationsbusprotokoll, das eingerichtet ist, um Daten sowohl bei einer steigenden als auch einer fallenden Flanke eines Taktsignals oder Strobe-Signals von einem Sender zu einem Empfänger zu übertragen. Ein Protokoll mit doppelter Datenrate kann mit „DDRx“ abgekürzt werden, wobei x die Generation für das Protokoll darstellt (z. B. ist DDR2 ein Protokoll mit doppelter Datenrate der zweiten Generation). Ein Protokoll mit doppelter Datenrate kann auch als „doppelt gepumptes“, „zweifach gepumptes“, „Doppelübergangs“-Protokoll bezeichnet werden. Ein Protokoll mit doppelter Datenrate kann auch als ein Umschaltmodus bezeichnet werden, insbesondere bei Verwendung mit einer Speicherschnittstelle.
  • Ein Protokoll mit doppelter Datenrate ist eingerichtet und fähig zum Übertragen von doppelt so vielen Daten wie ein Protokoll mit einzelner Datenrate (abgekürzt „SDR“), das eingerichtet ist, um Daten entweder bei einer steigenden oder einer fallenden Flanke eines Taktsignals zu übertragen.
  • Die Befehlssequenz mit fester Länge kann auf 10 Byte festgelegt werden. Eine Taktgeschwindigkeit von 2 ns pro Zyklus kann verwendet werden, so dass jede CA-Befehlssequenz 20 ns benötigt, um an die Empfangsvorrichtung gesendet zu werden. Einige Ausführungsformen können sowohl einen Nicht-Lesebefehlsdekodierer als auch einen Lesebefehlsdekodierer verwenden, die jeweils eingerichtet sind, um die inneren Steuersignale zu erzeugen, die das nichtflüchtige Speicherarray des Speicher-Dies betreiben.
  • Eine Serien-Parallel-Schaltung (Serial-In-Parallel-Out, SIPO) kann umgesetzt werden, um das parallele Verarbeiten der Befehlssequenz mit fester Länge zu ermöglichen und parallel zu behandeln. Die SIPO-Schaltung weist eine 16-Bit-Eingabe und eine 80-Bit-Ausgabe auf. Die SIPO-Schaltung dient dazu, Geschwindigkeitsunterschiede zwischen der Übertragung der Befehlssequenzen mit fester Länge unter Verwendung des Protokolls mit doppelter Datenrate und den Betriebsgeschwindigkeiten des Nicht-Lesebefehlsdekodierers und des Lesebefehlsdekodierers zu verwalten. Weil die SIPO-Schaltung eine 16-Bit-Eingabe- und eine 80-Bit-Ausgabeschaltung ist, kann auf diese Weise eine Befehlssequenz mit 10 Byte fester Länge (mit 8 Bits pro Byte, also 80 Bits) von einem seriellen Bus auf einen parallelen 80-Bit-Bus bewegt werden, so dass alle 80 Bits der Befehlssequenz mit fester Länge parallel verarbeitet werden können, um die Latenz der CA-Dekodierung zu verbessern. Eine Schaltung, ein System und ein Verfahren, die zur Implementierung dieser Lösung verwendet werden können, werden im Folgenden ausführlich beschrieben.
  • 1 ist ein schematisches Blockdiagramm, das eine Ausführungsform eines Systems 100 zur Verbesserung der Leistung in einer Festkörperspeichervorrichtung nach der offenbarten Lösung veranschaulicht. Das System 100 schließt eine Speichervorrichtung 200, eine Hostvorrichtung 106, mindestens eine Hostvorrichtung 112 und ein Computernetzwerk 114 ein, die im Folgenden beschrieben werden.
  • In einer Ausführungsform ist die Host-Vorrichtung eine Rechenvorrichtung (z. B. ein Laptop, ein Desktop, ein Smartphone, ein Tablet, eine Digitalkamera), die einen oder mehrere Prozessoren, eine oder mehrere prozessorlesbare Speichervorrichtungen (RAM, ROM, Flash-Speicher, Festplattenlaufwerk, Festkörperspeicher) einschließt, die einen prozessorlesbaren Code (z. B. eine Software) zum Programmieren der Speichersteuerung 102 speichert, um die hierin beschriebenen Verfahren durchzuführen. Der Host kann auch zusätzlichen Systemspeicher, eine oder mehrere Ein-/Ausgabeschnittstellen und/oder eine oder mehrere Ein-/Ausgabevorrichtungen in Kommunikation mit dem einem oder den mehreren Prozessoren sowie andere in der Technik bekannte Komponenten einschließen.
  • Das System 100 schließt mindestens eine Speichervorrichtung 200 ein, die eine Speichersteuerung 102 und einen oder mehrere Speicher-Dies 104 umfasst. „Speichersteuerung“ nimmt Bezug auf jede Hardware, Vorrichtung, jedes Bauteil, Element oder jede Schaltung, die zur Verwaltung von Datenvorgängen auf nichtflüchtigen Speichermedien eingerichtet ist, und kann einen oder mehrere Prozessoren, programmierbare Prozessoren (z. B. FPGAs), ASICs, Mikrosteuerung oder dergleichen umfassen. In einigen Ausführungsformen ist die Speichersteuerung dazu eingerichtet, Daten auf den nichtflüchtigen Speichermedien zu speichern und/oder Daten daraus auszulesen, Daten zu/von der (den) nichtflüchtigen Speichervorrichtung(en) zu übertragen und so weiter.
  • In einigen Ausführungsformen kann das System 100 zwei oder mehr Speichervorrichtungen einschließen. Jede Speichervorrichtung 200 kann zwei oder mehrere Speicher-Dies 104 einschließen, wie den Flash-Speicher, Nano-Direktzugriffsspeicher (Nano Random Access Memory, Nano-RAM oder NRAM), magnetoresistives RAM (Magneto-Resistive RAM, MRAM), dynamisches RAM (Dynamic RAM, DRAM), Phasenwechsel-RAM (Phase Change RAM, PRAM), usw. In weiteren Ausführungsformen kann die Datenspeichervorrichtung 200 andere Arten von nichtflüchtiger und/oder flüchtiger Datenspeicherung einschließen, wie dynamisches RAM (Dynamic RAM, DRAM), statisches RAM (Static RAM, SRAM), magnetische Datenspeicherung, optische Datenspeicherung und/oder andere Datenspeichertechnologien.
  • Die Speichervorrichtung 200, die hierin auch als Speichervorrichtung bezeichnet wird, kann eine Komponente innerhalb einer Host-Vorrichtung 106 sein, wie hier dargestellt, und kann unter Verwendung eines Systembusses, wie eines Expressbusses der peripheren Komponentenverbindung (Peripheral Component Interconnect Express, PCI-e), eines seriellen erweiterten Technologieanhangs (Serial Advanced Technology Attachment, serial ATA) oder ähnlichem, verbunden werden. In einer anderen Ausführungsform befindet sich die Speichervorrichtung 200 außerhalb der Host-Vorrichtung 106 und ist mit einem universellen seriellen Bus (Universal Serial Bus, USB), einem 1394-Bus (FireWire) des Institute of Electrical and Electronics Engineers (IEEE) oder ähnlichem verbunden. In anderen Ausführungsformen wird die Speichervorrichtung 200 mit der Hostvorrichtung 106 unter Verwendung eines Expressbusses der peripheren Komponentenverbindung (Peripheral Component Interconnect, PCI) verbunden, unter Verwendung einer externen elektrischen oder optischen Buserweiterung oder einer Busnetzwerklösung wie Infiniband oder Erweiterte PCI-Express-Umschaltung (PCI Express Advanced Switching, PCIe-AS) oder ähnlichem.
  • In verschiedenen Ausführungsformen kann die Speichervorrichtung 200 in Form eines Speichermoduls mit zwei Kontaktreihen (Dual-Inline Memory Module, DIMM), einer Tochterkarte oder eines Mikromoduls vorliegen. In einer anderen Ausführungsform ist die Speichervorrichtung 200 eine Komponente innerhalb einer rackmontierten Schiene. In einer anderen Ausführungsform ist die Speichervorrichtung 200 innerhalb eines Pakets enthalten, das direkt in eine übergeordnete Baugruppe integriert ist (z. B. Hauptplatine, Laptop, Grafikprozessor). In einer anderen Ausführungsform werden einzelne Komponenten, die die Speichervorrichtung 200 umfassen, ohne Zwischenverpackung direkt auf einer übergeordneten Baugruppe integriert.
  • In einer weiteren Ausführungsform kann die Datenspeichervorrichtung 200 über ein Datennetzwerk mit der Host-Vorrichtung 106 verbunden werden, anstatt direkt als DAS mit der Host-Vorrichtung 106 verbunden zu sein. Zum Beispiel kann die Datenspeichervorrichtung 200 eine Speichervorrichtung des Speicherbereichsnetzwerks (Storage Area Network, SAN), eine netzwerkgebundene Speichervorrichtung (Network Attached Storage, NAS), eine Netzwerkfreigabe oder dergleichen einschließen. In einer Ausführungsform kann das System 100 ein Datennetzwerk wie das Internet, ein Weitverkehrsnetzwerk (Wide Area Network, WAN), ein regionales Netzwerk (Metropolitan Area Network, MAN), ein lokales Netzwerk (Local Area Network, LAN), einen Token-Ring, ein drahtloses Netzwerk, ein Faserkanalnetzwerk, ein SAN, ein NAS, ESCON oder dergleichen oder eine beliebige Kombination von Netzwerken einschließen. Ein Datennetzwerk kann auch ein Netzwerk aus der IEEE-802-Familie von Netzwerktechnologien einschließen, wie Ethernet, Token-Ring, Wi-Fi, Wi-Max und dergleichen. Ein Datennetzwerk kann Server, Umschalter, Router, Verkabelung, Funkgeräte und andere Ausrüstung einschließen, die zur Erleichterung des Vernetzens zwischen der Host-Vorrichtung 106 und der Speichervorrichtung 200 verwendet werden.
  • Das System 100 schließt mindestens eine Host-Vorrichtung 106 ein, der mit der Speichervorrichtung 200 verbunden ist. Es können mehrere Host-Vorrichtungen verwendet werden, die einen Host, einen Server, eine Speichersteuerung eines Speicherbereichsnetzwerks (Storage Area Network, SAN), eine Arbeitsstation, einen PC, einen Laptop-Computer, einen tragbaren Computer, einen Supercomputer, ein Computer-Cluster, einen Netzwerkumschalter, Router oder eine Einrichtung, eine Datenbank oder eine Speichereinrichtung, ein Datenabruf- oder Datenerfassungssystem, ein Diagnosesystem, ein Testsystem, einen Roboter, eine tragbare elektronische Vorrichtung, eine drahtlose Vorrichtung oder dergleichen aufweisen können. „Computer“ bezieht sich auf jede Rechenvorrichtung. Beispiele für einen Computer schließen einen Personalcomputer, einen Laptop, ein Tablet, einen Desktop-PC, einen Server, einen Hauptrahmen, einen Supercomputer, einen Computerknoten, einen virtuellen Computer, eine tragbare Vorrichtung, ein Smartphone, ein Mobiltelefon, ein System auf einem Chip, einen Einzelchip-Computer und dergleichen ein, sind aber nicht darauf beschränkt. In einer anderen Ausführungsform kann eine Host-Vorrichtung 106 ein Kunde sein, und die Speichervorrichtung 200 arbeitet autonom, um von der Host-Vorrichtung 106 gesendete Datenanforderungen zu bedienen. In dieser Ausführungsform können die Host-Vorrichtung 106 und die Speichervorrichtung 200 unter Verwendung eines Computernetzwerks, einen Systembuses, Direkt angehängter Speicher (Direct Attached Storage, DAS) oder andere Kommunikationsmittel verbunden werden, die für die Verbindung zwischen einem Computer und einer autonomen Speichervorrichtung 200 geeignet sind.
  • Die dargestellte Ausführungsform zeigt eine Benutzeranwendung 108 in Kommunikation mit einem Speicherclient 110 als Teil der Host-Vorrichtung 106. „Anwendung“ bezieht sich auf jede Software, die auf einer Vorrichtung über einer Ebene des Betriebssystems ausgeführt wird. Eine Anwendung wird üblicherweise vom Betriebssystem für die Ausführung geladen und ruft Funktionen an das Betriebssystem für Dienste auf niedrigerer Ebene auf. Eine Anwendung weist oft eine Benutzerschnittstelle auf, was jedoch nicht immer der Fall ist. Daher schließt der Begriff „Anwendung“ Hintergrundprozesse ein, die auf einer höheren Ebene als dem Betriebssystem ausgeführt werden.
  • „Betriebssystem“ bezieht sich auf die Logik, üblicherweise die Software, die die Grundfunktionen einer Vorrichtung unterstützt, wie das Planen von Aufgaben, das Verwalten von Dateien, das Ausführen von Anwendungen und das Interagieren mit Peripheriegeräten. Im normalen Sprachgebrauch versteht man unter einer Anwendung die Ausführung „oberhalb“ des Betriebssystems, was bedeutet, dass das Betriebssystem notwendig ist, um die Anwendung zu laden und auszuführen, und dass die Anwendung in den meisten Fällen auf Modulen des Betriebssystems beruht und nicht umgekehrt. Das Betriebssystem vermittelt in der Regel auch zwischen Anwendungen und Treibern. Von Treibern wird behauptet, dass sie „unterhalb“ des Betriebssystems ausgeführt werden, weil sie zwischen dem Betriebssystem und den Hardwarekomponenten oder Peripherievorrichtungen vermitteln.
  • In einer Ausführungsform ist die Benutzeranwendung 108 eine Software-Anwendung, die auf oder in Verknüpfung mit dem Speicherclient 110 arbeitet. Der Speicherclient 110 verwaltet Dateien und Daten und nutzt die Funktionen und Merkmale der Speichersteuerung 102 und des zugeordneten Speicher-Dies 104. „Datei“ nimmt Bezug auf eine einheitliche Datenstruktur zum Speichern, Abrufen und Kommunizieren von Daten und/oder Anweisungen. Eine Datei unterscheidet sich von anderen Arten der Verpackung durch zugeordnete Verwaltungsmetadaten, die vom Betriebssystem genutzt werden, um die Datei zu identifizieren, zu charakterisieren und auf sie zuzugreifen. Repräsentative Beispiele für Speicherclients schließen einen Server, ein Dateisystem, ein Betriebssystem, ein Datenbankmanagementsystem („DBMS“), einen Volume-Manager und dergleichen ein, sind aber nicht darauf beschränkt. Der Speicherclient 110 steht in Kommunikation mit der Speichersteuerung 102 innerhalb der Speichervorrichtung 200.
  • In einer Ausführungsform schließt das System 100 einen oder mehrere Clients ein, die über ein oder mehrere Computernetzwerke mit einer oder mehreren Host-Vorrichtungen 106 verbunden sind. Eine Host-Vorrichtung 112 kann ein Host, ein Server, eine Speichersteuerung eines SAN, eine Arbeitsstation, ein PC, ein Laptop-Computer, ein tragbarer Computer, ein Supercomputer, ein Computer-Cluster, ein Netzwerkumschalter, Router oder eine Einrichtung, eine Datenbank oder Speichereinrichtung, ein Datenbeschaffungs- oder Datenerfassungssystem, ein Diagnosesystem, ein Testsystem, ein Roboter, eine tragbare elektronische Vorrichtung, eine drahtlose Vorrichtung oder dergleichen sein. Das Computernetzwerk 114 kann das Internet, ein Weitverkehrsnetzwerk (Wide Area Network, WAN), ein regionales Netzwerk (Metropolitan Area Network, MAN), ein Lokales Netzwerk (Local Area Network, LAN), einen Token-Ring, ein drahtloses Netzwerk, ein Glasfaserkanalnetzwerk, ein SAN, ein Netzwerkgebundener Speicher (Network Attached Storage, NAS), ESCON oder dergleichen oder eine beliebige Kombination von Netzwerken einschließen. Das Computernetzwerk 114 kann auch ein Netzwerk aus der IEEE-802-Familie von Netzwerktechnologien, wie Ethernet, Token-Ring, WiFi, WiMax und dergleichen einschließen.
  • Das Computernetzwerk 114 kann Server, Umschalter, Router, Verkabelung, Funkgeräte und andere Ausrüstung einschließen, die zur Erleichterung des Vernetzens zwischen der Host-Vorrichtung 106 oder den Host-Vorrichtungen und der Host-Vorrichtung 112 oder Clients verwendet werden. In einer Ausführungsform schließt das System 100 mehrere Host-Vorrichtungen ein, die als Peers über ein Computernetzwerk 114 kommunizieren. In einer weiteren Ausführungsform schließt das System 100 mehrere Speichervorrichtungen 200 ein, die als Peers über ein Computernetzwerk 114 kommunizieren. Ein Fachmann wird andere Computernetzwerke erkennen, die ein oder mehrere Computernetzwerke und zugehörige Ausrüstungen mit einer einzelnen oder redundanten Verbindung zwischen einem oder mehreren Clients oder einem anderen Computer mit einer oder mehreren Speichervorrichtungen 200 oder einer oder mehreren Speichervorrichtungen 200, die mit einer oder mehreren Host-Vorrichtungen verbunden sind, umfassen. In einer Ausführungsform schließt das System 100 zwei oder mehr Speichervorrichtungen 200 ein, die über das Computernetzwerk 114 mit einer Host-Vorrichtung 112 ohne eine Host-Vorrichtung 106 verbunden sind.
  • In einer Ausführungsform kommuniziert der Speicherclient 110 mit der Speichersteuerung 102 über eine Schnittstelle der Host-Vorrichtung, die eine Eingabe/Ausgabe (E/A)-Schnittstelle umfasst. „Schnittstelle“ bezieht sich auf ein Protokoll und zugeordnete Schaltungen, Schaltkreise, Komponenten, Vorrichtungen, Systeme, Subsysteme und dergleichen, die es einer Vorrichtung, Komponente oder einem Gerät ermöglichen, mit einer anderen Vorrichtung, Komponente oder einem Gerät zu interagieren und/oder zu kommunizieren. Zum Beispiel kann eine Speichervorrichtung 200 den ATA-Schnittstellenstandard, den ATA-Paketschnittstellen-Standard (ATA Packet Interface, ATAPI), den Standard für kleine Computersystemschnittstellen (Small Computer System Interface, SCSI) und/oder den Faserkanal-Standard unterstützen, die vom Internationalen Komitee für Standards in der Informationstechnologie (International Committee for Information Technology Standards, INCITS) aufrechterhalten werden.
  • In bestimmten Ausführungsformen ist das Speichermedium einer Speichervorrichtung in Volumen oder Partitionen unterteilt. Jedes Volume oder jede Partition kann eine Vielzahl von Sektoren einschließen. Traditionell stellt ein Sektor 512 Bytes von Daten dar. Ein oder mehrere Sektoren sind in einem Block (hierin austauschbar als Block und Datenblock bezeichnet) organisiert.
  • In einer beispielhaften Ausführungsform schließt ein Datenblock acht Sektoren ein, was 4 KB entspricht. In bestimmten Speicherungssystemen, wie z. B. solchen, die eine Schnittstelle zu Windows®-Betriebssystemen haben, werden die Datenblöcke als Cluster bezeichnet. In anderen Speicherungssystemen, z. B. solchen, die eine Schnittstelle zu UNIX, Linux oder ähnlichen Betriebssystemen haben, werden die Datenblöcke einfach als Blöcke bezeichnet. Ein Block oder Datenblock oder Cluster stellt die kleinste physische Menge an Speicherplatz auf den Speichermedien dar, die von einem Speichermanager verwaltet wird, wie z. B. einer Speichersteuerung, einem Speichersystem, einer Speichereinheit, einer Speichervorrichtung oder dergleichen.
  • In einigen Ausführungsformen kann die Speichersteuerung 102 eingerichtet werden, um Daten auf einem oder mehreren asymmetrischen, einmal beschreibbaren Medien, wie Speicherzellen des Festkörperspeichers innerhalb des Speicher-Dies 104 zu speichern. Wie hierin verwendet, nimmt ein „einmal beschreibbares“ Speichermedium Bezug auf ein Speichermedium, das jedes Mal neu initialisiert (z. B. gelöscht) wird, wenn neue Daten darauf geschrieben oder programmiert werden. Wie hierin verwendet, nimmt ein „asymmetrisches“ Speichermedium Bezug auf ein Speichermedium mit unterschiedlichen Latenzen für unterschiedliche Speicherbetriebe. Viele Arten von Festkörperspeichermedien (z. B. Speicher-Die) sind asymmetrisch; Beispielsweise kann ein Lesebetrieb viel schneller als ein Schreib-/Programmierbetrieb sein, und ein Schreib-/Programmierbetrieb kann viel schneller als ein Löschbetrieb sein (z. B. kann das Lesen der Speichermedien Hunderte Male schneller als Löschen und zehn Mal schneller als die Programmierung der Speichermedien sein).
  • Die Verwaltung eines Datenblocks durch einen Speichermanager schließt das spezifische Adressieren eines bestimmten Datenblocks für einen Lesebetrieb Schreibbetrieb oder Wartungsbetrieb ein. Eine Blockspeichervorrichtung kann n Blöcke, die für die Benutzerdatenspeicherung auf den Speichermedien zur Verfügung stehen, einer logischen Adresse, die von 0 bis n nummeriert ist, zuordnen. In bestimmten Blockspeichervorrichtungen können die logischen Adressen zwischen 0 und n pro Volume oder Partition liegen. Bei herkömmlichen Blockspeichervorrichtungen wird eine logische Adresse, die auch als logische Blockadresse (LBA) bezeichnet wird, direkt einem bestimmten Datenblock auf physischen Speichermedien zugeordnet. Bei herkömmlichen Blockspeichervorrichtungen wird jeder Datenblock einem bestimmten Satz physischer Sektoren auf den physischen Speichermedien zugeordnet.
  • Bestimmte Speichervorrichtungen weisen jedoch logische Adressen nicht direkt oder notwendigerweise bestimmten physischen Datenblöcken zu. Diese Speichervorrichtungen können eine herkömmliche Blockspeicherschnittstelle emulieren, um Kompatibilität mit einem Blockspeicherclient 110 aufrechtzuerhalten.
  • In einer Ausführungsform stellt die Speichersteuerung 102 eine Block-E/A-Emulationsschicht bereit, die als Blockvorrichtungsschnittstelle oder API dient. In dieser Ausführungsform kommuniziert der Speicherclient 110 mit der Speichervorrichtung durch diese Blockvorrichtungsschnittstelle. In einer Ausführungsform empfängt die Block-E/A-Emulationsschicht Befehle und logische Adressen vom Speicherclient 110 nach dieser Blockvorrichtungsschnittstelle. Infolgedessen stellt die Block-E/A-Emulationsschicht die Kompatibilität der Speichervorrichtung mit einem Blockspeicherclient 110 bereit.
  • In einer Ausführungsform kommuniziert der Speicherclient 110 mit der Speichersteuerung 102 über eine Host-Vorrichtungsschnittstelle, die eine direkte Schnittstelle umfasst. In dieser Ausführungsform tauscht die Speichervorrichtung direkt Informationen aus, die für nichtflüchtige Speichervorrichtungen spezifisch sind. Eine Speichervorrichtung, die eine direkte Schnittstelle verwendet, kann Daten im Speicher-Die 104 unter Verwendung von verschiedenen organisatorischen Konstrukten speichern, einschließlich, aber nicht beschränkt auf Blöcke, Sektoren, Seiten, logische Blöcke, logische Seiten, Löschblöcke, logische Löschblöcke, ECC-Codewörter, logische ECC-Codewörter oder in jedem anderen Format oder jeder anderen Struktur, die für die technischen Eigenschaften des Speicher-Dies 104 vorteilhaft ist.
  • Die Speichersteuerung 102 empfängt eine logische Adresse und einen Befehl von dem Speicherclient 110 und führt den entsprechenden Betrieb in Bezug auf das Speicher-Die 104 durch. Die Speichersteuerung 102 kann eine Block-E/A-Emulation, eine direkte Schnittstelle oder beides unterstützen.
  • 2 ist ein Blockdiagramm einer beispielhaften Speichervorrichtung 200. Die Speichervorrichtung 200 kann eine Speichersteuerung 102 und ein Speicherarray 202 einschließen, das aus einer Anzahl von Speicher-Dies 104 besteht, wobei die Speichersteuerung 102 und die Speicher-Dies 104 effektiv sind, wie in 1 beschrieben. Jedes Speicher-Die 104 im Speicherarray 202 kann eine Die-Steuerung 204 und mindestens ein nichtflüchtiges Speicherarray 206 in Form eines dreidimensionalen Speicherarrays sowie Lese-/Schreibschaltungen 208 einschließen.
  • In diesem Sinne nimmt „Speicherarray“ Bezug auf einen Satz von Speicherzellen (auch als Speicherungszellen bezeichnet), die in einer Arraystruktur organisiert sind, die Zeilen und Spalten aufweist. Ein Speicherarray ist adressierbar unter Verwendung eines Zeilen- und eines Spaltenidentifizierers, die jeweils als Teil einer Adresse, wie einer Befehlsadresse, dargestellt werden. Folglich ist ein nichtflüchtiges Speicherarray ein Speicherarray, das Speicherzellen aufweist, die so eingerichtet sind, dass eine Eigenschaft (z. B. Schwellenspannungspegel, Widerstandspegel, Leitfähigkeit usw.) der Speicherzelle, die verwendet wird, um gespeicherte Daten darzustellen, eine Eigenschaft der Speicherzelle bleibt, ohne die Anforderung zur Verwendung einer Stromquelle zur Aufrechterhaltung der Eigenschaft.
  • Ein Fachmann erkennt, dass ein Speicherarray den Satz von Speicherzellen innerhalb einer Ebene, den Satz von Speicherzellen innerhalb eines Speicher-Dies, den Satz von Speicherzellen innerhalb eines Satzes von Ebenen, den Satz von Speicherzellen innerhalb eines Satzes von Speicher-Dies, den Satz von Speicherzellen innerhalb eines Speicherpakets, den Satz von Speicherzellen innerhalb eines Satzes von Speicherpaketen oder mit anderen bekannten Speicherzellensatz-Architekturen und -Konfigurationen aufweisen kann.
  • Ein Speicherarray kann einen Satz von Speicherzellen auf einer Anzahl von Organisationsebenen innerhalb eines Speichers oder Speichersystems einschließen. In einer Ausführungsform können Speicherzellen innerhalb einer Ebene in einem Speicherarray organisiert sein. In einer Ausführungsform können Speicherzellen innerhalb einer Vielzahl von Ebenen eines Speicher-Dies in einem Speicherarray organisiert werden. In einer Ausführungsform können Speicherzellen innerhalb einer Vielzahl von Speicher-Dies einer Speichervorrichtung in einem Speicherarray organisiert sein. In einer Ausführungsform können Speicherzellen innerhalb einer Vielzahl von Speichervorrichtungen eines Speichersystems in einem Speicherarray organisiert sein.
  • Das nichtflüchtige Speicherarray 206 ist durch Wortleitungen über einen Zeilendekodierer 210 und durch Bitleitungen über einen Spaltendekodierer 212 adressierbar. Die Lese-/Schreibschaltungen 208 schließen mehrere Abtastblöcke SB1, SB2, ..., SBp (Abtastschaltkreise) ein und ermöglichen, dass eine Seite von Speicherzellen parallel gelesen oder programmiert wird. In bestimmten Ausführungsformen bildet jede Speicherzelle über eine Zeile des Speicherarrays zusammen eine physische Seite.
  • „Schaltkreis“ nimmt auf elektrische Schaltkreise mit mindestens einer diskreten elektrischen Schaltung Bezug, wobei der elektrische Schaltkreis mindestens eine integrierte Schaltung aufweist, wobei der elektrische Schaltkreis mindestens eine anwendungsspezifische integrierte Schaltung aufweist, wobei der Schaltkreis eine Universal-Rechenvorrichtung ausbildet, die durch ein Computerprogramm eingerichtet ist (z. B. einen Universalcomputer, der durch ein Computerprogramm eingerichtet ist, das zumindest teilweise Prozesse oder Vorrichtungen ausführt, die hierin beschrieben sind, oder einen Mikroprozessor, der durch ein Computerprogramm eingerichtet ist, das zumindest teilweise Prozesse oder Vorrichtungen ausführt, die hierin beschrieben sind), wobei der Schaltkreis eine Speichervorrichtung ausbildet (z. B. Formen von Direktzugriffsspeichern), oder wobei der Schaltkreis eine Kommunikationsvorrichtung ausbildet (z. B. ein Modem, einen Kommunikationsschalter oder eine optisch-elektrische Vorrichtung).
  • Eine physische Seite kann Speicherzellen entlang einer Zeile des Speicherarrays für eine einzelne Ebene oder für ein einzelnes Speicher-Die einschließen. In einer Ausführungsform schließt das Speicher-Die ein Speicherarray ein, das aus zwei gleich großen Ebenen besteht. Eine Ebene ist eine Unterteilung des Speicherarrays, die es erlaubt, bestimmte Speicherbetriebe an beiden Orten unter Verwendung bestimmter physikalischer Zeilenadressen und bestimmter physischer Spaltenadressen durchzuführen. In einer Ausführungsform schließt eine physische Seite einer Ebene eines Speicher-Dies vier Datenblöcke (z. B. 16 KB) ein. In einer Ausführungsform schließt eine physische Seite (auch „Die-Seite“ genannt) eines Speicher-Dies zwei Ebenen mit jeweils vier Datenblöcken (z. B. 32 KB) ein.
  • Das nichtflüchtige Speicherarray 206 kann zweidimensional (2D - in einer einzigen Fertigungsebene angeordnet) oder dreidimensional (3D - in mehreren Fertigungsebenen angeordnet) sein. Das nichtflüchtige Speicherarray 206 kann ein oder mehrere Arrays von Speicherzellen einschließlich eines 3D-Arrays umfassen. In einer Ausführungsform kann das nichtflüchtige Speicherarray 206 eine monolithische dreidimensionale Speicherstruktur (3D-Array) umfassen, in der mehrere Speicherpegel oberhalb von (und nicht in) einem einzelnen Substrat, wie einem Wafer, ohne dazwischenliegende Substrate ausgebildet sind. Das nichtflüchtige Speicherarray 206 kann jede Art von nichtflüchtigem Speicher umfassen, der monolithisch in einem oder mehreren physischen Pegeln von Arrays der Speicherzellen ausgebildet ist, die einen aktiven Bereich aufweisen, der über einem Siliziumsubstrat angebracht ist. Das nichtflüchtige Speicherarray 206 kann sich in einem nichtflüchtigen Festkörperlaufwerk befinden, das einen Schaltkreis aufweist, der dem Betrieb der Speicherzellen zugeordnet ist, unabhängig davon, ob sich der zugeordnete Schaltkreis oberhalb oder innerhalb des Substrats befindet. Wortleitungen können Abschnitte der Schichten mit Speicherzellen aufweisen, die in Schichten über dem Substrat angeordnet sind. Mehrere Wortlinien können auf einer einzigen Schicht mittels Gräben oder andere nicht leitende isolierende Merkmale gebildet werden.
  • Die Die-Steuerung 204 arbeitet mit den Lese-/Schreibschaltungen 208 zusammen, um Speicherbetriebe an Speicherzellen des nichtflüchtigen Speicherarrays 206 durchzuführen, und schließt eine Steuerschaltung 214 und eine Dekodiererschaltung 216 ein, die einen Adressendekodierer 218 beinhalten kann. Die Steuerschaltung 214 stellt Steuerung auf Chip-Niveau von Speicherbetrieben bereit.
  • „Die-Steuerung“ nimmt Bezug auf einen Satz von Schaltungen, Schaltkreisen, Logik oder Komponenten, die eingerichtet sind, um den Betrieb eines Dies zu verwalten. In einer Ausführungsform ist die Die-Steuerung eine integrierte Schaltung. In einer anderen Ausführungsform ist die Die-Steuerung eine Kombination diskreter Komponenten. In einer anderen Ausführungsform ist die Die-Steuerung eine Kombination aus einer oder mehreren integrierten Schaltungen und einer oder mehreren diskreten Komponenten.
  • „Steuerschaltkreis“ nimmt Bezug auf eine Vorrichtung, eine Komponente, ein Element, ein Modul, ein System, ein Subsystem, einen Schaltkreis, eine Logik, eine Hardware oder eine Schaltung, die eingerichtet und/oder betreibbar ist, um einen oder mehrere andere Schaltungen zu verwalten. In bestimmten Ausführungsformen ist eine Steuerschaltung dafür verantwortlich, sicherzustellen, dass die primären Merkmale und die Funktionalität einer größeren Schaltung, eines Die oder Chips, die die Steuerschaltung einschließt, ordnungsgemäß durchgeführt werden. Der Adressdecoder 218 stellt eine Adressschnittstelle zwischen der vom Host oder einer Speichersteuerung 102 verwendeten Adresse und der vom Zeilendecoder 210 und Spaltendecoder 212 verwendeten Hardwareadresse bereit.
  • Befehle und Daten werden zwischen der Host-Vorrichtung und der Speichersteuerung 102 über einen Datenbus 220 und zwischen der Speichersteuerung 102 und einer Ein-/Ausgabe-(E/A-)Schaltung 222 auf jedem der Speicher-Dies 104 über eine Speicherschnittstelle 224 übertragen. Die Speicherschnittstelle 224 kann eine Art Kommunikationsbus sein, der einen Steuerbus 226 und einen Datenbus 228 umfasst, über welchen Befehlssequenzen mit fester Länge 230 übertragen werden können. „Speicherschnittstelle“ bezieht sich auf eine Schnittstelle zwischen einem Speicher-Die und einer Speichersteuerung. Beispiele für Speicherschnittstellen, die in Verbindung mit der offenbarten Lösung verwendet werden können, schließen den Umschaltmodus (Toggle Mode, TM), Toggle NAND 2.0, offene NAND-Flash-Schnittstelle (Open NAND Flash Interface, ONFI) NAND, eine herstellerspezifische Schnittstelle, eine geschützte Schnittstelle und Ähnliches ein. In der dargestellten Ausführungsform ist die Speicherschnittstelle 224 eine geschützte Schnittstelle, die eingerichtet ist, um Befehlssequenzen mit fester Länge 230 zu übertragen.
  • „Kommunikationsbus“ nimmt Bezug auf Hardware, Software, Firmware, Logik, Steuerlinie(n) und ein oder mehrere zugehörige Kommunikationsprotokolle, die eingerichtet sind, um es einem Sender zu ermöglichen, Daten an einen Empfänger zu senden. Ein Kommunikationsbus kann einen Datenbus und/oder einen Steuerbus einschließen.
  • „Firmware“ nimmt Bezug auf Logik, die als prozessorausführbare Anweisungen ausgeführt wird, die auf flüchtigen Speichermedien und/oder nichtflüchtigen Speichermedien gespeichert sind.
  • „Datenbus“ nimmt Bezug auf einen Kommunikationsbus, der verwendet wird, um ein oder mehrere Datenbits zwischen zwei elektronischen Schaltungen, Komponenten, Chips, Dies und/oder Systemen auszutauschen. Ein Datenbus kann eine oder mehrere Signal-/Steuerleitungen einschließen. Ein Sender, wie eine Steuerung, kann Datensignale über eine oder mehrere Steuerzeilen des Datenbusses parallel (Betrieb als paralleler Bus) oder in Serie (Betrieb als serieller Bus) senden. Ein Datenbus kann die Hardware, Steuerzeile(n), Software, Firmware, Logik und/oder das Kommunikationsprotokoll einschließen, die zum Betrieb des Datenbusses verwendet werden.
  • Beispiele für Datenbusse sind 8-Bit-Busse, die 8 Steuerzeilen haben, 16-Bit-Busse, die 16 Steuerzeilen aufweisen, 32-Bit-Busse, die 32 Steuerzeilen aufweisen, 64-Bit-Busse, die 64 Steuerzeilen aufweisen, und ähnliches. Steuerzeilen können ausschließlich Kommunikationsdaten, ausschließlich Adressdaten, ausschließlich Steuerdaten oder jede Kombination dieser Arten von Daten tragen.
  • In einer Ausführungsform kann ein einziger Datenbus von einer Vielzahl von Komponenten, wie dem Speicher-Die, geteilt werden. Wenn mehrere Chips oder Speicher-Dies einen Datenbus teilen, kann auf diese Daten durch einen einzelnen Speicher-Die oder durch alle Speicher-Dies parallel zugegriffen oder übertragen werden, basierend auf Signalen auf einer Chip-Freigabesteuerlinie.
  • Ein Datenbus kann nach einem Industriestandard oder basierend auf einem geschützten Protokoll und Entwurf betrieben und eingerichtet werden. Mehrere Steuerlinien eines Datenbusses können parallel verwendet werden und können Daten nach einem Taktsignal, einem Daten-Strobe-Signal (Data Strobe Signal, DQS) oder einem Takt, wie einem Strobe-Signal, im Einfangsregister einer Zielkomponente einfangen. In bestimmten Ausführungsformen können ein Steuerbus und ein Datenbus zusammen einen Kommunikationsbus zwischen einem Sender und einem Empfänger ausbilden.
  • „Steuerbus“ bezieht sich auf einen Kommunikationsbus, der verwendet wird, um eine oder mehrere Daten, Adressinformationen, Steuersignale, Taktsignale und dergleichen zwischen zwei elektronischen Schaltungen, Komponenten, Chips, Dies und/oder Systemen auszutauschen. Ein Steuerbus kann 1 oder mehrere Steuerlinien umfassen, eingerichtet sein, um als paralleler Bus oder als serieller Bus betrieben zu werden, und kann die Hardware, Steuerzeile(n), Software, Firmware, Logik und/oder das zum Betrieb des Steuerbusses verwendete Kommunikationsprotokoll einschließen. Üblicherweise sendet ein Steuerbus Steuersignale an einen oder mehrere Speicher-Dies, um die Betriebe auf dem Speicher-Die zu verwalten.
  • In bestimmten Ausführungsformen sendet der Steuerbus Steuersignale, wie zum Beispiel eine oder mehrere Schreibfreigabe („WE“ oder „WE#“), Chipfreigabe („CE“ oder „CE#“), Lesefreigabe („RE“ oder „Re“), ein Taktsignal, ein Strobe-Signal („DQS“), eine Befehlsfangfreigabe („CLE“) eine Adressenfangfreigabe („ALE“) und Ähnliches.
  • In bestimmten Ausführungsformen kann der Steuerbus keine Daten übertragen, die sich auf einen Speicherbetrieb beziehen, wie etwa Schreibdaten oder Lesedaten. Stattdessen können Schreibdaten und Lesedaten über einen Datenbus übertragen werden. In bestimmten Ausführungsformen können ein Steuerbus und ein Datenbus zusammen einen Kommunikationsbus zwischen einem Sender und einem Empfänger ausbilden.
  • Der Adressdekodierer 218 der Die-Steuerung 204 kann mit dem nichtflüchtigen Speicherarray 206 gekoppelt werden, um einen Ort innerhalb des nichtflüchtigen Speicherarrays 206 für einen Speicherbefehl zu identifizieren. Insbesondere bestimmt der Adressdekodierer 218 einen Zeilenidentifizierer und einen Spaltenidentifizierer, die zusammen den Ort innerhalb des nichtflüchtigen Speicherarrays 206 festlegen, der für einen Speicherbefehl gilt, der einer Befehlsadresse zugeordnet ist. Der Speicherbefehl und die Befehlsadresse werden in einer Befehlssequenz mit fester Länge empfangen.
  • Die Eingabe/Ausgabe-(EA)-Schaltung 222 kann über die Speicherschnittstelle 224 und die Speichersteuerung 102 mit einem Datenbus 220 gekoppelt werden, um eine Befehlssequenz mit fester Länge 230 zu empfangen. Die Dekodiererschaltung 216 der Die-Steuerung 204 kann über die Eingabe/Ausgabe-(EA)-Schaltung 222 mit einem Steuerbus 226 gekoppelt werden, um Befehlssequenzen mit fester Länge 230 über den Datenbus 220 zu empfangen. In einer Ausführungsform kann der Datenbus 220 acht Steuerzeilen umfassen, die jeweils eingerichtet sind, um ein Bit parallel über den Datenbus 220 zu übertragen.
  • Die Dekodierschaltung 216 kann eine Befehlsadresse und einen Speicherbefehl aus einer Befehlssequenz mit fester Länge dekodieren. Die Steuerschaltung 214 der Die-Steuerung 204 kann mit der Eingabe/Ausgabe-(EA-)Schaltung 222 und der Dekodiererschaltung 216 gekoppelt werden und kann Steuersignale 232 erzeugen, um die Speicherbefehle auszuführen, die von der Dekodiererschaltung 216 dekodiert werden. „Steuersignal“ nimmt Bezug sich auf ein elektrisches Signal (verdrahtet oder drahtlos), das von einer Vorrichtung, Komponente, einem Manager oder einer Steuerung an eine andere Vorrichtung, Komponente, einen Manager oder eine Steuerung gesendet wird, die/der eingerichtet ist, um als Reaktion auf das Steuersignal zu handeln.
  • Die Lese-/Schreibschaltungen 208 können mit dem nichtflüchtigen Speicherarray 206 und der Steuerschaltung 214 gekoppelt werden, um Daten zwischen dem nichtflüchtigen Speicherarray 206 und der Eingabe/Ausgabe-(EA-)Schaltung 222, als Reaktion auf die Speicherbefehle, zu übertragen.
  • In einigen Implementierungen können einige der Komponenten kombiniert werden. Bei verschiedenen Ausführungen können eine oder mehrere der Komponenten (allein oder in Kombination), die sich von dem nichtflüchtigen Speicherarray 206 unterscheiden, als mindestens eine Steuerschaltung oder Speichersteuerung betrachtet werden, die zur Ausführung der hierin beschriebenen Techniken eingerichtet ist. Zum Beispiel kann eine Steuerschaltung einen oder eine Kombination aus Speichersteuerung 102, Die-Steuerung 204, Lese-/Schreibschaltungen 208, Spaltendekodierer 212, Steuerschaltung 214, Dekodiererschaltung 216, Adressdekodierer 218, Abtastblöcken SB1, SB2,..., SBp und so weiter einschließen.
  • Eine zugehörige Schaltung ist üblicherweise für den Betrieb der Speicherzellen und für die Kommunikation mit den Speicherzellen erforderlich. Als nicht einschränkende Beispiele können Speichervorrichtungen Schaltungen aufweisen, die zum Steuern und Ansteuern von Speicherzellen verwendet werden, um Funktionen, wie Programmieren und Lesen, auszuführen. Diese zugehörige Schaltung kann sich auf demselben Substrat wie die Speicherzellen und/oder auf einem separaten Substrat befinden. Zum Beispiel kann eine Speichersteuerung für Schreib-/Lesevorgänge des Speichers auf einem separaten Speichersteuerungschip und/oder auf demselben Substrat wie die Speicherzellen angeordnet sein.
  • Ein Fachmann wird erkennen, dass die offenbarten Techniken und Vorrichtungen nicht auf die beschriebenen zweidimensionalen und dreidimensionalen beispielhaften Strukturen beschränkt sind, sondern alle relevanten Speicherstrukturen in dem Geist und innerhalb des Schutzumfangs der Technologie abdecken, wie hierin beschrieben und wie es von einem Fachmann verstanden wird.
  • 3 veranschaulicht eine Befehlssequenz mit fester Länge 300 gemäß einer Ausführungsform. „Befehlssequenz mit fester Länge“ nimmt Bezug auf eine Befehlssequenz, in der eine Größe der Befehlssequenz fest, eingestellt, vorbestimmt und/oder vordefiniert ist. In bestimmten Ausführungsformen ist die feste, eingestellte, vorbestimmte und/oder vordefinierte Größe eine Anzahl von Bytes, die die Befehlssequenz ausbilden. In anderen Ausführungsformen kann die Größe eine festgelegte, eingestellte, vorbestimmte und/oder vordefinierte Anzahl von Bits, Wörtern oder dergleichen sein, die die Befehlssequenz ausbilden. In einer Ausführungsform schließt eine Befehlssequenz mit fester Länge eine vordefinierte Anzahl von Bytes ein, die verwendet wird, um einen Befehl, wie etwa einen Speicherbefehl, darzustellen, sowie eine vordefinierte Anzahl von Bytes, die verwendet wird, um eine Befehlsadresse darzustellen. Zusätzlich oder in einer alternativen Ausführungsform kann eine Befehlssequenz mit fester Länge eine vordefinierte Anzahl von Präfix-Bytes und/oder eine vordefinierte Anzahl von Suffix-Bytes einschließen. In einer Ausführungsform beträgt die Anzahl der Bytes, die die Befehlssequenz mit fester Länge ausbilden, 10 Bytes. In einer anderen Ausführungsform umfasst die Befehlssequenz mit fester Länge 20 Bytes. In noch einer anderen Ausführungsform umfasst die Befehlssequenz mit fester Länge 5 Bytes.
  • Die Befehlssequenz mit fester Länge 300 kann einen Satz von Bytes umfassen, die von einer Speichersteuerung zu einer EA-Schaltung nach einer vordefinierten Befehlssequenz 302 übertragen werden. „Vordefinierte Befehlssequenz“ nimmt Bezug auf eine Befehlssequenz, in der die Befehlssequenz zwei oder mehr Felder einschließt und die Reihenfolge und Größe der Felder (die 1 oder mehr Bytes betragen können) als Teil eines Kommunikationsprotokolls definiert sind. In einer anderen Ausführungsform kann die vordefinierte Befehlssequenz auch eine Position und/oder Länge für die Felder der Befehlssequenz mit fester Länge definieren.
  • In einer Ausführungsform schließt eine Befehlssequenz mit fester Länge 300, wie das Beispiel von 3, ein Präfix-Feld 304, ein Befehlsbetriebscode-Feld 306, ein Befehlsadressfeld 308 und ein Suffix-Feld 310 ein. Eine Speichersteuerung und eine E/A-Schaltung sind jeweils so eingerichtet, dass die verschiedenen Speicherbefehle innerhalb der festen Länge der Befehlssequenz mit fester Länge passen. Bestimmte Speicherbefehle können jedes Byte oder Bit von jedem Präfixfeld 304, Befehlsbetriebscode-Feld 306 und Suffixfeld 310 verwenden. Ein anderer Speicherbefehl kann den gesamten oder einen Teil des Feldes für den Befehlsbetriebscode 306 verwenden und benötigt keine Bytes oder Bits des Präfixfeldes 304 und des Suffixfeldes 310. Bei solchen Speicherbefehlen kann die Speichersteuerung die nicht benötigten Bits oder Bytes mit Blinddaten, Fülldaten oder Platzhalterdaten ausfüllen.
  • Andere Speicherbefehle können einen oder mehrere oder einen Teil des Präfixfelds 304, des Suffixfelds 310 und des Feldes des Befehlsbetriebscodes 306 verwenden. In einer Ausführungsform sendet jeder Speicherbefehl eine Befehlsadresse, die das Befehlsadressfeld 308 ausfüllt. In einer anderen Ausführungsform senden bestimmte Speicherbefehle keine Befehlsadresse und senden stattdessen Blinddaten oder eine Teilbefehlsadresse, die einen Abschnitt des Befehlsadressfeldes 308 ausfüllt.
  • „Präfixfeld“ nimmt Bezug auf ein Feld einer Befehlssequenz mit fester Länge, das eingerichtet ist, um einen anderen Betriebsmodus für einen Speicherbefehl zu signalisieren. In bestimmten Ausführungsformen kann ein Präfixfeld verwendet werden, um anzuzeigen, dass ein Befehl einer Befehlssequenz mit fester Länge ein Lesebefehl ist. „Befehlsbetriebscode“ nimmt Bezug auf eine Zahl, ein Symbol oder einen anderen Wert, der eingerichtet ist, um einer Empfangsvorrichtung zu signalisieren, welcher Befehl eines Satzes von Befehlen von der Empfangsvorrichtung ausgeführt werden soll. Ein Befehlsbetriebscode kann innerhalb eines Feldes für einen Befehlsbetriebscode einer Befehlssequenz mit fester Länge gespeichert werden. „Befehlsadressfeld“ nimmt Bezug auf ein Feld innerhalb einer Befehlssequenz mit fester Länge, das eingerichtet ist, um eine Befehlsadresse zu halten. „Suffixfeld“ nimmt Bezug auf ein Feld einer Befehlssequenz mit fester Länge, das eingerichtet ist, um zusätzliche Informationen in Bezug auf einen Speicherbefehl der Befehlssequenz mit fester Länge bereitzustellen. In bestimmten Ausführungsformen kann ein Suffixfeld verwendet werden, um anzuzeigen, dass ein Befehl einer Befehlssequenz mit fester Länge ein Lesebefehl ist.
  • Im Beispiel von 3, umfasst das Präfixfeld 304 drei Bytes, das Befehlsbetriebscode-Feld 306 ein Byte, das Befehlsadressfeld 308 fünf Bytes und das Suffixfeld 310 ein Byte. Fachleute werden erkennen, dass eine Befehlssequenz mit fester Länge eine beliebige Anzahl von Bytes oder Bits einschließen kann, solange die Gesamtheit auf eine bestimmte ganze Zahl fest ist. Da eine Befehlssequenz mit fester Länge eine Länge/Größe aufweist, die sich von einem Speicherbefehl zum anderen nicht ändert, kann die Speicherschnittstelle einfacher sein, weniger Taktsignale einschließen und mit einer hohen Datenübertragungsrate betrieben werden. In einer Ausführungsform kann beispielsweise die Speicherschnittstelle 224 mit doppelter Datenrate betrieben werden.
  • „Taktsignal“ nimmt Bezug auf ein Steuersignal, das mit synchronen digitalen Schaltungen verwendet wird und eingerichtet ist, um zwischen einem hohen Zustand und einem niedrigen Zustand bei einer bestimmten in Taktzyklen gemessenen Rate oder Frequenz einer Kommunikationsschnittstelle zu oszillieren. Gemeinsame Taktsignale werden so betrieben, dass das Signal eine Rechteckwelle mit einem Arbeitszyklus von 50 % ausbildet. Elektronische Komponenten sind auf ein Taktsignal angewiesen, das mit einer konstanten, festen Frequenz betrieben wird.
  • Schaltungen, die ein Taktsignal für das Synchronisieren verwenden, können entweder an der steigenden Flanke, der fallenden Flanke oder, bei doppelter Datenrate, sowohl an der steigenden als auch an der fallenden Flanke des Taktzyklus aktiv werden. (Recherche: Taktsignal auf Wikipedia.com am 11. November 2019. Geändert. Zugriff am 20. Februar 2020.)
  • In bestimmten Ausführungsformen kann eine Befehlssequenz mit fester Länge 300, die mit der vordefinierten Befehlssequenz 302 übereinstimmt, eine Befehlsadresse mit einem Speicherbefehl einschließen. Solche Ausführungsformen können Bezug auf die vordefinierte Befehlssequenz 302 als Befehlsadressensequenz 312 nehmen. Die Befehlsadressensequenz 312 kann mindestens ein Präfixfeld 304, ein Befehlsbetriebscode-Feld 306, ein Befehlsadressenfeld 308 und mindestens ein Suffixfeld 310 einschließen. Das Befehlsadressfeld 308 kann 5 Bytes oder jede beliebige Anzahl von Bytes betragen, die für die korrekte Adressierung von Speicherbefehlen zu einem Speicherarray erforderlich sind, solange die Größe des Befehlsadressfeldes fest und nicht variabel ist. In bestimmten Ausführungsformen kann die Befehlsadressensequenz 312 ein Befehlsbetriebscode-Feld 306, ein Befehlsadressfeld 308 und kein Präfixfeld 304 und kein Suffixfeld 310 einschließen. In bestimmten Ausführungsformen kann die Befehlsadressensequenz 312 eine Befehlssequenz mit fester Länge und/oder eine Befehlsadressensequenz mit fester Länge einschließen.
  • In bestimmten Ausführungsformen kann ein Protokolltaktsignal mit doppelter Datenrate 314 verwendet werden, um die Daten der Befehlssequenz mit fester Länge 300 in einer Dekodiererschaltung 216 einzufangen, wie sie in 2 sowohl bei der fallenden Taktflanke 316 als auch bei der steigenden Taktflanke 318 eingeführt wurde. Das Verwenden eines Taktsignals mit doppelter Datenrate des Protokolls 314 ermöglicht die Übertragung von doppelt so vielen Bytes einer Befehlsadressensequenz 312 wie bei Verwendung eines einzelnen Datenratenprotokolls. Durch Verwendung des Protokolltaktsignals mit doppelter Datenrate 314 wird die Übertragungsgeschwindigkeit für die Befehlsadressensequenz 312 / vordefinierte Befehlssequenz 302 verdoppelt. Fachleute wissen es zu schätzen, dass die Speichersteuerung 102 und die Eingabe/Ausgabe-(E/A-)Schaltung 222 angepasst sind, um das Protokolltaktsignal mit doppelter Datenrate 314 für ein Protokoll mit doppelter Datenrate zu unterstützen und zu betreiben.
  • In einer Ausführungsform, wie sie im Hinblick auf den Datenbus 228 in 2 beschrieben ist, können die acht Bits jedes Bytes der vordefinierten Befehlssequenz 302 parallel übertragen und eingefangen werden. Somit können die zehn Bytes der Befehlssequenz mit fester Länge 300 in der Reihenfolge der vordefinierten Befehlssequenz 302 innerhalb von zehn Taktflanken, vom Zeitpunkt T0 bis T1 eingefangen werden, wie gezeigt. In einer Ausführungsform kann das Protokolltaktsignal mit doppelter Datenrate 314, das vom Datenbus verwendet wird, mit einer Geschwindigkeit von 2 Nanosekunden (ns) pro Taktzyklus betrieben werden. Wenn die E/A-Schaltung, wie die Eingabe/Ausgabe-(E/A-)Schaltung 222, eingerichtet ist, um Daten vom Datenbus unter Verwendung eines Protokolls mit doppelter Datenrate einzufangen, kann die Befehlssequenz mit fester Länge 300 innerhalb von 10 ns eingefangen werden, was eine Verbesserung gegenüber dem Zeitraum von 70 ns bis 100 ns darstellt, den herkömmliche Lösungen benötigen.
  • 4 veranschaulicht ein Speichersystem 400 nach einer Ausführungsform. Das Speichersystem 400 kann eine Speichersteuerung 102 umfassen, die mit einer Vielzahl von Speicher-Dies 402 über eine Speicherschnittstelle 224 gekoppelt ist, die einen Steuerbus 226 und einen Datenbus 228 umfasst. Die Speichersteuerung 102 ist mit jedem Speicher-Die 104 gekoppelt, und die Speicherschnittstelle 224 kann funktionieren, wie in 1 und 2 beschrieben. Die Speichersteuerung 102 kann ferner einen Prozessor 404, ein RAM 406, ein ROM 408, einen Treiber 410 und einen Schnittstellenmanager 412 umfassen. Jeder Speicher-Die 104 kann einen nichtflüchtigen Speicher 414, eine Die-Steuerung 416 und einen Die-Schnittstellenmanager 418 umfassen.
  • „Prozessor“ nimmt Bezug auf alle Schaltkreise, Komponenten, Chips, Dies, Baugruppen oder Module, die eingerichtet sind, um Maschinenanweisungen zu empfangen, zu interpretieren, zu dekodieren und auszuführen. Beispiele für einen Prozessor können, ohne darauf beschränkt zu sein, eine Zentralverarbeitungseinheit, einen Allzweckprozessor, einen anwendungsspezifischen Prozessor, eine Grafikverarbeitungseinheit (GPU), ein feldprogrammierbares Gate-Array (Field Programmable Gate Array, FPGA), eine anwendungsspezifische integrierte Schaltung (Application Specific Integrated Circuit, ASIC), ein System auf einem Chip (System on a Chip, SoC), einen virtuellen Prozessor, einen Prozessorkern und Ähnliches einschließen.
  • „Treiber“ nimmt Bezug auf eine Schaltung, einen Teilschaltkreis, eine elektronische Komponente, Hardware, Software, Firmware, ein Modul, eine Logik, eine Vorrichtung oder ein Gerät, die/das eingerichtet, programmiert, ausgeführt, angeordnet oder konstruiert ist, um eine Spannung entweder in analoger oder digitaler Wellenform an eine andere Schaltung, einen Teilschaltkreis, eine elektronische Komponente, Logik, Vorrichtung oder Gerät zu liefern.
  • In einer anderen Ausführungsform kann ein Treiber einen Strom an eine andere Schaltung oder Komponente mit einem vordefinierten Pegel/Stärke liefern. Häufig ist ein einzelner Treiber, der hierin auch als „Treiberschaltung“ bezeichnet wird, eingerichtet, um eine Spannung und/oder einen Strom mit einem von einer Vielzahl von vordefinierten Pegeln oder Stärken zu liefern, basierend auf Steuersignalen, die dem Treiber bereitgestellt werden.
  • Der Schnittstellenmanager 412 kann der Speichersteuerung 102 erlauben, über die Speicherschnittstelle 224 zu kommunizieren, um Daten und/oder Befehlsadressensequenzen mit fester Länge zu übertragen, wie etwa die zuvor eingeführte Befehlssequenz mit fester Länge 300. In einer Ausführungsform kann der Schnittstellenmanager 412 als Reaktion auf den Speicherbefehl der Befehlsadressensequenz mit fester Länge, die einen Lesebefehl umfasst, einen Wert für eines der Präfixfelder der Befehlsadressensequenz mit fester Länge einstellen. „Befehlsadressensequenz mit fester Länge“ nimmt Bezug auf eine bestimmte Art von Befehlssequenz mit fester Länge, die eine Befehlssequenz und eine Befehlsadresse einschließt.
  • Die Die-Steuerung 416 von jedem Speicher-Die 104 kann mit einem Die-Schnittstellenmanager 418 gekoppelt werden oder einen solchen einschließen, der mit der Speichersteuerung 102 über die Speicherschnittstelle 224 kommuniziert. Der Schnittstellenmanager 412 und die Die-Schnittstellenmanager 418 übertragen die Befehlsadressensequenz mit fester Länge über den Datenbus 228 unter Verwendung eines Protokolls mit doppelter Datenrate.
  • Der Datenbus 228 kann ein Protokolltaktsignal mit doppelter Datenrate 424 umfassen, das eingerichtet ist, um mit einer Geschwindigkeit von 2 ns pro Taktzyklus betrieben zu werden. Der Steuerbus 226 kann ein Chip-Freigabe-Steuersignal 420 und ein Befehlssteuersignal 422 einschließen. „Befehlssteuersignal“ nimmt Bezug auf ein Signal, das über eine Steuerlinie gesendet und eingerichtet wird, um den Betrieb einer elektronischen Vorrichtung wie eines Speicher-Die, einer Die-Steuerung oder ähnlichem zu verwalten. Das Befehlssteuersignal 422 kann identifizieren, ob Daten auf dem Datenbus 228 einen Speicherbefehl oder Daten, wie Benutzerdaten, darstellen.
  • In einer Ausführungsform kann der Steuerbus 226 nur aus einem Chip-Freigabesteuersignal 420 und einem Befehlssteuersignal 422 bestehen. In bestimmten Ausführungsformen kann ein Steuerbus 226, der nur aus dem Chip-Freigabesteuersignal 420 und dem Befehlssteuersignal 422 besteht, es dem Speichersystem 400 ermöglichen, mit weniger Steuerlinien des Steuerbusses und wenigen zugeordneten Pads entworfen zu werden. Zum Beispiel verwendet das Speichersystem 400 möglicherweise keine WE-Steuerlinie, da die Befehlssequenz unter Verwendung einer Befehlssequenz mit fester Länge übertragen wird. Durch die Verwendung einer Befehlssequenz mit fester Länge kann das Speichersystem 400 möglicherweise auch mit einer höheren Datenübertragungsgeschwindigkeit betrieben werden, wie etwa mit einem Protokoll mit doppelter Datenrate.
  • In einer Ausführungsform stimmt der Schnittstellenmanager 412 die Speicherschnittstelle 224 ab, um geeignete Schnittstelleneinstellungen für die Datenübertragung mit einer annehmbaren Signalintegrität und Bitfehlerrate und Datenübertragungsgeschwindigkeit zu bestimmen. „Schnittstelleneinstellungen“ nimmt Bezug auf einen Parameter für, oder im Zusammenhang mit dem Interagieren mit, Verwenden, Betreiben oder Verwalten einer Kommunikationsschnittstelle, wie etwa einer Speicherschnittstelle. Die Schnittstelleneinstellungen können sich auf Einstellungen beziehen, die eingerichtet sind, um das genaue Senden und Empfangen von Daten und/oder Steuersignalen zwischen einem Sender und einem Empfänger zu gewährleisten.
  • Bei einer Schnittstelle, die eine Reihe von Steuerlinien verwendet, um die Daten und Signale zu kommunizieren, können die Schnittstelleneinstellungen Parameter, Werte und Einstellungen umfassen, die den Betrieb der Schnittstelle anpassen, um die Durchführung, die Treue und die Signalintegrität der Schnittstelle zu verbessern. Einige Beispiele für Einstellungen, die Schnittstelleneinstellungen sein können, schließen, ohne darauf beschränkt zu sein, Impedanzanpassungseinstellungen (ZQ), Terminierungseinstellungen am Die (On-Die Termination, ODT), wie etwa Verzögerungseinstellungen, Einstellungen für die Arbeitszykluskorrektur, Einstellungen für die Schnittstellentaktgeschwindigkeit und ähnliches ein. In bestimmten Ausführungsformen können Schnittstelleneinstellungen definiert und/oder angepasst werden, um Unterschiede in Schaltungen oder Komponenten zu berücksichtigen, die sich aus Abweichungen bei der Prozessherstellung, aus Änderungen der verwendeten oder verfügbaren Spannungen und aus Änderungen der Temperatur, in der der Sender und/oder Empfänger betrieben wird, ergeben.
  • Die Schnittstelleneinstellungen können einmal während des Initialisierens eines Senders und/oder Empfängers, die zur Verwendung der zugehörigen Schnittstelle eingerichtet sind, dynamisch eingestellt werden, mit jedem Befehl, der über die Schnittstelle ausgegeben wird, oder während des Betriebs des Senders und Empfängers unter Verwendung der Schnittstelle, als Reaktion auf Auslöser wie Ereignisse, Zeitintervalle, Bedingungen, die die Schwellen erfüllen, und dergleichen.
  • Die „Bitfehlerrate“ nimmt Bezug auf eine Messung einer Anzahl von fehlerhaften Bits von einer Gesamtanzahl von verarbeiteten Bits. In bestimmten Ausführungsformen wird eine Bitfehlerrate berechnet, nachdem ein Dekodierer für den Fehlerkorrekturcode (Error Correction Code, ECC) einen oder mehrere Versuche gemacht hat, ein oder mehrere fehlerhafte Bits zu korrigieren.
  • „Datenübertragungsgeschwindigkeit“ nimmt Bezug auf eine Messung einer Rate, bei der Daten zwischen einer Quelle und einem Ziel relativ zu einer Zeiteinheit, üblicherweise Sekunden oder Sekundenabschnitte, übertragen werden. Eine Datenübertragungsgeschwindigkeit kann in Bezug auf die Anzahl der Taktzyklen eines Taktsignals, wie eines Strobe-Signals, einer Kommunikationsschnittstelle, wie eines Datenbusses, ausgedrückt werden. Eine Datenübertragungsgeschwindigkeit kann in Bezug auf die Datenmenge in Megabytes ausgedrückt werden, die pro Zeiteinheit, wie Sekunden, übertragen werden. Zum Beispiel kann eine Datenübertragungsgeschwindigkeit 533 MB/s betragen.
  • Fachleute werden erkennen, dass der Schnittstellenmanager 412 Schnittstelleneinstellungen für Speicherzellen bestimmen kann, die eingerichtet sind, um jede Anzahl von Bits pro Speicherzelle zu speichern, wie 2, 3, 4, 5, 6, 7, 8 und dergleichen. In ähnlicher Weise können Ausführungsformen der offenbarten Lösung die Schnittstelleneinstellungen ändern, falls erforderlich, basierend auf der Anzahl der Bits, für die die Speicherzellen, die am Speichervorgang beteiligt sind, zum Speichern eingerichtet sind.
  • 5 veranschaulicht eine Dekodiererschaltung 500 gemäß einer Ausführungsform. Die Dekodiererschaltung 500 kann innerhalb einer Die-Steuerung oder in Verbindung mit einer Die-Steuerung eines Speichersystems 400 betrieben werden. Eine Dekodiererschaltung 500 dekodiert eine Befehlsadresse und einen Speicherbefehl aus einer Befehlssequenz mit fester Länge, die von einer E/A-Schaltung über einen Datenbus empfangen wird. In bestimmten Ausführungsformen kann sich eine Dekodiererschaltung 500 innerhalb jeder der Die-Steuerungen 416 befinden.
  • In einer Ausführungsform kann die Dekodiererschaltung 500 sowohl Lesebefehle 504 als auch Nicht-Lesebefehle 506 an den Lesebefehlsdekodierer 508 bereitstellen. „Lesebefehlsdekodierer“ nimmt Bezug auf einen Dekodierer, der spezifisch eingerichtet ist, um Lesebefehle von einer Speichersteuerung zu einem Speicher-Die zu dekodieren.
  • Die Dekodiererschaltung 500 kann Speicherbefehle aus einer Befehlssequenz mit fester Länge 502 dekodieren. Die Dekodiererschaltung 500 kann dann den Lesebefehlsdekodierer 504 oder den Nicht-Lesebefehlsdekodierer 506 anweisen, einen Speicherbefehl, basierend auf einer Speicherbefehlsart für einen bestimmten Speicherbefehl, zu dekodieren.
  • Der Lesebefehlsdekodierer 504 kann spezifisch eingerichtet werden, um Lesebefehle 512 und keine anderen Arten von Speicherbefehlen zu dekodieren. Der Nicht-Lesebefehlsdekodierer 506 kann spezifisch eingerichtet werden, um Nicht-Lesebefehle 510 zu dekodieren. In bestimmten Ausführungsformen kann der Lesebefehlsdekodierer 504 Lesebefehle schneller dekodieren, als der Nicht-Lesebefehlsdekodierer 506 Nicht-Lesebefehle 510 dekodiert. Die Dekodiererschaltung 500 kann Nicht-Lesebefehle lenken 510
  • In einer Ausführungsform kann die Dekodiererschaltung 500 sowohl Lesebefehle 512 als auch Nicht-Lesebefehle 510 an den Lesebefehlsdekodierer 504 bereitstellen. Wenn der Speicherbefehl ein Lesebefehl ist, dann dekodiert der Lesebefehlsdekodierer 504 den Speicherbefehl. Wenn der Speicherbefehl ein Nicht-Lesebefehl ist, dann dekodiert der Nicht-Lesebefehlsdekodierer 506 den Speicherbefehl.
  • Die Dekodiererschaltung 500 kann verschiedene Mechanismen verwenden, um zu bestimmen, welcher Dekodierer für eine Befehlssequenz mit fester Länge 502 zu verwenden ist. In einer Ausführungsform leitet die Dekodiererschaltung 500 Speicherbefehle an einen der Lesebefehlsdekodierer 504 und den Nicht-Lesebefehlsdekodierer 506 basierend auf einem Präfixfeld. Zum Beispiel kann in einer Ausführungsform die Dekodiererschaltung 500 Lesebefehle an den Lesebefehlsdekodierer 504 lenken, als Reaktion auf mindestens ein Präfixfeld einer Befehlssequenz mit fester Länge 502, die einen Wert aufweist, der anzeigt, dass der Speicherbefehl ein Lesebefehl ist. In einer Ausführungsform kann der Wert, der anzeigt, dass der Speicherbefehl ein Lesebefehl ist, ein Hochleistungs-Lesekennzeichen umfassen. Wenn es als Teil des Präfix-Feldes umgesetzt wird (oder Teil eines Suffix-Feldes sein kann), kann das Hochleistungs-Lesekennzeichen verwendet werden, um die Befehlssequenz mit fester Länge zu einem Hochleistungs-Lesebefehlsdekodierer zu lenken, welcher zum Beispiel ein zweckgebundener, dedizierter Einzelfunktions-Lesebefehlsdekodierer sein kann.
  • Der Lesebefehlsdekodierer 504 kann ausgelegt sein, um Lesebefehle 512 schneller zu dekodieren als der Nicht-Lesebefehlsdekodierer 506 Speicherbefehle dekodiert, die Nicht-Lesebefehle 510 sind. Der Befehlsadressendekodierer 508 kann eine Befehlsadresse 514 aus der Befehlssequenz mit fester Länge 502 dekodieren, wie eine Befehlsadresse, die in einem Befehlsadressfeld 308 kommuniziert wird.
  • 6 veranschaulicht eine Die-Steuerung 600 gemäß einer Ausführungsform. Die Die-Steuerung 600 umfasst eine Dekodiererschaltung 500, eine SIPO-Schaltung 602 und eine Eingabe/Ausgabe-(E/A-)Schaltung 604. Diese Elemente können als Schaltkreise innerhalb der Die-Steuerung 600 umgesetzt werden.
  • In Ausführungsformen, wie die in Bezug auf 2 beschriebene, wird die Speicherschnittstelle mit einem Protokoll mit doppelter Datenrate und mit einer schnellen Zykluszeit von 2 Nanosekunden betrieben. Infolgedessen ist die Datenübertragungsgeschwindigkeit für die Speicherschnittstelle schneller als die bisher verwendete. Diese höheren Geschwindigkeiten werden durch die Verwendung eines schnelleren Treibers/Taktsignals, eines Protokolls mit doppelter Datenrate und einer Befehlssequenz mit fester Länge ermöglicht. In bestimmten Ausführungsformen können Einfangsregister, Puffer, Empfangsschaltungen und Dekodierer eines Speicher-Die bestimmte Einstell- und Haltezeiten aufweisen, um Speicherbefehle richtig zu dekodieren und darauf zu reagieren.
  • Die SIPO-Schaltung 602 kann als Puffer dienen, um das Verarbeiten und Dekodieren solcher Speicherbefehle, die über die Speicherschnittstelle bei den höheren Datenübertragungsgeschwindigkeiten empfangen werden, zu erleichtern. Die Serien-Parallel-Schaltung (Serial-In-Parallel-Out, SIPO) oder die SIPO-Schaltung 602, die zwischen der Eingabe/Ausgabe-(EA)-Schaltung 604 und der Dekodiererschaltung 500 gekoppelt ist, kann sechzehn Bits auf einem Satz von Eingabesteuerlinien 606 annehmen. Die SIPO-Schaltung 602 kann dann achtzig Bit parallel ausgeben. Somit ist die SIPO-Schaltung 602 eingerichtet, um fünf Sätze von Befehlssequenzen mit fester Länge zu puffern, die dann zum Verarbeiten und Handhaben an eine Dekodiererschaltung 500 weitergeleitet werden können.
  • Auf diese Weise kann die SIPO-Schaltung 602 eine 16-Bit-Befehlssequenz mit fester Länge 608, die von der Eingabe/Ausgabe-(EA-)Schaltung 604 empfangen wurde, nach einem Protokoll mit doppelter Datenrate in eine 80-Bit-Befehlsadressensequenz 610 umwandeln. Die SIPO-Schaltung 602 kann dann die 80-Bit-Befehlsadressensequenz 610 an die Dekodiererschaltung 500 übertragen.
  • 7 veranschaulicht eine Routine 700 für das Umsetzen der offenbarten Lösung nach einer Ausführungsform. Eine Befehlssequenz mit fester Länge kann zuerst von einer Speichersteuerung in Block 702 empfangen werden. Die Befehlssequenz mit fester Länge kann über einen Datenbus unter Verwendung eines Protokolls mit doppelter Datenrate gesendet werden. Die Befehlssequenz mit fester Länge kann als Reaktion auf ein Befehlssteuersignal empfangen werden, das identifiziert, ob die Daten auf dem Datenbus ein Speicherbefehl oder Daten sind.
  • Die Routine 700 kann die Befehlssequenz mit fester Länge durch eine Serien-Parallel-Schaltung (Serial-In-Parallel-Out, SIPO) in Block 704 weiterleiten. Die Serien-Parallel-Schaltung (SIPO) kann fünf 16-Bit-Befehlssequenzen mit fester Länge in eine 80-Bit-Befehlsadressensequenz umwandeln. Die 80-Bit-Befehlsadressensequenz kann eine Befehlsadressensequenz mit fester Länge sein, die ein 5-Byte-Befehlsadressenfeld, ein Feld für einen 1-Byte-Befehlsbetriebscode, bis zu drei Präfixfelder, die 3 Bytes belegen, und ein 1-Byte-Suffixfeld einschließen kann. Im Block 706 kann die Befehlssequenz mit fester Länge dekodiert werden, um den Speicherbefehl herzustellen, der durch die Befehlssequenz mit fester Länge identifiziert wird.
  • Im Entscheidungsblock 708 kann die 80-Bit-Befehlsadressensequenz auf einen Wert untersucht werden, der anzeigt, ob der Speicherbefehl ein Lesebefehl oder ein Nicht-Lesebefehl ist. Wenn die Befehlsadressensequenz einen Lesebefehl darstellt, leitet die Routine 700 zum Block 710 weiter. Wenn die 80-Bit-Befehlsadressensequenz ein Nicht-Lesebefehl ist, leitet die Routine 700 zum Block 712 weiter.
  • Wenn in Block 710 die 80-Bit-Befehlsadressensequenz einen Lesebefehl einschließt, wird die Befehlsadressensequenz an einen Lesebefehlsdekodierer gesendet. Der Lesebefehlsdekodierer kann dann den Lesebefehl umsetzen. Wenn die 80-Bit-Befehlsadressensequenz im Block 712 ein Nicht-Lesebefehl ist, kann sie an einen Nicht-Lesebefehlsdekodierer gesendet werden. Der Nicht-Lesebefehlsdekodierer kann dann den Nicht-Lesebefehl umsetzen. In bestimmten Ausführungsformen kann die Routine 700 das Umgehen eines Lesebefehlsdekodierers im Block 712 einschließen. Im Block 714 endet die Routine 700 mit der Ausführung des Speicherbefehls, der durch die Befehlssequenz mit fester Länge definiert ist. Diese Routine 700 kann durch die Schaltung und das System umgesetzt werden, die in Bezug auf 1 bis 6 beschrieben sind.
  • 8 ist ein beispielhaftes Blockdiagramm einer Rechenvorrichtung 800, die Ausführungsformen der beanspruchten Lösung beinhalten kann. 8 ist lediglich veranschaulichend für ein Maschinensystem zur Durchführung von Gesichtspunkten der hierin beschriebenen technischen Prozesse und schränkt den Umfang der Ansprüche nicht ein. Ein gewöhnlicher Fachmann würde andere Abweichungen, Modifikationen und Alternativen erkennen. In bestimmten Ausführungsformen schließt die Rechenvorrichtung 800 eine grafische Benutzerschnittstelle 802, ein Datenverarbeitungssystem 804, ein Kommunikationsnetzwerk 806, eine Schnittstelle des Kommunikationsnetzwerks 808, Eingabevorrichtungen 810, Ausgabevorrichtungen 812 und dergleichen ein.
  • Wie in 8 dargestellt, kann das Datenverarbeitungssystem 804 einen oder mehrere Prozessor(en) 814 und ein Speichersystem 816 einschließen.
  • Der/die Prozessor(en) 814 kommunizieren mit einer Anzahl von Peripherievorrichtungen über ein Bussubsystem 818. Diese Peripherievorrichtungen können Eingabevorrichtungen 810, Ausgabevorrichtungen 812, die Schnittstelle des Kommunikationsnetzwerks 808 und das Speichersystem 816 einschließen. Das Speichersystem 816 umfasst in einer Ausführungsform ein oder mehrere Speichervorrichtungen und / oder ein oder mehrere Speicherungsvorrichtungen. Der Begriff „Speichervorrichtung“ nimmt Bezug auf jede Hardware, jedes System, Untersystem, jede Schaltung, Komponente, jedes Modul, jedes nichtflüchtige Speichermedium, jedes Festplattenlaufwerk, jedes Speicherarray, jede Vorrichtung oder jedes Gerät, die eingerichtet, programmiert, entworfen oder konstruiert sind, um Daten für einen bestimmten Zeitraum zu speichern und die Daten in der Speichervorrichtung zu behalten, während die Speichervorrichtung keine Leistung von einer Leistungsversorgung verwendet. Beispiele für Speichervorrichtungen schließen ein Festplattenlaufwerk, FLASH-Speicher, einen MRAM-Speicher, eine Festkörperspeichervorrichtung, nur ein Haufen von Platten (Just a Bunch Of Disks, JBOD), „ein paar Platten“ (Just a Bunch Of Flash, JBOF), eine externe Festplatte, eine interne Festplatte und Ähnliches ein, ohne darauf beschränkt zu sein.
  • In einer Ausführungsform schließt das Speichersystem 816 einen flüchtigen Speicher 820 und einen nichtflüchtigen Speicher 822 ein. Der Begriff „flüchtiger Speicher“ nimmt Bezug auf eine Kurzform für flüchtige Speichermedien. In bestimmten Ausführungsformen nehmen flüchtige Speicher Bezug auf die flüchtigen Speichermedien und die Logik, Steuerungen, Prozessoren, Zustandsmaschinen und/oder andere Peripherieschaltungen, die die flüchtigen Speichermedien verwalten und den Zugriff auf die flüchtigen Speichermedien ermöglichen.
  • Der Begriff „nichtflüchtiger Speicher“ nimmt Bezug auf die Kurzform für nichtflüchtige Speichermedien. In bestimmten Ausführungsformen nehmen nichtflüchtige Speichermedien Bezug auf die nichtflüchtigen Speichermedien und die Logik, Steuerungen, Prozessoren, Zustandsmaschinen und/oder andere Peripherieschaltungen, die die nichtflüchtigen Speichermedien verwalten und den Zugriff auf die nichtflüchtigen Speichermedien ermöglichen. Der flüchtige Speicher 820 und/oder der nichtflüchtige Speicher 822 können computerausführbare Anweisungen 826 speichern, die allein oder zusammen eine Logik 824 ausbilden, die, wenn sie auf den/die Prozessor(en) 814 aufgebracht und von diesem/diesen ausgeführt werden, Ausführungsformen der hierin offenbarten Prozesse umsetzen. Der Begriff „Logik“ nimmt Bezug auf Maschinenspeicherschaltungen, nicht vorübergehende maschinenlesbare Medien und/oder Schaltkreise, die über ihr Material und/oder über ihre Material-Energie-Konfiguration Steuer- und/oder Verfahrenssignale und/oder Einstellungen und Werte (wie Widerstand, Impedanz, Kapazität, Induktivität, Strom-/Spannungswerte usw.) aufweisen, die angewendet werden können, um den Betrieb einer Vorrichtung zu beeinflussen. Magnetische Medien, elektronische Schaltungen, elektrischer und optischer Speicher (sowohl flüchtig als auch nichtflüchtig) und Firmware sind Beispiele für Logik. Logik schließt insbesondere reine Signale oder Software per se aus (jedoch nicht Maschinenspeicher, die Software aufweisen und dadurch wichtige Konfigurationen ausbilden).
  • Die Eingabevorrichtungen 810 schließen Vorrichtungen und Mechanismen zur Eingabe von Informationen in das Datenverarbeitungssystem 804 ein. Diese können eine Tastatur, ein Tastenfeld, ein Berührungsbildschirm, der in die grafische Benutzerschnittstelle 802 integriert ist, Audio-Eingabevorrichtungen wie Spracherkennungssysteme, Mikrofone und andere Arten von Eingabevorrichtungen einschließen. In verschiedenen Ausführungsformen können die Eingabevorrichtungen 810 als Computermaus, Laufkugel, Laufpolster, Steuerknüppel, drahtlose Fernbedienung, Zeichentablett, Sprachbefehlssystem, Blickverfolgungssystem und dergleichen ausgeführt sein. Die Eingabevorrichtungen 810 ermöglichen es dem Benutzer üblicherweise, Objekte, Icons, Steuerbereiche, Text und dergleichen, die auf der grafischen Benutzerschnittstelle 802 erscheinen, über einen Befehl wie einen Knopfdruck oder dergleichen auszuwählen.
  • Die Ausgabevorrichtungen 812 schließen Vorrichtungen und Mechanismen für die Ausgabe von Informationen aus dem Datenverarbeitungssystem 804 ein. Diese können die grafische Benutzerschnittstelle 802, Lautsprecher, Drucker, Infrarot-LEDs usw. einschließen, die auch in der Technik verstanden werden. In bestimmten Ausführungsformen ist die grafische Benutzerschnittstelle 802 direkt über eine drahtgebundene Verbindung an das Bus-Untersystem 818 gekoppelt. In anderen Ausführungsformen ist die grafische Benutzerschnittstelle 802 über die Schnittstelle des Kommunikationsnetzwerks 808 an das Datenverarbeitungssystem 804 gekoppelt. Zum Beispiel kann die grafische Benutzerschnittstelle 802 eine Befehlszeilenschnittstelle auf einer getrennten Rechenvorrichtung 800 wie Desktop, Server oder Mobilvorrichtung umfassen.
  • Die Schnittstelle des Kommunikationsnetzwerks 808 stellt eine Schnittstelle zu Kommunikationsnetzwerken (z. B. Kommunikationsnetzwerk 806) und Vorrichtungen außerhalb des Datenverarbeitungssystems 804 bereit. Die Schnittstelle des Kommunikationsnetzwerks 808 kann als eine Schnittstelle zum Empfangen von Daten von und Übertragen von Daten an andere Systeme dienen. Ausführungsformen der Schnittstelle des Kommunikationsnetzwerks 808 können eine Ethernet-Schnittstelle, ein Modem (Telefon, Satellit, Kabel, ISDN), eine (asynchrone) digitale Abonnentenlinie (DSL), FireWire, USB, eine drahtlose Kommunikationsschnittstelle wie Bluetooth oder WiFi, eine drahtlose Nahfeldkommunikationsschnittstelle, eine zellulare Schnittstelle und ähnliches einschließen.
  • Die Schnittstelle des Kommunikationsnetzwerks 808 kann über eine Antenne, ein Kabel oder ähnliches mit dem Kommunikationsnetzwerk 806 gekoppelt werden. In einigen Ausführungsformen kann die Schnittstelle des Kommunikationsnetzwerks 808 physisch auf einer Schaltplatine des Datenverarbeitungssystems 804 integriert sein oder in einigen Fällen in Software oder Firmware umgesetzt sein, wie etwa „Softmodems“ oder Ähnliches.
  • Die Rechenvorrichtung 800 kann eine Logik einschließen, die die Kommunikationen über ein Netzwerk unter Verwendung von Protokollen wie HTTP, TCP/IP, RTP/RTSP, IPX, UDP und dergleichen ermöglicht.
  • Der flüchtige Speicher 820 und der nichtflüchtige Speicher 822 sind Beispiele für greifbare Medien, die eingerichtet sind, um computerlesbare Daten und Anweisungen zu speichern, um verschiedene Ausführungsformen der hierin beschriebenen Prozesse umzusetzen. Andere Arten von greifbaren Medien schließen abnehmbare Speicher (z. B. steckbare USB-Speichervorrichtungen, SIM-Karten für Mobilvorrichtungen), optische Speichermedien wie CD-ROMS, DVDs, Halbleiterspeicher wie Flash-Speicher, nichttransitorische Nur-Lese-Speicher (ROMS), batteriegestützte flüchtige Speicher, vernetzte Speichervorrichtungen und dergleichen ein. Der flüchtige Speicher 820 und der nichtflüchtige Speicher 822 können eingerichtet werden, um die Grundprogrammierung und Datenkonstrukte zu speichern, die die Funktionalität der offenbarten Prozesse und anderer Ausführungsformen davon bereitstellen, die in den Rahmen der beanspruchten Lösung fallen.
  • Die Logik 824, die einen oder mehrere Teile der Ausführungsformen der Lösung umsetzt, kann im flüchtigen Speicher 820 und/oder im nichtflüchtigen Speicher 822 gespeichert werden. Die Logik 824 kann aus dem flüchtigen Speicher 820 und/oder dem nichtflüchtigen Speicher 822 gelesen und von dem/den Prozessor(en) 814 ausgeführt werden. Der flüchtige Speicher 820 und der nichtflüchtige Speicher 822 können auch eine Ablage für das Speichern von Daten bereitstellen, die von der Logik 824 verwendet werden.
  • „Modul“ nimmt Bezug auf einen Computercode-Schnitt, der definierte Eingangs- und Ausgangspunkte aufweist. Beispiele für Module sind jede Software, die eine Programmierschnittstelle für Anwendungen, Treiber, Bibliotheken, Funktionen und Unterroutinen umfasst. „Software“ nimmt Bezug auf Logik, die als prozessorausführbare Anweisungen in einem Maschinenspeicher (z. B. flüchtige Lese-/Schreibspeichermedien oder nichtflüchtige Speichermedien) implementiert sind. „Computercode-Schnitt“ nimmt Bezug auf eine oder mehrere Anweisungen. „Programmierschnittstelle der Anwendung“ nimmt Bezug auf Anweisungen, die Eingangspunkte und Rückgabewerte an ein Modul umsetzen.
  • „Anweisungen“ nimmt Bezug auf Symbole, die Befehle zur Ausführung durch eine Vorrichtung unter Verwendung eines Prozessors, Mikroprozessors, einer Steuerung, eines Interpreters oder anderer programmierbarer Logik darstellen. Allgemein können „Anweisungen“ Quellcode, Objektcode und ausführbarer Code bedeuten. Unter „Anweisungen“ sind hierin auch Befehle einzuschließen, die in programmierbaren Nur-Lese-Speichern (Programmable Read-Only Memories, EPROM) oder in hartkodierter Hardware (z. B. „Mikrocode“) und ähnlichen Umsetzungen verkörpert sind, wobei die Anweisungen zum Zeitpunkt der Herstellung einer Vorrichtung in einem Maschinenspeicher oder einer anderen Hardwarekomponente eingerichtet sind.
  • „Quellcode“ nimmt Bezug auf eine textuelle Computersprache auf hoher Ebene, die entweder Interpretation oder Kompilierung erfordert, damit sie von einer Vorrichtung ausgeführt werden kann.
  • „Objektcode“ nimmt Bezug auf den Computercode, der von einem Kompilierer oder als Zwischenausgabe eines Interpreters ausgegeben wird. Der Objektcode nimmt oft die Form einer Maschinensprache oder einer Zwischensprache wie der Register-Transfer-Sprache (RTL) an.
  • „Ausführbarer Code“ nimmt Bezug auf Anweisungen in ausführungsbereiter Form durch eine programmierbare Vorrichtung. Zum Beispiel sind Quellcode-Anweisungen in nicht interpretierten Ausführungsumgebungen kein ausführbarer Code, da sie normalerweise zuerst vom Betriebssystem kompiliert, gelinkt und geladen werden müssen, bevor sie die richtige Form für die Ausführung aufweisen. Interpretierter Computercode kann als ausführbarer Code betrachtet werden, weil er direkt auf eine programmierbare Vorrichtung (einen Interpreter) zur Ausführung aufgebracht werden kann, auch wenn der Interpreter selbst den interpretierten Computercode weiter in maschinensprachliche Anweisungen umwandeln kann.
  • „Programmierbare Vorrichtung“ nimmt Bezug auf jede Logik (einschließlich Hardware- und Software-Logik), deren Betriebsverhalten mit Anweisungen konfigurierbar ist.
  • „Interpreter“ nimmt Bezug auf einen Interpreter, der eine Logik ist, die in einer Skriptsprache des Quellcodes geschriebene Anweisungen direkt ausführt, ohne dass die Anweisungen vorher in Maschinensprache übersetzt werden müssen. Ein Interpreter übersetzt die Anweisungen in eine andere Form, zum Beispiel in Maschinensprache oder in Aufrufe zu internen Funktionen und/oder Aufrufe zu Funktionen in anderen Softwaremodulen.
  • Der flüchtige Speicher 820 und der nichtflüchtige Speicher 822 können eine Anzahl von Speichern einschließen, die einen Hauptspeicher mit Direktzugriff (RAM) zur Speicherung von Anweisungen und Daten während der Programmausführung und einen Nur-Lese-Speicher (ROM) einschließen, in dem nur lesbare, nichtflüchtige Anweisungen gespeichert werden. Der flüchtige Speicher 820 und der nichtflüchtige Speicher 822 können ein Untersystem des Dateispeichers einschließen, das einen dauerhaften (nichtflüchtigen) Speicher für Programm- und Datendateien bereitstellt. Der flüchtige Speicher 820 und der nichtflüchtige Speicher 822 können abnehmbare Speichersysteme, wie etwa abnehmbare Flash-Speicher, einschließen.
  • Das Bus-Untersystem 818 stellt einen Mechanismus für das Ermöglichen der Kommunikation zwischen den verschiedenen Komponenten und Untersystemen des Datenverarbeitungssystems 804, wie vorgesehen, bereit. Obwohl die Schnittstelle des Kommunikationsnetzwerks 808 schematisch als ein einzelner Bus dargestellt ist, können einige Ausführungsformen des Bus-Untersystems 818 mehrere unterschiedliche Busse nutzen.
  • Für Fachleute wird es leicht ersichtlich sein, dass die Rechenvorrichtung 800 eine Vorrichtung wie ein Smartphone, ein Desktop-Computer, ein Laptop-Computer, ein rackmontiertes Computersystem, ein Computerserver oder eine Tablet-Computervorrichtung sein kann. Wie in der Technik allgemein bekannt, kann die Rechenvorrichtung 800 als eine Sammlung von mehreren vernetzten Rechenvorrichtungen umgesetzt werden. Ferner wird die Rechenvorrichtung 800 üblicherweise Betriebssystemlogik (nicht veranschaulicht) einschließen, deren Art und Weise gut bekannt sind.
  • Den hierin verwendeten Begriffen sollte ihre gewöhnliche Bedeutung in der relevanten Technik oder die Bedeutung, die durch ihre Verwendung im Kontext angezeigt wird, zugewiesen werden, aber wenn eine ausdrückliche Definition bereitgestellt wird, hat diese Priorität.
  • Innerhalb dieser Offenbarung können verschiedene Elemente (die unterschiedlich als „Einheiten“, „Schaltungen“, andere Komponenten usw. bezeichnet werden können) als „eingerichtet“ beschrieben oder beansprucht werden, um eine oder mehrere Aufgaben oder Operationen auszuführen. Diese Formulierung - [Element] eingerichtet zum [Ausführen einer oder mehrerer Aufgaben] - bezieht sich hier auf die Struktur (d. h. etwas Physisches, wie eine elektronische Schaltung). Genauer gesagt wird diese Formulierung verwendet, um anzuzeigen, dass diese Struktur angeordnet ist, um die eine oder mehreren Aufgaben während des Betriebs durchzuführen. Eine Struktur kann als „eingerichtet“ bezeichnet werden, um eine Aufgabe auszuführen, auch wenn die Struktur momentan nicht betrieben wird. Eine „Kreditverteilungsschaltung, die eingerichtet ist zum Verteilen von Guthaben auf eine Vielzahl von Prozessorkernen“, soll beispielsweise eine integrierte Schaltung abdecken, die über einen Schaltkreis zum Ausführen dieser Funktion während des Betriebs verfügt, auch wenn die betreffende integrierte Schaltung derzeit nicht verwendet wird (z. B. ist keine Leistungsversorgung daran angeschlossen). Somit nimmt ein Element, das als „eingerichtet zum“ Durchführen einer Aufgabe beschrieben oder rezitiert wird, auf etwas Physisches Bezug, wie eine Vorrichtung, eine Schaltung, einen Speicher zum Speichern von Programmanweisungen, die zum Durchführen der Aufgabe ausführbar sind usw. Diese Formulierung wird hierin nicht verwendet, um auf etwas Immaterielles hinzuweisen.
  • Der Ausdruck „eingerichtet zum“ bedeutet nicht „konfigurierbar zum.“ Ein unprogrammiertes FPGA zum Beispiel würde nicht als „eingerichtet zum“ Ausführen einer bestimmten Funktion betrachtet werden, obwohl es nach der Programmierung „konfigurierbar zum“ Ausführen dieser Funktion sein kann.
  • Die Angabe in den beiliegenden Ansprüchen, dass eine Struktur zum Ausführen einer oder mehrerer Aufgaben „eingerichtet“ ist, ist ausdrücklich dazu gedacht, 35 U.S.C. § 112(f) für dieses Anspruchselement nicht geltend zu machen. Dementsprechend sollten Ansprüche in dieser Anmeldung, die nicht anderweitig das Konstrukt „Mittel zum“ [Ausführen einer Funktion] enthalten, nicht gemäß 35 U.S.C. § 112(f) ausgelegt werden.
  • Wie hierin verwendet, wird der Ausdruck „basierend auf“ verwendet, um einen oder mehrere Faktoren zu beschreiben, die eine Bestimmung beeinflussen. Dieser Ausdruck schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren die Bestimmung beeinflussen können. Das heißt, eine Bestimmung kann ausschließlich auf bestimmten Faktoren oder auf den bestimmten Faktoren sowie anderen, nicht spezifizierten Faktoren basieren. Betrachten wir die Formulierung „A basierend auf B bestimmen“. Dieser Satz besagt, dass B ein Faktor ist, der zur Bestimmung von A verwendet wird oder der die Bestimmung von A beeinflusst. Dieser Satz schließt nicht aus, dass die Bestimmung von A auch auf einem anderen Faktor, wie beispielsweise C, basieren kann. Diese Formulierung gilt auch für eine Ausführungsform, in der A ausschließlich auf der Grundlage von B bestimmt wird. Wie hierin verwendet, ist die Formulierung „basierend auf“ gleichbedeutend mit der Formulierung „basierend zumindest teilweise auf.“
  • Wie hierin verwendet, beschreibt die Formulierung „als Reaktion auf“ einen oder mehrere Faktoren, die einen Effekt auslösen. Diese Formulierung schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren den Effekt beeinflussen oder anderweitig auslösen können. Das heißt, ein Effekt kann ausschließlich als Reaktion auf diese Faktoren oder als Reaktion auf die festen Faktoren sowie andere, nicht festgelegte Faktoren auftreten. Betrachten wir die Formulierung „A als Reaktion auf B ausführen.“ Dieser Satz besagt, dass B ein Faktor ist, der die Leistung von A auslöst. Dieser Satz schließt nicht aus, dass die Ausführung von A auch als Reaktion auf einen anderen Faktor, wie beispielsweise C, erfolgen kann. Diese Formulierung gilt auch für eine Ausführungsform, bei der A ausschließlich als Reaktion auf B ausgeführt wird.
  • Hierin sind Bezugnahmen auf „eine einzelne Ausführungsform“ oder „eine Ausführungsform“ nicht notwendigerweise auf dieselbe Ausführungsform bezogen, obwohl sie es sein können. Soweit der Kontext nicht eindeutig das Gegenteil erfordert, sind in der gesamten Beschreibung und in den Ansprüchen die Wörter „umfassen“, „ umfassend“ und dergleichen in einem einschließenden Sinn und nicht in einem ausschließenden oder erschöpfenden Sinn auszulegen; das heißt, im Sinne von „einschließlich, aber nicht beschränkt auf.“ Wörter, die die Singular- oder Pluralzahl verwenden, schließen auch die Plural- oder Singularzahl ein, sofern sie nicht ausdrücklich auf eine einzige oder mehrere beschränkt sind. Zusätzlich nehmen die Wörter „hierin“, „oben“, „unten“ und Wörter von ähnlicher Bedeutung, wenn sie in dieser Anmeldung verwendet werden, Bezug auf diese Anmeldung als Ganzes und nicht auf einen bestimmten Abschnitt dieser Anmeldung. Wenn in den Ansprüchen das Wort „oder“ in Bezug auf eine Liste von zwei oder mehr Gegenständen verwendet wird, deckt dieses Wort alle der folgenden Auslegungen des Wortes ab: jeder der Gegenstände in der Liste, alle Gegenstände in der Liste und jede Kombination der Gegenstände in der Liste, sofern nicht ausdrücklich auf den einen oder den anderen beschränkt. Alle Begriffe, die hierin nicht ausdrücklich definiert sind, weisen ihre konventionelle Bedeutung auf, so wie sie üblicherweise von Fachleuten verstanden werden, die Fähigkeiten in der/den betreffenden Technik(en) aufweisen.
  • Verschiedene logische Funktionsbetriebe, die hierin beschrieben werden, können in einer Logik umgesetzt werden, auf die unter Verwendung eines Substantivs oder einer Substantivphrase Bezug genommen wird, die den Betrieb oder die Funktion widerspiegelt. Zum Beispiel kann ein Zuordnungsbetrieb von einem „Zuordner“ oder „Korrelator“ vorgenommen werden. Ebenso kann das Umschalten durch einen „Umschalter“, die Auswahl durch einen „Auswähler“ usw. vorgenommen werden.
  • Wie hierin verwendet, werden die Begriffe „erste/erster/erstes“, „zweite/zweiter/zweites“ usw. als Bezeichnungen für die anschließenden Substantive verwendet, und implizieren keine Art von Ordnung (z. B. räumlich, zeitlich, logisch usw.), sofern nicht anders angegeben. Beispielsweise können in einer Registerdatei mit acht Registern die Begriffe „erstes Register“ und „zweites Register“ verwendet werden, um auf zwei beliebige der acht Register Bezug zu nehmen, und nicht beispielsweise nur auf die logischen Register 0 und 1.
  • Bei der Verwendung in den Ansprüchen wird der Begriff „oder“ als inklusiv und nicht als exklusiv verwendet. Beispielsweise bedeutet die Formulierung „mindestens einer von x, y oder z“ einen von x, y und z sowie eine beliebige Kombination davon.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • „Schwelle“ auf Merriam-Webster.com. Merriam-Webster, 2019. Web. 14. November 2019 [0017]

Claims (20)

  1. Schaltung, die Folgendes umfasst: ein nichtflüchtiges Speicherarray, das mit einem Adressendekodierer gekoppelt ist, der eingerichtet ist, um einen Ort innerhalb des nichtflüchtigen Speicherarrays für einen Speicherbefehl zu identifizieren; eine Eingabe/Ausgabe-(E/A-)Schaltung, die an einen Datenbus gekoppelt ist; eine Dekodiererschaltung, die mit einem Steuerbus und der E/A-Schaltung gekoppelt ist, wobei die Dekodiererschaltung eingerichtet ist, um eine Befehlsadresse und den Speicherbefehl aus einer Befehlssequenz mit fester Länge zu dekodieren, die von der E/A-Schaltung über den Datenbus empfangen wird; eine Steuerschaltung, die mit der E/A-Schaltung und der Dekodiererschaltung gekoppelt ist, wobei die Steuerschaltung eingerichtet ist, um Steuersignale zu erzeugen, um die Speicherbefehle auszuführen, die von der Dekodiererschaltung dekodiert werden; und eine Lese-/Schreibschaltung, die mit dem nichtflüchtigen Speicherarray und der Steuerschaltung gekoppelt ist, wobei die Lese-/Schreibschaltung eingerichtet ist, um, als Reaktion auf die Speicherbefehle, Daten zwischen dem nichtflüchtigen Speicherarray und der E/A-Schaltung zu übertragen.
  2. Schaltung nach Anspruch 1, wobei der Datenbus ein Taktsignal umfasst, das eingerichtet ist, um bei einer Geschwindigkeit von 2 Nanosekunden pro Taktzyklus betrieben zu werden, und die E/A-Schaltung eingerichtet ist, um Daten von dem Datenbus unter Verwendung eines Protokolls mit doppelter Datenrate einzufangen.
  3. Schaltung nach Anspruch 1, wobei der Steuerbus aus einem Chip-Freigabesteuersignal und einem Befehlssteuersignal besteht, wobei das Befehlssteuersignal eingerichtet ist, um zu identifizieren, ob Daten auf dem Datenbus den Speicherbefehl oder Daten darstellen.
  4. Schaltung nach Anspruch 1, wobei der Datenbus acht Steuerleitungen umfasst, die jeweils eingerichtet sind, um ein Bit parallel über den Datenbus zu übertragen, und wobei die Befehlssequenz mit fester Länge einen Satz von Bytes umfasst, die nach einer vordefinierten Befehlssequenz von einer Speichersteuerung an die E/A-Schaltung übertragen werden.
  5. Schaltung nach Anspruch 4, wobei die vordefinierte Befehlssequenz eine Befehlsadressensequenz umfasst.
  6. Schaltung nach Anspruch 4, wobei der Satz von Bytes zehn Bytes umfasst.
  7. Schaltung nach Anspruch 1, wobei die Dekodiererschaltung eingerichtet ist, um: den Speicherbefehl aus der Befehlssequenz mit fester Länge zu dekodieren; einen Lesebefehlsdekodierer oder einen Nicht-Lesebefehlsdekodierer anzuweisen, den Speicherbefehl basierend auf einer Speicherbefehlsart zu dekodieren; wobei die Dekodiererschaltung ferner Folgendes umfasst: einen Befehlsadressendekodierer, der eingerichtet ist, um eine Befehlsadresse aus der Befehlssequenz mit fester Länge zu dekodieren; und wobei der Lesebefehlsdekodierer eingerichtet ist, um Lesebefehle zu dekodieren, und der Nicht-Lesebefehlsdekodierer eingerichtet ist, um die Speicherbefehle zu dekodieren, die nicht die Lesebefehle sind.
  8. Schaltung nach Anspruch 7, wobei der Lesebefehlsdekodierer eingerichtet ist, um die Lesebefehle schneller zu dekodieren als der Nicht-Lesebefehlsdekodierer die Speicherbefehle, die keine Lesebefehle sind, dekodiert.
  9. Schaltung nach Anspruch 1, die ferner eine Serien-Parallel-Schaltung (Serial-In-Parallel-Out, SIPO) umfasst, die zwischen der E/A-Schaltung und der Dekodiererschaltung gekoppelt ist, wobei die SIPO-Schaltung eingerichtet ist, um eine 16-Bit-Befehlssequenz mit fester Länge von der E/A-Schaltung, die nach einem Protokoll mit doppelter Datenrate empfangen wird, in eine 80-Bit-Befehlsadressensequenz umzuwandeln und die 80-Bit-Befehlsadressensequenz an die Dekodiererschaltung zu übertragen.
  10. System, das Folgendes umfasst: eine Vielzahl von Speicher-Dies, die jeweils an eine Speicherschnittstelle gekoppelt sind, die einen Datenbus und einen Steuerbus umfasst; und eine Speichersteuerung, die durch die Speicherschnittstelle mit der Vielzahl von Speicher-Dies gekoppelt ist, wobei die Speichersteuerung einen Schnittstellenmanager umfasst, der eingerichtet ist, um Daten und eine Befehlsadressensequenz mit fester Länge zu der Vielzahl von Speicher-Dies über die Speicherschnittstelle zu übertragen; wobei jeder der Vielzahl von Speicher-Dies eine Die-Steuerung einschließt, die einen Die-Schnittstellenmanager aufweist, der eingerichtet ist, um mit der Speichersteuerung über die Speicherschnittstelle zu kommunizieren; und wobei der Schnittstellenmanager der Speichersteuerung und der Die-Schnittstellenmanager der Vielzahl von Speicher-Dies eingerichtet sind, um die Befehlsadressensequenz mit fester Länge über den Datenbus unter Verwendung eines Protokolls mit doppelter Datenrate zu übertragen, und der Datenbus ein Taktsignal umfasst, das eingerichtet ist, um bei einer Geschwindigkeit von 2 Nanosekunden pro Taktzyklus betrieben zu werden.
  11. System nach Anspruch 10, wobei jede Die-Steuerung der Vielzahl von Speicher-Dies Folgendes umfasst: einen Adressendekodierer, der eingerichtet ist, um einen Ort innerhalb eines nichtflüchtigen Speicherarrays für einen Speicherbefehl zu identifizieren; eine Eingabe-/Ausgabe-(EA-)Schaltung, die an den Datenbus gekoppelt ist; eine Dekodiererschaltung, die mit dem Steuerbus und der E/A-Schaltung gekoppelt ist, wobei die Dekodiererschaltung eingerichtet ist, um eine Befehlsadresse und den Speicherbefehl aus der Befehlsadressensequenz mit fester Länge zu dekodieren, die von der E/A-Schaltung über den Datenbus empfangen wird; eine Steuerschaltung, die mit der E/A-Schaltung und der Dekodiererschaltung gekoppelt ist, wobei die Steuerschaltung eingerichtet ist, um Steuersignale zu erzeugen, um die Speicherbefehle auszuführen, die von der Dekodiererschaltung dekodiert werden; und eine Lese-/Schreibschaltung, die mit dem nichtflüchtigen Speicherarray und der Steuerschaltung gekoppelt ist, wobei die Lese-/Schreibschaltung eingerichtet ist, um, als Reaktion auf die Speicherbefehle, Daten zwischen dem nichtflüchtigen Speicherarray und der E/A-Schaltung zu übertragen.
  12. System nach Anspruch 11, wobei die Dekodiererschaltung einen Nicht-Lesebefehlsdekodierer, einen Lesebefehlsdekodierer und einen Befehlsadressendekodierer umfasst und wobei die Dekodiererschaltung eingerichtet ist, um den Speicherbefehl zu einem Lesebefehlsdekodierer zu lenken, als Reaktion auf mindestens ein Präfixfeld der Befehlssequenz mit fester Länge, das einen Wert aufweist, der eingerichtet ist, um anzuzeigen, dass der Speicherbefehl ein Lesebefehl ist; wobei der Lesebefehlsdekodierer eingerichtet ist, um schneller als der Nicht-Lesebefehlsdekodierer betrieben zu werden.
  13. System nach Anspruch 11, wobei die Die-Steuerung eine Serien-Parallel-Schaltung (Serial-In-Parallel-Out, SIPO) umfasst, die zwischen der E/A-Schaltung und der Dekodiererschaltung gekoppelt ist, wobei die Serien-Parallel-Schaltung (Serial-In-Parallel-Out, SIPO) eingerichtet ist, um sechzehn Bits auf einem Satz von Eingabesteuerlinien anzunehmen und achtzig Bits einer Befehlsadressensequenz abzugeben und die achtzig-Bit-Befehlsadressensequenz an die Dekodiererschaltung zu liefern.
  14. System nach Anspruch 10, wobei die Befehlsadressensequenz mit fester Länge ein Befehlsadressenfeld, ein Befehlsbetriebscode-Feld, ein oder mehrere Präfixfelder und ein oder mehrere Suffixfelder umfasst.
  15. System nach Anspruch 14, wobei das Befehlsadressenfeld fünf Bytes umfasst, das Befehlsbetriebscode-Feld ein Byte umfasst, das eine oder die mehreren Präfixfelder drei Bytes umfassen und das eine oder die mehreren Suffixfelder ein Byte umfassen.
  16. System nach Anspruch 10, wobei der Schnittstellenmanager der Speichersteuerung eingerichtet ist, um als Reaktion auf einen Speicherbefehl der Befehlsadressensequenz mit fester Länge, die einen Lesebefehl umfasst, einen Wert für eines von dem einen oder mehreren Präfixfeldern einzustellen.
  17. Verfahren, das Folgendes umfasst: Empfangen einer Befehlssequenz mit fester Länge von einer Speichersteuerung unter Verwendung eines Protokolls mit doppelter Datenrate über einen Datenbus, als Reaktion auf ein Befehlssteuersignal, wobei das Befehlssteuersignal eingerichtet ist, um zu erkennen, ob Daten auf dem Datenbus einen Speicherbefehl oder Daten darstellen; Dekodieren der Befehlssequenz mit fester Länge, um einen Speicherbefehl zu bestimmen, der durch die Befehlssequenz mit fester Länge identifiziert wird; und Ausführen des Speicherbefehls, der durch die Befehlssequenz mit fester Länge definiert ist.
  18. Verfahren nach Anspruch 17, wobei das Dekodieren der Befehlssequenz mit fester Länge Folgendes umfasst: Weiterleiten der Befehlssequenz mit fester Länge durch eine Serien-Parallel-Schaltung (Serial-In-Parallel-Out), um fünf 16-Bit-Befehlssequenzen mit fester Länge in eine achtzig-Bit-Befehlsadressensequenz umzuwandeln; und Lenken der achtzig-Bit-Befehlsadressensequenz durch einen Lesebefehlsdekodierer, der eingerichtet ist, um einen Lesebefehl umzusetzen, als Reaktion auf die achtzig-Bit-Befehlsadressensequenz, die einen Wert umfasst, der anzeigt, dass ein Speicherbefehl der achtzig-Bit-Befehlsadressensequenz ein Lesebefehl ist.
  19. Verfahren nach Anspruch 18, das ferner das Leiten der einen achtzig-Bit-Befehlsadressensequenz durch einen Nicht-Lesebefehlsdekodierer umfasst, als Reaktion auf die achtzig-Bit-Befehlsadressensequenz, die den Wert umfasst, der anzeigt, dass der Speicherbefehl der achtzig-Bit-Befehlsadressensequenz nicht der Lesebefehl ist.
  20. Verfahren nach Anspruch 18, wobei eine Befehlsadressensequenz mit fester Länge ein Fünf-Byte-Befehlsadressenfeld, ein Feld für einen Ein-Byte-Befehlsbetriebscode, drei Bytes für jedes von drei Präfixfeldern und ein Byte für ein Suffixfeld umfasst.
DE102020116032.1A 2020-03-25 2020-06-17 Schnittstelle für nichtflüchtige speicher Pending DE102020116032A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/830,128 US11048443B1 (en) 2020-03-25 2020-03-25 Non-volatile memory interface
US16/830,128 2020-03-25

Publications (1)

Publication Number Publication Date
DE102020116032A1 true DE102020116032A1 (de) 2021-09-30

Family

ID=76548102

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020116032.1A Pending DE102020116032A1 (de) 2020-03-25 2020-06-17 Schnittstelle für nichtflüchtige speicher

Country Status (3)

Country Link
US (1) US11048443B1 (de)
CN (1) CN113448498B (de)
DE (1) DE102020116032A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113793635B (zh) * 2021-11-08 2022-04-19 阿里云计算有限公司 存储装置和存储设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160019171A1 (en) 2010-02-23 2016-01-21 Rambus Inc. Time multiplexing at different rates to access different memory types
US20190243700A1 (en) 2018-02-02 2019-08-08 Micron Technology, Inc. Interface for Data Communication Between Chiplets or other Integrated Circuits on an Interposer

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0922393A (ja) 1995-07-06 1997-01-21 Mitsubishi Electric Corp 通信機能を有するワンチップフラッシュメモリ装置
US7600090B2 (en) 2005-11-28 2009-10-06 Atmel Corporation Microcontroller based flash memory digital controller system
US7802061B2 (en) 2006-12-21 2010-09-21 Intel Corporation Command-based control of NAND flash memory
KR100851545B1 (ko) 2006-12-29 2008-08-11 삼성전자주식회사 커맨드 및 어드레스 핀을 갖는 낸드 플래시 메모리 및그것을 포함한 플래시 메모리 시스템
CN101578614A (zh) * 2007-01-30 2009-11-11 松下电器产业株式会社 非易失性存储装置、非易失性存储系统及存取装置
US7916557B2 (en) 2007-04-25 2011-03-29 Micron Technology, Inc. NAND interface
US8760945B2 (en) 2011-03-28 2014-06-24 Samsung Electronics Co., Ltd. Memory devices, systems and methods employing command/address calibration
KR101991905B1 (ko) * 2012-07-19 2019-06-24 삼성전자주식회사 불휘발성 메모리, 불휘발성 메모리의 읽기 방법 및 불휘발성 메모리를 포함하는 메모리 시스템
CN104424045B (zh) * 2013-09-09 2017-07-28 群联电子股份有限公司 解码方法、存储器储存装置与非易失性存储器模块
CN105023613B (zh) * 2014-04-22 2019-06-14 群联电子股份有限公司 解码方法、存储器存储装置及存储器控制电路单元
US10381327B2 (en) * 2016-10-06 2019-08-13 Sandisk Technologies Llc Non-volatile memory system with wide I/O memory die
US10528255B2 (en) * 2016-11-11 2020-01-07 Sandisk Technologies Llc Interface for non-volatile memory
CN108345808B (zh) * 2017-01-25 2021-12-31 三星电子株式会社 非易失性存储器件和包括非易失性存储器件的固态驱动器
TWI625620B (zh) * 2017-05-12 2018-06-01 威盛電子股份有限公司 非揮發性記憶體裝置及其讀取方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160019171A1 (en) 2010-02-23 2016-01-21 Rambus Inc. Time multiplexing at different rates to access different memory types
US20190243700A1 (en) 2018-02-02 2019-08-08 Micron Technology, Inc. Interface for Data Communication Between Chiplets or other Integrated Circuits on an Interposer

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
„Schwelle" auf Merriam-Webster.com. Merriam-Webster, 2019. Web. 14. November 2019

Also Published As

Publication number Publication date
US11048443B1 (en) 2021-06-29
CN113448498A (zh) 2021-09-28
CN113448498B (zh) 2024-04-16

Similar Documents

Publication Publication Date Title
DE102020116362B3 (de) Dynamische zuweisung von unterblöcken
DE112020007201T5 (de) Speicherzuordnung für verteilte Verarbeitungsvorrichtungen
DE102019122363A1 (de) Programmierbare doppelreihige arbeitsspeichermodul-beschleunigerkarte (dimm-beschleunigerkarte)
DE102018006890A1 (de) Technologien zur Verarbeitung von Netzpaketen durch einen intelligenten Netzwerk-Schnittstellenkontroller
DE112018000181T5 (de) System und verfahren für die schnelle ausführung von kapselinternen befehlen
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE112018004798T5 (de) Technologien für ein bereitstellen von effizientem speicherzugriff auf einem beschleunigerschlitten
DE112018000228T5 (de) System und Verfahren zur Verarbeitung und Arbitrierung von Übermittlungs- und Beendigungswarteschlangen
DE102017128939A1 (de) System und Verfahren zum dynamischen und adaptiven Zusammenführen von Interrupts
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE112017003334T5 (de) Lastreduzierte nichtflüchtige speicherschnittstelle
DE112018004322T5 (de) Nichtflüchtiges speichersystem mit hostseitiger befehlseinspeisung
DE102020103570A1 (de) Host-definierte bandbreitenzuweisung für ssd-aufgaben
DE112019000147T5 (de) Partielle rücksetzung einer speichersteuerung
DE112007000862T5 (de) Multiplexieren einer Parallelbus-Schnittstelle und einer Flash Memory-Schnittstelle
DE202010017668U1 (de) Befehls- und Interrupt-Gruppierung bei einer Datenspeichervorrichtung
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102015106656A1 (de) Kombinierte auswahl-schreibtechnik für kreuzpunktspeicher
DE102021107475A1 (de) Kalibrieren von leseschwellenwerten eines nichtflüchtigen speichers
DE102016204283A1 (de) Datenspeichervorrichtungen, Datenverarbeitungssysteme, die diese aufweisen, Verfahren zum Betreiben und Verfahren zum Herstellen derselben.
DE112019000161T5 (de) Speicher-cache-verwaltung
DE102021118940A1 (de) Speichersteuerung und speichereinrichtung mit derselben
DE102019127285A1 (de) Verfahren und Vorrichtung zur sicheren Datenzentrumsüberbrückung in einem Multi-Tenant-System
DE102021130544A1 (de) Leistungsverwaltung über mehrere pakete von speicherchips
DE102022106019A1 (de) Verfahren und vorrichtung für ein gegendrucksignal bei einer speicherchip-rowhammer-bedrohung und hostseitige reaktion

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

Representative=s name: MURGITROYD & COMPANY, DE