[go: up one dir, main page]

JP2005242457A - プログラマブルコントローラ - Google Patents

プログラマブルコントローラ Download PDF

Info

Publication number
JP2005242457A
JP2005242457A JP2004048040A JP2004048040A JP2005242457A JP 2005242457 A JP2005242457 A JP 2005242457A JP 2004048040 A JP2004048040 A JP 2004048040A JP 2004048040 A JP2004048040 A JP 2004048040A JP 2005242457 A JP2005242457 A JP 2005242457A
Authority
JP
Japan
Prior art keywords
instruction
pipeline
stage
register
memory
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.)
Pending
Application number
JP2004048040A
Other languages
English (en)
Inventor
Tatsuo Masuda
達男 増田
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.)
Panasonic Electric Works Co Ltd
Original Assignee
Matsushita Electric Works Ltd
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 Matsushita Electric Works Ltd filed Critical Matsushita Electric Works Ltd
Priority to JP2004048040A priority Critical patent/JP2005242457A/ja
Publication of JP2005242457A publication Critical patent/JP2005242457A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)
  • Programmable Controllers (AREA)

Abstract

【課題】パイプライン構造のプログラマブルコントローラにおいて、命令メモリやデータメモリがアクセス時間の比較的遅い外付けメモリで構成されている場合でも高速な動作を実現可能とする。
【解決手段】プログラムカウンタ更新を行うPCステージ、命令フェッチを行うIFステージ、命令デコード、レジスタフェッチを行うIDステージ、算術論理演算、データアドレス計算、分岐先計算を行うEXステージ、メモリアクセス(リード/ライト)、分岐を行うMEMステージ、ビット演算、レジスタ書き込みを行うWBステージよりなる6段パイプライン構造のプログラマブルコントローラにおいて、命令メモリとデータメモリはデュアルポートメモリで構成され、これらのメモリアクセスの時間はパイプラインの1ステージ分の時間よりも長く設定し、命令メモリやデータメモリへのアクセス動作を複数のパイプラインステージで実行可能とした。
【選択図】図1

Description

本発明は、基本的なビット演算命令処理と、複数ビットの応用命令処理の両方を処理することができる専用ハードウェア(プロセッサ)を備えたプログラマブルコントローラに関するものである。
プログラマブルコントローラは、産業用装置、機械、FA装置の制御に広く用いられており、対象となる装置の複雑化、さらなる高速化の要求に応じて、より多数の入出力信号を高速に処理することが求められている。このため、ビット演算処理を主とする基本命令と複数ビットで構成されるデータを処理する応用命令の一部を実行することができる専用ハードウェア(プロセッサ)で高速化を実現し、通信処理・周辺処理・応用命令の実行などを行う汎用マイクロプロセッサと組み合わせて、プログラマブルコントローラを構成していた。
特開平8−76996(特許第3000857号)の従来例(特許文献1)では、この専用ハードウェア(プロセッサ)の構造として命令実行サイクルを以下のような5段に要素分割した、5段パイプライン構造を持ったプログラマブルコントローラが示されている。
1:命令フェッチ
2:命令デコード、レジスタフェッチ
3:算術論理演算、データアドレス計算、分岐先計算
4:メモリアクセス(リード/ライト)
5:分岐、ビット演算、レジスタ書き込み
また、特開2001−14161(特許文献2)には、上記5段パイプライン構造のプログラマブルコントローラの高速化を図るため、命令実行サイクルを以下のような6段に要素分割して単相クロックで動作する6段パイプライン構造を持ったプログラマブルコントローラが示されている。
1:プログラムカウンタ更新
2:命令フェッチ
3:命令デコード、レジスタフェッチ
4:算術論理演算、データアドレス計算、分岐先計算
5:メモリアクセス(リード/ライト)、分岐
6:ビット演算、レジスタ書き込み
従来例の6段パイプライン構造を持ったプログラマブルコントローラのブロック図を図23に示す。上に示した6つに分割された処理内容がそれぞれ図のPC,IF,ID,EX,MEM,WBの部分で実行され、それぞれの処理の間にはパイプラインレジスタPC/IF,IF/ID,ID/EX,EX/MEM,MEM/WBが配置されている。また、従来例の動作タイミング図を図24に示す。上記の6つに分割された処理内容がパイプライン処理されて、ハードウェア内のそれぞれの部分で並列処理されている。
PC(Program Counter)で示されるステージは、プログラムカウンタ制御のためのアドレス計算回路ADDRCALCからの信号を受けて、次に実行する命令が格納された命令メモリIMEMのアドレスを計数するプログラムカウンタPCで構成されている。
IF(Instruction Fetch)で示されるステージは、命令メモリIMEMから命令レジスタIRヘ次に実行する命令を読み込む命令フェッチ処理を行うステージで、命令を格納する命令メモリIMEMを備えており、プログラムカウンタPCからのアドレス指定に従って命令メモリIMEMから読み出された命令が格納される命令レジスタIRは、IFステージの実行結果を保存して、次のIDステージにその結果を伝える、パイプラインレジスタIF/IDを兼ねている。
ID(Instruction Decode)で示されるステージは、命令デコーダDCによる命令デコード、および、レジスタファイルRFを構成する複数の汎用レジスタのいずれかより値を取り出すレジスタフェッチ処理を行うステージで、命令のオペレーションコード部を解読するデコーダDCと、複数の汎用レジスタで構成された汎用レジスタファイルRFとで構成されている。汎用レジスタファイルRFには、2つの出力が設けられており、一方の出力はパイプラインレジスタID/EXのS1に接続され、他方の出力はパイプラインレジスタID/EXのS2に接続されている。また、命令デコーダDCで解読された値もパイプラインレジスタID/EXの所定の箇所に格納される。
次に、EX(EXecute)で示されるステージは、算術論理演算ユニットALUによって、算術論理演算またはデータアドレス計算または分岐先の実効アドレスを計算する分岐先計算を行うステージで、算術論理演算ユニットALUの一方の入力は、パイプラインレジスタID/EXのS1の出力に接続され、他方の入力は、パイプラインレジスタID/EXのS2の出力に接続されている。また、算術論理演算ユニットALUは、パイプラインレジスタID/EXの所定の箇所に格納された、デコードされた命令の値によって制御され、算術論理演算ユニットALUの出力は、パイプラインレジスタEX/MEMのDの箇所に格納される。
次に、MEM(MEMory access)で示されるステージは、データメモリDMEMヘのメモリアクセス処理を行うステージで、パイプラインレジスタEX/MEMのDの箇所に格納されていた値は、データメモリDMEMの所定アドレスのメモリに格納されると共に、パイプラインレジスタMEM/WBの所定箇所に出力される。または、データメモリDMEMの所定アドレスに格納されていた値がパイプラインレジスタMEM/WBの所定箇所に格納される。
最後に、WB(Write Back)で示されるステージは、ビット演算または汎用レジスタへの書き込み処理または分岐処理を行うステージで、汎用レジスタへの書き込み処理の場合は、パイプラインレジスタMEM/WBの所定箇所に格納されていた値が、レジスタファイルRFの所定の汎用レジスタに格納される。但し、図では本発明に関する部分のみ図示しており、他の構成は図示を省略している。
ところで、プログラマブルコントローラに必要とされる機能の中には、データメモリDMEMの1ワード中のある1ビットの値を参照、更新したり、命令実行中に複数ワードのデータメモリDMEMの参照、更新を行うビット処理命令がある。このビット処理命令を実行するには複数のメモリアクセスサイクルが必要となるため、上記の6段パイプライン構造をそのまま用いた場合には、これらのビット処理命令を実行させることができない。そこで、この従来例では、ビット処理命令を処理するBPU(Bit Processing Unit)のブロックと、ビット処理演算により更新されるレジスタ:BITACC(Bit Accumulator)を有する構造となっている。
この6段パイプライン構造を持つプログラマブルコントローラでは、例えば、図24に示すように、PC:プログラムカウンタ更新、IF:命令フェッチ、ID:命令デコード、レジスタフェッチ、EX:算術論理演算、データアドレス計算、分岐先計算、MEM:メモリアクセス(リード/ライト)、WB:分岐、レジスタ書き込みのように、1つの命令を6つのパイプラインステージに分けて実行する。このような命令に加えて、プログラマブルコントローラに必要とされる命令として、データメモリ1ワード中のある1ビットの値を参照したり更新したりする“ビット処理命令”というものが存在する。ビット処理命令と呼ばれる命令には様々なものがあり、読み込んだデータメモリ1ワードのあるビットの状態によりプログラマブルコントローラ内部のレジスタ:BITACC(ビットアキュムレータ)を更新したり、このレジスタBITACCの更新に加えてデータメモリ中のある1ビットの値も更新する命令が存在する。このビット処理命令では、ビット処理命令以外の命令がレジスタ書き込みなどを行っていたWBステージに相当する部分に、MEMステージで読み込んだデータメモリの値によりBITACCの更新やデータメモリ中のある1ビットの値の更新、データメモリ書き込み等の動作を行うBPUステージが存在する。
特許第3000857号公報 特開2001−14161号公報
プログラマブルコントローラを実現するにあたり、上記6段パイプライン構造を採用することで高速化を図ることができる。半導体プロセスの微細化とそれに伴う論理回路の動作の高速化が進展するに従い、6段パイプライン構造のプログラマブルコントローラの動作の高速化が進んできたが、命令メモリやデータメモリへのアクセス動作がパイプライン構造の動作の高速化のボトルネックになっている。命令メモリやデータメモリはパイプライン構造を持つ専用ハードウェア(プロセッサ)とは別チップのメモリ素子であり、メモリアクセスの際には各デバイスのI/Oパッドやこれらのデバイスを実装したプリント基板上の配線を経由してデータのやり取りを行うため、同じ半導体チップ内でのアクセスに比べて時間がかかる。半導体素子の種類によりアクセス時間も変動するが、一例ではプロセッサ内のプログラムカウンタPCの値の変化がチップ外に伝播するのに必要な時間は5ns程度かそれ以上の時間が必要となり、プロセッサと外部メモリとの間のアクセスに10〜15ns程度の時間が必要になる。例えばここでパイプライン1ステージの時間が30nsという構成にした場合、プロセッサと外部メモリとの間のアクセスの時間はプリント基板上の配線などの伝播経路を通過するために15ns程度の時間が必要になるため、メモリ素子もアクセス時間が15nsかそれ以下の高速なデバイスが必要になる。更にパイプライン1ステージの時間が15nsという構成を考えた場合は、メモリアクセスの際に信号が伝播経路を通過するだけで1ステージ分の時間を使い果たしてしまい、メモリ素子にはアクセス時間0nsなど現実には有り得ない性能を要求することになる。
本発明はこのような点に鑑みてなされたものであり、その目的とするところは、パイプライン構造のプログラマブルコントローラにおいて、命令メモリやデータメモリへのアクセス動作を複数のパイプラインステージで実行可能とすることにより、命令メモリやデータメモリがアクセス時間の比較的遅い外付けメモリで構成されている場合でも、パイプラインステージ1ステージの時間を短くすることを可能とし、高速な動作を実現することにある。
本発明によれば、上記の課題を解決するために、図1に示すように、基本的なビット処理演算と複数ビットの応用処理を行なうプログラマブルコントローラにおいて、プログラムカウンタの更新を行なうパイプラインステージと、命令メモリから命令を取り出す命令フェッチ処理を行なう複数のパイプラインステージと、命令デコードおよび汎用レジスタから値を取り出すレジスタフェッチ処理を行なうパイプラインステージと、算術論理演算またはデータアドレス計算または分岐先の実効アドレス計算を行なうパイプラインステージと、データメモリへのアクセス処理または分岐処理を行なう複数のパイプラインステージと、ビット処理演算または前記汎用レジスタへの書き込み処理を行なうパイプラインステージで構成されるパイプライン構造のプログラマブルコントローラであって、前記命令メモリとデータメモリはデュアルポートメモリで構成され、これらのメモリアクセスの時間がパイプラインの1ステージ分の時間よりも長いことを特徴とするものである。
請求項1の発明により、例えばパイプラインステージ2サイクル分の時間をメモリアクセスに用いることができるようになり、パイプラインステージ1サイクルの時間の短縮に対応できるようになる。また、パイプラインステージ1サイクルの時間が比較的長い場合は、メモリアクセス時間が短い高価なメモリを使用しなくても、パイプライン構造の専用ハードウェアを構成することが可能になる。
請求項2の発明により、プログラマブルコントローラ特有の1ビットフラグによる命令の実行/非実行の制御を、ハードウェアで行なうことができるようになる。
請求項3の発明により、レジスタ間演算の結果がレジスタファイルに書き込まれるのを待つことなく、そのレジスタの値を参照する後続命令を実行することが可能となる。
請求項4の発明により、先行するLOAD命令で更新されるレジスタを参照する命令を実行する際にレジスタ更新の完了を待つことにより、矛盾なく命令を実行することができる。
請求項5の発明により、命令実行条件により命令の実行/非実行が決定される命令を実行する際、命令実行条件を構成する複数のフラグのうち特に値の更新が遅いビット処理演算命令により更新されるフラグにより命令実行条件が変化する場合にも、命令実行条件が確定するのを待ってから該当命令を実行するため、矛盾なく命令を実行することができる。
請求項6の発明により、パイプラインステージ1サイクル分の時間内に演算を終えることができない命令も実行することが可能になる。
請求項7の発明により、パイプラインステージ1サイクル分の時間内に演算を終えることができない命令に実行/非実行の条件が存在して、その条件が非実行である場合に該当命令を実行せずに直ぐに後続命令を実行することにより、命令実行の速度低下を防ぐことができる。
請求項8の発明により、分岐命令実行時に分岐条件が成立した場合に、既にパイプライン内に投入されている無効な命令を非実行にすることができ、実行してはならない命令が実行されてしまうことを防ぐことができる。
以下、本発明を実施するための最良の形態を実施例1〜8として説明する。実施例1〜8はそれぞれ請求項1〜8の構成に対応している。
(実施例1)
図1に本発明の実施例1の構成を示す。従来例(図23)に対して変更された箇所は、命令メモリIMEMとデータメモリDMEMがデュアルポートメモリになったことと、そのメモリIMEM,DMEMにパイプライン構造の専用ハードウェア(プロセッサ)からアクセスするために、命令メモリインターフェース回路IMEMIFとデータメモリインターフェース回路DMEMIFが追加されたことである。
また、従来例では命令フェッチIFとメモリアクセスMEMは各々1ステージで実行していたが、本発明では複数のパイプラインサイクルで実行しており、本実施例では3サイクルを用いてメモリアクセスを実行する。つまり、外付けメモリで構成される命令メモリIMEMやデータメモリDMEMへのアクセス動作がパイプライン構造の動作の高速化のボトルネックになるという問題を解決するために、これらメモリアクセスを複数のパイプラインステージで実行する構成を採用する。具体的には、デュアルポートメモリで構成した命令メモリIMEMやデータメモリDMEMに対して、2種類のメモリアクセスを半周期ずらせたタイミングで同時に発生させることにより、メモリアクセスをパイプラインステージ2サイクル分の時間で実行するものである。これにより、パイプラインステージの1ステージの時間がより短い構成の場合でも、クロックの比較的遅い外付けメモリへのアクセスを可能にすることができる。
図2に実施例1の動作タイミング図を示す。命令メモリIMEMの読み出しはIF0,IF1,IF2のパイプラインステージ3サイクルで行う。横軸の時間はパイプラインステージの区切りを示しており、時刻1の命令1のPCステージの終了時に、パイプラインレジスタPC/IF上のプログラムカウンタPCは、命令1のアドレスを示す。その後、命令メモリインターフェース回路IMEMIFにプログラムカウンタPCの値が読み込まれて、次の時刻2から命令メモリIMEMのAポートを用いて命令読み出しが行われ、時刻2〜4の2サイクル分の時間をかけて読み出しアクセスを行い、時刻4にパイプラインレジスタIF/ID上の命令レジスタIRに命令1が読み出される。パイプライン動作はパイプライン1ステージ単位で行われ、時刻1で命令1のPCステージ(プログラムカウンタ更新)が終了した1サイクル後の時刻2には命令2のPCステージが終了し、これも命令メモリインターフェース回路IMEMIFに読み込まれて、先ほどの時刻2から命令メモリIMEMのAポートで命令読み出しが開始された1サイクル後の時刻3から、命令メモリIMEMのBポートを用いて命令読み出しが行われる。図2に示すように、命令メモリIMEMのAポートとBポートの読み出しは、それぞれパイプラインステージ2サイクル分の時間をかけて行われ、その実行は1サイクルの時間のずれを持たせるため、互い違いにAポートとBポートの読み出し動作が行われることになる。
図3に図1の命令メモリインターフェース回路IMEMIF周辺の詳細図を示す。命令メモリインターフェース回路IMEMIFは、パイプライン構造の専用ハードウェア(プロセッサ)からはプログラムカウンタPCの値を命令メモリIMEMのアドレスとして受け取り、命令メモリIMEMから読み出した値はデータ出力ポートDOから出力してパイプラインレジスタIF/ID上の命令レジスタIRに書き込まれる。また、命令メモリIMEMはAポートのアドレス入力AAD,リード要求ARD,データ出力ADO、およびBポートのアドレス入力BAD,リード要求BRD,データ出力BDOを持ち、命令メモリインターフェース回路IMEMIFもそれらに対応したポートを持つ。
図4に図3の命令メモリインターフェース回路IMEMIFの内部構成を示す。内部には幾つかのレジスタが存在し、これらはすべて同じクロック信号で駆動されているが、図が煩雑になるためクロック信号およびリセット信号は省略する。内部のレジスタはその大半がクロック信号CLKの立ち上がりエッジで動作するが、制御信号SELはクロック信号CLKの立ち下がりエッジで動作し、この信号は命令メモリIMEMのAポートとBポートのどちらを用いるのかを示すために用いる。制御信号SELはクロック信号CLKの立下りエッジごとに自分自身の値を反転させる制御信号で、この値が‘0’の時は命令メモリIMEMのAポートを、‘1’の時はBポートを用いる。
図5に命令メモリインターフェース回路IMEMIFの動作タイミング図を示す。時刻1の命令1のPCステージの終了時にプログラムカウンタPCには命令1のアドレス1が現れ、これが次のクロックの立ち上がりエッジのタイミングの時刻2にAポート用アドレスAADに書き込まれる。プログラムカウンタPCの値は制御信号SELの値が‘0’の時にはAADに、制御信号SELの値が‘1’の時はBADに書き込まれる。また、リード要求信号ARD、BRDにも同様にRDの値が書き込まれるが、命令メモリIMEMは本実施例では常に読み出し動作を行うので、図4に示すように、読み出し要求を示す‘1’が命令メモリインターフェース回路IMEMIFの外部から与えられている。
メモリアクセスはパイプライン2サイクル分の時間をかけて行われ、命令1の読み出し動作は時刻2〜4にかけて行われ、実際にメモリのAポートから読み出し値が出力されるのは時刻3.5あたりから時刻4を過ぎたあたりである。また、命令2の読み出し動作は時刻3〜5にかけて行われ、実際にメモリのBポートから読み出し値が出力されるのは時刻4.5あたりから時刻5を過ぎたあたりである。これらのAポートからの出力とBポートからの出力は図4に示すように制御信号SELで制御されたセレクタで選択され、どちらか片方の値がDOポートから出力され、パイプラインレジスタIF/ID上の命令レジスタIRに書き込まれる。
更に図6に図1のデータメモリインターフェース回路DMEMIF周辺の詳細図を示す。データメモリインターフェース回路DMEMIFはパイプライン構造の専用ハードウェア(プロセッサ)からはメモリアドレスADDRとデータメモリ書き込み値WTDTとリード要求RDとライト要求WTを受け取り、データメモリDMEMから読み出した値はデータ出力ポートDOから出力してパイプラインレジスタMEM/WBの所定の場所に書き込まれる。また、データメモリDMEMはAポートのアドレス入力AAD,リード要求ARD,ライト要求AWT,データ入力ADI,データ出力ADO、およびBポートのアドレス入力BAD,リード要求BRD,ライト要求BWT,データ入力BDI,データ出力BDOを持ち、データメモリインターフェース回路DMEMIFもそれらに対応したポートを持つ。
図7に図6のデータメモリインターフェース回路DMEMIFの内部構成を示す。基本的に図4の命令メモリインターフェース回路IMEMIFと同様の動作を行う回路で、プログラムカウンタPCから入力された値をAADとBADに向けて互い違いに出力した動作を、ADDR,WTDT,RD,WTで行うように拡張している。
また、図8にデータメモリインターフェース回路DMEMIFの動作タイミング図を示す。ここで行っているメモリアクセス動作は時刻1にアドレス1番地からデータ読み出しを開始し、実際にデータメモリDMEMへのアクセスは時刻2〜4の2サイクルで行われるという1番目の命令に続き、アドレス2番地から読み出し、アドレス3番地への書き込み、アドレス4番地への書き込み、メモリアクセスは非実行(NOP)、アドレス6番地から読み出しという命令を順に実行するものである。ここではメモリの読み出し要求RDと書き込み要求WTはそれぞれ‘1’の時に有効であるとする。
(実施例2)
図9に実施例2の構成を示す。本実施例では、ビット処理演算の命令で更新されるレジスタ:BITACC(ビットアキュムレータ)を有し、前記レジスタの値により後続の命令を非実行にできる機能を有することを特徴とする。
図9において、命令を非実行にするための制御信号EX_HZDは、ハザード検出回路HDUで生成され、本実施例ではビット処理演算命令で更新されるレジスタBITACCと、EXステージに投入された命令のデコード結果を元に制御信号EX_HZDが生成される。すなわち、EXステージに投入された命令がレジスタBITACCの値により非実行になる種類の命令の場合には、レジスタBITACCの値を参照してEX_HZDに‘1’を出力し、EXステージで命令のデコード結果を書き換えることによりその命令を非実行にする。
図9のIDステージで命令がデコーダDCにより解読され、各種制御信号に展開されてパイプラインレジスタID/EX上の所定の位置に書き込まれる。さらにこれらの制御信号のうち、MEMステージ、WBステージで用いられるものはパイプラインレジスタEX/MEMに転送されるが、制御信号EX_HZDが‘1’であると、この制御信号EX_HZDにより制御されたマルチプレクサMUXにより、制御信号のうちデータメモリDMEMへの書き込みとレジスタファイルRFへの書き込みを示す制御信号を、これらのデータメモリDMEMやレジスタファイルRFに書き込まないという意味の‘0’に置き換える。ALUで演算が実行されても、その結果がデータメモリDMEMやレジスタファイルRFに書き込まれなければ何も演算は行われなかったことと同じなので、この制御信号の書き換えにより、EXステージで命令を非実行にする機能を実現する。
(実施例3)
図10に実施例3の構成を示す。本実施例では、算術論理演算を行なうALUの引数を、汎用レジスタ(レジスタファイルRF)から読み出した値だけではなく、パイプライン内に存在している汎用レジスタに書き込む前の値を引数として用いることを可能としたことを特徴とする。
命令がパイプライン実行されている場合には、ある命令が読み出すレジスタの値が先行する命令により更新される場合には、先行する命令がレジスタの更新を終えてからレジスタの値を読み出さないと、命令実行を正しく行うことができない。このレジスタ更新の矛盾を解消するためには、先行する命令がレジスタファイルへの書き込みを終えるまでレジスタ読み出しを待つ必要があり、命令実行速度を低下させる原因になる。
この問題を解決するため、自命令が参照するレジスタを先行する命令が更新する場合、まだレジスタファイルに書き込んでいないパイプライン構造内を伝播している値をレジスタファイルから読み出した値の代わりに用いることができるよう、算術論理演算を行うALUの引数を選択するデータパスを設ける。
図10ではパイプライン構造のうち、本実施例の動作に関係する部分のみを示し、ここではALUの2つの引数のうち片方に関連する部分のみを示す。これまで述べた構成では、例えば図1や図9に示すように、ALUの引数はレジスタファイルRFから読み出されてパイプラインレジスタID/EXの所定の位置(S1又はS2)に書き込まれたものを使用していたが、この構成では先行する命令のレジスタファイルRFへの書き込みが完了しないとレジスタ読み出しが出来ないため、命令実行を待たせる必要があった。そこで、図10に示すように元のパイプラインレジスタID/EX上の所定の位置の値だけではなく、パイプラインレジスタEX/MEMやMEM/WB(あるいはMEMステージのシフトレジスタSR)上に存在するレジスタファイルRFに書き込む前の値もALUの引数として使用するためのデータパスを設ける。実際にどの値をALUの引数として用いるかは、EXステージにある命令がどのレジスタの値を読み出すのかと、先行する命令がどのレジスタに値を書き込む命令なのかを示す制御情報を参照してデータセレクタSRCFBにより決定される。
図11に実施例3の動作タイミング図を示す。ここでは図示した3つの命令が順に実行される様子を示しているが、命令1はレジスタR1とR2の論理積(AND)をレジスタR3に格納し、命令2はレジスタR1とR2の論理和(OR)をレジスタR4に格納する命令であり、命令3はレジスタR3とR4の論理積(AND)をレジスタR5に格納するという命令であるから、命令3は引数としてレジスタR3とR4の値を必要とし、これらのレジスタR3,R4はそれぞれ先行する命令1と命令2により更新され、実際にレジスタファイルRFに書き込まれるのはそれぞれ時刻10と時刻11のタイミングになる。しかし、図10に示したデータパスを用いることにより、パイプラインレジスタEX/MEMやMEM/WB(あるいはMEMステージのシフトレジスタSR)上を伝播している値をデータセレクタSRCFBを介してALUの引数として用いることができるため、時刻7から始まる命令3のEXステージにおいて命令1と命令2によりレジスタR3,R4に書き込まれる値を使用することが可能となり、命令3をすぐに実行することが可能となる。
(実施例4)
図12に実施例4の構成を示す。本実施例では、データメモリDMEMから値を読み込むLOAD命令よりも後に実行される命令が、前記LOAD命令で更新されるレジスタの値を参照する命令である場合に、データメモリDMEMからその値が読み出されるまで命令の実行を待たせる機能を有することを特徴とする。
上述の実施例3の構成により、先行する命令がレジスタファイルRFに値を書き込むのを待たずに命令を実行することが可能になったが、先行する命令がデータメモリDMEMから値を読み込むLOAD命令の場合にはレジスタファイルRFに書き込む値はデータメモリDMEMから読み出すまではパイプライン構造内には存在しないため、実施例3で設けたデータパスを用いて命令実行を行うことはできない。この問題を解決するため、自命令が参照するレジスタを更新する先行命令がLOAD命令である場合は、必要な値がデータメモリDMEMから読み出されてレジスタファイルRFに書き込まれるまで命令実行を停止させる機能を持たせる。
図12の構成では、LOAD命令で更新されるレジスタの値を後続命令が参照する場合に、その後続命令の実行をレジスタへの書き込みが完了するまで待たせるという動作を実現するために、PC_HZD,IF_HZD,ID_HZDの3つの制御信号を生成する。これら制御信号はハザード検出回路HDUで生成され、制御信号生成の元になるのは、命令レジスタIRに読み込まれた命令をデコーダDCにより解読した情報と、さらに先行する命令のデコード結果がパイプラインレジスタ上を伝播している情報であり、これにより命令レジスタIRに読み込まれた命令が必要とするレジスタの値が先行するLOAD命令で更新されるかどうかを判別する。
実施例4の動作タイミング図を図13に示す。ここでは、LOAD命令とそのLOAD命令で更新されるレジスタR1を参照するOR命令が連続して実行される場合を示しており、後者のOR命令の実行をLOAD命令の完了まで待たせる動作を示している。時刻5に命令2(OR命令)が命令レジスタIRに読み込まれてデコードされた結果、この命令がレジスタR1とR2を参照することが判明し、更に先行するLOAD命令がレジスタR1を更新するという情報がパイプラインレジスタ上からもたらされることにより、ハザード検出回路HDUは3つの制御信号PC_HZD,IF_HZD,ID_HZDをそれぞれアクティブ(=‘1’)にする。MUXはマルチプレクサであり、PC_HZD,IF_HZD,ID_HZDの各制御信号を受けて、それぞれの制御信号が‘1’であれば‘1’側の入力を、制御信号が‘0’であれば‘0’側の入力を出力するように動作する。IF_HZD=‘1’になったことにより、パイプラインレジスタIF/ID上のプログラムカウンタIF_ID_PCはそのまま同じ値を保ち、また、パイプラインレジスタIF/ID上の命令レジスタIF_ID_IRは命令メモリIMEMから読み込んだ値にかかわらず、IF_ID_IRの値を以前のまま保ち続ける。また、PC_HZD=‘1’により、パイプラインレジスタPC/IF上のプログラムカウンタPC_IF_PCは本来のアドレス計算部ADDRCALCによる更新結果ではなく、パイプラインレジスタIF/ID上のプログラムカウンタIF_ID_PCに1を加えた値となる。またID_HZD=‘1’により、IDステージでパイプラインレジスタIF/ID上の命令レジスタIF_ID_IRをデコードした結果がNOP命令をデコードした結果に置き換えられる。
これら3つの制御信号PC_HZD,IF_HZD,ID_HZDが図13に示すタイミングで更新されることにより、命令1(LOAD命令)がデータメモリDMEMから読み込んだ値をレジスタR1に書き込む時刻10まで命令2(OR命令)の実行は停止させられ、矛盾なく命令1と命令2を実行することが可能となる。
(実施例5)
図14に実施例5の構成を示す。また、図15に本実施例の動作タイミング図を示す。本実施例は、ビット処理演算の命令で更新されるレジスタも含めて複数のフラグから構成される命令実行条件を備え、この命令実行条件により実行/非実行が決定される命令を持ち、命令実行条件により実行/非実行が決定される命令の前に実行条件を変更させるビット処理演算命令がパイプライン構造内で実行されている場合は、命令実行条件を変化させる命令であることを示す制御信号により、命令実行条件が確定するまで命令の実行を停止させる機能を有することを特徴とする。
ビット処理演算により更新されるレジスタ:BITACCや、算術論理演算実行時に更新されるエラーフラグ:ERRCNTRLやフラグセット命令で更新される強制実行フラグ:EXEFLGなど、複数のフラグから構成される命令実行条件を設定し、ある種の命令はこの命令実行条件が成立している場合のみ実行するという仕様を設ける。この場合、特にBITACCはパイプラインの最終段のステージで更新されるため、ビット処理命令の直後の後続命令などはBITACCの最終的な値が確定する前に実行されてしまうと、命令実行条件の仕様に反する命令実行が行われる可能性がある。
この問題を解決するため、BITACCを変更する命令がパイプライン構造内に投入されている場合にはその旨を示す制御信号をパイプラインレジスタ上に設け、自命令が命令実行条件によりその実行/非実行が決定される場合にはこの制御信号により先行する命令が命令実行条件を変更するかどうかを確認し、先行命令が命令実行条件を変更する場合は条件が確定するまで命令実行を待たせる機能を持たせる。
本実施例では実施例2で述べたビット処理演算命令で更新されるレジスタBITACCに加えて、エラーフラグ:ERRCNTRLと強制実行フラグ:EXEFLGの3つのフラグを元に、以下の命令実行条件を定義する。
Figure 2005242457
プログラマブルコントローラで実行する命令のうち幾つかの命令は上記の命令実行条件が成立した場合に実行される。この命令実行条件を構成する3つのフラグのうちERRCNTRLとEXEFLGは命令のEXステージで更新され、BITACCは命令のWBステージで更新される。命令実行条件を変更する命令の後ろに命令実行条件により実行/非実行が決定される命令が続く場合、BITACCが更新される場合はパイプライン動作の一番後ろのステージで更新されるため、命令実行条件が確定するまでは命令実行条件により実行/非実行が決定される命令の実行を停止させておく必要がある。
図14はそのために必要な命令実行に関する制御構造を示しており、実施例4のLOAD命令の後続命令の実行を停止させるために用いたPC_HZD,IF_HZD,ID_HZDをここでも同様に用いている。ハザード検出回路HDUにはパイプラインレジスタ上を伝播する、該当命令がBITACCを更新する命令であることを示す制御信号が与えられ、これら制御信号と命令レジスタIRに読み込まれた命令をデコードした結果、これが命令実行条件により実行/非実行が決定される命令であることを示す情報を元に、PC_HZD,IF_HZD,ID_HZDを発生させる。
図15に実際に命令を実行している時の動作タイミング図を示しており、命令1がBITACCを更新する命令で、命令2が命令実行条件により実行/非実行が決定される命令である。命令1によりBITACCは時刻10に更新されるが、後続命令2は実施例4の場合と同様に図15に示すように実行が停止される。そして、命令実行条件が確定した時刻10の時点でEXステージが開始するようにパイプライン動作が再開するが、ここで図15に示すようにBITACCが‘0’になり、命令実行条件が成立しなくなった場合、実施例2の図9に示したEX_HZDにより、命令2の制御信号が書き換えられて無効化され、結果として命令2は非実行となる。
また、命令実行条件のうち、EXステージで更新されるEXEFLGが変化する場合の命令実行の様子を図16に示す。図16の命令1がEXEFLGを更新する命令で、命令2が命令実行条件により実行/非実行が決定される命令である。ここでは命令1が命令実行条件を更新した時刻6に後続の命令2のEXステージが開始し、ここでEX_HZDにより命令2を非実行にすることができるため、図15の場合のように命令の実行を停止させる制御は行わない。
(実施例6)
図17に実施例6の構成を示す。本実施例では、命令実行ステージ1サイクルの時間では演算が完了しない命令を実行するための専用の演算回路を備え、その命令を実行するときは演算が完了するまでパイプラインの動作を停止させることで命令実行ステージ1サイクルの時間では演算が完了しない命令の実行を可能とすることを特徴とする。
パイプラインステージ1段の時間を短くすることでパイプライン構造全体の動作の高速化を実現してきたが、逆にパイプライン1ステージの時間内に演算が完了する加算や減算などの単純な命令しか実行することができず、より演算に時間がかかる乗算や除算などの命令は実行できなくなる。
この問題を解決するため、パイプライン1ステージの時間内に演算が完了しない命令を実行するための専用の演算回路を設け、該当命令実行時にはパイプライン動作を停止させてこの専用の演算回路で命令実行を行い、演算が完了した時に演算結果を取り出してパイプライン動作を再開し、後続命令の実行を行うことができる機能を持たせる。
ここで、演算完了にパイプライン1サイクル以上の時間が必要な命令は幾つかあるが、本実施例では乗算命令を実行する場合を例に示す。図17において、乗算命令を実行する演算回路ブロックはMULTである。乗算命令以外の算術論理演算命令はALUで実行されるが、ALUの場合と同等の形式で引数を与えて結果を取り出すために、SUBALUというインターフェース回路を設ける。乗算を実行する演算回路MULTにはこのSUBALUを経由して引数を与える。乗算命令のEXステージが実行されると、SUBALUは演算回路MULTに対して引数S1とS2を与えると同時に、演算回路MULTの起動要求GOを発行する。また、SUBALUはハザード検出回路HDUに対してハザード発生要求信号HZD_RQ,HZD_RQ2を発行し、これに基づきハザード検出回路HDUはPC_HZD,IF_HZD,ID_HZDを生成して後続命令の実行を停止させる。
図18に実施例6の動作タイミング図を示す。図18の命令1が演算に時間がかかる乗算命令で、後続の命令2の実行を乗算が完了するまで停止させている様子を示している。ここで前述した制御信号のうちHZD_RQ2は、図18では図示していないが、IF_HZDを生成するための信号である。演算回路MULTはSUBALUから与えられる起動要求GOにより演算を開始するとDONE信号を立ち下げ、演算が完了するとDONE信号を‘1’に変化させて演算が完了したことをSUBALUに通知する。図18の例では2サイクルでDONE信号が‘1’に変化している場合を示す。その後、SUBALUはHZD_RQ,HZD_RQ2を通してPC_HZD等の制御信号を‘0’に戻して後続命令の実行を再開させ、制御信号WT_RQで演算回路MULTから得られた演算結果をALUからの出力と同様にパイプラインレジスタEX/MEMに書き込み、MULT命令はMEMステージの実行に移行する。
なお、図17では演算完了にパイプライン1サイクル以上の時間が必要な命令として乗算命令だけを取り上げたが、特に命令は1種類に限定されるものではなく、例えば除算など別の命令を実行する専用演算回路を併せ持つ構成を用いることも有り得る。その場合、SUBALUは命令の種類に応じて複数の専用演算回路のうち相応しいものを起動する起動制御もあわせて行う。
(実施例7)
図19に実施例7の構成を示す。本実施例では、命令実行ステージ1サイクルの時間では演算が完了しない命令の実行/非実行を決定するフラグを備え、このフラグの値が命令を非実行の場合は、命令実行ステージ1サイクルの時間では演算が完了しない命令を実行するための専用の演算回路を起動せずに、後続命令を待たせることなく実行可能とすることを特徴とする。
上述の実施例6の構成によりパイプライン1ステージの時間内に演算が完了しない命令も実行できるようになったが、複数のパイプラインサイクルを使って演算を行うため、この種類の命令実行にはそれ以外の命令実行時には無かったオーバーヘッドが発生する。また、この種類の命令が前記命令実行条件のように、あるフラグの値により命令の実行/非実行が決定される場合には、命令が非実行の場合にも専用演算回路を起動して演算を実行するが、その結果をレジスタファイルに書き戻すことを阻止して命令を非実行にするという構成では大きなオーバーヘッドが残ってしまう問題が発生する。
この問題を解決するため、パイプライン1ステージの時間内に演算が完了しない命令が、あるフラグの値により非実行であるという条件の場合には、専用演算回路を起動してパイプラインの動作を停止させるという制御を行わず、すぐに後続命令を実行することで高速動作の性能劣化を防ぐ機能を持たせる。
図19では、実施例6で述べた演算完了にパイプライン1サイクル以上の時間が必要な命令の実行/非実行を決定するフラグが存在する場合について示したもので、このフラグは実施例5で述べた複数のフラグから構成される命令実行条件の場合も考えられるが、ここでは簡単のため条件フラグFLAGがその役割を果たすものとする。乗算命令を実行する際はSUBALUが演算回路MULTに対して起動要求GOを発行し、実際の演算が開始されるが、本実施例の構成では条件フラグFLAGの値によっては起動要求を発行しない場合もある。そこで、条件フラグFLAGをSUBALUに入力し、専用演算回路MULTの起動制御の条件に用いている。
図20に実施例7の動作タイミング図を示す。図20において命令1は条件フラグFLAGを更新する命令、命令2は乗算命令であるとする。図20の時刻6の時点で命令1により条件フラグFLAGが更新され、MULT命令の実行条件が非実行に変化する。このため、SUBALUは図18のように専用演算回路MULTに対して起動要求GOを発行せずに、また、HZD_RQ,HZD_RQ2を発行して後続命令の実行を停止させることもなく順次命令の実行を継続する。ただ、乗算命令は非実行にする必要があるので、ハザード検出回路HDUに対して制御信号HZD_RQ3を発行してEX_HZD=‘1’に変化させ、乗算命令:命令2のEXステージを無効化する。
(実施例8)
図21に実施例8の構成を示す。また、図22に本実施例の動作タイミング図を示す。本実施例では、分岐命令実行時に分岐条件が成立した時に、パイプライン構造内に既に投入されている無効な命令を非実行にする機能を有することを特徴とする。
パイプライン動作を行う場合は命令メモリIMEMから読み込んだ命令を順次実行することが前提となるが、分岐命令はこの命令読み込みの連続性を乱す元になる。順次命令を読み込んで実行している際に分岐命令が実行され、かつ、分岐条件が成立した場合には分岐先のアドレスから命令を読み込んで実行する必要があり、その際はすでにパイプライン構造内に読み込まれて実行されつつある分岐命令の後続命令の実行を無効化しなければ、実行してはならない命令を実行してしまう問題が発生する。
この問題を解決するため、図21の構成では、分岐命令実行時に分岐条件が成立した場合は、既にパイプラインに投入されている無効な命令を非実行にできる機能を持たせている。
図22の命令1が分岐命令で、そのEXステージで分岐先アドレスの計算が行われ、分岐条件成立時には続くMEM0ステージでプログラムカウンタPCの更新が行われ、時刻7の時点で分岐先のアドレス(本例では100番地)がプログラムカウンタPCに格納される。つまり、図22に示した通り命令1から順に後続命令をパイプライン処理したとすると、命令1の次は分岐先の命令7を実行しなければならず、その間の命令2〜命令6は実行してはならない無効な命令となる。
そこで、これらの無効な命令を非実行にするために、図21に示した回路構成を用いる。図21に示した制御信号PC_HZD,IF_HZD,ID_HZD,EX_HZDは、これまでの説明で述べたもので、新たに示したPC_SELはプログラムカウンタPCの値を分岐命令のEXステージで計算した分岐先アドレスに更新するかどうかを選択する制御信号である。また、IF_NOPは命令レジスタIRの値を命令メモリIMEMから読み込んだ値ではなく、NOP命令の命令語で更新させる制御信号である。これらの制御信号を図22に示すように分岐命令が分岐処理を実行するMEM0ステージ以降に変化させることにより、後続の無効な命令を非実行にする。図22の命令2〜命令6の各ステージのうちグレーに着色したステージが非実行にされた部分となる。
本発明の実施例1の全体構成を示すブロック図である。 本発明の実施例1の動作タイミングを示す説明図である。 本発明の実施例1の命令メモリ関連部のブロック図である。 本発明の実施例1の命令メモリインターフェイスのブロック図である。 本発明の実施例1の命令メモリインターフェイスの動作タイミングを示す説明図である。 本発明の実施例1の命令メモリ関連部のブロック図である。 本発明の実施例1のデータメモリ関連部のブロック図である。 本発明の実施例1のデータメモリインターフェイスの動作タイミングを示す説明図である。 本発明の実施例2の全体構成を示すブロック図である。 本発明の実施例3の要部構成を示すブロック図である。 本発明の実施例3の動作タイミングを示す説明図である。 本発明の実施例4の全体構成を示すブロック図である。 本発明の実施例4の動作タイミングを示す説明図である。 本発明の実施例5の全体構成を示すブロック図である。 本発明の実施例5の動作タイミングを示す説明図である。 本発明の実施例5の動作タイミングを示す説明図である。 本発明の実施例6の全体構成を示すブロック図である。 本発明の実施例6の動作タイミングを示す説明図である。 本発明の実施例7の全体構成を示すブロック図である。 本発明の実施例7の動作タイミングを示す説明図である。 本発明の実施例8の全体構成を示すブロック図である。 本発明の実施例8の動作タイミングを示す説明図である。 6段パイプライン構造を有する従来例のブロック図である。 6段パイプライン構造を有する従来例の動作タイミングを示す説明図である。
符号の説明
PC プログラムカウンタ更新ステージ
IF 命令読み出しステージ
ID 命令解読ステージ
EX 命令実行ステージ
MEM メモリアクセスステージ
WB 結果書き込みステージ
IMEM 命令メモリ
DMEM データメモリ

Claims (8)

  1. 基本的なビット処理演算と複数ビットの応用処理を行なうプログラマブルコントローラにおいて、
    プログラムカウンタの更新を行なうパイプラインステージと、
    命令メモリから命令を取り出す命令フェッチ処理を行なう複数のパイプラインステージと、
    命令デコードおよび汎用レジスタから値を取り出すレジスタフェッチ処理を行なうパイプラインステージと、
    算術論理演算またはデータアドレス計算または分岐先の実効アドレス計算を行なうパイプラインステージと、
    データメモリへのアクセス処理または分岐処理を行なう複数のパイプラインステージと、
    ビット処理演算または前記汎用レジスタへの書き込み処理を行なうパイプラインステージで構成されるパイプライン構造のプログラマブルコントローラであって、
    前記命令メモリとデータメモリはデュアルポートメモリで構成され、これらのメモリアクセスの時間がパイプラインの1ステージ分の時間よりも長いことを特徴とするプログラマブルコントローラ。
  2. ビット処理演算の命令で更新されるレジスタを有し、前記レジスタの値により後続の命令を非実行にできる機能を有することを特徴とする請求項1記載のプログラマブルコントローラ。
  3. 算術論理演算を行なうALUの引数として、汎用レジスタから読み出した値に代えて、パイプライン内に存在している汎用レジスタに書き込む前の値を引数として選択できる機能を有することを特徴とする請求項1または2に記載のプログラマブルコントローラ。
  4. データメモリから値を読み込むLOAD命令よりも後に実行される命令が、前記LOAD命令で更新されるレジスタの値を参照する命令である場合に、データメモリからその値が読み出されるまで命令の実行を待たせる機能を有することを特徴とする請求項1〜3のいずれかに記載のプログラマブルコントローラ。
  5. ビット処理演算の命令で更新されるレジスタも含めて複数のフラグから構成される命令実行条件を備え、この命令実行条件により実行/非実行が決定される命令を持ち、命令実行条件により実行/非実行が決定される命令の前に命令実行条件を変更させるビット処理演算命令がパイプライン構造内で実行されている場合は、命令実行条件を変化させる命令であることを示す制御信号により、命令実行条件が確定するまで命令の実行を停止させる機能を有することを特徴とする請求項2〜4のいずれかに記載のプログラマブルコントローラ。
  6. 命令実行ステージ1サイクルの時間では演算が完了しない命令を実行するための専用の演算回路を備え、その命令を実行するときは演算が完了するまでパイプラインの動作を停止させる機能を有することを特徴とする請求項1〜5のいずれかに記載のプログラマブルコントローラ。
  7. 命令実行ステージ1サイクルの時間では演算が完了しない命令の実行/非実行を決定するフラグを備え、このフラグの値が命令を非実行の場合は命令実行ステージ1サイクルの時間では演算が完了しない命令を実行するための専用の演算回路を起動せずに、後続命令を待たせることなく実行する機能を有することを特徴とする請求項6に記載のプログラマブルコントローラ。
  8. 分岐命令実行時に分岐条件が成立した時に、パイプライン構造内に既に投入されている無効な命令を非実行にする機能を有することを特徴とする請求項1〜7のいずれかに記載のプログラマブルコントローラ。
JP2004048040A 2004-02-24 2004-02-24 プログラマブルコントローラ Pending JP2005242457A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004048040A JP2005242457A (ja) 2004-02-24 2004-02-24 プログラマブルコントローラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004048040A JP2005242457A (ja) 2004-02-24 2004-02-24 プログラマブルコントローラ

Publications (1)

Publication Number Publication Date
JP2005242457A true JP2005242457A (ja) 2005-09-08

Family

ID=35024169

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004048040A Pending JP2005242457A (ja) 2004-02-24 2004-02-24 プログラマブルコントローラ

Country Status (1)

Country Link
JP (1) JP2005242457A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103262029A (zh) * 2010-12-10 2013-08-21 株式会社日立制作所 可编程控制器

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103262029A (zh) * 2010-12-10 2013-08-21 株式会社日立制作所 可编程控制器

Similar Documents

Publication Publication Date Title
JP2810068B2 (ja) プロセッサシステム、コンピュータシステム及び命令処理方法
TWI541658B (zh) 資料處理裝置及半導體積體電路裝置
US20020026545A1 (en) Data processing apparatus of high speed process using memory of low speed and low power consumption
JP2001092662A (ja) プロセッサコア及びこれを用いたプロセッサ
JP3790626B2 (ja) デュアルワードまたは複数命令をフェッチしかつ発行する方法および装置
JPH05342084A (ja) データ記憶装置及びデータ記憶方法
US20070260857A1 (en) Electronic Circuit
JP2008299729A (ja) プロセッサ
JP2005242457A (ja) プログラマブルコントローラ
US6266764B1 (en) Program controller for switching between first program and second program
JP3461887B2 (ja) 可変長パイプライン制御装置
JP2001014161A (ja) プログラマブルコントローラ
JP2636821B2 (ja) 並列処理装置
JP3147884B2 (ja) 記憶装置及び情報処理装置
JP7384374B2 (ja) 中央演算処理装置
JP3405106B2 (ja) プログラマブルコントローラ
JP3102399B2 (ja) データ処理装置及び方法
US7124281B1 (en) Processing system having sequential address indicator signals
JP2002268876A (ja) パイプライン処理方法、及び情報処理装置
JP2001034474A (ja) データ処理装置及びデータ処理方法
JP2785820B2 (ja) 並列処理装置
JP3063593B2 (ja) プログラマブルコントローラ
KR100515039B1 (ko) 조건부 명령어를 고려한 파이프라인 상태 표시 회로
JP2004288203A (ja) プロセッサコア及びこれを用いたプロセッサ
JP2005134987A (ja) パイプライン演算処理装置