WO2006057084A1 - 命令供給装置 - Google Patents

命令供給装置 Download PDF

Info

Publication number
WO2006057084A1
WO2006057084A1 PCT/JP2005/008429 JP2005008429W WO2006057084A1 WO 2006057084 A1 WO2006057084 A1 WO 2006057084A1 JP 2005008429 W JP2005008429 W JP 2005008429W WO 2006057084 A1 WO2006057084 A1 WO 2006057084A1
Authority
WO
WIPO (PCT)
Prior art keywords
instruction
buffer
processing unit
central processing
instruction sequence
Prior art date
Application number
PCT/JP2005/008429
Other languages
English (en)
French (fr)
Inventor
Satoshi Ogura
Original Assignee
Matsushita Electric Industrial Co., Ltd.
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 Matsushita Electric Industrial Co., Ltd. filed Critical Matsushita Electric Industrial Co., Ltd.
Priority to US11/720,011 priority Critical patent/US7822949B2/en
Priority to EP05737193A priority patent/EP1826667A4/en
Priority to JP2006546623A priority patent/JP4086885B2/ja
Publication of WO2006057084A1 publication Critical patent/WO2006057084A1/ja

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
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering

Definitions

  • the present invention relates to an instruction supply device that is interposed between a main storage device and a central processing unit and supplies an instruction read from the main storage device to the central processing unit.
  • the present invention relates to an instruction supply device that can supply an instruction even if access to a main storage device is omitted.
  • an instruction supply device that is interposed between a main storage device and a central processing unit and supplies instructions read from the main storage device to the central processing unit.
  • the instruction supply device has a loop instruction buffer and a normal instruction buffer in order to efficiently supply instructions read from the main storage device to the central processing unit.
  • a loop block instruction When a loop block instruction is supplied, access to the main storage device is omitted and the loop instruction buffer is supplied to the central processing unit (see, for example, Patent Document 1).
  • a "loop instruction buffer” is a buffer that stores loop blocks.
  • Loop block refers to a sequence of instructions repeatedly supplied by a loop.
  • the "normal instruction buffer” is a buffer that stores normal blocks.
  • Normal block refers to an instruction sequence other than a loop block.
  • Patent Document 1 JP-A 63-314644
  • the present invention has been made in view of the above problems, and an object thereof is to provide an instruction supply device that efficiently supplies an instruction sequence that forms a loop with a small amount of hardware.
  • an instruction supply device comprises: (a) an instruction supply device that supplies an instruction read from a main storage device to a central processing unit, and (b) the main statement Among the instruction sequences stored in the storage device, the first instruction sequence repeatedly supplied to the central processing unit is the first part of the first instruction sequence before being supplied again to the central processing unit.
  • a second buffer for storing a second partial instruction sequence following the first partial instruction sequence while supplying the partial instruction sequence of 1 to the central processing unit; and (d) the first partial instruction sequence When all of the above are supplied to the central processing unit, the second part stored in the second buffer Selecting means for supplying a subsequent instruction of the first partial instruction sequence from the partial instruction sequence to the central processing unit;
  • the instruction sequence of the loop block is stored in one buffer, it can be stored separately in two or more buffers, and unless all these buffers are updated, The instruction sequence stored in the buffer without being updated can be reused.
  • the instruction supply device is further supplied to the central processing unit other than (b) the instruction sequence stored in the main storage device other than the first instruction sequence.
  • a subsequent fourth partial instruction sequence is stored in the second buffer; (d) when the selection means supplies all of the third partial instruction sequence to the central processing unit, the second buffer;
  • the subsequent instruction of the third partial instruction sequence may be supplied to the central processing unit from the fourth partial instruction sequence stored in the central processing unit.
  • the second instruction sequence other than the first instruction sequence forming the loop is coupled to the buffer and the partial instruction sequence that is the first part of the first instruction sequence. It is possible to share the same instruction with a notch that stores the instruction sequence. In this case, an instruction sequence including a larger number of instructions can be efficiently supplied without adding a buffer.
  • the present invention may be realized not only as an instruction supply apparatus but also as a method for controlling an instruction supply apparatus (hereinafter referred to as an instruction supply method).
  • an LSI that incorporates a function provided by an instruction supply device (hereinafter referred to as an instruction supply function), an IP core that forms an instruction supply function in a programmable “logic” device such as an FPGA or CPLD (hereinafter referred to as an “IP core”).
  • IP core programmable “logic” device
  • command supply core or a recording medium that records the command supply core.
  • the instruction supply device of the present invention it is possible to omit the access to the main storage device and supply instructions efficiently even to a loop block having a capacity larger than that of the loop instruction buffer. it can.
  • a plurality of loop instruction buffers are provided, an increase in hardware amount can be suppressed.
  • the performance of execution processing in the central processing unit can be improved.
  • the frequency of access to the main storage device is reduced, and an increase in power consumption can be suppressed.
  • FIG. 1 is a diagram showing a configuration of an instruction supply device in the first embodiment.
  • FIG. 2 is a diagram showing a process performed when an instruction is supplied from the main memory in the instruction supply device according to the first embodiment.
  • FIG. 3 is a diagram showing an example of an instruction sequence stored in a main storage device.
  • FIG. 4A is a first diagram illustrating an operation example of the instruction supply apparatus according to the first embodiment.
  • FIG. 4B is a second diagram showing an operation example of the instruction supply apparatus in the first embodiment.
  • FIG. 4C is a third diagram showing an operation example of the instruction supply apparatus in the first embodiment.
  • FIG. 4D is a fourth diagram showing an operation example of the instruction supply device in the first embodiment.
  • FIG. 5A is a fifth diagram showing an operation example of the instruction supply apparatus in the first embodiment.
  • FIG. 5B is a sixth diagram illustrating an operation example of the instruction supply device according to the first exemplary embodiment.
  • FIG. 5C is a seventh diagram showing an operation example of the instruction supply apparatus in the first embodiment.
  • FIG. 5D is an eighth diagram illustrating an operation example of the instruction supply apparatus in the first embodiment.
  • FIG. 6A is a ninth diagram showing an operation example of the instruction supply apparatus in the first embodiment.
  • FIG. 6B is a tenth diagram illustrating an operation example of the instruction supply apparatus in the first embodiment.
  • FIG. 6C is an eleventh diagram showing an operation example of the instruction supply apparatus in the first embodiment.
  • FIG. 6D is a twelfth diagram showing an operation example of the instruction supply apparatus in the first embodiment.
  • FIG. 7A is a thirteenth diagram illustrating an operation example of the instruction supply apparatus according to Embodiment 1.
  • FIG. 7B is a fourteenth diagram showing an operation example of the instruction supply apparatus in the first embodiment.
  • FIG. 8 is a diagram showing a configuration of an instruction supply device according to the second embodiment.
  • Fig. 9 is a diagram showing processing when an instruction is etched from the main storage device in the instruction supply device according to the second embodiment.
  • FIG. 10A is a first diagram illustrating an operation example of the instruction supply apparatus according to the second embodiment.
  • FIG. 10B is a second diagram showing an operation example of the instruction supply apparatus in the second embodiment.
  • FIG. 10C is a third diagram showing an operation example of the instruction supply apparatus in the second embodiment.
  • FIG. 10D is a fourth diagram showing an operation example of the instruction supply apparatus in the second embodiment.
  • FIG. 10E is a fifth diagram illustrating an operation example of the instruction supply apparatus according to the second embodiment.
  • FIG. 10F is a sixth diagram illustrating an operation example of the instruction supply apparatus according to the second embodiment.
  • FIG. 10G is a seventh diagram illustrating an operation example of the instruction supply apparatus in the second embodiment.
  • FIG. 10H is an eighth diagram illustrating an operation example of the instruction supply apparatus according to the second embodiment.
  • FIG. 11A is a ninth diagram illustrating an operation example of the instruction supply apparatus according to the second embodiment.
  • FIG. 11B is a tenth diagram illustrating an operation example of the instruction supply apparatus in the second embodiment.
  • FIG. 11C is an eleventh diagram showing an operation example of the instruction supply apparatus in the second embodiment.
  • FIG. 11D is a twelfth diagram illustrating an operation example of the instruction supply apparatus according to the second embodiment.
  • FIG. 11E is a thirteenth diagram illustrating an operation example of the instruction supply apparatus in the second embodiment.
  • FIG. 11F is a fourteenth diagram illustrating an operation example of the instruction supply apparatus according to the second embodiment.
  • FIG. 11G is a fifteenth diagram illustrating an operation example of the instruction supply apparatus according to the second embodiment.
  • FIG. 11H is a sixteenth diagram illustrating an operation example of the instruction supply apparatus according to the second embodiment.
  • FIG. 12A is a seventeenth diagram showing an operation example of the instruction supply apparatus in the second embodiment.
  • FIG. 12B is an eighteenth diagram showing an operation example of the instruction supply apparatus in the second embodiment.
  • the instruction supply device accumulates an instruction read in advance in the main memory capacity via the memory interface in the buffer, and from the instruction sequence stored in the buffer. Provide instructions to the central processing unit.
  • an instruction sequence (hereinafter referred to as a normal block) other than an instruction sequence (hereinafter referred to as a loop block) for supplying repeated instructions by a loop is stored in the normal instruction buffer.
  • the loop block is divided and stored in the loop instruction buffer and the combining instruction buffer.
  • the “normal block” refers to a block other than the loop block in the instruction sequence stored in the main memory.
  • Loop block refers to a block that stores instructions to be repeatedly executed among a sequence of instructions stored in the main memory.
  • the instruction supply device 101 is connected to the microprocessor 100 in response to an instruction from the central processing unit 10 mounted together in the microprocessor 100. Instruction is read from the CPU and supplied to the central processing unit 10.
  • a memory interface 111 a normal instruction buffer 112, a loop instruction buffer 113, a loop instruction buffer 114, a combining instruction buffer 115, a selection circuit 116, and the like are provided.
  • the memory interface 111 reads an instruction from the main memory 1 in response to an instruction from the central processing unit 10, and reads the read instruction into a normal instruction buffer 112, a loop instruction buffer 113, and a loop instruction buffer 114. And stored in one of the coupling instruction buffers 115.
  • the normal instruction buffer 112 stores the instructions for which the normal block power is also read for four words. It is a buffer.
  • the loop instruction buffer 113 is a buffer for accumulating instructions that have been read by the loop block force for four words.
  • the loop instruction buffer 114 is a buffer for accumulating instructions read out by the loop block force for four words.
  • the coupling instruction buffer 115 is coupled to either the loop instruction buffer 113 or the loop instruction buffer 114. When linking to the loop instruction buffer 113, it accumulates in the loop instruction buffer 113 and accumulates the subsequent instructions in the instruction sequence for four words. When coupled to the loop instruction buffer 114, it is a buffer that accumulates in the loop instruction buffer 114 and accumulates the subsequent instructions of the instruction sequence for four words.
  • the selection circuit 116 determines whether or not the normal instruction buffer 112, the loop instruction buffer 113, the loop instruction buffer 114, and the combining instruction buffer 115! Select source.
  • step S101: Yes when the instruction supply device 101 receives an instruction from the central processing unit 10 (step S101: Yes), it waits for an empty cycle (step S102: Yes). Instruction buffer 112, loop instruction buffers 113 and 114, and join instruction buffer 115 If the designated buffer is empty (step S103: Yes), fetch the instruction from main memory 1 (Step S104).
  • the buffer is in the instruction waiting state after receiving the instruction.
  • an instruction sequence including normal blocks 121, 123, 125, a loop block 122, and a loop block 124 force is used as the instruction sequence stored in the main storage device 1. This will be described as an example.
  • the normal block 121 is composed of an instruction sequence (I # 1 to I # 7, LSI # 1) arranged from top to bottom.
  • I # 1 to 1 # 7 are instructions other than the loop store instruction and the branch instruction.
  • LSI # 1 is a loop store instruction indicating that the loop block 122 starts from I # 8.
  • the loop block 122 includes a sequence of instructions (1 # 8 to 1 # 13, BI, lined from top to bottom.
  • I # 8 to 1 # 13 are instructions other than the loop store instruction and the branch instruction.
  • BI # 1 is a conditional branch instruction that branches to I # 8.
  • the normal block 123 is an instruction sequence (1 # 14 to 1 # 21, LSI) lined up from top to bottom.
  • I # 14 to 1 # 21 are instructions other than the loop store instruction and the branch instruction.
  • LSI # 2 is a loop store instruction indicating that the loop block 124 starts from I # 22.
  • the loop block 124 includes an instruction sequence (I # 22 to I # 26, BI) arranged from top to bottom.
  • I # 22 to 1 # 26 are instructions other than the loop store instruction and the branch instruction.
  • BI # 2 is a conditional branch instruction that branches to I # 22.
  • the normal block 125 is composed of a sequence of instructions (1 # 27 to 1 # 32) lined up from top to bottom.
  • I # 27 to 1 # 32 are instructions other than the loop store instruction and the branch instruction.
  • the "loop store instruction” is an instruction indicating that a loop block starts from an address specified by label, for example, as indicated by the following instruction.
  • the buffer that stores the loop block force read instruction is specified by the buff value.
  • the buff value when the buff value is 0, it is accumulated in the loop instruction buffer 113, and when the buff value is 1, it is accumulated in the loop instruction buffer 114.
  • the central processing unit 10 instructs the instruction supply unit 101 to store the head portion of the loop block 122 in the loop instruction buffer 113. To do.
  • the central processing unit 10 performs processing according to the following cases (1) to (6) when executing the instruction sequence (see FIG. 3) given as an example.
  • the central processing unit 10 instructs the memory interface 111 to store in the normal instruction buffer 112 when executing the instruction of the normal block. Further, it instructs the selection circuit 116 to select the normal instruction buffer 112 as the instruction supply source.
  • the central processing unit 10 selects that the instruction buffer 115 for coupling is selected as the supply source of the subsequent instruction when all the instructions are supplied.
  • the central processing unit 10 executes the supplied instruction, except for the case where it is repeatedly supplied, the central processing unit 10 stores the instruction sequence stored in the combination instruction buffer 115. Instructs the memory interface 111 to store subsequent instructions in the normal instruction buffer 112.
  • the central processing unit 10 executes a branch instruction and branches to an address specified by the branch instruction, the central processing unit 10 accumulates the instruction specified by the address and loops The selection circuit 116 is instructed to select the instruction buffer for use. On the other hand, when all the instructions are supplied from the combining instruction buffer 115 without branching, the selection circuit 116 is instructed to select the normal instruction buffer 112 as the supply source of the subsequent instruction. [0064] Next, the operation of the instruction supply device 101 will be described.
  • each component behaves as follows in response to an instruction from the central processing unit 10.
  • the memory interface 111 reads an instruction from the main storage device 1, and reads the instruction into any of the normal instruction buffer 112, the loop instruction buffer 113, the loop instruction buffer 114, and the combining instruction buffer 115. Accumulate.
  • the selection circuit 116 selects one of the normal instruction buffer 112, the loop instruction buffer 113, the loop instruction buffer 114, and the combining instruction buffer 115 as an instruction supply source.
  • the buffer selected as the instruction supply source supplies the instruction stored in the buffer to the central processing unit 10 via the selection circuit 116.
  • the instruction supply device 101 performs processing according to the following cases (1) to (12).
  • the central processing unit 10 executes the instruction of the normal block 121, the central processing unit 10 transfers the instruction sequence (I # 1 to 1 # 7, LSI # 1) of the normal block 121 to the normal instruction buffer 112.
  • the memory interface 111 is instructed to store the data.
  • the selection circuit 116 is instructed to select the normal instruction buffer 112 as the instruction supply source.
  • the memory interface 111 accesses the main storage device 1 and reads out the instruction sequence (I # 1 to 1 # 7, LSI # 1) from the main storage device 1, and then the normal instruction buffer 112. Accumulate in Further, the selection circuit 116 selects the normal instruction buffer 112 as an instruction supply source. Then, the normal instruction buffer 112 supplies the instruction sequence (I # 1 to 1 # 7, LSI # 1) to the central processing unit 10 via the selection circuit 116 (see FIG. 4A).
  • the memory interface 111 accesses the main storage device 1, reads the instruction sequence (I # 8 to 1 # 14) from the main storage device 1, and stores it in the normal instruction buffer 112. Further, the selection circuit 116 selects the normal instruction buffer 112 as an instruction supply source. Then, the normal instruction buffer 112 supplies the instruction sequence (1 # 8 to BI # 1) to the central processing unit 10 via the selection circuit 116. At the same time, the instruction sequence (I # 8 to I # 11) at the head of the loop block 122 specified by the loop store instruction (LSI # 1) is read in the background, and the read instruction sequence (I # 8 to I # 11) is stored in the loop instruction buffer 113 (see FIGS. 4B and 4C;).
  • the central processing unit 10 executes the branch instruction (BI # 1) and branches to the start address of the loop block 122, the central processing unit 10 stores the instruction sequence ( The memory interface 111 is instructed to store the subsequent instructions (I # 12 to 1 # 14) of I # 8 to I # 11) in the coupling instruction buffer 115. Then, the selection circuit 116 is instructed to select the loop instruction notch 113 as the instruction supply source.
  • the memory interface 111 accesses the main storage device 1, reads out the instruction sequence (I # 12 to 1 # 14) from the main storage device 1, and stores it in the combining instruction buffer 115. Further, the selection circuit 116 selects the loop instruction buffer 113 as an instruction supply source. Then, the loop instruction buffer 113 supplies the instruction sequence (I # 8 to I # 11) to the central processing unit 10 via the selection circuit 116 (see FIG. 4D).
  • the selection circuit 116 selects the coupling instruction buffer 115 as an instruction supply source.
  • Binding instruction buffer 115 supplies the instruction sequence (1 # 12-1 # 14) to the central processing unit 10 via the selection circuit 116 (see FIG. 5A.) 0 (5)
  • the central processing unit 10 completes the accumulation of instructions in the coupling instruction buffer 115, the central processing unit 10 accumulates the instruction sequence (I # 12 to 1 # 14 in the coupling instruction buffer 115). ) To the memory interface 111 to store the subsequent instructions (1 # 15 to 1 # 17) in the normal instruction buffer 112.
  • the memory interface 111 accesses the main storage device 1, reads out the instruction sequence (I # 15 to 1 # 18) from the main storage device 1, and stores it in the normal instruction buffer 112 ( (See Figure 5B.)
  • the central processing unit 10 does not execute the branch instruction (BI # 1) and branch to the start address of the loop block 122.
  • the selection circuit 116 is instructed to select the normal instruction buffer 112 as the supply source of the subsequent instruction.
  • the selection circuit 116 selects the normal instruction buffer 112 as an instruction supply source. Then, the normal instruction buffer 112 supplies the instruction sequence (I # 15 to 1 # 18) to the central processing unit 10 through the selection circuit 116 (see FIG. 5C).
  • the memory interface 111 accesses the main storage device 1 and reads out the instruction sequence (I # 19 to 1 # 21, LSI # 2) from the main storage device 1 to read the normal instruction buffer 112. Accumulate on. Further, the selection circuit 116 selects the normal instruction buffer 112 as an instruction supply source. Then, the normal instruction buffer 112 supplies an instruction string (I # 19 to 1 # 21, LSI # 2) to the central processing unit 10 via the selection circuit 116 (see FIG. 5D).
  • the central processing unit 10 executes the instruction of the loop block 124 except when it is repeatedly supplied by a branch instruction.
  • the central processing unit 10 uses the instruction string (I # 22 to 1 # 28) as a normal instruction. Instructs the memory interface 111 to store in the buffer 112. Then, the selection circuit 116 is instructed to select the normal instruction buffer 112 as the instruction supply source. Furthermore, the central processing unit 10 executes the loop store instruction (LSI # 2) when executing the loop store instruction (LSI # 2).
  • the buff value of the instruction (LSI # 2) is 1, the instruction sequence (I # 22 to 1 # 25) at the beginning of the loop block 124 specified by the loop store instruction (LSI # 2) is used as the loop instruction buffer. Instruct the memory interface 111 to store the data in 114.
  • the memory interface 111 accesses the main storage device 1, reads the instruction sequence (I # 22 to 1 # 25) from the main storage device 1, and stores it in the normal instruction buffer 112. Further, the selection circuit 116 selects the normal instruction buffer 112 as an instruction supply source. Then, the normal instruction buffer 112 supplies an instruction sequence (I # 22 to 1 # 25) to the central processing unit 10 via the selection circuit 116. At the same time, the instruction sequence (I # 22 to 1 # 25) at the head of the loop block 124 specified by the loop store instruction (LSI # 2) is read in the background, and the read instruction sequence (I # 22 to 1) # 25) is stored in the loop instruction buffer 114 (see Fig. 6A and Fig. 6B). 0
  • the memory interface 111 accesses the main storage device 1, reads out the instruction string (I # 26 to 1 # 28) from the main storage device 1, and stores it in the combining instruction buffer 115. Further, the selection circuit 116 selects the loop instruction buffer 113 as an instruction supply source. Its to the loop instruction buffer 114 supplies the instruction sequence to (1 # 22-1 # 25) to the central processing unit 10 via the selection circuit 116 (see Ji FIG.) 0
  • the selection circuit 116 selects the coupling instruction buffer 115 as an instruction supply source.
  • Binding instruction buffer 115 supplies the instruction sequence (1 # 26-1 # 28) to the central processing unit 10 via the selection circuit 116 ( Figure 60 reference.) 0
  • the memory interface 111 accesses the main storage device 1 to read out the instruction sequence (I # 29 to 1 # 32) from the main storage device 1 and store it in the normal instruction buffer 112 ( (See Figure 7A.)
  • the central processing unit 10 does not execute the branch instruction (BI # 2) and branch to the start address of the loop block 124, but all instructions (I # 26 to 1 from the combination instruction buffer 115).
  • # 28 the selection circuit 116 is instructed to select the normal instruction buffer 112 as the supply source of the subsequent instruction.
  • the selection circuit 116 selects the normal instruction buffer 112 as an instruction supply source. Then, the normal instruction buffer 112 supplies the instruction sequence (I # 29 to 1 # 32) to the central processing unit 10 via the selection circuit 116 (see FIG. 7B).
  • the instruction sequence of the loop block is divided into two or more buffers as compared with the case where the instruction sequence of the loop block is stored in one buffer. As long as all of these buffers are not updated, the instruction sequence stored in the buffer without being updated can be reused. By storing the latter half of the loop in the buffer in the background when the loop is executed, even if the entire loop is not always held in the buffer, it is equivalent to the state where all the loop is held in the buffer, and efficient. Instructions can be supplied.
  • instructions for 8 words are stored in half in two buffers, and even if one of the buffers is updated, if another buffer is not updated, the other buffer is not updated.
  • the instructions for 4 words stored in can be reused. It is also possible to shorten the time for accessing the main storage device by simply reading the updated 4-word instruction from the main storage device without reading the 8-word instruction from the main storage device again.
  • the loop block instruction is supplied without accessing the main memory. be able to.
  • another loop instruction buffer is used instead of the combining instruction buffer, the main memory device is accessed when repeatedly supplying a loop block of up to eight words. Loop block instructions can be supplied without
  • Embodiment 2 according to the present invention will be described with reference to the drawings. Note that the description of the same configuration as that of Embodiment 1 is omitted.
  • the instruction supply device is different from the instruction supply device 101 (see FIG. 1) in that it does not include the combining instruction buffer 115, but instead includes the normal instruction buffer 112. The difference is that a normal instruction buffer that also serves as the combining instruction buffer 115 is provided.
  • the normal instruction buffer functions like the normal instruction buffer 112 when supplying a normal block instruction, and supplies a loop block instruction. Functions like the combining instruction buffer 115.
  • the instruction supply device 201 is different from the instruction supply device 101 (see FIG. 1) in the following points (1) to (5).
  • a memory interface 211 is provided instead of the memory interface 111.
  • the memory interface 211 is a main storage device.
  • a normal instruction buffer 212 is provided instead of the normal instruction buffer 112.
  • the normal instruction buffer 212 When supplying normal block instructions, the normal instruction buffer 212 accumulates instructions for which four normal block powers have been read, like the normal instruction buffer 112, for four words. Further, when supplying instructions of the loop block, as in the combining instruction buffer 115, the instruction is stored in the loop instruction buffer 213, and the subsequent instructions in the instruction sequence are stored for four words.
  • a selection circuit 216 is provided instead of the selection circuit 116.
  • the selection circuit 216 receives the normal processing buffer 212 in response to an instruction from the central processing unit 10
  • One of the loop instruction buffers 213 is selected as the instruction supply source.
  • a threshold register 213 is newly provided.
  • the threshold register 213 indicates that the normal instruction buffer 212 is supplying a loop block instruction.
  • the threshold value referred to when determining whether or not the capacity of the free area of the normal instruction buffer 212 has reached a predetermined capacity is held.
  • the normal instruction buffer 212 is supplying the instruction following the instruction sequence stored in the loop instruction buffer 113 (step S201: Yes).
  • the new command is not stored until the buffer free space associated with the supply exceeds a predetermined threshold (here, 2 words) (step S202).
  • the central processing unit 20 performs processing according to the following cases (1) to (5) when executing the instruction sequence (see FIG. 3) given as an example in the first embodiment.
  • the central processing unit 20 instructs the memory interface 211 to store in the normal instruction buffer 212 when executing the instruction of the normal block. Further, it instructs the selection circuit 216 to select the normal instruction buffer 212 as the instruction supply source. [0120] (2) When the central processing unit 20 executes the loop store instruction, the central processing unit 20 starts the loop block specified by the loop store instruction when it is not stored in the normal instruction buffer 212. Force Instructs the memory interface 211 to store a certain amount of instructions in the loop example buffer 113.
  • the central processing unit 20 selects the normal instruction buffer 212 as the supply source of the succeeding instruction when all the instructions are supplied. To instruct.
  • the central processing unit 20 instructs the selection circuit 216 to select the loop instruction buffer 113 when executing the branch instruction and branching to the address specified by the branch instruction. To do. On the other hand, when the remaining instructions are supplied from the normal instruction buffer 112 without branching, the instruction subsequent to the instruction sequence stored in the normal instruction buffer 212 is stored in the normal instruction buffer 212. Instructs the memory interface 211.
  • the instruction supply device 201 reads out an instruction from the main storage device 1 in advance by the memory interface 211 that has received an instruction from the central processing unit 20, and either the normal instruction buffer 212 or the loop instruction buffer 113 is read out.
  • the read instruction is stored in.
  • the selection circuit 216 selects either the normal instruction buffer 212 or the loop instruction buffer 113 as an instruction supply source. Then, the buffer selected as the instruction supply source supplies the instruction stored in the buffer to the central processing unit 20 via the selection circuit 216.
  • the normal instruction buffer 212 is stored in the threshold register 213 when the free space generated by supplying the instruction while the instruction of the loop block is being supplied exceeds the threshold. The process of reading and storing subsequent instructions from the storage device 1 is resumed.
  • the normal instruction buffer 212 supplies a loop block instruction
  • the normal instruction buffer 212 In other words, when a subsequent instruction is supplied to the loop supply instruction buffer 113, even if an empty area is created in its own buffer as a result of the instruction being supplied, this empty area is set to this threshold (for example, two words). Until the number exceeds, new instructions are not read from the main memory 1 and stored. As a result, the subsequent instruction is continuously held in the loop supply instruction buffer 113.
  • the instruction supply device 201 performs processing according to the following cases (1) to (12).
  • the central processing unit 20 executes the instruction of the normal block 121, the central processing unit 20 uses the instruction sequence (I # 1 to 1 # 7, LSI # 1) of the normal block 121 for the normal instruction buffer 212.
  • the memory interface 211 is instructed to store data. Then, it instructs the selection circuit 216 to select the normal instruction buffer 212 as the instruction supply source.
  • the memory interface 211 accesses the main storage device 1 and reads out the instruction sequence (I # 1 to 1 # 7, LSI # 1) from the main storage device 1, thereby reading the normal instruction buffer 212. Accumulate in Further, the selection circuit 216 selects the normal instruction buffer 212 as an instruction supply source. Then, the normal instruction buffer 212 supplies the instruction sequence (I # 1 to 1 # 7, LSI # 1) to the central processing unit 20 via the selection circuit 216 (see FIG. 10A).
  • the central processing unit 20 uses the instruction sequence (1 # 8 to 1 # 14) as a normal instruction when executing the instruction in the loop block 122 except when it is repeatedly supplied by a branch instruction. Instructs the memory interface 211 to store in the buffer 212. Then, it instructs the selection circuit 216 to select the normal instruction buffer 212 as the instruction supply source.
  • the loop store instruction (LSI # 1) is executed, the instruction string (I # 8 to 1 # 11) at the head of the loop block 122 specified by the loop store instruction (LSI # 1) Is stored in the loop instruction buffer 113 to the memory interface 211.
  • the memory interface 211 accesses the main storage device 1, reads the instruction sequence (I # 8 to 1 # 14) from the main storage device 1, and stores it in the normal instruction buffer 212. Further, the selection circuit 216 selects the normal instruction buffer 212 as an instruction supply source. Then, the normal instruction buffer 212 sends an instruction string (1 # to the central processing unit 20 via the selection circuit 216. Supply 8 ⁇ I # 11). At the same time, the instruction sequence (I # 8 to I # 11) at the head of the loop block 122 specified by the loop store instruction (LSI # 1) is read in the background, and the read instruction sequence (I # 8 to I # 11) is stored in the loop instruction buffer 113 (see FIG. 10B and IOC;).
  • the central processing unit 20 executes the branch instruction (BI # 1) and branches to the start address of the loop block 122, the central processing unit 20 stores the instruction sequence ( The memory interface 211 is instructed to store subsequent instructions (I # 12 to 1 # 14) of I # 8 to I # 11) in the normal instruction buffer 212. Then, the selection circuit 216 is instructed to select the loop instruction notch 113 as the instruction supply source.
  • the memory interface 211 accesses the main storage device 1, reads out the instruction sequence (I # 12 to 1 # 14) from the main storage device 1, and stores it in the normal instruction buffer 212. Further, the selection circuit 216 selects the loop instruction buffer 113 as an instruction supply source. Then, the loop instruction buffer 113 supplies the instruction sequence (I # 8 to I # 11) to the central processing unit 20 via the selection circuit 216 (see FIG. 10D).
  • the central processing unit 20 selects the normal instruction buffer 212 as the supply source of the subsequent instruction. To instruct.
  • the selection circuit 216 selects the normal instruction buffer 212 as an instruction supply source.
  • the normal instruction buffer 212 supplies instructions (I # 12 and 1 # 13) to the central processing unit 20 through the selection circuit 216 (see FIG. 1 ( ⁇ )).
  • the normal instruction buffer 212 supplies an instruction to the central processing unit 20 via the selection circuit 216. At this time, since the free area of the normal instruction buffer 212 generated by supplying an instruction to the central processing unit 20 exceeds the threshold, the instruction sequence (I # 12 to The memory interface 211 is instructed to store the subsequent instructions (I # 15, I # 16) of 1 # 14) in the normal instruction buffer 212.
  • the memory interface 211 accesses the main storage device 1, reads the instruction sequence (I # 15, I # 16) from the main storage device 1, and stores it in the normal instruction buffer 212 ( (See Fig. 10F.) 0 [0140] (5)
  • the central processing unit 20 executes the branch instruction (BI # 1) and branches to the start address of the loop block 122, the central processing unit 20 selects the loop instruction buffer 113 as the instruction supply source. This is instructed to the selection circuit 216. Then, accumulate in the loop instruction buffer 113 !, and store the subsequent instruction (I # 12, I # 13) of the instruction sequence (I # 8 to I # 11) in the normal instruction buffer 21 2. Instructs the memory interface 211.
  • the selection circuit 216 selects the loop instruction buffer 113 as an instruction supply source. Further, the loop instruction buffer 113 supplies the instruction sequence (1 # 8 to 1 # 11) to the central processing unit 20 via the selection circuit 216. Then, the memory interface 211 accesses the main storage device 1, reads out the instruction sequence (1 # 12, 1 # 13) from the main storage device 1, and stores it in the normal instruction buffer 212 (see FIG. 10G;). .
  • the central processing unit 20 executes all the instructions (I # 12 to 1) from the normal instruction buffer 212 without executing the branch instruction (BI # 1) and branching to the start address of the loop block 122.
  • the subsequent instruction (I # 15 to 1 # 18) of the instruction sequence (I # 12 to I # 1 4) stored in the normal instruction buffer 212 is used for the normal instruction buffer. Instruct the memory interface 211 to store in 212.
  • the memory interface 211 accesses the main storage device 1, reads out the instruction sequence (I # 15 to 1 # 18) from the main storage device 1, and stores it in the normal instruction buffer 212. Then, the normal instruction buffer 212 supplies the instruction sequence (I # 15 to I # 18) to the central processing unit 20 through the selection circuit 216 (see FIG. 10H and FIG. 11A).
  • the central processing unit 20 executes the instruction in the normal block 121, the central processing unit 20 uses the instruction sequence (I # 19 to 1 # 21, LSI # 2) in the normal block 121 for the normal instruction buffer 212.
  • the memory interface 211 is instructed to store data in the memory.
  • the selection circuit 216 is instructed to select the normal instruction notifier 212 as the instruction supply source.
  • the memory interface 211 accesses the main storage device 1 and reads out the instruction sequence (I # 19 to 1 # 21, LSI # 2) from the main storage device 1 to read the normal instruction buffer 212. Accumulate on. Further, the selection circuit 216 selects the normal instruction buffer 212 as an instruction supply source. Then, the normal instruction buffer 212 supplies the instruction sequence (I # 19 to 1 # 21, LSI # 2) to the central processing unit 20 through the selection circuit 216 (see FIG. 11B). [8146] (8) When the central processing unit 20 executes the instruction of the loop block 124 except when it is repeatedly supplied by a branch instruction, the central processing unit 20 uses the instruction string (I # 22 to 1 # 25) as a normal instruction.
  • the memory interface 211 accesses the main storage device 1, reads out the instruction sequence (I # 22 to 1 # 25) from the main storage device 1, and stores it in the normal instruction buffer 212. Further, the selection circuit 216 selects the normal instruction buffer 212 as an instruction supply source. Then, the normal instruction buffer 212 supplies the instruction sequence (I # 22 to BI # 2) to the central processing unit 20 via the selection circuit 216. At the same time, the instruction sequence (I # 22 to 1 # 25) at the head of the loop block 124 specified by the loop store instruction (LSI # 2) is read in the background, and the read instruction sequence (I # 22 to 1 # 25) is stored in the loop instruction buffer 113 (see ID in FIG. 11C and FIG. 1).
  • the central processing unit 20 executes the branch instruction (BI # 2) and branches to the start address of the loop block 124, the central processing unit 20 stores the instruction sequence ( The memory interface 211 is instructed to store the subsequent instructions (I # 26 to 1 # 28) of I # 22 to 1 # 25) in the normal instruction buffer 212. Then, it instructs the selection circuit 216 to select the loop instruction buffer 113 as the instruction supply source.
  • the memory interface 211 accesses the main storage device 1, reads out the instruction sequence (I # 26 to 1 # 28) from the main storage device 1, and stores it in the normal instruction buffer 212. Further, the selection circuit 216 selects the loop instruction buffer 113 as an instruction supply source. Then, the loop instruction buffer 113 supplies the instruction sequence (I # 22 to 1 # 25) to the central processing unit 20 via the selection circuit 216 (see FIG. 11E).
  • the central processing unit 20 selects the normal instruction buffer 212 as the supply source of the subsequent instruction. Direct to 216. In response to this, the selection circuit 216 selects the normal instruction buffer 212 as an instruction supply source. The normal instruction buffer 212 supplies instructions (I # 26, BI # 2) to the central processing unit 20 through the selection circuit 216 (see FIG. 11F).
  • the normal instruction buffer 212 supplies an instruction to the central processing unit 20 via the selection circuit 216.
  • the instruction sequence (I # 26 Do not instruct the memory interface 211 to store the subsequent instructions (I # 29, I # 30) of ⁇ 1 # 28) in the free space generated in the normal instruction notifier 212 (see FIG. 11G).
  • the selection circuit 216 selects the loop instruction buffer 113 as the instruction supply source. Further, the loop instruction buffer 113 is connected to the central processing unit via the selection circuit 216.
  • the central processing unit 20 executes all the instructions (I # 26 to 1) from the normal instruction buffer 212 without executing the branch instruction (BI # 2) and branching to the start address of the loop block 122. # 28) is supplied, the instruction sequence (I # 26 to 1 # 2) stored in the normal instruction buffer 212
  • the memory interface 211 is instructed to store the subsequent instructions (I # 29 to 1 # 32) of 8) in the normal instruction buffer 212.
  • the memory interface 211 accesses the main storage device 1, reads out the instruction sequence (I # 29 to 1 # 32) from the main storage device 1, and stores it in the normal instruction buffer 212. Then, usually instruction buffer 212 supplies the instruction sequence (1 # 29-1 # 32) to the central processing unit 20 via the selection circuit 216 (FIG. 12A, see Fig. 12B.) 0
  • the instruction supply device 201 it is possible to repeatedly supply instructions to a loop block of up to six words without accessing the main storage device 1.
  • a loop instruction buffer for storing instructions for 6 words is required separately from the normal instruction buffer for storing instructions for 4 words. It is important. In other words, a koffa that accumulates instructions for a total of 10 words is required.
  • the threshold value held in the threshold value register 213 may be set by a program. Further, it may be set within the capacity of the normal instruction buffer 212. Along with this, it is possible to supply instructions tailored to the specification of the program. By increasing the threshold value, the allocated capacity for the instructions in the loop block is increased, so that it can be supplied efficiently. On the other hand, there is a trade-off that the allocated capacity is reduced for the instruction sequence following the loop block, and the number of instructions that can be stored in the normal instruction buffer 212 together with the loop block is reduced. .
  • the instruction supply device may be realized by a full custom LSI (Large Scale Integration). Also, it may be realized by a semi-custom LSI such as ASIC (Application Specific Integrated Circuit). Further, it may be realized by a programmable logic device such as an FPGA (Field Programmable Gate Array) and CPLD (Complex Programmable Logic Device). It may also be realized as a dynamic reconfigurable device whose circuit configuration can be dynamically rewritten!
  • VHDL Very high speed integrated circuit Hardware Description Language
  • Verilog-HDL It may be a program written in a hardware description language such as SystemC (hereinafter referred to as an HDL program).
  • the HDL program It may be a gate 'level netlist obtained by logical synthesis of a program. Further, it may be macro cell information in which arrangement information, process conditions, etc. are added to the gate level netlist. Further, it may be mask data in which dimensions, timing, and the like are defined.
  • the design data can be read out to a hardware system such as a computer system, an embedded system, etc., so that an optical recording medium (eg, CD-ROM), a magnetic recording medium (eg, hard disk, etc.) can be read. ), A magneto-optical recording medium (for example, MO, etc.), a semiconductor memory (for example, RAM, etc.), etc., may be recorded on a computer-readable recording medium.
  • the design data read by the other hardware system via the recording medium may be downloaded to the programmable 'logic' device via the download cable.
  • the design data may be held in a hardware system on the transmission line so that it can be acquired by another hardware system via a transmission line such as a network.
  • the design data acquired by other hardware systems via the hardware system power transmission path may be downloaded to the programmable logic device via the download cable.
  • the logic synthesis, placement, and wiring design data may be recorded in the serial ROM so that it can be transferred to the FPGA when the power is turned on.
  • the design data recorded in the serial ROM may be downloaded directly to the FPGA when power is applied.
  • the present invention relates to an instruction supply device that supplies an instruction read from a main storage device to a central processing unit, and particularly to a main storage device for a loop with a larger number of instructions without increasing the capacity of a loop instruction buffer. It can be used for IJs as an instruction supply device that supplies instructions without accessing the system.

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)
  • Record Information Processing For Printing (AREA)

Abstract

 少ないハードウェア量でループを形成する命令列を効率的に供給する命令供給装置を提供する。  命令供給装置101は、主記憶装置1に格納されている命令列のうち、中央処理装置10に繰り返し供給される第1の命令列を中央処理装置10に再度供給する前に、第1の命令列の先頭部分である第1の部分命令列を蓄積するループ用命令バッファ113と、第1の命令列を中央処理装置10に繰り返し供給する際に、ループ用命令バッファ113に蓄積されている第1の部分命令列を中央処理装置10に供給しながら、第1の部分命令列に後続する第2の部分命令列を蓄積する結合用命令バッファ115と、第1の部分命令列の全てを中央処理装置10に供給すると、結合用命令バッファ115に蓄積されている第2の部分命令列から、第1の部分命令列の後続命令を中央処理装置10に供給する選択回路116とを備える。                                                                                 

Description

命令供給装置
技術分野
[0001] 本発明は、主記憶装置と中央処理装置との間に介在して主記憶装置から読み出し た命令を中央処理装置に供給する命令供給装置に関し、特に、ループにより命令を 繰り返し供給する場合にぉ ヽて、主記憶装置へのアクセスを省略しても命令を供給 することができる命令供給装置に関する。
背景技術
[0002] 従来、主記憶装置と中央処理装置との間に介在して主記憶装置から読み出した命 令を中央処理装置に供給する命令供給装置がある。
[0003] 命令供給装置は、主記憶装置から読み出した命令を中央処理装置に効率的に供 給するために、ループ用命令バッファと通常用命令バッファとを有する。そして、ルー プブロックの命令を供給する場合には、主記憶装置へのアクセスを省略して、ループ 用命令バッファから中央処理装置に供給する (例えば、特許文献 1参照。 ) o
[0004] 「ループ用命令バッファ」とは、ループブロックを蓄積するバッファを!、う。
[0005] 「ループブロック」とは、ループにより繰り返し供給される命令列をいう。
[0006] 「通常用命令バッファ」とは、通常ブロックを蓄積するノ ッファを 、う。
[0007] 「通常ブロック」とは、ループブロック以外の命令列を 、う。
特許文献 1:特開昭 63— 314644号公報
発明の開示
発明が解決しょうとする課題
[0008] しかしながら、前記従来の技術にお!、ては、ループブロックの命令をループ用命令 ノ ッファだけで供給するため、ループブロックが多数の命令で構成されて 、る場合に は、ループ用命令バッファの容量を予め大きめに確保しておく必要がある。結果、ル ープ用命令バッファの容量が大きければ、ハードウ ア量も増大するという問題があ る。さらに、複数のループに対応するために、複数のループ用命令バッファを有すれ ば、より顕著にハードウェア量が増大するという問題がある。 [0009] そこで、本発明は、前記問題に鑑みてなされたものであり、少ないハードウ ア量で ループを形成する命令列を効率的に供給する命令供給装置を提供することを目的と する。
課題を解決するための手段
[0010] 前記目的を達成するために、本発明に係る命令供給装置は、 (a)主記憶装置から 読み出した命令を中央処理装置に供給する命令供給装置であって、 (b)前記主記 憶装置に格納されている命令列のうち、前記中央処理装置に繰り返し供給される第 1の命令列を前記中央処理装置に再度供給する前に、前記第 1の命令列の先頭部 分である第 1の部分命令列を蓄積する第 1のバッファと、(c)前記第 1の命令列を前 記中央処理装置に繰り返し供給する際に、前記第 1のバッファに蓄積されている前 記第 1の部分命令列を前記中央処理装置に供給しながら、前記第 1の部分命令列に 後続する第 2の部分命令列を蓄積する第 2のバッファと、 (d)前記第 1の部分命令列 の全てを前記中央処理装置に供給すると、前記第 2のバッファに蓄積されている第 2 の部分命令列から、前記第 1の部分命令列の後続命令を前記中央処理装置に供給 する選択手段とを備えることとする。
[0011] これによつて、ループブロックの命令列を一つのバッファに蓄積する場合と比べて、 二つ以上のバッファに分けて蓄積することができ、これ等のバッファが全て更新され ない限り、更新されずにバッファに蓄積されている命令列を再利用することができる。 そして、ループの後半部分をループ実行時にバックグラウンドでバッファに格納する ことによって、ループ全体を常時バッファに保持しなくても、ループ時には全てバッフ ァに保持されている状態と同等となり、効率的な命令を供給することができる。
[0012] 例えば、 8語分の命令を二つのバッファに半分ずつ蓄積して、一つのバッファが更 新されても、他のバッファが更新されていなければ、更新されずに他のバッファに蓄 積している 4語分の命令を再利用することができる。そして、 8語分の命令を主記憶装 置力 再度読み出すことなぐ更新された 4語の命令を主記憶装置力 再度読み出 すだけでよぐ主記憶装置にアクセスする時間も短くすることができる。
[0013] または、(a)前記命令供給装置は、さらに、(b)前記主記憶装置に格納されている 命令列のうち、前記第 1の命令列以外で前記中央処理装置に繰り返し供給される第 2の命令列を前記中央処理装置に再度供給する前に、前記第 2の命令列の先頭部 分である第 3の部分命令列を蓄積する第 3のバッファを備え、 (c)前記第 2の命令列 を前記中央処理装置に繰り返し供給する際に、前記第 3のバッファに蓄積されている 前記第 3の部分命令列を前記中央処理装置に供給しながら、前記第 3の部分命令 列に後続する第 4の部分命令列を前記第 2のバッファに蓄積し、 (d)前記選択手段 は、前記第 3の部分命令列の全てを前記中央処理装置に供給すると、前記第 2のバ ッファに蓄積されている第 4の部分命令列から、前記第 3の部分命令列の後続命令 を前記中央処理装置に供給することとしてもよい。
[0014] これによつて、ループを形成する第 1の命令列以外の第 2の命令列を供給する際に 用いられるバッファと、第 1の命令列の先頭部分である部分命令列に結合される部分 命令列を蓄積するノ ッファとを共用することができる。この場合において、バッファの 追加なしに、より多数の命令を含む命令列を効率的に供給することができる。
[0015] なお、本発明は、命令供給装置として実現されるだけではなぐ命令供給装置を制 御する方法 (以下、命令供給方法と呼称する。)等として実現されるとしてもよい。また 、命令供給装置によって提供される機能 (以下、命令供給機能と呼称する。)が組み 込まれた LSI、命令供給機能を FPGA、 CPLD等のプログラマブル'ロジック'デバイ スに形成する IPコア(以下、命令供給コアと呼称する。)、及び命令供給コアを記録し た記録媒体等として実現されるとしてもょ ヽ。
発明の効果
[0016] 以上、本発明に係る命令供給装置によれば、ループ用命令バッファの容量以上の ループブロックに対しても、主記憶装置へのアクセスを省略し、効率的に命令を供給 することができる。そして、複数のループ用命令バッファを有する場合には、ハードウ エア量の増加を抑止することができる。さらに、主記憶装置へのアクセスが省略される ことによって、主記憶装置に対するアクセス待ちが回避され、中央処理装置における 実行処理の性能を向上することができる。また、主記憶装置に対するアクセス頻度が 低減され、消費電力の増大を抑制することができる。
図面の簡単な説明
[0017] [図 1]図 1は、実施の形態 1における命令供給装置の構成を示す図である。 [図 2]図 2は、実施の形態 1における命令供給装置において主記憶装置から命令をフ エッチする際の処理を示す図である。
[図 3]図 3は、主記憶装置に格納されている命令列の一例を示す図である。
[図 4A]図 4Aは、実施の形態 1における命令供給装置の動作例を示す第 1の図であ る。
[図 4B]図 4Bは、実施の形態 1における命令供給装置の動作例を示す第 2の図であ る。
[図 4C]図 4Cは、実施の形態 1における命令供給装置の動作例を示す第 3の図であ る。
[図 4D]図 4Dは、実施の形態 1における命令供給装置の動作例を示す第 4の図であ る。
[図 5A]図 5Aは、実施の形態 1における命令供給装置の動作例を示す第 5の図であ る。
[図 5B]図 5Bは、実施の形態 1における命令供給装置の動作例を示す第 6の図であ る。
[図 5C]図 5Cは、実施の形態 1における命令供給装置の動作例を示す第 7の図であ る。
[図 5D]図 5Dは、実施の形態 1における命令供給装置の動作例を示す第 8の図であ る。
[図 6A]図 6Aは、実施の形態 1における命令供給装置の動作例を示す第 9の図であ る。
[図 6B]図 6Bは、実施の形態 1における命令供給装置の動作例を示す第 10の図であ る。
[図 6C]図 6Cは、実施の形態 1における命令供給装置の動作例を示す第 11の図であ る。
[図 6D]図 6Dは、実施の形態 1における命令供給装置の動作例を示す第 12の図で ある。
[図 7A]図 7Aは、実施の形態 1における命令供給装置の動作例を示す第 13の図であ る。
[図 7B]図 7Bは、実施の形態 1における命令供給装置の動作例を示す第 14の図であ る。
[図 8]図 8は、実施の形態 2における命令供給装置の構成を示す図である。
[図 9]図 9は、実施の形態 2における命令供給装置において主記憶装置から命令をフ エッチする際の処理を示す図である。
[図 10A]図 10Aは、実施の形態 2における命令供給装置の動作例を示す第 1の図で ある。
[図 10B]図 10Bは、実施の形態 2における命令供給装置の動作例を示す第 2の図で ある。
[図 10C]図 10Cは、実施の形態 2における命令供給装置の動作例を示す第 3の図で ある。
[図 10D]図 10Dは、実施の形態 2における命令供給装置の動作例を示す第 4の図で ある。
[図 10E]図 10Eは、実施の形態 2における命令供給装置の動作例を示す第 5の図で ある。
[図 10F]図 10Fは、実施の形態 2における命令供給装置の動作例を示す第 6の図で ある。
[図 10G]図 10Gは、実施の形態 2における命令供給装置の動作例を示す第 7の図で ある。
[図 10H]図 10Hは、実施の形態 2における命令供給装置の動作例を示す第 8の図で ある。
[図 11A]図 11Aは、実施の形態 2における命令供給装置の動作例を示す第 9の図で ある。
[図 11B]図 11Bは、実施の形態 2における命令供給装置の動作例を示す第 10の図 である。
[図 11C]図 11Cは、実施の形態 2における命令供給装置の動作例を示す第 11の図 である。 [図 11D]図 11Dは、実施の形態 2における命令供給装置の動作例を示す第 12の図 である。
[図 11E]図 11Eは、実施の形態 2における命令供給装置の動作例を示す第 13の図 である。
[図 11F]図 11Fは、実施の形態 2における命令供給装置の動作例を示す第 14の図 である。
[図 11G]図 11Gは、実施の形態 2における命令供給装置の動作例を示す第 15の図 である。
[図 11H]図 11Hは、実施の形態 2における命令供給装置の動作例を示す第 16の図 である。
[図 12A]図 12Aは、実施の形態 2における命令供給装置の動作例を示す第 17の図 である。
[図 12B]図 12Bは、実施の形態 2における命令供給装置の動作例を示す第 18の図 である。
符号の説明
[0018] 1 主記憶装置
10, 20 中央処理装置
100, 200 マイクロプロセッサ
101, 201 命令供給装置
111, 211 メモリインターフェース
112, 212 通常用命令バッファ
113 ループ用命令バッファ
114 ループ用命令バッファ
115 結合用命令バッファ
116, 216 選択回路
213 閾値レジスタ
発明を実施するための最良の形態
[0019] (実施の形態 1) 以下、本発明に係る実施の形態 1について図面を参照しながら説明する。
[0020] 本発明に係る実施の形態 1における命令供給装置は、メモリインターフェースを介 して主記憶装置力も先行して読み出した命令をバッファに蓄積しつつ、バッファに蓄 積している命令列から命令を中央処理装置に供給する。このとき、ループにより繰り 返し命令を供給する命令列(以下、ループブロックと呼称する。)以外の命令列(以下 、通常ブロックと呼称する。 )については、通常用命令バッファに蓄積する。また、ル ープブロックについては、分割してループ用命令バッファと結合用命令バッファとに 蓄積する。そして、ループブロックの命令を中央処理装置に供給する場合には、ル ープ用命令バッファと結合用命令バッファとに蓄積している命令列を結合した命令列 を中央処理装置に供給することを特徴とする。
[0021] 「通常ブロック」とは、主記憶装置に格納されている命令列のうち、ループブロック以 外のブロックをいう。
[0022] 「ループブロック」とは、主記憶装置に格納されている命令列のうち、繰り返し実行さ れる命令が格納されて!、るブロックを 、う。
[0023] 以上の点を踏まえて本発明に係る実施の形態 1における命令供給装置にっ 、て説 明する。
[0024] 先ず、実施の形態 1における命令供給装置の構成について説明する。
[0025] 図 1に示されるように、命令供給装置 101は、マイクロプロセッサ 100の中に一緒に 実装された中央処理装置 10の指示に応じて、マイクロプロセッサ 100と接続されてい る主記憶装置 1から命令を読み出し、中央処理装置 10に供給する。ここでは、一例と して、メモリインターフェース 111、通常用命令バッファ 112、ループ用命令バッファ 1 13、ループ用命令バッファ 114、結合用命令バッファ 115、及び選択回路 116等を 備える。
[0026] メモリインターフェース 111は、中央処理装置 10からの指示に応じて、主記憶装置 1から命令を読み出し、読み出した命令を通常用命令バッファ 112、ループ用命令バ ッファ 113、ループ用命令バッファ 114、結合用命令バッファ 115のいずれかに蓄積 する。
[0027] 通常用命令バッファ 112は、通常ブロック力も読み出された命令を 4語分蓄積する バッファである。
[0028] ループ用命令バッファ 113は、ループブロック力 読み出された命令を 4語分蓄積 するバッファである。
[0029] ループ用命令バッファ 114は、ループブロック力 読み出された命令を 4語分蓄積 するバッファである。
[0030] 結合用命令バッファ 115は、ループ用命令バッファ 113及びループ用命令バッファ 114のいずれかに結合する。ループ用命令バッファ 113に結合する場合には、ルー プ用命令バッファ 113に蓄積して 、る命令列の後続命令を 4語分蓄積する。ループ 用命令バッファ 114に結合する場合には、ループ用命令バッファ 114に蓄積して 、る 命令列の後続命令を 4語分蓄積するバッファである。
[0031] 選択回路 116は、中央処理装置 10力もの指示に応じて、通常用命令バッファ 112 、ループ用命令バッファ 113、ループ用命令バッファ 114、結合用命令バッファ 115 の!、ずれかを命令の供給源に選択する。
[0032] 続、て、実施の形態 1における命令供給装置にぉ 、て主記憶装置から命令をフエ ツチする際の処理について説明する。
[0033] 図 2に示されるように、命令供給装置 101は、中央処理装置 10から指示を受けた場 合において(ステップ S 101: Yes)、空きサイクルを見計らい(ステップ S 102 : Yes)、 通常用命令バッファ 112、ループ用命令バッファ 113、 114、結合用命令バッファ 11 5の中から、指示を受けたバッファに空きがある場合には (ステップ S103 : Yes)、主 記憶装置 1から命令をフェッチする (ステップ S104)。
[0034] なお、指示を受けて 、な 、バッファは、指示待ち状態である。
[0035] 続いて、中央処理装置 10と命令供給装置 101との動作について説明する。
[0036] ここでは、図 3に示されるように、主記憶装置 1に格納されている命令列として、通常 ブロック 121、 123、 125、ループブロック 122、ループブロック 124力も構成される命 令列を一例として説明する。
[0037] 通常ブロック 121は、上から下に向かって並んでいる命令列(I # 1〜I # 7、 LSI # 1 )から構成されている。
[0038] I # 1〜1 # 7は、ループストア命令、分岐命令以外の命令である。 [0039] LSI # 1は、 I # 8からループブロック 122が開始することが示されるループストア命 令である。
[0040] ループブロック 122は、上から下に向かって並んでいる命令列(1 # 8〜1 # 13、 BI
# 1)力 構成されている。
[0041] I # 8〜1 # 13は、ループストア命令、分岐命令以外の命令である。
[0042] BI # 1は、 I # 8に分岐する条件付の分岐命令である。
[0043] 通常ブロック 123は、上から下に向カって並んでぃる命令列(1 # 14〜1 # 21、 LSI
# 2)カゝら構成されている。
[0044] I # 14〜1 # 21は、ループストア命令、分岐命令以外の命令である。
[0045] LSI # 2は、 I # 22からループブロック 124が開始することが示されるループストア命 令である。
[0046] ループブロック 124は、上から下に向かって並んでいる命令列(I # 22〜I # 26、 BI
# 2)カゝら構成されている。
[0047] I # 22〜1 # 26は、ループストア命令、分岐命令以外の命令である。
[0048] BI # 2は、 I # 22に分岐する条件付の分岐命令である。
[0049] 通常ブロック 125は、上から下に向力つて並んでいる命令列(1 # 27〜1 # 32)から 構成されている。
[0050] I # 27〜1 # 32は、ループストア命令、分岐命令以外の命令である。
[0051] 「ループストア命令」とは、例えば、下記の命令で示されるように、 labelによって特定 されるアドレスからループブロックが開始することが示される命令である。
[0052] [命令] Loopstore label, buff
[0053] なお、ループブロック力 読み出した命令を蓄積するバッファが buff値によって指 定される。ここでは、 buff値が 0の場合には、ループ用命令バッファ 113に蓄積し、 b uff値が 1の場合には、ループ用命令バッファ 114に蓄積する。
[0054] なお、 LSI # 1については、 buff値が 0の場合として、中央処理装置 10は、ループ ブロック 122の先頭部分がループ用命令バッファ 113に蓄積することを、命令供給装 置 101に指示する。
[0055] また、 LSI # 2については、 buff値が 1の場合として、中央処理装置 10は、ループ ブロック 124の先頭部分がループ用命令バッファ 114に蓄積することを、命令供給装 置 101に指示する。
[0056] 続いて、中央処理装置 10の動作について説明する。
[0057] 中央処理装置 10は、一例として挙げた命令列(図 3参照。 )を実行するにあたり、下 記(1)〜(6)の場合に応じて処理を行う。
[0058] (1)中央処理装置 10は、通常ブロックの命令を実行する場合には、通常用命令バ ッファ 112に蓄積することを、メモリインターフェース 111に指示する。さらに、命令の 供給源に通常用命令バッファ 112を選択することを、選択回路 116に指示する。
[0059] (2)中央処理装置 10は、ループストア命令を実行した場合には、通常用命令バッ ファ 112への蓄積が行われて!/、な!/、時に、ループストア命令によって特定されるルー プブロックの先頭から一定量の命令をループストア命令によって指示されたループ用 命例バッファに蓄積することをメモリインターフェース 111に指示する。
[0060] (3)中央処理装置 10は、繰り返し供給される場合を除き、分岐命令の実行によって ループ用命令バッファ力 供給された命令を実行する場合には、そのループ用命令 ノ ッファに蓄積して 、る命令列の後続命令を結合用命令バッファ 115に蓄積すること を、メモリインターフェース 111に指示する。
[0061] (4)中央処理装置 10は、ループ用命令バッファ力 全ての命令が供給された場合 には、後続の命令の供給源に結合用命令バッファ 115を選択することを、選択回路 1
16に指示する。
[0062] (5)中央処理装置 10は、繰り返し供給される場合を除き、結合用命令バッファ 115 力 供給された命令を実行する場合には、結合用命令バッファ 115に蓄積している 命令列の後続命令を通常用命令バッファ 112に蓄積することを、メモリインターフエ ース 111に指示する。
[0063] (6)中央処理装置 10は、分岐命令を実行してその分岐命令によって指定されたァ ドレスに分岐する場合には、そのアドレスによって特定される命令を蓄積して 、るル ープ用命令バッファを選択することを、選択回路 116に指示する。一方、分岐せずに 結合用命令バッファ 115から全ての命令が供給された場合には、後続の命令の供給 源に通常用命令バッファ 112を選択することを、選択回路 116に指示する。 [0064] 続いて、命令供給装置 101の動作について説明する。
[0065] 命令供給装置 101は、中央処理装置 10からの指示に応じて各構成要素が下記の 様に振る舞う。
[0066] メモリインターフェース 111は、主記憶装置 1から命令を読み出し、通常用命令バッ ファ 112、ループ用命令バッファ 113、ループ用命令バッファ 114、及び結合用命令 ノ ッファ 115のいずれかに読み出した命令を蓄積する。
[0067] 選択回路 116は、通常用命令バッファ 112、ループ用命令バッファ 113、ループ用 命令バッファ 114、及び結合用命令バッファ 115の 、ずれかを命令の供給源に選択 する。
[0068] そして、命令の供給源に選択されたバッファは、選択回路 116を介して中央処理装 置 10に、そのバッファに蓄積している命令を供給する。
[0069] ここでは、一例としてあげた命令列(図 3参照。 )を用いながら、中央処理装置 10と 命令供給装置 101との動作について説明する。
[0070] 図 4A〜図 7Bに示されるように、命令供給装置 101は、下記(1)〜(12)の場合に 応じた処理を行う。
[0071] (1)中央処理装置 10は、通常ブロック 121の命令を実行する場合には、通常ブロッ ク 121の命令列 (I # 1〜1 # 7、 LSI # 1)を通常用命令バッファ 112に蓄積することを 、メモリインターフェース 111に指示する。それから、命令の供給源に通常用命令バッ ファ 112を選択することを、選択回路 116に指示する。
[0072] これに応じて、メモリインターフェース 111は、主記憶装置 1にアクセスし、主記憶装 置 1から命令列 (I # 1〜1 # 7、 LSI # 1)を読み出して通常用命令バッファ 112に蓄積 する。さらに、選択回路 116は、命令の供給源に通常用命令バッファ 112を選択する 。そして、通常用命令バッファ 112は、選択回路 116を介して中央処理装置 10に命 令列 (I # 1〜1 # 7、 LSI # 1)を供給する(図 4A参照。 )。
[0073] (2)中央処理装置 10は、分岐命令により繰り返し供給される場合を除き、ループブ ロック 122の命令を実行する場合には、命令列 (1 # 8〜1 # 14)を通常用命令バッフ ァ 112に蓄積することを、メモリインターフェース 111に指示する。それから、命令の供 給源に通常用命令バッファ 112を選択することを、選択回路 116に指示する。また、 ループストア命令 (LSI # 1)を実行した場合には、ループストア命令 (LSI # 1)の buf f値が 0により、ループストア命令(LSI # 1)によって特定されるループブロック 122の 先頭部分の命令列 (1 # 8〜1 # 11)をループ用命令バッファ 113に蓄積することを、メ モリインターフェース 111に指示する。
[0074] これに応じて、メモリインターフェース 111は、主記憶装置 1にアクセスし、主記憶装 置 1から命令列 (I # 8〜1 # 14)を読み出して通常用命令バッファ 112に蓄積する。さ らに、選択回路 116は、命令の供給源に通常用命令バッファ 112を選択する。そして 、通常用命令バッファ 112は、選択回路 116を介して中央処理装置 10に命令列 (1 # 8〜BI # 1)を供給する。これと同時にバックグランドで、ループストア命令 (LSI # 1) によって特定されるループブロック 122の先頭部分の命令列 (I # 8〜I # 11)を読み 出し、読み出した命令列 (I # 8〜I # 11)をループ用命令バッファ 113に蓄積する(図 4B、図 4C参照。;)。
[0075] (3)中央処理装置 10は、分岐命令 (BI # 1)を実行してループブロック 122の開始 アドレスに分岐する場合には、ループ用命令バッファ 113に蓄積して 、る命令列 (I # 8〜I # 11)の後続命令 (I # 12〜1 # 14)を結合用命令バッファ 115に蓄積することを 、メモリインターフェース 111に指示する。それから、命令の供給源にループ用命令 ノ ッファ 113を選択することを、選択回路 116に指示する。
[0076] これに応じて、メモリインターフェース 111は、主記憶装置 1にアクセスし、主記憶装 置 1から命令列 (I # 12〜1 # 14)を読み出して結合用命令バッファ 115に蓄積する。 さらに、選択回路 116は、命令の供給源にループ用命令バッファ 113を選択する。そ して、ループ用命令バッファ 113は、選択回路 116を介して中央処理装置 10に命令 列 (I # 8〜I # 11)を供給する(図 4D参照。 )。
[0077] (4)中央処理装置 10は、ループ用命令バッファ 113から全ての命令が供給された 場合には、後続の命令の供給源に結合用命令バッファ 115を選択することを、選択 回路 116に指示する。
[0078] これに応じて、選択回路 116は、命令の供給源に結合用命令バッファ 115を選択 する。結合用命令バッファ 115は、選択回路 116を介して中央処理装置 10に命令列 (1 # 12〜1 # 14)を供給する(図 5A参照。 )0 [0079] (5)中央処理装置 10は、結合用命令バッファ 115への命令の蓄積が完了した場合 には、結合用命令バッファ 115に蓄積して 、る命令列 (I # 12〜1 # 14)の後続命令 ( 1 # 15〜1 # 17)を通常用命令バッファ 112に蓄積することを、メモリインターフェース 111に指示する。
[0080] これに応じて、メモリインターフェース 111は、主記憶装置 1にアクセスし、主記憶装 置 1から命令列 (I # 15〜1 # 18)を読み出して通常用命令バッファ 112に蓄積する( 図 5B参照。)。
[0081] (6)中央処理装置 10は、分岐命令 (BI # 1)を実行してループブロック 122の開始 アドレスに分岐せずに、結合用命令バッファ 115から全ての命令 (I # 12〜1 # 14)が 供給された場合には、後続の命令の供給源に通常用命令バッファ 112を選択するこ とを、選択回路 116に指示する。
[0082] これに応じて、選択回路 116は、命令の供給源に通常用命令バッファ 112を選択 する。そして、通常用命令バッファ 112は、選択回路 116を介して中央処理装置 10 に命令列 (I # 15〜1 # 18)を供給する(図 5C参照。 )。
[0083] (7)中央処理装置 10は、通常ブロック 123の命令を実行する場合には、通常ブロッ ク 123の命令列 (I # 19〜1 # 21、 LSI # 2)を通常用命令バッファ 112に蓄積するこ とを、メモリインターフェース 111に指示する。それから、命令の供給源に通常用命令 ノ ッファ 112を選択することを、選択回路 116に指示する。
[0084] これに応じて、メモリインターフェース 111は、主記憶装置 1にアクセスし、主記憶装 置 1から命令列 (I # 19〜1 # 21、 LSI # 2)を読み出して通常用命令バッファ 112に 蓄積する。さらに、選択回路 116は、命令の供給源に通常用命令バッファ 112を選 択する。そして、通常用命令バッファ 112は、選択回路 116を介して中央処理装置 1 0に命令列 (I # 19〜1 # 21、 LSI # 2)を供給する(図 5D参照。 )。
[0085] (8)中央処理装置 10は、分岐命令により繰り返し供給される場合を除き、ループブ ロック 124の命令を実行する場合には、命令列 (I # 22〜1 # 28)を通常用命令バッフ ァ 112に蓄積することを、メモリインターフェース 111に指示する。それから、命令の供 給源に通常用命令バッファ 112を選択することを、選択回路 116に指示する。さらに 、中央処理装置 10は、ループストア命令 (LSI # 2)を実行した場合には、ループスト ァ命令 (LSI # 2)の buff値が 1により、ループストア命令 (LSI # 2)によって特定され るループブロック 124の先頭部分の命令列(I # 22〜1 # 25)をループ用命令バッフ ァ 114に蓄積することを、メモリインターフェース 111に指示する。
[0086] これに応じて、メモリインターフェース 111は、主記憶装置 1にアクセスし、主記憶装 置 1から命令列 (I # 22〜1 # 25)を読み出して通常用命令バッファ 112に蓄積する。 さらに、選択回路 116は、命令の供給源に通常用命令バッファ 112を選択する。そし て、通常用命令バッファ 112は、選択回路 116を介して中央処理装置 10に命令列 (I # 22〜1 # 25)を供給する。これと同時にバックグランドで、ループストア命令 (LSI # 2)によって特定されるループブロック 124の先頭部分の命令列(I # 22〜1 # 25)を 読み出し、読み出した命令列 (I # 22〜1 # 25)をループ用命令バッファ 114に蓄積 する(図 6A、図 6B参照。 ) 0
[0087] (9)中央処理装置 10は、分岐命令(BI # 2)を実行してループブロック 124の開始 アドレスに分岐する場合には、ループ用命令バッファ 114に蓄積している命令列 (1 # 22〜1 # 25)の後続命令 (I # 26〜1 # 28)を結合用命令バッファ 115に蓄積すること を、メモリインターフェース 111に指示する。それから、命令の供給源にループ用命 令バッファ 113を選択することを、選択回路 116に指示する。
[0088] これに応じて、メモリインターフェース 111は、主記憶装置 1にアクセスし、主記憶装 置 1から命令列 (I # 26〜1 # 28)を読み出して結合用命令バッファ 115に蓄積する。 さらに、選択回路 116は、命令の供給源にループ用命令バッファ 113を選択する。そ して、ループ用命令バッファ 114は、選択回路 116を介して中央処理装置 10に命令 列(1 # 22〜1 # 25)を供給する(図6じ参照。 ) 0
[0089] (10)中央処理装置 10は、ループ用命令バッファ 114から全ての命令が供給され た場合には、後続の命令の供給源に結合用命令バッファ 115を選択することを、選 択回路 116に指示する。
[0090] これに応じて、選択回路 116は、命令の供給源に結合用命令バッファ 115を選択 する。結合用命令バッファ 115は、選択回路 116を介して中央処理装置 10に命令列 (1 # 26〜1 # 28)を供給する(図60参照。 ) 0
[0091] (11)中央処理装置 10は、結合用命令バッファ 115への命令の蓄積が完了した場 合には、結合用命令バッファ 115に蓄積して 、る命令列 (I # 26〜1 # 28)の後続命 令 (1 # 29〜1 # 32)を通常用命令バッファ 112に蓄積することを、メモリインターフエ ース 111に指示する。
[0092] これに応じて、メモリインターフェース 111は、主記憶装置 1にアクセスし、主記憶装 置 1から命令列 (I # 29〜1 # 32)を読み出して通常用命令バッファ 112に蓄積する( 図 7A参照。)。
[0093] (12)中央処理装置 10は、分岐命令(BI # 2)を実行してループブロック 124の開始 アドレスに分岐せずに、結合用命令バッファ 115から全ての命令 (I # 26〜1 # 28)が 供給された場合には、後続の命令の供給源に通常用命令バッファ 112を選択するこ とを、選択回路 116に指示する。
[0094] これに応じて、選択回路 116は、命令の供給源に通常用命令バッファ 112を選択 する。そして、通常用命令バッファ 112は、選択回路 116を介して中央処理装置 10 に命令列 (I # 29〜1 # 32)を供給する(図 7B参照。 )。
[0095] 以上、説明したように本発明の実施の形態 1における命令供給装置によれば、ルー プブロックの命令列を一つのバッファに蓄積する場合と比べて、二つ以上のバッファ に分けて蓄積することができ、これ等のバッファが全て更新されない限り、更新されず にバッファに蓄積されている命令列を再利用することができる。そして、ループの後 半部分をループ実行時にバックグラウンドでバッファに格納することによって、ループ 全体を常時バッファに保持しなくても、ループ時には全てバッファに保持されている 状態と同等となり、効率的な命令を供給することができる。
[0096] 例えば、 8語分の命令を二つのバッファに半分ずつ蓄積し、そのうちの一つのバッ ファが更新されても、他のバッファが更新されていなければ、更新されずに他のバッ ファに蓄積している 4語分の命令を再利用することができる。そして、 8語分の命令を 主記憶装置から再度読み出すことなぐ更新された 4語の命令を主記憶装置から再 度読み出すだけでよぐ主記憶装置にアクセスする時間も短くすることができる。そし て、ループ用命令バッファおよび結合用命令バッファの合計語数である 8語までのル ープブロックに対して、繰り返し供給する際には、主記憶装置にアクセスせずにルー プブロックの命令を供給することができる。 [0097] 同様に、結合用命令バッファの代わりに、もう一つのループ用命令バッファを用い た場合においても、 8語までのループブロックに対して、繰り返し供給する際には、主 記憶装置にアクセスせずにループブロックの命令を供給することができる。
[0098] なお、 8語のループブロック二つに対して、ループ中に主記憶装置にアクセスせず に供給するには、従来の構成においては、 8語分のループ用命令バッファを 2つ設け る必要があり、計 16語分の命令バッファが必要となる。これに対して、本発明の実施 の形態 1においては、ループ用命令バッファ 112、ループ用命令バッファ 114、及び 結合用命令バッファ 115の計 12語分の命令バッファを用 、て、同等の機能を実現す ることができ、より少ないハードウェア量でループブロックに対して効率的に命令を供 給することができる。
[0099] (実施の形態 2)
次に、本発明に係る実施の形態 2について図面を参照しながら説明する。なお、実 施の形態 1と同一の構成については説明を省略する。
[0100] 本発明に係る実施の形態 2における命令供給装置は、命令供給装置 101 (図 1参 照。)と比べて、結合用命令バッファ 115を備えない代わりに、通常用命令バッファ 11 2と結合用命令バッファ 115とを兼用する通常用命令バッファを備える点が異なる。
[0101] 具体的には、実施の形態 2における通常命令バッファは、通常ブロックの命令を供 給する場合には、通常用命令バッファ 112のように機能し、ループブロックの命令を 供給する場合には、結合用命令バッファ 115のように機能する。
[0102] 以上の点を踏まえて本発明に係る実施の形態 2における命令供給装置について説 明する。
[0103] 先ず、本発明に係る実施の形態 2における命令供給装置の構成について説明する
[0104] 図 8に示されるように、命令供給装置 201は、命令供給装置 101 (図 1参照。 )と比 ベて、下記(1)〜(5)の点が異なる。
[0105] (1)メモリインターフェース 111の代わりにメモリインターフェース 211を備える。
[0106] メモリインターフェース 211は、中央処理装置 20からの指示に応じて、主記憶装置
1から命令を読み出し、読み出した命令を通常用命令バッファ 212、ループ用命令バ ッファ 213のいずれかに蓄積する。
[0107] (2)通常用命令バッファ 112の代わりに通常用命令バッファ 212を備える。
[0108] 通常用命令バッファ 212は、通常ブロックの命令を供給する場合には、通常用命令 ノ ッファ 112のように、通常ブロック力も読み出された命令を 4語分蓄積する。また、 ループブロックの命令を供給する場合には、結合用命令バッファ 115のように、ルー プ用命令バッファ 213に蓄積して 、る命令列の後続命令を 4語分蓄積する。
[0109] (3)選択回路 116の代わりに選択回路 216を備える。
[0110] 選択回路 216は、中央処理装置 10力もの指示に応じて、通常用命令バッファ 212
、ループ用命令バッファ 213のいずれかを命令の供給源に選択する。
[0111] (4)新たに閾値レジスタ 213を備える。
[0112] 閾値レジスタ 213は、通常用命令バッファ 212がループブロックの命令を供給中に
、通常用命令バッファ 212の空き領域の容量が所定の容量に至った力否かを判断す る際に参照される閾値を保持する。
[0113] (5)ループ用命令バッファ 114、結合用命令バッファ 115を備えない。
[0114] 命令供給装置 201には、ループ用命令バッファが 1つしか存在しないために、ルー プストア命令の buff値、すなわち、ノ ッファを選択する情報については無視する。
[0115] 続いて、実施の形態 2における命令供給装置において主記憶装置力 命令をフエ ツチする際の処理について説明する。
[0116] 図 9に示されるように、通常用命令バッファ 212は、ループ用命令バッファ 113に蓄 積されている命令列の後続命令を供給中の場合には (ステップ S201: Yes)、命令供 給に伴うバッファの空き領域が所定の閾値 (ここでは、 2語とする。)を超えるまでは( ステップ S202)、新たな命令を蓄積しない。
[0117] 続いて、中央処理装置 20の動作について説明する。
[0118] 中央処理装置 20は、実施の形態 1において一例として挙げた命令列(図 3参照。 ) を実行するにあたり、下記(1)〜(5)の場合に応じて処理を行う。
[0119] (1)中央処理装置 20は、通常ブロックの命令を実行する場合には、通常用命令バ ッファ 212に蓄積することを、メモリインターフェース 211に指示する。さらに、命令の 供給源に通常用命令バッファ 212を選択することを、選択回路 216に指示する。 [0120] (2)中央処理装置 20は、ループストア命令を実行した場合には、通常用命令バッ ファ 212への蓄積が行われていない時に、ループストア命令によって特定されるルー プブロックの先頭力 一定量の命令をループ用命例バッファ 113に蓄積することをメ モリインターフェース 211に指示する。
[0121] (3)中央処理装置 20は、分岐命令の実行により、ループ用命令バッファ 113から供 給された命令を実行する場合には、ループ用命令バッファ 113に蓄積して 、る命令 列の後続命令を通常用命令バッファ 212に蓄積することを、メモリインターフェース 2 11に指示する。
[0122] (4)中央処理装置 20は、ループ用命令バッファ力 全ての命令が供給された場合 には、後続の命令の供給源に通常用命令バッファ 212を選択することを、選択回路 2 16に指示する。
[0123] (5)中央処理装置 20は、分岐命令を実行してその分岐命令によって指定されたァ ドレスに分岐する場合には、ループ用命令バッファ 113を選択することを、選択回路 216に指示する。一方、分岐せずに通常用命令バッファ 112から残りの命令が供給 された場合には、通常用命令バッファ 212に蓄積している命令列の後続命令を通常 用命令バッファ 212に蓄積することを、メモリインターフェース 211に指示する。
[0124] 続いて、命令供給装置 201の動作について説明する。
[0125] 命令供給装置 201は、中央処理装置 20からの指示を受けたメモリインターフェース 211によって、主記憶装置 1から命令を先行して読み出し、通常用命令バッファ 212 とループ用命令バッファ 113のいずれかに読み出した命令を蓄積する。また、選択 回路 216において、通常用命令バッファ 212とループ用命令バッファ 113のいずれ かを命令の供給源に選択する。そして、命令の供給源に選択されたバッファは、選択 回路 216を介して中央処理装置 20に、そのバッファに蓄積して 、る命令を供給する
[0126] なお、通常用命令バッファ 212は、ループブロックの命令を供給中に、命令を供給 することによって生じた空き容量が閾値レジスタ 213にお 、て保持されて 、る閾値を 超えると、主記憶装置 1から後続の命令を読み出して蓄積する処理を再開する。
[0127] そして、通常用命令バッファ 212は、ループブロックの命令を供給する場合、すな わち、ループ供給用命令バッファ 113に後続命令を供給する場合には、命令の供給 に伴い自身のバッファに空き領域ができても、その空き領域カこの閾値 (例えば、 2語 とする。)を超えるまでは、新たな命令を主記憶装置 1から読み出して蓄積しない。こ のことにより、ループ供給用命令バッファ 113に後続命令を保持し続ける。
[0128] ここでは、一例として挙げた命令列(図 3参照。 )を用いながら、中央処理装置 20と 命令供給装置 201との動作について説明する。
[0129] 図 10A〜図 12Bに示されるように、命令供給装置 201は、下記(1)〜(12)の場合 に応じた処理を行う。
[0130] (1)中央処理装置 20は、通常ブロック 121の命令を実行する場合には、通常ブロッ ク 121の命令列 (I # 1〜1 # 7、 LSI # 1)を通常用命令バッファ 212に蓄積することを 、メモリインターフェース 211に指示する。それから、命令の供給源に通常用命令バッ ファ 212を選択することを、選択回路 216に指示する。
[0131] これに応じて、メモリインターフェース 211は、主記憶装置 1にアクセスし、主記憶装 置 1から命令列 (I # 1〜1 # 7、 LSI # 1)を読み出して通常用命令バッファ 212に蓄積 する。さらに、選択回路 216は、命令の供給源に通常用命令バッファ 212を選択する 。そして、通常用命令バッファ 212は、選択回路 216を介して中央処理装置 20に命 令列 (I # 1〜1 # 7、 LSI # 1)を供給する(図 10A参照。 )。
[0132] (2)中央処理装置 20は、分岐命令により繰り返し供給される場合を除き、ループブ ロック 122の命令を実行する場合には、命令列 (1 # 8〜1 # 14)を通常用命令バッフ ァ 212に蓄積することを、メモリインターフェース 211に指示する。それから、命令の供 給源に通常用命令バッファ 212を選択することを、選択回路 216に指示する。また、 ループストア命令 (LSI # 1)を実行した場合には、ループストア命令 (LSI # 1)によつ て特定されるループブロック 122の先頭部分の命令列(I # 8〜1 # 11)をループ用命 令バッファ 113に蓄積することを、メモリインターフェース 211に指示する。
[0133] これに応じて、メモリインターフェース 211は、主記憶装置 1にアクセスし、主記憶装 置 1から命令列 (I # 8〜1 # 14)を読み出して通常用命令バッファ 212に蓄積する。さ らに、選択回路 216は、命令の供給源に通常用命令バッファ 212を選択する。そして 、通常用命令バッファ 212は、選択回路 216を介して中央処理装置 20に命令列 (1 # 8〜I # 11)を供給する。これと同時にバックグラウンドで、ループストア命令 (LSI # 1 )によって特定されるループブロック 122の先頭部分の命令列 (I # 8〜I # 11)を読み 出し、読み出した命令列 (I # 8〜I # 11)をループ用命令バッファ 113に蓄積する(図 10B、図 IOC参照。;)。
[0134] (3)中央処理装置 20は、分岐命令 (BI # 1)を実行してループブロック 122の開始 アドレスに分岐する場合には、ループ用命令バッファ 113に蓄積して 、る命令列 (I # 8〜I # 11)の後続命令 (I # 12〜1 # 14)を通常用命令バッファ 212に蓄積することを 、メモリインターフェース 211に指示する。それから、命令の供給源にループ用命令 ノ ッファ 113を選択することを、選択回路 216に指示する。
[0135] これに応じて、メモリインターフェース 211は、主記憶装置 1にアクセスし、主記憶装 置 1から命令列 (I # 12〜1 # 14)を読み出して通常用命令バッファ 212に蓄積する。 さらに、選択回路 216は、命令の供給源にループ用命令バッファ 113を選択する。そ して、ループ用命令バッファ 113は、選択回路 216を介して中央処理装置 20に命令 列 (I # 8〜I # 11)を供給する(図 10D参照。 )。
[0136] (4)中央処理装置 20は、ループ用命令バッファ 113から全ての命令が供給された 場合には、後続の命令の供給源に通常用命令バッファ 212を選択することを、選択 回路 216に指示する。
[0137] これに応じて、選択回路 216は、命令の供給源に通常用命令バッファ 212を選択 する。通常用命令バッファ 212は、選択回路 216を介して中央処理装置 20に命令 (I # 12、1 # 13)を供給する(図1(^参照。)。
[0138] さらに、通常用命令バッファ 212は、選択回路 216を介して中央処理装置 20に命 令を供給する。このとき、中央処理装置 20に命令を供給することによって生じた通常 用命令バッファ 212の空き領域が閾値を超えているため、通常用命令バッファ 212に 蓄積して 、る命令列 (I # 12〜1 # 14)の後続命令 (I # 15、 I # 16)を通常用命令バ ッファ 212に蓄積することを、メモリインターフェース 211に指示する。
[0139] これに応じて、メモリインターフェース 211は、主記憶装置 1にアクセスし、主記憶装 置 1から命令列 (I # 15、 I # 16)を読み出して通常用命令バッファ 212に蓄積する( 図 10F参照。 )0 [0140] (5)中央処理装置 20は、分岐命令 (BI # 1)を実行してループブロック 122の開始 アドレスに分岐する場合には、命令の供給源にループ用命令バッファ 113を選択す ることを、選択回路 216に指示する。それから、ループ用命令バッファ 113に蓄積し て!、る命令列 (I # 8〜I # 11)の後続命令 (I # 12、 I # 13)を通常用命令バッファ 21 2に蓄積することを、メモリインターフェース 211に指示する。
[0141] これに応じて、選択回路 216は、命令の供給源にループ用命令バッファ 113を選 択する。さらに、ループ用命令バッファ 113は、選択回路 216を介して中央処理装置 20に命令列(1 # 8〜1 # 11)を供給する。そして、メモリインターフェース 211は、主記 憶装置 1にアクセスし、主記憶装置 1から命令列 (1 # 12、 1 # 13)を読み出して通常 用命令バッファ 212に蓄積する(図 10G参照。;)。
[0142] (6)中央処理装置 20は、分岐命令 (BI # 1)を実行してループブロック 122の開始 アドレスに分岐せずに、通常用命令バッファ 212から全ての命令 (I # 12〜1 # 14)が 供給された場合には、通常用命令バッファ 212に蓄積している命令列 (I # 12〜I # 1 4)の後続命令 (I # 15〜1 # 18)を通常用命令バッファ 212に蓄積することを、メモリ インターフェース 211に指示する。
[0143] これに応じて、メモリインターフェース 211は、主記憶装置 1にアクセスし、主記憶装 置 1から命令列 (I # 15〜1 # 18)を読み出して通常用命令バッファ 212に蓄積する。 そして、通常用命令バッファ 212は、選択回路 216を介して中央処理装置 20に命令 列 (I # 15〜I # 18)を供給する(図 10H、図 11 A参照。 )。
[0144] (7)中央処理装置 20は、通常ブロック 121の命令を実行する場合には、通常ブロッ ク 121の命令列 (I # 19〜1 # 21、 LSI # 2)を通常用命令バッファ 212に蓄積するこ とを、メモリインターフェース 211に指示する。それから、命令の供給源に通常用命令 ノ ッファ 212を選択することを、選択回路 216に指示する。
[0145] これに応じて、メモリインターフェース 211は、主記憶装置 1にアクセスし、主記憶装 置 1から命令列 (I # 19〜1 # 21、 LSI # 2)を読み出して通常用命令バッファ 212に 蓄積する。さらに、選択回路 216は、命令の供給源に通常用命令バッファ 212を選 択する。そして、通常用命令バッファ 212は、選択回路 216を介して中央処理装置 2 0に命令列 (I # 19〜1 # 21、 LSI # 2)を供給する(図 11B参照。)。 [0146] (8)中央処理装置 20は、分岐命令により繰り返し供給される場合を除き、ループブ ロック 124の命令を実行する場合には、命令列 (I # 22〜1 # 25)を通常用命令バッフ ァ 212に蓄積することを、メモリインターフェース 211に指示する。それから、命令の供 給源に通常用命令バッファ 212を選択することを、選択回路 216に指示する。また、 ループストア命令 (LSI # 2)を実行した場合には、ループストア命令 (LSI # 2)によつ て特定されるループブロック 124の先頭部分の命令列(I # 22〜1 # 25)をループ用 命令バッファ 113に蓄積することを、メモリインターフェース 211に指示する。
[0147] これに応じて、メモリインターフェース 211は、主記憶装置 1にアクセスし、主記憶装 置 1から命令列 (I # 22〜1 # 25)を読み出して通常用命令バッファ 212に蓄積する。 さらに、選択回路 216は、命令の供給源に通常用命令バッファ 212を選択する。そし て、通常用命令バッファ 212は、選択回路 216を介して中央処理装置 20に命令列 (I # 22〜BI # 2)を供給する。これと同時にバックグランドで、ループストア命令 (LSI # 2)によって特定されるループブロック 124の先頭部分の命令列(I # 22〜1 # 25)を 読み出し、読み出し命令列 (I # 22〜1 # 25)をループ用命令バッファ 113に蓄積す る(図 11C、図 1 ID参照。;)。
[0148] (9)中央処理装置 20は、分岐命令(BI # 2)を実行してループブロック 124の開始 アドレスに分岐する場合には、ループ用命令バッファ 113に蓄積して 、る命令列 (I # 22〜1 # 25)の後続命令 (I # 26〜1 # 28)を通常用命令バッファ 212に蓄積すること を、メモリインターフェース 211に指示する。それから、命令の供給源にループ用命 令バッファ 113を選択することを、選択回路 216に指示する。
[0149] これに応じて、メモリインターフェース 211は、主記憶装置 1にアクセスし、主記憶装 置 1から命令列 (I # 26〜1 # 28)を読み出して通常用命令バッファ 212に蓄積する。 さらに、選択回路 216は、命令の供給源にループ用命令バッファ 113を選択する。そ して、ループ用命令バッファ 113は、選択回路 216を介して中央処理装置 20に命令 列 (I # 22〜1 # 25)を供給する(図 11E参照。)。
[0150] (10)中央処理装置 20は、ループ用命令バッファ 113から全ての命令が供給され た場合には、後続の命令の供給源に通常用命令バッファ 212を選択することを、選 択回路 216に指示する。 [0151] これに応じて、選択回路 216は、命令の供給源に通常用命令バッファ 212を選択 する。通常用命令バッファ 212は、選択回路 216を介して中央処理装置 20に命令 (I # 26、 BI # 2)を供給する(図 11F参照。)
[0152] さらに、通常用命令バッファ 212は、選択回路 216を介して中央処理装置 20に命 令を供給する。このとき、中央処理装置 20に命令を供給することによって生じた通常 用命令バッファ 212の空き領域が閾値を超えていないため、通常用命令バッファ 21 2に蓄積して 、る命令列 (I # 26〜1 # 28)の後続命令 (I # 29、 I # 30)を通常用命令 ノ ッファ 212に生じた空き領域に蓄積することを、メモリインターフェース 211に指示 しない(図 11G参照。)。
[0153] (11)中央処理装置 20は、分岐命令 (BI # 2)を実行してループブロック 124の開始 アドレスに分岐する場合には、命令の供給源にループ用命令バッファ 113を選択す ることを、選択回路 216に指示する。
[0154] これに応じて、選択回路 216は、命令の供給源にループ用命令バッファ 113を選 択する。さらに、ループ用命令バッファ 113は、選択回路 216を介して中央処理装置
20に命令列 (I # 22〜1 # 25)を供給する(図 11H参照。 )
[0155] (12)中央処理装置 20は、分岐命令 (BI # 2)を実行してループブロック 122の開始 アドレスに分岐せずに、通常用命令バッファ 212から全ての命令(I # 26〜1 # 28)が 供給された場合には、通常用命令バッファ 212に蓄積して 、る命令列 (I # 26〜1 # 2
8)の後続命令 (I # 29〜1 # 32)を通常用命令バッファ 212に蓄積することを、メモリ インターフェース 211に指示する。
[0156] これに応じて、メモリインターフェース 211は、主記憶装置 1にアクセスし、主記憶装 置 1から命令列 (I # 29〜1 # 32)を読み出して通常用命令バッファ 212に蓄積する。 そして、通常用命令バッファ 212は、選択回路 216を介して中央処理装置 20に命令 列 (1 # 29〜1 # 32)を供給する(図 12A、図 12B参照。 )0
[0157] 以上、説明したように命令供給装置 201によれば、 6語までのループブロックに対し ては、主記憶装置 1にアクセスせずとも、繰り返し命令を供給することができる。
[0158] 例えば、従来の構成で同等の結果を実現する場合には、 4語分の命令を蓄積する 通常用命令バッファとは別に、 6語分の命令を蓄積するループ用命令バッファが必 要である。すなわち、合計して 10語分の命令を蓄積するノ ッファが必要である。
[0159] しかし、命令供給装置 201によれば、 4語分の命令を蓄積する通常用命令バッファ 212を有効に活用することによって、 6語分のループブロックのうち 4語分の命令をル ープ用命令バッファ 113に蓄積し、残り 2語分の命令を通常用命令バッファ 212に蓄 積することができる。すなわち、 6語分のループブロックを一括して蓄積するループ用 命令バッファを設ける必要がなぐ 4語分の命令を蓄積する通常用命令バッファ 212 と、 4語分の命令を蓄積するループ用命令バッファ 113だけが必要であり、合計して 8 語分の命令を蓄積するバッファが必要である。そして、従来の構成と比べると、 2語分 のバッファが削減されて 、る。
[0160] (その他)
なお、閾値レジスタ 213において保持されている閾値は、プログラムによって設定で きるとしてもよい。また、通常用命令バッファ 212の容量内で設定できるとしてもよい。 これに伴い、プログラムの特定に合わせた命令を供給することができる。そして、この 閾値を大きくすることによって、ループブロックの命令に対しては、割り当てられる容 量が大きくなり、効率的に供給することができる。その反面、そのループブロックに後 続する命令列に対しては、割り当てられる容量が小さくなり、そのループブロックと一 緒に通常用命令バッファ 212に蓄積できる命令数が少なくなるというトレードオフがあ る。
[0161] なお、命令供給装置は、フルカスタム LSI (Large Scale Integration)によって実現さ れるとしてもよい。また、 ASIC (Application Specific Integrated Circuit)等のようなセミ カスタム LSIによって実現されるとしてもよい。また、 FPGA (Field Programmable Gate Array)ゝ CPLD (Complex Programmable Logic Device)等のようなプログラマブノレ'口 ジック 'デバイスによって実現されるとしてもよい。また、動的に回路構成が書き換え 可能なダイナミック ·リコンフィギユラブル ·デバイスとして実現されるとしてもよ!、。
[0162] さらに、命令供給装置を構成する 1乃至 2以上の機能を、これ等の LSIに形成する 設十ァ ~~タは、 VHDL (Very high speed integrated circuit Hardware Description Language) , Verilog— HDL、 SystemC等のようなハードウェア記述言語によって記 述されたプログラム(以下、 HDLプログラムと呼称する。)としてもよい。また、 HDLプ ログラムを論理合成して得られるゲート'レベルのネットリストとしてもよい。また、ゲート 'レベルのネットリストに、配置情報、プロセス条件等を付加したマクロセル情報として もよい。また、寸法、タイミング等が規定されたマスクデータとしてもよい。
[0163] さらに、設計データは、コンピュータシステム、組み込みシステム等のようなハードウ ヱアシステムに読み出され得るように、光学記録媒体 (例えば、 CD— ROM等。)、磁 気記録媒体 (例えば、ハードディスク等。)、光磁気記録媒体 (例えば、 MO等。)、半 導体メモリ(例えば、 RAM等。)等のようなコンピュータ読み取り可能な記録媒体に記 録しておくとしてもよい。そして、記録媒体を介して他のハードウェアタシステムに読 み取られた設計データは、ダウンロードケーブルを介して、プログラマブル 'ロジック' デバイスにダウンロードされるとしてもよい。
[0164] または、設計データは、ネットワーク等のような伝送路を経由して他のハードウェア システムに取得され得るように、伝送路上のハードウェアシステムに保持しておくとし てもよい。さらに、ハードウェアシステム力 伝送路を介して他のハードウェアタシステ ムに取得された設計データは、ダウンロードケーブルを介して、プログラマブル'ロジ ック ·デバイスにダウンロードされるとしてよい。
[0165] または、論理合成、配置、配線された設計データは、通電時に FPGAに転送され 得るように、シリアル ROMに記録しておくとしてもよい。そして、シリアル ROMに記録 された設計データは、通電時に、直接、 FPGAにダウンロードされるとしてもよい。 産業上の利用可能性
[0166] 本発明は、主記憶装置から読み出した命令を中央処理装置に供給する命令供給 装置等として、特に、ループ用命令バッファの容量を増加させることなぐより多数の 命令によるループについて主記憶装置へのアクセスを行うことなく命令供給を行う命 令供給装置等として、禾 IJ用することができる。

Claims

請求の範囲
[1] 主記憶装置から読み出した命令を中央処理装置に供給する命令供給装置であつ て、
前記主記憶装置に格納されて 、る命令列のうち、前記中央処理装置に繰り返し供 給される第 1の命令列を前記中央処理装置に再度供給する前に、前記第 1の命令列 の先頭部分である第 1の部分命令列を蓄積する第 1のバッファと、
前記第 1の命令列を前記中央処理装置に繰り返し供給する際に、前記第 1のバッ ファに蓄積されている前記第 1の部分命令列を前記中央処理装置に供給しながら、 前記第 1の部分命令列に後続する第 2の部分命令列を蓄積する第 2のバッファと、 前記第 1の部分命令列の全てを前記中央処理装置に供給すると、前記第 2のバッ ファに蓄積されている第 2の部分命令列から、前記第 1の部分命令列の後続命令を 前記中央処理装置に供給する選択手段と
を備えることを特徴とする命令供給装置。
[2] 前記命令供給装置は、さらに、
前記主記憶装置に格納されて 、る命令列のうち、前記第 1の命令列以外で前記中 央処理装置に繰り返し供給される第 2の命令列を前記中央処理装置に再度供給す る前に、前記第 2の命令列の先頭部分である第 3の部分命令列を蓄積する第 3のバ ッファを備え、
前記第 2の命令列を前記中央処理装置に繰り返し供給する際に、前記第 3のバッ ファに蓄積されている前記第 3の部分命令列を前記中央処理装置に供給しながら、 前記第 3の部分命令列に後続する第 4の部分命令列を前記第 2のバッファに蓄積し 前記選択手段は、前記第 3の部分命令列の全てを前記中央処理装置に供給する と、前記第 2のバッファに蓄積されている第 4の部分命令列から、前記第 3の部分命 令列の後続命令を前記中央処理装置に供給する
ことを特徴とする請求項 1に記載の命令供給装置。
[3] 前記第 1の命令列の所在と、前記第 1の部分命令列を前記第 1のバッファに蓄積す ることが特定される情報が含まれる第 1の命令と、 前記第 2の命令列の所在と、前記第 3の部分命令列を前記第 3のバッファに蓄積す ることが特定される情報が含まれる第 2の命令と
が前記主記憶装置に格納されており、
前記命令供給装置は、さらに、
前記第 1の命令を実行した前記中央処理装置から、前記第 1の命令に含まれる情 報に基づいた指示を受けて、前記第 1の部分命令列を前記第 1のバッファに蓄積し、 前記第 2の命令を実行した前記中央処理装置から、前記第 2の命令に含まれる情 報に基づいた指示を受けて、前記第 3の部分命令列を前記第 3のバッファに蓄積す る
ことを特徴とする請求項 2に記載の命令供給装置。
[4] 前記命令供給装置は、さらに、
前記主記憶装置に格納されている命令列を前記中央処理装置に供給する際に、 順次蓄積する第 4のバッファを備え、
前記選択手段は、
前記中央処理装置に繰り返し供給する場合を除いて、前記第 4のバッファに蓄積さ れている命令列を、順次、前記中央処理装置に供給する
ことを特徴とする請求項 2に記載の命令供給装置。
[5] 前記命令供給装置は、
前記第 1の命令列を前記中央処理装置に繰り返し供給する場合を除いて、前記主 記憶装置に格納されている命令列を前記中央処理装置に供給する場合には、順次 、前記第 2のバッファに蓄積する
ことを特徴とする請求項 1に記載の命令供給装置。
[6] 前記命令供給装置は、さらに、
前記第 2のバッファに蓄積されている第 2の部分命令列を前記中央処理装置に供 給している間は、前記第 2の部分命令列を前記中央処理装置に供給することによつ て前記第 2のバッファに生じた空き容量が所定の容量を超えるまでは、前記第 2の部 分命令列の後続命令を前記第 2のバッファに蓄積しない
ことを特徴とする請求項 5に記載の命令供給装置。
[7] 前記命令供給装置は、さらに、
前記所定の容量を保持するレジスタを備え、
前記中央処理装置からの指示に応じて、前記所定の容量が設定されて前記レジス タに保持される
ことを特徴とする請求項 6に記載の命令供給装置。
[8] 第 1のバッファと第 2のバッファとを備えて主記憶装置力 読み出した命令を中央 処理装置に供給する命令供給装置を制御する命令供給制御方法であって、 前記主記憶装置に格納されて 、る命令列のうち、前記中央処理装置に繰り返し供 給される第 1の命令列を前記中央処理装置に再度供給する前に、前記第 1の命令列 の先頭部分である第 1の部分命令列を前記第 1のノ ッファに蓄積し、
前記第 1の命令列を前記中央処理装置に繰り返し供給する際に、前記第 1のバッ ファに蓄積されている前記第 1の部分命令列を前記中央処理装置に供給しながら、 前記第 1の部分命令列に後続する第 2の部分命令列を前記第 2のバッファに蓄積し 前記第 1の部分命令列の全てを前記中央処理装置に供給すると、前記第 2のバッ ファに蓄積されている第 2の部分命令列から、前記第 1の部分命令列の後続命令を 前記中央処理装置に供給する
ことを特徴とする命令供給制御方法。
PCT/JP2005/008429 2004-11-25 2005-05-09 命令供給装置 WO2006057084A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US11/720,011 US7822949B2 (en) 2004-11-25 2005-05-09 Command supply device that supplies a command read out from a main memory to a central processing unit
EP05737193A EP1826667A4 (en) 2004-11-25 2005-05-09 INSTRUCTION PROVIDING DEVICE
JP2006546623A JP4086885B2 (ja) 2004-11-25 2005-05-09 命令供給装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004-340660 2004-11-25
JP2004340660 2004-11-25

Publications (1)

Publication Number Publication Date
WO2006057084A1 true WO2006057084A1 (ja) 2006-06-01

Family

ID=36497830

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2005/008429 WO2006057084A1 (ja) 2004-11-25 2005-05-09 命令供給装置

Country Status (6)

Country Link
US (1) US7822949B2 (ja)
EP (1) EP1826667A4 (ja)
JP (1) JP4086885B2 (ja)
CN (1) CN101065725A (ja)
TW (1) TW200617776A (ja)
WO (1) WO2006057084A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1962181A4 (en) * 2005-12-02 2010-05-26 Panasonic Corp BUFFER CONTROL UNIT AND BUFFER MEMORY
JP4690424B2 (ja) 2005-12-26 2011-06-01 パナソニック株式会社 コマンド処理装置、方法、及び集積回路装置
US9052910B2 (en) * 2007-10-25 2015-06-09 International Business Machines Corporation Efficiency of short loop instruction fetch
US9772851B2 (en) 2007-10-25 2017-09-26 International Business Machines Corporation Retrieving instructions of a single branch, backwards short loop from a local loop buffer or virtual loop buffer
CN101903868B (zh) * 2007-12-21 2012-07-04 松下电器产业株式会社 存储装置以及其控制方法
JPWO2010021119A1 (ja) * 2008-08-21 2012-01-26 パナソニック株式会社 命令制御装置
US9952869B2 (en) 2009-11-04 2018-04-24 Ceva D.S.P. Ltd. System and method for using a branch mis-prediction buffer
CN102480387A (zh) * 2010-11-30 2012-05-30 英业达股份有限公司 机架式服务器装置
US9377966B2 (en) 2013-10-09 2016-06-28 Samsung Electronics Co., Ltd. Method and apparatus for efficiently processing storage commands
KR102401271B1 (ko) * 2015-09-08 2022-05-24 삼성전자주식회사 메모리 시스템 및 그 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5952349A (ja) * 1982-09-17 1984-03-26 Nec Corp 命令先取制御装置
JPS63314644A (ja) * 1987-06-17 1988-12-22 Nec Corp デ−タ処理装置
JPH01169633A (ja) * 1987-12-25 1989-07-04 Hitachi Ltd 情報処理装置
JP2004513427A (ja) * 2000-11-02 2004-04-30 インテル・コーポレーション ハードウェア・ループ

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4626988A (en) * 1983-03-07 1986-12-02 International Business Machines Corporation Instruction fetch look-aside buffer with loop mode control
EP1050804A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Execution of instruction loops
US6766444B1 (en) * 2000-11-02 2004-07-20 Intel Corporation Hardware loops
US6643755B2 (en) * 2001-02-20 2003-11-04 Koninklijke Philips Electronics N.V. Cyclically sequential memory prefetch
JP3656587B2 (ja) * 2001-10-01 2005-06-08 日本電気株式会社 並列演算プロセッサ、その演算制御方法及びプログラム
JP3804941B2 (ja) * 2002-06-28 2006-08-02 富士通株式会社 命令フェッチ制御装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5952349A (ja) * 1982-09-17 1984-03-26 Nec Corp 命令先取制御装置
JPS63314644A (ja) * 1987-06-17 1988-12-22 Nec Corp デ−タ処理装置
JPH01169633A (ja) * 1987-12-25 1989-07-04 Hitachi Ltd 情報処理装置
JP2004513427A (ja) * 2000-11-02 2004-04-30 インテル・コーポレーション ハードウェア・ループ

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP1826667A4 *

Also Published As

Publication number Publication date
EP1826667A4 (en) 2008-07-23
JP4086885B2 (ja) 2008-05-14
US20080086621A1 (en) 2008-04-10
EP1826667A1 (en) 2007-08-29
US7822949B2 (en) 2010-10-26
CN101065725A (zh) 2007-10-31
TW200617776A (en) 2006-06-01
JPWO2006057084A1 (ja) 2008-06-05

Similar Documents

Publication Publication Date Title
WO2006057084A1 (ja) 命令供給装置
CN101375228B (zh) 具有省电指令高速缓存通路预测器和指令代替方案的微处理器
TWI426452B (zh) Work processing device
KR100497078B1 (ko) 프로그램 제품 및 데이터 처리장치
JP2006509291A (ja) マイクロプロセッサ電力消費のソフトウェアベースの制御
JP4272108B2 (ja) データ処理装置用バス相互接続ブロックの設計に関するフレキシビリティの改善
TWI426451B (zh) Work processing device
JP2006509290A (ja) マイクロプロセッサ電力消費低減のためのレジスタファイルゲーティング
JP5985900B2 (ja) 動作合成装置、動作合成装置を備えたデータ処理システム、及び、動作合成プログラム
JP2007219581A (ja) メモリコントローラおよびこれを搭載する電子機器
JP2004171573A (ja) 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ
JP4076973B2 (ja) データ処理装置を使用する場合のフレキシビリティの改善
CN100378656C (zh) 具有非易失性存储器的集成电路以及用于从所述存储器中取数据的方法
WO2006112190A1 (ja) プロセッサ
US6851033B2 (en) Memory access prediction in a data processing apparatus
JPWO2007074583A1 (ja) 再構成可能な演算器を持つプロセッサ
JP6520416B2 (ja) 演算処理装置および演算処理装置の処理方法
JP4409620B2 (ja) 演算処理装置、キャッシュメモリ制御装置及び制御方法
CN101790719A (zh) 低开销/省电处理器同步机制及其应用
JP2003347930A (ja) プログラマブル論理回路及びコンピュータシステム並びにキャッシュ方法
US6662293B1 (en) Instruction dependency scoreboard with a hierarchical structure
US11010318B2 (en) Method and apparatus for efficient and flexible direct memory access
JP4664011B2 (ja) 情報処理装置及び情報処理方法
US20050272197A1 (en) Semiconductor device
JP3767529B2 (ja) マイクロプロセッサ

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

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

AL Designated countries for regional patents

Kind code of ref document: A1

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

121 Ep: the epo has been informed by wipo that ep was designated in this application
DPE1 Request for preliminary examination filed after expiration of 19th month from priority date (pct application filed from 20040101)
WWE Wipo information: entry into national phase

Ref document number: 2006546623

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 11720011

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 2005737193

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 200580040534.6

Country of ref document: CN

NENP Non-entry into the national phase

Ref country code: DE

WWP Wipo information: published in national office

Ref document number: 2005737193

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 11720011

Country of ref document: US