JP4673007B2 - Loop control device and control method thereof - Google Patents

Loop control device and control method thereof Download PDF

Info

Publication number
JP4673007B2
JP4673007B2 JP2004172704A JP2004172704A JP4673007B2 JP 4673007 B2 JP4673007 B2 JP 4673007B2 JP 2004172704 A JP2004172704 A JP 2004172704A JP 2004172704 A JP2004172704 A JP 2004172704A JP 4673007 B2 JP4673007 B2 JP 4673007B2
Authority
JP
Japan
Prior art keywords
loop
instruction
program counter
stack
output
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
JP2004172704A
Other languages
Japanese (ja)
Other versions
JP2005352755A (en
Inventor
愼二 白神
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2004172704A priority Critical patent/JP4673007B2/en
Publication of JP2005352755A publication Critical patent/JP2005352755A/en
Application granted granted Critical
Publication of JP4673007B2 publication Critical patent/JP4673007B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、ループ機能を有するプログラムのシーケンス制御に関し、特に複数のプログラムカウンタが各々多重ループを使用するループ制御装置及びその制御方法に関する。   The present invention relates to sequence control of a program having a loop function, and more particularly to a loop control apparatus and a control method thereof in which a plurality of program counters use multiple loops.

従来、多重ループを処理するプログラムシーケンス制御を行うループ制御装置がある(例えば、特許文献1参照)。ループ制御装置においては、ループスタートアドレス、ループエンドアドレス、ループ回数等をスタック構造として格納し、スタックの先頭を参照することにより、上記制御を実現する手法が一般的に用いられている。
特開平8―63355号公報
Conventionally, there is a loop control apparatus that performs program sequence control for processing multiple loops (see, for example, Patent Document 1). In the loop control device, a method is generally used in which the above control is realized by storing a loop start address, a loop end address, the number of loops, and the like as a stack structure and referring to the top of the stack.
JP-A-8-63355

しかしながら、従来のループ制御装置においては、そもそも、実行中の命令の命令メモリ上のアドレスを示すプログラムカウンタが複数ある場合の想定がなされていない。そのため、多重ループが複数のプログラムカウンタのそれぞれで実行されている場合、スタックの先頭は、複数のプログラムカウンタのうち何れか1つのプログラムカウンタの内周ループの情報を保持しているに過ぎず、全く用をなさない。スタック構造をプログラムカウンタの数だけ用意する方法が考えられるが、スタック構造が「プログラムカウンタ数×ループカウンタ数」の規模となり、必要以上に回路規模が増大してしまうという問題点がある。   However, the conventional loop control device does not assume the case where there are a plurality of program counters indicating the addresses on the instruction memory of the instruction being executed. Therefore, when a multiple loop is executed by each of a plurality of program counters, the top of the stack only holds information on the inner loop of any one of the plurality of program counters, No use at all. Although a method of preparing the stack structure by the number of program counters is conceivable, there is a problem that the stack structure has a scale of “the number of program counters × the number of loop counters” and the circuit scale increases more than necessary.

本発明の目的は、簡易且つ小規模な回路構成により、複数のプログラムカウンタが並列的に多重ループを効率良く実行することを可能とし、特に複数のプログラムによる多重ループ処理を実行する場合でも少ないスタック構造で実行可能とすることで回路規模の増大を抑制可能としたループ制御装置及びその制御方法を提供することにある。 An object of the present invention is to enable a plurality of program counters to efficiently execute multiple loops in parallel with a simple and small-scale circuit configuration , and particularly to reduce stack even when executing multiple loop processing by a plurality of programs. It is an object of the present invention to provide a loop control device and a control method thereof capable of suppressing an increase in circuit scale by enabling execution with a structure .

上述の目的を達成するために、本発明は、複数のプログラムカウンタと複数のループカウンタとを備えたループ制御装置であって、前記複数のプログラムカウンタから選択した1つのプログラムカウンタの値を命令メモリのアドレスとして出力する選択手段と、前記命令メモリが前記選択手段により出力されたアドレスに格納している命令を命令実行手段へ出力する命令出力手段と、前記命令出力手段の出力する命令がループ命令の場合に、当該ループ命令に従って実行されるループ処理のエンドアドレスと、当該ループ処理を実行するプログラムカウンタを示す第1の識別子と、当該ループ処理のループ回数に関する情報を保持するループカウンタを示す第2の識別子と、を対応付けて保持するループ情報を複数格納可能なスタックと、前記命令出力手段がループ命令を出力する際当該ループ命令に関するループ情報を前記スタックに格納し、前記選択手段が新しくプログラムカウンタを選択した場合に、当該プログラムカウンタを示す第1の識別子を含むループ情報のうち前記スタックの先頭に最も近いループ情報を参照して、当該ループ情報の含むエンドアドレスと当該ループ情報の含む第2の識別子の示すループカウンタの値とに基づいて、前記選択手段が選択しているプログラムカウンタによって実行しているループ処理が終了するかを判定する制御手段とを備えることを特徴とする。 In order to achieve the above object, the present invention provides a loop control device comprising a plurality of program counters and a plurality of loop counters , wherein an instruction memory stores a value of one program counter selected from the plurality of program counters. Selection means for outputting as the address of the instruction, instruction output means for outputting the instruction stored in the address output by the instruction memory to the instruction execution means to the instruction execution means, and the instruction output by the instruction output means is a loop instruction In this case, the end address of the loop process executed according to the loop instruction, the first identifier indicating the program counter for executing the loop process, and the first counter indicating the loop counter holding information on the loop count of the loop process. and second identifier, and a plurality retractable stack loop information held in association with the previous If the instruction output means stores the loop information regarding the loop instruction when outputting a loop instruction to the stack, the selection means selects a new program counter, loop information comprising a first identifier indicating the program counter The selection means selects the loop information closest to the top of the stack, based on the end address included in the loop information and the value of the loop counter indicated by the second identifier included in the loop information. Control means for determining whether or not the loop processing being executed by the program counter is completed.

本発明によれば、複数のプログラムによる多重ループ処理を実行する場合でも少ないスタック構造で実行できるため回路規模の増大を抑制できるAccording to the present invention, it is possible to suppress the increase in the circuit scale because it can perform a stack structure less even when running multiple loop processing by multiple programs.

以下、本発明の実施の形態を図面に基づき説明する。   Hereinafter, embodiments of the present invention will be described with reference to the drawings.

[第1の実施の形態]
図1は、本発明の第1の実施の形態に係るループ制御装置の構成を示すブロック図である。
[First Embodiment]
FIG. 1 is a block diagram showing the configuration of the loop control apparatus according to the first embodiment of the present invention.

図1において、ループ制御装置は、プログラムカウンタ1−1、1−2、1−3、プログラムカウンタ選択部2、命令メモリ3、命令デコード部4、命令実行部5、ループ差分レジスタ6、ループカウンタ7、プログラムカウンタ選択信号生成部(以下選択信号生成部と略称)8、ループ情報スタック9、スタック制御部10、プログラムカウンタ更新部11、マルチプレクサ12、加算器13、第1の比較器群14、第2の比較器群15、マルチプレクサ群16、第3の比較器群17、減算器18を備えている。尚、図1では全ての接続を図示しているわけではなく、説明に必要な代表的な接続のみを図示している。   In FIG. 1, a loop control device includes program counters 1-1, 1-2, 1-3, a program counter selection unit 2, an instruction memory 3, an instruction decoding unit 4, an instruction execution unit 5, a loop difference register 6, and a loop counter. 7, a program counter selection signal generation unit (hereinafter abbreviated as a selection signal generation unit) 8, a loop information stack 9, a stack control unit 10, a program counter update unit 11, a multiplexer 12, an adder 13, a first comparator group 14, A second comparator group 15, a multiplexer group 16, a third comparator group 17, and a subtracter 18 are provided. Note that FIG. 1 does not show all the connections, but only representative connections necessary for the description.

プロラムカウンタ1−1、1−2、1−3は、実行中の命令の命令メモリ3上のアドレスを示すものであり、各々、例えば6ビットのフリップフロップから構成されている。プログラムカウンタ選択部2は、複数のプログラムカウンタ1−1、1−2、1−3のうち何れかのプログラムカウンタに格納された値を、プログラムカウンタ選択信号に基づいて命令メモリ3のアドレスとして選択し出力する。命令メモリ3は、データ転送命令を格納するメモリである。命令デコード部4は、命令メモリ3のデータ出力である命令を解読する。命令実行部5は、命令デコード部4で解読された命令を実行する。   The program counters 1-1, 1-2, and 1-3 indicate addresses on the instruction memory 3 of instructions that are being executed, and are each configured of, for example, a 6-bit flip-flop. The program counter selection unit 2 selects a value stored in any one of the plurality of program counters 1-1, 1-2, and 1-3 as an address of the instruction memory 3 based on a program counter selection signal. Then output. The instruction memory 3 is a memory that stores data transfer instructions. The instruction decoding unit 4 decodes an instruction that is a data output of the instruction memory 3. The instruction execution unit 5 executes the instruction decoded by the instruction decoding unit 4.

ループ差分レジスタ6(後述のオフセットレジスタOFSTに相当)は、ループスタートアドレスとループエンドアドレスの差分を保持する。ループカウンタ7(後述のループレジスタLPに相当)は、命令のループ回数を保持する。ループ差分レジスタ6及びループカウンタ7は、各々3つずつ設けられており、命令実行部5により所定値が設定される。選択信号生成部8は、命令実行部5が生成する選択許可信号に基づき、命令実行毎にプログラムカウンタ選択部2に送出するプログラムカウンタ選択信号を生成する。   The loop difference register 6 (corresponding to an offset register OFST described later) holds the difference between the loop start address and the loop end address. The loop counter 7 (corresponding to a loop register LP described later) holds the number of instruction loops. Three loop difference registers 6 and three loop counters 7 are provided, and predetermined values are set by the instruction execution unit 5. The selection signal generation unit 8 generates a program counter selection signal to be sent to the program counter selection unit 2 for each instruction execution based on the selection permission signal generated by the instruction execution unit 5.

ループ情報スタック9は、ループ情報を格納する。即ち、ループ情報スタック9は、ループ実行中であることを示すフラグ(IN_USE(0),IN_USE(1),IN_USE(2))と、ループ命令を実行したプログラムカウンタを示す識別子(即ちプログラムカウンタ選択信号の値)(PC_SEL(0),PC_SEL(1),PC_SEL(2))と、ループ命令がどのループカウンタ及びループ差分レジスタを使用するかを示す識別子(LP_SEL(0),LP_SEL(1),LP_SEL(2))と、ループ命令が実行された際のプログラムカウンタ値とループカウンタ及びループ差分レジスタを示す識別子によって示されるループ差分レジスタ6の値を加算した値(即ちループエンドアドレス)(LP_END(0),LP_END(1),LP_END(2))を保持する。   The loop information stack 9 stores loop information. That is, the loop information stack 9 includes a flag (IN_USE (0), IN_USE (1), IN_USE (2)) indicating that the loop is being executed, and an identifier (that is, program counter selection) indicating the program counter that executed the loop instruction. Signal values) (PC_SEL (0), PC_SEL (1), PC_SEL (2)) and identifiers (LP_SEL (0), LP_SEL (1), LP_SEL (2)) and a value obtained by adding the program counter value when the loop instruction is executed and the value of the loop difference register 6 indicated by the identifier indicating the loop counter and the loop difference register (that is, the loop end address) (LP_END ( 0), LP_END (1), LP_END (2)).

スタック制御部10は、ループ情報スタック9を制御するものであり、後述の制御を行う。プログラムカウンタ更新部11は、プログラムカウンタ選択信号に基づきデータ転送命令実行毎に選択されたプログラムカウンタの値を1ずつ更新、または、スタック制御部10が出力するループバック指示信号に基づきループの先頭アドレスに更新する。マルチプレクサ12は、命令デコード部4がループ命令を解読した際に出力するループカウンタの識別子(LP_SEL)に基づいて、3つのループ差分レジスタ6の値のうち1つの値を選択する。加算器13は、マルチプレクサ12の出力とプログラムカウンタ選択部2の出力(Address)とを加算する。   The stack control unit 10 controls the loop information stack 9 and performs the control described later. The program counter updating unit 11 updates the value of the program counter selected every time the data transfer instruction is executed based on the program counter selection signal, or the start address of the loop based on the loop back instruction signal output from the stack control unit 10 Update to The multiplexer 12 selects one of the three loop difference registers 6 based on the loop counter identifier (LP_SEL) output when the instruction decode unit 4 decodes the loop instruction. The adder 13 adds the output of the multiplexer 12 and the output (Address) of the program counter selection unit 2.

第1の比較器群14は、選択信号生成部8が出力するプログラムカウンタ選択信号(PC_SEL)と、ループ情報スタック9に格納されているループ命令を実行したプログラムカウンタを示す識別子(PC_SEL(0),PC_SEL(1),PC_SEL(2))とが一致しているか否かを比較する。第2の比較器群15は、プログラムカウンタ選択部2の出力(Address)と、ループ情報スタック9に格納されているループエンドアドレス(LP_END(0), LP_END (1), LP_END (2))とが一致しているか否かを比較する。   The first comparator group 14 includes a program counter selection signal (PC_SEL) output from the selection signal generator 8 and an identifier (PC_SEL (0)) indicating a program counter that has executed a loop instruction stored in the loop information stack 9. , PC_SEL (1), PC_SEL (2)) are compared. The second comparator group 15 includes an output (Address) of the program counter selection unit 2 and a loop end address (LP_END (0), LP_END (1), LP_END (2)) stored in the loop information stack 9. Compare whether or not.

マルチプレクサ群16は、ループ情報スタック9に格納されている、ループ命令がどのループカウンタ及びループ差分レジスタを使用するかを示すループカウンタ識別子(LP_SEL(0),LP_SEL(1),LP_SEL(2))に基づいて、3つのループカウンタ7の値のうち1つの値を選択する。第3の比較器群17は、3つのマルチプレクサ群16の各々の出力が1と一致しているか否かを比較する。減算器群18は、スタック制御部10が出力するループエンド検出信号に基づいて、3つのループカウンタ7の値のうち1乃至3つの値を1減算する。   The multiplexer group 16 stores the loop counter identifier (LP_SEL (0), LP_SEL (1), LP_SEL (2)) stored in the loop information stack 9 and indicating which loop counter and loop difference register the loop instruction uses. Based on the above, one of the three loop counters 7 is selected. The third comparator group 17 compares whether or not the output of each of the three multiplexer groups 16 is equal to 1. The subtractor group 18 subtracts 1 to 3 of the values of the three loop counters 7 based on the loop end detection signal output from the stack control unit 10.

ループ制御装置のスタック制御部10における特徴的な制御をまとめると下記のようになる。   The characteristic control in the stack control unit 10 of the loop control device is summarized as follows.

スタック制御部10は、第1の比較器群14の出力が一致を示し、ループ情報スタック9の先頭に最も近く且つループ実行中であることを示すフラグがセットされているエントリに対応する第2の比較器群15の出力が一致を示している場合(換言すれば、第1の比較器群14の出力match_pc(y)=“y”且つループ情報スタック9の出力in_use(y)= “1”であるようなyのうち、ループ情報スタック9の先頭に最も近いyに着目して、第2の比較器群15の出力match_end (y)=“ y”である状態)に、第3の比較器群17の出力に応じて以下の制御を行う。   The stack control unit 10 indicates that the output of the first comparator group 14 indicates a match, the second corresponding to the entry corresponding to the entry in which the flag indicating that the loop information stack 9 is closest to the top of the loop information stack 9 is being executed. Output of the first comparator group 14 (in other words, output_match_pc (y) = “y” of the first comparator group 14 and output_in_use (y) = “1” of the loop information stack 9). Focusing on the y closest to the top of the loop information stack 9 among the y's, the output match_end (y) = “y” of the second comparator group 15) The following control is performed according to the output of the comparator group 17.

即ち、スタック制御部10は、上記エントリに対応する第3の比較器群17の出力が一致を示していない場合は、上記エントリに格納されているループカウンタ及びループ差分レジスタを示す識別子によって示されるループ差分レジスタ6の保持する値を、現在選択されているプログラムカウンタの値から減算し、上記エントリに格納されているループカウンタ及びループ差分レジスタを示す識別子によって示されるループカウンタ7の保持する値を1減算するように制御する。   That is, when the output of the third comparator group 17 corresponding to the entry does not indicate a match, the stack control unit 10 is indicated by an identifier indicating a loop counter and a loop difference register stored in the entry. The value held in the loop difference register 6 is subtracted from the value of the currently selected program counter, and the value held in the loop counter 7 indicated by the identifier indicating the loop counter and the loop difference register stored in the entry is obtained. Control to subtract one.

また、スタック制御部10は、上記エントリに対応する第3の比較器群17の出力が一致を示している場合は、ループ情報スタック9の上記エントリを無効化(IN_USE(0)をクリア)すると共に、上記エントリに格納されているループカウンタ及びループ差分レジスタを示す識別子によって示されるループカウンタ7の保持する値を1減算するか或いは0にクリアするように制御する。   Further, when the output of the third comparator group 17 corresponding to the entry indicates a match, the stack control unit 10 invalidates the entry in the loop information stack 9 (clears IN_USE (0)). At the same time, the value held by the loop counter 7 indicated by the loop counter and the identifier indicating the loop difference register stored in the entry is controlled to be decremented by 1 or cleared to 0.

更に、スタック制御部10は、第1の比較器群14の出力が一致を示し、ループ情報スタック9のループ実行中であることを示すフラグがセットされている2つ以上のエントリに対応する第2の比較器群15の出力が一致を示している場合、第3の比較器群17の出力に応じて以下の制御を行う。   Furthermore, the stack control unit 10 indicates that the outputs of the first comparator group 14 indicate a match and the loop information stack 9 corresponds to two or more entries in which a flag indicating that a loop is being executed is set. When the outputs of the second comparator group 15 indicate coincidence, the following control is performed according to the output of the third comparator group 17.

即ち、スタック制御部10は、上記2つ以上のエントリに対応する第3の比較器群17の出力の少なくとも1つが一致を示していない場合は、一致を示していないもののうちループ情報スタック9の先頭に最も近いエントリに格納されているループカウンタ及びループ差分レジスタを示す識別子によって示されるループ差分レジスタ6の保持する値を、現在選択されているプログラムカウンタの値から減算し、上記エントリに格納されているループカウンタ及びループ差分レジスタを示す識別子によって示されるループカウンタ7の保持する値を1減算するように制御する。   That is, when at least one of the outputs of the third comparator group 17 corresponding to the two or more entries does not indicate a match, the stack control unit 10 determines whether the loop information stack 9 among the ones that do not indicate a match. The value held in the loop difference register 6 indicated by the identifier indicating the loop counter and the loop difference register stored in the entry closest to the head is subtracted from the value of the currently selected program counter and stored in the entry. Control is performed so that the value held by the loop counter 7 indicated by the identifier indicating the loop counter and the loop difference register is decremented by one.

また、スタック制御部10は、上記2つ以上のエントリに対応する第3の比較器群17の出力の全てが一致を示している場合は、ループ情報スタック9の上記2つ以上のエントリを全て無効化すると共に、上記2つ以上のエントリに格納されているループカウンタ及びループ差分レジスタを示す2つ以上の識別子によって示される2つ以上のループカウンタ7の保持する全ての値を1減算するか或いは0にクリアするように制御する。   Further, the stack control unit 10 selects all the two or more entries in the loop information stack 9 when all the outputs of the third comparator group 17 corresponding to the two or more entries indicate a match. Whether to invalidate and subtract 1 from all values held by two or more loop counters 7 indicated by two or more identifiers indicating loop counters and loop difference registers stored in the two or more entries Alternatively, control is performed to clear to zero.

次に、ループ制御装置を構成する上記各部のうち、命令メモリ3、プロラムカウンタ1−1、1−2、1−3、プログラムカウンタ選択部2、プログラムカウンタ更新部11、選択信号生成部8の詳細構成を説明する。   Next, among the above-mentioned units constituting the loop control device, the instruction memory 3, the program counters 1-1, 1-2, 1-3, the program counter selection unit 2, the program counter update unit 11, and the selection signal generation unit 8 A detailed configuration will be described.

図2は、命令メモリ3の詳細構成を示す図である。   FIG. 2 is a diagram showing a detailed configuration of the instruction memory 3.

図2において、命令メモリ3は、例えば2ポート(1Read/1Write)のSRAMから構成されており、データ幅は32ビット、ワード長は64である。命令メモリ3の読み出しアドレス(READ ADDRESS)は6ビットであり、読み出し許可信号(READ ENABLE)をアサートすると、32ビットの読み出しデータがREAD DATAポートから読み出される。本実施の形態では、読み出しアドレスはプログラムカウンタ選択部2から供給され、読み出しデータは命令デコード部4に供給される。   In FIG. 2, the instruction memory 3 is composed of, for example, a 2-port (1 Read / 1 Write) SRAM, and has a data width of 32 bits and a word length of 64. The read address (READ ADDRESS) of the instruction memory 3 is 6 bits. When a read enable signal (READ ENABLE) is asserted, 32-bit read data is read from the READ DATA port. In the present embodiment, the read address is supplied from the program counter selection unit 2 and the read data is supplied to the instruction decoding unit 4.

命令メモリ3の書き込みアドレス(WRITE ADDRESS)は6ビットであり、書き込み許可信号(WRITE ENABLE)をアサートすると、32ビットの書き込みデータ(WRITE DATA)信号上にドライブされている命令データが命令メモリ3の書き込みアドレスに書き込まれる。本実施の形態では、書き込みアドレス、書き込みデータ共に不図示の外部デバイスから供給される。   The write address (WRITE ADDRESS) of the instruction memory 3 is 6 bits, and when the write enable signal (WRITE ENABLE) is asserted, the instruction data driven on the 32-bit write data (WRITE DATA) signal is stored in the instruction memory 3. Written to the write address. In this embodiment, both the write address and the write data are supplied from an external device (not shown).

命令メモリ3に対する命令データの書き込みが終わるとリセットが解除され、ループ制御装置は動作を開始する。プログラムカウンタ1−1、1−2、1−3は、上述したように各々6ビットのフリップフロップから構成されており、リセット時の初期値は、各々、“000000”, “010000”, “100000”となっている。即ち、プログラムカウンタ1−1は0x0番地からの命令を実行し、プログラムカウンタ1−2は0x10番地からの命令を実行し、プログラムカウンタ1−3は0x20番地からの命令を実行する。   When the writing of the instruction data to the instruction memory 3 is finished, the reset is released and the loop control device starts operation. Each of the program counters 1-1, 1-2, and 1-3 is composed of 6-bit flip-flops as described above, and initial values at reset are “000000”, “010000”, and “100000”, respectively. It has become. That is, the program counter 1-1 executes an instruction from address 0x0, the program counter 1-2 executes an instruction from address 0x10, and the program counter 1-3 executes an instruction from address 0x20.

図3は、プログラムカウンタ1−1、1−2、1−3、プログラムカウンタ選択部2、プログラムカウンタ更新部11の詳細構成を示すブロック図である。   FIG. 3 is a block diagram showing detailed configurations of the program counters 1-1, 1-2, 1-3, the program counter selection unit 2, and the program counter update unit 11.

図3において、プログラムカウンタ更新部11は、プログラムカウンタ1−1に対応したセレクタ11−1、11−2、+1加算器11−3と、プログラムカウンタ1−2に対応したセレクタ11−4、11−5、+1加算器11−6と、プログラムカウンタ1−3に対応したセレクタ11−7、11−8、+1加算器11−9とを備えている。   In FIG. 3, the program counter updating unit 11 includes selectors 11-1, 11-2 and +1 adder 11-3 corresponding to the program counter 1-1, and selectors 11-4 and 11 corresponding to the program counter 1-2. -5, +1 adder 11-6, selectors 11-7, 11-8, and +1 adder 11-9 corresponding to the program counter 1-3.

プログラムカウンタ1−1にはセレクタ11−1の出力が入力される。セレクタ11−1は、プログラムカウンタ1−1の現在の値、現在の値に1を加算した値、LOAD命令によりローディングされる値(store_d)、LOOP命令によりループバックする際のプログラムカウンタ1−1の戻り値(lp_back_pc)、JUMP命令によるジャンプ先アドレス(jump_pc)のうちの1つを選択して出力する。セレクタ11−2は、プログラムカウンタ1−1の出力値、プログラムカウンタ1−1の出力値に1を加えた値(+1加算器11−3の出力値)のうちの何れかをプログラムカウンタ選択信号pc_selに基づいて選択する。即ち、当該クロックサイクルにおいてプログラムカウンタ1−1が選択されている場合は1を加えた値を選択し、プログラムカウンタ1−1が非選択の場合は現在の値を選択する。   The output of the selector 11-1 is input to the program counter 1-1. The selector 11-1 includes the current value of the program counter 1-1, a value obtained by adding 1 to the current value, a value loaded by a LOAD instruction (store_d), and a program counter 1-1 when looping back by a LOOP instruction. One of the return value (lp_back_pc) and the jump destination address (jump_pc) by the JUMP instruction is selected and output. The selector 11-2 selects one of the output value of the program counter 1-1 and the value obtained by adding 1 to the output value of the program counter 1-1 (the output value of the +1 adder 11-3) as a program counter selection signal. Select based on pc_sel. That is, when the program counter 1-1 is selected in the clock cycle, a value obtained by adding 1 is selected, and when the program counter 1-1 is not selected, the current value is selected.

プログラムカウンタ更新部11におけるプログラムカウンタ1−2及び1−3に各々対応する部分においても、上記と同様の構成が採られており、プログラムカウンタ更新部11によりプログラムカウンタ1−2及び1−3の値の更新がなされる。   The portions corresponding to the program counters 1-2 and 1-3 in the program counter updating unit 11 have the same configuration as described above. The program counter updating unit 11 sets the program counters 1-2 and 1-3. The value is updated.

プログラムカウンタ選択部2は、選択信号生成部8から出力される3ビットのプログラムカウンタ選択信号pc_sel[2:0]に応じて、プログラムカウンタ1−1(PC(0))、1−2(PC(1))、1−3(PC(2))の各出力のうちの1つを選択し、命令メモリ3の読み取りアドレスとして出力する。プログラムカウンタ選択信号pc_sel[2:0]は、one-hotの信号((3ビット中1ビットが“1”となる信号))である。   The program counter selection unit 2 responds to the 3-bit program counter selection signal pc_sel [2: 0] output from the selection signal generation unit 8 to program counters 1-1 (PC (0)), 1-2 (PC (1)) One of the outputs 1-3 (PC (2)) is selected and output as a read address of the instruction memory 3. The program counter selection signal pc_sel [2: 0] is a one-hot signal ((a signal in which 1 out of 3 bits is “1”)).

プログラムカウンタ選択部2は、プログラムカウンタ選択信号pc_sel が“001”のときプログラムカウンタ1−1を選択し、プログラムカウンタ選択信号pc_sel が“010”のときプログラムカウンタ1−2を選択し、プログラムカウンタ選択信号pc_sel が“100”のときプログラムカウンタ1−3を選択する。即ち、プログラムカウンタ選択信号pc_sel[n]= “1”のときプログラムカウンタPC(n) を選択する(ただしn=0,1,2)。   The program counter selection unit 2 selects the program counter 1-1 when the program counter selection signal pc_sel is “001”, selects the program counter 1-2 when the program counter selection signal pc_sel is “010”, and selects the program counter. When the signal pc_sel is “100”, the program counter 1-3 is selected. That is, when the program counter selection signal pc_sel [n] = “1”, the program counter PC (n) is selected (where n = 0, 1, 2).

図4は、選択信号生成部8の詳細構成を示すブロック図である。   FIG. 4 is a block diagram illustrating a detailed configuration of the selection signal generation unit 8.

図4において、選択信号生成部8は、フリップフロップ8−1、8−2、8−3、セレクタ8−4、8−5、8−6、デコーダ8−7を備えている。   In FIG. 4, the selection signal generation unit 8 includes flip-flops 8-1, 8-2 and 8-3, selectors 8-4, 8-5 and 8-6, and a decoder 8-7.

フリップフロップ8−1、8−2、8−3は、各々、クロック信号線とリセット信号線に接続されており、出力がプログラムカウンタ選択信号となる。フリップフロップ8−1は、リセット信号により“1”がセットされ、D入力にはセレクタ8−4の出力が接続され、Q出力がプログラムカウンタ選択信号pc_sel[0]となる。フリップフロップ8−2は、リセット信号により“0”がセットされ、D入力にはセレクタ8−5の出力が接続され、Q出力がプログラムカウンタ選択信号pc_sel[1]となる。フリップフロップ8−3は、リセット信号により“0”がセットされ、D入力にはセレクタ8−6の出力が接続され、Q出力がプログラムカウンタ選択信号pc_sel[2]となる。   The flip-flops 8-1, 8-2, and 8-3 are connected to the clock signal line and the reset signal line, respectively, and the output is a program counter selection signal. The flip-flop 8-1 is set to “1” by the reset signal, the output of the selector 8-4 is connected to the D input, and the Q output becomes the program counter selection signal pc_sel [0]. In the flip-flop 8-2, "0" is set by the reset signal, the output of the selector 8-5 is connected to the D input, and the Q output becomes the program counter selection signal pc_sel [1]. In the flip-flop 8-3, "0" is set by the reset signal, the output of the selector 8-6 is connected to the D input, and the Q output becomes the program counter selection signal pc_sel [2].

デコーダ8−7は、命令実行部5が出力するプログラムカウンタ選択許可信号pc_en[2:0]と、命令実行のストール指示を示すストール信号をデコードし、セレクタ8−4、8−5、8−6に対して選択制御信号sel-_cnt[0] 、sel-_cnt[1]、 sel-_cnt[2]を各々出力する。デコーダ8−7のデコード方式を図5に示す。   The decoder 8-7 decodes the program counter selection permission signal pc_en [2: 0] output from the instruction execution unit 5 and the stall signal indicating the instruction execution stall instruction, and selects the selectors 8-4, 8-5, 8- 6 select control signals sel-_cnt [0], sel-_cnt [1], and sel-_cnt [2], respectively. The decoding method of the decoder 8-7 is shown in FIG.

図5は、プログラムカウンタ選択許可信号のデコード方式と選択制御信号の関係を示す図である。   FIG. 5 is a diagram showing the relationship between the decoding method of the program counter selection permission signal and the selection control signal.

図5において、図示の表は、入力であるストールと、プログラムカウンタ選択許可信号pc_en[2:0]に対する出力である選択制御信号sel_cnt[2:0]の関係を示している。例えば、ストールが“1”の場合、選択制御信号sel_cntは全て2となり、選択信号生成部8の全フリップフロップは現在の値を保持する。即ち、プログラムカウンタ選択信号pc_selは更新されない。   In FIG. 5, the illustrated table shows the relationship between the stall as an input and the selection control signal sel_cnt [2: 0] as an output with respect to the program counter selection permission signal pc_en [2: 0]. For example, when the stall is “1”, the selection control signals sel_cnt are all 2 and all the flip-flops of the selection signal generation unit 8 hold the current value. That is, the program counter selection signal pc_sel is not updated.

ストールが“0”の場合でプログラムカウンタ選択許可信号pc_en=“111”の場合、選択制御信号sel_cntは全て0となり、プログラムカウンタ選択信号pc_selはシフトレジスタ動作する。即ち、プログラムカウンタ選択信号pc_selは“001”→“010”→“100”→“001”と遷移し、プログラムカウンタはPC(0)→PC(1)→PC(2)→PC(0)の順に選択される。   When the stall is “0” and the program counter selection enable signal pc_en = “111”, the selection control signals sel_cnt are all 0, and the program counter selection signal pc_sel operates as a shift register. That is, the program counter selection signal pc_sel transits from “001” → “010” → “100” → “001”, and the program counter changes from PC (0) → PC (1) → PC (2) → PC (0). Selected in order.

ストールが“0”の場合でプログラムカウンタ選択許可信号pc_en=“011”の場合は、プログラムカウンタPC(2)が選択不許可となるように、選択制御信号sel_cnt=“301”となる。即ち、プログラムカウンタ選択信号pc_selは“001”→“010”→“001”→“010”→“001”と遷移し、プログラムカウンタはPC(0)→PC(1)→PC(0)→PC(1)→PC(0)の順に選択される。   When the stall is “0” and the program counter selection enable signal pc_en = “011”, the selection control signal sel_cnt = “301” is set so that the program counter PC (2) is not allowed to be selected. That is, the program counter selection signal pc_sel transits from “001” → “010” → “001” → “010” → “001”, and the program counter changes from PC (0) → PC (1) → PC (0) → PC (1) → PC (0) is selected in this order.

プログラムカウンタ選択部2によって選択されたプログラムカウンタに対応する命令は、命令メモリ3から読み出され、命令デコード部4に入力される。命令は32ビットからなり、図6に示すように解読される。   An instruction corresponding to the program counter selected by the program counter selection unit 2 is read from the instruction memory 3 and input to the instruction decoding unit 4. The instruction consists of 32 bits and is decoded as shown in FIG.

図6は、命令の解読結果を示す図である。   FIG. 6 is a diagram illustrating a result of decoding the instruction.

図6において、32ビットの命令をInst[31:0]と表記すると、Inst[31:30]= “00”のときは特殊命令(Special Instruction)、Inst[31:30]= “01”のときはロード命令(Load Instruction)、Inst[31:30]= “10”のときはストア命令(Store Instruction)、Inst[31:30]= “11”のときは無効命令とそれぞれ解読する。   In FIG. 6, when a 32-bit instruction is expressed as Inst [31: 0], when Inst [31:30] = “00”, a special instruction (Instruction [31:30] = “01”) When it is Inst [31:30] = “10”, it is decoded as a store instruction (Store Instruction). When Inst [31:30] = “11”, it is decoded as an invalid instruction.

ロード命令とは、不図示のメモリからループ制御装置の内部リソースへのデータ転送命令である。ストア命令とは、ループ制御装置の内部リソースからメモリへのデータ転送命令である。特殊命令には、NOP命令(なにもしない命令)、ループ命令(LOOP)、ジャンプ命令(JUMP)等の一般的なプロセッサに備わっている命令が含まれる。   The load instruction is a data transfer instruction from a memory (not shown) to an internal resource of the loop control device. The store instruction is a data transfer instruction from the internal resource of the loop control device to the memory. The special instruction includes an instruction provided in a general processor such as a NOP instruction (an instruction that does nothing), a loop instruction (LOOP), and a jump instruction (JUMP).

Inst[29:27]は、データサイズを示すフィールドであり、詳細は図7に示されている。例えば“000”の場合は1バイトの転送、“100”の場合は5バイトの転送であることを示す。Inst[26:23]は、転送元リソースのインデックスを示すフィールド、Inst[22:19]は、転送先リソースのインデックスを示すフィールドであり、Inst[18:16]で示されるリソースの識別子(ロード命令の場合はデータ転送先、ストア命令の場合はデータ転送元を示す)と共にどの内部リソースの何番目のリソースを転送対象にするかを示す。   Inst [29:27] is a field indicating the data size, and details are shown in FIG. For example, “000” indicates transfer of 1 byte, and “100” indicates transfer of 5 bytes. Inst [26:23] is a field indicating the index of the transfer source resource, Inst [22:19] is a field indicating the index of the transfer destination resource, and the identifier (load) of the resource indicated by Inst [18:16] In the case of an instruction, the data transfer destination is indicated, and in the case of a store instruction, the data transfer source is indicated).

内部リソース識別子の詳細は図8に示されている。“000”の場合は、PC即ちプログラムカウンタを示す。“001”の場合は、AR即ちアドレスレジスタ(命令実行部5の内部リソースに相当)を示す。“010”の場合は、GPR即ち汎用レジスタ(命令実行部5の内部リソースに相当)を示す。“011”の場合は、OUT/IN即ちDMAポートを示す(OUT/INはロードかストアかにより識別される)。“100”の場合は、LP即ちループレジスタ(図1のループカウンタ7に相当)を示す。“101”の場合は、OFST即ちオフセットレジスタ(図1のループ差分レジスタ6に相当)を示す。   Details of the internal resource identifier are shown in FIG. “000” indicates a PC, that is, a program counter. “001” indicates AR, that is, an address register (corresponding to an internal resource of the instruction execution unit 5). “010” indicates GPR, that is, a general-purpose register (corresponding to an internal resource of the instruction execution unit 5). “011” indicates OUT / IN, that is, a DMA port (OUT / IN is identified as load or store). “100” indicates LP, that is, a loop register (corresponding to the loop counter 7 in FIG. 1). “101” indicates OFST, that is, an offset register (corresponding to the loop difference register 6 in FIG. 1).

ロード命令の場合のデータ転送元とストア命令の場合のデータ転送先を示す内部リソース識別子は、アドレスレジスタARに固定されており、インデックスのみをそれぞれのインデックスフィールドにより指定する。   The internal resource identifier indicating the data transfer source in the case of the load instruction and the data transfer destination in the case of the store instruction is fixed in the address register AR, and only the index is designated by the respective index fields.

Inst[15:13]は、データ転送元またはデータ転送先の有効バイトレーンを示すフィールドであり、データサイズフィールドと共に何バイトをどのバイトレーンに転送するか、またはどのバイトレーンから転送するかを示す。   Inst [15:13] is a field indicating the valid byte lane of the data transfer source or data transfer destination, and indicates how many bytes are transferred to which byte lane together with the data size field. .

図9及び図10は、データサイズフィールド(size)とバイトレーンフィールド(pos_d/s)と有効バイトレーンの関係を示す図である。   FIG. 9 and FIG. 10 are diagrams showing the relationship between the data size field (size), the byte lane field (pos_d / s), and the effective byte lane.

図9及び図10において、図示の表は、データサイズとバイトレーンの組み合わせにより有効となる有効バイトレーンを詳細に示している。データは64ビットであり、バイトレーンは、[63:56]、[55:48]、[47:40]、[39:32]、[31:24]、[21:16]、[15:8]、[7:0]の8レーンあり、有効バイトレーンに”v”を表記している。例えばデータサイズフィールド(size)が“000”即ち1バイトで、バイトレーンフィールド(pos_d/s)が“011”即ち第4バイトレーンの場合、データ[31:24] (データバス信号)を使用して1バイトのデータが転送される。   In FIG. 9 and FIG. 10, the tables shown in detail show the effective byte lanes that are effective depending on the combination of the data size and the byte lanes. The data is 64 bits, and the byte lanes are [63:56], [55:48], [47:40], [39:32], [31:24], [21:16], [15: 8] and [7: 0], there are 8 lanes, and “v” is written in the effective byte lane. For example, when the data size field (size) is “000”, that is, 1 byte, and the byte lane field (pos_d / s) is “011”, that is, the fourth byte lane, data [31:24] (data bus signal) is used. 1 byte of data is transferred.

本実施の形態における命令のより理解を深めるために、いくつかの命令の実例を示す。   In order to better understand the instructions in the present embodiment, some examples of the instructions are shown.

Inst=“01_000_0001_0010_100_001_000000000000”の場合、ロード命令であり、アドレスレジスタAR(1)の示すメモリ上の1バイトデータを、ループレジスタLP(2)の[15:8]にロードする。   When Inst = “01 — 000 — 0001 — 0010 — 100 — 001 — 000000000000”, this is a load instruction, and 1-byte data on the memory indicated by the address register AR (1) is loaded into [15: 8] of the loop register LP (2).

Inst=“10_111_0001_0010_011_000_000000000000”の場合、ストア命令であり、DMA入力ポートIN(1)から読み込まれた8バイトデータを、アドレスレジスタAR(2)の示すメモリ上にストアする。   When Inst = “10_111 — 0001 — 0010 — 011 — 000 — 000000000000”, this is a store instruction, and the 8-byte data read from the DMA input port IN (1) is stored in the memory indicated by the address register AR (2).

図11は、特殊命令のエンコーディングを示す図である。   FIG. 11 is a diagram illustrating encoding of special instructions.

図11において、EnableThreadは、特定のプログラムカウンタを有効にする命令であり、当該プログラムカウンタ以外の休眠中の他のプログラムカウンタを起動するときに使用できる。DisableThreadは、特定のプログラムカウンタを無効にする命令であり、当該プログラムカウンタ以外の実行中の他のプログラムカウンタを休眠状態にする場合や、プログラムの実行が終了した際に自分自身を休眠状態にする際に使用できる。JUMPは、ジャンプ命令であり、オペランドInst[21:12]を現在選択中のプログラムカウンタにコピーする。本実施の形態ではプログラムカウンタは6ビットであるので、実際はInst[17:12]がコピーされる。   In FIG. 11, EnableThread is a command for enabling a specific program counter, and can be used when starting another program counter that is sleeping other than the program counter. DisableThread is a command that disables a specific program counter. When other program counters other than the program counter are put into a sleep state, or when program execution is finished, they are put into a sleep state. Can be used when JUMP is a jump instruction and copies the operand Inst [21:12] to the currently selected program counter. In the present embodiment, since the program counter has 6 bits, Inst [17:12] is actually copied.

LoadImmidiateByteは、即値を内部リソースにロードする命令であり、オペランドInst[7:0]で示される1バイトを、その他のオペランドにより特定される内部リソースにコピーする。ClearResigerは、内部リソースを0クリアする命令である。LoopInは、ループ突入命令であり、LoopIndicator(Inst[22:19])で指定されるループレジスタLP(図1のループカウンタ7に相当)及びオフセットレジスタOFST(図1のループ差分レジスタ6に相当)の組み合わせによりループを実現する。   LoadImmidiateByte is an instruction for loading an immediate value into an internal resource, and copies 1 byte indicated by the operand Inst [7: 0] to the internal resource specified by the other operand. ClearResiger is an instruction to clear internal resources to zero. LoopIn is a loop entry command, and is specified by LoopIndicator (Inst [22:19]). Loop register LP (corresponding to loop counter 7 in FIG. 1) and offset register OFST (corresponding to loop difference register 6 in FIG. 1) A loop is realized by the combination of

上記図1に戻り、命令実行部5は、命令デコード部4の命令解読結果に応じてデータ転送などを実行する。また、命令実行部5は、内部リソースとして、汎用レジスタGPRとアドレスレジスタARをそれぞれ4本ずつ備えている。更に、命令実行部5は、ダイレクトメモリアクセスデバイスとの間におけるデータ転送を行うためのDMAポート(IN(0)及びOUT(0))と、メモリとの間におけるデータ転送を行うためのバスインタフェースを備えている(以上不図示)。   Returning to FIG. 1, the instruction execution unit 5 executes data transfer or the like according to the instruction decoding result of the instruction decoding unit 4. The instruction execution unit 5 includes four general-purpose registers GPR and four address registers AR as internal resources. Further, the instruction execution unit 5 is a DMA interface (IN (0) and OUT (0)) for performing data transfer with the direct memory access device and a bus interface for performing data transfer with the memory. (Not shown).

汎用レジスタGPRは、データを一時的に保持するレジスタであり、例えばメモリからロードしたデータを1バイト毎に別の内部リソースにコピーするときなどに用いる。アドレスレジスタARは、バスインタフェースに対して出力するアドレスを生成するレジスタである。尚、一般的なプロセッサと同様に、1データ転送毎にアドレスレジスタARの値を更新するモード(自動更新アドレッシングモード)を備える構成も好ましい。   The general-purpose register GPR is a register that temporarily holds data. For example, the general-purpose register GPR is used when data loaded from a memory is copied to another internal resource for each byte. The address register AR is a register that generates an address to be output to the bus interface. As in the case of a general processor, a configuration including a mode (automatic update addressing mode) for updating the value of the address register AR for each data transfer is also preferable.

更に、命令実行部5は、プログラムカウンタの実行抑制機能を備えており、上述したEnableThread命令、DisableThread命令の実行に応じて、選択信号生成部8の入力となるプログラムカウンタ選択許可信号を生成する。   Further, the instruction execution unit 5 has a program counter execution suppression function, and generates a program counter selection permission signal to be input to the selection signal generation unit 8 in accordance with the execution of the above-described EnableThread instruction and DisableThread instruction.

次に、上記構成を有する本実施の形態のループ制御装置における各種制御について図1乃至図21を参照しながら詳細に説明する。   Next, various controls in the loop control apparatus of the present embodiment having the above-described configuration will be described in detail with reference to FIGS.

最初に、ループ制御装置の最も重要な機能であるループ制御について説明する。   First, loop control, which is the most important function of the loop control apparatus, will be described.

まず、簡単のために、1つのプログラムカウンタが1重のループを実行する例を挙げてループ命令の機能を説明する。ループレジスタLP(ループカウンタ7)は、命令のループ回数を示し、オフセットレジスタOFST(ループ差分レジスタ6)は、ループバックすべき命令のアドレスとループ命令のアドレスとの差分を示す。   First, for the sake of simplicity, the function of a loop instruction will be described with an example in which one program counter executes a single loop. The loop register LP (loop counter 7) indicates the number of instruction loops, and the offset register OFST (loop difference register 6) indicates the difference between the address of the instruction to be looped back and the address of the loop instruction.

命令実行部5により、ループレジスタLPとオフセットレジスタOFSTにそれぞれ所定値をロードし、ループ命令を実行することによりループ内に入る。プログラムカウンタが進行してプログラムカウンタの値がオフセットレジスタOFSTに格納された値分だけ進んだときに、プログラムカウンタの値をループ命令の次の命令を示すアドレスに更新する。即ち、プログラムカウンタの値から「オフセットレジスタOFSTの値−1」を減算すると共にループレジスタLPの値を1減算する。ループレジスタLPの値が1である場合は、ループレジスタLPをクリアすると共にループを脱出する。即ち、プログラムカウンタの値に単に1加算する。   The instruction execution unit 5 loads predetermined values into the loop register LP and the offset register OFST, respectively, and enters the loop by executing the loop instruction. When the program counter advances and the value of the program counter advances by the value stored in the offset register OFST, the value of the program counter is updated to an address indicating the instruction next to the loop instruction. That is, the value of the offset register OFST minus 1 is subtracted from the value of the program counter and the value of the loop register LP is decremented by 1. When the value of the loop register LP is 1, the loop register LP is cleared and the loop is exited. That is, 1 is simply added to the value of the program counter.

非常に単純なループを用いたプログラム例を以下に示す。
命令アドレス 命令
0x00 AR(0)[7:0]に即値0x20をロード
0x01 LP(0)にAR(0)の示すメモリ上の値をロード(メモリの0x20番地上の データ=0x20)
0x02 OFST(0)に即値0x01をロード
0x03 LoopIn命令 (インディケータ0)
0x04 DMAPort(0)から読み出したデータをAR(1)の示すメモリアドレスに
ストアしAR(1)++
0x05 DisableThreadにより自分自身を休眠させる。
A program example using a very simple loop is shown below.
Instruction address Instruction 0x00 Load immediate value 0x20 to instruction 0x00 AR (0) [7: 0] 0x01 Load value in memory indicated by AR (0) to LP (0) (0x20 ground data = 0x20)
0x02 Load immediate value 0x01 to OFST (0) 0x03 LoopIn instruction (Indicator 0)
0x04 Read data from DMAPort (0) to memory address indicated by AR (1)
Store and AR (1) ++
0x05 Sleep yourself with DisableThread.

上記命令列によれば、0x03番地のLoopIn命令の実行によりループに入り、0x04番地のDMAPort(0)からメモリへのデータ転送において、プログラムカウンタの値がLoopIn命令のアドレス(0x03番地)+オフセットレジスタ(0x01番地)と一致するため、ループバックする。更に、LoopIn命令の次アドレス即ち0x04番地にジャンプすると共に、ループレジスタLP(0)の値を1減算する(LP(0)=31)。この処理を、ループレジスタLP(0)が示すループ回数、即ち32回繰り返してループを抜けて終了する。   According to the above instruction sequence, the loop counter is executed by executing the LoopIn instruction at address 0x03, and in the data transfer from the DMAPort (0) at address 0x04 to the memory, the value of the program counter is the address of the LoopIn instruction (address 0x03) + offset register Loops back because it matches (0x01 address). Further, jump to the next address of the LoopIn instruction, that is, address 0x04, and subtract 1 from the value of the loop register LP (0) (LP (0) = 31). This process is repeated the number of loops indicated by the loop register LP (0), that is, 32 times, and the process exits the loop and ends.

次に、スタック制御部10によるループ情報スタック9の制御手順を図22のフローチャートを参照しながら説明する。本フローチャートに示す処理はスタック制御部10が制御プログラムに基づき実行する。   Next, the control procedure of the loop information stack 9 by the stack control unit 10 will be described with reference to the flowchart of FIG. The processing shown in this flowchart is executed by the stack control unit 10 based on the control program.

まず、命令デコード部4がループ命令を検出すると(ステップS1)、スタック制御部10によりループ情報スタック9の使用中フラグ(ループ実行中であることを示すフラグ)IN_USE(0)に“1”がプッシュされる。これと同時に、選択信号生成部8からプログラムカウンタ選択信号PC_SELがループ情報スタック9のPC_SEL(0)にプッシュされ、加算器13の出力即ちループエンドアドレスがループ情報スタック9のLP_END(0)にプッシュされ、命令デコード部4が出力するLoopIndicator即ちLP_SEL信号がループ情報スタック9のLP_SEL(0)にプッシュされる。スタック制御部10が内部的に保持するスタックポインタは0から1に更新される(ステップS2)。   First, when the instruction decode unit 4 detects a loop instruction (step S1), the stack control unit 10 sets “1” in the IN_USE (0) IN_USE (0) flag in the loop information stack 9 (a flag indicating that the loop is being executed). To be pushed. At the same time, the program counter selection signal PC_SEL is pushed from the selection signal generator 8 to PC_SEL (0) of the loop information stack 9, and the output of the adder 13, that is, the loop end address is pushed to LP_END (0) of the loop information stack 9. Then, the LoopIndicator, that is, the LP_SEL signal output from the instruction decoding unit 4 is pushed to LP_SEL (0) of the loop information stack 9. The stack pointer held internally by the stack control unit 10 is updated from 0 to 1 (step S2).

プログラムカウンタの値が進んで、ループ命令に対応するループエンドアドレスに到達(一致)すると、第2の比較器群15の出力match_end(0)が“1”となり、現在選択中のプログラムカウンタの識別子と、ループ情報スタック9に格納されている情報から現在ループ状態にあることが示されているプログラムカウンタの識別子とが同一であることから、第1の比較器群14の出力match_pc(0)とループ情報スタック9の出力in_use(0)が共に“1”であるため、ループエンドが検出される(ステップS3)。このとき、第3の比較器群17により、ループ情報スタック9のLP_SEL(0)に基づいてマルチプレクサ群16で選択される出力が1と一致しているか否かが比較され、該出力が1である場合、lp_exp(0)信号が“1”となる。   When the value of the program counter advances and reaches (matches) the loop end address corresponding to the loop instruction, the output match_end (0) of the second comparator group 15 becomes “1”, and the identifier of the currently selected program counter And the identifier of the program counter indicated to be currently in the loop state from the information stored in the loop information stack 9, the output match_pc (0) of the first comparator group 14 and Since both outputs in_use (0) of the loop information stack 9 are “1”, a loop end is detected (step S3). At this time, the third comparator group 17 compares whether or not the output selected by the multiplexer group 16 based on LP_SEL (0) of the loop information stack 9 is equal to 1, and the output is 1. If there is, the lp_exp (0) signal becomes “1”.

lp_exp(0)信号が“1”の場合(ステップS4の判定が“1”)、ループ命令の満了(終了)を意味するので、スタック制御部10は、減算器18を操作してループレジスタLP(0)をデクリメント(即ち0にクリア)すると共に、ループ情報スタック9のIN_USE(0)をクリアし、内部的なスタックポインタを1から0に更新する(ステップS5)。   If the lp_exp (0) signal is “1” (determination in step S4 is “1”), it means that the loop instruction has expired (end), so the stack control unit 10 operates the subtractor 18 to operate the loop register LP. (0) is decremented (that is, cleared to 0), IN_USE (0) of the loop information stack 9 is cleared, and the internal stack pointer is updated from 1 to 0 (step S5).

lp_exp(0)信号が“0”の場合(ステップS4の判定が“0”)、ループ命令の継続を意味するので、スタック制御部10は、減算器18を操作してループレジスタLP(0)をデクリメントすると共に、プログラムカウンタ更新部11に対しloop_back信号をアサートする。プログラムカウンタ更新部11は、上述したように、lp_back_pc即ちPC-OFST+1をPCにロードする(ステップS6)。これにより、プログラムカウンタはループ命令の次の命令を示すようになる。   When the lp_exp (0) signal is “0” (determination in step S4 is “0”), it means that the loop instruction is continued. Therefore, the stack control unit 10 operates the subtractor 18 to operate the loop register LP (0). And the loop_back signal is asserted to the program counter update unit 11. As described above, the program counter update unit 11 loads lp_back_pc, that is, PC-OFST + 1, to the PC (step S6). As a result, the program counter indicates the instruction next to the loop instruction.

次に、多重ループの動作を図23及び図24のフローチャートを参照しながら説明する。本フローチャートに示す処理はスタック制御部10が制御プログラムに基づき実行する。   Next, the operation of the multiple loop will be described with reference to the flowcharts of FIGS. The processing shown in this flowchart is executed by the stack control unit 10 based on the control program.

まず、命令デコード部4がループ命令0を検出すると(ステップS11)、ループ情報スタック9のIN_USE(0)に“1”がプッシュされる。これと同時に、プログラムカウンタ選択信号PC_SELがループ情報スタック9のPC_SEL(0)にプッシュされ、加算器13の出力即ちループエンドアドレスがループ情報スタック9のLP_END(0)にプッシュされ、命令デコード部4が出力するLoopIndicator即ちLP_SEL信号がループ情報スタック9のLP_SEL(0)にプッシュされる。スタック制御部10が内部的に保持するスタックポインタは0から1に更新される(ステップS12)。   First, when the instruction decoding unit 4 detects a loop instruction 0 (step S11), “1” is pushed to IN_USE (0) of the loop information stack 9. At the same time, the program counter selection signal PC_SEL is pushed to PC_SEL (0) of the loop information stack 9, the output of the adder 13, that is, the loop end address is pushed to LP_END (0) of the loop information stack 9, and the instruction decoding unit 4 Is output to the LP_SEL (0) of the loop information stack 9. The stack pointer held internally by the stack control unit 10 is updated from 0 to 1 (step S12).

プログラムカウンタの値が進み、命令デコード部4が更にループ命令1を検出すると(ステップS13)、ループ情報スタック9のIN_USE(1)に“1”がプッシュされる。これと同時に、プログラムカウンタ選択信号PC_SELがループ情報スタック9のPC_SEL(1)にプッシュされ、加算器13の出力即ちループエンドアドレスがループ情報スタック9のLP_END(1)にプッシュされ、命令デコード部4が出力するLoopIndicator即ちLP_SEL信号がループ情報スタック9のLP_SEL(1)にプッシュされる。スタック制御部10が内部的に保持するスタックポインタは1から2に更新される(ステップS14)。   When the value of the program counter advances and the instruction decoding unit 4 further detects the loop instruction 1 (step S13), “1” is pushed to IN_USE (1) of the loop information stack 9. At the same time, the program counter selection signal PC_SEL is pushed to PC_SEL (1) of the loop information stack 9, the output of the adder 13, that is, the loop end address is pushed to LP_END (1) of the loop information stack 9, and the instruction decoding unit 4 Is output to LP_SEL (1) of the loop information stack 9. The stack pointer held internally by the stack control unit 10 is updated from 1 to 2 (step S14).

更に、プログラムカウンタの値が進んで、ループ命令1に対応するループエンドアドレスに到達(一致)すると、第2の比較器群15の出力match_end(1)が“1”となり、現在選択中のプログラムカウンタの識別子と、ループ情報スタック9に格納されている情報から現在ループ状態にあることが示されているプログラムカウンタの識別子とが同一であることから、第1の比較器群14の出力match_pc(1)とループ情報スタック9の出力in_use(1)が共に“1”であるため、ループエンドが検出される(ステップS15)。このとき、第3の比較器群17により、ループ情報スタック9のLP_SEL(1)に基づいてマルチプレクサ群16で選択される出力が1と一致しているか否かが比較され、該出力が1である場合、lp_exp(1)信号が“1”となる。   Further, when the value of the program counter advances and reaches (matches) the loop end address corresponding to the loop instruction 1, the output match_end (1) of the second comparator group 15 becomes “1”, and the currently selected program Since the identifier of the counter and the identifier of the program counter indicated by the information stored in the loop information stack 9 that are currently in the loop state are the same, the output match_pc ( Since 1) and the output in_use (1) of the loop information stack 9 are both “1”, the loop end is detected (step S15). At this time, the third comparator group 17 compares whether or not the output selected by the multiplexer group 16 based on LP_SEL (1) of the loop information stack 9 is equal to 1, and the output is 1. If there is, the lp_exp (1) signal becomes “1”.

lp_exp(1)信号が“0”の場合(ステップS16の判定が“0”)、ループ命令1の継続を意味するので、スタック制御部10は、減算器18を操作してループレジスタLP(1)をデクリメントすると共に、プログラムカウンタ更新部11に対しloop_back信号をアサートする。プログラムカウンタ更新部11は、上述したように、lp_back_pc即ちPC-OFST+1をPCにロードする(ステップS18)。これにより、プログラムカウンタはループ命令1の次の命令を示すようになる。   When the lp_exp (1) signal is “0” (determination in step S16 is “0”), it means that the loop instruction 1 is continued. Therefore, the stack control unit 10 operates the subtracter 18 to operate the loop register LP (1 ) Is decremented, and the loop_back signal is asserted to the program counter update unit 11. As described above, the program counter update unit 11 loads lp_back_pc, that is, PC-OFST + 1, to the PC (step S18). As a result, the program counter indicates the instruction next to the loop instruction 1.

lp_exp(1)信号が“1”の場合(ステップS16の判定が“1”)、ループ命令1の満了を意味するので、スタック制御部10は、減算器18を操作してループレジスタLP(1)をデクリメント(即ち0にクリア)すると共に、ループ情報スタック9のIN_USE(1)をクリアし、内部的なスタックポインタを2から1に更新する(ステップS17)。   If the lp_exp (1) signal is “1” (determination in step S16 is “1”), it means that the loop instruction 1 has expired, so the stack control unit 10 operates the subtractor 18 to operate the loop register LP (1 ) Is decremented (that is, cleared to 0), IN_USE (1) of the loop information stack 9 is cleared, and the internal stack pointer is updated from 2 to 1 (step S17).

ここで、第1の比較器群14の出力match_pc(0)、第2の比較器群15の出力match_end(0)、ループ情報スタック9の出力in_use(0)が全て“1”の場合、ループ命令0も同時にループエンドであることが分かる。この場合は、更に、lp_exp(0)の値により、ループ命令0が満了かどうかを判定する。   If the output match_pc (0) of the first comparator group 14, the output match_end (0) of the second comparator group 15, and the output in_use (0) of the loop information stack 9 are all “1”, the loop It can be seen that instruction 0 is also a loop end. In this case, it is further determined whether or not the loop instruction 0 has expired based on the value of lp_exp (0).

ループ命令0が満了の場合は(ステップS19の判定が満了:lp_exp(0)=1)、スタック制御部10は、減算器18を操作してループレジスタLP(0)をデクリメント(即ち0にクリア)すると共に、ループ情報スタック9のIN_USE(0)をクリアし、内部的なスタックポインタを1から0に更新する(ステップS20)。   If the loop instruction 0 has expired (the determination in step S19 has expired: lp_exp (0) = 1), the stack control unit 10 operates the subtractor 18 to decrement the loop register LP (0) (ie, clear it to 0). And IN_USE (0) of the loop information stack 9 is cleared and the internal stack pointer is updated from 1 to 0 (step S20).

ループ命令0が継続の場合は(ステップS19の判定が継続:lp_exp(0)=0)、スタック制御部10は、減算器18を操作してループレジスタLP(0)をデクリメントすると共に、lp_back_pc即ちPC-OFST+1をPCにロードする(ステップS21)。これにより、プログラムカウンタはループ命令0の次の命令を示すようになる。   When the loop instruction 0 is continued (determination in step S19 continues: lp_exp (0) = 0), the stack control unit 10 operates the subtracter 18 to decrement the loop register LP (0) and at the same time, lp_back_pc, PC-OFST + 1 is loaded onto the PC (step S21). As a result, the program counter indicates the instruction next to the loop instruction 0.

次に、複数のプログラムカウンタと多重ループの動作を説明する。   Next, the operation of a plurality of program counters and multiple loops will be described.

プログラムカウンタPC(0)に対応する命令列を以下に示す。
命令アドレス 命令
0x00 PC(1)をイネーブル
0x01 LP(0) に即値0x02をロード
0x02 OFST(0)に即値0x05をロード
0x03 LoopIn命令 (インディケータ0)
0x04 LP(1) に即値0x04をロード
0x05 OFST(1)に即値0x01をロード
0x06 LoopIn命令 (インディケータ1)
0x07 DMAPort(0)から読み出したデータをAR(0)の示すメモリアドレスに
ストアしAR(0)++
0x08 AR(0)[7:0]に0x100を加算
0x09 PC(0)をディスエーブル
プログラムカウンタPC(1)に対応する命令列を以下に示す。
命令アドレス 命令
0x10 AR(1)[15:8]に即値0x10をロード
0x11 LP(2) に即値0x02をロード
0x12 OFST(2)に即値0x05をロード
0x13 LoopIn命令 (インディケータ2)
0x14 DMAPort(1)から読み出したデータをAR(1)の示すメモリアドレスに
ストアしAR(1)++
プログラムカウンタPC(0)は2重ループを使用し、プログラムカウンタPC(1)は単純なループを使用する。プログラムカウンタPC(2)は使用されない。
The instruction sequence corresponding to the program counter PC (0) is shown below.
Instruction address Instruction 0x00 Enable PC (1) 0x01 Load immediate value 0x02 to LP (0) 0x02 Load immediate value 0x05 to OFST (0) 0x03 LoopIn instruction (Indicator 0)
0x04 Load immediate value 0x04 to LP (1) 0x05 Load immediate value 0x01 to OFST (1) 0x06 LoopIn instruction (Indicator 1)
0x07 Data read from DMAPort (0) is stored in memory address indicated by AR (0)
Store AR (0) ++
0x08 AR (0) [7: 0] is added with 0x100 0x09 PC (0) is disabled The instruction sequence corresponding to the program counter PC (1) is shown below.
Instruction address Instruction 0x10 Load immediate value 0x10 to AR (1) [15: 8] 0x11 Load immediate value 0x02 to LP (2) 0x12 Load immediate value 0x05 to OFST (2) 0x13 LoopIn instruction (Indicator 2)
0x14 Data read from DMAPort (1) is stored in the memory address indicated by AR (1)
Store and AR (1) ++
The program counter PC (0) uses a double loop, and the program counter PC (1) uses a simple loop. Program counter PC (2) is not used.

図12は、多重ループのプログラムを実行した場合のタイミングを示すタイミングチャートである。   FIG. 12 is a timing chart showing the timing when a multi-loop program is executed.

図12において、図示の例は、多重ループのプログラムを実行した場合のプログラムカウンタPC(0)、プログラムカウンタPC(1)、プログラムカウンタ選択許可信号pc_en、プログラムカウンタ選択信号pc_sel等の挙動を示している。   In FIG. 12, the illustrated example shows the behavior of the program counter PC (0), the program counter PC (1), the program counter selection permission signal pc_en, the program counter selection signal pc_sel, etc. when a multi-loop program is executed. Yes.

クロック信号のサイクル(以下サイクルと略称)0は、リセット状態であり、プログラムカウンタ選択許可信号pc_enは初期状態“001”となり、これによりプログラムカウンタ選択信号pc_selは“001”となる。   The clock signal cycle (hereinafter abbreviated as cycle) 0 is in the reset state, and the program counter selection permission signal pc_en is in the initial state “001”, thereby causing the program counter selection signal pc_sel to be “001”.

サイクル1では、リセット状態が解除され、プログラムカウンタ選択信号pc_selにより選択されたプログラムカウンタ(Selected PC)はPC(0)であるので、上記命令列に示したようにプログラムカウンタPC(1)をイネーブルとし、プログラムカウンタ選択許可信号pc_enは“011”となる。   In cycle 1, since the reset state is released and the program counter (Selected PC) selected by the program counter selection signal pc_sel is PC (0), the program counter PC (1) is enabled as shown in the above instruction sequence. The program counter selection permission signal pc_en is “011”.

その結果、サイクル2では、プログラムカウンタ選択信号pc_selは“010”となり、プログラムカウンタPC(1)が選択され、命令アドレス0x10の命令(アドレスレジスタAR(1)[15:8]に即値0x10をロード)が実行される。以降、順次、プログラムカウンタPC(0)、プログラムカウンタPC(1)が交互に実行される。   As a result, in cycle 2, the program counter selection signal pc_sel becomes “010”, the program counter PC (1) is selected, and the instruction 0x10 (loading the immediate value 0x10 to the address register AR (1) [15: 8]) ) Is executed. Thereafter, the program counter PC (0) and the program counter PC (1) are alternately executed sequentially.

サイクル7では、プログラムカウンタPC(0)=0x03の示す最初のループ命令が実行される。サイクル7終了時のループ情報スタックの内容を図13に示す。使用中フラグIN_USE(0)が“1”にセットされ、ループ命令を実行したプログラムカウンタ選択信号pc_sel=“001”、LoopIndicator“001”(LP(0)を示す)及びループ終了アドレス(PC(0)+OFST(0)=0x08)がプッシュされる。   In cycle 7, the first loop instruction indicated by program counter PC (0) = 0x03 is executed. The contents of the loop information stack at the end of cycle 7 are shown in FIG. The in-use flag IN_USE (0) is set to “1”, the program counter selection signal pc_sel = “001” which executed the loop instruction, LoopIndicator “001” (indicating LP (0)) and the loop end address (PC (0 ) + OFST (0) = 0x08) is pushed.

サイクル8では、プログラムカウンタPC(1)=0x13の示すループ命令が実行される。サイクル8終了時のループ情報スタック9の内容を図14に示す。使用中フラグIN_USE(0)が“1”にセットされ、ループ命令を実行したプログラムカウンタ選択信号pc_sel=“010”、LoopIndicator“100”(LP(2)を示す)及びループ終了アドレス(PC(1)+OFST(2)=0x14)がプッシュされる。   In cycle 8, a loop instruction indicated by program counter PC (1) = 0x13 is executed. The contents of the loop information stack 9 at the end of cycle 8 are shown in FIG. The in-use flag IN_USE (0) is set to “1”, the program counter selection signal pc_sel = “010” which executed the loop instruction, LoopIndicator “100” (indicating LP (2)) and the loop end address (PC (1) ) + OFST (2) = 0x14) is pushed.

サイクル10では、ループ情報スタック9に格納されているプログラムカウンタ選択信号pc_sel(0)= “010”とループ終了アドレスlp_end(0)=0x14が、現在のプログラムカウンタ選択信号pc_sel及びプログラムカウンタPCと一致するため、ループ終了判定が実行される。ループレジスタLP(2)の値は4であり1と一致しないためループバックと判定され、ループレジスタLP(2)は1減じられ、プログラムカウンタPC(1)はPC-OFST+1=0x14-0x01+1=0x14となる。サイクル10と全く同様の動作がサイクル12及びサイクル14において発生する。   In cycle 10, the program counter selection signal pc_sel (0) = “010” and the loop end address lp_end (0) = 0x14 stored in the loop information stack 9 match the current program counter selection signal pc_sel and the program counter PC. Therefore, a loop end determination is executed. Since the value of the loop register LP (2) is 4 and does not match 1, it is determined that the loop is back, the loop register LP (2) is decremented by 1, and the program counter PC (1) is PC-OFST + 1 = 1 = 0x14-0x01 + 1 = 0x14. Exactly the same operation as cycle 10 occurs in cycle 12 and cycle 14.

サイクル13では、プログラムカウンタPC(0)(=0x06)の2重ループの内周ループに突入するためのループ命令が実行される。サイクル13終了時のループ情報スタック9の内容を図15に示す。使用中フラグIN_USE(0)が“1”にセットされ、ループ命令を実行したプログラムカウンタ選択信号pc_sel=“001”、LoopIndicator“010”(LP(1)を示す)及びループ終了アドレス(PC(0)+OFST(1)=0x07)がプッシュされる。   In cycle 13, a loop instruction for entering the inner loop of the double loop of program counter PC (0) (= 0x06) is executed. The contents of the loop information stack 9 at the end of the cycle 13 are shown in FIG. The in-use flag IN_USE (0) is set to “1”, the program counter selection signal pc_sel = “001”, LoopIndicator “010” (indicating LP (1)) and the loop end address (PC (0)) that executed the loop instruction ) + OFST (1) = 0x07) is pushed.

サイクル14では、ループ情報スタック9に格納されているプログラムカウンタ選択信号pc_sel(0)= “010”とループ終了アドレスlp_end(0)=0x14が、現在のプログラムカウンタ選択信号pc_sel及びプログラムカウンタPCと一致するため、ループ終了判定が実行される。この時点でループレジスタLP(2)の値は1となっており1と一致するため、ループ終了と判定され、ループレジスタLP(2)は1減じられ(0にクリアされ)、プログラムカウンタPC(1)はPC+1=0x15となってループから抜ける。サイクル14終了時のループ情報スタック9の内容を図16に示す。ループ情報スタック9の項目(1)がポップされ、使用中フラグIN_USE(2)が“0”にクリアされる。   In cycle 14, the program counter selection signal pc_sel (0) = “010” and the loop end address lp_end (0) = 0x14 stored in the loop information stack 9 match the current program counter selection signal pc_sel and the program counter PC. Therefore, a loop end determination is executed. At this time, since the value of the loop register LP (2) is 1 and coincides with 1, it is determined that the loop is finished, the loop register LP (2) is decremented by 1 (cleared to 0), and the program counter PC ( 1) exits from the loop with PC + 1 = 0x15. The contents of the loop information stack 9 at the end of the cycle 14 are shown in FIG. The item (1) of the loop information stack 9 is popped, and the in-use flag IN_USE (2) is cleared to “0”.

サイクル18では、プログラムカウンタPC(1)=0x15の命令が実行され、プログラムカウンタPC(1)がディスエーブルとなり(プログラムカウンタ選択信号pc_en=“001”となり)、サイクル19以降はプログラムカウンタPC(0)の命令のみが実行される。   In cycle 18, an instruction of program counter PC (1) = 0x15 is executed, program counter PC (1) is disabled (program counter selection signal pc_en = “001”), and after cycle 19, program counter PC (0 Only the instruction of) is executed.

一方、サイクル15、17、19、20では、ループ情報スタック9の先頭に近いもの(図16のスタック(0))が用いられて、プログラムカウンタPC(0)の内周ループのループ終了判定が実行される。サイクル15、17、19では、ループバックとなり、サイクル20において、ループ終了となる。サイクル20終了時のループ情報スタックの内容を図17に示す。ループ情報スタック9の項目(0)がポップされ、使用中フラグIN_USE(1)が“0”にクリアされる。   On the other hand, in cycles 15, 17, 19, and 20, the one near the top of the loop information stack 9 (stack (0) in FIG. 16) is used, and the loop end determination of the inner loop of the program counter PC (0) Executed. In cycles 15, 17, and 19, a loopback occurs, and in cycle 20, the loop ends. The contents of the loop information stack at the end of cycle 20 are shown in FIG. The item (0) of the loop information stack 9 is popped, and the in-use flag IN_USE (1) is cleared to “0”.

サイクル21では、プログラムカウンタPC(0)の外周ループエンドとなり、外周ループのループ終了判定が実行される。ループレジスタLP(0)の値は2であるので、ループバックとなり、プログラムカウンタPC(0)=PC(0)-OFST(0)+1=0x08-0x05+1=0x04がロードされ、サイクル22において、0x04に格納された命令が実行される。   In cycle 21, the outer loop end of the program counter PC (0) is reached, and the loop end determination of the outer loop is executed. Since the value of the loop register LP (0) is 2, a loop back occurs, and the program counter PC (0) = PC (0) -OFST (0) + 1 = 0x08-0x05 + 1 = 0x04 is loaded, and cycle 22 The instruction stored at 0x04 is executed.

以下、サイクル24では、再び内周ループに突入し(ループ情報スタック9は図16の状態になる)、サイクル25、26、27、28では、ループ終了判定が実行される。サイクル25、26、27では、ループバックとなり、サイクル28において、ループ終了となる。   Thereafter, in the cycle 24, the inner loop is again entered (the loop information stack 9 is in the state shown in FIG. 16), and in the cycles 25, 26, 27, and 28, the loop end determination is executed. In cycles 25, 26, and 27, loopback is performed, and in cycle 28, the loop ends.

サイクル29では、プログラムカウンタPC(0)の外周ループがループ終了となり(LP(0)=1)、ループ情報スタック9は図18に示すように全ての使用中フラグがクリアされる。図12のタイミングチャートには図示していないが、プログラムカウンタPC(0)は1加算されて0x09となり、プログラムカウンタPC(0)をディスエーブル、即ちプログラムの実行を終了する。   In cycle 29, the outer loop of the program counter PC (0) is ended (LP (0) = 1), and all in-use flags of the loop information stack 9 are cleared as shown in FIG. Although not shown in the timing chart of FIG. 12, the program counter PC (0) is incremented by 1 to 0x09, and the program counter PC (0) is disabled, that is, the program execution is terminated.

以上説明したように、本実施の形態によれば、複数のプログラムカウンタ1−1、1−2、1−3が順次参照する命令を実行するプログラムのシーケンス制御において、ループ命令の実行時に、ループ命令に対応するプログラムカウンタを示す識別子(プログラムカウンタ選択信号)と、ループ命令に対応するループエンドアドレスと、ループ命令がどのループカウンタ及びループ差分レジスタを使用するかを示す識別子をループ情報スタック9にプッシュし、プログラムカウンタの値がループエンドアドレスと一致したときに、ループ情報スタック9の先頭からプログラムカウンタを示す識別子を参照することにより、ループ命令終了の有無を判定する。   As described above, according to the present embodiment, in the sequence control of a program that executes instructions that are sequentially referred to by the plurality of program counters 1-1, 1-2, and 1-3, An identifier (program counter selection signal) indicating a program counter corresponding to the instruction, a loop end address corresponding to the loop instruction, and an identifier indicating which loop counter and loop difference register the loop instruction uses are stored in the loop information stack 9. When the value of the program counter coincides with the loop end address, the presence or absence of the loop instruction is determined by referring to the identifier indicating the program counter from the top of the loop information stack 9.

即ち、プログラムカウンタ選択信号をプログラムカウンタ識別子としてループ情報スタック9の格納情報に加え、ループエンド時にループ終了判定をループ情報スタック9の先頭から実施することにより、複数のプログラムカウンタが並列的にイネーブルとなり、且つそれぞれが多重ループを実行する場合においても、ループバックであるかループ終了であるかの判定を簡易に行うことが可能となる。   That is, by adding a program counter selection signal as a program counter identifier to the information stored in the loop information stack 9 and performing loop end determination from the top of the loop information stack 9 at the end of the loop, a plurality of program counters are enabled in parallel. Even when each executes a multiple loop, it is possible to easily determine whether it is a loopback or a loop end.

これにより、スタック構造をプログラムカウンタの数だけ用意することが不要となり、非常に簡易且つ小規模な回路構成により、複数のプログラムカウンタが並列的に多重ループを効率良く実行することが可能となる。   As a result, it is not necessary to prepare as many stack structures as the number of program counters, and a plurality of program counters can efficiently execute multiple loops in parallel with a very simple and small circuit configuration.

[第2の実施の形態]
本発明の第2の実施の形態は、上述した第1の実施の形態に対して、複数のループが同時に満了した場合にどのように処理するかという点において相違する。本実施の形態のその他の要素は、上述した第1の実施の形態(図1〜図4)の対応するものと同一なので、説明を省略する。
[Second Embodiment]
The second embodiment of the present invention differs from the above-described first embodiment in how to process when a plurality of loops expire simultaneously. Since the other elements of the present embodiment are the same as the corresponding ones of the first embodiment (FIGS. 1 to 4) described above, description thereof is omitted.

本実施の形態では、プログラムカウンタPC(0)のプログラムを少し変更して以下のようなプログラムを実行する。
命令アドレス 命令
0x00 PC(1)をイネーブル
0x01 LP(0) に即値0x02をロード
0x02 OFST(0)に即値0x05をロード
0x03 LoopIn命令 (インディケータ0)
0x04 LP(1) に即値0x04をロード
0x05 OFST(1)に即値0x01をロード
0x06 AR(0)[7:0]に0x100を加算
0x07 LoopIn命令 (インディケータ1)
0x08 DMAPort(0)から読み出したデータをAR(0)の示すメモリアドレスに
ストアしAR(0)++
0x09 PC(0)をディスエーブル
プログラムカウンタPC(0)の内周ループは0x07から開始し、プログラムカウンタPC(0)の内周ループ及び外周ループ共にループエンドアドレスが0x08となっている。
In the present embodiment, the following program is executed by slightly changing the program of the program counter PC (0).
Instruction address Instruction 0x00 Enable PC (1) 0x01 Load immediate value 0x02 to LP (0) 0x02 Load immediate value 0x05 to OFST (0) 0x03 LoopIn instruction (Indicator 0)
0x04 Load immediate value 0x04 to LP (1) 0x05 Load immediate value 0x01 to OFST (1) 0x06 Add 0x100 to AR (0) [7: 0] 0x07 LoopIn instruction (Indicator 1)
0x08 Data read from DMAPort (0) is stored in the memory address indicated by AR (0)
Store AR (0) ++
Disable 0x09 PC (0) The inner loop of the program counter PC (0) starts from 0x07, and the loop end address is 0x08 for both the inner and outer loops of the program counter PC (0).

図19は、変更後のプログラムを実行した場合のタイミングを示すタイミングチャートである。   FIG. 19 is a timing chart showing the timing when the changed program is executed.

図19において、図示の例は、変更後のプログラムを実行した場合のプログラムカウンタPC(0)、プログラムカウンタPC(1)、プログラムカウンタ選択許可信号pc_en、プログラムカウンタ選択信号pc_sel等の挙動を示している。   In FIG. 19, the illustrated example shows the behavior of the program counter PC (0), the program counter PC (1), the program counter selection permission signal pc_en, the program counter selection signal pc_sel, and the like when the changed program is executed. Yes.

サイクル15では、全ループが使用中状態となり、ループ情報スタック9の内容は図20に示すようになる。サイクル16では、プログラムカウンタPC(1)のループが終了し、ループ情報スタック9の内容は図21に示すようになる。   In cycle 15, all the loops are in use, and the contents of the loop information stack 9 are as shown in FIG. In cycle 16, the loop of program counter PC (1) is completed, and the contents of loop information stack 9 are as shown in FIG.

サイクル21では、プログラムカウンタPC(0)の内周ループ及び外周ループが共にループエンドとなる。ループ情報スタック9の先頭に近いものから評価し、スタック(0)はループレジスタLP(1)=1となっているためループ終了と判定され、スタック(1)はループレジスタLP(0)=2となっているためループバックと判定される。この場合、ループ終了したものに対応するループ情報スタック9はポップし、プログラムカウンタPC(0)にはループバックに対応する値、即ちPC(1)−OFST(0)+1=0x08-0x05+1=0x04がロードされる。   In cycle 21, the inner and outer loops of program counter PC (0) are both loop ends. Evaluation is performed from the top of the loop information stack 9, and the stack (0) is determined to be the loop end because the loop register LP (1) = 1, and the stack (1) is determined to be the loop register LP (0) = 2. Therefore, it is determined as a loopback. In this case, the loop information stack 9 corresponding to the end of the loop is popped, and the value corresponding to the loopback, that is, PC (1) -OFST (0) + 1 = 0x08-0x05 + is stored in the program counter PC (0). 1 = 0x04 is loaded.

サイクル25では、再びプログラムカウンタPC(0)の内周ループ及び外周ループが共に使用中状態となり(ループ情報スタック9は図21の状態となり)、サイクル29において、内周ループ及び外周ループが共にループエンドとなる。サイクル29では、ループレジスタLP(0)、ループレジスタLP(1)共に1となっているので、内周ループ及び外周ループ共にループ終了と判定され、ループ情報スタック9の使用中フラグは全てクリアされる。図19のタイミングチャートには図示していないが、プログラムカウンタPC(0)は1加算されて0x09となり、プログラムカウンタPC(0)をディスエーブル、即ちプログラムの実行を終了する。   In cycle 25, both the inner and outer loops of program counter PC (0) are again in use (loop information stack 9 is in the state shown in FIG. 21), and in cycle 29, both the inner and outer loops are loops. Become an end. In cycle 29, since both the loop register LP (0) and the loop register LP (1) are 1, it is determined that both the inner loop and the outer loop have ended, and all the in-use flags in the loop information stack 9 are cleared. The Although not shown in the timing chart of FIG. 19, the program counter PC (0) is incremented by 1 to 0x09, and the program counter PC (0) is disabled, that is, the program execution is terminated.

以上説明したように、本実施の形態によれば、第1の実施の形態と同様に、スタック構造をプログラムカウンタの数だけ用意することが不要となり、非常に簡易且つ小規模な回路構成により、複数のプログラムカウンタが並列的に多重ループを効率良く実行することが可能となる。   As described above, according to the present embodiment, as in the first embodiment, it is not necessary to prepare stack structures as many as the number of program counters, and with a very simple and small circuit configuration, Multiple program counters can efficiently execute multiple loops in parallel.

[他の実施の形態]
上記第1及び第2の実施の形態では、ループ制御装置について説明したが、本発明のループ制御装置を、ダイレクトメモリアクセス(DMA)制御装置に適用することが可能である。また、本発明のループ制御装置を、各種の画像処理装置(プリンタ、複写機、複合機、ファクシミリ等)に適用することが可能である。
[Other embodiments]
In the first and second embodiments, the loop control device has been described. However, the loop control device of the present invention can be applied to a direct memory access (DMA) control device. Further, the loop control device of the present invention can be applied to various image processing devices (printers, copiers, multifunction devices, facsimiles, etc.).

本発明は、上述した実施の形態の機能を実現するソフトウェアのプログラム(図22〜図24のフローチャート)をコンピュータ又はCPUに供給し、そのコンピュータ又はCPUが該供給されたプログラムを読出して実行することによって、達成することができる。   According to the present invention, a software program (flowcharts in FIGS. 22 to 24) for realizing the functions of the above-described embodiments is supplied to a computer or CPU, and the computer or CPU reads and executes the supplied program. Can be achieved.

この場合、上記プログラムは、該プログラムを記録した記憶媒体から直接供給されるか、又はインターネット、商用ネットワーク、若しくはローカルエリアネットワーク等に接続される不図示の他のコンピュータやデータベース等からダウンロードすることにより供給される。   In this case, the program is directly supplied from a storage medium storing the program, or downloaded from another computer or database (not shown) connected to the Internet, a commercial network, a local area network, or the like. Supplied.

上記プログラムの形態は、オブジェクトコード、インタプリタにより実行されるプログラムコード、OS(オペレーティングシステム)に供給されるスクリプトデータ等の形態から成ってもよい。   The form of the program may be in the form of object code, program code executed by an interpreter, script data supplied to an OS (operating system), and the like.

また、本発明は、上述した実施の形態の機能を実現するソフトウェアのプログラムを記憶した記憶媒体をコンピュータ又はCPUに供給し、そのコンピュータ又はCPUが記憶媒体に記憶されたプログラムを読出して実行することによっても、達成することができる。   The present invention also supplies a computer or CPU with a storage medium storing a software program that implements the functions of the above-described embodiments, and the computer or CPU reads and executes the program stored in the storage medium. Can also be achieved.

この場合、格納媒体から読出されたプログラムコード自体が上述した各実施の形態の機能を実現すると共に、そのプログラムコードを記憶した記憶媒体は本発明を構成する。   In this case, the program code itself read from the storage medium realizes the functions of the above-described embodiments, and the storage medium storing the program code constitutes the present invention.

プログラムコードを記憶する記憶媒体としては、例えば、ROM、RAM、NV−RAM、フロッピー(登録商標)ディスク、ハードディスク、光ディスク(登録商標)、光磁気ディスク、CD−ROM、MO、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード等がある。   As a storage medium for storing the program code, for example, ROM, RAM, NV-RAM, floppy (registered trademark) disk, hard disk, optical disk (registered trademark), magneto-optical disk, CD-ROM, MO, CD-R, CD -RW, DVD-ROM, DVD-RAM, DVD-RW, DVD + RW, magnetic tape, nonvolatile memory card, etc.

上述した実施の形態の機能は、コンピュータから読出されたプログラムコードを実行することによるばかりでなく、コンピュータ上で稼動するOS等がプログラムコードの指示に基づいて実際の処理の一部又は全部を行うことによっても実現することができる。   The function of the above-described embodiment is not only by executing the program code read from the computer, but the OS or the like running on the computer performs part or all of the actual processing based on the instruction of the program code. Can also be realized.

本発明の第1の実施の形態に係るループ制御装置の構成を示すブロック図である。It is a block diagram which shows the structure of the loop control apparatus which concerns on the 1st Embodiment of this invention. 命令メモリの詳細構成を示す図である。It is a figure which shows the detailed structure of an instruction memory. プログラムカウンタ、プログラムカウンタ選択部、プログラムカウンタ更新部の詳細構成を示すブロック図である。It is a block diagram which shows the detailed structure of a program counter, a program counter selection part, and a program counter update part. 選択信号生成部の詳細構成を示すブロック図である。It is a block diagram which shows the detailed structure of a selection signal production | generation part. プログラムカウンタ選択許可信号のデコード方式と選択制御信号の関係を示す図である。It is a figure which shows the relationship between the decoding system of a program counter selection permission signal, and a selection control signal. 命令の解読結果を示す図である。It is a figure which shows the decoding result of an instruction | indication. データサイズフィールドの意味を示す図である。It is a figure which shows the meaning of a data size field. 内部リソース識別子の意味を示す図である。It is a figure which shows the meaning of an internal resource identifier. データサイズフィールドとバイトレーンフィールドと有効バイトレーンの関係を示す図である。It is a figure which shows the relationship between a data size field, a byte lane field, and an effective byte lane. 図9の続きである。It is a continuation of FIG. 特殊命令のエンコーディングを示す図である。It is a figure which shows the encoding of a special instruction. 多重ループのプログラムを実行した場合のタイミングを示すタイミングチャートである。It is a timing chart which shows the timing at the time of executing the program of a multiple loop. 図12におけるサイクル7終了時のループ情報スタックの内容を示す図である。It is a figure which shows the content of the loop information stack at the time of completion | finish of the cycle 7 in FIG. 図12におけるサイクル8終了時のループ情報スタックの内容を示す図である。It is a figure which shows the content of the loop information stack at the time of completion | finish of the cycle 8 in FIG. 図12におけるサイクル13終了時のループ情報スタックの内容を示す図である。It is a figure which shows the content of the loop information stack at the time of completion | finish of the cycle 13 in FIG. 図12におけるサイクル14終了時のループ情報スタックの内容を示す図である。It is a figure which shows the content of the loop information stack at the time of completion | finish of the cycle 14 in FIG. 図12におけるサイクル20終了時のループ情報スタックの内容を示す図である。It is a figure which shows the content of the loop information stack at the time of completion | finish of the cycle 20 in FIG. 図12におけるサイクル29終了時のループ情報スタックの内容を示す図である。It is a figure which shows the content of the loop information stack at the time of completion | finish of the cycle 29 in FIG. 本発明の第2の実施の形態に係る変更後のプログラムを実行した場合のタイミングを示すタイミングチャートである。It is a timing chart which shows the timing at the time of running the program after a change concerning a 2nd embodiment of the present invention. 図19におけるサイクル15終了時のループ情報スタックの内容を示す図である。It is a figure which shows the content of the loop information stack at the time of completion | finish of the cycle 15 in FIG. 図19におけるサイクル16終了時のループ情報スタックの内容を示す図である。FIG. 20 is a diagram showing the contents of a loop information stack at the end of cycle 16 in FIG. 19. ループ情報スタックの制御手順を示すフローチャートである。It is a flowchart which shows the control procedure of a loop information stack. 多重ループの動作を示すフローチャートである。It is a flowchart which shows the operation | movement of a multiplex loop. 図23の続きである。It is a continuation of FIG.

符号の説明Explanation of symbols

1−1、1−2、1−3 プログラムカウンタ
2 プログラムカウンタ選択部(選択手段に対応)
3 命令メモリ
4 命令デコード部
5 命令実行部
6 ループ差分レジスタ(差分保持手段に対応)
7 ループカウンタ(ループ回数保持手段に対応)
8 選択信号生成部
9 ループ情報スタック(スタックに対応)
10 スタック制御部(制御手段に対応)
11 プログラムカウンタ更新部
14 第1の比較器群(第1の比較手段に対応)
15 第2の比較器群(第2の比較手段に対応)
16 マルチプレクサ群(出力選択手段に対応)
17 第3の比較器群(第3の比較手段に対応)
1-1, 1-2, 1-3 Program counter 2 Program counter selection section (corresponding to selection means)
3 Instruction memory 4 Instruction decode unit 5 Instruction execution unit 6 Loop difference register (corresponding to difference holding means)
7 Loop counter (corresponding to loop count holding means)
8 Selection signal generator 9 Loop information stack (corresponding to the stack )
10 Stack controller (corresponding to control means)
11 Program counter update unit 14 First comparator group (corresponding to the first comparison means)
15 Second comparator group (corresponding to the second comparison means)
16 Multiplexer group (corresponding to output selection means)
17 Third comparator group (corresponding to third comparison means)

Claims (6)

複数のプログラムカウンタと複数のループカウンタとを備えたループ制御装置であって、
前記複数のプログラムカウンタから選択した1つのプログラムカウンタの値を命令メモリのアドレスとして出力する選択手段と、
前記命令メモリが前記選択手段により出力されたアドレスに格納している命令を命令実行手段へ出力する命令出力手段と、
前記命令出力手段の出力する命令がループ命令の場合に、当該ループ命令に従って実行されるループ処理のエンドアドレスと、当該ループ処理を実行するプログラムカウンタを示す第1の識別子と、当該ループ処理のループ回数に関する情報を保持するループカウンタを示す第2の識別子と、を対応付けて保持するループ情報を複数格納可能なスタックと、
前記命令出力手段がループ命令を出力する際当該ループ命令に関するループ情報を前記スタックに格納し、前記選択手段が新しくプログラムカウンタを選択した場合に、当該プログラムカウンタを示す第1の識別子を含むループ情報のうち前記スタックの先頭に最も近いループ情報を参照して、当該ループ情報の含むエンドアドレスと当該ループ情報の含む第2の識別子の示すループカウンタの値とに基づいて、前記選択手段が選択しているプログラムカウンタによって実行しているループ処理が終了するかを判定する制御手段とを備えることを特徴とするループ制御装置。
A loop control device comprising a plurality of program counters and a plurality of loop counters ,
Selecting means for outputting a value of one program counter selected from the plurality of program counters as an address of an instruction memory;
An instruction output means for outputting an instruction stored in the address output by the selection means to the instruction execution means;
When the instruction output from the instruction output means is a loop instruction, an end address of the loop process executed according to the loop instruction, a first identifier indicating a program counter for executing the loop process, and a loop of the loop process A stack that can store a plurality of pieces of loop information that is held in association with a second identifier that indicates a loop counter that holds information about the number of times ;
When said instruction output unit stores the loop information regarding the loop instruction when outputting a loop instruction to the stack, the selection means selects a new program counter, loop including a first identifier indicating the program counter The selection means selects the loop information closest to the top of the stack from among the information based on the end address included in the loop information and the value of the loop counter indicated by the second identifier included in the loop information. And a control means for determining whether or not the loop processing being executed by the running program counter is terminated.
前記選択手段に供給され、当該選択手段の選択するプログラムカウンタを示すプログラムカウンタ選択信号と前記プログラムカウンタを示す第1の識別子との一致を検出する第1の比較手段と、
前記選択手段が出力するプログラムカウンタの値と前記エンドアドレスとの一致を検出する第2の比較手段と、
前記スタックの保持する第2の識別子に基づき、前記複数のループカウンタの1つの値を選択する出力選択手段と、
前記出力選択手段の出力が所定値に一致するかを検出する第3の比較手段とを更に備え、
前記制御手段は、前記第1、第2、第3の比較手段の出力に応じて、前記ループカウンタの保持する値を制御することを特徴とする請求項1記載のループ制御装置。
First comparison means for detecting a match between a program counter selection signal supplied to the selection means and indicating a program counter selected by the selection means and a first identifier indicating the program counter;
Second comparison means for detecting a match between the value before disappeared command address of the program counter that said selecting means outputs,
Output selection means for selecting one value of the plurality of loop counters based on the second identifier held by the stack ;
A third comparing means for detecting whether the output of the output selecting means matches a predetermined value;
2. The loop control apparatus according to claim 1, wherein the control means controls a value held by the loop counter in accordance with outputs of the first, second and third comparison means.
前記第2の識別子と対応する差分保持手段を更に有し、
前記制御手段は、前記第1の比較手段の出力が一致を示し、前記スタックの先頭に最も近いループ情報の有するエンドアドレスに対応する前記第2の比較手段の出力が一致を示している場合に、
前記ループ情報に対応する前記第3の比較手段の出力が一致を示していない場合は、前記選択手段が選択しているプログラムカウンタの値から、前記ループ情報に格納されている第2の識別子が示す差分保持手段の保持する値を減算し、当該第2の識別子が示すループカウンタの保持する値を1減算するように制御し、
前記ループ情報に対応する前記第3の比較手段の出力が一致を示している場合は、前記ループ情報を無効化すると共に、当該ループ情報に格納されている第2の識別子が示すループカウンタの保持する値を1減算或いは0にするように制御することを特徴とする請求項2記載のループ制御装置。
And further comprising difference holding means corresponding to the second identifier,
It said control means indicates the output match of the first comparison means, when the output of said second comparing means that corresponds to the end address with the nearest loop information at the top of the stack indicates the agreement In addition,
If the output of the third comparison means corresponding to the loop information does not indicate a match, the second identifier stored in the loop information is determined from the value of the program counter selected by the selection means. subtracting the value held in the holding means is subtracted, and controls such that the second identifier is 1 subtracts the value held in the loop counter indicating shown,
If the output of said third comparing means corresponding to the loop information indicates a match, as well as disable the loop, holding of the loop counter indicated by the second identifier that is stored in the loop information loop controller according to claim 2, wherein the controller controls the be so that the value that subtracts 1 or 0.
前記第2の識別子と対応する差分保持手段を更に有し、
前記制御手段は、前記第1の比較手段の出力が一致を示し、前記スタックの先頭に最も近いループ情報を含む2つ以上の前記ループ情報に対応する前記第2の比較手段の出力が一致を示している場合に、
前記2つ以上のループ情報に対応する前記第3の比較手段の出力の少なくとも1つが一致を示していない場合は、一致を示していないもののうち前記スタックの先頭に最も近いループ情報に格納されている前記第2の識別子が示す差分保持手段の保持する値を現在選択されているプログラムカウンタから減算し、前記ループ情報に格納されている前記第2の識別子が示すループカウンタの保持する値を1減算するように制御し、
前記2つ以上のループ情報に対応する前記第3の比較手段の出力の全てが一致を示している場合は、前記2つ以上のループ情報を全て無効化すると共に、前記2つ以上のループ情報に格納されている前記第2の識別子が示す2つ以上のループカウンタの保持する全ての値を1減算或いは0にするように制御することを特徴とする請求項2記載のループ制御装置。
And further comprising difference holding means corresponding to the second identifier,
The control means, the sample output matches the first comparison means, the output of two or more of said second comparison means corresponding to the loop information including the nearest loop information at the top of the stack match Where
If at least one of the outputs of the third comparison means corresponding to the two or more loop information does not indicate a match, the one not indicating a match is stored in the loop information closest to the top of the stack. The value held by the difference holding means indicated by the second identifier is subtracted from the currently selected program counter, and the value held by the loop counter indicated by the second identifier stored in the loop information is 1 Control to subtract,
When all the outputs of the third comparison means corresponding to the two or more loop information indicate coincidence, the two or more loop information are invalidated and the two or more loop information loop controller according to claim 2, wherein the controller controls the to so that all the values held by the two or more of the loop counter indicated by the second identifier stored in the decremented or 0.
前記スタックの段数は前記ループカウンタの数と一致することを特徴とする請求項1乃至4のいずれか1項に記載のループ制御装置。  5. The loop control device according to claim 1, wherein the number of stages of the stack matches the number of the loop counters. 複数のプログラムカウンタと、複数のループカウンタと、ループ命令に従って実行されるループ処理のエンドアドレスと当該ループ処理を実行するプログラムカウンタを示す第1の識別子と当該ループ処理のループ回数に関する情報を保持するループカウンタを示す第2の識別子とを対応付けて保持するループ情報を複数格納可能なスタックとを備えたループ制御装置の制御方法であって、
前記複数のプログラムカウンタから選択した1つのプログラムカウンタの値を命令メモリのアドレスとして出力する選択ステップと、
前記命令メモリが前記選択ステップにより出力されたアドレスに格納している命令を命令実行手段へ出力する命令出力ステップと、
前記命令出力ステップにおいてループ命令を出力する際当該ループ命令に関するループ情報前記スタックに格納し、前記選択ステップが新しくプログラムカウンタを選択する際に当該プログラムカウンタを示す第1の識別子を含むループ情報のうち前記スタックの先頭に最も近いループ情報を参照して、当該ループ情報が含むエンドアドレスと当該ループ情報が含む第2の識別子とに基づいて、前記選択ステップで選択しているプログラムカウンタによって実行しているループ処理の終了を判定する制御ステップとを備えることを特徴とする制御方法。
A plurality of program counters, a plurality of loop counters, an end address of a loop process executed according to a loop instruction, a first identifier indicating a program counter for executing the loop process, and information on the number of loops of the loop process are held. A control method of a loop control device comprising a stack capable of storing a plurality of pieces of loop information that is stored in association with a second identifier indicating a loop counter ,
A selection step of outputting a value of one program counter selected from the plurality of program counters as an address of an instruction memory;
An instruction output step for outputting the instruction stored in the address output by the selection step to the instruction execution means;
Loop information comprising a first identifier indicating the program counter when the loop information regarding the loop instruction when outputting the loop instruction is stored in the stack in the instruction output step, said selecting step selects a new program counter The loop information closest to the top of the stack is referred to and executed by the program counter selected in the selection step based on the end address included in the loop information and the second identifier included in the loop information. And a control step for determining the end of the loop processing being performed .
JP2004172704A 2004-06-10 2004-06-10 Loop control device and control method thereof Expired - Fee Related JP4673007B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004172704A JP4673007B2 (en) 2004-06-10 2004-06-10 Loop control device and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004172704A JP4673007B2 (en) 2004-06-10 2004-06-10 Loop control device and control method thereof

Publications (2)

Publication Number Publication Date
JP2005352755A JP2005352755A (en) 2005-12-22
JP4673007B2 true JP4673007B2 (en) 2011-04-20

Family

ID=35587191

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004172704A Expired - Fee Related JP4673007B2 (en) 2004-06-10 2004-06-10 Loop control device and control method thereof

Country Status (1)

Country Link
JP (1) JP4673007B2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2013069551A1 (en) * 2011-11-09 2015-04-02 日本電気株式会社 Digital signal processor, program control method, and control program
JP6933263B2 (en) 2017-11-13 2021-09-08 日本電気株式会社 Data processing device, loop control device, data processing method, loop control method and program

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004030277A (en) * 2002-06-26 2004-01-29 Oki Electric Ind Co Ltd Circuit and method for controlling loop

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62156738A (en) * 1985-12-27 1987-07-11 Matsushita Electric Ind Co Ltd Program controller
JPH05313889A (en) * 1992-05-07 1993-11-26 Nec Corp Digital signal processor
JP2926045B2 (en) * 1997-06-18 1999-07-28 松下電器産業株式会社 Microprocessor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004030277A (en) * 2002-06-26 2004-01-29 Oki Electric Ind Co Ltd Circuit and method for controlling loop

Also Published As

Publication number Publication date
JP2005352755A (en) 2005-12-22

Similar Documents

Publication Publication Date Title
US9003422B2 (en) Microprocessor architecture having extendible logic
JP4986431B2 (en) Processor
JP2019141675A (en) Processor
JP3499252B2 (en) Compiling device and data processing device
US5701442A (en) Method of modifying an instruction set architecture of a computer processor to maintain backward compatibility
JPH04275628A (en) Arithmetic processor
US6959379B1 (en) Multiple execution of instruction loops within a processor without accessing program memory
JPH07281896A (en) Information processor
JP2001195250A (en) Instruction translator and instruction memory with translator and data processor using the same
JPH06242948A (en) Pipeline processing computer
KR20080014062A (en) Efficient subprogram return in microprocessors
JPH01310441A (en) Data processor
JP4673007B2 (en) Loop control device and control method thereof
JPH03233630A (en) Information processor
JP3530886B2 (en) Microcontroller
US7631166B1 (en) Processing instruction without operand by inferring related operation and operand address from previous instruction for extended precision computation
JP3490005B2 (en) Instruction control apparatus and method
TWI238352B (en) Register move operations
JPH1091441A (en) Program execution method and device using the method
JP3915019B2 (en) VLIW processor, program generation device, and recording medium
JP2003140910A (en) Binary translation method in vliw processor
JPH0222413B2 (en)
JP2005352594A (en) Data transfer device, its control method, data processing device, and program
JP2689894B2 (en) Micro program control type information processing device
JP5062950B2 (en) Direct memory access device and control method thereof

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20060419

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070611

RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20070626

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100216

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100419

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110118

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110120

R150 Certificate of patent or registration of utility model

Ref document number: 4673007

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140128

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees