WO2005001723A1 - 並列処理システムの生成方法 - Google Patents

並列処理システムの生成方法 Download PDF

Info

Publication number
WO2005001723A1
WO2005001723A1 PCT/JP2004/009000 JP2004009000W WO2005001723A1 WO 2005001723 A1 WO2005001723 A1 WO 2005001723A1 JP 2004009000 W JP2004009000 W JP 2004009000W WO 2005001723 A1 WO2005001723 A1 WO 2005001723A1
Authority
WO
WIPO (PCT)
Prior art keywords
parallel
input
data
elements
definition file
Prior art date
Application number
PCT/JP2004/009000
Other languages
English (en)
French (fr)
Inventor
Hiroshi Shimura
Original Assignee
Ipflex Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ipflex Inc. filed Critical Ipflex Inc.
Priority to US10/562,767 priority Critical patent/US20060253836A1/en
Priority to EP04746469A priority patent/EP1640885A4/en
Publication of WO2005001723A1 publication Critical patent/WO2005001723A1/ja
Priority to US13/053,835 priority patent/US8527972B2/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Definitions

  • the present invention relates to a parallel processing system design, a method and an apparatus for generating hardware configuration information of a parallel processing system based on a definition file, and a method for simulating the parallel processing system based on a definition file. It is about.
  • a high-level language such as the C language, which has a high degree of abstraction, is a procedural-level language, and is suitable for indicating how the entire process is executed in order for each instruction. This level of description is an application program that is generally accepted by a suitable computer that has no dependency on hardware, and is used to generally describe the specifications of the LSI or the entire processing executed by the LSI.
  • a hardware description language such as Verilog-HDL or VHDL is sometimes called an RTL, and at a register transfer level, drives a data path or a path where a specific instruction is executed by specific hardware. Used to describe the sequence.
  • An algorithm is defined as a finite set of ordered and clearly defined rules for solving a problem.
  • an entire process (application) described by an algorithm is performed in order.
  • independently executable parts (processing) are executed in parallel.
  • an application is executed in a system having hardware resources suitable for parallel processing in advance, parts that can be processed in parallel by a compiler or the like are parallelized, and an attempt is made to improve the execution speed.
  • a high-level language suitable for software design such as the C language
  • C language is premised on processing an algorithm in the order of time in the rules contained therein. Therefore, instructions are sequentially executed by advancing the program counter, and it is difficult to introduce the concept of non-sequential parallelism. Even if instructions are allowed to be described in parallel, it is only possible to execute independently executable processes in a spatially parallel manner, so long as there is no inconsistency in temporal order. It is not possible to actively use hardware resources suitable for parallel processing. Furthermore, in the case of high-level languages, since instructions that do not depend on hardware are described, it is not known when parallel instructions are actually started or ended in hardware.
  • HDL describes a circuit configuration that operates independently, it essentially describes parallel processing. Also, because the hardware is clear, the timing at which the process is performed can be checked and adjusted. For this reason, it is possible to write HDL that implements an algorithm given in a high-level language. On the other hand, since it is described on the premise of specific hardware, it is impossible to realize the same algorithm if the hardware is different, which is not versatile. Also, if you do not know the hardware that HDL is targeted for, you will not be able to understand the algorithms included in HDL.
  • VLIW technology which describes instructions that can be executed completely independently in parallel, fetches multiple instructions at the same time.
  • a system including a plurality of elements operating in parallel provides a definition file having a plurality of parallel descriptions that respectively define a plurality of parallel processes that are performed independently in synchronization.
  • the plurality of parallel descriptions is a first parallel description that indicates a first parallel process including a plurality of data inputs including at least data inputs to which output data of other parallel processes is input, and the plurality of data inputs Includes a first parallel description indicating that data having the same latency after being input to the system is input.
  • the algorithm can be defined in a form that does not require a program counter by a description that does not depend on hardware.
  • the definition file is a description similar to that of a conventional high-level language, but a parallel description having no temporal order allows the order included in the algorithm to be described spatially rather than temporally.
  • This definition file is common to a conventional programming language in that it defines the procedure of the job (application) to be processed.
  • the programming language describes the written instructions to the computer as being executed in principle from the beginning, ie, over time. Therefore, in order to execute the algorithm defined by the programming language, control by a program counter that indicates the order of instructions to be executed is required.
  • control by a program counter that indicates the order of instructions to be executed is required.
  • since instructions written in a program are executed sequentially by the program counter, when an instruction containing a variable is executed, the state of the variable is unambiguously determined by the instruction executed before the instruction in time. Is decided. Therefore, the defined algorithm will be executed reliably, and it will not be impossible to execute it.
  • the definition file of the present invention has a plurality of parallel descriptions that respectively specify a plurality of parallel processes that are performed independently in synchronization. Therefore, in order to execute the parallel processing defined in the definition file of the present invention, a program counter indicating a time order is not required. Furthermore, in this definition file, the algorithm can be defined by including a parallel description indicating the parallel processing to which the output data of another parallel processing is input. However, in a parallel description that includes variables, the algorithm may not be able to execute as intended unless the progress of the variables is uniquely determined. Therefore, in the first parallel description showing the first parallel processing having a plurality of data inputs, the plurality of data inputs are input to the system.
  • variables are uniquely determined for each parallel description, and the algorithm can be accurately defined by the parallel description.
  • the parallel processing is executed completely independently according to the parallel description. Even if there is no extra processing such as synchronous communication, the timing problem can be solved by specifying the hardware. If not, the algorithm can be described accurately.
  • the latency of input data is the same, that the input data is a force (data group) that is synchronously loaded into the system, or that the synchronization is the same. Is one of the data (data group) that has been loaded and processed by one or more parallel processes. That is, data having the same latency is data input to the system at the same timing, or data obtained by processing such data by another parallel processing.
  • the definition file of the present invention is composed of a plurality of parallel descriptions like the HDL, and does not require a program counter for executing the parallel processing by the plurality of parallel descriptions. Therefore, it can be said that the definition file describes the hardware.
  • the definition file contains a parallel description that indicates parallel processing with data inputs to which the output data of other parallel processing is input. If there are multiple data inputs, the data input to them is unambiguous. Decided. Therefore, the present invention can provide a hardware description language that can define an algorithm accurately and in a manner that can be understood by a user. Furthermore, even if the details of the hardware are not known, the data input to each parallel processing is uniquely determined, so that detailed information or knowledge of the hardware that actually performs the parallel processing is unnecessary.
  • the definition file of the present invention can describe hardware without depending on actual hardware and without assuming specific hardware. Therefore, it is a hardware-independent and extremely general-purpose hardware description language. Therefore, it is a tool or description suitable for a software engineer to easily design or generate an LSI or ASIC, especially an LSI or ASIC containing many parallel processing elements.
  • a plurality of parallel descriptions included in the definition file of the present invention are input to them. If the data is arranged in the same order of latency, multiple parallel descriptions will be arranged in the order of the passage of time of the variables included in it. This state is the same as in the order in which the instructions are executed. Therefore, a software engineer can create the definition file of the present invention with the same feeling as creating an ordinary program. In this regard, definition files are also a very suitable tool for software engineers to easily design or generate LSIs or ASICs.
  • the definition file of the present invention makes it possible to spatially assign an algorithm to a plurality of elements that can be processed in parallel, and to effectively utilize an application with a system having many elements that operate in parallel. It can run at high speed.
  • the latency of input data is determined to be the same for each parallel description, and the timing is adjusted. Therefore, when generating hardware according to the definition file, it is necessary to adjust the timing of input data in units of parallel processing specified by the parallel description.
  • the element for executing the parallel processing may be an operation unit that performs an operation in bit units.
  • parallel processing can be executed by allocating one or several arithmetic units to a parallel description. Therefore, in order to adjust the timing in units of parallel description, it is sufficient to adjust the arithmetic unit for delay.
  • the definition file of the present invention is a hardware configuration suitable for abbreviation by connecting multiple types of arithmetic units. It is suitable for describing a parallel processing system that realizes. Therefore, the definition file of the present invention allows a parallel processing system to be efficiently designed and developed, and to simulate.
  • the definition file of the present invention can be provided by being recorded on a computer-readable recording medium, and based on the definition file, a plurality of types of elements that operate in parallel by using a computer.
  • a parallel processing system can be generated.
  • the plurality of parallel descriptions in the definition file include the first parallel description indicating the first parallel processing including the plurality of data inputs including at least the data input to which the output data of another parallel processing is input. Have been.
  • a circuit configuration for executing the parallel processing specified in the parallel description of the definition file based on a hardware library recording information of plural types of elements.
  • the time (the number of cycles) consumed by each type of element can be determined by a hardware library in which information on specific hardware is stored. Therefore, when the parallel processing has a plurality of data inputs, referring to the hardware library, a specific hardware can be used so that the latencies of the data input to the plurality of data inputs are the same.
  • the delay element based on hardware can be reduced, and the algorithm defined in the definition file can be accurately assigned to specific hardware. If a plurality of elements execute hardware in synchronization with the clock, the hardware library stores information including the number of cycles consumed by each of the plurality of types of elements. In the process, a delay element corresponding to the number of cycles consumed in at least one of the plural types of elements is added.
  • the parallel processing system may have a fixed hardware configuration.
  • a parallel processing system can reconfigure different hardware configurations by changing the connection of multiple types of elements.
  • hardware configuration information including information indicating a plurality of different hardware configurations is output.
  • the method of the present invention for generating a parallel processing system can also be provided as an apparatus for generating a system including a plurality of types of elements operating in parallel, for example, as a compiler.
  • This compiler is a generator that generates a parallel processing system with multiple types of elements that operate in parallel based on a definition file. Based on a hardware library that records information on multiple types of elements, the compiler generates A circuit configuration for executing the parallel processing specified in the parallel description of Means for generating hardware configuration information including the circuit configuration, and a plurality of data inputs of a circuit configuration for executing the first parallel processing, the latency from the input to the parallel processing system. And second means for adding a delay element to the hardware configuration information so that the same data is input.
  • a program for designing this parallel processing system is a program having an instruction capable of executing, on a computer, a process including the above-described first step and second step.
  • the definition file of the present invention is suitable for generating a parallel processing system including a plurality of types of arithmetic units having a scale capable of processing one type of parallel processing by itself. Therefore, it is desirable to prepare information of a plurality of types of arithmetic units of such a size that a single unit can process one parallel process in the hardware library. Also, a plurality of types of elements may be operated on a bit basis.
  • the parallel processing described in the definition file is generally data processing in units of bytes or words. Therefore, the hardware library can provide information on multiple types of arithmetic units that can execute different operations in byte or word units, and create a parallel processing system in which multiple arithmetic units are arranged. desirable.
  • the compiler or the program for the compiler can output hardware configuration information including information indicating a plurality of different hardware configurations, which is suitable for executing the contents of the definition file.
  • the plurality of parallel descriptions include a second parallel description that defines a second parallel process including the same common process as at least a part of the third parallel process defined by the third parallel description
  • the second parallel processing is performed.
  • the delay element can be reduced by using the circuit configuration for executing the difference between the logical processing and the common processing as the circuit configuration for executing the first parallel processing. This is because the circuit configuration for executing the difference between the second parallel processing and the common processing has a plurality of data inputs similarly to the first parallel processing. As a result, it is possible to suppress consumption of hardware resources such as elements for configuring a circuit and wiring connecting the elements.
  • a plurality of types of arithmetic units constituting the parallel processing system may include means for changing processing by an external input.
  • multiple parallel descriptions include a parallel description that describes the parallel processing whose processing is changed by external input. It is possible to design a parallel processing system that can change the processing content without changing the network or circuit wiring. It is also possible to change the processing contents of the operation unit together with the network or circuit wiring, and it is possible to design a reconfigurable parallel processing system more flexibly.
  • a method and a simulator for simulating a system having a plurality of types of elements operating in parallel based on a definition file include a step or means for synchronously executing a plurality of parallel processes included in the definition file, In this execution step, when executing a parallel description having a plurality of input data, the plurality of input data use the same data having the same latency after being input to the system.
  • a program or a program product for simulating, by a computer, a system having a plurality of types of elements operating in parallel based on the definition file is also provided by the present invention, and is recorded on an appropriate recording medium such as a CD-ROM. Or can be provided via a computer network.
  • FIG. 1 shows a schematic configuration for generating DDDL, which is hardware configuration information, from DIDL, which is a definition file.
  • FIG. 2 shows an outline of a reconfigurable parallel processing system.
  • FIG. 3 shows a parallel processing system in which a plurality of elements that operate independently and in parallel are arranged in a matrix.
  • FIG. 4 (a) shows an example of DIDL
  • FIG. 4 (b) shows a different example of DIDL.
  • FIG. 5 is a flowchart showing a schematic process of a compiler.
  • FIG. 6 is a block diagram showing a schematic configuration of a compiler.
  • FIG. 7 (a) shows an example of DIDL
  • FIG. 7 (b) shows a circuit configuration corresponding thereto.
  • FIG. 8 shows a different example of DIDL
  • FIG. 8 (b) shows an optimized example
  • FIG. 8 (c) shows a corresponding circuit configuration.
  • FIG. 9 shows still another example of DIDL
  • FIG. 9 (b) shows a circuit configuration corresponding thereto.
  • FIG. 10 shows still another example of DIDL.
  • FIG. 11 shows a circuit configuration corresponding to the DIDL shown in FIG.
  • FIG. 12 shows a state in which the circuit configuration shown in FIG. 11 is assigned to a matrix unit.
  • FIG. 13 shows a schematic configuration for simulating at the DIDL level.
  • FIG. 14 is a flowchart showing an outline of processing of a simulator at the DIDL level.
  • FIG. 1 shows a process of designing hardware using the definition file of the present invention.
  • the hardware configuration information 4 contains DDDL (Device Dependent Description).
  • Compiler 2 is implemented using a general-purpose computer 9 having appropriate hardware resources, and functions as a compiler by installing program 5 for parallel system design that interprets DIDL1 and outputs DDDL4. You. Therefore, the DIDL 1 is provided by being recorded on a computer-readable recording medium 6, for example, a CD-ROM or a magnetic disk. It is also possible to provide the DIDL 1 using communication through a computer network such as the Internet. The provided DIDL 1 is used by being recorded on an appropriate recording medium that is a part of the computer 9.
  • FIG. 2 shows an example of a processor including a parallel processing system.
  • This processor Is a reconfigurable processor (RP) disclosed in the applicant's International Publication WO03 / 007155.
  • This RP20 is specified by a general-purpose basic processor 21 that performs general-purpose processing including error processing based on an instruction set given by a program, etc., and arithmetic or logical elements arranged in a matrix.
  • AAP 50 Adaptive Application Processor unit (hereinafter referred to as AAP) 50 in which one or more data paths (data flow or pseudo data flow) conforming to the data processing of the AAP 50 and interrupt processing from the AAP 50
  • a bus control unit 29 for controlling input / output of data to / from the outside is provided.
  • the basic processor 21 and the AAP 50 are connected by a data bus 24a capable of exchanging data between them and an instruction bus 24b for controlling the configuration and operation of the AAP 50 from the basic processor 21.
  • an interrupt signal is supplied from the AAP 50 to the interrupt control unit 22 via the signal line 25, and when the processing in the AAP 50 is completed or an error occurs during the processing, the state of the AAP 50 can be fed back to the basic processor 21.
  • the AAP 50 and the FPGA 27 are also connected by the data bus 26.
  • the AAP 50 supplies data to the FPGA 27 to perform processing, and the result can be returned to the AAP 50.
  • the AAP 50 is connected to the bus control unit 29 by a load bus 23a and a store bus 23b, so that data can be exchanged with a data bus external to the RP20.
  • the basic processor 21 is also connected to the bus control unit 29 by the bus 21a, and can exchange data with an external data path.
  • FIG. 3 shows an outline of the AAP 50.
  • the AAP 50 includes a matrix unit 51 in which a plurality of logical elements (logical blocks or logical units (hereinafter, referred to as elements)) for performing arithmetic and Z or logical operations are arranged in a matrix, and data is stored in the matrix unit 51.
  • An input buffer 52a for supplying data and an output buffer 52b for storing data output from the matrix unit 51 are provided.
  • the input buffer 52a and the output buffer 52b are each composed of four small-capacity input memories, and are connected via the access arbitration unit 54. Connected to input / output buses 23a and 23b.
  • the matrix section 51 is an integrated circuit section that is the center of a parallel processing system capable of reconfiguring a data path or a data flow.
  • An element 55 which is a plurality of types of arithmetic units that operate in parallel, has four elements in the vertical direction. They are arranged in an array or matrix to form one line. Then, information on a plurality of types of elements included in the matrix 51 is stored in the hardware library 3.
  • the matrix section 51 includes a row wiring group 57 extending in the horizontal direction and a column wiring group 58 extending in the vertical direction, arranged between these elements 55.
  • the column wiring group 58 includes a pair of wiring groups 58x and 58y that are separately arranged on the left and right of the operation units 55 arranged in the column direction.
  • a switching unit 59 is arranged at the intersection of the row wiring group 57 and the column wiring group 58 so that any channel of the row wiring group 57 can be switched to any channel of the column wiring group 58 and connected. I have.
  • Each switching unit 59 is provided with a configuration RAM for storing the settings, and by rewriting the contents of the configuration RAM with data supplied from the processor unit 21, the row wiring group 57 and the column wiring group are rewritten. 58 connections can be dynamically controlled arbitrarily. Therefore, in the matrix section 51, the configuration of the data flow formed by connecting all or a part of the plurality of elements 55 by the wiring groups 57 and 58 can be dynamically changed arbitrarily.
  • these elements 55 operate in parallel, and information such as the function, delay, and input / output data conditions of each type of element 55 is stored in the hardware library 3. Since these elements 55 operate in synchronization with the clock signal supplied from the clock generator 28, the type or the number of cycles (the number of clocks) consumed by the processing executed inside the elements is determined. Therefore, the hardware library 3 stores, as delay information, the number of cycles consumed for processing and outputting input data for each type of element. Further, the arrangement of the elements 55 of each type, and information on the wiring groups 57 and 58 and the switching unit 59 are also stored in the hardware library 3, and the compiler 2 implements the algorithm for realizing the algorithm defined in DIDL1.
  • the connection information (data flow configuration) of element 55 is output as hardware configuration information (DDDL) 4. Therefore, the element 55 is connected by the wiring groups 57 and 58 according to DDDL4.
  • the algorithm defined in DIDL1 can be spatially allocated by the elements 55 of the matrix unit 51.
  • Each element 55 includes a set of selectors 53 for selecting the respective force input data of a set of column wiring groups 58x and 58y, and an arithmetic and / or logical operation specific to the selected input data.
  • An internal data path unit 56 that performs processing and outputs the processed data to the row wiring group 57 is provided.
  • different types of elements 55 having an internal data path section 56 for performing different processing for each row are arranged side by side.
  • the element 55 arranged in the first row has a data path section (LD) 56i suitable for receiving data from the input buffer 52a.
  • LD data path section
  • the element 55a arranged in the second row is an element for writing data from an external device to the input buffer 52a, and has a data path having an internal data path suitable for generating an address for block loading.
  • Department (BLA) 56a All the elements 55 constituting the matrix 51 can be modified to some extent in the configuration or the initial value of the internal data path. The setting is instructed by the control signal from the basic processor 21 to the configuration RAM of each element 55 via the control bus 24b.
  • the element 55b arranged in the third row includes a data path unit (LDA) 56b that generates an input read address for loading desired data from each of the input RAMs into the matrix unit 51.
  • the elements 55c arranged in the fourth and fifth rows have a data path (SMA) 56c suitable for arithmetic and logical operations.
  • the data path unit 56c includes, for example, a shift circuit, a mask circuit, a logical operation unit ALU, and a configuration RAM for setting an operation to be processed by the ALU. Therefore, the data input to the matrix unit 51 can be added or subtracted, compared, or ORed or ANDed by the instruction written by the processor 21, and the result is output from the element 55. Output as a signal.
  • the elements 55d arranged in the lower row include a data path unit (DEL) 56d suitable for processing for delaying the timing of data transmission.
  • the element 55e arranged in the lower row has a data path unit (MUL) 56e suitable for multiplication processing including a multiplier and the like.
  • Another different element 55f is an FP prepared outside the matrix section 51.
  • An element having a data path section 56f for interfacing with the GA 27 is also prepared. After the data is supplied to the FPGA 27 and processed once, the data can be returned to the matrix section 51 again to continue the processing.
  • the matrix section 51 which is a reconfigurable integrated circuit section, is further provided with elements 55g and 55h each having a data path section 56g and 56h suitable for generating an address for storage. . These control for outputting data to an external device via the output buffer 52b.
  • elements 55 having a data path section (ST) 56s suitable for outputting data for storage are arranged. Therefore, by dynamically changing the connection of the elements 55 using the matrix section 51, various data flows can be flexibly configured and various processes can be performed.
  • FIGS. 4 (a) and 4 (b) show a simple example of DIDL.
  • DIDL1 Oa shown in FIG. 4 (a) has two lines of parallel description 11a and lib.
  • the parallel description 11a specifies a process 12a for substituting the variable b for the variable a.
  • the parallel description l ib specifies a process 12b for substituting the variable a for the variable c. Therefore, the process 12b is a process in which the output data of the other process 12a is used as a data input.
  • These processes 12a and 12b are parallel processes independently and synchronously performed by elements operating in parallel
  • DIDLlOa shows a hardware configuration for executing the parallel processes 12a and 12b synchronously and independently. ing.
  • DIDLlOa is defined as a definition file for allocating an algorithm to a parallel system by a parallel description indicating parallel processing in which output data of at least one other parallel processing is used as at least one data input.
  • first parallel description indicating parallel processing with input
  • the plurality of data inputs have the same system, that is, the same latency since being input to the matrix 51.
  • FIG. 5 shows a schematic process of the compiler 9 for DIDL.
  • DIDL 1 is read, and in step 32, the parallel description included in DIDL 1 is interpreted. Then, based on the hardware configuration stored in the hardware library 3, a circuit configuration for performing the parallel processing indicated in the parallel description is generated.
  • hardware configuration information 4 for performing parallel processing by the matrix unit 51 of the reconfigurable processor shown in FIG. 3, information of various elements 55 stored in the hardware library 3 Using the information of 57 and 58 and the information of the switch 59, a circuit configuration including the element 55 and operating in parallel is generated, and stored as DDDL4 of hardware configuration information in an appropriate memory of the compiler 2.
  • the information of each element 55 includes, for example, an arithmetic function, an input condition, and a processing cycle.
  • the hardware information 4 of the circuit configuration for performing the parallel processing includes the elements 55 selected for the parallel processing, and the positions and selection of the elements 55.
  • An element including circuit information such as a wiring rate connecting the element 55 is generated.
  • step 33 the plurality of data inputs are added to the parallel processing system, that is, the latency after being input to the matrix unit 51.
  • the information of the element 55d having the data path section (DEL) 56d as a delay element is added to DDDL4. I can.
  • DIDL1 includes the first parallel description indicating the first parallel processing including a plurality of data inputs including at least the data input to which the output data of another parallel processing is input
  • the first parallel description In step 33, the same data is input to the plurality of data inputs of the circuit configuration generated in step 32 to execute the parallel processing, so that the same data is input to the parallel processing system with the same latency.
  • a delay element is added to DDDL4, which is hardware configuration information.
  • the parallel processing (second parallel processing) specified by the parallel description included in DIDL1 includes the same common processing as at least a part of the parallel processing (third parallel processing) specified by another parallel description.
  • a common circuit configuration including the same element 55 is allocated to the common processing, and in step 33, the element 55 not included in the common configuration, that is, the second parallel processing and the common processing are performed. If necessary, add a delay element 55d to the circuit configuration for performing the difference, and adjust the latency.
  • step 34 DDDL4 containing the circuit configurations generated in steps 32 and 33 and information for connecting them is output.
  • the matrix section 51 can reconfigure different hardware configurations by changing the connection of the plurality of elements 55. Therefore, the DDDL4 is information indicating a plurality of different hardware configurations, and the matrix unit 51 can be reconfigured by the DDDL4.
  • a method of generating a parallel processing system including these steps 31 to 34 is provided by recording the respective steps of steps 31 to 34 on a suitable recording medium as a compiler program or a program product 5 executable by the general-purpose computer 9. can do. It is also possible to provide program products via a network. By installing the program 5 on the general-purpose computer 9, the general-purpose computer can be used as the compiler 2. Therefore, the computer 9 on which the compiler program 5 is installed generates the circuit configuration for executing the parallel processing described in DIDL1 based on the function 35 for reading DIDL1 and the hardware library 3, as shown in FIG.
  • Function (the first means) 36 When the circuit configuration includes a plurality of data inputs, a function of adding a delay element 55d to the plurality of data inputs so that data having the same latency after being input to the matrix unit 51 is supplied ( Second means) It operates as a compiler 2 having a function 38 for outputting the generated circuit configuration as DDDL4 including the connection information between elements as DDDL4.
  • FIG. 7A shows an example of a different DIDL.
  • the DIDLlOb includes a description 11c indicating a variable input to the system, in this example, the matrix unit 51, a description lid indicating an internal variable, and a description lie indicating addition.
  • a circuit configuration 18b having an operation element 55c having a data path 56c capable of performing an arithmetic operation is generated as shown in FIG. 7 (b).
  • an operation element 55c is provided with two data inputs for inputting variables b and c and a data output for outputting variable a.
  • FIG. 8 (a) shows another example of DIDL.
  • the DIDLlOc includes parallel descriptions llf and llg indicating two parallel processes 12f and 12g, in addition to the descriptions 11c and lid of the variables.
  • the parallel processing 12f and 12g include the common processing, so that in Step 32, the common circuit configuration 17c is generated for the common part. That is, in the DIDLlOc, the parallel processing 12g is optimized to the parallel processing 12g 'as shown in FIG. 8 (b).
  • Parallelism 12 ⁇ ⁇ performs processing difference or, a data input output data of the other parallel processing 12f "a" is input, the data "d" not through the other parallel processing 12f is input
  • This is a first parallel processing including a plurality of data inputs including and. Therefore, the operation element 55c included in the circuit configuration for executing the parallel processing 12g 'has an input to which the variable a is supplied and an input to which the variable d is supplied.
  • the variable a is a variable that is delayed from the variables b and c input to the matrix unit 51 by the processing cycle of the operation element 55c.
  • the variable d is a variable that is input to the matrix 51 simultaneously with the other variables b and c.
  • step 33 the variable d input to the matrix unit 51 is converted to the parallel processing 12f so that the latency between the variable a and the variable d input to the element 55c for performing the parallel processing 12g 'is adjusted.
  • the delay element 55d that delays by the number of cycles of the arithmetic element 55c that performs Is entered.
  • step 33 based on the information stored in the hardware library 3, a delay element 55d consuming a cycle corresponding to the number of cycles consumed in the addition element is added to the DDDL4.
  • the DDDL 4 is generated including hardware configuration information including the circuit configuration 18c shown in FIG. 8C, and is output from the compiler 2 in step 34.
  • Fig. 9 (a) shows still another example of DIDL.
  • the DIDLlOd includes a parallel description l lh-11 k indicating four parallel processings 12h-12k, and a description 11c and lid relating to variables.
  • the DIDLlOc is read by the compiler 2, first, in step 32 for generating a circuit configuration, a circuit configuration using the arithmetic element 55c for executing the parallel processing 12h-12k is generated.
  • One variable c input to the parallel processing 12k is an output of the parallel processing 12h that receives a variable input to the matrix 51 (hereinafter, a system input variable) a.
  • the other variable e input to the parallel processing 12k is the output of the parallel processing 1 # that further receives the output of the parallel processing 12i that receives the system input variables a and b. Therefore, in the latency adjusting step 33, in order to adjust the latency between the variable c and the variable e input to the parallel processing 12k, the element 55c for delaying the variable c with respect to the variable e and performing the final addition is used. A delay element 55d is added to feed the data input. As a result, a circuit configuration 18d shown in FIG. 9B is generated, and is output from the compiler 2 as hardware configuration information for connecting a plurality of elements 55, that is, DDDL4.
  • the variables c and e of the parallel processing 12k are interpreted as having the same latency. Therefore, the variable c determined two cycles ago is input to the parallel processing 12k via the delay element 55d in synchronization with the variable e determined one cycle ago. As a result, the output f of the parallel processing 12k becomes the same as the program 19d three cycles after inputting the variables a and b, and the same result as the program 19d is obtained by DIDLlOd describing the parallel processing.
  • the DIDLlOd describing the parallel processing has the same processing content even if the order of the description llhIlk included in the DIDLlOd is changed.
  • the program 19d defines the algorithm in the order in which the processes are arranged, that is, in a time-series manner.
  • a file described as a program can be defined as a file that defines parallel processing, that is, a hardware definition. It can be understood as a file to be executed.
  • the programmer can create the definition file of the present invention that describes the hardware of the parallel processing system by writing a program that normally shows the algorithm in chronological order. Therefore, by using DIDL, which is the definition file of the present invention, a programmer can perform hardware design in the same manner as creating a program.
  • the definition file only the latencies of the variables input to the parallel processing are understood to be the same, and the specific hardware is not premised. That is, the input variables with the same latency are the same as those contained in the data group loaded into a certain system (in this example, the matrix unit 51) or the data group loaded synchronously. It is necessary to understand other than when designing on the assumption of actual hardware, except that some are processed by other parallel processing and are derived from variables input to the system synchronously. Absent. Therefore, it can be said that the definition file of the present invention is a hardware description language that does not depend on hardware. In other words, it can be interpreted assuming any hardware, and if the hardware is specified, the algorithm described in the definition file can be assigned to that hardware.
  • this example Definition files such as DIDL can be said to be a language that can develop algorithms spatially rather than temporally. Therefore, by using the DIDL of the present example, all the algorithms that can be described in the program can be executed by a circuit combining a plurality of elements operating in parallel, in this example, element 55. It can describe the hardware configuration to execute.
  • FIG. 10 shows still another example of DIDL.
  • This DIDLlOe describes a process of searching for a maximum value a of a predetermined number (numOfData) of input variables in given from the outside.
  • the part following the description 111 that sets the initial value is the part that describes the parallel processing, the parallel description 11m of the parallel processing 12m that compares the input variable in with the maximum value a so far and sets the maximum value, Parallel processing to advance the counter 12Parallel description 1 ⁇ and parallel processing I to output the maximum value a of processing 12m when the counted up value of processing 12 ⁇ reaches a predetermined number numOfData llo
  • a delay element is inserted to adjust the latency of the variable supplied to the two data inputs in order to absorb the difference in the number of cycles required for the processes 12m and 12 ⁇ .
  • FIG. 11 schematically shows a hardware configuration 18e obtained by compiling the DIDL10e.
  • the parallel processing 12m is configured using an arithmetic element 55c
  • the parallel processing 12 ⁇ is configured using an address generation element 55b
  • the parallel processing 12 ⁇ is performed using two arithmetic elements.
  • the circuit is configured using 55c, and DDDL4 indicating the circuit configuration is generated.
  • the processing is more than the number of cycles consumed in the element 55b that performs the counting processing of 12 ⁇ . Therefore, a delay element 55d is added to the side for inputting the counter value of the parallel processing 12 ⁇ .
  • the two delay elements 55d arranged on the output side of the processing 12 ⁇ are divided into three segments in the matrix section 51.
  • the first segment constitutes the processing 12m—12 ⁇ circuit. To transfer data to the output element 56s through the.
  • FIG. 12 shows the elements 55 arranged in the matrix section 51 shown in FIG. The state where the road configuration is allocated is shown.
  • the DIDL10e algorithm is assigned to the matrix section 51 of the reconfigurable processor 20 in which the elements 55 are already arranged in a matrix state. Therefore, the information on the hardware configuration shown in Fig. 11 is generated by Compiler 2 as information on the arrangement of the selected elements and the wiring rates connecting them, as shown in Fig. 12, and output as DDDL4. .
  • the elements 55a and 55b for generating the address are used to input the input variable in from outside. Although not shown in the figure, elements 55g and 55h for generating addresses for output are similarly used.
  • the parallel processing system 20 of this example is a reconfigurable processor (integrated circuit device) in which elements 55 are arranged in a matrix, and each element 55 has a certain degree, such as an ALU, as described above. It has a large-scale operation function, and it is a scale that can execute almost one parallel processing by one element.
  • Each element 55 is an operation unit suitable for processing data for a specific purpose in units of bytes or words such as 8 bits, 16 bits or 32 bits. Then, the input data and the output data are latched using a flip-flop or the like and synchronized with a clock signal. That is, the input and output of each element 55 are synchronized by the clock. Therefore, the cycle consumed by each element 55 can be predicted in advance.
  • each element has a certain scale of arithmetic function suitable for performing a specific process, it is necessary to assign hardware to the parallel processing described in DIDL1 for each element and configure the circuit. Can be. Therefore, if DIDL1 is interpreted on the premise of the matrix unit 51 which is the parallel processing system of this example, the cycles consumed in the parallel processing can be easily predicted, the circuit configuration can be easily generated, and the latency adjustment can be performed. Easy to do. For this reason, the RP20, which is a data processing device having a certain scale of computing capability and a matrix unit 51 capable of almost executing one parallel process on an element basis, generates hardware from the definition file of the present invention. It can be said that the architecture is suitable for
  • FIG. 13 shows a simulator 67 at the DIDL level.
  • the simulator 67 is configured by installing a simulator program 68 on the general-purpose computer 9. Therefore, based on the definition file DIDL1 of the present invention, a program or a program product 68 for simulating, by the computer 9, a system having a plurality of types of elements operating in parallel is also a suitable recording medium such as a CD-ROM. Or can be provided via a computer network.
  • FIG. 14 is a flowchart showing a schematic operation of the simulator 67.
  • DIDL1 is read.
  • step 72 a plurality of parallel processes described in DIDL1 are synchronously executed.
  • the data having the same latency after being input to the system is input to the plurality of data inputs. input. For example, data that is input to the system and has the same latency as data (system input variable) defined as data that is not processed by other parallel processing is used.
  • step 73 If the termination condition is satisfied in step 73, for example, if the parallel processing is repeatedly executed a predetermined number of times, or if the result of the parallel processing described in DIDL1 reaches a predetermined value, the simulation result in step 74 Is output. This makes it possible to simulate the operation of the hardware described in DIDL1 without depending on the hardware.
  • a definition file having a plurality of parallel descriptions that respectively define a plurality of parallel processes that are performed independently in synchronization, and includes a plurality of data inputs.
  • the parallel description proposes a definition file that interprets that the same data is supplied with the same latency after being input to the system for these multiple data inputs.
  • This definition file describes parallel processing, and can be understood as a hardware description file, in which the hardware itself appears. Since there is no hardware description, it can be said that the hardware description has no hardware dependency. Furthermore, since it is a parallel description, it is possible to define an algorithm in a form that does not require a program counter.
  • the definition file of the present invention is a description similar to that of the conventional high-level language, but the parallel description without the temporal order allows the order contained in the algorithm to be described spatially rather than temporally, and parallelism can be described. It is possible to easily generate a parallel processing system with multiple elements that operate in a short period of time.
  • the definition file of the present invention is useful.

Abstract

 本発明の定義ファイルは、独立に行われる複数の並列処理をそれぞれ規定した複数の並列記述を有し、複数の並列記述は、他の並列処理の出力データが入力されるデータ入力を少なくとも含む複数のデータ入力を備えた第1の並列処理を示す第1の並列記述を含んでおり、それら複数のデータ入力には並列処理システムに入力されてからのレイテンシーが同一のデータが入力されることを示す。したがって、複数種類の要素の情報を記録したハードウェアライブラリに基づき、並列処理を実行するための複数種類の要素の少なくともいずれかを備えた回路構成を含むハードウェア構成情報を生成する第1の工程と、第1の並列処理を実行するための回路構成の複数のデータ入力に、並列処理システムに入力されてからのレイテンシーが同一のデータが入力されるように、ハードウェア構成情報に遅延要素を加える第2の工程とを有する生成方法によりハードウェア構成情報を生成できる。

Description

明 細 書
並列処理システムの生成方法
技術分野
[0001] 本発明は、並列処理システムの設計に関し、定義ファイルに基づき並列処理システ ムのハードウェア構成情報を生成する方法および装置、さらに、定義ファイルに基づ き並列処理システムをシミュレートする方法に関するものである。
背景技術
[0002] LSIあるいは ASICを設計するために幾つかの言語が用いられている。 C言語など の抽象度の高い高級言語と称されるものは、手続き的レベルの言語であり、 1命令毎 にいかに処理全体が順番に実行されていくかを示すのに適している。このレベルの 記述は、一般的にハードウェア依存性がなぐ適当なコンピュータで受け入れられる アプリケーションプログラムであり、 LSIの仕様、または LSIにおいて実行する処理全 体を一般的に記述するために用いられる。 Verilog-HDLあるいは VHDLなどのハ 一ドウエア記述言語(HDL)は、 RTLと称されることもありレジスタトランスファレベルで 、特定のハードウェアにより特定の命令が実行されているデータパスやパスを駆動す るシーケンスを記述するために用いられる。
[0003] アルゴリズムは、問題を解くために明確に規定され、順序付けられた有限個の規則 力 なる集合として定義されており、従来、並列処理は、アルゴリズムにより記述され た処理全体 (アプリケーション)を順番に進める上で、独立して実行可能な部分 (処理 )を並列に実行し、処理時間を短縮する目的で用いられる。予め並列処理に適した ハードウェアリソースを備えたシステムでアプリケーションを実行する場合は、コンパィ ラなどにより並列処理ができる部分は並列化され、実行速度を向上することがトライさ れる。
[0004] また、特定のアプリケーションの実行を目的としたハードウェアを設計する場合は、 独立して実行できる部分を並列に処理するように回路を設計して処理時間の短縮を 目指す。特開平 10 - 116302号公報に記載された技術は、並列処理および同期通 信等により実行時間が定まらない処理を記述可能な HDLにより回路を設計する方法 である。同期通信とは、 2つのファンクションを並行に実行する際に、それらに含まれ るプロセスを送信側が準備できるまで受信側が待ち、通信が完了した後にプロセスが 進行する。したがって、これらのファンクションは並列に記述されても独立して実行さ れず、実行時間が可変の処理となる。一方、同期通信を行わない処理は並列処理と して独立して行われる。これらは、ソース言語で与えられた処理全体の内、ソース上 では並列に実行するように記載された処理を、ハードウェア設計において並列に、あ るいは同期通信を用いて実行して実行サイクル数を短縮することを目的とした技術で ある。
[0005] 近年、 LSIを構成する回路の一部をソフトウェアにより再構成できるハードウェアが 提供されている。さらに、国際公開 WO03Z007155号には、再構成する基本単位 を、ゲートレベルから ALUなどのある程度の規模の演算機能を備えた演算ユニットに して、複数種類の演算ユニットをマトリクス状に配置し、再構成に要する時間を短縮 することが開示されてレ、る。複数の演算ユニットがマトリクス状に配置されたシステム は、それぞれの演算ユニットが並列に処理を実行できるので、膨大な数の並列処理 に適したハードウェアリソースを備えたシステムと捉えることが可能である。しかしなが ら、この種の並列処理に適したシステムを設計するのに適した設計システムは提供さ れていない。
[0006] C言語などのソフトウェア設計に適した高級言語は、アルゴリズムを、それに含まれ る規則を時間的な順番に処理することを前提としている。したがって、プログラムカウ ンタを進めて命令がシーケンシャルに実行されるように構成されており、シーケンシャ ルではない並列という概念を導入することは難しい。命令を並列的に記述することが 許容されたとしても、それは、時間的な順番に齟齬をきたさない範囲で、独立して実 行できる処理を空間的に並列に広げて実行できる程度であり、並列処理に適したハ 一ドウエアリソースを積極的に使用することはできなレ、。さらに、高級言語であれば、 ハードウェアに依存しない命令が記述されるために、並列に記述した命令がハードウ エアで実際に開始されたり、終了したりするタイミングは不明である。したがって、処理 できる範囲を空間的に広げても、設計者はハードウェア上で実際にどのように並列処 理が実行されるのかは定義できなレ、し、把握することもできなレ、。 [0007] HDLは独立して動作する回路構成を記述するので、本来、並列処理を記述するも のである。また、ハードウェアが明確になるので、処理が実行されるタイミングを調べ たり、調整できる。このため、高級言語で与えられたアルゴリズムを実現する HDLを 記述すること力 Sできる。し力、しながら、逆に、特定のハードウェアを前提として記述され るので、汎用性はなぐハードウェアが異なれば同一のアルゴリズムを実現することは 不可能である。また、 HDLが対象としているハードウェアが分からなければ HDLに 含まれてレ、るアルゴリズムを理解することもできなレ、。
[0008] 高級言語を特定のハードウェア用にコンパイルした結果として得られるマイクロプロ グラムのレベルでは、完全に独立して実行可能な命令を並列に記述する VLIW技術 、複数の命令を同時にフェッチして並列実行できる命令を見つけ出して実行するス 一パスケーラ技術がある。これらは時間的に並んだ処理のうち、それを実行するため に用意された複数のパイプラインで空間的に並列に実行できるものを並列に処理し て実行速度を改善する技術であり、時間的な順番に齟齬がおきない範囲を空間的に 広げる点では高級言語と変わりはない。すなわち、マイクロプログラムもプログラム言 語であり、プログラムカウンタを進めて命令を順番に実行するシーケンシャルな処理 は VLIWやスーパスケーラにおいても同様に必要とされる。さらに、マイクロプロダラ ムは、特定のハードウェアを前提としており、 HDLと同様に汎用性は少ない。
[0009] このように、プログラムカウンタを進めて実行するプログラム言語では、高級言語で あれば汎用性があり、ソフトウェア設計は行い易レ、が、並列処理に展開できる部分は プログラムカウンタを進めても独立して実行できる処理に限られてしまい、多数の並 列処理に適した演算ユニットを有効に利用することは難しい。ハードウェア依存のな い高級言語では、さらに、並列処理のタイミングも分からないので、マトリクス状に配 置された多数の演算ユニットを並列に動作させてアプリケーションを効果的に実行す る設計は不可能である。一方、 HDLは並列処理の記述は可能である力 ァルゴリズ ムを記述したとしても特定のハードウェアを前提としてアルゴリズムが記述できるだけ なので、特定のハードウェアの知識が必要である。したがって、マトリクス状に配置さ れた多種類の演算ユニットの機能および入出力のタイミングなどをソフトウェア技術者 が理解し、アプリケーションを HDLで設計することは無理がある。 発明の開示
[0010] 本発明においては、並列に動作する複数の要素を備えたシステムにより、同期して 独立に行われる複数の並列処理をそれぞれ規定した複数の並列記述を有する定義 ファイルを提供する。複数の並列記述は、他の並列処理の出力データが入力される データ入力を少なくとも含む複数のデータ入力を備えた第 1の並列処理を示す第 1 の並列記述であって、それら複数のデータ入力には当該システムに入力されてから のレイテンシ一が同一のデータが入力されることを示す第 1の並列記述を含む。この 定義ファイルにより、ハードウェア依存性のない記述により、プログラムカウンタの必要 のない形態でアルゴリズムを定義することができる。すなわち、この定義ファイルにより 、従来の高級言語と類似した記述ではあるが、時間順序性のない並列記述により、ァ ルゴリズムに含まれる順序を時間的にではなく空間的に記述できる。
[0011] この定義ファイルは、処理させる仕事(アプリケーション)の手順を定義している点で は、従来のプログラム言語と共通する。し力しながら、プログラム言語は、記述された コンピュータに対する命令が、原則として最初から順番に、すなわち、時間的経過と 共に実行されるものとして記述している。したがって、プログラム言語により定義され たアルゴリズムを実行するためには、実行する命令の順番を示すプログラムカウンタ による制御が必要となる。一方、プログラムに記述された命令はプログラムカウンタに より順番に実行されるので、変数を含む命令を実行する際は、その命令に時間的に 先行して実行される命令により変数の状態は一義的に決まる。したがって、定義され たアルゴリズムは確実に実行され、実行できなくなるようなことは起こらなレ、。
[0012] 本発明の定義ファイルは、同期して独立に行われる複数の並列処理をそれぞれ規 定した複数の並列記述を有する。したがって、本発明の定義ファイルに定義された並 列処理を実行するには、時間的な順番を示すプログラムカウンタは必要としなレ、。さ らに、この定義ファイルでは、他の並列処理の出力データが入力される並列処理を 示す並列記述を含むことによりアルゴリズムを定義できる。し力しながら、変数を含む 並列記述では、変数の経過が一義的に定まらないとアルゴリズムが意図した通りに実 行できなくなる可能性がある。そこで、複数のデータ入力を備えた第 1の並列処理を 示す第 1の並列記述においては、それら複数のデータ入力には、当該システムに入 力されてからのレイテンシ一が同一であるデータが入力されると解することにより、変 数が不安定あるいは不確定になることを防止している。したがって、本発明の定義フ アイルでは、並列記述毎に変数が一義的に定まり、アルゴリズムを並列記述により正 確に定義できる。また、本発明の定義ファイルでは、並列記述にしたがって並列処理 は完全に独立して実行され、同期通信などの余分な処理がなくても、また、ハードウ エアを特定することによりタイミング問題を解決しなくても、アルゴリズムを正確に記述 できる。
[0013] 本明細書において、入力されるデータのレイテンシ一が同一とは、それらの入力さ れるデータが、同期してシステムにロードされたデータ(データ群)である力、、または、 その同期してロードされたデータ(データ群)のいずれかであり、 1つまたは複数の並 列処理により処理されたデータであることを言う。すなわち、レイテンシ一が同一のデ ータとは、システムに入力されたタイミングが同一のデータ、またはそれらのデータが 他の並列処理により加工されたものである。
[0014] 本発明の定義ファイルは、 HDLと同様に複数の並列記述からなり、複数の並列記 述により並列処理を実行するためのプログラムカウンタは不要である。したがって、定 義ファイルは、ハードウェアを記述していると言える。さらに、定義ファイルは、他の並 列処理の出力データが入力されるデータ入力を備えた並列処理を示す並列記述を 含み、複数のデータ入力がある場合もそれらに入力されるデータは一義的に決まる。 したがって、本発明により、アルゴリズムを正確に、そして、ユーザが見て分かるように 定義できるハードウェア記述言語を提供できる。さらに、ハードウェアの詳細が分から なくても各々の並列処理に入力されるデータは一義的に決まるので、実際に並列処 理を行うハードウェアの詳細な情報あるいは知識は不要である。したがって、本発明 の定義ファイルは、実際のハードウェアに依存せず、特定のハードウェアを前提にし ないでハードウェアを記述できる。このため、ハードウェアインディペンデントで、極め て汎用的なハードウェア記述言語である。したがって、ソフトウェア技術者が簡単に L SIあるいは ASIC、特に、並列処理要素を多数含んだ LSIあるいは ASICの設計ある いは生成するのに適したツールあるいは記述となる。
[0015] さらに、本発明の定義ファイルに含まれる複数の並列記述を、それらに入力される データのレイテンシ一の順番に並べると、複数の並列記述が、それに含まれる変数 の時間経過の順番で並ぶことになる。この状態は、命令が実行される順番に並んだ プログラムと同じである。したがって、ソフトウェア技術者は、普通にプログラムを作成 するのと同じ感覚で、本発明の定義ファイルを作成することが可能である。この点でも 、定義ファイルは、ソフトウェア技術者が簡単に LSIあるいは ASICを設計あるいは生 成するのに正に適したツールとなる。そして、本発明の定義ファイルにより、並列処理 が可能な複数の要素により、アルゴリズムを空間的に割り付けることが可能となり、多 数の並列に動作する要素を備えたシステムを有効に活用してアプリケーションを高速 で実行できる。
[0016] 本発明の定義ファイルにおいては、並列記述毎に、入力データのレイテンシ一が 同一と判断され、タイミングが調整される。したがって、定義ファイルに従いハードウヱ ァを生成する場合は、並列記述により規定される並列処理の単位で入力データのタ イミングを調整する必要がある。並列処理を実行するための要素は、ビット単位で演 算を行う演算ユニットであっても良い。 ALUなどのある程度の規模の演算機能を備え た演算ユニットがマトリクス状に配置された並列処理システムにおいては、並列記述 に対して 1つまたは数個の演算ユニットを割り当てることにより並列処理を実行できる 。したがって、並列記述単位でタイミングを調整するためには、遅延用の演算ユニット をカ卩えれば良ぐ本発明の定義ファイルは、複数種類の演算ユニットを接続してアブ リケーシヨンに適したハードウェア構成を実現する並列処理システムを記述するのに 適している。このため、本発明の定義ファイルにより、並列処理システムを効率的に設 計および開発することができ、また、シミュレートすることが可能となる。
[0017] 本発明の定義ファイルは、コンピュータ読み取り可能な記録媒体に記録して提供す ること力 Sでき、定義ファイルに基づき、コンピュータを用レ、て、並列に動作する複数種 類の要素を備えた並列処理システムを生成できる。すなわち、定義ファイルの複数の 並列記述には、他の並列処理の出力データが入力されるデータ入力を少なくとも含 む複数のデータ入力を備えた第 1の並列処理を示す第 1の並列記述が含まれている 。この定義ファイルに従レ、、複数種類の要素の情報を記録したハードウェアライブラリ に基づき、定義ファイルの並列記述に規定された並列処理を実行するための回路構 成 (ハードウェア構成)であって、複数種類の要素の少なくともいずれ力を備えた回路 構成を含むハードウェア構成情報を生成する第 1の工程と、第 1の並列処理を実行 するための回路構成の複数のデータ入力に、当該並列処理システムに入力されてか らのレイテンシ一が同一のデータが入力されるように、ハードウェア構成情報に遅延 要素をカ卩える第 2の工程とを有する生成方法により、定義ファイルに定義されたアル ゴリズムを複数種類の要素により空間的に割り付けるためのハードウェアを構成する 情報を生成でき、アプリケーションを実行する並列処理システムを生成できる。
[0018] 特定のハードウェアに関する情報が格納されたハードウェアライブラリにより各種類 の要素で消費される時間(サイクル数)が分かる。したがって、並列処理が複数のデ ータ入力を備えている場合に、ハードウェアライブラリを参照することにより、それら複 数のデータ入力に入力されるデータのレイテンシ一が一致するように、特定のハード ウェアを前提とした遅延要素をカ卩えることができ、特定のハードウェアに定義フアイノレ に定義されたアルゴリズムを正確に割付できる。複数の要素がクロックに同期して処 理を実行するハードウェアであれば、ハードウェアライブラリには、複数種類の要素の それぞれにおいて消費されるサイクル数を含む情報が格納されており、第 2の工程で は、複数種類の要素の少なくともいずれかにおいて消費されるサイクル数に相当する 遅延要素が加えられる。
[0019] 並列処理システムは、ハードウェア構成が固定されるものであってもよレ、。並列処理 システムは、複数種類の要素の接続を変えることにより異なるハードウェア構成を再 構成可能なものであっても良レ、。再構成可能な並列処理システムに対しては、複数 の異なるハードウェア構成を示す情報を備えているハードウェア構成情報が出力され る。
[0020] 並列処理システムを生成する本発明の方法は、並列に動作する複数種類の要素を 備えたシステムを生成する装置、例えばコンパイラとしても提供することが可能である 。このコンパイラは、定義ファイルに基づき、並列に動作する複数種類の要素を備え た並列処理システムを生成する生成装置であって、複数種類の要素の情報を記録し たハードウェアライブラリに基づき、定義ファイルの並列記述に規定された並列処理 を実行するための回路構成であって、複数種類の要素の少なくともいずれ力、を備え た回路構成を含むハードウェア構成情報を生成する第 1の手段と、第 1の並列処理を 実行するための回路構成の複数のデータ入力に、当該並列処理システムに入力さ れてからのレイテンシ一が同一のデータが入力されるように、ハードウェア構成情報 に遅延要素を加える第 2の手段とを有する。また、並列システムを設計するプロセスを 適当なリソースを備えたコンピュータにより実現するためのプログラムあるいはプログ ラム製品として適当な記録媒体に記録したり、コンピュータネットワークを用いて提供 することが可能である。この並列処理システムを設計するためのプログラムは、上述し た第 1の工程と、第 2の工程と備えたプロセスをコンピュータにおいて実行可能な命 令を有するプログラムである。
[0021] 本発明の定義ファイルは、複数種類の要素が、単体で 1つの並列処理を処理可能 な規模の複数種類の演算ユニットを備えた並列処理システムを生成するのに適して いる。したがって、ハードウェアライブラリには、単体で 1つの並列処理を処理可能な 程度の規模の複数種類の演算ユニットの情報を用意することが望ましい。また、複数 種類の要素はビット単位で演算するものであっても良レ、。し力 ながら、定義ファイル に記述される並列処理は一般にバイトあるいはワード単位のデータ処理である。した がって、ハードウェアライブラリには、バイトあるいはワード単位で異なった演算を実行 可能な複数種類の演算ユニットの情報を用意し、複数の演算ユニットが配置された 並列処理システムを生成することが望ましい。
[0022] 予め複数種類の演算ユニットがマトリクス状に配置され、演算ユニットを接続するネ ットワークあるいは回路配線の構成を変更することにより、異なるハードウェア構成を 再構成可能な並列処理システムに対しては、コンパイラまたはコンパイラ用のプログ ラムにより、定義ファイルの内容を実行するのに適した、複数の異なるハードウェア構 成を示す情報を備えたハードウェア構成情報を出力することができる。
[0023] 定義ファイルに基づいて並列処理システムを生成する際には、幾つかの最適化を 施すことができる。複数の並列記述が、第 3の並列記述により規定された第 3の並列 処理の少なくとも一部と同じ共通処理を含む第 2の並列処理を規定する第 2の並列 記述を含んでいる場合は、第 1の工程では、共通処理に対して、複数種類の要素の 少なくともいずれかを含む共通の回路構成を生成し、第 2の工程では、第 2の並列処 理および共通処理の差分を実行するための回路構成を、第 1の並列処理を実行する ための回路構成として、遅延要素をカ卩えることができる。第 2の並列処理および共通 処理の差分を実行するための回路構成は、第 1の並列処理と同様に複数のデータ 入力を備えたものとなるからである。これにより、回路を構成するための要素および、 要素を繋ぐ配線などのハードウェアリソースの消費を抑制できる。
[0024] 並列処理システムを構成する複数種類の演算ユニットは、外部入力により処理を変 更する手段を備えていても良い。それに対応して、複数の並列記述には、外部入力 により処理が変更する並列処理を記述する並列記述を含められるようにすることが望 ましい。ネットワークあるいは回路配線を変更しないでも処理内容を変更することがで きる並列処理システムの設計が可能となる。ネットワークあるいは回路配線と共に演 算ユニットの処理内容を変更することも可能であり、さらにフレキシブルにリコンフイダ ラブルな並列処理システムの設計が可能となる。
[0025] 本発明の定義ファイルに基づき、並列に動作する複数種類の要素を備えたシステ ムをシミュレートすることが可能である。定義ファイルに基づき、並列に動作する複数 種類の要素を備えたシステムをシミュレートする方法およびシミュレータは、定義ファ ィルに含まれる複数の並行処理を同期して実行する工程または手段を有し、この実 行する工程では、複数の入力データを備えた並列記述を実行する際に、それら複数 の入力データに、当該システムに入力されてからのレイテンシ一が同一のデータを用 いる。また、定義ファイルに基づき、並列に動作する複数種類の要素を備えたシステ ムをコンピュータによりシミュレートするためのプログラムあるいはプログラム製品も本 発明により提供され、 CD— ROMなどの適当な記録媒体に記録したり、コンピュータ ネットワークを介して提供することができる。
図面の簡単な説明
[0026] [図 1]図 1は、定義ファイルである DIDLからハードウェア構成情報である DDDLを生 成する概略構成を示す。
[図 2]図 2は、再構成可能な並列処理システムの概要を示す。
[図 3]図 3は、独立に並列に動作する複数のエレメントがマトリクス状に配置された並 列処理システムを示す。 [図 4]図 4 (a)は、 DIDLの例を示し、図 4 (b)は、 DIDLの異なる例を示す。
[図 5]図 5は、コンパイラの概略処理を示すフローチャートである。
[図 6]図 6は、コンパイラの概略構成を示すブロック図である。
[図 7]図 7 (a)は、 DIDLの例を示し、図 7 (b)は、それに対応する回路構成を示す。
[図 8]図 8 (a)は、 DIDLの異なる例を示し、図 8 (b)は、最適化された例を示し、図 8 ( c)は、それに対応する回路構成を示す。
[図 9]図 9 (a)は、 DIDLのさらに異なる例を示し、図 9 (b)は、それに対応する回路構 成を示す。
[図 10]図 10は、 DIDLのさらに異なる例を示す。
[図 11]図 11は、図 10に示す DIDLに対応する回路構成を示す。
[図 12]図 12は、図 11に示す回路構成をマトリクスユニットに割り付けた状態を示す。
[図 13]図 13は、 DIDLレベルでシミュレートする概略構成を示す。
[図 14]図 14は、 DIDLレベルのシミュレータの処理の概要を示すフローチャートであ る。
発明を実施するための最良の形態
[0027] 図 1に、本発明の定義ファイルを用いてハードウェアを設計する過程を示してある。
疋義ノア ノレ I f DIDL (Device Independent Description
Language)と称されており、コンパイラ 2によりハードウェアライブラリ 3の情報を参照し て、ライブラリ 3に格納されたハードウェアを用いたハードウェア構成情報 4に変換さ れる。ハードウェア構成情報 4は、 DDDL (Device Dependent Description
Language)と称されている。コンパイラ 2は適当なハードウェア資源を備えた汎用的な コンピュータ 9を用いて実現されており、 DIDL1を解釈して DDDL4を出力する並列 システム設計用のプログラム 5がインストールされることによりコンパイラとして機能す る。したがって、 DIDL1は、コンピュータ読み取り可能な記録媒体 6、例えば CD— R OMあるいは磁気ディスクなどに記録されて提供される。インターネットなどのコンビュ ータネットワークによる通信を用いて提供することも可能であり、提供された DIDL1は 、コンピュータ 9の一部となる適当な記録媒体に記録されて使用される。
[0028] 図 2に、並列処理システムを備えたプロセッサの一例を示してある。このプロセッサ は、本出願人の国際公開 WO03/007155号に開示されている再構成可能なプロ セッサ(RP、 Reconfigurable Processor)である。この RP20は、プログラムなどによつ て与えられる命令セットに基づきエラー処理を含めた汎用的な処理を行う汎用的な 構成の基本プロセッサ 21と、マトリクス状に配置された演算あるいは論理エレメントに より特定のデータ処理に適合した 1つまたは複数のデータパス(データフローあるい は擬似データフロー)がバリアブルに形成される AAP (Adaptive Application Processor)ユニット(以降では AAP) 50と、この AAP50からの割り込み処理を制御す る割り込み制御ユニット 22と、 AAP50に作動用のクロック信号を供給するクロック発 生部 28と、この RP20で提供可能な演算回路のフレキシビリティーをさらに向上する ための FPGAユニット 27と、外部に対するデータの入出力を制御するバス制御ュニ ット 29とを備えてレヽる。基本プロセッサ 21と AAP50は、これらの間でデータを交換可 能なデータバス 24aと、基本プロセッサ 21から AAP50の構成および動作を制御する ための命令バス 24bとにより接続されている。また、 AAP50から割り込み制御ュニッ ト 22に信号線 25を介して割り込み信号が供給され、 AAP50における処理が終了し たり、処理中にエラーが発生したときは AAP50の状態を基本プロセッサ 21にフィー ドバックできるようになってレ、る。
[0029] AAP50と FPGA27との間もデータバス 26により接続されており、 AAP50力ら FP GA27にデータを供給して処理を行い、その結果を AAP50に返せるようになつてい る。さらに、 AAP50は、ロードバス 23aおよびストアバス 23bによってバス制御ュニッ ト 29と接続されており、 RP20の外部のデータバスとの間でデータを交換できるように なっている。基本プロセッサ 21もバス 21aによりバス制御ユニット 29と接続されており 、外部のデータパスとの間でデータを交換できる。
[0030] 図 3に AAP50の概要を示してある。 AAP50は、複数の算術および Zまたは論理 演算を行う論理要素(論理ブロックあるいは論理ユニット(以降ではエレメントと称する ) )がマトリクス状に配置されたマトリクス部 51と、そのマトリクス部 51に対してデータを 供給する入力バッファ 52aと、マトリクス部 51から出力されるデータを格納する出カバ ッファ 52bを備えている。これら入力バッファ 52aおよび出力バッファ 52bは、それぞ れ 4つの小容量の入力メモリにより構成されており、アクセス調停ユニット 54を介して 入出力バス 23aおよび 23bに接続される。
[0031] このマトリクス部 51が、データパスあるいはデータフローを再構成可能な並列処理 システムの中心となる集積回路区画であり、並列に動作する複数種類の演算ユニット であるエレメント 55が縦方向に 4つのラインを構成するようにアレイ状あるいはマトリク ス状に配置されている。そして、マトリクス 51に含まれている複数種類のエレメントの 情報がハードウェアライブラリ 3に格納されている。このマトリクス部 51は、これらのェ レメント 55の間に配置された、横方向に延びた行配線群 57と、縦方向に延びた列配 線群 58とを備えている。列配線群 58は、列方向に並んだ演算ユニット 55の左右に 分かれて配置された配線群 58xおよび 58yが 1対になっている。行配線群 57および 列配線群 58との交点にはスイッチングユニット 59が配置されており、行配線群 57の 任意のチャンネルを、列配線群 58の任意のチャンネルに切り替えて接続できるように なっている。各々のスイッチングユニット 59は、設定を記憶するコンフィグレイシヨン R AMを備えており、プロセッサ部 21から供給されるデータによりコンフィグレイシヨン R AMの内容を書き換えることにより、行配線群 57と列配線群 58の接続を動的に任意 に制御できる。このため、このマトリクス部 51においては、複数のエレメント 55の全部 あるいは一部が配線群 57および 58により接続されて形成されるデータフローの構成 を任意に動的に変更することができる。
[0032] RP20においては、これらのエレメント 55が並列に動作し、各種類のエレメント 55の 機能、遅延、入出力データの条件などの情報がハードウェアライブラリ 3に格納されて いる。また、これらのエレメント 55は、クロック発生部 28から供給されるクロック信号に 同期して稼動するので、種類あるいはエレメント内部で実行される処理により消費さ れるサイクル数 (クロック数)が決まる。したがって、ハードウェアライブラリ 3には各種 類のエレメント毎に、入力データを処理して出力するために消費されるサイクル数が 遅延情報として格納されている。さらに、各種類のエレメント 55の配置と、配線群 57 および 58、スイッチングユニット 59の情報もハードウェアライブラリ 3に格納されており 、コンパイラ 2からは、 DIDL1に定義されたアルゴリズムを実現するための、エレメント 55の接続情報(データフロー構成)がハードウェア構成情報 (DDDL) 4として出力さ れる。このため、 DDDL4に従ってエレメント 55が配線群 57および 58で接続されるよ うにマトリクス部 51を制御することにより、 DIDL1に定義されたアルゴリズムをマトリク ス部 51のエレメント 55により空間的に割り付けることが可能となる。
[0033] 各エレメント 55は、 1組の列配線群 58xおよび 58yのそれぞれ力 入力データを選 択するための 1組のセレクタ 53と、選択された入力データに特定の算術および/また は論理演算処理を施し、出力データとして行配線群 57に出力する内部データパス 部 56を備えている。そして、本例のマトリクス部 51には、各行毎に異なる処理を行う ための内部データパス部 56を備えた種類の異なるエレメント 55が並んで配置されて いる。例えば、第 1行目に配列されたエレメント 55は、入力バッファ 52aからのデータ を受信する処理に適したデータパス部(LD) 56iを備えている。第 2行目に配置され たエレメント 55aは、入力バッファ 52aに外部デバイスからデータを書き込むためのェ レメントであり、ブロックロードするためのアドレスを発生するのに適した内部データパ スを具備するデータパス部(BLA) 56aを備えている。マトリクス 51を構成する全ての エレメント 55は、内部データパスの構成あるいは初期値などがある程度変更できるよ うになつている。その設定は、各々のエレメント 55のコンフィグレイシヨン RAMに、制 御バス 24bを介して基本プロセッサ 21から制御信号により指示される。
[0034] 第 3行目に配置されたエレメント 55bは、入力 RAMの各々より所望のデータをマトリ タス部 51へロードする入力読み出しアドレスを発生するデータパス部(LDA) 56bを 備えている。第 4行目および第 5行目に配列されたエレメント 55cは、算術演算および 論理演算に適したデータパス部(SMA) 56cを備えている。このデータパス部 56cは 、たとえば、シフト回路、マスク回路、論理演算ユニット ALUおよび ALUで処理する 演算をセットするコンフィグレイシヨン RAMを備えている。したがって、プロセッサ 21 が書き込んだ命令により、マトリクス部 51へ入力されたデータを加算あるいは減算し たり、比較したり、論理和あるいは論理積を取ったりすることができ、その結果がエレメ ント 55の出力信号として出力される。
[0035] その下の行に配列されたエレメント 55dは、データが伝送されるタイミングを遅延す る処理に適したデータパス部(DEL) 56dを備えている。その下の行に配列されたェ レメント 55eは、乗算器などを含む乗算処理に適したデータパス部(MUL) 56eを備 えている。さらに異なるエレメント 55fとしては、マトリクス部 51の外部に用意された FP GA27とのインターフェイス用のデータパス部 56fを備えたエレメントも用意されており 、データをいつたん FPGA27に供給して処理した後、再びマトリクス部 51に戻して処 理を継続することができる。
[0036] 再構成可能な集積回路区画であるマトリクス部 51には、さらに、ストア用のアドレス を発生するのに適したデータパス部 56gおよび 56hをそれぞれ備えたエレメント 55g および 55hが配置されている。これらは、出力バッファ 52bを介して外部デバイスにデ ータを出力するための制御を行う。そして、最下段には、ストア用にデータを出力する のに適したデータパス部(ST) 56sを備えたエレメント 55が配列されている。したがつ て、マトリクス部 51を用いて、エレメント 55の接続を動的に変更することにより、様々な データフローをフレキシブルに構成でき、様々な処理を行うことができる。
[0037] 図 4 (a)および図 4 (b)に、 DIDLの簡単な例を示してある。図 4 (a)に示した DIDL1 Oaは 2行の並列記述 11aおよび l ibを有している。並列記述 11 aは、変数 aに変数 b を代入する処理 12aを規定している。また、並列記述 l ibは、変数 cに変数 aを代入 する処理 12bを規定している。したがって、処理 12bは、他の処理 12aの出力データ をデータ入力とする処理となる。これらの処理 12aおよび 12bは、並列に動作する要 素により同期して独立に行われる並列処理であり、 DIDLlOaはそれらの並列処理 1 2aおよび 12bを同期して独立に実行するハードウェア構成を示している。この DIDL 10aにより定義されたハードウェアにおいては、あるサイクル tOで変数(a、 b、 c)が(1 、 2、 3)であれば、次のサイクル tlで変数(a、 b、 c)は(2、 2、 1)となる。
[0038] 一方、この DIDLlOaの記載がプログラム 19aだと理解すると、変数 cは 2になるので 、得られる結果は異なる。し力 ながら、サイクル tlに続く次のサイクル t2において、 DIDLlOaにより定義されたハードウェアにおいては、変数(a、 b、 c)は(2、 2、 2)とな り、 DIDLlOaの記載がプログラム 19aであると理解した場合と同じ結果が得られる。
[0039] 図 4 (b)に示した DIDLlOa'は、並列記述 1 laおよび 1 lbの順番が入れ替わって いる力 それぞれの記述に対応する処理 12aおよび 12bが独立して行われるので各 サイクル tO— 12における演算結果は変わりなレ、。これに対し、図 4 (b)の記述がプロ グラム 19bであると理解すると、処理 12aと 12bの順番が入れ替わるので、変数(a、 b 、 c)は(2、 2、 1)となる。すなわち、処理が入れ替わったプログラムの結果は、 DIDL 10aまたは 10bのサイクル tlにおける値に合致する。
[0040] このように、 DIDLlOaにより、プログラム 19aおよび 19bのいずれのアルゴリズムも 実現するハードウェアを記述できる力 プログラム 19aおよび 19bと同一の結果が得ら れるサイクルが異なる。そこで、本発明においては、 DIDLlOaを、少なくとも 1つの他 の並列処理の出力データを少なくとも 1つのデータ入力とする並列処理を示す並列 記述によりアルゴリズムを並列システムに割り付ける定義ファイルとし、さらに、複数の データ入力を備えた並列処理 (第 1の並列処理)を示す並列記述(第 1の並列記述) においては、それら複数のデータ入力には、システム、すなわちマトリクス 51に入力 されてからのレイテンシ一が同一であるデータが入力されると規定することにより、プ ログラムと同一のアルゴリズムにより演算が可能なハードウェア構成を定義できるよう にしている。
[0041] 図 5に、 DIDL用のコンパイラ 9の概略処理を示してある。まず、ステップ 31で DIDL 1を読み込み、ステップ 32で DIDL1に含まれた並列記述を解釈する。そして、ハード ウェアライブラリ 3に格納されたハードウェア構成に基づき、並列記述に示された並列 処理を行う回路構成を生成する。図 3に示した再構成可能なプロセッサのマトリクス部 51により並列処理を行うハードウェア構成情報 4を生成するために、ハードウェアライ ブラリ 3に格納された、各種のエレメント 55の情報と、酉己線 57および 58とスィッチ 59 の情報とを用レ、、エレメント 55を備え、並列に動作する回路構成を生成し、ハードウ エア構成情報の DDDL4としてコンパイラ 2の適当なメモリに格納する。各エレメント 5 5の情報としては、例えば、演算機能、入力条件、処理サイクルがある。マトリクス部 5 1では、各エレメント 55の個数および配置は決まっているので、並列処理を行う回路 構成のハードウェア情報 4としては、並列処理のために選択されたエレメント 55と、そ の位置および選択されたエレメント 55を接続する配線ノレートといった回路情報を含 むものが生成される。
[0042] ステップ 32において生成された回路構成が複数のデータ入力を備えている場合は 、ステップ 33において、それら複数のデータ入力に、並列処理システム、すなわちマ トリタス部 51に入力されてからのレイテンシ一が同一のデータが入力されるように、遅 延要素となるデータパス部(DEL) 56dを備えたエレメント 55dの情報を DDDL4に加 える。したがって、 DIDL1に、他の並列処理の出力データが入力されるデータ入力 を少なくとも含む複数のデータ入力を備えた第 1の並列処理を示す第 1の並列記述 が含まれている場合は、第 1の並列処理を実行するためにステップ 32において生成 された回路構成の複数のデータ入力に、並列処理システムに入力されてからのレイ テンシ一が同一のデータが入力されるように、ステップ 33において、ハードウェア構 成情報である DDDL4に遅延要素を加える。
[0043] さらに、ステップ 32および 33では、幾つかの最適化が行われる。 DIDL1に含まれ る並列記述により規定された並列処理(第 2の並列処理)が、他の並列記述により規 定された並列処理 (第 3の並列処理)の少なくとも一部と同じ共通処理を含む場合は 、ステップ 32では、共通処理に同一のエレメント 55を含む共通な回路構成を割り当 て、ステップ 33では、共通構成に含まれないエレメント 55、すなわち、第 2の並列処 理および共通処理の差分を実行するための回路構成に対して、必要であれば遅延 エレメント 55dを加えてレイテンシーを調整する。
[0044] そして、ステップ 34において、ステップ 32および 33で生成された回路構成とそれら を接続する情報を含む DDDL4を出力する。マトリクス部 51は、複数のエレメント 55 の接続を変えることにより異なるハードウェア構成を再構成可能となっている。このた め、 DDDL4は、複数の異なるハードウェア構成を示す情報となっており、 DDDL4 によりマトリクス部 51を再構成することができる。これらのステップは、 DIDL1に含ま れる並列記述を個別に読み込んで行うことも可能であり、 DIDL1に含まれる全てある いは一部の並列記述を読み込んで行うことも可能である。
[0045] これらのステップ 31— 34を含む並列処理システムの生成方法は、ステップ 31— 34 の各工程を汎用コンピュータ 9で実行可能なコンパイラプログラムあるいはプログラム 製品 5として適当な記録媒体に記録して提供することができる。また、ネットワークを 介してプログラム製品を提供することも可能である。そして、汎用コンピュータ 9にプロ グラム 5をインストールすることにより汎用コンピュータをコンパイラ 2として使用できる。 したがって、コンパイラプログラム 5をインストールされたコンピュータ 9は、図 6に示す ように、 DIDL1を読み込む機能 35と、ハードウェアライブラリ 3に基づき、 DIDL1に 記述された並列処理を実行するための回路構成を生成する機能 (第 1の手段) 36と、 回路構成が複数のデータ入力を備えている場合は、それら複数のデータ入力に対し 、マトリクス部 51に入力されてからのレイテンシ一が一致するデータが供給されるよう に遅延エレメント 55dを加える機能(第 2の手段) 37と、生成された回路構成を、エレ メント間の接続情報を含めて DDDL4として出力する機能 38を備えたコンパイラ 2とし て動作する。
[0046] 図 7 (a)に、異なる DIDLの例を示してある。この DIDLlObには、システム、本例で はマトリクス部 51に入力される変数を示す記述 11cと、内部変数を示す記述 l idと、 足し算を示す記述 l ieとが含まれている。この DIDLlObがコンパイラ 2に読み込まれ て処理されると、図 7 (b)に示すように、算術演算が可能なデータパス 56cを備えた演 算エレメント 55cを有する回路構成 18bが生成される。この回路構成 18bは、演算ェ レメント 55cに、変数 bと cが入力される 2つのデータ入力と、変数 aが出力されるデー タ出力とを備えている。
[0047] 図 8 (a)に、さらに異なる DIDLの例を示してある。この DIDLlOcには、変数に関す る記述 11cおよび l idに加え、 2つの並列処理 12fおよび 12gを示す並列記述 l lfお よび l lgが含まれている。この DIDLlOcがコンパイラ 2に読み込まれると、並列処理 12fおよび 12gは共通した処理を含んでいるので、ステップ 32において、共通の部 分に対して共通の回路構成 17cが生成される。すなわち、 DIDLlOcは、図 8 (b)に 示すように、並列処理 12gが並列処理 12g'に最適化される。
[0048] 差分の処理を行う並列処理 12§Ίま、他の並列処理 12fの出力データ「a」が入力さ れるデータ入力と、他の並列処理 12fを経ないデータ「d」が入力されるデータ入力と を含む複数のデータ入力を備えた第 1の並列処理となる。したがって、並列処理 12g 'を実行する回路構成に含まれる演算エレメント 55cは、変数 aが供給される入力と、 変数 dが供給される入力とを備えている。変数 aは、マトリクス部 51に入力される変数 bおよび cに対し、演算エレメント 55cの処理サイクル分だけ遅れる変数である。また、 変数 dは、他の変数 bおよび cと同時にマトリクス 51に入力される変数である。このため 、ステップ 33においては、並列処理 12g'を行うエレメント 55cに入力される変数 aと変 数 dとのレイテンシーを調整するように、マトリクス部 51に入力される変数 dを、並列処 理 12fを行う演算エレメント 55cのサイクル数分だけ遅らせる遅延エレメント 55dが揷 入される。
[0049] 演算エレメント 55cで足し算を行った場合に消費されるサイクル数は、ハードウェア ライブラリ 3に格納されている。このため、ステップ 33においては、ハードウェアライブ ラリ 3に格納されている情報に基づき、足し算のエレメントにおいて消費されるサイク ル数に相当するサイクルを消費する遅延エレメント 55dが DDDL4に追加される。そ の結果、 DDDL4は、図 8 (c)に示す回路構成 18cを含むハードウェア構成情報を含 んで生成され、ステップ 34においてコンパイラ 2から出力される。なお、以降では、説 明を簡単にするために、特に記載しないかぎり、エレメントにおいては 1サイクルで処 理されるものとして説明する。
[0050] 図 9 (a)に、さらに異なる DIDLの例を示してある。この DIDLlOdには、変数に関す る記述 11cおよび l idにカ卩え、 4つの並列処理 12h— 12kを示す並列記述 l lh— 11 kが含まれている。この DIDLlOcがコンパイラ 2に読み込まれると、まずは、回路構成 を生成するステップ 32において、並列処理 12h— 12kを実行するための演算エレメ ント 55cを用いた回路構成が生成される。並列処理 12kに入力される 1つの変数 cは 、マトリクス 51に入力された変数(以降ではシステム入力変数) aを入力とする並列処 理 12hの出力である。また、並列処理 12kに入力される他の変数 eは、システム入力 変数 aおよび bを入力とする並列処理 12iの出力をさらに入力とする並列処理 1 ¾の 出力である。したがって、レイテンシーを調整する工程 33においては、並列処理 12k に入力される変数 cと変数 eとのレイテンシーを調整するために、変数 eに対して変数 cを遅らせて最後の足し算を行うエレメント 55cのデータ入力に供給するための遅延 エレメント 55dが追加される。その結果、図 9 (b)に示す回路構成 18dが生成され、複 数のエレメント 55を接続するハードウェア構成情報、すなわち DDDL4としてコンパィ ラ 2から出力される。
[0051] 図 9 (a)の記述をプログラム 19dとして考えた場合、処理 12h— 12kは時間軸に従 つて上から順番に行われる。したがって、処理 12kで演算される変数 cおよび変数 e は、それぞれ、先行する処理 12hおよび 1¾によりそれぞれ決定されたものとなる。一 方、図 9 (a)の記述を単に並列実行される複数の処理の記述であると考えると、並列 処理 12kの変数 cおよび変数 eは、 1サイクル前に定まった値となり、プログラム 19dと して考えた場合と処理 12kの出力が異なる。これに対し、図 9 (a)の記述が本発明の 定義ファイル、すなわち DIDLlOdであるとすると、並列処理 12kの変数 cおよび変数 eは、レイテンシ一が同一であると解釈される。したがって、 2サイクル前に確定した変 数 cが遅延エレメント 55dを介して 1サイクル前に確定した変数 eと同期を取って並列 処理 12kに入力される。その結果、並列処理 12kの出力 fは、変数 aおよび bを入力し てから 3サイクル後にプログラム 19dと同じになり、並列処理を記述した DIDLlOdに よりプログラム 19dと同じ結果が得られる。
[0052] 並列処理を記述した DIDLlOdは、それに含まれる記述 l lh I lkの順番を変え ても処理される内容は同じである。これに対し、プログラム 19dは、処理がならんだ順 番、すなわち、時系列でアルゴリズムを定義しているので、記述を入れ替えると処理さ れる内容は異なる。し力、しながら、複数の並列記述に対して入力変数のレイテンシー が同一になるという定義を導入することにより、プログラムとして記述されたファイルを 、並列処理を定義するファイル、すなわち、ハードウェアを定義するファイルとして理 解すること力可能となる。この結果、プログラマ一は、普通に時系列に従ってアルゴリ ズムを示したプログラムを記述することにより、並列処理システムのハードウェアを記 述する本発明の定義ファイルを作成することが可能となる。したがって、本発明の定 義ファイルである DIDLを用いることにより、プログラマ一はプログラムを作成するのと 同じ感覚でハードウェア設計を行うことができる。
[0053] さらに、定義ファイルでは、並列処理に入力される変数のレイテンシ一が同一と理 解されるだけであり、特定のハードウェアを前提としなレ、。すなわち、レイテンシ一が 同一の入力変数は、同期して、あるシステム(本例ではマトリクスユニット 51)にロード されたデータ群に含まれるもの力、、またはその同期してロードされたデータ群のいず れかが、他の並列処理により処理されたものである、同期してシステムに入力された 変数由来であること以外は、実際のハードウェアを前提として設計するとき以外に理 解する必要がない。したがって、本発明の定義ファイルは、ハードウェアに依存しな いハードウェア記述言語であると言うことができる。すなわち、どのようなハードウェア を前提としても解釈することができ、ハードウェアが特定されれば、そのハードウェア に定義ファイルに記述されたアルゴリズムを割り付けることができる。したがって、本例 の DIDLのような定義ファイルは、時間的ではなぐ空間的にアルゴリズムを展開でき る言語ということができる。このため、プログラムで記述できるアルゴリズムは、本例の DIDLを用いることにより、すべて、並列に動作する複数の要素、本例であればエレメ ント 55を組み合わせた回路により実行させることができ、 DIDLにより、実行するため のハードウェア構成を記述することができる。
[0054] 図 10に、さらに異なる DIDLの例を示してある。この DIDLlOeには、外部から与え られる所定の数(numOfData)の入力変数 inの最大値 aを検索する処理が記述され ている。初期値をセットする記述 111に続く部分が並列処理を記述した部分であり、入 力変数 inとそれまでの最大値 aとを比較して最大値をセットする並列処理 12mの並列 記述 11mと、カウンターを進める並列処理 12ηの並列記述 1 Inと、処理 12ηのカウン トアップした値が所定の数 numOfDataに達したら処理 12mの最大値 aを出力する並 歹 IJ処理 12οの並歹 IJ記述 l loとを備えてレヽる。処理 12οでは、上記の処理 12mおよび 12ηに要するサイクル数の差を吸収するために、遅延素子を挿入して 2つのデータ 入力に供給される変数のレイテンシ一が調整される。
[0055] 図 11に、この DIDLlOeがコンパイルされたハードウェア構成 18eを模式的に示し てある。回路構成を生成するステップ 32において、並列処理 12mは、演算エレメント 55cを用いて回路構成され、並列処理 12ηは、アドレス生成用のエレメント 55bを用 いて回路構成され、並列処理 12οは 2つの演算エレメント 55cを用いて回路構成され 、それらの回路構成を示す DDDL4が生成される。処理 12mを行う演算エレメント 55 cにおいて消費されるサイクル数力 処理 12ηのカウント処理を行うエレメント 55bに おいて消費されるサイクル数より多レ、。このため、遅延エレメント 55dが並列処理 12ο のカウンター値を入力する側に追加される。これにより、並列処理 12οのデータ入力 に供給されるデータ、すなわち、処理 12mの出力と処理 12ηの出力のレイテンシー が調整される。なお、処理 12οの出力側に配置された 2つの遅延エレメント 55dは、マ トリタス部 51が 3つのセグメントに別れており、最初のセグメントで処理 12m— 12οの 回路が構成されるので、他のセグメントを通過して出力用のエレメント 56sにデータを 転送するためのものである。
[0056] 図 12は、図 3に示したマトリクス部 51に配置されたエレメント 55に図 11に示した回 路構成を割り付けた状態が示されている。本例においては、エレメント 55が既にマトリ タス状に配置された再構成可能なプロセッサ 20のマトリクス部 51に、 DIDLlOeのァ ルゴリズムを割り当てている。したがって、図 11に示したハードウェア構成の情報は、 図 12に示したように、選択されたエレメントの配置と、それらを接続する配線ノレートの 情報としてコンパイラ 2で生成され、 DDDL4として出力される。なお、アドレスを生成 するエレメント 55aおよび 55bは、入力変数 inを外部から入力するために使用されて いる。また、本図には示していないが、出力用のアドレスを生成するエレメント 55gお よび 55hも同様に使用されている。
[0057] 本例の並列処理システム 20は、エレメント 55がマトリクス状に配置された再構成可 能なプロセッサ (集積回路装置)であり、各エレメント 55は、上述したように、 ALUなど のある程度の規模の演算機能を備えており、 1つのエレメントにより 1つの並列処理を ほぼ実行できる規模となっている。また、各エレメント 55は、データを 8ビット、 16ビット あるいは 32ビットなどのバイトあるいはワード単位で、特定の目的のために処理する のに適した演算ユニットである。そして、入力データと出力データとをフリップフロップ などを使ってラッチし、クロック信号で同期している。すなわち、各エレメント 55におけ る入力と出力はクロックで同期されている。したがって、各エレメント 55で消費される サイクルは予め予想することができる。さらに、各エレメントは特定の処理を行うのに 適したある程度の規模の演算機能を備えてレ、るので、 DIDL1に記述された並列処 理にエレメントの単位でハードウェアを割り当てて回路構成することができる。したが つて、本例の並列処理システムであるマトリクスユニット 51を前提として DIDL1を解釈 すると並列処理で消費されるサイクルは容易に予想でき、回路構成を生成するのが 容易であり、さらにレイテンシー調整も容易に行える。このため、ある程度の規模の演 算能力を備えて、 1つの並列処理をエレメント単位でほぼ実行できるマトリクス部 51を 備えたデータ処理装置である RP20は、本発明の定義ファイルからハードウェアを生 成するのに適したアーキテクチャであると言える。
[0058] また、エレメント 55の単位で並列処理が割り付けられ、サイクル数も管理されるので 、 DIDL1で定義されたアプリケーションを実行している途中で、あるエレメント 55の機 能を外部入力により変えても、他の並列処理に予期しない影響を及ぼさずにアプリケ ーシヨンを実行させることができる。機能を変えたエレメント 55におけるサイクル数が 変動するのであれば、それに対応できるように遅延エレメント 55dを接続しておき、遅 延エレメント 55dの内部のサイクル数を同様に外部入力により変更し、他のエレメント 55で形成されたデータフローに影響を及ぼさずに特定のエレメント 55の処理をダイ ナミックに変更することが可能である。
[0059] 図 13に、 DIDLレベルのシミュレータ 67を示してある。このシミュレータ 67は汎用の コンピュータ 9にシミュレータ用のプログラム 68をインストールすることにより構成され る。したがって、本発明の定義ファイルである DIDL1に基づき、並列に動作する複数 種類の要素を備えたシステムをコンピュータ 9によりシミュレートするためのプログラム あるいはプログラム製品 68も、 CD-ROMなどの適当な記録媒体に記録したり、コン ピュータネットワークを介して提供することができる。
[0060] 図 14にシミュレータ 67の概略動作をフローチャートにより示してある。まず、ステツ プ 71で DIDL1を読み込む。次に、ステップ 72で、 DIDL1に記述された複数の並列 処理を同期して実行する。この際、第 1の並列記述に示された、複数のデータ入力を 備えた第 1の並列処理については、それら複数のデータ入力に、システムに入力さ れてからのレイテンシ一が同一のデータを入力する。例えば、システムに入力され、 他の並列処理で加工されないデータとして定義されているデータ(システム入力変数 )に対するレイテンシ一が同一になるデータを用いる。ステップ 73で終了条件、例え ば、所定の回数、並列処理を繰り返して実行したり、 DIDL1に記述された並列処理 の結果が所定の値に達するなどの条件が成立すると、ステップ 74でシミュレーション した結果を出力する。これにより、ハードウェアに依存しないで、 DIDL1に記述され たハードウェアの動作をシミュレートすることができる。
[0061] 以上に説明したように、本発明においては、同期して独立に行われる複数の並列 処理をそれぞれ規定した複数の並列記述を有する定義ファイルであって、複数のデ ータ入力を備えた並列記述においては、それら複数のデータ入力に対してシステム に入力されてからのレイテンシ一が同一のデータが供給されると解釈する定義フアイ ルを提案している。この定義ファイルは、並列処理を記述するものであり、ハードゥエ ァ記述ファイルであると理解することができ、また、そこにはハードウェア自体は表れ ないのでハードウェア依存性のないハードウェア記述であると言うことができる。さらに 、並列記述であるので、プログラムカウンタの必要のない形態でアルゴリズムを定義 すること力 Sできる。
したがって、本発明の定義ファイルにより、従来の高級言語と類似した記述ではあ るが、時間順序性のない並列記述により、アルゴリズムに含まれる順序を時間的にで はなく空間的に記述でき、並列に動作する複数の要素を備えた並列処理システムの 生成を短期間で容易に行うことが可能となる。特に、 ALUなどのある程度の規模の 演算機能を備えた演算ユニットがマトリクス状に配置された並列処理システム、さらに は、演算ユニットの接続を変えられる再構成可能なデータ処理システムを設計したり 開発したりするのに本発明の定義ファイルは有用である。

Claims

請求の範囲
[1] 定義ファイルに従い、並列に動作する複数種類の要素を備えた並列処理システム を生成する方法であって、
前記定義ファイルは、独立に行われる複数の並列処理をそれぞれ規定した複数の 並列記述を有し、前記複数の並列記述は、他の並列処理の出力データが入力され るデータ入力を少なくとも含む複数のデータ入力を備えた第 1の並列処理を示す第 1 の並列記述を含んでおり、
前記複数種類の要素の情報を記録したハードウェアライブラリに基づき、前記定義 ファイルの並列記述に規定された並列処理を実行するための回路構成であって、前 記複数種類の要素の少なくともいずれ力を備えた回路構成を含むハードウェア構成 情報を生成する第 1の工程と、
前記第 1の並列処理を実行するための回路構成の複数のデータ入力に、当該並 列処理システムに入力されてからのレイテンシ一が同一のデータが入力されるように
、前記ハードウェア構成情報に遅延要素を加える第 2の工程とを有する、生成方法。
[2] 前記並列処理システムは、前記複数種類の要素の接続を変えることにより異なるハ 一ドウエア構成を再構成可能であり、前記ハードウェア構成情報は、複数の前記異な るハードウェア構成を示す情報を備えている、請求項 1の生成方法。
[3] 前記複数種類の要素は、単体で前記定義ファイルの 1つの並列記述に規定された 並列処理を処理可能な規模の複数種類の演算ユニットを含んでレ、る、請求項 1の生 成方法。
[4] 前記複数種類の要素は、バイトあるいはワード単位で異なった演算を実行可能な 複数種類の演算ユニットを含んでいる、請求項 1の生成方法。
[5] 前記ハードウェアライブラリには、前記複数種類の要素のそれぞれにおいて消費さ れるサイクル数を含む情報が格納されており、
前記第 2の工程では、前記複数種類の要素の少なくともいずれかにおいて消費さ れるサイクル数に相当する前記遅延要素を加える、請求項 1の生成方法。
[6] 前記複数の並列記述は、第 3の並列記述により規定された第 3の並列処理の少なく とも一部と同じ共通処理を含む第 2の並列処理を規定する第 2の並列記述を含んで おり、
前記第 1の工程では、前記共通処理に対して、前記複数種類の要素の少なくともい ずれかを含む共通の回路構成を生成し、
前記第 2の工程では、前記第 2の並列処理および前記共通処理の差分を実行する ための回路構成を、前記第 1の並列処理を実行するための回路構成として、前記遅 延要素を加える、請求項 1の生成方法。
[7] 定義ファイルに従い、並列に動作する複数種類の要素を備えた並列処理システム を生成する装置であって、
前記定義ファイルは、独立に行われる複数の並列処理をそれぞれ規定した複数の 並列記述を有し、前記複数の並列記述は、他の並列処理の出力データが入力され るデータ入力を少なくとも含む複数のデータ入力を備えた第 1の並列処理を示す第 1 の並列記述を含んでおり、
前記複数種類の要素の情報を記録したハードウェアライブラリに基づき、前記定義 ファイルの並列記述に規定された並列処理を実行するための回路構成であって、前 記複数種類の要素の少なくともいずれ力を備えた回路構成を含むハードウェア構成 情報を生成する第 1の手段と、
前記第 1の並列処理を実行するための回路構成の複数のデータ入力に、当該並 列処理システムに入力されてからのレイテンシ一が同一のデータが入力されるように
、前記ハードウェア構成情報に遅延要素を加える第 2の手段とを有する、生成装置。
[8] 前記並列処理システムは、前記複数種類の要素の接続を変えることにより異なるハ 一ドウエア構成を再構成可能であり、前記ハードウェア構成情報は、複数の前記異な るハードウェア構成を示す情報を備えている、請求項 7の生成装置。
[9] 定義ファイルに従い、並列に動作する複数種類の要素を備えたシステムを設計す るプロセスをコンピュータにより実行するためのプログラムであって、
前記定義ファイルは、独立に行われる複数の並列処理をそれぞれ規定した複数の 並列記述を有し、前記複数の並列記述は、他の並列処理の出力データが入力され るデータ入力を少なくとも含む複数のデータ入力を備えた第 1の並列処理を示す第 1 の並列記述を含んでおり、 前記システムを設計するプロセスは、前記複数種類の要素の情報を記録したハー ドウエアライブラリに基づき、前記定義ファイルの並列記述に規定された並列処理を 実行するための回路構成であって、前記複数種類の要素の少なくともいずれかを備 えた回路構成を含むハードウェア構成情報を生成する第 1の工程と、
前記第 1の並列処理を実行するための回路構成の複数のデータ入力に、当該並 列処理システムに入力されてからのレイテンシ一が同一のデータが入力されるように
、前記ハードウェア構成情報に遅延要素を加える第 2の工程とを有する、プログラム。
[10] 並列に動作する複数の要素を備えたシステムにより、同期して独立に行われる複数 の並列処理をそれぞれ規定した複数の並列記述を有する定義ファイルであって、前 記複数の並列記述は、他の並列処理の出力データが入力されるデータ入力を少なく とも含む複数のデータ入力を備えた第 1の並列処理を示す第 1の並列記述であって 、それら複数のデータ入力には当該システムに入力されてからのレイテンシ一が同一 のデータが入力されることを示す第 1の並列記述を含む、定義ファイルが記録されて レ、るコンピュータ読み取り可能な記録媒体。
[11] 前記複数の並列記述は、前記複数の要素が動作するクロックに同期して実行され る前記複数の並列処理をそれぞれ規定する、請求項 10の記録媒体。
[12] 定義ファイルに基づき、並列に動作する複数種類の要素を備えたシステムをシミュ レートする方法であって、
前記定義ファイルは、独立に行われる複数の並列処理をそれぞれ規定した複数の 並列記述を有し、前記複数の並列記述は、他の並列処理の出力データが入力され るデータ入力を少なくとも含む複数のデータ入力を備えた第 1の並列処理を示す第 1 の並列記述を含んでおり、
前記定義ファイルに規定された前記複数の並行処理を同期して実行する工程を有 し、この工程では、前記第 1の並列処理の複数のデータ入力に、当該システムに入 力されてからのレイテンシ一が同一のデータを入力する、シミュレーション方法。
[13] 定義ファイルに基づき、並列に動作する複数種類の要素を備えたシステムをシミュ レートするシミュレータであって、
前記定義ファイルは、独立に行われる複数の並列処理をそれぞれ規定した複数の 並列記述を有し、前記複数の並列記述は、他の並列処理の出力データが入力され るデータ入力を少なくとも含む複数のデータ入力を備えた第 1の並列処理を示す第 1 の並列記述を含んでおり、
前記定義ファイルに規定された前記複数の並行処理を同期して実行する手段を有 し、この実行する手段では、前記第 1の並列処理の複数のデータ入力に、当該シス テムに入力されてからのレイテンシ一が同一のデータを入力する、シミュレータ。 定義ファイルに基づき、並列に動作する複数種類の要素を備えたシステムをコンビ ユータによりシミュレートするためのプログラムであって、
前記定義ファイルは、独立に行われる複数の並列処理をそれぞれ規定した複数の 並列記述を有し、前記複数の並列記述は、他の並列処理の出力データが入力され るデータ入力を少なくとも含む複数のデータ入力を備えた第 1の並列処理を示す第 1 の並列記述を含んでおり、
前記定義ファイルに規定された前記複数の並行処理を同期して実行する工程をコ ンピュータにおいてシミュレートする際に、前記第 1の並列処理の複数のデータ入力 に、当該システムに入力されてからのレイテンシ一が同一のデータを入力する、プロ グラム。
PCT/JP2004/009000 2003-06-27 2004-06-25 並列処理システムの生成方法 WO2005001723A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US10/562,767 US20060253836A1 (en) 2003-06-27 2004-06-25 Method for creating parallel processing system
EP04746469A EP1640885A4 (en) 2003-06-27 2004-06-25 METHOD FOR GENERATING A PARALLEL PROCESSING SYSTEM
US13/053,835 US8527972B2 (en) 2003-06-27 2011-03-22 Method for forming a parallel processing system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003-185481 2003-06-27
JP2003185481A JP2005018626A (ja) 2003-06-27 2003-06-27 並列処理システムの生成方法

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US10/562,767 A-371-Of-International US20060253836A1 (en) 2003-06-27 2004-06-25 Method for creating parallel processing system
US13/053,835 Continuation US8527972B2 (en) 2003-06-27 2011-03-22 Method for forming a parallel processing system

Publications (1)

Publication Number Publication Date
WO2005001723A1 true WO2005001723A1 (ja) 2005-01-06

Family

ID=33549667

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2004/009000 WO2005001723A1 (ja) 2003-06-27 2004-06-25 並列処理システムの生成方法

Country Status (5)

Country Link
US (2) US20060253836A1 (ja)
EP (1) EP1640885A4 (ja)
JP (1) JP2005018626A (ja)
TW (1) TWI291655B (ja)
WO (1) WO2005001723A1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8286130B2 (en) * 2007-04-24 2012-10-09 Intel Corporation Methods and systems for using type models to generate an implementation of a type
US8286128B2 (en) 2007-04-24 2012-10-09 Intel Corporation Methods for type analysis in systems for code generation
WO2009102765A2 (en) 2008-02-11 2009-08-20 Nuix North America Inc. Parallelization of electronic discovery document indexing
US9785700B2 (en) 2008-02-11 2017-10-10 Nuix Pty Ltd Systems and methods for load-balancing by secondary processors in parallelized indexing
US9928260B2 (en) 2008-02-11 2018-03-27 Nuix Pty Ltd Systems and methods for scalable delocalized information governance
TWI383617B (zh) * 2008-10-31 2013-01-21 Ind Tech Res Inst 具排列架構之無線通訊方法及系統
JP2011180841A (ja) * 2010-03-01 2011-09-15 Ricoh Co Ltd 半導体設計支援装置
JP6021342B2 (ja) * 2012-02-09 2016-11-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 並列化方法、システム、及びプログラム
US8893080B2 (en) * 2012-08-15 2014-11-18 Telefonaktiebolaget L M Ericsson (Publ) Parallelization of dataflow actors with local state
JP5932128B2 (ja) 2013-02-21 2016-06-08 トヨタ自動車株式会社 制御装置の設計方法及び制御装置
JP5714622B2 (ja) * 2013-02-21 2015-05-07 トヨタ自動車株式会社 制御装置
US10025603B2 (en) * 2013-02-26 2018-07-17 Nec Corporation Parallel processing device, parallel processing method, and parallel processing program storage medium
JP6249360B2 (ja) * 2013-05-17 2017-12-20 国立大学法人 筑波大学 ハードウェア設計装置,及びハードウェア設計用プログラム
US10826930B2 (en) 2014-07-22 2020-11-03 Nuix Pty Ltd Systems and methods for parallelized custom data-processing and search
US9672182B2 (en) * 2014-08-21 2017-06-06 Infineon Technologies Ag High-speed serial ring
US9710876B2 (en) 2015-01-16 2017-07-18 Intel Corporation Graph-based application programming interface architectures with equivalency classes for enhanced image processing parallelism
US9818166B2 (en) 2015-01-16 2017-11-14 Intel Corporation Graph-based application programming interface architectures with producer/consumer nodes for enhanced image processing parallelism
US11200249B2 (en) 2015-04-16 2021-12-14 Nuix Limited Systems and methods for data indexing with user-side scripting
WO2021130876A1 (ja) * 2019-12-24 2021-07-01 太陽誘電株式会社 生成装置、生成方法およびプログラム
US20220261898A1 (en) 2021-02-16 2022-08-18 Exegy Incorporated Methods and Systems for Implementing Market Making Strategies at Low Latency

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5950173A (en) * 1996-10-25 1999-09-07 Ipf, Inc. System and method for delivering consumer product related information to consumers within retail environments using internet-based information servers and sales agents
US5933642A (en) * 1995-04-17 1999-08-03 Ricoh Corporation Compiling system and method for reconfigurable computing
US5708709A (en) * 1995-12-08 1998-01-13 Sun Microsystems, Inc. System and method for managing try-and-buy usage of application programs
JP2001503542A (ja) * 1996-10-25 2001-03-13 アイピーエフ・インコーポレーテッド 消費者製品関連情報をインターネット上で管理しサービスするシステムと方法
JPH1115761A (ja) * 1997-06-02 1999-01-22 Internatl Business Mach Corp <Ibm> 赤外線通信機能を持つ情報処理装置及びその制御方法
US6091956A (en) * 1997-06-12 2000-07-18 Hollenberg; Dennis D. Situation information system
US6009525A (en) * 1997-08-29 1999-12-28 Preview Systems, Inc. Multi-tier electronic software distribution
US6226776B1 (en) * 1997-09-16 2001-05-01 Synetry Corporation System for converting hardware designs in high-level programming language to hardware implementations
US6243692B1 (en) * 1998-05-22 2001-06-05 Preview Software Secure electronic software packaging using setup-external unlocking module
US6363366B1 (en) * 1998-08-31 2002-03-26 David L. Henty Produce identification and pricing system for checkouts
JP2000293494A (ja) * 1999-04-09 2000-10-20 Fuji Xerox Co Ltd 並列計算装置および並列計算方法
AU2460801A (en) * 1999-12-30 2001-07-16 Nextaudio, Inc. System and method for multimedia content composition and distribution
US6625797B1 (en) * 2000-02-10 2003-09-23 Xilinx, Inc. Means and method for compiling high level software languages into algorithmically equivalent hardware representations
DE10128494A1 (de) * 2000-04-07 2002-01-17 Ibm Persönlicher digitaler Einkaufswagen
WO2001080133A2 (en) * 2000-04-17 2001-10-25 Emtera Corporation System and method for wireless purchases of goods and services
US7257780B2 (en) * 2000-08-07 2007-08-14 Altera Corporation Software-to-hardware compiler
US20020026474A1 (en) * 2000-08-28 2002-02-28 Wang Lawrence C. Thin client for wireless device using java interface
US20020123971A1 (en) * 2000-12-11 2002-09-05 Maritzen L. Michael Method and system of conducting network-based transactions
US7000213B2 (en) * 2001-01-26 2006-02-14 Northwestern University Method and apparatus for automatically generating hardware from algorithms described in MATLAB
US20020103833A1 (en) * 2001-01-26 2002-08-01 Travis Parry Electronic book kiosk
US20030037321A1 (en) * 2001-01-29 2003-02-20 Matt Bowen System, method and article of manufacture for extensions in a programming lanauage capable of programming hardware architectures
US7584269B2 (en) * 2001-03-09 2009-09-01 International Business Machines Corporation Method for providing kiosk service offerings in a personal area network
TWI234737B (en) * 2001-05-24 2005-06-21 Ip Flex Inc Integrated circuit device
JP4846924B2 (ja) * 2001-05-31 2011-12-28 キヤノン株式会社 パターン認識装置
CN1526100A (zh) * 2001-07-12 2004-09-01 IP�����ɷ����޹�˾ 集成电路装置
US6988192B2 (en) * 2002-02-11 2006-01-17 Hewlett-Packard Development Company, L.P. Method and apparatus for compiling source code to configure hardware
US20030110094A1 (en) * 2002-07-25 2003-06-12 Sony Corporation System and method for wireless viral software distribution
US6983456B2 (en) * 2002-10-31 2006-01-03 Src Computers, Inc. Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms
US7822590B2 (en) * 2002-12-17 2010-10-26 Cadence Design Systems, Inc. Method and system for implementing, controlling, and interfacing with circuit simulators

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SUEYOSHI T.: "Reconfigurable computing system no genjo to kadai -computer evolution e mukete-", THE INSTITUTE OF ELECTRONICS, INFORMATION AND COMMUNICATION ENGINEERS GIJUTSU KENKYU HOKOKU, vol. 96, no. 426, 13 December 1996 (1996-12-13), pages 111 - 118, XP002984910 *

Also Published As

Publication number Publication date
EP1640885A4 (en) 2006-09-13
US20110197047A1 (en) 2011-08-11
US20060253836A1 (en) 2006-11-09
EP1640885A1 (en) 2006-03-29
TWI291655B (en) 2007-12-21
US8527972B2 (en) 2013-09-03
TW200508974A (en) 2005-03-01
JP2005018626A (ja) 2005-01-20

Similar Documents

Publication Publication Date Title
US8527972B2 (en) Method for forming a parallel processing system
Zhao et al. Performance modeling and directives optimization for high-level synthesis on FPGA
US6021266A (en) Method of designing an integrated circuit using scheduling and allocation with parallelism and handshaking communication, and an integrated circuit designed by such method
Compton et al. Reconfigurable computing: a survey of systems and software
JP5842255B2 (ja) プログラミング言語による論理回路記述から論理回路を生成するための装置及び方法
JP4923128B2 (ja) 回路設計およびリタイミングの方法および装置
US6044211A (en) Method for graphically representing a digital device as a behavioral description with data and control flow elements, and for converting the behavioral description to a structural description
US20070219771A1 (en) Branching and Behavioral Partitioning for a VLIW Processor
US20050283743A1 (en) Method for generating hardware information
US8671371B1 (en) Systems and methods for configuration of control logic in parallel pipelined hardware
Venkatakrishnan et al. High-level synthesis-based approach for accelerating scientific codes on FPGAs
US20150379178A1 (en) Implementing a constant in fpga code
Balboni et al. Tosca: A pragmatic approach to co-design automation of control-dominated systems
JP2023548392A (ja) 異種集積回路のためのモデルベース設計および区分
Malik et al. Synchronizing distributed state machines in a coarse grain reconfigurable architecture
JP4276911B2 (ja) 集積回路の回路要素の配置方法および配置プログラム
Ruan et al. Partitioning and synthesis for hybrid architecture simulators
US20230229403A1 (en) Method for generating source code
Ferreira Restructuring Software Code for High-Level Synthesis Using a Graph-based Approach Targeting FPGAs
JP4208919B2 (ja) 活性化コードの生成方法
Gajski System-level design methodology
JP2006202329A (ja) システムlsiの設計方法及びこれを記憶した記録媒体
Boutekkouk et al. UML for Modelling and Performance Estimation of Embedded Systems.
Smith et al. Simulation-based design of programmable systolic arrays
Cesário et al. Overlap and frontiers between behavioral and RTL synthesis

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

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

AL Designated countries for regional patents

Kind code of ref document: A1

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

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2004746469

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2004746469

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2006253836

Country of ref document: US

Ref document number: 10562767

Country of ref document: US

WWP Wipo information: published in national office

Ref document number: 10562767

Country of ref document: US