WO2015036387A1 - 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
WO2015036387A1
WO2015036387A1 PCT/EP2014/069154 EP2014069154W WO2015036387A1 WO 2015036387 A1 WO2015036387 A1 WO 2015036387A1 EP 2014069154 W EP2014069154 W EP 2014069154W WO 2015036387 A1 WO2015036387 A1 WO 2015036387A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
data blocks
data
stored
local
Prior art date
Application number
PCT/EP2014/069154
Other languages
English (en)
French (fr)
Inventor
Markus Völp
Tomas Karnagel
Oliver Arnold
Benedikt Nöthen
Benjamin Schlegel
Original Assignee
Technische Universität 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 Universität Dresden filed Critical Technische Universität Dresden
Publication of WO2015036387A1 publication Critical patent/WO2015036387A1/de

Links

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

Definitions

  • Various embodiments relate to a method and apparatus for pre-selecting, filtering and distributing data in database management systems.
  • processors At least one processor-near memory, e.g. a hierarchy of local memories or caches, and at least one memory controller.
  • Such a system has one or more memories which are further away from the processors, e.g.
  • Main memory hard disk storage, or storage attached via a network interface.
  • pre-loading data In order to be able to access the memory more efficiently, optimizations are usually provided, such as the so-called pre-loading of data from the memory. Instructions for pre-loading data can be provided by a
  • a processor that requires data or is issued or issued by a processor that provides a pre-charge service is based as a pull ⁇ called and the latter variant is based as push- referred.
  • Push-based pre-loading of data can be controlled on the processor side or on the memory side.
  • processor-side pre-load a processor determines what data might be needed in the future, for example, and requests that data from a memory before it is needed. For a memory-side pre-charge introduces intelligent memory or equivalent
  • Memory control pre-loads for an application running on a processor.
  • DMA direct memory access
  • the direct memory access not only relieves the processor but can also transfer the data at higher rates than if a processor were to read and write the data from memory.
  • a data record usually has several data blocks. The data blocks of a data set can be stored contiguously and immediately consecutively in a memory or can not be stored contiguously in a memory, for example on several
  • contiguous stored portions of the record do not follow each other directly or may be distributed to multiple memories or memory banks.
  • Distributing and collecting data is a technique for transferring data from a non-contiguous domain
  • Memory block to provide another memory block by means of a series of smaller contiguous data block transfers, wherein the respective memory blocks may be located in a plurality of memories or memory banks.
  • the respective memory blocks may be located in a plurality of memories or memory banks.
  • Memory of the processor cores are distributed and collected from there, for example components of a memory hierarchy, sub-cache components of a hierarchy of cache memories.
  • DMA direct memory access
  • Processor core are connected to a single common memory by means of a network, for example by means of an on-chip network.
  • Distributing and collecting is controlled by a processor core.
  • the data can be processed.
  • tasks of the processor or processors may be too
  • Network interface cards or a hard drive control are outsourced, for example, checking the integrity of data packets, the compression
  • Networks are filtered with a rule-based filter. However, it is desirable not only to filter or generally process packet-transmitted data, but also to transmit continuously
  • processors of the central processing unit (CPU, CPU) or performs a graphics card. Selecting data before further processing, which by means of the calculating processors or
  • Processor cores is carried out, has significant power ⁇ and administrative costs as heavyweight processor cores are covered with a rather trivial pre-processing the data.
  • the data is logically stored in tables, with one table having one or more records.
  • a table or a subarea of a table can be distributed over several database nodes, that is to say distributed over several subareas of a database, whereby a respective database subarea has its own data,
  • data fields of a table with the same data values can be stored close to one another, or tables in a database subarea can each be stored distributed over several data partitions or data areas. How the data is to be distributed is usually chosen by users or application developers. Tables or records that are spread across multiple data partitions, such as large tables, work well for a parallel one
  • the tables such as a database, are not stored as distributed during distribution and collection, but are stored in memory as contiguously as possible to quickly access subsequent data fields or records to be able to access. If one table on several
  • Distributed data partitions are a deliberate compilation of the table that has been compiled with computation time, for example, to expedite frequent future queries. It is not a result or interim result of a
  • Store for example, the local memory of a processor, for example, distributed to the memory or memory banks of a hierarchy of local memory, for example, cache memory.
  • Selection, projection, assembly, sorting, grouping and aggregation can have a technical implementation
  • Compute step in which data is preprocessed for the actual database operation e.g. certain records or data fields are selected.
  • data fields in other words a subset of a data set, may be for a composite
  • Database operations are performed. Energy and power are wasted because the data is typically first loaded into local memories associated with processor cores that perform the preselection, and from which they must be post-preprocessed to the processor cores that perform the database operations.
  • Database operations were performed that calculated Keep data not in local memory, for example, within the local memory hierarchy of a processor or processor core, but into one
  • Storage hierarchy the cache hierarchy or the cache, but in one of several
  • Processors shared or central storage is located, for example, in main memory.
  • the preselection is clearly outsourced in the direction of the memory, whereby unnecessary data transfers are avoided and
  • Database operations can be better integrated into acceleration structures. Arithmetic operators, such as lower-level database operations, are being improved in terms of energy efficiency and performance.
  • the computed data may remain stored in the local memories of the processors or processor cores after processing and may be pre-processed at a later time for the next computation and then transferred to another processor or memory rather than after each computation to write back to memory shared by multiple processors,
  • Pre-selection or filtering is performed during data transfer to the computing processor cores, maintaining control over the placement of the data needed, for example, for placement of data for operating system or database-directed operations.
  • the preselecting or selecting is paged out for communication between the local memories of the computing processor cores and one or more shared memories.
  • the preselection or selection is paged out to the communication between the local memories of the computing processor cores, for example, the communication between the local memory of a computing processor core and the local memory of another computing processor core, in other words the core-to-core Communication.
  • the spreading and collecting may be performed in a memory-controlled manner, for example, cache-controlled.
  • the data can be stored on local memory
  • Memory hierarchy of a processor or processor core distributed and collected from there, for example, the individual local memory of a cache hierarchy.
  • DMA Memory access
  • the transmitter side controls in which destination memory the preselected data is to be stored, for example a local memory of a
  • Processor cores for example, a cache memory.
  • a processor system having a plurality of processors, wherein each processor is assigned at least one local memory, may be composed of a first memory in which a first memory
  • Plurality of data blocks one or more data blocks according to a first selection criterion as one first set of data blocks are selected; and the first set of data blocks may be stored in a first local memory according to a first distribution criterion. Furthermore, in the method from the first memory and / or from a second memory in which a second memory
  • Plurality of data blocks is stored, one or more data blocks are selected according to a second selection criterion as a second set of data blocks; and in the method, the second set of data blocks may be stored in a second local memory according to a second local memory
  • Distribution criterion are stored. Furthermore, in the method, by means of a control arrangement, one or more data blocks may be selected from the second set of data blocks stored in the second local memory according to a third selection criterion as a third set of data blocks; it can be stored by means of the control arrangement, the third set of data blocks in the first local memory according to a third distribution criterion; and the first set of data blocks and the third set of data blocks may be processed by the processor associated with the first local memory.
  • a processor system having a plurality of processors, wherein at least one local memory is allocated to each processor, may have a selection arrangement which is set up from a first memory in which a first plurality of data records is stored, one or more data blocks according to a first selection criterion to select a first set of data blocks; and may include a distribution arrangement configured to set the first set of
  • the selection arrangement can be set up, from the first memory and / or from a second memory, in which a second memory
  • Plurality of data blocks is stored, one or more Select data blocks according to a second selection criterion as a second set of data blocks;
  • Distribution arrangement may be configured to store the second set of data blocks in a second local memory according to a second distribution criterion.
  • the apparatus may comprise a control arrangement which is set up to select one or more data blocks according to a third selection criterion as a third set of data blocks from the second set of data blocks stored in the second local memory.
  • Control arrangement may be arranged to store the third set of data blocks in the first local memory according to a third distribution criterion.
  • the apparatus may further include a processor associated with the first local memory and configured to process the first set of data blocks and the third set of data blocks.
  • the selection arrangement may be distributed among a plurality of selection devices, each one being
  • Selector is connected to one or more memories.
  • the distribution arrangement may be distributed to a plurality of distribution devices, wherein each distribution device is connected to one or more memories.
  • the distribution arrangement is configured to:
  • control arrangement may be distributed to a plurality of control devices, each one
  • Control device is connected to one or more local memories.
  • the method may be multiple
  • Data blocks can be selected; the further first set of data blocks in a further first local
  • Memory can be stored according to a further first distribution criterion; from the first memory and / or from the second memory in which the second plurality of
  • Data blocks is stored, another one or more
  • Data blocks can be selected according to the second selection criterion as a further second set of data blocks; and the further second set of data blocks can be stored in a further second local memory according to a further second distribution criterion.
  • one or more data blocks according to the third selection criterion can be selected as a further third set of data blocks by means of a control arrangement from the further second set of data blocks stored in the further second local memory; By means of the control arrangement, the further third set of data blocks in a first local memory according to another third
  • Distribution criterion are stored; and the further first set of data blocks and a third set of data blocks
  • Data blocks may be from the first local one
  • a first set of data blocks and a further first set of data blocks may be in accordance with a first
  • Selection criterion can be selected. The first lot of
  • Data blocks are sent and stored according to a first distribution criterion to a first local memory. Another first set of data blocks is generated according to a
  • third sets of data blocks are selected from the second sets of data blocks stored in second local memories according to a third selection criterion.
  • the third sets of data blocks are sent to the first local memories and
  • a first set of data blocks and a third set of data blocks which are stored in the same first local memory can be processed by a processor assigned to this memory.
  • the first memory may be a local memory.
  • a local memory is coupled to a processor or processor core and located proximate to the processor or processor core to facilitate rapid access to the local memory from the processor or processor core.
  • the first memory may be a common memory, for example a main memory or a hard disk.
  • Shared memory can be accessed by multiple processors or cores, for example
  • the second memory may be a local memory.
  • common memory such as a main memory or a hard disk.
  • a memory for example, a shared memory such as a main memory or a
  • Hard disk a variety of data blocks to be stored.
  • a first local memory a variety of data blocks to be stored.
  • Memory and a second local memory may be the same local memory.
  • Data blocks and a second set of data blocks are sent to the same local memory and stored there.
  • another first set of data blocks and another second set of data blocks can each be sent to different local memories and stored there.
  • a first local memory and a second set of data blocks can each be sent to different local memories and stored there.
  • Memory and a second local memory may be different local memory.
  • the plurality of data blocks may be stored contiguously.
  • the plurality of data blocks may not be stored contiguously. In yet another embodiment, the plurality of data blocks may be stored distributed over a plurality of memory banks. The majority of the data blocks can also be distributed over several memories. In yet another embodiment, the set of data blocks may be stored contiguously.
  • the set of data blocks may not be stored contiguously.
  • the amount of data blocks may be stored distributed over several memory banks or memories.
  • one or more of the set of data blocks may be stored contiguously.
  • Data blocks can be grouped or linked to a data record.
  • logically linked data blocks that describe a logical context may be grouped or linked to a data set.
  • Group or link records to a set of records For example, logically linked records, for example records having the same logical structure, such as the records of a table of a database, may be grouped or linked into a record.
  • the selection criterion for example records having the same logical structure, such as the records of a table of a database, may be grouped or linked into a record.
  • Data blocks are selected by means of which it is determined whether the data record is processed.
  • the one or more data blocks can be selected by means of which it is determined whether the data record is processed by means of a selection template.
  • the selection template indicates which data blocks, for example which subarea of a respective data record, are to be taken into account in the selection.
  • a selection operation may compare the one or more data blocks that are used to determine whether the data record is being processed to a selection operand.
  • the selection operation can be the subarea of a respective data record with a selector operand
  • the selection operation may be one of the following operations: greater than, less than, greater than or equal to, equal to, less than or equal to, unequal or true.
  • Data blocks are selected by means of which it is determined in which at least one memory of the data set or a portion of the data set to be stored.
  • At least one memory of the record or a portion of the record is to be stored by means of a
  • Distribution template are determined. The
  • Distribution template indicates by means of which subarea of a respective data set is determined to which
  • the distribution criterion can be determined by means of the one or more data blocks, by means of which it is determined in which at least one memory a data set or partial area of the data set is to be stored, and a distribution assignment.
  • the distribution criterion indicates, for example, to which memory the plurality of data blocks are to be distributed, for example to which memory a table or a set of data records is distributed.
  • one or more data blocks of a record may be used as an argument for a distribution map or
  • the data values that comprise these one or more data blocks can be combined to form a data value or value, for example to a vector or a word.
  • the result which is determined by means of the distribution allocation, indicates in which at least one memory the record should be saved. Vividly, a lot of records in
  • Subdivisions are divided, which are distributed to different memory. However, a set or subset of records may also be duplicated to multiple memories.
  • the distribution map may be any value which the one or more data blocks may assume, by which it is determined in which at least one memory the data set or a subset of the
  • Receiving channels are put together in one address.
  • Data blocks of a data set are selected to be stored in at least one memory, for example to be stored in another memory. So it is not necessarily the complete record to be transmitted, but it is also possible to send only a portion of the originally stored record to a memory (or transfer) and store there.
  • Data blocks are selected by means of a transmission template to be stored in at least one memory.
  • the transmission template indicates which one
  • Part of a particular data record is to be transmitted, for example, sent to another memory and stored there.
  • one or more of the data record is to be transmitted, for example, sent to another memory and stored there.
  • Data blocks may not be contiguous, for example one or more subregions of a data set, which are considered for selecting a data set or distributing a data set or which are transmitted.
  • Records are selected by means of the selection criterion to be stored in at least one memory, for example another memory. It can all be
  • Distribution criterion according to the third distribution criterion may be included in the
  • Processor are processed.
  • two sets of records each of a set of records may be checked for match of at least one frame, and the one or more frames on which the award criterion is based are included in that at least one frame. Furthermore, this is at least one data block in the one or more
  • Contain data blocks that are transmitted can also be compared with each other by means of another operation, for example smaller, smaller than, larger, larger than or different.
  • the third set of records is stored in a plurality of local memories, each storing, after saving, all of these multiple local memories
  • the selection template, the distribution template and / or the transfer template may each comprise a singular or a plurality of tuples each having a start position of a range of one or more data blocks and an indication of a
  • Entry of the tuple have the memory address of the first and last bits of the area.
  • the entry can also be the
  • Memory address of the first bit and the size of the area If the area is contiguous, an entry is sufficient to specify the area. If the area is not contiguous, the tuple may have an entry for each contiguous portion of the area.
  • the selection template, the distribution template and / or the transmission template can each have a masking bit sequence which
  • the masking bit string may be a binary vector.
  • the positions of the one or more entries may be merged into one value.
  • the selector may be any organic compound.
  • the selector may be any organic compound.
  • the word or vector which may be formed from the subregion may have the same length as the selection subband.
  • the one or more data blocks from the first or second memory in which a Plurality of data blocks is stored are selected by means of a control arrangement.
  • the first and / or second memory may also be a memory having a control arrangement on which the selection may be performed according to an embodiment.
  • control arrangement may comprise direct memory access (DMA) control.
  • DMA direct memory access
  • control arrangement may be coupled to a field programmable gate array (FPGA). In yet another embodiment, the control arrangement
  • Receiving channel have.
  • multiple transmit channels may transmit to a receive channel.
  • a transmit channel may transmit to multiple receive channels.
  • one or more of the following embodiments may transmit to multiple receive channels.
  • Data blocks are sent continuously, for example in a data stream.
  • one or more data blocks may not be sent continuously
  • one or more blocks of data may be sent in a message containing the
  • Data blocks and their memory size may have.
  • all the data blocks of a data record can be sent in one message, in several messages or the data blocks of multiple records, for example multiple records of a set of records, may be sent in a single message.
  • a message may be received having the one or more data blocks and their memory size.
  • the receive channel may be a
  • the receive channel may receive the received one or more data blocks at the
  • the receive channel may signal an abort if no memory space is available for storing the received one or more data blocks.
  • an operating system may control which processors may be used to perform the method.
  • a database system may control which processors may be used to perform the method.
  • software applications may indicate which processors may be used to perform the method, in other words, how to distribute the blocks of data to the processors.
  • the Software applications may distribute data in memories associated with one processor or processor core to other memories associated with other processors or processor cores, for example. For example, you can
  • Memory e.g. local storage, to be distributed.
  • the software applications may also determine which data to be processed or already processed by the processor in the memory thereof
  • Processors are stored.
  • the software applications can thus obtain results or intermediate results in e.g. local
  • the operating system may provide a user interface between the operating system and
  • Software applications and a configuration interface between the operating system and the hardware are provided. Using the usage interface, software applications communicate how the data blocks are to be distributed or shared among the processors, or whether a requested distribution and / or processing was successful.
  • the configuration interface the operating system configures the memory controllers or arithmetic units, for example the transmission channels. In this case, the operating system can resolve conflicts such as a multiple simultaneous distribution of data blocks on the same processor.
  • the transmission channel a the transmission channel a
  • selection template selection operation, Selection, distribution template, distribution assignment, transfer template, memory address, memory size.
  • Control arrangement activates a transmission channel, initializes the data structure of the transmission channel, in the memory to the
  • a step size can be skipped further by means of the control arrangement in the memory to a memory address and the memory size can be reduced by the step size.
  • the steps for sending can be performed again by means of the control arrangement, for example according to a scheduling.
  • Control arrangement of the transmission channel are disabled and informed the operating system with respect to a completed transmission of a set of data blocks, if the
  • Transmission channel is processed or is stored contiguous.
  • Control arrangement the step size, the memory address and the memory size for a next plurality of data blocks when the memory size after the
  • this step is
  • the operating system may be informed by means of an interrupt.
  • a trigger or triggers may be lowered and the operating system may be lowered by means of a
  • Interrupts are informed when the trigger or trigger reaches zero.
  • the trigger may be implemented by means of a dedicated register of the processor core on which the operating system is executed.
  • selecting one or more data blocks may be performed on the same logical data partition as the processing. For example, selecting one or more data blocks may be performed on the same data partition or partition as the processing. For example, in a local
  • Memory already has a lot of data blocks or records stored. To this memory are more
  • Data blocks e.g. another set of records sent.
  • a processor core to which this memory is allocated leads to the set of data records, possibly also in combination with the further set of data records.
  • Calculations by. By means of a control arrangement but can also be selected from this local memory records and sent to another memory, for example to another local memory with a processor.
  • processing may be performed by a general-purpose processor. In yet another embodiment, the processing may be performed by a specialized processor.
  • processing may be performed by means of a processor core.
  • the performance or specialization of the processor and / or the size of the processor local memory when distributing the one or more data blocks can be predicted in such a way that
  • FIG. 1 shows an architecture with processor units
  • Figure 2 illustrates an architecture with processor cores and memories coupled by a network according to various embodiments
  • FIG. 3 shows an architecture of direct memory access (DMA) with transmit and receive channels according to various embodiments
  • Figure 4 is a diagram of a transmission of data from a
  • Figure 5 is a diagram of a distribution of data to two memories with a computing device according to
  • FIG. 6 shows a flow chart of a method for selecting
  • Figure 7 is a diagram for distributing data to local
  • Figure 8 is a diagram for distributing data to local
  • FIG.l shows an architecture 100 with one or more
  • processor units 102 which may be arranged in a matrix-like manner.
  • a respective processor unit 102 may include one or more processor cores 104, each one
  • Processor core 104 may be coupled to a hierarchy of local memories, for example, a first local memory 106 and a second local memory 108
  • the first local memory 106 may be associated with only a single processor core 104 and the second local memory 108 may be associated with multiple processor cores 104, 110, such as two processor cores 104, 110.
  • the first local memory 106 or the second local memory 108 may be, for example, a cache Memory or a scratchpad memory.
  • the one or more processor units 102 are coupled to one or more common memories 112 accessible to, for example, all of the processor units 102 and correspondingly all the processor cores 102, 110, for example a main memory (also called memory)
  • random access memory for example, a random access random access memory, for example, a double data rate Random Access Memory (DDR-RAM) or a synchronous one Dynamic Random Access
  • DDR-RAM double data rate Random Access Memory
  • DDR-RAM double data rate Random Access Memory
  • SD-RAM Synchronous Dynamic Random Access Memory
  • non-volatile random access memory for arithmetic and logical operations.
  • PCRAM phase change random access memory
  • MRAM magnetoresistance memory
  • Data accessed or being accessed by a processor core 104, 110 currently or in the near future may be stored in the first local memory 106.
  • Data that could be accessed at a later time may be stored in the second local memory 108. If in the first local memory 106 there is no room for more data by the processor core 104, 110 currently or in the near future may be stored in the first local memory 106.
  • Data that could be accessed at a later time may be stored in the second local memory 108. If in the first local memory 106 there is no room for more data by the
  • Processor core 104, 110 may be required for processing, data may be relocated from the first local memory 106 to the second memory 108, such as data that is no longer needed by the processor core 104, 110, or most likely will not be needed in the near future.
  • data may be read and stored in the local memories 106, 108
  • the data from the shared one or more memories may first be stored in the second local memory 108, which is further away from the processor core 102, 110. If this data is then needed by the processor core 102, it may be loaded into the first local memory 106, which is coupled directly to the processor core 102.
  • the shared memory 112 for example a main memory, may include a plurality of memory banks.
  • the hierarchy of local memories such as the first and second local memories 106, 108, may include a plurality of memory banks in their entirety.
  • single local memory 106, 108 have a plurality of memory banks.
  • tables can be a database in the
  • Main memory 112 may be stored or in the local
  • each local memory 208, 210, 212 may be associated with a single processor core 202, 204, 206.
  • Each local memory 208, 210, 212 may be one or more memory banks.
  • a local memory 208, 210, 212 may be, for example, a cache memory or a scratch pad memory.
  • the local memories 208, 210, 212 are connected to a network 218 via one or more memory controllers 214, 216.
  • one local memory 208 and another local memory 210 may be the different ones
  • Computing cores 202, 204 are assigned by means of a
  • common memory controller 214 may be connected to the network 218. Another local storage 212, the
  • processor core 206 is also associated with a single processor core 206 may be connected by means of a separate memory controller 216 to the network.
  • the architecture 200 includes one or more shared memories (not shown), which may include a plurality of memory banks 220, 222, 224, 226, for example
  • Example memory banks of a main memory which all processor cores 202, 204, 206 can share.
  • the memory banks 220, 222, 224, 226, which can be accessed together, are also connected to the network 218 by means of one or more memory controllers 228, 230, 332.
  • a memory controller 228 may be associated with a plurality of memory banks 220, 222,
  • Memory controller 230, 232 may be associated with a single memory bank 224, 226.
  • Network 218 connects shared memory banks 220, 222, 224, 226 to multiple processor cores 202, 204, 206.
  • the processor cores 202, 204, 206 may be shared, may be memory controllers that provide direct memory access, also referred to as DMA controllers.
  • a memory controller is arranged in each case in the vicinity of the memory, the memory or the memory banks which controls it and which it accesses, for example reading or writing.
  • the memory controllers 212, 216 which control the local memories 208, 210, 212 of one or more processor cores, are located in the vicinity of the respective local memory 208, 210, 212 or processor cores 202, 204, 206, for example in the vicinity of the computing processor core ,
  • FIG. 3 shows an architecture 300 for the direct
  • DMA direct memory access
  • a memory 302 is connected to a memory controller 304
  • the DMA controller 304 may
  • two receiving channels 306, 308 have. Data may be sent to these receive channels 306, 308, for example, via transmit channels 310, 312, 314 of other DMA controllers 316, 318, 320.
  • a DMA controller 304, 316, 318, 320 may include one or more channels.
  • Receive channel associated memory for example, a cache, is responsible.
  • a DMA controller 304, 316, 318, 320 may include any number of transmit channels 310, 312, 314, 322 or receive channels 306, 308, 324.
  • a DMA controller 304 has two components
  • Another DMA controller 316 has two transmit channels 310, 322.
  • Another DMA controller 318 each has a transmit channel 312 and a
  • Yet another DMA controller 320 has only one transmit channel 314, for example, a DMA controller connected to a read-only memory, for example, a data archive memory. Also on a store somewhere
  • read-only access could be used.
  • DMA controllers may also have more than two channels, more than two transmit channels, or more than two receive channels.
  • a receive channel can be connected to multiple transmit channels.
  • a first receive channel 306 of a DMA controller 304 connected to a memory 302 may be connected to two transmit channels 310, 312 of two different other DMA controllers 316, 318.
  • a second receive channel 308 of the memory controller 304 connected to the memory 302 may be connected to a transmit channel 314.
  • data may be sent which is to be stored in the memory 302.
  • data for example data sets, sets of data sets or tables, in the form of partly contiguous data blocks and partly not
  • Plurality of data blocks of a predetermined size for For example, a record starting at a memory address a is stored contiguously. Immediately following or at a certain distance, the next singular or plurality of data blocks of this size, for example the next data record, may be stored contiguously. In each case, one or more contiguous data blocks of constant size can be stored at intervals of a constant increment, for example one or more data records which have an overall size s.
  • a further single number or a plurality of data blocks of this size can subsequently be stored with a respective constant distance, for example, the data blocks with a different constant distance s' can be stored beginning with the other memory address.
  • Memory address a are stored, and the data blocks, which starting with the other memory address a '
  • a set of records or a spreadsheet can also be split up into more than two memory areas, for example
  • Example of a table of a database the same size.
  • Data is transmitted from a transmit channel 310, 312, 314 to a receive channel 306, 308 via a network.
  • a size of this received data may be communicated, for example a memory size of the received data. For example, upon receipt of a first portion of a record or set of records, the size of that portion may be communicated. If the subsequent sections are the same size, the size does not need to be communicated again.
  • the data or portions of a record and the size can be received in a message,
  • the network transmits data or messages that it transmits before
  • the receiving DMA controller 304 thus has the complete message or the completely transmitted subarea of a data record available.
  • one or more blocks of data of the size that they are contiguously stored in memory 302 may be received.
  • a record may each be received in a message and then stored contiguously in the memory 302.
  • the DMA controllers 304, 316, 318, 320 can be uniquely addressed, for example, by identifying the processor core with which they are
  • the DMA controllers 304, 316, 318, 320 may be interconnected by any network that meets the requirements described above.
  • the network may, for example, be a network which packet-transmits data, for example an on-chip network or a network off-the-chip. : off-chip network), or the network can be any other
  • a channel-to-channel communication scheme in which transmitter-side channels perform selection or pre-selection of data before the data is sent to the receiver side
  • Channels are forwarded, which place the received data in a destination memory.
  • the transmitter-side channels may read and select data from local memories that
  • Associated processor cores which process the data and store results of processing in a memory, for example in the form of a prepared database table.
  • the data can be sent from the transmitter-side channels to channels which also belong to a local memory
  • associated with the local memory is associated with a processor core processing the data.
  • the data may also be sent to channels associated with shared memory, for example main memory.
  • the transmitter-side channels may read and select data from memories that none
  • Each DMA controller 304, 316, 318, 320 may have a single or a plurality of transmit channels 310, 312, 314, 322 or
  • Receive channels 306, 308, 324 may be provided with distribution-and-collection support to facilitate collection of non-contiguous
  • Data blocks for example, from a data set, a set of data sets or a table, and distributing to non-contiguous storage regions in the destination memory, wherein the data blocks are preprocessed during the collection, for example selected.
  • multiple streams can be multiplexed over a single network connection.
  • preprocessing of the data for example selecting blocks of data, may be performed in parallel.
  • FIG. 4 shows a diagram 400 of transferring data from one memory 402 to another memory 404 according to various embodiments.
  • a first memory 402 may include a first set of records 406, for example a table of a database.
  • the first memory 402 is connected to a first memory controller 408, for example, with a DMA controller, which
  • Memory 402 can optionally be assigned a first computing device 410 by means of which data stored in the first memory 402 can be processed.
  • the first computing device 410 can optionally be assigned a first computing device 410 by means of which data stored in the first memory 402 can be processed.
  • Memory 402 may be a local memory or a main memory.
  • the second memory 404 includes a second memory controller 412, for example a DMA controller, which may receive data or records.
  • a second memory controller 412 for example a DMA controller, which may receive data or records.
  • the second memory controller 412 for example a DMA controller, which may receive data or records.
  • Memory controller 412 receive records received from a first memory controller 408 are sent.
  • the second memory controller 412 stores the received data sets in the second memory 404, for example as a second set of data records 414, for example a table of one
  • the second memory 404 may optionally be associated with a second computing device 416.
  • the second memory 404 may be a local memory or a main memory.
  • one or more circuits may be associated with the first memory 402 or the second memory 404 to complex or complex depending on the nature of the circuit or circuits
  • the first memory 402 or the second memory 404 may include a microprocessor, such as a central processing unit (CPU), a graphics card processor, an application-specific processor
  • ASIP Instruction set
  • Sorting algorithm or be assigned to a processor core.
  • the first memory 402 or the second memory 404 may be associated with different types of computing devices.
  • the computing device 410, 416 may be coupled to the memory controller 408, 412.
  • FPGA programmable gate array
  • Selection procedure in the data stream of the direct Memory access (DMA) reduces delays during data transmission.
  • Computing device 410, 416 which is coupled to a memory controller 408, 412, the memory 402, 404 be assigns another computing device assigns, for example, a
  • the third set of records 418 may be any one
  • Time have been sent to the second memory 404 or from a second computing device 416 to a
  • the third set of records 418 may be executing a calculation in the second memory 404
  • the calculation or task assigned at a different time may be accessed by the third set of records 418.
  • simple computational operations for example, selecting records that satisfy a particular condition, or selecting portions of records, may be performed by the memory controller 408, 412, for example, by an intelligent one
  • Memory control for example from a smart DMA controller, and the result in a new set of
  • Data records or a table are stored in memory 402, 404 associated with memory controller 408, 412.
  • a second computing device 416 When associated with the second memory 404 is a second computing device 416, for example, a computing device 416 that performs complex arithmetic operations
  • Computing device 416 records or sets of records 414, 418 stored in the second memory 404, to process.
  • the second computing device 416 may, for example, as the second set of records 414, which has just been written to the second memory 404, and the third set of records 418, which was written into the second memory 404 some time ago Result or intermediate result of another calculation by means of the second computing device 416, in common
  • Software applications can determine which data 414, 418 is stored in a memory 402, 404, e.g. a computing device 410, 416 may be associated.
  • Software applications may plan and control further calculations such that results or intermediate results in e.g. Local storage can be accessed without having this data previously stored in a central store or a
  • Main memory must be stored.
  • FIG. 5 shows a diagram 500 of distributing data from a memory 502 according to various embodiments to two further memories 504, 506, which are each coupled to a computing device 508, 510.
  • a first memory 502 is a first one
  • Memory controller 512 for example, connected to a DMA controller, which can read data from memory, select and send to other memory 504, 506.
  • the first memory 502 for example a main memory, one or more data blocks or even a plurality of data blocks can be stored.
  • the data blocks may be grouped into records, for example, records of a table of a database.
  • one or more records may be grouped into a set of records, for example, a table of a database.
  • the first memory 502 may include a singular, a plurality, or a plurality of datasets, and also sets of datasets.
  • the first Memory 502 may be, for example, a first set of
  • Memory controller 512 one or more records are selected, for example, from the first set to records 514.
  • the selected records can be sent to the
  • Memory controllers 516, 518 further memory 504, 506 are sent.
  • a second memory 504 for example a local memory, is provided with a second memory controller 516, for example a DMA controller, and a computing core 508 of FIG.
  • Memory 506 is connected to a third memory controller 518, for example a DMA controller, and a specialized memory controller
  • Processor 510 coupled, for example, with a field
  • FPGA programmable gate array
  • a request to a database might include the task of having a table containing, for example, the first set of
  • Records 514 is to sort by the last names of the entries, with each record of the table (or the
  • the table can be divided into subareas which are sent to a plurality of computing devices 508, 510 with a local memory 504, 506 for sorting
  • Computing devices 508, 510 may be of different type or different construction.
  • the first memory controller 512 may, for example, all
  • Records of the first set of records 514 relating to persons whose last name begins with "M” are sent to the third memory controller 518, which stores that set of records 520 in the third memory 506 If there can be many surnames starting with "M”, it can be assumed that the table has many records of persons whose last name starts with "M". However, the number of last names beginning with "M" may also have been determined at any time
  • specialized processor 510 can sort the many data sets faster than a heavy weight processor core of, for example, a central processing unit (CPU), which can be considered in the distribution of the data.
  • CPU central processing unit
  • the first storage device 512 may further include all records of the first set of records 514 relating to persons whose last name begins with "X" to the second
  • Memory controller 516 that stores this set of records 522 in the second memory 504. For example, because there may be a few surnames beginning with "X", these records are taken from a processor core 508
  • preprocessing may be introduced during which the data is pre-selected, the individual computing cores thereafter
  • This preprocessing can be carried out in parallel.
  • the records of the persons with "M”, the persons with "X” as well as the persons whose surnames begin with other initial letters can parallel
  • FIG. 6 shows a flow chart 600 of a method for
  • Memory address a also referred to as start address a, one or more data blocks stored. At intervals, each corresponding to a step size ⁇ , one or more further data blocks are stored in each case until a
  • a logically connected set of data blocks may be included, but not all data blocks of the logically connected set of data blocks within the memory area between the start address a and the start address a is added to the memory size s to be arranged.
  • the logically contiguous set of data blocks may be a table of a database
  • Records can have subsets, for example
  • Data blocks are selected. For example, one or more blocks of data may be selected to determine whether the record is being processed, for example stored at a different memory address in the same or different memory. It is also possible to select one or more data blocks, by means of which it is determined in which memory the data record or a subarea of the data record is to be stored. Further, one or more data blocks may be selected to be stored in memory to be stored, for example, as a subsection of the original record.
  • the one or more data blocks, with which it is determined whether the data record is to be processed, can be specified by means of a selection template F.
  • the one or more data blocks by means of which it is determined in which memory the data record or a subarea of the data record is to be stored, can be specified by means of a distribution template D.
  • the one or more data blocks which are selected to be stored in another memory may be indicated by means of a transmission template M.
  • a respective template ie a selection template F, a distribution template D or a transfer template M, indicates either the start position and the end position of contiguously stored bits or data blocks, or corresponds to a mask.
  • a mask indicates which bits or data blocks of a sequence of data blocks should be selected.
  • Related data blocks can be considered as one value.
  • Non-contiguous blocks of data can be stored in
  • a template selects bits "1", “4", "7” from the data block sequence "0100 1010", the selected and newly formed value is "110", with the first bit of the data block sequence being the index "0" is assigned.
  • the one or more data blocks which are used to determine whether the data record is to be processed, can be calculated by means of an arithmetic operation 0, in the following
  • Selected selector X are compared.
  • Selector X has at least as many bits as can be specified by means of the selection template F.
  • the selection field X can have the same number of bits as can be specified by means of the selection template F.
  • the selection operation 0 may make the arithmetic operation greater than, less than, greater than or equal to, equal to, less than or equal to, unequal or true.
  • the one or more data blocks used to determine in which memory the data set or a subset of the data set is to be stored are used as the argument of a distribution map d.
  • Distribution Assignment d is a mapping that, for each value that can be selected by means of the distribution template D, has an identification of a receive channel of a memory controller associated with a memory or processor. Different values, which the one or more data blocks can assume, can be assigned different identifications or the same
  • Labels for example, if there are fewer processor cores than letters in the alphabet and a table after
  • Processor core to be processed.
  • the distribution map d may be a table that is implemented, for example, in a portion of a memory 604, for example
  • each value obtained can be, if the set bits of the distribution template D are read from the memory, an address of a
  • Distribution map d have an entry for each of these values.
  • Each entry may include the unique network address of the receiving memory controller and the identifier of a receive channel within that controller. All the information needed to determine where a set of data blocks should be distributed, in other words to which receive channel to send a set of data blocks or where to store a set of data blocks, form the distribution criterion.
  • Distribution assignment d form the distribution criterion.
  • Data blocks for distribution, storage in another memory, or storage in another collection of data blocks form the selection criterion, for example, the selection template F, the selection operation 0, the selection mode X, and the transmission template M.
  • the one or more data blocks are written by means of a or more transmit channels read from memory and on
  • Each transmit channel has a data structure, for example a configuration register, which has the following variables or registers:
  • Distribution template D Distribution assignment d
  • the memory controller activates a transmit channel by using the data structure described above and leads them to the foot of the hill, where it is called, OOppeerraattiioonneenn for every one of them aakkttiivveenn SSeennddeekkaannaall aauuss ..
  • the memory controller continues to read the data blocks at the memory address a, wherein the Memory address a now the position of the next data block to be read in consideration of Selection template F, so that the first entry of the selection template F indicates the first data block to be read for selection of the next one or more data blocks. If several transmit channels are active, they can be changed according to a built-in schedule. In a
  • Switching the transmission channels can be in the concentricity or according to priorities
  • Data blocks are maintained, for example, the transfer of all stored within a contiguous memory region relevant amount of data blocks or all data blocks of a logical unit.
  • the transmission channels can also be changed according to other schemes, such as more complex schemes.
  • step 612 it is checked if the memory size after fitting is greater than zero. If the query in step 612 shows that there is no memory space for data blocks to be read, for example if the remaining one
  • Memory size s is zero or negative, the memory controller disables the previously activated transmit channel and informs the operating system in step 614 about the
  • the memory controller may have a
  • Interrupt or reduce a value in a dedicated or assigned register will trigger the processor core on which the operating system is running, triggering an interrupt when the value becomes zero.
  • the memory controller reads the one or more data blocks (for example bits or bytes) specified by means of the transmission template M and the one or more data blocks (for example bits or bytes), which are indicated by means of the distribution template D.
  • the memory controller calculates, by means of the one or more data blocks specified by means of the distribution template D, the value for determining the address of the
  • Receive channel determines the address or label of the receive channel based on this value and the distribution map d.
  • step 618 the memory controller sends the
  • Data blocks read and determined by means of the transmission template M as a message to the detected reception channel and proceeding to step 610 as in the case that the evaluation of the selection operator 0 would have resulted in step 608 incorrectly.
  • the memory controller does not terminate the transmission if the memory size s after adjusting indicates that there is no memory space for data blocks to be read, for example, the remaining one
  • Memory size s is zero or negative. Instead, the memory controller checks to see if more one or more blocks of data are to be read in another part of the memory managed by it, for example because the further data blocks are logically united or linked to the previously read data blocks. Instead, the memory controller in the data structure of the transmission channel matches the pitch ⁇ , the memory address a, and the memory size s of the data for reading the others
  • Data blocks reads the first data blocks, which are filtered by means of the selection template F, and continues with the evaluation of the selector 0 in step 608. Only when no further data blocks are to be read, does the memory controller deactivate the previously activated one
  • multiple transmit channels may transmit to a receive channel.
  • multiple transmit channels of the same memory controller may become one
  • Send receive channel For example, a respective transmission channel of a memory controller one or more
  • contiguous storage region are stored at a constant distance.
  • a receive channel may receive data blocks from one or more transmit channels, wherein a memory controller may include one or more receive channels.
  • Each receiving channel has a data structure or a configuration register which, for example, a
  • the memory controller sequentially stores the one or more data blocks received from the receive channel at the memory address a stored in the data structure or the configuration register of the
  • Receiving channels is stored.
  • Memory controller reduce the memory size s in the data structure by the size that will be specified in the received message.
  • the receiving channel or the memory controller can also determine the memory size s of the data blocks to be stored, for example as the received quantity added with an additional distance.
  • the available memory size s is reduced before the one or more data blocks received in a message are stored. In one embodiment, the available
  • Memory size s each reduced by the size of one or more data blocks to be stored, before this
  • Memory blocks are stored. If insufficient space is available to store the one or more data blocks to be stored, for example, the memory controller signals an abort and blocks others
  • FIG. 7 shows a diagram 700 for distributing data to local memories 702, 704 according to various
  • a first memory 706 for example a
  • a first table 708 is stored, the records of which have a name 710 of a person and the street 712 in which that person resides.
  • the records of the first table 708 may also have other attributes (not shown), for example the house number or the place of residence.
  • the first memory 706 is associated with a first memory controller 714, For example, a memory controller 714 that provides direct memory access (DMA) and selects data blocks.
  • a second memory 716 for example a
  • a second table 718 is stored, whose records include a name of a person 720 and the telephone number 722 of this
  • the second memory is associated with a second memory controller 724, for example a memory controller 724, which has a direct memory controller 724
  • DMA memory access
  • a third table 726 is stored, which as an attribute of a data set
  • the third table 726 may also have further attributes.
  • the first table 708 may have a record of a "Hans” residing in the "A Street.”
  • the second table 718 may have a record of a "Hans” with the phone number "3145”.
  • the telephone number "3145” together with the telephone cost "4.50 euro” may be stored in a record.
  • the first, second, and third tables 708, 718, 726 may be tables of a database.
  • the task is given to the database, the names and
  • first the first table 708 and the second table 718 are processed
  • the first table 708 and the second table 718 may be preprocessed in any order, for example, the first table 708 may be preprocessed first and then the second table 718 or vice versa. Both tables 708, 718 can also be preprocessed in parallel, ie at the same time.
  • the selection template F is set to the first letter in attribute that corresponds to the street name, wherein an attribute is also referred to as a field.
  • Selection mode X is set to "A" and as
  • Selection operation 0 uses the equal operation.
  • the database management system may set these variables or registers to the first memory controller 714 or to a transmit channel associated with the first memory controller 714, for example, to request the appropriate settings from the operating system.
  • Memory controllers 736, 738 distributed. For example, all records of persons whose name begins with "A" are sent to the third memory controller 736, or to a receiving channel (not shown) thereof
  • Memory controller 736 which stores the received data sets as a fourth table (not shown) in the first local memory 702.
  • the fourth table may be in a local cache (not represented), which is the third
  • Memory controller 736 is assigned, for example, when the records are received such that the name
  • Memory controller 738 stores. For the distribution described above, the
  • Distribution template D set to the first letter or the first letter of the attribute, which has the name.
  • the third memory controller is assigned to the letter "A” and the fourth memory controller is assigned to the letter "H”.
  • the transfer template M is set to the attribute with the name, because only the name is needed for the following calculations and should therefore be transmitted. Thus, for each record selected using the selection template F, only the field with the name is sent.
  • the database management system may set the distribution template D and the transmission template M as variables or registers of the first memory controller 714 or a transmit channel associated with the first memory controller 714, for example, setting the variables or registers in the operating system
  • the fifth table for example one
  • the second memory control 724 also stores, from the second table 718 stored in the second memory 716, the data records corresponding to the initial letter of a respective person's name to the third memory controller 736, the fourth memory controller 738, and possibly further memory controllers (FIG. Not
  • Selection template F is used or the selection operation 0 is set so that all data sets are selected.
  • Distribute may request the database management system, for example, in the operating system, the corresponding setting of the variables or registers of the second
  • Memory controller 724 associated transmit channels request.
  • the distribution template D of the second memory controller 724 becomes analogous to the distribution template D of the first
  • Memory control 714 set to the first letter of the attribute, which has the name.
  • the distribution map d of the second memory controller 724 has the
  • Distribution map d of the first memory controller 714
  • distribution maps d can also be used
  • the first Table in the attribute "name” store the last name and the second table in the attribute "name" the first name followed by the last name or "surname"
  • Transfer template M of the second memory controller 724 set to the attributes "name” and "phone number”.
  • the first local memory 702 has a sixth table (not
  • the second local memory 704 has a seventh table (not shown) containing all the names and the second table 718 whose name begins with "A"
  • Alphabet begins to be analogously distributed to the first or second local memory 702, 704 or other local memory (not shown), that is, to these memories
  • any combination of letters for example, the first three letters or the second and the last letter.
  • the two tables are compared with each other and keep only entries contained in both tables
  • the join of these two tables is calculated, for example, the database management system can request that the composite be calculated by the respective calculation kernel.
  • the cores 732, 734 check, in pairs, all records in the two tables in the respective local memories 702, 704, and compare whether the content of the attribute "name" is identical, if the content of the attribute "name” is identical , the record is stored in a new table 740, 742 in the local memory 702, 704 associated with the respective computational kernel 732, 734. After computation of the composite, the first local table 740, 742 in the local memory 702, 704 associated with the respective computational kernel 732, 734. After computation of the composite, the first local
  • Memory 702 has an eighth table 740 that has records with the attributes "Name” and "Phone Number", only entries of persons residing in a street starting with "A". Also, the second local memory 704 points such a ninth table 742. In the eighth table, for example, only data sets of
  • Compilation computation requires fewer comparisons when the records in the tables to be compared are sorted according to the one or more attributes to be compared, for example, sorted alphabetically.
  • the "Name” attribute is sorted in the same order and this sorting is preserved while the records are being transferred, the records of one or both tables in a local cache of their respective ones
  • Memory controller 736, 738 are stored.
  • first the first table 708 is transmitted from the first memory 706, and the data records of the second table 718 are transmitted from the second memory
  • Memory 716 are received after all records of the first table have been received by a respective memory controller 736, 738. Alternatively, it may be assumed that records from the second table 718 are not processed until the record of the first table 708 needed for a respective comparison has been received, and the processing pauses until the record of the first table 708 needed for the comparison is received, if this should not be the case.
  • a computational kernel 732, 734 such as a field programmable gate array (FPGA), such as a field programmable gate array coupled to a memory controller 736, 738, may select the received data sets selected from the second memory 716 and are compared with the first record in the buffer memory, the records in the buffer memory having been selected and read from the first memory 706 and having only the attribute "name.” If the names are identical, the received record becomes the second one Memory 716 in local memory 702, 704 which memory controller 736, 738
  • FPGA field programmable gate array
  • Caches are cleared so that the next record is at first position or the position is marked in a different way without deleting a record. If the
  • the received record from the second memory 716 is discarded, not stored. Thereafter, the next received data record is used to process analog from the second memory 716.
  • FIG. 8 shows another diagram 800 for distributing data to local memories 802, 804, 806 according to various
  • a first memory 808 for example a
  • a first table 810 is stored whose records have a name of a person and the street where that person resides.
  • the first memory 808 is associated with a first memory controller 812,
  • a memory controller 812 that provides direct memory access (DMA) and selects data blocks.
  • DMA direct memory access
  • a second memory 814 for example a
  • Memory is associated with a second memory controller 818, such as a memory controller 818 that provides direct memory access (DMA) and can select data blocks.
  • DMA direct memory access
  • a third table 820 is stored, which as an attribute of a data record a
  • Telephone number 822, the telephone costs 824 and optional other attributes may be stored in a record.
  • the first table 810 may have a record of a "Hans” residing in the "A Street.”
  • the second table 816 may have a record of a "Hans” with the phone number "3145”.
  • the telephone number "3145" together with the telephone cost "4.50 euro” may be stored in a record.
  • both the first, second and third tables 708, 718, 726, 810, 816, 820 and tables 740, 742, 826, 828 in the local memories 702, 704, 802, 804 may be tables, that knows the database management system. Instead of accessing the first and second tables and re-entering the names and phone numbers of all persons
  • the third table 820 is preprocessed, that is, records with the attributes sought are selected and distributed to memories 802, 804, 806, their associated computation units 828, 830, 832 or memory controllers 834, 836, 838 thereafter Perform calculations. Further, a fourth and a fifth tables 740, 742, 826, 828 are forwarded to the telephone numbers of all persons residing in a street beginning with "A" and distributed to local memories 802, 804
  • tables with the names of the persons living in a street beginning with A may still be stored in the respective local memories 802, 804 (not shown).
  • the third table 820, the fourth table 826 and the fifth table 828 can be processed or preprocessed in any order. Further, tables 820, 826, 828 may be preprocessed sequentially, in parallel, or in part sequentially and partly in parallel. To determine all matching phone number pairs in the third and fourth tables 820, 826 and the third and fifth tables 820, 828, the tables 820, 826, 828 according to the first digit of the telephone number are written to the local memories 802, 804, 806 distributed.
  • the local memories 802, 804, 806 distributed are written to the local memories 802, 804, 806 distributed.
  • Distribution criterion is arbitrary in this example, the telephone numbers could just as well be distributed according to the second, third or last digit or according to a combination of several digits.
  • the selection mode X is set to "4" and the selection operation 0 to "greater”.
  • the first memory controller 812 reads in each record of the third table 820 the last digit of the telephone number field and evaluates the 0 selector operation. If the last digit of the telephone number is greater than "4", ie the evaluation delivers the value true, further data blocks are used according to the
  • the transfer template M is based on the attributes
  • Telephone number and telephone costs for transmission and storage in another memory are read and selected.
  • the distribution template D is set to the first digit of the phone number attribute.
  • Distribution map d and the data block, which is determined on the basis of the distribution template D, that is, the first digit of the telephone number, are the selected ones
  • Data records are distributed to other local memories 802, 804, 806.
  • the digit "1" becomes the first local one
  • Memory 802 the numeral “2" to the second local memory 804, the numeral “3” to the third local memory 806 and so on.
  • a local memory may be stored for each digit (not shown).
  • a computational core such as a processor core.
  • the first local memory 802 stores a sixth table 842 having only telephone numbers beginning with "1" and their telephone costs.
  • a seventh table 844 only telephone numbers beginning with "2" and having their telephone costs.
  • an eighth table 846 is stored, which
  • the fourth and fifth tables 826, 828 are processed with the telephone numbers of all persons residing in a street beginning with "A" and distributed to multiple local memories 802, 804.
  • the selection template F associated with the respective memory controller 836, 838 or a respective transmission channel may be set to the last digit of the telephone number field.
  • the selection mode X is set to "4" and the selection operation 0 to "greater”. This step is optional, all records can be distributed according to the first digit of the phone number, because the third
  • Table 820 is filtered accordingly.
  • the records of the fourth and fifth tables 826, 828 could be filtered according to the last digit of the telephone number and the third table 820 completely distributed.
  • Memory controller 836, 828 or assigned to a respective transmission channel can be set to the name and telephone number attributes or only the attribute telephone number, so that from each record that satisfies the selection operation 0, the fields telephone number and telephone costs or only the field telephone number to transfer and storing in another memory.
  • the respective memory controllers 836, 838 are
  • the digit "1" is assigned to the first local memory 802, the digit "2" to the second local memory 804, the digit "3" to the third local memory 806 and so on.
  • a ninth table 848 is stored in the first local memory 802, including, for example, only
  • the second local memory 804 stores a tenth table 850 having only telephone numbers beginning with "2.”
  • the third local memory 806 stores an eleventh table 852 having only telephone numbers beginning with "3". for example the
  • the two tables which are respectively stored in the same local memory 802, 804, 806, are the sixth and ninth tables 842, 848 , the seventh and tenth tables 844, 850 and the eighth and eleventh tables 846, 852 together
  • the calculation cores 830, 832, 834 check for each pairwise all records in the two tables and
  • the records may be stored in a twelfth table (not shown) in the local memory 802, 804, 806 corresponding to the respective one
  • calculating arithmetic core 830, 832, 834 is assigned.
  • the telephone cost of the currently compared data set may be added directly to a sum of the telephone costs without creating the table.
  • calculation cores 830, 832, 834 have each calculated the combination of the two tables as a new table without already forming the sum, the sum of the telephone costs can be calculated in a subsequent step.
  • the computing cores 834, 836, 838 such as field programmable gate array (FPGA) devices, such as field programmable gate arrays coupled to a respective memory controller 836, 838, 840, respectively form the
  • FPGA field programmable gate array
  • the database management system may include the variables or registers of a respective one of
  • the database management system may request that Calculation cores should carry out calculations, eg calculation cores to which suitable local data are assigned.
  • pre-processing of data is supported by lower-level database operators.
  • Data blocks of a data record in other words one or more fields, will be traversed by a table, that is, each record of the table will be visited.
  • the field will be for each record
  • the step size ⁇ can be the size of a data set
  • Transfer template M is set to the field.
  • a respective memory controller cycles through the portion of the table stored in a memory for which it is responsible and outputs all appropriate fields, for example, as records of a new table.
  • Transfer template M is placed on the field.
  • connection request: first field equal to the second field
  • a memory controller with at least two receive channels, which are linked to the same arithmetic kernel, is advantageous in receiving because the connection is based on two tables
  • the two tables may be sequentially sent to a receive channel, or the data blocks of the two tables may be interleaved to a receive channel and stored by the receive channel in separate buffers. If both tables are stored in a memory that is the same
  • Memory control can be controlled, the two Tables are read from the memory by means of two transmission channels, preprocessed and sent to the respective receiving channel. Each table is assigned a send channel, so that both tables are processed in parallel
  • the composite is made up of one or more cores
  • each one memory controller pre-selects data blocks by this
  • the distribution templates D are set to the first field or to the second field.
  • the transfer templates M are set to the first field and the second field, respectively. Any value that the data blocks can accept, which can be determined by means of a
  • Distribution template D is determined is a
  • Assigned receiving channel which is coupled to a calculation kernel, and this assignment is stored in a distribution map d. If one value is one or more
  • Distribution template D is determined, no receiving channel is assigned, an abort is displayed, for example, if an attempt is made to process this value.
  • respective memory controller is adapted to iterate through all the data sets in the subregion of the table stored in a memory for which it is responsible, for the one or more data blocks of the transmission template M in either the first field or the second field
  • the receive channel or both receive channels are set up to receive the received and preselected data sets in two separate buffers
  • the calculation kernel such as the computing core, can check for pairwise match.
  • a join requires removing duplicate or multiple existing records from a table. Double or
  • multiple records can be from one
  • Quorum for example, a processor core removed.
  • DMA direct memory access
  • Controls such as intelligent example direct memory access (DMA) controllers.
  • DMA direct memory access
  • the method of pre-processing data blocks may be implemented by means of the memory controller, for example, a direct one
  • DMA control such as intelligent direct memory access (DMA) control.
  • a network-based network In one embodiment, a network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-based network-
  • DMA direct memory access
  • DMA intelligent direct memory access

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

Beschreibung
Verfahren und Vorrichtung zum Vor-Auswählen, Filtern und Verteilen von Daten in Datenbank-Management-Systemen
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. Die Software-Anwendungen können Daten in Speichern, die einem Prozessor oder Prozessorkern zugeordnet sind, auf andere Speicher verteilen lassen, die z.B. anderen Prozessoren oder Prozessorkernen zugeordnet sind. Beispielsweise können
Software-Anwendungen steuern, wie Daten, z.B. Ergebnisse oder Zwischenergebnisse, in lokalen Speichern, auf andere
Speicher, z.B. lokale Speicher, verteilt werden sollen.
Hierzu können Software-Anwendungen, z.B. Datenbanken,
ermitteln, welche Daten welchem Speicher zugeordnet sind, z.B. dem lokalen Speicher eines Prozessors oder
Prozessorkerns. Die Software-Anwendungen können ferner ermitteln, welche von dem Prozessor zu verarbeitenden bzw. bereits verarbeiteten Daten, in dem Speicher dieses
Prozessors gespeichert sind. Die Software-Anwendungen können so Ergebnisse oder Zwischenergebnisse in z.B. lokalen
Speichern verwenden, ohne dass diese Daten zuvor in einem zentralen Speicher oder einem Hauptspeicher gespeichert werden müssen. 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, oder erfahren, ob ein angefordertes Verteilen und/oder Verarbeiten erfolgreich war. 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
Figure imgf000024_0001
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 Figur 1 eine Architektur mit Prozessor-Einheiten,
Prozessorkernen und Speichern gemäß verschiedenen Ausführungsbeispielen;
Figur 2 eine Architektur mit Prozessorkernen und Speichern, welche mittels eines Netzwerks gekoppelt sind, gemäß verschiedenen Ausführungsbeispielen;
Figur 3 eine Architektur des direkten Speicherzugriffs (DMA, direct memory access) mit Sende- und Empfangskanälen gemäß verschiedenen Ausführungsbeispielen;
Figur 4 ein Diagramm einer Übertragung von Daten aus einem
Speicher zu einem anderen Speicher gemäß
verschiedenen Ausführungsbeispielen; Figur 5 ein Diagramm eines Verteilens von Daten an zwei Speicher mit einer Rechenvorrichtung gemäß
verschiedenen Ausführungsbeispielen; Figur 6 ein Flussdiagramm eines Verfahrens zum Auswählen und
Verteilen von Datenblöcken gemäß verschiedenen Ausführungsbeispielen;
Figur 7 ein Diagramm zum Verteilen von Daten an lokale
Speicher gemäß verschiedenen Ausführungsbeispielen; und
Figur 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. Fig.l 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.
Fig.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.
Fig.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 Sammeins 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.
Fig.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 erste
Speicher 402 kann ein lokaler Speicher oder ein Hauptspeicher sein .
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. Der zweite Speicher 404 kann ein lokaler Speicher oder ein Hauptspeicher 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. Zum Beispiel kann die dritte Menge von Datensätzen 418 beim Ausführen einer Berechnung bzw. Aufgabe in dem zweiten Speicher 404
gespeichert werden und beim Ausführen einer anderen
Berechnung bzw. Aufgabe, die zu einem anderen Zeitpunkt zugeteilt wird, kann auf die dritte Menge von Datensätzen 418 zugegriffen werden.
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 zweite 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 einer anderen Berechnung mittels der zweiten Rechenvorrichtung 416, gemeinsam
verarbeiten . Software-Anwendungen können ermitteln, welche Daten 414, 418 in einem Speicher 402, 404 gespeichert sind, der z.B. einer Rechenvorrichtung 410, 416 zugeordnet sein kann. Die
Software-Anwendungen können weitere Berechnungen planen und steuern, so dass auf Ergebnisse oder Zwischenergebnisse in z.B. lokalen Speichern Zugriffen werden kann, ohne dass diese Daten zuvor in einem zentralen Speicher oder einem
Hauptspeicher gespeichert werden müssen.
Fig.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 einer 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. Fig.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 0, in der folgenden
Beschreibung Auswähloperation 0 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 0 angegeben werden können.
Die Auswähloperation 0 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 0, 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 0,
• Auswähloperand X,
• Verteilungsschablone D, Verteilungszuordnung d,
Übertragungsschablone M,
• Startadresse a, und
• Speichergröße s der ein oder mehreren Datenblöcke.
5
Die Speichersteuerung aktiviert einen Sendekanal, indem sie die oben beschriebene Datenstruktur
Figure imgf000046_0001
und führt ddiiee iimm FFoollggeennddeenn bbeesscchhrriieebbeenneenn OOppeerraattiioonneenn ffüürr jjeeddeenn aakkttiivveenn SSeennddeekkaannaall aauuss..
1100
BBeeggiinnnneenndd mmiitt ddeerr SSppeeiicchheerraaddrreessssee aa,, aann wweellcchheerr ddeerr eerrssttee zzuu lleesseennddee DDaatteennbblloocckk ggeessppeeiicchheerrtt iisstt,, lliieesstt ddiiee
SSppeeiicchheerrsstteeuueerruunngg ddiiee DDaatteennbbllööcckkee ((zzuumm BBeeiissppiieell BBiittss ooddeerr BByytteess)) ,, wweellcchhee mmiitttteellss ddeerr AAuusswwäähhllsscchhaabblloonnee FF aannggeeggeebbeenn
1155 wweerrddeenn kköönnnneenn,, eerrmmiitttteelltt ddeenn WWeerrtt ddiieesseerr DDaatteennbbllööcckkee,, llääddtt iinn SScchhrriitttt 660066 ddeenn AAuusswwäähhllooppeerraannddeenn XX uunndd wweerrtteett iinn SScchhrriitttt 660088 ddeenn AAuusswwäähhllooppeerraattoorr 00 mmiitt ddeemm WWeerrtt uunndd ddeemm AAuusswwäähhllooppeerraannddeenn XX aauuss ..
2200 WWeennnn ddaass EErrggeebbnniiss ddeerr AAuusswweerrttuunngg ddeess AAuusswwäähhllooppeerraattoorrss 00
ffaallsscchh lliieeffeerrtt,, bbeewweeggtt ssiicchh ddiiee SSppeeiicchheerrsstteeuueerruunngg iinn SScchhrriitttt 661100 iinn ddeemm SSppeeiicchheerr eeiinnee SScchhrriittttwweeiittee ΔΔ,, aannddeerrss aauussggeeddrrüücckktt eeiinnee AAnnzzaahhll vvoonn BByytteess,, ddiiee mmiitttteellss ddeerr SScchhrriittttwweeiittee ΔΔ
ssppeezziiffiizziieerrtt wweerrddeenn,, wweeiitteerr uunndd ppaasssstt ddiiee SSppeeiicchheerrggrröößßee ss ddeerr
2255 DDaatteenn eennttsspprreecchheenndd aann.. BBeeiissppiieellsswweeiissee wwiirrdd ddiiee SSppeeiicchheerrggrröößßee ss ddeerr DDaatteenn uumm ddiiee SSppeeiicchheerrggrröößßee ddeess zzuu üübbeerrsspprriinnggeennddeenn
DDaatteennssaattzzeess vveerrrriinnggeerrtt,, wweennnn ddiiee SSppeeiicchheerrggrröößßee ss aannffaannggss mmiitt ddeerr GGrröößßee ddeess kklleeiinnsstteenn SSppeeiicchheerrbblloocckkss,, ddeerr ddiiee zzuu lleesseennddeenn DDaatteennbbllööcckkee aauuffwweeiisstt,,
Figure imgf000046_0002
wwuurrddee..
30
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 0 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 0 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 0 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 .
Fig.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 Namen und
Telefonnummern aller Personen zu suchen, die in einer Straße wohnen, die mit „A" beginnt.
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 0 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 (nicht dargestellt) in dem ersten lokalen Speicher 702 speichert. In einer Ausführungsform kann die vierte Tabelle 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 (nicht dargestellt) 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.
In einer Ausführungsform kann das Datenbank-Managementsystem die Verteilungsschablone D und die Übertragungsschablone M als Variablen oder Register der ersten Speichersteuerung 714 oder eines der ersten Speichersteuerung 714 zugeordneten Sendekanals setzen, beispielsweise bei dem Betriebssystem das entsprechenden Einstellen der Variablen oder Register
anfordern. Nachdem die Datensätze der ersten Tabelle 708 verteilt wurden, weist die fünfte Tabelle, 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 0 so gesetzt, dass alle Datensätze ausgewählt werden. Das
Verteilen kann das Datenbank-Managementsystem anfordern, beispielsweise bei dem Betriebssystem das entsprechenden Einstellen der Variablen oder Register der zweiten
Speichersteuerung 724 oder eines der zweiten
Speichersteuerung 724 zugeordneten Sendekanals anfordern.
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 (nicht
dargestellt) auf, die alle Namen und Telefonnummern von
Personen der zweiten Tabelle 718 aufweist, deren Name mit „A" beginnt. Der zweite lokale Speicher 704 weist eine siebte Tabelle (nicht dargestellt) auf, die alle Namen und
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, z.B. kann von dem Datenbank-Managementsystem angefordert werden, dass der Verbund von dem jeweiligen Rechenkern berechnet werden soll.
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 740, 742 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 740 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 742 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.
Fig.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.
An eine Datenbank kann die Aufgabe gestellt werden, 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.
Anhand Fig.7 wurde erläutert, wie von der Datenbank eine Tabelle 740, 742, 826, 828 mit den Namen und 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. Das Ergebnis dieser
Berechnung kann für nachfolgende, neue Datenbankanfragen verwendet werden. In einer Ausführungsform können sowohl die erste, die zweite und die dritte Tabelle 708, 718, 726, 810, 816, 820 als auch die Tabellen 740, 742, 826, 828 in den lokalen Speichern 702, 704, 802, 804 Tabellen sein, die das Datenbank-Managementsystem kennt . Anstelle auf die erste und zweite Tabelle zuzugreifen und erneut die Namen und Telefonnummern aller Personen zu
berechnen, die in einer Straße wohnen, die mit „A" beginnt, können die Tabellen 740, 742, 826, 828 in den lokalen
Speichern 702, 704, 802, 804 verwendet werden.
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 740, 742, 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 mit 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 mit den
Telefonnummern und Namen aller Personen, deren Name zum
Beispiel mit „A" oder „H" beginnt, egal in welcher Straße diese Personen wohnen, 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 0 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 0 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 0 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 0 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 0 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 kann das Datenbank-Managementsystem die Variablen oder Register einer jeweiligen
Speichersteuerung oder eines der jeweiligen Speichersteuerung zugeordneten Sendekanals setzen, beispielsweise bei dem
Betriebssystem das entsprechenden Einstellen der Variablen oder Register der Speichersteuerungen anfordern. Ferner kann von dem Datenbank-Managementsystem angefordert werden, dass Rechenkerne Berechnungen durchführen sollen, z.B. Rechenkerne denen geeignete lokale Daten zugeordnet sind.
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 0
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 Speicherzugrif (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

Ansprüche
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 . 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 8 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.
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.
PCT/EP2014/069154 2013-09-11 2014-09-09 Verfahren und vorrichtung zum vor-auswählen, filtern und verteilen von daten in datenbank-management-systemen WO2015036387A1 (de)

Applications Claiming Priority (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
DE102013109978.5 2013-09-11

Publications (1)

Publication Number Publication Date
WO2015036387A1 true WO2015036387A1 (de) 2015-03-19

Family

ID=51535426

Family Applications (1)

Application Number Title Priority Date Filing Date
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

Country Status (2)

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

Families Citing this family (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

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7577667B2 (en) * 2002-09-18 2009-08-18 Netezza Corporation Programmable streaming data processor for database appliance having multiple processing unit groups
WO2004079583A1 (ja) * 2003-03-05 2004-09-16 Fujitsu Limited データ転送制御装置およびdmaデータ転送制御方法
US7934025B2 (en) * 2007-01-24 2011-04-26 Qualcomm Incorporated Content terminated DMA

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
ANONYMOUS: "Non-uniform memory access", 10 September 2013 (2013-09-10), XP002733706, Retrieved from the Internet <URL:http://en.wikipedia.org/w/index.php?title=Non-uniform_memory_access&oldid=572323726> [retrieved on 20141212] *
ANONYMOUS: "Stream processing", 27 August 2013 (2013-08-27), XP002733707, Retrieved from the Internet <URL:http://en.wikipedia.org/w/index.php?title=Stream_processing&oldid=570411436> [retrieved on 20141212] *
CHEN M-S ET AL: "Determining beneficial semijoins for a join sequence in distributed query processing", PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON DATA ENGINEERING. KOBE, JP, APRIL 8 - 12, 1991; [PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON DATA ENGINEERING], LOS ALAMITOS, IEEE COMP. SOC. PRESS, US, vol. CONF. 7, 8 April 1991 (1991-04-08), pages 50 - 58, XP010022723, ISBN: 978-0-8186-2138-3, DOI: 10.1109/ICDE.1991.131452 *
SUN W ET AL: "QUERY OPTIMISATION IN DISTRIBUTED OBJECT-ORIENTED DATABASE SYSTEMS*", COMPUTER JOURNAL, OXFORD UNIVERSITY PRESS, SURREY, GB, vol. 35, no. 2, 1 April 1992 (1992-04-01), pages 98 - 107, XP000331397, ISSN: 0010-4620, DOI: 10.1093/COMJNL/35.2.98 *

Also Published As

Publication number Publication date
DE102013109978A1 (de) 2015-03-12

Similar Documents

Publication Publication Date Title
DE112016001075B4 (de) Verteiltes speichern und abrufen von datensätzen
DE102013207049B4 (de) Überwachen der Datenstrompufferung zur Optimierung der Operatorverarbeitung
DE102012216022B4 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE3889578T2 (de) Vorrichtung zur Sicherung und Rückspeicherung einer Registerinformation.
DE1499288B2 (de) Datenverarbeitungsanlage
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE10035043A1 (de) Mehrdimensionale Indexierungsstruktur zur Verwendung mit linearen Optimierungsanfragen
DE3131341A1 (de) &#34;pufferspeicherorganisation&#34;
DE102005029744A1 (de) Verfahren zum Updaten von Kartendaten
DE102009038454A1 (de) System und Verfahren zum Reduzieren einer Ausführungsdivergenz in Parallelverarbeitungsarchitekturen
DE3688581T2 (de) Sortierverfahren in einem hierarchisch geordneten Speichersystem.
DE112017006106T5 (de) Erzeugen von, Zugreifen auf und Anzeigen von Abstammungsmetadaten
DE102007052853A1 (de) Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter
DE112013006646B4 (de) Computer, System und computerlesbares Ablagemedium zum Identifizieren von Arbeitslast und Dimensionierung von Puffern zum Zweck der Volumenreplikation
DE112005003222T5 (de) Dynamische Allokation eines Puffers auf mehrere Klienten bei einem Prozessor mit Threads
DE102015013125A1 (de) Vorrichtung, Systeme und Verfahren zur Bereitstellung eines speichereffizienten Caches
DE102010044529A1 (de) Autonome Subsystem-Architektur
DE112019000627T5 (de) Speicherstrukturbasiertes Coherency Directory Cache
DE60003426T2 (de) Statusbits für cachespeicher
DE2422732A1 (de) Hierarchische speicheranordnung
DE3046912A1 (de) Verfahren und schaltungsanordnung zum loeschen eines cachespeichers einer datenverarbeitungsanlage
DE102021108967A1 (de) Schlüssel-wert-index mit knotenpuffern suchen
DE102006046717A1 (de) Dynamisch migrierende Kanäle
DE19538448B4 (de) Datenbankmanagementsystem sowie Datenübertragungsverfahren
WO2015036387A1 (de) Verfahren und vorrichtung zum vor-auswählen, filtern und verteilen von daten in datenbank-management-systemen

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14761989

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14761989

Country of ref document: EP

Kind code of ref document: A1