[go: up one dir, main page]

WO1998036351A1 - Processeur de donnees - Google Patents

Processeur de donnees Download PDF

Info

Publication number
WO1998036351A1
WO1998036351A1 PCT/JP1997/000411 JP9700411W WO9836351A1 WO 1998036351 A1 WO1998036351 A1 WO 1998036351A1 JP 9700411 W JP9700411 W JP 9700411W WO 9836351 A1 WO9836351 A1 WO 9836351A1
Authority
WO
WIPO (PCT)
Prior art keywords
instruction
data processing
instructions
register
buffer
Prior art date
Application number
PCT/JP1997/000411
Other languages
English (en)
French (fr)
Inventor
Mitsuru Hiraki
Atsushi Kiuchi
Kesami Hagiwara
Original Assignee
Hitachi, 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 Hitachi, Ltd. filed Critical Hitachi, Ltd.
Priority to US09/367,536 priority Critical patent/US6505295B1/en
Priority to PCT/JP1997/000411 priority patent/WO1998036351A1/ja
Publication of WO1998036351A1 publication Critical patent/WO1998036351A1/ja
Priority to US10/302,850 priority patent/US7080240B2/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter

Definitions

  • the present invention relates to a data processing device such as a microprocessor and a digital signal processor (DSP), and more particularly to a technology effective when applied to an instruction buffer.
  • DSP digital signal processor
  • Data processing devices such as microprocessors and digital signal processors (DSPs) are widely used as LSIs that perform multimedia processing as described above.
  • DSPs digital signal processors
  • LSIs Data processing devices
  • these data processing apparatuses execute multimedia processing, there are very many processings for executing a loop including a relatively small number of instructions.
  • multiply-accumulate operations are (1) multiplying, and (2) adding the multiplication result to the accumulated value up to that point. Is repeated many times.
  • a digital signal processor supports an instruction (repeat instruction) that generates an internal state in which a series of instructions is repeatedly executed.
  • repeat instruction Immediately after that, specify the number of a series of instructions to be repeatedly executed and the number of times to execute repeatedly.
  • instructions that are repeatedly executed many times are executed without having to read them out of memory (ROM, RAM, or cache memory) many times. Therefore, high speed and low power consumption are achieved.
  • TMS320C30 Third Generation Digital Signal 'Processor User' Manual (published in 1991 by Texas Instruments Corporation). This is described in Japanese Unexamined Patent Publication No. Hei 4-2293124 (hereinafter referred to as prior art 2). Disclosure of the invention
  • the repeat control circuit requires a lot of hardware such as a repeat start address register, a repeat end address register, a repeat count register, a comparison circuit, and a down counter, such a repeat control circuit is necessary for a micro-processor. It is not always advisable to increase the circuit scale by introducing L!
  • loops of various structures appear. These include loops to which a control method for repeatedly reading an instruction from the instruction sofa is not applicable in principle. For example, if there are multiple paths in a loop and the paths to be taken differ depending on the number of times the loop is repeated, the instruction buffer stores only the instructions executed in the first path, so the second and subsequent loops are supported. become unable. Therefore, it is necessary to apply the control to read out the instruction repeatedly from the -It is necessary that the microprocessor has a means for inhibiting according to the structure of the loop.
  • the digital signal processors as in the prior art 1 and the prior art 2 do not have such a means, and the control to repeatedly read the instruction from the instruction buffer is always performed during the loop processing. There is a problem that the program processing cannot be performed correctly when encountering a loop with a structure that cannot apply the control of repeatedly reading instructions from the L.
  • Japanese Patent Application Laid-Open No. 4-333929 discloses a method for accelerating program processing by ensuring that all instructions in a loop are resident in a cache memory during loop processing. A technique for measuring is described.
  • the cache memory always operates at the time of reading an instruction (unless a cache miss), regardless of whether or not loop processing is being executed.
  • it is necessary to reduce the capacity of the cache memory itself.
  • the hit rate is reduced and the program processing cannot be sped up.
  • An object of the present invention is to provide a data processing apparatus having control means for reducing the power required for memory access by repeatedly reading an instruction from a small buffer during loop processing even though a repeat instruction cannot be used. To provide.
  • Another object of the present invention is to provide a data processing apparatus including means for selecting whether or not to apply control to repeatedly read an instruction to be repeatedly executed from a small-scale buffer during loop processing. .
  • a data processing device (100, 700, 900, 1400, 1600) for reading and executing an instruction stored in the first instruction storage means (102, 702, 902, 1402, 1602). Is the result of executing an instruction that modifies the contents of the registers (125, 742, 931, 932, 1429, 1629) prior to the sequence of instructions to be executed repeatedly.
  • the series of instructions to be repeatedly executed is stored in a second instruction storage means (104, 104). 704, 904, 1441, 1621) and repeatedly output from the second instruction storage means (104, 704, 904, 1441, 11621) (FIG. 1, See Figure 5, Figure 7, Figure 11, and Figure 13).
  • the last instruction of the series of instructions to be repeatedly executed is the series of instructions when a predetermined condition is satisfied. This is an instruction that causes a branch to the first instruction.
  • the instruction for changing the contents of the register (125, 1429, 1629) is executed by the register (125, 1429, 1600).
  • This instruction specifies the logical value of the specific bit (124, 1428, 1628) included in 629) (see Figure 1, Figure 11, and Figure 13).
  • the instruction to change the contents of the register is an instruction to load the register (742) with the number of times to repeat the execution of the series of instructions (see FIG. 5). .
  • the second instruction storage means includes an instruction queue for storing a plurality of instructions read from the first instruction storage means prior to execution. Is another instruction buffer (104, 704, 904).
  • the instruction for changing the contents of the register (931, 932) includes information for specifying a position of a head instruction of the series of instructions to be repeatedly executed and a position of a tail instruction. This is an instruction to write the information to be specified to the registers (931, 932) (see FIG. 7).
  • the number of the instructions to be repeatedly executed which is obtained from the information specifying the position of the head instruction and the information specifying the position of the tail instruction, is equal to or less than a specific value. Is equivalent to the specific condition (see FIG. 7).
  • the means is an instruction queue (1421, 1621) for storing a plurality of instructions read from the first instruction storage means prior to execution.
  • the second instruction storage means (104, 704, 904) has a gate terminal connected to the first node (WL-k).
  • One of its source and drain terminals is connected to the second node (BL-1), the other is connected to the third node (Nl 101), the first N-channel MOSFET (1 103), and its gate terminal Is connected to the first node (WL-k), one of its source and drain terminal is connected to the fourth node (BLB-1), and the other is connected to the fifth node (Nl 102).
  • 2 N-channel MOSFET (111), its gate terminal is connected to the fifth node (N1102), and its drain terminal is connected to the third node (N111).
  • the source terminal of which is connected to the first operating potential point (GND), a third N-channel MOSFET (1 101), and the gate terminal of which is connected to the third node (N 1 101 ), The drain terminal of which is connected to the fifth node (N1102), and the source terminal of which is connected to the first operating potential point (GND).
  • It has a memory holding circuit (1030-k-1) that includes a MOSFET (1102) as a component (see Figs. 1, 5, 5, 7, 8, and 9).
  • the second instruction storage means (104, 704, 904) further includes the second node (BL-1) and the fourth node (BLB_1). ) Is provided with an amplifier circuit (1040-1) that responds to an input signal (see FIGS. 1, 5, 7, and 8).
  • the first instruction storage means 1402, 1602
  • the read arbitrary instruction is temporarily stored in the second instruction storage means (1421, 1621) only until it is executed at most once (see FIGS. 11 and 13). ).
  • the data processing device (100) when executing a certain loop, simply reads a specific bit (12) just before executing the loop in order to repeatedly read an instruction from the buffer (104). -
  • FIG. 1 shows a configuration of a data processing apparatus according to a first embodiment (Embodiment 1) of the present invention.
  • FIG. 2 shows an instruction read operation of the data processing device of the first embodiment.
  • FIG. 3 shows an algorithm for inserting a buffer control flag setting instruction into a program description in the data processing device of the first embodiment.
  • Fig. 4 shows the rules when a speech encoding / decoding program is executed by a data processing device.
  • FIG. 5 shows a configuration of a data processing apparatus according to a second embodiment (Embodiment 2) of the present invention.
  • FIG. 6 shows an algorithm for replacing an instruction in a program description in the data processing device of the second embodiment.
  • FIG. 7 shows a configuration of a data processing device according to a third embodiment of the present invention.
  • FIG. 8 shows a configuration of a buffer included in the data processing device of the first embodiment.
  • FIG. 9 shows a configuration of a memory cell included in the buffer.
  • FIG. 10 shows a comparison of the area occupied by the buffers.
  • FIG. 11 shows the configuration of a data processing apparatus according to a fourth embodiment (Embodiment 4) of the present invention.
  • FIG. 12 shows the control of the data processing device of the fourth embodiment.
  • FIG. 13 shows the configuration of a data processing apparatus according to a fifth embodiment (Embodiment 5) of the present invention.
  • FIG. 14 shows the control of the data processing device of the fifth embodiment.
  • FIG. 15 shows a classification of the embodiment of the present invention.
  • FIG. 1 is a configuration diagram of a data processing device according to a first embodiment of the present invention.
  • the data processing device 100 includes a data processing unit including a control unit 120, an instruction execution unit 140, a program counter 160, a buffer 104, a selector 106, and the like, and a memory 102. It is composed of The data processing device 100 may be formed on a single semiconductor substrate, or only the data processing unit may be formed on a single semiconductor substrate.
  • the control unit 120 includes an instruction decoder 122, a control register 125, a buffer control circuit 126, and the like. Note that an instruction fetch queue (instruction prefetch buffer) may be provided in the instruction decoder 122 or between the selector 106 and the instruction decoder 122.
  • the memory 102 is, for example, a ROM (Read Only Memory) or a RAM (Random Access Memory) as a main memory, or a cache memory that holds a part of an instruction stored in the main memory.
  • R 0 M is composed of an electrically rewritable nonvolatile memory such as a mask ROM programmed in a semiconductor manufacturing process or a flash memory.
  • the RAM is composed of, for example, a static random access memory (SRAM), a dynamic random access memory (DRAM), or a ferroelectric memory (an electrically rewritable nonvolatile memory whose write cycle and read cycle are almost equal).
  • the cache memory is composed of a full asso- ciative / set associative method.
  • the output S166 of the program counter 160 may be supplied to the memory 102 via an address bus.
  • control for repeatedly reading instructions from the buffer 104 when a loop in which the last instruction of an instruction group to be repeatedly executed is a conditional branch instruction to the first instruction is executed is applied. . Therefore, no repeat instruction is used.
  • An outline of the operation of repeatedly executing the instruction group of the data processing device 100 will be described below. (1) Immediately before executing a loop to which control for repeatedly reading an instruction from the buffer 104 is applied, an instruction for setting a specific bit 124 (buffer control flag) is executed. Immediately after bit 124 (buffer control flag) is set, the instructions read from the memory 102 are executed and written to the buffer 104 sequentially. Move on to (2). (2) A conditional branch instruction (the last instruction) is read for the first time after bit 124 (buffer control flag) is set, and if the condition is satisfied, then (3), if not, Moves to (5).
  • conditional branch instruction (the last instruction) is read from the buffer 104, and if the condition is satisfied, the process proceeds to (3). If not, the process proceeds to (5).
  • the instruction is repeatedly read from the small-sized buffer 104 during the loop processing without using the repeat instruction, so that the memory 102 is not accessed.
  • bit 124 buffer control flag
  • no access is made to buffer 104 during any loop processing. Therefore, to prohibit the application of the control to repeatedly read an instruction from the buffer 104 when executing a loop, simply insert a set instruction of the bit 124 (buffer control flag) immediately before executing the loop. Just do it.
  • the following is an example of a loop where the last instruction of the group of instructions to be repeatedly executed is a conditional branch instruction to the first instruction.
  • gr0-m represents the set of the number of loops to a register (gr0, for example, provided in the instruction execution unit).
  • G r 0—g r 0—1 represents the decrement of the number of loops.
  • NZ Not Zero
  • an instruction (set BCF) for setting the buffer control flag 1 24 (BCF) in the control register 125 Is inserted before the first instruction of the loop (inst (1)) as follows.
  • FIG. 2 shows an instruction reading operation performed when the data processing device 100 processes the loop described above.
  • the operation of the data processing device 100 will be described with reference to FIG.
  • the instruction reading operation of the data processing device 100 has the following three operation states (see (b) of FIG. 2).
  • the instruction read from the memory 102 according to the value of the program counter 160 is sent to the control unit 120 as it is via the memory output S101 and the bus S102. Buffer 104 has stopped.
  • the selector 106 selects the signal of the output S103 from the bus S102 by the selection signal SEL.
  • the instructions read from the memory 102 are sent to the control unit 120 and are sequentially written to the buffer 104 at the same time.
  • the selector 106 selects the signal of the output S103 from the bus S102 by the selection signal SEL.
  • the instruction read from the buffer 104 is sent to the control unit 120.
  • Memory 102 is stopped.
  • the selector 106 selects the signal of the output S 104 from the buffer 104 by the selection signal S EL.
  • the data processing device 100 reads out the instruction in the “normal” state.
  • the instruction is read according to the following rules.
  • the buffer control circuit 126 To perform the operation of (V), the buffer control circuit 126 outputs the output S 126 from the buffer control flag 124 (BCF) and the branch information S 123 from the instruction decoder 122 (detection of a conditional branch instruction and The following control signals are issued to the memory 102 buffer 104, the selector 106, and the buffer control flag 124 (BCF) based on the information of “established Z not established”.
  • the operation of the memory 102 is instructed to stop Z.
  • the signal is at the “LOW” level, the memory 102 is stopped in the “read from buffer” state.
  • the memory 102 is operated. This signal may be used as a memory access request signal.
  • the selector 106 is controlled. At the “HIGH” level, the output S104 from the buffer is selected in the “read from buffer” state. When the signal is at the "LOW” level, the output S103 from the bus S102 is selected.
  • the pointer of the buffer 104 is returned to the head. Activated ("HIGH" level) when a conditional branch instruction is read in "write to buffer” or “read from buffer” state.
  • the operation of the buffer 104 is instructed to stop Z. It is set to "HIGH” in the "write to buffer” state or the “read from buffer” state. 04 to work.
  • the buffer control circuit 126 can be realized by a very small sequential circuit.
  • the access to the buffer 104 is not performed during any loop processing unless the buffer control flag 124 (BCF) is set. Therefore, in order to prohibit the application of the control of repeatedly reading an instruction from the buffer 104 when executing a certain loop, the buffer control flag 124 (just before inst (1) in the above example) can be used just before executing the loop. You do not need to insert an instruction to set BCF) (set BCF).
  • a loop that does not include any single control instruction such as a branch instruction other than the tail instruction (hereinafter referred to as a “simple repetition loop”), the number of instructions constituting the loop, 'buffer 1
  • the buffer control flag set instruction ( set BCF) is inserted in the program description. The algorithm shown in FIG. 3 is described below.
  • Condition A The referenced instruction is a conditional branch instruction (in the above example, if NZ g oto LOOP).
  • Condition B (branch destination address) ⁇ (conditional branch instruction address)
  • Condition C (the number of instructions from the branch destination instruction to the conditional branch instruction) ⁇ (buffer 10
  • n + 2 ⁇ the maximum number of instructions that buffer 104 can hold
  • Condition D Instruction referenced from the branch destination instruction to the conditional branch instruction (in the above example, from inst (1) to if Z goto LOOP) (if NZ go to LOOP in the above example) There are no other flow control instructions (branch instructions, etc.).
  • FIG. 4 shows the distribution of the size of a simple repetition loop for executing the speech encoding / decoding processing program.
  • the horizontal axis is the loop size (the number of instructions), and the vertical axis is the cumulative number of cycles of loop execution (%).
  • FIG. 5 is a configuration diagram of a data processing device according to a second embodiment of the present invention.
  • the data processing apparatus 700 may be formed on a single semiconductor substrate, or only the data processing section may be formed on a single semiconductor substrate.
  • the control unit 720 includes an instruction decoder 722, a buffer control circuit 724, and the like. Note that an instruction fetch queue (instruction prefetch buffer) may be provided in the instruction decoder 722 or between the selector 706 and the instruction decoder 722.
  • the memory 702 is, for example, a ROM (Read Only Memory) or a RAM (Random Access Memory) as a main memory, or a cache memory that holds a part of an instruction stored in the main memory.
  • R 0 M is composed of an electrically rewritable nonvolatile memory such as a mask R 0 M programmed in a semiconductor manufacturing process or a flash memory.
  • RAM is, for example, SRAM (Static Random Access Memory), DRAM (Dynamic Random Access Memory) or ferroelectric memory (write cycle and read cycle power, almost equal, electrically rewritable nonvolatile memory) Be composed.
  • the output S 762 of the program counter 760 may be supplied to the memory 720 via an address path.
  • the data processing device 700 includes a loop count register 742 (L C) in place of the buffer control flag 124 (B C F) provided in the data processing device 100.
  • the data processor 700 is not provided with a repeat instruction. So, for example, to execute n (n is a positive integer) instructions (inst (1), inst (2), ⁇ , inst (n)) m times (m is a positive integer), Code the program as follows.
  • g r0-m represents a set of the number of loops to a general-purpose register (g r0, for example, provided in the instruction execution unit).
  • Gr 0—gr 0—1 represents the decrement of the number of loops.
  • NZ goto L 00 P indicates that if the operation result of the previous loop decrement is not 0 (NZ: Not Zero), that is, if the loop has not ended, the loop This is a conditional branch instruction that causes a branch to the first instruction (inst (1)) of the instruction.
  • the instruction reading operation when the data processing device 700 processes the loop described above will be described below.
  • the data processing device 700 has three operation states of “normal”, “writing to a buffer”, and “reading from a buffer” (see FIG. 2B).
  • the initial value of the loop count register 742 (LC) is 0.
  • the data processing device 700 reads the instruction in the “normal” state.
  • the loop count register 742 (LC) is loaded with the number of times to repeat the loop (a value other than 0) (LC-m), the following rules are applied.
  • the instruction is read according to the following.
  • condition When a conditional branch instruction (ifNZgotoLOOP) is read in the "write to buffer” state, the condition follows (iii) if the condition is satisfied and follows (V) if it is not satisfied.
  • ifNZgotoLOOP conditional branch instruction
  • the buffer control circuit 724 In order to perform the operations (i) to (V), the buffer control circuit 724 outputs the output S 742 from the loop count register 742 (LC) and the branch information S 722 from the instruction decoder 722 (detection of a conditional branch instruction and The following control signals are issued to the memory 702, the buffer 704, and the selector 706 based on the information regarding the satisfaction / non-satisfaction of the condition).
  • the operation of the memory 702 is instructed to stop Z.
  • the memory 702 is stopped in the “read from buffer” state.
  • the memory 702 is operated at the “HIGH” level.
  • This signal may be a memory access request signal.
  • the selector 706 is controlled. At the "HIGH” level, the output S704 from the buffer is selected in the “buffer power reading” state. When the level is “L ⁇ W”, the output S703 from the bus S702 is selected. (c) Pointer reset signal RST:
  • the pointer of the sofa 704 is returned to the top.
  • a conditional branch instruction is read in the "write to buffer” state or the “read from buffer” state ("HI GH") level.
  • the operation of the buffer 704 is instructed to stop Z.
  • the buffer In a “write to buffer” state or a “read from buffer” state, the buffer is set to the “HIGH” level to operate the buffer 704.
  • the buffer 704 is instructed to write Z read. In the "write to buffer” state, it is set to "HIGH” level to instruct a write.
  • instructions can be repeatedly read from the small-scale buffer 704 during loop processing without using a repeat instruction, and the power consumed in memory access can be reduced.
  • the buffer control circuit 724 can be realized by a very small-scale sequential circuit.
  • the access to the buffer 704 is not performed during any loop processing unless a value other than 0 is read into the loop count register 742 (LC) (if 0 is read). Therefore, in order to prohibit the application of the control of repeatedly reading an instruction from the buffer 704 when executing a certain loop, the loop count register 742 (LC) should not be used to count the number of loops (the register gr 0 etc. Use it).
  • Condition A The referenced instruction is a conditional branch instruction (in the above example, if NZ g oto L 00 P).
  • Condition B (branch destination address) ⁇ (conditional branch instruction address)
  • Condition C (the number of instructions from the branch destination instruction to the conditional branch instruction) ⁇ (buffer 704, 'the maximum number of instructions that can be held), n + 2 ⁇ (buffer 704 can be held in the above example) Maximum number of instructions)
  • Condition D Instruction referenced from the branch destination instruction to the conditional branch instruction (from inst (1) to if NZ goto LOOP in the above example) (if NZ go to LOOP in the above example) There are no other flow control instructions (branch instructions, etc.).
  • Condition E The instruction immediately before the branch destination is a load instruction to a register (gr0-m in the above example).
  • Condition F The instruction immediately before the conditional branch instruction is an instruction (g r 0—gr 0 ⁇ 1) that decrements the value of the same register.
  • FIG. 7 is a configuration diagram of a data processing device according to a third embodiment of the present invention.
  • the data processing device 900 includes a data processing unit including a control unit 940, an instruction execution unit 950, a program counter 960, a buffer 904, a selector 906, and the like, and a c data processing device 900 including a memory 902. It may be formed on one semiconductor substrate, or only the data processing section may be formed on a single semiconductor substrate.
  • the control unit 940 includes an instruction decoder 920, a repeat control unit 930, and the like. Note that an instruction buffer (instruction prefetch buffer) may be provided in the instruction decoder 920 or between the selector 906 and the instruction decoder 920.
  • the memory 902 is, for example, a ROM (Read Only Memory) or a RAM (Random Access Memory) as a main memory, or a cache memory that holds a part of an instruction stored in the main memory.
  • R 0M is composed of an electrically rewritable nonvolatile memory such as a mask R 0M programmed in a semiconductor manufacturing process or a flash memory.
  • RAM is composed of, for example, static random access memory (SRAM), dynamic random access memory (DRAM), and ferroelectric memory (electrically rewritable non-volatile memory with almost the same write cycle and read cycle power).
  • the data processor 900 is provided with a repeat instruction.
  • the repeat control section 930 includes a repeat start address register 931 (RS), a repeat end address register 932 (RE), a repeat count register 933 (RC), a comparison circuit 935, a down counter 936, a difference detection circuit 937, ⁇
  • a sofa control circuit 938 is provided.
  • n (n is a positive integer) instructions (inst (l), inst (2),...,
  • RS-START indicates an instruction to load the address (START) of the first instruction (inst (1)) of a series of instructions to be repeatedly executed into the repeat start address register 931 (RS).
  • END Indicates an instruction to load the end instruction (END) of a series of instructions to be repeatedly executed into the repeat end address register 932 (RE).
  • RC-m indicates an instruction to be repeatedly executed.
  • RPT is an instruction (repeat instruction) that generates an internal state in which a repeat instruction is to be executed.
  • the contents of the repeat end address register 932 (RE) and the program counter (PC) are compared by the comparison circuit 935. If they match, the contents of the repeat count register 933 (RC) become 1 If not, the value of the repeat counter 933 (RC) is decremented by 1 by the down counter 936, and the value of the program counter 960 is rewritten to the value of the repeat address register 931 (RS). If the contents of the repeat end address register 932 (RE) match the program counter (PC), and the contents of the repeat count register 933 (RC) are 1, the repeat state is released.
  • RC repeat count register 933
  • RC—m and RPT do not necessarily need to be divided into four instruction codes, for example, the above four instruction codes can be combined into one instruction code. A capability. Further, it is also possible to RC- a m and RPT integrated RC- m Libby bets instruction.
  • the data processing device 900 controls to repeatedly read the instruction from the small-scale buffer 904 during the repeated execution of the instruction by the repeat instruction.
  • the instruction at the end of the loop already stores the instruction. Since it is overwritten in the place, correct loop processing cannot be performed.
  • the simplest way to avoid this problem is to prohibit the use of control that repeatedly reads instructions from buffer 904 for loops larger than the size of buffer 904. This is realized in the data processing device 900 as follows.
  • the difference detection circuit 937 is based on the difference between the value of the repeat start address register 931 (RS) and the value of the repeat end address register 932 (RE). ) Is calculated. If the number of instructions constituting the loop (n in the above example) exceeds the maximum number of instructions that can be stored in the buffer 904, the difference detection circuit 933 will prohibit access to the buffer 904. Instruct the buffer control circuit 938 to read the instruction from the memory 902 as usual.
  • the position information of the first instruction and the last instruction of a series of instructions to be repeatedly executed is the physical address in which they are stored. Good. Also, the number of instructions (the number of steps) to be repeatedly executed may be obtained from the position information of the first instruction and the last instruction of a series of instructions to be repeatedly executed.
  • FIG. 8 shows an example of the configuration of the buffer 104 provided in the data processing device 100.
  • the buffer 104 is constituted by a memory circuit.
  • the instruction code S103 has an M-bit width, and the maximum number of instructions that can be stored in the buffer 104 is N. That is, the instruction is stored in an N word X M bit memory array.
  • the counter 1 060 counts up the address S 1 0 6 2 given to the address decoder 1 0 7 0 by one.
  • the counter 11060 returns the address S1062 to the top.
  • the address decoder 1 07 decodes the address S 1 062 given by the counter 1060 and selects one corresponding word line WL_k (k-1, 2,..., N).
  • the complementary signal of small amplitude appearing on the bit line pair (BL_1, BLB—1,..., BL—M, BLB—M) from the memory cell selected by the word line is amplified by the amplifier circuit 1040.
  • Transistors 1105 and 1106 are P-channel MOS transistors (P-channel MOSFETs).
  • the transistors 1101, 1102, and 1103.1104 are N-channel MOS transistors (N-channel MOS FETs). “VDD” indicates the power supply voltage, and “GND” indicates the ground voltage.
  • the configuration of the buffer according to the present embodiment can be applied not only to the data processing device 100 but also to the data processing device 700 and the data processing device 900.
  • the buffer 104 when the buffer 104 is configured by a memory circuit, there is an advantage that the area occupied by the buffer can be reduced as compared with the configuration using the register, particularly when the number of instructions stored in the buffer is relatively large.
  • the control unit has an instruction queue (instruction prefetch buffer) for temporarily storing multiple instructions until the instruction is sent to the instruction decoder.
  • instruction queue instruction prefetch buffer
  • the instruction is fetched from the memory into the instruction queue so that there is as little room as possible.
  • the functioning of this instruction queue as the buffer 104 of the data processor 100 was studied. The embodiment will be described below.
  • FIG. 11 is a configuration diagram of a data processing device according to a fourth embodiment of the present invention.
  • the data processing device 1400 includes a data processing unit including a control unit 1420, an instruction execution unit 1440, a program counter 1460, and the like, and a memory 1402.
  • the data processing device 1400 may be formed on a single semiconductor substrate, or only the data processing section may be formed on a single semiconductor substrate.
  • the control unit 14020 includes an instruction decoder 1442, an instruction queue 1421 (IQ 0 to 7), a pointer 14424, an instruction queue control circuit 1426, a control register 1429, and the like.
  • the memory 1402 is, for example, a ROM (Read Only Memory) or a RAM (Random Access Memory) as a main memory, or a cache memory that holds a part of an instruction stored in the main memory.
  • the ROM is composed of an electrically rewritable non-volatile memory such as a mask ROM programmed in a semiconductor manufacturing process or a flash memory.
  • the RAM is composed of, for example, SRAM (Static Random Access Memory), DRAM (Dynamic Random Access Memory) and ferroelectric memory (electrically rewritable non-volatile memory whose write cycle and read cycle are almost equal).
  • the output S 1462 of the program counter 1460 may be supplied to the memory 1402 via an address path.
  • the instruction queue (IQ0-7) functions as a conventional refresh queue when the repetitive instruction readout power is not checked.
  • control is performed according to a rule as shown in FIG.
  • the instruction key is not used during the loop processing without using the repeat instruction. Instructions are repeatedly read from the queues (IQ 0-7). In the meantime, since the instructions are filled in the instruction queue (IQ0 to IQ7), the instructions are not read from the memory 1402, and the power consumed for memory access can be saved.
  • the instruction queue (IQ0-7) is used as usual in any loop processing unless the buffer control flag 1428 (BCF) is set. Therefore, to prohibit the application of control that repeatedly reads an instruction from the instruction queue (IQ 0 to 7) when executing a loop, it is possible to simply apply the control just before executing the loop (inst (1) in the above example). It is only necessary to insert an instruction (set BCF) to set the buffer control flag 1428 (immediately before).
  • Embodiment 1 When the embodiment of this embodiment is applied to a microprocessor originally having an instruction queue, there is a merit that the area can be saved because there is no need to add a buffer 104 as in Embodiment 1. .
  • FIG. 13 is a configuration diagram of a data processing device according to a fifth embodiment of the present invention.
  • the data processing device 1600 includes a data processing unit including a control unit 1620, an instruction execution unit 1640, a program counter 1660, and the like, and a memory 1602.
  • the data processing device 1600 may be formed on a single semiconductor substrate, or only the data processing section may be formed on a single semiconductor substrate.
  • the control unit 1620 includes an instruction decoder 1622, an instruction queue 1621 (IQ0 to 7), an instruction queue control circuit 1626, a control register 1629, and the like.
  • the memory 1602 is, for example, a ROM (Read Only Memory) or a RAM (Random Access Memory) as a main memory or a cache memory that holds a part of an instruction stored in the main memory.
  • R 0 M is composed of an electrically rewritable nonvolatile memory such as a mask ROM programmed in a semiconductor manufacturing process or a flash memory.
  • the RAM is composed of, for example, a static random access memory (SRAM), a dynamic random access memory (DRAM), or a ferroelectric memory (an electrically rewritable non-volatile memory whose write cycle and read cycle are almost equal).
  • the output S 1662 of the program counter 1660 may be supplied to the memory 1602 via an address path.
  • the data processing device 1600 uses an instruction queue (IQ 0 to 7) like the data processing device 1400. However, an execution flag (# 0-7) attached to the instruction queue (IQ0-7) is used instead of the pointer 1424 in the data processing device 1400.
  • the data processing device 1600 is controlled according to a rule as shown in FIG.
  • a repeat instruction is read from the instruction queues (IQs 0 to 7) during loop processing without using a repeat instruction.
  • the instruction queue (IQ 0-7) is full of instructions, so no instructions are read from memory 1602, The power consumed by memory access can be saved.
  • the instruction queue (IQ0-7) is used in the same way as in the past, even during a loop processing, unless the buffer control flag 1628 (BCF) is set. Therefore, to prohibit the application of the control of repeatedly reading an instruction from the instruction queue (IQ 0 to 7) when executing a loop, it is possible to simply apply the control immediately before executing the loop (inst (1) in the above example).
  • the instruction (set BCF) that sets the buffer control flag 1628 (BCF) need not be inserted immediately before).
  • Embodiments of the present invention are classified as shown in FIG. There are the following three methods to determine whether to use a buffer to repeatedly read an instruction during a certain loop processing.
  • control flag For example, the buffer control flag 124 (BCF) of the first embodiment.
  • a loop count register to the loop count register.
  • the loop count register 742 (LC) of the second embodiment For example, the loop count register 742 (LC) of the second embodiment.
  • the buffer 104 of the first embodiment is a completely different functional block from the instruction queue.
  • a buffer is realized by diverting the instruction queue.
  • the buffers (IQ0-7) of the fourth or fifth embodiment are also used as instruction queues.
  • a data processing device including a control unit that reduces power required for memory access by repeatedly reading an instruction from a small buffer during loop processing even though a repeat instruction cannot be used. it can. Further, it is possible to provide a data processing apparatus including means for selecting whether or not to apply control for repeatedly reading instructions to be repeatedly executed from a small-scale buffer during loop processing.

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)
  • Executing Machine-Instructions (AREA)

Description

明 細 書
データ処理装置 技術分野
本発明はマイクロプロセッサ、 デジタルシグナルプロセッサ(D S P (Digital Signal Procesor)) 等のデータ処理装置に関し、 特に命令バッファに適用して有効な技術に関 する。 背景技術
近年、 P C (Personal Computer)、 P D A (Personal Digital Assistants) 、 デジ タルセルラ、ゲーム機、カーナビゲ一シヨンなどの高度情報機器の発展に伴って、 これ らに搭載される L S I (Large Scale Integrated Circuit) に対する低消費電力化の二 ーズが非常に高まってきている。これは、携帯型情報機器では電池使用時間を伸ばした い、また、据え置き型情報機器ではチップ 'パッケージや冷却系のコストを抑えたいと いう要求があるからである。一方、最近は情報機器に画像、音声、通信処理などの高性 能のマルチメディア機能を取り込む動きが活発化している。かくして、マルチメディア 処理を実行するために L S Iに求められる計算能力は上昇の一途をたどっており、これ がし S Iの消費電力を増大させる主な要因のひとつとなっている。
マイクロプロセッサやデジタルシグナルプロセッサ(D S P )などのデータ処理装置 は、上に述べたようなマルチメディア処理を実行する L S Iとして広く用いられている。 ところで、一般にこれらのデータ処理装置がマルチメディァ処理を実行する場合、比較 的少ない個数の命令からなるループを実行する処理が非常に多い。なぜなら、マルチメ ディア処理の内容はほとんどが積和演算を主体とするデジタル信号処理であり、積和演 算は、 (1 )乗算を行う、 (2 )乗算結果をそれまでの累計値に加算する、を多数回繰 り返すことにより行われるからである。
デジタルシグナルプロセッサでは、多くの場合、一連の命令を繰り返し実行すべき内 部状態を発生させる命令(リピート命令)がサポートされている。 リピ一卜命令では、 その直後の繰り返し実行すべき一連の命令の個数および繰り返し実行すべき回数を指 定する。 その結果、多数回繰り返し実行される命令をメモリ (R O M、 R AM又はキヤ ッシュメモリ)からわざわざ何回も読み出すことなく実行される。従って、高速化及び 低消費電力化が図られる。この例としては、日本テキサスィンスツルメンッ株式会社、 1 9 9 0年発行の「T M S 3 2 0 C 3 0 第 3世代ディジタル.シグナル 'プロセッサ ユーザーズ 'マニュアル」 (以下、従来技術 1という。 )ゃ特開平 4— 2 9 3 1 2 4号 公報 (以下、 従来技術 2という。 ) に記載されている。 発明の開示
従来技術 1及び従来技術 2のようなデジタルシグナルプロセッサでル一プ処理時に 命令バッファから命令を繰り返し読み出すことによりメモリアクセスに要する電力を 低減するには、 リピー卜命令を利用できることが前提となっている。従って、 リピ一卜 命令を備えていないデータ処理装置では、従来技術 1及び従来技術 2のようなデジタル シグナルプロセッザで行つているような制御方法は適用できないという問題がある。 デジタル信号処理に用途を特化せずに汎用的に用いられるマイクロプロセッサ等で はリピ一ト命令は必ずしもサポートされていない。これは、 リピート命令を備えるため に命令バッファゃリピート制御回路の導入が必要である。また、 リピート制御回路は、 リピートスタートァドレスレジスタ、 リピ一トェンドアドレスレジスタ、 リピートカウ ントレジスタ、比較回路、ダウンカウンタ等多くのハードウヱァを必要とするため、マ イク口プロセッサにとってこのようなリピート制御回路の導入により回路規模を増大 させることが必ずしも得策ではな L、との見識に基づ! ^、ている。
また、実際のプロダラムで出現するループ処理では単純な繰り返しだけではなく様々 な構造のループが出現する。これらの中には、前記命令ノ ソファから命令を繰り返し読 み出す制御方法が原理的に適用できないループが含まれている。例えば、ループ内に複 数の経路がありループの繰り返し回数によりたどる経路が異なる場合、前記命令バッフ ァには 1回目の経路で実行した命令しか格納されていないので 2回目以降のループに は対応できなくなる。従って、命令バッファから繰り返し命令を読み出す制御の適用を - ループの構造に応じて禁止する手段をマイクロプロセッサが備えている必要がある。し かるに従来技術 1及び従来技術 2のようなデジタルシグナルプロセッサはこのような 手段を備えておらず、ループ処理時は必ず命令バッファから命令を繰り返し読み出す制 御が行われるので、命令ノ <ッファから命令を繰り返し読み出す制御を適用できな L、構造 のループに出くわすと正しくプログラム処理ができないという問題がある。
一方、特開平 4— 333929号公報(以下、従来技術 3という。 )には、ループ処 理実行中にループ内のすべての命令を確実にキヤッシュメモリに駐在させることによ りプログラム処理の高速化をはかる技術が記載されている。従来技術 3ではループ処理 を実行しているか否かによらず、命令読み出し時は(キャッシュミスしない限り)必ず キャッシュメモリが動作する。ループ処理時の電力を低減するためにはキャッシュメモ リ自身の容量を小さくする必要がある。しかるに非ループ処理時にも同じ小容量のキヤ ッシュメモリをアクセスするので、ヒット率が低下しプログラム処理の高速化がはかれ なくなるという問題がある。
本発明の目的は、 リピート命令が利用できないにもかかわらず、ループ処理時に命令 を小規模なバッファから繰り返し読み出すことによりメモリアクセスに要する電力を 低減する制御手段を備えて L、るデータ処理装置を提供することである。
本発明の他の目的は、ループ処理時に繰り返し実行すべき命令を小規模なバッファか ら繰り返し読み出す制御を適用するか否かを選択する手段を備えているデータ処理装 置を提供することである。
本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から 明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の 通りである。
すなわち、第 1の命令記憶手段(1 02、 702、 902、 1 402、 1 602) に 格納されている命令を読み出して実行するデータ処理装置(1 00、 700、 900、 1 400、 1 600)は、繰り返し実行すべき一連の命令に先立ってレジスタ (1 25、 74 2、 93 1、 932、 1 429、 1 62 9)の内容を変更する命令を実行した結果 前記レジスタ ( 1 25、 742、 93 1、 932、 1 429、 1 629) の内容が特定 条件に合致した場合に、 繰り返し実行すべき前記の一連の命令を第 2の命令記憶手段 ( 1 04、 704、 904、 1 42 1、 1 62 1 ) に保持させ前記第 2の命令記憶手段 (1 04、 704、 904、 1 4 2 1、 1 62 1 )から繰り返し出力させるものである (図 1、 図 5、 図 7、 図 1 1、 図 1 3参照) 。
さらに、前記データ処理装置(1 00、 700、 1 4 00、 1 600) において、繰 り返し実行すべき前記の一連の命令の最後の命令は所定の条件が成立したときに前記 の一連の命令の最初の命令への分岐を生じさせる命令である。
さらに、前記データ処理装置(1 00、 1 4 00、 1 600) において、前記レジス 夕 (1 25、 1 429、 1 629) の内容を変更する命令は、前記レジスタ (1 25、 1 429、 1 629 ) に含まれる特定ビッ卜 (1 24、 1 428、 1 628) の論理値 を指定する命令である (図 1、 図 1 1、 図 1 3参照)。
さらに、前記データ処理装置(700)において、前記レジスタの内容を変更する命 令は前記一連の命令の実行を繰り返すべき回数値を前記レジスタ(742)にロードす る命令である (図 5参照) 。
さらに、前記データ処理装置(1 00、 70 0、 900)において、前記第 2の命令 記憶手段は、前記第 1の命令記憶手段から実行に先立って読み出される複数の命令を格 納する命令キューとは別の命令バッファである (1 04、 7 04、 904) 。
さらに、 前記データ処理装置 ( 900) において、前記レジスタ (93 1、 932) の内容を変更する命令は、繰り返し実行すべき前記一連の命令の先頭命令の位置を特定 する情報及び末尾命令の位置を特定する情報を前記レジスタ (93 1、 932)に口一 ドする命令である (図 7参照) 。
さらに、前記データ処理装置(900)において、前記先頭命令の位置を特定する情 報と前記の末尾命令の位置を特定する情報とから求められる繰り返し実行されるべき 前記命令の数が特定の値以下であることが前記特定条件に相当するものである(図 7参 照) 。
さらに、前記データ処理装置( 1 400、 1 6 00) において、前記第 2の命令記憶 -
手段は、前記第 1の命令記憶手段から実行に先立って読み出される複数の命令を格納す る命令キュー (1421、 1621) である。
さらに、前記データ処理装置(100、 700、 900) において、前記の第 2の命 令記憶手段(104、 704、 904)は、そのゲ一卜端子が第 1のノード(WL— k ) に接続され、そのソース、 ドレイン端子の一方が第 2のノード(B L—1 )、他方が第 3のノード(Nl 101)に接続された第 1の Nチャネル型 MOSFET (1 103) と、 そのゲート端子が前記の第 1のノード(WL— k)に接続され、 そのソース、 ドレ イン端子の一方が第 4のノード(BLB— 1 )、他方が第 5のノード(Nl 102)に 接続された第 2の Nチャネル型 MOSFET (1 1 04)と、そのゲ一卜端子が前記の 第 5のノード(N 1 1 02)に接続され、そのドレイン端子が前記の第 3のノード(N 1 1 01)に接続され、そのソース端子が第 1の動作電位点(GND)に接続された第 3の Nチャネル型 MOSFET (1 101)と、そのゲート端子が前記の第 3のノード (N 1 101 )に接続され、そのドレイン端子が前記の第 5のノード(N 1 1 02)に 接続され、そのソース端子が前記の第 1の動作電位点(GND)に接続された第 4の N チャネル型 MOSFET (1 102)を構成要素に含む記憶保持回路( 1030— k— 1 ) を有する (図 1、 図 5、 図 7、 図 8、 図 9参照) 。
さらに、前記データ処理装置(100、 700、 900) において、前記第 2の命令 記憶手段(104、 704、 904) は、 さらに前記第 2のノード( B L— 1 ) と前記 第 4のノード(BLB_1 )を一対とする入力信号に応答する増幅回路( 1040—1 ) を具備する (図 1、 図 5、 図 7、 図 8参照) 。
さらに、前記データ処理装置( 1400、 1600)において、前記レジスタ ( 14 29. 1629)の内容が前記特定条件に合致していない状態においては、前記第 1の 命令記憶手段( 1402、 1 602)から読み出された任意の命令はたかだか 1回実行 されるまでの間のみ前記の第 2の命令記憶手段(1421、 1621)に一時的に保持 されるものである (図 1 1、 図 1 3参照) 。
例えば、データ処理装置(100)は、あるループを実行する時に命令をバッファ(1 04)から繰り返し読み出すために単にそのループを実行する直前に特定ビット(12 -
4、バッファ制御フラグ)のセット命令を挿入するだけでよい。従って、 リピ一卜命令 を利用することなくループ処理時に小規模なバッファ(1 0 4 )から命令を繰り返し読 み出し、 メモリァクセスで消費する電力を低減することができる。
また、特定ビット (1 2 4、バッファ制御フラグ)がセッ卜されない限り、いかなる ループの処理時もバッファ ( 1 0 4 )へのアクセスは行われない。従って、あるループ を実行する時に命令をバッファ(1 0 4 )から繰り返し読み出す制御の適用を禁止する には、単にそのループを実行する直前に特定ビット (1 2 4、バッファ制御フラグ)の セット命令を挿入しなければよい。 図面の簡単な説明
図 1は本発明の第 1の実施例 (実施例 1 ) を示すデータ処理装置の構成を示す。 図 2は実施例 1のデータ処理装置の命令読み出し動作を示す。
図 3は実施例 1のデータ処理装置においてバッファ制御フラグセット命令をプログ ラム記述中に挿入するためのアルゴリズムを示す。
図 4はあるデータ処理装置で音声符号化復号化処理プログラムを実行したときのル
—プサイズ分布を示す。
図 5は本発明の第 2の実施例 (実施例 2 ) を示すデータ処理装置の構成を示す。 図 6は実施例 2のデータ処理装置においてプログラム記述中の命令を置換するため のアルゴリズムを示す。
図 7は本発明の第 3の実施例を示すデータ処理装置の構成を示す。
図 8は実施例 1のデータ処理装置に含まれるバッファの構成を示す。
図 9はバッファに含まれるメモリセルの構成を示す。
図 1 0はバッファの占有面積の比較を示す。
図 1 1は本発明の第 4の実施例 (実施例 4 ) を示すデータ処理装置の構成を示す。 図 1 2は実施例 4のデータ処理装置の制御を示す。
図 1 3は本発明の第 5の実施例 (実施例 5 ) を示すデータ処理装置の構成を示す。 図 1 4は実施例 5のデータ処理装置の制御を示す。 図 1 5は本発明の実施形態の分類を示す。 発明を実施するための最良の形態
以下に、 本発明の実施例を図面により詳細に説明する。
《実施例 1》
図 1は本発明の第 1の実施例を示すデータ処理装置の構成図である。データ処理装置 1 0 0は、制御部 1 2 0と命令実行部 1 4 0とプログラムカウンタ 1 6 0とバッファ 1 0 4とセレクタ 1 0 6等から構成されるデータ処理部と、メモリ 1 0 2とで構成される。 データ処理装置 1 0 0は、単一の半導体基板上に形成するようにされても良いし、前記 データ処理部のみを単一の半導体基板上に形成するようにされても良い。制御部 1 2 0 は、命令デコーダ 1 2 2、制御レジスタ 1 2 5、バッファ制御回路 1 2 6等から構成さ れる。なお、命令デコーダ 1 2 2の中或いはセレクタ 1 0 6と命令デコーダ 1 2 2との 間に命令フェッチキュー (命令先読みバッファ) を備えていてもよい。
メモリ 1 0 2は、 例えば主記憶としての R O M (Read Only Memory) や R A M (Random Access Memory) 若しくは主記憶に格納される命令の一部を保持するキヤ ッシュメモリである。 R 0 Mは、例えば半導体の製造工程でプログラムされるマスク R O Mやフラッシュメモリ等の電気的に書き換え可能な不揮発性メモリで構成される。 R A Mは、 例えば S R A M (Static Random Access memory)、 D R A M (Dynamic Random Access Memory) や強誘電体メモリ (書き込みサイクルと読み出しサイクル がほぼ等しい電気的に書き換え可能な不揮発性メモリ)で構成される。キャッシュメモ リは、 フルァソシァティブ方式ゃセットァソシァティブ方式で構成される。
なお、 プログラムカウンタ 1 6 0の出力 S 1 6 2はァドレスバスを介してメモリ 1 0 2に供給されてもよい。
本実施例は、繰り返し実行すべき命令群の末尾命令が先頭命令への条件付き分岐命令 となっているループを実行するときにバッファ 1 0 4から命令を繰り返し読み出す制 御を適用するものである。従って、 リピート命令を利用していない。以下にデータ処理 装置 1 0 0力、'命令群を繰り返し実行する動作概要が示される。 (1)パ'ッファ 104から命令を繰り返し読み出す制御を適用すべきループを実行する 直前に、特定ビット 124 (バッファ制御フラグ)をセッ卜する命令を実行する。 ビッ ト 124 (パ'ッファ制御フラグ)がセットされた直後からは、メモリ 102から読み出 される命令は実行に移される一方でバッファ 104に順次書き込まれる。 ( 2 )に移る。 (2) ビット 124 (バッファ制御フラグ)がセッ卜されてから条件付き分岐命令(末 尾の命令)が初めて読み出され、その条件が成立している場合は(3)に、不成立の場 合は (5) に移る。
(3)メモリ 102へのアクセスを停止し、バッファ 104に格納されている命令を先 頭から順次読み出す。 (4) に移る。
(4)バッファ 104から条件付き分岐命令(末尾の命令)が読み出され、その条件が 成立している場合は (3) に、 不成立の場合は (5) に移る。
(5)パヽソファ 104へのアクセスを停止し、通常どおりにメモリ 102からの命令読 み出しを開始する。 ビッ卜 124 (バッファ制御フラグ) をクリアする。
上記処理によれば、リピート命令を利用することなくループ処理時に小規模なバッフ ァ 1 04から命令を繰り返し読み出し、メモリ 102をアクセスしないようにされる。 また、 ビット 124 (バッファ制御フラグ)がセッ卜されない限り、いかなるループの 処理時もバッファ 104へのアクセスは行われない。従って、あるループを実行する時 に命令をバッファ 104から繰り返し読み出す制御の適用を禁止するには、単にそのル —プを実行する直前にビッ卜 124 (バッファ制御フラグ)のセット命令を挿入しなけ ればよい。
次に繰り返し実行すべき命令群の末尾命令が先頭命令への条件付き分岐命令となつ ているループの例が以下に示される。
例えば n個 (nは正の整数) の命令( i n s t (l)、 i n s t (2)、 * * *、 i n s t (n) )を m回(mは正の整数)繰り返し実行するには、 プログラムを次のよう にコ一ディングする。
g r 0 <— m;
LOOP: i n s t ( 1 ) ; i n s t ( 2 )
i n s t ( n ) ;
g r 0— g r 0- 1 ;
i f NZ g o t o LOOP ;
ここで、 「g r 0— m」はレジスタ (g r 0、例えば命令実行部に備わっている)へ のループ回数のセットを表わしている。 「g r 0— g r 0— 1」 はループ回数のデク リメントを表わしている。 「 i f NZ go t o L 00 P」 は直前に行ったルー プ回数デクリメン卜の演算結果が 0でない(NZ : No t Z e r o)場合に、すなわ ちループが終了していない場合に、ループの先頭命令( i n s t ( 1 ) )に分岐を生じ させる条件付き分岐命令である。
このループを実行するときにバッファ 104に命令を保持させ、このバッファ 104 から命令を繰り返し読み出させるには、制御レジスタ 125内のバッファ制御フラグ 1 24 (BCF)をセッ卜する命令(s e t B C F )を次のようにループの先頭命令( i n s t ( 1 ) ) の前に挿入する。
g r 0— m;
s e t BCF ;
LOOP : i n s t ( 1 ) ;
i n s t ( 2 ) ;
i n s t ( n ) ;
g r 0-g r 0 - 1 ;
i f NZ g o t o LOOP 図 2は、上に記述したループをデータ処理装置 100が処理するときに行われる命令 の読み出し動作を示している。以下に、図 2を用いながらデータ処理装置 100の動作 を説明する。
データ処理装置 100の命令読み出し動作には次のような 3とおりの動作状態があ る (図 2の (b) 参照) 。
( 1 ) 「通常」状態
プログラムカウンタ 1 60の値に従ってメモリ 102から読み出された命令がメモ リの出力 S 101及びバス S 102を経由してそのまま制御部 120に送られる。バッ ファ 104は停止している。セレクタ 106は、バス S 102からの出力 S 103の信 号を選択信号 S E Lによって選択するようにされる。
( 2 ) 「バッファへの書き込み」状態
メモリ 1 02から読み出された命令は制御部 1 20に送られると同時にバッファ 1 04に順次書き込まれる。セレクタ 106は、バス S 1 02からの出力 S 103の信号 を選択信号 S E Lによつて選択するようにされる。
(3) 「バッファからの読み出し」状態
バッファ 104から読み出された命令が制御部 1 20に送られる。メモリ 102は停 止している。セレクタ 106は、ノくッファ 104からの出力 S 1 04の信号を選択信号 S E Lによって選択するようにされる。
図 2の (a) に示されるうように、パヽソファ制御フラグ 124 (BCF)がセッ卜さ れていないときはデータ処理装置 1 00は「通常」状態の命令読み出しを行う。バッフ ァ制御フラグ 124 (BCF)をセッ卜する命令(s e t BCF)を実行すると、次 のようなルールに従つて命令の読み出しが行われる。
(0 バッファ制御フラグ 124 (BCF) がセッ卜された直後から 「バッファへの書 き込み」状態に遷移する。
(ii) 「バッファへの書き込み」状態で条件付き分岐命令( i f NZ g o t o L OOP) が読み出されたときその条件が成立していれば (iii) に、 不成立ならば (V) に従う。 (iii) 「バッファからの読み出し」状態に遷移する。バッファ 104に格納されている 命令を先頭から順に読み出す。条件付き分岐命令( i f NZ go t o LOOP:) が読み出された場合は (IV) に従う。
(iv) 条件が成立していれば (iii) に、 不成立の場合には (V) に従う。
(V) 「通常」状態に遷移する。 バッファ制御フラグ 1 24 (BCF) はバッファ制御 フラグクリア信号 C LRによってクリアされる。
(i) (V)の動作を行うためバッファ制御回路 126は、バッファ制御フラグ 124 (B C F)からの出力 S 126および命令デコーダ 122からの分岐情報 S 123 (条 件付き分岐命令の検出および条件の成立 Z不成立に関する情報)を基に以下のような制 御信号をメモリ 102 ッファ 104、セレクタ 1 06及びバッファ制御フラグ 12 4 (BCF) に発行する。
(a) メモリエネ一ブル信号 ME N:
メモリ 1 02の動作 Z停止を指示するようにされる。 "LOW" レベルのとき、 「パ' ッファからの読み出し」状態でメモリ 102を停止するようにされる。 "H I GH" レ ベルのとき、メモリ 102を動作するようにされる。 この信号は、メモリアクセス要求 信号として用いられてもよい。
(b) セレクタ制御信号 S EL :
セレクタ 106を制御するようにされる。 "H I GH" レベルのとき、 「バッファか らの読み出し」状態でバッファからの出力 S 104を選択するようにされる。 "LOW" レベルのとき、 バス S 102からの出力 S 103を選択するようにされる。
(c) ポインタリセット信号 RST:
バッファ 104のポインタを先頭に戻すようにされる。 「バッファへの書き込み」状 態または「バッファからの読み出し」状態において条件付き分岐命令が読み出されたと きに活性化するよう ( "H I GH" レベル) にされる。
( d )バッファエネ一ブル信号 B E N:
'ッファ 104の動作 Z停止を指示するようにされる。 「バッファへの書き込み」状 態または「バッファからの読み出し」状態のときに、 "H I GH" にされ、バッファ 1 04を動作するようにされる。
( e ) 書き込みエネーブル信号 WE N:
ノ'ッファ 104の書き込み/読み出しを指示するようにされる。 「バッファへの書き 込み」状態のときに、 'Ή I GH" にされ、 書き込みを指示するようにされる。
( f )バッファ制御フラグクリア信号 CLR:
条件付き分岐命令の条件が不成立となったときバッファ制御フラグ 124 (BCF) をクリアするようにされる。
かくして本実施例によれば、リピート命令を利用することなくループ処理時に小規模 なバッファ 104から命令を繰り返し読み出し、メモリアクセスで消費する電力を低減 すること力、'できる。なお、バッファ制御回路 126はごく小規模な順序回路により実現 することができる。
また、本実施例ではバッファ制御フラグ 124 (BCF)をセッ卜しない限り、いか なるループ処理時もバッファ 104へのアクセスは行われない。従って、あるループを 実行するときに命令をバッファ 104から繰り返し読み出す制御の適用を禁止するに は、単にそのループを実行する直前(上記の例では i n s t ( 1 )の直前)にバッファ 制御フラグ 124 (B C F)をセッ卜する命令(s e t BCF)を挿入しなければよ い。
次に、末尾命令以外には分岐命令などのフ口一制御命令を一切含まないループ(以後 これを「単純繰り返しループ」と呼ぶ)であってループを構成する命令の個数力、'バッフ ァ 1 04に格納できる最大命令個数以下であるような小規模なループに限定してバッ ファ 104から繰り返し命令を読み出す制御を適用するには、図 3に示すようなァルゴ リズムに従ってバッファ制御フラグセッ卜命令(s e t B C F)をプログラム記述中 に挿入する。 図 3に示すアルゴリズムを以下に説明する。
( 1 ) ひとつの命令を参照する ( S 1 ) 。
(2)その命令が下記の条件 A~Dをすベて満たしている場合は(3)の処理を行う。 それ以外の場合は (4) に従う (S 21、 S 22、 S 23、 S 24) 。
条件 A:参照している命令は条件付き分岐命令である(上記の例では i f NZ g o t o LOOP) 。
条件 B : (分岐先アドレス) < (条件付き分岐命令のアドレス)
条件 C: (分岐先の命令から条件付き分岐命令までの命令の個数) ≤ (バッファ 10
4が保持できる命令の最大個数)、上記の例では n + 2≤ (パ'ッファ 104が保持でき る命令の最大個数)
条件 D:分岐先の命令から条件付き分岐命令までの間 (上記の例では i n s t ( 1 ) から i f Z g o t o LOOPまでの間) に参照している命令 ( 上記の例では i f NZ go t o LOOP)以外にフロー制御命令 (分岐命令等) がない。
( 3 )分岐先の命令(上記の例では i n s t ( 1 ) )の直前にバッファ制御フラグセッ 卜命令 (s e t BCF) を挿入する (S 3) 。
( 4 ) 参照対象を次の命令に移す ( S 4 ) 。
上に述べたようなァルゴリズムを例えばコンパイラやアセンブラなどのォブジェク トコ一ド生成ツールに組み込んでおけば、プログラマはバッファ 104の存在を意識す ることなく従来どおりにプログラム(ソースコード)をコ一ディングすることができる。 また、上述のようにバッファ 104から繰り返し命令を読み出す制御を適用する対象を 小規模な単純繰り返しループに限定しても、低消費電力化の効果がかなり期待できる。 図 4には、音声符号化復号化処理プログラムを実行の単純繰り返しループサイズの分 布が示される。横軸はループサイズ(命令個数)、縦軸はループ実行の累積サイクル数 (%)である。データ処理装置 1 00が音声符号化復号化処理プログラムを実行すると きに全実行サイクル数の約 60%は 20ステップ以下の命令で構成される単純繰り返 しループである。すなわち、バッファ 104に 20命令まで格納できる容量があれば全 実行サイクルの約 60%はメモリ 102へのアクセスを停止することができる。さらに バッファ 104の容量を 32命令まで拡大すれば約 80%のサイクルをカバ一できる。 《実施例 2》
図 5は本発明の第 2の実施例を示すデータ処理装置の構成図である。データ処理装置 700は、制御部 720と命令実行部 740とプログラムカウンタ 760とバッファ 7 04とセレクタ 706等から構成されるデータ処理部と、メモリ 702とで構成される c デー夕処理装置 700は、単一の半導体基板上に形成するようにされても良いし、前記 データ処理部のみを単一の半導体基板上に形成するようにされても良い。制御部 720 は、命令デコーダ 7 22、バッファ制御回路 724等から構成される。なお、命令デコ —ダ 72 2の中或いはセレクタ 70 6と命令デコーダ 7 22との間に命令フェッチキ ユー (命令先読みバッファ) を備えていてもよい。
メモリ 7 0 2は、 例えば主記憶としての ROM (Read Only Memory) や RAM (Random Access Memory) 若しくは主記憶に格納される命令の一部を保持するキヤ ッシュメモリである。 R 0 Mは、例えば半導体の製造工程でプログラムされるマスク R 0 Mやフラッシュメモリ等の電気的に書き換え可能な不揮発性メモリで構成される。 R AMは、 例えば S RAM (Static Random Access memory) 、 DRAM (Dynamic Random Access Memory) や強誘電体メモリ (書き込みサイクルと読み出しサイクル 力、'ほぼ等し 、電気的に書き換え可能な不揮発性メモリ) で構成される。
なお、 プログラムカウンタ 760の出力 S 762はァドレスパ'スを介してメモリ 7 02に供給されてもよい。
データ処理装置 700は、データ処理装置 1 00力、'備えていたバッファ制御フラグ 1 24 (B C F) の代わりにループカウントレジスタ 742 (L C) を備えている。 データ処理装置 700にもリピー卜命令が設けられていない。そこで、例えば n個(n は正の整数) の命令( i n s t ( 1) 、 i n s t (2)、 · · ·、 i n s t (n) )を m回(mは正の整数)繰り返し実行するには、プログラムを次のようにコ一ディングす る。
g r 0— m;
LOOP : i n s t ( 1 ) ;
i n s t (2) ;
i n s t ( n ) g r 0-g r 0 - 1 ;
i f NZ g o t o LOOP ;
ここで、 「」 g r 0— mは汎用レジスタ(g r 0、例えば命令実行部に備わっている) へのループ回数のセットを表わしている。 「 g r 0— g r 0— 1」 はループ回数のデ クリメン卜を表わしている。 「 i f NZ g o t o L 00 P」 は直前に行ったル ープ回数デクリメン卜の演算結果が 0でない(NZ: No t Z e r o)場合に、すな わちループが終了していない場合に、ループの先頭命令( i n s t ( 1 ) )に分岐を生 じさせる条件付き分岐命令である。
このループを実行するときにバッファ 704に命令を保持させこのバッファから命 令を繰り返し読み出させるには、下記のようにレジスタ (g r 0)の代わりにループ力 ゥントレジスタ 742 (LC) を用いてループ回数のカウントを行う。
L C— m;
LOOP: i n s t ( 1 ) ;
i n s t ( 2 ) ;
i n s t ( n ) ;
L C— L C- 1 ;
i f NZ g o t o LOOP ;
上に記述したループをデータ処理装置 700が処理するときの命令読み出し動作を 以下に説明する。データ処理装置 700はデータ処理装置 1 00と同様に「通常」、「バ ッファへの書き込み」、および「バッファからの読み出し」の 3とおりの動作状態(図 2の (b)参照)を持つ。ループカウントレジスタ 742 (LC)の初期値は 0である。 ループカウントレジスタ 742 (L C)の値が 0のときはデータ処理装置 700は「通 常」状態の命令読み出しを行う。ループカウントレジスタ 742 (LC)にループを繰 り返すべき回数 (0ではない値) がロードされると ( LC— m) 、 次のようなルール に従って命令の読み出しが行われる。
(i) ループカウントレジスタ 742 (LC) に 0ではない値がロードされた直後から 「バッファへの書き込み」状態に遷移する。
(ii) 「バッファへの書き込み」状態で条件付き分岐命令( i f NZ go t o L OOP) が読み出されたときその条件が成立していれば (iii) に、 不成立ならば (V) に従う。
(iii) 「バッファからの読み出し」状態に遷移する。パヽソファ 704に格納されている 命令を先頭から順に読み出す。条件付き分岐命令( i f NZ g o t o LOOP:) が読み出された場合は (iv) に従う。
(iv) 条件が成立していれば (iii) に、 不成立の場合には (V) に従う。
(v) 「通常」状態に遷移する。
(i) 〜(V)の動作を行うためにバッファ制御回路 724は、ループカウントレジス タ 742 (L C)からの出力 S 742及び命令デコーダ 722からの分岐情報 S 722 (条件付き分岐命令の検出および条件の成立/不成立に関する情報)を基に以下のよう な制御信号をメモリ 702、 ノくッファ 704及びセレクタ 706に発行する。
(a) メモリエネ一ブル信号 M E N:
メモリ 702の動作 Z停止を指示するようにされる。 "LOW"レベルのときに、「バ ッファからの読み出し」状態でメモリ 702を停止するようにされる。 "H I GH" レ ベルのときに、メモリ 702を動作するようにされる。 この信号は、メモリアクセス要 求信号であってもよい。
(b) セレクタ制御信号 S E L.:
セレクタ 706を制御するようにされる。 "H I GH" レベルのときに、 「バッファ 力、らの読み出し」状態でバッファからの出力 S 704を選択するようにされる。 "L〇 W" レベルのときに、 バス S 702からの出力 S 703を選択するようにされる。 (c) ポインタリセッ ト信号 RST:
パヽソファ 704のポィンタを先頭に戻すようにされる。 「バッファへの書き込み」状 態又は「バッファからの読み出し」状態にお L、て条件付き分岐命令が読み出されたとき に活性化するよう ( "H I GH" ) レベルにされる。
(d)バッファエネ一ブル信号 B E N:
ッファ 704の動作 Z停止を指示するようにされる。 「バッファへの書き込み」状 態又は「バッファからの読み出し」状態のときに、 "H I GH" レベルにされ、バッフ ァ 704を動作するようにされる。
( e ) 書き込みエネーブル信号 WE N
ッファ 704の書き込み Z読み出しを指示するようにされる。 「バッファへの書き 込み」状態のときに、 "H I GH" レベルにされ、書き込みを指示するようにされる。 かくして本実施例によれば、リピート命令を利用することなくループ処理時に小規模 なバッファ 704から命令を繰り返し読み出し、メモリアクセスで消費する電力を低減 することができる。なお、バッファ制御回路 724はごく小規模な順序回路により実現 することができる。
また、本実施例ではループカウントレジスタ 742 (LC)に 0ではない値を口一ド しない限り (0を口一ドすれば)、いかなるループ処理時もバッファ 704へのァクセ スは行われない。従って、あるループを実行するときに命令をバッファ 704から繰り 返し読み出す制御の適用を禁止するには、ループ回数のカウントにループカウントレジ スタ 742 (L C) を用いなければよい (レジスタ g r 0等を用いればよい) 。
次に、単純繰り返しループであってループを構成する命令の個数がバッファ 704に 格納できる最大命令個数以下であるような小規模なループに限定してバッファ 704 から繰り返し命令を読み出す制御を適用するには、図 6に示すようなァルゴリズムに従 つてループ回数のカウントに用いるレジスタをループカウントレジスタ 742 (L C) に割り当て直す。
(1) ひとつの命令を参照する (S 10)
(2)その命令が下記の条件 A Fをすベて満たしている場合は(3)の処理を行う。 それ以外の場合は(4) に従う (S 201 S 202 S 203 S 204 S 205
S 206) o
条件 A:参照している命令は条件付き分岐命令である(上記の例では i f NZ g o t o L 00 P) 。
条件 B : (分岐先アドレス) < (条件付き分岐命令のアドレス)
条件 C: (分岐先の命令から条件付き分岐命令までの命令の個数) ≤ (バッファ 70 4力、'保持できる命令の最大個数)、上記の例では n + 2≤ (バッファ 704が保持でき る命令の最大個数)
条件 D:分岐先の命令から条件付き分岐命令までの間 (上記の例では i n s t ( 1 ) から i f NZ g o t o LOOPまでの間) に参照している命令 ( 上記の例では i f NZ go t o LOOP)以外にフロー制御命令 (分岐命令等) がない。
条件 E:分岐先の直前の命令はあるレジスタへのロード命令(上記の例では g r 0— m) である。
条件 F :条件付き分岐命令の直前の命令は同レジスタの値をデクリメン卜する命令 (g r 0— g r 0— 1 ) である。
( 3)上記口一ド命令およびデクリメント命令のオペランドをループカウントレジス夕 742 (L C) に置換する (S 30) 。
(4) 参照対象を次の命令に移す ( S 40 ) 。
上に述べたようなァルゴリズムを例えばコンパイラやアセンブラなどのォブジヱク トコ一ド生成ツールに組み込んでおけば、プログラマはバッファ 704の存在を意識す ることなく従来どおりにプログラム(ソースコ一ド)をコ一ディングすることができる。 《実施例 3》
図 7は本発明の第 3の実施例を示すデータ処理装置の構成図である。データ処理装置 900は、制御部 940と命令実行部 950とプログラムカウンタ 960とバッファ 9 04とセレクタ 906等から構成されるデータ処理部と、メモリ 902とで構成される c データ処理装置 900は、単一の半導体基板上に形成するようにされても良いし、前記 データ処理部のみを単一の半導体基板上に形成するようにされても良い。制御部 940 は、命令デコーダ 920、 リピート制御部 930等から構成される。 なお、命令デコ一 ダ 920の中或いはセレクタ 906と命令デコーダ 920との間に命令フヱツチキュ 一 (命令先読みバッファ) を備えていてもよい。 メモリ 902は、 例えば主記憶としての ROM (Read Only Memory) や RAM (Random Access Memory)若しくは主記憶に格納される命令の一部を保持するキヤ ッシュメモリである。 R 0 Mは、例えば半導体の製造工程でプログラムされるマスク R 0Mやフラッシュメモリ等の電気的に書き換え可能な不揮発性メモリで構成される。 R AMは、 例えば SRAM (Static Random Access memory) 、 DRAM (Dynamic Random Access Memory) や強誘電体メモリ (書き込みサイクルと読み出しサイクル 力、 Ίまぼ等しい電気的に書き換え可能な不揮発性メモリ) で構成される。
なお、 プログラムカウンタ 960の出力 S 962はァドレスノくスを介してメモリ 9
02に供給されてもよい。
本実施例では、データ処理装置 900にはリピート命令が設けられている。 リピ一ト 制御部 930はリピートスター卜ァドレスレジスタ 931 (RS)、 リピートェンドア ドレスレジスタ 932 (RE) 、 リピートカウントレジスタ 933 (RC)、比較回路 935、ダウンカウンタ 936、差分検出回路 937、パヽソファ制御回路 938を備え ている。
例えば、 n個 ( nは正の整数) の命令( i n s t (l) 、 i n s t (2) 、 . . .、
1 n s t (n) )を m回(mは正の整数)繰り返し実行するには、 プログラムを次のよ うにコーディングする。
RS— START;
RE— END;
R C— m;
RPT;
START : i n s t (l) ;
i n s t (2) ;
END: n s t ( n ) ここで、 「RS— START」 は繰り返し実行すべき一連の命令の先頭命令( i n s t ( 1 )のアドレス(START)をリピートスタートアドレスレジスタ 931 (RS) にロードする命令を表わす。 「 RE— END」 は繰り返し実行すべき一連の命令の末 尾命令 ( i n s t (n)のァドレス (END)をリピ一トェンドアドレスレジスタ 93 2 (RE)にロードする命令を表わす。 「 RC— m」 は繰り返し実行すべき回数 (m) をリピートカウントレジスタ 933 (RC) にロードする命令を表わす。 、 「RPT」 は繰り返し命令を実行すべき内部状態を発生させる命令 (リピート命令) である。 リピート命令(RPT)が実行されると、リピートエンドアドレスレジスタ 932 (R E)の内容とプログラムカウンタ (PC)が比較回路 935により比較される。 それら がー致し、 リピートカウントレジスタ 933 (RC)の内容が 1でない場合には、 ダウ ンカウンタ 936によりリピートカウントレジスタ 933 (RC)が 1減らされ、プロ グラムカウンタ 960の値がリピ一トス夕一トァドレスレジスタ 931 (R S)の値に 書き変えられて処理が続行される。 リピートエンドアドレスレジスタ 932 (RE)の 内容とプログラムカウンタ(P C)力、'一致し、かつリピートカウントレジスタ 933 (R C)の内容が 1である場合は、 リピー卜状態が解除される。 もし、非リピート状態にお けるリピートカウントレジスタ 933 (RC)の値を常に 0にしておきたい場合には、 この時点で リピートカウントレジスタ 933 (RC)をクリアする制御を行えばよい。 なお、 RS— START、 RE-END. RC— m、 R P Tは必ずしも 4つの命令コ 一ドに分ける必要はない。例えば、上記の 4つの命令コードを 1つの命令コードにまと めて記述することも可能である。 また、 RC— mと RPTを統合し RC— mをリビー ト命令とすることも可能である。
データ処理装置 900では、リピート命令による命令の繰り返し実行中は小規模なバ ッファ 904から命令を繰り返し読み出す制御を行う。 しかしながら、ループを構成す る命令の個数がバッファ 904に格納できる最大命令個数を超えるような大きなルー プをパヽソファ 904にこのまま格納しょうとするとループ最終部の命令は既に命令が 格納されている場所にオーバ一ライ 卜されてしまうので正しいループ処理ができなく なる。 この問題を回避する最も簡単な方法は、バッファ 9 0 4のサイズより大きなループに 対してはバッファ 9 0 4から命令を繰り返し読み出す制御の適用を禁止することであ る。データ処理装置 9 0 0では、以下のようにしてこれを実現している。差分検出回路 9 3 7はリピ一トスタートァドレスレジスタ 9 3 1 ( R S )とリピートェンドアドレス レジスタ 9 3 2 ( R E )の値の差からループを構成する命令の個数(上記の例では n個) を算出している。 もし、ループを構成する命令の個数(上記の例では n個)力バッファ 9 0 4に格納できる最大命令個数を超えていたら、差分検出回路 9 3 7はバッファ 9 0 4へのアクセスの禁止をバッファ制御回路 9 3 8に指示し通常どおりにメモリ 9 0 2 から命令を読み出させる。
かくして本実施例によれば、ループを構成する命令の個数がバッファ 9 0 4に格納で きる命令の個数を超える場合にはバッファ 9 0 4から命令を繰り返し読み出す制御の 適用を禁止することができる。
なお、本実施例では、繰り返し実行すべき一連の命令の先頭命令及び末尾命令の位置 情報をそれらが格納されている物理ァドレスとしたが、例えば相対ァドレス等の別の表 現形式であってもよい。また、繰り返し実行すべき一連の命令の先頭命令及び末尾命令 の位置情報をから求められる繰り返し実行されるべき前記命令の数(ステップ数)であ つてもよい。
《バッファの構成》
図 8はデータ処理装置 1 0 0が備えているバッファ 1 0 4の構成の一例である。本実 施例はバッファ 1 0 4をメモリ回路により構成している。命令コード S 1 0 3は Mビッ ト幅で、バッファ 1 0 4が格納できる最大命令個数は N個であるとする。すなわち、 N ワード X Mビッ卜のメモリアレイに命令が格納される。命令コードの各ビットはメモリ セル 1 0 3 0— k— 1 (ただし、 k = 1, 2, · · ·, N、 1 = 1 , 2, · · ·, M) に格納される。
カウンタ 1 0 6 0はァドレスデコーダ 1 0 7 0に与えるァドレス S 1 0 6 2を 1ず つカウントアップする。バッファ制御回路 1 2 6からのポインタリセット信号 R S Tが アクティブになるとカウンタ 1 0 6 0はアドレス S 1 0 6 2を先頭にもどす。 了ドレスデコーダ 1 07はカウンタ 1060が与えるァドレス S 1 062をデコ一 ドし、 対応するワード線 WL_k ( k- 1, 2, · · ·, N) を一本選択する。
書き込み動作時は、 トランジスタ 1020— 1 ( 1 = 1, 2, · · ·, M)のドレイ ン 'ソース経路を介して命令コード S 103— 1 ( 1 = 1, 2, · ' ·, Μ)がワード 線で選択されたメモリセルに書き込まれる。
読み出し動作時は、ワード線で選択されたメモリセルからビット線対(BL_1、 B LB— 1、 · · ·、 BL— M、 BLB— M) に現われた小振幅の相補信号が増幅回路 1 040—1 ( 1 = 1, 2, · · ·, M)により出力信号 S 104—1 ( 1 = 1, 2, · · ·, M) として取り出される。
メモリセル 1030_k_ 1 (ただし、 k= l, 2, · ' ·, Ν、 1 = 1, 2, · · ·, Μ) の構成の一例が図 9に示される。メモリセル 1 030_k— 1 (ただし、 k= l, 2, · · ·, N、 1 = 1, 2, · · ·, M) は、 いわゆる 6 MO Sトランジスタの S RAMで構成される。トランジスタ 1 105と 1 106は Pチャネル型 MOSトランジ スタ (Pチャネル型 MOSFET)である。 トランジスタ 1 101、 1 102、 1 10 3. 1 104は Nチャネル MOSトランジスタ(Nチャネル型 MO S F E T)である。 「VDD」 は電源電圧を、 「GND」 は接地電圧を表わしている。
また、本実施例のバッファの構成は、データ処理装置 1 00だけではなく、データ処 理装置 700やデータ処理装置 900にも適用できる。
図 10に示すように、バッファ 104をメモリ回路で構成すると、特にバッファに格 納する命令個数が比較的多い場合には、レジスタで構成するよりもバッファの占有面積 を小さくできるというメリッ卜がある。なぜなら、メモリ回路でバッファを構成した場 合にはメモリセル 1030_k_l (ただし、 k= l, 2, ' * ', N、 1 = 1, 2, · · ·, M)からビット線対(BL— 1、 BLB— 1、 · · ·、 B L— M、 B L B_M) に読み 出される信号は微小信号で十分なのでメモリセル自身の電流駆動力は小さくてよく、従 つてメモリセルを構成する素子の寸法を小さくできるからである。
《実施例 4》
高速マイクロプロセッザではメモリ(例えばキャッシュメモリ)から取り出された命 令が命令デコーダに送り出されるまでの間、一時的に複数の命令を保持しておくための 命令キュー(命令先読みバッファ)を制御部に備えている。命令キューから命令デコー ダへ命令が送り出されると、極力空きができないようにメモリから命令キュ一に命令が 取り込まれる。この命令キューをデータ処理装置 1 00のバッファ 1 04として機能さ せることを検討した。 以下に、 その実施例を説明する。
図 1 1は本発明の第 4の実施例を示すデータ処理装置の構成図である。データ処理装 置 1 400は、制御部 1 420と命令実行部 144 0とプログラムカウンタ 1 460等 から構成されるデータ処理部と、メモリ 1 402とで構成される。データ処理装置 1 4 00は、単一の半導体基板上に形成するようにされても良いし、前記データ処理部のみ を単一の半導体基板上に形成するようにされても良い。制御部 1 4 20は、命令デコ一 ダ 1 4 22、命令キュー 1 42 1 ( I Q 0〜7)、 ポインタ 1 4 24、命令キュー制御 回路 1 426、 制御レジスタ 1 429等から構成される。
メモリ 1 4 02は、 例えば主記憶としての ROM (Read Only Memory) や RAM (Random Access Memory)若しくは主記憶に格納される命令の一部を保持するキヤ ッシュメモリである。 ROMは、例えば半導体の製造工程でプログラムされるマスク R 0 Mやフラッシュメモリ等の電気的に書き換え可能な不揮発性メモリで構成される。 R AMは、 例えば S RAM (Static Random Access memory) 、 DRAM (Dynamic Random Access Memory) や強誘電体メモリ (書き込みサイクルと読み出しサイクル がほぼ等しい電気的に書き換え可能な不揮発性メモリ) で構成される。
なお、 プログラムカウンタ 1 460の出力 S 1 462はアドレスパ'スを介してメモ リ 1 402に供給されてもよい。
命令キュー( I Q 0〜7)は繰り返し命令読み出し力 亍われていないときは従来のプ リフヱツチキューとして機能する。
データ処理装置 1 4 00の動作を説明するために、データ処理装置 1 00の動作を説 明するときに用いたプログラム記述をここに再び示す。
g r 0— m;
s e t B C F ; LOOP : i n s t ( 1 ) ;
i n s t (2) ;
i n s t ( n ) ;
g r 0— g r 0- 1 ;
i f NZ g o t o LOOP ;
データ処理装置 1400では図 12に示すようなルールに従って制御を行うように される。
(i)パ'ッファ制御フラグ 1428 (BCF) を参照し、 もしセットされていれば(ii) に、 セッ卜されていなければ (viii) に従う (S 1 51 ) 。
(ii) ポインタ 1424が指し示す命令をデコードする。 (iii) に従う (S 152) 。
(iii)デコ一ドした命令が条件付き分岐命令(上記の例では i f NZ g o t o L OOP) でなければ (iv) に、条件付き分岐命令ならば (V) に従う (S 1 53) 。
(iv)命令を発行し、 ポインタ 1424をインクリメン卜する (S 1 54) 。 (ix) に 従う。
(v) 分岐条件が成立していれば (vi) に、 不成立ならば (vii) に従う (S 1 55) 。
(vi)分岐命令を発行し、ポインタ 1424を I Q 0に初期化する ( S 156 )。 (ix) に従う。
(vii) I Q0からポインタ 1424が指し示していた命令までをすベて命令キュー 1 421からシフトァゥ卜し、ポインタ 1424を I Q 0に初期化し、バッファ制御フラ グ 1428 (B C F) をクリアする (S 1 57) 。 (ix) に従う。
(viii) ポインタ 1424が指し示す命令をデコ一ドし発行する。 発行した命令を命令 キュー 1421からシフトアウトする (S 158) 。 (ix) に従う。
(ix) 次の命令デコ一ドサイクルへ移る (S 1 59) 。
かくして本実施例によれば、リピート命令を利用することなくループ処理時に命令キ ュ一 ( I Q 0〜7)から繰り返し命令が読み出される。 その間、命令キュー( I Q 0〜 7)には命令が満たされているのでメモリ 1402から命令が読み出されることはなく、 メモリアクセスで消費する電力が節約できる。
また、本実施例ではバッファ制御フラグ 1428 (BCF)をセッ卜しない限り、い かなるループ処理時も命令キュー( I Q 0〜7)は従来どおりの使い方がなされる。従 つて、あるループを実行するときに命令を命令キュー( I Q 0〜7)から繰り返し読み 出す制御の適用を禁止するには、単にそのループを実行する直前(上記の例では i n s t ( 1 )の直前)にバッファ制御フラグ 1428 (B C F)をセッ卜する命令(s e t BCF) を挿入しなければよい。
元々命令キューを備えているマイクロプロセッサに対して本実施例の形態を適用す ると、実施例 1のようにわざわざバッファ 1 04を追加する必要がないので省面積化が はかれるというメリッ卜がある。
《実施例 5》
図 13は本発明の第 5の実施例を示すデータ処理装置の構成図である。データ処理装 置 1600は、制御部 1620と命令実行部 1640とプログラムカウンタ 1660等 から構成されるデータ処理部と、メモリ 1602とで構成される。データ処理装置 16 00は、単一の半導体基板上に形成するようにされても良いし、前記デ一タ処理部のみ を単一の半導体基板上に形成するようにされても良い。制御部 1620は、命令デコ一 ダ 1622、命令キュー 1621 ( I Q0〜7)、命令キュー制御回路 1626、制御 レジスタ 1629等から構成される。
メモリ 1 602は、 例えば主記憶としての ROM (Read Only Memory) や RAM (Random Access Memory)若しくは主記憶に格納される命令の一部を保持するキヤ ッシュメモリである。 R 0 Mは、例えば半導体の製造工程でプログラムされるマスク R OMやフラッシュメモリ等の電気的に書き換え可能な不揮発性メモリで構成される。 R AMは、 例えば SRAM (Static Random Access memory) 、 DRAM (Dynamic Random Access Memory) や強誘電体メモリ (書き込みサイクルと読み出しサイクル がほぼ等しい電気的に書き換え可能な不揮発性メモリ) で構成される。 なお、 プログラムカウンタ 1660の出力 S 1662はァドレスパ'スを介してメモ リ 1602に供給されてもよい。
データ処理装置 1 600はデータ処理装置 1400と同様に命令キュー ( I Q 0〜 7)を利用するものである。 ただし、命令キュー ( I Q 0〜7)に付随した実行フラグ (Ε 0〜7)をデータ処理装置 1400におけるポインタ 1424の代わりに使用する。 データ処理装置 1 600は図 14に示すようなルールに従って制御を行うようにさ れる。
(0バッファ制御フラグ 1628 (BCF) を参照し、 もしセッ卜されていれば (ii) に、 セッ卜されていなければ (viii) に従う (S 171 ) 。
(ii) 実行フラグ(Eフラグ; E 0〜7) 力クリアされている命令をデコードする (S 172) 。 (iii) に従う。
(iii)デコードした命令が条件付き分岐命令(上記の例では i f NZ go t o L OOP) でなければ (iv) に、 条件付き分岐命令ならば(V) に従う (S 173) 。
(iv)命令を発行し、対応する実行フラグ( E 0〜 7 )をセットする( S 174 )。 (ix) に従う。
(V) 分岐条件が成立していれば (vi) に、 不成立ならば (vii) に従う (S 175) 。
(vi)分岐命令を発行し、すべての実行フラグ(E 0〜7)をクリアする (S 176)。
(ix) に従う。
(vii) 実行フラグ (E 0〜7) がセッ卜されている命令をすベて命令キュー ( I Q 0 〜7)からシフトアウトし、ノくッファ制御フラグ 1 628 (B C F)をクリアする (S
177) 。 (ix) に従う。
(viii) 命令をデコードし発行する。 発行した命令を命令キュー ( I Q0〜7) からシ フトアウトする (S 178) 。 (ix) に従う。
(ix) 次の命令デコードサイクルへ移る (S 179)。
かくして本実施例によれば、リピ一ト命令を利用することなくループ処理時に命令キ ユー ( I Q 0〜7)から繰り返し命令が読み出される。その間、命令キュー( I Q 0〜 7)には命令が満たされているのでメモリ 1602から命令が読み出されることはなく、 メモリアクセスで消費する電力が節約できる。
また、本実施例ではバッファ制御フラグ 1628 (BCF)をセットしない限り、い 力、なるループ処理時も命令キュー(I Q0〜7)は従来どおりの使い方がなされる。従 つて、あるループを実行するときに命令を命令キュー( I Q 0〜7)から繰り返し読み 出す制御の適用を禁止するには、単にそのループを実行する直前(上記の例では i n s t ( 1 )の直前) にバッファ制御フラグ 1628 (B C F)をセッ卜する命令(s e t BCF) を挿入しなければよい。
元々命令キューを備えているマイクロプロセッザに対して本実施例の形態を適用す ると、実施例 1のようにわざわざバッファ 104を追加する必要がないので省面積化が はかれるというメリッ卜がある。 さらに、本実施例では命令キュー( I Q 0〜7)を用 レ、て繰り返し命令を実行するときにループ内の命令の順序を入れ替えて実行できる命 令から先に発行することができるので、実施例 4よりもループ処理が高速化できるとい っメリッ卜&ある。
本発明の実施形態は図 15に示すように分類される。あるループ処理時に命令を繰り 返し読み出すためにバッファを使用するか否かを判別する手段として次の 3つがあげ られる。
( 1 )制御フラグの導入。例えば、実施例 1のパ'ッファ制御フラグ 124 ( B C F )。
(2)ループカウン卜レジスタへのループ回数口一ド。例えば、実施例 2のループカウ ントレジスタ 742 (L C) 。
(3) リピート先頭および末尾ァドレスレジスタの値の差を調べる。例えば、実施例 3 のリピートスタートァドレスレジスタ 931 (R S)、 リビートェンドアドレスレジス タ 932 (RE) およびその差分検出回路 937。
一方、 パ'ッファの実現手段は次の 2つに大別される。
G)命令キューとは別にバッファを持つ。 例えば、 実施例 1のバッファ 104は命令 キューとは全く別の機能ブロックである。
(ii)命令キューを流用してバッファを実現する。 例えば、 実施例 4又は実施例 5のバ ッファ ( I Q0〜7) は命令キューとしても利用している。 本発明の実施形態は、上記の (1 ) 〜 (3 ) と (i) 〜 (ii) を任意に組み合わせて実 現する (3 x 2 = 6とおり) ことが可能である。 従って、 実施例として、 実施例 1、 実施例 2、 実施例 3、 実施例 4、 実施例 5で示した組合せ以外にも上記 (2 ) と (ii) 又は (3 ) と (ii) の組合せで実現することもできる。
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明 はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能で あることはいうまでもない。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説 明すれば下記のとおりである。
すなわち、 リピート命令が利用できないにもかかわらず、ループ処理時に命令を小規 模なバッファから繰り返し読み出すことによりメモリアクセスに要する電力を低減す る制御手段を備えているデータ処理装置を提供することができる。また、ループ処理時 に繰り返し実行すべき命令を小規模なバッファから繰り返し読み出す制御を適用する か否かを選択する手段を備えているデータ処理装置を提供することができる。

Claims

請 求 の 範 囲
1 .第 1の命令記憶手段に格納されている命令を読み出して実行するデータ処理装置で あつて、繰り返し実行すべき一連の命令に先立ってレジス夕の内容を変更する命令を実 行した結果前記のレジス夕の内容が特定条件に合致した場合に、繰り返し実行すべき前 記の一連の命令を第 2の命令記憶手段に保持させ前記の第 2の命令記憶手段から繰り 返し出力させることを特徴とするデータ処理装置。
2 .請求項 1に記載のデータ処理装置において、繰り返し実行すべき前記の一連の命令 の最後の命令は所定の条件が成立したときに前記の一連の命令の最初の命令への分岐 を生じさせる命令である。
3 .請求項 2に記載のデータ処理装置において、前記レジスタの内容を変更する命令は、 前記レジスタに含まれるビッ卜の論理値を指定する命令である。
4 . 請求項 2に記載の処理装置において、前記レジスタの内容を変更する命令は、前記 の一連の命令の実行を繰り返すべき回数値を前記レジスタにロードする命令である。
5 . 請求項 1に記載のデータ処理装置において、前記第 2の命令記憶手段は、前記第 1 の命令記憶手段から実行に先立つて読み出される複数の命令を格納する命令キユーと は別の命令ノくッファである。
6 .請求項 1に記載のデータ処理装置において、前記レジスタの内容を変更する命令は、 繰り返し実行すべき前記の一連の命令の先頭命令の位置を特定する情報及び末尾命令 の位置を特定する情報を前記レジスタにロードする命令である。
7 . 請求項 6に記載のデータ処理装置において、前記の先頭命令の位置を特定する情報 と前記の末尾命令の位置を特定する情報から求められる繰り返し実行すべき命令の数 力、'特定の値以下であることが前記の特定条件に相当する。
8 . 請求項 7に記載のデータ処理装置において、前記第 2の命令記憶手段は、前記第 1 の命令記憶手段から実行に先立って読み出される複数の命令を格納する命令キューで ある。
9 . 請求項 1に記載のデータ処理装置において、 前記第 2の命令記憶手段は、 そのゲ一ト端子が第 1のノードに接続され、そのソース、 ドレイン端子の一方が第 2 のノード、 他方が第 3のノードに接続される第 1の Nチャネル型 MOS FETと、 そのゲー卜端子が前記第 1のノードに接続され、そのソース、 ドレイン端子の一方が 第 4のノード、他方が第 5のノードに接続される第 2の Nチャネル型 MOS FETと、 そのゲート端子が前記第 5のノードに接続され、そのドレイン端子が前記第 3のノー ドに接続され、そのソ一ス端子が第 1の動作電位点に接続される第 3の Nチャネル型 M OS FETと、
そのゲ一卜端子が前記第 3のノードに接続され、そのドレイン端子が前記第 5のノー ドに接続され、そのソース端子が前記第 1の動作電位点に接続される第 4の Nチャネル 型 M0SFETとを構成要素に含む記憶保持回路を有する。
10. 請求項 9に記載の処理装置において、前記第 2の命令記憶手段は、さらに前記第 2のノードと前記第 4のノードとを一対とする入力信号に応答する増幅回路を具備す る。
1 1.請求項 1に記載のデータ処理装置において、前記レジスタの内容が前記特定条件 に合致していない状態においては、前記第 1の命令記憶手段から読み出された任意の命 令はたかだか 1回実行されるためにのみ前記第 2の命令記憶手段に一時的に保持され る。
12. 請求項 1に記載のデータ処理装置において、前記第 1の命令記憶手段は、主記憶 装置に記憶される命令の一部を記憶するキヤッシュメモリである。
13. 請求項 1に記載のデータ処理装置は、 単一の半導体基板上に形成される。
14.請求項 1に記載のデータ処理装置において、前記命令はソースプログラム作成時 には存在せず、 コンパイラでォブジヱクトコードに変換されるとき生成される。
15. プログラムメモリと、
命令バッファと、
レジスタとを単一の半導体基板上に具備し、
前記命令バッファは、前記プログラムメモリに記憶される命令の一部を保持可能にさ れ、 前記レジス夕の内容を変更する命令が前記レジスタの内容を所定の条件に設定した 場合、前記命令に弓 Iき続く繰り返し実行される命令は前記命令ノヾッファから読み出され ることを特徴とするデータ処理装置。
1 6 . 請求項 1 5に記載のデータ処理装置において、前記繰り返し実行される命令は複 数の命令であり、前記繰り返し実行される命令の最後の命令は所定の条件が成立したと き、 前記繰り返し実行される命令の最初の命令への分岐を生じさせる命令である。
1 7 . 請求項 1 6に記載のデータ処理装置において、前記命令バッファは命令プリフエ ッテキユーでめる。
1 8 . 請求項 1 7に記載のデータ処理装置において、前記プログラムメモリは、該デ一 タ処理装置の外部にある主記憶装置に格納される命令の一部を格納するキヤッシュメ モリである。
1 9 . 請求項 1 8に記載のデータ処理装置において、前記レジスタの内容を変更する命 令は、 前記レジスタに含まれるビッ卜の論理値を指定する命令である。
2 0 .請求項 1 8に記載のデータ処理装置において、前記レジスタの内容を変更する命 令は、前記繰り返し実行される命令の繰り返し回数に相当する値を前記レジスタに口一 ドする命令である。
2 1 .請求項 1 8に記載のデータ処理装置において、前記レジスタの内容を変更する命 令は、前記繰り返し実行される命令の先頭の命令の位置を特定する情報と末尾の命令の 位置を特定する情報とを前記レジスタにロードする命令である。
2 2 .請求項 2 1に記載のデータ処理装置において、前記命令の先頭の命令の位置を特 定する情報と前記末尾の命令の位置を特定する情報との差が所定の値以下であること が所定の条件に相当する。
PCT/JP1997/000411 1997-02-17 1997-02-17 Processeur de donnees WO1998036351A1 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US09/367,536 US6505295B1 (en) 1997-02-17 1997-02-17 Data processor
PCT/JP1997/000411 WO1998036351A1 (fr) 1997-02-17 1997-02-17 Processeur de donnees
US10/302,850 US7080240B2 (en) 1997-02-17 2002-11-25 Data processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP1997/000411 WO1998036351A1 (fr) 1997-02-17 1997-02-17 Processeur de donnees

Publications (1)

Publication Number Publication Date
WO1998036351A1 true WO1998036351A1 (fr) 1998-08-20

Family

ID=14180065

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP1997/000411 WO1998036351A1 (fr) 1997-02-17 1997-02-17 Processeur de donnees

Country Status (2)

Country Link
US (2) US6505295B1 (ja)
WO (1) WO1998036351A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010015298A (ja) * 2008-07-02 2010-01-21 Nec Electronics Corp 情報処理装置及び命令フェッチ制御方法
JP2011102121A (ja) * 2003-01-31 2011-05-26 Robert Bosch Gmbh 車両における計算機システム

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4042280B2 (ja) * 1999-12-21 2008-02-06 富士ゼロックス株式会社 実行プログラムの生成方法及び実行プログラム生成装置、実行プログラムの実行方法、並びに、コンピュータ可読プログラム記憶媒体
US6732203B2 (en) 2000-01-31 2004-05-04 Intel Corporation Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus
US20040078608A1 (en) * 2001-04-02 2004-04-22 Ruban Kanapathippillai Method and apparatus for power reduction in a digital signal processor integrated circuit
US6813704B1 (en) * 2001-12-20 2004-11-02 Lsi Logic Corporation Changing instruction order by reassigning only tags in order tag field in instruction queue
US7185177B2 (en) * 2002-08-26 2007-02-27 Gerald George Pechanek Methods and apparatus for meta-architecture defined programmable instruction fetch functions supporting assembled variable length instruction processors
US7020769B2 (en) * 2003-09-30 2006-03-28 Starcore, Llc Method and system for processing a loop of instructions
US20060227639A1 (en) * 2005-03-30 2006-10-12 Rico Srowik Current sensing circuit and method of operation
US7475231B2 (en) * 2005-11-14 2009-01-06 Texas Instruments Incorporated Loop detection and capture in the instruction queue
US7496771B2 (en) * 2005-11-15 2009-02-24 Mips Technologies, Inc. Processor accessing a scratch pad on-demand to reduce power consumption
US7562191B2 (en) * 2005-11-15 2009-07-14 Mips Technologies, Inc. Microprocessor having a power-saving instruction cache way predictor and instruction replacement scheme
US7873820B2 (en) * 2005-11-15 2011-01-18 Mips Technologies, Inc. Processor utilizing a loop buffer to reduce power consumption
JP2010066892A (ja) * 2008-09-09 2010-03-25 Renesas Technology Corp データプロセッサ及びデータ処理システム
US9495159B2 (en) * 2013-09-27 2016-11-15 Intel Corporation Two level re-order buffer
CN105242904B (zh) * 2015-09-21 2018-05-18 中国科学院自动化研究所 用于处理器指令缓冲与循环缓冲的装置及其操作方法
US10719350B2 (en) * 2017-10-10 2020-07-21 Sap Se Worker thread manager

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5654550A (en) * 1979-10-12 1981-05-14 Hitachi Ltd Information processor
JPS61229125A (ja) * 1985-04-04 1986-10-13 Canon Inc 演算処理装置
JPS6341932A (ja) * 1985-08-22 1988-02-23 Nec Corp 分岐命令処理装置
JPS63163929A (ja) * 1986-12-26 1988-07-07 Nec Corp マイクロプロセツサ
JPS6488840A (en) * 1987-09-30 1989-04-03 Toshiba Corp Data processor
JPH03163626A (ja) * 1989-11-21 1991-07-15 Nec Ic Microcomput Syst Ltd マイクロコンピュータ
JPH0443432A (ja) * 1990-06-08 1992-02-13 Mitsubishi Electric Corp マイクロプロセッサ
JPH0462637A (ja) * 1990-06-29 1992-02-27 Mitsubishi Electric Corp マイクロプロセッサ
JPH04293124A (ja) * 1991-03-20 1992-10-16 Hitachi Ltd データ処理プロセッサ
JPH04333929A (ja) * 1991-05-10 1992-11-20 Toshiba Corp キャッシュメモリ制御方式

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5890244A (ja) 1981-11-24 1983-05-28 Hitachi Ltd デ−タ処理装置
JPH0743647B2 (ja) 1982-03-18 1995-05-15 横河電機株式会社 データ処理装置における命令ループ捕捉機構
US4626988A (en) * 1983-03-07 1986-12-02 International Business Machines Corporation Instruction fetch look-aside buffer with loop mode control
JP2690921B2 (ja) * 1987-12-25 1997-12-17 株式会社日立製作所 情報処理装置
US5257359A (en) * 1989-02-08 1993-10-26 Hitachi Microsystems, Inc. Instruction cache buffer with program-flow control
JP3163626B2 (ja) 1990-10-15 2001-05-08 ジェイエスアール株式会社 回路基板検査用アダプター装置の製造方法および回路基板検査用アダプター装置
US5420809A (en) * 1993-11-30 1995-05-30 Texas Instruments Incorporated Method of operating a data processing apparatus to compute correlation
JPH07160585A (ja) * 1993-12-13 1995-06-23 Hitachi Ltd 低電力データ処理装置
JPH0991136A (ja) * 1995-09-25 1997-04-04 Toshiba Corp 信号処理装置
JPH10177482A (ja) * 1996-10-31 1998-06-30 Texas Instr Inc <Ti> マイクロプロセッサおよび動作方法
GB2323190B (en) * 1997-03-14 2001-09-19 Nokia Mobile Phones Ltd Executing nested loops
US6598155B1 (en) * 2000-01-31 2003-07-22 Intel Corporation Method and apparatus for loop buffering digital signal processing instructions
US6671799B1 (en) * 2000-08-31 2003-12-30 Stmicroelectronics, Inc. System and method for dynamically sizing hardware loops and executing nested loops in a digital signal processor

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5654550A (en) * 1979-10-12 1981-05-14 Hitachi Ltd Information processor
JPS61229125A (ja) * 1985-04-04 1986-10-13 Canon Inc 演算処理装置
JPS6341932A (ja) * 1985-08-22 1988-02-23 Nec Corp 分岐命令処理装置
JPS63163929A (ja) * 1986-12-26 1988-07-07 Nec Corp マイクロプロセツサ
JPS6488840A (en) * 1987-09-30 1989-04-03 Toshiba Corp Data processor
JPH03163626A (ja) * 1989-11-21 1991-07-15 Nec Ic Microcomput Syst Ltd マイクロコンピュータ
JPH0443432A (ja) * 1990-06-08 1992-02-13 Mitsubishi Electric Corp マイクロプロセッサ
JPH0462637A (ja) * 1990-06-29 1992-02-27 Mitsubishi Electric Corp マイクロプロセッサ
JPH04293124A (ja) * 1991-03-20 1992-10-16 Hitachi Ltd データ処理プロセッサ
JPH04333929A (ja) * 1991-05-10 1992-11-20 Toshiba Corp キャッシュメモリ制御方式

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011102121A (ja) * 2003-01-31 2011-05-26 Robert Bosch Gmbh 車両における計算機システム
US8571782B2 (en) 2003-01-31 2013-10-29 Robert Bosch Gmbh Computer system for use in vehicles
JP2010015298A (ja) * 2008-07-02 2010-01-21 Nec Electronics Corp 情報処理装置及び命令フェッチ制御方法

Also Published As

Publication number Publication date
US20030074546A1 (en) 2003-04-17
US6505295B1 (en) 2003-01-07
US7080240B2 (en) 2006-07-18

Similar Documents

Publication Publication Date Title
WO1998036351A1 (fr) Processeur de donnees
US7500085B2 (en) Identifying code for compilation
US5257359A (en) Instruction cache buffer with program-flow control
CN111949571B (zh) 存储器阵列页面表格寻选
US6757817B1 (en) Apparatus having a cache and a loop buffer
US6823447B2 (en) Software hint to improve the branch target prediction accuracy
KR101005633B1 (ko) 일정한 개수의 가변 길이 명령을 가진 명령 캐시
CN112230992B (zh) 一种包含分支预测循环的指令处理装置、处理器及其处理方法
US10223123B1 (en) Methods for partially saving a branch predictor state
JP2010521748A (ja) 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア
US20020129226A1 (en) Circuits and methods for recovering link stack data upon branch instruction mis-speculation
KR20000076310A (ko) 리스크 구조를 갖는 8 비트 마이크로콘트롤러
CN101868780B (zh) 增强的微处理器或微控制器
JP2010501913A (ja) 可変長命令セット内の分岐命令の最後の粒度(granularity)と関連付けられたキャッシュ分岐情報
EP0413434A2 (en) Pipelined processor with variable instruction length
US20070192574A1 (en) Branch target buffer, a branch prediction circuit and method thereof
JPH0520068A (ja) 並列演算処理装置
US7853773B1 (en) Program memory space expansion for particular processor instructions
US11126435B2 (en) Branch destination prediction based on accord or discord of previous load data from a data cache line corresponding to a load instruction and present load data
US7698536B2 (en) Method and system for providing an energy efficient register file
KR20010007093A (ko) 마이크로 명령을 기초로 프로그램 가능한 명령을 실행하는하드웨어 장치
US8171258B2 (en) Address generation unit with pseudo sum to accelerate load/store operations
JP2005513612A (ja) 有限状態機械制御コードを選択的に用いるプロセッサアーキテクチャ
CN100397529C (zh) 省电的静态存储器控制电路
JP4545777B2 (ja) データ処理装置

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): CN JP KR US

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FI FR GB GR IE IT LU MC NL PT SE

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

Ref document number: 09367536

Country of ref document: US

122 Ep: pct application non-entry in european phase