WO2005106713A1 - 情報処理方法及び情報処理システム - Google Patents

情報処理方法及び情報処理システム Download PDF

Info

Publication number
WO2005106713A1
WO2005106713A1 PCT/JP2005/007874 JP2005007874W WO2005106713A1 WO 2005106713 A1 WO2005106713 A1 WO 2005106713A1 JP 2005007874 W JP2005007874 W JP 2005007874W WO 2005106713 A1 WO2005106713 A1 WO 2005106713A1
Authority
WO
WIPO (PCT)
Prior art keywords
value
item
processing module
processing
processing modules
Prior art date
Application number
PCT/JP2005/007874
Other languages
English (en)
French (fr)
Inventor
Shinji Furusho
Original Assignee
Shinji Furusho
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 Shinji Furusho filed Critical Shinji Furusho
Priority to JP2006512783A priority Critical patent/JP4673299B2/ja
Priority to US11/568,490 priority patent/US20080262997A1/en
Publication of WO2005106713A1 publication Critical patent/WO2005106713A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • G06F16/902Indexing; Data structures therefor; Storage structures using directory or table look-up using more than one table in sequence, i.e. systems with three or more layers

Definitions

  • the present invention relates to an information processing method and an information processing apparatus for processing a large amount of data, and in particular, to an information processing method and an information processing system employing a parallel computer architecture.
  • the two-dimensional data (the one-dimension of the record number and the one-dimension of the other item values are also included) are used as they are for the item values of all items of all record numbers.
  • Data structure is particularly referred to as a “data table”.
  • this data table is used when searching and totaling accumulated data. It is done by accessing!
  • the data table has at least the following essential disadvantages.
  • Data tables have become very large in size, and it is difficult to divide them (physically) immediately, for example, for each item. In practice, it is difficult to develop a data table on a high-speed storage device such as a memory for a total search.
  • the present inventor has a conventional data table function and a data structure based on the data table in order to greatly improve the speed of searching and counting a large amount of data.
  • a method of searching, tabulating, and sorting tabular data and a device for implementing the method are proposed (for example, see Patent Document 1).
  • the proposed method and apparatus for retrieving and tabulating tabular data introduces a new data management mechanism that can be used in ordinary computer systems.
  • This data management mechanism has a value management table and an array of pointers to the value management table in principle.
  • FIG. 1 is an explanatory diagram of a conventional data management mechanism.
  • the figure shows a value management table 110 and an array of pointers 120 to the value management table.
  • the value management table 110 is defined as follows: For each item of tabular data, the item value corresponding to the above item value number (see reference numeral 111) is arranged in the order of the item value number in which the item values belonging to the item are ordered (converted to integers). ) And a classification number (see reference numeral 112) related to the above item values.
  • the pointer array 120 to the value management table is an item value number of a column (that is, an item) of tabular data, that is, a pointer to the value management table 110 is arranged in the order of the record number of the tabular data.
  • the stored array is an item value number of a column (that is, an item) of tabular data, that is, a pointer to the value management table 110 is arranged in the order of the record number of the tabular data.
  • the pointer array 120 to the value management table and the value management table 110 By combining the pointer array 120 to the value management table and the value management table 110, when a certain record number is given, the pointer array 120 to the value management table for a predetermined item corresponds to the record number. By extracting the stored item value number and then extracting the item value stored in the value management table 110 corresponding to the item value number, the record number can also obtain the item value. Therefore, as with the conventional data table, all data (item values) can be referenced using the coordinates of the record number (row) and the item (column).
  • the item value is stored in the value management table, and the record number indicating the position where the value exists is associated with the array of pointers to the value management table. They do not need to be ordered numerically. Therefore, the data can be sorted with respect to the item values so as to be suitable for search and aggregation. As a result, it is possible to quickly determine whether or not an item value that matches the target value exists in the data. In addition, since the item value corresponds to the item value number, even if the item value is long data / character string, it can be handled as an integer.
  • FIG. 2 shows a value management table 210 including an item value array 211 storing item values, a classification number array 212 storing classification numbers, and an existence number array 214 storing the number of occurrences. Blocks are shown.
  • the number-of-existences array 214 stores the number indicating how many item values of a certain item exist in all data, in other words, the number of records having a predetermined item value.
  • the parallel processing architecture is roughly classified into a "shared memory type” and a “distributed memory type”.
  • the former (“shared memory type”) is a method in which multiple processors share one huge memory space.
  • the acceleration ratio for a single CPU is at most 100 times.
  • the upper limit is about 30 times.
  • each processor has a local memory, and these are combined to construct a system.
  • this method it is possible to design a node-air system incorporating hundreds to tens of thousands of processors. Therefore, it is possible to increase the acceleration ratio for a single CPU by several hundreds to tens of thousands of times when calculating the square root of the above one billion floating point variables.
  • Patent Document 1 International Publication No. WO00Z10103 pamphlet
  • the first issue of “distributed memory type” is the problem of data division management.
  • the third issue of “distributed memory type” is how to supply programs to many processors.
  • MIMD Multiple Instruction Stream, Multiple Data Stream
  • an object of the present invention is to provide an information processing method for dividing and managing data among a plurality of processors when information processing of a large amount of data is performed by adopting a parallel computer architecture.
  • Another object of the present invention is to provide a program for causing a computer to execute the above information processing method.
  • an object of the present invention is to provide an information processing system for realizing the above information processing method.
  • the value list and the pointer array which are the substantial elements of the tabular data, are stored locally in each processing module. It employs a distributed memory parallel processing architecture in which an index called sequence number (or rank) of data to be linked is held globally. Further, the present invention employs an algorithm in which processing and communication are integrated so that data stored in various memories is input / output and processed by a single instruction.
  • a plurality of processing modules are logically connected in a ring, and each processing module has a memory for storing a local information block representing tabular data.
  • the local information block includes a pointer array storing information specifying item value numbers in the order of records of the tabular data, and an item value number corresponding to the item values of the tabular data.
  • Each of the processing modules compares the value list of each of the processing modules with the value list of the other processing module, and the item value of the value list of each of the processing modules is uniquely determined among the plurality of processing modules.
  • An information processing method for constructing a global information block is provided.
  • a large amount of global tabular data can be transferred to multiple processing modules by uniquely determining the global order number corresponding to the record and the global item value number corresponding to the item value among multiple processing modules. This makes it possible to construct a global information block that can be divided and managed.
  • the step of assigning the global order number includes an offset assigned to each of the processing modules to a number indicating a record order of the tabular data of each of the processing modules.
  • the global sequence number is calculated by adding the values. As a result, the global sequence number can be uniquely determined without communication between the processing modules.
  • the step of assigning the global item value number Transmits the value list of each processing module to another processing module in which each processing module is logically connected in a ring, and each processing module transmits the value list of the other processing module from the other processing module.
  • the global item value number is calculated by increasing the item value number of the item value in the value list of each processing module by the number.
  • the global item value number can be uniquely determined by the process integrated with the communication of the value list.
  • a plurality of processing modules are logically connected in a ring, and each processing module has a memory for storing a local information block expressing tabular data.
  • the local information block includes a pointer array storing information specifying item value numbers in the order of records of the tabular data, and the item arrays in the order of the item value numbers corresponding to the item values of the tabular data. And a list of values in which the values are stored.
  • the record of the tabular data of each processing module is assigned a global sequence number uniquely determined among the plurality of processing modules.
  • a global item value number that is uniquely determined among the plurality of processing modules is assigned to the item values of the module value list! ,
  • the global sequence number ordered after the global sequence number corresponding to the record to be deleted is reduced by the number to be deleted, and information specifying the item value number corresponding to the record to be deleted is reduced. Steps to delete pointer array power,
  • a plurality of processing modules are logically connected in a ring, and each processing module has a memory for storing a local information block expressing tabular data.
  • the local information block comprises tabular data.
  • a pointer array that stores information specifying item value numbers in the order of records, and a list of values in which the item values are stored in the order of the item values corresponding to the item values of the tabular data.
  • the record of the tabular data of each processing module is assigned a global sequence number uniquely determined among the plurality of processing modules, and the item values of the value list of each processing module are assigned to the plurality of processing modules.
  • a global item value number that is uniquely determined between
  • the global order number ordered after the global order number corresponding to the record to be inserted is increased by the number to be inserted, and the information specifying the item value number corresponding to the record to be inserted is increased. Securing a storage area at the insertion position of the pointer array;
  • a plurality of processing modules are logically connected in a ring, and each processing module includes a memory for storing a local information block representing tabular data, In the local information block, a pointer array storing information specifying item value numbers in the order of records of the tabular data, and the item values are stored in the order of the item value numbers corresponding to the item values of the tabular data.
  • a list of values of the processing modules wherein a record of the tabular data of each of the processing modules is assigned a global sequence number uniquely determined among the plurality of processing modules, and the value of each of the processing modules is assigned.
  • a global item value number uniquely determined among the plurality of processing modules is assigned to the item values of the list!
  • Each of the processing modules transmits a value list of each of the processing modules to another processing module logically connected in a ring, receives a value list of the other processing module from the other processing module, and The value list of the processing module is compared with the value list of the other processing modules, and the new U and global item value numbers among the plurality of processing modules are added to the item values of the value list of each processing module. Granting;
  • An information processing method for overwriting data of a global information block is provided. As a result, it is possible to update the data of any record of the tabular data that is divided and managed among a plurality of processing modules.
  • a plurality of processing modules are logically connected in a ring, and each processing module includes a memory for storing a local information block representing tabular data, In the local information block, a pointer array storing information specifying item value numbers in the order of records of the tabular data, and the item values are stored in the order of the item value numbers corresponding to the item values of the tabular data.
  • a list of values of the processing modules wherein a record of the tabular data of each of the processing modules is assigned a global sequence number uniquely determined among the plurality of processing modules, and the value of each of the processing modules is assigned.
  • a global item value number uniquely determined among the plurality of processing modules is assigned to the item values of the list!
  • the item value corresponding to the current item value number stored in the value list of the local information block and designated by the element of the current pointer array among the item values is the value of the current item value number. Updating the value list to be stored in an order; and storing the current item stored in the current pointer array to specify an item value stored in the updated value list. Updating the information specifying the value number;
  • a plurality of processing modules are logically connected in a ring, and each processing module includes a memory for storing a local information block representing tabular data, In the local information block, a pointer array storing information specifying item value numbers in the order of records of the tabular data, and the item values are stored in the order of the item value numbers corresponding to the item values of the tabular data.
  • the list of tabular data of each of the processing modules is assigned a global sequence number uniquely determined among the plurality of processing modules, and the value of each of the processing modules A global item value number uniquely determined among the plurality of processing modules is assigned to the item values of the list!
  • Each of the processing modules logically connects to the other processing modules in a logically circular manner.
  • Each of the processing modules receiving from the other processing module the current global sequence number of the other processing module and an item value in the corresponding current value list;
  • the processing module power The other processing module power The new global order assigned to the new record to be relocated to each processing module in the current global sequence number received. Storing the item value corresponding to the current global sequence number that matches the number as a temporary value list in the memory;
  • Each of the processing modules has a new pointer array in which information specifying the new and the item value numbers in the order of the records is stored, and the item values in the temporary value list are described in the order of the new and the item value numbers.
  • Each of the processing modules receiving the new value list of the other processing module from the other processing module;
  • Each of the processing modules compares the new value list of each of the processing modules with the new and value lists of the other processing modules. Assigning a new and global item value number uniquely determined between the processing modules of
  • An information processing method for rearranging data of a global information block is provided. This makes it possible to freely change the allocation of tabular data among the processing modules according to the requirements of the application.
  • a program for causing a computer of a processing module of an information processing system to execute the information processing method according to the present invention.
  • a computer-readable recording medium on which the program of the present invention is recorded.
  • an information processing system including a processing module configured to execute the information processing method of the present invention.
  • FIG. 3 is a block diagram schematically showing an information processing system according to an embodiment of the present invention.
  • the processing module is configured by a memory module with a processor (hereinafter, referred to as “PMM”).
  • PMM a memory module with a processor
  • the memory modules with processors PMM32-0, PMM32-1, PMM32-2, ... are arranged in a ring to connect a plurality of processing modules logically in a ring, and between adjacent memory modules.
  • a first bus for transmitting data in a clockwise direction for example, code 3 4 0, 34-1 reference
  • a second bus for transmitting data in a counterclockwise direction e.g., reference numeral 36- 0 , 36-1
  • one of the PMMs is a first bus (first transmission path) for transmitting packets clockwise, and the other is a second bus (second transmission path) for transmitting packets counterclockwise.
  • first bus first transmission path
  • second transmission path second transmission path
  • the physical connection between the processing modules is not limited to the form shown in the present embodiment, but may be any form that can logically connect the processing modules in a circular manner. It may be a form. For example, various connection forms such as a bus type and a star type can be adopted.
  • FIG. 4 is a diagram showing an example of the structure of the PMM 32.
  • each PMM 32-i includes a control circuit 40 for controlling memory access, execution of operations, etc., according to a common instruction among the PMMs, a noise interface (IZF) 42, and a memory 44. It has.
  • IZF noise interface
  • the memory 44 has a plurality of banks BANK0, 1,..., N (reference numerals 46-0,..., N), each of which can store a predetermined array described later. Become.
  • control circuit 40 can exchange data with another external computer or the like. Further, another computer may be able to access a desired bank of the memory by bus arbitration.
  • memories of a plurality of memory modules with a processor may exist in the same memory space.
  • the packet communication is realized by referring to the memory.
  • the processors of the memory module with a plurality of processors may be physically the same CPU.
  • Tabular data is data represented as an array of records including item values corresponding to information items. This tabular data is subjected to, for example, a process of totalizing the item values (measures) of another item for each item value (dimension value) of a certain item (dimension).
  • the aggregation of the measures means counting the number of measures, calculating the sum of the measures, and calculating the average value of the measures.
  • the number of dimensions may be two or more.
  • Figure 5 shows logical tabular data on the gender 'age' height of a child in a nursery.
  • the process of calculating the number of persons of each gender and the process of calculating the total height of each gender and age are aggregation processes as an example of information processing realized by applying the present invention.
  • the present invention provides a data structure construction technology, data update technology, and data rearrangement technology for realizing such high-speed, parallel information processing of tabular data. .
  • the tabular data shown in FIG. 5 is stored as a data structure as shown in FIG. 6 in a single computer by using the data management mechanism proposed in the above-mentioned WO00Z10103.
  • an array 601 (hereinafter, this array is abbreviated as “OrdSet”) that associates the arrangement number of each record of the tabular data with the arrangement number of the internal data. ),
  • the arrangement number of the internal data is arranged as a value for each record in the table format.
  • the record number of the tabular data matches the arrangement order number of the internal data.
  • the actual gender value for a record whose order number is “0”, that is, “male” or “female”, is a value list 603 (hereinafter referred to as a value list) in which the actual values are sorted according to a predetermined order. It can be obtained by referring to the pointer array 602 (hereinafter, abbreviated as “VL”) (hereinafter, the pointer array is abbreviated as “VNo”).
  • the pointer array 602 stores a pointer that points to an element in the actual value list 603 in accordance with the order of the arrangement order number stored in the array OrdSet 601. to this Therefore, the gender item value corresponding to the record "0" of the tabular data is as follows: (1) Array OrdSet601 The array order number "0" corresponding to the record "0” is extracted, and (2) Pointer array to the value list The element “1” corresponding to the arrangement order number “0” is extracted from 602, and (3) the element “female” indicated by the element “1” extracted from the pointer array 602 to the value list from the value list 603 Can be obtained by taking
  • Item values can be obtained for other records and for age and height in the same manner.
  • the tabular data is represented by a combination of the value list VL and the pointer array VNo to the value list, and this combination is particularly called an “information block”.
  • information blocks relating to gender, age, and height are shown as information blocks 608, 609, and 610, respectively.
  • a single computer power is a single memory (it may be physically multiple, but a single memory in the sense that it is located and accessed in a single address space)
  • an ordered set array OrdSet, a value list VL constituting each information block, and a pointer array VNo may be stored.
  • the memory capacity increases with the size, so it is desirable that these can be distributed. Also, from the viewpoint of parallel processing, it is desirable to be able to grasp the distributed information separately.
  • the data of the record is separated and grasped without overlapping a plurality of PMMs, and high-speed aggregation is realized by packet communication between the PMMs.
  • FIG. 7 is an explanatory diagram of a data storage structure according to the present embodiment.
  • the tabular data shown in FIGS. 5 and 6 are distributed and arranged in four processing modules PMM-0, PMM-1, PMM2, and PMM-3, for example, and are separated and grasped. T!
  • the number of processing modules is four.
  • the present invention is not limited by the number of processing modules.
  • the records segregated by each PMM are seized by four PMMs from PMM-0 to PMM-3! And uniquely ordered among all the records.
  • Each record is uniquely assigned a global 'record number' so that it can be accessed.
  • the global 'record number is represented as "GOrd”.
  • the global record number GOrd indicates the order of each element of the array OrdSet in each PMM in all records.
  • the array OrdSet is defined to be an order-preserving mapping inside each PMM, GOrd can be in ascending order.
  • the size of the GOrd array matches the size of the OrdSet array (order array).
  • the item value which is grasped by each PMM that is, each value in the value list VL is held by all the PMMs!
  • a global item value number is provided to indicate if the item is in the position. In FIG. 7, this global item value number is indicated as “GVNo”. Since the value list VL is arranged in order of value (for example, in ascending or descending order), the global item value number GVNo is also set in ascending (or descending) order. The size of sequence GVNo matches the size of sequence VL.
  • the value OFFSET assigned to each PMM indicates that the first record assigned by the PMM corresponds to the number of the record in the integrated record shown in FIG. Offset value for indicating whether the As described above, since the array OrdSet of each PMM is determined to be an order-preserving mapping inside each PMM, this offset value OFFSET and the values of the elements of the array OrdSet in the PMM are summed. The value matches the global 'record number GOrd. Preferably, this offset value is notified to each PMM, and each PMM can determine the global 'record number based on the offset value OFFSET.
  • the global 'record number GOrd and global item value number GVNo of each PMM are calculated in advance outside each PMM and can be set for each PMM. Each PMM itself must be set by the compile process described later. Is also possible.
  • the global order array GOrd indicates the position (rank) of each record of the tabular data held by each PMM in the global tabular data obtained by collecting the local tabular data held by each PMM. That is, in the present embodiment, the position information of a record is separated into a global component and a local component by the global array ordinal array GOrd and the ordinal array OrdSet, thereby handling global tabular data. It is possible for each PMM to execute processing independently.
  • the PMM is configured to hold the information block of each item. However, even when the PMM holds the tabular data as it is, the above GOrd has the same function. I do.
  • a view of the entire tabular data is created by extracting the item values of each item in the order of the values of the global order array GOrd in a state in which compilation described later is completed. be able to.
  • the compilation process is a process for setting the global record number GOrd and global item value number GVNo used to manage data in each processing module.
  • the global record number GOrd can be easily set by using the offset value OFFSET described above.
  • the global item value number GVNo is a number that is stored in each processing module individually and is commonly ordered among all processing modules based on a value list. Each processing module can set the global item value number GVNo by using this sequence number assignment processing. Therefore, this sequence number assigning process will be described in detail.
  • sequence number assigning process is, for example, a global item value number in the compiling process! Also used when setting.
  • This sequence number assignment processing is characterized in that only one number is assigned to the same value. Therefore, this type of sequence number assignment processing is particularly referred to as the same value elimination type sequence number assignment processing.
  • FIG. 8 is a flowchart of a sequence number assigning method according to the embodiment. As shown in the figure, each processing module stores an initial value of an order number of each value in a list of values in its own processing module in a memory (step 801).
  • each processing module transmits a list of values stored in the memory of its own processing module to the processing module logically connected to the next stage (step 802). Further, each processing module, before each value in the list of values in its own processing module, from the list of received values of the processing module connected logically in the previous stage, comes before the above values. By counting the number of values to be ordered and increasing the sequence number of each value in the list of values in the own processing module by the counted number, the order of each value in the list of values in the own processing module is increased. The number is updated and the updated sequence number is stored in the memory (step 803).
  • each processing module logically adds a list of further values obtained by excluding the values in the received value list that match the values in the list of values in its own processing module to the next stage. (Step 804), and each processing module sends, to each value in the list of values in its own processing module, the value of the processing module connected logically to the previous stage.
  • Count of the received list of further values Counts the number of values ordered before each of the above values, and increases the sequence number of each value in the list of values in the own processing module by the counted number As a result, the sequence number of each value in the list of values in the own processing module is updated, and the updated sequence number is stored in the memory (step 805).
  • steps 2204 and 2205 are repeatedly executed until the data is received by the processing module connected to the logically previous stage (step 806).
  • each processing module receives a list of values held by another processing module without duplication, and assigns a global value to the value held by its own processing module.
  • Order numbers can be assigned. As described above, when each processing module holds a list of ordered values in advance, it is possible to very efficiently assign global order numbers. This is because if the list of values is pre-ordered, it is only necessary to compare the order in one direction, ascending (or descending). Of course, a similar result can be obtained even when the list of values held by each processing module is not ordered. In this case, for example, each processing module compares the values in the list of values received from other processing modules with the values in the list of values held by its own processing module for all combinations. The order number of each value should be updated by counting the number of values to be ordered before each value, that is, higher in comparison with the order.
  • each processing module does not need to store the list of the values received by the other processing modules.
  • a common sequence number can be assigned to all processing modules.
  • FIGS. 9A to 9D and FIGS. 10A to 10D are explanatory diagrams of the first sequence number assigning process.
  • FIGS. 9A to 9D show a list of values that each PMM sends to the PMM connected to the next stage, step by step.
  • Figures 10A-D show a list of the values received by the PMM at each step where the PMM was connected to the previous stage.
  • PMM-0 holds a list of values [1, 3, 5, 6]
  • PMM-1 holds a list of values [0, 2, 3, 7]
  • PMM 2 Holds a list of values [2, 4, 6, 7]
  • PMM-3 holds a list of values [0, 1, 3, 5].
  • each PMM can receive a list of values from all other processing modules.
  • the order of all values can be determined by matching the list of values held by the own processing module with the list of received values.
  • all values can be received without duplication.
  • the processing modules are logically connected in a circular manner, and each processing module has a list having no duplicate value in its own processing module. Hold. Then, each processing module sends the list in its own processing module to the logically downstream processing module, and receives the list for one module from the logically upstream processing module. Each processing module sends the list to the downstream processing module except for the value in the list received from the upstream module, except for the value that matches the value included in the list held in its own processing module. .
  • each processing module holds the other processing modules by the end of (N ⁇ 1) transfer cycles. You can receive the list without duplication. Also, each processing module can receive the list held by all modules without duplication by the end of the N transfer cycles. In particular, if the list of values held in each processing module is arranged in the ascending order of the values or the descending order of the values, the process of eliminating duplicate values can be executed more efficiently.
  • the first sequence number assigning process is very excellent in that all the processing modules can be realized by the same structure. However, in the first sequence number assigning process, one value may be erased many times, and Z or a large number of transfers may be performed. Specifically, if the same value occurs in many processing modules, the value is deleted each time the value passes through the processing module holding the value. If the number of processing modules is N, N-1 transfer is performed until data from the processing module farthest arrives at a certain processing module.
  • the number of transfers can be further reduced by introducing a supplementary mechanism called a tournament system described later.
  • FIG. 11 is an explanatory diagram of a first example of a tournament device 1100 for assigning an effective sequence number to the embodiment of the present invention.
  • PMM-0 holds a list of values [1, 3, 5, 6]
  • PMM 1 stores a list of values.
  • PMM-2 holds the list of values [2,4,6,7]
  • PMM-3 holds the list of values [0,1,3,5] Holding.
  • PMM-0 sends the list of values [0, 1, 3, 5] in its own processing module to the integration device 1
  • PMM-1 sends the list of values in its own processing module.
  • [0, 2, 3, 7] is sent to the integration device 1
  • the PMM-2 sends the list of values [2, 4, 6, 7] in its own processing module to the integration device 2
  • the PMM- 3 sends the list of values [0, 1, 3, 5] in its own processing module to the integration device 2.
  • the integrating device 1 removes duplicate values from the list of values received from the PMM-0 and the PMM-1 and removes duplicate values [0, 1, 2, 3, 5, 6, 7] and sends it to the integrated device 3.
  • integrator 2 removes duplicate values from the list of values received from PMM-2 and PMM-3 to generate a list of values [0, 1, 2, 3, 4, 5, 6, 7] And sends it to the integrated device 3.
  • the integrating device 3 eliminates duplicate values from the list of values received from the integrating device 1 and the integrating device 2 and deletes the list of values [0, 1, 2, 3, 4, 5, 6, 7], and broadcast this list of values to the processing modules PMM-1 to PMM-4.
  • the elimination of duplicate values in the value list is performed in an integrated device that is not a processing module. If the list of values is sorted in ascending or descending order, the integrating device only has to integrate the ascending or descending lists.If the flow control is possible, implement the integrating device with a small buffer memory. Is possible.
  • FIG. 12 is an explanatory diagram of a second example of such a tournament device 1200 for assigning sequence numbers according to the embodiment of the present invention.
  • PMM-0 holds a list of values [1, 3, 5, 6]
  • PMM-1 has a list of values [0, 2, 3, 7].
  • PMM-2 holds the list of values [2, 4, 6, 7]
  • PMM-3 holds the list of values [0, 1, 3, 5].
  • PMM-0 sends a list of values in its own processing module [0, 1, 3, 5] to PMM-1 and PMM-2 lists its values in its own processing module Send [2, 4, 6, 7] to PM M-3.
  • PMM-1 combines the list of values received from PMM-0 with the list of values [0, 2, 3.7] in its own processing module to eliminate duplicate values Then, a list of values [0, 1, 2, 3, 5, 6, 7] is generated and sent to the integration device 3. Similarly, PMM-3 receives from PMM-2. Combine the list of values removed and the list of values [0, 1, 3, 5] in the self-processing module, eliminate duplicate values, and list the values [0, 1, 2, 3, 4, 5, 6, 7] and sends it to the integration device 3.
  • the integrator 3 removes duplicate values from the list of values received from the integrator 1 and the integrator 2 to list the values [0, 1, 2, 3, 4, 5, 6, 7] and broadcast this list of values to each processing module of PMM-1 to PMM-4.
  • FIG. 13 is an explanatory diagram of a third example of a tournament device 1300 for giving such a powerful sequence number to the embodiment of the present invention.
  • the number of integrated devices is one processing module. Therefore, in general, even when a very large number of processing modules exist, as shown in the example shown in FIG. Can implement a tournament type sequence number assignment process without providing a separate and independent integrated device.
  • the memory space may be a single memory space, and a plurality of CPUs may exist.
  • the communication path between the processing module and the integrated device is a logical communication path, and even when the communication is physically realized by referring to the memory, the tournament-type sequence number assigning process can be realized.
  • FIG. 14 is an explanatory diagram of information blocks on a single computer (or processing module) expressing tabular data.
  • Ordset is an ordinal array indicating the order of records of tabular data, as described above
  • VNo is information (or the item value number itself) specifying item value numbers in the order of records. Is a pointer array in which is stored
  • VL is a value list in which the item values are stored in the order of the item value numbers.
  • the compiling process is a process of constructing a data structure for dividing and managing such tabular data by multiple processing modules.
  • FIG. 15 is an explanatory diagram of a data structure in which the tabular data of FIG. 14 is divided and managed by four processing modules PMM-0, PMM-1, PMM-2, and PMM-3.
  • Gord indicates that the number of records managed by each processing module is GVNo is a global item value number that indicates the position of the entire value list in the value list managed by each processing module.
  • the compile process is a process for converting the data structure shown in FIG. 14 to the data structure shown in FIG.
  • FIG. 16 is a flowchart of a compile process according to the embodiment of the present invention.
  • the offset value assigned to each processing module is added to the number indicating the record order of the tabular data of each processing module, so that a global order is obtained. Calculate the number, the value of an element of the global ordered array.
  • the offset value is determined based on the number of records assigned to each processing module. In the example of FIG. 15, the offset values are 0, 3, 5, and 8 in the order of ⁇ — (1 ⁇ 2 ⁇ ⁇ 3).
  • each processing module assigns a global item value number to the item value in each processing module by using the sequence number assignment processing described with reference to FIG.
  • the global item value number is obtained by comparing each processing module's value list with the value list of another processing module by comparing the value list of its own processing module with the value list of another processing module. This is a global item value number uniquely determined between modules.
  • each processing module transmits the value list of its own processing module to another processing module that is logically connected in a ring, and then in step 1603, the other processing module transmits the list of values to the processing module. Receive a list of values of another processing module.
  • each processing module deletes duplicate values in the received value list.
  • each processing module counts the number of values in the value list received from another processing module that are ordered before the item values in the value list of the own processing module. The item value number of the item value in the value list of the self-processing module is increased by the number.
  • each processing module receives the value of the other processing module, and transmits the value list from which duplicate values have been deleted to the other logically connected processing module.
  • each processing module repeats the processing from step 1602 to step 1606 on the value list sent from another processing module, and Terminate the grant.
  • a step of specifying a record to be deleted and a step of deleting a global sequence number ordered after the global sequence number corresponding to the record to be deleted by the number of deleted records are performed. Lowering the information that designates the item value number corresponding to the record to be deleted by the pointer array.
  • the update of GOrd is performed by lowering the global order number ordered after the global order number corresponding to the record to be deleted by the number to be deleted.
  • FIG. 18 is an explanatory diagram of a record deletion process according to an embodiment of the present invention.
  • FIG. 18 shows a state where the global order number GOrd is updated.
  • FIG. 18 also shows how the OrdSet is updated.
  • the pointer array VNo deletes the VNo specified by the OrdSet corresponding to the record to be deleted with respect to all items of "sex”, “age”, “height”, and "weight”.
  • the VNos stored behind the deleted VNo are moved forward by the number of IJs removed.
  • FIG. 18 also shows how the VNo is updated.
  • the record insertion process is a process for securing a storage area for the record to be inserted, and the process speed is improved by setting the item value of the record to be inserted to a predetermined value.
  • the tentative item value of each item of the inserted record use the minimum item value held in the PMM where the record is inserted.
  • the record insertion processing includes a step of specifying an insertion position of a record to be inserted, The global sequence number ordered after the global sequence number corresponding to the record to be inserted is increased by the number to be deleted, and the information specifying the item value number corresponding to the record to be inserted is increased. Securing the storage area at the insertion position of the pointer array.
  • FIG. 20 is an explanatory diagram of the record insertion processing that is applied to the embodiment of the present invention.
  • the data to be inserted is shown in bold and italics.
  • An example of the procedure of the record insertion process is as follows.
  • Step 1 Create GOrd, OrdSet, and VNo at the position where the record is to be inserted.
  • Step 2 In the created GOrd, a value corresponding to the created position is set.
  • the GOrd values 2 and 3 corresponding to those positions are set.
  • the GOrd of the record ordered after the record inserted in PMM-1 is incremented by the number of records inserted.
  • Step 3 In the created OrdSet, a value corresponding to the position where the Ordset was created in the PMM is set.
  • the OrdSet values 0 and 1 corresponding to the positions are set.
  • the OrdSet of the records ordered after the inserted record in PMM-1 is incremented by the number of inserted records.
  • Step 4 Set 0 to the created VNo.
  • VNo is fixed to 0 because the field value of the created record is the minimum field value.
  • FIG. 22 shows part of the tabular data shown in Fig. 15, specifically, the height of the second and third records of PMM-0 and the height of the first record of PMM-1. It is explanatory drawing of the example which overwrites height.
  • FIG. 23 is a flowchart of a data overwriting process according to the embodiment of the present invention.
  • step 2301 a data array to be overwritten is compiled.
  • FIG. 24 is an explanatory diagram of a process of compiling data to be overwritten by each PMM. The figure shows the processing in PMM-0.
  • step 2302 the value lists VL are merged.
  • a local information block value list including the record to be overwritten is generated.
  • FIGS. 25A to 25D are explanatory diagrams of a process of merging overwritten data and original data. In the merge process, first, the position of the VL of the overwritten data is indicated. Initialize PI, P2 indicating the position of the VL of the original data, and pointer P3 indicating the position of the new value list VL generated by merging to 0.
  • step 1 of the merge process in FIG. 25A P1 and P2 are compared, and P2 is small, so the value 0 of P3 is stored in the position 0 of the Conv. Designated by P2.
  • step 2 of the merge process in FIG. 25A P1 and P2 are compared, and P2 is small, so the value 0 of P3 is stored in the position 0 of the Conv. Designated by P2.
  • step 159 of VL specified by P2 is
  • the array Conv. Indicates the position where the corresponding value is stored in the new VL. For example, since the value of Conv. Corresponding to the head value 159 of the original data VL is 0, the item value 159 is the head value of the new VL.
  • step 2 of the merge process in FIG. 25B P1 is compared with P2, and since P1 is small, the value 1 of P3 is stored in the position 0 of the Conv. Designated by P1.
  • the VL value 160 specified by P1 is stored in the new VL. Subsequently, Pl and P3 are incremented.
  • step 3 of the merge process in FIG. 25C P1 is compared with P2, and P2 is small, so the value 2 of P3 is stored in the position 1 of the Conv. Specified by P2.
  • the VL value 168 specified by P2 is
  • the new VL is generated from the VL of the force overwriting data and the corresponding Conv., The VL of the original data, and the corresponding Conv. be able to.
  • step 2303 the pointer array VNo of the local information block including the record to be overwritten is updated.
  • 26A to 26C are explanatory diagrams of the processing for updating the pointer array.
  • the VNo of the overwrite data and the VNo of the original data are converted into the VNo corresponding to the new VL using the corresponding Conv.
  • the item value number of the current VL of record 0 is 1.
  • item value number 1 of the current VL corresponds to item value number 4 of the new VL. Therefore, the value of the element corresponding to record 0 of VNo is converted from 1 to 4.
  • the VNo value is converted for all the records of the overwrite data and all the records of the original data.
  • the VL is replaced with the new VL, and the VNo of the overwritten data is transferred to the position where the VNo of the original data should be overwritten. This completes the new VNo and VL as shown in Figure 26C.
  • each processing module transmits the value list of its own processing module to another processing module logically connected in a ring, receives the value list of another processing module from another processing module, and The value list of the processing module is compared with the value list of another processing module, and a new global item value number is assigned to the item value of the value list of the own processing module among a plurality of processing modules.
  • FIG. 28 is an explanatory diagram of tabular data completed by the data overwriting process of this example.
  • FIGS. 29A and 29B are explanatory diagrams of sweep processing according to the embodiment of the present invention. As shown in FIGS. 29A and 29B, according to the sweep processing, VL and GNo are condensed and VNo is updated.
  • the item value corresponding to the current item value number specified by the element of the current pointer array VNo among the item values stored in the value list VL of the local information block is obtained. Updates the list of values to be stored in the order of the current item value numbers, and then specifies the item values stored in the updated list of values so that the current pointer array is stored in the current pointer array. Update the item value number of. By updating the list of values, Unused green field item value numbers GVNo are also deleted. This eliminates unnecessary data in the global information block.
  • FIG. 30 is a flowchart of a sweep process according to the embodiment of the present invention.
  • FIGS. 31A to 31H are explanatory diagrams of the progress of the sweep process based on the example shown in FIGS. 29A and 29B, respectively.
  • Step 3001 First, a flag array Flag is generated.
  • Flag is an integer array of the same size as VL (and GVNo), and its elements are initialized to 0.
  • Step 3002 Change the element of the Flag array (shown in italics in Fig. 31B) of the address indicated by the VNo from 0 to 1.
  • the value of the flag is 0 or 1.
  • Step 3003 The value of the VL corresponding to the position of Flag 1 (shown in italics in Fig. 31C) is entered into the new VL in order from the beginning.
  • Step 3004 The values of the GVNo (shown in italics in Fig. 31D) corresponding to the position of Flag 1 are entered in order of the new GVNo.
  • Step 3005 The flag is counted and moved one step backward. Flags that have been accumulated are shown as Flag '. Flag ', which is a cumulative number of flags, is shown in FIG. 31E.
  • Step 3006 Lastly, VNo is converted with reference to Flag '.
  • the GVNo values used are kept in ascending order (or descending order), but may be discrete values.
  • the GVNo maintains the ascending order (or descending order), even if it is discrete, it can operate the global information block according to the present invention to perform processing such as search, sort, and aggregation.
  • the GVNo can be reconstructed so that the GVNo becomes a continuous value. Reconstruction of the GVNo can be realized using the above-described sequence number assignment processing.
  • This sweep processing may be performed automatically, or may be performed in response to a request from a user. You may use it.
  • Data rearrangement means that tabular data is divided and managed by a plurality of processing modules, and at the same time, data allocation as to which record is held by which processing module is changed.
  • This data rearrangement is used, for example, when processing results such as retrieval, sorting, and tabulation of tabular data are output to a disk device, or when all or part of tabular data is managed as separate tabular data independently. Required. For example, when outputting tabular data to a sequential device, it is desirable that the tabular data be sequentially arranged on the information processing system, too! /.
  • the global order number GOrd is assigned a continuous ascending number among all processing modules, and OrdSet starts from 0 in each processing module. Assign numbers in ascending order.
  • FIG. 32 is a flowchart of a data rearrangement process according to the embodiment of the present invention.
  • the information processing system in which the data rearrangement process is executed includes a plurality of processing modules logically connected in a ring, and each processing module includes a memory for storing a local information block expressing tabular data. are doing.
  • a pointer array storing information specifying the item value numbers in the order of the records of the tabular data
  • the item values are stored in the order of the item value numbers corresponding to the item values of the tabular data. List of values that are included.
  • the record of the tabular data of each processing module is assigned a global order number GOrd that is uniquely determined among the plurality of processing modules, and the item value of the value list of each processing module is uniquely assigned to the plurality of processing modules. Determined global item value number GVNo is assigned.
  • This information processing system executes the rearrangement processing in the following procedure.
  • Step 3201 Determine the number of each new record to be relocated to each processing module.
  • Step 3202 New! / Assigns a new, global sequence number to the new record to be relocated, based on the number of records.
  • Step 3203 Power of each processing module. Other processing modules logically connected in a ring. The current global sequence number assigned to the current record of the self-processing module, and the item value in the current value list corresponding to the current global sequence number.
  • Step 3204 Each processing module receives, from another processing module, the current global sequence number of the other processing module and the corresponding item value in the current value list.
  • Step 3205 Each processing module power The new global assigned to the record to be relocated to its own processing module in the current global sequence number received from another processing module, and the global The item value corresponding to the current global sequence number that matches the current sequence number is stored in memory as a temporary value list.
  • Step 3206 Processing module power New! /, New in record order! /, New pointer array storing information specifying item value number, and item value in temporary value list A new L and a new value list stored in the order of the item value numbers are generated.
  • Step 3207 Each processing module transmits a new value list of its own processing module to another processing module logically connected in a ring.
  • Each processing module receives a new value list of another processing module from another processing module.
  • Each processing module compares the new! / Of its own processing module, the value list with the new value list of another processing module, and compares the item value of the new value list of its own processing module with a plurality of processing modules.
  • a new and unique item value number that is uniquely determined by
  • the data of the global information block can be rearranged.
  • FIG. 33A to 33C are explanatory diagrams of tabular data after searching and sorting, FIG. 33A is a list of data before searching and sorting, FIG. 33B is a list of data after searching and sorting, and FIG. 33C is a division management. Search and display the tabular data after sorting.
  • the data relocation processing consists of (procedure 1) a procedure for generating a new GOrd and OrdSet, (procedure 2) a procedure for transferring GOrd and VL and accommodating them in each processing module, and (procedure 3) controlling the VL
  • the procedure is broadly divided.
  • Step 1 Since there are eight rows of data in total and the number of modules is four, two rows are stored in each module, a new GOrd and OrdSet are generated at the generation destination, and the same size is used. Generate a value storage array for. At this time, GOrd is obvious, and OrdSet is also obvious in each module, because the number of lines arranged in each module is component. Specifically, each processing module can know the GOrd by notifying all processing modules of the data rearrangement calculation formula.
  • FIGS. 34A and 34B are explanatory diagrams of GOrd and OrdSet generation processing in data relocation processing.
  • Step 2 Send GOrd and value from each PMM to other PMMs.
  • GOrd is in ascending order and is unique.
  • Each PMM receives the GOrd and the value sent from the other PMM, and stores the value corresponding to the GOrd that matches the GOrd in its own PMM in the value storage array.
  • FIGS. 35A to 35C are explanatory diagrams of data transfer and value storage processing in data relocation processing.
  • Data transfer can be realized in various ways. For example, data may be transmitted between processing modules by immediately determining a pair of a transmitting side and a receiving side, or data may be transferred in a circular manner between modules connected in a circular manner. .
  • Step 3 By compiling the value storage array created at the generation destination of each processing module, a pointer array VNo and a value list VL are generated for each processing module for "height", and the global item value number is generated.
  • GVNo For example, PMM-0 rearranges the values 172 and 168 stored in the value storage array in ascending order to generate a value list VL. In response to this, values can be set in the order of 1 and 0 in the pointer array VNo.
  • the global item value number GVNo can be assigned using the above-described sequence number assignment processing.
  • FIG. 36 is an explanatory diagram of a VL compilation process in such a data relocation process. [0167] By similarly rearranging other items, tabular data as shown in FIG. 37 can be obtained.
  • the algorithm according to this embodiment is
  • the data structure and algorithm are excellent. Therefore, in the present embodiment, the program is simplified when the SIMD is adopted, and the program can be easily developed, and a high degree of freedom of the program can be secured.
  • the information processing system is, for example, connected to a terminal device serving as a front end via a ring-shaped channel, and receives instructions from the terminal devices by the respective PMMs. Compile, data update, and data relocation processes described above can be performed. Also. As long as each PMM sends out the packet using any bus, there is no need to externally control the synchronization between the PMMs.
  • the control device may include a general-purpose CPU in addition to the power of an accelerator chip provided with a hardware configuration for repeated operations such as compiling.
  • the general-purpose CPU can interpret the command transmitted via the terminal device channel and provide necessary instructions to the accelerator chip.
  • control device particularly the accelerator chip therein, has a register group for accommodating various arrays required for the operation, such as a sequence number array and a global sequence number array. Preferably, it is provided.
  • the controller reads out the register power without accessing the memory during the above-mentioned processing operations such as compiling. Alternatively, write a value to the register.
  • the number of memory accesses can be significantly reduced (loading before processing and writing of processing results), and processing time can be significantly reduced.
  • one of the PMMs is a first bus (first transmission path) that transmits packets clockwise, and the other is a second bus that transmits packets counterclockwise. (The second transmission path), they are connected in a ring.
  • first bus first transmission path
  • second bus second transmission path
  • Such a configuration is advantageous because the delay time of packet transmission can be made uniform.
  • the present invention is not limited to this, and other types of transmission lines such as a nosed type may be adopted.
  • a personal computer, a server, and the like which are not limited to the power using the PMM having the memory, the interface, and the control circuit, are stored in local tabular data. May be used in place of the PMM as an information processing unit for dividing the PMM. Alternatively, a configuration that holds a single personal computer or a plurality of information processing units may be employed. In these cases, the information processing unit can identify the record by receiving the value indicating the rank of the record and referring to the global order number array GOrd. Also, item values can be specified by referring to the global value number array.
  • the transmission path between the information processing units may be a so-called network type or bus type.
  • the present invention can be used as follows. For example, three tabular data, Sapporo Branch, Tokyo Branch, and Fukuoka Branch, are prepared, and search, aggregation, sorting, etc. are usually performed in each branch unit.
  • global tabular data that integrates three branches Considering the data, the tabular data of each branch office can be regarded as a sub-table of the whole table, and search, sorting, and aggregation of global tabular data can be realized.
  • FIG. 1 is an explanatory diagram of a conventional data management mechanism.
  • FIG. 2 is an explanatory diagram of a conventional data management mechanism.
  • FIG. 3 is a block diagram showing an outline of an information processing system according to an embodiment of the present invention.
  • FIG. 4 is a diagram showing an example of the structure of a PMM that is used in an embodiment of the present invention.
  • FIG. 5 is an explanatory diagram of an example of tabular data.
  • FIG. 6 is an explanatory diagram of a conventional storage structure of tabular data.
  • FIG. 7 is an explanatory diagram illustrating an example of a storage structure of tabular data that is useful in an embodiment of the present invention.
  • FIG. 8 is a flowchart of a sequence number assigning method emphasizing an embodiment of the present invention.
  • FIG. 9A to FIG. 9D are explanatory diagrams (part 1) of a first sequence number assignment method according to the embodiment of the present invention.
  • FIG. 10A to FIG. 10D are explanatory diagrams (part 2) of a first method of assigning a sequence number, which is applied to an embodiment of the present invention.
  • FIG. 11 is an explanatory diagram of a first example of a tournament device for assigning an effective sequence number to the embodiment of the present invention.
  • FIG. 12 is an explanatory diagram of a second example of a tournament device for assigning an effective sequence number to the embodiment of the present invention.
  • FIG. 13 is an explanatory diagram of a third example of a tournament device for assigning an effective sequence number to the embodiment of the present invention.
  • FIG. 14 is an explanatory diagram of tabular data managed by a single processing module.
  • FIG. 15 is an explanatory diagram of tabular data that is divided and managed by a plurality of processing modules.
  • FIG. 16 is a flowchart of a compiling process performed by the embodiment of the present invention.
  • FIG. 17 is an explanatory diagram of tabular data to be subjected to record deletion processing.
  • FIG. 18 is an explanatory diagram of an example of a record deletion process.
  • FIG. 19 is an explanatory diagram of tabular data after record deletion processing.
  • FIG. 20 is an explanatory diagram of an example of a record insertion process.
  • FIG. 21 is an explanatory diagram of tabular data after record insertion processing.
  • FIG. 22 is an explanatory diagram of an example of a data overwriting process.
  • FIG. 23 is a flowchart of a data overwriting process that empowers an embodiment of the present invention.
  • FIG. 24 is an explanatory diagram of a process of compiling overwrite data in a processing module.
  • FIG. 25A to FIG. 25D are explanatory diagrams of a process of merging overwritten data and original data, respectively.
  • FIG. 26A to FIG. 26C are explanatory diagrams of a process of updating a pointer array, respectively.
  • FIG. 27 is an explanatory diagram of tabular data during the data overwriting process.
  • FIG. 28 is an explanatory diagram of tabular data after the data overwriting process.
  • FIGS. 29A and 29B are explanatory diagrams of sweep processing that is performed in an embodiment of the present invention.
  • FIG. 30 is a flowchart of a sweep process emphasizing the embodiment of the present invention.
  • FIGS. 31A to 31H are explanatory diagrams of an example of a progress state of a sweep process.
  • FIG. 32 is a flowchart of a data relocation process that embodies the embodiment of the present invention.
  • FIGS. 33A to 33C are explanatory diagrams of tabular data after search and sort processing, which are divided and managed.
  • FIGS. 34A and 34B are diagrams for explaining a process of generating a GOrd and an OrdSet in a data relocation process.
  • FIG. 34A is a diagram for explaining a process of generating a GOrd and an OrdSet in a data relocation process.
  • 35A to 35C are explanatory diagrams of data transfer and value storage processing in data relocation processing.
  • FIG. 36 is an explanatory diagram of a VL compilation process in the data relocation process.
  • FIG. 37 is an explanatory diagram of tabular data after data rearrangement processing.

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

 複数のプロセッサ間で大量のデータを分掌管理するための情報処理方法である。表形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値番号の順序に項目値が格納されている値リストと、を含むローカルな情報ブロックを保持する各処理モジュールは、自処理モジュールの表形式データのレコードに、複数の処理モジュール間で一意に決まるグローバルな順序番号を割り当て、自処理モジュールの値リストと他の処理モジュールの値リストとを比較し、自処理モジュールの値リストの項目値に、複数の処理モジュール間で一意に決まるグローバルな項目値番号を付与する。

Description

情報処理方法及び情報処理システム
技術分野
[0001] 本発明は、大量のデータを処理する情報処理方法及び情報処理装置に係わり、特 に、並列コンピュータのアーキテクチャを採用した情報処理方法及び情報処理シス テムに関する。
背景技術
[0002] 従来、大量の情報を蓄積し、蓄積された情報を検索、集計するデータ処理が行わ れている。これらのデータ処理は、例えば、 CPUと、メモリと、周辺機器インタフェース と、ハードディスクのような補助記憶装置と、ディスプレイ及びプリンタのような表示装 置と、キーボード及びマウスのような入力装置と、電源ユニットとがノ スを介して接続さ れた周知のコンピュータシステムで使用され、特に、巿場で容易に入手可能なコンビ ユータシステムで動作可能なソフトウェアとして提供される。上記の検索'集計等のデ ータ処理を行うため、特に、大量のデータを蓄積する各種データベースが知られてい る。大量のデータの中でも、特に、表形式で表現され得るデータを処理したいという 要求は強い。
[0003] 大量のデータを効率よく検索、集計できる力否かは、大量のデータを格納する形式 に依存する。従来、一般的な格納技術として、所謂「行単位」格納技術及び「項目単 位」格納技術が知られている。行単位格納技術の場合、レコード番号毎に構成され た性別、年齢及び職業の項目値の組がレコード番号順に、論理的アドレスが増加す る順番でディスク上に格納されている。一方、項目単位格納技術の場合、項目毎に レコード番号順に、項目値が、論理的アドレスが増加する方向にディスク上に格納さ れている。
[0004] 上記の従来技術の場合、全てのレコード番号の全ての項目に対する項目値力 そ のまま、(レコード番号の 1次元と、それ以外の項目値の 1次元と力もなる) 2次元のデ ータ構造に格納されている。以下、このようなデータ構造を特に「データ表」と称する 。従来技術の場合、蓄積されたデータを検索、集計する際には、このデータ表をァク セスすることにより行われて!/、る。
[0005] また、項目の値をそのまま項目値として格納する方法の他に、値をコード変換して、 項目値としてコードを格納する方法も知られている。この場合でも、コード変換された コードが項目値としてデータ表に格納されている点に変わりはない。
[0006] 上記従来技術のデータ表タイプのデータ構造を用いて格納された大量のデータを 検索、集計する場合、このようなデータ表をアクセスするためのアクセス時間に起因し て検索、集計の処理時間が長くなるという問題点がある。
[0007] また、データ表には少なくとも以下に述べる本質的な欠点がある。
(1)データ表はサイズが巨大化しやすぐしかも例えば項目毎等に (物理的に)分割 することが困難である。実際上、集計'検索のためにデータ表をメモリなどの高速な記 憶装置上に展開することは困難である。
(2)データ表は、各項目値を同時にソートした形で保持できな!/、。
(3)データ表には、同一値が何度も出現する。
[0008] これに対して、本願発明者は、大量のデータの検索'集計のスピードを大幅に向上 させるため、従来のデータ表の機能を有すると共に、データ表に基づくデータ構造の 上記問題点が解決されたデータ管理機構を設けることにより、表形式データを検索 · 集計'ソートする方法及びその方法を実施する装置を提案している (例えば、特許文 献 1を参照。)。
[0009] 提案された表形式データを検索'集計する方法及び装置は、通常のコンピュータシ ステムで使用可能な新規のデータ管理機構を導入する。このデータ管理機構は原則 として値管理テーブルと、値管理テーブルへのポインタ配列とを有する。
[0010] 図 1は、従来のデータ管理機構の説明図である。同図には、値管理テーブル 110と 値管理テーブルへのポインタ配列 120とが示されている。値管理テーブル 110とは、 表形式データの各項目に対し、その項目に属する項目値が順序付け (整数化)され た項目値番号の順番に、上記項目値番号に対応した項目値 (符号 111参照)と、上 記項目値に関連した分類番号 (符号 112参照)とが格納されたテーブルである。値管 理テーブルへのポインタ配列 120とは、表形式データのある列(即ち、項目)の項目 値番号、即ち値管理テーブル 110へのポインタが表形式データのレコード番号順に 格納された配列である。
[0011] 値管理テーブルへのポインタ配列 120と値管理テーブル 110とを組み合わせること により、あるレコード番号が与えられたとき、所定の項目に関する値管理テーブルへ のポインタ配列 120からそのレコード番号に対応して格納された項目値番号を取り出 し、次に、値管理テーブル 110内でその項目値番号に対応して格納された項目値を 取り出すことにより、レコード番号力も項目値を得ることができる。したがって、従来の データ表と同様に、レコード番号 (行)と項目(列)という座標を用いて全てのデータ( 項目値)を参照することができる。
[0012] このように表形式データの項目中のある項目に対して生成された値管理テーブルと 、値管理テーブルへのポインタ配列とを含むデータ管理機構は、以下の説明では、 特に情報ブロックと呼ぶ。
[0013] 従来のデータ表は、レコードに対応した行と、項目に対応した列とからなる座標を用 いて全てのデータを一体的に管理しているのに対して、この情報ブロックは、表形式 の列、即ち、項目毎にデータを完全に分離している点に特徴がある。このデータ管理 機構によれば、大量のデータが項目毎に分離されているので、検索'集計に必要な 項目に関するデータのみをメモリ等の高速な記憶装置上に取り込むことが可能であり 、その結果としてデータへのアクセス時間が短縮されるので、検索'集計の処理が高 速化され、項目数が非常に多いデータの場合でも、パフォーマンスを低下させること なく取り扱えるようになる。
[0014] また、この情報ブロックの場合、項目値は値管理テーブルに格納され、値が存在す る位置を示すレコード番号は値管理テーブルへのポインタ配列に関連付けられてい るので、項目値がレコード番号順に並べられている必要がない。したがって、検索' 集計に適するようにデータを項目値に関してソートすることができるようになる。これに より、目的の値と一致する項目値がデータ中に存在するか否かの判定が高速に行え るようになる。その上、項目値は項目値番号と対応しているので、項目値が長いデー タゃ文字列等であっても整数として取り扱うことができる。
[0015] さらに、このデータ管理機構によれば、値管理テーブル 110の全ての項目値番号 は異なる項目値と対応して ヽるので、特定の値を有する項目値を含むレコードを抽 出する場合に必要とされる特定の値と項目値との比較の回数は、最大で項目値の種 類の数、即ち、項目値番号の個数であり、比較演算の回数が著しく低減され、検索- 集計の高速化が図られる。その際には、ある項目値が該当するかどうかを調べた結 果を格納する場所が必要であるが、例えば分類番号 112をその格納場所として使用 することができる。
[0016] 図 2には、項目値を格納した項目値配列 211と、分類番号を格納した分類番号配 列 212と、存在数を格納した存在数配列 214とからなる値管理テーブル 210を含む 情報ブロックが示されている。存在数配列 214には、ある項目に関する各項目値が 全データ中に何個ずつ存在するかを示す数、換言すれば、所定の項目値を有する レコードの個数が格納される。このような存在数配列 214を値管理テーブル 210に準 備しておくことにより、検索 'ソート'集計の際に必要とされる「どのようなデータが(いく つ)存在するか?」、 「このデータは上から何番目のデータであるか?」、或いは、「上 から〇〇番目のデータは何か?」と 、うような情報を直ちに得ることができるようになり 、検索 'ソート'集計の高速化が図れる。
[0017] しかし、このようなデータ管理機構においても、レコード数が増大するのにしたがつ て、上記値リストやポインタ配列、特に、ポインタ配列は非常に大きくなる力 処理可 能なデータ量は、利用されるハードウ ア資源によって制限される。
[0018] 大規模データの処理は、上記のような表形式データの情報処理以外の分野でも要 求されている。社会全体のさまざまな場所にコンピュータが導入され、インターネット をはじめとするネットワークが浸透した今日では、そこここで、大規模なデータが蓄積 されるようになった。このような大規模データを処理するには、膨大な計算が必要で、 そのために並列処理を導入しようと試みるのは自然である。
[0019] 並列処理アーキテクチャは「共有メモリ型」と「分散メモリ型」に大別される。前者(「 共有メモリ型」)は、複数のプロセッサが 1つの巨大なメモリ空間を共有する方式であ る。この方式では、プロセッサ群と共有メモリ間のトラフィックがボトルネックとなるので 、百を越えるプロセッサを用いて現実的なシステムを構築することは容易ではない。し たがって、例えば 10億個の浮動小数点変数の平方根を計算する際、単一 CPUに対 する加速比は、せいぜい 100倍ということになる。経験的には、 30倍程度が上限であ る。
[0020] 後者(「分散メモリ型」)は、各プロセッサがそれぞれローカルなメモリを持ち、これら を結合してシステムを構築する。この方式では、数百〜数万ものプロセッサを組み込 んだノヽードゥエアシステムの設計が可能である。したがって、上記 10億個の浮動小 数点変数の平方根を計算する際の単一 CPUに対する加速比を、数百〜数万倍とす ることが可能である。
特許文献 1:国際公開第 WO00Z10103号パンフレット
発明の開示
発明が解決しょうとする課題
[0021] しかしながら、「分散メモリ型」の並列処理アーキテクチャにもいくつかの課題が存在 する。
[0022] [第 1の課題:巨大配列の分掌管理]
「分散メモリ型」の第 1の課題は、データの分掌管理の問題である。
[0023] 巨大なデータ(一般的には配列なので、以降、配列で説明する)は、 1つのプロセッ サの所有するローカルメモリに収容できるものではなぐ必然的に複数のローカルメ モリに分掌管理される。効率的かつ柔軟な分掌管理メカニズムを導入しないと、プロ グラムの開発および実行に際してさまざまな障害を抱え込むことになることは明らか である。
[0024] [第 2の課題:プロセッサ間通信の効率の低さ]
分散メモリ型システムの各プロセッサが、巨大配列にアクセスしょうとすると、自己の 所有するローカルメモリ上の配列要素に対しては速やかにアクセスできるものの、他 のプロセッサが所有する配列要素へのアクセスはプロセッサ間通信を必須とする。こ のプロセッサ間通信はローカルメモリとの通信に比べ、極端にパフォーマンスが低ぐ 最低でも 100クロック力かると言われている。このため、ソート実施時には、巨大配列 全域にわたる参照が実施され、プロセッサ間通信が多発するため、パフォーマンスが 極端に低下する。
[0025] この問題点につき、より具体的に説明を加える。 1999年現在、パソコンは、 1〜数 個の CPUを用いて、「共有メモリ型」として構成されている。このパソコンに使用される 標準的な CPUは、メモリバスの 5〜6倍程度の内部クロックで動作し、その内部に自 動的な並列実行機能やパイプライン処理機能が装備されており、およそ 1データを 1 クロック (メモリバス)で処理できる。
[0026] このため、「分散メモリ型」のマルチプロセッサシステムでは、プロセッサ数は多いの に、シングルプロセッサ(共有メモリ型)よりも 100倍遅くなることになりかねない。
[0027] [第 3の課題:プログラムの供給]
「分散メモリ型」の第 3の課題は、多数のプロセッサにどうやってプログラムを供給す る力、という問題である。
[0028] 非常に多数のプロセッサに、別々のプログラムをロードし、全体を協調動作させる方 式 (MIMD : Multiple Instruction Stream, Multiple Data Stream)では、プログラムの 作成、コンパイル、配信のために多大な負荷を要する。
[0029] その一方、多数のプロセッサを同一のプログラムで動作させる方式(SIMD: Single Instruction Stream, Multiple Data Stream)では、プログラムの自由度が減少し、所望 の結果をもたらすプログラムが開発できない事態も想定される。
[0030] したがって、上記の従来の分散メモリ型の並列アーキテクチャに基づく情報処理技 術では、プロセッサ間通信ができるだけ少なくなるように、大規模データをプロセッサ 間で共有することなぐ大規模データを個々のプロセッサ内に保持したまま、大規模 データの処理を実現することが求められている。
[0031] そこで、本発明は、並列コンピュータのアーキテクチャを採用して大量のデータを情 報処理する際に、複数のプロセッサ間でデータを分掌管理するための情報処理方法 の提供を目的とする。
[0032] また、本発明は、上記の情報処理方法をコンピュータに実行させるためのプロダラ ムの提供を目的とする。
[0033] 更に、本発明は、上記の情報処理方法を実現する情報処理システムの提供を目的 とする。
課題を解決するための手段
[0034] 本発明は、表形式データの実体的要素である値リスト及びポインタ配列を個々の処 理モジュールにローカルに保存し、複数の処理モジュール間では、データ自体では なぐデータの順序番号 (又は、順位)という指標がグローバルに保持されるという分 散メモリ型の並列処理アーキテクチャを採用している。また、本発明は、単一命令に より種々のメモリに記憶されたデータを入出力し処理するように、処理と通信が統合さ れたアルゴリズムを採用して 、る。
[0035] 上記目的を達成するため、本発明によれば、複数の処理モジュールが論理的に環 状に接続され、各処理モジュールは表形式データを表現するローカルな情報ブロッ クを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データのレコー ドの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式データ の項目値に対応した項目値番号の順序に該項目値が格納されて 、る値リストと、を 含む、情報処理システムにおいて、
前記各処理モジュールの表形式データのレコードに、前記複数の処理モジュール 間で一意に決まるグローバルな順序番号を割り当てるステップと、
前記各処理モジュールが前記各処理モジュールの値リストと前記他の処理モジュ 一ルの値リストとを比較し、前記各処理モジュールの値リストの項目値に、前記複数 の処理モジュール間で一意に決まるグロ一ノ レな項目値番号を付与するステップと
を有し、
グローバルな情報ブロックを構築する情報処理方法が提供される。これにより、レコー ドに対応したグローバルな順序番号と、項目値に対応したグローバルな項目値番号 を、複数の処理モジュール間で一意に決めることにより、グローバルな大量の表形式 データを複数の処理モジュールで分掌管理するグローバルな情報ブロックを構築す ることが可能になる。
[0036] 好ま 、実施態様にぉ 、ては、前記グローバルな順序番号を割り当てるステップは 、前記各処理モジュールの表形式データのレコードの順番を表す番号に、前記各処 理モジュールに割り当てられたオフセット値を加算することにより、前記グローバルな 順序番号を計算する。これにより、グローバルな順序番号は処理モジュール間で通 信をしなくても一意に決めることができる。
[0037] 好ま 、実施態様にぉ 、ては、前記グロ一ノ レな項目値番号を付与するステップ は、前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該 各処理モジュールの値リストを送信し、前記各処理モジュールが前記他の処理モジ ユールから前記他の処理モジュールの値リストを受信し、前記他の処理モジュールか ら受信した値リスト中の項目値のうち、当該各処理モジュールの値リスト中の項目値よ りも前に順序付けされる値の個数をカウントし、当該各処理モジュールの値リスト中の 項目値の項目値番号を該個数分だけ引き上げることにより前記グローバルな項目値 番号を計算する。これにより、グローバルな項目値番号は、値リストの通信と統合した 処理によって一意に決めることができる。
[0038] また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理 的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報 ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データの レコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式 データの項目値に対応した項目値番号の順序に該項目値が格納されて!、る値リスト と、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処 理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理 モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグロ 一バルな項目値番号が付与されて!、る、情報処理システムにお 、て、
削除対象となるレコードを特定するステップと、
前記削除対象となるレコードに対応したグローバルな順序番号よりも後に順序付け されたグローバルな順序番号を削除される個数分だけ引き下げ、前記削除対象とな るレコードに対応した項目値番号を指定する情報をポインタ配列力 削除するステツ プと、
を有し、グローバルな情報ブロックのデータを削除する情報処理方法が提供される。 これにより、複数の処理モジュール間で分掌管理されている表形式データの任意の レコードを削除することが可能になる。
[0039] また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理 的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報 ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データの レコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式 データの項目値に対応した項目値番号の順序に該項目値が格納されて!、る値リスト と、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処 理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理 モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグロ 一バルな項目値番号が付与されて!、る、情報処理システムにお 、て、
挿入対象となるレコードの挿入位置を特定するステップと、
前記挿入対象となるレコードに対応したグローバルな順序番号よりも後に順序付け されたグローバルな順序番号を挿入される個数分だけ引き上げ、前記挿入対象とな るレコードに対応した項目値番号を指定する情報を格納する領域を、ポインタ配列の 挿入位置に確保するステップと、
を有し、グローバルな情報ブロックのデータを挿入する情報処理方法が提供される。 これにより、複数の処理モジュール間で分掌管理されている表形式データの任意の 位置にレコードを追加することが可能になる。
また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理 的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報 ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データの レコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式 データの項目値に対応した項目値番号の順序に該項目値が格納されて!、る値リスト と、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処 理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理 モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグロ 一バルな項目値番号が付与されて!、る、情報処理システムにお 、て、
上書き対象となるレコードを特定し、上書きデータを設定するステップと、 前記上書きデータを表現する項目値番号と項目値の組を生成するステップと、 前記生成された項目値番号と項目値の組をマージすることにより、前記上書き対象 となるレコードを含むローカルな情報ブロックのポインタ配列及び値リストを更新する ステップと、 前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各 処理モジュールの値リストを送信し、該他の処理モジュールから該他の処理モジユー ルの値リストを受信し、該各処理モジュールの値リストと該他の処理モジュールの値リ ストとを比較し、該各処理モジュールの値リストの項目値に、前記複数の処理モジュ ール間で新 U、グローバルな項目値番号を付与するステップと、
を有し、
グローバルな情報ブロックのデータを上書きする情報処理方法が提供される。これに より、複数の処理モジュール間で分掌管理されている表形式データの任意のレコー ドのデータを更新することが可能になる。
また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理 的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報 ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データの レコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式 データの項目値に対応した項目値番号の順序に該項目値が格納されて!、る値リスト と、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処 理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理 モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグロ 一バルな項目値番号が付与されて!、る、情報処理システムにお 、て、
前記ローカルな情報ブロックの値リストに格納されて 、る項目値のうち現在のポイン タ配列の要素によって指定されて 、る現在の項目値番号に対応した項目値が該現 在の項目値番号の順序に格納されるように前記値リストを更新するステップと、 前記更新された値リストに格納されて 、る項目値を指定するように、前記現在のポ インタ配列に格納される前記現在の項目値番号を指定する情報を更新するステップ と、
を有し、
グローバルな情報ブロックの不要なデータを除去する情報処理方法が提供される。こ れにより、複数の処理モジュール間で分掌管理されて 、る表形式データの不要なデ ータを消去し、メモリ使用効率、処理効率を高めることが可能になる。 また、上記目的を達成するため、本発明によれば、複数の処理モジュールが論理 的に環状に接続され、各処理モジュールは表形式データを表現するローカルな情報 ブロックを格納するメモリを具備し、前記ローカルな情報ブロックは、表形式データの レコードの順番に項目値番号を指定する情報が格納されたポインタ配列と、表形式 データの項目値に対応した項目値番号の順序に該項目値が格納されて!ヽる値リスト と、を含み、前記各処理モジュールの表形式データのレコードには、前記複数の処 理モジュール間で一意に決まるグローバルな順序番号が割り当てられ、前記各処理 モジュールの値リストの項目値に、前記複数の処理モジュール間で一意に決まるグロ 一バルな項目値番号が付与されて!、る、情報処理システムにお 、て、
前記各処理モジュールに再配置されるべきそれぞれの新しいレコードの個数を決 定するステップと、
前記新し 、レコードの個数に基づ 、て、新し 、グローバルな順序番号を再配置さ れるべき前記新し 、レコードに割り当てるステップと、
前記各処理モジュール力 論理的に環状に接続された他の処理モジュールへ、前 記各処理モジュールの現在のレコードに割り当てられた現在のグローバルな順序番 号と、該現在のグロ一ノ レな順序番号に対応した現在の値リスト中の項目値と、を送 信するステップと、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュール の前記現在のグローバルな順序番号と、前記対応した現在の値リスト中の項目値と、 を受信するステップと、
前記各処理モジュール力 前記他の処理モジュール力 受信した前記現在のグロ 一バルな順序番号の中で前記各処理モジュールに再配置されるべき前記新 、レ コードに割り当てられた前記新 、グローバルな順序番号と一致する前記現在のグ ローバルな順序番号に対応した前記項目値を一時的な値リストとして前記メモリに記 憶するステップと、
前記各処理モジュール力 前記新 、レコードの順番に新 、項目値番号を指定 する情報が格納された新しいポインタ配列と、前記一時的な値リスト中の項目値を前 記新 、項目値番号の順序に格納した新 、値リストと、を生成するステップと、 前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各 処理モジュールの前記新しい値リストを送信するステップと、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュール の前記新 、値リストを受信するステップと、
前記各処理モジュールが前記各処理モジュールの前記新しい値リストと前記他の 処理モジュールの前記新 、値リストとを比較し、前記各処理モジュールの前記新し V、値リストの項目値に、前記複数の処理モジュール間で一意に定まる新し 、グロ一 バルな項目値番号を付与するステップと、
を有し、
グローバルな情報ブロックのデータを再配置する情報処理方法が提供される。これに より、アプリケーションの要求に応じて、処理モジュール間での表形式データの分掌 の割り振りを自由に変更することが可能になる。
[0043] また、上記目的を達成するため、本発明によれば、上記本発明の情報処理方法を 情報処理システムの処理モジュールのコンピュータに実行させるためのプログラムが 提供される。
[0044] また、上記目的を達成するため、本発明によれば、上記本発明のプログラムを記録 したコンピュータ読み取り可能な記録媒体が提供される。
[0045] さらに、上記目的を達成するため、本発明によれば、上記本発明の情報処理方法 を実行するように構成された処理モジュールを含む情報処理システムが提供される。 発明の効果
[0046] 本発明によれば、分散メモリ型の並列処理アーキテクチャに基づいて、大量のデー タを分掌管理することができる情報処理システムを提供することが可能となる。
発明を実施するための最良の形態
[0047] [ハードウェア構成]
以下、添付図面を参照して、本発明の実施の形態につき説明を加える。図 3は、本 発明の実施の形態に力かる情報処理システムの概略を示すブロックダイヤグラムで ある。この実施形態では、処理モジュールは、プロセッサ付きメモリモジュール(以下 、「PMM」と称する)により構成される。図 3に示すように、この実施の形態においては 、複数の処理モジュールを論理的に環状に接続するため、複数のプロセッサ付きメ モリモジュール PMM32— 0、 PMM32— 1、 PMM32— 2、 · · ·がリング状に配置さ れ、隣接するメモリモジュール間を、時計回りにデータを伝達する第 1のバス (たとえ ば、符号 34— 0、 34—1参照)、および、反時計回りにデータを伝達する第 2のバス( たとえば、符号 36— 0、 36— 1参照)が接続している。第 1のバスおよび第 2のノ スで は、 PMM間のパケット通信が実行される。本実施の形態において、このパケット通信 が実行される伝送路 (パケット伝送路)を、第 1のバスおよび第 2のバスと称する。
[0048] 本実施の形態では、 PMMを、一方が時計回りにパケットを伝送する第 1のバス (第 1の伝送路)、他方が反時計回りにパケットを伝送する第 2のバス (第 2の伝送路)にて 、リング状に接続している。このような構成は、パケット伝送の遅延時間などを均一化 することができるため有利である。
[0049] 尚、処理モジュール間の物理的な接続形態は、本実施の形態に示されるような形 態に限定されるものではなぐ処理モジュールを論理的に環状に接続できる形態で あればどのような形態でもよい。例えば、バス型、スター型などの種々の接続形態を 採用することができる。
[0050] 図 4は、 PMM32の構造の一例を示す図である。図 4に示すように、各 PMM32— i は、 PMM間で共通の命令にしたがって、メモリのアクセス、演算の実行などを制御 する制御回路 40と、ノ スインタフェース (IZF) 42と、メモリ 44とを備えている。
[0051] メモリ 44は、複数のバンク BANK0、 1、 · · ·、 n (符号 46— 0、 · · ·、 n)を有し、それ ぞれに、後述する所定の配列を記憶できるようになって 、る。
[0052] また、制御回路 40は、外部の他のコンピュータ等とのデータ授受が可能である。ま た、他のコンピュータが、バスアービトレーションにより、メモリの所望のバンクにァクセ スできるようにしても良い。
[0053] さらに、複数のプロセッサ付きメモリモジュールのメモリが同一のメモリ空間に存在し ていても構わない。この場合、パケット通信はメモリ参照で実現される。或いは、複数 のプロセッサ付きメモリモジュールのプロセッサが物理的に同一の CPUであってもよ い。
[0054] [表形式データ] 表形式データとは、情報の項目に対応した項目値を含むレコードの配列として表さ れるデータである。この表形式データは、例えば、ある項目(次元)のある項目値 (次 元値)毎に、別の項目の項目値 (メジャー)を集計する処理の対象になる。ここで、メ ジャーの集計とは、メジャーの個数をカウントしたり、メジャーの総和を算出したり、メ ジャーの平均値を算出したりすることである。また、次元数は、 2次元以上でも構わな い。例えば、図 5は、ある保育園における園児の性別'年齢 '身長の論理的な表形式 データである。ここで、性別の人数を求める処理や、性別'年齢別に身長の合計値を 求める処理は、本発明を適用することにより実現される情報処理の一例としての集計 処理である。
[0055] 本発明は、このような表形式データの高速、並列的な情報処理を実現するための データ構造の構築技術、データの更新技術、及び、データの再配置技術を提供する ものである。
[0056] [従来のデータの記憶構造]
図 5に示された表形式データは、上述の国際公開第 WOOOZ10103号に提案し たデータ管理機構を用いることにより、単一コンピュータ内では図 6に示されるような データ構造として記憶される。
[0057] 図 5に示すように、表形式データの各レコードの並び順の番号と、内部データの並 び順の番号を対応付ける配列 601 (以下、この配列を「OrdSet」のように略記する。 ) には、表形式の各レコード毎に内部データの並び順番号が値として配置される。この 例では、すべての表形式データが内部データとして表されるため、表形式データのレ コード番号と内部データの並び順番号とは一致する。
[0058] 例えば、性別に関しては、表形式データのレコード 0に対応する内部データの並び 順番号は、配列 OrdSet601から「0」であることがわかる。並び順番号が「0」であるレ コードに関する実際の性別の値、即ち、「男」又は「女」は、実際の値が所定の順序に 従ってソートされた値リスト 603 (以下、値リストを「VL」のように略記する。)へのポイン タ配列 602 (以下、ポインタ配列を「VNo」のように略記する。)を参照することによって 取得できる。ポインタ配列 602は、配列 OrdSet601に格納されている並び順番号の 順に従って、実際の値リスト 603中の要素を指し示すポインタを格納している。これに より、表形式データのレコード「0」に対応する性別の項目値は、(1)配列 OrdSet601 力もレコード「0」に対応する並び順番号「0」を取り出し、(2)値リストへのポインタ配列 602から並び順番号「0」に対応する要素「1」を取り出し、(3)値リスト 603から、値リス トへのポインタ配列 602から取り出された要素「1」によって指し示される要素「女」を 取り出すことにより取得できる。
[0059] 他のレコードに対しても、また、年齢及び身長に関しても同様に項目値を取得する ことができる。
[0060] このように表形式データは、値リスト VLと、値リストへのポインタ配列 VNoの組合せに より表現され、この組合せを、特に、「情報ブロック」と称する。図 6には、性別、年齢及 び身長に関する情報ブロックがそれぞれ情報ブロック 608、 609及び 610として示さ れている。
[0061] 単一のコンピュータ力 単一のメモリ(物理的には複数であっても良いが、単一のァ ドレス空間に配置されアクセスされるという意味で単一のメモリ)であれば、当該メモリ に、順序集合の配列 OrdSet、各情報ブロックを構成する値リスト VLおよびポインタ配 列 VNoとを記憶しておけばよい。しかしながら、大量のレコードを保持するためには、 その大きさに伴ってメモリ容量も大きくなるため、これらを分散配置できるのが望まし い。また、処理の並列化の観点からも、分散配置された情報を分掌把握できるのが 望ましい。
[0062] そこで、本実施の形態においては、複数の PMM力 重なることなくレコードのデー タを分掌把握し、 PMM同士のパケット通信により、高速な集計を実現している。
[0063] [本実施の形態によるデータ記憶構造]
図 7は、本実施の形態によるデータ記憶構造の説明図である。同図では、図 5及び 図 6によって示された表形式のデータが、一例として、 PMM— 0、 PMM— 1、 PMM 2及び PMM— 3の 4個の処理モジュールに分散配置され、分掌把握されて!、る。 説明の便宜上、処理モジュールの個数は 4個である力 本発明は処理モジュールの 個数によって限定されるものではな 、。
[0064] 本実施の形態では、各 PMMで分掌把握されているレコードを、 PMM— 0から PM M— 3までの 4個の PMMで掌握されて!、るすべてのレコードの中で一意に順序付け ることができるようにするため、各レコードにはグローバル 'レコード番号が一意に割り 当てられている。図 7では、グローバル 'レコード番号は「GOrd」として表されている。 このグローバル.レコード番号 GOrdは、各 PMM内の配列 OrdSetの各要素が、すべ てのレコード中で何番目であるかを示している。ここで、配列 OrdSetは、データ全体 力 各 PMM内部への順序保存写像となるように定められているので、 GOrdは昇順 にすることができる。また、各 PMM内において、 GOrd配列(=グローバル順序配列) のサイズは OrdSet配列(順序配列)のサイズと一致して 、る。
[0065] 更に、本実施の形態では、各 PMMで分掌把握されている項目値、即ち、値リスト VL中の各値が、すべての PMMで掌握されて!、る項目値の中で何番目の位置にあ るかを示すためのグローバル項目値番号が設けられる。図 7では、このグローバル項 目値番号は「GVNo」として示されている。値リスト VLは値の順 (例えば、昇順又は降 順)に並べられているので、グローバル項目値番号 GVNoも昇順 (又は降順)に設定 される。配列 GVNoのサイズは、配列 VLのサイズと一致している。各処理モジュール で個別に掌握されている項目値が全体の中で何番目であるかを識別することにより、 各処理モジュールでの集計結果を全体として一つに統合することが可能になる。
[0066] 尚、図 7において、各 PMMに割り当てられている値 OFFSETは、当該 PMMが分掌 する先頭のレコードが、図 6に示された一体的なレコードの中の何番目のレコードに 対応しているかを示すためのオフセット値である。上述のように、各 PMMの配列 OrdSetは、データ全体力 各 PMM内部への順序保存写像となるように定められて いるので、このオフセット値 OFFSETと当該 PMMにおける配列 OrdSetの要素の値を 合計した値は、グローバル 'レコード番号 GOrdと一致する。好ましくは、このオフセット 値が各 PMMに通知され、各 PMMはこのオフセット値 OFFSETに基づ!/、てグローバ ル 'レコード番号を決定することができる。
[0067] 各 PMMのグローバル 'レコード番号 GOrd及びグローバル項目値番号 GVNoは、予 め各 PMMの外部で計算して各 PMMに設定することができる力 後述のコンパイル 処理によって各 PMM自体が設定することも可能である。
[0068] [グローバル集合配列 Gordとグローバル項目値番号配列 GNoにつ!/、て]
次に、本実施の形態にて導入した配列 GOrdおよび配列 GVNoの意義にっ 、て説 明する。グローバル順序配列 GOrdは、各 PMMが掌握するローカルな表形式データ を集合させたグローバルな表形式データ中、各 PMMの掌握する表形式データの各 レコードの位置 (順位)を示している。即ち、本実施の形態では、グロ一ノ レ順序配列 GOrd及び順序配列 OrdSetにより、レコードの位置情報を、グローバルな成分とロー カルな成分とに分離し、これにより、グローバルな表形式データを扱うことが可能とな るとともに、各 PMMが単独で処理を実行することも可能となる。
[0069] 以下の実施例の説明では、 PMMが各項目の情報ブロックを保持するように構成さ れているが、 PMMが表形式データをそのまま保持するような場合でも、上記 GOrdは 同様に機能する。
[0070] 例えば、以下の実施例において後述のコンパイルが終了した状態で、グローバル 順序配列 GOrdの値の順序で、各項目の項目値を取り出していくことにより、表形式 データ全体のビューを作成することができる。
[0071] [コンパイル処理の概要]
コンパイル処理は、各処理モジュールでデータを管理するために使用するグローバ ル.レコード番号 GOrdとグローバル項目値番号 GVNoを設定するための処理である。 グローバル.レコード番号 GOrdは、上述のオフセット値 OFFSETを使用することにより 簡単に設定することができる。一方、グローバル項目値番号 GVNoは、各処理モジュ ールが個別に保持して 、る値リストに基づ 、て、すべての処理モジュール間で共通 に順序付けされる番号である。各処理モジュールは、この順序番号付与処理を用い ることによってグローバル項目値番号 GVNoを設定することが可能である。そこで、こ の順序番号付与処理にっ 、て詳述する。
[0072] [順序番号付与処理]
本実施の形態による情報処理システムのように、順序付きの値のリストを格納してい るメモリをそれぞれに有する複数の処理モジュールが論理的に環状に接続されてい る情報処理システムでは、各処理モジュールで個別に順序付けされて 、る値に複数 の処理モジュール間で共通の順序番号を付与する情報処理方法、即ち、順序番号 付与方法が必要である。
[0073] 順序番号付与処理は、例えば、コンパイル処理にお!、て、グローバル項目値番号 を設定する場合にも使用される。この順序番号付与処理は、同一値には唯一の番号 しか付与しないことを特徴としている。したがって、このタイプの順序番号付与処理は 、特に、同一値消去型の順序番号付与処理と称する。
[0074] 図 8は、実施の形態にかける順序番号付与方法のフローチャートである。同図に示 されるように、各処理モジュールは、自処理モジュール内の値のリスト中の各値の順 序番号の初期値をメモリに格納する (ステップ 801)。
[0075] 次に、各処理モジュールは、自処理モジュールのメモリに格納されている値のリスト を論理的に次の段に接続された処理モジュールへ送信する (ステップ 802)。更に、 各処理モジュールは、自処理モジュール内の値のリスト中の各値に対し、論理的に 前の段に接続された処理モジュール力 受信した値のリストの中から上記各値よりも 前に順序付けされる値の個数をカウントし、自処理モジュール内の値のリスト中の各 値の順序番号をカウントされた個数分だけ引き上げることにより、自処理モジュール 内の値のリスト中の各値の順序番号を更新し、更新された順序番号をメモリに格納す る(ステップ 803)。
[0076] 次に、各処理モジュールは、受信した値のリスト中の値から自処理モジュール内の 値のリスト中の値と一致する値を除いた更なる値のリストを論理的に次の段に接続さ れた処理モジュールへ送信し (ステップ 804)、各処理モジュールは、 自処理モジュ ール内の値のリスト中の各値に対し、論理的に前の段に接続された処理モジュール 力 受信した更なる値のリストの中力 上記各値よりも前に順序付けされる値の個数 をカウントし、自処理モジュール内の値のリスト中の各値の順序番号をカウントされた 個数分だけ引き上げることにより、自処理モジュール内の値のリスト中の各値の順序 番号を更新し、更新された順序番号をメモリに格納する (ステップ 805)。
[0077] 続いて、各処理モジュールは、送信ステップ 802において論理的に次の段に接続 された処理モジュールへ送信した値のリストが、論理的に環状に接続された他の処 理モジュールを介して、論理的に前の段に接続された処理モジュールによって受信 されるまで、ステップ 2204とステップ 2205を繰り返し実行する(ステップ 806)。
[0078] この順序番号付与方法によれば、各処理モジュールは、他の処理モジュールが保 持する値のリストを重複無く受け取り、自処理モジュールが保持する値にグローバル な順序番号を付与することができる。上述のように、各処理モジュールが予め順序付 きの値のリストを保持している場合には、非常に効率的にグローバルな順序番号を付 与することが可能である。なぜならば、値のリストが予め順序付けされている場合には 、昇順 (又は降順)の一方向に順序を比較するだけでよいからである。もちろん、各処 理モジュールの保持する値のリストが順序付きでな 、場合でも同様の結果を得ること ができる。その場合には、例えば、各処理モジュールは、他の処理モジュールから受 信した値のリスト中の値と、自処理モジュールが保持している値のリスト中の値を、す ベての組合せについて順番に比較して、各値よりも前に、即ち、上位に、順序付けさ れる値の個数をカウントして、各値の順序番号を更新すればょ 、。
[0079] 本実施の形態の順序番号付与方法では、各処理モジュールは、他の処理モジュ 一ルカ 受信した値のリストを保存する必要はなぐ自処理モジュールが保持して ヽ る値のリストに順序を付けるだけで、すべての処理モジュールに共通の順序番号を付 与することができる。
[0080] また、この順序番号付与方法は、他の処理モジュールからの値のリストの受信順に 影響されないので、処理モジュール間の物理的な接続形態に全く依存しない。した がって、伝送路と順序番号更新回路を多重化することによって、更なる高速化を実現 することができる。
[0081] 図 9A〜D及び図 10A〜Dは、第 1の順序番号付与処理の説明図である。図 9A〜 Dには、各 PMMが次の段に接続された PMMへ送信する値のリストがステップ毎に 示されている。図 10A〜Dには、各ステップで、 PMMが前の段に接続された PMM 力 受信した値のリストが示されている。この例では、初期状態として、 PMM— 0が値 のリスト [1, 3, 5, 6]を保持し、 PMM—1が値のリスト [0, 2, 3, 7]を保持し、 PMM 2が値のリスト [2, 4, 6, 7]を保持し、 PMM— 3が値のリスト [0, 1, 3, 5]を保持し ている。
[0082] ステップ 3の終了時点で、各 PMMは、他のすべての処理モジュールからの値のリ ストを受信することができる。この時点で、 自処理モジュールが保持している値のリスト と、受信した値のリストを合わせることにより、すべての値の順序を決めることができる 。更に、ステップ 4の終了時点では、すべての値を重複無く受信できることが分かる。 [0083] この第 1の順序番号付与処理では、処理モジュールは、図 9A〜Dに示されるように 、論理的に環状に接続され、各処理モジュールは自処理モジュール内に重複値を 持たないリストを保持する。そして、各処理モジュールは、自処理モジュール内のリス トを論理的に下流の処理モジュールへ送出し、論理的に上流の処理モジュールから 1モジュール分のリストを受信する。各処理モジュールは、上流のモジュールから受 信したリスト中の値から、自処理モジュール内に保持して 、るリスト中に含まれる値と 一致した値を除き、リストを下流の処理モジュールへ送出する。
[0084] この第 1の順序番号付与処理によれば、処理モジュールの総数が Nであるとき、各 処理モジュールは、(N— 1)回の転送サイクル終了までに、他の処理モジュールの 保持するリストを重複無く受け取ることができる。また、各処理モジュールは、 N回の 転送サイクル終了までに、全モジュールの保持するリストを重複無く受け取ることがで きる。特に、各処理モジュールに保持されている値のリストが、値の昇順又は値の降 順に整列されているならば、重複値を消去する処理をより効率的に実行することがで きる。
[0085] この第 1の順序番号付与処理は、全ての処理モジュールを同一の構造により実現 できる点で非常に優れている。但し、この第 1の順序番号付与処理では、 1つの値が 何回も消去され、及び Z又は、多数回の転送が行われることがある。具体的には、同 じ値が多数の処理モジュール内で発生している場合、その値は、その値を保持して いる処理モジュールを通過する都度消去される。また、処理モジュールの個数を N個 とすると、ある処理モジュールに、最も遠い処理モジュールからのデータが到着する までに、 N— 1回の転送が行われる。
[0086] この転送回数は、後述のトーナメント方式と呼ぶ付カ卩的なメカニズムを導入すること によってさらに削減することが可能である。
[0087] 図 11は、本発明の実施の形態に力かる順序番号を付与するトーナメント装置 1100 の第 1の例の説明図である。同図では、図 9A〜D及び図 10A〜Dに関して説明した 例と同様に、初期状態として、 PMM— 0が値のリスト [1, 3, 5, 6]を保持し、 PMM 1が値のリスト [0, 2, 3, 7]を保持し、 PMM— 2が値のリスト [2, 4, 6, 7]を保持し 、 PMM— 3が値のリスト [0, 1, 3, 5]を保持している。 [0088] 最初のステップで、 PMM— 0は自処理モジュール内の値のリスト [0, 1, 3, 5]を統 合装置 1へ送出し、 PMM— 1は自処理モジュール内の値のリスト [0, 2, 3, 7]を統 合装置 1へ送出し、 PMM— 2は自処理モジュール内の値のリスト [2, 4, 6, 7]を統 合装置 2へ送出し、 PMM— 3は自処理モジュール内の値のリスト [0, 1, 3, 5]を統 合装置 2へ送出する。
[0089] 次のステップで、統合装置 1は、 PMM— 0と PMM—1から受け取った値のリストか ら重複値を消去して値のリスト [0, 1, 2, 3, 5, 6, 7]を生成し、統合装置 3へ送出す る。同様に、統合装置 2は、 PMM— 2と PMM— 3から受け取った値のリストから重複 値を消去して値のリスト [0, 1, 2, 3, 4, 5, 6, 7]を生成し、統合装置 3へ送出する。
[0090] 最後のステップで、統合装置 3は、統合装置 1と統合装置 2から受け取った値のリス トから重複値を消去して値のリスト [0, 1, 2, 3, 4, 5, 6, 7]を生成し、 PMM—1〜P MM— 4の各処理モジュールへこの値リストをブロードキャストする。
[0091] この例では、値のリストの重複値の消去は、処理モジュールではなぐ統合装置に おいて行われる。値のリストが昇順又は降順に整列されているならば、統合装置は、 昇順又降順のリスト同士を統合すればよいので、フロー制御が可能であれば、統合 装置を少ないバッファメモリで実現することが可能である。
[0092] この例では、統合装置と処理モジュールが完全に分離されている力 一部の統合 処理を処理モジュールが担当してもよい。図 12は、このような本発明の実施の形態 にかかる順序番号を付与するトーナメント装置 1200の第 2の例の説明図である。同 図では、図 11と同様に、初期状態として、 PMM— 0が値のリスト [1, 3, 5, 6]を保持 し、 PMM—1が値のリスト [0, 2, 3, 7]を保持し、 PMM— 2が値のリスト [2, 4, 6, 7 ]を保持し、 PMM— 3が値のリスト [0, 1, 3, 5]を保持している。
[0093] 最初のステップで、 PMM— 0は自処理モジュール内の値のリスト [0, 1, 3, 5]を P MM— 1へ送出し、 PMM— 2は自処理モジュール内の値のリスト [2, 4, 6, 7]を PM M— 3へ送出する。
[0094] 次のステップで、 PMM—1は、 PMM— 0から受け取った値のリストと自処理モジュ ール内の値のリスト [0, 2, 3. 7]を統合し、重複値を消去して値のリスト [0, 1, 2, 3, 5, 6, 7]を生成し、統合装置 3へ送出する。同様に、 PMM— 3は、 PMM— 2から受 け取った値のリストと自処理モジュール内の値のリスト [0, 1, 3, 5]を統合し、重複値 を消去して値のリスト [0, 1, 2, 3, 4, 5, 6, 7]を生成し、統合装置 3へ送出する。
[0095] 最後のステップで、統合装置 3は、統合装置 1と統合装置 2から受け取った値のリス トから重複値を消去して値のリスト [0, 1, 2, 3, 4, 5, 6, 7]を生成し、 PMM— 1〜P MM— 4の各処理モジュールへこの値リストをブロードキャストする。
[0096] 図 12の例では、処理モジュール PMM— 2 (及び Z又は、 PMM— 0)は統合処理 のため利用されていない。そこで、 PMM—1からの出力と PMM— 3空の出力を統 合する統合装置 3の役割を PMM— 2又は PMM— 0が代替してもよい。図 13は、こ のような本発明の実施の形態に力かる順序番号を付与するトーナメント装置 1300の 第 3の例の説明図である。この例によれば、統合装置の数は、処理モジュール数 1 になるので、一般に、非常に多数の処理モジュールが存在する場合でも、図 11又は 12に示された例のように、処理モジュールとは別個に独立した統合装置を設けること なぐトーナメント方式の順序番号付与処理を実現することができる。
[0097] 図 11から図 13を参照して説明した例では、メモリ空間は単一のメモリ空間でもよぐ また、複数の CPUが存在していてもよい。処理モジュールや統合装置の間の通信路 は論理的な通信路であり、通信が物理的にはメモリ参照によって実現される場合でも 、トーナメント方式の順序番号付与処理を実現することができる。
[0098] [コンパイル処理の詳細]
図 14は、表形式データを表現する単一コンピュータ(又は、処理モジュール)上の 情報ブロックの説明図である。同図において、 Ordsetは、既に説明したように、表形 式データのレコードの順番を表す順序配列であり、 VNoは、レコードの順番に項目値 番号を指定する情報 (或いは、項目値番号自体)が格納されたポインタ配列であり、 VLは、項目値番号の順に項目値が格納された値リストである。コンパイル処理は、こ のような表形式データを、複数の処理モジュールで分掌管理するためのデータ構造 を構築する処理である。
[0099] 図 15は、図 14の表形式データを 4個の処理モジュール PMM— 0、 PMM— 1、 P MM— 2及び PMM— 3で分掌管理するデータ構造の説明図である。同図にお!/、て 、 Gordは、各処理モジュールで管理されているレコードが全体で何番目のレコードで あるかを表すグローバル順序番号であり、 GVNoは、各処理モジュールで管理されて いる値リスト中の値力 全体で何番目の位置にあるかを表すグローバル項目値番号 である。
[0100] コンパイル処理は、図 14に示されたデータ構造を図 15に示されたデータ構造に変 換する処理である。図 16は、本発明の実施の形態にカゝかるコンパイル処理のフロー チャートである。本例のコンパイル処理は、ステップ 1601において、各処理モジユー ルの表形式データのレコードの順番を表す番号に、各処理モジュールに割り当てら れたオフセット値を加算することにより、グロ一ノ レな順序番号、即ち、グローバル順 序付き配列の要素の値を計算する。オフセット値は、各処理モジュールに割り当てる レコードの数に基づいて決まる。図 15の例では、オフセット値は、 ΡΜΜ— (½ ΡΜ Μ— 3の順に、 0、 3、 5及び 8である。
[0101] 次に、ステップ 1602から 1607では、各処理モジュールは、図 8を参照して説明し た順序番号付与処理を利用して、各処理モジュール内の項目値にグローバル項目 値番号を与える。グローバル項目値番号は、記各処理モジュールが自処理モジユー ルの値リストと他の処理モジュールの値リストとを比較することにより、自処理モジユー ルの値リストの項目値に対して、複数の処理モジュール間で一意に決まるグローバル な項目値番号である。
[0102] 各処理モジュールは、ステップ 1602で、論理的に環状に接続された他の処理モジ ユールへ自処理モジュールの値リストを送信し、次に、ステップ 1603で、他の処理モ ジュールから前記他の処理モジュールの値リストを受信する。ステップ 1604で、各処 理モジュールは、受信した値リストの重複値を消去する。各処理モジュールは、ステツ プ 1605で、他の処理モジュールから受信した値リスト中の項目値のうち、自処理モジ ユールの値リスト中の項目値よりも前に順序付けされる値の個数をカウントし、自処理 モジュールの値リスト中の項目値の項目値番号をその個数分だけ引き上げる。各処 理モジュールは、ステップ 1606で、他の処理モジュール力 受信し、重複値が削除 された値リストを論理的に次に接続された他の処理モジュールへ送信する。各処理 モジュールは、ステップ 1607で、他の処理モジュールから送られた値リストに対して 、ステップ 1602からステップ 1606までの処理を繰り返し、グローバル項目値番号の 付与を終了する。
[0103] [データ更新処理]
図 15に示されるようなデータ構造で管理されている表形式データに対して、様々な 処理が行われる。検索、ソート、集計などの処理の他、データの削除、データの挿入 、データの上書きなどの基本的な操作が表形式データに対して行われる。そこで、次 に、各処理モジュールでデータが分掌管理されているような本発明のデータ構造に 対するデータ更新処理を説明する。
[0104] [レコード削除処理]
例えば、図 15に示された表形式データのうち、 PMM— 0に保持されている GOrd= 2のレコードと、 PMM- 1に保持されて!、る GOrd= 3のレコードの 2個のレコード(2 行)を削除する場合に関して、本発明の実施の形態にかかるレコード削除処理を説 明する。
[0105] レコード削除処理は、削除対象となるレコードを特定するステップと、前記削除対象 となるレコードに対応したグローバルな順序番号よりも後に順序付けされたグローバ ルな順序番号を削除される個数分だけ引き下げ、前記削除対象となるレコードに対 応した項目値番号を指定する情報をポインタ配列力 削除するステップと、を含む。
[0106] 図 17には、削除されるべき 2個のレコードに対応した文字が太字のイタリック体で示 されている。レコードが削除されると、レコードに付与されているグローバル順序番号 GOrdと、レコードの順番に項目値番号が格納されたポインタ配列 VNoと、各処理モジ ユール内でレコードに一意に付与されているローカルな順序番号 OrdSetを更新しな ければならない。但し、この段階では、値リスト VLは更新しない。値リストを更新するた めには、値リストに格納された項目値を参照するレコードが存在しないこと、即ち、そ の項目値を指定する VNoが存在しな 、ことを確かめる必要があるからである。値リスト VLを更新しな!、ので、グローバル項目値番号 GNoも更新する必要がな!、。
[0107] GOrdの更新は、削除対象となるレコードに対応したグローバルな順序番号よりも後 に順序付けされたグローバル順序番号を削除される個数分だけ引き下げることによ つて行われる。本例では、最初に、 PMM— C GOrd= 2 PMM— 1の GOrd= 3と 、を削除し、次に、グロ一ノ レ順序番号が削除された PMM内では、削除されたグロ 一バル順序番号よりも後方に格納されているグローバル順序番号を前方へ移動する
。 PMM— 0では、 GOrd= 2は末尾のグローバル順序番号であるため、グローバル順 序番号の移動は行われないが、 PMM— 1では、削除される GOrd= 3の後方に GOrd =4が存在するので、この GOrd=4を 1個分だけ前方へ移動させる。さらに、残ったグ ローバル順序番号は、当該グローバル順序番号よりも前方に削除されたグローバル 順序番号が存在する場合、その削除された個数分だけグローバル順序番号の値を 小さくする(降順の場合)。図 18は、本発明の実施の形態に力かるレコード削除処理 の説明図であり、同図には、グローバル順序番号 GOrdが更新される様子が示されて いる。
[0108] OrdSetの更新は、削除された GOrdと同じ場所にある OrdSetを削除し、さらに、
OrdSetが削除された PMM内では、削除された OrdSetよりも後方に格納されいてる OrdSetは、削除された個数分だけ前方へ移動されると共に、削除された個数分だけ 値が減少させられる。図 18には、 OrdSetが更新される様子も示されている。
[0109] 最後に、ポインタ配列 VNoは、「性別」、「年齢」、「身長」及び「体重」の全ての項目 に関して、削除されるレコードに対応した OrdSetにより指定された VNoを削除し、 VNo が削除された PMM内では、削除された VNoよりも後方に格納されいてる VNoは、肖 IJ 除された個数分だけ前方へ移動される。図 18には、 VNoが更新される様子も示され ている。
[0110] 以上の処理によって、図 19に示されるようなレコード削除後の表形式データが得ら れる。
[0111] [レコード挿入処理]
例えば、図 19に示された表形式データのうち、 PMM— 1に 2個のレコードを挿入 する場合に関して、本発明の実施の形態にカゝかるレコード挿入処理を説明する。本 実施の形態によれば、レコードの挿入処理は、挿入するレコードの格納領域を確保 する処理であり、挿入するレコードの項目値を所定の値とすることにより処理の高速 ィ匕を図っている。例えば、挿入されるレコードの各項目の仮の項目値には、そのレコ 一ドが揷入される PMM内に保持されている最小の項目値を使用する。
[0112] レコード挿入処理は、挿入対象となるレコードの挿入位置を特定するステップと、前 記挿入対象となるレコードに対応したグローバルな順序番号よりも後に順序付けされ たグローバルな順序番号を削除される個数分だけ引き上げ、前記挿入対象となるレ コードに対応した項目値番号を指定する情報を格納する領域を、ポインタ配列の挿 入位置に確保するステップと、により構成される。
[0113] 図 19の表形式データの PMM— 1に、現在存在するレコードは、 GOrd= 2のレコー ド 1つだけであるが、この表形式データは、図 17の表形式データからレコードを削除 することにより生成された表形式データであるため、 PMM— 1には、削除されたレコ ードの項目値、即ち、「性別」 =女性、「年齢」 = 16、「身長」 = 172及び「体重」 =48 も存在している。このとき、 PMM—1に保持されている最小の項目値は、 「性別」 =男性、「年齢」 = 16、「身長」 = 172、「体重」 =48
である。したがって、 PMM—1に挿入されるレコードの仮の項目値は、
「性別」 =男性、「年齢」 = 16、「身長」 = 172、「体重」 =48
である。図 20は、本発明の実施の形態に力かるレコード挿入処理の説明図である。 同図では、挿入されるべきデータが太字、イタリック体で示されている。レコード挿入 処理の手順の一例は次の通りである。
[0114] (手順 1)レコードを挿入する位置に、 GOrd、 OrdSet, VNoを作成する。
[0115] (手順 2)作成された GOrdには、その作成された位置に対応した値をセットする。本 例では、 PMM— 1内の 1番目と 2番目の位置にレコードが挿入されるので、その位置 に対応した GOrdの値、 2と 3がセットされる。また、 PMM— 1内で挿入されたレコード よりも後方に順序付けられているレコードの GOrdは、挿入されたレコードの個数分だ けインクリメントされる。
[0116] (手順 3)作成された OrdSetには、 PMM内でその Ordsetが作成された位置に対応 した値をセットする。本例では、 PMM— 1内の 1番目と 2番目の位置にレコードが揷 入されるので、その位置に対応した OrdSetの値、 0と 1がセットされる。また、 PMM— 1内で挿入されたレコードよりも後方に順序付けられているレコードの OrdSetは、挿入 されたレコードの個数分だけインクリメントされる。
[0117] (手順 4)作成された VNoには、 0をセットする。作成されたレコードの項目値は最小 の項目値であるため、 VNoは 0に固定される。 [0118] 以上の処理によって、図 21に示されるようなレコード挿入後の表形式データが得ら れる。また、挿入されたレコードの値は、後述のデータ上書き処理によって所望の値 にセットすることができる。
[0119] 尚、上記の例では、 VNoに一番小さい値 0をセットしている力 例えば、ブランクのま までもよ 、。
[0120] また、上記の例では、 PMM—1に 1行以上のレコードが存在しているので、挿入さ れるレコードの項目値として、既存のデータのうちの最小の項目値を使用して 、るが 、レコードを挿入する PMMにデータが存在しない場合には、例えば、グローバル項 目値番号 GVNo = 0となる最小の項目値を使用してデータを作成することができる。こ の場合も VNoは 0であり、 VLの値は全ての PMMに保持されている項目値のうちの最 小値である。
[0121] [データ上書き処理]
上記のレコード挿入処理で挿入されたデータは、所定の値にセットされて ヽるので
、セットされた所定の値を実際に所望のデータで書き換えることが必要になる。そこで 、次に、このようなデータの書き換えを行う本発明の実施の形態に力かるデータ上書 き処理を説明する。図 22は、図 15に示された表形式データの一部、具体的には、 P MM— 0の 2番目のレコード及び 3番目のレコードの身長と、 PMM— 1の 1番目のレ コードの身長を上書きする例の説明図である。図 23は、本発明の実施の形態にかか るデータ上書き処理のフローチャートである。
[0122] データ上書き処理は、ステップ 2301で、上書きするデータ配列をコンパイルする。
具体的には、上書き対象となるレコードを特定し、上書きデータを設定し、上書きデ ータを表現する項目値番号と項目値の組を生成する。図 24は、上書きするデータを 各 PMMでコンパイルする処理の説明図である。同図には、 PMM— 0における処理 が示されている。
[0123] 次に、ステップ 2302で、値リスト VLがマージされる。生成された項目値番号と項目 値の組をマージすることにより、上書き対象となるレコードを含むローカルな情報プロ ックの値リストを生成する。図 25A〜図 25Dは、上書きデータと元データをマージす る処理の説明図である。マージ処理では、最初に、上書きデータの VLの位置を示す PIと、元データの VLの位置を示す P2と、マージにより生成される新しい値リスト VLの 位置を示すポインタ P3を 0に初期化する。
[0124] 図 25Aのマージ処理の手順 1では、 P1と P2を比較し、 P2が小さいので、 P2が指定 する Conv.の位置 0に P3の値 0を格納する。次に、 P2が指定する VLの値 159を、新
VLに格納する。続いて、 P2、 P3をインクリメントする。ここで、配列 Conv.は、対応する 値が新 VLに格納される位置を表している。例えば、元データの VLの先頭の値 159に 対応する Conv.の値は 0であるので、項目値 159は新 VLの先頭の値である。
[0125] 図 25Bのマージ処理の手順 2では、 P1と P2を比較し、 P1が小さいので、 P1が指定す る Conv.の位置 0に P3の値 1を格納する。次に、 P1が指定する VLの値 160を、新 VLに 格納する。続いて、 Pl、 P3をインクリメントする。
[0126] 図 25Cのマージ処理の手順 3では、 P1と P2を比較し、 P2が小さいので、 P2が指定 する Conv.の位置 1に P3の値 2を格納する。次に、 P2が指定する VLの値 168を、新
VLに格納する。続いて、 P2、 P3をインクリメントする。
[0127] 以下同様に VLのマージ処理の手順を続けると、図 25Dに示されるようなマージ結 果が得られる。
[0128] 以上の VLのマージ処理の説明では、新しい VLを同時に生成している力 上書きデ ータの VL及び対応した Conv.と元データの VL及び対応した Conv.から、新 VLを生成 することができる。
[0129] 次に、ステップ 2303では、上書き対象となるレコードを含むローカルな情報ブロック のポインタ配列 VNoを更新する。図 26A〜Cは、ポインタ配列を更新する処理の説明 図である。
[0130] 最初に、図 26Aに示されるように、上書きデータの VNoと元データの VNoをそれぞ れ対応した Conv.を利用して、新 VLに対応した VNoへ変換する。例えば、上書きデ ータの配列 VNoのレコード 0に対応する位置には 1が格納されているので、レコード 0 の現在の VLの項目値番号は 1である。この現在 VLの項目値番号 1は、配列 Conv.を 参照すると、新 VLの項目値番号 4に対応していることがわかる。そこで、 VNoのレコー ド 0に対応する要素の値を 1から 4へ変換する。以下同様にして、上書きデータの全 てのレコードと、元データの全てのレコードについて、 VNoの値を変換する。 [0131] 次に、図 26Bに示されるように、 VLを新 VLに置き換え、上書きデータの VNoを元デ ータの VNoの上書きすべき位置へ転送する。これにより、図 26Cに示されるような新し い VNoと VLが完成する。
[0132] PMM— 2についても同様にマージ処理を行うと、図 22の表形式データは、図 27に 示されるような表形式データに変換されている。本例の上書き処理では、「身長」のデ ータが書き換えられるので、「身長」につ 、てのグローバル項目値番号 GVNoは再構 築しなければならない。
[0133] そこで、最後に、ステップ 2304で、グローバル項目値番号 GVNoを再構築する。具 体的には、各処理モジュールが論理的に環状に接続された他の処理モジュールへ 自処理モジュールの値リストを送信し、他の処理モジュールから他の処理モジュール の値リストを受信し、自処理モジュールの値リストと他の処理モジュールの値リストとを 比較し、自処理モジュールの値リストの項目値に、複数の処理モジュール間で新しい グローバルな項目値番号を付与する。これは、上述の順序番号付与処理に対応して いる。これにより、グローバルな情報ブロックのデータを上書きすることができる。図 28 は、本例のデータ上書き処理によって完成した表形式データの説明図である。
[0134] [スウィープ処理]
上述のレコード削除処理やデータ上書き処理では、削除されたレコードに対応した 項目値や、上書き前の元データに対応した項目値がそのまま残されているので、 VL 及び GVNoの中に実際には使用されて ヽな 、データが含まれることがある。このような 使用されないデータは消去できることが望ましい。そこで、本発明によれば、不要な データを除去するスウィープ処理が提供される。図 29A、 Bは、本発明の実施の形態 にかかるスウィープ処理の説明図である。図 29A、 Bに示されるように、このスウィープ 処理によれば、 VLと GNoがコンデンスされ、 VNoが更新される。
[0135] このスウィープ処理では、ローカルな情報ブロックの値リスト VLに格納されている項 目値のうち現在のポインタ配列 VNoの要素によって指定されている現在の項目値番 号に対応した項目値が現在の項目値番号の順序に格納されるように値リストを更新し 、次に、更新された値リストに格納されている項目値を指定するように、現在のポイン タ配列に格納される現在の項目値番号を更新する。値リストを更新することにより、使 用されないグロ一ノ レ項目値番号 GVNoも消去される。これにより、グローバルな情 報ブロックの不要なデータを除去する。
[0136] 図 30は本発明の実施の形態に力かるスウィープ処理のフローチャートである。図 3 1A〜Hは、それぞれ、図 29A、 Bに示された例に基づぐこのスウィープ処理の進行 状態の説明図である。
[0137] ステップ 3001:最初にフラグ配列 Flagを生成する。 Flagは VL (及び GVNo)と同じサ ィズの整数配列であり、要素を 0で初期化する。
[0138] ステップ 3002 : VNoが指すアドレスの Flag配列の要素(図 31Bにイタリック体で示さ れている)を 0から 1に変更する。フラグの値は 0又は 1である。
[0139] ステップ 3003: Flagが 1の位置に対応する VLの値(図 31 Cにイタリック体で示されて いる)を、新 VLへ先頭カゝら順番に入れる。
[0140] ステップ 3004 : Flagが 1の位置に対応する GVNoの値(図 31Dにイタリック体で示さ れている)を、新 GVNoの先頭力 順に入れる。
[0141] ステップ 3005 : Flagを累計数ィ匕し、 1段後方へ移動する。累計数ィ匕した Flagは Flag' のように表す。 Flagを累計数ィ匕した Flag'は、図 31Eに示されている。
[0142] ステップ 3006 :最後に、 Flag'を参照して、 VNoを変換する。図 31F〜Hには、 VNo の変換処理が示されている。例えば、現在の VNoの先頭の要素 VNo [0] = 2に対して
、配列 Flag'の 3番目の要素 Flag' [2] (太字、イタリック体で示されている)を参照すると
、値は 1であるので、 VNo[0]に 1をセットする(図 31Fに 2→1として示されている)。
[0143] 以上の処理により、図 29Aのスウィープ前のデータは図 29Bのスウィープ後のデー タに変換される。
[0144] 尚、このスウィープ処理では、使用される GVNoの値は、昇順 (又は降順)を保つが、 離散的な値になる可能性がある。 GVNoは、昇順 (又は降順)を維持する限り、離散的 であっても、本発明によるグローバルな情報ブロックを操作して、検索、ソート、集計 などの処理を行うことができる。勿論、必要に応じて、 GVNoが連続値になるように GVNoを再構築することができる。 GVNoの再構築は、上述の順序番号付与処理を用 いて実現することができる。
[0145] このスウィープ処理は自動的に行ってもよぐ或いは、ユーザからの要求に応じて行 つてもよい。
[0146] [データ再配置]
データ再配置とは、表形式データが複数の処理モジュールで分掌管理されて 、る ときに、どのレコードをどの処理モジュールが保持するかというデータの割付を変更 することである。このデータ再配置は、表形式データの検索、ソート、集計などの処理 結果をディスク装置などに出力するとき、表形式データの全部又は一部を独立させて 別の表形式データとして管理するときなどに要求される。例えば、表形式データをシ 一ケンシャルなデバイスへ出力する際には、この表形式データは情報処理システム 上でもシーケンシャルに配置されて 、る方が望まし!/、。
[0147] 本発明の実施の形態に力かるデータ再配置処理は、グローバル順序番号 GOrdに は全ての処理モジュールの間で連続した昇順の番号を割り振り、 OrdSetには各処理 モジュール内で 0から始まる昇順の番号を割り振る。
[0148] 図 32は本発明の実施の形態に力かるデータ再配置処理のフローチャートである。
このデータ再配置処理が実行される情報処理システムは、論理的に環状に接続され た複数の処理モジュールを含み、各処理モジュールは表形式データを表現するロー カルな情報ブロックを格納するメモリを具備している。ローカルな情報ブロックは、表 形式データのレコードの順番に項目値番号を指定する情報が格納されたポインタ配 列と、表形式データの項目値に対応した項目値番号の順序に該項目値が格納され ている値リストと、を含む。各処理モジュールの表形式データのレコードには、複数の 処理モジュール間で一意に決まるグローバルな順序番号 GOrdが割り当てられ、各処 理モジュールの値リストの項目値に、複数の処理モジュール間で一意に決まるグロ一 バルな項目値番号 GVNoが付与されている。この情報処理システムは、次のような手 順で再配置処理を実行する。
[0149] ステップ 3201:各処理モジュールに再配置されるべきそれぞれの新しいレコードの 個数を決定する。
[0150] ステップ 3202:新し!/、レコードの個数に基づ 、て、新し 、グローバルな順序番号を 再配置されるべき新し 、レコードに割り当てる。
[0151] ステップ 3203 :各処理モジュール力 論理的に環状に接続された他の処理モジュ ールへ、 自処理モジュールの現在のレコードに割り当てられた現在のグローバルな 順序番号と、現在のグローバルな順序番号に対応した現在の値リスト中の項目値と、 を送信する。
[0152] ステップ 3204:各処理モジュールが他の処理モジュールから他の処理モジュール の現在のグローバルな順序番号と、対応した現在の値リスト中の項目値と、を受信す る。
[0153] ステップ 3205:各処理モジュール力 他の処理モジュールから受信した現在のグロ 一バルな順序番号の中で自処理モジュールに再配置されるべき新し 、レコードに割 り当てられた新 、グローバルな順序番号と一致する現在のグローバルな順序番号 に対応した項目値を一時的な値リストとしてメモリに記憶する。
[0154] ステップ 3206:各処理モジュール力 新し!/、レコードの順番に新し!/、項目値番号を 指定する情報が格納された新しいポインタ配列と、一時的な値リスト中の項目値を新 L 、項目値番号の順序に格納した新 、値リストと、を生成する。
[0155] ステップ 3207 :各処理モジュールが論理的に環状に接続された他の処理モジユー ルへ自処理モジュールの新し 、値リストを送信する。
[0156] 各処理モジュールが他の処理モジュールから他の処理モジュールの新し 、値リスト を受信する。
[0157] 各処理モジュールが自処理モジュールの新し!/、値リストと他の処理モジュールの新 しい値リストとを比較し、自処理モジュールの新しい値リストの項目値に、複数の処理 モジュール間で一意に定まる新し 、グロ一ノ レな項目値番号を付与する。
[0158] この手順により、グローバルな情報ブロックのデータを再配置することができる。
[0159] 例えば、図 14及び 15に示されるような表形式データを、「年齢」が 25歳以下という 条件で検索し、「年齢」の昇順にソートした検索'ソート結果を再配置する場合を考え る。図 33A〜Cは検索'ソート後の表形式データの説明図であり、図 33Aは検索'ソ ート前のデータ一覧、図 33Bは検索'ソート後のデータ一覧、図 33Cは分掌管理され て 、る検索 ·ソート処理後の表形式データを表して 、る。
[0160] この例では、全体で 8行(8個のレコード)が存在し、処理モジュール PMMの個数 は 4個であるので、各モジュールに 2行ずつ配置する。以下の説明では、「身長」の項 目に関する再構築を説明するが、他の項目についても同様に再構築できる。
[0161] データ再配置処理は、(手順 1)新しい GOrdと OrdSetを生成する手順と、(手順 2) GOrdと VLを転送し、各処理モジュールに収容する手順と、(手順 3) VLをコンノ ィル する手順に大別される。
[0162] 手順 1:データは全体で 8行あり、モジュール数は 4個であるので、各モジュールに 2 行ずつ格納することとし、生成先に新しい GOrdと OrdSetを生成し、これらと同じサイ ズの値格納配列を生成する。このとき、各モジュールに配置される行数が分力つてい るので、 GOrdは自明であり、 OrdSetも各モジュール内で自明である。具体的には、デ ータ再配置の計算式を全ての処理モジュールに通知することによって、各処理モジ ユールは GOrdを知ることができる。
[0163] 図 34A、 Bは、データ再配置処理における GOrdと OrdSetの生成処理の説明図であ る。
[0164] 手順 2:各 PMMから GOrdと値を他の PMMへ送出する。ここで、 GOrdは昇順であ り、かつ、ユニークである。各 PMMは、他の PMMから送出された GOrdと値を受信し 、自 PMM内の GOrdとマッチングする GOrdに対応した値を値格納配列に収容する。 図 35A〜Cは、データ再配置処理におけるデータ転送と値格納処理の説明図である
[0165] データ転送は、様々な方法で実現できる。例えば、処理モジュール間で相互に、即 ち、送信側と受信側のペアを決めてデータを送信してもよぐ或いは、環状に接続さ れたモジュール間で環状にデータを転送してもよい。
[0166] 手順 3:各処理モジュールの生成先に作成された値格納配列をコンパイルすること により、「身長」に関して、各処理モジュールにポインタ配列 VNoと値リスト VLを生成す ると共にグローバル項目値番号 GVNoを付与する。例えば、 PMM— 0は、値格納配 列に格納されている値 172と 168を昇順に並べ換え、値リスト VLを生成する。これに 応じて、ポインタ配列 VNoに 1、 0の順に値をセットすることができる。全ての処理モジ ユールが同様に値リスト VLとポインタ配列 VNoを生成すると、次に、上述の順序番号 付与処理を用いてグローバル項目値番号 GVNoを付与することができる。図 36は、こ のようなデータ再配置処理における VLコンパイル処理の説明図である。 [0167] 他の項目も同様に再配置処理することによって図 37に示すような表形式データを 得ることができる。
[0168] [SIMD型並列処理]
並列化のアルゴリズムが稚拙である場合、 SIMDを採用して所望の結果を得るため のプログラムの開発が困難であり、開発できたとしても、そのプログラムの自由度は低 い。そこで、 SIMDを採用するためには、 SIMDに適した優れたアルゴリズムを開発 する必要がある。この点、本実施の形態によるアルゴリズムは、
(1)処理の実行にあたって条件分岐がない。但し、検索処理の場合には、条件分岐 が行われる可能性があるが、単純な条件分岐である。
(2)昇順のリストを相互に比較するなど、 1つの命令で実行できる処理 (ステップ数、ク ロック数)の占める割合が高 、。
(3)すべての処理モジュールが平等に同じ役割を持つ。処理モジュール毎に違う役 割があると、単一命令で処理を実現できない。
という点でデータ構造及びアルゴリズムが優れている。したがって、本実施の形態で は、 SIMDを採用する際にプログラムが簡単ィ匕され、プログラムの開発の容易性ゃプ ログラムの高い自由度を確保することができる。
[0169] [システム構成]
本発明にかかる情報処理システムは、例えば、フロントエンドとなる端末装置と、リン グ状のチャネルを介して接続され、端末装置からの命令を、それぞれの PMMが受 理することにより、 PMMにおいて、上述したコンパイル、データ更新、データ再配置 の処理が実行できる。また。各 PMMはパケットを何れかのバスを利用して送出すれ ばよぐ PMM間の同期等を外部から制御する必要もない。
[0170] また、制御装置には、コンパイルなどの繰り返し演算のためのハードウェア構成を備 えたァクセラレータチップのほ力、これに加えて、汎用 CPUを含めても良い。汎用 CP Uは、端末装置カゝらチャネルを介して伝達された命令を解釈し、ァクセラレータチップ に必要な指示を与えることができる。
[0171] さらに、制御装置、特に、その中のァクセラレータチップには、順序番号配列、グロ 一バル順序番号配列など作業に必要な種々の配列を収容するためのレジスタ群が 設けられているのが望ましい。これにより、いったん、メモリからレジスタ上に処理に必 要な値をロードしてしまえば、コンパイルなどにかかる上述した処理演算中には、制 御装置はメモリにアクセスすることなぐレジスタ力も値を読み出し、或いは、レジスタ に値を書き込めばよい。これにより、メモリアクセスの回数を著しく減じる(演算処理前 のロード、および、処理結果の書き込み)ことができ、処理時間を著しく短縮すること が可能となる。
[0172] 本発明は、以上の実施の形態に限定されることなぐ特許請求の範囲に記載された 発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含される ものであることは言うまでもない。
[0173] 尚、前記実施の形態においては、 PMMを、一方が時計回りにパケットを伝送する 第 1のバス (第 1の伝送路)、他方が反時計回りにパケットを伝送する第 2のバス (第 2 の伝送路)にて、リング状に接続している。このような構成により、パケット伝送の遅延 時間などを均一化することができるため有利である。し力しながら、これに限定されず 、ノ ス型など他の形態の伝送路を採用しても良い。
[0174] また、本実施の形態においては、メモリ、インタフェースおよび制御回路を有する P MMを利用している力 これに限定されるものではなぐパーソナルコンピュータ、サ ーバなどを、ローカルな表形式データを分掌する情報処理ユニットとして、 PMMの 代わりに利用しても良い。或いは、単一のパーソナルコンピュータやサーバ力 複数 の情報処理ユニットを保持するような構成を採用しても良い。これらの場合でも、情報 処理ユニットが、レコードの順位を示す値を受理し、グローバル順序番号配列 GOrd を参照することにより、レコードを特定することができる。また、グローバル値番号配列 を参照することにより、項目値を特定することも可能である。
[0175] また、情報処理ユニット間の伝送路も、いわゆるネットワーク型やバス型を採用して も良い。
[0176] 単一のパーソナルコンピュータに複数の情報処理ユニットを設けるような構成を採 用することで、以下のように、本発明を利用することができる。たとえば、札幌支社、東 京支社、福岡支社の 3つの表形式データを用意し、通常は、各支社の単位で、検索 、集計、ソートなどを実行する。さらに、 3つの支社を統合したグローバルな表形式デ ータを考えて、各支社の表形式データが、全体表のうちの部分表であるとみなし、グ ローバルな表形式データに関する検索、ソートおよび集計を実現することができる。
[0177] 無論、複数のパーソナルコンピュータをネットワークにて接続した場合にも、同様に 、パーソナルコンピュータにて分掌されるローカルな表形式データに関する処理、お よび、グローバルな表形式データに関する処理を実現することもできる。
図面の簡単な説明
[0178] [図 1]図 1は、従来のデータ管理機構の説明図である。
[図 2]図 2は、従来のデータ管理機構の説明図である。
[図 3]図 3は、本発明の実施の形態に力かる情報処理システムの概略を示すブロック ダイヤグラムである。
[図 4]図 4は、本発明の実施の形態に力かる PMMの構造の一例を示す図である。
[図 5]図 5は、表形式データの一例の説明図である。
[図 6]図 6は、従来の表形式データの記憶構造の説明図である。
[図 7]図 7は、本発明の実施の形態に力かる表形式データの記憶構造の一例の説明 図である。
[図 8]図 8は、本発明の実施の形態に力かる順序番号付与方法のフローチャートであ る。
[図 9]図 9A〜Dは、それぞれ、本発明の実施の形態にかかる第 1の順序番号付与方 法の説明図(その 1)である。
[図 10]図 10A〜Dは、それぞれ、本発明の実施例の形態に力かる第 1の順序番号付 与方法の説明図(その 2)である。
[図 11]図 11は、本発明の実施の形態に力かる順序番号を付与するトーナメント装置 の第 1の例の説明図である。
[図 12]図 12は、本発明の実施の形態に力かる順序番号を付与するトーナメント装置 の第 2の例の説明図である。
[図 13]図 13は、本発明の実施の形態に力かる順序番号を付与するトーナメント装置 の第 3の例の説明図である。
[図 14]図 14は、単一の処理モジュールで管理される表形式データの説明図である。 [図 15]図 15は、複数の処理モジュールで分掌管理される表形式データの説明図で ある。
[図 16]図 16は、本発明の実施の形態に力かるコンパイル処理のフローチャートであ る。
[図 17]図 17は、レコード削除処理の対象となる表形式データの説明図である。
[図 18]図 18は、レコード削除処理の一例の説明図である。
[図 19]図 19は、レコード削除処理後の表形式データの説明図である。
[図 20]図 20は、レコード挿入処理の一例の説明図である。
[図 21]図 21は、レコード挿入処理後の表形式データの説明図である。
[図 22]図 22は、データ上書き処理の一例の説明図である。
[図 23]図 23は、本発明の実施の形態に力かるデータ上書き処理のフローチャートで ある。
[図 24]図 24は、上書きデータを処理モジュール内でコンパイルする処理の説明図で ある。
[図 25]図 25A〜Dは、それぞれ、上書きデータと元データをマージする処理の説明 図である。
[図 26]図 26A〜Cは、それぞれ、ポインタ配列を更新する処理の説明図である。 圆 27]図 27は、データ上書き処理中の表形式データの説明図である。
圆 28]図 28は、データ上書き処理後の表形式データの説明図である。
[図 29]図 29A、 Bは、本発明の実施の形態に力かるスウィープ処理の説明図である。
[図 30]図 30は、本発明の実施の形態に力かるスウィープ処理のフローチャートである
[図 31]図 31A〜Hは、スウィープ処理の進行状態の一例の説明図である。
[図 32]図 31は、本発明の実施の形態に力かるデータ再配置処理のフローチャートで ある。
圆 33]図 33A〜Cは、それぞれ、分掌管理されている検索'ソート処理後の表形式デ ータの説明図である。
[図 34]図 34A、 Bは、データ再配置処理における GOrdと OrdSetの生成処理の説明 図である。
[図 35]図 35A〜Cは、データ再配置処理におけるデータ転送と値格納処理の説明 図である。
[図 36]図 36は、データ再配置処理における VLコンパイル処理の説明図である。
[図 37]図 37は、データ再配置処理後の表形式データの説明図である。
符号の説明
32 PMM
34 第 1のバス
36 第 2のバス
40 制御回路
42 バス I/F
44 メモリ
46 バンク

Claims

請求の範囲
[1] 複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメ モリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指 定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値 番号の順序に該項目値が格納されて 、る値リストと、を含む、
情報処理システムにお 、て、
前記各処理モジュールの表形式データのレコードに、前記複数の処理モジュール 間で一意に決まるグローバルな順序番号を割り当てるステップと、
前記各処理モジュールが前記各処理モジュールの値リストと前記他の処理モジュ 一ルの値リストとを比較し、前記各処理モジュールの値リストの項目値に、前記複数 の処理モジュール間で一意に決まるグロ一ノ レな項目値番号を付与するステップと
を有し、
グローバルな情報ブロックを構築する情報処理方法。
[2] 前記グローバルな順序番号を割り当てるステップは、前記各処理モジュールの表形 式データのレコードの順番を表す番号に、前記各処理モジュールに割り当てられた オフセット値を加算することにより、前記グローバルな順序番号を計算する、請求項 1 記載の情報処理方法。
[3] 前記グローバルな項目値番号を付与するステップは、
前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各 処理モジュールの値リストを送信し、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュール の値リストを受信し、
前記他の処理モジュール力 受信した値リスト中の項目値のうち、当該各処理モジ ユールの値リスト中の項目値よりも前に順序付けされる値の個数をカウントし、当該各 処理モジュールの値リスト中の項目値の項目値番号を該個数分だけ引き上げること により前記グロ一ノ レな項目値番号を計算する、
請求項 1又は 2記載の情報処理方法。
[4] 複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメ モリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指 定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値 番号の順序に該項目値が格納されて 、る値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジユー ル間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一 意に決まるグローバルな項目値番号が付与されて!、る、
情報処理システムにお 、て、
削除対象となるレコードを特定するステップと、
前記削除対象となるレコードに対応したグローバルな順序番号よりも後に順序付け されたグローバルな順序番号を削除される個数分だけ引き下げ、前記削除対象とな るレコードに対応した項目値番号を指定する情報をポインタ配列力 削除するステツ プと、
を有し、
グローバルな情報ブロックのデータを削除する情報処理方法。
[5] 複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメ モリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指 定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値 番号の順序に該項目値が格納されて 、る値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジユー ル間で一意に決まるグローバルな順序番号が割り当てられ、 前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一 意に決まるグローバルな項目値番号が付与されて!、る、
情報処理システムにお 、て、
挿入対象となるレコードの挿入位置を特定するステップと、
前記挿入対象となるレコードに対応したグローバルな順序番号よりも後に順序付け されたグローバルな順序番号を挿入される個数分だけ引き上げ、前記挿入対象とな るレコードに対応した項目値番号を指定する情報を格納する領域を、ポインタ配列の 挿入位置に確保するステップと、
を有し、
グローバルな情報ブロックのデータを挿入する情報処理方法。
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメ モリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指 定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値 番号の順序に該項目値が格納されて 、る値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジユー ル間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一 意に決まるグローバルな項目値番号が付与されて!、る、
情報処理システムにお 、て、
上書き対象となるレコードを特定し、上書きデータを設定するステップと、 前記上書きデータを表現する項目値番号と項目値の組を生成するステップと、 前記生成された項目値番号と項目値の組をマージすることにより、前記上書き対象 となるレコードを含むローカルな情報ブロックのポインタ配列及び値リストを更新する ステップと、
前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各 処理モジュールの値リストを送信し、該他の処理モジュールから該他の処理モジユー ルの値リストを受信し、該各処理モジュールの値リストと該他の処理モジュールの値リ ストとを比較し、該各処理モジュールの値リストの項目値に、前記複数の処理モジュ ール間で新 U、グローバルな項目値番号を付与するステップと、
を有し、
グローバルな情報ブロックのデータを上書きする情報処理方法。
[7] 複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメ モリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指 定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値 番号の順序に該項目値が格納されて 、る値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジユー ル間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一 意に決まるグローバルな項目値番号が付与されて!、る、
情報処理システムにお 、て、
前記ローカルな情報ブロックの値リストに格納されて 、る項目値のうち現在のポイン タ配列の要素によって指定されて 、る現在の項目値番号に対応した項目値が該現 在の項目値番号の順序に格納されるように前記値リストを更新するステップと、 前記更新された値リストに格納されて 、る項目値を指定するように、前記現在のポ インタ配列に格納される前記現在の項目値番号を指定する情報を更新するステップ と、
を有し、
グローバルな情報ブロックの不要なデータを除去する情報処理方法。
[8] 複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメ モリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指 定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値 番号の順序に該項目値が格納されて 、る値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジユー ル間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一 意に決まるグローバルな項目値番号が付与されて!、る、
情報処理システムにお 、て、
前記各処理モジュールに再配置されるべきそれぞれの新しいレコードの個数を決 定するステップと、
前記新し 、レコードの個数に基づ 、て、新し 、グローバルな順序番号を再配置さ れるべき前記新し 、レコードに割り当てるステップと、
前記各処理モジュール力 論理的に環状に接続された他の処理モジュールへ、前 記各処理モジュールの現在のレコードに割り当てられた現在のグローバルな順序番 号と、該現在のグロ一ノ レな順序番号に対応した現在の値リスト中の項目値と、を送 信するステップと、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュール の前記現在のグローバルな順序番号と、前記対応した現在の値リスト中の項目値と、 を受信するステップと、
前記各処理モジュール力 前記他の処理モジュール力 受信した前記現在のグロ 一バルな順序番号の中で前記各処理モジュールに再配置されるべき前記新 、レ コードに割り当てられた前記新 、グローバルな順序番号と一致する前記現在のグ ローバルな順序番号に対応した前記項目値を一時的な値リストとして前記メモリに記 憶するステップと、
前記各処理モジュール力 前記新 、レコードの順番に新 、項目値番号を指定 する情報が格納された新しいポインタ配列と、前記一時的な値リスト中の項目値を前 記新 、項目値番号の順序に格納した新 、値リストと、を生成するステップと、 前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各 処理モジュールの前記新しい値リストを送信するステップと、 前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュール の前記新 、値リストを受信するステップと、
前記各処理モジュールが前記各処理モジュールの前記新しい値リストと前記他の 処理モジュールの前記新 、値リストとを比較し、前記各処理モジュールの前記新し V、値リストの項目値に、前記複数の処理モジュール間で一意に定まる新し 、グロ一 バルな項目値番号を付与するステップと、
を有し、
グローバルな情報ブロックのデータを再配置する情報処理方法。
[9] 複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメ モリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指 定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値 番号の順序に該項目値が格納されて 、る値リストと、を含む、
情報処理システムにおいて、前記各処理モジュールのコンピュータに、
前記各処理モジュールの表形式データのレコードに、前記複数の処理モジュール 間で一意に決まるグローバルな順序番号を割り当てるステップと、
前記各処理モジュールが前記各処理モジュールの値リストと前記他の処理モジュ 一ルの値リストとを比較し、前記各処理モジュールの値リストの項目値に、前記複数 の処理モジュール間で一意に決まるグロ一ノ レな項目値番号を付与するステップと
を実行させるためのプログラム。
[10] 複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメ モリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指 定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値 番号の順序に該項目値が格納されて 、る値リストと、を含み、 前記各処理モジュールの表形式データのレコードには、前記複数の処理モジユー ル間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一 意に決まるグローバルな項目値番号が付与されて!、る、
情報処理システムにおいて、前記各処理モジュールのコンピュータに、
削除対象となるレコードを特定するステップと、
前記削除対象となるレコードに対応したグローバルな順序番号よりも後に順序付け されたグローバルな順序番号を削除される個数分だけ引き下げ、前記削除対象とな るレコードに対応した項目値番号を指定する情報をポインタ配列力 削除するステツ プと、
を実行させるためのプログラム。
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメ モリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指 定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値 番号の順序に該項目値が格納されて 、る値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジユー ル間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一 意に決まるグローバルな項目値番号が付与されて!、る、
情報処理システムにおいて、前記各処理モジュールのコンピュータに、
挿入対象となるレコードの挿入位置を特定するステップと、
前記挿入対象となるレコードに対応したグローバルな順序番号よりも後に順序付け されたグローバルな順序番号を挿入される個数分だけ引き上げ、前記挿入対象とな るレコードに対応した項目値番号を指定する情報を格納する領域を、ポインタ配列の 挿入位置に確保するステップと、
を実行させるためのプログラム。 [12] 複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメ モリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指 定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値 番号の順序に該項目値が格納されて 、る値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジユー ル間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一 意に決まるグローバルな項目値番号が付与されて!、る、
情報処理システムにおいて、前記各処理モジュールのコンピュータに、
上書き対象となるレコードを特定し、上書きデータを設定するステップと、 前記上書きデータを表現する項目値番号と項目値の組を生成するステップと、 前記生成された項目値番号と項目値の組をマージすることにより、前記上書き対象 となるレコードを含むローカルな情報ブロックのポインタ配列及び値リストを更新する ステップと、
前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各 処理モジュールの値リストを送信し、該他の処理モジュールから該他の処理モジユー ルの値リストを受信し、該各処理モジュールの値リストと該他の処理モジュールの値リ ストとを比較し、該各処理モジュールの値リストの項目値に、前記複数の処理モジュ ール間で新 U、グローバルな項目値番号を付与するステップと、
を実行させるためのプログラム。
[13] 複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメ モリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指 定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値 番号の順序に該項目値が格納されて 、る値リストと、を含み、 前記各処理モジュールの表形式データのレコードには、前記複数の処理モジユー ル間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一 意に決まるグローバルな項目値番号が付与されて!、る、
情報処理システムにおいて、前記各処理モジュールのコンピュータに、
前記ローカルな情報ブロックの値リストに格納されて 、る項目値のうち現在のポイン タ配列の要素によって指定されて 、る現在の項目値番号に対応した項目値が該現 在の項目値番号の順序に格納されるように前記値リストを更新するステップと、 前記更新された値リストに格納されて 、る項目値を指定するように、前記現在のポ インタ配列に格納される前記現在の項目値番号を指定する情報を更新するステップ と、
を実行させるためのプログラム。
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメ モリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指 定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値 番号の順序に該項目値が格納されて 、る値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジユー ル間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一 意に決まるグローバルな項目値番号が付与されて!、る、
情報処理システムにおいて、前記各処理モジュールのコンピュータに、
前記各処理モジュールに再配置されるべきそれぞれの新しいレコードの個数を決 定するステップと、
前記新し 、レコードの個数に基づ 、て、新し 、グローバルな順序番号を再配置さ れるべき前記新し 、レコードに割り当てるステップと、
前記各処理モジュール力 論理的に環状に接続された他の処理モジュールへ、前 記各処理モジュールの現在のレコードに割り当てられた現在のグローバルな順序番 号と、該現在のグロ一ノ レな順序番号に対応した現在の値リスト中の項目値と、を送 信するステップと、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュール の前記現在のグローバルな順序番号と、前記対応した現在の値リスト中の項目値と、 を受信するステップと、
前記各処理モジュール力 前記他の処理モジュール力 受信した前記現在のグロ 一バルな順序番号の中で前記各処理モジュールに再配置されるべき前記新 、レ コードに割り当てられた前記新 、グローバルな順序番号と一致する前記現在のグ ローバルな順序番号に対応した前記項目値を一時的な値リストとして前記メモリに記 憶するステップと、
前記各処理モジュール力 前記新 、レコードの順番に新 、項目値番号を指定 する情報が格納された新しいポインタ配列と、前記一時的な値リスト中の項目値を前 記新 、項目値番号の順序に格納した新 、値リストと、を生成するステップと、 前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各 処理モジュールの前記新しい値リストを送信するステップと、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュール の前記新 、値リストを受信するステップと、
前記各処理モジュールが前記各処理モジュールの前記新しい値リストと前記他の 処理モジュールの前記新 、値リストとを比較し、前記各処理モジュールの前記新し V、値リストの項目値に、前記複数の処理モジュール間で一意に定まる新し 、グロ一 バルな項目値番号を付与するステップと、
を実行させるためのプログラム。
[15] 請求項 9乃至 14のうちいずれか 1項記載のプログラムを記録したコンピュータ読み取 り可能な記録媒体。
[16] 複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメ モリを具備し、 前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指 定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値 番号の順序に該項目値が格納されて 、る値リストと、を含む、
†青報処理システムであって、
前記各処理モジュールは、
前記各処理モジュールの表形式データのレコードに、前記複数の処理モジュール 間で一意に決まるグローバルな順序番号を割り当てる手段と、
前記各処理モジュールが前記各処理モジュールの値リストと前記他の処理モジュ 一ルの値リストとを比較し、前記各処理モジュールの値リストの項目値に、前記複数 の処理モジュール間で一意に決まるグローバルな項目値番号を付与する手段と、 を有する、
情報処理システム。
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメ モリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指 定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値 番号の順序に該項目値が格納されて 、る値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジユー ル間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一 意に決まるグローバルな項目値番号が付与されて!、る、
†青報処理システムであって、
前記各処理モジュールは、
削除対象となるレコードを特定する手段と、
前記削除対象となるレコードに対応したグローバルな順序番号よりも後に順序付け されたグローバルな順序番号を削除される個数分だけ引き下げ、前記削除対象とな るレコードに対応した項目値番号を指定する情報をポインタ配列から削除する手段と を有する、
情報処理システム。
[18] 複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメ モリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指 定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値 番号の順序に該項目値が格納されて 、る値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジユー ル間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一 意に決まるグローバルな項目値番号が付与されて!、る、
†青報処理システムであって、
前記各処理モジュールは、
挿入対象となるレコードの挿入位置を特定する手段と、
前記挿入対象となるレコードに対応したグローバルな順序番号よりも後に順序付け されたグローバルな順序番号を挿入される個数分だけ引き上げ、前記挿入対象とな るレコードに対応した項目値番号を指定する情報を格納する領域を、ポインタ配列の 挿入位置に確保する手段と、
を有する、
情報処理システム。
[19] 複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメ モリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指 定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値 番号の順序に該項目値が格納されて 、る値リストと、を含み、 前記各処理モジュールの表形式データのレコードには、前記複数の処理モジユー ル間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一 意に決まるグローバルな項目値番号が付与されて!、る、
†青報処理システムであって、
前記各処理モジュールは、
上書き対象となるレコードを特定し、上書きデータを設定する手段と、
前記上書きデータを表現する項目値番号と項目値の組を生成する手段と、 前記生成された項目値番号と項目値の組をマージすることにより、前記上書き対象 となるレコードを含むローカルな情報ブロックのポインタ配列及び値リストを更新する 手段と、
前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各 処理モジュールの値リストを送信し、該他の処理モジュールから該他の処理モジユー ルの値リストを受信し、該各処理モジュールの値リストと該他の処理モジュールの値リ ストとを比較し、該各処理モジュールの値リストの項目値に、前記複数の処理モジュ ール間で新 U、グローバルな項目値番号を付与する手段と、
を有する、
情報処理システム。
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメ モリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指 定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値 番号の順序に該項目値が格納されて 、る値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジユー ル間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一 意に決まるグローバルな項目値番号が付与されて!、る、 †青報処理システムであって、
前記各処理モジュールは、
前記ローカルな情報ブロックの値リストに格納されて 、る項目値のうち現在のポイン タ配列の要素によって指定されて 、る現在の項目値番号に対応した項目値が該現 在の項目値番号の順序に格納されるように前記値リストを更新する手段と、
前記更新された値リストに格納されて 、る項目値を指定するように、前記現在のポ インタ配列に格納される前記現在の項目値番号を指定する情報を更新する手段と、 を有する、
情報処理システム。
複数の処理モジュールが論理的に環状に接続され、
各処理モジュールは表形式データを表現するローカルな情報ブロックを格納するメ モリを具備し、
前記ローカルな情報ブロックは、表形式データのレコードの順番に項目値番号を指 定する情報が格納されたポインタ配列と、表形式データの項目値に対応した項目値 番号の順序に該項目値が格納されて 、る値リストと、を含み、
前記各処理モジュールの表形式データのレコードには、前記複数の処理モジユー ル間で一意に決まるグローバルな順序番号が割り当てられ、
前記各処理モジュールの値リストの項目値に、前記複数の処理モジュール間で一 意に決まるグローバルな項目値番号が付与されて!、る、
†青報処理システムであって、
前記各処理モジュールは、
前記各処理モジュールに再配置されるべきそれぞれの新しいレコードの個数を決 定する手段と、
前記新し 、レコードの個数に基づ 、て、新し 、グローバルな順序番号を再配置さ れるべき前記新し ヽレコードに割り当てる手段と、
前記各処理モジュール力 論理的に環状に接続された他の処理モジュールへ、前 記各処理モジュールの現在のレコードに割り当てられた現在のグローバルな順序番 号と、該現在のグロ一ノ レな順序番号に対応した現在の値リスト中の項目値と、を送 信する手段と、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュール の前記現在のグローバルな順序番号と、前記対応した現在の値リスト中の項目値と、 を受信する手段と、
前記各処理モジュール力 前記他の処理モジュール力 受信した前記現在のグロ 一バルな順序番号の中で前記各処理モジュールに再配置されるべき前記新 、レ コードに割り当てられた前記新 、グローバルな順序番号と一致する前記現在のグ ローバルな順序番号に対応した前記項目値を一時的な値リストとして前記メモリに記 憶する手段と、
前記各処理モジュール力 前記新 、レコードの順番に新 、項目値番号を指定 する情報が格納された新しいポインタ配列と、前記一時的な値リスト中の項目値を前 記新 、項目値番号の順序に格納した新 、値リストと、を生成する手段と、 前記各処理モジュールが論理的に環状に接続された他の処理モジュールへ該各 処理モジュールの前記新しい値リストを送信する手段と、
前記各処理モジュールが前記他の処理モジュールから前記他の処理モジュール の前記新 、値リストを受信する手段と、
前記各処理モジュールが前記各処理モジュールの前記新しい値リストと前記他の 処理モジュールの前記新 、値リストとを比較し、前記各処理モジュールの前記新し V、値リストの項目値に、前記複数の処理モジュール間で一意に定まる新し 、グロ一 バルな項目値番号を付与する手段と、
を有する、
情報処理システム。
PCT/JP2005/007874 2004-04-28 2005-04-26 情報処理方法及び情報処理システム WO2005106713A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006512783A JP4673299B2 (ja) 2004-04-28 2005-04-26 情報処理方法及び情報処理システム
US11/568,490 US20080262997A1 (en) 2004-04-28 2005-04-26 Information Processing Method and Information Processing System

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004-133320 2004-04-28
JP2004133320 2004-04-28

Publications (1)

Publication Number Publication Date
WO2005106713A1 true WO2005106713A1 (ja) 2005-11-10

Family

ID=35241862

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2005/007874 WO2005106713A1 (ja) 2004-04-28 2005-04-26 情報処理方法及び情報処理システム

Country Status (3)

Country Link
US (1) US20080262997A1 (ja)
JP (1) JP4673299B2 (ja)
WO (1) WO2005106713A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011039841A1 (ja) * 2009-09-29 2011-04-07 株式会社東芝 検索装置、及びシステム
JP2015172823A (ja) * 2014-03-11 2015-10-01 株式会社電通国際情報サービス 情報処理装置、情報処理方法及びプログラム
WO2022153401A1 (ja) * 2021-01-13 2022-07-21 株式会社エスペラントシステム 情報処理方法、情報処理装置及びプログラム

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130039213A (ko) * 2011-10-11 2013-04-19 한국전자통신연구원 장치 클라우드를 이용한 가상 머신 제공 시스템 및 그 방법
US9654335B2 (en) * 2013-02-27 2017-05-16 Hughes Network Systems, Llc System and method for provision and management of segmented virtual networks within a physical communications network
GB2578320B (en) * 2018-10-23 2023-07-05 Advanced Risc Mach Ltd Graphics processing

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000010103A1 (fr) * 1998-08-11 2000-02-24 Shinji Furusho Procede et dispositif de recuperation, de stockage et de triage de donnees formatees en tableaux
JP2001043290A (ja) * 1999-07-29 2001-02-16 Taabo Data Laboratory Kk 表形式データの提示方法、挿入方法、削除方法、更新方法およびこれら方法を利用したトランザクション処理方法、並列処理方法、並びに、上記方法を実現するプログラムを記憶した記憶媒体
JP2001147800A (ja) * 1999-11-22 2001-05-29 Taabo Data Laboratory Kk 情報処理システム、並びに、この情報処理システムを利用したソート方法、コンパイル方法およびジョイン方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163149A (en) * 1988-11-02 1992-11-10 International Business Machines Corporation Combining switch for reducing accesses to memory and for synchronizing parallel processes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000010103A1 (fr) * 1998-08-11 2000-02-24 Shinji Furusho Procede et dispositif de recuperation, de stockage et de triage de donnees formatees en tableaux
JP2001043290A (ja) * 1999-07-29 2001-02-16 Taabo Data Laboratory Kk 表形式データの提示方法、挿入方法、削除方法、更新方法およびこれら方法を利用したトランザクション処理方法、並列処理方法、並びに、上記方法を実現するプログラムを記憶した記憶媒体
JP2001147800A (ja) * 1999-11-22 2001-05-29 Taabo Data Laboratory Kk 情報処理システム、並びに、この情報処理システムを利用したソート方法、コンパイル方法およびジョイン方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011039841A1 (ja) * 2009-09-29 2011-04-07 株式会社東芝 検索装置、及びシステム
JP5514220B2 (ja) * 2009-09-29 2014-06-04 株式会社東芝 検索装置、及びシステム
JP2015172823A (ja) * 2014-03-11 2015-10-01 株式会社電通国際情報サービス 情報処理装置、情報処理方法及びプログラム
WO2022153401A1 (ja) * 2021-01-13 2022-07-21 株式会社エスペラントシステム 情報処理方法、情報処理装置及びプログラム

Also Published As

Publication number Publication date
JP4673299B2 (ja) 2011-04-20
US20080262997A1 (en) 2008-10-23
JPWO2005106713A1 (ja) 2008-07-31

Similar Documents

Publication Publication Date Title
US11681650B2 (en) Execution engine for executing single assignment programs with affine dependencies
US8234267B2 (en) Hardware accelerated reconfigurable processor for accelerating database operations and queries
JP4339381B2 (ja) 共有メモリ型マルチプロセッサシステム及びその情報処理方法
US20110099155A1 (en) Fast batch loading and incremental loading of data into a database
US20190130270A1 (en) Tensor manipulation within a reconfigurable fabric using pointers
Nodine et al. Large-scale sorting in parallel memories
CN116627892B (zh) 一种数据近存储计算方法、装置和存储介质
US20190197018A1 (en) Dynamic reconfiguration using data transfer control
WO2005106713A1 (ja) 情報処理方法及び情報処理システム
JP4511469B2 (ja) 情報処理方法及び情報処理システム
CN114443680A (zh) 数据库管理系统、相关装置、方法和介质
Nodine et al. Paradigms for optimal sorting with multiple disks
JP4620593B2 (ja) 情報処理システムおよび情報処理方法
JP4511464B2 (ja) 情報処理システムおよび情報処理方法
JP4772506B2 (ja) 情報処理方法、情報処理システムおよびプログラム
JPH04288638A (ja) コンピュータシステム
WO2019113021A1 (en) Tensor manipulation within a reconfigurable fabric using pointers
JP4559971B2 (ja) 分散メモリ型情報処理システム
Ramamoorthy et al. Data management in distributed data bases
JP4995724B2 (ja) 情報処理システムおよび情報処理方法
Beckman Parallel LU decomposition for sparse matrices using quadtrees on a shared-heap multiprocessor
JP2615046B2 (ja) レコード追加処理方法
JPS62256045A (ja) デ−タ駆動型計算機
WO2019169238A1 (en) Dynamic reconfiguration using data transfer control
JPH04113468A (ja) 論理シミュレーションの並列処理方式

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KM KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

DPEN Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed from 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2006512783

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

WWW Wipo information: withdrawn in national office

Country of ref document: DE

WWE Wipo information: entry into national phase

Ref document number: 11568490

Country of ref document: US

122 Ep: pct application non-entry in european phase