WO2011065145A1 - プロセッサ、プロセッサによるループ回数制御方法 - Google Patents
プロセッサ、プロセッサによるループ回数制御方法 Download PDFInfo
- Publication number
- WO2011065145A1 WO2011065145A1 PCT/JP2010/068116 JP2010068116W WO2011065145A1 WO 2011065145 A1 WO2011065145 A1 WO 2011065145A1 JP 2010068116 W JP2010068116 W JP 2010068116W WO 2011065145 A1 WO2011065145 A1 WO 2011065145A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- loop
- data
- counter
- instruction
- address
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 3
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
Definitions
- the present invention relates to a processor having a hardware loop function, and more particularly to a processor for controlling the number of loops.
- instructions constituting a program are stored in an instruction memory.
- the capacity of the instruction memory can be reduced by creating a loop program using a conditional branch instruction.
- a conditional branch instruction is used, an overhead for returning from the end of the loop to the beginning of the loop (or outside the loop) occurs.
- the processor generally has a function of using a loop instruction to set a loop start address, a loop end address, and the number of loops in a register, and to manage and execute loop processing without hardware overhead.
- This function is referred to as a hardware loop function, a zero overhead loop function, a zero delay loop function, a loop instruction function, or the like. In the present specification, unless otherwise specified, these are collectively referred to as a hardware loop function.
- Fig. 1 shows the configuration of a related processor having a hardware loop function. Details of this related technology are disclosed in Patent Document 1 and Patent Document 2.
- the related art processor 1002 includes a program counter 100, an instruction memory 200, an instruction decoder 300, an arithmetic unit 400, a data memory 500, a loop counter 600, a loop control unit 700, have.
- the program counter 100 notifies the instruction memory 200 and the loop control unit 700 of the instruction address of the issued instruction.
- the program counter 100 normally increments the instruction address sequentially and notifies the incremented instruction address. However, when the instruction address jump destination described later is set by the arithmetic unit 400 or the loop control unit 700, the program counter 100 is set. Notify the instruction address of the jump destination.
- the instruction memory 200 fetches an instruction according to the instruction address notified from the program counter 100, and issues the fetched instruction to the instruction decoder 300.
- the instruction decoder 300 decodes the instruction issued by the instruction memory 200 and notifies the arithmetic unit 400 of the decoded instruction as an operation control signal. Further, the instruction decoder 300 sets a loop head address and a loop end address in the loop control unit 700 when a loop instruction is issued.
- the calculation unit 400 performs various calculations according to the calculation control signal notified from the instruction decoder 300.
- the calculation unit 400 loads data necessary for calculation from the data memory 500, stores it in a register file provided therein, and performs calculation using the data.
- the calculation unit 400 can store the calculation result in the data memory 500.
- the arithmetic unit 400 sets the loop count in the loop counter 600 when the arithmetic control signal obtained by decoding the loop instruction is notified.
- the arithmetic unit 400 is in a state (for example, a register file value or a data transfer completion notification signal notified from the DMAC (Data Memory Access Controller) 3000). Can match the condition defined by the operation control signal, the instruction address jump destination can be set in the program counter 100 and the program progress can be branched.
- the data memory 500 stores data from the calculation unit 400 and loads data to the calculation unit 400. Further, data transfer can be performed between the data memory 500 and the external memory 4000 outside the processor via the external bus 2000. Data transfer is managed by the DMAC 3000.
- the DMAC 3000 manages data transfer based on DMAC settings input from an external device including the processor 1002.
- the loop control unit 700 notifies the loop counter 600 of a decrement signal when the instruction address notified from the program counter 100 matches the loop head address set by the instruction decoder 300.
- the loop counter 600 sets the number of loops set by the calculation unit 400 as an initial value of the loop count value, and every time a decrement signal is notified from the loop control unit 700, the loop count value is decremented by 1, and the decremented loop count value is obtained. Is notified to the loop control unit 700.
- the loop control unit 700 When the instruction address notified from the program counter 100 matches the loop end address set by the instruction decoder 300 and the loop count value notified from the loop counter 600 is other than 0, the loop control unit 700 The start address is notified to the program counter 100 as an instruction address jump destination.
- the loop control unit 700 when the instruction address notified from the program counter 100 matches the loop end address set by the instruction decoder 300 and the loop count value notified from the loop counter 600 is 0, The program counter 100 is notified of the instruction address next to the loop end address as the instruction address jump destination.
- the loop count is known before the loop instruction is issued, and the information on the loop count needs to be held in the calculation unit 400.
- the number of loops depends on the amount of processing data in the loop, and after the transfer of processing data in the loop is completed from the external memory 4000 to the data memory 500, information on the amount of processing data in the loop is transferred. Some are done.
- FIG. 2 shows a processing flow in the case where the information on the processing data amount in the loop is transferred after the processing data in the loop is transferred in the processor 1002 of the related technique shown in FIG.
- the processing data in the loop is transferred from the external memory 4000 to the data memory 500 (step S101), and then the information on the processing data amount in the loop is transferred (step S102).
- the calculation unit 400 calculates the number of loops based on the processing data amount in the loop (step S103).
- the transfer completion can be confirmed by a data transfer completion notification signal notified from the DMAC 3000.
- step S104 the loop count calculated by the calculation unit 400 is set in the loop counter 600 as an initial value of the loop count value. Further, the loop head address and the loop end address are set in the loop control unit 700 (step S105).
- Step S106 When the instruction address matches the loop head address (Yes in Step S106), the loop control unit 700 notifies the decrement signal to the loop counter 600, and the loop counter 600 decrements the loop count value by 1 (Step S107). Thereafter, the in-loop processing by the arithmetic unit 400 is advanced until the instruction address reaches the loop end address (step S108).
- the loop control unit 700 performs a loop completion determination process.
- Step S110 the loop control unit 700 determines that the loop processing is not completed, and notifies the program counter 100 of the loop head address as the instruction address jump destination (Step S110). S111).
- step S110 when the loop count value is 0 (Yes in step S110), the loop control unit 700 determines that the loop processing is completed, and sets the instruction address next to the loop end address as the instruction address jump destination to the program counter 100. Notification is made (step S112).
- the present invention has been made in view of the above problems, and an object thereof is to provide a processor capable of reducing the capacity of a data memory and reducing a processing delay, and a loop number control method by the processor.
- the processor of the present invention includes: A loop counter that is reset to 0 when a loop instruction that executes processing in the loop from the loop head address to the loop tail address is issued; Data used for processing in the loop is a data memory transferred from the outside, An arithmetic unit that executes the in-loop processing using the data transferred to the data memory; A data counter that increments the loop counter by 1 each time a certain amount of data is transferred from the outside to the data memory; A loop control unit that decrements the loop counter by 1 when the loop counter value of the loop counter is not 0, and causes the arithmetic unit to execute the in-loop processing.
- the loop number control method of the present invention includes: A loop number control method by a processor, A step of resetting the loop counter to 0 when a loop instruction for executing an in-loop process from the loop head address to the loop tail address is issued; A step of incrementing the loop counter by 1 each time a certain amount of data used for the processing in the loop is transferred to the data memory from the outside; A step of decrementing the loop counter by 1 and executing the in-loop processing when the loop counter value of the loop counter is not 0.
- the processor of the present invention When a loop instruction is issued, the processor of the present invention resets the loop counter to 0, and increments the loop counter each time a certain amount of data used for in-loop processing is transferred to the data memory. When the count value is not 0, the loop counter is decremented and the in-loop processing is executed.
- the processor of the present invention repeatedly executes the processing in the loop according to the data amount of the data transferred to the data memory without setting the loop count.
- FIG. 3 shows the configuration of the processor according to the first embodiment of the present invention.
- the processor 1000 of this embodiment includes a program counter 100, an instruction memory 200, an instruction decoder 300, an operation unit 400, a data memory 500, a loop counter 600, and a loop control unit 700. And a data counter 800.
- the processor 1000 of this embodiment is different from the processor 1002 of the related technology of FIG. 1 in that a data counter 800 is added, and other components are the same.
- the loop count is set from the calculation unit 400 to the loop counter 600.
- a loop count reset is set for the loop counter 600 from the instruction decoder 300.
- the loop control unit 700 can send a forced NOP (No Operation) notification to the instruction memory 200 to forcibly issue a NOP instruction.
- the added data counter 800 is connected to the external bus 2000, monitors data transfer from the external memory 4000 to the data memory 500, and notifies the loop counter 600 of an increment signal each time a certain amount of processing data in the loop is transferred. To do.
- a data unit for incrementing the loop counter 600 is referred to as an increment data unit.
- the increment data unit is set from the instruction decoder 300.
- the program counter 100 notifies the instruction memory 200 and the loop control unit 700 of the instruction address of the issued instruction. Normally, the program counter 100 sequentially increments the instruction address and notifies the incremented instruction address. However, when the instruction address jump destination described later is set by the arithmetic unit 400 or the loop control unit 700, the program counter 100 is set. Notify the instruction address of the jump destination.
- the instruction memory 200 fetches an instruction according to the instruction address notified from the program counter 100, and issues the fetched instruction to the instruction decoder 300. However, when the instruction memory 200 receives a forced NOP notification from the loop control unit 700, the instruction memory 200 issues a NOP instruction to the instruction decoder 300.
- the instruction decoder 300 decodes the instruction issued by the instruction memory 200 and notifies the arithmetic unit 400 of the decoded instruction as an operation control signal. Further, when a loop instruction is issued, the instruction decoder 300 sets the loop head address and the loop end address in the loop control unit 700 and sets the increment data unit in the data counter 800.
- the calculation unit 400 performs various calculations according to the calculation control signal notified from the instruction decoder 300.
- the calculation unit 400 loads data necessary for calculation from the data memory 500, stores it in a register file provided therein, and performs calculation using the data.
- the calculation unit 400 can store the calculation result in the data memory 500.
- the arithmetic unit 400 sets the loop count in the loop counter 600 when the arithmetic control signal obtained by decoding the loop instruction is notified. Further, when the arithmetic unit 400 is notified of the arithmetic control signal obtained by decoding the conditional branch instruction, the state (for example, the register file value or the data transfer completion notification signal notified from the DMAC 3000) is specified by the arithmetic control signal. If the condition is met, the instruction address jump destination can be set in the program counter 100 and the program progress can be branched.
- the data memory 500 stores data from the calculation unit 400 and loads data to the calculation unit 400. Further, data transfer can be performed between the data memory 500 and the external memory 4000 outside the processor via the external bus 2000. Data transfer is managed by the DMAC 3000.
- the DMAC 3000 manages data transfer based on DMAC settings input from an external device including the processor 1002.
- the loop control unit 700 determines whether or not the loop count value notified from the loop counter 600 is zero. . In the case of 0, until the loop count value becomes 1 or more, the loop control unit 700 notifies the program counter 100 of the loop head address as an instruction address jump destination and performs a forced NOP notification to the instruction memory 200 to Stop progress. On the other hand, when the loop count value is 1 or more, the loop control unit 700 notifies the loop counter 600 of a decrement signal.
- the data counter 800 is connected to the external bus 2000, monitors data transfer from the external memory 4000 to the data memory 500, and each time processing data in a loop in increment data units is transferred, the loop counter 600 An increment signal is notified to.
- loop counter reset When loop counter reset is set by the instruction decoder 300, the loop counter 600 resets the loop count value to 0, and every time an increment signal is notified from the data counter 800, the loop counter value is incremented by 1 to control the loop. Every time a decrement signal is notified from the unit 700, the loop count value is decremented by one.
- the loop control unit 700 When the instruction address notified from the program counter 100 matches the loop end address set by the instruction decoder 300 and the loop count value notified from the loop counter 600 is other than 0, the loop control unit 700 The start address is notified to the program counter 100 as an instruction address jump destination.
- the loop control unit 700 when the instruction address notified from the program counter 100 matches the loop end address set by the instruction decoder 300 and the loop count value notified from the loop counter 600 is 0, The program counter 100 is notified of the instruction address next to the loop end address as the instruction address jump destination.
- FIG. 4 shows a processing flow of the processor 1000 of the present embodiment shown in FIG.
- step S201 when a loop instruction is issued (Yes in step S201), a counter reset is set in the loop counter 600. Further, the loop head address and the loop end address are set in the loop control unit 700, and the increment data unit is set in the data counter 800 (step S202).
- step S203 transfer of in-loop processing data from the external memory 4000 to the data memory 500 is started (step S203).
- the data counter 800 notifies the loop counter 600 of an increment signal every time processing data in a loop in increment data units is transferred.
- the program After issuing the loop instruction and starting the data transfer, the program is advanced until the instruction address matches the loop head address.
- the loop control unit 700 determines whether or not the loop count value is 0 (step S205).
- Step S205 When the loop count value is 0 (Yes in Step S205), the loop control unit 700 notifies the program counter 100 of the loop head address as the instruction address jump destination until the loop count value becomes 1 or more (Step S205). In step S206, a forced NOP notification is sent to the instruction memory 200, and the program progress is stopped (step S207).
- the loop control unit 700 notifies the loop counter 600 of a decrement signal, and the loop counter 600 decrements the loop count value by 1 (step S208).
- step S209 the processing in the loop by the arithmetic unit 400 is advanced until the instruction address reaches the loop end address.
- the loop control unit 700 determines whether the processing for the in-loop processing data transferred up to the present time is completed based on the loop count value.
- step S211 If the loop count value is other than 0 (No in step S211), the loop control unit 700 determines that the processing is not completed, and notifies the program counter 100 of the loop head address as the instruction address jump destination (step). S212).
- step S211 when the loop count value is 0 (Yes in step S211), the loop control unit 700 determines that the processing is completed, the instruction memory 200 issues a conditional branch instruction (step S213), and the calculation unit 400 Performs a data transfer completion determination (step S214). The completion of the transfer can be confirmed by a data transfer completion notification signal notified from the DMAC 3000.
- step S214 If the data transfer has not been completed (No in step S214), the arithmetic unit 400 notifies the program counter 100 of the loop head address as the instruction address jump destination (step S215).
- step S216 the arithmetic unit 400 proceeds with the program as it is (step S216).
- the loop counter 600 when a loop instruction is issued, the loop counter 600 is reset to 0, and the loop counter 600 is incremented by 1 each time the in-loop processing data is transferred to the data memory 500 by a certain amount.
- the loop count value of the loop counter 600 is not 0, the loop counter 600 is decremented by 1 and the in-loop processing is executed.
- the loop processing is repeatedly executed according to the data amount of the loop processing data transferred to the data memory 600 without setting the loop count.
- the loop processing is started immediately after the start of data transfer. Can start.
- the capacity of the data memory 600 can be reduced and the processing delay can be reduced.
- the data transfer completion determination is performed by the arithmetic unit 400 by issuing a conditional branch instruction.
- the data transfer completion notification is input to the loop control unit 700, and the instruction address is set to the loop end address. It is of course possible to add the data transfer completion determination result to the loop missing condition when they match.
- FIG. 5 shows the configuration of the processor according to the second embodiment of the present invention.
- the processor 1001 of the present embodiment is the same as the configuration of the first embodiment except that the data count condition is set from the instruction decoder 300 to the data counter 800.
- the instruction decoder 300 sets the loop head address and the loop end address in the loop control unit 700, sets the loop counter reset in the loop counter 600, and sets the data count condition and increment.
- a data unit is set in the data counter 800.
- the data counter 800 is connected to the external bus 2000, monitors data transfer from the external memory 4000 to the data memory 500, and each time the processing data in the loop in increment data units satisfying the data count condition is transferred, the loop counter 600 An increment signal is notified to.
- the data count condition may be defined, for example, as a data value range.
- the data counter 800 notifies the loop counter 600 of an increment signal each time the in-loop process data in increment data units having a value within the range defined by the data count condition is transferred.
- the data count condition may define the address range of the data memory 500.
- the data counter 800 notifies the loop counter 600 of an increment signal each time the in-loop process data in increment data units is transferred to an address within the range defined by the data count condition.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
Description
ループ先頭アドレスからループ末尾アドレスまでのループ内処理を実行するループ命令が発行されると、0にリセットされるループカウンタと、
前記ループ内処理に用いるデータが、外部から転送されるデータメモリと、
前記データメモリに転送されたデータを用いて前記ループ内処理を実行する演算部と、
外部から前記データメモリに対して一定量のデータが転送される度に、前記ループカウンタを1インクリメントするデータカウンタと、
前記ループカウンタのループカウント値が0でない場合に、前記ループカウンタを1デクリメントして、前記演算部に対し、前記ループ内処理を実行させるループ制御部と、を有する。
プロセッサによるループ回数制御方法であって、
ループ先頭アドレスからループ末尾アドレスまでのループ内処理を実行するループ命令が発行されると、ループカウンタを0にリセットするステップと、
外部からデータメモリに対して、前記ループ内処理に用いるデータが一定量転送される度に、前記ループカウンタを1インクリメントするステップと、
前記ループカウンタのループカウント値が0でない場合に、前記ループカウンタを1デクリメントして、前記ループ内処理を実行するステップと、を有する。
図3に、本発明の第1の実施形態のプロセッサの構成を示す。
図5に、本発明の第2の実施形態のプロセッサの構成を示す。
Claims (8)
- ループ先頭アドレスからループ末尾アドレスまでのループ内処理を実行するループ命令が発行されると、0にリセットされるループカウンタと、
前記ループ内処理に用いるデータが、外部から転送されるデータメモリと、
前記データメモリに転送されたデータを用いて前記ループ内処理を実行する演算部と、
外部から前記データメモリに対して一定量のデータが転送される度に、前記ループカウンタを1インクリメントするデータカウンタと、
前記ループカウンタのループカウント値が0でない場合に、前記ループカウンタを1デクリメントして、前記演算部に対し、前記ループ内処理を実行させるループ制御部と、を有することを特徴とするプロセッサ。 - 前記データカウンタは、予めデータカウント条件が設定され、外部から前記データメモリに対して、前記データカウント条件を満たす一定量のデータが転送される度に、前記ループカウンタを1インクリメントする、請求項1に記載のプロセッサ。
- 前記データカウント条件は、データの値の範囲を規定したものであり、
前記データカウンタは、外部から前記データメモリに対して、前記データカウント条件により規定された範囲内にある値のデータが一定量転送される度に、前記ループカウンタを1インクリメントする、請求項2に記載のプロセッサ。 - 前記データカウント条件は、前記データメモリのアドレスの範囲を規定したものであり、
前記データカウンタは、外部から前記データメモリに対して、前記データカウント条件により規定された範囲内のアドレスに一定量のデータが転送される度に、前記ループカウンタを1インクリメントする、請求項2に記載のプロセッサ。 - プロセッサによるループ回数制御方法であって、
ループ先頭アドレスからループ末尾アドレスまでのループ内処理を実行するループ命令が発行されると、ループカウンタを0にリセットするステップと、
外部からデータメモリに対して、前記ループ内処理に用いるデータが一定量転送される度に、前記ループカウンタを1インクリメントするステップと、
前記ループカウンタのループカウント値が0でない場合に、前記ループカウンタを1デクリメントして、前記ループ内処理を実行するステップと、を有することを特徴とするループ回数制御方法。 - 前記ループカウンタを1インクリメントするステップでは、外部から前記データメモリに対して、予め設定されたデータカウント条件を満たす一定量のデータが転送される度に、前記ループカウンタを1インクリメントする、請求項5に記載のループ回数制御方法。
- 前記データカウント条件は、データの値の範囲を規定したものであり、
前記ループカウンタを1インクリメントするステップでは、外部から前記データメモリに対して、前記データカウント条件により規定された範囲内にある値のデータが一定量転送される度に、前記ループカウンタを1インクリメントする、請求項6に記載のループ回数制御方法。 - 前記データカウント条件は、前記データメモリのアドレスの範囲を規定したものであり、
前記ループカウンタを1インクリメントするステップでは、外部から前記データメモリに対して、前記データカウント条件により規定された範囲内のアドレスに一定量のデータが転送される度に、前記ループカウンタを1インクリメントする、請求項6に記載のループ回数制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/508,977 US9286066B2 (en) | 2009-11-24 | 2010-10-15 | Processor, and method of loop count control by processor |
JP2011543167A JP5692089B2 (ja) | 2009-11-24 | 2010-10-15 | プロセッサ、プロセッサによるループ回数制御方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009-266347 | 2009-11-24 | ||
JP2009266347 | 2009-11-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2011065145A1 true WO2011065145A1 (ja) | 2011-06-03 |
Family
ID=44066250
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2010/068116 WO2011065145A1 (ja) | 2009-11-24 | 2010-10-15 | プロセッサ、プロセッサによるループ回数制御方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9286066B2 (ja) |
JP (1) | JP5692089B2 (ja) |
WO (1) | WO2011065145A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108780396A (zh) * | 2016-03-23 | 2018-11-09 | Arm有限公司 | 程序循环控制 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9459871B2 (en) * | 2012-12-31 | 2016-10-04 | Intel Corporation | System of improved loop detection and execution |
US9710272B2 (en) * | 2014-04-25 | 2017-07-18 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Computer processor with generation renaming |
US10209992B2 (en) | 2014-04-25 | 2019-02-19 | Avago Technologies International Sales Pte. Limited | System and method for branch prediction using two branch history tables and presetting a global branch history register |
GB2548604B (en) | 2016-03-23 | 2018-03-21 | Advanced Risc Mach Ltd | Branch instruction |
GB2548602B (en) * | 2016-03-23 | 2019-10-23 | Advanced Risc Mach Ltd | Program loop control |
CN108595210B (zh) * | 2018-04-09 | 2021-12-10 | 杭州中天微系统有限公司 | 实现零开销循环的处理器 |
CN109739557B (zh) * | 2019-01-08 | 2022-02-18 | 郑州云海信息技术有限公司 | 零开销循环装置及实现方法、系统、设备、计算机介质 |
US11182160B1 (en) * | 2020-11-24 | 2021-11-23 | Nxp Usa, Inc. | Generating source and destination addresses for repeated accelerator instruction |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5776650A (en) * | 1980-10-31 | 1982-05-13 | Fujitsu Ltd | Loop counter control system |
JPS60147841A (ja) * | 1984-01-11 | 1985-08-03 | Fujitsu Ltd | ル−プ制御方式 |
JPH08314719A (ja) * | 1995-05-12 | 1996-11-29 | Matsushita Electric Ind Co Ltd | プロセッサ及び翻訳装置 |
JPH09251437A (ja) * | 1996-03-18 | 1997-09-22 | Toshiba Corp | 計算機装置及び連続データサーバ装置 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4885682A (en) * | 1986-12-01 | 1989-12-05 | Nec Corporation | Microprogram controller for detecting the occurrence of an interrupt request or a termination of a string instruction |
US5680600A (en) * | 1989-10-13 | 1997-10-21 | Texas Instruments Incorporated | Electronic circuit for reducing controller memory requirements |
JPH07200292A (ja) * | 1993-12-28 | 1995-08-04 | Mitsubishi Electric Corp | パイプライン式プロセッサ |
JPH09237186A (ja) | 1996-03-04 | 1997-09-09 | Hitachi Ltd | ループ制御装置およびプロセッサ |
US5774711A (en) * | 1996-03-29 | 1998-06-30 | Integrated Device Technology, Inc. | Apparatus and method for processing exceptions during execution of string instructions |
US6035378A (en) * | 1997-12-16 | 2000-03-07 | Ncr Corporation | Method and apparatus for dynamically monitoring memory page access frequency in a non-uniform memory access computer system |
US6658552B1 (en) * | 1998-10-23 | 2003-12-02 | Micron Technology, Inc. | Processing system with separate general purpose execution unit and data string manipulation unit |
JP2001202236A (ja) * | 2000-01-20 | 2001-07-27 | Fuji Xerox Co Ltd | プログラマブル論理回路装置によるデータ処理方法、プログラマブル論理回路装置、情報処理システム、プログラマブル論理回路装置への回路再構成方法 |
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 |
US7065636B2 (en) | 2000-12-20 | 2006-06-20 | Intel Corporation | Hardware loops and pipeline system using advanced generation of loop parameters |
JP2004021890A (ja) | 2002-06-20 | 2004-01-22 | Pacific Design Kk | データ処理装置 |
JP2004070642A (ja) | 2002-08-06 | 2004-03-04 | Fujitsu Access Ltd | 共有メモリを介してデータ転送を行う通信システム |
US7366885B1 (en) * | 2004-06-02 | 2008-04-29 | Advanced Micro Devices, Inc. | Method for optimizing loop control of microcoded instructions |
US7937574B2 (en) * | 2007-07-17 | 2011-05-03 | Advanced Micro Devices, Inc. | Precise counter hardware for microcode loops |
-
2010
- 2010-10-15 WO PCT/JP2010/068116 patent/WO2011065145A1/ja active Application Filing
- 2010-10-15 US US13/508,977 patent/US9286066B2/en active Active
- 2010-10-15 JP JP2011543167A patent/JP5692089B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5776650A (en) * | 1980-10-31 | 1982-05-13 | Fujitsu Ltd | Loop counter control system |
JPS60147841A (ja) * | 1984-01-11 | 1985-08-03 | Fujitsu Ltd | ル−プ制御方式 |
JPH08314719A (ja) * | 1995-05-12 | 1996-11-29 | Matsushita Electric Ind Co Ltd | プロセッサ及び翻訳装置 |
JPH09251437A (ja) * | 1996-03-18 | 1997-09-22 | Toshiba Corp | 計算機装置及び連続データサーバ装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108780396A (zh) * | 2016-03-23 | 2018-11-09 | Arm有限公司 | 程序循环控制 |
CN108780396B (zh) * | 2016-03-23 | 2023-03-03 | Arm有限公司 | 程序循环控制 |
Also Published As
Publication number | Publication date |
---|---|
US20120226894A1 (en) | 2012-09-06 |
JPWO2011065145A1 (ja) | 2013-04-11 |
US9286066B2 (en) | 2016-03-15 |
JP5692089B2 (ja) | 2015-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5692089B2 (ja) | プロセッサ、プロセッサによるループ回数制御方法 | |
JP4954957B2 (ja) | プロセッサハードウェアフィードバックメカニズムを用いた最適プロセッサ性能レベルを選択するためのシステムおよび方法 | |
JP6883564B2 (ja) | 動的ベクトル長のループを用いたベクトル処理 | |
JP4770664B2 (ja) | マイクロプロセッサおよびそれを用いたマイクロコンピュータ | |
US20080141013A1 (en) | Digital processor with control means for the execution of nested loops | |
KR20070080089A (ko) | 재구성 어레이에서의 인터럽트 처리 방법 및 장치 | |
CN102902581A (zh) | 硬件加速器及方法、中央处理单元、计算设备 | |
US20100064122A1 (en) | Fast string moves | |
US20230273797A1 (en) | Processor with adaptive pipeline length | |
JPH0338728A (ja) | 演算処理装置 | |
WO2021027253A1 (zh) | 用于多线程处理的方法、装置及系统 | |
JP3749233B2 (ja) | パイプラインでの命令実行方法及び装置 | |
JP6900363B2 (ja) | データ処理 | |
JP2007207145A (ja) | ループ制御回路及びループ制御方法 | |
JP5233078B2 (ja) | プロセッサ及びその処理方法 | |
JP2002229779A (ja) | 情報処理装置 | |
JP3602801B2 (ja) | メモリデータアクセス構造およびその方法 | |
JP3759729B2 (ja) | スペキュレーティブ・レジスタの調整 | |
WO2009144681A1 (en) | Vector shuffle with write enable | |
JP2014160393A (ja) | マイクロプロセッサ及び演算処理方法 | |
JP4305400B2 (ja) | マイクロコンピュータ | |
KR100376639B1 (ko) | 프로세서에서 사용하기에 적합한 메모리 데이터 액세스구조 및 방법 | |
US9612834B2 (en) | Processor with variable instruction atomicity | |
JP2009199424A (ja) | マイクロコンピュータ | |
JP2010277124A (ja) | 演算装置及び電子機器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 10832992 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2011543167 Country of ref document: JP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 13508977 Country of ref document: US |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 10832992 Country of ref document: EP Kind code of ref document: A1 |