WO2005001689A1 - 電子計算機、半導体集積回路、制御方法、プログラムの生成方法、及びプログラム - Google Patents

電子計算機、半導体集積回路、制御方法、プログラムの生成方法、及びプログラム Download PDF

Info

Publication number
WO2005001689A1
WO2005001689A1 PCT/JP2004/008709 JP2004008709W WO2005001689A1 WO 2005001689 A1 WO2005001689 A1 WO 2005001689A1 JP 2004008709 W JP2004008709 W JP 2004008709W WO 2005001689 A1 WO2005001689 A1 WO 2005001689A1
Authority
WO
WIPO (PCT)
Prior art keywords
command
program
processing device
processing
program data
Prior art date
Application number
PCT/JP2004/008709
Other languages
English (en)
French (fr)
Inventor
Takeshi Inuo
Original Assignee
Nec Corporation
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 Nec Corporation filed Critical Nec Corporation
Priority to US10/561,941 priority Critical patent/US7603542B2/en
Priority to JP2005511009A priority patent/JP4665760B2/ja
Publication of WO2005001689A1 publication Critical patent/WO2005001689A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture

Definitions

  • the present invention relates to an electronic computer, a semiconductor integrated circuit, a control method, a method for generating a program, and a program, in which a part or all of processing by an application program is executed at high speed using reconfigurable hardware. For technology.
  • FIG. 30 shows a method for converting all application programs into dedicated hardware.
  • Fig. 31 shows a method in which part of an application program is converted into dedicated hardware, connected to a general-purpose CPU via a network, processed, and part of the processing is accelerated by dedicated hardware.
  • Fig. 32 shows a method for speeding up the processing by the added instructions by adding a new instruction set to execute the processing by the dedicated hardware inside the CPU by using a part of the application program as dedicated hardware. .
  • the method of implementing the whole or a part of the application on the hardware greatly increases the processing capacity, but requires a huge amount of cost because new hardware must be developed / manufactured for each application. I have.
  • reconfigurable hardware that can form a logic circuit typified by an FPGA (neld programmaole gate array) -vPLD (programmable logic device) can be created by changing the program and reconfiguring the logic circuit. It can be used to perform specific processing specified in the program without replacing the device.
  • FPGA field programmaole gate array
  • VPLD programmable logic device
  • Patent Document 1 JP 08-316329 A
  • Patent Document 2 Japanese Patent Application Laid-Open No. 11-184718
  • Patent Document 3 Patent No. 3099889
  • Patent Document 4 JP 2001-147802 A
  • Patent Document 5 Japanese Patent Publication No. 11-507478
  • the conventional method does not consider the capacity of the logic circuit formed in the reconfigurable hardware, and therefore cannot implement an application program that exceeds the capacity of the reconfigurable hardware. Les ,. Therefore, the larger the size of the application program, the larger the reconfigurable hardware for implementing it and the higher the cost.
  • An object of the present invention is to improve the processing speed at low cost by dividing an application program into processing units, switching the processing for each processing unit, and constructing and executing a logic circuit on reconfigurable hardware,
  • An object of the present invention is to provide an electronic computer, a control method, a program generation method, and a program that can easily reuse an application program. Means for solving the problem
  • a first computer of the present invention includes a processing device including reconfigurable hardware capable of forming a logic circuit by a program, and a control device for executing a command specified by the processing device. Is characterized by including a command to be executed when the processing device detects a predetermined condition, and to execute switching of a program for forming logic of the reconfigurable hardware.
  • the processing device forms a processing element having reconfigurable hardware and a logic circuit of the reconfigurable hardware.
  • a plurality of banks having at least one program data memory for holding a program to be executed, and an effective bank selecting unit for selecting one of the plurality of banks to be valid and connected to the outside.
  • the processing device in the first computer of the present invention, includes a processing element including reconfigurable hardware and a logical circuit of the reconfigurable hardware. It is characterized by having a bank including a plurality of program data memories for holding a program to be formed and an effective block selecting section for selecting one of the plurality of program data memories and making the selected one effective.
  • the fourth computer of the present invention is the same as the second or third computer of the present invention,
  • the processing device is characterized in that at least one processing element is configured by reconfigurable hardware, and the remaining processing elements are configured by reconfigurable hardware or a general-purpose CPU.
  • a fifth computer in the second, third, or fourth computer according to the present invention, when there are a plurality of banks, the control device designates the bank to be valid when there are a plurality of banks.
  • an activate command for designating the program data memory to be activated and starting the operation of the designated processing element, and a halt command for stopping the operation of the designated processing device
  • An interrupt command for issuing an interrupt vector from the control device to the specified processing device, a load_prg command for transferring program data to the specified storage device, and a program_memory, and a cancel_prg command for canceling the load_prg instruction.
  • wait_prg command that waits until the end of the load_prg instruction.
  • a sixth computer of the present invention is the first, second, third, fourth, or fifth electronic computer of the present invention, wherein a command code for holding a command executed by the control device is provided.
  • the control device includes a command code reference device that reads a command from a command code memory in accordance with an address specified by the processing device, and interprets and executes the command.
  • the command code reference device has an address counter that holds an address of the command code memory, and the processing device and the control device The first address control line indicating that the address signal line output from the processing device is valid, and the value of the address signal line when the first control line is valid, is passed to the address counter when the command is passed between the two. And a second address counter control line for instructing whether to store the data in the address counter or to add the value of the address signal line to the value of the address counter and store the value in the address counter.
  • the command is a command code for classifying a command, an address counter control code, and a flag indicating whether to execute a subsequent command.
  • the address counter control code is stored in the command code memory in a format consisting of: It is characterized by including an —adr command and an add—adr command that adds a value specified to the address counter.
  • the address counter control code saves an address counter to an address counter stack provided in the control device, and sets a new address counter. It is characterized by including a push_adr command for setting the value in the address counter and a pop_adr command for returning the value of the address counter stack to the address counter.
  • a tenth computer in any one of the first to ninth computers according to the present invention, controls a cache memory and a cache memory that temporarily hold data to be transferred to the processing device.
  • a cache device including a cache controller is provided, and the cache controller is controlled by a command issued by the processing device.
  • the cache device converts an address defined outside the processing device into an address defined inside the processing device.
  • An address translation device is provided, and the address translation device is controlled by a command issued by the processing device.
  • a twelfth computer of the present invention includes a processing device including reconfigurable hardware capable of forming a logic circuit by a program, and a control device for executing a command specified by the processing device. Includes a command for instructing execution when the processing device detects a predetermined condition, and for executing switching of a program for forming logic of the reconfigurable hardware,
  • the processing device includes a second processing device including reconfigurable hardware capable of forming a logic circuit by a program, and a second control device that executes a command specified by the second processing device.
  • a semiconductor integrated circuit according to the present invention is characterized by mounting any one of the first to eleventh electronic computers according to the present invention.
  • the first control method of the present invention provides an instruction to execute a command when a processing device including reconfigurable hardware capable of forming a logic circuit by a program detects a predetermined condition,
  • the control device that receives the command execution instruction of the processing device executes switching of a program that logically forms the reconfigurable hardware.
  • a second control method according to the present invention is the control method according to the first control method according to the first invention, wherein after the switching, the next program is stored in another program data memory during execution of the program on the predetermined program data memory. The reading is performed in the following manner.
  • one of a plurality of program data memories and a plurality of program data memories that hold reconfigurable hardware and a program that forms a logic circuit of the reconfigurable hardware is provided.
  • a processing device including a valid block selection unit to be selected and validated detects a predetermined condition, it instructs execution of a command, and the control device that receives the command execution instruction of the processing device transmits the command to the valid block selection unit.
  • the reconfigurable hardware executes the activate command for controlling and enabling the designated program data memory to connect to the reconfigurable hardware, and switches the contents of the logic circuit executed by the reconfigurable hardware.
  • the control device may further include a halt command for stopping an operation of the specified processing device, and a halt command specified from the control device.
  • An interrupt command for issuing an interrupt vector to the processing device, a load-prg command for transferring program data from a specified storage device to the program data memory, a cancel-prg command for canceling a load-prg instruction, and a load-prg command It waits until the end of an instruction. Wait— Executes the prg command.
  • a first program generation method analyzes a control flow of an application program, divides the application program into processing units, and executes the divided processing units in an electronic computer.
  • a control flow analysis procedure to generate a command sequence intermediate code that combines commands controlled by a computer, a command sequence implementation procedure to convert a command sequence intermediate code into a format executable by a computer, and generate a command sequence.
  • a program data generation procedure for converting the operation content of the processing unit into a format executable by the computer.
  • the control flow analysis procedure solves a control flow of an application program.
  • each processing unit is divided so that it can be stored in a program data memory holding a program forming the logic of the reconfigurable hardware.
  • the first program of the present invention is to execute a command when a processing device including reconfigurable hardware capable of forming a logic circuit by a program instructs execution of a command when detecting a predetermined condition.
  • the control device that has received the command execution instruction causes the computer to execute a procedure of executing a switch of a program that forms the logic of the reconfigurable hardware.
  • a second program of the present invention selects one of a plurality of program data memories holding a program for forming reconfigurable hardware and a logic circuit of the reconfigurable hardware, and one of the plurality of program data memories.
  • a processing device including a valid block selection unit that determines that a command is to be executed is instructed to execute a command when a predetermined condition is detected
  • the control device that has received the command execution instruction of the processing device controls the valid block selection unit.
  • a halt command for stopping an operation of the specified processing device an interrupt for issuing an interrupt vector from the control device to the specified processing device, Command, specified
  • FIG. 1 is a block diagram showing a configuration of an embodiment of the present invention.
  • FIG. 2 is a block diagram illustrating an example of a processing device according to an embodiment of the present invention.
  • FIG. 3 is a diagram showing an example of a processing element according to the embodiment of the present invention.
  • FIG. 4 is a diagram showing an example of a processing element according to the embodiment of the present invention.
  • FIG. 5 is a diagram showing an example of a processing element according to the embodiment of the present invention.
  • FIG. 6 is a diagram showing a connection example between a control device and a processing element according to the embodiment of the present invention.
  • FIG. 7 is a diagram showing a configuration of a command code implemented in the control device according to the embodiment of the present invention.
  • FIG. 8 is a diagram showing functions of command codes implemented in the control device according to the embodiment of the present invention.
  • FIG. 9 is a diagram showing a connection example of a control device and processing elements according to the embodiment of the present invention.
  • FIG. 10 is a diagram showing a storage example of a command according to the embodiment of the present invention.
  • FIG. 11 is a diagram showing a connection example of a control device and a processing element according to the embodiment of the present invention.
  • FIG. 12 is a diagram showing a storage example of a command according to the embodiment of the present invention.
  • FIG. 13 is a diagram showing a configuration example of an address counter control code according to the embodiment of the present invention.
  • FIG. 14 is a diagram showing an example of functions of an address counter control code according to the embodiment of the present invention.
  • FIG. 15 is a diagram showing a command sequence according to the embodiment of the present invention.
  • FIG. 16 is a block diagram of a configuration according to an embodiment of the present invention to which a cache is added.
  • FIG. 17 is a block diagram showing a configuration example referred to in the description of the operation of the embodiment of the present invention.
  • FIG. 18 is a diagram showing an application implemented by the embodiment of the present invention.
  • FIG. 19 is a flowchart for generating program data according to the embodiment of the present invention.
  • FIG. 20 is a diagram showing a command sequence intermediate code according to the embodiment of the present invention.
  • FIG. 21 is a control flowchart of processing according to the embodiment of the present invention.
  • FIG. 22 is a diagram showing a command sequence harming the command code memory according to the embodiment of the present invention.
  • FIG. 23 is a diagram of program data allocated to a memory according to the embodiment of the present invention.
  • FIG. 24 is a diagram showing a state of the computer when the power is turned on according to the embodiment of the present invention.
  • FIG. 25 is a timing chart showing the operation of the embodiment of the present invention.
  • FIG. 26 is a block diagram including two processing apparatuses according to the embodiment of the present invention.
  • FIG. 27 is a diagram of a command sequence assigned to a memory according to the embodiment of the present invention.
  • FIG. 28 is a timing chart showing operations of the two processing devices according to the embodiment of the present invention.
  • FIG. 29 is a flowchart for generating program data according to the embodiment of the present invention.
  • FIG. 30 is a diagram showing an example of a technique for implementing all of the application programs as dedicated hardware in the conventional technology.
  • FIG. 31 is a diagram showing an example of a technique for implementing a part of an application program as dedicated hardware in the related art.
  • FIG. 32 is a diagram showing an example of a technique for implementing a part of an application program as dedicated hardware in a conventional technique.
  • FIG. 1 is a block diagram showing a basic configuration of a computer according to an embodiment of the present invention.
  • the computer 30 according to the first embodiment of the present invention includes an interface device 40 that controls an external interface and transfers data, a processing device 70 that executes all or a part of processing of an application program, and It includes a control device 60 that executes a command instructed from the processing device 70, and is connected to the external storage device 10 via the connection network 20.
  • the computer 30 in FIG. 1 includes two processing devices 70, the number may be one or three or more.
  • the processing device 70 includes a memory unit 80 and a processing unit 90.
  • FIG. 2 is a diagram showing an example of the configuration of the processing device 70.
  • a bank 101 comprising one processing element 91 and one program data memory 81, and a plurality of program data memories 81 for one processing element 91 are shown.
  • an effective block selection unit 82 for selecting and outputting one of a plurality of processing elements 91 as a constituent element.
  • the processing device 70 includes two banks 101 and two banks 102, it is sufficient to include at least one of the banks 101 and 102.
  • the effective block selecting section 82 can be omitted if the configuration is one bank, and the selection memory 83 can be omitted if the bank and the program data memory 81 have one configuration.
  • the program data signal S 80 input to the processing device 70 is connected to a program data memory 81 and a selection memory 83.
  • the program data memory 81 is a memory for holding a program for determining the processing content of the processing element 91.
  • the program stored in the program data memory 81 is usually stored in the external storage device 10, and is transferred via the connection network 20, the interface device 40, and the program data signal S80 as necessary, and is written into the program data memory 81.
  • the processing element 91 is reconfigurable hardware such as an FPGA
  • the program stored in the program data memory 81 is a processing element. This is a program for forming 91 logic circuits.
  • the processing element 91 executes a process according to the contents of the program stored in the connected program data memory 81.
  • it is realized by reconfigurable hardware as shown in FIG. 3, but may be realized by a CPU as shown in FIG.
  • the selection memory 83 is connected to the valid bank selection unit 92 and the valid block selection unit 82, selects a bank to be validated in the processing device 70, and stores a plurality of program data memories like the bank 102. Holds information for selecting the program data memory 81 to be enabled in the bank composed of 81. Since switching to the program data memory 81 is instantaneous, if the storage of the program in the switched program data memory 81 is completed, the processing element 91 immediately starts processing corresponding to the new program. be able to. However, if the program has not been stored, it is necessary to wait until the data transfer ends and the program is stored.
  • the command signal S91 output from the processing device 70 is generated from the processing element 91 of the processing device 70.
  • the interrupt signal S92 input to the processing device 70 is input to the processing element 91 of the processing device 70 and used in the course of the processing.
  • the processing data signal S93 input / output to / from the processing device 70 is connected to the processing unit 90, and is used as an input / output line for data necessary for processing and data that has been processed.
  • the command signal S91, the interrupt signal S92, and the processing data signal S93 are input and output to and from the processing device 90 of the bank enabled by the selection memory 83.
  • the data input to the processing device 70 is controlled from the selection memory 83 or the like so that the input data is cut off so that the data connected to all the processing devices 90 is not input to the invalid bank.
  • the processing element 91 is composed of reconfigurable hardware such as a conventional FPGA or PLD as shown in FIG. However, when there are a plurality of components 91, one or more of them may be configured by the CPU 120 as shown in FIG.
  • the component 91 composed of the CPU 120 is mainly used for processing by allocating a part for processing the application program in a high-level language and controlling the inside of the processing device 70.
  • processing element 91 is composed of CPU 120 In FIG. 4, since the program can be read via the processing data signal S93, the program data connection line S101 in FIG.
  • the control device 60 in the computer 30 may be realized by reconfigurable hardware, and the reconfigurable control device R60 may be configured. As shown in FIG. 5, the reconfigurable control device R60 is set using the program data connection line S101, and can change the processing content according to the set content. Further, the command signal S91, the interrupt signal S92, and the processing data signal S93 are input / output via the interface device 40.
  • the interface device 40 connects the processing device 70 or the control device 60 to the external connection network 20 of the computer 30, and when communication regarding control occurs from the connection network 20 to the computer 30, the connection is established.
  • a command signal S41 is output to the controller 60 based on an appropriate protocol of the network 20.
  • communication relating to control of the interrupt signal S42 or the like occurs from the control device 60 to the interface device 40, the communication is similarly transmitted to the designated connection destination via the connection network 20 using an appropriate protocol.
  • the interface device 40 accesses the outside based on an appropriate protocol.
  • the interface device 40 accesses based on an appropriate protocol.
  • the control device 60 receives a command signal S41 transmitted from a device external to the computer 30 via the interface device 40 and a command signal S91 output from the processing device 70, and interprets and executes the received command.
  • FIG. 6 shows an example of a protocol when the processing device 70 issues the command signal S91 to the control device 60. This protocol may be applied to a protocol between the interface device 40 and the control device 60.
  • FIG. 6 is a diagram showing a method in which the processing device 70 directly passes the command code signal S912 together with the request signal S911. Upon receiving the command code signal S912, the control device 60 performs processing according to the contents of the command code, and returns a response signal S921 at the end of the processing.
  • FIGS. 7 and 8 show examples of command codes interpreted and executed by the control device 60.
  • FIG. FIG. 7 is a diagram showing the configuration of a command code.
  • a command code A10 is composed of a command code name All and a command code parameter A12.
  • Figure 8 is a list of command execution contents Indicates the six commands described below.
  • Activate controls the effective bank selection unit 92 and the effective block selection unit 82 by writing the code indicated by the command code parameter A12 into the selection memory 83, and stores the selected program data memory 81 in the same bank.
  • the processing element 91 For example, as shown in FIG. 3, when the processing element 91 is configured with reconfigurable hardware, activating the processing means setting the program data to the reconfigurable hardware, The activated reconfiguration hardware immediately starts processing according to the contents of the program data memory 81.
  • the interrupt issues the specified interrupt vector signal S922 to the processing device 70 specified by the command code parameter A12.
  • load-prg transfers program data stored in the external storage device 10 or any other storage device to the area of the program data memory 81 specified by the command code parameter A12.
  • the control device 60 interprets an arbitrary combination (command set) of the commands shown in FIG. 8, performs appropriate processing for each command, and processes an interrupt including a response signal. 70 and output to the outside of the computer 30 via the interface device 40.
  • the analysis, processing, and interruption of the command may be performed in parallel for each processing device 70.
  • FIGS. 9 and 11 show examples of another protocol when the processing device 70 issues the command signal S91 to the control device 60.
  • This protocol may be applied to a protocol between the interface device 40 and the control device 60.
  • FIG. 9 is a diagram showing a method in which the control device 60 has a command code reference device 61 and a command code memory 63, and the processing device 70 passes an address signal S913 together with a request signal S911.
  • FIG. 10 is a diagram showing an example of a command code stored in the command code memory 63.
  • the address signal S913 is a command storing a command to be executed by the control device 60. Indicates the address of the code memory 63.
  • the control device 60 that has received the address signal S913 refers to the command code memory 63 using the command code reference device 61, and executes the command corresponding to the address signal S913.
  • the command code memory 63 may be any memory such as a memory external to the control device 60 or the external storage device 10 that can be referred to from the control device 60. Further, when there are a plurality of processing units 70, a plurality of command code reference units 61 may be provided in the control unit 60 so that commands may be processed in parallel. 61 may be provided.
  • the protocol shown in FIG. 9 includes a command code reference device 61 and a command code memory
  • the number of bits of memory addresses can be smaller than the number of bits of data.Therefore, the number of signal lines connected between the control unit 60 and the processing unit 70 is smaller than that of the protocol shown in FIG. Can be reduced.
  • FIG. 11 shows that the control device 60 has a command code reference device 61 and its address counter 62, and the processing device 70 controls the address counter 62 using the request signal S911 and the address operation signals S914 and S915,
  • FIG. 9 is a diagram showing a method of passing an address to a control device 60 using an address signal S913 if necessary.
  • the command code reference device 61 and its address counter 62 may be provided for each processing device 70 to be connected.
  • the address signal S913 passed from the processing device 70 is stored in the address counter 62. .
  • the address counter operation signal S914 is valid and the address counter operation signal S915 indicates off set, the value of the address signal S913 passed to the processing device 70 is added to the address counter 62.
  • the adr_ena address counter operation signal S914 is invalid, the address signal S913 passed from the processing device 70 is ignored, and the value of the address counter 62 is retained.
  • control device 60 refers to the value of the address counter 62 and the command code memory 63 in which the command is stored by using the command code reference device 61 and stores the command. Processing of the current command, and after completion, the response signal S92 Returns 1.
  • FIG. 12 is a diagram showing an example of a command code stored in the command code memory 63 in the configuration of FIG. As shown in FIG. 12, the command code memory 63 may not include the address counter control code A20 and the flag A30 in addition to the command code A10.
  • the control device 60 specifies the address counter control code A20 before returning the response signal S921 to the processing device 70. Perform the processing that
  • FIG. 13 shows details of the address counter control code A20.
  • the address counter control code A20 is composed of an address counter control code name A21 and an address counter control code parameter A22 as its parameter.
  • Figure 14 shows an example of the address counter control code.
  • load_adr sets the value of the address counter control code parameter A22 as the value of the new address counter 62.
  • add_adr adds the value of the address counter control code parameter A22 to the value of the address counter 62.
  • push asdr stores the current value of the address counter 62 (not shown) in the address counter stack, and sets the value of the address counter control code parameter A22 as the new value of the address counter 62.
  • pop The adr instruction pops a value from the address counter stack and sets that value as the new address counter 62 value.
  • the address counter stack may be provided in the command code reference device 61.
  • the flag A30 is used as a flag as to whether or not to continue to refer to and execute a command using the new value of the address counter 62 after executing the address counter control code A20.
  • the flag for continuously executing the command is cont
  • the flag for not executing the command is stop and ci.
  • the command code memory 63 stores a command sequence as shown in FIG. 15, and the processing device 70 issues a command with the address signal S913 set to 100 and the address counter operation signal S914 disabled. Then, the control device 60 executes the command codes in the order of Y100, Y101, and $ 200.
  • the processing device 70 is controlled by the command code. Since it is only necessary to output the address signal S913 when it is necessary to issue the command, the processing unit 90 in the processing device 70 can generate the address signal S913 with a small amount of hardware resources.
  • the protocol between the processing device 70 and the control device 60 may be configured by selecting one of FIGS. 6, 9, and 14, or by arbitrarily combining these. It is also possible to incorporate a plurality of configurations and add control lines as necessary to switch the protocol. For example, a control line may be added so that the protocol shown in FIG. 6 or the protocol shown in FIG. 11 can be selected.
  • a cache device 50 including a cache controller 130 is added to the computer 30 of FIG.
  • the controller 130 may be configured to be controlled by a command.
  • the cache device 50 includes three cache controllers 130 and is connected to the control device 60, the memory unit 80, and the processing unit 90, respectively.
  • the cache controller 140 may have a plurality of ports of the cache memory 140.
  • the address translator 150 may be shared between a plurality of cache controllers.
  • the cache controller 130 includes, for example, a cache memory 140 that temporarily stores data that is stored in the external storage device 10 or the like and is accessed by the processing device 70, and an address translation device 150.
  • the cache controller 130 is controlled by a command, and mainly performs data transfer between the cache memory 140 and the external storage device 10 and data transfer between the cache memory 140 and the control device 60 or the processing device 70. Operates in parallel with 70 and control device 60.
  • the address translator 150 is a device for translating addresses between the address space of the processing device 70 and the address space of the interface device 40, and can have an independent address space in the processing device 70. . Further, by providing the address translator 150 for each processing device 70, an independent address space can be defined for each processing device 70.
  • the address translation device 151 provided in the interface device 40 is provided between the computer 30 and the external storage device 10 or another device connected to the computer 30 via the connection network 20. Address conversion is performed on the difference in the address space.
  • the processing device 70 controls the address translation device 150 by executing a command in the control device 60.
  • the commands for controlling the cache controller are not shown in FIG. 8, for example, when the address translator 150 includes a translation buffer for storing the translated address and the translated address in pairs. Can be provided with commands to control the registration, deletion, replacement, etc. in the buffer.
  • a command for setting a specific area in the cache memory 140 as a local memory area dedicated to the processing device 70 may be added.
  • the scheduling by performing the data flow analysis, and the cache to be used and the control of the cache are described in advance as a command sequence, so that the processing by the processing unit 70 and the control by the control unit 60 can be performed.
  • Data flow control can be performed in parallel, and the processing capability of the processing device 70 is improved. Also, since the processing device 70 issues the command at a necessary timing, unnecessary overhead does not occur.
  • the cache controller 130 is controlled by a command so that each device
  • the present computer 30 may be realized as an LSI including one or more of the present computers 30 or a part of the present computer 30 as an LSI. Further, the computer 30 may be logically implemented on reconfigurable hardware such as an FPGA or a PLD.
  • FIG. 17 a method of generating a program for generating a command to be executed by the controller 60 by dividing an application program to be processed by the computer into processing units to be stored in the program data memories 811 to 813 is described.
  • the operation * control method in the computer 30 in the configuration of FIG. 17 will be described. Referring to FIG. 17, one process having one bank of processing elements 110 connected to three program data memories 811, 812, and 813 via effective block selection 82 and realized by reconfigurable hardware is provided. There is a device 71, the address of which specifies direct / offset from Fig. 11.
  • Counter control S915 connects the control device 60 and the processing device 71 with the protocol omitted, and the command signal between the control device 60 and the interface device 40
  • the configuration is such that S41 and interrupt signal S42 are omitted.
  • the command set implemented in the control device 60 of FIG. 17 is as shown in FIG. 8, and the address counter control code implemented in the control device 60 is as shown in FIGS. 13 and 14.
  • the cache device 50 is omitted.
  • FIG. 18 is a control flow diagram showing an example of the flow of processing contents of an application executed by the processing element 110 in FIG. As shown in FIG. 18, the application executes the process shown in the control flow while dynamically switching through the initial state CO, and enters the end state C9 when all the processes are completed.
  • the initial state CO is the state immediately before processing P1 can be started.
  • the end state C9 is, for example, a state in which all the processing devices 71 in FIG. 17 are stopped.
  • the processing content of the application shown in FIG. 18 has five states (CI, C2, C3, C4, and C5) and four types of processing contents (PI, P2, P3, and P4). Transitions unconditionally to state C1.
  • the processing P1 is performed.
  • the processing P2 is performed, and the state transits to the state 3 under the condition F2a and to the state 4 under the condition F2b.
  • state C3 processing P1 is performed, and a transition is made to state 5 in condition F3.
  • the processing P3 is performed, and the state transits to the state 5 in the condition F4.
  • the processing P4 is performed, and in the condition F5, the state transits to the end state C9.
  • FIG. 19 is a flowchart for generating a program for executing an application.
  • the flow shown in Fig. 19 is a control flow analysis procedure Ml that generates a command sequence to be executed after each process, a command sequence implementation procedure M2 that converts a command sequence into a data sequence, and a program data generation procedure that generates program data. It is composed of M3, receives the control flow of the entire application, the end, the configuration information of the computer 30 and its command set, etc., the command sequence code indicating the initial state CO of the computer, and all the commands used in each processing device. Program data and the command system referenced by them Output one can code.
  • the control flow analysis procedure Ml, the command sequence implementation procedure M2, and the program data generation procedure M3 are each realized by a program.
  • the control flow analysis procedure Ml analyzes each process (P1 to P4), the corresponding state (C1 to C5), the transition condition (F1 to F5) corresponding to each state, and the transition destination. Then, each process is harmed to one of the program data memory 811 and the program data memory 813, and the command is executed so that the effective block selecting unit 82 is switched and each process is continuously executed so that a transition to the next state can be performed. Generate an intermediate code for the sequence.
  • FIG. 20 shows an example of an intermediate code of a command sequence generated as a result of analyzing the application of FIG. 18 by the control flow analysis procedure Ml.
  • the effective block selection unit 82 has selected the program data memory 811 when the power is turned on.
  • the parameter 812 of the command “load_prg 812, PM1” of the command sequence SQ0 is sent to the processing element 110, and the program data generated to execute the process P1 is loaded into the program memory data memory. 812, and PM 1 indicates a memory area where the program data is stored.
  • the program data PM1 specified by PM1 is stored in any memory including the external storage device 10. At this stage, since the program data PM1 itself has not been generated, it indicates an empty memory area.
  • the program data PM2, PM3, and PM4 also specify the areas of the memory where the program data generated to execute the processing P2, the processing P3, and the processing P4 are stored.
  • a state C4 is a state in which the process P3 is being executed, and when the condition F4 is satisfied in this state, the command sequence SQ4 is started.
  • the processing content of the command sequence SQ4 is to wait until all the program data PM4 is transferred to the program data memory 813 by "wait_prg 813, PM4", and then "activate” to select and start the program data memory 813 .
  • the processing element 110 starts the processing determined by the program stored in the program data memory 813.
  • the processing element 110 starts the process PM4. This means that the state transitions to state C5.
  • FIG. 22 shows a state in which the command sequence of FIG. 20 is allocated to the memory using the command sequence implementation procedure # 2, and the calling of the command sequence in each process is performed by the control device 60 and the processing device in the configuration of FIG.
  • FIG. 21 shows the control flow for each process converted to the protocol of the interface with the interface 71.
  • FIGS. 21 and 22 show the command sequence SQ0A that is executed first after the power is turned on. Execution of the command sequence SQ0A causes a transition to the initial state CO. In the state CO, since the valid block selection unit 82 has selected the program data memory 811, the processing element 110 starts the operation of the program stored in the program data memory 811 after the power is turned on.
  • each process is a control flow at power-on and in which each command sequence issuance process is added to the original process (PI, P2, P3, P4).
  • the command issuing process SQ2bA is executed, and when the condition F2b is satisfied, the command issuing process SQ2bA is executed.
  • the processing device 71 executes the command issuing process SQ2aA, a request signal S911 and an address signal S913 indicating an adr_ena address counter operation signal S914 and ADR002 are output.
  • the control device 60 since the address ADR002 indicates the command sequence SQ2a, the control device 60 executes the contents of SQ2a.
  • FIG. 21 shows an example of storing each generated program data in the memory.
  • the memory area where the generated program data PM1, PM2, PM3, PM4 is stored is reflected in the parameters of each command sequence in FIG.
  • FIG. 25 is a timing chart summarizing the above-described operation. This will be described with reference to FIGS. 25 and 17, FIG. 18, FIG. 21, FIG. 22, FIG. 23, and FIG.
  • the horizontal axis represents the value of the address counter 62 in the control device 60, the operation content of the control device 60, the operation content of the processing element 110, and the content of the interrupt vector signal S922 input to the processing element 110.
  • the contents of the program data stored in each of the program data memories 811, 812, and 813 and the transfer state of the program data are shown, and the vertical axis indicates the elapsed time downward from T101.
  • the portions of the program data memories 811, 812 and 813 indicated by stitches indicate that the program data is being executed.
  • the timing of T101 is the state of the computer 30 when the power is turned on as shown in Fig. 24.
  • the program data PM0 for executing the command issuing process SQ0A is stored in the program data memory 811. Is stored.
  • the processing element 110 starts the operation of PM0, and executes the command issuing process SQ0A.
  • the command reference device 61 of the control device 60 sets the address value ADR000 in the address counter 62, and stores the command stored in ADR000 in the command code memory 63 in which the command sequence of FIG. 22 is stored. Is read, and "load_prg #" is executed in T103.
  • the control device 60 executes "load_prg #" and starts transferring the program data PM1 to the program data memory 812. Information on the storage location of the program data PM1 shall be included in PM1 of the parameter of "load_prg".
  • the force stored in the external storage device 10 as shown in FIG. Store it in memory.
  • control device 60 since the address counter control code of ADR000 is also set to execute the next command, control device 60 adds 1 to address counter 62 and executes the next instruction at T104. . At T104, the control device 60 waits until all the program data PM1 is transferred to the program data memory 812, and when the transfer is completed at T105, the control device 60 continues to execute the next instruction at T106.
  • the control device 60 executes "activate 812" at T107, the selection memory 83 is updated with information for selecting the program data memory 812, and the valid block selection 82 is replaced with the selection memory 83. Is switched to the program data memory 812, and the operation of the processing element 110 is switched, and the processing of the PM1 stored in the program data memory 812 is started.
  • the control device 60 terminates the processing of the series of command sequences started from T102 from the address counter control code "add-adr 0 / st o ⁇ ".
  • the control device 60 that has received the command issuing process SQ1A at T110 updates the value of the address counter 62 to the value of ADR001.
  • the control device 60 reads the command code memory 63, executes "activate 813", and stores the processing content of the processing element 110 in the program data memory 813. Switch to the processing of.
  • the command issuing process SQ5A is executed.
  • the control device 60 that has received the command issuing process SQ5 A refers to the command code memory 63 and executes 'halt' for the processing device 71 at T124. Ends the operation, and the control device 60 that has executed "halt" also finishes interpreting and executing the command sequence.
  • the generated program data is PM0, PM1, PM2, PM3, and PM4, but three program data memories 811, 812, and 813 are used. This indicates that an application that exceeds hardware resources can be implemented in the computer 30.
  • the processing device 71 includes only one bank. However, when the processing device 71 includes two or more banks, the program data PM0-PM4 is stored in the program data memory of a plurality of banks. And may be executed by a processing element configured by each reconfigurable hardware. In this case, the output of the processing device becomes a command or output data of the processing element selected by the valid bank selecting unit 92, the processing element selected by the valid bank selecting unit 92 operates effectively, and the program data memory and the processing element are connected. Processing will proceed while switching.
  • FIG. 26 shows a configuration in which a processing device 72 is added to the configuration including one processing device 71 in FIG. Further, the command SQ0A, which triggers the start of the operation, is issued from the processing device 72 instead of the processing device 71. In addition, the command sequence SQ5 of the processing device 71 shown in FIG. 22 is changed to the command sequence SQ5B shown in FIG. 27, and "interrupt 72, END71" is added after "halt", and processing is performed. The end of the device 71 is notified to the processing device 72 by interruption.
  • FIG. 28 is a timing chart showing the above operation in which the processing device 72 executes the issuing of the command SQ0A, and the processing device 71 notifies the processing device 72 of its own termination by “interrupt”.
  • the processing device 72 includes the processing device 71 in the process P5. Executes SQOA for issuing commands for initialization of The control device 60 that has received the command issuing process S Q0A at T201 executes the command sequence SQ0.
  • the processing device 71 initialized in T202 performs a series of processes as shown in FIG. 25, and executes the command issuing process SQ5A in T203.
  • the control device 60 executes the command sequence SQ5B, stops the processing device 71 at T204 by executing "halt", and outputs an interrupt to the processing device 72 at T205 by executing "interrupt".
  • the processing device 72 can execute another process P6 immediately after executing the command issuing process SQ0A in T201 while executing the process P5. Then, it is also possible to wait for an interrupt from the processing device 71 in the process P6 and then shift to the subsequent process P7. Of course, the processing device 72 may simply wait for an interrupt from the processing device 71 without executing the process P6.
  • the end state after “halt” is executed in the processing device 71 is set as the initial state of the processing device 71, and the same processing is executed from the processing device 72 as many times as necessary. be able to.
  • the processing element 72 can have the configuration shown in FIGS. 2, 3, 4, and 5. Particularly, when the CPU 120 is included as a component of the processing element 72, The processing element 71 may be used as a function call or a system call, or a thread or an object including them, or as an extension of the instruction of the CPU 120.
  • the computer 30 can receive a command from the outside via the connection network 20, so that the command issuing process SQ0A may be executed from outside the computer 30. Good. Further, as shown in FIG. 5, since the processing elements of the processing device 70 can be realized by the computer 30, the processing may be subdivided and implemented.
  • control device 60 is a reconfigurable control device R60 as shown in FIG. Is used in the command sequence intermediate code in the generation flow as shown in Fig. 29. Only the commands may be used as a command set, and the control device R60 may be configured with only a subset of the commands. With this configuration, it is possible to simplify the control device 60.
  • the configuration described in the configuration excluding the cache device 50 illustrated in Fig. 16 may be configured to include the cache device 50 in the configuration illustrated in Figs. 17 and 26.
  • the cache device 50 By installing the cache device 50, it is possible to reduce the data transfer time to and from the outside of the computer 30.
  • the provision of the address translation device 150 allows the processing device to have a unique address space. It is possible to make it.
  • control device 60 and the processing device 70 may be newly designed and manufactured based on the analysis result of the mounting flow.
  • the processing of an application program is divided into a plurality of processing units and executed by reconfigurable hardware while switching a program forming a logic circuit for each processing unit.
  • Even large application programs can be executed with small reconfigurable hardware, so application programs can be executed at high speed with an inexpensive configuration.
  • processing unit programs can be easily applied by changing the command sequence of processing units. It can be applied to a new application program and a new computer can be constructed at low cost.
  • a plurality of program data memories for holding a program forming a logic circuit are provided, and during the execution of a processing unit, the program of the next processing unit is read out to another program data memory, whereby the program at the time of switching can be obtained. And the switching time can be shortened and the processing speed can be improved.

Abstract

 アプリケーションプログラムを処理単位に分割して切り換えて再構成可能ハードウェアに論理回路を構築して実行させることにより低コストで処理速度を向上させ、アプリケーションプログラムを容易に再利用可能とすること。論理回路をプログラムにより形成可能な再構成可能ハードウェアをからなる処理部90と処理部90の論理回路の形成を決めるプログラムを保持するメモリ部80を含む処理装置70と、処理装置70の指定したコマンドを実行する制御装置60とを有し、前記コマンドは、処理装置70が所定の条件を検出した際に処理部90から実行を指示され、前記メモリ部80に保持するプログラムを置き換えたりメモリ部80が複数のプログラムデータメモリ81から構成される場合に有効とするプログラムデータメモリを切り換えたりするコマンドを含む。

Description

明 細 書
電子計算機、半導体集積回路、制御方法、プログラムの生成方法、及び 技術分野
[0001] 本発明は、電子計算機、半導体集積回路、制御方法、プログラムの生成方法、及 びプログラムに関し、アプリケーションプログラムによる処理の一部分もしくはすべてを 再構成可能なハードウェアを使用して高速に実行させるための技術に関する。
背景技術
[0002] 従来、 CPUの処理能力を越えるようなアプリケーションプログラムを実行するために 、専用ハードウェアを用いる手法が提案 Z開発されている。図 30はアプリケーション プログラムの全てを専用ハードウェア化する手法である。図 31はアプリケーションプロ グラムの一部を専用ハードウェア化し、汎用 CPUとネットワークを介して接続して処理 し、処理の一部を専用ハードウェアにより高速化する手法である。図 32はアプリケー シヨンプログラムの一部を専用ハードウェア化し、 CPUの内部に専用ハードウェアで 処理を実行する新たな命令セットを追加することで追加した命令で処理する部分を 高速化する手法である。
このように、ハードウェアにアプリケーション全体もしくは一部を実装する手法は、処理 能力を大幅に向上する反面、アプリケーション毎に新規にハードウェアを開発/製造 する必要があるため、膨大な費用を必要としている。
一方、 FPGA (neld programmaole gate array) -vPLD (programmable logic device)に 代表されるような論理回路をプログラムにより形成可能な再構成可能ハードウェアは プログラムを変更して論理回路を再構成することで、デバイスを取り替えることなくプ ログラムで指定した特定の処理を実行することができ、注目されている。
近年では、専用ハードウェアの代わりとしてこの再構成可能ハードウェアを用いること で、ハードウェアを新規に製造することなぐつまり低コストで、高い処理能力を必要と するアプリケーションプログラムを再構成可能ハードウェアで実現する方法及びその 装置が提案されている。 例えば、特開平 08-316329ゃ特開平 11-184718号公報では専用ハードウェアの 代わりに再構成可能ハードウェアを用いている。また、特許 3099889号公報では CP Uに付加する拡張命令を再構成可能ハードウェアで実現している。
[0003] 特許文献 1 :特開平 08— 316329号公報
特許文献 2:特開平 11 - 184718号公報
特許文献 3:特許 3099889号公報
特許文献 4 :特開 2001— 147802号公報
特許文献 5:特表平 11 - 507478号公報
発明の開示
発明が解決しょうとする課題
[0004] 上記、従来の手法では、再構成可能ハードウェアに形成する論理回路の容量を考 慮していないため、再構成可能ハードウェアの容量を越えるようなアプリケーションプ ログラムを実装することができなレ、。従って、アプリケーションプログラムの規模が大き くなればなるほどそれを実装するための再構成可能ハードウェアの規模も大きくなり 高コストとなる。
[0005] 一方、低コストィヒのために、容量の小さい再構成可能ハードウェアにアプリケーショ ンプログラムを実装する場合には、ハードウェアリソースに実装できる論理回路のサイ ズを意識してアプリケーションプログラムを分割する必要がある。
し力 ながら、分割したプログラムやそのプログラム間の制御は実装するァーキテクチ ャに強く依存するという問題を持つ。従って、分割したプログラムやそのプログラム間 の制御はアーキテクチャが変わると再利用することができなくなり、プログラムの設計 効率を著しく低下させる。
[0006] さらに、アプリケーションプログラムの分割の妥当性 (再構成可能ハードウェアに実 装可能かどうか)は再構成可能ハードウェアとして実現する機能の最終段階、すなわ ち再構成可能ハードウェアへの論理回路のマッピングの段階で判明するため、例え ば実装可能なサイズを越えてしまうような、不具合のある分割は大幅な設計の後戻り となり、設計効率が著しく低下する。
[0007] また、特開 2001—147802号公報や特表平 11—507478号公報のように、分割し た処理の間の制御を再構成可能ハードウェアの外部の CPUで制御する場合では、 分割した処理間の制御は CPUのプログラムデータとして再利用可能である力 s、分割 した処理自体は、実装した再構成可能ハードウェアのアーキテクチャや実装可能な 容量に依存してしまうため、再利用できない。さらに、処理間の制御を CPUで行なう ため、 CPUと再構成可能ハードウェアとの間でシステムコールのオーバヘッドなどの 待ち時間が生じてしまい、性能が低下する。これらの問題はアプリケーションプロダラ ムの規模が大きくなるほど顕著に現れてくる。
[0008] 本発明の目的は、アプリケーションプログラムを処理単位に分割して処理単位毎に 切り換えて再構成可能ハードウェアに論理回路を構築して実行させることにより低コ ストで処理速度を向上させ、アプリケーションプログラムを容易に再利用可能とした電 子計算機、制御方法、プログラムの生成方法、及びプログラムを提供することにある。 課題を解決するための手段
[0009] 本発明の第 1の電子計算機は、論理回路をプログラムにより形成可能な再構成可 能ハードウェアを含む処理装置と処理装置の指定したコマンドを実行する制御装置 とを有し、前記コマンドは、処理装置が所定の条件を検出した際に実行を指示され、 再構成可能ハードウェアを論理形成するプログラムの切り換えを実行するためのコマ ンドを含むことを特徴とする。
[0010] 本発明の第 2の電子計算機は、本発明の第 1の電子計算機において、前記処理装 置は、再構成可能ハードウェアを有する処理要素と前記再構成可能ハードウェアの 論理回路を形成するプログラムを保持する 1以上のプログラムデータメモリとを有する 複数のバンクと、複数のバンクから 1つを選択して有効とし外部と接続する有効バンク 選択部とを有することを特徴とする。
[0011] 本発明の第 3の電子計算機は、本発明の第 1の電子計算機において、前記処理装 置は、再構成可能ハードウェアを含む処理要素と前記再構成可能ハードウェアの論 理回路を形成するプログラムを保持する複数のプログラムデータメモリと複数のプロ グラムデータメモリから 1つを選択して有効とする有効ブロック選択部とを含むバンク を有することを特徴とする。
[0012] 本発明の第 4の電子計算機は、本発明の第 2又は第 3の電子計算機において、前 記処理装置は、少なくとも 1つの処理要素は再構成可能ハードウェアで構成され、残 りの処理要素は再構成可能ハードウェア又は汎用 CPUで構成されることを特徴とす る。
[0013] 本発明の第 5の電子計算機は、本発明の第 2、第 3、又は第 4の電子計算機におい て、前記制御装置は、前記バンクが複数ある場合は有効とする前記バンクを指定す るとともに前記プログラムデータメモリが複数ある場合は有効とする前記プログラムデ 一タメモリを指定し指定した前記処理要素の動作を開始する activateコマンドと、指 定した前記処理装置の動作を停止する haltコマンドと、前記制御装置から指定した 前記処理装置へ割り込みベクタを発行する interruptコマンドと、指定した記憶装置 力、ら前記プログラムデータメモリへプログラムデータを転送する load_prgコマンドと、 load_prg命令を中止する cancel_prgコマンドと、 load_prg命令の終了まで待機 する wait_prgコマンドとを解釈実行することを特徴とする。
[0014] 本発明の第 6の電子計算機は、本発明の第 1、第 2、第 3、第 4、又は第 5の電子計 算機において、前記制御装置が実行するコマンドを保持するコマンドコードメモリを 有し、前記制御装置は前記処理装置から指示されたアドレスに従ってコマンドコード メモリからコマンドを読み出して解釈実行するコマンドコード参照装置を有することを 特徴とする。
[0015] 本発明の第 7の電子計算機は、本発明の第 6の電子計算機において、前記コマン ドコード参照装置は前記コマンドコードメモリのアドレスを保持するアドレスカウンタを 有し、前記処理装置と制御装置間のコマンドの受渡しにおいて、前記処理装置が出 力したアドレス信号線が有効であることを示す第 1のアドレス制御線と、第 1の制御線 が有効の場合アドレス信号線の値をそのままアドレスカウンタに格納するか或いはァ ドレス信号線の値をアドレスカウンタの値に加算してアドレスカウンタに格納するかを 指示する第 2のアドレスカウンタ制御線を備えることを特徴とする。
[0016] 本発明の第 8の電子計算機は、本発明の第 7の電子計算機において、前記コマン ドはコマンドを分類するコマンドコードとアドレスカウンタ制御コードと後続のコマンド を実行するかどうかを示すフラグとからなるフォーマットで前記コマンドコードメモリに 格納され、前記アドレスカウンタ制御コードは、アドレスカウンタに値を設定する load —adrコマンドと、アドレスカウンタに指定した値を加算する add— adrコマンドとを含 むこと特徴とする。
[0017] 本発明の第 9の電子計算機は、本発明の第 8の電子計算機において、前記アドレ スカウンタ制御コードは、アドレスカウンタを前記制御装置に設けたアドレスカウンタス タックに退避するとともに新たな値をアドレスカウンタに設定する push_adrコマンドと 、アドレスカウンタスタックの値をアドレスカウンタに戻す pop_adrコマンドとを含むこ と特徴とする。
[0018] 本発明の第 10の電子計算機は、本発明の第 1乃至第 9のいずれかの電子計算機 において、前記処理装置に転送するデータを一時的に保持するキャッシュメモリとキ ャッシュメモリを制御するキャッシュコントローラを含むキャッシュ装置を有し、前記処 理装置が発行するコマンドによってキャッシュコントローラの制御を行なうことを特徴と する。
[0019] 本発明の第 11の電子計算機は、本発明の第 10の電子計算機において、前記キヤ ッシュ装置は前記処理装置の外部で定義するアドレスを処理装置の内部で定義され るアドレスに変換するアドレス変換装置を有し、前記処理装置が発行するコマンドに よってアドレス変換装置の制御を行なうことを特徴とする。
[0020] 本発明の第 12の電子計算機は、論理回路をプログラムにより形成可能な再構成可 能ハードウェアを含む処理装置と処理装置の指定したコマンドを実行する制御装置 とを有し、前記コマンドは、処理装置が所定の条件を検出した際に実行を指示され、 再構成可能ハードウェアを論理形成するプログラムの切り換えを実行するためのコマ ンドを含み、
前記処理装置は、論理回路をプログラムにより形成可能な再構成可能ハードウェア を含む第 2の処理装置と第 2の処理装置の指定したコマンドを実行する第 2の制御装 置力 構成されることを特徴とする。
[0021] 本発明の半導体集積回路は、本発明の第 1乃至第 11のいずれかの電子計算機を 実装したことを特徴とする。
[0022] 本発明の第 1の制御方法は、論理回路をプログラムにより形成可能な再構成可能 ハードウェアを含む処理装置が所定の条件を検出した際にコマンドの実行を指示し、 処理装置のコマンド実行指示を受けた制御装置が再構成可能ハードウェアを論理形 成するプログラムの切り換えを実行することを特徴とする。
[0023] 本発明の第 2の制御方法は、本発明の第 1の制御方法において、前記切り換えの 後、所定のプログラムデータメモリ上のプログラムの実行中に次のプログラムを別のプ ログラムデータメモリに読み出すことを特徴とする。
[0024] 本発明の第 3の制御方法は、再構成可能ハードウェアと再構成可能ハードウェアの 論理回路を形成するプログラムを保持する複数のプログラムデータメモリと複数のプ ログラムデータメモリから 1つを選択して有効とする有効ブロック選択部とを含む処理 装置が所定の条件を検出した際にコマンドの実行を指示し、処理装置のコマンド実 行指示を受けた制御装置が、有効ブロック選択部を制御して指定されたプログラムデ 一タメモリを有効にして再構成可能ハードウェアに接続する activateコマンドを実行 し、再構成可能ハードウェアが実行する論理回路の内容を切り換えることを特徴とす る。
[0025] 本発明の第 4の制御方法は、本発明の第 2の制御方法において、前記制御装置は 、指定した前記処理装置の動作を停止する haltコマンドと、前記制御装置から指定し た前記処理装置へ割り込みベクタを発行する interruptコマンドと、指定した記憶装 置から前記プログラムデータメモリへプログラムデータを転送する load— prgコマンド と、 load— prg命令を中止する cancel— prgコマンドと、 load— prg命令の終了まで 待機する wait— prgコマンドとを実行することを特徴とする。
[0026] 本発明の第 1のプログラムの生成方法は、アプリケーションプログラムの制御フロー を解析して、アプリケーションプログラムを処理単位に分割するとともに分割した処理 単位を電子計算機内で実行する再構成可能ハードウェアが制御するコマンドを組み 合わせたコマンドシーケンス中間コードを生成する制御フロー解析手順と、コマンドシ 一ケンス中間コードを電子計算機で実行可能な形式に変換してコマンドシーケンス を生成するコマンドシーケンス実装手順と、処理単位の動作内容を電子計算機で実 行可能な形式に変換するプログラムデータ生成手順とを有することを特徴とする。
[0027] 本発明の第 2のプログラムの生成方法は、本発明の第 1のプログラムの生成方法に おいて、前記制御フロー解析手順は、アプリケーションプログラムの制御フローを解 析して処理単位に分割する際に、各処理単位を前記再構成可能ハードウェアの論 理を形成するプログラムを保持するプログラムデータメモリに格納可能なように分割 することを特徴とする。
[0028] 本発明の第 1のプログラムは、論理回路をプログラムにより形成可能な再構成可能 ハードウェアを含む処理装置が所定の条件を検出した際にコマンドの実行を指示す ると、処理装置のコマンド実行指示を受けた制御装置が再構成可能ハードウェアを 論理形成するプログラムの切り換えを実行する手順をコンピュータに実行させる。
[0029] 本発明の第 2のプログラムは、再構成可能ハードウェアと再構成可能ハードウェア の論理回路を形成するプログラムを保持する複数のプログラムデータメモリと複数の プログラムデータメモリから 1つを選択して有効とする有効ブロック選択部とを含む処 理装置が所定の条件を検出した際にコマンドの実行を指示すると、処理装置のコマ ンド実行指示を受けた制御装置が、有効ブロック選択部を制御して指定されたプログ ラムデータメモリを有効にして再構成可能ハードウェアに接続を切り換える activate コマンドを実行する手順をコンピュータに実行させる。
[0030] 本発明の第 3のプログラムは、本発明の第 2のプログラムにおいて、指定した前記 処理装置の動作を停止する haltコマンド、前記制御装置から指定した前記処理装置 へ割り込みベクタを発行する interruptコマンド、指定した
記憶装置から前記プログラムデータメモリへプログラムデータを転送する load— prgコ マンド、 load _ prg命令を中止する cancel _ prgコマンド、或レヽは load _ prgコマンド の終了まで待機する wait— prgコマンドを実行する手順をコンピュータに実行させる 図面の簡単な説明
[0031] [図 1]本発明の実施形態の構成を示すブロック図である。
[図 2]本発明の実施形態の処理装置の一例を示すブロック図である。
[図 3]本発明の実施形態の処理要素の一例を示した図である。
[図 4]本発明の実施形態の処理要素の一例を示した図である。
[図 5]本発明の実施形態の処理要素の一例を示した図である。
[図 6]本発明の実施形態の制御装置と処理要素の接続例を示した図である。 図 7]本発明の実施形態の制御装置に実装するコマンドコードの構成を示した図であ る。
図 8]本発明の実施形態の制御装置に実装するコマンドコードの機能を示した図であ る。
図 9]本発明の実施形態の制御装置と処理要素の接続例を示した図である。
図 10]本発明の実施形態のコマンドの格納例を示した図である。
図 11]本発明の実施形態の制御装置と処理要素の接続例を示した図である。
図 12]本発明の実施形態のコマンドの格納例を示した図である。
図 13]本発明の実施形態のアドレスカウンタ制御コードの構成例を示した図である。 図 14]本発明の実施形態のアドレスカウンタ制御コードの機能例を示した図である。 図 15]本発明の実施形態のコマンドシーケンスを示した図である。
図 16]本発明の実施形態のキャッシュを付加した構成のブロック図である。
図 17]本発明の実施形態の動作説明で参照する構成例を示すブロック図である。 図 18]本発明の実施形態の実装するアプリケーションを示した図である。
図 19]本発明の実施形態のプログラムデータの生成フロー図である。
図 20]本発明の実施形態のコマンドシーケンス中間コードを示した図である。
図 21]本発明の実施形態の処理の制御フロー図である。
図 22]本発明の実施形態のコマンドコードメモリに害 ijり当てたコマンドシーケンスの図 である。
図 23]本発明の実施形態のメモリに割り当てたプログラムデータの図である。
図 24]本発明の実施形態の電源投入時の電子計算機の状態を示した図である。 図 25]本発明の実施形態の動作を示したタイミングチャートである。
図 26]本発明の実施形態の 2つの処理装置で構成するブロック図である。
図 27]本発明の実施形態のメモリに割り当てたコマンドシーケンスの図である。
図 28]本発明の実施形態の 2つの処理装置が動作するタイミングチャートである。 図 29]本発明の実施形態のプログラムデータの生成フロー図である。
図 30]従来技術においてアプリケーションプログラムの全てを専用ハードウェアとして 実装する手法例を示した図である。 [図 31]従来技術においてアプリケーションプログラムの一部を専用ハードウェアとして 実装する手法例を示した図である。
[図 32]従来技術においてアプリケーションプログラムの一部を専用ハードウェアとして 実装する手法例を示した図である。
発明を実施するための最良の形態
[0032] 本発明の実施の形態について図面を参照して詳細に説明する。図 1は本発明の実 施の形態の電子計算機の基本的な構成を示すブロック図である。本発明の第 1の実 施形態の電子計算機 30は、外部とのインタフェースを制御しデータを転送するインタ フェース装置 40と、アプリケーションプログラムの全部又は一部の処理を実行する処 理装置 70と、処理装置 70から指示されたコマンドを実行する制御装置 60とを含み、 接続網 20を介して外部記憶装置 10と接続する。図 1の電子計算機 30は、処理装置 70を 2つ含んでいるが、 1つでもよぐ 3つ以上でもよい。
[0033] 処理装置 70は、メモリ部 80と処理部 90からなる。図 2は処理装置 70の構成の一例 を示した図であり、 1つの処理要素 91と 1つのプログラムデータメモリ 81からなるバン ク 101と、 1つの処理要素 91に対して複数のプログラムデータメモリ 81を設けて選択 できるようになつているバンク 102と、選択メモリ 83と、複数の処理要素 91から 1つを 選択して出力する有効ブロック選択部 82を構成要素とする。
[0034] 図 2では処理装置 70はバンク 101とバンク 102をそれぞれ 2つずつ含んでいるが、 バンク 101又はバンク 102のいずれかを 1つ以上含めばよレ、。また、バンクが 1つの 構成であれば有効ブロック選択部 82は省略でき、バンクもプログラムデータメモリ 81 も 1つの構成であれば選択メモリ 83を省略できる。
[0035] 処理装置 70に入力されるプログラムデータ信号 S80は、プログラムデータメモリ 81 及び選択メモリ 83に接続される。プログラムデータメモリ 81は処理要素 91の処理内 容を決定するためのプログラムを保持するメモリである。プログラムデータメモリ 81に 保持されるプログラムは通常外部記憶装置 10に格納されており、必要に応じて接続 網 20、インタフェース装置 40、プログラムデータ信号 S80を介して転送されプロダラ ムデータメモリ 81に書き込まれる。なお、処理要素 91が FPGAのような再構成可能 ハードウェアである場合、プログラムデータメモリ 81へ保持するプログラムは処理要素 91の論理回路の形成を行うためのプログラムとなる。
[0036] 処理要素 91は接続するプログラムデータメモリ 81に保持されるプログラムの内容に 従った処理を実行する。例えば図 3のように再構成可能ハードウェアで実現されるが 、図 4に示すように CPUにて実現してもよい。
[0037] 選択メモリ 83は、有効バンク選択部 92及び有効ブロック選択部 82に接続され、処 理装置 70の中で有効にするバンクを選択したり、バンク 102のように複数のプロダラ ムデータメモリ 81で構成されたバンクの中で有効にするプログラムデータメモリ 81を 選択したりする情報を保持する。なお、プログラムデータメモリ 81への切り換えは瞬時 に終わるので、切り換えられたプログラムデータメモリ 81へのプログラムの格納が終 了していれば瞬時に新たなプログラムに対応した処理を処理要素 91は開始すること ができる。ただし、プログラムの格納が終わっていなければ、データ転送が終了しプロ グラムが格納されるまで待つ必要がある。
[0038] 処理装置 70から出力されるコマンド信号 S91は処理装置 70の処理要素 91から生 成される。処理装置 70に入力される割り込み信号 S92は処理装置 70の処理要素 91 に入力され、その処理の過程で使用される。処理装置 70に入出力される処理データ 信号 S93は、処理部 90に接続され、処理に必要なデータや、処理を終えたデータの 入出力線として使用される。
[0039] コマンド信号 S91、割り込み信号 S92及び処理データ信号 S93は処理装置 70が 複数のバンクを含む場合選択メモリ 83によって有効になっているバンクの処理装置 9 0に入出力される。図 2では、処理装置 70へ入力したデータはすべての処理装置 90 に接続している力 有効ではないバンクに入力しないように、選択メモリ 83等から制 御してそれらの入力データを切断するようにしてもょレ、。
[0040] 次に、各構成要素 91について詳細に説明する。処理要素 91は図 3に示すように、 従来の FPGAや PLDに代表されるような再構成可能ハードウェアで構成される。た だし、構成要素 91が複数ある場合に、その中の 1つ又は複数を図 4に示すように、 C PU120で構成してもよレ、。 CPU120で構成した構成要素 91はアプリケーションプロ グラムの処理を高級言語で処理する部分を割り当てて処理したり、処理装置 70内を 制御したりすることを主な用途とする。なお、処理要素 91を CPU120で構成した場合 には、処理データ信号 S93を介してプログラムを読み込めるため、図 4におけるプロ グラムデータ接続線 S 101はなくてもよレ、。
[0041] 図 5に示すように、本電子計算機 30における制御装置 60を再構成可能なハードウ エアで実現し、再構成可能制御装置 R60を構成してもよい。図 5に示したように、再 構成可能制御装置 R60はプログラムデータ接続線 S101を用いて設定され、設定さ れる内容に従って処理内容を変えることができる。またコマンド信号 S91や割り込み 信号 S92及び処理データ信号 S93はインタフェース装置 40を介して入出力される。
[0042] インタフェース装置 40は処理装置 70や制御装置 60と電子計算機 30の外部の接 続網 20とを接続し、接続網 20側から電子計算機 30に制御に関する通信が発生した 場合には、接続網 20の適切なプロトコルに基づいて制御装置 60にコマンド信号 S4 1を出力する。制御装置 60からインタフェース装置 40に割り込み信号 S42等の制御 に関する通信が発生した場合には、同様に適切なプロトコルを用いて接続網 20を介 して指定された接続先に伝える。
[0043] 電子計算機 30の内部から外部へのアクセスが発生した場合は、インタフェース装 置 40が適切なプロトコルに基づいて外部にアクセスを行なう。電子計算機 30の外部 力 処理装置 70に対するアクセスが発生した場合には、インタフェース装置 40が適 切なプロトコルに基づいてアクセスする。制御装置 60は、インタフェース装置 40を介 して電子計算機 30の外部の装置から伝えられたコマンド信号 S41や処理装置 70か ら出力されたコマンド信号 S91を受けとり、受け取ったコマンドを解釈実行する。 処 理装置 70が制御装置 60へコマンド信号 S91を発行する際のプロトコルの例を図 6に 示す。このプロトコルはインタフェース装置 40と制御装置 60の間のプロトコルに適用 してもよい。
[0044] 図 6は、処理装置 70がリクエスト信号 S911と共に直接コマンドコード信号 S912を 渡す方式を示す図である。コマンドコード信号 S912を受けとつた制御装置 60はコマ ンドコードの内容に従つて処理を行なレ、、処理終了時に応答信号 S 921を返す。
[0045] 制御装置 60が解釈実行するコマンドコードの一例を図 7及び図 8に示す。図 7はコ マンドコードの構成を示した図であり、コマンドコード A10はコマンドコード名 Al lとコ マンドコードパラメータ A12で構成される。図 8はコマンドの実行内容を一覧にした図 であり以下に説明する 6つのコマンドを示している。
[0046] activateは、選択メモリ 83に、コマンドコードパラメータ A12で指示されるコードを 書き込むことで、有効バンク選択部 92及び有効ブロック選択部 82を制御し、選択し たプログラムデータメモリ 81を同じバンクの処理要素 91に接続する。例えば図 3に示 したように、再構成可能ハードウェアで処理要素 91が構成されてレ、る場合に activat eすることは、再構成可能ハードウェアにそのプログラムデータを設定することを意味 し、 activateされた再構成ハードウェアはすぐにそのプログラムデータメモリ 81の内 容に従って処理を開始する。
[0047] haltは、コマンドコードパラメータ A12によって指定した処理装置 70の動作を停止 させる。
interruptは、コマンドコードパラメータ A12によって指定した処理装置 70に対して、 指定した割り込みベクタ信号 S922を発行する。
load— prgは、コマンドコードパラメータ A12によって指定したプログラムデータメモリ 81の領域へ、外部記憶装置 10やその他任意の記憶装置に格納されているプロダラ ムデータを転送する。
cancel— prgは、 load— prgによって開始した転送を中止する。
wait— prgは、 load— prgによって開始した転送が終了するまで待機する。
[0048] 制御装置 60は、図 8に示したコマンドの任意の組合せ(コマンドセット)を解釈し、そ れぞれのコマンドに対して適切な処理を行ない、応答信号を含む割り込みを処理装 置 70や、インタフェース装置 40を介して電子計算機 30の外部に出力する。コマンド の解析や処理、割り込みは、処理装置 70毎に並列に行なってもよい。
[0049] 処理装置 70が制御装置 60へコマンド信号 S91を発行する際の別のプロトコルの例 を図 9及び図 11に示す。このプロトコルはインタフェース装置 40と制御装置 60の間 のプロトコルに適用してもよい。
[0050] 図 9は、制御装置 60がコマンドコード参照装置 61とコマンドコードメモリ 63を有し、 処理装置 70がリクエスト信号 S911と共にアドレス信号 S913を渡す方式を示す図で ある。図 10はコマンドコードメモリ 63に格納されるコマンドコードの一例を示す図であ る。アドレス信号 S913は、制御装置 60に実行させたいコマンドが格納されたコマンド コードメモリ 63のアドレスを指す。
[0051] アドレス信号 S913を受けとつた制御装置 60は、コマンドコード参照装置 61を用い て、コマンドコードメモリ 63を参照し、アドレス信号 S913に対応するコマンドを実行後
、処理終了時に応答信号 S921を返す。
[0052] コマンドコードメモリ 63は、制御装置 60から参照可能な、制御装置 60外部のメモリ や外部記憶装置 10等の任意のメモリでもよい。また、処理装置 70が複数ある場合は 制御装置 60内にコマンドコード参照装置 61を複数持ってコマンドを並列処理するよ うにしてもょレ、し、処理装置 70に対応してコマンドコード参照装置 61を設けるように 構成してもよい。
[0053] 図 9のプロトコルは、制御装置 60にコマンドコード参照装置 61とコマンドコードメモリ
63を設ける必要がある力 一般に、メモリのアドレスのビット数はデータのビット数より 少なくすることができるため、図 6のプロトコルに比べて、制御装置 60と処理装置 70と の接続信号線数を少なくすることができる。
[0054] 図 11は、制御装置 60がコマンドコード参照装置 61及びそのアドレスカウンタ 62を 有し、処理装置 70がリクエスト信号 S911と共にアドレス操作信号 S914及び S915を 用いてアドレスカウンタ 62の制御を行ない、必要ならばアドレス信号 S913を用いて アドレスを制御装置 60に渡す方式を示した図である。コマンドコード参照装置 61及 びそのアドレスカウンタ 62は接続する処理装置 70毎に設けてもよい。
[0055] adr—enaアドレスカウンタ操作信号 S914が有効でかつ direct/off setアドレス力 ゥンタ操作信号 S915が directを示す場合には、処理装置 70から渡されるアドレス信 号 S913をアドレスカウンタ 62に格納する。 adr—enaアドレスカウンタ操作信号 S914 が有効でかつアドレスカウンタ操作信号 S915が off setを示す場合には、処理装置 7 0力、ら渡されるアドレス信号 S913の値をアドレスカウンタ 62に加算する。 adr_enaァ ドレスカウンタ操作信号 S914が無効の場合には、処理装置 70から渡されるアドレス 信号 S913は無視し、アドレスカウンタ 62の値は保持する。
[0056] 処理装置 70によるアドレスカウンタ 62の制御が終ると、制御装置 60はアドレスカウ ンタ 62の値とコマンドコード参照装置 61を用いてコマンドが格納されたコマンドコード メモリ 63を参照して格納されているコマンドの処理を行なレ、、終了後に応答信号 S92 1を返す。
[0057] 図 12は図 11の構成におけるコマンドコードメモリ 63に格納されるコマンドコードの 一例を示した図である。図 12に示すように、コマンドコードメモリ 63には、コマンドコー ド A10以外にアドレスカウンタ制御コード A20及びフラグ A30を格納している力 含 まないようにしてもよレ、。図 12のようなフォーマットを用いた場合、制御装置 60は、コ マンドコード A10に記された処理の終了後、処理装置 70に応答信号 S 921を返す前 にアドレスカウンタ制御コード A20に指定されている処理を行なう。
[0058] 図 13にアドレスカウンタ制御コード A20の詳細を示す。アドレスカウンタ制御コード A20はアドレスカウンタ制御コード名 A21、そのパラメータであるアドレスカウンタ制 御コードパラメータ A22から構成される。図 14にアドレスカウンタ制御コードの例を示 す。 load_adrはアドレスカウンタ制御コードパラメータ A22の値を新しいアドレスカウ ンタ 62の値として設定する。 add_adrはアドレスカウンタ制御コードパラメータ A22 の値をアドレスカウンタ 62の値に加算する。 push— adrは現在のアドレスカウンタ 62 の値を図示しないがアドレスカウンタスタックに保存し、アドレスカウンタ制御コードパ ラメータ A22の値を新しいアドレスカウンタ 62の値として設定する。 pop— adr命令は アドレスカウンタスタックから値を取り出して、その値を新しいアドレスカウンタ 62の値 として設定する。アドレスカウンタスタックはコマンドコード参照装置 61に設ければよ レ、。
[0059] また、フラグ A30は、アドレスカウンタ制御コード A20を実行後の新しいアドレスカウ ンタ 62の値を用いて、引続きコマンドの参照及び実行を行なうかどうかのフラグとして 用いる。以後、引続きコマンドを実行する場合のフラグを cont、実行しない場合のフ ラグを stopと ciす。
例えば、図 11に示した構成において、コマンドコードメモリ 63が図 15のようなコマンド シーケンスを格納し、処理装置 70がアドレス信号 S913を 100に、アドレスカウンタ操 作信号 S914を無効にしてコマンドを発行すると制御装置 60はコマンドコードを Y10 0、 Y101、 Υ200の順に実行する。
[0060] 従って、コマンドコード参照装置 61がアドレスカウンタ 62を内蔵し、アドレスカウンタ 制御コード Α20でアドレスカウンタ 62の制御を行なう方式では、処理装置 70はコマ ンド発行の際に必要な場合にだけアドレス信号 S913を出力するだけで済むため、処 理装置 70内の処理部 90は少ないハードウェアリソースでアドレス信号 S913を生成 できるようになる。
[0061] なお、処理装置 70と制御装置 60間のプロトコルに関しては、図 6、図 9、図 14の中 から 1つを選択する力、、或いはこれらを任意に組み合わせて構成してもよい。また、複 数の構成を組み込んで必要に応じて制御線を追加してプロトコルを切替えるようにし てもよレ、。例えば、制御線を追加し、図 6のプロトコルか図 11のプロトコルかを選択で きるようにしてもよレ、。
[0062] 次に、電子計算機 30と外部とのデータ転送を高速化するため、図 16に示すように 、図 1の電子計算機 30にキャッシュコントローラ 130を含むキャッシュ装置 50を追加 して、そのキャッシュコントローラ 130の制御をコマンドで行なうように構成してもよレ、。 図 16ではキャッシュ装置 50はキャッシュコントローラ 130を 3つ設けそれぞれ制御装 置 60、メモリ部 80、処理部 90に接続しているが、 1つのキャッシュコントローラ 130で これらと接続する構成でもよレ、。また、キャッシュコントローラ 130内にキャッシュメモリ 140を複数ポート持ってもよレ、。また、複数のキャッシュコントローラ間でアドレス変換 装置 150を共有してもよい。
[0063] キャッシュコントローラ 130は、例えば外部記憶装置 10等に記憶され処理装置 70 がアクセスするデータを一時的に保持するキャッシュメモリ 140とアドレス変換装置 15 0を含んでいる。キャッシュコントローラ 130は、コマンドによって制御され、主にキヤッ シュメモリ 140と外部記憶装置 10との間のデータ転送と、キャッシュメモリ 140と制御 装置 60や処理装置 70との間のデータ転送を行ない、処理装置 70や制御装置 60と 並列に動作する。
[0064] アドレス変換装置 150は、処理装置 70のアドレス空間とインタフェース装置 40のァ ドレス空間との間のアドレスを互いに変換する装置であり、処理装置 70内で独立した アドレス空間を持つことができる。また、処理装置 70毎にアドレス変換装置 150を設 けることにより処理装置 70毎に独立したアドレス空間を定義することもできる。
[0065] また、インタフェース装置 40に設けられたアドレス変換装置 151は、電子計算機 30 と、電子計算機 30と接続網 20を介して接続する外部記憶装置 10や他の装置との間 のアドレス空間の差分に対してアドレス変換する。処理装置 70は制御装置 60でコマ ンドを実行してアドレス変換装置 150の制御を行なう。
[0066] なお、キャッシュコントローラを制御するためのコマンドについては図 8に記載してい ないが、例えばアドレス変換装置 150が被変換アドレスと変換アドレスとを対にして記 憶する変換用バッファを備える場合はバッファへの登録、消去、置換等の制御を行う コマンド等を設ければよぐ
また、キャッシュメモリ 140内の特定の領域を処理装置 70の専用のローカルメモリ領 域として設定するようなコマンドを追加してもよい。
[0067] また、データフローを解析してスケジューリングを行なレ、、使用するキャッシュやその キャッシュの制御を予めコマンドシーケンスとして記述しておくことで、処理装置 70に よる処理と、制御装置 60によるデータフローの制御を並列に行なうことができ、処理 装置 70の処理能力が向上する。また、処理装置 70が必要なタイミングでコマンドを 発行するため、無駄なオーバヘッドも発生しなレ、。
[0068] 例えば、キャッシュコントローラ 130をコマンドで制御して、各装置がキャッシュメモリ
140にアクセスするより前に、前もってデータをキャッシュメモリ 140にロードしておくこ とが可能になり、効率の良いデータ転送が可能になる。
なお、本電子計算機 30を接続網 20に多数接続しても互いに通信および制御が可能 であることは、上記説明から明白であり、本電子計算機 30は任意に拡張が可能であ る。また、本電子計算機 30は、本電子計算機 30を 1つ以上含む LSIや、本電子計算 機 30の一部分を LSIとして実現してもよい。さらに、本電子計算機 30を論理的に FP GAや PLD等の再構成可能ハードウェア上に論理的に実装してもよい。
[0069] 次に、本発明の実施形態の電子計算機 30の動作を図面を参照して説明する。
なお、電子計算機 30の構成については様々な構成について説明してきたが、動作 の説明では図 17に示す構成を例として説明する。動作説明は電子計算機で処理す る対象となるアプリケーションプログラムをプログラムデータメモリ 811— 813へ格納す る処理単位へと分割し制御装置 60で実行するコマンドを生成するプログラムの生成 方法を説明し、その次に図 17の構成における電子計算機 30での動作 *制御方法に ついて説明する。 [0070] 図 17を参照すると、 3つのプログラムデータメモリ 811 , 812, 813に、有効ブロック 選択 82を介して接続され再構成可能ハードウェアで実現された処理要素 110を 1バ ンク有する 1つの処理装置 71があり、図 1 1から direct/off setを指定するアドレス力 ゥンタ制御 S915を省略したプロトコルで制御装置 60と処理装置 71を接続し、制御 装置 60とインタフェース装置 40との間のコマンド信号 S41及び割り込み信号 S42を 省略した構成となっている。図 17の制御装置 60に実装されているコマンドセットは図 8の通りとし、同制御装置 60に実装されているアドレスカウンタ制御コードは図 13及 び図 14の通りとする。なお、キャッシュ装置 50は省略した構成としている。
[0071] 図 18は図 17の処理要素 110で実行するアプリケーションの処理内容の流れの一 例を示した制御フロー図である。図 18に示しているように、アプリケーションは初期状 態 COを経て、制御フローで示している処理を動的に切り換えながら実行し、全ての 処理が終ると終了状態 C9となる。初期状態 COは処理 P1を開始できる直前の状態と する。終了状態 C9は、一例として図 17における処理装置 71がすべて停止した状態 とする。
[0072] 図 18に示したアプリケーションの処理内容は、 5つの状態(CI , C2, C3, C4, C5) と 4種類の処理内容(PI , P2, P3, P4)を持つものとし初期状態 COから状態 C1には 無条件で遷移する。状態 C1では処理 P1を行なレ、、条件 F1で状態 2に遷移する。状 態 C2では処理 P2を行ない、条件 F2aで状態 3に、条件 F2bで状態 4に遷移する。状 態 C3では処理 P1を行ない、条件 F3で状態 5に遷移する。状態 C4では処理 P3を行 なレ、、条件 F4で状態 5に遷移する。状態 C5では処理 P4を行なレ、、条件 F5で終了 状態 C9に遷移する。
[0073] 図 19はアプリケーションを実行するプログラムを生成するフローである。図 19に示 すフローは、各処理後に実行するコマンドシーケンスを生成する制御フロー解析手 順 Ml、コマンドシーケンスをデータ列に変換するコマンドシーケンス実装手順 M2、 プログラムデータを生成するためのプログラムデータ生成手順 M3から成り、アプリケ ーシヨン全体の制御フロー、終了、電子計算機 30の構成情報及びそのコマンドセット 等を入力とし、本電子計算機の初期状態 COを示すコマンドシーケンスコード、各処 理装置内で使用する全てのプログラムデータ、及びそれらから参照されるコマンドシ 一ケンスコードを出力する。制御フロー解析手順 Ml、コマンドシーケンス実装手順 M2、プログラムデータ生成手順 M3はそれぞれプログラムで実現される。
[0074] 制御フロー解析手順 Mlは、各処理 (P1— P4)とそれに対応する状態(C1一 C5)、 各状態に対応した遷移条件 (F1— F5)と遷移先を解析する。そして、各処理をプロ グラムデータメモリ 811—プログラムデータメモリ 813のいずれかに害 ijり当て、有効ブ ロック選択部 82を切り換えて各処理を続けて実行することで次状態に遷移できるよう なコマンドシーケンスの中間コードを生成する。
[0075] 図 18のアプリケーションを制御フロー解析手順 Mlによって解析した結果として生 成されるコマンドシーケンスの中間コードの一例を図 20に示す。ここで、電源投入時 には、有効ブロック選択部 82はプログラムデータメモリ 811を選択しているものとする 。 図 20において、コマンドシーケンス SQ0のコマンド" load_prg 812、 PM1"の パラメータである 812は処理要素 110におレ、て処理 P 1を実行するように生成された プログラムデータのロード先がプログラムメモリデータメモリ 812であることを示し、 PM 1は同プログラムデータが格納されているメモリの領域を示す。 PM1で指定されるプ ログラムデータ PM1は外部記憶装置 10を含む任意のメモリに格納されてレ、てよレ、。 現段階では、プログラムデータ PM1自体は生成されていないので空のメモリ領域を 指している。プログラムデータ PM2、 PM3、 PM4もそれぞれ処理 P2、処理 P3、処理 P4を実行するように生成されたプログラムデータが格納されているメモリの領域を指 定するものである。
[0076] 図 20において、例えば、状態 C4は処理 P3を実行している状態であり、この状態で 条件 F4が成立した時点でコマンドシーケンス SQ4を開始する。コマンドシーケンス S Q4の処理内容は、〃wait_prg 813、 PM4"によりプログラムデータメモリ 813にプ ログラムデータ PM4が全て転送されるまで待機し、 "activate こよりプログラムデー タメモリ 813を選択して開始することとなる。プログラムデータメモリ 813が" activate" されると、処理要素 110はプログラムデータメモリ 813に保持されているプログラムで 決められた処理を開始する。この時点では、プログラムデータメモリ 813には、処理 P M4を実行するプログラムデータが保持されているため、処理要素 110は処理 PM4 を開始する。これは、すなわち、状態 C5に移行することを意味する。 [0077] このように、処理内容にコマンドシーケンスの実行手順を追加することで次の状態 に遷移することができるようになる。しかも、処理装置(処理要素)自身が決められた 条件を検出したタイミングでコマンドを出すことができるため、遷移のタイミングを処理 内容に含めることができ、処理効率を向上させる。 また、図 20において、処理 P1を 行なっている際には、状態が C1もしくは C3である力、を識別する必要があるため、処 理 P1を行なうプログラムデータメモリを" activate"する前に、処理 P1を行なう処理装 置 71に割り込みベクタを設定し、その値を用いた遷移条件に修正している。例えば、 状態 C1の割り込みベクタの設定は SQ0の" interupt 71、 Cl' こて実行する。
[0078] コマンドシーケンス実装手順 Μ2を用いて、図 20のコマンドシーケンスをメモリに割 り当てた様子を図 22に、各処理におけるコマンドシーケンスの呼び出しを図 17の構 成における制御装置 60と処理装置 71との間のインタフェースのプロトコルに変換し た、各処理毎の制御フローを図 21にそれぞれ示す。
[0079] 図 21及び図 22では、電源投入後最初に実行するコマンドシーケンス SQ0Aも含め て示している。コマンドシーケンス SQ0Aを実行することにより初期状態 COへ遷移す る。状態 COでは有効ブロック選択部 82はプログラムデータメモリ 811を選択している ため、処理要素 110はプログラムデータメモリ 811に格納されているプログラムの動 作を電源投入後に開始する。
[0080] 図 21に示したように、個々の処理は電源投入時及びオリジナルの処理(PI , P2, P 3, P4)に各コマンドシーケンス発行処理を追加した制御フローとなる。例えば、図 21 の処理 P2において条件 F2aが成立した際にはコマンド発行処理 SQ2bAを実行し、 条件 F2bが成立した際にはコマンド発行処理 SQ2bAを実行する。処理装置 71がコ マンド発行処理 SQ2aAを実行する際には、リクエスト信号 S911と、 adr_enaァドレ スカウンタ操作信号 S914及び ADR002を示すアドレス信号 S913が出力される。図 22より、アドレス ADR002はコマンドシーケンス SQ2aを指すため、制御装置 60は S Q2aの内容を実行する。
[0081] また、図 20力、ら分力るように、コマンドシーケンス SQ3とコマンドシーケンス SQ4は 全く同じ動作をするため、図 22に示したように、ベースアドレス値を ADR004として 1 つに集約することができる。また、図 18から分かるように、状態 C3もしくは状態 C4の 後には状態 C5となるため、図 22では、コマンドシーケンス SQ3及び SQ4を指すアド レス ADR004のオフセット + 1のアドレスカウンタ制御コードにおいて、 "load— adr" を使わずに" add— adr"を使用して次のアドレスカウンタ 62の値 (ADR004オフセット + 2)を設定している。このように設計することで、処理装置 71は余分なアドレスを出 力する必要がなくなる。
[0082] 最後に、図 21で示した個々の処理を、プログラムデータ生成手順 M3を用いて、そ れぞれの処理を実行するプログラムデータを生成する。生成した各プログラムデータ をメモリに格納した例を図 23に示す。生成したプログラムデータ PM1、 PM2、 PM3 、 PM4が格納されたメモリ領域は、図 22の各コマンドシーケンスのパラメータに反映 させる。
[0083] なお、図 16に示したように、電子計算機にアドレス変換装置を備えることで、個々の 処理でアクセスするメモリアドレスやコマンドが格納されたメモリを指すアドレスは独立 したアドレス空間で設計することもできる。また、プログラムデータ PM0に関しては、 図 17の構成例の電子計算機の電源投入直後に実行する必要があるため、このプロ グラムデータ PM0は、あらかじめプログラムデータメモリ 811に格納されている必要が ある。従って、本実装例における、電源投入時の電子計算機の初期状態は図 24のリ ストのようになる。
[0084] 次に電子計算機 30の動作 ·制御方法について説明する。図 25は上記説明した動 作をタイミングチャートとしてまとめて示した図 25である。図 25と図 17、図 18、図 21、 図 22、図 23、図 24を用いて説明する。
[0085] 図 25は横軸に、制御装置 60内のアドレスカウンタ 62の値、制御装置 60の動作内 容、処理要素 110の動作内容、処理要素 110に入力される割り込みベクタ信号 S92 2の内容、各プログラムデータメモリ 811、 812、 813が保持しているプログラムデータ の内容、プログラムデータの転送状態を示し、縦軸は下向きに経過時間を T101から 順に表している。なお、プログラムデータメモリ 811、 812、 813の部分を編み目で表 示している部分は実行中であることを示している。
[0086] T101のタイミングは図 24に示した電源投入時の電子計算機 30の状態であり、プロ グラムデータメモリ 811にコマンド発行処理 SQ0Aを行なうプログラムデータ PM0が 格納されている。
[0087] T102で処理要素 110は PM0の動作を開始し、コマンド発行処理 SQ0Aを実行す る。制御装置 60のコマンド参照装置 61は、コマンド発行処理 SQ0Aを受けとると、ァ ドレスカウンタ 62にアドレス値 ADR000を設定し、図 22のコマンドシーケンスが格納 されたコマンドコードメモリ 63の ADR000に格納されたコマンドを読み出して、 T103 で" load_prg〃を実行する。 T103で制御装置 60は、 "load_prg〃を実行し、プログ ラムデータメモリ 812へプログラムデータ PM1を転送し始める。プログラムデータ PM 1の格納場所の情報は" load_prg"のパラメータの PM1に含まれるものとし、ここで は外部記憶装置 10に図 23のように格納されているものとする力 外部記憶装置 10 以外のメモリに格納してぉレ、てもよレ、。
[0088] 図 22を参照すると、 ADR000のアドレスカウンタ制御コードは次のコマンドも実行 するように設定されているため、制御装置 60はアドレスカウンタ 62に 1を加え、 T104 で次の命令を実行する。 T104で制御装置 60は、プログラムデータメモリ 812にプロ グラムデータ PM1がすべて転送されるのを待ち、 T105でその転送が終了すると、制 御装置 60は引続き T106で次の命令を実行する。
[0089] 以下、同様に実行され、 T107で" activate 812"を制御装置 60が実行すると、選 択メモリ 83がプログラムデータメモリ 812を選択する情報に更新され、有効ブロック選 択 82は選択メモリ 83の指示によりプログラムデータメモリ 812に切り換え、処理要素 1 10は動作が切替えられてプログラムデータメモリ 812に格納されている PM1の処理 を開始する。 T108で、制御装置 60はアドレスカウンタ制御コード" add— adr 0/st ορΊこより T102から開始した一連のコマンドシーケンスの処理を終了する。
[0090] 以下、同様に実行され、 T110において、処理要素 110が処理 P1を実行中に条件 F1を検出し、割り込みベクタ信号 S922が C1であることを確認するとコマンド発行処 理 SQ1Aを実行する。
T110でコマンド発行処理 SQ1Aを受けた制御装置 60はアドレスカウンタ 62の値を ADR001の値に更新する。
[0091] T112で、制御装置 60はコマンドコードメモリ 63を読み出して" activate 813"を 実行して、処理要素 110の処理内容をプログラムデータメモリ 813に格納される PM2 の処理に切り換える。
[0092] 以下同様に実行され、 T123において、処理要素 110が処理 P4を実行中に条件 F 5を検出するとコマンド発行処理 SQ5Aを実行する。 T123でコマンド発行処理 SQ5 Aを受けた制御装置 60はコマンドコードメモリ 63を参照し、 T124で処理装置 71対 する' 'halt"を実行する。 "halt' こよる停止指示を受けると処理装置 71は動作を終了 し、 "halt"を実行した制御装置 60もコマンドシーケンスの解釈実行を終了する。
[0093] このように、生成されたプログラムデータは PM0、 PM1、 PM2、 PM3、 PM4の 5つ であるが、使用するプログラムデータメモリは 811、 812、 813の 3つである。これは、 ハードウェアリソースを越えるようなアプリケーションが本電子計算機 30に実装できる ことを示している。
[0094] また、図 17の構成では処理装置 71はバンクを 1つしか含まない構成となっているが 、 2つ以上のバンクを有する場合はプログラムデータ PM0— PM4を複数のバンクの プログラムデータメモリに格納しそれぞれの再構成可能ハードウェアで構成された処 理要素で実行させるようにしてもよい。この場合、処理装置の出力は有効バンク選択 部 92で選択された処理要素のコマンドや出力データとなり、有効バンク選択部 92で 選択された処理要素が有効に動作し、プログラムデータメモリと処理要素を切り換え ながら処理を進めることになる。
[0095] 次に処理装置 70が複数ある場合の動作について、図 26の構成を例に説明する。
図 26は図 17の処理装置 71を 1つ含む構成に処理装置 72を追加して処理装置 70 力 ¾つ存在する構成としている。さらに、動作開始のトリガとなるコマンド SQ0Aの発行 を処理装置 71ではなく処理装置 72から実行するようにしている。また、図 22に示し た処理装置 71のコマンドシーケンス SQ5を図 27に示すようなコマンドシーケンス SQ 5Bに変更し、 "halt"の後に〃 interrupt 72, END71"を実行するように追加し、処 理装置 71の終了を処理装置 72へ割り込みで知らせるようにしている。
[0096] 図 28は、コマンド SQ0Aの発行を処理装置 72が実行し処理装置 71が自己の終了 を" interrupt"で処理装置 72へ通知する上記の動作を示したタイミングチャートであ る。
[0097] 図 28を参照すると、 T201において、処理装置 72は処理 P5の中で、処理装置 71 の初期化のためのコマンド発行処理 SQOAを実行する。 T201でコマンド発行処理 S Q0Aを受けた制御装置 60はコマンドシーケンス SQ0を実行する。 T202で初期化さ れた処理装置 71は図 25で示したような一連の処理を行い、 T203でコマンド発行処 理 SQ5Aを実行する。 T203で制御装置 60はコマンドシーケンス SQ5Bを実行し、 " halt"の実行により T204で処理装置 71を停止させ、 "interrupt"の実行により T205 で処理装置 72に割り込みを出力する。
[0098] 処理装置 72は処理 P5を実行中に、 T201においてコマンド発行処理 SQ0Aを実 行した後、すぐに別の処理 P6を実行することができる。そして、処理 P6において処理 装置 71からの割り込みを待って、後続の処理 P7に遷移することもできる。もちろん、 処理装置 72は処理 P6を実行せずに、単に処理装置 71からの割り込みを待つだけ でもよい。
[0099] また、図 26の構成の場合には、処理装置 71で" halt"が実行された後の終了状態 を処理装置 71の初期状態として、同じ処理を何度でも処理装置 72から実行すること ができる。また、処理要素 72は図 2、図 3、図 4、図 5で示した構成が可能であり、特に CPU120が処理要素 72の構成要素として入っていた場合には、そのソフトウェアプ ログラムの中の 1つの関数呼び出しやシステムコール、もしくはそれらを含むスレッド やオブジェクト、あるいは CPU120のインストラクションの拡張として処理要素 71を使 用してもよい。
[0100] このように複数の処理装置を並列に動作させる際に、 "intermp コマンドを利用し て処理装置間で同期をとれるので、処理能力を向上させとともに全体の処理の前後 関係を順序立てて実行することができる。
[0101] また、電子計算機 30は図 1に示したように、接続網 20を介した外部からコマンドを 受けとることができるため、電子計算機 30の外部からコマンド発行処理 SQ0Aを実行 させるようにしてもよい。さらに、図 5に示したように、処理装置 70の処理要素を電子 計算機 30で実現することもできるため、処理を階層ィ匕 '細分化して実装してもよい。
[0102] なお、上記動作説明では、本電子計算機の構成を固定した場合の実装例を示した が、例えば、図 5のように制御装置 60が再構成可能な制御装置 R60であった場合に は、図 29のような生成フローにおいて、コマンドシーケンス中間コードで使用している コマンドのみをコマンドセットとして使用するようにし、そのコマンドサブセットのみを実 装した制御装置 R60を構成してもよい。このように構成することで、制御装置 60を簡 略ィ匕すること力 Sできる。
[0103] 以上の説明では図 16に示したキャッシュ装置 50を除いた構成で説明した力 図 17 や図 26の構成にキャッシュ装置 50を揷入する構成にすることもできることは明瞭であ り、キャッシュ装置 50を揷入することにより、電子計算機 30の外部との間のデータ転 送時間を短縮することができ、さらにアドレス変換装置 150を有することのより、処理 装置に固有のアドレス空間を持たせることが可能になる。
[0104] また、実装フローによる解析結果に基づいて、制御装置 60や処理装置 70も含めた 全ての構成要素を新規に設計および製造してもよい。
[0105] なお、本発明が上記各実施例に限定されず、本発明の技術思想の範囲内におい て、各実施例は適宜変更され得ることは明らかである。
産業上の利用可能性
[0106] 以上説明したように本発明によれば、アプリケーションプログラムの処理を分割して 複数の処理単位とし処理単位毎に論理回路を形成するプログラムを切り換えながら 再構成可能ハードウェアで実行させることにより大きなアプリケーションプログラムでも 小さな再構成可能ハードウェアで実行可能となるため、アプリケーションプログラムを 安価な構成で高速に実行でき、さらに、処理単位のコマンドシーケンスを変更するこ とにより処理単位のプログラムを容易に応用することができるので、新たなアプリケー シヨンプログラムへの応用や、新たな電子計算機の構築を低コストで実現できるとレ、う 効果がある。
[0107] さらに、論理回路を形成するプログラムを保持するプログラムデータメモリを複数有 して処理単位の実行中に次の処理単位のプログラムを別のプログラムデータメモリに 読み出すことにより、切り換えの際のプログラムの読み出し時間を短縮して切り換え 時間を短縮し処理速度を向上することができる。

Claims

請求の範囲
[1] 論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む処理装置と 処理装置の指定したコマンドを実行する制御装置とを有し、前記コマンドは、処理装 置が所定の条件を検出した際に実行を指示され、再構成可能ハードウェアを論理形 成するプログラムの切り換えを実行するためのコマンドを含むことを特徴とする電子計
[2] 前記処理装置は、再構成可能ハードウェアを有する処理要素と前記再構成可能ハ 一ドウエアの論理回路を形成するプログラムを保持する 1以上のプログラムデータメモ リとを有する複数のバンクと、複数のバンクから 1つを選択して有効とし外部と接続す る有効バンク選択部とを有することを特徴とする請求項 1の電子計算機。
[3] 前記処理装置は、再構成可能ハードウェアを含む処理要素と前記再構成可能ハー ドウエアの論理回路を形成するプログラムを保持する複数のプログラムデータメモリと 複数のプログラムデータメモリから 1つを選択して有効とする有効ブロック選択部とを 含むバンクを有することを特徴とする請求項 1の電子計算機。
[4] 前記処理装置は、少なくとも 1つの処理要素は再構成可能ハードウェアで構成され、 残りの処理要素は再構成可能ハードウェア又は汎用 CPUで構成されることを特徴と する請求項 2又は 3の電子計算機。
[5] 前記制御装置は、前記バンクが複数ある場合は有効とする前記バンクを指定するとと もに前記プログラムデータメモリが複数ある場合は有効とする前記プログラムデータメ モリを指定し指定した前記処理要素の動作を開始する activateコマンドと、指定した 前記処理装置の動作を停止する haltコマンドと、前記制御装置から指定した前記処 理装置へ割り込みベクタを発行する interruptコマンドと、指定した記憶装置から前 記プログラムデータメモリへプログラムデータを転送する load_prgコマンドと、 load _prg命令を中止する cancel_prgコマンドと、 load_prg命令の終了まで待機する wait— prgコマンドとを解釈実行することを特徴とする請求項 2、 3又は 4の電子計算 機。
[6] 前記制御装置が実行するコマンドを保持するコマンドコードメモリを有し、前記制御 装置は前記処理装置から指示されたアドレスに従ってコマンドコードメモリからコマン ドを読み出して解釈実行するコマンドコード参照装置を有することを特徴とする請求 項 1、 2、 3、 4又は 5の電子計算機。
[7] 前記コマンドコード参照装置は前記コマンドコードメモリのアドレスを保持するアドレス カウンタを有し、前記処理装置と制御装置間のコマンドの受渡しにおいて、前記処理 装置が出力したアドレス信号線が有効であることを示す第 1のアドレス制御線と、第 1 の制御線が有効の場合アドレス信号線の値をそのままアドレスカウンタに格納するか 或いはアドレス信号線の値をアドレスカウンタの値に加算してアドレスカウンタに格納 するかを指示する第 2のアドレスカウンタ制御線を備えることを特徴とする請求項 6の 電子計算機。
[8] 前記コマンドは、コマンドを分類するコマンドコードとアドレスカウンタ制御コードと後 続のコマンドを実行するかどうかを示すフラグとからなるフォーマットで前記コマンドコ 一ドメモリに格納され、前記アドレスカウンタ制御コードは、アドレスカウンタに値を設 定する load— adrコマンドと、アドレスカウンタに指定した値を加算する add— adrコマ ンドとを含むこと特徴とする請求項 7の電子計算機。
[9] 前記アドレスカウンタ制御コードは、アドレスカウンタを前記制御装置に設けたァドレ スカウンタスタックに退避するとともに新たな値をアドレスカウンタに設定する push— a drコマンドと、アドレスカウンタスタックの値をアドレスカウンタに戻す pop— adrコマン ドとを含むこと特徴とする請求項 8の電子計算機。
[10] 前記処理装置に対して転送するデータを一時的に保持するキャッシュメモリとキヤッ シュメモリを制御するキャッシュコントローラを含むキャッシュ装置を有し、前記処理装 置が発行するコマンドによってキャッシュコントローラの制御を行なうことを特徴とする 請求項 1乃至 9のいずれかの電子計算機。
[11] 前記キャッシュ装置は前記処理装置の外部で定義するアドレスを処理装置の内部で 定義されるアドレスに変換するアドレス変換装置を有し、前記処理装置が発行するコ マンドによってアドレス変換装置の制御を行なうことを特徴とする請求項 10の電子計
[12] 論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む処理装置と 処理装置の指定したコマンドを実行する制御装置とを有し、前記コマンドは、処理装 置が所定の条件を検出した際に実行を指示され、再構成可能ハードウェアを論理形 成するプログラムの切り換えを実行するためのコマンドを含み、
前記処理装置は、論理回路をプログラムにより形成可能な再構成可能ハードウェア を含む第 2の処理装置と第 2の処理装置の指定したコマンドを実行する第 2の制御装 置から構成されることを特徴とする電子計算機。
[13] 請求項 1乃至 11のいずれかの電子計算機を実装した半導体集積回路。
[14] 論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む処理装置が 所定の条件を検出した際にコマンドの実行を指示し、処理装置のコマンド実行指示 を受けた制御装置が再構成可能ハードウェアを論理形成するプログラムの切り換え を実行することを特徴とする制御方法。
[15] 前記切り換えの後、所定のプログラムデータメモリ上のプログラムの実行中に次の プログラムを別のプログラムデータメモリに読み出すことを特徴とする請求項 14の制 御方法。
[16] 再構成可能ハードウェアと再構成可能ハードウェアの論理回路を形成するプログラム を保持する複数のプログラムデータメモリと複数のプログラムデータメモリから 1つを選 択して有効とする有効ブロック選択部とを含む処理装置が所定の条件を検出した際 にコマンドの実行を指示し、処理装置のコマンド実行指示を受けた制御装置が、有 効ブロック選択部を制御して指定されたプログラムデータメモリを有効にして再構成 可能ハードウェアに接続する activateコマンドを実行し、再構成可能ハードウェアが 実行する論理回路の内容を切り換えることを特徴とする制御方法。
[17] 前記制御装置は、指定した前記処理装置の動作を停止する haltコマンドと、前記制 御装置から指定した前記処理装置へ割り込みベクタを発行する interruptコマンドと 、指定した記憶装置から前記プログラムデータメモリへプログラムデータを転送する lo ad _ prgコマンドと、 load _ prg命令を中止する cancel _ prgコマンドと、 load _ prg 命令の終了まで待機する wait_prgコマンドとを実行することを特徴とする請求項 16 の制御方法。
[18] アプリケーションプログラムの制御フローを解析して、アプリケーションプログラムを処 理単位に分割するとともに分割した処理単位を電子計算機内で実行する再構成可 能ハードウェアが制御するコマンドを組み合わせたコマンドシーケンス中間コードを 生成する制御フロー解析手順と、コマンドシーケンス中間コードを電子計算機で実行 可能な形式に変換してコマンドシーケンスを生成するコマンドシーケンス実装手順と 、処理単位の動作内容を電子計算機で実行可能な形式に変換するプログラムデー タ生成手順とを有することを特徴とするプログラムの生成方法。
[19] 前記制御フロー解析手順は、アプリケーションプログラムの制御フローを解析して処 理単位に分割する際に、各処理単位を前記再構成可能ハードウェアの論理を形成 するプログラムを保持するプログラムデータメモリに格納可能なように分割することを 特徴とする請求項 18のプログラムの生成方法。
[20] 論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む処理装置が 所定の条件を検出した際にコマンドの実行を指示すると、処理装置のコマンド実行指 示を受けた制御装置が再構成可能ハードウェアを論理形成するプログラムの切り換 えを実行する手順をコンピュータに実行させるプログラム。
[21] 再構成可能ハードウェアと再構成可能ハードウェアの論理回路を形成するプログラム を保持する複数のプログラムデータメモリと複数のプログラムデータメモリから 1つを選 択して有効とする有効ブロック選択部とを含む処理装置が所定の条件を検出した際 にコマンドの実行を指示すると、処理装置のコマンド実行指示を受けた制御装置が、 有効ブロック選択部を制御して指定されたプログラムデータメモリを有効にして再構 成可能ハードウェアに接続を切り換える activateコマンドを実行する手順をコンビュ ータに実行させるプログラム。
[22] 指定した前記処理装置の動作を停止する haltコマンド、前記制御装置から指定した 前記処理装置へ割り込みベクタを発行する interruptコマンド、指定した記憶装置か ら前記プログラムデータメモリへプログラムデータを転送する load_prgコマンド、 loa d_prg命令を中止する cancel_prgコマンド、或いは load_prgコマンドの終了まで 待機する wait_prgコマンドを実行する手順をコンピュータに実行させる請求項 21の
PCT/JP2004/008709 2003-06-25 2004-06-21 電子計算機、半導体集積回路、制御方法、プログラムの生成方法、及びプログラム WO2005001689A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US10/561,941 US7603542B2 (en) 2003-06-25 2004-06-21 Reconfigurable electric computer, semiconductor integrated circuit and control method, program generation method, and program for creating a logic circuit from an application program
JP2005511009A JP4665760B2 (ja) 2003-06-25 2004-06-21 電子計算機、半導体集積回路、制御方法、プログラムの生成方法、及びプログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003-180659 2003-06-25
JP2003180659 2003-06-25

Publications (1)

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

Family

ID=33549505

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2004/008709 WO2005001689A1 (ja) 2003-06-25 2004-06-21 電子計算機、半導体集積回路、制御方法、プログラムの生成方法、及びプログラム

Country Status (3)

Country Link
US (1) US7603542B2 (ja)
JP (1) JP4665760B2 (ja)
WO (1) WO2005001689A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007133456A (ja) * 2005-11-08 2007-05-31 Hitachi Ltd 半導体装置
WO2008090961A1 (ja) 2007-01-24 2008-07-31 Nippon Shokubai Co., Ltd. 粒子状吸水性ポリマーおよびその製造方法
WO2008096713A1 (ja) 2007-02-05 2008-08-14 Nippon Shokubai Co., Ltd. 粒子状吸水剤およびその製造方法
WO2010090875A1 (en) 2009-01-21 2010-08-12 Rigel Pharmaceuticals, Inc. Derivatives of n2-(3-pyridil or phenyl)-n4-(4-piperidyl)-2,4-pyrimidinediamine useful in the treatment of inflammatory, autoimmune or proliferative diseases
JP2011065353A (ja) * 2009-09-16 2011-03-31 Nec Corp 並列処理システム制御装置、その方法及びそのプログラム
WO2014112082A1 (ja) * 2013-01-17 2014-07-24 富士通株式会社 プログラマブルロジック装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8024548B2 (en) * 2003-02-18 2011-09-20 Christopher Joseph Daffron Integrated circuit microprocessor that constructs, at run time, integrated reconfigurable logic into persistent finite state machines from pre-compiled machine code instruction sequences
JP2008097498A (ja) * 2006-10-16 2008-04-24 Olympus Corp プロセッシング・エレメント、コントロール・ユニット、及びこれらを備える処理システム、分散処理方法
JP2010033555A (ja) * 2008-06-30 2010-02-12 Olympus Corp コントロール・ユニット、分散処理システム及び分散処理方法
US11423953B2 (en) * 2020-05-28 2022-08-23 Micron Technology, Inc. Command triggered power gating for a memory device

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09218781A (ja) * 1996-02-13 1997-08-19 Nec Corp 遠隔保守システム
JPH1195994A (ja) * 1997-09-18 1999-04-09 Fujitsu Ltd プログラマブル・ゲートアレイのコンフィグレーション方法及びプログラマブル・ゲートアレイ装置
JP2000040745A (ja) * 1998-01-21 2000-02-08 Lucent Technol Inc ハ―ドウェアのセットを再構成する方法および再構成可能ハ―ドウェア装置
JP2000181566A (ja) * 1998-12-14 2000-06-30 Mitsubishi Electric Corp マルチクロック並列処理装置
JP2001331767A (ja) * 2000-05-22 2001-11-30 Sharp Corp アダプタカードシステム

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4860192A (en) * 1985-02-22 1989-08-22 Intergraph Corporation Quadword boundary cache system
JP3099889B2 (ja) 1990-06-29 2000-10-16 株式会社東芝 電子計算機、プログラマブル論理回路及びプログラム処理方法
US5684980A (en) * 1992-07-29 1997-11-04 Virtual Computer Corporation FPGA virtual computer for executing a sequence of program instructions by successively reconfiguring a group of FPGA in response to those instructions
US5473763A (en) * 1993-08-02 1995-12-05 Advanced Micro Devices, Inc. Interrupt vector method and apparatus
US5426378A (en) * 1994-04-20 1995-06-20 Xilinx, Inc. Programmable logic device which stores more than one configuration and means for switching configurations
EP0729609A1 (en) * 1994-09-19 1996-09-04 Koninklijke Philips Electronics N.V. A microcontroller system for performing operations of multiple microcontrollers
US6077315A (en) * 1995-04-17 2000-06-20 Ricoh Company Ltd. Compiling system and method for partially reconfigurable computing
JPH08316329A (ja) 1995-05-24 1996-11-29 Nec Eng Ltd 情報処理装置
US5760602A (en) * 1996-01-17 1998-06-02 Hewlett-Packard Company Time multiplexing a plurality of configuration settings of a programmable switch element in a FPGA
US6023564A (en) * 1996-07-19 2000-02-08 Xilinx, Inc. Data processing system using a flash reconfigurable logic device as a dynamic execution unit for a sequence of instructions
CA2239186A1 (en) 1996-10-10 1998-04-16 Semiconductores Investigacion Y Diseno, S.A. - (Sidsa) Process for the prototyping of mixed signal applications and field programmable system on a chip for applying said process
US5915123A (en) * 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
JP3878307B2 (ja) 1997-12-19 2007-02-07 松下電器産業株式会社 プログラマブルなデータ処理装置
DE19807872A1 (de) * 1998-02-25 1999-08-26 Pact Inf Tech Gmbh Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
WO2000031652A2 (en) * 1998-11-20 2000-06-02 Altera Corporation Reconfigurable programmable logic device computer system
US6288566B1 (en) * 1999-09-23 2001-09-11 Chameleon Systems, Inc. Configuration state memory for functional blocks on a reconfigurable chip
JP2001147802A (ja) 1999-11-19 2001-05-29 Minolta Co Ltd 画像処理装置
US6438737B1 (en) * 2000-02-15 2002-08-20 Intel Corporation Reconfigurable logic for a computer
US6326806B1 (en) * 2000-03-29 2001-12-04 Xilinx, Inc. FPGA-based communications access point and system for reconfiguration
US6836839B2 (en) * 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US20030056091A1 (en) * 2001-09-14 2003-03-20 Greenberg Craig B. Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations
CN1605058A (zh) * 2001-10-16 2005-04-06 捷豹逻辑股份有限公司 关于嵌入式字段可编程门阵列核心的接口结构
US6573748B1 (en) * 2001-11-06 2003-06-03 Xilinx, Inc. Programmable logic device with output register for specifying memory space during reconfiguration
JP2006018413A (ja) * 2004-06-30 2006-01-19 Fujitsu Ltd プロセッサおよびパイプライン再構成制御方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09218781A (ja) * 1996-02-13 1997-08-19 Nec Corp 遠隔保守システム
JPH1195994A (ja) * 1997-09-18 1999-04-09 Fujitsu Ltd プログラマブル・ゲートアレイのコンフィグレーション方法及びプログラマブル・ゲートアレイ装置
JP2000040745A (ja) * 1998-01-21 2000-02-08 Lucent Technol Inc ハ―ドウェアのセットを再構成する方法および再構成可能ハ―ドウェア装置
JP2000181566A (ja) * 1998-12-14 2000-06-30 Mitsubishi Electric Corp マルチクロック並列処理装置
JP2001331767A (ja) * 2000-05-22 2001-11-30 Sharp Corp アダプタカードシステム

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007133456A (ja) * 2005-11-08 2007-05-31 Hitachi Ltd 半導体装置
WO2008090961A1 (ja) 2007-01-24 2008-07-31 Nippon Shokubai Co., Ltd. 粒子状吸水性ポリマーおよびその製造方法
WO2008096713A1 (ja) 2007-02-05 2008-08-14 Nippon Shokubai Co., Ltd. 粒子状吸水剤およびその製造方法
WO2010090875A1 (en) 2009-01-21 2010-08-12 Rigel Pharmaceuticals, Inc. Derivatives of n2-(3-pyridil or phenyl)-n4-(4-piperidyl)-2,4-pyrimidinediamine useful in the treatment of inflammatory, autoimmune or proliferative diseases
JP2011065353A (ja) * 2009-09-16 2011-03-31 Nec Corp 並列処理システム制御装置、その方法及びそのプログラム
WO2014112082A1 (ja) * 2013-01-17 2014-07-24 富士通株式会社 プログラマブルロジック装置

Also Published As

Publication number Publication date
US7603542B2 (en) 2009-10-13
US20060155968A1 (en) 2006-07-13
JPWO2005001689A1 (ja) 2006-08-10
JP4665760B2 (ja) 2011-04-06

Similar Documents

Publication Publication Date Title
KR102187912B1 (ko) 인터럽트들의 세트들을 구성하는 장치 및 방법
JP5131188B2 (ja) データ処理装置
WO2004079583A1 (ja) データ転送制御装置およびdmaデータ転送制御方法
US20090271790A1 (en) Computer architecture
CN107548488B (zh) 具有dsp引擎及增强上下文切换能力的中央处理单元
CN101261577A (zh) 微处理器以及在微处理器中存储数据的方法
JP2003296191A (ja) 汎用プロセッサおよび周辺装置のプロセッサとして動作可能な集積回路
JP2007133456A (ja) 半導体装置
JPH0863354A (ja) コンピュータプロセッシングを行うための装置及び方法
JP4665760B2 (ja) 電子計算機、半導体集積回路、制御方法、プログラムの生成方法、及びプログラム
KR100834180B1 (ko) 프로그램/명령어의 실행을 구동하는 “l”구동법 및그것의 아키텍처와 프로세서
JPH07287682A (ja) コンピュータシステム
WO2006134804A1 (ja) 外部デバイスアクセス装置
JP5131269B2 (ja) マルチプロセッシングシステム
JP2003196246A (ja) データ処理システム、アレイ型プロセッサ、データ処理装置、コンピュータプログラム、情報記憶媒体
JP2003202999A (ja) 仮想計算機システム
JPH11232213A (ja) 入出力装置におけるデータ転送方式
JP2826309B2 (ja) 情報処理装置
CN111177027A (zh) 动态随机存取存储器、内存管理方法、系统及存储介质
JPH01145770A (ja) ベクトル処理装置
JP2012155515A (ja) ソースデバイスドライバ及び実行モジュールの作成方法
JP2011118744A (ja) 情報処理装置
JP7466806B1 (ja) データ処理装置、データ処理方法及びデータ処理プログラム
JPH0687221B2 (ja) 情報処理装置
JP2001255902A (ja) デュアルポートメモリ、そのデータ転送方法、及びデュアルポートメモリを用いる制御システム

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 JP 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): 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

DPEN Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed from 20040101)
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: 2005511009

Country of ref document: JP

ENP Entry into the national phase

Ref document number: 2006155968

Country of ref document: US

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 10561941

Country of ref document: US

WWP Wipo information: published in national office

Ref document number: 10561941

Country of ref document: US

122 Ep: pct application non-entry in european phase