-
Technisches Gebiet
-
Verschiedene Ausführungsbeispiele betreffen im Allgemeinen Speichervorrichtungen.
-
Hintergrund
-
In einem Von-Neumann-Computer-Architektur-System, werden Daten in einem Speicher gespeichert, und alle Berechnungen, die die Daten betreffen, werden auf einer Zentralen Verarbeitungseinheit (CPU) durchgeführt. Daher erfordert die Von-Neumann-Computer-Architektur, dass Daten vom Speicher zur CPU und später, nach den erforderlichen Berechnungen, wieder zurück dorthin verschoben werden. Diese Art eines Systems erreicht jedoch ihre Leistungsgrenzen. Das Verschieben von Daten vom Speicher zur CPU und zurück erfordert viel Zeit (Bandbreite) und Energie.
-
Fortschritte in der Von-Neumann-Architektur haben zu prozessorinternen Merkmalen betreffend Parallelität auf Befehlsebene (ILP) (z.B. Pipelined-Prozessoren, VLIW, Superskalare usw.), Parallelität auf Datenebene (DLP) (z. B., SIMD), Parallelität auf Thread-Ebene (TLP) (z.B. Single Instruction Multiple Threads (SIMT) Grafikverarbeitungseinheiten (GPUs)), Parallelität auf Graphenebene, Cache-Architekturen, Multi-Kerne usw. Es wird versucht die Latenzen, die mit der Datenverschiebung verbunden sind, durch verschiedene Prozessormerkmale zu verbergen, was zu immer komplexeren Architekturen führt.
-
Diese derartigen Verbesserungen gehen auf Kosten von zusätzlichen Logikgattern und Leistungsverbrauch und damit Verlusten. Diese Architekturen verspüren nun Rückgänge der Leistungsverbesserung, und dadurch werden sich wahrscheinlich zukünftige Erfolge solcher Ansätze in Zukunft signifikant verringern.
-
Figurenliste
-
In den Zeichnungen beziehen sich die gleichen Bezugszeichen im Allgemeinen auf dieselben Teile in den verschiedenen Ansichten. Die Zeichnungen sind nicht notwendigerweise maßstabsgetreu, sondern der Schwerpunkt liegt im Allgemeinen auf der Veranschaulichung der Prinzipien der Erfindung. In der folgenden Beschreibung werden verschiedene Ausgestaltungen der Erfindung beschrieben unter Bezugnahme auf die folgenden Zeichnungen, in denen:
- 1 ein Blockdiagramm einer herkömmlichen Speichervorrichtung oder eines -Systems 100 ist.
- 2 ein Blockdiagramm eines konventionellen Computer-Architektur-Systems ist.
- 3 ein Blockdiagramm einer Speichervorrichtung oder eines Systems gemäß beispielhaften Ausgestaltungen der vorliegenden Offenbarung ist.
- 4 ein Blockdiagramm eines beispielhaften Computersystems gemäß beispielhaften Ausgestaltungen der vorliegenden Offenbarung ist.
- 5 ein Blockdiagramm einer Verarbeitungseinheit gemäß beispielhaften Ausgestaltungen der vorliegenden Offenbarung ist.
- 6-7 Darstellungen von beispielhaften Daten-Kennzeichnungen gemäß beispielhaften Ausgestaltungen der vorliegenden Offenbarung sind.
- 8 eine beispielhafte Platzierung von Daten- Kennzeichnungen in Speicherzellen gemäß beispielhaften Ausgestaltungen der vorliegenden Offenbarung zeigt.
- 9 eine Darstellung, die eine Matrixmultiplikation repräsentiert, und einen korrespondierenden Code gemäß beispielhaften Ausgestaltungen der vorliegenden Offenbarung zeigt.
-
Beschreibung
-
Die folgende detaillierte Beschreibung bezieht sich auf die beigefügten Zeichnungen, die zur Veranschaulichung spezifische Details und Ausgestaltungen der Erfindung darstellen, in denen die Erfindung genutzt werden kann.
-
Das Wort „beispielhaft“ wird hierein in der Bedeutung von „als ein Beispiel, ein Exemplar oder eine Veranschaulichung dienend“ verwendet. Jede Ausgestaltung oder Gestaltung, die hierin als „beispielhaft“ beschrieben wird, ist nicht notwendigerweise als bevorzugt oder vorteilhaft gegenüber anderen Ausgestaltungen bzw. Gestaltungen auszulegen.
-
Die Worte „Mehrzahl“ und „mehrfach“ in der Beschreibung oder den Ansprüchen beziehen sich ausdrücklich auf eine Anzahl größer als eins. Die Ausdrücke „Gruppe (von)“, „Menge (von)“, „Sammlung (von)“, „Abfolge (von)“, „Sequenz (von)“, „Gruppierung (von)“, usw., und dergleichen in der Beschreibung oder in den Ansprüchen beziehen sich auf eine Anzahl gleich oder größer als eins, d.h. ein oder mehrere. Jeder Begriff, der in der Pluralform ausgedrückt wird und nicht ausdrücklich „Mehrzahl“ oder „Vielfaches“ heißt, bezieht sich ebenfalls auf eine Anzahl, die gleich oder größer als eins ist. Die Begriffe „richtige Teilmenge“, „reduzierte Teilmenge“ und „kleinere Teilmenge“ beziehen sich auf eine Teilmenge einer Menge, die nicht gleich der Menge ist, d. h. eine Teilmenge einer Menge, die weniger Elemente beinhaltet als die Menge.
-
Die Begriffe „mindestens einer“ und „einer oder mehrere“ können so verstanden werden, dass sie eine numerische Anzahl aufweisen, die größer oder gleich eins ist (z. B. eins, zwei, drei, vier, [...], usw.).
-
Wie hierin verwendet, sofern nicht anders angegeben, bezeichnet die Verwendung der ordinalen Adjektive „erster“, „zweiter“, „dritter“ usw. zum Beschreiben eines gemeinsamen Objekts lediglich, dass auf verschiedene Instanzen gleicher Objekte Bezug genommen wird, und soll nicht implizieren, dass die so beschriebenen Objekte in einer vorgegebenen Reihenfolge sein müssen, sei es zeitlich, räumlich, in der Rangfolge oder in einer anderen Weise.
-
Der Begriff „Daten“, wie er hierin verwendet wird, kann so verstanden werden, dass er Informationen in jeder geeigneten analogen oder digitalen Form aufweist, z. B. bereitgestellt als eine Datei, als ein Abschnitt einer Datei, als eine Menge von Dateien, als ein Signal oder Stream, als ein Abschnitt eines Signals oder Streams, als Menge von Signalen oder Streams und dergleichen. Ferner kann der Begriff „Daten“ auch verwendet werden, um eine Referenz auf Informationen zu bezeichnen, z.B. in Form eines Zeigers. Der Begriff „Daten“ ist jedoch nicht auf die vorgenannten Beispiele beschränkt, und kann verschiedene Formen annehmen und jede Information im Sinne des Standes der Technik repräsentieren.
-
Der Begriff „Prozessor“ oder „Steuerungsvorrichtung“, wie zum Beispiel hierin verwendet, kann als jede Art von Entität verstanden werden, die ein Verarbeiten von Daten, Signalen, usw. ermöglicht. Die Daten, Signale, usw. können gemäß ein oder mehreren spezifischen Funktionen, die durch den Prozessor oder die Steuerungsvorrichtung ausgeführt werden, verarbeitet werden.
-
Ein Prozessor bzw. eine Steuerungsvorrichtung kann daher sein oder aufweisen: eine analoge Schaltung, eine digitale Schaltung, eine Mischsignalschaltung, eine Logikschaltung, einen Prozessor, einen Mikroprozessor, eine zentrale Verarbeitungseinheit (CPU), eine neuromorphe Computereinheit (NCU), eine Grafikverarbeitungseinheit (GPU), einen digitalen Signalprozessor (DSP), eine im Feld programmierbare Gatter-Anordnung (FPGA), eine integrierte Schaltung, eine anwendungsspezifische integrierte Schaltung (ASIC), usw., oder irgendeine Kombination davon. Jede andere Art der Implementierung der jeweiligen Funktionen, welche im Folgenden ausführlicher beschrieben werden, können auch als ein Prozessor, als eine Steuerungsvorrichtung oder als eine Logikschaltung verstanden werden. Es versteht sich, dass beliebige zwei (oder mehrere) der hierin beschriebenen Prozessoren, Steuerungsvorrichtungen oder Logikschaltungen als eine einzelne Entität mit gleichwertiger Funktionalität oder dergleichen realisiert werden können, und dass umgekehrt ein einzelner hierin beschriebener Prozessor, eine Steuerungsvorrichtung oder eine Logikschaltung als zwei (oder mehrere) separate Entitäten mit gleichwertiger Funktionalität oder dergleichen realisiert werden kann.
-
Eine „Schaltung“, wie hierin verwendet, wird verstanden als jede Art von Logik-implementierender Entität, die Hardware zur besonderen Verwendung oder einen Software-ausführenden Prozessor aufweisen kann. Eine Schaltung kann daher sein: eine analoge Schaltung, eine digitale Schaltung, eine Mischsignalschaltung, eine Logikschaltung, ein Prozessor, ein Mikroprozessor, ein Signalprozessor, eine zentrale Verarbeitungseinheit („CPU“), eine Grafikverarbeitungseinheit („GPU“), eine neuromorphe Computereinheit (NCU), ein digitaler Signalprozessor („DSP“), eine im Feld programmierbare Gatter-Anordnung (FPGA), eine integrierte Schaltung, eine anwendungsspezifische integrierte Schaltung (ASIC), usw., oder irgendeine Kombination davon. Jede andere Art der Implementierung der jeweiligen Funktionen, welche im Folgenden ausführlicher beschrieben werden, kann auch als eine „Schaltung“ verstanden werden. Es versteht sich, dass zwei (oder mehrere) der hierin beschriebenen Schaltungen als eine einzige Schaltung mit im Wesentlichen gleicher Funktionalität realisiert werden können. Umgekehrt kann jede einzelne hier beschriebene Schaltung als zwei (oder mehrere) separate Schaltungen mit im Wesentlichen gleichwertiger Funktionalität realisiert werden. Darüber hinaus können sich Verweise auf eine „Schaltung“ auf zwei oder mehrere Schaltungen beziehen, die zusammen eine einzige Schaltung bilden.
-
Die hierin verwendeten Begriffe „Modul“, „Komponente,“ „System“, „Schaltung“, „Element“, „Teil“, „Schaltkreis“ und dergleichen sollen sich auf eine Menge beziehen aus ein oder mehreren elektronischen Komponenten, einer computerbezogenen Entität, Hardware, Software (z.B. während eines Ausführens), und/oder Firmware. Beispielsweise kann eine Schaltung oder ein ähnlicher Begriff ein Prozessor, ein auf einem Prozessor laufender Prozess, eine Steuerungsvorrichtung, ein Objekt, ein ausführbares Programm, eine Speichervorrichtung und/oder ein Computer aufweisend eine Verarbeitungsvorrichtung sein. Zur Veranschaulichung: eine auf einem Server laufende Anwendung und der Server können auch eine Schaltung sein. Eine oder mehrere Schaltungen können sich in derselben Schaltung befinden, und die Schaltung kann auf einem Computer lokalisiert und/oder auf zwei oder mehrere Computer verteilt sein. Eine Menge von Elementen oder eine Menge von anderen Schaltungen kann hierin beschrieben werden, wobei der Begriff „Menge“ als „ein oder mehrere“ interpretiert werden kann.
-
Wie hierin verwendet, kann ein Signal durch eine Signalkette übertragen bzw. geleitet werden, in der das Signal verarbeitet wird, um Charakteristika, wie beispielsweise eine Phase, eine Amplitude, eine Frequenz usw., zu verändern. Das Signal kann als das selbe Signal bezeichnet werden, auch wenn solche Charakteristika adaptiert sind. Im Allgemeinen kann ein Signal, solange es dieselbe Information kodiert, als dasselbe Signal betrachtet werden. Beispielsweise kann ein Übertragungssignal als das Übertragungssignal betrachtet werden, das sich auf die Basisband-, die Zwischen- und in die Hochfrequenzen bezieht.
-
Wie hierin verwendet, kann ein Signal, das „bezeichnend für“ einen Wert oder eine andere Information ist, ein digitales oder analoges Signal sein, das den Wert oder andere Informationen kodiert oder diese anderweitig kommuniziert in einer Weise, die dekodiert werden kann von und/oder eine Antwortaktion veranlassen kann in einer Komponente, die das Signal empfängt. Das Signal kann in einem computerlesbaren Speichermedium gespeichert oder gepuffert werden, vor seinem Empfang durch die empfangende Komponente. Die empfangende Komponente kann das Signal aus dem Speichermedium abfragen. Ferner kann ein „Wert“, der „ bezeichnend für“ eine Anzahl, ein Zustand oder ein Parameter ist, physisch ausgestaltet sein als ein digitales Signal, als ein analoges Signal oder als gespeicherte Bits, die den Wert kodieren oder diesen anderweitig kommunizieren.
-
Es versteht sich, dass wenn ein Element als „verbunden“ oder „gekoppelt“ mit einem anderen Element bezeichnet wird, kann es physisch mit dem anderen Element verbunden oder gekoppelt sein, so dass Strom und/oder elektromagnetische Strahlung (z. B. ein Signal) fließen kann entlang eines leitenden Pfades, der zwischen den Elementen gebildet ist. Zwischengeschaltete leitende, induktive oder kapazitive Elemente können zwischen dem Element und dem anderen Element vorhanden sein, wenn die Elemente als miteinander gekoppelt oder verbunden beschrieben werden. Ferner kann, wenn ein miteinander gekoppelt oder verbunden, ein Element in der Lage sein, eine Spannung oder einen Stromfluss oder eine Ausbreitung einer elektromagnetischen Welle im anderen Element ohne physischen Kontakt oder intervenierende Komponenten zu induzieren. Ferner kann, wenn eine Spannung, ein Strom oder ein Signal als an ein Element „angelegt“ bezeichnet wird, die Spannung, der Strom oder das Signal an das Element geleitet werden mittels einer physischen Verbindung oder mittels einer kapazitiven, elektromagnetischen oder induktiven Kopplung, die keine physische Verbindung zur Folge hat.
-
Wie hierin verwendet, wird „Speicher“ als ein nicht-transitorisches, computerlesbares Medium verstanden, in dem Daten oder Informationen zum Abfragen gespeichert werden können. Bezüge auf „Speicher“, die hierin vorhanden sind, können so verstanden werden, dass sie sich auf flüchtige oder nichtflüchtige Speicher beziehen, aufweisend Speicher mit wahlfreiem Zugriff (RAM), Nur-Lese-Speicher (ROM), Flash-Speicher, Festkörperspeicher, Magnetband, Festplattenlaufwerk, optisches Laufwerk usw. oder eine Kombination davon. Darüber werden auch Register, Schieberegister, Prozessorregister, Datenpuffer usw. hierin durch den Begriff „Speicher“ umfasst. Eine einzelne Komponente, die als „Speicher“ oder „ein Speicher“ bezeichnet wird, kann aus mehr als einer unterschiedlichen Arten von Speicher zusammengestellt sein und sich damit auf eine gemeinsame Komponente beziehen, die ein oder mehrere Arten von Speichern aufweist. Eine einzelne Speicherkomponente kann in mehrere insgesamt gleichwertige Speicherkomponenten separiert werden und umgekehrt. Darüber hinaus kann der Speicher zwar getrennt von einer oder mehreren anderen Komponenten dargestellt sein (wie in den Zeichnungen), aber der Speicher kann auch mit anderen Komponenten integriert sein, z. B. auf einem gemeinsamen integrierten Chip oder einer Steuerungsvorrichtung, die einen eingebetteten Speicher aufweist.
-
Der Begriff „Software“ bezieht sich auf jede Art von ausführbaren Befehlen, einschließlich Firmware.
-
Beispielhafte Ausgestaltungen der vorliegenden Offenbarung können realisiert werden durch ein oder mehrere Computer (oder Rechenvorrichtungen), die computerausführbare Befehle, die auf einem Speichermedium (z.B. einem nicht-transitorischen, computerlesbaren Speichermedium) aufgezeichnet sind, auslesen und ausführen zum Durchführen der Funktionen von ein oder mehrerer der hierin beschriebenen Ausgestaltung(en) der Offenbarung. Der/die Computer kann/können aufweisen ein oder mehrere Zentrale Verarbeitungseinheiten (CPU), eine Mikroverarbeitungseinheit (MPU) oder andere Schaltungen und kann/können ein Netzwerk von separaten Computern oder separaten Computerprozessoren aufweisen. Die computerausführbaren Befehle können dem Computer beispielsweise von einem Netzwerk oder einem nichtflüchtigen, computerlesbaren Speichermedium bereitgestellt werden. Das Speichermedium kann beispielsweise aufweisen eine oder mehrere Festplatten, einen Speicher mit wahlfreiem Zugriff (RAM), einen Nur-Lese-Speicher (ROM), einen Speicher von verteilten Rechensystemen, ein optisches Laufwerk (wie eine Compact Disc (CD), eine Digital Versatile Disc (DVD) oder eine Blu-ray Disc (BD)), eine Flash- Speichervorrichtung, eine Speicherkarte und dergleichen. Zur Veranschaulichung werden spezifische Details und Ausgestaltungen dargestellt, in denen die Erfindung genutzt werden kann.
-
1 zeigt ein Blockdiagramm einer herkömmlichen Speichervorrichtung oder eines -Systems 100. Die Speichervorrichtung 100 kann Speicherzellen 110 und einen Speicher-Port oder eine -Schnittstelle 120 aufweisen, um auf die Speicherzellen 110 zuzugreifen und Daten zwischen der Speichervorrichtung 100 und einer oder mehreren Vorrichtungen auszutauschen. Wie dargestellt, kann die Speichervorrichtung 100 an einen Systembus 150 gekoppelt sein. Der Speicher-Port 120 kann über den Bus mit den anderen Vorrichtungen kommunizieren.
-
Die Speichervorrichtung 100 kann in dem konventionellen Computer-Architektur-System 200 verwendet werden, wie in 2 gezeigt. Das System 200 kann einen Prozessor 200 aufweisen (z.B. eine Zentrale Verarbeitungseinheit (CPU)). Der Prozessor 200 koppelt an andere Komponenten, z. B. die Speichervorrichtungen 100, über den Systembus 150. Im System 200 kann eine Sequenz von gespeicherten Befehlen ausgeführt werden in einer Befehlssequenz, die von einem Befehlszähler des Prozessors 210 gesteuert wird. Die Befehle können Operationen an Daten durchführen (z. B. Additions- und Multiplikationsbefehle) oder Daten lesen, um den Programmablauf zwischen den Befehlen zu steuern (z. B. Verzweigungsbefehle). Jeder Befehl ist im Allgemeinen nacheinander auf einer einzelnen integrierten arithmetisch-logischen Einheit ausführbar. Computer-Architekturen wie das System 200 können (ein Programm von) Befehlen und Anfangsdaten zur Ausführung erhalten.
-
Verbesserungen für Architekturen wie das System 200 zielen in der Regel auf Prozessor- oder CPU-Verbesserungen ab. Die Konzentration auf CPU-Verbesserungen hat jedoch zu unausgewogenen Systemen geführt. Eine Verarbeitung erfolgt nur an einer Stelle, während andere Komponenten (z. B. Speicher) nur zum Abfragen von Daten verwendet werden. Die Verbesserungen neigen dazu, energieineffizient bei schwacher Leistung zu sein, während sie zu vielen Kompliziertheiten führen (z.B. aufgeblähten Prozessor(en) mit komplexen Mechanismen).
-
3 zeigt eine beispielhafte Speichervorrichtung oder -System 300, das für verbesserte Computer-Architekturen verwendet werden kann. Die Speichervorrichtung 300 kann als ein Prozessor-im-Speicher (PIM) betrachtet werden. Wie dargestellt, kann die Speichervorrichtung 300 aufweisen einen Speicher-Port/eine Speicher-Schnittstelle 310, Speicherzellen 320, eine Logik- oder Verarbeitungseinheit 330 und eine Steuerlogik-Schaltung 340. Die Komponenten der Speichervorrichtung 300 können operativ über jede geeignete Schnittstelle miteinander verbunden sein. Darüber hinaus wird angemerkt, dass nicht alle Verbindungen zwischen den Komponenten explizit dargestellt sind, und andere Schnittstellen zwischen den Komponenten können durch den Umfang dieser Offenbarung abgedeckt sein.
-
Die Speichervorrichtung 300 ist in der Lage und eingerichtet zum Integrieren von einer Datenspeicher-Speichermediumsfunktionalität und einer Rechenfunktionalität (z.B. mathematische und/oder logische Operationen). Der Speicher-Port 310 kann ein Zugriffsport sein, der zum Kommunizieren mit anderen Vorrichtungen oder Komponenten eingerichtet ist, die mit der Speichervorrichtung 300 operativ gekoppelt/verbunden sind. Der Speicher-Port 310 kann eingerichtet sein zum Zugriff auf die Speicherzellen, z. B. zum Speichern und/oder Abfragen von Daten in/aus den Speicherzellen 320.
-
Der Speicher-Port 310 kann eingerichtet oder fähig sein zum direkten Zugriff auf (z.B. zum direkten Speichern oder Abfragen von Daten auf/in) die Speicherzellen 320. In einigen Beispielen kann der Speicher-Port 310 gemäß der oder unter der Steuerung von der Steuerlogik-Schaltung 340 arbeiten. Das heißt, der Speicher-Port 310 kann von der Steuerlogik-Schaltung 340 kommandiert, angewiesen oder geleitet werden, mit anderen Vorrichtungen/Komponenten zu kommunizieren und/oder auf die Speicherzellen 320 zuzugreifen. Die Speichervorrichtung 300 kann über den Speicher-Port 310 an einen Systembus 350 gekoppelt sein, der sie mit einem oder mehreren anderen Vorrichtungen oder Komponenten verbindet oder koppelt. Der Speicher-Port oder die - Schnittstelle 310 kann eingerichtet sein zum Verwenden von jeder geeigneten Art von Protokoll oder Protokollen zur Kommunikation oder Ankopplung an externe Komponenten oder Vorrichtungen beispielsweise aufweisend Standardschnittstellen wie Advanced eXtensible Interface (AXI), Wishbone, Shared Resource Interconnect (SRI) usw.
-
Wie in 3 gezeigt, können die Speicherzellen 320 der Speichervorrichtung 300 als zwei Arten oder Gruppen von Speicherzellen betrachtet oder behandelt werden, die hier als Prozessor-Speicherzellen 320a und Legacy-Speicherzellen 320b identifiziert werden. Die Prozessor-Speicherzellen 320a können Speicherzellen sein, auf die von der Logikeinheit oder Verarbeitungseinheit 330 zugegriffen werden kann. Die Prozessor-Speicherzellen 320 können Informationen wie Daten, Code usw. für eine Verwendung durch Logikeinheit 330 speichern oder aufweisen.
-
Die Logikeinheit 330 kann ein Prozessor oder eine Verarbeitungsschaltung sein, der/die eingerichtet ist zum Ausführen von Befehlen (z. B. Code) und zum Betreiben oder Durchführen von Berechnungen unter Verwendung von Informationen, die in den Prozessor-Speicherzellen 320a gespeichert sind. Zum Verarbeiten kann die Logikeinheit 330 auf die Prozessor-Speicherzellen 320a exklusiv zugreifen, um Daten/Informationen abzufragen und zu speichern, soweit dies zum Durchführen einer oder mehrerer Operationen erforderlich ist. Die Logikeinheit 330 kann nur Daten aus den Prozessor-Speicherzellen 320 verwenden zum Durchführen von Operationen (z. B. logische, mathematische, bitweise Operationen usw.). Die Logikeinheit kann in einigen Ausgestaltungen eine arithmetisch-logische Einheit (ALU) sein.
-
Wie beschrieben, können die Speicherzellen 320 auch Legacy-Zellen 320b aufweisen, die als herkömmlicher Speicher arbeiten können. Die Legacy-Speicherzellen 320b können als Speicher für andere Komponenten (z. B. Prozessoren, Vorrichtungen usw.) außerhalb der Speichervorrichtung 300 verwendet werden. Ferner müssen die Legacy-Speicherzellen 320b keine Daten für die vorrichtungsinterne Verarbeitung, z. B. durch die Logikeinheit 340, speichern.
-
In verschiedenen Ausgestaltungen kann die Unterscheidung oder Verteilung von Prozessor-Speicherzellen 320a und den Legacy-Zellen 320b nicht fest oder statisch sein. Mit anderen Worten, die Speicherzellen 320, die als Prozessor-Speicherzellen 320a identifiziert oder bestimmt sind, und die Speicherzellen 320, die als Legacy-Speicherzellen 320b identifiziert oder bestimmt sind, können variieren abhängig von den erkannten Umständen oder einem Betrieb der Speichervorrichtung. In einigen Beispielen kann die Speichervorrichtung 300, z. B. durch die Steuerlogik-Schaltung 330 eingerichtet sein zum Bestimmen einer geeigneten oder angemessenen Untermenge der Speicherzellen als Prozessor-Speicherzellen 320a und zum Bestimmen einer anderen oder einer unterschiedlichen Untermenge der Speicherzellen als Legacy-Speicherzellen 320b.
-
Ferner kann gemäß ein oder mehrerer beispielhafter Ausgestaltungen der vorliegenden Offenbarung die Speichervorrichtung 300 eingerichtet sein, um in unterschiedlichen Wegen oder Modi unterschiedlich zu funktionieren.
-
Zum Beispiel kann die Speichervorrichtung 300 eingerichtet sein zum Arbeiten in einem ersten Modus, der mit dem Betrieb oder der Verwendung der Logikeinheit 330 verbunden ist. Zum Beispiel, wenn die Speichervorrichtung 330 im ersten Modus arbeitet, ist der Speicher-Port 310 eingerichtet zum Austauschen von Mitteilungen mit anderen elektronischen Vorrichtungen.
-
Während oder wenn sich die Speichervorrichtung im ersten Modus befindet, kann der Speicher-Port 310 Mitteilungen austauschen, die sich auf Speichern, Abfragen und/oder Verarbeiten von Daten in den Prozessor-Speicherzellen 320a beziehen oder diese betreffen. Der Speicher-Port 310 kann Code oder Befehle zur Ausführung durch die Logikeinheit 330 und zu bearbeitende Daten oder Daten, die aus Operationen der Logikeinheit 330 resultieren, erhalten. Im ersten Modus führt die Logikeinheit 330 Operationen durch, z.B. verarbeitet oder bearbeitet sie Daten aus den Prozessor-Speicherzellen 320a.
-
In einigen beispielhaften Ausgestaltungen der vorliegenden Offenbarung kann der Speicher-Port 310 auch derart eingerichtet sein, auf die Legacy-Speicherzellen 320b direkt zuzugreifen. Das heißt, während der Speicher-Port 310 im ersten Modus, z.B. unter der Steuerung der Steuerlogik-Schaltung 340, allgemein auf die Prozessor-Speicherzellen 320a für verarbeitungsintern-bezogene Operationen (z.B. durch die Logikeinheit 330) zugreifen kann, kann er aber auch in der Lage sein, direkt auf die Legacy-Speicherzellen 320b zuzugreifen (z. B. um darauf zu speichern und um diese abzufragen). Die Verwendung oder der Zugriff auf die Legacy-Speicherzellen 320b kann in einem konventionellen Sinne und zur vorrichtungsinternen Verarbeitung durch die Speichervorrichtung 300 erfolgen.
-
Die Logikeinheit 330 kann Operationen durchführen, wie z.B. skalare Operationen. Skalare Operationen, die durchgeführt werden können, können arithmetische Operationen (z.B. Addition, Subtraktion, Multiplikation, Division usw.), logische Operationen (z.B. UND, ODER, XOR, NICHT usw.), Punktproduktoperationen, Vektor-/Kreuzprodukt, Reduktionsoperationen usw. aufweisen, aber sind nicht darauf beschränkt. Ferner kann die Logikeinheit 330 im ersten Modus in der Lage sein, Single Instruction Multiple Data (SIMD)-Operationen durchzuführen. Wie hierin beschrieben, kann die Logikeinheit 330 nur unter Verwendung der Prozessor-Speicherzellen 320a Operationen verknüpfen und durchführen. Die Logikeinheit 330 kann jede geeignete Art von Schaltung zum Durchführen der oben genannten Art von Operationen sein, einschließlich beispielsweise einer ALU.
-
In verschiedenen Ausgestaltungen kann die Steuerlogik-Schaltung 340 eingerichtet sein zum Veranlassen der Logikeinheit 330, ein oder mehrere Verarbeitungsoperationen an Daten in den Prozessor-Speicherzellen durchzuführen.
-
Die Speichervorrichtung 300 kann auch in einem zweiten Modus arbeiten. Im zweiten Modus kann die Speichervorrichtung 300 eingerichtet sein zum Betreiben eines herkömmlichen Speichers. Während die Speichervorrichtung 300 im zweiten Modus arbeitet, können Daten direkt gespeichert oder abgefragt werden (z.B. über den Speicher-Port 310) aus den Legacy-Speicherzellen 320b. In einigen Fällen kann der Speicher-Port 310 nur auf Daten aus den Speicherzellen 320b zugreifen (z.B. direkt zugreifen). In einigen anderen Fällen können im zweiten Modus Daten auch in den Prozessor-Speicherzellen 320a (ebenfalls über den Speicher-Port 310) gespeichert und aus diesen abgefragt werden. In solchen Fällen kann jedoch, während die Speichervorrichtung 300 im zweiten Modus arbeitet, die ALU keine Operationen ausführen oder durchführen, z.B. führt sie keine Operationen an Daten in den Prozessor-Speicherzellen 320a durch.
-
In Ausgestaltungen kann die Speichervorrichtung getriggert werden, um in einem bestimmten Modus zu arbeiten, z.B. dem ersten oder zweiten Modus. In mindestens einem Beispiel kann die Speichervorrichtung 300 eingerichtet sein zum Arbeiten im ersten Modus (z.B. in dem die ALU arbeitet) als Antwort auf ein (Modus-)Steuersignal. Dieses Steuersignal kann von dem Speicher-Port 310 empfangen werden. In einigen Fällen kann der Speicher-Port 310 einen spezialisierten Port zum Empfangen eines solchen Steuersignals aufweisen. In anderen Fällen kann das Steuersignal über den/die gleiche(n) Port(s) oder Schnittstelle(n) wie andere Signale empfangen werden.
-
Zusätzlich kann der Speicher-Port 310 in der Lage dazu sein oder derart eingerichtet sein, um eine Slave-Schnittstelle zu sein, und in anderen Fällen als Master oder Master-Port/Schnittstelle arbeiten zu können. Beispielsweise kann der Speicher-Port 310 eingerichtet sein zum Arbeiten als Master, z.B. als Bus-Master, und zum Steuern von mindestens einer mit dem Speicher-Port 310 gekoppelten Bus (z.B. Bus 350). Die Steuerlogik-Schaltung 340 kann eingerichtet sein zum Veranlassen des Speicher-Port es 310, als Slave oder Bus-Master zu arbeiten.
-
4 zeigt ein Blockdiagramm eines beispielhaften Computersystems 400 gemäß beispielhaften Ausgestaltungen der vorliegenden Offenbarung. Das System 400 kann aufweisen eine Verarbeitungseinheit (z.B. eine vereinfachte CPU) 410, ein Speicher-Element oder -Vorrichtungen 420a und 420b, eine nichtflüchtige Speichereinheit 430 und eine zusätzliche Komponente 440. Diese Komponenten können über den Interconnect 450 miteinander gekoppelt sein. Der Interconnect 450 kann ein oder mehrere Busse aufweisen. In anderen Beispielen können ein oder mehrere andere Komponenten oder Vorrichtungen mit dem Interconnect gekoppelt sein. Es ist zu beachten, dass das Computersystem 400 beispielhaft ist und auch andere, im Stand der Technik bekannte Implementierungen realisiert und implementiert werden können.
-
Die Verarbeitungseinheit 410 kann eine vereinfachte oder „abgespeckte“ CPU sein. Im Beispiel von 4 weist die Verarbeitungseinheit 410 auf ein Statusregister 410a, eine arithmetisch-logische Einheit 410b, einen Befehlszähler 410c, ein oder mehrere Register 410d, einen Befehlsport 410e und einen Datenport 410f. Wie gezeigt, kann in einigen Fällen die Verarbeitungseinheit 410 weder einen reduzierten Cache noch überhaupt einen Cache aufweisen.
-
Die Speichervorrichtungen 420a und 420b können jeweils ein Prozessor-im-Speicher sein, z.B. die Speichervorrichtung 300 von 3, und können daher vorrichtungsinterne Berechnungen durchführen. Die Verarbeitungseinheit 410 kann eingerichtet sein zum Anfragen und Triggern der Speichervorrichtungen 420a und/oder 420b, vorrichtungsinterne Berechnungen durchzuführen. Mit anderen Worten, die Verarbeitungseinheit 410 kann Mitteilungen oder Signale über den Interconnect 450 senden, um die Speichereinrichtungen 420a und 420b zu veranlassen, gewisse Operationen vorrichtungsintern durchzuführen.
-
Die Operationen, die von der Speichervorrichtung 420a und 420b durchgeführt werden können, weisen ALU-Operationen wie zuvor beschrieben auf, z.B. Addition, Subtraktion, Multiplikation, Division, Verschiebung, Rotation, UND, ODER, XOR-Negation, Punktprodukte (z.B. innere, äußere), Vektorreduktion und dergleichen.
-
Ferner kann die CPU 410 Signale oder Mitteilungen für eine Speichervorrichtung (z.B. Speichervorrichtung 420a oder 420b) übertragen, um SIMD-bezogene Operationen durchzuführen.
-
Beispielsweise kann die CPU 410 Signale bezüglich der SIMD-Operationen senden, die aufweisen: Operandenadressen (z.B. Operand 1 und Operand 2), Operand Strides (z.B. Operand 1 Stride und Operand 2 Stride), Ergebnisadresse, Ergebnis Stride, Datentyp, Datenlänge, Operation. Stride- und Längeninformationen können bei dem Erledigen von Vektorberechnungen in der Speichervorrichtung 420a oder 420b helfen. Da die Operationen oder Berechnungen lokal in der Speichervorrichtung stattfinden, kann die Geschwindigkeit dieser Berechnungen die Berechnungsgeschwindigkeit weit übersteigen, die erreicht worden wäre, wenn die Daten zu einer CPU und später wieder in den Speicher zurück geschoben worden wären. Damit das Speicherelement 420 Operationen oder Berechnungen mit Daten durchführen kann, die sich in seinen Zellen 320 (z.B. Prozessor-Speicherzellen) befinden, benötigt es möglicherweise Informationen bezüglich der Eingangs- und Ausgangsoperanden.
-
Ferner kann, bezogen auf die Speichervorrichtungen 420a und 420b, die Verarbeitungseinheit 410 Handshake-Signale zur Synchronisierung oder zum Herstellen von Verbindungen senden. Die Handshake-Signale können Signale vom Typ Busy, ACK, Ready, Stall usw. aufweisen, die für die Synchronisation der beiden Zustandsmaschinen, der Verarbeitungseinheit 410 sowie der Speicherelemente (z. B. 420a oder 420b), benötigt werden können.
-
Wie beschrieben, können hierin beschriebene Speichervorrichtungen, z.B. die Speichervorrichtung 300 von 3, durch ein empfangenes Signal getriggert werden, um im ersten Modus zu arbeiten, z.B. dem Modus, in dem die Speichervorrichtung 300 vorrichtungsinterne Verarbeitungen durchführt. Andere Modussignale können auch gesendet werden, z.B. Modussignale (falls notwendig), um die Speichervorrichtung 420a oder 420b in einen zweiten Modus zu versetzen (z.B. wenn die Speichervorrichtung wie ein herkömmlicher Speicher arbeitet).
-
Während die Speichervorrichtungen 420a und 420b viele oder die meisten der benötigten Berechnungsoperationen durchführen können, kann die Verarbeitungseinheit 410 einige Berechnungen durchführen. Zum Beispiel kann die Verarbeitungseinheit 410 einige Vergleichs-, Zähl- und/oder grundlegende ALU-Operationen durchführen.
-
Die Speichervorrichtungen 420a und 420b können einen Master-Port und einen Slave-Port haben. In Ausgestaltungen können Befehle von der Verarbeitungseinheit 410 am Slave-Port empfangen werden und dann kann gemäß diesen gehandelt werden.
-
In einigen Fällen kann die Speichervorrichtung 420 (z.B. 420a und/oder 420b) eine Anfrage (z.B. eine Anfrage zum Ausführen von Anweisungen, die von der Verarbeitungseinheit 410 empfangen wurden) nicht selbst erfüllen. Das heißt, während die Speichervorrichtung dazu bestimmt sein kann, Anfragen zu erfüllen, kann sie die Erfüllung gewisser Anfragen an eine andere Vorrichtung delegieren. Beispielsweise können Befehle einen bestimmte Operation oder eine Berechnung anfragen oder erfordern, die außerhalb der Möglichkeiten der Logikeinheit 330 der Speichervorrichtung 420 ist. Demzufolge kann die Speichervorrichtung 420 eingerichtet sein, daraufhin auf eine andere Komponente oder eine andere Vorrichtung zuzugreifen.
-
Die Transaktionen oder Mitteilungen zwischen der Speichervorrichtung 420 (z.B. 420a oder 420b) und der Verarbeitungseinheit 410 können als Prozessor-im-Speicher (PIM)-Mitteilungen oder Legacy-Mitteilungen kategorisiert sein. Die Speichervorrichtung 420 kann eingerichtet sein zum Feststellen oder Ermitteln eines Befehls oder eines Befehls, der nicht durchgeführt werden kann, jedoch von der spezialisierten Einheit 440 durchgeführt werden kann. Die Speichervorrichtung 420 kann kommunizieren und die spezialisierte Einheit veranlassen oder anweisen, den/die Befehl(e) durchzuführen. Beispielsweise kann die Speichervorrichtung 420 über einen Master-Port des Speicher-Ports als Bus-Master fungieren, z.B. um vorübergehend mit der spezialisierten Einheit 440 zu kommunizieren, die als Slave agiert, um die spezialisierte Einheit zu veranlassen, gewisse Operationen durchzuführen (die von der Speichervorrichtung nicht durchgeführt werden können) und um das Ergebnis solcher Operationen zu erhalten. Das heißt, die Speichervorrichtung 420 kann Anweisungen und Daten bereitstellen und dann die Ergebnisse erhalten.
-
In dem Beispiel von 4 kann die Speichervorrichtung 420 auf die Funktionalität der spezialisierten Einheit 440 zugreifen. Die spezialisierte Einheit 440 kann eine Komponente sein, die ein oder mehrere Operationen oder Berechnungen durchführen kann, die die Speichervorrichtung 420 nicht durchführen kann. Solche Operationen können fortgeschrittene mathematische Operationen aufweisen, wie z.B. trigonometrische Funktionen (z.B. Sinus, Kosinus, Tangens), Exponentialfunktionen, Logarithmusfunktionen, usw.
-
Der Interconnect 450 kann einen oder mehrere Busse aufweisen. Ferner kann der Interconnect eingerichtet sein oder in der Lage sein, ein oder mehrere Schnittstellen zu unterstützen, z.B. für PIM- und Legacy-Speicher-Transaktionen/Mitteilungen. Beispielsweise kann der Interconnect 450 eine oder mehrere standardisierte Schnittstellen unterstützen und die PIM-Schnittstelle unterstützen. In einigen Fällen von dem System 400, kann es sein, dass ein Paar von Master und Slave über ein Standardprotokoll (z.B. AXI, Wishbone oder SRI) kommuniziert, und ein anderes Paar kann über die PIM-Schnittstelle miteinander kommunizieren.
-
5 zeigt ein weiteres beispielhaftes Blockdiagramm, das die Verarbeitungseinheit 410 darstellt. Die Verarbeitungseinheit 410 (die eine CPU sein kann) kann eine besondere Registerdatei aufweisen, die hierin als PIM-Registerdatei identifiziert wird. Dieses PIM-Register kann Details oder Informationen aufweisen, die über die PIM-Schnittstelle an die Speichervorrichtung 420 (z.B. Speichervorrichtung 420a oder 420b) gesendet wurden. Eine Software, die auf der Verarbeitungseinheit 410 läuft, kann die PIM-Registerdatei aktualisieren. Die Logik der Zustandsmaschine des Daten-Ports 410f der Verarbeitungseinheit 410 kann aktualisiert werden, um die Schnittstelle entweder mit den Signalen der standardisierten Schnittstelle oder den Signalen der PIM-Schnittstelle zu konfigurieren und zu betreiben, je nachdem.
-
Gemäß beispielhaften Ausgestaltungen der vorliegenden Offenbarung können die Transaktionen oder Mitteilungen, z.B. zwischen der Verarbeitungseinheit 410 und der Speichervorrichtung 420, vereinfacht werden. Anstelle der Mitteilungen, die die Einzelheiten der Eingangs- und Ausgangsoperanden über die Verbindungsleitung 450 angeben, können Daten-Kennzeichnungen verwendet werden. In solchen Fällen kann jeder Operand, der von der Speichervorrichtung 420 verarbeitet werden soll, qualifiziert werden durch eine Daten-Kennzeichnung, die seine Attribute beschreibt.
-
6 zeigt eine beispielhafte Daten-Kennzeichnung 600. Solche Daten-Kennzeichnungen 600 können sich in Speicherzellen 320 der Speichervorrichtung 420 befinden. Die Speichervorrichtung 420 kann eingerichtet sein zum Empfangen von Daten-Kennzeichnungen 600 als Operanden und extrahiert dann relevante Details über die Operanden aus den Kennzeichnungen und führt die notwendigen Berechnungen durch. Die Verwendung von Daten-Kennzeichnungen ermöglicht einem System die Fähigkeit, mehrdimensionale Daten besser zu beschreiben. 7 weist eine Tabelle 700 auf, die Gruppen oder Mengen von beispielhaften Daten-Kennzeichnungen zeigt. Solche Daten-Kennzeichnungen können für Daten niedrigerer Dimension verwendet werden.
-
8 zeigt eine beispielhafte Platzierung von Daten-Kennzeichnungen 600 in Speicherzellen 800. Ein Abschnitt des regulären Datenspeichers 800 der Speicherzellen (z.B. Speicherzellen 320a) kann dem Speichern der Daten-Kennzeichnung 810 bestimmt oder dafür reserviert sein. Ferner können die Datenkennzeichnungen im Voraus für jedes Datenobjekt erstellt werden oder in anderen Fällen nur für Operanden konstruiert werden, die für eine Berechnung relevant sind, die von der CPU eingeplant werden soll.
-
9 zeigt eine Darstellung, die eine Matrixmultiplikation unter Verwendung eines standardmäßigen Von-Neumann-Computer-Architektur-Systems und eines Prozessor-im-Speicher-Systems unter Verwendung von Daten-Kennzeichnungen repräsentiert. Genauer gesagt, zeigt 9 die Multiplikation von Matrix A (M mal N-Matrix) und Matrix B (N mal P-Matrix) zum Erzeugen von Matrix C (M mal P-Matrix).
-
Das Beispiel oder der Pseudocode 910 ist die Art von Befehlen, die für die Matrixmultiplikation in einem klassischen Von-Neumann-Computer-Architektur-System verwendet werden kann, während der Pseudocode 920 die Art von Befehlen sein kann, die für die PIM-Architektur unter Verwendung von Daten-Kennzeichnungen verwendet werden kann.
-
Wie aus dem Vergleich des Pseudocodes 910 und des Pseudocodes 920 hervorgeht, ermöglichen die PIM-Architekturen eine Leistungssteigerung. Im Allgemeinen kann die PIM-Architektur mit der Umverteilung von Rechenelementen Geschwindigkeits- und Leistungsverbesserungen realisieren. Die PIM-Architekturen ermöglichen kleinere(n) Programme/Code, z.B. mit weniger Laden/Speichern. Ferner können die Programme schneller ausgeführt werden, z.B. mit asynchroner Verarbeitung in Speichern. Ferner können die CPUs kleiner, einfacher und kostengünstiger sein und weniger Energie verwenden. Ferner kann die PIM-Architektur cachefrei sein, d.h. sie benötigt keine Cache-Kohärenz-Infrastruktur.
-
Die folgenden Beispiele beziehen sich auf weitere Aspekte dieser Offenbarung:
- Beispiel 1 ist ein System, aufweisend: eine Speichervorrichtung, die Speichervorrichtung aufweisend: eine Mehrzahl von Speicherzellen aufweisend eine Mehrzahl von Legacy-Speicherzellen und eine Mehrzahl von Prozessor-Speicherzellen; einen Speicher-Port, der eingerichtet ist zum Lesen und/oder Schreiben von Daten von/in der Mehrzahl von Speicherzellen; eine Logikeinheit aufweisend eine digitale Schaltung, die eingerichtet ist zum Durchführen mathematischer und logischer Operationen, wobei die Logikeinheit eingerichtet ist zum Durchführen von Verarbeitungsoperationen exklusiv unter Berücksichtigung von Daten, die in den Prozessor-Speicherzellen der Speichervorrichtung gespeichert sind oder darin gespeichert werden sollen; und eine Steuerlogik-Schaltung, die eingerichtet ist zum Steuern eines Betriebs der Speichervorrichtung; das System ferner aufweisend: ein oder mehrere elektronische Vorrichtungen; und eine Interconnect-Kopplung, die die ein oder mehreren elektronischen Vorrichtungen und die Speichervorrichtung miteinander koppelt.
- Beispiel 2 ist der Gegenstand von Beispiel 1, wobei, wenn die Speichervorrichtung in einem ersten Modus arbeitet, der Speicher-Port der Speichervorrichtung eingerichtet sein kann zum Austauschen von Mitteilungen mit mindestens einer der ein oder mehreren elektronischen Vorrichtungen, die mit der Speichervorrichtung über den Interconnect der Speichervorrichtung gekoppelt sind, wobei die Mitteilungen das Speichern, Abfragen und/oder Verarbeiten von Daten in den Prozessor-Speicherzellen gemäß der Steuerlogik-Schaltung zur Folge haben.
- Beispiel 3 ist der Gegenstand von Beispiel 1 oder 2, wobei, wenn die Speichervorrichtung in einem ersten Modus arbeitet, die Steuerlogik-Schaltung eingerichtet sein kann zum Veranlassen der Logikeinheit, ein oder mehrere Verarbeitungsoperationen an Daten in den Prozessor-Speicherzellen durchzuführen.
- Beispiel 4 ist der Gegenstand von Beispiel 1 oder 2, wobei, wenn die Speichervorrichtung im ersten Modus arbeitet, der Speicher-Port der Speichervorrichtung eingerichtet sein kann zum direkten Speichern oder Abfragen von Daten nur in bzw. aus den Legacy-Speicherzellen.
- Beispiel 5 ist der Gegenstand eines der Beispiele 1 bis 4, wobei die Steuerlogik-Schaltung eingerichtet sein kann zum Veranlassen der Speichervorrichtung, im ersten Modus zu arbeiten.
- Beispiel 6 ist der Gegenstand eines der Beispiele 1 bis 5, wobei der Speicher-Port eingerichtet sein kann zum Austauschen von Mitteilungen mit einer der einen oder mehreren elektronischen Vorrichtungen, wenn die Speichervorrichtung in einem zweiten Modus arbeitet, wobei die Mitteilungen direktes Speichern und Abfragen von Daten in bzw. aus den Legacy-Speicherzellen zur Folge haben.
- Beispiel 7 ist der Gegenstand eines der Beispiele 1 bis 5, wobei der Speicher-Port eingerichtet sein kann, während die Speichervorrichtung in einem zweiten Modus arbeitet, zum direkten Speichern und Abfragen von Daten nur in bzw. aus den Legacy-Zellen.
- Beispiel 8 ist der Gegenstand von Beispiel 6, wobei der Speicher-Port ferner eingerichtet sein kann zum direkten Speichern und Abfragen von Daten in bzw. aus den Prozessor-Speicherzellen, wenn die Speichervorrichtung im zweiten Modus arbeitet.
- Beispiel 9 ist der Gegenstand eines der Beispiele 6 bis 8, wobei die Steuerlogik-Schaltung eingerichtet sein kann zum Veranlassen der Speichervorrichtung, im zweiten Modus zu arbeiten.
- Beispiel 10 ist der Gegenstand eines der Beispiele 2 bis 9, wobei die Steuer-Schaltung eingerichtet sein kann zum Veranlassen des Speicher-Ports, Mitteilungen mit der mindestens einen der ein oder mehreren elektronischen Vorrichtungen auszutauschen, die eine Ausführung einer Verarbeitungsoperation durch die andere elektronische Vorrichtung zur Folge haben.
- Beispiel 11 ist der Gegenstand von Beispiel 10, wobei die Verarbeitungsoperation eine mathematische oder logische Operation sein kann, zu deren Durchführung die Logikeinheit des Speichers nicht in der Lage ist.
- Beispiel 12 ist der Gegenstand eines der Beispiele 1 bis 11, wobei, wenn die Speichervorrichtung im ersten oder zweiten Modus ist, der Speicher-Port eingerichtet sein kann zum Austauschen von Mitteilungen mit mindestens einer der ein oder mehreren elektronischen Vorrichtungen, die das Speichern und/oder Abfragen von Daten in den Speicherzellen zur Folge haben.
- Beispiel 13 ist der Gegenstand eines der Beispiele 6 bis 12, wobei der Interconnect Mitteilungen unterstützt, die einen Betrieb der Speichervorrichtung im ersten Modus und im zweiten Modus zur Folge haben.
- Beispiel 14 ist der Gegenstand eines der Beispiele 2 bis 12, wobei die ein oder mehreren elektronischen Vorrichtungen eine Verarbeitungsschaltung aufweisen können, wobei die Verarbeitungsschaltung eingerichtet ist zum Senden von Operations-Anfragemitteilungen an die Speichervorrichtung zum Ausführen durch die Speichervorrichtung .
- Beispiel 15 ist der Gegenstand von Beispiel 14, wobei die Verarbeitungsschaltung eingerichtet sein kann zum Senden von Skalaroperations-Anfragemitteilungen an die Speichervorrichtung.
- Beispiel 16 ist der Gegenstand von Beispiel 14 oder 15, wobei die Verarbeitungsschaltung eingerichtet ist zum Senden von Single Instruction/Multiple Data (SIMD)-Operations-Anfragemitteilungen an die Speichervorrichtung.
- Beispiel 17 ist der Gegenstand eines der Beispiele 14 bis 16, wobei die Verarbeitungsschaltung eine Zentrale Verarbeitungseinheit (CPU) sein kann.
- Beispiel 18 ist der Gegenstand eines der Beispiele 1 bis 17, wobei der Interconnect ein oder mehrere Busse aufweisen kann.
- Beispiel 19 ist der Gegenstand von Beispiel 18, wobei die Steuerlogik-Schaltung eingerichtet sein kann zum Betreiben der Speichervorrichtung als ein Bus-Master, um die Verbindung über den Speicher-Port zu steuern.
- Beispiel 20 ist der Gegenstand von Beispiel 19, wobei die Steuerlogik-Schaltung eingerichtet ist zum Betreiben der Speichervorrichtung als ein Bus-Master, um den Interconnect derart zu steuern, dass ein oder mehrere elektronische Vorrichtungen angefragt werden, eine Operation durchzuführen, die von der Logikeinheit der Speichervorrichtung nicht unterstützt wird.
- Beispiel 21 ist der Gegenstand von Beispiel 20, wobei die eine der ein oder mehreren elektronischen Vorrichtungen, die angefragt wird, eine Operation durchzuführen, die nicht von der Logikeinheit der Speichervorrichtung unterstützt wird, einen mathematischen Prozessor aufweist.
- Beispiel 22 ist der Gegenstand eines der Beispiele 1 bis 21, wobei die Logikeinheit der Speichervorrichtung eine arithmetisch-logische Einheit (ALU)-Vorrichtung aufweist.
-
Beispiel 1A ist eine Speichervorrichtung, aufweisend: eine Mehrzahl von Speicherzellen zum Speichern von Daten; eine Speicherschnittstelle, die eingerichtet ist zum Speichern und Abfragen von Daten in bzw. aus der Mehrzahl von Speicherzellen; eine Logikeinheit aufweisend eine digitale Schaltung, die eingerichtet ist zum Durchführen mathematischer und logischer Operationen; und eine Steuerschaltung, die eingerichtet ist zum Steuern eines Betriebs der Speichervorrichtung.
-
Beispiel 2A ist der Gegenstand von Beispiel 1A, wobei die Mehrzahl von Speicherzellen eine Mehrzahl von Legacy-Speicherzellen und eine Mehrzahl von Prozessor-Speicherzellen aufweisen kann und eingerichtet ist zum Arbeiten in einem ersten Modus und einem zweiten Modus.
-
Beispiel 3A ist der Gegenstand von Beispiel 2A, wobei die Logikeinheit eingerichtet sein kann zum exklusiven Durchführen von Verarbeitungsoperationen unter Berücksichtigung von Daten, die in den Prozessor-Speicherzellen der Speichervorrichtung gespeichert sind oder gespeichert werden sollen.
-
Beispiel 4A ist der Gegenstand von Beispiel 2A oder 3A, wobei, wenn die Speichervorrichtung im ersten Modus arbeitet, die Speicher-Schnittstelle eingerichtet sein kann zum Austauschen von Mitteilungen mit einer anderen elektronischen Vorrichtung, die mit der Speichervorrichtung gekoppelt ist, wobei die Mitteilungen ein Speichern, Abfragen und/oder Verarbeiten von Daten in den Prozessor-Speicherzellen gemäß der Steuer-Logikschaltung zur Folge haben.
-
Beispiel 5A ist der Gegenstand eines der Beispiele 2A bis 4A, wobei, wenn die Speichervorrichtung im ersten Modus arbeitet, die Steuer-Logikschaltung eingerichtet sein kann zum Veranlassen der Logikeinheit, ein oder mehrere Verarbeitungsoperationen an Daten in den Prozessor-Speicherzellen durchzuführen.
-
Beispiel 6A ist der Gegenstand von einem der Beispiele 2A bis 5A, wobei, wenn die Speichervorrichtung im ersten Modus arbeitet, die Speicher-Schnittstelle eingerichtet sein kann zum direkten Speichern oder Abfragen von Daten nur in bzw. nur aus den Legacy-Speicherzellen.
-
Beispiel 7A ist der Gegenstand eines der Beispiele 2A bis 6A, wobei die Steuer-Logikschaltung eingerichtet sein kann zum Veranlassen der Speichervorrichtung, im ersten Modus zu arbeiten.
-
Beispiel 8A ist der Gegenstand von Beispiel 7A, wobei die Steuer-Logikschaltung eingerichtet sein kann zum Veranlassen der Speichervorrichtung, im ersten Modus zu arbeiten als Antwort auf ein erstes Steuersignal, das an der Speicher-Schnittstelle empfangen wird.
-
Beispiel 9A ist der Gegenstand eines der Beispiele 2A bis 8A, wobei, wenn die Speichervorrichtung im zweiten Modus arbeitet, die Speicher-Schnittstelle eingerichtet ist zum Austauschen von Mitteilungen mit einer anderen elektronischen Vorrichtung, die mit der Speichervorrichtung gekoppelt ist, die ein direktes Speichern und Abfragen in bzw. aus den Legacy-Speicherzellen zur Folge haben.
-
Beispiel 10A ist der Gegenstand eines der Beispiele 2A bis 9A, wobei die Speicher-Schnittstelle eingerichtet ist, während die Speichervorrichtung im zweiten Modus arbeitet, zum direkten Speichern und Abfragen von Daten nur in bzw. aus den Prozessor-Speicherzellen.
-
Beispiel 11A ist der Gegenstand von Beispiel 9A, wobei der Speicher-Port ferner eingerichtet sein kann zum direkten Speichern und Abfragen von Daten in bzw. aus den Prozessor-Speicherzellen, wenn die Speichervorrichtung im zweiten Modus arbeitet.
-
Beispiel 12A ist der Gegenstand eines der Beispiele 2A bis 11A, wobei die Steuer-Logikschaltung eingerichtet sein kann zum Veranlassen der Speichervorrichtung, im zweiten Modus zu arbeiten.
-
Beispiel 13A ist der Gegenstand von Beispiel 12A, wobei die Steuer-Logikschaltung eingerichtet sein kann zum Veranlassen der Speichervorrichtung, im zweiten Modus zu arbeiten als Antwort auf ein zweites Steuersignal, das an der Speicher-Schnittstelle empfangen wird, wobei sich das zweite Steuersignal von dem ersten Steuersignal unterscheidet.
-
Beispiel 14A ist der Gegenstand eines der Beispiele 1A bis 13A, wobei die Steuer-Logikschaltung eingerichtet sein kann zum Betreiben der Speichervorrichtung als ein Bus-Master, um mindestens einen Bus zu steuern, die mit der Speichervorrichtung über die Speicher-Schnittstelle gekoppelt ist.
-
Beispiel 15A ist der Gegenstand von Beispiel 12A, wobei die Steuer-Logikschaltung eingerichtet sein kann zum Betreiben der Speichervorrichtung als ein Bus-Master, um mindestens einen Bus zu steuern, die mit der Speichervorrichtung über die Speicher-Schnittstelle gekoppelt ist, um Mitteilungen auszutauschen, die die Ausführung einer Operation zur Folge haben, die nicht nativ von der Logikeinheit der Speichervorrichtung unterstützt wird.
-
Beispiel 16A ist der Gegenstand eines der Beispiele 1A bis 15A, wobei die Steuer-Logikschaltung eingerichtet sein kann zum Betreiben der Speichervorrichtung als Slave-Speicher unter Verwendung der Legacy-Speicherzellen.
-
Beispiel 17A ist der Gegenstand eines der Ansprüche 1A bis 16A, wobei die Logikeinheit eingerichtet sein kann zum Durchführen von skalaren und/oder Single Instruction/Multiple Data (SIMD)-Operationen.
-
Beispiel 18A ist der Gegenstand von einem der Beispiele 1A bis 17A, wobei die Logikeinheit eine arithmetisch-logische Einheit aufweist.
-
Es sollte beachtet werden, dass ein oder mehrere der Merkmale von jedem der obigen Beispiele mit jedem der anderen Beispiele kombiniert werden kann/können.
-
Die vorstehende Beschreibung wurde nur als Beispiel gegeben, und es wird vom Fachmann erkannt werden, dass Änderungen vorgenommen werden können, ohne von dem breiteren Gedanken oder Umfang der Erfindung, wie in den Ansprüchen dargelegt, abzuweichen. Die Beschreibung und die Zeichnungen sind daher eher in einem darstellenden als in einem einschränkenden Sinne zu verstehen. ^
-
Der Umfang der Offenbarung wird daher durch die beigefügten Ansprüche angegeben, und alle Änderungen, die in den Bedeutungs- und Äquivalenzbereich der Ansprüche fallen, sind daher beabsichtigt, von diesem mit umfasst zu werden.