WO2015136686A1 - 情報処理装置及び方法 - Google Patents

情報処理装置及び方法 Download PDF

Info

Publication number
WO2015136686A1
WO2015136686A1 PCT/JP2014/056845 JP2014056845W WO2015136686A1 WO 2015136686 A1 WO2015136686 A1 WO 2015136686A1 JP 2014056845 W JP2014056845 W JP 2014056845W WO 2015136686 A1 WO2015136686 A1 WO 2015136686A1
Authority
WO
WIPO (PCT)
Prior art keywords
instruction
operation mode
microcode
processing
unit
Prior art date
Application number
PCT/JP2014/056845
Other languages
English (en)
French (fr)
Inventor
淳二 山本
正啓 間瀬
昌也 中畑
Original Assignee
株式会社日立製作所
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 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2014/056845 priority Critical patent/WO2015136686A1/ja
Publication of WO2015136686A1 publication Critical patent/WO2015136686A1/ja

Links

Images

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
    • 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/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • 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
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Definitions

  • the present invention relates to an information processing apparatus and method, and is particularly suitable for application to an information processing apparatus that can process data using both the SIMD (Single Instruction / Multiple Data) system and the MIMD (Multiple Instruction / Multiple Data) system. Is.
  • SIMD Single Instruction / Multiple Data
  • MIMD Multiple Instruction / Multiple Data
  • SIMD method is a method of processing a part or all of a plurality of data in parallel with one instruction.
  • the MIMD method is a parallel computer equipped with a plurality of microprocessors, and each of the plurality of microprocessors has different data. A method for performing different processing on the in parallel.
  • the SIMD method is a method of processing a part or all of a plurality of data in parallel with the same instruction, different processing cannot be applied to individual data. For this reason, when it is necessary to perform different processing on individual data in the middle of processing by the SIMD method, a method of sequentially processing the individual data is used. However, according to this method, there is a problem that the degree of parallelism of processing decreases because processing cannot be performed on other data while processing is performed on certain data.
  • SIMD modes SIMD modes
  • MIMD modes MIMD operation modes
  • a parallel computing device has been proposed that can switch the operation mode between the SIMD mode and the MIMD mode as appropriate (Patent Document 1). According to the parallel processing device disclosed in Patent Document 1, there is an advantage that different processing can be performed on individual data in parallel by switching the operation mode from the SIMD mode to the MIMD mode.
  • the parallel arithmetic device disclosed in Patent Document 1 has a configuration in which instructions in the MIMD mode are given to the memory each time for each arithmetic circuit that processes individual data in parallel.
  • the present invention has been made in consideration of the above points, and intends to propose an information processing apparatus and method capable of avoiding a decrease in the degree of parallelism of processing and effectively preventing a decrease in the data processing capability of the entire apparatus. Is.
  • a first operation mode in which a part or all of a plurality of data is processed in parallel with one instruction, and the plurality of data are processed according to the instruction for each data.
  • an information processing apparatus having a second operation mode for processing in parallel, an instruction memory that stores the instruction, and a first command that interprets the instruction stored in the instruction memory and that corresponds to the instruction.
  • Each of the instruction processing units holds in advance all the second microcodes to be processed in the second operation mode, respectively.
  • a special code is embedded in the second microcode that is processed last among the plurality of second microcodes that are processed in series, and each of the instruction processing units is sent from the instruction interpreting unit.
  • a process according to the second microcode in which the special code is embedded by switching the operation mode to the second operation mode in accordance with an instruction, executing different processes according to the second microcode.
  • the process waits until all the other instruction processing units complete the processing of the second operation mode. Is switched to the first operation mode.
  • the first operation mode in which a part or all of a plurality of data is processed in parallel with one instruction, and the plurality of data are processed in parallel according to the instruction for each data.
  • the information processing apparatus interprets the instruction memory storing the instruction, the instruction stored in the instruction memory, and the instruction A command interpreter that creates a first microcode that is a command corresponding to the command, and a plurality of processes that execute processing according to the first microcode transmitted from the command interpreter in the first operation mode, respectively.
  • Each instruction processing unit holds in advance all the second microcodes to be processed in the second operation mode.
  • each instruction processing unit switches the operation mode to the second operation mode in accordance with an instruction from the instruction interpretation unit, and performs different processes according to the held second microcode.
  • each instruction processing unit finishes executing the processing according to the second microcode in which the special code is embedded, thereby processing the second operation mode.
  • the process waits until all other instruction processing units finish the process in the second operation mode, and after waiting, switches the operation mode to the first operation mode. And obtain way.
  • the information processing apparatus and the information processing method it is unnecessary to rewrite the second microcode to be processed by each instruction processing unit in the second operation mode, and it is desired to switch the operation mode of each instruction processing unit. It can be done at the timing. Therefore, it is possible to avoid a decrease in the degree of parallelism of processing due to such rewriting of the second microcode.
  • a special code is embedded in the second microcode to be processed at the end of the plurality of second microcodes that are continuously processed in the second operation mode.
  • the processing unit finishes the process in the second operation mode by completing the process according to the second microcode in which the special code is embedded, all the other instruction processing units In the second operation mode, each instruction processing unit executes a process with a different number of cycles in order to switch the operation mode to the first operation mode.
  • FIG. 1, 1 shows the information processing apparatus by this Embodiment as a whole.
  • the information processing apparatus 1 has a SIMD mode and a MIMD mode as operation modes, and includes an instruction memory 2, an instruction interpretation unit 3, and a plurality of instruction processing units 4.
  • the instruction memory 2 is a memory used for storing and holding instructions given from a user, an application, or the like, and stores a plurality of instructions 5 that define processing contents to be executed by each instruction processing unit 4.
  • the instruction interpretation unit 3 is a functional unit composed of hardware or software.
  • the instruction interpretation unit 3 sequentially reads the instructions 5 stored in the instruction memory 2 in a predetermined cycle period, interprets the read instructions 5, and creates a microcode 6 that is a command corresponding to the instructions 5. Then, the instruction interpretation unit 3 transmits the created microcode 6 to each instruction processing unit 4.
  • FIG. 2 shows a configuration example of the microcode 6 created by the instruction interpretation unit 3.
  • the microcode 6 includes an instruction execution code 10, a set flag 11, a MIMD code address 12, and a MIMD cycle number 13.
  • the instruction execution code 10 is a code designating the contents of the process to be executed by the instruction processing unit 4, and the set flag 11 is to fetch the MIMD code address 12 and the MIMD cycle number 13 following the set flag 11. This is a flag for instructing the instruction processing unit 4.
  • the instruction interpreter 3 normally sets the set flag 11 to false (hereinafter referred to as “0”) and sets the set flag 11 to true (“1”) only in the first microcode 6 switched to the MIMD mode. To do.
  • the MIMD code address 12 indicates that the microcode 28 to be executed first when the instruction processing unit 4 switches to the MIMD mode among the microcodes 28 stored in the local memory 22 in the instruction processing unit 4 as described later. It is information indicating an address on the stored local memory 22.
  • the MIMD cycle number 13 is information representing the number of microcodes 28 that the instruction processing unit 4 should process continuously in one MIMD mode.
  • the maximum value is set as the MIMD cycle number 13.
  • the instruction processing unit 4 includes an address pointer memory 20, an address pointer update unit 21, a local memory 22, a counter memory 23, a MIMD cycle number update unit 24, a comparator 25, a microcode selector 26, and an instruction execution.
  • the unit 27 is configured.
  • the address pointer memory 20 is a memory used for storing the MIMD code address 12 (FIG. 2) included in the microcode 6 given from the instruction interpretation unit 3.
  • the address pointer memory 20 does nothing when the set flag 11 (FIG. 2) of the microcode 6 is “0”, and the MIMD code address 12 included in the microcode 6 when the set flag 11 is “1”. And the stored MIMD code address 12 is notified to the local memory 22.
  • the address pointer update unit 21 is a circuit that updates the MIMD code address stored in the address pointer memory 20.
  • the address pointer updating unit 21 holds a program counter (not shown) of microcode 28 stored in the local memory 22 as will be described later. Then, when the address pointer memory 20 stores the MIMD code address, the address pointer updating unit 21 starts counting a clock provided from an oscillator (not shown), and the instruction execution unit 27 is for one cycle period in which one microcode 28 is processed. Each time the number of clocks is counted, the value of the MIMD code address stored in the address pointer memory 20 is converted into the microcode to be executed by the instruction execution unit 27 next to the microcode 28 stored in the local memory 22. Update to the address where the code 28 is stored.
  • the local memory 22 is composed of, for example, a semiconductor memory, and stores in advance all the microcode 28 that defines the processing contents to be executed by the instruction processing unit 4 in the MIMD mode.
  • the local memory 22 reads the microcode 28 stored in the MIMD code address notified from the address pointer memory 20 on the local memory 22, and reads the read microcode 28 into the second input of the microcode selector 26. Send to the end.
  • a plurality of microcodes 28 stored in the local memory 22 of the instruction processing unit 4 are processed at the end of the plurality of microcodes 28 that are continuously processed in the MIMD mode.
  • a special code indicating this hereinafter referred to as MIMD mode end code
  • the counter memory 23 is a memory used for counting the number of microcodes 6 from the instruction interpretation unit 3.
  • the counter memory 23 does nothing when the set flag 11 (FIG. 2) of the microcode 6 is “0”, and when the set flag 11 is “1”, the number of MIMD cycles 13 included in the microcode 6 ( 2) is stored, and the stored MIMD cycle number 13 is notified to the comparator 25.
  • the MIMD cycle number update unit 24 is a circuit that updates the MIMD cycle number stored in the counter memory 23.
  • the MIMD cycle number update unit 24 starts counting the clocks supplied from the oscillator described above, and the instruction execution unit 27 processes one microcode 28 for one cycle period. Each time the number of clocks is counted, the number of MIMD cycles stored in the counter memory 23 is decreased by “1”.
  • the comparator 25 compares the MIMD cycle number notified from the counter memory 23 with a preset comparison reference value (here, “0”), and the notified MIMD cycle number does not match the comparison reference value. If the logic level is “0” and the notified MIMD cycle number matches the comparison reference value, a switching control signal having a logic level “1” is transmitted to the microcode selector 26.
  • the microcode selector 26 is composed of a switch, for example.
  • the microcode 6 transmitted from the instruction interpreter 3 is given to the first input terminal of the microcode selector 26.
  • the microcode selector 26 selects the microcode 6 from the instruction interpreter 3 given to the first input terminal when the logic level of the switching control signal given from the comparator 25 is “0” and selects the instruction execution unit When the logic level of the switching control signal given from the comparator 25 is “1”, the microcode 28 read from the local memory 22 given to the second input terminal is selected and the instruction execution unit 27 is selected. Send to.
  • the instruction execution unit 27 executes a process according to the microcodes 6 and 28 given from the microcode selector 26 using a register and an arithmetic unit (not shown), and outputs the processing result to a next-stage processing unit (not shown). To do.
  • the instruction execution unit 27 detects the above-described MIMD mode end code from the microcode 28 supplied from the microcode selector 26, the instruction execution unit 27 executes processing according to the microcode 28 and then performs the address pointer update unit 21. And the updating of the MIMD code address stored in the address pointer memory 20 is stopped, and thereafter, the process is stopped until the next microcode is given from the microcode selector 26.
  • the set flag 11 of the microcode 6 transmitted from the instruction interpretation unit 3 to each instruction processing unit 4 is set to “0”.
  • the MIMD cycle number 13 is not set in the counter memory 23, so that a switching control signal having a logic level of “0” is given from the comparator 25 to the microcode selector 26.
  • the microcode 6 from the instruction interpretation unit 3 is selected by the microcode selector 26 and is supplied to the instruction execution unit 27. Therefore, in the SIMD mode, each instruction processing unit 4 executes the same instruction according to the same microcode 6 given from the instruction interpretation unit 3.
  • the set flag of the microcode 6 from the instruction interpretation unit 3 is set to “1”.
  • the address pointer memory 20 stores the MIMD code address 12 in the microcode 6, and the counter memory 23 stores the MIMD cycle number 13 in the microcode 6.
  • the switching control signal having the logic level “1” is given from the comparator 25 to the microcode selector 26 until the number of MIMD cycles held in the counter memory 23 becomes “0”.
  • the microcode 28 read from the local memory 22 is selected by the microcode selector 26 until the value of the MIMD cycle number stored in the counter memory 23 becomes “0”.
  • each instruction processing unit 4 executes different processes according to the microcode 28 stored in the local memory 22 of the instruction processing unit 4.
  • the instruction execution unit 27 controls the address pointer update unit 21 to stop the update of the MIMD code address stored in the address pointer memory 20. At the same time, the process is stopped until the next microcode is received. Accordingly, in the MIMD mode, when the number of cycles executed in each instruction processing unit 4 is different, the other instruction processing units 4 wait until the processing of the instruction processing unit 4 having the largest number of cycles is completed.
  • the instruction interpretation unit 3 continues to transmit the microcode 6 to each instruction processing unit 4 in a predetermined cycle period while the operation mode of each instruction processing unit 4 is switched to the MIMD mode.
  • a meaningless dummy code is set as the instruction execution code 10 (FIG. 2), and “0” is set as the set flag 11 in the microcode 6.
  • each instruction processing unit 4 when the number of MIMD cycles held in the counter memory 23 becomes “0”, the logic level of the switching control signal given from the comparator 25 to the microcode selector 26 becomes “1”. To “0”. As a result, the microcode selected by the microcode selector 26 is switched again to the microcode 6 from the instruction interpreter 3. Further, the instruction interpretation unit 3 transmits the microcode 6 in which the set flag 11 is set to “1” to each instruction processing unit 4, and when a cycle period of 13 MIMD cycles stored in the microcode 6 has elapsed, the SIMD The transmission of the microcode 6 storing the instruction execution code to be executed in the mode to each instruction processing unit 4 is resumed. As a result, the processing in the SIMD mode is resumed in each instruction processing unit 4.
  • each instruction processing unit 4 since each instruction processing unit 4 holds all the microcode 28 to be processed in the MIMD mode in its own local memory 22, the operation mode of each instruction processing unit 4. Can be performed at a desired timing. Therefore, it is possible to avoid a decrease in the parallelism of processing due to such rewriting of the microcode 28, thus avoiding a decrease in the parallelism of the processing and effectively preventing a decrease in the data processing capability of the entire apparatus. Can do.
  • the MIMD mode end code is embedded in the microcode 28 that is processed last among the plurality of microcodes 28 that are continuously processed in the MIMD mode.
  • all other instruction processing units 4 terminate the MIMD mode processing. Since the operation mode is switched to the SIMD mode after waiting, the instruction processing unit 4 having the largest number of cycles can be selected even when each instruction processing unit 4 executes processing with a different number of cycles in the MIMD mode.
  • a dummy microcode is stored in the local memory 22 of the instruction processing unit 4 having a small number of cycles. 8 it is not necessary to store, correspondingly, it is possible to suppress the waste of the local memory 22 in each of the instruction processing unit 4.
  • FIG. 3 shows an information processing apparatus 30 according to the second embodiment.
  • the instruction interpreting unit 31 and the instruction processing unit 32 include an address pointer memory 20, an address pointer updating unit 21, a local memory 22, a register 33, a microcode selector 26, and an instruction execution unit 34.
  • This is different from the information processing apparatus 1 according to the first embodiment in that the end determination unit 35 is provided.
  • the instruction interpretation unit 31 sequentially reads the instructions 5 stored in the instruction memory 2 in a predetermined cycle period, interprets the read instructions 5, and reads the microcode 6 that is a command corresponding to the instructions 5. create. Then, the instruction interpretation unit 31 transmits the created microcode 6 to each instruction processing unit 4.
  • the instruction interpretation unit 31 sets the set flag 11 (FIG. 2) of the microcode 6 to “0” in the SIMD mode, and sets the set flag 11 to “1” in the MIMD mode. Further, after setting the set flag 11 of the microcode 6 to “1”, the instruction interpreting unit 31 maintains the micro level until the logical level of the switching control signal given from the end determination unit 35 becomes “0” as described later. A meaningless dummy code is set as the instruction execution code 10 of the code 6 (FIG. 2), and “1” is set as the set flag 11.
  • the register 33 of the instruction processing unit 32 fetches and stores the value of the set flag 11 (FIG. 2) of the microcode 6 every time the microcode 6 is given from the instruction interpreting unit 31, and the same logic as the stored set flag 11 A level mode determination signal is transmitted to the end determination unit 35. Therefore, in SIMD mode, a mode determination signal of logical level “0” is transmitted from the register 33 to the end determination unit 35, and in MIMD mode, a mode determination signal of logical level “1” is transmitted from the register 33 to the end determination unit 35. Is done.
  • the end determination unit 35 includes an OR circuit having an input terminal corresponding to each instruction processing unit 32. Then, the end determination unit 35 transmits a switching control signal based on the mode determination signal respectively given from the register 33 of each instruction processing unit 32 to the microcode selector 26 of each instruction processing unit 32 and the instruction interpretation unit 31. . Accordingly, a switching control signal having a logic level “0” is normally supplied to the microcode selector 26 and the instruction interpreting unit 31 of each instruction processing unit 32, and the operation mode in at least one instruction processing unit 32 is set to the MIMD mode. When switching is performed, a switching control signal having a logic level “1” is supplied to the microcode selector 26 and the instruction interpreting unit 31 of each instruction processing unit 32.
  • the microcode selector 26 interprets the instruction given to the first input terminal when the logic level of the switching control signal is “0” as described above. While the microcode 6 from the unit 31 is selected and output to the instruction execution unit 34, when the logic level of the switching control signal is “1”, the microcode read from the local memory 22 applied to the second input terminal is selected. The code 28 is selected and output to the instruction execution unit 34.
  • the instruction execution unit 34 uses a register or an arithmetic unit (not shown) to perform processing according to the microcode given from the microcode selector 26. Is executed, and the processing result is output to the next processing unit (not shown).
  • the instruction execution unit 34 When the instruction execution unit 34 detects the above-described MIMD mode end code from the microcode 28 supplied from the microcode selector 26, the instruction execution unit 34 executes processing according to the microcode 28 and then performs the address pointer update unit 21. To update the MIMD code address stored in the address pointer memory 20 and update the value held in the register 33 to “0”. The instruction execution unit 34 then stops processing until the next microcode is given.
  • the logic levels of the mode determination signals from the instruction processing units 32 input to the termination determination unit 35 are all "0", and the processing ends.
  • the logic level of the switching control signal output from the determination unit 35 is switched from “1” to “0”.
  • the microcode selected by the microcode selector 26 of each instruction processing unit 32 is switched from the microcode 28 read from the local memory 22 to the microcode 6 from the instruction interpretation unit 31.
  • the set flag 11 (FIG. 2) of the microcode 6 from the instruction interpretation unit 31 is set to “0” in the SIMD mode.
  • a mode determination signal having a logic level of “0” is given from the register 33 of the unit 32 to the end determination unit 35. Accordingly, the logic level of the switching control signal given from the end determination unit 35 to the microcode selector 26 of each instruction processing unit 32 is also “0”.
  • the microcode selector 26 receives the micro level from the instruction interpretation unit 31. Code 6 is selected and provided to the instruction execution unit 34. Therefore, in each instruction processing unit 32, the same instruction is executed according to the same microcode 6 given from the instruction interpretation unit 31.
  • the mode determination signal given to the end determination unit 35 from the register 33 of each instruction processing unit 32 is set.
  • the logic level is switched to “1”.
  • the logic level of the switching control signal supplied from the end determination unit 35 to the microcode selector 26 of each instruction processing unit 32 is also switched to “1”.
  • the microcode selector 26 uses the local memory 22.
  • the microcode 28 read from is selected and provided to the instruction execution unit 34. Therefore, in the MIMD mode, each instruction processing unit 32 executes different processes according to the microcode 28 stored in the local memory 22 of the instruction processing unit 32.
  • the instruction execution unit 34 of each instruction processing unit 32 sets “0” in each register 33.
  • the logic level of the mode determination signal transmitted to is switched to “0”. Therefore, in this case, the logic level of the switching control signal supplied from the end determination unit 35 to the microcode selector 26 of each instruction processing unit 32 is also switched to “0”.
  • the microcode 6 from 31 is selected and given to the instruction execution unit 34. As a result, the operation mode in each instruction processing unit 32 is returned from the MIMD mode to the SIMD mode.
  • each instruction processing unit 32 executes a process based on the microcode 28 stored in the local memory 22. Similar to the embodiment, the operation mode of each command processing unit 32 can be switched at a desired timing. Therefore, it is possible to avoid a decrease in the parallelism of processing due to such rewriting of the microcode 28, thus avoiding a decrease in the parallelism of the processing and effectively preventing a decrease in the data processing capability of the entire apparatus. Can do.
  • FIG. 4 shows an information processing apparatus 40 according to the third embodiment.
  • the storage area of the local memory 42 of each instruction processing unit 41 is divided into two, and one of the divided storage areas (hereinafter, the divided individual storage areas are referred to as divided areas 42A and 42B).
  • the microcode 28 is stored in the divided area 42A, and when the process according to the microcode 6 from the instruction interpreter 3 is executed in the other divided area 42B, the microcode 28 stored in the local memory 42 is stored. Data 43 used in processing according to the code 28 is stored.
  • the information processing apparatus 40 having such a configuration, when reading the microcode 28 and the data 43 from the local memory 42, the reading of the microcode 28 and the data 43 does not compete with each other, and these are simultaneously read from the local memory 22. be able to. Therefore, according to the information processing apparatus 40, in addition to the effects obtained by the first embodiment, there is no contention for reading data and microcode 28, and therefore the information processing apparatus 1 of the first embodiment. As compared with the above, it is possible to obtain an effect that the processing can be executed more quickly.
  • FIG. 5 shows an information processing apparatus 50 according to the fourth embodiment.
  • the storage area of the local memory 52 of each instruction processing unit 51 is divided into at least three divided areas 52A to 52C, and at least one of the divided areas 52A to 52C is divided into at least one divided area 52A.
  • the instruction interpreter 3 can write the microcode 28.
  • the second microcode 28 can be freely updated. Therefore, according to the information processing apparatus 50, in addition to the effects obtained by the third embodiment, the instruction processing unit 51 for updating the microcode 28 stored in the local memory 52 of each instruction processing unit 51. Since the operation of stopping the process is not necessary, the utilization efficiency of the apparatus can be improved.
  • the present invention can be widely applied to information processing apparatuses having both SIMD mode and MIMD mode operation modes.

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)

Abstract

【課題】 処理の並列度の低下を回避し、装置全体としてのデータ処理能力の低下を有効に防止し得る情報処理装置及び方法を提案する。 【解決手段】 1回の命令で複数のデータの一部又は全部を並列的に処理する第1の動作モードと、複数のデータを当該データごとの命令に応じて並列して処理する第2の動作モードとを有する情報処理装置において、インストラクションメモリに記憶された命令を解釈し、当該命令に応じた第1のマイクロコードを作成する命令解釈部と、第1の動作モード時、命令解釈部から送信される第1のマイクロコードに応じた処理をそれぞれ実行する複数の命令処理部とを設け、各命令処理部が、それぞれ第2の動作モード時に処理すべきすべての第2のマイクロコードを予め保持し、命令解釈部からの指示に応じて動作モードを第2の動作モードに切り替え、保持した第2のマイクロコードに応じた異なる処理をそれぞれ実行するようにした。

Description

情報処理装置及び方法
 本発明は、情報処理装置及び方法に関し、特に、SIMD(Single Instruction/Multiple Data)方式及びMIMD(Multiple Instruction/Multiple Data)方式の双方の方式によりデータ処理可能な情報処理装置に適用して好適なものである。
 従来、コンピュータ装置におけるデータの並列処理方式としてSIMD方式及びMIMD方式がある。SIMD方式は、1回の命令で複数のデータの一部又は全部を並列的に処理する方式であり、MIMD方式は、複数のマイクロプロセッサを搭載した並列コンピュータにおいて、複数のマイクロプロセッサがそれぞれ異なるデータに対する異なる処理を並列的に行う方式をいう。
 ところで、SIMD方式は、同じ命令で複数のデータの一部又は全部を並列的に処理する方式であるため、個々のデータに対して異なる処理を施すことができない。このため、SIMD方式による処理の途中で個々のデータに対して異なる処理を施す必要がある場合には、個々のデータに対する処理を順番に行う方法が利用されている。ところが、この方法によれば、あるデータに対して処理を行っている間、他のデータに対する処理が行えないために、処理の並列度が低下するという問題がある。
 このような問題を解決するための手段として、近年、SIMD方式の動作モード(以下、これをSIMDモードと呼ぶ)と、MIMD方式の動作モード(以下、これをMIMDモードと呼ぶ)とを有し、動作モードをSIMDモード及びMIMDモード間で適宜切り替え得るようになされた並列演算装置が提案されている(特許文献1)。この特許文献1に開示された並列演算装置によれば、動作モードをSIMDモードからMIMDモードに切り替えることによって、個々のデータに対する異なる処理を並列的に行うことができるという利点がある。
特開平7-141304号公報
 ところで、かかる特許文献1に開示された並列演算装置では、個々のデータを並列処理する各演算回路に対し、MIMDモード時の命令をその都度メモリに書き込むようにして与える構成となっている。
 このため、並列処理すべきデータ数が莫大である場合には、個々の演算回路に対するMIMDモード時の命令の更新に多くの時間を要することとなり、例えばSIMDモード及びMIMDモード間の切り替えが短時間に頻発するような場合には、SIMDモード期間内での個々の演算回路に対するMIMDモード時の命令の更新が間に合わず、すべての演算回路に対する命令が更新されるまでの間、データの並列処理を行えなくなるという問題があった。
 またかかる特許文献1に開示された並列演算装置では、MIMDモード時において、個々の演算回路が異なるサイクル数の処理を実行する場合に、サイクル数が最も多い演算回路に合わせて、当該サイクル数が少ない演算回路にダミーの命令を与える必要があった。
 本発明は以上の点を考慮してなされたもので、処理の並列度の低下を回避し、装置全体としてのデータ処理能力の低下を有効に防止し得る情報処理装置及び方法を提案しようとするものである。
 かかる課題を解決するため本発明においては、1回の命令で複数のデータの一部又は全部を並列的に処理する第1の動作モードと、前記複数のデータを当該データごとの命令に応じて並列して処理する第2の動作モードとを有する情報処理装置において、前記命令を記憶するインストラクションメモリと、前記インストラクションメモリに記憶された前記命令を解釈し、当該命令に応じたコマンドである第1のマイクロコードを作成する命令解釈部と、前記第1の動作モード時、前記命令解釈部から送信される前記第1のマイクロコードに応じた処理をそれぞれ実行する複数の命令処理部とを備え、各前記命令処理部が、それぞれ前記第2の動作モード時に処理すべきすべての第2のマイクロコードを予め保持し、前記第2の動作モード時に連続して処理される複数の前記第2のマイクロコードのうちの最後に処理される前記第2のマイクロコードには特殊なコードが埋め込まれ、各前記命令処理部が、前記命令解釈部からの指示に応じて動作モードを前記第2の動作モードに切り替え、前記第2のマイクロコードに応じた異なる処理をそれぞれ実行し、前記特殊なコードが埋め込まれた前記第2のマイクロコードに応じた処理を実行し終えることにより前記第2の動作モードの処理を終了した場合に、他のすべての前記命令処理部が前記第2の動作モードの処理を終了するまで待機し、待機後、前記動作モードを前記第1の動作モードに切り替えるようにした。
 また本発明においては、1回の命令で複数のデータの一部又は全部を並列的に処理する第1の動作モードと、前記複数のデータを当該データごとの命令に応じて並列して処理する第2の動作モードとを有する情報処理装置で実行される情報処理方法において、前記情報処理装置は、前記命令を記憶するインストラクションメモリと、前記インストラクションメモリに記憶された前記命令を解釈し、当該命令に応じたコマンドである第1のマイクロコードを作成する命令解釈部と、前記第1の動作モード時、前記命令解釈部から送信される前記第1のマイクロコードに応じた処理をそれぞれ実行する複数の命令処理部とを有し、各前記命令処理部が、それぞれ前記第2の動作モード時に処理すべきすべての第2のマイクロコードを予め保持する第1のステップと、各前記命令処理部が、前記命令解釈部からの指示に応じて動作モードを前記第2の動作モードに切り替え、保持した前記第2のマイクロコードに応じた異なる処理をそれぞれ実行する第2のステップとを設け、前記第2の動作モード時に連続して処理される複数の前記第2のマイクロコードのうちの最後に処理される前記第2のマイクロコードには特殊なコードが埋め込まれ、前記第2のステップにおいて、各前記命令処理部が、前記特殊なコードが埋め込まれた前記第2のマイクロコードに応じた処理を実行し終えることにより前記第2の動作モードの処理を終了した場合に、他のすべての前記命令処理部が前記第2の動作モードの処理を終了するまで待機し、待機後、前記動作モードを前記第1の動作モードに切り替えるようにした。
 本情報処理装置及び情報処理方法によれば、各命令処理部がそれぞれ第2の動作モード時に処理すべき第2のマイクロコードの書き換えが不要であり、各命令処理部の動作モードの切り替えを所望するタイミングで行うことができる。従って、かかる第2のマイクロコードの書き換えに起因する処理の並列度の低下を回避することができる。
 また、この場合、第2の動作モード時に連続して処理される複数の第2のマイクロコードのうちの最後に処理される第2のマイクロコードには特殊なコードが埋め込まれており、各命令処理部が、当該特殊なコードが埋め込まれた第2のマイクロコードに応じた処理を実行し終えることにより第2の動作モードの処理を終了した場合に、他のすべての命令処理部が第2の動作モードの処理を終了するまで待機し、待機後、動作モードを第1の動作モードに切り替えるため、第2の動作モード時において、個々の命令処理部が異なるサイクル数の処理を実行する場合においても、サイクル数が最も多い命令処理部に合わせて、当該サイクル数が少ない命令処理部にダミーの命令を与える必要がなく、その分、個々の命令処理部における記憶リソースの浪費を抑えることができる。
 本発明によれば、処理の並列度の低下を回避し、装置全体としてのデータ処理能力の低下を有効に防止し得る情報処理装置及び方法を実現できる。
第1の実施の形態による情報処理装置の構成を示すブロック図である。 命令解釈部から出力されるマイクロコードの概略構成を示す概念図である。 第2の実施の形態による情報処理装置の構成を示すブロック図である。 第3の実施の形態による情報処理装置の構成を示すブロック図である。 第4の実施の形態による情報処理装置の構成を示すブロック図である。
 以下図面について、本発明の一実施の形態を詳述する。
(1)第1の実施の形態
 図1において、1は全体として本実施の形態による情報処理装置を示す。この情報処理装置1は、動作モードとしてSIMDモード及びMIMDモードを有しており、インストラクションメモリ2、命令解釈部3及び複数の命令処理部4を備えて構成される。
 インストラクションメモリ2は、ユーザやアプリケーションなどから与えられた命令を記憶保持するために利用されるメモリであり、各命令処理部4が実行すべき処理内容を規定した複数の命令5が格納される。
 命令解釈部3は、ハードウェア又はソフトウェアから構成される機能部である。命令解釈部3は、インストラクションメモリ2に格納された命令5を所定のサイクル周期で順番に読み出し、読み出した命令5を解釈して、当該命令5に応じたコマンドであるマイクロコード6を作成する。そして命令解釈部3は、作成したマイクロコード6を各命令処理部4にそれぞれ送信する。
 図2は、命令解釈部3により作成されるマイクロコード6の構成例を示す。この図2に示すように、マイクロコード6は、命令実行用コード10、セットフラグ11と、MIMDコードアドレス12及びMIMDサイクル数13を含んで構成される。
 命令実行用コード10は、命令処理部4が実行すべき処理の内容を指定したコードであり、セットフラグ11は、当該セットフラグ11に続くMIMDコードアドレス12及びMIMDサイクル数13を取り込むべきか否かを命令処理部4に指示するためのフラグである。命令解釈部3は、通常時にはセットフラグ11を偽(以下、「0」とする)に設定し、MIMDモードに切り替えた最初のマイクロコード6においてのみセットフラグ11を真(「1」)にセットする。
 MIMDコードアドレス12は、後述のように命令処理部4内のローカルメモリ22に格納されたマイクロコード28のうち、当該命令処理部4がMIMDモードへの切替え時に最初に実行すべきマイクロコード28が格納されているローカルメモリ22上のアドレスを示す情報である。
 さらにMIMDサイクル数13は、命令処理部4が1回のMIMDモードで連続して処理すべきマイクロコード28の数を表す情報である。個々の命令処理部4がMIMDモードで処理するマイクロコード28の数が異なる場合、その最大値がMIMDサイクル数13として設定される。
 図1に戻って、命令処理部4は、アドレスポインタメモリ20、アドレスポインタ更新部21、ローカルメモリ22、カウンタメモリ23、MIMDサイクル数更新部24、比較器25、マイクロコード選択器26及び命令実行部27から構成される。
 アドレスポインタメモリ20は、命令解釈部3から与えられたマイクロコード6に含まれるMIMDコードアドレス12(図2)を記憶するために用いられるメモリである。アドレスポインタメモリ20は、マイクロコード6のセットフラグ11(図2)が「0」のときには何もせず、当該セットフラグ11が「1」のときに、そのマイクロコード6に含まれるMIMDコードアドレス12を記憶し、記憶したMIMDコードアドレス12をローカルメモリ22に通知する。
 アドレスポインタ更新部21は、アドレスポインタメモリ20に格納されたMIMDコードアドレスを更新する回路である。アドレスポインタ更新部21は、後述のようにローカルメモリ22に格納されているマイクロコード28のプログラムカウンタ(図示せず)を保持している。そしてアドレスポインタ更新部21は、アドレスポインタメモリ20がMIMDコードアドレスを記憶すると、図示しない発振器から与えられるクロックのカウントを開始し、命令実行部27が1つのマイクロコード28を処理する1サイクル期間分のクロック数をカウントするごとに、アドレスポインタメモリ20に格納されているMIMDコードアドレスの値を、ローカルメモリ22に格納されているマイクロコード28のうちの次に命令実行部27が実行すべきマイクロコード28が格納されているアドレスに更新する。
 ローカルメモリ22は、例えば半導体メモリから構成され、その命令処理部4がMIMDモード時に実行すべき処理内容を規定したすべてのマイクロコード28が予め格納される。そしてローカルメモリ22は、当該ローカルメモリ22上のアドレスポインタメモリ20から通知されたMIMDコードアドレスに格納されているマイクロコード28を読み出し、読み出したマイクロコード28をマイクロコード選択器26の第2の入力端に送信する。
 なお本実施の形態の場合、命令処理部4のローカルメモリ22に格納された複数のマイクロコード28であって、MIMDモード時に連続して処理される複数のマイクロコード28のうちの最後に処理されるマイクロコード28には、その旨を表す特殊なコード(以下、これをMIMDモード終了コード)が埋め込まれる。
 カウンタメモリ23は、命令解釈部3からのマイクロコード6の数をカウントするために用いられるメモリである。カウンタメモリ23は、マイクロコード6のセットフラグ11(図2)が「0」のときには何もせず、当該セットフラグ11が「1」のときに、そのマイクロコード6に含まれるMIMDサイクル数13(図2)を記憶し、記憶したMIMDサイクル数13を比較器25に通知する。
 またMIMDサイクル数更新部24は、カウンタメモリ23に格納されたMIMDサイクル数を更新する回路である。MIMDサイクル数更新部24は、カウンタメモリ23がMIMDサイクル数13を記憶すると、上述の発振器から与えられるクロックのカウントを開始し、命令実行部27が1つのマイクロコード28を処理する1サイクル期間分のクロック数をカウントするごとに、カウンタメモリ23に格納されているMIMDサイクル数を、「1」ずつ減少させる。
 比較器25は、カウンタメモリ23から通知されるMIMDサイクル数と、予め設定された比較基準値(ここでは「0」)とを比較し、通知されたMIMDサイクル数が比較基準値と一致しない場合には論理レベルが「0」、通知されたMIMDサイクル数が比較基準値と一致した場合には論理レベルが「1」の切替え制御信号をマイクロコード選択器26に送信する。
 マイクロコード選択器26は、例えばスイッチから構成される。このマイクロコード選択器26の第1の入力端には、命令解釈部3から送信されたマイクロコード6が与えられる。そしてマイクロコード選択器26は、比較器25から与えられる切替え制御信号の論理レベルが「0」のときには第1の入力端に与えられる命令解釈部3からのマイクロコード6を選択して命令実行部27に送信し、比較器25から与えられる切替え制御信号の論理レベルが「1」のときには第2の入力端に与えられるローカルメモリ22から読み出されたマイクロコード28を選択して命令実行部27に送信する。
 命令実行部27は、図示しないレジスタや演算器を用いて、マイクロコード選択器26から与えられたマイクロコード6,28に従った処理を実行し、処理結果を図示しない次段の処理部に出力する。
 また命令実行部27は、マイクロコード選択器26から与えられたマイクロコード28から上述のMIMDモード終了コードを検出した場合には、当該マイクロコード28に従った処理を実行後、アドレスポインタ更新部21を制御してアドレスポインタメモリ20に格納されているMIMDコードアドレスの更新を停止させる一方、この後、次のマイクロコードがマイクロコード選択器26から与えられるまで処理を停止する。
 以上の構成を有する情報処理装置1では、SIMDモード時、命令解釈部3から各命令処理部4にそれぞれ送信されるマイクロコード6のセットフラグ11が「0」にセットされる。このとき各命令処理部4では、カウンタメモリ23にMIMDサイクル数13が設定されず、このため論理レベルが「0」の切替え制御信号が比較器25からマイクロコード選択器26に与えられる。この結果、マイクロコード選択器26において命令解釈部3からのマイクロコード6が選択され、これが命令実行部27に与えられる。従って、SIMDモード時には、各命令処理部4において、命令解釈部3から与えられた同一のマイクロコード6に従って同一の命令がそれぞれ実行される。
 一方、SIMDモードからのMIMDモードへの切替え時、命令解釈部3からのマイクロコード6のセットフラグが「1」に設定される。このとき各命令処理部4では、アドレスポインタメモリ20がマイクロコード6内のMIMDコードアドレス12を記憶すると共に、カウンタメモリ23が当該マイクロコード6内のMIMDサイクル数13を記憶する。かくして、この後、カウンタメモリ23に保持されているMIMDサイクル数が「0」になるまで論理レベルが「1」の切替え制御信号が比較器25からマイクロコード選択器26に与えられる。この結果、カウンタメモリ23に格納されたMIMDサイクル数の値が「0」になるまで、マイクロコード選択器26においてローカルメモリ22から読み出されたマイクロコード28が選択され、これが命令実行部27に与えられる。従って、MIMDモード時には、各命令処理部4において、その命令処理部4のローカルメモリ22に格納されたマイクロコード28に従った異なる処理がそれぞれ実行される。
 この際、命令実行部27は、MIMDモード終了コードが格納されたマイクロコード28を受信すると、アドレスポインタ更新部21を制御することによりアドレスポインタメモリ20に格納されたMIMDコードアドレスの更新を停止させると共に、その後、次のマイクロコードを受信するまで処理を停止する。従って、MIMDモード時、個々の命令処理部4において実行されるサイクル数が異なる場合、最もサイクル数が多い命令処理部4の処理が終了するまで他の命令処理部4は待機する。
 なお命令解釈部3は、各命令処理部4の動作モードがMIMDモードに切り替えられている間、引き続き所定のサイクル周期でマイクロコード6を各命令処理部4に送信するが、このマイクロコード6における命令実行用コード10(図2)として意味のないダミーのコードが設定され、当該マイクロコード6におけるセットフラグ11として「0」が設定される。
 この後、各命令処理部4において、カウンタメモリ23に保持されているMIMDサイクル数が「0」になると、比較器25からマイクロコード選択器26に与えられる切替え制御信号の論理レベルが「1」から「0」に切り替わる。この結果、マイクロコード選択器26において選択されるマイクロコードが再び命令解釈部3からのマイクロコード6に切り替えられる。また命令解釈部3は、セットフラグ11を「1」に設定したマイクロコード6を各命令処理部4に送信後、当該マイクロコード6に格納したMIMDサイクル数13分のサイクル期間が経過すると、SIMDモードで実行すべき命令実行用コードを格納したマイクロコード6の各命令処理部4への送信を再開する。これにより各命令処理部4においてSIMDモードによる処理が再開される。
 このように本情報処理装置1では、MIMDモード時に処理すべきすべてのマイクロコード28を各命令処理部4がそれぞれ自己のローカルメモリ22内に保持しているため、各命令処理部4の動作モードの切り替えを所望するタイミングで行うことができる。従って、かかるマイクロコード28の書き換えに起因する処理の並列度の低下を回避することができ、かくして処理の並列度の低下を回避し、装置全体としてのデータ処理能力の低下を有効に防止することができる。
 また本情報処理装置1では、MIMDモード時に連続して処理される複数のマイクロコード28のうちの最後に処理されるマイクロコード28にはMIMDモード終了コードが埋め込まれており、各命令処理部4が、当該MIMDモード終了コードが埋め込まれたマイクロコード28に応じた処理を実行し終えることによりMIMDモードの処理を終了した場合に、他のすべての命令処理部4がMIMDモードの処理を終了するまで待機し、待機後、動作モードをSIMDモードに切り替えるため、MIMDモード時において、個々の命令処理部4が異なるサイクル数の処理を実行する場合においても、サイクル数が最も多い命令処理部4に合わせて、当該サイクル数が少ない命令処理部4のローカルメモリ22にダミーのマイクロコード28を格納しておく必要がなく、その分、個々の命令処理部4におけるローカルメモリ22の浪費を抑えることができる。
(2)第2の実施の形態
 図1との対応部分に同一符号を付して示す図3は、第2の実施の形態による情報処理装置30を示す。この情報処理装置30は、命令解釈部31の構成と、命令処理部32がアドレスポインタメモリ20、アドレスポインタ更新部21、ローカルメモリ22、レジスタ33、マイクロコード選択器26及び命令実行部34から構成される点と、終了判定部35が設けられている点とが第1の実施の形態の情報処理装置1と相違する。
 実際上、命令解釈部31は、インストラクションメモリ2に格納された命令5を所定のサイクル周期で順番に読み出し、読み出した命令5を解釈して、当該命令5に応じたコマンドであるマイクロコード6を作成する。そして命令解釈部31は、作成したマイクロコード6を各命令処理部4にそれぞれ送信する。
 この際、命令解釈部31は、SIMDモード時にはマイクロコード6のセットフラグ11(図2)を「0」に設定し、MIMDモード時には当該セットフラグ11を「1」に設定する。また命令解釈部31は、マイクロコード6のセットフラグ11を「1」に設定した後は、後述のように終了判定部35から与えられる切替え制御信号の論理レベルが「0」となるまで、マイクロコード6の命令実行用コード10(図2)として意味のないダミーのコードを設定すると共に、セットフラグ11として「1」を設定する。
 命令処理部32のレジスタ33は、命令解釈部31からマイクロコード6が与えられるごとに当該マイクロコード6のセットフラグ11(図2)の値を取り込んで記憶し、記憶したセットフラグ11と同じ論理レベルのモード判定信号を終了判定部35に送信する。従って、SIMDモード時には、論理レベル「0」のモード判定信号がレジスタ33から終了判定部35に送信され、MIMDモード時には、論理レベル「1」のモード判定信号がレジスタ33から終了判定部35に送信される。
 終了判定部35は、各命令処理部32とそれぞれ対応させた入力端を有するオア回路から構成される。そして終了判定部35は、各命令処理部32のレジスタ33からそれぞれ与えられるモード判定信号に基づく切替え制御信号を各命令処理部32のマイクロコード選択器26と、命令解釈部31とにそれぞれ送信する。従って、通常時には論理レベル「0」の切替え制御信号が各命令処理部32のマイクロコード選択器26と命令解釈部31とにそれぞれ与えられ、少なくとも1つの命令処理部32における動作モードがMIMDモードに切り替えられたときに論理レベル「1」の切替え制御信号が各命令処理部32のマイクロコード選択器26と命令解釈部31とにそれぞれ与えられることになる。
 マイクロコード選択器26は、終了判定部35からの切替え制御信号の論理レベルに基づいて、上述のように切替え制御信号の論理レベルが「0」のときには、第1の入力端に与えられる命令解釈部31からのマイクロコード6を選択して命令実行部34に出力する一方、切替え制御信号の論理レベルが「1」のときには、第2の入力端に与えられるローカルメモリ22から読み出されたマイクロコード28を選択して命令実行部34に出力する。
 命令実行部34は、第1の実施の形態の命令実行部27(図1)と同様に、図示しないレジスタや演算器を用いて、マイクロコード選択器26から与えられたマイクロコードに従った処理を実行し、処理結果を図示しない次段の処理部に出力する。
 また命令実行部34は、マイクロコード選択器26から与えられたマイクロコード28から上述のMIMDモード終了コードを検出した場合には、当該マイクロコード28に従った処理を実行後、アドレスポインタ更新部21を制御してアドレスポインタメモリ20に格納されているMIMDコードアドレスの更新を停止させると共に、レジスタ33に保持されている値を「0」に更新する。また命令実行部34は、この後、次のマイクロコードが与えられるまで処理を停止する。
 かくして、すべての命令処理部32の命令実行部34においてMIMDモードの処理が終了すると、終了判定部35に入力する各命令処理部32からのモード判定信号の論理レベルがすべて「0」となり、終了判定部35から出力される切替え制御信号の論理レベルが「1」から「0」に切り替わる。この結果、各命令処理部32のマイクロコード選択器26において選択されるマイクロコードが、ローカルメモリ22から読み出したマイクロコード28から、命令解釈部31からのマイクロコード6に切り替えられる。
 以上の構成を有する本実施の形態による情報処理装置30では、SIMDモード時、命令解釈部31からのマイクロコード6のセットフラグ11(図2)が「0」に設定されるため、各命令処理部32のレジスタ33から終了判定部35に対して論理レベルが「0」のモード判定信号がそれぞれ与えられる。従って、終了判定部35から各命令処理部32のマイクロコード選択器26に与えられる切替え制御信号の論理レベルも「0」となり、この結果、マイクロコード選択器26において、命令解釈部31からのマイクロコード6が選択されて命令実行部34に与えられる。よって、各命令処理部32において、命令解釈部31から与えられた同一のマイクロコード6に従って同一の命令がそれぞれ実行される。
 一方、MIMDモード時、命令解釈部31からのマイクロコード6のセットフラグ11が「1」に設定されるため、各命令処理部32のレジスタ33から終了判定部35にそれぞれ与えられるモード判定信号の論理レベルが「1」に切り替わる。従って、この場合、終了判定部35から各命令処理部32のマイクロコード選択器26に与えられる切替え制御信号の論理レベルも「1」に切り替わり、この結果、マイクロコード選択器26において、ローカルメモリ22から読み出したマイクロコード28が選択されて命令実行部34に与えられる。よって、MIMDモード時には、各命令処理部32において、その命令処理部32のローカルメモリ22に格納されたマイクロコード28に従った異なる処理がそれぞれ実行される。
 この後、すべての命令処理部32においてMIMDモードの処理が終了すると、各命令処理部32の命令実行部34がそれぞれレジスタ33に「0」を設定するため、これらのレジスタ33から終了判定部35に送信されるモード判定信号の論理レベルが「0」に切り替わる。従って、この場合、終了判定部35から各命令処理部32のマイクロコード選択器26に与えられる切替え制御信号の論理レベルも「0」に切り替わり、この結果、マイクロコード選択器26において、命令解釈部31からのマイクロコード6が選択されて命令実行部34に与えられる。これにより各命令処理部32における動作モードがMIMDモードからSIMDモードに戻される。
 このように本実施の形態の情報処理装置30では、MIMDモード時には、各命令処理部32において、ローカルメモリ22に格納されたマイクロコード28に基づいて処理が実行されるため、第1の実施の形態と同様に、各命令処理部32の動作モードの切り替えを所望するタイミングで行うことができる。従って、かかるマイクロコード28の書き換えに起因する処理の並列度の低下を回避することができ、かくして処理の並列度の低下を回避し、装置全体としてのデータ処理能力の低下を有効に防止することができる。
(3)第3の実施の形態
 図1との対応部分に同一符号を付した図4は、第3の実施の形態による情報処理装置40を示す。この情報処理装置40では、各命令処理部41のローカルメモリ42の記憶領域が2分割され、分割された記憶領域(以下、分割された個々の記憶領域を分割領域42A,42Bと呼ぶ)の一方の分割領域42A内にマイクロコード28が格納されると共に、他方の分割領域42B内に命令解釈部3からのマイクロコード6に従った処理を実行する際や、ローカルメモリ42に格納されているマイクロコード28に従った処理の際に使用するデータ43が格納されている。
 このような構成の情報処理装置40では、ローカルメモリ42からマイクロコード28及びデータ43を読み出す際に、これらマイクロコード28及びデータ43の読み出しが競合することがなく、これらを同時にローカルメモリ22から読み出すことができる。従って、本情報処理装置40によれば、第1の実施の形態により得られる効果に加えて、かかるデータ及びマイクロコード28の読み出しの競合がない分、第1の実施の形態の情報処理装置1と比してより迅速に処理を実行し得るという効果を得ることができる。
(4)第4の実施の形態
 図1との対応部分に同一符号を付した図5は、第4の実施の形態による情報処理装置50を示す。この情報処理装置50では、各命令処理部51のローカルメモリ52の記憶領域が少なくとも3つ以上の分割領域52A~52Cに分割され、これら分割領域52A~52Cのうちの少なくとも1つの分割領域52Aに命令解釈部3がマイクロコード28を書き込み得るようになされている。
 このような構成の情報処理装置50では、第2のマイクロコード28の更新を自在に行うことができる。従って、本情報処理装置50によれば、第3の実施の形態により得られる効果に加えて、各命令処理部51のローカルメモリ52に格納されたマイクロコード28を更新するために命令処理部51の処理を停止させるといった作業が不要となる分、装置の利用効率を向上させ得るという効果をも得ることができる。
(5)他の実施の形態
 なお上述の第1~第4の実施の形態においては、本発明による情報処理装置を図1、図3~図5のように構成するようにした場合について述べたが、本発明はこれに限らず、この他種々の構成を広く適用することができる。
 また上述の第1~第4の実施の形態においては、命令解釈部3,31により作成されるマイクロコード6のフォーマットを図2のようにするようにした場合について述べたが、本発明はこれに限らず、この他種々のフォーマットを広く適用することができる。
 本発明は、SIMDモード及びMIMDモードの双方の動作モードを有する情報処理装置に広く適用することができる。
 1,30,40,50……情報処理装置、2……インストラクションメモリ、3,31……命令解釈部、4,32,41,51……命令処理部、5……命令、6,28……マイクロコード、10……命令実行用コード、11……セットフラグ、12……MIMDコードアドレス、13……MIMDサイクル数、20……アドレスポインタメモリ、21……アドレスポインタ更新部、22,42,52……ローカルメモリ、23……カウンタメモリ、24……MIMDカウンタ数更新部、25……比較器、26……マイクロコード選択器、27,34……命令実行部、33……レジスタ、42A,42B,52A~52C……分割領域、43……データ。

Claims (8)

  1.  1回の命令で複数のデータの一部又は全部を並列的に処理する第1の動作モードと、前記複数のデータを当該データごとの命令に応じて並列して処理する第2の動作モードとを有する情報処理装置において、
     前記命令を記憶するインストラクションメモリと、
     前記インストラクションメモリに記憶された前記命令を解釈し、当該命令に応じたコマンドである第1のマイクロコードを作成する命令解釈部と、
     前記第1の動作モード時、前記命令解釈部から送信される前記第1のマイクロコードに応じた処理をそれぞれ実行する複数の命令処理部と
     を備え、
     各前記命令処理部は、
     それぞれ前記第2の動作モード時に処理すべきすべての第2のマイクロコードを予め保持し、
     前記第2の動作モード時に連続して処理される複数の前記第2のマイクロコードのうちの最後に処理される前記第2のマイクロコードには特殊なコードが埋め込まれ、
     各前記命令処理部は、
     前記命令解釈部からの指示に応じて動作モードを前記第2の動作モードに切り替え、前記第2のマイクロコードに応じた異なる処理をそれぞれ実行し、
     前記特殊なコードが埋め込まれた前記第2のマイクロコードに応じた処理を実行し終えることにより前記第2の動作モードの処理を終了した場合に、他のすべての前記命令処理部が前記第2の動作モードの処理を終了するまで待機し、待機後、前記動作モードを前記第1の動作モードに切り替える
     ことを特徴とする情報処理装置。
  2.  前記命令処理部は、
     前記第2の動作モード時、1サイクルごとに1つの前記第2のマイクロコードに応じた処理を実行し、
     前記命令解釈部は、
     各前記命令処理部において前記第2の動作モード時に連続してそれぞれ処理すべき前記第2のマイクロコードの数のうちの最大値を前記第2の動作モードのサイクル数として各前記命令処理部に通知し、
     各前記命令処理部は、
     保持した前記第2のマイクロコードに応じた処理を終了後、前記命令解釈部から通知された前記サイクル数のサイクルが経過するまで待機し、当該サイクル数のサイクルが経過後に動作モードを前記第1の動作モードに切り替える
     ことを特徴とする請求項1に記載の情報処理装置。
  3.  前記命令処理部は、
     前記第2の動作モード時、1サイクルごとに1つの前記第2のマイクロコードに応じた処理を実行し、
     前記命令解釈部は、
     前記第2の動作モード時、各前記命令処理部に対して前記第2のマイクロコードに応じた処理を実行すべきことを前記1サイクルごとに指示し、
     各前記命令処理部は、
     前記命令解釈部からの当該指示に基づいて、保持した前記第2のマイクロコードに応じた処理をそれぞれ実行し、当該前記第2のマイクロコードに応じた前記第2の動作モードの処理を終了した後には処理を停止し、
     前記命令解釈部は、
     すべての前記命令処理部が前記第2の動作モードの処理を終了した場合に、各前記命令処理部の動作モードを前記第1の動作モードに切り替える
     ことを特徴とする請求項1に記載の情報処理装置。
  4.  各前記命令処理部は、
     前記第2のマイクロコードを記憶保持するローカルメモリをそれぞれ備え、
     前記ローカルメモリの記憶領域が、前記第2のマイクロコードを格納する第1の領域と、前記第1又は第2のマイクロコードに応じた処理を実行するために必要なデータを格納するための第2の領域とに分割された
     ことを特徴とする請求項1に記載の情報処理装置。
  5.  前記ローカルメモリの記憶領域が、前記第1及び第2の領域に加えて、前記命令解釈部から与えられる前記第2のマイクロコードを格納するための第3の領域に分割された
     ことを特徴とする請求項4に記載の情報処理装置。
  6.  1回の命令で複数のデータの一部又は全部を並列的に処理する第1の動作モードと、前記複数のデータを当該データごとの命令に応じて並列して処理する第2の動作モードとを有する情報処理装置で実行される情報処理方法において、
     前記情報処理装置は、
     前記命令を記憶するインストラクションメモリと、
     前記インストラクションメモリに記憶された前記命令を解釈し、当該命令に応じたコマンドである第1のマイクロコードを作成する命令解釈部と、
     前記第1の動作モード時、前記命令解釈部から送信される前記第1のマイクロコードに応じた処理をそれぞれ実行する複数の命令処理部と
     を有し、
     各前記命令処理部が、それぞれ前記第2の動作モード時に処理すべきすべての第2のマイクロコードを予め保持する第1のステップと、
     各前記命令処理部が、前記命令解釈部からの指示に応じて動作モードを前記第2の動作モードに切り替え、保持した前記第2のマイクロコードに応じた異なる処理をそれぞれ実行する第2のステップと
     を備え、
     前記第2の動作モード時に連続して処理される複数の前記第2のマイクロコードのうちの最後に処理される前記第2のマイクロコードには特殊なコードが埋め込まれ、
     前記第2のステップにおいて、各前記命令処理部は、前記特殊なコードが埋め込まれた前記第2のマイクロコードに応じた処理を実行し終えることにより前記第2の動作モードの処理を終了した場合に、他のすべての前記命令処理部が前記第2の動作モードの処理を終了するまで待機し、待機後、前記動作モードを前記第1の動作モードに切り替える
     ことを特徴とする情報処理方法。
  7.  前記命令処理部は、
     前記第2の動作モード時、1サイクルごとに1つの前記第2のマイクロコードに応じた処理を実行し、
     前記第2のステップにおいて、
     前記命令解釈部は、各前記命令処理部において前記第2の動作モード時に連続してそれぞれ処理すべき前記第2のマイクロコードの数のうちの最大値を前記第2の動作モードのサイクル数として各前記命令処理部に通知し、
     各前記命令処理部は、保持した前記第2のマイクロコードに応じた前記第2の動作モードの処理を終了後、前記命令解釈部から通知された前記サイクル数のサイクルが経過するまで待機し、当該サイクル数のサイクルが経過後に動作モードを前記第1の動作モードに切り替える
     ことを特徴とする請求項6に記載の情報処理方法。
  8.  前記命令処理部は、
     前記第2の動作モード時、1サイクルごとに1つの前記第2のマイクロコードに応じた処理を実行し、
     前記第1のステップにおいて、
     前記命令解釈部は、前記第2の動作モード時、各前記命令処理部に対して前記第2のマイクロコードに応じた処理を実行すべきことを前記1サイクルごとに指示し、
     各前記命令処理部は、前記命令解釈部からの当該指示に基づいて、保持した前記第2のマイクロコードに応じた処理をそれぞれ実行し、当該前記第2のマイクロコードに応じた前記第2の動作モードの処理を終了した後には処理を停止し、
     前記命令解釈部は、すべての前記命令処理部が前記第2の動作モードの処理を終了した場合に、各前記命令処理部の動作モードを前記第1の動作モードに切り替える
     ことを特徴とする請求項6に記載の情報処理方法。
PCT/JP2014/056845 2014-03-14 2014-03-14 情報処理装置及び方法 WO2015136686A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/056845 WO2015136686A1 (ja) 2014-03-14 2014-03-14 情報処理装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/056845 WO2015136686A1 (ja) 2014-03-14 2014-03-14 情報処理装置及び方法

Publications (1)

Publication Number Publication Date
WO2015136686A1 true WO2015136686A1 (ja) 2015-09-17

Family

ID=54071163

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/056845 WO2015136686A1 (ja) 2014-03-14 2014-03-14 情報処理装置及び方法

Country Status (1)

Country Link
WO (1) WO2015136686A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0520283A (ja) * 1991-07-11 1993-01-29 Mitsubishi Electric Corp 並列データ処理装置
JPH0668053A (ja) * 1992-08-20 1994-03-11 Toshiba Corp 並列計算機
US6272616B1 (en) * 1998-06-17 2001-08-07 Agere Systems Guardian Corp. Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0520283A (ja) * 1991-07-11 1993-01-29 Mitsubishi Electric Corp 並列データ処理装置
JPH0668053A (ja) * 1992-08-20 1994-03-11 Toshiba Corp 並列計算機
US6272616B1 (en) * 1998-06-17 2001-08-07 Agere Systems Guardian Corp. Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths

Similar Documents

Publication Publication Date Title
CA3021412C (en) Compiler method
CA3021450C (en) Synchronization in a multi-tile processing array
CA3021414C (en) Instruction set
KR101660659B1 (ko) 멀티-스레딩된 프로세싱 시스템에서의 서브루틴들의 실행
US20190155328A1 (en) Synchronization in a multi-tile processing array
US11416440B2 (en) Controlling timing in computer processing
JP2010009247A (ja) 半導体装置、および、半導体装置によるデータ処理方法
JPS58149541A (ja) デ−タ処理装置
KR102145457B1 (ko) 방향 인디케이터
WO2015136686A1 (ja) 情報処理装置及び方法
JP2002152020A (ja) パルス信号生成装置
JP2009075875A (ja) カウンタ回路、動的再構成回路およびループ処理制御方法
CN114115092A (zh) 一种异构双核plc协同执行方法与装置
JP2010204913A (ja) ベクトル処理装置
JP2006146641A (ja) マルチスレッドプロセッサ及びマルチスレッドプロセッサの割込み方法
JPH0895898A (ja) ダイレクトメモリアクセス装置およびデータ転送装置
JPH0443298B2 (ja)
JP2011107955A (ja) データ演算装置の制御回路及びデータ演算装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14885762

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14885762

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP