DE102017121298A1 - Prozessor in nichtflüchtigem Ablagespeicher - Google Patents

Prozessor in nichtflüchtigem Ablagespeicher Download PDF

Info

Publication number
DE102017121298A1
DE102017121298A1 DE102017121298.1A DE102017121298A DE102017121298A1 DE 102017121298 A1 DE102017121298 A1 DE 102017121298A1 DE 102017121298 A DE102017121298 A DE 102017121298A DE 102017121298 A1 DE102017121298 A1 DE 102017121298A1
Authority
DE
Germany
Prior art keywords
data
nonvolatile memory
processing units
code
lines
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.)
Withdrawn
Application number
DE102017121298.1A
Other languages
English (en)
Inventor
Luis Vitorio Cargnini
Viacheslav Anatolyevich DUBEYKO
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.)
Western Digital Technologies Inc
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 DE102017121298A1 publication Critical patent/DE102017121298A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/24Bit-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

In einem Beispiel enthält ein Computersystem eine Vorrichtung, wobei die Vorrichtung enthält: einen nichtflüchtigen Speicher, der in eine Mehrzahl wählbarer Orte geteilt ist, wobei jedes Bit in dem nichtflüchtigen Speicher dafür konfiguriert ist, entsprechende Daten unabhängig ändern zu lassen, wobei die wählbaren Orte zu einer Mehrzahl von Datenlinien gruppiert sind; und eine oder mehrere Verarbeitungseinheiten, die mit dem nichtflüchtigen Speicher gekoppelt sind, wobei jede der Verarbeitungseinheiten einer Datenlinie der Mehrzahl von Datenlinien zugeordnet ist, und wobei jede der Verarbeitungseinheiten dafür konfiguriert ist, auf der Grundlage von Daten in einer zugeordneten Datenlinie der Mehrzahl von Datenlinien entsprechende Ergebnisse zu berechnen, wobei der nichtflüchtige Speicher dafür konfiguriert ist, auf der Grundlage der entsprechenden Ergebnisse wahlweise Daten an wählbare Orte der zugeordneten Datenlinie zu schreiben, die zum Speichern von Ergebnissen der Berechnung von der Prozesseinheit, die der zugeordneten Datenlinie zugeordnet ist, reserviert ist.

Description

  • HINTERGRUND
  • Speichervorrichtungen, die in allen vorhandenen Vorrichtungen im Verbraucher-, Industrie-, Militär- und Luft- und Raumfahrtgebiet verwendet werden, können aus einem nichtflüchtigen Speicher oder aus einem flüchtigen Speicher bestehen. Der Hauptunterschied zwischen einem nichtflüchtigen Speicher und einem flüchtigen Speicher ist, dass ein nichtflüchtiger Speicher Daten halten kann, ohne eine ständige Leistungsversorgung zu erfordern. Üblicherweise können Daten aus dem nichtflüchtigen Speicher gelesen werden, in einen flüchtigen Speicher übertragen und darin gespeichert werden, daraufhin unter Verwendung von Verarbeitungseinheiten manipuliert werden, woraufhin die Ergebnisse in dem nichtflüchtigen Speicher zurückgespeichert werden. Allgemein kann es erwünscht sein, die Gesamtgeschwindigkeit der obigen Operationen zu erhöhen. Allerdings kann die Geschwindigkeit des Übertragens der Daten aus dem nichtflüchtigen Speicher in den flüchtigen Speicher für die Datenmanipulation durch die Hardwarebandbreite (z. B. durch den Von-Neumann-Engpass, bei dem z. B. die Befehlshol- und die Datenoperation nicht gleichzeitig über einen gemeinsam genutzten Speicherbus stattfinden können) begrenzt sein. Somit besteht ein ständiger Bedarf an einer neuen Verarbeitungseinheit und Speicherarchitektur, um diese Beschränkung zu überwinden.
  • ZUSAMMENFASSUNG
  • In einem Beispiel enthält ein Computersystem eine Vorrichtung, wobei die Vorrichtung enthält: einen nichtflüchtigen Speicher, der in eine Mehrzahl wählbarer Orte geteilt ist, wobei jedes Bit in dem nichtflüchtigen Speicher dafür konfiguriert ist, entsprechende Daten unabhängig ändern zu lassen, wobei die wählbaren Orte zu einer Mehrzahl von Datenlinien gruppiert sind; und eine oder mehrere Verarbeitungseinheiten, die mit dem nichtflüchtigen Speicher gekoppelt sind, wobei jede der Verarbeitungseinheiten einer Datenlinie der Mehrzahl von Datenlinien zugeordnet ist, und wobei jede der Verarbeitungseinheiten dafür konfiguriert ist, auf der Grundlage von Daten in einer zugeordneten Datenlinie der Mehrzahl von Datenlinien entsprechende Ergebnisse zu berechnen, wobei der nichtflüchtige Speicher dafür konfiguriert ist, auf der Grundlage der entsprechenden Ergebnisse wahlweise Daten an wählbare Orte der zugeordneten Datenlinie zu schreiben, die zum Speichern von Ergebnissen der Berechnung von der Prozesseinheit, die der zugeordneten Datenlinie zugeordnet ist, reserviert ist.
  • In einem anderen Beispiel enthält ein Verfahren das Berechnen entsprechender Ergebnisse durch eine bestimmte Verarbeitungseinheit einer oder mehrerer Verarbeitungseinheiten, die mit einem nichtflüchtigen Speicher gekoppelt sind, der in eine Mehrzahl wählbarer Orte geteilt ist, die zu einer Mehrzahl von Datenlinien gruppiert sind, und auf der Grundlage von Daten in einer bestimmten Datenlinie der Mehrzahl von Datenlinien, die der Verarbeitungseinheit zugeordnet ist, wobei jeder wählbare Ort in dem nichtflüchtigen Speicher dafür konfiguriert ist, unabhängig programmiert und gelöscht zu werden, wobei jede Verarbeitungseinheit der Verarbeitungseinheiten einer Datenlinie der Mehrzahl von Datenlinien zugeordnet ist und wobei die eine oder die mehreren Verarbeitungseinheiten und der nichtflüchtige Speicher in demselben Chip enthalten sind. Ferner enthält das Verfahren in diesem Beispiel das wahlweise Ändern von Daten an wählbaren Orten der bestimmten Datenlinie, die zum Speichern von Ergebnissen der Berechnung von der Prozesseinheit, die der bestimmten Datenlinie zugeordnet ist, reserviert ist, auf der Grundlage der entsprechenden Ergebnisse.
  • In einem anderen Beispiel enthält ein Prozessor in einer Speichervorrichtung eine Mehrzahl von Mitteln zum Berechnen entsprechender Ergebnisse auf der Grundlage von Daten in Datenlinien, die jeweils einen oder mehrere wählbare Orte eines nichtflüchtigen Speichers enthalten, der in eine Mehrzahl wählbarer Orte geteilt ist, wobei jeder wählbare Ort in dem nichtflüchtigen Speicher dafür konfiguriert ist, unabhängig programmiert und gelöscht zu werden, wobei jedes der Mehrzahl von Mitteln zum Berechnen einer Datenlinie der Mehrzahl von Datenlinien zugeordnet ist und wobei die Mehrzahl von Mitteln zum Berechnen und der nichtflüchtige Speicher in demselben Chip enthalten sind; und Mittel zum wahlweisen Ändern von Daten an ausgewählten Orten der Datenlinien, die zum Speichern von Ergebnissen der Berechnung von dem Mittel zum Berechnen, die der Datenlinie zugeordnet sind, reserviert sind, auf der Grundlage der entsprechenden Ergebnisse.
  • Die Einzelheiten eines oder mehrerer Beispiele der in dieser Offenbarung beschriebenen Techniken sind in den beigefügten Zeichnungen und in der folgenden Beschreibung dargelegt. Weitere Merkmale, Aufgaben und Vorteile der Techniken gehen aus der Beschreibung und aus den Zeichnungen sowie aus den Ansprüchen hervor.
  • Figurenliste
    • 1 ist ein konzeptioneller und schematischer Blockschaltplan, der ein beispielhaftes System darstellt, das eine Mehrzahl von Prozessoren in nichtflüchtigen Ablagespeichervorrichtungen (PiNVSM-Vorrichtungen) in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung enthält.
    • 2 ist ein Blockschaltplan, der weitere Einzelheiten einer beispielhaften Datenverarbeitungseinheit (DPU) in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt.
    • 3 ist ein Blockschaltplan, der weitere Einzelheiten einer beispielhaften Datenverarbeitungseinheit (DPU) in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt.
    • 4 ist eine konzeptionelle Darstellung, die einen beispielhaften Speicherraum einer PiNVSM-Vorrichtung in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt.
    • 5 ist eine konzeptionelle Darstellung, die eine beispielhafte Datenlinie, die in einer PiNVSM-Vorrichtung in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung enthalten sein kann, darstellt.
    • 6 ist eine konzeptionelle Darstellung, die eine beispielhafte Codelinie, die in einer PiNVSM-Vorrichtung in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung enthalten sein kann, darstellt.
    • 7 ist eine konzeptionelle Darstellung, die eine beispielhafte Anordnung von Datenlinien, die in einer PiNVSM-Vorrichtung enthalten sein können, in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt.
    • 8 ist ein konzeptionelles Diagramm, das eine beispielhafte Codelinie zusammen mit Datenlinien einer PiNVSM-Vorrichtung in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt.
    • 9 ist eine konzeptionelle Darstellung, die eine beispielhafte Codelinie zusammen mit Datenlinien einer PiNVSM-Vorrichtung in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt.
    • 10 ist eine konzeptionelle Darstellung, die eine beispielhafte Codelinie, die mit einer Vorgehensweise der Befehlsverschiebung ausgeführt werden kann, in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt.
    • 11 ist eine konzeptionelle Darstellung, die eine beispielhafte Codelinie, die einen Sprung enthält, in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt.
    • 12 ist eine konzeptionelle Darstellung, die eine optimierte Datenlinie einer nichtflüchtigen Ablagevorrichtung in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt.
    • 13 ist eine konzeptionelle Darstellung, die einen beispielhaften Speicherraum einer nichtflüchtigen Ablagevorrichtung in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt.
    • 14 ist eine konzeptionelle Darstellung, die eine beispielhafte Warteschlange, die durch eine Managementeinheit unterhalten werden kann, in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt.
    • 15 ist ein Ablaufplan, der eine beispielhafte Technik zum Unterhalten einer Warteschlange einer Befehlssatz-Nutzungshäufigkeit in einer nichtflüchtigen Ablagevorrichtung in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt.
    • 16 ist eine konzeptionelle Darstellung, die eine Warteschlangenunterhaltung in einer DPU in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt.
    • 17 ist eine konzeptionelle Darstellung, die die Optimierung einer Datenlinie einer nichtflüchtigen Ablagevorrichtung in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt.
    • 18 ist eine konzeptionelle Darstellung, die durch eine PiNVSM-Vorrichtung gespeicherte Datentypen in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt.
    • 19 ist ein Ablaufplan, der eine beispielhafte Technik zum Manipulieren von Daten in einer PiNVSM-Vorrichtung in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt.
    • 20 ist ein Ablaufplan, der eine beispielhafte Technik zum Manipulieren von Daten in einer PiNVSM-Vorrichtung in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung wird eine Computerarchitektur vorgeschlagen, in der eine Verarbeitungseinheit eine beständige Datenablage enthält und Daten an der Stelle verarbeiten kann. Zum Beispiel kann ein Prozessor in einer nichtflüchtigen Ablagespeichervorrichtung (PiNVSM-Vorrichtung) in einem Chip in der Lage sein, große Mengen von Daten beständig zu speichern und die beständig gespeicherten Daten an der Stelle zu verarbeiten. Da sowohl die eine oder die mehreren Verarbeitungseinheiten als auch der NVSM in demselben Chip enthalten sind, kann die Rate, mit der die eine oder die mehreren Verarbeitungseinheiten auf durch den NVSM gespeicherte Daten zugreifen kann, (d. h. die Latenzzeit) verringert werden. Zur Veranschaulichung kann eine PiNVSM-Vorrichtung ein einzelner Halbleiterchip sein und kann sie eine Datenverarbeitungseinheit enthalten, die mit einer zugeordneten Speicherunteranordnung eines nichtflüchtigen Speichers verbunden ist. Ein PiNVSM-System kann eine Mehrzahl von PiNVSM-Vorrichtungen enthalten, die in verschiedenen Konfigurationen über verschiedene Kommunikationsbusse oder Kommunikationskanäle (verdrahtet oder drahtlos) miteinander verbunden sind. Auf diese Weise kann eine PiNVSM-Vorrichtung Speicherbandbreiten-Begrenzungsprobleme wie etwa den Von-Neumann-Engpass vermeiden.
  • Durch die PiNVSM-Vorrichtung können mathematische Rechenoperationen und/oder logische Operationen unter Verwendung der mathematischen Rechenfunktionalität und/oder Logikfunktionalität unter Verwendung einer oder mehrerer Verarbeitungseinheiten ausgeführt werden. In einigen Beispielen enthält die PiNVSM-Vorrichtung eine oder mehrere Arithmetik-Logik-Einheiten (ALUs). Wie im Folgenden ausführlicher diskutiert wird, können die ALUs jeweils dafür konfiguriert sein, Ganzzahlarithmetik- und Logikoperationen (z. B. UND, NAND, ODER, NOR, XOR, NICHT) auszuführen. In einigen Beispielen kann die PiNVSM-Vorrichtung eine oder mehrere Gleitkommaeinheiten (FPUs) enthalten, die jeweils dafür konfiguriert sein können, nicht ganzzahlige Berechnungen wie etwa Divisionsoperationen, die einen Bruch oder eine „Gleitkomma“-Zahl erzeugen können, auszuführen. In einigen Beispielen kann die PiNVSM-Vorrichtung sowohl eine oder mehrere Verarbeitungseinheiten (PU) als auch eine oder mehrere frei programmierbare logische Anordnungen (FPGAs) enthalten. In einigen Ausführungsformen können Verarbeitungseinheiten in Hardware vorgefertigt sein, um spezifische Berechnungen oder Datenmanipulationen auszuführen. Zum Beispiel können die Verarbeitungseinheiten (wie etwa ASICs) nur mit einer spezifischen Schaltungslogik vorgefertigt sein, um eine spezifische Berechnung auszuführen. Alternativ können Verarbeitungseinheiten programmierbare Verarbeitungseinheiten sein, die im Nutzerbereich programmiert werden können, um auf der Grundlage von Ausführungscodes Berechnungen oder Datenmanipulationen auszuführen. Diese Verarbeitungseinheiten können z. B. FPGAs, programmierbare ALUs usw. enthalten.
  • In dem NVSM kann das Programmieren und Löschen von Daten auf einer Ebene wählbarer Orte ausgeführt werden. Zum Beispiel kann der NVSM in eine Mehrzahl wählbarer Orte geteilt sein und können die Verarbeitungseinheiten in der Lage sein, an einem bestimmten wählbaren Ort der mehreren wählbaren Orte Daten zu programmieren oder zu löschen, ohne an anderen wählbaren Orten der mehreren wählbaren Orte gespeicherte Daten zu ändern. Einige Beispiele für einen NVSM enthalten einen magnetoresistiven Schreib-Lese-Speicher (MRAM), einen ferroelektrischen Schreib-Lese-Speicher (FeRAM), einen NRAM, einen resistiven Schreib-Lese-Speicher (ReRAM), einen Phasenwechselspeicher (PCM), einen Mott-Speicher und dergleichen, sind aber nicht notwendig darauf beschränkt.
  • In einigen Beispielen können die wählbaren Orte adressierbare Orte sein. Zum Beispiel kann jeder der wählbaren Orte eine eindeutige numerische Adresse besitzen und können Daten an einem bestimmten adressierbaren Ort über eine eindeutige Adresse des bestimmten adressierbaren Orts adressiert/gelesen/geschrieben werden. In einigen Beispielen kann auf Daten an einem bestimmten adressierbaren Ort über ein Zugriffssystem zugegriffen werden/können sie über dieses gelesen werden/geschrieben werden.
  • Im Betrieb können eine oder mehrere Verarbeitungseinheiten einer PiNVSM-Vorrichtung eine Datenmanipulation auf der Grundlage von Daten an ausgewählten Orten eines nichtflüchtigen Speichers der PiNVSM-Vorrichtung ausführen, entsprechende Ergebnisse der Datenmanipulation erzeugen und veranlassen, dass der nichtflüchtige Speicher Daten an wählbaren Orten, die zum Speichern von Ergebnissen der Datenmanipulation auf der Grundlage der entsprechenden Ergebnisse reserviert sind, wahlweise programmiert und löscht. Während die Programmierung und die Löschung von Daten auf der Ebene wählbarer Orte ausgeführt werden können, können die eine oder die mehreren Verarbeitungseinheiten veranlassen, dass der nichtflüchtige Speicher Daten an wählbaren Orten, die zum Speichern von Ergebnissen der Datenmanipulation reserviert sind, wahlweise programmiert und löscht, ohne an anderen wählbaren Orten als den zum Speichern von Ergebnissen der Datenmanipulation reservierten wählbaren Orten gespeicherte Daten zu ändern.
  • Wie oben diskutiert wurde, kann eine PiNVSM-Vorrichtung eine oder mehrere Verarbeitungseinheiten enthalten. Zum Beispiel kann eine PiNVSM-Vorrichtung eine oder mehrere dedizierte Verarbeitungseinheiten enthalten, die beliebige Operationen ausführen können. Beispiele dedizierter Verarbeitungseinheiten enthalten Arithmetik-Logik-Einheiten (ALUs), Verarbeitungseinheiten (PU), frei programmierbare logische Anordnungen (FPGA), vollständig kundenangepasste Logik und Gleitkommaeinheiten (FPUs), sind aber nicht notwendig darauf beschränkt.
  • In einigen Beispielen kann der nichtflüchtige Speicherraum von Datenlinien und Codelinien gemeinsam genutzt werden. Im Allgemeinen kann eine Datenlinie Nutzerdaten enthalten. Eine Codelinie kann einen Befehlssatz (d. h. ein Softwareprimitiv, Ausführungscode) enthalten, der zur Manipulation von Datenlinien verwendet werden kann. Jede der Datenlinien kann einen oder mehrere wählbare Orte enthalten und kann einer Verarbeitungseinheit zugeordnet sein. Mit anderen Worten, die wählbaren Orte des nichtflüchtigen Speichers können zu einer Mehrzahl von Datenlinien gruppiert sein. In einigen Beispielen kann ein bestimmter wählbarer Ort zu irgendeinem gegebenen Zeitpunkt nur in einer einzigen Datenlinie gruppiert sein. Somit kann die PiNVSM-Vorrichtung in einigen Beispielen eine eindeutige Abbildung zwischen wählbaren Orten und Datenlinien (oder Codelinien) besitzen, so dass ein einziger wählbarer Ort nicht gleichzeitig in zwei Datenlinien (oder zwei Codelinien) enthalten ist.
  • In einigen Beispielen kann die Gruppierung wählbarer Orte in Datenlinien im Zeitverlauf einstellbar sein. Zum Beispiel kann zu einem ersten Zeitpunkt eine erste Gruppe wählbarer Orte einer Mehrzahl wählbarer Orte einer bestimmten Datenlinie zugeordnet sein, die einer bestimmten Verarbeitungseinheit zugeordnet ist. Zu einem zweiten Zeitpunkt kann eine zweite Gruppe wählbarer Orte der Mehrzahl wählbarer Orte einer bestimmten Datenlinie zugeordnet sein. Die zweite Gruppe wählbarer Orte kann anders als die erste Gruppe wählbarer Orte sein (d. h. einen wählbaren Ort enthalten, der in der ersten Gruppe nicht enthalten ist, und/oder einen wählbaren Ort, der in der ersten Gruppe enthalten ist, weglassen).
  • Im Betrieb kann der Befehlssatz verwendet werden, um Datenlinien mit variierenden Häufigkeiten zu manipulieren. Zum Beispiel kann ein erster Befehlssatz verwendet werden, um eine Datenlinie zweimal so häufig wie ein zweiter Befehlssatz zu manipulieren. Somit kann es erwünscht sein, dass die PiNVSM-Vorrichtung in der Lage ist, Daten auf der Grundlage der am häufigsten verwendeten Befehlssätze mit einer höheren Rate und/oder mit einem niedrigeren Leistungsverbrauch als auf der Grundlage weniger häufig verwendeter Befehlssätze zu manipulieren.
  • Zusätzlich kann eine PiNVSM-Vorrichtung in Übereinstimmung mit verschiedenen Aspekten der in dieser Offenbarung beschriebenen Techniken eine oder mehrere programmierbare Verarbeitungseinheiten enthalten, die dafür programmiert sind, Daten unter Verwendung der am häufigsten verwendeten Befehlssätze zu manipulieren. Zum Beispiel kann die PiNVSM-Vorrichtung die eine oder die mehreren programmierbaren Verarbeitungseinheiten dafür programmieren, Daten unter Verwendung des bestimmten Befehlssatzes zu manipulieren, wo ein bestimmter Befehlssatz der am häufigsten verwendete Befehlssatz ist. Während des Betriebs können die eine oder die mehreren programmierbaren Verarbeitungseinheiten Daten unter Verwendung des bestimmten Befehlssatzes manipulieren. Auf diese Weise kann die nichtflüchtige Speichervorrichtung in der Lage sein, Daten auf der Grundlage der am häufigsten verwendeten Befehlssätze mit einer höheren Rate und/oder mit einem niedrigeren Leistungsverbrauch als auf der Grundlage weniger häufig verwendeter Befehlssätze zu manipulieren.
  • Die Nutzungshäufigkeit der Befehlssätze kann im Zeitverlauf nicht gleichbleibend sein. Zum Beispiel kann ein erster Befehlssatz zu einem ersten Zeitpunkt eine höhere Nutzungshäufigkeit als ein zweiter Befehlssatz besitzen, während ein zweiter Befehlssatz zu einem zweiten Zeitpunkt eine höhere Nutzungshäufigkeit als der erste Befehlssatz besitzen kann. In Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung kann die Programmierung der einen oder mehreren programmierbaren Verarbeitungseinheiten adaptiv sein. Zum Beispiel kann die PiNVSM-Vorrichtung die Nutzungshäufigkeit mehrerer Befehlssätze überwachen und die eine oder die mehreren programmierbaren Verarbeitungseinheiten periodisch neu programmieren, um Daten unter Verwendung der aktuell am häufigsten verwendeten Befehlssätze zu manipulieren. Auf diese Weise kann sich die PiNVSM-Vorrichtung selbst optimieren.
  • 1 ist ein konzeptioneller und schematischer Blockschaltplan, der ein beispielhaftes System darstellt, das eine Mehrzahl von Prozessoren in nichtflüchtigen Ablagespeichervorrichtungen (PiNVSM-Vorrichtungen) in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung enthält. Zur Veranschaulichung kann eine PiNVSM-Vorrichtung ein einzelner Halbleiterchip sein und eine Datenverarbeitungseinheit enthalten, die mit einer zugeordneten Speicherunteranordnung eines nichtflüchtigen Speichers verbunden ist. Wie in 1 gezeigt ist, kann das Computersystem 5 eine oder mehrere Datenverarbeitungseinheiten (DPUs) 38A-38D (zusammen „DPUs 38“), einen oder mehrere Router 40A-40I (zusammen „Router 40“), eine Eingabeschnittstelle 42 und eine Ausgabeschnittstelle 44 enthalten. In einigen Beispielen kann das Computersystem 5 ein selbstständiges Computersystem sein, in dem keine getrennte Hostvorrichtung vorhanden ist. Das Computersystem 5 kann z. B. nicht einer herkömmlichen Von-Neumann-Architektur folgen.
  • Die Eingabeschnittstelle 42 kann dafür konfiguriert sein, Eingangsdaten zu erhalten. Die Eingabeschnittstelle 42 kann z. B. digitale Audiodaten, digitale Videodaten, Textdaten (d. h. über eine Tastatur eingegebene Daten), Positionsdaten (d. h. über eine Maus eingegebene Daten) und irgendeinen anderen Typ digitaler Daten erhalten.
  • Die Ausgabeschnittstelle 44 kann zum Bereitstellen von Ausgangsdaten konfiguriert sein. Die Ausgabeschnittstelle 44 kann z. B. digitale Audiodaten, digitale Videodaten, eine oder mehrere Managementtätigkeiten und irgendeinen anderen Typ von Ausgangsdaten ausgeben.
  • Die Router 40 können jeweils dafür konfiguriert sein, Daten im Computersystem 5 zu lenken. In einigen Beispielen können die Router 40 eine Network-on-Chip-Architektur (NoC-Architektur) wie etwa die in der US-Patentanmeldung Nr. 14/922.547 mit dem Titel „Fabric Interconnection for Memory Banks Based on Network-On-Chip Methodology“, eingereicht am 26. Oktober 2015, und/oder in der US-Patentanmeldung Nr. 14/927.670 mit dem Titel „Multilayer 3D Memory Based on Network-On-Chip Interconnection“, eingereicht am 27. Oktober 2015, diskutierte NoC-Architektur bilden. Wie in 1 gezeigt ist, können die Router 40 über Drähte, Leiterbahnen oder irgendein anderes leitfähiges Mittel miteinander verbunden sein. Die Router 40 können Daten und/oder Befehle in dem Computersystem 5 lenken. Zum Beispiel können die Router 40 den Transport/die Übertragung, den Austausch von Daten und/oder Befehlen zwischen den DPUs 38, der Eingabeschnittstelle 42 und/oder der Ausgabeschnittstelle 44 ermöglichen. Dadurch, dass eine NoC-Architektur ermöglicht wird, können die Router 40 eine Verringerung der Größe des Computersystems 5 ermöglichen (d. h., während getrennte Leiterbahnen zwischen Komponenten beseitigt werden können).
  • Die DPUs 38 können jeweils zum Speichern und Verarbeiten von Daten konfiguriert sein. Die DPUs 38 können eine Mehrzahl von PiNVSM-Vorrichtungen enthalten, in denen jede der DPUs 38 eine oder mehrere Verarbeitungseinheiten und eine nichtflüchtige Speicheranordnung enthalten kann. Zur Veranschaulichung kann eine PiNVSM-Vorrichtung ein einzelner Halbleiterchip sein und eine Datenverarbeitungseinheit enthalten, die mit einer zugeordneten Speicherunteranordnung eines nichtflüchtigen Speichers verbunden ist. Im Folgenden sind weitere Einzelheiten einer beispielhaften DPU der DPUs 38 anhand von 2 weiter diskutiert.
  • Im Betrieb können die Verarbeitungseinheiten der DPUs 38 auf der Grundlage von Daten an ausgewählten Orten der in den DPUs 38 enthaltenen NVMA eine Datenmanipulation ausführen, um entsprechende Ergebnisse der Datenmanipulation zu erzeugen. Zum Beispiel kann jede der in den DPUs 38 enthaltenen Verarbeitungseinheiten dafür konfiguriert sein, Ergebnisse für Daten in zugeordneten Datenlinien zu berechnen. Als ein Beispiel kann eine bestimmte in einer DPU der DPUs 38 enthaltene Verarbeitungseinheit dafür konfiguriert sein, Ergebnisse für Daten in einer der bestimmten Verarbeitungseinheit zugeordneten Datenlinie zu berechnen. Die Ergebnisse der Berechnung können in den zugeordneten Datenlinien gespeichert werden, die für die Ergebnisse reserviert sind. Für die Berechnung verwendete Anfangsdaten werden nur überschrieben, wenn sie speziell für Überschreibvorgänge bestimmt sind. Die Verarbeitungseinheiten können veranlassen, dass in den DPUs 38 enthaltene NVMAs wahlweise Daten auf der Grundlage der entsprechenden Ergebnisse an wählbaren Orten, die zum Speichern von Ergebnissen der Datenmanipulation reserviert sind, programmieren und löschen. Zum Beispiel kann jede der in den DPUs 38 enthaltenen Verarbeitungseinheiten dafür konfiguriert sein, auf der Grundlage der entsprechenden Ergebnisse wahlweise Daten in einen Ergebnisabschnitt einer zugeordneten Datenlinie zu schreiben. Als ein Beispiel kann eine bestimmte in einer DPU der DPUs 38 enthaltene Verarbeitungseinheit dafür konfiguriert sein, Ergebnisse in einem Ergebnisabschnitt einer der bestimmten Verarbeitungseinheit zugeordneten Datenlinie zu speichern.
  • In einigen Beispielen können die Verarbeitungseinheiten die Datenmanipulation auf der Grundlage von Befehlssätzen wie etwa eines Ausführungscodes ausführen. Wie im Folgenden diskutiert wird, werden die Befehlssätze in einigen Beispielen durch DPUs 38 als Codelinien wie etwa als Codelinie 12A aus 3 gespeichert. In einigen Beispielen kann der Ausführungscode in jeder der Codelinien eine Folge von Befehlen enthalten. In einigen Beispielen kann eine Managementeinheit dafür konfiguriert sein, die Befehlssätze zu erhalten.
  • Da die Befehlssätze, wie im Folgenden diskutiert wird, dafür verwendet werden können, Datenlinien mit veränderlichen Häufigkeiten zu manipulieren, kann es erwünscht sein, dass DPUs 38 in der Lage sind, Daten auf der Grundlage der am häufigsten verwendeten Befehlssätze mit einer höheren Rate und/oder mit weniger Leistungsverbrauch als auf der Grundlage weniger häufig verwendeter Befehlssätze zu manipulieren.
  • In Übereinstimmung mit einer oder mehreren Techniken der Offenbarung können eine oder mehrere in den DPUs 38 enthaltene programmierbare Verarbeitungseinheiten dafür programmiert werden, Daten unter Verwendung der am häufigsten verwendeten Befehlssätze zu manipulieren. Beispiele für programmierbare Verarbeitungseinheiten, die in den DPUs 38 enthalten sein können, enthalten FPGAs, Nachschlagetabellen, Vektoren für die Vektorverarbeitung, ASICs, Logikblöcke (z. B. einen einfachen Addierer oder einen Gaußschen Mischblock, mehr oder weniger spezialisierte Blöcke), die Daten auf eine spezifische Weise manipulieren (wobei es z. B. mehrere Blöcke geben kann und die Programmierung das Aktivieren der Blöcke, die die programmierte Funktion ausführen, und das Abschalten anderer Blöcke, d. h. das Erhöhen der Leistungsfähigkeit und das Steuern des Leistungsverbrauchs, umfasst), und irgendeine ähnliche Struktur, die dafür programmiert oder konfiguriert sein kann, Daten auf eine bestimmte Weise zu manipulieren, sind darauf aber nicht beschränkt. Auf diese Weise können die DPUs 38 Daten auf der Grundlage der am häufigsten verwendeten Befehlssätze mit einer höheren Rate und/oder mit einem niedrigeren Leistungsverbrauch als auf der Grundlage weniger häufig verwendeter Befehlssätze manipulieren.
  • Die Nutzungshäufigkeit der Befehlssätze kann im Zeitverlauf nicht gleichbleibend sein. Zum Beispiel kann ein erster Befehlssatz zu einem ersten Zeitpunkt eine höhere Nutzungshäufigkeit als ein zweiter Befehlssatz besitzen, während der zweite Befehlssatz zu einem zweiten Zeitpunkt eine höhere Nutzungshäufigkeit als der erste Befehlssatz besitzen kann. In Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung kann die Programmierung der einen oder mehreren programmierbaren Verarbeitungseinheiten der DPUs 38 adaptiv sein. Zum Beispiel kann eine Managementeinheit jeder der DPUs 38 die Nutzungshäufigkeit mehrerer Befehlssätze (d. h., wie häufig die DPUs 38 die Befehlssätze verwenden) überwachen und die eine oder die mehreren programmierbaren Verarbeitungseinheiten periodisch neu programmieren, um Daten unter Verwendung der aktuell am häufigsten verwendeten Befehlssätze zu manipulieren. Auf diese Weise können sich die DPUs 38 selbst optimieren. Weitere Einzelheiten der Optimierung werden im Folgenden anhand von 12 diskutiert.
  • In einigen Beispielen kann das Computersystem 5 eine Warteschlange (oder mehrere Warteschlangen, die In-der-Reihenfolge-Warteschlangen oder Außer-der-Reihenfolge-Warteschlangen sein können) unterhalten, die für jeweilige Befehlssätze einen jeweiligen Nutzungswert enthält, der eine relative Häufigkeit angibt, mit der der jeweilige Befehlssatz zum Manipulieren von Daten verwendet wird, um zu bestimmen, welche der Befehlssätze am häufigsten zum Manipulieren der Daten verwendet werden. Die Managementeinheit kann zur Programmierung der einen oder mehreren programmierbaren Verarbeitungseinheiten der DPUs 38 eine Gruppe von Befehlssätzen aus der Warteschlange mit den höchsten jeweiligen Nutzungswerten als die am häufigsten verwendeten Befehlssätze auswählen. Weitere Einzelheiten eines Beispiels der Warteschlange werden im Folgenden anhand von 13-17 diskutiert.
  • In einigen Beispielen kann es länger dauern, dass eine dedizierte Verarbeitungseinheit einer oder mehrerer dedizierter Verarbeitungseinheiten der DPUs 38 Daten auf der Grundlage eines bestimmten Befehlssatzes manipuliert, als es dauert, bis eine programmierbare Verarbeitungseinheit einer oder mehrerer programmierbarer Verarbeitungseinheiten der DPUs 38 Daten auf der Grundlage desselben bestimmten Befehlssatzes manipuliert. In einigen Beispielen wie etwa in Globally-Asynchronous-Locally-Synchronous-Vorrichtungen (GaLs-Vorrichtungen) kann die Zeit nicht deterministisch sein und nicht über die mehreren Verarbeitungseinheiten synchronisiert sein.
  • 2 ist ein Blockschaltplan, der weitere Einzelheiten einer der beispielhaften Verarbeitungseinheit (DPU) in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt. Die DPU 38A1 in 2 kann ein Beispiel der DPU 38A aus 1 sein. Wie in 2 gezeigt ist, enthält die DPU 38A1 Arithmetik-Logik-Einheiten (ALUs) 50A-50F (zusammen „ALUs 50“), nichtflüchtige Speicheranordnungen (NVMAs) 52A-52F (zusammen „NVMAs 52“), NVMAs 54A und 54B (zusammen „NVMAs 54“) und die Managementeinheit 56. Zur Veranschaulichung kann eine PiNVSM-Vorrichtung ein einzelner Halbleiterchip sein und kann sie eine Datenverarbeitungseinheit (wie etwa eine der ALUs 50A-50F) enthalten, die mit einer zugeordneten Speicherunteranordnung des nichtflüchtigen Speichers (wie etwa mit einer der zugeordneten NVMAs 52A-52F) verbunden ist.
  • Die Managementeinheit 56 kann dafür konfiguriert sein, den Betrieb einer oder mehrerer Komponenten der DPU 38A1 zu steuern. Wie in 2 gezeigt ist, kann die Managementeinheit 56 den Betrieb der ALUs 50, der NVMAs 52 und der NVMAs 54 steuern. Die Managementeinheit 56 kann mit einer oder mehreren Komponenten, die extern gegenüber der DPU 38A1 sind, wie etwa mit einem Router 40A aus 1 kommunizieren.
  • Die NVMAs 52 können jeweils eine Anordnung eines nichtflüchtigen Speichers repräsentieren, der an dem wählbaren Ort programmiert und gelöscht werden kann, ohne an anderen wählbaren Orten gespeicherte Daten zu ändern. In einigen Beispielen können die NVMAs 52 irgendeinen Typ einer nichtflüchtigen Speichervorrichtung enthalten, die eine Programmierung und Löschung auf der Ebene eines wählbaren Orts ausführen kann, ohne auf anderen wählbaren Ebenen gespeicherte Daten zu ändern. Zum Beispiel kann jedes Bit in den NVMAs 52 unabhängig zu ändern sein, ohne in anderen Bits in den NVMAs 52 gespeicherte Daten zu ändern. Das heißt, die NVMAs 52 können dafür konfiguriert sein, in normalen Operationen eine „0“ oder eine „1“ irgendeines einzelnen Bits zu schreiben (oder den Speicherzustand zu ändern), ohne irgendein anderes Bit, auf das zugegriffen werden kann, zu ändern. In einigen Granularitäten können NVMAs 52 dafür konfiguriert sein, Byteweise änderbar, Wort-weise änderbar, Doppelwort-weise änderbar, Quadwort-weise änderbar usw. zu sein. Dies ermöglicht effektiv, dass Daten der NVMAs 52 in irgendeiner Granularität bis auf den Ort eines einzelnen Bits überschrieben werden, ohne dass zunächst ein gesamter Block von Bits (wie in einem herkömmlichen Flash-Speicher) „gelöscht“ werden muss. In einigen Beispielen können NVMAs 52 ein Ablageklassenspeicher sein. Einige Beispiele für NVMAs 52 enthalten Phasenwechselspeichervorrichtungen (PCM-Vorrichtungen), resistive Schreib-Lese-Speichervorrichtungen (ReRAM-Vorrichtungen), magnetoresistive Schreib-Lese-Speichervorrichtungen (MRAM-Vorrichtungen), einen ferroelektrischen Schreib-Lese-Speicher (FeRAM), holographische Speichervorrichtungen und irgendeinen anderen Typ nichtflüchtiger Speichervorrichtungen, in die auf einer Ortsebene geschrieben werden kann, ohne auf anderen wählbaren Ebenen gespeicherte Daten zu ändern, sind darauf aber nicht beschränkt.
  • In einigen Beispielen können die NVMAs 52 und 54 mehrere Ebenen der Granularität verwenden, um auf Daten zuzugreifen (d. h. ohne die Notwendigkeit, feste Seitengrößen zu haben). Zum Beispiel können die NVMAs 52 und 54 an jedem der wählbaren Orte mit Seiten, ohne Seiten, mit 4k-, 6k-, 18k-Datenblöcken usw. oder 64 Bytes, 128 Bytes, 256 Bytes gleichzeitig arbeiten. In einigen Beispielen kann eine NVMA der NVMAs 52 oder 54 ihre interne Organisation während des Betriebs ändern. Zum Beispiel kann eine NVMA der NVMAs 52 und 54 an jedem der wählbaren Orte Partitionen ändern, die Bankorganisation, die Datenlinienzuordnung, den adressierbaren Bereich, den Bereich, auf den zugegriffen werden kann, und/oder die Blockgröße ändern.
  • Die NVMAs 54 können jeweils eine Anordnung eines nichtflüchtigen Speichers repräsentieren, die auf der Ebene wählbarer Orte programmiert und gelöscht werden kann, ohne an anderen wählbaren Orten gespeicherte Daten zu ändern. In einigen Beispielen können NVMAs 54 als eine Ausführungsförderungseinrichtung verwendet werden.
  • Die ALUs 50 können dafür konfiguriert sein, in den NVMAs 52 gespeicherte Daten zu manipulieren. Zum Beispiel kann jede jeweilige ALU der ALUs 50 dafür konfiguriert sein, Daten in einer entsprechenden NVMA der NVMAs 52 zu manipulieren. Insbesondere kann die ALU 50A dafür konfiguriert sein, Daten in der NVMA 52A zu manipulieren, kann die ALU 50B dafür konfiguriert sein, Daten in der NVMA 52B zu manipulieren, ..., und kann die ALU 50F dafür konfiguriert sein, Daten in der NVMA 52F zu manipulieren. In einigen Beispielen kann jede ALU der ALUs 50 eine elementare ALU sein.
  • Die horizontal schraffierten Pfeile in Fig. 2 können einen Management- und Ausführungsablauf unter den Komponenten der DPU 38A1 repräsentieren. Ähnlich können die diagonal schraffierten Pfeile in 2 Befehlssatzabläufe unter den Komponenten der DPU 38A1 repräsentieren.
  • 3 ist ein Blockschaltplan, der weitere Einzelheiten einer beispielhaften Datenverarbeitungseinheit (DPU) in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt. Die DPU 38A2 in 3 kann ein weiteres Beispiel der DPU 38A aus 1 sein. Die DPU 38A2 enthält ähnlich der DPU 38A1 ALUs 50, NVMAs 52 und eine Managementeinheit 56. Außerdem enthält die DPU 38A2 eine erste Mehrzahl von Routern 58A-58F (zusammen „Router 58“) und eine zweite Mehrzahl von Routern 60A-60F (zusammen „Router 60“). Wie in 13 gezeigt ist, kann die DPU 38A2 keine NVMAs 54 enthalten.
  • Die Router 58 und die Router 60 können als ein Network on Chip (NoC) in der DPU 38A2 fungieren, um Daten zwischen Komponenten der DPU 38A2 zu verschieben. Zum Beispiel können die Router 58 und die Router 60 Daten zwischen ALUs 50 und/oder NVMAs 52 verschieben. In einigen Beispielen können Router 58 und Router 60 in Übereinstimmung mit verschiedenen Prioritäten in verschiedenen Kanälen und/oder verschiedenen Betriebsprotokollen oder Betriebshäufigkeiten arbeiten.
  • Ähnlich dem Beispiel aus Fig. 2 können die horizontal schraffierten Pfeile in 3 einen Management- und Ausführungsablauf unter den Komponenten der DPU 38A2 repräsentieren und können die diagonal schraffierten Pfeile in 3 Befehlssatzabläufe unter den Komponenten der DPU 38A2 repräsentieren.
  • 4 ist eine konzeptionelle Darstellung, die einen beispielhaften Speicherraum einer PiNVSM-Vorrichtung in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt. Wie in 4 gezeigt ist, enthält der Speicherraum 8 Codelinien 10A-10D (zusammen „Codelinien 10“) und Datenlinien 12A-12L (zusammen „Datenlinien 12“). Wie oben diskutiert wurde, können die Datenlinien 12 jeweils einige Nutzerdaten enthalten. Zum Beispiel kann jede Datenlinie der Datenlinien 12 eine Anordnung von Datenelementen mit zugeordneten Operationen sein. Wie oben ebenfalls diskutiert wurde, können die Codelinien 10 jeweils einen Befehlssatz (d. h. ein Softwareprimitiv, Ausführungscode), der für die Manipulation von Nutzerdaten der Datenlinien 12 verwendet werden kann, enthalten. Mit anderen Worten, eine Codelinie der Codelinien 10 kann eine Folge von Operationen mit der vorbereiteten Umgebung, die für die Umwandlung von Nutzerdaten von Datenlinien 12 verwendet werden kann, sein.
  • In einigen Beispielen kann Code einfach als Daten gespeichert sein und als eine Datenlinie behandelt werden. Ansonsten kann der Code an einen bestimmten Ort (z. B. an einen speziellen Platz oder z. B. an eine spezielle Ausführungsförderungseinrichtung), der als eine Folge von Befehlen (Codelinie 10) behandelt wird, kopiert werden. Nachdem eine Codelinie der Codelinien 10 zum Manipulieren von Daten verwendet worden ist, kann sie in eine Datenlinie von Datenlinien 12, die Ergebnisse der Datenmanipulation und/oder ausführbaren Code speichern, umgewandelt werden.
  • 5 ist eine konzeptionelle Darstellung, die eine beispielhafte Datenlinie, die in einer PiNVSM-Vorrichtung enthalten sein kann, in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt. Wie in 5 gezeigt ist, enthält die Datenlinie 12A einen Datenabschnitt 14 und einen Ergebnisabschnitt 16. Der Datenabschnitt 14 kann einem oder mehreren wählbaren Orten einer PiNVSM-Vorrichtung, die Daten speichern, wie etwa einem oder mehreren wählbaren Orten einer NVMA der NVMAs 52 aus 2 entsprechen. Der Ergebnisabschnitt 16 kann einem oder mehreren wählbaren Orten der nichtflüchtigen Speichervorrichtung, die Ergebnisse der Manipulation von Daten wie etwa in dem Datenabschnitt 14 gespeicherte Daten speichern, entsprechen. Die Datenlinie 12A kann eine logische Struktur sein und die wählbaren Orte des Datenabschnitts 14 und/oder des Ergebnisabschnitts 16 können zusammenhängend oder nicht zusammenhängend angeordnet sein (d. h. mit anderen Worten, können aufeinanderfolgende physikalische Adressen besitzen oder nicht besitzen). Die wählbaren Orte, die dem Datenabschnitt 14 entsprechen, und die wählbaren Orte, die dem Ergebnisabschnitt 16 entsprechen, können als in der Datenlinie 12A gruppiert angesehen werden.
  • 6 ist eine konzeptionelle Darstellung, die eine beispielhafte Codelinie, die in einer PiNVSM-Vorrichtung enthalten sein kann, in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt. Wie in 6 gezeigt ist, enthält die Codelinie 10A einen Codeabschnitt 18, einen Heap-Abschnitt 20 und einen Stapelabschnitt 22. Der Codeabschnitt 18 kann einem oder mehreren wählbaren Orten einer nichtflüchtigen Speichervorrichtung, die einen Befehlssatz (z. B. ein Softwareprimitiv) speichern, der zum Manipulieren von Daten verwendet werden kann, entsprechen. Der Heap-Abschnitt 20 und der Stapelabschnitt 22 können jeweils einem oder mehreren wählbaren Orten einer nichtflüchtigen Speichervorrichtung, die während der Datenmanipulation als ein Heap und als ein Stapel verwendet werden, entsprechen. Die Codelinie 10A kann eine logische Struktur sein und die wählbaren Orte des Codeabschnitts 18, des Heap-Abschnitts 20 und/oder des Stapelabschnitts 22 können zusammenhängend angeordnet sein oder nicht (d. h. mit anderen Worten, diese Abschnitte 18-22 können oder können nicht an Speicherorten mit aufeinanderfolgenden physikalischen Adressen gespeichert sein).
  • 7 ist eine konzeptionelle Darstellung, die eine beispielhafte Anordnung von in einer PiNVSM-Vorrichtung enthaltenen Datenlinien in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt. In einigen Beispielen können eine Mehrzahl von Datenlinien eine Datenbanktabelle wie etwa die folgende Tabelle 1 bilden, in der Werte in der Datenbanktabelle in Datenabschnitten der Datenlinien gespeichert werden und Ergebnisse von Operationen an den Werten der Datenbanktabelle in einem Ergebnisabschnitt der Datenlinien gespeichert werden. Tabelle 1
    Waren Nr. 1 Waren Nr. 2 Waren Nr. 3 Summe
    Datum Nr. 1 4 5 6 15
    Datum Nr. 2 1 2 8 11
    Datum Nr. 3 10 2 12 24
    Summe 15 9 26
  • Wie in dem Beispiel aus 7 gezeigt ist, bilden die Datenlinien 12A-12C Spalten und bilden die Datenlinien 12D-12F Zeilen der Datenbanktabelle 24. Wie in 7 gezeigt ist, werden die Ergebnisse von Operationen an den Werten der Datentabelle 24 in jeweiligen Ergebnisabschnitten der Datenlinien 12 gespeichert. Zum Beispiel wird eine jeweilige Summe aller Werte in jeder jeweiligen Spalte der Datentabelle 24 in einem jeweiligen Ergebnisabschnitt der Ergebnisabschnitte 16A-16C gespeichert. Ähnlich wird eine jeweilige Summe aller Werte in einer jeweiligen Zeile der Datentabelle 24 in einem jeweiligen Ergebnisabschnitt der Ergebnisabschnitte 16D-16F gespeichert.
  • 8 ist eine konzeptionelle Darstellung, die eine beispielhafte Codelinie zusammen mit Datenlinien einer PiNVSM-Vorrichtung in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt. Wie in 6 gezeigt ist, kann eine Folge von Befehlen in der Codelinie 10A (z. B. Befehl Nr. 1, Befehl Nr. 2, Befehl Nr. 3, ... und Befehl Nr. N) als eine Ausführungsförderungseinrichtung fungieren. Zum Beispiel kann jeder Befehl eine Elementaroperation in einem aufeinanderfolgenden Ausführungsablauf beschreiben. Außerdem kann eine PiNVSM-Vorrichtung in einigen Beispielen jeden Befehl auf verschiedene Datenlinien auf gleichzeitige Weise anwenden. Zum Beispiel kann eine Managementeinheit der DPUs 38 aus 1 den Befehl Nr. 1 auf die Datenlinie 12A, den Befehl Nr. 2 auf die Datenlinie 12B, den Befehl Nr. 3 auf die Datenlinie 12C und den Befehl Nr. N auf die Datenlinie 12N gleichzeitig anwenden.
  • 9 ist eine konzeptionelle Darstellung, die eine beispielhafte Codelinie zusammen mit Datenlinien einer PiNVSM-Vorrichtung in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt. Wie in 9 gezeigt ist, können die Datenlinien 12A-12N die im Folgenden gezeigte Tabelle 2 repräsentieren. Tabelle 2
    Waren Nr. 1 Waren Nr. 2 Waren Nr. 3 Waren Nr. N
    Datum Nr. 1 1 2 6 ... 8
    Datum Nr. 2 4 7 1 ... 2
    Datum Nr. 3 2 1 3 ... 5
    Datum Nr. 4 3 5 4 ... 7
    Summe 10 15 14 ... 22
  • Wie in dem Beispiel aus 9 gezeigt ist, speichern die Datenabschnitte 14A-14N der Datenlinien 12A-12N die Werte der Spalten aus Tabelle 2. Wie oben diskutiert ist, kann es erwünscht sein, eine Summe der in jedem der Datenabschnitte 14A-14N der Datenlinien 12A-12N (d. h. eine Summe der Werte in den Spalten aus Tabelle 2) gespeicherten Werte zu erhalten. Im Betrieb können eine oder mehrere Verarbeitungseinheiten einer PiNVSM-Vorrichtung die in den Datenabschnitten 14A-14N der Datenlinien 12A-12N gespeicherten Daten auf der Grundlage einer Folge von Befehlen manipulieren und die Ergebnisse der Datenmanipulation in den Ergebnisabschnitten 16A-16N der Datenlinien 12A-12N speichern. In dem Beispiel aus Fig. 9 können die eine oder die mehreren Verarbeitungseinheiten die in den Datenabschnitten 14A-14N der Datenlinien 12A-12N gespeicherten Daten auf der Grundlage einer Folge der durch die Codelinie 10A definierten Befehle manipulieren. Wie in dem Beispiel aus 9 gezeigt ist, enthält die Codelinie 10A für jede Spalte (für jede Datenlinie der Datenlinien 12A-12N) die Additionsoperation. Die eine oder die mehreren Verarbeitungseinheiten können die Rechenoperation (Addition) von der ersten Zeile bis zu der letzten Zeile in jeder Spalte mehrmals anwenden. Mit anderen Worten, die eine oder die mehreren Verarbeitungseinheiten können die Additionsoperation wiederholen, um das Ergebnis der gesamten Codeausführung zu erzielen. Die eine oder die mehreren Verarbeitungseinheiten können die Ergebnisse der Codeausführung (d. h. in diesem Beispiel die Summe) in den Ergebnisabschnitten 16A-16N der Datenlinien 12A-12N speichern.
  • 10 ist eine konzeptionelle Darstellung, die eine beispielhafte Codelinie, die mit einer Vorgehensweise der Befehlsverschiebung ausgeführt werden kann, in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt. In einigen Beispielen kann es erwünscht sein, dass eine oder mehrere Verarbeitungseinheiten einer PiNVSM-Vorrichtung Daten unter Verwendung verhältnismäßig komplexerer Operationen (z. B. Operationen, die komplexer als das Wiederholen einer einzigen Operation an jedem Wert in einer bestimmten Datenlinie sind) manipulieren. In Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung kann eine Codelinie eine Folge von Befehlen, die eine oder mehrere Verarbeitungseinheiten auf eine oder mehrere Datenlinien aufeinanderfolgend anwenden können, definieren. Wie in 10 z. B. zum Zeitpunkt Nr. 1 gezeigt ist, können eine oder mehrere Verarbeitungseinheiten Daten in der Datenlinie 12A auf der Grundlage des Befehls Nr. 1 manipulieren. Zum Zeitpunkt Nr. 2 können die eine oder die mehreren Verarbeitungseinheiten Daten in der Datenlinie 12A auf der Grundlage des Befehls Nr. 2 manipulieren und Daten in der Datenlinie 12A auf der Grundlage des Befehls Nr. 1 manipulieren. Zum Zeitpunkt Nr. N können die eine oder die mehreren Verarbeitungseinheiten Daten in der Datenlinie 12A auf der Grundlage des Befehls Nr. N manipulieren, Daten in der Datenlinie 12B auf der Grundlage des Befehls Nr. N-1 manipulieren, Daten in der Datenlinie 12C auf der Grundlage des Befehls Nr. N-2 manipulieren und Daten in der Datenlinie 12N auf der Grundlage des Befehls Nr. 1 manipulieren.
  • 11 ist eine konzeptionelle Darstellung, die eine beispielhafte Codelinie, die einen Sprung enthält, in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt. In einigen Beispielen kann es erwünscht sein, dass eine oder mehrere Verarbeitungseinheiten einer PiNVSM-Vorrichtung zu anderen Befehlen in einer Codelinie springen, wenn sie Daten manipulieren. In Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung kann eine Codelinie einen oder mehrere Sprungbefehle enthalten, die veranlassen, dass die eine oder die mehreren Verarbeitungseinheiten, die die Codelinie ausführen, zu einer anderen Position in der Codelinie springen. Mit anderen Worten, in einigen Beispielen können bedingte und unbedingte Sprünge in dem Code mittels einer Verschiebung der Folge von Befehlen an mehreren Positionen gleichzeitig in der Rechts- oder Linksrichtung implementiert werden.
  • Wie in 11 gezeigt ist, können z. B. zum Zeitpunkt Nr. 1 eine oder mehrere Verarbeitungseinheiten einer PiNVSM-Vorrichtung wie etwa der DPU 38 Daten in der Datenlinie 12A auf der Grundlage des Befehls Nr. N der Codelinie 10A manipulieren. Daraufhin können zum Zeitpunkt Nr. 2 die eine oder die mehreren Verarbeitungseinheiten der PiNVSM-Vorrichtung sechs Positionen springen und Daten in der Datenlinie 12A auf der Grundlage des Befehls Nr. N+6 der Codelinie 10A manipulieren.
  • 12 ist eine konzeptionelle Darstellung, die eine optimierte Datenlinie einer nichtflüchtigen Speichervorrichtung in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt. Wie in 12 dargestellt ist, enthält die optimierte Datenlinie 62 ähnlich der Datenlinie 12A aus 5 einen Datenabschnitt 14 und einen Ergebnisabschnitt 16. Wie oben anhand der Datenlinie 12A diskutiert wurde, speichern in dem Datenabschnitt 14 enthaltene wählbare Orte Daten, wobei mit dem Datenabschnitt 14 eine oder mehrere Operationen (d. h. Elementaroperation der Addition, der Subtraktion, der Multiplikation und der Division) verbunden sind und wobei die Ergebnisse der Operationen an wählbaren Orten, die in dem Ergebnisabschnitt 16 enthalten sind, verfügbar sind. Wie in 12 gezeigt ist, enthält die optimierte Datenlinie 62 allerdings Hardwareoperationen 63A und 63B (zusammen „Hardwareoperationen 63“).
  • Jede der Hardwareoperationen 63 kann durch eine oder mehrere programmierbare Verarbeitungseinheiten wie etwa durch eine oder mehrere programmierbare Verarbeitungseinheiten der DPUs 38 aus 1 ausgeführt werden. Wie oben diskutiert wurde, können eine oder mehrere programmierbare Verarbeitungseinheiten einer PiNVSM-Vorrichtung zum Manipulieren von Daten unter Verwendung der am häufigsten verwendeten Befehlssätze programmiert werden. In dem Beispiel aus Fig. 12 können die Operationen 63 den am häufigsten verwendeten Befehlssätzen entsprechen.
  • 13 ist eine konzeptionelle Darstellung, die einen beispielhaften Speicherraum einer nichtflüchtigen Ablagevorrichtung in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt. Wie in 13 gezeigt ist, enthält der Speicherraum 9 ähnlich dem Speicherraum 8 aus 4 Codelinien 10 und Datenlinien 12. Wie ebenfalls in 13 gezeigt ist, enthält der Speicherraum 9 eine ID-Tabelle 66.
  • Die ID-Tabelle 66 kann eine Kennzahl jedes Befehlssatzes (d. h. jeder Codelinie) speichern. Zum Beispiel kann die ID-Tabelle 66 für jede der Codelinien 10A-10D eine jeweilige Kennzahl der Kennzahlen 68A-68D (zusammen „IDs 68“) speichern. In einigen Beispielen kann jede der IDs 68 eine Inode-ID, eine global eindeutige Kennung (GUID) oder ein Hash-Wert des entsprechenden Befehlssatzes sein. Zum Beispiel kann die ID 68A eine Inode-ID oder ein Hash-Wert eines in der Codelinie 10A enthaltenen Befehlssatzes sein. In einigen Beispielen können die IDs 68 als Fingerabdrücke ihrer entsprechenden Befehlssätze bezeichnet werden. In einigen Beispielen kann die ID-Tabelle 66 in einer Hash-Tabelle einer DPU wie etwa einer DPU der DPUs 38 aus 1 enthalten sein.
  • 14 ist eine konzeptionelle Darstellung, die eine beispielhafte Warteschlange, die durch eine Managementeinheit einer DPU unterhalten werden kann, in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt. Wie oben diskutiert wurde, kann eine PiNVSM-Vorrichtung in den DPUs 38 aus 1 eine Warteschlange (oder Warteschlangen) unterhalten, die für jeweilige Befehlssätze einen jeweiligen Nutzungswert, der eine relative Häufigkeit, mit der der jeweilige Befehlssatz zum Manipulieren von Daten verwendet wird, angibt, enthält. Wie in 14 gezeigt ist, enthält die Warteschlange 70 für die jeweiligen Befehlssätze (d. h. für die Codelinien 10A-10H) einen jeweiligen Nutzungswert (d. h. die Häufigkeiten 71A-71H), der eine jeweilige Häufigkeit angibt, mit der der jeweilige Befehlssatz zum Manipulieren von Daten verwendet wird.
  • In einigen Beispielen kann die Warteschlange 70 eine konkurrierende Warteschlange sein, die dafür konfiguriert ist, IDs auf der Grundlage der Nutzungshäufigkeit (d. h. der Ausführungshäufigkeit) zu sortieren. Falls die Nutzungshäufigkeit eines Befehlssatzes wächst, wandert eine dem Befehlssatz entsprechende ID von einem hinteren Ende 70 zu einem vorderen Ende der Warteschlange 70. Ähnlich kann eine ID eines Befehlssatzes, der selten ausgeführt wird, zum hinteren Ende 70 wandern, bis die ID aus der Warteschlange 70 geschoben wird.
  • In einigen Beispielen kann die Warteschlange 70 anfangs leer sein (d. h. keine IDs enthalten) und belegt werden, während die Statistik der Nutzung konstruiert wird (d. h. während Befehlssätze ausgeführt werden). In einigen Beispielen kann die Warteschlange 70 mit IDs, von denen vorhergesagt wird, dass sie häufiger ausgeführt werden, vorkonfiguriert sein. Auf jeden Fall kann die Warteschlange 70 auf der Grundlage der tatsächlichen Nutzungshäufigkeiten der Befehlssätze im Zeitverlauf aktualisiert werden.
  • Wie oben diskutiert wurde, kann eine Managementeinheit einer DPU aus der Warteschlange eine Gruppe von Befehlssätzen mit den höchsten jeweiligen Nutzungswerten als die am häufigsten verwendeten Befehlssätze für die Programmierung der einen oder mehreren programmierbaren Verarbeitungseinheiten der DPUs 38 auswählen. In einigen Beispielen kann die ausgewählte Gruppe von Befehlssätzen Befehlssätze enthalten, die IDs im Optimierungsfenster 73 entsprechen.
  • 15 ist ein Ablaufplan, der eine beispielhafte Technik zum Unterhalten einer Warteschlange der Befehlssatznutzungshäufigkeit in einer Managementeinheit in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt. Um dieselbe hier dargestellte Technik zu implementieren, sind andere alternative Ausführungsformen von DPUs möglich.
  • In Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung kann die DPU 38A einen Befehlssatz mit einer entsprechenden ID N ausführen (1502). Zum Beispiel können eine oder mehrere Verarbeitungseinheiten der DPU 38A Daten an wählbaren Orten von NVMAs 52, die Datenabschnitten der Datenlinien 12A-12C entsprechen, auf der Grundlage eines aus der Codelinie 10C mit der entsprechenden ID 68C erhaltenen Befehlssatzes manipulieren, um Ergebnisse zu erzeugen.
  • Die DPU 38A kann bestimmen, ob die ID N in einer Warteschlange enthalten ist (1504). Zum Beispiel kann die DPU 38A bestimmen, ob die Warteschlange 70 aus 14 die ID 38C enthält. Falls die ID N nicht in der Warteschlange enthalten ist („Nein“-Zweig aus 1704), kann die DPU 38A bestimmen, ob die Warteschlange voll ist (1506). Zum Beispiel kann die DPU 38A bestimmen, ob eine Menge von in der Warteschlange enthaltenen Kennungen größer als eine Schwellenmenge von Nutzungswerten (z. B. 4, 8, 16, 32, 50, 64, 128 usw.) ist. Die Warteschlange kann eine spezifische Größe besitzen und es kann notwendig sein, dass die DPU 38A die Warteschlange auf der Grundlage ihrer Größenbeschränkung und anderer Faktoren unterhält.
  • Falls die Warteschlange voll ist („Ja“-Zweig aus 1506), kann die DPU 38A eine ID mit der niedrigsten Häufigkeit aus der Warteschlange schieben (1508). Zum Beispiel kann die DPU 38A in Ansprechen auf die Bestimmung, dass eine Menge der in der Warteschlange 70 enthaltenen Kennungen größer als eine Schwellenmenge der Nutzungswerte ist, eine Kennung mit einem niedrigsten Nutzungswert aus der Warteschlange 70 entfernen.
  • Falls die Warteschlange nicht voll ist („Nein“-Zweig aus 1506) oder nachdem die ID mit der niedrigsten Häufigkeit aus der Warteschlange geschoben worden ist, kann die DPU 38A die ID N zum hinteren Ende der Warteschlange hinzufügen (1510). Zum Beispiel kann die DPU 38A in Ansprechen auf die Bestimmung, dass die Warteschlange 70 eine Kennung, die einem bestimmten Befehlssatz entspricht, nicht enthält, die dem bestimmten Befehlssatz entsprechende Kennung zu dem hinteren Ende der Warteschlange hinzufügen.
  • Falls die ID N nicht in der Warteschlange enthalten ist („Ja“-Zweig aus 1504) oder nachdem die ID N zu der Warteschlange hinzugefügt worden ist, kann die DPU 38A eine Häufigkeit für die ID N inkrementieren (1512). Zum Beispiel kann die Managementeinheit einen Wert der Häufigkeit 71C aus 14 von 52 auf 53 inkrementieren.
  • Die DPU 38A kann eine Häufigkeit für in der Warteschlange enthaltene IDs außer der ID N dekrementieren (1514). Zum Beispiel kann die DPU 38A einen Wert der Häufigkeit 71G aus 14 von 100 auf 99, einen Wert der Häufigkeit 71B aus 14 von 76 auf 75, einen Wert der Häufigkeit 71A aus 14 von 62 auf 61, einen Wert der Häufigkeit 71D aus 14 von 53 auf 52, einen Wert der Häufigkeit 71E aus 14 von 21 auf 20, einen Wert der Häufigkeit 71A aus 14 von 11 auf 10 und einen Wert der Häufigkeit 71F aus 14 von 2 auf 1 dekrementieren.
  • Die DPU 38A kann die in der Warteschlange enthaltenen IDs umordnen (1516). Zum Beispiel kann die Speichervorrichtung 6A die Positionen der ID 68C und der ID 68D vertauschen, da der inkrementierte Wert der Häufigkeit 71C (d. h. 53) jetzt größer als der dekrementierte Wert der Häufigkeit 71D (d. h. 52) ist.
  • Nach dem Umordnen der IDs in der Warteschlange kann die DPU 38A bestimmen, ob es eine Änderung der in einem Optimierungsfenster enthaltenen IDs gegeben hat. Zum Beispiel kann die DPU 38A bestimmen, dass die ID 68C jetzt in dem Optimierungsfenster 73 enthalten ist und dass die ID 68C nicht mehr in dem Optimierungsfenster 73 enthalten ist, nachdem die Positionen der ID 68C und der ID 68D vertauscht worden sind. In Ansprechen auf die Bestimmung, dass es eine Änderung der in einem Optimierungsfenster enthaltenen IDs gegeben hat, kann die DPU 38A unter Verwendung von Befehlssätzen, die den aktuell in dem Optimierungsfenster enthaltenen IDs entsprechen, eine oder mehrere programmierbare Verarbeitungseinheiten zum Manipulieren von Daten programmieren. Zum Beispiel kann die DPU 38A eine oder mehrere programmierbare Verarbeitungseinheiten der DPU 38A, die dafür programmiert wurden, Daten unter Verwendung eines aus der Codelinie 10D enthaltenen Befehlssatzes zu manipulieren, zum Manipulieren von Daten unter Verwendung eines aus der Codelinie 10C erhaltenen Befehlssatzes programmieren.
  • 16 ist eine konzeptionelle Darstellung, die die Warteschlangenunterhaltung in einer DPU in Übereinstimmung mit einer oder mehreren Techniken in dieser Offenbarung darstellt. Wie oben diskutiert wurde, kann eine DPU eine Warteschlange unterhalten, die die Nutzungshäufigkeiten von Befehlssätzen angibt. In einigen Beispielen können unterschiedliche Datenlinien durch unterschiedliche Softwareprimitive und mit unterschiedlichen Häufigkeiten verarbeitet werden. Somit kann eine DPU in einigen Beispielen mehrere Warteschlangen unterhalten. Zum Beispiel kann eine DPU für jede jeweilige Datenlinie einer Mehrzahl von Datenlinien eine jeweilige Warteschlange unterhalten, die für jeweilige Befehlssätze einen jeweiligen Nutzungswert enthält, der eine relative Häufigkeit angibt, mit der der jeweilige Befehlssatz zum Manipulieren von Daten in der jeweiligen Datenlinie verwendet wird.
  • Wie in 16 gezeigt ist, kann eine DPU der DPUs 38 für jede der Datenlinien 12A-12N eine jeweilige Warteschlange der Warteschlangen 70A-70N unterhalten. Die DPU kann jede der Warteschlangen 70 auf ähnliche Weise wie die Warteschlange 70 aus 14 unterhalten. Zum Beispiel kann die DPU jede der Warteschlangen 70 unter Verwendung der Techniken aus 15 unterhalten. Insbesondere kann die DPU in dem Beispiel aus 16 in Ansprechen auf die Bestimmung, dass eine oder mehrere Verarbeitungseinheiten Daten in den Datenlinien 12A-12N auf der Grundlage eines aus der Codelinie 10A mit der ID 68A erhaltenen Befehlssatzes manipuliert haben (oder manipulieren), die Techniken aus 15 mit der ID N als ID 68A ausführen, um jede der Warteschlangen 70A-70N zu aktualisieren.
  • 17 ist eine konzeptionelle Darstellung, die die Optimierung einer Datenlinie einer nichtflüchtigen Speichervorrichtung in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt. Wie in 17 gezeigt ist, enthält die optimierte Datenlinie 62 einen Datenabschnitt 14, einen Ergebnisabschnitt 16 und eine Warteschlange 70. Wie oben diskutiert wurde, können eine oder mehrere programmierbare Verarbeitungseinheiten wie etwa eine oder mehrere programmierbare Verarbeitungseinheiten der DPUs 38 zum Manipulieren von Daten unter Verwendung von Befehlssätzen, die in einem Optimierungsfenster einer Warteschlange enthalten sind, programmiert werden. Wie in 17 gezeigt ist, können eine oder mehrere programmierbare Verarbeitungseinheiten auf der Grundlage des Optimierungsfensters 73 der Warteschlange 70, die die IDs 68G, 68B, 68A und 68D enthält, die den Codelinien 10G, 10B, 10A und 10D entsprechen, dafür programmiert werden, Hardwareoperationen 72A-72D auszuführen, die aus den Codelinien 10G, 10B, 10A und 10D erhaltenen Befehlssätzen entsprechen. Wie in 17 gezeigt ist, können Hardwareoperationen 72A-72D an wählbaren Orten des nichtflüchtigen Speichers, die dem Datenabschnitt 14 entsprechen, gespeicherte Daten manipulieren und Ergebnisse der Manipulation an wählbaren Orten des nichtflüchtigen Speichers, die dem Ergebnisabschnitt 14 entsprechen, speichern.
  • 18 ist eine konzeptionelle Darstellung, die Datentypen, die durch eine PiNVSM-Vorrichtung gespeichert sind, in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt. Unterschiedliche Abschnitte einer PiNVSM-Vorrichtung können unterschiedliche Datentypen speichern. Wie in 18 gezeigt ist, kann ein erster Abschnitt einer PiNVSM-Vorrichtung eine Datenbanktabelle speichern, kann ein zweiter Abschnitt der PiNVSM-Vorrichtung Textdaten speichern, kann ein dritter Abschnitt der PiNVSM-Vorrichtung Schalldaten speichern, kann ein vierter Abschnitt der PiNVSM-Vorrichtung Archivdaten speichern, kann ein fünfter Abschnitt der PiNVSM-Vorrichtung Bilddaten speichern und kann ein sechster Abschnitt der PiNVSM-Vorrichtung Videodaten speichern.
  • Wie oben diskutiert wurde, kann sich eine PiNVSM-Vorrichtung selbst optimieren. Zum Beispiel kann die Optimierung unabhängiger Datenlinien eine Grundlage für die dynamische und datenorientierte Entwicklung eines anderen Teils derselben PiNVSM-Vorrichtung mit anderen Spezialisierungen legen. Das Ändern der Ablagedatenlandschaft (Ablagedatenanordnung) kann zu einer dynamischen Selbstrekonfiguration der Interna der nichtflüchtigen Ablagevorrichtung (d. h. zur Neuprogrammierung einer oder mehrerer programmierbarer Verarbeitungseinheiten) führen.
  • 19 ist ein Ablaufplan, der eine beispielhafte Technik zum Manipulieren von Daten in einer PiNVSM-Vorrichtung in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt. Obgleich PiNVSM-Vorrichtungen mit anderen Konfigurationen als die DPU 38A die Techniken aus 19 ausführen können, wird die Technik aus 19 zur Erleichterung der Beschreibung anhand der DPU 38A aus 1 beschrieben.
  • In Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung kann die DPU 38A auf der Grundlage von Daten an ausgewählten Orten des nichtflüchtigen Speichers eine Datenmanipulation ausführen (1902), um entsprechende Ergebnisse der Datenmanipulation zu erzeugen (1904). Wie in dem Beispiel aus 9 gezeigt ist, können z. B. eine oder mehrere Verarbeitungseinheiten der DPU 38A Daten an wählbaren Orten einer NVMA der DPU 38A, die Datenabschnitten 14A-14N von Datenlinien 12A-12N entsprechen, auf der Grundlage eines aus der Codelinie 10A erhaltenen Befehlssatzes manipulieren, um Ergebnisse (in diesem Fall eine Summe) zu erzeugen.
  • Die DPU 38A kann veranlassen, dass der nichtflüchtige Speicher auf der Grundlage der entsprechenden Ergebnisse Daten an wählbaren Orten, die zum Speichern von Ergebnissen der Datenmanipulation reserviert sind, wahlweise programmiert und löscht (1906). Zum Beispiel können die eine oder die mehreren Verarbeitungseinheiten der DPU 38A veranlassen, dass die NVMA der DPU 38A Daten an wählbaren Orten, die den Ergebnisabschnitten 16A-16N der Datenlinien 12A-12N entsprechen, wahlweise programmiert und löscht, um die erzeugten Ergebnisse der Datenmanipulation zu speichern.
  • 20 ist ein Ablaufplan, der eine beispielhafte Technik zum Manipulieren von Daten in einer PiNVSM-Vorrichtung in Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung darstellt. Obgleich PiNVSM-Vorrichtungen die Techniken aus 20 mit anderen Konfigurationen als jenen der DPU 38A ausführen können, wird die Technik aus 20 zur Erleichterung der Beschreibung anhand der DPU 38A aus 1 beschrieben.
  • In Übereinstimmung mit einer oder mehreren Techniken dieser Offenbarung kann die ALU 50A der DPU 38A auf der Grundlage von Daten in einer bestimmten Datenlinie Ergebnisse berechnen (2002). Wie in dem Beispiel aus 5 gezeigt ist, kann die ALU 50A z. B. Ergebnisse einer oder mehrerer Elementaroperationen an Daten in dem Datenabschnitt 14 der Datenlinie 12A berechnen (die einen oder mehrere wählbare Orte der NVMA 52A enthalten kann).
  • Die ALU 50A kann Daten an wählbaren Orten der zum Speichern von Ergebnisse der Datenmanipulation reservierten bestimmten Datenlinie auf der Grundlage der berechneten Ergebnisse wahlweise ändern (2004). Wie in dem Beispiel aus 5 gezeigt ist, kann die ALU 50A z. B. auf der Grundlage der berechneten Ergebnisse Daten in dem Datenabschnitt 16 der Datenlinie 12A wahlweise ändern.
  • Die folgenden nummerierten Beispiele können einen oder mehrerer Aspekte der Offenbarung veranschaulichen:
  • Beispiel 1: Computersystem, das eine Vorrichtung enthält, wobei die Vorrichtung enthält: einen nichtflüchtigen Speicher, der in eine Mehrzahl wählbarer Orte geteilt ist, wobei jedes Bit in dem nichtflüchtigen Speicher dafür konfiguriert ist, entsprechende Daten unabhängig ändern zu lassen, wobei die wählbaren Orte zu einer Mehrzahl von Datenlinien gruppiert sind; und eine oder mehrere Verarbeitungseinheiten, die mit dem nichtflüchtigen Speicher gekoppelt sind, wobei jede der Verarbeitungseinheiten einer Datenlinie der Mehrzahl von Datenlinien zugeordnet ist, und wobei jede der Verarbeitungseinheiten dafür konfiguriert ist, auf der Grundlage von Daten in einer zugeordneten Datenlinie der Mehrzahl von Datenlinien entsprechende Ergebnisse zu berechnen, wobei der nichtflüchtige Speicher dafür konfiguriert ist, auf der Grundlage der entsprechenden Ergebnisse wahlweise Daten an wählbare Orte der zugeordneten Datenlinie zu schreiben, die zum Speichern von Ergebnissen der Berechnung von der Prozesseinheit, die der zugeordneten Datenlinie zugeordnet ist, reserviert ist.
  • Beispiel 2: Computersystem nach Beispiel 1, wobei die eine oder die mehreren Verarbeitungseinheiten dafür konfiguriert sind, die entsprechenden Ergebnisse auf der Grundlage von Ausführungscode zu berechnen, wobei das Computersystem ferner eine Managementeinheit enthält, die konfiguriert ist zum: Erhalten des Ausführungscodes von dem nichtflüchtigen Speicher, der Codelinien umfasst.
  • Beispiel 3: Computersystem nach Beispiel 2, wobei der Ausführungscode in jeder der Codelinien eine Folge von Befehlen enthält.
  • Beispiel 4: Computersystem nach Beispiel 3, wobei jede der einen oder mehreren Verarbeitungseinheiten dafür konfiguriert ist, auf der Grundlage jeweiliger Befehle einer Folge von Befehlen, die durch eine Codelinie der Codelinien repräsentiert sind, gleichzeitig Ergebnisse für eine zugeordnete Datenlinie der Mehrzahl von Datenlinien zu berechnen.
  • Beispiel 5: Computersystem nach einer Kombination der Beispiele 1-4, wobei die Befehle in der Folge von Befehlen Elementaroperationen enthalten.
  • Beispiel 6: Computersystem nach einer Kombination der Beispiele 1-5, wobei die Vorrichtung eine integrierte Schaltung (IC) enthält.
  • Beispiel 7: Computersystem nach einer Kombination der Beispiele 1-6, wobei die Vorrichtung eine erste Datenverarbeitungseinheit (DPU) einer Mehrzahl von DPUs ist, die jeweils einen jeweiligen nichtflüchtigen Speicher und eine oder mehrere jeweilige Verarbeitungseinheiten enthalten, wobei das Computersystem ferner enthält: einen oder mehrere Router, die zum Übertragen von Daten und Befehlen unter der Mehrzahl von DPUs konfiguriert sind.
  • Beispiel 8: Computersystem nach einer Kombination der Beispiele 1-7, wobei das Ändern entsprechender Daten eines Bits in dem nichtflüchtigen Speicher das Programmieren oder Löschen der entsprechenden Daten enthält, wobei das Programmieren von Daten eines bestimmten Bits in dem nichtflüchtigen Speicher Daten anderer Bits des nichtflüchtigen Speichers nicht ändert und wobei das Löschen von Daten des bestimmten Bits in dem nichtflüchtigen Speicher Daten anderer Bits des nichtflüchtigen Speichers nicht ändert.
  • Beispiel 9: Verfahren, das umfasst: Berechnen entsprechender Ergebnisse durch eine bestimmte Verarbeitungseinheit einer oder mehrerer Verarbeitungseinheiten, die mit einem nichtflüchtigen Speicher gekoppelt sind, der in eine Mehrzahl wählbarer Orte geteilt ist, die zu einer Mehrzahl von Datenlinien gruppiert sind, und auf der Grundlage von Daten in einer bestimmten Datenlinie der Mehrzahl von Datenlinien, die der Verarbeitungseinheit zugeordnet ist, wobei jeder wählbare Ort in dem nichtflüchtigen Speicher dafür konfiguriert ist, unabhängig programmiert und gelöscht zu werden, wobei jede Verarbeitungseinheit der Verarbeitungseinheiten einer Datenlinie der Mehrzahl von Datenlinien zugeordnet ist und wobei die eine oder die mehreren Verarbeitungseinheiten und der nichtflüchtige Speicher in demselben Chip enthalten sind; und wahlweises Ändern von Daten an wählbaren Orten der bestimmten Datenlinie, die zum Speichern von Ergebnissen der Berechnung von der Prozesseinheit, die der bestimmten Datenlinie zugeordnet ist, reserviert ist, auf der Grundlage der entsprechenden Ergebnisse.
  • Beispiel 10: Verfahren nach Beispiel 9, wobei die entsprechenden Ergebnisse auf der Grundlage von Ausführungscode berechnet werden und wobei das Verfahren ferner umfasst: Erhalten des Ausführungscodes aus dem nichtflüchtigen Speicher, der Codelinien umfasst.
  • Beispiel 11: Verfahren nach Beispiel 10, wobei der Ausführungscode in jeder der Codelinien eine Folge von Befehlen enthält.
  • Beispiel 12: Verfahren nach Beispiel 11, das ferner umfasst: gleichzeitiges Berechnen von Ergebnissen für jeweilige Datenlinien, die den entsprechenden Verarbeitungseinheiten zugeordnet sind, durch jeweilige Verarbeitungseinheiten der einen oder mehreren Verarbeitungseinheiten und auf der Grundlage jeweiliger Befehle einer Folge von Befehlen, die durch eine Codelinie der Codelinien repräsentiert sind.
  • Beispiel 13: Verfahren nach einer Kombination der Beispiele 9-12, wobei die Befehle in der Folge von Befehlen Elementaroperationen umfassen.
  • Beispiel 14: Verfahren nach einer Kombination der Beispiele 9-13, wobei der Chip eine erste Datenverarbeitungseinheit (DPU) einer Mehrzahl von DPUs ist, die jeweils einen jeweiligen nichtflüchtigen Speicher und eine oder mehrere jeweilige Verarbeitungseinheiten enthalten, wobei das Verfahren ferner umfasst: Übertragen von Daten oder Befehlen unter der Mehrzahl von DPUs durch einen oder mehrere Router.
  • Beispiel 15: Verfahren nach einer Kombination der Beispiele 9-14, das ferner umfasst: Zuordnen einer ersten Gruppe wählbarer Orte der Mehrzahl wählbarer Orte zu einer bestimmten Datenlinie der Mehrzahl von Datenlinien, die einer bestimmten Verarbeitungseinheit der Mehrzahl von Verarbeitungseinheiten zugeordnet sind, zu einem ersten Zeitpunkt; und Zuordnen einer zweiten Gruppe wählbarer Orte der Mehrzahl wählbarer Orte zu der bestimmten Datenlinie, wobei die erste Gruppe wählbarer Orte von der zweiten Gruppe wählbarer Orte verschieden ist, zu einem zweiten Zeitpunkt.
  • Beispiel 16: Prozessor in einer Speichervorrichtung, der enthält: eine Mehrzahl von Mitteln zum Berechnen entsprechender Ergebnisse auf der Grundlage von Daten in Datenlinien, die jeweils einen oder mehrere wählbare Orte eines nichtflüchtigen Speichers enthalten, der in eine Mehrzahl wählbarer Orte geteilt ist, wobei jeder wählbare Ort in dem nichtflüchtigen Speicher dafür konfiguriert ist, unabhängig programmiert und gelöscht zu werden, wobei jedes der Mehrzahl von Mitteln zum Berechnen einer Datenlinie der Mehrzahl von Datenlinien zugeordnet ist und wobei die Mehrzahl von Mitteln zum Berechnen und der nichtflüchtige Speicher in demselben Chip enthalten sind; und Mittel zum wahlweisen Ändern von Daten an ausgewählten Orten der Datenlinien, die zum Speichern von Ergebnissen der Berechnung von dem Mittel zum Berechnen, die der Datenlinie zugeordnet sind, reserviert sind, auf der Grundlage der entsprechenden Ergebnisse.
  • Beispiel 17: Prozessor in einer Speichervorrichtung nach Beispiel 16, wobei die Mehrzahl von Mitteln zum Berechnen dafür konfiguriert sind, die entsprechenden Ergebnisse auf der Grundlage von Ausführungscode zu berechnen, wobei der Prozessor ferner enthält: Mittel zum Erhalten des Ausführungscodes aus dem nichtflüchtigen Speicher, der Codelinien enthält.
  • Beispiel 18: Prozessor in einer Speichervorrichtung nach einer Kombination der Beispiele 16-17, wobei der Ausführungscode in jeder der Codelinien eine Folge von Befehlen enthält, wobei jedes der Mehrzahl von Mitteln zum Berechnen dafür konfiguriert ist, auf der Grundlage jeweiliger Befehle einer Folge von Befehlen, die durch eine Codelinie der Codelinien repräsentiert sind, gleichzeitig Ergebnisse für eine zugeordnete Datenlinie der Mehrzahl von Datenlinien zu berechnen.
  • Beispiel 19: Prozessor in einer Speichervorrichtung nach einer Kombination der Beispiele 16-18, wobei die Befehle in der Folge von Befehlen Elementaroperationen enthalten.
  • Beispiel 20: Prozessor in einer Speichervorrichtung nach einer Kombination der Beispiele 16-19, wobei der Prozessor in der Speichervorrichtung eine integrierte Schaltung (IC) ist.
  • Die in dieser Offenbarung beschriebenen Techniken können wenigstens teilweise in Hardware, in Software, in Firmware oder in irgendeiner Kombination davon implementiert werden. Zum Beispiel können verschiedene Aspekte der beschriebenen Techniken innerhalb eines oder eine Mehrzahl von Prozessoren, einschließlich eines oder mehrerer Mikroprozessoren, digitaler Signalprozessoren (DSPs), anwendungsspezifischer integrierter Schaltungen (ASICs), frei programmierbarer logischer Anordnungen (FPGAs) oder irgendeiner anderen äquivalenten integrierten oder diskreten Logikschaltungsanordnung sowie irgendwelcher Kombinationen solcher Komponenten, implementiert werden. Der Begriff „Prozessor“ oder „Verarbeitungsschaltungsanordnung“ kann sich allgemein auf irgendeine der vorstehenden Logikschaltungen, allein oder zusammen mit anderen Logikschaltungen, oder auf andere äquivalente Schaltungen beziehen. Eine Steuereinheit, die Hardware enthält, kann ebenfalls eine oder mehrere der Techniken dieser Offenbarung ausführen.
  • Diese Hardware, Software und Firmware können innerhalb derselben Vorrichtung oder innerhalb getrennter Vorrichtungen implementiert werden, um die verschiedenen in dieser Offenbarung beschriebenen Techniken zu unterstützen. Außerdem können irgendwelche der beschriebenen Einheiten, Module oder Komponenten zusammen oder getrennt als diskrete, aber interoperable Logikvorrichtungen implementiert werden. Die Darstellung verschiedener Merkmale als Module oder Einheiten soll verschiedene Funktionsaspekte hervorheben und bedeutet nicht notwendig, dass diese Module oder Einheiten durch getrennte Hardware-, Firmware- oder Softwarekomponenten verwirklicht werden müssen. Vielmehr kann die einem oder mehreren Modulen oder einer oder mehreren Einheiten zugeordnete Funktionalität durch getrennte Hardware-, Firmware- oder Softwarekomponenten ausgeführt werden oder innerhalb gemeinsamer oder getrennter Hardware-, Firmware- oder Softwarekomponenten integriert sein.
  • Die in dieser Offenbarung beschriebenen Techniken können ebenfalls in einem Herstellungsartikel einschließlich eines computerlesbaren Ablagemediums, das mit Befehle codiert ist, verkörpert oder codiert sein. Die in einem Herstellungsartikel einschließlich eines codierten computerlesbaren Ablagemediums eingebetteten oder codierten Befehle können veranlassen, dass einer oder mehrere programmierbare Prozessoren oder andere Prozessoren eine oder mehrere der hier beschriebenen Techniken implementieren, wie etwa, wenn in dem computerlesbaren Ablagemedium enthaltene oder codierte Befehle durch den einen oder die mehreren Prozessoren ausgeführt werden. Computerlesbare Ablagemedien können Schreib-Lese-Speicher (RAM), Nur-Lese-Speicher (ROM), programmierbaren Nur-Lese-Speicher (PROM), löschbaren programmierbaren Nur-Lese-Speicher (EPROM), elektronisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), eine Festplatte, eine Compakt-Disk-ROM (CD-ROM), eine Diskette, eine Kassette, magnetische Medien, optische Medien oder andere computerlesbare Medien enthalten. In einigen Beispielen kann ein Herstellungsartikel ein oder mehrere computerlesbare Ablagemedien enthalten.
  • In einigen Beispielen kann ein computerlesbares Ablagemedium ein nichttransitorisches Medium enthalten. Der Begriff „nichttransitorisch“ kann angeben, dass das Ablagemedium nicht in einer Trägerwelle oder in einem fortgepflanzten Signal verkörpert ist. In bestimmten Beispielen kann ein nichttransitorisches Ablagemedium Daten, die sich im Zeitverlauf ändern können, (z. B. im RAM oder im Cache) speichern.
  • Es sind verschiedene Beispiel beschrieben worden. Diese und weitere Beispiele liegen im Schutzumfang der folgenden Ansprüche.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 14922547 [0020]
    • US 14/927670 [0020]

Claims (20)

  1. Computersystem, das eine Vorrichtung enthält, wobei die Vorrichtung enthält: einen nichtflüchtigen Speicher, der in eine Mehrzahl wählbarer Orte geteilt ist, wobei jedes Bit in dem nichtflüchtigen Speicher dafür konfiguriert ist, entsprechende Daten unabhängig ändern zu lassen, wobei die wählbaren Orte zu einer Mehrzahl von Datenlinien bzw. - zeilen gruppiert sind; und eine oder mehrere Verarbeitungseinheiten, die mit dem nichtflüchtigen Speicher gekoppelt sind, wobei jede der Verarbeitungseinheiten einer Datenlinie der Mehrzahl von Datenlinien zugeordnet ist, und wobei jede der Verarbeitungseinheiten dafür konfiguriert ist, auf der Grundlage von Daten in einer zugeordneten Datenlinie der Mehrzahl von Datenlinien entsprechende Ergebnisse zu berechnen, wobei der nichtflüchtige Speicher dafür konfiguriert ist, auf der Grundlage der entsprechenden Ergebnisse wahlweise Daten an wählbare Orte der zugeordneten Datenlinie zu schreiben, die zum Speichern von Ergebnissen der Berechnung von der Prozesseinheit, die der zugeordneten Datenlinie zugeordnet ist, reserviert ist.
  2. Computersystem nach Anspruch 1, wobei die eine oder die mehreren Verarbeitungseinheiten dafür konfiguriert sind, die entsprechenden Ergebnisse auf der Grundlage von Ausführungscode zu berechnen, wobei das Computersystem ferner eine Managementeinheit enthält, die konfiguriert ist zum: Erhalten des Ausführungscodes von dem nichtflüchtigen Speicher, der Codelinien bzw. -zeilen umfasst.
  3. Computersystem nach Anspruch 2, wobei der Ausführungscode in jeder der Codelinien eine Folge von Befehlen enthält.
  4. Computersystem nach Anspruch 3, wobei jede der einen oder mehreren Verarbeitungseinheiten dafür konfiguriert ist, auf der Grundlage jeweiliger Befehle einer Folge von Befehlen, die durch eine Codelinie der Codelinien repräsentiert sind, gleichzeitig Ergebnisse für eine zugeordnete Datenlinie der Mehrzahl von Datenlinien zu berechnen.
  5. Computersystem nach Anspruch 2 oder 3, wobei die Befehle in der Folge von Befehlen Elementaroperationen enthalten.
  6. Computersystem nach einem der Ansprüche 1 bis 5, wobei die Vorrichtung eine integrierte Schaltung (IC) enthält.
  7. Computersystem nach Anspruch 6, wobei die Vorrichtung eine erste Datenverarbeitungseinheit (DPU) einer Mehrzahl von DPUs ist, die jeweils einen jeweiligen nichtflüchtigen Speicher und eine oder mehrere jeweilige Verarbeitungseinheiten enthalten, wobei das Computersystem ferner enthält: einen oder mehrere Router, die zum Übertragen von Daten und Befehlen unter der Mehrzahl von DPUs konfiguriert sind.
  8. Computersystem nach einem der Ansprüche 1 bis 7, wobei das Ändern entsprechender Daten eines Bits in dem nichtflüchtigen Speicher das Programmieren oder Löschen der entsprechenden Daten enthält, wobei das Programmieren von Daten eines bestimmten Bits in dem nichtflüchtigen Speicher Daten anderer Bits des nichtflüchtigen Speichers nicht ändert und wobei das Löschen von Daten des bestimmten Bits in dem nichtflüchtigen Speicher Daten anderer Bits des nichtflüchtigen Speichers nicht ändert.
  9. Verfahren, das umfasst: Berechnen entsprechender Ergebnisse durch eine bestimmte Verarbeitungseinheit einer oder mehrerer Verarbeitungseinheiten, die mit einem nichtflüchtigen Speicher gekoppelt sind, der in eine Mehrzahl wählbarer Orte geteilt ist, die zu einer Mehrzahl von Datenlinien bzw. -zeilen gruppiert sind, und auf der Grundlage von Daten in einer bestimmten Datenlinie der Mehrzahl von Datenlinien, die der Verarbeitungseinheit zugeordnet ist, wobei jeder wählbare Ort in dem nichtflüchtigen Speicher dafür konfiguriert ist, unabhängig programmiert und gelöscht zu werden, wobei jede Verarbeitungseinheit der Verarbeitungseinheiten einer Datenlinie der Mehrzahl von Datenlinien zugeordnet ist und wobei die eine oder die mehreren Verarbeitungseinheiten und der nichtflüchtige Speicher in demselben Chip enthalten sind; und wahlweises Ändern von Daten an wählbaren Orten der bestimmten Datenlinie, die zum Speichern von Ergebnissen der Berechnung von der Prozesseinheit, die der bestimmten Datenlinie zugeordnet ist, reserviert ist, auf der Grundlage der entsprechenden Ergebnisse.
  10. Verfahren nach Anspruch 9, wobei die entsprechenden Ergebnisse auf der Grundlage von Ausführungscode berechnet werden und wobei das Verfahren ferner umfasst: Erhalten des Ausführungscodes aus dem nichtflüchtigen Speicher, der Codelinien bzw. -zeilen umfasst.
  11. Verfahren nach Anspruch 10, wobei der Ausführungscode in jeder der Codelinien eine Folge von Befehlen enthält.
  12. Verfahren nach Anspruch 11, das ferner umfasst: gleichzeitiges Berechnen von Ergebnissen für jeweilige Datenlinien, die den entsprechenden Verarbeitungseinheiten zugeordnet sind, durch jeweilige Verarbeitungseinheiten der einen oder mehreren Verarbeitungseinheiten und auf der Grundlage jeweiliger Befehle einer Folge von Befehlen, die durch eine Codelinie der Codelinien repräsentiert sind.
  13. Verfahren nach Anspruch 10 oder 11, wobei die Befehle in der Folge von Befehlen Elementaroperationen umfassen.
  14. Verfahren nach einem der Ansprüche 9 bis 13, wobei der Chip eine erste Datenverarbeitungseinheit (DPU) einer Mehrzahl von DPUs ist, die jeweils einen jeweiligen nichtflüchtigen Speicher und eine oder mehrere jeweilige Verarbeitungseinheiten enthalten, wobei das Verfahren ferner umfasst: Übertragen von Daten oder Befehlen unter der Mehrzahl von DPUs durch einen oder mehrere Router.
  15. Verfahren nach einem der Ansprüche 9 bis 14, das ferner umfasst: Zuordnen einer ersten Gruppe wählbarer Orte der Mehrzahl wählbarer Orte zu einer bestimmten Datenlinie der Mehrzahl von Datenlinien, die einer bestimmten Verarbeitungseinheit der Mehrzahl von Verarbeitungseinheiten zugeordnet sind, zu einem ersten Zeitpunkt; und Zuordnen einer zweiten Gruppe wählbarer Orte der Mehrzahl wählbarer Orte zu der bestimmten Datenlinie, wobei die erste Gruppe wählbarer Orte von der zweiten Gruppe wählbarer Orte verschieden ist, zu einem zweiten Zeitpunkt.
  16. Prozessor in einer Speichervorrichtung, der enthält: eine Mehrzahl von Mitteln zum Berechnen entsprechender Ergebnisse auf der Grundlage von Daten in Datenlinien bzw. -zeilen, die jeweils einen oder mehrere wählbare Orte eines nichtflüchtigen Speichers enthalten, der in eine Mehrzahl wählbarer Orte geteilt ist, wobei jeder wählbare Ort in dem nichtflüchtigen Speicher dafür konfiguriert ist, unabhängig programmiert und gelöscht zu werden, wobei jedes der Mehrzahl von Mitteln zum Berechnen einer Datenlinie der Mehrzahl von Datenlinien zugeordnet ist und wobei die Mehrzahl von Mitteln zum Berechnen und der nichtflüchtige Speicher in demselben Chip enthalten sind; und Mittel zum wahlweisen Ändern von Daten an ausgewählten Orten der Datenlinien, die zum Speichern von Ergebnissen der Berechnung von dem Mittel zum Berechnen, die der Datenlinie zugeordnet sind, reserviert sind, auf der Grundlage der entsprechenden Ergebnisse.
  17. Prozessor in einer Speichervorrichtung nach Anspruch 16, wobei die Mehrzahl von Mitteln zum Berechnen dafür konfiguriert sind, die entsprechenden Ergebnisse auf der Grundlage von Ausführungscode zu berechnen, wobei der Prozessor ferner enthält: Mittel zum Erhalten des Ausführungscodes aus dem nichtflüchtigen Speicher, der Codelinien bzw. -zeilen enthält.
  18. Prozessor in einer Speichervorrichtung nach Anspruch 17, wobei der Ausführungscode in jeder der Codelinien eine Folge von Befehlen enthält, wobei jedes der Mehrzahl von Mitteln zum Berechnen dafür konfiguriert ist, auf der Grundlage jeweiliger Befehle einer Folge von Befehlen, die durch eine Codelinie der Codelinien repräsentiert sind, gleichzeitig Ergebnisse für eine zugeordnete Datenlinie der Mehrzahl von Datenlinien zu berechnen.
  19. Prozessor in einer Speichervorrichtung nach Anspruch 18, wobei die Befehle in der Folge von Befehlen Elementaroperationen enthalten.
  20. Prozessor in einer Speichervorrichtung nach einem der Ansprüche 16 bis 19, wobei der Prozessor in der Speichervorrichtung eine integrierte Schaltung (IC) ist.
DE102017121298.1A 2016-12-30 2017-09-14 Prozessor in nichtflüchtigem Ablagespeicher Withdrawn DE102017121298A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/395,474 2016-12-30
US15/395,474 US10885985B2 (en) 2016-12-30 2016-12-30 Processor in non-volatile storage memory

Publications (1)

Publication Number Publication Date
DE102017121298A1 true DE102017121298A1 (de) 2018-07-05

Family

ID=62568005

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017121298.1A Withdrawn DE102017121298A1 (de) 2016-12-30 2017-09-14 Prozessor in nichtflüchtigem Ablagespeicher

Country Status (3)

Country Link
US (2) US10885985B2 (de)
CN (1) CN108269601B (de)
DE (1) DE102017121298A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110795144B (zh) * 2019-10-30 2023-05-12 喻海松 一种代码共享的商业模式、方法及系统
US10971215B1 (en) * 2020-02-24 2021-04-06 Western Digital Technologies, Inc. Dynamically adjust data transfer speed for non-volatile memory die interfaces
TWI773106B (zh) * 2021-01-28 2022-08-01 華邦電子股份有限公司 具有運算功能的記憶體裝置及其操作方法

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3533800C1 (de) 1985-09-21 1987-02-05 Hans-Werner Lang Verfahren zum Betreiben eines hochintegrierten Wellenfront-Feldrechners sowie entsprechender Wellenfront-Feldrechner
US5323335A (en) 1991-07-05 1994-06-21 General Electric Co. Regular and fault-tolerant Kalman filter systolic arrays
JP3403298B2 (ja) 1996-10-25 2003-05-06 シャープ株式会社 演算処理装置およびマイクロプロセッサ
US5983321A (en) * 1997-03-12 1999-11-09 Advanced Micro Devices, Inc. Cache holding register for receiving instruction packets and for providing the instruction packets to a predecode unit and instruction cache
US6542955B1 (en) 1999-06-03 2003-04-01 Programmable Microelectronics Corporation Microcontroller virtual memory system and method
US20020004897A1 (en) * 2000-07-05 2002-01-10 Min-Cheng Kao Data processing apparatus for executing multiple instruction sets
US7546438B2 (en) * 2001-07-19 2009-06-09 Chung Shine C Algorithm mapping, specialized instructions and architecture features for smart memory computing
US20040003201A1 (en) 2002-06-28 2004-01-01 Koninklijke Philips Electronics N.V. Division on an array processor
US7665078B2 (en) * 2003-08-21 2010-02-16 Gateway, Inc. Huffman-L compiler optimized for cell-based computers or other computers having reconfigurable instruction sets
US7496908B2 (en) * 2004-01-14 2009-02-24 International Business Machines Corporation Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information
US7181599B2 (en) * 2004-01-14 2007-02-20 International Business Machines Corporation Method and apparatus for autonomic detection of cache “chase tail” conditions and storage of instructions/data in “chase tail” data structure
US7318143B2 (en) * 2004-10-20 2008-01-08 Arm Limited Reuseable configuration data
US7587577B2 (en) * 2005-11-14 2009-09-08 Texas Instruments Incorporated Pipelined access by FFT and filter units in co-processor and system bus slave to memory blocks via switch coupling based on control register content
US8201159B2 (en) 2006-08-04 2012-06-12 International Business Machines Corporation Method and apparatus for generating data parallel select operations in a pervasively data parallel system
US7571300B2 (en) * 2007-01-08 2009-08-04 Integrated Device Technologies, Inc. Modular distributive arithmetic logic unit
DE212007000102U1 (de) 2007-09-11 2010-03-18 Core Logic, Inc. Rekonfigurierbarer Array-Prozessor für Gleitkomma-Operationen
US20110004742A1 (en) * 2009-07-06 2011-01-06 Eonsil, Inc. Variable-Cycle, Event-Driven Multi-Execution Flash Processor
KR101634118B1 (ko) 2010-03-22 2016-06-29 삼성전자주식회사 메모리 관리 장치 및 방법
US9880848B2 (en) * 2010-06-11 2018-01-30 Advanced Micro Devices, Inc. Processor support for hardware transactional memory
WO2013048497A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
WO2014006605A2 (en) 2012-07-06 2014-01-09 Koninklijke Philips N.V. Computer processor and system without an arithmetic and logic unit
US9304749B2 (en) * 2013-09-12 2016-04-05 Marvell World Trade Ltd. Method and system for instruction scheduling
WO2015045472A1 (ja) * 2013-09-24 2015-04-02 富士通株式会社 シミュレーション装置、シミュレーション方法およびシミュレーションプログラム
US9003109B1 (en) * 2014-05-29 2015-04-07 SanDisk Technologies, Inc. System and method for distributed computing in non-volatile memory
WO2016088234A1 (ja) * 2014-12-04 2016-06-09 株式会社 東芝 異なる特性の不揮発性半導体メモリの寿命を長くするストレージ装置
WO2017065379A1 (ko) * 2015-10-16 2017-04-20 삼성전자 주식회사 프로세싱-인-메모리를 이용한 명령어 처리 방법 및 그 장치

Also Published As

Publication number Publication date
US11705207B2 (en) 2023-07-18
CN108269601A (zh) 2018-07-10
US20210082520A1 (en) 2021-03-18
US20180188973A1 (en) 2018-07-05
US10885985B2 (en) 2021-01-05
CN108269601B (zh) 2021-09-03

Similar Documents

Publication Publication Date Title
DE102017120965A1 (de) Prozessor in nichtflüchtigem Ablagespeicher
DE102018119513A1 (de) Neuronalnetzbeschleuniger mit Parametern, die sich auf einem Chip befinden
DE102017121825A1 (de) Rechenkachel für neuronale Netze
DE102017120588A1 (de) Befehlssatzarchitektur für neuronale Netze
DE202018100904U1 (de) Permutieren in einem Matrix-Vektor-Prozessor
DE102007050406A1 (de) Speicherpuffer und Verfahren zum Puffern von Daten
DE102020112826A1 (de) Verfahren zur effizienten durchführung von datenreduktionen in parallelverarbeitungseinheiten
DE112015005597T5 (de) Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor
DE102013020968A1 (de) Technik zum Zugreifen auf einen inhaltsadressierbaren Speicher
DE102021107050A1 (de) Gradientenkomprimierung für verteiltes training
DE102017121298A1 (de) Prozessor in nichtflüchtigem Ablagespeicher
DE112020001937T5 (de) Vorausschauender datenvorabruf in einer datenspeicher-vorrichtung
EP2765528A1 (de) Wahlfreier Zugriff auf Signalwerte eines FPGA zur Laufzeit
DE112019000676T5 (de) Zentraler scheduler und anweisungszuteiler für einen neuronalen inferenzprozessor
DE102013020485A1 (de) Technik zur Ausführung von Speicherzugriffsoperationen über eine Textur-Hardware
DE102019103114A1 (de) Speichersteuereinrichtung und Anwendungsprozessor für eine gesteuerte Auslastung und Leistung einer Eingabe/Ausgabe-Vorrichtung und Verfahren zur Betätigung der Speichersteuereinrichtung
DE112020000748B4 (de) Adresserzeugung zur hochleistungsverarbeitung von vektoren
DE102019111133A1 (de) Speichereinrichtung, die eine Menge von kommunizierten Daten abhängig von einer Aussetzhäufigkeit einer Operation drosselt
DE102010044529A1 (de) Autonome Subsystem-Architektur
DE112018002500T5 (de) Speicherarray für Hybriddaten
DE102020124761A1 (de) Speicher-Controller und Speicher-Vorrichtung mit demselben und Betriebsverfahren für denselben
DE102020103521A1 (de) Minimieren der Nutzung von Hardware-Zählern bei getriggerten Operationen für kollektive Kommunikation
DE102021107510A1 (de) Training eines neuronalen netzwerks unter speicherbeschränkung
DE112020003004T5 (de) Dma-scatter- und gather-operationen für nicht zusammenhängenden speicher
DE102013020967A1 (de) Technik zur Ausführung von Speicherzugriffsoperationen über eine Textur-Hardware

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee