JP3405106B2 - プログラマブルコントローラ - Google Patents
プログラマブルコントローラInfo
- Publication number
- JP3405106B2 JP3405106B2 JP01436397A JP1436397A JP3405106B2 JP 3405106 B2 JP3405106 B2 JP 3405106B2 JP 01436397 A JP01436397 A JP 01436397A JP 1436397 A JP1436397 A JP 1436397A JP 3405106 B2 JP3405106 B2 JP 3405106B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- buffer
- address
- tag
- executed
- 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
Landscapes
- Programmable Controllers (AREA)
- Advance Control (AREA)
Description
【0001】
【発明の属する技術分野】本発明は、複数のステージを
パイプライン実行するパイプライン構造のプログラマブ
ルコントローラに関するものである。
パイプライン実行するパイプライン構造のプログラマブ
ルコントローラに関するものである。
【0002】
【従来の技術】プログラマブルコントローラは産業用装
置、機械、FA機器の制御に広く用いられており、対象
となる装置の複雑化、高速化に応じて、より多数の入出
力信号を高速に処理することが求められている。このた
め、ビット処理を主とする基本命令と、複数ビットの応
用命令処理を行うことのできる専用ハードウェア(プロ
セッサ)で高速化を実現し、通信処理・周辺処理などを
行う汎用マイクロプロセッサと組み合わせてプログラマ
ブルコントローラを構成している。この専用ハードウェ
ア(プロセッサ)の構造として、従来は、以下のような
3段パイプライン構造で命令を実行していた。
置、機械、FA機器の制御に広く用いられており、対象
となる装置の複雑化、高速化に応じて、より多数の入出
力信号を高速に処理することが求められている。このた
め、ビット処理を主とする基本命令と、複数ビットの応
用命令処理を行うことのできる専用ハードウェア(プロ
セッサ)で高速化を実現し、通信処理・周辺処理などを
行う汎用マイクロプロセッサと組み合わせてプログラマ
ブルコントローラを構成している。この専用ハードウェ
ア(プロセッサ)の構造として、従来は、以下のような
3段パイプライン構造で命令を実行していた。
【0003】
第1ステージ:命令フェッチ
第2ステージ:命令デコード、レジスタフェッチ、算術
論理演算、データアドレス計算、分岐先計算、 第3ステージ:メモリアクセス(リード/ライト)、分
岐、ビット演算、レジスタ書き込み
論理演算、データアドレス計算、分岐先計算、 第3ステージ:メモリアクセス(リード/ライト)、分
岐、ビット演算、レジスタ書き込み
【0004】
【発明が解決しようとする課題】上記の3段パイプライ
ン構造では、各ステージのうち一番遅い実行ステージの
処理速度で、全体の命令実行速度が決まってしまう。こ
のようなパイプライン処理の高速化のためには、各ステ
ージの処理速度を均等にする必要があるが、この例では
命令メモリとデータメモリに同じアクセス時間のメモリ
を使用すると、第1ステージに対して第3ステージの方
がビット演算を行う分、処理時間が必要になるというア
ンバランスがある。実行速度向上のためには、パイプラ
インステージをさらに分割して多段にすれば良い。そこ
で、本発明者らは、専用ハードウェア(プロセッサ)の
命令実行サイクルを以下のような5段に要素分割した、
5段パイプライン構造を持ったプログラマブルコントロ
ーラを開発した。
ン構造では、各ステージのうち一番遅い実行ステージの
処理速度で、全体の命令実行速度が決まってしまう。こ
のようなパイプライン処理の高速化のためには、各ステ
ージの処理速度を均等にする必要があるが、この例では
命令メモリとデータメモリに同じアクセス時間のメモリ
を使用すると、第1ステージに対して第3ステージの方
がビット演算を行う分、処理時間が必要になるというア
ンバランスがある。実行速度向上のためには、パイプラ
インステージをさらに分割して多段にすれば良い。そこ
で、本発明者らは、専用ハードウェア(プロセッサ)の
命令実行サイクルを以下のような5段に要素分割した、
5段パイプライン構造を持ったプログラマブルコントロ
ーラを開発した。
【0005】
第1ステージ:命令フェッチ
第2ステージ:命令デコード、レジスタフェッチ
第3ステージ:算術論理演算、データアドレス計算、分
岐先計算 第4ステージ:メモリアクセス(リード/ライト) 第5ステージ:分岐、ビット演算、レジスタ書き込み この5段パイプライン構造を採用すると、従来の3段パ
イプライン構造のプログラマブルコントローラに比べて
パイプラインステージ間のアンバランスが改善され、パ
イプラインステージ1段あたりの所要時間も短縮される
ため、全体の命令実行速度を向上させることができる。
この5段パイプライン構造のプログラマブルコントロー
ラの概略構成図を、図3に示す。
岐先計算 第4ステージ:メモリアクセス(リード/ライト) 第5ステージ:分岐、ビット演算、レジスタ書き込み この5段パイプライン構造を採用すると、従来の3段パ
イプライン構造のプログラマブルコントローラに比べて
パイプラインステージ間のアンバランスが改善され、パ
イプラインステージ1段あたりの所要時間も短縮される
ため、全体の命令実行速度を向上させることができる。
この5段パイプライン構造のプログラマブルコントロー
ラの概略構成図を、図3に示す。
【0006】図で、IF(Instruction F
etch)で示される第1ステージは、命令メモリIM
から命令レジスタIRヘ次に実行する命令を読み込む命
令フェッチ処理を行うステージで、命令を格納する命令
メモリIMと、プログラムカウンタ制御のためのアドレ
ス計算回路ADDRCALCからの信号を受けて、次に
実行する命令が格納された命令メモリIMのアドレスを
計数するプログラムカウンタPCとで構成されている。
プログラムカウンタPCのアドレス指定に従って命令メ
モリIMから読み出された命令が格納される命令レジス
タIRは、第1ステージIFの実行結果を保存して、次
の第2ステージであるIDにその結果を伝える、パイプ
ラインレジスタIF/IDを兼ねている。
etch)で示される第1ステージは、命令メモリIM
から命令レジスタIRヘ次に実行する命令を読み込む命
令フェッチ処理を行うステージで、命令を格納する命令
メモリIMと、プログラムカウンタ制御のためのアドレ
ス計算回路ADDRCALCからの信号を受けて、次に
実行する命令が格納された命令メモリIMのアドレスを
計数するプログラムカウンタPCとで構成されている。
プログラムカウンタPCのアドレス指定に従って命令メ
モリIMから読み出された命令が格納される命令レジス
タIRは、第1ステージIFの実行結果を保存して、次
の第2ステージであるIDにその結果を伝える、パイプ
ラインレジスタIF/IDを兼ねている。
【0007】ID(Instruction Deco
de)で示される第2ステージは、命令デコーダDCに
よる命令デコード、及び、レジスタファイルRFを構成
する複数の汎用レジスタのいずれかより値を取り出すレ
ジスタフェッチ処理を行うステージで、命令のオペレー
ションコード部を解読するデコーダDCと、複数の汎用
レジスタで構成された汎用レジスタファイルRFとで構
成されている。汎用レジスタファイルRFには、2つの
出力が設けられており、一方の出力はパイプラインレジ
スタID/EXのS1に接続され、他方の出力はパイプ
ラインレジスタID/EXのS2に接続されている。ま
た、命令デコーダDCで解読された値もパイプラインレ
ジスタID/EXの所定の箇所に格納される。
de)で示される第2ステージは、命令デコーダDCに
よる命令デコード、及び、レジスタファイルRFを構成
する複数の汎用レジスタのいずれかより値を取り出すレ
ジスタフェッチ処理を行うステージで、命令のオペレー
ションコード部を解読するデコーダDCと、複数の汎用
レジスタで構成された汎用レジスタファイルRFとで構
成されている。汎用レジスタファイルRFには、2つの
出力が設けられており、一方の出力はパイプラインレジ
スタID/EXのS1に接続され、他方の出力はパイプ
ラインレジスタID/EXのS2に接続されている。ま
た、命令デコーダDCで解読された値もパイプラインレ
ジスタID/EXの所定の箇所に格納される。
【0008】次に、EX(EXecute)で示される
第3ステージは、算術論理演算ユニットALUによっ
て、算術論理演算またはデータアドレス計算または分岐
先の実効アドレスを計算する分岐先計算を行うステージ
で、算術論理演算ユニットALUの一方の入力は、パイ
プラインレジスタID/EXのS1の出力に接続され、
他方の入力は、パイプラインレジスタID/EXのS2
の出力に接続されている。また、算術論理演算ユニット
ALUは、パイプラインレジスタID/EXの所定の箇
所に格納された、デコードされた命令の値によって制御
され、算術論理演算ユニットALUの出力は、パイプラ
インレジスタEX/MEMのDの箇所に格納される。
第3ステージは、算術論理演算ユニットALUによっ
て、算術論理演算またはデータアドレス計算または分岐
先の実効アドレスを計算する分岐先計算を行うステージ
で、算術論理演算ユニットALUの一方の入力は、パイ
プラインレジスタID/EXのS1の出力に接続され、
他方の入力は、パイプラインレジスタID/EXのS2
の出力に接続されている。また、算術論理演算ユニット
ALUは、パイプラインレジスタID/EXの所定の箇
所に格納された、デコードされた命令の値によって制御
され、算術論理演算ユニットALUの出力は、パイプラ
インレジスタEX/MEMのDの箇所に格納される。
【0009】次に、MEM(MEMory acces
s)で示される第4ステージは、データメモリDMヘの
メモリアクセス処理を行うステージで、パイプラインレ
ジスタEX/MEMのDの箇所に格納されていた値は、
データメモリDMの所定アドレスのメモリに格納される
と共に、パイプラインレジスタMEM/WBの所定箇所
に出力される。または、データメモリDMの所定アドレ
スに格納されていた値がパイプラインレジスタMEM/
WBの所定箇所に格納される。
s)で示される第4ステージは、データメモリDMヘの
メモリアクセス処理を行うステージで、パイプラインレ
ジスタEX/MEMのDの箇所に格納されていた値は、
データメモリDMの所定アドレスのメモリに格納される
と共に、パイプラインレジスタMEM/WBの所定箇所
に出力される。または、データメモリDMの所定アドレ
スに格納されていた値がパイプラインレジスタMEM/
WBの所定箇所に格納される。
【0010】最後に、WB(Write Back)で
示される第5ステージは、ビット演算または汎用レジス
タへの書き込み処理または分岐処理を行うステージで、
汎用レジスタへの書き込み処理の場合は、パイプライン
レジスタMEM/WBの所定箇所に格納されていた値
が、レジスタファイルRFの所定の汎用レジスタに格納
される。
示される第5ステージは、ビット演算または汎用レジス
タへの書き込み処理または分岐処理を行うステージで、
汎用レジスタへの書き込み処理の場合は、パイプライン
レジスタMEM/WBの所定箇所に格納されていた値
が、レジスタファイルRFの所定の汎用レジスタに格納
される。
【0011】図3では、命令メモリIMから命令を取り
出す命令フェッチ処理を行う第1ステージIFと、命令
デコード処理及び汎用レジスタから値を取り出すレジス
タフェッチ処理を行う第2ステージIDと、算術論理演
算処理またはデータアドレス演算処理または分岐先の実
効アドレス計算処理または分岐条件の判定処理を行う第
3ステージEXと、データメモリDMへのメモリアクセ
ス処理または分岐処理を行う第4ステージMEMと、ビ
ット演算処理または前記汎用レジスタへの書き込み処理
または分岐処理を行う第5ステージWBの、5つのステ
ージをパイプライン実行する縮小命令型の5段パイプラ
イン構造のプログラマブルコントローラを例示したが、
これは説明のために示したのであって、この発明は縮小
命令型のプロセッサや5段パイプラインに限定するもの
ではない。
出す命令フェッチ処理を行う第1ステージIFと、命令
デコード処理及び汎用レジスタから値を取り出すレジス
タフェッチ処理を行う第2ステージIDと、算術論理演
算処理またはデータアドレス演算処理または分岐先の実
効アドレス計算処理または分岐条件の判定処理を行う第
3ステージEXと、データメモリDMへのメモリアクセ
ス処理または分岐処理を行う第4ステージMEMと、ビ
ット演算処理または前記汎用レジスタへの書き込み処理
または分岐処理を行う第5ステージWBの、5つのステ
ージをパイプライン実行する縮小命令型の5段パイプラ
イン構造のプログラマブルコントローラを例示したが、
これは説明のために示したのであって、この発明は縮小
命令型のプロセッサや5段パイプラインに限定するもの
ではない。
【0012】従来例では、乗算命令・除算命令・微分命
令など実行サイクルが規定のパイプライン段数を越える
場合、後続の命令実行を停止させている。例えば、以下
の例において、乗算命令の後の加算命令と論理積命令は
原理的には実行可能であるが、従来例ではこれらの命令
の実行を停止させている。 アドレス 命令 16 ビット処理命令(スタート) 17 メモリリード命令 Load R1 18 メモリリード命令 Load R2 19 乗算命令 Mult R1*R2→R3 20 加算命令 (実行可能)Add R1+R2→R4 21 論理積命令(実行可能)And R1and R2→R5 22 加算命令 Add R3+R1→R6 23 加算命令 Add R5+R6→R7 24 メモリライト命令 StoreR7
令など実行サイクルが規定のパイプライン段数を越える
場合、後続の命令実行を停止させている。例えば、以下
の例において、乗算命令の後の加算命令と論理積命令は
原理的には実行可能であるが、従来例ではこれらの命令
の実行を停止させている。 アドレス 命令 16 ビット処理命令(スタート) 17 メモリリード命令 Load R1 18 メモリリード命令 Load R2 19 乗算命令 Mult R1*R2→R3 20 加算命令 (実行可能)Add R1+R2→R4 21 論理積命令(実行可能)And R1and R2→R5 22 加算命令 Add R3+R1→R6 23 加算命令 Add R5+R6→R7 24 メモリライト命令 StoreR7
【0013】このプログラムでは、アドレス17、18
のメモリリード命令によりレジスタR1とR2にメモリ
のデータを読み込み、アドレス19の乗算命令によりレ
ジスタR1とR2の乗算結果をレジスタR3に格納し、
アドレス20の加算命令によりレジスタR1とR2の和
をレジスタR4に格納し、アドレス21の論理積命令に
よりレジスタR1とR2の論理積をレジスタR5に格納
し、アドレス22の加算命令によりレジスタR3とR1
の和をレジスタR6に格納し、アドレス23の加算命令
によりレジスタR5とR6の和をレジスタR7に格納
し、アドレス24のメモリライト命令によりレジスタR
7のデータをメモリに書き込んでいる。
のメモリリード命令によりレジスタR1とR2にメモリ
のデータを読み込み、アドレス19の乗算命令によりレ
ジスタR1とR2の乗算結果をレジスタR3に格納し、
アドレス20の加算命令によりレジスタR1とR2の和
をレジスタR4に格納し、アドレス21の論理積命令に
よりレジスタR1とR2の論理積をレジスタR5に格納
し、アドレス22の加算命令によりレジスタR3とR1
の和をレジスタR6に格納し、アドレス23の加算命令
によりレジスタR5とR6の和をレジスタR7に格納
し、アドレス24のメモリライト命令によりレジスタR
7のデータをメモリに書き込んでいる。
【0014】したがって、本来ならば、命令アドレスが
3番目の乗算命令(アドレス19のMult R1*R
2→R3)が実行中は、命令アドレスが4、5番目の命
令(アドレス20の加算命令Add R1+R2→R4
とアドレス21の論理積命令And R1and R2→R
5)は原理的には実行可能である。なぜなら、乗算命令
の結果はレジスタR3に入るので、レジスタR1とR2
は値が確定しており、乗算命令の結果として値が変化し
ないからである。それにもかかわらず、従来例では一律
に乗算命令のアドレスで後続命令の実行を停止させてい
る。
3番目の乗算命令(アドレス19のMult R1*R
2→R3)が実行中は、命令アドレスが4、5番目の命
令(アドレス20の加算命令Add R1+R2→R4
とアドレス21の論理積命令And R1and R2→R
5)は原理的には実行可能である。なぜなら、乗算命令
の結果はレジスタR3に入るので、レジスタR1とR2
は値が確定しており、乗算命令の結果として値が変化し
ないからである。それにもかかわらず、従来例では一律
に乗算命令のアドレスで後続命令の実行を停止させてい
る。
【0015】
【発明が解決しようとする課題】従来のプログラマブル
コントローラにおいては、命令のパイプライン処理によ
って高速処理を実現している。しかし、乗算命令・除算
命令・微分命令など一部の命令では、実行サイクルがこ
のパイプライン段数より長い。このような命令の実行中
は、後続命令の実行が待たされるために、結果として処
理速度が低下するという問題があった。
コントローラにおいては、命令のパイプライン処理によ
って高速処理を実現している。しかし、乗算命令・除算
命令・微分命令など一部の命令では、実行サイクルがこ
のパイプライン段数より長い。このような命令の実行中
は、後続命令の実行が待たされるために、結果として処
理速度が低下するという問題があった。
【0016】本発明は、このように、パイプライン処理
によって命令の高速処理を行うプログラマブルコントロ
ーラにおいて、実行サイクルがパイプライン段数よりも
長い命令の実行時に後続命令の実行が待たさせることに
よる処理速度の低下を防止しようとするものである。
によって命令の高速処理を行うプログラマブルコントロ
ーラにおいて、実行サイクルがパイプライン段数よりも
長い命令の実行時に後続命令の実行が待たさせることに
よる処理速度の低下を防止しようとするものである。
【0017】
【課題を解決するための手段】本発明にあっては、上記
の課題を解決するために、図1に示すように、複数のス
テージをパイプライン実行するパイプライン構造のプロ
グラマブルコントローラであって、命令実行に複数サイ
クルを必要とする複数サイクル命令実行時の高速処理を
実現するために、命令メモリから読み出した命令及びそ
の命令アドレスを一時格納し、実行された命令のみが後
続の命令群に書き換えられる先入れ先出しバッファとし
て機能するプリフェッチ用バッファを有し、このプリフ
ェッチ用バッファの先頭アドレスと並列実行中の命令の
格納アドレスとの差分を示すバッファポインタを備え、
命令実行に複数サイクルを必要とする命令であることを
示す複数サイクル命令タグ及び複数サイクル命令実行と
並行して実行できる命令であることを示す並列実行可能
命令タグを前記バッファに付加し、これら2つのタグと
前記バッファポインタに基づいて複数サイクル命令実行
時に並列実行可能な後続命令を実行することを特徴とす
るものであり、請求項に示した構成により、後続の命令
で、処理データが確定している命令は、停止させること
なく高速処理を実現するものである。
の課題を解決するために、図1に示すように、複数のス
テージをパイプライン実行するパイプライン構造のプロ
グラマブルコントローラであって、命令実行に複数サイ
クルを必要とする複数サイクル命令実行時の高速処理を
実現するために、命令メモリから読み出した命令及びそ
の命令アドレスを一時格納し、実行された命令のみが後
続の命令群に書き換えられる先入れ先出しバッファとし
て機能するプリフェッチ用バッファを有し、このプリフ
ェッチ用バッファの先頭アドレスと並列実行中の命令の
格納アドレスとの差分を示すバッファポインタを備え、
命令実行に複数サイクルを必要とする命令であることを
示す複数サイクル命令タグ及び複数サイクル命令実行と
並行して実行できる命令であることを示す並列実行可能
命令タグを前記バッファに付加し、これら2つのタグと
前記バッファポインタに基づいて複数サイクル命令実行
時に並列実行可能な後続命令を実行することを特徴とす
るものであり、請求項に示した構成により、後続の命令
で、処理データが確定している命令は、停止させること
なく高速処理を実現するものである。
【0018】
【発明の実施の形態】命令プリフェッチバッファは、F
IFO(先入れ先出し)で深さ8を持つものとする。最
初にこのバッファの内容は以下のようになる。このリス
トにおいて、各行の書式は「バッファアドレス:命令ア
ドレス 命令」であり、命令の後に付記された1つ目の
丸括弧内は実行可能タグの値、2つ目の丸括弧内は複数
サイクル命令タグの値である。 0:16 スタート (0)(0) 1:17 Load R1 (0)(0) 2:18 Load R2 (0)(0) 3:19 Mult R1 * R2→R3(0)(1) 4:20 Add R1 + R2→R4(1)(0) 5:21 And R1and R2→R6(1)(0) 6:22 Add R3 + R1→R6(0)(0) 7:23 Add R3 + R6→R7(0)(0) 8:24 StoreR7 (0)(0)
IFO(先入れ先出し)で深さ8を持つものとする。最
初にこのバッファの内容は以下のようになる。このリス
トにおいて、各行の書式は「バッファアドレス:命令ア
ドレス 命令」であり、命令の後に付記された1つ目の
丸括弧内は実行可能タグの値、2つ目の丸括弧内は複数
サイクル命令タグの値である。 0:16 スタート (0)(0) 1:17 Load R1 (0)(0) 2:18 Load R2 (0)(0) 3:19 Mult R1 * R2→R3(0)(1) 4:20 Add R1 + R2→R4(1)(0) 5:21 And R1and R2→R6(1)(0) 6:22 Add R3 + R1→R6(0)(0) 7:23 Add R3 + R6→R7(0)(0) 8:24 StoreR7 (0)(0)
【0019】この命令配列では、Mult命令のみが複
数サイクルを持つ命令であるため、このMult命令に
ついてのみ複数サイクル命令タグの値が1となってい
る。また、この複数サイクルを持つ命令が終了しなくて
も実行可能な命令にのみ、実行可能タグ:1を付加して
ある。これは、コンパイラが判断して、命令に付加する
ことができる。つまり、コンパイラはMult命令がレ
ジスタR1とR2の値を書き換えない命令であることを
が分かるので、後続命令の加算命令と論理積命令につい
ては実行可能であることを判断することができ、コンパ
イル時に実行可能タグを付加することが可能である。
数サイクルを持つ命令であるため、このMult命令に
ついてのみ複数サイクル命令タグの値が1となってい
る。また、この複数サイクルを持つ命令が終了しなくて
も実行可能な命令にのみ、実行可能タグ:1を付加して
ある。これは、コンパイラが判断して、命令に付加する
ことができる。つまり、コンパイラはMult命令がレ
ジスタR1とR2の値を書き換えない命令であることを
が分かるので、後続命令の加算命令と論理積命令につい
ては実行可能であることを判断することができ、コンパ
イル時に実行可能タグを付加することが可能である。
【0020】また、別の手段として、命令プリフェッチ
時に、プリフェッチユニットが複数サイクルを持つ命令
を認識して、後続命令についての実行可能タグをプリフ
ェッチバッファに付加する。実行可能タグが0の場合
は、プリフェッチバッファの先頭に来ない限り、実行さ
れないようにする。
時に、プリフェッチユニットが複数サイクルを持つ命令
を認識して、後続命令についての実行可能タグをプリフ
ェッチバッファに付加する。実行可能タグが0の場合
は、プリフェッチバッファの先頭に来ない限り、実行さ
れないようにする。
【0021】同じように複数サイクルの命令を示す複数
サイクル命令タグは、コンパイラによって命令に付加し
ておくか、命令プリフェッチ時に、プリフェッチユニッ
トが認識して、プリフェッチバッファに付加する。
サイクル命令タグは、コンパイラによって命令に付加し
ておくか、命令プリフェッチ時に、プリフェッチユニッ
トが認識して、プリフェッチバッファに付加する。
【0022】そして、このプリフェッチバッファのどの
部分を実行中かを示すために、プリフェッチバッファの
ポインタを持ち、最初はこのポインタは0を示してい
る。最初の命令(アドレス16)が実行されると、アド
レス17以降の命令は、すべて1ずつシフトされて、以
下のような構成となる。このリストでも、各行の書式は
「バッファアドレス:命令アドレス 命令(実行可能タ
グ)(複数サイクル命令タグ)」であり、それ以降に登
場するリストについても同様である。
部分を実行中かを示すために、プリフェッチバッファの
ポインタを持ち、最初はこのポインタは0を示してい
る。最初の命令(アドレス16)が実行されると、アド
レス17以降の命令は、すべて1ずつシフトされて、以
下のような構成となる。このリストでも、各行の書式は
「バッファアドレス:命令アドレス 命令(実行可能タ
グ)(複数サイクル命令タグ)」であり、それ以降に登
場するリストについても同様である。
【0023】
プリフェッチバッファのポインタ=0
0:17 Load R1 (0)(0)
1:18 Load R2 (0)(0)
2:19 Mult R1 * R2→R3(0)(1)
3:20 Add R1 + R2→R4(1)(0)
4:21 A1d R1and R2→R5(1)(0)
5:22 Add R3 + R1→R6(0)(0)
6:23 Add R3 + R6→R7(0)(0)
7:24 StoreR7 (0)(0)
【0024】次に、アドレス17、18の命令が順次実
行された後には、以下のような構成になる。 プリフェッチバッファのポインタ=0 0:19 Mult R1 * R2→R3(0)(1) 1:20 Add R1 + R2→R4(1)(0) 2:21 And R1and R2→R3(1)(0) 3:22 Add R3 + R1→R6(0)(0) 4:23 Add R5 + R6→R7(0)(0) 5:24 StoreR7 (0)(0) このときに複数サイクル命令タグが先頭に来ているの
で、この命令を実行しながら、後続の並行して実行でき
る命令を実行ユニットに投入して行く。すなわち、プリ
フェッチバッファのポインタを1つ進めて処理して行
く。
行された後には、以下のような構成になる。 プリフェッチバッファのポインタ=0 0:19 Mult R1 * R2→R3(0)(1) 1:20 Add R1 + R2→R4(1)(0) 2:21 And R1and R2→R3(1)(0) 3:22 Add R3 + R1→R6(0)(0) 4:23 Add R5 + R6→R7(0)(0) 5:24 StoreR7 (0)(0) このときに複数サイクル命令タグが先頭に来ているの
で、この命令を実行しながら、後続の並行して実行でき
る命令を実行ユニットに投入して行く。すなわち、プリ
フェッチバッファのポインタを1つ進めて処理して行
く。
【0025】プリフェッチバッファのポインタ=1
0:19 Mult R1 * R2→R3(0)(1)
1:20 Add R1 + R2→R4(1)(0)
2:21 And R1and R2→R5(1)(0)
3:22 Add R3 + R1→R6(0)(0)
4:23 Add R5 + R6→R7(0)(0)
5:24 StoreR7 (0)(0)
ここではアドレス20の命令が実行可能タグ=1なので
実行する。ここで、まだ命令19が実行中であれば、プ
リフェッチバッファのアドレス2以降の命令を選択的に
シフトする。この例では、上記リストのアドレス2〜5
を下記リストのアドレス1〜4に順次シフトする。
実行する。ここで、まだ命令19が実行中であれば、プ
リフェッチバッファのアドレス2以降の命令を選択的に
シフトする。この例では、上記リストのアドレス2〜5
を下記リストのアドレス1〜4に順次シフトする。
【0026】プリフェッチバッファのポインタ=1
0:19 Mult R1 * R2→R3(0)(1)
1:21 And R1and R2→R5(1)(0)
2:22 Add R3 + R1→R6(0)(0)
3:23 Add R5 + R6→R7(0)(0)
4:24 StoreR7 (0)(0)
ここでは、アドレス21の命令が実行可能タグ=1なの
で実行する。ここで、まだ命令19が実行中であれば、
同じく、プリフェッチバッファのアドレス2以降の命令
を選択的にシフトする。この例では、上記リストのアド
レス2〜4を下記リストのアドレス1〜3に順次シフト
する。
で実行する。ここで、まだ命令19が実行中であれば、
同じく、プリフェッチバッファのアドレス2以降の命令
を選択的にシフトする。この例では、上記リストのアド
レス2〜4を下記リストのアドレス1〜3に順次シフト
する。
【0027】プリフェッチバッファのポインタ=1
0:19 Mult R1 * R2→R3(0)(1)
1:22 Add R3 + R1→R6(0)(0)
2:23 Add R5 + R6→R7(0)(0)
3:24 StoreR7 (0)(0)
ここではアドレス22の命令が実行可能タグ=0なので
実行せずに、アドレス19の命令実行が終わるのを待
つ。つまり、アドレス22の命令は乗算命令の結果であ
るレジスタR3の値を使用するので、実行可能タグが0
となっているのである。アドレス19の命令が実行終了
したら、プリフェッチバッファのポインタを0に戻し、
通常の実行サイクルに戻る。
実行せずに、アドレス19の命令実行が終わるのを待
つ。つまり、アドレス22の命令は乗算命令の結果であ
るレジスタR3の値を使用するので、実行可能タグが0
となっているのである。アドレス19の命令が実行終了
したら、プリフェッチバッファのポインタを0に戻し、
通常の実行サイクルに戻る。
【0028】プリフェッチバッファのポインタ=0
0:22 Add R3 + R1→R6(0)(0)
1:23 Add R5 + R6→R7(0)(0)
2:24 StoreR7 (0)(0)
ここでは表示を省略しているが、これら実行サイクルの
間に、アドレス25以降の命令も継続してプリフェッチ
されて行くことは当然である。
間に、アドレス25以降の命令も継続してプリフェッチ
されて行くことは当然である。
【0029】
【実施例】本発明の1つの実施例として、図2にプリフ
ェッチバッファの深さが8の場合を示す。この深さは任
意に設定できることは言うまでもない。命令がメモリか
らプリフェッチされると、まずバッファ7にその命令ア
ドレスと命令が格納される。次の命令がプリフェッチさ
れると先に取り込まれた命令はバッファ6に移され、バ
ッファ7に新たな命令が入る。このように命令が取り込
まれて行き、バッファ7〜0まで命令が埋められた後
に、バッファ0の命令から実行されて行く。この後の動
作は、上述の通りである。
ェッチバッファの深さが8の場合を示す。この深さは任
意に設定できることは言うまでもない。命令がメモリか
らプリフェッチされると、まずバッファ7にその命令ア
ドレスと命令が格納される。次の命令がプリフェッチさ
れると先に取り込まれた命令はバッファ6に移され、バ
ッファ7に新たな命令が入る。このように命令が取り込
まれて行き、バッファ7〜0まで命令が埋められた後
に、バッファ0の命令から実行されて行く。この後の動
作は、上述の通りである。
【0030】このとき、複数サイクル命令タグと並列実
行可能タグは、命令コンパイル時に決める方式であれ
ば、各タグは命令に組み込まれているので、命令メモリ
から取り込むだけで、バッファに格納される。つまり、
本来の命令語長がnビットであれば、コンパイル後の命
令語長は複数サイクル命令タグと並列実行可能タグを付
加して(n+2)ビットとなっており、その命令語長で
命令メモリに格納されているから、命令メモリから読み
出してバッファに書き込むだけで良い。また、別の手段
として、プリフェッチ時にこれら2種類のタグを決める
方式の場合には、命令プリフェッチブロックに命令デコ
ーダを配して、命令メモリから読み出した命令につい
て、これらタグを自動判定し、タグを付加した状態でバ
ッファに格納して行く。
行可能タグは、命令コンパイル時に決める方式であれ
ば、各タグは命令に組み込まれているので、命令メモリ
から取り込むだけで、バッファに格納される。つまり、
本来の命令語長がnビットであれば、コンパイル後の命
令語長は複数サイクル命令タグと並列実行可能タグを付
加して(n+2)ビットとなっており、その命令語長で
命令メモリに格納されているから、命令メモリから読み
出してバッファに書き込むだけで良い。また、別の手段
として、プリフェッチ時にこれら2種類のタグを決める
方式の場合には、命令プリフェッチブロックに命令デコ
ーダを配して、命令メモリから読み出した命令につい
て、これらタグを自動判定し、タグを付加した状態でバ
ッファに格納して行く。
【0031】命令プリフェッチバッファと周辺回路の一
例を図1に示す。命令メモリIMから取り込まれる命令
は命令デコーダ1を通じてタグが生成される。命令アド
レスはメモリアクセス(プリフェッチ)の際に用いる命
令メモリアドレスレジスタ2の内容を取り込む。ここ
で、命令コンパイル時にタグがすでに命令に付加されて
いる場合には、上図の命令デコーダ1(図1の一点鎖線
で囲まれた部分)は不要であり、これを通さずに命令そ
のものに付加されているタグがそのまま命令プリフェッ
チバッファ3に取り込まれる。制御回路4は命令プリフ
ェッチバッファ3のタグ情報をもとに、プリフェッチバ
ッファアドレスポインタ5の値を書き換え、また、FI
FOの書き換えを制御することによって、並列実行の制
御を行う。
例を図1に示す。命令メモリIMから取り込まれる命令
は命令デコーダ1を通じてタグが生成される。命令アド
レスはメモリアクセス(プリフェッチ)の際に用いる命
令メモリアドレスレジスタ2の内容を取り込む。ここ
で、命令コンパイル時にタグがすでに命令に付加されて
いる場合には、上図の命令デコーダ1(図1の一点鎖線
で囲まれた部分)は不要であり、これを通さずに命令そ
のものに付加されているタグがそのまま命令プリフェッ
チバッファ3に取り込まれる。制御回路4は命令プリフ
ェッチバッファ3のタグ情報をもとに、プリフェッチバ
ッファアドレスポインタ5の値を書き換え、また、FI
FOの書き換えを制御することによって、並列実行の制
御を行う。
【0032】
【発明の効果】本発明によれば、命令のパイプライン処
理によって高速処理を実現しているプログラマブルコン
トローラにおいては、乗算命令・除算命令・微分命令な
どのように、実行サイクルがパイプライン段数より長い
一部の命令の実行中にも、後続命令の実行が待たされる
ことを防止し、結果として処理速度が低下することを防
止できるという効果がある。
理によって高速処理を実現しているプログラマブルコン
トローラにおいては、乗算命令・除算命令・微分命令な
どのように、実行サイクルがパイプライン段数より長い
一部の命令の実行中にも、後続命令の実行が待たされる
ことを防止し、結果として処理速度が低下することを防
止できるという効果がある。
【図1】本発明に用いる命令プリフェッチバッファと周
辺回路を示すブロック回路図である。
辺回路を示すブロック回路図である。
【図2】本発明に用いる命令プリフェッチバッファの構
造を示す説明図である。
造を示す説明図である。
【図3】従来のパイプライン構造のプログラマブルコン
トローラのブロック回路図である。
トローラのブロック回路図である。
3 命令プリフェッチバッファ
5 ポインタ
─────────────────────────────────────────────────────
フロントページの続き
(56)参考文献 特開 平6−83623(JP,A)
特開 平3−196334(JP,A)
特開 平5−265755(JP,A)
特開 平5−197547(JP,A)
特開 平8−76996(JP,A)
特開 平8−305567(JP,A)
特開 平7−244588(JP,A)
特開 平5−88892(JP,A)
特開 平5−53805(JP,A)
特開 平4−308930(JP,A)
(58)調査した分野(Int.Cl.7,DB名)
G06F 9/38
G05B 19/05
Claims (8)
- 【請求項1】 複数のステージをパイプライン実行す
るパイプライン構造のプログラマブルコントローラであ
って、命令実行に複数サイクルを必要とする複数サイク
ル命令実行時の高速処理を実現するために、命令メモリ
から読み出した命令及びその命令アドレスを一時格納
し、実行された命令のみが後続の命令群に書き換えられ
る先入れ先出しバッファとして機能するプリフェッチ用
バッファを有し、このプリフェッチ用バッファの先頭ア
ドレスと並列実行中の命令の格納アドレスとの差分を示
すバッファポインタを備え、命令実行に複数サイクルを
必要とする命令であることを示す複数サイクル命令タグ
及び複数サイクル命令実行と並行して実行できる命令で
あることを示す並列実行可能命令タグを前記バッファに
付加し、これら2つのタグと前記バッファポインタに基
づいて複数サイクル命令実行時に並列実行可能な後続命
令を実行することを特徴とするプログラマブルコントロ
ーラ。 - 【請求項2】 請求項1において、複数サイクル命令
タグは命令のコンパイル時に予め生成されて命令メモリ
上の命令に付加されることを特徴とするプログラマブル
コントローラ。 - 【請求項3】 請求項1において、複数サイクル命令
タグは命令のプリフェッチ時に命令メモリから読み出さ
れた命令に基づいて自動生成してプリフェッチバッファ
に付加されることを特徴とするプログラマブルコントロ
ーラ。 - 【請求項4】 請求項1において、並列実行可能命令
タグは命令のコンパイル時に予め生成されて命令メモリ
上の命令に付加されることを特徴とするプログラマブル
コントローラ。 - 【請求項5】 請求項1において、並列実行可能命令
タグは命令のプリフェッチ時に命令メモリから読み出さ
れた命令に基づいて自動生成してプリフェッチバッファ
に付加されることを特徴とするプログラマブルコントロ
ーラ。 - 【請求項6】 請求項1乃至5のいずれかにおいて、
プリフェッチ用バッファの先頭アドレスの複数サイクル
命令タグが1であれば、その命令が終了するまでは前記
バッファポインタを1として、プリフェッチ用バッファ
上の先頭アドレスの次のアドレスに格納された後続命令
を並行処理し、プリフェッチ用バッファの先頭アドレス
の複数サイクル命令タグが0であれば、前記バッファポ
インタを0に戻してプリフェッチ用バッファ上の先頭ア
ドレスの命令を実行することを特徴とするプログラマブ
ルコントローラ。 - 【請求項7】 請求項6において、前記バッファポイ
ンタが1で、プリフェッチ用バッファ上の先頭アドレス
の次のアドレスに格納された後続命令についての並列実
行可能命令タグが1のときのみ、前記複数サイクル命令
と後続命令の並行処理を行うことにより、実行するとデ
ータが矛盾する命令の実行を阻止することを特徴とする
プログラマブルコントローラ。 - 【請求項8】 請求項7において、前記バッファポイ
ンタが0であるときには、プリフェッチ用バッファ上の
先頭アドレスの命令の実行後に、先頭アドレスの次のア
ドレス以降に格納された全命令を順次先頭アドレスまで
繰り上げるようにシフトし、前記バッファポインタが1
であるときには、プリフェッチ用バッファ上の先頭アド
レスの次のアドレスに格納された後続命令についての並
列実行可能命令タグが1であれば、該後続命令の実行後
に、該後続命令の次のアドレス以降に格納された全命令
を順次先頭アドレスの次のアドレスまで繰り上げるよう
にシフトさせることを特徴とするプログラマブルコント
ローラ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP01436397A JP3405106B2 (ja) | 1997-01-28 | 1997-01-28 | プログラマブルコントローラ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP01436397A JP3405106B2 (ja) | 1997-01-28 | 1997-01-28 | プログラマブルコントローラ |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10207708A JPH10207708A (ja) | 1998-08-07 |
JP3405106B2 true JP3405106B2 (ja) | 2003-05-12 |
Family
ID=11858985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP01436397A Expired - Fee Related JP3405106B2 (ja) | 1997-01-28 | 1997-01-28 | プログラマブルコントローラ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3405106B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002099312A (ja) | 2000-09-22 | 2002-04-05 | Mitsubishi Electric Corp | プログラマブルコントローラおよび制御プログラム開発支援装置 |
-
1997
- 1997-01-28 JP JP01436397A patent/JP3405106B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH10207708A (ja) | 1998-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7694109B2 (en) | Data processing apparatus of high speed process using memory of low speed and low power consumption | |
JP2620511B2 (ja) | データ・プロセッサ | |
EP0766155B1 (en) | Programmable controller | |
US6055628A (en) | Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks | |
CN108959180B (zh) | 一种数据处理方法及*** | |
US7539847B2 (en) | Stalling processor pipeline for synchronization with coprocessor reconfigured to accommodate higher frequency operation resulting in additional number of pipeline stages | |
JP3405106B2 (ja) | プログラマブルコントローラ | |
US5237664A (en) | Pipeline circuit | |
JP2008299729A (ja) | プロセッサ | |
KR100278136B1 (ko) | 데이타처리장치 및 데이타처리방법 | |
JP2861560B2 (ja) | データ処理装置 | |
US9135006B1 (en) | Early execution of conditional branch instruction with pc operand at which point target is fetched | |
JP2001014161A (ja) | プログラマブルコントローラ | |
JP3490191B2 (ja) | 計算機 | |
JP2924735B2 (ja) | パイプライン演算装置及びデコーダ装置 | |
JP3063593B2 (ja) | プログラマブルコントローラ | |
KR100515039B1 (ko) | 조건부 명령어를 고려한 파이프라인 상태 표시 회로 | |
JP3325309B2 (ja) | サブルーチンリターン命令処理装置 | |
JP2503223B2 (ja) | 先行制御方式 | |
JP3481039B2 (ja) | プログラマブルコントローラ | |
JP3060917B2 (ja) | プロセッサ | |
JPH11203133A (ja) | 情報処理装置 | |
JPH05307483A (ja) | レジスタ書き込み制御方法および回路 | |
JP3414579B2 (ja) | プログラマブルコントローラ | |
JPH09231074A (ja) | プログラマブルコントローラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |