-
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.