Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system

A dynamic reconfiguration supporting method that generates a driver function to cause a dynamic reconfiguration circuit to execute a program of an application described in a predetermined language, includes acquiring a configuration defining file representing a configuration of a cluster of the dynamic reconfiguration circuit in execution of the process of the application, generating an address map representing an address of a processing element (to be referred to as “PE” hereinafter) in the cluster on the basis of the configuration defining file acquired by the acquiring operation, generating a driver function that associates the function and an address of the PE which executes the function with reference to the address map, when a PE which executes a function described in the application is allocated from the PE, and creating a driver function file that stores the driver function.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is based upon and claims the benefit of priority from the prior Japanese Patent Application No. 2007-327818 filed on Dec. 19, 2007, the entire contents of which are incorporated herein by reference.

BACKGROUND

A dynamic reconfiguration supporting method that supports process execution of a dynamic reconfiguration circuit constituted by a cluster including a processing element (Processing Element) (to be referred to as a “PE” hereinafter), a dynamic reconfiguration supporting apparatus, and a dynamic reconfiguration system.

2. Description of the Related Art

A dynamic reconfiguration system has been provided in the past. A dynamic reconfiguration system can cause a single circuit to execute a plurality of processes having different processing contents by using a dynamic reconfiguration circuit. A dynamic reconfiguration circuit can dynamically change processing contents. The dynamic reconfiguration circuit using the dynamic reconfiguration system includes PEs of a plurality of types. Each of the types of PEs has functions for performing various arithmetic operations, data storage, and a count process and a network circuit that connects the PEs of the types.

International Publication Patent No. WO2002/095946 describes a dynamic reconfiguration circuit that is reconfigured as a circuit. The dynamic reconfiguration circuit fulfills the functions of the PEs and processing content/performance/power consumption set by a user by changing connections between the PEs in execution of a process.

SUMMARY

According to one aspect of an embodiment, there is provided a dynamic reconfiguration supporting method that generates a driver function to cause a dynamic reconfiguration circuit to execute a program of an application described in a predetermined language, including acquiring a configuration defining file representing a configuration of a cluster of the dynamic reconfiguration circuit in execution of the process of the application, generating an address map representing an address of a processing element (to be referred to as “PE” hereinafter) in the cluster on the basis of the configuration defining file acquired by the acquiring operation, generating a driver function that associates the function and an address of the PE which executes the function with reference to the address map, when a PE which executes a function described in the application is allocated from the PE, and creating a driver function file that stores the driver function.

According to another aspect of an embodiment, there is provided a dynamic reconfiguration supporting apparatus that supports execution of a process of an application described in a predetermined language, a circuit configuration of a dynamic reconfiguration circuit including a cluster having a processing element (to be referred to as a “PE” hereinafter) being able to be changed, an acquirer that acquires a configuration defining file representing a configuration of a cluster of the dynamic reconfiguration circuit in execution of the process of the application, an address map generator that generates an address map representing an address of a processing element in the cluster on the basis of the configuration defining file acquired by the acquirer, a driver function generator that, when a PE which executes a function described in the application is allocated from the PE, generates a driver function that associates the function and an address of the PE which executes the function with reference to the address map, a driver function file creator that creates a driver function file in that a driver function generated by the driver function generator is described, and a storage that stores the driver function file created by the driver function file creator in a predetermined memory.

The above-described embodiments of the present invention are intended as examples, and all embodiments of the present invention are not limited to including the features described above.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

Preferred embodiments of a dynamic reconfiguration supporting method, a dynamic reconfiguration circuit, and a dynamic reconfiguration system will be described below in detail. In the embodiments, a dynamic reconfiguration system will be described as an example to execute a predetermined process on a dynamic reconfiguration circuit. The dynamic reconfiguration system writes an application written in the C language by a user in an LSI chip including a dynamic reconfiguration circuit to execute the application. However, the dynamic reconfiguration system can also execute an application written in another high-level language. A CPU is caused to execute a program to control the dynamic reconfiguration circuit and access PEs (RAM or DRF). The PEs constituting the dynamic reconfiguration circuit are called a “main program” as described above. The PEs constituting the dynamic reconfiguration circuit are differentiated from a dynamic reconfiguration supporting program related to generation of a driver function file which is a unique function of the embodiment.

Outline of Dynamic Reconfiguration System•Configuration of Dynamic Reconfiguration System

In the embodiment, an outline of a dynamic reconfiguration system that executes an application by using a driver function file will be described below.FIG. 1Ais an explanatory diagram showing an outline of a dynamic reconfiguration system according to the present invention. As shown inFIG. 1A, a dynamic reconfiguration system100according to the embodiment causes a PC110to generate data (specifically, configuration data104and load module105). The data causes an LSI chip120including a dynamic reconfiguration circuit to execute an application102prepared by a user.

As shown inFIG. 1A, a user provides a configuration defining file101, the application102, and a main program103to the PC110. The configuration defining file101is information that expresses configuration contents of PEs of a cluster constituting a dynamic reconfiguration circuit mounted on the LSI chip120used in the dynamic reconfiguration system100.

The application102is a descriptor code to perform a predetermined process created by a user. In the embodiment one processing unit defined by a function in the C language is described. The LSI chip120causes a reconfig C compiler112(which will be described later) to generate configuration data104corresponding to the application102and a load module105in order to cause a dynamic reconfiguration circuit unit230to execute a predetermined process described by the LSI chip120. More specifically, the configuration data104and the load module105in the LSI chip120are executed to make it possible to execute the process of the application102.

An address map generating tool111, a reconfig C compiler112, a dynamic reconfiguration supporting program113, and a CPU compiler114are stored in the LSI chip120. In this case, the address map generating tool111generates an address map representing addresses of PEs constituting the dynamic reconfiguration circuit unit. The reconfig C compiler112generates the configuration data104to cause the dynamic reconfiguration circuit unit to execute the application102.

The dynamic reconfiguration support program113generates a driver function file of each PE when the application102is executed by the dynamic reconfiguration circuit unit. The CPU compiler114generates the load module105to cause the dynamic reconfiguration circuit unit of the LSI chip120to execute the application from the main program103, the address map generated by the address map generating tool111, and the driver function file created by the dynamic reconfiguration support program113.

The load module105includes a main program106and a driver function107to cope with an address change of a circuit configuration element (PE or the like) when a circuit configuration is changed. Both the pieces of information are also generated as execution codes (binary data) to be operated by the CPU compiler114on the LSI chip120.

Outline of Procedure of Dynamic Reconfiguration System

A procedure performed by the dynamic reconfiguration system100will be described below.FIG. 1BandFIG. 1Care explanatory diagrams showing outlines of procedures of the dynamic reconfiguration system. Processes executed by the PC110of the dynamic reconfiguration system100, as shown inFIGS. 1B and 1C, are roughly classified into processes to generate a driver function file and processes to generate a load module.

By usingFIG. 1B, a procedure to generate a driver function file will be described below. In the PC110, the address map generating tool111generates an address map116from the configuration defining file101. By the reconfig C compiler112, the configuration data104is generated from the configuration defining file101and the application102.

The reconfig C compiler112generates corresponding information between the function of the application102and the PE of the dynamic reconfiguration circuit unit230together with the configuration data104. In the reconfig C compiler112, one or more cluster of one or more context are allocated to the application102representing one processing unit. In each of the clusters, a RAM element and a DRF element are allocated as PEs corresponding to arguments, variables, and return values of the functions described in the application102.

The dynamic reconfiguration supporting program113generates a driver function file117from corresponding information115between the functions generated by the reconfig C compiler112and the PEs. The address map116and the driver function file117which are generated by the above processes are used to generate a load module, and the configuration data104is stored in the LSI chip120.

A procedure to generate the load module will be described below with reference toFIG. 1C. The PC110causes the CPU compiler114to generate the load module105from the main program103, the driver function file117, and the address map116. At this time, the main program103is executed to call a driver function, and the driver function file117used for the calling is included (incorporated) in the address map116.

The generated configuration data104and the load module105are mounted on the LSI chip120by the procedure described above to cope with a configuration change of the dynamic reconfiguration circuit unit230when the application102is executed.

Configuration of Dynamic Reconfiguration Circuit

A configuration of a dynamic reconfiguration circuit mounted on the LSI chip120will be described below.FIG. 2is a block diagram showing the configuration of the dynamic reconfiguration circuit according to the embodiment. As shown inFIG. 2, the LSI chip120includes a CPU210, a memory220, and the dynamic reconfiguration circuit unit230to function as a dynamic reconfiguration circuit. A circuit function other than the function of the dynamic reconfiguration circuit may be mounted on the LSI chip120. However, only the function of the dynamic reconfiguration circuit will be especially described here.

The CPU210controls the overall dynamic reconfiguration circuit. More specifically, the CPU210controls the main program103to read the load module105stored in the memory220, to start the dynamic reconfiguration circuit230or to read or write data in the PEs.

The load module105generated by the CPU compiler114of the PC110is stored in the memory220. The load module105includes the main program106and the driver function107which are in execution code states. When the CPU210receives an external operation designation, the CPU210reads the main program (execution code)106stored in the CPU210to start an operation of the main program106. Depending on the execution of the main program (execution code)106by the CPU210, the driver function (execution code)107is called, and the main program (execution code)106is correctly executed in consideration of an address change caused by a configuration change of the dynamic reconfiguration circuit unit230.

The dynamic reconfiguration circuit unit230includes a configuration data storage231that stores the configuration data104and a cluster232that executes a predetermined process depending on the configuration data104. The configuration data storage231is a functional unit that stores, as a context, the configuration data104generated by the reconfig C compiler112. The cluster232includes PEs, a network circuit which connect the PEs, and a sequencer which controls switching of contexts.

The dynamic reconfiguration circuit unit230includes the above configuration and dynamically switches processing contents (contexts) depending on execution of the main program106by the CPU210to make it possible to execute a predetermined process depending on the description of the application102.

The dynamic reconfiguration system100according to the embodiment includes the configuration described above and the following characteristics.

1 The dynamic reconfiguration circuit unit230stores a plurality of “contexts” that designate the functions of the PEs/connection states between the PEs in one application102as in a conventional dynamic reconfiguration circuit, and instantaneously (within several cycles) switches the processing contents on the basis of the contexts in execution of the main program (execution code)106. A context to be applied to the dynamic reconfiguration circuit unit230is designated by the CPU210depending on the main program (execution code)106. The context switching performed at this time is controlled by a sequencer mounted on the dynamic reconfiguration circuit unit230. Furthermore, a timing of an end of processing by the dynamic reconfiguration circuit unit230can be detected (interruption detection or the like) by the main program (execution code)106operated on the CPU210.

2 The dynamic reconfiguration circuit unit230can change the number of clusters232and a configuration (types/numbers of PEs) of the PEs of each of the clusters232in design of a circuit configuration. As the types of the PEs, various computing units, RAMs, data register files (DRFs), and the like are known. Each of the clusters232of the dynamic reconfiguration circuit unit230can include a plurality of PEs. A cluster configuration and a PE configuration of each of the clusters232are designated by the configuration defining file101.

3 The CPU210mounted on the LSI chip120can perform the following control to the dynamic reconfiguration circuit unit230.

Load Process of Configuration Data231•Writing in PEs (RAM element and DRF element) Depending on Arguments of Function and Variable•Designation of Context for Starting Process•Execution Start of Process•Waiting for Execution End of Process•Reading from PEs depending on Arguments of Function and Variable.

A change of the circuit configuration of the dynamic reconfiguration circuit will be described below.FIG. 3is an address table showing a cluster constituting a dynamic reconfiguration circuit A.FIG. 4is an address table showing a cluster constituting a dynamic reconfiguration circuit B. An explanation of PEs other than the RAM element will be omitted.

The contents of the clusters of the dynamic reconfiguration circuit A and the dynamic reconfiguration circuit B are compared with reference toFIGS. 3 and 4. As shown in a table300, the dynamic reconfiguration circuit A includes one cluster (cluster0). As shown in a table400inFIG. 4, the dynamic reconfiguration circuit B includes two clusters (cluster0and1). The numbers of PEs (the number of RAM elements in this case) in the clusters change depending on the circuits.

For example, in the application102, it is assumed that (by the reconfig C compiler112), five RAM elements are allocated to the argument of the function and the variable and that the main program106performs a write/read process to the five RAM elements. When the main program106created to be operated by the dynamic reconfiguration circuit A directly uses a value (0x111000 or the like) of an address of the RAM element, in order to also operate the equivalent process in the dynamic reconfiguration circuit B, the value of the address of the RAM element of the main program106must be changed in accordance with the dynamic reconfiguration circuit B.

When the RAM elements allocated to an argument of a function and a variable of the application102are determined, the reconfig C compiler112must optimize each circuit configuration. More specifically, even though the number of clusters in the dynamic reconfiguration circuit and the number of RAM elements in each cluster do not change, if the number of other PEs in each of the clusters changes, different RAM elements may be allocated to the arguments of the function and the variable of the same application102.

In the dynamic reconfiguration system100, a driver function file is generated to cope with an address change of a PE depending on the change of the circuit configuration, and an execution code (driver function107) is generated with reference to the driver function file117in execution of an execution code (main program106) corresponding to the process of the application102to realize a process using a correct PE. A procedure of a concrete dynamic reconfiguration supporting process will be described below.

In the embodiment, information that associates an address and a function with each other is called a “driver function”. The driver function file117is a file showing a specific cluster and a specific PE, which is included in the cluster, to be used when a function described in the application102designated by a user. A procedure that creates the driver function file117by the dynamic reconfiguration supporting program112installed in the PC110will be described below.

Generating Procedure for Address Map

A generating procedure for an address map depending on a configuration of the dynamic reconfiguration circuit unit230will be described below.FIG. 5is a flow chart showing the generating procedure for the address map. In the flow chart inFIG. 5, the configuration defining file101expressing the configuration of the dynamic reconfiguration circuit unit230is acquired (operation S501).

FIG. 6is a data string showing an example of the configuration defining file. In a data string600of the configuration defining file101shown inFIG. 6, pieces of information of a configuration610of cluster0and a configuration620of cluster1are set. For example, (“DRF”2) described in the configuration610of cluster0expresses that two DRFs including DRF0and DRF1are arranged in cluster0. (“RAM”3) expresses that three RAMs including RAM0, RAM1, and RAM2are arranged in cluster0.

Returning to the explanation ofFIG. 5, when the configuration defining file101is acquired in operation S501, address information of PEs (RAM and DRF) in each cluster is acquired to generate the address map116of the dynamic reconfiguration circuit unit230(operation S502). In order to acquire the address information of the PE, for example, the address information may be calculated by using a calculation rule when addresses of PEs in the dynamic reconfiguration circuit are given.

For example, the addresses of the PEs constituting each of the clusters shown inFIGS. 3 and 4are uniquely given by the following equation 1. The calculation rule may be acquired as another external file.
Address of RAMbarranged in clustera=0x100000+0x1000xa+0x1000xb+1000   (1)

FIG. 7is a data string showing an example of an address map. The address map116generated in operation S502inFIG. 5has, for example, a configuration as in a data string700inFIG. 7. A first row of the data string700expresses a base address of a dynamic reconfiguration circuit130. The following left half710of the data string expresses a name of each PE, and the right half of the data string expresses definition of a macro to acquire an address of each PE. Address map116generated as above is stored in PC110(operation S503).

Generating Procedure for Driver Function

A generating procedure for a driver function using the generated address map116will be described below.FIG. 8is a flow chart showing the generating procedure for the driver function. In the flow chart inFIG. 8, the application102executed by the dynamic reconfiguration circuit unit230is read (operation S801).

FIG. 9is a program source showing an example of the application. As shown inFIG. 9, in a function of a program source900, a variable910must be referred to. Therefore, PEs such as a RAM and a DRF which store data corresponding to the variable910must be allocated.

Therefore, in order to generate the configuration data104depending on the LSI chip120, a configuration defining file of the dynamic reconfiguration circuit unit230is acquired (operation S802), and the reconfig C compiler112is executed (operation S803). At this time, when a variable of a function described in the application102is of a vector type, the reconfig C compiler112may be set to allocate a RAM (random access memory) in PEs. When the variable of the function described in the application102is of a scalar type, the reconfig C compiler112may be set to allocate a DRF (data register file) in the PEs. The process of Operation S801and Operation S802described above may be arranged in a random order, or may be processed in parallel.

A compile in operation S803allocates PEs (RAM or DRF) corresponding to functions described in the application102to the functions, respectively, and the allocation result is acquired as the corresponding information115(seeFIG. 1B) between the functions and the PEs (operation S804). In this case,FIG. 10is a data string showing an example of the corresponding information between the functions and the PEs. In a data string1000inFIG. 10, for each function name1010, corresponding information1020between arguments of the functions and the PEs, the corresponding information1030between variables and the PEs, corresponding information1040between return values and the PEs, and the like are set.

Returning to the explanation of the flow chart inFIG. 8, when the corresponding information115between the functions and the PEs are acquired in operation S804, the dynamic reconfiguration supporting program113generates a driver function from the corresponding information115between the functions and the PEs (operation S805). At this time, the driver function to be generated is associated with an address map described by the flow chart inFIG. 5.

The driver function generated in operation S805is operated as the driver function107of an execution code corresponding to the application102and accumulated in the LSI chip120as the load module105together with the main program106serving as the execution code like the driver function107.

The load module105stored in the memory220of the LSI chip120by the above procedure is arbitrarily read and executed when the CPU210accepts an execution designation from the application102by a user or a host system.

In execution of the main program106, an address of a PE of an execution code is replaced with an address of a PE of a dynamic reconfiguration circuit by the driver function107. This replacement makes the configuration defining file101possible to execute a process without erroneously using a PE.

FIG. 11is a program source showing an example of a driver function file. In a concrete example of the above process, as in a program source1100inFIG. 11, a driver function name is automatically generated from a function name and a variable name of the application102by the dynamic reconfiguration supporting program112. The driver function generated in operation S805is applied to an argument and return value portions (1110to1160) of the program source1100.

When the program source1100is to be executed, by a macro function in the C language, RC0_CL1_RAM0(1110) and RC0_CL1_RAM1(1120) are replaced with pieces of address information “0x11000” and “0x112000” set by an address map generated in advance, respectively.

As described above, in the past, when the configuration of the dynamic reconfiguration circuit is changed, the code of the main program106must be appropriately corrected in accordance with a changed address. However, in the embodiment, the dynamic reconfiguration supporting program113may be applied in the configuration change. When the dynamic reconfiguration supporting program113is applied, the CPU210can properly access a PE without correcting the code of the main program106, and a process corresponding to the application102can be executed. Therefore, a processing load on a user can be considerably reduced.

As described above, in the dynamic reconfiguration supporting program, the dynamic reconfiguration supporting method, the dynamic reconfiguration circuit, and the dynamic reconfiguration system according to the embodiment, even though the configuration of the PE is a changeable dynamic reconfiguration circuit, a designated process can be executed without changing description contents of an application and a main program by a user after the configuration change.

A dynamic reconfiguration supporting method described in the embodiment can be realized such that a program prepared in advance is executed by a computer such as a personal computer or a workstation. This program is recorded on a computer readable recording medium such as a hard disk, a flexible disk, a CD-ROM, an MO, or a DVD and executed such that the program is read from the recording medium by the computer. This program may be a transmission medium which can be distributed through a network such as the Internet.