DE102018115199A1 - Verfahren zur maximierung der frequenz während einer datenintegritätsprüfung auf einem physischen schnittstellenbus - Google Patents

Verfahren zur maximierung der frequenz während einer datenintegritätsprüfung auf einem physischen schnittstellenbus Download PDF

Info

Publication number
DE102018115199A1
DE102018115199A1 DE102018115199.3A DE102018115199A DE102018115199A1 DE 102018115199 A1 DE102018115199 A1 DE 102018115199A1 DE 102018115199 A DE102018115199 A DE 102018115199A DE 102018115199 A1 DE102018115199 A1 DE 102018115199A1
Authority
DE
Germany
Prior art keywords
frequency
memory
interface
data
control unit
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
DE102018115199.3A
Other languages
English (en)
Inventor
Yonatan Tzafrir
Mordekhay Zehavi
Mahmud Asfur
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.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102018115199A1 publication Critical patent/DE102018115199A1/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/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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
    • G06F13/1673Details of memory controller using buffers
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0656Data buffering 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/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/0008General problems related to the reading of electronic memory record carriers, independent of its reading method, e.g. power transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K2207/00Other aspects
    • G06K2207/1018Source control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Eine Datenspeichervorrichtung weist eine Steuereinheit und einen Speicher auf. Die Steuereinheit weist eine Host-Schnittstelle und eine Speicherschnittstelle auf. Die Steuereinheit nimmt eine erste Operation an dem Speicher durch die Speicherschnittstelle bei einer ersten Frequenz vor, die der Host-Schnittstelle zugeordnet ist, um ein erstes Datenmuster zu bestimmen. Die Steuereinheit nimmt eine Leseoperation an dem Speicher durch die Speicherschnittstelle bei einer zweiten Frequenz vor, um ein zweites Datenmuster zu bestimmen. Die Steuereinheit ändert die erste Frequenz um einen vorherbestimmten Betrag, bis die erste Frequenz gleich ist einer maximalen Betriebsfrequenz mit einem assoziierten Risiko einer Setup/Hold-Verletzung, das unter einer vorherbestimmten Wahrscheinlichkeit liegt.

Description

  • HINTERGRUND DER OFFENBARUNG
  • Gebiet der Offenbarung
  • Die Offenbarung betrifft allgemein Datenspeichervorrichtungen und spezifischer einen Schnittstellenbus zwischen Komponenten einer Datenspeichervorrichtung.
  • Beschreibung der verwandten Technik
  • Während des Betriebs einer Datenspeichervorrichtung können Daten zwischen einer Steuereinheit und einem Speicher der Datenspeichervorrichtu ng über einen Datenbus kommuniziert werden, der die Steuereinheit und den Speicher koppelt. Beispielsweise kann oder können ein oder mehrere Datenwerte an den Datenbus bei einer Transferrate auf der Basis einer Frequenz eines Taktsignals geliefert oder von diesem empfangen werden. Zur Veranschaulichung kann ein erster Datenwert an den Datenbus von der Steuereinheit ansprechend auf eine Anstiegskante des Taktsignals geliefert werden. Als weiteres Beispiel kann ein zweiter Datenwert von dem Datenbus empfangen und in der Steuereinheit ansprechend auf eine Abfallkante des Taktsignals gespeichert werden.
  • Eine Datenspeichervorrichtung kann ausgebildet sein, eine feste Taktfrequenz aufzuweisen, die ausreichende Setup- und Hold-Zeiten gestattet, um eine zuverlässige Übertragung und Abtastung von Daten über eine Busschnittstelle zwischen Integrationsschaltungen (z.B. einer Steuereinheit und einem nicht-flüchtigen Speicher) zu ermöglichen. Typischerweise werden große Spielräume in Bezug auf die Taktfrequenz vorgesehen, um Worst Case-Szenarien zu berücksichtigen (z.B. Worst Case-Siliciumprozessgeschwindigkeit, Systemspannung und Systemtemperatur- (PVT-) Bedingungen), die während des Betriebs der Datenspeichervorrichtung auftreten können. Das Einstellen der Taktfrequenz (z.B. einer Datentransferrate) auf den festgelegten Wert kann Fehler vermeiden, die auftreten können, wenn die Datentransferrate in solchen Worst Case-Szenarien zu hoch ist. Durch das Betreiben der Datenspeichervorrichtung (z.B. des Busses) bei einer Taktfrequenz auf der Basis der Worst Case-Szenarien kann jedoch eine Datentransferrate (z.B. eine Busgeschwindigkeit) signifikant niedriger sein als eine theoretische maximale Datentransferrate des Busses.
  • Daher besteht im Stand der Technik ein Bedarf an einer Datenspeichervorrichtung, die eine einstellbare Taktfrequenz aufweist.
  • ZUSAMMENFASSUNG DER OFFENBARUNG
  • Die vorliegende Offenbarung betrifft allgemein eine Datenspeichervorrichtung, die eine Steuereinheit und einen Speicher aufweist. Die Steuereinheit weist eine Host-Schnittstelle und eine Speicherschnittstelle auf. Die Steuereinheit nimmt eine erste Operation an dem Speicher durch die Speicherschnittstelle bei einer ersten Frequenz vor, die der Host-Schnittstelle zugeordnet ist, um ein erstes Datenmuster zu bestimmen. Die Steuereinheit nimmt eine Leseoperation an dem Speicher durch die Speicherschnittstelle bei einer zweiten Frequenz vor, um ein zweites Datenmuster zu bestimmen. Die Steuereinheit ändert die erste Frequenz um einen vorherbestimmten Betrag, bis die erste Frequenz gleich ist einer maximalen Betriebsfrequenz mit einem assoziierten Risiko einer Setup/Hold-Verletzung, das unter einer vorherbestimmten Wahrscheinlichkeit liegt.
  • Ansprechend darauf, dass das erste Muster gleich dem zweiten Muster ist, erhöht die Steuereinheit die erste Frequenz um einen vorherbestimmten Betrag. Ansprechend darauf, dass das erste Muster nicht gleich dem zweiten Muster ist, verringert die Steuereinheit die erste Frequenz um den vorherbestimmten Betrag. Der vorherbestimmte Betrag kann auf einer Setup- und Hold-Zeit basieren, die für die Leseoperation erforderlich sind. Der vorherbestimmte Betrag kann auf mindestens einer von einer Änderung der Betriebsspannung, Betriebstemperatur oder Last der Host-Schnittstelle basieren.
  • In einer Ausführungsform beendet die Steuereinheit das Ändern der ersten Frequenz, wenn die erste Frequenz gleich einer maximalen Betriebsfrequenz ist. Das Ändern der ersten Frequenz kann während einer Leerlaufzeit der Host-Schnittstelle auftreten. Das Ändern der ersten Frequenz kann nach einem vorherbestimmten Zeitbetrag auftreten, nachdem die Steuereinheit die Bedienung einer Unterbrechung vollendet hat. Die zweite Frequenz ist eine Relaxationsfrequenz, die niedriger ist als eine maximale Betriebsfrequenz.
  • In einer Ausführungsform ist die erste Operation eine Schreiboperation oder eine Leseoperation.
  • Figurenliste
  • Für das detaillierte Verständnis der oben angeführten Merkmale der vorliegenden Offenbarung kann eine genauere Beschreibung der Offenbarung, die vorstehend kurz zusammengefasst wurde, mit Bezugnahme auf Ausführungsformen erfolgen, von denen einige in den beigeschlossenen Zeichnungen veranschaulicht sind. Es ist jedoch klar, dass die beigeschlossenen Zeichnungen nur typische Ausführungsformen dieser Offenbarung veranschaulichen und daher nicht als ihren Umfang einschränkend anzusehen sind, da die Offenbarung andere gleichermaßen wirksame Ausführungsformen zulassen kann.
    • 1 ist ein Blockbild eines veranschaulichenden Beispiels eines Datenspeichersystems, das eine Steuereinheit aufweist, die eine Schnittstellen-Zeiteinstellungsengine aufweist.
    • 2 ist ein Blockbild eines veranschaulichenden Beispiels eines Speichermoduls, das eine Mehrzahl von Datenspeichersystemen aufweist, die jeweils eine Steuereinheit mit einer Schnittstellen-Zeiteinstellungsengine aufweisen können.
    • 3 ist ein Blockbild eines veranschaulichenden Beispiels eines hierarchischen Datenspeichersystems, das eine Mehrzahl von Steuereinheiten aufweist, die jeweils eine Schnittstellen-Zeiteinstellungsengine aufweisen können.
    • 4 ist ein Blockbild, das ein Beispiel eines Datenspeichersystems veranschaulicht, welches eine Steuereinheit aufweist, die eine Schnittstellen-Zeiteinstellungsengine aufweisen kann.
    • 5 ist ein Blockbild, das Beispiele von Komponenten eines nicht-flüchtigen Speicher-Chips veranschaulicht, der mit einer Steuereinheit gekoppelt sein kann, die eine Schnittstellen-Zeiteinstellungsengine aufweist.
    • 6 ist ein Blockbild eines besonderen veranschaulichenden Beispiels eines Datenspeichersystems, das eine Datenspeichervorrichtung aufweist, die eine Schnittstellen-Zeiteinstellungsengine aufweist.
    • 7 ist ein Flussdiagramm eines veranschaulichenden Beispiels eines Verfahrens zur Einstellung eines Frequenzparameters eines Schnittstellenbusses.
  • Zur Erleichterung des Verständnisses wurden identische Bezugszahlen verwendet, wo möglich, um identische Elemente zu bezeichnen, welche die Figuren gemeinsam haben. Es ist vorgesehen, dass in einer Ausführungsform geoffenbarte Elemente vorteilhaft in anderen Ausführungsformen ohne speziellen erneuten Hinweis verwendet werden können
  • DETAILLIERTE BESCHREIBUNG
  • Besondere Aspekte der vorliegenden Offenbarung werden im Nachstehenden mit Bezugnahme auf die Zeichnungen beschrieben. In der Beschreibung werden gemeinsame Merkmale mit gemeinsamen Bezugszahlen bezeichnet. Obwohl bestimmte Beispiele hier mit Bezugnahme auf eine Datenspeichervorrichtung beschrieben werden, ist es klar, dass hier beschriebene Techniken auf andere Implementierungen anwendbar sind. Ferner ist es klar, dass bestimmte Zahlenausdrücke (z.B. „erste/r/s“ oder „zweite/r/s“) zur einfachen Bezugnahme vorgesehen werden können und nicht unbedingt physische Charakteristiken oder eine Reihenfolge implizieren. Daher, wie hier verwendet, zeigt ein Zahlenausdruck (z.B. „erste/r/s“, „zweite/r/s“, „dritte/r/s“ usw.), der verwendet wird, um ein Element zu modifizieren, wie eine Struktur, eine Komponente eine Operation usw., nicht unbedingt eine Priorität oder Reihenfolge des Elements in Bezug auf ein anderes Element an, sondern unterscheidet stattdessen das Element von dem anderen Element mit demselben Namen (jedoch zur Verwendung des Zahlenausdrucks). Zusätzlich, wie hier verwendet, können unbestimmte Artikel („ein/e/r“) „ein/e/n oder mehrere“ statt „ein/e einzelne/s/r“ anzeigen. Ferner kann eine Operation, die „basierend auf“ einer Bedingung oder einem Ereignis vorgenommen wird, auch auf der Basis von einer oder mehreren anderen Bedingungen oder Ereignissen vorgenommen werden, die nicht explizit angeführt sind. Wie hier verwendet, kann „beispielhaft“ ein Beispiel, eine Implementierung und/oder einen Aspekt anzeigen und ist nicht als einschränkend oder so auszulegen, dass eine Präferenz oder ein bevorzugtes Beispiel, eine Implementierung und/oder ein Aspekt angezeigt wird.
  • Die vorliegende Offenbarung beschreibt Systeme und Verfahren zur Identifikation eines Risikos einer Setup/Hold-Verletzung, das einer Datenbusschnittstelle zugeordnet ist, und zur Einstellung einer Frequenz eines Taktsignals basierend auf dem identifizierten Risiko. Eine Datenspeichervorrichtung weist eine Steuereinheit und einen Arbeitsspeicher auf. Die Steuereinheit weist eine Host-Schnittstelle und eine Arbeitsspeicherschnittstelle auf. Die Steuereinheit nimmt eine erste Operation an dem Speicher durch die Speicherschnittstelle bei einer ersten Frequenz vor, die der Host-Schnittstelle zugeordnet ist, um ein erstes Datenmuster zu bestimmen. Die Steuereinheit nimmt eine Leseoperation an dem Speicher durch die Speicherschnittstelle bei einer zweiten Frequenz vor, um ein zweites Datenmuster zu bestimmen. Ansprechend darauf, dass das erste Muster gleich dem zweiten Muster ist, erhöht die Steuereinheit die erste Frequenz um einen vorherbestimmten Betrag. Ansprechend darauf, dass das erste Muster nicht gleich dem zweiten Muster ist, verringert die Steuereinheit die erste Frequenz um den vorherbestimmten Betrag. Die Vornahme der ersten Operation, die Vornahme der Leseoperation und die Erhöhung oder Verringerung der ersten Frequenz werden wiederholt, bis die erste Frequenz gleich ist einer maximalen Betriebsfrequenz mit einem assoziierten Risiko einer Setup/Hold-Verletzung, das unter einer vorherbestimmten Wahrscheinlichkeit liegt.
  • Durch das Variieren der Betriebsfreqeunz um einen oder mehrere vorherbestimmte Beträge wird ein Echtzeit- (d.h. „fliegendes“) Maß eines Risikos von Setup- und Hold-Zeitverletzungen geliefert. Das Echtzeit-Maß kann einen Betrieb der Datenbusschnittstelle (z.B. eines Busses) bei einer „maximal“ zuverlässigen Taktfrequenz ermöglichen. Beispielsweise kann die „fliegende“ Überwachung von Busoperationen eine Echtzeit-Warnung einer sich nähernden Bedingung einer Setup-Zeitverletzung oder einer Hold-Zeitverletzung geben. Ansprechend auf die Identifikation eines Risikos einer Setup/Hold-Zeitverletzung kann die Betriebsfrequenz eingestellt werden, um die Setup/Hold-Zeitverletzung zu vermeiden. Durch das Einstellen der Frequenz des Taktsignals kann die Datenbusschnittstelle zuverlässig mit einer „maximalen“ Frequenz (ohne Setup/Hold-Verletzungen) während verschiedener Betriebsbedingungen arbeiten, die aus sich ändernden PVT-Bedingungen resultieren. Demgemäß kann die Datenbusschnittstelle bei einer Rate arbeiten, die höher ist als eine Rate, die für ein Worst Case-Szenario geeignet ist, wodurch eine Gesamtleistung der Datenbusschnittstelle verbessert wird.
  • Speichersysteme, die zur Verwendung bei der Implementierung von Aspekten der Offenbarung geeignet sind, werden in 1 bis 3 gezeigt. 1 ist ein Blockbild, das ein Datenspeichersystem 100 gemäß einem Beispiel des hier beschriebenen Gegenstands veranschaulicht. Mit Bezugnahme auf 1 umfasst das Datenspeichersystem 100 eine Steuereinheit 102 und einen nicht-flüchtigen Speicher, der aus einem oder mehreren nicht-flüchtigen Speicher-Chips 104 bestehen kann. Wie hier verwendet, bezieht sich der Ausdruck „Speicher-Chip“ auf die Ansammlung nicht-flüchtiger Speicherzellen und zugeordnete Schaltungen zur Verwaltung des physischen Betriebs dieser nicht-flüchtigen Speicherzellen, die auf einem einzelnen Halbleitersubstrat gebildet sind. Die Steuereinheit 102 bildet eine Schnittstelle mit einem Host-System und überträgt Befehlssequenzen für Lese-, Programm- und Löschoperationen an den nicht-flüchtigen Speicher-Chip 104. Die Steuereinheit kann eine Schnittstellen-Zeiteinstellungsengine 134 aufweisen.
  • Die Steuereinheit 102 (die eine Flash-Speichersteuereinheit sein kann) kann die Form von Verarbeitungsschaltungen, einem Mikroprozessor oder Prozessor und einem computerlesbaren Medium, das einen computerlesbaren Programmcode (z.B. Firmware) speichert, der beispielsweise von dem (Mikro)Prozessor ausgeführt werden kann, Logik-Gates, Schaltern, einer anwendungsspezifischen Integrationsschaltung (ASIC), einer programmierbaren Logiksteuereinheit und einer eingebetteten Mikrosteuereinheit annehmen. Die Steuereinheit 102 kann mit Hardware und/oder Firmware ausgelegt sein, um die verschiedenen Funktionen vorzunehmen, die nachstehend beschrieben und in den Flussdiagrammen gezeigt werden. Auch können einige der Komponenten, die als intern in der Steuereinheit gezeigt sind, extern von der Steuereinheit gespeichert werden, und andere Komponenten können verwendet werden. Zusätzlich könnte die Phrase „operativ in Kommunikation mit“ „direkt in Kommunikation mit“ oder „indirekt (verdrahtet oder drahtlos) in Kommunikation mit“ durch eine oder mehrere Komponenten bedeuten, die hier gezeigt oder beschrieben sein können oder nicht.
  • Wie hier verwendet, ist eine Flash-Speichersteuereinheit eine Vorrichtung, die Daten verwaltet, welche auf dem Flash-Speicher gespeichert sind, und mit einem Host, wie einem Computer oder einer elektronischen Vorrichtung, kommuniziert. Eine Flash-Speichersteuereinheit kann verschiedene Funktionalitäten zusätzlich zu der hier beschriebenen spezifischen Funktionalität aufweisen. Beispielsweise kann die Flash-Speichersteuereinheit den Flash-Speicher formatieren, schlechte Flash-Speicherzellen ausmappen und Ersatzzellen zuordnen, um für zukünftige ausgefallene Zellen ersetzt zu werden. Irgendein Teil der Ersatzzellen kann verwendet werden, um Firmware zu halten, um die Flash-Speichersteuereinheit zu betreiben und andere Merkmale zu implementieren. Wenn im Betrieb ein Host Daten aus dem Flash-Speicher zu lesen oder in diesen zu schreiben hat, kommuniziert der Host mit der Flash-Speichersteuereinheit. Wenn der Host eine logische Adresse liefert, in der Daten zu lesen/zu schreiben sind, kann die Flash-Speichersteuereinheit die logische Adresse, die von dem Host empfangen wird, in eine physische Adresse im Flash-Speicher umwandeln. (Alternativ dazu kann der Host die physische Adresse liefern). Die Flash-Speichersteuereinheit kann auch verschiedene Speicherverwaltungsfunktionen vornehmen, wie, jedoch nicht beschränkt auf Wear Leveling (Verteilen von Schreibvorgängen, um eine Abnutzung spezifischer Speicherblöcke zu vermeiden, in die ansonsten mehrfach geschrieben wird) und Müllsammlung (nachdem ein Block voll ist, Bewegen nur der gültigen Datenseiten zu einem neuen Block, so dass der volle Block gelöscht und erneut verwendet werden kann).
  • Der nicht-flüchtige Speicher-Chip 104 kann ein beliebiges nicht-flüchtiges Speichermedium aufweisen, einschließlich NAND-Flash-Speicherzellen und/oder NOR-Flash-Speicherzellen. Die Speicherzellen können die Form von Solid State- (z.B. Flash-) Speicherzellen annehmen und können einmal programmierbar, einige Male programmierbar oder viele Male programmierbar sein. Die Speicherzellen können auch Single Level-Zellen (SLC), Multiple Level-Zellen (MLC), Triple Level-Zellen (TLC) sein oder andere Speicherzellen-Level-Technologien verwenden, die derzeit bekannt sind oder später entwickelt werden. Auch können die Speicherzellen in einer zweidimensionalen oder dreidimensionalen Weise hergestellt werden.
  • Die Schnittstelle zwischen der Steuereinheit 102 und dem nicht-flüchtigen Speicher-Chip 104 kann eine beliebige geeignete Flash-Schnittstelle sein, wie Toggle Mode 200, 400 oder 800. In einer Ausführungsform kann das Datenspeichersystem 100 ein kartenbasiertes System sein, wie eine Secure Digital- (SD-) oder eine Micro Secure Digital- (micro-SD-) Karte. In einer alternativen Ausführungsform kann das Datenspeichersystem 100 ein Teil eines eingebetteten Speichersystems sein.
  • Obwohl in dem in 1 veranschaulichten Beispiel das Datenspeichersystem 100 einen einzelnen Kanal zwischen der Steuereinheit 102 und dem nicht-flüchtigen Speicher-Chip 104 aufweist, ist der hier beschriebene Gegenstand nicht darauf beschränkt, einen einzelnen Speicherkanal aufzuweisen. Beispielsweise können in einigen NAND-Speichersystemarchitekturen (wie den in 2 und 3 gezeigten) 2, 4, 8 oder mehr NAND-Kanäle zwischen der Steuereinheit und der NAND-Speichervorrichtung existieren, in Abhängigkeit von Fähigkeiten der Steuereinheit. In beliebigen der hier beschriebenen Ausführungsformen kann mehr als ein einzelner Kanal zwischen der Steuereinheit 102 und dem nicht-flüchtigen Speicher-Chip 104 existieren, auch wenn ein einzelner Kanal in den Zeichnungen gezeigt ist.
  • 2 veranschaulicht ein Speichermodul 200, das eine Mehrzahl von Datenspeichersystemen 100 aufweist. Als solches kann das Speichermodul 200 eine Steuereinheit 202 aufweisen, die eine Schnittstelle mit einem Host und mit einem Speichersystem 204 bildet, das eine Mehrzahl von Datenspeichersystemen 100 umfasst. Die Schnittstelle zwischen der Steuereinheit 202 und Datenspeichersystemen 100 kann eine Busschnittstelle sein, wie eine Serial Advanced Technology Attachment- (SATA-) oder Peripheral Component Interface express- (PCIe-) Schnittstelle. Das Speichermodul 200 kann in einer Ausführungsform ein Solid State-Laufwerk (SDD) sein, wie es in tragbaren Rechenvorrichtungen zu finden ist, wie Laptop-Computern und Tablet-Computern. Jede Steuereinheit 102 von 2 kann eine Schnittstellen-Zeiteinstellungsengine aufweisen, die der Schnittstellen-Zeiteinstellungsengine 134 entspricht. Alternativ dazu oder zusätzlich kann die Steuereinheit 202 eine Schnittstellen-Zeiteinstellungsengine aufweisen, die der Schnittstellen-Zeiteinstellungsengine 134 entspricht.
  • 3 ist ein Blockbild, das ein hierarchisches Speichersystem 300 veranschaulicht. Ein hierarchisches Speichersystem 300 umfasst eine Mehrzahl von Steuereinheiten 304, von denen jede ein jeweiliges Speichersystem 306 steuert. Die Steuereinheiten 304 können auf Speicher innerhalb des hierarchischen Speichersystems 300 über eine Busschnittstelle zugreifen. In einer Ausführungsform kann die Busschnittstelle eine NVMe- oder Faserkanal-über-Ethernet- (FCoE-) Schnittstelle sein. In einer Ausführungsform kann das hierarchische Speichersystem 300, das in 3 veranschaulicht ist, ein auf einem Rack montierbares Massenspeichersystem sein, das für mehrere Host-Computer 302 zugänglich ist, wie es in einem Datencenter oder an einem anderen Ort zu finden ist, wo eine Massenspeicherung notwendig ist. Jede Steuereinheit 202 von 2 kann eine Schnittstellen-Zeiteinstellungsengine aufweisen, die der Schnittstellen-Zeiteinstellungsengine 134 entspricht.
  • 4 ist ein Blockbild, das Beispiele von Komponenten der Steuereinheit 102 detaillierter veranschaulicht. Die Steuereinheit 102 umfasst ein Front End-Modul 408, das eine Schnittstelle mit einem Host bildet, ein Back End-Modul 410, das eine Schnittstelle mit einem oder mehreren nicht-flüchtigen Speicher-Chips 104 bildet, und verschiedene andere Module, die andere Funktionen vornehmen. Ein Modul kann beispielsweise die Form einer gepackten funktionellen Hardware-Einheit, die zur Verwendung mit anderen Komponenten ausgebildet ist, eines Abschnitts eines Programmcodes (z.B. Software oder Firmware), der von einem (Mikro)Prozessor oder Verarbeitungsschaltungen ausgeführt werden kann, die üblicherweise eine bestimmte Funktion verwandter Funktionen vornehmen, oder einer eigenständigen Hardware- oder Software-Komponente, die eine Schnittstelle mit einem größeren System bildet, annehmen.
  • Mit erneuter Bezugnahme auf Module der Steuereinheit 102 verwaltet ein Pufferverwalter/eine Busssteuereinheit 414 Puffer im Speicher mit wahlfreiem Zugriff (RAM) 416 und steuert die interne Busarbitrierung der Steuereinheit 102. Ein Nurlesespeicher (ROM) 418 speichert einen System-Boot-Code. Obwohl sie in 4 als innerhalb der Steuereinheit 102 angeordnet veranschaulicht sind, kann oder können in anderen Ausführungsformen einer oder beide von dem RAM 416 und dem ROM 418 extern von der Steuereinheit 102 angeordnet sein. In noch weiteren Ausführungsformen können Abschnitte des RAM und ROM sowohl innerhalb der Steuereinheit 102 als auch außerhalb der Steuereinheit 102 angeordnet sein.
  • Das Front End-Modul 408 weist eine Host-Schnittstelle 420 und eine physische Schichtschnittstelle (PHY) 422 auf, welche die elektrische Schnittstelle mit dem Host oder einer Steuereinheit der nächsten Ebene vorsehen. Die Wahl des Typs der Host-Schnittstelle 420 kann vom Typ des Speichers abhängig sein, der verwendet wird. Beispiele von Host-Schnittstellen 420 umfassen, sind jedoch nicht beschränkt auf SATA, SATA Express, SAS, Fibre Channel, USB, PCIe und NVMe. Die Host-Schnittstelle 120 erleichtert typischerweise den Transfer für Daten, Steuersignale und Zeitsignale.
  • Das Back End-Modul 410 weist eine Fehlerkorrekturcode- (ECC-) Engine 424 auf, welche die Daten codiert, die von dem Host empfangen werden, und decodiert und fehlerkorrigiert die Daten, die aus dem nicht-flüchtigen Speicher gelesen werden. Ein Befehlssequenzierer 426 generiert Befehlssequenzen, wie Programm- und Löschbefehlssequenzen, um zu dem nicht-flüchtigen Speicher-Chip 104 übertragen zu werden. EinRAID-(Redundant Array of Independent Drives-) Modul 428 verwaltet die Generierung einer RAID-Parität und die Wiederherstellung ausgefallener Daten. Die RAID-Parität kann als zusätzliche Ebene eines Integritätsschutzes für die Daten verwendet werden, die in den nicht-flüchtigen Speicher-Chip 104 geschrieben werden. In einigen Fällen kann das RAID-Modul 428 ein Teil der ECC-Engine 424 sein. Eine Speicherschnittstelle 430 liefert die Befehlssequenzen an den nicht-flüchtigen Speicher-Chip 104 und empfängt Statusinformationen von dem nicht-flüchtigen Speicher-Chip 104. Beispielsweise kann die Speicherschnittstelle 430 eine Schnittstelle mit doppelter Datenrate (DDR) sein, wie eine Toggle Mode 200-, 400- oder 800-Schnittstelle. Eine Flash-Steuerschicht 432 steuert den Gesamtbetrieb des Back End-Moduls 410. Das Back End-Modul 410 kann auch die Schnittstellen-Zeiteinstellungsengine 434 aufweisen.
  • Zusätzliche Komponenten des Datenspeichersystems 100, die in 4 veranschaulicht sind, umfassen ein Energieverwaltungsmodul 412 und eine Medienverwaltungsschicht 438, die ein Wear Leveling von Speicherzellen des nicht-flüchtigen Speicher-Chips 104 vornimmt. Das Datenspeichersystem 100 umfasst auch andere diskrete Komponenten 440, wie externe elektrische Schnittstellen, einen externen RAM, Widerstände, Kondensatoren oder andere Komponenten, die eine Schnittstelle mit der Steuereinheit 102 bilden können. In alternativen Ausführungsformen ist oder sind eines oder mehrere der physischen Schichtschnittstelle 422, des RAID-Moduls 128, der Medienverwaltungsschicht 138 und des Pufferverwalters/der Bussteuereinheit 114 optionale Komponenten, die von der Steuereinheit 102 weggelassen sind.
  • 5 ist ein Blockbild, das Beispiele von Komponenten des nicht-flüchtigen Speicher-Chips 104 detaillierter zeigt. Der nicht-flüchtige Speicher-Chip 104 weist periphere Schaltungen 541 und eine nicht-flüchtige Speicheranordnung 524 auf. Die nicht-flüchtige Speicheranordnung 542 umfasst die nicht-flüchtigen Speicherzellen, die verwendet werden, um Daten zu speichern. Die nicht-flüchtigen Speicherzellen können beliebige geeignete nicht-flüchtige Speicherzellen sein, die NAND-Flash-Speicherzellen und/oder NOR-Flash-Speicherzellen in einer zweidimensionalen und/oder dreidimensionalen Auslegung umfassen. Die peripheren Schaltungen 541 umfassen eine Zustandsmaschine 552, die Statusinformationen an die Steuereinheit 102 liefert, welche die Schnittstellen-Zeiteinstellungsengine 134 aufweisen kann. Die peripheren Schaltungen 541 können auch ein Energieverwaltungs- oder Datenlatch-Steuermodul 554 aufweisen. Der nicht-flüchtige Speicher-Chip 104 umfasst ferner diskrete Komponenten 540, einen Adressendecodierer 548, einen Adressendecodierer 550 und einen Daten-Cache 556, der Daten cacht.
  • 6 stellt ein veranschaulichendes Beispiel eines Datenspeichersystems 600 dar. Das Datenspeichersystem 600 umfasst eine Datenspeichervorrichtung 602 (z.B. das Datenspeichersystem 100) und eine Host-Vorrichtung 670 (z.B. den Host 302).
  • Die Datenspeichervorrichtung 602 kann eine Speichervorrichtung aufweisen, wie eine Speichervorrichtung 603. Die Speichervorrichtung 603 kann einen oder mehrere Speicher-Chips (z.B. einen Speicher-Chip, zwei Speicher-Chips, acht Speicher-Chips oder eine andere Anzahl von Speicher-Chips) aufweisen. Zur weiteren Veranschaulichung kann die Speichervorrichtung 603 den nicht-flüchtigen Speicher-Chip 104 aufweisen. Die Speichervorrichtung 603 weist einen Speicher 604 auf, wie einen nicht-flüchtigen Speicher von Speicherelementen, die in einem Speicher-Chip der Speichervorrichtung 603 enthalten sind. Beispielsweise kann der Speicher 604 einen Flash-Speicher, wie einen NAND-Flash-Speicher, oder einen resistiven Speicher, wie einen resistiven Speicher mit wahlfreiem Zugriff (ReRAM), als veranschaulichende Beispiele umfassen. Der Speicher 604 kann eine dreidimensionale (3D) Speicherauslegung aufweisen. Als Beispiel kann der Speicher 604 eine 3D vertikale Bitleitungs- (VBL-) Auslegung aufweisen. In einer besonderen Implementierung ist der Speicher 604 ein nicht-flüchtiger Speicher mit einer 3D Speicherauslegung, die monolithisch in einer oder mehreren physischen Ebenen von Anordnungen von Speicherzellen mit einem aktiven Bereich gebildet ist, der über einem Siliciumsubstrat angeordnet ist. Alternativ dazu kann der Speicher 604 eine andere Auslegung aufweisen, wie eine zweidimensionale (2D) Speicherauslegung oder eine nicht-monolithische 3D Speicherauslegung (z.B. eine gestapelte 3D Chip-Speicherauslegung).
  • Der Speicher 604 kann eine oder mehrere Regionen von Speicherelementen (hier auch als Speicherzellen bezeichnet) aufweisen, wie eine Speicherregion 608. Ein Beispiel einer Speicherregion ist ein Block, wie eine NAND-Flash-Löschgruppe von Speicherelementen. Ein weiteres Beispiel einer Speicherregion 608 ist eine Wortleitung von Speicherelementen. Eine Wortleitung kann als Single-Level-Cell- (SLC-) Wortleitung oder als Multi-Level-Cell- (MLC-) Wortleitung funktionieren (wie eine Drei-Bits-pro-Zelle-Wortleitung oder eine Zwei-Bits-pro-Zelle-Wortleitung, als veranschaulichende Beispiele). Jedes Speicherelement des Speichers 604 kann in einen Zustand programmierbar sein (z.B. eine Schwellenspannung in einer Flash-Auslegung oder einen resistiven Zustand in einer resistiven Speicherauslegung), der einen oder mehrere Bitwerte anzeigt.
  • Die Speichervorrichtung 603 weist ferner Lese/Schreibschaltungen 610 auf. Die Lese/Schreibschaltungen 610 sind ausgelegt, Werte in Speicherelemente des Speichers 604 zu programmieren und Werte aus Speicherelementen des Speichers 604 abzutasten. Die Speichervorrichtung 603 kann ferner Schaltungen 616 aufweisen (z.B. eine oder mehrere Datenlatches, eine oder mehrere Steuerlatches oder eine Kombination davon).
  • Die Datenspeichervorrichtung 602 kann ferner eine Steuereinheit 630 aufweisen. Die Steuereinheit 630 kann eine erste Schnittstelle 638 (z.B. eine Host-Schnittstelle), eine Fehlerkorrekturcode- (ECC-) Engine 634, eine Zeitgebervorrichtung 636, eine zweite Schnittstelle 632 (z.B. eine Speicherschnittstelle) und einen oder mehrere Spannungsregler 642 aufweisen. Beispielsweise kann die ECC-Engine 634 der ECC-Engine 424 entsprechen, die erste Schnittstelle 638 kann der Host-Schnittstelle 420 entsprechen, und die zweite Schnittstelle 632 kann der Speicherschnittstelle 430 entsprechen. Zur weiteren Veranschaulichung kann die erste Schnittstelle 638 eine oder mehrere Latches aufweisen, um Daten und Befehle von der Host-Vorrichtung 670 zu empfangen, und die zweite Schnittstelle 632 kann einen oder mehrere Bustreiber aufweisen, um Daten und Befehle an die Schaltungen 616 der Speichervorrichtung 603 zu senden. Die Steuereinheit 630 kann eine Dateitabelle 640 speichern (oder darauf zugreifen), wie die Dateizuordnungstabelle (FAT). Die Steuereinheit 630 weist auch die Schnittstellen-Zeiteinstellungsengine 134 auf.
  • Die Host-Vorrichtung 670 kann Schaltungen 672 aufweisen. Beispielsweise können die Schaltungen 672 einen oder mehrere Bustreiber aufweisen. Die Schaltungen 672 können innerhalb eines Prozessors oder einer Steuereinheit der Host-Vorrichtung 670 integriert oder damit gekoppelt sein, wie innerhalb einer Host-Verarbeitungsvorrichtung 674 (z.B. eines Anwendungsprozessors).
  • Die Datenspeichervorrichtung 602 und die Host-Verarbeitungsvorrichtung 674 sind über eine Verbindung 650 (z.B. einen Bus) gekoppelt. Beispielsweise veranschaulicht 6, dass die Verbindung 650 eine oder mehrere Datenleitungen 651, eine oder mehrere Steuerleitungen 652 und eine oder mehrere Zeitsignalleitungen 653 aufweisen kann. Die Verbindung 650 ist mit der ersten Schnittstelle 638 und mit den Schaltungen 672 gekoppelt. In einigen Implementierungen kann die Verbindung 650 die physische Schichtschnittstelle 422 von 4 aufweisen oder damit gekoppelt sein.
  • Die Speichervorrichtung 603 und die Steuereinheit 630 sind über eine Verbindung 620 (z.B. einen Bus) gekoppelt. Beispielsweise veranschaulicht 6, dass die Verbindung 620 eine oder mehrere Datenleitungen 621, eine oder mehrere Steuerleitungen 622 und eine oder mehrere Zeitsignalleitungen 623 aufweisen kann. Die Verbindung 620 ist mit den Schaltungen 616 und mit der zweiten Schnittstelle 632 gekoppelt.
  • In einer veranschaulichenden Implementierung umfasst das Datenspeichersystem 600 ferner eine Energiezufuhrverbindung 673 (z.B. ein „Rail“, um eine Energiezufuhrspannung zu liefern, wie VDD, VCC oder beides). Die Energiezufuhrverbindung 673 kann mit der Speichervorrichtung 603, der Steuereinheit 630 und der Host-Verarbeitungsvorrichtung 674 gekoppelt sein. In Abhängigkeit von der bestimmten Implementierung kann die Energiezufuhrverbindung 673 von einer Batterie (z.B. einer mobilen Vorrichtungsbatterie) oder von einer Energiezufuhrvorrichtung (z.B. einem Transformator), die mit einer Hauptenergiezufuhr gekoppelt sind, versorgt werden. In anderen Implementierungen sind die Speichervorrichtung 603, die Steuereinheit 630 und/oder die Host-Verarbeitungsvorrichtung 674 mit getrennten Energiezufuhrverbindungen verbunden.
  • Im Betrieb ist die Steuereinheit 630 ausgelegt, Daten und Instruktionen von der Host-Verfahren 670 unter Verwendung der ersten Schnittstelle 638 zu empfangen. Beispielsweise kann die Steuereinheit 630 Daten 660 von der Host-Vorrichtung 670 über die erste Schnittstelle 638 empfangen. Zur weiteren Veranschaulichung können die Daten 660 über die eine oder mehrere Datenleitungen 651 in Verbindung mit einer Anforderung für einen Schreibzugriff empfangen werden, die über die eine oder mehrere Steuerleitungen 652 gesendet wird. Die Daten 660 und die Anforderung können von der Steuereinheit 630 auf der Basis eines Zeitsignals 664 empfangen werden (z.B. eines oder mehrerer Taktsignale, eines oder mehrerer Strobe-Signale, eines oder mehrerer Lesefreigabesignale), das über die eine oder mehrere Zeitsignalleitungen 653 empfangen wird. Beispielsweise kann die erste Schnittstelle 638 eine oder mehrere Latches aufweisen, um die Daten 360 auf der Basis des Zeitsignals 664 zu empfangen. Obwohl 6 ein einziges Zeitsignal 664 veranschaulicht, ist es klar, dass mehr als ein Zeitsignal 664 verwendet werden kann (z.B. ein Differentialpaar von Zeitsignalen).
  • Die ECC-Engine 634 kann ausgelegt sein, die Daten 660 zu empfangen und ein oder mehrere ECC-Codewörter auf der Basis der Daten 660 zu generieren. Die ECC-Engine 634 kann einen Hamming-Codierer, einen Reed-Solomon- (RS-) Codierer, einen Bose-Chaudhuri-Hocquenghem- (BCH-) Codierer, einen Paritätsprüfcodierer mit niedriger Dichte (LDPC), einen Turbocodierer, einen Codierer, der ausgelegt ist, Daten gemäß einem oder mehreren anderen ECC-Schemata zu codieren, oder eine Kombinationen davon aufweisen.
  • Die Steuereinheit 630 ist ausgelegt, Daten und Befehle an die Speichervorrichtung 603 unter Verwendung der zweiten Schnittstelle 632 zu senden und Daten von der Speichervorrichtung 603 unter Verwendung der zweiten Schnittstelle 632 zu empfangen. Beispielsweise ist die Steuereinheit 630 ausgelegt, Daten (z.B. ein oder mehrere ECC-Codewörter, die von der ECC-Engine 634 generiert werden) und einen Schreibbefehl (z.B. einen Befehl 624) zu senden, um die Speichervorrichtung 603 zu veranlassen, die Daten in eine spezifische Adresse des Speichers 604 zu speichern. Der Schreibbefehl kann eine physische Adresse eines Abschnitts des Speichers 604 spezifizieren, der die Daten zu speichern hat. Zur weiteren Veranschaulichung kann die Steuereinheit 630 die Daten an die Speichervorrichtung 603 über die eine oder mehrere Datenleitungen 621 in Verbindung mit einem Schreibbefehl senden, der über die eine oder mehrere Steuerleitungen 622 gesendet wird. Die Speichervorrichtung 603 kann die Daten und den Schreibbefehl auf der Basis eines Zeitsignals 626 (z.B. eines oder mehrerer Taktsignale oder eines oder mehrerer Strobe-Signale) empfangen, das von der Steuereinheit 630 über die eine oder mehrere Zeitsignalleitungen 623 geliefert wird. Beispielsweise können die Schaltungen 616 eine oder mehrere Latches aufweisen, die ausgelegt sind, die Daten 660 auf der Basis des Zeitsignals 664 zu empfangen. Die Speichervorrichtung 603 kann die Lese/Schreibschaltungen veranlassen, die Daten in den Speicher 604 auf der Basis des Zeitsignals 626 zu schreiben. Obwohl 6 ein einziges Zeitsignal 626 veranschaulicht, ist es klar, dass mehr als ein Zeitsignal 626 verwendet werden kann (z.B. ein Differentialpaar von Zeitsignalen). Ferner kann in einigen Fällen das Zeitsignal 626 ein Signal umfassen, das von der Speichervorrichtung 603 generiert wird, wie ein Lesefreigabesignal.
  • Die Steuereinheit 630 ist ausgelegt, einen Lesebefehl (z.B. einen Befehl 624) an die Speichervorrichtung 603 zu senden, um auf Daten aus einer spezifizierten Adresse des Speichers 604 zuzugreifen. Beispielsweise kann die Steuereinheit 630 den Lesebefehl an die Speichervorrichtung 603 ansprechend auf den Empfang einer Anforderung für einen Lesezugriff von der Host-Vorrichtung 670 senden. Der Lesebefehl kann die physische Adresse eines Abschnitts des Speichers 604 spezifizieren. Beispielsweise kann der Lesebefehl die physische Adresse eines Abschnitts des Speichers 604 spezifizieren, der die Daten speichert. Ansprechend auf den Lesebefehl kann die Speichervorrichtung 603 die Lese/Schreibschaltungen 610 veranlassen, den Abschnitt des Speichers 604 abzutasten, der die Daten speichert, um abgetastete Daten zu generieren (z.B. eine Darstellung der Daten, die sich in Bezug auf die Daten aufgrund eines oder mehrerer Bitfehler unterscheiden).
  • Die Steuereinheit 630 ist ausgelegt, die abgefühlten Daten von der Speichervorrichtung 603 über die zweite Schnittstelle 632 zu empfangen. Die Steuereinheit 630 kann die abgefühlten Daten in die ECC-Engine 634 eingeben, um einen Decodierprozess zu initiieren, um einen oder mehrere Bitfehler in den abgefühlten Daten (wenn vorhanden) bis zu einer bestimmten Fehlerkorrekturfähigkeit der bestimmten ECC-Technik zu korrigieren. Die ECC-Engine 634 kann einen Hamming-Decodierer, einen RS-Decodierer, einen BCH-Decodierer, einen LDPC-Decodierer, einen Turbodecodierer, einen Decodierer, der ausgelegt ist, Daten gemäß einem oder mehreren anderen ECC-Schemata zu decodieren, oder eine Kombination davon aufweisen.
  • Ansprechend auf die Decodierung der abgefühlten Daten, kann die ECC-Engine 634 die Daten 660 ausgeben. Die Steuereinheit 630 kann die Daten 660 an die Host-Vorrichtung 670 unter Verwendung der ersten Schnittstelle 638 liefern.
  • Die Host-Vorrichtung 670 kann periodisch oder gelegentlich einen Einstellungsprozess initiieren (z.B. einen Frequenzkalibrier- oder „Abstimmungs“prozess), der der ersten Schnittstelle 638 zugeordnet ist. Beispielsweise kann der Einstellungsprozess das Einstellen des Zeitsignals 664 umfassen (z.B. durch das Einstellen der Frequenz des Zeitsignals 664). Während des Einstellungsprozesses kann die Host-Vorrichtung 670 (z.B. unter Verwendung der Schaltungen 672) Daten (z.B. die Daten 660) an die Steuereinheit 630 senden. Die Steuereinheit 630 kann die Daten unter Verwendung der ersten Schnittstelle 638 empfangen, wie unter Verwendung eines oder mehrerer Latches der ersten Schnittstelle 638. Alternativ dazu oder zusätzlich kann der Einstellungsprozess das Empfangen von Daten (z.B. der Daten 660) von der Steuereinheit 630 durch die Host-Vorrichtung 670 umfassen.
  • In einigen Implementierungen initiiert die Host-Vorrichtung 670 den Einstellungsprozess ansprechend auf ein Einschaltereignis am Datenspeichersystem 600. Alternativ dazu oder zusätzlich kann die Host-Vorrichtung 670 den Einstellungsprozess ansprechend auf ein oder mehrere andere Ereignisse initiieren, wie einen Fehler in Verbindung mit einer Anforderung für einen Lesezugriff oder einer Anforderung für einen Schreibzugriff (z.B. aufgrund einer Temperaturänderung oder einer Spannungsänderung am Datenspeichersystem 600) und/oder während einer Leerlaufzeit, die der Datenspeichervorrichtung 602 zugeordnet ist (z.B. wenn die Host-Vorrichtung 670 keinen Lesezugriff oder Schreibzugriff anfordert).
  • Bevor die Host-Vorrichtung 670 den Einstellungsprozess initiiert, kann die Steuereinheit 630 einen Nachricht 662 empfangen, die spezifiziert, dass die Host-Vorrichtung 670 den Einstellungsprozess vorzunehmen hat. Beispielsweise veranschaulicht 6, dass die Steuereinheit 630 die Nachricht 662 über die eine oder die mehreren Steuerleitungen 652 empfangen kann. In anderen Implementierungen kann die Steuereinheit 630 die Nachricht 662 über eine andere Technik empfangen (z.B. über die eine oder mehrere Datenleitungen 651 oder über einen dedizierten Bus oder eine Verbindung, als veranschaulichende Beispiele).
  • In einigen Implementierungen befolgt die Nachricht 662 ein Schnittstellenprotokoll, wie ein Schnittstellenprotokoll gemäß einem Industriestandard. Beispielsweise kann die erste Schnittstelle 638 einen MultiMedia Card- (MMC-) Standard befolgen, wie einen eingebetteten MultiMedia Card- (eMMC-) Standard. In diesem Fall kann die Nachricht 662 einen Befehl aufweisen, der einen solchen MMC- oder eMMC-Standard befolgt. Als weiteres Beispiel kann die erste Schnittstelle 638 einen Serial Advanced Technology Attachment-(SATA-) Standard befolgen, und die Nachricht 662 kann einen Befehl aufweisen, der den SATA-Standard befolgt. Als zusätzliches Beispiel kann die erste Schnittstelle 638 einen Universal Serial Bus- (USB-) Standard befolgen, und Nachricht 662 kann einen Befehl aufweisen, der den USB-Standard befolgt.
  • Die Steuereinheit 630 ist ausgelegt, den Einstellungsprozess zu initiieren (z.B. einen Betriebsfrequenzkalibrier- oder „Abstimmungs“prozess), der der zweiten Schnittstelle 632 zugeordnet ist, ansprechend auf die Nachricht 662. Beispielsweise kann die Schnittstellen-Zeiteinstellungsengine 134 ausgelegt sein, das Zeitsignal 626 (z.B. durch das Einstellen einer Frequenz des Zeitsignals 626) einzustellen. In einer veranschaulichenden Implementierung initiiert die Schnittstellen-Zeiteinstellungsengine 134 den Einstellungsprozess ansprechend auf den Empfang der Nachricht 662, um die Datenspeichervorrichtung 602 freizugeben, den Einstellungsprozess vorzunehmen.
  • Zur weiteren Veranschaulichung werden nachstehend bestimmte Beispiele von Betrieben beschrieben, die während des Einstellungsprozesses vorgenommen werden können. Es ist klar, dass die Beispiele veranschaulichend sind und dass der Umfang der Offenbarung nicht auf die beschriebenen Beispiele beschränkt ist. Zur Veranschaulichung kann oder können ein oder mehrere Betriebe von einem der nachstehenden Beispiele mit einem oder mehreren Betrieben eines anderen Beispiels kombiniert werden, ohne vom Umfang der Offenbarung abzuweichen. Fachleute werden erkennen, dass andere Modifikationen der beschriebenen Beispiele im Umfang der Offenbarung liegen.
  • Der Einstellungsprozess kann eines oder mehrere von dem Schreiben von Daten in den Speicher 604 oder dem Lesen von Daten aus dem Speicher 604 umfassen. Zur Veranschaulichung kann ansprechend auf den Empfang der Nachricht 662 die Schnittstellen-Zeiteinstellungsengine 134 die zweite Schnittstelle 632 veranlassen, Daten 606 und einen Schreibbefehl (z.B. den Befehl 624) an die Schaltungen 616 unter Verwendung der Verbindung 620 zu senden. Der Schreibbefehl kann eine oder mehrere physische Adressen des Speichers 604 spezifizieren, wie eine physische Adresse der Speicherregion 608. Beim Empfang der Daten 606 an den Schaltungen 616, kann die Speichervorrichtung 603 die Lese/Schreibschaltungen 610 veranlassen, die Daten 606 in den Speicher 604 zu programmieren. Ansprechend auf die Programmierung der Daten 606 in den Speicher 604 kann die Speichervorrichtung 603 eine Statusanzeige an die Steuereinheit 630 senden, die einen Status der Schreiboperation (z.B. einen Status erfolgreich/nicht erfolgreich) anzeigt.
  • In einigen Implementierungen können die Daten 606 „Dummy“-Daten (z.B. einen vorherbestimmten Satz von Bits oder einen pseudozufällig generierten Satz von Bits) aufweisen. In diesem Fall kann die Steuereinheit 630 ausgelegt sein, die Dateitabelle 640 zu aktualisieren, um anzuzeigen, dass die Daten 606 ungültig sind (z.B. nach dem Empfang der Statusanzeige von der Speichervorrichtung 603, die einen Status erfolgreich des Schreibbetriebs anzeigt). In anderen Fällen können die Daten 606 Benutzerdaten umfassen. In diesem Fall kann die Steuereinheit 630 ausgelegt sein, die Dateitabelle 640 zu aktualisieren, um anzuzeigen, dass die Daten 606 gültig sind (z.B. nach dem Empfang der Statusanzeige von der Speichervorrichtung 603, die einen Status erfolgreich des Schreibbetriebs anzeigt).
  • Alternativ dazu oder zusätzlich zum Schreiben von Daten in den Speicher 604 kann der Einstellungsprozess das Lesen von Daten aus dem Speicher 604 und das Empfangen der Daten an der Steuereinheit 630 unter Verwendung der zweiten Schnittstelle 632 umfassen. Beispielsweise kann die Steuereinheit 630 einen Lesebefehl (z.B. den Befehl 624) an die Speichervorrichtung 603 unter Verwendung der Verbindung 620 senden. Der Lesebefehl kann die physische Adresse der Speicherregion 608 spezifizieren. Die Speichervorrichtung 603 kann die Lese/Schreibschaltungen 610 veranlassen, die Speicherregion 608 abzutasten, um abgetastete Daten 628 zu generieren. Die Speichervorrichtung 603 kann die abgefühlten Daten 628 an die Steuereinheit 630 unter Verwendung der Verbindung 620 liefern, und die Steuereinheit 630 kann die abgefühlten Daten 628 unter Verwendung der zweiten Schnittstelle 632 empfangen.
  • Alternativ dazu oder zusätzlich zum Schreiben von Daten in den Speicher 604 und/oder Lesen von Daten aus dem Speicher 604 kann der Einstellungsprozess das Löschen von Daten im Speicher 604 umfassen. Beispielsweise kann die Steuereinheit 630 einen Löschbefehl (z.B. den Befehl 624) an die Speichervorrichtung 603 unter Verwendung der Verbindung 620 senden. Der Löschbefehl kann eine physische Adresse einer Speicherregion spezifizieren. Zur Veranschaulichung, wenn ein Lesebefehl die physische Adresse der Speicherregion 608 spezifiziert, kann die Speichervorrichtung 603 die Lese/Schreibschaltungen 610 veranlassen, die Daten 606 aus der Speicherregion 608 zu löschen. Nach dem Löschen der Daten 606 kann die Steuereinheit 630 ausgelegt sein, die Dateitabelle 640 zu löschen, um anzuzeigen, dass die Speicherregion 608 für Schreibbetriebe verfügbar ist. In einigen Fällen ist die Steuereinheit 630 ausgelegt, die Daten 606 während des Einstellungsprozesses neu zu schreiben (wie wenn die Daten 606 gültige Benutzerdaten aufweisen). In anderen Fällen kann die Steuereinheit 630 die Daten 606 während des Einstellungsprozesses nicht neu schreiben (z.B. wenn die Daten 606 „Dummy“-Daten sind.
  • In einigen Implementierungen ist die Steuereinheit 630 ausgelegt, zufällig oder pseudozufällig die Speicherregion 608 auszuwählen. Beispielsweise kann die Steuereinheit 630 ausgelegt sein, pseudozufällig eine oder mehrere physische Adressen auszuwählen, die gültige Daten speichern, indem auf die Dateitabelle 640 zugegriffen wird. In diesem Beispiel kann die Steuereinheit 630 ausgelegt sein, pseudozufällig eine physische Adresse der Speicherregion 608 aus der Dateitabelle 640 ansprechend auf den Empfang der Nachricht 662 auszuwählen und Daten auf der Basis der ausgewählten physischen Adresse zu schreiben oder zu lesen. In Abhängigkeit von der bestimmten Implementierung kann die Steuereinheit 630 zwischen physischen Adressen des Speichers 604, die gültige Daten speichern, physischen Adressen des Speichers 604, die ungültige Daten speichern, oder beidem auswählen.
  • In einem weiteren Beispiel kann die Speicherregion 608 einen „dedizierten“ Speicherbereich aufweisen, der für Betriebe reserviert ist, die während des zweiten Einstellungsprozesses vorgenommen werden. Beispielsweise kann die Speicherregion 608 einen Speicherbereich aufweisen, der für Schreibbetriebe geschlossen wurde (z.B. aufgrund einer Fehlfunktion, eines Defekts oder einer hohen Anzahl von Programmierungs/Löschzyklen). In diesem Fall können die Daten 606 Dummy-Daten (anstelle von Benutzerdaten) aufweisen.
  • In einigen Implementierungen kann die ECC-Engine 634 eine oder mehrere ECC-Operationen (z.B. Codieroperationen und/oder Decodieroperationen) während des zweiten Einstellungsprozesses vornehmen. Zur Veranschaulichung kann in einigen Implementierungen die ECC-Engine 634 Daten codieren, um die Daten 606 während des zweiten Einstellungsprozesses zu generieren. Alternativ dazu oder zusätzlich kann die ECC-Engine 634 die abgefühlten Daten 628 decodieren, um decodierte Daten während des zweiten Einstellungsprozesses zu generieren. In einer veranschaulichenden Implementierung nimmt die ECC-Engine 634 ECC-Operationen ansprechend darauf vor, dass die Steuereinheit 630 Daten an der Verbindung 620 während des Einstellungsprozesses sendet oder empfängt.
  • In einigen Implementierungen kann die Steuereinheit 630 Daten an eine oder mehrere Latches der Schaltungen 616 senden und Daten von diesen empfangen, ohne die Speichervorrichtung 603 zu veranlassen, die Daten in den Speicher 604 zu programmieren und aus diesem abzutasten. Beispielsweise kann die Steuereinheit 630 ausgelegt sein, die Daten 606 und einen Befehl (z.B. den Befehl 624) an die Schaltungen 616 unter Verwendung der Verbindung 620 zu senden. In einigen Implementierungen zeigt der Befehl 624 an, dass die Speichervorrichtung 603 die Daten 606 in einem oder mehreren Latches der Schaltungen 616 zu „halten“ hat (z.B. ohne die Daten 606 in den Speicher 604 zu programmieren). Die Steuereinheit 630 kann die Daten 606 aus dem einen oder mehreren Latches der Schaltungen 616 über die Verbindung 620 während des Einstellungsprozesses abrufen. Somit umfasst in einigen Implementierungen der Einstellungsprozess latch-basierte Operationen (z.B. umfasst nicht ein Schreiben von Daten in den Speicher 604 oder ein Lesen aus diesem), und in einigen Implementierungen umfasst der Einstellungsprozess speicherbasierte Operationen (z.B. durch das Schreiben von Daten in den und/oder Lesen von Daten aus dem Speicher 604 während des Einstellungsprozesses).
  • In Abhängigkeit von der bestimmten Anwendung kann ein latch-basierter Einstellungsprozess mehr Rauschen an der Verbindung 620 verglichen mit einem speicherbasierten Einstellungsprozess generieren. Wenn beispielsweise während des Einstellungsprozesses Daten nicht in den Speicher 604 geschrieben und/oder aus diesem gelesen werden, kann die Verbindung 620 während des zweiten Prozesses geladen bleiben (z.B. aufgrund eines kapazitiven Effekts, der Werten zugeordnet ist, die in einem oder mehreren Latches der Schaltungen 616 gespeichert sind). Ein latch-basierter Einstellungsprozess kann in Anwendungen vorteilhaft sein, wo die Verbindung 650 für ein Rauschen, das an der Verbindung 620 generiert wird, empfindlich ist (z.B. wenn die Verbindung 650 nahe bei der Verbindung 620 angeordnet ist). In einigen Fällen kann ein speicherbasierter Einstellungsprozess mehr Rauschen an der Energiezufuhrverbindung 673 verglichen mit einem latch-basierten Einstellungsprozess generieren. Beispielsweise kann die Verwendung von Programmierungsspannungen und/oder Lesespannungen während Programmierungs- und/oder Lesebetrieben ein Rauschen an der Energiezufuhrverbindung 673 generieren. Ein speicherbasierter Einstellungsprozess kann in Anwendungen vorteilhaft sein, wo eine oder beide der Verbindungen 620 für ein Energiezufuhrrauschen empfindlich ist oder sind (z.B. wenn eine oder beide der Verbindungen 620 für „Störungen“ in einer Zufuhrspannung empfindlich ist oder sind, die von der Energiezufuhrverbindung 673 geliefert wird, wie Störungen, die auf eine Kapazitanz und/oder Induktanz zurückzuführen sind, welche der Energiezufuhrverbindung 673 zugeordnet sein kann).
  • Alternativ dazu oder zusätzlich zu latch-basierten Operationen und speicherbasierten Operationen kann der Einstellungsprozess ECC-basierte Operationen umfassen (z.B. durch das Vornehmen einer oder mehrerer Codieroperationen und/oder einer oder mehrerer Decodieroperationen in der ECC-Engine 634 während des Einstellungsprozesses). In einigen Anwendungen kann der Betrieb der ECC-Engine 634 während des Einstellungsprozesses den Betrieb der Verbindung 650 beeinträchtigen, wie durch das Generieren eines Rauschens an der Energiezufuhrverbindung 673, das die Verbindung 650 beeinträchtigt. In einer veranschaulichenden Implementierung kann der Einstellungsprozess gemäß einem „Vollleistungs“modus vorgenommen werden, währenddessen Daten codiert werden, an die Schaltungen 616 gesendet werden, in den Speicher 604 geschrieben werden, aus dem Speicher 604 abgetastet werden, an die zweite Schnittstelle 632 geliefert werden und von der ECC-Engine 634 decodiert werden. Ein „Vollleistungs“modus kann vorteilhaft sein, wenn der Einstellungsprozess einen Worst Case-Betrag eines Rauschens und/oder Energieverbrauchs zu liefern hat. Beispielsweise können bestimmte Betriebe (wie der „Vollleistungs“modus) einen „Spitzen“leistungsverbrauch verursachen, der temporär einen Pegel einer Zufuhrspannung reduziert, die von der Energiezufuhrverbindung 673 zugeführt wird. In diesem Fall kann die Leistung eines oder mehrerer Schnittstellentreiber temporär reduziert werden, was zu einer „Worst Case“-Betriebsbedingung führt.
  • In einigen Fällen kann die Datenspeichervorrichtung 602 den Einstellungsprozess „erweitern“ (z.B. durch das Wiederholen des Einstellungsprozesses einmal oder mehrmals oder durch das Vornehmen eines oder mehrerer anderer Betriebe). Zur Veranschaulichung kann die Host-Vorrichtung 670 die Beendigung des Einstellungsprozesses entweder direkt (z.B. unter Verwendung eines bestimmten Befehls) oder indirekt (z.B. durch das Beenden der Verwendung der Verbindung 650 oder durch das Senden eines Lesebefehls oder eines Schreibbefehls an die Datenspeichervorrichtung 602) anzeigen. In einigen Implementierungen ist die Datenspeichervorrichtung 602 ausgelegt, den Einstellungsprozess zu „erweitern“, bis die Host-Vorrichtung 670 die Beendigung des Einstellungsprozesses anzeigt.
  • In einigen Fällen kann der Einstellungsprozess das Vornehmen eines oder mehrerer Betriebe umfassen, die von der Host-Vorrichtung 670 spezifiziert werden. Beispielsweise kann die Nachricht 662 anzeigen, dass ein oder mehrere Typen von Betrieben während des Einstellungsprozesses vorzunehmen sind (z.B. ein oder mehrere Schreibbetriebe, ein oder mehrere Lesebetriebe, ein oder mehrere Codierbetriebe, ein oder mehrere Decodierbetriebe, ein oder mehrere andere Betriebe oder eine Kombination davon), eine Anzahl von Betrieben während des Einstellungsprozesses vorzunehmen ist, eine Dauer des Einstellungsprozesses oder eine Kombination davon. Zur weiteren Veranschaulichung kann in einigen Fällen die Nachricht 662 ein Feld (z.B. ein Bit) aufweisen, das anzeigt, ob die Datenspeichervorrichtung 602 den Einstellungsprozess gemäß dem „Vollleistungs“modus vorzunehmen hat. Wenn beispielsweise das Datenspeichersystem 600 als durch eine Batterie versorgte Vorrichtung implementiert ist (z.B. eine mobile Vorrichtung oder eine Laptop-Vorrichtung, als veranschaulichende Beispiele), kann das Feld die Verwendung des „Volleistungs“modus auf der Basis einer Menge der Batterieladung anzeigen, die eine Schwelle erfüllt, und/oder wenn das Datenspeichersystem 600 aktuell mit einer Hauptenergiezufuhr zum Laden der Batterie verbunden ist. Es wird angemerkt, dass die Offenbarung nicht auf diese Beispiele beschränkt ist, und dass das Datenspeichersystem 600 als andere Vorrichtung implementiert sein kann (z.B. als Server, als Cloud-Speichervorrichtung oder als Desktop-Computer, als veranschaulichende Beispiele).
  • Der Einstellungsprozess kann ferner das Einstellen einer Frequenz des Zeitsignals 626 umfassen. Beispielsweise kann die Schnittstellen-Zeiteinstellungsengine 134 ausgelegt sein, die Frequenz des Zeitsignals 626 in Verbindung mit dem Einstellungsprozess während eines oder mehrerer der vorhergehen Betriebe umfassen. In einer veranschaulichenden Implementierung ist die Schnittstellen-Zeiteinstellungsengine 134 ausgelegt, einen ersten Betrieb an dem Speicher 604 durch die zweite Schnittstelle 632 bei einer ersten Frequenz des Zeitsignals 626 vorzunehmen, die der zweiten Schnittstelle 632 zugeordnet ist, um ein erstes Datenmuster zu bestimmen, das in den Schaltungen 616 (z.B. in den Datenlatches) gespeichert ist. Die Schnittstellen-Zeiteinstellungsengine 134 nimmt einen Lesebetrieb an dem Speicher 604 durch die zweite Schnittstelle 632 bei einer zweiten Frequenz des Zeitsignals 626 vor, um ein zweites Datenmuster zu bestimmen, das in den Schaltungen 616 (z.B. in den Datenlatches) gespeichert ist. In einer Ausführungsform kann der Einstellungsprozess zur Einstellung der Frequenz des Zeitsignals 626 während einer Leerlaufzeit der zweiten Schnittstelle 632 oder nach einem vorherbestimmten Zeitbetrag auftreten, nachdem die Steuereinheit 630 die Bedienung einer Unterbrechung vollendet hat.
  • In einer Ausführungsform ist die zweite Frequenz eine Relaxationsfrequenz, die niedriger ist als eine maximale Betriebsfrequenz. In einer Ausführungsform ist die erste Operation eine Schreiboperation. In einer Ausführungsform ist die erste Operation eine Leseoperation.
  • Ansprechend darauf, dass die Schnittstellen-Zeiteinstellungsengine 134 bestimmt, dass das erste Muster gleich dem zweiten Muster ist, erhöht die Schnittstellen-Zeiteinstellungsengine 134 die erste Frequenz des Zeitsignals 626 um einen vorherbestimmten Betrag. Ansprechend darauf, dass die Schnittstellen-Zeiteinstellungsengine 134 bestimmt, dass das erste Muster nicht gleich dem zweiten Muster ist, verringert die Schnittstellen-Zeiteinstellungsengine 134 die erste Frequenz um den vorherbestimmten Betrag. Das Vornehmen einer ersten Operation, der Leseoperation, und das Erhöhen oder Verringern der ersten Frequenz werden wiederholt, bis die erste Frequenz gleich einer maximalen Betriebsfrequenz ist, mit einem assoziierten Risiko einer Setup/Hold-Verletzung, das unter einer vorherbestimmten Wahrscheinlichkeit liegt.
  • In einer Ausführungsform basiert der vorherbestimmte Betrag auf einer Setup- und Holdup-Zeit, die für die Leseoperation erforderlich ist. Der vorherbestimmte Betrag basiert auf mindestens einer von einer Änderung der Betriebsspannung, Betriebstemperatur oder Last der zweiten Schnittstelle 632. In einer Ausführungsform bestimmen das erste Muster, das nicht gleich dem zweiten Muster ist, und die Setup- und Hold-Zeit eine maximale Betriebsfrequenz der zweiten Schnittstelle 632.
  • In einer veranschaulichenden Implementierung weist die Steuereinheit 630 eine Exklusiv-Oder- (XOR-) Vorrichtung auf, die ausgelegt ist, einen Satz von XOR-Operationen unter Verwendung erster abgetasteter Daten des ersten Datenmusters und des zweiten Datenmusters sowie der Kopie der Daten 606 des ersten Datenmusters und des zweiten Datenmusters vorzunehmen, um eine Anzahl von Fehlern in dem ersten Datenmuster und dem zweiten Datenmuster zu bestimmen.
  • In einigen Implementierungen kann der Einstellungsprozess das Einstellen eines Spannungspegels (z.B. einer „Treiberstärke“) eines oder mehrerer Signale umfassen. Beispielsweise kann während des Einstellungsprozesses die Schnittstellen-Zeiteinstellungsengine 134 einen Spannungspegel einer Spannung einstellen, die an der Verbindung 620 verwendet wird, wie durch eine Einstellungsoperation des einen oder mehrerer Spannungsregler 642 (z.B. durch das selektive Aktivieren oder Deaktivieren einer oder mehrerer Spannungsteilervorrichtungen, die in dem einem oder mehreren Spannungsreglern 642 enthalten sind). Das Einstellen der Treiberstärke kann eine Anstiegszeit oder eine Abfallszeit modifizieren, die einem Signal zugeordnet sind. Obwohl 6 veranschaulicht, dass der eine oder mehrere Spannungsregler 642 in der Steuereinheit 630 enthalten sind, ist es ferner klar, dass der eine oder mehrere Spannungsregler 642 in der Speichervorrichtung 603 alternativ zu oder zusätzlich zu der Steuereinheit 630 enthalten sein können.
  • Nach dem Vornehmen des Einstellungsprozesses kann die Datenspeichervorrichtung 602 den Betrieb fortsetzen (z.B. durch das Ansprechen auf Anforderungen für einen Lesezugriff oder Schreibzugriff von der Host-Vorrichtung 670). Beispielsweise kann die Steuereinheit 630 Daten an die Speichervorrichtung 630 unter Verwendung der eingestellten Frequenz des Zeitsignals 626 senden und von dieser empfangen, die während des Einstellungsprozesses bestimmt wird. Die Steuereinheit 630 kann anschließend einen oder mehrere zusätzliche Einstellungsprozesse initiieren, wie ansprechend auf einen Fehler an der zweiten Schnittstelle 632 oder ansprechend auf den Empfang einer weiteren Nachricht von der Host-Vorrichtung 670, die spezifiziert, dass ein weiter Einstellungsprozess vorzunehmen ist.
  • Die mit Bezugnahme auf 6 beschriebenen Beispiele können ermöglichen, dass der Einstellungsprozess, der von der Host-Vorrichtung 670 vorgenommen wird, Effekte an der Verbindung 650 kompensiert, die auf Betriebe an der Verbindung 620 zurückzuführen sind (und umgekehrt), was zu einer genaueren Frequenzeinstellung des Zeitsignals 664 führt (und zu einer genaueren Frequenzeinstellung des Zeitsignals 626). Der Betrieb des Datenspeichersystems 600 wird daher verbessert verglichen mit einer herkömmlichen Vorrichtung, die getrennte (oder „nicht-überlappende“) Einstellungsprozesse verwendet (z.B. aufgrund weniger Fehler und/oder aufgrund weniger häufiger Einstellungsprozesse an dem Datenspeichersystem 600, nachdem die Einstellungsprozesse vollendet sind).
  • Wie mit Bezugnahme auf 6 beschrieben, kann eine „fliegende“ Überwachung der Busoperationen eine Echtzeit-Warnung vor einer nahenden Bedingung einer Hold-Zeitverletzung liefern. Die Echtzeit-Maßnahme kann den Betrieb der zweiten Schnittstelle 632 (und eines entsprechenden Busses) bei einer „maximalen“ zuverlässigen Taktfrequenz freigeben. Ansprechend auf die Identifikation eines Risikos einer Hold-Verletzung kann die Steuereinheit 630 eine Frequenz des Taktsignals Clk einstellen, um die Hold-Zeitverletzung zu vermeiden. Durch das Einstellen der Frequenz kann die zweite Schnittstelle 632 mit einer „maximalen“ Frequenz während der verschiedenen Betriebsbedingungen zuverlässig arbeiten, die aus sich ändernden PVT-Bedingungen resultieren. Demgemäß kann die zweite Schnittstelle 632 bei einer Rate arbeiten, die höher ist als eine Worst Case-Szenario-Rate, wodurch eine Gesamtleistung der zweiten Schnittstelle 632 verbessert wird.
  • Ein besonderes veranschaulichendes Beispiel eines Verfahrens zum Einstellen einer Frequenz eines Taktsignals auf der Basis von Schreiboperationen wird hier im Nachstehenden beschrieben. Das Verfahren kann von der Schnittstellen-Zeiteinstellungsengine 134 der Steuereinheit 630 von 6 vorgenommen werden. Eine Schnittstellen-Zeiteinstellungsengine 134 setzt eine Vorgabe-Schreibtaktfrequenz des Zeitsignals 626, die der zweiten Schnittstelle 632 zugeordnet ist. Die Schnittstellen-Zeiteinstellungsengine 134 wartet auf eine Vollendung einer Unterbrechungsbedienungsroutine einer Unterbrechung gemäß einem Unterbrechungszeitgeber. Wenn ein Unterbrechungszeitgeber abgelaufen ist, und die Schnittstellen-Zeiteinstellungsengine 134 bestimmt, dass das Datenspeichersystem 600 in einen Leerlaufmodus eingetreten ist, schreibt die Schnittstellen-Zeiteinstellungsengine 134 dann ein Schreibdatenmuster, das in den Schaltungen 616 gespeichert ist (z.B. in den Datenlatches). Die Schnittstellen-Zeiteinstellungsengine 134 liest ein Lesedatenmuster, das in den Schaltungen 616 gespeichert ist, bei einer sicheren Relaxationsfrequenz, die unter der Vorgabe-Schreibtaktfrequenz liegt. Die Schnittstellen-Zeiteinstellungsengine 134 vergleicht das erste Datenmuster mit dem zweiten Datenmuster. Wenn das Schreibdatenmuster gleich dem Lesedatenmuster ist, erhöht die Schnittstellen-Zeiteinstellungsengine 134 dann die Taktfrequenz um einen vorherbestimmten Betrag, ansonsten verringert die Schnittstellen-Zeiteinstellungsengine 134 die Taktfrequenz um den vorherbestimmten Betrag. Die Verarbeitung kehrt in jedem Fall zum Schreiben eines Datenmusters, das in den Schaltungen 616 gespeichert ist, nach dem Eintritt in den Leerlaufmodus zurück.
  • Ein besonderes veranschaulichendes Beispiel eines Verfahrens zum Einstellen einer Frequenz eines Taktsignals auf der Basis von Leseoperationen wird hier im Nachstehenden beschrieben. Das Verfahren 800 kann von der Schnittstellen-Zeiteinstellungsengine 134 der Steuereinheit 630 von 6 vorgenommen werden. Die Schnittstellen-Zeiteinstellungsengine 134 setzt eine Vorgabe-Lesetaktfrequenz des Zeitsignals 626, die der zweiten Schnittstelle 632 zugeordnet ist. Die Schnittstellen-Zeiteinstellungsengine 134 wartet auf eine Vollendung einer Unterbrechungsbedienungsroutine einer Unterbrechung gemäß einem Unterbrechungszeitgeber. Wenn ein Unterbrechungszeitgeber abgelaufen ist, und die Steuerschaltungen bestimmen, dass das Datenspeichersystem 600 in einen Leerlaufmodus eingetreten ist, liest die Schnittstellen-Zeiteinstellungsengine 134 dann ein Lesedatenmuster bei einer sicheren Relaxationsfrequenz, die niedriger ist als die Vorgabe-Lesetaktfrequenz. Die Schnittstellen-Zeiteinstellungsengine 134 liest ein zweites Lesedatenmuster, das in den Schaltungen 616 gespeichert ist, bei der Taktfrequenz. Die Schnittstellen-Zeiteinstellungsengine 134 vergleicht das erste Lesedatenmuster mit dem zweiten Lesedatenmuster. Wenn das erste Lesedatenmuster gleich dem zweiten Lesedatenmuster ist, erhöht die Schnittstellen-Zeiteinstellungsengine 134 dann die Taktfrequenz um einen vorherbestimmten Betrag, ansonsten verringert die Schnittstellen-Zeiteinstellungsengine 134 die Taktfrequenz um den vorherbestimmten Betrag. Die Verarbeitung kehrt in jedem Fall zum Schreiben eines Datenmusters, das in den Schaltungen 616 gespeichert ist, nach dem Eintritt in den Leerlaufmodus zurück.
  • Mit Bezugnahme auf 7 wird ein bestimmtes veranschaulichendes Beispiel eines Verfahrens zum Einstellen eines Frequenzparameters, der einer Busgeschwindigkeit zugeordnet ist, gezeigt und allgemein mit 700 bezeichnet. Das Verfahren 700 kann von der Schnittstellen-Zeiteinstellungsengine 134 der Steuereinheit 630 von 6 vorgenommen werden. In einer veranschaulichenden Implementierung nimmt beim Block 705 die Schnittstellen-Zeiteinstellungsengine 134 einen ersten Betrieb an dem Speicher 604 durch die zweite Schnittstelle 632 bei einer ersten Frequenz des Zeitsignals 626 vor, die der zweiten Schnittstelle 632 zugeordnet ist, um ein erste Datenmuster zu bestimmen, das in den Schaltungen 616 (z.B. in den Datenlatches) gespeichert ist. Beim Block 710 nimmt die Schnittstellen-Zeiteinstellungsengine 134 einen Lesebetrieb an dem Speicher 604 durch die zweite Schnittstelle 632 bei einer zweiten Frequenz des Zeitsignals 626 vor, um ein zweites Datenmuster zu bestimmen, das in den Schaltungen 616 (z.B. in den Datenlatches) gespeichert ist. In einer Ausführungsform kann der Einstellungsprozess zur Einstellung der Frequenz des Zeitsignals 626 während einer Leerlaufzeit der zweiten Schnittstelle 632 oder nach einem vorherbestimmten Zeitbetrag auftreten, nachdem die Steuereinheit 630 die Bedienung einer Unterbrechung vollendet hat.
  • In einer Ausführungsform ist die zweite Frequenz eine Relaxationsfrequenz, die niedriger ist als eine maximale Betriebsfrequenz. In einer Ausführungsform ist die erste Operation eine Schreiboperation. In einer Ausführungsform ist die erste Operation eine Leseoperation.
  • Wenn beim Block 715 die Schnittstellen-Zeiteinstellungsengine 134 bestimmt, dass das erste Muster gleich ist dem zweiten Muster, erhöht dann beim Block 720 die Schnittstellen-Zeiteinstellungsengine 134 die erste Frequenz des Zeitsignals 626 um einen vorherbestimmten Betrag. Wenn beim Block 715 die Schnittstellen-Zeiteinstellungsengine 134 bestimmt, dass das erste Muster nicht gleich ist dem zweiten Muster, verringert dann beim Block 725 die Schnittstellen-Zeiteinstellungsengine 134 die erste Frequenz des Zeitsignals 626 um den vorherbestimmten Betrag. Wenn beim Block 730 die Schnittstellen-Zeiteinstellungsengine 134 bestimmt, dass die erste Frequenz gleich ist einer maximalen Betriebsfrequenz mit einem assoziierten Risiko einer mit der zweiten Schnittstelle 632 assoziierten Setup/Hold-Verletzung, die unter einer vorherbestimmten Wahrscheinlichkeit liegt, werden beim Block 735 Änderungen auf die erste Frequenz beendet; ansonsten geht das Verfahren zum Block 905 zurück.
  • In einer Ausführungsform basiert der vorherbestimmte Betrag auf der Setup- und Hold-Zeit, die für die Leseoperation erforderlich ist. Der vorherbestimmte Betrag basiert auf mindestens einer von einer Änderung der Betriebsspannung, Betriebstemperatur oder Last der zweiten Schnittstelle 632. In einer Ausführungsform bestimmen das erste Muster, das nicht gleich dem zweiten Muster ist, und die Setup- und Hold-Zeit eine maximale Betriebsfrequenz der zweiten Schnittstelle 632.
  • Durch das Einstellen eines Betriebsparameters auf der Basis des ersten Ausgangs und des zweiten Ausgangs können „fliegende“ (z.B. Echtzeit-) Einstellungen vorgenommen werden, um Setup/Hold-Verletzungen während des Betriebs einer Schnittstelle zu vermeiden. Zusätzlich kann durch das Einstellen eines oder mehrerer Parameter, wie der Frequenz des Taktsignals Clk, eine Schnittstelle zuverlässig mit einer maximalen Frequenz während verschiedener Betriebsbedingungen arbeiten, die aus sich ändernden PVT-Bedingungen resultieren.
  • Der oben geoffenbarte Gegensatz ist als Veranschaulichung und nicht einschränkend anzusehen, und die beigeschlossenen Ansprüche sollen alle solchen Modifikationen, Erweiterungen und andere Implementierungen abdecken, die in den Umfang der vorliegenden Offenbarung fallen. Somit soll in dem maximalen gesetzlich zulässigen Ausmaß der Umfang der vorliegenden Offenbarung von der breitest möglichen Auslegung der folgenden Ansprüche und ihrer Äquivalente bestimmt werden und soll durch die vorhergehende detaillierte Beschreibung nicht eingeschränkt oder begrenzt werden.

Claims (26)

  1. Verfahren, aufweisend: in einer Datenspeichervorrichtung, die eine Steuereinheit und einen Speicher aufweist, wobei die Steuereinheit eine Host-Schnittstelle und eine Speicherschnittstelle aufweist, Vornehmen, durch die Steuereinheit, einer ersten Operation an dem Speicher durch die Speicherschnittstelle bei einer ersten Frequenz, die der Host-Schnittstelle zugeordnet ist, um ein erstes Datenmuster zu bestimmen; Vornehmen einer Leseoperation an dem Speicher durch die Speicherschnittstelle bei einer zweiten Frequenz, um ein zweites Datenmuster zu bestimmen; und Ändern der ersten Frequenz um einen vorherbestimmten Betrag, bis die erste Frequenz gleich einer maximalen Betriebsfrequenz mit einem assoziierten Risiko einer Setup/Hold-Verletzung ist, das unter einer vorherbestimmten Wahrscheinlichkeit liegt.
  2. Verfahren nach Anspruch 1, wobei das Ändern der ersten Frequenz umfasst: ansprechend darauf, dass das erste Muster gleich dem zweiten Muster ist, Erhöhen der ersten Frequenz um einen vorherbestimmten Betrag.
  3. Verfahren nach Anspruch 1, wobei das Ändern der ersten Frequenz umfasst: ansprechend darauf, dass das erste Muster nicht gleich dem zweiten Muster ist, Verringern der ersten Frequenz um den vorherbestimmten Betrag.
  4. Verfahren nach Anspruch 1, wobei der vorherbestimmte Betrag auf einer Setup- und Hold-Zeit basiert, die für die Leseoperation erforderlich ist.
  5. Verfahren nach Anspruch 4, wobei das erste Muster nicht gleich dem zweiten Muster ist, und die Setup- und Hold-Zeit eine maximale Betriebsfrequenz der Host-Schnittstelle bestimmen.
  6. Verfahren nach Anspruch 1, wobei der vorherbestimmte Betrag auf mindestens einer von einer Änderung der Betriebsspannung, Betriebstemperatur oder Last der Host-Schnittstelle basiert.
  7. Verfahren nach Anspruch 1, ferner aufweisend ein Beenden des Änderns, wenn die erste Frequenz gleich einer maximalen Betriebsfrequenz ist.
  8. Verfahren nach Anspruch 1, wobei das Ändern während einer Leerlaufzeit der Host-Schnittstelle auftritt.
  9. Verfahren nach Anspruch 1, wobei das Ändern nach einem vorherbestimmten Zeitbetrag auftritt, nachdem die Steuereinheit die Bedienung einer Unterbrechung vollendet hat.
  10. Verfahren nach Anspruch 1, wobei die zweite Frequenz eine Relaxationsfrequenz ist, die niedriger ist als eine maximale Betriebsfrequenz.
  11. Verfahren nach Anspruch 1, wobei die erste Operation eine Schreiboperation ist.
  12. Verfahren nach Anspruch 1, wobei die erste Operation eine Leseoperation ist.
  13. Datenspeichervorrichtung, aufweisend: eine Steuereinheit und einen Speicher, wobei die Steuereinheit eine Host-Schnittstelle und eine Speicherschnittstelle aufweist, wobei die Steuereinheit ausgelegt ist, eine erste Operation an dem Speicher durch die Speicherschnittstelle bei einer ersten Frequenz einer Zeitgeberschaltung vorzunehmen, die der Host-Schnittstelle zugeordnet ist, um ein erstes Datenmuster zu bestimmen, wobei die Steuereinheit ferner ausgelegt ist, eine Leseoperation an dem Speicher durch die Speicherschnittstelle bei einer zweiten Frequenz der Zeitgeberschaltung vorzunehmen, um ein zweites Datenmuster zu bestimmen; und eine Schnittstellen-Zeiteinstellungsengine, die ausgelegt ist, die erste Frequenz um einen vorherbestimmten Betrag zu ändern, bis die erste Frequenz gleich einer maximalen Betriebsfrequenz mit einem assoziierten Risiko einer Setup/Hold-Verletzung ist, das unter einer vorherbestimmten Wahrscheinlichkeit liegt.
  14. Datenspeichervorrichtung nach Anspruch 13, ferner aufweisend eine Zeiteinstellungsvorrichtung, wobei die Steuereinheit ferner ausgelegt ist, eine Frequenz eines Zeitsignals, das der Host-Schnittstelle zugeordnet ist, unter Verwendung der Zeiteinstellungsvorrichtung einzustellen, um die erste Frequenz und die zweite Frequenz zu erhalten.
  15. Datenspeichervorrichtung nach Anspruch 13, ferner aufweisend eine Mehrzahl von Latches, die mit dem Komparator gekoppelt sind und in Verbindung mit der Steuereinheit arbeiten, um zu bestimmen, ob das erste Muster gleich dem zweiten Muster ist.
  16. Datenspeichervorrichtung nach Anspruch 14, wobei die Steuereinheit ferner ausgelegt ist, ein Taktsignal oder ein Strobe-Signal zu generieren, und wobei das Zeitsignal das Taktsignal oder das Strobe-Signal umfasst.
  17. Datenspeichervorrichtung nach Anspruch 14, ferner aufweisend eine Speichervorrichtung, wobei die Speichervorrichtung ausgelegt ist, ein Lesefreigabesignal zu generieren, und wobei das Zeitsignal das Lesefreigabesignal umfasst.
  18. Datenspeichervorrichtung, aufweisend: Mittel zum Vornehmen einer ersten Operation an dem Speicher durch die Speicherschnittstelle bei einer ersten Frequenz, die einer Host-Schnittstelle zugeordnet ist, um ein erstes Datenmuster zu bestimmen; Mittel zum Vornehmen einer Leseoperation an dem Speicher durch die Speicherschnittstelle bei einer zweiten Frequenz, um ein zweites Datenmuster zu bestimmen; und Mittel zum Ändern der ersten Frequenz um einen vorherbestimmten Betrag, bis die erste Frequenz gleich der maximalen Betriebsfrequenz mit einem assoziierten Risiko einer Setup/Hold-Verletzung ist, das unter einer vorherbestimmten Wahrscheinlichkeit liegt.
  19. Datenspeichervorrichtung nach Anspruch 18, ferner aufweisend einen Datenbus, der zwischen der Host-Schnittstelle und der Speicherschnittstelle gekoppelt ist, wobei der Datenbus ausgelegt ist, eine Steuereinheit einer Datenspeichervorrichtung mit einem nicht-flüchtigen Speicher der Datenspeichervorrichtung kommunikativ zu koppeln.
  20. Datenspeichervorrichtung nach Anspruch 18, wobei der vorherbestimmte Betrag auf einer Setup- und Hold-Zeit basiert, die für die Leseoperation erforderlich ist.
  21. Verfahren, aufweisend: in einer Datenspeichervorrichtung, die eine Steuereinheit und einen Speicher aufweist, wobei die Steuereinheit eine Host-Schnittstelle und eine Speicherschnittstelle aufweist, (a) Schreiben, durch die Steuereinheit, eines Schreibdatenmusters in den Speicher durch die Speicherschnittstelle bei einer ersten Frequenz, die dem Host zugeordnet ist; (b) Lesen eines Lesedatenmusters aus dem Speicher durch die Speicherschnittstelle bei einer niedrigeren Frequenz mit einem assoziierten Risiko einer Setup/Hold-Verletzung, das unter einer vorherbestimmten Wahrscheinlichkeit liegt; (c) Vergleichen des Schreibdatenmusters mit dem Lesedatenmuster; (d) entweder: ansprechend darauf, dass gemäß dem Vergleich das Schreibdatenmuster gleich dem Lesedatenmuster ist, Erhöhen der ersten Frequenz um einen vorherbestimmten Betrag; oder ansprechend darauf, dass gemäß dem Vergleich das Schreibdatenmuster nicht gleich dem Lesedatenmuster ist, Verringern der ersten Frequenz um einen vorherbestimmten Betrag; und (e) Wiederholen von (a) - (c).
  22. Verfahren nach Anspruch 21, ferner aufweisend: Ausführen von (a) - (c) ansprechend darauf, dass die Steuereinheit in einen Leerlaufmodus eintritt.
  23. Verfahren nach Anspruch 21, ferner aufweisend: Warten, dass ein Unterbrechungsdienst-Routing vollendet ist, vor der Ausführung von (a) - (c).
  24. Verfahren aufweisend: in einer Datenspeichervorrichtung, die eine Steuereinheit und einen Speicher aufweist, wobei die Steuereinheit eine Host-Schnittstelle und eine Speicherschnittstelle aufweist, (a) Lesen, durch die Steuereinheit, eines ersten Lesedatenmusters aus dem Speicher durch die Speicherschnittstelle bei einer niedrigen Frequenz mit einem assoziierten Risiko einer Setup/Hold-Verletzung, das unter einer vorherbestimmten Wahrscheinlichkeit liegt; (b) Lesen eines zweiten Lesedatenmusters aus dem Speicher durch die Speicherschnittstelle bei einer zweiten Frequenz, welche höher ist als die niedrige Frequenz, die dem Host zugeordnet ist; (c) Vergleich des ersten Lesedatenmusters mit dem zweiten Lesedatenmuster; (d) entweder: ansprechend darauf, dass gemäß dem Vergleich das erste Lesedatenmuster gleich dem zweiten Lesedatenmuster ist, Erhöhen der zweiten Frequenz um einen vorherbestimmten Betrag; oder ansprechend darauf, dass gemäß dem Vergleich das erste Lesedatenmuster nicht gleich dem zweiten Lesedatenmuster ist, Verringern der zweiten Frequenz um einen vorherbestimmten Betrag; und (e) Wiederholen von (a) - (c).
  25. Verfahren nach Anspruch 24, ferner aufweisend: Ausführen von (a) - (c) ansprechend darauf, dass die Steuereinheit in einen Leerlaufmodus eintritt.
  26. Verfahren nach Anspruch 24, ferner aufweisend: Warten, dass ein Unterbrechungsdienst-Routing vollendet ist, vor der Ausführung von (a) - (c).
DE102018115199.3A 2017-08-17 2018-06-25 Verfahren zur maximierung der frequenz während einer datenintegritätsprüfung auf einem physischen schnittstellenbus Pending DE102018115199A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/679,468 US10466920B2 (en) 2017-08-17 2017-08-17 Method for maximizing frequency while checking data integrity on a physical interface bus
US15/679,468 2017-08-17

Publications (1)

Publication Number Publication Date
DE102018115199A1 true DE102018115199A1 (de) 2019-02-21

Family

ID=65235229

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018115199.3A Pending DE102018115199A1 (de) 2017-08-17 2018-06-25 Verfahren zur maximierung der frequenz während einer datenintegritätsprüfung auf einem physischen schnittstellenbus

Country Status (3)

Country Link
US (1) US10466920B2 (de)
CN (1) CN109407969B (de)
DE (1) DE102018115199A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10924113B2 (en) 2017-08-17 2021-02-16 Western Digital Technologies, Inc. Dynamic calibration of frequency and power storage interface
US10446254B1 (en) 2018-05-03 2019-10-15 Western Digital Technologies, Inc. Method for maximizing power efficiency in memory interface block
US10566037B1 (en) 2018-07-27 2020-02-18 Western Digital Technologies, Inc Automated voltage and timing margin measurement for NAND flash interface
KR20210016684A (ko) * 2019-08-05 2021-02-17 에스케이하이닉스 주식회사 데이터 처리 시스템 및 동작 방법
CN112951304A (zh) * 2019-12-10 2021-06-11 北京兆易创新科技股份有限公司 一种存储设备及其控制装置和控制方法
US20220100428A1 (en) * 2020-09-25 2022-03-31 Micron Technology, Inc. Frequency monitoring for memory devices
US11984192B2 (en) 2022-06-15 2024-05-14 Western Digital Technologies, Inc. Interface bus speed optimization

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7231538B2 (en) * 2003-11-06 2007-06-12 Mentor Graphics (Holdings) Ltd. Synchronized communication between integrated circuit chips
KR100622349B1 (ko) 2004-08-04 2006-09-14 삼성전자주식회사 불량 블록 관리 기능을 가지는 플레시 메모리 장치 및플레시 메모리 장치의 불량 블록 관리 방법.
US8509321B2 (en) * 2004-12-23 2013-08-13 Rambus Inc. Simultaneous bi-directional link
US7388419B2 (en) 2005-07-22 2008-06-17 Freescale Semiconductor, Inc PVT variation detection and compensation circuit
US7446592B2 (en) 2005-07-22 2008-11-04 Freescale Semiconductor, Inc. PVT variation detection and compensation circuit
DE102007006374B3 (de) 2007-02-08 2008-08-28 Texas Instruments Deutschland Gmbh Digitaler Datenbuffer
US8156392B2 (en) 2008-04-05 2012-04-10 Fusion-Io, Inc. Apparatus, system, and method for bad block remapping
KR101605463B1 (ko) 2009-03-04 2016-03-22 삼성전자 주식회사 피브이티 변동에 둔감한 딜레이 라인을 갖는 지연 고정 루프회로
CN102402454B (zh) * 2010-09-10 2013-10-02 联想(北京)有限公司 一种调节内存运行频率的方法及电子设备
US20120159230A1 (en) * 2010-12-17 2012-06-21 Hao Chen Mechanism for Updating Memory Controller Timing Parameters During a Frequency Change
US8520455B2 (en) 2012-01-10 2013-08-27 Apple Inc. Method and apparatus for training a DLL in a memory subsystem
US9032244B2 (en) 2012-11-16 2015-05-12 Microsoft Technology Licensing, Llc Memory segment remapping to address fragmentation
US9455048B2 (en) 2013-06-28 2016-09-27 Sandisk Technologies Llc NAND flash word line management using multiple fragment pools
US9142324B2 (en) 2013-09-03 2015-09-22 Sandisk Technologies Inc. Bad block reconfiguration in nonvolatile memory
US9460815B2 (en) 2013-12-30 2016-10-04 Sandisk Technologies Llc Reusing partial bad blocks in NAND memory
CN104765577B (zh) * 2015-04-28 2017-08-15 杭州中天微系统有限公司 一种频率自适应的高速存储系统
US10101763B2 (en) 2015-07-29 2018-10-16 Sandisk Technologies Inc. Interface adjustment processes for a data storage device
KR102295058B1 (ko) * 2015-08-19 2021-08-31 삼성전자주식회사 반도체 메모리 시스템 및 반도체 메모리 장치 및 반도체 메모리 장치의 동작방법
US10198383B2 (en) * 2016-12-31 2019-02-05 Sandisk Technologies Llc Systems and methods of adjusting an interface bus speed
US10924113B2 (en) 2017-08-17 2021-02-16 Western Digital Technologies, Inc. Dynamic calibration of frequency and power storage interface

Also Published As

Publication number Publication date
CN109407969A (zh) 2019-03-01
US20190056880A1 (en) 2019-02-21
CN109407969B (zh) 2022-04-01
US10466920B2 (en) 2019-11-05

Similar Documents

Publication Publication Date Title
DE102018115199A1 (de) Verfahren zur maximierung der frequenz während einer datenintegritätsprüfung auf einem physischen schnittstellenbus
DE112018000180T5 (de) System und verfahren zum adaptiven senden frühzeitiger beendigung unter verwendung eines steuerungsspeicherpuffers
DE112017005887T5 (de) Speichersystem und Verfahren zur thermischen Drosselung über eine Befehlsarbitrierung
DE102017128939A1 (de) System und Verfahren zum dynamischen und adaptiven Zusammenführen von Interrupts
DE112018000181T5 (de) System und verfahren für die schnelle ausführung von kapselinternen befehlen
DE112016004629T5 (de) Datencodiertechniken für eine Vorrichtung
DE102018105750A1 (de) System und Verfahren für Hybrid-Push-Pull-Datenmanagement in einem nichtflüchtigen Datenspeicher
DE112017000206T5 (de) Kompensation von Temperaturschwankungen eines Arbeitsspeichers
DE102018214010A1 (de) Verfahren und Vorrichtung zur Reduzierung von unbemerkten Datenfehlern in nichtflüchtigen Speichersystemen
DE102017120961A1 (de) ECC- und Leseeinstellung basierend auf der dynamischen Schätzung eines Speicherfehlermodells
DE102016009806A1 (de) Speichern von paritätsdaten getrennt von geschützten daten
DE112016004148T5 (de) Systeme und Verfahren zur Befehlsautorisierung
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE112019000162T5 (de) Verfahren zum Maximieren von Stromeffizienz in einem Block einer Speicher-Schnittstelle
DE112016004760T5 (de) System und Verfahren für direktes Schreiben auf einen MLC-Speicher
DE112016002631B4 (de) Speicherfunktionszustandsüberwachung
DE112017005637T5 (de) Verfahren und System zur Schreibverstärkungsanalyse
DE112016000777T5 (de) Verzögerungskompensation
DE112018005505T5 (de) Verfahren und vorrichtung zur spezifikation von lese-spannungsversetzungen für einen lesebefehl
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE112016000696B4 (de) Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung
DE112021000776T5 (de) Verwaltung von schreib-operationen in einer nichtflüchtigen speichervorrichtung unter verwendung eines variablen vor-lese-spannungspegels
DE112020004958T5 (de) Dynamische zonenaktivgrenze für offenen zns
DE102020211544A1 (de) Steuerung, betriebsverfahren der steuerung und speichergerät mit derselben
DE112016001699T5 (de) Schutz einer entfernbaren Vorrichtung vor Kurzschlüssen

Legal Events

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

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE