WO2011065145A1 - プロセッサ、プロセッサによるループ回数制御方法 - Google Patents

プロセッサ、プロセッサによるループ回数制御方法 Download PDF

Info

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
Application number
PCT/JP2010/068116
Other languages
English (en)
French (fr)
Inventor
克敏 関
Original Assignee
日本電気株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電気株式会社 filed Critical 日本電気株式会社
Priority to US13/508,977 priority Critical patent/US9286066B2/en
Priority to JP2011543167A priority patent/JP5692089B2/ja
Publication of WO2011065145A1 publication Critical patent/WO2011065145A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing 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

 本発明のプロセッサは、ループ先頭アドレスからループ末尾アドレスまでのループ内処理を実行するループ命令が発行されると、0にリセットされるループカウンタと、前記ループ内処理に用いるデータが、外部から転送されるデータメモリと、前記データメモリに転送されたデータを用いて前記ループ内処理を実行する演算部と、外部から前記データメモリに対して一定量のデータが転送される度に、前記ループカウンタを1インクリメントするデータカウンタと、前記ループカウンタのループカウント値が0でない場合に、前記ループカウンタを1デクリメントして、前記演算部に対し、前記ループ内処理を実行させるループ制御部と、を有する。

Description

プロセッサ、プロセッサによるループ回数制御方法
 本発明は、ハードウエアループ機能を具備したプロセッサに関し、特に、ループ回数を制御するプロセッサに関する。
 プロセッサにおいては、プログラムを構成する命令は、命令メモリに格納される。プログラムが、1つもしくは複数の命令を繰り返し使用する繰り返し構造を持つ場合、条件分岐命令を使用してループプログラムを作成することで、命令メモリの容量を削減することができる。但し、条件分岐命令を使用すると、ループ末尾からループ先頭(もしくはループ外)に戻るためのオーバヘッドが生じる。
 特に、パイプラインプロセッサにおいては、条件分岐命令を使用する場合、すでにフェッチされたパイプライン内の命令が無効になり、分岐先の命令が新たにフェッチされるため、オーバヘッドが顕著になる。
 このため、プロセッサは、一般的に、ループ命令を用いて、ループ先頭アドレス、ループ末尾アドレス、ループ回数をレジスタに設定し、ハードウエアでオーバヘッドなしにループ処理を管理し実行する機能を具備している。本機能は、ハードウエアループ機能、Zero overhead loop機能、Zero delay loop機能、ループ命令機能などと呼称される。なお、本明細書では、以降、特に断らないかぎり、これらを総称して、ハードウエアループ機能と呼称する。
 図1に、関連する、ハードウエアループ機能を具備したプロセッサの構成を示す。本関連技術の詳細は、特許文献1および特許文献2に開示されている。
 図1に示すように、関連技術のプロセッサ1002は、プログラムカウンタ100と、命令メモリ200と、命令デコーダ300と、演算部400と、データメモリ500と、ループカウンタ600と、ループ制御部700と、を有している。
 プログラムカウンタ100は、発行する命令の命令アドレスを、命令メモリ200およびループ制御部700に通知する。プログラムカウンタ100は、通常、命令アドレスを順次インクリメントし、インクリメントした命令アドレスを通知していくが、演算部400もしくはループ制御部700により、後述する命令アドレスジャンプ先が設定された場合は、設定されたジャンプ先の命令アドレスを通知する。
 命令メモリ200は、プログラムカウンタ100から通知された命令アドレスに従って命令をフェッチし、フェッチした命令を命令デコーダ300に発行する。
 命令デコーダ300は、命令メモリ200により発行された命令をデコードし、デコードした命令を演算制御信号として演算部400へ通知する。また、命令デコーダ300は、ループ命令が発行された時は、ループ先頭アドレスおよびループ末尾アドレスをループ制御部700に設定する。
 演算部400は、命令デコーダ300から通知された演算制御信号に従って、各種演算を行う。演算部400は、演算に必要なデータをデータメモリ500からロードして、内部に具備するレジスタファイルに格納し、そのデータを用いて演算を行う。また、演算部400は、演算結果をデータメモリ500に格納することもできる。また、演算部400は、ループ命令をデコードした演算制御信号が通知された時は、ループ回数をループカウンタ600へ設定する。また、演算部400は、条件分岐命令をデコードした演算制御信号が通知された時は、状態(例えば、レジスタファイル値や、DMAC(Data Memory Access Controller)3000から通知されるデータ転送完了通知信号)が演算制御信号で規定した条件に一致した場合、命令アドレスジャンプ先をプログラムカウンタ100へ設定し、プログラム進行を分岐することができる。
 データメモリ500は、演算部400からのデータの格納および演算部400へのデータのロードを行う。また、データメモリ500とプロセッサ外部の外部メモリ4000間で、外部バス2000を介してデータ転送を行うことができる。データ転送は、DMAC3000で管理する。DMAC3000は、プロセッサ1002を含む外部装置から入力されたDMAC設定に基づいてデータ転送を管理する。
 ループ制御部700は、プログラムカウンタ100から通知された命令アドレスが、命令デコーダ300により設定されたループ先頭アドレスに一致した場合、ループカウンタ600へデクリメント信号を通知する。
 ループカウンタ600は、演算部400により設定されたループ回数をループカウント値の初期値とし、ループ制御部700からデクリメント信号が通知される度に、ループカウント値を1デクリメントし、デクリメントしたループカウント値をループ制御部700に通知する。
 ループ制御部700は、プログラムカウンタ100から通知された命令アドレスが、命令デコーダ300により設定されたループ末尾アドレスと一致し、かつ、ループカウンタ600から通知されたループカウント値が0以外の場合、ループ先頭アドレスを、命令アドレスジャンプ先として、プログラムカウンタ100に通知する。
 また、ループ制御部700は、プログラムカウンタ100から通知された命令アドレスが、命令デコーダ300により設定されたループ末尾アドレスと一致し、かつ、ループカウンタ600から通知されたループカウント値が0の場合、ループ末尾アドレスの次の命令アドレスを、命令アドレスジャンプ先として、プログラムカウンタ100に通知する。
 上述のように、上記関連技術では、ループ命令の発行前に、ループ回数が判明していて、ループ回数の情報を演算部400で保持しておく必要がある。
 しかし、アプリケーションの中には、ループ回数がループ内処理データ量に依存し、外部メモリ4000からデータメモリ500に対し、ループ内処理データの転送が完了した後に、ループ内処理データ量の情報が転送されるものもある。
 こうしたアプリケーションの場合、ループ内処理データとループ内処理データ量の情報とがデータメモリ500に転送された後に、ループ処理を開始する必要があるため、データメモリ500の容量の増大や処理遅延の増大を招く。
 図2に、図1に示した関連技術のプロセッサ1002において、ループ内処理データの転送後に、ループ内処理データ量の情報が転送される場合の処理フローを示す。
 図2に示すように、まず、外部メモリ4000からデータメモリ500に対し、ループ内処理データが転送され(ステップS101)、その後、ループ内処理データ量の情報が転送される(ステップS102)。
 演算部400は、ループ内処理データ量の情報の転送完了を確認した後、ループ内処理データ量を基にループ回数を算出する(ステップS103)。なお、転送完了は、DMAC3000から通知されるデータ転送完了通知信号で確認することができる。
 以降に、ループ命令が発行されると(ステップS104のYes)、演算部400により算出されたループ回数が、ループカウント値の初期値としてループカウンタ600に設定される。また、ループ先頭アドレスおよびループ末尾アドレスがループ制御部700に設定される(ステップS105)。
 ループ命令の発行後は、命令アドレスがループ先頭アドレスに一致するまで、プログラムが進められる。
 命令アドレスがループ先頭アドレスに一致すると(ステップS106のYes)、ループ制御部700は、デクリメント信号をループカウンタ600へ通知し、ループカウンタ600は、ループカウント値を1減らす(ステップS107)。その後、命令アドレスがループ末尾アドレスに達するまで、演算部400によるループ内処理が進められる(ステップS108)。
 命令アドレスがループ末尾アドレスに一致すると(ステップS109のYes)、ループ制御部700は、ループ完了判定処理を行う。
 ループカウント値が0以外の場合(ステップS110のNo)、ループ制御部700は、ループ処理は完了していないと判定し、ループ先頭アドレスを命令アドレスジャンプ先として、プログラムカウンタ100に通知する(ステップS111)。
 一方、ループカウント値が0の場合(ステップS110のYes)、ループ制御部700は、ループ処理が完了したと判定し、ループ末尾アドレスの次の命令アドレスを命令アドレスジャンプ先として、プログラムカウンタ100に通知する(ステップS112)。
 これにより、ループ内処理を、設定されたループ回数分だけ実行することができる。
特開平07-200292号公報 特開平09-237186号公報
 上述のように、特許文献1および特許文献2に開示されたプロセッサにおいては、ループ命令の発行前に、ループ回数が判明していなければならない。
 このため、ループ回数がループ内処理データ量に依存し、外部からループ内処理データがデータメモリに転送された後にループ内処理データ量が判明するアプリケーションの場合、ループ内処理データとループ内処理データ量の情報がデータメモリに格納された後に、ループ処理を開始するため、データメモリの容量の増大や処理遅延の増大を招くという課題がある。
 本発明は、上記課題に鑑みてなされたものであって、データメモリの容量を低減し、かつ処理遅延を低減することができるプロセッサ、プロセッサによるループ回数制御方法を提供することを目的とする。
 本発明のプロセッサは、
 ループ先頭アドレスからループ末尾アドレスまでのループ内処理を実行するループ命令が発行されると、0にリセットされるループカウンタと、
 前記ループ内処理に用いるデータが、外部から転送されるデータメモリと、
 前記データメモリに転送されたデータを用いて前記ループ内処理を実行する演算部と、
 外部から前記データメモリに対して一定量のデータが転送される度に、前記ループカウンタを1インクリメントするデータカウンタと、
 前記ループカウンタのループカウント値が0でない場合に、前記ループカウンタを1デクリメントして、前記演算部に対し、前記ループ内処理を実行させるループ制御部と、を有する。
 本発明のループ回数制御方法は、
 プロセッサによるループ回数制御方法であって、
 ループ先頭アドレスからループ末尾アドレスまでのループ内処理を実行するループ命令が発行されると、ループカウンタを0にリセットするステップと、
 外部からデータメモリに対して、前記ループ内処理に用いるデータが一定量転送される度に、前記ループカウンタを1インクリメントするステップと、
 前記ループカウンタのループカウント値が0でない場合に、前記ループカウンタを1デクリメントして、前記ループ内処理を実行するステップと、を有する。
 本発明のプロセッサは、ループ命令が発行されると、ループカウンタを0にリセットし、ループ内処理に用いるデータがデータメモリに一定量転送される度に、ループカウンタをインクリメントし、ループカウンタのループカウント値が0でない場合に、ループカウンタをデクリメントしてループ内処理を実行する。
 すなわち、本発明のプロセッサは、ループ回数を設定せずに、データメモリに転送されてきたデータのデータ量に応じて、ループ内処理を繰り返し実行する。
 このため、ループ回数がループ内処理に用いるデータのデータ量に依存し、そのデータが外部からデータメモリに転送された後に、そのデータのデータ量が判明するアプリケーションの場合でも、データ転送開始直後からループ処理を開始できる。
 よって、関連技術と比較して、データメモリの容量を低減し、かつ処理遅延を低減することができるという効果が得られる。
関連技術のプロセッサの構成を示すブロック図である。 関連技術のプロセッサの動作を説明するフローチャートである。 本発明の第1の実施形態のプロセッサの構成を示すブロック図である。 本発明の第1の実施形態のプロセッサの動作を説明するフローチャートである。 本発明の第2の実施形態のプロセッサの構成を示すブロック図である。
 以下に、本発明を実施するための形態について図面を参照して説明する。
 (第1の実施形態)
 図3に、本発明の第1の実施形態のプロセッサの構成を示す。
 図3に示すように、本実施形態のプロセッサ1000は、プログラムカウンタ100と、命令メモリ200と、命令デコーダ300と、演算部400と、データメモリ500と、ループカウンタ600と、ループ制御部700と、データカウンタ800と、を有している。
 すなわち、本実施形態のプロセッサ1000は、図1の関連技術のプロセッサ1002と比較して、データカウンタ800が追加された点が異なり、それ以外の構成要素は同じである。
 関連技術のプロセッサ1002では、ループカウンタ600に対し、演算部400からループ回数が設定されていた。これに対して、本実施形態のプロセッサ1000では、ループカウンタ600に対し、命令デコーダ300からループカウントリセットが設定される。また、ループ制御部700は、命令メモリ200に対し、強制NOP(No Operation)通知を行い、NOP命令を強制発行させることができる。
 追加したデータカウンタ800は、外部バス2000に接続され、外部メモリ4000からデータメモリ500へのデータ転送をモニタし、ループ内処理データが一定量転送される度に、ループカウンタ600へインクリメント信号を通知する。このループカウンタ600をインクリメントするデータ単位を、インクリメントデータ単位と呼称する。インクリメントデータ単位は、命令デコーダ300から設定される。
 プログラムカウンタ100は、発行する命令の命令アドレスを、命令メモリ200およびループ制御部700に通知する。プログラムカウンタ100は、通常、命令アドレスを順次インクリメントし、インクリメントした命令アドレスを通知していくが、演算部400もしくはループ制御部700により、後述する命令アドレスジャンプ先が設定された場合は、設定されたジャンプ先の命令アドレスを通知する。
 命令メモリ200は、プログラムカウンタ100から通知された命令アドレスに従って命令をフェッチし、フェッチした命令を命令デコーダ300に発行する。但し、命令メモリ200は、ループ制御部700から強制NOP通知を受信した場合は、NOP命令を命令デコーダ300に発行する。
 命令デコーダ300は、命令メモリ200により発行された命令をデコードし、デコードした命令を演算制御信号として演算部400へ通知する。また、命令デコーダ300は、ループ命令が発行された時は、ループ先頭アドレスおよびループ末尾アドレスをループ制御部700に設定するとともに、インクリメントデータ単位をデータカウンタ800に設定する。
 演算部400は、命令デコーダ300から通知された演算制御信号に従って、各種演算を行う。演算部400は、演算に必要なデータをデータメモリ500からロードして、内部に具備するレジスタファイルに格納し、そのデータを用いて演算を行う。また、演算部400は、演算結果をデータメモリ500に格納することもできる。また、演算部400は、ループ命令をデコードした演算制御信号が通知された時は、ループ回数をループカウンタ600へ設定する。また、演算部400は、条件分岐命令をデコードした演算制御信号が通知された時は、状態(例えば、レジスタファイル値や、DMAC3000から通知されるデータ転送完了通知信号)が演算制御信号で規定した条件に一致した場合、命令アドレスジャンプ先をプログラムカウンタ100へ設定し、プログラム進行を分岐することができる。
 データメモリ500は、演算部400からのデータの格納および演算部400へのデータのロードを行う。また、データメモリ500とプロセッサ外部の外部メモリ4000間で、外部バス2000を介してデータ転送を行うことができる。データ転送は、DMAC3000で管理する。DMAC3000は、プロセッサ1002を含む外部装置から入力されたDMAC設定に基づいてデータ転送を管理する。
 ループ制御部700は、プログラムカウンタ100から通知された命令アドレスが、命令デコーダ300により設定されたループ先頭アドレスに一致した場合、ループカウンタ600から通知されたループカウント値が0か否かを判定する。0の場合、ループ制御部700は、ループカウント値が1以上になるまで、ループ先頭アドレスを、命令アドレスジャンプ先として、プログラムカウンタ100に通知するとともに、命令メモリ200に強制NOP通知を行い、プログラム進行を停止する。一方、ループカウント値が1以上の場合、ループ制御部700は、ループカウンタ600へデクリメント信号を通知する。
 データカウンタ800は、上述のように、外部バス2000に接続され、外部メモリ4000からデータメモリ500へのデータ転送をモニタし、インクリメントデータ単位のループ内処理データが転送される度に、ループカウンタ600へインクリメント信号を通知する。
 ループカウンタ600は、命令デコーダ300からループカウンタリセットが設定されると、ループカウント値を0にリセットし、データカウンタ800からインクリメント信号が通知される度に、ループカウント値を1インクリメントし、ループ制御部700からデクリメント信号が通知される度に、ループカウント値を1デクリメントする。
 ループ制御部700は、プログラムカウンタ100から通知された命令アドレスが、命令デコーダ300により設定されたループ末尾アドレスと一致し、かつ、ループカウンタ600から通知されたループカウント値が0以外の場合、ループ先頭アドレスを、命令アドレスジャンプ先として、プログラムカウンタ100に通知する。
 また、ループ制御部700は、プログラムカウンタ100から通知された命令アドレスが、命令デコーダ300により設定されたループ末尾アドレスと一致し、かつ、ループカウンタ600から通知されたループカウント値が0の場合、ループ末尾アドレスの次の命令アドレスを、命令アドレスジャンプ先として、プログラムカウンタ100に通知する。
 以下、本実施形態のプロセッサ1000の動作について説明する。
 図4に、図3に示した本実施形態のプロセッサ1000の処理フローを示す。
 図4に示すように、ループ命令が発行されると(ステップS201のYes)、ループカウンタ600にカウンタリセットが設定される。また、ループ先頭アドレスおよびループ末尾アドレスがループ制御部700に設定され、インクリメントデータ単位がデータカウンタ800に設定される(ステップS202)。
 次に、外部メモリ4000からデータメモリ500へのループ内処理データの転送を開始する(ステップS203)。データカウンタ800は、インクリメントデータ単位のループ内処理データが転送される度に、ループカウンタ600へインクリメント信号を通知する。
 ループ命令の発行およびデータ転送の開始後は、命令アドレスがループ先頭アドレスに一致するまで、プログラムが進められる。
 命令アドレスがループ先頭アドレスに一致すると(ステップS204のYes)、ループ制御部700は、ループカウント値が0か否かを判定する(ステップS205)。
 ループカウント値が0の場合(ステップS205のYes)、ループ制御部700は、ループカウント値が1以上になるまで、ループ先頭アドレスを、命令アドレスジャンプ先として、プログラムカウンタ100に通知するとともに(ステップS206)、命令メモリ200に強制NOP通知を行い、プログラム進行を停止する(ステップS207)。
 一方、ループカウント値が1以上の場合(ステップS205のNo)、ループ制御部700は、ループカウンタ600へデクリメント信号を通知し、ループカウンタ600は、ループカウント値を1減らす(ステップS208)。
 その後、命令アドレスがループ末尾アドレスに達するまで、演算部400によるループ内処理が進められる(ステップS209)。
 命令アドレスがループ末尾アドレスに一致すると(ステップS210のYes)、ループ制御部700は、ループカウント値を基に、現時点までに転送されたループ内処理データ分の処理が終了したか判定を行う。
 ループカウント値が0以外の場合は(ステップS211のNo)、ループ制御部700は、処理が完了していないと判定し、ループ先頭アドレスを命令アドレスジャンプ先として、プログラムカウンタ100に通知する(ステップS212)。
 一方、ループカウント値が0の場合は(ステップS211のYes)、ループ制御部700は、処理が完了したと判定し、命令メモリ200は、条件分岐命令を発行し(ステップS213)、演算部400は、データ転送完了判定を行う(ステップS214)。転送完了は、DMAC3000から通知されるデータ転送完了通知信号で確認することができる。
 データ転送が完了していない場合は(ステップS214のNo)、演算部400は、ループ先頭アドレスを命令アドレスジャンプ先として、プログラムカウンタ100に通知する(ステップS215)。
 一方、データ転送が完了していた場合は(ステップS214のYes)、演算部400は、そのままプログラムを進める(ステップS216)。
 これにより、全てのループ内処理データに対するループ内処理を実行することができる。
 上述したように本実施形態では、ループ命令が発行されると、ループカウンタ600を0にリセットし、ループ内処理データがデータメモリ500に一定量転送される度に、ループカウンタ600を1インクリメントし、ループカウンタ600のループカウント値が0でない場合に、ループカウンタ600を1デクリメントしてループ内処理を実行する。
 すなわち、本実施形態では、ループ回数を設定せずに、データメモリ600に転送されてきたループ内処理データのデータ量に応じて、ループ内処理を繰り返し実行する。
 このため、ループ回数がループ内処理データ量に依存し、外部からループ内処理データがデータメモリに転送された後にループ内処理データ量が判明するアプリケーションの場合でも、データ転送開始直後から、ループ処理を開始できる。
 よって、関連技術と比較して、データメモリ600の容量を低減し、かつ処理遅延を低減することができるという効果が得られる。
 なお、本実施形態では、データ転送完了判定を、条件分岐命令を発行して、演算部400で行っているが、データ転送完了通知をループ制御部700に入力し、命令アドレスがループ末尾アドレスに一致したときに、ループ抜け条件に、データ転送完了判定結果を加えることも、もちろん可能である。
 (第2の実施形態)
 図5に、本発明の第2の実施形態のプロセッサの構成を示す。
 図5に示すように、本実施形態のプロセッサ1001は、データカウンタ800に対し、命令デコーダ300からデータカウント条件を設定している点以外は、第1の実施形態の構成と同じである。
 命令デコーダ300は、命令メモリ200からループ命令が発行された時は、ループ先頭アドレス、ループ末尾アドレスをループ制御部700に設定し、ループカウンタリセットをループカウンタ600へ設定し、データカウント条件およびインクリメントデータ単位をデータカウンタ800へ設定する。
 データカウンタ800は、外部バス2000に接続され、外部メモリ4000からデータメモリ500へのデータ転送をモニタし、データカウント条件を満たすインクリメントデータ単位のループ内処理データが転送される度に、ループカウンタ600へインクリメント信号を通知する。
 データカウント条件は、例えば、データの値の範囲を規定したものでも良い。この場合、データカウンタ800は、データカウント条件により規定された範囲内にある値のインクリメントデータ単位のループ内処理データが転送される度に、ループカウンタ600へインクリメント信号を通知する。
 また、データカウント条件は、データメモリ500のアドレスの範囲を規定したものでも良い。この場合、データカウンタ800は、データカウント条件により規定された範囲内のアドレスにインクリメントデータ単位のループ内処理データが転送される度に、ループカウンタ600へインクリメント信号を通知する。
 以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されものでない。本発明の構成や詳細には、本発明の範囲内で当業者が理解し得る様々な変更をすることができる。
 本出願は、2009年11月24日に出願された日本出願特願2009-266347を基礎とする優先権を主張し、その開示の全てをここに取り込む。
 

Claims (8)

  1.  ループ先頭アドレスからループ末尾アドレスまでのループ内処理を実行するループ命令が発行されると、0にリセットされるループカウンタと、
     前記ループ内処理に用いるデータが、外部から転送されるデータメモリと、
     前記データメモリに転送されたデータを用いて前記ループ内処理を実行する演算部と、
     外部から前記データメモリに対して一定量のデータが転送される度に、前記ループカウンタを1インクリメントするデータカウンタと、
     前記ループカウンタのループカウント値が0でない場合に、前記ループカウンタを1デクリメントして、前記演算部に対し、前記ループ内処理を実行させるループ制御部と、を有することを特徴とするプロセッサ。
  2.  前記データカウンタは、予めデータカウント条件が設定され、外部から前記データメモリに対して、前記データカウント条件を満たす一定量のデータが転送される度に、前記ループカウンタを1インクリメントする、請求項1に記載のプロセッサ。
  3.  前記データカウント条件は、データの値の範囲を規定したものであり、
     前記データカウンタは、外部から前記データメモリに対して、前記データカウント条件により規定された範囲内にある値のデータが一定量転送される度に、前記ループカウンタを1インクリメントする、請求項2に記載のプロセッサ。
  4.  前記データカウント条件は、前記データメモリのアドレスの範囲を規定したものであり、
     前記データカウンタは、外部から前記データメモリに対して、前記データカウント条件により規定された範囲内のアドレスに一定量のデータが転送される度に、前記ループカウンタを1インクリメントする、請求項2に記載のプロセッサ。
  5.  プロセッサによるループ回数制御方法であって、
     ループ先頭アドレスからループ末尾アドレスまでのループ内処理を実行するループ命令が発行されると、ループカウンタを0にリセットするステップと、
     外部からデータメモリに対して、前記ループ内処理に用いるデータが一定量転送される度に、前記ループカウンタを1インクリメントするステップと、
     前記ループカウンタのループカウント値が0でない場合に、前記ループカウンタを1デクリメントして、前記ループ内処理を実行するステップと、を有することを特徴とするループ回数制御方法。
  6.  前記ループカウンタを1インクリメントするステップでは、外部から前記データメモリに対して、予め設定されたデータカウント条件を満たす一定量のデータが転送される度に、前記ループカウンタを1インクリメントする、請求項5に記載のループ回数制御方法。
  7.  前記データカウント条件は、データの値の範囲を規定したものであり、
     前記ループカウンタを1インクリメントするステップでは、外部から前記データメモリに対して、前記データカウント条件により規定された範囲内にある値のデータが一定量転送される度に、前記ループカウンタを1インクリメントする、請求項6に記載のループ回数制御方法。
  8.  前記データカウント条件は、前記データメモリのアドレスの範囲を規定したものであり、
     前記ループカウンタを1インクリメントするステップでは、外部から前記データメモリに対して、前記データカウント条件により規定された範囲内のアドレスに一定量のデータが転送される度に、前記ループカウンタを1インクリメントする、請求項6に記載のループ回数制御方法。
     
PCT/JP2010/068116 2009-11-24 2010-10-15 プロセッサ、プロセッサによるループ回数制御方法 WO2011065145A1 (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108780396A (zh) * 2016-03-23 2018-11-09 Arm有限公司 程序循环控制

Families Citing this family (8)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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