DE102022111132A1 - Workload-Profildaten und leistungsbasierte Speicherverwaltung - Google Patents

Workload-Profildaten und leistungsbasierte Speicherverwaltung Download PDF

Info

Publication number
DE102022111132A1
DE102022111132A1 DE102022111132.6A DE102022111132A DE102022111132A1 DE 102022111132 A1 DE102022111132 A1 DE 102022111132A1 DE 102022111132 A DE102022111132 A DE 102022111132A DE 102022111132 A1 DE102022111132 A1 DE 102022111132A1
Authority
DE
Germany
Prior art keywords
storage device
profile data
commands
data
configuration setting
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
DE102022111132.6A
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 DE102022111132A1 publication Critical patent/DE102022111132A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation 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
    • 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]

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)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (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 Sammeln von Profildaten durch eine Speichervorrichtung, wobei die Profildaten Lese- und Schreibbefehlen und entsprechenden Adressinformationen zugeordnet sind, die von einer Hostvorrichtung an die Speichervorrichtung ausgegeben werden; das Speichern der Profildaten durch die Speichervorrichtung in einem Teil eines Speicherarrays, das durch die Speichervorrichtung verwaltet wird; das Empfangen einer auf der Grundlage der Profildaten erzeugten Aktualisierung durch die Speichervorrichtung, wobei die Aktualisierung eine Konfigurationseinstellung der Speichervorrichtung anpasst; und das Verarbeiten eines empfangenen Befehls basierend auf der Konfigurationseinstellung durch die Speichervorrichtung.

Description

  • TECHNISCHES GEBIET
  • Mindestens einige hierin offenbarte Ausführungsformen beziehen sich auf Speichervorrichtungen im Allgemeinen und insbesondere, aber nicht darauf beschränkt, auf die Fernverwaltung von Speichervorrichtungsoperationen 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.
    • 2 ist eine beispielhafte Protokolldatei gemäß einigen Ausführungsformen der Offenbarung.
    • 3 ist ein Graph eines beispielhaften Datenpunkts, der durch einen Satz von Speichervorrichtungen gemäß einigen Ausführungsformen der Offenbarung aufgezeichnet wird.
    • 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 Erzeugen und Aufrechterhalten eines Profils einer Speichervorrichtung 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
  • 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 veranschaulicht, beinhaltet die lokale Rechenvorrichtung (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 (field-programmable gate array - FPGA) oder eine andere Art von Vorrichtung zum Durchführen von Berechnungen basierend auf Daten, die in der Speichervorrichtung (104) gespeichert sind, umfassen. Der Host-Prozessor (106) kann beliebige Berechnungen und Berechnungen basierend auf Programmen und Daten durchführen, die in der Speichervorrichtung (104) gespeichert sind. Die durch den 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 (non-volatile memory - 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) beinhaltet 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 durch die 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 Chip-Temperatur 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 beinhaltet 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 durch die 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 beinhaltet 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.
  • 2 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. Beispielsweise bezieht sich „EMPFANGE LESEN“ auf den Empfang eines Lesebefehls von einem Host-Prozessor, während sich „FÜHRE LESEN AUS“ auf die Zeit bezieht, zu der der Lesebefehl ausgeführt wird. In der veranschaulichten Ausführungsform wird ein „Daten“-Feld verwendet, um Informationen bereitzustellen, die für den Typ von Feld spezifisch sind. Somit wird für Lese- und Schreibbefehle die Speicheradresse (z. B. M1, M2 usw.) im Datenfeld gespeichert. Wenn der Typ dagegen Temperatur („TEMP“) ist, speichert das Datenfeld die Temperatur in Celsius. Ebenso wird für Ereignisse („EREIGNIS“) die Art des Ereignisses (z. B. „EINSCHALTEN“) im Datenfeld gespeichert. Schließlich können Fehler („FEHLER“) beschreibende oder kategorische Daten bezüglich der Fehler liefern (z. B. „LADE LBA-PBA“), die einen Fehler anzeigen, der beim Versuch, die LBA-PBA-Tabelle aus dem nichtflüchtigen Speicher zu lesen, aufgetreten ist.
  • Alternativ zurückkehrend zu 1 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 Profil speichers (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 Rechenvorrichtung (120) durch einen 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 Rechenvorrichtung (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.
  • 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, der 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. 3 liefert ein Beispiel für einen solchen Graphen. In dem dargestellten Graphen von 3 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 weisen die Speichervorrichtungen, wie dargestellt, beim Start (t = 0) durchschnittlich etwa 60 Lese-/Schreibfehler auf. Die Anzahl der Fehler nimmt bis t = 100 allmählich ab, wo die Anzahl der Fehler 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 Lese-/Schreibfehler so weit wie möglich verringert werden sollten. Angesichts der gemittelten Daten kann der Bediener bestimmen, dass eine Speichervorrichtung Lese-/Schreiboperationen für 75 Sekunden blockieren sollte, wenn die Fehlerrate auf einem akzeptablen Niveau liegt. 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 beinhalten. 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 gesetzt werden und die entfernte Computervorrichtung (120) kann automatisch den Betrieb der Speichervorrichtung (104) basierend auf diesen Zielen anpassen. Beispielsweise kann das vorherige Beispiel eine Zielfehlerquote von unter 25 darstellen. Die entfernte Computervorrichtung (120) kann die in 3 dargestellten Daten kontinuierlich überwachen und automatisch den Befehl zum Puffern von Operationen basierend auf dem Ziel 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 Fehlerrate erstellen, um zu bestimmen, bei welchem Alter die Anzahl von Fehlern bei kalten oder heißen Temperaturen beginnt, die Leistung zu beeinträchtigen. 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.
  • 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. Beispiele für die Protokollierung einer Empfangszeit sind in 2 bereitgestellt, insbesondere die Einträge zu den Zeiten 1, 2, 3, 8, 9, 10 und 104.
  • 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 Controllerlogik 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. Beispiele für die Protokollierung einer Empfangszeit sind in 2 bereitgestellt, insbesondere die Einträge zu den Zeiten 6, 7 und 11.
  • 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. Beispiele für das Protokollieren eines Fehlers sind in 2 und insbesondere in den Einträgen zu den Zeiten 4, 102, 105 und 106 bereitgestellt. Wie dargestellt, zeigt der Fehler zum Zeitpunkt 2 von 2 einen Fehler während einer Leseoperation. Somit können die Fehler zu den Zeiten 2 und 105 während einer Detektion bei Block 410 empfangen worden sein. In der veranschaulichten Ausführungsform identifiziert das Verfahren die entsprechenden Befehle („LESE M1“) und protokolliert, dass die Fehler aufgetreten sind. In einer Ausführungsform kann der Eintrag zu den Zeitpunkten 2 und 105 weitere Einzelheiten bezüglich des Fehlers enthalten (nicht dargestellt). In ähnlicher Weise umfassen die zu den Zeitpunkten 102 und 106 auftretenden Fehler Fehler während des Lesens der Flash-Übersetzungsschicht und sind daher keinem Befehl zugeordnet.
  • 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 durch einen Controller einer Speichervorrichtung gemeldet werden. Wie in 2 dargestellt, beinhalten zu den Zeitpunkten 12 und 100 Beispiele für solche Ereignisse Vorrichtungsereignisse, wie z. B. Einschalt- und Ausschaltereignisse. Andere Beispiele für Ereignisse beinhalten Vorrichtungsinformationsereignisse, Verwaltungsoperationen, periodische Kapazitätsmessungen und ähnliche Arten von Informationsereignissen.
  • 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. Zurückkehrend zu 2 wird der Empfang des Lesens der Stelle M1 dreimal durchgeführt und kann als „EMPFANGE LESEN M1: 1, 10, 104“ gruppiert werden, was anzeigt, dass dieselbe Operation zu den Zeitpunkten 1, 10 und 104 durchgeführt wurde.
  • 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 erörtert 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 durch die 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 Rechenvorrichtung 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 erörtert wurde, 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. Beispielsweise können die in Block 510 erörterten Daten „EMPFANGE LESEN M1: 1, 10, 104“ erweitert werden, um mit den in 2 dargestellten Originaldaten übereinzustimmen. 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 2 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 durch den 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 Speichervorrichtungscontrollers beinhaltet. 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 Rechenvorrichtung ü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, beinhaltet ein Computersystem (800) einen Host-Prozessor (802), der über einen Bus (818) kommunikativ mit einem Speichersystem (804) 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) beinhaltet 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, welche 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 (816) eine physisch verdrahtete (z. B. getracete) Schnittstelle. In anderen Ausführungsformen umfasst die Schnittstelle (816) 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 für das 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(light-emitting 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 eine oder mehrere Steuerungen 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 (20)

  1. Verfahren, umfassend: Sammeln, durch eine Speichervorrichtung, von Profildaten, den Lese- und Schreibbefehlen zugeordneten Profildaten und entsprechenden Adressinformationen, die von einer Host-Vorrichtung an die Speichervorrichtung ausgegeben werden; Speichern der Profildaten durch die Speichervorrichtung in einem Teil eines Speicherarrays, das von der Speichervorrichtung verwaltet wird; Aktualisieren einer Konfigurationseinstellung basierend auf den Profildaten durch die Speichervorrichtung; und Verarbeiten eines empfangenen Befehls durch die Speichervorrichtung basierend auf der Konfigurationseinstellung.
  2. Verfahren nach Anspruch 1, wobei das Aktualisieren der Konfigurationseinstellung das Erzeugen der Konfigurationseinstellung durch die Speichervorrichtung basierend auf den Profildaten umfasst.
  3. Verfahren nach Anspruch 2, wobei das Sammeln der Profildaten das Hinzufügen eines Zeitstempels zu den Befehlen umfasst, wenn die Befehle empfangen werden.
  4. Verfahren nach Anspruch 2 oder 3, wobei das Sammeln der Profildaten das Hinzufügen eines Zeitstempels zu den Befehlen umfasst, nachdem die Befehle von der Speichervorrichtung ausgeführt wurden.
  5. Verfahren nach einem der Ansprüche 1 bis 4, wobei das Sammeln der Profildaten ferner das Aufzeichnen einer Temperatur der Speichervorrichtung umfasst.
  6. Verfahren nach einem der Ansprüche 1 bis 5, ferner umfassend das Identifizieren des Teils des Speicherarrays durch Identifizieren eines unbenutzten Teils des Speicherarrays.
  7. Verfahren nach einem der Ansprüche 1 bis 6, das ferner das Übertragen der Profildaten durch die Speichervorrichtung an eine entfernte Computervorrichtung und das Empfangen der Konfigurationseinstellung von der entfernten Computervorrichtung durch die Speichervorrichtung umfasst.
  8. Nichtflüchtiges computerlesbares Speichermedium zum greifbaren Speichern von Computerprogrammanweisungen, die durch einen Computerprozessor einer Speichervorrichtung ausgeführt werden können, wobei die Computerprogrammanweisungen die folgenden Schritte definieren: Sammeln von Profildaten, den Lese- und Schreibbefehlen zugeordneten Profildaten und entsprechenden Adressinformationen, die von einer Host-Vorrichtung an die Speichervorrichtung ausgegeben werden; Speichern der Profildaten in einem Teil eines Speicherarrays, das von der Speichervorrichtung verwaltet wird; Aktualisieren einer Konfigurationseinstellung basierend auf den Profildaten; und Verarbeiten eines empfangenen Befehls basierend auf der Konfigurationseinstellung.
  9. Computerlesbares Speichermedium nach Anspruch 8, wobei das Aktualisieren der Konfigurationseinstellung das Erzeugen der Konfigurationseinstellung basierend auf den Profildaten umfasst.
  10. Computerlesbares Speichermedium nach Anspruch 9, wobei das Sammeln der Profildaten das Hinzufügen eines Zeitstempels zu den Befehlen umfasst, wenn die Befehle empfangen werden.
  11. Computerlesbares Speichermedium nach Anspruch 9 oder 10, wobei das Sammeln der Profildaten das Hinzufügen eines Zeitstempels zu den Befehlen umfasst, nachdem die Befehle von der Speichervorrichtung ausgeführt wurden.
  12. Computerlesbares Speichermedium nach einem der Ansprüche 8 bis 11, wobei das Sammeln der Profildaten ferner das Aufzeichnen einer Temperatur der Speichervorrichtung umfasst.
  13. Computerlesbares Speichermedium nach einem der Ansprüche 8 bis 12, wobei die Anweisungen ferner einen Schritt des Identifizierens des Abschnitts des Speicherarrays durch Identifizieren eines unbenutzten Abschnitts des Speicherarrays definieren.
  14. Computerlesbares Speichermedium nach einem der Ansprüche 8 bis 13, wobei die Anweisungen ferner Schritte des Übertragens der Profildaten an eine entfernte Rechenvorrichtung und des Empfangens der Konfigurationseinstellung von der entfernten Rechenvorrichtung definieren.
  15. Speichervorrichtung, umfassend: ein Speicherarray; und einen Prozessor, der konfiguriert ist: Profildaten zu sammeln, wobei die Profildaten Lese- und Schreibbefehlen und entsprechenden Adressinformationen zugeordnet sind, die von einer Host-Vorrichtung an die Speichervorrichtung ausgegeben werden; die Profildaten in einem Teil des Speicherarrays zu speichern; eine Konfigurationseinstellung basierend auf den Profildaten zu aktualisieren; und einen empfangenen Befehl basierend auf der Konfigurationseinstellung zu verarbeiten.
  16. Vorrichtung nach Anspruch 15, wobei das Aktualisieren der Konfigurationseinstellung das Erzeugen der Konfigurationseinstellung basierend auf den Profildaten umfasst.
  17. Vorrichtung nach Anspruch 16, wobei das Sammeln der Profildaten das Hinzufügen eines Zeitstempels zu den Befehlen umfasst, wenn die Befehle empfangen werden.
  18. Vorrichtung nach Anspruch 16 oder 17, wobei das Sammeln der Profildaten das Hinzufügen eines Zeitstempels zu den Befehlen umfasst, nachdem die Befehle von der Speichervorrichtung ausgeführt wurden.
  19. Vorrichtung nach einem der Ansprüche 15 bis 18, wobei das Sammeln der Profildaten ferner das Aufzeichnen einer Temperatur der Speichervorrichtung umfasst.
  20. Vorrichtung nach einem der Ansprüche 15 bis 19, wobei der Prozessor ferner dazu konfiguriert ist, die Profildaten an eine entfernte Computervorrichtung zu übertragen und die Konfigurationseinstellung von der entfernten Computervorrichtung zu empfangen.
DE102022111132.6A 2021-05-13 2022-05-05 Workload-Profildaten und leistungsbasierte Speicherverwaltung Pending DE102022111132A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/320,109 2021-05-13
US17/320,109 US20220365718A1 (en) 2021-05-13 2021-05-13 Workload profile data and performance-based memory management

Publications (1)

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

Family

ID=83806338

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022111132.6A Pending DE102022111132A1 (de) 2021-05-13 2022-05-05 Workload-Profildaten und leistungsbasierte Speicherverwaltung

Country Status (3)

Country Link
US (1) US20220365718A1 (de)
CN (1) CN115344450A (de)
DE (1) DE102022111132A1 (de)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8140746B2 (en) * 2007-12-14 2012-03-20 Spansion Llc Intelligent memory data management
US10216420B1 (en) * 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US10057761B1 (en) * 2017-05-31 2018-08-21 T-Mobile Usa, Inc. Capability- and user-based profile downloads for networked devices
US10997516B2 (en) * 2017-12-15 2021-05-04 Dell Products L.P. Systems and methods for predicting persistent memory device degradation based on operational parameters
US10732690B2 (en) * 2018-05-17 2020-08-04 Arm Ip Limited Systems and methods for monitoring state transitions
JP7326667B2 (ja) * 2018-07-31 2023-08-16 マーベル アジア ピーティーイー、リミテッド ストレージエッジにおけるメタデータ生成
US11487548B2 (en) * 2019-11-26 2022-11-01 Sandisk Technologies Llc Dynamic re-evaluation of parameters for non-volatile memory using microcontroller
US11768611B2 (en) * 2020-04-02 2023-09-26 Axiado Corporation Secure boot of a processing chip

Also Published As

Publication number Publication date
US20220365718A1 (en) 2022-11-17
CN115344450A (zh) 2022-11-15

Similar Documents

Publication Publication Date Title
DE102022111346A1 (de) Automatische betriebsmodusverwaltung für speicher unter verwendung von arbeitsbelastungs-profildaten
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
DE102018214013A1 (de) Automatische kontinuierliche Prüfpunktsetzung
US10514947B2 (en) Container management apparatus, container management method, and nonvolatile recording medium
US10133774B2 (en) Accelerating multiple query processing operations
DE102020132764A1 (de) Solid-state-drive mit externer softwareausführung zum bewirken von internen operationen des solid-state-drive
DE202012013405U1 (de) Cloud-zu Gerät-Nachrichtenübermittlung zur Anwendungsaktivierung und Meldung
US20160019119A1 (en) Prioritizing backup of files
DE102018123669A1 (de) Host-Computer-Anordnung, Remote-Server-Anordnung, Speicherungssystem und Verfahren davon
DE112017003294T5 (de) Technologien für ein skalierbares Senden und Empfangen von Paketen
DE112018007751T5 (de) Automatisierte Optimierung von Computer-Betriebssystemen
US20210021685A1 (en) System and method for providing database content on a client device
US20160179891A1 (en) Methods and systems for load balancing databases in a cloud environment
DE112017001757T5 (de) Verfahren und vorrichtung zum koordinieren und authentifizieren von anfragen nach daten
DE102018121994A1 (de) Vorrichtung und verfahren zum zugreifen auf einen in-band-speicher, das datenschutz verwendet
DE102022105848A1 (de) Reduzierung der schreibverstärkung in sensordatenaufzeichnern
DE202021102320U1 (de) System zum Implementieren einer Unterdatenbankreplikation
DE102022111132A1 (de) Workload-Profildaten und leistungsbasierte Speicherverwaltung
DE112017004849T5 (de) Modifizieren des Zugriffs auf einen Dienst auf der Basis von Konfigurationsdaten
DE112016004168T5 (de) Systeme und Verfahren zum Speichern und Auslesen von Inhalten
US20230251953A1 (en) Client-side telemetry data filter model
US11164349B2 (en) Visualizing a time series relation
DE112021006882T5 (de) Ähnlichkeitsdeduplizierung
DE102016214657A1 (de) Speichervorrichtung, die betrieben wird, um Datenverlust zu verhindern, wenn Kommunikation unterbrochen wird
DE102020104361A1 (de) Deep-learning-datenmanipulation für mehrvariablen-datenanbieter

Legal Events

Date Code Title Description
R012 Request for examination validly filed