WO2013141290A1 - データ処理装置、データ処理システム、データ構造、記録媒体、記憶装置およびデータ処理方法 - Google Patents

データ処理装置、データ処理システム、データ構造、記録媒体、記憶装置およびデータ処理方法 Download PDF

Info

Publication number
WO2013141290A1
WO2013141290A1 PCT/JP2013/058039 JP2013058039W WO2013141290A1 WO 2013141290 A1 WO2013141290 A1 WO 2013141290A1 JP 2013058039 W JP2013058039 W JP 2013058039W WO 2013141290 A1 WO2013141290 A1 WO 2013141290A1
Authority
WO
WIPO (PCT)
Prior art keywords
packet
processing
instruction
data
loop
Prior art date
Application number
PCT/JP2013/058039
Other languages
English (en)
French (fr)
Inventor
武者野 満
Original Assignee
株式会社Mush-A
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 株式会社Mush-A filed Critical 株式会社Mush-A
Priority to JP2014506265A priority Critical patent/JP6353359B2/ja
Publication of WO2013141290A1 publication Critical patent/WO2013141290A1/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/82Architectures of general purpose stored program computers data or demand driven

Definitions

  • the present invention relates to a data processing device, a data processing system, a data structure, a recording medium, a storage device, and a data processing method.
  • a Neumann architecture As a computer architecture, a Neumann architecture is generally known in which instructions are sequentially read from a storage device (memory), fetched, decoded, and executed.
  • the Neumann architecture is an instruction-centric processing system in which the execution order of instructions is determined in advance and processing is performed while collecting operands (operation target data) each time.
  • a superscalar processor is known as a CPU (Central Processing Unit) architecture for processing a plurality of instructions in parallel.
  • the superscalar processor is capable of out-of-order processing in which instructions are issued to and executed by execution nodes in the order of arrival of operands.
  • the scheduler since the scheduler rearranges the execution results in the correct order while checking the data dependency, the increase in the number of instructions that can be executed at the same time causes the complexity of the scheduler.
  • the present applicant has proposed a parallel computer based on a new data-driven architecture (hereinafter referred to as a new data-driven computer) in order to solve the problem of the Neumann computer (Patent Document 1 and Patent Document 1). 2).
  • the new data-driven computer is intended for processing packets in which operand data and operator instructions are integrated, and the instructions included in each packet are determined by the bit string itself of the packet. It is executed on the destination PE (Processor / Processing Element). Therefore, when one instruction is executed in the current PE, a packet including a plurality of instructions moves to the next PE (including the current PE) determined by the bit string after execution and sequentially moves between the PEs. The instruction is executed.
  • the new data driven computer dynamically arranges the packets to be processed based on the bit string itself to achieve both versatility and high speed.
  • JP 2011-138479 A International Publication No. 2011/0668018
  • PEs are arranged in a matrix and, like the tile processor, only adjacent PEs are connected to each other, thereby avoiding the problem of wiring delay. It was.
  • the average moving distance of each packet (the average number of PEs passed through) increases as the total number of PEs increases. Will increase. Therefore, for each packet, the ratio of travel time to the entire processing time increases, and for each PE, the ratio of packets transferred to neighboring PEs increases with respect to packets to be acquired and processed, resulting in a large overhead. turn into. Therefore, even if the number of PEs is increased, it is not possible to improve the processing capacity of the entire apparatus commensurate with it.
  • Patent Document 1 also proposes a configuration in which each PE includes a plurality of channels for each input / output port, and the overhead is reduced by increasing the number of input / output channels included in each PE in this way. can do.
  • this method increases the circuit scale (number of gates) of the input / output units of each PE and the communication path between the PEs in the entire apparatus, and limits the number of PEs that can be mounted on the apparatus. Therefore, it is not suitable for the purpose of increasing the number of PEs and improving the processing capability.
  • the main present invention for solving the above-described problems is arranged in a matrix, and for each data, extended identification information including identification information for identifying the data and instruction information indicating one or more processing instructions for the data is added.
  • a plurality of processing units for processing the packet, the plurality of processing units, a destination information calculation unit for calculating destination information of the packet according to the extended identification information, and the destination information of the packet An input / output unit that acquires only a packet indicating a processing unit and transfers a packet whose destination information does not indicate the processing unit to a processing unit adjacent to the processing unit indicated by the destination information; and the input / output unit An operation unit that executes the processing instruction of the packet acquired by the destination information calculation unit, wherein the destination information calculation unit includes at least the identification among the extended identification information Based on the bit string of the first part including a part of the information, first destination information indicating any one of a plurality of processing unit groups obtained by dividing the plurality of processing units as a whole is calculated, and the extended identification information Among these processing units
  • the overhead associated with the movement of the packet between PEs can be reduced, and the overall processing capability can be improved.
  • PE processing element
  • MCE memory control element
  • MCE memory control element
  • FIG. 11 is a diagram illustrating an example of a developed packet sequence generated by an MCE (memory control element) in the data processing apparatus of Patent Literature 1.
  • the data processing system shown in FIG. 2 is a parallel computer system including a data processing device 1, and includes a storage device 6, an input device 7, an output device 8, and a bus 9 in addition to the data processing device 1. It is configured.
  • the data processing device 1, the storage device 6, the input device 7, and the output device 8 are connected to each other via a bus 9. A detailed description of the configuration of the data processing apparatus 1 will be given later.
  • the storage device 6 includes a RAM (Random Access Memory), a ROM (Read Only Memory), and the like, and stores a program (executable code), data used for executing the program, and the like.
  • the data processing device 1 corresponds to a CPU of a computer system and executes a program stored in the storage device 6. A detailed description of the operation of the data processing apparatus 1 will be described later.
  • the input device 7 is composed of a keyboard, a mouse, and the like, and inputs information including data and programs (source program or execution code) from the outside to the data processing system.
  • the output device 8 includes a display, a printer, and the like, and outputs information to the outside as characters, images, and the like.
  • the classification of the data processing device 1, the storage device 6, the input device 7, and the output device 8 is not fixed.
  • an auxiliary storage device such as a hard disk drive or an optical disk drive is used as the storage device 6, but may be classified into an input device 7 and an output device 8 that input / output information to / from the outside.
  • the data processing apparatus 1 shown in FIG. 3 includes PEs 100 to 163, an MCE (Memory Control / Controlling Element) 300, a cache memory 400, and a communication path (transmission path) 500. It is configured.
  • MCE Memory Control / Controlling Element
  • cache memory 400 cache memory
  • communication path 500 transmission path
  • the data processing apparatus 1 includes a plurality of PEs corresponding to processing units, and each PE is connected to each other via a communication path 500.
  • the data processing device 1 includes 64 PEs 100 to 163 arranged in a matrix of 8 rows and 8 columns.
  • PEs 100 to 163 are assumed to be connected to each other only between adjacent PEs. A detailed description of the configuration of each PE will be given later.
  • the coordinates (X, Y) of the PEs 100 to 163 are expressed as (0, 0) to (7, 7), respectively, as shown in FIG. It is possible to set an identification number having 3 bits and the Y coordinate as the lower 3 bits.
  • the identification number set in this way matches the last two digits of the three-digit code of each PE shown in FIG. For example, the identification number of PE 107 located at coordinates (0, 7) is 7 (000111 in binary notation), and the identification number of PE 156 located at coordinates (7, 0) is 56 (111000 in binary notation). It becomes.
  • the data processing apparatus 1 includes at least one MCE corresponding to a control unit, and each MCE is connected to one of the PEs 100 to 163 via the communication path 500.
  • each MCE is connected to one of the PEs 100 to 163 via the communication path 500.
  • the data processing apparatus 1 includes only one MCE 300.
  • the MCE 300 is connected to adjacent PEs 100 to 107.
  • the cache memory 400 is connected to the MCE 300.
  • the cache memory 400 is connected to the storage device 6 (not shown) outside the data processing device 1 via the bus 9 described above.
  • the cache memory 400 controls input / output between the MCE 300 and the storage device 6 while performing caching. Therefore, programs, data, and the like stored in the storage device 6 are read into the MCE 300 via the cache memory 400.
  • FIG. 4 shows, as an example of the source program PR0, a process of storing, in the array dp [1024], a value obtained by dividing each element of the array sp [1024] described in C ++ language by 2.
  • the execution code PR1 may be a program described in an assembly language that is substantially in one-to-one correspondence with the machine language, instead of the machine language program.
  • the MCE 300 generates an initial packet sequence to be described later from the read execution code PR1 based on the data flow diagram.
  • the MCE 300 does not need to generate the data flow diagram itself, but in this embodiment, for convenience of explanation, the MCE 300 first generates the data flow diagram, and then generates the initial packet sequence based on the data flow diagram.
  • each instruction is roughly classified into a 2-input / 1-output instruction, a 1-input / 1-output instruction, and a loop-related instruction.
  • the 2-input / 1-output instruction is an instruction that performs a binary operation using the two input data as the left and right operands, respectively, and the one-input / one-output instruction has one input data as the operand.
  • the loop-related instruction is an instruction added to the data processing apparatus of the present embodiment in order to expand the loop processing in each PE.
  • each instruction has a fixed length of 8 bits, for example.
  • each data is either left or right operand. It requires left and right information (direction information). Therefore, the left and right information “L” or “R” is further added to the symbol “ ⁇ ” for the subtraction instruction, and hexadecimal notation 12H or 13H is set, respectively.
  • a symbol “/” (“/ L” and “/ R”) with left and right information added, and , Hexadecimal notation 16H and 17H are set.
  • the left / right information “L” indicates data to be the left operand
  • the left / right information “R” indicates data to be the right operand.
  • the LSB (Least Significant Bit) of each instruction is assigned exclusively for left and right information. Therefore, in the following instructions (excluding the null character), the LSB of the instruction having the left / right information “L” and the instruction having no left / right information is 0, and the LSB of the instruction having the left / right information “R” is 1. . Therefore, left and right information can be easily added to an addition instruction, a multiplication instruction, or the like that performs a commutative operation that satisfies the exchange law.
  • the write command in which the symbols “write” (“writeL” and “writeR”) to which the left / right information is added and the hexadecimal notations 18H and 19H are set is stored at the address of the storage device 6 indicated by the data (L). This is an instruction to write data (R) to the data (* L) being recorded. Note that “*” is an indirect reference operator.
  • the data addition command in which the symbols “Dap” (“DapL” and “DapR”) to which the left and right information are added and the hexadecimal notations 50H and 51H are set includes a packet ( R) is a command for adding a data portion.
  • instructions added with symbols “Iap1” to “Iap4” (“Iap1L” to “Iap4L” and “Iap1R” to “Iap4R”) with left and right information added, and hexadecimal notation 60H to 67H are added.
  • Each of the instructions is an instruction for adding the data portion of the packet (R) to the processing instruction portion of the packet (L) described later.
  • the 1-input / 1-output command will be described. Note that the 1-input / 1-output instruction has only one data as an operand, and therefore has no left / right information.
  • the NOP instruction in which the symbol “NOP” and hexadecimal notation 00H are set is an instruction that does nothing.
  • the read command in which the symbol “read” and hexadecimal notation 02H are set is a command for reading data (* A) stored at the address of the storage device 6 indicated by the data (A).
  • hexadecimal notation FFH is set as a null character indicating the end of the packet, for example.
  • loop related instructions will be described. Here, only an outline will be described, and details will be described later with a specific example.
  • the pack (packing) command in which the symbols “pack” (“packL” and “packR”) with the left and right information added and the hexadecimal notations 70H and 71H are set, the data part of the packet (L) and the packet ( R) is a command that bundles the data portion with the data portion of one packet. Therefore, the pack instruction is a 2-input / 1-output instruction.
  • Duplicate (duplicate) instructions in which the symbols “dup” (“dupL” and “dupR”) with left and right information added, and hexadecimal notation 72H and 73H are set, duplicate the data portion of the packet (L). This is an instruction to distribute the data portion of two packets. At this time, the data portion of the packet (R) is added to the processing instruction portion of the packet newly generated by duplication and distribution. Therefore, the duplicate instruction is a 2-input / 2-output instruction.
  • the step command that is set with the symbols “step” (“stepL” and “stepR”) to which the left and right information is added and the hexadecimal notation 74H and 75H is set in the packet (R) and the packet (L).
  • This is an instruction for generating template information corresponding to the data portion (hereinafter referred to as S template) and registering it in a template buffer to be described later.
  • S template data portion
  • the step command is a 2-input / 0-output (however, S template is generated) command.
  • Each of the instructions is an instruction for generating template information (hereinafter referred to as R template) corresponding to the packet (R) and the data portion of the packet (L) and registering it in the template buffer. At that time, the packet (R) itself disappears. Therefore, the repeat instruction is a 2-input / 1-output (further, R template is generated) instruction.
  • the MCE 300 generates a data flow diagram using the instruction set shown in FIG.
  • FIG. 6 shows a data flow diagram generated from the execution code PR1, and corresponds to the source program PR0 shown in FIG.
  • D1 to D8 indicate data
  • I1 to I13 indicate instructions.
  • a double line represents generation of a packet group composed of a plurality of packets and processing for the generated packet group.
  • Data D2 indicates a loop ID pitch (increment of loop ID) to be described later, and is 1 in the case of a single loop or an innermost loop. Then, it is shown that 1024 packet groups in which the loop ID increases by 1 should be generated by the combination of the data D1 and D2.
  • Data D3 and D4 are pointers indicating arrays dp [1024] and sp [1024], respectively, and data D5 indicates a divisor 2 in the division within the loop.
  • Data D6 indicates an instruction to be added to the processing instruction portion of a packet newly generated by executing the duplicate instruction.
  • the data D8 indicates a step pitch (increment of data corresponding to the loop variable ii), which will be described later, and becomes “1” from “ii ++” in the source program.
  • the combination of the data D1 and D2 and the combination of the data D7 and D8 should generate a group of 1024 packets whose data is the loop variable ii in which the loop ID increases by 1 and increases from the initial value 0 by 1. It has been shown.
  • the commands I9 to I13 below the long broken line are commands for the packet group generated by the expansion of the loop processing, a detailed description thereof will be described later.
  • FIG. 7 shows an initial packet sequence generated based on the data flow diagram shown in FIG. 6 before each instruction is executed.
  • Each packet consists of a data part (data section) and an extended identification information part (extended identification information section).
  • the extended identification information part includes an identification information part (identificationidentinformationidentsection) and a processing instruction (command information) part (processing instructions section).
  • Each packet may be appropriately encoded for the purpose of encryption or compression.
  • the identification information part includes, for example, a general-purpose ID and a loop ID.
  • the general-purpose ID is used for, for example, issuer information indicating the MCE that generated the packet.
  • the processing instruction portion includes instruction number information in addition to up to eight instructions 1 to 8. Further, the instructions are arranged in the reverse order of the execution order, and the instruction to be executed first is arranged at the tail, and thereafter the null character. Furthermore, although the instruction number information indicates the number of unprocessed instructions, it may be counted each time.
  • the data part includes the data type information and extension flag of the data in addition to the data body.
  • the data type information indicates a data type such as “integer type”, “floating point type (floating)”, “pointer type (pointer)”.
  • command type (command)” is provided as a data type, and the data of the command type is added as an instruction to the processing instruction part of the packet by executing an instruction addition instruction or a duplicate instruction.
  • the extension flag is used for an instruction addition function (instruction addition processing in Patent Document 1) different from the instruction addition instruction.
  • the initial packet sequence composed of the packets P1 to P8 is obtained by reconfiguring the data flow diagram shown in FIG. 6 for each of the eight data D1 to D8.
  • the data is generated by adding identification information and a processing instruction, and issued from the MCE 300 to any of the adjacent PEs 100 to 107.
  • the packet issued from the MCE 300 is transmitted via the communication path 500 to the PE indicated by destination information described later among the PEs 100 to 163.
  • Each PE corresponds to an execution node that executes a processing instruction included in the packet. A detailed description of the operation of each PE will be described later.
  • the data processing apparatus of the present invention is not limited to a configuration including an MCE that generates a packet sequence from an execution code PR1 described in a machine language or an assembly language, as shown in the present embodiment.
  • the storage device 6 may store a program expressed by a syntax tree as an intermediate code generated at an intermediate stage when compiling from the source program PR0 to the execution code PR1.
  • the syntax tree has a tree structure in which operands are placed in leaf nodes (leaf node) and operators are placed in internal nodes (internal node). Is easily generated.
  • the storage device 6 may store initial packet sequences (initial packet sequences) generated in advance by an external device including a compiler.
  • the MCE 300 can issue each packet to the adjacent PE as it is.
  • the storage device 6 may store intermediate packet sequences (interim packet sequences) in which some or all of the identification information portion is omitted from the initial packet sequence or null characters are stored.
  • the MCE 300 issues each packet to the adjacent PE after adding the omitted identification information part.
  • a packet group generated by the expansion of the loop processing may be directly input from the external device to the data processing device.
  • the external device in this case may include other data processing devices operating in parallel.
  • FIG. 1 Another example of the relationship between the source program and the program (execution code) processed by the data processing device 1 is shown in FIG.
  • the compiler generates an initial packet sequence or an intermediate packet sequence from the source program PR0 described in a high-level language based on the data flow diagram. Further, in the storage device 6, these packet sequences are appropriately encoded and stored as an execution code PR2. Then, the execution code PR2 is read into the MCE 300.
  • PEs 100 to 163 shown in FIG. 1 include an input / output unit 210, a comparison / selection unit 230, a buffer memory 240, an instruction decoder 250, an ALU (Arithmetic Logic Unit) 260, a packet generation unit 270, and Each of them includes a template buffer 280.
  • the instruction decoder 250 and the ALU 260 correspond to the calculation unit.
  • the input / output unit 210 includes a destination information calculation unit 211, output ports 214a to 214d, and input ports 215a to 215d.
  • the input / output unit 210 receives a packet, data read from the storage device 6 and the like via each input port. Further, the input / output unit 210 outputs a packet, data to be written in the storage device 6 and the like via each output port.
  • Each input / output port (input port and output port) is connected to an adjacent PE or MCE via the communication path 500 (not shown).
  • each input / output port may include a plurality of channels, and the plurality of channels may be used to input / output packets, data, and the like between adjacent PEs or between PEs and MCEs.
  • the packet is input from the input / output unit 210 to the comparison / selection unit 230.
  • the comparison / selection unit 230 includes a hash value calculation unit 231 and inputs / outputs packets to / from the buffer memory 240 corresponding to the packet storage unit. Further, from the comparison / selection unit 230, packets having data as left and right operands are input to the ALU 260 via the instruction decoder 250. A packet newly generated by the ALU 260 is input to the input / output unit 210 again. When the destination information of the newly generated packet indicates the PE, the packet is input from the input / output unit 210 to the comparison / selection unit 230 again.
  • template information is further input to the packet generation unit 270 from the instruction decoder 250.
  • the packet generator 270 inputs and outputs template information to and from the template buffer 280 corresponding to the template storage unit. Then, the packet newly generated by the packet generation unit 270 is input to the input / output unit 210 again.
  • the input / output unit 210 first calculates the destination information of the packet input by the destination information calculation unit 211.
  • the destination information is information indicating the PE that should process the packet, and can be obtained from the extended identification information portion of the packet.
  • the calculation method of the destination information in this embodiment is demonstrated.
  • the destination information calculation unit 211 first extracts only the extended identification information portion from each packet, and masks the left and right information of the instruction to be executed first among the extended identification information.
  • the instruction to be executed first is arranged at the end of the packet (immediately before the null character), and the LSB of each instruction is assigned exclusively for left and right information. Therefore, the last bit of the extended identification information (immediately before the null character) may be masked with 0 or 1.
  • the destination information calculation unit 211 divides the masked extended identification information into an identification information part and a processing instruction part, generates a pseudo (pseudo) random number based on each part, In response, destination information is calculated.
  • a 2-bit pseudo random number Rid of 0 to 3 (00 to 11 in binary notation) is generated from the identification information part, and 0 to 15 (binary notation) is generated from the processing instruction part. 0000 to 1111) is generated as a 4-bit pseudorandom number Rcm.
  • pseudo-random numbers Rid and Rcm are generated from the identification information and the (masked) processing instruction, respectively, and in accordance with these pseudo-random numbers, coordinates in the same format as the coordinates of each PE shown in FIG. 3 (X , Y) can be calculated as destination information. Further, as described above, the identification number of each PE having the X coordinate as the upper 3 bits and the Y coordinate as the lower 3 bits may be used as the destination information.
  • the same pseudo-random numbers Rid and Rcm are generated from the packet with the same masked extended identification information, and the same destination information is calculated.
  • FIG. 10 shows the correspondence between the destination information calculated in this way and each PE.
  • the 2 bits Xi and Yi of the pseudo random number Rid are the upper 1 bit (most significant bit) of the X coordinate and the Y coordinate, respectively. Therefore, the PE (destination PE) indicated by the destination information (X, Y) is included in any of the four blocks (blocks) surrounded by the long broken lines in FIG. 10 according to the Xi and Yi. Become.
  • the calculated destination information indicates any section according to the pseudo random number Rid (first destination information) generated from the identification information, and the pseudo random number Rcm (second destination information) generated from the processing instruction. ) Indicates the position of the PE in the section.
  • the destination information calculation unit 211 may be configured to calculate the destination information with reference to a pre-generated pseudo random number table. In this case, the destination information calculation unit 211 does not need to generate a pseudo-random number for each packet, so that the destination information calculation time can be shortened.
  • LCG Linear Congruential Generator
  • LFSR Linear Feedback Shift Register
  • the calculated destination information may be added to the packet and the destination information may be reused.
  • the destination information can be used as it is in other cases by adding the destination information. . In this case, it is not necessary to calculate the destination information for the packet to which the destination information is added.
  • the input / output unit 210 determines whether or not the destination information of the packet indicates the PE.
  • the input / output unit 210 acquires the packet and inputs the packet to the comparison / selection unit 230.
  • the packet is transferred to the PE adjacent in the direction approaching the PE indicated by the destination information.
  • the input / output unit of each PE performs this operation, each packet is transmitted and acquired up to the PE indicated by the destination information.
  • each packet first moves in the y-axis direction in FIG. 10 until the PE and Y coordinates indicated by the destination information match, and then moves in the x-axis direction in FIG. 10 until the X coordinates match. .
  • the packet movement path is always the shortest.
  • the direction change during movement is once or zero, and the frequency of use of the communication path 500 between the PEs can be averaged.
  • the packet when the destination information of a packet issued from the MCE 300 to the PE 103 indicates the PE 127, the packet is transmitted to the PE 127 via the PE 111 and the PE 119. Also, as an example, when the destination information of a newly generated packet processed by PE 127 indicates PE 108, the packet is transmitted to PE 108 via PE 126, PE 125, PE 124, and PE 116.
  • the comparison / selection unit 230 selects, as a processing target (command execution target), a command that can be executed from among packets acquired by the input / output unit 210 (hereinafter referred to as an acquisition packet), and outputs a command decoder Input to 250.
  • the comparison / selection unit 230 stores a packet incapable of executing an instruction in the buffer memory 240 and reads a packet stored in the buffer memory 240 (hereinafter referred to as a storage packet).
  • the comparison / selection unit 230 inputs only the acquisition packet to the instruction decoder 250.
  • the comparison / selection unit 230 determines that the masked extended identification information is the acquisition packet. The packet that matches is searched from the stored packet. When there is a matching stored packet, the comparison / selection unit 230 selects the two matching packets as processing targets and inputs them to the instruction decoder 250. When there is no matching stored packet, the comparison / selection unit 230 stores the acquired packet in the buffer memory 240.
  • the buffer memory 240 includes a hash table in order to efficiently search for a stored packet in which the masked extended identification information matches the acquired packet.
  • the hash value calculation unit 231 calculates a hash value from the acquired packet. The hash value is calculated based on the masked extended identification information of the acquired packet, as in the case of the destination information. Then, when storing the acquired packet in the buffer memory 240, the comparison / selection unit 230 stores the acquired packet in the hash table in association with the hash value.
  • FIG. 11 shows an example of a hash table implemented in the buffer memory 240.
  • an open addressing method (open ⁇ addressing) is used as a hash collision resolution method
  • a linear search method (linear probing) is used as a rehashing procedure.
  • FIG. 11 shows, as an example, a case where packets 2 to 5 having a hash value n are stored after a packet 1 having a hash value n + 3 is stored.
  • the packet 1 is stored at the position of the element n + 3 of the route array [256], and the flag “1” and the count value “1” are set.
  • Packets 2 to 5 are stored at the positions of elements n, n + 1, n + 2, and n + 4, respectively, and a flag “1” and a count value “4” are set at the position of element n.
  • the instruction decoder 250 reads (interprets) an instruction to be executed first of one or two packets input from the comparison / selection unit 230 and inputs the packet to the ALU 260. At this time, if the instruction to be executed first is a repeat instruction or a step instruction, template information (R template or S template) is generated and input to the packet generator 270.
  • the ALU 260 performs arithmetic operation (integer operation and / or floating point operation), logical operation, etc. on the data part (operand) of one or two packets input from the instruction decoder 250, and outputs the operation result. . More specifically, the ALU 260 executes the instruction to be executed first for the input packet data, and adds the extended identification information excluding the executed instruction to the execution result data. A new packet is generated and input to the input / output unit 210 again.
  • the packet generation unit 270 first registers the template information input from the instruction decoder 250 in the template buffer 280. Further, the packet generation unit 270 generates a packet group for the number of loop repetitions for each template information based on the template information registered in the template buffer 280 and inputs the packet group to the input / output unit 210. The generation of the packet group is performed automatically (every clock) independently of the operation of each unit other than the packet generation unit 270.
  • each PE acquires only a packet whose destination information indicates the PE, and forwards a packet whose destination information does not indicate the PE to another PE. Then, the instruction to be executed first is executed on the acquired packet data, and a new packet is generated by adding the extended identification information excluding the executed instruction to the execution result data. The packet is transferred or acquired according to the destination information.
  • the destination information calculation unit 211 and the hash value calculation unit 231 each have different destination information and different values from the other cases. Calculate a hash value. That is, when the instruction to be executed first is a repeat instruction, the portion of the extended identification information used for calculating the destination information and the hash value is different from the masked extended identification information. A detailed description of the destination information and hash value calculation method in this case will be given in a specific description of a repeat instruction to be described later.
  • the first (last) instruction to be executed is the pack instruction I1, and the extended identification information is identical except for the left and right information of the pack instruction I1. Destination information is calculated. Therefore, the packets P1 and P2 are transmitted and acquired up to the same PE indicated by the calculated destination information. Then, the pack instruction I1 is executed in the ALU 260 of the PE. As a result, as shown in FIG. 12, the data D1 (1024) and the data D2 (1) are bundled in the data part, and the pack instruction I1 is excluded. A new packet P9 is generated. Similarly, the pack instruction I2 is executed for the packets P7 and P8. As a result, the data D7 (0) and the data D8 (1) are bundled in the data part, and a new packet excluding the pack instruction I2 is included. P10 is generated.
  • the pack instruction is executed for integer type data, and the integer type data is set to a fixed length of, for example, 32 bits, whereby two integer type data are converted into a data portion of one packet. Can be bundled. Further, in order to indicate that the data part is composed of two integer data, the data types of the packets P9 and P10 generated by executing the pack instruction are “packed”.
  • the first instruction to be executed is a repeat instruction I3, and in the processing instruction portion (instruction 5 of the packet P9 and instruction 3 of the packet P3) in which the instruction to be executed next is stored.
  • Instruction 5 of the packet P9 and instruction 3 of the packet P3 in which the instruction to be executed next is stored.
  • the integer is used as a down counter when executing a repeat instruction, and the repeat instruction is handled as a substantially 16-bit instruction including a down counter.
  • extended identification information P9 ′ and P3 ′ including only a 16-bit repeat instruction (I3 + “4”) to be executed first is included in the processing instruction part.
  • the destination information and the hash value are calculated using the information. Since the extended identification information P9 'and P3' are identical except for the left and right information of the repeat instruction I3, the same destination information is calculated. Therefore, the packets P9 and P3 are transmitted and acquired up to the same PE indicated by the calculated destination information.
  • the repeat instruction I3 (rep1) is executed in the ALU 260 of the PE, and as a result, a new packet P11 is generated in which the down counter of the repeat instruction I3 (rep1L) is counted down to “3” in the packet P9.
  • the instruction decoder 250 generates template information (R template) including the template packet TP1 excluding the repeat instruction I3 (rep1R) and the down counter in the packet P3, and registers the template information in the template buffer 280 via the packet generator 270.
  • R template template information
  • the template packet TP1 is not a packet actually generated, but is a part of the R template, and is reflected in a packet group generated by the packet generation unit 270.
  • the template buffer 280 can register a plurality of template information.
  • the number of templates indicates the number of template information registered in the template buffer 280, and the next template number indicates template information that the packet generation unit 270 should refer to (to be executed next).
  • template information TI1 is template information registered in accordance with the repeat instruction I3, and includes a generation condition when the packet generation unit 270 generates a packet group together with the template packet TP1.
  • the RS flag indicates whether the template information is an R template or an S template. Since the template information TI1 is an R template registered according to the repeat instruction I3, the RS flag is “R”.
  • the total number of generations indicates the total number of packets (the number of packets included in the packet group) to be generated by the packet generation unit 270 based on the template information.
  • the number of packets already generated by the packet generation unit 270 among the total generation numbers is shown.
  • the loop ID pitch indicates the increment of the loop ID when the packet generator 270 generates the packet group
  • the step pitch indicates the increment of the data when the packet generator 270 generates the packet group (the loop variable ii). Equivalent to the increment).
  • data D1 (1024) and data D2 (1) enclosed in the data portion of the packet P9 are stored in the total number of generations of the R template TI1 and the loop ID pitch, respectively.
  • the pitch is “0”.
  • the repeat instruction I4 (rep1) is executed for the packets P11 and P4.
  • the down counter of the repeat instruction I4 (rep1L) is counted down to “2” in the packet P11.
  • a new packet P12 is generated.
  • the R template TI2 including the template packet TP2 excluding the repeat instruction I4 (rep1R) and the down counter in the packet P4 is registered in the template buffer 280.
  • a repeat instruction I5 (rep1) is executed for the packets P12 and P5.
  • a new packet in which the down counter of the repeat instruction I5 (rep1L) is down-counted to “1” in the packet P12. P13 is generated.
  • the R template TI3 including the template packet TP3 excluding the repeat instruction I5 (rep1R) and the down counter in the packet P5 is registered in the template buffer 280.
  • a repeat instruction I6 (rep1) is executed for the packets P13 and P6.
  • the repeat instruction I6 (rep1L) and the down counter that is down-counted to “0” are excluded in the packet P13.
  • a new packet P14 is generated.
  • the R template TI4 including the template packet TP4 excluding the repeat instruction I6 (rep1R) and the down counter in the packet P6 is registered in the template buffer 280.
  • the packet GP1-0 generated first is the same as the template packet TP1, and the loop ID pitch of the R template TI1 is “1”, so that the loop IDs of the packets GP1-0 to GP1-1023 Are increasing one by one.
  • the packet generator 270 generates packet groups GP2-ii, GP3-ii, and GP4-ii based on the R templates TI2, TI3, and TI4, respectively.
  • the packet group is generated for each clock, and the packet generation unit 270 refers to the template buffer 280 to generate one packet for each clock.
  • the packet generation unit 270 sequentially updates the next template number in the template buffer 280 every time one packet is generated.
  • R templates TI1 to TI3 are registered as the first to third template information, respectively, and the next template number is 1, first, based on the R template TI1, one of the packets included in the packet group GP1-ii A packet is generated. The next template number is updated to 2. Next, one packet included in the packet group GP2-ii is generated based on the R template TI2, and the next template number is updated to 3. Next, one packet included in the packet group GP3-ii is generated based on the R template TI3, and the next template number is updated to 1 again.
  • a packet group can be evenly generated from all template information registered in the template buffer 280. Accordingly, packets having the same loop ID are generated as close as possible, and an increase in unprocessed packets can be suppressed.
  • the instruction to be executed first is the step instruction I7. Since they are identical except for the left and right information of the instruction I7, the same destination information is calculated. Therefore, the packets P14 and P10 are transmitted and acquired up to the same PE indicated by the calculated destination information.
  • the instruction decoder 250 leaves only the first data D7 (0) bundled in the data portion in the packet P10, and removes the step instruction I7 (stepR). Is generated and registered in the template buffer 280 via the packet generator 270.
  • the template packet TP5 is not a packet actually generated, but is a part of the S template, and is reflected in a packet group generated by the packet generation unit 270. Note that the data type of the template packet TP5 returns from “packing type” to “integer type”.
  • template information TI5 is template information registered in accordance with step command I7, and includes template packet TP5.
  • the template information TI5 is an S template registered according to the step instruction I7, the RS flag is “S”.
  • the total number of S templates TI5 generated and the loop ID pitch store data D1 (1024) and data D2 (1) included in the data portion of the packet P14, respectively.
  • the second data D8 (1) included in the data portion of the packet P10 is stored in the step pitch.
  • the packet GP5-0 generated first is the same as the template packet TP5, and the loop ID pitch of the S template TI5 is “1”, so the loop IDs of the packets GP5-0 to GP5-1023 Are increasing one by one.
  • the step pitch of the S template TI5 is “1”
  • the integer data of the packets GP5-0 to GP5-1023 sequentially increase by 1 from the initial value “0” indicated by the data D7. Therefore, each data of the packet group GP5-ii corresponds to the loop variable ii.
  • the duplicate instruction I8 is executed in the ALU 260 of the PE, and as a result, a new packet P17 excluding the duplicate instruction I8 (dupL) is generated in the packet P15. Further, a new packet P18 is generated by duplicating the data portion of the packet P15 and adding the instruction type data D6 of the packet P16 as an instruction to the processing instruction portion of the packet.
  • the packets P17 to P21 shown in FIG. 20 correspond to the processing in the for loop for an arbitrary loop variable ii in the source program.
  • the addition instruction I9 adds the data (dp) of the packet P19 and the data (ii) of the packet P17 and outputs data dp + ii
  • the addition instruction I10 receives the data (sp) of the packet P20 and the packet P18.
  • Data (ii) is added to output data sp + ii.
  • the read command I11 reads data * (sp + ii) from the storage device 6.
  • the division instruction I12 divides the data * (sp + ii) by the data (2) of the packet P21 and outputs data * (sp + ii) / 2.
  • the write instruction I5 writes the data * (sp + ii) / 2 to the data * (dp + ii) in the storage device 6.
  • the data processing apparatus executes the added loop-related instruction to expand the loop processing in each PE and generate a packet group corresponding to the number of loop repetitions. This is very different from the first data processing apparatus.
  • the 5 ⁇ 1024 packets generated by the expansion of loop processing are assigned the same partition for each set of 5 packets having the same loop ID, and are included in each set.
  • Instructions I9 to I13 are executed while 5 packets move within this partition. That is, after the loop processing is expanded, the movement of the packet is restricted within the 4 ⁇ 4 section for each loop ID. Therefore, the data processing apparatus according to the present embodiment has 64 (8 rows and 8 columns) PEs, four times as many as 16 (4 rows and 4 columns) PEs in the data processing device of Patent Document 1. However, the average moving distance of each packet does not increase, and the overhead associated with the movement of the packet between PEs does not increase.
  • each partition (PE contained in) can be used effectively, and the use efficiency of PE is also improved.
  • the allocated partition is different depending on not only the loop ID but also the general-purpose ID. Therefore, for example, by setting different general-purpose IDs in the MCE, it is possible to assign different sections to a packet that does not include a loop related instruction in the processing instruction part.
  • FIG. 21 shows a “packet sequence after decompression” generated by decompressing loop processing with MCE in the data processing apparatus of Patent Document 1.
  • the “packet sequence after expansion” is composed of 5 ⁇ 1024 packets having the same identification information for every 5 packets. Therefore, 1024 sets of the set of 5 packets shown in FIG. Similarly, a partition can be assigned according to the pseudo random number Rid.
  • the same pseudo-random number Rid is generated from these packets, and the same partition is assigned. Therefore, a packet with low parallelism that is not subjected to loop processing is processed in one partition (use partition). Therefore, in other partitions (non-use partition), the activation rate a is 0 and power is consumed. No longer. Actually, the activation rate a is not completely zero because there is a gate that switches even in an unused partition due to packet transfer in the input / output unit 210 or the like. On the other hand, since a partition with high parallelism for performing loop processing is assigned a partition according to the loop ID, it is possible to operate all the partitions and perform loop processing in parallel at high speed.
  • the MCE 300 generates a packet to which extended identification information including identification information and a processing instruction is added for each data, and is arranged in a matrix of 8 rows and 8 columns.
  • PEs 100 to 163 are divided into four sections each including 16 PEs (4 rows and 4 columns), and each PE acquires only a packet whose destination information indicates the PE, and executes an instruction of the acquired packet. And calculating first destination information indicating one of the sections according to the identification information, and calculating second destination information indicating the position of the PE in the section according to the (masked) processing instruction.
  • a partition is assigned according to a pseudorandom number Rid (first destination information) generated from the identification information, and a pseudorandom number Rcm (second) generated from a (masked) processing instruction is assigned.
  • Rid first destination information
  • Rcm second
  • the packet distribution is made closer to a uniform distribution while reducing the overhead associated with movement of the packet between PEs, and each partition (PE included in each partition) Can be used effectively, and the use efficiency of PE can be improved.
  • each PE generates a packet by executing an instruction of the acquired packet
  • each packet generator 270 independently generates a packet group based on the template information registered in the template buffer 280. Since loop processing can be developed in PE, bottlenecks in loop processing can be eliminated and loop processing can be performed in parallel at high speed. In particular, in a Doll-type loop process in which the number of loop repetitions is determined and parallel processing can be performed without synchronization, it is possible to improve the processing capacity commensurate with the increase in the number of PEs.
  • Each packet included in the generated packet group is assigned one of four sections according to the loop ID included in the identification information, and movement is limited to the section of 4 rows and 4 columns. The overhead associated with the movement between the PEs can be reduced, the overall processing capacity can be improved, and the processing capacity can be improved to meet the increase in the number of PEs.
  • the loop ID of the template packet is changed by executing a repeat instruction, generating template information (R template) including a template packet and generation conditions for generating a packet group, and registering the template information in the template buffer 280. Packet group can be generated.
  • the number of packets indicated by the total generation number is obtained by sequentially increasing the loop ID of the template packet by the loop ID pitch.
  • a packet group consisting of can be generated.
  • the repeat instruction is handled as a substantially 16-bit instruction having a down counter.
  • the repeat instruction can be reused for the number of times of down count. Therefore, the number of instructions included in the packet can be reduced, and the number of packets can be reduced.
  • the instruction to be executed first is a repeat instruction
  • the first instruction information is calculated according to the identification information, and a processing instruction part including only a 16-bit repeat instruction including a down counter is included. That is, by calculating the second destination information in accordance with “integer data + repeat instruction (excluding left and right information)”, two packets in which a repeat instruction having the same count value of the down counter is executed first. It is possible to transmit up to the same PE.
  • S template template information
  • a packet group in which (integer type data) is changed can be generated.
  • the loop ID of the template packet is sequentially increased by the loop ID pitch, and the loop variable is changed from the initial value. It is possible to generate a packet group composed of the number of packets indicated by the total number of generations that are sequentially increased by the step pitch.
  • the MCE 300 can issue a packet including a loop-related command to each PE, thereby expanding the loop processing in each PE and eliminating the bottleneck caused by the processing capability of the MCE and the communication capability between the MCE and the PE. .
  • the MCE 300 of the data processing device 1 can construct an interpreter type or compiler type parallel computer system by sequentially generating packets or reading a packet sequence generated in advance.
  • each packet is responsive to a (masked) processing instruction within the section indicated by the first destination information calculated according to the identification information. Is obtained by the PE at the position indicated by the second destination information calculated in this way, and the instruction is executed. Further, when the repeat instruction is executed and the R template is registered, the loop ID of the template packet is sequentially increased by the loop ID pitch independently from the execution of the instruction, and from the number of packets indicated by the total number of generations. A packet group can be generated. Therefore, the bottleneck in the loop processing can be eliminated and the loop processing can be performed in parallel at high speed.
  • each packet included in the generated packet group is assigned a section according to the loop ID included in the identification information, overhead associated with movement of the packet between PEs is reduced, and overall processing capability is increased. It is possible to improve the processing capacity to meet the increase in the number of PEs.
  • the loop ID of the template packet is sequentially increased by the loop ID pitch independently of the execution of the instruction, and the loop variable is set to the initial value.
  • a packet group consisting of the number of packets indicated by the total number of generations that are sequentially increased from step to step can be generated.
  • the execution code PR2 can be used in a compiler type processing system.
  • the omitted identification information portion is added to the intermediate packet sequence.
  • it can be used in a compiler type processing system.
  • each MCE can read and use the execution code PR2.
  • each MCE reads the intermediate packet sequence and omits it. It can be used after adding the identification information part.
  • the data processing device 1 can configure a compiler type parallel computer system by reading the initial packet sequence or the intermediate packet sequence stored in the storage device 6.
  • the 64 PEs 100 to 163 that are arranged in a matrix of 8 rows and 8 columns and divided into four sections each including 16 (4 rows and 4 columns) PEs are respectively identified information.
  • First destination information indicating one of the partitions is calculated in accordance with the first mask
  • second destination information indicating the position of the PE in the partition is calculated in response to the (masked) processing instruction.
  • a masked bit string of extended identification information (hereinafter, referred to as a principle use bit string) is used.
  • the masked extended identification information is obtained by removing only the left and right information of the instruction to be executed first from the entire extended identification information.
  • the instruction to be executed first is a 16-bit repeat instruction
  • only the 16-bit repeat instruction (except for left and right information) to be executed first is a processing instruction part.
  • Destination information and hash values are calculated and packets are compared using a bit string of extended identification information (hereinafter referred to as an exception use bit string).
  • an exception use bit string is not limited to this.
  • the destination information may be calculated based on this.
  • the use efficiency of the hash table and the retrieval efficiency of the stored packet are more dependent on the hash function used for the calculation than the bit string used for the calculation. Therefore, similar to the calculation of the destination information in the destination information calculation unit 211, based on at least a part of the bit string so that the same hash value is calculated from the packet having the same principle use bit string and the exception use bit string. What is necessary is just to calculate destination information.
  • the comparison / selection unit 230 needs to use the above-described principle use bit string and exception use bit string for packet comparison.
  • the destination information calculation unit 211 generates a pseudo random number Rid from the identification information part and generates a pseudo random number Rcm from the processing instruction part in the above principle use bit string and exception use bit string. It is not limited to.
  • the pseudo random number Rid is used as first destination information indicating any section obtained by dividing the entire PE 100 to 163.
  • the first destination information needs to be calculated based on a part (first part) including at least a part of the identification information in the principle use bit string and the exception use bit string. For example, if only the bit string of the loop ID in the identification information is used for the calculation of the first destination information, the same section is assigned to the packet with the same loop ID, and the movement of those packets is restricted within the assigned section. can do. Alternatively, only the necessary number of bits (for example, lower 2 bits) may be extracted from the loop ID and used as the pseudo random number Rid.
  • the pseudorandom number Rcm is used as second destination information indicating the position of the PE in the section assigned according to the first destination information. Then, the second destination information needs to be calculated based on a part (second part) including at least a part other than the first part in the principle use bit string and the exception use bit string. For example, a pseudo random number may be generated from the above principle use bit string or the entire exception use bit string and used as the second destination information.
  • the identification information portion includes a general-purpose ID and a loop ID, but is not limited to this.
  • the general-purpose ID merely indicates the MCE that generated the packet
  • the general-purpose ID cannot be used for calculation of destination information and hash value or packet comparison as a part of the above-mentioned principle use bit string or exception use bit string. It is necessary to include it in the additional information part other than those shown in FIG.
  • Data processing device 6 Storage device 7
  • Input device 8 Output device 9 Bus 100 to 163 PE (Processing element) 210 Input / Output Unit 211 Destination Information Calculation Unit 214a to 214d Output Port 215a to 215d Input Port 230 Comparison / Selection Unit 231 Hash Value Calculation Unit 240 Buffer Memory 250 Instruction Decoder 260 ALU (Arithmetic Logic Operation Unit) 270 packet generator 280 template buffer 300 MCE (memory control element) 400 cache memory 500 communication path (transmission path)

Abstract

 本発明は、パケットのPE間の移動に伴うオーバーヘッドを小さくし、全体としての処理能力を向上させることを目的とし、行列状に配置された複数の処理部は、拡張識別情報に応じてパケットの宛先情報を算出する宛先情報算出部と、パケットのうち、宛先情報が当該処理部を示すパケットのみを取得し、宛先情報が当該処理部を示さないパケットを、宛先情報が示す処理部に近づく方向に隣接する処理部に転送する入出力部と、入出力部によって取得されたパケットの処理命令を実行する演算部と、をそれぞれ有し、宛先情報算出部は、拡張識別情報のうち、少なくとも識別情報の一部を含む第1の部分のビット列に基づいて、複数の処理部全体を分割した何れかの区画を示す第1の宛先情報を算出するとともに、少なくとも第1の部分以外の部分を含む第2の部分のビット列に基づいて、第1の宛先情報が示す区画内の処理部の位置を示す第2の宛先情報を算出する。

Description

データ処理装置、データ処理システム、データ構造、記録媒体、記憶装置およびデータ処理方法
 本発明は、データ処理装置、データ処理システム、データ構造、記録媒体、記憶装置、およびデータ処理方法に関する。
 コンピュータアーキテクチャとして、記憶装置(メモリ)から命令を順次読み出して(fetch)、解読し(decode)、実行する(execute)、ノイマン型アーキテクチャが一般に知られている。当該ノイマン型アーキテクチャは、命令の実行順序を予め定め、オペランド(演算対象のデータ)をその都度集めながら処理を行う、命令中心の処理体系となっている。
 また、ノイマン型コンピュータにおいて、複数の命令を並列処理するCPU(Central Processing Unit:中央処理装置)アーキテクチャとして、スーパースカラ・プロセッサが知られている。当該スーパースカラ・プロセッサは、オペランドの到着順に、実行ノードに対して命令を発行し(issue)、実行する、アウト・オブ・オーダ処理が可能となっている。しかしながら、スーパースカラ・プロセッサにおいては、スケジューラがデータ依存性を検査しながら実行結果を正しい順序に並べ替えるため、同時に実行可能な命令数の増加は、スケジューラの複雑化を招くこととなる。
 本出願人は、このようなノイマン型コンピュータの問題を解決するため、新しいデータ駆動型アーキテクチャに基づく並列コンピュータ(以下、新データ駆動型コンピュータと称する)を提案している(特許文献1および特許文献2を参照)。当該新データ駆動型コンピュータは、オペランドとなるデータとオペレータ(演算子)となる命令とが一体となったパケットを処理対象としており、各パケットに含まれる命令は、そのパケットのビット列自体によって決定される宛先のPE(Processor/Processing Element:処理要素/処理素子)で実行される。したがって、複数の命令を含むパケットは、現在のPEで1つの命令が実行されると、実行後のビット列によって決定される次のPE(現在のPEを含む)に移動し、順次PE間を移動しながら命令が実行される。
 このようにして、新データ駆動型コンピュータでは、処理対象のパケットをそのビット列自体に基づいて動的に配置し、汎用性と高速性との両立を図っている。
特開2011-138479号公報 国際公開第2011/068018号
 特許文献1の新データ駆動型コンピュータ(データ処理装置)では、タイルプロセッサと同様に、PEを行列状に配置し、隣接するPE間のみを互いに接続することによって、配線遅延の問題を回避していた。しかしながら、このような行列状の配置および接続では、パケットが常に最短の経路を移動する場合であっても、全体のPE数が増加するほど、各パケットの平均移動距離(経由する平均PE数)が増加することとなる。したがって、各パケットにとっては、処理時間全体に占める移動時間の割合が増加し、各PEにとっては、取得して処理するパケットに対して隣接するPEに転送するパケットの割合が増加し、オーバーヘッドが大きくなってしまう。そのため、PE数を増加させても、それに見合う装置全体の処理能力の向上を図ることができない。
 また、特許文献1では、各PEが入出力ポートごとに複数のチャネルを備える構成も提案されており、上記のオーバーヘッドは、このように各PEが備える入出力チャネル数を増加させることによって、小さくすることができる。しかしながら、この方法では、装置全体に占める各PEの入出力部やPE間の通信路の回路規模(ゲート数)が大きくなり、装置に実装可能なPE数が制限されることとなる。そのため、PE数を増加させて処理能力の向上を図る目的には適さない。
 前述した課題を解決する主たる本発明は、行列状に配置され、データごとに、当該データを識別する識別情報および当該データに対する1つ以上の処理命令を示す命令情報を含む拡張識別情報が付加されたパケットを処理する複数の処理部を備え、前記複数の処理部は、前記拡張識別情報に応じて前記パケットの宛先情報を算出する宛先情報算出部と、前記パケットのうち、前記宛先情報が当該処理部を示すパケットのみを取得し、前記宛先情報が当該処理部を示さないパケットを、前記宛先情報が示す処理部に近づく方向に隣接する処理部に転送する入出力部と、前記入出力部によって取得された前記パケットの前記処理命令を実行する演算部と、をそれぞれ有し、前記宛先情報算出部は、前記拡張識別情報のうち、少なくとも前記識別情報の一部を含む第1の部分のビット列に基づいて、前記複数の処理部全体を分割した複数の処理部群の何れかを示す第1の宛先情報を算出するとともに、前記拡張識別情報のうち、少なくとも前記第1の部分以外の部分を含む第2の部分のビット列に基づいて、前記複数の処理部群のうち前記第1の宛先情報が示す処理部群に含まれる何れかの処理部を示す第2の宛先情報を算出することを特徴とするデータ処理装置である。
 本発明の他の特徴については、添付図面及び本明細書の記載により明らかとなる。
<関連出願の相互参照>
 この出願は、2012年3月23日に出願された日本特許出願第2012-67854号に基づく優先権を主張し、その内容を本願に援用する。
 本発明によれば、新データ駆動型コンピュータにおいて、パケットのPE間の移動に伴うオーバーヘッドを小さくし、全体としての処理能力を向上させることができる。
本発明の一実施形態におけるPE(処理要素)の構成を示すブロック図である。 データ処理装置を備えたデータ処理システム全体の構成の概略を示すブロック図である。 本発明の一実施形態におけるデータ処理装置の構成を示すブロック図である。 ソースプログラムとデータ処理装置で処理されるプログラム(実行コード)との関係の一例を示す図である。 データ処理装置で用いられる命令セットの一例を示す図である。 MCE(メモリ制御要素)によって生成されるデータフロー図の一例を示す図である。 MCE(メモリ制御要素)によって生成される初期パケット列の一例を示す図である。 ソースプログラムとデータ処理装置で処理されるプログラム(実行コード)との関係の他の例を示す図である。 本発明の一実施形態における宛先情報の算出方法を説明する図である。 宛先情報と各PE(処理要素)との対応関係を示す図である。 バッファメモリに実装されるハッシュテーブルの一例を示す図である。 パック(梱包)命令の実行によるデータ処理装置の動作を説明する図である。 リピート(繰り返し)命令の実行によるデータ処理装置の動作を説明する図である。 リピート(繰り返し)命令の実行によるデータ処理装置の他の動作を説明する図である。 テンプレートバッファに登録されるテンプレート情報の一例を示す図である。 リピート(繰り返し)命令に従って登録されたテンプレート情報に基づいて生成されるパケット群の一例を示す図である。 ステップ(段階)命令の実行によるデータ処理装置の動作を説明する図である。 ステップ(段階)命令に従って登録されたテンプレート情報に基づいて生成されるパケット群の一例を示す図である。 デュプリケート(複製)命令の実行によるデータ処理装置の動作を説明する図である。 図7に示した初期パケット列から、ループ関連命令の実行によって生成されるパケット群を示す図である。 特許文献1のデータ処理装置において、MCE(メモリ制御要素)によって生成される展開後のパケット列の一例を示す図である。
 本明細書および添付図面の記載により、少なくとも以下の事項が明らかとなる。
===データ処理システム全体の構成の概略===
 以下、図2を参照して、データ処理装置を備えたデータ処理システム全体の構成の概略について説明する。
 図2に示されているデータ処理システムは、データ処理装置1を備えた並列コンピュータシステムであり、データ処理装置1以外に、記憶装置6、入力装置7、出力装置8、およびバス9を含んで構成されている。また、データ処理装置1、記憶装置6、入力装置7、および出力装置8は、バス9を介して互いに接続されている。なお、データ処理装置1の構成についての詳細な説明は後述する。
===データ処理システム全体の動作の概略===
 次に、データ処理システム全体の動作の概略について説明する。
 記憶装置6は、RAM(Random Access Memory)やROM(Read Only Memory)などで構成され、プログラム(実行コード)や当該プログラムの実行に用いられるデータなどを記憶している。また、データ処理装置1は、コンピュータシステムのCPUに相当し、記憶装置6に記憶されているプログラムを実行する。なお、データ処理装置1の動作についての詳細な説明は後述する。
 入力装置7は、キーボードやマウスなどで構成され、データやプログラム(ソースプログラムまたは実行コード)を含む情報を外部から当該データ処理システムに入力する。一方、出力装置8は、ディスプレイやプリンタなどで構成され、情報を文字や画像などとして外部に出力する。
 なお、上記データ処理装置1、記憶装置6、入力装置7、および出力装置8の分類は、固定的なものではない。例えば、ハードディスクドライブや光ディスクドライブなどの補助記憶装置は、記憶装置6として用いられるが、外部との間で情報を入出力する入力装置7および出力装置8に分類してもよい。
===データ処理装置の構成===
 以下、図3を参照して、本発明の一実施形態におけるデータ処理装置の構成について説明する。
 図3に示されているデータ処理装置1は、PE100ないし163、MCE(Memory Control/Controlling Element:メモリ制御要素/メモリ制御素子)300、キャッシュメモリ400、および通信路(伝送路)500を含んで構成されている。
 データ処理装置1は、処理部に相当するPEを複数備え、各PEが通信路500を介して互いに接続されている。本実施形態では、一例として、データ処理装置1は、8行8列の行列状に配置された64個のPE100ないし163を備えているものとする。また、PE100ないし163は、隣接するPE間のみが互いに接続されているものとする。なお、各PEの構成についての詳細な説明は後述する。
 ここで、PE100ないし163の座標(X,Y)を、図3に示すように、それぞれ(0,0)ないし(7,7)と表すこととすると、各PEに対して、X座標を上位3ビット、Y座標を下位3ビットとする識別番号を設定することができる。また、このように設定された識別番号は、図3に示されている各PEの3桁の符号の下2桁と一致している。例えば、座標(0,7)に位置するPE107の識別番号は、7(2進表記で000111)となり、座標(7,0)に位置するPE156の識別番号は、56(2進表記で111000)となる。
 データ処理装置1は、制御部に相当するMCEを少なくとも1つ備え、各MCEが通信路500を介してPE100ないし163の何れかと接続されている。本実施形態では、一例として、データ処理装置1は、1個のMCE300のみを備えているものとする。また、図3に示すように、MCE300は、隣接するPE100ないし107と接続されているものとする。
 キャッシュメモリ400は、MCE300と接続されている。また、キャッシュメモリ400は、前述したバス9を介して、データ処理装置1外の記憶装置6(不図示)と接続されている。
===データ処理装置の動作===
 次に、図4ないし図8を適宜参照して、本実施形態におけるデータ処理装置の動作について説明する。
 キャッシュメモリ400は、キャッシュを行いつつ、MCE300と記憶装置6との間の入出力を制御する。したがって、記憶装置6に記憶されているプログラムやデータなどは、キャッシュメモリ400を介してMCE300に読み込まれる。
 ここで、ソースプログラムとデータ処理装置1で処理されるプログラム(実行コード)との関係の一例を図4に示す。高級言語で記述されたソースプログラムPR0は、実行コードPR1に予めコンパイルされたうえで記憶装置6に記憶されており、MCE300には、実行コードPR1が読み込まれる。なお、図4においては、ソースプログラムPR0の一例として、C++言語で記述された、配列sp[1024]の各要素を2で除算した値を配列dp[1024]に格納する処理が示されている。また、実行コードPR1は、機械語プログラムではなく、機械語と略1対1に対応するアセンブリ言語で記述されたプログラムとしてもよい。
 MCE300は、読み込まれた実行コードPR1から、データフロー図に基づいて、後述する初期パケット列を生成する。なお、MCE300は、データフロー図自体を生成する必要はないが、本実施形態においては、説明の便宜上、まずデータフロー図を生成し、次にデータフロー図に基づいて初期パケット列を生成するものとする。
 ここで、データ処理装置1で用いられる命令セットの一例を図5に示す。図5において、各命令は、2入力・1出力命令、1入力・1出力命令、およびループ関連命令に大別されている。これらのうち、2入力・1出力命令は、入力された2つのデータをそれぞれ左側および右側オペランドとして2項演算を行う命令であり、1入力・1出力命令は、入力された1つのデータをオペランドとして単項演算を行う命令である。一方、ループ関連命令は、ループ処理を各PEにおいて展開するため、本実施形態のデータ処理装置に対して追加された命令である。
 また、図5に示すように、各命令に対して、オペレータ(演算子)に相当する記号と機械語における16進表記とが設定されており、これらはデータフロー図やパケット列についての説明で適宜用いられる。本実施形態では、各命令は、例えば8ビットの固定長となっている。
 まず、2入力・1出力命令について説明する。
 2つのデータ(AおよびB)の加算結果(A+B)を出力する加算命令に対しては、記号「+」と16進表記10Hとが設定されている。また、2つのデータ(AおよびB)の乗算結果(A×B)を出力する乗算命令に対しては、記号「×」と16進表記14Hとが設定されている。
 2つのデータ(LおよびR)の減算結果(L-R)を出力する減算命令の場合、減算は交換法則が成立しない非可換演算であるため、各データを左側または右側オペランドの何れとするかを示す左右情報(方向情報)を必要とする。そのため、減算命令に対する記号「-」には、さらに左右情報「L」または「R」が付加され、それぞれ16進表記12Hまたは13Hが設定されている。また、2つのデータ(LおよびR)の除算結果(L/R)を出力する除算命令に対しては、左右情報が付加された記号「/」(「/L」および「/R」)と、16進表記16Hおよび17Hとが設定されている。
 なお、左右情報「L」は、左側オペランドとなるデータを示し、左右情報「R」は、右側オペランドとなるデータを示している。また、当該命令セットにおいては、各命令のLSB(Least Significant Bit:最下位ビット)が左右情報専用に割り当てられている。したがって、以下の命令(ヌル文字を除く)においても、左右情報「L」を有する命令および左右情報を有しない命令のLSBは0、左右情報「R」を有する命令のLSBは1となっている。そのため、交換法則が成立する可換演算を行う加算命令や乗算命令などに対しても、容易に左右情報を付加することができる。
 左右情報が付加された記号「write」(「writeL」および「writeR」)と、16進表記18Hおよび19Hとが設定されている書き込み命令は、データ(L)が示す記憶装置6のアドレスに記憶されているデータ(*L)にデータ(R)を書き込む命令である。なお、「*」は間接参照演算子である。
 左右情報が付加された記号「Dap」(「DapL」および「DapR」)と、16進表記50Hおよび51Hとが設定されているデータ追加命令は、後述するパケット(L)のデータ部分にパケット(R)のデータ部分を追加する命令である。また、左右情報が付加された記号「Iap1」ないし「Iap4」(「Iap1L」ないし「Iap4L」、および「Iap1R」ないし「Iap4R」)と、16進表記60Hないし67Hとが設定されている命令追加命令は、いずれも、後述するパケット(L)の処理命令部分にパケット(R)のデータ部分を追加する命令である。
 次に、1入力・1出力命令について説明する。なお、1入力・1出力命令は、1つのデータのみをオペランドとするため、いずれも左右情報を有しない。
 記号「NOP」と16進表記00Hとが設定されているNOP命令は、何もしない命令である。また、記号「read」と16進表記02Hとが設定されている読み出し命令は、データ(A)が示す記憶装置6のアドレスに記憶されているデータ(*A)を読み出す命令である。なお、命令ではないが、パケットの終端を示すヌル文字として、例えば16進表記FFHが設定されている。
 次に、ループ関連命令について説明する。なお、ここでは概略についてのみ説明し、詳細については具体例を挙げて後述する。
 左右情報が付加された記号「pack」(「packL」および「packR」)と、16進表記70Hおよび71Hとが設定されているパック(梱包)命令は、パケット(L)のデータ部分とパケット(R)のデータ部分とを1つのパケットのデータ部分に同梱する命令である。したがって、パック命令は、2入力・1出力命令となる。
 左右情報が付加された記号「dup」(「dupL」および「dupR」)と、16進表記72Hおよび73Hとが設定されているデュプリケート(複製)命令は、パケット(L)のデータ部分を複製して、2つのパケットのデータ部分に分配する命令である。その際、複製および分配によって新たに生成されたパケットの処理命令部分には、パケット(R)のデータ部分が追加される。したがって、デュプリケート命令は、2入力・2出力命令となる。
 左右情報が付加された記号「step」(「stepL」および「stepR」)と、16進表記74Hおよび75Hとが設定されているステップ(段階)命令は、パケット(R)とパケット(L)のデータ部分とに応じたテンプレート情報(以下、Sテンプレートと称する)を生成し、後述するテンプレートバッファに登録する命令である。その際、パケット(R)およびパケット(L)自体は消滅する。したがって、ステップ命令は、2入力・0出力(ただし、Sテンプレートを生成)命令となる。
 左右情報が付加された記号「rep1」ないし「rep4」(「rep1L」ないし「rep4L」、および「rep1R」ないし「rep4R」)と、16進表記80Hないし87Hとが設定されているリピート(繰り返し)命令は、いずれも、パケット(R)とパケット(L)のデータ部分とに応じたテンプレート情報(以下、Rテンプレートと称する)を生成し、テンプレートバッファに登録する命令である。その際、パケット(R)自体は消滅する。したがって、リピート命令は、2入力・1出力(さらに、Rテンプレートを生成)命令となる。
 MCE300は、図5に示した命令セットを用いて、データフロー図を生成する。図6は、実行コードPR1から生成されたデータフロー図を示しており、図4に示したソースプログラムPR0に対応している。また、図6において、D1ないしD8はデータを示しており、I1ないしI13は命令を示している。なお、図6において、2重線は、複数のパケットからなるパケット群の生成、および生成されたパケット群に対する処理を表している。
 データD1は、ループの全繰り返し数を示し、ソースプログラムにおける「ii=0;ii<1024」から、1024となる。また、データD2は、後述するループIDピッチ(ループIDの増分)を示し、1重ループや最内ループの場合には、1となる。そして、データD1およびD2の組み合わせによって、ループIDが1ずつ増加する1024個のパケット群を生成すべきことが示されている。
 データD3およびD4は、それぞれ配列dp[1024]およびsp[1024]を示すポインタであり、データD5はループ内の除算における除数2を示している。また、データD6は、デュプリケート命令の実行によって新たに生成されるパケットの処理命令部分に追加される命令を示している。
 データD7は、ループ内で使用するループ変数(カウンタ変数)iiの初期値を示し、ソースプログラムにおける「ii=0」から、0となる。また、データD8は、後述するステップピッチ(ループ変数iiに相当するデータの増分)を示し、ソースプログラムにおける「ii++」から、1となる。そして、データD1およびD2の組み合わせとデータD7およびD8の組み合わせとによって、ループIDが1ずつ増加し、初期値0から1ずつ増加するループ変数iiをデータとする1024個のパケット群を生成すべきことが示されている。
 図6において、長破線より上側にある命令I1ないしI8は、いずれもループ関連命令であり、これらの命令が実行されることによって、ループ処理が展開され、ループ変数ii=0からii=1023までの繰り返し処理に相当するパケット群が生成される。なお、当該ループ処理の展開についての詳細な説明は、後述する各ループ関連命令についての具体的な説明において行うこととする。また、長破線より下側にある命令I9ないしI13は、ループ処理の展開によって生成されたパケット群に対する命令であるため、これらについての詳細な説明も後述する。
 図7は、図6に示したデータフロー図に基づいて生成される、各命令が実行される前の初期パケット列を示している。
 各パケットは、データ部分(data section)と拡張識別情報部分(extended identification information section)とからなる。また、拡張識別情報部分は、識別情報部分(identification information section)と処理命令(命令情報)部分(processing instructions section)とからなる。なお、各パケットは、暗号化や圧縮などの目的で適宜符号化されていてもよい。
 識別情報部分は、例えば汎用IDおよびループIDを含む。これらのうち、汎用IDは、例えば、当該パケットを生成したMCEを示す発行元情報などに用いられる。一方、ループIDは、ループ処理におけるループの繰り返しごとに設定される識別番号であり、例えば、ループ変数ii=0からii=1023までの繰り返し処理に対応して、0から1023まで設定される。
 本実施形態では、一例として、処理命令部分は、8個までの命令1ないし8のほか、命令数情報を含む。また、各命令は、実行順序とは逆順に配列されており、最初に実行されるべき命令が最後尾に配置され、以降はヌル文字となっている。さらに、命令数情報は、未処理の命令数を示すが、その都度計数するようにしてもよい。
 データ部分は、データ本体のほか、当該データのデータタイプ情報および延長フラグを含む。また、データタイプ情報は、例えば「整数型(integer)」、「浮動小数点型(floating)」、「ポインタ型(pointer)」などのデータタイプを示す。さらに、データタイプとして「命令型(command)」を備えており、当該命令型のデータは、命令追加命令やデュプリケート命令の実行によって、パケットの処理命令部分に命令として追加される。本実施形態では、データ本体を例えば64ビットの固定長とすることによって、命令型のデータとして、それぞれ8ビットの命令を8個まで格納することができる。なお、延長フラグは、命令追加命令とは異なる命令の追加機能(特許文献1における命令追加処理)に用いられる。
 図7から明らかなように、パケットP1ないしP8で構成される初期パケット列は、図6に示したデータフロー図を8個のデータD1ないしD8ごとに再構成したものであり、各パケットは、当該データに識別情報および処理命令を付加して生成され、MCE300から隣接するPE100ないし107の何れかに発行される。
 MCE300から発行されたパケットは、PE100ないし163のうち、後述する宛先情報が示すPEまで、通信路500を介して伝達される。また、各PEは、パケットに含まれる処理命令を実行する実行ノードに相当する。なお、各PEの動作についての詳細な説明は後述する。
 なお、本発明のデータ処理装置は、本実施形態に示したように、機械語やアセンブリ言語で記述された実行コードPR1からパケット列を生成するMCEを備える構成に限定されるものではない。
 例えば、記憶装置6には、ソースプログラムPR0から実行コードPR1にコンパイルする際の中間の段階で生成される中間コードとして、構文木(syntax tree)で表現されたプログラムが記憶されていてもよい。構文木では、オペランドが葉ノード(leaf node)に配置され、オペレータが内部ノード(internal node)に配置された木構造となっているため、機械語やアセンブリ言語の場合に比べて、データフロー図の生成が容易となる。
 また、例えば、記憶装置6には、コンパイラを備える外部装置によって予め生成された初期パケット列(initial packet sequences)が記憶されていてもよい。この場合には、MCE300は、各パケットをそのまま隣接するPEに発行することができる。
 また、例えば、記憶装置6には、初期パケット列のうち、識別情報部分の一部または全部を省略した、またはヌル文字とした中間パケット列(interim packet sequences)が記憶されていてもよい。この場合には、MCE300は、省略された識別情報部分を付加したうえで、各パケットを隣接するPEに発行する。
 さらに、例えば、ループ処理の展開によって生成されたパケット群が外部装置からデータ処理装置に直接入力されてもよい。この場合の外部装置には、並列に動作している他のデータ処理装置も含まれ得る。
 ここで、ソースプログラムとデータ処理装置1で処理されるプログラム(実行コード)との関係の他の例を図8に示す。この場合、コンパイラは、高級言語で記述されたソースプログラムPR0から、データフロー図に基づいて初期パケット列または中間パケット列を生成する。また、記憶装置6には、これらのパケット列が適宜符号化されたうえで、実行コードPR2として記憶される。そして、MCE300には、実行コードPR2が読み込まれる。
===PE(処理要素)の構成===
 以下、図1を参照して、本実施形態におけるPEの構成について説明する。
 図1に示されているPE100ないし163は、入出力部210、比較・選択部230、バッファメモリ240、命令デコーダ250、ALU(Arithmetic Logic Unit:算術論理演算部)260、パケット生成部270、およびテンプレートバッファ280をそれぞれ含んで構成されている。なお、本実施形態では、命令デコーダ250およびALU260が演算部に相当する。
 入出力部210は、宛先情報算出部211、出力ポート214aないし214d、および入力ポート215aないし215dを含む。また、入出力部210には、各入力ポートを介して、パケットや、記憶装置6から読み出されたデータなどが入力されている。さらに、入出力部210からは、各出力ポートを介して、パケットや、記憶装置6に書き込まれるデータなどが出力されている。そして、各入出力ポート(入力ポートおよび出力ポート)は、前述した通信路500(不図示)を介して、隣接するPEやMCEと接続されている。
 例えば、図3のPE110の場合、4組の入出力ポートは、それぞれPE109、102、111、および118と接続されている。また、例えばPE100の場合、2組の入出力ポートは、それぞれPE101および108と接続され、1組の入出力ポートは、MCE300と接続され、そして、1組の入出力ポートは、使用されない。また、各入出力ポートが複数のチャネルを備え、当該複数のチャネルを使用して、隣接するPE間やPEおよびMCE間でパケットやデータなどを入出力する構成としてもよい。
 比較・選択部230には、入出力部210からパケットが入力されている。また、比較・選択部230は、ハッシュ値算出部231を含み、パケット記憶部に相当するバッファメモリ240との間でパケットを入出力している。さらに、比較・選択部230からは、命令デコーダ250を介して、それぞれ左側および右側オペランドとなるデータを有するパケットがALU260に入力されている。そして、ALU260によって新たに生成されたパケットは、再び入出力部210に入力されている。なお、新たに生成されたパケットの宛先情報が当該PEを示している場合には、当該パケットは、入出力部210から再び比較・選択部230に入力されることとなる。
 本実施形態では、命令デコーダ250からは、さらにテンプレート情報がパケット生成部270に入力されている。また、パケット生成部270は、テンプレート記憶部に相当するテンプレートバッファ280との間でテンプレート情報を入出力している。そして、パケット生成部270によって新たに生成されたパケットは、再び入出力部210に入力されている。
===PE(処理要素)の動作===
 次に、図9ないし図11を適宜参照して、本実施形態におけるPEの動作について説明する。
 入出力部210は、まず、宛先情報算出部211が入力されたパケットの宛先情報を算出する。宛先情報は、パケットを処理すべきPEを示す情報であり、当該パケットの拡張識別情報部分から求めることができる。ここで、図9および図10を参照して、本実施形態における宛先情報の算出方法について説明する。
 宛先情報算出部211は、まず、各パケットから拡張識別情報部分のみを抽出し、各拡張識別情報のうち、最初に実行されるべき命令の左右情報をマスクする。前述したように、本実施形態では、最初に実行されるべき命令がパケットの最後尾(ヌル文字の直前)に配置され、各命令のLSBが左右情報専用に割り当てられている。したがって、拡張識別情報の最後(ヌル文字の直前)の1ビットを0または1でマスクすればよい。
 宛先情報算出部211は、次に、上記のマスクされた拡張識別情報を識別情報部分と処理命令部分とに分割し、それぞれの部分に基づいて擬似(疑似)乱数を生成し、当該擬似乱数に応じて、宛先情報を算出する。本実施形態では、図9に示すように、識別情報部分から0ないし3(2進表記で00ないし11)の2ビットの擬似乱数Ridを生成し、処理命令部分から0ないし15(2進表記で0000ないし1111)の4ビットの擬似乱数Rcmを生成する。そして、擬似乱数Ridの上位1ビットXiと擬似乱数Rcmの上位2ビットXcとからなる3ビットの値をX座標(X=4Xi+Xc)とし、擬似乱数Ridの下位1ビットYiと擬似乱数Rcmの下位2ビットYcとからなる3ビットの値をY座標(Y=4Yi+Yc)として算出する。
 このようにして、識別情報および(マスクされた)処理命令からそれぞれ擬似乱数RidおよびRcmを生成し、これらの擬似乱数に応じて、図3に示した各PEの座標と同じ形式の座標(X,Y)を宛先情報として算出することができる。また、前述したように、X座標を上位3ビット、Y座標を下位3ビットとする各PEの識別番号を宛先情報としてもよい。ここで、擬似乱数は、物理乱数と異なり、再現性があるため、マスクされた拡張識別情報が同一のパケットからは同一の擬似乱数RidおよびRcmが生成され、同一の宛先情報が算出される。
 図10は、このように算出された宛先情報と各PEとの対応関係を示している。ここで、擬似乱数Ridの2ビットXiおよびYiは、それぞれX座標およびY座標の上位1ビット(最上位ビット)となっている。そのため、宛先情報(X,Y)が示すPE(宛先のPE)は、当該XiおよびYiに応じて、図10において長破線で囲まれた4つの区画(block)の何れかに含まれることとなる。
 このことは、64個(8行8列)のPE100ないし163全体を擬似乱数Ridの2ビットの値に対応する4つの区画に分割したことに相当する。そして、算出された宛先情報は、識別情報から生成される擬似乱数Rid(第1の宛先情報)に応じて何れかの区画を示し、処理命令から生成される擬似乱数Rcm(第2の宛先情報)に応じて区画内のPEの位置を示すこととなる。
 図10に示されているように、各区画は16個(4行4列)のPEを含むPE群(処理部群)であり、Rid=0(Xi=Yi=0)に対応する区画には、0≦X≦3かつ0≦Y≦3の範囲のPEが含まれている。また、Rid=1(Xi=0、Yi=1)に対応する区画には、0≦X≦3かつ4≦Y≦7の範囲のPEが含まれている。また、Rid=2(Xi=1、Yi=0)に対応する区画には、4≦X≦7かつ0≦Y≦3の範囲のPEが含まれている。また、Rid=3(Xi=Yi=1)に対応する区画には、4≦X≦7かつ4≦Y≦7の範囲のPEが含まれている。そして、識別情報が同一のパケットからは同一の擬似乱数Ridが生成されるため、それらのパケットの宛先のPEは、同一の区画に含まれることとなる。
 なお、擬似乱数の生成には、公知の方法を用いることができる。宛先情報の算出時間の観点からは、LCG(Linear Congruential Generator:線形合同法)やLFSR(Linear Feedback Shift Register:線形帰還シフトレジスタ)など、高速な生成方法を用いることが望ましい。また、宛先情報算出部211は、予め生成された擬似乱数テーブルを参照して宛先情報を算出する構成としてもよい。この場合、宛先情報算出部211は、パケットごとに擬似乱数を生成する必要がないため、宛先情報の算出時間を短縮することができる。
 一方、PEの使用効率の観点からは、パケット分布が一様となるよう、擬似乱数が一様分布に近いほど望ましい。また、確率変数族が予測不可能であることは、一様分布であることと等価であるので、CSPRNG(Cryptographically Secure Pseudo-Random Number Generator:暗号論的擬似乱数生成器)を用いることによって、PEの使用効率の向上を図ることができる。しかしながら、命令によっても各パケットの処理時間は異なるため、実際には、擬似乱数が一様分布であっても、パケット分布が一様とはならないこともある。そのため、宛先情報の算出時間が長くなり過ぎない程度で、一様分布に近い擬似乱数を用いることが望ましい。
 さらに、パケットが入力される度に各PEが宛先情報を算出する代わりに、算出した宛先情報をパケットに付加し、当該宛先情報を再利用してもよい。例えば、MCEがパケットをPEに発行する場合、およびPEが新たなパケットを生成する場合に宛先情報を付加することによって、それ以外の場合には付加されている宛先情報をそのまま利用することができる。この場合、宛先情報が付加されているパケットに対して宛先情報を算出する必要はない。
 入出力部210は、次に、パケットの宛先情報が当該PEを示しているか否かを判定し、当該PEを示している場合には、当該パケットを取得して比較・選択部230に入力する。一方、パケットの宛先情報が当該PEを示していない場合には、宛先情報が示すPEに近づく方向に隣接するPEに当該パケットを転送する。そして、当該動作を各PEの入出力部が行うことによって、各パケットは宛先情報が示すPEまで伝達され、取得される。
 例えば、各パケットは、まず、宛先情報が示すPEとY座標が一致するまで、図10のy軸方向に移動し、次に、X座標が一致するまで、図10のx軸方向に移動する。このような移動規則を採用することによって、パケットの移動経路は常に最短となる。また、移動中の方向転換は1回または0回となり、各PE間における通信路500の使用頻度を平均化することができる。
 一例として、図3において、MCE300からPE103に発行されたパケットの宛先情報がPE127を示す場合には、当該パケットは、PE111およびPE119を経由して、PE127まで伝達される。また、一例として、PE127によって処理され、新たに生成されたパケットの宛先情報がPE108を示す場合には、当該パケットは、PE126、PE125、PE124、およびPE116を経由して、PE108まで伝達される。
 比較・選択部230は、入出力部210によって取得されたパケット(以下、取得パケットと称する)のうち、命令の実行が可能なものを処理対象(命令の実行対象)として選択して、命令デコーダ250に入力する。また、比較・選択部230は、命令の実行が可能でないパケットをバッファメモリ240に記憶させるとともに、バッファメモリ240に記憶されているパケット(以下、記憶パケットと称する)の読み出しを行う。
 より具体的には、取得パケットの最初に実行されるべき(最後尾の)命令が1入力・1出力命令である場合、比較・選択部230は、取得パケットのみを命令デコーダ250に入力する。一方、取得パケットの最初に実行されるべき(最後尾の)命令がループ関連命令または2入力・1出力命令である場合、比較・選択部230は、上記のマスクされた拡張識別情報が取得パケットと一致するパケットを、記憶パケットから検索する。そして、一致する記憶パケットが存在するときには、比較・選択部230は、当該一致する2つのパケットを処理対象として選択して、命令デコーダ250に入力する。また、一致する記憶パケットが存在しないときには、比較・選択部230は、取得パケットをバッファメモリ240に記憶させる。
 なお、マスクされた拡張識別情報が取得パケットと一致する記憶パケットの検索を効率よく行うため、本実施形態では、バッファメモリ240は、ハッシュテーブルを含む。また、比較・選択部230は、まず、ハッシュ値算出部231が、取得パケットからハッシュ値を算出する。当該ハッシュ値は、宛先情報の場合と同様に、取得パケットのマスクされた拡張識別情報に基づいて算出される。そして、比較・選択部230は、取得パケットをバッファメモリ240に記憶させる場合には、取得パケットをそのハッシュ値と対応付けてハッシュテーブルに格納する。
 なお、ハッシュテーブルには、公知の実装方法を用いることができる。図11は、バッファメモリ240に実装されるハッシュテーブルの一例を示している。当該ハッシュテーブルでは、ハッシュ衝突の解決方法として、オープンアドレス法(open addressing)を用い、再ハッシュ手順として、線形探索法(linear probing)を用いている。
 図11においては、一例として、ハッシュ値がn+3となるパケット1が格納された後に、ハッシュ値がnとなるパケット2ないし5が格納された場合を示している。パケット1は、ルート配列[256]の要素n+3の位置に格納され、フラグ「1」およびカウント値「1」が設定されている。また、パケット2ないし5は、それぞれ要素n、n+1、n+2、n+4の位置に格納され、要素nの位置にフラグ「1」およびカウント値「4」が設定されている。
 命令デコーダ250は、比較・選択部230から入力される1つまたは2つのパケットの最初に実行されるべき命令を読解(解釈)したうえで、当該パケットをALU260に入力する。また、その際、最初に実行されるべき命令がリピート命令またはステップ命令である場合には、テンプレート情報(RテンプレートまたはSテンプレート)を生成し、パケット生成部270に入力する。
 ALU260は、命令デコーダ250から入力される1つまたは2つのパケットのデータ部分(オペランド)に対して、算術演算(整数演算および/または浮動小数点演算)や論理演算などを行い、演算結果を出力する。より具体的には、ALU260は、入力されたパケットのデータに対して、最初に実行されるべき命令を実行し、実行結果のデータに、実行された命令を除いた拡張識別情報を付加して新たなパケットを生成し、再び入出力部210に入力する。
 パケット生成部270は、まず、命令デコーダ250から入力されるテンプレート情報をテンプレートバッファ280に登録する。また、パケット生成部270は、テンプレートバッファ280に登録されているテンプレート情報に基づいて、テンプレート情報ごとにループ繰り返し数分のパケット群を生成し、入出力部210に入力する。なお、当該パケット群の生成は、パケット生成部270以外の各部の動作とは独立して、自動的に(クロックごとに)行われる。
 このようにして、各PEは、宛先情報が当該PEを示すパケットのみを取得し、宛先情報が当該PEを示さないパケットを他のPEに転送する。そして、取得パケットのデータに対して最初に実行されるべき命令を実行するとともに、実行結果のデータに実行された命令を除いた拡張識別情報を付加して新たなパケットを生成し、生成されたパケットをその宛先情報に応じて転送または取得する。
 なお、本実施形態では、最初に実行されるべき命令がリピート命令である場合には、宛先情報算出部211およびハッシュ値算出部231は、それぞれ、それ以外の場合とは異なる方法で宛先情報およびハッシュ値を算出する。すなわち、最初に実行されるべき命令がリピート命令である場合には、宛先情報およびハッシュ値の算出に用いられる拡張識別情報の部分が、上記のマスクされた拡張識別情報とは異なる。この場合における宛先情報およびハッシュ値の算出方法についての詳細な説明は、後述するリピート命令についての具体的な説明において行うこととする。
===データ処理装置の動作の具体例===
 ここで、図12ないし図20を適宜参照しつつ、図6に示したデータフロー図および図7に示した初期パケット列を用いて、データ処理装置1の動作の具体例について説明する。
 パケットP1およびP2は、最初に実行されるべき(最後尾の)命令がいずれもパック命令I1であり、これらの拡張識別情報は、パック命令I1の左右情報を除いて一致しているため、同一の宛先情報が算出される。したがって、パケットP1およびP2は、算出された宛先情報が示す同一のPEまで伝達され、取得される。そして、当該PEのALU260においてパック命令I1が実行され、その結果、図12に示すように、データD1(1024)とデータD2(1)とをデータ部分に同梱し、パック命令I1を除いた新たなパケットP9が生成される。同様に、パケットP7およびP8に対して、パック命令I2が実行され、その結果、データD7(0)とデータD8(1)とをデータ部分に同梱し、パック命令I2を除いた新たなパケットP10が生成される。
 なお、本実施形態では、パック命令は、整数型のデータに対して実行され、整数型のデータを例えば32ビットの固定長とすることによって、2つの整数型のデータを1つのパケットのデータ部分に同梱することができる。また、データ部分が2つの整数型のデータからなることを示すため、パック命令の実行によって生成されたパケットP9およびP10のデータタイプは、「梱包型(packed)」となっている。
 パケットP9およびP3は、最初に実行されるべき命令がいずれもリピート命令I3であり、次に実行されるべき命令が格納される処理命令部分(パケットP9の命令5およびパケットP3の命令3)には、命令ではなく同一の整数「4」が格納されている。当該整数は、リピート命令の実行の際にダウンカウンタとして用いられ、リピート命令は、ダウンカウンタを備えた実質的に16ビットの命令として取り扱われる。
 また、これらのパケットに対しては、図13に示すように、最初に実行される実質16ビットのリピート命令(I3+「4」)のみを処理命令部分に含む拡張識別情報P9’およびP3’を用いて、宛先情報およびハッシュ値の算出が行われる。拡張識別情報P9’およびP3’は、リピート命令I3の左右情報を除いて一致しているため、同一の宛先情報が算出される。したがって、パケットP9およびP3は、算出された宛先情報が示す同一のPEまで伝達され、取得される。そして、当該PEのALU260においてリピート命令I3(rep1)が実行され、その結果、パケットP9においてリピート命令I3(rep1L)のダウンカウンタが「3」にダウンカウントされた新たなパケットP11が生成される。
 一方、命令デコーダ250は、パケットP3においてリピート命令I3(rep1R)およびダウンカウンタを除いたテンプレートパケットTP1を含むテンプレート情報(Rテンプレート)を生成し、パケット生成部270を介してテンプレートバッファ280に登録する。ここで、テンプレートパケットTP1は、実際に生成されるパケットではなく、Rテンプレートの一部となり、パケット生成部270によって生成されるパケット群に反映される。
 ここで、テンプレートバッファ280の構成例を図15に示す。図15に示すように、テンプレートバッファ280は、複数のテンプレート情報を登録することができる。また、テンプレート数は、テンプレートバッファ280に登録されているテンプレート情報の数を示し、次テンプレート番号は、パケット生成部270が参照すべき(次に実行すべき)テンプレート情報を示す。
 図15において、テンプレート情報TI1は、リピート命令I3に従って登録されたテンプレート情報であり、テンプレートパケットTP1とともに、パケット生成部270がパケット群を生成する際の生成条件を含んでいる。ここで、RSフラグは、テンプレート情報がRテンプレートであるかSテンプレートであるかを示している。テンプレート情報TI1は、リピート命令I3に従って登録されたRテンプレートであるため、RSフラグは、「R」となっている。
 また、全生成数(ループの全繰り返し数に相当)は、当該テンプレート情報に基づいてパケット生成部270が生成すべき全パケット数(パケット群に含まれるパケットの個数)を示し、生成済数は、全生成数のうち、パケット生成部270によって既に生成されたパケット数を示している。さらに、ループIDピッチは、パケット生成部270がパケット群を生成する際のループIDの増分を示し、ステップピッチは、パケット生成部270がパケット群を生成する際のデータの増分(ループ変数iiの増分に相当)を示している。そして、図15に示すように、RテンプレートTI1の全生成数およびループIDピッチには、それぞれパケットP9のデータ部分に同梱されたデータD1(1024)およびデータD2(1)が格納され、ステップピッチは、「0」となる。
 同様に、図14に示すように、パケットP11およびP4に対して、リピート命令I4(rep1)が実行され、その結果、パケットP11においてリピート命令I4(rep1L)のダウンカウンタが「2」にダウンカウントされた新たなパケットP12が生成される。一方、パケットP4においてリピート命令I4(rep1R)およびダウンカウンタを除いたテンプレートパケットTP2を含むRテンプレートTI2がテンプレートバッファ280に登録される。
 また、同様に、パケットP12およびP5に対して、リピート命令I5(rep1)が実行され、その結果、パケットP12においてリピート命令I5(rep1L)のダウンカウンタが「1」にダウンカウントされた新たなパケットP13が生成される。一方、パケットP5においてリピート命令I5(rep1R)およびダウンカウンタを除いたテンプレートパケットTP3を含むRテンプレートTI3がテンプレートバッファ280に登録される。
 さらに、同様に、パケットP13およびP6に対して、リピート命令I6(rep1)が実行され、その結果、パケットP13において、リピート命令I6(rep1L)および「0」にダウンカウントされたダウンカウンタを除いた新たなパケットP14が生成される。一方、パケットP6においてリピート命令I6(rep1R)およびダウンカウンタを除いたテンプレートパケットTP4を含むRテンプレートTI4がテンプレートバッファ280に登録される。
 図16に示すように、パケット生成部270は、テンプレートバッファ280に登録されたRテンプレートTI1に基づいて、ループ変数ii=0からii=1023までの繰り返し処理に相当する1024個のパケット群GP1-iiを生成する。ここで、最初に生成されるパケットGP1-0は、テンプレートパケットTP1と同一であり、さらに、RテンプレートTI1のループIDピッチが「1」であるため、パケットGP1-0ないしGP1-1023のループIDは、順次1ずつ増加している。また、同様に、パケット生成部270は、RテンプレートTI2、TI3、およびTI4に基づいて、それぞれパケット群GP2-ii、GP3-ii、およびGP4-iiを生成する。
 なお、前述したように、パケット群の生成はクロックごとに行われ、パケット生成部270は、テンプレートバッファ280を参照して、クロックごとに1つずつパケットを生成する。また、1つのPEにおけるテンプレートバッファ280に複数のテンプレート情報が登録されている場合には、パケット生成部270は、パケットを1つ生成する度にテンプレートバッファ280の次テンプレート番号を順次更新する。
 例えば、RテンプレートTI1ないしTI3がそれぞれ1番目ないし3番目のテンプレート情報として登録され、次テンプレート番号が1の場合には、まず、RテンプレートTI1に基づいて、パケット群GP1-iiに含まれる1つのパケットが生成される。また、次テンプレート番号は、更新されて2となる。次に、RテンプレートTI2に基づいて、パケット群GP2-iiに含まれる1つのパケットが生成され、次テンプレート番号は、更新されて3となる。次に、RテンプレートTI3に基づいて、パケット群GP3-iiに含まれる1つのパケットが生成され、次テンプレート番号は、更新されて再び1となる。
 以上の動作を繰り返すことによって、テンプレートバッファ280に登録されているすべてのテンプレート情報から均等にパケット群を生成することができる。したがって、同一のループIDを有するパケットができるだけ近いタイミングで生成されることとなり、未処理のパケットが増大するのを抑制することができる。
 リピート命令I6の実行によって生成されたパケットP14、およびパック命令I2の実行によって生成されたパケットP10は、最初に実行されるべき命令がいずれもステップ命令I7であり、これらの拡張識別情報は、ステップ命令I7の左右情報を除いて一致しているため、同一の宛先情報が算出される。したがって、パケットP14およびP10は、算出された宛先情報が示す同一のPEまで伝達され、取得される。
 そして、命令デコーダ250は、図17に示すように、パケットP10において、データ部分に同梱されている1番目のデータD7(0)のみを残し、ステップ命令I7(stepR)を除いたテンプレートパケットTP5を含むテンプレート情報(Sテンプレート)を生成し、パケット生成部270を介してテンプレートバッファ280に登録する。ここで、テンプレートパケットTP5は、実際に生成されるパケットではなく、Sテンプレートの一部となり、パケット生成部270によって生成されるパケット群に反映される。なお、テンプレートパケットTP5のデータタイプは、「梱包型」から「整数型」に戻っている。
 図15において、テンプレート情報TI5は、ステップ命令I7に従って登録されたテンプレート情報であり、テンプレートパケットTP5を含んでいる。ここで、テンプレート情報TI5は、ステップ命令I7に従って登録されたSテンプレートであるため、RSフラグは、「S」となっている。また、図15に示すように、SテンプレートTI5の全生成数およびループIDピッチには、それぞれパケットP14のデータ部分に同梱されていたデータD1(1024)およびデータD2(1)が格納される。一方、ステップピッチには、パケットP10のデータ部分に同梱されていた2番目のデータD8(1)が格納される。
 図18に示すように、パケット生成部270は、テンプレートバッファ280に登録されたSテンプレートTI5に基づいて、ループ変数ii=0からii=1023までの繰り返し処理に相当する1024個のパケット群GP5-iiを生成する。ここで、最初に生成されるパケットGP5-0は、テンプレートパケットTP5と同一であり、さらに、SテンプレートTI5のループIDピッチが「1」であるため、パケットGP5-0ないしGP5-1023のループIDは、順次1ずつ増加している。また、SテンプレートTI5のステップピッチが「1」であるため、パケットGP5-0ないしGP5-1023の整数型のデータは、データD7が示す初期値「0」から順次1ずつ増加している。したがって、パケット群GP5-iiの各データは、ループ変数iiに相当する。
 図19に示すように、パケット群GP5-iiおよびGP4-iiに含まれるパケットのうち、それぞれ任意のループID=iiを有するパケットP15およびP16は、最初に実行されるべき命令がいずれもデュプリケート命令I8であり、これらの拡張識別情報は、デュプリケート命令I8の左右情報を除いて一致しているため、同一の宛先情報が算出される。したがって、パケットP15およびP16は、算出された宛先情報が示す同一のPEまで伝達され、取得される。
 そして、当該PEのALU260においてデュプリケート命令I8が実行され、その結果、パケットP15においてデュプリケート命令I8(dupL)を除いた新たなパケットP17が生成される。さらに、パケットP15のデータ部分を複製して、パケットP16の命令型のデータD6をパケットの処理命令部分に命令として追加した新たなパケットP18も生成される。
 このようにして、ループ関連命令I1ないしI8が実行されることによって、ループ処理が展開され、図20に示すように、ループ変数ii=0からii=1023までの繰り返し処理に相当するパケット群が生成される。図20において、パケットP19ないしP21は、それぞれパケット群GP1-iiないしGP3-iiに含まれるパケットのうち、任意のループID=iiを有するパケットである。そして、図20に示されているパケットP17ないしP21は、ソースプログラムにおける、任意のループ変数iiについてのforループ内の処理に対応している。
 図6において、加算命令I9は、パケットP19のデータ(dp)とパケットP17のデータ(ii)とを加算してデータdp+iiを出力し、加算命令I10は、パケットP20のデータ(sp)とパケットP18のデータ(ii)とを加算してデータsp+iiを出力する。また、読み出し命令I11は、記憶装置6からデータ*(sp+ii)を読み出す。さらに、除算命令I12は、データ*(sp+ii)をパケットP21のデータ(2)で除算してデータ*(sp+ii)/2を出力する。そして、書き込み命令I5は、記憶装置6のデータ*(dp+ii)にデータ*(sp+ii)/2を書き込む。
 以上のデータフローによって、配列sp[1024]の1つの要素を2で除算した値が配列dp[1024]に格納される。
 以上のように、本実施形態のデータ処理装置は、追加されたループ関連命令を実行することによって、各PEにおいてループ処理を展開し、ループ繰り返し数分のパケット群を生成する点で、特許文献1のデータ処理装置と大きく異なっている。
 ここで、図20に示した5個のパケットP17ないしP21を1セットとすると、当該5パケットのセットは、ループ変数ii=0からii=1023までの繰り返し処理に対応して1024セット生成されている。そして、各セットに含まれる5パケットは、ループID(=ii)が同一であるため、識別情報が同一となり、それらの宛先のPEは、いずれも同一の区画に含まれることとなる。さらに、命令I9ないしI12の実行によって生成されるパケットのループIDは変更されないため、当該5パケットから生成されるパケットの宛先のPEも、同一の区画に含まれることとなる。
 したがって、ループ処理の展開(ループ関連命令I1ないしI8の実行)によって生成された5×1024パケットには、ループIDが同一の5パケットのセットごとに同一の区画が割り当てられ、各セットに含まれる5パケットは、この区画内で移動しつつ、命令I9ないしI13が実行される。すなわち、ループ処理を展開した後には、パケットの移動がループIDごとに4行4列の区画内に制限される。そのため、本実施形態のデータ処理装置は、特許文献1のデータ処理装置において16個(4行4列)のPEを備えた場合に比べて、4倍の64個(8行8列)のPEを備えるものの、各パケットの平均移動距離は増加せず、パケットのPE間の移動に伴うオーバーヘッドが大きくならない。
 一方、各5パケットのセットは、互いにループIDが異なるため、それらに含まれるパケットには、ループIDごとに4つの区画の何れかが割り当てられることとなる。そのため、それぞれの区画(に含まれるPE)を有効に使用することができ、PEの使用効率の向上も図られている。
 なお、各パケットに対する区画の割り当ては、識別情報から生成される擬似乱数Ridに応じて行われるため、ループIDだけでなく汎用IDによっても割り当てられる区画が異なる。したがって、例えばMCEにおいて異なる汎用IDを設定することによって、処理命令部分にループ関連命令を含まないパケットに対しても、異なる区画の割り当てを行うことができる。
 また、このような区画の割り当ては、PEでループ処理を展開する場合だけでなく、MCEでループ処理を展開する場合であっても同様の効果を奏する。図21は、特許文献1のデータ処理装置において、MCEでループ処理を展開して生成された「展開後のパケット列」を示している。図21に示されているように、「展開後のパケット列」は、5パケットごとに識別情報が同一の5×1024パケットからなるため、図20に示した5パケットのセットの1024セット分と同様に、擬似乱数Ridに応じた区画の割り当てを行うことができる。
 さらに、このように区画の割り当てを行うことによって、省電力効果も得られる。論理回路の1つのゲートのスイッチングに伴う消費電力(動的消費電力)Pは、
P=a×(CVf/2)
と表される。ここで、aは活性化率、Cは負荷容量、Vは電源電圧、fは動作周波数である。
 例えば、ループ処理を行わないパケットの識別情報を固定した場合、それらのパケットからは同一の擬似乱数Ridが生成され、同一の区画が割り当てられることとなる。したがって、ループ処理を行わない並列性の低いパケットは、1つの区画(使用区画)内で処理されるため、それ以外の区画(不使用区画)では、活性化率aが0となり、電力を消費しなくなる。なお、実際には、入出力部210におけるパケットの転送などにより、不使用区画内であってもスイッチングするゲートがあるため、活性化率aが完全には0とならない。一方、ループ処理を行う並列性の高いパケットには、ループIDに応じて区画が割り当てられるため、すべての区画を動作させて、ループ処理を高速に並列処理することができる。
 前述したように、データ処理装置1において、MCE300は、データごとに、識別情報および処理命令を含む拡張識別情報が付加されたパケットを生成し、8行8列の行列状に配置された64個のPE100ないし163は、16個(4行4列)のPEをそれぞれ含む4つの区画に分割され、各PEは、宛先情報が当該PEを示すパケットのみを取得し、取得パケットの命令を実行するとともに、識別情報に応じて何れかの区画を示す第1の宛先情報を算出し、(マスクされた)処理命令に応じて区画内のPEの位置を示す第2の宛先情報を算出することによって、ループ処理の展開によって生成されたパケットの移動が4行4列の区画内に制限されるため、全体のPE数を増加させても各パケットの平均移動距離が増加せず、パケットのPE間の移動に伴うオーバーヘッドを小さくし、全体としての処理能力を向上させ、PE数の増加に見合う処理能力の向上を図ることができる。
 また、各パケットに対して、識別情報から生成される擬似乱数Rid(第1の宛先情報)に応じて区画の割り当てを行い、(マスクされた)処理命令から生成される擬似乱数Rcm(第2の宛先情報)に応じて区画内のPEの割り当てを行うことによって、パケットのPE間の移動に伴うオーバーヘッドを小さくしつつ、パケット分布を一様分布に近づけ、それぞれの区画(に含まれるPE)を有効に使用することができ、PEの使用効率の向上を図ることができる。
 また、各PEは、取得パケットの命令を実行してパケットを生成するとともに、テンプレートバッファ280に登録されたテンプレート情報に基づいて、パケット生成部270が独立してパケット群を生成することによって、各PEにおいてループ処理を展開することができるため、ループ処理におけるボトルネックを解消し、ループ処理を高速に並列処理することができる。特に、ループ繰り返し数が確定し、同期なしに並列処理を行うことができるDoall型ループ処理において、PE数の増加に見合う処理能力の向上を図ることができる。そして、生成されたパケット群に含まれる各パケットは、識別情報に含まれるループIDに応じて4つの区画の何れかが割り当てられ、移動が4行4列の区画内に制限されるため、パケットのPE間の移動に伴うオーバーヘッドを小さくして、全体としての処理能力を向上させ、PE数の増加に見合う処理能力の向上を図ることができる。
 また、リピート命令を実行し、テンプレートパケットとパケット群を生成する際の生成条件とを含むテンプレート情報(Rテンプレート)を生成してテンプレートバッファ280に登録することによって、テンプレートパケットのループIDを変化させたパケット群を生成することができる。
 また、パケット群の生成条件として、全生成数とループIDピッチとをテンプレートバッファ280に登録することによって、テンプレートパケットのループIDをループIDピッチずつ順次増加させた、全生成数が示す個数のパケットからなるパケット群を生成することができる。
 また、リピート命令の次に実行されるべき命令が格納される処理命令部分に、命令ではなく整数データを格納することによって、リピート命令を、ダウンカウンタを備えた実質的に16ビットの命令として取り扱うことができ、ダウンカウントの回数分リピート命令を再利用することができる。そのため、パケットに含まれる命令数を削減することができ、パケット数の削減も図ることができる。そして、最初に実行されるべき命令がリピート命令である場合には、識別情報に応じて第1の宛先情報を算出するとともに、ダウンカウンタを含めた実質16ビットのリピート命令のみを含む処理命令部分、すなわち、「整数データ+リピート命令(左右情報を除く)」に応じて第2の宛先情報を算出することによって、ダウンカウンタのカウント値が同一のリピート命令が最初に実行される2つのパケットを同一のPEまで伝達することができる。
 また、ステップ命令を実行し、テンプレートパケットとパケット群を生成する際の生成条件とを含むテンプレート情報(Sテンプレート)を生成してテンプレートバッファ280に登録することによって、テンプレートパケットのループIDおよびループ変数(整数型のデータ)を変化させたパケット群を生成することができる。
 また、パケット群の生成条件として、全生成数とループIDピッチとステップピッチとをテンプレートバッファ280に登録することによって、テンプレートパケットのループIDをループIDピッチずつ順次増加させ、ループ変数を初期値からステップピッチずつ順次増加させた、全生成数が示す個数のパケットからなるパケット群を生成することができる。
 また、MCE300は、ループ関連命令を含むパケットを各PEに発行することによって、各PEにおいてループ処理を展開し、MCEの処理能力やMCE・PE間の通信能力によるボトルネックを解消することができる。
 また、データ処理システムにおいて、データ処理装置1のMCE300が、パケットを逐次生成する、または予め生成されたパケット列を読み込むことによって、インタプリタ型またはコンパイラ型の並列コンピュータシステムを構成することができる。
 また、前述したように、図7に示したパケットのデータ構造において、各パケットは、識別情報に応じて算出される第1の宛先情報が示す区画内において、(マスクされた)処理命令に応じて算出される第2の宛先情報が示す位置のPEによって取得されて、命令が実行される。さらに、リピート命令が実行されてRテンプレートが登録されることによって、命令の実行とは独立して、テンプレートパケットのループIDをループIDピッチずつ順次増加させた、全生成数が示す個数のパケットからなるパケット群を生成することができる。そのため、ループ処理におけるボトルネックを解消し、ループ処理を高速に並列処理することができる。そして、生成されたパケット群に含まれる各パケットは、識別情報に含まれるループIDに応じて区画が割り当てられるため、パケットのPE間の移動に伴うオーバーヘッドを小さくして、全体としての処理能力を向上させ、PE数の増加に見合う処理能力の向上を図ることができる。
 また、前述したように、ステップ命令が実行されてSテンプレートが登録されることによって、命令の実行とは独立して、テンプレートパケットのループIDをループIDピッチずつ順次増加させ、ループ変数を初期値からステップピッチずつ順次増加させた、全生成数が示す個数のパケットからなるパケット群を生成することができる。
 また、ソースプログラムPR0から予め生成された初期パケット列を実行コードPR2として記録媒体に記録することによって、当該実行コードPR2をコンパイラ型の処理系において利用することができる。
 また、初期パケット列のうち、識別情報部分の少なくとも一部を省略した、またはヌル文字とした中間パケット列を記録媒体に記録することによって、当該中間パケット列に省略された識別情報部分を付加したうえで、コンパイラ型の処理系において利用することができる。
 また、ソースプログラムPR0から予め生成された初期パケット列を実行コードPR2として記憶装置6に記憶させることによって、各MCEは、当該実行コードPR2を読み込んで利用することができる。
 また、初期パケット列のうち、識別情報部分の少なくとも一部を省略した、またはヌル文字とした中間パケット列を記憶装置6に記憶させることによって、各MCEは、当該中間パケット列を読み込んで、省略された識別情報部分を付加したうえで利用することができる。
 また、データ処理システムにおいて、データ処理装置1が記憶装置6に記憶された初期パケット列または中間パケット列を読み込むことによって、コンパイラ型の並列コンピュータシステムを構成することができる。
 また、前述したように、8行8列の行列状に配置され、16個(4行4列)のPEをそれぞれ含む4つの区画に分割された64個のPE100ないし163は、それぞれ、識別情報に応じて何れかの区画を示す第1の宛先情報を算出し、(マスクされた)処理命令に応じて区画内のPEの位置を示す第2の宛先情報を算出するとともに、第1および第2の宛先情報が当該PEを示すパケットのみを取得し、取得パケットの命令を実行することによって、パケットのPE間の移動に伴うオーバーヘッドを小さくして、全体としての処理能力を向上させ、PE数の増加に見合う処理能力の向上を図ることができる。
 なお、上記実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得るとともに、本発明にはその等価物も含まれる。
 上記実施形態では、原則として、宛先情報算出部211における(第1および第2の)宛先情報の算出、ハッシュ値算出部231におけるハッシュ値の算出、および比較・選択部230におけるパケットの比較(処理対象の2つのパケットの選択)には、いずれもマスクされた拡張識別情報のビット列(以下、原則使用ビット列と称する)が用いられている。ここで、マスクされた拡張識別情報は、拡張識別情報全体から、最初に実行されるべき命令の左右情報のみを除いたものである。また、例外として、最初に実行されるべき命令が実質16ビットのリピート命令である場合には、当該最初に実行される実質16ビットのリピート命令(ただし、左右情報を除く)のみを処理命令部分に含む拡張識別情報のビット列(以下、例外使用ビット列と称する)を用いて、宛先情報およびハッシュ値の算出やパケットの比較が行われている。しかしながら、これに限定されるものではない。
 宛先情報算出部211における宛先情報の算出では、パケットの分散性が良い(パケット分布が一様に近い)ほど、PEの使用効率が向上するものの、パケットの分散性は、算出に用いるビット列よりも、算出に用いる擬似乱数に大きく依存している。そのため、上記の原則使用ビット列や例外使用ビット列のすべてを宛先情報の算出に用いる必要はなく、それらのビット列が同一のパケットから同一の宛先情報が算出されるよう、少なくともそれらのビット列の一部に基づいて宛先情報を算出すればよい。
 また、ハッシュ値算出部231におけるハッシュ値の算出でも、ハッシュテーブルの使用効率や記憶パケットの検索効率は、算出に用いるビット列よりも、算出に用いるハッシュ関数に大きく依存している。そのため、宛先情報算出部211における宛先情報の算出と同様に、上記の原則使用ビット列や例外使用ビット列が同一のパケットから同一のハッシュ値が算出されるよう、少なくともそれらのビット列の一部に基づいて宛先情報を算出すればよい。
 したがって、例えば、識別情報のビット列のみを宛先情報やハッシュ値の算出に用いると、最初に実行されるべき命令の左右情報をマスクしたり、拡張識別情報のビット列のうち算出に用いる部分を最初に実行されるべき命令によって変更したりする必要がない。一方、比較・選択部230におけるパケットの比較には、上記の原則使用ビット列や例外使用ビット列を用いる必要がある。
 上記実施形態では、宛先情報算出部211は、上記の原則使用ビット列や例外使用ビット列のうち、識別情報部分から擬似乱数Ridを生成し、処理命令部分から擬似乱数Rcmを生成しているが、これに限定されるものではない。
 擬似乱数Ridは、PE100ないし163全体を分割した何れかの区画を示す第1の宛先情報として用いられる。そして、当該第1の宛先情報は、上記の原則使用ビット列や例外使用ビット列のうち、少なくとも識別情報の一部を含む部分(第1の部分)に基づいて算出される必要がある。例えば、識別情報のうちループIDのビット列のみを第1の宛先情報の算出に用いると、ループIDが同一のパケットには同一の区画が割り当てられ、それらのパケットの移動を割り当てた区画内に制限することができる。また、ループIDから必要なビット数分(例えば下位2ビット)だけ抽出して、これを擬似乱数Ridとして用いてもよい。
 擬似乱数Rcmは、第1の宛先情報に応じて割り当てられた区画内のPEの位置を示す第2の宛先情報として用いられる。そして、当該第2の宛先情報は、上記の原則使用ビット列や例外使用ビット列のうち、少なくとも第1の部分以外の部分を含む部分(第2の部分)に基づいて算出される必要がある。例えば、上記の原則使用ビット列や例外使用ビット列全体から疑似乱数を生成し、これを第2の宛先情報として用いてもよい。
 なお、図7においては、識別情報部分は、汎用IDおよびループIDを含んでいるが、これに限定されるものではない。例えば、汎用IDが単にパケットを生成したMCEを示しているに過ぎない場合には、処理対象として選択すべき2つのパケットが異なるMCEで生成されており、異なる汎用IDを有している場合もあり得る。このような場合、上記の原則使用ビット列や例外使用ビット列の一部として、汎用IDを宛先情報およびハッシュ値の算出やパケットの比較に用いることはできないため、汎用IDをデータ部分に含めたり、図7に示した以外の追加情報部分に含めたりする必要がある。
  1     データ処理装置
  6     記憶装置
  7     入力装置
  8     出力装置
  9     バス
  100~163 PE(処理要素)
  210   入出力部
  211   宛先情報算出部
  214a~214d 出力ポート
  215a~215d 入力ポート
  230   比較・選択部
  231   ハッシュ値算出部
  240   バッファメモリ
  250   命令デコーダ
  260   ALU(算術論理演算部)
  270   パケット生成部
  280   テンプレートバッファ
  300   MCE(メモリ制御要素)
  400   キャッシュメモリ
  500   通信路(伝送路)

Claims (18)

  1.  行列状に配置され、データごとに、当該データを識別する識別情報および当該データに対する1つ以上の処理命令を示す命令情報を含む拡張識別情報が付加されたパケットを処理する複数の処理部を備え、
     前記複数の処理部は、
     前記拡張識別情報に応じて前記パケットの宛先情報を算出する宛先情報算出部と、
     前記パケットのうち、前記宛先情報が当該処理部を示すパケットのみを取得し、前記宛先情報が当該処理部を示さないパケットを、前記宛先情報が示す処理部に近づく方向に隣接する処理部に転送する入出力部と、
     前記入出力部によって取得された前記パケットの前記処理命令を実行する演算部と、
     をそれぞれ有し、
     前記宛先情報算出部は、
     前記拡張識別情報のうち、少なくとも前記識別情報の一部を含む第1の部分のビット列に基づいて、前記複数の処理部全体を分割した複数の処理部群の何れかを示す第1の宛先情報を算出するとともに、
     前記拡張識別情報のうち、少なくとも前記第1の部分以外の部分を含む第2の部分のビット列に基づいて、前記複数の処理部群のうち前記第1の宛先情報が示す処理部群に含まれる何れかの処理部を示す第2の宛先情報を算出することを特徴とするデータ処理装置。
  2.  前記宛先情報算出部は、
     前記第1の部分のビット列から生成される擬似乱数に応じて前記第1の宛先情報を算出するとともに、
     前記第2の部分のビット列から生成される擬似乱数に応じて前記第2の宛先情報を算出することを特徴とする請求項1に記載のデータ処理装置。
  3.  前記識別情報は、ループ処理におけるループの繰り返しごとに設定される識別番号であるループIDを含み、
     前記演算部は、前記入出力部によって取得された前記パケットの前記処理命令のうち最初に実行されるべき処理命令を実行し、当該実行によって生成されるデータに、実行された前記処理命令の次に実行されるべき処理命令を最初に実行されるべき処理命令とする前記拡張識別情報が付加されたパケットを生成して前記入出力部に入力し、
     前記複数の処理部は、
     前記入出力部によって取得された前記パケットの最初に実行されるべき処理命令が、前記ループIDが異なる複数のパケットからなるパケット群を生成する処理命令である場合に、前記パケット群を生成するためのテンプレート情報が登録されるテンプレート記憶部と、
     前記テンプレート記憶部に登録されている前記テンプレート情報に基づいて前記パケット群を生成して前記入出力部に入力するパケット生成部と、
     をそれぞれさらに有することを特徴とする請求項1または請求項2に記載のデータ処理装置。
  4.  前記パケット群を生成する処理命令は、前記ループIDのみが異なる複数のパケットからなる前記パケット群を生成するリピート命令を含み、
     前記入出力部によって取得された2つのパケットの最初に実行されるべき処理命令が前記リピート命令である場合には、前記テンプレート記憶部に登録される前記テンプレート情報は、当該取得された2つのパケットのうちの一方のパケットにおいて前記リピート命令を除いたテンプレートパケットと、当該取得された2つのパケットのうちの他方のパケットの前記データに応じた前記パケット群の生成条件とを含み、
     前記パケット生成部は、前記生成条件に基づいて前記テンプレートパケットの前記ループIDを変化させた複数のパケットからなる前記パケット群を生成することを特徴とする請求項3に記載のデータ処理装置。
  5.  前記入出力部によって取得された2つのパケットの最初に実行されるべき処理命令が前記リピート命令である場合には、前記生成条件は、生成される前記パケット群に含まれるパケットの個数を示す全生成数と、前記ループIDの増分を示すループIDピッチとを含み、
     前記パケット生成部は、前記テンプレートパケットの前記ループIDを前記ループIDピッチずつ順次増加させた、前記全生成数が示す個数のパケットからなる前記パケット群を生成することを特徴とする請求項4に記載のデータ処理装置。
  6.  前記パケットの前記命令情報は、前記処理命令として前記リピート命令が格納されている場合には、当該リピート命令に隣接して整数データが格納され、
     前記演算部は、前記入出力部によって取得された2つのパケットの最初に実行されるべき処理命令が前記リピート命令である場合には、当該取得された2つのパケットのうちの前記他方のパケットにおいて前記整数データをダウンカウントしたパケットを生成し、
     前記宛先情報算出部は、前記パケットの最初に実行されるべき処理命令が前記リピート命令である場合には、前記リピート命令および前記整数データのみを前記命令情報に格納した前記拡張識別情報のうち、
     少なくとも前記識別情報の一部を含む前記第1の部分のビット列に基づいて前記第1の宛先情報を算出するとともに、
     少なくとも前記第1の部分以外の部分を含む前記第2の部分のビット列に基づいて前記第2の宛先情報を算出することを特徴とする請求項4または請求項5に記載のデータ処理装置。
  7.  前記パケット群を生成する処理命令は、前記ループ処理におけるループ内で使用するループ変数を前記データとする複数のパケットからなる前記パケット群を生成するステップ命令を含み、
     前記入出力部によって取得された2つのパケットの最初に実行されるべき処理命令が前記ステップ命令である場合には、前記テンプレート記憶部に登録される前記テンプレート情報は、当該取得された2つのパケットのうちの一方のパケットにおいて前記ループ変数の初期値を前記データとし、前記ステップ命令を除いたテンプレートパケットと、当該取得された2つのパケットの前記データに応じた前記パケット群の生成条件とを含み、
     前記パケット生成部は、前記生成条件に基づいて前記テンプレートパケットの前記ループIDおよび前記データを変化させた複数のパケットからなる前記パケット群を生成することを特徴とする請求項3に記載のデータ処理装置。
  8.  前記入出力部によって取得された2つのパケットの最初に実行されるべき処理命令が前記ステップ命令である場合には、前記生成条件は、生成される前記パケット群に含まれるパケットの個数を示す全生成数と、前記ループIDの増分を示すループIDピッチと、前記ループ変数の増分を示すステップピッチとを含み、
     前記パケット生成部は、前記テンプレートパケットの前記ループIDを前記ループIDピッチずつ順次増加させ、前記データを前記ループ変数の初期値から前記ステップピッチずつ順次増加させた、前記全生成数が示す個数のパケットからなる前記パケット群を生成することを特徴とする請求項7に記載のデータ処理装置。
  9.  前記パケットを前記複数の処理部の何れかに発行する制御部をさらに備えることを特徴とする請求項1ないし請求項8の何れかに記載のデータ処理装置。
  10.  請求項9に記載のデータ処理装置と、
     前記制御部によって前記パケットに変換されるプログラム、前記パケットのうち前記識別情報の少なくとも一部が前記制御部によって付加される中間パケット、または前記パケットが記憶されている記憶装置と、
     前記データを含み、前記プログラム、前記中間パケット、または前記パケットをさらに含む情報を入出力する入出力装置と、
     を備えることを特徴とするデータ処理システム。
  11.  行列状に配置された複数の処理部を備えるデータ処理装置によって処理される複数のパケットのデータ構造であって、
     前記複数のパケットは、データごとに、当該データを識別する識別情報および当該データに対する1つ以上の処理命令を示す命令情報を含む拡張識別情報を付加して構成され、
     前記識別情報は、ループ処理におけるループの繰り返しごとに設定される識別番号であるループIDを含み、
     前記複数のパケットの前記処理命令は、前記ループIDのみが異なる複数のパケットからなるパケット群を生成するリピート命令を含み、
     前記複数の処理部は、それぞれ、
     前記拡張識別情報のうち、少なくとも前記識別情報の一部を含む第1の部分のビット列に基づいて、前記複数の処理部全体を分割した複数の処理部群の何れかを示す第1の宛先情報を算出し、
     前記拡張識別情報のうち、少なくとも前記第1の部分以外の部分を含む第2の部分のビット列に基づいて、前記複数の処理部群のうち前記第1の宛先情報が示す処理部群に含まれる何れかの処理部を示す第2の宛先情報を算出し、
     前記複数のパケットのうち、前記第1および第2の宛先情報が当該処理部を示すパケットのみを取得し、当該パケットの前記処理命令を実行し、
     前記リピート命令を実行する場合には、最初に実行されるべき処理命令が前記リピート命令である2つのパケットのうちの一方のパケットにおいて前記リピート命令を除いたテンプレートパケットと、生成される前記パケット群に含まれるパケットの個数を示す全生成数と、前記ループIDの増分を示すループIDピッチとを登録し、
     前記処理命令の実行とは独立して、前記テンプレートパケットの前記ループIDを前記ループIDピッチずつ順次増加させた、前記全生成数が示す個数のパケットからなる前記パケット群を生成することを特徴とするデータ構造。
  12.  行列状に配置された複数の処理部を備えるデータ処理装置によって処理される複数のパケットのデータ構造であって、
     前記複数のパケットは、データごとに、当該データを識別する識別情報および当該データに対する1つ以上の処理命令を示す命令情報を含む拡張識別情報を付加して構成され、
     前記識別情報は、ループ処理におけるループの繰り返しごとに設定される識別番号であるループIDを含み、
     前記複数のパケットの前記処理命令は、前記ループ処理におけるループ内で使用するループ変数を前記データとする複数のパケットからなるパケット群を生成するステップ命令を含み、
     前記複数の処理部は、それぞれ、
     前記拡張識別情報のうち、少なくとも前記識別情報の一部を含む第1の部分のビット列に基づいて、前記複数の処理部全体を分割した複数の処理部群の何れかを示す第1の宛先情報を算出し、
     前記拡張識別情報のうち、少なくとも前記第1の部分以外の部分を含む第2の部分のビット列に基づいて、前記複数の処理部群のうち前記第1の宛先情報が示す処理部群に含まれる何れかの処理部を示す第2の宛先情報を算出し、
     前記複数のパケットのうち、前記第1および第2の宛先情報が当該処理部を示すパケットのみを取得し、当該パケットの前記処理命令を実行し、
     前記ステップ命令を実行する場合には、最初に実行されるべき処理命令が前記ステップ命令である2つのパケットのうちの一方のパケットにおいて前記ループ変数の初期値を前記データとし、前記ステップ命令を除いたテンプレートパケットと、生成される前記パケット群に含まれるパケットの個数を示す全生成数と、前記ループIDの増分を示すループIDピッチと、前記ループ変数の増分を示すステップピッチとを登録し、
     前記処理命令の実行とは独立して、前記テンプレートパケットの前記ループIDを前記ループIDピッチずつ順次増加させ、前記データを前記ループ変数の初期値から前記ステップピッチずつ順次増加させた、前記全生成数が示す個数のパケットからなる前記パケット群を生成することを特徴とするデータ構造。
  13.  請求項11または請求項12に記載のデータ構造を有するパケットが記録された記録媒体。
  14.  請求項11または請求項12に記載のデータ構造のうち、前記識別情報の少なくとも一部が前記データ処理装置の制御部によって付加される中間パケットが記録された記録媒体。
  15.  請求項11または請求項12に記載のデータ構造を有するパケットが記憶されている記憶装置。
  16.  請求項11または請求項12に記載のデータ構造のうち、前記識別情報の少なくとも一部が前記データ処理装置の制御部によって付加される中間パケットが記憶されている記憶装置。
  17.  請求項15または請求項16に記載の記憶装置と、
     前記データ処理装置と、
     前記データを含む情報を入出力する入出力装置と、
     を備えることを特徴とするデータ処理システム。
  18.  データごとに、当該データを識別する識別情報および当該データに対する1つ以上の処理命令を示す命令情報を含む拡張識別情報が付加されたパケットを処理するデータ処理方法であって、
     行列状に配置された複数の処理部が、それぞれ、
     前記拡張識別情報のうち、少なくとも前記識別情報の一部を含む第1の部分のビット列に基づいて、前記複数の処理部全体を分割した複数の処理部群の何れかを示す第1の宛先情報を算出し、
     前記拡張識別情報のうち、少なくとも前記第1の部分以外の部分を含む第2の部分のビット列に基づいて、前記複数の処理部群のうち前記第1の宛先情報が示す処理部群に含まれる何れかの処理部を示す第2の宛先情報を算出し、
     前記パケットのうち、前記第1および第2の宛先情報が当該処理部を示すパケットのみを取得し、当該パケットの前記処理命令を実行し、
     前記パケットのうち、前記第1および第2の宛先情報が当該処理部を示さないパケットを、前記第1および第2の宛先情報が示す処理部に近づく方向に隣接する処理部に転送することを特徴とするデータ処理方法。
PCT/JP2013/058039 2012-03-23 2013-03-21 データ処理装置、データ処理システム、データ構造、記録媒体、記憶装置およびデータ処理方法 WO2013141290A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014506265A JP6353359B2 (ja) 2012-03-23 2013-03-21 データ処理装置、データ処理システム、データ構造、記録媒体、記憶装置およびデータ処理方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2012067854 2012-03-23
JP2012-067854 2012-03-23

Publications (1)

Publication Number Publication Date
WO2013141290A1 true WO2013141290A1 (ja) 2013-09-26

Family

ID=49222747

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/058039 WO2013141290A1 (ja) 2012-03-23 2013-03-21 データ処理装置、データ処理システム、データ構造、記録媒体、記憶装置およびデータ処理方法

Country Status (2)

Country Link
JP (1) JP6353359B2 (ja)
WO (1) WO2013141290A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018197745A (ja) * 2017-04-24 2018-12-13 テクトロニクス・インコーポレイテッドTektronix,Inc. コンピューティング装置、物理的な入力信号を解釈する方法及びそのためのコンピュータ・プログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62256045A (ja) * 1986-04-30 1987-11-07 Hitachi Ltd デ−タ駆動型計算機
JP2004525449A (ja) * 2001-02-14 2004-08-19 クリアスピード・テクノロジー・リミテッド 相互接続システム
JP2011138479A (ja) * 2009-12-02 2011-07-14 Mush-A Co Ltd データ処理装置、データ処理システム、パケット、記録媒体、記憶装置およびデータ処理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62256045A (ja) * 1986-04-30 1987-11-07 Hitachi Ltd デ−タ駆動型計算機
JP2004525449A (ja) * 2001-02-14 2004-08-19 クリアスピード・テクノロジー・リミテッド 相互接続システム
JP2011138479A (ja) * 2009-12-02 2011-07-14 Mush-A Co Ltd データ処理装置、データ処理システム、パケット、記録媒体、記憶装置およびデータ処理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018197745A (ja) * 2017-04-24 2018-12-13 テクトロニクス・インコーポレイテッドTektronix,Inc. コンピューティング装置、物理的な入力信号を解釈する方法及びそのためのコンピュータ・プログラム
JP7237457B2 (ja) 2017-04-24 2023-03-13 テクトロニクス・インコーポレイテッド コンピューティング装置

Also Published As

Publication number Publication date
JP6353359B2 (ja) 2018-07-04
JPWO2013141290A1 (ja) 2015-08-03

Similar Documents

Publication Publication Date Title
US10025594B2 (en) Parallel data processing apparatus, system, and method
TWI533208B (zh) Data processing device, data processing system, packet, recording medium, memory device and data processing method
JP5279843B2 (ja) データの順列演算を実行するための装置および方法
WO2011141726A2 (en) Conditional compare instruction
CN107851013B (zh) 数据处理装置和方法
JP6066423B2 (ja) データ処理装置、データ処理システム、データ構造、記録媒体、記憶装置およびデータ処理方法
CN107851016B (zh) 向量算术指令
JP6353359B2 (ja) データ処理装置、データ処理システム、データ構造、記録媒体、記憶装置およびデータ処理方法
JP7324754B2 (ja) ベクトル・キャリー付き加算命令
KR102591988B1 (ko) 데이터 처리장치에서의 벡터 인터리빙
WO2023199015A1 (en) Technique for handling data elements stored in an array storage
TW202349232A (zh) 用於執行外積操作之技術

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: 13764533

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014506265

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13764533

Country of ref document: EP

Kind code of ref document: A1