DE112019005391T5 - Optimierte datenorganisation für neuronale netze - Google Patents

Optimierte datenorganisation für neuronale netze Download PDF

Info

Publication number
DE112019005391T5
DE112019005391T5 DE112019005391.4T DE112019005391T DE112019005391T5 DE 112019005391 T5 DE112019005391 T5 DE 112019005391T5 DE 112019005391 T DE112019005391 T DE 112019005391T DE 112019005391 T5 DE112019005391 T5 DE 112019005391T5
Authority
DE
Germany
Prior art keywords
memory
weights
data
subset
neural network
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
DE112019005391.4T
Other languages
English (en)
Inventor
Chao Sun
Yan Li
Dejan Vucinic
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.)
SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE112019005391T5 publication Critical patent/DE112019005391T5/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/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1476Error detection or correction of the data by redundancy in operation in neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

In einigen Implementierungen bezieht sich die vorliegende Offenbarung auf ein Verfahren. Das Verfahren schließt das Erhalten eines Satzes von Gewichtungen für ein neuronales Netz ein, das eine Vielzahl von Knoten und eine Vielzahl von Verbindungen zwischen der Vielzahl von Knoten umfasst. Das Verfahren schließt ferner das Identifizieren einer ersten Teilmenge von Gewichtungen und einer zweiten Teilmenge von Gewichtungen basierend auf dem Satz von Gewichtungen ein. Die erste Teilmenge von Gewichtungen umfasst die vom neuronalen Netz verwendeten Gewichtungen. Die zweite Teilmenge von Gewichtungen umfasst Gewichtungen, die ausgedünnt werden können. Das Verfahren schließt ferner das Speichern der ersten Teilmenge von Gewichtungen in einem ersten Abschnitt eines Speichers ein. Für den ersten Abschnitt des Speichers wird ein erster Fehlerkorrekturcode verwendet. Das Verfahren schließt ferner das Speichern der zweiten Teilmenge von Gewichtungen in einem zweiten Abschnitt des Speichers ein. Für den zweiten Abschnitt des Speichers wird ein zweiter Fehlerkorrekturcode verwendet. Der zweite Fehlerkorrekturcode ist schwächer als der erste Fehlerkorrekturcode.

Description

  • HINTERGRUND
  • Gebiet der Offenbarung
  • Diese Offenbarung bezieht sich auf Datenspeicherungs- oder Speichervorrichtungen. Insbesondere bezieht sich die Offenbarung auf das Zugreifen auf Daten im Zusammenhang mit künstlicher Intelligenz, wie Daten aus neuronalen Netzen, in Datenspeicherungs- oder Speichervorrichtungen.
  • Beschreibung des Stands der Technik
  • Datenspeicherungs- oder Speichervorrichtungen können verwendet werden, um Daten zu speichern, die von Rechenvorrichtungen verwendet werden. Daten, die einem neuronalen Netz (oder anderen Systemen künstlicher Intelligenz) zugeordnet sind oder sich auf dieses beziehen, können auf den Datenspeicherungs- oder Speichervorrichtungen gespeichert werden. Zum Beispiel können Eingangsdateien, Gewichtungen und/oder Ergebnisse (z. B. Ausgänge), die von neuronalen Netzen erzeugt werden, auf Datenspeicherungs- oder Speichervorrichtungen gespeichert werden.
  • KURZDARSTELLUNG
  • In einigen Implementierungen bezieht sich die vorliegende Offenbarung auf ein Verfahren. Das Verfahren schließt das selektive Speichern einer ersten Teilmenge von Gewichtungen für ein neuronales Netz in einem ersten Abschnitt eines Speichers ein, wobei das neuronale Netz eine Vielzahl von Knoten und eine Vielzahl von Verbindungen zwischen der Vielzahl von Knoten umfasst. Die erste Teilmenge von Gewichtungen umfasst die vom neuronalen Netz verwendeten Gewichtungen. Für den ersten Abschnitt des Speichers wird ein erster Fehlerkorrekturcode verwendet. Das Verfahren schließt ferner das selektive Speichern einer zweiten Teilmenge von Gewichtungen für das neuronale Netz in einem zweiten Abschnitt des Speichers ein. Die zweite Teilmenge von Gewichtungen umfasst Gewichtungen, die ausgedünnt werden können. Für den zweiten Abschnitt des Speichers wird ein zweiter Fehlerkorrekturcode verwendet. Der zweite Fehlerkorrekturcode ist schwächer als der erste Fehlerkorrekturcode.
  • In einigen Implementierungen bezieht sich die vorliegende Offenbarung auf eine Einrichtung. Die Einrichtung schließt einen Speicher ein, der eingerichtet ist, um Daten zu speichern. Die Einrichtung schließt zudem eine Steuerung ein, die mit dem Speicher gekoppelt ist. Die Steuerung ist eingerichtet, um selektiv eine erste Teilmenge von Gewichtungen für ein neuronales Netz in einem ersten Abschnitt des Speichers zu speichern, wobei das neuronale Netz eine Vielzahl von Knoten und eine Vielzahl von Verbindungen zwischen der Vielzahl von Knoten umfasst. Die erste Teilmenge von Gewichtungen umfasst die vom neuronalen Netz verwendeten Gewichtungen. Für den ersten Abschnitt des Speichers wird ein erster Fehlerkorrekturcode verwendet. Die Steuerung ist auch eingerichtet, um selektiv eine zweite Teilmenge von Gewichtungen für das neuronale Netz in einem zweiten Abschnitt des Speichers zu speichern. Die zweite Teilmenge von Gewichtungen umfasst Gewichtungen, die ausgedünnt werden können. Für den zweiten Abschnitt des Speichers wird ein zweiter Fehlerkorrekturcode verwendet. Der zweite Fehlerkorrekturcode ist schwächer als der erste Fehlerkorrekturcode.
  • In einigen Implementierungen weist ein nichtflüchtiges maschinenlesbares Medium ausführbare Anweisungen auf, um zu bewirken, dass eine oder mehrere Verarbeitungsvorrichtungen Operationen durchführen. Die Operationen schließen das selektive Speichern einer ersten Teilmenge von Gewichtungen für ein neuronales Netz in einem ersten Abschnitt eines Speichers ein, wobei das neuronale Netz eine Vielzahl von Knoten und eine Vielzahl von Verbindungen zwischen der Vielzahl von Knoten umfasst. Die erste Teilmenge von Gewichtungen umfasst die vom neuronalen Netz verwendeten Gewichtungen. Für den ersten Abschnitt des Speichers wird ein erster Fehlerkorrekturcode verwendet. Die Operationen schließen ferner das selektive Speichern einer zweiten Teilmenge von Gewichtungen für das neuronale Netz in einem zweiten Abschnitt des Speichers ein. Die zweite Teilmenge von Gewichtungen umfasst Gewichtungen, die ausgedünnt werden können. Für den zweiten Abschnitt des Speichers wird ein zweiter Fehlerkorrekturcode verwendet. Der zweite Fehlerkorrekturcode ist schwächer als der erste Fehlerkorrekturcode.
  • Die hierin offenbarten Beispiele, Implementierungen und/oder Ausführungsformen können sich auf Speicher beziehen. Der Speicher kann sowohl einen nichtflüchtigen Speicher (z. B. einen Flash-Speicher, SCM usw.) als auch einen flüchtigen Speicher (z.B. einen Direktzugriffsspeicher (RAM)) einschließen und/oder sich darauf beziehen. Zum Beispiel kann eine beliebige Anzahl von verschiedenen Typen und/oder eine beliebige Kombination aus flüchtigem Speicher und nichtflüchtigem Speichern in dem Datenspeicherungs- oder Speichersystem verwendet werden. Obwohl sich die vorliegende Offenbarung in verschiedenen Beispielen oder Ausführungsformen auf einen nichtflüchtigen Speicher beziehen kann, ist der nichtflüchtige Speicher lediglich ein Beispiel einer Art von Speicher, die verwendet werden kann. Andere Ausführungsformen können auf flüchtige Speicher anwendbar sein.
  • Figurenliste
    • 1 ist ein Diagramm, das ein beispielhaftes neuronales Netz gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
    • 2 ist ein Diagramm, das ein beispielhaftes neuronales Netz gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
    • 3A ist ein Diagramm, das ein beispielhaftes Datenspeicherungs- oder Speichersystem gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
    • 3B ist ein Diagramm, das einen beispielhaften nichtflüchtigen Speicher gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
    • 4 ist ein Diagramm, das einen beispielhaften nichtflüchtigen Speicher gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
    • 5 ist ein Diagramm, das ein beispielhaftes Bitarray gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
    • 6 ist ein Flussdiagramm, das ein Beispiel für einen Prozess zum Zugreifen auf Daten gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
    • 7 ist ein Flussdiagramm, das ein Beispiel eines Prozesses zum Zugreifen auf Daten gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
    • 8 ist ein Flussdiagramm, das ein Beispiel eines Prozesses zum Zugreifen auf Daten gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
    • 9 ist ein Blockdiagramm eines nichtflüchtigen Datenspeicherungs- oder Speichersystems gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung.
  • Zum besseren Verständnis wurden, soweit möglich, identische Bezugszeichen verwendet, um identische Elemente zu bezeichnen, die den Figuren gemein sind. Es wird in Betracht gezogen, dass die in einer Ausführungsform offenbarten Elemente ohne besondere Aufzählung vorteilhaft auf andere Ausführungsformen angewendet werden können.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Offenbarung wird auf Beispiele, Implementierungen und/oder Ausführungsformen der Offenbarung verwiesen. Es sollte jedoch verstanden werden, dass die Offenbarung nicht auf bestimmte beschriebene Beispiele, Implementierungen und/oder Ausführungsformen beschränkt ist. Jede Kombination der hierin offenbarten Merkmale, Funktionen, Operationen, Komponenten, Module usw., unabhängig davon, ob sie sich auf verschiedene Ausführungsformen beziehen oder nicht, kann zum Implementieren und Durchführen der Offenbarung verwendet werden. Auch wenn des Weiteren Ausführungsformen der Offenbarung Vorteile und/oder Mehrwert gegenüber anderen möglichen Lösungen bereitstellen können, ist es nicht einschränkend für die Offenbarung, ob ein bestimmter Vorteil und/oder Mehrwert durch eine bestimmte Ausführungsform erreicht wird oder nicht. Die folgenden Gesichtspunkte, Merkmale, Ausführungsformen und Vorteile sind daher nur veranschaulichend und gelten nicht als Elemente oder Einschränkungen der beiliegenden Ansprüche, es sei denn, sie werden ausdrücklich in einem oder mehreren Ansprüchen angegeben. Ebenso darf die Bezugnahme auf „die Offenbarung“ nicht als Verallgemeinerung eines hierin offenbarten erfinderischen Gegenstands ausgelegt werden und gilt nicht als Element oder Einschränkung der beigefügten Ansprüche, es sei denn, sie wird ausdrücklich in den Ansprüchen erwähnt.
  • Die hierin bereitgestellten Überschriften dienen nur der Übersichtlichkeit und beeinträchtigen nicht unbedingt den Umfang oder die Bedeutung der beanspruchten Erfindung. Hierin offenbart sind beispielhafte Implementierungen, Konfigurationen und/oder Ausführungsformen, die sich auf das Zugreifen auf im Zusammenhang mit künstlicher Intelligenz stehenden Daten, die in Datenspeicherungs- oder Speichervorrichtungen gespeichert sind, beziehen.
  • Datenspeicherungs- oder Speichervorrichtungen, wie Festkörperlaufwerke (SSDs), Festplattenlaufwerke (HDDs), Hybridlaufwerke (z. B. Speicherlaufwerke/-vorrichtungen, die sowohl magnetische Medien/Datenträger als auch Flash-Speicher einschließen) usw., schließen in der Regel eine oder mehrere Steuerungen ein, die mit einem oder mehreren nichtflüchtigen Speicherarrays (NVM-Arrays) gekoppelt sind. Die Datenspeicherungs- oder Speichervorrichtungen können verschiedene unterschiedliche Arten von Daten speichern. Zum Beispiel können die Datenspeicherungs- oder Speichervorrichtungen Daten speichern, die von einem neuronalen Netz oder anderen Maschinenlernsystemen analysiert und/oder verarbeitet werden können.
  • Eine Datenspeicherungs- oder Speichervorrichtung kann alle Daten in der Datenspeicherungs- oder Speichervorrichtung auf herkömmliche oder standardmäßige Weise speichern. Zum Beispiel kann die Datenspeicherungs- oder Speichervorrichtung denselben ECC verwenden, um Gewichtungsdaten für ein neuronales Netz, Eingangsdaten, Ergebnisdaten und Metadaten für die Dateien, die auf der Datenspeicherungs- oder Speichervorrichtung gespeichert sind, zu speichern. Oder die Datenspeicherungs- oder Speichervorrichtung kann eine Art von Speicher einschließen oder verwenden, um alle Daten in der Datenspeicherungs- oder Speichervorrichtung zu speichern. Verschiedene Arten von Daten können jedoch wichtiger sein als andere und sollten daher unterschiedlich geschützt werden. Außerdem werden verschiedene Arten von Daten möglicherweise häufiger geändert und/oder es wird häufiger darauf zugegriffen. Daher kann es sinnvoll sein, die Zeit für den Zugriff auf die häufig aufgerufenen oder geänderten Daten zu verkürzen.
  • 1 ist ein Diagramm, das ein beispielhaftes neuronales Netz 100 gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung veranschaulicht. Das neuronale Netz 100 kann verwendet werden, um Beziehungen zwischen (z. B. komplexen) Eingängen und Ausgängen zu modellieren oder um Muster in Daten zu finden, bei denen die Abhängigkeit zwischen den Eingängen und den Ausgängen nicht ohne weiteres feststellbar ist. Das neuronale Netz 100 kann ferner ein Rechenmodell sein, das verwendet werden kann, um ein Merkmal in Eingangsdaten durch verschiedene Berechnungen zu bestimmen. Zum Beispiel kann das neuronale Netz 100 ein Merkmal (z. B. eine Anzahl, Form, Muster usw.) in Eingangsdaten (z. B. Audiodaten, Bilddaten, Videodaten usw.) gemäß einer Struktur bestimmen, die eine Sequenz von durchzuführenden Berechnungen definiert.
  • Das neuronale Netz 100 kann ein CNN sein. Ein CNN kann ein vorwärtsgekoppeltes neuronales Netz sein. Ein vorwärtsgekoppeltes neuronales Netz kann eine Art eines neuronalen Netzes sein, bei dem die Verbindungen zwischen den Knoten keinen Zyklus bilden. Beispielsweise fließen die Signale, Meldungen, Daten, Informationen usw. von der Eingangsschicht 110 (z. B. von den Eingangsknoten) durch die verborgene Schicht 120 zur Ausgangsschicht 130 (z. B. zu den Ausgangsknoten) des neuronalen Netzes 100 von links nach rechts weiter. Die Signale, Meldungen, Daten, Informationen usw. dürfen das neuronale Netz nicht rückwärts durchlaufen (z. B. dürfen sie es nicht von rechts nach links durchlaufen). Zur Bildanalyse kann ein CNN verwendet werden. Die Gewichtungen der Verbindungen können die Form eines Faltungsfilters annehmen, der auf verschiedene Pixel eines Bildes angewendet werden kann. Obwohl sich die vorliegende Offenbarung auf eine Bildanalyse für CNNs beziehen kann, kann das CNN in anderen Ausführungsformen für andere Arten von Daten und Eingängen verwendet werden.
  • Das neuronale Netz 100 schließt eine Eingangsschicht 110, eine verborgene Schicht 120 und eine Ausgangsschicht 130 ein. Jede der Eingangsschicht 110, der verborgenen Schicht 120 und der Ausgangsschicht 130 schließt einen oder mehrere Knoten 105 ein. Jede der Eingangsschicht 110, der verborgenen Schicht 120 und der Ausgangsschicht 130 kann eine unterschiedliche Anzahl von Knoten 105 aufweisen. Das neuronale Netz 100 kann ein tiefes neuronales Netz oder ein tiefes CNN sein. Ein neuronales Netz kann tief sein, wenn die verborgene Schicht 120 mehrere Ebenen einschließt (z. B. mehrere Spalten von Knoten 105, mehrere Unterschichten von Knoten 105). Wie in 1 veranschaulicht, schließt das neuronale Netz 100 zwei Ebenen (oder Unterschichten) von Knoten 105 (z. B. zwei Spalten von Knoten 105) ein.
  • Jeder der Knoten 105 in einer Schicht ist entweder mit einem Knoten 105 in der nächsten Ebene (z. B. der nächsten Unterschicht) oder einem Knoten 105 in einer anderen Schicht verbunden, wie durch die Pfeile/Linien zwischen den Knoten 105 dargestellt. Beispielsweise sind die Knoten 105 der Eingangsschicht jeweils mit mindestens einem Knoten 105 der verborgenen Schicht 120 gekoppelt. Das neuronale Netz 100 kann ein vollständig verbundenes neuronales Netz sein. Zum Beispiel ist jeder Knoten 105 in jeder Schicht oder Ebene ein Verbindungsglied zu jedem Knoten in der nachfolgenden Schicht oder Ebene, wenn es eine nachfolgende Schicht oder Ebene gibt (z. B. sind die Knoten 105 in der Ausgangsschicht 130 nicht mit anderen Knoten verbunden).
  • Jede Verbindung kann einer Gewichtung oder einem Gewichtungswert zugeordnet sein (kann z. B. eine Gewichtung aufweisen). Eine Gewichtung oder ein Gewichtungswert kann Koeffizienten definieren, die auf die Berechnungen angewendet werden. Zum Beispiel können die Gewichtungen oder Gewichtungswerte Skalierungsfaktoren zwischen zwei oder mehr Knoten 105 sein. Jeder Knoten 105 kann eine Summierung seiner Eingänge darstellen, und die Gewichtung oder der Gewichtungswert, die bzw. der einer Verbindung zugeordnet ist, kann einen Koeffizienten oder einen Skalierungsfaktor darstellen, der mit einem Ausgang eines Knotens 105 in dieser Verbindung multipliziert wird. Die Gewichtungen zwischen den Knoten 105 können während eines Trainingsprozesses für das neuronale Netz bestimmt, berechnet, erzeugt, zugewiesen, erlernt usw. werden. Zum Beispiel kann Rückwärtspropagierung verwendet werden, um die Gewichtungen so einzustellen, dass das neuronale Netz 100 erwartete Ausgabewerte erzeugt, wenn entsprechende Werte in markierten Trainingsdaten vorliegen. Daher können die Gewichtungen der verborgenen Schichten als eine Codierung aussagekräftiger Muster in den Daten betrachtet werden. Die Gewichtungen der Verbindungen zwischen den Knoten 105 können durch zusätzliches Training modifiziert werden.
  • Obwohl das neuronale Netz 100 mit einer bestimmten Anzahl von Knoten 105, Schichten und Verbindungen dargestellt ist, können in anderen Ausführungsformen verschiedene Architekturen/Konfiguration neuronaler Netze verwendet werden. Zum Beispiel können verschiedene vollständig verbundene neuronale Netze und teilweise verbundene neuronale Netze (wobei z. B. alle Knoten in benachbarten Schichten nicht verbunden sind) verwendet werden.
  • 2 ist ein Diagramm, das ein beispielhaftes neuronales Netz 200 gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung veranschaulicht. Das neuronale Netz 200 kann verwendet werden, um Beziehungen zwischen Eingängen und Ausgängen zu modellieren oder Muster in Daten zu finden, bei denen die Abhängigkeit zwischen den Eingängen und den Ausgängen nicht ohne weiteres feststellbar ist. Das neuronale Netz 200 kann ferner ein Rechenmodell sein, das verwendet werden kann, um ein Merkmal in Eingangsdaten durch verschiedene Berechnungen zu bestimmen.
  • In einer anderen Ausführungsform kann das neuronale Netz 200 ein RNN sein. Ein RNN kann ein neuronales Netz sein, bei dem die Verbindungen zwischen Knoten einen gerichteten Graph bilden können. Ein RNN kann eine Art eines neuronalen Netzes sein, bei dem die Verbindungen zwischen den Knoten einen Zyklus bilden und/oder in einer Rückwärtsrichtung gehen können. Zum Beispiel können die Signale, Meldungen, Daten, Informationen usw. sowohl vorwärts (z. B. von links nach rechts) als auch rückwärts (z. B. von rechts nach links) zwischen den Knoten 205 des neuronalen Netzes fließen. Das RNN kann Speichereinheiten, wie Long-Short-Term-Memory-Einheiten (LSTM-Einheiten), verwenden. Die LSTM-Einheiten können es dem RNN ermöglichen, im Laufe der Zeit Fehler durch die Schichten (z. B. rückwärts durch die Schichten oder Unterschichten) rückzupropagieren. Dies kann es einem RNN ermöglichen, ein zeitdynamisches Verhalten aufzuweisen. Obwohl sich die vorliegende Offenbarung auf eine Sequenzanalyse und/oder -vorhersage für RNNs beziehen kann, kann das RNN in anderen Ausführungsformen auch für andere Arten von Daten und Eingängen verwendet werden.
  • Das neuronale Netz 200 schließt eine Eingangsschicht 210, eine verborgene Schicht 220 und eine Ausgangsschicht 230 ein. Jede der Eingangsschicht 210, der verborgenen Schicht 220 und der Ausgangsschicht 230 schließt einen oder mehrere Knoten 205 ein. Jede der Eingangsschicht 210, der verborgenen Schicht 220 und der Ausgangsschicht 230 kann eine unterschiedliche Anzahl von Knoten 205 aufweisen. Das neuronale Netz 200 kann ein tiefes neuronales Netz oder ein tiefes RNN sein. Ein neuronales Netz kann tief sein, wenn die verborgene Schicht 220 mehrere Ebenen einschließt (z. B. mehrere Spalten von Knoten 205, mehrere Unterschichten von Knoten 205). Wie in 2 veranschaulicht, schließt das neuronale Netz 200 zwei Ebenen (oder Unterschichten) von Knoten 205 (z. B. zwei Spalten von Knoten 205) ein. Ein RNN kann zur Sequenzanalyse und/oder -vorhersage verwendet werden. Zum Beispiel kann das RNN Muster in Sequenzen von Daten, wie Handschrift, Text, numerische Zeitreihendaten usw., erkennen.
  • Jeder der Knoten 205 in einer Schicht ist mit mindestens einem anderen Knoten verbunden, wie durch die Pfeile/Linien zwischen den Knoten 205 dargestellt. Jede Verbindung kann einer Gewichtung oder einem Gewichtungswert zugeordnet sein (kann z. B. eine Gewichtung aufweisen). Eine Gewichtung oder ein Gewichtungswert kann Koeffizienten definieren, die auf die Berechnungen angewendet werden. Jeder Knoten 205 kann eine Summierung seiner Eingänge darstellen, und die Gewichtung oder der Gewichtungswert, die bzw. der einer Verbindung zugeordnet ist, kann einen Koeffizienten oder einen Skalierungsfaktor darstellen, der mit einem Ausgang eines Knotens 205 in dieser Verbindung multipliziert wird. Die Gewichtungen zwischen den Knoten 205 können während eines Trainingsprozesses für das neuronale Netz bestimmt, berechnet, erzeugt, zugewiesen, erlernt usw. werden. Daher können die Gewichtungen der verborgenen Schichten als eine Codierung aussagekräftiger Muster in den Daten betrachtet werden. Die Gewichtungen der Verbindungen zwischen den Knoten 205 können durch zusätzliches Training modifiziert werden.
  • Obwohl das neuronale Netz 200 mit einer bestimmten Anzahl von Knoten 205, Schichten und Verbindungen dargestellt ist, können in anderen Ausführungsformen verschiedene Architekturen/Konfiguration neuronaler Netze verwendet werden. Zum Beispiel können verschiedene vollständig verbundene neuronale Netze und teilweise verbundene neuronale Netze (wobei z. B. alle Knoten in benachbarten Schichten nicht verbunden sind) verwendet werden.
  • 3A ist ein Diagramm, das ein beispielhaftes Datenspeicherungs- oder Speichersystem 300 gemäß einigen Ausführungsformen der vorliegenden Offenbarung veranschaulicht. Das Datenspeicherungs- oder Speichersystem 300 schließt eine Rechenvorrichtung 310 und eine Datenspeicherungs- oder Speichervorrichtung 320 ein. Die Rechenvorrichtung 310 kann auch als ein Hostsystem bezeichnet werden. In einer Ausführungsform kann die Datenspeicherungs- oder Speichervorrichtung 320 Teil der Rechenvorrichtung 310 sein (z. B. kann sie sich innerhalb eines Gehäuses, Gestells, einer Hülle usw. der Rechenvorrichtung 310 befinden). In einem weiteren Beispiel kann die Datenspeicherungs- oder Speichervorrichtung 320 von der Rechenvorrichtung 310 getrennt sein (z. B. kann es sich um eine externe Vorrichtung handeln, die über ein Kabel mit der Rechenvorrichtung 310 gekoppelt ist, wie beispielsweise ein Universal Serial Bus-Kabel (USB-Kabel)).
  • Jede Datenspeicherungs- oder Speichervorrichtung 320 kann eine Planung und/oder Ausführung von Zugriffsbefehlen gemäß den hierin offenbarten Ausführungsformen, Beispielen und/oder Implementierungen aufnehmen. Jede Datenspeicherungs- oder Speichervorrichtung 320 kann jede Art von Datenspeicherungs- oder Speichervorrichtung, Laufwerk, Modul, Komponente, System oder dergleichen sein. Des Weiteren können die Begriffe „Laufwerk“ und „Datenspeicherungslaufwerk“ hierin in bestimmten Kontexten verwendet werden, um auf jede Art von Datenspeicherungs- oder Speichervorrichtung Bezug zu nehmen, und können hierin in Verbindung mit verschiedenen Ausführungsformen und/oder in verschiedenen Kontexten im Wesentlichen austauschbar mit dem Begriff „Datenspeicherungs- oder Speichervorrichtung“ verwendet werden. Wie gezeigt, schließt jede Datenspeicherungs- oder Speichervorrichtung 320 (z. B. Hybridlaufwerke, Festkörperlaufwerke, jede Speichervorrichtung, die Festkörperspeicher verwendet, ein Festplattenlaufwerk, jede Speichervorrichtung, die magnetische Medien/Datenträger verwendet, usw.) eine Steuerung 330 (z. B. Steuerschaltungen, Software, Firmware oder eine Kombination davon) und einen nichtflüchtigen Speicher 340 ein.
  • Der nichtflüchtige Speicher (NVM) 340 kann für die Langzeitspeicherung von Daten eingerichtet sein und kann Daten zwischen den Ein- und Ausschaltzyklen der Datenspeicherungs- oder Speichervorrichtung 320 beibehalten. Der nichtflüchtige Speicher 340 und/oder Teile des nichtflüchtigen Speichers 340 können auch als ein Speicherungsmedium bezeichnet werden. In einigen Ausführungsformen kann der nichtflüchtige Speicher 340 einen Festkörperspeicher einschließen. Festkörperspeicher können eine Vielzahl von Technologien aufweisen, wie beispielsweise integrierte Flash-Schaltungen, Phasenwechselspeicher (PC-RAM, PCM oder PRAM), programmierbaren Metallisierungszellen-RAM (PMC-RAM oder PMCm), Ovonic Unified Memory (OUM), Resistive Random Access Memory (Resistance RAM, RRAM), NAND-Speicher (z. B. Single-Level-Cell-Speicher (SLC-Speicher)), Multi-Level-Cell-Speicher (MLC-Speicher), Triple-Level-Cell-Speicher (TLC-Speicher), X4- oder Quad-Level-Cell-Speicher (QLC-Speicher usw.), dreidimensionale NAND-Speicher (3D-NAND-Speicher), NOR-Speicher, EEPROM, ferroelektrischen Speicher (FeRAM), magnetoresistiven RAM (MRAM) oder andere separate Festkörperspeicherchips. In weiteren Ausführungsformen kann der nichtflüchtige Speicher 340 magnetische Medien (einschließlich Schindelmagnetaufzeichnung), optische Scheiben, Disketten, elektronisch programmierbare Festwertspeicher (EPROM), elektronisch löschbare programmierbare Festwertspeicher (EEPROM) usw. einschließen. Nichtflüchtige Speicher, die magnetische Medien/Datenträger verwenden, können eine oder mehrere Magnetplatten einschließen. Jede Platte kann einen oder mehrere Bereiche einer oder mehrerer Datenspuren enthalten. Der nichtflüchtige Speicher 340 kann eine beliebige Kombination aus einem oder mehreren der hier beschriebenen Speichertypen einschließen. Der nichtflüchtige Speicher 340 kann logisch und/oder physisch in Arrays, Ebenen, Blöcke, Seiten, Spuren und Sektoren unterteilt werden. Obwohl nichtflüchtige Speicher in dieser Offenbarung als Anschauungs- und Lehrbeispiele verwendet werden, wird der Fachmann erkennen, dass verschiedene Ausführungsformen auch auf flüchtige Speicher anwendbar sind (z. B. dynamische Direktzugriffsspeicher (DRAM)), da auch in diesen Speichern Fehlerkorrekturcodes zum Schutz der Daten verwendet werden.
  • Die Steuerung 330 kann einen oder mehrere Prozessoren, Speichervorrichtungen, Daten- und/oder Energieübertragungskanäle/-wege, Leiterplatten oder dergleichen einschließen. In einigen Ausführungsformen kann die Steuerung 330 als ein oder mehrere System-on-a-Chip-Module (SoC-Module), Field Programmable Gate Array-Module (FPGA-Module), anwendungsspezifische integrierte Schaltungsmodule (ASIC-Module), Verarbeitungsvorrichtungen (z. B. Prozessoren), Chips oder dergleichen implementiert werden. In weiteren Ausführungsformen können eine oder mehrere Komponenten der Steuerung 330 auf einer Leiterplatte (PCB) angebracht sein. Die Steuerung 330 kann eingerichtet sein, um Datenbefehle von einer Speicherschnittstelle (z. B. einem Gerätetreiber) zu empfangen, die sich auf der Rechenvorrichtung 310 befindet.
  • Die Steuerung 330 kann mit der Rechenvorrichtung 310 über eine Host-Schnittstelle 360 kommunizieren und Befehle über die Host-Schnittstelle 360 empfangen. Diese Befehle können als Datenbefehle, Datenzugriffsbefehle, Datenspeicherzugriffsbefehle, usw. bezeichnet werden. Datenbefehle können eine Blockadresse in der Datenspeicherungs- oder Speichervorrichtung 320 angeben. Basierend auf diesen Datenbefehlen kann auf Daten zugegriffen/können Daten übertragen werden. So kann beispielsweise die Steuerung 330 Datenbefehle (von der Rechenvorrichtung 310) empfangen und derartige Befehle auf/in dem nichtflüchtigen Speicher 340 ausführen (z. B. in einem oder mehreren Arrays, Seiten, Blöcken, Sektoren, usw.). Die von der Rechenvorrichtung 310 empfangenen Datenbefehle können Datenlesebefehle, Datenschreibbefehle und Datenlöschbefehle einschließen. Die Steuerung 330 kann über eine NVM-Schnittstelle 350 mit dem nichtflüchtigen Speicher (NVM) 340 gekoppelt werden. In einer Ausführungsform kann die NVM-Schnittstelle 350 eine Vielzahl von Kanälen einschließen (z. B. eine oder mehrere Leitungen, Pins, Kabel, Leiterbahnen, usw.) und jeder Kanal kann mit verschiedenen Abschnitten des nichtflüchtigen Speichers 340 gekoppelt sein (z. B. verschiedene NVM-Arrays, verschiedene Flash-Arrays, usw.).
  • Die Steuerung 330 kann die empfangenen Datenbefehle zum Lesen, Schreiben und Löschen von Daten aus dem nichtflüchtigen Speicher 340 über die NVM-Schnittstelle 350 ausführen. So können die Befehle beispielsweise einen Lesebefehl (z. B. einen Datenlesebefehl) einschließen, um einen Datenblock aus dem nichtflüchtigen Speicher 340 zu lesen. Die Steuerung 330 kann die Daten von der Seite lesen und die Daten über die Host-Schnittstelle 360 an die Rechenvorrichtung 310 übertragen. In einem weiteren Beispiel können die Befehle einen Schreibbefehl (z. B. einen Datenschreibbefehl) einschließen, um Daten auf eine Seite in einem nichtflüchtigen Speicher 340 zu schreiben. In einer Ausführungsform können Schreibbefehle Programmbefehle (z. B. einen Befehl zum Schreiben des Wertes „1“ an eine Speicherstelle im nichtflüchtigen Speicher 340) und Löschbefehle (z. B. einen Befehl zum Schreiben des Wertes „0“ an eine Speicherstelle, eine Seite, einen Block usw. in dem nichtflüchtigen Speicher-Array) einschließen. Die Steuerung 330 kann die Daten von der Rechenvorrichtung 310 über die Host-Schnittstelle 360 empfangen und die Daten auf die Seite schreiben. Die Host-Schnittstelle 360 kann Hardware (z. B. Kabel, Pins, Leiterbahnen, Stecker usw.), Software (z. B. Treiber), Firmware oder eine Kombination davon einschließen, die es der Verarbeitungsvorrichtung 311 und/oder der Rechenvorrichtung 310 ermöglicht, Daten mit der Datenspeicherungs- und Speichervorrichtung 320 zu kommunizieren. Beispiele für eine Host-Schnittstelle können einen Peripheral Component Interconnect Express-Bus (PCIe-Bus), einen Serial AT Attachment-Bus (SATA-Bus), einen Non-Volatile Memory Express-Bus (NVMe-Bus) usw. einschließen.
  • Die Datenspeicherungs- und Speichervorrichtung 320 kann von der Rechenvorrichtung 310 empfangene Daten speichern, sodass die Datenspeicherungs- und Speichervorrichtung 320 als Datenspeicher für die Rechenvorrichtung 310 dient. Um diese Funktion zu unterstützen, kann die Steuerung 330 eine logische Schnittstelle implementieren. Die logische Schnittstelle kann dem Speicher der Rechenvorrichtung eine Reihe von logischen Adressen (z. B. sequentielle/zusammenhängende Adressen) zur Verfügung stellen, in denen Daten gespeichert werden können. Intern kann die Steuerung 330 logische Adressen auf verschiedene physische Speicheradressen in den nichtflüchtigen Speicher-Arrays und/oder einem anderen Speichermodul oder -modulen abbilden. Abbildungsdaten, welche die Abbildungen von logischen Adressen auf physische Speicheradressen angeben, können in der Datenspeicherungs- und Speichervorrichtung beibehalten werden. So können beispielsweise Abbildungstabellendaten im nichtflüchtigen Speicher 340 gespeichert werden, um eine Wiederherstellung der Abbildungstabellen nach einem Aus- und Wiedereinschalten zu ermöglichen.
  • Die Steuerung 330 kann Daten codieren, wenn die Daten auf dem nichtflüchtigen Speicher 340 gespeichert werden. Die Steuerung 330 kann die Daten codieren, um die Daten vor Fehlern, Verlust, Beschädigung usw. zu schützen. Die Steuerung 330 kann die Daten vor Fehlern, Verlust, Beschädigung usw. schützen, indem sie verschiedene Verfahren, Techniken, Funktionen, Operationen, Aktionen usw. verwendet. In einer Ausführungsform kann die Steuerung 330 die Daten schützen, indem sie Paritätsdaten (z. B. Paritätsbits) erzeugt. Die Paritätsdaten können es der Steuerung 330 ermöglichen, zu bestimmen, ob Fehler in den Daten vorliegen (z. B. Fehler durch Beschädigung, beschädigte Zellen, beschädigte Blöcke, Fehler beim Lesen der Daten usw.). Die Paritätsdaten (z. B. ein oder mehrere Paritätsbits) können mit verschiedenen Algorithmen, Techniken, Funktionen, Operationen usw. erzeugt werden. In einer weiteren Ausführungsform kann die Steuerung 330 einen ECC verwenden, um Codewörter zu erzeugen. Die Codewörter können es der Steuerung 330 (z. B. dem Decoder 132) außerdem ermöglichen, Fehler in den Codewörtern zu korrigieren oder zu beheben.
  • Die Steuerung 330 kann außerdem Daten decodieren, die im nichtflüchtigen Speicher 340 gespeichert sind. In einer Ausführungsform kann der Decoder 132 Codewörter decodieren, welche die Daten codieren, die im nichtflüchtigen Speicher 340 gespeichert sind. In einer weiteren Ausführungsform kann der Decoder 132 eine Fehlererkennung durchführen, um die Integrität der aus dem nichtflüchtigen Speicher 340 abgerufenen Daten zu bestimmen (z. B. um zu bestimmen, ob die Daten Fehler aufweisen). Beispielsweise kann der Decoder 132 zum Prüfen der Daten Paritätsdaten verwenden, um zu bestimmen, ob ein Fehler in den Daten vorliegt (z. B. ob ein oder mehrere Bits in den Daten aufgrund von Beschädigung, beschädigten Zellen, beschädigten Blöcken usw. fehlerhaft sind).
  • Wie in 1 veranschaulicht, schließt die Rechenvorrichtung 310 ein neuronales Netz 313 ein, führt es aus oder implementiert es anderweitig. In einer Ausführungsform kann die Verarbeitungsvorrichtung 311 das neuronale Netz 313 ausführen oder laufen lassen. Zum Beispiel kann die Verarbeitungsvorrichtung 311 das neuronale Netz 313 aufbauen und dem neuronalen Netz 313 Eingangsdaten bereitstellen. Das neuronale Netz 313 kann für Aufgaben des maschinellen Lernens verwendet werden. In einigen Ausführungsformen kann das neuronale Netz 313 eine Sammlung von verbundenen und/oder vernetzten Knoten einschließen. Die Knoten können auch als Neuronen bezeichnet werden. Jeder Knoten kann ein Signal, Meldungen, Daten, Informationen usw. an einen oder mehrere andere Knoten übertragen. Ein Knoten kann ein Signal, eine Meldung, Daten, Informationen usw. von einem anderen Knoten empfangen und zusätzliche Signale, Meldungen, Daten, Informationen usw. erzeugen, um sie an andere Knoten zu übertragen, die mit ihm verbunden sind. Das neuronale Netz 313 kann ein Rechenmodell sein, das verwendet werden kann, um ein Merkmal in Eingangsdaten durch verschiedene Berechnungen zu bestimmen. Das neuronale Netz 313 kann ein Merkmal (z. B. eine Anzahl, Form, Muster usw.) in Eingangsdaten (z. B. Audiodaten, Bilddaten, Videodaten usw.) gemäß einer Struktur, die eine Sequenz von durchzuführenden Berechnungen definiert und gemäß Gewichtungswerten, die Koeffizienten definieren, die auf die Berechnungen angewendet werden, bestimmen.
  • Das neuronale Netz 313 kann auch Gewichtungen oder Gewichtungswerte einschließen. Die Gewichtungen oder Gewichtungswerte können Skalierungsfaktoren zwischen zwei oder mehr Knoten sein. Die Skalierungsfaktoren können auf entsprechende Eingänge oder Ausgänge der Knoten angewendet werden. Zum Beispiel kann ein Gewichtungswert, der einer Verbindung zugeordnet ist, einen Koeffizienten oder einen Skalierungsfaktor darstellen, der mit einem Ausgang eines Knotens in dieser Verbindung multipliziert wird. Die Struktur des neuronalen Netzes 313 kann Verbindungen verschiedener Knoten mit entsprechenden Ein- und Ausgängen definieren. Die Gewichtungswerte können Skalierungsfaktoren definieren, die auf entsprechende Eingänge oder Ausgänge der Knoten angewendet werden. Ein Gewichtungswert kann auch einer Verbindung zwischen einem ersten Knoten und einem zweiten Knoten zugeordnet sein. Der der Verbindung zugeordnete Gewichtungswert kann einen Koeffizienten oder einen Skalierungsfaktor darstellen, der mit einem Ausgang des ersten Knotens multipliziert wird, und der Ausgang des ersten Knotens wird einem Eingang des zweiten Knotens bereitgestellt.
  • In einer Ausführungsform kann das neuronale Netz 313 ein konvolutionales neuronales Netz (CNN) sein. Ein CNN kann ein vorwärtsgekoppeltes neuronales Netz sein. Ein vorwärtsgekoppeltes neuronales Netz kann eine Art eines neuronalen Netzes sein, bei dem die Verbindungen zwischen den Knoten keinen Zyklus bilden. Beispielsweise fließen die Signale, Meldungen, Daten, Informationen usw. vorwärts von den Eingangsknoten über die verborgenen Knoten zu den Ausgangsknoten des CNN weiter. CNNs werden nachstehend ausführlicher erörtert.
  • In einer anderen Ausführungsform kann das neuronale Netz 313 ein rekurrentes neuronales Netz (RNN) sein. Ein RNN kann ein neuronales Netz sein, bei dem die Verbindungen zwischen Knoten einen gerichteten Graph bilden können. Ein RNN kann eine Art eines neuronalen Netzes sein, bei dem die Verbindungen zwischen den Knoten einen Zyklus bilden können. Zum Beispiel kann der Knoten eines RNN zu einem Knoten in einer vorangegangenen Schicht oder Unterschicht zurückgeleitet werden. Dies kann es einem RNN ermöglichen, ein zeitdynamisches Verhalten aufzuweisen.
  • Wie in 3A veranschaulicht, schließt der nichtflüchtige Speicher 340 Gewichtungsdaten 343 ein (z. B. werden die Gewichtungsdaten 343 in einem Abschnitt des nichtflüchtigen Speichers 340 gespeichert). In einer Ausführungsform kann die Verarbeitungsvorrichtung 311 das neuronale Netz 313 basierend auf Gewichtungsdaten 343 aufbauen. Die Gewichtungsdaten 343 können Daten sein, welche die Struktur des neuronalen Netzes 313 angeben. Zum Beispiel kann das neuronale Netz 313 eine Vielzahl von Knoten und verschiedene Verbindungen zwischen der Vielzahl von Knoten einschließen, wie nachstehend erörtert. Die Gewichtungsdaten 343 können die verschiedenen Knoten des neuronalen Netzes 313 angeben oder identifizieren. Die Gewichtungsdaten 343 können auch angeben, wie die Knoten der Vielzahl von Knoten miteinander verbunden sind (können z. B. Verbindungen zwischen der Vielzahl von Knoten angeben). Zum Beispiel können die Gewichtungsdaten 343 Verbindungen zwischen verschiedenen Knoten mit entsprechenden Eingängen und Ausgängen definieren.
  • In einer anderen Ausführungsform können die Gewichtungsdaten 343 die Gewichtungen oder Gewichtungswerte angeben, die den Knoten oder den Verbindungen zwischen den Knoten zugeordnet sind. Zum Beispiel können die Gewichtungsdaten 343 eine Gewichtung (z. B. einen Skalierungsfaktor, einen Multiplikator usw.) angeben, welche auf die Verbindungen zwischen den Knoten angewendet werden kann. Wie vorstehend erläutert, kann die Gewichtung an den Ausgang eines ersten Knotens, der mit einem zweiten Knoten verbunden ist, angelegt werden. Die Gewichtungsdaten 343 können einen Satz von Gewichtungen (z. B. ein oder mehrere Gewichtungen) für das neuronale Netz 313 angeben. Jede Gewichtung in dem Satz von Gewichtungen kann einer Verbindung zwischen den Knoten in dem neuronalen Netz 313 zugeordnet sein.
  • In einer Ausführungsform kann die Verarbeitungsvorrichtung 311 die Gewichtungsdaten 343 (z. B. die Gewichtungen, die den Verbindungen und/oder Knoten des neuronalen Netzes 313 zugeordnet sind) durch Trainieren des neuronalen Netzes basierend auf Trainingsdaten erhalten. Zum Beispiel kann die Verarbeitungsvorrichtung 311 das neuronale Netz 313 mit einer Anfangsstruktur (z. B. einem Anfangssatz von Verbindungen zwischen verschiedenen Knoten) aufbauen und einen Satz von Anfangsgewichtungen verwenden. Die Anfangsstruktur und Anfangsgewichtungen können basierend auf Benutzereingaben, Standardeinstellungen/-parametern usw. bestimmt werden. Die Verarbeitungsvorrichtung 311 kann Trainingsdaten empfangen und das neuronale Netz 313 trainieren, indem sie dem neuronalen Netz 313 die Eingangsdaten bereitstellt und das neuronale Netz 313 auf die Trainingsdaten anwendet (z. B. durch Verarbeitung der Trainingsdaten mit dem neuronalen Netz 313). Die Trainingsdaten können ein großer Datensatz (z. B. Millionen von Dateien) sein, der auf das neuronale Netz 313 angewendet oder diesem bereitgestellt werden kann, um das neuronale Netz 313 darauf zu trainieren, ein oder mehrere Merkmale (z. B. ein oder mehrere Zielmerkmale) zu erkennen. Die Verarbeitungsvorrichtung 311 kann die Struktur des neuronalen Netzes 313 aktualisieren (z. B. aktualisieren, wie die Knoten des neuronalen Netzes 313 verbunden sind) und/oder kann die Gewichtungen des neuronalen Netzes 313 aktualisieren (z. B. die Werte der Gewichtungen aktualisieren, die den Knoten und/oder den Verbindungen des neuronalen Netzes 313 zugeordnet sind). Sobald das neuronale Netz 313 trainiert ist, kann die Verarbeitungsvorrichtung 311 die aktualisierte (z. B. trainierte) Struktur des neuronalen Netzes 313 und die aktualisierten (z. B. trainierten) Gewichtungen in den Gewichtungsdaten 343 speichern. Im Allgemeinen können die Gewichtungsdaten 343 umfangreicher sein (können z. B. mehr Speicherplatz verwenden) als die Gewichtungsdaten 343.
  • In einer Ausführungsform kann beim Training des neuronalen Netzes 313 eine Dropout-Technik verwendet werden. Die Dropout-Technik kann einen oder mehrere Knoten des neuronalen Netzes 313 während des Trainings des neuronalen Netzes 313 ignorieren, deaktivieren, nicht verwenden usw. Die Gewichtungen, die von Knoten stammen und/oder zu Knoten führen (die herausfallen gelassen, ignoriert, deaktiviert werden), können auch ignoriert, deaktiviert, ungenutzt gelassen usw. werden. Die Dropout-Technik kann dabei helfen, eine Überpassung zu verhindern. Überpassung kann sich auf eine Situation beziehen, in der das neuronale Netz möglicherweise zu eng an die Trainingsdaten gebunden oder zu eng daran angepasst ist, wodurch die Genauigkeit des neuronalen Netzes an anderen Eingangsdaten reduziert wird.
  • In einer Ausführungsform könnten die Gewichtungen, die von dem neuronalen Netz 313 verwendet werden, analysiert und gemäß einer oder mehreren Bewertungsmetriken nach Wichtigkeit geordnet werden. Eine oder mehrere Gewichtungen, die möglicherweise weniger relevant für die Leistungsfähigkeit des neuronalen Netzes 313 sind (die z. B. die Genauigkeit der vom neuronalen Netz 313 erzeugten Inferenzen oder Ergebnisse weniger beeinflussen), könnten ausgedünnt werden. Zum Beispiel können weniger wichtige Gewichtungen entfernt werden, indem ein Schwellenwert für die Genauigkeit für die von dem neuronalen Netz 313 erzeugten Ergebnisse eingehalten wird. In einigen Ausführungsformen können eine oder mehrere der Verarbeitungsvorrichtung 311 und der Steuerung 330 Gewichtungen identifizieren, die entfernt werden können. In anderen Ausführungsformen können die Steuerung 330 und/oder die Verarbeitungsvorrichtung 311 die entfernbaren Gewichtungen von einer anderen Vorrichtung empfangen. Zum Beispiel kann die Steuerung 330 die entfernbaren Gewichtungen von der Verarbeitungsvorrichtung 311 empfangen. In einem anderen Beispiel kann die Verarbeitungsvorrichtung 311 die entfernbaren Gewichtungen von einer anderen Rechenvorrichtung (z. B. von einem Servercomputer) empfangen. Verschiedene Ausführungsformen können verschiedene Techniken, Algorithmen, Verfahren usw. verwenden, um Gewichtungen zu identifizieren, die aus dem neuronalen Netz 313 ausgedünnt werden können. Die Gewichtungen, die aus dem neuronalen Netz ausgedünnt werden können, können als ausdünnbare Gewichtungen bezeichnet werden. Das Entfernen oder Ausdünnen der Gewichtungen aus dem neuronalen Netz 313 kann die Datenmenge reduzieren, die zum Speichern der Gewichtungen für das neuronale Netz 313 verwendet wird.
  • Wie in 3A veranschaulicht, schließt der nichtflüchtige Speicher 340 Dateidaten 341, Metadaten 342, Gewichtungsdaten 343 und Ergebnisdaten 344 ein. Die Dateidaten 341 können Eingangsdaten einschließen, die vom neuronalen Netz 313 verarbeitet und/oder analysiert werden können. Zum Beispiel können die Dateidaten 341 verschiedene Bilddateien (z. B. digitale Bilder, digitale Fotos usw.) einschließen, die vom neuronalen Netz 313 analysiert werden können. Das neuronale Netz 313 kann die Bilddateien analysieren, um den Inhalt der Bilddateien zu bestimmen. Zum Beispiel kann das neuronale Netz 313 die Bilder analysieren, um zu bestimmen, was in den Bildern abgebildet oder gezeigt ist (z. B. ein Bild einer Katze, ein Bild eines Jungen, der in einem Park spielt, usw.). Das neuronale Netz 313 kann die vom neuronalen Netz erzeugten Daten in den Ergebnisdaten 344 speichern. Zum Beispiel können die Ergebnisdaten 344 eine Tabelle, eine Liste usw. sein, die den Inhalt der durch das neuronale Netz 313 ermittelten Dateidaten 341 angeben. Die Ergebnisdaten 344 können die Ausgabe des neuronalen Netzes 313 sein, die in verschiedenen Formaten dargestellt werden kann. Beispielsweise können die Ergebnisdaten 344 eine Tabelle oder eine Liste von Dateinamen (z. B. Namen von Bilddateien) und dem Inhalt der Dateien (z. B. Beschreibungen, von dem was in den Bilddateien ist) sein. Die Metadaten 342 können Dateisystem-Metadaten für die Dateidaten 341 sein. Zum Beispiel können die Metadaten 342 Dateinamen, Dateitypen (z. B. Dateiformat), Zeitstempel (z. B. zuletzt bearbeiteter Zeitstempel, zuletzt aufgerufener Zeitstempel, erstellter Zeitstempel usw.), Dateigröße, Dateibesitzer/-erzeuger usw. einschließen. Die Dateidaten 341, die Metadaten 342, die Gewichtungsdaten 343 und die Ergebnisdaten 344 können in verschiedenen Abschnitten des nichtflüchtigen Speichers 340 und/oder verschiedenen Arten von nichtflüchtigem Speicher gespeichert werden, wie nachstehend ausführlicher erörtert.
  • In einer Ausführungsform kann die Steuerung 330 Informationen empfangen, welche die Art von Daten angeben können, die auf der Datenspeicherungs- oder Speichervorrichtung 320 gespeichert wird. Zum Beispiel ist der Steuerung 330 möglicherweise nicht bekannt, dass es sich bei den Daten, die gespeichert werden, um eine Gewichtung handelt, die vom neuronalen Netz 313 verwendet wird. Die Rechenvorrichtung 310 und/oder die Verarbeitungsvorrichtung 311 können der Steuerung 330 zusätzliche Daten oder Informationen bereitstellen, welche die Art von Daten angeben, auf die auf der Datenspeicherungs- oder Speichervorrichtung 320 zugegriffen (z. B. gespeichert) wird. Zum Beispiel können NVME-Direktiven verwendet werden, um der Steuerung 310 Informationen über die Art von Daten bereitzustellen, auf die durch die Steuerung 310 zugegriffen wird oder die durch diese gespeichert werden. Eine NVME-Direktive kann ein Befehlstyp (z. B. ein Zugriffsbefehl) sein, der es der Rechenvorrichtung 310 und/oder der Verarbeitungsvorrichtung 311 ermöglicht, der Steuerung 310 zusätzliche Informationen bereitzustellen, welche die Art der Daten angeben, auf die zugegriffen wird.
  • Wie vorstehend erörtert, kann eine Datenspeicherungs- oder Speichervorrichtung alle Daten in der Datenspeicherungs- oder Speichervorrichtung auf herkömmliche oder standardmäßige Weise speichern. Zum Beispiel kann die Datenspeicherungs- oder Speichervorrichtung zum Speichern aller Daten in der Datenspeicherungs- oder Speichervorrichtung denselben ECC verwenden. Oder die Datenspeicherungs- oder Speichervorrichtung kann eine Art von Speicher einschließen oder verwenden, um alle Daten in der Datenspeicherungs- oder Speichervorrichtung zu speichern. Verschiedene Arten von Daten können jedoch wichtiger sein als andere Arten von Daten. Beispielsweise können die Gewichtungen eines neuronalen Netzes wichtiger sein als die Eingangsdateien und sollten stärker geschützt werden, da das Erzeugen der Gewichtungen für das neuronale Netz ein zeitaufwendiger und/oder teurer Prozess sein kann. In einem anderen Beispiel können die von einem neuronalen Netz erzeugten Ergebnisse wichtiger sein als die Eingangsdateien und sollten stärker geschützt werden, da das Erzeugen der Ergebnisse auch ein zeit- und/oder kostenaufwendiger Prozess sein kann. Außerdem wird auf verschiedene Arten von Daten möglicherweise häufiger zugegriffen und/oder sie werden häufiger geändert. Zum Beispiel können bestimmte Gewichtungen häufiger aktualisiert werden, wenn das neuronale Netz 313 auf neue Trainingsdaten trainiert wird.
  • In einigen Ausführungsformen können die verschiedenen Arten von Daten (z. B. Dateidaten 341, die Metadaten 342, die Gewichtungsdaten 343 und die Ergebnisdaten 344) in verschiedene Hierarchien oder Ebenen unterteilt sein. Die Hierarchien oder Ebenen können verschiedene Arten von Daten zusammenfassen. Daten aus verschiedenen Hierarchien oder Ebenen können in verschiedenen Speichertypen und/oder verschiedenen Abschnitten von Speichern gespeichert werden. Die unterschiedlichen Speicherabschnitte und/oder Speichertypen können unterschiedlich eingerichtet sein und/oder unterschiedliche Merkmale oder Eigenschaften aufweisen. Zum Beispiel kann ein Abschnitt des Speichers für eine längere Speicherung eingerichtet sein, aber nicht für eine schnellere Zugriffszeit, weil auf die in diesem Abschnitt des Speichers gespeicherten Daten möglicherweise nicht oft zugegriffen wird. In einem anderen Beispiel können die Gewichtungsdaten 343 wichtiger sein als andere Arten von Daten, daher können die Gewichtungsdaten 343 in einer Art von Speicher, die eine höhere Zuverlässigkeit aufweist (der z. B. weniger Fälle von Ausfällen oder Fehlern aufweist), gespeichert werden. In einem weiteren Beispiel kann auf die Gewichtungsdaten 343 häufiger zugegriffen werden als auf andere Arten von Daten und die Gewichtungsdaten 343 können in einer Art von Speicher gespeichert werden, die schnellere Zugriffszeiten aufweist (z. B. eine geringere Latenz). In noch einem weiteren Beispiel können Daten, auf die schneller zugegriffen werden sollte (z. B. mit geringerer Latenz), unter Verwendung eines schwächeren ECC codiert/decodiert werden. Durch Variieren der Typen und/oder Abschnitte des Speichers und durch Variieren der Konfiguration, Merkmale und/oder Eigenschaften der Speicherabschnitte kann die Datenspeicherungs- oder Speichervorrichtung 320 schneller und/oder effizienter auf Daten zugreifen (z. B. lesen, speichern, löschen usw.), die von dem neuronalen Netz 313 verwendet werden.
  • Obwohl sich die hierin offenbarten Beispiele, Implementierungen und/oder Ausführungsformen auf einen nichtflüchtigen Speicher 340 (z. B. Flash-Speicher, SCM usw.) beziehen können, können in anderen Ausführungsformen andere Speichertypen verwendet werden. Ein flüchtiger Speicher (z. B. Direktzugriffsspeicher (RAM)) kann in anderen Ausführungsformen zusätzlich zu und/oder anstelle des nichtflüchtigen Speichers 340 verwendet werden. Zum Beispiel kann es verschiedene Arten von flüchtigem Speicher geben, die in dem Datenspeicherungs- oder Speichersystem 300 (z. B. dynamischen RAM (DRAM) und statischen RAM (SRAM)) verwendet werden. Die Dateidaten 341, Metadaten 342, Gewichtungsdaten 343 und Ergebnisdaten 344 können auf verschiedenen Arten von flüchtigem Speicher und/oder verschiedenen Abschnitten einer Art von flüchtigem Speicher gespeichert werden. In einem anderen Beispiel können sowohl Flash-Speicher als auch DRAM in dem Datenspeicherungs- oder Speichersystem 300 verwendet werden. In einem weiteren Beispiel können mehrere Typen von Flash-Speicher und mehrere Typen von RAM im Datenspeicherungs- oder Speichersystem 300 verwendet werden.
  • 3B ist ein Diagramm, das einen beispielhaften nichtflüchtigen Speicher 340 gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung veranschaulicht. Der nichtflüchtige Speicher 340 kann in einer Datenspeicherungs- oder Speichervorrichtung 320 eingeschlossen sein, wie in 3A veranschaulicht. Der nichtflüchtige Speicher 340 kann über eine NVM-Schnittstelle 350 mit einer Steuerung 330 gekoppelt sein, wie in 3A veranschaulicht. Der nichtflüchtige Speicher 340 ist in einen Abschnitt 381, einen Abschnitt 382, einen Abschnitt 383 und einen Abschnitt 384 unterteilt.
  • Wie vorstehend erörtert, können die im nichtflüchtigen Speicher 340 gespeicherten Daten logisch organisiert und/oder in verschiedene Datenhierarchien oder -ebenen unterteilt sein. Verschiedene Datenhierarchien oder -ebenen können in verschiedenen Abschnitten des nichtflüchtigen Speichers 340 (z. B. in einem oder in mehreren der Abschnitte 381 bis 384) gespeichert werden. In einer Ausführungsform können die verschiedenen Speicherabschnitte verschiedene Sätze/Gruppen von Blöcken, Seiten, Dies (z. B. ein Speicher-Die, ein Halbleiter-Die, ein Flash-Die, ein NAND-DIE, ein Flash-Chip usw.) sein. In einer anderen Ausführungsform können die unterschiedlichen Speicherabschnitte unterschiedliche Speichertypen sein, die in dem nichtflüchtigen Speicher eingeschlossen sind. Zum Beispiel kann ein Abschnitt des nichtflüchtigen Speichers 340 ein Speicherklassenspeicher (SCM) sein und ein anderer Abschnitt des Speichers kann ein SLC-NAND-Speicher sein. In einem anderen Beispiel kann ein Abschnitt des flüchtigen Speichers 340 ein 3D-TLC-NAND-Speicher sein und ein anderer Abschnitt des Speichers kann ein Pseudo-MLC-Speicher (pMLC-Speicher) sein. Der nichtflüchtige Speicher 340 kann eine beliebige Anzahl und/oder Kombination verschiedener Arten von Speicher einschließen, einschließlich, aber nicht beschränkt auf, SLC-NAND-FLASH-Speicher, MLC-NANA-FLASH-Speicher, TLC-NAND-FLASH-Speicher, pSLC-Speicher, pMLC-Speicher, SCM (einschließlich resistivem RAM (ReRAM), PCM, MRAM usw.) oder jede andere geeignete Art von Speicher.
  • In einer Ausführungsform können in einer ersten Hierarchie (oder Ebene) H1 die im nichtflüchtigen Speicher 340 gespeicherten Daten in zwei Gruppen von Daten unterteilt werden. Die erste Gruppe von Daten kann die Dateidaten 341 einschließen. Die zweite Gruppe von Daten kann die Metadaten 342, die Ergebnisdaten 344 und die Gewichtungsdaten 343A und 343B einschließen (die in 3A als Gewichtungsdaten 343 bezeichnet werden können). Wie vorstehend erörtert, können die Metadaten 342, die Gewichtungsdaten 343A-343B und die Ergebnisdaten 344 für das neuronale Netz 313 wichtiger und/oder nützlicher sein. Gehen zum Beispiel die Gewichtungsdaten 343A-343B verloren, kann das Regenerieren der Gewichtungsdaten 343A-343B zusätzliche Zeit in Anspruch nehmen, da zusätzliche Zeit benötigt wird, um das neuronale Netz 313 neu zu trainieren. In einem anderen Beispiel kann, wenn die Ergebnisdaten 344 verloren gehen oder beschädigt sind, das Regenerieren der Ergebnisdaten 344 auch zusätzliche Zeit in Anspruch nehmen, da das neuronale Netz 313 zusätzliche Zeit benötigt, um die Dateidaten 341 neu zu analysieren und die Ergebnisdaten 344 zu regenerieren. Die erste Gruppe von Daten (z. B. die Dateidaten 341) kann auf Abschnitt 381 gespeichert werden und die zweite Gruppe von Daten (z. B. die Metadaten 342, die Ergebnisdaten 344 und die Gewichtungsdaten 343A und 343B) kann auf den Abschnitten 382 bis 384 gespeichert werden. Der Abschnitt 381 und die Abschnitte 382 bis 384 können verschiedene Speichertypen sein. Zum Beispiel kann Abschnitt 381 ein 3D-TLC-NAND-Speicher sein und die Abschnitte 382 bis 384 können pSLC-Speicher, pMLC-Speicher, SCM usw. sein.
  • In einer Ausführungsform können eines oder mehrere der Metadaten 342, Ergebnisdaten 344 und Gewichtungsdaten 343A und 343B über die verschiedenen Abschnitte des nichtflüchtigen Speichers 340 hinweg dupliziert werden. Zum Beispiel kann es mehrere Kopien der Metadaten 342, der Ergebnisdaten 344 und der Gewichtungsdaten 343A und 343B geben und die mehreren Kopien können über verschiedene Dies des nichtflüchtigen Speichers 340 verteilt sein. Dies kann es der Steuerung 330 ermöglichen, schneller und/oder effizienter auf die Metadaten 342, die Ergebnisdaten 344 und die Gewichtungsdaten 343A und 343B zuzugreifen, wie im Folgenden näher erläutert wird.
  • In einer Ausführungsform können in einer zweiten Hierarchie (oder Ebene) H2 die im nichtflüchtigen Speicher 340 gespeicherten Daten weiter in zwei Gruppen von Daten unterteilt werden. Die erste Gruppe von Daten kann die Metadaten 342 und die Ergebnisdaten 344 einschließen. Die zweite Gruppe von Daten kann die Gewichtungsdaten 343A und 343B (z. B. die Gewichtungsdaten 343) einschließen. Die erste Gruppe von Daten (z. B. die Metadaten 342 und die Ergebnisdaten 344) kann auf Abschnitt 382 gespeichert werden und die zweite Gruppe von Daten (z. B. die Gewichtungsdaten 343A und 343B) kann auf den Abschnitten 383 bis 384 gespeichert werden. Die Abschnitte 382 bis 384 können verschiedene Speichertypen sein. Zum Beispiel kann Abschnitt 382 ein MLC-Speicher sein und die Abschnitte 383 und 384 können SCM sein.
  • In einer Ausführungsform können in einer dritten Hierarchie (oder Ebene) H3 die im nichtflüchtigen Speicher 340 gespeicherten Daten weiter in zwei Gruppen von Daten unterteilt werden. Zum Beispiel können die Gewichtungsdaten 343 in die Gewichtungsdaten 343A und Gewichtungsdaten 343B unterteilt werden. Die Steuerung 330 kann einen Satz von Gewichtungen für das neuronale Netz 313 erhalten. Zum Beispiel kann die Steuerung 330 die Gewichtungen für das neuronale Netz 313 von einer Rechenvorrichtung empfangen (z. B. Rechenvorrichtung 310, veranschaulicht in 3A). Wie vorstehend erörtert, kann das neuronale Netz 313 eine Vielzahl von Knoten und eine Vielzahl von Verbindungen, welche die Knoten, wie vorstehend erörtert, miteinander verbinden, einschließen. Der Satz von Gewichtungen kann in den Gewichtungsdaten 343A und 343B enthalten sein.
  • In einer Ausführungsform kann die Steuerung 330 eine erste Teilmenge von Gewichtungen (z. B. die Gewichtungsdaten 343A) und eine zweite Teilmenge von Gewichtungen (z. B. die Gewichtungsdaten 343B) aus dem Satz von Gewichtungen identifizieren. Zum Beispiel kann die Steuerung 330 eine erste Teilmenge von Gewichtungen (aus dem Satz von Gewichtungen) identifizieren, die vom neuronalen Netz 313 zum Analysieren von Eingangsdaten und/oder Eingangsdateien verwendet werden kann. Bei der ersten Teilmenge von Gewichtungen kann es sich um Gewichtungen handeln, die möglicherweise nicht ausgedünnt werden. Die erste Teilmenge von Gewichtungen kann in den Gewichtungsdaten 343A eingeschlossen sein.
  • Die Steuerung 330 kann zudem eine zweite Teilmenge von Gewichtungen identifizieren, die Gewichtungen einschließen kann, die aus dem neuronalen Netz 313 ausgedünnt werden können (z. B. können es ausdünnbare Gewichtungen sein). Um beispielsweise die Menge an Platz (z. B. Speicherplatz) zum Speichern der Gewichtungen des neuronalen Netzes 313 zu reduzieren, kann ein Teil der Gewichtungen ausgedünnt oder entfernt werden, wie vorstehend erörtert. Der zweite Satz von Teilmengen von Gewichtungen kann in den Gewichtungsdaten 343B eingeschlossen sein.
  • In einigen Ausführungsformen kann die Steuerung 330 die erste Teilmenge von Gewichtungen und die zweite Teilmenge von Gewichtungen (z. B. die Gewichtungsdaten 343A bzw. 343B) auf Daten basierend identifizieren, welche die erste Teilmenge und die zweite Teilmenge von Gewichtungen angeben. Zum Beispiel kann die Steuerung 330 Daten empfangen (z. B. eine NVME-Direktive, eine Liste von Gewichtungen oder andere geeignete Daten usw.), die angeben können, welche Gewichtungen in der ersten Teilmenge von Gewichtungen sind und welche Gewichtungen in der zweiten Teilmenge von Gewichtungen sind.
  • In einer Ausführungsform können die Gewichtungsdaten 343A (z. B. die erste Teilmenge von Gewichtungen) in Abschnitt 383 des nichtflüchtigen Speichers 340 gespeichert werden. Zum Beispiel können die Gewichtungsdaten 343A auf einem ersten Satz von Dies gespeichert werden. In einem anderen Beispiel können die Gewichtungsdaten 343A auf einem Satz von Blöcken, Seiten usw. des nichtflüchtigen Speichers gespeichert werden. Die Gewichtungsdaten 343B (z. B. die zweite Teilmenge von Gewichtungen) können in Abschnitt 384 des nichtflüchtigen Speichers 340 gespeichert werden. Zum Beispiel kann die zweite Teilmenge von Gewichtungen auf einem zweiten Satz von Dies, einem zweiten Satz von Blöcken, Seiten usw. gespeichert werden.
  • In einer Ausführungsform können verschiedene ECCs für die verschiedenen Abschnitte des nichtflüchtigen Speichers 340 verwendet werden, um die Gewichtungsdaten 343A bis 343B vor Beschädigung, Verlust, Verfälschungen usw. zu schützen. Zum Beispiel kann ein erster ECC verwendet werden, um die Gewichtungsdaten 343A zu schützen, die in Abschnitt 383 des nichtflüchtigen Speichers 340 gespeichert sind, und ein zweiter, anderer ECC kann verwendet werden, um die Gewichtsdaten 343B zu schützen, die in Abschnitt 384 des nichtflüchtigen Speichers 340 gespeichert sind. Der erste ECC (der für den ersten Abschnitt des nichtflüchtigen Speichers 340 verwendet wird) kann stärker sein als der zweite ECC (der für den zweiten Abschnitt des nichtflüchtigen Speichers 340 verwendet wird). Beispielsweise kann die Coderate des ersten ECC (z. B. das Verhältnis von Datenbits zu den Gesamtbits eines Codeworts) kleiner sein als die Coderate des zweiten ECC (z. B. ist der erste ECC stärker als der zweite ECC oder der zweite ECC ist schwächer als der erste ECC).
  • In einer Ausführungsform können unterschiedliche Mengen an Überbereitstellung für die unterschiedlichen Abschnitte des nichtflüchtigen Speichers 340 verwendet werden. Zum Beispiel kann der Abschnitt des nichtflüchtigen Speichers 340, der zum Speichern der Gewichtungsdaten 343A verwendet wird, weniger Überbereitstellung verwenden als die Menge an Überbereitstellung, die in dem Abschnitt des nichtflüchtigen Speichers 340 verwendet wird, der zum Speichern der Gewichtungsdaten 343B verwendet wird (z. B. ausdünnbare Gewichtungen). Überbereitstellung kann auftreten, wenn die Steuerung 330 im nichtflüchtigen Speicher 340 mehr Platz für Daten zuweist, als die tatsächliche Größe der Daten beträgt (z. B. Zuweisung von 2 Kilobyte, um Daten im Wert von 1,5 Kilobyte zu speichern). Die Überbereitstellung kann dabei helfen, die Lebensdauer des Flash-Speichers (z. B. eines NAND-Speichers) zu erhöhen, der im nichtflüchtigen Speicher 340 eingeschlossen sein kann. Da sich der zweite Satz von Gewichtungen häufiger ändern kann (z. B. können sich die Gewichtungen, die als ausdünnbar identifiziert werden, im Laufe der Zeit ändern), kann die Verwendung von mehr Überbereitstellung in dem Abschnitt des nichtflüchtigen Speichers, der verwendet werden kann, um den zweiten Satz von Gewichtungen zu speichern, die Lebensdauer dieses Abschnitts des nichtflüchtigen Speichers erhöhen.
  • In einer Ausführungsform können in einer vierten Hierarchie (oder Ebene) H4, wenn die Gewichtungsdaten 343A (z. B. die erste Teilmenge von Gewichtungen) in Abschnitt 383 des nichtflüchtigen Speichers 340 gespeichert werden, die ersten Gewichtungsdaten 343A logisch in einem Bitarray angeordnet sein, das Spalten und Arrays von Bits einschließt. Jede Zeile des Bitarrays kann eine Gewichtung aus den Gewichtungsdaten 343A sein. Beispielsweise kann jede Zeile des Bitarrays eine Bitfolge (z. B. eine Reihe von Bits) sein, die eine Gewichtung aus den Gewichtungsdaten 343A darstellt. Jedes Bit in der Bitfolge kann eine Bitstelle aufweisen. Die Bitstellen können unterschiedliche Bitwertigkeiten aufweisen. So kann beispielsweise das am weitesten links stehende Bit das höchstwertige Bit (MSB, most significant bit) und das am weitesten rechts stehende Bit das niedrigstwertige Bit (LSB, least significant bit) sein, oder umgekehrt. Jede Zeile des Bitarrays (z. B. jede Gewichtung der Gewichtungsdaten 343A) kann nach der Bitstelle ausgerichtet sein. Zum Beispiel kann sich das erste Bit jeder Gewichtung in einer ersten Spalte des Bitarrays befinden, das zweite Bit jeder Gewichtung kann sich in einer zweiten Spalte des Bitarrays befinden usw.
  • In einer Ausführungsform können in einer fünften Hierarchie (oder Ebene) H5 die Spalten des Bitarrays unter Verwendung unterschiedlicher ECCs codiert und/oder decodiert werden. Zum Beispiel kann die erste Spalte unter Verwendung eines ersten ECC codiert werden, die zweite Spalte kann unter Verwendung eines zweiten ECC codiert werden, die dritte Spalte kann unter Verwendung eines dritten ECC codiert werden usw. Jede Kombination und/oder Anzahl von ECCs kann verwendet werden, um die Spalten des Bitarrays in verschiedenen Ausführungsformen zu codieren. Zum Beispiel können ECCs mit unterschiedlichen Stärken verwendet werden, um Spalten des Bitarrays basierend auf ihrer Bitstelle oder Bitwertigkeit zu codieren/decodieren, wie nachstehend ausführlicher erörtert wird. Das Bitarray und die ECCs, die zum Codieren/Decodieren der Spalten verwendet werden können, werden nachstehend ausführlicher erörtert.
  • In anderen Ausführungsformen kann die Anzahl von Hierarchien und/oder die Daten, die den verschiedenen Hierarchien zugeordnet sind, unterschiedlich sein. Zum Beispiel kann die Wichtigkeit verschiedener Arten von Daten davon abhängen, wie die Daten verwendet werden oder welche Anwendung, welcher Dienst, welcher Prozess usw. die Daten verwendet.
  • Eine oder mehrere der hierin beschriebenen Ausführungsformen, Implementierungen, Beispiele usw. können Daten basierend auf der Art der Daten in verschiedenen Typen und/oder Abschnitten des nichtflüchtigen Speichers 340 speichern. Die verschiedenen Typen und/oder Abschnitte des nichtflüchtigen Speichers 340 können verschiedene Konfigurationen, Eigenschaften oder Parameter aufweisen. Zum Beispiel können Gewichtungen, die häufiger modifiziert werden können, in einer zuverlässigeren Art von Speicher mit einem schwächeren ECC gespeichert werden, um einen schnelleren Zugriff auf diese Gewichtungen zu ermöglichen. In einem anderen Beispiel können Dateidaten (die möglicherweise weniger wichtig sind als die Gewichtungen eines neuronalen Netzes), die weniger häufig modifiziert werden können, in einer weniger zuverlässigen Art von Speicher mit einem stärkeren ECC gespeichert werden. Dies kann es der Steuerung 330 und/oder der Datenspeicherungs- oder Speichervorrichtung 320 ermöglichen, abzustimmen und/oder zu optimieren, wie verschiedene Arten von Daten geschützt werden und/oder wie schnell auf verschiedene Arten von Daten zugegriffen werden kann.
  • 4 ist ein Diagramm, das einen beispielhaften nichtflüchtigen Speicher 340 gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung veranschaulicht. Der nichtflüchtige Speicher 340 kann in einer Datenspeicherungs- oder Speichervorrichtung 320 eingeschlossen sein, wie in 3A veranschaulicht. Der nichtflüchtige Speicher 340 kann über eine NVM-Schnittstelle 350 mit einer Steuerung 330 gekoppelt sein, wie in 3A veranschaulicht. Der nichtflüchtige Speicher 340 schließt den Die 410, den Die 420, den Die 430 und den Die 440 ein. Jeder der Dies 410 bis 440 kann ein Halbleiter-Die, ein Flash-Die, ein NAND-Die usw. sein. Ein Die kann ein Abschnitt des nichtflüchtigen Speichers 340 sein oder kann eine Einheit zum Unterteilen des nichtflüchtigen Speichers 340 sein.
  • Wie in 4 veranschaulicht, können die verschiedenen Kopien der Gewichtungsdaten 343 in dem nichtflüchtigen Speicher 340 gespeichert werden. Beispielsweise werden vier Kopien, Kopie 451, Kopie 452, Kopie 453 und Kopie 454, der Gewichtungsdaten 343 im nichtflüchtigen Speicher 340 gespeichert. In einer Ausführungsform können die Kopien 451 bis 454 der Gewichtungsdaten 343 über die Dies 410 bis 440 verteilt und/oder dupliziert werden. Zum Beispiel kann Kopie 451 auf Dies 410 bis 430 gespeichert sein, Kopie 452 kann auf Dies 420 bis 440 gespeichert sein, Kopie 453 kann auf Die 410, Die 430 und Die 440 gespeichert sein und Kopie 454 kann auf Die 410, Die 420 und Die 440 gespeichert sein.
  • Mit den mehreren Kopien 451 bis 454 der Gewichtungsdaten 343 kann die Steuerung 330 in der Lage sein, die Zeitdauer für das Zugreifen auf die Gewichtungsdaten 343 zu optimieren und/oder zu verbessern. Wenn beispielsweise ein neuronales Netz auf die Gewichtungsdaten 343 zugreift, um die Werte der Gewichtung in dem neuronalen Netz einzustellen, kann die Steuerung 330 in der Lage sein, die Gewichtungsdaten 343 schneller abzurufen, wenn die Steuerung 330 verschiedene Abschnitte der Gewichtungsdaten 343 aus verschiedenen Dies 410 bis 440 abruft. Beispielsweise kann die Steuerung 330 in der Lage sein, gleichzeitig ein erstes Drittel der Gewichtungsdaten 343 aus dem Die 410, ein zweites Drittel der Gewichtungsdaten 343 aus dem Die 430 und das letzte Drittel der Gewichtungsdaten 343 aus dem Die 440 abzurufen. In einem anderen Beispiel kann die Steuerung 330 in der Lage sein, die Kopien der Abschnitte der Gewichtungsdaten 343 zu verwenden, welche die wenigsten Fehler oder die geringste Bitfehlerrate (BER, bit error rate) aufweisen. Dies kann es der Steuerung 330 erlauben, weniger Zeit für das Korrigieren (z. B. unter Verwendung eines ECC zum Korrigieren eines Fehlers) von Fehlern aufzuwenden. Anstatt einen Fehler in einem Abschnitt der Gewichtungsdaten 343 zu korrigieren, kann die Steuerung 330 beispielsweise eine andere Kopie desselben Abschnitts der Gewichtungsdaten 343 verwenden (die von einem anderen Die abgerufen werden kann), der keine Fehler aufweist.
  • In einer Ausführungsform können die verschiedenen Kopien der Gewichtungsdaten 343 verschiedene Kopien der Gewichtungsdaten 343A und/oder Gewichtungsdaten 343B einschließen (die vorstehend in Verbindung mit 3B erörtert werden). Beispielsweise schließen einige Kopien sowohl die Gewichtungsdaten 343A als auch die Gewichtungsdaten 343B ein, während andere Kopien die Gewichtungsdaten 343A oder die Gewichtungsdaten 343B einschließen können. Obwohl die Gewichtungsdaten 343 in 4 veranschaulicht sind, können auch andere Arten von Daten über die Dies 410 bis 440 des nichtflüchtigen Speichers 340 dupliziert werden. Beispielsweise können auch die Metadaten 342 und/oder die Ergebnisdaten 344 (die vorstehend in Verbindung mit 3B erörtert wurden) über die Dies 410 bis 440 des nichtflüchtigen Speichers 340 dupliziert werden.
  • 5 ist ein Diagramm, das ein beispielhaftes Bitarray 500 gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung veranschaulicht. Das Bitarray 500 schließt die Zeilen R1 bis RX und die Spalten C1 bis C8 ein. Jede Zeile kann eine Gewichtung aus einem Satz von Teilmengen von Gewichtungen darstellen oder sein. Zum Beispiel kann jede Zeile R1 bis RX eine Gewichtung aus den Gewichtungsdaten 343A darstellen, die in 3B veranschaulicht sind. Jede Zeile R1 bis RX kann eine Reihe von Bits einschließen, welche die Gewichtung darstellen (z. B. eine Bitfolge, einen Binärwert usw.). Die Gewichtungen können nach der Bitstelle ausgerichtet sein. Zum Beispiel kann die erste Spalte C1 das erste Bit für jede Gewichtung oder Zeile R1 bis RX einschließen, die zweite Spalte C1 kann das zweite Bit für jede Gewichtung oder Zeile R1 bis RX einschließen usw. Die Spalten C1 bis C8 können auch als Strom, Datenströme, Bitströme usw. bezeichnet werden.
  • Das Bitarray 500 kann die unterschiedlichen Gewichtungen in den Gewichtungsdaten 343A darstellen. Jede Spalte C1 bis C8 kann die Bitstelle oder Bitwertigkeit für eine Gewichtung in einer der Zeilen R1 bis RX angeben. Zum Beispiel kann Spalte C1 die höchstwertigen Bits (MSB) für die Gewichtungen in den Zeilen R1 bis RX einschließen. Die Wertigkeit, Wichtigkeit usw. der Bits kann abnehmen, beginnend mit der höchsten Bitwertigkeit in Spalte C1 und der niedrigsten Bitwertigkeit in C8.
  • In einer Ausführungsform können verschiedene Spalten (z. B. Ströme) von Bits unter Verwendung verschiedener ECCs codiert und/oder decodiert werden. Beispielsweise kann Spalte C1 unter Verwendung eines ersten ECC codiert werden, die Spalte C2 kann unter Verwendung eines zweiten ECC codiert werden, die Spalte C3 kann unter Verwendung eines dritten ECC codiert werden usw. In einem anderen Beispiel können die Spalten C1 bis C4 unter Verwendung eines ersten ECC codiert/decodiert werden und die Spalten C4 bis C8 können unter Verwendung eines zweiten ECC codiert/decodiert werden. Unterschiedliche Anzahlen oder Kombinationen von ECCs können verwendet werden, um die Spalten C1 bis C8 in anderen Ausführungsformen zu codieren/decodieren.
  • In einer Ausführungsform kann die Stärke des ECC der Bitwertigkeit oder Wichtigkeit einer Spalte entsprechen. Spalten mit einer niedrigeren Bitwertigkeit können schwächere ECCs verwenden als Spalten mit einer höheren Bitwertigkeit. Beispielsweise kann der ECC, der zum Codieren/Decodieren der Bits in Spalte C1 verwendet wird, stärker sein als der ECC, der zum Codieren/Decodieren der Bits in Spalte C8 verwendet wird.
  • In einer Ausführungsform können die Bits in Spalten mit niedrigerer Bitwertigkeit (oder Wichtigkeit) häufiger aktualisiert werden als Bits in Spalten mit höherer Bitwertigkeit. Dies kann zumindest teilweise auf die Art der Gewichtungen in neuronalen Netzen zurückzuführen sein sowie darauf wie Gewichtungen aktualisiert werden können. Zum Beispiel kann eine Server-Rechenvorrichtung (die als Parameterserver bezeichnet werden kann) mehreren anderen Rechenvorrichtungen (die als Arbeiter-Rechenvorrichtungen bezeichnet werden können) Gewichtungen für ein neuronales Netz bereitstellen. Die anderen Rechenvorrichtungen können das neuronale Netz für verschiedene Sätze von Eingangsdaten ausführen, um das neuronale Netz zu trainieren (z. B. um die Gewichtungen zu aktualisieren). Die anderen Rechenvorrichtungen können die aktualisierten Gewichtungen an die Server-Rechenvorrichtung übertragen und die Server-Rechenvorrichtungen können die Gewichtungen, die zuvor den anderen Rechenvorrichtungen bereitgestellt wurden, aktualisieren. Aufgrund der Funktionsweise neuronaler Netze können die Änderungen der Gewichtungen des neuronalen Netzes inkrementell sein (können z. B. langsamer zunehmen oder abnehmen). Daher bleiben die MSBs einer Gewichtung möglicherweise unverändert, aber die LSBs der Gewichtung ändern sich aufgrund des Trainings, das auf den anderen Rechenvorrichtungen durchgeführt wird. Durch die Verwendung eines schwächeren ECC auf den LSBs (z. B. den Spalten mit niedrigerer Bitwertigkeit) kann die Steuerung 330 in der Lage sein, die Spalten schneller zu aktualisieren. Zum Beispiel kann die Steuerung in der Lage sein, Codewörter schneller zu codieren und/oder zu decodieren, wenn ein schwächerer ECC verwendet wird.
  • 6 ist ein Flussdiagramm, das ein beispielhaftes Verfahren 600 zum Zugreifen gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung veranschaulicht. Das Verfahren 600 kann von einer Verarbeitungsvorrichtung (z. B. einem Prozessor, einer zentralen Verarbeitungseinheit (CPU), einer Steuerung, einer anwendungsspezifischen integrierten Schaltung (ASIC), einem Field Programmable Gate Array (FPGA) usw.), einem neuronalen Netz usw. durchgeführt werden. Beispielsweise kann das Verfahren 600 von einer Steuerung einer Datenspeicherungs- oder Speichervorrichtung durchgeführt werden. Die Steuerung, die Verarbeitungsvorrichtung und/oder das neuronale Netz kann eine Verarbeitungslogik sein, die Hardware (z. B. Schaltungen, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (z. B. Anweisungen, die auf einem Prozessor ausgeführt werden, um eine Hardwaresimulation durchzuführen), Firmware oder eine Kombination davon einschließen.
  • In einer Ausführungsform kann das Verfahren 600 in einer oder mehreren der Hierarchien H1 oder H2 durchgeführt werden, wie vorstehend erörtert. Das Verfahren 600 beginnt bei Block 605, wo das Verfahren 600 einen Zugriffsbefehl (z. B. einen Datenbefehl) empfängt. Beispielsweise kann der Zugriffsbefehl ein Befehl zum Speichern von Daten auf einer Datenspeicherungs- oder Speichervorrichtung sein. Wie vorstehend erörtert, kann der Zugriffsbefehl zusätzliche Daten oder Informationen über die Daten, auf die zugegriffen wird, einschließen. Zum Beispiel kann der Zugriffsbefehl eine NVME-Direktive einschließen, die angibt, dass die Daten, die gespeichert werden, Gewichtungsdaten sind. Bei Block 610 bestimmt das Verfahren 600, ob es sich bei den Daten um einen spezifizierten oder spezifischen Datentyp handelt. Zum Beispiel kann das Verfahren 600 bestimmen, ob es sich bei den Daten um eines oder mehrere von Gewichtungsdaten, Ergebnisdaten oder Metadaten handelt. Wenn es sich bei den Daten um einen der spezifizierten Datentypen handelt, kann das Verfahren 600 unter Verwendung eines ersten Abschnitts und/oder einer ersten Art des Speichers auf die Daten zugreifen. Wenn es sich bei den Daten beispielsweise um Gewichtungsdaten handelt, kann das Verfahren 600 die Daten im SCM- oder pMLC-Speicher speichern. Wenn es sich bei den Daten nicht um einen der spezifizierten Datentypen handelt, kann das Verfahren 600 unter Verwendung eines zweiten Abschnitts und/oder einer zweiten Art des Speichers auf die Daten zugreifen. Wenn es sich bei den Daten beispielsweise nicht um eines oder mehrere von Gewichtungsdaten, Ergebnisdaten oder Metadaten handelt (z. B. wenn es sich bei den Daten um Dateidaten handelt), kann das Verfahren 600 die Daten unter Verwendung von 3D-NAND speichern.
  • 7 ist ein Flussdiagramm, das ein beispielhaftes Verfahren 700 zum Zugreifen auf Daten gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung veranschaulicht. Das Verfahren 700 kann von einer Verarbeitungsvorrichtung (z. B. einem Prozessor, einer zentralen Verarbeitungseinheit (CPU), einer Steuerung, einer anwendungsspezifischen integrierten Schaltung (ASIC), einem Field Programmable Gate Array (FPGA) usw.), einem neuronalen Netz usw. durchgeführt werden. Beispielsweise kann das Verfahren 700 von einer Steuerung einer Datenspeicherungs- oder Speichervorrichtung durchgeführt werden. Die Steuerung, die Verarbeitungsvorrichtung und/oder das neuronale Netz kann eine Verarbeitungslogik sein, die Hardware (z. B. Schaltungen, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (z. B. Anweisungen, die auf einem Prozessor ausgeführt werden, um eine Hardwaresimulation durchzuführen), Firmware oder eine Kombination davon einschließen.
  • In einer Ausführungsform kann das Verfahren 700 in der Hierarchie H3 durchgeführt werden, wie vorstehend erörtert. Das Verfahren 700 beginnt bei Block 705, wo das Verfahren 700 optional einen Satz von Gewichtungen für ein neuronales Netz erhält. Zum Beispiel kann das Verfahren 700 Gewichtungsdaten empfangen, die auf der Datenspeicherungs- oder Speichervorrichtung gespeichert werden sollen. Bei Block 710 kann das Verfahren 700 optional eine erste Teilmenge von Gewichtungen und eine zweite Teilmenge von Gewichtungen identifizieren. Zum Beispiel kann das Verfahren 700 Daten (z. B. eine Liste, eine Tabelle, eine NVME-Direktive oder andere geeignete Daten) empfangen, die angeben, welche Gewichtungen (aus einer Vielzahl von Gewichtungen) in der ersten Teilmenge von Gewichtungen sind und welche Gewichtungen (aus der Vielzahl von Gewichtungen) in der zweiten Teilmenge von Gewichtungen sind. Bei der ersten Teilmenge von Gewichtungen kann es sich um Gewichtungen handeln, die von dem neuronalen Netz verwendet werden (z. B. die in 3B veranschaulichten Gewichtungsdaten 343A). Beispielsweise kann es sich bei der ersten Teilmenge von Gewichtungen um Gewichtungen handeln, die nicht als ausdünnbare Gewichtungen identifiziert wurden. Bei der zweiten Teilmenge von Gewichtungen kann es sich um Gewichtungen handeln, die ausdünnbar sein können (z. B. die in 3B veranschaulichten Gewichtungsdaten 343A). Bei Block 715 kann das Verfahren 700 die erste Teilmenge von Gewichtungen in einem ersten Abschnitt des Speichers der Datenspeicherungs- oder Speichervorrichtung speichern. Zum Beispiel kann das Verfahren 700 die erste Teilmenge von Gewichtungen in einem Abschnitt des Speichers speichern, der weniger Überbereitstellung verwendet, der stärkere ECC verwendet und/oder der zuverlässiger sein kann. Bei Block 720 kann das Verfahren 700 die zweite Teilmenge von Gewichtungen in einem zweiten Abschnitt des Speichers der Datenspeicherungs- oder Speichervorrichtung speichern. Zum Beispiel kann das Verfahren 700 die zweite Teilmenge von Gewichtungen in einem Abschnitt des Speichers speichern, der mehr Überbereitstellung verwendet, der schwächere ECC verwendet und/oder der weniger zuverlässig sein kann.
  • 8 ist ein Flussdiagramm, das ein beispielhaftes Verfahren 800 zum Zugreifen auf Daten gemäß einer oder mehreren Ausführungsformen der vorliegenden Offenbarung veranschaulicht. Das Verfahren 800 kann von einer Verarbeitungsvorrichtung (z. B. einem Prozessor, einer zentralen Verarbeitungseinheit (CPU), einer Steuerung, einer anwendungsspezifischen integrierten Schaltung (ASIC), einem Field Programmable Gate Array (FPGA) usw.), einem neuronalen Netz usw. durchgeführt werden. Beispielsweise kann das Verfahren 800 von einer Steuerung einer Datenspeicherungs- oder Speichervorrichtung durchgeführt werden. Die Steuerung, die Verarbeitungsvorrichtung und/oder das neuronale Netz kann eine Verarbeitungslogik sein, die Hardware (z. B. Schaltungen, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (z. B. Anweisungen, die auf einem Prozessor ausgeführt werden, um eine Hardwaresimulation durchzuführen), Firmware oder eine Kombination davon einschließen.
  • In einer Ausführungsform kann das Verfahren 800 in einer oder mehrere der Hierarchien H4 und H5 durchgeführt werden, wie vorstehend erörtert. Das Verfahren 800 beginnt bei Block 805, wo das Verfahren 800 einen Satz oder eine Teilmenge von Gewichtungen in einem Bitarray logisch anordnet. Beispielsweise bezugnehmend auf 3B und 5 kann das Verfahren 800 die Gewichtungen in den Gewichtungsdaten 343A in einem Bitarray 500 anordnen, das Spalten und Zeilen von Bits aufweist. Wie vorstehend erörtert, kann jede Zeile des Bitarrays eine Gewichtung sein oder darstellen. Die Gewichtungen können nach der Bitstelle ausgerichtet sein. Bei Block 810 kann das Verfahren 800 einen geeigneten ECC für jede Spalte des Bitarrays identifizieren. Beispielsweise kann das Verfahren 800 ECCs mit unterschiedlichen Stärken für unterschiedliche Bitwertigkeiten der Spalten identifizieren. In Block 815 kann das Verfahren 800 jede Spalte unter Verwendung des geeigneten ECC codieren und/oder decodieren.
  • 9 ist ein Blockdiagramm eines beispielhaften Datenspeicherungs- oder Speichersystems 900, das dem in 3A veranschaulichten Datenspeicherungs- oder Speichersystem 300 ähnlich sein kann. Das Datenspeicherungs- oder Speichersystem 900 kann ein oder mehrere Speicher-Dies 902 einschließen. Der Speicher-Die 902 schließt eine Speicherstruktur 904 aus Speicherzellen ein, wie ein Array von Speicherzellen, welches hierin als Speicherarray bezeichnet wird, eine Adresssteuerung 906 und Lese-/Schreibschaltungen 930. Die Speicherstruktur 904 ist durch Wortleitungen über einen Zeilendecoder 928 und durch Bitleitungen über einen Spaltendecoder 932 adressierbar. Die Lese-/Schreibschaltungen 930 schließen mehrere Erfassungsblöcke SB1, SB2, ..., SBp (Erfassungsschaltkreis) ein und ermöglichen das parallele Lesen oder Programmieren einer Seite von Speicherzellen. In der Regel ist die speichersystembasierte Steuerlogik 903 in demselben nichtflüchtigen Speichersystem 900 (z. B. einer Wechselspeicherkarten) wie der eine oder die mehreren Speicher-Dies 902 eingeschlossen. Steuerbefehle und Daten (z. B. ein roher Videostream) werden zwischen einem Hostsystem und der speichersystembasierten Steuerlogik 903 über einen Datenbus 918 und zwischen der Steuerung und dem einen oder den mehreren Speicher-Dies 902 über die Leitungen 916 übertragen. Der Datenbus 918 kann beispielsweise ein serieller PCIe-Speicherbus sein.
  • Die Speicherstruktur 904 kann 2D (ausgelegt in einer einzigen Fertigungsebene) oder 3D (ausgelegt in mehreren Fertigungsebenen) sein. Die Speicherstruktur 904 kann ein oder mehrere Arrays von Speicherzellen aufweisen, einschließlich eines 3D-Arrays. In einer Ausführungsform kann die Speicherstruktur 904 eine monolithische dreidimensionale Speicherstruktur (3D-Array) aufweisen, in der mehrere Speicherebenen über (und nicht in) einem einzelnen Substrat, wie einem Wafer, ohne dazwischenliegende Substrate ausgebildet sind. Die Speicherstruktur 904 kann jede Art von nichtflüchtigem Speicher aufweisen, der monolithisch in einer oder mehreren physischen Ebenen von Arrays von Speicherzellen ausgebildet ist, die über einen aktiven Bereich verfügen, der über einem Siliziumsubstrat angeordnet ist. Die Speicherstruktur 904 kann sich in einer nichtflüchtigen Speichervorrichtung (z. B. Datenspeicherungs- oder Speichervorrichtung 900) befinden, die Schaltungen aufweist, die dem Betrieb der Speicherzellen zugeordnet sind, ganz gleich, ob sich die zugehörige Schaltung oberhalb oder innerhalb des Substrats befindet.
  • Die Adresssteuerung 906 arbeitet mit den Lese-/Schreibschaltungen 930 zusammen, um Speicheroperationen auf Speicherzellen der Speicherstruktur 904 auszuführen, und schließt eine Zustandsmaschine 908, einen Adressdecoder 910 und eine Leistungssteuerung 914 ein. Die Zustandsmaschine 908 stellt eine Steuerung von Speichervorgängen bereit. Ein Speicherbereichswahlschalter 912 kann z. B. zum Programmieren von Parametern bereitgestellt sein, wie weiter unten beschrieben wird.
  • Der Adressdecoder 910 stellt eine Adressschnittstelle zwischen der vom Host oder einer speichersystembasierten Steuerlogik 903 verwendeten Adresse und der vom Zeilendecoder 928 und Spaltendecoder 932 verwendeten Hardwareadresse bereit. Die Leistungssteuerung 914 steuert die Leistung und Spannungen, die den verschiedenen Steuerleitungen während der Speichervorgänge zugeführt werden. Die Leistungssteuerung 914 und/oder Lese-/Schreibschaltungen 930 können Treiber für Wortleitungen, Source-Gate-Auswahl-Transistoren (SGS-Transistoren), Drain-Gate-Auswahl-Transistoren (DGS-Transistoren), Bitleitungen, Substrate (in 2D-Speicherstrukturen), Ladepumpen und Quellleitungen einschließen. Die Erfassungsblöcke können Bitleitungstreiber und Erfassungsverstärker in einem Ansatz einschließen.
  • Ein SGS-Transistor ist ein Auswahlgate-Transistor an einem Source-Ende einer Speicherzeichenfolge und ein DGS-Transistor ist ein Auswahlgate-Transistor an einem Drain-Ende einer Speicherzeichenfolge.
  • In einigen Implementierungen können einige der Komponenten kombiniert werden. Bei verschiedenen Ausführungen können eine oder mehrere der Komponenten (allein oder in Kombination), die sich von der Speicherstruktur 904 unterscheiden, als mindestens eine Steuerschaltung oder Steuerung betrachtet werden, die zur Durchführung der hierin beschriebenen Techniken eingerichtet ist. Beispielsweise kann eine Steuerschaltung eine beliebige oder eine Kombination aus Adresssteuerung 906, Zustandsmaschine 908, Adressdecoder 910, Spaltendecoder 932, Leistungssteuerung 914, Steuerprozessor 926, Erfassungsblöcken SB1, SB2, ..., SBp, Lese/Schreib-Schaltungen 930, speichersystembasierte Steuerlogik 903 und so weiter einschließen.
  • Die speichersystembasierte Steuerlogik 903 kann einen Steuerprozessor 926 und Speichervorrichtungen, wie den Nur-Lese-Speicher 920 der Steuerung und den flüchtigen Speicher 922 der Steuerung, umfassen.
  • Die Speichervorrichtungen der speichersystembasierten Steuerlogik 903 können Code, wie einen Satz von Anweisungen, umfassen, der den Steuerprozessor 926 so einrichtet, dass er den Satz von Anweisungen ausführt, um Gesichtspunkte der hierin beschriebenen Funktionalität bereitzustellen. Alternativ oder zusätzlich kann der Steuerprozessor 926 auf den Code aus der Speicherstruktur 904 zugreifen, wie auf einen reservierten Bereich von Speicherzellen in einer oder mehreren Wortleitungen.
  • Zum Beispiel kann Code von der speichersystembasierten Steuerlogik 903 verwendet werden, um auf die Speicherstruktur 904, den Nur-Lese-Speicher 920 der Steuerung oder den flüchtigen Speicher 922 der Steuerung zur teilweisen Decodierung und/oder Ereigniserkennungslogik zuzugreifen. In einigen Ausführungsformen kann die Steuerlogik den flüchtigen Speicher 924 des Hostsystems verwenden, um einen Teil oder den gesamten rohen Videostream zur teilweisen Decodierung und Ereigniserkennung zwischenzuspeichern, beispielsweise unter Verwendung von Direktspeicherzugriffstechnologie (DMA) über den Datenbus 918. Die Steuerlogik kann ferner Treiber zum Durchführen grundlegender Aufgaben, wie etwa Steuern und Zuweisen von Speicher, Priorisieren der Verarbeitung von Befehlen und Steuern von Eingabe- und Ausgabeports, einschließen.
  • Im Allgemeinen kann die Steuerlogik Software und andere Logik (z. B. Schaltungen, Firmware) einschließen, um die hierin beschriebenen Funktionen auszuführen. Die Steuerlogik kann einen Sequenzer umfassen, um die zeitliche Planung (Start- und Stoppzeiten, Dauern, Abstände usw.) der verschiedenen hierin beschriebenen Signale zu steuern. Die Zustandsmaschine 908 kann auch verwendet werden, um Gesichtspunkte der Steuerlogik zu implementieren.
  • In einer Ausführungsform ist das Hostsystem eine Rechenvorrichtung (z. B. ein Laptop, ein Desktop, ein Smartphone, ein Tablet, eine Digitalkamera), die einen oder mehrere Prozessoren, eine oder mehrere prozessorlesbare Speichervorrichtungen (flüchtige Speicher des Hostsystems 924, RAM, Flash-Speicher, Festplattenlaufwerk, Festkörperspeicher) einschließt, die einen prozessorlesbaren Code (z. B. eine Software) zum Programmieren der einen oder der mehreren Prozessoren speichert, um die hierin beschriebenen Gesichtspunkte der Techniken durchzuführen. Das Hostsystem kann ferner zusätzlichen Systemspeicher, eine oder mehrere Ein-/Ausgabeschnittstellen und/oder eine oder mehrere Ein- /Ausgabevorrichtungen in Kommunikation mit dem einem oder den mehreren Prozessoren sowie andere im Stand der Technik bekannte Komponenten einschließen.
  • Der Speicherbereichswahlschalter 912 kann ein nichtflüchtiger Speicher, wie ein NAND-Flash-Speicher oder ein anderer Typ, sein. Der Speicherbereichswahlschalter 912 identifiziert unter anderem Blöcke der Speicherstruktur 904 zum Lesen und Schreiben, wie im Stand der Technik bekannt.
  • Ein Fachmann wird erkennen, dass das nichtflüchtige Speichersystem 900 ein Beispiel ist und dass verschiedene Implementierungen zusätzliche Komponenten einschließen oder einige der veranschaulichten Komponenten auf eine im Stand der Technik bekannte Weise ausschließen oder kombinieren.
  • Obwohl sich die vorliegende Offenbarung auf CNNs, RNNs usw. beziehen kann, können in anderen Ausführungsformen auch andere Arten von neuronalen Netzen und/oder andere maschinellen Lernverfahren, -funktionen, -techniken, -operationen, -datenstrukturen usw. verwendet werden. Zum Beispiel kann in anderen Ausführungsformen ein probabilistisches neuronales Netz verwendet werden.
  • Allgemeine Bemerkungen
  • Der Fachmann wird erkennen, dass in einigen Ausführungsformen andere Arten von verteilten Datenspeicherungs- oder Speichersystemen unter Wahrung des Schutzumfangs der vorliegenden Offenbarung implementiert werden können. Außerdem können die tatsächlichen Schritte, die in den hierin erörterten Prozessen vorgenommen werden, sich von denjenigen unterscheiden, die in den Figuren beschrieben oder gezeigt sind. In Abhängigkeit von der Ausführungsform können bestimmte der vorstehend beschriebenen Schritte entfernt werden, andere können hinzugefügt werden.
  • Obwohl bestimmte Ausführungsformen beschrieben wurden, wurden diese Ausführungsformen nur beispielhaft dargestellt und sollen den Schutzumfang nicht einschränken. Tatsächlich können die hierin beschriebenen neuen Verfahren und Systeme in einer Vielzahl anderer Formen verkörpert sein. Ferner können verschiedene Auslassungen, Ersetzungen und Änderungen in der Form der hierin beschriebenen Verfahren und Systeme vorgenommen werden. Die beigefügten Ansprüche und ihre Entsprechungen sollen solche Formen oder Modifikationen abdecken, die in den Umfang und Geist des Schutzes fallen würden. Beispielsweise können die verschiedenen in den Figuren veranschaulichten Komponenten als Software und/oder Firmware auf einem Prozessor, ASIC/FPGA oder spezieller Hardware implementiert werden. Außerdem können die Merkmale und Attribute der vorstehend offenbarten spezifischen Ausführungsformen auf verschiedene Weisen kombiniert werden, um zusätzliche Ausführungsformen zu bilden, die alle in den Schutzumfang der vorliegenden Offenbarung fallen. Obwohl die vorliegende Offenbarung bestimmte bevorzugte Ausführungsformen und Anwendungen bereitstellt, liegen andere Ausführungsformen, die für den Fachmann offensichtlich sind, einschließlich Ausführungsformen, die nicht alle der hierin dargelegten Merkmale und Vorteile bereitstellen, ebenfalls innerhalb des Schutzumfangs dieser Offenbarung. Entsprechend soll der Schutzumfang der vorliegenden Offenbarung nur durch Bezugnahme auf die beigefügten Ansprüche definiert sein.
  • Die Wörter „Beispiel“ oder „beispielhaft“ werden hierin verwendet, um als Beispiel, Vorbild oder Illustration zu dienen. Jeder Gesichtspunkt oder jede Ausführung, der bzw. das hierin als „Beispiel“ oder „beispielhaft“ beschrieben wird, ist nicht unbedingt als bevorzugt oder vorteilhaft gegenüber anderen Gesichtspunkten oder Ausführungen zu verstehen. Vielmehr soll die Verwendung der Wörter „Beispiel“ oder „beispielhaft“ dazu dienen, Konzepte auf konkrete Weise darzustellen. Wie in dieser Offenbarung verwendet, soll der Begriff „oder“ ein integratives „oder“ und kein exklusives „oder“ bedeuten. Das heißt, sofern nicht anders angegeben oder aus dem Zusammenhang hervorgeht, soll „X schließt A oder B ein“ eine der natürlichen inklusiven Kombinationen bedeuten. Das heißt, wenn X A einschließt; X B einschließt; oder X sowohl A als auch B einschließt, dann ist „X schließt A oder B ein“ unter einem der vorgenannten Fälle erfüllt. Darüber hinaus sind die Artikel „ein“, „eine“ usw., wie sie in dieser Offenbarung und den beiliegenden Ansprüchen verwendet werden, im Allgemeinen so auszulegen, dass sie „ein(e) oder mehrere“ bedeuten, sofern nicht anders angegeben oder aus dem Kontext erkennbar, dass sie auf eine Singularform bezogen sind. Darüber hinaus ist die Verwendung der Begriffe „eine Ausführungsform“ bzw. „eine Implementierung“ durchweg nicht dazu gedacht, die gleiche Ausführungsform oder Implementierung zu bedeuten, es sei denn, sie wird als solche beschrieben. Des Weiteren sind die hierin verwendeten Begriffe „erste“, „zweite“, „dritte“, „vierte“ usw. als Kennzeichnungen zur Unterscheidung zwischen verschiedenen Elementen gedacht und haben aufgrund ihrer numerischen Bezeichnung nicht unbedingt eine ordinale Bedeutung.
  • Alle vorstehend beschriebenen Prozesse können in Software-Code-Modulen, die von einem oder mehreren Universal- oder Spezialcomputern oder -prozessoren ausgeführt werden, enthalten und vollständig durch diese automatisiert sein. Die Codemodule können auf einem beliebigen Typ eines computerlesbaren Mediums oder einer anderen Computerspeichervorrichtung oder Ansammlung von Speichervorrichtungen gespeichert sein. Einige oder alle Verfahren können alternativ auch in spezieller Computerhardware enthalten sein.

Claims (20)

  1. Verfahren, umfassend: selektives Speichern einer ersten Teilmenge von Gewichtungen für ein neuronales Netz in einem ersten Abschnitt eines Speichers, wobei das neuronale Netz eine Vielzahl von Knoten und eine Vielzahl von Verbindungen zwischen der Vielzahl von Knoten umfasst, wobei: die erste Teilmenge von Gewichtungen Gewichtungen umfasst, die vom neuronalen Netz verwendet werden; und ein erster Fehlerkorrekturcode für den ersten Abschnitt des Speichers verwendet wird; und selektives Speichern einer zweiten Teilmenge von Gewichtungen für das neuronale Netz in einem zweiten Abschnitt des Speichers, wobei: die zweite Teilmenge von Gewichtungen Gewichtungen umfasst, die ausgedünnt werden können; ein zweiter Fehlerkorrekturcode für den zweiten Abschnitt des Speichers verwendet wird; und der zweite Fehlerkorrekturcode schwächer ist als der erste Fehlerkorrekturcode.
  2. Verfahren gemäß Anspruch 1, wobei in dem zweiten Abschnitt des Speichers mehr Überbereitstellung verwendet wird als in dem ersten Abschnitt des Speichers.
  3. Verfahren gemäß Anspruch 1, wobei das Speichern der ersten Teilmenge von Gewichtungen in dem ersten Abschnitt des Speichers Folgendes umfasst: logisches Anordnen der ersten Teilmenge von Gewichtungen in einem Bitarray, wobei: jede Zeile des Bitarrays eine Gewichtung der ersten Teilmenge von Gewichtungen umfasst; und die erste Teilmenge von Gewichtungen nach Bitstelle ausgerichtet ist.
  4. Verfahren gemäß Anspruch 3, wobei das Speichern der ersten Teilmenge von Gewichtungen in dem ersten Abschnitt des Speichers ferner Folgendes umfasst: Codieren von Spalten des Bitarrays unter Verwendung unterschiedlicher Fehlerkorrekturcodes, wobei die unterschiedlichen Fehlerkorrekturcodes den ersten Fehlerkorrekturcode umfassen.
  5. Verfahren gemäß Anspruch 4, wobei: jeder Spalte des Bitarrays eine anderen Bitwertigkeit zugeordnet ist; und Spalten, denen eine niedrigere Bitwertigkeit zugeordnet ist, unter Verwendung schwächerer Fehlerkorrekturcodes codiert werden als Spalten, denen eine höhere Bitwertigkeit zugeordnet ist.
  6. Verfahren gemäß Anspruch 5, wobei Bits in Spalten, denen niedrigere Bitwertigkeiten zugeordnet sind, häufiger aktualisiert werden als Bits in zugehörigen Spalten, denen höhere Bitwertigkeiten zugeordnet sind.
  7. Verfahren gemäß Anspruch 1, wobei: der Speicher mehrere Typen des Speichers umfasst; und der erste Abschnitt des Speichers und der zweite Abschnitt des Speichers von einer ersten Art von Speicher sind.
  8. Verfahren gemäß Anspruch 7, wobei: Dateimetadaten, die Eingangsdateien zugeordnet sind, und Inferenzergebnisse, die basierend auf den Eingangsdateien erhalten werden, in einem dritten Abschnitt des Speichers gespeichert werden; die Eingangsdateien in einem vierten Abschnitt des Speichers gespeichert werden; und der vierte Abschnitt des Speichers von einer zweiten Art von Speicher ist.
  9. Verfahren gemäß Anspruch 8, wobei: der erste Abschnitt des Speichers, der zweite Abschnitt des Speichers, der dritte Abschnitt des Speichers und der vierte Abschnitt des Speichers unterschiedliche Fehlerkorrekturcodes und unterschiedliche Mengen an Überbereitstellung verwenden; und der erste Abschnitt des Speichers, der zweite Abschnitt des Speichers, der dritte Abschnitt des Speichers und der vierte Abschnitt des Speichers unterschiedliche Zugriffslatenzen und unterschiedliche Zuverlässigkeiten aufweisen.
  10. Verfahren gemäß Anspruch 1, wobei das Speichern der ersten Teilmenge von Gewichtungen in dem ersten Abschnitt des Speichers Folgendes umfasst: Duplizieren der ersten Teilmenge von Gewichtungen über verschiedene Abschnitte des Speichers.
  11. Einrichtung, umfassend: einen Speicher, der eingerichtet ist, um Daten zu speichern; und eine Steuerung, die mit dem Speicher gekoppelt ist, wobei die Steuerung eingerichtet ist zum: selektiven Speichern einer ersten Teilmenge von Gewichtungen für ein neuronales Netz in einem ersten Abschnitt des Speichers, wobei das neuronale Netz eine Vielzahl von Knoten und eine Vielzahl von Verbindungen zwischen der Vielzahl von Knoten umfasst, wobei: die erste Teilmenge von Gewichtungen Gewichtungen umfasst, die vom neuronalen Netz verwendet werden; und ein erster Fehlerkorrekturcode für den ersten Abschnitt des Speichers verwendet wird; und eine zweite Teilmenge von Gewichtungen für das neuronale Netz selektiv in einem zweiten Abschnitt des Speichers gespeichert wird, wobei: die zweite Teilmenge von Gewichtungen Gewichtungen umfasst, die ausgedünnt werden können; ein zweiter Fehlerkorrekturcode für den zweiten Abschnitt des Speichers verwendet wird; und der zweite Fehlerkorrekturcode schwächer ist als der erste Fehlerkorrekturcode.
  12. Einrichtung gemäß Anspruch 11, wobei im zweiten Abschnitt des Speichers mehr Überbereitstellung verwendet wird als im ersten Abschnitt des Speichers.
  13. Einrichtung gemäß Anspruch 11, wobei zum selektiven Speichern der ersten Teilmenge von Gewichtungen in dem ersten Abschnitt des Speichers die Steuerung ferner eingerichtet ist zum: logischen Anordnen der ersten Teilmenge von Gewichtungen in einem Bitarray, wobei: jede Zeile des Bitarrays eine Gewichtung der ersten Teilmenge von Gewichtungen umfasst; und die erste Teilmenge von Gewichtungen nach Bitstelle ausgerichtet ist.
  14. Einrichtung gemäß Anspruch 13, wobei zum selektiven Speichern der ersten Teilmenge von Gewichtungen in dem ersten Abschnitt des Speichers die Steuerung ferner eingerichtet ist zum: Codieren von Spalten des Bitarrays unter Verwendung unterschiedlicher Fehlerkorrekturcodes, wobei die unterschiedlichen Fehlerkorrekturcodes den ersten Fehlerkorrekturcode umfassen.
  15. Einrichtung gemäß Anspruch 14, wobei: jeder Spalte des Bitarrays eine anderen Bitwertigkeit zugeordnet ist; und Spalten, denen eine niedrigere Bitwertigkeit zugeordnet ist, unter Verwendung schwächerer Fehlerkorrekturcodes codiert werden als Spalten, denen eine höhere Bitwertigkeit zugeordnet ist.
  16. Einrichtung gemäß Anspruch 11, wobei: der Speicher mehrere Typen umfasst; und der erste Abschnitt des Speichers und der zweite Abschnitt des Speichers von einer ersten Art von Speicher sind.
  17. Einrichtung gemäß Anspruch 16, wobei: Dateimetadaten, die Eingangsdateien zugeordnet sind, und Inferenzergebnisse, die basierend auf den Eingangsdateien erhalten werden, in einem dritten Abschnitt des Speichers gespeichert werden.
  18. Einrichtung gemäß Anspruch 17, wobei: die Eingangsdateien in einem vierten Abschnitt des Speichers gespeichert werden; und der vierte Abschnitt des Speichers von einer zweiten Art von Speicher ist.
  19. Einrichtung gemäß Anspruch 11, wobei zum Speichern der ersten Teilmenge von Gewichtungen in dem ersten Abschnitt des Speichers die Steuerung ferner eingerichtet ist zum: Duplizieren der ersten Teilmenge von Gewichtungen über verschiedene Abschnitte des Speichers.
  20. Nichtflüchtiges maschinenlesbares Medium mit ausführbaren Anweisungen, um eine oder mehrere Verarbeitungsvorrichtungen zu veranlassen, Operationen durchzuführen, die Folgendes umfassen: selektives Speichern einer ersten Teilmenge von Gewichtungen für ein neuronales Netz in einem ersten Abschnitt eines Speichers, wobei das neuronale Netz eine Vielzahl von Knoten und eine Vielzahl von Verbindungen zwischen der Vielzahl von Knoten umfasst, wobei: die erste Teilmenge von Gewichtungen Gewichtungen umfasst, die vom neuronalen Netz verwendet werden; und ein erster Fehlerkorrekturcode für den ersten Abschnitt des Speichers verwendet wird; und eine zweite Teilmenge von Gewichtungen für das neuronale Netz selektiv in einem zweiten Abschnitt des Speichers gespeichert wird, wobei: die zweite Teilmenge von Gewichtungen Gewichtungen umfasst, die ausgedünnt werden können; ein zweiter Fehlerkorrekturcode für den zweiten Abschnitt des Speichers verwendet wird; und der zweite Fehlerkorrekturcode schwächer ist als der erste Fehlerkorrekturcode.
DE112019005391.4T 2019-05-15 2019-12-19 Optimierte datenorganisation für neuronale netze Pending DE112019005391T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/413,492 2019-05-15
US16/413,492 US11080152B2 (en) 2019-05-15 2019-05-15 Optimized neural network data organization
PCT/US2019/067668 WO2020231477A1 (en) 2019-05-15 2019-12-19 Optimized neural network data organization

Publications (1)

Publication Number Publication Date
DE112019005391T5 true DE112019005391T5 (de) 2021-09-09

Family

ID=73231655

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019005391.4T Pending DE112019005391T5 (de) 2019-05-15 2019-12-19 Optimierte datenorganisation für neuronale netze

Country Status (4)

Country Link
US (2) US11080152B2 (de)
CN (1) CN113168562B (de)
DE (1) DE112019005391T5 (de)
WO (1) WO2020231477A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11080152B2 (en) * 2019-05-15 2021-08-03 Western Digital Technologies, Inc. Optimized neural network data organization
CN110798225A (zh) * 2019-11-06 2020-02-14 深圳大普微电子科技有限公司 一种数据纠错方法、装置、设备及可读存储介质
KR20210083624A (ko) * 2019-12-27 2021-07-07 삼성전자주식회사 신경망의 데이터 입력 및 출력을 제어하는 제어 방법 및 장치
DE102020202632A1 (de) * 2020-03-02 2021-09-02 Robert Bosch Gesellschaft mit beschränkter Haftung Inferenzberechnung für neuronale Netzwerke mit Schutz gegen Speicherfehler
US20220343153A1 (en) * 2021-04-26 2022-10-27 Micron Technology, Inc. Artificial neural network retraining in memory

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5963929A (en) * 1993-05-28 1999-10-05 Maryland Technology Corporation Recursive neural filters
US8819335B1 (en) 2013-08-30 2014-08-26 NXGN Data, Inc. System and method for executing map-reduce tasks in a storage device
US10324897B2 (en) * 2014-01-27 2019-06-18 Commvault Systems, Inc. Techniques for serving archived electronic mail
US10796223B2 (en) * 2014-02-10 2020-10-06 Mitsubishi Electric Corporation Hierarchical neural network apparatus, classifier learning method and discriminating method
US10116336B2 (en) 2014-06-13 2018-10-30 Sandisk Technologies Llc Error correcting code adjustment for a data storage device
US8942028B1 (en) * 2014-06-16 2015-01-27 Sandisk Technologies Inc. Data reprogramming for a data storage device
CN111079895B (zh) * 2014-10-16 2024-05-28 谷歌有限责任公司 增强具有外部存储器的神经网络
CN106874139A (zh) * 2015-12-10 2017-06-20 联发科技(新加坡)私人有限公司 一种用于错误检查和纠正的编解码方法、装置及处理器
WO2017152990A1 (en) * 2016-03-11 2017-09-14 Telecom Italia S.P.A. Convolutional neural networks, particularly for image analysis
US11080594B2 (en) 2016-05-04 2021-08-03 Deepmind Technologies Limited Augmenting neural networks with external memory using reinforcement learning
WO2017200883A1 (en) 2016-05-17 2017-11-23 Silicon Storage Technology, Inc. Deep learning neural network classifier using non-volatile memory array
US10198215B2 (en) 2016-06-22 2019-02-05 Ngd Systems, Inc. System and method for multi-stream data write
US11907760B2 (en) * 2016-09-23 2024-02-20 Apple Inc. Systems and methods of memory allocation for neural networks
KR102656190B1 (ko) 2016-11-24 2024-04-11 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치의 액세스 방법
US11010431B2 (en) 2016-12-30 2021-05-18 Samsung Electronics Co., Ltd. Method and apparatus for supporting machine learning algorithms and data pattern matching in ethernet SSD
CN110651279B (zh) * 2017-06-28 2023-11-07 渊慧科技有限公司 利用学徒来训练动作选择神经网络
CN109254867B (zh) * 2017-07-14 2021-06-08 上海寒武纪信息科技有限公司 数据冗余方法及装置
US10552251B2 (en) 2017-09-06 2020-02-04 Western Digital Technologies, Inc. Storage of neural networks
CN109697135B (zh) * 2017-10-20 2021-03-26 上海寒武纪信息科技有限公司 存储装置及方法、数据处理装置及方法、电子装置
US11914860B2 (en) * 2018-08-20 2024-02-27 Macronix International Co., Ltd. Data storage for artificial intelligence-based applications
US10691537B2 (en) * 2018-10-12 2020-06-23 Western Digital Technologies, Inc. Storing deep neural network weights in non-volatile storage systems using vertical error correction codes
US11080152B2 (en) * 2019-05-15 2021-08-03 Western Digital Technologies, Inc. Optimized neural network data organization

Also Published As

Publication number Publication date
CN113168562B (zh) 2024-03-26
US20210365333A1 (en) 2021-11-25
US11080152B2 (en) 2021-08-03
US11615003B2 (en) 2023-03-28
CN113168562A (zh) 2021-07-23
WO2020231477A1 (en) 2020-11-19
US20200364118A1 (en) 2020-11-19

Similar Documents

Publication Publication Date Title
DE112019005391T5 (de) Optimierte datenorganisation für neuronale netze
DE112018005505T5 (de) Verfahren und vorrichtung zur spezifikation von lese-spannungsversetzungen für einen lesebefehl
DE102011085989B4 (de) Verfahren und Vorrichtung zum Ausführen von parallelen Speicherlese- und Speicherschreiboperationen
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE102011075814B4 (de) Speicherpuffer mit zugänglicher Information nach einem Schreibfehler
DE102012112354A1 (de) Speichervorrichtung und nichtflüchtige Speichervorrichtung sowie Betriebsverfahren davon
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE112015004536T5 (de) Hardware-Automatisierung für Speicherverwaltung
DE102013109235A1 (de) Flash-Speichersystem mit Detektor für anormale Wortleitung und Verfahren zum Erfassen einer anormalen Wortleitung
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE102013108456B4 (de) Nichtflüchtige Speichervorrichtung und Programmierverfahren
DE102013103391A1 (de) Betriebsverfahren eines Controllers, der eine nichtflüchtige Speichervorrichtung steuert, und Mappingmuster-Auswahlverfahren zum Auswählen eines Mappingmusters, das ein polar codiertes Codewort Multibitdaten einer nichtflüchtigen Speichervorrichtung zuordnet
DE112014005266T5 (de) Verfahren und System zur Forwärtsreferenz-Protokollierung in einem peristenten Datenspeicher
DE102016009807A1 (de) Korrelieren von physikalischen seitenadressen für soft-decision-dekodierung
DE112018002500T5 (de) Speicherarray für Hybriddaten
DE102019134290A1 (de) Verfahren und System zum Verbessern der Leistung einer Speichervorrichtung unter Verwendung einer asynchronen, unabhängigen Ebenenlesefunktionalität
DE112016002305B4 (de) Reduktion der Schreibverstärkung in einem Objektspeicher
DE102013112195A1 (de) Speichercontroller, der Teildaten in einer Speichervorrichtung ändert, sowie Verfahren zum Ändern von Teildaten davon
DE102019127080A1 (de) Speichersystem und Betriebsverfahren dafür
DE112020006053T5 (de) Aktiver eingabe/ausgabe-expander eines speicher-untersystems
DE102020126409A1 (de) Speichervorrichtung zum Speichern von Modellinformationen, die Speichervorrichtung enthaltendes Speichersystem und Betriebsverfahren des Speichersystems
DE102022004129A1 (de) Zurückkopier-lösch-befehl zur durchführung einer scan- und leseoperation in einer speichervorrichtung
DE102021006246A1 (de) Doppelt verschachtelte Programmierung einer Speichervorrichtung in einem Speicher-Untersystem
DE102022209756A1 (de) Speichervorrichtung und speichersystem zum programmieren von daten
DE102021121608A1 (de) Verfahren zum schreiben von daten in eine nicht-flüchtige speichervorrichtung und dieses ausführende nicht-flüchtige speichervorrichtung

Legal Events

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

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

Representative=s name: MEWBURN ELLIS LLP, DE

R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC, SAN JOSE, CALIF., US