WO2009131007A1 - Simd型並列計算機システム、simd型並列計算方法及び制御プログラム - Google Patents

Simd型並列計算機システム、simd型並列計算方法及び制御プログラム Download PDF

Info

Publication number
WO2009131007A1
WO2009131007A1 PCT/JP2009/057205 JP2009057205W WO2009131007A1 WO 2009131007 A1 WO2009131007 A1 WO 2009131007A1 JP 2009057205 W JP2009057205 W JP 2009057205W WO 2009131007 A1 WO2009131007 A1 WO 2009131007A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
processing element
processing
flag information
carry flag
Prior art date
Application number
PCT/JP2009/057205
Other languages
English (en)
French (fr)
Inventor
昭倫 京
Original Assignee
日本電気株式会社
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 日本電気株式会社 filed Critical 日本電気株式会社
Priority to JP2010509135A priority Critical patent/JP5370359B2/ja
Priority to EP09734849.4A priority patent/EP2273381B1/en
Priority to US12/922,318 priority patent/US8769244B2/en
Publication of WO2009131007A1 publication Critical patent/WO2009131007A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Definitions

  • the present invention relates to a SIMD type parallel computer system, and more specifically, a SIMD type parallel computing system and a SIMD type parallel computing method including processing elements (PE) connected in a large number controlled by a single control processor (CP). And a control program.
  • PE processing elements
  • CP control processor
  • SIMD Single Instruction Multiple Data
  • Non-Patent Document 1 As a related technique of such a SIMD type parallel computing system, for example, Non-Patent Document 1 shown below can be cited.
  • each processing element (PE) is connected in a ring shape with a connecting line, and each PE is controlled by a control processor (CP).
  • CP control processor
  • parallel processing by a plurality of processing elements (PE) is realized by applying instructions issued from the control processor (CP) to the data on its own local memory by each processing element (PE). Yes.
  • Non-Patent Document 1 a line buffer (line buffer) between the external memory and data (line: One Line) across the memory (RAM) blocks of all processing elements (PE) is used.
  • line buffer between the external memory and data (line: One Line) across the memory (RAM) blocks of all processing elements (PE) is used.
  • a configuration for performing memory transfer with Line Buffer) is disclosed.
  • MIMD Multiple Instruction Multiple Data
  • Patent Document 1 Japanese Patent Document 1 shown below can be cited.
  • Patent Document 1 as a method for a MIMD parallel computing system, numerical values indicating the amount of data are communicated in parallel between processors, scheduling by a predetermined simulation is executed in parallel by each processor, and finally data is stored. A configuration is disclosed in which the result of scheduling is transmitted between processors and redistributed.
  • one processor in order to perform scheduling by a predetermined simulation, one processor has communication processors CM1 to CML that perform transmission and reception between the CPU and L adjacent processors.
  • the communication processors CM1 to CML are connected to adjacent processors through L channels (communication paths).
  • Kyo Akinori “128-way VLIW RISC Core Integrated Video Recognition LSI for Vehicles” Report of IEICE Technical Committee, Integrated Circuits Research Group (ICD), May 2003, Vol. 103, no. 89, pp. 19-24 JP-A 63-147257
  • Non-Patent Document 1 since the SIMD type parallel computing system of Non-Patent Document 1 is configured to perform parallel processing on different data values under one instruction stream as described above, it should be calculated between processing elements (PE). When the number of data is different, even if the processing element (PE) has been processed quickly because the number of data to be calculated is small, the processing can proceed to the next processing when all the processing elements (PE) have completed the current processing. Limited. Therefore, the time required for each process is usually controlled by the PE that requires the longest processing time.
  • Patent Document 1 when data is redistributed to each processor, it is necessary to communicate a numerical value indicating the amount of data between the processors in parallel and perform scheduling by a predetermined simulation. Processing time increases with the increase. Further, in Patent Document 1, complicated equipment such as communication processors CM1 to CML and L channels (communication paths) is required for each processor, which increases hardware costs.
  • the purpose of the present invention is to The number of data to be transferred at the time of memory transfer to the outside, or the number of processing processes assigned to each processing element (PE) in the case of processing that does not select the processing element (PE), is efficiently and uniformly between the processing elements (PE).
  • An SIMD type parallel computing system, a SIMD type parallel computing method, and a control program are provided.
  • a SIMD type parallel computer system performs parallel processing on two or more processing elements coupled in a ring shape for different data values under one instruction stream.
  • the individual processing elements are: Data storage means for storing data to be processed or transferred by individual processing elements, data number storage element for storing the number of data of the processing data or the transfer data, and the processing data stored in the data storage means Or having a head data storage element for storing head data among transfer data, Further, among the two or more processing elements coupled in a ring shape, the number of data of processing data or transfer data stored in the data number storage element of one adjacent processing element, and the data number storage element of its own processing element The data storage means of the own processing element is compared according to a rule determined by the comparison result of the own processing element and the comparison result of another adjacent processing element.
  • An operation for updating the contents of data stored in the data number storage element and the head data storage element, and processing data or transfer data stored in an adjacent processing element as the data storage means of its own processing element When Characterized in that it has a control processor which emits serial head data data distribution leveling instructions that specify operations and for moving the storage element to the individual processing elements.
  • the SIMD type parallel calculation method is a SIMD type parallel calculation method for performing parallel processing on two or more processing elements coupled in a ring shape for different data values under one instruction stream, Among the two or more processing elements coupled in the ring shape, the number of processing data or transfer data stored in one adjacent processing element and the processing data or transfer data stored in the own processing element Compare with the number, In accordance with a rule determined by the comparison result and a comparison result in another adjacent processing element, an operation of updating the content of data stored in the own processing element, and processing data stored in the adjacent processing element or It is characterized in that each processing element executes an operation of moving transfer data to its own processing element.
  • the control program for SIMD type parallel computing is a parallel processing executed by two or more processing elements coupled in a ring shape in a SIMD type parallel computing system for different data values under one instruction stream.
  • a control program for performing control, The individual processing elements are: Data storage means for storing the data processed by the individual processing elements; A data number storage element for storing the number of data of the data, and a data storage element for storing a part of the data stored in the data storage means, On the computer, The number of data stored in the data number storage element of one processing element among the two or more processing elements coupled in the ring shape, and the number of data of the data stored in the data number storage element of the own processing element And the ability to compare According to the rule determined by the comparison result of the own processing element and the comparison result of another processing element, the data stored in the data storage means, the data number storage element, and the data storage element of the own processing element A function for issuing instructions to update the contents to individual processing elements; And a function of issuing an instruction to move the data stored in one processing
  • the data distribution leveling instruction EQL can be realized with a simple combination with few operations, the data distribution leveling instruction EQL can be implemented in a single machine cycle, and the number of data is uniform while suppressing an increase in hardware cost. Can be realized efficiently.
  • the SIMD type parallel computing system forms a ring for different data values under one instruction stream.
  • a SIMD type parallel computing system that performs parallel processing with two or more processing elements 201 (201 (n ⁇ 1), 201 (n), 201 (n + 1): PE array 200) coupled to each other.
  • the individual processing elements 201 include data storage means 101 (101 (n ⁇ 1), 101 (n), 101 (n + 1)) for storing data (process data or transfer data) processed by the individual processing elements 200; A data number storage element 102 (102 (n-1), 102 (n) for storing the number of data of the processing data or the transfer data 102 (n + 1)) and data storage elements (103 (n ⁇ 1), 103 (n), 103 (n + 1) for storing a part of the data stored in the data storage means 101 (for example, leading data) )) Further, the number of data (processed data or transfer data) stored in the data number storage element 102 of one processing element 201 among the two or more processing elements 201 coupled in a ring shape, and the data of the own processing element
  • the data storage means of the self-processing element 201 compares the number of data of the data stored in the data-number storage element 102 and follows a rule determined by the comparison result of the self-processing element and the comparison result of another processing element 101, the data
  • the two or more coupled in the ring shape are performed.
  • the number of data stored in one of the processing elements 201 is compared with the number of data stored in the own processing element. Then, in accordance with a rule determined by the comparison result and the comparison result in the other processing element 201, the operation of updating the content of the data stored in the own processing element 201 and the adjacent processing element 201 store it.
  • the individual processing elements are caused to perform the operation of moving the data to the own processing element 201.
  • control processor 210 (including 104, 105, 106, and 107) in the embodiment of the present invention has the former data number cntr_left (or cntr_right) out of the data numbers to be compared.
  • Carry flag information cf is calculated when it is larger than the number cntr.
  • the control processor 210 (including 104, 105, and 106), as the carry flag information cf, “1” when the former data number cntr_left (or cntr_right) is larger than the latter data number cntr as the number of data to be compared. ", Carry flag information that is” 0 "when it is smaller is calculated.
  • the control processor 210 (including 104, 105, 106, 107) (1) When the carry flag information in the own processing element 201 is “0” and the carry flag information in the adjacent processing element 201 is “0”, the data number storage element 102 and the head data of the own processing element 201 Do not update the contents with the storage element 103, (2) When the carry flag information in the own processing element 201 is “0” and the carry flag information in the adjacent processing element 201 is “1”, the number of data in the data number storage element 102 of the own processing element 201 is Decrement by 1 and update the contents of the head data storage element 103 with the next processing data or the next transfer data following the head data, (3) When the carry flag information in the own processing element 201 is “1” and the carry flag information in the adjacent processing element 201 is “0”, the number of data in the data number storage element 102 of the own processing element 201 is Increment by 1 and update the contents of the head data storage element 103 with the contents of the head data of the processing data or transfer data of the adjacent processing
  • the control processor 210 (including 104, 105, 106, and 107) issues a data distribution leveling instruction EQL based on the rule, and data of processing data or transfer data over all the processing elements 201 coupled in the ring shape. An average value of the numbers is obtained, and the data distribution leveling command is issued until the difference between the average value and the number of processed or transferred data of all the processing 201 is equal to or less than a threshold value.
  • control processor 210 obtains the average value of the number of data cntr across all the processings 201, and then until the difference between the data number cntr value of all the processings 201 and the average value falls below the threshold value (for example, 1).
  • the data distribution leveling instruction EQL By repeatedly issuing the data distribution leveling instruction EQL and controlling the PE array 200, the data distribution leveling is performed for the number of times equal to the sum of the difference between the maximum and minimum values of the number of data cntr and the number of all processings 201. If the instruction is executed, the processing data or transfer data of all the processings 201 can be leveled to almost the same number.
  • the “data distribution leveling instruction EQL” can be implemented in a single machine cycle because it can be realized with a simple combination of few operations, but does not have an EQL instruction.
  • the SIMD type parallel computing system disclosed in Non-Patent Document 1 it takes about 10 machine cycles. Therefore, the SIMD type parallel computer system having the “data distribution leveling instruction EQL” according to the embodiment of the present invention can efficiently realize the process of equalizing the number of data while suppressing an increase in hardware cost.
  • a register is used as the data number storage element 102 and the head data storage element 103
  • a RAM Random Access Memory
  • the processing element 201 (n) shown in the figure will be described as the self-processing element, and the processing element 201 (n ⁇ 1) or the processing element 201 (n + 1) shown in the figure will be described as an adjacent processing element.
  • FIG. 1 is a block diagram showing an example of an overall schematic configuration of a SIMD type parallel computer system according to the first embodiment of the present invention.
  • the SIMD type parallel computer system 1 of the present embodiment has a large number of processing elements (PE) 201 (n ⁇ 1), 201 (n), 201 (n + 1). And a control processor (CP) 210 for supplying instructions to the PE array 200 and controlling the entire PE array 200. Further, adjacent processing elements 201 (n-1) and processing elements 201 (n), and the processing elements 201 (n) and 201 (n + 1) are bidirectionally connected by a network or PE connection line 220. Connected.
  • PE processing elements
  • CP control processor
  • each processing element 201 the rightmost processing element 201 in the drawing is connected to the leftmost processing element 201 to be coupled in a ring shape.
  • the coupling line 220 between the processing elements 201 exchanges information in both directions.
  • transfer data transferred between the processing elements 201 in the data leveling process can be transferred in one direction from the left to the right in the figure.
  • other control information and processing data such as carry flag information cf described later are exchanged between the processing elements 201.
  • the PE connection line 220 may include a data connection line to be transferred in the data leveling process and a connection line to transfer other control information.
  • the control processor 210 performs a data distribution leveling instruction for executing a processing operation for equalizing the number of data of processing data for each processing element 201 or the number of data of memory transfer data to the outside among the processing elements 201
  • a data distribution leveling command generation unit 212 that generates and outputs an EQL
  • an execution control unit 214 that controls a processing operation for repeatedly executing the data distribution leveling command EQL for each processing element 201.
  • the control processor 210 has a subtraction operation unit (sub) 104, an exclusive OR operation unit (xor) 106, and an addition / subtraction operation unit 107 incorporated in each processing element 201.
  • each processing element 201 includes a RAM 101 (data storage means) that stores data (data body or related information thereof) such as processing data or transfer data, and the data It has a register (cntr) 102 (data number storage element) for storing the number of data and a register (md) 103 (head data storage element) for storing head data among the data stored in the RAM 101. .
  • RAM 101 data storage means
  • cntr data number storage element
  • md head data storage element
  • the processing element 201 (n) sets the number of data cntr stored in the register 102 (n ⁇ 1) of the processing element 201 (n ⁇ 1) on the left side. Received as the number of data cntr_left from the processing element 201 (n ⁇ 1) on the left side. Further, the processing element 201 (n) receives the head data md stored in the register 103 (n ⁇ 1) of the left adjacent processing element 201 (n ⁇ 1) from the left adjacent processing element 201 (n ⁇ 1). Received as head data md_left.
  • the processing element 201 (n) inputs the carry flag information cf of the right adjacent processing element 201 (n ⁇ 1) as the carry flag information cf_right from the right adjacent processing element 201 (n + 1) via the coupling line 220. Receive as.
  • the carry flag information cf is the number of data cntr stored in the register 102 (n) of its own processing element 201 (n) and the processing element (n ⁇ 1) on the left side. ) Of the data stored in the register 102 (n ⁇ 1) of the data cntr_left.
  • the control processor 210 that causes the SIMD type parallel computing system 1 to execute the data distribution leveling instruction EQL is sent to each processing element 201 by a subtraction operation unit (sub ) 104, an exclusive OR operation unit (xor) 106, an AND operation unit (and) 105, and an addition / subtraction operation unit (add / sub) 107, which are connected to the data distribution leveling
  • the program is activated by an EQL command generated and issued by the command generation unit 212.
  • the subtraction operation unit (sub) 104, the exclusive OR operation unit (xor) 106, the AND operation unit (and) 105, and the addition / subtraction operation unit (add / sub) 107 in the present embodiment perform the leveling process.
  • the unit 110 is configured.
  • the processing element 201 (n-1) on the left adjacent to the processing element 201 (n) or the processing element 201 (n + 1) on the right adjacent to the processing element 201 (n) executes the data distribution leveling instruction EQL.
  • the subtraction operation unit 104 of the own processing element 201 (n) includes the number of data cntr stored in the register 102 (n) of the own processing element 201 (n) and the register of the processing element 201 (n ⁇ 1) adjacent to the left.
  • the number of data cntr_left stored in 102 (n ⁇ 1) is compared. Specifically, when the number of these data is subtracted and the former data number cntr_left is greater than the latter data number cntr, “1”. Otherwise, carry flag information cf having a value of “0” is output.
  • the subtraction operation unit 104 of the own processing element 201 (n) uses the value of the carry flag information cf as the register 103 (n) of the own processing element 201 (n), the logical product operation unit 105 (n), and the exclusive logic. Each is sent to the sum operation unit 106 (n).
  • the register (md) 103 (n) of the own processing element 201 (n) stores the head data md among the processing data or transfer data stored in the RAM 101 (n-1) of the own processing element 201 (n). Yes. If the carry flag information cf, which is the output from the subtraction operation unit 104 (n) of the processing element 201 (n), is “1”, the register 103 (n) stores the content of the stored top data md. , The contents of the top data md_left stored in the register 103 (n ⁇ 1) of the processing element 201 (n ⁇ 1) on the left are updated.
  • the content of the head data md is updated with the output dout of the read access in the previous cycle for the RAM 101 (n) of the own processing element 201 (n).
  • the AND operation unit 105 (n) of the own processing element 201 (n) carries the carry flag information cf_right obtained by inverting the carry flag information cf output from the subtraction operation unit 104 (n + 1) of the processing element 201 (n + 1) on the right. And the carry flag information cf output from the subtraction operation unit 104 (n) of the own processing element 201 (n), and the result is the RAM 101 (n) and the addition / subtraction operation unit 107 of the own processing element 201 (n). Output to (n).
  • the RAM 101 (n) uses the output of the AND operation unit 105 (n) as a write permission signal (write enable signal) wen.
  • the addition / subtraction operation unit 107 (n) adds the outputs of the logical product operation unit 105 (n) (when the output result of the logical product operation unit 105 (n) is “1”) or performs subtraction. This is used as an addition / subtraction selection signal to be performed (when the output result of the AND operation unit 105 (n) is 0).
  • the exclusive OR operation unit 106 (n) carries the carry flag information cf output from the subtraction operation unit 104 (n) of its own processing element 201 (n) and the subtraction operation unit 104 of the processing element 201 (n + 1) on the right.
  • An exclusive OR is performed on the carry flag information cf_right obtained by inverting the carry flag information cf output by (n + 1), and the result is output to the addition / subtraction operation unit 107 (n).
  • the addition / subtraction operation unit 107 (n) determines whether to perform addition or subtraction using the output from the AND operation unit 105 (n) as an addition / subtraction selection signal, and in the case of addition (the AND operation unit 105 (n ) Output result is “1”), the value of the number of data cntr stored in the register 102 (n) and the output value of the exclusive OR operation unit 106 (n) are added and subtracted. (When the output result of the AND operation unit 105 (n) is “0”), the value of the number of data cntr stored in the register 102 (n), the output value of the exclusive OR operation unit 106, The subtraction process is performed.
  • the addition / subtraction operation unit 107 (n) outputs the output value to the register 102 (n) and the RAM 101 (n).
  • the register 102 (n) uses the calculation result of the addition / subtraction calculation unit 107 as an update command signal for updating the stored contents.
  • the RAM 101 (n) receives, for example, the result of adding the operation result of the addition / subtraction operation unit 107 and a predetermined base address value as the access address addr to the RAM 101 in the cycle in which the data distribution leveling instruction EQL is executed. .
  • the carry flag information cf of the own processing element 201 (n) (“1” or “0”) and the carry flag information cf of the processing element 201 (n + 1) on the right are logically inverted.
  • the outputs of the AND operation unit 105 (n), the exclusive OR operation unit 106 (n), and the addition / subtraction operation unit 107 (n) The value and the value of the register (cntr) 102 and the register (md) 103 (n) change when the write permission signal wen is input to the RAM 101 (n) and the access address to the RAM 101 (n). This is shown separately for the case where the signal addr is input.
  • the processing element (n ⁇ 1) includes a subtraction operation unit (sub) 104 (n ⁇ 1), an exclusive OR operation unit (xor) 106 (n ⁇ 1), and an AND operation unit (and) 105 (n -1), addition / subtraction operation unit (add / sub) 107 (n-1), register (cntr) 102 (n-1) (data number storage unit), register (md) 103 (n-1) ( Head data storage unit) and RAM 101 (n-1).
  • the processing element (n) includes a subtraction operation unit (sub) 104 (n), an exclusive OR operation unit (xor) 106 (n), a logical product operation unit (and) 105 (n), and an addition / subtraction operation unit. (Add / sub) 107 (n), register (cntr) 102 (n) (data number storage unit), register (md) 103 (n) (first data storage unit), and RAM 101 (n) Including.
  • the processing element (n + 1) includes a subtraction operation unit (sub) 104 (n + 1), an exclusive OR operation unit (xor) 106 (n + 1), a logical product operation unit (and) 105 (n + 1), and an addition / subtraction operation unit. (Add / sub) 107 (n + 1), register (cntr) 102 (n + 1) (data number storage unit), register (md) 103 (n + 1) (first data storage unit), and RAM 101 (n + 1) Including.
  • control processor 210 When the control processor 210 (particularly, the data distribution leveling instruction generating unit 212) issues the data distribution leveling instruction EQL for performing the data distribution leveling, the processing elements (n ⁇ 1), (n), (n ⁇ Information on the number of data cntr stored in the registers 103 of all the processing elements coupled in a ring shape including 1) is acquired. Then, the control processor 210 (in particular, the data distribution leveling instruction generation unit 212) performs the following processing, for example, and controls all the processing elements 201 so as to repeatedly execute the data distribution leveling instruction EQL.
  • the data distribution leveling instruction generation unit 212 of the control processor 210 controls the number of data stored in the registers 103 of all processing elements 201 coupled in a ring shape under the control of the execution control unit 214.
  • Information on cntr is obtained, and the result H obtained by dividing the sum of the values of the number of data cntr of all the processing elements 201 by the number of all the processing elements 201, that is, the average value H of the number of data cntr across all the processing elements 201
  • the processing element array 200 is controlled until the difference between the value of the number of data cntr of all the processing elements 201 and the average value H falls below a threshold value (for example, “1”).
  • the processing element 201 (n) in the processing element array 200 repeatedly executes the data distribution leveling instruction EQL.
  • the processing elements 201 other than the processing element 201 (n) execute the data distribution leveling instruction EQL repeatedly as in the processing element 201 (n) described below. To do.
  • the subtraction operation unit 104 (n) of the control processor 210 incorporated in the processing element 201 (n) determines the value of the number of data cntr stored in the register (cntr) 102 (n) of the processing element (n) The value of the number of data cntr_left stored in the register (cntr) 102 (n ⁇ 1) of the processing element (n ⁇ 1) on the left adjacent to the processing element (n) is compared.
  • Carry flag information cf in its own processing element (n) is output as “1”.
  • the subtraction operation unit 104 (n) for example, when the value of the data number cntr_left is less than or equal to the value of the data number cntr, that is, when (the value of the data number cntr_left-the value of the data number cntr) is 0 or less, Carry flag information cf in its own processing element (n) is output as “0”.
  • the AND operation unit 105 (n) inputs the carry flag information cf in the own processing element (n) and the carry flag information cf_right obtained by inverting the carry flag information cf in the processing element (n + 1) on the left side. Then, logical product processing is performed on these values. As shown in FIG. 3, the output of the AND operation unit 105 (n) is “1” only when the carry flag information cf is “1” and the carry flag information cf_right is “0”. The logical product operation unit 105 (n) outputs the result of the logical product process to the addition / subtraction operation unit 107 (n) and the RAM 101 (n).
  • the RAM 101 (n) accepts the output of the AND operation unit 105 (n) as a write permission signal (write enable signal) wen. Then, the RAM 101 (n) is in a state where data writing is permitted. Therefore, the RAM 101 (n) writes the top data md_left stored in the register (md) 103 (n ⁇ 1) of the processing element (n ⁇ 1) on the left as the input data din of the RAM 101 (n). As a result, in the RAM 101 (n), there is data corresponding to the current data added with the top data md_left stored in the register 103 (n-1) of the processing element (n-1) on the left side. Will exist.
  • the exclusive OR operation unit 106 (n) inputs the carry flag information cf in its own processing element (n) and the carry flag information cf_right in the processing element (n + 1) on the right side. As shown in FIG. 3, when the carry flag information cf and the carry flag information cf_right have the same logic, the output of the exclusive OR operation unit 106 (n) becomes “0”, and the carry flag information cf and the carry flag information When the logic is different from cf_right, the output of the exclusive OR operation unit 106 (n) is “1”.
  • the addition / subtraction operation unit 107 (n) determines whether to perform any one of addition operation and subtraction operation based on the output value of the AND operation unit 105. For example, as shown in FIG. 3, when the output value of the AND operation unit 105 is “1”, the addition / subtraction operation unit 107 (n) determines to perform the addition operation “+”. On the other hand, when the output value of the logical product operation unit 105 is “0”, the addition / subtraction operation unit 107 (n) determines to perform the subtraction operation “ ⁇ ”. For this reason, as shown in FIG.
  • the addition / subtraction operation unit 107 (n) stores the data stored in the register (cntr) 102 (n) when the output value of the logical product operation unit 105 is “1”. The value of the number cntr and the output value of the exclusive OR operation unit 106 (n) are added. On the other hand, when the output value of the AND operation unit 105 is “0”, the addition / subtraction operation unit 107 (n) is exclusive of the value of the number of data cntr stored in the register (cntr) 102 (n). Subtraction processing is performed on the output value of the logical sum operation unit 106 (n).
  • the addition / subtraction calculation unit 107 (n) outputs the output value of the addition / subtraction calculation unit 107 (n), which is the calculation result, to the register (cntr) 102 (n). Further, the addition / subtraction operation unit 107 adds the memory address calculation result obtained by adding the output value of the addition / subtraction operation unit 107 (n), which is the operation result, to the predetermined base address value, and the access address to the RAM 101 (n) in the cycle. Output as addr to the RAM 101 (n) (memory address generation function).
  • the register 102 (n) includes the addition / subtraction operation unit 107 (n ), The value of the currently stored data count cntr is incremented by 1, and the stored data count is updated to “cntr + 1”.
  • the register 102 (n) includes the addition / subtraction operation unit 107 (n).
  • the register 102 (n) includes the addition / subtraction operation unit 107 (n). Based on the output, the value of the currently stored data number cntr is maintained as it is.
  • the value of the register (cntr) 102 (n) is “cntr”, “cntr ⁇ 1”, and “cntr + 1”.
  • the register (cntr) 102 updates the number of data to the number of data cntr-1 obtained by decrementing the number of currently stored data by one. To do.
  • the carry flag information cf in the own processing element (n) and the carry flag information cf_right in the right adjacent processing element (n + 1) have the same logic, for example, the number of data in the left adjacent processing element (n ⁇ 1)> The number of data in the own processing element (n)> the number of data in the right adjacent processing element (n + 1), or the number of data in the left adjacent processing element (n ⁇ 1) ⁇ the data in the own processing element (n)
  • the register (cntr) 102 (n) stores the current data number cntr as the data number.
  • the register (md) 103 (n) based on the carry flag information cf in PE (n), the top data of the register (md) 103 (n ⁇ 1) in the processing element (n ⁇ 1) on the left side is stored. Any of md_left and head data dout (head data in data in RAM 101 (n) before data input from din) in the previous cycle output from RAM 101 (n) in its own processing element (n) One of them is input, and the register 103 (n) updates the data based on the input data. That is, when the carry flag information cf in the own processing element (n) is “1”, the register (md) 103 (n) stores the current data and updates the top data md to the top data md_left.
  • the register (md) 103 (n) When the carry flag information cf in its own processing element (n) is “0”, the register (md) 103 (n) is currently stored and the head data md is stored in the RAM 101 (n). Update to the next data following the top data. Therefore, as shown in FIG. 3, the value of the register (md) 103 (n) becomes md_left when the carry flag information cf in PE (n) is “1”, and the carry flag information in PE (n). When cf is “0”, it becomes dout.
  • the carry flag information cf in the own processing element (n) is “0”.
  • the carry flag information cf_right in the right adjacent processing element (n + 1) is “1”, for example, the number of data in the left adjacent processing element (n ⁇ 1)> the number of data in its own processing element (n) ⁇ right
  • the value of the register (cntr) 102 (n) is updated from “cntr” to “cntr ⁇ 1”.
  • the value of the register (md) 103 (n) is updated when the carry flag information cf in PE (n) is “0”, so that the leading data dout from the RAM 101 (n) is input. For this reason, the RAM 101 (n) stores data corresponding to data obtained by removing the head data from the currently existing data.
  • the carry flag information cf in the own processing element (n) is When the carry flag information cf_right in the right-side processing element (n + 1) is “0” when “0”, for example, the number of data in the left-side processing element (n ⁇ 1) ⁇ the number of data in the own processing element (n) It is assumed that the number of data in the processing element (n + 1) on the right is equal. In this case, the value of the register (cntr) 102 (n) remains “cntr” and is not updated. Further, the value of the register (md) 103 (n) is not updated because the carry flag information cf in PE (n) is “0”.
  • the carry flag information cf in the own processing element (n) is When “1” and the carry flag information cf_right in the right adjacent processing element (n + 1) is “1”, for example, the number of data in the left adjacent processing element (n ⁇ 1)> the number of data in the own processing element (n) > The number of data in the processing element (n + 1) on the right is assumed. In this case, the value of the register (cntr) 102 (n) remains “cntr” and is not updated. Further, since the carry flag information cf in the own processing element (n) is “1”, the first data md_left in the next left processing element (n ⁇ 1) is input as the value of the register (md) 103 (n). And updated.
  • control processor 210 compares the value of the number of data cntr_left of the processing element on the left with the value of the number of data cntr of its own processing element, and if the former is larger than the latter, it is 1; All processing elements are calculated according to the following control rules (a) to (d) determined by carry flag information cf_right after logically inverting carry flag information cf of the processing element on the right after calculating carry flag information cf as a value. In contrast, the number of data cntr of the own processing element, the head data md among the data stored in the RAM of the own processing element, and the contents of the processing data or transfer data stored in the RAM are updated simultaneously.
  • the control processor 210 has the above-described EQL instruction. For example, as a result of dividing the sum of the values of the number of data cntr to be processed by all processing elements by the number of all processing elements, that is, H The average value H of the values of the number of crossing data cntr is obtained, and until the difference between the value of the number of data cntr to be processed by all the processing elements and the average value H falls below a threshold value (for example, “1”) or less, the EQL instruction The processing element array 200 is controlled so as to be repeatedly executed.
  • a threshold value for example, “1”
  • control processor 210 is equal to the sum of the difference between the maximum value of the number of data cntr to be processed by the processing element and the minimum value of the number of data cntr to be processed by the processing element and the number of all processing elements. If the processing element array 200 is caused to execute the EQL instruction by the number of times, the processing data or transfer data of all the processing elements can be equalized to almost the same number.
  • the subtraction operation unit (sub) 104, the exclusive OR operation unit (xor) 106, and the logical product operation unit (constituted by the control processor 210 incorporated in each processing element 201 are provided. and) and the addition / subtraction operation unit (add / sub) 107 are constructed as hardware, but the present invention is not limited to this.
  • a function of the addition / subtraction operation unit (add / sub) 107 may be constructed as a control program that is realized on software.
  • the processing element can be configured as a leveling processing apparatus.
  • the leveling processor can be configured by a plurality of processing elements that are controlled by a control processor and used in a parallel computer system including the control processor.
  • the RAM which is a data storage unit, can temporarily store processing data or external memory transfer data.
  • a register (cntr) serving as a data number storage unit can count and temporarily store the number of data in the data storage unit.
  • the register (md) which is the head data storage unit can temporarily store the head data among the data in the data storage unit.
  • the leveling processing unit operates in accordance with a data distribution leveling instruction from the control processor, and the first data number in the own processing element and the second data in one first adjacent processing element adjacent to the own processing element.
  • the first comparison result information comparing the numbers and the second comparison result information which is the comparison result in the other adjacent second adjacent processing element (or the first and second comparison result information)
  • the leveling processing unit compares the first data number in the own processing element with the second data number in one first adjacent processing element adjacent to the own processing element.
  • the exclusive logic for calculating exclusive OR information of the comparison result of the comparison unit, the second comparison result information that is the comparison result of the other adjacent second adjacent processing element, and the first comparison result information On the basis of the logical product information, the logical product information of the sum operation unit, the logical inversion information of the second comparison result information, and the first comparison result information, and the first logical product information.
  • the number of data and the exclusive OR information are selected and controlled by either addition or subtraction, and the result of the one operation is added or subtracted.
  • Addition and subtraction arithmetic unit for calculating the operation information may include.
  • the data distribution leveling instruction EQL can be implemented in a single machine cycle because it can be realized with a simple combination of few operations, and while suppressing an increase in hardware cost, A process for making the number of data uniform can be realized efficiently.
  • the “data distribution leveling instruction EQL” can be implemented in a single machine cycle because it can be realized with a simple combination with few operations, whereas it does not have an EQL instruction. It takes about 10 machine cycles for the SIMD type parallel computing system to perform processing equivalent to the EQL instruction. Therefore, in the SIMD type parallel computing system having the data distribution leveling instruction EQL according to the embodiment of the present invention, it is possible to efficiently realize the process of equalizing the number of data while suppressing an increase in hardware cost. The effect is obtained.
  • the difference between the SIMD type parallel computer system 300 in the present embodiment and the first embodiment is that data such as processing data or transfer data is left each time an EQL instruction is executed in the first embodiment.
  • data such as processing data or transfer data moves between processing elements in the right-to-left direction. There is no difference other than the point where it moves (FIG. 4).
  • carry flag information cf_right obtained by logically inverting carry flag information cf of the processing element on the right in the first embodiment
  • the number of data cntr_left indicating the number of data cntr of the processing element on the left on the left, and the top data md_left indicating the top data md stored in the register 103 which is the data number storage means of the processing element on the left on the left are processed when the EQL instruction is executed.
  • the carry flag information cf_left obtained by logically inverting the carry flag information cf of the processing element on the left is used instead of the carry flag information cf_right.
  • the data number cntr_right indicating the data number cntr of the right adjacent processing element is used instead of the data number cntr_left of the left adjacent processing element, and the top data md stored in the register 103 which is the data number storage means of the left adjacent processing element
  • the EQL instruction is executed so as to use the head data md_right indicating the head data md stored in the register 103 which is the data number storage means of the processing element on the right.
  • control processor 210 compares the value of the number of data cntr_left of the processing element on the right with the value of the number of data cntr of its own processing element, and if the former is larger than the latter, 1 All processing elements are calculated according to the following control rules (a) to (d) determined by calculating carry flag information cf as a value and carry flag information cf_left obtained by logically inverting the carry flag information cf of the processing element adjacent to the left. In contrast, the number of data cntr of the own processing element, the head data md among the data stored in the RAM of the own processing element, and the contents of the processing data or transfer data stored in the RAM are updated simultaneously.
  • the control processor 210 has the above-described EQL instruction. For example, as a result of dividing the sum of the values of the number of data cntr to be processed by all processing elements by the number of all processing elements, that is, H The average value H of the values of the number of crossing data cntr is obtained, and until the difference between the value of the number of data cntr to be processed by all the processing elements and the average value H falls below a threshold value (for example, “1”) or less, the EQL instruction The processing element array 200 is controlled so as to be repeatedly executed.
  • a threshold value for example, “1”
  • control processor 210 is equal to the sum of the difference between the maximum value of the number of data cntr to be processed by the processing element and the minimum value of the number of data cntr to be processed by the processing element and the number of all processing elements. If the processing element array 200 is caused to execute the EQL instruction by the number of times, the processing data or transfer data of all the processing elements can be equalized to almost the same number.
  • the register (md) 103 for storing the head data of the processing data or the transfer data is necessary because each processing is accessed independently. This is a case where a synchronous RAM or the like in which the read address supply cycle and the read data usable cycle are shifted by one cycle is used as the possible RAM 101.
  • the read address supply cycle and the read data usable cycle can be made the same cycle. Therefore, the register (md) 103 is unnecessary, and the register itself holding the head data of the RAM 101 is used. May be used as the register (md) 103.
  • the number of processing elements 201 constituting the processing element array 200 is set to eight, and the processing elements 201 are identified to identify the individual processing elements.
  • the initial value of the number of data cntr stored in the register 102 of the processing elements PE to PE7 is 3, 2, 1, 5, 0, 1, 4,
  • the sum of the values of the number of data cntr stored in the registers 102 of all the processing elements PE0 to PE7 is 17.
  • the head data md among the data stored in the individual RAMs 101 has already been stored in the registers 103 of all the processing elements PE0 to PE7.
  • the control processor 210 acquires a large amount of data stored in the registers 102 of the individual processing elements PE0 to PE7 coupled in a ring shape, and the data of all the processing elements PE0 to PE7.
  • the result H (2.125) obtained by dividing the sum 17 of the values of the number cntr by the number 8 of all the processing elements PE0 to PE7, that is, the average value H of the data number cntr over all the processing elements PE0 to PE7 (2. 125), and the processing element array 200 is controlled until the difference between the value of the number of data cntr of all the processing elements PE0 to PE7 and the average value H falls below a threshold value (1 in this example).
  • the third embodiment of the present invention corresponds to the first embodiment of the present invention
  • the processing element 201 (n) is the processing element PE1
  • the processing element 201 (n ⁇ 1) is the processing element PE0
  • the processing element 201 (n + 1) on the right is the processing element PE2.
  • the operation when the control processor 210 repeatedly issues an EQL instruction for moving processing data in the direction from the processing element on the left side to the processing element on the right side in the drawing will be described.
  • the control processor 210 executes the EQL instruction under the state of step 0 shown in FIG. 7, the processing data is moved from the processing element on the left to the processing element on the right, and as a result, the processing element on the left on the left is processed.
  • Data movement occurs between the processing elements in which the number of data cntr stored in the register 102 is larger than the value of the number of data stored in the register 102 of its own processing element, that is, in the example of FIG.
  • processing element PE0 ⁇ processing element PE1, processing element Direction of PE1 ⁇ processing element PE2, processing element PE3 ⁇ processing element PE4, and processing element PE6 ⁇ processing element PE7
  • Data movement occurs one by one, and the values of the number of data cntr stored in the registers 102 of the processing elements PE0 to PE7 are 2, 22, 4, 1, 1, 3, and 2, respectively, and the execution state of the EQL instruction is illustrated. 7.
  • the control processor 210 obtains the value of the number of data cntr stored in the registers 102 of the individual processing elements PE0 to PE7, and the total number of data cntr is uniformly distributed to all the processing elements PE0 to PE7. It is determined whether or not the data is even, and if the number of data is not evenly distributed, the EQL instruction is issued again.
  • the control processor 210 issues, for example, a total of three EQL instructions to the processing array, the EQL instruction between the individual processings as described in step 1 of FIG. 7 is executed, and the execution state of the EQL instruction is shown in FIG. 7 transitions from step 1 to step 2 to step 3.
  • the values of the number of data cntr stored in the registers 102 of the individual processing elements PE0 to PE7 are 3, 2, 2, 2, 2, 2, 2, 2, 2, respectively.
  • the control processor 210 acquires the value of the number of data cntr stored in the register 102 of each processing element PE0 to PE7 in step 3 shown in FIG. 7, and the total number of data cntr is uniform for all the processing elements PE0 to PE7. It is determined whether or not it is leveled. In step 3 of FIG. 7, since the total number of data cntr is equalized to all the processing elements PE0 to PE7, the control processor 210 calculates the number of data cntr stored in the registers 102 of all the processing elements PE0 to PE7. Since the difference from the average value H is within the threshold value of 1, the processing element array (PE0 to PE7) is controlled to detect this situation and exit from the EQL instruction issue loop.
  • the processing for issuing an EQL instruction is incorporated in each processing element 201 and the subtraction operation unit (sub) 104 configured by the control processor 210 is exclusive.
  • the logical OR operation unit (xor) 106, the AND operation unit (and) 105, and the addition / subtraction operation unit (add / sub) 107 are constructed as hardware, the present invention is not limited to this.
  • the function of the subtraction operation unit (sub) 104 configured by the control processor 210 incorporated in each processing element 201 and the exclusive OR operation unit ( xor) 106, the AND operation unit (and) 105, and the addition / subtraction operation unit (add / sub) 107 may be constructed as a control program implemented on software.
  • a subtraction operation unit (sub) 104, an exclusive OR operation unit (xor) 106, and a logical product operation which are components necessary for executing the EQL instruction, are provided.
  • a function call instruction generation unit that executes a function call instruction CALLI, a division operation designation instruction generation unit that executes an instruction CDIV, a register value transfer instruction generation unit that executes an instruction MVCP, and an absolute subtraction result that executes an instruction ASUB A value calculation instruction generator, a subtraction result calculation instruction generator for executing the instruction SUB, a condition flag logical sum calculation instruction generator for executing the instruction STS, and a conditional branch instruction generator for executing the conditional branch instruction BRM may be added. It ’s good.
  • control processor 210 in which the constituent elements (212, 214) for executing the various instructions are added to the constituent elements (104 to 107) for executing the EQL instruction is described as a computer (microprocessor). A case will be described in which the application software is executed to construct a control program realized on the software.
  • the control program for executing the function of the control processor 210 in the SIMD type parallel computing system in addition to the EQL instruction which is one of the instruction sets of the data distribution leveling operation,
  • the character string that ends with indicates the address of the occurrence position of the character string. If the same label is specified as the operand of the branch instruction, it means that the same address is specified.
  • the function call instruction CALLI in the control program “* address A * / CALLI Fadd_allpe cntr” calls the function “add_allpe”, finds the sum of the number of data cntr stored in the registers 102 of all the processing 201, and calculates the sum.
  • a function return value is stored in the register r0 (step S101) ⁇ total PE data number sum calculation processing step or all PE data number sum calculation processing function>.
  • the instruction CDIV in the control program “* address A + 1 * / CDIV r0, PENO, H” is a constant PENO representing information on the number of processing elements installed, and the sum of the number of data cntr stored in the register r0. And the result is stored in the register H as an average value H (step S102) ⁇ all PE data number average value calculation processing step or all PE data number average value calculation processing function>.
  • the instruction MVCP “* address A + 2 * / MVCP H, h” in the control program causes the average value H of the number of data to be transferred to the register 102 of each processing element 201 (step S103) ⁇ average value transfer Processing step or average value transfer processing function>.
  • the SUB instruction is “* address A + 3 * / EQL” which is an EQL instruction, “* address A + 4 * / ASUB h, cntr, tmp” which is an ASUB instruction, “* address A + 5 * / EQL” which is an EQL instruction. “* Address A + 6 * / SUB 1, tmp, tmp”, “* address A + 7 * / EQL” which is an EQL instruction, and “* address A + 8 * / STS% S” which are STS instructions are executed in the same cycle.
  • step S110 In the loop of / * address A + 3 * / ⁇ / * address A + 10 * / (step S110) ⁇ execution control step or execution control function>, an EQL instruction is issued four times for each repetition (step S111 and step S113). In step S115 and step S118), simultaneously with issuing the first EQL instruction in step S111, an ASUB instruction is issued on each processing element ⁇ subtraction result absolute value calculation step or subtraction result absolute value calculation function>, in step S113.
  • step S112, step S114 By issuing a SUB instruction on each processing element simultaneously with issuing the second EQL instruction ⁇ subtraction result calculation step or subtraction result calculation function>, the value of the number of data cntr in the register 102 of each processing element and the average The difference from the value H is within 1 of the threshold Whether or not a determination is made (step S112, step S114).
  • step S115 the logical sum over all processing elements of the value of the condition flag S representing the determination result is stored in the mask register on the control processor 210 by the STS instruction (step S116). ) ⁇ Condition flag logical sum calculation step or condition flag logical sum calculation function>, if there is still a processing element in which the logical sum is 1, that is, the difference between the value of the number of data cntr and the average value H exceeds 1.
  • a branch is established upon execution of the BRM instruction at address A + 9 * / (step S117) ⁇ Conditional branch instruction issue step or conditional branch instruction issue function>, and in the next cycle, instead of the instruction at / * address A + 11 * // * address A + 3 * / Command is executed.
  • the end determination process by the CP for exiting the loop that repeats the EQL instruction is the entire process. Only minimal impact on the number of cycles can be achieved.
  • the value of the number of data cntr of the processing element PE0 is read first, and the value of the average value H is described. If the value is larger than the average value H, the processing element PE1 or another processing element PE having a smaller value of the number of data cntr is selected, and the data of the processing element PE0 is read out and selected.
  • a series of operations including storing in the RAM 101 of the processing element PE, incrementing the value of the data number cntr of the processing element PE by 1 and decrementing the value of the data number cntr of the processing element PE0 by 1 There is necessary to go sequentially in respect single element, as compared with the embodiment shown in FIG. 7, it is easy to imagine that it takes a large number of processing cycles.
  • this embodiment has the following effects. That is, when a SIMD type parallel computing device that does not have an EQL instruction in its instruction set is not a method of performing sequential determination by a control processor, but when trying to realize data distribution leveling by parallel processing operation in a processing element array, The operation corresponding to the operation specified by the EQL instruction needs to be realized by a combination of existing instructions, which takes 10 times or more processing cycles as compared with the case of having the EQL instruction. In contrast, by having an EQL instruction set in this embodiment, even if it can be assumed that there is time in the processing cycle as described above, data can be processed at a much higher speed than the related-art technique that does not have an EQK instruction set. A distribution leveling process can be realized.
  • Patent Document 1 when having P1 to P16 processors, the average of P1 and P2 is obtained, the average of P1 and P3 is obtained, the average of P1 and P9 is obtained, the average of P1 and P5 is obtained, It is necessary to repeat the average calculation as shown below. As the number of processors increases, the average between the processors is calculated each time, and simulation and scheduling take time. Further, in Patent Document 1, the average of P1 to P16 is determined by each processor, and the control processor that controls the entire P1 to P16 is not the average. For this reason, the whole of each processor cannot be controlled, and the average of the whole of P1 to P16 cannot be obtained simultaneously. On the other hand, in the present embodiment, the data distribution leveling process can be realized at a much higher speed than the related art method.
  • each unit in the SIMD type parallel computing system of the above-described embodiment can also be realized as a method, and various processing procedures as the method will be described with reference to FIG. 9 and FIG. 9 and 10 are flowcharts showing an example of processing procedures in the SIMD type parallel computing system.
  • a control method of the control processor according to the present embodiment is performed by a computer provided in the control processor in a parallel computer system including a plurality of processing elements and a control processor that controls processing operations of the plurality of processing elements. It is intended for things.
  • This control processor control method basically has an average value calculation processing step (for example, step S201 shown in FIG. 9) in which a computer provided in the control processor performs a process of calculating an average value of the number of data over all processing elements. ), A transfer processing step (for example, step S202 shown in FIG. 9) for transferring the average value to each average value information temporary storage unit of all the processing elements, and on each processing element, in the processing element Data distribution that equalizes the number of data for each processing element among the processing elements until the difference between the number of data in the data number storage unit and the average value in the average value information temporary storage unit is within 1 Control processing that repeatedly executes leveling instructions Cormorant execution control step (e.g., step S203 shown in FIG. 9) and may include.
  • Cormorant execution control step e.g., step S203 shown in FIG. 9 and may include.
  • the processing method of the processing element according to the present embodiment includes a computer provided in the processing element in a parallel computer system that includes a plurality of processing elements and a control processor that controls the processing operation of each of the plurality of processing elements. Is intended for processing. *
  • a computer provided in the processing element is adjacent to the first processing element and the first number of data in the own processing element by a data distribution leveling instruction from the control processor.
  • a first comparison result information calculation processing step (for example, step S301 shown in FIG. 10 or the like) for performing processing for calculating the first comparison result information in the own processing element that is compared with the second number of data in the first adjacent processing element. )
  • a second comparison result information acquisition step (for example, step S302 shown in FIG.
  • the data storage unit in the own processing element, the data number storage unit, the head data storage unit for temporarily storing the head data among the data in the data storage unit, are controlled, and the data for each processing element
  • a leveling process step for example, step S303 shown in FIG. 10) for equalizing the number among the processing elements.
  • first comparison result information further comparing the first data number in the own processing element and a second data number in one first adjacent processing element adjacent to the own processing element.
  • the exclusive logic for calculating exclusive OR information of the comparison step for calculating the second comparison result information as the comparison result in the other adjacent second adjacent processing element and the first comparison result information
  • a logical product operation step of calculating logical product information of the sum operation step, logical inversion information of the second comparison result information, and the first comparison result information,
  • the number of data and the exclusive OR information are added and subtracted, and one of the operations is selectively controlled.
  • Serial may have a subtraction operation step of calculating a subtraction operation information, which is one of the calculation results.
  • the leading data in the PE (n-1) RAM is transferred to the PE (n) RAM, and the leading data in the PE (n) RAM is changed to PE (n + 1).
  • the leading data in the PE (n-1) RAM does not enter the PE (n) RAM but enters the PE (n) via the register (md) in S0b. It may be transferred to the (n + 1) RAM to become S1b.
  • the SIMD type parallel computer system 500 has a PE connection line 220a and a PE connection line 220b. It is also possible to configure so that data to be transferred in the data leveling process can be transferred in one direction using the PE connection line 220a and in the reverse direction using the PE connection line 220b.
  • each PE can have both the configuration of the first embodiment and the configuration of the second embodiment.
  • the control processor can also perform switching control between a mode in one direction, a mode in the opposite direction, and a mode in which both are used.
  • a line buffer 510 may be provided with each of a plurality of PEs as one block, as shown in FIG.
  • the number, position, shape, and the like of the constituent members are not limited to the above-described embodiment, and the number, position, shape, and the like suitable for implementing the present invention can be achieved. That is, in the above embodiment, the case where the number of PEs is eight is shown, but the present invention does not limit the number of these.
  • SIMD type parallel computing system as described above can be configured as a microcomputer mounted on one chip, and further, a display device 600 can be configured as shown in FIG.
  • the display device 600 includes a pixel matrix unit 610 and an integrated circuit 620 as a microcomputer so that each PE corresponds to each column of each pixel of the pixel matrix unit 610. According to such a configuration, high-speed image processing is possible.
  • the data distribution leveling instruction generation unit is configured such that the number of data is different when the number of data is different between the processing elements. It is possible to designate a processing operation for moving data by specific unit data from one processing element having a large number of data to the other processing element having a small number of data.
  • processing elements can be connected in parallel and coupled in a ring shape in which the rightmost processing element is connected to the leftmost processing element.
  • the data distribution leveling command generating unit can designate a processing operation for performing data movement in the leveling process in one direction between the processing elements.
  • the processing element may include a comparison unit, an exclusive OR operation unit, an addition / subtraction operation unit, and an AND operation unit.
  • the data distribution leveling instruction generation unit may designate an operation for executing the comparison unit, the exclusive OR operation unit, the addition / subtraction operation unit, and the AND operation unit in series. it can.
  • the processing element includes a data storage unit that temporarily stores the processing data or the data of the external memory transfer data, and a data number storage unit that counts and temporarily stores the number of data in the data storage unit. it can.
  • the comparison unit obtains first comparison result information comparing the first number of data in the own processing element and the second number of data in one first adjacent processing element adjacent to the own processing element. Can be calculated.
  • the exclusive OR operation unit may calculate exclusive OR information between second comparison result information that is a comparison result in the other adjacent second adjacent processing element and the first comparison result information. it can.
  • the AND operation unit can calculate logical product information of the logical inversion information of the second comparison result information and the first comparison result information.
  • the addition / subtraction operation unit selects one of an addition operation and a subtraction operation for the first data number and the exclusive OR information based on the logical product information, and the one operation
  • the resulting addition / subtraction operation information can be calculated, and the number of data in the data number storage unit can be updated by this addition / subtraction operation information.
  • the processing element may have a head data storage unit that temporarily stores head data among the data in the data storage unit.
  • the logical product operation unit uses the logical product information as a write enable signal that permits a process of writing adjacent head data in the head data storage unit of the first adjacent processing element to the data storage unit of the own processing element. Can be input to the data storage unit.
  • the addition / subtraction operation unit can input the addition / subtraction operation information to the data storage unit as information for designating an address when the adjacent head data is written to the data storage unit.
  • the comparison unit selects the first comparison result as information for selecting whether to input the adjacent head data to the head data storage unit or to input the head data in the data storage unit of the own processing element.
  • Information can be input to the head data storage unit, and the head data input to the head data storage unit can be controlled.
  • the comparison unit subtracts the second data number of one of the adjacent first processing elements adjacent to the first data number of the own processing element, discards the subtraction result, and outputs the second data Carry flag information indicating whether the number is larger than the first data number can be output.
  • a part of each block in the block diagrams shown in FIG. 2 and FIG. 5 is a software module that shows a state functionalized by the program by the computer executing various programs stored in an appropriate memory. It may be a configuration.
  • the physical configuration is, for example, one or a plurality of CPUs (or one or a plurality of CPUs and one or a plurality of memories), but the software configuration by each unit (circuit) is a plurality of CPUs that are exhibited by the control of the program.
  • Each function is expressed as a component by a plurality of units (means).
  • each part described above can be interpreted as a computer functionalized by a program described with the function of the program, or a plurality of electronic circuits permanently functionalized by specific hardware. It can also be interpreted as a description of a device composed of blocks. Therefore, these functional blocks can be realized in various forms by hardware only, software only, or a combination thereof, and is not limited to any one.
  • each unit may be configured as a device, and the system may be configured by these devices. Conversely, a system in which each unit is configured as a single device may be used.
  • program of the present invention that realizes the functions of the above-described embodiments is a program corresponding to the processing unit (processing means), functions, and the like shown in the various block diagrams in the above-described embodiments, flowcharts, and the like.
  • a control program is a computer provided with the control processor in a parallel computer system that includes a plurality of processing elements and a control processor that controls processing operations of the plurality of processing elements. It is possible to realize various functions.
  • the control program includes an average value calculation processing function for performing processing for calculating an average value of the number of data over all processing elements, and transfer for performing processing for transferring the average value to each average value information temporary storage unit of the all processing elements. On each processing element, until the difference between the processing function and the number of data in the data number storage unit in the processing element and the average value in the average value information temporary storage unit is within 1 on each processing element An execution control function for executing a control process for repeatedly executing a data distribution leveling command that equalizes the number of data among the processing elements can be realized in the computer.
  • an arithmetic processing program is provided on a computer provided with the processing element in a parallel computer system including a plurality of processing elements and a control processor that controls processing operations of the plurality of processing elements.
  • a function can be realized.
  • the arithmetic processing program calculates a first data number in the own processing element and a second data number in one first adjacent processing element adjacent to the own processing element.
  • First comparison result information calculation processing function for performing processing for calculating first comparison result information in the compared own processing element, and second comparison result information for acquiring second comparison result information in the other adjacent second adjacent processing element
  • the first data of the data storage unit, the data number storage unit, and the data storage unit in the processing element is temporarily stored. Control the top data storage to A leveling processing function to equalize the number of data for each processing element between the respective processing elements may be implemented on the computer.
  • control rule examples include the following (a) to (d) as shown in the first embodiment and the second embodiment.
  • (A) cf is 0 and right_cf (left_cf) is 0: own cntr, the content of own md is not updated (b) cf is 0 and right_cf (left_cf) is 1: decrement of own cntr, and the content of own md is next (C) cf is 1 and right_cf (left_cf) is 0: self cntr is incremented by 1, and the head of the process or transfer data and the content of self md are updated with the content of md of the left or right adjacent PE (D) cf is 1 and right_cf (left_cf) is 1: update the own cntr, update the processing or transfer data head and the content of the own md with the content of the md of the adjacent PE on the left or right
  • the arithmetic processing program compares the first data number in the own processing element with the second data number in one first adjacent processing element adjacent to the own processing element in the leveling processing function.
  • Exclusive OR information of a comparison function for calculating first comparison result information, second comparison result information that is a comparison result in the other adjacent second adjacent processing element, and the first comparison result information A logical product operation function for calculating logical product information of the exclusive logical sum operation function to be calculated, logical inversion information of the second comparison result information, and the first comparison result information; and the logical product information Based on the first data number and the exclusive OR information, one of the addition operation and the subtraction operation is selected and controlled. Both the addition and subtraction calculation function of calculating a subtraction operation information is an arithmetic result of the one can be achieved in the computer.
  • the program may be in any form, such as an object code or a program executed by an interpreter.
  • the program can be implemented in a high level procedural or object oriented programming language, or in assembly or machine language as required. In either case, the language may be a compiler or interpreted language.
  • the program (CPU) is read from a storage medium such as a ROM storing the program and executed, or the program is downloaded to the computer via communication means. If executed after that, the above-described apparatus according to the present invention can be realized relatively easily.
  • the software of the apparatus is embodied as an embodiment of the idea of the invention, it naturally exists and is used on a storage medium storing such software.
  • the program does not have any problem regarding the replication stage such as the primary replica and the secondary replica. If the program is supplied using a communication line, the communication line becomes a transmission medium and the present invention is used. Furthermore, the dependent claims in the apparatus may be configured to correspond to the dependent claims in the method and the program.
  • the structure which recorded the above-mentioned program (a control program is included) on the information recording medium may be sufficient.
  • the above program can be recorded on an information recording medium such as a magnetic recording medium, an optical recording medium, or a ROM to provide the program.
  • Use of an information recording medium in which such a program is recorded in a computer constitutes a convenient information processing apparatus.
  • ROM read only memory
  • RAM random access memory
  • semiconductor memory such as flash memory and SRAM
  • an integrated circuit or a USB memory
  • memory card optical disk, magneto-optical disk, magnetic recording medium and the like including them.
  • flexible disk CD-ROM, CD-R, CD-RW, FD, DVDROM, HDDVD (HDDVD-R-SL ⁇ single layer>, HDDVD-R-DL ⁇ double layer>, HDDVD-RW) -SL, HDDVD-RW-DL, HDDVD-RAM-SL), DVD ⁇ R-SL, DVD ⁇ R-DL, DVD ⁇ RW-SL, DVD ⁇ RW-DL, DVD-RAM, Blu-Ray Disk ⁇ registration Trademarks> (BD-R-SL, BD-R-DL, BD-RE-SL, BD-RE-DL), O, ZIP, magnetic card, magnetic tape, SD card, memory stick, non-volatile memory card, IC card, and other portable media, recording
  • the “information recording medium” is a medium that dynamically holds a program for a short time (transmission medium), such as a communication line when transmitting a program via a network such as the Internet or a communication line such as a telephone line. Or a transmission wave), a volatile memory inside a computer system serving as a server or a client in that case, and those holding a program for a certain period of time.
  • transmission medium such as a communication line when transmitting a program via a network such as the Internet or a communication line such as a telephone line. Or a transmission wave
  • a volatile memory inside a computer system serving as a server or a client in that case and those holding a program for a certain period of time.
  • system refers to a logical collection of a plurality of devices, and it does not matter whether or not each component device is in the same casing.
  • present invention may be applied to a system composed of a plurality of devices, or may be applied to an apparatus composed of one device.
  • the steps shown in the flowchart include processes that are executed in parallel or individually even if they are not necessarily processed in time series, as well as processes that are executed in time series according to the described procedure. It is a waste.
  • the order in which the program procedures (steps) are executed can be changed. Further, certain procedures (steps) described herein can be implemented, removed, added, or rearranged as a combined procedure (step) as needed for implementation.
  • each unit may be formed by an integrated circuit such as an LSI. These may be individually made into one chip, or may be made into one chip so as to include a part or all of them.
  • the LSI may include other functional blocks.
  • the method of circuit integration is not limited to LSI, and implementation with a dedicated circuit or a general-purpose processor is also possible. Further, if integrated circuit technology comes out to replace LSI's as a result of the advancement of semiconductor technology or a derivative other technology, it is naturally also possible to carry out function block integration using this technology.
  • control method using the EQL command is not necessarily limited to a substantial device, and it can be easily understood that the method also functions as a method.
  • the invention relating to the method is not necessarily limited to a substantial apparatus, and there is no difference that the method is also effective.
  • an SIMD type parallel computer system, a microcomputer, a control processor, a processing device, and the like can be included as an example for realizing the method.
  • such an apparatus may exist alone, or may be used in a state of being incorporated in a certain device (for example, a display device).
  • the embodiment is included. Therefore, it can be changed as appropriate, such as software or hardware.
  • the software of the apparatus is embodied as an embodiment of the idea of the invention, it naturally exists on the storage medium storing the software and is used.
  • a part is software and a part is realized by hardware, and a part is stored on a storage medium and is read as needed. It may be as a thing.
  • a configuration using hardware or an operating system may be used, or may be implemented separately from these.
  • the scope of the invention is not limited to the illustrated example.
  • the above embodiments include various stages, and various inventions can be extracted by appropriately combining a plurality of disclosed constituent elements. That is, examples include combinations of the above-described embodiments or any one of them and any of the modifications.
  • the obvious effects from the respective configurations disclosed in the embodiments and their modifications are naturally included as the effects of the embodiments. it can.
  • the configuration capable of exhibiting all the effects described in the present embodiment is not necessarily an essential component of the essential features of the present invention.
  • an embodiment based on a configuration in which some of the configuration requirements are deleted from all the configuration requirements shown in the embodiment, and a technical scope based on the configuration may be an invention.
  • the present invention can realize a SIMD type parallel computing system capable of efficiently realizing data distribution leveling processing at low cost when the number of processing or transfer data between PEs is imbalanced.
  • SIMD type parallel computer system 101 (n ⁇ 1), 101 (n), 101 (n + 1) RAM (data storage unit) 102 (n ⁇ 1), 102 (n) register (cntr) (data number storage unit) 103 (n-1), 103 (n) register (md) (first data storage unit) 104 (n-1), 104 (n) Subtraction operation unit (sub) 105 (n-1), 105 (n) AND operation unit (and) 106 (n ⁇ 1), 106 (n) exclusive OR operation unit (xor) 107 (n-1), 107 (n) Addition / subtraction operation unit (and / sub) 110 (n ⁇ 1), 110 (n) leveling processing unit 200 PE array 201 (n ⁇ 1), 201 (n), 201 (n + 1) PE (processing element) (leveling device) 210 Control processor (CP) 212 Data Distribution Leveling Instruction Generation Unit 214 Execution Control Unit 220 PE Connection Line

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Image Processing (AREA)

Abstract

【課題】処理負荷の均一化を効率よく実現する。 【解決手段】SIMD型並列計算システムに備えた個々のプロセッシングエレメントは、処理する或いは転送するデータを格納するデータ記憶手段と、前記データのデータ数を格納するデータ数記憶素子と、前記データのうち先頭のデータを格納する先頭データ記憶素子とを有している。さらに、一のプロセッシングエレメントのデータ数と、自プロセッシングエレメントのデータ数とを比較し、前記自プロセッシングエレメントの比較結果と、他のプロセッシングエレメントでの比較結果とで決まるルールに従い、前記データ記憶手段と前記データ数記憶素子と前記先頭データ記憶素子との内容を更新する動作と、一のプロセッシングエレメントのデータを自プロセッシングエレメントに移動させる動作とを指定するデータ分布平準化命令を発する制御プロセッサを有する。

Description

SIMD型並列計算機システム、SIMD型並列計算方法及び制御プログラム
 本発明は、SIMD型並列計算機システムに関し、より詳細には、一つの制御プロセッサ(CP)によって制御される多数結合したプロセッシングエレメント(PE)で構成されるSIMD型並列計算システム、SIMD型並列計算方法及び制御プログラムに関する。
 並列計算システムの一例として、ビデオ信号などの画像処理用に用いられているSIMD(Single Instruction Multiple Data)型並列計算システムが知られている。
 このようなSIMD型並列計算システムの関連技術として、例えば以下に示す非特許文献1などが挙げられる。
 非特許文献1で提示されるSIMD型並列計算システムでは、リング状に各プロセッシングエレメント(PE)を結合線で結合し、各PEを制御プロセッサ(CP)によりSIMD型制御を行う。このSIMD型制御では、各プロセッシングエレメント(PE)が制御プロセッサ(CP)から発行される命令を自ローカルメモリ上のデータに適用することにより、複数のプロセッシングエレメント(PE)による並列処理を実現している。
 また、非特許文献1には、図16に示すように、全プロセッシングエレメント(PE)のメモリ(RAM)ブロックを跨るデータ(ライン:One Line)を単位に、外部メモリとの間にラインバッファ(Line Buffer)でメモリ転送を行う構成が開示されている。
 一方、並列計算システムの他の例として、複数のプロセッサが各々独立して異なるデータを各々処理するMIMD(Multiple Instruction Multiple Data)型並列計算システムが知られている。このMIMD型並列計算システムの関連技術の例として、例えば以下に示す特許文献1などが挙げられる。
 特許文献1には、MIMD並列計算システム向けの手法として、プロセッサ間でデータ量を示す数値を並行して交信し合って、所定のシミュレーションによるスケジューリングを各プロセッサで並列に実行し、最後にデータを、前記スケジューリングの結果を元にプロセッサ間で送信しあって再分配する構成が開示されている。
 また、特許文献1では、所定のシミュレーションによるスケジューリングを行うために、一つのプロセッサが、CPUと、隣接するL個のプロセッサとの送受信を行う通信プロセッサCM1~CMLを有している。また、通信プロセッサCM1~CMLは、L個のチャネル(通信路)で隣接プロセッサへ接続される。
京 昭倫著「128個の4ウェイVLIW型RISCコアを集積した車載向け動画認識LSI」電子情報通信学会研究会報告、集積回路研究会(ICD),2003年5月、Vol.103,No.89,pp.19-24 特開昭63-147257号公報
 ところで、非特許文献1のSIMD型並列計算システムでは、上記のように一つの命令ストリームの下で相異なるデータ値に対し並列処理を行う構成であるため、プロセッシングエレメント(PE)間で計算すべきデータの数が異なる場合では、計算すべきデータ数少ないために処理が速く終わったプロセッシングエレメント(PE)であっても次の処理に移れるのは、全プロセッシングエレメント(PE)が現処理を終了した時に限る。
 そのため、個々の処理の所要時間は、通常、最長の処理時間を要したPEによって支配されてしまう。
 また、非特許文献1のSIMD型並列計算システムでは、各プロセッシングエレメント(PE)毎に転送したいデータ数が各プロセッシングエレメント(PE)毎に異なる場合では、全プロセッシングエレメント(PE)の間での転送データ数の最大値(図15の場合の最大ライン数(maximum number of lines))によって、外部メモリとのデータ転送に要する処理時間が支配されてしまう。
 このため、例えば転送データ数が同じである図15に示すデータ分布状態(ライン分布状態)と図16に示すデータ分布状態であっても、データのプロセッシングエレメント(PE)間配置が図15に示すデータ分布状態(ライン分布状態)に偏りがある場合の方が、図16に示すデータ分布状態に比して、データ転送に約2倍以上の処理時間がかかってしまうという課題が存在していた。
 さらに、特許文献1では、各プロセッサにデータを再配分する際に、各プロセッサ間でデータ量を示す数値を並行して交信し合って、所定のシミュレーションによるスケジューリングを行う必要があり、プロセッサ数の増大に伴い処理時間がかかってしまう。
 また、特許文献1では、一つのプロセッサにつき通信プロセッサCM1~CMLやL個のチャネル(通信路)などの煩雑な装備が必要であり、ハードウェアコストが増大する。
 本発明の目的は、
外部へのメモリ転送に際しての転送対象データ数、或いはプロセッシングエレメント(PE)を選ばない処理の場合でのプロセッシングエレメント(PE)毎への割り当て処理数を、プロセッシングエレメント(PE)相互間で効率よく均一化させることが可能なSIMD型並列計算システム、SIMD型並列計算方法及び制御プログラムを提供することにある。
 前記目的を達成するため、本発明に係るSIMD型並列計算機システムは、1つの命令ストリームの下で相異なるデータ値に対して、リング状に結合した2以上のプロセッシングエレメントで並列処理を行うSIMD型並列計算システムであって、
 前記個々のプロセッシングエレメントは、
 個々のプロセッシングエレメントが処理する或いは転送するデータを格納するデータ記憶手段と、前記処理データまたは前記転送データのデータ数を格納するデータ数記憶素子と、前記データ記憶手段に格納されている前記処理データまたは転送データのうち先頭のデータを格納する先頭データ記憶素子とを有し、
 さらに、前記リング状に結合された2以上のプロセッシングエレメントのうち隣接する一のプロセッシングエレメントのデータ数記憶素子に格納された処理データまたは転送データのデータ数と、自プロセッシングエレメントの前記データ数記憶素子が格納する前記処理データまたは転送データのデータ数とを比較し、前記自プロセッシングエレメントの比較結果と、隣接する他のプロセッシングエレメントでの比較結果とで決まるルールに従い、自プロセッシングエレメントの前記データ記憶手段と前記データ数記憶素子と前記先頭データ記憶素子とに格納されているデータの内容を更新する動作と、隣接するプロセッシングエレメントで格納されている処理データまたは転送データを自プロセッシングエレメントの前記データ記憶手段と前記先頭データ記憶素子に移動させる動作とを指定するデータ分布平準化命令を前記個々のプロセッシングエレメントに発する制御プロセッサを有することを特徴とする。
 本発明に係るSIMD型並列計算方法は、1つの命令ストリームの下で相異なるデータ値に対して、リング状に結合した2以上のプロセッシングエレメントで並列処理を行うSIMD型並列計算方法であって、
 前記リング状に結合された2以上のプロセッシングエレメントのうち隣接する一のプロセッシングエレメントが格納している処理データまたは転送データのデータ数と、自プロセッシングエレメントが格納している処理データまたは転送データのデータ数とを比較し、
 前記比較結果と、隣接する他のプロセッシングエレメントでの比較結果とで決まるルールに従い、自プロセッシングエレメントが格納しているデータの内容を更新する動作と、隣接するプロセッシングエレメントが格納している処理データまたは転送データを自プロセッシングエレメントに移動させる動作とを個々のプロセッイングエレメントに実行させることを特徴とする。
 本発明に係るSIMD型並列計算用制御プログラムは、1つの命令ストリームの下で相異なるデータ値に対して、SIMD型並列計算システムにおけるリング状に結合した2以上のプロセッシングエレメントで実行する並列処理の制御を行う制御プログラムであって、
 前記個々のプロセッシングエレメントは、
 個々のプロセッシングエレメントが処理するデータを格納するデータ記憶手段と、
 前記データのデータ数を格納するデータ数記憶素子と、前記データ記憶手段に格納されている前記データの一部を格納するデータ記憶素子とを有しており、
 コンピュータに、
 前記リング状に結合された2以上のプロセッシングエレメントのうち一のプロセッシングエレメントのデータ数記憶素子に格納されたデータのデータ数と、自プロセッシングエレメントの前記データ数記憶素子が格納する前記データのデータ数とを比較する機能と、
 前記自プロセッシングエレメントの比較結果と、他のプロセッシングエレメントでの比較結果とで決まるルールに従い、自プロセッシングエレメントの前記データ記憶手段と前記データ数記憶素子と前記データ記憶素子とに格納されているデータの内容を更新させる指令を個々のプロセッシングエレメントに発する機能と、
 一のプロセッシングエレメントで格納されているデータを自プロセッシングエレメントに移動させる指令を個々のプロセッシングエレメントに発する機能とを実行させることを特徴とする。
 本発明によれば、データ分布平準化命令EQLを、単純な演算の少ない組み合せで実現できるため、単一マシンサイクルで実装可能であって、少ないハードウェアコストの増加に抑えつつ、データ数を均一化する処理を効率よく実現できる。
 以下、本発明の実施形態を図に基づいて詳細に説明する。
 本発明の実施形態に係るSIMD型並列計算システムは図1,図2,図4,図5及び図12に示すように、1つの命令ストリームの下で相異なるデータ値に対して、リング状に結合した2以上のプロセッシングエレメント201(201(n-1),201(n),201(n+1):PEアレイ200)で並列処理を行うSIMD型並列計算システムであって、基本的な構成として、前記個々のプロセッシングエレメント201は、個々のプロセッシングエレメント200が処理するデータ(処理データ或いは転送データ)を格納するデータ記憶手段101(101(n-1),101(n),101(n+1))と、前記処理データまたは前記転送データのデータ数を格納するデータ数記憶素子102(102(n-1),102(n),102(n+1))と、前記データ記憶手段101に格納されている前記データの一部(例えば先頭のデータ)を格納するデータ記憶素子(103(n-1),103(n),103(n+1))とを有しており、
 さらに、前記リング状に結合された2以上のプロセッシングエレメント201のうち一のプロセッシングエレメント201のデータ数記憶素子102に格納されたデータ(処理データ或いは転送テータ)のデータ数と、自プロセッシングエレメントの前記データ数記憶素子102が格納する前記データのデータ数とを比較し、前記自プロセッシングエレメントの比較結果と、他のプロセッシングエレメントでの比較結果とで決まるルールに従い、自プロセッシングエレメント201の前記データ記憶手段101と前記データ数記憶素子102と前記先頭データ記憶素子103とに格納されているデータの内容を更新する動作と、隣接するプロセッシングエレメント201に格納されている処理データまたは転送データを自プロセッシングエレメント201の前記データ記憶手段101と前記先頭データ記憶素子103に移動させる動作とを指定するデータ分布平準化命令EQLを個々のプロセッシングエレメント201に発する制御プロセッサ210(104,105,106,107を含む)を有することを特徴とする。
 本発明の実施形態では、1つの命令ストリームの下で相異なるデータ値に対して、リング状に結合した2以上のプロセッシングエレメントで並列処理を行う際に、前記リング状に結合された2以上のプロセッシングエレメント201のうち一のプロセッシングエレメント200が格納しているデータのデータ数と、自プロセッシングエレメントが格納しているデータのデータ数とを比較する。そして、前記比較結果と、他のプロセッシングエレメント201での比較結果とで決まるルールに従い、自プロセッシングエレメント201が格納しているデータの内容を更新する動作と、隣接するプロセッシングエレメント201が格納しているデータを自プロセッシングエレメント201に移動させる動作とを個々のプロセッシングエレメントに実行させる。
 より具体的に説明すると、本発明の実施形態における前記制御プロセッサ210(104,105,106,107を含む)は、前記比較するデータ数のうち前者のデータ数cntr_left(又はcntr_right)が後者のデータ数cntrよりも大きい場合にキャリーフラッグ情報cfを算出する。前記制御プロセッサ210(104,105,106を含む)は、前記キャリーフラッグ情報cfとして、前記比較するデータ数のうち前者のデータ数cntr_left(又はcntr_right)が後者のデータ数cntrよりも大きい場合“1”、小さい場合に“0”となるキャリーフラッグ情報を算出する。
 前記制御プロセッサ210(104,105,106,107を含む)は、前記ルールとして、
 (1)自プロセッシングエレメント201でのキャリーフラッグ情報が“0”かつ隣接するプロセッシングエレメント201でのキャリーフラッグ情報が“0”であるとき、自プロセッシングエレメント201の前記データ数記憶素子102と前記先頭データ記憶素子103との内容を更新しない、
 (2)自プロセッシングエレメント201でのキャリーフラッグ情報が“0”かつ隣接するプロセッシングエレメント201でのキャリーフラッグ情報が“1”であるとき、自プロセッシングエレメント201の前記データ数記憶素子102のデータ数を1デクリメントし、前記先頭データ記憶素子103の内容を先頭データに続く次の処理データまたは次の転送データで更新する、
 (3)自プロセッシングエレメント201でのキャリーフラッグ情報が“1”かつ隣接するプロセッシングエレメント201でのキャリーフラッグ情報が“0”であるとき、自プロセッシングエレメント201の前記データ数記憶素子102のデータ数を1インクリメントし、前記先頭データ記憶素子103の内容を隣接するプロセッシングエレメント201の処理データまたは転送データの先頭データの内容で更新する、
 (4)自プロセッシングエレメント201でのキャリーフラッグ情報が“1”かつ隣接するプロセッシングエレメント201でのキャリーフラッグ情報が“1”であるとき、自プロセッシングエレメント201の前記データ数記憶素子102のデータ数を更新せず、前記先頭データ記憶素子103の内容を隣接するプロセッシングエレメント201の処理データまたは転送データの先頭データの内容で更新する、
という情報を保有している。
 前記制御プロセッサ210(104,105,106,107を含む)は、前記ルールに基づくデータ分布平準化命令EQLを発し、前記リング状に結合した全てのプロセッシングエレメント201に渡る処理データまたは転送データのデータ数の平均値を求め、前記全てのプロセッシング201の処理データまたは転送データのデータ数と前記平均値との差が閾値以下になるまで前記データ分布平準化命令を発する。
 以上のように、制御プロセッサ210が全プロセッシング201に渡るデータ数cntr値の平均値を求め、次に全プロセッシング201のデータ数cntr値と前記平均値との差閾値(例えば1)以下に収まるまで、データ分布平準化命令EQLを繰り返し発行してPEアレイ200を制御することにより、データ数cntrの最大値と最小値の差と全プロセッシング201の数との和に等しい程度の回数だけデータ分布平準化命令を実行すれば、全プロセッシング201の処理データまたは転送データをほぼ同一数に均せるようになる。
 このような構成のSIMD型並列計算機システムでは、「データ分布平準化命令EQL」は、単純な演算の少ない組み合せで実現できるため単一マシンサイクルで実装可能であるのに対し、EQL命令を持たない例えば非特許文献1で開示されているSIMD型並列計算システムがEQL命令相当の処理を行うためには、10程度のマシンサイクルがかかる。
 そのため、本発明の実施形態に係る「データ分布平準化命令EQL」を有するSIMD型並列計算機システムは、少ないハードウェアコストの増加に抑えつつ、データ数を均一化する処理を効率よく実現できる。
 以下、このような本発明の実施形態に係る「SIMD型並列計算機システム」のさらに具体例について、図面を参照して説明する。以下の説明では、データ数記憶素子102及び先頭データ記憶素子103としてレジスタを用い、データ記憶手段101としてRAM(Random Access Memory)を用いている。また、自プロセッシングエレメントを図に示すプロセッシングエレメント201(n)、隣接するプロセッシングエレメントを図に示すプロセッシングエレメント201(n-1)或いはプロセッシングエレメント201(n+1)として説明する。
〔第1の実施の形態〕
 (SIMD型並列計算機システムの全体構成)
 先ず、本実施形態のSIMD型並列計算機システムの具体的構成について、全体構成から説明し、続いて各部の詳細構成について説明することとする。図1は、本発明の第1実施形態に係るSIMD型並列計算機システムの全体の概略構成の一例を示すブロック図である。
 図1に示すように、本実施の形態のSIMD型並列計算機システム1は、多数個のプロセッシングエレメント(PE)201(n―1),201(n),201(n+1)・・・をリング状に結合したプロセッシングエレメントアレイ(PEアレイ)200と、PEアレイ200に命令を供給し、PEアレイ200全体を制御するための制御プロセッサ(CP)210とを有している。
 また、隣接する各プロセッシングエレメント201(n―1)とプロセッシングエレメント201(n)同士、プロセッシングエレメント201(n)とプロセッシングエレメント201(n+1)同士は、ネットワークまたはPE間結合線220によって双方向でリング状に接続されている。
 ここで、前記各プロセッシングエレメント201は、図の最右端のプロセッシングエレメント201が最左端のプロセッシングエレメント201に接続してリング状に結合する。また、プロセッシングエレメント201間の結合線220は、双方向で情報の授受を行う。
 本実施の形態では、データ平準化処理における各プロセッシングエレメント201間を転送する転送データは、図の左から右に向けて一方向で転送可能である。ただし、後述するキャリーフラグ情報cfなどの他の制御情報及び処理データは、プロセッシングエレメント201間で双方に遣り取りされる。このため、PE間結合線220は、データ平準化処理における転送するデータ用の結合線と、他の制御情報を転送する結合線とを有してもよい。
 各プロセッシングエレメント201(n―1)、プロセッシングエレメント201(n)、プロセッシングエレメント201(n+1)、・・・は、各々独立にアクセス可能なデータ記憶手段としてのRAM101(n-1)、RAM101(n)、RAM101(n+1)、・・・をそれぞれ有する。
 制御プロセッサ210は、前記各プロセッシングエレメント201毎の処理データのデータ数又は外部へのメモリ転送データのデータ数を前記各プロセッシングエレメント201間で均一化するための処理動作を実行するデータ分布平準化命令EQLを生成し出力するデータ分布平準化命令生成部212と、前記データ分布平準化命令EQLを前記各プロセッシングエレメント201に対して繰り返し実行する処理動作を制御する実行制御部214とを有する。さらに、制御プロセッサ210は、各プロセッシングエレメント201に組み込んだ、減算演算部(sub)104,排他的論理和演算部(xor)106及び加減算演算部107を有している。
 (プロセッシングエレメントの詳細構成)
 より詳細には、個々のプロセッシングエレメント201は、図2に示すように、処理データまたは転送データなどのデータ(データの本体あるいはその関連情報)を格納するRAM101(データ記憶手段)と、前記データのデータ数を格納するレジスタ(cntr)102(データ数記憶素子)と、RAM101内に格納されているデータのうち先頭データを格納するレジスタ(md)103(先頭データ記憶素子)とを有している。
 また、データ分布平準化命令EQLが発行された際、プロセッシングエレメント201(n)は、左隣のプロセッシングエレメント201(n-1)のレジスタ102(n-1)に格納されているデータ数cntrを左隣のプロセッシングエレメント201(n-1)からのデータ数cntr_leftとして受け取る。またプロセッシングエレメント201(n)は、左隣のプロセッシングエレメント201(n-1)のレジスタ103(n-1)に格納されている先頭データmdを左隣のプロセッシングエレメント201(n-1)からの先頭データmd_leftとして受け取る。そして、プロセッシングエレメント201(n)は、右隣のプロセッシングエレメント201(n-1)のキャリーフラッグ情報cfを右隣のプロセッシングエレメント201(n+1)からのキャリーフラッグ情報cf_rightとして結合線220を介して入力として受け取る。
 ここに、キャリーフラッグ情報cfとは、後述する減算演算部104が、自プロセッシングエレメント201(n)のレジスタ102(n)が格納しているデータ数cntrと、左隣のプロセッシングエレメント(n-1)のレジスタ102(n-1)が格納しているデータ数cntr_leftとを比較した結果に応じて出力する情報である。
 また、図2を参照すると、本第1の実施の形態では、データ分布平準化命令EQLをSIMD型並列計算システム1に実行させる制御プロセッサ210は、個々のプロセッシングエレメント201に、減算演算部(sub)104と、排他的論理和演算部(xor)106と、論理積演算部(and)105と、加減算演算部(add/sub)107とを有しており、これらは、前記データ分布平準化命令生成部212にて生成発行されたEQL命令により起動する。
 ここで、本実施の形態における減算演算部(sub)104、排他的論理和演算部(xor)106、論理積演算部(and)105、加減算演算部(add/sub)107により、平準化処理部110を構成する。
 以下の説明では、自プロセッシングエレメント201(n)に組み込んだ、減算演算部104(n)、排他的論理和演算部106(n)、論理積演算部105(n)及び加減演算部107(n)の構成について説明するが、自プロセッシングエレメント201(n)に隣接する左隣のプロセッシングエレメント201(n-1)或いは右隣のプロセッシングエレメント201(n+1)がデータ分布平準化命令EQLを実行する際には、それらのプロセッシングエレメント201(n-1),(n+1)の算演算部104(n-1),(n+1)、排他的論理和演算部106(n-1),(n+1)、論理積演算部105(n-1),(n+1)及び加減演算部107(n-1),(n+1)も同様に構成されている。
 自プロセッシングエレメント201(n)の減算演算部104は、自プロセッシングエレメント201(n)のレジスタ102(n)が格納しているデータ数cntrと、左隣のプロセッシングエレメント201(n-1)のレジスタ102(n-1)が格納しているデータ数cntr_leftを比較する、具体的にはこれらのデータ数を減算処理して、前者のデータ数cntr_leftが後者のデータ数cntrよりも大きければ“1”、そうでなければ“0”の値となるキャリーフラッグ情報cfを出力する。そして、自プロセッシングエレメント201(n)の減算演算部104は、キャリーフラグ情報cfの値を自プロセッシングエレメント201(n)のレジスタ103(n)、論理積演算部105(n)、及び排他的論理和演算部106(n)へそれぞれ送る。
 自プロセッシングエレメント201(n)のレジスタ(md)103(n)は、自プロセッシングエレメント201(n)のRAM101(n-1)に格納された処理データまたは転送データのうち先頭データmdを格納している。そして、レジスタ103(n)は、自プロセッシングエレメント201(n)の減算演算部104(n)からの出力であるキャリーフラグ情報cfが「1」ならば、格納している先頭データmdの内容を、左隣のプロセッシングエレメント201(n-1)のレジスタ103(n-1)が格納している先頭データmd_leftの内容に更新する。
 また、自プロセッシングエレメント201(n)のレジスタ(md)103(n)は、自プロセッシングエレメント201(n)の減算演算部104(n)からの出力であるキャリーフラグ情報cfが「0」ならば、自プロセッシングエレメント201(n)のRAM101(n)に対する前サイクルでのリードアクセスの出力doutで先頭データmdの内容を更新する。
 自プロセッシングエレメント201(n)の論理積演算部105(n)は、右隣のプロセッシングエレメント201(n+1)の減算演算部104(n+1)が出力したキャリーフラグ情報cfを反転させたキャリーフラッグ情報cf_rightと自プロセッシングエレメント201(n)の減算演算部104(n)が出力したキャリーフラグ情報cfとの論理積をとり、その結果を自プロセッシングエレメント201(n)のRAM101(n)および加減算演算部107(n)へ出力する。
 RAM101(n)は、論理積演算部105(n)の出力をライト許可信号(ライトイネーブル信号)wenとして用いる。また、加減算演算部107(n)は、論理積演算部105(n)の出力を、加算を行う(論理積演算部105(n)の出力結果が「1」の場合)のか、あるいは減算を行う(論理積演算部105(n)の出力結果が0の場合)かの加減算選択信号として用いる。
 排他的論理和演算部106(n)は、自プロセッシングエレメント201(n)の減算演算部104(n)が出力したキャリーフラグ情報cfと、右隣のプロセッシングエレメント201(n+1)の減算演算部104(n+1)が出力したキャリーフラッグ情報cfを反転させたキャリーフラッグ情報cf_rightとの排他的論理和をとり、その結果を加減算演算部107(n)へ出力する。
 加減算演算部107(n)は、論理積演算部105(n)からの出力を加減算選択信号として加算と減算のいずれの動作を行うかを決定し、加算の場合(論理積演算部105(n)の出力結果が「1」の場合)はレジスタ102(n)が格納しているデータ数cntrの値と、排他的論理和演算部106(n)の出力値との加算処理を行い、減算の場合(論理積演算部105(n)の出力結果が「0」の場合)はレジスタ102(n)が格納しているデータ数cntrの値と、排他的論理和演算部106の出力値との減算処理を行う。そして、加減算演算部107(n)は、その出力値をレジスタ102(n)及びRAM101(n)に出力する。
 レジスタ102(n)は、加減算演算部107の演算結果を、格納する内容を更新するための更新指令信号として用いる。また、RAM101(n)は、例えば加減算演算部107の演算結果と所定のベースアドレス値とを加算した結果を、データ分布平準化命令EQLが実行されているサイクルにおけるRAM101へのアクセスアドレスaddrとして受け取る。
 図3を参照すると、自プロセッシングエレメント201(n)のキャリーフラッグ情報cfの値(“1”または“0”)と、右隣のプロセッシングエレメント201(n+1)のキャリーフラッグ情報cfを論理反転したキャリーフラッグ情報cf_rightの値(“1”または“0”)との組み合せに応じて、論理積演算部105(n)、排他的論理和演算部106(n)、加減算演算部107(n)の出力値、およびレジスタ(cntr)102及びレジスタ(md)103(n)の値がどのように変化するかを、RAM101(n)へライト許可信号wenが入力する場合と、RAM101(n)へアクセスアドレス信号addrが入力する場合とに分けて示している。
 (動作について)
 次に、制御プロセッサ210からデータ分布平準化命令EQLが発行された際におけるSIMD型並列計算機システムの動作について図2及び図3に基づいて説明する。における各部の動作について、図2及び図3を参照しつつ説明する。説明では、上述したように、自プロセッシングエレメントを図に示すプロセッシングエレメント201(n)、隣接するプロセッシングエレメントを図に示すプロセッシングエレメント201(n-1)或いはプロセッシングエレメント201(n+1)として説明する。
 プロセッシングエレメント(n-1)は、減算演算部(sub)104(n-1)と、排他的論理和演算部(xor)106(n-1)と、論理積演算部(and)105(n-1)と、加減算演算部(add/sub)107(n-1)と、レジスタ(cntr)102(n-1)(データ数格納部)と、レジスタ(md)103(n-1)(先頭データ格納部)と、RAM101(n-1)と、を含む。
 プロセッシングエレメント(n)は、減算演算部(sub)104(n)と、排他的論理和演算部(xor)106(n)と、論理積演算部(and)105(n)と、加減算演算部(add/sub)107(n)と、レジスタ(cntr)102(n)(データ数格納部)と、レジスタ(md)103(n)(先頭データ格納部)と、RAM101(n)と、を含む。
 プロセッシングエレメント(n+1)は、減算演算部(sub)104(n+1)と、排他的論理和演算部(xor)106(n+1)と、論理積演算部(and)105(n+1)と、加減算演算部(add/sub)107(n+1)と、レジスタ(cntr)102(n+1)(データ数格納部)と、レジスタ(md)103(n+1)(先頭データ格納部)と、RAM101(n+1)と、を含む。
 以下の説明では、図の左側のプロセッシングエレメントから右側のプロセッシングエレメントに処理データ或いは転送データが順次移動されて並列処理が行われる場合を想定して、データ分布平準化命令EQLを実行する場合を説明する。
 制御プロセッサ210(特にデータ分布平準化命令生成部212)は、データ分布平準化を行うためのデータ分布平準化命令EQLを発行する際、プロセッシングエレメント(n-1),(n),(n-1)を含めて、リング状に結合した全てのプロセッシングエレメントのレジスタ103に格納されているデータ数cntrの情報を取得する。そして、制御プロセッサ210(特にデータ分布平準化命令生成部212)は、例えば次の様な処理を行って、データ分布平準化命令EQLを繰り返して実行するように全てのプロセッシングエレメント201を制御する。以下説明する例では、制御プロセッサ210のデータ分布平準化命令生成部212は、実行制御部214の制御の下で、リング状に結合した全てのプロセッシングエレメント201のレジスタ103に格納されているデータ数cntrの情報を取得し、全てのプロセッシングエレメント201のデータ数cntrの値の総和を全てのプロセッシングエレメント201の数で除算した結果H、すなわち、全てのプロセッシングエレメント201に渡るデータ数cntrの平均値Hを求め、全てのプロセッシングエレメント201のデータ数cntrの値と平均値Hとの差が閾値(例えば“1”)以下に収まるまで、プロセッシングエレメントアレイ200を制御する。
 次に、プロセッシングエレメントアレイ200のうち、プロセッシングエレメント201(n)がデータ分布平準化命令EQLを繰り返して実行する場合について説明する。なお、データ分布平準化命令EQLを実行する場合、前記プロセッシングエレメント201(n)以外のプロセッシングエレメント201も、以下に説明するプロセッシングエレメント201(n)と同様にデータ分布平準化命令EQLを繰り返して実行する。
 プロセッシングエレメント201(n)に組み込んだ制御プロセッサ210の減算演算部104(n)は、自プロセッシングエレメント(n)のレジスタ(cntr)102(n)が格納しているデータ数cntrの値と、自プロセッシングエレメン(n)に隣接する左隣のプロセッシングエレメント(n-1)のレジスタ(cntr)102(n-1)が格納しているデータ数cntr_leftの値とを比較する。
 そして、減算演算部104(n)は、例えば前記データ数cntr_leftの値が前記データ数cntrの値より大きい場合、すなわち、(データ数cntr_leftの値―データ数cntrの値)が0より大きい場合、自プロセッシングエレメン(n)におけるキャリーフラグ情報cfを「1」として出力する。
 逆に、減算演算部104(n)は、例えば前記データ数cntr_leftの値がデータ数cntrの値以下の場合、すなわち、(データ数cntr_leftの値―データ数cntrの値)が0以下の場合、自プロセッシングエレメン(n)におけるキャリーフラグ情報cfを「0」として出力する。
 続いて、論理積演算部105(n)は、自プロセッシングエレメン(n)におけるキャリーフラグ情報cfと、左隣のプロセッシングエレメン(n+1)におけるキャリーフラグ情報cfを反転させたキャリーフラッグ情報cf_rightとを入力し、それらの値に対して論理積の処理を行う。図3に示すように、キャリーフラッグ情報cfが「1」でキャリーフラッグ情報cf_rightが「0」のときのみ、論理積演算部105(n)の出力は「1」となる。前記論理積演算部105(n)は、論理積の処理の結果を加減算演算部107(n)とRAM101(n)とに出力する。
 RAM101(n)は、論理積演算部105(n)からの出力値が「1」のとき、論理積演算部105(n)の出力を、ライト許可信号(ライトイネーブル信号)wenとして受け入れる。そして、RAM101(n)は、データの書き込みが許可された状態となる。
 したがって、RAM101(n)は、左隣のプロセッシングエレメント(n―1)のレジスタ(md)103(n-1)に格納されている先頭データmd_leftを、RAM101(n)の入力データdinとして書き込む。
 この結果、RAM101(n)内には、現在存在するデータに、左隣のプロセッシングエレメント(n―1)のレジスタ103(n-1)が格納している先頭データmd_leftが加わった分のデータが存在することになる。
 排他的論理和演算部106(n)は、自プロセッシングエレメント(n)におけるキャリーフラグ情報cfと、右隣のプロセッシングエレメント(n+1)におけるキャリーフラグ情報cf_rightとを入力する。図3に示すように、キャリーフラグ情報cfとキャリーフラグ情報cf_rightとが同一の論理のときには、排他的論理和演算部106(n)の出力は「0」となり、キャリーフラグ情報cfとキャリーフラグ情報cf_rightとが異なる論理のときには、排他的論理和演算部106(n)の出力は「1」となる。
 次に、加減算演算部107(n)は、論理積演算部105の出力値に基づいて加算演算と減算演算のうちのいずれか一つの演算を行うかを決定する。
 例えば、図3に示すように、論理積演算部105の出力値が「1」の場合には、加減算演算部107(n)は、加算演算「+」を行うことを決定する。一方、論理積演算部105の出力値が「0」の場合には、加減算演算部107(n)は、減算演算「―」を行うことを決定する。
 このため、図2に示すように、加減算演算部107(n)は、論理積演算部105の出力値が「1」の場合には、レジスタ(cntr)102(n)が格納しているデータ数cntrの値と、排他的論理和演算部106(n)の出力値とを加算処理する。一方、加減算演算部107(n)は、論理積演算部105の出力値が「0」の場合には、レジスタ(cntr)102(n)が格納しているデータ数cntrの値と、排他的論理和演算部106(n)の出力値とを減算処理する。
 そして、加減算演算部107(n)は、演算結果である加減算演算部107(n)の出力値をレジスタ(cntr)102(n)に出力する。
 また、加減算演算部107は、演算結果である加減算演算部107(n)の出力値と、所定のベースアドレス値とを加算したメモリアドレス演算結果を、当該サイクルにおけるRAM101(n)へのアクセスアドレスaddrとしてRAM101(n)へ出力する(メモリアドレス生成機能)。
 例えば、論理積演算部105の出力値が「1」で排他的論理和演算部106(n)の出力値が「1」の場合には、レジスタ102(n)は、加減算演算部107(n)の出力に基づいて、現在格納しているデータ数cntrの値を1インクリメントして、その格納しているデータ数を「cntr+1」に更新する。
 論理積演算部105の出力値が「0」で排他的論理和演算部106(n)の出力値が「1」の場合には、レジスタ102(n)は、加減算演算部107(n)の出力に基づいて、現在格納しているデータ数cntrの値を1デクリメントして、その格納しているデータ数を「cntr-1」に更新する。
 論理積演算部105の出力値が「0」で排他的論理和演算部106(n)の出力値が「0」の場合には、レジスタ102(n)は、加減算演算部107(n)の出力に基づいて、現在格納しているデータ数cntrの値をそのまま維持する。
 この結果、図3に示すように、レジスタ(cntr)102(n)の値は、「cntr」、「cntr―1」、「cntr+1」のそれぞれの値となる。
 すなわち、自プロセッシングエレメント(n)におけるキャリーフラグ情報cfと、右隣のプロセッシングエレメント(n+1)におけるキャリーフラグ情報cf_rightとが異なる論理で、cfが「1」の場合(左隣のプロセッシングエレメント(n―1)におけるデータ数が自プロセッシングエレメント(n)におけるデータ数よりも多い場合)、レジスタ(cntr)102(n)は、そのデータ数を、現在格納しているデータ数cntrに1インクリメントしたデータ数cntr+1に更新する。
 一方、自プロセッシングエレメント(n)におけるキャリーフラグ情報cfと、右隣のプロセッシングエレメント(n+1)におけるキャリーフラグ情報cf_rightとが異なる論理で、cfが「0」の場合(左隣のプロセッシングエレメント(n―1)におけるデータ数が自プロセッシングエレメント(n)におけるデータ数以下の場合)、レジスタ(cntr)102は、そのデー多数を、現在格納しているデー多数を1デクリメントしたデータ数cntr-1に更新する。
 また、自プロセッシングエレメント(n)におけるキャリーフラグ情報cfと、右隣のプロセッシングエレメント(n+1)におけるキャリーフラグ情報cf_rightとが同一論理の場合、例えば左隣のプロセッシングエレメント(n―1)におけるデータ数>自プロセッシングエレメント(n)におけるデータ数>右隣のプロセッシングエレメント(n+1)におけるデータ数の関係となる場合や、左隣のプロセッシングエレメント(n―1)におけるデータ数≦自プロセッシングエレメント(n)におけるデータ数≦右隣のプロセッシングエレメント(n+1)におけるデータ数の関係となる場合などには、レジスタ(cntr)102(n)は、そのデータ数として、現在格納してデータ数の値cntrを維持する。
 さらに、レジスタ(md)103(n)には、PE(n)におけるキャリーフラグ情報cfに基づいて、左隣のプロセッシングエレメント(n―1)におけるレジスタ(md)103(n-1)の先頭データmd_leftと、自プロセッシングエレメント(n)におけるRAM101(n)から出力される前サイクルでの先頭データdout(dinよりデータ入力される前のRAM101(n)内のデータにおける先頭データ)とのうちのいずれか一方が入力し、レジスタ103(n)は、その入力データに基づいてデータの更新を行う。
 すなわち、自プロセッシングエレメント(n)におけるキャリーフラグ情報cfが「1」の場合には、レジスタ(md)103(n)は、現在格納して先頭データmdを、先頭データmd_leftに更新する。自プロセッシングエレメント(n)におけるキャリーフラグ情報cfが「0」の場合には、レジスタ(md)103(n)は、現在格納して先頭データmdを、RAM101(n)に格納されている、前記先頭データに続く次のデータに更新する。
 このため、図3に示すように、レジスタ(md)103(n)の値は、PE(n)におけるキャリーフラグ情報cfが「1」の場合にはmd_leftとなり、PE(n)におけるキャリーフラグ情報cfが「0」の場合にはdoutとなる。
 また、論理積演算部105の出力値が「1」のときには、ライト許可信号(ライトイネーブル信号)wenが「1」となるため、左隣のプロセッシングエレメント(n―1)におけるレジスタ(md)103(n-1)の先頭データmd_leftが、RAM101(n)の入力データdinとして入力し、アクセスアドレスaddr(所定のベースアドレス値+cntr+1)に対応する記憶領域に書き込まれる。
 この結果、RAM101(n)の記憶領域の内に、アクセスアドレスaddrが所定のベースアドレス値から(所定のベースアドレス値+cntr)までの記憶領域には、現在存在するデータが存在し、アクセスアドレスaddrが(所定のベースアドレス値+cntr+1)の記憶領域には、左隣のプロセッシングエレメント(n―1)における先頭データmd_leftが存在することなる。
 なお、この際、自プロセッシングエレメント(n)におけるキャリーフラグ情報cfが「1」であるため、レジスタ(md)103(n)には、md_leftのみが入力される。
 一方、論理積演算部105の出力値が「0」で排他的論理和演算部106(n)の出力値が「1」の場合は、自プロセッシングエレメント(n)におけるキャリーフラグ情報cfが「0」で右隣のプロセッシングエレメント(n+1)におけるキャリーフラグ情報cf_rightが「1」となる場合で、例えば左隣のプロセッシングエレメント(n-1)におけるデータ数>自プロセッシングエレメント(n)におけるデータ数≦右隣のプロセッシングエレメント(n+1)におけるデータ数となる場合が想定される。
 この場合、レジスタ(cntr)102(n)の値は、「cntr」から「cntr-1」に更新される。また、レジスタ(md)103(n)の値は、PE(n)におけるキャリーフラグ情報cfが「0」であるため、RAM101(n)からの先頭データdoutが入力され、更新される。
 このため、RAM101(n)内には、現在存在するデータから先頭データが取り除かれたデータ分のデータが格納されることとなる。
 他方、論理積演算部105の出力値が「0」で排他的論理和演算部106(n)の出力値が「0」の場合であって、自プロセッシングエレメント(n)におけるキャリーフラグ情報cfが「0」で右隣のプロセッシングエレメント(n+1)におけるキャリーフラグ情報cf_rightが「0」となる場合は、例えば左隣のプロセッシングエレメント(n-1)におけるデータ数≦自プロセッシングエレメント(n)におけるデータ数≦右隣のプロセッシングエレメント(n+1)におけるデータ数となる場合が想定される。
 この場合、レジスタ(cntr)102(n)の値は、「cntr」のまま更新されない。また、レジスタ(md)103(n)の値は、PE(n)におけるキャリーフラグ情報cfが「0」で、更新されない。
 さらに、論理積演算部105の出力値が「0」で排他的論理和演算部106(n)の出力値が「0」の場合であって、自プロセッシングエレメント(n)におけるキャリーフラグ情報cfが「1」で右隣のプロセッシングエレメント(n+1)におけるキャリーフラグ情報cf_rightが「1」となる場合は、例えば左隣のプロセッシングエレメント(n―1)におけるデータ数>自プロセッシングエレメント(n)におけるデータ数>右隣のプロセッシングエレメント(n+1)におけるデータ数となる場合が想定される。
 この場合、レジスタ(cntr)102(n)の値は、「cntr」のまま更新されない。また、レジスタ(md)103(n)の値は、自プロセッシングエレメント(n)におけるキャリーフラグ情報cfが「1」であるため、自左隣のプロセッシングエレメント(n-1)における先頭データmd_leftが入力され、更新される。
 このように、制御プロセッサ210は、左隣のプロセッシングエレメントのデータ数cntr_leftの値と自プロセッシングエレメントのデータ数cntrの値とを比較し、前者が後者よりも大きければ1、そうでなければ0の値となるキャリーフラグ情報cfを算出の上、それと右隣のプロセッシングエレメントのキャリーフラッグ情報cfを論理反転させたキャリーフラッグ情報cf_rightとで決まる下記制御ルール(a)~(d)に従い、全プロセッシングエレメントに対して、一斉に自プロセッシングエレメントのデータ数cntr、自プロセッシングエレメントのRAMが記憶しているデータのうち先頭データmd、そして前記RAM内に格納されている処理データまたは転送データの内容を更新させることで、同時に自プロセッシングエレメントのデータ数と左隣のプロセッシングエレメントのデータ数とを比較して、左隣のプロセッシングエレメントのデータ数が多ければ、左隣のプロセッシングエレメントの処理データまたは転送データを自プロセッシングエレメントに移動させる処理動作を全てのプロセッシングエレメントに対して実行させる。
 (a)自プロセッシングエレメントのキャリーフラッグ情報cfが0かつ右隣のプロセッシングエレメントのキャリーフラッグ情報を論理反転させたキャリーフラッグ情報cf_rightが0であるとき、自プロセッシングエレメントのデータ数記憶手段であるレジスタ102のデータ数cntrの内容、及びデータ記憶手段であるレジスタ103の格納する内容を更新しない。
 (b)自プロセッシングエレメントのキャリーフラッグ情報cfが0かつ右隣のプロセッシングエレメントのキャリーフラッグ情報を論理反転させたキャリーフラッグ情報cf_rightが1であるとき、自プロセッシングエレメントのデータ数記憶手段であるレジスタ102のデータ数cntrを1デクリメントし、データ記憶手段であるレジスタ103の格納する内容を、前記先頭データに続く次の処理データまたは転送データに更新する。
 (c)自プロセッシングエレメントのキャリーフラッグ情報cfが1かつ右隣のプロセッシングエレメントのキャリーフラッグ情報を論理反転させたキャリーフラッグ情報cf_rightが0であるとき、自プロセッシングエレメントのデータ数記憶手段であるレジスタ102のデータ数cntrを1インクリメントし、データ記憶手段であるレジスタ103の格納する処理データまたは転送データの先頭データを、左隣のプロセッシングエレメントのデータ記憶手段であるレジスタ103が格納する先頭データに更新する。
 (d)自プロセッシングエレメントのキャリーフラッグ情報cfが1かつ右隣のプロセッシングエレメントのキャリーフラッグ情報を論理反転させたキャリーフラッグ情報cf_rightが1であるとき、自プロセッシングエレメントのデータ数記憶手段であるレジスタ102のデータ数cntrを更新しない。データ記憶手段であるレジスタ103の格納する処理データまたは転送データの先頭データを、左隣のプロセッシングエレメントのデータ記憶手段であるレジスタ103が格納する先頭データに更新する。
 上述したように、制御プロセッサ210は、上記EQL命令を有することにより、例えば全プロセッシングエレメントが処理すべきデータ数cntrの値の総和を全プロセッシングエレメントの数で除算した結果H、すなわち全プロセッシングエレメントに渡るデータ数cntrの値の平均値Hを求め、全プロセッシングエレメントが処理すべきデータ数cntrの値と前記平均値Hの差が閾値より小さい値(例えば“1”)以下に収まるまで、EQL命令を繰り返し実行するように、プロセッシングエレメントアレイ200を制御する。これにより、制御プロセッサ210は、プロセッシングエレメントが処理すべきデータ数cntrの最大値とプロセッシングエレメントが処理すべきデータ数cntrの最小値との差と、全プロセッシングエレメントの数との和に等しい程度の回数だけEQL命令をプロセッシングエレメントアレイ200に実行させれば、全プロセッシングエレメントの処理データまたは転送データをほぼ同一数に均せるようになる。
 なお、上記の実施形態では、個々のプロセッシングエレメント201に組み込んだ、制御プロセッサ210の構成する、減算演算部(sub)104と、排他的論理和演算部(xor)106と、論理積演算部(and)105と、加減算演算部(add/sub)107とをハードウェアとして構築した例を説明したが、これに限られるものではない。コンピュータ(マイクロプロセッサ)にアプリケーションソフトを実行させて、上述した減算演算部(sub)104の機能と、排他的論理和演算部(xor)106の機能と、論理積演算部(and)105の機能と、加減算演算部(add/sub)107の機能とをソフトウェア上で実現する制御プログラムとして構築しても良いものである。
 ここで、本実施の形態では、プロセッシングエレメントを平準化処理装置として構成することができる。この場合、平準化処理装置は、制御プロセッサにより制御され、前記制御プロセッサを含む並列計算機システムに用いられる複数のプロセッシングエレメントを構成することができる。
 データ記憶部であるRAMは、処理データ又は外部メモリ転送データのデータを一時記憶できる。データ数格納部であるレジスタ(cntr)は、前記データ記憶部におけるデータ数を計数し一時格納することができる。先頭データ格納部であるレジスタ(md)は、前記データ記憶部のデータのうち先頭データを一時格納することができる。
 平準化処理部は、前記制御プロセッサからのデータ分布平準化命令により動作し、自プロセッシングエレメントにおける前記第1のデータ数と前記自プロセッシングエレメントに隣接する一方の第1隣接プロセッシングエレメントにおける第2のデータ数とを比較した第1の比較結果情報と、隣接する他方の第2隣接プロセッシングエレメントにおける比較結果である第2の比較結果情報とに基づいて(あるいは第1、第2の比較結果情報とで決まる前記制御ルール(a)~(d)に従い)、前記データ記憶部と前記データ数格納部と前記先頭データ格納部とをそれぞれ制御し、前記データ記憶部の前記データに対する平準化処理を行うことができる。
 また、前記平準化処理部は、自プロセッシングエレメントにおける前記第1のデータ数と前記自プロセッシングエレメントに隣接する一方の第1隣接プロセッシングエレメントにおける第2のデータ数とを比較した第1の比較結果情報を算出する比較部と、隣接する他方の第2隣接プロセッシングエレメントにおける比較結果である第2の比較結果情報と、前記第1の比較結果情報との排他的論理和情報を算出する前記排他的論理和演算部と、前記第2の比較結果情報の論理反転情報と、前記第1の比較結果情報との論理積情報を算出する論理積演算部と、前記論理積情報に基づいて、前記第1のデータ数と前記排他的論理和情報とを加算演算、減算演算のうちいずれか一方の演算を選択制御するとともに、前記一方の演算結果である加減算演算情報を算出する加減算演算部と、を含むことができる。
 以上のように本実施の形態によれば、データ分布平準化命令EQLは、単純な演算の少ない組み合せで実現できるため単一マシンサイクルで実装可能であり、少ないハードウェアコストの増加に抑えつつ、データ数を均一化する処理を効率よく実現できるようになる。
 すなわち、「データ分布平準化命令EQL」は、単純な演算の少ない組み合せで実現できるため単一マシンサイクルで実装可能であるのに対し、EQL命令を持たない例えば非特許文献1で開示されているSIMD型並列計算システムがEQL命令相当の処理を行うためには、10程度のマシンサイクルがかかる。
 そのため、本発明の実施形態に係るデータ分布平準化命令EQLを有するSIMD型並列計算システムでは、少ないハードウェアコストの増加に抑えつつ、データ数を均一化する処理を効率よく実現できるようになる、という効果が得られる。
 また、プロセッシングエレメント間ではデータ量を示す数値を通信し合わず、また、スケジューリングも行う必要はない。さらに、少ない追加ハードウェアコストのみで、PE間でのデータ量の均一化処理を効率的に実現できる。
 [第2の実施の形態]
 次に、本発明にかかる第2の実施の形態について、図4乃至図6に基づいて説明する。以下には、前記第1の実施の形態の実質的に同様の構成に関しては説明を省略し、異なる部分についてのみ述べる。
 本実施の形態におけるSIMD型並列計算機システム300と前記第1の実施の形態との違いは、前記第1の実施の形態ではEQL命令を実行するたびに、処理データまたは転送データなどのデータは左から右の方向でPE間を移動するのに対し(図1)、本実施の形態ではEQL命令を実行するたびに、処理データまたは転送データなどのデータは右から左の方向でプロセッシングエレメント間を移動するようになる(図4)点以外に違いはない。
 図5を参照すると、本第2の実施の形態におけるSIMD型並列計算機システム300では、上記第1の実施の形態において右隣のプロセッシングエレメントのキャリーフラッグ情報cfを論理反転したキャリーフラッグ情報cf_rightと、左隣のプロセッシングエレメントのデータ数cntrを示すデータ数cntr_left、そして左隣のプロセッシングエレメントのデータ数記憶手段であるレジスタ103に格納されている先頭データmdを示す先頭データmd_leftをEQL命令実行時に各プロセッシングエレメントが利用していたのを、前記キャリーフラッグ情報cf_rightの代わりに左隣のプロセッシングエレメントのキャリーフラッグ情報cfを論理反転したキャリーフラッグ情報cf_leftを用い、左隣のプロセッシングエレメントのデータ数cntr_leftの代わりに右隣プロセッシングエレメントのデータ数cntrを示すデータ数cntr_rightを用い、左隣のプロセッシングエレメントのデータ数記憶手段であるレジスタ103に格納されている先頭データmdを示す先頭データmd_leftの代わりに、右隣のプロセッシングエレメントのデータ数記憶手段であるレジスタ103に格納されている先頭データmdを示す先頭データmd_rightを利用するようにEQL命令を実行する。
 このように、制御プロセッサ210は、右隣のプロセッシングエレメントのデータ数cntr_leftの値と自プロセッシングエレメントのデータ数cntrの値とを比較し、前者が後者よりも大きければ1、そうでなければ0の値となるキャリーフラグ情報cfを算出の上、それと左隣のプロセッシングエレメントのキャリーフラッグ情報cfを論理反転させたキャリーフラッグ情報cf_leftとで決まる下記制御ルール(a)~(d)に従い、全プロセッシングエレメントに対して、一斉に自プロセッシングエレメントのデータ数cntr、自プロセッシングエレメントのRAMが記憶しているデータのうち先頭データmd、そして前記RAM内に格納されている処理データまたは転送データの内容を更新させることで、同時に自プロセッシングエレメントのデータ数と左隣のプロセッシングエレメントのデータ数とを比較して、左隣のプロセッシングエレメントのデータ数が多ければ、左隣のプロセッシングエレメントの処理データまたは転送データを自プロセッシングエレメントに移動させる処理動作を全てのプロセッシングエレメントに対して実行させる。
 (a)自プロセッシングエレメントのキャリーフラッグ情報cfが0かつ左隣のプロセッシングエレメントのキャリーフラッグ情報を論理反転させたキャリーフラッグ情報cf_leftが0であるとき、自プロセッシングエレメントのデータ数記憶手段であるレジスタ102のデータ数cntrの内容、及びデータ記憶手段であるレジスタ103の格納する内容を更新しない。
 (b)自プロセッシングエレメントのキャリーフラッグ情報cfが0かつ左隣のプロセッシングエレメントのキャリーフラッグ情報を論理反転させたキャリーフラッグ情報cf_leftが1であるとき、自プロセッシングエレメントのデータ数記憶手段であるレジスタ102のデータ数cntrを1デクリメントし、データ記憶手段であるレジスタ103の格納する内容を、前記先頭データに続く次の処理データまたは転送データに更新する。
 (c)自プロセッシングエレメントのキャリーフラッグ情報cfが1かつ左隣のプロセッシングエレメントのキャリーフラッグ情報を論理反転させたキャリーフラッグ情報cf_rightが0であるとき、自プロセッシングエレメントのデータ数記憶手段であるレジスタ102のデータ数cntrを1インクリメントし、データ記憶手段であるレジスタ103の格納する処理データまたは転送データの先頭データを、右隣のプロセッシングエレメントのデータ記憶手段であるレジスタ103が格納する先頭データに更新する。
 (d)自プロセッシングエレメントのキャリーフラッグ情報cfが1かつ左隣のプロセッシングエレメントのキャリーフラッグ情報を論理反転させたキャリーフラッグ情報cf_rightが1であるとき、自プロセッシングエレメントのデータ数記憶手段であるレジスタ102のデータ数cntrを更新しない。データ記憶手段であるレジスタ103の格納する処理データまたは転送データの先頭データを、右隣のプロセッシングエレメントのデータ記憶手段であるレジスタ103が格納する先頭データに更新する。
 上述したように、制御プロセッサ210は、上記EQL命令を有することにより、例えば全プロセッシングエレメントが処理すべきデータ数cntrの値の総和を全プロセッシングエレメントの数で除算した結果H、すなわち全プロセッシングエレメントに渡るデータ数cntrの値の平均値Hを求め、全プロセッシングエレメントが処理すべきデータ数cntrの値と前記平均値Hの差が閾値より小さい値(例えば“1”)以下に収まるまで、EQL命令を繰り返し実行するように、プロセッシングエレメントアレイ200を制御する。これにより、制御プロセッサ210は、プロセッシングエレメントが処理すべきデータ数cntrの最大値とプロセッシングエレメントが処理すべきデータ数cntrの最小値との差と、全プロセッシングエレメントの数との和に等しい程度の回数だけEQL命令をプロセッシングエレメントアレイ200に実行させれば、全プロセッシングエレメントの処理データまたは転送データをほぼ同一数に均せるようになる。
 その他の構成およびその他のステップないしは機能並びにその作用効果については、前述した実施の形態の場合と同一となっている。また、上記の説明において、上述した各ステップの動作内容及び各部の構成要素並びにそれらによる各機能をプログラム化し、コンピュータに実行させてもよい。
 ここで、上記の本第1の実施形態及び第2の実施形態において、処理データまたは転送データのうちの先頭データを格納するレジスタ(md)103が必要となるのは、プロセッシング毎が独立にアクセス可能なRAM101に、読み出しアドレス供給サイクルと、読み出しデータ利用可能サイクルが1サイクルずれる同期式RAMなどを用いた場合である。
 もし、RAM101にレジスタを利用した場合では、読み出しアドレス供給サイクルと、読み出しデータ利用可能サイクルを同一サイクルにできるため、レジスタ(md)103は不要であり、RAM101の先頭データを保持しているレジスタそのものをレジスタ(md)103として利用すればよい。
 [第3の実施の形態]
 次に、本発明の第1の実施形態をさらに具体例を用いて説明した例を本発明の第3の実施形態として図7及び図8に基づいて説明する。したがって、本発明の第3の実施形態での構成は、図1及び図2に示すものと同一であるため、その構成についての説明は省略する。
 本発明の第3の実施形態を説明するため、図7では、プロセッシングエレメントアレイ200を構成するプロセッシングエレメント201の数を8台に設定し、その個々のプロセッシングエレメントを識別するため、そのプロセッシングエレメント201にPE0からPE7の符号を付けている。そして、個々のプロセッシングエレメントPE0~PE7の初期状態において、プロセッシングエレメントPE~PE7のレジスタ102が格納しているデータ数cntrの値の初期値が3,2,1,5,0,1,4,1であって、全プロセッシングエレメントPE0~PE7のレジスタ102が格納しているデータ数cntrの値の総和が17であるとする。また、全てのプロセッシングエレメントPE0~PE7のレジスタ103には、個々のRAM101に格納されているデータのうち先頭データmdが既に格納されているものとする。
 以上の設定の下で、制御プロセッサ210は、リング状に結合した個々のプロセッシングエレメントPE0~PE7のレジスタ102が格納しているデー多数の情報を取得して、全てのプロセッシングエレメントPE0~PE7のデータ数cntrの値の総和17を全てのプロセッシングエレメントPE0~PE7の数8で除算した結果H(2.125)、すなわち、全てのプロセッシングエレメントPE0~PE7に渡るデータ数cntrの平均値H(2.125)を求め、全てのプロセッシングエレメントPE0~PE7のデータ数cntrの値と平均値Hとの差が閾値(本例では1)以下に収まるまで、プロセッシングエレメントアレイ200を制御する。
 本発明の第3の実施形態は、本発明の第1の実施形態に対応するものであるから、EQL命令を実行する場合、自プロセッシングエレメント201(n)を例えばプロセッシングエレメントPE1とすると、左隣のプロセッシングエレメント201(n-1)がプロセッシングエレメントPE0であり、右隣のプロセッシングエレメント201(n+1)がプロセッシングレメントPE2となる。以下では、制御プロセッサ210が、図の左隣のプロセッシングエレメントから右隣のプロセッシングエレメントへの方向で処理データの移動を行うEQL命令を繰り返しプロセッシングアレイに対して発行する場合の動作について説明する。
 図7に示すstep0の状態の下で、制御プロセッサ210がEQL命令を実行すると、左隣のプロセッシングエレメントから右隣のプロセッシングエレメントへ処理データの移動が行われ、その結果、左隣のプロセッシングエレメントのレジスタ102が格納するデータ数cntrが自プロセッシングエレメントのレジスタ102が格納するデータ数の値より大きいプロセッシングエレメント間でデータ移動が発生、すなわち図7の例では、プロセッシングエレメントPE0→プロセッシングエレメントPE1、プロセッシングエレメントPE1→プロセッシングエレメントPE2、プロセッシングエレメントPE3→プロセッシングエレメントPE4、そしてプロセッシングエレメントPE6→プロセッシングエレメントPE7の方向で1個ずつデータ移動が発生し、プロセッシングエレメントPE0~PE7のレジスタ102が格納するデータ数cntrの値は、それぞれ2,22,4,1,1,3,2となり、EQL命令の実行状態が図7のstep1の状態に移る。
 前記制御プロセッサ210が、制御プロセッサ210は、個々のプロセッシングエレメントPE0~PE7のレジスタ102が格納しているデータ数cntrの値を取得し、総データ数cntrが全てのプロセッシングエレメントPE0~PE7に均一に均されているか否かを判断し、不均一なデータ数の配分の場合には、再度EQL命令を発行する。制御プロセッサ210が例えば計3回のEQL命令をプロセッシングアレイに対して発行すると、図7のstep1で説明したような個々のプロセッシング相互間でのEQL命令が実行され、そのEQL命令の実行状態が図7のstep1→step2→step3と移行する。図7のstep3の状態では、個々のプロセッシングエレメントPE0~PE7のレジスタ102が格納しているデータ数cntrの値がそれぞれ3,2,2,2,2,2,2,2となる。
 前記制御プロセッサ210は、図7に示すstep3における個々のプロセッシングエレメントPE0~PE7のレジスタ102が格納しているデータ数cntrの値を取得し、総データ数cntrが全てのプロセッシングエレメントPE0~PE7に均一に均されているか否かを判断する。図7のstep3では、総データ数cntrが全てのプロセッシングエレメントPE0~PE7に均されているため、制御プロセッサ210は、全プロセッシングエレメントPE0~PE7のレジスタ102が格納しているデータ数cntrと、算出して平均値Hとの差が閾値である1以内となったことから、本状況を検知しEQL命令の発行ループから抜け出すようにプロセッシングエレメントアレイ(PE0~PE7)を制御する。
 [第4の実施の形態]
 以上説明した第1の実施形態~第3の実施形態では、EQL命令を発行する処理を、個々のプロセッシングエレメント201に組み込んだ、制御プロセッサ210の構成する、減算演算部(sub)104と、排他的論理和演算部(xor)106と、論理積演算部(and)105と、加減算演算部(add/sub)107とをハードウェアとして構築したが、これに限られるものではない。すなわち、コンピュータ(マイクロプロセッサ)にアプリケーションソフトを実行させることにより、個々のプロセッシングエレメント201に組み込んだ、制御プロセッサ210の構成する、減算演算部(sub)104の機能と、排他的論理和演算部(xor)106の機能と、論理積演算部(and)105の機能と、加減算演算部(add/sub)107の機能とを、ソフトウェア上で実現する制御プログラムとして構築しても良いものである。
 また、制御プロセッサ210を構成する構成要素として、EQL命令を実行するために必要な構成要素である、減算演算部(sub)104と、排他的論理和演算部(xor)106と、論理積演算部(and)105と、加減算演算部(add/sub)107とを図示して説明したが、これに限られるものではない。これらに加えて、関数コール命令CALLIを実行する関数コール命令生成部、命令CDIVを実行する除算動作指定命令生成部、命令MVCPを実行するレジスタ値転送命令生成部、命令ASUBを実行する減算結果絶対値算出命令生成部、命令SUBを実行する減算結果算出命令生成部、命令STSを実行する条件フラグ論理和算出命令生成部、条件分岐命令BRMを実行する条件分岐命令生成部を付加した構成としてもよいものである。これらの付加した構成要素は、図1に示す、データ分布平準化命令生成部212及び実行制御部214を具体化したものである。
 以下の説明では、EQL命令を実行する前記構成要素(104~107)に、前記各種の命令を実行する前記構成要素(212,214)を付加した制御プロセッサ210の機能を、コンピュータ(マイクロプロセッサ)にアプリケーションソフトを実行させることにより、ソフトウェア上で実現する制御プログラムとして構築した場合について説明する。
 本実施形態に係るSIMD型並列計算システムにおける制御プロセッサ210の機能を実行する制御プログラムは図8に示すように、データ分布の平準化動作の命令セットの1つである前記EQL命令に加えて、
 (A)関数コール命令CALLI(ハードウェアの場合には関数コール命令生成部として構築する),
 (B)制御プロセッサ210上で除算動作を指定する命令CDIV(ハードウェアの場合には除算動作指定命令生成部として構築する)、
 (C)第1オペランドが指定するCP上のレジスタ値を第2オペランドが指定する全PE上のレジスタへ転送する命令MVCP(ハードウェアの場合にはレジスタ値転送命令生成部として構築する)、
 (D)PE上で第1オペランドが指定するレジスタ値と第2オペランドが指定するレジスタ値の減算結果の絶対値を算出し第3オペランドが指定するレジスタに格納する動作を指定する命令ASUB(ハードウェアの場合には減算結果絶対値算出命令生成部として構築する)、
 (E)PE上で第1オペランドが指定するレジスタの値と第2オペランドが指定するレジスタの値の減算を行い結果を第3オペランドが指定するレジスタに格納する動作を指定する命令SUB(ハードウェアの場合には減算結果算出命令生成部として構築する)、
 (F)第1オペランドが指定する種類のPE上の条件フラグの値の全PEに渡る論理和として得られる1ビット情報をCP上のマスクレジスタに格納する動作を指定する命令STS(ハードウェアの場合には条件フラグ論理和算出命令生成部として構築する)、
 (G)CP上のマスクレジスタの値が1ならば分岐をし、0ならば分岐しない動作を指定する条件分岐命令BRM(ハードウェアの場合には条件分岐命令生成部として構築する)、
 を含んで構築する。
 図8における制御プログラムの内容を記述するにあたって、”..”の記述は、その両隣の命令が同一サイクルに動作することを指定することを意味する。さらに、/*と*/で囲まれた部分はコメントである。
 また:で終わる文字列は、当該文字列の出現位置の番地を示し、分岐命令のオペランドとして同ラベルを指定した場合は、同番地を指定することを意味するものとする。
 前記制御プログラムにおける関数コール命令CALLIである「*番地A*/  CALLI Fadd_allpe cntr」は、関数 add_allpeをコールし、全プロセッシング201のレジスタ102が格納しているデータ数cntrの総和を求め、その総和を関数の戻り値としてレジスタr0に格納させる(ステップS101)<全PEデータ数総和算出処理ステップないしは全PEデータ数総和算出処理機能>。
 前記制御プログラムにおける命令CDIVである「*番地A+1*/  CDIV r0,PENO,H」は、プロセッシングエレメントの設置数の情報を表す定数PENOで、前記レジスタr0に格納されているデータ数cntrの総和を割り、その結果を平均値HとしてレジスタHに格納させる(ステップS102)<全PEデータ数平均値算出処理ステップないしは全PEデータ数平均値算出処理機能>、。
 前記制御プログラムにおける命令MVCPである「*番地A+2*/ MVCP H,h」は、前記データ数の平均値Hの値を個々のプロセッシングエレメント201のレジスタ102に転送させる(ステップS103)<平均値転送処理ステップないしは平均値転送処理機能>。
  EQL命令である「*番地A+3*/ EQL」と、ASUB命令である「*番地A+4*/ ASUB h,cntr,tmp」、EQL命令である「*番地A+5*/ EQL」と、SUB命令である「*番地A+6*/ SUB 1,tmp,tmp」、EQL命令である「*番地A+7*/ EQL」と、STS命令である「*番地A+8*/ STS %S」がそれぞれ同一サイクルで実行する。
 /*番地A+3*/~/*番地A+10*/のループ(ステップS110)<実行制御ステップないしは実行制御機能>では、繰り返し毎にEQL命令を計4回発行している中(ステップS111・ステップS113・ステップS115・ステップS118)で、ステップS111の第1のEQL命令を発行と同時に各プロセッシングエレメント上でASUB命令を発行し<減算結果絶対値算出ステップないしは減算結果絶対値算出機能>、ステップS113の第2のEQL命令を発行と同時に各プロセッシングエレメント上でSUB命令を発行する<減算結果算出ステップないしは減算結果算出機能>ことで、個々のプロセッシングエレメントのレジスタ102のデータ数cntrの値と、前記平均値Hの値との差が閾値の1以内となったかどうかの判定を行う(ステップS112、ステップS114)。
 また、ステップS115の第3のEQL命令を発行すると同時にSTS命令により、前記判定結果を表す条件フラグSの値の全プロセッシングエレメントに渡る論理和を制御プロセッサ210上のマスクレジスタに格納し(ステップS116)<条件フラグ論理和算出ステップないしは条件フラグ論理和算出機能>、論理和が1すなわちデータ数cntrの値と平均値Hの値との差が1を超えるプロセッシングエレメントがまだ存在する場合、/*番地A+9*/のBRM命令の実行に際し分岐を成立させ(ステップS117)<条件分岐命令発行ステップないしは条件分岐命令発行機能>、次サイクルには/*番地A+11*/の命令ではなく/*番地A+3*/の命令を実行させる。
 一方、論理和が0すなわちデータ数cntrの値と平均値H値との差が1を超えるプロセッシングエレメントが存在しなくなった場合は、分岐を行わずに、/*番地A+11*/の命令に移行させ、データ分布平準化処理のループから抜け出す。
 以上のように実施の形態によれば、ループ終了判定を行う間でも、毎サイクルEQL命令を発行することができるため、EQL命令を繰り返すループを抜けるためのCPによる終了判定処理は、全体の処理サイクル数に最小限の影響のみしか与えないようにできる。
 一方、CPによる逐次的な判定によりデータ分布平準化を実現する場合では、図7の例に関連して説明すると、まずプロセッシングエレメントPE0のデータ数cntrの値を読み出し、これと平均値Hの値とを比較し、平均値Hよりも大きければさらにプロセッシングエレメントPE1、またはデータ数cntrの値がより小さい他のプロセッシングエレメントPEを一つ選び出し、前記プロセッシングエレメントPE0のデータを読み出し、それを前記選択したプロセッシングエレメントPEのRAM101に格納した上、このプロセッシングエレメントPEのデータ数cntrの値を1インクリメントすると共に前記プロセッシングエレメントPE0のデータ数cntrの値を1デクリメントする、といった一連の動作を、全プロセッシングエレメントに対して逐次に行っていく必要があり、図7に示した実施形態と比較すると、非常に多数の処理サイクルがかかってしまうことは容易に想像できる。
 しかし、本実施形態は以下のような効果を有している。すなわち、EQL命令を命令セットに持たないSIMD型並列計算装置が制御プロセッサによる逐次的な判定を行う手法ではなく、プロセッシングエレメントアレイでの並列処理動作によりデータ分布平準化を実現しようとする場合では、EQL命令が指定する動作に相当する動作を既存の命令の組み合せで実現する必要があり、それにはEQL命令を有する場合と比べると、10倍以上の処理サイクルがかかってしまう。それに対して、EQL命令セットを有することにより、本実施形態では以上のように処理サイクルに時間を有することが想定できるとしても、EQK命令セットを有しない関連技術の手法と比べはるかに高速にデータ分布平準化処理を実現できるものである。
 さらに、特許文献1では、例えばP1~P16のプロセッサを有する場合、P1とP2の平均を求め、P1とP3の平均を求め、P1とP9の平均を求め、P1とP5の平均を求め、・・・のように平均を求めることを繰り返す必要がある。プロセッサ数が増大すると、各プロセッサ相互間の平均をそのたびに計算し、シミュレーションやスケジューリングに時間がかかってしまう。
 また、特許文献1では、P1~P16の平均を、各プロセッサが求める方式で、P1~P16の全体の制御を司る制御プロセッサが平均を求める方式ではない。このため、各プロセッサの全体を制御できず、P1~P16の全体の平均を一斉に求めることができない。 
 これに対して本実施の形態では、関連技術の手法と比べはるかに高速にデータ分布平準化処理を実現できるようになる。
 その他の構成およびその他のステップないしは機能並びにその作用効果については、前述した実施の形態の場合と同一となっている。また、上記の説明において、上述した各ステップの動作内容及び各部の構成要素並びにそれらによる各機能をプログラム化し、コンピュータに実行させてもよい。
 [第5の実施の形態]
 次に、本発明にかかる第5の実施の形態について、図9に基づいて説明する。以下には、前記第1の実施の形態の実質的に同様の構成に関しては説明を省略し、異なる部分についてのみ述べる。
 上述の実施の形態のSIMD型並列計算システムにおける各部の処理は、方法としても実現可能であり、方法としての各種の処理手順について、図9及び図10を参照しつつ説明する。図9、図10は、SIMD型並列計算システムにおけるにおける処理手順の一例を示すフローチャートである。
 本実施の形態に係る制御プロセッサの制御方法は、複数のプロセッシングエレメントと、前記複数の各プロセッシングエレメントの処理動作を制御する制御プロセッサとを含む並列計算機システムにおける前記制御プロセッサが備えたコンピュータが処理するものを対象とするものである。
 この制御プロセッサの制御方法は、基本的構成として、制御プロセッサが備えたコンピュータが、全プロセッシングエレメントにわたるデータ数の平均値を算出する処理を行う平均値算出処理ステップ(例えば図9に示すステップS201など)と、前記平均値を前記全プロセッシングエレメントの各平均値情報一時格納部に転送する処理を行う転送処理ステップ(例えば図9に示すステップS202など)と、各プロセッシングエレメント上で、前記プロセッシングエレメントにおけるデータ数格納部のデータ数と、前記平均値情報一時格納部の前記平均値との差が1以内となるまで、前記各プロセッシングエレメント毎のデータ数を前記各プロセッシングエレメント間で均一化するデータ分布平準化命令を繰り返し実行する制御処理を行う実行制御ステップ(例えば図9に示すステップS203など)とを含むことができる。
 さらに、本実施の形態に係るプロセッシングエレメントの演算処理方法は、複数のプロセッシングエレメントと、前記複数の各プロセッシングエレメントの処理動作を制御する制御プロセッサとを含む並列計算機システムにおける前記プロセッシングエレメントが備えたコンピュータが処理するものを対象とするものである。 
 このプロセッシングエレメントの演算処理方法は、基本的構成として、プロセッシングエレメントが備えたコンピュータが、前記制御プロセッサからのデータ分布平準化命令により、自プロセッシングエレメントにおける第1のデータ数と、自プロセッシングエレメントに隣接する一方の第1隣接プロセッシングエレメントにおける第2のデータ数とを比較した自プロセッシングエレメントにおける第1比較結果情報を算出する処理を行う第1比較結果情報算出処理ステップ(例えば図10に示すステップS301など)と、隣接する他方の第2隣接プロセッシングエレメントにおける第2比較結果情報を取得する第2比較結果情報取得ステップ(例えば図10に示すステップS302など)と、前記第1比較結果情報と前記第2比較結果情報とで決まる制御ルールに従い、自プロセッシングエレメントにおけるデータ記憶部、データ数格納部、前記データ記憶部のデータのうち先頭データを一時格納する先頭データ格納部を制御し、前記各プロセッシングエレメント毎のデータ数を前記各プロセッシングエレメント間で均一化する平準化処理ステップ(例えば図10に示すステップS303など)と、を含むことができる。
 この平準化処理ステップでは、さらに、自プロセッシングエレメントにおける前記第1のデータ数と前記自プロセッシングエレメントに隣接する一方の第1隣接プロセッシングエレメントにおける第2のデータ数とを比較した第1の比較結果情報を算出する比較ステップと、隣接する他方の第2隣接プロセッシングエレメントにおける比較結果である第2の比較結果情報と、前記第1の比較結果情報との排他的論理和情報を算出する前記排他的論理和演算ステップと、前記第2の比較結果情報の論理反転情報と、前記第1の比較結果情報との論理積情報を算出する論理積演算ステップと、前記論理積情報に基づいて、前記第1のデータ数と前記排他的論理和情報とを加算演算、減算演算のうちいずれか一方の演算を選択制御するとともに、前記一方の演算結果である加減算演算情報を算出する加減算演算ステップとを有することができる。
 その他の構成およびその他のステップないしは機能並びにその作用効果については、前述した実施の形態の場合と同一となっている。また、上記の説明において、上述した各ステップの動作内容及び各部の構成要素並びにそれらによる各機能をプログラム化し、コンピュータに実行させてもよい。
 [その他の各種変形例]
 また、本発明にかかる装置及び方法は、そのいくつかの特定の実施の形態に従って説明してきたが、本発明の主旨および範囲から逸脱することなく本発明の本文に記述した実施の形態に対して種々の変形が可能である。
 例えば、図11に示すように、S0aにおいて、PE(n-1)のRAMにおける先頭データが、PE(n)のRAMに転送され、PE(n)のRAMにおける先頭データが、PE(n+1)のRAMに転送されてS1aとなる場合に限らず、S0bにおいて、PE(n-1)のRAMにおける先頭データが、PE(n)のRAMに入らずに、レジスタ(md)を介してPE(n+1)のRAMに転送されてS1bとなる場合であってもよい。
 また、図12に示すように、前記第1の実施の形態と前記第2の実施の形態とを組み合わせることにより、SIMD型並列計算機システム500では、PE間結合線220a、PE間結合線220bを設けて、データ平準化処理における転送するデータを、PE間結合線220aを利用して一方向に、PE間結合線220bを利用して逆方向に転送できるように構成してもよい。
 この場合、各PEは、前記第1の実施の形態の構成と前記第2の実施の形態の構成の双方を有することもできる。制御プロセッサは、一方向でのモードと、逆方向でのモードと、両方利用するモードとを切り替え制御することもできる。
 さらに、前記第1の実施の形態では省略したが、図13に示すように、複数の各PEを一ブロックとしてラインバッファ510を、それぞれ設けてもよい。
 またさらに、上記構成部材の数、位置、形状等は上記実施の形態に限定されず、本発明を実施する上で好適な数、位置、形状等にすることができる。すなわち、上記実施の形態では、PEが8個の場合を示したが、本発明は、これらの個数を制限するものではない。
 また、上述のようなSIMD型並列計算システムは、ワンチップに搭載したマイクロコンピュータとして構成することができ、さらに、図14に示すように、表示装置600を構成することができる。この表示装置600は、画素マトリクス部610とこの画素マトリクス部610の各画素の各列に各PEが対応するようにマイクロコンピュータとしての集積回路620が搭載されている。このような構成によれば、高速な画像処理が可能となる。
 また、本発明の上記のような各実施の形態にかかるSIMD型並列計算機システムでは、前記データ分布平準化命令生成部は、前記各プロセッシングエレメント間で前記データ数が異なる場合に、前記データ数が多い一方の前記プロセッシングエレメントから前記データ数が少ない他方の前記プロセッシングエレメントへ特定の単位データずつデータを移動させる処理動作を指定することができる。
 さらに、前記各プロセッシングエレメントは、並列接続するとともに、最右端の前記プロセッシングエレメントが最左端の前記プロセッシングエレメントに接続するリング状に結合できる。この場合、前記データ分布平準化命令生成部は、前記平準化処理におけるデータの移動を各プロセッシングエレメント間で一方向にて行う処理動作を指定することができる。
 また、前記プロセッシングエレメントは、比較部と、排他的論理和演算部と、加減算演算部と、論理積演算部と、を含むことができる。この場合、前記データ分布平準化命令生成部は、前記比較部と、前記排他的論理和演算部と、前記加減算演算部と、前記論理積演算部とを一連に実行する動作を指定することができる。
 さらに、前記プロセッシングエレメントは、前記処理データ又は外部メモリ転送データのデータを一時記憶するデータ記憶部と、前記データ記憶部におけるデータ数を計数して一時格納するデータ数格納部と、を含むことができる。
 この場合、前記比較部は、自プロセッシングエレメントにおける前記第1のデータ数と前記自プロセッシングエレメントに隣接する一方の第1隣接プロセッシングエレメントにおける第2のデータ数とを比較した第1の比較結果情報を算出することができる。
 前記排他的論理和演算部は、隣接する他方の第2隣接プロセッシングエレメントにおける比較結果である第2の比較結果情報と、前記第1の比較結果情報との排他的論理和情報を算出することができる。
 前記論理積演算部は、前記第2の比較結果情報の論理反転情報と、前記第1の比較結果情報との論理積情報を算出することができる。
 前記加減算演算部は、前記論理積情報に基づいて、前記第1のデータ数と前記排他的論理和情報とを加算演算、減算演算のうちいずれか一方の演算を選択するとともに、前記一方の演算結果である加減算演算情報を算出し、この加減算演算情報により前記データ数格納部のデータ数の更新を行うことができる。
 また、プロセッシングエレメントは、前記データ記憶部のデータのうち先頭データを一時格納する先頭データ格納部を有することができる。
 この場合、前記論理積演算部は、前記第1隣接プロセッシングエレメントの前記先頭データ格納部における隣接先頭データを前記自プロセッシングエレメントの前記データ記憶部に書き込む処理を許可するライトイネーブル信号として前記論理積情報を前記データ記憶部に入力することができる。
 さらにまた、前記加減算演算部は、前記データ記憶部に前記隣接先頭データを書き込む際のアドレスを指定する情報として前記加減算演算情報を前記データ記憶部に入力することができる。
 さらに、前記比較部は、前記先頭データ格納部に前記隣接先頭データを入力するか、前記自プロセッシングエレメントの前記データ記憶部における前記先頭データを入力するかを選択する情報として前記第1の比較結果情報を前記先頭データ格納部に入力し、前記先頭データ格納部に入力される前記先頭データを制御することができる。
 また、前記比較部は、前記自プロセッシングエレメントの前記第1のデータ数から隣接する一方の前記第1隣接プロセッシングエレメントの前記第2のデータ数を減算し、減算結果を捨て、前記第2のデータ数が前記第1のデータ数より大きいか否かを示すキャリーフラグ情報を出力することができる。
 ここで、図2及び図5に示すブロック図における一部の各ブロックは、コンピュータが適宜なメモリに格納された各種プログラムを実行することにより、該プログラムにより機能化された状態を示すソフトウエアモジュール構成であってもよい。
 すなわち、物理的構成は例えば一又は複数のCPU(或いは一又は複数のCPUと一又は複数のメモリ)等ではあるが、各部(回路)によるソフトウェア構成は、プログラムの制御によってCPUが発揮する複数の機能を、それぞれ複数の部(手段)による構成要素として表現したものである。
 以上に示した各部の説明は、プログラムにより機能化されたコンピュータをプログラムの機能と共に説明したものと解釈することも出来るし、また、固有のハードウェアにより恒久的に機能化された複数の電子回路ブロックからなる装置を説明したものとも解釈することが出来る。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組み合せによっていろいろな形で実現でき、いずれかに限定されるものではない。 
 また、各部は、装置としてそれぞれ構成し、これらの各装置によりシステムを構成してもよい。逆に、各部を単一の装置として構成したシステムであってもよい。 
 (プログラム)
 また、前述した実施形態の機能を実現する本発明のプログラムは、前述した各実施の形態における各種ブロック図などに示された処理部(処理手段)、機能などに対応したプログラムや、フローチャートなどに示された処理手順、処理手段、機能などに対応したプログラムや、各種データ構造を利用するプログラムなどにおいて各々処理される各処理プログラム、本明細書で全般的に記述される方法(ステップ)、説明された処理、データの全体もしくは各部を含む。
 具体的には、本発明の一実施形態における制御プログラムは、複数のプロセッシングエレメントと、前記複数の各プロセッシングエレメントの処理動作を制御する制御プロセッサとを含む並列計算機システムにおける前記制御プロセッサが備えたコンピュータに諸機能を実現させることが可能なものである。
 この制御プログラムは、全プロセッシングエレメントにわたるデータ数の平均値を算出する処理を行う平均値算出処理機能と、前記平均値を前記全プロセッシングエレメントの各平均値情報一時格納部に転送する処理を行う転送処理機能と、各プロセッシングエレメント上で、前記プロセッシングエレメントにおけるデータ数格納部のデータ数と、前記平均値情報一時格納部の前記平均値との差が1以内となるまで、前記各プロセッシングエレメント毎のデータ数を前記各プロセッシングエレメント間で均一化するデータ分布平準化命令を繰り返し実行する制御処理を行う実行制御機能とを前記コンピュータに実現させることができる。
 また、本発明の一実施形態における演算処理プログラムは、複数のプロセッシングエレメントと、前記複数の各プロセッシングエレメントの処理動作を制御する制御プロセッサとを含む並列計算機システムにおける前記プロセッシングエレメントが備えたコンピュータに諸機能を実現させることが可能なものである。
 この演算処理プログラムは、前記制御プロセッサからのデータ分布平準化命令により、自プロセッシングエレメントにおける第1のデータ数と、自プロセッシングエレメントに隣接する一方の第1隣接プロセッシングエレメントにおける第2のデータ数とを比較した自プロセッシングエレメントにおける第1比較結果情報を算出する処理を行う第1比較結果情報算出処理機能と、隣接する他方の第2隣接プロセッシングエレメントにおける第2比較結果情報を取得する第2比較結果情報取得機能と、前記第1比較結果情報と前記第2比較結果情報とで決まる制御ルールに従い、自プロセッシングエレメントにおけるデータ記憶部、データ数格納部、前記データ記憶部のデータのうち先頭データを一時格納する先頭データ格納部を制御し、前記各プロセッシングエレメント毎のデータ数を前記各プロセッシングエレメント間で均一化する平準化処理機能とを前記コンピュータに実現させることができる。
 ここで、前記制御ルールは、例えば、前記第1の実施の形態及び第2の実施の形態に示すような以下の(a)~(d)などが挙げられる。
 (a)cfが0かつright_cf(left_cf)が0:自cntr、自mdの内容を更新しない
 (b)cfが0かつright_cf(left_cf)が1:自cntrを1デクリメント、自mdの内容を次の処理または転送データで更新
 (c)cfが1かつright_cf(left_cf)が0:自cntrを1インクリメント、処理または転送データ先頭および自mdの内容を左または右隣のPEのmdの内容で更新
 (d)cfが1かつright_cf(left_cf)が1:自cntrを更新しない、処理または転送データ先頭および自mdの内容を左または右隣のPEのmdの内容で更新
 さらに、この演算処理プログラムは、前記平準化処理機能では、自プロセッシングエレメントにおける前記第1のデータ数と前記自プロセッシングエレメントに隣接する一方の第1隣接プロセッシングエレメントにおける第2のデータ数とを比較した第1の比較結果情報を算出する比較機能と、隣接する他方の第2隣接プロセッシングエレメントにおける比較結果である第2の比較結果情報と、前記第1の比較結果情報との排他的論理和情報を算出する前記排他的論理和演算機能と、前記第2の比較結果情報の論理反転情報と、前記第1の比較結果情報との論理積情報を算出する論理積演算機能と、前記論理積情報に基づいて、前記第1のデータ数と前記排他的論理和情報とを加算演算、減算演算のうちいずれか一方の演算を選択制御するとともに、前記一方の演算結果である加減算演算情報を算出する加減算演算機能とを前記コンピュータに実現させることができる。
 プログラムは、オブジェクトコード、インタープリタにより実行されるプログラム等、プログラムの形態を問わない。プログラムは、高水準プロシージャ型またはオブジェクト
指向プログラミング言語で、あるいは必要に応じてアセンブリまたはマシン言語で実装することができる。いずれの場合も、言語はコンパイラ型またはインタープリタ型言語であってもよい。
 プログラムを供給する手法としては、電気通信回線(有線、無線を問わない)によってコンピュータと通信可能に接続された外部の機器から前記電気通信回線を通じて提供することも可能である。
 本発明のプログラムによれば、当該プログラムを格納するROM等の記憶媒体から、当該プログラムをコンピュータ(CPU)に読み込んで実行させれば、或いは、当該プログラムを、通信手段を介してコンピュータにダウンロードさせた後に実行させれば、上述した本発明に係る装置を比較的簡単に実現できる。発明の思想の具現化例として装置のソフトウェアとなる場合には、かかるソフトウェアを記憶した記憶媒体上においても当然に存在し、利用される。
 また、プログラムは、一次複製品、二次複製品などの複製段階については問はない。プログラムの供給方法として通信回線を利用して行なう場合であれば通信回線が伝送媒体となって本発明が利用されることになる。さらに、装置における従属請求項は、方法,プログラムにおいて従属請求項に対応した構成にすることも可能である。
 (情報記録媒体)
 また、上述のプログラム(制御プログラムを含む)を、情報記録媒体に記録した構成であってもよい。上述のプログラムは、磁気記録媒体、光記録媒体あるいはROMなどの情報記録媒体に記録してプログラムを提供することができる。そのようなプログラムが記録された情報記録媒体を、コンピュータにおいて使用することは、好都合な情報処理装置を構成する。
 プログラムを供給するための情報記録媒体としては、例えばROM、RAM、フラッシュメモリやSRAM等の半導体メモリ並びに集積回路、あるいはそれらを含むUSBメモリやメモリカード、光ディスク、光磁気ディスク、磁気記録媒体等を用いてよく、さらに、フレキシブルディスク、CD-ROM、CD―R、CD―RW、FD、DVDROM、HDDVD(HDDVD-R-SL<1層>、 HDDVD-R-DL<2層>、HDDVD-RW-SL、HDDVD-RW-DL、HDDVD-RAM-SL)、DVD±R-SL、DVD±R-DL、DVD±RW-SL、DVD±RW-DL、DVD-RAM、Blu-Ray Disk<登録商標>(BD-RーSL、BD-R-DL、BD-RE-SL、BD-RE-DL)、MO、ZIP、磁気カード、磁気テープ、SDカード、メモリスティック、不揮発性メモリカード、ICカード、等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置、等に記録して構成して用いてよい。 
 さらに「情報記録媒体」は、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの(伝送媒体ないしは伝送波)、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。
 また、「システム」は、複数の装置が論理的に集合した物をいい、各構成の装置が同一筐体中にあるか否かは問わない。このような場合、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
 さらに、本明細書において、フローチャートに示されるステップは、記載された手順に従って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。また、実装では、プログラム手順(ステップ)が実行される順序を変更することができる。さらに、実装の必要に応じて、本明細書で説明した特定の手順(ステップ)を、組み合わされた手順(ステップ)として実装、除去、追加、または再配置することができる。
 さらに、装置の各手段、各機能、各ステップの手順の機能などのプログラムの機能を、専用のハードウェア(例えば専用の半導体回路等)によりその機能を達成してもよく、プログラムの全機能のうち一部の機能をハードウェアで処理し、全機能のうちさらに他の機能をソフトウェアで処理するようにしてもよい。専用のハードウェアの場合、各部を集積回路例えばLSIにて形成されてもよい。これらは個別に1チップ化されても良いし、一部または全部を含むように1チップ化されても良い。また、LSIには、他の機能ブロックが含まれていても良い。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。
 さらに、EQL命令による制御手法は、必ずしも実体のある装置に限られる必要はなく、その方法としても機能することは容易に理解できる。このため、方法にかかる発明も、必ずしも実体のある装置に限らず、その方法としても有効であることに相違はない。この場合、方法を実現するための一例としてSIMD型並列計算機システム、マイクロコンピュータ、制御プロセッサ、処理装置なども含めることができる。
 ところで、このような装置は、単独で存在する場合もあるし、ある機器(例えば表示装置など)に組み込まれた状態で利用されることもあるなど、発明の思想としてはこれに限らず、各種の態様を含むものである。従って、ソフトウェアであったりハードウェアであったりするなど、適宜、変更可能である。発明の思想の具現化例として装置のソフトウェアとなる場合には、かかるソフトウェアを記憶した記憶媒体上においても当然に存在し、利用されるといわざるをえない。
 さらに、一部がソフトウェアであって、一部がハードウェアで実現されている場合であってもよく、一部を記憶媒体上に記憶しておいて必要に応じて適宜読み込まれるような形態のものとしてあってもよい。本発明をソフトウェアで実現する場合、ハードウェアやオペレーティングシステムを利用する構成とすることも可能であるし、これらと切り離して実現することもできる。
 また、発明の範囲は、図示例に限定されないものとする。
 さらに、上記各実施の形態には種々の段階が含まれており、開示される複数の構成要件における適宜な組み合せにより種々の発明が抽出され得る。つまり、上述の各実施の形態同士、あるいはそれらのいずれかと各変形例のいずれかとの組み合せによる例をも含む。この場合において、本実施形態において特に記載しなくとも、各実施の形態及びそれらの変形例に開示した各構成から自明な作用効果については、当然のことながら実施の形態の作用効果として含めることができる。逆に、本実施の形態に記載されたすべての作用効果を奏することのできる構成が、本発明の本質的特徴部分の必須構成要件であるとは限らない。また、実施の形態に示される全構成要件から幾つかの構成要件が削除された構成による実施の形態並びにその構成に基づく技術的範囲も発明になりうる。
 そして、各実施の形態及びそれらの変形例を含むこれまでの記述は、本発明の理解を容易にするために、本発明の多様な実施の形態のうちの一例の開示、すなわち、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、例証するものであり、制限するものではなく、適宜変形及び/又は変更が可能である。本発明は、その技術思想、またはその主要な特徴に基づいて、様々な形で実施することができ、各実施の形態及びその変形例によって本発明の技術的範囲が限定的に解釈されてはならないものである。
 従って、上記に開示された各要素は、本発明の技術的範囲に属する全ての設計変更や均等物を含む趣旨である。
 この出願は2008年4月22日に出願された日本出願特願2008-111448を基礎とする優先権を主張し、その開示の全てをここに取り込む。
 本発明は、PE間で処理あるいは転送データ数が不均衡な場合に、データの分布平準化処理を効率よく実現できるSIMD型並列計算システムを低コストで実現できるようになる。
本発明の第1の実施の形態によるSIMD型並列計算システムの全体の概略構成の一例を示すブロック図である。 図1に示すSIMD型並列計算システムのPEの詳細構成の一例を示すブロック図である。 図1に示すSIMD型並列計算システムのPEにおける各部の動作の一例を説明するための真理値表である。 本発明の第2の実施の形態によるSIMD型並列計算システムの全体の概略構成の一例を示すブロック図である。 図4に示すSIMD型並列計算システムにおけるPEの詳細構成の一例を示すブロック図である。 図1に示すSIMD型並列計算システムのPEにおける各部の動作の一例を説明するための真理値表である。 本発明の第3の実施の形態によるSIMD型並列計算システムにおける各PEのサイクル毎の動作の様子および結果を説明するための説明図である。 本発明の第3の実施の形態によるSIMD型並列計算システムにおける制御プロセッサが行うデータ分布平準化が可能なプログラムコードの一例を説明するための説明図である。 本発明の第4の実施の形態によるSIMD型並列計算システムにおける各種の処理手順の一例を示すフローチャートである。 本発明の第4の実施の形態によるSIMD型並列計算システムにおける各種の処理手順の一例を示すフローチャートである。 本発明の他の実施の形態によるSIMD型並列計算システムにおける各PEのサイクル毎の動作の様子および結果を説明するための説明図である。 本発明の他の実施の形態によるSIMD型並列計算システムの全体の概略構成の一例を示すブロック図である。 本発明の他の実施の形態によるSIMD型並列計算システムの全体の概略構成の一例を示すブロック図である。 本発明のSIMD型並列計算システムを利用した表示装置の一例を示す説明図である。 SIMD型並列計算システムにおいてPE間で処理データ数が平準化されている場合の様子を説明するための説明図である。 関連技術のSIMD型並列計算システムにおいてPE間で処理データ数が平準化されていない様子を説明するための説明図である。
 1   SIMD型並列計算機システム
 101(n-1)、101(n)、101(n+1)  RAM(データ記憶部)
 102(n-1)、102(n) レジスタ(cntr)(データ数格納部)
 103(n-1)、103(n) レジスタ(md)(先頭データ格納部)
 104(n-1)、104(n) 減算演算部(sub) 
 105(n-1)、105(n) 論理積演算部(and)
 106(n-1)、106(n) 排他的論理和演算部(xor)
 107(n-1)、107(n) 加減算演算部(and/sub)
 110(n-1)、110(n) 平準化処理部
 200 PEアレイ
 201(n-1)、201(n)、201(n+1)
 PE(プロセッシング・エレメント)(平準化処理装置)
 210 制御プロセッサ(CP)
 212 データ分布平準化命令生成部
 214 実行制御部
 220 PE間結合線

Claims (12)

  1.  1つの命令ストリームの下で相異なるデータ値に対して、リング状に結合した2以上のプロセッシングエレメントで並列処理を行うSIMD型並列計算システムであって、
     前記個々のプロセッシングエレメントは、
     個々のプロセッシングエレメントが処理するデータを格納するデータ記憶手段と、
     前記データのデータ数を格納するデータ数記憶素子と、
     前記データ記憶手段に格納されている前記データの一部を格納するデータ記憶素子とを有し、
     さらに、前記リング状に結合された2以上のプロセッシングエレメントのうち一のプロセッシングエレメントのデータ数記憶素子に格納されたデータのデータ数と、自プロセッシングエレメントの前記データ数記憶素子が格納する前記データのデータ数とを比較し、前記自プロセッシングエレメントの比較結果と、他のプロセッシングエレメントでの比較結果とで決まるルールに従い、自プロセッシングエレメントの前記データ記憶手段と前記データ数記憶素子と前記データ記憶素子とに格納されているデータの内容を更新する動作と、一のプロセッシングエレメントで格納されているデータを自プロセッシングエレメントに移動させる動作とを指定するデータ分布平準化命令を前記個々のプロセッシングエレメントに発する制御プロセッサを有することを特徴とするSIMD型並列計算システム。
  2.  前記制御プロセッサは、前記比較するデータ数のうち前者のデータ数が後者のデータ数よりも大きい場合にキャリーフラッグ情報を算出し、前記キャリーフラッグ情報と隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報とで決まる前記ルールに従って、前記データ分布平準化命令を発するものである請求項1に記載のSIMD型並列計算システム。
  3.  前記制御プロセッサは、前記比較するデータ数のうち前者のデータ数が後者のデータ数よりも大きい場合“1”、小さい場合に“0”となるキャリーフラッグ情報を算出し、
     前記ルールとして、
     (1)自プロセッシングエレメントでのキャリーフラッグ情報が“0”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“0”であるとき、自プロセッシングエレメントの前記データ数記憶素子と前記先頭データ記憶素子との内容を更新しない、
     (2)自プロセッシングエレメントでのキャリーフラッグ情報が“0”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“1”であるとき、自プロセッシングエレメントの前記データ数記憶素子のデータ数を1デクリメントし、前記先頭データ記憶素子の内容を先頭データに続く次の処理データまたは次の転送データで更新する、
     (3)自プロセッシングエレメントでのキャリーフラッグ情報が“1”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“0”であるとき、自プロセッシングエレメントの前記データ数記憶素子のデータ数を1インクリメントし、前記先頭データ記憶素子の内容を隣接するプロセッシングエレメントの処理データまたは転送データの先頭データの内容で更新する、
     (4)自プロセッシングエレメントでのキャリーフラッグ情報が“1”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“1”であるとき、自プロセッシングエレメントの前記データ数記憶素子のデータ数を更新せず、前記先頭データ記憶素子の内容を隣接するプロセッシングエレメントの処理データまたは転送データの先頭データの内容で更新する、
    という情報を保有するものである請求項1に記載のSIMD型並列計算システム。
  4.  前記制御プロセッサは、前記リング状に結合した全てのプロセッシングエレメントに渡る処理データまたは転送データのデータ数の平均値を求め、前記全てのプロセッシングの処理データまたは転送データのデータ数と前記平均値との差が閾値以下になるまで前記データ分布平準化命令を発するものである請求項1に記載のSIMD型並列計算システム。
  5. 1つの命令ストリームの下で相異なるデータ値に対して、リング状に結合した2以上のプロセッシングエレメントで並列処理を行うSIMD型並列計算方法であって、
     前記リング状に結合された2以上のプロセッシングエレメントのうち隣接する一のプロセッシングエレメントが格納している処理データまたは転送データのデータ数と、自プロセッシングエレメントが格納している処理データまたは転送データのデータ数とを比較し、
     前記比較結果と、隣接する他のプロセッシングエレメントでの比較結果とで決まるルールに従い、自プロセッシングエレメントが格納しているデータの内容を更新する動作と、隣接するプロセッシングエレメントが格納している処理データまたは転送データを自プロセッシングエレメントに移動させる動作とを指定するデータ分布平準化命令を個々のプロセッシングエレメントに発することを特徴とするSIMD型並列計算方法。
  6.  前記比較するデー多数のうち前者のデータ数が後者のデータ数よりも大きい場合にキャリーフラッグ情報を算出し、前記キャリーフラッグ情報と、隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報とで決まる前記ルールに従って、前記データ分布平準化命令を発する請求項5に記載のSIMD型並列計算方法。
  7.  前記比較するデー多数のうち前者のデータ数が後者のデータ数よりも大きい場合“1”、小さい場合に“0”となるキャリーフラッグ情報を算出し、
     前記ルールに従って、
     (1)自プロセッシングエレメントでのキャリーフラッグ情報が“0”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“0”であるとき、自プロセッシングエレメントの前記データ数と前記データとの内容を更新せず、
     (2)自プロセッシングエレメントでのキャリーフラッグ情報が“0”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“1”であるとき、自プロセッシングエレメントの前記データ数を1デクリメントし、前記データの転送データで更新する、
     (3)自プロセッシングエレメントでのキャリーフラッグ情報が“1”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“0”であるとき、自プロセッシングエレメントの前記データ数を1インクリメントし、前記隣接するプロセッシングエレメントの処理データまたは転送データに更新する、
     (4)自プロセッシングエレメントでのキャリーフラッグ情報が“1”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“1”であるとき、自プロセッシングエレメントの前記データ数を更新せず、前記隣接するプロセッシングエレメントの処理データまたは転送データに更新する、
    処理を実行する請求項5に記載のSIMD型並列計算方法。
  8.  前記リング状に結合した全てのプロセッシングエレメントに渡る処理データまたは転送データのデータ数の平均値を求め、前記全てのプロセッシングの処理データまたは転送データのデータ数と前記平均値との差が閾値以下になるまで前記データ分布平準化命令を発する請求項5に記載のSIMD型並列計算方法。
  9. 1つの命令ストリームの下で相異なるデータ値に対して、SIMD型並列計算システムにおけるリング状に結合した2以上のプロセッシングエレメントで実行する並列処理の制御を行う制御プログラムであって、
     前記個々のプロセッシングエレメントは、
     個々のプロセッシングエレメントが処理するデータを格納するデータ記憶手段と、
     前記データのデータ数を格納するデータ数記憶素子と、
     前記データ記憶手段に格納されている前記データの一部を格納するデータ記憶素子とを有しており、
     コンピュータに、
     前記リング状に結合された2以上のプロセッシングエレメントのうち一のプロセッシングエレメントのデータ数記憶素子に格納されたデータのデータ数と、自プロセッシングエレメントの前記データ数記憶素子が格納する前記データのデータ数とを比較する機能と、
     前記自プロセッシングエレメントの比較結果と、他のプロセッシングエレメントでの比較結果とで決まるルールに従い、自プロセッシングエレメントの前記データ記憶手段と前記データ数記憶素子と前記データ記憶素子とに格納されているデータの内容を更新させる指令を個々のプロセッシングエレメントに発する機能と、
     一のプロセッシングエレメントで格納されているデータを自プロセッシングエレメントに移動させる指令を個々のプロセッシングエレメントに発する機能とを実行させることを特徴とするSIMD型並列計算用制御プログラム。
  10.  前記コンピュータに、
     前記比較するデータ数のうち前者のデータ数が後者のデータ数よりも大きい場合にキャリーフラッグ情報を算出する機能と、
     前記キャリーフラッグ情報と、隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報とで決まる前記ルールに従って、データ分布平準化命令を発する機能とを実行させる請求項9に記載のSIMD型並列計算用制御プログラム。
  11.  前記コンピュータに、
     前記比較するデータ数のうち前者のデータ数が後者のデータ数よりも大きい場合“1”、小さい場合に“0”となるキャリーフラッグ情報を算出する機能と、
     前記ルールに従って、
     (1)自プロセッシングエレメントでのキャリーフラッグ情報が“0”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“0”であるとき、自プロセッシングエレメントの前記データ数記憶素子と前記先頭データ記憶素子との内容を更新させない機能と、
     (2)自プロセッシングエレメントでのキャリーフラッグ情報が“0”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“1”であるとき、自プロセッシングエレメントの前記データ数記憶素子のデータ数を1デクリメントし、前記先頭データ記憶素子の内容を先頭データに続く次の処理データまたは次の転送データで更新させる機能と、
     (3)自プロセッシングエレメントでのキャリーフラッグ情報が“1”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“0”であるとき、自プロセッシングエレメントの前記データ数記憶素子のデータ数を1インクリメントし、前記先頭データ記憶素子の内容を隣接するプロセッシングエレメントの処理データまたは転送データの先頭データの内容で更新させる機能と、
     (4)自プロセッシングエレメントでのキャリーフラッグ情報が“1”、かつ隣接する他のプロセッシングエレメント隣接する他のプロセッシングエレメントで算出されたキャリーフラッグ情報を論理反転させたキャリーフラッグ情報が“1”であるとき、自プロセッシングエレメントの前記データ数記憶素子のデータ数を更新せず、前記先頭データ記憶素子の内容を隣接するプロセッシングエレメントの処理データまたは転送データの先頭データの内容で更新させる機能と、
    を実行させる請求項9に記載のSIMD型並列計算用制御プログラム。
  12.  前記コンピュータに、
     前記リング状に結合した全てのプロセッシングエレメントに渡る処理データまたは転送データのデータ数の平均値を求め、前記全てのプロセッシングの処理データまたは転送データのデータ数と前記平均値との差が閾値以下になるまで前記データ分布平準化命令を発する機能を実行させる請求項9に記載のSIMD型並列計算用制御プログラム。
PCT/JP2009/057205 2008-04-22 2009-04-08 Simd型並列計算機システム、simd型並列計算方法及び制御プログラム WO2009131007A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2010509135A JP5370359B2 (ja) 2008-04-22 2009-04-08 Simd型並列計算機システム、simd型並列計算方法及び制御プログラム
EP09734849.4A EP2273381B1 (en) 2008-04-22 2009-04-08 Simd parallel computer system, simd parallel computing method, and control program
US12/922,318 US8769244B2 (en) 2008-04-22 2009-04-08 SIMD parallel computer system, SIMD parallel computing method, and control program

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008-111448 2008-04-22
JP2008111448 2008-04-22

Publications (1)

Publication Number Publication Date
WO2009131007A1 true WO2009131007A1 (ja) 2009-10-29

Family

ID=41216744

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2009/057205 WO2009131007A1 (ja) 2008-04-22 2009-04-08 Simd型並列計算機システム、simd型並列計算方法及び制御プログラム

Country Status (4)

Country Link
US (1) US8769244B2 (ja)
EP (1) EP2273381B1 (ja)
JP (1) JP5370359B2 (ja)
WO (1) WO2009131007A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102393839A (zh) * 2011-11-30 2012-03-28 中国工商银行股份有限公司 并行数据处理系统及方法
WO2013005343A1 (en) 2011-07-01 2013-01-10 Renesas Electronics Corporation Apparatus and method for a marker guided data transfer between a single memory and an array of memories with unevenly distributed data amount in an simd processor system

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9581312B2 (en) 2010-12-06 2017-02-28 Cree, Inc. LED light fixtures having elongated prismatic lenses
US9256631B2 (en) * 2013-07-31 2016-02-09 Oracle International Corporation Building a hash table using vectorized instructions
CN103491315A (zh) * 2013-08-09 2014-01-01 北京中传视讯科技有限公司 视频数据处理方法、装置以及包括该装置的电子设备
CN104516717A (zh) * 2013-09-30 2015-04-15 中国石油化工股份有限公司 一种针对地震数据块的并行循环方法
CN104156268B (zh) * 2014-07-08 2017-07-07 四川大学 一种GPU上MapReduce的负载分配和线程结构优化方法
US10372507B2 (en) * 2016-12-31 2019-08-06 Intel Corporation Compute engine architecture to support data-parallel loops with reduction operations

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58200366A (ja) * 1982-05-18 1983-11-21 Nippon Telegr & Teleph Corp <Ntt> デ−タ転送方式
JPS63147257A (ja) 1986-12-10 1988-06-20 Fujitsu Ltd 並列データ再分配方法及びマルチプロセッサシステム
JPH0713956A (ja) * 1993-06-28 1995-01-17 Toshiba Corp Simd型並列計算機データ転送装置
JP2003316754A (ja) * 2002-04-26 2003-11-07 Mitsubishi Heavy Ind Ltd 動的負荷分散を行うシミュレーションシステム
JP2004362253A (ja) * 2003-06-04 2004-12-24 Ricoh Co Ltd Simd型マイクロプロセッサ

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5542074A (en) * 1992-10-22 1996-07-30 Maspar Computer Corporation Parallel processor system with highly flexible local control capability, including selective inversion of instruction signal and control of bit shift amount
JPH06266859A (ja) 1993-03-11 1994-09-22 Nippon Steel Corp Simd型並列計算装置
JP3732530B2 (ja) 1993-06-24 2006-01-05 日本電信電話株式会社 データフロー計算機の実行制御装置
US6118901A (en) * 1997-10-31 2000-09-12 National Science Council Array architecture with data-rings for 3-step hierarchical search block matching algorithm
US6148111A (en) * 1998-04-27 2000-11-14 The United States Of America As Represented By The Secretary Of The Navy Parallel digital image compression system for exploiting zerotree redundancies in wavelet coefficients
US6996639B2 (en) * 2002-12-10 2006-02-07 Intel Corporation Configurably prefetching head-of-queue from ring buffers
US7373645B2 (en) * 2003-04-23 2008-05-13 Micron Technology, Inc. Method for using extrema to load balance a loop of parallel processing elements
CN101401088B (zh) * 2006-03-03 2011-03-30 日本电气株式会社 具有高速pe间数据再配置功能的处理器阵列系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58200366A (ja) * 1982-05-18 1983-11-21 Nippon Telegr & Teleph Corp <Ntt> デ−タ転送方式
JPS63147257A (ja) 1986-12-10 1988-06-20 Fujitsu Ltd 並列データ再分配方法及びマルチプロセッサシステム
JPH0713956A (ja) * 1993-06-28 1995-01-17 Toshiba Corp Simd型並列計算機データ転送装置
JP2003316754A (ja) * 2002-04-26 2003-11-07 Mitsubishi Heavy Ind Ltd 動的負荷分散を行うシミュレーションシステム
JP2004362253A (ja) * 2003-06-04 2004-12-24 Ricoh Co Ltd Simd型マイクロプロセッサ

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
See also references of EP2273381A4
SHORIN KYO: "A Video Recognition Processor for Intelligent Cruise Control Based on 128 4-Way VLIW RISC Processing Elements", IEICE TECHNICAL REPORT, vol. 103, no. 89, May 2003 (2003-05-01), pages 19 - 24

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013005343A1 (en) 2011-07-01 2013-01-10 Renesas Electronics Corporation Apparatus and method for a marker guided data transfer between a single memory and an array of memories with unevenly distributed data amount in an simd processor system
CN102393839A (zh) * 2011-11-30 2012-03-28 中国工商银行股份有限公司 并行数据处理系统及方法

Also Published As

Publication number Publication date
EP2273381B1 (en) 2014-03-05
JPWO2009131007A1 (ja) 2011-08-18
US8769244B2 (en) 2014-07-01
JP5370359B2 (ja) 2013-12-18
EP2273381A4 (en) 2011-11-09
EP2273381A1 (en) 2011-01-12
US20110040952A1 (en) 2011-02-17

Similar Documents

Publication Publication Date Title
JP5370359B2 (ja) Simd型並列計算機システム、simd型並列計算方法及び制御プログラム
CN109375951B (zh) 一种用于执行全连接层神经网络正向运算的装置和方法
CN107329734B (zh) 一种用于执行卷积神经网络正向运算的装置和方法
JP4277042B2 (ja) 演算処理装置
JP2021192257A (ja) プログラム可能な最適化を有するメモリネットワークプロセッサ
JP6092400B2 (ja) 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令
CN107250978B (zh) 基于多核块的指令集架构中的寄存器重命名
JP2014505916A (ja) Simdレジスタファイルから汎用レジスタファイルへデータを移動させるための方法及び装置
JP6920277B2 (ja) 広いデータ要素のためのレジスタのペアを用いた偶数要素演算および奇数要素演算を有する混合幅simd演算
CN107851013B (zh) 数据处理装置和方法
KR20220042424A (ko) 재구성가능 아키텍처들을 위한 컴파일러 플로우 로직
CN110574007B (zh) 执行双输入值绝对值和求和操作的电路
CN111656339A (zh) 存储器装置及其控制方法
TWI754310B (zh) 純函數語言神經網路加速器系統及電路
JP2011141823A (ja) データ処理装置および並列演算装置
US20180212894A1 (en) Fork transfer of data between multiple agents within a reconfigurable fabric
EP2988268B1 (en) Rendergraph compilation and use thereof for low-latency execution
US9241142B2 (en) Descriptor-based stream processor for image processing and method associated therewith
TW201928656A (zh) 向量帶進位加法指令
WO2010082529A1 (ja) Simd型並列データ処理装置及びデータソート方法並びにプロセッシングエレメント
US9189448B2 (en) Routing image data across on-chip networks
US11842200B2 (en) Multi-modal gather operation
CN103777922B (zh) 预测计数器
JP2015106325A (ja) ベクトルレジスタリネーミング制御方式、ベクトルプロセッサ、及びベクトルレジスタリネーミング制御方法
JP5813484B2 (ja) Vliwプロセッサと命令構造と命令実行方法

Legal Events

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

Ref document number: 09734849

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 12922318

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 2010509135

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 2009734849

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE