DE102022121773A1 - In-memory-assoziativverarbeitungssystem - Google Patents

In-memory-assoziativverarbeitungssystem Download PDF

Info

Publication number
DE102022121773A1
DE102022121773A1 DE102022121773.6A DE102022121773A DE102022121773A1 DE 102022121773 A1 DE102022121773 A1 DE 102022121773A1 DE 102022121773 A DE102022121773 A DE 102022121773A DE 102022121773 A1 DE102022121773 A1 DE 102022121773A1
Authority
DE
Germany
Prior art keywords
vector
data representing
level
bits
consecutive bits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102022121773.6A
Other languages
English (en)
Inventor
Ameen D. Akel
Brian Hirano
Justin Eno
Sean S. Eilert
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of DE102022121773A1 publication Critical patent/DE102022121773A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8038Associative processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller

Abstract

Es werden Verfahren, Systeme und Vorrichtungen zur In-Memory-Assoziativverarbeitung beschrieben. Ein Gerät kann einen Satz von Anweisungen empfangen, die einen ersten Vektor und einen zweiten Vektor als Operanden für eine Rechenoperation angeben. Das Gerät kann aus einem Satz von Vektorabbildungssystemen ein Vektorabbildungssystem zum Ausführen der Rechenoperation unter Verwendung von Assoziativverarbeitung auswählen. Das Gerät kann den ersten Vektor und den zweiten Vektor in einen Satz von Ebenen, die jeweils ein Array inhaltsadressierbarer Speicherzellen umfassen, basierend auf dem ausgewählten Vektorabbildungssystem schreiben.

Description

  • QUERVERWEIS
  • Die vorliegende Anmeldung für Patentansprüche beansprucht die Priorität der vorläufigen US-Patentanmeldung Nr. 17/577 977 von EILERT et al. mit dem Titel „IN-MEMORY ASSOCIATIVE PROCESSING SYSTEM“, eingereicht am 18. Januar 2022, und der vorläufigen US-Patentanmeldung Nr. 63/239 103 von EILERT et al. mit dem Titel „IN-MEMORY ASSOCIATIVE PROCESSING SYSTEM“, eingereicht am 31. August 2021.
  • GEBIET DER TECHNIK
  • Die folgenden Ausführungen betreffen im Allgemeinen ein oder mehrere Systeme für Speicher- und spezifischer für ein In-Memory-Assoziativverarbeitungssystem.
  • HINTERGRUND
  • Speichervorrichtungen werden häufig verwendet, um Informationen in verschiedenen elektronischen Vorrichtungen, wie etwa Computern, Benutzervorrichtungen, drahtlosen Kommunikationsvorrichtungen, Kameras, digitalen Anzeigen und dergleichen zu speichern. Informationen werden durch Programmieren von Speicherzellen innerhalb einer Speichervorrichtung auf verschiedene Zustände gespeichert. Zum Beispiel können binäre Speicherzellen auf einen von zwei unterstützten Zuständen programmiert werden, oft bezeichnet durch eine logische 1 oder eine logische 0. In einigen Beispielen kann eine einzelne Speicherzelle mehr als zwei Zustände unterstützen, von denen jeder einzelne gespeichert werden kann. Um auf die gespeicherten Informationen zuzugreifen, kann eine Komponente zumindest einen gespeicherten Zustand in der Speichervorrichtung lesen oder erfassen. Um Informationen zu speichern, kann eine Komponente den Zustand in die Speichervorrichtung schreiben oder programmieren.
  • Es gibt verschiedene Arten von Speichervorrichtungen und Speicherzellen, darunter magnetische Festplatten, Direktzugriffsspeicher (Random Access Memory - RAM), Nur-Lese-Speicher (Read-Only Memory ROM), dynamischen RAM (DRAM), synchronen dynamischen RAM (SDRAM), statischen RAM (SRAM), ferroelektrischen RAM (FeRAM), magnetischen RAM (MRAM), resistiven RAM (RRAM), Flash-Speicher, Phasenwechsel-Speicher (Phase Change Memory - PCM), selbstselektiven Speicher, Chalkogenid-Speichertechnologien und andere. Speicherzellen können flüchtig oder nichtflüchtig sein. Nichtflüchtige Speicher, z. B. FeRAM, können ihren gespeicherten Logikzustand über einen längeren Zeitraum beibehalten, selbst wenn keine externe Stromquelle vorhanden ist. Flüchtige Speichervorrichtungen, z. B. DRAM, können ihren gespeicherten Zustand verlieren, wenn sie von einer externen Stromquelle getrennt werden.
  • Figurenliste
    • 1 veranschaulicht ein Beispiel eines Systems, das eine In-Memory-Assoziativverarbeitung gemäß Beispielen, wie hierin offenbart, unterstützt.
    • 2 veranschaulicht ein Beispiel einer Vektorberechnung unter Verwendung von In-Memory-Assoziativverarbeitung gemäß Beispielen, wie hierin offenbart.
    • 3 veranschaulicht ein Beispiel von Ebenen, die In-Memory-Assoziativverarbeitung gemäß Beispielen, wie hierin offenbart, unterstützen.
    • 4 veranschaulicht ein Beispiel für Assoziativrechnen unter Verwendung von Kacheln, die gemäß einem Vektorabbildungssystem gemäß Beispielen, wie hierin offenbart, konfiguriert sind.
    • 5 veranschaulicht ein Beispiel für Assoziativrechnen unter Verwendung von Kacheln, die gemäß einem Vektorabbildungssystem gemäß Beispielen, wie hierin offenbart, konfiguriert sind.
    • 6 veranschaulicht ein Beispiel eines Prozessablaufs, der In-Memory-Assoziativverarbeitung gemäß Beispielen, wie hierin offenbart, unterstützt.
    • 7 zeigt ein Blockdiagramm einer Vorrichtung, die In-Memory-Assoziativverarbeitung gemäß Beispielen, wie hierin offenbart, unterstützt.
    • 8 bis 12 zeigen Ablaufdiagramme, die ein Verfahren oder mehrere Verfahren veranschaulichen, die In-Memory-Assoziativverarbeitung gemäß Beispielen, wie hierin offenbart, unterstützen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In einigen Systemen kann eine Host-Vorrichtung verschiedene Verarbeitungsaufgaben an eine elektronische Vorrichtung, wie etwa einen Beschleuniger, auslagern. Beispielsweise kann eine Host-Vorrichtung Vektorberechnungen an die elektronische Vorrichtung auslagern, die Rechenmaschinen und Verarbeitungstechniken verwenden kann, um die Vektorberechnungen auszuführen. Dieses Auslagern von Vektorberechnungen kann die Kommunikation von Vektoren oder Vektorinformationen von der Host-Vorrichtung an die elektronische Vorrichtung und wiederum die Kommunikation von Ergebnissen von der elektronischen Vorrichtung an die Host-Vorrichtung beinhalten. Somit kann die Bandbreite und der elektronischen Vorrichtung von der Kommunikationsschnittstelle zwischen der elektronischen Vorrichtung und dem Host-Vorrichtung sowie von der Größe und der seriellen Verarbeitung der Rechenmaschinen eingeschränkt werden. Gemäß den hierin beschriebenen Techniken kann eine Host-Vorrichtung die Verarbeitungsbandbreite wesentlich erhöhen, indem sie Verarbeitungsaufgaben an ein Assoziativspeichersystem (APM-System) auslagert, das unter anderen Aspekten eine speicherinterne Assoziativverarbeitung verwendet, um Vektorberechnungen parallel auszuführen.
  • In einigen Beispielen kann das APM-System mehrere unterschiedliche Vektorabbildungssysteme unterstützen, wobei ein Vektorabbildungssystem auf ein Organisationssystem zum Schreiben von Vektoren in den Speicher des APM-Systems verweisen kann. Beispielsweise kann das APM-System ein erstes Vektorabbildungssystem und ein zweites Vektorabbildungssystem unterstützen. Das APM-System kann zwischen den Vektorabbildungssystemen auswählen (kann z. B. eines der Vektorabbildungssysteme auswählen), bevor es Vektoren gemäß dem ausgewählten Vektorabbildungssystem in den Speicher des APM-Systems schreibt. Nach dem Schreiben der Vektoren in den Speicher kann das APM-System Assoziativverarbeitung verwenden, um Rechenoperationen an den Vektoren gemäß dem ausgewählten Vektorabbildungssystem auszuführen.
  • Merkmale der Offenbarung werden anfänglich im Kontext von Systemen und Vektorberechnung unter Bezugnahme auf die 1 und 2 beschrieben. Merkmale der Offenbarung werden im Kontext von Ebenen, Vektorabbildungssystemen und einem Prozessablauf, wie unter Bezugnahme auf die 3-6 beschrieben, beschrieben. Diese und andere Merkmale der Offenbarung werden ferner unter Bezugnahme auf ein Gerätediagramm und Ablaufdiagramme veranschaulicht und beschrieben, die auf ein In-Memory-Assoziativverarbeitungssystem, wie unter Bezugnahme auf 7-12 beschrieben, verweisen.
  • 1 veranschaulicht ein Beispiel eines Systems 100, das In-Memory-Assoziativverarbeitung gemäß Beispielen, wie hierin offenbart, unterstützt. Das System 100 kann eine Host-Vorrichtung 105 und ein Assoziativverarbeitungs-Speichersystem (APM-Speichersystem) 110 beinhalten. Die Host-Vorrichtung 105 kann mit dem APM-System 110 sowie mit anderen Komponenten der Vorrichtung, die das APM-System 110 beinhaltet, interagieren, z. B. kommunizieren, steuern. In einigen Beispielen können die Host-Vorrichtung 105 und das APM-System 110 über die Schnittstelle 115 interagieren, die ein Beispiel einer Compute-Express-Link(CXL)-Schnittstelle oder einer anderen Art von Schnittstelle sein kann.
  • In einigen Beispielen kann das System 100 in einer Rechenvorrichtung, einer elektronischen Vorrichtung, einer mobilen Rechenvorrichtung oder einer drahtlosen Vorrichtung enthalten oder damit gekoppelt sein. Die Vorrichtung kann eine tragbare elektronische Vorrichtung sein. Das System kann beispielsweise ein Computer, ein Laptop, ein Tablet-Computer, ein Smartphone, ein Mobiltelefon, eine tragbare Vorrichtung, eine mit dem Internet verbundene Vorrichtung oder dergleichen sein. Die Host-Vorrichtung 105 kann ein System-on-a-Chip (SOC), ein Allzweckprozessor, ein digitaler Signalprozessor (Digital Signal Processor - DSP), eine anwendungsspezifische integrierte Schaltung (Application-Specific Integrated Circuit - ASIC), ein feldprogrammierbares Gate-Array (Field-Programmable Gate Array - FPGA) oder eine andere programmierbare Logikvorrichtung, eine diskrete Gate- oder Transistorlogik, diskrete Hardwarekomponenten sein oder beinhalten oder kann eine Kombination dieser Arten von Komponenten sein. In einigen Beispielen kann die Host-Vorrichtung 105 als ein Host, ein Host-System oder anhand einer anderen geeigneten Terminologie bezeichnet werden.
  • Das APM-System 110 kann als ein Beschleuniger (z. B. ein Hochgeschwindigkeitsprozessor) für die Host-Vorrichtung 105 derart arbeiten, dass die Host-Vorrichtung 105 verschiedene Verarbeitungsaufgaben an das APM-System 110 auslagern kann, das dazu konfiguriert sein kann, die Verarbeitungsaufgaben schneller auszuführen als die Host-Vorrichtung 105. Beispielsweise kann die Vorrichtung 105 ein Programm (z. B. einen Satz von Anweisungen, wie etwa RISC-V-Vektoranweisungen (Reduced Instruction Set V)) an das APM-System 110 zur Ausführung durch das APM-System 110 senden. Als Teil des Programms oder gemäß den Anweisungen des Programms kann das APM-System 110 verschiedene Rechenoperationen an Vektoren ausführen (z. B. kann das APM-System 110 eine Vektorberechnung ausführen). Eine Rechenoperation kann auf eine logische Operation, eine arithmetische Operationen oder andere Arten von Operationen, die die Manipulation von Vektoren involvieren, verweisen. Ein Vektor kann ein oder mehrere Elemente, die jeweils eine jeweilige Menge von Bits aufweisen, beinhalten. Die Länge oder Größe eines Vektors kann auf die Menge von Elementen in dem Vektor verweisen, und die Länge oder Größe eines Elements kann auf die Menge von Bits in dem Element verweisen.
  • Die APM-Steuerung 120 kann dazu konfiguriert sein, im Auftrag der APM-Vorrichtungen 125 eine Schnittstelle mit der Host-Vorrichtung 105 herzustellen. Beim Empfang eines Programms von der Host-Vorrichtung 105 kann die APM-Steuerung 120 das Programm parsen und die APM-Vorrichtungen 125 anweisen oder anderweitig auffordern, verschiedene Rechenoperationen, die mit dem Programm assoziiert sind oder von diesem angezeigt werden, auszuführen. In einigen Beispielen kann die APM-Steuerung 120 die Vektoren für die Rechenoperationen abrufen (z. B. aus dem Speicher 130) und kann die Vektoren zur Assoziativverarbeitung an die APM-Vorrichtungen 125 kommunizieren. In einigen Beispielen kann die APM-Steuerung 120 die Vektoren für die Rechenoperationen den APM-Vorrichtungen 125 derart angeben, dass die APM-Vorrichtungen 125 die Vektoren aus dem Speicher 130 abrufen können. In einigen Beispielen kann die Host-Vorrichtung 105 dem APM-System 110 die Vektoren bereitstellen. So kann der Speicher 130 dazu konfiguriert sein, Vektoren zu speichern, auf welche die APM-Steuerung 120 die APM-Vorrichtung 125, die Host-Vorrichtung 105 oder eine Kombination davon zugreifen können.
  • Die Vektoren für Rechenoperationen an den APM-Vorrichtungen 125 können von dem von der Host-Vorrichtung 105 empfangenen Programm oder von anderen Steuersignalisierungen (z. B. von anderen separaten Steuersignalisierungen), die mit dem Programm assoziiert sind, angezeigt (oder begleitet) werden. Beispielsweise kann ein Programm, das eine Rechenoperation für ein Paar von Vektoren angibt, eine oder mehrere Adressen (oder einen oder mehrere Zeiger auf eine oder mehrere Adressen) des Speichers 130, wo die Vektoren gespeichert sind, beinhalten. Obwohl der Speicher 130 in dem APM-System 110 enthalten gezeigt ist, kann er extern zu dem APM-System 110 aber nichtsdestotrotz damit gekoppelt sein. Obwohl er als eine einzelne Komponente gezeigt, kann die Funktionalität des Speichers 130 von mehreren Speichern 130 bereitgestellt werden.
  • Die APM-Vorrichtungen 125 können Speicherzellen beinhalten, wie zum Beispiel inhaltsadressierbare Speicherzellen (CAMs), die dazu konfiguriert sind, Vektoren (z. B. Vektoroperanden, Vektorergebnisse), die mit Rechenoperationen assoziiert sind, zu speichern. Ein Vektoroperand kann ein Vektor sein, der ein Operand für eine Rechenoperation ist (z. B. kann ein Vektoroperand ein Vektor sein, auf dem die Rechenoperation ausgeführt wird). Ein Vektorergebnis kann ein Vektor sein, der aus einer Vektorberechnung resultiert.
  • Das APM-System 110 kann dazu konfiguriert sein, Informationen, wie Wahrheitstabellen, für verschiedene Rechenoperationen zu speichern, wobei Informationen (z. B. eine Wahrheitstabelle) für eine gegebene Rechenoperation Ergebnisse der Rechenoperation für verschiedene Kombinationen von Logikwerten angeben können. Beispielsweise kann das APM-System 110 Informationen (z. B. eine oder mehrere Wahrheitstabellen) für logische Operationen (z. B. AND-Operationen, OR-Operationen, XOR-Operationen, NOT-Operationen, NAND-Operationen, NOR-Operationen, XNOR-Operationen) sowie arithmetische Operationen (z. B. Additionsoperationen, Subtraktionsoperationen) neben anderen Arten von Operationen zu speichern. Speicherzellen, die Informationen (z. B. eine oder mehrere Wahrheitstabellen) für eine Rechenoperation speichern, können die verschiedenen Kombinationen von Logikwerten für die Operanden der Rechenoperation sowie die entsprechenden Ergebnisse und gegebenenfalls Übertragsbits für jede Kombination von Logikwerten speichern. Das APM-System 110 kann Wahrheitstabellen zur Assoziativverarbeitung in einem oder mehreren Speichern (z. B. in einem oder mehreren On-Die-Masken-ROM(s)), die mit dem APM-System 110 gekoppelt oder darin enthalten sein können, speichern. Beispielsweise können die Wahrheitstabellen in dem Speicher 130, in lokalen Speichern der APM-Vorrichtungen 125 oder in beiden gespeichert werden. In jedem Beispiel kann eine APM-Vorrichtung 125 gemeinsame Anweisungen auf der Vorrichtung zwischenspeichern (z. B. statt sie abzurufen oder zu empfangen).
  • Mindestens einige APM-Vorrichtungen 125, wenn nicht jede APM-Vorrichtung 125, können Assoziativverarbeitung verwenden, um Rechenoperationen an den in dieser APM-Vorrichtung 125 gespeicherten Vektoren auszuführen. Im Gegensatz zur seriellen Verarbeitung (bei der Vektoren zwischen einem Prozessor und einem Speicher hin und her bewegt werden), kann die Assoziativverarbeitung das Suchen und Schreiben von Vektoren im Speicher (auch als „in-situ“ bezeichnet) beinhalten, was eine Parallelität, die die Verarbeitungsbandbreite erhöht, erlauben kann. Die Ausführung von Rechenoperationen vor Ort kann es dem System 100 neben anderen Vorteilen auch erlauben, den Engpass an der Schnittstelle zwischen der Host-Vorrichtung 105 und dem APM-System 110 zu vermeiden, was die Latenz und den Stromverbrauch im Vergleich zu anderen Verarbeitungstechniken, wie z. B. serielle Bearbeitung, reduzieren kann. Assoziativverarbeitung kann auch als Assoziativrechnen oder anhand anderer geeigneter Terminologie bezeichnet werden.
  • In einigen Beispielen kann eine APM-Vorrichtung 125, die Assoziativverarbeitung verwendet, um eine Rechenoperation auszuführen, Informationen, wie etwa eine Wahrheitstabelle, dazu nutzen, die Rechenoperation bitweise unter Verwendung von beispielsweise einer „Suchen-und-Schreiben“-Technik auszuführen. Wenn beispielsweise die APM-Vorrichtung 125 CAM-Zellen den haltet, die Vektoroperanden für eine Rechenoperation speichern, kann die APM-Vorrichtung 125 die CAM-Zellen nach Bits der Vektoroperanden durchsuchen, die mit einem Eintrag der Wahrheitstabelle übereinstimmen, der dieser Rechenoperation entspricht, das Ergebnis der Rechenoperation für die Bits basierend auf dem passenden Eintrag der Wahrheitstabelle durchsuchen und das Ergebnis in den inhaltsadressierbaren Speicher zurück schreiben. Die APM-Vorrichtung 125 kann dann mit den nächsten signifikanten Bits für die Vektoren fortfahren und Assoziativverarbeitung verwenden, um die Rechenoperation an diesen Bits auszuführen. In einigen Beispielen kann die Rechenoperation für Bits ein Übertragsbit beinhalten, das als Teil der Rechenoperation an niederwertigen Bits bestimmt wurde.
  • Jede APM-Vorrichtung 125 kann einen oder mehrere Dies 135, die auch als Speicher-Dies, Halbleiterchips oder anhand anderer geeigneter Terminologie bezeichnet werden können, beinhalten. Ein Die 135 kann mehrere Kacheln 140 beinhalten, die wiederum jeweils mehrere Ebenen 145 beinhalten können. In einigen Beispielen können die Kacheln 140 dazu konfiguriert sein, jeweils eine einzige Ebene 145 pro Kachel wirksam oder aktivierbar ist (z. B. kann eine Ebene pro Kachel gleichzeitig Assoziativrechnen ausführen). Es kann jedoch eine beliebige Menge von Kacheln 140 gleichzeitig aktiv sein (z. B. kann eine beliebige Menge von Kacheln gleichzeitig Assoziativrechnen ausführen). Somit können die Kacheln 140 parallel betrieben werden, was die Menge an Rechenoperationen, die während eines Zeitintervalls ausgeführt werden kann, erhöhen kann, was wiederum die Bandbreite einer APM-Vorrichtung 125 relativ zu anderen unterschiedlichen Techniken erhöhen kann. Die Verwendung mehrerer APM-Vorrichtungen 125 im Gegensatz zu einer einzigen APM-Vorrichtung 125 kann die Bandbreite des APM-Systems 110 relativ zu anderen Systemen weiter erhöhen. Jede APM-Vorrichtung 125 kann eine lokale Steuerung oder Logik, die die Operationen dieser APM-Vorrichtung 125 steuert, beinhalten.
  • Jede Ebene 145 kann ein Speicherarray beinhalten, das Speicherzellen, wie etwa CAM-Zellen, beinhaltet. Die Speicherzellen in einem Speicher-Array können in Spalten und Reihen angeordnet sein und können nichtflüchtige Speicherzellen oder flüchtige Speicherzellen sein. Ein Speicher-Array, das CAM-Zellen beinhaltet, kann dazu konfiguriert sein, die CAM-Zellen nach Inhalt statt nach Adresse zu durchsuchen. Beispielsweise kann ein Speicher-Array, das CAM-Zellen beinhaltet, die Vektoren für eine Rechenoperation speichern, die Logikwerte der Operandenbits der Vektoren mit Einträgen aus einer Wahrheitstabelle, die mit der Rechenoperation assoziiert ist, vergleichen, um zu bestimmen, welche Ergebnisse diesen Logikwerten entsprechen.
  • Wie angemerkt, kann eine APM-Vorrichtung 125 dazu konfiguriert sein, Vektoren zu speichern, die mit Rechenoperationen in den Speicherzellen dieser APM-Vorrichtung 125 assoziiert sind. Um die Assoziativverarbeitung zu unterstützen, können die Vektoren spaltenweise über mehrere Ebenen hinweg gespeichert werden. Wenn beispielsweise ein Vektor v0 gegeben ist, der mehrere n-Bits (z. B. n = 32) Bitelemente (mit E0 bis EN bezeichnet) aufweist, kann eine APM-Vorrichtung 125 jedes Element in Sätze aufeinanderfolgender Bits (z. B. vier Sätze zu acht aufeinanderfolgenden Bits) unterteilen. Die APM-Vorrichtung 125 kann den ersten Satz aufeinanderfolgender Bits (z. B. den niedrigstwertigen Satz aufeinanderfolgender Bits) für jedes Element des Vektors v0 auf einer ersten Ebene 145 speichern, wobei jede Reihe der Ebene 145 den ersten Satz aufeinanderfolgender Bits für ein jeweiliges Element des Vektors v0 speichert. Somit können die Spalten 150 in einigen Beispielen die ersten acht Bits jedes Elements des Vektors v0 speichern (z. B. können die Spalten 150 acht Spalten überspannen). Auf ähnliche Weise kann die APM-Vorrichtung 125 den nächsten signifikanten Satz aufeinanderfolgender Bits von jedem Element des Vektors v0 auf einer zweiten Ebene 145 speichern. Und so weiter und so fort für die restlichen Sätze aufeinanderfolgender Bits für den Vektor v0. Somit kann der Vektor v0 in einer spaltenweisen Art über mehrere Ebenen hinweg gespeichert werden. Die Bits anderer Vektoren v1 bis vn können auf ähnliche spaltenweise Art über die Ebenen 145 hinweg gespeichert werden.
  • Das Verteilen von Vektoren über mehrere Ebenen unter Verwendung der spaltenförmigen Speichertechnik kann es einer APM-Vorrichtung 125 erlauben, mehr Vektoren pro Ebene 145 relativ zu anderen Techniken zu speichern, was es wiederum der APM-Vorrichtung 125 erlauben kann, im Vergleich zu den anderen Techniken mit mehr Kombinationen von Vektoren zu arbeiten. Man betrachte beispielsweise eine Ebene mit 256 Reihen mal 256 Spalten. Statt acht Vektoren mit 32-Bit-Elementen über eine einzige Ebene zu speichern, was die APM-Vorrichtung 125 auf das Arbeiten mit diesen acht Vektoren beschränken kann (außer mit zeitaufwändiger Vektorbewegung), kann die APM-Vorrichtung 125 32 Vektoren mit 32-Bit-Elementen über vier Ebenen speichern, was es der APM-Vorrichtung 125 erlaubt, auf diesen 32-Bit-Vektoren (z. B. jeweils eine Ebene) zu arbeiten, ohne zeitaufwändige Vektorbewegung auszuführen.
  • In einigen Beispielen können die APM-Vorrichtungen 125 Vektoren gemäß einem Vektorabbildungssystem speichern, das eines von mehreren Vektorabbildungssystemen, die von den APM-Vorrichtungen 125 unterstützt werden, sein kann. Ein Vektorabbildungssystem kann auf ein System zum Abbilden (und Schreiben) von Vektoren auf Ebenen 145 einer APM-Vorrichtung 125 verweisen. Beispielsweise kann eine APM-Vorrichtung 125 ein erstes Vektorabbildungssystem, das als Vektorabbildungssystem 1 bezeichnet wird, und ein zweites Vektorabbildungssystem, das als Vektorabbildungssystem 2 bezeichnet wird, unterstützen. In dem Vektorabbildungssystem 1 kann ein Vektor über Ebenen derselben Kachel 140 verteilt werden. Im Vektorabbildungsschema 2 kann ein Vektor über Ebenen unterschiedlicher Kacheln 140 verteilt werden. Ein Vektorabbildungssystem kann auch als Speichersystem, Layoutsystem oder anhand einer anderen geeigneten Terminologie bezeichnet werden.
  • Das APM-System 110 kann zwischen den Vektorabbildungssystemen auswählen, bevor es Vektoren in die APM-Vorrichtungen 125 gemäß dem ausgewählten Vektorabbildungssystem schreibt. Beispielsweise kann das APM-System 110 das Vektorabbildungssystem für einen Satz von Rechenoperationen basierend auf den Größen der Vektoren, die mit dem Satz von Rechenoperationen assoziiert sind, den Typen der Rechenoperationen (z. B. arithmetisch versus logisch) in dem Satz von Rechenoperationen, einer Menge der Rechenoperationen in dem Satz oder einer Kombination davon, neben anderen Aspekten auswählen. In einigen Beispielen kann das APM-System 110 das Vektorabbildungssystem als Reaktion auf eine Angabe des Vektorabbildungssystems, das durch die Host-Vorrichtung 105 bereitgestellt wird, auswählen. Beispielsweise kann die Host-Vorrichtung 105 das Vektorabbildungssystem, das mit einem Satz von Anweisungen für den Satz von Rechenoperationen assoziiert ist, angeben. Nachdem Vektoren gemäß dem ausgewählten Vektorabbildungssystem in die APM-Vorrichtungen 125 geschrieben wurden, können die APM-Vorrichtungen 125 Assoziativverarbeitung verwenden, um Rechenoperationen an den Vektoren gemäß dem ausgewählten Vektorabbildungssystem auszuführen. Alternativ kann ein Compiler oder Vorprozessor das Vektorabbildungssystem bestimmen.
  • Die hierin beschriebenen Assoziativverarbeitungstechniken können von Logik an dem APM-System 110, von Logik an den APM-Vorrichtungen 125 oder von Logik, die zwischen dem APM-System 110 und den APM-Vorrichtungen 125 verteilt ist, implementiert werden. Die Logik kann neben anderen Komponenten und Schaltungen eine oder mehrere Steuerungen, Zugangsschaltungsanordnungen, Kommunikationsschaltungsanordnungen oder eine Kombination davon beinhalten. Die Logik kann dazu konfiguriert sein, Aspekte der hierin beschriebenen Techniken dazu auszuführen, Komponenten des APM-Systems 110 und/oder APM-Vorrichtungen 125 zum Ausführen von Aspekten der hierin beschriebenen Techniken oder zu beidem zu veranlassen.
  • 2 veranschaulicht ein Beispiel einer Vektorberechnung 200, die In-Memory-Assoziativverarbeitung gemäß Beispielen, wie hierin offenbart, unterstützt. Die Vektorberechnung 200 kann ein Beispiel einer Vektoraddition sein und kann an Operandenvektoren vA und vB, die in Speicherzellen (z. B. CAM-Zellen) einer Ebene einer APM-Vorrichtung gespeichert werden können, ausgeführt werden. Das Ergebnis der Vektoraddition kann der Vektor vD sein. Jeder Operandenvektor kann vier Bits beinhalten (z. B. können die Operandenvektoren ein einziges 4-Bit-Element beinhalten), und die Position jedes Bits kann mit i bezeichnet werden. Die Operandenvektoren können, wie unter Bezugnahme auf 1 erörtert, auf Ebenen einer APM-Vorrichtung gespeichert werden, und können mit einem Satz von Vektoranweisungen, wie RISC-V-Vektoranweisungen, assoziiert sein. Die Vektorberechnung 200 kann unter Verwendung der Wahrheitstabelle 205, die die Wahrheitstabelle zum Addieren von zwei Bits und einem potentiellen Übertragsbit sein kann, ausgeführt werden. Die Wahrheitstabelle 205 kann in einem Speicher gespeichert werden, der mit der APM-Vorrichtung gekoppelt oder darin enthalten ist, und Einträge (z. B. Reihen) der Wahrheitstabelle 205 können unter Verwendung von CAM-Techniken mit Operandenbits der Vektoren vA und vB verglichen werden.
  • Das bereitgestellte Beispiel der Verwendung von Assoziativverarbeitung für Rechenoperationen an Vektoren dient nur der Veranschaulichung und ist in keiner Weise einschränkend.
  • Um die Addition des Vektors vA und des Vektors vB unter Verwendung von Assoziativverarbeitung auszuführen, kann die APM-Vorrichtung (z. B. unter Verwendung eines Sequenzers) Einträge der Wahrheitstabelle 205 aus dem Speicher abrufen und die Einträge (z. B. vor Ort unter Verwendung von CAM-Techniken) mit Operandenbits der Vektoren vA und vB vergleichen. Beim Finden einer Übereinstimmung, kann die APM-Vorrichtung das entsprechende Ergebnis (z. B. vDi und Übertragsbit ci+1 für den übereinstimmenden Eintrag in die Ebene schreiben, die die Vektoren (oder eine unterschiedliche Ebene) speichert, bevor zu den nächsten signifikanten Operandenbits der Vektoren übergegangen wird.
  • Beispielsweise kann die APM-Vorrichtung für i = 0 die Einträge der Wahrheitstabelle 205 mit den entsprechenden Operandenbits (z. B. c0 = 0, vA0 = 1 und vB0 = 0) aus den Vektoren vA und vB vergleichen. Beim Erfassen einer Übereinstimmung zwischen den Operandenbits und einem Eintrag der Wahrheitstabelle 205 kann die APM-Vorrichtung das Ergebnis, das dem übereinstimmenden Eintrag entspricht (z. B. vD0 = 0 und Übertragsbit c1= 1) in die Ebene schreiben, die die Operandenvektoren speichert (oder eine Vorrichtung kann die Einträge aus der Wahrheitstabelle 205 mit den Operandenbits für i = 0 in einer seriellen Weise (z. B. beginnend mit dem obersten Eintrag und Verschieben um jeweils einen Eintrag nach unten in der Wahrheitstabelle 205) vergleichen. In einigen Beispielen kann die APM-Vorrichtung Einträge aus der Wahrheitstabelle 205 parallel (z. B. gleichzeitig) mit mehreren Operandenbits vergleichen.
  • Nach dem Bestimmen des Ergebnisses für die i-ten Operandenbits kann die APM-Vorrichtung mit den nächsten signifikanten Operandenbits fortfahren (die das Übertragsbit i+1, das aus den Bits des i-ten Operanden bestimmt wird, beinhalten können). Beispielsweise kann die APM-Vorrichtung nach dem Bestimmen des Ergebnisses für die i = 0-Operandenbits mit den i = 1-Operandenbits (die das Übertragsbit c1, das aus den i = 0-Operandenbits bestimmt wird, beinhalten können) fortfahren. In einigen Szenarien (z. B. wenn die Rechenoperation eine logische Operation ist) kann die APM-Vorrichtung jedoch Rechenoperationen an einigen oder allen Operandenbits parallel ausführen.
  • Für i = 1, kann die APM-Vorrichtung die Einträge der Wahrheitstabelle 205 mit den entsprechenden Operandenbits (z. B. c1 = 1, VA1 = 0 und vB1 = 0) aus den Vektoren vA und vB vergleichen. Beim Erfassen einer Übereinstimmung zwischen den Operandenbits und einem Eintrag der Wahrheitstabelle 205, kann die APM-Vorrichtung das Ergebnis, das dem übereinstimmenden Eintrag entspricht (z. B. vD1 = 1 und Übertragsbit c2 = 0) in die Ebene, die die Operandenvektoren speichert (oder eine unterschiedliche Ebene), schreiben. Die APM-Vorrichtung kann die Einträge aus der Wahrheitstabelle 205 mit den Operandenbits für i = 1 in einer seriellen Weise (z. B. beginnend mit dem obersten Eintrag und Hinuntergehen um jeweils einen Eintrag in der Wahrheitstabelle 205) vergleichen. Nach dem Bestimmen des Ergebnisses für die i = 1 Operandenbits, kann die APM-Vorrichtung mit den i = 2 Operandenbits (die das Übertragsbit c2, das aus den i = 1 Operandenbits ermittelt wird, beinhalten können) fortfahren.
  • Für i = 2, kann die APM-Vorrichtung die Einträge der Wahrheitstabelle 205 mit den entsprechenden Operandenbits (z. B. c2 = 0, vA2 = 0 und vB2 = 0) aus den Vektoren vA und vB vergleichen. Beim Erfassen einer Übereinstimmung zwischen den Operandenbits und einem Eintrag der Wahrheitstabelle 205, kann die APM-Vorrichtung das Ergebnis, das dem übereinstimmenden Eintrag entspricht (z. B. vD2 = 0 und Übertragsbit c3 = 0) in die Ebene (oder eine unterschiedliche Ebene), die die Operandenvektoren speichert, schreiben. Die APM-Vorrichtung kann die Einträge aus der Wahrheitstabelle 205 mit den Operandenbits für i = 2 in einer seriellen Weise (z. B. beginnend mit dem obersten Eintrag und Hinuntergehen um jeweils einen Eintrag in der Wahrheitstabelle 205) vergleichen. Nach dem Bestimmen des Ergebnisses für die i = 2 Operandenbits, kann die APM-Vorrichtung mit den i = 3 Operandenbits (die das Übertragsbit c3, das aus den i = 2 Operandenbits ermittelt wird, beinhalten können) fortfahren.
  • Für i = 3, kann die APM-Vorrichtung die Einträge der Wahrheitstabelle 205 mit den entsprechenden Operandenbits (z. B. c3 = 0, vA3 = 0 und vB3 = 1) aus den Vektoren vA und vB vergleichen. Beim Erfassen einer Übereinstimmung zwischen den Operandenbits und einem Eintrag der Wahrheitstabelle 205, kann die APM-Vorrichtung das Ergebnis, das dem übereinstimmenden Eintrag entspricht (z. B. vD3 = 1 und übertrage Bit c4 = 0) in die Ebene, die die Operandenvektoren speichert (oder eine unterschiedliche Ebene) schreiben. Die APM-Vorrichtung kann die Einträge aus der Wahrheitstabelle 205 mit den Operandenbits für i = 3 in einer seriellen Weise (z. B. beginnend mit dem obersten Eintrag und Hinuntergehen um jeweils einen Eintrag in der Wahrheitstabelle 205) vergleichen.
  • Somit kann die APM-Vorrichtung eine Assoziativverarbeitung dazu verwenden zu bestimmen, dass das Hinzufügen von vA (z. B. 0b0001) und vB (z. B. 0b1001) in vD = 0b1010 resultiert. Nach Abschluss der Additionsoperation kann die APM-Vorrichtung den Vektor vD an eine Host-Vorrichtung kommunizieren, den Ergebnisvektor vD verwenden, um andere Rechenoperationen auszuführen, oder eine Kombination davon.
  • Eine APM-Vorrichtung kann Assoziativverarbeitung für Rechenoperationen an Vektoren ungeachtet des Vektorabbildungssystems verwenden. Die Kommunikation von Übertragsbits, die sich aus Assoziativverarbeitung ergeben, kann jedoch zwischen den Vektorabbildungssystemen variieren. Falls beispielsweise das Vektorabbildungssystem 1 ausgewählt wird, können bestimmte Übertragsbits (z. B. diejenigen, die für den nächsten signifikanten Satz aufeinanderfolgender Bits gelten) zwischen Ebenen derselben Kachel kommuniziert werden. Falls das Vektorabbildungssystem 2 ausgewählt wird, können bestimmte Übertragsbits (z. B. diejenigen, die für den nächsten signifikanten Satz aufeinanderfolgender Bits gelten) zwischen unterschiedlichen Kacheln kommuniziert werden.
  • 3 veranschaulicht ein Beispiel von Ebenen 300, die In-Memory-Assoziativverarbeitung gemäß hierin offenbarten Beispielen unterstützen. Die Ebenen 300 können, wie unter Bezugnahme auf 1 beschrieben, Beispiele von Ebenen 145 sein. Somit können die Ebenen 300 dazu konfiguriert sein, Vektoren für Rechenoperationen, die unter Verwendung von Assoziativverarbeitung ausgeführt werden, zu speichern. In einigen Beispielen können sich die Ebenen 300 in derselben Kachel befinden, wie unter Bezugnahme auf das Vektorabbildungssystem 1 besprochen. In anderen Beispielen können sich die Ebenen 300 in unterschiedlichen Kacheln befinden, wie unter Bezugnahme auf das Vektorabbildungssystem 2 besprochen.
  • In dem gegebenen Beispiel werden n Vektoren mit mehreren (z. B. 256) Multi-Bit-Elementen (z. B. 32-Bit-Elementen) auf vier Ebenen abgebildet. Andere Mengen dieser Faktoren werden jedoch in Betracht gezogen und liegen innerhalb des Geltungsbereichs der vorliegenden Offenbarung.
  • Eine APM-Vorrichtung kann n Vektoren, bezeichnet mit v0 bis vn -1, auf vier Ebenen abbilden und schreiben. Die Menge an Ebenen, auf die Vektoren abgebildet werden, kann eine Funktion der Elementlänge und der Menge an Bits sein, die auf jede Ebene abgebildet werden. Beispielsweise kann die Menge von Ebenen, auf die ein Vektor abgebildet wird, gleich der Elementlänge, dividiert durch die Menge der auf jeder Ebene abgebildeten Bits, sein. Beispielsweise kann die Menge von Ebenen, auf die ein Vektor abgebildet wird, gleich vier sein, was gleich der Elementlänge (z. B. 32) dividiert durch die Menge der auf jede Ebene abgebildeten Bits ist.
  • Wenn nicht jede Ebene, können mindestens einige einen Satz aufeinanderfolgender Bits von mindestens einigen, wenn nicht von jedem Element von mindestens einigen, wenn nicht jedem Vektor speichern. Beispielsweise kann die Ebene 0 aufeinanderfolgende Bits 0-7 für jedes Element jedes Vektors speichern; Ebene 1 kann aufeinanderfolgende Bits 8-15 für jedes Element jedes Vektors speichern; Ebene 2 kann aufeinanderfolgende Bits 16-23 für jedes Element jedes Vektors speichern; und Ebene 3 kann aufeinanderfolgende Bits 24-31 für jedes Element jedes Vektors speichern. Die Bits unterschiedlicher Vektoren können über unterschiedliche Spalten der Ebenen hinweg gespeichert werden, während die Bits unterschiedlicher Elemente über unterschiedliche Reihen der Ebenen hinweg gespeichert werden können. Beispielsweise können die Bits von Vektor 0 in dem ersten Satz aus acht Spalten jeder Ebene gespeichert werden; die Bits von Vektor 1 können in dem zweiten Satz aus acht Spalten jeder Ebene gespeichert werden; die Bits von Vektor 2 können in der dritten Gruppe aus acht Spalten jeder Ebene gespeichert werden; und so weiter und so fort. Für jeden Vektor können die Bits von Element 0 in der ersten Reihe einer gegebenen Ebene gespeichert werden; die Bits von Element 1 können in der zweiten Reihe der Ebene gespeichert werden; die Bits von Element 2 können in der dritten Reihe der Ebene gespeichert werden und so weiter und so fort.
  • Eine Ebene mit x Reihen (z. B. 256 Reihen) kann also in der Lage sein, Vektoren mit x Elementen oder weniger (Vektoren mit einer Länge von 256 oder weniger) zu speichern. Falls ein Vektor mehr als x Elemente aufweist, können die Elemente des Vektors auf mehrere Ebenen aufgeteilt werden (z. B. können die Elemente eines Vektors mit der Länge 512 in zwei Ebenen gespeichert werden, wobei die erste Ebene Bits von den ersten 256 Elementen speichert, und die zweite Ebene Bits von den zweiten 256 Elementen speichert). Somit kann ein System, das die hierin beschriebenen Vektorabbildungssysteme verwendet, Vektoren mit größeren Größen unterstützen als andere Systeme (z. B. serielle Verarbeitungssysteme), die durch die Größe der Verarbeitungsschaltung (z. B. Rechenmaschinen) eingeschränkt sein können.
  • Vektoren können gemäß dem Vektorabbildungssystem 1 oder dem Vektorabbildungssystem 2 gespeichert werden. In dem Vektorabbildungssystem 1 können sich die Ebenen, auf die ein Vektor abgebildet wird, in derselben Kachel befinden. Beispielsweise können Ebene 0 bis Ebene 3 in Kachel A liegen. In dem Vektorabbildungssystem 2 können sich die Ebenen, auf die ein Vektor abgebildet wird, in unterschiedlichen Kacheln befinden. Beispielsweise kann sich Ebene 0 in Kachel A befinden, Ebene 1 kann sich in Kachel B befinden, Ebene 2 kann sich in Kachel C befinden und Ebene 3 kann sich in Kachel D befinden. Auf die Kacheln A bis D (z. B. die Kacheln, über die ein Vektor ausgebreitet ist) kann als eine Hyperebene verwiesen werden. Beide Vektorabbildungssysteme können es einer APM-Vorrichtung erlauben, Rechenoperationen an mehreren Vektoren parallel auszuführen (z. B. während teilweise oder vollständig überlappender Zeiten). Beispielsweise kann die APM-Vorrichtung bei h Kacheln h unterschiedliche Rechenoperationen gleichzeitig ausführen.
  • So kann in dem Vektorabbildungssystem 1 eine APM-Vorrichtung eine einzige Kachel verwenden, um eine Rechenoperation an einem Vektor abzuschließen. Beispielsweise kann die APM-Vorrichtung Kachel A dazu verwenden, die Rechenoperation an den Bits 0-7 der Elemente in dem Vektor auszuführen, kann Kachel A dazu verwenden, die Rechenoperation an den Bits 8-15 der Elemente in dem Vektor auszuführen, kann Kachel A dazu verwenden, die Rechenoperation an den Bits 16-23 der Elemente in dem Vektor auszuführen, und kann Kachel A dazu verwenden, die Rechenoperation an den Bits 24-31 der Elemente des Vektors auszuführen. Falls sich Übertragsbits aus den Rechenoperationen ergeben, kann die APM-Vorrichtung die Übertragsbits (mit „C‟ bezeichnet) zwischen den Ebenen der Kachel A weitergeben. Falls sich beispielsweise ein Übertragsbit aus der Rechenoperation an den Bits 0-7 ergibt, kann die APM-Vorrichtung dieses Übertragsbit von Ebene 0 an Ebene 1 in Kachel A weitergeben.
  • In dem Vektorabbildungssystem 2 kann eine APM-Vorrichtung mehrere Kacheln verwenden, um eine Rechenoperation an einem Vektor abzuschließen. Beispielsweise kann die APM-Vorrichtung Kachel A dazu verwenden, die Rechenoperation an den Bits 0-7 der Elemente in dem Vektor auszuführen, kann Kachel B dazu verwenden, die Rechenoperation an den Bits 8-15 der Elemente in dem Vektor auszuführen, kann Kachel C dazu verwenden, die Rechenoperation an den Bits 16-23 der Elemente in dem Vektor auszuführen, und kann Kachel D dazu verwenden, die Rechenoperation an den Bits 24-31 der Elemente in dem Vektor auszuführen. Falls sich Übertragsbits aus den Rechenoperationen ergeben, kann die APM-Vorrichtung die Übertragsbits zwischen den Kacheln weitergeben. Falls beispielsweise ein Übertragsbit aus der Rechenoperation an den Bits 0-7 resultiert, kann die APM-Vorrichtung dieses Übertragsbit von Kachel A an Kachel B weitergeben.
  • Die hierin beschriebenen Assoziativverarbeitungstechniken können durch Logik in einem APM-System, durch Logik in einer APM-Vorrichtung oder durch Logik, die auf das APM-System und die APM-Vorrichtung verteilt ist, implementiert werden. Die Logik kann neben anderen Komponenten und Schaltungen eine oder mehrere Steuerungen, Zugangsschaltungsanordnungen, Kommunikationsschaltungsanordnungen oder eine Kombination davon beinhalten. Die Logik kann dazu konfiguriert sein, Aspekte der hierin beschriebenen Techniken auszuführen, Komponenten des APM-Systems und/oder der APM-Vorrichtung zu veranlassen, Aspekte der hierin beschriebenen Techniken auszuführen, oder beides.
  • 4 veranschaulicht ein Beispiel von Kacheln 400, die In-Memory-Assoziativverarbeitung gemäß hierin offenbarten Beispielen unterstützen. Die Kacheln 400 können Kachel A, Kachel B und Kachel C beinhalten. Jede Kachel kann einen jeweiligen Satz von Vektoren über drei Ebenen speichern, und die Vektoren können n Multi-Bit-Elemente (z. B. 24-Bit-Elemente) beinhalten. Beispielsweise können drei Ebenen der Kachel A neben anderen Informationen einen oder mehrere Vektor(en) VI für eine erste Rechenoperation speichern, auf die als Rechenoperation I verwiesen wird. Drei Ebenen der Kachel B können neben anderen Informationen einen oder mehrere Vektor(en) VII für eine zweite Rechenoperation, auf die als Rechenoperation II verwiesen wird, speichern. Und drei Ebenen der Kachel C können neben anderen Informationen einen oder mehrere Vektor(en) VIII für eine dritte Rechenoperation, auf die als Rechenoperation III verwiesen wird, speichern. Obwohl unter Bezugnahme auf unterschiedliche Vektoren VI, VII und VIII beschrieben, können zwei oder mehr der Rechenoperationen die gleichen Vektoren involvieren (z. B. können unterschiedliche Rechenoperationen an den gleichen Vektoren parallel durchgeführt werden).
  • Zwischen dem Zeitpunkt t0 und dem Zeitpunkt t1 kann die Kachel A die Rechenoperation I an den Bits 0-7 der Elemente des Vektors (der Vektoren) VI für die Rechenoperation I ausführen, wobei die 0-7 Bits des Vektors (der Vektoren) VI auf einer ersten Ebene der Kachel A gespeichert werden; Kachel B kann Rechenoperation II an den Bits 0-7 der Elemente des Vektors (der Vektoren) VII für Rechenoperation II ausführen, wobei die 0-7 Bits des Vektors (der Vektoren) VII auf einer ersten Ebene der Kachel B gespeichert werden; und Kachel C kann Rechenoperation III an Bits 0-7 von Elementen des Vektors/der Vektoren VIII für Rechenoperation III ausführen, wobei die 0-7 Bits der Vektoren VIII auf einer ersten Ebene der Kachel C gespeichert werden. Die Berechnungsoperationen können unter Verwendung von Assoziativverarbeitung, wie hierin beschrieben, ausgeführt werden.
  • Die Ergebnisse der Rechenoperationen an den Bits 0-7 können auf denselben Ebenen wie die Operandenbits oder auf unterschiedlichen Ebenen gespeichert werden. Beispielsweise kann das Ergebnis der Rechenoperation I an den Bits 0-7 des Vektors (der Vektoren) VI (z. B. als ein Vektor) auf der ersten Ebene der Kachel A gespeichert werden. In ähnlicher Weise kann das Ergebnis der Rechenoperation II an den Bits 0-7 des Vektors/der Vektoren VII (z. B. als ein Vektor) auf der ersten Ebene der Kachel B gespeichert werden. Und das Ergebnis der Rechenoperation III an den Bits 0-7 des Vektors/der Vektoren VIII (z. B. als Vektor) kann auf der ersten Ebene der Kachel C gespeichert werden.
  • In einigen Beispielen (falls z. B. die Rechenoperationen arithmetisch sind) kann eine Rechenoperation an den Bits 0-7 ein Übertragsbit ergeben. In einem derartigen Szenario kann das Übertragsbit (mit „C‟ bezeichnet) von der Ebene, die die 0-7-Bits speichert, an die Ebene kommuniziert werden, die die 8-15-Bits speichert (z. B. den nächsten signifikanten Satz aufeinanderfolgender Bits). Falls beispielsweise die Rechenoperation I an den Bits 0-7 des/der Vektors (der Vektoren) VI ein Übertragsbits ergibt, kann das Übertragsbit von der ersten Ebene der Kachel A an die zweite Ebene der Kachel A (die die 8-15 Bits für Vektor(en) VI speichert) übergeben werden. Somit können in dem Vektorabbildungssystem 1 Übertragsbits zwischen Ebenen derselben Kachel kommuniziert werden.
  • Zwischen dem Zeitpunkt t1 und dem Zeitpunkt t2 kann Kachel A die Rechenoperation I an den Bits 8-15 der Elemente des Vektors/der Vektoren VI für Rechenoperation I ausführen, wobei die 8-15 Bits des Vektors/der Vektoren VI auf einer zweiten Ebene der Kachel A gespeichert werden; Kachel B kann die Rechenoperation II an den Bits 8-15 der Elemente des Vektors/der Vektoren VII für Rechenoperation II ausführen, wobei die 8-15 Bits des Vektors/der Vektoren VII auf einer zweiten Ebene der Kachel B gespeichert werden; und Kachel C kann Rechenoperation III an Bits 8-15 von Elementen des Vektors/der Vektoren VIII für Rechenoperation III ausführen, wobei die 8-15 Bits des Vektors/der Vektoren VIII auf einer zweiten Ebene der Kachel C gespeichert werden. Die Rechenoperationen können unter Verwendung einer Assoziativverarbeitung wie hierin beschrieben ausgeführt werden und können auf irgendwelchen Übertragsbits basieren, die von den ersten Ebenen empfangen werden.
  • Die Ergebnisse der Rechenoperationen an den Bits 8-15 können auf denselben Ebenen wie die Operandenbits oder auf unterschiedlichen Ebenen gespeichert werden. Beispielsweise das Ergebnis der Rechenoperation I an den Bits 8-15 des Vektors/der Vektoren VI kann (z. B. als ein Vektor) auf der zweiten Ebene der Kachel A gespeichert werden. In ähnlicher Weise kann das Ergebnis der Rechenoperation II an den Bits 8-15 des Vektors/der Vektoren VII (z. B. als ein Vektor) auf der zweiten Ebene der Kachel B gespeichert werden. Und das Ergebnis der Rechenoperation III an den Bits 8-15 des Vektors/der Vektoren VIII kann (z. B. als ein Vektor) auf der zweiten Ebene der Kachel C gespeichert werden.
  • In einigen Beispielen (z. B. falls die Rechenoperationen arithmetische Operationen sind) kann eine Rechenoperation an den Bits 8-15 ein Übertragsbits ergeben. In einem derartigen Szenario kann das Übertragsbit von der Ebene, die die Bits 8-15 speichert, an die Ebene kommuniziert werden, die die Bits 16-23 speichert (z. B. der nächste signifikante Satz aufeinanderfolgende Bits). Wenn beispielsweise die Rechenoperation I auf den Bits 8-15 des Vektors/der Vektoren VI ein Übertragsbits ergibt, kann das Übertragsbit von der zweiten Ebene der Kachel A an die dritten Ebene der Kachel A (die die Bits 16-23 für den Vektor/die Vektoren VI speichert), weitergegeben werden.
  • Zwischen dem Zeitpunkt t2 und dem Zeitpunkt t3 kann Kachel A die Rechenoperation I an den Bits 16-23 der Elemente des Vektors/der Vektoren VI für Rechenoperation I ausführen, wobei die 16-23 Bits des Vektors/der Vektoren VI auf einer dritten Ebene der Kachel A gespeichert werden; Kachel B kann die Rechenoperation II an den Bits 16-23 der Elemente des Vektors/der Vektoren VII für Rechenoperation II ausführen, wobei die 16-23 Bits des Vektors/der Vektoren VII in einer dritten Ebene der Kachel B gespeichert werden; und Kachel C kann Rechenoperation III an Bits 16-23 von Elementen des Vektors/der Vektoren VIII für Rechenoperation III ausführen, wobei die 16-23 Bits des Vektors/der Vektoren VIII auf einer dritten Ebene der Kachel C gespeichert werden. Die Rechenoperationen können unter Verwendung von Assoziativverarbeitung, wie hierin beschrieben, ausgeführt werden und können auf irgendwelchen Übertragsbits, die von den ersten Ebenen empfangen werden, basieren.
  • Die Ergebnisse der Rechenoperationen an den Bits 16-23 können auf denselben Ebenen wie die Operandenbits oder auf unterschiedlichen Ebenen gespeichert werden. Beispielsweise kann das Ergebnis der Rechenoperation I an den Bits 16-23 des Vektors/der Vektoren VI (z. B. als ein Vektor) auf der dritten Ebene der Kachel A gespeichert werden. In ähnlicher Weise kann das Ergebnis der Rechenoperation II an den Bits 16-23 des Vektor/der Vektoren VII (z. B. als ein Vektor) auf der dritten Ebene der Kachel B gespeichert werden. Und das Ergebnis der Rechenoperation III an den Bits 16-23 des Vektors/der Vektoren VIII kann (z. B. als ein Vektor) auf der dritten Ebene der Kachel C gespeichert werden.
  • Somit kann eine APM-Vorrichtung Rechenoperationen unter Verwendung von Assoziativverarbeitung und Kacheln, die gemäß dem Vektorabbildungssystem 1 konfiguriert sind, ausführen. Nach Abschluss der Rechenoperationen kann die APM-Vorrichtung eine Angabe der Ergebnisse der Rechenoperationen an eine Host-Vorrichtung kommunizieren und die Ergebnisse dazu verwenden, eine oder mehrere zusätzliche Rechenoperationen oder beides auszuführen.
  • Das Vektorabbildungssystem 1 kann es der APM-Vorrichtung erlauben, längere Vektoren als das Vektorabbildungssystem 2 zu verarbeiten. Dementsprechend kann die APM-Vorrichtung das Vektorabbildungssystem 1 an Stelle des Vektorabbildungssystems 2 basierend auf der Länge der Vektoren, die die APM-Vorrichtung verarbeiten soll, auswählen. Beispielsweise kann die APM-Vorrichtung das Vektorabbildungssystem 1 auswählen, falls eine Schwellenmenge der Vektoren eine Länge, die eine Schwellenlänge erfüllt (z. B. größer als diese ist), aufweist. In einigen Beispielen kann die Schwellenlänge gleich der Anzahl von Reihen pro Ebene sein.
  • Das Vektorabbildungssystem 1 kann es der APM-Vorrichtung erlauben, arithmetische Vektoren effizienter zu verarbeiten als andere Vektorabbildungssysteme, wie etwa das Vektorabbildungssystem 2. Dementsprechend kann die APM-Vorrichtung das Vektorabbildungssystem 1 gegenüber dem Vektorabbildungssystem 2 basierend auf den Berechnungsarten von Rechenoperationen, die die APM-Vorrichtung ausführen soll, auswählen. Beispielsweise kann die APM-Vorrichtung das Vektorabbildungssystem 1 auswählen, falls das Verhältnis von Arithmetikoperationen zu logischen Operationen ein Schwellenverhältnis erfüllt (z. B. größer ist als). Das Vektorabbildungssystem 1 kann es der APM-Vorrichtung auch erlauben, mehrere Vektorausführungs-Threads (z. B. mehrere getrennte Rechenoperationen) parallel auszuführen, da die Kacheln nicht auf die Ausführung derselben Anweisung beschränkt sind.
  • 5 veranschaulicht ein Beispiel von Ebenen 500, die In-Memory-Assoziativverarbeitung gemäß hierin offenbarten Beispielen unterstützen. Die Kacheln 500 können Kachel A, Kachel B und Kachel C beinhalten. Jede Kachel kann drei unterschiedliche Sätze von Vektoren über drei unterschiedliche Ebenen speichern und die Vektoren können n Multi-Bit-Elemente (z. B. 24-Bit-Elemente) beinhalten. Beispielsweise kann eine erste Ebene der Kachel A unter anderen Informationen die Bits 0-7 von den Elementen eines oder mehrerer Vektor(en) VI für eine erste Rechenoperation speichern, die als Rechenoperation I bezeichnet wird; eine zweite Ebene der Kachel A kann unter anderen Informationen die Bits 0-7 von den Elementen eines Vektors oder mehrerer Vektoren VII für eine zweite Rechenoperation speichern, die als Rechenoperation II bezeichnet wird; und eine dritte Ebene der Kachel A kann unter anderen Informationen die Bits 0-7 von den Elementen eines Vektors oder mehrerer Vektoren VIII für eine dritte Rechenoperation speichern, die als Rechenoperation III bezeichnet wird. Kachel B und Kachel C können ähnlich konfiguriert sein, außer dass Kachel B die Bits 8-15 für die Vektoren speichern kann und Kachel C die Bits 16-23 für die Vektoren speichern kann.
  • Zwischen dem Zeitpunkt t0 und dem Zeitpunkt t1 kann die Kachel A die Rechenoperation I an den Bits 0-7 der Elemente des Vektors (der Vektoren) VI für die Rechenoperation I ausführen. Die Rechenoperationen können unter Verwendung von Assoziativverarbeitung, wie hierin beschrieben, ausgeführt werden. Die Ergebnisse der Rechenoperation I an den Bits 0-7 des Vektors/der Vektoren VI können auf derselben Ebene wie die Operandenbits oder auf einer unterschiedlichen Ebene gespeichert werden. Beispielsweise kann das Ergebnis der Rechenoperation I an den Bits 0-7 des Sektors/der Vektoren VI (z. B. als ein Vektor) auf der ersten Ebene der Kachel A gespeichert werden.
  • In einigen Beispielen (falls z. B. die Rechenoperation I eine arithmetische Operation ist) kann die Rechenoperation I an den Bits 0-7 des Sektors/der Vektoren VI ein Übertragsbits ergeben. In einem derartigen Szenario kann das Übertragsbit (mit „C‟ bezeichnet) von der Kachel (z. B. Kachel A), die die Bits 0-7 des Vektors/der Vektoren VI speichert, an die Kachel (z. B. Kachel B), die Bits 8-15 (z. B. den nächsten signifikanten Satz aufeinanderfolgender Bits) speichert, kommunizieren. Somit können in dem Vektorabbildungssystem 2 Übertragsbits zwischen Kacheln kommuniziert werden (z. B. zwischen Ebenen unterschiedlicher Kacheln).
  • Zwischen dem Zeitpunkt t1 und dem Zeitpunkt t2 kann die Kachel A die Rechenoperation II an den Bits 0-7 der Elemente des Vektors (der Vektoren) VII für die Rechenoperation II ausführen. Ferner kann Kachel B die Rechenoperation I an den Bits 8-15 der Elemente des Vektors (der Vektoren) VI für die Rechenoperation I ausführen. Die Rechenoperationen können unter Verwendung von Assoziativverarbeitung, wie hierin beschrieben, ausgeführt werden und können auf beliebigen Übertragsbits, die von den anderen Kacheln erhalten werden, basieren.
  • Das Ergebnis der Rechenoperation II an den Bits 0-7 des Vektors/der Vektoren VII kann auf derselben Ebene wie die Operandenbits oder auf einer unterschiedlichen Ebene gespeichert werden. Beispielsweise kann das Ergebnis der Rechenoperation II an den Bits 0-7 des Vektors/der Vektoren VII (z. B. als ein Vektor) auf der zweiten Ebene der Kachel A gespeichert werden. In ähnlicher Weise kann das Ergebnis der Rechenoperation I an den Bits 8-15 des Vektors/der Vektoren VI (z. B. als ein Vektor) auf der ersten Ebene der Kachel B gespeichert werden.
  • In einigen Beispielen (falls z. B. die Rechenoperationen arithmetische Operationen sind) können die zwischen t1 und t2 ausgeführten Rechenoperationen ein oder mehrere Übertragsbits ergeben. Beispielsweise kann die Rechenoperation II an den Bits 0-7 des Vektors/der Vektoren VII ein Übertragsbits ergeben, die Rechenoperation I an den Bits 8-15 des Vektors der Vektoren VI können eine Übertragsbits ergeben, oder beides. In einem derartigen Szenario kann das Übertragsbit von der Rechenoperation II von der Kachel (z. B. Kachel A), die die Bits 0-7 des Vektors/der Vektoren VII speichert, an die Kachel (z. B. Kachel B), die Bits 8-15 des/der Vektor(en) VII speichert, kommuniziert werden; das Übertragsbit aus der Rechenoperation I kann von der Kachel (z. B. Kachel B), die die Bits 8-15 des Vektors/der Vektoren VI speichert, an die Kachel (z. B. Kachel C), die die Bits Vektor(en) VI 16-23 der speichert, kommuniziert werden, oder beides.
  • Zwischen dem Zeitpunkt t2 und dem Zeitpunkt t3 kann die Kachel A die Rechenoperation III an den Bits 0-7 der Elemente des Vektors/der Vektoren VIII für die Rechenoperation III ausführen. Ferner kann Kachel B die Rechenoperation II an den Bits 8-15 der Elemente des Vektors/der Vektoren VII für die Rechenoperation II ausführen. Und die Kachel C kann die Rechenoperation I an den Bits 16-23 der Elemente des Vektors/der Vektoren VI für Rechenoperation I ausführen. Die Rechenoperationen können unter Verwendung von Assoziativverarbeitung, wie hierin beschrieben, ausgeführt werden und können auf jeglichen Übertragsbits, die von anderen Kacheln empfangen werden, basieren.
  • Die Ergebnisse der Rechenoperation III an den Bits 0-7 des Vektors/der Vektoren VIII können auf derselben Ebene wie die Operandenbits oder auf einer unterschiedlichen Ebene gespeichert werden. Beispielsweise das Ergebnis der Rechenoperation III an den Bits 0-7 des Vektors/der Vektoren VIII (z. B. als ein Vektor) auf der dritten Ebene der Kachel A gespeichert werden. In ähnlicher Weise kann das Ergebnis der Rechenoperation II an den Bits 8-15 des Vektors/der Vektoren VII kann (z. B. als ein Vektor) auf der zweiten Ebene der Kachel B gespeichert werden. Und das Ergebnis der Rechenoperation I an den Bits 16-23 des Vektors/der Vektoren VI kann (z. B. als ein Vektor) auf der ersten Ebene der Kachel C gespeichert werden.
  • Somit kann eine APM-Vorrichtung Rechenoperationen unter Verwendung von Assoziativverarbeitung und Kacheln, die gemäß dem Vektorabbildungssystem 2 konfiguriert sind, ausführen. Nach Abschluss der Rechenoperationen kann die APM-Vorrichtung eine Angabe der Ergebnisse der Rechenoperationen an eine Host-Vorrichtung kommunizieren, die Ergebnisse verwenden, um eine oder mehrere zusätzliche Rechenoperationen auszuführen, oder beides.
  • Das Vektorabbildungssystem 2 kann es der APM-Vorrichtung erlauben, Rechenoperationen auf eine Weise zu staffeln (oder „pipelinen“), die von dem Vektorabbildungssystem 1 nicht unterstützt wird, und kann daher für bestimmte Verarbeitungsaufgaben effizienter sein. Das Vektorabbildungssystem 2 kann jedoch kleinere Vektorlängen als das Vektorabbildungssystem 1 unterstützen. Dementsprechend kann die APM-Vorrichtung das Vektorabbildungssystem 2 basierend auf der Länge der Vektoren, die die APM-Vorrichtung verarbeiten soll, auswählen. Beispielsweise kann die APM-Vorrichtung das Vektorabbildungssystem 2 auswählen, falls eine Schwellenmenge der Vektoren eine Länge aufweist, die eine Schwellenlänge erfüllt (z. B. kleiner als diese ist).
  • Das Vektorabbildungssystem 2 kann es der APM-Vorrichtung erlauben, logische Vektoren effizienter zu verarbeiten als andere Vektorabbildungssysteme, wie z. B. das Vektorabbildungssystem 1. Beispielsweise kann es das Vektorabbildungssystem 2 der APM-Vorrichtung erlauben, eine logische Operation an dem Vektor/den Vektoren VI zwischen dem Zeitpunkt t0 und dem Zeitpunkt t1 durch paralleles Ausführen der logischen Operation an allen 24 Bits des Vektors (der Vektoren) VI (z. B. unter Verwendung der Kacheln A, B und C) vollständig abzuschließen. Eine derartige Parallelität kann für logische Operationen möglich sein, da logische Operationen im Gegensatz zu arithmetischen Operationen möglicherweise keine Übertragsbits ergeben. Somit kann jede Kachel in dem Vektorabbildungssystem 2 arbeiten, ohne darauf zu warten, dass eine Kachel niedrigerer Ordnung die Verarbeitung des Satzes aufeinanderfolgender Bits niedrigerer Ordnung (z. B. weniger signifikant) abschließt. Dementsprechend kann die APM-Vorrichtung das Vektorabbildungssystem 1 gegenüber dem Vektorabbildungssystem 2 basierend auf den Arten von Rechenoperationen, die die APM-Vorrichtung ausführen soll, auswählen. Beispielsweise kann die APM-Vorrichtung das Vektorabbildungssystem 2 auswählen, falls das Verhältnis logischer Operationen zu arithmetischen Operationen ein Schwellenverhältnis erfüllt (z. B. größer ist als).
  • Das Vektorabbildungssystem 2 kann auch eine „Pipeline“ unterschiedlicher Rechenoperationen mit denselben Ebenen ermöglichen (im Gegensatz zum Eingreifen unterschiedlicher Ebenen in jeder Kachel, um eine derartige Pipeline zu erstellen). Beispielsweise könnte zu dem Zeitpunkt t0 Ebene 0 in Kachel A die Rechenoperation 1 ausführen (z. B. die logische Operation 1); zu dem Zeitpunkt t1 könnte Ebene 0 in Kachel A Rechenoperation 2 (z. B. logische Operation 2) ausführen, und Ebene 0 in Kachel B könnte Rechenoperation 1 (z. B. logische Operation 1) ausführen, und so weiter und so fort.
  • 6 veranschaulicht ein Beispiel eines Prozessablaufs 600, der In-Memory-Assoziativverarbeitung gemäß hierin offenbarten Beispielen unterstützt. Der Prozessablauf 600 kann von einer Vorrichtung, wie beispielsweise einem APM-System oder einer APM-Vorrichtung, wie hierin beschrieben, implementiert werden. Die Vorrichtung kann mehrere Vektorabbildungssysteme unterstützen, wie beispielsweise das Vektorabbildungssystem 1 und das Vektorabbildungssystem 2. In einigen Beispielen kann die Vorrichtung zwischen den Vektorabbildungssystemen umschalten (z. B. für unterschiedliche Sätze von Anweisungen).
  • Bei 605 kann die Vorrichtung einen Satz von Anweisungen (z. B. ein Programm, einen Satz von Vektoranweisungen), der von einer Host-Vorrichtung ausgegeben wird, empfangen. Der Satz von Anweisungen kann einen Satz von Rechenoperationen angeben oder damit assoziiert sein. In einigen Beispielen kann der Satz von Anweisungen durch die Host-Vorrichtung über eine CXL-Schnittstelle kommuniziert werden. In einigen Beispielen kann der Satz von Anweisungen Speicheradressen für einen Satz von Vektoren, die Operanden für die Rechenoperationen sind, angeben. Alternativ kann der Satz von Anweisungen von dem Satz von Vektoren begleitet werden. In einigen Beispielen kann der Satz von Anweisungen eines Vektorabbildungssysteme, die von der Vorrichtung unterstützt werden, angeben.
  • Bei 610 kann die Vorrichtung den Satz von Vektoren aus einem Speicher, der mit der Vorrichtung gekoppelt ist, abrufen. Beispielsweise kann die Vorrichtung den Satz von Vektoren aus Speicheradressen des Speichers, die von dem Befehlssatz angezeigt wurden, abrufen. Alternativ kann die Vorrichtung den Satz von Vektoren von der Host-Vorrichtung empfangen oder bestimmen, dass der Satz von Vektoren bereits in einem APM-Chip der Vorrichtung gespeichert ist.
  • Bei 615 kann die Vorrichtung neben anderen Aspekten verschiedene Merkmale des Satzes von Rechenoperationen, verschiedene Merkmale des Satzes von Vektoren oder beides bestimmen. Beispielsweise kann die Vorrichtung die Längen für den Satz von Vektoren bestimmen (z. B. die Menge von Elementen pro Vektor). Zusätzlich oder alternativ die Menge der arithmetischen Operationen in der Menge der Rechenoperationen, die Menge der logischen Operationen in der Menge der Rechenoperationen oder beides. In einigen Beispielen kann die Vorrichtung ein Verhältnis der arithmetischen Operationen zu den logischen Operationen bestimmen.
  • Bei 620 kann die Vorrichtung ein Vektorabbildungssystem aus dem Satz von Vektorabbildungssystemen, die von der Vorrichtung unterstützt werden, auswählen. Beispielsweise kann die Vorrichtung das Vektorabbildungssystem 1 oder das Vektorabbildungssystem 2 auswählen. In einigen Beispielen kann die Vorrichtung das Vektorabbildungssystem, das durch die Host-Vorrichtung bei 605 angezeigt wird, auswählen. In anderen Beispielen kann die Vorrichtung das Vektorabbildungssystem basierend auf einem oder mehreren Merkmalen auswählen. In einigen Beispielen kann die Vorrichtung das Vektorabbildungssystem 1 basierend darauf auswählen, dass einer oder mehrere des Satzes von Vektoren eine Länge aufweisen, die größer ist als eine Schwellenlänge (z. B. größer als die Reihen pro Ebene). In einigen Beispielen kann die Vorrichtung das Vektorabbildungssystem 1 basierend auf dem Satz von Rechenoperationen mit einem Verhältnis von arithmetischen Operationen und logischen Operationen, das ein Schwellenverhältnis erfüllt, auswählen. In einigen Beispielen kann die Vorrichtung das Vektorabbildungssystem 2 basierend darauf auswählen, dass einer oder mehrere des Satzes von Vektoren eine Länge, die kleiner als die Schwellenlänge ist, aufweisen. In einigen Beispielen kann die Vorrichtung das Vektorabbildungssystem 2 basierend auf dem Satz von Rechenoperationen mit einem Verhältnis von logischen Operationen und arithmetischen Operationen, das ein Schwellenverhältnis erfüllt, auswählen.
  • Bei 625 kann die Vorrichtung den Satz von Vektoren gemäß dem ausgewählten Vektorabbildungssystem schreiben. Wenn beispielsweise die Vorrichtung das Vektorabbildungssystem 1 ausgewählt hat, kann die Vorrichtung den Satz von Vektoren in Ebenen der Vorrichtung gemäß dem Vektorabbildungssystem 1 schreiben, wie es hierin beschrieben und in den 3 und 4 gezeigt ist. Wenn die Vorrichtung das Vektorabbildungssystem 2 ausgewählt hat, kann die Vorrichtung den Satz von Vektoren in Ebenen der Vorrichtung gemäß dem Vektorabbildungssystem 2 schreiben, wie es hierin beschrieben und in den 3 und 5 gezeigt ist.
  • Bei 630 kann die Vorrichtung den Satz von Rechenoperationen an dem Satz von Vektoren unter Verwendung von Assoziativverarbeitung und in Übereinstimmung mit dem ausgewählten Vektorabbildungssystem ausführen. Falls die Vorrichtung beispielsweise das Vektorabbildungssystem 1 ausgewählt hat, kann die Vorrichtung den Satz von Rechenoperationen an dem Satz von Vektoren unter Verwendung von Assoziativverarbeitung und in Übereinstimmung mit dem Vektorabbildungssystem 1, wie hierin beschrieben und in den 3 und 4 gezeigt, ausführen. Falls die Vorrichtung das Vektorabbildungssystem 2 ausgewählt hat, kann die Vorrichtung den Satz von Rechenoperationen an dem Satz von Vektoren unter Verwendung von Assoziativverarbeitung und in Übereinstimmung mit dem Vektorabbildungssystem 2, wie hierin beschrieben und wie in den 3 und 5 gezeigt, ausführen.
  • Bei 635 kann die Vorrichtung die Ergebnisse des Satzes von Rechenoperationen in die Ebenen der Vorrichtung schreiben. Bei 640 kann die Vorrichtung einige oder alle Ergebnisse an die Host-Vorrichtung kommunizieren. Zusätzlich oder alternativ kann die Vorrichtung einige oder alle Ergebnisse verwenden, um zusätzliche Verarbeitungsaufgaben auszuführen.
  • Somit kann die Vorrichtung eine Assoziativverarbeitung verwenden, um den Satz von Rechenoperationen an dem Satz von Vektoren auszuführen.
  • 7 zeigt ein Blockdiagramm 700 einer Vorrichtung 720, die die In-Memory-Assoziativverarbeitung gemäß den hierin offenbarten Beispielen unterstützt. Die Vorrichtung 720 kann ein Beispiel für Aspekte einer Speichervorrichtung sein, wie sie unter Bezugnahme auf die 1 bis 6 beschrieben ist. Die Vorrichtung 720 oder verschiedene Komponenten davon können ein Beispiel für Mittel zum Ausführen verschiedener Aspekte von In-Memory-Assoziativverarbeitung für Vektoren, wie hierin beschrieben, sein. Beispielsweise kann die Vorrichtung 720 eine Empfangsschaltungsanordnung 725, eine Logik 730, eine Zugriffsschaltungsanordnung 735, eine Speicherschnittstelle 740 oder eine Kombination davon beinhalten. Jede dieser Komponenten kann direkt oder indirekt, z. B. über einen oder mehrere Busse, mit einer anderen kommunizieren.
  • In einigen Beispielen kann die Empfangsschaltungsanordnung 725 als Mittel zum Empfangen von einer Host-Vorrichtung einer Signalisierung, die einen Satz von Anweisungen angibt, konfiguriert sein oder dies anderweitig unterstützen, wobei der Satz von Anweisungen den ersten Vektor und einen zweiten Vektor als Operanden für eine Rechenoperation angibt. Die Logik 730 kann als ein Mittel zum Auswählen eines Vektorabbildungssystems zum Ausführen der Rechenoperation unter Verwendung einer Assoziativverarbeitung aus einem Satz von Vektorabbildungssystemen konfiguriert sein oder dies anderweitig unterstützen. In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Schreiben von Daten, die den ersten Vektor und den zweiten Vektor darstellen, in einen Satz von Ebenen einer oder mehreren Kacheln mindestens zum Teil basierend auf dem ausgewählten Vektorabbildungssystem konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Ausführen, unter Verwendung von Assoziativverarbeitung, der Rechenoperation auf den Daten, die für den ersten und den zweiten Vektor repräsentativ sind, konfiguriert sein oder dies anderweitig unterstützen. In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Schreiben von Daten, die einen dritten Vektor darstellen, der ein Ergebnis der Rechenoperation ist, in den Satz von Ebenen, konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen kann die Zugriffsschaltung 735ein Mittel zum Vergleichen von Daten, die Bits des ersten Vektors und des zweiten Vektors darstellen, mit Bits von Speicherzellen, die eine Wahrheitstabelle speichern, die Ergebnisse der Rechenoperation für verschiedene Kombinationen von Logikwerten angeben, konfiguriert sein oder dies anderweitig unterstützen, wobei das Ausführen der Rechenoperation mindestens zum Teil auf dem Vergleich basiert.
  • In einigen Beispielen kann die Empfangsschaltungsanordnung 725 als Mittel zum Empfangen einer Angabe des ausgewählten Vektorabbildungssystems von der Host-Vorrichtung konfiguriert sein oder dieses anderweitig unterstützen, wobei das ausgewählte Vektorabbildungssystem mindestens zum Teil basierend auf der Angabe ausgewählt wird.
  • In einigen Beispielen kann die Logik 730 als ein Mittel zum Bestimmen einer Menge von Elementen des ersten Vektors, einer Menge von Elementen des zweiten Vektors oder beider konfiguriert sein oder dies anderweitig unterstützen, wobei das ausgewählte Vektorabbildungssystem basierend auf der Menge von Elementen des ersten Vektors, der Menge von Elementen des zweiten Vektors oder beider ausgewählt wird.
  • In einigen Beispielen kann die Logik 730 als ein Mittel zum Bestimmen eines Verhältnisses logischer Operationen und arithmetischer Operationen, die mit dem Satz von Anweisungen assoziiert sind, konfiguriert sein oder dies anderweitig unterstützen, wobei das ausgewählte Vektorabbildungssystem basierend auf dem Verhältnis logischer Operationen und arithmetischer Operationen ausgewählt wird.
  • In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Schreiben der Daten, die den ersten Vektor darstellen, in unterschiedliche Sätze von Spalten des Satzes von Spalten des Satzes von Ebenen als die Daten, die den zweiten Vektor darstellen, konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Schreiben von Daten, die unterschiedliche Sätze aufeinanderfolgender Bits eines Elements des ersten Vektors darstellen, in unterschiedliche Ebenen des Satzes von Ebenen konfiguriert sein oder dies anderweitig unterstützen. In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Schreiben von Daten, die unterschiedliche Sätze aufeinanderfolgende Bits eines Elements des zweiten Vektors darstellen, in die unterschiedlichen Ebenen des Satzes von Ebenen konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des ersten Vektors darstellen, und von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in eine erste Ebene des Satzes von Ebenen in der Kachel konfiguriert sein oder dies anderweitig unterstützen. In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Schreiben von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des ersten Vektors darstellen, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des zweiten Vektors darstellen, in eine zweite Ebene des Satzes von Ebenen in der Kachel konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des ersten Vektors darstellen, und von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in eine erste Ebene des Satzes von Ebenen in einer ersten Kachel konfiguriert sein oder dies anderweitig unterstützen. In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Schreiben von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des ersten Vektors darstellen, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des ersten Vektors darstellen, in eine zweite Ebene des Satzes von Ebenen in einer zweiten Kachel konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen kann die Speicherschnittstelle 740 als ein Mittel zum Abrufen des ersten Vektors und des zweiten Vektors aus einem Speicher, der mit der Logik gekoppelt ist, mindestens zum Teil basierend auf dem Satz von Anweisungen konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen kann die Empfangsschaltungsanordnung 725 als ein Mittel zum Empfangen von einer Host-Vorrichtung einer Signalisierung, die einen Satz von Anweisungen angibt, die einen Vektor als einen Operanden für eine Rechenoperation angeben, konfiguriert sein oder dies anderweitig unterstützen, wobei der Vektor eine Vielzahl von Elementen, die jedes eine jeweilige Bitlänge aufweisen, beinhaltet. In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits mindestens eines Elements der Vielzahl von Elementen darstellen, in eine erste Ebene einer Kachel, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des mindestens einen Elements darstellen, in eine zweite Ebene der Kachel konfiguriert sein oder dies anderweitig unterstützen. In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Ausführen unter Verwendung von Assoziativverarbeitung der Rechenoperation mindestens zum Teil basierend auf dem Schreiben der Daten, die den ersten Satz aufeinanderfolgender Bits darstellen, in die erste Ebene, und mindestens zum Teil basierend auf Schreiben der Daten, die den zweiten Satz aufeinanderfolgender Bits darstellen, in die zweite Ebene konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen gibt der Satz von Anweisungen einen zweiten Vektor als einen zweiten Operanden für die Rechenoperation an, und die Zugriffsschaltungsanordnung 735 kann als ein Mittel zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in die erste Ebene der Kachel, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des zweiten Vektors darstellen, in die zweite Ebene der Kachel konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines zweiten Elements des Vektors darstellen, in die erste Ebene der Kachel, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des zweiten Elements des Vektors darstellen, in die zweite Ebene der Kachel konfiguriert sein oder dies anderweitig unterstützen.
  • Bei einigen Beispielen kann die Zugriffsschaltungsanordnung 735 zum Unterstützen des Schreibens als ein Mittel zum Schreiben der Daten, die den ersten Satz aufeinanderfolgender Bits darstellen, in einen Subsatz von Spalten der ersten Ebene, und der Daten, die den zweiten Satz aufeinanderfolgender Bits darstellen, in einen Subsatz von Spalten der zweiten Ebene konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen kann die Logik 730 als ein Mittel zum Auswählen des Vektorabbildungssystems mindestens zum Teil basierend darauf, dass eine Menge der Vielzahl von Elementen des Vektors größer als eine Menge von Reihen pro Ebene der Vielzahl von Ebenen ist, konfiguriert sein oder dies anderweitig unterstützen. In einigen Beispielen kann die Logik 730 als ein Mittel zum Auswählen des Vektorabbildungssystems mindestens zum Teil basierend auf dem Satz von Anweisungen, der mit einem Verhältnis arithmetischer Operationen und logischer Operationen assoziiert ist, das größer als ein Schwellenwert ist, konfiguriert sein oder dieses anderweitig unterstützen.
  • In einigen Beispielen kann die Zugriffsschaltung 735zum Unterstützen das Ausführens als ein Mittel zum Vergleichen von Daten, die Bits des Vektors und Bits eines zweiten Vektors darstellen, mit Bits von Speicherzellen, die eine Wahrheitstabelle speichern, die Ergebnisse der Rechenoperation für verschiedene Kombinationen von Logikwerten angibt, konfiguriert sein oder dies anderweitig unterstützen. In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 zum Unterstützen des Ausführens als ein Mittel zum Schreiben von Daten, die einen dritten Vektor darstellen, der ein Ergebnis der Rechenoperation des Satzes von Ebenen ist, mindestens zum Teil basierend auf dem Vergleich konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen kann die Empfangsschaltungsanordnung 725 als ein Mittel zum Empfangen von einer Host-Vorrichtung einer Signalisierung, die einen Satz von Anweisungen angibt, die einen Vektor als einen Operanden für eine Rechenoperation angeben, konfiguriert sein oder dies anderweitig unterstützen, wobei der Vektor eine Vielzahl von Elementen, die jedes eine jeweilige Bitlänge aufweisen, beinhaltet. In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits mindestens eines Elements der Vielzahl von Elementen darstellen, in einer erste Ebene einer Kachel, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des mindestens eines Elements darstellen, in eine zweite Ebene einer zweiten Kachel konfiguriert sein oder dies anderweitig unterstützen. In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Ausführen unter Verwendung von Assoziativverarbeitung der Rechenoperation mindestens zum Teil basierend auf dem Schreiben der Daten, die den ersten Satz aufeinanderfolgender Bits darstellen, in die erste Ebene, und mindestens zum Teil basierend auf Schreiben der Daten, die den zweiten Satz aufeinanderfolgender Bits darstellen, in die zweite Ebene konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen gibt der Satz von Anweisungen einen zweiten Vektor als einen zweiten Operanden für die Rechenoperation an, und die Zugriffsschaltungsanordnung 735 kann als ein Mittel zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in die erste Ebene der Kachel, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des zweiten Vektors darstellen, in die zweite Ebene der zweiten Kachel konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines zweiten Elements des Vektors darstellen, in die erste Ebene der ersten Kachel, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des zweiten Elements des Vektors darstellen, in die zweite Ebene der zweiten Kachel konfiguriert sein oder dies anderweitig unterstützen.
  • Bei einigen Beispielen kann die Zugriffsschaltungsanordnung 735 zum Unterstützen des Schreibens als ein Mittel zum Schreiben der Daten, die den ersten Satz aufeinanderfolgender Bits darstellen, in einen Subsatz von Spalten der ersten Ebene, und der Daten, die den zweiten Satz aufeinanderfolgender Bits darstellen, in einen Subsatz von Spalten der zweiten Ebene konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen kann die Logik 730 als ein Mittel zum Auswählen des Vektorabbildungssystems mindestens zum Teil basierend darauf, dass eine Menge der Vielzahl von Elementen des Vektors größer als eine Menge von Reihen pro Ebene der Vielzahl von Ebenen ist, konfiguriert sein oder dies anderweitig unterstützen. In einigen Beispielen kann die Logik 730 als ein Mittel zum Auswählen des Vektorabbildungssystems mindestens zum Teil basierend auf dem Satz von Anweisungen, der mit einem Verhältnis arithmetischer Operationen und logischer Operationen assoziiert ist, das größer als ein Schwellenwert ist, konfiguriert sein oder dieses anderweitig unterstützen.
  • In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 zum Unterstützen das Ausführens als ein Mittel zum Vergleichen von Daten, die Bits des Vektors und Bits eines zweiten Vektors darstellen, mit Bits von Speicherzellen, die eine Wahrheitstabelle speichern, die Ergebnisse der Rechenoperation für verschiedene Kombinationen von Logikwerten angibt, konfiguriert sein oder dies anderweitig unterstützen. In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 zum Unterstützen des Ausführens als ein Mittel zum Schreiben von Daten, die einen dritten Vektor darstellen, der ein Ergebnis der Rechenoperation des Satzes von Ebenen ist, mindestens zum Teil basierend auf dem Vergleich konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen kann die Empfangsschaltungsanordnung 725 als ein Mittel zum Empfangen einer Signalisierung, die einen Satz von Anweisungen angibt, von einer Host-Vorrichtung konfiguriert sein oder dies anderweitig unterstützen. In einigen Beispielen kann die Logik 730 als ein Mittel zum Auswählen zwischen einem ersten Vektorabbildungssystem und einem zweiten Vektorabbildungssystem zum Schreiben von Vektoren zu Ebenen der Vorrichtung konfiguriert sein oder dies anderweitig unterstützen. In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Schreiben mindestens zum Teil basierend auf dem ausgewählten Vektorabbildungssystem von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des Vektors darstellen, in eine erste Ebene, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements darstellen, in eine zweite Ebene konfiguriert sein oder dies anderweitig unterstützen. In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Ausführen, mindestens zum Teil basierend auf Schreiben der Daten, die den ersten und den zweiten Satz aufeinanderfolgender Bits darstellen, konfiguriert sein oder dies anderweitig unterstützen, wobei die Rechenoperation Assoziativverarbeitung verwendet.
  • In einigen Beispielen kann die Logik 730 als ein Mittel zum Bestimmen eines Verhältnisses arithmetischer Operationen und logischer Operationen, die mit dem Satz von Anweisungen assoziiert sind, einer Länge des Vektors mindestens zum Teil basierend auf der Vielzahl von Elementen oder auf beiden konfiguriert sein oder dies anderweitig unterstützen, wobei das ausgewählte Vektorabbildungssystem mindestens zum Teil basierend auf dem Verhältnis, der Länge des Vektors oder auf beiden ausgewählt wird.
  • In einigen Beispielen gibt der Satz von Anweisungen einen zweiten Vektor als einen Operanden für die Rechenoperation an, und die Zugriffsschaltungsanordnung 735 kann als ein Mittel zum Schreiben mindestens zum Teil basierend auf dem ausgewählten Vektorabbildungssystem von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in die erste Ebene, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des zweiten Vektors darstellen, in die zweite Ebene konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Schreiben mindestens zum Teil basierend auf dem ausgewählten Vektorabbildungssystem von Daten, die einen ersten Satz aufeinanderfolgender Bits eines zweiten Elements des Vektors darstellen, in eine erste Ebene, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des zweiten Elements darstellen, in eine zweite Ebene konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen kann die Empfangsschaltungsanordnung 725 als ein Mittel zum Empfangen an einem Gerät von Signalisierung, die einen Satz von Anweisungen angibt, die einen ersten Vektor und einen zweiten Vektor als Operanden für eine Rechenoperation angeben, konfiguriert sein oder dies anderweitig unterstützen. In einigen Beispielen kann die Logik 730 als ein Mittel zum Auswählen eines Vektorabbildungssystems aus einem Satz von Vektorabbildungssystemen zum Ausführen der Rechenoperation unter Verwendung von Assoziativverarbeitung konfiguriert sein oder dies anderweitig unterstützen. In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Schreiben von Daten, die den ersten Vektor darstellen, und von Daten, die den zweiten Vektor darstellen, in einen Satz von Ebenen, die jeweils ein Array inhaltsadressierbarer Speicherzellen beinhalten, mindestens zum Teil basierend auf dem ausgewählten Vektorabbildungssystem konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen kann die Empfangsschaltungsanordnung 725 als Mittel zum Empfangen einer Angabe des ausgewählten Vektorabbildungssystems von der Host-Vorrichtung konfiguriert sein oder dieses anderweitig unterstützen, wobei das ausgewählte Vektorabbildungssystem mindestens zum Teil basierend auf der Angabe ausgewählt wird.
  • In einigen Beispielen kann die Logik 730 als ein Mittel zum Bestimmen einer Menge von Elementen in dem ersten Vektor, einer Menge von Elementen in dem zweiten Vektor oder in beiden konfiguriert sein oder dies anderweitig unterstützen, wobei das ausgewählte Vektorabbildungssystem basierend auf der Menge von Elementen in dem ersten Vektor, der Menge von Elementen in dem zweiten Vektor oder beiden ausgewählt wird.
  • In einigen Beispielen kann die Logik 730 als ein Mittel zum Bestimmen eines Verhältnisses logischer Operationen und arithmetischer Operationen, die mit dem Satz von Anweisungen assoziiert sind, konfiguriert sein oder dies anderweitig unterstützen, wobei das ausgewählte Vektorabbildungssystem basierend auf dem Verhältnis logischer Operationen und arithmetischer Operationen ausgewählt wird.
  • In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des ersten Vektors darstellen, und von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in eine erste Ebene des Satzes von Ebenen in der Kachel konfiguriert sein oder dies anderweitig unterstützen. In einigen Beispielen befindet sich der Satz von Ebenen in einer Kachel, und die Zugriffsschaltungsanordnung 735 kann als ein Mittel zum Schreiben von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des ersten Vektors darstellen, und von Daten, die einen zweiten Satz einen aufeinanderfolgender Bits des Elements des zweiten Vektors darstellen, in eine zweite Ebene des Satzes von Ebenen in der Kachel konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des ersten Vektors darstellen, und von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in eine erste Ebene des Satzes von Ebenen in einer ersten Kachel konfiguriert sein oder dies anderweitig unterstützen. In einigen Beispielen kann die Zugriffsschaltungsanordnung 735 als ein Mittel zum Schreiben von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des ersten Vektors darstellen, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des ersten Vektors darstellen, in eine zweite Ebene des Satzes von Ebenen in einer zweiten Kachel konfiguriert sein oder dies anderweitig unterstützen.
  • In einigen Beispielen kann die Logik 730 unter anderen Komponenten und Schaltungsanordnungen die Empfangsschaltungsanordnung 725, die Zugriffsschaltungsanordnung 735 und die Speicherschnittstelle 740 beinhalten. Die Logik kann in einem APM-System beinhaltet sein, das in einer APM-Vorrichtung beinhaltet ist, oder kann auf das APM-System und die APM-Vorrichtung verteilt sein. Die Logik 730 kann dazu konfiguriert sein, Aspekte der hierin beschriebenen Techniken auszuführen, Komponenten des APM-Systems und/oder der APM-Vorrichtung dazu zu veranlassen, Aspekte der hierin beschriebenen Techniken auszuführen, oder beides.
  • 8 zeigt ein Ablaufdiagramm, das ein Verfahren 800 veranschaulicht, das In-Memory-Assoziativverarbeitung gemäß den hierin offenbarten Beispielen unterstützt. Die Operationen des Verfahrens 800 können von einer Vorrichtung oder ihren Komponenten, wie hierin beschrieben, implementiert werden. Beispielsweise können die Operationen des Verfahrens 800 von einem APM-System oder eine APM-Vorrichtung, wie unter Bezugnahme auf die 1 bis 7 beschrieben, ausgeführt werden. In einigen Beispielen kann eine Vorrichtung einen Satz von Anweisungen ausführen, um die Funktionselemente der Vorrichtung zu steuern, um die beschriebenen Funktionen auszuführen. Zusätzlich oder alternativ kann die Vorrichtung Aspekte der beschriebenen Funktionen unter Verwendung spezieller Hardware ausführen.
  • In einigen Beispielen kann die Empfangsschaltungsanordnung bei 805 das Empfangen von einer Host-Vorrichtung von Signalisierung beinhalten, die einen Satz von Anweisungen angibt, wobei der Satz von Anweisungen einen ersten Vektor und einen zweiten Vektor als Operanden für einen Rechenvorgang angibt. Die Operationen von 805 können gemäß hierin offenbarten Beispielen ausgeführt werden. In einigen Beispielen können Aspekte der Operationen von 805 von einer Empfangsschaltungsanordnung 725, wie unter Bezugnahme auf 7 beschrieben, ausgeführt werden.
  • Bei 810 kann das Verfahren das Auswählen eines Vektorabbildungssystems aus einem Satz von Vektorabbildungssystemen zum Ausführen der Rechenoperation unter Verwendung einer Assoziativverarbeitung beinhalten. Die Operationen von 810 können gemäß hierin offenbarten Beispielen ausgeführt werden. In einigen Beispielen können Aspekte der Operationen von 810 von einer Logik 730, wie unter Bezugnahme auf 7 beschrieben, ausgeführt werden.
  • Bei 815kann das Verfahren das Schreiben von Daten, die den ersten Vektor und den zweiten Vektor darstellen, in einen Satz von Ebenen einer oder mehrerer Kacheln mindestens zum Teil basierend auf dem ausgewählten Vektorabbildungssystem beinhalten. Die Operationen von 815 können gemäß hierin offenbarten Beispielen ausgeführt werden. In einigen Beispielen können Aspekte der Operationen von 815 von einer Zugriffsschaltungsanordnung 735, wie unter Bezugnahme auf 7 beschrieben, ausgeführt werden.
  • In einigen Beispielen kann ein wie hierin beschriebenes Gerät das Verfahren 800 ausführen. Das Gerät kann einen Speicher-Die beinhalten, der eine Vielzahl von Kacheln umfasst, die jeweils eine Vielzahl von Ebenen umfassen, wobei jede Ebene ein jeweiliges Array inhaltsadressierbarer Speicherzellen umfasst. Das Gerät kann auch Logik beinhalten, die mit dem Speicher-Die gekoppelt ist, und die dazu konfiguriert ist, das Gerät zu veranlassen, die Verfahren, einschließlich des Verfahrens 800, wie hierin beschrieben, auszuführen.
  • In einigen Beispielen kann ein wie hierin beschriebenes Gerät ein Verfahren oder mehrere Verfahren, wie etwa das Verfahren 800, ausführen. Die Vorrichtung kann Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen, z. B. ein nichtflüchtiges computerlesbares Medium, das Anweisungen speichert, die von einem Prozessor ausführbar sind, zum Empfangen von Signalisierung beinhalten, die einen Satz von Anweisungen von einer Host-Vorrichtung angeben, wobei der Satz von Anweisungen einen ersten Vektor und einen zweiten Vektor als Operanden für einen Rechenvorgang angibt, zum Auswählen aus einem Satz von Vektorabbildungssystemen eines Vektorabbildungssystems zum Ausführen der Rechenoperation unter Verwendung von Assoziativverarbeitung auswählen, und zum Schreiben von Daten, die den ersten Vektor und den zweiten Vektor darstellen, in einen Satz von Ebenen einer oder mehrerer Kacheln mindestens zum Teil basierend auf dem ausgewählten Vektorabbildungssystem.
  • Einige Beispiele des Verfahrens 800 und des Geräts, die hierin beschrieben sind, können ferner Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Ausführen unter Verwendung von Assoziativverarbeitung der Rechenoperation an den Daten, die den ersten Vektor und den zweiten Vektor darstellen, und zum Schreiben von Daten, die einen dritten Vektor darstellen, der ein Ergebnis der Rechenoperation des Satzes von Ebenen sein kann, beinhalten.
  • Einige Beispiele des Verfahrens 800 und des Geräts, die hierin beschrieben sind, können ferner Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Vergleichen von Daten, die Bits des ersten Vektors und des zweiten Vektors darstellen, mit Bits inhaltsadressierbarer Speicherzellen, die eine Wahrheitstabelle speichern, die Ergebnisse der Rechenoperation für verschiedene Kombinationen von Logikwerten angibt, beinhalten, wobei das Ausführen der Rechenoperation mindestens zum Teil auf dem Vergleich basieren kann.
  • Einige Beispiele des Verfahrens 800 und des Geräts, die hierin beschrieben sind, können ferner Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Empfangen einer Angabe des ausgewählten Vektorabbildungssystems von der Host-Vorrichtung beinhalten, wobei das ausgewählte Vektorabbildungssystem mindestens zum Teil basierend auf der Angabe ausgewählt werden kann.
  • Einige Beispiele des Verfahrens 800 und des Geräts, die hierin beschrieben sind, können ferner Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Bestimmen einer Menge von Elementen des ersten Vektors, einer Menge von Elementen des zweiten Vektors oder beide beinhalten, wobei das ausgewählte Vektorabbildungssystem basierend auf der Menge von Elementen des ersten Vektors, der Menge von Elementen des zweiten Vektors oder auf beiden ausgewählt werden kann.
  • Einige Beispiele des Verfahrens 800 und des Geräts, die hierin beschrieben sind, können ferner Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Bestimmen eines Verhältnisses logischer Operationen und arithmetischer Operationen, die mit dem Satz von Anweisungen assoziiert sind, beinhalten, wobei das ausgewählte Vektorabbildungssystem basierend auf dem Verhältnis logischer Operationen und arithmetischer Operationen ausgewählt werden kann.
  • In einigen Beispielen des Verfahrens 800 und des Geräts, die hierin beschrieben sind, kann das Schreiben Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Schreiben der Daten, die den ersten Vektor darstellen, in unterschiedliche Sätze von Spalten des Satzes von Ebenen als Daten, die den zweiten Vektor darstellen, beinhalten.
  • In einigen Beispielen des Verfahrens 800 und des Geräts, die hierin beschrieben sind, kann das Schreiben Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Schreiben von Daten, die unterschiedliche Sätze aufeinanderfolgender Bits eines Elements des ersten Vektors darstellen, in unterschiedliche Ebenen des Satzes von Ebenen, und zum Schreiben von Daten, die unterschiedliche Sätze aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in unterschiedliche Ebenen des Satzes von Ebenen beinhalten.
  • In einigen Beispielen des Verfahrens 800 und des Geräts, die hierin beschrieben sind, können das Schreiben Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des ersten Vektors darstellen und von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in eine erste Ebene des Satzes von Ebenen in der Kachel sowie zum Schreiben von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des ersten Vektors darstellen, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des zweiten Vektors darstellen, in eine zweite Ebene des Satzes von Ebenen in der Kachel beinhalten.
  • In einigen Beispielen des Verfahrens 800 und des Geräts, die hierin beschrieben sind, können das Schreiben Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des ersten Vektors darstellen, und von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in eine erste Ebene des Satzes von Ebenen in einer ersten Kachel sowie zum Schreiben von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des ersten Vektors darstellen, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des zweiten Vektors darstellen, in eine zweiten Ebene des Satzes von Ebenen in einer zweiten Kachel beinhalten.
  • In einigen Beispielen des Verfahrens 800 und des Geräts, die hierin beschrieben sind, Abrufen mindestens zum Teil basierend auf dem Satz von Anweisungen des ersten Vektors und des zweiten Vektors aus einem Speicher, der mit der Logik gekoppelt ist.
  • 9 zeigt ein Ablaufdiagramm, das ein Verfahren 900 veranschaulicht, das In-Memory-Assoziativverarbeitung für Vektoren gemäß hierin offenbarten Beispielen unterstützt. Die Operationen des Verfahrens 900 können von einer Vorrichtung oder ihren Komponenten, wie hierin beschrieben, implementiert werden. Beispielsweise können die Operationen des Verfahrens 900 von einem APM-System oder eine APM-Vorrichtung, wie unter Bezugnahme auf die 1 bis 7 beschrieben, ausgeführt werden. In einigen Beispielen kann eine Vorrichtung einen Satz von Anweisungen ausführen, um die Funktionselemente der Vorrichtung zu steuern, um die beschriebenen Funktionen auszuführen. Zusätzlich oder alternativ kann die Vorrichtung Aspekte der beschriebenen Funktionen unter Verwendung spezieller Hardware ausführen.
  • In 905 kann das Verfahren das Empfangen von einer Host-Vorrichtung von Signalisierung beinhalten, die einen Satz von Anweisungen angibt, die einen Vektor als einen Operanden für eine Rechenoperation angeben, wobei der Vektor eine Vielzahl von Elementen, die jedes eine jeweilige Bitlänge aufweisen, beinhaltet. Die Operationen von 905 können gemäß hierin offenbarten Beispielen ausgeführt werden. In einigen Beispielen können Aspekte der Operationen von 905 von einer Empfangsschaltungsanordnung 725, wie unter Bezugnahme auf 7 beschrieben, ausgeführt werden.
  • Bei 910kann das Verfahren das Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits mindestens eines Elements der Vielzahl von Elementen darstellen, in eine erste Ebene einer Kachel, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des mindestens einen Elements darstellen, in eine zweite Ebene der Kachel beinhalten. Die Operationen von 910 können gemäß hierin offenbarten Beispielen ausgeführt werden. In einigen Beispielen können Aspekte der Operationen von 910 von einer Zugriffsschaltungsanordnung 735, wie unter Bezugnahme auf 7 beschrieben, ausgeführt werden.
  • Bei 915 kann das Verfahren das Ausführen unter Verwendung von Assoziativverarbeitung der Rechenoperation mindestens zum Teil basierend auf Schreiben der Daten, die den ersten Satz aufeinanderfolgender Bits darstellen, in die erste Ebene, und mindestens zum Teil basierend auf Schreiben der Daten, die den zweiten Satz aufeinanderfolgender Bits darstellen, in die zweite Ebene beinhalten. Die Operationen von 915 können gemäß hierin offenbarten Beispielen ausgeführt werden. In einigen Beispielen können Aspekte der Operationen von 915 von einer Zugriffsschaltungsanordnung 735, wie unter Bezugnahme auf 7 beschrieben, ausgeführt werden.
  • In einigen Beispielen kann ein wie hierin beschriebenes Gerät das Verfahren 900 ausführen. Das Gerät kann einen Speicher-Die beinhalten, der eine Vielzahl von Kacheln umfasst, die jeweils eine Vielzahl von Ebenen umfassen, wobei jede Ebene ein jeweiliges Array inhaltsadressierbarer Speicherzellen umfasst. Das Gerät kann auch Logik beinhalten, die mit dem Speicher-Die gekoppelt ist, und die dazu konfiguriert ist, das Gerät zu veranlassen, die Verfahren, einschließlich des Verfahrens 900, wie hierin beschrieben, auszuführen.
  • In einigen Beispielen kann ein wie hierin beschriebenes Gerät ein Verfahren oder mehrere Verfahren, wie etwa das Verfahren 900, ausführen. Das Gerät kann Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen (z. B. ein nichtflüchtiges computerlesbares Medium, das Anweisungen speichert, die von einem Prozessor ausführbar sind) zum Empfangen von einer Host-Vorrichtung von Signalisierung beinhalten, die einen Satz von Anweisungen angibt, die einen Vektor als einen Operanden für eine Rechenoperation angeben, wobei der Vektor eine Vielzahl von Elementen beinhaltet, die jedes eine jeweilige Bitlänge aufweisen, zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits des mindestens einen Elements der Vielzahl von Elementen darstellen, in eine erste Ebene der Kachel, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des mindestens einen Elements darstellen, in eine zweite Ebene der Kachel, und zum Ausführen unter Verwendung von Assoziativverarbeitung der Rechenoperation mindestens zum Teil basierend auf Schreiben der Daten, die den ersten Satz aufeinanderfolgender Bits darstellen, in die erste Ebene, und, mindestens zum Teil basierend auf dem Schreiben der Daten, die den zweiten Satz aufeinanderfolgender Bits darstellen, in die zweiten Ebene.
  • In einigen Beispielen des Verfahrens 900 und des Geräts, die hierin beschrieben sind, gibt der Satz von Anweisungen einen zweiten Vektor als einen zweiten Operanden für die Rechenoperation an, und das Verfahren, Geräte und nichtflüchtiges computerlesbares Medium können ferner Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in die erste Ebene der ersten Kachel, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des zweiten Vektors darstellen, in die zweite Ebene der zweiten Kachel beinhalten.
  • Einige Beispiele des Verfahrens 900 und des Geräts, die hierin beschrieben sind, können ferner Operationen, Merkmale Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines zweiten Elements des Vektors darstellen, in die erste Ebene der Kachel, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des zweiten Elements des Vektors darstellen, in die zweite Ebene der Kachel beinhalten.
  • Einige Beispiele des Verfahrens 900 und des Geräts, die hierin beschrieben sind, können das Schreiben Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Schreiben der Daten, die den ersten Satz aufeinanderfolgender Bits darstellen, in einen Subsatz von Spalten der ersten Ebene, und der Daten, die den zweiten Satz aufeinanderfolgender Bits darstellen, in einen Subsatz von Spalten der zweiten Ebene beinhalten.
  • In einigen Beispielen des Verfahrens 900 und des Geräts, die hierin beschrieben sind, können das Verfahren, die Geräte und das nichtflüchtige computerlesbare Medium ferner Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Auswählen des Vektorabbildungssystems mindestens zum Teil basierend darauf, dass eine Menge der Vielzahl von Elementen des Vektors größer ist als eine Menge von Reihen pro Ebene der Vielzahl von Ebenen, beinhalten.
  • In einigen Beispielen des Verfahrens 900 und des Geräts, die hierin beschrieben sind, können das Verfahren, die Geräte und das nichtflüchtige computerlesbare Medium ferner Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Auswählen des Vektorabbildungssystems mindestens zum Teil basierend darauf, dass der Satz von Anweisungen mit einem Verhältnis arithmetischer Operationen und logischer Operationen assoziiert ist, das größer sein kann als ein Schwellenverhältnis, beinhalten.
  • In einigen Beispielen des Verfahrens 900 und des Geräts, die hierin beschrieben sind, kann das Ausführen Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Vergleichen von Daten, die Bits des Vektors und Bits eines zweiten Vektors darstellen, mit Bits inhaltsadressierbarer Speicherzellen, die eine Wahrheitstabelle speichern, die Ergebnisse der Rechenoperation für verschiedene Kombinationen von Logikwerten speichert, und zum Schreiben von Daten, die einen dritten Vektors darstellen, der ein Ergebnis der Rechenoperation ist, in den Satz von Ebenen mindestens zum Teil basierend auf dem Vergleich beinhalten.
  • 10 zeigt ein Ablaufdiagramm, das ein Verfahren 1000 veranschaulicht, das In-Memory-Assoziativverarbeitung für Vektoren gemäß hierin offenbarten Beispielen unterstützt. Die Operationen des Verfahrens 1000 können von einer Vorrichtung oder ihren Komponenten, wie hierin beschrieben, implementiert werden. Beispielsweise können die Operationen des Verfahrens 1000 von einem APM-System oder eine APM-Vorrichtung, wie unter Bezugnahme auf die 1 bis 7 beschrieben, ausgeführt werden. In einigen Beispielen kann eine Vorrichtung einen Satz von Anweisungen ausführen, um die Funktionselemente der Vorrichtung zu steuern, um die beschriebenen Funktionen auszuführen. Zusätzlich oder alternativ kann die Vorrichtung Aspekte der beschriebenen Funktionen unter Verwendung spezieller Hardware ausführen.
  • In 1005 kann das Verfahren das Empfangen von einer Host-Vorrichtung von Signalisierung beinhalten, die einen Satz von Anweisungen angibt, die einen Vektor als einen Operanden für eine Rechenoperation angeben, wobei der Vektor eine Vielzahl von Elementen, die jedes jeweilige Bitlänge aufweisen, beinhaltet. Die Operationen von 1005 können gemäß hierin offenbarten Beispielen ausgeführt werden. In einigen Beispielen können Aspekte der Operationen von 1005 von einer Empfangsschaltungsanordnung 725, wie unter Bezugnahme auf 7 beschrieben, ausgeführt werden.
  • Bei 1010 kann das Verfahren das Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits, mindestens eines Elements der Vielzahl von Elementen darstellen, in eine erste Ebene einer ersten Kachel, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des mindestens einen Elements darstellen, in eine zweite Ebene einer zweiten Kachel beinhalten. Die Operationen von 1010 können gemäß hierin offenbarten Beispielen ausgeführt werden. In einigen Beispielen können Aspekte der Operationen von 1010 von einer Zugriffsschaltungsanordnung 735, wie unter Bezugnahme auf 7 beschrieben, ausgeführt werden.
  • Bei 1015 kann das Verfahren das Ausführen unter Verwendung von Assoziativverarbeitung der Rechenoperation mindestens zum Teil basierend auf Schreiben der Daten, die den ersten Satz aufeinanderfolgender Bits darstellen, in die erste Ebene, und, mindestens zum Teil basierend auf Schreiben der Daten, die den zweiten Satz aufeinanderfolgender Bits darstellen, in die zweite Ebene beinhalten. Die Operationen von 1015 können gemäß hierin offenbarten Beispielen ausgeführt werden. In einigen Beispielen können Aspekte der Operationen von 1015 von einer Zugriffsschaltungsanordnung 735, wie unter Bezugnahme auf 7 beschrieben, ausgeführt werden.
  • In einigen Beispielen kann ein wie hierin beschriebenes Gerät das Verfahren 1000 ausführen. Das Gerät kann einen Speicher-Die beinhalten, der eine Vielzahl von Kacheln umfasst, die jeweils eine Vielzahl von Ebenen umfassen, wobei jede Ebene ein jeweiliges Array inhaltsadressierbarer Speicherzellen umfasst. Das Gerät kann auch Logik beinhalten, die mit dem Speicher-Die gekoppelt ist, und die dazu konfiguriert ist, das Gerät zu veranlassen, die Verfahren, einschließlich des Verfahrens 1000, wie hierin beschrieben, auszuführen.
  • In einigen Beispielen kann ein wie hierin beschriebenes Gerät ein Verfahren oder mehrere Verfahren, wie etwa das Verfahren 1000, ausführen. Das Gerät kann Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen, z. B. ein nichtflüchtiges computerlesbares Medium, das Anweisungen speichert, die von einem Prozessor ausführbar sind, zum Empfangen von einer Host-Vorrichtung von Signalisierung, die einen Satz von Anweisungen angibt, der einen Vektor als einen Operanden für eine Rechenoperation angibt, beinhalten, wobei der Vektor eine Vielzahl von Elementen beinhaltet, die jedes eine jeweilige Bitlänge aufweisen, zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits mindestens eines Elements der Vielzahl erster Elemente darstellen, in eine erste Ebene der ersten Kachel, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des mindestens einen Elements darstellen, in eine zweite Ebene einer zweiten Kachel, und zum Ausführen unter Verwendung von Assoziativverarbeitung der Rechenoperation mindestens zum Teil basierend auf Schreiben der Daten, die den ersten Satz aufeinanderfolgender Bits darstellen, in die erste Ebene und mindestens zum Teil basierend auf Schreiben der Daten, die den zweiten Satz aufeinanderfolgender Bits darstellen, in die zweite Ebene.
  • In einigen Beispielen des Verfahrens 1000 und des Geräts, die hierin beschrieben sind, gibt der Satz von Anweisungen einen zweiten Vektor als einen zweiten Operanden für die Rechenoperation an, und das Verfahren, Geräte und nichtflüchtiges computerlesbares Medium können ferner Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in die erste Ebene der ersten Kachel, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des zweiten Vektors darstellen, in die zweite Ebene der zweiten Kachel beinhalten.
  • Einige Beispiele des Verfahrens 1000 und des Geräts, die hierin beschrieben sind, können ferner Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines zweiten Elements des Vektors darstellen, in die erste Ebene der ersten Kachel, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des zweiten Elements darstellen, in die zweite Ebene der zweiten Kachel beinhalten.
  • In einigen Beispielen des Verfahrens 1000 und des Geräts, die hierin beschrieben sind, können Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Schreiben von Daten, die den ersten Satz aufeinanderfolgender Bits darstellen, in einen Subsatz von Spalten der ersten Ebene, und der Daten, die den zweiten Satz aufeinanderfolgender Bits darstellen, in einen Subsatz von Spalten der zweiten Ebene beinhalten.
  • In einigen Beispielen des Verfahrens 1000 und des Geräts, die hierin beschrieben sind, können das Verfahren, Geräte und nichtflüchtige computerlesbare Medium ferner Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Auswählen des Vektorabbildungssystems mindestens zum Teil basierend darauf beinhalten, dass eine Menge der Vielzahl von Elementen des Vektors größer ist als eine Menge von Reihen pro Ebene der Vielzahl von Ebenen.
  • In einigen Beispielen des Verfahrens 1000 und des Geräts, die hierin beschrieben sind, können das Verfahren, Geräte oder nichtflüchtiges computerlesbares Medium ferner Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Auswählen des Vektorabbildungssystems mindestens zum Teil basierend auf dem Satz von Anweisungen, der mit einem Verhältnis arithmetischer Operationen und logischer Operationen assoziiert ist, das größer sein kann als ein Schwellenverhältnis, beinhalten.
  • In einigen Beispielen des Verfahrens 1000 und des Geräts, die hierin beschrieben sind, kann das Ausführen Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Vergleichen von Daten, die Bits des Vektors und Bits eines zweiten Vektors darstellen, mit Bits inhaltsadressierbarer Speicherzellen, die eine Wahrheitstabelle speichern, die Ergebnisse der Rechenoperation für verschiedene Kombinationen von Logikwerten speichert, und zum Schreiben von Daten, die einen dritten Vektors darstellen, der ein Ergebnis der Rechenoperation ist, in den Satz von Ebenen mindestens zum Teil basierend auf dem Vergleich beinhalten.
  • 11 zeigt ein Ablaufdiagramm, das ein Verfahren 1100 veranschaulicht, das In-Memory-Assoziativverarbeitung für Vektoren gemäß hierin offenbarten Beispielen unterstützt. Die Operationen des Verfahrens 1100 können von einer Vorrichtung oder ihren Komponenten, wie hierin beschrieben, implementiert werden. Beispielsweise können die Operationen des Verfahrens 1100 von einem Speichersystem 100 ausgeführt werden, wie unter Bezugnahme auf die 1 bis 7 beschrieben. In einigen Beispielen kann eine Vorrichtung einen Satz von Anweisungen ausführen, um die Funktionselemente der Vorrichtung zu steuern, um die beschriebenen Funktionen auszuführen. Zusätzlich oder alternativ kann die Vorrichtung Aspekte der beschriebenen Funktionen unter Verwendung spezieller Hardware ausführen.
  • Bei 1105kann das Verfahren das Empfangen einer Signalisierung, die einen Satz von Anweisungen angibt, von einer Host-Vorrichtung, beinhalten. Die Operationen von 1105 können gemäß hierin offenbarten Beispielen ausgeführt werden. In einigen Beispielen können Aspekte der Operationen von 1105 von einer Empfangsschaltungsanordnung 725, wie unter Bezugnahme auf 7 beschrieben, ausgeführt werden.
  • Bei 1110kann das Verfahren das Auswählen zwischen einem ersten Vektorabbildungssystem und einem zweiten Vektorabbildungssystem zum Schreiben von Vektoren zu Ebenen der Vorrichtung beinhalten. Die Operationen von 1110 können gemäß hierin offenbarten Beispielen ausgeführt werden. In einigen Beispielen können Aspekte der Operationen von 1110 von einer Logik 730, wie unter Bezugnahme auf 7 beschrieben, ausgeführt werden.
  • Bei 1115kann das Verfahren mindestens zum Teil basierend auf dem ausgewählten Vektorabbildungssystem das Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des Vektors darstellen, in eine erste Ebene, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements darstellen, in eine zweite Ebene beinhalten. Die Operationen von 1115 können gemäß hierin offenbarten Beispielen ausgeführt werden. In einigen Beispielen können Aspekte der Operationen von 1115 von einer Zugriffsschaltungsanordnung 735, wie unter Bezugnahme auf 7 beschrieben, ausgeführt werden.
  • Bei 1120 kann das Verfahren das Ausführen der Rechenoperation unter Verwendung von Assoziativverarbeitung mindestens zum Teil basierend auf Schreiben der Daten, die den ersten und den zweiten Satz aufeinanderfolgender Bits darstellen, beinhalten. Die Operationen von 1120 können gemäß hierin offenbarten Beispielen ausgeführt werden. In einigen Beispielen können Aspekte der Operationen von 1120 von einer Zugriffsschaltungsanordnung 735, wie unter Bezugnahme auf 7 beschrieben, ausgeführt werden.
  • In einigen Beispielen kann ein wie hierin beschriebenes Gerät das Verfahren 1100 ausführen. Das Gerät kann eine Host-Vorrichtung beinhalten, die dazu konfiguriert ist, Signalisierung zu übertragen, die einen Satz von Anweisungen angibt, die einen Vektor als einen Operanden für eine Rechenoperation angeben, wobei der Vektor eine Vielzahl von Elementen, die jedes eine jeweilige Bitlänge aufweisen, umfasst. Das Gerät kann auch eine Vorrichtung beinhalten, die mit der Host-Vorrichtung gekoppelt ist und die dazu konfiguriert ist, Assoziativverarbeitung auszuführen, wobei die Vorrichtung eine Vielzahl von Kacheln umfasst, die jeweils eine Vielzahl von Ebenen umfassen, wobei jede Ebene ein jeweiliges Array inhaltsadressierbarer Speicherzellen umfasst. Das Gerät kann auch Logik beinhalten, die mit der Vorrichtung gekoppelt ist, und die dazu konfiguriert ist, die Vorrichtung zu veranlassen, die Verfahren, einschließlich des Verfahrens 1100, wie hierin beschrieben auszuführen.
  • In einigen Beispielen kann ein wie hierin beschriebenes Gerät ein Verfahren oder mehrere Verfahren, wie etwa das Verfahren 1100, ausführen. Die Vorrichtung kann Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen, z. B. ein nichtflüchtiges computerlesbares Medium, das Anweisungen speichert, die von einem Prozessor ausführbar sind, zum Empfangen von Signalisierung beinhalten, die einen Satz von Anweisungen von einer Host-Vorrichtung angeben, zum Auswählen aus einem ersten Vektorabbildungssystem und einem zweiten Vektorabbildungssystem zum Schreiben von Vektoren zu Ebenen der Vorrichtung, zum Schreiben, mindestens zum Teil basierend auf dem ausgewählten Vektorabbildungssystem, von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des Vektors darstellen, in eine erste Ebene, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements darstellen, in eine zweite Ebene, und zum Ausführen mindestens zum Teil basierend auf Schreiben der Daten, die den ersten und den zweiten Satz aufeinanderfolgender Bits darstellen, wobei die Rechenoperation Assoziativverarbeitung verwendet.
  • Einige Beispiele des Verfahrens 1100 und des Geräts, die hierin beschrieben sind, können ferner Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Bestimmen eines Verhältnisses arithmetischer Operationen und logischer Operationen, die mit dem Satz von Anweisungen, einer Länge des Vektors mindestens zum Teil basierend auf der Vielzahl von Elementen oder beide beinhalten, wobei das ausgewählte Vektorabbildungssystem mindestens zum Teil basierend auf dem Verhältnis, der Länge des Vektors oder auf beiden ausgewählt werden kann.
  • In einigen Beispielen des Verfahrens 1100 und des Geräts, die hierin beschrieben sind, gibt der Satz von Anweisungen einen zweiten Vektor als einen zweiten Operanden für die Rechenoperation an, und das Verfahren, Geräte und nichtflüchtiges computerlesbares Medium können ferner Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Schreiben von Daten, mindestens zum Teil basierend auf dem ausgewählten Vektorabbildungssystem, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in die erste Ebene, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des zweiten Vektors darstellen, in die zweite Ebene beinhalten.
  • Einige Beispiele des Verfahrens 1100 und des Geräts, die hierin beschrieben sind, können ferner Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Schreiben mindestens zum Teil basierend auf dem ausgewählten Vektorabbildungssystem, von Daten, die einen ersten Satz aufeinanderfolgender Bits eines zweiten Elements des Vektors darstellen, in die erste Ebene, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des zweiten Elements des Vektors darstellen, in die zweite Ebene beinhalten.
  • 12 zeigt ein Ablaufdiagramm, das ein Verfahren 1200 veranschaulicht, das In-Memory-Assoziativverarbeitung für Vektoren gemäß hierin offenbarten Beispielen unterstützt. Die Operationen des Verfahrens 1200 können von einer Vorrichtung oder ihren Komponenten, wie hierin beschrieben, implementiert werden. Beispielsweise können die Operationen des Verfahrens 1200 von einem APM-System oder einer APM-Vorrichtung, wie unter Bezugnahme auf die 1 bis 7 beschrieben, ausgeführt werden. In einigen Beispielen kann eine Vorrichtung einen Satz von Anweisungen ausführen, um die Funktionselemente der Vorrichtung zu steuern, um die beschriebenen Funktionen auszuführen. Zusätzlich oder alternativ kann die Vorrichtung Aspekte der beschriebenen Funktionen unter Verwendung spezieller Hardware ausführen.
  • Bei 1205kann das Verfahren das Empfangen an einem Gerät einer Signalisierung, die einen Satz von Anweisungen angibt, die einen ersten Vektor und einen zweiten Vektor als Operanden für eine Rechenoperation angeben, beinhalten. Die Operationen von 1205 können gemäß hierin offenbarten Beispielen ausgeführt werden. In einigen Beispielen können Aspekte der Operationen von 1205 von einer Empfangsschaltungsanordnung 725, wie unter Bezugnahme auf 7 beschrieben, ausgeführt werden.
  • Bei 1210 kann das Verfahren das Auswählen aus einem Satz von Vektorabbildungssystemen eines Vektorabbildungssystems zum Ausführen der Rechenoperation unter Verwendung von Assoziativverarbeitung beinhalten. Die Operationen von 1210 können gemäß hierin offenbarten Beispielen ausgeführt werden. In einigen Beispielen können Aspekte der Operationen von 1210 von einer Logik 730, wie unter Bezugnahme auf 7 beschrieben, ausgeführt werden.
  • Bei 1215kann das Verfahren das Schreiben von Daten, die den ersten Vektor darstellen, und von Daten, die den zweiten Vektor darstellen, in einen Satz von Ebenen, die jeweils ein Array inhaltsadressierbarer Speicherzellen beinhalten, mindestens zum Teil basierend auf dem ausgewählten Vektorabbildungssystem beinhalten. Die Operationen von 1215 können gemäß hierin offenbarten Beispielen ausgeführt werden. In einigen Beispielen können Aspekte der Operationen von 1215 von einer Zugriffsschaltungsanordnung 735, wie unter Bezugnahme auf 7 beschrieben, ausgeführt werden.
  • In einigen Beispielen kann ein wie hierin beschriebenes Gerät ein Verfahren oder mehrere Verfahren, wie etwa das Verfahren 1200, ausführen. Die Vorrichtung kann Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen (z. B. ein nichtflüchtiges computerlesbares Medium, das Anweisungen speichert, die von einem Prozessor ausführbar sind) zum Empfangen an einem Gerät von Signalisierung beinhalten, die einen Satz von Anweisungen angibt, die einen ersten Vektor und einen zweiten Vektor als Operanden für eine Rechenoperation angeben, zum Auswählen aus einem Satz von Vektorabbildungssystemen eines Vektorabbildungssystems zum Ausführen der Rechenoperation unter Verwendung von Assoziativverarbeitung, und zum Schreiben von Daten, die den ersten Vektor darstellen, und von Daten, die den zweiten Vektor darstellen, in einen Satz von Ebenen, die jeweils ein Array inhaltsadressierbarer Speicherzellen beinhalten, mindestens zum Teil basierend auf dem ausgewählten Vektorabbildungssystem beinhalten.
  • Einige Beispiele des Verfahrens 1200 und des Geräts, die hierin beschrieben sind, können ferner Operationen, Merkmale, Schaltungsanordnungen, Mittel oder Anweisungen zum Empfangen einer Angabe des ausgewählten Vektorabbildungssystems von der Host-Vorrichtung beinhalten, wobei das ausgewählte Vektorabbildungssystem mindestens zum Teil basierend auf der Angabe ausgewählt werden kann.
  • Einige Beispiele des Verfahrens 1200 und des Geräts, die hierin beschrieben sind, können ferner Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Bestimmen einer Menge von Elementen in dem ersten Vektor, einer Menge von Elementen in dem zweiten Vektor oder in beiden beinhalten, wobei das ausgewählte Vektorabbildungssystem basierend auf der Menge von Elementen in dem ersten Vektor, der Menge von Elementen in dem zweiten Vektor oder auf beiden ausgewählt werden kann.
  • Einige Beispiele des Verfahrens 1200 und des Geräts, die hierin beschrieben sind, können ferner Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Bestimmen eines Verhältnisses logischer Operationen und arithmetischer Operationen, die mit dem Satz von Anweisungen assoziiert sind, beinhalten, wobei das ausgewählte Vektorabbildungssystem basierend auf dem Verhältnis logischer Operationen und arithmetischer Operationen ausgewählt werden kann.
  • In einigen Beispielen des Verfahrens 1200 und des Geräts, die hierin beschrieben sind, kann der Satz von Ebenen in einer Kachel liegen und das Verfahren, die Geräte und das nichtflüchtige computerlesbare Medium können ferner Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des ersten Vektors darstellen, und von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in eine erste Ebene des Satzes von Ebenen in der Kachel und Schreiben von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des ersten Vektors darstellen, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des zweiten Vektors darstellen, in eine zweite Ebene des Satzes von Ebenen in der Kachel beinhalten.
  • In einigen Beispielen des Verfahrens 1200 und des Geräts, die hierin beschrieben sind, können das Verfahren, die Geräte und das nichtflüchtige computerlesbare Medium ferner Operationen, Merkmale, Schaltungsanordnungen, Logik, Mittel oder Anweisungen zum Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des ersten Vektors darstellen, und von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in eine erste Ebene des Satzes von Ebenen in eine erste Kachel und Schreiben von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des ersten Vektors darstellen, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des zweiten Vektors darstellen, in eine zweite Ebene des Satzes von Ebenen in einer zweiten Kachel beinhalten.
  • Es sollte beachtet werden, dass die hierin beschriebenen Verfahren mögliche Implementierungen beschreiben, und dass die Operationen und die Schritte neu geordnet oder anderweitig modifiziert werden können, und dass andere Implementierungen möglich sind. Ferner können Teile von zwei oder mehr der Verfahren kombiniert werden.
  • Die in dieser Schrift beschriebenen Informationen und Signale können unter Verwendung einer Vielzahl unterschiedlicher Technologien und Techniken dargestellt werden. Zum Beispiel können Daten, Anweisungen, Befehle, Informationen, Signale, Bits, Symbole und Chips, die eventuell in der obigen Beschreibung erwähnt sind, anhand von Spannungen, Strömen, elektromagnetischen Wellen, Magnetfeldern oder magnetischen Partikeln, optischen Feldern oder Partikeln oder einer beliebigen Kombination davon dargestellt werden. einige Zeichnungen können Signale als ein einziges Signal veranschaulichen; das Signal kann jedoch einen Bus von Signalen darstellen, wobei der Bus eine Vielzahl von Bitbreiten aufweisen kann.
  • Die Begriffe „elektronische Kommunikation“, „leitender Kontakt“, „verbunden“ und „gekoppelt“ können sich auf eine Beziehung zwischen Komponenten beziehen, die den Fluss von Signalen zwischen den Komponenten unterstützt. Komponenten gelten als elektronisch miteinander kommunizierend (oder in leitendem Kontakt miteinander oder verbunden oder gekoppelt), falls es einen leitenden Pfad zwischen den Komponenten gibt, der jederzeit den Signalfluss zwischen den Komponenten unterstützen kann. Zu jedem beliebigen Zeitpunkt kann der leitende Pfad zwischen Komponenten, die in elektronischer Kommunikation miteinander stehen (oder in leitendem Kontakt mit ihnen stehen oder mit ihnen verbunden oder gekoppelt sind), eine offene Schaltung oder eine geschlossene Schaltung basierend auf dem Betrieb der Vorrichtung, die die angeschlossenen Komponenten beinhaltet, sein. Der leitende Pfad zwischen verbundenen Komponenten kann ein direkter leitender Pfad zwischen den Komponenten sein, oder der leitende Pfad zwischen verbundenen Komponenten kann ein indirekter leitender Pfad sein, der Zwischenkomponenten, wie Schalter, Transistoren oder andere Komponenten, beinhalten kann. In einigen Beispielen kann der Fluss von Signalen zwischen den verbundenen Komponenten zeitweise unterbrochen werden, zum Beispiel unter Verwendung einer oder mehrerer Zwischenkomponenten wie etwa Schalter oder Transistoren.
  • Der Begriff „Kopplung“ bezieht sich auf einen Zustand, in dem von einem offenen Schaltkreis zwischen Komponenten, in dem Signale derzeit nicht über einen leitenden Pfad zwischen den Komponenten übertragen werden können, zu einem geschlossenen Schaltkreis zwischen Komponenten übergegangen wird, in dem Signale über den leitenden Pfad zwischen Komponenten übertragen werden können. Wenn eine Komponente, wie etwa eine Steuerung, andere Komponenten miteinander koppelt, löst die Komponente eine Änderung aus, die es erlaubt, dass Signale zwischen den anderen Komponenten über einen leitenden Pfad, der vorher keinen Signalfluss gestattete, fließen.
  • Zwei oder mehr Aktionen können „parallel“ auftreten, wenn die Aktionen zur gleichen Zeit, im Wesentlichen zur gleichen Zeit, zu teilweise überlappenden Zeiten oder zu vollständig überlappenden Zeiten stattfinden.
  • Die hierin dargelegte Beschreibung beschreibt in Verbindung mit den beigefügten Zeichnungen beispielhafte Konfigurationen und stellt nicht alle Beispiele dar, die implementiert werden können oder innerhalb des Schutzumfangs der Ansprüche liegen. Der hierin verwendete Begriff „beispielhaft“ bedeutet „als ein Beispiel, eine Instanz oder Veranschaulichung dienend“ und nicht „bevorzugt“ oder „vorteilhaft gegenüber anderen Beispielen“. Die detaillierte Beschreibung beinhaltet spezifische Details zur Bereitstellung eines Verständnisses der beschriebenen Techniken. Diese Techniken können jedoch auch ohne diese spezifischen Details angewandt werden. In einigen Instanzen werden bekannte Strukturen und Vorrichtungen in Form von Blockdiagrammen dargestellt, um die Konzepte der beschriebenen Beispiele nicht zu verschleiern.
  • In den beigefügten Figuren können ähnliche Komponenten oder Merkmale das gleiche Bezugszeichen haben. Darüber hinaus können verschiedene Komponenten derselben Art dadurch unterschieden werden, dass dem Bezugszeichen ein Bindestrich und eine zweite Bezeichnung folgt, die die ähnlichen Komponenten voneinander unterscheidet. Wird in der Beschreibung nur das erste Bezugszeichen verwendet, so gilt die Beschreibung für jede der gleichartigen Komponenten mit demselben ersten Bezugszeichen, unabhängig vom zweiten Bezugszeichen.
  • Die hier beschriebenen Funktionen können in Hardware, in Software, die von einem Prozessor ausgeführt wird, in Firmware oder in einer Kombination davon implementiert werden. Falls die Funktionen in Software implementiert werden, die von einem Prozessor ausgeführt wird, können sie als eine oder mehrere Anweisungen oder Code auf einem computerlesbaren Medium gespeichert oder darüber übertragen werden. Andere Beispiele und Implementierungen fallen in den Anwendungsbereich der Offenbarung und der beigefügten Ansprüche. Aufgrund der Beschaffenheit von Software können die hierin beschriebenen Funktionen beispielsweise mit Hilfe von Software, die von einem Prozessor ausgeführt wird, Hardware, Firmware, Festverdrahtung oder Kombinationen aus diesen implementiert werden. Merkmale, die Funktionen implementieren, können auch physisch an verschiedenen Positionen angeordnet sein, einschließlich einer Verteilung, so dass Teile von Funktionen an verschiedenen physischen Orten implementiert sind.
  • Zum Beispiel können die verschiedenen illustrativen Blöcke und Module, die im Zusammenhang mit der vorliegenden Offenbarung beschrieben werden, mit einem Allzweckprozessor, einem DSP, einem ASIC, einem FPGA oder einer anderen programmierbaren Logikvorrichtung, diskreter Gatter- oder Transistorlogik, diskreten Hardwarekomponenten oder einer beliebigen Kombination davon implementiert oder ausgeführt werden, um die hier beschriebenen Funktionen auszuführen. Ein Universalprozessor kann ein Mikroprozessor sein, alternativ kann der Prozessor ein beliebiger Prozessor, eine Steuerung, Mikrosteuerung oder eine Zustandsmaschine sein. Ein Prozessor kann ebenso als eine Kombination von Rechenvorrichtungen implementiert sein (z. B. eine Kombination aus einem DSP und einem Mikroprozessor, mehrere Mikroprozessoren, ein oder mehrere Mikroprozessoren in Verbindung mit einem DSP-Kern oder eine beliebige andere derartige Konfiguration).
  • Wie hierin verwendet, einschließlich in den Ansprüchen, bedeutet „oder“ in einer Liste von Elementen (z. B. in einer Liste von Elementen, der ein Satz wie „mindestens eines von“ oder „eines oder mehrere von“ vorangestellt ist) eine beinhaltende Liste, so dass z. B. eine Liste von mindestens einem von A, B oder C A oder B oder C oder AB oder AC oder BC oder ABC (d. h. A und B und C) bedeutet. Außerdem soll der Ausdruck „basierend auf“, wie er hierin verwendet wird, nicht als Verweis auf einen geschlossenen Satz von Bedingungen ausgelegt werden. Beispielsweise kann ein beispielhafter Schritt, der als „basierend auf Bedingung A“ beschrieben ist, sowohl auf einer Bedingung A als auch auf einer Bedingung B basieren, ohne vom Schutzumfang der vorliegenden Offenbarung abzuweichen. Mit anderen Worten muss die Phrase „basierend auf“, wie hierin verwendet, in der gleichen Weise wie der Ausdruck „mindestens zum Teil basierend auf‟ ausgelegt werden.
  • Computerlesbare Medien beinhalten sowohl nichttransitorische Computerspeichermedien als auch Kommunikationsmedien, einschließlich aller Medien, die die Übertragung eines Computerprogramms von einem Ort zu einem anderen erleichtern. Ein nichttransitorisches Speichermedium kann ein beliebiges verfügbares Medium sein, auf das ein Allzweck- oder Spezialcomputer zugreifen kann. Als Beispiel und nicht einschränkend können nichtflüchtige computerlesbare Medien Folgendes umfassen: RAM, ROM, elektrisch löschbaren programmierbaren Festwertspeicher (Electrically Erasable Programmable Read-Only Memory - EEPROM), Compact-Disk-ROM (CD-ROM) oder andere optische Plattenspeicher, Magnetplattenspeicher oder andere magnetische Speichervorrichtungen oder jedes andere nichtflüchtige Medium, das verwendet werden kann, um gewünschte Programmcodemittel in Form von Anweisungen oder Datenstrukturen zu tragen oder zu speichern, und auf das von einem Allzweck- oder Spezialcomputer zugegriffen werden kann, oder einen Allzweck- oder Spezialcomputer. Außerdem wird jede Verbindung richtigerweise als computerlesbares Medium bezeichnet. Falls die Software zum Beispiel von einer Website, einem Server oder einer anderen entfernten Quelle über ein Koaxialkabel, Glasfaserkabel, Twisted Pair, Digital Subscriber Line (DSL) oder drahtlose Technologien wie Infrarot, Radio und Mikrowelle gesendet wird, dann sind das Koaxialkabel, Glasfaserkabel, Twisted Pair, Digital Subscriber Line (DSL) oder drahtlose Technologien wie etwa Infrarot, Funk und Mikrowelle in der Definition des Mediums beinhalten. Disk und Disc beinhalten, wie hierin verwendet, CD, Laserdisc, optische Disc, Digital Versatile Disc (DVD), Diskette und Blu-Ray-Disc, wobei Disks Daten normalerweise magnetisch wiedergeben, während Discs Daten optisch mit Lasern wiedergeben. Kombinationen des Vorstehenden sind ebenfalls im Umfang computerlesbarer Medien beinhalten.
  • Die Beschreibung hierin wird bereitgestellt, um es dem Fachmann zu ermöglichen, die Offenbarung herzustellen oder zu verwenden. Verschiedene Modifikationen der Offenbarung werden dem Fachmann offensichtlich sein, und die hierin definierten allgemeinen Prinzipien können auf andere Variationen angewandt werden, ohne vom Schutzumfang der Offenbarung abzuweichen. Daher ist die Offenbarung nicht auf die hier beschriebenen Beispiele und Designs beschränkt, sondern hat den weitestgehenden Schutzumfang, der mit den hier offenbarten Prinzipien und neuen Merkmalen vereinbar ist.
  • 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 63239103 [0001]

Claims (35)

  1. Gerät, umfassend: einen Speicher-Die (135), der eine Vielzahl von Kacheln (140; 400; 500; A, B, C) umfasst, die jeweils eine Vielzahl von Ebenen (145; 300; 0-3) umfassen, wobei jede Ebene (145; 300; 0-3) ein jeweiliges Array inhaltsadressierbarer Speicherzellen umfasst; und Logik, die mit dem Speicher-Die (135) gekoppelt und konfiguriert zum: Empfangen von Signalisierung, die einen Satz von Anweisungen angibt, von einer Host-Vorrichtung (105), wobei der Satz von Anweisungen einen ersten Vektor und einen zweiten Vektor als Operanden für eine Rechenoperation angibt; Auswählen eines Vektorabbildungssystems aus einem Satz von Vektorabbildungssystemen zum Ausführen der Rechenoperation unter Verwendung von Assoziativverarbeitung; und Schreiben von Daten, die den ersten Vektor und den zweiten Vektor darstellen, in einen Satz von Ebenen (145; 300; 0-3) einer oder mehrerer Kacheln (140; 400; 500; A, B, C) mindestens zum Teil basierend auf dem ausgewählten Vektorabbildungssystem.
  2. Gerät nach Anspruch 1, wobei die Logik ferner konfiguriert ist zum: Ausführen der Rechenoperation an den Daten, die den ersten Vektor und den zweiten Vektor darstellen, unter Verwendung von Assoziativverarbeitung; und Schreiben von Daten, die einen dritten Vektor darstellen, der ein Ergebnis der Rechenoperation ist, in den Satz von Ebenen (145; 300; 0-3).
  3. Gerät nach Anspruch 2, wobei die Logik ferner konfiguriert ist zum: Vergleichen von Daten, die Bits des ersten Vektors und des zweiten Vektors darstellen, mit Bits von Speicherzellen, die eine Wahrheitstabelle speichern, die Ergebnisse der Rechenoperation für verschiedene Kombinationen von Logikwerten angibt, wobei das Ausführen der Rechenoperation mindestens zum Teil auf dem Vergleich basiert.
  4. Gerät nach einem der vorausgehenden Ansprüche, wobei die Logik ferner konfiguriert ist zum: Empfangen einer Angabe des ausgewählten Vektorabbildungssystems von der Host-Vorrichtung (105), wobei das ausgewählte Vektorabbildungssystem mindestens zum Teil basierend auf der Angabe ausgewählt wird.
  5. Gerät nach einem der vorausgehenden Ansprüche, wobei die Logik ferner konfiguriert ist zum: Bestimmen einer Menge von Elementen des ersten Vektors, einer Menge von Elementen des zweiten Vektors oder beider, wobei das ausgewählte Vektorabbildungssystem basierend auf der Menge von Elementen des ersten Vektors, der Menge von Elementen des zweiten Vektors oder beidem ausgewählt wird.
  6. Gerät nach einem der vorausgehenden Ansprüche, wobei die Logik ferner konfiguriert ist zum: Bestimmen eines Verhältnisses logischer Operationen und arithmetischer Operationen, die mit dem Satz von Anweisungen assoziiert sind, wobei das ausgewählte Vektorabbildungssystem basierend auf dem Verhältnis logischer Operationen und arithmetischer Operationen ausgewählt wird.
  7. Gerät nach einem der vorausgehenden Ansprüche, wobei das Schreiben ferner die Logik umfasst, die konfiguriert ist zum: Schreiben der Daten, die den ersten Vektor darstellen, in unterschiedliche Sätze von Spalten des Satzes von Ebenen (145; 300; 0-3) als die Daten, die den zweiten Vektor darstellen.
  8. Gerät nach einem der vorausgehenden Ansprüche, wobei das Schreiben ferner die Logik umfasst, die konfiguriert ist zum: Schreiben von Daten, die unterschiedliche Sätze aufeinanderfolgender Bits eines Elements des ersten Vektors darstellen, in unterschiedliche Ebenen (145; 300; 0-3) des Satzes von Ebenen (145; 300; 0-3); und Schreiben von Daten, die unterschiedliche Mengen aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in die unterschiedlichen Ebenen (145; 300; 0-3) des Satzes von Ebenen (145; 300; 0-3).
  9. Gerät nach einem der vorausgehenden Ansprüche, wobei sich der Satz von Ebenen (145; 300; 0-3) in einer Kachel (140; 400; 500; A, B, C) der Vielzahl von Kacheln (140; 400; 500; A, B, C) befindet, und wobei das Schreiben ferner die Logik umfasst, die konfiguriert ist zum: Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des ersten Vektors darstellen, und von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen in eine erste Ebene (145) des Satzes von Ebenen (145; 300; 0-3) in der Kachel (140; 400; 500; A, B, C); und Schreiben von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des ersten Vektors darstellen, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des zweiten Vektors darstellen, in eine zweite Ebene des Satzes von Ebenen (145; 300; 0-3) in der Kachel (140; 400; 500; A, B, C).
  10. Gerät nach einem der vorausgehenden Ansprüche, wobei das Schreiben ferner die Logik umfasst, die konfiguriert ist zum: Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des ersten Vektors darstellen, und von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in eine erste Ebene (145) des Satzes von Ebenen (145; 300; 0-3) in einer ersten Kachel (140; 400; 500; A, B, C); und Schreiben von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des ersten Vektors darstellen, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des zweiten Vektors darstellen, in eine zweite Ebene des Satzes von Ebenen (145; 300; 0-3) in einer zweiten Kachel (140; 400; 500; A, B, C).
  11. Gerät nach einem der vorausgehenden Ansprüche, wobei die Logik ferner konfiguriert ist zum: Abrufen, mindestens zum Teil basierend auf dem Satz von Anweisungen, des ersten Vektors und des zweiten Vektors aus einem Speicher, der mit der Logik gekoppelt ist.
  12. Gerät, umfassend: einen Speicher-Die (135), der eine Vielzahl von Kacheln (140; 400; 500; A, B, C) umfasst, die jeweils eine Vielzahl von Ebenen (145; 300; 0-3) umfassen, wobei jede Ebene (145; 300; 0-3) ein jeweiliges Array inhaltsadressierbarer Speicherzellen umfasst; und Logik, die mit dem Speicher-Die (135) gekoppelt und konfiguriert zum: Empfangen von einer Host-Vorrichtung (105) von Signalisierung, die einen Satz von Anweisungen angibt, die einen Vektor als einen Operanden für eine Rechenoperation angeben, wobei der Vektor eine Vielzahl von Elementen umfasst, die jedes eine jeweilige Bitlänge aufweisen; Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits der Vielzahl von Elementen darstellen, in eine erste Ebene (145) einer Kachel (140; 400; 500; A, B, C), und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des mindestens einen Elements darstellen, in eine zweite Ebene der Kachel (140; 400; 500; A, B, C); und Ausführen, unter Verwendung von Assoziativverarbeitung, der Rechenoperation mindestens zum Teil basierend auf Schreiben der Daten, die den ersten Satz aufeinanderfolgender Bits darstellen, in die erste Ebene (145), und mindestens zum Teil basierend auf Schreiben der Daten, die den zweiten Satz aufeinanderfolgender Bits darstellen, in die zweite Ebene.
  13. Gerät nach Anspruch 12, wobei der Satz von Anweisungen einen zweiten Vektor als einen zweiten Operanden für die Rechenoperation angibt, und wobei die Logik ferner konfiguriert ist zum: Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in die erste Ebene (145) der Kachel (140; 400; 500; A, B, C), und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des zweiten Vektors darstellen, in eine zweite Ebene der Kachel (140; 400; 500; A, B, C).
  14. Gerät nach Anspruch 12 oder 13, wobei die Logik ferner konfiguriert ist zum: Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines zweiten Elements des Vektors darstellen, in die erste Ebene (145) der Kachel (140; 400; 500; A, B, C), und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des zweiten Elements des Vektors darstellen, in die zweite Ebene der Kachel (140; 400; 500; A, B, C).
  15. Gerät nach einem der Ansprüche 12 bis 14, wobei das Schreiben die Logik umfasst, die ferner konfiguriert ist zum: Schreiben der Daten, die den ersten Satz aufeinanderfolgender Bits darstellen, in einen Subsatz von Spalten der ersten Ebene (145), und der Daten, die den zweiten Satz aufeinanderfolgender Bits darstellen, in einen Subsatz von Spalten der zweiten Ebene.
  16. Gerät nach einem der Ansprüche 12 bis 15, wobei das Schreiben gemäß einem Vektorabbildungssystem erfolgt, und wobei die Logik ferner konfiguriert ist zum: Auswählen des Vektorabbildungssystems mindestens zum Teil basierend darauf, dass eine Menge der Vielzahl von Elementen des Vektors größer ist als eine Menge von Reihen pro Ebene der Vielzahl von Ebenen (145; 300; 0-3).
  17. Gerät nach einem der Ansprüche 12 bis 16, wobei das Schreiben gemäß einem Vektorabbildungssystem erfolgt, und wobei die Logik ferner konfiguriert ist zum: Auswählen des Vektorabbildungssystems mindestens zum Teil basierend auf dem Satz von Anweisungen, der mit einem Verhältnis arithmetischer Operationen und logischer Operationen assoziiert ist, das größer ist als ein Schwellenverhältnis.
  18. Gerät nach einem der Ansprüche 12 bis 17, wobei das Ausführen die Logik umfasst, die ferner konfiguriert ist zum: Vergleichen von Daten, die Bits des Vektors und Bits eines zweiten Vektors darstellen, mit Bits von Speicherzellen, die eine Wahrheitstabelle speichern, die Ergebnisse der Rechenoperation für verschiedene Kombinationen von Logikwerten angibt; und Schreiben von Daten, die einen dritten Vektor darstellen, der ein Ergebnis der Rechenoperation ist, in den Satz von Ebenen (145; 300; 0-3), mindestens zum Teil basierend auf dem Vergleich.
  19. Gerät, umfassend: einen Speicher-Die (135), der eine Vielzahl von Kacheln (140; 400; 500; A, B, C) umfasst, die jeweils eine Vielzahl von Ebenen (145; 300; 0-3) umfassen, wobei jede Ebene (145; 300; 0-3) ein jeweiliges Array inhaltsadressierbarer Speicherzellen umfasst; und Logik, die mit dem Speicher-Die (135) gekoppelt und konfiguriert zum: Empfangen von einer Host-Vorrichtung (105) von Signalisierung, die einen Satz von Anweisungen angibt, die einen Vektor als einen Operanden für eine Rechenoperation angeben, wobei der Vektor eine Vielzahl von Elementen umfasst, die jedes eine jeweilige Bitlänge aufweisen; Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits mindestens eines Elements der Vielzahl von Elementen darstellen, in eine erste Ebene (145) einer ersten Kachel (140; 400; 500; A, B, C), und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des mindestens einen Elements darstellen, in eine zweite Ebene einer zweiten Kachel (140; 400; 500; A, B, C); und Ausführen, unter Verwendung von Assoziativverarbeitung, der Rechenoperation mindestens zum Teil basierend auf Schreiben der Daten, die den ersten Satz aufeinanderfolgender Bits darstellen, in die erste Ebene (145), und mindestens zum Teil basierend auf Schreiben der Daten, die den zweiten Satz aufeinanderfolgender Bits darstellen, in die zweite Ebene.
  20. Gerät nach Anspruch 19, wobei der Satz von Anweisungen einen zweiten Vektor als einen zweiten Operanden für die Rechenoperation angibt, und wobei die Logik ferner konfiguriert ist zum: Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in die erste Ebene (145) der ersten Kachel (140; 400; 500; A, B, C), und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des zweiten Vektors darstellen, in eine zweite Ebene der zweiten Kachel (140; 400; 500; A, B, C).
  21. Gerät nach Anspruch 19 oder 20, wobei die Logik ferner konfiguriert ist zum: Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines zweiten Elements des Vektors darstellen, in die erste Ebene (145) der ersten Kachel (140; 400; 500; A, B, C), und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des zweiten Elements des Vektors darstellen, in die zweite Ebene der zweiten Kachel (140; 400; 500; A, B, C).
  22. Gerät nach einem der Ansprüche 19 bis 21, wobei das Schreiben die Logik umfasst, die ferner konfiguriert ist zum: Schreiben der Daten, die den ersten Satz aufeinanderfolgender Bits darstellen, in einen Subsatz von Spalten der ersten Ebene (145), und der Daten, die den zweiten Satz aufeinanderfolgender Bits darstellen, in einen Subsatz von Spalten der zweiten Ebene.
  23. Gerät nach einem der Ansprüche 19 bis 22, wobei das Schreiben gemäß einem Vektorabbildungssystem erfolgt, und wobei die Logik ferner konfiguriert ist zum: Auswählen des Vektorabbildungssystems mindestens zum Teil basierend darauf, dass eine Menge der Vielzahl von Elementen des Vektors größer ist als eine Menge von Reihen pro Ebene der Vielzahl von Ebenen (145; 300; 0-3).
  24. Gerät nach einem der Ansprüche 19 bis 23, wobei das Schreiben gemäß einem Vektorabbildungssystem erfolgt, und wobei die Logik ferner konfiguriert ist zum: Auswählen des Vektorabbildungssystems mindestens zum Teil basierend auf dem Satz von Anweisungen, der mit einem Verhältnis arithmetischer Operationen und logischer Operationen assoziiert ist, das größer ist als ein Schwellenverhältnis.
  25. Gerät nach einem der Ansprüche 19 bis 24, wobei das Ausführen die Logik umfasst, die ferner konfiguriert ist zum: Vergleichen von Daten, die Bits des Vektors und Bits eines zweiten Vektors darstellen, mit Bits von Speicherzellen, die eine Wahrheitstabelle speichern, die Ergebnisse der Rechenoperation für verschiedene Kombinationen von Logikwerten angibt; und Schreiben von Daten, die einen dritten Vektor darstellen, der ein Ergebnis der Rechenoperation ist, in den Satz von Ebenen (145; 300; 0-3), mindestens zum Teil basierend auf dem Vergleich.
  26. Gerät, umfassend: eine Host-Vorrichtung (105), die dazu konfiguriert ist, Signalisierung zu übertragen, die einen Satz von Anweisungen angibt, die einen Vektor als einen Operanden für eine Rechenoperation angeben, wobei der Vektor eine Vielzahl von Elementen, die jedes eine jeweilige Bitlänge aufweisen, umfasst; eine Vorrichtung, die mit der Host-Vorrichtung (105) gekoppelt und dazu konfiguriert ist, Assoziativverarbeitung auszuführen, wobei die Vorrichtung eine Vielzahl von Kacheln (140; 400; 500; A, B, C) umfasst, die jeweils eine Vielzahl von Ebenen (145; 300; 0-3) umfassen, wobei jede Ebene (145; 300; 0-3) ein jeweiliges Array inhaltsadressierbarer Speicherzellen umfasst; und Logik, die mit der Vorrichtung gekoppelt und konfiguriert ist zum: Empfangen der Signalisierung, die den Satz von Anweisungen von der Host-Vorrichtung (105) angibt; Auswählen aus einem ersten Vektorabbildungssystem und einem zweiten Vektorabbildungssystem zum Schreiben von Vektoren zu Ebenen (145; 300; 0-3) der Vorrichtung; Schreiben, mindestens zum Teil basierend auf dem ausgewählten Vektorabbildungssystem von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des Vektors darstellen, in eine erste Ebene (145), und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements darstellen, in eine zweite Ebene; und Ausführen, mindestens zum Teil basierend auf Schreiben der Daten, die den ersten und den zweiten Satz aufeinanderfolgender Bits darstellen, der Rechenoperation unter Verwendung von Assoziativverarbeitung.
  27. Gerät nach Anspruch 26, wobei die Logik ferner konfiguriert ist zum: Bestimmen eines Verhältnisses arithmetischer Operationen und logischer Operationen, die mit dem Satz von Anweisungen assoziiert sind, einer Länge des Vektors, mindestens zum Teil basierend auf der Vielzahl von Elementen oder auf beiden, wobei das ausgewählte Vektorabbildungssystem mindestens zum Teil basierend auf dem Verhältnis, der Länge des Vektors oder auf beiden ausgewählt wird.
  28. Gerät nach Anspruch 26 oder 27, wobei der Satz von Anweisungen einen zweiten Vektor als einen Operanden für die Rechenoperation angibt, und wobei die Logik ferner konfiguriert ist zum: Schreiben, mindestens zum Teil basierend auf dem ausgewählten Vektorabbildungssystem, von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des Vektors darstellen, in eine erste Ebene (145), und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements darstellen, in eine zweite Ebene.
  29. Gerät nach einem der Ansprüche 26 bis 28, wobei die Logik ferner konfiguriert ist zum: Schreiben, mindestens zum Teil basierend auf dem ausgewählten Vektorabbildungssystem, von Daten, die einen ersten Satz aufeinanderfolgender Bits eines zweiten Elements des Vektors darstellen, in die erste Ebene (145), und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des zweiten Elements darstellen, in die zweite Ebene.
  30. Verfahren (600, 800, 1200), umfassend: Empfangen (605, 805, 1205) an einem Gerät von Signalisierung, die einen Satz von Anweisungen angibt, die einen ersten Vektor und einen zweiten Vektor als Operanden für eine Rechenoperation angeben; Auswählen (620, 810, 1210) eines Vektorabbildungssystems aus einem Satz von Vektorabbildungssystemen zum Ausführen der Rechenoperation unter Verwendung von Assoziativverarbeitung; und Schreiben (625, 815, 1215) von Daten, die den ersten Vektor darstellen, und von Daten, die den zweiten Vektor darstellen, in einen Satz von Ebenen (145; 300; 0-3), die jeweils ein Array inhaltsadressierbarer Speicherzellen umfassen, mindestens zum Teil basierend auf dem ausgewählten Vektorabbildungssystem.
  31. Verfahren (600, 800, 1200) nach Anspruch 30, ferner umfassend: Empfangen einer Angabe des ausgewählten Vektorabbildungssystems von einer Host-Vorrichtung (105), wobei das ausgewählte Vektorabbildungssystem mindestens zum Teil basierend auf der Angabe ausgewählt wird.
  32. Verfahren (600, 800, 1200) nach Anspruch 30 oder 31, ferner umfassend: Bestimmen (615) einer Menge von Elementen in dem ersten Vektor, einer Menge von Elementen in dem zweiten Vektor oder in beiden, wobei das ausgewählte Vektorabbildungssystem basierend auf der Menge von Elementen in dem ersten Vektor, der Menge von Elementen in dem zweiten Vektor oder in beiden ausgewählt wird.
  33. Verfahren (600, 800, 1200) nach einem der Ansprüche 30 bis 32, ferner umfassend: Bestimmen (615) eines Verhältnisses logischer Operationen und arithmetischer Operationen, die mit dem Satz von Anordnungen assoziiert sind, wobei das ausgewählte Vektorabbildungssystem basierend auf dem Verhältnis logischer Operationen und arithmetischer Operationen ausgewählt wird.
  34. Verfahren (600, 800, 1200) nach einem der Ansprüche 30 bis 33, wobei sich der Satz von Ebenen (145; 300; 0-3) in einer Kachel (140; 400; 500; A, B, C) befindet, wobei das Verfahren ferner Folgendes umfasst: Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des ersten Vektors darstellen, und von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen in eine erste Ebene (145) des Satzes von Ebenen (145; 300; 0-3) in der Kachel (140; 400; 500; A, B, C); und Schreiben von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des ersten Vektors darstellen, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des zweiten Vektors darstellen, in eine zweite Ebene des Satzes von Ebenen (145; 300; 0-3) in der Kachel (140; 400; 500; A, B, C).
  35. Verfahren (600, 800, 1200) nach einem der Ansprüche 30 bis 34, wobei das Verfahren ferner Folgendes umfasst: Schreiben von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des ersten Vektors darstellen, und von Daten, die einen ersten Satz aufeinanderfolgender Bits eines Elements des zweiten Vektors darstellen, in eine erste Ebene (145) des Satzes von Ebenen (145; 300; 0-3) in einer ersten Kachel (140; 400; 500; A, B, C; und Schreiben von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des ersten Vektors darstellen, und von Daten, die einen zweiten Satz aufeinanderfolgender Bits des Elements des zweiten Vektors darstellen, in eine zweite Ebene des Satzes von Ebenen (145; 300; 0-3) in einer zweiten Kachel (140; 400; 500; A, B, C).
DE102022121773.6A 2021-08-31 2022-08-29 In-memory-assoziativverarbeitungssystem Pending DE102022121773A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163239103P 2021-08-31 2021-08-31
US63/239,103 2021-08-31
US17/577,977 US11740899B2 (en) 2021-08-31 2022-01-18 In-memory associative processing system
US17/577,977 2022-01-18

Publications (1)

Publication Number Publication Date
DE102022121773A1 true DE102022121773A1 (de) 2023-03-02

Family

ID=85175202

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022121773.6A Pending DE102022121773A1 (de) 2021-08-31 2022-08-29 In-memory-assoziativverarbeitungssystem

Country Status (3)

Country Link
US (1) US11740899B2 (de)
CN (1) CN115729625A (de)
DE (1) DE102022121773A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11740899B2 (en) * 2021-08-31 2023-08-29 Micron Technology, Inc. In-memory associative processing system
US20230267043A1 (en) * 2022-02-23 2023-08-24 Micron Technology, Inc. Parity-based error management for a processing system

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0405283D0 (en) * 2004-03-09 2004-04-21 Aspex Technology Ltd Multi-port memory for flexible and space efficient corner turning networks in associative processors
US9367562B2 (en) * 2013-12-05 2016-06-14 Google Inc. Distributing data on distributed storage systems
US9557995B2 (en) * 2014-02-07 2017-01-31 Arm Limited Data processing apparatus and method for performing segmented operations
US10996959B2 (en) * 2015-01-08 2021-05-04 Technion Research And Development Foundation Ltd. Hybrid processor
US10162633B2 (en) * 2017-04-24 2018-12-25 Arm Limited Shift instruction
KR20230138519A (ko) * 2021-02-02 2023-10-05 쥐에스아이 테크놀로지 인코포레이티드 병렬 조합 설계를 위한 시스템 및 방법
US20230035474A1 (en) * 2021-07-20 2023-02-02 Gsi Technology Inc. Compiler for a parallel processor
US20230065783A1 (en) * 2021-08-31 2023-03-02 Micron Technology, Inc. In-memory associative processing for vectors
US11740899B2 (en) * 2021-08-31 2023-08-29 Micron Technology, Inc. In-memory associative processing system

Also Published As

Publication number Publication date
US11740899B2 (en) 2023-08-29
CN115729625A (zh) 2023-03-03
US20230069790A1 (en) 2023-03-02

Similar Documents

Publication Publication Date Title
DE102011076895B4 (de) Cachekohärenzprotokoll für persistente Speicher
DE102011076894B9 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE102022121773A1 (de) In-memory-assoziativverarbeitungssystem
DE112011106032B4 (de) Energieeinsparung durch Speicherkanal-Abschaltung
DE102022121767A1 (de) In-memory-assoziativverarbeitung für vektoren
DE102013106154B4 (de) Speichersystem und Ein-Chip-System mit linearer Adress-Remapping-Logik
DE112017001471T5 (de) Mehrebenen-speichermanagement
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE112015003397T5 (de) Vorrichtung, System und Verfahren zur Bestimmung von Vergleichsinformationen basierend auf Speicherdaten
DE102016118210A1 (de) Granulare Dienstqualität für Computer-Ressourcen
DE112011105774B4 (de) Verschiebbarer Speicher, der In-Memory-Datenstrukturen unterstützt
DE102018006015A1 (de) Globale und lokale Zeitschrittbestimmungsschemata für neuronale Netzwerke
DE102013016609A1 (de) Vorrichtung und Verfahren für ein Storage Class Memory mit niedrigem Energieverbrauch, niedriger Latenz und hoher Kapazität
DE112018005177T5 (de) Matrix-recheneinheit
DE102017120787A1 (de) Verfahren und Vorrichtung zum Entladen von Datenverarbeitung in Hybrid-Speichervorrichtungen
DE102020106356A1 (de) Speichervorrichtung für eine Verarbeitungsoperation, dieselbe umfassendes Datenverarbeitungssystem und Verfahren zum Betreiben der Speichervorrichtung
DE102018123669A1 (de) Host-Computer-Anordnung, Remote-Server-Anordnung, Speicherungssystem und Verfahren davon
DE102011075023A1 (de) Indexierter Registerzugriff für einen Speicherbaustein
DE102019103114A1 (de) Speichersteuereinrichtung und Anwendungsprozessor für eine gesteuerte Auslastung und Leistung einer Eingabe/Ausgabe-Vorrichtung und Verfahren zur Betätigung der Speichersteuereinrichtung
DE102018130165A1 (de) Virtuelle übertragung von daten zwischen memory- und storage-domäne
DE112017001118T5 (de) Verfahren und Vorrichtung zum Bereitstellen eines zusammenhängend adressierbaren Speicherbereichs durch Neuabbildung eines Adressraums
DE102020133266A1 (de) Technologien zur Verfeinerung von stochastischen Ähnlichkeitssuchekandidaten
DE112018000842T5 (de) Mehrkern-on-die-speichermikrocontroller
DE102022105725A1 (de) Verfahren und einrichtungen zur durchführung von gewichtungs- und aktivierungskomprimierung und -dekomprimierung
DE102020133878A1 (de) Technologien für spaltenbasierte datenlayouts für geclusterte datensysteme

Legal Events

Date Code Title Description
R012 Request for examination validly filed