WO2001022229A1 - Architecture informatique parallele et unite de traitement de l'information au moyen de ladite architecture - Google Patents

Architecture informatique parallele et unite de traitement de l'information au moyen de ladite architecture Download PDF

Info

Publication number
WO2001022229A1
WO2001022229A1 PCT/JP2000/005947 JP0005947W WO0122229A1 WO 2001022229 A1 WO2001022229 A1 WO 2001022229A1 JP 0005947 W JP0005947 W JP 0005947W WO 0122229 A1 WO0122229 A1 WO 0122229A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
memory
memory module
bus
mpu
Prior art date
Application number
PCT/JP2000/005947
Other languages
English (en)
French (fr)
Inventor
Shinji Furusho
Original Assignee
Turbo Data Laboratories Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Turbo Data Laboratories Inc. filed Critical Turbo Data Laboratories Inc.
Priority to DE60034065T priority Critical patent/DE60034065D1/de
Priority to CA002385079A priority patent/CA2385079C/en
Priority to EP00956868A priority patent/EP1244020B1/en
Priority to US10/088,028 priority patent/US7185179B1/en
Publication of WO2001022229A1 publication Critical patent/WO2001022229A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0692Multiconfiguration, e.g. local and global addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port

Definitions

  • the present invention relates to a parallel computer architecture capable of realizing SIMD (Single Instruction Stream, Multiple Data Stream), and more particularly, to a computer architecture capable of performing general-purpose parallel operations by appropriate and high-speed memory control.
  • SIMD Single Instruction Stream, Multiple Data Stream
  • the parallel processing architecture can be broadly divided into “shared memory type” and “distributed memory type”.
  • shared memory type is a method in which multiple processors share one huge memory space. In this method, it is not easy to construct a realistic system using more than a hundred processors, because the traffic between the processor group and the shared memory becomes a bottleneck. Thus, for example, when calculating the square root of 100 billion floating point variables, the acceleration ratio for a single CPU is at most 100 times. Empirically, the upper limit is about 30 times.
  • each processor has its own local memory, and these are combined to form a system.
  • this method it is possible to design a hardware system that incorporates hundreds to tens of thousands of processors. Therefore, the acceleration ratio for a single CPU when calculating the square root of the above 100 billion floating-point variables can be hundreds to tens of thousands.
  • the acceleration ratio for a single CPU when calculating the square root of the above 100 billion floating-point variables can be hundreds to tens of thousands.
  • the first issue of “distributed memory type” is the issue of data division management.
  • the third issue of “distributed memory type” is how to supply programs to many processors.
  • the method of loading different programs on a very large number of processors and cooperating as a whole (MIMD: Multiple Instruction Stream, Multiple Data Stream) requires a great deal of load to create, compile, and distribute the programs.
  • the present invention provides a method and computer architecture for solving the above first to third problems of the "distributed memory type".
  • the first issue of “separation management of a huge array” can be solved by assigning and managing each element of the array (physical address) in a unified manner by each processor module.
  • This method eliminates the need for garbage collection, completes the insertion and deletion of array elements in a few clocks, and divides the implicit (non-explicit) processing burden of each processor, which is essential for implementing SIMD. You can also attach. This method will be explained later in terms of the concept of “multi-space memory”.
  • the second issue of “inefficient inter-processor communication” is to switch between the processors according to the processing to be achieved, and to determine the specified type of data for each connection path. This can be solved by scheduling the communication so that the bus capacity can be used up to about 100% by continuously transferring data in one direction in the same order, and at the same time implementing huge pipeline processing.
  • the present invention provides a distributed memory type architecture that can input and output elements in an array stored in various memories with a single instruction and realize extremely high-speed parallel processing. Aim. Disclosure of the invention
  • An object of the present invention is to provide a CPU module, a plurality of memory modules each including an MPU and a RAM core, and a plurality of sets of connections between the CPU and the memory modules and / or connections between the memory modules.
  • Bus and CP
  • U is an architecture of a parallel combination configured so that the MPU of each memory module operates according to an instruction given to the MPU of each memory module, and a series of data having a predetermined relation. Is assigned a space ID, and the MPU of each memory module contains at least the space ID, the logical address of the set of data managed by itself, the size of the portion, and the size of a series of data. And the MPU of each memory module determines whether the received instruction involves a part of a series of data managed by itself, and stores the data stored in the RAM core. Read and send to the bus, write the data provided via the bus to the RAM core, perform any necessary processing on the data, and / or That it is configured to update the table are achieved by the architecture of the parallel computer to feature.
  • the MP of each memory module since a series of data is grasped using the spatial ID, even if the series of data is divided by a large number of memory modules, the MP of each memory module reliably recognizes the series of data. can do.
  • the memory module since the memory module knows the series of data and the part that it manages in a table, the memory module executes predetermined processing by referring to the table upon receipt of the instruction. can do. This enables parallel processing in each MPU based on a single instruction.
  • the MPU compares the spatial ID given by the CPU with the spatial ID of one or more series of data managed by the MPU.
  • An address comparison that compares the logical address given by the CPU with the logical address of the data part managed by the CPU. Based on the logical address, the physical address on the own RAM cell is determined based on the logical address. It has an address to calculate.
  • These comparators and calibration circuits may be configured by hardware, or may be realized as software by an MPU program.
  • each of the memory modules receives a synchronization signal for synchronizing with a CPU module and another memory module, and is connected to any one of the plurality of sets of buses. And an output that can be connected to any other of the plurality of sets of buses. At least, according to the synchronization signal, a connection between any one of the buses and the input allows input of data In addition, it is configured to output data by connecting any of the other buses to the output.
  • the data output from the memory module and the data input to the memory module are performed in accordance with the synchronization signal, and the parallel processing can be appropriately realized by controlling the bus connection. It becomes possible.
  • Each of the plurality of sets of nodes may include, between the CPU module and an input or output of any memory module, and / or an input or output of any other memory module, and More preferably, a switch is provided for defining a connection between the output and the input of the bus, and the switching of the switch realizes data transmission and reception in parallel in each of the plurality of sets of buses. This makes it possible to use multiple sets of buses more effectively, and to further enhance parallelism.
  • an output of any one of the memory modules and an input of any one of the other memory modules are connected to a first bus which is one of the plurality of sets of buses, And an output of any one of the other memory modules and an input of any one of the other memory modules are connected to a second bus that is any one of the plurality of buses; Exchange of de-nights on the first bus, Data transfer on the second bus proceeds in parallel.
  • pipeline processing can be realized by the CPU module and the memory module. More preferably, the connection between the bus and the memory module is repeated to form a connection between the multi-stage memory modules.
  • the MPU deletes a specific element from the series of data, inserts a specific element into the series of data, or specifies at the end of the series of data.
  • an instruction indicating that an element is to be added is received, by referring to the table, the area of the data managed by itself is compared with the position of the element to be deleted, inserted or added, and according to the result of the comparison. Then, the contents of the table are updated.
  • the MPU it is possible to realize deletion, insertion, and addition of elements by updating the table managed by itself, that is, by performing remapping.
  • the MPU is responsive to a given instruction to convert a subscript for identifying an element in the series of data and / or to identify the element. Perform a value conversion that gives the qualification of
  • an object of the present invention is to provide a CPU module, a plurality of memory modules each including an MPU and a RAM core, and a plurality of sets forming connections between the CPU and the memory modules and / or connections between the memory modules.
  • An information processing unit configured to operate the MPU of each memory module by the instruction given from the CPU to the MPU of each memory module, and a series of data having a predetermined relationship. Is assigned a space ID, and the MPU of each memory module contains at least the space ID, the logical address of the part of the series of data managed by itself, the size of the part, and the size of the series of data. And the MPU of each memory module manages the received instructions by itself.
  • the data stored in the RAM core is read out and sent to the bus, and the data given via the bus is written to the RAM core, and the data is read out. And / or information that is configured to update the table.
  • a processing unit For example, the unit may be formed on a single circuit board, and the CPU module may be configured to be connectable to another bus that interconnects the legacy memory, the input device, and the display device.
  • Still another object of the present invention is to have the information processing unit, a storage device including one or more legacy memories connected to a CPU module via another bus, an input device, and a display device. It is also achieved by a combination system.
  • FIG. 1 is a block diagram showing a configuration of a combination system according to an embodiment of the present invention.
  • FIG. 2 is a block diagram schematically showing the memory module according to the present embodiment.
  • FIG. 3 is a diagram showing the arrangement of a series of data in a single memory space.
  • FIG. 4 is a diagram showing an arrangement of a series of data in the multi-space memory according to the present invention.
  • FIG. 5 is a diagram for explaining address re-moving in the present embodiment.
  • FIG. 6 is a diagram for explaining value modification in the present embodiment.
  • FIG. 7 is a diagram schematically illustrating pipeline processing between memory modules according to the present embodiment.
  • FIG. 8 is a diagram for explaining the structure of the memory module 14 under the multi-spatial memory according to the present embodiment.
  • FIG. 9 is a diagram for explaining the structure of the memory module 14 under the multi-space memory.
  • FIG. 10 is a diagram for explaining the structure of the memory module 14 under the multi-space memory.
  • FIG. 11 is a flowchart showing a process executed by each memory module that has received an instruction to delete an element in a predetermined range in a certain space ID.
  • FIG. 12 is a diagram showing the relationship between the elements to be deleted and the arrangement of the elements held in the memory module.
  • FIG. 13 is a flowchart showing a process executed in each memory module that has received an instruction to delete an element in a predetermined range in a certain space ID.
  • FIG. 14 is a flowchart showing a process executed in each memory module that has received a instruction to add an element to the end of an array of a certain space ID.
  • FIG. 15 is a diagram for explaining combination of sequences and division of the sequences according to the present embodiment.
  • FIG. 16 is a diagram showing an array having a space ID “10” and an array having a space ID “11” in the present embodiment, and a state in which these are accommodated in a memory module.
  • FIG. 17 is a diagram showing an array obtained by combining the arrays and a space ID management table in each memory module in the present embodiment.
  • FIG. 18 is a diagram showing an example of dividing the array having the space ID “10” into the array having the space ID “10” and the array having the space ID “1 1” in the present embodiment. It is.
  • FIG. 19 is a diagram showing an array obtained by dividing the array and a space ID management table in each memory module in the present embodiment.
  • FIG. 20 is a diagram showing a parallel copy of data from one memory module group to another memory module group according to the present embodiment.
  • FIG. 21 is a diagram for explaining use of the converted flag according to the present embodiment.
  • FIG. 22 is a diagram for explaining the use of the converted flag according to the present embodiment. is there.
  • FIG. 23 is a diagram for explaining the flow of the sorting process according to the present embodiment.
  • FIG. 24 is a diagram for explaining the flow of the sort processing according to the present embodiment.
  • FIG. 25 is a diagram showing a reference procedure in a minute until an item value is specified from a record number in the present embodiment.
  • FIG. 26 is a diagram for explaining the flow of another sort process according to the present embodiment.
  • FIG. 27 is a diagram for explaining the flow of the search process according to the present embodiment.
  • FIG. 28 is a diagram for explaining the flow of the search process according to the present embodiment. DESCRIPTION OF THE PREFERRED EMBODIMENTS OF THE INVENTION
  • FIG. 1 is a block diagram showing a configuration of a convenience store system according to an embodiment of the present invention.
  • the convenience viewing system 10 includes a CPU module 12 for realizing a parallel operation by a single instruction, and a memory module 14-1 for storing various data necessary for the parallel operation. 14-2, 14-3,..., A fixed storage device 16 for storing necessary programs and data, an input device 18 such as a keyboard and a mouse, and a display device 20 such as a CRT, etc. And a legacy memory 22 in which data such as data of the following format is stored. Switches 28-1, 28-2, 28-3,..., etc.
  • a memory module may be referred to as “PMM” for convenience.
  • a plurality of buses 24-1, 24-2, 24-3, 24-4,... are provided between the CPU module 12 and the memory module 14. Therefore, C The bus allows data to be exchanged between the PU module 12 and the memory module 14 and between the memory modules.
  • a control signal line 25 is provided between the CPU 12 and the memory module 14 so that instructions and the like issued from the CPU 12 are transmitted to all the memory modules 14.
  • a local bus 26 is provided between the CPU 12 and other components (for example, the fixed storage device 16 and the input device 18), and data can be exchanged between them. It has become.
  • the CPU 12 reads a program stored in the fixed storage device 16 or in another storage device (not shown) such as a RAM connected to the bus 26, and according to this program, In addition to the transmission and reception of data including the transmission of instructions to the memory module 14 as shown, the control of the switches 28 and 30 is performed. Further, the CPU 12 can accept various types of data stored in the legacy memory 22 according to the program, and process the data in this format in a system including the CPU 12, the memory module 14, and the bus 24. The data can be converted into a series of data (array) and stored in each memory module 14.
  • FIG. 2 is a block diagram schematically showing each memory module 14.
  • the memory module 14 includes a clock buffer 32 that receives a synchronization signal such as a clock supplied from the CPU module 12, a RAM core 34 that stores data, and a space ID and a data element number that will be described later.
  • the MPU 36 which controls the writing of data to the RAM core 34 and the reading of data from the RAM core 34 based on the space ID and element number when receiving an instruction etc. from the CPU 12 And an I / O 38 for receiving data from the AM core 34 and / or sending data from the RAM core 34 to any bus.
  • the memory module 14 receives an instruction from the CPU via a control signal line 25, and the MPU 36 reads out data from the RAM core 34 in response to the instruction, and sends the data to the RAM core 34.
  • Write data or write to data Processing can be performed.
  • the data access to the RAM core 34 and the data input and data output via the I / O are executed based on a synchronization signal such as a clock supplied to the clock buffer 32.
  • the computer system 10 can be considered as a memory sharing type system. Also, as described later, by giving instructions to each memory module 14 via the control signal line 25, each memory module 14 executes processing in parallel. Further, data output to the bus and data input from the bus are executed based on a predetermined synchronization signal. Therefore, this computer system 10 can be considered to be in the form of SIMD.
  • a multi-space memory refers to a memory space allocated to access a memory space based on a space ID and an address.
  • a space ID is introduced into the memory space, and the same ID is given to a series of data.
  • the memory module 14 knows the space ID related to the data stored in its own RAM core 34, and this allows each memory module 14 itself to recognize the space ID of the currently accessed data. By referring to, it is possible to decide whether or not to act on its own.
  • each memory module can hold all or a part of a series of data in association with a space ID, a certain series of data can be divided and stored in a plurality of memory modules 14, Garbage collection can be eliminated.
  • a single memory space contains a series of data "A”, a series of data "B”, and so on, as shown in Figure 3.
  • the total memory size is 32 words, and the sum of the sizes of the series of data is 30 words. Since these series of data are scattered throughout the space, the size of the series of data that can be actually stored is limited to 3 words, even though the unused memory size is 12 words. You. Therefore, garbage collection must be performed if a new set of data with a size greater than three words is to be accommodated.
  • FIG. 4 in the present invention, a space ID is given to each of a series of data. These are stored in one or more memory modules 14 in association with the spatial ID. Therefore, it is possible to match the unused size with the storable size.
  • each memory module 14 has an MPU 36 and grasps the element numbers of the series of data held by itself in addition to the space ID. Therefore, after receiving the instruction from the CPU 12, the MPU 36 determines whether or not the data to be accessed according to the instruction is held in its own RAM core 34. To determine whether access is needed. In addition, each memory module 14 uses the SIMD instructed by the subscript range of the array elements stored in its own RAM core 34. It is possible to determine the allocation range of the implicit processing in Yong.
  • the memory module 14 can execute address remapping. For example, as shown in Fig. 5, when inserting a specific element at a predetermined position in a certain array, or when deleting an element at a predetermined position or adding a predetermined element at the end of an array, in each of the memory modules holding the elements related to the array, the MPU 36 implements the address remapping in parallel and at high speed by executing the address remapping. Can be. Furthermore, as shown in FIG. 6, even when modifying the elements (values) of the array (for example, adding “1” to each value), each of the memory modules holding the elements of the associated array The MPU 36 can perform necessary processing in parallel and at high speed.
  • the size of each data to be stored in the MPU 36 and the RAM core 34 can be grasped, and these can be stored in a compressed form. For example, if a certain memory module 14 should hold an integer value of data and the actual data value can only take a value from "0" to "3", the MPU 36 Prepare only 2 bits for one night. If 32 bits were used to represent a single integer between the CPU 12 and the CPU 12, the MPU 36 was used for communication between the memory module 14 and the CPU 12. The evening format should be changed to exchange data with CPU 1 and 2. This makes it possible to use the RAM core 34 more efficiently. Also, data with different lengths such as character strings can be stored with the data length changed similarly.
  • a specific value (for example, “0”) can be set in the data associated with a predetermined space ID or in the data with a predetermined range of element numbers. You can do it. This makes it possible to execute the initialization process at high speed in the memory module 14. Also, in the memory module 14, it is possible to search for a value in a specific data (array) and check the range of the subscript.
  • the CPU 12 selectively turns on / off the switches 28-1, 28-2,... And the switches 30-1, 30-2,.
  • the pipeline processing is realized by specifying. For example, as shown in FIG. 7, the data output from one memory module 14i is given to another memory module 14j, and the data output from the other memory module 14j is given.
  • the CPU 12 allocates the bus 24-m for the memory modules 14-i, 14-1 j, and allocates the bus 24-n Set the state of each switch to allocate for memory modules 14-14-k.
  • these pipeline processes can be realized not only by connection between single memory modules, but also by connection between a series of memory modules (memory module group).
  • connection between the memory modules is switched, and for each connection path, the specified type of data is transferred continuously in one direction in the specified order, thereby increasing the bus capacity.
  • Communication can be scheduled so that it can be used close to 100%. As a result, it is possible to eliminate the low performance of the inter-processor communication, which is the biggest problem of the distributed memory type parallel processing system.
  • FIG. 8 is a diagram for explaining the structure of the memory module 14 under a multi-space memory.
  • the RAM core 34 in the memory module 14 is provided with a space ID management table.
  • the MPU 36 of the memory module 14 can grasp necessary information such as the space ID of data held by itself.
  • the space ID management table stores the logical group start address and data under the management of the space ID and CPU for each data group held by itself.
  • the size of the area to which the group is allocated, the physical start address in the RAM core 34, the total size of a series of data having the space ID, and an access restriction flag indicating an access restriction are stored.
  • the access restriction flag can indicate three states of read only (R), write only (R), and read / write (RW).
  • FIG. 8C is a diagram showing the data in the RAM core 36 according to the space ID management table shown in FIG. 8B.
  • the CPU 12 sends the space ID and the logical address and the necessary instructions (for example, writing and reading data) to all the memory modules 14 via the control signal line 25.
  • the space comparator 52 provided in the MPU 36 compares the space ID with the space ID held in its own space ID management table, It is determined whether or not the same is held by itself, and the address comparator 54 makes a similar determination for the logical address.
  • the MPU 36 of the memory module 14 determines that the data to be processed by the instruction is stored in its own: RAM core 34
  • the address calibration 56 is replaced with the space ID.
  • the physical address in the RAM core 34 is calculated with reference to the management table, and the data to be processed is specified.
  • the MPU 36 processes the data according to the instruction given by the CPU 12 (for example, writing or reading data). ) And, if necessary, transmit the data to the CPU 12 (see FIG. 9 (c)).
  • a series of data with a certain space ID (hereinafter, sometimes referred to as an “array”) has a specific element removed from the state of being stored in one or more memory modules 14. A series of operations up to the state will be described below.
  • the data group belonging to the space ID “010” is stored as shown in FIG. 10 (a), and in many memory modules 14—j, the data is stored in the space ID “010”.
  • the data group to which the data belongs is stored as shown in Fig. 10 (b).
  • the memory module 14-i it can be seen that data from the logical addresses “0” to “59” are stored from the physical address “100” of the AM core. In this case, the apparent array is as shown in Fig. 10 (c).
  • FIG. 11 and FIG. 13 are flowcharts showing processing executed in each memory module that has received the instruction to delete an element in a predetermined range in a certain space ID.
  • the MPU 36 of each memory module receives the instruction given via the control signal line 25, interprets the content (step 1 101), and checks the “spatial ID” in the instruction (step 1). 102), it is determined whether or not it is related to the spatial ID of the data held by its own RAM core 34 (step 1103). If “No” is determined in step 1103, the process ends, and if “Yes” is determined, the MPU 36 refers to the space ID management table and The data group related to the space ID is in a writable state, or the size of the area requested to be deleted is smaller than the total size. It is determined whether it is small or not (step 1104).
  • the MPU 36 determines that there is an error (Yes in step 1105), the MPU 36 notifies via the control signal line 25 that an error has occurred. On the other hand, if there is no abnormality, the MPU 36 compares the range requested to be deleted by the instruction with the range of the element held in its own RAM core 34 (step 1107), and the comparison result (Step 1108) executes various processes. First, if the range requested to be deleted is later than the range of the elements held by itself (see “A” in FIG. 11 and FIG. 12 (a)), the MPU 36 does not execute any processing ( See Step 1 109). If the area requested to be deleted overlaps the element that it holds (see “B” in Figure 11 and Figure 12 (b)), the MPU 36 sets the size of the allocated area. Update (step 1 1 1 0). That is, the allocation area size is changed so that the garbage is provided from the beginning of the deletion request range (see arrow 1201) to the end of the own: range of the element held in the AM core 34 (see arrow 1202).
  • the MPU 36 sets the logical start address.
  • the logical start address is updated so that is reduced by the size requested for deletion (step 1 1 1 1).
  • the MPU 36 Change the logical start address to the first value in the range requested to be deleted, and change the physical start address to the physical address corresponding to the last value “+1” in the range requested to be deleted (step 1).
  • the MPU 36 If the range requested to be deleted includes the range of the elements held by itself (see “E” in FIG. 11 and FIG. 12 (e)), the MPU 36 The data is deleted from the spatial ID management table (steps 1 114 in FIG. 13). Finally, the range requested to be deleted is changed to the range of the elements If it is included (see “F” in Fig. 11 and Fig. 12 (f)), the spatial ID management table is divided into two parts, and various data related to the area ahead of the deletion range and the data behind the deletion area. It relates to generate a related various de Isseki (step 1 1 15) c or, MPU 36 with respect own RAM 34, may be time during the garbage collection.
  • each memory module 14 operates in response to a single instruction (an instruction to delete a certain space ID) from the CPU 12, and necessary processing is executed in parallel in a predetermined memory module.
  • FIG. 14 is a flowchart showing a process executed in each memory module that has received an instruction to add an element to the end of an array of a certain space ID. Steps 1401 to 1406 in FIG. 14 correspond to steps 1101 to 1106 in FIG. Next, the MPU 36 of each memory module 14 determines whether or not the element to be added is to be stored in its own RAM core 34 (step 1407). This can be realized by the MPU 36 referring to its own space ID management table.
  • step 1407 If the answer is YES in step 1407, the necessary value in the space ID management table is updated (for example, the allocation area size is changed according to the number of elements to be added), and then Then, an element to be added is written in a predetermined area in the RAM cell (step 1409). Alternatively, various values of the spatial ID management table may be generated, and elements to be added may be written to the corresponding area in the RAM cell.
  • the MPU 36 updates the value of “all size” related to the space ID in the space ID management table (step 1410). Even when it is determined to be No (No) in step 1407, the value of the related “all size” in the space ID management table is updated.
  • FIG. 15 (a) a case where a plurality of arrays are combined as shown in FIG. 15 (a) or a single array is divided into a plurality of arrays as shown in FIG. 15 (b). .
  • an array having a certain space ID (the space ID “100” in FIG. 15A) and / or another space ID (the space ID in FIG. 15B).
  • the array having ID “100”) may be accommodated in the RAM core of a single memory module, or may be accommodated in the RAM cores of a plurality of memory modules.
  • FIG. 16 is a diagram showing an array having a space ID “10”, an array having a space ID “11”, and a state in which these are accommodated in a memory module.
  • FIG. 16A shows an array 1501 in which the space ID is “10” and the size of each element is 10 words.
  • the elements in this array 1501 are contained in memory modules 14-1 through 14-X.
  • FIG. 16B shows an array 1510 whose space ID is “11” and each element has a size of 10 words.
  • the elements of this array 1510 are also contained in memory modules 141-1 through 14-X.
  • the MPU of the memory module realizes the connection of the array according to the following procedure.
  • FIG. 17 is a diagram showing the array 1710 obtained in this manner and the spatial ID management tables (for example, reference numerals 1711 and 1712) in each of the memory modules 14-1 to 14-X.
  • FIG. 18 is a diagram illustrating an example in which an array having a space ID “10” is divided into an array having a space ID “10” and an array having a space ID “11”.
  • the decomposition point of the array having the space ID "10” shown in Fig. 18 (a) is determined, and the elements located before the decomposition point are arranged as the space ID "10" and the elements are located after the decomposition point.
  • the element is an array of space ID "1 1".
  • the CPU 12 sends the array of “space ID“ 10 ”and the array of space ID“ 10 ”and the space ID“ 1 1 ”
  • the memory module 14 executes the processing substantially corresponding to the steps 1101 to 1106 in FIG. 11 and executes the processing related to the instruction among the memory modules. (In the example of FIG. 18, the memory modules 14-1 to 14-X) execute a predetermined process. For example, when the MPU 36 contains an element located behind the decomposition point, the MPU 36 creates various values in the space ID management table for the space ID “01 1” and creates the various values for the space ID “010”. Update the values for all sizes in the space management ID table.
  • FIG. 19 shows the arrays 1901 and 1902 obtained in this way, and the spatial ID management tables in each of the memory modules 14-1 to 14-X (see, for example, reference numerals 1911, 1912, and 1913).
  • FIG. 19 shows the arrays 1901 and 1902 obtained in this way, and the spatial ID management tables in each of the memory modules 14-1 to 14-X (see, for example, reference numerals 1911, 1912, and 1913).
  • One memory module group 140 includes a single memory module, and the other memory module group includes a plurality of memory modules.
  • the MPU 36 of the memory module 14 containing the element to be copied uses an instruction (for example, an array having a certain space ID) supplied from the CPU 12 via the control signal line 25.
  • an instruction for example, an array having a certain space ID
  • the MPU 36 which is the copy destination, also receives the element output from the bus in response to the reception of the same instruction, stores it in a predetermined area of the RAM core 34, and Update own space ID management table.
  • data from one of the memory modules in one memory module group 140 is provided to the corresponding memory module in the other memory module group 141 by using a plurality of buses. Is possible.
  • the CPU 12 may control the switches 28 and 30 so that data can be transferred between predetermined memory modules in the evening.
  • the input subscript is converted by subscript conversion, an array is specified by the converted subscript, and the value is modified to the element of the array. can do.
  • the MPU of each memory module rewrites the spatial ID management table related to the array and executes remuffing.
  • subscript conversion can be eliminated instantaneously.
  • the value qualification itself It takes time because the elements stored in the RAM core need to be updated. Therefore, in each memory module, a converted flag is provided, and after the element in which the value modification is reflected is actually stored in the RAM core, the flag corresponding to the element is set to “1”.
  • FIG. 23 and FIG. 24 are diagrams for explaining the flow of the sorting process according to the present embodiment. This sort process can be roughly divided into the process shown in Fig. 23 (determination of the number of existence and calculation of the total number) and the process shown in Fig. 24 (transfer of the record number).
  • a record number array storing record numbers, a value list storing actual item values for a certain item, and a record number array It takes a value (record number) as input, and uses a pointer to a value list that is configured to output a Boyne value indicating the storage location of the corresponding value list.
  • the pointer number to the value list at the corresponding position is referenced from the record number, and the actual item value is specified according to the pointer value (see Fig. 25).
  • the CPU 12 gives the necessary instructions to the respective memory modules 14 via the control signal line 25. Steps substantially equivalent to steps 1101 to 1106 are executed. In addition, among the related memory modules, the CPU 12 responds to the notification from the memory module storing the record number, and sets the memory module (first memory module group 2301) of the series of memory modules storing the record number. Control switches 28, 30 to connect the output to a bus (referred to as the "first bus").
  • the CPU 12 sets a series of memory modules (the second memory module group 230) storing the pointer array to the value list.
  • the switches 28, 30 are controlled so that the output of 2) is connected to a certain bus (referred to as "second bus").
  • second bus a certain bus
  • third memory module group 2303 an area for “existence number array” of the same size (same number of elements) as the pointer to the value list is secured. And each element is initialized to “0”. Further, the input of the third memory module group is connected to the second bus.
  • the record numbers are sent out to the first bus in order from the top of the record number array.
  • the MPU 36 of each memory module refers to the space ID management table and determines the timing at which the MPU 36 outputs data to the first bus. This is realized by detecting and transmitting a predetermined record number.
  • the record number is given to each of the memory modules constituting the second memory module group 2302 via the first bus.
  • the MPU 36 of each memory module refers to its own spatial ID management table, detects that the record number associated with the pin array in the value list managed by itself is input, and detects the input. The boyne value corresponding to is output to the second bus.
  • the pointer value is provided to each of the memory modules constituting the module group of the third memory via the second bus.
  • the MPU 36 of each memory module refers to its own spatial ID management table, detects that a pointer value related to the pointer array of the value list managed by itself is given, and sets the pointer in the existence number array. Increments the element at the position corresponding to the value. By repeating this operation, It is possible to know how many times the item value is indicated by the record number (pointing).
  • This series of memory modules is referred to as a fourth memory module group 2304.
  • the CPU 12 connects the output of the third memory module group used for the previous processing and the input of the fourth memory module group via a bus (referred to as a “third bus”). Control the switches 28, 30;
  • the sorting process is performed. More specifically, from the top of the record number array, the record numbers are provided to the memory modules constituting the second memory module group via the first bus. For a given memory module in the second group of memory modules, the MPU 36 responds to the receipt of the record number and stores the pointer value via the second bus in the third group of memory modules. Communicate to
  • the MPU 36 determines the storage position of the record number by referring to the related number array based on the pointer value. As a result, the record number and its storage position are sent from the memory module to the third bus. Therefore, in a predetermined memory module of the fourth memory module group, the MPU 36 arranges the record number at a predetermined storage position. By repeating this process, an array of sorted record numbers (reference numeral 24 1 in FIG. 24) is stored in the fourth memory module group.
  • the processing shown in FIG. 23 can be made a pipeline processing. That is, when a certain record number “p” is transmitted on the first bus, a pointer value “P (p—
  • the output of the first memory module group (see reference numeral 2601 in FIG. 26) including the memory modules storing the record number array is connected to the first bus, and An input of a second memory module group 2602 including a memory module storing a pointer array to a value list is connected to the first bus.
  • the output of the first memory module group 2601 can be transmitted to the second memory module group 2602 via the first bus.
  • the area of the array having the same number of space IDs as the second memory module group 2602 is secured in the third memory module group 2603, and the output of the second memory module group 2602 And the input of the third memory module group are connected via the second bus.
  • the MPU 36 of the memory module that stores a certain record number sends the record number to the first bus. Then, in a predetermined memory module of the second memory module group 2602, the MPU 36 responds to this reception, calculates a space ID from the corresponding pointer value, and calculates the record number and the space ID, Send to the second bus.
  • a predetermined memory module 36 is activated based on the space ID and the record number, and a given record number is arranged at the end of the array having the space ID. After performing such processing for all record numbers, in the third memory module group, the MPU 36 of each memory module executes processing for combining its own array. Even with such a method, high-speed sorting can be realized.
  • the search processing can be executed in parallel based on a single instruction from CPU 12 by using a multi-space memory and a rearrangeable bus.
  • FIG. 27 and FIG. 28 are diagrams for explaining the flow of the search process according to the present embodiment.
  • a record number array, a pointer array to a value list, a value list, an availability flag array described later, and the like are used. Therefore, in this example, as in Figure 25, the values are referenced in the order of record number, pointer value, and item value.
  • the CPU 12 sets the series of memory modules storing the value list (the first memory module group 2701).
  • the switches 28, 30 are controlled so that the output of the first bus is connected to a certain bus (referred to as a "first bus").
  • an area for the availability flag array whose prime number is the same as that of the value list is secured in a series of memory modules (second memory module group 270 2), and the second memory is allocated.
  • MPU 36 of each memory module belonging to memory module 2 7 0 2 Is initialized to "0".
  • the input of the second memory module group 2702 is connected to the first bus.
  • the MPU 36 refers to the position of the item value that matches the search condition in the value list, and Set the corresponding value of to “1”. For example, if the search condition is the range, bisection method or the like may be used c In addition, if other conditions, may be judged that whether each element.
  • a search is performed. First, the output of a series of memory modules (third memory module group 2703) storing the record number array is connected to the first bus, and a series of memory modules (pointer array for the value list) are stored.
  • the CPU 12 controls the switches 28 and 30 to connect the input of the fourth memory module group 2704) to the first bus. Further, the CPU 12 controls the switches 28 and 30 so that the output of the fourth memory module group 2704 and the input of the second memory module group 2702 are connected to the second bus.
  • an area for an array having the same number of elements as the record number is reserved in a series of memory modules (fifth memory module 2705), and the CPU 12 receives the input and the second memory
  • the switches 28 and 30 are controlled so that the output of the module group 2702 is connected to a third bus.
  • the record numbers are sent out to the first bus in order from the beginning of the record number array.
  • the MPU 36 of each memory module refers to the space ID management table, detects the timing at which the MPU 36 outputs data to the first bus, and determines the predetermined record number. This is achieved by sending
  • the record number is given to each of the memory modules constituting the fourth memory module group 2704 via the first bus.
  • the MPU 36 of each memory module refers to its own spatial ID management table, detects that the record number related to the pointer array to the value list managed by itself has been input, and has accepted it. Record It outputs the code number and the boyne value corresponding to the input to the second bus.
  • the pointer value is provided along with the record number to each of the memory modules constituting the module group of the third memory via the second bus.
  • the MPU 36 of each memory module refers to its own space ID management table, detects that a pointer value indicating the same position as the position of the enable / disable flag array managed by itself is given, and indicates the pointer value. It is determined whether the availability flag is “0” or “1”. Next, when the availability flag is “1”, the related record number is provided to the fifth memory module group 2705 via the third bus.
  • the MPU 36 of each memory module refers to its own space ID management table and records the record number indicating the same position as the position of the hit information storage array managed by itself. Is detected, and the element at that position is set to “1”. Such a process is repeated for a predetermined record number, and the element that is “1” in the hit information storage array is taken out, thereby completing the search.
  • the present invention is applied to a computer system, but is not limited thereto, and may be applied to a computer board connectable to a personal computer or the like.
  • the CPU 12, the memory unit 14, the bus 24, and the like are mounted on a board, and this constitutes the information processing unit in the present invention.
  • the number of sets of buses connecting between the CPU 12 and the memory module 14 and / or between the memory modules 14 is not limited to the above-described embodiment, but includes a computer system. It can be appropriately determined in consideration of the size of the circuit board to be used, the number of bits of each bus, and the like.
  • the switch 28 for defining the connection between the input / output of the memory module and the bus, and the switch for disconnecting the bus between the CPU and the memory module and between the memory modules are provided. 30 is provided. By providing the switch 30, for example, a certain bus (see the bus 24-4 in FIG.
  • control signal line 25 the input from the CPU 12 via the control signal line 25 is also described. Although it is described that instructions are given, various control signals such as clocks for operating the respective memory modules in synchronization with each other are given via the control signal line 25, and It goes without saying that a predetermined signal (for example, an error signal or a signal indicating data reception) is provided from the memory module to the CPU 12.
  • a predetermined signal for example, an error signal or a signal indicating data reception
  • the function of one means may be realized by two or more physical means, or the function of two or more means may be realized by one physical means. Good.
  • the present invention can be used particularly for a system for managing a large amount of data, for example, a database and a data warehouse. More specifically, it can be used for large-scale scientific and technical calculations, order management, core business management such as securities transactions, and business administration.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Processing (AREA)
  • Debugging And Monitoring (AREA)

Description

明 細 書
並列コンビユー夕のアーキテクチャおよび このアーキテクチャを利用した情報処理ュニッ ト
発明の属する技術分野
本発明は、 S I M D (Single Instruction Stream, Multiple Data Stream)を 実現可能な並列コンピュータのアーキテクチャに関し、 より詳細には、 適切かつ 高速なメモリ制御により、 汎用的な並列演算が可能なコンピュータァーキテクチ ャに関する。 背 景 技 術
社会全体のさまざまな場所にコンピュータが導入され、 イン夕一ネッ 卜をはじ めとするネッ トワークが浸透した今日では、 そこここで、 大規模なデータが蓄積 されるようになった。 このような大規模データを処理するには、 膨大な計算が必 要で、 そのために並列処理を導入しようと試みるのは自然である。
さて、 並列処理アーキテクチャは 「共有メモリ型」 と 「分散メモリ型」 に大別 される。 前者 ( 「共有メモリ型」 ) は、 複数のプロセッサが 1つの巨大なメモリ 空間を共有する方式である。 この方式では、 プロセッサ群と共有メモリ間のトラ フィ ックがボトルネックとなるので、 百を越えるプロセッサを用いて現実的なシ ステムを構築することは容易ではない。 したがって、 例えば 1 0億個の浮動小数 点変数の平方根を計算する際、 単一 C P Uに対する加速比は、 せいぜい 1 0 0倍 ということになる。 経験的には、 3 0倍程度が上限である。
後者 ( 「分散メモリ型」 ) は、 各プロセッサがそれそれローカルなメモリを持 ち、 これらを結合してシステムを構築する。 この方式では、 数百〜数万ものプロ セッサを組み込んだハードウェアシステムの設計が可能である。 したがって、 上 記 1 0億個の浮動小数点変数の平方根を計算する際の単一 C P Uに対する加速比 を、 数百〜数万倍とすることが可能である。 しかしながら、 後者においても、 後 述するいくつかの課題が存在する。
本出願は、 「分散メモリ型」 に関するものであり、 この方式について最初に多 少の考察を加えながら従来技術との比較を行うことにする。
[第 1の課題:巨大配列の分掌管理]
「分散メモリ型」 の第 1の課題は、 データの分掌管理の問題である。
巨大なデータ (一般的には配列なので、 以降、 配列で説明する) は、 1つのプ 口セッサの所有するローカルメモリに収容できるものではなく、 必然的に複数の ローカルメモリに分掌管理される。 効率的かつ柔軟な分掌管理メカニズムを導入 しないと、 プログラムの開発および実行に際してさまざまな障害を抱え込むこと になることは明らかである。
[第 2の課題: プロセッサ間通信の効率の低さ]
分散メモリ型システムの各プロセッサが、 巨大配列にアクセスしょうとすると、 自己の所有するローカルメモリ上の配列要素に対しては速やかにアクセスできる ものの、 他のプロセッサが所有する配列要素へのアクセスはプロセッサ間通信を 必須とする。 このプロセッサ間通信はローカルメモリとの通信に比べ、 極端にパ フォーマンスが低く、 最低でも 1 0 0クロックかかると言われている。 このため、 ソート実施時には、 巨大配列全域にわたる参照が実施され、 プロセッサ間通信が 多発するため、 パフォーマンスが極端に低下する。
この問題点につき、 より具体的に説明を加える。 1 9 9 9年現在、 パソコンは、 1〜数個の C P Uを用いて、 「共有メモリ型」 として構成されている。 このパソ コンに使用される標準的な C P Uは、 メモリバスの 5〜6倍程度の内部クロック で動作し、 その内部に自動的な並列実行機能やパイプライン処理機能が装備され ており、 およそ 1データを 1クロック (メモリバス) で処理できる。
「共有メモリ型」 であるパソコンにて巨大配列のソート処理を行う場合、 1デ —夕について 1クロックを要し、 このため、 1デ一夕に 1 0 0クロック (メモリ バス) を要する、 「分散メモリ型」 のマルチプロセッサシステムの 1 0 0倍のパ フォーマンスを発揮することも考えられる。
[第 3の課題: プログラムの供給]
「分散メモリ型」 の第 3の課題は、 多数のプロセッサにどうやってプログラム を供給するか、 という問題である。 非常に多数のプロセッサに、 別々のプログラムをロードし、 全体を協調動作さ せる方式 ( M I M D : Multiple Instruction Stream, Multiple Data Stream ) では、 プログラムの作成、 コンパイル、 配信のために多大な負荷を要する。
その一方、 多数のプロセッサを同一のプログラムで動作させる方式 ( S I M D : Single Instruction Stream, Multiple Data Stream ) では、 プログラムの 自由度が減少し、 所望の結果をもたらすプログラムが開発できない事態も想定さ れる。
本発明は、 「分散メモリ型」 の上記第 1ないし 3の課題を解決する方法および コンピュータアーキテクチャを提供する。 第 1の 「巨大配列の分掌管理」 の課題 は、 配列の各要素の配置 (物理アドレス) を、 各プロセッサモジュールが統一的 な方法で分掌管理することで解決できる。 この手法により、 ガーベージコレクシ ヨンの必要性が無くなり、 配列要素の揷入 '削除が数クロックで完了し、 S I M Dを実現する上で欠かせない各プロセッサの暗黙の (非明示的) 処理分担を割り 付けることもできる。 この方法は、 後ほど 「多空間メモリ」 という概念で説明さ れる。
第 2の 「プロセッサ間通信の効率の低さ」 の課題は、 達成しょうとする処理に 応じて各プロセッサ間をつなぎ替え、 各接続経路毎に、 定められた種類のデ一夕 を、 定められた順番で、 1方向に連続転送することで、 バスの能力を 1 0 0 %近 くまで使用できるよう通信をスケジュール化し、 同時に巨大パイプライン処理を 実現することで解決できる。
その有効性を実証するため、 後ほど、 現実的なシステム設計で、 1 0億行のソ ートを 1秒程度で完了するシステムの構成方法を例示するであろう。 これは、 既 知の最高速の装置に比べて、 1万倍以上高速である。 この方法は、 後ほど 「組替 えバス」 技術として説明される。
第 3の 「プログラムの供給」 の課題は、 S I M D方式を採用することで解決で きる。 S I M Dの場合は、 各プロセッサの暗黙の (非明示的) 処理分担をどうや つて決定するか?が最大の問題であるが、 前述の 「多空間メモリ」 技術にてこの 処理分担が自動的に決定でき、 S I M Dであってもプログラムの自由度を保持す ることができる。
つまり、 本発明は、 分散メモリ型において、 単一命令により種々のメモリに記 憶された配列中の要素を入出力し、 著しく高速な並列処理を実現可能なコンビュ 一夕アーキテクチャを提供することを目的とする。 発 明 の 開 示
本発明の目的は、 CPUモジュールと、 それそれが MP Uおよび RAMコアと を有する複数のメモリモジュールと、 前記 C P Uとメモリモジュールとの接続、 および/または、 メモリモジュール間の接続をなす複数組のバスとを備え、 CP
Uから各メモリモジュールの MP Uに与えられるィンストラクシヨンにより、 各 メモリモジュールの MP Uが作動するように構成された並列コンビユー夕のァ一 キテクチャであって、 所定の関連を有する一連のデータに、 空間 IDが付与され、 各メモリモジュールの MP Uが、 少なくとも、 当該空間 ID、 自己が管理する一 連のデータの部分に関する論理アドレス、 当該部分のサイズ、 および、 一連のデ 一夕のサイズを含むテーブルを管理し、 かつ、 各メモリモジュールの MPUが、 受理したインストラクションに、 自己が管理する一連のデータの部分が関与して いるか否かを判断して、 RAMコアに記憶されたデータを読み出してバスに送出 し、 バスを介して与えられたデータを RAMコアに書き込み、 データに必要な処 理を施し、 および/または、 前記テーブルを更新するように構成されたことを特 徴とする並列コンピュータのアーキテクチャにより達成される。
本発明によれば、 空間 I Dを用いて一連のデータを把握するため、 当該一連の データが、 多数のメモリモジュールにより分掌されても、 各メモリモジュールの MP が、 当該一連のデータを確実に認識することができる。 また、 メモリモジ ユールは、 一連のデ一夕および自己が管理するその部分を、 テ一ブルにて把握し ているため、 インス トラクションの受理にしたがって、 そのテーブルを参照して、 所定の処理を実行することができる。 これにより、 単一インス トラクションに基 づく、 各 MPUでの並列処理が実現できる。
本発明の好ましい実施態様においては、 MPUは、 CPUから与えられた空間 IDを、 自己が管理する 1以上の一連のデータの空間 IDと比較する空間コンパ レー夕と、 C P Uから与えられた論理アドレスと、 自己が管理するデータの部分 の論理ァドレスとを比較するアドレスコンパレ一夕と、 当該論理ァドレスに基づ き、 自己の R A Mセル上の物理ァドレスを算出するアドレスカリキユレ一夕とを 有している。 これらコンパレータおよびカリキユレ一夕は、 ハードウェアにて構 成されても良いし、 M P Uのプログラムによりソフ トウェアとして実現されるも のであっても良い。
また、 本発明の好ましい実施態様においては、 メモリモジュールの各々が、 C P Uモジュールおよび他のメモリモジュールとの同期をなすための同期信号を受 け入れ、 かつ、 前記複数組のバスの何れかとの接続が可能な入力と、 前記複数組 のバスの他の何れかとの接続が可能な出力を備え、 少なくとも、 前記同期信号に したがって、 前記何れかのバスと入力との接続により、 デ一夕を入力しつつ、 前 記他の何れかのバスと出力との接続により、 デ一夕を出力できるように構成され ている。
本実施の形態によれば、 同期信号にしたがって、 メモリモジュールからのデ一 夕出力およびメモリモジュールへのデータ入力がなされ、 かつ、 バスの接続の制 御により、 適切に並列処理を実現することが可能となる。
複数組のノ スの各々には、 前記 C P Uモジュールと何れかのメモリモジュール の入力または出力との間、 および/または、 他の何れかのメモリモジュールの入 力または出力と、 さらに他のメモリモジュールの出力または入力との間の接続を 規定するためのスィッチが設けられ、 スィッチの切換により、 複数組のバスの 各々において、 並列的にデータの授受が実現されるのがより好ましい。 これによ り、 複数組のバスをより有効に利用することが可能となり、 より並列性を高める ことが可能となる。
本発明のさらに好ましい実施態様においては、 複数組のバスのうちの何れかで ある第 1のバスに、 何れかのメモリモジュールの出力と、 他の何れかのメモリモ ジュールの入力とが接続され、 かつ、 前記複数組のバスのうち、 他の何れかであ る第 2のバスに、 当該他の何れかのメモリモジュールの出力と、 さらに他の何れ かのメモリモジュールの入力とが接続され、 第 1のバスにおけるデ一夕の授受と、 第 2のバスにおけるデータの授受が並列的に進行する。 このように、 コンビュ一 夕の実施態様によれば、 CPUモジュールと、 メモリモジュールとにより、 パイ プライン処理を実現することが可能となる。 バスとメモリモジュールとの間の接 続を繰り返して、 多段のメモリモジュール間の接続を形成するのがより好ましい。 本発明の別の好ましい実施態様においては、 MPUが、 一連のデータ中の特定 の要素を削除し、 前記一連のデータ中に特定の要素を挿入し、 或いは、 一連のデ 一夕の末尾に特定の要素を追加することを示すィンス トラクシヨンを受理すると、 テーブルを参照して、 自己の管理するデータの領域と、 削除、 挿入或いは追加に かかる要素の位置とを比較して、 当該比較結果に応じて、 前記テーブルの内容を 更新する。 すなわち、 MPUにおいて、 自己が管理するテーブルを更新する、 す なわち、 リマッピングをすることにより、 要素の削除、 挿入および追加を実現す ることが可能となる。
本発明のさらに別の実施態様においては、 MPUが、 与えられたインストラク シヨンに応答して、 一連のデータ中の要素を特定するための添え字を変換し、 お よび/または、 要素に特定の修飾を与える値変換を実行する。
また、 本発明の目的は、 CPUモジュールと、 それそれが MPUおよび RAM コアとを有する複数のメモリモジュールと、 前記 C P Uとメモリモジュールとの 接続、 および/または、 メモリモジュール間の接続をなす複数組のバスとを備え、 CPUから各メモリモジュールの MP Uに与えられるインス トラクシヨンにより、 各メモリモジュールの MPUが作動するように構成された情報処理ュニッ トであ つて、 所定の関連を有する一連のデータに、 空間 IDが付与され、 各メモリモジ ユールの MP Uが、 少なくとも、 当該空間 ID、 自己が管理する一連のデータの 部分に関する論理アドレス、 当該部分のサイズ、 および、 一連のデータのサイズ を含むテ一ブルを管理し、 かつ、 各メモリモジュールの MPUが、 受理したイン ストラクシヨンに、 自己が管理する一連のデータの部分が関与しているか否かを 判断して、 RAMコアに記憶されたデータを読み出してバスに送出し、 バスを介 して与えられたデータを RAMコアに書き込み、 デ一夕に必要な処理を施し、 お よび/または、 前記テーブルを更新するように構成されたことを特徴とする情報 処理ユニッ トによっても達成される。 たとえば、 前記ユニッ トが単一の回路基板 に形成され、 C P Uモジュールが、 レガシーメモリ、 入力装置および表示装置を 相互接続する他のバスと連結可能に構成されていても良い。
さらに、 本発明の目的は、 上記情報処理ユニッ トと、 C P Uモジュールと他の バスを介して連結された 1以上のレガシーメモリを含む記憶装置、 入力装置およ び表示装置とを有することを特徴とするコンビユー夕システムによっても達成さ れる。 図面の簡単な説明
本発明の目的および他の目的は、 添付図面とともに実施例を参照することに より、 さらに明らかになるであろう。 ここに、
図 1は、 本発明の実施の形態にかかるコンビユー夕システムの構成を示すプロ ックダイヤグラムである。
図 2は、 本実施の形態にかかるメモリモジュールの概略を示すプロックダイヤ グラムである。
図 3は、 単一メモリ空間における一連のデータの配置を示す図である。
図 4は、 本発明に係る多空間メモリにおける一連のデータの配置を示す図であ る。
図 5は、 本実施の形態におけるアドレスリ マ ヅビングを説明するための図であ ο
図 6は、 本実施の形態における値修飾を説明するための図である。
図 7は、 本実施の形態にかかるメモリモジュール間のパイプライン処理の概略 を示す図である。
図 8は、 本実施の形態にかかる多空間メモリの下での、 メモリモジュール 1 4 の構造を説明するための図である。
図 9は、 多空間メモリの下での、 メモリモジュール 1 4の構造を説明するため の図である。
図 1 0は、 多空間メモリの下での、 メモリモジュール 1 4の構造を説明するた めの図である。 図 1 1は、 ある空間 I D中の所定の範囲の要素を削除するというインストラク シヨンを受理した各メモリモジュールにて実行される処理を示すフローチャート である。
図 1 2は、 削除される要素と、 メモリモジュールにて保持している要素の配置 との関係を示す図である。
図 1 3は、 ある空間 I D中の所定の範囲の要素を削除するというインストラク シヨンを受理した各メモリモジュールにて実行される処理を示すフローチヤ一ト である。
図 1 4は、 ある空間 I Dの配列の末尾に要素を追加するといぅィンス トラクシ ヨンを受理した各メモリモジュールにて実行される処理を示すフローチャートで ある。
図 1 5は、 本実施の形態にかかる配列の結合および配列の分割を説明するため の図である。
図 1 6は、 本実施の形態において、 空間 I D 「 1 0」 を有する配列および空間 I D 「 1 1」 を有する配列、 並びに、 これらがメモリモジュール中に収容された 状態を示す図である
図 1 7は、 本実施の形態において、 配列の結合により得られた配列、 および、 各メモリモジュールにおける空間 I D管理テーブルを示す図である。
図 1 8は、 本実施の形態において、 空間 I D 「 1 0」 を有する配列を、 空間 I D 「 1 0」 を有する配列と、 空間 I D 「 1 1」 を有する配列に分割する一例を示 す図である。
図 1 9は、 本実施の形態において、 配列の分割により得られた配列、 および、 各メモリモジュールにおける空間 I D管理テーブルを示す図である。
図 2 0は、 本実施の形態かかる、 一方のメモリモジュール群から、 他のメモリ モジュール群へのデータのパラレルコピーを示す図である。
図 2 1は、 本実施の形態にかかる変換済みフラグの利用を説明するための図で ある。
図 2 2は、 本実施の形態にかかる変換済みフラグの利用を説明するための図で ある。
図 23は、 本実施の形態にかかるソート処理の流れを説明するための図である。 図 24は、 本実施の形態にかかるソート処理の流れを説明するための図である。 図 2 5は、 本実施の形態において、 レコード番号から項目値が特定されるまで のデ一夕の参照手順を示す図である。
図 26は、 本実施の形態にかかる他のソート処理の流れを説明するための図で ある。
図 27は、 本実施の形態にかかる検索処理の流れを説明するための図である。 図 28は、 本実施の形態にかかる検索処理の流れを説明するための図である。 発明の好ましい実施例の説明
[ハードウヱァ構成]
以下、 添付図面を参照して、 本発明の実施の形態につき説明を加える。 図 1は、 本発明の実施の形態にかかるコンビュ一夕システムの構成を示すプロックダイヤ グラムである。 図 1に示すように、 コンビュ一夕システム 10は、 単一命令によ る並列演算を実現する CPUモジュール 1 2と、 並列演算のために必要な種々の データを記憶するメモリモジュール 14— 1、 14- 2, 14— 3、 ···と、 必要 なプログラムやデータを記憶する固定記憶装置 1 6と、 キーボードやマウスなど の入力装置 1 8と、 CR Tなどからなる表示装置 20と、 種々の形式のデ一夕等 が記憶されているレガシ一メモリ 22とを備えている。 また、 バス 24— 1、 2 4— 2、 …において、 CPUモジュール 12、 各メモリモジュール 14との接点 には、 スィッチ 28— 1、 28— 2、 28 -3, …などが配設され、 選択された 回路要素間における情報の授受が可能となっている。 また、 CPUモジュール 1 2とメモリモジュール 14— 1との間、 隣接するメモリモジュール間において、 バスの連結および接続をなすためのスィッチ 30— 1、 30— 2、 …が設けられ ている。 なお、 本明細書に添付した図面において、 メモリモジュールは、 便宜上 「PMM」 と表記する場合があることに留意されたい。
CPUモジュール 1 2と、 メモリモジュール 14との間には、 複数のバス 24 — 1、 24— 2、 24— 3、 24 -4, …とが設けられている。 したがって、 C PUモジュール 12とメモリモジュール 14との間、 および、 メモリモジュール 間は、 上記バスによりデータ等の授受が可能となっている。 また、 CPU 12と、 メモリモジュール 14との間には、 制御信号ライン 25が設けられ、 CPU 12 から発せられるィンストラクションなどが、 全てのメモリモジュール 14に伝達 されるようになつている。
さらに、 CPU 12と、 他の構成要素 (たとえば、 固定記憶装置 16、 入力装 置 18など) との間には、 ローカルバス 26が配設されており、 これらの間でも データ等の授受が可能となっている。 CPU 12は、 固定記憶装置 16に記憶さ れ、 或いは、 バス 26上に接続された RAMのような他の記憶装置 (図示せず) に記憶されたプログラムを読み出し、 このプログラムにしたがって、 以下に示す メモリモジュール 14へのィンス トラクシヨンの送出を含むデータの授受のほか、 スィッチ 28、 30の制御等を実行する。 また、 CPU 12は、 プログラムにし たがって、 レガシーメモリ 22に記憶された種々の形式のデータを受け入れて、 この形式のデータを、 CPU 12、 メモリモジュール 14、 バス 24からなる系 にて処理可能な一連のデータ (配列) に変換し、 これらを、 各メモリモジュール 14に記憶させることもできる。
図 2は、 各メモリモジュール 14の概略を示すプロックダイヤグラムである。 図 2に示すように、 メモリモジュール 14は、 CPUモジュール 12から与えら れるクロックなど同期信号を受け入れるクロックバッファ 32と、 データを記憶 する RAMコア 34と、 後述する空間 I Dやデータの要素番号等を把握し、 CP U 12からのィンス トラクシヨンなどを受理した場合に、 空間 I Dや要素番号に 基づき、 RAMコア 34へのデータ書き込みや RAMコアからのデータ読み出し を制御する MPU36と、 バスの何れかからのデータを受け入れて、 ; AMコア 34に供給し、 および/または、 RAMコア 34からのデ一夕を何れかのバスに 送出する I/O 38とを有している。 この実施の形態において、 メモリモジユー ル 14は、 制御信号ライン 25を介して、 CPUからのインストラクションを受 け入れ、 MPU36が、 このインストラクションに応答して、 RAMコア 34の データを読み出し、 RAMコア 34にデータを書き込み、 或いは、 データに所定 の処理を施すことができるようになつている。 また、 R A Mコア 3 4へのデ一夕 アクセスや、 I / Oを介してデ一夕入力およびデータ出力は、 クロックバッファ 3 2に与えられるクロックなどの同期信号に基づき実行される。
図 1および図 2から明らかなように、 本発明において、 コンピュータシステム 1 0は、 メモリ共有型のシステムであると考えることができる。 また、 後述する ように、 制御信号ライン 2 5を介して、 各メモリモジュール 1 4にインストラク シヨンを与えることにより、 各メモリモジュール 1 4が並列的に処理を実行する。 また、 バスへのデ一夕出力およびバスからのデータ入力などが、 所定の同期信号 に基づき実行される。 したがって、 このコンピュータシステム 1 0は、 S I M D の形態をなしていると考えることができる。
[実現される機能の概略]
このような構成を有するコンピュータシステム 1 0にっきより詳細な説明を加 える前に、 本コンピュータシステム 1 0により実現される機能の概略を簡単に説 明する。
( 1 ) 多空間メモリ
本明細書において、 多空間メモリとは、 メモリ空間を、 空間 I Dとアドレスと に基づきアクセスするために割り当てられたメモリ空間をいう。 これにより、 一 連のデータが多数のプロセッサに分掌されていても、 各プロセッサが、 これを確 実に分離、 認識することができる。
従来のメモリ空間においては、 プロセス毎に個別の領域を割り当てることはあ つても、 一連の変数 (配列、 構造体など) 毎に目盛り空間を割り当てることは行 われてこなかった。 したがって、 以下、 このような従来のメモリ空間を 「単一メ モリ空間」 と称する。 単一メモリ空間のシステムにおいては、 アドレスのみを用 いてデータにアクセスしているため、 関連を有する一連のデータを分離したり、 認識することができなかった。 このため、 実際には並列処理が可能であっても、 その可否を判断できない場合が多かった。 また、 ある単一メモリ空間に、 新たな 一連のデ一夕を収容させる場合に、 当該一連のデータの収容場所を確保するため に、 ガーベージコレクションを実行する必要があった。 これに対して、 本発明においては、 メモリ空間に、 空間 I Dを導入し、 一連の デ一夕について同一の I Dを付与している。 また、 メモリモジュール 1 4におい て、 自身の R A Mコア 3 4に保持されているデ一夕に関する空間 I Dを把握し、 これにより、 各メモリモジュール 1 4自体が、 現在アクセスされているデータの 空間 I Dを参照することにより、 自己の作動の是非を決定することができる。 ま た、 各メモリモジュールが空間 I Dと関連付けて、 一連のデータの全部或いは一 部を保持できるため、 ある一連のデータを、 複数のメモリモジュール 1 4に分割 して記憶させることができ、 これによりガーベージコレクションを不要にするこ とができる。
たとえば、 図 3に示すように、 単一メモリ空間において、 "A " という一連の データ、 " B " という一連のデータ、 …が収容されている場合を考える。 たとえ ば、 ここで、 全メモリサイズが 3 2ワードで、 上記一連のデータのサイズの総和 が 3 0ワードであると仮定する。 これら一連のデ一夕は、 空間中に点在している ため、 未使用のメモリサイズは、 1 2ワードであるにもかかわらず、 実際に格納 できる一連のデータのサイズは 3ワードに限定される。 このため、 3ワードを超 えたサイズを有する新たな一連のデータを収容すべき場合には、 ガーべ一ジコレ クシヨンを実行しなければならない。 その一方、 図 4に示すように、 本発明にお いては、 一連のデ一夕の各々に、 空間 I Dが付与されている。 これらは、 空間 I Dと関連付けられて、 1以上のメモリモジュール 1 4に記憶される。 したがって、 未使用のサイズと収容可能なサイズとを一致させることが可能となる。
( 2 ) メモリモジュール
また、 本発明においては、 各メモリモジュール 1 4が、 M P U 3 6を有し、 上 記空間 I Dのほか、 自己が保持する一連のデータの各々の要素番号を把握してい る。 したがって、 C P U 1 2からのインス トラクションを受理した後、 M P U 3 6が、 インストラクションにしたがってアクセスすべきデ一夕が、 自己の R AM コア 3 4中に保持されているものか否かを判断して、 アクセスに必要の是非を決 定することができる。 さらに、 各メモリモジュール 1 4が、 自己の R A Mコア 3 4に格納されている配列要素の添え字の範囲から、 S I M Dでのィンス トラクシ ヨンにおける暗黙の処理の分担範囲を決定することが可能である。
また、 本発明においては、 メモリモジュール 14が、 アドレスリマッピングを 実行できるようになつている。 たとえば、 図 5に示すように、 ある配列の所定の 位置に特定の要素を挿入する場合、 その他、 所定の位置の要素を削除し、 或いは、 配列の末尾に所定の要素を追加する場合にも、 本実施の形態においては、 当該配 列に関連する要素を保持しているメモリモジュールの各々において、 MPU 36 が、 アドレスリマッピングを実行することにより、 並列的かつ高速に、 これらを 実現することができる。 さらに、 図 6に示すように、 配列の要素 (値) に修飾を 与える場合 (たとえば、 各値に 「 1」 を加える場合) にも、 関連する配列の要素 を保持するメモリモジュールの各々において、 MPU 36が、 並列的かつ高速に、 必要な処理を行うことができる。
また、 メモリモジュール 14においては、 MPU36力、 RAMコア 34にて 記憶すべきデ一夕の各々のサイズを把握し、 圧縮した形態にてこれらを記憶する ことができる。 たとえば、 あるメモリモジュール 14にて、 整数値のデ一夕を保 持すべき場合に、 実際のデータ値が "0" ないし "3" までの値しか取り得ない 場合には、 MPU36は、 各デ一夕のために 2ビッ トのみを用意する。 CPU 1 2との間では、 1つの整数を表現するために 32ビッ トを使用していた場合には、 メモリモジュール 14と C P U 1 2との間での通信のために、 MPU36が、 デ 一夕形式を変更して、 CPU 1 2との授受をなせば良い。 これにより、 RAMコ ァ 34をより無駄なく利用することが可能となる。 また、 文字列のような長さの 異なるデータについても、 同様にデータ長を変更して記憶することができるよう になっている。
さらに、 メモリモジュール 14においては、 所定の空間 I Dに関連付けられた データや、 所定の範囲の要素番号を付されたデ一夕に、 特定の値 (たとえば、 「0」 ) をセッ 卜することができるようになつている。 これにより、 メモリモジ ユール 14内で、 高速に初期化の処理を実行することが可能となる。 また、 メモ リモジュール 14においては、 ある特定のデ一夕 (配列) 中の値を検索すること や、 添字の範囲をチェックすることが可能である。 (3) 組み替え可能バス
本発明においては、 CPU 12が、 スイッチ 28— 1、 28— 2、 …およびス イッチ 30— 1、 30— 2、 …を選択的にオン/オフして、 データの授受をなす べきメモリモジュール 14を指定することにより、 パイプライン処理を実現して いる。 たとえば、 図 7に示すように、 あるメモリモジュール 14一 iから出力さ れたデ一夕を、 他のメモリモジュール 14— jに与え、 かつ、 当該他のメモリモ ジュール 14— jから出力されたデータを、 さらに他のメモリモジュール 14 - kに伝達すべき場合には、 CPU 12は、 バス 24— mを、 メモリモジュール 1 4— i、 14一 jのために割り当て、 かつ、 バス 24— nを、 メモリモジュール 14 - 14— kのために割り当てるように、 各スィッチの状態を設定する。 さらに、 これらパイプライン処理は、 単一のメモリモジュール間の接続により 実現される場合だけでなく、 複数の一連のメモリモジュール (メモリモジュール 群) の間の接続により実現することも可能である。 達成しょうとする処理に応じ て、 各メモリモジュール間をつなぎ替え、 各接続経路毎に、 定められた種類のデ —夕を定められた順序にて一方向に連続転送することで、 バスの能力を 100% 近く使用できるように、 通信をスケジュール化することができる。 これにより、 分散メモリ型の並列処理システムの最大の問題であった、 プロセッサ間通信のパ フォ一マンスの低さを、 解消することができる。
このように構成されたコンビユー夕システム 10において、 多空間メモリの具 体的構成および多空間メモリにおけるシステムの作動につき説明を加える。
[多空間メモリ]
図 8は、 多空間メモリの下での、 メモリモジュール 14の構造を説明するため の図である。 図 8 (a) に示すように、 メモリモジュール 14中の RAMコア 3 4には、 空間 I D管理テーブルが設けられる。 これにより、 メモリモジュール 1 4の MPU36は、 自己が保持するデータの空間 I D等必要な情報を把握するこ とが可能となる。
図 8 (b) に示すように、 空間 I D管理テーブルには、 自己が保持するデータ 群ごとの、 空間 ID、 CPUの管理の下での、 データ群の論理閧始アドレス、 デ 一夕群が割り付けられた領域のサイズ、 RAMコア 34中の物理開始ァドレス、 当該空間 I Dを有する一連のデータの全サイズ、 および、 アクセス制限を示すァ クセス制限フラグが格納されている。 アクセス制限フラグは、 この実施の形態に おいては、 読み出しのみ可能 (R) 、 書き込みのみ可能 (R) 、 読み書き可能 (RW) の 3つの状態を示すことができるようになつている。
メモリモジュール 14の MPU 36は、 ある空間 I Dを有するデ一夕群が与え られた際に、 RAMコア 34中に当該データ群を収容すべき、 1以上の領域を見 出して、 当該領域にデータ群をそのまま、 或いは、 2以上に分割して収容する。 この際に、 与えられた空間 ID、 論理開始アドレス、 全サイズ、 アクセス制限フ ラグとともに、 実際にデータを収容した RAMコア中の論理開始アドレスや、 割 り付け領域サイズも、 空間 I D管理テーブルに記憶される。 図 8 ( c) は、 図 8 (b) による空間 I D管理テ一ブルにしたがった RAMコア 36中のデ一夕を示 す図である。
[メモリアクセスの概略説明]
このように構成されたメモリモジュール 14へのアクセスにっき以下に説明を 加える。 図 9に示すように、 まず、 C PU 12が、 空間 I Dおよび論理アドレス、 並びに、 必要なインス トラクション (たとえば、 データの書き込みや読み出し) を、 制御信号ライン 25を介して、 全てのメモリモジュール 14に伝達する。 各 メモリモジュール 14においては、 これに応答して、 MPU 36に設けられた空 間コンパレー夕 52が、 空間 I Dと、 自己の空間 I D管理テーブル上に保持され ている空間 I Dとを比較して、 同一のものを、 自己が保持しているかを判断し、 また、 アドレスコンパレー夕 54が、 論理アドレスについて、 同様の判断を行う。 次いで、 メモリモジュール 14の MPU36が、 自己の: RAMコア 34に、 イン ストラクシヨンによる処理対象となるデ一夕が保持されていると判断した場合に は、 アドレスカリキユレ一夕 56が、 空間 I D管理テーブルを参照して、 RAM コア 34中の物理ァドレスを算出し、 処理対象となるデ一夕を特定する。
このようにして、 データが特定された後に、 MPU36は、 CPU 12から与 えられたインス トラクションに応じた処理 (たとえば、 データの書き込みや読み 出し) を実行し、 必要な場合には、 データを CPU 12に伝達する (図 9 (c) 参照) 。
[多空間メモリのより具体的な動作:配列中の要素の削除等]
たとえば、 ある空間 I Dをもつ一連のデ一夕 (以下、 これを場合によって 「配 列」 と称する。 ) が、 1以上のメモリモジュール 14に収容された状態から、 特 定の要素が削除された状態までの一連の動作につき以下に説明する。
あるメモリモジュール 14一 iにおいて、 空間 I D 「010」 に属するデ一夕 群が、 図 10 (a) に示すように格納され、 多のメモリモジュール 14— jにお いて、 空間 ID 「010」 に属するデータ群が、 図 10 (b) に示すように格納 されている場合を考える。 たとえば、 メモリモジュール 14— iにおいては、 論 理ァドレス 「0」 から 「59」 までのデ一夕が、 その; AMコアの物理ァドレス 「100」 から記憶されていることがわかる。 この場合に、 みかけの配列は、 図 10 (c) に示すようなものとなる。
このように複数のメモリモジュールに、 ある配列が格納されている場合に、 特 定の要素を削除する際の処理につき以下に述べる。 CPU 12から、 各メモリモ ジュール 14— 1、 14— 2、 …に、 制御信号ライ ン 25を介して、 空間 I D 「010」 の要素 「50~59」 を削除するといぅィンス トラクションが発せら れた場合を考える。 図 1 1および図 13は、 ある空間 I D中の所定の範囲の要素 を削除するといぅィンストラクシヨンを受理した各メモリモジュールにて実行さ れる処理を示すフローチャートである。
各メモリモジュールの MP U 36は、 制御信号ライン 25を介して与えられた インストラクションを受理して、 その内容を解釈し (ステップ 1 101 ) 、 イン ストラクシヨン中の 「空間 I D」 を調べ (ステップ 1 102) 、 自己の RAMコ ァ 34が保持するデータの空間 I Dに関連しているか否かを判断する (ステップ 1 103 ) 。 ステップ 1 103にてノー (No) と判断された場合には、 処理を終 了し、 その一方、 イエス (Yes) と判断された場合には、 MPU36は、 空間 I D管理テーブルを参照して、 当該空間 I Dに関するデータ群が書き込み可能な状 態になっているか、 或いは、 削除要求のあった範囲のサイズが、 全サイズよりも 小さいか否かなどを判断する (ステップ 1 104) 。 チェックによって異常があ ると判断された場合 (ステップ 1 105でイエス(Yes)) には、 MPU36は、 制御信号ライン 25を介してエラーが生じたことを通知する。 その一方、 異常が ない場合には、 MPU36は、 インス トラクションにより削除を要求された範囲 と、 自己の RAMコア 34にて保持する要素の範囲とを比較し (ステップ 1 10 7) 、 その比較結果によって (ステップ 1108) 、 種々の処理を実行する。 まず、 削除要求のあった範囲が、 自己の保持する要素の範囲よりも後ろである 場合 (図 1 1の 「A」 および図 12 (a) 参照) には、 MPU36は何ら処理を 実行しない (ステップ 1 109参照) 。 削除要求のあった範囲が、 自己の保持す る要素の後方に重なって位置している場合 (図 1 1の 「B」 および図 12 (b) 参照) には、 MPU36は、 割り付け領域サイズを更新する (ステップ 1 1 1 0) 。 すなわち、 削除要求範囲の先頭 (矢印 1201参照) から、 自己の: AM コア 34にて保持する要素の範囲の末尾 (矢印 1202参照) までがガーベージ となるように、 割り付け領域サイズが変更される。
その一方、 削除要求のあった範囲が、 自己の保持する要素の範囲よりも前方で ある場合 (図 1 1の 「C」 および図 12 (c) 参照) には、 MPU 36は、 論理 開始アドレスを、 削除要求のあったサイズ分だけ減じるように、 論理開始アドレ スを更新する (ステップ 1 1 1 1) 。 さらに、 削除要求のあった範囲が、 自己の 保持する要素の範囲よりも前方で、 かつ、 一部だけ重なる場合 (図 11の 「D」 および図 12 (d) 参照) には、 MPU36は、 論理開始アドレスを、 削除要求 のあった範囲の先頭の値に変更するとともに、 物理開始アドレスを、 削除要求の あった範囲の末尾の値 「+ 1」 に対応する物理アドレスに変更する (ステップ 1
1 12) 。 次いで、 MPU36は、 割り付け領域サイズを更新する (ステップ 1
113) 。
また、 削除要求のあった範囲が、 自己の保持する要素の範囲を包含する場合 (図 1 1の 「E」 および図 12 (e) 参照) には、 MPU 36は、 当該空間 I D に関する種々のデ一夕を、 空間 I D管理テーブルから削除する (図 13のステツ プ 1 1 14) 。 最後に、 削除要求のあった範囲が、 自己の保持する要素の範囲に 包含される場合 (図 1 1の 「F」 および図 12 (f) 参照) には、 空間 ID管理 テーブルを二つに分割して、 削除範囲より前方に関する種々のデータと、 削除範 囲より後方に関する種々のデ一夕に関するものを生成する (ステップ 1 1 15) c 或いは、 MPU36は、 自己の RAM 34に関して、 ガベージコレクションを時 刻しても良い。
このようにして、 C P U 12からの単一命令 (ある空間 I Dの削除命令) に応 答して、 各メモリモジュール 14が動作して、 所定のメモリモジュールにて必要 な処理が並列的に実行される。
次に、 ある空間 I Dを有する配列の末尾に、 ある要素を追加する場合につき簡 単に説明する。 図 14は、 ある空間 I Dの配列の末尾に要素を追加するといぅィ ンストラクションを受理した各メモリモジュールにて実行される処理を示すフロ —チヤ一卜である。 図 14のステップ 1401〜ステップ 1406は、 図 1 1の ステップ 1 101〜ステップ 1 106に対応する。 次いで、 各メモリモジュール 14の MPU36は、 追加すべき要素を、 自己の RAMコア 34に記憶すべきか 否かを判断する (ステップ 1407) 。 これは、 MPU36が、 自己の空間 ID 管理テーブルを参照することにより実現できる。 ステップ 1407にてイエス (Yes)と判断された場合には、 空間 ID管理テーブル中の必要な値を更新し (た とえば、 割り付け領域サイズを、 追加する要素数に応じて変更する) 、 次いで、 RAMセル中の所定の領域に、 追加すべき要素を書き込む (ステップ 1409 ) 。 或いは、 空間 I D管理テ一ブルの種々の値を生成して、 対応する RAMセル中の 領域に、 追加すべき要素が書き込まれても良い。
次いで、 MPU36は、 空間 I D管理テーブル中の当該空間 I Dに関連する 「全サイズ」 の値を更新する (ステップ 1410) 。 ステップ 1407において ノ一(No)と判断された場合にも、 空間 I D管理テーブル中の関連する 「全サイ ズ」 の値が更新される。
配列中の任意の位置に要素を追加する場合にも、 削除要求と略同等の処理が、 各メモリモジュール 14にて実行される。
[多空間メモリのより具体的な動作 :配列の結合および分割] 次に、 図 15 (a) に示すように、 複数の配列を結合したり、 或いは、 図 15 (b) に示すように、 単一の配列を複数の配列に分割する場合につき説明を加え る。 本実施の形態にかかるコンピュータシステム 10においては、 ある空間 ID (図 15 (a) においては空間 ID 「100」 ) を有する配列、 および/または、 他の空間 ID (図 15 (b) においては空間 ID 「100」 ) を有する配列が、 単一のメモリモジュールの RAMコアに収容されていても良いし、 或いは、 複数 のメモリモジュールの RAMコアに収容されていても良い。
図 16は、 空間 I D 「10」 を有する配列および空間 I D 「 1 1」 を有する配 列、 並びに、 これらがメモリモジュール中に収容された状態を示す図である。 図 16 (a) においては、 その空間 IDが 「10」 であり、 かつ、 各要素のサイズ が 10ヮードである配列 1501が示されている。 この配列 1501中の要素は、 メモリモジュール 14— 1ないし 14— Xに収容されている。 また、 図 16 (b) においては、 その空間 IDが 「1 1」 であり、 かつ、 各要素のサイズが 1 0ヮードである配列 1510が示されている。 この配列 1510の要素も、 メモ リモジュール 14一 1ないし 14—Xに収容されている。
CPU 12が、 制御信号ライン 25を介して、 「空間 I D 「10」 の配列と空 間 ID 「1 1」 の配列とを結合する」 旨のインストラクシヨンを発すると、 各メ モリモジュール 14は、 これを受理して、 自己の保持しているデータの空間 I D に関するインストラクションであるか否かを判断する。 これらの処理は、 図 11 のステップ 1101ないしステップ 1 106と略同様である。
次いで、 自己の保持しているデ一夕の空間 I Dが、 インストラクションに関連 している場合には、 メモリモジュールの MPUは、 以下の手順にしたがって、 配 列の結合を実現する。
上記図 16に示す場合に、 関連する各メモリモジュール 14は、 空間 ID 「1 0」 および空間 ID 「 1 1」 の双方の要素を保持している場合に、 空間 ID 「1 1」 に関する空間 I D管理テーブルの値を更新する。 より具体的には、 空間 ID 「10j に関する 「全サイズ」 の値を参照して、 その論理開始アドレスを再度算 出する (たとえば、 図 17の符号 1701、 1702参照) 。 また、 関連する各 メモリモジュールは、 空間 ID管理テーブル中の 「全サイズ」 の値を、 二つの配 列をくみ合わせたサイズに対応するものに更新する (たとえば、 図 17の符号 1 703参照) 。 図 17は、 このようにして得られた配列 1710、 および、 各メ モリモジュール 14— 1〜 14— Xにおける空間 I D管理テーブル (たとえば、 符号 1711、 1712参照) を示す図である。
図 18は、 空間 ID 「10」 を有する配列を、 空間 ID 「10」 を有する配列 と、 空間 I D 「1 1」 を有する配列に分割する一例を示す図である。 図 18 (a) に示す、 空間 ID 「10」 を有する配列の分解点を定め、 分解点より前方 に位置する要素を空間 ID 「 10」 の配列とするとともに、 分解点より後方に位 置する要素を空間 ID 「1 1」 の配列とする。
この場合にも、 C PU 12が、 制御信号ライン 25を介して、 「空間 ID 「1 0」 の配列を、 分解点を境にして、 空間 ID 「10」 の配列と空間 ID 「1 1」 の配列とに分解する」 旨のインス トラクションを発すると、 各メモリモジュール 14は、 図 1 1のステツプ 1 101ないしステツプ 1 106に略対応する処理を 実行し、 メモリモジュールのうち、 インストラクションに関連するもの (図 18 の例では、 メモリモジュール 14— 1〜 14—X) が、 所定の処理を実行する。 たとえば、 MPU36は、 分解点より後方に位置する要素を収容している場合に、 空間 ID 「01 1」 に関する空間 ID管理テーブル中の種々の値を作成するとと もに、 空間 ID 「010」 に関する空間管理 I Dテーブルのうち、 全サイズに関 する値を更新する。 また、 分解点より前方に位置する要素のみを収容している場 合にも、 メモリモジュールの MP U 36は、 空間 ID 「010」 に関する空間管 理 IDテーブルのうち、 全サイズに関する値を更新する。 図 19は、 このように して得られた配列 1901、 1902、 および、 各メモリモジュール 14— 1〜 14— Xにおける空間 I D管理テーブル (たとえば、 符号 19 1 1、 1912お よび 1913参照) を示す図である。
[多空間メモリのより具体的な動作:パラレルコピー]
次に、 多空間メモリの下で、 場合によっては組み替え可能バスを利用したパラ レルコピーにつき、 簡単に説明を加える。 たとえば、 C P U 1 2からの単一のインストラクションにしたがって、 図 2 0 に示すように、 一方のメモリモジュール群 1 4 0から、 他のメモリモジュール群 1 4 1へのデータのパラレルコピーを実現することができる。 パラレルコピーに は以下の態様が考えられる。
( 1 ) 一方のメモリモジュール群 1 4 0には単一のメモリモジュールが含まれ、 他方のメモリモジュール群には、 複数のメモリモジュールが含まれる場合。
( 2 ) —方のメモリモジュール群 1 4 0に、 複数のメモリモジュールが含まれ、 他方のメモリモジュール群にも、 複数のメモリモジュールが含まれる場合。
前者においては、 コピー元の要素を収容しているメモリモジュール 1 4の M P U 3 6は、 C P U 1 2から制御信号ライン 2 5を介して与えられたインス トラク シヨン (たとえば、 ある空間 I Dを有する配列中の所定の要素を、 空間 I D 8、 9、 1 0の配列としてコピーせよという指令) を受理して、 R A Mコア 3 4から 指定された要素を所定のバス上に出力する。 その一方、 コピ一先となる M P U 3 6も、 同一のインス トラクションの受理に応答して、 バスから出力された要素を 受理して、 これを R A Mコア 3 4の所定の領域に記憶するとともに、 自己の空間 I D管理テ一ブルを更新する。
後者においては、 複数のバスを利用して、 一方のメモリモジュール群 1 4 0中 のメモリモジュールからのデ一夕を、 それそれ、 他方のメモリモジュール群 1 4 1の対応するメモリモジュールに与えることが可能である。 この場合には、 C P U 1 2は、 スィヅチ 2 8およびスィッチ 3 0を、 所定のメモリモジュール間のデ —夕の授受が可能なように制御すれば良い。
[多空間メモリのより具体的な動作 :隠れ更新など]
本実施の形態にかかる多空間メモリを用いて、 添字変換により、 入力された添 え字を変換して、 変換済みの添え字によって、 配列を指定し、 さらに、 配列の要 素に値を修飾することができる。 ある処理が終了して、 コミッ トすることにより、 添字変換や値修飾が不要となったときに、 各メモリモジュールの M P Uは、 当該 配列に関する空間 I D管理テーブルを書きかえてリマツビングを実行することに より、 瞬時に添字変換を解消することができる。 その一方、 値修飾自体は、 実際 の R A Mコアに記憶された要素を更新する必要があるため、 時間を要する。 した がって、 各メモリモジュールにおいて、 変換済フラグを設け、 値修飾が反映され た要素が、 実際に R A Mコアに記憶した後に、 当該要素に対応するフラグを 「 1」 にセッ トされる。 このようにすれば、 あるプロセスにおいて、 変換フラグ を参照して、 これが 「 1」 である場合には、 値修飾を経る必要がなく、 その一方、 変換フラグが 「0」 であるバイには、 値修飾を経る必要があることを容易に知る ことができる。 したがって、 実質的にコミッ トを瞬時に実現することができる。 さらに、 本実施の形態にかかる多空間メモリを用いれば、 図 2 1に示すように、 ネスト構造の値修飾についても、 変換済フラグを設け、 この変換済フラグを参照 することにより、 値修飾を経る必要の有無を知ることが可能となる。
[多空間メモリおよび組み替え可能バスの利用 : ソート (その 1 ) ]
本実施の形態においては、 多空間メモリおよび組み替え可能バスを利用するこ とにより、 C P U 1 2からの単一のインス トラクションに基づき、 並列的にソ一 ト処理を実行することが可能となる。 以下、 本実施の形態における並列的なソ一 ト処理につき説明を加える。
図 2 3および図 2 4は、 本実施の形態にかかるソート処理の流れを説明するた めの図である。 このソート処理では、 大きく分けて、 図 2 3に示す処理 (存在数 の確定および累計の算出) と、 図 2 4に示す処理 (レコード番号の転送) とに分 けて考えることができる。
この実施の形態にかかるソート処理を実現するために、 本実施の形態において は、 レコード番号を格納したレコード番号配列、 ある項目に関する実際の項目値 を格納した値リスト、 および、 レコード番号配列からの値 (レコード番号) を入 力として、 対応する値リス卜の格納位置を示すボイン夕値を出力するように構成 された値リス トへのポインタとを利用している。 すなわち、 レコード番号から、 対応する位置の値リストへのポインタ値が参照され、 そのポインタ値にしたがつ て、 実際の項目値が指定されるようになっている (図 2 5参照) 。
まず、 C P U 1 2が、 必要なィンス トラクシヨンを、 制御信号ライン 2 5を介 して、 各メモリモジュール 1 4に与えると、 各メモリモジュールにて、 図 1 1の ステップ 1 1 0 1ないしステップ 1 1 0 6に略同等の処理が実行される。 また、 関連するメモリモジュールのうち、 レコード番号を格納したメモリモジュールか らの通知にしたがって、 C P U 1 2は、 レコード番号を格納した一連のメモリモ ジュール (第 1のメモリモジュール群 2 3 0 1 ) の出力を、 あるバス ( 「第 1の バス」 と称する) に接続するように、 スィッチ 2 8、 3 0を制御する。
次いで、 値リストへのボイン夕配列を格納したメモリモジュールからの通知に したがって、 C P U 1 2は、 上記値リストへのポインタ配列を格納した一連のメ モリモジュール (第 2のメモリモジュール群 2 3 0 2 ) の出力を、 あるバス ( 「第 2のバス」 と称する) に接続するように、 スィッチ 2 8、 3 0を制御する。 さらに、 他の一連のメモリモジュール (第 3のメモリモジュール群 2 3 0 3 ) においては、 値リス トへのポインタと同一サイズ (同じ要素数) の 「存在数配 列」 のための領域が確保され、 かつ、 各要素が 「0」 に初期化される。 さらに、 第 3のメモリモジュール群の入力を、 上記第 2のバスと接続する。
次いで、 レコード番号配列の先頭から順に、 レコード番号が第 1のバスに送出 される。 これは、 第 1のメモリモジュール群 2 3 0 1において、 各メモリモジュ —ルの M P U 3 6が、 空間 I D管理テーブルを参照して、 自己が第 1のバスにデ —夕を出力するタイミングを検出して、 所定のレコード番号を送出することによ り実現される。
レコード番号は、 第 1のバスを介して、 第 2のメモリモジュール群 2 3 0 2を 構成するメモリモジュールの各々に与えられる。 各メモリモジュールの M P U 3 6は、 自己の空間 I D管理テーブルを参照して、 自己が管理する値リス トへのポ ィン夕配列に関連するレコード番号が入力されたことを検出し、 当該入力に対応 するボイン夕値を第 2のバスに出力する。
ポインタ値は、 第 2のバスを介して、 第 3のメモリのジュール群を構成するメ モリモジュールの各々に与えられる。 各メモリモジュールの M P U 3 6は、 自己 の空間 I D管理テーブルを参照して、 自己が管理する値リス 卜のポインタ配列に 関連するポインタ値が与えられたことを検出し、 存在数配列において、 ポインタ 値に対応する位置の要素をィンクリメントする。 この動作を繰り返すことにより、 項目値が何度レコード番号により指されているか (ポイントされているか) を知 ることができる。
上記存在数配列のための一連の処理が終了すると、 ソートされたレコード番号 を格納する配列を作成するために、 一連のメモリモジュールに、 一定の領域が確 保される。 この一連のメモリモジュールを、 第 4のメモリモジュール群 2 3 0 4 と称する。 C P U 1 2は、 先の処理に利用した第 3のメモリモジュール群の出力 と、 第 4のメモリモジュール群の入力とを、 バス ( 「第 3のバス」 と称する) を 介して接続するように、 スィッチ 2 8、 3 0を制御する。
このような準備が終了した後に、 ソート処理が実行される。 より具体的には、 レコード番号配列の先頭から、 レコード番号が第 1のバスを介して、 第 2のメモ リモジュール群を構成するメモリモジュールに与えられる。 第 2のメモリモジュ —ル群中の所定のメモリモジュールにおいては、 M P U 3 6がレコ一ド番号の受 理に応答して、 ポインタ値を、 第 2のバスを介して、 第 3のモジュール群に伝達 する。
次いで、 第 3のメモリモジュール群のうち、 所定のメモリモジュールにおいて、 M P U 3 6が、 ポインタ値に基づき、 関連する存在数配列を参照して、 レコード 番号の格納位置を決定する。 これにより、 レコード番号およびその格納位置が、 が当該メモリモジュールから、 第 3のバスに送出される。 したがって、 第 4のメ モリモジュール群の所定のメモリモジュールにおいて、 M P U 3 6が、 レコード 番号を、 所定の格納位置に配置する。 この処理を繰り返すことにより、 第 4のメ モリモジュール群に、 ソー卜されたレコード番号の配列 (図 2 4の符号 2 4 1
0 ) を作成することができる。
たとえば、 図 2 3に示す処理を、 パイプライン処理にすることができる。 すな わち、 第 1のバスにおいて、 あるレコード番号 「p」 が伝達されている際に、 第 2のバスにおいては、 レコード番号 「p— 1」 に関するポインタ値 「P ( p—
1 ) 」 が伝達され得る。 また、 同様に、 図 2 4に示す処理も、 パイプライン処理 にすることが可能である。 この場合にも、 第 1のバスにおいて、 あるレコード番 号 「P」 が伝達されている際に、 第 2のバスにおいては、 レコード番号 「 p— 1」 に関するボイン夕値 「P (P— 1 ) 」 が伝達され得る。 さらに、 同じ夕イミ ングで、 第 3のバスにおいては、 レコード番号 「p— 1」 に関する格納位置が伝 達され得る。
このようなパイプライン処理の処理時間につき、 以下のような結果が得られた ( まず、 図 23の処理に関して、 第 1のバスないし第 4のバスが、 それそれ、 12 8ビッ トであり、 それそれ、 12. 8 GB/秒の転送能力があると考え、 また、 レコード番号やポインタ値が、 それそれ、 32ビッ ト整数であると仮定した。 い ま、 レコード数が 1 0億個の場合に、 上記処理では、 40億バイ トの転送が発生 するが、 パイプライン処理を実行するため、 4 GZ1 2. 8 G= 0. 3 1 25秒 にて完了することが分かった。
同様に、 図 24の処理に関して、 同様の転送能力およびデータサイズを仮定す ると、 レコード数が 1 0億個の場合に、 80億バイ トの転送が発生するが、 本実 施の形態によれば、 パイプライン処理の実行により、 8 G/1 2. 8 G = 0. 6 25秒にて処理を完了することができる。
[多空間メモリおよび組み替え可能バスの利用 : ソート (その 2) ]
次に、 他の手法によるソート処理につき簡単に説明を加える。 このソート処理 においても、 まず、 レコード番号配列を格納したメモリモジュールからなる第 1 のメモリモジュール群 (図 2 6の符号 26 0 1参照) の出力と、 第 1のバスとが 接続され、 かつ、 値リストへのポインタ配列を格納したメモリモジュールからな る第 2のメモリモジュール群 2602の入力が、 第 1のバスと接続される。 これ により、 第 1のメモリモジュール群 2 60 1の出力が、 第 1のバスを介して、 第 2のメモリモジュール群 2602に伝達可能となる。
その一方、 第 2のメモリモジュール群 2 602と、 同一の数の空間 I Dを有す る配列の領域が、 第 3のメモリモジュール群 2603に確保されるとともに、 第 2のメモリモジュール群 2602の出力と、 第 3のメモリモジュール群の入力と が、 第 2のバスを介して接続される。
次いで、 第 1のメモリモジュール群 26 0 1において、 あるレコード番号を収 容するメモリモジュールの MPU 36が、 当該レコード番号を、 第 1のバスに送 出すると、 第 2のメモリモジュ一群 2 6 0 2の所定のメモリモジュールにおいて、 M P U 3 6がこの受理に応答して、 対応するポインタ値から、 空間 I Dを算出し、 レコード番号および空間 I Dを、 第 2のバスに送出する。
第 3のメモリモジュール群において、 当該空間 I Dおよびレコード番号に基づ き、 所定のメモリモジュール 3 6が起動し、 当該空間 I Dを有する配列の末尾に、 与えられたレコード番号を配置する。 このような処理を全てのレコード番号につ いて実行した後に、 第 3のメモリモジュール群において、 各メモリモジュールの M P U 3 6は、 自己の有する配列を結合するための処理を実行する。 このような 手法によっても、 高速なソート処理を実現することができる。
[多空間メモリおよび組み替え可能バスの利用 :検索 (その 1 ) ]
また、 本実施の形態においては、 多空間メモリおよび組み替え可能バスを利用 することにより、 C P U 1 2からの単一のインス トラクションに基づき、 並列的 に検索処理を実行することができる。
図 2 7および図 2 8は、 本実施の形態にかかる検索処理の流れを説明するため の図である。 この検索処理のために、 レコード番号配列、 値リストへのポインタ 配列、 値リストおよび後述する可否フラグ配列などが利用される。 したがって、 この例でも、 図 2 5のように、 レコード番号、 ポインタ値、 項目値の順に、 値が 参照されるようになつている。
まず、 C P U 1 2力 必要なィンストラクシヨンを、 制御信号ライン 2 5を介 して、 各メモリモジュール 1 4に与えると、 各メモリモジュールにて、 図 1 1の ステップ 1 1 0 1ないしステップ 1 1 0 6に略同等の処理が実行される。 また、 関連するメモリモジュールのうち、 値リス トを格納したメモリモジュールからの 通知にしたがって、 C P U 1 2は、 値リス トを格納した一連のメモリモジュール (第 1のメモリモジュール群 2 7 0 1 ) の出力を、 あるバス ( 「第 1のバス」 と 称する) に接続するように、 スイッチ 2 8、 3 0を制御する。 さらに、 そのよう 素数が値リス卜のものと同じである可否フラグ配列のための領域が、 一連のメモ リモジュール (第 2のメモリモジュール群 2 7 0 2 ) に確保され、 当該第 2のメ モリモジュール 2 7 0 2に属する各メモリモジュールの M P U 3 6が、 当該領域 の要素を 「0」 に初期化する。
次いで、 第 2のメモリモジュール群 2702の入力が、 第 1のバスに接続され る。 次いで、 CPU 12から与えられた検索条件にしたがって、 第 2のメモリモ ジュール群の各メモリモジュールにおいて、 MPU36が、 値リスト中の検索条 件に合致する項目値の位置を参照して、 可否フラグ配列の対応する値を 「 1」 に セッ トする。 たとえば、 検索条件が範囲であれば、 二分割法などを用いれば良い c また、 その他の条件であれば、 要素ごとにその可否を判断すれば良い。
このような処理が終了した後に、 検索が実行される。 まず、 レコード番号配列 を格納した一連のメモリモジュール (第 3のメモリモジュール群 2703) の出 力を、 第 1のバスに接続するとともに、 値リストへのポインタ配列を格納した一 連のメモリモジュール (第 4のメモリモジュール群 2704) の入力を、 第 1の バスに接続するよう、 CPU 12は、 スイ ッチ 28、 30を制御する。 また、 第 4のメモリモジュール群 2704の出力を、 第 2のメモリモジュール群 2702 の入力とを、 第 2のバスと接続するように、 CPU 1 2は、 スィッチ 28、 30 を制御する。
さらに、 レコード番号の要素数と同じ要素数を有する配列のための領域が、 一 連のメモリモジュール (第 5のメモリモジュール 2705 ) に確保され、 CPU 1 2は、 その入力と、 第 2のメモリモジュール群 2702の出力とが、 第 3のバ スを介して接続されるように、 スィッチ 28、 30を制御する。
このような処理の後に、 レコード番号配列の先頭から順に、 レコード番号が第 1のバスに送出される。 これは、 第 3のメモリモジュール群 2703において、 各メモリモジュールの MPU 36が、 空間 I D管理テーブルを参照して、 自己が 第 1のバスにデータを出力するタイミングを検出して、 所定のレコード番号を送 出することにより実現される。
レコード番号は、 第 1のバスを介して、 第 4のメモリモジュール群 2704を 構成するメモリモジュールの各々に与えられる。 各メモリモジュールの MP U 3 6は、 自己の空間 I D管理テーブルを参照して、 自己が管理する値リス トへのポ イン夕配列に関連するレコード番号が入力されたことを検出し、 受理したレコ一 ド番号および当該入力に対応するボイン夕値を第 2のバスに出力する。
ポインタ値は、 レコード番号とともに、 第 2のバスを介して、 第 3のメモリの ジュール群を構成するメモリモジュールの各々に与えられる。 各メモリモジユー ルの MPU36は、 自己の空間 I D管理テーブルを参照して、 自己が管理する可 否フラグ配列の位置と同じ位置を示すポインタ値が与えられたことを検出し、 当 該ポインタ値が示す可否フラグが、 「0」 であるか 「1」 であるかを判断する。 次いで、 可否フラグが 「 1」 の場合には、 関連するレコード番号が、 第 3のバス を介して、 第 5のメモリモジュール群 2705に与えられる。
第 5のメモリモジュール群 2705においては、 各メモリモジュールの MP U 36は、 自己の空間 I D管理テーブルを参照して、 自己が管理するヒッ ト情報格 納用配列の位置と同じ位置を示すレコード番号が与えられたことを検出し、 その 位置の要素を 「1」 にする。 このような処理を所定のレコード番号に関して繰り 返し、 ヒッ ト情報格納用配列にて 「1」 である要素を取り出すことにより、 検索 が完了する。
ソート処理と同様に、 上記検索処理でも、 図 27を参照して説明した処理、 お よび、 図 28を参照して説明した処理を、 それそれ、 パイプライン処理にて実現 することができる。 検索処理におけるパイプライン処理の処理時間につき、 以下 のような結果が得られた。
バスの転送能力、 および、 各要素のビッ ト数は、 ソート処理と同様であると考 えた。 レコード数が 10億個の場合に、 上記検索処理では、 80億バイ トの転送 が発生するが、 パイプライン処理を実行するため、 8G/12. 8G=0. 62 4秒にて完了することが分かった。
さらに、 本検索処理を用いれば、 AND、 OR或いは NO Tなどを組み合わせ た複数項目の検索を実現することもできる。 より具体的には、 各項目につき、 ヒ ッ ト情報格納用配列を作成し、 これら配列の要素間での論理演算を行えば良い。 たとえば、 二つの項目の AND或いは OR検索では、 ヒッ ト情報格納用配列の 要素の転送 ( 10億バイ ト) が行われる。 したがって、 その処理時間は、 ( 10 G/8) /12. 8G= 0, 098秒だけ必要であることが理解できる。 なお、 さらに高速化を図るために、 A N D検索の場合には、 二つの検索処理を 実行するメモリモジュール群を縦列に接続すれば良い。 また、 第 4のメモリモジ ユール群と第 2のメモリモジュール群を、 同一の複数のメモリモジュールにて構 成できるように、 配列を配置すれば、 ボトルネックを解消することができ、 これ により、 略 2倍の処理速度を得ることが可能となる。
本発明は、 以上の実施の形態に限定されることなく、 特許請求の範囲に記載さ れた発明の範囲内で、 種々の変更が可能であり、 それらも本発明の範囲内に包含 されるものであることは言うまでもない。
たとえば、 前記実施の形態においては、 本発明を、 コンピュータシステムに適 用しているがこれに限定されるものではなく、 パーソナルコンピュータなどに接 続可能なコンピュータボードに適用することもできる。 この場合には、 図 1にお いて、 C P U 1 2、 メモリユニッ ト 1 4、 バス 2 4等がボード上に搭載され、 こ れが、 本発明における情報処理ユニッ トを構成する。
また、 C P U 1 2とメモリモジュール 1 4との間、 および/または、 メモリモ ジュール 1 4間を接続するバスの組の数は、 前記実施の形態に限定されるもので はなく、 コンピュータシステムを搭載する回路基板の大きさ、 各バスのビッ ト数 などを考慮して適宜決定することができる。 また、 前記実施の形態においては、 メモリモジュールの入出力とバスとの接続を規定するためのスィヅチ 2 8と、 C P Uとメモリモジュールとの間、 メモリモジュール間で、 バスの切断することが できるスィッチ 3 0とを設けている。 スィッチ 3 0を設けることにより、 たとえ ば、 あるバス (図 1のバス 2 4— 4参照) を、 C P Uモジュール 1 2とメモリモ ジュール 1 4— 1とのデータ授受のために利用するとともに、 同時に、 メモリモ ジュール 1 4— 2とメモリモジュール 1 4一 3との間のデ一夕授受のために利用 することができる (この場合に、 スィッチ 3 0— 5をオフにすれば良い) 。 した がって、 より有効にバスを利用することが可能となっている。 しかしながら、 スの組を数を十分に大きくできる場合、 或いは、 メモリモジュールの数が比較的 少ない場合には、 スィッチ 3 0を必ずしも設けなくて良い。
また、 本明細書において、 制御信号ライン 2 5を介して、 C P U 1 2からのィ ンストラクシヨンが与えられることを記載したが、 制御信号ライン 2 5を介して、 インストラクションのほか、 クロックなど、 各メモリモジュールが同期して作動 するための種々の制御信号が与えられ、 かつ、 各メモリモジュールから C P U 1 2への所定の信号 (たとえば、 エラー信号や、 データ受理を示す信号) が与えら れていることは言うまでもない。
さらに、 本明細書において、 一つの手段の機能が、 二つ以上の物理的手段によ り実現されても、 若しくは、 二つ以上の手段の機能が、 一つの物理的手段により 実現されてもよい。
本発明によれば、 分散メモリ型において、 単一命令により種々のメモリに記憶 された配列中の要素を入出力し、 著しく高速な並列処理を実現可能なコンビユー 夕アーキテクチャを提供することが可能となる。
産業上の利用分野
本発明は、 特に、 大量のデータを管理するシステム、 たとえば、 データべ一 ス、 デ一夕ウエアハウスに利用することできる。 より具体的には、 大規模な科 学技術計算、 受発注管理や証券取引などの基幹業務管理、 事務管理に利用可能 である。

Claims

請 求 の 範 囲
1„ CPUモジュールと、 それそれが MP Uおよび RAMコアとを有する複数の メモリモジュールと、 前記 CPUとメモリモジュールとの接続、 および/または、 メモリモジュール間の接続をなす複数組のバスとを備え、 CP Uから各メモリモ ジュールの MPUに与えられるインス トラクションにより、 各メモリモジュール の MP Uが作動するように構成された並列コンビユー夕のアーキテクチャであつ て、
所定の関連を有する一連のデータに、 空間 IDが付与され、 各メモリモジュ一 ルの MP Uが、 少なくとも、 当該空間 ID、 自己が管理する一連のデ一夕の部分 に関する論理アドレス、 当該部分のサイズ、 および、 一連のデータのサイズを含 むテーブルを管理し、 かつ、
各メモリモジュールの MPUが、 受理したインストラクションに、 自己が管理 する一連のデータの部分が関与しているか否かを判断して、 RAMコアに記憶さ れたデ一夕を読み出してバスに送出し、 バスを介して与えられたデ一夕を RAM コアに書き込み、 デ一夕に必要な処理を施し、 および/または、 前記テーブルを 更新するように構成されたことを特徴とする並列コンビユー夕のアーキテクチャ。
2。 前記 MPUが、 CPUから与えられた空間 I Dを、 自己が管理する 1以上の 一連のデータの空間 I Dと比較する空間コンパレー夕と、
CPUから与えられた論理ァドレスと、 自己が管理するデータの部分の論理ァ ドレスとを比較するアドレスコンパレー夕と、
当該論理ァドレスに基づき、 自己の RAMセル上の物理ァドレスを算出するァ ドレスカリキユレ一夕とを有することを特徴とする請求項 1に記載のコンビユー 夕アーキテクチャ。
3。 前記メモリモジュールの各々が、 CPUモジュールおよび他のメモリモジュ ールとの同期をなすための同期信号を受け入れ、 かつ、
前記複数組のバスの何れかとの接続が可能な入力と、 前記複数組のバスの他の 何れかとの接続が可能な出力を備え、 少なくとも、 前記同期信号にしたがって、 前記何れかのバスと入力との接続により、 データを入力しつつ、 前記他の何れか のバスと出力との接続により、 デ一夕を出力できるように構成されたことを特徴 とする請求項 1または 2に記載のコンピュータアーキテクチャ。
4 . 前記複数組のバスの各々に、 前記 C P Uモジュールと何れかのメモリモジュ —ルの入力または出力との間、 および/または、 他の何れかのメモリモジュール の入力または出力と、 さらに他のメモリモジュールの出力または入力との間の接 続を規定するためのスィツチが設けられ、
前記スィッチの切換により、 複数組のバスの各々において、 並列的にデータの 授受が実現されることを特徴とする請求項 3に記載のコンピュータァーキテクチ ャ。
5 . 前記複数組のバスのうちの何れかである第 1のバスに、 何れかのメモリモジ ユールの出力と、 他の何れかのメモリモジュールの入力とが接続され、 かつ、 前 記複数組のバスのうち、 他の何れかである第 2のバスに、 当該他の何れかのメモ リモジュールの出力と、 さらに他の何れかのメモリモジュールの入力とが接続さ れ、 第 1のバスにおけるデータの授受と、 第 2のバスにおけるデータの授受が並 列的に進行することを特徴とする請求項 4に記載のコンピュータアーキテクチャ。
6 . 前記バスとメモリモジュールとの間の接続を繰り返して、 多段のメモリモジ ユール間の接続を形成することを特徴とする請求項 5に記載のコンビュ一夕ァー キテクチャ。
7 . 前記 M P Uが、 一連のデータ中の特定の要素を削除し、 前記一連のデータ中 に特定の要素を挿入し、 或いは、 一連のデータの末尾に特定の要素を追加するこ とを示すインストラクションを受理すると、 テ一ブルを参照して、 自己の管理す るデータの領域と、 削除、 挿入或いは追加にかかる要素の位置とを比較して、 当 該比較結果に応じて、 前記テーブルの内容を更新することを特徴とする請求項 1 ないし 6の何れか一項に記載のコンピュータアーキテクチャ。
8 . 前記 M P Uが、 与えられたインス トラクションに応答して、 一連のデータ中 の要素を特定するための添え字を変換し、 および/または、 要素に特定の修飾を 与える値変換を実行することを特徴とする請求項 1ないし 7の何れか一項に記載 のコンビユー夕アーキテクチャ。 9 CPUモジュールと、 それそれが MP Uおよび RAMコアとを有する複数の メモリモジュールと、 前記 CPUとメモリモジュールとの接続、 および/または、 メモリモジュール間の接続をなす複数組のバスとを備え、 C P Uから各メモリモ ジュールの MP Uに与えられるィンス トラクシヨンにより、 各メモリモジュール の MP Uが作動するように構成された情報処理ュニッ 卜であって、
所定の関連を有する一連のデータに、 空間 IDが付与され、 各メモリモジュ一 ルの MP Uが、 少なくとも、 当該空間 ID、 自己が管理する一連のデ一夕の部分 に関する論理アドレス、 当該部分のサイズ、 および、 一連のデ一夕のサイズを含 むテーブルを管理し、 かつ、
各メモリモジュールの MPUが、 受理したインス トラクションに、 自己が管理 する一連のデ一夕の部分が関与しているか否かを判断して、 RAMコアに記憶さ れたデ一夕を読み出してバスに送出し、 バスを介して与えられたデ一夕を RAM コアに書き込み、 デ一夕に必要な処理を施し、 および/または、 前記テーブルを 更新するように構成されたことを特徴とする情報処理ュニッ ト。
10。 前記 CPUモジュールが、 レガシーメモリ、 入力装置および表示装置を相互 接続する他のバスと連結可能に構成されたことを特徴とする請求項 9に記載の情 報処理ュニッ ト。
11。 請求項 9に記載の情報処理ユニッ トと、 C P Uモジュールと他のバスを介し て連結された 1以上のレガシ一メモリを含む記憶装置、 入力装置および表示装置 とを有することを特徴とするコンピュータシステム。
PCT/JP2000/005947 1999-09-17 2000-09-01 Architecture informatique parallele et unite de traitement de l'information au moyen de ladite architecture WO2001022229A1 (fr)

Priority Applications (4)

Application Number Priority Date Filing Date Title
DE60034065T DE60034065D1 (de) 1999-09-17 2000-09-01 Informationsverarbeitungseinheit
CA002385079A CA2385079C (en) 1999-09-17 2000-09-01 Parallel computer architecture, and information processing unit using the architecture
EP00956868A EP1244020B1 (en) 1999-09-17 2000-09-01 Information processing unit
US10/088,028 US7185179B1 (en) 1999-09-17 2000-09-01 Architecture of a parallel computer and an information processing unit using the same

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP26379399A JP4317296B2 (ja) 1999-09-17 1999-09-17 並列コンピュータのアーキテクチャおよびこのアーキテクチャを利用した情報処理ユニット
JP11/263793 1999-09-17

Publications (1)

Publication Number Publication Date
WO2001022229A1 true WO2001022229A1 (fr) 2001-03-29

Family

ID=17394340

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2000/005947 WO2001022229A1 (fr) 1999-09-17 2000-09-01 Architecture informatique parallele et unite de traitement de l'information au moyen de ladite architecture

Country Status (9)

Country Link
US (1) US7185179B1 (ja)
EP (1) EP1244020B1 (ja)
JP (1) JP4317296B2 (ja)
KR (1) KR100719872B1 (ja)
CN (1) CN100401270C (ja)
AT (1) ATE357694T1 (ja)
CA (1) CA2385079C (ja)
DE (1) DE60034065D1 (ja)
WO (1) WO2001022229A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1785862A3 (en) * 2000-02-29 2007-08-15 Fujitsu Limited Method and apparatus for pipeline processing
US7352766B2 (en) * 2002-03-12 2008-04-01 Alcatel Lucent High-speed memory having a modular structure
US7039769B2 (en) 2002-05-30 2006-05-02 International Business Machines Corporation Direct addressed shared compressed memory system
JP3826859B2 (ja) * 2002-08-19 2006-09-27 ソニー株式会社 情報処理方法とその方法を実現するプログラム及び記録媒体
US20060265379A1 (en) * 2003-04-16 2006-11-23 Turbo Data Lab Inc Information processing system and information processing method
JP4620593B2 (ja) * 2003-10-24 2011-01-26 株式会社ターボデータラボラトリー 情報処理システムおよび情報処理方法
CN100452032C (zh) * 2003-10-27 2009-01-14 特博数据实验室公司 分布式存储器类型的信息处理系统
US20080281843A1 (en) * 2003-12-25 2008-11-13 Turbo Data Laboratories, Inc. Distributed Memory Type Information Processing System
JP4559971B2 (ja) * 2004-01-29 2010-10-13 株式会社ターボデータラボラトリー 分散メモリ型情報処理システム
US20060036826A1 (en) * 2004-07-30 2006-02-16 International Business Machines Corporation System, method and storage medium for providing a bus speed multiplier
CN101495973A (zh) * 2006-06-09 2009-07-29 迅龙国际集团有限公司 N^n数据管理、访问、存储、传输、交换和检索系统(数据集中管理)
US8917165B2 (en) * 2007-03-08 2014-12-23 The Mitre Corporation RFID tag detection and re-personalization
US9665483B2 (en) * 2013-09-30 2017-05-30 Alcatel Lucent Method and apparatus for bit-interleaving
US10061590B2 (en) * 2015-01-07 2018-08-28 Micron Technology, Inc. Generating and executing a control flow
CN107408076B (zh) * 2015-04-08 2020-12-11 国立大学法人奈良先端科学技术大学院大学 数据处理装置
US20210389151A1 (en) * 2020-06-13 2021-12-16 Megan Marie Braley Micromobility navigation system with integrated responsiveness to user demographic data
WO2022047422A1 (en) * 2020-08-31 2022-03-03 Botimer Jacob Inter-layer communication techniques for memory processing unit architectures

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5456743A (en) * 1977-09-19 1979-05-08 Siemens Ag Computer system
JPS6222142A (ja) * 1985-07-19 1987-01-30 Sekisui Chem Co Ltd 記憶装置
JPS63316254A (ja) * 1987-06-19 1988-12-23 Nippon Telegr & Teleph Corp <Ntt> 並列プロセツサ
JPH0667846A (ja) * 1992-08-18 1994-03-11 Hitachi Ltd 半導体記憶装置
JPH07152640A (ja) * 1993-11-26 1995-06-16 Hitachi Ltd 分散共有メモリ方式
JPH10143489A (ja) * 1996-11-11 1998-05-29 Hitachi Ltd 情報処理システム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE37305E1 (en) * 1982-12-30 2001-07-31 International Business Machines Corporation Virtual memory address translation mechanism with controlled data persistence
GB2168182A (en) * 1984-12-05 1986-06-11 Conic Corp Data-driven processor
DE68926043T2 (de) * 1989-07-20 1996-08-22 Toshiba Kawasaki Kk Mehrprozessor-Computersystem
US5490260A (en) * 1990-12-14 1996-02-06 Ceram, Inc. Solid-state RAM data storage for virtual memory computer using fixed-sized swap pages with selective compressed/uncompressed data store according to each data size
JP3098344B2 (ja) 1992-12-18 2000-10-16 富士通株式会社 データ転送処理方法及びデータ転送処理装置
JP3604176B2 (ja) * 1994-09-14 2004-12-22 株式会社東芝 仮想空間管理方法及び分散処理システム
US6226738B1 (en) * 1997-08-01 2001-05-01 Micron Technology, Inc. Split embedded DRAM processor
JP3385353B2 (ja) 1999-01-25 2003-03-10 独立行政法人産業技術総合研究所 官能基を有する環状ケイ素化合物

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5456743A (en) * 1977-09-19 1979-05-08 Siemens Ag Computer system
JPS6222142A (ja) * 1985-07-19 1987-01-30 Sekisui Chem Co Ltd 記憶装置
JPS63316254A (ja) * 1987-06-19 1988-12-23 Nippon Telegr & Teleph Corp <Ntt> 並列プロセツサ
JPH0667846A (ja) * 1992-08-18 1994-03-11 Hitachi Ltd 半導体記憶装置
JPH07152640A (ja) * 1993-11-26 1995-06-16 Hitachi Ltd 分散共有メモリ方式
JPH10143489A (ja) * 1996-11-11 1998-05-29 Hitachi Ltd 情報処理システム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HIROTO YASUURA: "Kinou memory ni yoru chou heiretsu shori", JOHO SHORI, vol. 32, no. 12, December 1991 (1991-12-01), (TOKYO), pages 1260 - 1267, XP002934374 *

Also Published As

Publication number Publication date
US7185179B1 (en) 2007-02-27
CN1379879A (zh) 2002-11-13
CA2385079A1 (en) 2001-03-29
EP1244020A4 (en) 2003-01-15
CA2385079C (en) 2009-07-21
EP1244020A1 (en) 2002-09-25
JP4317296B2 (ja) 2009-08-19
CN100401270C (zh) 2008-07-09
KR20020064285A (ko) 2002-08-07
KR100719872B1 (ko) 2007-05-18
EP1244020B1 (en) 2007-03-21
ATE357694T1 (de) 2007-04-15
JP2001092796A (ja) 2001-04-06
DE60034065D1 (de) 2007-05-03

Similar Documents

Publication Publication Date Title
WO2001022229A1 (fr) Architecture informatique parallele et unite de traitement de l&#39;information au moyen de ladite architecture
Dennis et al. A preliminary architecture for a basic data-flow processor
US4968977A (en) Modular crossbar interconnection metwork for data transactions between system units in a multi-processor system
WO2001038967A1 (fr) Systeme de traitement de l&#39;information
US5297255A (en) Parallel computer comprised of processor elements having a local memory and an enhanced data transfer mechanism
WO2001088712A2 (en) Distributed processing multi-processor computer
JPH0668053A (ja) 並列計算機
US5710932A (en) Parallel computer comprised of processor elements having a local memory and an enhanced data transfer mechanism
US7849289B2 (en) Distributed memory type information processing system
WO2005106713A1 (ja) 情報処理方法及び情報処理システム
US6298433B1 (en) Data flow computer incorporating von neumann processors
JP4620593B2 (ja) 情報処理システムおよび情報処理方法
JP4511464B2 (ja) 情報処理システムおよび情報処理方法
EP0326164B1 (en) Parallel computer comprised of processor elements having a local memory and an enhanced data transfer mechanism
JPH06505588A (ja) 並列ソフトウェア処理用ネットワーク構造
JP2602241B2 (ja) 並列計算機
JP4559971B2 (ja) 分散メモリ型情報処理システム
JPH011049A (ja) 並列計算機
JP3704367B2 (ja) スイッチ回路
JPS63503099A (ja) 有効な信号とデ−タを処理するためのデ−タフロ−マルチプロセッサア−キテクチュア
KR950008838B1 (ko) 멀티미디어 지식처리를 위한 병렬처리 컴퓨터의 노드 컴퓨터 구조
Admiral et al. Distributed store allocation and file management for transputer networks
Topham A Parallel Vector Processing System
Blech et al. A message passing kernel for the hypercluster parallel processing test bed
Zeidler RDBM—A Relational Database Machine Based on a Dedicated Multiprocessor System

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): CA CN KR US

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE

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

Ref document number: 10088028

Country of ref document: US

Ref document number: 2385079

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 2000956868

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 1020027003544

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 008143676

Country of ref document: CN

WWP Wipo information: published in national office

Ref document number: 1020027003544

Country of ref document: KR

WWP Wipo information: published in national office

Ref document number: 2000956868

Country of ref document: EP

WWG Wipo information: grant in national office

Ref document number: 2000956868

Country of ref document: EP