-
TECHNISCHES GEBIET
-
Ausführungsformen der Erfindung beziehen sich allgemein auf Speicher-Untersysteme, und betreffen insbesondere die effektive Vermeidung von Zeilen-Cache-Misses (d.h. Zeilen-Cache-Fehler).
-
HINTERGRUND
-
Ein Speicher-Untersystem kann eine oder mehrere Speichervorrichtungen enthalten, die Daten speichern. Bei den Speichervorrichtungen kann es sich zum Beispiel um nichtflüchtige und flüchtige Speichervorrichtungen handeln. Allgemein kann ein Host-System ein Speicher-Untersystem verwenden, um Daten in den Speichervorrichtungen zu speichern und um Daten aus den Speichervorrichtungen abzurufen.
-
Figurenliste
-
Die vorliegende Erfindung wird anhand der nachstehenden detaillierten Beschreibung und der beigefügten Zeichnungen verschiedener Ausführungsformen der Erfindung besser verstanden.
- 1A zeigt ein beispielhaftes Computersystem, das ein Speicher-Untersystem enthält, gemäß Ausführungsformen der vorliegenden Erfindung.
- 1B zeigt ein Computersystem in größerem Detail, das das Speicher-Untersystem mit einem Zeilen-Cache enthält, gemäß einer Ausführungsform.
- 2 ist ein Blockdiagramm, das die Verwendung mehrerer Caches in einem Speicherpfad verschiedener Speichervorrichtungen darstellt, gemäß einer Ausführungsform.
- 3A ist ein Logikdiagramm der Hardware, in der Taktbereichsüberkreuzung auftreten kann, gemäß einigen Ausführungsformen.
- 3B ist das Logikdiagramm aus 3A, das Netzwerk- und Datenpfad-Verzögerungsbedingungen umfasst, gemäß verschiedener Ausführungsformen.
- 4 ist eine Darstellung zur Veranschaulichung des Timings der Taktsignale aus 3A-3B, um die Taktbereichsausgabe zu zeigen, gemäß einer Ausführungsform.
- 5A-5B zeigen ein Flussdiagramm eines beispielhaften Verfahrens zur Durchführung einer effektiven Vermeidung von Zeilen-Cache-Misses gemäß verschiedenen Ausführungsformen.
- 6A ist ein Blockdiagramm von einem Cache-On-Bereich und von anderen Cache-Off-Bereichen des Zeilen-Cache gemäß einer Ausführungsform.
- 6B ist ein Blockdiagramm des Zeilen-Cache aus 6A, in dem der Cache-On-Bereich immer eingeschaltet oder immer mit kritischen Funktionen geladen ist, gemäß einer Ausführungsform.
- 7 ist ein Blockdiagramm der Funktionalität einer manuellen Funktions-Swap-Maschine mit Bezug auf den Zeilen-Cache, gemäß einer Ausführungsform.
- 8 ist ein Blockdiagramm eines beispielhaften Computersystems, in dem Ausführungsformen der vorliegenden Erfindung funktionieren können.
-
DETAILLIERTE BESCHREIBUNG
-
Aspekte der vorliegenden Erfindung sind auf die effektive Vermeidung von Zeilen-Cache-Misses (d.h. effektive Vermeidung von Zeilen-Cache-Fehlern) in Speicher-Untersystemen gerichtet. Ein Speicher-Untersystem kann eine Speichervorrichtung, ein Speichermodul oder ein Hybrid aus einer Speichervorrichtung und einem Speichermodul sein. Beispiele für Speichervorrichtungen und Speichermodule werden nachfolgend in Verbindung mit 1 beschrieben. Allgemein kann ein Host-System ein Speicher-Untersystem verwenden, das eine oder mehrere Speichervorrichtungen enthält, die Daten speichern. Das Host-System kann Daten bereitstellen, die in dem Speicher-Untersystem gespeichert werden sollen, und kann Daten anfordern, die aus dem Speicher-Untersystem abgerufen werden sollen.
-
Das Speicher-Untersystem kann mehrere Speichervorrichtungen oder Speichervorrichtungen enthalten, die Daten von dem Host-System speichern können. Ein Zeilen-Cache ist ausgestaltet, um die Effizienz des Datenabrufs zu beschleunigen, was den Effekt haben kann, die Effizient der Ausführung des Host-Systems (z.B. eines Host-Prozessors) zu verbessern. Wenn der Zeilen-Cache aktiviert ist, kann das Host-System (z.B. der Host-Prozessor) zum Datenabruf auf den Zeilen-Cache zugreifen, und daher besteht keine Notwendigkeit, auf Daten von den Speicherkomponenten oder Speichervorrichtungen zuzugreifen, was erheblich mehr Zeit in Anspruch nehmen würde. Die vom Host-System abgerufenen Daten könnten jedoch auch im Zeilen-Cache fehlen, was dazu führt, dass eine Zeilen-Cache-Maschine des Zeilen-Cache Daten in einem Burst von den Speichervorrichtungen für das Host-System abrufen muss. Nach dem Abrufen können diese Daten anschließend im Zeilen-Cache gespeichert werden, bis sie gelöscht werden.
-
Ein „Miss“ (Fehler) an dem Zeilen-Cache hat mindestens zwei Auswirkungen auf das Host-System. Erstens bewirkt der Fehler am Zeilen-Cache, dass der Zeilen-Cache die Daten aus den Speichervorrichtungen abruft, was, wie erwähnt, Zeit kostet. Außerdem kann der Fehler am Zeilen-Cache ein Zeilen-Cache-Hardware-Problem verursachen, das in manchen Fällen zum Absturz des Host-Systems führen kann. In mindestens einem Fall eines solchen Zeilen-Cache-Hardware-Problems kann eine Taktbereichsüberkreuzung (CDC - Clock Domain Crossing) zwischen einem Puffer-Manager (des Speicher-Untersystems) und dem Host-System dazu führen, dass eine Instruktion (oder ein Funktions-Code), die in den Zeilen-Cache gezogen werden soll, z.B. nicht synchron und damit zu spät eintrifft. Infolgedessen kann das Host-System die falschen Informationen lesen oder an die falsche Stelle in dem Instruktions-Code springen, was einen Fehler verursachen kann, der unter Umständen dazu führt, dass das Host-System abstürzt und neu gestartet werden muss.
-
Da festgestellt wurde, dass Zeilen-Cache-Misses solche Fehler und, in einigen Fällen, Systemabstürze auslösen können, offenbaren die vorliegenden Ausführungsformen, wie Zeilen-Cache-Misses aus der Sicht des Host-Systems vermieden werden können. In einer Ausführungsform kann ein permanent aktiver Bereich (Always-On-Area) des Zeilen-Cache mit kritischen Funktionen vorgeladen sein, die mit einer gewissen Wahrscheinlichkeit das CDC-basierte Zeilen-Cache-Hardware-Problem verursachen. Kritische Funktionen sind hier solche, die selten auftreten (z.B. nicht häufiger mehr als eine bestimmte Anzahl von Tagen) und zeitempfindlich sind (z.B. Zeitüberschreitung nach 15 Mikrosekunden bis zu einer vorbestimmten Anzahl von Hunderten von Millisekunden), worauf noch näher eingegangen wird. Wenn die Gesamtgröße der kritischen Funktionen nicht in den permanent aktiven Bereich des Zeilen-Cache passt, kann die Firmware des Speicher-Untersystems eine manuelle Funktions-Swap-Maschine implementieren, die das Vorladen mehrerer Zeilen des Zeilen-Cache für eine kritische Funktion auslösen kann, bevor die Ausführung der kritischen Funktion fortgesetzt wird. Bei beiden Ansätzen wird der Code für die kritische Funktion in den Zeilen-Cache vorgeladen, wodurch ein Zeilen-Cache-Miss für diese kritische Funktion effektive vermieden wird.
-
Zu den Vorteilen der vorliegenden Erfindung gehört, aber nicht hierauf beschränkt, die Verbesserung der Geschwindigkeit und der Funktionalität eines Host-Systems durch Vorladen einer kritischen Funktion (oder kritischer Funktionen) in einen Zeilen-Cache, wodurch eine Verlangsamung des Systems vermieden wird, was andernfalls stattfinden würde. Durch das Vorladen der kritischen Funktion(en) in den Zeilen-Cache können außerdem bekannte CDC-basierte Zeilen-Cache-Hardware-Probleme vermieden werden, ebenso wie entsprechende Systemabstürze, die in einigen Fällen auftreten können. Weitere Vorteile werden für Fachleute aus den nachfolgend diskutierten Merkmalen zur Vermeidung von Zeilen-Cache-Misses ersichtlich.
-
1A zeigt ein beispielhaftes Computersystem 100A, das ein Speicher-Untersystem 110 enthält, gemäß Ausführungsformen der vorliegenden Erfindung. Das Speicher-Untersystem 110 kann Medien enthalten, wie zum Beispiel eine oder mehrere flüchtige Speichervorrichtungen (z.B. Speichervorrichtung 140), eine oder mehrere nichtflüchtige Speichervorrichtungen (z.B. Speichervorrichtung 130) oder eine Kombination davon. Jede Speichervorrichtung 130 oder 140 kann eine oder mehrere Speicherkomponente(n) sein.
-
Ein Speicher-Untersystem 110 kann eine Speichervorrichtung, ein Speichermodul oder ein Hybrid aus einer Speichervorrichtung und einem Speichermodul sein. Beispiele für eine Speichervorrichtung umfassen ein Solid-State-Laufwerk (SSD), ein Flash-Laufwerk, ein USB-Flash-Laufwerk (Universal Serial Bus Flash Laufwerk), ein eMMC-Laufwerk (Embedded Multi-Media Controller Laufwerk), ein UFS-Laufwerk (Universal Flash Storage Laufwerk), eine SD-Karte (Secure Digital Karte) und ein Festplattenlaufwerk (HDD). Beispiele für Speichermodule sind ein Dual-Inline-Speichermodul (DIMM), ein Small-Outline-DIMM (SO-DIMM) und ein nichtflüchtiges Dual-Inline-Speichermodul (NVDIMM).
-
Das Computersystem 100A kann eine Computervorrichtung sein, wie zum Beispiel ein Desktop-Computer, ein Laptop-Computer, ein Netzwerk-Server, eine mobile Vorrichtung, ein Fahrzeug (z.B. ein Flugzeug, eine Drohne, ein Zug, ein Auto oder ein anderes Transportmittel), eine loT-fähige Vorrichtung (Internet der Dinge Vorrichtung), ein eingebetteter Computer (z.B. einer, der in einem Fahrzeug, einer Industrieanlage oder einer vernetzten kommerziellen Vorrichtung enthalten ist) oder eine solche Computervorrichtung, die einen Speicher und eine Verarbeitungsvorrichtung enthält.
-
Das Computersystem 100A kann ein Host-System 120 umfassen, das mit einem oder mehreren Speicher-Untersystemen 110 verbunden ist. In einigen Ausführungsformen ist das Host-System 120 mit verschiedenen Typen von Speicher-Untersystemen 110 gekoppelt. 1A zeigt ein Beispiel für ein Host-System 120, das mit einem Speicher-Untersystem 110 gekoppelt ist. Wie hier verwendet, bezieht sich „gekoppelt an“ oder „gekoppelt mit“ allgemein auf eine Verbindung zwischen Komponenten oder Vorrichtungen, die eine indirekte kommunikative Verbindung oder eine direkte kommunikative Verbindung (z.B. ohne dazwischenliegende Komponenten oder Vorrichtungen) sein kann, ob verdrahtet oder drahtlos, einschließlich elektrische, optische, magnetische Verbindungen sowie ähnliche Verbindungen.
-
Das Host-System 120 kann einen Prozessor-Chipsatz und einen Software-Stapel enthalten, der von dem Prozessor-Chipsatz ausgeführt wird. Der Prozessor-Chipsatz kann einen oder mehrere Kerne, einen oder mehrere Caches, einen Speicher-Controller (z.B. NVDIMM-Controller) und einen Speicherprotokoll-Controller (z.B. PCIe-Controller, SATA-Controller) enthalten. Das Host-System 120 nutzt das Speicher-Untersystem 110 beispielsweise dazu, um Daten in das Speicher-Untersystem 110 zu schreiben und Daten aus dem Speicher-Untersystem 110 zu lesen.
-
Das Host-System 120 kann über eine physische Host-Schnittstelle, die über einen Systembus 150 kommunizieren kann, mit dem Speicher-Untersystem 110 gekoppelt sein. Beispiele für eine physische Host-Schnittstelle umfassen, aber nicht hierauf beschränkt, eine SATA-Schnittstelle (Serial Advanced Technology Attachment Schnittstelle), eine PCIe-Schnittstelle (Peripheral Component Interconnect Express Schnittstelle), eine USB-Schnittstelle (Universal Serial Bus Schnittstelle), einen Fibre Channel, ein SCSI (Small Computer System Interface), ein SAS (Serial Attached SCSI), eine DIMM-Schnittstelle (Dual Inline Memory Module Schnittstelle) (z.B. eine DIMM-Sockelschnittstelle, die Double Data Rate (DDR) unterstützt), usw. Die physische Host-Schnittstelle kann zur Datenübertragung zwischen dem Host-System 120 und dem Speicher-Untersystem 110 verwendet werden. Das Host-System 120 kann außerdem eine NVMe-Schnittstelle (NVM Express Schnittstelle) verwenden, um auf die Speicherkomponenten (z.B. Speichervorrichtungen 130) zuzugreifen, wenn das Speicher-Untersystem 110 über die PCIe-Schnittstelle mit dem Host-System 120 gekoppelt ist. Die physische Host-Schnittstelle kann eine Schnittstelle für die Weitergabe von Steuersignalen, Adressensignalen, Datensignalen und anderen Signalen zwischen dem Speicher-Untersystem 110 und dem Host-System 120 bereitstellen.
-
Die Speichervorrichtungen können eine beliebige Kombination der verschiedenen Typen von nichtflüchtigen Speichervorrichtungen und/oder flüchtigen Speichervorrichtungen umfassen. Bei den flüchtigen Speichervorrichtungen (z.B. Speichervorrichtung 140) kann es sich um Direktzugriffsspeicher (RAM) handeln, wie zum Beispiel dynamische Direktzugriffsspeicher (DRAM) und synchrone dynamische Direktzugriffsspeicher (SDRAM), ohne hierauf beschränkt zu sein.
-
Einige Beispiele für nichtflüchtige Speichervorrichtungen (z.B. Speichervorrichtung 130) sind Flash-Speicher vom Negativ-Und-Typ (NAND) und Write-in-Place-Speicher, wie zum Beispiel ein dreidimensionaler Kreuzpunkt-Speicher („3D-Kreuzpunkt“-Speicher). Ein Kreuzpunkt-Array eines nichtflüchtigen Speichers kann eine Speicherung von Bits auf Basis einer Änderung des Bahnwiderstands in Verbindung mit einem stapelbaren Kreuzgitter-Datenzugriffs-Array durchführen. Darüber hinaus kann ein nichtflüchtiger Kreuzpunkt-Speicher im Gegensatz zu vielen Flash-Speichern einen Write-in-Place-Vorgang durchführen, bei dem eine nichtflüchtige Speicherzelle programmiert werden kann, ohne dass die nichtflüchtige Speicherzelle zuvor gelöscht wurde.
-
Jede der Speichervorrichtungen 130 kann ein oder mehrere Arrays aus Speicherzellen enthalten. Ein Typ von Speicherzellen, zum Beispiel Single-Level-Zellen (SLC), kann ein Bit pro Zelle speichern. Andere Typen von Speicherzellen, wie zum Beispiel Multi-Level-Zellen (MLCs), Triple-Level-Zellen (TLCs) und Quad-Level-Zellen (QLCs), können mehrere Bits pro Zelle speichern. In einigen Ausführungsformen kann jede der Speichervorrichtungen 130 ein oder mehrere Arrays aus Speicherzellen enthalten, wie zum Beispiel SLCs, MLCs, TLCs, QLCs oder eine beliebige Kombination davon. In einigen Ausführungsformen kann eine bestimmte Speichervorrichtung einen SLC-Bereich und einen MLC-Bereich, einen TLC-Bereich oder einen QLC-Bereich von Speicherzellen enthalten. Die Speicherzellen der Speichervorrichtungen 130 können als Seiten gruppiert werden, die sich auf eine logische Einheit der zum Speichern von Daten verwendeten Speichervorrichtung beziehen können. Bei einigen Speichertypen (z.B. NAND) können die Seiten zu Blöcken gruppiert werden.
-
Obwohl nichtflüchtige Speicherkomponenten, wie zum Beispiel vom Typ 3D-Kreuzpunkt-Speicher und NAND-Speicher, beschrieben werden, kann die Speichervorrichtung 130 auf jedem anderen Typ von nichtflüchtigem Speicher basieren, wie zum Beispiel Festwertspeicher (ROM), Phasenänderungsspeicher (PCM), selbstselektierende Speicher, andere Chalcogenid-basierte Speicher, ferroelektrische Direktzugriffsspeicher (FeRAM), Magneto-Direktzugriffsspeicher (MRAM), Negativ-Oder-Flash-Speicher (NOR-Flash-Speicher) und elektrisch löschbare programmierbare Festwertspeicher (EEPROM).
-
Ein Speicher-Untersystem-Controller 115 (oder Controller 115, der Einfachheit halber) kann mit den Speichervorrichtungen 130 kommunizieren, um Operationen durchzuführen, wie zum Beispiel Lesen von Daten, Schreiben von Daten oder Löschen von Daten in den Speichervorrichtungen 130 und andere solche Operationen. Der Speicher-Untersystem-Controller 115 kann Hardware enthalten, wie zum eine oder mehrere integrierte Schaltungen und/oder diskrete Komponenten, einen Pufferspeicher oder eine Kombination davon. Die Hardware kann eine digitale Schaltung mit dedizierter (d.h. hartkodierter) Logik enthalten, um die hier beschriebenen Operationen durchzuführen. Der Speicher-Untersystem-Controller 115 kann ein Mikro-Controller, eine spezielle Logikschaltung (z.B. ein feldprogrammierbares Gate-Array (FPGA), eine anwendungsspezifische integrierte Schaltung (ASIC), usw.) oder ein anderer geeigneter Prozessor sein.
-
Der Speicher-Untersystem-Controller 115 kann einen Prozessor 117 (z.B. eine Verarbeitungsvorrichtung) enthalten, der ausgestaltet ist, um in einem lokalen Speicher 119 gespeicherte Anweisungen auszuführen. In dem gezeigten Beispiel umfasst der lokale Speicher 119 des Speicher-Untersystem-Controllers 115 einen eingebetteten Speicher, der ausgestaltet ist, um Instruktionen zur Durchführung verschiedener Prozesse, Operationen, logischer Abläufe und Routinen zu speichern, die den Betrieb des Speicher-Untersystems 110 steuern, einschließlich der Abwicklung der Kommunikation zwischen dem Speicher-Untersystem 110 und dem Host-System 120.
-
In einigen Ausführungsformen kann der lokale Speicher 119 Speicherregister enthalten, um Speicherzeiger, abgerufene Daten, usw. zu speichern. Der lokale Speicher 119 kann auch einen Festwertspeicher (ROM) zum Speichern von Mikro-Code enthalten. Obwohl das beispielhafte Speicher-Untersystem 110 in 1A so dargestellt ist, dass es den Speicher-Untersystem-Controller 115 enthält, enthält ein Speicher-Untersystem 110 in einer anderen Ausführungsform der vorliegenden Erfindung keinen Speicher-Untersystem-Controller 115 und kann stattdessen auf einer externen Steuerung basieren (bereitgestellt durch z.B. einen externen Host oder einen vom Speicher-Untersystem getrennten Prozessor oder Controller).
-
Allgemein kann der Speicher-Untersystem-Controller 115 Befehle oder Operationen vom Host-System 120 empfangen und die Befehle oder Operationen in Instruktionen oder geeignete Befehle umwandeln, um die gewünschten Zugriffe auf die Speichervorrichtungen 130 zu erreichen. Der Speicher-Untersystem-Controller 115 kann für andere Operationen verantwortlich sein, wie zum Beispiel Abnutzungsausgleichs-Operationen, Speicherbereinigungs-Operationen, Fehlererfassungs- und Fehlerkorrekturcode-Operationen (ECC-Operationen), Verschlüsselungs-Operationen, Cache-Operationen und Adressenübersetzungen zwischen einer logischen Adresse (z.B. logische Blockadresse (LBA), Namespace) und einer physischen Adresse (z.B. physische Blockadresse), die mit den Speichervorrichtungen 130 in Beziehung stehen. Der Speicher-Untersystem-Controller 115 kann außerdem eine Host-Schnittstellenschaltung enthalten, um mit dem Host-System 120 über die physische Host-Schnittstelle zu kommunizieren. Die Host-Schnittstellenschaltung kann die vom Host-System empfangenen Befehle in Befehlsinstruktionen umwandeln, um auf die Speichervorrichtungen 130 zuzugreifen, und die mit den Speichervorrichtungen 130 verbundenen Antworten in Informationen für das Host-System 120 umwandeln.
-
Das Speicher-Untersystem 110 kann auch zusätzliche Schaltungen oder Komponenten enthalten, die nicht dargestellt sind. In einigen Ausführungsformen kann das Speicher-Untersystem 110 einen Cache oder Puffer (z.B. DRAM) und Adressenschaltungen (z.B. einen Zeilendekodierer und einen Spaltendekodierer) enthalten, die eine Adresse vom Speicher-Untersystem-Controller 115 empfangen und die Adresse dekodieren können, um auf die Speichervorrichtungen 130 zuzugreifen.
-
In einigen Ausführungsformen enthalten die Speichervorrichtungen 130 lokale Medien-Controller 135, die in Verbindung mit dem Speicher-Untersystem-Controller 115 arbeiten, um Operationen an einer oder mehreren Speicherzellen der Speichervorrichtungen 130 auszuführen. Ein externer Controller (z.B. der Speicher-Untersystem-Controller 115) kann die Speichervorrichtung 130 extern verwalten (z.B. Medien-Verwaltungsoperationen an der Speichervorrichtung 130 durchführen). In einigen Ausführungsformen ist eine Speichervorrichtung 130 eine verwaltete Speichervorrichtung, d.h. eine Roh-Speichervorrichtung, die mit einem lokalen Controller (z.B. dem lokalen Controller 135) für die Medien-Verwaltung innerhalb desselben Speichervorrichtungsbaustein kombiniert ist. Ein Beispiel für eine verwaltete Speichervorrichtung ist eine verwaltete NAND-Vorrichtung (MNAND).
-
In einigen Ausführungsformen umfasst der Controller 115 einen ECC-Kodierer/Dekodierer 111 (Error-Correcting Code Kodierer/Dekodierer). Der ECC-Kodierer/Dekodierer 111 kann eine ECC-Kodierung für Daten, die in die Speichervorrichtungen 130 geschrieben werden, bzw. eine ECC-Dekodierung für Daten, die aus den Speichervorrichtungen 130 gelesen werden, durchführen. Die ECC-Dekodierung kann durchgeführt werden, um ein ECC-Codewort zu dekodieren, um Fehler in den Roh-Lesedaten zu korrigieren, und in vielen Fällen auch, um die Anzahl der Bitfehler in den Roh-Lesedaten zu melden.
-
1B zeigt ein detaillierteres Computersystem 100B, das das Speicher-Untersystem 115 mit einem Zeilen-Cache 118 enthält, gemäß einer Ausführungsform. In den offengelegten Ausführungsformen kann der Zeilen-Cache 118 eine Zeilen-Cache-Maschine 118A enthalten. Der Prozessor 117 kann ferner einen SATA-Controller 122 (zur Steuerung von SATA-Vorrichtungen), einen Puffer-Manager 124 (zur Steuerung der Speichervorrichtungen 140) und einen Flash-Controller 126 (zur Steuerung von NAND- oder anderen Flash-Vorrichtungen) enthalten. Der Speicher-Untersystem-Controller 115 kann außerdem einen Turbo-Mode-Treiber 113, eine SATA-Physical-Layer-Schaltung (SATA-PHY-Schaltung) 123, eine Speicher-PHY-Schaltung (MEM-PHY-Schaltung) 125 und eine NAND-PHY-Schaltung 127 enthalten. Die PHY-Komponenten können in alternativen Ausführungsformen außerhalb des Speicher-Untersystem-Controllers 115, aber immer noch innerhalb des Speicher-Untersystems 110, angeordnet sein. In den offengelegten Ausführungsformen ist die SATA-PHY-Schaltung 123 eine Verbindung zwischen dem SATA-Controller 122 und einer SATA-Vorrichtung der Speichervorrichtungen 130; die MEM-PHY-Schaltung 125 ist eine Verbindung zwischen dem Puffer-Manager 124 und Speicherkomponenten der Speichervorrichtungen 140; und die NAND-PHY-Schaltung 127 ist eine Verbindung zwischen dem Flash-Controller 126 und einer Flash-Vorrichtung der Speichervorrichtungen 130. Die Speicherkomponenten der Speichervorrichtungen 140 können DIMMs mit DDR (doppelter Datenrate) (oder andere Hochgeschwindigkeitsspeicher) sein, und daher kann die MEM-PHY-Schaltung 125 beispielsweise ein DDR PHY oder ein anderer Hochgeschwindigkeitsspeicher PHY sein.
-
Der Zeilen-Cache 118 kann, wie dargestellt, zwischen dem Puffer-Manager 124 und dem Systembus 150 gekoppelt sein. Die Zeilen-Cache-Maschine 118A kann eine Schnittstelle mit dem Host-System 120 und dem Puffer-Manager 124 bilden, um Daten in den Zeilen-Cache 118 zu schreiben (wenn sie z.B. als Reaktion auf einen Zeilen-Cache-Miss von einem der Speichervorrichtungen 140 abgerufen werden) und um Daten aus dem Zeilen-Cache 118 zu lesen (z.B. wenn sie im Falle eines Zeilen-Cache-Treffers an das Host-System 120 gesendet werden). In bestimmten Ausführungsformen liest (und schreibt) die Zeilen-Cache-Maschine 118A Daten in Bursts mit der Granularität einer Cache-Zeilen-Partition, die in der Regel 64 Byte beträgt, je nach Implementierung, aber auch mehr oder weniger als 64 Byte an Daten umfassen kann.
-
In offengelegten Ausführungsformen kann der Turbo-Modus-Treiber 113 eine Firmware sein, die vom Prozessor 117 ausgeführt werden kann, um in einem schnelleren (z.B. Turbo) Modus zu arbeiten, der das Abrufen von Code und Daten (einschließlich der Ausführung der kritischen Funktionen) aus dem Zeilen-Cache 118 umfasst. Der Turbo-Modus hat somit eine direkte Auswirkung auf die Erhöhung der Ausführungsgeschwindigkeit von zeitkritischen Funktionen. Im Gegensatz dazu werden im Normal-Modus Code und Daten (sowie die Ausführung anderer Funktionen) mit einer viel geringeren Geschwindigkeit aus einer der Speichervorrichtungen 140 abgerufen. In der vorliegenden Offenbarung werden Umstände beschrieben, unter denen der Turbo-Modus-Treiber 113 aufgerufen werden kann, um in den Turbo-Modus zu wechseln, z.B. um den Zugriff auf den Zeilen-Cache 118 zu ermöglichen, um Funktionen aus dem Zeilen-Cache 118 auszuführen. Ebenso kann der Turbo-Modus-Betrieb deaktiviert werden, z.B. um den Zugriff auf den Zeilen-Cache 118 während des normalen Betriebs zu deaktivieren.
-
2 ist ein Blockdiagramm, das die Verwendung mehrerer Caches in einem Speicherpfad verschiedener Speichervorrichtungen veranschaulicht, gemäß einer Ausführungsform. In relevanten Ausführungsformen der vorliegenden Erfindung umfasst die beispielhafte Computerumgebung 100B ferner mindestens zwei Host-Prozessoren (CPU0 und CPU1) innerhalb des Host-Systems 120, und der Systembus 150 kann ein AHBL-Protokollbus (Advanced Host Bus Lite Protokollbus) sein, um mit dem Speicher-Untersystem 110 zu kommunizieren. Innerhalb des Speicher-Untersystems 110 geht ein Zeilen-Cache-Speicherpfad vom Puffer-Manager (BM) 124 durch eine BM-Zeilen-Cache-Schnittstelle 204, einen Zeilen-Cache-BM-Arbiter 208, einen Lese-Cache 212 und einen BM-Zeilen-Cache-Arbiter 216, der mit dem AHBL-Protokollbus gekoppelt ist. In einer Ausführungsform ist der BM-Zeilen-Cache-Arbiter 216 derselbe wie die Zeilen-Cache-Engine 118A und der Lesecache 212 ist der Zeilen-Cache 118 (1).
-
In verschiedenen Ausführungsformen kann der Lese-Cache 212 mehrere Cache-Zeilen von 64 Bytes umfassen, obwohl auch Cache-Zeilen unterschiedlicher Größe denkbar sind. In einer Ausführungsform ist der Lese-Cache 212 schreibgeschützt. Die Startadresse jeder Cache-Zeile kann auf 64 Bytes ausgerichtet sein. Wenn bei einem CPU-Zugriff ein Fehler (Miss) auftritt, kann eine Cache-Zeile ungültig gemacht werden, und eine 64-Byte-Burst-Anforderung wird an den Puffer-Manager 124 gesendet. Die ungültig gemachte Cache-Zeile kann auf der Grundlage eines LRU-Schemas (Least Recently Used Schema) ausgewählt werden, wobei das LRU zwischen den beiden CPU-Kernen (CPU 0 und CPU 1) geteilt wird. Wenn Daten von der Speichervorrichtung 140 zurückgegeben werden, kann der Wartezustand der CPU aufgehoben werden und die Daten können wieder an den Systembus 150 übergeben werden. Die Cache-Logik (z.B. der Zeilen-Cache BM-Arbiter 208) kann weiterhin alle 64 Bytes aus dem Speicher in die Cache-Zeile speichern.
-
3A ist ein Logikdiagramm der Hardware, in der Taktbereichsüberkreuzung (Clock Domain Crossing CDC) gemäß einigen Ausführungsformen auftreten kann. Die dargestellte Logikschaltung prüft die letzte Datenankunft vom Puffer-Manager 124 und vergleicht sie mit einer Datenzählung, z.B. um festzustellen, wann sich genügend Daten für eine Burst-Kommunikation an die CPU 0 oder CPU 1 angesammelt haben. Links in 3A sind zwei eingehende Signale zu sehen: Daten vom Puffer-Manager 124 (z.B. „von BM“) und ein Taktsignal vom Controller 115 (z.B. „hdc_clk“, wobei „hdc“ für Host-Vorrichtungs-Controller und „clk“ für Takt steht). Das hdc_clk-Signal kann in eine „Zählung erfolgt“-Schaltung („count done“-Schaltung (z.B. cnt_done) einfließen, der verfolgen kann, wann genügend Code für eine Burst-Kommunikation zur CPU 0 oder CPU 1 eingetroffen ist. Auf der rechten Seite kann ein Signal für die letzte Zählung (LastCnt) ausgegeben werden, das auf den Eingängen von zwei vorangehenden Schaltungsblöcken basiert, nämlich den Schaltungen S1 Zählung-Erfolgt („count done“ - cnt_done_s1) und S2 Zählung-Erfolgt („count done“ - cnt_done_s2). Die S1- und S2-Zählung-Erfolgt-Schaltungen können durch einen CPU-Takt (cpu_clk) von entweder CPU0 oder CPU1 des Host-Systems 120 angesteuert werden.
-
In verschiedenen Ausführungsformen kann, da es keine Zeitsteuerung (Timing) zwischen der cnt_done-Schaltung und der cnt_done_s1-Schaltung gibt (z.B. haben sie asynchrone Taktbereiche), eine Setup- und Hold-Verletzung zwischen der cnt_done-Schaltung und der cnt_done_s1-Schaltung auftreten, z.B. aufgrund des CDC, was zu einem nicht-deterministischen Betrieb der cnt_done_s1-Schaltung führt. Die gestrichelte Linie bezieht sich auf den Bereich des Host-Systems 120, und der Rest des Logikdiagramms bezieht sich auf den Bereich des Speicher-Untersystems 110.
-
3B ist das Logikdiagramm aus 3A, das die Netzwerk- und Datenpfad-Verzögerungsbedingungen gemäß verschiedenen Ausführungsformen enthält. In Ergänzung zu dem Logikdiagramm aus 3A ist die Beziehung zwischen der Datenankunftszeit und der Taktnetzwerkverzögerung der cnt_done_s1-Schaltung dargestellt. Beispielsweise kann die Datenankunftszeit gleich der Taktnetzwerkverzögerung (CND_BM) von bm_clk und der Datenpfadverzögerung (DPD) sein. Die Taktnetzwerkverzögerung (CND_CPU) kann gleich dem cpu_clk-Signal sein. Wenn Daten in einem instabilen Fenster einer steigenden Flanke des cpu_clk-Signals ankommen, besteht die Möglichkeit der Meta-Stabilität, d.h. ein digitales elektronisches System kann für eine unbegrenzte Zeit in einem instabilen Gleichgewicht oder metastabilen Zustand verharren. Das instabile Fenster kann ungefähr zwischen (cpu_lk ansteigende Flanke - Setup-Zeit) und (cpu_clk ansteigende Flanke und Haltezeit) liegen, was in dem Setup- und Hold-Fenster aus 4 visuell dargestellt ist.
-
4 ist eine Darstellung zur Veranschaulichung des Timings der Taktsignale aus 3A-3B, um die Taktbereichsausgabe zu zeigen, gemäß einer Ausführungsform. Von oben nach unten sind: i) der Takt des Puffer-Managers (BM) 124 (bm_clk); ii) das Signal an der cnt_done-Schaltung; iii) der Takt (cpu_clk) von CPU 0 oder CPU 1 des Host-Systems 120; iv) das Signal an der cnt_done_s1-Schaltung; v) das Signal an der cnt_done_s2-Schaltung; und vi) das Signal, das als letzter Zählerstand ausgegeben wird (LastCnt).
-
Zwischen dem cnt_done-Signal und dem cpu_clk-Signal ist ein Setup- und Halte-Fenster (z.B. zwei volle Taktzyklen) eingefügt, in dem die Signale an den Schaltungen cnt_done_s1 und cnt_done_s2 übergehen können. So kann sich z.B. cnt_done innerhalb des Setup/Halte-Fensters des cpu_clk für cnt_done_s1 ändern. Aufgrund einer Setup/Halte-Verletzung kann cnt_done_s1 langsam ansteigen und einen Grenzwert um eine Schwellenspannung (Vth) im Setup/Halte-Fenster von cnt_done_s2 erreichen. Dementsprechend kann cnt_done_s1 nach der Taktflanke #2 weiter ansteigen. Da cnt_done_s2 cnt_done_s1 bei einem hohen Taktwert (Taktflanke #2) abfängt, wird cnt_done_s2 langsam hoch. Aufgrund des marginalen Werts von cnt_done_s1 bei Taktflanke #2 wird der LastCnt-Impuls nicht wie beabsichtigt bei Taktflanke #2 auf High gefangen. Dementsprechend ist LastCnt bei Taktflanke Nr. 2 niedrig und bei Taktflanke Nr. 3 ebenfalls niedrig, was durch den Wert von cnt_done_s2 ausgelöst wird. Der Wert von LastCnt, der niedrig ist, obwohl er hoch sein sollte, kann zu einem verspäteten Eintreffen des Instruktions-Codes bei CPU 0 oder CPU 1 führen, je nachdem, welche den Instruktions-Code angefordert hat. Wie erörtert, kann dieses verspätete Eintreffen des Instruktions-Codes einen Fehler verursachen, der in einigen Fällen zu einem Absturz des Host-Systems 120 führen kann.
-
5A-5B zeigen ein Flussdiagramm eines beispielhaften Verfahrens 500 zur Ausführung einer effektiven Vermeidung von Zeilen-Cache-Misses (Zeilen-Cache-Fehlern) gemäß verschiedenen Ausführungsformen. Das Verfahren 500 kann von einer Verarbeitungslogik ausgeführt werden, die Hardware (z.B. Verarbeitungsvorrichtung, Schaltungen, dedizierte Logik, programmierbare Logik, Mikro-Code, Hardware einer Vorrichtung, integrierte Schaltungen, usw.), Software (z.B. Befehle, die auf einer Verarbeitungsvorrichtung laufen oder ausgeführt werden) oder eine Kombination davon umfassen kann. In einigen Ausführungsformen wird das Verfahren 500 von dem Controller 115 (z.B. dem Turbo-Modus-Treiber 113) aus 1 durchgeführt. Obwohl in einer bestimmten Abfolge oder Reihenfolge dargestellt, kann die Reihenfolge der Prozesse, sofern nicht anders angegeben, geändert werden. Daher sind die dargestellten Ausführungsformen nur als Beispiele zu verstehen, und die dargestellten Prozesse können in einer anderen Reihenfolge ausgeführt werden, und einige Prozesse können parallel ausgeführt werden. Außerdem können in verschiedenen Ausführungsformen ein oder mehrere Prozesse weggelassen werden. Es sind also nicht alle Prozesse in jeder Ausführungsform erforderlich. Andere Prozessabläufe sind möglich.
-
Unter Bezugnahme auf 5A kann das Verfahren 500 bei Operation 510 damit beginnen, dass die Verarbeitungslogik (z.B. die Firmware des Controllers 115) im Normal-Modus läuft. Wie erörtert, kann der Normal-Modus das Abrufen von Code und Daten (sowie die Ausführung anderer Funktionen oder Firmware-Instruktionen) aus einer der Speichervorrichtungen 140 (im Gegensatz zum Zeilen-Cache 118) umfassen. Bei Operation 520 kann die Verarbeitungslogik ein oder mehrere Ereignisse empfangen, die sich auf die Ausführung der Instruktionen beziehen. In einigen Ausführungsformen werden die Ereignisse als bestimmte Typen von Funktionen erkannt, die in der Firmware ausgeführt werden können, oder sie entsprechen diesen. Eine solche Erkennung kann das Identifizieren von Code-Segmenten oder bestimmten Firmware-Funktionen umfassen.
-
Bei Operation 530 kann die Verarbeitungslogik bestimmen, ob ein empfangenes Ereignis in einer Liste kritischer Ereignisse enthalten ist. Beispielsweise kann eine Datenbank oder Datenstruktur (z.B. im lokalen Speicher 119 gespeichert) eine Liste kritischer Ereignisse enthalten. Die kritischen Ereignisse können zeitlich so empfindlich sein, dass sie im Zeilen-Cache 118 ausgeführt werden und globale Ressourcen erfordern, um das Ausführen der entsprechenden kritischen Funktionen zu beschleunigen. Zu diesen kritischen Ereignissen können beispielsweise mehrere Logging-Ereignisse (Protokollierungsereignisse), ein Sanitize-Befehl (Bereinigungsbefehl), ein Smart-Command-Transport-Befehl, ein Schreib-nicht-korrigierbar-Befehl, ein Download-Firmware-Befehl und ein Trim-Befehl gehören. Diesen Ereignissen können mit kritischen Funktionen in Beziehung gesetzt werden, die ausgeführt werden, um das kritische Ereignis auszuführen.
-
In verschiedenen Ausführungsformen handelt es sich bei den entsprechenden kritischen Funktionen um Funktionen, die selten ausgeführt werden (z.B. nicht mehr als einmal pro einer Grenzwert-Anzahl von Tagen, wie zum Beispiel einige Tage, eine Woche oder mehrere Wochen) und zeitempfindlich sind (z.B. Zeitüberschreitung nach 15 Mikrosekunden bis zu einer vorbestimmten Anzahl von Hunderten von Millisekunden, bis zu und einschließlich einer oder mehrerer Sekunden). Ein SATA-COMRESET-Timeout-Wert beträgt beispielsweise acht Sekunden; eine Wiederherstellungszeit für einen sauberen Stromzyklus Clean Power Cycle Recovery Time) beträgt 100 Millisekunden (ms); eine Wiederherstellungszeit für einen schmutzigen Stromzyklus (Dirty Power Cycle Recovery Time) beträgt eine Sekunde; und für eine unsaubere Abschaltung sollte ein SSD-Laufwerk die Kontext-Sicherungsarbeit in 15 ms abschließen. In einigen Ausführungsformen können kritische Funktionen beispielsweise eine Funktion im Zusammenhang mit der Boot-Up-Sequenz des Laufwerks, eine Sanitize-Handhabungs-Funktion (Sanitize_Handle_Func()), eine Smart-Command-Transport-Funktion (SCT_Hand)e_Func()), eine Schreib-nicht-korrigierbar-Handhabungs-Funktion (WUNC_Handle_Func()), eine Firmware-Image-Download-Funktion (DM_Segmented()) und eine Trim-Handhabungs-Funktion (Trim_Handle_Func()) umfassen, ohne darauf beschränkt zu sein.
-
Befindet sich das empfangene Ereignis nicht in der Liste der kritischen Ereignisse, kann die Verarbeitungslogik zu Operation 510 zurückkehren und im Normal-Modus weiterlaufen. Befindet sich das empfangene Ereignis dagegen in der Liste der kritischen Ereignisse, kann die Verarbeitungslogik bei Operation 540 den Zugriff auf den Zeilen-Cache 118 ermöglichen bzw. aktivieren. In einem Beispiel wird der Zugriff auf den Zeilen-Cache 118 durch Setzen von einem oder mehreren Registern in dem lokalen Speicher 119 aktiviert, der den Bereich von Code und Daten enthalten soll, der in den Speichervorrichtungen 140 gespeichert ist und für den Zeilen-Cache-Zugriff zur Verfügung steht. Die Ereignishandhabung sollte so kurz wie möglich sein, um die Möglichkeit des Auftretens des CDC-Hardware-Problems während des Zeitraums der Aktivierung des Zeilen-Cache zu verringern.
-
Bei Operation 545 kann die Verarbeitungslogik als Reaktion auf die Anweisung, eine kritische Funktion auszuführen, die mit dem kritischen Ereignis in Beziehung steht, fortfahren, im Turbo-Modus zu laufen, um die kritische Funktion auszuführen. Die Anweisung zur Ausführung der kritischen Funktion kann durch einen Funktionsaufruf oder durch Setzen einer Programmzähleradresse auf eine Startadresse der kritischen Funktion erfolgen. Wie erörtert, kann der Turbo-Modus das Abrufen von Code und Daten (einschließlich der Ausführung der kritischen Funktion, die mit dem/den kritischen Ereignis(en) verbunden ist) aus dem Zeilen-Cache 118 im Namen des Host-Systems 120 umfassen. Die Aktivierung des Turbo-Modus kann global erfolgen, und somit können der Code und die Daten, die sich im Zeilen-Cache-Bereich befinden (z B. gemäß den Registern des lokalen Speichers 119), vom Host-System 120 (z.B. CPU 0 oder CPU 1) über den Zeilen-Cache 118 und nicht direkt von der Speichervorrichtung 140 abgerufen werden.
-
In verschiedenen Ausführungsformen kann ein kritisches Ereignis in Abhängigkeit von der Größe der kritischen Funktionen im Vergleich zu einer Größe eines immer aktiven Bereichs (Always-On-Area) des Zeilen-Cache unterschiedlich behandelt werden, wie unter Bezugnahme auf 5B und 6 erörtert wird. Bei Operation 560 kann die Verarbeitungslogik die Beendigung der Ausführung anstehender kritischer Funktionen und damit die Handhabung anstehender kritischer Ereignisse erkennen. Wenn nicht alle kritischen Ereignisse (oder Funktionen) vollständig abgearbeitet wurden, kann das Verfahren 500 zu Operation 530 zurückkehren und mit der Bearbeitung zusätzlicher Ereignisse fortfahren, wie unter Bezugnahme auf die Operationen 530 bis 545 beschrieben. Wenn ja, d.h. das/die Ereignis(e) wurden gehandhabt, kann die Verarbeitungslogik bei Operation 570 den Zugriff auf den Zeilen-Cache deaktivieren. In einer Ausführungsform wird der Zugriff auf den Zeilen-Cache durch Aktualisieren oder Entfernen des Code- und Datenbereichs aus den Registern im lokalen Speicher 119, die den immer aktiven Bereich des Zeilen-Cache definieren, deaktiviert.
-
Unter zusätzlicher Bezugnahme auf 5B kann die Verarbeitungslogik nach Operation 545 bei Operation 550 bestimmen, ob die Gesamtgröße der kritischen Funktionen kleiner oder gleich dem immer aktiven Bereich des Zeilen-Cache ist. In einer Ausführungsform beträgt die Größe des immer aktiven Bereichs des Zeilen-Cache 32 Zeilen mal 64 Byte pro Zeile oder 2048 Byte, z.B. etwa 2 Kilobyte (KB) (obwohl je nach Implementierung und/oder Verarbeitungsmodus auch andere Größen denkbar sind). 6A ist ein Blockdiagramm eines Cache-On-Bereichs 110 und anderer Cache-Off-Bereiche 104A, 104B des Zeilen-Cache 118 gemäß einer Ausführungsform. 6B ist ein Blockdiagramm des Zeilen-Cache aus 6A, in dem der Cache-On-Bereich 110 in einen immer aktiven Bereich (Always-On-Area) 112 des Zeilen-Cache 118 umgewandelt wird, gemäß einer Ausführungsform. Immer aktiv zu sein („always on“) bedeutet, immer zugreifbar zu sein, um Code und Daten zu speichern, um das Abrufen von Daten und die Ausführung von kritischen Befehlen zu beschleunigen, die direkt aus dem Zeilen-Cache 118 ausgeführt werden können.
-
In offengelegten Ausführungsformen kann die Verarbeitungslogik bei Operation 552 die kritischen Funktionen in den immer aktiven Bereich 112 des Zeilen-Cache 118 vorladen, wenn die Gesamtgröße der kritischen Funktionen kleiner oder gleich dem immer aktiven Bereich 112 des Zeilen-Cache 118 ist. Operation 552 kann dadurch den immer eingeschalteten Bereich 112 des Zeilen-Caches in einen immer geladenen Bereich des Cache umwandeln, z.B. immer mit den kritischen Funktionen geladen (zumindest bis zum System-Reset). In einigen Ausführungsformen wird die Operation 552 beim Starten des Host-Systems 120 ausgeführt. In anderen Ausführungsformen wird die Operation 552 bei der Initialisierung des Controllers 115 ausgeführt.
-
Bei Operation 554 kann die Verarbeitungslogik die kritische Funktion, die mit dem empfangenen Ereignis in Beziehung steht, aus dem immer geladenen Bereich des Zeilen-Caches ausführen. Auf diese Weise wird die Ausführung der kritischen Funktion im Zeilen-Cache nicht verfehlt, da die kritische Funktion immer in den Zeilen-Cache 118 geladen werden soll, z.B. beim Start des Host-Systems 120.
-
Unter fortgesetzter Bezugnahme auf 5B kann das Verfahren 500 zu einer alternativen Ausführungsform verzweigen, bei der der immer aktive Bereich (Always-On-Area) 112 nicht immer mit allen kritischen Funktionen geladen wird, wenn bei Operation 550 die Gesamtgröße der kritischen Funktionen größer ist als das Always-on-Area 112 des Zeilen-Cache 118. Genauer gesagt, kann die Firmware des Controllers 115 eine manuelle Funktions-Swap-Maschine 700 implementieren. 7 ist ein Blockdiagramm der Funktionalität der manuellen Funktions-Swap-Maschine 700 mit Bezug auf den Zeilen-Cache 118 gemäß einer Ausführungsform. Die manuelle Funktions-Swap-Engine 700 kann so arbeiten, dass sie Daten in Zeilen des Zeilen-Cache auslagert (z.B. gemäß dem am wenigsten verwendeten oder einem ähnlichen Algorithmus) und die kritische Funktion, die mit dem empfangenen Ereignis verbunden ist, einlagert, bevor der Prozessor 117 die kritische Funktion aus dem Zeilen-Cache 118 ausführen kann. Die kritische Funktion kann in der Speichervorrichtung 140 gespeichert und somit ausgelagert werden. Dies kann wie in dem alternativen Zweig aus 5B beschrieben durchgeführt werden.
-
Bei Operation 562 kann die Verarbeitungslogik verifizieren, dass die kritische Funktion nicht größer ist als die Größe des immer aktiven Bereichs des Zeilen-Cache, z.B. damit die Verarbeitungslogik weiß, dass die kritische Funktion im immer aktiven Bereich 112 des Zeilen-Cache 118 gespeichert werden kann. Wenn diese Verifizierung fehlschlägt, obwohl dies der Kürze halber nicht dargestellt ist, kann das Verfahren 500 in einer Schleife zu Operation 510 und zur normalen Ausführung zurückkehren, da eine Ausführung aus dem Zeilen-Cache 118 möglicherweise nicht möglich ist.
-
Bei Operation 564 kann die Verarbeitungslogik (z.B. die manuelle Funktions-Swap-Maschine 700) alle Daten aus mehreren Zeilen des immer aktiven Bereichs 112 des Zeilen-Cache auslagern. Diese Datenauslagerung ist optional in dem Sinne, dass die Auslagerung erfolgt, wenn genügend Cache-Zeilen frei werden müssen, um die kritische Funktion in den Zeilen-Cache 118 zu importieren.
-
Bei der Operation 566 kann die Verarbeitungslogik (z.B. die manuelle Funktions-Swap-Engine 700) eine erste Anzahl von Bytes jeder Zeilen-Partition der kritischen Funktion aus der Speichervorrichtung (z.B. eine der Speichervorrichtungen 140) in entsprechende Zeilen der mehreren Zeilen des Zeilen-Cache 118 lesen. Wie in 7 dargestellt, kann diese Anzahl von Bytes in verschiedenen Ausführungsformen eine kleine Zahl sein, wie zum Beispiel zwei Bytes, vier Bytes oder sechs Bytes. Das Einlesen dieser kleinen Anzahl von Bytes nimmt nicht viel Zeit in Anspruch, kann aber vorteilhafterweise die Hardware des Controllers 115 veranlassen, den Rest jeder Zeilen-Partition der kritischen Funktion automatisch einzulesen. Die Hardware des Controllers 115 führt diese automatischen Schreib- oder Lese-Bursts in größeren Datenpaketen durch, wie z.B. 64 Byte (obwohl auch andere Bytezahlen, wie z.B. 32 Byte oder 128 Byte, denkbar sind).
-
In Operation 568 kann die Verarbeitungslogik die Ausführung der kritischen Funktion aus dem Zeilen-Cache erlauben, nachdem die mehreren Zeilen des Zeilen-Cache durch die Zeilen-Cache-Hardware vollständig geladen wurden. Das heißt, dass die Ausführungsphase der kritischen Funktion von der Ladephase getrennt ist und somit die Ausführung der kritischen Funktion vorübergehend so lange verzögert wird, dass sichergestellt ist, dass der Code der kritischen Funktion zunächst vollständig in den Zeilen-Cache 118 geladen wird. Auf diese Weise wird ein Zeilen-Cache-Miss effektiv vermieden, da sichergestellt werden kann, dass die Ausführung der kritischen Funktion auf den Zeilen-Cache trifft.
-
8 zeigt eine beispielhafte Maschine eines Computersystems 800, in der ein Satz von Instruktionen ausgeführt werden kann, um die Maschine zu veranlassen, eine oder mehrere der hier besprochenen Verfahren durchzuführen. In einigen Ausführungsformen kann das Computersystem 800 einem Host-System entsprechen (z.B. dem Host-System 120 der 1A-1B), das ein Speicher-Untersystem (z.B. das Speicher-Untersystem 110 der 1A-1B) enthält, mit diesem gekoppelt ist oder dieses verwendet, oder es kann verwendet werden, um die Operationen eines Controllers 115 auszuführen (z.B. um ein Betriebssystem auszuführen, um Operationen durchzuführen, die dem Turbo-Modus-Treiber 113 aus 1B entsprechen). In alternativen Ausführungsformen kann die Maschine mit anderen Maschinen in einem LAN, einem Intranet, einem Extranet und/oder dem Internet verbunden (z.B. vernetzt) sein. Die Maschine kann in der Funktion eines Servers oder einer Client-Maschine in einer Client-Server-Netzwerkumgebung, als Peer-Maschine in einer Peer-to-Peer-Netzwerkumgebung (oder verteilten Netzwerkumgebung) oder als Server oder Client-Maschine in einer Cloud-Computing-Infrastruktur oder Cloud-Computing-Umgebung arbeiten.
-
Die Maschine kann ein Personal Computer (PC), ein Tablet-PC, eine Set-Top-Box (STB), ein Personal Digital Assistant (PDA), ein Mobiltelefon, eine Web-Anwendung, ein Server, ein Netzwerk-Router, ein Switch oder eine Bridge oder eine beliebige Maschine sein, die in der Lage ist, eine Reihe von Instruktionen (sequenziell oder anderweitig) auszuführen, die die von dieser Maschine auszuführenden Aktionen spezifizieren. Auch wenn eine einzelne Maschine dargestellt ist, umfasst der Begriff „Maschine“ auch eine beliebige Sammlung von Maschinen, die einzeln oder gemeinsam einen Satz (oder mehrere Sätze) von Instruktionen ausführen, um eine oder mehrere der hier erörterten Verfahren durchzuführen.
-
Das beispielhafte Computersystem 800 umfasst eine Verarbeitungsvorrichtung 802, einen Hauptspeicher 804 (z.B. Festwertspeicher (ROM), Flash-Speicher, dynamische Direktzugriffsspeicher (DRAM), wie zum Beispiel synchrone DRAM (SDRAM) oder Rambus DRAM (RDRAM), usw.), einen statischen Speicher 806 (z.B. Flash-Speicher, statische Direktzugriffsspeicher (SRAM), usw.) und ein Datenspeichersystem 818, die über einen Bus 830 miteinander kommunizieren.
-
Die Verarbeitungsvorrichtung 802 kann durch eine oder mehrere Mehrzweck-Verarbeitungsvorrichtungen realisiert sein, wie ein Mikroprozessor, eine zentrale Verarbeitungseinheit oder ähnliches. Insbesondere kann die Verarbeitungsvorrichtung ein CISC-Mikroprozessor (Complex Instruction Set Computing Mikroprozessor), ein RISC-Mikroprozessor (Reduced Instruction Set Computing Mikroprozessor), ein VLIW-Mikroprozessor (Very Long Instruction Word Mikroprozessor) oder ein Prozessor sein, der andere Sätzen von Instruktionen implementiert, oder Prozessoren, die eine Kombination von Sätzen von Instruktionen implementieren. Bei der Verarbeitungsvorrichtung 802 kann es sich auch um eine oder mehrere spezielle Verarbeitungsvorrichtungen handeln, wie zum Beispiel eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), ein digitaler Signalprozessor (DSP), ein Netzwerkprozessor oder ähnliches. Die Verarbeitungsvorrichtung 802 ist ausgestaltet, um Befehle 826 zur Durchführung der hier besprochenen Operationen und Schritte auszuführen. Das Computersystem 800 kann ferner eine Netzwerk-Schnittstellenvorrichtung 808 zur Kommunikation über das Netzwerk 820 enthalten.
-
Das Datenspeichersystem 818 kann ein maschinenlesbares Speichermedium 824 (auch als computerlesbares Medium bekannt) enthalten, auf dem ein oder mehrere Sätze von Instruktionen 826 oder Software gespeichert sind, die eine oder mehrere der hier beschriebenen Verfahren oder Funktionen verkörpern. Die Instruktionen 826 können sich auch vollständig oder zumindest teilweise im Hauptspeicher 804 und/oder in der Verarbeitungsvorrichtung 802 befinden, während sie von dem Computersystem 800 ausgeführt werden, wobei der Hauptspeicher 804 und die Verarbeitungsvorrichtung 802 ebenfalls maschinenlesbare Speichermedien darstellen. Das maschinenlesbare Speichermedium 824, das Datenspeichersystem 818 und/oder der Hauptspeicher 804 können dem Speicher-Untersystem 110 der 1A-1B entsprechen.
-
In einer Ausführungsform enthalten die Instruktionen 826 Instruktionen zum Implementieren einer Funktionalität, die einer Fehlerbestimmungskomponente entspricht (z.B. dem Turbo-Modus-Treiber 113 aus 1B). Obwohl das maschinenlesbare Speichermedium 824 in einem Ausführungsbeispiel als einzelnes Medium dargestellt ist, sollte der Begriff „nichttransitorisches maschinenlesbares Speichermedium“ so verstanden werden, dass er ein einzelnes Medium oder mehrere Medien umfasst, die den einen oder die mehreren Sätze von Instruktionen speichern. Der Begriff „maschinenlesbares Speichermedium“ soll auch jedes Medium umfassen, das in der Lage ist, einen Satz von Instruktionen zur Ausführung durch die Maschine zu speichern oder zu kodieren, und die Maschine veranlasst, eine oder mehrere der Verfahren Methoden der vorliegenden Erfindung durchzuführen. Der Begriff „maschinenlesbares Speichermedium“ soll folglich Solid-State-Speicher, optische Medien und magnetische Medien umfassen, aber nicht darauf beschränkt.
-
Einige Teile der vorangehenden detaillierten Beschreibungen wurden in Form von Algorithmen und symbolischen Darstellungen von Operationen an Datenbits in einem Computerspeicher dargestellt. Diese algorithmischen Beschreibungen und Darstellungen werden von Fachleuten auf dem Gebiet der Datenverarbeitung verwendet, um anderen Fachleuten den Inhalt ihrer Arbeit am effektivsten zu vermitteln. Ein Algorithmus wird hier und allgemein als eine in sich konsistente Folge von Operationen verstanden, die zu einem gewünschten Ergebnis führt. Bei den Operationen handelt es sich um solche, die physikalische Manipulationen von physikalischen Größen erfordern. Normalerweise, wenn auch nicht notwendigerweise, haben diese Größen die Form von elektrischen oder magnetischen Signalen, die gespeichert, kombiniert, verglichen und anderweitig manipuliert werden können. Zuweilen hat es sich als zweckmäßig erwiesen, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen oder ähnliches zu bezeichnen, hauptsächlich aus Gründen des allgemeinen Sprachgebrauchs.
-
Es sollte jedoch bedacht werden, dass alle diese und ähnliche Begriffe mit den entsprechenden physikalischen Größen in Verbindung gebracht werden müssen und lediglich praktische Bezeichnungen für diese Größen sind. Die vorliegende Erfindung kann sich auf die Aktionen und Prozesse eines Computersystems oder einer ähnlichen elektronischen Computervorrichtung beziehen, das Daten, die als physikalische (elektronische) Größen in den Registern und Speichern des Computersystems dargestellt werden, manipuliert und in andere Daten umwandelt, die in ähnlicher Weise als physikalische Größen in den Speichern oder Registern des Computersystems oder anderen derartigen Informationsspeichersystemen dargestellt werden.
-
Die vorliegende Erfindung bezieht sich auch auf ein Gerät zur Durchführung der hier beschriebenen Operationen. Dieses Gerät kann speziell für die beabsichtigten Zwecke konstruiert sein, oder sie kann einen Allzweckcomputer umfassen, der durch ein im Computer gespeichertes Computerprogramm selektiv aktiviert oder neu konfiguriert wird. Ein solches Computerprogramm kann in einem computerlesbaren Speichermedium gespeichert werden, wie z.B., aber nicht beschränkt auf, jede Art von Diskette, einschließlich Disketten, optische Disketten, CD-ROMs und magnetisch-optische Disketten, Festwertspeicher (ROMs), Direktzugriffsspeicher (RAMs), EPROMs, EEPROMs, magnetische oder optische Karten oder jede Art von Medien, die zum Speichern elektronischer Instruktionen geeignet sind und jeweils mit einem Computer-Systembus verbunden sind.
-
Die hier vorgestellten Algorithmen und Anzeigen sind nicht von Natur aus an einen bestimmten Computer oder ein anderes Gerät gebunden. Verschiedene Mehrzwecksysteme können mit Programmen gemäß den hier enthaltenen Lehren verwendet werden, oder es kann sich als zweckmäßig erweisen, ein spezielleres Gerät zur Durchführung der Verfahren zu konstruieren. Die Struktur für eine Vielzahl dieser Systeme wird in der folgenden Beschreibung dargestellt. Darüber hinaus wird die vorliegende Erfindung nicht unter Bezugnahme auf eine bestimmte Programmiersprache beschrieben. Es ist offensichtlich, dass eine Vielzahl von Programmiersprachen verwendet werden kann, um die Lehren der Erfindung, wie hier beschrieben, zu implementieren.
-
Die vorliegende Erfindung kann als Computerprogrammprodukt oder Software bereitgestellt werden, die ein maschinenlesbares Medium mit darauf gespeicherten Anweisungen umfassen kann, die zur Programmierung eines Computersystems (oder anderer elektronischer Vorrichtungen) zur Durchführung eines Verfahrens gemäß der vorliegenden Erfindung verwendet werden können. Ein maschinenlesbares Medium umfasst jeden Mechanismus zum Speichern von Informationen in einer Form, die von einer Maschine (z.B. einem Computer) gelesen werden kann. In einigen Ausführungsformen umfasst ein maschinenlesbares (z.B. computerlesbares) Medium ein maschinenlesbares (z.B. computerlesbares) Speichermedium, wie zum Beispiel einen Festwertspeicher („ROM“), einen Direktzugriffsspeicher („RAM“), Magnetplatten-Speichermedien, optische Speichermedien, Flash-Speicherkomponenten, usw.
-
In der vorstehenden Beschreibung wurden Ausführungsformen der Erfindung unter Bezugnahme auf spezifische Ausführungsbeispiele beschrieben. Es ist offensichtlich, dass verschiedene Modifikationen daran vorgenommen werden können, ohne vom Grundgedanken und Umfang der Ausführungsformen der Erfindung, wie sie in den folgenden Ansprüchen dargelegt sind, abzuweichen. Die Beschreibung und die Zeichnungen sind dementsprechend eher in einem illustrativen als in einem einschränkenden Sinne zu verstehen.