DE102022116882A1 - Computer-implemented method for parallelizing data access and circuit for parallelized data access - Google Patents

Computer-implemented method for parallelizing data access and circuit for parallelized data access Download PDF

Info

Publication number
DE102022116882A1
DE102022116882A1 DE102022116882.4A DE102022116882A DE102022116882A1 DE 102022116882 A1 DE102022116882 A1 DE 102022116882A1 DE 102022116882 A DE102022116882 A DE 102022116882A DE 102022116882 A1 DE102022116882 A1 DE 102022116882A1
Authority
DE
Germany
Prior art keywords
data
processing
unit
reference data
subunits
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
DE102022116882.4A
Other languages
German (de)
Inventor
Enno Wein
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.)
PROXIMUSDA GmbH
Original Assignee
PROXIMUSDA GmbH
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 PROXIMUSDA GmbH filed Critical PROXIMUSDA GmbH
Priority to DE102022116882.4A priority Critical patent/DE102022116882A1/en
Publication of DE102022116882A1 publication Critical patent/DE102022116882A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/1776Structural details of configuration resources for memories

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Die Erfindung betrifft ein Computer-implementiertes Verfahren zum Parallelisieren eines Datenzugriffs unter Verwendung einer Schaltung, insbesondere einer anwenderprogrammierbaren integrierten Schaltung, die ein Netzwerk mit einer Mehrzahl von selektiv untereinander verbindbaren Verbindungseinheiten, Speichereinheiten und Verarbeitungseinheiten aufweist. Das Verfahren umfasst ein Bereitstellen einer Menge von zu verarbeitenden Verarbeitungsdaten; ein Bereitstellen einer Menge von Referenzdaten, wobei die Referenzdaten Datenschlüssel der Verarbeitungsdaten zu einem abzurufenden Datenwertergebnis, insbesondere als eine Nachschlagtabelle, anzeigen; ein Unterteilen der Referenzdaten in N Untermengen von Referenzdaten, wobei N eine Anzahl von Verarbeitungsuntereinheiten (3) ist, die in der Schaltung enthalten sind, und ein Speichern einer Referenzdatenuntermenge in einem Speicher jeder jeweiligen Verarbeitungsuntereinheit (3); ein Speichern eines Untermengenindex, welcher die Referenzdatenuntermengen den jeweiligen Verarbeitungsuntereinheiten (3) zuordnet, in einer ersten Verarbeitungsobereinheit (1); ein Eingeben der Verarbeitungsdaten in die erste Verarbeitungsobereinheit (1); ein Eingeben von Untermengen der Verarbeitungsdaten als Datenschlüssel über die erste Verarbeitungsobereinheit (1) in die korrespondierenden Verarbeitungsuntereinheiten (3) unter Verwendung des Untermengenindex; ein Ausgeben von Datenwertergebnissen, die gemäß der Referenzdatenuntermenge zu den Datenschlüsseln korrespondieren, als abgerufene Daten mittels der Verarbeitungsuntereinheiten (3) an eine zweite Verarbeitungsobereinheit (5); und ein Ausgeben einer aggregierten Menge von abgerufenen Daten, die eine Aggregation aller Datenwertergebnisse aller Verarbeitungsuntereinheiten (3) umfasst, über die zweite Verarbeitungsobereinheit (5). Die Erfindung betrifft außerdem eine Schaltung, insbesondere ein FPGA.The invention relates to a computer-implemented method for parallelizing data access using a circuit, in particular a user-programmable integrated circuit, which has a network with a plurality of connection units, storage units and processing units that can be selectively connected to one another. The method includes providing a quantity of processing data to be processed; providing a set of reference data, the reference data indicating data keys of the processing data for a data value result to be retrieved, in particular as a lookup table; dividing the reference data into N subsets of reference data, where N is a number of processing subunits (3) included in the circuit, and storing a reference data subset in a memory of each respective processing subunit (3); storing a subset index, which assigns the reference data subsets to the respective processing subunits (3), in a first upper processing unit (1); entering the processing data into the first processing upper unit (1); entering subsets of the processing data as data keys via the first upper processing unit (1) into the corresponding processing subunits (3) using the subset index; outputting data value results corresponding to the data keys according to the reference data subset as retrieved data by means of the processing subunits (3) to a second processing upper unit (5); and outputting an aggregated amount of retrieved data, comprising an aggregation of all data value results of all processing subunits (3), via the second processing upper unit (5). The invention also relates to a circuit, in particular an FPGA.

Description

Die Erfindung betrifft ein Computer-implementiertes Verfahren zum Parallelisieren eines Datenzugriffs. Die Erfindung betrifft auch eine Schaltung für einen parallelisierten Datenzugriff.The invention relates to a computer-implemented method for parallelizing data access. The invention also relates to a circuit for parallelized data access.

Herkömmlicherweise ist Computerverarbeitung durch eine CPU und einen Speicher charakterisiert gewesen, was zu einem Phänomen führt, das als der „von-Neumann-Bottleneck“ bekannt ist. In der letzten Dekade sind mehr CPUs und/oder mehr Kerne zu Computern hinzugefügt worden. Zusätzlich zu mehr Kernen sind mehr Speicherkanäle hinzugefügt worden, obgleich bei einer langsameren Geschwindigkeit (z.B. 128 CPUs mit 16 Speicherkanälen). Weiter macht eine Technologie, die als NUMA (non-uniform memory architecture) bekannt ist, diese Speicherkanäle explizit. Diese Lösungen stellen jedoch einen einzigen logischen Speicher mit einer einzigen globalen Adressenzuordnung bereit.Traditionally, computer processing has been characterized by a CPU and memory, resulting in a phenomenon known as the “von Neumann bottleneck.” Over the last decade, more CPUs and/or more cores have been added to computers. In addition to more cores, more memory channels have been added, albeit at a slower speed (e.g. 128 CPUs with 16 memory channels). Further, a technology known as NUMA (non-uniform memory architecture) makes these memory channels explicit. However, these solutions provide a single logical memory with a single global address mapping.

Somit kommt in einer herkömmlichem Verarbeitung ein Problem auf, dass unabhängig von der Anzahl von CPUs die Verarbeitungsgeschwindigkeit und/oder die Zugriffsgeschwindigkeit stark durch einen Engpass an dem Speicher limitiert wird, da alle CPUs oder Kerne auf diesen einzigen logischen Speicher zugreifen müssen.Thus, in conventional processing, a problem arises that, regardless of the number of CPUs, the processing speed and/or the access speed is severely limited by a memory bottleneck, since all CPUs or cores must access this single logical memory.

Obwohl die Anzahl von (DDR-) Speichern erhöht worden ist, obgleich um einen kleineren Faktor als die Anzahl von CPUs/Cores, ist ihre Organisation noch die eines einzigen logischen Speichers, der allgemein als „Hauptspeicher“ bezeichnet wird. Hochbandbreitenspeicher (HBM) bieten in dieser Hinsicht lediglich mehr Kanäle von DDR.Although the number of (DDR) memories has been increased, albeit by a smaller factor than the number of CPUs/cores, their organization is still that of a single logical memory, commonly referred to as "main memory". High-bandwidth memory (HBM) simply offers more channels than DDR in this regard.

Weiterhin sind herkömmlicherweise FPGAs (field programmable gate arrays) bekannt. Diese weisen tausende von Speichereinheiten auf und stellen deshalb eine enorme Bandbreite zur Verfügung, teilweise zwei oder mehr Größenordnungen höher als HBM.Furthermore, FPGAs (field programmable gate arrays) are conventionally known. These have thousands of storage units and therefore provide an enormous bandwidth, sometimes two or more orders of magnitude higher than HBM.

Dennoch werden FPGAs herkömmlicherweise durch Zuweisen von Platz in einem „Hauptspeicher“, d.h., eine einzige logische Speichereinheit, als Hardware programmiert.However, FPGAs are traditionally programmed as hardware by allocating space in a “main memory,” i.e., a single logical storage unit.

Im Grunde genommen stellt keins der herkömmlichen Verfahren, weder in einer Software-Implementierung auf herkömmlichen Computern noch in einer Hardware-Implementierung in FPGAs, einen wirklichen parallelen Datenzugriff und/oder Verarbeitung zur Verfügung, da diese nur auf einzige logische Speichereinheiten zurückgreifen. Deshalb sind diese herkömmlichen Verfahren in Zugriffs- und Verarbeitungsgeschwindigkeiten durch den von-Neumann-Bottleneck begrenzt.Essentially, none of the traditional methods, either in a software implementation on conventional computers or in a hardware implementation in FPGAs, provide true parallel data access and/or processing, since they only rely on single logical storage units. Therefore, these conventional methods are limited in access and processing speeds by the von Neumann bottleneck.

Es ist eine Aufgabe der vorliegenden Erfindung, parallelisierten, insbesondere massiv parallelisierten („massively parallel“) Datenzugriff und -verarbeitung zur Verfügung zu stellen.It is an object of the present invention to provide parallelized, in particular massively parallelized, data access and processing.

Die Lösung dieser Aufgabe erfolgt durch die Merkmale der unabhängigen Ansprüche. Die Unteransprüche betreffen vorteilhafte Ausführungsformen der vorliegenden Erfindung.This problem is solved by the features of the independent claims. The subclaims relate to advantageous embodiments of the present invention.

Insbesondere wird die Lösung dieser Aufgabe durch ein computer-implementiertes Verfahren eines Parallelisierens eines Datenzugriffs unter Verwendung einer Schaltung bereitgestellt. Die Schaltung ist insbesondere eine anwenderprogrammierbare integrierte Schaltung, zum Beispiel ein FPGA oder ASIC. Die Schaltung weist ein Netzwerk mit einer Mehrzahl von selektiv untereinander verbindbaren Verbindungseinheiten auf, welche durch den Anwender untereinander verbindbar sind (für den beispielhaften Fall eines FPGAs) oder bei einer Fertigung untereinander verbindbar sind (für den beispielhaften Fall eines ASICs). Die vorliegende Erfindung ist nicht auf anwenderprogrammierbare Schaltungen beschränkt. Zum Beispiel, und wie weiter detailliert nachfolgend beschrieben wird, kann das im Folgenden beschriebene Verfahren auch auf einem herkömmlichen Computer implementiert werden, der eine Mehrzahl von CPUs und/oder GPUs und eine Mehrzahl von Speichereinheiten aufweist.In particular, the solution to this problem is provided by a computer-implemented method of parallelizing data access using a circuit. The circuit is in particular a user-programmable integrated circuit, for example an FPGA or ASIC. The circuit has a network with a plurality of connection units that can be selectively connected to one another, which can be connected to one another by the user (for the exemplary case of an FPGA) or can be connected to one another during production (for the exemplary case of an ASIC). The present invention is not limited to user-programmable circuits. For example, and as will be described in further detail below, the method described below may also be implemented on a conventional computer having a plurality of CPUs and/or GPUs and a plurality of memory units.

Das Verfahren umfasst die nachfolgenden Schritte:

  • Eine Menge von zu verarbeitenden Verarbeitungsdaten wird bereitgestellt. Diese Verarbeitungsdaten sind durch die Schaltung zu verarbeiten.
  • Eine Menge von Referenzdaten wird bereitgestellt. Dabei indizieren die Referenzdaten (d.h., stellen einen Index bereit von/für) Datenschlüssel der Verarbeitungsdaten zu einem Datenwertergebnis. Vorzugsweise sind die Referenzdaten eine Nachschlagtabelle, herkömmlich als „LUT“ bezeichnet. Die Nachschlagtabelle korreliert vorzugsweise einen Datenschlüssel der Verarbeitungsdaten mit einem Datenwertergebnis.
The procedure includes the following steps:
  • A lot of processing data to be processed is provided. This processing data is to be processed by the circuit.
  • A lot of reference data is provided. The reference data indexes (ie, provides an index of/for) data keys of the processing data to a data value result. Preferably, the reference data is a lookup table, commonly referred to as a “LUT”. The Lookup table preferably correlates a data key of the processing data with a data value result.

Die Referenzdaten (vorzugsweise die Nachschlagtabelle) sind in N Untermengen von Referenzdaten unterteilt. Dabei ist N eine Anzahl von Verarbeitungsuntereinheiten, die in der Schaltung enthalten sind. Weiter ist eine Referenzdatenuntermenge (d.h., eine der N Referenzdatenuntermengen) in einem Speicher jeder jeweiligen Verarbeitungsuntereinheit gespeichert. Diese Unterteilung wird auch als „De-Aggregation“ bezeichnet.The reference data (preferably the lookup table) is divided into N subsets of reference data. Where N is a number of processing subunits included in the circuit. Further, a reference data subset (i.e., one of the N reference data subsets) is stored in a memory of each respective processing subunit. This division is also known as “de-aggregation”.

Ein Untermengenindex wird in einer ersten Verarbeitungsobereinheit gespeichert. In dieser Hinsicht bezieht sich „ober“ auf den Gegenbegriff von „unter“, d.h., eine Untereinheit ist einer Obereinheit untergeordnet und umgekehrt. Der Untermengenindex ordnet die Referenzdatenuntermengen jeweiligen Verarbeitungsuntereinheiten zu. Mit anderen Worten stellt der Untermengenindex eine Adresse bereit, die angibt, bei welcher der N Untereinheiten die jeweilige Referenzdatenuntermenge gespeichert wird.A subset index is stored in a first processing master unit. In this respect, “upper” refers to the opposite of “under”, i.e. a sub-unit is subordinate to a superior unit and vice versa. The subset index assigns the reference data subsets to respective processing subunits. In other words, the subset index provides an address indicating at which of the N subunits the respective subset of reference data is stored.

Die Verarbeitungsdaten werden in die erste Verarbeitungsobereinheit eingegeben.The processing data is input into the first upper processing unit.

Die erste Verarbeitungsobereinheit gibt Untermengen von Verarbeitungsdaten als Datenschlüssel in die korrespondierenden Verarbeitungsuntereinheiten unter Verwendung des Untermengenindex ein. Mit anderen Worten unterteilt die erste Verarbeitungsobereinheit Verarbeitungsdaten (und/oder empfängt einen Strom derselben) in Verarbeitungsdatenuntermengen. Die Verarbeitungsdatenuntermengen korrespondieren zu oder korrelieren mit den Datenschlüsseln. Unter Verwendung des Untermengenindex, um die Adresse (d.h., „welche Untereinheit“) der Verarbeitungsuntereinheit zu finden, welche das korrespondierende Datenwertergebnis aufweist, gibt die erste Verarbeitungsobereinheit die Untermenge in die korrespondierende Verarbeitungsuntereinheit.The first processing master unit inputs subsets of processing data as data keys into the corresponding processing subunits using the subset index. In other words, the first processing master unit divides processing data (and/or receives a stream thereof) into processing data subsets. The processing data subsets correspond to or correlate with the data keys. Using the subset index to find the address (i.e., "which subunit") of the processing subunit that has the corresponding data value result, the first processing subunit inputs the subset into the corresponding processing subunit.

Die Verarbeitungsuntereinheiten geben die Datenwertergebnisse, die zu den Datenschlüsseln korrespondieren, gemäß der Referenzdatenuntermenge aus. Die ausgegebenen Datenwertergebnisse werden als „abgerufene Daten“ bezeichnet, da sie von dem Speicher der Verarbeitungsuntereinheiten abgerufen werden. Die Verarbeitungsuntereinheiten geben die Datenwertergebnisse an eine zweite Verarbeitungsobereinheit aus.The processing subunits output the data value results corresponding to the data keys according to the reference data subset. The output data value results are called “retrieved data” because they are retrieved from the memory of the processing subunits. The processing subunits output the data value results to a second processing subunit.

Die zweite Verarbeitungsobereinheit gibt eine aggregierte Menge von abgerufenen Daten (d.h., Datenwerte) aus. Die aggregierte Menge von abgerufenen Daten umfasst eine Aggregation aller Datenwertergebnisse aller Verarbeitungsuntereinheiten.The second processing unit outputs an aggregated set of retrieved data (i.e., data values). The aggregated set of retrieved data includes an aggregation of all data value results from all processing subunits.

Dadurch stellt die vorliegende Erfindung den technischen Vorteil sowohl eines Parallelisierens der Referenzdaten als auch eines Zugriffs darauf und eines Verarbeitens derselben zur Verfügung. Da die Referenzdaten in N Untermengen unterteilt sind, die mit der Anzahl von Verarbeitungsuntereinheiten korrespondieren, umfasst keine einzelne Speichereinheit die Gesamtheit der Referenzdaten. Somit wird der vorstehend beschriebene „von-Neumann-Bottleneck“ umgangen, und die Verarbeitung der Verarbeitungsdaten und/oder das Abrufen der Referenzdaten werden in hohem Maße parallelisiert.Thereby, the present invention provides the technical advantage of both parallelizing the reference data and accessing and processing it. Since the reference data is divided into N subsets corresponding to the number of processing subunits, no single storage unit includes the entirety of the reference data. Thus, the “von Neumann bottleneck” described above is avoided and the processing of the processing data and/or the retrieval of the reference data are highly parallelized.

Vorzugsweise wird die aggregierte Menge von abgerufenen Daten als eine Menge ausgegeben. Weiter bevorzugt wird die aggregierte Menge von abgerufenen Daten als ein Strom ausgegeben.Preferably, the aggregated set of retrieved data is output as one set. More preferably, the aggregated amount of retrieved data is output as a stream.

Vorzugsweise sind die erste Verarbeitungsobereinheit und/oder die zweite Verarbeitungsobereinheit in der Schaltung, insbesondere in der anwenderprogrammierbaren integrierten Schaltung, enthalten. Andererseits sind die erste Verarbeitungsobereinheit und/oder die zweite Verarbeitungsobereinheit vorzugsweise in getrennten Schaltungen enthalten.Preferably, the first upper processing unit and/or the second upper processing unit are contained in the circuit, in particular in the user-programmable integrated circuit. On the other hand, the first upper processing unit and/or the second upper processing unit are preferably included in separate circuits.

Vorzugsweise ist die erste Verarbeitungsobereinheit mit der zweiten Verarbeitungsobereinheit verbunden. Mit anderen Worten weist die Schaltung vorzugsweise eine Verbindung (vorzugsweise als eine aktivierte Verbindung), insbesondere eine direkte Verbindung, zwischen der ersten Verarbeitungsobereinheit und der zweiten Verarbeitungsobereinheit auf. Vorzugsweise umfasst das Verfahren weiter ein Ausgeben einer Reihenfolge, mit welcher die Untermengen von Verarbeitungsdaten durch die erste Verarbeitungsobereinheit an die korrespondierenden Verarbeitungsuntereinheiten eingegeben wird, von der ersten Verarbeitungsobereinheit an die zweite Verarbeitungsobereinheit. Das Verfahren umfasst weiter vorzugsweise ein Sortieren der Datenwertergebnisse korrespondierend zu der Reihenfolge, die durch die erste Verarbeitungsobereinheit ausgegeben wird, mittels der zweiten Verarbeitungsobereinheit. Mit anderen Worten kommuniziert die erste Verarbeitungsobereinheit die Reihenfolge, in welcher die Verarbeitungsdatenuntermengen (Datenschlüssel) an die Verarbeitungsuntereinheiten ausgegeben worden sind, an die zweite Verarbeitungsobereinheit, und die zweite Verarbeitungsobereinheit sortiert vorzugsweise die empfangenen Datenwertergebnisse in dieser Reihenfolge.Preferably, the first upper processing unit is connected to the second upper processing unit. In other words, the circuit preferably has a connection (preferably as an activated connection), in particular a direct connection, between the first upper processing unit and the second upper processing unit. Preferably, the method further comprises outputting, from the first upper processing unit to the second upper processing unit, an order in which the subsets of processing data are input by the first upper processing unit to the corresponding processing subunits. The method further preferably comprises sorting the data value results corresponding to the order output by the first processing upper unit by means of the second processing upper unit. In other words, the first communicates Processing master unit the order in which the processing data subsets (data keys) have been issued to the processing subunits to the second processing master unit, and the second processing master unit preferably sorts the received data value results in this order.

Vorzugsweise gibt die erste Verarbeitungsobereinheit an die zweite Verarbeitungsobereinheit auch den Index (oder die Adresse) der korrespondierenden Verarbeitungsuntereinheit aus, an welche die jeweilige Verarbeitungsdatenuntermenge (Datenschlüssel) ausgegeben wird. Dadurch weiß die zweite Verarbeitungsobereinheit in einfachen Worten, von welcher Verarbeitungsuntereinheit ein Datenwert zu erwarten ist und in welcher Reihenfolge.Preferably, the first processing unit also outputs to the second processing unit the index (or address) of the corresponding processing subunit to which the respective processing data subset (data key) is output. As a result, the second upper processing unit knows in simple terms which processing subunit is to expect a data value and in what order.

Vorzugsweise weist die Schaltung weiter N erste Verbindungseinheiten auf. Die ersten Verbindungseinheiten verbinden jeweils eine Verarbeitungsuntereinheit mit der ersten Verarbeitungsobereinheit, insbesondere direkt. Die ersten Verbindungseinheiten weisen jeweils eine Speichereinheit auf. Das Verfahren ist weiter gekennzeichnet durch ein Eingeben und Puffern einer Mehrzahl von Untermengen von Verarbeitungsdaten als Datenschlüssel in die Speichereinheit der korrespondierenden ersten Verbindungseinheit mittels der ersten Verarbeitungsobereinheit. Mit anderen Worten werden als ein Beispiel, falls und wenn die erste Verarbeitungsobereinheit mehrere Verarbeitungsdatenuntermengen verarbeitet, welche gemäß dem Untermengenindex an die gleiche Untereinheit auszugeben sind, diese an die Speichereinheit der ersten Verbindungseinheit ausgegeben, die die zwei verbindet, wodurch sie als ein Puffer für die mehreren Verarbeitungsdatenuntermengen agiert. Dies weist den weiteren Vorteil auf, dass eine Parallelisierung weiter gesteigert wird, da es sicherstellen oder fördern wird, dass Verarbeitungsuntereinheiten immer eine Verarbeitungsdatenuntermenge oder einen Datenschlüssel „wartend“ in dem Puffer an ihrem Eingang aufweisen, und somit verarbeiten die Untereinheiten ohne Unterbrechung.The circuit preferably also has N first connection units. The first connection units each connect a processing subunit to the first processing unit, in particular directly. The first connection units each have a storage unit. The method is further characterized by inputting and buffering a plurality of subsets of processing data as data keys into the storage unit of the corresponding first connection unit by means of the first upper processing unit. In other words, as an example, if and when the first processing master unit processes multiple processing data subsets to be output to the same subunit according to the subset index, they are output to the storage unit of the first connecting unit connecting the two, thereby acting as a buffer for the multiple processing data subsets. This has the further advantage of further increasing parallelization as it will ensure or promote that processing subunits always have a processing data subset or data key "waiting" in the buffer at their input, and thus the subunits process without interruption.

Vorzugsweise weisen die ersten Verbindungseinheiten jeweils eine Pufferverarbeitungseinheit auf. Das Verfahren umfasst weiter vorzugsweise ein Eingeben von Verarbeitungsdaten oder Datenschlüsseln von der Speichereinheit der ersten Verbindungseinheit an die jeweilige Verarbeitungsuntereinheit gemäß einem First-In-First-Out- („FIFO“-) Prinzip mittels der Pufferverarbeitungseinheit. Dies weist den Vorteil auf, dass die Pufferspeichereinheit der ersten Verbindungseinheiten mehrere Datenschlüssel aufweisen kann, ohne eine Sortierung, insbesondere eine zeitliche Sortierung, davon zu verlieren.Preferably, the first connection units each have a buffer processing unit. The method further preferably includes inputting processing data or data keys from the storage unit of the first connection unit to the respective processing subunit according to a first-in-first-out (“FIFO”) principle by means of the buffer processing unit. This has the advantage that the buffer storage unit of the first connection units can have several data keys without losing any sorting, in particular a temporal sorting.

In einer vorteilhaften Ausführungsform weist die Schaltung weiter N zweite Verbindungseinheiten auf, die jeweils eine Verarbeitungsuntereinheit mit der zweiten Verarbeitungsobereinheit verbinden. Vorzugsweise weisen die zweiten Verbindungseinheiten jeweils eine Speichereinheit auf. Vorzugsweise umfasst das Verfahren ein Eingeben und Puffern einer Mehrzahl von Datenwertergebnissen in der Speichereinheit der korrespondierenden zweiten Verbindungseinheit, mittels der Verarbeitungsuntereinheit.In an advantageous embodiment, the circuit further has N second connection units, each of which connects a processing subunit to the second processing unit. Preferably, the second connection units each have a storage unit. Preferably, the method includes inputting and buffering a plurality of data value results in the storage unit of the corresponding second connection unit by means of the processing subunit.

Vorzugsweise weisen wie auch bei den ersten Verbindungseinheiten die zweiten Verbindungseinheiten jeweils eine Pufferverarbeitungseinheit auf. Dabei umfasst das Verfahren vorzugsweise ein Eingeben der Datenwertergebnisse von der Speichereinheit der zweiten Verbindungseinheit an die zweite Verarbeitungsobereinheit gemäß einem First-In-First-Out-Prinzip.As with the first connection units, the second connection units preferably each have a buffer processing unit. The method preferably includes inputting the data value results from the storage unit of the second connection unit to the second upper processing unit according to a first-in, first-out principle.

Vorzugsweise umfasst das Verfahren ein Berechnen eines Hash-Werts unter Verwendung einer Hash-Funktion für jede Untermenge von Verarbeitungsdaten, insbesondere mittels der ersten Verarbeitungsobereinheit.Preferably, the method includes calculating a hash value using a hash function for each subset of processing data, in particular by means of the first upper processing unit.

Weiter weisen die Referenzdaten vorzugsweise Hash-Werte als die Datenschlüssel auf. Mit anderen Worten korrelieren die Referenzdaten vorzugsweise, insbesondere über eine LUT, Hash-Werte mit Datenwertergebnissen.Furthermore, the reference data preferably has hash values as the data keys. In other words, the reference data preferably correlates hash values with data value results, in particular via a LUT.

Weiter umfasst der Hash-Wert vorzugsweise den Untermengenindex, welcher die Referenzdatenuntermengen zu den jeweiligen Verarbeitungsuntermengen und dem Datenschlüssel für die Referenzdaten zuordnet.Furthermore, the hash value preferably includes the subset index, which assigns the reference data subsets to the respective processing subsets and the data key for the reference data.

Mit anderen Worten umfasst der Hash-Wert vorzugsweise mehrere Bits an Informationen, wobei ein oder mehrere Bits verwendet werden, um die korrespondierende Untereinheit zu identifizieren.In other words, the hash value preferably comprises multiple bits of information, with one or more bits used to identify the corresponding subunit.

Als eine beispielhafte Darstellung: Die Hash-Funktion transformiert eine Untermenge von Verarbeitungsdaten in einen Hash-Wert. Die Untermenge von Verarbeitungsdaten kann zum Beispiel ein Wort, zum Beispiel „Einstein“, sein. Der Hash-Wert wird mehrere Einträge oder Bits aufweisen, zum Beispiel XXYYYYYY. Die X-e korrespondieren zu Informationen über die korrespondierende Untereinheit, also, wo die korrespondierenden Referenzdaten gefunden werden können, in diesem Beispiel sei angenommen, dass XX = 05. Die Y-s werden einige Informationswerte sein, die weiter den Begriff „Einstein“ identifizieren. In diesem Beispiel umfassen die Referenzdaten, welche den Datenschlüssel YYYYYY korrelieren, eine Definition von „Einstein“, nämlich zum Beispiel „herausragender Physiker“. Die Unterteilung von Referenzdaten kann in diesem Beispiel durch eine alphabetische Unterteilung erreicht werden, also wird eine Untereinheit alle Referenzdaten aufweisen, die zu allen mit „A“ beginnenden Wörtern korrespondieren, und eine weitere Untereinheit wird alle mit „B“ beginnenden Referenzdaten aufweisen, und so weiter. Der Wert XX = 05 kann somit auch als ein Adressieren einer fünften Untereinheit gedacht werden, in welcher alle mit „E“ beginnenden Wörter in den Referenzdaten enthalten sind. Somit konvertiert die erste Obereinheit „Einstein“ nach „05YYYYYY“ und verwendet den Untermengenindex (in diesem Fall eine LUT mit Eintrag „05“ = „fünfte Untereinheit“), um die Untereinheit, die die Referenzdaten für „Einstein“ aufweist, zu finden und an diese auszugeben. Dieser Datenschlüssel „05YYYYYY“ wird dann in die Untereinheit eingegeben und die Untereinheit beginnt, nach den Referenzdaten zu suchen, die zu „05YYYYYY“ korrelieren, d.h., sie sucht nach einem Eintrag für „Einstein“. Sobald er gefunden ist, wird sie „herausragender Physiker“ ausgeben.As an example: The hash function transforms a subset of processing data into a hash value. The subset of processing data can, for example, be a word, for example Example: “Einstein”. The hash value will have multiple entries or bits, for example XXYYYYYY. The In this example, the reference data correlating the data key YYYYYY includes a definition of “Einstein”, namely, for example, “eminent physicist”. The division of reference data can be achieved in this example by an alphabetical division, so one subunit will have all the reference data corresponding to all words starting with "A", and another subunit will have all the reference data starting with "B", and so on further. The value XX = 05 can therefore also be thought of as addressing a fifth subunit in which all words beginning with “E” are contained in the reference data. Thus, the first superunit converts "Einstein" to "05YYYYYY" and uses the subset index (in this case a LUT with entry "05" = "fifth subunit") to find the subunit that has the reference data for "Einstein" and to issue to them. This data key "05YYYYYY" is then entered into the sub-unit and the sub-unit begins to search for the reference data that correlates to "05YYYYYY", that is, it searches for an entry for "Einstein". Once he is found, she will say “outstanding physicist”.

Dieses Beispiel demonstriert weiter die massive Parallelisierung, die durch die vorliegende Erfindung erzielt wird, da keine einzelne Verarbeitungseinheit die Gesamtheit der Referenzdaten, in diesem Beispiel ein Wörterbuch oder Thesaurus (oder ein Geschichtsbuch, Wikipedia, usw.) durchsuchen oder abrufen muss. Stattdessen werden Untermengen von Referenzdaten (zum Beispiel alle mit „E“ beginnenden Wörter) in dem Speicher verschiedener Untereinheiten gespeichert, und somit muss jede Untereinheit nur in ihrer jeweiligen Untermenge suchen. Weiterhin können die Untereinheiten parallel suchen, da auf keinen einzelnen Speicher zugegriffen werden muss (jede Untereinheit greift auf ihren eigenen Speicher zu). Die Hash-Funktion stellt eine gleichmäßigere Verteilung von Referenzdatenuntermengen bereit, was in dem beispielhaften Fall des Wörterbuchs bedeutet, dass nicht strikt an einer alphabetischen Reihenfolge festgehalten werden muss.This example further demonstrates the massive parallelization achieved by the present invention, since no single processing unit needs to search or retrieve the entirety of reference data, in this example a dictionary or thesaurus (or a history book, Wikipedia, etc.). Instead, subsets of reference data (e.g., all words beginning with "E") are stored in the memory of different subunits, and thus each subunit only needs to search within its respective subset. Furthermore, the subunits can search in parallel since no individual memory needs to be accessed (each subunit accesses its own memory). The hash function provides a more even distribution of subsets of reference data, which in the exemplary case of the dictionary means that there is no need to strictly adhere to an alphabetical order.

Weiter sind die Referenzdaten vorzugsweise nur in den Verarbeitungsuntereinheiten gespeichert. Vorzugsweise werden keine Referenzdaten in den Obereinheiten gespeichert. Vorzugsweise speichert die erste Obereinheit nur den Untermengenindex.Furthermore, the reference data is preferably only stored in the processing subunits. Preferably no reference data is stored in the main units. Preferably, the first superunit only stores the subset index.

Dies erhöht eine Parallelisierung weiter, da die Größe der Referenzdaten, welche pro Suche oder Anfrage abgerufen werden (Eingabe eines Datenschlüssels) nur von der Größe 1/N multipliziert mit der Gesamtgröße der Referenzdaten ist, wenn eine gleichmäßige Unterteilung und Verteilung unter den Untereinheiten als eine beispielhafte Ausführungsform angenommen wird. Somit ist insbesondere in dem Fall von Größenordnungen von mehreren hundert bis tausend von Verarbeitungsuntereinheiten und ihren jeweiligen Speichereinheiten die relative Größe von abgerufenen Referenzdaten klein. In diesem beispielhaften Fall, dass jede Untereinheit eine binäre Suche ausführt, im Gegensatz dazu, dass eine Verarbeitungseinheit eine binäre Suche auf die Gesamtheit von Referenzdaten (in einem einzigen logischen Speicher) ausführt, erreicht dieses massive Verarbeitungsgeschwindigkeitszunahmen.This further increases parallelization since the size of the reference data retrieved per search or query (entering a data key) is only of size 1/N multiplied by the total size of the reference data when a uniform division and distribution among the subunits as one exemplary embodiment is adopted. Thus, particularly in the case of orders of several hundred to thousands of processing subunits and their respective storage units, the relative size of reference data retrieved is small. In this exemplary case of each subunit performing a binary search, as opposed to a processing unit performing a binary search on the entirety of reference data (in a single logical memory), this achieves massive processing speed increases.

Inline-Initialisierung:Inline initialization:

Die vorliegende Erfindung betrifft auch ein Computer-implementiertes Verfahren einer Inline-Initialisierung der Schaltung. Dieses Verfahren umfasst die nachfolgenden Schritte:

  • Eine Menge von Referenzdaten wird bereitgestellt. Darin indizieren die Referenzdaten (d.h., stellen einen Index bereit von/für) Datenschlüssel von zu verarbeitenden Verarbeitungsdaten zu einem Datenwertergebnis. Vorzugsweise sind die Referenzdaten eine Nachschlagtabelle, allgemein als „LUT“ bezeichnet. Die Nachschlagtabelle korreliert vorzugsweise einen Datenschlüssel der Verarbeitungsdaten mit einem Datenwertergebnis.
The present invention also relates to a computer-implemented method of inline initialization of the circuit. This procedure includes the following steps:
  • A lot of reference data is provided. Therein, the reference data indexes (ie, provides an index of/for) data keys of processing data to be processed to a data value result. Preferably, the reference data is a lookup table, commonly referred to as a “LUT”. The lookup table preferably correlates a data key of the processing data with a data value result.

Die Referenzdaten (vorzugsweise die Nachschlagtabelle) sind in N Untermengen von Referenzdaten unterteilt. Dabei ist N eine Anzahl von Verarbeitungsuntereinheiten, die in der Schaltung enthalten sind. Weiter wird eine Referenzdatenuntermenge (d.h., eine der N Referenzdatenuntermengen) in einem Speicher einer jeweiligen Verarbeitungsuntereinheit gespeichert.The reference data (preferably the lookup table) is divided into N subsets of reference data. Where N is a number of processing subunits included in the circuit. Further, a reference data subset (i.e., one of the N reference data subsets) is stored in a memory of a respective processing subunit.

Ein Untermengenindex wird in einer ersten Verarbeitungsobereinheit gespeichert. In dieser Hinsicht bezieht sich „ober“ auf das Gegenwort zu „unter“, d.h., eine Untereinheit ist einer Obereinheit untergeordnet und umgekehrt. Der Untermengenindex ordnet die Referenzdatenuntermengen den jeweiligen Verarbeitungsuntereinheiten zu. Mit anderen Worten stellt der Untermengenindex eine Adresse bereit, die angibt, an welcher der N Untereinheiten die jeweilige Referenzdatenuntermenge gespeichert ist.A subset index is stored in a first processing master unit. In this respect, "upper" refers to the antonym of "under", that is, a sub-unit is subordinate to a superior unit and vice versa. The subset index assigns the reference data subsets to the respective processing subunits. In other words, the subset index provides an address indicating at which of the N subunits the respective subset of reference data is stored.

Dadurch wird die Schaltung inline initialisiert. Mit anderen Worten ist für die Initialisierung dieser Schaltung keine zusätzliche Schaltung notwendig. In einer herkömmlichen nicht-Inline-Initialisierung müssten viele Komponenten des FPGAs nur zum Zweck der Initialisierung aktiviert und somit „verwendet“ werden. Die vorliegende Erfindung umgeht dieses Problem, dadurch dass die Initialisierung unter Verwendung der gleichen Komponenten (aktivierte Komponenten des FPGAs) für die Initialisierung wie für die eigentliche Datenverarbeitung/Datenzugriff ausgeführt wird.This initializes the circuit inline. In other words, no additional circuit is necessary to initialize this circuit. In a traditional non-inline initialization, many components of the FPGA would have to be activated and thus “used” only for the purpose of initialization. The present invention circumvents this problem by performing the initialization using the same components (enabled components of the FPGA) for the initialization as for the actual data processing/access.

Vorzugsweise geben bei dem Initialisierungsverfahren die Verarbeitungsuntereinheiten keine Datenwertergebnisse aus. Vorzugsweise geben die Verarbeitungsuntereinheiten ein Signal aus, das eine erfolgreiche Initialisierung anzeigt.Preferably, in the initialization process, the processing subunits do not output any data value results. Preferably, the processing subunits output a signal indicating successful initialization.

Nach der Initialisierung kann das vorstehend beschriebene Verfahren zum Parallelisieren eines Datenzugriffs ausgeführt werden, insbesondere über eine Eingabe von zu verarbeitenden Verarbeitungsdaten in die initialisierte Schaltung.After initialization, the method described above for parallelizing data access can be carried out, in particular by inputting processing data to be processed into the initialized circuit.

Die vorstehenden Verfahren und ihre Ausführungsformen werden am meisten bevorzugt in einem FPGA implementiert. Dadurch erzielt die vorliegende Erfindung eine stark parallelisierte Verarbeitung in einem FPGA.The above methods and their embodiments are most preferably implemented in an FPGA. Thereby, the present invention achieves highly parallelized processing in an FPGA.

Die vorliegende Erfindung betrifft weiter eine Schaltung für einen parallelisierten Datenzugriff. Die Schaltung ist vorzugsweise eine anwenderprogrammierbare integrierte Schaltung, insbesondere ein FPGA. Die Schaltung weist auf: eine erste Verarbeitungsobereinheit, die eingerichtet ist, eine Menge von zu verarbeitenden Verarbeitungsdaten zu empfangen; eine Mehrzahl von Verarbeitungsuntereinheiten, die eingerichtet sind, Untermengen von abzurufenden Referenzdaten zu speichern und abzurufen, wobei die Referenzdaten Datenschlüssel der Verarbeitungsdaten zu einem Datenwertergebnis indizieren, insbesondere als eine Nachschlagtabelle, wobei jede Verarbeitungsuntereinheit eingerichtet ist, eine Referenzdatenuntermenge zu speichern und abzurufen; und eine zweite Verarbeitungsobereinheit, die eingerichtet ist, Datenwertergebnisse, die zu den Datenschlüsseln korrespondieren, gemäß der Referenzdatenuntermenge als abgerufene Daten von den Verarbeitungsuntereinheiten zu empfangen, und eingerichtet ist, die Datenwertergebnisse zu aggregieren und die aggregierte Menge von abgerufenen Daten auszugeben. Dabei ist die erste Verarbeitungsobereinheit eingerichtet, die Menge von Verarbeitungsdaten insbesondere über eine Hash-Funktion zu verarbeiten, und ist eingerichtet, einen Untermengenindex zu verwenden, welcher die Referenzdatenuntermengen zu den jeweiligen Verarbeitungsuntereinheiten zuordnet, um die korrespondierenden Untermengen von Verarbeitungsdaten an die korrespondierenden Verarbeitungsuntereinheit einzugeben.The present invention further relates to a circuit for parallelized data access. The circuit is preferably a user-programmable integrated circuit, in particular an FPGA. The circuit has: a first upper processing unit configured to receive a quantity of processing data to be processed; a plurality of processing subunits configured to store and retrieve subsets of reference data to be retrieved, the reference data indexing data keys of the processing data to a data value result, in particular as a lookup table, each processing subunit configured to store and retrieve a reference data subset; and a second processing master unit configured to receive data value results corresponding to the data keys according to the reference data subset as retrieved data from the processing subunits, and configured to aggregate the data value results and output the aggregated set of retrieved data. The first upper processing unit is set up to process the amount of processing data, in particular via a hash function, and is set up to use a subset index, which assigns the reference data subsets to the respective processing subunits, in order to input the corresponding subsets of processing data to the corresponding processing subunit.

Vorzugsweise ist die vorstehend genannte Schaltung eingerichtet, das vorstehend beschriebene Computer-implementierte Verfahren zum Parallelisieren eines Datenzugriffs auszuführen.Preferably, the above-mentioned circuit is set up to carry out the above-described computer-implemented method for parallelizing data access.

Vorzugsweise werden das vorstehend beschriebene Computer-implementierte Verfahren zum Parallelisieren eines Datenzugriffs unter Verwendung einer Schaltung und das vorstehend beschriebene Computer-implementierte Verfahren eines Initialisierens und ihre Ausführungsformen durch eine Hardware-Implementierung, zum Beispiel durch eine Hardware-Beschreibungssprache (HDL) erreicht. Mit anderen Worten werden die vorstehend beschriebenen Verfahren vorzugsweise nicht nur als Software auf einem herkömmlichen Computer ausgeführt, sondern korrespondieren zu einer Hardware-Implementierung. Deshalb charakterisieren die vorstehenden funktionalen Beschreibungen, insbesondere die Verfahrensschritte, vorzugsweise die Schaltung auf einer Hardware-Ebene und umgekehrt.Preferably, the above-described computer-implemented method of parallelizing data access using a circuit and the above-described computer-implemented method of initialization and their embodiments are achieved through a hardware implementation, for example through a hardware description language (HDL). In other words, the methods described above are preferably not only carried out as software on a conventional computer, but correspond to a hardware implementation. Therefore, the above functional descriptions, in particular the method steps, preferably characterize the circuit on a hardware level and vice versa.

Vorzugsweise werden die vorstehenden funktionalen Beschreibungen, zum Beispiel der „Verarbeitungsobereinheiten“, „Untereinheiten“ und „Verbindungseinheiten“ als logische Blöcke, insbesondere einer FPGA-Architektur, verstanden. Zum Beispiel ist die erste Verarbeitungsobereinheit vorzugsweise ein De-Multiplexer und die zweite Verarbeitungsobereinheit ist vorzugsweise ein Multiplexer.The above functional descriptions, for example of the “processing upper units”, “subunits” and “connection units” are preferably understood as logical blocks, in particular of an FPGA architecture. For example, the first processing head unit is preferably a de-multiplexer and the second processing head unit is preferably a multiplexer.

Vorzugsweise sind die vorstehend beschriebenen Speichereinheiten keine gemeinsam genutzten Speicher, insbesondere keine verteilten gemeinsam genutzten Speicher. Vorzugsweise weisen die Speichereinheiten nicht-gemeinsam-genutzte, lokale Adressräume auf. Jeder lokale Adressraum arbeitet natürlich unabhängig. Der Speicher ist vorzugsweise direkt auf URAM, DRAM, AlE, HBM, DDR-Kanäle, NUMA abgebildet.Preferably, the memory units described above are not shared memories, in particular not distributed shared memories. Preferably, the storage units have non-shared local address spaces. Of course, each local address space works independently. The memory is preferably mapped directly to URAM, DRAM, AlE, HBM, DDR channels, NUMA.

Weitere Details, Vorteile und Merkmale der vorliegenden Erfindung werden aus der nachfolgenden Beschreibung von Ausführungsformen angesichts der Figuren ersichtlicher. Darin zeigt:

  • 1 ein schematisches logisches Schaltungsdiagramm einer Schaltung gemäß einer ersten Ausführungsform der vorliegenden Erfindung; und
  • 2 ein schematisches logisches Schaltungsdiagramm einer Schaltung gemäß einer zweiten Ausführungsform der vorliegenden Erfindung.
Further details, advantages and features of the present invention will become clearer from the following description of embodiments in view of the figures. It shows:
  • 1 a schematic logic circuit diagram of a circuit according to a first embodiment of the present invention; and
  • 2 a schematic logic circuit diagram of a circuit according to a second embodiment of the present invention.

Als eine Einführung wird auf die nachfolgende Tabelle (1) Bezug genommen: Tabelle (1) Speicherart Anzahl von Einheiten Individuelle Größe (GB) Gesamte Bandbreite (GB/s) DDR 2 32 38 HBM 32 8 460 URAM 960 0.27 4320 BRAM 2160 0.038 19440 As an introduction, reference is made to Table (1) below: Table (1) Storage type Number of units Custom Size (GB) Total Bandwidth (GB/s) GDR 2 32 38 HBM 32 8th 460 URAM 960 0.27 4320 BRAM 2160 0.038 19440

Als ein Beispiel setzt ein allgemeiner Computer zwei Einheiten von 32 GB DDR-Speicher ein, was zu einer Gesamtbandbreite von 38 GB/s führt. Weiter führt ein HBM zu einer Gesamtbandbreite von 460 GB/s.As an example, a general computer employs two units of 32 GB DDR memory, resulting in a total bandwidth of 38 GB/s. Furthermore, an HBM leads to a total bandwidth of 460 GB/s.

Andererseits weist ein FPGA-Beispiel 960 Einheiten von URAM („Ultra-RAM“) und 2160 Einheiten von BRAM („Block-RAM“) auf. Diese On-Chip-Speicherressourcen sind herkömmlicherweise bekannt.On the other hand, an FPGA example has 960 units of URAM (“Ultra RAM”) and 2160 units of BRAM (“Block RAM”). These on-chip memory resources are conventionally known.

Im Wesentlichen zielt bezüglich dem herkömmlichen Stand der Technik die vorliegende Erfindung auf ein Zuweisen von Platz zu allen (DDR, HBM, URAM, BRAM) Speichereinheiten (On-Chip-Speicherressourcen) der vorstehenden Tabelle in einem FPGA ab, um parallelen Zugriff und Verarbeitung zu erzielen.Essentially, with respect to the conventional art, the present invention aims at allocating space to all (DDR, HBM, URAM, BRAM) memory units (on-chip memory resources) of the above table in an FPGA for parallel access and processing achieve.

Die nachfolgenden zwei Ausführungsformen der vorliegenden Erfindung zielen auf eine Implementierung der vorliegenden Erfindung auf einem FPGA ab.The following two embodiments of the present invention are aimed at implementing the present invention on an FPGA.

1 zeigt ein schematisches logisches Schaltungsdiagramm einer Schaltung gemäß einer ersten Ausführungsform der vorliegenden Erfindung. Insbesondere zeigt 1 ein logisches Schaltungsdiagramm eines FPGAs als eine Schaltung, in welcher das Computer-implementierte Verfahren zum Parallelisieren eines Datenzugriffs implementiert ist. 1 demonstriert auch einen Ablauf der Verfahrensschritte, die nachfolgend beschrieben werden. 1 shows a schematic logic circuit diagram of a circuit according to a first embodiment of the present invention. In particular shows 1 a logic circuit diagram of an FPGA as a circuit in which the computer-implemented method for parallelizing data access is implemented. 1 also demonstrates a sequence of the process steps described below.

Wie aus 1 ersehen werden kann, weist die Schaltung eine erste Verarbeitungsobereinheit 1, eine Mehrzahl von Verarbeitungsuntereinheiten 3 und eine zweite Verarbeitungsobereinheit 5 auf. Die erste Verarbeitungsobereinheit 1 und die jeweiligen Verarbeitungsuntereinheiten 3 sind direkt über erste Verbindungseinheiten 2 verbunden. Weiter sind die jeweiligen Verarbeitungsuntereinheiten 3 über zweite Verbindungseinheiten 4 direkt mit der zweiten Verarbeitungsobereinheit 5 verbunden.How out 1 can be seen, the circuit has a first upper processing unit 1, a plurality of processing subunits 3 and a second upper processing unit 5. The first upper processing unit 1 and the respective processing subunits 3 are directly connected via first connection units 2. Furthermore, the respective processing subunits 3 are connected directly to the second processing upper unit 5 via second connection units 4.

Die erste Verarbeitungsobereinheit 1 empfängt eine Eingabe 9. Die zweite Verarbeitungsobereinheit 5 gibt eine Ausgabe 10 aus.The first upper processing unit 1 receives an input 9. The second upper processing unit 5 outputs an output 10.

In der vorliegenden Ausführungsform weist jede der Verarbeitungsuntereinheiten 3 eine Speichereinheit und eine Verarbeitungseinheit auf. Die erste Verarbeitungsobereinheit 1 und die zweite Verarbeitungsobereinheit 5 weisen jeweils eine Verarbeitungseinheit auf und weisen vorzugsweise weiter eine Speichereinheit auf. Die erste Verarbeitungsobereinheit 1 ist ein De-Multiplexer (auch als „De-Aggregate“ bezeichnet). Die zweite Verarbeitungsobereinheit 5 ist ein Multiplexer (auch als „Aggregate“ bezeichnet).In the present embodiment, each of the processing subunits 3 includes a storage unit and a processing unit. The first upper processing unit 1 and the second upper processing unit 5 each have a processing unit and preferably also have a storage unit. The first upper processing unit 1 is a de-multiplexer (also referred to as “de-aggregate”). The second upper processing unit 5 is a multiplexer (also referred to as “aggregate”).

Weiter weist jede der ersten Verbindungseinheiten 2 eine Speichereinheit, auch eine Pufferspeichereinheit genannt, auf. Weiter weist jede der zweiten Verbindungseinheiten 4 eine Speichereinheit, auch eine Pufferspeichereinheit genannt, auf.Furthermore, each of the first connection units 2 has a memory unit, also called a buffer memory unit. Furthermore, each of the second connection units 4 has a memory unit, also called a buffer memory unit.

Die Schaltung gemäß der vorliegenden Erfindung kann eine große Mehrzahl von Untereinheiten 3 aufweisen, wie durch die Punktlinie in 1 gekennzeichnet. Zum Beispiel kann die Schaltung mehrere Tausend Untereinheiten 3 aufweisen, wie vorstehend eingeführt.The circuit according to the present invention may have a large plurality of subunits 3, as shown by the dotted line in 1 marked. For example, the circuit may have several thousand subunits 3, as introduced above.

In der vorliegenden Ausführungsform wird die Erfindung als ein Implementierungsbeispiel mit Bezug auf ein Wörterbuch-Lernen beschrieben. Zum Beispiel kann die Schaltung allen Wörtern in einem Buch eine Bedeutung basierend auf Wörterbucheinträgen für jedes Wort oder jede Phrase in dem Buch zuweisen. In diesem Fall wird das Buch fortan als „Verarbeitungsdaten“ bezeichnet und das Wörterbuch wird fortan als „Referenzdaten“ bezeichnet. Das nachfolgende Implementierungsbeispiel von Büchern und Wörterbüchern dient nur dem Zweck eines Erklärens der Ausführungsform und soll nicht als eine Implementierungsbeschränkung der vorliegenden Ausführungsform verstanden werden. Tatsächlich kann die vorliegende Ausführungsform für einen beliebigen Prozess implementiert werden, in welchem Daten, insbesondere große Mengen von Daten, schnell und effizient verarbeitet/abgerufen werden müssen.In the present embodiment, the invention is described as an implementation example with respect to dictionary learning. For example, the circuit may assign meaning to all words in a book based on dictionary entries for each word or phrase in the book. In this case, the book will henceforth be referred to as “processing data” and the dictionary will henceforth be referred to as “reference data”. The following implementation example of books and dictionaries is only for the purpose of explaining the embodiment and should not be construed as an implementation limitation of the present embodiment. In fact, the present embodiment can be implemented for any process in which data, particularly large amounts of data, needs to be processed/retrieved quickly and efficiently.

In dem herkömmlichen Stand der Technik würde eine Verarbeitungseinheit, zum Beispiel eine CPU, in dem gesamten Wörterbuch, das in einem einzigen logischen Speicher („Hauptspeicher“) gespeichert ist, nach der Definition eines Worts suchen. Während dieser Suche wäre es allgemein nicht möglich, gleichzeitig nach einem anderen Wort (Verarbeitungsdatenuntermenge) zu suchen.In the conventional art, a processing unit, for example a CPU, would search for the definition of a word in the entire dictionary stored in a single logical memory (“main memory”). During this search, it would generally not be possible to search for another word (processing data subset) at the same time.

Im Gegensatz dazu wird in der vorliegenden Ausführungsform das nachfolgende Verfahren als eine Hardware, insbesondere als logische Zellen eines FPGAs, implementiert:

  • Die Verarbeitungsdaten werden bereitgestellt.
In contrast, in the present embodiment, the following method is implemented as hardware, in particular as logical cells of an FPGA:
  • The processing data is provided.

Weiter werden Referenzdaten bereitgestellt. Die Referenzdaten indizieren Datenschlüssel der Verarbeitungsdaten zu einem abzurufenden Datenergebnis. Die Referenzdaten sind eine Nachschlagtabelle (LUT) des FPGAs. Mit anderen Worten sind die Referenzdaten eine Nachschlagtabelle, die einen Datenschlüssel mit einem Datenergebnis korreliert. Zum Beispiel würde in der Implementierung eines Wörterbuchs das Wort „Einstein“ mit „herausragender Physiker“ korreliert.Reference data is also provided. The reference data index data keys of the processing data to a data result to be retrieved. The reference data is a lookup table (LUT) of the FPGA. In other words, the reference data is a lookup table that correlates a data key with a data result. For example, in a dictionary implementation, the word “Einstein” would be correlated with “outstanding physicist.”

Die Referenzdaten werden in N Untermengen von Referenzdaten unterteilt. N ist die Anzahl von Verarbeitungsuntereinheiten 3. In dem Fall von 1 sind ungeachtet der gestichelten Linie sieben Untereinheiten 3 gezeigt. Deshalb würden die Referenzdaten in sieben Untermengen unterteilt. In echten Anwendungen wäre die Anzahl N jedoch zum Beispiel mehrere Tausend (siehe vorstehende Tabelle (1)).The reference data is divided into N subsets of reference data. N is the number of processing subunits 3. In the case of 1 Seven subunits 3 are shown regardless of the dashed line. Therefore, the reference data would be divided into seven subsets. However, in real applications the number N would be, for example, several thousand (see table (1) above).

Jede der N Referenzdatenuntermengen wird in einer Untereinheit 3 gespeichert. Mit anderen Worten weist jede Untereinheit 3 im Speicher eine Referenzdatenuntermenge auf.Each of the N reference data subsets is stored in a subunit 3. In other words, each subunit 3 in memory has a subset of reference data.

Weiter wird ein Untermengenindex in der ersten Verarbeitungsobereinheit 1 gespeichert. Der Untermengenindex ordnet die Referenzdatenuntermengen den jeweiligen Verarbeitungsuntereinheiten 3 zu. Mit anderen Worten ist der Untermengenindex eine Adresse einer Untereinheit 3, die anzeigt, welche Referenzdatenuntermenge darin gespeichert ist. Zum Beispiel wird dieser Untermengenindex anzeigen, dass die „sechste“ Referenzdatenuntermenge in der „sechsten“ Untereinheit 3 gespeichert ist.Furthermore, a subset index is stored in the first upper processing unit 1. The subset index assigns the reference data subsets to the respective processing subunits 3. In other words, the subset index is an address of a subunit 3 indicating which subset of reference data is stored therein. For example, this subset index will indicate that the "sixth" reference data subset is stored in the "sixth" subunit 3.

In echten Anwendungen werden die Trennung von Referenzdaten und die Untermengenindexzuordnung unter Verwendung von Hash-Funktionen erreicht, sodass die Verteilung von Referenzdaten unter den Untereinheiten 3 ausgeglichen wird und eine Gesamtentropie erhöht wird. Zum Beispiel würden in dem beispielhaften Fall des Wörterbuchs, anstatt alle Referenzdaten für mit „A“ beginnende Wörter in einer Untereinheit 3 zu speichern und alle mit „Z“ beginnenden Wörter in einer anderen Untereinheit 3 zu speichern, was die Menge an in jeder Untereinheit 3 notwendigem Speicher stark aus dem Gleichgewicht bringen würde, die Referenzdaten so unterteilt, dass alle Wörter gleichmäßig unter allen Untereinheiten 3 verteilt sind. Dadurch kann in dem Beispiel eine Untereinheit 3 alle mit „Z“ beginnenden aber auch einige mit „Y“ beginnende Wörter aufweisen, wogegen eine andere Untereinheit 3 nur einige der mit „A“ beginnenden Wörter aufweist.In real applications, reference data separation and subset index mapping are achieved using hash functions, so that the distribution of reference data among subunits 3 is balanced and overall entropy is increased. For example, in the exemplary case of the dictionary, instead of storing all reference data for words starting with “A” in one subunit 3 and storing all words starting with “Z” in another subunit 3, the amount of in each subunit 3 would greatly imbalance the necessary memory, the reference data is divided so that all words are evenly distributed among all subunits 3. As a result, in the example, a subunit 3 can have all words starting with "Z" but also some words starting with "Y", whereas another subunit 3 only has some of the words starting with "A".

Weiter werden die Verarbeitungsdaten in die erste Verarbeitungsobereinheit 1, d.h., den De-Multiplexer 1, eingegeben.Further, the processing data is input into the first upper processing unit 1, i.e. the de-multiplexer 1.

Die erste Verarbeitungsobereinheit 1 berechnet einen Hash-Wert über die Hash-Funktion(en) für Untermengen von Verarbeitungsdaten. In dem beispielhaften Fall würde dies zu einem Berechnen eines Hash-Werts für jedes Wort korrespondieren.The first processing unit 1 calculates a hash value via the hash function(s) for subsets of processing data. In the exemplary case, this would correspond to calculating a hash value for each word.

Dieser Hash-Wert wird auch als „Datenschlüssel“ bezeichnet. Wie vorstehend angezeigt, wird der Hash-Wert für die Referenzdaten auch berechnet, sodass die Nachschlagtabelle Hash-Werteinträge und ihre korrelierten oder korrespondierenden Datenwerte aufweist. Zum Beispiel wird der Hash-Wert von „Einstein“ in der Nachschlagtabelle mit „herausragender Physiker“ korreliert.This hash value is also called a “data key”. As indicated above, the hash value for the reference data is also calculated so that the lookup table has hash value entries and their correlated or corresponding data values. For example, the hash value of “Einstein” is correlated with “eminent physicist” in the lookup table.

Weiterhin weist der Datenschlüssel-Hash-Wert Einträge auf, welche eine Untermenge von Referenzdaten anzeigen. Dadurch weist der Datenschlüssel Informationen darüber auf, welche Untereinheit 3 die Untermenge von Referenzdaten umfasst, die den korrespondierenden Datenschlüssel mit den Datenwerten korrelieren. Dies würde im Wesentlichen zu dem Hash-Werteintrag für den Buchstaben „E“ in der vorstehend beschriebenen alphabetischen Unterteilung der Referenzdaten korrespondieren.Furthermore, the data key hash value has entries that indicate a subset of reference data. As a result, the data key has information about which subunit 3 comprises the subset of reference data, which correlates the corresponding data key with the data values. This would essentially correspond to the hash value entry for the letter “E” in the alphabetical division of the reference data described above.

Der Datenschlüssel, der durch die erste Verarbeitungsobereinheit 1 über die Hash-Funktion berechnet wird, wird dann in die erste Verbindungseinheit 2 gegeben. Der Untermengenindex zeigt an, zu welcher Untereinheit 3 (zu welcher korrespondierenden ersten Verbindungseinheit 2) der Datenschlüssel durch die erste Verarbeitungsobereinheit 1 auszugeben ist.The data key, which is calculated by the first upper processing unit 1 via the hash function, is then given to the first connection unit 2. The subset index indicates to which subunit 3 (to which corresponding first connection unit 2) the data key is to be issued by the first processing unit 1.

Dabei weist die erste Verbindungseinheit 2 jeweils eine Speichereinheit und eine Verarbeitungseinheit, auch Pufferspeichereinheit und Pufferverarbeitungseinheit genannt, auf. Dadurch können mehrere Datenschlüssel in die erste Verbindungseinheit 2 eingegeben werden („Pufferung“). Weiterhin wird die Pufferverarbeitungseinheit den Datenschlüssel gemäß dem First-In-First-Out- („FIFO“-) Prinzip von der ersten Verbindungseinheit 2 zu der korrespondierenden Untereinheit 3 ausgeben.The first connection unit 2 each has a storage unit and a processing unit, also called a buffer storage unit and a buffer processing unit. This allows multiple data keys to be entered into the first connection unit 2 (“buffering”). Furthermore, the buffer processing unit will output the data key from the first connection unit 2 to the corresponding subunit 3 according to the first-in-first-out (“FIFO”) principle.

Dann sucht die Untereinheit 3, die den Datenschlüssel empfangen hat, in der Untermenge von Referenzdaten nach dem Datenschlüssel. Sobald er gefunden ist, gibt die Untereinheit 3 den Datenwert, der zu diesem Datenschlüssel korrespondiert oder mit ihm korreliert (zum Beispiel „herausragender Physiker“) aus. Dieser Datenwert wird auch als „abgerufene Daten“ bezeichnet, da er durch die Untereinheit 3 abgerufen worden ist.Then the subunit 3, which has received the data key, searches for the data key in the subset of reference data. Once found, subunit 3 outputs the data value that corresponds to or correlates with this data key (e.g., “outstanding physicist”). This data value is also referred to as “retrieved data” because it has been retrieved by subunit 3.

Die Untereinheit 3 gibt diesen Datenwert an die zweite Verbindungseinheit 4, welche ebenfalls eine Speichereinheit (Pufferspeicher) und eine Verarbeitungseinheit (Pufferverarbeitungseinheit) aufweist. Dadurch können die Datenwerte, die durch die Untereinheit 3 ausgegeben werden, ebenfalls gemäß FIFO gepuffert und sortiert werden.The subunit 3 passes this data value to the second connection unit 4, which also has a storage unit (buffer memory) and a processing unit (buffer processing unit). This allows the data values output by the subunit 3 to also be buffered and sorted according to FIFO.

Die zweite Verbindungseinheit 4 gibt in der FIFO-Reihenfolge die Datenwerte an die zweite Verarbeitungsobereinheit 5 aus. Die zweite Verarbeitungsobereinheit 5 aggregiert alle Datenwerte der Untereinheiten 3 zu einer Menge von aggregierten Daten und/oder einem Strom von aggregierten Daten und gibt weiter diese Aggregation der abgerufenen Daten an den Ausgang 10 aus.The second connection unit 4 outputs the data values to the second upper processing unit 5 in the FIFO order. The second upper processing unit 5 aggregates all data values of the subunits 3 into a set of aggregated data and/or a stream of aggregated data and further outputs this aggregation of the retrieved data to the output 10.

Insbesondere sollte beachtet werden, dass die Gesamtheit der Referenzdaten in den Untereinheiten 3 gespeichert wird. Mit anderen Worten werden keine Referenzdaten in den Obereinheiten 1, 5 gespeichert. Dadurch suchen die Obereinheiten 1, 5 nicht nach dem Datenschlüssel in den Referenzdaten. Stattdessen sucht jede Untereinheit 3 in ihrer eigenen Untermenge der Referenzdaten nach dem Datenschlüssel. Da die Schaltung mit den Pufferspeichern, insbesondere der ersten Verbindungseinheiten 2, versehen ist, kann die erste Verarbeitungsobereinheit 1 weiter schnell eine hohe Anzahl von Datenschlüsseln ausgeben. Diese Datenschlüssel werden vorzugsweise (nahezu oder im besten Fall) gleichmäßig unter den Untereinheiten 3 verteilt. Dadurch ist keine Ausfallzeit einer der Untereinheiten 3 notwendig.In particular, it should be noted that all of the reference data is stored in the subunits 3. In other words, no reference data is stored in the main units 1, 5. As a result, the upper units 1, 5 do not search for the data key in the reference data. Instead, each subunit 3 searches for the data key in its own subset of the reference data. Since the circuit is provided with the buffer memories, in particular the first connection units 2, the first processing unit 1 can continue to quickly output a large number of data keys. These data keys are preferably (almost or in the best case) evenly distributed among the subunits 3. This means that no downtime of one of the subunits 3 is necessary.

Weiterhin weist die Schaltung, wie durch die gestrichelte Linie mit dem Bezugszeichen 6 angezeigt, in einer bevorzugten Modifikation der vorliegenden Ausführungsform eine weitere direkte Verbindung zwischen der ersten Verarbeitungsobereinheit 1 und der zweiten Verarbeitungsobereinheit 5 in der Form einer dritten Verbindungseinheit 6 auf.Furthermore, as indicated by the dashed line with reference numeral 6, in a preferred modification of the present embodiment, the circuit has a further direct connection between the first processing upper unit 1 and the second processing upper unit 5 in the form of a third connection unit 6.

Die dritte Verbindungseinheit 6 weist vorzugsweise auch eine Speichereinheit als einen Pufferspeicher und eine Verarbeitungseinheit als eine Pufferverarbeitungseinheit auf.The third connection unit 6 preferably also has a storage unit as a buffer memory and a processing unit as a buffer processing unit.

Über die dritte Verbindungseinheit 6 gibt die erste Obereinheit 1 an die zweite Obereinheit 5 eine Reihenfolge aus, mit welcher die Datenschlüssel durch die erste Obereinheit 1 an die Untereinheiten 3 ausgegeben wurden. Zum Beispiel kann dies durch ein Ausgeben von Teilen oder der Gesamtheit der Hash-Werte auch an die zweite Obereinheit 5 erreicht werden. Dadurch kann die zweite Obereinheit 5 die Datenwerte, die durch die Untereinheiten 3 ausgegeben werden, in der Reihenfolge sortieren, in welche diese als Datenschlüssel darin eingegeben wurden.Via the third connection unit 6, the first upper unit 1 issues to the second upper unit 5 an order in which the data keys were issued by the first upper unit 1 to the subunits 3. For example, this can also be achieved by outputting parts or all of the hash values to the second upper unit 5. This allows the second upper unit 5 to store the data values, which are output by the subunits 3, sort in the order in which they were entered as data keys therein.

Vorzugsweise gibt die erste Obereinheit 1 zusätzlich die Adresse der Untereinheit 3, an welche der Datenschlüssel ausgegeben wurde, über die dritte Verbindungseinheit 6 an die zweite Obereinheit 5 aus. Dadurch kann die zweite Obereinheit 5 zum Beispiel identifizieren, ob ein Fehler aufgetreten ist, oder ob die korrespondierende Untereinheit 3 den Datenschlüssel in den Referenzdaten nicht gefunden hat. In diesem Fall kann, wenn die Untereinheit 3 einfach nichts ausgibt, die zweite Obereinheit 5 identifizieren, dass die Untereinheit 3 einen Datenwert ausgegeben haben sollte, und kann deshalb die nachfolgenden Datenwerte, die von den anderen (oder der gleichen Untereinheit 3 auf die Null-Ausgabe folgend) ausgegeben werden, korrekt ordnen.Preferably, the first upper unit 1 additionally outputs the address of the subunit 3 to which the data key was issued to the second upper unit 5 via the third connection unit 6. This allows the second upper unit 5 to identify, for example, whether an error has occurred or whether the corresponding subunit 3 has not found the data key in the reference data. In this case, if the subunit 3 simply does not output anything, the second superunit 5 can identify that the subunit 3 should have outputted a data value, and therefore can set the subsequent data values returned by the other (or the same subunit 3) to the zero value. (following output) are output, arrange them correctly.

Die dritte Verbindungseinheit 6 kann vorzugsweise auch gemäß FIFO ausgeben.The third connection unit 6 can preferably also output according to FIFO.

Damit wird eine massive Parallelisierung erreicht, da die Referenzdaten nicht in ihrer Gesamtheit an einer Stelle gespeichert werden und durch die Untereinheiten 3 effizient und schnell durchsucht werden können.This achieves massive parallelization, since the reference data is not stored in its entirety in one place and can be searched efficiently and quickly by the subunits 3.

In einem modernen FPGA, das eingebettete Fabric-Speicher (z.B. BRAM und URAM) verwendet, macht es dieser Ansatz möglich, in dem beispielhaften Fall eines Wörterbuchs, das praktisch die gesamte englische Sprache umfasst, in der Größenordnung von einem Wort pro Taktzyklus oder sogar schneller zu identifizieren/nachzuschlagen. Dies kann dazu führen, dass ein einzelnes FPGA geeignet ist, 500 Millionen Wörter pro Sekunde nachzuschlagen.In a modern FPGA that uses embedded fabric memories (e.g. BRAM and URAM), this approach makes it possible, in the exemplary case of a dictionary covering virtually the entire English language, on the order of one word per clock cycle or even faster to identify/look up. This can result in a single FPGA capable of looking up 500 million words per second.

Für eine Million Wörter kann eine 32-Bit-Hash-Funktion bereits nur wenige oder keine Kollisionen erzielen.For a million words, a 32-bit hash function can already achieve few or no collisions.

2 zeigt ein schematisches logisches Schaltungsdiagramm einer Schaltung gemäß einer zweiten Ausführungsform der vorliegenden Erfindung. 2 shows a schematic logic circuit diagram of a circuit according to a second embodiment of the present invention.

Die vorliegende Ausführungsform ist ähnlich zu der ersten Ausführungsform. Zusätzlich dazu weist die zweite Ausführungsform eine zusätzliche Schicht oder Hierarchie von Untereinheiten 3 und Obereinheiten 7, 8 auf. Die Obereinheit 7 ist ein De-Multiplexer. Die Obereinheit 8 ist ein Multiplexer.The present embodiment is similar to the first embodiment. In addition, the second embodiment has an additional layer or hierarchy of subunits 3 and superunits 7, 8. The upper unit 7 is a de-multiplexer. The upper unit 8 is a multiplexer.

In dieser Ausführungsform wird im Wesentlichen eine in der ersten Ausführungsform erklärte Hierarchie anstelle einer Untereinheit 3 eingeführt. Dies kann auf eine beliebige Anzahl von Untereinheiten 3, die zu der Anzahl von Speichereinheiten in dem FPGA korrespondiert, ausgeweitet werden.In this embodiment, a hierarchy explained in the first embodiment is essentially introduced instead of a subunit 3. This can be extended to any number of subunits 3 corresponding to the number of memory units in the FPGA.

Zusätzlich zu der vorstehenden geschriebenen Beschreibung der Erfindung wird explizit auf die 1 und 2 verwiesen, welche Merkmale der vorliegenden Erfindung detailliert zeigen.In addition to the above written description of the invention, explicit reference is made to the 1 and 2 referenced, which show the features of the present invention in detail.

Zusätzliche ergänzende Diagramme:Additional Supplementary Charts:

Herkömmliche ParallelitätTraditional concurrency

  • • Pipeline
    • - nur nützlich zum Streamen oder für andere aufzählbare Daten (1, 2, 3, ..., N)
    • - eine Operation weist eine Latenz > 1 auf (Zeiteinheit z.B. Taktzyklus)
    • - Zwischenergebnisse werden gespeichert und organisiert, sodass „spätere“ Stufen mit „früheren“ Daten arbeiten (N, N+1, N+2, ...)
    • Pipeline
    • - only useful for streaming or other enumerable data (1, 2, 3, ..., N)
    • - an operation has a latency > 1 (time unit e.g. clock cycle)
    • - Intermediate results are saved and organized so that “later” stages work with “earlier” data (N, N+1, N+2, ...)
  • • Map-Reduce
    • - auch als „embarrassingly parallel“ bezeichnet
    • - parallele Prozesse sind Kopien voneinander, nur Eingangsdaten unterscheiden sich (N, N+1, N+2, ...)
    • Map Reduce
    • - also referred to as “embarrassingly parallel”.
    • - parallel processes are copies of each other, only input data differs (N, N+1, N+2, ...)
  • • In beiden Fällen gibt es keine Nebeneffekte, Datenabhängigkeiten oder „Zustand“ sind zugelassen• In both cases there are no side effects, data dependencies or “state” are allowed

Spezielle ParallelitätSpecial parallelism

  • • Datenabhängigkeiten, Nebeneffekte und „Zustand“• Data dependencies, side effects and “state”
  • • Systolische „Pipeline“
    • - erweiterte Form einer Pipeline-Parallelität
    • - kann mehrdimensional sein
    • - gekennzeichnet durch mehrere Datenbewegungen (z.B. Matrix-Kreuzprodukt)
    • Systolic “pipeline”
    • - extended form of pipeline parallelism
    • - can be multidimensional
    • - characterized by multiple data movements (e.g. matrix cross product)
  • • De-aggregieren / Aggregieren
    • - erweiterte Form von Map-Reduce
    • - parallele Prozesse arbeiten an unterschiedlichen unabhängigen Datenmengen (z.B. Wörterbuch)
    • De-aggregate / Aggregate
    • - extended form of Map-Reduce
    • - parallel processes work on different independent data sets (e.g. dictionary)
  • • In beiden Fällen werden Nebeneffekte, Datenabhängigkeiten oder „Zustand“ durch die Auslegung beachtet• In both cases, side effects, data dependencies or “state” are taken into account by the design

Informationsentropie und Order&HashInformation Entropy and Order&Hash

  • • „Demokratie“: 9 Symbole von 8/16 Bit (Unicode) = 80/160 Bit (dynamische Zeichenfolge)• “Democracy”: 9 symbols of 8/16 bits (Unicode) = 80/160 bits (dynamic character string)
  • • abgeschätzte # von Worten weltweit ≈ 1 Milliarde → 32 Bits ausreichend, um vollständig auf eine lineare Weise zu charakterisieren• estimated # of words worldwide ≈ 1 billion → 32 bits sufficient to fully characterize in a linear manner
  • • Huffmann: kurze (kürzere) Codes für häufige Symbole• Huffmann: short (shorter) codes for common symbols
  • • Hash: Kollisionen erlauben oder nicht?
    • → mehr Bits benötigt, wenn nicht
    • → etra Logik, wenn ja
    • Hash: allow collisions or not?
    • → more bits needed if not
    • → etra logic if so
  • • Buchstabierung / Sprachtoleranz: Hidden Markov, Viterby• Spelling/language tolerance: Hidden Markov, Viterby
  • • Cortical.io: „semantisches Falten“ - Hash-Funktion basierend auf einer Bedeutung mit einer semantischen Reihenfolge - d.h., ähnliche Bedeutungen weisen einen ähnlichen Hash auf, „Fingerabdruck“• Cortical.io: “semantic folding” - hash function based on a meaning with a semantic order - i.e., similar meanings have a similar hash, “fingerprint”
  • • Seltenheit - spezifisch (z.B. Matrix) und systemisch (alles Vorstehende)• Rarity - specific (e.g. Matrix) and systemic (all of the above)

De-Aggregieren / AggregierenDe-aggregate/aggregate

  • • Scatter-Gather und Map-Reduce weisen Ähnlichkeiten auf aber sind nicht gleich for (i=0; i<N; ++i) // oder while(i) x[i] = y[idx[i]]; (siehe 3)• Scatter-Gather and Map-Reduce have similarities but are not the same for (i=0; i<N; ++i) // or while(i) x[i] = y[idx[i]]; (please refer 3 )
  • • dieses Schema weist unterschiedliche Operationen in jedem c_0, c_1, ... usw. auf, oder zumindest unterschiedliche Daten• this scheme has different operations in each c_0, c_1, ... etc., or at least different data
  • while(i) push c_<i> // schiebe ins FIFO und erhalte Ausgabe von c_<i> nachdem Arbeit abgeschlossenwhile(i) push c_<i> // push into FIFO and get output from c_<i> after work completed
  • • c_0, c_1, ... können verteilten Speicher enthalten/„bilden“ und parallel arbeiten• c_0, c_1, ... can contain/“form” distributed memory and work in parallel
  • • einfaches Beispiel:
    • Wenn ein Wörterbuch zu speichern und Wörter nachzuschlagen wären, dann könnte c_0 alle Wörter mit dem ersten Buchstaben, c_1 mit dem Buchstaben B und so weiter enthalten. Wenn ein Wort in einem Eingabestrom mit A beginnen würde, würde es nach c_0 geleitet, Wörter mit B nach c_1 und so weiter.
    • simple example:
    • If there was a dictionary to store and look up words, then c_0 could contain all words with the first letter, c_1 with the letter B, and so on. If a word in an input stream started with A, it would go to c_0, words with B would go to c_1, and so on.
  • • In der Realität verwende Hash-Funktionen, um eine Verteilung auszugleichen und eine Entropie zu erhöhen• In reality, use hash functions to balance a distribution and increase entropy

De-Aggregieren / AggregierenDe-aggregate/aggregate

  • • In einem modernen FPGA, das eingebettete Fabric-Speicher verwendet (z.B. Bram und Uram in Xilinx) macht es dieser Ansatz möglich, in der Größenordnung von einem Wort pro Taktzyklus oder sogar schneller in einem Wörterbuch, das praktisch die gesamte englische Sprache enthält, zu identifizieren/nachzuschlagen (siehe 3)• In a modern FPGA that uses embedded fabric memory (e.g. Bram and Uram in Xilinx), this approach makes it possible to write on the order of one word per clock cycle, or even faster in a dictionary containing virtually the entire English language identify/ look it up (see 3 )
  • • Beispielberechnung:
    1. 1 Million Wörter - 32 Bit Hash mit keiner/wenigen Kollisionen Xilinx Uram 4072 Wörter, 72 Bit → 8000 Wörter pro Uram Alveo u250 weist 1280 Urams auf → Platz für >8 Million Wörter Binäre Suche pro Uram: log2(4072) = 12 Taktzyklen Parallelität für eine Suche: Bis zu >1000
    • Example calculation:
    1. 1 million words - 32 bit hash with no/few collisions Xilinx Uram 4072 words, 72 bits → 8000 words per Uram Alveo u250 has 1280 Urams → space for >8 million words Binary search per Uram: log2(4072) = 12 clock cycles parallelism for a search: Up to >1000
  • • → Nachschlagen von über 500 Million Wörtern pro Sekunde auf einem einzigen FPGA• → Lookup over 500 million words per second on a single FPGA

Inline-Initialisierung von verteiltem SpeicherInline initialization of distributed memory

  • • Explizite Initialisierung oder Upload von Daten verursacht, dass zusätzliche Hardware aufzubauen ist, was verhindernd teuer sein und sogar ein funktionales Routing überschreiten kann. (siehe 3)• Explicit initialization or upload of data causes the need to build additional hardware, which can be preventatively expensive and even exceed functional routing. (please refer 3 )
  • • Initialisierung wird einmal oder zumindest sehr unregelmäßig ausgeführt, deshalb ist ein Timing unkritisch.• Initialization is carried out once or at least very irregularly, so timing is not critical.
  • • Verwendung von Inline-Initialisierung/Daten-Upload - mit anderen Worten Wiederverwendung von Infrastruktur, Bussen, usw., die für Funktionalität benötigt werden, durch Senden von Inline-Signalen.• Use of inline initialization/data upload - in other words, reuse of infrastructure, buses, etc. required for functionality by sending inline signals.
  • • Jeder „Knoten“ (z.B. C_0, C_1, ..., usw.) interpretiert die Signale, um einen Betriebsmodus auf „Initialisierung“ umzuschalten und anstatt eines Ausführens der Funktion (z.B. Suche) den Eingangsdatenstrom in einer vorbestimmten Weise zu speichern.• Each “node” (e.g. C_0, C_1, ..., etc.) interprets the signals to switch an operating mode to “initialization” and instead of executing the function (e.g. search) save the input data stream in a predetermined manner.
  • • Dadurch wird keine zusätzliche Hardware, insbesondere teure Busse, aufgebaut, und Inhalte sind während des Betriebs („on-the-fly“) aktualisierbar, während ein normaler Betrieb fortfahren kann.• This eliminates the need to build additional hardware, particularly expensive buses, and allows content to be updated on-the-fly while normal operations can continue.

Hierarchische OrganisationHierarchical organization

  • • Fan-out und Fan-in: Anzahl von Endpunkten eines Signals aber auch Anzahl von Verbindungen eines Moduls - z.B. Aggregate weist 16 Eingänge auf (siehe 4)• Fan-out and fan-in: Number of end points of a signal but also number of connections of a module - e.g. aggregate has 16 inputs (see 4 )
  • • Fan-out/-in über etwa 8-16 wird zunehmend schwierig, ineffizient und langsam beim Platzieren und Routen, aber auch beim Timing-Closure• Fan out/in over about 8-16 becomes increasingly difficult, inefficient and slow in placement and routes, but also in timing closure
  • • Für höhere Fan-out/-in stattdessen Verwendung von mehrstufigen hierarchischen Ansätzen• For higher levels of fan out/in, use multi-level hierarchical approaches instead
  • • Zum Beispiel Verwenden von 3 Stufen → 83 = 512 parallele Module mit einem maximalen Fan-out/-in von 8• For example, using 3 stages → 8 3 = 512 parallel modules with a maximum fan out/in of 8
  • • Dies zeigt insbesondere eine Nützlichkeit einer Inline-Initialisierung (siehe vorstehende Folie)• This particularly shows the usefulness of inline initialization (see slide above)
  • • Jede Stufe führt 1-2 Zyklen von Latenz ein, aber es ist eine Latenz mit Zwischenspeicherstufen, sodass ein Durchsatz nicht beeinträchtigt wird. Eine Reduzierung eines Taktzyklus aufgrund von Routing-Overhead würde einen Durchsatz reduzieren. (siehe 5, Teil 1 und 2)• Each stage introduces 1-2 cycles of latency, but it is buffer stage latency so throughput is not affected. Reducing one clock cycle due to routing overhead would reduce throughput. (please refer 5 , parts 1 and 2)

BezugszeichenReference symbols

11
erste Verarbeitungsobereinheitfirst upper processing unit
22
erste Verbindungseinheitfirst connection unit
33
VerarbeitungsuntereinheitProcessing subunit
44
zweite Verbindungseinheitsecond connection unit
55
zweite Verarbeitungsobereinheitsecond upper processing unit
66
dritte Verbindungseinheitthird connection unit
77
VerarbeitungsobereinheitUpper processing unit
88th
VerarbeitungsobereinheitUpper processing unit
99
Eingabeinput
1010
Ausgabeoutput

Claims (10)

Computer-implementiertes Verfahren zum Parallelisieren eines Datenzugriffs unter Verwendung einer Schaltung, insbesondere einer anwenderprogrammierbaren integrierten Schaltung, die ein Netzwerk mit einer Mehrzahl von selektiv untereinander verbindbaren Verbindungseinheiten, Speichereinheiten und Verarbeitungseinheiten aufweist, wobei das Verfahren umfasst: • Bereitstellen einer Menge von zu verarbeitenden Verarbeitungsdaten; • Bereitstellen einer Menge von Referenzdaten, wobei die Referenzdaten Datenschlüssel der Verarbeitungsdaten zu einem abzurufenden Datenwertergebnis, insbesondere als eine Nachschlagtabelle, indizieren; • Unterteilen der Referenzdaten in N Untermengen von Referenzdaten, wobei N eine Anzahl von Verarbeitungsuntereinheiten (3) ist, die in der Schaltung enthalten sind, und Speichern einer Referenzdatenuntermenge in einem Speicher jeder jeweiligen Verarbeitungsuntereinheit (3); • Speichern eines Untermengenindex, welcher die Referenzdatenuntermengen zu den jeweiligen Verarbeitungsuntereinheit (3) zuordnet, in einer ersten Verarbeitungsobereinheit (1); • Eingeben der Verarbeitungsdaten in die erste Verarbeitungsobereinheit (1); • Eingeben von Untermengen der Verarbeitungsdaten als Datenschlüssel in die korrespondierenden Verarbeitungsuntereinheiten (3) über die erste Verarbeitungsobereinheit (1) unter Verwendung des Untermengenindex; • Ausgeben von Datenwertergebnissen, die gemäß der Referenzdatenuntermenge zu den Datenschlüsseln korrespondieren, als abgerufene Daten über die Verarbeitungsuntereinheiten (3) an eine zweite Verarbeitungsobereinheit (5); und • Ausgeben einer aggregierten Menge von abgerufenen Daten, die eine Aggregation aller Datenwertergebnisse aller Verarbeitungsuntereinheiten (3) umfasst, über die zweite Verarbeitungsobereinheit (5).Computer-implemented method for parallelizing data access using a circuit, in particular a user-programmable integrated circuit, which has a network with a plurality of connection units, storage units and processing units that can be selectively interconnected, the method comprising: • Providing a quantity of processing data to be processed; • Providing a set of reference data, the reference data indexing data keys of the processing data to a data value result to be retrieved, in particular as a lookup table; • dividing the reference data into N subsets of reference data, where N is a number of processing subunits (3) included in the circuit, and storing a reference data subset in a memory of each respective processing subunit (3); • Storing a subset index, which assigns the reference data subsets to the respective processing subunit (3), in a first upper processing unit (1); • Entering the processing data into the first upper processing unit (1); • Entering subsets of the processing data as data keys into the corresponding processing subunits (3) via the first upper processing unit (1) using the subset index; • Outputting data value results corresponding to the data keys according to the reference data subset as retrieved data via the processing subunits (3) to a second processing upper unit (5); and • Outputting an aggregated set of retrieved data, which includes an aggregation of all data value results of all processing sub-units (3), via the second processing sub-unit (5). Computer-implementiertes Verfahren zum Parallelisieren eines Datenzugriffs gemäß Anspruch 1, wobei die erste Verarbeitungsobereinheit (1) mit der zweiten Verarbeitungsobereinheit (5) verbunden ist, wobei das Verfahren ein Ausgeben einer Reihenfolge, mit welcher die Untermengen von Verarbeitungsdaten von der ersten Verarbeitungsobereinheit (1) an die korrespondierenden Verarbeitungsuntereinheiten (3) eingegeben werden, von der ersten Verarbeitungsobereinheit (1) an die zweite Verarbeitungsobereinheit (5) und ein Sortieren der Datenwertergebnisse, die zu der Reihenfolge korrespondieren, mittels der zweiten Verarbeitungsobereinheit (5) umfasst.Computer-implemented method for parallelizing data access according to Claim 1 , wherein the first upper processing unit (1) is connected to the second upper processing unit (5), the method comprising outputting an order in which the subsets of processing data are input from the first upper processing unit (1) to the corresponding processing subunits (3). the first upper processing unit (1) to the second upper processing unit (5) and sorting the data value results corresponding to the order by means of the second upper processing unit (5). Computer-implementiertes Verfahren zum Parallelisieren eines Datenzugriffs gemäß einem der vorstehenden Ansprüche, wobei die Schaltung weiter N erste Verbindungseinheiten (2) aufweist, die jeweils eine Verarbeitungsuntereinheit (3) mit der ersten Verarbeitungsobereinheit (1) verbinden, wobei die ersten Verbindungseinheiten (2) jeweils eine Speichereinheit aufweisen, wobei das Verfahren ein Eingeben und Puffern einer Mehrzahl von Untermengen von Verarbeitungsdaten als Datenschlüssel in der Speichereinheit der korrespondierenden ersten Verbindungseinheit (2) mittels der ersten Verarbeitungsobereinheit (1) umfasst.Computer-implemented method for parallelizing data access according to one of the preceding claims, wherein the circuit further comprises N first connection units (2), each of which connects a processing sub-unit (3) to the first processing upper unit (1), the first connection units (2) each have a storage unit, the method comprising entering and buffering a plurality of subsets of processing data as data keys in the storage unit of the corresponding first connection unit (2) by means of the first upper processing unit (1). Computer-implementiertes Verfahren zum Parallelisieren eines Datenzugriffs gemäß Anspruch 3, wobei die ersten Verbindungseinheiten (2) jeweils eine Pufferverarbeitungseinheit aufweisen, wobei das Verfahren ein Eingeben von Datenschlüsseln von der Speichereinheit an die jeweilige Verarbeitungsuntereinheit (3) gemäß einem First-In-First-Out-Prinzip mittels der Pufferverarbeitungseinheit umfasst.Computer-implemented method for parallelizing data access according to Claim 3 , wherein the first connection units (2) each have a buffer processing unit, the method comprising entering data keys from the storage unit to the respective processing subunit (3) according to a first-in-first-out principle by means of the buffer processing unit. Computer-implementiertes Verfahren zum Parallelisieren eines Datenzugriffs gemäß einem der vorstehenden Ansprüche, wobei die Schaltung weiter N zweite Verbindungseinheiten (4) aufweist, die jeweils eine Verarbeitungsuntereinheit (3) mit der zweiten Verarbeitungsobereinheit (5) verbinden, wobei die zweiten Verbindungseinheiten (4) jeweils eine Speichereinheit aufweisen, wobei das Verfahren ein Eingeben und Puffern einer Mehrzahl von Datenwertergebnissen in der Speichereinheit der korrespondierenden zweiten Verbindungseinheit (4) mittels der Verarbeitungsuntereinheit (3) umfasst.Computer-implemented method for parallelizing data access according to one of the preceding claims, wherein the circuit further comprises N second connection units (4), each of which connects a processing sub-unit (3) to the second processing upper unit (5), the second connection units (4) each have a storage unit, the method comprising entering and buffering a plurality of data value results in the storage unit of the corresponding second connection unit (4) by means of the processing subunit (3). Computer-implementiertes Verfahren zum Parallelisieren eines Datenzugriffs gemäß einem der vorstehenden Ansprüche, weiter umfassend ein Berechnen eines Hash-Werts unter Verwendung einer Hash-Funktion für jede Untermenge von Verarbeitungsdaten, insbesondere mittels der ersten Verarbeitungsobereinheit (1).Computer-implemented method for parallelizing data access according to one of the preceding claims, further comprising calculating a hash value using a hash function for each subset of processing data, in particular by means of the first upper processing unit (1). Computer-implementiertes Verfahren zum Parallelisieren eines Datenzugriffs gemäß Anspruch 6, wobei der Hash-Wert den Untermengenindex, welcher die Referenzdatenuntermengen den jeweiligen Verarbeitungsuntereinheiten (3) zuordnet, und den Datenschlüssel für die Referenzdaten umfasst.Computer-implemented method for parallelizing data access according to Claim 6 , wherein the hash value comprises the subset index, which assigns the reference data subsets to the respective processing subunits (3), and the data key for the reference data. Computer-implementiertes Verfahren zum Parallelisieren eines Datenzugriffs gemäß einem der vorstehenden Ansprüche, wobei die Referenzdaten nur in den Verarbeitungsuntereinheiten (3) gespeichert werden.Computer-implemented method for parallelizing data access according to one of the preceding claims, wherein the reference data is stored only in the processing subunits (3). Schaltung, insbesondere eine anwenderprogrammierbare integrierte Schaltung für einen parallelisierten Datenzugriff, aufweisend: • eine erste Verarbeitungsobereinheit (1), die eingerichtet ist, eine Menge von zu verarbeitenden Verarbeitungsdaten zu empfangen; • eine Mehrzahl von Verarbeitungsuntereinheiten (3), die eingerichtet sind, Untermengen von abzurufenden Referenzdaten zu speichern und abzurufen, wobei die Referenzdaten Datenschlüssel der Verarbeitungsdaten zu einem Datenwertergebnis, insbesondere als eine Nachschlagtabelle indizieren, wobei jede Verarbeitungsuntereinheit (3) eingerichtet ist, eine Referenzdatenuntermenge zu speichern und abzurufen; und • eine zweite Verarbeitungsobereinheit (5), die eingerichtet ist, Datenwertergebnisse, die zu den Datenschlüsseln korrespondieren, gemäß der Referenzdatenuntermenge als abgerufene Daten von den Verarbeitungsuntereinheiten (3) zu empfangen, und die eingerichtet ist, die Datenwertergebnisse zu aggregieren und die aggregierte Menge von abgerufenen Daten auszugeben, wobei • die erste Verarbeitungsobereinheit (1) eingerichtet ist, die Menge von Verarbeitungsdaten insbesondere über eine Hash-Funktion zu verarbeiten, und eingerichtet ist, unter Verwendung eines Untermengenindex, welcher die Referenzdatenuntermengen den jeweiligen Verarbeitungsuntereinheiten (3) zuordnet, die korrespondierende Untermenge von Verarbeitungsdaten in die korrespondierende Verarbeitungsuntereinheit (3) einzugeben.Circuit, in particular a user-programmable integrated circuit for parallelized data access, comprising: • a first upper processing unit (1) which is set up to receive a quantity of processing data to be processed; • a plurality of processing subunits (3) which are set up to store and retrieve subsets of reference data to be retrieved, the reference data indexing data keys of the processing data to a data value result, in particular as a lookup table, each processing subunit (3) being set up to assign a reference data subset store and retrieve; and • a second upper processing unit (5) which is set up to receive data value results corresponding to the data keys as retrieved data from the processing subunits (3) according to the reference data subset, and which is set up to aggregate the data value results and the aggregated set of retrieved to output data, where • the first upper processing unit (1) is set up to process the amount of processing data, in particular via a hash function, and is set up to convert the corresponding subset of processing data into the corresponding subset of processing data using a subset index, which assigns the reference data subsets to the respective processing subunits (3). to enter the corresponding processing subunit (3). Schaltung gemäß Anspruch 9, wobei die Schaltung eingerichtet ist, das Computer-implementierte Verfahren gemäß den Ansprüchen 1 bis 8 insbesondere auf eine vorbestimmte Menge von Verarbeitungsdaten oder einen Strom von Verarbeitungsdaten, die in die Schaltung eingegeben werden, auszuführen.Circuit according to Claim 9 , wherein the circuit is set up to implement the computer-implemented method according to Claims 1 until 8th in particular, to execute on a predetermined amount of processing data or a stream of processing data input into the circuit.
DE102022116882.4A 2022-07-06 2022-07-06 Computer-implemented method for parallelizing data access and circuit for parallelized data access Pending DE102022116882A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102022116882.4A DE102022116882A1 (en) 2022-07-06 2022-07-06 Computer-implemented method for parallelizing data access and circuit for parallelized data access

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102022116882.4A DE102022116882A1 (en) 2022-07-06 2022-07-06 Computer-implemented method for parallelizing data access and circuit for parallelized data access

Publications (1)

Publication Number Publication Date
DE102022116882A1 true DE102022116882A1 (en) 2024-01-11

Family

ID=89387159

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022116882.4A Pending DE102022116882A1 (en) 2022-07-06 2022-07-06 Computer-implemented method for parallelizing data access and circuit for parallelized data access

Country Status (1)

Country Link
DE (1) DE102022116882A1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220191261A1 (en) 2020-12-11 2022-06-16 Ocient Holdings LLC Processing messages based on key assignment data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220191261A1 (en) 2020-12-11 2022-06-16 Ocient Holdings LLC Processing messages based on key assignment data

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
FERREIRA, J. D. [et al.]: pLUTo: Enabling Massively Parallel Computation In DRAM via Lookup Tables, 25. November 2021. URL: https://arxiv.org/abs/2104.07699v2 [abgerufen am 16. März 2023]
KLAIBER, Michael J.: A Parallel and Resource-Efficient Single Lookup Connected Components Analysis Architecture for Reconfigurable Hardware, 2017. URL: http://michael-klaiber.de/Klaiber2016_A_Parallel_and_Resource-Efficient_Single_Lookup_Connected_Components_Analysis_Architecture_for_Reconfigurable_Hardware.pdf [abgerufen am 21. März 2023]

Similar Documents

Publication Publication Date Title
DE102016015773B3 (en) Multiple reading storage device
DE3011552C2 (en)
DE102005013322B3 (en) Data bit inversion flag generation circuit for double data rate synchronous dynamic RAM, has comparator to output flag based on comparison of total currents of two current generating units, where units and comparator include transistors
EP2758901B1 (en) Mechanism for updates in a database engine
DE2324731A1 (en) SOLID STATE MEMORY FOR MULTI-DIMENSIONAL ACCESS
DE3545125C2 (en)
DE102018122491A1 (en) SEMICONDUCTOR MEMORY DEVICE AND METHOD FOR OPERATING THE SAME
DE202012013462U1 (en) Data processing in a Mapreduce framework
DE102014003790A1 (en) Parallel device for high-compression high speed LZ77 tokenization and Huffman encoding for deflate compression
DE2445617A1 (en) HIERARCHICAL STORAGE ARRANGEMENT
DE112012005060B4 (en) Higher energy savings in storage arrays
DE10056827A1 (en) Method of using a data link between a source and a cache, esp. for computer multi-level cache memory, involves transmitting data from source to target along data link while the memory array is bypassed
DE112017006445T5 (en) Methods and apparatus for identifying a count of N-grams occurring in a corpus
DE112011104633B4 (en) Unit for determining the starting point for a search
DE102013205973A1 (en) Realizing performance optimization on storage adapters by performing hardware operations in bulk
DE102018129032A1 (en) HARDWARE ACCESSORIES FOR SQL SCANS
US7512911B1 (en) Method for creating a parameterized cell library dual-layered rule system for rapid technology migration
CN103064991A (en) Mass data clustering method
DE102022116882A1 (en) Computer-implemented method for parallelizing data access and circuit for parallelized data access
DE112017005197T5 (en) Hybrid compression scheme for efficiently storing synaptic weights in neuromorphic hardware cores
DE4210109C2 (en) Sorting device for sorting data and sorting method
DE2364865A1 (en) EXPANDED MEMORY ADDRESS FORMATION SYSTEM OF A DIGITAL COMPUTER SYSTEM
DE4302754C1 (en) Monolithic integrated data memory e.g. for access to data table or list - uses Hash function to generate memory address from data to be entered
DE102014105218A1 (en) Search device using finite automata for partial words
CN107506394A (en) Optimization method for eliminating big data standard relation connection redundancy

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication