DE102013109978A1 - Verfahren und Vorrichtung zum Vor-Auswählen, Filtern und Verteilen von Daten in Datenbank-Management-Systemen - Google Patents

Verfahren und Vorrichtung zum Vor-Auswählen, Filtern und Verteilen von Daten in Datenbank-Management-Systemen Download PDF

Info

Publication number
DE102013109978A1
DE102013109978A1 DE102013109978.5A DE102013109978A DE102013109978A1 DE 102013109978 A1 DE102013109978 A1 DE 102013109978A1 DE 102013109978 A DE102013109978 A DE 102013109978A DE 102013109978 A1 DE102013109978 A1 DE 102013109978A1
Authority
DE
Germany
Prior art keywords
memory
data blocks
data
stored
records
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102013109978.5A
Other languages
English (en)
Inventor
Markus Völp
Tomas Karnagel
Oliver Arnold
Benedikt Nöthen
Benjamin Schlegel
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.)
Technische Universitaet Dresden
Original Assignee
Technische Universitaet Dresden
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 Technische Universitaet Dresden filed Critical Technische Universitaet Dresden
Priority to DE102013109978.5A priority Critical patent/DE102013109978A1/de
Priority to PCT/EP2014/069154 priority patent/WO2015036387A1/de
Publication of DE102013109978A1 publication Critical patent/DE102013109978A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24544Join order optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Operations Research (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Bei einem Verfahren zum Verarbeiten von einem oder mehreren Datensätzen einer Mehrzahl von Datensätzen in einem Prozessorsystem mit einer Mehrzahl von Prozessoren, wobei jedem Prozessor mindestens ein lokaler Speicher zugeordnet ist, können aus einem lokalen Speicher, in dem eine Mehrzahl von Datensätzen gespeichert ist, mittels einer Steueranordnung ein oder mehrere Datensätze gemäß einem Auswählkriterium als eine Menge von Datensätzen ausgewählt werden; und die Menge von Datensätzen kann mittels der Steueranordnung in einem anderen lokalen Speicher gemäß einem Verteilungskriterium gespeichert werden. Die gespeicherte Menge von Datensätzen und eine andere Menge von Datensätzen können von dem dem anderen lokalen Speicher zugeordneten Prozessor verarbeitet werden.

Description

  • Verschiedene Ausführungsbeispiele betreffen ein Verfahren und eine Vorrichtung zum Vor-Auswählen, Filtern und Verteilen von Daten in Datenbank-Management-Systemen.
  • In einem System mit mehreren Prozessoren oder mehreren Prozessorkernen ist jedem Prozessor oder Prozessorkern mindestens ein prozessornaher Speicher, z.B. eine Hierarchie von lokalen Speichern oder Cache-Speichern, und mindestens eine Speichersteuerung, zugeordnet.
  • Ferner weist ein solches System ein oder mehrere Speicher auf, die von den Prozessoren weiter entfernt sind, z.B. Hauptspeicher, Festplatten-Speicher oder über eine Netzwerk-Schnittstelle angekoppelte Speicher.
  • Um effizienter auf den Speicher zugreifen zu können, sind üblicherweise Optimierungen vorgesehen, wie das so genannte Vorab-Laden (Prefetching) von Daten aus dem Speicher.
  • Anweisungen zum Vorab-Laden von Daten können von einem Prozessor, der Daten benötigt, oder von einem Prozessor, der einen Dienst zum Vorab-Laden zur Verfügung stellt, ausgegeben oder erteilt werden. Die erstere Variante wird als pull-basiert bezeichnet und die letztere Variante wird als push-basiert bezeichnet.
  • Push-basiertes Vorab-Laden von Daten kann prozessorseitig oder speicherseitig gesteuert werden. Bei einem prozessorseitigen Vorab-Laden ermittelt ein Prozessor, welche Daten zum Beispiel zukünftig benötigt werden könnten, und fordert diese Daten von einem Speicher an bevor sie benötigt werden. Bei einem speicherseitigen Vorab-Laden führt ein intelligenter Speicher oder eine entsprechende Speichersteuerung das Vorab-Laden für eine Anwendung aus, die auf einem Prozessor ausgeführt wird.
  • Eine Technik, um Daten oder Datenblöcke zwischen einem Speicher und einem Prozessor zu übertragen, ohne dass ein Prozessor (z.B. ein Prozessorkern auf dem das Betriebssystem läuft) in jeden Datentransfer involviert ist, ist der direkte Speicherzugriff (DMA, direct memory access). Der direkte Speicherzugriff entlastet nicht nur den Prozessor, sondern kann auch die Daten zu höheren Raten übertragen als wenn ein Prozessor die Daten aus dem Speicher lesen und schreiben würde.
  • Ein Datensatz weist in der Regel mehrere Datenblöcke auf. Die Datenblöcke eines Datensatzes können zusammenhängend und unmittelbar aufeinanderfolgend in einem Speicher gespeichert werden oder können nicht zusammenhängend in einem Speicher gespeichert werden, beispielsweise auf mehreren Speicherbänken eines Speichers oder in mehreren Speichern. Im letzteren Fall können Teilbereiche des Datensatzes zusammenhängend gespeichert sein, aber jeweils zwei zusammenhängend gespeicherte Teilbereiche des Datensatzes folgen nicht unmittelbar aufeinander beziehungsweise können auf mehrere Speicher oder Speicherbänke verteilt sein.
  • Daten zu verteilen und zu sammeln (auch als Verteile-und-Sammle oder scatter and gather bezeichnet) ist eine Technik, um Datenübertragungen von einem nicht zusammenhängenden Speicherblock zu einem anderen Speicherblock mittels einer Reihe kleinerer zusammenhängender Datenblock-Übertragungen bereitzustellen, wobei die jeweiligen Speicherblöcke in mehreren Speichern oder Speicherbänken liegen können. In anderen Worten werden bei Verteile-und-Sammle-Datenübertragungen logisch verbundene Daten von und zu Speicherregionen gesammelt oder verteilt, die nicht unmittelbar miteinander verbunden sein müssen.
  • Operationen zum Verteilen und Sammeln können speichergesteuert, üblicherweise Cache-gesteuert sein. Beispielsweise können Daten auf Komponenten der lokalen Speicher der Prozessorkerne verteilt und von dort gesammelt werden, beispielsweise Komponenten einer Speicherhierarchie, Sub-Cache-Komponenten einer Hierarchie von Cache-Speichern.
  • Das Verteilen und Sammeln der Daten wird üblicherweise mittels eines direkten Speicherzugriffs (DMA) durchgeführt.
  • Dabei werden mehrere DMA-Steuerungen, die lokal einem Prozessorkern zugeordnet sind, zu einem einzigen gemeinsamen Speicher mittels eines Netzwerks, zum Beispiel mittels eines auf-einem-Chip-Netzwerks (on-chip-network), verbunden. Das Verteilen und Sammeln wird von einem Prozessorkern gesteuert.
  • Bei einem Speicherzugriff oder während Daten übertragen werden, können die Daten verarbeitet werden. Beispielsweise können Aufgaben des Prozessors oder der Prozessoren zu Netzwerk-Schnittstellen-Karten oder einer Festplatten-Steuerung hin ausgelagert werden, zum Beispiel das Überprüfen der Integrität von Datenpaketen, das Komprimieren beziehungsweise Dekomprimieren von Daten oder das kryptografische Verschlüsseln oder Entschlüsseln von Daten, bevor diese zu oder von dem Hauptspeicher übertragen werden. Beispielsweise können Datenpakete, die mittels eines Netzwerks übertragen werden, mit einem Regel-basierten Filter gefiltert werden. Jedoch ist es wünschenswert, nicht nur paketweise übertragene Daten zu filtern oder allgemein zu verarbeiten sondern auch kontinuierlich übertragene Datenströme.
  • Eine Netzwerk-Schnittstellen-Karte oder eine Festplatten-Steuerung können mit einem direkten Speicher-Zugriff (DMA) ausgerüstet sein, welcher programmiert werden kann, um Daten von dem Speicher zu dem Hauptspeicher zu kopieren und zurück.
  • Das Auswählen der Daten vor ihrer Verarbeitung wird von Prozessorkernen der zentralen Verarbeitungseinheit (CPU, central processing unit) oder einer Grafikkarte durchführt.
  • Das Auswählen von Daten vor ihrer weiteren Verarbeitung, welches mittels der berechnenden Prozessoren oder Prozessorkerne durchgeführt wird, hat erhebliche Leistungs- und Verwaltungskosten, weil schwergewichtige Prozessorkerne mit einem eher trivialen Vorverarbeiten der Daten belegt werden.
  • Bei der Verarbeitung von Informationen, beispielsweise mittels Datenbanken, nehmen die Komplexität und das Datenvolumen stärker zu als die Hardwareentwicklung.
  • Bei einer Datenbank sind die Daten logisch in Tabellen abgespeichert, wobei eine Tabelle ein oder mehrere Datensätze aufweist. Eine Tabelle oder ein Teilbereich einer Tabelle kann über mehrere Datenbankknoten verteilt sein, das heißt über mehrere Teilbereiche einer Datenbank verteilt werden, wobei ein jeweiliger Datenbankteilbereich eigene Daten, Indizierungen und Konfigurationen aufweisen kann.
  • Beispielsweise können Datenfelder einer Tabelle mit gleichen Datenwerten nah beieinander gespeichert werden oder Tabellen in einem Datenbankteilbereich können jeweils auf mehrere Datenpartitionen oder Datenbereiche verteilt gespeichert werden. Wie die Daten zu verteilen sind, wählen üblicherweise Benutzer oder Anwendungsentwickler. Tabellen oder Datensätze, die auf mehrere Datenpartitionen verteilt sind, zum Beispiel große Tabellen, eignen sich gut für eine parallele Verarbeitung.
  • Jedoch werden die Tabellen, beispielsweise einer Datenbank, nicht wie beim Verteilen-und-Sammeln verteilt gespeichert, sondern im Speicher möglichst zusammenhängend gespeichert, um schnell auf nachfolgende Datenfelder oder Datensätze zugreifen zu können. Wenn eine Tabelle auf mehrere Datenpartitionen verteilt gespeichert wird, ist das eine absichtlich erstellte Aufbereitung der Tabelle, für deren Erstellung Rechenzeit aufgewendet wurde, um zum Beispiel häufige zukünftige Abfragen zu beschleunigen. Es handelt sich dabei nicht um ein Ergebnis oder Zwischenergebnis einer Berechnung für eine Abfrage, das noch irgendwo in den Speichern gespeichert ist, zum Beispiel dem lokalen Speicher eines Prozessors, zum Beispiel verteilt auf die Speicher oder Speicherbänke einer Hierarchie von lokalen Speichern, zum Beispiel Cache-Speichern.
  • Datenbankoperationen auf unterer Ebene, beispielsweise Auswahl, Projektion, Verbund, Sortierung, Gruppierung und Aggregation können in ihrer technischen Umsetzung einen Rechenschritt aufweisen, in dem Daten für die eigentliche Datenbankoperation vorverarbeitet werden, z.B. bestimmte Datensätze oder Datenfelder ausgewählt werden. Zum Beispiel können in der Vorverarbeitung Datenfelder, in anderen Worten ein Teilbereich eines Datensatzes, für einen Verbund ausgewählt werden. In herkömmlichen Datenbanksystemen wird das Auswählen der Daten oder irgendein Vorverarbeiten der Daten auf Prozessoren oder Prozessorkernen durchgeführt.
  • Die Datenpartitionen, auf denen Prozessorkerne die Vorauswahl durchführen, sind jedoch im Allgemeinen nicht dieselben wie die Datenpartitionen, auf denen die eigentlichen Datenbankoperationen durchgeführt werden. Es wird Energie und Leistung verschwendet, weil die Daten üblicherweise zunächst in lokale Speicher geladen werden, die Prozessorkernen zugeordnet sind, die die Vorauswahl durchführen, und von denen sie nach der Vorverarbeitung zu den Prozessorkernen verlegt werden müssen, welche die Datenbankoperationen durchführen.
  • Ferner werden bei herkömmlichen Systemen, nachdem die Datenbankoperationen durchgeführt wurden, die berechneten Daten nicht in dem lokalen Speicher behalten, zum Beispiel innerhalb der lokalen Speicherhierarchie eines Prozessors oder Prozessorkerns behalten, sondern in eine Datenbankpartition zurück geschrieben, die bei einem herkömmlichen System nicht in dem lokalen Speicher eines Prozessors oder Prozessorkerns liegt, z.B. der lokalen Speicher-Hierarchie, der Cache-Speicher-Hierarchie oder dem Cache-Speicher, sondern sich in einem von mehreren Prozessoren gemeinsamen genutzten oder zentralen Speicher befindet, zum Beispiel im Hauptspeicher.
  • In verschiedenen Ausführungsbeispielen wird anschaulich das Vorauswählen in Richtung des Speichers ausgelagert, wodurch überflüssige Datenübertragungen vermieden werden und Datenbankoperationen besser in Beschleunigungsstrukturen integriert werden können. Rechenoperatoren, zum Beispiel Datenbankoperationen auf unterer Ebene, werden in Bezug auf Energieeffizienz und Leistung verbessert.
  • In verschiedenen Ausführungsformen können die berechneten Daten nach einer Verarbeitung in den lokalen Speichern der Prozessoren oder Prozessorkerne gespeichert bleiben und dort zu einem späteren Zeitpunkt für die nächste Berechnung zunächst vorverarbeitet und dann zu einem anderen Prozessor oder einem anderen Speicher übertragen werden, anstelle sie nach jeder Berechnung in einen von mehreren Prozessoren gemeinsam genutzten Speicher zurückzuschreiben, beispielsweise in den Hauptspeicher.
  • In weiteren Ausführungsformen werden ein Verfahren und eine Vorrichtung zum Ausführen der Verarbeitung mit geringen Kosten bereitgestellt. Es wird ein Vorauswählen oder ein Filtern während der Datenübertragung zu den berechnenden Prozessorkernen durchgeführt, wobei die Steuerung über die Platzierung der Daten beibehalten wird, welche beispielsweise für eine Platzierung von Daten für Betriebssystem- oder Datenbank-gerichtete Operationen benötigt wird.
  • In verschiedenen Ausführungsformen wird das Vorauswählen oder Auswählen zu der Kommunikation zwischen den lokalen Speichern der berechnenden Prozessorkerne und einem oder mehreren gemeinsamen Speichern ausgelagert.
  • In verschiedenen Ausführungsformen wird das Vorauswählen oder Auswählen zu der Kommunikation zwischen den lokalen Speichern der berechnenden Prozessorkerne ausgelagert, beispielsweise zu der Kommunikation zwischen dem lokalen Speicher eines berechnenden Prozessorkerns und dem lokalen Speicher eines anderen berechnenden Prozessorkerns, in anderen Worten zu der Kern-zu-Kern-Kommunikation.
  • In weiteren Ausführungsformen kann das Verteilen-und-Sammeln speichergesteuert, zum Beispiel Cache-gesteuert, durchgeführt werden. Die Daten können auf lokale Speicher der Speicherhierarchie eines Prozessors oder Prozessorkerns verteilt und von dort gesammelt werden, zum Beispiel auf die einzelnen lokalen Speicher einer Cache-Hierarchie.
  • In verschiedenen Ausführungsformen wird der direkte Speicherzugriff (DMA, direct memory access) mittels eines Schaltkreis-Blocks erweitert der feste Funktionen ausführt und der ein Sender-seitiges Filtern, Vorauswählen und/oder Verteilen ausführt. Senderseitig wird gesteuert, in welchem Zielspeicher die vorausgewählten Daten gespeichert werden sollen, beispielsweise einem lokalen Speicher eines Prozessorkerns, zum Beispiel einen Cache-Speicher.
  • Bei einem Verfahren zum Verarbeiten von einem oder mehreren Datenblöcken einer Mehrzahl von Datenblöcken in einem Prozessorsystem mit einer Mehrzahl von Prozessoren, wobei jedem Prozessor mindestens ein lokaler Speicher zugeordnet ist, können aus einem ersten Speicher, in dem eine erste Mehrzahl von Datenblöcken gespeichert ist, ein oder mehrere Datenblöcke gemäß einem ersten Auswählkriterium als eine erste Menge von Datenblöcken ausgewählt werden; und die erste Menge von Datenblöcken kann in einem ersten lokalen Speicher gemäß einem ersten Verteilungskriterium gespeichert werden. Ferner können bei dem Verfahren aus dem ersten Speicher und/oder aus einem zweiten Speicher, in dem eine zweite Mehrzahl von Datenblöcken gespeichert ist, ein oder mehrere Datenblöcke gemäß einem zweiten Auswählkriterium als eine zweite Menge von Datenblöcken ausgewählt werden; und bei dem Verfahren kann die zweite Menge von Datenblöcken in einem zweiten lokalen Speicher gemäß einem zweiten Verteilungskriterium gespeichert werden. Des Weiteren können bei dem Verfahren mittels einer Steueranordnung aus der in dem zweiten lokalen Speicher gespeicherten zweiten Menge von Datenblöcken ein oder mehrere Datenblöcke gemäß einem dritten Auswählkriterium als eine dritte Menge von Datenblöcken ausgewählt werden; es kann mittels der Steueranordnung die dritte Menge von Datenblöcken in den ersten lokalen Speicher gemäß einem dritten Verteilungskriterium gespeichert werden; und die erste Menge von Datenblöcken und die dritte Menge von Datenblöcken können von dem dem ersten lokalen Speicher zugeordneten Prozessor verarbeitet werden.
  • Eine Vorrichtung zum Verarbeiten von einem oder mehreren Datenblöcken einer Mehrzahl von Datenblöcken in einem Prozessorsystem mit einer Mehrzahl von Prozessoren, wobei jedem Prozessor mindestens ein lokaler Speicher zugeordnet ist, kann eine Auswählanordnung aufweisen, die eingerichtet ist, aus einem ersten Speicher, in dem eine erste Mehrzahl von Datensätzen gespeichert ist, ein oder mehrere Datenblöcke gemäß einem ersten Auswählkriterium als eine erste Menge von Datenblöcken auszuwählen; und kann eine Verteilungsanordnung aufweisen, die eingerichtet ist, die erste Menge von Datenblöcken in einem ersten lokalen Speicher gemäß einem ersten Verteilungskriterium zu speichern. Ferner kann die Auswählanordnung eingerichtet sein, aus dem ersten Speicher und/oder aus einem zweiten Speicher, in dem eine zweite Mehrzahl von Datenblöcken gespeichert ist, ein oder mehrere Datenblöcke gemäß einem zweiten Auswählkriterium als eine zweite Menge von Datenblöcken auszuwählen; und die Verteilungsanordnung kann eingerichtet sein, die zweite Menge von Datenblöcken in einem zweiten lokalen Speicher gemäß einem zweiten Verteilungskriterium zu speichern. Des Weiteren kann die Vorrichtung eine Steueranordnung aufweisen, die eingerichtet ist, aus der in dem zweiten lokalen Speicher gespeicherten zweiten Menge von Datenblöcken ein oder mehrere Datenblöcke gemäß einem dritten Auswählkriterium als eine dritte Menge von Datenblöcken auszuwählen. Die Steueranordnung kann eingerichtet sein, die dritte Menge von Datenblöcken in den ersten lokalen Speicher gemäß einem dritten Verteilungskriterium zu speichern. Die Vorrichtung kann ferner einen Prozessor aufweisen, der dem ersten lokalen Speicher zugeordnet ist und der eingerichtet ist, die erste Menge von Datenblöcken und die dritte Menge von Datenblöcken zu verarbeiten.
  • In einer Ausgestaltung kann die Auswählanordnung auf mehrere Auswähleinrichtungen verteilt sein, wobei jede Auswähleinrichtung mit ein oder mehreren Speichern verbunden ist.
  • In einer Ausgestaltung kann die Verteilungsanordnung auf mehrere Verteilungseinrichtungen verteilt sein, wobei jede Verteilungseinrichtung mit ein oder mehreren Speichern verbunden ist.
  • In einer Ausgestaltung kann die Verteilungsanordnung eingerichtet sein, die jeweilige Menge von Datenblöcken an einen jeweiligen lokalen Speicher gemäß einem jeweiligen Verteilungskriterium zu verteilen.
  • In einer Ausgestaltung kann die Steueranordnung auf mehrere Steuereinrichtungen verteilt sein, wobei jede Steuereinrichtung mit ein oder mehreren lokalen Speichern verbunden ist.
  • In einer Ausgestaltung kann das Verfahren mehrfach durchgeführt werden, so dass aus dem ersten Speicher, in dem die erste Mehrzahl von Datenblöcken gespeichert ist, weitere ein oder mehrere Datenblöcke gemäß dem ersten Auswählkriterium als eine weitere erste Menge von Datenblöcken ausgewählt werden können; die weitere erste Menge von Datenblöcken in einem weiteren ersten lokalen Speicher gemäß einem weiteren ersten Verteilungskriterium gespeichert werden kann; aus dem ersten Speicher und/oder aus dem zweiten Speicher, in dem die zweite Mehrzahl von Datenblöcken gespeichert ist, weitere ein oder mehrere Datenblöcke gemäß dem zweiten Auswählkriterium als eine weitere zweite Menge von Datenblöcken ausgewählt werden können; und die weitere zweite Menge von Datenblöcken in einem weiteren zweiten lokalen Speicher gemäß einem weiteren zweiten Verteilungskriterium gespeichert werden kann. Ferner können mittels einer Steueranordnung aus der in dem weiteren zweiten lokalen Speicher gespeicherten weiteren zweiten Menge von Datenblöcken ein oder mehrere Datenblöcke gemäß dem dritten Auswählkriterium als eine weitere dritte Menge von Datenblöcken ausgewählt werden; mittels der Steueranordnung können die weitere dritte Menge von Datenblöcken in einem ersten lokalen Speicher gemäß einem weiteren dritten Verteilungskriterium gespeichert werden; und die weitere erste Menge von Datenblöcken und eine dritte Menge von Datenblöcken können von dem dem weiteren ersten lokalen Speicher zugeordneten Prozessor verarbeitet werden.
  • Eine erste Menge von Datenblöcken und eine weitere erste Menge von Datenblöcken können gemäß einem ersten Auswählkriterium ausgewählt werden. Die erste Menge von Datenblöcken wird gemäß einem ersten Verteilungskriterium an einen ersten lokalen Speicher gesendet und gespeichert. Eine weitere erste Menge von Datenblöcken wird gemäß einem weiteren ersten Verteilungskriterium an einen weiteren ersten lokalen Speicher gesendet und dort gespeichert. Analog werden zweite Mengen von Datenblöcken ausgewählt, gesendet und gespeichert.
  • In einem nächsten Schritt werden aus den zweiten Mengen von Datenblöcken, die in zweiten lokalen Speichern gespeichert sind, gemäß einem dritten Auswählkriterium dritte Mengen von Datenblöcken ausgewählt. Die dritten Mengen von Datenblöcken werden zu den ersten lokalen Speichern gesendet und gespeichert, in denen die ersten Mengen von Datenblöcken gespeichert werden. Es können jeweils eine erste Menge von Datenblöcken und eine dritte Menge von Datenblöcken, welche in demselben ersten lokalen Speicher gespeichert sind, von einem diesem Speicher zugeordneten Prozessor verarbeitet werden.
  • In einer weiteren Ausgestaltung kann der erste Speicher ein lokaler Speicher sein. Ein lokaler Speicher ist mit einen Prozessor oder einen Prozessorkern gekoppelt und in der Nähe des Prozessors oder Prozessorkerns angeordnet, um einen schnellen Zugriff auf den lokalen Speicher von dem Prozessor oder Prozessorkern aus zu ermöglichen.
  • In einer weiteren Ausgestaltung kann der erste Speicher ein gemeinsamer Speicher sein, beispielsweise ein Hauptspeicher oder eine Festplatte. Auf einen gemeinsamen Speicher können mehrere Prozessoren oder Prozessorkerne zugreifen, zum Beispiele alle Prozessoren eines Rechners oder Rechnersytems oder eine Teilmenge der Prozessoren.
  • In noch einer Ausgestaltung kann der zweite Speicher ein lokaler Speicher sein.
  • In noch einer Ausgestaltung kann der zweite Speicher gemeinsamer Speicher sein, beispielsweise ein Hauptspeicher oder eine Festplatte.
  • Beispielsweise kann in einem Speicher, zum Beispiel einem gemeinsamen Speicher wie einem Hauptspeicher oder eine Festplatte, eine Vielzahl von Datenblöcken gespeichert sein.
  • In noch einer Ausgestaltung können ein erster lokaler Speicher und ein zweiter lokaler Speicher derselbe lokale Speicher sein. Zum Beispiel können eine erste Menge von Datenblöcken und eine zweite Menge von Datenblöcken an denselben lokalen Speicher gesendet und dort gespeichert werden. Eine andere erste Menge von Datenblöcken und eine andere zweite Menge von Datenblöcken hingegen können jeweils an verschiedene lokale Speicher gesendet und dort gespeichert werden.
  • In noch einer Ausgestaltung können ein erster lokaler Speicher und ein zweiter lokaler Speicher verschiedene lokale Speicher sein.
  • In noch einer Ausgestaltung kann die Mehrzahl der Datenblöcke zusammenhängend gespeichert sein.
  • In noch einer Ausgestaltung kann die Mehrzahl der Datenblöcke nicht zusammenhängend gespeichert sein.
  • In noch einer Ausgestaltung kann die Mehrzahl der Datenblöcke auf mehrere Speicherbänke verteilt gespeichert sein. Die Mehrzahl der Datenblöcke kann auch auf mehrere Speicher verteilt sein.
  • In noch einer Ausgestaltung kann die Menge der Datenblöcke zusammenhängend gespeichert sein.
  • In noch einer Ausgestaltung kann die Menge der Datenblöcke nicht zusammenhängend gespeichert sein. Beispielsweise kann die Menge der Datenblöcke auf mehrere Speicherbänke oder Speicher verteilt gespeichert sein.
  • In noch einer Ausgestaltung können ein oder mehrere Datenblöcke zu einem Datensatz gruppiert oder verknüpft sein. Beispielsweise können logisch verknüpfte Datenblöcke, die einen logischen Zusammenhang beschreiben, zu einem Datensatz gruppiert oder verknüpft sein.
  • In noch einer Ausgestaltung können ein oder mehrere Datensätze zu einer Menge von Datensätzen gruppiert oder verknüpft sein. Beispielsweise können logisch verknüpfte Datensätze, zum Beispiel Datensätze die dieselbe logische Struktur aufweisen, wie zum Beispiel die Datensätze einer Tabelle einer Datenbank, zu einem Datensatz gruppiert oder verknüpft sein.
  • In noch einer Ausgestaltung kann das Auswählkriterium aufweisen zu ermitteln, welche ein oder mehreren Datenblöcke einer Menge von Datensätzen in mindestens einem Speicher gespeichert werden sollen und zu ermitteln, ob ein jeweiliger Datensatz verarbeitet werden soll.
  • In noch einer Ausgestaltung können ein oder mehrere Datenblöcke ausgewählt werden anhand derer ermittelt wird, ob der Datensatz verarbeitet wird.
  • In noch einer Ausgestaltung können die ein oder mehreren Datenblöcke anhand derer ermittelt wird, ob der Datensatz verarbeitet wird, mittels einer Auswählschablone ausgewählt werden. Die Auswählschablone gibt an, welche Datenblöcke, zum Beispiel welcher Teilbereich eines jeweiligen Datensatzes, bei dem Auswählen berücksichtigt werden.
  • In noch einer Ausgestaltung kann eine Auswähloperation die ein oder mehreren Datenblöcke, anhand derer ermittelt wird, ob der Datensatz verarbeitet wird, mit einem Auswähloperanden vergleichen. Die Auswähloperation kann den Teilbereich eines jeweiligen Datensatzes mit einem Auswähloperanden vergleichen.
  • In noch einer Ausgestaltung kann die Auswähloperation eine der folgenden Operationen sein: größer als, kleiner als, größer oder gleich als, gleich, kleiner oder gleich als, ungleich oder wahr.
  • In noch einer Ausgestaltung können ein oder mehrere Datenblöcke ausgewählt werden anhand derer ermittelt wird, in welchem mindestens einem Speicher der Datensatz oder ein Teilbereich des Datensatzes gespeichert werden soll.
  • In noch einer Ausgestaltung können die ein oder mehreren Datenblöcke, anhand derer ermittelt wird, in welchem mindestens einem Speicher der Datensatz oder ein Teilbereich des Datensatzes gespeichert werden soll, mittels einer Verteilungsschablone ermittelt werden. Die Verteilungsschablone gibt an, mittels welchen Teilbereichs eines jeweiligen Datensatzes ermittelt wird, zu welchem Speicher der Datensatz gesendet wird.
  • In noch einer Ausgestaltung kann das Verteilungskriterium mittels der ein oder mehreren Datenblöcke, anhand derer ermittelt wird, in welchem mindestens einem Speicher ein Datensatz oder ein Teilbereich des Datensatzes gespeichert werden soll, und einer Verteilungszuordnung ermittelt werden.
  • Das Verteilungskriterium gibt beispielsweise an, auf welche Speicher die Mehrzahl von Datenblöcken verteilt werden sollen, zum Beispiel auf welche Speicher eine Tabelle oder eine Menge von Datensätzen verteilt wird. Beispielsweise können ein oder mehrere Datenblöcke eines Datensatzes als Argument für eine Verteilungszuordnung oder Verteilungsfunktion dienen. Die Datenwerte, die diese ein oder mehreren Datenblöcke aufweisen, können dabei zu einem Datenwert oder Wert zusammengefasst sein, beispielsweise zu einem Vektor oder einem Wort. Das Ergebnis, welches mittels der Verteilungszuordnung ermittelt wird, gibt an, in welchem mindestens einen Speicher der Datensatz gespeichert werden soll. Anschaulich kann eine Menge von Datensätzen in Teilmengen aufgeteilt werden, die auf verschiedene Speicher verteilt werden. Eine Menge oder Teilmenge von Datensätzen kann aber auch auf mehrere Speicher dupliziert werden.
  • In noch einer Ausgestaltung kann die Verteilungszuordnung jedem Wert, den die ein oder mehreren Datenblöcke annehmen können, anhand derer ermittelt wird, in welchem mindestens einen Speicher der Datensatz oder ein Teilbereich des Datensatzes gespeichert werden soll, mindestens eine Kennzeichnung zuordnen, die jeweils die empfangende Steueranordnung und/oder einen Empfangskanals angibt, beispielsweise eine Adresse der empfangenden Steueranordnung und/oder eine Identität eines Empfangskanals angibt.
  • In noch einer Ausgestaltung können die Adresse der empfangenden Steueranordnung und die Identität eines Empfangskanals in eine Adresse zusammengefügt sein.
  • In noch einer Ausgestaltung können ein oder mehrere Datenblöcke eines Datensatzes ausgewählt werden, um in mindestens einem Speicher gespeichert zu werden, zum Beispiel in einem anderen Speicher gespeichert zu werden. Es muss also nicht unbedingt der vollständige Datensatz übertragen werden, sondern es ist auch möglich, lediglich einen Teilbereich des ursprünglich gespeicherten Datensatzes an einen Speicher zu senden (oder zu übertragen) und dort zu speichern.
  • In noch einer Ausgestaltung können die ein oder mehreren Datenblöcke mittels einer Übertragungsschablone ausgewählt werden, um in mindestens einem Speicher gespeichert zu werden. Die Übertragungsschablone gibt an, welcher Teilbereich eines jeweiligen Datensatzes übertragen werden soll, z.B. zu einem anderen Speicher gesendet und dort gespeichert werden soll.
  • In noch einer Ausgestaltung können ein oder mehrere Datenblöcke nicht zusammenhängend sein, beispielsweise ein oder mehrere Teilbereiche eines Datensatzes, welche zum Auswählen eines Datensatzes oder Verteilen eines Datensatzes betrachtet werden oder welche übertragen werden.
  • In noch einer Ausgestaltung können ein oder mehrere Datensätze mittels des Auswählkriteriums ausgewählt werden, um in mindestens einem Speicher gespeichert zu werden, zum Beispiel einem anderen Speicher. Es können auch alle Datensätze der Menge der Datensätze ausgewählt werden.
  • In noch einer Ausgestaltung kann das erste Verteilungskriterium dem dritten Verteilungskriterium entsprechen; die Datenblöcke, auf die das erste oder dritte Verteilungskriterium basiert ist, können in den zu speichernden Datenblöcken aufgewiesen werden; und jeweils zwei Datensätze aus der ersten und der dritten Menge von Datenblöcken von dem dem lokalen Speicher zugeordneten Prozessor verarbeitet werden.
  • Beispielsweise können zwei Datensätze aus je einer Menge von Datensätzen auf Übereinstimmung mindestens eines Datenblocks überprüft werden und die ein oder mehreren Datenblöcke, auf die das Verteilungskriterium basiert ist, sind in diesem mindestens einen Datenblock enthalten. Ferner ist dieser mindestens eine Datenblock in den ein oder mehreren Datenblöcken enthalten, die übertragen werden. Die beiden Datensätze können auch mittels einer anderen Operation miteinander verglichen werden, zum Beispiel kleiner, kleiner als, größer, größer als oder ungleich.
  • In einer anderen Ausführungsform wird die dritte Menge von Datensätzen in mehreren lokalen Speichern gespeichert, wobei jeweils nach dem Speichern alle diese mehreren lokalen Speicher dieselbe dritte Menge von Datensätzen aufweisen. Jedem dieser lokalen Speicher ist ein Prozessor zugeordnet und diese Prozessoren verarbeiten jeweils eine erste Menge von Datensätzen und ihre lokale Kopie der dritten Menge von Datensätzen.
  • In noch einer Ausgestaltung können die Auswählschablone, die Verteilungsschablone und/oder die Übertragungsschablone jeweils eine Einzahl oder Mehrzahl von Tupeln aufweisen, die jeweils eine Startposition eines Bereichs von ein oder mehreren Datenblöcken und eine Angabe bezüglich einer Endposition des Bereichs aufweisen. Beispielsweise kann ein Eintrag des Tupels die Speicheradresse des ersten und letzten Bits des Bereichs aufweisen. Der Eintrag kann auch die Speicheradresse des ersten Bits und die Größe des Bereichs aufweisen. Wenn der Bereich zusammenhängend ist, reicht ein Eintrag, um den Bereich anzugeben. Wenn der Bereich nicht zusammenhängend ist, kann das Tupel einen Eintrag für jeden zusammenhängenden Teilbereich des Bereichs aufweisen.
  • In noch einer Ausgestaltung können die Auswählschablone, die Verteilungsschablone und/oder die Übertragungsschablone jeweils eine maskierende Bitfolge aufweisen, welche Positionen von ein oder mehreren Einträgen eines Datensatzes angibt. Beispielsweise kann die maskierende Bitfolge ein binärer Vektor sein.
  • In noch einer Ausgestaltung können die Positionen der ein oder mehreren Einträge zu einem Wert zusammengefügt sein.
  • In noch einer Ausgestaltung kann der Auswähloperand mindestens so viele Einträge, zum Beispiel Bits, aufweisen, wie in der Auswählschablone angegeben werden können. Beispielsweise können das Wort oder der Vektor, welche aus dem Teilbereich gebildet werden können, dieselbe Länge wie der Auswähloperand aufweisen.
  • In noch einer Ausgestaltung können die ein oder mehreren Datenblöcke aus dem ersten oder zweiten Speicher, in dem eine Mehrzahl von Datenblöcken gespeichert ist, mittels einer Steueranordnung ausgewählt werden. Zum Beispiel können auch der erste und/oder zweite Speicher ein Speicher sein, der eine Steueranordnung aufweist, auf der das Auswählen gemäß einer Ausführungsform durchgeführt werden kann.
  • In noch einer Ausgestaltung kann die Steueranordnung eine direkte Speicherzugriff(DMA, direct memory access)-Steuerung aufweisen.
  • In noch einer Ausgestaltung kann die Steueranordnung mit einer Feld programmierbaren Gatter-Anordnung (FPGA, field programmable gate array) gekoppelt sein.
  • In noch einer Ausgestaltung kann die Steueranordnung mindestens einen Sendekanal und mindestens einen Empfangskanal aufweisen.
  • In noch einer Ausgestaltung können mehrere Sendekanäle zu einem Empfangskanal senden.
  • In noch einer Ausgestaltung kann ein Sendekanal zu mehreren Empfangskanälen senden.
  • In einer weiteren Ausführungsform können ein oder mehrere Datenblöcke kontinuierlich gesendet werden, zum Beispiel in einem Datenstrom.
  • In einer weiteren Ausführungsform können ein oder mehrere Datenblöcke nicht kontinuierlich gesendet werden, beispielsweise paketweise.
  • In einer weiteren Ausführungsform können ein oder mehrere Datenblöcke in einer Nachricht gesendet werden, die die Datenblöcke und deren Speichergröße aufweisen kann. Beispielsweise können alle Datenblöcke eines Datensatzes in einer Nachricht gesendet werden, in mehreren Nachrichten übertragen werden oder es können die Datenblöcke mehrerer Datensätze, zum Beispiel mehrere Datensätze einer Menge von Datensätzen, in einer einzigen Nachricht gesendet werden.
  • In einer weiteren Ausführungsform kann eine Nachricht empfangen werden, die die ein oder mehreren Datenblöcke und deren Speichergröße aufweist.
  • In noch einer Ausgestaltung kann der Empfangskanal eine Datenstruktur aufweisen, die eine Speicheradresse, an der die zu empfangenen ein oder mehreren Datenblöcke gespeichert werden, und einen Wert aufweist, der den an dieser Adresse verfügbaren Speicherplatz angibt.
  • In noch einer Ausgestaltung kann der Empfangskanal die empfangenen ein oder mehreren Datenblöcke an der Speicheradresse speichern, wobei die Speicheradresse um die Speichergröße der empfangenen ein oder mehreren Datenblöcke vergrößert wird und der Wert um die Speichergröße der empfangenen ein oder mehreren Datenblöcke verkleinert wird.
  • In noch einer Ausgestaltung kann der Empfangskanal einen Abbruch signalisieren, wenn kein Speicherplatz zum Speichern der empfangenen ein oder mehreren Datenblöcke verfügbar ist.
  • In noch einer Ausgestaltung kann ein Betriebssystem steuern, welche Prozessoren zum Durchführen des Verfahrens verwendet werden dürfen.
  • In noch einer Ausgestaltung kann ein Datenbanksystem ermitteln oder steuern, welche Prozessoren zum Durchführen des Verfahrens verwendet werden dürfen.
  • In noch einer Ausgestaltung können Software-Anwendungen mitteilen, welche Prozessoren zum Durchführen des Verfahrens verwendet werden dürfen, in anderen Worten wie das Verteilen der Datenblöcke auf die Prozessoren geschehen soll.
  • In noch einer Ausgestaltung kann von dem Betriebssystem eine Nutzungsschnittstelle zwischen dem Betriebssystem und Software-Anwendungen und eine Konfigurationsschnittelle zwischen dem Betriebssystem und der Hardware bereitgestellt werden. Mittels der Nutzungsschnittstelle teilen Software-Anwendungen mit, wie die Datenblöcke auf die Prozessoren verteilt oder aufgeteilt werden sollen. Mittels der Konfigurationsschnittstelle konfiguriert das Betriebssystem die Speichersteuerungen oder Recheneinheiten, beispielsweis die Sendekanäle. Dabei kann das Betriebssystem Konflikte wie zum Beispiel ein mehrfaches gleichzeitiges Verteilen von Datenblöcken auf denselben Prozessor auflösen.
  • In noch einer Ausgestaltung kann der Sendekanal eine Datenstruktur mit den folgenden Elementen aufweisen: Schrittweite, Auswählschablone, Auswähloperation, Auswähloperand, Verteilungsschablone, Verteilungszuordnung, Übertragungsschablone, Speicheradresse, Speichergröße.
  • In einer weiteren Ausführungsform können mittels der Steueranordnung ein Sendekanal aktiviert, die Datenstruktur des Sendekanals initialisiert, in dem Speicher zu der Speicheradresse gesprungen und zum Senden einer jeweiligen Menge von Datenblöcken die folgenden Schritte durchgeführt werden:
    • – Laden von ersten ein oder mehreren Datenblöcken aus dem Speicher, welche mittels der Auswählschablone angegeben werden; und
    • – Auswerten des Auswähloperators basierend auf den ersten ein oder mehreren Datenblöcken und dem Auswähloperanden.
  • Wenn das Ergebnis des Auswähloperators wahr ist können mittels der Steueranordnung die weiteren Schritte durchführt werden:
    • – Laden von zweiten ein oder mehreren Datenblöcken aus dem Speicher, welche mittels der Verteilungsschablone angegeben werden;
    • – Ermitteln des Empfangskanals oder der Adresse des Empfangskanals mittels der zweiten ein oder mehreren Datenblöcke und der Verteilungszuordnung;
    • – Laden von dritten ein oder mehreren Datenblöcken aus dem Speicher, welche mittels der Übertragungsschablone angegeben werden; und
    • – Senden der dritten ein oder mehreren Datenblöcke mittels des Sendekanals zu dem Empfangskanal.
  • In welcher Reihenfolge die ersten drei der in dem vorangehenden Absatz genannten Schritte durchgeführt werden, kann beliebig sein. Zum Beispiel können zuerst die dritten an einen Speicher zu sendenden und zu speichernden Datenblöcke ermittelt und geladen werden und danach die zweiten Datenblöcke ermittelt werden oder umgekehrt.
  • Nach diesen Schritten oder wenn das Ergebnis des Auswähloperators falsch ist, kann mittels der Steueranordnung in dem Speicher zu einer Speicheradresse eine Schrittweite weiter gesprungen werden und die Speichergröße kann um die Schrittweite verringert werden.
  • Wenn die Speichergröße danach positiv ist, können mittels der Steueranordnung die Schritte zum Senden erneut durchgeführt werden, zum Beispiel gemäß einer Ablaufplanung.
  • In noch einer Ausgestaltung können mittels der Steueranordnung der Sendekanal deaktiviert werden und das Betriebssystem bezüglich eines abgeschlossenen Sendens einer Menge von Datenblöcken informiert werden, wenn die Speichergröße danach null oder negativ ist. Beispielsweise kann dieser Schritt ausgeführt werden, wenn alle Datensätze oder die komplette Menge der Datensätze, die von dem Sendekanal verarbeitet werden oder wird, zusammenhängend gespeichert ist.
  • In noch einer Ausgestaltung können mittels der Steueranordnung die Schrittweite, die Speicheradresse und die Speichergröße für eine nächste Mehrzahl von Datenblöcken initialisiert werden, wenn die Speichergröße nach dem Verringern null oder negativ ist, und, wenn keine nächste Mehrzahl von Datenblöcken existiert, der Sendekanal deaktiviert und das Betriebssystem bezüglich eines abgeschlossenen Sendens einer Menge von Datenblöcken informiert werden. Beispielsweise kann dieser Schritt ausgeführt werden, wenn die Datenblöcke, die von dem Sendekanal verarbeitet werden, nicht zusammenhängend gespeichert sind.
  • In noch einer Ausgestaltung kann das Betriebssystem mittels eines Interrupts informiert werden.
  • In noch einer Ausgestaltung kann ein Auslöser oder Trigger erniedrigt werden und das Betriebssystem mittels eines Interrupts informiert werden, wenn der Auslöser oder der Trigger den Wert null erreicht.
  • In noch einer Ausgestaltung kann der Auslöser mittels eines dedizierten Registers des Prozessorkerns implementiert sein, auf dem das Betriebssystem durchgeführt wird.
  • In noch einer Ausgestaltung kann das Auswählen eines oder mehrerer Datenblöcke auf derselben logischen Dateneinteilung durchgeführt werden wie die Verarbeitung. Zum Beispiel kann das Auswählen eines oder mehrerer Datenblöcke auf derselben Datenpartition oder Partitionierung durchgeführt werden, wie die Verarbeitung. Beispielsweise kann in einem lokalen Speicher bereits eine Menge von Datenblöcken oder Datensätzen gespeichert sein. An diesen Speicher werden weitere Datenblöcke, z.B. einer weiteren Menge von Datensätzen, gesendet. Ein Prozessorkern, dem dieser Speicher zugeordnet ist führt auf der Menge der Datensätze, eventuell auch in Kombination mit der weiteren Menge von Datensätzen, Berechnungen durch. Mittels einer Steueranordnung können aber aus diesem lokalen Speicher auch Datensätze ausgewählt und an einen anderen Speicher gesendet werden, zum Beispiel an einen anderen lokalen Speicher mit einem Prozessor.
  • In noch einer Ausgestaltung kann die Verarbeitung mittels eines Mehrzweck-Prozessors durchgeführt werden.
  • In noch einer Ausgestaltung kann die Verarbeitung mittels eines spezialisierten Prozessors durchgeführt werden.
  • In noch einer Ausgestaltung kann die Verarbeitung mittels eines Prozessorkerns durchgeführt werden.
  • In noch einer Ausgestaltung können die Leistungsfähigkeit oder Spezialisierung des Prozessors und/oder die Größe des lokalen Speichers bei der Verteilung der ein oder mehreren Datenblöcke berücksichtigt werden. Beispielsweise kann das Verteilungskriterium derart vorermittelt werden, dass Datensätze oder eine jeweilige Menge der Datensätze entsprechend ihrer Anzahl, ihres Volumens oder der Komplexität nachfolgender Rechenoperationen verteilt werden, zum Beispiel optimal oder möglichst optimal verteilt werden.
  • Die Ausgestaltungen, die im Zusammenhang mit dem Verfahren zum Verarbeiten von einem oder mehreren Datenblöcken einer Mehrzahl von Datenblöcken in einem Prozessorsystem mit mehreren Prozessoren beschrieben sind, gelten sinngemäß auch für die Vorrichtung und umgekehrt.
  • Ausführungsbeispiele der Erfindung sind in den Figuren dargestellt und werden im Folgenden näher erläutert.
  • Es zeigen
  • 1 eine Architektur mit Prozessor-Einheiten, Prozessorkernen und Speichern gemäß verschiedenen Ausführungsbeispielen;
  • 2 eine Architektur mit Prozessorkernen und Speichern, welche mittels eines Netzwerks gekoppelt sind, gemäß verschiedenen Ausführungsbeispielen;
  • 3 eine Architektur des direkten Speicherzugriffs (DMA, direct memory access) mit Sende- und Empfangskanälen gemäß verschiedenen Ausführungsbeispielen;
  • 4 ein Diagramm einer Übertragung von Daten aus einem Speicher zu einem anderen Speicher gemäß verschiedenen Ausführungsbeispielen;
  • 5 ein Diagramm eines Verteilens von Daten an zwei Speicher mit einer Rechenvorrichtung gemäß verschiedenen Ausführungsbeispielen;
  • 6 ein Flussdiagramm eines Verfahrens zum Auswählen und Verteilen von Datenblöcken gemäß verschiedenen Ausführungsbeispielen;
  • 7 ein Diagramm zum Verteilen von Daten an lokale Speicher gemäß verschiedenen Ausführungsbeispielen; und
  • 8 ein Diagramm zum Verteilen von Daten an lokale Speicher gemäß verschiedenen Ausführungsbeispielen.
  • In der folgenden ausführlichen Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die Teil dieser bilden und in denen zur Veranschaulichung spezifische Ausführungsformen gezeigt sind, in denen die Erfindung ausgeübt werden kann. Es versteht sich, dass andere Ausführungsformen benutzt und strukturelle oder logische Änderungen vorgenommen werden können, ohne von dem Schutzumfang der vorliegenden Erfindung abzuweichen. Es versteht sich, dass die Merkmale der hierin beschriebenen verschiedenen beispielhaften Ausführungsformen miteinander kombiniert werden können, sofern nicht spezifisch anders angegeben. Die folgende ausführliche Beschreibung ist deshalb nicht in einschränkendem Sinne aufzufassen, und der Schutzumfang der vorliegenden Erfindung wird durch die angefügten Ansprüche definiert.
  • Im Rahmen dieser Beschreibung werden die Begriffe "verbunden", "angeschlossen" sowie "gekoppelt" verwendet zum Beschreiben sowohl einer direkten als auch einer indirekten Verbindung, eines direkten oder indirekten Anschlusses sowie einer direkten oder indirekten Kopplung.
  • 1 zeigt eine Architektur 100 mit ein oder mehreren Prozessor-Einheiten 102, welche matrix-artig angeordnet sein können. Eine jeweilige Prozessor-Einheit 102 kann ein oder mehrere Prozessorkerne 104 aufweisen, wobei jeder Prozessorkern 104 mit einer Hierarchie von lokalen Speichern gekoppelt sein kann, zum Beispiel mit einem ersten lokalen Speicher 106 und einem zweiten lokalen Speicher 108 (allgemein mit einer beliebigen Anzahl von lokalen Speichern). Der erste lokale Speicher 106 kann nur einem einzigen Prozessorkern 104 zugeordnet sein und der zweite lokale Speicher 108 kann mehreren Prozessorkernen 104, 110 zugeordnet sein, beispielsweise zwei Prozessorkernen 104, 110. Der erste lokale Speicher 106 oder der zweite lokale Speicher 108 können beispielsweise ein Cache-Speicher oder ein Notizblock-Speicher (engl.: scratchpad memory) sein. Die ein oder mehreren Prozessor-Einheiten 102 sind mit einem oder mehreren gemeinsamen Speichern 112 gekoppelt, auf den zum Beispiel alle Prozessor-Einheiten 102 und entsprechend alle Prozessorkerne 102, 110 zugreifen können, beispielsweise einen Hauptspeicher (auch Arbeitsspeicher genannt), zum Beispiel ein Zufalls-Zugriffs-Speicher (RAM, random access memory), zum Beispiel ein flüchtiger Zufalls-Zugriffs-Speicher, zum Beispiel ein Doppelte Datenrate Zufalls-Zugriff-Speicher (DDR-RAM, Double Data Rate Random Access Memory) oder ein Synchroner Dynamischer Zufalls-Zugriffs-Speicher (SD-RAM, Synchronous Dynamic Random Access Memory), oder ein nicht flüchtiger Zufalls-Zugriff-Speicher, zum Beispiel ein Phasenwechselspeicher (PCRAM, phase change random access memory) oder ein Magnetwiderstandsspeicher (MRAM, magnetoresistive random access memory).
  • Daten, auf die von einem Prozessorkern 104, 110 momentan oder in naher Zukunft zugegriffen wird oder zugegriffen werden wird, können in dem ersten lokalen Speicher 106 gespeichert sein. Daten, auf die zu einem späteren Zeitpunkt zugriffen werden könnte, können in dem zweiten lokalen Speicher 108 gespeichert sein. Wenn in dem ersten lokalen Speicher 106 kein Platz für weitere Daten vorhanden ist, die von dem Prozessorkern 104, 110 zum Verarbeiten benötigt werden, können Daten von dem ersten lokalen Speicher 106 in den zweiten Speicher 108 verlegt werden, beispielsweise Daten, die von dem Prozessorkern 104, 110 nicht mehr benötigt werden oder in naher Zukunft höchstwahrscheinlich nicht mehr benötigt werden.
  • Aus dem einen oder mehreren gemeinsamen Speichern 112 können Daten gelesen und in die lokalen Speicher 106, 108 geschrieben werden. Beispielsweise können die Daten aus den gemeinsamen ein oder mehreren Speichern zunächst in den zweiten lokalen Speicher 108 gespeichert werden, welcher von dem Prozessorkern 102, 110 weiter entfernt ist. Wenn diese Daten dann von dem Prozessorkern 102 benötigt werden, können sie in den ersten lokalen Speicher 106 geladen werden, welcher unmittelbar mit dem Prozessorkern 102 gekoppelt ist.
  • Der gemeinsame Speicher 112, zum Beispiel ein Hauptspeicher, kann mehrere Speicherbänke aufweisen. Auch die Hierarchie von lokalen Speichern, beispielsweise von dem ersten und dem zweiten lokalen Speicher 106, 108 kann in ihrer Gesamtheit mehrere Speicherbänke aufweisen. Ferner kann auch ein einzelner lokaler Speicher 106, 108 mehrere Speicherbänke aufweisen.
  • Beispielsweise können Tabellen einer Datenbank in dem Hauptspeicher 112 gespeichert sein oder in den lokalen Speichern 106, 108 der Prozessorkerne, die irgendein Zwischenergebnis betreffend eine Tabelle berechnet haben, beispielsweise innerhalb der lokalen Speicherhierarchie.
  • 2 zeigt eine Architektur 200 mit Prozessorkernen 202, 204, 206, denen jeweils ein lokaler Speicher 208, 210, 212 zugeordnet ist. Beispielsweise kann jeder lokale Speicher 208, 210, 212 einem einzigen Prozessorkern 202, 204, 206 zugeordnet sein. Jeder lokale Speicher 208, 210, 212 kann ein oder mehrere Speicherbänke aufweisen. Ein lokaler Speicher 208, 210, 212 kann beispielsweise ein Cache-Speicher oder ein Notizblock-Speicher (engl.: scratchpad memory) sein.
  • Die lokalen Speicher 208, 210, 212 sind mittels einer oder mehrerer Speichersteuerungen 214, 216 mit einem Netzwerk 218 verbunden. Beispielsweise können ein lokaler Speicher 208 und ein weiterer lokaler Speicher 210, die verschiedenen Rechenkernen 202, 204 zugeordnet sind, mittels einer gemeinsamen Speichersteuerung 214 mit dem Netzwerk 218 verbunden sein. Ein anderer lokaler Speicher 212, der ebenfalls einem einzigen Prozessorkern 206 zugeordnet ist, kann mittels einer eigenen Speichersteuerung 216 mit dem Netzwerk verbunden sein.
  • Ferner weist die Architektur 200 ein oder mehrere gemeinsame Speicher (nicht dargestellt) auf, welcher oder welche mehrere Speicherbänke 220, 222, 224, 226 aufweisen können, zum Beispiel Speicherbänke eines Hauptspeichers, auf die alle Prozessorkerne 202, 204, 206 gemeinsam zugreifen können.
  • Auch die Speicherbänke 220, 222, 224, 226, auf die gemeinsam zugegriffen werden kann, sind mittels einer oder mehrerer Speichersteuerungen 228, 230, 332 mit dem Netzwerk 218 verbunden. Eine Speichersteuerung 228 kann beispielsweise mehreren Speicherbänken 220, 222 zugeordnet sein, beispielsweise zwei Speicherbänken. Eine andere Speichersteuerung 230, 232 kann einer einzigen Speicherbank 224, 226 zugeordnet sein.
  • Das Netzwerk 218 verbindet die gemeinsamen Speicherbänke 220, 222, 224, 226 mit mehreren Prozessorkernen 202, 204, 206.
  • Sowohl die Speichersteuerungen 214, 216, welche das Lesen und Schreiben von und zu den lokalen Speichern steuern, als auch die Speichersteuerungen 228, 230, 232, welche das Lesen und Schreiben von und zu den Speicherbänken steuern, auf die von den Prozessorkernen 202, 204, 206 gemeinsam zugegriffen werden kann, können Speichersteuerungen sein, die einen direkten Speicherzugriff bereitstellen, auch als DMA-Steuerungen bezeichnet.
  • Eine Speichersteuerung ist jeweils in der Nähe des Speichers, der Speicher oder der Speicherbänke angeordnet, welche sie steuert und auf welche sie zugreift, zum Beispiel lesend oder schreibend.
  • Die Speichersteuerungen 212, 216, welche die lokalen Speicher 208, 210, 212 eines oder mehrere Prozessorkerne steuern, sind in der Nähe des jeweiligen lokalen Speichers 208, 210, 212 oder Prozessorkerns 202, 204, 206 angeordnet, beispielsweise in der Nähe des berechnenden Prozessorkerns.
  • 3 zeigt eine Architektur 300 für den direkten Speicherzugriff (DMA, direct memory access) gemäß verschiedenen Ausführungsbeispielen.
  • Ein Speicher 302 ist mit einer Speichersteuerung 304 verbunden, die einen direkten Speicherzugriff (DMA, direct memory access) unterstützt und im folgenden Text auch DMA-Steuerung genannt wird. Die DMA-Steuerung 304 kann beispielsweise zwei Empfangskanäle 306, 308 aufweisen. Zu diesen Empfangskanälen 306, 308 können Daten gesendet werden, beispielsweise mittels Sendekanälen 310, 312, 314 anderer DMA-Steuerungen 316, 318, 320.
  • Eine DMA-Steuerung 304, 316, 318, 320 kann eine Ein- oder Mehrzahl von Kanälen aufweisen. Dabei wird zwischen zwei Arten von Kanälen unterschieden: einem Sendekanal 310, 312, 314, 322, der für ein Verteilen von Daten verantwortlich ist, und einem Empfangskanal 306, 308, 324, der für ein Empfangen oder Speichern der empfangenen Daten in dem mit dem Empfangskanal verknüpften Speicher, zum Beispiel einem Cache, verantwortlich ist.
  • Eine DMA-Steuerung 304, 316, 318, 320 kann ein beliebe Anzahl von Sendekanälen 310, 312, 314, 322 oder Empfangskanälen 306, 308, 324 aufweisen.
  • Beispielsweise weist eine DMA-Steuerung 304 zwei Empfangskanäle 306, 308 auf. Eine andere DMA-Steuerung 316 weist zwei Sendekanäle 310, 322 auf. Eine weitere DMA-Steuerung 318 weist je einen Sendekanal 312 und einen Empfangskanal 324 auf. Noch eine weitere DMA-Steuerung 320 weist lediglich einen Sendekanal 314 auf, zum Beispiel eine DMA-Steuerung, die mit einem Speicher verbunden ist, auf den nur lesend zugegriffen werden kann, zum Beispiel ein Speicher eines Daten-Archivs. Auch auf einen Speicher irgendwo innerhalb eines Netzwerks, zum Beispiel des Internets, könnte lediglich lesend zugegriffen werden.
  • DMA-Steuerungen können auch mehr als zwei Kanäle, mehr als zwei Sendekanäle oder mehr als zwei Empfangskanäle aufweisen.
  • Ein Empfangskanal kann mit mehreren Sendekanälen verbunden sein. Beispielsweise kann ein erster Empfangskanal 306 einer DMA-Steuerung 304, welche mit einem Speicher 302 verbunden ist, mit zwei Sendekanälen 310, 312 von zwei verschiedenen anderen DMA-Steuerungen 316, 318 verbunden sein. Ein zweiter Empfangskanal 308 der Speichersteuerung 304, die mit dem Speicher 302 verbunden ist, kann mit einem Sendekanal 314 verbunden sein. Zu den Empfangskanälen 306, 308 können Daten gesendet werden, die in dem Speicher 302 gespeichert werden sollen.
  • In dem Speicher 302 können Daten, zum Beispiel Datensätze, Mengen von Datensätzen oder Tabellen, in Form von teils zusammenhängenden Datenblöcken und teils nicht zusammenhängenden Datenblöcken gespeichert werden. Beispielsweise kann in dem Speicher eine Einzahl oder Mehrzahl von Datenblöcken einer vorgegebenen Größe, zum Beispiel ein Datensatz, beginnend bei einer Speicheradresse a zusammenhängend gespeichert werden. Unmittelbar nachfolgend oder in einem gewissen Abstand kann die nächste Einzahl oder Mehrzahl von Datenblöcken dieser Größe, zum Beispiel der nächste Datensatz, zusammenhängend gespeichert werden. Es können jeweils ein oder mehrere zusammenhängende Datenblöcke konstanter Größe im Abstand einer konstanten Schrittweite gespeichert werden, zum Beispiel ein oder mehrere Datensätze, welche insgesamt eine Größe s aufweisen.
  • An einem anderen Ort in dem Speicher 302, beispielsweise einer anderen Speicherbank oder einer anderen Komponente des Speichers, welche von derselben DMA-Steuerung gesteuert wird, kann eine weitere Einzahl oder Mehrzahl von Datenblöcken einer vorgegebenen Größe, beginnend bei einer anderen Speicheradresse a´ zusammenhängend gespeichert werden. Wiederum können nachfolgend mit einem jeweils konstanten Abstand eine weitere Einzahl oder Mehrzahl von Datenblöcken mit dieser Größe gespeichert werden, zum Beispiel können beginnend mit der anderen Speicheradresse die Datenblöcke mit einem anderen konstanten Abstand s´ gespeichert werden.
  • Die Datenblöcke, welche beginnend mit der einen Speicheradresse a gespeichert werden, und die Datenblöcke, welche beginnend mit der anderen Speicheradresse a´ gespeichert werden, können logisch zusammenhängen, zum Beispiel können beginnend mit beiden Speicheradressen jeweils ein oder mehrere Datensätze einer einzigen Menge von Datensätzen oder einer Tabelle gespeichert werden. Eine Menge von Datensätzen oder eine Tabelle kann auch aufgeteilt auf mehr als zwei Speicherbereiche gespeichert werden, zum Beispiel aufgeteilt auf Bereiche in verschiedenen Speichern oder verschiedenen Speicherbänken.
  • Daten in einem Speicher, aus dem Datenblöcke mittels eines Sendekanals 310, 312, 314, 322 gelesen und gesendet werden können, können auf dieselbe Art und Weise, wie oben beschrieben organisiert sein.
  • In der Regel haben alle Datensätze einer Tabelle, zum Beispiel einer Tabelle einer Datenbank, dieselbe Größe. Dementsprechend können alle Datensätze, die wie oben beschrieben gespeichert sind, dieselbe Größe haben.
  • Daten werden von einem Sendekanal 310, 312, 314 zu einem Empfangskanal 306, 308 mittels eines Netzwerks übertragen. Bei Empfang von Daten mittels des Netzwerks kann eine Größe dieser empfangenen Daten mitgeteilt werden, zum Beispiel eine Speichergröße der empfangenen Daten. Beispielsweise kann bei Empfang eines ersten Teilbereichs eines Datensatzes oder einer Menge von Datensätzen die Größe dieses Teilbereichs mitgeteilt werden. Wenn die nachfolgenden Teilbereiche dieselbe Größe haben, muss die Größe nicht erneut mitgeteilt werden. Die Daten oder Teilbereiche eines Datensatzes und die Größe können in einer Nachricht empfangen werden, beispielsweise in derselben Nachricht.
  • Der Einfachheit halber wird angenommen, dass das Netzwerk Daten oder Nachrichten, die es überträgt, vor der Auslieferung an einen Empfangskanal 304, 306, 324 wieder zusammensetzt, wenn die Daten oder Nachrichten während der Übertragung aufgeteilt worden sind. Der empfangenden DMA-Steuerung 304 steht also die vollständige Nachricht oder der vollständig übertragene Teilbereich eines Datensatzes zur Verfügung.
  • Beispielsweise können in einer Nachricht 326 ein oder mehrere Datenblöcke der Größe empfangen werden, mit welcher diese in dem Speicher 302 zusammenhängend gespeichert werden. Beispielsweise kann ein Datensatz jeweils in einer Nachricht empfangen werden und dann zusammenhängend in dem Speicher 302 gespeichert werden.
  • Innerhalb des Netzwerks können die DMA-Steuerungen 304, 316, 318, 320 eindeutig adressiert werden, zum Beispiel mittels einer Identifizierung des Prozessorkerns, mit dem sie verknüpft sind. Die DMA-Steuerungen 304, 316, 318, 320 können mittels eines beliebigen Netzwerks miteinander verbunden sein, welches die oben beschriebenen Anforderungen erfüllt. Das Netzwerk kann zum Beispiel ein Netzwerk sein, welches Daten paketweise überträgt (engl.: packet switched), zum Beispiel ein Netzwerk auf-einem-Chip (engl.: on-chip network) oder ein Netzwerk außerhalb-eines-Chips (engl.: off-chip network), oder das Netzwerk kann irgendeine andere Kommunikationsvorrichtung sein.
  • In einer Ausführungsform wird ein Kanal-zu-Kanal-Kommunikations-Schema bereitgestellt, in welchem Sender-seitige Kanäle ein Auswählen oder Vor-Auswählen von Daten durchführen, bevor die Daten zu den Empfänger-seitigen Kanälen weitergeleitet werden, welche die empfangenen Daten in einem Zielspeicher platzieren.
  • In einer Ausführungsform können die Sender-seitigen Kanäle Daten aus lokalen Speichern lesen und auswählen, die Prozessorkernen zugeordnet sind, welche die Daten verarbeiten und Ergebnisse der Verarbeitung in einem Speicher speichern, zum Beispiel in Form einer aufbereiteten Datenbanktabelle. Die Daten können von den Sender-seitigen Kanälen an Kanäle gesendet werden, die ebenfalls einem lokalen Speicher zugeordnet sind, wobei der lokale Speicher mit einem die Daten verarbeitenden Prozessorkern verknüpft ist. Die Daten können auch an Kanäle gesendet werden, die einem gemeinsamen Speicher zugeordnet sind, zum Beispiel einem Hauptspeicher.
  • In einer Ausführungsform können die Sender-seitigen Kanäle Daten aus Speichern lesen und auswählen, die keiner bestimmten Rechenvorrichtung zugeordnet sind, zum Bespiel aus einem Hauptspeicher.
  • Jede DMA-Steuerung 304, 316, 318, 320 kann eine Ein- oder Mehrzahl von Sendekanälen 310, 312, 314, 322 oder Empfangskanälen 306, 308, 324 bereitstellen. Sendekanäle 310, 312, 314, 322 und Empfangskanäle 306, 308, 324 können mit einer Unterstützung des Verteilen-und-Sammelns ausgestattet sein, um das Sammeln von nicht-zusammenhängenden Datenblöcken, zum Beispiel aus einem Datensatz, einer Menge von Datensätzen oder einer Tabelle, und das Verteilen auf nicht-zusammenhängenden Speicherregionen in dem Zielspeicher bereit zu stellen, wobei während des Sammelns die Datenblöcke vorverarbeitet werden, zum Beispiel ausgewählt werden.
  • In der DMA-Steuerung können mehrere Datenströme über eine einzelne Netzwerkverbindung gemultiplext werden. Auf jedem Datenstrom kann eine Vorverarbeitung der Daten, zum Beispiel ein Auswählen von Datenblöcken, parallel durchgeführt werden.
  • 4 zeigt ein Diagramm 400 einer Übertragung von Daten aus einem Speicher 402 zu einem anderen Speicher 404 gemäß verschiedenen Ausführungsbeispielen.
  • Ein erster Speicher 402 kann eine erste Menge von Datensätzen 406 aufweisen, zum Beispiel eine Tabelle einer Datenbank. Der erste Speicher 402 ist mit einer ersten Speichersteuerung 408 zum Beispiel mit einer DMA-Steuerung, verbunden, welche Datensätze aus der ersten Menge von Datensätzen 406 auswählen und zu dem zweiten Speicher 404 senden kann. Dem ersten Speicher 402 kann optional eine erste Rechenvorrichtung 410 zugeordnet sein mittels welcher in dem ersten Speicher 402 gespeicherte Daten verarbeitet werden können.
  • Der zweite Speicher 404 weist eine zweite Speichersteuerung 412 auf, zum Beispiel eine DMA-Steuerung, welche Daten oder Datensätze empfangen kann. Zum Beispiel kann die zweite Speichersteuerung 412 Datensätze empfangen, die von einer ersten Speichersteuerung 408 gesendet werden. Die zweite Speichersteuerung 412 speichert die empfangenen Datensätze in dem zweiten Speicher 404, zum Beispiel als eine zweite Menge von Datensätzen 414, zum Beispiel eine Tabelle einer Datenbank. Auch dem zweiten Speicher 404 kann optional eine zweite Rechenvorrichtung 416 zugeordnet sein.
  • Zum Beispiel können dem ersten Speicher 402 oder dem zweiten Speicher 404 ein Schaltkreis oder mehrere Schaltkreise zugeordnet sein, um einfache oder je nach Beschaffenheit des Schaltkreises oder der Schaltkreise auch komplexe Rechenoperationen auszuführen, beispielsweise eine Feld programmierbare Gatter-Anordnung (FPGA, field programmable gate array). Zum Beispiel können dem ersten Speicher 402 oder dem zweiten Speicher 404 ein Mikroprozessor, beispielsweise eine zentrale Verarbeitungseinheit (CPU), ein Prozessor einer Grafikkarte, ein Prozessor mit anwendungsspezifischen Befehlssatz (ASIP, application specific instruction set processor) wie zum Beispiel ein Prozessor für einen Sortieralgorithmus, oder ein Prozessorkern zugeordnet sein. Dem ersten Speicher 402 oder dem zweiten Speicher 404 können unterschiedliche Arten von Rechenvorrichtungen zugeordnet sein.
  • In einer Ausführungsform kann die Rechenvorrichtung 410, 416 mit der Speichersteuerung 408, 412 gekoppelt sein. Beispielsweise kann eine DMA-Steuerung mit einer Feld programmierbaren Gatter-Anordnung (FPGA, field programmable gate array) kombiniert werden, um eine intelligente DMA-Steuerung bereitzustellen, die einfache Rechenoperationen oder beliebige Datenverarbeitungs-Operationen durchführen kann, zum Beispiel zum Auswählen der Daten oder während des Auswählens der Daten. Eine direkte Integration des Auswählverfahrens in den Datenstrom des direkten Speicherzugriffs (DMA) reduziert Verzögerungen während der Datenübertragung.
  • In einer Ausführungsform kann zusätzlich zu einer Rechenvorrichtung 410, 416, die mit einer Speichersteuerung 408, 412 gekoppelt ist, dem Speicher 402, 404 eine weitere Rechenvorrichtung zugordnet sein, beispielsweise ein Prozessorkern eines Mikroprozessors.
  • In dem zweiten Speicher 404 kann eine dritte Menge von Datensätzen 418 gespeichert sein. Beispielsweise kann die dritte Menge von Datensätzen 418 zu einem beliebigen Zeitpunkt zu dem zweiten Speicher 404 gesendet worden sein oder von einer zweiten Rechenvorrichtung 416 zu einem beliebigen Zeitpunkt berechnet worden sein.
  • In einer Ausführungsform können einfache Rechenoperationen, zum Beispiel Auswählen von Datensätzen, die eine bestimmte Bedingung erfüllen, oder Auswählen von Teilbereichen von Datensätzen von der Speichersteuerung 408, 412 ausgeführt werden, zum Beispiel von einer intelligenten Speichersteuerung, zum Beispiel von einer intelligenten DMA-Steuerung, und das Ergebnis in einer neuen Menge von Datensätzen oder einer Tabelle in dem der Speichersteuerung 408, 412 zugeordneten Speicher 402, 404 gespeichert werden.
  • Wenn dem zweiten Speicher 404 eine zweite Rechenvorrichtung 416 zugeordnet ist, zum Beispiel eine Rechenvorrichtung 416, die komplexe Rechenoperationen ausführt, kann diese Rechenvorrichtung 416 Datensätze oder Mengen von Datensätzen 414, 418, die in dem zweiten Speicher 404 gespeichert sind, verarbeiten. Die Rechenvorrichtung 416 kann die zweite Menge von Datensätzen 414, welche zum Beispiel gerade in den zweiten Speicher 404 geschrieben wurde, und die dritte Menge von Datensätzen 418, welche zum Bespiel vor einiger Zeit in den zweiten Speicher 404 geschrieben wurde, zum Beispiel als ein Ergebnis oder Zwischenergebnis nach einer Berechnung, gemeinsam verarbeiten.
  • 5 zeigt ein Diagramm 500 eines Verteilens von Daten aus einem Speicher 502 gemäß verschiedenen Ausführungsbeispielen an zwei weitere Speicher 504, 506, die mit jeweils einer Rechenvorrichtung 508, 510 gekoppelt sind.
  • Ein erster Speicher 502 ist mit einer ersten Speichersteuerung 512, zum Beispiel mit einer DMA-Steuerung, verbunden, welche Daten aus dem Speicher lesen, auswählen und an weitere Speicher 504, 506 senden kann.
  • In dem ersten Speicher 502, zum Beispiel einem Hauptspeicher, können ein oder mehrere Datenblöcke oder auch eine Vielzahl von Datenblöcken gespeichert sein. Die Datenblöcke können zu Datensätzen gruppiert sein, zum Beispiel zu Datensätzen einer Tabelle einer Datenbank. Ein oder mehrere Datensätze wiederum können zu einer Menge von Datensätzen gruppiert sein, zum Beispiel zu einer Tabelle eine Datenbank. Die erste Speicher 502 kann eine Einzahl, Mehrzahl oder Vielzahl von Datensätzen und auch von Mengen von Datensätzen aufweisen. Der erste Speicher 502 kann beispielsweise eine erste Menge von Datensätzen 514 aufweisen.
  • Aus dem ersten Speicher 502 können mittels der ersten Speichersteuerung 512 ein oder mehrere Datensätze ausgewählt werden, zum Beispiel aus der ersten Menge zum Datensätzen 514. Die ausgewählten Datensätze können an die Speichersteuerungen 516, 518 weiterer Speicher 504, 506 gesendet werden.
  • Ein zweiter Speicher 504, zum Beispiel ein lokaler Speicher, ist mit einer zweiten Speichersteuerung 516, zum Beispiel einer DMA-Steuerung, und einem Rechenkern 508 eines Prozessors gekoppelt, zum Beispiel dem Kern eines Allzweck-Prozessors (engl.: general purpose processor). Ein dritter Speicher 506 ist mit einer dritten Speichersteuerung 518, zum Beispiel einer DMA-Steuerung, und einem spezialisierten Prozessor 510 gekoppelt, zum Beispiel mit einer Feld programmierbaren Gatter-Anordnung (FPGA, field programmable gate array).
  • Eine Anfrage an eine Datenbank könnte die Aufgabe aufweisen, eine Tabelle, die zum Beispiel der ersten Menge von Datensätzen 514 entspricht, nach den Nachnamen der Einträge zu sortieren, wobei jeder Datensatz der Tabelle (oder der Menge von Datensätzen) das Attribut „Nachname“ aufweist. Zum Sortieren kann die Tabelle in Teilbereiche aufgeteilt werden, die zum Sortieren an mehrere Rechenvorrichtungen 508, 510 mit einem lokalen Speicher 504, 506 gesendet werden. Die Rechenvorrichtungen 508, 510 können von unterschiedlicher Art beziehungsweise unterschiedlicher Bauweise sein.
  • Die erste Speichersteuerung 512 kann zum Beispiel alle Datensätze der ersten Menge von Datensätzen 514, die sich auf Personen beziehen, deren Nachname mit „M“ beginnt, an die dritte Speichersteuerung 518 senden, die diese Menge von Datensätzen 520 in dem dritten Speicher 506 speichert. Weil es viele Nachnamen geben kann, die mit „M“ beginnen, kann pauschal angenommen werden, dass die Tabelle viele Datensätze von Personen aufweist, deren Nachname mit „M“ beginnt. Die Anzahl der Nachnamen, die mit „M“ beginnen, kann jedoch auch zu irgendeinem Zeitpunkt ermittelt worden sein. Ein spezialisierter Prozessor 510 kann die vielen Datensätze schneller sortieren als ein schwergewichtiger Prozessorkern von beispielsweise einer zentralen Verarbeitungseinheit (CPU, central processing unit), welches bei der Verteilung der Daten berücksichtigt werden kann.
  • Die erste Speichervorrichtung 512 kann ferner alle Datensätze der ersten Menge von Datensätzen 514, die sich auf Personen beziehen, deren Nachname mit „X“ beginnt, an die zweite Speichersteuerung 516 senden, die diese Menge von Datensätzen 522 in dem zweiten Speicher 504 speichert. Weil es wenige Nachnamen geben kann, die mit „X“ beginnen, werden diese Datensätze beispielsweise von einem Prozessorkern 508 verarbeitet, der auf die Erledigung von allgemeinen Aufgaben ausgelegt ist und nicht unbedingt auf das Sortieren von Daten spezialisiert ist.
  • Wenn eine Datenbank auch auf Daten oder Tabellen in lokalen Speichern der Prozessorkerne zugreifen könnte, könnte eine bessere Parallelisierung der Datenverarbeitung erzielt werden. Während der Parallelisierung für Datenbankoperationen auf unterer Ebene kann eine Vorverarbeitung eingeführt werden, während welcher die Daten vorab ausgewählt werden, die die einzelnen berechnenden Prozessorkerne danach verarbeiten. Diese Vorverarbeitung kann parallel ausgeführt werden. Beispielsweise können die Datensätze der Personen mit „M“, der Personen mit „X“ sowie der Personen, deren Nachnamen mit anderen Anfangsbuchstaben beginnen, parallel weiterverarbeitet werden. Dabei können bestimmte Datensätze oder bestimmte Attribute der Datensätze jeweils parallel ausgewählt werden.
  • 6 zeigt ein Flussdiagramm 600 eines Verfahrens zum Auswählen und Verteilen von Datenblöcken gemäß verschiedenen Ausführungsbeispielen.
  • In einem Speicher 602 sind beginnend bei einer Speicheradresse a, auch als Startadresse a bezeichnet, ein oder mehrere Datenblöcke gespeichert. In Abständen, die jeweils einer Schrittweite ∆ entsprechen, sind jeweils ein oder mehrere weitere Datenblöcke gespeichert bis eine vorbestimmte Anzahl von Datenblöcken oder eine Speichergröße s von Daten erreicht ist. In den Datenblöcken, die von der Startadresse a bis zu der Speicheradresse, welche sich aus der Startadresse a addiert mit der Speichergröße s ergibt, kann eine logisch zusammenhängende Menge von Datenblöcken enthalten sein, es müssen jedoch nicht alle Datenblöcke der logisch zusammenhängenden Menge von Datenblöcken innerhalb des Speicherbereichs zwischen der Startadresse a und der Startadresse a addiert mit der Speichergröße s angeordnet sein. Die logisch zusammenhängende Menge von Datenblöcken kann beispielsweise einer Tabelle einer Datenbank entsprechen. Die logisch zusammenhängende Menge von Datensätzen kann Untermengen aufweisen, zum Beispiel Datensätze, wobei die Größe eines Datensatzes kleiner als die Schrittweite ∆ sein kann.
  • Aus einem jeweiligen Datensatz oder einfach nur aus ein oder mehreren Datenblöcken, die in einen gewissen Abstand gespeichert sind, können nach einem vorgegebenen Schema Datenblöcke ausgewählt werden. Beispielsweise können ein oder mehrere Datenblöcke ausgewählt werden, anhand derer ermittelt wird, ob der Datensatz verarbeitet wird, zum Beispiel an einer anderen Speicheradresse in demselben oder einem anderen Speicher gespeichert wird. Es können auch ein oder mehrere Datenblöcke ausgewählt werden, anhand derer ermittelt wird, in welchem Speicher der Datensatz oder ein Teilbereich des Datensatzes gespeichert werden soll. Ferner können ein oder mehrere Datenblöcke ausgewählt werden, um in einem Speicher gespeichert zu werden, zum Beispiel als Teilbereich des ursprünglichen Datensatzes.
  • Die ein oder mehreren Datenblöcke, anhand derer ermittelt wird, ob der Datensatz verarbeitet werden soll, können mittels einer Auswählschablone F angegeben werden.
  • Die ein oder mehreren Datenblöcke, anhand derer ermittelt wird, in welchem Speicher der Datensatz oder ein Teilbereich des Datensatzes gespeichert werden soll, können mittels einer Verteilungsschablone D angegeben werden.
  • Die ein oder mehreren Datenblöcke, die ausgewählt werden, um in einem anderen Speicher gespeichert zu werden, können mittels einer Übertragungsschablone M angegeben werden.
  • Eine jeweilige Schablone, also eine Auswählschablone F, eine Verteilungsschablone D oder eine Übertragungsschablone M, gibt entweder die Startposition und die Endposition von zusammenhängend gespeicherten Bits oder Datenblöcken an, oder entspricht einer Maske. Eine Maske gibt an, welche Bits oder Datenblöcke einer Folge von Datenblöcken ausgewählt werden sollen.
  • Zusammenhängende Datenblöcke können als ein Wert aufgefasst werden. Nicht zusammenhängende Datenblöcke können in zusammenhängende Datenblöcke überführt werden, zum Beispiel in einem Speicherpuffer oder Register zwischengespeichert werden. Wenn eine Schablone zum Beispiel die Bits „1“, „4“, „7“ aus der Datenblock-Folge „0100 1010“ auswählt, beträgt der ausgewählte und neu gebildete Wert „110“, wobei das erste Bit der Datenblock-Folge dem Index „0“ zugeordnet ist.
  • Die ein oder mehreren Datenblöcke, anhand derer ermittelt wird, ob der Datensatz verarbeitet werden soll, können mittels einer Rechenoperation O, in der folgenden Beschreibung Auswähloperation O genannt, mit einem vorgegebenen Wert X, in der folgenden Beschreibung Auswähloperand X genannt, verglichen werden. Der Auswähloperand X weist mindestens so viele Bits auf, wie mittels der Auswählschablone F angegeben werden können. Der Auswähloperand X kann genauso viele Bits aufweisen, wie mittels der Auswählschablone F angegeben werden können. Anders ausgedrückt, können mittels der Auswählschablone F höchstens so viele Bits eines jeweiligen Datensatzes ausgewählt werden, wie in dem Auswähloperanden O angegeben werden können.
  • Die Auswähloperation O kann die Rechenoperation größer als, kleiner als, größer oder gleich als, gleich, kleiner oder gleich als, ungleich oder wahr sein.
  • Die ein oder mehreren Datenblöcke, anhand derer ermittelt wird, in welchem Speicher der Datensatz oder ein Teilbereich des Datensatzes gespeichert werden soll, werden als Argument einer Verteilungszuordnung d verwendet. Die Verteilungszuordnung d ist eine Zuordnung, die für jeden Wert, der mittels der Verteilungsschablone D ausgewählt werden kann, eine Kennzeichnung eines Empfangskanals einer Speichersteuerung aufweist, die einem Speicher oder Prozessor zugeordnet ist. Dabei können verschiedenen Werten, welche die ein oder mehreren Datenblöcke annehmen können, verschiedene Kennzeichnungen zugeordnet werden oder auch dieselben Kennzeichnungen, zum Beispiel, wenn es weniger Prozessorkerne gibt als Buchstaben im Alphabet und eine Tabelle nach Nachnamen sortiert werden soll oder wenn die wenigen Nachnamen, die mit „X“ oder „Y“ beginnen von demselben Prozessorkern verarbeitet werden sollen.
  • In einer Ausführungsform kann die Verteilungszuordnung d eine Tabelle sein, die zum Beispiel in einem Teilbereich eines Speichers 604 implementiert ist, zum Beispiel zusammenhängend, der innerhalb der Speichersteuerung angeordnet ist, und mittels welcher jedem Wert, der erhalten werden kann, wenn die gesetzten Bits der Verteilungsschablone D aus dem Speicher gelesen werden, eine Adresse eines Empfängers zugeordnet wird oder Adressen mehrerer Empfänger zugeordnet werden. In anderen Worten kann die Verteilungszuordnung d für jeden dieser Werte einen Eintrag aufweisen. Jeder Eintrag kann die eindeutige Netzwerkadresse der empfangenden Speichersteuerung und die Kennzeichnung eines Empfangskanals innerhalb dieser Steuerung aufweisen.
  • Alle Angaben, die benötigt werden, um zu ermitteln, wohin eine Menge von Datenblöcken verteilt werden soll, in anderen Worten an welchen Empfangskanal eine Menge von Datenblöcken gesendet oder wo ein Menge von Datenblöcken gespeichert werden soll, bilden das Verteilungskriterium. Zum Beispiel können die Verteilungsschablone D und die Verteilungszuordnung d das Verteilungskriterium bilden.
  • Alle Angaben, die benötigt werden, um ein oder mehrere Datenblöcke für das Verteilen, Speichern in einem anderen Speicher oder Speichern in einer anderen Zusammenstellung von Datenblöcken auszuwählen, bilden das Auswählkriterium, zum Beispiel die Auswählschablone F, die Auswähloperation O, der Auswähloperand X und die Übertragungsschablone M.
  • Die ein oder mehreren Datenblöcke werden mittels eines oder mehrerer Sendekanäle aus dem Speicher gelesen und an Empfangskanäle verteilt. Ein Sendekanal, der Daten liest und verteilt wird als aktiver Sendekanal bezeichnet.
  • Jeder Sendekanal weist eine Datenstruktur, zum Beispiel ein Konfigurationsregister, auf, welche die folgenden Variablen oder Register aufweist:
    • – Schrittweite ∆,
    • – Auswählschablone F,
    • – Auswähloperation O,
    • – Auswähloperand X,
    • – Verteilungsschablone D,
    • – Verteilungszuordnung d,
    • – Übertragungsschablone M,
    • – Startadresse a, und
    • – Speichergröße s der ein oder mehreren Datenblöcke.
  • Die Speichersteuerung aktiviert einen Sendekanal, indem sie die oben beschriebene Datenstruktur initialisiert, und führt die im Folgenden beschriebenen Operationen für jeden aktiven Sendekanal aus.
  • Beginnend mit der Speicheradresse a, an welcher der erste zu lesende Datenblock gespeichert ist, liest die Speichersteuerung die Datenblöcke (zum Beispiel Bits oder Bytes), welche mittels der Auswählschablone F angegeben werden können, ermittelt den Wert dieser Datenblöcke, lädt in Schritt 606 den Auswähloperanden X und wertet in Schritt 608 den Auswähloperator O mit dem Wert und dem Auswähloperanden X aus.
  • Wenn das Ergebnis der Auswertung des Auswähloperators O falsch liefert, bewegt sich die Speichersteuerung in Schritt 610 in dem Speicher eine Schrittweite ∆, anders ausgedrückt eine Anzahl von Bytes, die mittels der Schrittweite ∆ spezifiziert werden, weiter und passt die Speichergröße s der Daten entsprechend an. Beispielsweise wird die Speichergröße s der Daten um die Speichergröße des zu überspringenden Datensatzes verringert, wenn die Speichergröße s anfangs mit der Größe des kleinsten Speicherblocks, der die zu lesenden Datenblöcke aufweist, initialisiert wurde.
  • Wenn die Speichergröße s der Daten nach dem Anpassen anzeigt, dass noch Speicherplatz für zu lesende Datenblöcke vorhanden ist, zum Beispiel wenn die verbliebene Speichergröße s nach dem Anpassen positiv ist, fährt die Speichersteuerung mit dem Lesen der Datenblöcke bei der Speicheradresse a fort, wobei die Speicheradresse a nun die Position des nächsten zu lesenden Datenblocks unter Berücksichtigung der Auswählschablone F angibt, so dass der erste Eintrag der Auswählschablone F den ersten für das Auswählen zu lesenden Datenblock der nächsten ein oder mehreren Datenblöcke angibt.
  • Wenn mehrere Sendekanäle aktiv sind, können diese gemäß einer eingebauten Ablaufplanung gewechselt werden. In einer Ausführungsform können die Sendekanäle nach dem zuvor beschriebenen Schritt 610 gewechselt werden. Das Wechseln der Sendekanäle kann im Rundlauf oder gemäß Prioritäten durchgeführt werden. Es kann auch ein jeweiliger Sendekanal bis zur Beendigung einer Übertragung einer Menge von Datenblöcken beibehalten werden, zum Beispiel dem Übertragen aller innerhalb einer zusammenhängenden Speicherregion gespeicherten relevanten Menge von Datenblöcken oder aller Datenblöcke einer logischen Einheit. Die Sendekanäle können auch gemäß anderen Schemata gewechselt werden, beispielsweise komplexeren Schemata.
  • In Schritt 612 wird überprüft, ob die Speichergröße nach dem Anpassen größer als null ist. Wenn die Abfrage in Schritt 612 ergibt, dass kein Speicherplatz für zu lesende Datenblöcke vorhanden ist, zum Beispiel wenn die verbliebene Speichergröße s null beträgt oder negativ ist, deaktiviert die Speichersteuerung den zuvor aktivierten Sendekanal und informiert das Betriebssystem in Schritt 614 über das abgeschlossene Senden, zum Beispiel über ein vollständiges Senden. Beispielsweise kann die Speichersteuerung einen Interrupt senden oder ein Verringern eines Werts in einem dedizierten oder zugewiesenen Register das Prozessorkerns auslösen, auf dem das Betriebssystem ausgeführt wird, wobei ein Interrupt ausgelöst wird, wenn der Wert null wird.
  • Wenn das Evaluieren des Operators O in Schritt 608 das Ergebnis wahr liefert, liest die Speichersteuerung die ein oder mehreren Datenblöcke (zum Beispiel Bits oder Bytes), die mittels der Übertragungsschablone M angegeben werden, und die ein oder mehreren Datenblöcke (zum Beispiel Bits oder Bytes), die mittels der Verteilungsschablone D angegeben werden. Die Speichersteuerung berechnet mittels der ein oder mehreren Datenblöcke, die mittels der Verteilungsschablone D angegeben werden, den Wert zum Ermitteln der Adresse des Empfangskanals, und ermittelt in Schritt 616 die Adresse oder Kennzeichnung des Empfangskanals anhand dieses Werts und der Verteilungszuordnung d.
  • Danach sendet die Speichersteuerung in Schritt 618 die Datenblöcke, die mittels der Übertragungsschablone M gelesen und ermittelt wurden, als eine Nachricht zu dem ermittelten Empfangskanal und fährt mit Schritt 610 fort, wie in dem Fall, dass die Auswertung des Auswähloperators O in Schritt 608 falsch ergeben hätte.
  • In einer Ausführungsform beendet die Speichersteuerung das Senden nicht, wenn die Speichergröße s nach dem Anpassen anzeigt, dass kein Speicherplatz für zu lesende Datenblöcke vorhanden ist, zum Beispiel wenn die verbliebene Speichergröße s null beträgt oder negativ ist. Statt dessen überprüft die Speichersteuerung, ob weitere ein oder mehrere Datenblöcke in einem anderen von ihr verwalteten Teil des Speichers gelesen werden sollen, zum Beispiel weil die weiteren Datenblöcke mit den zuvor gelesenen Datenblöcken eine logische Einheit bilden oder mit ihnen verknüpft sind. Stattdessen passt die Speichersteuerung in der Datenstruktur des Sendekanals die Schrittweite ∆, die Speicheradresse a und die Speichergröße s der Daten zum Lesen der weiteren Datenblöcke an, liest die ersten Datenblöcke, welche mittels der Auswählschablone F gefiltert werden, und fährt mit dem Auswerten des Auswähloperators O in Schritt 608 fort. Erst wenn keine weiteren Datenblöcke gelesen werden sollen, deaktiviert die Speichersteuerung den zuvor aktivierten Sendekanal und informiert das Betriebssystem in Schritt 614 über das abgeschlossene Senden.
  • In einer anderen Ausführungsform initialisiert die Speichersteuerung neben der Schrittweite ∆, der Speicheradresse a und der Speichergröße s der Daten auch die Auswählschablone F, die Verteilungsschablone D oder die Übertragungsschablone M in der Datenstruktur des Sendekanals, wenn weitere Datenblöcke in dem von der Speichersteuerung gesteuerten ein oder mehreren Speichern oder ein oder mehreren Speicherbänken gelesen werden sollen.
  • In einer Ausführungsform können mehrere Sendekanäle zu einem Empfangskanal senden. In einer Ausführungsform können mehrere Sendekanäle derselben Speichersteuerung zu einem Empfangskanal senden. Beispielsweise kann ein jeweiliger Sendekanal einer Speichersteuerung ein oder mehrere Datenblöcke senden, die innerhalb einer jeweiligen zusammenhängenden Speicherregion in einem konstanten Abstand gespeichert sind.
  • In einer Ausführungsform kann ein Empfangskanal Datenblöcke von einem oder mehreren Sendekanälen empfangen, wobei eine Speichersteuerung ein oder mehrere Empfangskanäle aufweisen kann. Jeder Empfangskanal weist eine Datenstruktur oder ein Konfigurationsregister auf, welches beispielsweise eine Speicheradresse a aufweist, die angibt, wo die zu empfangenden ein oder mehreren Datenblöcke in dem Speicher gespeichert werden sollen, und eine Speichergröße s aufweist, die angibt, wie viel Speicherplatz für zu empfangenden ein oder mehreren Datenblöcken zur Verfügung gestellt wird.
  • Bei Empfang einer Nachricht, welche die übertragenen ein oder mehreren Datenblöcke und die Größe dieser Datenblöcke aufweist, speichert die Speichersteuerung die ein oder mehreren Datenblöcke, die von dem Empfangskanal empfangen wurden, aufeinanderfolgend an der Speicheradresse a, die in der Datenstruktur oder dem Konfigurationsregister des Empfangskanals gespeichert ist. Die Speichersteuerung reduziert die Speichergröße s in der Datenstruktur oder dem Konfigurationsregister des Empfangskanals um die Speichergröße der empfangenen ein oder mehreren Datenblöcke. Beispielsweise können der Empfangskanal oder die Speichersteuerung die Speichergröße s in der Datenstruktur um die Größe reduzieren, die in der empfangenen Nachricht angeben wird. Der Empfangskanal oder die Speichersteuerung können aber auch die Speichergröße s der zu speichernden Datenblöcke selber ermitteln, zum Beispiel als die empfangene Größe addiert mit einem zusätzlichen Abstand.
  • In einer Ausführungsform wird die zur Verfügung stehende Speichergröße s reduziert, bevor die in einer Nachricht empfangenen ein oder mehreren Datenblöcke gespeichert werden.
  • In einer Ausführungsform wird die zur Verfügung stehende Speichergröße s jeweils um die Größe eines oder mehrerer zu speichernder Datenblöcke reduziert, bevor diese Speicherblöcke gespeichert werden.
  • Wenn zum Speichern der zu speichernden ein oder mehreren Datenblöcke nicht genügend Speicherplatz verfügbar ist, beispielsweise zur Verfügung gestellt wurde, signalisiert die Speichersteuerung einen Abbruch und blockiert weitere Anfragen.
  • 7 zeigt ein Diagramm 700 zum Verteilen von Daten an lokale Speicher 702, 704 gemäß verschiedenen Ausführungsbeispielen.
  • In einem ersten Speicher 706, beispielsweise einem gemeinsamen Speicher, zum Beispiel einem Hauptspeicher, ist eine erste Tabelle 708 gespeichert, deren Datensätze einen Namen 710 einer Person und die Straße 712 aufweisen in der diese Person wohnt. Die Datensätze der ersten Tabelle 708 können auch weitere Attribute (nicht dargestellt) aufweisen, zum Beispiel die Hausnummer oder den Wohnort. Dem ersten Speicher 706 ist eine erste Speichersteuerung 714 zugeordnet, beispielsweise eine Speichersteuerung 714, die einen direkten Speicherzugriff (DMA, direct memory access) bereitstellt und Datenblöcke auswählen kann.
  • In einem zweiten Speicher 716, beispielsweise einem gemeinsamen Speicher, zum Beispiel einem Hauptspeicher, ist eine zweite Tabelle 718 gespeichert, deren Datensätze einen Namen einer Person 720 und die Telefonnummer 722 dieser Person aufweisen. Auch die Datensätze der zweiten Tabelle 718 können weitere Attribute aufweisen. Dem zweiten Speicher ist eine zweite Speichersteuerung 724 zugeordnet, beispielsweise eine Speichersteuerung 724, die einen direkten Speicherzugriff (DMA, direct memory access) bereitstellt und Datenblöcke auswählen kann.
  • Ferner ist in dem ersten Speicher 706 eine dritte Tabelle 726 gespeichert, die als Attribute eines Datensatzes eine Telefonnummer 728 und die Telefonkosten 730 aufweist. Auch die dritte Tabelle 726 kann weitere Attribute aufweisen.
  • Beispielsweise kann die erste Tabelle 708 einen Datensatz eines „Hans“ aufweisen, der in der „A-Straße“ wohnt. Die zweite Tabelle 718 kann einen Datensatz eines „Hans“ mit der Telefonnummer „3145“ aufweisen. In der dritten Tabelle 726 kann die Telefonnummer „3145“ zusammen mit den Telefonkosten „4,50 Euro“ in einem Datensatz gespeichert sein.
  • Die erste, die zweite und die dritte Tabelle 708, 718, 726 können Tabellen einer Datenbank sein. An die Datenbank wird beispielsweise die Aufgabe gestellt, die Summe der Telefonkosten aller Personen zu berechnen, die in einer Straße wohnen, die mit „A“ beginnt, und wobei die letzte Ziffer der Telefonnummer größer als „4“ ist.
  • Um die gestellte Aufgabe zu lösen, werden zunächst die erste Tabelle 708 und die zweite Tabelle 718 verarbeitet beziehungsweise vorverarbeitet, das heißt Datensätze mit den gesuchten Attributen werden ausgewählt und auf Speicher 702, 704 verteilt, deren zugeordnete Recheneinheiten 732, 734 oder Speichersteuerungen 736, 738 weitere Teilaufgaben lösen.
  • Die erste Tabelle 708 und die zweite Tabelle 718 können in beliebiger Reihenfolge vorverarbeitet werden, zum Beispiel kann zuerst die erste Tabelle 708 vorverarbeitet werden und danach die zweite Tabelle 718 oder umgekehrt. Es können auch beide Tabellen 708, 718 parallel, also zur gleichen Zeit, vorverarbeitet werden.
  • Bei dem Vorverarbeiten werden aus der ersten Tabelle 708, die in dem ersten Speicher 706 gespeichert ist, mittels der ersten Speichersteuerung 714 Datensätze von Personen ausgewählt, die in einer Straße wohnen, die mit „A“ beginnt.
  • Hierzu wird die Auswählschablone F auf den ersten Buchstaben in Attribut gesetzt das dem Straßennamen entspricht, wobei ein Attribut auch als Feld bezeichnet wird. Der Auswähloperand X wird auf „A“ gesetzt und als Auswähloperation O wird die gleich-Operation verwendet. In einer Ausführungsform kann das Datenbank-Managementsystem diese Variablen oder Register der ersten Speichersteuerung 714 oder eines der ersten Speichersteuerung 714 zugeordneten Sendekanals setzen, beispielsweise bei dem Betriebssystem die entsprechenden Einstellungen anfordern.
  • Die Datensätze der ersten Tabelle 708 der Personen, die in einer Straße wohnen, die mit „A“ beginnt, werden gemäß dem Anfangsbuchstaben des Namens der Person an andere Speichersteuerungen 736, 738 verteilt. Beispielsweise werden alle Datensätze von Personen, deren Name mit „A“ beginnt, an die dritte Speichersteuerung 736 gesendet, beziehungsweise an einen Empfangskanal (nicht dargestellt) dieser Speichersteuerung 736, welche die empfangenen Datensätze als eine vierte Tabelle 740 in dem ersten lokalen Speicher 702 speichert. In einer Ausführungsform kann die vierte Tabelle 740 in einem lokalen Pufferspeicher (nicht dargestellt) gespeichert werden, welcher der dritten Speichersteuerung 736 zugeordnet ist, beispielsweise wenn die Datensätze derart empfangen werden, dass der Name alphabetisch geordnet ist.
  • Alle Datensätze von Personen, deren Name mit „H“ beginnt, werden an die vierte Speichersteuerung 738 gesendet, beziehungsweise an einen Empfangskanal (nicht dargestellt) dieser Speichersteuerung 738, welche die empfangenen Datensätze als eine fünfte Tabelle 742 in dem zweiten lokalen Speicher 704 oder einem lokalen Pufferspeicher (nicht dargestellt) der vierten Speichersteuerung 738 speichert.
  • Für das oben beschriebene Verteilen wird die Verteilungsschablone D auf den Anfangsbuchstaben oder den ersten Buchstaben des Attributs gesetzt, welches den Namen aufweist. In der Verteilungszuordnung d werden dem Buchstaben „A“ die dritte Speichersteuerung und dem Buchstaben „H“ die vierte Speichersteuerung zugeordnet.
  • Ferner wird die Übertragungsschablone M auf das Attribut mit dem Namen gesetzt, denn lediglich der Name wird für die folgenden Berechnungen benötigt und soll folglich übertragen werden. Es wird also bei jedem Datensatz, der mittels der Auswählschablone F ausgewählt wird, nur das Feld mit dem Namen gesendet.
  • Nachdem die Datensätze der ersten Tabelle 708 verteilt wurden, weist die fünfte Tabelle 742, beispielsweise einen Datensatz mit dem Attribut „Namen“ als einziges Attribut auf, zum Beispiel den Datensatz „Hans“.
  • Bei dem Vorverarbeiten werden auch aus der zweiten Tabelle 718, die in dem zweiten Speicher 716 gespeichert ist, mittels der zweiten Speichersteuerung 724 die Datensätze gemäß dem Anfangsbuchstaben des Namens einer jeweiligen Person an die dritte Speichersteuerung 736, die vierte Speichersteuerung 738 und eventuell weitere Speichersteuerungen (nicht dargestellt) verteilt. Dabei werden alle Datensätze der zweiten Tabelle 718 berücksichtigt, es wird also keine Auswählschablone F verwendet oder die Auswähloperation O so gesetzt, dass alle Datensätze ausgewählt werden.
  • Für das Verteilen der Datensätze der zweiten Tabelle 718 wird die Verteilungsschablone D der zweiten Speichersteuerung 724 analog zu der Verteilungsschablone D der ersten Speichersteuerung 714 auf den ersten Buchstaben des Attributs gesetzt, welches den Namen aufweist. Die Verteilungszuordnung d der zweiten Speichersteuerung 724 weist den Anfangsbuchstaben dieselben Speichersteuerungen zu wie Verteilungszuordnung d der ersten Speichersteuerung 714. Anders ausgedrückt sind die Verteilungsschablonen D und die Verteilungszuordnungen d in diesem Beispiel jeweils identisch. Die Verteilungsschablonen D oder die Verteilungszuordnungen d können jedoch auch jeweils unterschiedlich sein, sie sollten lediglich in einem logischen Zusammenhang zueinander stehen, der auf die nachfolgende weitere Verarbeitung der Datenblöcke, Datensätze oder Tabellen abgestimmt ist. Beispielsweise könnte die erste Tabelle in dem Attribut „Name“ den Nachnamen speichern und die zweite Tabelle in dem Attribut „Name“ den Vornamen gefolgt von dem Nachnamen oder „Herr Nachname“ beziehungsweise „Frau Nachname“ speichern.
  • Verteilt werden die Attribute „Name“ und „Telefonnummer“ eines jeweiligen Datensatzes. Hierzu wird die Übertragungsschablone M der zweiten Speichersteuerung 724 auf die Attribute „Name“ und „Telefonnummer“ gesetzt.
  • Dementsprechend werden alle Datensätze der zweiten Tabelle 718 von Personen, deren Name mit „A“ beginnt, an die dritte Speichersteuerung 736 gesendet und alle Datensätze von Personen, deren Name mit „H“ beginnt, wie „Hans“, werden an die vierte Speichersteuerung 738 gesendet. Als Datensatz werden jeweils der Name und die Telefonnummer gesendet.
  • Nachdem die zweite Tabelle 718 verteilt wurde, weist der erste lokale Speicher 702 eine sechste Tabelle 744 auf, die alle Telefonnummern von Personen der zweiten Tabelle 718 aufweist, deren Name mit „A“ beginnt. Der zweite lokale Speicher 704 weist eine siebte Tabelle 746 auf, die alle Telefonnummern von Personen der zweiten Tabelle 718 aufweist, deren Name mit „H“ beginnt, beispielsweise den Datensatz des „Hans“ mit der Telefonnummer „3145“ aufweist.
  • Die Datensätze der ersten und zweiten Tabelle 708, 718 von Personen, deren Namen mit einem anderen Buchstaben des Alphabets beginnt, werden analog auf den ersten oder zweiten lokalen Speicher 702, 704 oder weitere lokale Speicher (nicht dargestellt) verteilt, also an die diesen Speichern zugeordneten Speichersteuerungen gesendet. Dabei können in der Verteilungszuordnung d mehrere Anfangsbuchstaben derselben Speichersteuerung zugeordnet werden, beispielsweise auch die Namen, die mit „B“ oder „K“ beginnen in dem ersten lokalen Speicher 702 gespeichert werden. Bei der Verteilung können mehr als ein Buchstabe berücksichtigt werden, beispielsweise eine beliebige Buchstabenkombination, zum Beispiel die ersten drei Buchstaben oder der zweite und der letzte Buchstabe.
  • Da nur die Telefonnummern von Personen gesucht werden, die in einer Straße wohnen, die mit „A“ beginnt, werden die beiden Tabellen, die jeweils in demselben lokalen Speicher 702, 704 gespeichert sind, miteinander verglichen und nur Einträge behalten, die in beiden Tabellen vorkommen. Es wird also der Verbund (engl.: Join) dieser beiden Tabellen berechnet.
  • Zum Berechnen des Verbunds überprüfen die Rechenkerne 732, 734 jeweils paarweise alle Datensätze in den beiden Tabellen in den jeweiligen lokalen Speichern 702, 704 und vergleichen, ob der Inhalt des Attributs „Name“ identisch ist. Wenn der Inhalt des Attributs „Name“ identisch ist, wird der Datensatz in einer neuen Tabelle (nicht dargestellt) in dem lokalen Speicher 702, 704 gespeichert, der dem jeweiligen berechnenden Rechenkern 732, 734 zugeordnet ist.
  • Nach der Berechnung des Verbunds weist der erste lokale Speicher 702 eine achte Tabelle (nicht dargestellt) auf, die Datensätze mit den Attributen „Name“ und „Telefonnummer“ aufweist, wobei nur Einträge von Personen enthalten sind, die in einer Straße wohnen, die mit „A“ beginnt. Auch der zweite lokale Speicher 704 weist eine derartige neunte Tabelle (nicht dargestellt) auf. In der achten Tabelle sind beispielsweise nur Datensätze von Personen gespeichert, deren Name mit „A“ beginnt. In der neunten Tabelle sind beispielsweise nur Datensätze von Personen gespeichert, deren Name mit „H“ beginnt, wie „Hans“ mit der Telefonnummer „3145“.
  • Die Berechnung des Verbunds benötigt weniger Vergleiche, wenn die Datensätze in den zu vergleichenden Tabellen gemäß dem zu vergleichenden ein oder mehreren Attributen sortiert sind, beispielsweise alphabetisch sortiert sind.
  • In einer Ausführungsform können, wenn bekannt ist, dass die Datensätze in den zu vergleichenden Tabellen gemäß dem Attribut „Name“ in derselben Reihenfolge sortiert sind und diese Sortierung während dem Übertragen der Datensätze beibehalten wird, die Datensätze einer oder beider Tabellen in einem lokalen Pufferspeicher der jeweiligen Speichersteuerung 736, 738 gespeichert werden.
  • Vereinfachend kann angenommen werden, dass zuerst die erste Tabelle 708 aus dem ersten Speicher 706 übertragen wird, und die Datensätze der zweiten Tabelle 718 aus dem zweiten Speicher 716 erst empfangen werden, nachdem alle Datensätze der ersten Tabelle von einer jeweiligen Speichersteuerung 736, 738 empfangen wurden. Alternativ kann angenommen werden, dass Datensätze aus der zweiten Tabelle 718 erst verarbeitet werden, wenn der für einen jeweiligen Vergleich benötigte Datensatz der ersten Tabelle 708 empfangen wurde, und die Verarbeitung pausiert bis der für den Vergleich benötigte Datensatz der ersten Tabelle 708 empfangen wird, wenn dies nicht der Fall sein sollte.
  • Dann kann ein Rechenkern 732, 734, beispielsweise eine Feld programmierbare Gatter-Anordnung (FPGA, field programmable gate array), beispielsweise eine Feld programmierbare Gatter-Anordnung gekoppelt mit einer Speichersteuerung 736, 738, die empfangenen Datensätze, die aus dem zweiten Speicher 716 ausgewählt und gesendet wurden, mit dem ersten Datensatz in dem Pufferspeicher vergleichen, wobei die Datensätze in dem Pufferspeicher aus dem ersten Speicher 706 ausgewählt und gelesen wurden und lediglich das Attribut „Name“ aufweisen. Wenn die Namen identisch sind, wird der empfangene Datensatz aus dem zweiten Speicher 716 in dem lokalen Speicher 702, 704 gespeichert, welcher der Speichersteuerung 736, 738 zugeordnet ist. Ferner kann der erste Datensatz in dem Pufferspeicher gelöscht werden, so dass der nächste Datensatz an erster Position ist, oder die Position auf eine andere Art markiert werden, ohne einen Datensatz zu löschen. Wenn die Namen nicht identisch sind, wird der empfangene Datensatz aus dem zweiten Speicher 716 verworfen, also nicht gespeichert. Danach wird mit dem nächsten empfangenen Datensatz aus dem zweiten Speicher 716 analog verfahren.
  • 8 zeigt ein weiteres Diagramm 800 zum Verteilen von Daten an lokale Speicher 802, 804, 806 gemäß verschiedenen Ausführungsbeispielen.
  • In einem ersten Speicher 808, beispielsweise einem gemeinsamen Speicher, ist eine erste Tabelle 810 gespeichert, deren Datensätze einen Namen einer Person und die Straße aufweisen in der diese Person wohnt. Dem ersten Speicher 808 ist eine erste Speichersteuerung 812 zugeordnet, beispielsweise eine Speichersteuerung 812, die einen direkten Speicherzugriff (DMA, direct memory access) bereitstellt und Datenblöcke auswählen kann.
  • In einem zweiten Speicher 814, beispielsweise einem gemeinsamen Speicher, ist eine zweite Tabelle 816 gespeichert, deren Datensätze einen Namen einer Person und die Telefonnummer dieser Person aufweisen. Dem zweiten Speicher ist eine zweite Speichersteuerung 818 zugeordnet, beispielsweise eine Speichersteuerung 818, die einen direkten Speicherzugriff (DMA, direct memory access) bereitstellt und Datenblöcke auswählen kann.
  • Ferner ist in dem ersten Speicher 808 eine dritte Tabelle 820 gespeichert, die als Attribute eines Datensatzes eine Telefonnummer 822, die Telefonkosten 824 und optional weitere Attribute (nicht dargestellt) aufweist.
  • Beispielsweise kann die erste Tabelle 810 einen Datensatz eines „Hans“ aufweisen, der in der „A-Straße“ wohnt. Die zweite Tabelle 816 kann einen Datensatz eines „Hans“ mit der Telefonnummer „3145“ aufweisen. In der dritten Tabelle 820 kann die Telefonnummer „3145“ zusammen mit den Telefonkosten „4,50 Euro“ in einem Datensatz gespeichert sein.
  • Wie bereits in der Beschreibung von 7 wird die Summe der Telefonkosten aller Personen gesucht, die in einer Straße wohnen, die mit „A“ beginnt und deren letzte Ziffer der Telefonnummer größer als „4“ ist. Anhand 7 wurde erläutert, wie eine Tabelle 744, 746, 826, 828 mit den Telefonnummern aller Personen berechnet wird, die in einer Straße wohnen, die mit „A“ beginnt, und verteilt auf lokale Speicher 702, 704, 802, 804 gespeichert wird.
  • Um die verbliebene Teilaufgabe zu lösen, wird die dritte Tabelle 820 vorverarbeitet, das heißt Datensätze mit den gesuchten Attributen werden ausgewählt und auf Speicher 802, 804, 806 verteilt, deren zugeordnete Recheneinheiten 828, 830, 832 oder Speichersteuerungen 834, 836, 838 danach weitere Berechnungen durchführen.
  • Ferner werden eine vierte und eine fünfte Tabelle 826, 828 mit den Telefonnummern aller Personen, die in einer Straße wohnen, die mit „A“ beginnt, und die verteilt auf lokale Speicher 802, 804 gespeichert sind, weiter verarbeitet.
  • Ferner können die Tabellen 740, 742 mit lediglich den Namen der Personen die in einer Straße wohnen, die mit A beginnt, immer noch in den jeweiligen lokalen Speichern 802, 804 gespeichert sein (nicht dargestellt).
  • Auch die alphabetisch verteilten Tabellen 744, 746 mit den Telefonnummern und Namen aller Personen, deren Name zum Beispiel mit „A“ oder „H“ beginnt, können immer noch in den jeweiligen lokalen Speichern 802, 804 gespeichert sein (nicht dargestellt).
  • Die dritte Tabelle 820, die vierte Tabelle 826 und die fünfte Tabelle 828 können in beliebiger Reihenfolge verarbeitet beziehungsweise vorverarbeitet werden. Ferner können die Tabellen 820, 826, 828 sequentiell, parallel oder teils sequentiell und teils parallel vorverarbeitet werden.
  • Um alle Paare mit übereinstimmender Telefonnummer in der dritten und vierten Tabelle 820, 826 sowie der dritten und fünften Tabelle 820, 828 zu ermitteln, werden die Tabellen 820, 826, 828 gemäß der ersten Ziffer der Telefonnummer auf die lokalen Speicher 802, 804, 806 verteilt. Das Verteilungskriterium ist in diesem Beispiel beliebig gewählt, die Telefonnummern könnten genauso gut gemäß der zweiten, dritten oder letzten Ziffer verteilt werden oder gemäß einer Kombination mehrerer Ziffern.
  • Zur Vorverarbeitung der dritten Tabelle 820 wird die Auswählschablone F auf die letzte Ziffer des Felds Telefonnummer gesetzt. Der Auswähloperand X wird auf „4“ gesetzt und die Auswähloperation O auf „größer“.
  • Die erste Speichersteuerung 812 liest in jedem Datensatz der dritten Tabelle 820 die letzte Ziffer des Felds Telefonnummer und wertet die Auswähloperation O aus. Wenn die letzte Ziffer der Telefonnummer größer als „4“ ist, also die Auswertung den Wert wahr liefert, werden weitere Datenblöcke gemäß der Einstellungen in der Datenstruktur beziehungsweise der Register-Konfiguration der ersten Speichersteuerung 812 gelesen.
  • Die Übertragungsschablone M wird auf die Attribute Telefonnummer und Telefonkosten gesetzt, so dass von jeden Datensatz, der die Auswähloperation O erfüllt, die Felder Telefonnummer und Telefonkosten zum Übertragen und Speichern in einem anderen Speicher gelesen und ausgewählt werden.
  • Die Verteilungsschablone D wird auf die erste Ziffer des Attributs Telefonnummer gesetzt. Mittels der Verteilungszuordnung d und des Datenblocks, der anhand der Verteilungsschablone D ermittelt wird, also die erste Ziffer der Telefonnummer aufweist, werden die ausgewählten Datensätze an andere lokale Speicher 802, 804, 806 verteilt. Beispielsweise wird die Ziffer „1“ dem ersten lokalen Speicher 802 zugewiesen, die Ziffer „2“ dem zweiten lokalen Speicher 804, die Ziffer „3“ dem dritten lokalen Speicher 806 und so weiter. In dem Rechnersystem können zum Beispiel ein lokaler Speicher für jede Ziffer (nicht dargestellt) vorhanden sein, die jeweils einem Rechenkern, beispielsweise einem Prozessorkern, zugordnet sind.
  • Nach dem Verteilen der dritten Tabelle 320 ist in dem ersten lokalen Speicher 802 eine sechste Tabelle 842 gespeichert, die ausschließlich Telefonnummern, die mit „1“ beginnen, und deren Telefonkosten aufweist. In dem zweiten lokalen Speicher 804 ist eine siebte Tabelle 844 gespeichert, die ausschließlich Telefonnummern, die mit „2“ beginnen, und deren Telefonkosten aufweist. In dem dritten lokalen Speicher 806 ist eine achte Tabelle 846 gespeichert, die ausschließlich Telefonnummern, die mit „3“ beginnen, und deren Telefonkosten aufweist, zum Beispiel den Datensatz mit der Telefonnummer „3145“ und Kosten von „4,50 Euro“.
  • Analog werden die vierte und eine fünfte Tabelle 826, 828 mit den Telefonnummern aller Personen, die in einer Straße wohnen, die mit „A“ beginnt, und die verteilt auf mehrere lokale Speicher 802, 804 gespeichert sind, verarbeitet.
  • Zur Vorverarbeitung der vierten Tabelle 826 oder der fünften Tabelle 828 kann die Auswählschablone F, die der jeweiligen Speichersteuerung 836, 838 oder einem jeweiligen Sendekanal zugeordnet ist, auf die letzte Ziffer des Felds Telefonnummer gesetzt werden. Der Auswähloperand X wird auf „4“ gesetzt und die Auswähloperation O auf „größer“. Dieser Schritt ist optional, es können auch alle Datensätze gemäß der ersten Ziffer der Telefonnummer verteilt werden, weil die dritte Tabelle 820 entsprechend gefiltert wird. Alternativ könnten die Datensätze der vierten und fünften Tabelle 826, 828 gemäß der letzten Ziffer der Telefonnummer gefiltert und die dritte Tabelle 820 vollständig verteilt werden.
  • Die Übertragungsschablone M, die der jeweiligen Speichersteuerung 836, 828 oder einem jeweiligen Sendekanal zugeordnet ist, kann auf die Attribute Name und Telefonnummer oder lediglich das Attribut Telefonnummer gesetzt werden, so dass von jeden Datensatz, der die Auswähloperation O erfüllt, die Felder Telefonnummer und Telefonkosten oder lediglich das Feld Telefonnummer zum Übertragen und Speichern in einem anderen Speicher ausgewählt werden.
  • Die jeweiligen Speichersteuerungen 836, 838 sind eingerichtet, mittels der Verteilungszuordnung d und des Datenblocks, der anhand der Verteilungsschablone D ermittelt wird, also die erste Ziffer der Telefonnummer aufweist, die ausgewählten Datenblöcke, der vierten und fünften Tabelle 826, 828, an andere lokale Speicher 802, 804, 806 zu verteilen. Analog zum Verteilen der dritten Tabelle 820 wird die Ziffer „1“ dem ersten lokalen Speicher 802 zugewiesen, die Ziffer „2“ dem zweiten lokalen Speicher 804, die Ziffer „3“ dem dritten lokalen Speicher 806 und so weiter.
  • Nach dem Verteilen der vierten und fünften Tabelle 826, 828 ist in dem ersten lokalen Speicher 802 eine neunte Tabelle 848 gespeichert, die beispielsweise ausschließlich Telefonnummern aufweist, die mit „1“ beginnen, weil lediglich das Feld „Telefonnummer“ gesendet wurde. In dem zweiten lokalen Speicher 804 ist eine zehnte Tabelle 850 gespeichert, die ausschließlich Telefonnummern aufweist, die mit „2“ beginnen. In dem dritten lokalen Speicher 806 ist eine elfte Tabelle 852 gespeichert, die ausschließlich Telefonnummern aufweist, die mit „3“ beginnen, zum Beispiel die Telefonnummer „3145“.
  • Da die Telefonkosten von Personen gesucht werden, die in einer Straße wohnen, die mit „A“ beginnt, werden die beiden Tabellen, die jeweils in demselben lokalen Speicher 802, 804, 806 gespeichert sind, also die sechste und die neunte Tabelle 842, 848, die siebte und die zehnte Tabelle 844, 850 sowie die achte und die elfte Tabelle 846, 852 miteinander verglichen und zur Berechnung der Summe nur Telefonkosten berücksichtigt, deren zugeordnete Telefonnummer in beiden Tabellen vorkommt.
  • Die Rechenkerne 830, 832, 834 überprüfen dafür jeweils paarweise alle Datensätze in den beiden Tabellen und vergleichen, ob die Telefonnummer identisch ist. Wenn die Telefonnummer identisch ist, können der Datensätze in einer zwölften Tabelle (nicht dargestellt) in dem lokalen Speicher 802, 804, 806 gespeichert werden, der dem jeweiligen berechnenden Rechenkern 830, 832, 834 zugeordnet ist. Alternativ können, je nachdem ob eine derartige Tabelle für andere Berechnungen oder zukünftige Datenbank-Anfragen von Interesse ist oder nicht, bei einem erfolgreichen Vergleich die Telefonkosten des aktuell verglichenen Datensatzes direkt zu einer Summe der Telefonkosten addiert werden, ohne die Tabelle zu erstellen.
  • Wenn die Rechenkerne 830, 832, 834 jeweils den Verbund der beiden Tabellen als neue Tabelle berechnet haben, ohne bereits die Summe zu bilden, kann die Summe der Telefonkosten in einem nachfolgenden Schritt berechnet werden.
  • In einer Ausführungsform bilden die Rechenkerne 834, 836, 838, beispielsweise Feld programmierbare Gatter-Anordnungen (FPGA, field programmable gate array), beispielsweise Feld programmierbare Gatter-Anordnungen gekoppelt mit einer jeweiligen Speichersteuerung 836, 838, 840, jeweils den Verbund der beiden Tabellen als neue Tabelle, beispielsweise wenn die Datensätze der dritten, vierten und fünften Tabelle 820, 826, 828 jeweils in derselben Reihenfolge sortiert empfangen werden, und danach addieren die Rechenkerne 834, 836, 838 die Telefonkosten, die jeweils in der neuen Tabelle gespeichert sind.
  • In einem letzten Schritt (nicht dargestellt) werden alle von den Prozessorkernen 830, 832, 834 jeweils berechneten Summen der Telefonkosten zu einem Prozessorkern übertragen, zum Beispiel dem zweiten Prozessorkern 832, um die Summe der Telefonnummern aller Telefonnummern zu berechnen.
  • In einer Ausführungsform wird die Vorverarbeitung von Daten mittels Datenbankoperatoren auf unterer Ebene unterstützt.
  • Zum Auswählen (Anfrage: Wo Feld Operator Wert) von Datenblöcken eines Datensatzes, in anderen Worten eines oder mehrerer Felder, wird eine Tabelle durchlaufen, das heißt jeder Datensatz der Tabelle wird besucht. Bei dem Auswählen (Anfrage Wo?) wird für jeden Datensatz das Feld zurückgegeben, wenn das Paar bestehend aus dem Inhalt des Feldes und dem Wert die Bedingung des Operators erfüllt. Die Schrittweite ∆ kann zu der Größe eines Datensatzes, die Auswählschablone F auf das Feld oder die Einträge des Felds, der Operand X auf dem Wert und der Auswähloperator O beispielsweise auf > gesetzt werden. Die Übertragungsschablone M wird auf das Feld gesetzt. Eine jeweilige Speichersteuerung durchläuft den Teil der Tabelle, die in einem Speicher gespeichert ist, für den sie zuständig ist, und gibt alle passenden Felder aus, beispielsweise als Datensätze einer neuen Tabelle.
  • Zur Projektion (Anfrage: Wähle Feld) wird die Übertragungsschablone M auf das Feld gesetzt.
  • Zum Verbinden (Anfrage: erstes Feld gleich zweites Feld) ist beim Empfangen eine Speichersteuerung mit mindestens zwei Empfangskanälen von Vorteil, welche mit demselben Rechenkern verknüpft sind, weil das Verbinden auf zwei Tabellen arbeitet. Alternativ können die beiden Tabellen nacheinander zu einem Empfangskanal gesendet werden, oder die Datenblöcke der beiden Tabellen können ineinander verschachtelt an einen Empfangskanal gesendet werden und von dem Empfangskanal in getrennten Puffern gespeichert werden. Falls beide Tabellen in einem Speicher gespeichert sind, die von derselben Speichersteuerung gesteuert werden, können die beiden Tabellen mittels zweier Sendekanäle aus dem Speicher gelesen, vorverarbeitet und an den jeweiligen Empfangskanal gesendet werden. Dabei wird jeder Tabelle ein Sendekanal zugeordnet, so dass die Verarbeitung beider Tabellen parallel durchgeführt werden kann.
  • Der Verbund wird von einem oder mehreren Rechenkernen berechnet, je nachdem auf wie viele Rechenkerne Teilbereiche der zu verbindenden Tabellen verteilt werden, wobei jeweils eine Speichersteuerung Datenblöcke vorauswählt, indem diese Datenblöcke gemäß einigen übereinstimmenden Datenblöcken oder Bits in den Feldern klassifiziert (in anderen Worten ausgewählt und verteilt) werden. Die Verteilungsschablonen D werden auf das erste Feld beziehungsweise auf das zweite Feld gesetzt. Die Übertragungsschablonen M werden entsprechend auf das erste Feld und auf das zweite Feld gesetzt. Jedem Wert, den die Datenblöcke annehmen können, die mittels einer Verteilungsschablone D ermittelt werden, wird ein Empfangskanal zugewiesen, der mit einem Rechenkern gekoppelt ist, und diese Zuweisung wird in einer Verteilungszuordnung d gespeichert. Wenn einem Wert, den die ein oder mehreren Datenblöcke annehmen können, die mittels der Verteilungsschablone D ermittelt werden, kein Empfangskanal zuwiesen ist, wird ein Abbruch angezeigt, beispielsweise falls versucht wird, diesen Wert zu verarbeiten. Eine jeweilige Speichersteuerung ist eingerichtet, alle Datensätze in dem Teilbereich der Tabelle zu durchlaufen, die in einem Speicher gespeichert ist, für den sie zuständig ist, die ein oder mehreren Datenblöcke der Übertragungsschablone M in entweder des ersten Felds oder des zweiten Felds zu ermitteln, je nachdem, ob sie eingerichtet ist, eine erste oder zweite Tabelle zu verarbeiten, den Empfangskanal zu ermitteln und das gesamte Feld zu dem entsprechenden Empfangskanal zu übertragen. Der Empfangskanal ist oder die beiden Empfangskanäle sind eingerichtet, die empfangenen und vorausgewählten Datensätze in zwei getrennten Puffern zu speichern, die der Rechenkern, zum Beispiel der berechnende Prozessorkern, auf paarweise Übereinstimmung überprüfen kann.
  • Zum Sortiere nach, Gruppieren nach oder zur Aggregation kann die Vorverarbeitung verwendet werden, die im obigen Absatz bei dem Berechnen des Verbunds beschrieben wurde. Zusätzlich können für das Verarbeiten weitere Felder eines jeweiligen Datensatzes benötigt werden. Diese können mittels einer größeren Übertragungsschablone M ausgewählt und übertragen werden, mittels welcher neben dem mindestens einem zu vergleichenden Feld weitere Felder eines jeweiligen Datensatzes ausgewählt werden können.
  • Ein Vereinigen erfordert, doppelt oder mehrfach vorhandene Datensätze einer Tabelle zu entfernen. Doppelte oder mehrfache Datensätze können beispielsweise von einem Rechenkern, zum Beispiel einem Prozessorkern, entfernt werden.
  • In Ausführungsformen wird ein Verfahren zum Auswählen beziehungsweise Vorauswählen, Filtern und Verteilen von Datenblöcken gemäß einer vorgegebenen hardware-unterstützten Funktionsweise bereitgestellt, um die Vorverarbeitung der Datenblöcke auf Speichersteuerungen auszulagern, zum Beispiel direkte Speicherzugriff(DMA, direct memory access)-Steuerungen, beispielsweise intelligente Beispiel direkte Speicherzugriff(DMA, direct memory access)-Steuerungen.
  • In Ausführungsformen kann das Verfahren zum Vorverarbeiten bzw. Auswählen von Datenblöcken mittels der Speichersteuerung implementiert werden, zum Beispiel einer direkten Speicherzugriff(DMA, direct memory access)-Steuerung, beispielsweise einer intelligenten direkten Speicherzugriff(DMA, direct memory access)-Steuerung.
  • In einer Ausführungsform wird eine netzwerkbasierte Infrastruktur bereitgestellt, die mehrere verteilte Speichersteuerungen, zum zum Beispiel direkte Speicherzugriff(DMA, direct memory access)-Steuerungen, beispielsweise intelligente direkte Speicherzugriff(DMA, direct memory access)-Steuerungen aufweist, die Datenübertragungen zu und von mehreren Speichern und/oder Prozessorkernen durchführen.

Claims (12)

  1. Verfahren zum Verarbeiten von einem oder mehreren Datenblöcken einer Mehrzahl von Datenblöcken in einem Prozessorsystem mit einer Mehrzahl von Prozessoren, wobei jedem Prozessor mindestens ein lokaler Speicher zugeordnet ist, – bei dem aus einem ersten Speicher, in dem eine erste Mehrzahl von Datenblöcken gespeichert ist, ein oder mehrere Datenblöcke gemäß einem ersten Auswählkriterium als eine erste Menge von Datenblöcken ausgewählt werden; – bei dem die erste Menge von Datenblöcken in einem ersten lokalen Speicher gemäß einem ersten Verteilungskriterium gespeichert wird; – bei dem aus dem ersten Speicher und/oder aus einem zweiten Speicher, in dem eine zweite Mehrzahl von Datenblöcken gespeichert ist, ein oder mehrere Datenblöcke gemäß einem zweiten Auswählkriterium als eine zweite Menge von Datenblöcken ausgewählt werden; – bei dem die zweite Menge von Datenblöcken in einem zweiten lokalen Speicher gemäß einem zweiten Verteilungskriterium gespeichert wird; – bei dem mittels einer Steueranordnung aus der in dem zweiten lokalen Speicher gespeicherten zweiten Menge von Datenblöcken ein oder mehrere Datenblöcke gemäß einem dritten Auswählkriterium als eine dritte Menge von Datenblöcken ausgewählt werden; – bei dem mittels der Steueranordnung die dritte Menge von Datenblöcken in den ersten lokalen Speicher gemäß einem dritten Verteilungskriterium gespeichert wird; – bei dem die erste Menge von Datenblöcken und die dritte Menge von Datenblöcken von dem dem ersten lokalen Speicher zugeordneten Prozessor verarbeitet werden.
  2. Verfahren gemäß Anspruch 1, wobei das Verfahren mehrfach durchgeführt wird, so dass – aus dem ersten Speicher, in dem die erste Mehrzahl von Datenblöcken gespeichert ist, weitere ein oder mehrere Datenblöcke gemäß dem ersten Auswählkriterium als eine weitere erste Menge von Datenblöcken ausgewählt werden; – die weitere erste Menge von Datenblöcken in einem weiteren ersten lokalen Speicher gemäß einem weiteren ersten Verteilungskriterium gespeichert wird; – aus dem ersten Speicher und/oder aus dem zweiten Speicher, in dem die zweite Mehrzahl von Datenblöcken gespeichert ist, weitere ein oder mehrere Datenblöcke gemäß dem zweiten Auswählkriterium als eine weitere zweite Menge von Datenblöcken ausgewählt werden; – die weitere zweite Menge von Datenblöcken in einem weiteren zweiten lokalen Speicher gemäß einem weiteren zweiten Verteilungskriterium gespeichert wird; – mittels einer Steueranordnung aus der in dem weiteren zweiten lokalen Speicher gespeicherten weiteren zweiten Menge von Datenblöcken ein oder mehrere Datenblöcke gemäß dem dritten Auswählkriterium als eine weitere dritte Menge von Datenblöcken ausgewählt werden; – mittels der Steueranordnung die weitere dritte Menge von Datenblöcken in einem ersten lokalen Speicher gemäß einem weiteren dritten Verteilungskriterium gespeichert wird; – die weitere erste Menge von Datenblöcken und eine dritte Menge von Datenblöcken von dem dem weiteren ersten lokalen Speicher zugeordneten Prozessor verarbeitet werden.
  3. Verfahren gemäß einem der Ansprüche 1 oder 2, – wobei der erste Speicher ein lokaler Speicher ist; oder – wobei der erste Speicher ein Hauptspeicher ist.
  4. Verfahren gemäß einem der Ansprüche 1 bis 3, – wobei der zweite Speicher ein lokaler Speicher ist; oder – wobei der zweite Speicher ein Hauptspeicher ist.
  5. Verfahren gemäß einem der Ansprüche 1 bis 4, wobei mehrere Datenblöcke zu einem Datensatz verknüpft sind.
  6. Verfahren gemäß Anspruch 5, wobei ein oder mehrere Datenblöcke ausgewählt werden anhand derer ermittelt wird, in welchem mindestens einen Speicher der Datensatz oder ein Teilbereich des Datensatzes gespeichert werden soll.
  7. Verfahren gemäß einem der Ansprüche 1 bis 6, wobei die Steueranordnung eine direkte Speicherzugriff-Steuerung ist.
  8. Verfahren gemäß einem der Ansprüche 1 bis 7, wobei die Steueranordnung mindestens einen Sendekanal und mindestens einen Empfangskanal aufweist.
  9. Verfahren gemäß Anspruch 8, wobei mehrere Sendekanäle zu einem Empfangskanal senden.
  10. Verfahren gemäß einem der Ansprüche 1 bis 9, wobei ein Betriebssystem steuert, welche Prozessoren zum Durchführen des Verfahrens verwendet werden.
  11. Verfahren gemäß einem der Ansprüche 9 bis 10, wobei der Sendekanal eine Datenstruktur mit den folgenden Elementen aufweist: – Schrittweite, – Auswählschablone, – Auswähloperation, – Auswähloperand, – Verteilungsschablone, – Verteilungszuordnung, – Übertragungsschablone, – Speicheradresse, – Speichergröße.
  12. Vorrichtung zum Verarbeiten von einem oder mehreren Datenblöcken einer Mehrzahl von Datenblöcken in einem Prozessorsystem mit einer Mehrzahl von Prozessoren, wobei jedem Prozessor mindestens ein lokaler Speicher zugeordnet ist, die Vorrichtung aufweisend: – eine Auswählanordnung, die eingerichtet ist, aus einem ersten Speicher, in dem eine erste Mehrzahl von Datenblöcken gespeichert ist, ein oder mehrere Datenblöcke gemäß einem ersten Auswählkriterium als eine erste Menge von Datenblöcken auszuwählen; – eine Verteilungsanordnung, die eingerichtet ist, die erste Menge von Datenblöcken in einen ersten lokalen Speicher gemäß einem ersten Verteilungskriterium zu speichern; – die Auswählanordnung, eingerichtet ist, aus dem ersten Speicher und/oder aus einem zweiten Speicher, in dem eine zweite Mehrzahl von Datenblöcken gespeichert ist, ein oder mehrere Datenblöcke gemäß einem zweiten Auswählkriterium als eine zweite Menge von Datenblöcken auszuwählen; – die Verteilungsanordnung, eingerichtet ist, die zweite Menge von Datenblöcken in einen zweiten lokalen Speicher gemäß einem zweiten Verteilungskriterium zu speichern; – eine Steueranordnung, die eingerichtet ist, aus der in dem zweiten lokalen Speicher gespeicherten zweiten Menge von Datenblöcken ein oder mehrere Datenblöcke gemäß einem dritten Auswählkriterium als eine dritte Menge von Datenblöcken auszuwählen; – die Steueranordnung, eingerichtet ist, die dritte Menge von Datenblöcken an den ersten lokalen Speicher gemäß einem dritten Verteilungskriterium zu speichern; und – einen Prozessor, der dem ersten lokalen Speicher zugeordnet ist und der eingerichtet ist, die erste Menge von Datenblöcken und die dritte Menge von Datenblöcken zu verarbeiten.
DE102013109978.5A 2013-09-11 2013-09-11 Verfahren und Vorrichtung zum Vor-Auswählen, Filtern und Verteilen von Daten in Datenbank-Management-Systemen Withdrawn DE102013109978A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102013109978.5A DE102013109978A1 (de) 2013-09-11 2013-09-11 Verfahren und Vorrichtung zum Vor-Auswählen, Filtern und Verteilen von Daten in Datenbank-Management-Systemen
PCT/EP2014/069154 WO2015036387A1 (de) 2013-09-11 2014-09-09 Verfahren und vorrichtung zum vor-auswählen, filtern und verteilen von daten in datenbank-management-systemen

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102013109978.5A DE102013109978A1 (de) 2013-09-11 2013-09-11 Verfahren und Vorrichtung zum Vor-Auswählen, Filtern und Verteilen von Daten in Datenbank-Management-Systemen

Publications (1)

Publication Number Publication Date
DE102013109978A1 true DE102013109978A1 (de) 2015-03-12

Family

ID=51535426

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013109978.5A Withdrawn DE102013109978A1 (de) 2013-09-11 2013-09-11 Verfahren und Vorrichtung zum Vor-Auswählen, Filtern und Verteilen von Daten in Datenbank-Management-Systemen

Country Status (2)

Country Link
DE (1) DE102013109978A1 (de)
WO (1) WO2015036387A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021104919A1 (en) 2019-11-26 2021-06-03 Signify Holding B.V. Method and system for filtering information in a remotely managed lighting system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7415550B2 (en) * 2003-03-05 2008-08-19 Fujitsu Limited System and method for controlling DMA data transfer
US20100257537A1 (en) * 2002-09-18 2010-10-07 Netezza Corporation Field Oriented Pipeline Architecture For A Programmable Data Streaming Processor
US7934025B2 (en) * 2007-01-24 2011-04-26 Qualcomm Incorporated Content terminated DMA

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100257537A1 (en) * 2002-09-18 2010-10-07 Netezza Corporation Field Oriented Pipeline Architecture For A Programmable Data Streaming Processor
US7415550B2 (en) * 2003-03-05 2008-08-19 Fujitsu Limited System and method for controlling DMA data transfer
US7934025B2 (en) * 2007-01-24 2011-04-26 Qualcomm Incorporated Content terminated DMA

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021104919A1 (en) 2019-11-26 2021-06-03 Signify Holding B.V. Method and system for filtering information in a remotely managed lighting system

Also Published As

Publication number Publication date
WO2015036387A1 (de) 2015-03-19

Similar Documents

Publication Publication Date Title
DE112016001075B4 (de) Verteiltes speichern und abrufen von datensätzen
DE60224432T2 (de) Dynamische und automatische speicherverwaltung
DE102013207049B4 (de) Überwachen der Datenstrompufferung zur Optimierung der Operatorverarbeitung
DE602004011890T2 (de) Verfahren zur Neuverteilung von Objekten an Recheneinheiten
DE10035043A1 (de) Mehrdimensionale Indexierungsstruktur zur Verwendung mit linearen Optimierungsanfragen
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE1499288B2 (de) Datenverarbeitungsanlage
DE102016105526A1 (de) Schnelles mehrschichtiges Indexieren mit Unterstützung für dynamische Aktualisierung
DE112012005030T5 (de) Dynamisch konfigurierbare Platzierungs-Engine
DE112014001361T5 (de) Verfahren, Vorrichtung und computerlesbares Medium für effiziente Ausführung von Operationen an individuellen Datenwerten
DE112013000752T5 (de) Verwalten von Verarbeitungselementen in einem Streaming-Datensystem
DE102009038454A1 (de) System und Verfahren zum Reduzieren einer Ausführungsdivergenz in Parallelverarbeitungsarchitekturen
DE3911465A1 (de) Verfahren zur konfiguration technischer systeme aus komponenten
DE102015013125A1 (de) Vorrichtung, Systeme und Verfahren zur Bereitstellung eines speichereffizienten Caches
DE112005003222T5 (de) Dynamische Allokation eines Puffers auf mehrere Klienten bei einem Prozessor mit Threads
DE102010044529A1 (de) Autonome Subsystem-Architektur
DE112019000627T5 (de) Speicherstrukturbasiertes Coherency Directory Cache
DE60003426T2 (de) Statusbits für cachespeicher
DE112019005043T5 (de) Streamzuweisung unter verwendung von stream-guthaben
DE102006046717A1 (de) Dynamisch migrierende Kanäle
DE60319003T2 (de) Verfahren zur Neuverteilung von Objekten an Recheneinheiten
DE19538448B4 (de) Datenbankmanagementsystem sowie Datenübertragungsverfahren
DE102013109978A1 (de) Verfahren und Vorrichtung zum Vor-Auswählen, Filtern und Verteilen von Daten in Datenbank-Management-Systemen
DE112019005042T5 (de) Ressourcenzuweisung unter verwendung von wiederherstellungsguthaben
DE102013114508B4 (de) Blockbasierte Signalverarbeitung

Legal Events

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