WO2001016711A1 - Progiciel et processeur de donnees - Google Patents

Progiciel et processeur de donnees Download PDF

Info

Publication number
WO2001016711A1
WO2001016711A1 PCT/JP2000/005849 JP0005849W WO0116711A1 WO 2001016711 A1 WO2001016711 A1 WO 2001016711A1 JP 0005849 W JP0005849 W JP 0005849W WO 0116711 A1 WO0116711 A1 WO 0116711A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
processing
instruction
data flow
processing unit
Prior art date
Application number
PCT/JP2000/005849
Other languages
English (en)
French (fr)
Inventor
Tomoyoshi Sato
Original Assignee
Ip Flex Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ip Flex Inc. filed Critical Ip Flex Inc.
Priority to CA002348261A priority Critical patent/CA2348261C/en
Priority to NZ516680A priority patent/NZ516680A/en
Priority to IL14267500A priority patent/IL142675A0/xx
Priority to BR0013595-0A priority patent/BR0013595A/pt
Priority to AU68643/00A priority patent/AU776972B2/en
Priority to EA200200309A priority patent/EA004071B1/ru
Priority to US09/830,664 priority patent/US6826674B1/en
Priority to JP2001520598A priority patent/JP4234925B2/ja
Priority to EP00956783A priority patent/EP1134654A4/en
Publication of WO2001016711A1 publication Critical patent/WO2001016711A1/ja
Priority to IL142675A priority patent/IL142675A/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path

Definitions

  • the present invention relates to a program product described by a microcode or the like and a data processing device capable of executing the program.
  • processors with built-in arithmetic functions such as a microprocessor (MPU) and digital signal processor (DSP) (data processing devices or LSI) is known.
  • MPU microprocessor
  • DSP digital signal processor
  • Architectural elements that have greatly contributed to these performance improvements include pipeline technology, super-pipeline technology, super-scaler technology, and VL.
  • Examples include IW technology and specialized data paths (dedicated instructions).
  • branch prediction, register bank, cache technology, etc. can be mentioned.
  • VLIW The VLIW technology is based on the idea that the data path is configured in advance so that it can be executed in parallel, and the compiler generates the desired VLIW instruction code by optimizing so that the parallel execution is enhanced.
  • Adopt a philosophy. This eliminates the need for a circuit that checks the possibility of parallel execution of each instruction, as in the super scaler, and is a very integrity means of implementing hardware that performs parallel execution. It is promising.
  • VLIW is not an optimal solution when considering processors that use image processing or applications that require special data processing. In particular, in applications where continuous processing of operation results is required, data is stored in general-purpose registers. This is because calculations and data processing while holding data are limited. This is the same with the conventional pipeline technology.
  • VLIW is a technology that improves the efficiency of parallel processing near the program counter.
  • VLIW is a very effective means for executing two or more objects simultaneously or executing two or more functions.
  • the implementation of various dedicated arithmetic circuits means an increase in hardware, and on the other hand, a reduction in the flexibility of software.
  • FPGA Field Programmable Gate Arrays
  • FPGA Field Programmable Gate Arrays
  • the present invention it is possible to execute each data processing flexibly and at high speed for complicated data processing without using a variety of dedicated circuits dedicated to such data processing. It is an object of the present invention to provide a system, that is, a program product, a data processing device capable of executing the program product, and a control method thereof.
  • hardware can be dynamically controlled even during application execution, and software-level flexibility is achieved at the hardware level, enabling various data processing to be performed at high speed.
  • the purpose of the present invention is to provide a more economical data processing device and its control method, and a program product. Disclosure of the invention
  • a program product for controlling a data processing apparatus having a plurality of processing units at least one processing unit input and output or output interface is provided.
  • a program product or a program device is provided which has a data flow designating instruction for designating a data path constituted by a processing unit by giving an instruction independently of a timing at which the processing is executed by the processing unit.
  • This program can be provided by being recorded on a recording medium such as ROM or RAM that can be read by a data processing device, and can also be provided by being embedded in a transmission medium that can be transmitted via a computer network or other communication. It is also possible.
  • a plurality of processing units whose input and output or output interfaces can be changed, and an input and Z or output interface of at least one processing unit are connected to the processing unit.
  • a unit capable of fetching a separately specified data port instruction, independent of the time at which the processing is executed, and a data port A data processing apparatus according to the present invention, comprising: a data flow specifying unit that decodes one specified instruction, sets the input and z or output interface of the processing unit, and configures a data path by a plurality of processing units. It becomes possible to control. Therefore, a data path composed of a combination of a plurality of processing units can be changed by a program, and various data processing can be executed by hardware suitable for the processing, that is, a data path or a data flow.
  • the input and output or output interface of at least one processing unit is provided.
  • a dedicated circuit is prepared, and a dedicated instruction using the dedicated circuit is the only way to deal with it, which increases the hardware cost.
  • the interface of the processing unit such as the logical operation unit can be described, so that the structure of the pipeline control and the data path control can be described.
  • the present invention provides not only a parallel processing in the vicinity of a program counter but also a means effective in simultaneously simulating two or more objects and simultaneously simulating two or more functions. Become. In other words, in the conventional instruction set, processes based on separate program counters, such as data processing in two or more contexts and execution of an algorithm, could not be started simultaneously. In, by appropriately defining the data flow using the data tough instruction, it becomes possible to execute the process regardless of the program counter.
  • this instruction set it is possible to incorporate a data path that is considered to be effective for improving performance from the application side in advance for parallel processing from software.
  • the required data path data flow
  • This data path can be used not only for data processing for a specific purpose, but also for purposes such as starting a general state machine, so that the degree of freedom is extremely high.
  • the data path can be changed by combining the processing units by instructing the interface of the processing unit by the data flow designation instruction. Therefore, unlike an architecture that changes the connection between transistors like an FPGA, the data path can be defined simply by switching the interface between processing units with appropriate or specific data processing functions. Can reconfigure the hardware.
  • the data processing device of the present invention is not an architecture that requires versatility at the transistor level unlike an FPGA, the data processing device of a compact and economical system processing device such as a system LSI can be improved in mounting density. Equipment can be provided. Furthermore, since redundant configurations can be reduced, processing speed can be increased and AC characteristics can be improved.
  • the program, the data processing device, and the control device of the present invention In the control method, it is possible to specify a data flow by describing or describing an instruction that specifies the interface of at least one processing unit included in the data processing device. .
  • the independence of the data path can be increased, and as a result, the data path can be specified while executing another instruction program, or the data path inside the idle data processing device can be changed. It is possible to easily provide a structure that can be rented out for other urgent processing executed in another external data processing device or another data processing system in the same chip. Become.
  • the processing contents of a configurable processing unit can be changed by combining data paths with a data flow designation instruction. That is, in the data flow designation unit and the data flow designation step, it is desirable that the processing contents of the processing unit can be changed by the data flow designation instruction.
  • the flexibility of the data path configured by combining the processing units can be improved, and more data processing can be brought into the data flow type processing with less hardware resources, resulting in higher performance. Can be.
  • a circuit unit having a specific internal data path as the processing unit.
  • a processing unit with a somewhat compact data path is prepared as a template, the combination between the data paths is specified, and the data flow type processing is performed.
  • the processing contents of the processing unit can be changed.
  • FPGA which reconfigures the circuit at the transistor level
  • internal data paths prepared in advance are used, there are few redundant circuit elements and the area utilization efficiency of the transistor is high. Therefore, the mounting density is high and economical.
  • a data path suitable for high-speed processing can be constructed, and the AC characteristics are high. Therefore, in the present invention, a part of the internal data path of the processing unit can be selected in the unit of data detent specification and step by the data destruction specification instruction. Desirable.
  • the data flow specification unit acts as a scheduler that manages the interface of the processing unit, just as it manages the schedule for maintaining the interface of each processing unit set by the data flow specification instruction. It is desirable to have functions. For example, perform a matrix calculation for a certain period of time, and then filter When performing processing, it is possible to specify in advance the connections between the processing units in the data processing device necessary for those processing, and to realize this using a counter that counts the time. Replacing the counting counter with another comparison circuit or external event detector enables more complex and flexible scheduling.
  • the input and Z or output interface of a processing protocol composed of a plurality of processing units can be specified by a data port designation instruction.
  • the change of the data path associated with the plurality of processing units can be processed with one instruction. Therefore, in the data flow designating unit or process, the input and / or output interface of the processing block composed of a plurality of processing units can be changed by the data flow designating instruction. It is desirable.
  • a memory that stores multiple configuration data that defines the input and Z or output interface of the processing block is provided, and in the data flow specification unit or process, the data flow specification instruction is used. It is desirable to select one of the multiple configuration data stored in memory so that the input and output or output interfaces of the processing block can be changed.
  • FIG. 1 is a diagram showing an outline of an instruction set including a data flow designation instruction.
  • FIG. 3 is a diagram showing a simple example in which the instruction set shown in FIG. 1 is actually used.
  • FIG. 4 is a diagram showing how data is stored in a register by the instruction set shown in FIG.
  • FIG. 5 is a diagram showing a data processing device capable of executing the instruction set of the present invention.
  • Figure 6 shows a sample program that can be run on a conventional CPU or DSP.
  • FIG. 7 is an example of a program for a control unit according to the present invention.
  • FIG. 8 is a diagram showing an example in which the program shown in FIG. 7 is compiled into an execution program of an instruction set according to the present invention.
  • FIG. 9 is an example of a different program for the control unit according to the present invention.
  • FIG. 10 is a diagram showing a data flow configured by the program of FIG.
  • FIG. 11 is a diagram showing a different example of a data processing device capable of specifying a data flow.
  • FIG. 12 is a diagram illustrating an example in which the data path is changed.
  • FIG. 13 is a diagram showing a schematic configuration of a data processing device capable of executing data processing by the instruction set of the present invention.
  • FIG. 14 is a diagram showing how different combinations of templates are used to configure different dedicated circuits.
  • FIG. 15 is a diagram illustrating an example of the template. BEST MODE FOR CARRYING OUT THE INVENTION
  • FIG. 1 shows a configuration of an instruction set (instruction format) suitable for describing a data port designation instruction according to the present invention.
  • This instruction set (DAPZDNA instruction set) 10 is the first field Instruction execution basic field (X field) 11 A part called 1 and the second field that can improve the efficiency of the next instruction execution, the next instruction execution preparation cycle (additional field or Y field) It has two fields called 1 2.
  • the instruction execution basic field (X field) 11 specifies the contents of data operations such as addition, OR, AND, comparison, and various other data processing such as branching. Specify where the results are stored (destination).
  • the X field 11 contains only information on the instructions that are actually executed to improve the efficiency of using the instruction length.
  • the additional field (Y field) 12 can describe an instruction (information) independent of the execution instruction of X field 11 of the same instruction set. Assigned to the preparation cycle.
  • the X field 11 is an execution instruction field 1 that describes an instruction operation or an execution instruction (Execution ID) for a processing unit such as an arithmetic and logic operation unit. 5, a field (type field) 16 indicating the validity of the Y field 12 and the type of the prepared instruction indicated by the Z invalid and Y field 12 and a field 17 indicating the register of the day destination. Be prepared. As described above, the contents of the type field 16 are related to the Y field 12 and can be defined separately from the contents of the other fields of the X field 11. .
  • the Y field 12 describes the preparation information defined by the type field 16.
  • the preparation information described in the Y field 12 is information for making a calculation or other data processing executable, and some specific examples are shown in FIG.
  • the TYPE field 16 is contained in the X field 11 but can be described independently or independently of the execution instruction field 15-and in the Y field 12 Is an address that describes the address ID (AID) 21 and the address information 22 that defines the purpose of use. It can be used as the information field 26.
  • the address information described in the Y field 12 is used for reading and writing between a register or buffer and memory (including a register file), and block transfer like DMA is possible. Configuration. Further, information such as an address (fetch address) indicating a branch destination when a branch instruction is executed and a start address when executing in parallel can be described in the Y field 12.
  • register information or immediate values (immediate values) on the source side for register-type instructions for example, arithmetic or other logical operation instructions (including MOVE, memory read Z-write, etc.) ) can also be described in the Y field 12. That is, the Y field 12 can be used as a field 27 that defines the source for the subsequent execution instructions.
  • the Y field 12 may include an interface for an arithmetic and logic unit (ALU) or other data processing unit, for example, a processing unit having a predetermined data path (hereinafter a template). It is also possible to describe a data flow specification instruction 25 that specifies the combination of the source (destination) and the processing content. That is, the Y field 12 is used to define a pipeline (data flow or data path) for a reconfigurable data path or the like in order to perform specific data processing. 8 can be used. Of course, in the Y field 12, information for starting the data flow and a data flow designation instruction 25 for ending can be described.
  • ALU arithmetic and logic unit
  • the data flow generated by defining a reconfigurable data path using the Y field 12 enables processing independent of the program counter that fetches code from code RAM. It can be carried out.
  • X field 11 and Y field 12 contain or describe execution instructions or preparation instructions. It is also possible to have an instruction set in which only the X field 11 or the Y field 12 is meaningful without describing the instruction in the field (noting NOP).
  • a program product that has an instruction set that includes both monic execution instructions and data flow designation instructions, and it is also possible to have a program product in which data flow designation instructions are described consecutively. Regardless of the described form, the scope of the present invention includes a program product including a data flow designation instruction, a recording medium on which the program is recorded, and the like.
  • FIG. 3 shows a simple example of the instruction set 10 of the present example.
  • j-The first instruction set 10, T (j-1) has 32 bits in the Y field 12 of the same instruction set in the type field 16 of its X field 11. It shows that the immediate of the object is described. Then, in the Y field 12 of the instruction set T (j-1), "# 000011234H" is described as an immediate.
  • MOVE is described in the execution instruction field 15 of the X field 11, and register R3 is described in the destination field 17.
  • the control unit ALU executes the immediate "#" defined in the previous instruction field T (j-1). 0 0 0 0 1 2 3 4 H ”is stored in register R3.
  • the instruction set 10 of the present example (hereinafter, the j-th instruction set 10 is indicated by the instruction set T (j)), the instruction set T in which the execution instruction is described is described.
  • the execution set is prepared by the instruction set T (j_l) before (j). Therefore, the content of the processing executed by the ALU that constitutes the control unit is not known only by the instruction set T (j), but the ALU is executed by the two instruction sets T (j-1) and T (j). Is uniquely determined.
  • the execution instruction field 15 of the instruction set T (j-1) contains the Y field of that instruction set. — Describes an instruction that executes the processing prepared by the Y field 12 of the instruction set before the instruction set T (j-1) independently of the field 12.
  • the type field 16 and the Y field 12 of the instruction set T (j) contain information that prepares for the execution instruction described in the execution instruction field of the next instruction set. Have been.
  • an execution instruction is stored in the Y field 12 of the instruction set T (j-l) immediately before the instruction set T (j) described in the X field 11
  • Preparation information (preparation instruction) is described. That is, the latency of the preparation instruction is an example of one cycle, but the instruction set in which the preparation information is described is not limited to the immediately preceding instruction set.
  • the previous instruction set does not need to be a control program for a control unit having a plurality of ALUs or a prepared instruction for the purpose of data flow control described later.
  • the ALU state (environment or interface) or template configuration set by the prepare instruction is retained until the instruction set with the execute instruction corresponding to the prepare instruction is fetched and executed.
  • a preparation instruction can be described in the Y field 12 of the instruction set 10 several instructions before the instruction set 10 having an execution instruction.
  • FIG. 4 shows how values are stored in a register file or a memory functioning as a register by the instruction set shown in FIG.
  • the processor fetches the first instruction set T (j-1), and the immediate instruction "# 0 0 0 0 1 2 3 4 H Is latched in the register DPO.R on the source side of the processor's ALU. Then, the processor fetches the next: j-th instruction set T (j) and stores it in buffer 29b in a cycle that executes the move instruction that is the execution instruction of the X-field 11. Is done. After that, the value of buffer 29b is stored in the address of register R3 of memory or register file 29a. Therefore, even if the storage location is memory rather than register, the instruction set 10 By using, by performing the processing based on the preparation information prior to the execution instruction, data can be loaded or stored in the cycle of the execution instruction.
  • FIG. 5 shows a schematic configuration of a processor (data processing device) 38 including a control unit 30 capable of executing a program in which the processing content is described by the instruction set 10 of the present example.
  • the microcode or the microphone program 18 having the instruction set 10 of the present example is stored in the code RM39.
  • the control unit 30 includes a fetch unit 31 for fetching the instruction set 10 of the microprogram from the code ROM 39 at any time according to the program count and an X field 11 of the fetched instruction set 10.
  • a first function that decodes and determines or asserts the processing contents of the ALU 34 and selects the register 34 d of the destination and latches the result of the logical operation of the ALU 34
  • the execution control unit 32 is provided.
  • control unit 30 is responsible for the fetched instruction set 10
  • the second execution control unit 33 is provided with a second execution control unit.
  • This second execution control unit 33 can interpret the information in the instruction in the Y field 12 except for the information in the type field 16 so that the information can be interpreted independently of the contents of the X field 11. You.
  • the second execution control unit 33 further selects the source and destination sides of the ALU 34 if the information described in the Y field 12 specifies the data flow. Alternatively, it has a function of determining the setting, that is, determining the interface of the ALU 34, and continuously holding the state until a predetermined click or release instruction is given.
  • the second execution control unit 33 also determines the processing contents of the ALU 34 and determines the state. For a period of time.
  • the control unit 30 of this example further includes a plurality of combinations of the execution control units 32 and 33 and the ALU 34 so that various processes can be executed. I'm sorry. Therefore, the control unit 30 of this example is used as a core or a peripheral circuit to configure a DSP that processes image data at high speed, a CPU or MPU that can perform general-purpose digital processing at high speed, and the like. Is possible. 6 to 9 show an example of a program executed by the control unit 30 of the present embodiment.
  • the sample program 41 shown in FIG. 6 is an example created so that it can be executed by a conventional CPU or DSP. This program is a program that extracts the largest value from the table power starting from the address of #START and ends when it detects #END indicating the final data.
  • the program 42 shown in FIG. 7 is obtained by converting the same processing as in FIG. 6 into a program suitable for the control unit 30 capable of executing the instruction set according to the present invention. An example that can be executed in a set is shown.
  • the program shown in FIG. 7 is converted into an execution program of the instruction set according to the present invention through a compiler, and is executed by the control unit 30.
  • Figure 8 shows the compiled program 43.
  • the execution field 15 of the second instruction set 10 is set in the Y field 12 of the first instruction set 10 Preparations are made.
  • the immediate is described in the Y field 12 as the preparation information in the type field 16 and the second execution control in which the Y field 12 is decoded Unit 32 provides the cache with the immediate source that is the source of ALU 34 to a register.
  • the execution instruction 15 can be executed to the ALU 34 which is ready to execute the execution instruction.
  • the registry specified in destination field 17 Simply execute the MOVE instruction in the execution instruction field 15 for the data.
  • an execution instruction from a preparation instruction that describes an interface or the like for executing the execution instruction. It can be described and processed in the instruction set that is fetched prior to the instruction. Therefore, when executing the execution instruction described in each instruction set, since the data is read on the source side of ALU34, only the arithmetic instruction is executed purely. Therefore, the AC characteristics are good, and the execution frequency characteristics are improved.
  • instruction fetch, register decoding, processing execution, etc. can be performed in stages, as in the conventional pipeline, and throughput is improved. it can.
  • the program in this example can describe two instructions in one instruction set, the processing speed can be improved by executing multiple instructions near the program counter in parallel like VLIW. .
  • a conditional branch is described in the execution instruction field 15 of the fourth instruction set, and the address of the branch destination is set to the Y of the third instruction set preceding this instruction set. It is described in fields 12 and 13. Therefore, when or before the fourth instruction set is executed, the address of the branch destination is set in the fetch register, and when the branch condition is satisfied, the instruction set of the branch destination is set without penalty. Can be fetched or executed. Furthermore, it is possible to prefetch the instruction at the branch destination, and to prepare for execution of the execution instruction at the branch destination in advance. Therefore, even the instruction at the branch destination can be executed without wasting one clock, and the processing can be accurately defined in units of one clock. FIG.
  • FIG. 9 further shows a program 44 of the present invention in which a data flow designation instruction 25 is described using the Y field 12 of the instruction set 10.
  • Producer having such a data flow specification instruction 25
  • the program product 18 is provided stored in a storage medium readable by a ROM 39, a RAM, or another suitable data processing device. It is also possible to embed and distribute the program product 44 or 18 in a transmission medium exchanged in a network environment.
  • DFLWI is an instruction for initializing a data flow
  • DFLWC is an instruction for specifying connection information (interface information) and processing content of an arithmetic processing unit 34 constituting a dataflow (data path).
  • DFLWT is an instruction that defines the end condition of the data flow.
  • DFLWS that inputs data to the data flow defined in this way and performs processing is described.
  • the second execution control unit 33 functions as a data flow specification unit according to the data flow specification of the program, and the data flow Control is performed according to the specified process. That is, when the data fetching instruction 25 fetched by the fetch unit 31 is decoded and the input and / or output interface of the processing unit 34 is executed by the processing unit 34 And set independently. Further, depending on the data flow designation instruction 25, control is also performed to regulate or change the processing content of the processing unit 25.
  • the second execution control unit 33 also functions as a scheduler 36, and manages a schedule for maintaining an interface of each processing unit 34.
  • the second execution control unit 33 functioning as the scheduler 36 allows the interface (input / output) of the three arithmetic processing units 34 to The processing content is specified, and the The state or the consolidation is held until the termination condition is satisfied. Therefore, the same processing as the processing shown in FIG. 6 proceeds one after another independently of the program counter by a data path in a data flow composed of these arithmetic processing units 34. In other words, by specifying the data flow, a state in which a dedicated circuit for the processing is previously provided in the control unit 30 by the three arithmetic processing units 34 is provided. Thus, the processing for obtaining the maximum value can be executed outside the control of the program counter.
  • the ALU 34 that performs the function of DPI.SUB determines that DP 1 .R 1 and #END are the same, the data flow ends.
  • FIG. 11 shows a different example of a data processing device that can be controlled by a program 41 having a data port designation instruction 25.
  • the data processor 40 can be realized as a system LS 1, a code RAM 39 on which the program 41 is recorded, and a fetch unit capable of flushing an instruction from the code RAM 39. And 42.
  • the fetch unit 42 in this example has a data flow decoder (DFDEC) 42 b capable of decoding the data flow designation instruction 25 when the instruction is fetched, and a general data flow instruction other than the data flow designation instruction 25.
  • a decoder 42a for decoding instructions. Therefore, the program 41 for controlling the data processing device 40 may be a mixture of the data-tough specification instruction 25 and other general-purpose instructions, or the data flow specification. It is also possible to prepare a program having the instructions 25 and a program comprising other general-purpose instructions in the code RAM 41 so that the instructions can be fetched synchronously by an appropriate method.
  • the general-purpose instruction is decoded by a general-purpose decoder 42 a, and the decoded signal ⁇ p is supplied to an embedded general-purpose processor 43 provided with an ALU, a register, and the like, and executed. You.
  • the data tough instruction 25 is decoded by DFDEC 42b, and the decoded signal is supplied to a data flow processing unit (DFU) 45 for processing.
  • DFU data flow processing unit
  • the DFU 45 in this example has a plurality of data processing units (DPUs) 46.
  • Each DPU 46 has a data path formed by the FPGA, which is a reconfigurable processing unit. Therefore, the DPU 46 controls the input and output of data to and from the FPGA 46c, the RAM 46b or ROM storing the mapping of the FPGA 46c, and the FPGA 46c.
  • the interface 46 d and the mapping information and interface information stored in the RAM 46 b are supplied to the FPGA 46 c and the interface 46 d, and a configuration control unit 46 a that defines their configuration or state And.
  • the fetch unit 42 performs a process of fetching an instruction set including a data flow designation instruction
  • the DFDEC 42b further executes a process of fetching the data flow designation unit. It performs control including the data flow designation step. That is, the data port designation instruction is decoded, and the interface 46 d of the DPU 46 is designated via the configuration control section 46 a of each DPU 46 of the DFU 45. Therefore, the connection of the DPU 46 of the DFU 45 can be controlled by the data flow designation instruction 25, and the data path formed by the plurality of DPUs 46 can be flexibly programmed. Can be controlled.
  • FIG. 12 (a) two data nodes are obtained by using 12 DPUs 46.
  • 12 DPUs 46 One data path 48 that can execute data processing different from that in FIG. 12 (a) can be configured.
  • the data path that can be configured by the plurality of DPUs 46 is not limited to this, and the DFU 4 of the data processing device 40 can be configured by using three or more data paths by software using a data flow designation instruction. It is also possible to define 5. Therefore, it is extremely easy to execute a plurality of processes in parallel.
  • if there is a surplus DPU 46 it can be set by an appropriate data path and used by other data processing devices. It is also possible to use them.
  • processing to configure or change the data path by combining DPUs 46 can be performed without interrupting data processing in other data paths or without interrupting processing in embedded processor 43. It is. Furthermore, if the processing contents of the FPGA 46c are not changed, the data path can be dynamically changed only by changing the setting of the interface 46d. Also, when changing the processing content of the DPU 46, use an FPGA 46c with a somewhat smaller circuit size. By using this, it is possible to reduce the time required for re-binging. Therefore, a data path that matches the data processing of the application to be processed by the data processing device 40 can be flexibly constructed by a program, and the data processing can be executed at an extremely high speed. .
  • Figure 13 shows multiple processing units (templates) whose data flow can be defined by the instruction set 10 with the X and Y fields 11 and 12 shown in Figure 1.
  • the schematic configuration of the data processing device provided with is shown in the image of the system LSI 50.
  • the system LSI 50 includes a processor area 51 for performing data processing operation, a code RAM 52 for storing a program 18 for controlling the processing of the processor area 51, and other control information or processing information. And a data RAM 53 which also serves as a primary work area.
  • the processor area 51 consists of a fetch unit (FU) 55 for fetching program code, a general-purpose data processing unit (multi-purpose ALU) 56 for multi-purpose processing, and a data And a data flow processing unit (DFU) 57 capable of processing the data.
  • the LSI 50 of this example has a set of X-fields 11 and The program code including the Y field 12 can be decoded and executed. Therefore, FU 55 can store the fetched instruction in X field 11 of instruction set 10.
  • a fetch register (FR ()) 61 y that can store an instruction in the Y field 12. It also has an X decoder 62X decoding the instruction latched in FR (X) 61X, and a Y decoder 62Y decoding the instruction latched in FR (Y) 6ly. ing. Also, the address of the next instruction set is stored according to the decoding results of these decoders 62X and 62Y, and a register (PC) 63 functioning as a program counter is provided. . Therefore, the next instruction set can be fetched from the predetermined address of the program stored in the code RAM 52 at any time.
  • PC register
  • the X decoder 62X functions as the above-described first execution control unit 32.
  • the Y decoder 62 y functions as the second execution control unit 33, that is, as a data port-specific unit. Therefore, the Y decoder 62 y decodes the data flow instruction described in the Y field 12 of the instruction set 10 and sets the input / output interface of the processing unit of the DFU 57 based on the decoded data flow instruction.
  • the data flow designating step of the present invention which constitutes a data path, is executed. For this reason, in the control of the data processing device 50 shown in FIG. 13, the input and Z or output interface of the processing unit are executed by the processing unit in the fetch unit 55.
  • a step of fetching a data-tuff designation instruction 25, which is instructed independently of the timing of the data flow, is performed.
  • the input and Z or output interface of the unit are set, and a data flow designating step is performed to configure a data path by a plurality of processing units.
  • the multipurpose ALU 56 includes an arithmetic unit (ALU) 34 described with reference to FIG. 5 and a register group 35 for storing input / output data of the ALU 34.
  • the instruction decoded by FU 55 If it is a line instruction and preparation information, the signal ⁇ X decoded by the X decoder 62 X and the signal y decoded by the Y decoder 62 y are supplied to the multipurpose ALU 56, and The processing in ALU 34 is executed as described.
  • the DFU 57 has a template area 72 in which a plurality of templates 71 are arranged for forming a data flow or a pseudo data flow for performing various processes.
  • each template 71 is a processing unit having a function as a specific data path or data flow such as an arithmetic processing unit (ALU). (Processing circuit).
  • ALU arithmetic processing unit
  • the Y decoder 62 decodes the data port designation instruction 25 described as the preparation information in the Y field 12, and according to the signal, the template, which is the processing unit of the DFU 57, is decoded.
  • G 71 1 Each interface and processing content can be specified.
  • templates 1-1 The interface of the template 71 can be set by the data flow designation command 25 so as to perform data processing in which 1 _ 2 and 1 3 3 are connected in series. Similarly, the interface can be set for the other templates 71 of the template area 72, and a plurality of templates 71 can be appropriately combined to form a data path or data flow.
  • a plurality of dedicated processing units or dedicated data paths 73 suitable for processing the input data ⁇ in can be constructed in the template area 72 by the program 18 at any time.
  • the connection between the templates 71 can be changed by the data flow designation command 25 as shown in FIG. 14 (c). That is, the data flow designation instruction 25 is decoded by the Y decoder 62 y, and the interface of the corresponding template 71 can be changed.
  • the Y decoder 62 y as described above (the process of designating the data port)
  • the templates 1 — 1, 2 — n, and m — n are connected in series to perform other different processing.
  • One or more data paths 73 suitable for execution can be constructed in the template area 72.
  • templates 71 are not limited to the combinations shown in FIG. 14 but may be combined as shown in FIG. 12, and the templates 71 may be used alone or in combination with a plurality of templates.
  • the processing unit formed by combining 1 can be assigned to other processing or another program that is executed in parallel. If a plurality of port processors 51 are connected by an appropriate bus, a train (data train) in which a template 71 is combined for data processing mainly performed by another processor 51 is provided. It is also possible to configure a path) 73, and the data processing resource of template 71 can be used very effectively.
  • the template 71 is a higher-level data processing unit that internally implements a specific data path basically having a function as an ALU or a logic gate. It is.
  • the data flow designation instruction 25 By defining or redefining the interface of the template 71 by the data flow designation instruction 25, the combination of them is changed to form a larger data path suitable for a specific process. are doing.
  • the processing to be executed in the template 71 can be defined by the data flow designation instruction 25. In this case, however, the ALU inside the template 71 or other logical gates can be defined.
  • a part of the internal data path of the template 71 is selected to define the processing to be executed in the template 71.
  • the entire chip like an FPGA or a limited logic It is not necessary to perform remapping even in block units, and it is possible to prepare in advance by switching data paths provided in the template 71 or template area 72 or selecting a part of them.
  • a desired data path can be realized by using the specified ALU or logical gate. That is, the connection of the logical gate is re-set within the necessary range inside the template 71, and the connection is re-set within the necessary range even between the templates 71. Therefore, it is possible to change the hardware to a configuration suitable for specific data processing in a very short time in units of a clock.
  • the processor 51 that employs the template 71 of this example, which incorporates an appropriate logic gate in advance, can prevent the generation of an enormous waste area like an FPGA, Can also be improved. Therefore, the data processing unit 57 of this example based on the template 71 is a processing device having a reconfigurable configuration in which hardware can be changed by a program, and a processing device using an FPGA. On the other hand, it is possible to provide a data processing device having a higher level of software flexibility and hardware speed.
  • the data processing unit using the template 71 is economical. Also, if the data processing device is composed of FPGAs, it is necessary to consider frequent downloading of the logic reconfiguration program in order to cover the reduction in mounting density. This also causes a reduction in processing speed.
  • the processor 51 using the template 71 of the present example since the mounting density is high, the necessity to cover the decrease is small, and the hardware is reconfigured to compensate for the reduction in the mounting density. The requirement to do so is reduced. The reconstruction of the hardware can also be controlled on a clock basis. Also in these respects, unlike a reconfigurable processing device based on FPGA, a processing device that can reconstruct hardware by software, and a compact, high-speed data processing device Can be provided.
  • the DFU 57 shown in FIG. 13 collectively defines the interface and processing contents (hereinafter, the configuration data) of the template 71 arranged in the template area 72.
  • the configuration register (CRE G) 75 and a configuration RAM (CRAM) storing a plurality of configuration data C i (i is an appropriate integer, the same applies to the following) set in the CREG 75. 7 6 is provided.
  • An instruction such as “DFSETC i” is prepared as a data flow designation instruction 25.
  • the configuration data C stored in the CRAM 76 is read.
  • the desired data from i is loaded into CREG 75.
  • the configuration of a plurality of templates 71 arranged in the template area 72 can be changed collectively. In some cases, the configuration can be changed for each processing block consisting of a plurality of templates 71.
  • the DF LW I and the DF LWC are decoded by the Y-decoder 6 2 y to execute the above-mentioned instruction 25 for specifying the data slot, thereby configuring each template 71. It is also possible to change the setting of the application. Therefore, in the DFU 57 of this example, the configuration of a plurality of templates 71 requiring a large amount of information can be changed by one instruction, and the instruction efficiency and the reconfiguration can be improved. The time consumed for has been reduced.
  • the DFU 57 of this example is provided with a controller 77 for downloading configuration data to the CRAM 76 in units of blocks.
  • “DFL OA DBC i” is provided as the data flow designation instruction 25, and when the Y decoder 62 y decodes this instruction, a number of data RAMs 53 are prepared in advance.
  • the configuration data C i for ongoing processing or processing that will occur in the future can be downloaded to the configuration memory CRAM 76 in advance from the configuration data 78 of the configuration. it can.
  • FIG. 15 shows an example of the template 71.
  • the template 71 has a configuration in which data can be exchanged with another template 71 via a data flow RAM (DFR AM) 79 prepared in the DFU 57, and the I / O
  • the processing result of another template 71 is input to the input caches 82a to 82 via the O interface 81, and the processed result is output to the output caches 83a to 83d.
  • the template 71 executes the following processing on the data A, B, C and D stored in the input caches 82a to 82d, respectively, and calculates the output cache 83 b has a data path 88 that the comparison result can be stored in the output cache 83c.
  • the processing result of this template 71 is output again to another template via the interface 110 and the DRAM 79.
  • the template 71 has a unique configuration register 84, and the data stored in the register 84 controls a plurality of selectors 89, and the control unit 85, adder 86, comparator A signal to be input to the logic gate such as 87 can be selected. Therefore, the template 71 can perform processing using a part of the data path 88 by changing the data of the configuration register 84. Without using it, it is also possible to execute the following processing.
  • the template 71 can use a part of the data path 88 to provide a condition judgment circuit by the control unit 85 and an addition circuit. Adjustment using the device 8 6 It can also be used as a comparison circuit using an arithmetic circuit and a comparator 87. Since these logic gates are composed of dedicated circuits pre-fabricated in the template 71, there is no waste in circuit configuration or processing time.
  • the configuration of the input and output data can be changed by the interface 81 controlled by the configuration register 84, and all or one of the data flows for performing the desired data processing can be changed. Can be processed by the template 71 of this example.
  • the template 71 further converts the data of the original configuration register 84 into the data of the CREG 75 and the Y decoder of the FU 55 which functions as the data flow designation unit. Rewriting can be performed based on any of the data from the (YDEC) 62 y, and the selection can be controlled by a signal from the Y decoder 62 y. That is, the configuration of the template 71 as described above can be performed by the Y decoder 6 2 y or the data port specification process executed by the Y decoder 6 2 y based on the data flow specification instruction 25. it can. Further, according to the configuration data Ci stored in the CRAM 76 by a DFSET instruction or the like, the configuration can be changed together with other templates to change the hardware configuration. Further, since the data of the configuration register 84 can be set by the data flow designation instruction 25, a specific data path 88 of the template 71 can be partially selected and used.
  • the configuration of the template 71 can be changed individually or in groups or blocks by the data flow designation instruction 25, and the data path of the processor 51 can be configured flexibly.
  • the configuration of the template 71 is not limited to this example, but may be a combination of logical gates so as to realize other data processing.
  • the multipurpose ALU 56 in this example is designed to minimize the penalty caused by a branch or the like by the preparation instruction described in the Y field 12 of the instruction set 10. Has become.
  • the system LSI 50 equipped with the processor 51 of this example allows the hardware to be changed flexibly in the same way as describing the processing in a program, and a high-performance or real-time processing capable of real-time processing. LSI can be provided. In addition, it can flexibly respond to application changes and specification changes, and can prevent processing performance from deteriorating due to specification changes.
  • the template area 72 can be configured at the center, and more data processing can be executed by data flow type processing, and the processing performance can be improved. If a general-purpose LSI is provided, the template area 72 should consist mainly of templates suitable for processing that often occurs in general-purpose applications such as floating-point arithmetic, multiplication and division, and image processing. Is possible.
  • the instruction set and the control unit it is possible to provide an LSI having a data flow for performing various processes and a pseudo data flow, and to implement software.
  • the hardware that executes the single flow can be changed to a configuration suitable for specific data processing.
  • the architecture for executing the data flow type processing by combining the templates described above, that is, the DFU 57 or the template area 72 is composed of the X field 11 and the Y field. It can be incorporated into the Control Unit II processor independently of the instruction set 10 with fields 12. Further, it is possible to provide a data processing device that can perform higher-speed processing than an FPGA, has a shorter time required for hardware change, and has excellent AC characteristics.
  • a system LSI by incorporating the DFU 57 or the template area 72 of this example together with a conventional general-purpose embedded processor, that is, a processor that operates with mnemonic code. Processing that cannot be handled by the template 71 can be processed by a general-purpose processor.
  • the conventional processor has problems such as penalty of branching and consumption of a clock to prepare a register for arithmetic processing, as described above.
  • a form such as a processor 51 capable of decoding and executing the instruction set 10 having the Y field is desirable.
  • the configuration of the DFU 57 is executed in parallel with other processing by using the Y field 12 before executing data processing. It can be set or changed, and is excellent in terms of processing efficiency and program efficiency. It is also possible to improve the program efficiency by describing a conventional instruction code of a single moniker and a data flow type instruction code in one instruction set.
  • the function of the Y field 12 of the instruction set 10 of this example is not limited to describing a data flow type instruction code.
  • the processor according to the present invention can change the configuration of the physical data path prior to execution by using the Y field 12.
  • conventional processors have connections between multiple multiprocessors. The only available method was to pass through shared memory, etc., and even if there was an idle processor, there was no way to use the internal data processing unit from outside.
  • the control unit according to the present invention by setting an appropriate data flow, the surplus hardware can be used by another control unit.
  • the efficiency of the instruction execution sequence, the independence of some data paths, and the improvement of the degree of freedom (degree of diversion) increase the control unit or the control unit according to the present invention.
  • a processor using it if there is enough hardware to execute, it is possible to execute without problem even if instruction sequences in contexts with completely different properties are supplied simultaneously.
  • the above-described data processing device and instruction set are merely examples of the present invention.
  • a code RAM or a data RAM is replaced with an external RAM.
  • other outside The present invention also includes a data processing device having a system and known functions as a data processing device such as SI, such as an input / output interface for connecting to a device. Therefore, the present invention is understood and understood from the description of the following claims, and all the modifications included in the claims are included in the scope of the present invention.
  • the data path can be flexibly rearranged by a program by changing the interface of a plurality of processing units by a data flow designation instruction.
  • the data processing device of the present invention can be provided as an LSI or the like, which has a processor capable of executing various data processing, and can be provided not only as an integrated circuit of electronic elements but also as an optical element,
  • the present invention can also be applied to an optical integrated circuit device in which an electronic element and an optical element are integrated.
  • the book In the control program and the data processing device equipped with the instruction set of the invention since the data processing can be executed flexibly and at high speed, high-speed and real-time performance such as network processing and image processing can be achieved. It is suitable for the required data processing device.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Stored Programmes (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Communication Control (AREA)
  • Circuits Of Receivers In General (AREA)
  • Image Processing (AREA)
  • Saccharide Compounds (AREA)
  • Eye Examination Apparatus (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Facsimiles In General (AREA)
  • Vehicle Body Suspensions (AREA)
  • Steering Control In Accordance With Driving Conditions (AREA)
  • Input Circuits Of Receivers And Coupling Of Receivers And Audio Equipment (AREA)

Description

明 細 書 プログラム製品およびデータ処理装置 技術分野
本発明は、 マイク ロコー ドなどによ り記述されたプログラム製品、 およびそのプログラムを実行可能なデータ処理装置に関するもので ある。 背景技術
汎用的な処理および専用的なデジタルデータの処理を行う装置と して、 マイ ク ロプロセッサー ( M P U ) 、 デジタル ' シグナルプロ セッサ一 (D S P ) といった演算機能を内蔵したプロセッサ (デ一 タ処理装置あるいは L S I ) が知られている。 これらの性能向上に 大きく貢献したアーキテクチャ要素と して、 パイプライン化技術、 スーパー . パイプライ ン化技術、 スーパ— ' スケーラ化技術、 V L
I W技術、 特化型データパス (専用命令) を挙げるこ とができ る。 さ らに、 分岐予測やレジスタバンク、 キャ ッシュ技術等も挙げるこ とができる。
V L I W技術は、 予めデータパスを並列実行可能なよ うに構成し ておき、 コンパイラがこの並列実行を高めるよ う に、 最適化を行い 目的の V L I W命令コー ドを生成するという考え方であり、 極めて 合理的な考え方を採用している。 これによ り、 スーパ一 ' スケ一ラ のよ うに 1つ 1つの命令の並列実行の可能性をチェックする回路が 不要なので、 並列実行を行うハ ー ドウユアの実装手段と しては、 極 めて有望と されているものである。 しかしながら、 画像処理や特殊 データ処理を必要とするアプリ ケーショ ンの処理を用途とするプロ セッサを考えると、 V L I Wも最適な解決策とはならない。 特に演 算結果の連続処理を要求されるよ うな用途では、 汎用レジスタにデ ータを抱えながらの演算やデータ処理には限界があるからである。 これは従来のパイプライン技術でも同様である。
一方、 各種のマ ト リ ツクス計算やべク トル計算等は、 専用回路に よ り これを実現した方が高い性能を得られることは過去の経験から 良く知られている。 このため、 現在、 世界最高性能を目指す最先端 の実装技術では、 V L I Wをベースにアプリ ケーショ ンの目的に応 じて、 各種の専用演算回路を実装して、 最高性能を目指すという考 え方が主流になりつつある。
しかしながら、 V L I Wは、 プログラムカウンタ近傍の並列処理 実行効率を改善する技術であり、 例えば 2つ以上のオブジェク トを 同時に実行したり、 2つ以上の関数を実行するにはあま り有効な手 段とはならない。 また、 各種の専用演算回路を実装することはハー ドウエアが増加すること となり、 その一方で、 ソフ トウェアのフレ キシピリティ一が低下することを意味する。
F P G A ( Field Programmable Gate Arrays) のよ う に トランジ スタ間の接続を変更可能なアーキテクチャは、 ある程度動的に制御 できるものであり、 各種の専用演算回路を実現すること も可能であ る。 しかしながら、 F P G A自体は、 ハー ドウェアをダイナミ ック に変更するには時間がかかり、 また、 その時間を短縮するためのハ 一 ドウエアが必要となる。 このため、 アプリ ケーショ ンの実行中に ハー ドウェアを動的に制御することは難しく 、 さ らに、 経済的な解 であると も言えない。 すなわち、 F P G Aの再構成情報を二面以上 の R A Mに保持し、 バックグラウン ドで実行する事によ り、 見かけ 上短い時間で動的なアーキテクチャ変更を行う方式も可能である力 も し、 数ク ロ ック以内にこの再構成を行う事を可能とするためには、 考えられる組み合わせの数の再構成情報を全て格納する R A Mを実 装する必要があり、 これは、 本質的に F P G Aの再構成時間が大き く掛かるという経済的な問題を一切解決していない。 また、 F P G Aが、 本来ハー ドウエアのゲー トに注目 したマツ ビングを効率良く 実現しょ う とするために抱えている問題、 即ち実用上の A C特性の 悪さをについては、 当面解決出来そう も無い。
そこで、 本発明においては、 複雑なデータ処理に対し、 それらの データ処理に特化した多種多様な専用回路を用いなく ても、 それぞ れのデータ処理をフ レキシブルに、 そして高速に実行可能なシステ ム、 すなわち、 プログラム製品と、 それを実行可能なデータ処理装 置およびその制御方法を提供することを目的と している。 さ らに、 アプリ ケ一ショ ンの実行中でもハ ー ドウエアを動的に制御すること を可能と し、 ソフ トウエアレベルのフ レキシビリ ティ ーをハー ド ウェアレベルで実現し、 様々なデータ処理を高速で実行可能であり、 さ らに経済的なデータ処理装置およびその制御方法、 さ らにはプロ グラム製品を提供することを目的と している。 発明の開示
このため、 本発明においては、 複数の処理ユニッ トを有するデ一 タ処理装置を制御するプログラム製品と して、 少なく と も 1つの処 理ュニッ 卜の入力およびノまたは出力インタフェースを、 処理ュ ニッ トによ り処理を実行する時期とは独立して指示し、 処理ュニッ トによ り構成されるデータパスを定義するデータフロー指定命令を 有するプログラム製品あるいはプログラム装置を提供する。 このプ ログラムは、 データ処理装置が読み取り可能な R O Mあるいは R A Mなどの記録媒体に記録して提供でき、 また、 コンピュータネッ ト ワークあるいはその他の通信を介して伝送可能な伝送媒体に埋め込 んで提供すること も可能である。
そして、 本発明のプログラム製品によ り、 入力およびノまたは出 力インタフェースを変更可能な複数の処理ュニッ 卜と、 少なく と も 1つの処理ユニッ トの入力および Zまたは出力インタフェースを、 処理ュニッ トによ り処理を実行する時期とは独立して、 別に指示す るデータフ口一指定命令をフェツチ可能なュニッ ト と、 データフ口 一指定命令をデコー ドし、 処理ュニッ トの入力および zまたは出力 インタフェースを設定し、 複数の処理ュニッ トによるデータパスを 構成可能なデータフロー指定ュニッ ト とを有する、 本発明のデータ 処理装置を制御することが可能となる。 このため、 複数の処理ュ ニ ッ トの組み合わせからなるデータパスをプロダラムで変更し、 様々なデータ処理を、 その処理に適したハー ドウェア、 すなわち、 データパスあるいはデータフローで実行することができる。
また、 入力および Zまたは出カインタフエースを変更可能な複数 の処理ユニッ トを有する本発明のデータ処理装置の制御方法におい ては、 少なく と も 1つの処理ュニッ トの入力およびノまたは出カイ ンタフェースを、 処理ュニッ トによ り処理を実行する時期とは独立 して指示するデータフロー指定命令をフユツチする工程と、 データ フ口一指定命令をデコー ドし、 処理ュニッ トの入力および Zまたは 出力イ ンタフェースを設定し、 複数の処理ュニッ トによるデータパ スを構成するデータフロー指定工程とを有する。
従来は、 複雑なデータ処理は、 専用回路を用意し、 その専用回路 を用いる専用命令化する しか対応方法が無くハー ドウェアコス トが 増大する。 これに対し、 本発明のシステム、 すなわち、 プログラム 製品、 データ処理装置およびその制御方法においては、 論理演算ュ ニッ トなどの処理ユニッ トのインタフェースを記述できるので、 ノ ィプライン制御やデータパス制御の構造を命令セッ ト、 すなわちプ ァログラム製品の中に取り込むことが可能となる。 したがって、 様々なデータ処理を、 プログラムで記述し、 それに適したハー ド ウェアで実行することが可能となり、 ソフ ト ウエアのフ レキシビリ ティーと専用回路を用いた高速性を兼ね備えたデータ処理装置を提 供することができる。 さ らに、 これらのデータパスは主要な処理あ るいは汎用的な処理の実行を中止させないで実現することが可能で あり、 アプリ ケーショ ンの実行中に動的にハー ドウエアを変更する ことが容易に実現できる = さ らに、 本発明は、 プログラムカンタの近傍の並列処理を実行だ けでなく 、 2つ以上オブジェク 卜の同時擬似実行や 2つ以上の関数 の同時擬似実行に有効な手段を提供することになる。 つま り、 従来 の命令セッ トでは、 2つ以上のコンテキス 卜の異なるデータ処理や アルゴリ ズム実行等の、 それぞれ離れたプログラムカウンタに基づ く処理が同時に起動ができなかったのに対し、 本発明においてはデ 一タフ口一指定命令を用いてデータフローを適当に定義することに よ り、 プログラムカウンタにかかわらずに処理を実行することが可 能となる。
したがって、 本命令セッ トを用いると、 並列処理に対して、 予め アプリ ケ一ショ ン側から見て性能向上に有効と思われるデータパス をソフ トウエアから組み込むことが可能であり、 それによ り実現さ れたデータパス (データフロー) を必要に応じて、 さ らにソフ ト ウェアから命令レベルで起動することができる。 このデータパスは、 特定の目的に対応したデータ処理だけでなく 、 一般のステー トマシ ンを起動するよ うな目的にも使用可能なので、 極めて自由度が高レ、。 そして、 本発明においては、 データフロー指定命令によ り処理ュ ニッ 卜のインタフヱ一スを指示することによ り、 処理ュニッ 卜の組 み合わせによるデータパスを変更できるよ うにしている。 このため、 F P G Aのよ うに トランジスタ間の接続を変更するアーキテクチャ と異なり、 適当な、 あるいは特定のデータ処理機能を備えた処理ュ ニッ ト間のインタフェースを切り替えるだけデータパスを定義でき るので、 短時間でハ一 ドウエアを再構成することができる。 さ らに、 本発明のデータ処理装置は、 F P G Aのよ う に トランジスタ レベル での汎用性を要求するアーキテクチャではないので、 実装密度も向 上でき、 コンパク 卜で経済的なシステム L S I などのデータ処理装 置を提供できる。 さ らに、 冗長な構成を削減することができるので、 処理速度も高速化でき、 A C特性も向上する。
このよ う に、 本発明のプログラム、 データ処理装置およびその制 御方法においては、 データ処理装置に含まれる少なく と も 1つの処 理ュニッ 卜のイ ンタフヱ一スを規定する命令を記載あるいは記述す ることによ り、 データフロー指定を行う ことが可能となる。 これに よ り、 データパスの独立性を高めることが可能となり結果的にデー タフ口一指定を別命令プログラムを実行しながら行ったり、 アイ ド ル状態にあるデータ処理装置の内部のデータパスを、 外部の他のデ ータ処理装置あるいは同一チップ内の他のデータ処理系統において 実行されている緊急度の高い処理のために貸し出すことも許すよ う な構造を容易に提供することが可能となる。
さ らに、 データフ ロー指定命令によ りデータパスを組み合わせて 構成可能な処理ユニッ トの処理内容を変更できることが望ま しい。 すなわち、 データフロー指定ュニッ トおよびデータフロー指定工程 においては、 データフロー指定命令によ り、 処理ュニッ トの処理内 容を変更可能であることが望ま しい。 これによ り、 処理ユニッ トを 組み合わせて構成するデータパスのフ レキシビリ ティ ーを向上でき、 よ り多くのデータ処理を少ないハ一 ドウエア資源でデータフロー型 の処理に持ち込み、 高性能化することができる。
個々の処理ュニッ トに F P G Aのアーキテクチャを採用すること が可能である。 しかしながら、 ハー ドウェアをダイナミ ックに変更 するには時間がかかり、 また、 その時間を短縮するためのハー ド ウェアが必要となることは上述した通りである。 このため、 アプリ ケーショ ンの実行中に処理ュニッ ト内部のハー ドウェアを動的に制 御することは難しい。 すなわち、 仮に、 複数の R A Mをバンク構成 にして、 瞬時に切り換える方式にしたと しても、 数ク ロ ック〜数十 ク ロ ック単位での切り換えを実現する為には、 相当数のバンク構成 が必要となり、 基本的に F P G A内部のマク ロセル一つ一つが独立 してプログラム構成可能な構造にすると同時に、 この切り換えタイ ミ ングを検出し、 プログラムによる制御機構を持たせる必要がある。 しかし、 このよ うな構成に対応するには現状の F P G Aでは不十分 であり、 さ らに、 適当なタイ ミ ングで切替を指示するために新しい 命令制御機構が必要となる。
このため、 本発明においては、 処理ユニッ ト と して、 特定の内部 データパスを備えた回路ュニッ トを採用することが望ま しい。 すな わち、 ある程度コンパク トなデータパスを備えた処理ユニッ トをテ ンプレー ト的に用意しておき、 そのデータパス間の組み合わせを指 示してデータフロー型の処理に持ち込むと共に、 データフロー指定 命令によ り、 処理ュニッ トの内部データパスの一部を選択して処理 ュニッ 卜の処理内容を変更することによ り、 さ らにフ レキシブルに、 そして短時間にハー ドウェアを再構成できる。
たとえば、 処理ユニッ トに、 少なく と も 1つの論理ゲー ト と、 こ の論理ゲ一 ト と入出力イ ンタフェースを接続する内部データパス と を設けておく ことによ り、 入出力されるデータの順番を変えたり、 論理ゲー ト間の接続あるいは選択を変えることによ り処理ュニッ ト の処理内容を変更できる。 そして、 ト ランジスタ レベルで回路を再 構成する F P G Aに比較すると、 予め用意された内部データパスの 一部を選択するだけで良いので、 短時間で処理内容を変更できる。 さ らに、 予め用意された内部データパスを使用するので、 冗長な回 路要素は少なく、 ト ランジスタの面積利用効率も高い。 したがって、 実装密度も高く、 経済的である。 さ らに、 高速処理に適したデータ パスを構築でき、 A C特性も高い。 このため、 本発明においては、 デ一タフ口一指定命令によ り、 デ一タフ口一指定ュニッ トおよびェ 程において、 処理ュニッ トの内部データパスの一部を選択可能とす ることが望ま しい。
さ らに、 データフロー指定命令によ り設定された各処理ユニッ ト のインタフェースを保持するスケジュールを管理するよ うに、 デ一 タフロー指定ュニッ トは処理ュニッ 卜のインタフェースを管理する スケジューラと しての機能を備えていることが望ま しい。 例えば、 ある一定時間だけ、 マ ト リ ックス計算を行い、 その後にフィルター 処理を行う場合は、 予めそれらの処理に必要なデータ処理装置内部 の処理ュニッ ト間の接続を指定し、 時間を計数するカウンターを 使ってこれを実現する事が出来る。 計数カウンターを別の比較回路 や外部ィベン ト検出器に置き換える事で、 よ り複雑で柔軟性のある スケジューリ ング処理を実現可能となる。
また、 データフ口一指定命令によ り、 複数の処理ュニッ トによ り 構成される処理プロ ックの入力および Zまたは出カインタフエース を規定できるよ うにすることが望ま しい。 複数の処理ュニッ トのィ ンタフヱ一スを 1 つ命令で変更可能とすることによ り、 複数の処理 ュニッ トが関連するデータパスの変更が 1命令で処理することがで きる。 したがって、 データフロー指定ユニッ トあるいは工程では、 デ一タフ口一指定命令によ り、 複数の処理ユニッ トによ り構成され る処理ブロ ックの入力および/または出力インタフェースを変更可 能であることが望ましい。
さ らに、 処理ブロ ックの入力および Zまたは出力イ ンタフェース を規定する複数のコンフィ グレーショ ンデータを格納したメモ リ を 設け、 データフロー指定ユニッ トあるいは工程においては、 デ一タ フ ロー指定命令によ り メ モ リ に格納された複数のコンフィ グレー ショ ンデータの 1つを選択し、 処理ブロ ックの入力およびノまたは 出力イ ンタ フェースを変更できるよ うにすることが望ま しい。 デー タフ口一指定命令によ り コンフィ グレーショ ンデータを指定できる よ うにすることによ り、 命令自体は冗長にせずに複数の処理ュニッ トのイ ンタ フェースの変更をプログラムから制御することができる。 図面の簡単な説明
図 1 は、 データフロー指定命令を含む命令セッ トの概要を示す図 である。
図 2は、 図 1 に示す命令セッ トの Yフィ一ル ドをさ らに詳しく説 明する図である s 図 3は、 図 1 に示す命令セッ トを実際に用いた簡単な例を示す図 である。
図 4は、 図 3に示す命令セッ トによ りデータがレジスタに格納さ れる様子を示す図である。
図 5は、 本発明の命令セッ トを実行可能なデータ処理装置を示す 図である。
図 6は、 従来の C P Uあるいは D S Pで実行可能なサンプルプロ グラムである。
図 7は、 本発明にかかる制御ュニッ ト用のプログラム例である。 図 8は、 図 7に示すプログラムを本発明にかかる命令セ ッ トの実 行プログラムにコンパイルした例を示す図である。
図 9は、 本発明にかかる制御ュニッ ト用の異なるプログラム例で ある。
図 1 0は、 図 9のプログラムによ り構成されたデータフローを示 す図である。
図 1 1 は、 データフローが指定可能なデータ処理装置の異なる例 を示す図である。
図 1 2は、 データパスが変更される例を示す図である。
図 1 3は、 本発明の命令セッ トによ りデータ処理を実行可能なデ ータ処理装置の概略構成を示す図である。
図 1 4は、 テンプレー トの組み合わせを変えて異なる専用回路を 構成する様子を示す図である。
図 1 5は、 テンプレー トの一例を示す図である。 発明を実施するための最良の形態
以下に図面を参照して、 本発明をさ らに詳しく説明する。 図 1 に、 本発明にかかるデータフ口一指定命令を記述するのにて適した命令 セッ ト (命令フォーマ ッ ト) の構成を示してある。 この命令セッ ト ( D A P Z D N Aの命令セッ ト) 1 0は、 第 1 のフィール ドである 命令実行基本フィール ド ( Xフィ ール ド) 1 1 と呼ばれる部分と、 次の命令実行の効率化を図ることができる第 2のフィール ドである 次命令実行準備サイ クル (追加フィールドあるいは Yフィールド) 1 2 と呼ばれる 2つのフィール ドを備えている。 命令実行基本フィ —ル ド ( Xフィール ド) 1 1 は、 加减演算、 論理和、 論理積、 比較 などのデータの演算、 および分岐などのその他の各種のデータ処理 の内容を指定し、 その結果が格納される先 (ディスティネーショ ン ) を指定する。 また、 Xフィール ド 1 1 は、 命令長の使用効率を上 げるために実際に実行される命令の情報しか含まない。 一方、 追加 フィール ド (Yフィール ド) 1 2 は、 同一の命令セ ッ トの Xフィー ノレド 1 1 の実行命令とは独立した命令 (情報) が記述可能であり、 たとえば、 次の命令の実行準備サイクルに割当てられる。
さ らに詳しく命令セッ ト 1 0を説明すると、 Xフィール ド 1 1 は、 算術論理演算ュニッ トなどの処理ュニッ 卜に対する命令操作あるい は実行命令 (Execution ID ) を記述する実行命令フィール ド 1 5 と、 Yフィール ド 1 2の有効 Z無効および Yフィール ド 1 2 で示す 準備命令のタイブを示すフィール ド (タイプフィール ド) 1 6 と、 デイ スティネーショ ンのレジスタを示すフィール ド 1 7 とを備えて レヽる。 タイプフィール ド 1 6 の内容は、 Yフィール ド 1 2に関連し たものであ り 、 Xフィール ド 1 1 の他のフィール ドの内容とは独立 して、 別に定義できることは上述した通りである。
また、 Yフィール ド 1 2は、 タイプフィ ール ド 1 6によって規定 される準備情報が記述される。 この Yフィ一ルド 1 2に記述される 準備情報は、 演算または他のデータ処理を実行可能な状態にするた めの情報であり、 図 2 に具体的な幾つかの例を示してある。 先ず、 T Y P Eフィール ド 1 6は Xフィ ール ド 1 1 に含まれているが、 実 行命令フィ一ルド 1 5 とは独立あるいは無関係に記述できる- そし て、 Yフィ ール ド 1 2には、 ア ドレス I D ( A I D ) 2 1 と、 それ によって利用目的が規定されるァ ドレス情報 2 2を記述するァ ドレ ス情報フィール ド 2 6 と して利用する こ とができ る。 この Yフィー ル ド 1 2 に記述されたア ドレス情報は、 レジスタあるいはバッファ とメモリ (レジスタファイルを含む) との間のリー ドおよびライ ト に用いられ、 D M Aのよ うにブロ ック転送も可能な構成になってい る。 さらに、 分岐命令を実行したと きの分岐先を示すア ドレス ( フェッチア ドレス) 、 並列実行するときのスター トァ ドレスなどの 情報も Yフィールド 1 2に記述することができる。
また、 レジスタタイプの命令、 たとえば、 算術演算あるいはその 他の論理演算命令 (M O V E、 メモリ一リー ド Zライ 卜なども含む ) に対してソース側となるレジスタ情報あるいは即値 (イ ミ一ディ エイ ト) を規定する情報 2 3 も Yフ ィ ール ド 1 2に記述すること力 S できる。 すなわち、 Yフィール ド 1 2を以降の実行命令のためのソ —スを規定するフィール ド 2 7 と して利用することができる。
さらに、 Yフ ィ ール ド 1 2には、 算術論理演算ユニッ ト (A L U ) あるいは他のデータ処理ユニッ ト、 たとえば所定のデータパスを 備えた処理ユニッ ト (以降においてはテンプレー ト) のインタフエ —ス (ソース、 ディスティネーシ ョ ン) および処理内容の組み合わ せを規定するデータフ ロー指定命令 2 5 も記述することが可能であ る。 すなわち、 Yフ ィ ール ド 1 2は、 リ コンフ ィ ダラブルなデータ パスなどを、 特定のデータ処理を行うために、 それらのパイプライ ン (データフローあるいはデータパス) を定義するためのフィール ド 2 8 と して利用することができる。 もちろん、 Yフ ィ ール ド 1 2 には、 そのデータフローをスター トする情報および終了するデータ フロー指定命令 2 5を記述することが可能である。 したがって、 Y フィ ール ド 1 2を用いてリ コ ンフ ィ ダラブルなデータパスを定義し て生成したデータフローによ り 、 コー ド R A Mからコー ドをフェツ チするプログラムカウンタとは独立した処理を行う ことができる。 以下では X フ ィ ール ド 1 1 および Yフ ィ ール ド 1 2 に実行命令あ るいは準備命令が記載あるいは記述された例を説明するが、 これら のフィール ドに命令を記述せず (N O Pを記述し) 、 Xフィールド 1 1 あるいは Yフィール ド 1 2だけが意味を持つよ うな命令セ ッ ト も可能である。 さらに、 二一モニックな実行命令と、 データフロー 指定命令が混在した命令セッ トを備えたプログラム製品も可能であ り、 データフロー指定命令が連続して記述されたプログラム製品も 可能である。 そして、 記述される形態は問わずに、 データフロー指 定命令を含むプログラム製品あるいはそのプログラムを記録した記 録媒体なども本発明の範囲に含まれる。
図 3に、 本例の命令セッ ト 1 0の簡単な例を示してある。 j - 1 番目 の命令セ ッ ト 1 0である T ( j - 1 ) は、 その Xフィール ド 1 1 のタイプフィール ド 1 6に、 同一の命令セッ 卜の Yフィール ド 1 2 に 3 2 ビッ トのイ ミ一ディエイ トが記述されていることが示され ている。 そ して、 その命令セッ ト T ( j - 1 ) の Yフィール ド 1 2 には、 イ ミ一ディエイ トと して 「 # 0 0 0 0 1 2 3 4 H」 が記載さ れている。 次の : j 番目の命令セッ ト T ( j ) には、 Xフィール ド 1 1 の実行命令フィール ド 1 5に MO V Eが記述され、 ディステイネ ーシヨ ンフィ ール ド 1 7にレジスタ R 3が記載されてレヽる。 このた め、 この ; j 番目の命令セッ ト T ( j ) をフェッチすると、 制御ュ ニッ トの A L Uは、 前の命令フィール ド T ( j - 1 ) に定義された イ ミ一ディエイ ト 「 # 0 0 0 0 1 2 3 4 H」 をレジスタ R 3に格納 する。
このよ うにして、 本例の命令セッ ト 1 0 (以降では、 j 番目の命 令セッ ト 1 0を命令セッ ト T ( j ) で示す) では、 実行命令が記述 された命令セッ ト T ( j ) の前の命令セッ ト T ( j _ l ) によ りそ の実行命令の準備が行われる。 したがって、 命令セッ ト T ( j ) だ けでは制御ュニッ トを構成する A L Uが実行する処理内容は判らな いが、 2つの命令セッ ト T ( j - 1 ) および T ( j ) によ り A L U が実行する処理内容は一義的に決定される。 また、 命令セッ ト T ( j — 1 ) の実行命令フィール ド 1 5には、 その命令セ ッ トの Yフィ —ル ド 1 2 とは独立して命令セッ ト T ( j - 1 ) の前の命令セッ ト の Yフィ一ルド 1 2によ り準備された処理を実行する命令が記述さ れている。 さらに、 命令セッ ト T ( j ) のタイプフィ ール ド 1 6お よび Yフィール ド 1 2 には、 次の命令セッ トの実行命令フィール ド に記述された実行命令の準備をする情報が記述されている。
本例では、 ある実行命令が Xフィ ール ド 1 1 に記述された命令 セッ ト T ( j ) の直前の命令セ ッ ト T ( j — l ) の Yフィール ド 1 2に、 その実行命令の準備情報 (準備命令) が記述されている。 す なわち、 準備命令のレイテンシ一が 1 ク口 ックの例となっているが、 準備情報が記述される命令セッ トは、 直前の命令セッ トにかぎられ るものではない。 例えば、 複数の A L Uを備えた制御ュニッ 卜の制 御プログラム、 あるいは後述するデータフロー制御を目的とする準 備命令などであれば直前の命令セッ トである必要はない。 準備命令 によってセッ 卜された A L Uの状態 (環境あるいはインタフェース ) あるいはテンプレー トの構成が、 その準備命令に対応する実行命 令を備えた命令セッ トがフエツチされて実行されるまで保持される のであれば、 実行命令を備えた命令セッ ト 1 0の数命令前の命令 セ ッ ト 1 0の Yフィール ド 1 2 で準備命令を記述でき る。
図 4に、 図 3に示した命令セッ トによ り レジスタ と して機能する レジスタフ ァイルあるいはメモリ に値が格納される様子を示してあ る。 プロセッサが ;) 一 1番目の命令セッ ト T ( j - 1 ) をフェッチ して、 その Yフィール ド 1 2 の準備命令によ り イ ミ一ディエイ ト 「 # 0 0 0 0 1 2 3 4 H」 がプロセ ッサの A L Uのソース側のレジス タ D P O . Rにラ ッチされる。 そして、 プロセッサが次の : j 番目の 命令セッ ト T ( j ) をフェ ッチし、 その Xフィール ド 1 1 の実行命 令である MO V Eを実行するサイ クルでバッファ 2 9 b にス トァさ れる。 その後、 メモリ またはレジスタファイル 2 9 a のレジスタ R 3のァ ドレスにバッファ 2 9 b の値が格納される。 したがって、 格 納先がレジスタではなく メモ リ であっても、 本例の命令セッ ト 1 0 を用いると、 準備情報に基づく処理を実行命令に先立って行う こと によ り、 実行命令のサイクルでデータをロー ドあるレ、はス トァする ことができる。
図 5 に、 本例の命令セッ ト 1 0によ り処理内容が記述されたプロ グラムを実行可能な制御ユニッ ト 3 0を備えたプロセッサ (データ 処理装置) 3 8の概略構成を示してある。 本例の命令セッ ト 1 0を 具備したマイクロコ一 ドあるいはマイク 口プログラム 1 8はコー ド R〇 M 3 9に記憶されている。 制御ユニッ ト 3 0は、 コー ド R O M 3 9からマイクロプログラムの命令セッ ト 1 0をプログラムカウン 夕によって随時フェッチするフェッチュニッ ト 3 1 と、 フェッチさ れた命令セッ ト 1 0の Xフィールド 1 1 をデコー ドして A L U 3 4 の処理内容を決定あるいはアサ一卜すると共に、 A L U 3 4の論理 演算結果をディスティネーショ ンのレジスタ 3 4 dを選択してラ ッ チする機能を備えた第 1 の実行制御ュニッ ト 3 2を備えている。
さらに、 制御ユニッ ト 3 0は、 フェッチされた命令セッ ト 1 0の
Yフィール ド 1 2を Xフィール ド 1 1 のタイプフィール ド 1 6 の情 報に基づいてデコー ドし、 演算処理ユニッ ト (A L U ) 3 4のソ一 ス側のレジスタ 3 4 s を選択する機能を備えた第 2の実行制御ュ ニッ ト 3 3 を備えている。 この第 2 の実行制御ユニッ ト 3 3は、 タ ィプフィール ド 1 6 の情報を除き、 Yフィール ド 1 2 の命令あるレヽ は情報を Xフィールド 1 1 の内容とは独立して解釈することができ る。 第 2 の実行制御ュニッ 卜 3 3は、 さ らに、 Yフィール ド 1 2に 記述された情報がデータフローを規定するものであれば、 A L U 3 4のソース側およびディスティネーショ ン側の選択あるいは設定、 すなわち、 A L U 3 4のイ ンタフェースを決定し、 さ らに、 その状 態を所定のク 口 ックあるいは解除の指示があるまで連続的に保持す る機能も備えている。 また、 Yフィ ール ド 1 2 の情報がデータフロ 一を規定する場合は、 この第 2 の実行制御ユニッ ト 3 3は、 さ らに、 A L U 3 4の処理内容も決定し、 その状態を所定の期間保持する。 本例の制御ユニッ ト 3 0は、 さ らに、 このよ うな実行制御ュニッ ト 3 2および 3 3 と、 A L U 3 4の組み合わせを複数備えており、 これらによって様々な処理が実行できるよ う になつている。 した がって、 本例の制御ュニッ ト 3 0をコアあるいは周辺回路と して画 像データを高速で処理するよ うな D S P、 汎用のデジタル処理を高 速で行える C P Uあるいは M P Uなどを構成することが可能である。 図 6ないし図 9に、 本例の制御ュニッ ト 3 0で実行するプロダラ ムの一例を示してある。 図 6に示したサンプルプログラム 4 1 は、 従来の C P Uあるいは D S Pで実行可能なよ うに作成した例である。 このプログラムは、 # S T A R Tのア ドレスから始まるテーブル力 ら最も大きな値を抽出し、 最終データであることを示す # E N Dを 検出すると終了するプログラムである。
図 7に記載したプログラム 4 2は、 図 6 と同じ処理を本発明にか かる命令セッ トを実行可能な制御ュニッ ト 3 0に適したプログラム に変換したものであり、 2命令を 1 つの命令セッ トで実行できる例 を示してある。 図 7に示したプログラムは、 コンパイラを通して本 発明にかかる命令セッ トの実行プログラムに変換され、 制御ュニッ ト 3 0で実行される。
図 8にコンパイルされたプログラム 4 3を示してある。 このプロ グラム 4 3 と、 プログラム 4 2 とを比較すると判るよ うに、 第 1 の 番目の命令セ ッ ト 1 0の Yフィール ド 1 2で 2番目の命令セ ッ ト 1 0の実行命令 1 5 の準備が行われる。 すなわち、 タイプフィール ド 1 6に準備情報と してイ ミ一ディエイ トが Yフィール ド 1 2に記述 されていることが示されており、 Yフィール ド 1 2をデコー ドした 第 2の実行制御ュニッ ト 3 2 によ りイ ミ一ディエイ トが A L U 3 4 のソースとなるキャッシュあるレ、はレジスタに提供される。 そして、 2番目の命令セッ ト 1 0を実行するときは、 その実行命令を行う準 備が整った A L U 3 4に対し実行命令 1 5を行う ことができる。 す なわち、 ディ スティネーショ ンフ ィール ド 1 7 に規定されたレジス タに対し、 実行命令フィール ド 1 5 の M O V E命令を単に実行する だけになる。
このよ うに、 本発明の命令セッ トによれば、 実行命令と、 その実 行命令を行うためのイ ンタフ ースなどを記述した準備命令とを分 離することができ、 さらに、 準備命令を実行命令に先立ってフヱッ チされる命令セッ トに記述して処理することができる。 したがって、 各々の命令セ ッ トに記述された実行命令を行う ときは、 A L U 3 4 のソース側にデータがリ一ドされているので純粋に算術命令だけを 行う よ う になる。 このため、 A C特性が良く 、 実行周波数特性が向 上する。 さ らに、 実行命令に対する前後の差はあるが、 従来のパイ プラインと同様に、 命令フェ ッチ、 レジスタデコー ド、 処理実行な どを段階的に行う ことが可能であり、 スループッ トも向上できる。 また、 本例のプロダラムは 2命令を 1命令セッ トに記述できるよ う になっているので、 V L I Wと同様にプログラムカウンタの近傍の 複数の命令を並列実行することによ り処理速度を向上できる。
さ らに、 4番目の命令セッ 卜の実行命令フィール ド 1 5には条件 分岐が記述されており、 その分岐先のア ドレスは、 この命令セッ ト に先行する 3番目の命令セッ トの Yフィールド 1 2に記述されてい る。 したがって、 4番目の命令セッ トを実行する際に、 あるいはそ れに先立ってフェッチレジスタに分岐先のァ ドレスをセッ ト し、 分 岐条件が成立したときにペナルティなく分岐先の命令セッ トを フェッチあるいは実行することができる。 さ らには、 分岐先の命令 をプリ フェッチしておく こと も可能であり、 分岐先の実行命令を実 行する準備を事前に整えておく こと も可能となる。 したがって、 分 岐先の命令であつても 1 ク ロ ックの無駄もなく実行することが可能 であり、 1 ク ロ ック単位で処理を正確に定義することができる。 図 9には、 さ らに、 命令セッ ト 1 0の Yフィール ド 1 2を用いて データフロー指定命令 2 5を記述した本発明のプログラム 4 4を示 してある。 このよ うなデータフロー指定命令 2 5 を有するプロダラ ム製品 1 8が R O M 3 9、 R AMあるいは他の適当なデータ処理装 置で読取可能な記録媒体に記憶されて提供される。 また、 ネッ トヮ —ク環境で交換される伝送媒体にプログラム製品 4 4あるいは 1 8 を埋め込んで流通すること も可能である。
このプログラム 4 4に記述されたデータフ口一指定命令 2 5の内、
D F L W I は、 データフローの初期設定を行う命令であり、 D F L W Cはデ一タフロー (データパス) を構成する演算処理ユニッ ト 3 4の接続情報 (インタフェースの情報) および処理内容を規定する 命令である。 また、 D F L W Tはデータフローの終了条件を規定す る命令であり、 最後に、 このよ うにして定義されたデータフローに データを入力して処理を行う D F L W Sが記述されている。 これら のデータフ ロー指定命令 2 5は、 Yフィール ド 1 2に準備情報と し て記述され、 第 2 の実行制御ュニッ ト 3 3でデコー ドされ、 処理ュ ニッ ト 3 4でデータ処理を行うための構成 (コンフィ グレーショ ン ) がセッ ト される。
図 9に示した本例のプロ グラム 4 4を実行する際には、 プロダラ ムのデータフロー指定にしたがって第 2 の実行制御ュニッ ト 3 3が データフロー指定ュニッ ト と して機能し、 データフロー指定工程に したがった制御を行う。 すなわち、 フェッチユニッ ト 3 1 でフェツ チされたデ一タフ口一指定命令 2 5をデコー ドし、 処理ユニッ ト 3 4の入力および または出力イ ンタフェースを、 その処理ュニッ ト 3 4の実行する時期とは独立して設定する。 さ らに、 データフロー 指定命令 2 5によっては、 処理ユニッ ト 2 5 の処理内容も規定ある いは変更する制御を行う。 また、 第 2 の実行制御ユニッ ト 3 3は、 スケジューラ 3 6 と しても機能し、 各処理ュニッ ト 3 4のインタ フェースを維持するスケジュールを管理する。
このため、 図 1 0に示すよ うに、 スケジューラ 3 6 と して機能す る第 2の実行制御ュニッ ト 3 3によ り 、 3つの演算処理ュニッ ト 3 4のイ ンタフェース (入出力) と、 その処理内容が規定され、 その 状態あるいはコンフイ ダレーショ ンが終了条件が成立するまで保持 される。 したがって、 これらの演算処理ユニッ ト 3 4によ り構成さ れるデータフローあるレ、はデータパスによ り、 プログラムカウンタ とは独立して次々 と図 6に示した処理と同じ処理が進行する。 すな わち、 データフロー指定を行う ことによ り、 3つの演算処理ュニッ ト 3 4によって制御ュ-ッ ト 3 0の中に、 その処理のための専用回 路が事前に設けられた状態となり、 プログラムカウンタの制御から 外れて最大値を求める処理を実行することができる。 そして、 D P 1 . R 1 と # E N Dが同じになることを D P I . S U B と しての機 能を果たす A L U 3 4で判断するとデータフローが終了する。
したがって、 図 9から判るよ うに、 デ一タフ口一を定義すること によ り分岐命令を用いずに図 6あるいは図 7に記載されたプロダラ ムを同じ処理を実行することができる。 このため、 汎用の制御ュ ニッ ト 3 0でありながら、 専用回路を備えた制御ュニッ ト と同様に 特定の処理を非常に高速に効率良く行う ことが可能となる。
本発明にかかる命令セッ トおよび制御ュニッ トによ り、 様々な処 理を行うデータフローあるいは疑似データフローを制御ュニッ トに 設けることができる。 これらのデータフローはテンプレー トと して 他の処理あるいは他のプログラムにも適用できるものであり、 ソフ トウエアを用いてハー ドウェアを随時、 特定のデータ処理に適した 構成に変更でき、 それを他のプログラムあるいは他のハー ドウエア においても実現できることを意味する。 そして、 このよ うなデータ フ口一を複数設定すること も可能であり、 マルチコマン ドス ト リ一 ムをソフ ト ウエアを用いて制御ュニッ トの中に定義することができ る。 したがって、 複数の処理を並列実行することが極めて簡単とな り、 その実行内容をプロダラ ミ ングによ り 自由に制御できる。 図 1 1 に、 データフ口一指定命令 2 5 を有するプロダラム 4 1 に よ り制御できるデータ処理装置の異なる例を示してある。 このデー タ処理装置 4 0はシステム L S 1 と して実現可能なものであり、 プ ログラム 4 1が記録されたコ一 ド R AM 3 9 と、 このコー ド R AM 3 9から命令をフヱツチ可能なフェッチュニッ ト 4 2 とを備えてい る。 本例のフェッチユニッ ト 4 2は、 データフロー指定命令 2 5を フェッチすると、 その命令をデコー ドすることができるデータフロ 一デコーダ (D F D E C ) 4 2 b と、 データフロー指定命令 2 5以 外の一般命令をデコー ドするデコーダ 4 2 a とを備えている。 した がって、 このデータ処理装置 4 0を制御するプログラム 4 1は、 デ —タフ口一指定命令 2 5 とその他の汎用命令とが混在したもので あっても良いし、 あるいは、 データフロー指定命令 2 5を備えたプ ログラムと、 その他の汎用命令からなるプログラムとをコー ド R A M 4 1 に用意し、 適当な方法で同期しながら命令をフェッチできる よ うにすること も可能である。
汎用命令は、 汎用のデコーダ 4 2 a によ りデコー ドされ、 そのデ コー ドされた信号 φ p力;、 A L Uおよびレジスタなどを備えた組込 型の汎用プロセッサ 4 3に供給され、 実行される。 一方、 デ一タフ 口一指定命令 2 5は、 D F D E C 4 2 bによ りデコー ドされ、 その デコー ドされた信号 はデータフ ロー処理ユニッ ト (D F U) 4 5に供給され、 処理される。
本例の D F U 4 5は、 複数のデータ処理ユニッ ト (D P U) 4 6 が用意されている。 各々の D P U 4 6は F P G Aによ りデータパス が形成されており再構成可能な処理ュニッ 卜 となっている。 このた め、 D P U 4 6 は、 F P G A 4 6 c と、 この F P G A 4 6 c のマ ツ ビングを記憶した R AM 4 6 bあるいは R OMと、 F P G A 4 6 c に対するデータの入出力を制御するイ ンタフェース 4 6 d と、 R A M 4 6 bに記憶されたマッピング情報およびインタフェース情報を F P G A 4 6 cおよびインタフェース 4 6 dに供給して、 それらの 構成あるいは状態を定義するコンフィ グレーショ ン制御部 4 6 a と を備えている。 本例のデータ処理装置 4 0においては、 フェッチュニッ ト 4 2が データフ ロ一指定命令を含む命令セッ トをフニツチする工程を行レ、、 さ らに、 D F D E C 4 2 bがデータフ口一指定ュニッ トと して機能 し、 データフロー指定工程を含む制御を行う。 すなわち、 データフ 口一指定命令をデコー ドし、 D F U 4 5の各々の D P U 4 6のコン フィ グレーショ ン制御部 4 6 a を介して D P U 4 6のイ ンタフエ一 ス 4 6 dを指定する。 したがって、 データフロー指定命令 2 5によ り 、 D F U 4 5の D P U 4 6のコネク ショ ンを制御する こ とが可能 となり、 複数の D P U 4 6によって構成されるデータパスをフレキ シブルにプロ グラムレベルで制御でき る。
図 1 2 ( a ) では、 1 2個の D P U 4 6 によ り 2つのデータノヽ。ス 4 7 aおよび 4 7 b を構成したのに対し、 D P U 4 6のインタフエ ースを変更することによ り図 1 2 ( b ) に示すよ うに 1 2個の D P U 4 6によ り、 図 1 2 ( a ) とは異なるデータ処理を実行可能な 1 つのデータパス 4 8を構成することができる。 複数の D P U 4 6に よ り構成可能なデータパスはこれに限定されるものでなく、 データ フロー指定命令によ り 3つ以上のデータパスをソフ トウエアを用い てデータ処理装置 4 0の D F U 4 5に定義すること も可能である。 したがって、 複数の処理を並列実行することが極めて簡単となり、 さ らに、 余剰の D P U 4 6があれば、 それによつて適当なデータパ スを設定することによ り他のデータ処理装置によ り使用させること も可能である。
また、 D P U 4 6 を組み合わせてデータパスを構成あるいは変更 する処理は、 他のデータパスにおけるデータ処理を中断させずに、 あるいは、 組込プロセッサ 4 3における処理を中断させずに行う こ とが可能である。 さ らに、 F P G A 4 6 c における処理内容の変更 を伴わなければ、 イ ンタフェース 4 6 dの設定を変えるだけでデー タパスを動的に変更することができる。 また、 D P U 4 6の処理内 容を変える場合も、 ある程度回路規模の小さな F P G A 4 6 c を採 用することによ りマツビングしなおすために要する時間を短縮する ことができる。 したがって、 データ処理装置 4 0の処理対象となる アプリ ケ一ショ ンのデータ処理に合致するデータパスをプロ グラム によ り フレキシブルに構築し、 そのデータ処理を極めて高速に実行 ることが可能となる。 しかしながら、 現状の F P G Aでは、 上述 したよ うに数ク 口 ック〜数十ク 口 ック単位でマツビングするために はハー ドウェアが十分ではない。 さらに、 所望のデータフロー処理 を実行するためには、 それに数ク ロ ックあるレ、は 1 0数クロ ック程 度も先行して指示する必要があるので、 データフロー指定命令をプ ログラムに記述する際にもデータ処理の開始や分岐命令と整合をと る必要があるなどの制限が多く なる。 図 1 3に、 図 1 に示した Xフィール ド 1 1および Yフィール ド 1 2を備えた命令セッ ト 1 0によ りデータフローを定義することがで きる複数の処理ユニッ ト (テンプレー ト) を備えたデータ処理装置 の概略構成を、 システム L S I 5 0のィ メ一ジで示してある。 この システム L S I 5 0は、 データの処理動作を行うプロセッサ領域 5 1 と、 そのプロセッサ領域 5 1 の処理を制御するプログラム 1 8が 格納されたコー ド R A M 5 2 と、 その他の制御情報あるいは処理用 のデータを記憶し、 さ らに、 一次的なワーク領域と もなるデータ R AM 5 3 とを備えている。 プロセッサ領域 5 1 は、 プログラムコ一 ドをフェッチするフェッチユニッ ト ( F U) 5 5 と、 多目的な処理 を行う汎用的なデータ処理ユニッ ト (多目的 A L U) 5 6 と、 デー タフ口一方式でデータを処理することができるデータフロー処理ュ ニッ ト (D F U) 5 7 とを備えている- 本例の L S I 5 0は、 1つの命令セッ ト 1 0に 1組の Xフィ一ル ド 1 1および Yフィール ド 1 2 を含んだプログラムコー ドをデコー ドして処理を実行できるよ うになつている。 このため、 F U 5 5は、 フェッチした命令セッ ト 1 0の Xフィールド 1 1 の命令を格納でき るフェ ッチレジスタ ( F R (X) ) 6 1 x と、 Yフィール ド 1 2の 命令を格納できるフェッチレジスタ ( F R ( Υ) ) 6 1 y とを備え ている。 また、 F R (X) 6 1 Xにラッチされた命令をデコー ドす る Xデコーダ 6 2 X と、 F R ( Y) 6 l y にラッチされた命令をデ コー ドする Yデコーダ 6 2 y とを備えている。 また、 これらのデコ —ダ 6 2 Xおよび 6 2 yのデコー ド結果によ り次の命令セッ トのァ ドレスが格納され、 プログラムカウンタと して機能するレジスタ ( P C) 6 3を備えている。 したがって、 コー ド R AM 5 2に格納さ れているプログラムの所定のァ ドレスから次の命令セッ トを随時 フェッチすることができる。
本例の L S I 5 0においては、 Xデコーダ 6 2 Xが上述した第 1 の実行制御ユニッ ト 3 2 と しての機能を果たす。 また、 Yデコーダ 6 2 yが第 2の実行制御ュニッ ト 3 3、 すなわち、 データフ口一指 定ユニッ トと しての機能を果たす。 したがって、 Yデコーダ 6 2 y が、 命令セッ ト 1 0の Yフィール ド 1 2に記述されたデータフロー 命令をデコー ドし、 それに基づき D F U 5 7の処理ュニッ 卜の入出 力イ ンタフェースを設定してデータパスを構成する、 本発明のデー タフロー指定工程を実行する。 このため、 図 1 3に示したデータ処 理装置 5 0の制御では、 フェッチュニッ ト 5 5において、 処理ュ ニッ トの入力および Zまたは出力イ ンタフェースを、 その処理ュ ニッ トによ り処理を実行する時期とは独立して指示するデ一タフ口 一指定命令 2 5をフェッチする工程が行われ、 さ らに、 Yデコーダ 6 2 yにおいて、 デ一タフロー指定命令 2 5 をデコー ドし、 処理ュ ニッ 卜の入力および Zまたは出力インタフェースを設定し、 複数の 処理ュニッ トによるデータパスを構成するデータフロー指定工程が 行われる。
多目的 A L U 5 6は、 図 5で説明した演算ユニッ ト (A L U) 3 4 と、 この A L U 3 4の入出力のデータを格納する レジスタ群 3 5 とを備えている。 F U 5 5でデコー ドされた命令が A L U 3 4の実 行命令と準備情報であれば、 Xデコーダ 6 2 Xでデコー ドされた信 号 ψ X と、 Yデコーダ 6 2 yでデコ一 ドされた信号 yは多目的 A L U 5 6に供給され、 上記にて説明したよ うに A L U 3 4における 処理が実行される。
D F U 5 7は、 様々な処理を行うデータ フ ローあるいは疑似デ一 タフローを構成するための複数のテンプレ一 ト 7 1が配置されたテ ンプレー ト領域 7 2を備えている。 それぞれのテンプレー ト 7 1 は、 図 9および図 1 0に基づき説明したよ うに、 演算処理ュニッ ト (A L U ) などのよ うな特定のデータパスあるいはデータフローと して の機能を備えている処理ユニッ ト (処理回路) である。 そして、 Y フィール ド 1 2 に準備情報と して記述されたデータフ 口一指定命令 2 5を Yデコーダ 6 2 yがデコー ドし、 その信号 によ り、 D F U 5 7の処理ュニッ トであるテンプレー ト 7 1それぞれのィンタ フェースと処理内容を規定することができる。
したがって、 これらのテンプレー ト 7 1 の接続および処理内容を
Yフィール ド 1 2に記述したデータフ口一指定命令 2 5によって変 更することが可能である。 このため、 これらのテンプレー ト 7 1 の 組み合わせによ り、 テンプレー ト領域 7 2 に特定のデータ処理に適 したデータパスをプログラム 1 8のデータフロー命令 2 5によ り フ レキシブルに構成することが可能となる。 したがって、 プロセッサ 5 1 の中に、 特定の処理のための専用回路が設けられた状態となり、 そこでの処理をプログラムカウンタの制御から外れて実行すること ができる。 すなわち、 データフロー指定命令 2 5によ りテンプレ一 ト 7 1 の入出力と処理内容を変更することができるので、 本例のプ 口セッサ 5 1 はソフ ト ウェアを用いてハー ドウェアを随時、 特定の データ処理に適した構成に変更することができる。
図 1 4 ( a ) に示したよ う に、 本例のプロセッサ 5 1 の D F U 5 7で入力データ φ i nに処理を施して出力データ φ o u t にする場 合、 たとえば、 図 1 4 ( b ) に示すよ うに、 テンプレー ト 1 — 1、 1 _ 2および 1 — 3を直列に繋いであるデータ処理を行う よ うにテ ンプレー ト 7 1 のイ ンタフェースをデータ フロー指定命令 2 5で設 定するこ とができる。 同様に、 テンプレー ト領域 7 2の他のテンプ レ一 ト 7 1 に対してもそれらのインタフェースをセッ ト して複数の テンプレー ト 7 1 を適当に組み合わせてデータパスあるいはデータ フローを構成することが可能であり、 テンプレー ト領域 7 2に入力 データ φ i nの処理に適した専用処理ユニッ トあるいは専用データ パス 7 3 を複数個、 プログラム 1 8によ り随時構築できる。
一方、 入力データ Φ i nに対する処理が変わったときは、 図 1 4 ( c ) に示すよ うに、 データフロー指定命令 2 5によ りテンプレー ト 7 1 の間の接続を変えることが可能である。 すなわち、 データフ ロー指定命令 2 5を Yデコーダ 6 2 yがデコー ドし、 該当するテン プレー ト 7 1 のイ ンタフェースを変更する こ とができ る。 このよ う な Yデコーダ 6 2 y と しての制御 (データフ口一指定工程) によ り、 テンプレー ト 1 — 1 、 2 _ nおよび m— nを直列に接続して、 他の 異なる処理を実行するのに適した 1つあるいは複数のデータパス 7 3 をテンプレー ト領域 7 2に構築することが可能である。
これらのテンプレー ト 7 1は、 図 1 4に示した組み合わせに限ら ず、 図 1 2に示したよ うな組み合わせにすること も可能であり、 テ ンプレー ト 7 1 を単独で、 あるいは複数のテンプレー ト 7 1 を組み 合わせて構成された処理ュニッ トは、 並列して実行される他の処理 あるいは他のプログラムに割り 当てること も可能である。 複数のプ 口セッサ 5 1が適当なバスで接続されていれば、 他のプロセッサ 5 1 が主と して行っているデータ処理のためにテンプレー ト 7 1 を組 み合わせた ト レイ ン (データパス) 7 3を構成すること も可能であ り、 テンプレー ト 7 1 というデータ処理資源を極めて有効に活用す ることができる。
さ らに、 A N Dや O Rなどの単純な論理ゲー 卜から構成する必要 があり、 これらの単純な論理ゲー 卜の実現をもカバーする 目的の F P G Aとは異なり、 本発明に係るテンプレー ト 7 1 は、 A L Uなど と しての機能あるいは論理ゲー トを基本的に備えた特定のデータパ スを内部に実装する、 よ り高いレベルのデータ処理ュニッ トである。 そして、 データフロー指定命令 2 5 によ り、 テンプレー ト 7 1 のィ ンタフエースを定義する、 あるいは再定義することによ り、 それら の組み合わせを変えて特定の処理に適したさらに大きなデータパス を構成している。 さ らに、 データフロー指定命令 2 5によ りテンプ レー ト 7 1で実行する処理内容を定義できるが、 その際も、 テンプ レ一 ト 7 1 の内部の A L Uあるいは他の論理ゲー トなどの接続を変 更することで、 テンプレー ト 7 1 の内部データパスの一部を選択す る形で、 テンプレー ト 7 1 で実行する処理内容を定義するよ うにし ている。
したがって、 本例のテンプレー ト 7 1 が複数配置された D F U 5 7のハ一 ドウエアを特定のデータ処理に適した構成に変更するとき には、 F P G Aのよ うにチップ全体を、 あるいは限定された論理ブ ロ ック単位でもマッピングしなおす必要はなく、 テンプレー ト 7 1 あるいはテンプレー ト領域 7 2に予め設けられたデータパスを切り 替えたり、 それらの一部を選択することによ り に、 予め用意された A L Uあるいは論理ゲー トを用いて所望のデータパスを実現するこ とができる。 すなわち、 テンプレー ト 7 1 の内部では論理ゲー トの コネクショ ンを必要な範囲で設定しなおし、 テンプレー ト 7 1 の間 でもそのコネクショ ンを必要な範囲で設定し直すだけでよい。 この ため、 極めて短時間に、 ク ロ ック単位で、 ハー ドウェアを特定のデ —タ処理に適した構成に変更することができる。
さ らに、 論理ゲー トが内蔵されていない F P G Aは、 極めて汎用 的である反面、 特定のアプリ ケ一ショ ンの機能を実現するロジック 回路を形成するためには無駄となる配線も多く、 冗長で信号経路も 短く はならない。 したがって、 実行するアプリ ケーショ ンに特化し た A S I Cに対して実装面積が大き く なり、 また、 A C特性も劣化 する。 これに対し、 予め適当な論理ゲー トを内蔵している本例のテ ンプレー ト 7 1 を採用したプロセッサ 5 1 では、 F P G Aのように 膨大な無駄な領域が発生するのを防止でき、 A C特性も改善するこ とができる。 したがって、 テンプレー ト 7 1 をべ一スと した本例の データ処理ユニッ ト 5 7は、 ハ一 ドウエアをプログラムで変更可能 なリ コンフィ グラブルな構成の処理装置であり、 F P G Aを採用し た処理装置に対し、 よ り高いレベルでソフ トウエアのフレキシビリ ティ とハー ドウエアの高速性とを備えたデータ処理装置を提供する ことができる。
そして、 本例のテンプレー ト 7 1 は、 適当な論理ゲー トを予め内 蔵しているので、 特定のアプリ ケーショ ンの処理を実現するために 必要な論理ゲー トを適当な実装密度で実現することができる。 この ため、 テンプレー ト 7 1 を用いたデータ処理ュニッ トは経済的であ る。 また、 F P G Aでデータ処理装置を構成した場合には、 実装密 度の低下をカバーするために、 論理を再構成するプログラムのダウ ンロー ドを頻繁に行う ことを検討する必要があり、 そのための時間 も処理速度が低下する原因となる。 これに対し、 本例のテンプレー ト 7 1 を用いたプロセッサ 5 1では、 実装密度が高いので、 その低 下をカバーする必然性は减少し、 実装密度の低下を補償するために ハー ドウェアを再構成する要求は少なく なる。 そして、 ハ一 ドゥエ ァの再構成もク ロ ック単位で制御することができる。 これらの点で も、 F P G Aをベースと したリ コ ンフィ グラブルな処理装置と異な り、 ハー ドウェアをソフ トウェアによ り再構築できる処理装置で あって、 コンパク トで実行速度の速いデータ処理装置を提供するこ とができる。
さ らに、 図 1 3に示した D F U 5 7は、 テンプレー ト領域 7 2に 配置されたテンプレー ト 7 1 のインタフユ一スおよび処理内容 (以 降においてはコンフィ グレーショ ンデータ) を一括して定義あるい はセ ッ トするこ とができ る コ ンフ ィ グレーショ ンレジスタ ( C R E G ) 7 5 と、 その C R E G 7 5にセッ トする複数のコンフィ グレー シヨ ンデータ C i ( i は適当な整数を示す、 以下においても同様で ある) を記憶したコンフィ グレーショ ン R AM (C R AM) 7 6を 備えている。 そして、 データフロー指定命令 2 5 と して 「D F S E T C i 」 といった命令が用意されており、 Yデコーダ 6 2 yがこ の命令をデコー ドすると、 C R AM 7 6に記憶されているコンフィ グレーショ ンデータ C i の中から所望のデータが C R E G 7 5に口 — ドされる。 その結果、 テンプレー ト領域 7 2に配置された複数の テンプレー ト 7 1 のコンフィグレーショ ンを一括して変更できる。 あるレ、は、 複数のテンプレー ト 7 1からなる処理ブロ ッ ク単位でそ のコ ンフィ グレーショ ンを変更する こ とができ る。
また、 D F LW I あるレ、は D F LWCといった上記のよ うなデ一 タフ口一指定命令 2 5を Yデコーダ 6 2 yがデコ一 ドすることによ り、 個々のテンプレー ト 7 1のコンフィ グレーショ ンを設定あるレヽ は変更すること も可能である。 したがって、 本例の D F U 5 7では 多く の情報が必要となる複数のテンプレー ト 7 1 のコンフィ グレー シヨ ンを 1命令で変更することが可能であり、 命令効率がよく 、 さ らに、 再構成のために消費される時間が短縮されている。
さ らに、 本例の D F U 5 7は、 C R A M 7 6 にブロ ック単位でコ ンフィ グレーシヨ ンデータをダウンロー ドするコン トローラ 7 7を 備えている。 また、 データフロー指定命令 2 5 と して 「D F L OA D B C i 」 が用意されており 、 Yデコーダ 6 2 yがこの命令をデ コー ドすると、 データ R AM 5 3などに予め用意されている多数の コンフィ グレーショ ンデータ 7 8の中から、 進行中の処理あるいは 今後発生するであろう処理のためのコンフィ グレーショ ンデータ C i を予めコンフィ グレーショ ンメモリである C R AM 7 6 にダウン ロー ドしておく ことができる。 このよ うな構成によ り C R AM 7 6 に小容量の高速な連想メモリ などを採用することが可能となり、 さ らに短時間でハー ドウェアをフ レキシブルに変更することができる 図 1 5に、 テンプレー ト 7 1の一例を示してある。 このテンプレ ー ト 7 1 は、 D F U 5 7に用意されたデータフロー R AM (D F R AM) 7 9を介して他のテンプレー ト 7 1 とデータを交換すること ができる構成となっており、 I /Oイ ンタフェース 8 1 を介して他 のテンプレー ト 7 1 の処理結果が入力キャ ッシュ 8 2 a 〜 8 2 に 入力され、 処理された結果が出力キャ ッシュ 8 3 a 〜 8 3 dに出力 される。 このテンプレー ト 7 1は、 これらの入力キャ ッシュ 8 2 a 〜 8 2 dに各々ス トアされたデータ A、 B、 Cおよび Dに対し以下 の処理を実行し、 演算結果は出力キャ ッシュ 8 3 bに、 比較した結 果は出力キャ ッシュ 8 3 c にス トァすることができるデータパス 8 8を備えている。 このテンプレー ト 7 1 の処理結果は、 再び 1 ノ0 インタフェース 8 1および D F R AM 7 9を介して他のテンプレー トに出力される。
IF A == ?
THEN (C+B)==D
ELSE (C-B)==D · · · (A)
このテンプレー ト 7 1 は、 独自のコンフィ グレーショ ンレジスタ 8 4を備えており、 このレジスタ 8 4に格納されるデータによって 複数のセレクタ 8 9を制御し、 制御部 8 5、 加算器 8 6、 比較器 8 7などの論理ゲー トに入力する信号を選択することができる。 した がって、 テンプレー ト 7 1 は、 コンフィ グレーショ ンレジスタ 8 4 のデータを変更することによ り、 データパス 8 8の一部を用いた処 理も可能であり、 たとえば、 制御部 8 5を用いずに、 以下のよ うな 処理を実行させること も可能である。
(B+C)==D
(B-C)==D · ■ ' ( B )
また、 同様にコンフィ グレ一ショ ンレジスタ 8 4のデータを変え る こ とによ り 、 このテンプレー ト 7 1 は、 データパス 8 8の一部を 用いて、 制御部 8 5による条件判定回路、 加算器 8 6 を用いた加減 演算回路、 比較器 8 7を用いた比較回路と しても使用することがで きる。 これらの論理ゲー トはテンプレー ト 7 1 に予め作り こまれた 専用回路で構成されているので、 回路構成と しても、 処理時間と し ても無駄がない。 そして、 入力および出力データのコンフィ グレー シヨ ンは、 コンフィグレーショ ンレジスタ 8 4によって制御される イ ンタフェース 8 1 によ り変更することが可能であり、 所望のデー タ処理を行うデータフローの全部あるいは一部を、 本例のテンプレ — ト 7 1 で処理することができる。
このテンプレー ト 7 1 は、 さ らに、 独自のコンフィ グレーショ ン レジスタ 8 4のデータを上述した C R E G 7 5力 らのデータと、 デ 一タフロー指定ュニッ 卜と して機能する F U 5 5の Yデコーダ (Y D E C ) 6 2 yからのデータのいずれに基づいても書き換えること が可能であり、 その選択は Yデコーダ 6 2 yからの信号によ り制御 することができる。 すなわち、 上述したよ うなテンプレー ト 7 1 の コンフィ グレーショ ンは、 データフロー指定命令 2 5に基づき Yデ コーダ 6 2 yあるいはこの Yデコーダ 6 2 yで実行されるデータフ 口一指定工程によって行う ことができる。 さ らに、 D F S E T命令 などによ り C R A M 7 6に記憶されたコンフィ グレーショ ンデータ C i にしたがって、 他のテンプレー ト と共にコンフィ グレーショ ン を変えてハー ドウェア構成を変更すること も可能である。 また、 デ 一タフロー指定命令 2 5によ り コンフィ グレーショ ンレジスタ 8 4 のデータを設定できるので、 テンプレー ト 7 1 の特定のデータパス 8 8を部分的に選択して使用すること も可能である。
このため、 テンプレー ト 7 1 を個別でもグループあるいはブロ ッ ク単位でもデータフロー指定命令 2 5によってコンフィ グレーショ ンを変え、 プロセッサ 5 1 のデータパスをフ レキシブルに構成する ことができる。
テンプレー ト 7 1 の構成は本例に限定される ものではなく 、 他の データ処理を実現可能なよ う に論理ゲー トを組み合わせた、 適当な 種類と数のテンプレー トを用意しておく ことによ り、 それらの組み 合わせを変えたり、 処理内容の一部を変更することによ り、 多く の データ処理をテンプレー ト 7 1 を組み合わせたデータパスによ り処 理することができる。 すなわち、 本発明によれば、 ある程度コンパ ク 卜なデータパスを幾種類かのテンプレー ト と して用意しておき、 そのデータパス問の組み合わせを指示して、 データフロー型の処理 に持ち込むことによ り高性能化を図ることが可能である。 そして、 テンプレー トでは対応できない処理は、 プロセッサ 5 1 の多目的 A L U 5 6 の機能を用いて実行することが可能である。 さ らに、 本例 の多目的 A L U 5 6 は命令セ ッ ト 1 0の Yフィール ド 1 2 に記述さ れた準備命令によ り分岐などによ り発生するペナルティ を最小限に 止められるよ うになっている。 このため、 本例のプロセッサ 5 1 を 搭載したシステム L S I 5 0によ り、 プログラムで処理を記述する のと同様に柔軟にハー ドウェアを変更し、 高速処理あるいはリ アル タイム処理が可能な高性能の L S I を提供することができる。 また、 アプリ ケーショ ンの変更や仕様変更などに対して柔軟に対応でき、 仕様変更などに伴い処理性能が低下すること も防止できる。
システム L S I 5 0を開発あるいは設計する時点で、 システムし S I 5 0を用いて実行するアプリ ケーショ ンの概要が判明している 場合には、 そのアプリ ケーショ ンの処理に適した構成のテンプレー トを中心にテンプレー ト領域 7 2 を構成することが可能であり、 よ り多くのデータ処理をデータフロー型の処理で実行し、 処理性能を 高めることが可能である。 汎用的な L S I を提供する場合には、 浮 動小数点演算、 乗除算、 画像処理などの汎用のアプリ ケーショ ンで 多く発生する処理に適したテンプレー トを中心にテンプレー ト領域 7 2を構成することが可能である。
このよ うに、 本発明にかかる命令セッ トおよび制御ュニッ トによ り、 様々な処理を行うデータフローあるレ、は疑似データフローを備 えた L S I を提供することが可能であり、 ソフ ト ウェアを用いてデ 一タフローを実行するハー ドウエアを随時、 特定のデータ処理に適 した構成に変更できる。 また、 上記に説明した、 テンプレー トの組 み合わせによ りデータフロー型の処理を実行するアーキテクチャ、 すなわち、 D F U 5 7あるいはテンプレー ト領域 7 2は、 Xフィ 一 ゾレ ド 1 1および Yフィ ール ド 1 2を備えた命令セ ッ ト 1 0 とは独立 して制御ュニッ トゃプロセッサに組み込むことが可能である。 そし て、 F P G Aよ り も高速処理が可能であり、 ハー ドウェアの変更に 係る時間も短く 、 A C特性も良いデータ処理装置を提供できる。
また、 本例の D F U 5 7あるいはテンプレー ト領域 7 2を、 従来 型の汎用の組込プロセッサ、 すなわち、 ニーモニックなコー ドで動 作するプロセッサと共に組み込んでシステム L S I を構成すること も可能であり、 テンプレー ト 7 1 で対応できない処理は、 汎用のプ 口セッサで処理することができる。 しかしながら、 従来のプロセッ サでは、 分岐のペナルティや、 演算処理のためのレジスタを準備す るためにク ロ ックを消費するなどの問題があることは上述した通り であり、 本例の X— Yフィール ドを備えた命令セッ ト 1 0をデコー ドして実行できるプロセッサ 5 1 のよ うな形態が望ま しい。
さ らに、 本例のプロセッサ 5 1および命令セッ ト 1 0であれば、 Yフィールド 1 2を用い、 他の処理と並列して、 D F U 5 7のコン フィ グレーショ ンをデータ処理を実行する前に設定あるいは変更す ることが可能であり、 処理効率およびプロダラム効率の面で優れて いる。 従来の二一モニックな命令コー ドと、 データフロー型の命令 コー ドとを 1つの命令セッ トに記述することによ りプログラム効率 を高めること も可能である。 しかしながら、 本例の命令セッ ト 1 0 の Yフィール ド 1 2の機能は、 データフロー型の命令コー ドを記述 するだけでないことは上述したとおりである。
また、 本発明に係るプロセッサは、 Yフィール ド 1 2によ り実行 に先立って物理的なデータパスの構成を変えることができる。 これ に対し、 従来のプロセッサでは、 複数のマルチプロセッサ間の接続 方法が、 共有メモ リ等を通す方法しか存在せず、 アイ ドル状態のプ 口セッサが存在しても、 その内部のデータ処理ュニッ トを外部から 利用する方法が無かった。 本発明にかかる制御ュニッ トにおいては、 適当なデータフローを設定することによ り、 余っているハー ドゥエ ァを他の制御ュニッ トによ り使用するといったこと も可能となる。
さ らに、 副次的な効果と して、 命令実行シーケンスの効率化と內 部データパスの独立性の確保と 自由度 (流用度) の向上によ り、 本 発明にかかる制御ュニッ トあるいはそれを用いたプロセッサにおい ては、 実行するハー ドウェアに余裕さえあれば、 全く性質の異なる コンテキス トの命令シーケンスを同時に供給しても問題無く実行す ることが可能となる。
更に、 現在、 ハ一 ドウエアと ソフ トゥェァの強調設計によるメ リ ッ トが盛んに指摘されるよ うになったが、 本発明による命令セッ トおよび制御ュニッ トを採用することによ り、 ユーザ側の要求する アルゴリ ズムやデータ処理を許されるハー ドウェア · コス トでどう 効率良く経済的に実現可能かという事に対しする 1 つの回答を与え ることができる。 例えば、 ハー ドウェア · コス トを最小に抑制しな がら、 性能向上に貢献可能なデータパス (データフロー) を、 過去 のデータパスに関する構成結果情報である本発明にかかる命令セッ ト (旧 D A P Z D N A ) のデータ情報と、 その後に追加されるハ一 ドウエア構成情報およびデータ処理を実行するシーケンス情報から 新しいタイプの組み合わせ結果、 すなわち、 新しいデータフローを 定義するソフ トウユアを導き、 極めて無駄の少ない最適解を提供す ることが可能となる。
また、 従来は、 ハー ドウェア構成が要素化され難いために、 その 相互の組み合わせ自体の柔軟性が無く、 基本的には、 性能を上げる ために 1つ新規のデータパスを追加するという よ うなやり方が主流 であった。 そして、 性能向上のための情報蓄積の点でも、 実際にそ れを実現する上で必要となるハー ドゥエア情報の追加という観点で も、 数値化し難くデータベース化することは困難であった。 これに 対し、 本発明によれば、 ある程度コンパク トなデータパスをいくつ かテンプレー ト的に用意しておき、 そのデータパス間の組み合わせ を指示して、 データフロー型の処理に持ち込むことによ り高性能化 を図ることが可能である。 そして、 極めて細かい単位でのハー ド ウェアと ソフ トウェアとの連携の見積も りが容易となる。 また、 ハ 一 ドウエアと ソフ トウェアの ト レ一 ドオフ情報を蓄積すること も可 能で、 データパス単位でその組み合わせの可能性が、 処理性能に対 する貢献度と密接に結びつく ことになる。 したがって、 ハードゥエ ァと ソフ ト ゥユアの緊密な実行性能データや処理要求に応じた性能 コス トの正確な見積も り を蓄積することが可能となる。 もちろん、 これらのデータパスは主要な処理あるいは汎用的な処理の実行を停 止させないで実現すること も可能となるため、 性能要求に対して、 何をどれだけどのよ うに追加すれば、 どのよ うな結果が期待出来る という ことを、 純粋に過去に蓄積された本発明にかかる命令セッ ト およびハー ドウェアのデータから予測する事が可能とする。
これは、 現在行われている設計コス トゃ仕様策定コス 卜の著しい 低減に貢献するだけで無く 、 次の新しい設計に対して、 新規に追加 すべきハー ドウエアと ソフ トウェアの ト レ一 ドオフを必要最小限で 完了させる事に貢献する。 また、 処理形態に応じて、 内部のデータ パスを外部へ貸し出しする事も容易にする為、 ハー ドウェアのリ ソ —スシェアリ ング化が可能となり 、 複数の本発明にかかるモジユー ル ( D A Pノ D N Aモジュール) の間で並列処理化を極め、 コンパ ク トなハー ドウエアで実現する事が可能となる。
なお、 上記に示したデータ処理装置および命令セッ トなどは、 本 発明の一例に過ぎず、 たとえば、 データ処理装置においては、 コ ー ド R A Mあるいはデータ R A Mなどを外部の R A Mあるレ、は R O M と したり、 これらに加えて外部の D R A Mあるレ、は S R A Mなどと のインタフェースを設けること も可能である。 さ らに、 外部の他の デバイスと接続するための入出力イ ンタフェースなど、 システムし S I などのデータ処理装置と して公知の機能を備えたデータ処理装 置も本発明に含まれる。 したがって、 本発明は以下の請求の範囲の 記載によ り理解および把握され、 それらの請求の範囲に含まれる変 形例は全て本発明の範囲に含まれる。 以上に説明したよ うに、 本発明においては、 データフロー指定命 令によ り複数の処理ュニッ トのイ ンタフェースを変更することによ りデータパスをプログラムによ り フ レキシブルに組替え可能と して いる。 したがって、 複雑なデータ処理に対し、 それらのデータ処理 に特化した多種多様な専用回路を用いなく ても、 それぞれのデータ 処理をフレキシブルに、 ハー ドウエアによ り高速に実行すること できる。 さ らに、 特定のデータパスを予め備えたテンプレー トを処 理ュニッ トと して採用することによ り、 性能向上に貢献可能なデ一 タパス (データフロー) をテンプレー トという資産と、 それを使用 する命令セッ トという資産で蓄積できる。 さ らに、 その後に追加さ れるハ ー ドウエア構成情報およびデータ処理を実行するシーケンス 情報に基づき随時更新し最適解を求めるよ うにすることができる。 したがって、 従来存在したアプリ ケーショ ン間の資産の共有化とハ 一ドウ ア資産の共有化、 及び高性能化に対する適切なハー ドウ ァ投資がよ り健全な方向へ向かい、 ネッ トワーク化社会を構築する 上でのテクノ ロジー · インフラと しても大き く貢献可能となること が期待できる。 産業上の利用可能性
本発明のデータ処理装置は、 様々なデータ処理を実行可能なプロ セッサあるレ、は L S I などと して提供することが可能であり、 電子 素子の集積回路のみならず、 光素子、 さ らには電子素子および光素 子を集積した光集積回路装置にも適用することができる。 特に、 本 発明の命令セッ トを備えた制御プロダラムおよびデータ処理装置に おいては、 データ処理を柔軟に、 そして高速に実行できるので、 ネッ トワーク処理や、 画像処理などの高速性およびリ アルタイム性 能を要求されるデータ処理装置に好適なものである。

Claims

請 求 の 範 囲
1 . 複数の処理ュニッ トを有するデータ処理装置を制御するプロ グラム製品であって、 少なく と も 1 つの前記処理ュニッ トの入力お よび/または出カインタフェースを、 前記処理ュニッ トによ り処理 を実行する時期とは独立して指示し、 前記処理ュニッ トによ り構成 されるデータパスを定義するデータフロー指定命令を有するプログ ラム製品。
2 . 前記データフロー指定命令は、 前記処理ユニッ トの処理內容 を規定可能である、 請求項 1 のプログラム製品。
3 . 前記処理ユニッ トは、 特定の内部データパスを備えており、 前記データフロー指定命令は、 前記内部データパスの一部を選択可 能である、 請求項 1 のプログラム製品。
4 . 前記データフロー指定命令は、 複数の前記処理ュニッ トによ り構成される処理ブロ ックの入力および または出力インタフエ一 スを規定可能である、 請求項 1のプログラム製品。
5 . 前記データ処理装置は、 前記処理ブロ ックの入力およびノま たは出力インタフヱ一スを規定する複数のコンフィ グレーショ ンデ 一タを格納したメモ リ を有し、
前記デ一タフ口一指定命令は、 前記メモリ に格納された前記複数 のコンフィ グレーショ ンデータの 1 つを選択し、 前記処理ブロ ック の入力および Zまたは出力イ ンタフェースを変更可能である、 請求 項 4のプログラム製品。
6 . 処理ュニッ トを有するデータ処理装置を制御するプログラム であって、 少なく と も 1 つの前記処理ュニッ 卜の入力および また は出力イ ンタフェースを、 前記処理ュニッ トによ り処理を実行する 時期とは独立して指示し、 前記処理ュニッ トによ り構成されるデー タパスを定義するデータフ口一指定命令を有するプログラムが記録 されている記録媒体。
7 . 処理ュニッ トを有するデータ処理装置を制御するプロダラム 製品であって、 少なく と も 1 つの前記処理ュニッ 卜の入力および Z または出力イ ンタフェースを、 前記処理ュニッ トによ り処理を実行 する時期とは独立して指示し、 前記処理ユニッ トによ り構成される データパスを定義するデータフ口一指定命令を有するプログラムが 埋め込まれている伝送媒体。
8 . 入力およびノまたは出力イ ンタフェースを変更可能な複数の 処理ユニッ トと、
少なく と も 1 つの前記処理ュニッ トの入力および または出カイ ンタフェースを、 前記処理ュニッ トによ り処理を実行する時期とは 独立して指示するデータフロ一指定命令をフエッチ可能なュニッ ト と、
前記データフ ロー指定命令をデコー ドし、 前記処理ユニッ トの入 力および Zまたは出カインタフェースを設定し、 複数の前記処理ュ ニッ トによるデータパスを構成可能なデータフ口一指定ュニッ トと を有するデータ処理装置。 9 . 前記データフロー指定ユニッ トは、 前記データフロー指定命 令によ り、 前記処理ユニッ トの処理内容を変更可能である、 請求項 8のデータ処理装置。
1 0 . 前記処理ュニッ トは、 特定の内部データパスを備えている、 請求項 8 のデータ処理装置。
1 1 . 前記処理ュニッ トは、 少なく と も 1つの論理ゲー トと、 こ の論理ゲ一 卜 と入出力インタフエースを接続する内部デ一タパスと を備えている、 請求項 1 0のデータ処理装置。
1 2 . 前記データフロー指定ユニッ トは、 前記データフ ロー指定 命令によ り、 前記処理ュニッ 卜の前記内部データパスの一部を選択 可能である、 請求項 1 0のデータ処理装置。
1 3 . 前記データフロー指定ュニッ トは、 前記処理ュニッ トのィ ンタフェースを管理するスケジューラと しての機能を備えている、 請求項 8のデータ処理装置。
1 4 . 前記データフロー指定ユニッ トは、 前記データフロー指定 命令によ り、 複数の前記処理ュニッ トによ り構成される処理ブロ ッ クの入力および Zまたは出力インタフェースを変更可能である、 請 求項 8 のデータ処理装置。
1 5 . 前記処理ブロ ックの入力および Zまたは出力インタフエ一 スを規定する複数のコンフィ グレーショ ンデータを格納したメモリ を有し、
前記データフロー指定ュニッ トは、 前記データフロー指定命令に よ り前記メモ リ に格納された前記複数のコンフィ グレーショ ンデー タの 1つを選択し、 前記処理ブロ ックの入力および または出カイ ンタフエースを変更可能である、 請求項 1 4 のデータ処理装置。
1 6 . 入力および または出力イ ンタフェースを変更可能な複数 の処理ユニッ トを有するデータ処理装置の制御方法であって、 少なく と も 1 つの前記処理ュニッ トの入力および または出カイ ンタフユースを、 前記処理ュニッ トによ り処理を実行する時期とは 独立して指示するデータフロー指定命令をフェッチする工程と、
前記データフロー指定命令をデコー ドし、 前記処理ユニッ トの入 力および Zまたは出力イ ンタフェースを設定し、 複数の前記処理ュ ニッ トによるデータパスを構成するデ一タフロー指定工程とを有す るデータ処理装置の制御方法。
1 7 . 前記データフロー指定工程では、 前記データフロー指定命 令によ り、 前記処理ユニッ トの処理内容を変更可能である、 請求項
1 6のデータ処理装置の制御方法。
1 8 . 前記処理ュニッ トは、 特定の内部データパスを備えており、 前記データフロー指定工程では、 前記データフロー指定命令によ り、 前記処理ユニッ トの前記内部データパスの一部を選択可能であ る、 請求項 1 6のデータ処理装置の制御方法。
1 9 . 前記データフロー指定工程では、 前記処理ュニッ 卜のイ ン タフエースを保持するスケジュールも管理する、 請求項 1 6のデ一 タ処理装置の制御方法。
2 0 . 前記データフ ロー指定工程では、 前記データフロー指定命 令によ り、 複数の前記処理ュニッ トによ り構成される処理プロ ック の入力および または出力イ ンタフェースを変更可能である、 請求 項 1 6のデータ処理装置の制御方法。
2 1 . 前記データ処理装置は、 前記処理ブロ ックの入力および Z または出力イ ンタフェースを規定する複数のコンフィ グレーショ ン データを格納したメモ リ を有し、 前記データフロー指定工程では、 前記データフロー指定命令によ り 、 前記メモリ に格納された前記複数のコンフィ グレーショ ンデー タの 1つを選択し、 前記処理プロ ックの入力および Zまたは出カイ ンタフエースを変更可能である、 請求項 2 0のデータ処理装置の制 御方法。
PCT/JP2000/005849 1999-08-30 2000-08-30 Progiciel et processeur de donnees WO2001016711A1 (fr)

Priority Applications (10)

Application Number Priority Date Filing Date Title
CA002348261A CA2348261C (en) 1999-08-30 2000-08-30 Program product and data processor
NZ516680A NZ516680A (en) 1999-08-30 2000-08-30 Program product for specifying an input and/or output interface of a processing unit independently of the timing of execution of the processing unit
IL14267500A IL142675A0 (en) 1999-08-30 2000-08-30 Program product and data processing system
BR0013595-0A BR0013595A (pt) 1999-08-30 2000-08-30 Produto de programa para controlar um sistema de processamento de dados, meio de gravação que armazena no mesmo um programa para controlar um sistema de processamento de dados, meio de transmissão, sistema de processamento de dados, e, método de controle de um sistema de processamento de dados
AU68643/00A AU776972B2 (en) 1999-08-30 2000-08-30 Program product and data processing system
EA200200309A EA004071B1 (ru) 1999-08-30 2000-08-30 Управляющий программный продукт и система обработки данных
US09/830,664 US6826674B1 (en) 1999-08-30 2000-08-30 Program product and data processor
JP2001520598A JP4234925B2 (ja) 1999-08-30 2000-08-30 データ処理装置、制御方法およびその記録媒体
EP00956783A EP1134654A4 (en) 1999-08-30 2000-08-30 PROGRAM PRODUCT AND DATA PROCESSOR
IL142675A IL142675A (en) 1999-08-30 2001-04-18 Product of a program and system for processing information

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP24413799 1999-08-30
JP11/244137 1999-08-30

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US10/946,746 Division US20050038550A1 (en) 1999-08-30 2004-09-22 Program product and data processing system

Publications (1)

Publication Number Publication Date
WO2001016711A1 true WO2001016711A1 (fr) 2001-03-08

Family

ID=17114319

Family Applications (3)

Application Number Title Priority Date Filing Date
PCT/JP2000/005850 WO2001016717A1 (fr) 1999-08-30 2000-08-30 Unite de commande et support d'enregistrement
PCT/JP2000/005848 WO2001016710A1 (fr) 1999-08-30 2000-08-30 Processeur de donnees
PCT/JP2000/005849 WO2001016711A1 (fr) 1999-08-30 2000-08-30 Progiciel et processeur de donnees

Family Applications Before (2)

Application Number Title Priority Date Filing Date
PCT/JP2000/005850 WO2001016717A1 (fr) 1999-08-30 2000-08-30 Unite de commande et support d'enregistrement
PCT/JP2000/005848 WO2001016710A1 (fr) 1999-08-30 2000-08-30 Processeur de donnees

Country Status (16)

Country Link
US (4) US6826674B1 (ja)
EP (2) EP1134654A4 (ja)
JP (2) JP4234925B2 (ja)
KR (2) KR100497078B1 (ja)
CN (3) CN1145879C (ja)
AT (1) ATE466330T1 (ja)
AU (3) AU782238B2 (ja)
BR (2) BR0013595A (ja)
CA (2) CA2348259A1 (ja)
DE (1) DE60044300D1 (ja)
EA (2) EA004071B1 (ja)
HK (1) HK1047326A1 (ja)
IL (4) IL142676A0 (ja)
NZ (2) NZ516679A (ja)
TW (2) TW504608B (ja)
WO (3) WO2001016717A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007102218A1 (ja) * 2006-03-09 2007-09-13 Fujitsu Limited リコンフィギャラブル回路
US7908453B2 (en) 2004-06-30 2011-03-15 Fujitsu Semiconductor Limited Semiconductor device having a dynamically reconfigurable circuit configuration

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW504608B (en) * 1999-08-30 2002-10-01 Ip Flex Inc Program product and data processing device
JP2003140886A (ja) * 2001-10-31 2003-05-16 Seiko Epson Corp インストラクションセット及びコンパイラ
US7093225B2 (en) 2002-07-17 2006-08-15 Osann Robert Jr FPGA with hybrid interconnect
US7679398B2 (en) * 2002-07-17 2010-03-16 Osann Jr Robert Reprogrammable instruction DSP
JP4002151B2 (ja) * 2002-07-31 2007-10-31 富士通株式会社 情報処理装置
RU2006100275A (ru) * 2003-06-18 2006-07-10 Амбрик, Инк. (Us) Система разработки интегральной схемы
US20070186076A1 (en) * 2003-06-18 2007-08-09 Jones Anthony M Data pipeline transport system
US20050097306A1 (en) * 2003-09-29 2005-05-05 Gajski Daniel D. No-instruction-set-computer processor
DE10360998B4 (de) * 2003-12-23 2008-09-04 Infineon Technologies Ag Schutz von Chips gegen Attacken
US7937557B2 (en) 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
US9047094B2 (en) * 2004-03-31 2015-06-02 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor
JP4893309B2 (ja) * 2004-10-28 2012-03-07 富士ゼロックス株式会社 再構成可能な論理回路を有するデータ処理装置
CN100346292C (zh) * 2005-12-02 2007-10-31 浙江大学 多地址空间异步计算等待响应指令的控制方法
JP4795025B2 (ja) * 2006-01-13 2011-10-19 キヤノン株式会社 ダイナミックリコンフィギャラブルデバイス、制御方法、及びプログラム
US7617383B2 (en) * 2006-02-16 2009-11-10 Vns Portfolio Llc Circular register arrays of a computer
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US7904615B2 (en) * 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
US7555637B2 (en) * 2007-04-27 2009-06-30 Vns Portfolio Llc Multi-port read/write operations based on register bits set for indicating select ports and transfer directions
WO2008142750A1 (ja) * 2007-05-17 2008-11-27 Fujitsu Limited 演算ユニット、プロセッサ及びプロセッサアーキテクチャ
US7752592B2 (en) * 2007-10-10 2010-07-06 International Business Machines Corporation Scheduler design to optimize system performance using configurable acceleration engines
US20100023730A1 (en) * 2008-07-24 2010-01-28 Vns Portfolio Llc Circular Register Arrays of a Computer
US9069918B2 (en) * 2009-06-12 2015-06-30 Cadence Design Systems, Inc. System and method implementing full-rate writes for simulation acceleration
JP5718558B2 (ja) * 2009-09-16 2015-05-13 富士ゼロックス株式会社 画像データ処理装置
TWI563479B (en) * 2009-12-30 2016-12-21 Tatung Co Field emission display
JP5617282B2 (ja) * 2010-03-09 2014-11-05 富士通セミコンダクター株式会社 データ処理システム
JP5580404B2 (ja) * 2010-03-29 2014-08-27 株式会社東芝 半導体装置
GB2483903A (en) * 2010-09-24 2012-03-28 Advanced Risc Mach Ltd Instruction which specifies the type of the next instruction to be executed
US9412022B2 (en) * 2012-09-06 2016-08-09 Leonard Flom Iris identification system and method
US9880842B2 (en) * 2013-03-15 2018-01-30 Intel Corporation Using control flow data structures to direct and track instruction execution
JP6321325B2 (ja) 2013-04-03 2018-05-09 ルネサスエレクトロニクス株式会社 情報処理装置および情報処理方法
US20170083313A1 (en) * 2015-09-22 2017-03-23 Qualcomm Incorporated CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs)
KR102276718B1 (ko) * 2015-11-25 2021-07-13 삼성전자주식회사 Vliw 인터페이스 장치 및 제어 방법
DE102017208818A1 (de) * 2017-05-24 2018-11-29 Wago Verwaltungsgesellschaft Mbh Initialisierung von Datenbusteilnehmern
RU182446U1 (ru) * 2018-03-13 2018-08-17 Федеральное государственное бюджетное образовательное учреждение высшего образования "Казанский государственный энергетический университет" Усовершенствованное устройство проверки однородности нескольких однотипных выборок
CN110209629B (zh) * 2019-07-15 2023-12-15 北京一流科技有限公司 协处理器的数据处理路径中的数据流动加速装置及其方法
CN113760364B (zh) * 2020-06-03 2022-06-17 广东高云半导体科技股份有限公司 逻辑器件的控制器

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06309285A (ja) * 1993-04-27 1994-11-04 Fujitsu Ltd 並列計算機における通信処理回路
JPH07319692A (ja) * 1994-05-25 1995-12-08 Fuji Electric Co Ltd プログラマブルコントローラ
JPH10260832A (ja) * 1997-03-18 1998-09-29 Hitachi Ltd 情報処理装置

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5626062B2 (ja) 1973-12-12 1981-06-16
JPS61294548A (ja) * 1985-06-21 1986-12-25 Toshiba Corp 機械命令実行装置
US5038386A (en) 1986-08-29 1991-08-06 International Business Machines Corporation Polymorphic mesh network image processing system
JPS6482131A (en) * 1987-09-24 1989-03-28 Mitsubishi Electric Corp Data processor
JPH01156824A (ja) * 1987-12-14 1989-06-20 Hitachi Ltd マイクロプロセッサ
JPH02183332A (ja) 1989-01-10 1990-07-17 Fujitsu Ltd プログラムド制御方式
GB9123271D0 (en) 1991-11-02 1991-12-18 Int Computers Ltd Data processing system
US5452455A (en) * 1992-06-15 1995-09-19 International Business Machines Corporation Asynchronous command support for shared channels for a computer complex having multiple operating systems
US5535406A (en) * 1993-12-29 1996-07-09 Kolchinsky; Alexander Virtual processor module including a reconfigurable programmable matrix
US5551570B1 (en) 1994-02-02 1999-10-05 Tartan Paper Products Decorative packaging system including a method and kit therefor
JPH07253882A (ja) * 1994-03-15 1995-10-03 Hitachi Ltd 命令制御装置
US5617431A (en) * 1994-08-02 1997-04-01 Advanced Micro Devices, Inc. Method and apparatus to reuse existing test patterns to test a single integrated circuit containing previously existing cores
US6128720A (en) * 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
US6052773A (en) 1995-02-10 2000-04-18 Massachusetts Institute Of Technology DPGA-coupled microprocessors
US5742180A (en) 1995-02-10 1998-04-21 Massachusetts Institute Of Technology Dynamically programmable gate array with multiple contexts
JP2987308B2 (ja) * 1995-04-28 1999-12-06 松下電器産業株式会社 情報処理装置
US5826072A (en) * 1995-11-13 1998-10-20 Oasis Design, Inc. Pipelined digital signal processor and signal processing system employing same
US5956518A (en) 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
US5771362A (en) * 1996-05-17 1998-06-23 Advanced Micro Devices, Inc. Processor having a bus interconnect which is dynamically reconfigurable in response to an instruction field
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
US5805875A (en) * 1996-09-13 1998-09-08 International Computer Science Institute Vector processing system with multi-operation, run-time configurable pipelines
DE19654846A1 (de) * 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US5970254A (en) * 1997-06-27 1999-10-19 Cooke; Laurence H. Integrated processor and programmable data path chip for reconfigurable computing
US5966534A (en) 1997-06-27 1999-10-12 Cooke; Laurence H. Method for compiling high level programming languages into an integrated processor with reconfigurable logic
JP3414209B2 (ja) 1997-07-30 2003-06-09 松下電器産業株式会社 プロセッサ
JP3449186B2 (ja) * 1997-08-19 2003-09-22 富士通株式会社 パイプラインバイパス機能を有するデータ処理装置
US6282627B1 (en) * 1998-06-29 2001-08-28 Chameleon Systems, Inc. Integrated processor and programmable data path chip for reconfigurable computing
US6647511B1 (en) * 1998-09-17 2003-11-11 Texas Instruments Incorporated Reconfigurable datapath for processor debug functions
JP2000207202A (ja) 1998-10-29 2000-07-28 Pacific Design Kk 制御装置およびデ―タ処理装置
US6181163B1 (en) * 1999-01-21 2001-01-30 Vantis Corporation FPGA integrated circuit having embedded SRAM memory blocks and interconnect channel for broadcasting address and control signals
US6477683B1 (en) * 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
TW504608B (en) * 1999-08-30 2002-10-01 Ip Flex Inc Program product and data processing device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06309285A (ja) * 1993-04-27 1994-11-04 Fujitsu Ltd 並列計算機における通信処理回路
JPH07319692A (ja) * 1994-05-25 1995-12-08 Fuji Electric Co Ltd プログラマブルコントローラ
JPH10260832A (ja) * 1997-03-18 1998-09-29 Hitachi Ltd 情報処理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7908453B2 (en) 2004-06-30 2011-03-15 Fujitsu Semiconductor Limited Semiconductor device having a dynamically reconfigurable circuit configuration
WO2007102218A1 (ja) * 2006-03-09 2007-09-13 Fujitsu Limited リコンフィギャラブル回路

Also Published As

Publication number Publication date
CA2348261C (en) 2006-02-14
AU782238B2 (en) 2005-07-14
NZ516679A (en) 2004-03-26
JP4234925B2 (ja) 2009-03-04
EP1215569A1 (en) 2002-06-19
IL142676A0 (en) 2002-03-10
CN1321271A (zh) 2001-11-07
KR100497078B1 (ko) 2005-06-27
JP3842129B2 (ja) 2006-11-08
KR20010080366A (ko) 2001-08-22
IL142675A (en) 2006-07-05
IL142675A0 (en) 2002-03-10
CN1301459C (zh) 2007-02-21
EP1134654A1 (en) 2001-09-19
US20050240757A1 (en) 2005-10-27
EA004196B1 (ru) 2004-02-26
KR20010080367A (ko) 2001-08-22
WO2001016717A8 (fr) 2001-04-12
CN1321270A (zh) 2001-11-07
KR100491593B1 (ko) 2005-05-27
AU776972B2 (en) 2004-09-30
TW495711B (en) 2002-07-21
IL142676A (en) 2006-08-20
CN1532692A (zh) 2004-09-29
EA200200310A1 (ru) 2002-10-31
CN1145879C (zh) 2004-04-14
BR0013594A (pt) 2002-07-16
CA2348259A1 (en) 2001-03-08
EP1215569B1 (en) 2010-04-28
WO2001016717A1 (fr) 2001-03-08
BR0013595A (pt) 2002-07-16
US6904514B1 (en) 2005-06-07
US6826674B1 (en) 2004-11-30
US20050038550A1 (en) 2005-02-17
WO2001016710A1 (fr) 2001-03-08
NZ516680A (en) 2004-01-30
EA004071B1 (ru) 2003-12-25
TW504608B (en) 2002-10-01
HK1047326A1 (zh) 2003-02-14
EA200200309A1 (ru) 2002-08-29
AU6864300A (en) 2001-03-26
ATE466330T1 (de) 2010-05-15
AU6864400A (en) 2001-03-26
EP1215569A4 (en) 2006-08-23
AU6864200A (en) 2001-03-26
CA2348261A1 (en) 2001-03-08
DE60044300D1 (de) 2010-06-10
EP1134654A4 (en) 2006-08-23
CN1148647C (zh) 2004-05-05

Similar Documents

Publication Publication Date Title
WO2001016711A1 (fr) Progiciel et processeur de donnees
US10564980B2 (en) Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
DE102018005181B4 (de) Prozessor für einen konfigurierbaren, räumlichen beschleuniger mit leistungs-, richtigkeits- und energiereduktionsmerkmalen
US20220107911A1 (en) Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10387319B2 (en) Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10469397B2 (en) Processors and methods with configurable network-based dataflow operator circuits
US20190004878A1 (en) Processors, methods, and systems for a configurable spatial accelerator with security, power reduction, and performace features
CN111512292A (zh) 用于可配置空间加速器中的非结构化数据流的装置、方法和系统
EP3776229A1 (en) Apparatuses, methods, and systems for remote memory access in a configurable spatial accelerator
JP2016526220A (ja) プログラム可能な最適化を有するメモリネットワークプロセッサ
US11983559B2 (en) Streaming engine with short cut start instructions
CN112148664A (zh) 用于可配置空间加速器中的时间复用的装置、方法和系统
JP4743581B2 (ja) データ処理システムおよびその制御方法
JP4560705B2 (ja) データ処理装置の制御方法
Jones et al. Architecture and instruction set design of an ATM network processor
Nousias Reconfigurable Instruction Cell Architecture Reconfiguration and Interconnects
GB2508162A (en) Reconfigurable predicate logic computer architectures

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 00801824.3

Country of ref document: CN

AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE 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 NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

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

ENP Entry into the national phase

Ref document number: 2001 520598

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 2000956783

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 142675

Country of ref document: IL

ENP Entry into the national phase

Ref document number: 2348261

Country of ref document: CA

Ref document number: 2348261

Country of ref document: CA

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 1020017005452

Country of ref document: KR

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)

Free format text: (EXCEPT CA, CN, IL, JP, KR, US, EP (AT, BE, CH, CY, DE, DK, ES, FI, FR, GB, GR, IE, IT, LU, MC, NL, PT, SE))

WWE Wipo information: entry into national phase

Ref document number: 09830664

Country of ref document: US

WWP Wipo information: published in national office

Ref document number: 1020017005452

Country of ref document: KR

WWP Wipo information: published in national office

Ref document number: 2000956783

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 68643/00

Country of ref document: AU

WWE Wipo information: entry into national phase

Ref document number: 516680

Country of ref document: NZ

Ref document number: IN/PCT/2002/00070/DE

Country of ref document: IN

Ref document number: IN/PCT/2002/70/DEL

Country of ref document: IN

WWE Wipo information: entry into national phase

Ref document number: 200200309

Country of ref document: EA

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWP Wipo information: published in national office

Ref document number: 516680

Country of ref document: NZ

WWG Wipo information: grant in national office

Ref document number: 516680

Country of ref document: NZ

WWG Wipo information: grant in national office

Ref document number: 68643/00

Country of ref document: AU

WWG Wipo information: grant in national office

Ref document number: 1020017005452

Country of ref document: KR

WWW Wipo information: withdrawn in national office

Ref document number: 2000956783

Country of ref document: EP