JP4673007B2 - Loop control device and control method thereof - Google Patents
Loop control device and control method thereof Download PDFInfo
- 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
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参照)。ループ制御装置においては、ループスタートアドレス、ループエンドアドレス、ループ回数等をスタック構造として格納し、スタックの先頭を参照することにより、上記制御を実現する手法が一般的に用いられている。
しかしながら、従来のループ制御装置においては、そもそも、実行中の命令の命令メモリ上のアドレスを示すプログラムカウンタが複数ある場合の想定がなされていない。そのため、多重ループが複数のプログラムカウンタのそれぞれで実行されている場合、スタックの先頭は、複数のプログラムカウンタのうち何れか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
プロラムカウンタ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
ループ差分レジスタ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
ループ情報スタック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
スタック制御部10は、ループ情報スタック9を制御するものであり、後述の制御を行う。プログラムカウンタ更新部11は、プログラムカウンタ選択信号に基づきデータ転送命令実行毎に選択されたプログラムカウンタの値を1ずつ更新、または、スタック制御部10が出力するループバック指示信号に基づきループの先頭アドレスに更新する。マルチプレクサ12は、命令デコード部4がループ命令を解読した際に出力するループカウンタの識別子(LP_SEL)に基づいて、3つのループ差分レジスタ6の値のうち1つの値を選択する。加算器13は、マルチプレクサ12の出力とプログラムカウンタ選択部2の出力(Address)とを加算する。
The
第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
マルチプレクサ群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
ループ制御装置のスタック制御部10における特徴的な制御をまとめると下記のようになる。
The characteristic control in the
スタック制御部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
即ち、スタック制御部10は、上記エントリに対応する第3の比較器群17の出力が一致を示していない場合は、上記エントリに格納されているループカウンタ及びループ差分レジスタを示す識別子によって示されるループ差分レジスタ6の保持する値を、現在選択されているプログラムカウンタの値から減算し、上記エントリに格納されているループカウンタ及びループ差分レジスタを示す識別子によって示されるループカウンタ7の保持する値を1減算するように制御する。
That is, when the output of the
また、スタック制御部10は、上記エントリに対応する第3の比較器群17の出力が一致を示している場合は、ループ情報スタック9の上記エントリを無効化(IN_USE(0)をクリア)すると共に、上記エントリに格納されているループカウンタ及びループ差分レジスタを示す識別子によって示されるループカウンタ7の保持する値を1減算するか或いは0にクリアするように制御する。
Further, when the output of the
更に、スタック制御部10は、第1の比較器群14の出力が一致を示し、ループ情報スタック9のループ実行中であることを示すフラグがセットされている2つ以上のエントリに対応する第2の比較器群15の出力が一致を示している場合、第3の比較器群17の出力に応じて以下の制御を行う。
Furthermore, the
即ち、スタック制御部10は、上記2つ以上のエントリに対応する第3の比較器群17の出力の少なくとも1つが一致を示していない場合は、一致を示していないもののうちループ情報スタック9の先頭に最も近いエントリに格納されているループカウンタ及びループ差分レジスタを示す識別子によって示されるループ差分レジスタ6の保持する値を、現在選択されているプログラムカウンタの値から減算し、上記エントリに格納されているループカウンタ及びループ差分レジスタを示す識別子によって示されるループカウンタ7の保持する値を1減算するように制御する。
That is, when at least one of the outputs of the
また、スタック制御部10は、上記2つ以上のエントリに対応する第3の比較器群17の出力の全てが一致を示している場合は、ループ情報スタック9の上記2つ以上のエントリを全て無効化すると共に、上記2つ以上のエントリに格納されているループカウンタ及びループ差分レジスタを示す2つ以上の識別子によって示される2つ以上のループカウンタ7の保持する全ての値を1減算するか或いは0にクリアするように制御する。
Further, the
次に、ループ制御装置を構成する上記各部のうち、命令メモリ3、プロラムカウンタ1−1、1−2、1−3、プログラムカウンタ選択部2、プログラムカウンタ更新部11、選択信号生成部8の詳細構成を説明する。
Next, among the above-mentioned units constituting the loop control device, the
図2は、命令メモリ3の詳細構成を示す図である。
FIG. 2 is a diagram showing a detailed configuration of the
図2において、命令メモリ3は、例えば2ポート(1Read/1Write)のSRAMから構成されており、データ幅は32ビット、ワード長は64である。命令メモリ3の読み出しアドレス(READ ADDRESS)は6ビットであり、読み出し許可信号(READ ENABLE)をアサートすると、32ビットの読み出しデータがREAD DATAポートから読み出される。本実施の形態では、読み出しアドレスはプログラムカウンタ選択部2から供給され、読み出しデータは命令デコード部4に供給される。
In FIG. 2, the
命令メモリ3の書き込みアドレス(WRITE ADDRESS)は6ビットであり、書き込み許可信号(WRITE ENABLE)をアサートすると、32ビットの書き込みデータ(WRITE DATA)信号上にドライブされている命令データが命令メモリ3の書き込みアドレスに書き込まれる。本実施の形態では、書き込みアドレス、書き込みデータ共に不図示の外部デバイスから供給される。
The write address (WRITE ADDRESS) of the
命令メモリ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
図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
図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
プログラムカウンタ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
プログラムカウンタ選択部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
プログラムカウンタ選択部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
図4は、選択信号生成部8の詳細構成を示すブロック図である。
FIG. 4 is a block diagram illustrating a detailed configuration of the selection
図4において、選択信号生成部8は、フリップフロップ8−1、8−2、8−3、セレクタ8−4、8−5、8−6、デコーダ8−7を備えている。
In FIG. 4, the selection
フリップフロップ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
図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
ストールが“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
図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
ロード命令の場合のデータ転送元とストア命令の場合のデータ転送先を示す内部リソース識別子は、アドレスレジスタ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
上記図1に戻り、命令実行部5は、命令デコード部4の命令解読結果に応じてデータ転送などを実行する。また、命令実行部5は、内部リソースとして、汎用レジスタGPRとアドレスレジスタARをそれぞれ4本ずつ備えている。更に、命令実行部5は、ダイレクトメモリアクセスデバイスとの間におけるデータ転送を行うためのDMAポート(IN(0)及びOUT(0))と、メモリとの間におけるデータ転送を行うためのバスインタフェースを備えている(以上不図示)。
Returning to FIG. 1, the
汎用レジスタ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
次に、上記構成を有する本実施の形態のループ制御装置における各種制御について図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
非常に単純なループを用いたプログラム例を以下に示す。
命令アドレス 命令
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
まず、命令デコード部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
プログラムカウンタの値が進んで、ループ命令に対応するループエンドアドレスに到達(一致)すると、第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
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
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
次に、多重ループの動作を図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
まず、命令デコード部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
プログラムカウンタの値が進み、命令デコード部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
更に、プログラムカウンタの値が進んで、ループ命令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
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
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
ここで、第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
ループ命令0が満了の場合は(ステップS19の判定が満了:lp_exp(0)=1)、スタック制御部10は、減算器18を操作してループレジスタLP(0)をデクリメント(即ち0にクリア)すると共に、ループ情報スタック9のIN_USE(0)をクリアし、内部的なスタックポインタを1から0に更新する(ステップS20)。
If the
ループ命令0が継続の場合は(ステップS19の判定が継続:lp_exp(0)=0)、スタック制御部10は、減算器18を操作してループレジスタLP(0)をデクリメントすると共に、lp_back_pc即ちPC-OFST+1をPCにロードする(ステップS21)。これにより、プログラムカウンタはループ命令0の次の命令を示すようになる。
When the
次に、複数のプログラムカウンタと多重ループの動作を説明する。 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
その結果、サイクル2では、プログラムカウンタ選択信号pc_selは“010”となり、プログラムカウンタPC(1)が選択され、命令アドレス0x10の命令(アドレスレジスタAR(1)[15:8]に即値0x10をロード)が実行される。以降、順次、プログラムカウンタPC(0)、プログラムカウンタPC(1)が交互に実行される。
As a result, in
サイクル7では、プログラムカウンタPC(0)=0x03の示す最初のループ命令が実行される。サイクル7終了時のループ情報スタックの内容を図13に示す。使用中フラグIN_USE(0)が“1”にセットされ、ループ命令を実行したプログラムカウンタ選択信号pc_sel=“001”、LoopIndicator“001”(LP(0)を示す)及びループ終了アドレス(PC(0)+OFST(0)=0x08)がプッシュされる。
In
サイクル8では、プログラムカウンタPC(1)=0x13の示すループ命令が実行される。サイクル8終了時のループ情報スタック9の内容を図14に示す。使用中フラグIN_USE(0)が“1”にセットされ、ループ命令を実行したプログラムカウンタ選択信号pc_sel=“010”、LoopIndicator“100”(LP(2)を示す)及びループ終了アドレス(PC(1)+OFST(2)=0x14)がプッシュされる。
In
サイクル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
サイクル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
サイクル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
サイクル18では、プログラムカウンタPC(1)=0x15の命令が実行され、プログラムカウンタPC(1)がディスエーブルとなり(プログラムカウンタ選択信号pc_en=“001”となり)、サイクル19以降はプログラムカウンタPC(0)の命令のみが実行される。
In
一方、サイクル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
サイクル21では、プログラムカウンタPC(0)の外周ループエンドとなり、外周ループのループ終了判定が実行される。ループレジスタLP(0)の値は2であるので、ループバックとなり、プログラムカウンタPC(0)=PC(0)-OFST(0)+1=0x08-0x05+1=0x04がロードされ、サイクル22において、0x04に格納された命令が実行される。
In
以下、サイクル24では、再び内周ループに突入し(ループ情報スタック9は図16の状態になる)、サイクル25、26、27、28では、ループ終了判定が実行される。サイクル25、26、27では、ループバックとなり、サイクル28において、ループ終了となる。
Thereafter, in the
サイクル29では、プログラムカウンタPC(0)の外周ループがループ終了となり(LP(0)=1)、ループ情報スタック9は図18に示すように全ての使用中フラグがクリアされる。図12のタイミングチャートには図示していないが、プログラムカウンタPC(0)は1加算されて0x09となり、プログラムカウンタPC(0)をディスエーブル、即ちプログラムの実行を終了する。
In
以上説明したように、本実施の形態によれば、複数のプログラムカウンタ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
即ち、プログラムカウンタ選択信号をプログラムカウンタ識別子としてループ情報スタック9の格納情報に加え、ループエンド時にループ終了判定をループ情報スタック9の先頭から実施することにより、複数のプログラムカウンタが並列的にイネーブルとなり、且つそれぞれが多重ループを実行する場合においても、ループバックであるかループ終了であるかの判定を簡易に行うことが可能となる。
That is, by adding a program counter selection signal as a program counter identifier to the information stored in the
これにより、スタック構造をプログラムカウンタの数だけ用意することが不要となり、非常に簡易且つ小規模な回路構成により、複数のプログラムカウンタが並列的に多重ループを効率良く実行することが可能となる。 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
サイクル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
サイクル25では、再びプログラムカウンタPC(0)の内周ループ及び外周ループが共に使用中状態となり(ループ情報スタック9は図21の状態となり)、サイクル29において、内周ループ及び外周ループが共にループエンドとなる。サイクル29では、ループレジスタLP(0)、ループレジスタLP(1)共に1となっているので、内周ループ及び外周ループ共にループ終了と判定され、ループ情報スタック9の使用中フラグは全てクリアされる。図19のタイミングチャートには図示していないが、プログラムカウンタPC(0)は1加算されて0x09となり、プログラムカウンタPC(0)をディスエーブル、即ちプログラムの実行を終了する。
In
以上説明したように、本実施の形態によれば、第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−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
3
7 Loop counter (corresponding to loop count holding means)
8
10 Stack controller (corresponding to control means)
11 Program
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.
前記選択手段が出力するプログラムカウンタの値と前記エンドアドレスとの一致を検出する第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.
前記制御手段は、前記第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.
前記制御手段は、前記第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つのプログラムカウンタの値を命令メモリのアドレスとして出力する選択ステップと、
前記命令メモリが前記選択ステップにより出力されたアドレスに格納している命令を命令実行手段へ出力する命令出力ステップと、
前記命令出力ステップにおいてループ命令を出力する際に当該ループ命令に関するループ情報を前記スタックに格納し、前記選択ステップが新しくプログラムカウンタを選択する際に当該プログラムカウンタを示す第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 .
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)
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)
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)
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 |
-
2004
- 2004-06-10 JP JP2004172704A patent/JP4673007B2/en not_active Expired - Fee Related
Patent Citations (1)
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 |