DE102022111346A1 - Automatische betriebsmodusverwaltung für speicher unter verwendung von arbeitsbelastungs-profildaten - Google Patents

Automatische betriebsmodusverwaltung für speicher unter verwendung von arbeitsbelastungs-profildaten Download PDF

Info

Publication number
DE102022111346A1
DE102022111346A1 DE102022111346.9A DE102022111346A DE102022111346A1 DE 102022111346 A1 DE102022111346 A1 DE 102022111346A1 DE 102022111346 A DE102022111346 A DE 102022111346A DE 102022111346 A1 DE102022111346 A1 DE 102022111346A1
Authority
DE
Germany
Prior art keywords
data
temperatures
storage device
target size
determining
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102022111346.9A
Other languages
English (en)
Inventor
Gil Golov
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of DE102022111346A1 publication Critical patent/DE102022111346A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • G06F11/3075Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting the data filtering being achieved in order to maintain consistency among the monitored data, e.g. ensuring that the monitored data belong to the same timeframe, to the same system or component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/04Arrangements for writing information into, or reading information out from, a digital store with means for avoiding disturbances due to temperature effects
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/106Data output latches
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1087Data input latches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Die offenbarten Ausführungsformen beziehen sich auf das Protokollieren von Aktivitäten von Speichervorrichtungen und das Anpassen des Betriebs eines Controllers auf der Grundlage der Aktivitäten. In einer Ausführungsform umfasst ein Verfahren das Überwachen, durch eine Speichervorrichtung, von Chiptemperaturen und Datengrößen von Befehlen, die an die Speichervorrichtung ausgegeben werden; das Bestimmen, durch die Speichervorrichtung, einer Zielgröße für einen Puffer basierend auf den Chiptemperaturen und Datengrößen; und das Anpassen einer aktuellen Größe des Puffers durch die Speichervorrichtung, um der Zielgröße zu entsprechen.

Description

  • TECHNISCHES GEBIET
  • Mindestens einige hierin offenbarten Ausführungsformen beziehen sich auf Speichervorrichtungen im Allgemeinen und insbesondere, aber nicht darauf beschränkt, auf die Anpassung von Puffergrößen von Speichervorrichtungen basierend auf protokollierten Ereignisdaten.
  • STAND DER TECHNIK
  • Ein Speicherteilsystem kann eine oder mehrere Speichervorrichtungen beinhalten, die Daten speichern. Die Speichervorrichtungen können beispielsweise nichtflüchtige Speichervorrichtungen und flüchtige Speichervorrichtungen sein. Im Allgemeinen kann ein Host-System ein Speicherteilsystem nutzen, um Daten in den Speichervorrichtungen zu speichern und Daten aus den Speichervorrichtungen zu laden.
  • Figurenliste
  • Die Ausführungsformen werden als Beispiel und nicht als Einschränkung in den Figuren der beigefügten Zeichnungen veranschaulicht, in denen gleiche Bezugszeichen ähnliche Elemente bezeichnen.
    • 1 ist ein Blockdiagramm eines Systems zum Verwalten der Operationen einer Speichervorrichtung auf der Grundlage von überwachten Aktivitäten gemäß einigen Ausführungsformen der Offenbarung.
    • 2A ist eine beispielhafte Protokolldatei gemäß einigen Ausführungsformen der Offenbarung.
    • 2B ist ein Graph eines beispielhaften Datenpunkts, der von einem Satz von Speichervorrichtungen gemäß einigen Ausführungsformen der Offenbarung aufgezeichnet wurde.
    • 3 ist ein Flussdiagramm, das ein Verfahren zum Anpassen einer Puffergröße einer Speichervorrichtung basierend auf historischen Betriebsdaten gemäß einigen Ausführungsformen der Offenbarung veranschaulicht.
    • 4 ist ein Flussdiagramm, das ein Verfahren zum Erzeugen und Aufrechterhalten eines Profils einer Speichervorrichtung gemäß einigen Ausführungsformen der Offenbarung veranschaulicht.
    • 5 ist ein Flussdiagramm, das ein Verfahren zum Verwalten der Speicherung eines Profils einer Speichervorrichtung gemäß einigen Ausführungsformen der Offenbarung darstellt.
    • 6 ist ein Flussdiagramm, das ein Verfahren zum Aggregieren von Speichervorrichtungsprofilen und zum Aktualisieren von Betriebsparametern von Speichervorrichtungen gemäß einigen Ausführungsformen der Offenbarung veranschaulicht.
    • 7 ist ein Flussdiagramm, das ein Verfahren zum Aktualisieren der Betriebsparameter einer Speichervorrichtung gemäß einigen Ausführungsformen der Offenbarung veranschaulicht.
    • 8 ist ein Blockdiagramm, das ein Speichersystem gemäß einigen Ausführungsformen der Offenbarung veranschaulicht.
    • 9 ist ein Blockdiagramm, das eine Computervorrichtung veranschaulicht, die ein Beispiel einer Client- oder Servervorrichtung zeigt, die in den verschiedenen Ausführungsformen der Offenbarung verwendet wird.
  • DETAILLIERTE BESCHREIBUNG
  • Die offenbarten Ausführungsformen beziehen sich auf das Protokollieren von Aktivitäten von Speichervorrichtungen und das Anpassen des Betriebs eines Controllers auf der Grundlage der Aktivitäten. In einer Ausführungsform umfasst ein Verfahren das Überwachen, durch eine Speichervorrichtung, von Chiptemperaturen und Datengrößen von Befehlen, die an die Speichervorrichtung ausgegeben werden; das Bestimmen, durch die Speichervorrichtung, einer Zielgröße für einen Puffer basierend auf den Chiptemperaturen und Datengrößen; und das Anpassen einer aktuellen Größe des Puffers durch die Speichervorrichtung, um der Zielgröße zu entsprechen.
  • 1 ist ein Blockdiagramm eines Systems zum Verwalten der Operationen einer Speichervorrichtung auf der Grundlage von überwachten Aktivitäten gemäß einigen Ausführungsformen der Offenbarung.
  • In der dargestellten Ausführungsform umfasst ein System (100) eine lokale Computervorrichtung (102), eine entfernte Computervorrichtung (120) und eine Endbenutzer-Computervorrichtung (128). In der dargestellten Ausführungsform kommunizieren diese Vorrichtungen über ein Netzwerk (118), wie etwa das Internet oder ein lokales Netzwerk.
  • In der veranschaulichten Ausführungsform kann die lokale Computervorrichtung (102) einen Personalcomputer (z. B. einen Laptop oder Desktop), eine mobile Computervorrichtung (z. B. ein Mobiltelefon, Tablet usw.), eine Internet-der-Dinge(Internet-of-Things - IoT)-Vorrichtung, eine in einem Fahrzeug installierte Computervorrichtung oder allgemein jede Computervorrichtung, die einen nichtflüchtigen Speicher benötigt, umfassen. Die Offenbarung schränkt die Arten von Computersystemen nicht ein, welche die Beschreibung der lokalen Computervorrichtung (102) implementieren können.
  • Wie dargestellt, enthält die lokale Computervorrichtung (102) einen Host-Prozessor (106) und eine Speichervorrichtung (104). Der Host-Prozessor (106) kann eine zentrale Verarbeitungseinheit (central processing unit - CPU), eine Grafikverarbeitungseinheit (graphics processing unit - GPU), ein System-on-a-Chip (SoC), eine anwendungsspezifische integrierte Schaltung (application-specific integrated circuit - ASIC), ein feldprogrammierbares Gate-Array (fieldprogrammable gate array - FPGA) umfassen oder eine andere Art von Vorrichtung zum Durchführen von Berechnungen basierend auf Daten, die in der Speichervorrichtung (104) gespeichert sind. Der Host-Prozessor (106) kann beliebige Rechenvorgänge und Berechnungen basierend auf Programmen und Daten durchführen, die in der Speichervorrichtung (104) gespeichert sind. Die vom Host-Prozessor (106) durchgeführten spezifischen Arten von Berechnungen sind nicht einschränkend.
  • In der veranschaulichten Ausführungsform ist der Host-Prozessor (106) kommunikativ mit einer Speichervorrichtung (104) über einen Bus (130) gekoppelt. In einer Ausführungsform kann der Bus (130) einen Peripheral-Component-Interchange(PCI)-Bus, einen PCI-Express(PCIe)-Bus, einen Non-Volatile-Memory-Express(NVMe)-Bus oder allgemein jede Art von Bus umfassen, die eine Speichervorrichtung (z. B. Speicher 104) an einen Prozessor (z. B. Host-Prozessor 106) kommunikativ koppeln kann.
  • In der dargestellten Ausführungsform umfasst die Speichervorrichtung (104) ein Festkörperlaufwerk (solid-state drive - SSD). In einer anderen Ausführungsform kann die Speichervorrichtung (104) einen nichtflüchtigen Speicher (NVM) umfassen. In einigen Ausführungsformen kann die Speichervorrichtung (104) eine NAND- oder NOR-Flash-Speichervorrichtung umfassen. In einigen Ausführungsformen kann die Speichervorrichtung (104) eine eingebettete MultiMediaCard(embedded MultiMediaCard - eMMC)-Speichervorrichtung umfassen. Im Allgemeinen kann jede Vorrichtung, die Daten dauerhaft speichern kann, als Speichervorrichtung (104) verwendet werden. In einer alternativen Ausführungsform kann die Speichervorrichtung (104) eine flüchtige Speichervorrichtung umfassen, wie etwa eine dynamische Speichervorrichtung mit wahlfreiem Zugriff (dynamic random-access memory - DRAM) oder eine Vorrichtung mit statischem Direktzugriffsspeicher (static random-access memory - SRAM).
  • Die Speichervorrichtung (104) enthält ein (nicht dargestelltes) Speicherarray zum Speichern von Daten wie Programmen und Programmdaten. In der dargestellten Ausführungsform wird ein Teil des Speicherarrays als Profilspeicher (116) verwendet. Wie hierin verwendet, bezieht sich ein Profil auf aufgezeichnete Daten, die der Speichervorrichtung zugeordnet sind. Ein Profil kann Daten speichern, wie z. B. die vom Host-Prozessor (106) empfangenen Befehle, Zeitstempel, wenn die Befehle empfangen werden, und Zeitstempel, wenn die Befehle ausgeführt werden. Alternativ oder in Verbindung mit dem Vorhergehenden kann das Profil Daten speichern, die die Ergebnisse von Befehlen darstellen, wie beispielsweise die Anzahl von Lesefehlern oder Schreibfehlern oder die Anzahl von internen Operationen, die von der Speichervorrichtung (104) durchgeführt werden. Alternativ oder in Verbindung mit dem Vorhergehenden können die Profildaten extrinsische Eigenschaften der Speichervorrichtung (104) aufzeichnen, wie z. B. die Chiptemperatur der Speichervorrichtung, eine externe Umgebungstemperatur, Stoß- oder Vibrationsindikatoren usw. In einigen Ausführungsformen ist der Profilspeicher (116) in einem unbenutzten Teil des zugrunde liegenden Speicherarrays implementiert. Somit kann in einigen Ausführungsformen der Profilspeicher (116) basierend auf verfügbarem Plattenspeicherplatz verschoben werden. In einigen Ausführungsformen ist der Profilspeicher (116) über Leistungszyklen hinweg persistent. In anderen Ausführungsformen kann die Speichervorrichtung (104) das Profil vor dem Abschalten auf eine andere Vorrichtung übertragen. Alternativ oder in Verbindung mit dem Vorhergehenden kann die Speichervorrichtung (104) das Profil periodisch übertragen, wie noch erörtert wird.
  • In der dargestellten Ausführungsform enthält die Speichervorrichtung (104) eine Befehlsschnittstelle (112), um Befehle von dem Host-Prozessor (106) zu empfangen. Diese Befehle können Lese-, Schreib-, Lösch- oder ähnliche Befehle umfassen, um von der Speichervorrichtung (104) gespeicherte Daten zu manipulieren. Wie dargestellt, kann die Befehlsschnittstelle (112) in einem Controller oder Mikroprozessor an Bord der Speichervorrichtung (104) implementiert sein und kann in geeigneter Weise auf das Speicherarray zugreifen, um die Speichervorrichtung (104) zu betreiben.
  • In der dargestellten Ausführungsform umfasst die Speichervorrichtung (104) ferner einen Puffer (132). In einer Ausführungsform kann der Puffer (132) einen Teil des Speicherarrays umfassen. In den meisten Ausführungsformen umfasst der Puffer (132) jedoch einen Teil (oder die Gesamtheit) einer flüchtigen Speichervorrichtung wie DRAM und fungiert als lokaler Cache (808). In einigen Ausführungsformen kann die zugrunde liegende flüchtige Speichervorrichtung gemeinsam genutzt und für andere Funktionen wie LBA-PBA-Mapping oder administrative Zwecke verwendet werden. Der flüchtige Speicher kann ferner zum Speichern von Anweisungen (z. B. Mikrocode) zum Ausführen von Befehlen durch die Befehlsschnittstelle (112) verwendet werden. In einigen Ausführungsformen ist die Größe des Puffers (132) sowohl durch die insgesamt verfügbare flüchtige Speicherkapazität als auch durch eine konfigurierbare Grenze beschränkt. Beispielsweise kann ein Controller (806) so konfiguriert sein, dass er die Größe des Puffers (132) anpasst, um mehr oder weniger Daten aufzunehmen. Wie noch erläutert wird, kann der Controller (806) in der veranschaulichten Ausführungsform diese Anpassung basierend auf protokollierten Daten wie den in 2A protokollierten durchführen.
  • In der dargestellten Ausführungsform umfasst die Speichervorrichtung (104) ferner Sensoren (110). In der dargestellten Ausführungsform können Sensoren (110) Temperatursensoren, Beschleunigungsmesser, Gyroskope, Magnetometer und jede andere Art von Sensor umfassen, die eine reale Metrik in Bezug auf die Speichervorrichtung (104) misst. In einigen Ausführungsformen können sich die Sensoren (110) außerhalb der Speichervorrichtung (104) befinden. In dieser Ausführungsform empfängt die Speichervorrichtung (104) die Sensordaten über den Bus (130).
  • Die Speichervorrichtung (104) beinhaltet eine Überwachungseinheit (114), die sowohl mit der Befehlsschnittstelle (112) als auch mit den Sensoren (110) kommunikativ gekoppelt ist. In der dargestellten Ausführungsform fängt die Überwachungseinheit (114) passiv Befehle ab, die über die Befehlsschnittstelle (112) gesendet werden. Ferner kann die Überwachungseinheit (114) Sensordaten von Sensoren (110) passiv oder aktiv empfangen.
  • In einer Ausführungsform werden an die Befehlsschnittstelle (112) ausgegebene Befehle auch durch die Überwachungseinheit (114) empfangen. Beispiele für solche Befehle sind Lesebefehle und Schreibbefehle, die auf ein Speicherarray der Speichervorrichtung (104) zugreifen. In einer Ausführungsform versieht die Überwachungseinheit (114) alle Befehle mit einem Zeitstempel und schreibt die Befehle in ein Befehlsprotokoll im Profilspeicher (116). Alternativ oder in Verbindung mit dem Vorhergehenden kann die Überwachungseinheit (114) zusätzlich Benachrichtigungen oder andere Signale von der Befehlsschnittstelle (112) oder von einem Controller (wie in 8 dargestellt) empfangen, die angeben, wann ein gegebener Befehl ausgeführt wird. In dieser Ausführungsform kann die Überwachungseinheit (114) den zuvor geschriebenen Befehl mit einer Ausführungszeit zeitstempeln. In anderen Ausführungsformen kann die Überwachungseinheit (114) alternativ ein separates Befehlsausführungsprotokoll mit dem Ausführungszeitstempel aktualisieren. In beiden Szenarien kann die Überwachungseinheit (114) jedem Befehl einen empfangenen Zeitstempel und einen Ausführungszeitstempel zuordnen.
  • 2A ist eine beispielhafte Protokolldatei gemäß einigen Ausführungsformen der Offenbarung. In der veranschaulichten Ausführungsform enthält jeder Eintrag einen Zeitstempel, und zwei Abschnitte von Einträgen sind dargestellt (zwischen den Zeiten 0-12 und 100-107). Die Verwendung von ganzzahligen Zeitstempeln dient nur zu Erläuterungszwecken, und andere Formate (z. B. UNIX-Epoche) können verwendet werden. In der veranschaulichten Ausführungsform wird eine einzelne Protokolldatei verwendet, und daher wird ein „Typ“-Feld verwendet, um zwischen Ereignissen und Befehlen zu unterscheiden. In der veranschaulichten Ausführungsform werden verschiedene Temperaturen (TEMP) und Schreibbefehle (EMPFANGE SCHREIBEN) protokolliert und mit einem Zeitstempel versehen. Beispielsweise wird bei t = 1eine Temperatur von -30 °C aufgezeichnet, während bei t = 2 eine Datengröße von 25 kB aufgezeichnet wird. Andere Daten können zusätzlich zu Schreib- und Temperaturdaten aufgezeichnet werden, wie hierin und auch in der gemeinsam besessenen Anmeldung mit der Anwalts-Aktenzeichennummer 120426-199700 beschrieben.
  • Alternativ oder in Verbindung mit dem Vorhergehenden kann die Überwachungseinheit (114) alle Fehler, Störungen oder andere anomale Daten aufzeichnen, die durch die Speichervorrichtung (104) erzeugt werden. In diesen Ausführungsformen kann die Überwachungseinheit (114) diese Fehler und ähnliche Daten in einen separaten Teil des Profilspeichers (116) schreiben. Wenn die Fehler oder ähnliche Daten zuvor geschriebenen Befehlen zugeordnet sind, kann die Überwachungseinheit (114) in einigen Ausführungsformen den protokollierten Befehl mit Daten aktualisieren, die den Fehler oder andere störungsähnliche Zustände beschreiben.
  • Alternativ oder in Verbindung mit dem Vorhergehenden kann die Überwachungseinheit (114) Daten von Sensoren (110) abrufen. In einigen Ausführungsformen kann die Überwachungseinheit (114) Sensormessungen (z. B. Temperatur) von Sensoren (110) gemäß vorkonfigurierten Intervallen abrufen. Alternativ oder in Verbindung mit dem Vorhergehenden kann die Überwachungseinheit (114) so konfiguriert sein, dass sie eine Abtastrate der Sensoren (110) basierend auf anderen erkannten Ereignissen anpasst. Beispielsweise kann die Überwachungseinheit (114) beim Erkennen eines Fehlers beim Lesen oder Schreiben in die Speichervorrichtung (104) eine Abtastrate von beispielsweise Temperaturdaten erhöhen, um feinkörnigere Details einer Korrelation zwischen Fehlern und Temperaturdaten bereitzustellen. Während die Temperatur als Beispiel verwendet wird, können dieselben oder ähnliche Techniken auf andere Arten von Sensoren wie etwa Gyroskope und Beschleunigungsmesser angewendet werden.
  • In einigen Ausführungsformen kann die Überwachungseinheit (114) auch so konfiguriert sein, dass sie Ereignisse auf Systemebene protokolliert. In diesen Ausführungsformen kann die Überwachungseinheit (114) diese durch einen Controller der Speichervorrichtung (104) erzeugten Ereignisse empfangen (oder überwachen). Beispielsweise kann die Überwachungseinheit (114) Ereignisse empfangen, die angeben, wann die Speichervorrichtung eingeschaltet wird oder kurz davor steht, ausgeschaltet zu werden. In einigen Ausführungsformen kann die Überwachungseinheit (114) diese Ereignisse selbst synthetisieren, wenn sie ein- oder ausgeschaltet wird.
  • In einigen Ausführungsformen kann die Überwachungseinheit (114) den Profilspeicher (116) periodisch inspizieren und die Daten des Profilspeichers (116) an eine entfernte Computervorrichtung (120) übertragen. In einer Ausführungsform kann die Überwachungseinheit (114) konfiguriert sein, die oben erwähnten Protokolldaten in einen unbenutzten Teil des Speicherarrays einer Speichervorrichtung (104) zu schreiben. In einigen Ausführungsformen verwaltet die Überwachungseinheit (114) die Größe des Profilspeichers (116), um sicherzustellen, dass die Speicherkapazität des Profilspeichers (116) nicht überschritten wird. Beispielsweise kann ein Controller der Speichervorrichtung (104) einen festen Teil des Speicherarrays (z. B. 128 MB) für die Profilspeicherung zuweisen. Der Controller würde dann das Schreiben in diesen Teil des Speicherarrays verhindern, indem er sein Adressierungsschema verwaltet und externe Schreibvorgänge an den physikalischen Adressen des Profilspeichers (116) verhindert. In einer Ausführungsform kann entweder der Controller oder die Überwachungseinheit (114) überwachen, wie viel Platz der Profilspeicher (116) belegt, und wenn sich die Kapazität der vollen Auslastung nähert, eine Netzwerkübertragungsoperation (hier beschrieben) einleiten. Alternativ oder in Verbindung mit dem Vorhergehenden kann der Controller oder die Überwachungseinheit (114) konfiguriert sein, um den Profilspeicher (116) zu verschieben oder seine Größe zu ändern. Beispielsweise kann die Überwachungseinheit (114) in einigen Ausführungsformen bestimmen, dass der Profilspeicher zusätzliche Kapazität erfordert und eine Netzwerkübertragungsoperation nicht möglich ist (z. B. aufgrund des Fehlens einer zuverlässigen Netzwerkverbindung). In diesem Szenario kann die Überwachungseinheit (114) anfordern, dass der Controller seine Adresstabelle (z. B. Adresstabelle für logische Blöcke) aktualisiert, um zusätzlichen Speicherplatz für den Profilspeicher (116) freizugeben. In einigen Ausführungsformen kann dies das Verschieben vorhandener Daten in andere Bereiche des Speicherarrays erfordern.
  • Wie oben erörtert, kann die Überwachungseinheit (114) periodisch eine Netzwerkübertragungsoperation initiieren, bei der die Inhalte des Profilspeichers (116) auf die entfernte Computervorrichtung (120) hochgeladen werden. In einigen Ausführungsformen gibt die Speichervorrichtung (104) Netzwerkanforderungen unter Verwendung des Host-Prozessors (106) und der Netzwerkschnittstelle (108) als Vermittler aus. In anderen Ausführungsformen kann die Speichervorrichtung (104) ihre eigene Netzwerkschnittstelle umfassen, um direkt über ein Netzwerk zu kommunizieren. In beiden Szenarien stellt die Speichervorrichtung (104) eine Netzwerkverbindung mit der entfernten Computervorrichtung (120) über ein Netzwerk (118) her. In einer Ausführungsform kann das Netzwerk (118) ein öffentliches Netzwerk wie etwa das Internet oder ein privates Netzwerk umfassen. In einigen Ausführungsformen sind alle Verbindungen zwischen der Speichervorrichtung (104) und der entfernten Computervorrichtung (120) verschlüsselt (z. B. über Transport Layer Security - TLS).
  • In einigen Ausführungsformen lädt die Speichervorrichtung (104) nach dem Herstellen einer Verbindung (z. B. einer Übertragungssteuerungsprotokoll-, transmission control protocol - TCP-Sitzung) die Inhalte des Profilspeichers (116) auf die entfernte Computervorrichtung (120) hoch. In einer Ausführungsform schließt die Speichervorrichtung (104) eine eindeutige und geheime Kennung der Speichervorrichtung (104) in die Kommunikationen ein. Auf diese Weise können die Daten im Profilspeicher (116) eindeutig der Speichervorrichtung (104) zugeordnet werden. In einigen Ausführungsformen wird die entfernte Computervorrichtung (120) von einem Hersteller der Speichervorrichtung (104) betrieben. In diesem Szenario speichern nur der Hersteller und die Speichervorrichtung die eindeutige Kennung, und somit kann die entfernte Computervorrichtung (120) sicher annehmen, dass die gemeldeten Profilspeicherdaten (116) der Speichervorrichtung (104) angemessen zugeordnet sind. In anderen Ausführungsformen kann die Speichervorrichtung (104) die Kommunikationen mit einem privaten Schlüssel signieren, und somit kann die entfernte Computervorrichtung (120) die Kommunikationen mit dem entsprechenden öffentlichen Schlüssel verifizieren.
  • In der dargestellten Ausführungsform werden die eingehenden Profilspeicherdaten (116) durch einen Front-End-Profilserver (126) empfangen. Der Profilserver (126) kann einen schlanken Anwendungsserver umfassen, der eine oder mehrere Funktionen bereitstellt, die über ein Netzwerk (118) aufrufbar sind. In der dargestellten Ausführungsform empfängt der Profilserver (126) Profildaten von der Speichervorrichtung (104). Der Profilserver (126) kann die Identität der Speichervorrichtung (104) wie oben beschrieben verifizieren. Nach dem Identifizieren der Speichervorrichtung (104) kann der Profilserver (126) die Profildaten vorverarbeiten. Beispielsweise kann der Profilserver (126) Profildaten deduplizieren, die Profildaten auf ein vorkonfiguriertes Schema normalisieren, die Profildaten basierend auf der Identität der Speichervorrichtung (104) erweitern (d. h. zu jedem Datensatz eine eindeutige Kennung der Speichervorrichtung 104 hinzufügen) und verschiedene andere „Reinigungs“-Operationen durchführen.
  • Nach der Vorverarbeitung der Daten schreibt der Profilserver (126) die Daten in eine Datenbank (122). In einer Ausführungsform kann die Datenbank (122) jede handelsübliche Datenbank umfassen. In einigen Ausführungsformen umfasst die Datenbank (122) eine relationale Datenbank wie etwa MySQL, Postgresql oder ähnliche Datenbanken. In anderen Ausführungsformen kann die Datenbank (122) eine dokumentenorientierte Datenbank (z. B. MongoDB, CouchDB usw.) umfassen. In einigen Ausführungsformen kann die Datenbank (122) eine protokollorientierte Speicherdatenstruktur umfassen. In einigen Ausführungsformen kann die Datenbank (122) einen Cluster von Datenbanken umfassen. In einigen Ausführungsformen kann dieser Cluster einen einzelnen Datenbanktyp umfassen, während in anderen Ausführungsformen der Cluster unterschiedliche Datenbanktypen aufweisen kann.
  • In der veranschaulichten Ausführungsform fungiert die Datenbank (122) als zentraler Aufbewahrungsort für Profildaten. In der dargestellten Ausführungsform ist ein Front-End-Server (124) kommunikativ mit dem Front-End-Server (124) gekoppelt. In einer Ausführungsform greift der Front-End-Server (124) auf die in der Datenbank (122) gespeicherten Daten als Reaktion auf Anforderungen von Endbenutzervorrichtungen wie etwa der Endbenutzervorrichtung (128) zu.
  • Nach dem Zugriff auf die Daten in der Datenbank (122) verpackt der Front-End-Server (124) die Daten und gibt eine Antwort an die Endbenutzervorrichtung (128) zurück.
  • In der dargestellten Ausführungsform ist der Front-End-Server (124) so konfiguriert, dass er ein Dashboard oder Portal für Eigentümer von Speichervorrichtungen bereitstellt. Beispielsweise kann die Endbenutzervorrichtung (128) einen Laptop, Desktop oder eine mobile Vorrichtung umfassen, das bzw. die durch einen Mitarbeiter des Kunden betrieben wird. Der Kunde kann verschiedene Speichervorrichtungen (einschließlich der Speichervorrichtung 104) gekauft und eingesetzt haben und zusätzlich ein Konto bei der entfernten Computervorrichtung (120) haben, das auch mit den Speichervorrichtungen verbunden ist. Somit kann sich die Endbenutzervorrichtung (128) über eine Website oder mobile Anwendung beim Front-End-Server (124) anmelden und ein Dashboard laden, das Details aller Speichervorrichtungen anzeigt, die dem Endbenutzer zugeordnet sind. Beispielsweise kann der Front-End-Server (124) alle Daten abrufen, die sich auf einen Satz von Speichervorrichtungen beziehen, die dem Endbenutzer zugeordnet sind, und einen Graphen anzeigen, der die über die Zeit gemeldeten Temperaturen darstellt. Der Front-End-Server (124) kann den Graphen auch mit Indikatoren von Lesefehlern erweitern und somit Temperaturen auf grafische Weise mit Lese-/Schreibfehlern korrelieren. Der Art der durch den Front-End-Server (124) unter Verwendung der Daten in der Datenbank (122) erzeugten Visualisierungen wird keine Beschränkung auferlegt.
  • In einer Ausführungsform kann der Front-End-Server (124) auch das Empfangen von Benutzereingaben von der Endbenutzervorrichtung (128) und das Anpassen von Einstellungen der Speichervorrichtung (104) basierend auf dieser Eingabe unterstützen. Wie dargestellt, wird in einigen Ausführungsformen eine optionale Feedbackschleife zwischen dem Front-End-Server (124) und dem Profilserver (126) bereitgestellt. In dieser Ausführungsform kann der Front-End-Server (124) Anweisungen an den Profilserver weiterleiten, welche die Verarbeitung einer Speichervorrichtung (104) beeinflussen. Der Profilserver (126) kann dann Befehle parsen und an die Speichervorrichtung (104) übertragen, um die internen Operationen der Speichervorrichtung (104) anzupassen. Wie erörtert, kann jede Übertragung unter Verwendung von kryptographischen Schlüsseln signiert werden, um die Integrität des Systems sicherzustellen. Das folgende Beispiel beschreibt dieses Feedback weiter.
  • Beispielsweise kann die Endbenutzervorrichtung (128) auf das Dashboard zugreifen, das durch den Front-End-Server (124) bereitgestellt wird, und einen Graphen laden, der die Durchschnittstemperaturen von Speichervorrichtungen und Lese-/Schreibdatenfehlern nach dem Start darstellt. 2B liefert ein Beispiel für einen solchen Graphen. In dem dargestellten Graphen von 2B können die Speichervorrichtungen in Kraftfahrzeugen installiert sein und daher häufig bei kälteren Temperaturen gestartet werden. In der veranschaulichten Ausführungsform veranschaulicht der Graph die durchschnittlichen Temperaturen einer Flotte von Speichervorrichtungen beim Start (t = 0) bis 125 Sekunden (t = 125) . Wie dargestellt, beträgt die Temperatur der Speichervorrichtungen im Allgemeinen ungefähr -30 °C und steigt in 125 Sekunden auf ungefähr 30 °C an. Außerdem nehmen die Speichervorrichtungen, wie dargestellt, beim Start (t = 0) durchschnittlich etwa 60 Kilobyte an Daten auf. Das Datenvolumen nimmt bis t = 100 allmählich ab, wo das Datenvolumen nahe oder gleich null ist. In einigen Ausführungsformen kann der Graph für eine einzelne Vorrichtung sein oder, wie erörtert, Daten über eine Flotte von Vorrichtungen (die selbst durch die Endbenutzervorrichtung 128 auswählbar sein können) mitteln.
  • In der dargestellten Ausführungsform kann der Bediener der Endbenutzervorrichtung (128) bestimmen, dass die Puffergröße anfänglich erhöht und dann so weit wie möglich verringert werden sollte, wenn die Temperatur ansteigt. Angesichts der gemittelten Daten kann der Bediener bestimmen, dass eine Speichervorrichtung anfangs zusätzliche 100 kb Pufferraum zuweisen sollte, wenn die Temperatur -30 °C beträgt, und den zusätzlichen Pufferraum langsam reduzieren sollte, bis die Temperatur 0 °C erreicht. Somit kann die Endbenutzervorrichtung (128) diese Anforderung an den Front-End-Server (124) ausgeben. Der Front-End-Server (124) wiederum kann die Anforderung an den Profilserver (126) weiterleiten. Der Profilserver (126) kann alle betroffenen Speichervorrichtungen identifizieren (z. B. basierend auf den Identifikatoren von Speichervorrichtungen, die verwendet werden, um den Graphen zu erzeugen) und eine Anforderung an jede Speichervorrichtung (z. B. 104) ausgeben, die Firmware der Speichervorrichtungen zu aktualisieren, um Befehle für 75 Sekunden nach dem Start zu puffern. Wie oben und in weiteren Figuren diskutiert, kann die Speichervorrichtung (104) Firmware zum Handhaben bestimmter Ereignisse und Befehle enthalten. Der Profilserver (126) kann aktualisierte Firmware oder Flags übertragen, die bewirken, dass die Speichervorrichtung (104) ihre internen Operationen ändert.
  • Obwohl das vorstehende Beispiel das Beispiel eines Benutzers verwendet, der die Einstellungen einer Speichervorrichtung manuell anpasst, kann die Anpassung in anderen Ausführungsformen automatisch oder optimistisch durchgeführt werden. In einigen Ausführungsformen kann ein Ziel festgelegt werden, und die entfernte Computervorrichtung (120) kann automatisch den Betrieb der Speichervorrichtung (104) basierend auf diesen Zielen anpassen. Beispielsweise kann die entfernte Computervorrichtung (120) die in 2B dargestellten Daten kontinuierlich überwachen und automatisch den Befehl zum Anpassen einer Puffergröße ausgeben. In anderen Ausführungsformen kann die entfernte Computervorrichtung (120) maschinelle Lernmodelle trainieren, um zukünftige Ziele vorherzusagen. Beispielsweise ist eine Speichervorrichtung mit zunehmendem Alter im Allgemeinen empfindlicher gegenüber Temperaturänderungen. Die entfernte Computervorrichtung (120) kann Modelle unter Verwendung des Alters der Speichervorrichtungen, der Temperaturdaten und der Datengröße erstellen, um zu bestimmen, wie die Puffergröße bei kalten Temperaturen angepasst werden soll. Die entfernte Computervorrichtung (120) kann diese Modelle dann regelmäßig ausführen, um zu bestimmen, ob die Eigenschaften einer Speichervorrichtung proaktiv angepasst werden sollen.
  • In den obigen Ausführungsformen können Speichervorrichtungen Metriken selbst an einen zentralen Server melden. Der zentrale Server kann die Daten für Kunden derselben Speichervorrichtungen visualisieren, und die Kunden können den internen Betrieb von Speichervorrichtungen aus der Ferne anpassen, ohne jede Vorrichtung manuell zu warten oder zu aktualisieren, wodurch eine Feinabstimmung des Betriebs von vorhandenen Speichervorrichtungen ermöglicht wird. Die folgenden Figuren liefern weitere Einzelheiten des Betriebs des Systems.
  • 3 ist ein Flussdiagramm, das ein Verfahren zum Anpassen einer Puffergröße einer Speichervorrichtung basierend auf historischen Betriebsdaten gemäß einigen Ausführungsformen der Offenbarung veranschaulicht.
  • In Block 302 überwacht das Verfahren die Temperatur einer Speichervorrichtung und die Datengrößen von Befehlen, die durch die Speichervorrichtung empfangen werden.
  • Wie besprochen, enthält eine Speichervorrichtung in einigen Ausführungsformen einen Temperatursensor, der die Chiptemperatur der Speichervorrichtung aufzeichnet. In einigen Ausführungsformen kann dieser Sensor kontinuierlich die Chiptemperatur aufzeichnen. In einigen Ausführungsformen kann der Sensor periodisch eine Chiptemperatur an einen Controller der Speichervorrichtung melden. Alternativ oder in Verbindung mit dem Vorhergehenden kann der Controller der Speichervorrichtung nach Bedarf eine aktuelle Chiptemperatur von dem Temperatursensor anfordern. In der veranschaulichten Ausführungsform kann das Verfahren Temperaturen kontinuierlich mit einer gegebenen Granularität (z. B. jede Sekunde) wie erörtert protokollieren. In der veranschaulichten Ausführungsform kann das Verfahren jede in das Protokoll geschriebene Temperatur mit einem Zeitstempel versehen.
  • Parallel dazu kann das Verfahren Befehle empfangen, die auf das Speicherarray einer Speichervorrichtung zugreifen. Beispiele für Befehle beinhalten Lese- und Schreibbefehle. In einigen Ausführungsformen ist jedem Befehl die Größe der zugrunde liegenden Daten zugeordnet, die von dem Befehl benötigt werden (als „Datengröße“ bezeichnet). In einer Ausführungsform bezieht sich eine Datengröße auf die Anzahl von Speicherzellen, Adressen oder anderen Einheiten (als „Stellen“ bezeichnet), die verwendet werden, um die Daten zu speichern, die von einem Befehl benötigt werden. In dieser Ausführungsform kann das Verfahren die Größe der zugrunde liegenden Daten durch Multiplizieren der Anzahl von Stellen mit der Datengröße mit fester Breite berechnen. Beispielsweise kann ein Schreibbefehl auf acht Stellen zugreifen und jede Stelle kann so konfiguriert sein, dass sie zwei Bytes speichert. In diesem Szenario könnte die Datengröße als acht abgekürzt oder kann als sechzehn Bytes berechnet werden.
  • Alternativ oder in Verbindung mit dem Vorhergehenden kann die Datengröße nur als die Gesamtgröße der gelesenen oder geschriebenen Daten berechnet werden. Bei dieser Ausführungsform kann die Datengröße für Lesebefehle ähnlich berechnet werden, indem die Anzahl der gelesenen Adressen mit der Breite der Stellen multipliziert wird. In einigen Ausführungsformen kann das Verfahren eine Datengröße nur basierend auf Daten berechnen, die erfolgreich als Reaktion auf eine Leseoperation zurückgegeben wurden. Somit kann das Verfahren in dieser Ausführungsform Lesefehler berücksichtigen. Für einen Schreibbefehl kann das Verfahren die Datengröße durch Analysieren der Länge der zu schreibenden Daten vor dem Schreiben berechnen. Alternativ kann das Verfahren die Datengröße der erfolgreich geschriebenen Datenmenge berechnen.
  • In einigen Ausführungsformen kann die Datengröße für einen Lesebefehl die Anzahl von Adressen umfassen, die als Antwort auf einen Befehl gelesen werden sollen, oder kann die Gesamtgröße der Daten umfassen, die als Antwort auf den Lesebefehl zurückgegeben werden. In ähnlicher Weise kann die Datengröße für einen Schreibbefehl die Anzahl der zu schreibenden Adressen oder kann die Gesamtgröße der durch den Schreibbefehl geschriebenen Daten umfassen. In einigen Ausführungsformen kann für einen Schreibbefehl die Datengröße aus dem Befehl selbst extrahiert werden, da die zu schreibenden Daten in dem Befehl enthalten sind. Somit kann in einigen Ausführungsformen die Datengröße vor dem Ausführen des Befehls berechnet werden.
  • In der veranschaulichten Ausführungsform kann das Verfahren kontinuierlich Datengrößen für jeden Befehl protokollieren. Wie bei Temperaturdaten können die Datengrößen mit der aktuellen Zeit zeitgestempelt werden. In einigen Ausführungsformen kann die aktuelle Zeit entweder die Zeit umfassen, zu der die Befehle empfangen werden, die Zeit, zu der die Befehle ausgeführt werden, oder die Zeit, zu der die Ausführung der Befehle beendet wird. In einigen Ausführungsformen kann das Verfahren einen Zeitstempel für jede der vorangehenden Zeiten protokollieren.
  • In Block 304 bestimmt das Verfahren eine optimale oder Zielpuffergröße für die Speichervorrichtung basierend auf den protokollierten Temperaturen und Datengrößendaten.
  • In einigen Ausführungsformen kann das Verfahren eine optionale Anfangsprüfung implementieren, um zu bestimmen, ob die aktuelle Temperatur (wie sie vom Temperatursensor abgelesen wird) über oder unter einer Zielbetriebstemperatur liegt. Bei vielen Speichervorrichtungen und insbesondere bei Speichervorrichtungen mit Dreifachzellen (triple-level cell - TLC) führt das Schreiben in das Speicherarray bei sehr niedrigen Temperaturen zu einer beträchtlichen Anzahl von Fehlern. Um die negativen Auswirkungen dieser Fehler zu verhindern, kann ein größerer Puffer verwendet werden, um Schreibvorgänge (oder Lesevorgänge) zu puffern, bis die aktuelle Temperatur über der Zielbetriebstemperatur liegt. Beispielsweise ist in einem Automobilszenario die anfängliche Zeit nach dem Start häufig die extremste Kälte, bei der eine Speichervorrichtung während der anfänglichen Startperiode eine größere Anzahl von Fehlern erfährt. Sobald die Temperatur des Fahrzeugs ansteigt, erfährt die Speichervorrichtung einen normalen Betrieb. Somit kann das Verfahren in einer optionalen Ausführungsform Block 304 (und nachfolgende Blöcke) nur dann ausführen, wenn die aktuelle Temperatur unter der Zielbetriebstemperatur liegt.
  • In einigen Ausführungsformen kann das Verfahren jedoch immer Block 304 (und nachfolgende Blöcke) ausführen. In diesen Ausführungsformen kann das Verfahren die Größe eines Puffers als Reaktion auf Temperaturschwankungen kontinuierlich anpassen (sowie Eckfälle von Temperaturschwankungen berücksichtigen).
  • In einer Ausführungsform bestimmt das Verfahren eine optimale Puffergröße basierend auf dem historischen Temperatur- und Datengrößenprotokoll. In einer Ausführungsform verwendet das Verfahren die aktuelle Temperatur, um alle ähnlich protokollierten Temperaturen zu finden. In einer Ausführungsform kann das Verfahren eine ähnliche Temperatur nur identifizieren, wenn der historische Temperaturwert mit dem aktuellen Temperaturwert übereinstimmt. In anderen Ausführungsformen kann das Verfahren Temperaturen innerhalb einer voreingestellten Abweichung von der aktuellen Temperatur identifizieren. Wenn die Abweichung beispielsweise drei Grad beträgt und die aktuelle Temperatur 0 °C beträgt, findet das Verfahren alle historisch aufgezeichneten Temperaturen zwischen -3 °C und 3 °C.
  • Wie oben erörtert, ist jeder historischen Temperatur ein Zeitstempel zugeordnet. Somit baut das Verfahren in der veranschaulichten Ausführungsform nach dem Identifizieren ähnlicher historischer Temperaturen als Nächstes einen Zeitbereich auf, in dem nach aufgezeichneten Datengrößen gesucht wird. In einer Ausführungsform verwendet das Verfahren eine voreingestellte Fenstergröße, um die Zeitbereiche zu identifizieren. Beispielsweise kann das Verfahren bei einem gegebenen Zeitstempel von 1614287788003 (in UNIX-Epochenzeit) ein Fenster von ±1000 (eine Sekunde) definieren, um nach aufgezeichneten Datengrößen zu suchen. Daher fallen alle Datengrößen mit einem Zeitstempel zwischen 1614287787003 und 1614287780003 in das Fenster.
  • Beispielsweise kann in 2A eine Abweichung von ±2 verwendet werden, und somit sind die Schreibvorgänge bei t = 2,3 der Temperatur bei t = 1 zugeordnet, die Schreibvorgänge bei t = 4, 5, 7, 8 sind dem Temperaturmesswert bei t = 6 zugeordnet.
  • In einigen Ausführungsformen kann das Verfahren zuerst überlappende Fenster kombinieren. Wenn sich also zwei Fenster überlappen, kombiniert das Verfahren die Fenster zu einem einzigen Fenster. Beispielsweise können ein Fenster [1614287788003, 1614287789003] und [1614287789000, 1614287710003] zu einem Fenster [1614287788003, 1614287710003] kombiniert werden. Selbstverständlich kann das Kombinieren auf eine beliebige Anzahl von Fenstern angewendet werden.
  • In Fortsetzung des vorherigen Beispiels in Verbindung mit 2A beinhalten die Fenster, die um t = 6,t = 10 zentriert sind, einen überlappenden Datengrößenpunkt bei t = 8. Daher können diese Fenster kombiniert werden, um t = [4,12] einzuschließen. Insbesondere berücksichtigt das Verfahren in einigen Ausführungsformen größere zeitliche Lücken und somit überlappen sich die Temperaturmessungen bei t = 10, t = 100 nicht. In einigen Ausführungsformen ist die resultierende Temperatur, wenn Temperaturfenster kombiniert werden, der Durchschnitt aller aufgezeichneten Temperaturen ( z .  B .   10 20 2 = 15 ) .
    Figure DE102022111346A1_0001
  • Nach Abschluss der vorstehenden Schritte erhält das Verfahren einen Satz von Zeitfenstern mit gleichen oder ähnlichen Temperaturen wie die aktuelle Temperatur. Als Nächstes fragt das Verfahren das Protokoll ab, um alle in den Zeitfenstern protokollierten Datengrößen zu extrahieren. Aus diesen Datengrößen berechnet das Verfahren die optimale Puffergröße. Insbesondere zeichnet das Protokoll die bei bestimmten Temperaturen geschriebene Datenmenge auf und kann somit im Laufe der Zeit analysiert werden, um zu bestimmen, wie viele Daten im Durchschnitt bei bestimmten Temperaturen empfangen werden.
  • In einer Ausführungsform berechnet das Verfahren den Durchschnitt aller ansprechenden Datengrößen, um eine durchschnittliche Datengröße zu erhalten. Diese durchschnittliche Datengröße wird dann als optimale Puffergröße verwendet. In einer anderen Ausführungsform kann das Verfahren die Datengrößen basierend auf ihrem Abstand von der Mitte eines ansprechenden Fensters vorgewichten. In dieser optionalen Ausführungsform geht das Verfahren davon aus, dass aufgezeichnete Datengrößen näher an der aktuellen Temperatur (der Mitte eines Fensters) relevanter sind als Datengrößen näher an den Rändern des Fensters. Daher wird das Verfahren solche zentrierten Datengrößen stärker gewichten.
  • Zurückkehrend zu 2A wird die durchschnittliche Datengröße bei einer Temperatur von -30 °C basierend auf den entsprechenden Datengrößen von 25, 50, 50, 25, 25, 100 bei t = 2, 3, 102,103, 105, 106 berechnet (unter der Annahme einer Abweichung von ±2, die das Fenster definiert). Somit kann die optimale Puffergröße als Durchschnitt dieser Messungen (ungefähr 46 kB) berechnet werden. In einigen Ausführungsformen kann das Verfahren jedoch alternativ den Maximalwert finden und diesen Wert als optimale Puffergröße (z. B. 100 kB) verwenden.
  • Dieses Szenario kann verwendet werden, um Fehler um jeden Preis zu verhindern, trotz des Potenzials für verschwendeten Pufferraum.
  • Wie oben erörtert, kann das dargestellte Verfahren in einem Kraftfahrzeug implementiert sein. Somit spiegeln die Temperaturdaten zeitliche Daten bezüglich des Fahrzeugstarts genau wider. Insbesondere treten die kältesten Temperaturen am häufigsten während des Fahrzeugstarts auf. Somit modelliert das Verfahren in einigen Ausführungsformen implizit die Puffergröße relativ zum Fahrzeugstart.
  • In einigen Ausführungsformen kann Block 304 vollständig lokal auf der Speichervorrichtung ausgeführt werden. In anderen Ausführungsformen kann das Verfahren jedoch die optimale Puffergröße von einer entfernten Computervorrichtung (120) empfangen. In diesen Ausführungsformen lädt die Speichervorrichtung ihre Temperatur- und Datengrößendaten auf die entfernte Computervorrichtung (120). Die entfernte Computervorrichtung (120) kann dann die optimale Puffergröße für eine oder mehrere Temperaturen bestimmen. Beispielsweise kann die entfernte Computervorrichtung (120) die Daten kontinuierlich analysieren und die optimale Puffergröße für einen Bereich von Temperaturen neu berechnen. Alternativ oder in Verbindung mit dem Vorhergehenden kann ein Benutzer die optimalen Puffergrößen manuell aktualisieren, basierend auf dem Betrachten historischer Daten, wie beschrieben. In beiden Ausführungsformen kann die entfernte Computervorrichtung (120) die optimalen Puffergrößen zu der Speichervorrichtung schieben. Als Reaktion darauf kann die Speichervorrichtung ihre Firmware oder ihren Mikrocode anpassen, um die Puffergröße zu verwalten, wie unten in Block 306 beschrieben.
  • In Block 306 passt das Verfahren die Puffergröße der Speichervorrichtung unter Verwendung der optimalen Puffergröße an.
  • In einer Ausführungsform umfasst die Puffergröße einen Teil des SRAM oder DRAM, der dem Puffern von Daten zugewiesen ist, die Befehlen zugeordnet sind. In einer Ausführungsform behält das Verfahren die Größe des Puffers während des Betriebs bei und erhöht oder verringert in Block 306 diese Größe basierend auf der optimalen Puffergröße. In einigen Ausführungsformen umfasst der Puffer einen Seitenpuffer. In einer Ausführungsform umfasst die Anpassung der Puffergröße eine Aktualisierung des Betriebs des Controllers beim Verwalten des Puffers. In einigen Ausführungsformen kann der Controller als Teil dieser Aktualisierung Daten in der zugrunde liegenden Speichervorrichtung (z. B. SRAM oder DRAM) verschieben, um Platz für die erhöhte Puffergröße zu schaffen. In einigen Ausführungsformen kann das Verfahren Inhalte der zugrunde liegenden Speichervorrichtung zu einem dauerhaften Speicher (z. B. NAND-Flash) übertragen, um Platz für den Puffer zu schaffen. In einigen Ausführungsformen kann das Verfahren den optimalen Pufferraum basierend auf der Größe der zugrunde liegenden Speichervorrichtung oder basierend auf anderen internen Maximalwerten begrenzen.
  • In Block 308 bestimmt das Verfahren, ob die optimale Puffergröße neu bestimmt werden muss.
  • In einer Ausführungsform kann Block 308 basierend auf Temperaturänderungen ausgelöst werden. Wenn sich beispielsweise die aktuelle Temperatur um einen voreingestellten Schwellenwert ändert, kann das Verfahren eine Aktualisierung auf die optimale Puffergröße auslösen, indem die Blöcke 304 und 306 erneut ausgeführt werden. Insbesondere kann das Verfahren Block 302 weiterhin kontinuierlich als Hintergrundprozess betreiben.
  • Alternativ oder in Verbindung mit dem Vorhergehenden kann das Verfahren den Block 308 als Reaktion auf eine externe Anforderung von einer entfernten Computervorrichtung (120) auslösen. In dieser Ausführungsform führt das Verfahren kontinuierlich Block 302 aus, bis eine solche Anfrage empfangen wird, und kann als Reaktion darauf zu Block 304 weitergehen. Insbesondere kann die Anforderung jedoch bereits die optimalen Puffergrößen enthalten (wie erörtert) und somit fährt das Verfahren unmittelbar mit Block 306 fort, um die empfangenen Puffergrößen anzuwenden.
  • 4 ist ein Flussdiagramm, das ein Verfahren zum Erzeugen und Aufrechterhalten eines Profils einer Speichervorrichtung gemäß einigen Ausführungsformen der Offenbarung veranschaulicht. In der dargestellten Ausführungsform kann das Verfahren lokal durch eine Speichervorrichtung und in einigen Ausführungsformen durch einen Controller einer Speichervorrichtung ausgeführt werden.
  • In Block 402 initialisiert das Verfahren eine Profilspeicherstelle. In einer Ausführungsform umfasst das Initialisieren einer Profilspeicherstelle das Identifizieren eines Abschnitts eines Speicherarrays, der zum Schreiben verfügbar ist. In einigen Ausführungsformen umfasst das Identifizieren eines zum Schreiben verfügbaren Abschnitts eines Speicherarrays das Identifizieren eines vorkonfigurierten Adressraums des Speicherarrays. In anderen Ausführungsformen umfasst das Identifizieren eines zum Schreiben verfügbaren Abschnitts eines Speicherarrays das Identifizieren eines Adressraums des Speicherarrays, der eine voreingestellte Größenanforderung erfüllt. In einer Ausführungsform umfasst der Abschnitt des Speicherarrays einen zusammenhängenden Abschnitt des Speicherarrays. In einer anderen Ausführungsform umfasst der Abschnitt des Speicherarrays einen nicht zusammenhängenden Abschnitt des Speicherarrays. Wenn in einer Ausführungsform ein nicht zusammenhängender Abschnitt verwendet wird, kann das Verfahren ferner das Speichern einer Abbildungstabelle von Adressstellen umfassen, die der Profilspeicherstelle entsprechen.
  • Nach Block 402 kann das Verfahren die Blöcke 404, 414 und 418 (und ihre nachfolgenden Blöcke) parallel (z. B. auf eine unterbrechungsgesteuerte Weise) ausführen. Im Allgemeinen umfassen die Blöcke 404, 406, 408, 410 und 412 eine Subroutine zur Befehlsprotokollierung; die Blöcke 414 und 416 umfassen eine Subroutine zur Fehlerprotokollierung, und die Blöcke 418 und 420 umfassen eine Subroutine zur Sensorprotokollierung. Jede wird hierin ausführlicher beschrieben.
  • In Block 404 empfängt das Verfahren einen Befehl. In einer Ausführungsform kann ein Befehl einen Lese-, Schreib-, Lösch- oder ähnlichen Befehl umfassen, um in dem Speicherarray gespeicherte Daten zu manipulieren. In einer Ausführungsform empfängt das Verfahren Befehle über eine Schnittstelle, wie etwa eine PCIe-, NVMe-Schnittstelle, eine serielle Peripherieschnittstelle (SPI) oder eine andere Art von Schnittstelle. In der veranschaulichten Ausführungsform können die Befehle einen Identifizierer (z. B. einen Opcode), Konfigurations-Flags und Daten enthalten. In einigen Ausführungsformen können Befehle nur einen Opcode enthalten, während andere Ansprüche verschiedene Konfigurations-Flags oder Daten enthalten können. In der veranschaulichten Ausführungsform fällt jeder Befehl, der an eine Speichervorrichtung ausgegeben werden kann, in den Umfang von Block 404.
  • In Block 406 protokolliert das Verfahren eine Empfangszeit. In einer Ausführungsform ruft das Verfahren eine aktuelle Zeit ab. In einigen Ausführungsformen kann diese Zeit eine Systemzeit umfassen, auf die durch das Verfahren und andere Computervorrichtungen zugegriffen werden kann. In anderen Ausführungsformen kann sie eine lokal aufgezeichnete Zeit umfassen, die durch die Speichervorrichtung erzeugt wird. In einigen Ausführungsformen kann die Speichervorrichtung eine anfängliche Zeit empfangen und ihre eigene Zeit mit einer Taktquelle außerhalb der Speichervorrichtung synchronisieren. In einer Ausführungsform wird die Empfangszeit unmittelbar nach Empfang eines Befehls aufgezeichnet. Beispielsweise kann das Verfahren die Empfangszeit unter Verwendung eines Controllers der Speichervorrichtung aufzeichnen. In einer Ausführungsform schreibt das Verfahren dann Daten in das Speicherarray, welche die Empfangszeit und Einzelheiten des Befehls enthalten. In einer Ausführungsform kann das Detail des Befehls die Kennung (z. B. Opcode) des Befehls, beliebige Konfigurationsdaten und beliebige Daten im Befehl enthalten. In einer Ausführungsform kann das Verfahren die Daten nicht schreiben, kann aber eine Zusammenfassung der Daten schreiben. Beispielsweise kann das Verfahren eine Prüfsumme der Daten berechnen oder kann die Länge der Daten berechnen. In einigen Ausführungsformen kann das Verfahren die von dem Befehl betroffenen Speicheradressen schreiben.
  • In Block 408 führt das Verfahren den empfangenen Befehl aus. Wie dargestellt, kann der Block 408 in einigen Ausführungsformen optional sein oder kann durch eine vorhandene Controller-Logik ausgeführt werden. Kurz gesagt, der Controller kann auf Mikrocode, Firmware oder andere Anweisungen zugreifen, welche die Logik implementieren, die dem empfangenen Befehl zugeordnet ist. Das Verfahren kann dann diesen Mikrocode ausführen, um auf das Speicherarray zuzugreifen und den empfangenen Befehl zu verarbeiten. Wie ausführlicher erörtert wird, kann dieser Mikrocode in einigen Ausführungsformen Parameter enthalten, die den Betrieb des Mikrocodes beeinflussen. Beispielsweise kann eine Taktrate zum Ausführen des Mikrocodes angepasst werden. Wie detaillierter in Verbindung mit 7 erörtert, können diese Parameter durch die Speichervorrichtung als Reaktion auf Befehle von entfernten Computervorrichtungen anpassbar sein.
  • In Block 410 bestimmt das Verfahren, ob ein Fehler aufgetreten ist. In einer Ausführungsform kann der Mikrocode während der Ausführung des Programmcodes, der einem Befehl zugeordnet ist, einen Fehler erzeugen. Beispielsweise kann ein Fehler zurückgegeben werden, wenn der Mikrocode den Daten zugeordnete Fehlerkorrekturcodes nicht verifizieren kann. Als weiteres Beispiel kann ein Fehler zurückgegeben werden, wenn die einem Befehl zugeordnete Adresse nicht im Adressraum der Speichervorrichtung vorhanden ist. Als noch ein weiteres Beispiel kann der Mikrocode einen Fehler zurückgeben, wenn der Befehl versucht, auf eine reservierte Adresse (z. B. den Adressraum des Profilspeichers) zuzugreifen. In der veranschaulichten Ausführungsform empfängt das Verfahren eine Benachrichtigung über diese Fehler oder kann alternativ einen Fehlerbus überwachen, um zu bestimmen, wann Fehler aufgetreten sind. In einer Ausführungsform ordnet der Controller Fehler Befehlen zu. In einigen Ausführungsformen hält das Verfahren eine Warteschlange von in Block 404 empfangenen anstehenden Befehlen aufrecht und kann Fehler mit in der Warteschlange gespeicherten Befehlen verknüpfen.
  • Wenn ein Fehler aufgetreten ist, führt das Verfahren die Fehlerprotokollierungs-Subroutine beginnend mit Block 416 aus, die hierin weiter beschrieben und hier nicht wiederholt wird. Kurz gesagt, das Verfahren protokolliert Fehler und ordnet die Fehler einem in der Warteschlange befindlichen, anstehenden Befehl zu.
  • Wenn kein Fehler auftritt, protokolliert das Verfahren die Ausführungszeit des Befehls in Block 412. In der veranschaulichten Ausführungsform kann der Controller ein Abschlusssignal erzeugen, sobald der Mikrocode die Ausführung eines gegebenen Befehls beendet. Dieses Abschlusssignal kann ausgegeben werden, bevor der Controller das Ergebnis an die Vorrichtung zurücksendet, die den Befehl ausgegeben hat. In der veranschaulichten Ausführungsform erstellt das Verfahren einen Zeitstempel, wenn der Befehl abgeschlossen ist, und kann den Zeitstempel einem in der Warteschlange befindlichen, anstehenden Befehl zuordnen.
  • Wie dargestellt, kann das Verfahren eine Subroutine zur Fehlerprotokollierung umfassen. Diese Routine beginnt bei Block 414, wo sie einen Fehler erkennt. In einigen Ausführungsformen werden Fehler während der Ausführung von Mikrocode als Reaktion auf Befehle erzeugt. Dieser Eintrittspunkt wird in Verbindung mit Block 410 erörtert und wird hier nicht wiederholt. Alternativ können einige Fehler unabhängig von externen Befehlen erzeugt werden. Beispielsweise können beim Hochfahren Fehler beim Lesen einer Flash-Umsetzungstabelle (d. h. LBA-PBA-Tabelle) erzeugt werden. Als weiteres Beispiel können Fehler, die während einer Garbage-Collection-Operation oder anderen administrativen Operationen auftreten, in Block 414 erzeugt und erkannt werden. Im Allgemeinen kann der Fehler verschiedene Details bezüglich des Fehlers enthalten, der von der Steuerung für Protokollierungs- oder Wiederherstellungszwecke verwendet wird.
  • In Block 416 protokolliert das Verfahren den Fehler. In einer Ausführungsform kann das Verfahren den Fehler einem Befehl zuordnen, wenn der Fehler in Block 410 erkannt wurde. Andernfalls kann das Verfahren den Fehler ohne Bezugnahme auf einen Befehl protokollieren.
  • Wie dargestellt, kann das Verfahren eine Subroutine zur Sensorprotokollierung umfassen. Diese Routine beginnt bei Block 418, wo sie Sensordaten empfängt. Als Nächstes protokolliert das Verfahren in Block 420 die Sensordaten. In einer Ausführungsform kann das Verfahren wie oben beschrieben periodisch einen externen Sensor nach Daten abfragen und die Daten im Profilspeicher protokollieren. In einer Ausführungsform kann der externe Sensor einen Temperatursensor oder einen anderen Sensor umfassen. In einigen Ausführungsformen sind diese Anfragen periodisch. Alternativ oder in Verbindung mit dem Vorhergehenden können die Anforderungen durch Befehle ausgelöst werden. Alternativ oder in Verbindung mit dem Vorhergehenden können die Anforderungen durch Fehler ausgelöst werden. In diesen Ausführungsformen kann das Verfahren ferner das Ausgeben einer Datenanforderung an einen Sensor als Reaktion auf das Erkennen eines Befehls oder Fehlers umfassen. Wenn beispielsweise ein Fehler auftritt, kann das Verfahren sofort die Temperatur von einem externen Sensor anfordern. Insbesondere in einigen Ausführungsformen können sich die Sensoren lokal auf der Speichervorrichtung befinden (z. B. ein Temperatursensor auf dem Chip), und somit kann die Anfrage ohne Abfragen über eine Schnittstelle abgeschlossen werden.
  • Obwohl es nicht dargestellt ist, kann das Verfahren von 4 in einigen Ausführungsformen eine Subroutine zur Ereignisprotokollierung umfassen. In dieser Ausführungsform protokolliert das Verfahren willkürliche Ereignisse, die von einem Controller einer Speichervorrichtung gemeldet werden.
  • In einigen Ausführungsformen können die Verfahren von 4 (und den verbleibenden Figuren) so konfiguriert sein, dass sie automatisch auf einer Speichervorrichtung ausgeführt werden. In anderen Ausführungsformen können die Verfahren als Reaktion auf die Aktivierung durch den Benutzer der Verfahren ausgeführt werden. Beispielsweise kann die Speichervorrichtung eine Konfigurationsoption enthalten, welche die oben und hierin beschriebenen Verfahren aktiviert.
  • 5 ist ein Flussdiagramm, das ein Verfahren zum Verwalten der Speicherung eines Profils einer Speichervorrichtung gemäß einigen Ausführungsformen der Offenbarung darstellt. In der dargestellten Ausführungsform kann das Verfahren lokal durch eine Speichervorrichtung und in einigen Ausführungsformen durch einen Controller einer Speichervorrichtung ausgeführt werden.
  • In Block 502 überwacht das Verfahren eine Profilspeicherstelle. In einer Ausführungsform kann das Verfahren die verwendete Kapazität der Profilspeicherstelle periodisch überprüfen. In einigen Ausführungsformen kann das Verfahren dies überwachen, wenn es unter Verwendung der Verfahren von 4 Daten an der Stelle protokolliert. In einer anderen Ausführungsform kann das Verfahren die Profilspeicherstelle unabhängig von den Protokollierungsoperationen periodisch analysieren. In beiden Szenarien ermittelt das Verfahren die Menge an freiem Speicherplatz an der Profilspeicherstelle.
  • In Block 504 bestimmt das Verfahren, ob an der Profilspeicherstelle Speicherplatz verfügbar ist. Wenn dies der Fall ist, fährt das Verfahren damit fort, die Profilspeicherstelle in Block 502 zu überwachen. In einer Ausführungsform bestimmt das Verfahren, ob der berechnete freie Speicherplatz größer als null ist. Wenn dies der Fall ist, bestimmt das Verfahren, dass Speicherplatz verfügbar ist. Alternativ kann das Verfahren bestimmen, ob der berechnete freie Speicherplatz unter einem vorkonfigurierten Schwellenwert liegt. Wenn dies der Fall ist, kann das Verfahren proaktiv bestimmen, dass nicht genügend Speicherplatz verfügbar ist oder verfügbar sein wird. In einigen Ausführungsformen kann das Verfahren ferner vorhersagen, wann der Speicherplatz vollständig genutzt sein wird. In diesen Ausführungsformen kann das Verfahren eine Rate bestimmen, mit der die Profilspeicherstelle abgelegt wird, und die Ausführung des Verfahrens entsprechend planen. In dieser Ausführungsform kann das Verfahren alternativ unterbrechungsgesteuert sein und bei Block 506 beginnen, wobei die Unterbrechung der vorhergesagten Zeit entspricht, in der die Profilspeicherstelle gefüllt wird.
  • Sobald das Verfahren in Block 506 bestimmt, dass nicht genügend Speicherplatz an der Profilspeicherstelle verfügbar ist, bestimmt das Verfahren, ob freier Speicherplatz auf der Speichervorrichtung verfügbar ist. In diesem Block hat das Verfahren bestimmt, dass die zugewiesene Profilspeicherstelle vollständig oder fast ausgelastet ist. Dann bestimmt das Verfahren, ob freier Speicherplatz auf der Speichervorrichtung verfügbar ist. Wie hierin verwendet, bezieht sich freier Speicherplatz auf andere freie Speicherstellen als die Profilspeicherstelle.
  • Wenn in Block 506 freier Speicherplatz auf der Speichervorrichtung verfügbar ist, fährt das Verfahren mit Block 508 fort. Wenn das Verfahren alternativ in Block 506 bestimmt, dass auf der Speichervorrichtung kein freier Speicherplatz verfügbar ist, geht das Verfahren zu Block 510 über. In einigen Ausführungsformen kann das Verfahren in Block 506 auch bestimmen, ob der Profilspeicher eine maximale Kapazität erreicht hat, die in der Speichervorrichtung voreingestellt ist. In diesem Szenario fährt das Verfahren sofort zu Block 510 fort, wenn die voreingestellte maximale Kapazität erreicht ist.
  • In Block 508 weist das Verfahren den Profilspeicher basierend auf dem verfügbaren freien Speicherplatz neu zu. In diesem Block versucht das Verfahren, freien Speicherplatz für die Profilspeicherung neu zuzuweisen, um das Hinzufügen weiterer Protokolldaten zu unterstützen. In einigen Ausführungsformen kann das Verfahren eine maximale Profilspeichergröße festlegen, um zu verhindern, dass der Profilspeicher den gesamten freien Speicherplatz auf der Speichervorrichtung verwendet. In einigen Ausführungsformen wird das Verfahren einen größeren, zusammenhängenden Adressraum identifizieren und das Kopieren des Adressraums des aktuellen Profilspeichers in den neuen Adressraum einleiten. In anderen Ausführungsformen kann das Verfahren nur einen Deltaraum (die benötigte zusätzliche Kapazität) zuweisen und einen Schreibzeiger aktualisieren, um für zukünftige Daten in den Deltaraum zu schreiben. In dieser Ausführungsform kann der Profilspeicher fragmentiert sein, und das Verfahren muss eine Auflistung von Fragmenten führen, um ein vollständiges Lesen des Profilspeichers zu ermöglichen, wie zuvor erörtert.
  • In Block 510 initiiert das Verfahren eine Fernübertragung von Profildaten. In der veranschaulichten Ausführungsform kann Block 510 auch als Reaktion auf das Erfassen ausgeführt werden, dass die Speichervorrichtung kurz davor steht, ausgeschaltet zu werden, wie durch das Unterbrechungssignal 512 veranschaulicht. Wie oben erörtert, kann die Speichervorrichtung, wenn sie ausgeschaltet werden soll, ein Signal empfangen, das dies anzeigt. In der veranschaulichten Ausführungsform hält das Verfahren das Ausschalten an, um eine Fernübertragung zu initiieren (oder zu planen). In der veranschaulichten Ausführungsform kann das Verfahren eine Fernübertragung direkt von einer Speichervorrichtung einleiten. In diesen Ausführungsformen erzeugt das Verfahren die Übertragung und kommuniziert mit einer externen oder internen Netzwerkschnittstelle, um mit einem entfernten Server zu kommunizieren. In anderen Ausführungsformen kann das Verfahren die Übertragung erzeugen und die Übertragung an einen Host-Prozessor zur Netzwerkübertragung weiterleiten.
  • In einer Ausführungsform umfasst der Inhalt der Übertragung die Daten in der Profilspeicherstelle. In einigen Ausführungsformen überträgt das Verfahren alle Inhalte der Profilspeicherstelle. In anderen Ausführungsformen überträgt das Verfahren einen Teil der Inhalte der Profilspeicherstelle. In einigen Ausführungsformen kann das Verfahren die Inhalte in Stücke aufteilen und für jedes Stück mehrere Übertragungen erzeugen.
  • In einigen Ausführungsformen überträgt das Verfahren die Inhalte der Profilspeicherstelle in einem Rohformat. In anderen Ausführungsformen kann das Verfahren die Größe der Rohdaten für die Übertragung komprimieren oder anderweitig reduzieren. Beispielsweise kann das Verfahren die GZip-Komprimierung verwenden, um die Dateigröße zu reduzieren. In einigen Ausführungsformen kann das Verfahren auch eine Vorverarbeitung an den Rohdaten durchführen, um ihre Größe zu reduzieren. Beispielsweise kann das Verfahren Gruppierungs- oder Aggregationsoperationen durchführen, um die Datengröße zu minimieren.
  • In einigen Ausführungsformen kann das Verfahren bei jeder Übertragung eine eindeutige Kennung enthalten, die der Speichervorrichtung zugeordnet ist. In diesen Ausführungsformen kann das Verfahren die Übertragung auch unter Verwendung eines privaten Schlüssels der Speichervorrichtung digital signieren. Wie diskutiert werden wird, kann der Endpunkt, der die Netzwerkübertragung empfängt, eine Zuordnung von öffentlichen Schlüsseln zu eindeutigen Kennungen speichern und kann diese öffentlichen Schlüssel verwenden, um die Übertragungen zu validieren.
  • In Block 514 bestimmt das Verfahren, ob die Netzwerkübertragung erfolgreich ist. In einigen Ausführungsformen kann das verwendete Netzwerkprotokoll Empfangsbestätigungen von Daten zurücksenden. In einigen Ausführungsformen initiiert das Verfahren eine netzwerkbasierte Übertragung unter Verwendung eines Protokolls wie beispielsweise eines Übertragungssteuerungsprotokolls (TCP) oder ähnlicher Protokolle. Somit bestätigt das Verfahren in diesem Block, dass die Netzwerkübertragung durch den Empfänger empfangen wurde.
  • Wenn die Netzwerkübertragung in Block 516 nicht erfolgreich ist, passt das Verfahren die Protokollierungsstrategie an und markiert das Profil für eine erneute Übertragung. Das Verfahren kann abhängig von der Implementierung entweder eine Operation oder beide ausführen.
  • In der veranschaulichten Ausführungsform umfasst das Anpassen einer Protokollierungsstrategie als Reaktion auf einen Misserfolg das Ändern des Protokollierungsumfangs, der von der Speichervorrichtung durchgeführt wird. In einer Ausführungsform kann das Verfahren die gesamte Protokollierung anhalten. In einer anderen Ausführungsform kann das Verfahren die Genauigkeit der Protokollierung herabsetzen (z. B. nur Fehler und keine Lese-/Schreiboperationen protokollieren). In einigen Ausführungsformen kann das Verfahren eine Strategie verwenden, um eine umfassende Protokollierung mit reduziertem Speicherplatz auszugleichen, während das Verfahren auf eine erfolgreiche Übertragung wartet.
  • In der veranschaulichten Ausführungsform kann das Markieren des Profils für eine erneute Übertragung das Sperren der Daten umfassen, deren Übertragung versucht wurde. In einer Ausführungsform kann das Verfahren die Übertragungsdaten an die Profilspeicherstelle umschreiben und die Rohdaten an ihrer Stelle entfernen. Wenn das Verfahren die Daten komprimiert, kann es auf diese Weise den überschüssigen Speicherplatz zurückgewinnen, während die verarbeiteten Daten weiterhin für die erneute Übertragung aufrechterhalten werden. In einigen Ausführungsformen kann das Verfahren periodisch erneute Übertragungen versuchen, bis es erfolgreich ist. In anderen Ausführungsformen kann das Verfahren auf ein Signal von dem Host-Prozessor oder der Netzwerkschnittstelle warten, dass das Netzwerk verfügbar ist.
  • Wenn die Netzwerkübertragung erfolgreich war, löscht das Verfahren in Block 518 die Profilspeicherstelle, die Daten enthält, die an die entfernte Computervorrichtung übertragen wurden. In einer Ausführungsform löscht das Verfahren die Rohdaten an der Profilspeicherstelle, die der Netzwerkübertragung entspricht. In anderen Ausführungsformen kann das Verfahren zuvor die Rohdaten gelöscht und die komprimierten oder anderweitig verarbeiteten Daten geschrieben haben. In diesen Ausführungsformen löscht das Verfahren die verarbeiteten Daten aus der Profilspeicherstelle. In jedem Fall beansprucht das Verfahren den zuvor durch die hochgeladenen Daten belegten Speicherplatz zurück.
  • 6 ist ein Flussdiagramm, das ein Verfahren zum Erzeugen und Aufrechterhalten eines Profils einer Speichervorrichtung gemäß einigen Ausführungsformen der Offenbarung veranschaulicht. In der veranschaulichten Ausführungsform kann das Verfahren lokal durch eine entfernte Computervorrichtung ausgeführt werden. In der veranschaulichten Ausführungsform kann das Verfahren von 6 durch eine entfernte Netzwerkübertragung ausgelöst werden, wie etwa diejenige, die in Block 510 von 5 initiiert wird.
  • In Block 602 empfängt das Verfahren Netzwerkübertragungen von Speichervorrichtungen. Wie diskutiert, können diese Netzwerkübertragungen von Speichervorrichtungen empfangen werden, mit oder ohne Unterstützung durch einen Host-Prozessor. In einigen Ausführungsformen können die Netzwerkübertragungen TCP-Übertragungen oder Übertragungen auf höherer Protokollebene umfassen.
  • In Block 604 validiert und parst das Verfahren die Netzwerkübertragungen. In einer Ausführungsform umfassen die Netzwerkübertragungen digitale Signaturen und eindeutige Kennungen. In einer Ausführungsform extrahiert das Verfahren die eindeutige Kennung und lädt einen öffentlichen Schlüssel, welcher der eindeutigen Kennung zugeordnet ist. In einer Ausführungsform verwaltet das Verfahren eine Datenbank, die eindeutige Kennungen auf öffentliche Schlüssel abbildet, und lädt den öffentlichen Schlüssel aus dieser Datenbank. In anderen Ausführungsformen kann das Verfahren den öffentlichen Schlüssel von einer Zertifizierungsstelle (certificate authority - CA) oder einer anderen vertrauenswürdigen Partei abrufen. In einer Ausführungsform validiert das Verfahren die Netzwerkübertragung durch Extrahieren einer digitalen Signatur aus der Netzwerkübertragung und Entschlüsseln der digitalen Signatur unter Verwendung des öffentlichen Schlüssels, wobei das Entschlüsseln zu einem Übertragungs-Hash (d. h. einem Hash der übertragenen Daten) führt. Das Verfahren führt dann sein eigenes Hashing der Daten durch und vergleicht das Ergebnis mit dem Hash, der durch Entschlüsseln der digitalen Signatur erzeugt wird. Wenn die Hashes übereinstimmen, validiert das Verfahren die Netzwerkübertragung und kann die Übertragung sicher der eindeutigen Kennung (d. h. der übertragenden Speichervorrichtung) zuordnen. Ferner kann das Verfahren in einigen Ausführungsformen eine Zuordnung eindeutiger Kennungen zu Organisationen speichern. Somit kann das Verfahren per Proxy eine Netzwerkübertragung sowohl einer Speichervorrichtung als auch einer Organisation zuordnen.
  • Zusätzlich zum Validieren der Übertragung kann das Verfahren die Übertragung parsen. In einigen Ausführungsformen kann das Parsen der Übertragung das Dekomprimieren der Daten umfassen. Alternativ oder in Verbindung mit dem Vorhergehenden kann das Parsen das Entschlüsseln der Daten umfassen. Alternativ oder in Verbindung mit dem Vorhergehenden kann das Parsen das Erweitern der Daten umfassen. In einigen Ausführungsformen kann das Verfahren die Daten mit zusätzlichen Daten wie Tags, organisationsdefinierten Daten und im Allgemeinen jeder anderen Art von statischen oder halbstatischen Daten erweitern. In einigen Ausführungsformen können diese erweiterten Daten Positionsdaten umfassen. Beispielsweise kann der Bediener der Speichervorrichtung GPS-Daten für eine Computervorrichtung einschließlich der Speichervorrichtung aufzeichnen. Diese Daten können unabhängig von den hierin beschriebenen Protokollierungsoperationen mit einem Zeitstempel versehen werden. Somit kann das Verfahren einen zweiten Datenstrom verwenden und den zweiten Datenstrom mit den Protokolldaten kombinieren, um die Protokolldaten zu erweitern. Somit können die Datenpunkte in 2A mit Echtzeit-GPS-Daten erweitert werden, basierend auf der Verwendung der Speichervorrichtung durch die Organisation.
  • In Block 606 speichert das Verfahren Daten von den Netzwerkübertragungen. In einigen Ausführungsformen kann das Verfahren die Daten in einem relationalen Datenbankcluster oder einer ähnlichen Datenbank speichern. Alternativ oder in Verbindung mit dem Vorhergehenden kann das Verfahren die Daten in einen Data Lake, ein Data Warehouse oder eine andere Big-Data-Speicherplattform schreiben.
  • In der dargestellten Ausführungsform umfassen die Blöcke 602, 604 und 606 eine Empfangs-Subroutine.
  • In Schritt 608 empfängt das Verfahren eine Abfrage. In einer Ausführungsform empfängt das Verfahren eine Abfrage über eine Anwendung. In einer Ausführungsform umfasst die Anwendung eine Webseite, die an einen Client übertragen wird. Alternativ oder in Verbindung mit dem Vorhergehenden kann die Anwendung eine Desktop-Anwendung umfassen. Alternativ oder in Verbindung mit dem Vorhergehenden kann die Anwendung eine mobile Anwendung umfassen. In allen Szenarien kann die Anwendung einen Benutzer oder eine Organisation authentifizieren und Benutzern erlauben, Daten über die Abfrage anzufordern. In einer Ausführungsform kann die Abfrage in eine Netzwerkanforderung eingebettet sein und kann somit eine Netzwerkanforderung (z. B. eine Hypertext-Transfer-Protocol(HTTP)-Anforderung) umfassen. In einer Ausführungsform umfasst die Abfrage verschiedene Parameter, die von dem Server verwendet werden, um von Speichervorrichtungen empfangene Daten zu lokalisieren. Beispielsweise kann die Abfrage einen Zeitbereich, eine Liste eindeutiger Kennungen von Speichervorrichtungen, abzurufende Felder usw. beinhalten.
  • In Block 610 fragt das Verfahren gespeicherte Übertragungsdaten ab. In einer Ausführungsform werden die Übertragungsdaten wie zuvor beschrieben in einer Datenbank gespeichert. In der veranschaulichten Ausführungsform verwendet das Verfahren die Abfrageparameter, um eine geeignete Abfrage für die zugrunde liegende Datenspeichervorrichtung zu erzeugen, und gibt die Abfrage an die Datenspeichervorrichtung aus. Als Antwort empfängt das Verfahren die Daten von der Datenspeichervorrichtung.
  • In Block 612 visualisiert das Verfahren die als Antwort auf die Abfrage zurückgegebenen Übertragungsdaten. In diesem Block parst das Verfahren die zurückgegebenen Daten. In einer Ausführungsform filtert das Verfahren die Daten basierend auf der Abfrage. Beispielsweise können die zurückgegebenen Daten Daten mit vollem Funktionsumfang umfassen, einschließlich Feldern, die nicht auf die Abfrage reagieren. Das Verfahren kann diese Felder vor dem Visualisieren entfernen. Zusätzlich kann das Verfahren Daten basierend auf den Beschränkungen der Visualisierung gruppieren oder aggregieren. Als Nächstes erzeugt das Verfahren eine grafische Visualisierung der Daten. In einigen Ausführungsformen kann diese Visualisierung ein Bild oder eine andere statische Visualisierung umfassen. In anderen Ausführungsformen kann das Verfahren die zum Erzeugen der Visualisierung verwendeten Daten zurückgeben, und der Client kann die Visualisierung unter Verwendung einer clientseitigen Bibliothek (z. B. D3.js oder ähnliche Bibliotheken) erzeugen.
  • In Block 614 antwortet das Verfahren mit der Visualisierung. In der veranschaulichten Ausführungsform antwortet das Verfahren auf die ursprüngliche Netzwerkanforderung, die die Abfrage enthält, wodurch die Übertragung der Visualisierung als Antwort auf die Abfrage abgeschlossen wird. Abhängig von der Anwendung kann die Antwort eine gemarshallte Antwort (z. B. eine Javascript-Object-Notation(JSON)-Antwort) oder eine Webseite (oder beides) umfassen.
  • In der dargestellten Ausführungsform umfassen die Blöcke 608, 610, 612 und 614 eine Visualisierungs-Subroutine.
  • In Block 616 empfängt das Verfahren eine Anforderung zum Aktualisieren einer Speichervorrichtung. In der veranschaulichten Ausführungsform kann die Anwendung eine Schnittstelle bereitstellen, die es einem Benutzer ermöglicht, eine oder mehrere Speichervorrichtungen zu aktualisieren. Beispielsweise kann die Anwendung beim Anzeigen der Visualisierung Schaltflächen oder andere Elemente der Benutzerschnittstelle (user interface - UI) bereitstellen, die mit einem Klick Änderungen an den in der Visualisierung dargestellten Speichervorrichtungen ermöglichen. Andere UI-Elemente können verwendet werden, wie Schieberegler, Text-/Zahleneingaben usw. Ähnlich wie bei den vorhergehenden Übertragungen kann das Verfahren eine Netzwerkanfrage empfangen, die auf eine oder mehrere Speichervorrichtungen verweist und die gewünschte Aktion enthält, die auf der Speichervorrichtung ausgeführt werden soll. Beispielsweise kann die Aktion anzeigen, dass die Taktgeschwindigkeit der Speichervorrichtung für eine Zeitdauer nach dem Einschalten reduziert werden sollte. Die spezifischen Aktionen, die von der Speichervorrichtung durchgeführt werden, sollen nicht einschränkend sein.
  • In Block 618 validiert das Verfahren die Anforderung. In einer Ausführungsform bestätigt das Verfahren, dass alle Speichervorrichtungskennungen mit dem Konto des Benutzers verknüpft sind, der die Abfrage gestellt hat. In einigen Ausführungsformen ist eine Organisation einem oder mehreren Benutzern zugeordnet. Somit kann ein Benutzer, der eine Abfrage stellt, verwendet werden, um eine entsprechende Organisation zu identifizieren. Dann kann das Verfahren, wie erörtert, bestätigen, dass jede Speichervorrichtungskennung dieser Organisation zugeordnet ist. Somit stellt das Verfahren in Block 618 sicher, dass Benutzer keine beliebige Speichervorrichtung aktualisieren können. Ferner kann das Verfahren in einigen Ausführungsformen ein rollenbasiertes Berechtigungssystem verwenden, um zu bestätigen, dass der Benutzer die Berechtigung hat, die angeforderte Aktualisierung durchzuführen. Beispielsweise können Benutzer als „Nur anzeigen“ klassifiziert werden und daher keine Aktualisierungen an Speichervorrichtungen durchführen.
  • In Block 620 erzeugt und überträgt das Verfahren Befehle an eine Speichervorrichtung. In einer Ausführungsform erzeugt das Verfahren vorrichtungsspezifische Befehle und überträgt diese Befehle an jede Speichervorrichtung.
  • In einer Ausführungsform wird jeder Speichervorrichtung eine Netzwerkadresse zum Empfangen von Daten zugewiesen. In dieser Ausführungsform kann das Verfahren Befehle direkt an Speichervorrichtungen ausgeben. In anderen Ausführungsformen kann das Verfahren die Befehle erzeugen und die Befehle an eine andere Computervorrichtung übertragen. Diese andere Computervorrichtung kann für die Verwaltung der Netzwerkadressen von Speichervorrichtungen verantwortlich sein und kann die Befehle an die Speichervorrichtungen weiterleiten. Beispielsweise kann ein Server, der autonome Fahrzeuge verwaltet, die Befehle empfangen und die Befehle basierend auf seiner Verwaltung der Flotte an jedes autonome Fahrzeug ausgeben. In einer anderen Ausführungsform kann eine Organisation, die Cloud-basierte IoT-Dienste für IoT-Vorrichtungen bereitstellt, die Befehle empfangen und die Befehle (ähnlich einer „Aktualisierung“) an alle verbundenen IoT-Vorrichtungen ausgeben.
  • In einigen Ausführungsformen können die Befehle die Form von Mikrocode- oder Firmware-Aktualisierungen annehmen, die auf Speichervorrichtungen zu installieren sind. Somit können in einigen Ausführungsformen die Aktualisierungen der Speichervorrichtungen als solche installiert werden, indem beliebige vorhandene Firmware-/Mikrocode-Aktualisierungstechniken verwendet werden.
  • In der dargestellten Ausführungsform umfassen die Blöcke 616, 618 und 620 eine Fernaktualisierungs-Subroutine.
  • 7 ist ein Flussdiagramm, das ein Verfahren zum Aktualisieren der Betriebsparameter einer Speichervorrichtung gemäß einigen Ausführungsformen der Offenbarung veranschaulicht. In der dargestellten Ausführungsform kann das Verfahren lokal durch eine Speichervorrichtung und in einigen Ausführungsformen durch einen Controller einer Speichervorrichtung ausgeführt werden.
  • In Block 702 empfängt das Verfahren eine Aktualisierung von einer entfernten Computervorrichtung, wobei die Aktualisierung Anweisungen zum Modifizieren der Operationen des Speichervorrichtungs-Controllers umfasst. In einer Ausführungsform umfasst die Aktualisierung eine Reihe von Befehlen, welche die Speichervorrichtung ausführen muss, um ihre Einstellungen zu aktualisieren. In einer anderen Ausführungsform umfasst die Aktualisierung eine Mikrocode- oder Firmware-Aktualisierung. In einer Ausführungsform kann das Verfahren die Aktualisierung direkt von der entfernten Computervorrichtung über eine Netzwerkschnittstelle empfangen. In anderen Ausführungsformen kann das Verfahren die Aktualisierung von einem Host-Prozessor über einen internen Speicherbus empfangen.
  • In Block 704 validiert das Verfahren die Aktualisierung. In einer Ausführungsform kann die Aktualisierung unter Verwendung des privaten Schlüssels der entfernten Computervorrichtung digital signiert werden. In einer Ausführungsform verwendet das Verfahren einen vorgespeicherten öffentlichen Schlüssel, der dem privaten Schlüssel entspricht, um die digitale Signatur zu validieren, ähnlich dem in Block 604 beschriebenen Prozess. In einer Ausführungsform kann die Aktualisierung ferner durch einen privaten Schlüssel signiert werden, der durch den Host-Prozessor verwendet wird, und die Speichervorrichtung kann eine zweite Validierung der unter Verwendung dieses privaten Schlüssels erzeugten digitalen Signatur durchführen.
  • In Block 706 bestimmt das Verfahren, ob die Speichervorrichtung bereit ist, die Aktualisierung anzuwenden. In einer Ausführungsform wendet das Verfahren eine Aktualisierung an, wenn keine Befehle bedient werden. In einer Ausführungsform kann das Verfahren die Aktualisierung zeitlich so festlegen, dass sie während eines Garbage-Collection-Zyklus oder eines ähnlichen Wartungsintervalls angewendet wird. Auf diese Weise kann die Aktualisierung schnellstmöglich angewendet werden.
  • Wenn das Verfahren in Block 708 bestimmt, dass die Speichervorrichtung den Befehl nicht anwenden kann, verschiebt es die Ausführung des Befehls. Als Nächstes bestimmt das Verfahren weiter, ob die Speichervorrichtung bereit ist (Block 710), und verschiebt den Befehl (Block 708), bis die Speichervorrichtung bereit ist (Block 710). Sobald die Speichervorrichtung bereit ist, fährt das Verfahren mit Block 712 fort.
  • In Block 712 modifiziert das Verfahren die Operationen der Speichervorrichtung basierend auf der empfangenen Aktualisierung. Wie oben erörtert, kann das Verfahren in einigen Ausführungsformen den Mikrocode oder die Firmware des Controllers basierend auf der Aktualisierung patchen oder ersetzen. In anderen Ausführungsformen kann das Verfahren eine Konfigurationseinstellung oder mehrere solcher Einstellungen als Reaktion auf die Aktualisierung aktualisieren.
  • 8 ist ein Blockdiagramm, das ein Speichersystem gemäß einigen Ausführungsformen der Offenbarung veranschaulicht.
  • Wie in 8 veranschaulicht, enthält ein Computersystem (800) einen Host-Prozessor (802), der über einen Bus (804) kommunikativ mit einem Speichersystem (818) gekoppelt ist. Das Speichersystem (804) umfasst einen Controller (806), der kommunikativ über einen Bus/eine Schnittstelle (816) mit einer oder mehreren Speicherbänken (814A-814N) gekoppelt ist, die ein Speicherarray bilden. Wie veranschaulicht beinhaltet der Controller (806) einen lokalen Cache (808), Firmware (810) und ein Error-Correction-Code(ECC)-Modul (812).
  • In der veranschaulichten Ausführungsform kann ein Host-Prozessor (802) jede Art von Computerprozessor umfassen, z. B. eine zentrale Verarbeitungseinheit (CPU), Grafikverarbeitungseinheit (GPU) oder andere Arten von Allzweck- oder Spezial-Computervorrichtungen. Der Prozessor (802) enthält einen oder mehrere Ausgabeanschlüsse, die die Übermittlung von Adress-, Benutzer- und Steuerdaten zwischen dem Host-Prozessor (802) und dem Speichersystem (804) ermöglichen. In der veranschaulichten Ausführungsform wird diese Kommunikation über den Bus (818) durchgeführt. In einer Ausführungsform umfasst der Bus (818) einen Eingabe-/Ausgabe(E/A)-Bus oder eine ähnliche Art von Bus.
  • Das Speichersystem (804) ist für die Verwaltung einer oder mehrerer Speicherbänke (814A-814N) verantwortlich. In einer Ausführungsform umfassen die Bänke (814A-814N) NAND-Flash-Chips oder andere Konfigurationen von nichtflüchtigem Speicher. In einer Ausführungsform umfassen die Speicherbänke (814A-814N) ein Speicherarray.
  • Die Bänke (814A-814N) werden durch den Controller (806) verwaltet. In einigen Ausführungsformen umfasst der Controller (806) eine Computervorrichtung, die konfiguriert ist, um den Zugriff auf die Bänke und von den Bänken (814A-814N) zu vermitteln. In einer Ausführungsform umfasst der Controller (806) eine ASIC oder eine andere Schaltung, die auf einer Leiterplatte installiert ist, die die Bänke (814A-814N) aufnimmt. In einigen Ausführungsformen kann der Controller (806) physisch von den Bänken (814A-814N) getrennt sein. Der Controller (806) kommuniziert über die Schnittstelle (816) mit den Bänken (814A-814N). In einigen Ausführungsformen umfasst diese Schnittstelle (812) eine physisch verdrahtete (z. B. getracete) Schnittstelle. In anderen Ausführungsformen umfasst die Schnittstelle (812) einen Standardbus zum Kommunizieren mit den Bänken (814A-814N).
  • Der Controller (806) umfasst verschiedene Module (808-812). In einer Ausführungsform umfassen die verschiedenen Module (808-812) verschiedene physisch unterschiedliche Module oder Schaltungen. In anderen Ausführungsformen können die Module (808-812) vollständig (oder teilweise) in Software oder Firmware implementiert sein.
  • Wie veranschaulicht, umfasst die Firmware (810) den Kern des Controllers und verwaltet alle Operationen des Controllers (806). Die Firmware (810) kann einige oder alle der vorstehend beschriebenen Verfahren implementieren. Insbesondere kann die Firmware (810) die in den 4 bis 7 beschriebenen Verfahren implementieren.
  • 9 ist ein Blockdiagramm, das eine Computervorrichtung veranschaulicht, die ein Beispiel einer Client- oder Servervorrichtung zeigt, die in den verschiedenen Ausführungsformen der Offenbarung verwendet wird.
  • Die Computervorrichtung (900) kann abhängig von der Bereitstellung oder Verwendung der Vorrichtung (900) mehr oder weniger Komponenten als die in 9 gezeigten enthalten. Zum Beispiel kann eine Server-Computervorrichtung, wie ein in einem Rack montierter Server, möglicherweise keine Audioschnittstellen (952), Anzeigen (954), Tastaturen (956), Illuminatoren (958), haptische Schnittstellen (962), Global-Positioning-Service(GPS)-Empfänger (964) oder Kameras/Sensoren (966) beinhalten. Einige Vorrichtungen können zusätzliche, nicht gezeigte Komponenten umfassen, wie etwa Grafikverarbeitungseinheit(GPU)-Vorrichtungen, kryptografische Coprozessoren, Beschleuniger für künstliche Intelligenz (KI) oder andere Peripherievorrichtungen.
  • Wie in der Figur gezeigt, beinhaltet die Vorrichtung (900) eine zentrale Verarbeitungseinheit (CPU) (922), die über einen Bus (924) mit einem Massenspeicher (930) kommuniziert. Die Computervorrichtung (900) beinhaltet auch eine oder mehrere Netzwerkschnittstellen (950), eine Audioschnittstelle (952), eine Anzeige (954), eine Tastatur (956), einen Illuminator (958), eine Eingabe-/Ausgabeschnittstelle (960), eine haptische Schnittstelle (962), einen optionalen Global-Positioning-System(GPS)-Empfänger (964) und eine oder mehrere Kameras oder andere optische, thermische oder elektromagnetische Sensoren (966). Die Vorrichtung (900) kann eine Kamera/einen Sensor (966) oder eine Vielzahl von Kameras/Sensoren (966) enthalten. Die Positionierung der Kamera(s)/Sensor(en) (966) auf der Vorrichtung (900) kann sich je nach Modell der Vorrichtung (900), nach den Fähigkeiten der Vorrichtung (900) und dergleichen oder einer Kombination davon ändern.
  • In einigen Ausführungsformen kann die CPU (922) eine Allzweck-CPU umfassen. Die CPU (922) kann eine Einkern- oder Mehrkern-CPU umfassen. Die CPU (922) kann ein System-on-a-Chip (SoC) oder ein ähnliches eingebettetes System umfassen. In einigen Ausführungsformen kann eine GPU anstelle von oder in Kombination mit einer CPU (922) verwendet werden. Der Massenspeicher (930) kann eine dynamische Speichervorrichtung mit wahlfreiem Zugriff (DRAM), eine statische Speichervorrichtung mit wahlfreiem Zugriff (SRAM) oder eine Flash-Speichervorrichtung (z. B. NAND-Flash) umfassen. In einigen Ausführungsformen kann der Massenspeicher (930) eine Kombination solcher Speichertypen umfassen. In einer Ausführungsform kann der Bus (924) einen Peripheral-Component-Interconnect-Express(PCIe)-Bus umfassen. In einigen Ausführungsformen kann der Bus (924) mehrere Busse anstelle eines einzigen Busses umfassen.
  • Der Massenspeicher (930) veranschaulicht ein weiteres Beispiel von Computerspeichermedien zum Speichern von Informationen, wie etwa computerlesbaren Anweisungen, Datenstrukturen, Programmmodulen oder anderen Daten. Der Massenspeicher (930) speichert ein Basic Input/Output System („BIOS“) (940) zum Steuern des Betriebs der Computervorrichtung (900) auf niedriger Ebene. In der veranschaulichten Ausführungsform kann das BIOS (940) in einem Nur-Lese-Speicher (read-only memory - ROM) wie etwa dem ROM (934) gespeichert sein. Der Massenspeicher speichert auch ein Betriebssystem (941) zum Steuern des Betriebs der Computervorrichtung (900).
  • Anwendungen (942) können computerausführbare Anweisungen enthalten, die, wenn sie durch die Computervorrichtung (900) ausgeführt werden, eines der Verfahren (oder Teile der Verfahren) ausführen, die zuvor in der Beschreibung der vorhergehenden Figuren beschrieben wurden. In einigen Ausführungsformen können die Software oder Programme, die die Ausführungsformen des Verfahrens implementieren, von einem Festplattenlaufwerk (nicht veranschaulicht) gelesen und durch die CPU (922) temporär im RAM (932) gespeichert werden. Die CPU (922) kann dann die Software oder Daten aus dem RAM (932) lesen, sie verarbeiten und sie wieder im RAM (932) speichern.
  • Die Computervorrichtung (900) kann optional mit einer Basisstation (nicht gezeigt) oder direkt mit einer anderen Computervorrichtung kommunizieren. Die Netzwerkschnittstelle (950) wird manchmal als ein Transceiver, eine Sende-/Empfangsvorrichtung oder eine Netzwerkschnittstellenkarte (network interface card - NIC) bezeichnet.
  • Die Audioschnittstelle (952) erzeugt und empfängt Audiosignale, wie etwa den Klang einer menschlichen Stimme. Zum Beispiel kann die Audioschnittstelle (952) mit einem Lautsprecher und einem Mikrofon (nicht gezeigt) gekoppelt sein, um eine Telekommunikation mit anderen zu ermöglichen oder um eine Audiobestätigung für eine Aktion zu erzeugen. Die Anzeige (954) kann eine Flüssigkristallanzeigen(liquid crystal display - LCD)-, Gasplasma-, Leuchtdioden(lightemitting diode - LED)- oder jede andere Art von Anzeige sein, die mit einer Computervorrichtung verwendet wird. Die Anzeige (954) kann auch einen berührungsempfindlichen Bildschirm beinhalten, der so angeordnet ist, dass er eine Eingabe von einem Objekt, wie etwa einem Eingabestift oder einem Finger einer menschlichen Hand, empfängt.
  • Die Tastatur (956) kann eine beliebige Eingabevorrichtung umfassen, die so angeordnet ist, dass sie eine Eingabe von einem Benutzer empfängt. Der Illuminator (958) kann eine Statusanzeige bereitstellen oder Licht bereitstellen.
  • Die Computervorrichtung (900) umfasst auch eine Eingabe-/Ausgabeschnittstelle (960) zum Kommunizieren mit externen Vorrichtungen unter Verwendung von Kommunikationstechnologien, wie etwa USB, Infrarot, Bluetooth® oder dergleichen. Die haptische Schnittstelle (962) stellt einem Benutzer der Client-Vorrichtung taktiles Feedback bereit.
  • Der optionale GPS-Empfänger (964) kann die physischen Koordinaten der Computervorrichtung (900) auf der Erdoberfläche bestimmen, die typischerweise einen Standort als Breiten- und Längengradwerte ausgeben. Der GPS-Empfänger (964) kann auch andere Geopositionierungsmechanismen verwenden, einschließlich, aber nicht beschränkt auf Triangulation, unterstütztes GPS (assisted GPS - AGPS), E-OTD, CI, SAI, ETA, BSS oder dergleichen, um den physischen Standort der Computervorrichtung (900) auf der Erdoberfläche weiter zu bestimmen. In einer Ausführungsform kann die Computervorrichtung (900) jedoch durch andere Komponenten kommunizieren, andere Informationen bereitstellen, die verwendet werden können, um einen physischen Standort der Vorrichtung zu bestimmen, einschließlich zum Beispiel einer MAC-Adresse, einer Internetprotokoll(IP)-Adresse oder dergleichen.
  • Einige Teile der vorhergehenden detaillierten Beschreibungen wurden hinsichtlich Algorithmen und symbolischen Darstellungen von Vorgängen an Datenbits innerhalb eines Computerspeichers dargestellt. Diese algorithmischen Beschreibungen und Darstellungen sind die Wege, die von Fachleuten der Datenverarbeitung verwendet werden, um die Substanz ihrer Arbeit einem anderen Fachmann am effektivsten zu vermitteln. Ein Algorithmus ist hier und im Allgemeinen konzipiert, eine selbstkonsistente Abfolge an Operationen zu sein, die zu dem gewünschten Ergebnis führt. Die Operationen sind diejenigen, die physische Manipulationen physischer Größen erfordern. In der Regel, aber nicht zwingend, nehmen diese Größen die Form von elektrischen oder magnetischen Signalen an, die dazu in der Lage sind, gespeichert, kombiniert, verglichen und anderweitig manipuliert zu werden. Es hat sich manchmal als praktisch erwiesen, hauptsächlich aus Gründen der gewöhnlichen Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Charakter, Begriffe, Zahlen oder dergleichen zu bezeichnen.
  • Es sollte jedoch berücksichtigt werden, dass all diese und ähnliche Begriffe mit den angemessenen physischen Größen zu assoziieren sind und lediglich praktische Etiketten sind, die auf diese Größen angewandt werden. Die vorliegende Offenbarung kann die Handlung und Prozesse eines Computersystems oder einer ähnlichen elektronischen Computervorrichtung betreffen, die Daten, die als physische (elektronische) Größen innerhalb der Register und Speicher des Computersystems dargestellt sind, manipuliert und in andere Daten umwandelt, die ähnlich als physische Größen innerhalb der Speicher oder Register des Computersystems oder anderer solcher Informationsspeichersysteme dargestellt sind.
  • Die vorliegende Offenbarung bezieht sich außerdem auf eine Vorrichtung zum Durchführen der Operationen in dieser Schrift. Diese Vorrichtung kann speziell für die beabsichtigten Zwecke konstruiert sein oder sie kann einen Allzweckcomputer beinhalten, der durch ein im Computer gespeichertes Computerprogramm wahlweise aktiviert oder neu konfiguriert wird. Ein derartiges Computerprogramm kann in einem computerlesbaren Speichermedium gespeichert werden, wie etwa, ohne darauf beschränkt zu sein, jede Art von Festplatte, was Disketten, optische Festplatten, CD-ROM und magnetisch-optische Festplatten, Festwertspeicher (ROM), Direktzugriffsspeicher (RAM), EPROM, EEPROM, magnetische oder optische Karten oder eine beliebige Art von Medien beinhaltet, die zum Speichern elektronischer Anweisungen geeignet und jeweils an einen Computersystembus gekoppelt sind.
  • Die hierin vorgestellten Algorithmen und Anzeigen beziehen sich nicht grundsätzlich auf einen bestimmten Computer oder eine bestimmte andere Vorrichtung. Verschiedene Allzwecksysteme können mit Programmen gemäß den in dieser Schrift enthaltenen Lehren verwendet werden, oder es kann sich als vorteilhaft erweisen, eine spezialisiertere Vorrichtung zu konstruieren, um das Verfahren durchzuführen. Die Struktur für eine Reihe dieser Systeme wird wie in der nachfolgenden Beschreibung angegeben angezeigt. Zusätzlich wird die vorliegende Offenbarung nicht unter Bezugnahme auf eine bestimmte Programmiersprache beschrieben. Es versteht sich, dass eine Reihe von Programmiersprachen verwendet werden kann, um die hierin beschriebenen Lehren der Offenbarung umzusetzen.
  • Die vorliegende Offenbarung kann als ein Computerprogrammprodukt oder eine Software bereitgestellt sein, das/die ein maschinenlesbares Medium beinhalten kann, das darauf gespeicherte Anweisungen aufweist, die verwendet werden können, um ein Computersystem (oder andere elektronische Vorrichtungen) zu programmieren, um einen Prozess gemäß der vorliegenden Offenbarung durchzuführen. Ein maschinenlesbares Medium beinhaltet einen beliebigen Mechanismus zum Speichern von Informationen in einer Form, die durch eine Maschine (z. B. einem Computer) gelesen werden kann. In einigen Ausführungsformen beinhaltet ein maschinenlesbares (z. B. computerlesbares) Medium ein durch eine Maschine (z. B. einen Computer) lesbares Speichermedium, wie etwa Festwertspeicher („ROM“), Direktzugriffsspeicher („RAM“), magnetische Festplattenspeichermedien, optische Speichermedien, Flash-Speicherkomponenten usw.
  • In dieser Beschreibung können verschiedene Funktionen und Operationen so beschrieben sein, dass sie durch Computeranweisungen durchgeführt oder veranlasst werden, um die Beschreibung zu vereinfachen. Der Fachmann wird jedoch erkennen, dass mit solchen Ausdrücken gemeint ist, dass die Funktionen aus der Ausführung der Computeranweisungen durch einen oder mehrere Controller oder einen oder mehrere Prozessoren, wie beispielsweise einen Mikroprozessor, resultieren. Alternativ oder in Kombination können die Funktionen und Operationen unter Verwendung von Spezialschaltkreisen mit oder ohne Softwareanweisungen implementiert sein, wie etwa unter Verwendung einer anwendungsspezifischen integrierten Schaltung (ASIC) oder eines feldprogrammierbaren Gate-Arrays (FPGA). Ausführungsformen können unter Verwendung festverdrahteter Schaltkreise ohne Softwareanweisungen oder in Kombination mit Softwareanweisungen implementiert sein. Somit sind die Techniken weder auf eine bestimmte Kombination von Hardware-Schaltung und Software noch auf eine bestimmte Quelle für die durch das Datenverarbeitungssystem ausgeführten Anweisungen beschränkt.
  • In der vorstehenden Beschreibung wurden Ausführungsformen der Offenbarung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen davon beschrieben. Es versteht sich, dass verschiedene Modifikationen daran vorgenommen werden können, ohne vom weiteren Geist und Schutzumfang der Offenbarung abzuweichen, wie sie in den folgenden Patentansprüchen dargelegt sind. Die Beschreibung und die Zeichnungen sind dementsprechend in einem veranschaulichenden und nicht in einem einschränkenden Sinne zu verstehen.

Claims (21)

  1. Verfahren, umfassend: Überwachen (302), durch eine Speichervorrichtung (104), von Chiptemperaturen und Datengrößen von Befehlen, die an die Speichervorrichtung (104) ausgegeben werden; Bestimmen (304), durch die Speichervorrichtung (104), einer Zielgröße für einen Puffer basierend auf den Chiptemperaturen und Datengrößen; und Anpassen (306) einer aktuellen Größe des Puffers durch die Speichervorrichtung (104), um der Zielgröße zu entsprechen.
  2. Verfahren nach Anspruch 1, wobei das Überwachen (302) der Chiptemperaturen das Lesen der Chiptemperaturen von einem Temperatursensor, das Erzeugen von Zeitstempeln für Chiptemperaturen und das Schreiben der Chiptemperaturen und Zeitstempel in eine Protokolldatei umfasst.
  3. Verfahren nach Anspruch 1 oder 2, wobei das Überwachen (302) von Datengrößen von an die Speichervorrichtung ausgegebenen Befehlen das Berechnen einer Datengröße von Daten umfasst, die zum Ausführen der Befehle erforderlich sind.
  4. Verfahren nach Anspruch 3, wobei die Befehle Lese- und Schreibbefehle umfassen.
  5. Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend das Bestimmen (308), dass eine aktuelle Temperatur unter einer Zielbetriebstemperatur liegt, vor dem Bestimmen der Zielgröße für den Puffer.
  6. Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend das Hochladen der Chiptemperatur und der Datengrößen auf eine entfernte Computervorrichtung (120).
  7. Verfahren nach Anspruch 6, wobei das Bestimmen (304) der Zielgröße das Empfangen der Zielgröße von der entfernten Computervorrichtung (120) umfasst.
  8. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Bestimmen (304) der Zielgröße das Identifizieren historischer Datengrößen umfasst, die bei historischen Temperaturen aufgezeichnet wurden, wobei die historischen Temperaturen innerhalb einer voreingestellten Abweichung von einer aktuellen Temperatur liegen.
  9. Nichtflüchtiges computerlesbares Speichermedium zum greifbaren Speichern von Computerprogrammanweisungen, die durch einen Computerprozessor ausgeführt werden können, wobei die Computerprogrammanweisungen die folgenden Schritte definieren: Überwachen (302) von Chiptemperaturen und Datengrößen von Befehlen, die an eine Speichervorrichtung (104) ausgegeben werden; Bestimmen (304) einer Zielgröße für einen Puffer basierend auf den Chiptemperaturen und Datengrößen; und Anpassen (306) einer aktuellen Größe des Puffers, um der Zielgröße zu entsprechen.
  10. Computerlesbares Speichermedium nach Anspruch 9, wobei das Überwachen (302) der Chiptemperaturen das Lesen der Chiptemperaturen von einem Temperatursensor, das Erzeugen von Zeitstempeln für die Chiptemperaturen und das Schreiben der Chiptemperaturen und Zeitstempel in eine Protokolldatei umfasst.
  11. Computerlesbares Speichermedium nach Anspruch 9 oder 10, wobei das Überwachen (302) von Datengrößen von an die Speichervorrichtung (104) ausgegebenen Befehlen das Berechnen einer Datengröße von Daten umfasst, die zum Ausführen der Befehle erforderlich sind.
  12. Computerlesbares Speichermedium nach Anspruch 11, wobei die Befehle Lese- und Schreibbefehle umfassen.
  13. Computerlesbares Speichermedium nach einem der vorhergehenden Ansprüche 9 bis 12, wobei die Programmanweisungen vor dem Bestimmen (304) der Zielgröße für den Puffer ferner einen Schritt zum Bestimmen (308), dass eine aktuelle Temperatur unter einer Zielbetriebstemperatur liegt, definieren.
  14. Computerlesbares Speichermedium nach einem der vorhergehenden Ansprüche 9 bis 13, wobei die Programmanweisungen ferner einen Schritt des Hochladens der Chiptemperatur und der Datengrößen auf eine entfernte Computervorrichtung (120) definieren.
  15. Computerlesbares Speichermedium nach Anspruch 14, wobei das Bestimmen der Zielgröße das Empfangen der Zielgröße von der entfernten Computervorrichtung (120) umfasst.
  16. Computerlesbares Speichermedium nach einem der vorhergehenden Ansprüche 9 bis 15, wobei das Bestimmen der Zielgröße das Identifizieren historischer Datengrößen umfasst, die bei historischen Temperaturen aufgezeichnet wurden, wobei die historischen Temperaturen innerhalb einer voreingestellten Abweichung von einer aktuellen Temperatur liegen.
  17. Speichervorrichtung (104), umfassend: ein Speicherarray; und ein Controller, der konfiguriert ist zum: Überwachen (302) von Chiptemperaturen und Datengrößen von Befehlen, die an die Speichervorrichtung ausgegeben werden, wobei die Befehle auf das Speicherarray zugreifen; Bestimmen (304) einer Zielgröße für einen Puffer basierend auf den Chiptemperaturen und Datengrößen; und Anpassen (306) einer aktuellen Größe des Puffers, um der Zielgröße zu entsprechen.
  18. Vorrichtung nach Anspruch 17, wobei das Überwachen (302) der Chiptemperaturen das Lesen der Chiptemperaturen von einem Temperatursensor, das Erzeugen von Zeitstempeln für die Chiptemperaturen und das Schreiben der Chiptemperaturen und Zeitstempel in eine Protokolldatei umfasst.
  19. Vorrichtung nach Anspruch 17 oder 18, wobei der Controller ferner so konfiguriert ist, dass er vor dem Bestimmen (304) der Zielgröße für den Puffer bestimmt, dass eine aktuelle Temperatur unter einer Zielbetriebstemperatur liegt.
  20. Vorrichtung nach einem der vorhergehenden Ansprüche 17 bis 19, wobei der Controller ferner konfiguriert ist zum: Hochladen der Chiptemperatur und Datengrößen auf eine entfernte Computervorrichtung; und wobei das Bestimmen der Zielgröße das Empfangen der Zielgröße von der entfernten Computervorrichtung umfasst.
  21. Vorrichtung nach einem der vorhergehenden Ansprüche 17 bis 20, wobei das Bestimmen (304) der Zielgröße das Identifizieren historischer Datengrößen umfasst, die bei historischen Temperaturen aufgezeichnet wurden, wobei die historischen Temperaturen innerhalb einer voreingestellten Abweichung von einer aktuellen Temperatur liegen.
DE102022111346.9A 2021-05-13 2022-05-06 Automatische betriebsmodusverwaltung für speicher unter verwendung von arbeitsbelastungs-profildaten Pending DE102022111346A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/320,111 2021-05-13
US17/320,111 US11989445B2 (en) 2021-05-13 2021-05-13 Automatic operating mode management for memory using workload profile data

Publications (1)

Publication Number Publication Date
DE102022111346A1 true DE102022111346A1 (de) 2022-11-17

Family

ID=83806283

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022111346.9A Pending DE102022111346A1 (de) 2021-05-13 2022-05-06 Automatische betriebsmodusverwaltung für speicher unter verwendung von arbeitsbelastungs-profildaten

Country Status (3)

Country Link
US (1) US11989445B2 (de)
CN (1) CN115344194A (de)
DE (1) DE102022111346A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12007887B2 (en) 2021-05-25 2024-06-11 SK Hynix Inc. Method and system for garbage collection
TW202246985A (zh) 2021-05-25 2022-12-01 韓商愛思開海力士有限公司 主機裝置、儲存裝置以及電子裝置
US11954350B2 (en) * 2021-05-25 2024-04-09 SK Hynix Inc. Storage device and method of operating the same

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080033980A1 (en) * 2006-08-03 2008-02-07 Jaroslav Andrew Delapedraja System and method for automatically adjusting file system settings
US7596643B2 (en) * 2007-02-07 2009-09-29 Siliconsystems, Inc. Storage subsystem with configurable buffer
US8612377B2 (en) * 2009-12-17 2013-12-17 Oracle International Corporation Techniques for generating diagnostic results
US20120095719A1 (en) * 2010-10-19 2012-04-19 Lenovo (Singapore) Pte. Ltd. Memory thermal management based on slot information
KR20160026329A (ko) * 2014-08-29 2016-03-09 삼성전자주식회사 내부 온도의 변화에 기초하여 성능을 제어하는 전자 장치 및 방법
US20170024297A1 (en) * 2015-07-22 2017-01-26 Kabushiki Kaisha Toshiba Storage Device and Data Save Method
US11086755B2 (en) * 2017-06-26 2021-08-10 Jpmorgan Chase Bank, N.A. System and method for implementing an application monitoring tool
US10560396B2 (en) * 2017-10-04 2020-02-11 International Business Machines Corporation Dynamic buffer allocation in similar infrastructures
US20220188208A1 (en) * 2020-12-10 2022-06-16 Advanced Micro Devices, Inc. Methods for configuring span of control under varying temperature

Also Published As

Publication number Publication date
US11989445B2 (en) 2024-05-21
US20220365710A1 (en) 2022-11-17
CN115344194A (zh) 2022-11-15

Similar Documents

Publication Publication Date Title
DE102022111346A1 (de) Automatische betriebsmodusverwaltung für speicher unter verwendung von arbeitsbelastungs-profildaten
DE112015001977B4 (de) Synchronisieren von Aktualisierungen von Statusanzeigern in einer Datenverarbeitungsumgebung
DE112018002951B4 (de) Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten
DE69432878T2 (de) Informationsverarbeitungssystem mit Flash-Speicher und Cache-Speicher
US9413807B1 (en) Browser rendering and computation
DE102012216035B4 (de) Aktivierung der drosselung auf den durchschnittlichen schreibdurchsatz bei festkörperspeichereinheiten
DE102018214013A1 (de) Automatische kontinuierliche Prüfpunktsetzung
DE112010003650B4 (de) Container-Markierungsschema zum Verringern einer Schreibverstärkung bei Halbleiter-Einheiten
DE202012013405U1 (de) Cloud-zu Gerät-Nachrichtenübermittlung zur Anwendungsaktivierung und Meldung
DE102020102783A1 (de) Verfahren und einrichtungen zum verbessern einer leistungsdatensammlung einer hochleistungsberechnungsanwendung
DE102018123669A1 (de) Host-Computer-Anordnung, Remote-Server-Anordnung, Speicherungssystem und Verfahren davon
US11475043B2 (en) Machine learning based application of changes in a target database system
DE102014108049A1 (de) Intelligente Abfragehäufigkeit
US20160179891A1 (en) Methods and systems for load balancing databases in a cloud environment
US11909842B2 (en) System and method for providing database content on a client device
DE102020208245A1 (de) Datenspeicherungsvorrichtung und Datenspeicherungsprogramm
DE102022129468A1 (de) Implementierung von objektversionierung und -konsistenz bei skalierung
DE112017001757T5 (de) Verfahren und vorrichtung zum koordinieren und authentifizieren von anfragen nach daten
DE112018004138T5 (de) Asynchrone aktualisierung von metadatenspuren in reaktion auf einen mittels einer e/a-operation über eine busschnittstelle erzeugten cachetreffer
DE102018121994A1 (de) Vorrichtung und verfahren zum zugreifen auf einen in-band-speicher, das datenschutz verwendet
DE102021127072A1 (de) Verwaltete nand-flash-speicherregionssteuerung gegen endurance-hacking
DE102013201973A1 (de) Verteilte Anwendung mit Vorwegnahme von Server-Antworten
DE102022111132A1 (de) Workload-Profildaten und leistungsbasierte Speicherverwaltung
WO2019095669A1 (zh) 薪资计算的数据处理方法、应用服务器及计算机可读存储介质
US11164349B2 (en) Visualizing a time series relation

Legal Events

Date Code Title Description
R012 Request for examination validly filed