JPH07200291A - 可変長パイプライン制御装置 - Google Patents
可変長パイプライン制御装置Info
- Publication number
- JPH07200291A JPH07200291A JP6000255A JP25594A JPH07200291A JP H07200291 A JPH07200291 A JP H07200291A JP 6000255 A JP6000255 A JP 6000255A JP 25594 A JP25594 A JP 25594A JP H07200291 A JPH07200291 A JP H07200291A
- Authority
- JP
- Japan
- Prior art keywords
- stage
- instruction
- memory
- memory access
- data
- 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.)
- Granted
Links
Landscapes
- Advance Control (AREA)
Abstract
(57)【要約】
【目的】 パイプライン制御装置を備えたマイクロプロ
セッサに関し、プロセッサチップの内部と外部のインタ
フェースにおける信号遅延がパイプライン処理における
外部メモリアクセス時の実効アクセスタイムに影響を及
ぼさないことを可能にすることを目的とする。 【構成】 外部メモリに対する命令フェッチ時又はオペ
ランドデータのアクセス時には、命令フェッチステージ
又はメモリアクセスステージが分割され、PC_Fd2
14又はPC_Md215がパイプラインに挿入され
る。この結果、分割された命令フェッチステージが実行
されている命令サイクルにおいて、他のステージの処理
がウエイト状態になる時間が短縮される。一方、内部メ
モリに対する命令フェッチ時又はオペランドデータのア
クセス時には、命令フェッチステージ又はメモリアクセ
スステージは分割されず、パイプライン処理において、
PC_Fd214又はPC_Md215はスキップされ
る。この結果、分岐発生時のパイプライン処理のキャン
セルによるペナルティが低減される。
セッサに関し、プロセッサチップの内部と外部のインタ
フェースにおける信号遅延がパイプライン処理における
外部メモリアクセス時の実効アクセスタイムに影響を及
ぼさないことを可能にすることを目的とする。 【構成】 外部メモリに対する命令フェッチ時又はオペ
ランドデータのアクセス時には、命令フェッチステージ
又はメモリアクセスステージが分割され、PC_Fd2
14又はPC_Md215がパイプラインに挿入され
る。この結果、分割された命令フェッチステージが実行
されている命令サイクルにおいて、他のステージの処理
がウエイト状態になる時間が短縮される。一方、内部メ
モリに対する命令フェッチ時又はオペランドデータのア
クセス時には、命令フェッチステージ又はメモリアクセ
スステージは分割されず、パイプライン処理において、
PC_Fd214又はPC_Md215はスキップされ
る。この結果、分岐発生時のパイプライン処理のキャン
セルによるペナルティが低減される。
Description
【0001】
【産業上の利用分野】本発明は、コンピュータシステム
における中央処理装置に係り、更に詳しくは、パイプラ
イン制御装置を備えたマイクロプロセッサに関する。
における中央処理装置に係り、更に詳しくは、パイプラ
イン制御装置を備えたマイクロプロセッサに関する。
【0002】
【従来の技術及び発明が解決しようとする課題】近年、
RISC(限定命令セットコンピュータ)方式に基づい
て動作するプロセッサ等において、パイプラインアーキ
テクチャを有するものが多い。このようなパイプライン
プロセッサは、命令フェッチモジュール、命令デコード
モジュール、命令実行モジュール、メモリアクセスモジ
ュール、及びライトバックモジュールのそれぞれが、パ
イプラインを構成している。そして、1つの命令サイク
ルにおいて、それぞれのモジュールが、別々の命令に対
する処理を、並列に実行することができる。
RISC(限定命令セットコンピュータ)方式に基づい
て動作するプロセッサ等において、パイプラインアーキ
テクチャを有するものが多い。このようなパイプライン
プロセッサは、命令フェッチモジュール、命令デコード
モジュール、命令実行モジュール、メモリアクセスモジ
ュール、及びライトバックモジュールのそれぞれが、パ
イプラインを構成している。そして、1つの命令サイク
ルにおいて、それぞれのモジュールが、別々の命令に対
する処理を、並列に実行することができる。
【0003】図13に、このようなパイプラインプロセ
ッサにおけるパイプライン制御装置の一部の構成例を示
す。この構成は、パイプライン制御装置のうちの、プロ
グラムカウンタのパイプライン(PCパイプ)に関する
ものである。
ッサにおけるパイプライン制御装置の一部の構成例を示
す。この構成は、パイプライン制御装置のうちの、プロ
グラムカウンタのパイプライン(PCパイプ)に関する
ものである。
【0004】アダー1301(以下、PC_adder
1301と呼ぶ)により所定の初期値から順次インクリ
メントされるプログラムカウンタ値は、アンドゲート1
307〜1310を介して入力するクロックCLKに同
期し、命令フェッチステージプログラムカウンタ値保持
部1302(以下、PC_IF1302と呼ぶ)、命令
デコードステージプログラムカウンタ値保持部1303
(以下、PC_ID1303と呼ぶ)、命令実行ステー
ジプログラムカウンタ値保持部1304(以下、PC_
EX1304と呼ぶ)、メモリアクセスステージプログ
ラムカウンタ値保持部1305(以下、PC_MA13
05と呼ぶ)、及びライトバックステージプログラムカ
ウンタ値保持部1306(以下、PC_WB1306と
呼ぶ)に、順次流れてゆく。なお、PC_IF1302
から出力されるプログラムカウンタ値がPC_adde
r1301に入力されることによって、プログラムカウ
ンタ値が順次インクリメントされる。
1301と呼ぶ)により所定の初期値から順次インクリ
メントされるプログラムカウンタ値は、アンドゲート1
307〜1310を介して入力するクロックCLKに同
期し、命令フェッチステージプログラムカウンタ値保持
部1302(以下、PC_IF1302と呼ぶ)、命令
デコードステージプログラムカウンタ値保持部1303
(以下、PC_ID1303と呼ぶ)、命令実行ステー
ジプログラムカウンタ値保持部1304(以下、PC_
EX1304と呼ぶ)、メモリアクセスステージプログ
ラムカウンタ値保持部1305(以下、PC_MA13
05と呼ぶ)、及びライトバックステージプログラムカ
ウンタ値保持部1306(以下、PC_WB1306と
呼ぶ)に、順次流れてゆく。なお、PC_IF1302
から出力されるプログラムカウンタ値がPC_adde
r1301に入力されることによって、プログラムカウ
ンタ値が順次インクリメントされる。
【0005】この結果、特には図示しない命令フェッチ
モジュール、命令デコードモジュール、命令実行モジュ
ール、メモリアクセスモジュール、及びライトバックモ
ジュールのそれぞれは、上述のプログラムカウンタ値保
持部1302〜1306のそれぞれに保持されたプログ
ラムカウンタ値に対応する命令に関する処理を実行す
る。
モジュール、命令デコードモジュール、命令実行モジュ
ール、メモリアクセスモジュール、及びライトバックモ
ジュールのそれぞれは、上述のプログラムカウンタ値保
持部1302〜1306のそれぞれに保持されたプログ
ラムカウンタ値に対応する命令に関する処理を実行す
る。
【0006】ここで、命令フェッチモジュールは、メモ
リから命令をフェッチする。命令デコードモジュール
は、フェッチされた命令をデコードする。命令実行モジ
ュールは、デコードされた命令を実行する。メモリアク
セスモジュールは、オペランドデータを、メモリから読
み出し又はメモリに書き込む。ライトバックモジュール
は、上述のメモリアクセスによりメモリから得られるオ
ペランドデータ又は実行モジュールで処理されたオペラ
ンドデータをプロセッサチップ内部のレジスタに書き込
む。
リから命令をフェッチする。命令デコードモジュール
は、フェッチされた命令をデコードする。命令実行モジ
ュールは、デコードされた命令を実行する。メモリアク
セスモジュールは、オペランドデータを、メモリから読
み出し又はメモリに書き込む。ライトバックモジュール
は、上述のメモリアクセスによりメモリから得られるオ
ペランドデータ又は実行モジュールで処理されたオペラ
ンドデータをプロセッサチップ内部のレジスタに書き込
む。
【0007】なお、オアゲート1311〜1313と、
ウエイト信号if_wait、id_wait、ex_
wait、及びma_waitについては、後述する。
上述したようなプログラムカウンタのパイプラインは、
各モジュールにおいて例外処理が発生した場合などにお
いて、それぞれのモジュールにおけるプログラムカウン
タ値を保持するために必要とされる。
ウエイト信号if_wait、id_wait、ex_
wait、及びma_waitについては、後述する。
上述したようなプログラムカウンタのパイプラインは、
各モジュールにおいて例外処理が発生した場合などにお
いて、それぞれのモジュールにおけるプログラムカウン
タ値を保持するために必要とされる。
【0008】パイプライン制御装置には、図13に示さ
れるプログラムカウンタのパイプラインのほかに、命令
のオペランドを各モジュールに伝えるためのオペランド
のパイプラインなども設けられている。
れるプログラムカウンタのパイプラインのほかに、命令
のオペランドを各モジュールに伝えるためのオペランド
のパイプラインなども設けられている。
【0009】図14は、パイプライン処理の説明図であ
る。命令サイクル毎に、命令A〜Dに対応する各実行ス
テージが、特には図示しない命令フェッチモジュール、
命令デコードモジュール、命令実行モジュール、メモリ
アクセスモジュール、及びライトバックモジュールにお
いて並列に実行される様子が示されている。
る。命令サイクル毎に、命令A〜Dに対応する各実行ス
テージが、特には図示しない命令フェッチモジュール、
命令デコードモジュール、命令実行モジュール、メモリ
アクセスモジュール、及びライトバックモジュールにお
いて並列に実行される様子が示されている。
【0010】命令サイクル1においては、命令Aに対す
る命令フェッチステージ(以下、IFステージと呼ぶ)
が、特には図示しない命令フェッチモジュールにおいて
実行される。
る命令フェッチステージ(以下、IFステージと呼ぶ)
が、特には図示しない命令フェッチモジュールにおいて
実行される。
【0011】命令サイクル2においては、命令Aに対す
る命令デコードステージ(以下、IDステージと呼ぶ)
が、特には図示しない命令デコードモジュールにおいて
実行されると共に、命令Aに続く命令Bに対するIFス
テージが、命令フェッチモジュールにおいて実行され
る。
る命令デコードステージ(以下、IDステージと呼ぶ)
が、特には図示しない命令デコードモジュールにおいて
実行されると共に、命令Aに続く命令Bに対するIFス
テージが、命令フェッチモジュールにおいて実行され
る。
【0012】命令サイクル3においては、命令Aに対す
る命令実行ステージ(以下、EXステージと呼ぶ)が、
特には図示しない命令実行モジュールにおいて実行され
ると共に、命令Bに対するIDステージが命令デコード
モジュールにおいて実行され、命令Bに続く命令Cに対
するIFステージが、命令フェッチモジュールにおいて
実行される。
る命令実行ステージ(以下、EXステージと呼ぶ)が、
特には図示しない命令実行モジュールにおいて実行され
ると共に、命令Bに対するIDステージが命令デコード
モジュールにおいて実行され、命令Bに続く命令Cに対
するIFステージが、命令フェッチモジュールにおいて
実行される。
【0013】命令サイクル4においては、命令Aに対す
るメモリアクセスステージ(以下、MAステージと呼
ぶ)が、特には図示しないメモリアクセスモジュールに
おいて実行されると共に、命令Bに対するEXステージ
が、命令実行モジュールにおいて実行され、命令Cに対
するIDステージが命令デコードモジュールにおいて実
行され、命令Cに続く命令Dに対するIFステージが、
命令フェッチモジュールにおいて実行される。
るメモリアクセスステージ(以下、MAステージと呼
ぶ)が、特には図示しないメモリアクセスモジュールに
おいて実行されると共に、命令Bに対するEXステージ
が、命令実行モジュールにおいて実行され、命令Cに対
するIDステージが命令デコードモジュールにおいて実
行され、命令Cに続く命令Dに対するIFステージが、
命令フェッチモジュールにおいて実行される。
【0014】命令サイクル5においては、命令Aに対す
るライトバックステージ(以下、WBステージと呼ぶ)
が、特には図示しないライトバックモジュールにおいて
実行されると共に、命令Bに対するMAステージが、メ
モリアクセスモジュールにおいて実行され、命令Cに対
するEXステージが、命令実行モジュールにおいて実行
され、命令Dに対するIDステージが命令デコードモジ
ュールにおいて実行され、更に、特には図示しないが、
命令Dに続く命令Eに対するIFステージが、命令フェ
ッチモジュールにおいて実行される。
るライトバックステージ(以下、WBステージと呼ぶ)
が、特には図示しないライトバックモジュールにおいて
実行されると共に、命令Bに対するMAステージが、メ
モリアクセスモジュールにおいて実行され、命令Cに対
するEXステージが、命令実行モジュールにおいて実行
され、命令Dに対するIDステージが命令デコードモジ
ュールにおいて実行され、更に、特には図示しないが、
命令Dに続く命令Eに対するIFステージが、命令フェ
ッチモジュールにおいて実行される。
【0015】上述したパイプライン処理において、IF
ステージ及びMAステージが実行される場合に、メモリ
に対してデータのリード動作又はライト動作が行われ
る。このメモリには、プロセッサチップに内蔵されるも
のと、プロセッサチップの外部に接続されるものとがあ
る。以後、前者を内部メモリ、後者を外部メモリと呼ぶ
ことにする。
ステージ及びMAステージが実行される場合に、メモリ
に対してデータのリード動作又はライト動作が行われ
る。このメモリには、プロセッサチップに内蔵されるも
のと、プロセッサチップの外部に接続されるものとがあ
る。以後、前者を内部メモリ、後者を外部メモリと呼ぶ
ことにする。
【0016】外部メモリに対しては、一般的に、パイプ
ラインピッチ(=1命令サイクル)の時間間隔でアクセ
スをすることは困難であるため、メモリウエイトが発生
する。
ラインピッチ(=1命令サイクル)の時間間隔でアクセ
スをすることは困難であるため、メモリウエイトが発生
する。
【0017】図15は、メモリウエイトが発生した場合
のパイプライン処理の説明図である。IFステージでメ
モリウエイトが発生した場合の動作とMAステージでメ
モリウエイトが発生した場合の動作はほぼ同様であるた
め、図15では、説明の簡単のために、MAステージに
おいてのみメモリウエイトが発生した場合について示さ
れている。図15で、IFw、IDw、EXw、及びM
Awは、IFステージ、IDステージ、EXステージ、
及びMAステージのそれぞれの実行時に、メモリウエイ
トが発生していることを示している。
のパイプライン処理の説明図である。IFステージでメ
モリウエイトが発生した場合の動作とMAステージでメ
モリウエイトが発生した場合の動作はほぼ同様であるた
め、図15では、説明の簡単のために、MAステージに
おいてのみメモリウエイトが発生した場合について示さ
れている。図15で、IFw、IDw、EXw、及びM
Awは、IFステージ、IDステージ、EXステージ、
及びMAステージのそれぞれの実行時に、メモリウエイ
トが発生していることを示している。
【0018】命令Aに対するMAステージにおいてメモ
リウエイトが発生した場合、本来は命令サイクル4にお
いて終了するMAステージが、メモリウエイトが発生し
たことにより命令サイクル5においても繰り返される。
また、命令サイクル5において命令Aに対するMAステ
ージの実行が終了していないため、後続する命令ストリ
ームである命令B、C、Dのそれぞれについて、命令サ
イクル4で実行されたEXステージ、IDステージ、及
びIFステージが、命令サイクル5でも繰り返される。
この動作は、図13に示される構成において、以下のよ
うにして実現される。まず、ウエイト信号ma_wai
tが図15(a) に示されるタイミングでアサートされる
ことによって、アンドゲート1310がオフされると共
に、オアゲート1313、1312、及び1311を介
してアンドゲート1309、1308、及び1307が
オフされる。この結果、命令サイクル5において、クロ
ックCLKが入力されないことによって、PC_MA1
305、PC_EX1304、PC_ID1303、及
びPC_IF1302のそれぞれにおいて命令サイクル
4の状態が維持される。
リウエイトが発生した場合、本来は命令サイクル4にお
いて終了するMAステージが、メモリウエイトが発生し
たことにより命令サイクル5においても繰り返される。
また、命令サイクル5において命令Aに対するMAステ
ージの実行が終了していないため、後続する命令ストリ
ームである命令B、C、Dのそれぞれについて、命令サ
イクル4で実行されたEXステージ、IDステージ、及
びIFステージが、命令サイクル5でも繰り返される。
この動作は、図13に示される構成において、以下のよ
うにして実現される。まず、ウエイト信号ma_wai
tが図15(a) に示されるタイミングでアサートされる
ことによって、アンドゲート1310がオフされると共
に、オアゲート1313、1312、及び1311を介
してアンドゲート1309、1308、及び1307が
オフされる。この結果、命令サイクル5において、クロ
ックCLKが入力されないことによって、PC_MA1
305、PC_EX1304、PC_ID1303、及
びPC_IF1302のそれぞれにおいて命令サイクル
4の状態が維持される。
【0019】以上のようにして、パイプライン全体にお
いて1命令サイクルの時間長を有するウエイト時間が発
生し、その時間の分だけ現在実行されている処理が遅延
することになる。即ち、図14と図15を比較すると理
解されるように、例えば命令Bの実行は、メモリウエイ
トが発生していない場合は図14に示されるように命令
サイクル6で終了するのに対し、メモリウエイトが発生
している場合は図15に示されるように命令サイクル6
では終了せず命令サイクル7で終了する。
いて1命令サイクルの時間長を有するウエイト時間が発
生し、その時間の分だけ現在実行されている処理が遅延
することになる。即ち、図14と図15を比較すると理
解されるように、例えば命令Bの実行は、メモリウエイ
トが発生していない場合は図14に示されるように命令
サイクル6で終了するのに対し、メモリウエイトが発生
している場合は図15に示されるように命令サイクル6
では終了せず命令サイクル7で終了する。
【0020】IFステージでメモリウエイトが発生する
場合には、オアゲート11を介してウエイト信号if_
waitがアサートされることにより、アンドゲート1
307がオフされる。この結果、PC_IF1302に
おいてウエイト状態が発生する。なお、IDステージ及
びEXステージにおいても種々の原因によりウエイトが
発生する可能性がある。IDステージでウエイトが発生
する場合には、乗算命令のようなマルチサイクル命令が
実行される場合に発生するマルチサイクルウエイトがあ
る。この場合には、オアゲート12を介してウエイト信
号id_waitがアサートされることによって、アン
ドゲート1308及び1307がオフされる。この結
果、PC_ID1303及びPC_IF1302におい
て、ウエイト状態が発生する。また、EXステージでウ
エイトが発生する場合には、メモリからロードされたオ
ペランドが次の命令で演算されるような場合に発生する
ロードユーズインターロックがある。この場合には、オ
アゲート13を介してウエイト信号id_waitがア
サートされることによって、アンドゲート1309、1
308、及び1307がオフされる。この結果、PC_
EX1304、PC_ID1303及びPC_IF13
02において、ウエイト状態が発生する。
場合には、オアゲート11を介してウエイト信号if_
waitがアサートされることにより、アンドゲート1
307がオフされる。この結果、PC_IF1302に
おいてウエイト状態が発生する。なお、IDステージ及
びEXステージにおいても種々の原因によりウエイトが
発生する可能性がある。IDステージでウエイトが発生
する場合には、乗算命令のようなマルチサイクル命令が
実行される場合に発生するマルチサイクルウエイトがあ
る。この場合には、オアゲート12を介してウエイト信
号id_waitがアサートされることによって、アン
ドゲート1308及び1307がオフされる。この結
果、PC_ID1303及びPC_IF1302におい
て、ウエイト状態が発生する。また、EXステージでウ
エイトが発生する場合には、メモリからロードされたオ
ペランドが次の命令で演算されるような場合に発生する
ロードユーズインターロックがある。この場合には、オ
アゲート13を介してウエイト信号id_waitがア
サートされることによって、アンドゲート1309、1
308、及び1307がオフされる。この結果、PC_
EX1304、PC_ID1303及びPC_IF13
02において、ウエイト状態が発生する。
【0021】図16は、各命令のMAステージにおいて
メモリウエイトが発生した場合のパイプライン処理の説
明図である。この図から、パイプライン全体における処
理の遅延が更に顕著になることが理解される。
メモリウエイトが発生した場合のパイプライン処理の説
明図である。この図から、パイプライン全体における処
理の遅延が更に顕著になることが理解される。
【0022】ここで一般に、プロセッサチップの内部で
外部メモリをアクセスするためのオペランドアドレスが
発生され、そのアドレスを外部メモリが認識する時点ま
での間に、一定の遅延が生ずる。この遅延の値は、プロ
セッサチップの内部のバス及びそのバスの接続回路にお
ける信号の伝搬遅延、出力バッファ駆動回路における信
号の伝搬遅延、大きい容量を有するプロセッサチップの
外部ピンを駆動するための出力バッファ自身における信
号の処理遅延、及びプロセッサチップの外部のアドレス
バスが有する配線容量及び抵抗による信号の伝搬遅延の
総和である。
外部メモリをアクセスするためのオペランドアドレスが
発生され、そのアドレスを外部メモリが認識する時点ま
での間に、一定の遅延が生ずる。この遅延の値は、プロ
セッサチップの内部のバス及びそのバスの接続回路にお
ける信号の伝搬遅延、出力バッファ駆動回路における信
号の伝搬遅延、大きい容量を有するプロセッサチップの
外部ピンを駆動するための出力バッファ自身における信
号の処理遅延、及びプロセッサチップの外部のアドレス
バスが有する配線容量及び抵抗による信号の伝搬遅延の
総和である。
【0023】また、外部メモリがオペランドデータを出
力し、それがプロセッサチップ内で取り込まれるまでの
間にも、信号の伝搬遅延が生ずる。ここで、プロセッサ
チップの内部では、MAステージの終了時点までにアク
セスされたオペランドデータが確定しなければならな
い。従って、外部メモリがアクセスされるときの上述し
た遅延を、オペランドアドレスとオペランドデータのそ
れぞれに対して1/2命令サイクルずつと見積もると、
図17に示されるように、外部メモリアクセスに対する
各命令のMAステージにおいて1命令サイクルの時間長
を有するメモリウエイト(1ウエイト)が挿入されたと
しても、図17の(a) 及び(b) に示されるように、外部
メモリに対する実効アクセスタイムは1命令サイクルに
なってしまう。即ち、前述したように、外部のメモリに
対してはパイプラインピッチ(=1命令サイクル)の時
間間隔でアクセスをすることが困難であるゆえそれを回
避するためにMAステージにおいて1ウエイトが挿入さ
れるのにもかかわらず、上述の遅延の存在により、外部
メモリに対する実効アクセスタイムが1命令サイクルに
なってしまうのである。
力し、それがプロセッサチップ内で取り込まれるまでの
間にも、信号の伝搬遅延が生ずる。ここで、プロセッサ
チップの内部では、MAステージの終了時点までにアク
セスされたオペランドデータが確定しなければならな
い。従って、外部メモリがアクセスされるときの上述し
た遅延を、オペランドアドレスとオペランドデータのそ
れぞれに対して1/2命令サイクルずつと見積もると、
図17に示されるように、外部メモリアクセスに対する
各命令のMAステージにおいて1命令サイクルの時間長
を有するメモリウエイト(1ウエイト)が挿入されたと
しても、図17の(a) 及び(b) に示されるように、外部
メモリに対する実効アクセスタイムは1命令サイクルに
なってしまう。即ち、前述したように、外部のメモリに
対してはパイプラインピッチ(=1命令サイクル)の時
間間隔でアクセスをすることが困難であるゆえそれを回
避するためにMAステージにおいて1ウエイトが挿入さ
れるのにもかかわらず、上述の遅延の存在により、外部
メモリに対する実効アクセスタイムが1命令サイクルに
なってしまうのである。
【0024】そのため、従来は、更にメモリウエイトが
必要となる。即ち、例えば図18に示されるように、外
部メモリアクセスに対する各命令のMAステージにおい
て2ウエイトが挿入され、MAステージの時間長が3命
令サイクルとされることによって、図18の(a) 及び
(b) に示されるように、外部メモリに対して2命令サイ
クルの時間長を有する実効アクセスタイムが確保されて
いた。
必要となる。即ち、例えば図18に示されるように、外
部メモリアクセスに対する各命令のMAステージにおい
て2ウエイトが挿入され、MAステージの時間長が3命
令サイクルとされることによって、図18の(a) 及び
(b) に示されるように、外部メモリに対して2命令サイ
クルの時間長を有する実効アクセスタイムが確保されて
いた。
【0025】上述の事実は、MAステージにおいてのみ
ならず、IFステージにおいても同様に発生する。この
ように従来技術においては、プロセッサチップの内部と
外部のインタフェースにおける信号遅延が、パイプライ
ン処理における外部メモリアクセス時の実効アクセスタ
イムを減少させてしまうため、その減少分を補償するた
めのメモリウエイトが余分に必要となり、パイプライン
全体における処理の遅延を増加させてしまうという問題
点を有していた。
ならず、IFステージにおいても同様に発生する。この
ように従来技術においては、プロセッサチップの内部と
外部のインタフェースにおける信号遅延が、パイプライ
ン処理における外部メモリアクセス時の実効アクセスタ
イムを減少させてしまうため、その減少分を補償するた
めのメモリウエイトが余分に必要となり、パイプライン
全体における処理の遅延を増加させてしまうという問題
点を有していた。
【0026】本発明は、プロセッサチップの内部と外部
のインタフェースにおける信号遅延がパイプライン処理
における外部メモリアクセス時の実効アクセスタイムに
影響を及ぼさないことを可能にすることを目的とする。
のインタフェースにおける信号遅延がパイプライン処理
における外部メモリアクセス時の実効アクセスタイムに
影響を及ぼさないことを可能にすることを目的とする。
【0027】
【課題を解決するための手段】図1は、本発明のブロッ
ク図である。本発明は、まず、パイプラインの基幹を構
成するものとして、以下に示す命令フェッチ手段10
1、命令デコード手段102、命令実行手段103、メ
モリアクセス手段104、及びライトバック手段105
を有する。
ク図である。本発明は、まず、パイプラインの基幹を構
成するものとして、以下に示す命令フェッチ手段10
1、命令デコード手段102、命令実行手段103、メ
モリアクセス手段104、及びライトバック手段105
を有する。
【0028】即ち、命令フェッチ手段101は、他のス
テージと並列に実行することのできる命令フェッチステ
ージIFにおいて、メモリ手段から命令をフェッチす
る。命令デコード手段102は、他のステージと並列に
実行することのできる命令デコードステージIDにおい
て、フェッチされた命令をデコードする。
テージと並列に実行することのできる命令フェッチステ
ージIFにおいて、メモリ手段から命令をフェッチす
る。命令デコード手段102は、他のステージと並列に
実行することのできる命令デコードステージIDにおい
て、フェッチされた命令をデコードする。
【0029】命令実行手段103は、他のステージと並
列に実行することのできる命令実行ステージEXにおい
て、デコードされた命令を実行する。メモリアクセス手
段104は、他のステージと並列に実行することのでき
るメモリアクセスステージMAにおいて、命令実行ステ
ージEXにおいて計算されたアドレスに対してメモリ手
段にリード又はライトを行う。
列に実行することのできる命令実行ステージEXにおい
て、デコードされた命令を実行する。メモリアクセス手
段104は、他のステージと並列に実行することのでき
るメモリアクセスステージMAにおいて、命令実行ステ
ージEXにおいて計算されたアドレスに対してメモリ手
段にリード又はライトを行う。
【0030】そして、ライトバック手段105は、他の
ステージと並列に実行することのできるライトバックス
テージWBにおいて、メモリアクセスステージMAでメ
モリ手段から得られるオペランドデータ又は命令実行ス
テージEXにおいて処理されたオペランドデータをレジ
スタ手段に書き込む。
ステージと並列に実行することのできるライトバックス
テージWBにおいて、メモリアクセスステージMAでメ
モリ手段から得られるオペランドデータ又は命令実行ス
テージEXにおいて処理されたオペランドデータをレジ
スタ手段に書き込む。
【0031】次に、図1で、命令フェッチステージ分割
手段106は、命令フェッチステージIFを、命令アド
レスをメモリ手段に対して出力する命令アドレス出力ス
テージIFaと、メモリ手段から命令アドレスに対応す
る命令データを入力する命令データ入力ステージIFd
に分割する。今例えば、命令フェッチ手段101、命令
デコード手段102、命令実行手段103、メモリアク
セス手段104、及びライトバック手段105が使用す
るデータ(例えばプログラムカウンタ値)をそれぞれ順
次保持するものであって、命令フェッチステージデータ
保持手段(PC_IF202)、命令デコードステージ
データ保持手段(PC_ID203)、命令実行ステー
ジデータ保持手段(PC_EX204)、メモリアクセ
スステージデータ保持手段(PC_MA205)、及び
ライトバックステージデータ保持手段(PC_WB20
6)からなるパイプラインが構成される場合を想定す
る。この場合、命令フェッチステージ分割手段106
は、命令フェッチステージデータ保持手段を、命令アド
レスを外部メモリに対して出力するステージである命令
アドレス出力ステージIFaで使用されるデータを保持
する命令アドレス出力ステージデータ保持手段(PC_
IF202)と、メモリ手段から命令アドレスに対応す
る命令データを入力するステージである命令データ入力
ステージIFdで使用されるデータを保持する命令デー
タ入力ステージデータ保持手段(PC_Fd214)に
分割する。
手段106は、命令フェッチステージIFを、命令アド
レスをメモリ手段に対して出力する命令アドレス出力ス
テージIFaと、メモリ手段から命令アドレスに対応す
る命令データを入力する命令データ入力ステージIFd
に分割する。今例えば、命令フェッチ手段101、命令
デコード手段102、命令実行手段103、メモリアク
セス手段104、及びライトバック手段105が使用す
るデータ(例えばプログラムカウンタ値)をそれぞれ順
次保持するものであって、命令フェッチステージデータ
保持手段(PC_IF202)、命令デコードステージ
データ保持手段(PC_ID203)、命令実行ステー
ジデータ保持手段(PC_EX204)、メモリアクセ
スステージデータ保持手段(PC_MA205)、及び
ライトバックステージデータ保持手段(PC_WB20
6)からなるパイプラインが構成される場合を想定す
る。この場合、命令フェッチステージ分割手段106
は、命令フェッチステージデータ保持手段を、命令アド
レスを外部メモリに対して出力するステージである命令
アドレス出力ステージIFaで使用されるデータを保持
する命令アドレス出力ステージデータ保持手段(PC_
IF202)と、メモリ手段から命令アドレスに対応す
る命令データを入力するステージである命令データ入力
ステージIFdで使用されるデータを保持する命令デー
タ入力ステージデータ保持手段(PC_Fd214)に
分割する。
【0032】また、図1で、メモリアクセスステージ分
割手段109は、メモリアクセスステージMAを、オペ
ランドアドレスをメモリ手段に対して出力するオペラン
ドアドレス出力ステージMaと、メモリ手段に対してオ
ペランドアドレスに対応するオペランドデータをリード
又はライトするオペランドデータリード/ライトステー
ジMdに分割する。今、例えば、上述した命令フェッチ
ステージ分割手段106の説明において想定した場合と
同じ場合を想定する。この場合、メモリアクセスステー
ジ分割手段109は、メモリアクセスステージデータ保
持手段を、オペランドアドレスをメモリ手段に対して出
力するステージであるオペランドアドレス出力ステージ
Maで使用されるデータを保持するオペランドアドレス
出力ステージデータ保持手段(PC_MA205)と、
メモリ手段に対してオペランドアドレスに対応するオペ
ランドデータをリード又はライトするステージであるオ
ペランドデータリード/ライトステージMdで使用され
るデータを保持するオペランドデータリード/ライトス
テージデータ保持手段(PC_Md215)に分割す
る。
割手段109は、メモリアクセスステージMAを、オペ
ランドアドレスをメモリ手段に対して出力するオペラン
ドアドレス出力ステージMaと、メモリ手段に対してオ
ペランドアドレスに対応するオペランドデータをリード
又はライトするオペランドデータリード/ライトステー
ジMdに分割する。今、例えば、上述した命令フェッチ
ステージ分割手段106の説明において想定した場合と
同じ場合を想定する。この場合、メモリアクセスステー
ジ分割手段109は、メモリアクセスステージデータ保
持手段を、オペランドアドレスをメモリ手段に対して出
力するステージであるオペランドアドレス出力ステージ
Maで使用されるデータを保持するオペランドアドレス
出力ステージデータ保持手段(PC_MA205)と、
メモリ手段に対してオペランドアドレスに対応するオペ
ランドデータをリード又はライトするステージであるオ
ペランドデータリード/ライトステージMdで使用され
るデータを保持するオペランドデータリード/ライトス
テージデータ保持手段(PC_Md215)に分割す
る。
【0033】上述の発明の構成において、更に、以下に
示す命令フェッチステージ分割制御手段107及びメモ
リアクセスステージ分割制御手段110(共に、パイプ
ラインウエイト/段数制御回路801に対応する)を有
するように構成することができる。
示す命令フェッチステージ分割制御手段107及びメモ
リアクセスステージ分割制御手段110(共に、パイプ
ラインウエイト/段数制御回路801に対応する)を有
するように構成することができる。
【0034】まず、命令フェッチステージ分割制御手段
107は、命令フェッチステージ分割手段106が命令
フェッチステージIFを分割していない状態で、プロセ
ッサチップの外部に接続される外部メモリに対して命令
のフェッチが発生した時点において、命令フェッチステ
ージ分割手段106に対して命令フェッチステージIF
を分割させる。
107は、命令フェッチステージ分割手段106が命令
フェッチステージIFを分割していない状態で、プロセ
ッサチップの外部に接続される外部メモリに対して命令
のフェッチが発生した時点において、命令フェッチステ
ージ分割手段106に対して命令フェッチステージIF
を分割させる。
【0035】また、命令フェッチステージ分割制御手段
107は、命令フェッチステージIFが分割されている
状態で、分岐命令の実行によって分岐が発生し、かつそ
の分岐に対応する分岐先命令がプロセッサチップに内蔵
される内部メモリからフェッチされる時点において、命
令フェッチステージ分割手段106に対して命令フェッ
チステージIFの分割を解除させる。
107は、命令フェッチステージIFが分割されている
状態で、分岐命令の実行によって分岐が発生し、かつそ
の分岐に対応する分岐先命令がプロセッサチップに内蔵
される内部メモリからフェッチされる時点において、命
令フェッチステージ分割手段106に対して命令フェッ
チステージIFの分割を解除させる。
【0036】次に、メモリアクセスステージ分割制御手
段110は、メモリアクセスステージ分割手段109が
メモリアクセスステージMAを分割していない状態で、
プロセッサチップの外部に接続される外部メモリに対し
てオペランドデータのアクセスが発生した時点におい
て、メモリアクセスステージ分割手段109に対してメ
モリアクセスステージMAを分割させる。
段110は、メモリアクセスステージ分割手段109が
メモリアクセスステージMAを分割していない状態で、
プロセッサチップの外部に接続される外部メモリに対し
てオペランドデータのアクセスが発生した時点におい
て、メモリアクセスステージ分割手段109に対してメ
モリアクセスステージMAを分割させる。
【0037】また、メモリアクセスステージ分割制御手
段110は、メモリアクセスステージMAが分割されて
いる状態で、メモリアクセスを伴わない命令が実行さ
れ、かつその命令に続く命令が実行するメモリアクセス
がプロセッサチップに内蔵される内部メモリに対するも
のであった時点において、メモリアクセスステージ分割
手段109に対してメモリアクセスステージMAの分割
を解除させる。
段110は、メモリアクセスステージMAが分割されて
いる状態で、メモリアクセスを伴わない命令が実行さ
れ、かつその命令に続く命令が実行するメモリアクセス
がプロセッサチップに内蔵される内部メモリに対するも
のであった時点において、メモリアクセスステージ分割
手段109に対してメモリアクセスステージMAの分割
を解除させる。
【0038】ここまでの発明の構成において、更に、命
令アドレス出力ステージIFaを任意の命令サイクル数
だけウエイト状態にする命令アドレス出力ステージウエ
イト制御手段108と、オペランドアドレス出力ステー
ジMaを任意の命令サイクル数だけウエイト状態にする
オペランドアドレス出力ステージウエイト制御手段11
1(共に、パイプラインウエイト/段数制御回路801
に対応する)を有するように構成することもできる。
令アドレス出力ステージIFaを任意の命令サイクル数
だけウエイト状態にする命令アドレス出力ステージウエ
イト制御手段108と、オペランドアドレス出力ステー
ジMaを任意の命令サイクル数だけウエイト状態にする
オペランドアドレス出力ステージウエイト制御手段11
1(共に、パイプラインウエイト/段数制御回路801
に対応する)を有するように構成することもできる。
【0039】加えて、ここまでの発明の構成において、
命令フェッチ手段101によって実行される、命令アド
レス出力ステージIFaにおける命令アドレスの出力動
作と、命令データ入力ステージIFdにおける命令デー
タの入力動作は、並列に実行され、メモリアクセス手段
104によって実行される、オペランドアドレス出力ス
テージMaにおけるオペランドアドレスの出力動作と、
オペランドデータリード/ライトステージMdにおける
オペランドデータのリード又はライト動作は、並列に実
行されるように構成することができる。
命令フェッチ手段101によって実行される、命令アド
レス出力ステージIFaにおける命令アドレスの出力動
作と、命令データ入力ステージIFdにおける命令デー
タの入力動作は、並列に実行され、メモリアクセス手段
104によって実行される、オペランドアドレス出力ス
テージMaにおけるオペランドアドレスの出力動作と、
オペランドデータリード/ライトステージMdにおける
オペランドデータのリード又はライト動作は、並列に実
行されるように構成することができる。
【0040】
【作用】命令フェッチステージIFにおいて、プロセッ
サチップに内蔵される内部メモリに記憶されている命令
がフェッチされているような状態においては、命令フェ
ッチステージIFは分割されない。この結果、分岐発生
時のパイプライン処理のキャンセルによるペナルティを
小さくすることができる。
サチップに内蔵される内部メモリに記憶されている命令
がフェッチされているような状態においては、命令フェ
ッチステージIFは分割されない。この結果、分岐発生
時のパイプライン処理のキャンセルによるペナルティを
小さくすることができる。
【0041】一方、命令フェッチステージIFが分割さ
れていない状態で、プロセッサチップの外部に接続され
る外部メモリに対して命令のフェッチが発生した時点に
おいて、命令フェッチステージ分割制御手段107が命
令フェッチステージ分割手段106に対して命令フェッ
チステージIFを分割させる。この結果、分割された命
令フェッチステージIFが実行されている命令サイクル
において、他のステージの処理がウエイト状態になる時
間を短縮させることができ、分岐発生時以外のタイミン
グにおいて、パイプライン処理の性能を向上させること
ができる。この場合、命令アドレス出力ステージウエイ
ト制御手段108が、命令フェッチステージIFが分割
されることにより生ずる命令アドレス出力ステージのウ
エイト状態を適切に制御する。
れていない状態で、プロセッサチップの外部に接続され
る外部メモリに対して命令のフェッチが発生した時点に
おいて、命令フェッチステージ分割制御手段107が命
令フェッチステージ分割手段106に対して命令フェッ
チステージIFを分割させる。この結果、分割された命
令フェッチステージIFが実行されている命令サイクル
において、他のステージの処理がウエイト状態になる時
間を短縮させることができ、分岐発生時以外のタイミン
グにおいて、パイプライン処理の性能を向上させること
ができる。この場合、命令アドレス出力ステージウエイ
ト制御手段108が、命令フェッチステージIFが分割
されることにより生ずる命令アドレス出力ステージのウ
エイト状態を適切に制御する。
【0042】また、分岐命令の実行によって分岐が発生
し、かつその分岐に対応する分岐先命令がプロセッサチ
ップに内蔵される内部メモリからフェッチされる時点に
おいて命令フェッチステージIFの分割が解除されるこ
とにより、パイプライン処理中の有効なデータを失わせ
ることなく、パイプラインの状態を最適な状態に変更す
ることができる。
し、かつその分岐に対応する分岐先命令がプロセッサチ
ップに内蔵される内部メモリからフェッチされる時点に
おいて命令フェッチステージIFの分割が解除されるこ
とにより、パイプライン処理中の有効なデータを失わせ
ることなく、パイプラインの状態を最適な状態に変更す
ることができる。
【0043】一方、メモリアクセスステージMAが分割
されていない状態で、プロセッサチップの外部に接続さ
れる外部メモリに対してオペランドデータのアクセスが
発生した時点において、メモリアクセスステージ分割制
御手段110がメモリアクセスステージ分割手段109
に対してメモリアクセスステージMAを分割させる。こ
の結果、分割されたメモリアクセスステージMAが実行
されている命令サイクルにおいて、他のステージの処理
がウエイト状態になる時間を短縮させることができ、分
岐発生時以外のタイミングにおいて、パイプライン処理
の性能を向上させることができる。この場合、オペラン
ドアドレス出力ステージウエイト制御手段111が、メ
モリアクセスステージMAが分割されることにより生ず
るオペランドアドレス出力ステージのウエイト状態を適
切に制御する。
されていない状態で、プロセッサチップの外部に接続さ
れる外部メモリに対してオペランドデータのアクセスが
発生した時点において、メモリアクセスステージ分割制
御手段110がメモリアクセスステージ分割手段109
に対してメモリアクセスステージMAを分割させる。こ
の結果、分割されたメモリアクセスステージMAが実行
されている命令サイクルにおいて、他のステージの処理
がウエイト状態になる時間を短縮させることができ、分
岐発生時以外のタイミングにおいて、パイプライン処理
の性能を向上させることができる。この場合、オペラン
ドアドレス出力ステージウエイト制御手段111が、メ
モリアクセスステージMAが分割されることにより生ず
るオペランドアドレス出力ステージのウエイト状態を適
切に制御する。
【0044】また、メモリアクセスを伴わない命令が実
行され、かつその命令に続く命令が実行するメモリアク
セスがプロセッサチップに内蔵される内部メモリに対す
るものであった時点においてメモリアクセスステージM
Aの分割が解除されることにより、命令フェッチステー
ジの場合と同様に、パイプライン処理中の有効なデータ
を失わせることなく、パイプラインの状態を最適な状態
に変更することができる。
行され、かつその命令に続く命令が実行するメモリアク
セスがプロセッサチップに内蔵される内部メモリに対す
るものであった時点においてメモリアクセスステージM
Aの分割が解除されることにより、命令フェッチステー
ジの場合と同様に、パイプライン処理中の有効なデータ
を失わせることなく、パイプラインの状態を最適な状態
に変更することができる。
【0045】
【実施例】以下、図面を参照しながら本発明の実施例に
つき詳細に説明する。図2に、本発明によるパイプライ
ン制御装置の一部の実施例を示す。
つき詳細に説明する。図2に、本発明によるパイプライ
ン制御装置の一部の実施例を示す。
【0046】図2で、1301、1303、1304、
1306〜1313で示される各部分は、図13で示さ
れる従来技術における201、203、204、206
〜213で示される各部分の機能と同じ機能を有する。
1306〜1313で示される各部分は、図13で示さ
れる従来技術における201、203、204、206
〜213で示される各部分の機能と同じ機能を有する。
【0047】図2の構成が図13の構成と異なる点は、
以下の通りである。即ちまず、命令フェッチステージ
は、場合に応じて、命令アドレスをメモリに対して出力
するための第1命令フェッチステージ(以下、IFaス
テージと呼ぶ)と、命令データをメモリからフェッチす
るための第2命令フェッチステージ(以下、Fdステー
ジと呼ぶ)に分割することができる。また、メモリアク
セスステージは、場合に応じて、オペランドアドレスを
メモリに対して出力するための第1メモリアクセスステ
ージ(以下、Maステージと呼ぶ)と、オペランドデー
タをメモリに対して入力又は出力するための第2メモリ
アクセスステージ(以下、Mdステージと呼ぶ)に分割
することができる。そして、命令フェッチステージが分
割されない場合は、第1命令フェッチステージプログラ
ムカウンタ値保持部202(以下、単にPC_IF20
2と呼ぶ)の出力はマルチプレクサ220を介してPC
_ID203に入力され、命令フェッチステージが分割
される場合には、PC_IF202の出力は第2命令フ
ェッチステージプログラムカウンタ値保持部214(以
下、PC_Fd214と呼ぶ)を経由した後に、マルチ
プレクサ220を介してPC_ID203に入力され
る。また、メモリアクセスステージが分割されない場合
には、第1メモリアクセスステージプログラムカウンタ
値保持部205(以下、単にPC_MA205と呼ぶ)
の出力はマルチプレクサ221を介してPC_WB20
6に入力され、メモリアクセスステージが分割される場
合は、PC_MA205の出力は第2メモリアクセスス
テージプログラムカウンタ値保持部215(以下、PC
_Md215と呼ぶ)を経由した後に、マルチプレクサ
221を介してPC_WB206に入力される。従っ
て、命令フェッチステージ及びメモリアクセスステージ
の何れもが分割されない場合は、図2の構成は図13の
構成と同じとなる。
以下の通りである。即ちまず、命令フェッチステージ
は、場合に応じて、命令アドレスをメモリに対して出力
するための第1命令フェッチステージ(以下、IFaス
テージと呼ぶ)と、命令データをメモリからフェッチす
るための第2命令フェッチステージ(以下、Fdステー
ジと呼ぶ)に分割することができる。また、メモリアク
セスステージは、場合に応じて、オペランドアドレスを
メモリに対して出力するための第1メモリアクセスステ
ージ(以下、Maステージと呼ぶ)と、オペランドデー
タをメモリに対して入力又は出力するための第2メモリ
アクセスステージ(以下、Mdステージと呼ぶ)に分割
することができる。そして、命令フェッチステージが分
割されない場合は、第1命令フェッチステージプログラ
ムカウンタ値保持部202(以下、単にPC_IF20
2と呼ぶ)の出力はマルチプレクサ220を介してPC
_ID203に入力され、命令フェッチステージが分割
される場合には、PC_IF202の出力は第2命令フ
ェッチステージプログラムカウンタ値保持部214(以
下、PC_Fd214と呼ぶ)を経由した後に、マルチ
プレクサ220を介してPC_ID203に入力され
る。また、メモリアクセスステージが分割されない場合
には、第1メモリアクセスステージプログラムカウンタ
値保持部205(以下、単にPC_MA205と呼ぶ)
の出力はマルチプレクサ221を介してPC_WB20
6に入力され、メモリアクセスステージが分割される場
合は、PC_MA205の出力は第2メモリアクセスス
テージプログラムカウンタ値保持部215(以下、PC
_Md215と呼ぶ)を経由した後に、マルチプレクサ
221を介してPC_WB206に入力される。従っ
て、命令フェッチステージ及びメモリアクセスステージ
の何れもが分割されない場合は、図2の構成は図13の
構成と同じとなる。
【0048】上述の構成を有する実施例の動作につい
て、以下に説明する。まず、図3は、内部メモリなどの
ような1命令サイクルでアクセス可能なメモリがアクセ
スされる場合のパイプライン処理の説明図である。この
場合には、命令フェッチステージ及びメモリアクセスス
テージの何れも分割されず、PC_IF202の出力は
マルチプレクサ220を介してPC_ID203に入力
され、PC_MA205の出力はマルチプレクサ221
を介してPC_WB206に入力される。即ち、この場
合の処理は、図14を使って前述した一般的なパイプラ
イン処理と同じになる。
て、以下に説明する。まず、図3は、内部メモリなどの
ような1命令サイクルでアクセス可能なメモリがアクセ
スされる場合のパイプライン処理の説明図である。この
場合には、命令フェッチステージ及びメモリアクセスス
テージの何れも分割されず、PC_IF202の出力は
マルチプレクサ220を介してPC_ID203に入力
され、PC_MA205の出力はマルチプレクサ221
を介してPC_WB206に入力される。即ち、この場
合の処理は、図14を使って前述した一般的なパイプラ
イン処理と同じになる。
【0049】次に、図4は、パイプラインピッチ(=1
命令サイクル)の時間間隔でアクセスをすることが困難
な外部メモリがアクセスされる場合のパイプライン処理
の説明図である。
命令サイクル)の時間間隔でアクセスをすることが困難
な外部メモリがアクセスされる場合のパイプライン処理
の説明図である。
【0050】この図を、従来技術に関する前述した図1
8と比較しながら説明する。まず、図4では、メモリア
クセスステージが、MaステージとMdステージに分割
されている点が、本発明に関連する大きな特徴である。
これに対して、従来技術に関する図18では、メモリア
クセスステージは分割されていない。この結果、図4で
は、例えば命令サイクル6において、命令Aに対するM
dステージが実行されることにより、命令Aに対するオ
ペランドデータがCPUと外部メモリとの間で授受され
るのと並行して、命令Bに対するMa(Maw)ステー
ジが実行されることによって、命令Bに対するオペラン
ドデータをアクセスするためのオペランドアドレスがC
PUから外部メモリに対して出力されることになる。即
ち、CPUが外部メモリにオペランドアドレスを指定す
るステージと、CPUが外部メモリとの間でオペランド
データを授受するステージとが分割されることにより、
これらの動作を、2つの命令間で、並列にパイプライン
処理することが可能となる。
8と比較しながら説明する。まず、図4では、メモリア
クセスステージが、MaステージとMdステージに分割
されている点が、本発明に関連する大きな特徴である。
これに対して、従来技術に関する図18では、メモリア
クセスステージは分割されていない。この結果、図4で
は、例えば命令サイクル6において、命令Aに対するM
dステージが実行されることにより、命令Aに対するオ
ペランドデータがCPUと外部メモリとの間で授受され
るのと並行して、命令Bに対するMa(Maw)ステー
ジが実行されることによって、命令Bに対するオペラン
ドデータをアクセスするためのオペランドアドレスがC
PUから外部メモリに対して出力されることになる。即
ち、CPUが外部メモリにオペランドアドレスを指定す
るステージと、CPUが外部メモリとの間でオペランド
データを授受するステージとが分割されることにより、
これらの動作を、2つの命令間で、並列にパイプライン
処理することが可能となる。
【0051】この結果、図4の動作は、図18の動作に
比較して、以下に説明する優位性を有する。即ちまず、
図4と図18では、メモリアクセスを実行するために必
要な命令サイクル長は、共に3命令サイクルである。こ
の結果、両者共、図4の(c) 、(d)及び図18の(a) 、
(b) に示されるように、外部メモリに対して2命令サイ
クルの時間長を有する実効アクセスタイムが確保され
る。
比較して、以下に説明する優位性を有する。即ちまず、
図4と図18では、メモリアクセスを実行するために必
要な命令サイクル長は、共に3命令サイクルである。こ
の結果、両者共、図4の(c) 、(d)及び図18の(a) 、
(b) に示されるように、外部メモリに対して2命令サイ
クルの時間長を有する実効アクセスタイムが確保され
る。
【0052】但し、メモリアクセスステージを構成する
3命令サイクルのうちメモリウエイト状態となる時間
は、図18では2命令サイクルであるのに対して、図4
では1命令サイクルのみである。従って、メモリアクセ
スステージを構成する3命令サイクルの時間のうち他の
命令のステージを並列に実行できない時間は、図18で
は2命令サイクルとなるのに対して、図4では1命令サ
イクルで済む。
3命令サイクルのうちメモリウエイト状態となる時間
は、図18では2命令サイクルであるのに対して、図4
では1命令サイクルのみである。従って、メモリアクセ
スステージを構成する3命令サイクルの時間のうち他の
命令のステージを並列に実行できない時間は、図18で
は2命令サイクルとなるのに対して、図4では1命令サ
イクルで済む。
【0053】このために、命令Aに続く例えば命令Bに
対する命令実行ステージにおいて、図18においては、
命令AのMAステージで挿入されている2ウエイトの時
間長(MAw×2)と同じ時間長のメモリウエイト(E
Xw×2)が挿入されるのに対して、図4では、命令A
のMaステージで挿入されている1ウエイトの時間長
(Maw×1)と同じ時間長のメモリウエイト(EXw
×1)が挿入されるのみで済む。従って、図4では、命
令AのMdステージが実行される命令サイクル6におい
て、命令Bに対するEXステージの次のステージである
Maステージを実行することができる。命令C〜Eにつ
いても、命令サイクル6において、命令サイクル5以前
の状態が繰り返されることはない。
対する命令実行ステージにおいて、図18においては、
命令AのMAステージで挿入されている2ウエイトの時
間長(MAw×2)と同じ時間長のメモリウエイト(E
Xw×2)が挿入されるのに対して、図4では、命令A
のMaステージで挿入されている1ウエイトの時間長
(Maw×1)と同じ時間長のメモリウエイト(EXw
×1)が挿入されるのみで済む。従って、図4では、命
令AのMdステージが実行される命令サイクル6におい
て、命令Bに対するEXステージの次のステージである
Maステージを実行することができる。命令C〜Eにつ
いても、命令サイクル6において、命令サイクル5以前
の状態が繰り返されることはない。
【0054】結果的に、例えば命令Bが実行を終了する
までの命令サイクルの長さは、図18では10命令サイ
クルとなるのに対して、図4では9命令サイクルとな
る。更に、例えば命令Dが実行を終了するまでの命令サ
イクルの長さは、図18では16命令サイクルに達する
のに対して、図4では13命令サイクルで済む。このよ
うに、本実施例は従来技術に比較して、パイプライン全
体で、処理の遅延を減少させることができる。
までの命令サイクルの長さは、図18では10命令サイ
クルとなるのに対して、図4では9命令サイクルとな
る。更に、例えば命令Dが実行を終了するまでの命令サ
イクルの長さは、図18では16命令サイクルに達する
のに対して、図4では13命令サイクルで済む。このよ
うに、本実施例は従来技術に比較して、パイプライン全
体で、処理の遅延を減少させることができる。
【0055】図5は、パイプラインピッチ(=1命令サ
イクル)の時間間隔でアクセスをすることができる外部
メモリがアクセスされる場合のパイプライン処理の説明
図である。
イクル)の時間間隔でアクセスをすることができる外部
メモリがアクセスされる場合のパイプライン処理の説明
図である。
【0056】この場合も、図4の場合と同様に、メモリ
アクセスステージが、MaステージとMdステージに分
割される。この結果、図5の(a) 、(b) に示されるよう
に、メモリアクセスステージにおいてメモリウエイトを
挿入することなく、外部メモリに対して1命令サイクル
の時間長を有する実効アクセスタイムを確保することが
できる。
アクセスステージが、MaステージとMdステージに分
割される。この結果、図5の(a) 、(b) に示されるよう
に、メモリアクセスステージにおいてメモリウエイトを
挿入することなく、外部メモリに対して1命令サイクル
の時間長を有する実効アクセスタイムを確保することが
できる。
【0057】以上の動作は、メモリアクセスステージだ
けでなく、命令フェッチステージにおいても、そのステ
ージが命令アドレスをメモリに対して出力するためのI
Faステージと命令データをメモリからフェッチするた
めのFdステージに分割されることにより、全く同様の
効果が実現される。
けでなく、命令フェッチステージにおいても、そのステ
ージが命令アドレスをメモリに対して出力するためのI
Faステージと命令データをメモリからフェッチするた
めのFdステージに分割されることにより、全く同様の
効果が実現される。
【0058】ここで、パイプライン処理を使って分岐命
令が実行される場合、一般的に、パイプラインには、分
岐命令に関するデータに続いて、その分岐命令がデコー
ドされた結果分岐が発生しなかった場合に実行される命
令群に関するデータが入力されている。従って、分岐命
令がデコードされた結果分岐が発生した場合には、分岐
命令に関するデータに続いてパイプラインに入力されて
いる命令群に関するデータをキャンセルして、分岐先の
命令群に関するデータを入力し直す必要が生ずる。
令が実行される場合、一般的に、パイプラインには、分
岐命令に関するデータに続いて、その分岐命令がデコー
ドされた結果分岐が発生しなかった場合に実行される命
令群に関するデータが入力されている。従って、分岐命
令がデコードされた結果分岐が発生した場合には、分岐
命令に関するデータに続いてパイプラインに入力されて
いる命令群に関するデータをキャンセルして、分岐先の
命令群に関するデータを入力し直す必要が生ずる。
【0059】この場合に、命令フェッチステージがIF
aステージとFdステージに分割されることによって、
パイプライン処理の段数が長くなった場合、以下に説明
するように分岐発生時のパイプライン処理のキャンセル
によるペナルティが大きくなり、パイプライン処理の性
能低下を招いてしまう。
aステージとFdステージに分割されることによって、
パイプライン処理の段数が長くなった場合、以下に説明
するように分岐発生時のパイプライン処理のキャンセル
によるペナルティが大きくなり、パイプライン処理の性
能低下を招いてしまう。
【0060】上述の問題を、命令フェッチステージが分
割されていない場合と分割されている場合とを比較する
ことにより、説明する。図6は、命令フェッチステージ
が分割されていない場合において分岐が発生した場合の
パイプライン処理を示した図である。
割されていない場合と分割されている場合とを比較する
ことにより、説明する。図6は、命令フェッチステージ
が分割されていない場合において分岐が発生した場合の
パイプライン処理を示した図である。
【0061】まず、命令サイクル2において、特には図
示しない命令デコードモジュールは、図2のPC_ID
203にセットされている分岐命令Aに対応するプログ
ラムカウンタ値を判別することにより、分岐命令Aをデ
コードする。
示しない命令デコードモジュールは、図2のPC_ID
203にセットされている分岐命令Aに対応するプログ
ラムカウンタ値を判別することにより、分岐命令Aをデ
コードする。
【0062】この結果、命令デコードモジュールは、分
岐命令のオペランドデータである分岐オフセットアドレ
スを、図2のPC_adder201に出力する。PC
_adder201は、PC_IF202から出力され
ている現在のプログラムカウンタ値に上述の分岐オフセ
ットアドレスを加算する。
岐命令のオペランドデータである分岐オフセットアドレ
スを、図2のPC_adder201に出力する。PC
_adder201は、PC_IF202から出力され
ている現在のプログラムカウンタ値に上述の分岐オフセ
ットアドレスを加算する。
【0063】この結果得られる分岐先命令Cに対応する
プログラムカウンタ値は、命令サイクル3において、P
C_IF202にセットされる。そして、命令サイクル
3において、特には図示しない命令フェッチモジュール
は、PC_IF202にセットされた分岐先命令Cに対
応するプログラムカウンタ値を判別することにより、図
6に示されるように、分岐先命令Cをメモリからフェッ
チする。
プログラムカウンタ値は、命令サイクル3において、P
C_IF202にセットされる。そして、命令サイクル
3において、特には図示しない命令フェッチモジュール
は、PC_IF202にセットされた分岐先命令Cに対
応するプログラムカウンタ値を判別することにより、図
6に示されるように、分岐先命令Cをメモリからフェッ
チする。
【0064】従って、図6に示されるように命令フェッ
チステージが分割されていない場合には、分岐命令Aの
デコードが終了するまでに命令Bの1つの命令に関する
データのみがパイプラインに入力されているため、その
1つの命令に関するデータのみがキャンセルされること
になる。具体的には、命令サイクル5と6において、命
令Bに対応するPC_MA205とPC_Md215の
内容がクリアされ、命令サイクル7において、命令Bに
対応するPC_WB206の内容がクリアされる。な
お、命令Bに対応するIFステージ、IDステージ、及
びEXステージは、それらが実行されても他の命令の実
行に影響が及ばない。このため、命令サイクル2〜4の
それぞれにおいて、命令Bに対応するPC_IF20
2、PC_ID203、及びPC_EX204の内容は
クリアする必要はない。
チステージが分割されていない場合には、分岐命令Aの
デコードが終了するまでに命令Bの1つの命令に関する
データのみがパイプラインに入力されているため、その
1つの命令に関するデータのみがキャンセルされること
になる。具体的には、命令サイクル5と6において、命
令Bに対応するPC_MA205とPC_Md215の
内容がクリアされ、命令サイクル7において、命令Bに
対応するPC_WB206の内容がクリアされる。な
お、命令Bに対応するIFステージ、IDステージ、及
びEXステージは、それらが実行されても他の命令の実
行に影響が及ばない。このため、命令サイクル2〜4の
それぞれにおいて、命令Bに対応するPC_IF20
2、PC_ID203、及びPC_EX204の内容は
クリアする必要はない。
【0065】次に、図7は、命令フェッチステージがI
FaステージとFdステージに分割されている場合にお
いて分岐が発生した場合のパイプライン処理を示した図
である。
FaステージとFdステージに分割されている場合にお
いて分岐が発生した場合のパイプライン処理を示した図
である。
【0066】この場合には、分岐命令Aのデコードが終
了するまでに命令Bと命令Cの2つの命令に関するデー
タがパイプラインに入力されているため、それら2つの
データがキャンセルされることになる。
了するまでに命令Bと命令Cの2つの命令に関するデー
タがパイプラインに入力されているため、それら2つの
データがキャンセルされることになる。
【0067】以上の説明から理解されるように、図6に
示されるように命令フェッチステージが分割されていな
い場合は、分岐命令が実行されることにより分岐が発生
し、その結果、分岐先の命令が実行されるまでに、2命
令サイクルの時間で済むのに対し、図7に示されるよう
に命令フェッチステージがIFaステージとFdステー
ジに分割されている場合は、分岐命令が実行されること
により分岐が発生し、その結果、分岐先の命令が実行さ
れるまでに、3命令サイクルの時間を要してしまう。
示されるように命令フェッチステージが分割されていな
い場合は、分岐命令が実行されることにより分岐が発生
し、その結果、分岐先の命令が実行されるまでに、2命
令サイクルの時間で済むのに対し、図7に示されるよう
に命令フェッチステージがIFaステージとFdステー
ジに分割されている場合は、分岐命令が実行されること
により分岐が発生し、その結果、分岐先の命令が実行さ
れるまでに、3命令サイクルの時間を要してしまう。
【0068】このようにして、命令フェッチステージが
分割されることによりパイプライン処理の段数が長くな
った場合に、パイプライン処理の性能が低下してしまう
のである。
分割されることによりパイプライン処理の段数が長くな
った場合に、パイプライン処理の性能が低下してしまう
のである。
【0069】以上の問題点を解決するために、本実施例
では、状況に応じて、命令フェッチステージを分割する
か否かを制御できることを特徴とする。なお、メモリア
クセスステージについても同様の制御が行われる。
では、状況に応じて、命令フェッチステージを分割する
か否かを制御できることを特徴とする。なお、メモリア
クセスステージについても同様の制御が行われる。
【0070】具体的には、命令フェッチステージが分割
されていない状態で、外部メモリに対する命令フェッチ
が発生した時点において、命令フェッチステージが分割
される。同様に、メモリアクセスステージが分割されて
いない状態で、外部メモリに対するメモリアクセスが発
生した時点において、メモリアクセスステージが分割さ
れる。
されていない状態で、外部メモリに対する命令フェッチ
が発生した時点において、命令フェッチステージが分割
される。同様に、メモリアクセスステージが分割されて
いない状態で、外部メモリに対するメモリアクセスが発
生した時点において、メモリアクセスステージが分割さ
れる。
【0071】そして、命令フェッチステージが分割され
ている状態で、分岐命令の実行によって分岐が発生し、
かつ分岐先命令が内部メモリからフェッチされる時点に
おいて、命令フェッチステージの分割が解除される。ま
た、メモリアクセスステージが分割されている状態で、
オペランドアクセスを伴わない命令が実行され、かつそ
の命令に続く命令が実行するオペランドアクセスが内部
メモリに対するオペランドアクセスであった時点におい
て、メモリアクセスステージの分割が解除される。一般
に、RISCプロセッサでは、メモリアクセスが発生す
る場合は、ロード命令又はストア命令が実行された場合
に限定されるため、これらの命令以外の命令が実行され
た場合に、メモリアクセスステージの分割が解除され得
る。
ている状態で、分岐命令の実行によって分岐が発生し、
かつ分岐先命令が内部メモリからフェッチされる時点に
おいて、命令フェッチステージの分割が解除される。ま
た、メモリアクセスステージが分割されている状態で、
オペランドアクセスを伴わない命令が実行され、かつそ
の命令に続く命令が実行するオペランドアクセスが内部
メモリに対するオペランドアクセスであった時点におい
て、メモリアクセスステージの分割が解除される。一般
に、RISCプロセッサでは、メモリアクセスが発生す
る場合は、ロード命令又はストア命令が実行された場合
に限定されるため、これらの命令以外の命令が実行され
た場合に、メモリアクセスステージの分割が解除され得
る。
【0072】図8は、上述の動作を実現するためのパイ
プラインウエイト/段数制御回路801の周辺構成図で
ある。また、図9及び図10は、この回路によって実行
される命令フェッチステージ制御動作の状態遷移図及び
タイミングチャート、図11及び図12は、この回路に
よって実行されるメモリアクセスステージ制御動作の状
態遷移図及びタイミングチャートである。
プラインウエイト/段数制御回路801の周辺構成図で
ある。また、図9及び図10は、この回路によって実行
される命令フェッチステージ制御動作の状態遷移図及び
タイミングチャート、図11及び図12は、この回路に
よって実行されるメモリアクセスステージ制御動作の状
態遷移図及びタイミングチャートである。
【0073】まず、パイプラインウエイト/段数制御回
路801によって実行される命令フェッチステージ制御
動作について説明する。図9の状態遷移図から理解され
るように、パイプラインウエイト/段数制御回路801
は、命令フェッチステージ制御動作については、3状態
の有限状態マシンとして機能する。
路801によって実行される命令フェッチステージ制御
動作について説明する。図9の状態遷移図から理解され
るように、パイプラインウエイト/段数制御回路801
は、命令フェッチステージ制御動作については、3状態
の有限状態マシンとして機能する。
【0074】図9において、第1の状態は、IDLE状
態である。この状態では、パイプラインウエイト/段数
制御回路801は、図2に示されるパイプライン制御回
路に対しては、if_wait信号及びfd_sel信
号をアサートしない。内部メモリに記憶されている命令
(以下、内部命令と呼ぶ)がフェッチされている状態に
おいて、この状態になり得る。そして、この状態では、
命令フェッチステージは分割されず、図2において、P
C_IF202の出力は、マルチプレクサ220を介し
てPC_ID203に入力されている。このIDLE状
態においては、命令フェッチステージが分割されていな
いため、前述したように、分岐発生時のパイプライン処
理のキャンセルによるペナルティを小さくすることがで
きる。
態である。この状態では、パイプラインウエイト/段数
制御回路801は、図2に示されるパイプライン制御回
路に対しては、if_wait信号及びfd_sel信
号をアサートしない。内部メモリに記憶されている命令
(以下、内部命令と呼ぶ)がフェッチされている状態に
おいて、この状態になり得る。そして、この状態では、
命令フェッチステージは分割されず、図2において、P
C_IF202の出力は、マルチプレクサ220を介し
てPC_ID203に入力されている。このIDLE状
態においては、命令フェッチステージが分割されていな
いため、前述したように、分岐発生時のパイプライン処
理のキャンセルによるペナルティを小さくすることがで
きる。
【0075】IDLE状態は、特には図示しない命令フ
ェッチモジュールからの外部命令フェッチ信号803が
アサートされるまで繰り返される。この外部命令フェッ
チ信号803は、外部メモリに記憶されている命令(以
下、外部命令と呼ぶ)に対するフェッチが発生したこと
を示す信号である。
ェッチモジュールからの外部命令フェッチ信号803が
アサートされるまで繰り返される。この外部命令フェッ
チ信号803は、外部メモリに記憶されている命令(以
下、外部命令と呼ぶ)に対するフェッチが発生したこと
を示す信号である。
【0076】そして、外部命令フェッチ信号803がア
サートされると共にメモリウエイト回数制御回路802
からのif_waiting信号がアサートされると、
IDLE状態から第2の状態であるWAIT状態への遷
移が発生する。また、外部命令フェッチ信号803はア
サートされたがメモリウエイト回数制御回路802から
のif_waiting信号がアサートされない場合に
は、第3の状態であるLAST状態への遷移が発生す
る。
サートされると共にメモリウエイト回数制御回路802
からのif_waiting信号がアサートされると、
IDLE状態から第2の状態であるWAIT状態への遷
移が発生する。また、外部命令フェッチ信号803はア
サートされたがメモリウエイト回数制御回路802から
のif_waiting信号がアサートされない場合に
は、第3の状態であるLAST状態への遷移が発生す
る。
【0077】WAIT状態では、パイプラインウエイト
/段数制御回路801は、図2に示されるパイプライン
制御回路に対しては、if_wait信号及びfd_s
el信号の両方をアサートする。
/段数制御回路801は、図2に示されるパイプライン
制御回路に対しては、if_wait信号及びfd_s
el信号の両方をアサートする。
【0078】このWAIT状態は、メモリウエイト回数
制御回路802からのif_waiting信号がアサ
ートされている時間だけ繰り返される。このif_wa
iting信号は、命令フェッチステージにおいてウエ
イトが挿入されない場合又は1ウエイトが挿入される場
合はアサートされず、n(n≧2)ウエイトが挿入され
る場合はn−1命令サイクルの時間だけアサートされ
る。そして、if_waiting信号がネゲートされ
ると、WAIT状態から第3の状態であるLAST状態
への遷移が発生する。
制御回路802からのif_waiting信号がアサ
ートされている時間だけ繰り返される。このif_wa
iting信号は、命令フェッチステージにおいてウエ
イトが挿入されない場合又は1ウエイトが挿入される場
合はアサートされず、n(n≧2)ウエイトが挿入され
る場合はn−1命令サイクルの時間だけアサートされ
る。そして、if_waiting信号がネゲートされ
ると、WAIT状態から第3の状態であるLAST状態
への遷移が発生する。
【0079】LAST状態においては、パイプラインウ
エイト/段数制御回路801は、図2に示されるパイプ
ライン制御回路に対しては、fd_sel信号のアサー
トを維持し、if_wait信号はネゲートする。この
状態において、特には図示しない命令フェッチモジュー
ルは、外部命令をフェッチする。
エイト/段数制御回路801は、図2に示されるパイプ
ライン制御回路に対しては、fd_sel信号のアサー
トを維持し、if_wait信号はネゲートする。この
状態において、特には図示しない命令フェッチモジュー
ルは、外部命令をフェッチする。
【0080】このLAST状態は、特には図示しない命
令デコードモジュールからの分岐発生信号805又は特
には図示しない命令フェッチモジュールからの内部命令
フェッチ信号804の一方又は両方がネゲートされてお
り、かつ命令フェッチモジュールからの外部命令フェッ
チ信号803又はメモリウエイト回数制御回路802か
らのif_waiting信号の一方又は両方がネゲー
トされている間だけ維持される。ここで、分岐発生信号
805は、外部命令である分岐命令が実行された結果分
岐が発生したことを示す信号である。また、内部命令フ
ェッチ信号804は、内部メモリに対する命令フェッチ
が発生したことを示す信号である。
令デコードモジュールからの分岐発生信号805又は特
には図示しない命令フェッチモジュールからの内部命令
フェッチ信号804の一方又は両方がネゲートされてお
り、かつ命令フェッチモジュールからの外部命令フェッ
チ信号803又はメモリウエイト回数制御回路802か
らのif_waiting信号の一方又は両方がネゲー
トされている間だけ維持される。ここで、分岐発生信号
805は、外部命令である分岐命令が実行された結果分
岐が発生したことを示す信号である。また、内部命令フ
ェッチ信号804は、内部メモリに対する命令フェッチ
が発生したことを示す信号である。
【0081】LAST状態において、特には図示しない
命令フェッチモジュールにおいて新たな外部命令に対す
るフェッチが発生し、外部命令フェッチ信号803がア
サートされると共に、メモリウエイト回数制御回路80
2からのif_waiting信号がアサートされる
と、再びWAIT状態への遷移が発生する。
命令フェッチモジュールにおいて新たな外部命令に対す
るフェッチが発生し、外部命令フェッチ信号803がア
サートされると共に、メモリウエイト回数制御回路80
2からのif_waiting信号がアサートされる
と、再びWAIT状態への遷移が発生する。
【0082】以上のように、命令フェッチステージが分
割されていないIDLE状態で、外部メモリに対する命
令フェッチが発生した時点において、命令フェッチステ
ージが分割され、図2において、PC_IF202の出
力はPC_Fd214を経由した後にマルチプレクサ2
20を介してPC_ID203に入力されるようにな
る。このとき、メモリウエイト回数制御回路802から
のif_waiting信号がアサートされる場合、即
ち、パイプラインピッチ(=1命令サイクル)の時間間
隔でアクセスをすることが困難な外部メモリがアクセス
される場合には、WAIT状態において必要なウエイト
状態が生成される(前述した図4参照)。一方、メモリ
ウエイト回数制御回路802からのif_waitin
g信号がアサートされない場合、即ち、パイプラインピ
ッチの時間間隔でアクセスをすることができる外部メモ
リがアクセスされる場合には、WAIT状態は介さず
に、LAST状態への遷移が直接に発生し、命令フェッ
チステージが分割される(前述した図5参照)。そし
て、LAST状態において、命令フェッチステージが分
割された状態で命令フェッチが行われることによって、
前述したように、分岐発生時以外のタイミングにおい
て、パイプライン処理の性能を向上させることができ
る。
割されていないIDLE状態で、外部メモリに対する命
令フェッチが発生した時点において、命令フェッチステ
ージが分割され、図2において、PC_IF202の出
力はPC_Fd214を経由した後にマルチプレクサ2
20を介してPC_ID203に入力されるようにな
る。このとき、メモリウエイト回数制御回路802から
のif_waiting信号がアサートされる場合、即
ち、パイプラインピッチ(=1命令サイクル)の時間間
隔でアクセスをすることが困難な外部メモリがアクセス
される場合には、WAIT状態において必要なウエイト
状態が生成される(前述した図4参照)。一方、メモリ
ウエイト回数制御回路802からのif_waitin
g信号がアサートされない場合、即ち、パイプラインピ
ッチの時間間隔でアクセスをすることができる外部メモ
リがアクセスされる場合には、WAIT状態は介さず
に、LAST状態への遷移が直接に発生し、命令フェッ
チステージが分割される(前述した図5参照)。そし
て、LAST状態において、命令フェッチステージが分
割された状態で命令フェッチが行われることによって、
前述したように、分岐発生時以外のタイミングにおい
て、パイプライン処理の性能を向上させることができ
る。
【0083】前述のLAST状態において、パイプライ
ン処理がキャンセルされた時点、即ち、特には図示しな
い命令デコードモジュールからの分岐発生信号805が
アサートされ、かつ特には図示しない命令フェッチモジ
ュールからの内部命令フェッチ信号803がアサートさ
れた時点で、IDLE状態への遷移が発生する。この結
果、例えば図10に示されるように、分岐命令Aに対す
るIDステージが実行された結果分岐が発生し、かつ、
分岐先命令Dが内部命令であるならば、fd_sel信
号がネゲートされ、命令フェッチステージの分割が解除
される。
ン処理がキャンセルされた時点、即ち、特には図示しな
い命令デコードモジュールからの分岐発生信号805が
アサートされ、かつ特には図示しない命令フェッチモジ
ュールからの内部命令フェッチ信号803がアサートさ
れた時点で、IDLE状態への遷移が発生する。この結
果、例えば図10に示されるように、分岐命令Aに対す
るIDステージが実行された結果分岐が発生し、かつ、
分岐先命令Dが内部命令であるならば、fd_sel信
号がネゲートされ、命令フェッチステージの分割が解除
される。
【0084】次に、図8に示されるパイプラインウエイ
ト/段数制御回路801によって実行されるメモリアク
セスステージ制御動作について説明する。図11の状態
遷移図から理解されるように、パイプラインウエイト/
段数制御回路801は、メモリアクセスステージ制御動
作についても、命令フェッチステージ制御動作について
と同様、3状態の有限状態マシンとして機能する。
ト/段数制御回路801によって実行されるメモリアク
セスステージ制御動作について説明する。図11の状態
遷移図から理解されるように、パイプラインウエイト/
段数制御回路801は、メモリアクセスステージ制御動
作についても、命令フェッチステージ制御動作について
と同様、3状態の有限状態マシンとして機能する。
【0085】まず、IDLE状態では、パイプラインウ
エイト/段数制御回路801は、図2に示されるパイプ
ライン制御回路に対しては、ma_wait信号及びm
d_sel信号をアサートしない。この状態は、内部メ
モリに対するオペランドアクセスが実行されている状態
である。そして、この状態では、メモリアクセスステー
ジは分割されず、図2において、PC_MA205の出
力は、マルチプレクサ221を介してPC_WB206
に入力されている。
エイト/段数制御回路801は、図2に示されるパイプ
ライン制御回路に対しては、ma_wait信号及びm
d_sel信号をアサートしない。この状態は、内部メ
モリに対するオペランドアクセスが実行されている状態
である。そして、この状態では、メモリアクセスステー
ジは分割されず、図2において、PC_MA205の出
力は、マルチプレクサ221を介してPC_WB206
に入力されている。
【0086】IDLE状態は、特には図示しないメモリ
アクセス制御回路からの外部メモリアクセス信号806
がアサートされるまで繰り返される。この外部メモリア
クセス信号806は、外部メモリに記憶されている命令
(以下、外部命令と呼ぶ)に対するフェッチが発生した
ことを示す信号である。この外部メモリアクセス信号8
06は、外部メモリに対するオペランドアクセスが発生
したことを示す信号である。
アクセス制御回路からの外部メモリアクセス信号806
がアサートされるまで繰り返される。この外部メモリア
クセス信号806は、外部メモリに記憶されている命令
(以下、外部命令と呼ぶ)に対するフェッチが発生した
ことを示す信号である。この外部メモリアクセス信号8
06は、外部メモリに対するオペランドアクセスが発生
したことを示す信号である。
【0087】そして、外部メモリアクセス信号806が
アサートされると共にメモリウエイト回数制御回路80
2からのma_waiting信号がアサートされる
と、IDLE状態から第2の状態であるWAIT状態へ
の遷移が発生する。また、外部メモリアクセス信号80
6はアサートされたがメモリウエイト回数制御回路80
2からのma_waiting信号がアサートされない
場合には、第3の状態であるLAST状態への遷移が発
生する。
アサートされると共にメモリウエイト回数制御回路80
2からのma_waiting信号がアサートされる
と、IDLE状態から第2の状態であるWAIT状態へ
の遷移が発生する。また、外部メモリアクセス信号80
6はアサートされたがメモリウエイト回数制御回路80
2からのma_waiting信号がアサートされない
場合には、第3の状態であるLAST状態への遷移が発
生する。
【0088】WAIT状態では、パイプラインウエイト
/段数制御回路801は、図2に示されるパイプライン
制御回路に対しては、ma_wait信号及びmd_s
el信号の両方をアサートする。図4の例では、(a) 及
び(b) に示されるように、命令サイクル4のタイミング
がこのWAIT状態のタイミングである。
/段数制御回路801は、図2に示されるパイプライン
制御回路に対しては、ma_wait信号及びmd_s
el信号の両方をアサートする。図4の例では、(a) 及
び(b) に示されるように、命令サイクル4のタイミング
がこのWAIT状態のタイミングである。
【0089】このWAIT状態は、メモリウエイト回数
制御回路802からのma_waiting信号がアサ
ートされている時間だけ繰り返される。このma_wa
iting信号は、メモリアクセスステージにおいてウ
エイトが挿入されない場合又は1ウエイトが挿入される
場合はアサートされず、n(n≧2)ウエイトが挿入さ
れる場合はn−1命令サイクルの時間だけアサートされ
る。そして、ma_waiting信号がネゲートされ
ると、WAIT状態から第3の状態であるLAST状態
への遷移が発生する。
制御回路802からのma_waiting信号がアサ
ートされている時間だけ繰り返される。このma_wa
iting信号は、メモリアクセスステージにおいてウ
エイトが挿入されない場合又は1ウエイトが挿入される
場合はアサートされず、n(n≧2)ウエイトが挿入さ
れる場合はn−1命令サイクルの時間だけアサートされ
る。そして、ma_waiting信号がネゲートされ
ると、WAIT状態から第3の状態であるLAST状態
への遷移が発生する。
【0090】LAST状態においては、パイプラインウ
エイト/段数制御回路801は、図2に示されるパイプ
ライン制御回路に対しては、md_sel信号のアサー
トを維持し、ma_wait信号はネゲートする。この
状態において、特には図示しないメモリアクセスモジュ
ールは、外部メモリに対するオペランドアクセスを実行
する。図4の例では、(a) 及び(b) に示されるように、
命令サイクル5のタイミングが上述のタイミングであ
る。
エイト/段数制御回路801は、図2に示されるパイプ
ライン制御回路に対しては、md_sel信号のアサー
トを維持し、ma_wait信号はネゲートする。この
状態において、特には図示しないメモリアクセスモジュ
ールは、外部メモリに対するオペランドアクセスを実行
する。図4の例では、(a) 及び(b) に示されるように、
命令サイクル5のタイミングが上述のタイミングであ
る。
【0091】LAST状態は、特には図示しない命令デ
コードモジュールからの非メモリアクセス発生信号80
8又は特には図示しないメモリアクセス制御回路からの
内部メモリアクセス信号807の一方又は両方がネゲー
トされており、かつメモリアクセス制御回路からの外部
メモリアクセス信号806又はメモリウエイト回数制御
回路802からのma_waiting信号の一方又は
両方がネゲートされている間だけ維持される。ここで、
非メモリアクセス命令発生信号808は、ロード命令及
びストア命令以外の命令が実行されたことを示す信号で
ある。また、内部メモリアクセス信号807は、内部メ
モリへのオペランドアクセスが発生したことを示す信号
である。
コードモジュールからの非メモリアクセス発生信号80
8又は特には図示しないメモリアクセス制御回路からの
内部メモリアクセス信号807の一方又は両方がネゲー
トされており、かつメモリアクセス制御回路からの外部
メモリアクセス信号806又はメモリウエイト回数制御
回路802からのma_waiting信号の一方又は
両方がネゲートされている間だけ維持される。ここで、
非メモリアクセス命令発生信号808は、ロード命令及
びストア命令以外の命令が実行されたことを示す信号で
ある。また、内部メモリアクセス信号807は、内部メ
モリへのオペランドアクセスが発生したことを示す信号
である。
【0092】LAST状態において、特には図示しない
メモリアクセスモジュールにおいて外部メモリに対する
新たなオペランドアクセスが発生し、外部メモリアクセ
ス信号806がアサートされると共に、メモリウエイト
回数制御回路802からのma_waiting信号が
アサートされると、再びWAIT状態への遷移が発生す
る。図4の例では、(a) 及び(b) に示されるように、命
令サイクル6のタイミングで再びWAIT状態のタイミ
ングとなっている。
メモリアクセスモジュールにおいて外部メモリに対する
新たなオペランドアクセスが発生し、外部メモリアクセ
ス信号806がアサートされると共に、メモリウエイト
回数制御回路802からのma_waiting信号が
アサートされると、再びWAIT状態への遷移が発生す
る。図4の例では、(a) 及び(b) に示されるように、命
令サイクル6のタイミングで再びWAIT状態のタイミ
ングとなっている。
【0093】以上のように、メモリアクセスステージが
分割されていないIDLE状態において、外部メモリに
対するオペランドアクセスが発生した時点において、メ
モリアクセスステージが分割され、図2において、PC
_MA205の出力はPC_Md215を経由した後
に、マルチプレクサ221を介してPC_WB206に
入力されるようになる。そして、LAST状態におい
て、メモリアクセスステージが分割された状態でオペラ
ンドアクセスが行われる。
分割されていないIDLE状態において、外部メモリに
対するオペランドアクセスが発生した時点において、メ
モリアクセスステージが分割され、図2において、PC
_MA205の出力はPC_Md215を経由した後
に、マルチプレクサ221を介してPC_WB206に
入力されるようになる。そして、LAST状態におい
て、メモリアクセスステージが分割された状態でオペラ
ンドアクセスが行われる。
【0094】前述のLAST状態において、内部メモリ
又は外部命令へのオペランドアクセスを発生させない命
令が実行される時点、即ち、特には図示しない命令デコ
ードモジュールからの非メモリアクセス命令発生信号8
08がアサートされ、かつ特には図示しないメモリアク
セス制御回路からの内部メモリアクセス信号807がア
サートされた時点で、IDLE状態への遷移が発生す
る。この結果、例えば図12に示されるように、外部メ
モリに対するロード命令Aの次に、比較演算命令Bが実
行されることによってメモリアクセスが発生せず、その
次の命令Cが内部メモリに対するロード命令であった場
合に、md_sel信号がネゲートされ、メモリアクセ
スステージの分割が解除される。
又は外部命令へのオペランドアクセスを発生させない命
令が実行される時点、即ち、特には図示しない命令デコ
ードモジュールからの非メモリアクセス命令発生信号8
08がアサートされ、かつ特には図示しないメモリアク
セス制御回路からの内部メモリアクセス信号807がア
サートされた時点で、IDLE状態への遷移が発生す
る。この結果、例えば図12に示されるように、外部メ
モリに対するロード命令Aの次に、比較演算命令Bが実
行されることによってメモリアクセスが発生せず、その
次の命令Cが内部メモリに対するロード命令であった場
合に、md_sel信号がネゲートされ、メモリアクセ
スステージの分割が解除される。
【0095】以上説明した実施例では、プログラムカウ
ンタのパイプラインに関するパイプライン制御装置の構
成例につき説明したが、本発明はこれに限られるもので
はなく、例えば、命令のオペコード又はそれをデコード
した制御信号を各モジュールに伝えるためのパイプライ
ン、或いは、命令のオペランドを各モジュールに伝える
ためのパイプラインについても本発明を適用することが
できる。
ンタのパイプラインに関するパイプライン制御装置の構
成例につき説明したが、本発明はこれに限られるもので
はなく、例えば、命令のオペコード又はそれをデコード
した制御信号を各モジュールに伝えるためのパイプライ
ン、或いは、命令のオペランドを各モジュールに伝える
ためのパイプラインについても本発明を適用することが
できる。
【0096】
【発明の効果】本発明によれば、パイプライン処理にお
いて、命令フェッチステージ及びメモリアクセスステー
ジのそれぞれについて、各ステージが分割される状態と
分割されない状態を切替えることが可能となる。この結
果、プロセッサチップに内蔵される内部メモリに対して
命令フェッチ又はオペランドデータのアクセスが発生し
ている場合などにおいては、各ステージが分割されない
状態となることにより、分岐発生時のパイプライン処理
のキャンセルによるペナルティを小さくすることが可能
となる。また、プロセッサチップの外部に接続される外
部メモリに対して命令フェッチ又はオペランドデータの
アクセスが発生している場合などにおいては、各ステー
ジが分割された状態となることにより、分割された命令
フェッチステージ又はメモリアクセスステージが実行さ
れている命令サイクルにおいて、他のステージの処理が
ウエイト状態になる時間を短縮させることができ、分岐
発生時以外のタイミングにおいて、パイプライン処理の
性能を向上させることが可能となる。
いて、命令フェッチステージ及びメモリアクセスステー
ジのそれぞれについて、各ステージが分割される状態と
分割されない状態を切替えることが可能となる。この結
果、プロセッサチップに内蔵される内部メモリに対して
命令フェッチ又はオペランドデータのアクセスが発生し
ている場合などにおいては、各ステージが分割されない
状態となることにより、分岐発生時のパイプライン処理
のキャンセルによるペナルティを小さくすることが可能
となる。また、プロセッサチップの外部に接続される外
部メモリに対して命令フェッチ又はオペランドデータの
アクセスが発生している場合などにおいては、各ステー
ジが分割された状態となることにより、分割された命令
フェッチステージ又はメモリアクセスステージが実行さ
れている命令サイクルにおいて、他のステージの処理が
ウエイト状態になる時間を短縮させることができ、分岐
発生時以外のタイミングにおいて、パイプライン処理の
性能を向上させることが可能となる。
【0097】更に、分岐命令の実行によって分岐が発生
し、かつその分岐に対応する分岐先命令がプロセッサチ
ップに内蔵される内部メモリからフェッチされる時点に
おいて命令フェッチステージの分割が解除されることに
より、また、メモリアクセスを伴わない命令が実行さ
れ、かつその命令に続く命令が実行するメモリアクセス
がプロセッサチップに内蔵される内部メモリに対するも
のであった時点においてメモリアクセスステージの分割
が解除されることにより、パイプライン処理中の有効な
データを失わせることなく、パイプラインの状態を最適
な状態に変更することが可能となる。
し、かつその分岐に対応する分岐先命令がプロセッサチ
ップに内蔵される内部メモリからフェッチされる時点に
おいて命令フェッチステージの分割が解除されることに
より、また、メモリアクセスを伴わない命令が実行さ
れ、かつその命令に続く命令が実行するメモリアクセス
がプロセッサチップに内蔵される内部メモリに対するも
のであった時点においてメモリアクセスステージの分割
が解除されることにより、パイプライン処理中の有効な
データを失わせることなく、パイプラインの状態を最適
な状態に変更することが可能となる。
【図1】本発明のブロック図である。
【図2】本発明によるパイプライン制御装置の一部の実
施例の構成図である。
施例の構成図である。
【図3】1命令サイクルでアクセス可能なメモリがアク
セスされる場合のパイプライン処理の説明図である。
セスされる場合のパイプライン処理の説明図である。
【図4】パイプラインピッチの時間間隔でアクセスをす
ることが困難な外部メモリがアクセスされる場合のパイ
プライン処理の説明図である。
ることが困難な外部メモリがアクセスされる場合のパイ
プライン処理の説明図である。
【図5】パイプラインピッチの時間間隔でアクセスをす
ることができる外部メモリがアクセスされる場合のパイ
プライン処理の説明図である。
ることができる外部メモリがアクセスされる場合のパイ
プライン処理の説明図である。
【図6】命令フェッチステージが分割されていない場合
において分岐が発生した場合のパイプライン処理の説明
図である。
において分岐が発生した場合のパイプライン処理の説明
図である。
【図7】命令フェッチステージがIFaステージとFd
ステージに分割されている場合において分岐が発生した
場合のパイプライン処理の説明図である。
ステージに分割されている場合において分岐が発生した
場合のパイプライン処理の説明図である。
【図8】パイプラインウエイト/段数制御回路801の
周辺構成図である。
周辺構成図である。
【図9】命令フェッチステージ制御動作の状態遷移図で
ある。
ある。
【図10】命令フェッチステージ制御動作のタイミング
チャートである。
チャートである。
【図11】メモリアクセスステージ制御動作の状態遷移
図である。
図である。
【図12】メモリアクセスステージ制御動作のタイミン
グチャートである。
グチャートである。
【図13】従来のパイプラインプロセッサにおけるパイ
プライン制御装置の一部の構成例を示した図である。
プライン制御装置の一部の構成例を示した図である。
【図14】パイプライン処理の説明図である。
【図15】従来のメモリウエイトが発生した場合のパイ
プライン処理の説明図である。
プライン処理の説明図である。
【図16】従来の命令毎にメモリウエイトが発生した場
合のパイプライン処理の説明図である。
合のパイプライン処理の説明図である。
【図17】従来の外部バスアクセス時のパイプライン処
理の説明図(1ウエイトの場合)である。
理の説明図(1ウエイトの場合)である。
【図18】従来の外部バスアクセス時のパイプライン処
理の説明図(2ウエイトの場合)である。
理の説明図(2ウエイトの場合)である。
101 命令フェッチ手段 102 命令デコード手段 103 命令実行手段 104 メモリアクセス手段 105 ライトバック手段 106 命令フェッチステージ分割手段 107 命令フェッチステージ分割制御手段 108 命令アドレス出力ステージウエイト制御手段 109 メモリアクセスステージ分割手段 110 メモリアクセスステージ分割制御手段 111 オペランドアドレス出力ステージウエイト制
御手段 201 アダー(PC_adder) 202 第1命令フェッチステージプログラムカウン
タ値保持部(PC_IF202) 203 命令デコードステージプログラムカウンタ値
保持部(PC_ID) 204 命令実行ステージプログラムカウンタ値保持
部(PC_EX) 205 メモリアクセスステージプログラムカウンタ値
保持部(PC_MA) 206 ライトバックステージプログラムカウンタ値
保持部(PC_WB) 207〜210、216、217 アンドゲート 211〜213、218、219 オアゲート 214 第2命令フェッチステージプログラムカウン
タ値保持部(PC_Fd) 215 第2メモリアクセスステージプログラムカウ
ンタ値保持部(PC_Md) 220、221 マルチプレクサ 801 パイプラインウエイト/段数制御回路 802 メモリウエイト回数制御回路 803 外部命令フェッチ信号 804 内部命令フェッチ信号 805 分岐発生信号 806 外部メモリアクセス信号 807 内部メモリアクセス信号 808 非メモリアクセス命令発生信号
御手段 201 アダー(PC_adder) 202 第1命令フェッチステージプログラムカウン
タ値保持部(PC_IF202) 203 命令デコードステージプログラムカウンタ値
保持部(PC_ID) 204 命令実行ステージプログラムカウンタ値保持
部(PC_EX) 205 メモリアクセスステージプログラムカウンタ値
保持部(PC_MA) 206 ライトバックステージプログラムカウンタ値
保持部(PC_WB) 207〜210、216、217 アンドゲート 211〜213、218、219 オアゲート 214 第2命令フェッチステージプログラムカウン
タ値保持部(PC_Fd) 215 第2メモリアクセスステージプログラムカウ
ンタ値保持部(PC_Md) 220、221 マルチプレクサ 801 パイプラインウエイト/段数制御回路 802 メモリウエイト回数制御回路 803 外部命令フェッチ信号 804 内部命令フェッチ信号 805 分岐発生信号 806 外部メモリアクセス信号 807 内部メモリアクセス信号 808 非メモリアクセス命令発生信号
Claims (34)
- 【請求項1】 他のステージと並列に実行することので
きる命令フェッチステージ(IF)において、メモリ手
段から命令をフェッチする命令フェッチ手段(101)
と、 他のステージと並列に実行することのできる命令デコー
ドステージ(ID)において、前記フェッチされた命令
をデコードする命令デコード手段(102)と、 他のステージと並列に実行することのできる命令実行ス
テージ(EX)において、前記デコードされた命令を実
行する命令実行手段(103)と、 他のステージと並列に実行することのできるメモリアク
セスステージ(MA)において、前記命令実行ステージ
(EX)において計算されたアドレスに対して前記メモ
リ手段にリード又はライトを行うメモリアクセス手段
(104)と、 他のステージと並列に実行することのできるライトバッ
クステージ(WB)において、前記メモリアクセスステ
ージ(MA)で前記メモリ手段から得られるオペランド
データ又は前記命令実行ステージ(EX)において処理
されたオペランドデータをレジスタ手段に書き込むライ
トバック手段(105)と、 前記命令フェッチステージ(IF)を、命令アドレスを
前記メモリ手段に対して出力する命令アドレス出力ステ
ージ(IFa)と、前記メモリ手段から前記命令アドレ
スに対応する命令データを入力する命令データ入力ステ
ージ(IFd)に分割する命令フェッチステージ分割手
段(106)と、 を有することを特徴とする可変長パイプライン制御装
置。 - 【請求項2】 前記命令フェッチステージ分割手段(1
06)が前記命令フェッチステージ(IF)を分割して
いない状態で、プロセッサチップの外部に接続される外
部メモリに対して命令のフェッチが発生した時点におい
て、前記命令フェッチステージ分割手段(106)に対
して前記命令フェッチステージ(IF)を分割させる命
令フェッチステージ分割制御手段(107)を更に有す
る、 ことを特徴とする請求項1に記載の可変長パイプライン
制御装置。 - 【請求項3】 前記命令フェッチステージ分割制御手段
(107)は、前記命令フェッチステージ(IF)が分
割されている状態で、分岐命令の実行によって分岐が発
生し、かつ該分岐に対応する分岐先命令がプロセッサチ
ップに内蔵される内部メモリからフェッチされる時点に
おいて、前記命令フェッチステージ分割手段(106)
に対して前記命令フェッチステージ(IF)の分割を解
除させる、 ことを特徴とする請求項2に記載の可変長パイプライン
制御装置。 - 【請求項4】 前記命令アドレス出力ステージ(IF
a)を任意の命令サイクル数だけウエイト状態にする命
令アドレス出力ステージウエイト制御手段(108)を
更に有する、 ことを特徴とする請求項1乃至3の何れか1項に記載の
可変長パイプライン制御装置。 - 【請求項5】 前記命令フェッチ手段(101)によっ
て実行される、前記命令アドレス出力ステージ(IF
a)における前記命令アドレスの出力動作と、前記命令
データ入力ステージ(IFd)における前記命令データ
の入力動作は、並列に実行される、 ことを特徴とする請求項1乃至4の何れか1項に記載の
可変長パイプライン制御装置。 - 【請求項6】 他のステージと並列に実行することので
きる命令フェッチステージ(IF)において、メモリ手
段から命令をフェッチする命令フェッチ手段(101)
と、 他のステージと並列に実行することのできる命令デコー
ドステージ(ID)において、前記フェッチされた命令
をデコードする命令デコード手段(102)と、 他のステージと並列に実行することのできる命令実行ス
テージ(EX)において、前記デコードされた命令を実
行する命令実行手段(103)と、 他のステージと並列に実行することのできるメモリアク
セスステージ(MA)において、前記命令実行ステージ
(EX)において計算されたアドレスに対して前記メモ
リ手段にリード又はライトを行うメモリアクセス手段
(104)と、 他のステージと並列に実行することのできるライトバッ
クステージ(WB)において、前記メモリアクセスステ
ージ(MA)で前記メモリ手段から得られるオペランド
データ又は前記命令実行ステージ(EX)において処理
されたオペランドデータをレジスタ手段に書き込むライ
トバック手段(105)と、 前記命令フェッチ手段(101)、前記命令デコード手
段(102)、前記命令実行手段(103)、前記メモ
リアクセス手段(104)、及び前記ライトバック手段
(105)が使用するデータをそれぞれ順次保持するも
のであって、命令フェッチステージデータ保持手段、命
令デコードステージデータ保持手段、命令実行ステージ
データ保持手段、メモリアクセスステージデータ保持手
段、及びライトバックステージデータ保持手段から構成
されるパイプラインと、 前記命令フェッチステージデータ保持手段を、命令アド
レスを前記メモリ手段に対して出力するステージである
命令アドレス出力ステージ(IFa)で使用されるデー
タを保持する命令アドレス出力ステージデータ保持手段
と、前記メモリ手段から前記命令アドレスに対応する命
令データを入力するステージである命令データ入力ステ
ージ(IFd)で使用されるデータを保持する命令デー
タ入力ステージデータ保持手段に分割する命令フェッチ
ステージ分割手段(106)と、 を有することを特徴とする可変長パイプライン制御装
置。 - 【請求項7】 前記命令フェッチステージ分割手段(1
06)が前記命令フェッチステージデータ保持手段を分
割していない状態で、プロセッサチップの外部に接続さ
れる外部メモリに対して命令のフェッチが発生した時点
において、前記命令フェッチステージ分割手段(10
6)に対して前記命令フェッチステージデータ保持手段
を分割させる命令フェッチステージ分割制御手段(10
7)を更に有する、 ことを特徴とする請求項6に記載の可変長パイプライン
制御装置。 - 【請求項8】 前記命令フェッチステージ分割制御手段
(107)は、前記命令フェッチステージ保持手段が分
割されている状態で、分岐命令の実行によって分岐が発
生し、かつ該分岐に対応する分岐先命令がプロセッサチ
ップに内蔵される内部メモリからフェッチされる時点に
おいて、前記命令フェッチステージ分割手段(106)
に対して前記命令フェッチステージデータ保持手段の分
割を解除させる、 ことを特徴とする請求項7に記載の可変長パイプライン
制御装置。 - 【請求項9】 前記命令アドレス出力ステージデータ保
持手段に対して、該手段が保持するデータの出力動作を
任意の命令サイクル数だけウエイトさせる命令アドレス
出力ステージウエイト制御手段(108)を更に有す
る、 ことを特徴とする請求項6乃至8の何れか1項に記載の
可変長パイプライン制御装置。 - 【請求項10】 前記パイプラインが保持するデータ
は、プログラムカウンタ値である、 ことを特徴とする請求項6乃至9の何れか1項に記載の
可変長パイプライン制御装置。 - 【請求項11】 他のステージと並列に実行することの
できる命令フェッチステージ(IF)において、メモリ
手段から命令をフェッチする命令フェッチ手段(10
1)と、 他のステージと並列に実行することのできる命令デコー
ドステージ(ID)において、前記フェッチされた命令
をデコードする命令デコード手段(102)と、 他のステージと並列に実行することのできる命令実行ス
テージ(EX)において、前記デコードされた命令を実
行する命令実行手段(103)と、 他のステージと並列に実行することのできるメモリアク
セスステージ(MA)において、前記命令実行ステージ
(EX)において計算されたアドレスに対して前記メモ
リ手段にリード又はライトを行うメモリアクセス手段
(104)と、 他のステージと並列に実行することのできるライトバッ
クステージ(WB)において、前記メモリアクセスステ
ージ(MA)で前記メモリ手段から得られるオペランド
データ又は前記命令実行ステージ(EX)において処理
されたオペランドデータをレジスタ手段に書き込むライ
トバック手段(105)と、 前記メモリアクセスステージ(MA)を、オペランドア
ドレスを前記メモリ手段に対して出力するオペランドア
ドレス出力ステージ(Ma)と、前記メモリ手段に対し
て前記オペランドアドレスに対応するオペランドデータ
をリード又はライトするオペランドデータリード/ライ
トステージ(Md)に分割するメモリアクセスステージ
分割手段(109)と、 を有することを特徴とする可変長パイプライン制御装
置。 - 【請求項12】 前記メモリアクセスステージ分割手段
(109)が前記メモリアクセスステージ(MA)を分
割していない状態で、プロセッサチップの外部に接続さ
れる外部メモリに対して前記オペランドデータのアクセ
スが発生した時点において、前記メモリアクセスステー
ジ分割手段(109)に対して前記メモリアクセスステ
ージ(MA)を分割させるメモリアクセスステージ分割
制御手段(110)を更に有する、 ことを特徴とする請求項11に記載の可変長パイプライ
ン制御装置。 - 【請求項13】 前記メモリアクセスステージ分割制御
手段(110)は、前記メモリアクセスステージ(M
A)が分割されている状態で、メモリアクセスを伴わな
い命令が実行され、かつ該命令に続く命令が実行するメ
モリアクセスがプロセッサチップに内蔵される内部メモ
リに対するものであった時点において、前記メモリアク
セスステージ分割手段(109)に対して前記メモリア
クセスステージ(MA)の分割を解除させる、 ことを特徴とする請求項12に記載の可変長パイプライ
ン制御装置。 - 【請求項14】 前記オペランドアドレス出力ステージ
(Ma)を任意の命令サイクル数だけウエイト状態にす
るオペランドアドレス出力ステージウエイト制御手段
(111)を更に有する、 ことを特徴とする請求項11乃至13の何れか1項に記
載の可変長パイプライン制御装置。 - 【請求項15】 前記メモリアクセス手段(104)に
よって実行される、前記オペランドアドレス出力ステー
ジ(Ma)における前記オペランドアドレスの出力動作
と、前記オペランドデータリード/ライトステージ(M
d)における前記オペランドデータのリード又はライト
動作は、並列に実行される、 ことを特徴とする請求項11乃至14の何れか1項に記
載の可変長パイプライン制御装置。 - 【請求項16】 他のステージと並列に実行することの
できる命令フェッチステージ(IF)において、メモリ
手段から命令をフェッチする命令フェッチ手段(10
1)と、 他のステージと並列に実行することのできる命令デコー
ドステージ(ID)において、前記フェッチされた命令
をデコードする命令デコード手段(102)と、 他のステージと並列に実行することのできる命令実行ス
テージ(EX)において、前記デコードされた命令を実
行する命令実行手段(103)と、 他のステージと並列に実行することのできるメモリアク
セスステージ(MA)において、前記命令実行ステージ
(EX)において計算されたアドレスに対して前記メモ
リ手段にリード又はライトを行うメモリアクセス手段
(104)と、 他のステージと並列に実行することのできるライトバッ
クステージ(WB)において、前記メモリアクセスステ
ージ(MA)で前記メモリ手段から得られるオペランド
データ又は前記命令実行ステージ(EX)において処理
されたオペランドデータをレジスタ手段に書き込むライ
トバック手段(105)と、 前記命令フェッチ手段(101)、前記命令デコード手
段(102)、前記命令実行手段(103)、前記メモ
リアクセス手段(104)、及び前記ライトバック手段
(105)が使用するデータをそれぞれ順次保持するも
のであって、命令フェッチステージデータ保持手段、命
令デコードステージデータ保持手段、命令実行ステージ
データ保持手段、メモリアクセスステージデータ保持手
段、及びライトバックステージデータ保持手段から構成
されるパイプラインと、 前記メモリアクセスステージデータ保持手段を、オペラ
ンドアドレスを前記メモリ手段に対して出力するステー
ジであるオペランドアドレス出力ステージ(Ma)で使
用されるデータを保持するオペランドアドレス出力ステ
ージデータ保持手段と、前記メモリ手段に対して前記オ
ペランドアドレスに対応するオペランドデータをリード
又はライトするステージであるオペランドデータリード
/ライトステージ(Md)で使用されるデータを保持す
るオペランドデータリード/ライトステージデータ保持
手段に分割するメモリアクセスステージ分割手段(10
9)と、 を有することを特徴とする可変長パイプライン制御装
置。 - 【請求項17】 前記メモリアクセスステージ分割手段
(109)が前記メモリアクセスステージデータ保持手
段を分割していない状態で、プロセッサチップの外部に
接続される外部メモリに対して前記オペランドデータの
アクセスが発生した時点において、前記メモリアクセス
ステージ分割手段(109)に対して前記メモリアクセ
スステージデータ保持手段を分割させるメモリアクセス
ステージ分割制御手段(110)を更に有する、 ことを特徴とする請求項16に記載の可変長パイプライ
ン制御装置。 - 【請求項18】 前記メモリアクセスステージ分割制御
手段(110)は、前記メモリアクセスステージ保持手
段が分割されている状態で、メモリアクセスを伴わない
命令が実行され、かつ該命令に続く命令が実行するメモ
リアクセスがプロセッサチップに内蔵される内部メモリ
に対するものであった時点において、前記メモリアクセ
スステージ分割手段(109)に対して前記メモリアク
セスステージデータ保持手段の分割を解除させる、 ことを特徴とする請求項17に記載の可変長パイプライ
ン制御装置。 - 【請求項19】 前記オペランドアドレス出力ステージ
データ保持手段に対して、該手段が保持するデータの出
力動作を任意の命令サイクル数だけウエイトさせるオペ
ランドアドレス出力ステージウエイト制御手段(11
1)を更に有する、 ことを特徴とする請求項16乃至18の何れか1項に記
載の可変長パイプライン制御装置。 - 【請求項20】 前記パイプラインが保持するデータ
は、プログラムカウンタ値である、 ことを特徴とする請求項16乃至19の何れか1項に記
載の可変長パイプライン制御装置。 - 【請求項21】 他のステージと並列に実行することの
できる命令フェッチステージ(IF)において、メモリ
手段から命令をフェッチする命令フェッチ手段(10
1)と、 他のステージと並列に実行することのできる命令デコー
ドステージ(ID)において、前記フェッチされた命令
をデコードする命令デコード手段(102)と、 他のステージと並列に実行することのできる命令実行ス
テージ(EX)において、前記デコードされた命令を実
行する命令実行手段(103)と、 他のステージと並列に実行することのできるメモリアク
セスステージ(MA)において、前記命令実行ステージ
(EX)において計算されたアドレスに対して前記メモ
リ手段にリード又はライトを行うメモリアクセス手段
(104)と、 他のステージと並列に実行することのできるライトバッ
クステージ(WB)において、前記メモリアクセスステ
ージ(MA)で前記メモリ手段から得られるオペランド
データ又は前記命令実行ステージ(EX)において処理
されたオペランドデータをレジスタ手段に書き込むライ
トバック手段(105)と、 前記命令フェッチステージ(IF)を、命令アドレスを
前記メモリ手段に対して出力する命令アドレス出力ステ
ージ(IFa)と、前記メモリ手段から前記命令アドレ
スに対応する命令データを入力する命令データ入力ステ
ージ(IFd)に分割する命令フェッチステージ分割手
段(106)と、 前記メモリアクセスステージ(MA)を、オペランドア
ドレスを前記メモリ手段に対して出力するオペランドア
ドレス出力ステージ(Ma)と、前記メモリ手段に対し
て前記オペランドアドレスに対応するオペランドデータ
をリード又はライトするオペランドデータリード/ライ
トステージ(Md)に分割するメモリアクセスステージ
分割手段(109)と、 を有することを特徴とする可変長パイプライン制御装
置。 - 【請求項22】 前記命令フェッチステージ分割手段
(106)が前記命令フェッチステージ(IF)を分割
していない状態で、プロセッサチップの外部に接続され
る外部メモリに対して命令のフェッチが発生した時点に
おいて、前記命令フェッチステージ分割手段(106)
に対して前記命令フェッチステージ(IF)を分割させ
る命令フェッチステージ分割制御手段(107)を更に
有する、 ことを特徴とする請求項21に記載の可変長パイプライ
ン制御装置。 - 【請求項23】 前記命令フェッチステージ分割制御手
段(107)は、前記命令フェッチステージ(IF)が
分割されている状態で、分岐命令の実行によって分岐が
発生し、かつ該分岐に対応する分岐先命令がプロセッサ
チップに内蔵される内部メモリからフェッチされる時点
において、前記命令フェッチステージ分割手段(10
6)に対して前記命令フェッチステージ(IF)の分割
を解除させる、 ことを特徴とする請求項22に記載の可変長パイプライ
ン制御装置。 - 【請求項24】 前記メモリアクセスステージ分割手段
(109)が前記メモリアクセスステージ(MA)を分
割していない状態で、プロセッサチップの外部に接続さ
れる外部メモリに対して前記オペランドデータのアクセ
スが発生した時点において、前記メモリアクセスステー
ジ分割手段(109)に対して前記メモリアクセスステ
ージ(MA)を分割させるメモリアクセスステージ分割
制御手段(110)を更に有する、 ことを特徴とする請求項21乃至23の何れか1項に記
載の可変長パイプライン制御装置。 - 【請求項25】 前記メモリアクセスステージ分割制御
手段(110)は、前記メモリアクセスステージ(M
A)が分割されている状態で、メモリアクセスを伴わな
い命令が実行され、かつ該命令に続く命令が実行するメ
モリアクセスがプロセッサチップに内蔵される内部メモ
リに対するものであった時点において、前記メモリアク
セスステージ分割手段(109)に対して前記メモリア
クセスステージ(MA)の分割を解除させる、 ことを特徴とする請求項24に記載の可変長パイプライ
ン制御装置。 - 【請求項26】 前記命令アドレス出力ステージ(IF
a)を任意の命令サイクル数だけウエイト状態にする命
令アドレス出力ステージウエイト制御手段(108)
と、 前記オペランドアドレス出力ステージ(Ma)を任意の
命令サイクル数だけウエイト状態にするオペランドアド
レス出力ステージウエイト制御手段(111)と、 を更に有することを特徴とする請求項21乃至25の何
れか1項に記載の可変長パイプライン制御装置。 - 【請求項27】 前記命令フェッチ手段(101)によ
って実行される、前記命令アドレス出力ステージ(IF
a)における前記命令アドレスの出力動作と、前記命令
データ入力ステージ(IFd)における前記命令データ
の入力動作は、並列に実行され、前記メモリアクセス手
段(104)によって実行される、前記オペランドアド
レス出力ステージ(Ma)における前記オペランドアド
レスの出力動作と、前記オペランドデータリード/ライ
トステージ(Md)における前記オペランドデータのリ
ード又はライト動作は、並列に実行される、 ことを特徴とする請求項21乃至26の何れか1項に記
載の可変長パイプライン制御装置。 - 【請求項28】 他のステージと並列に実行することの
できる命令フェッチステージ(IF)において、メモリ
手段から命令をフェッチする命令フェッチ手段(10
1)と、 他のステージと並列に実行することのできる命令デコー
ドステージ(ID)において、前記フェッチされた命令
をデコードする命令デコード手段(102)と、 他のステージと並列に実行することのできる命令実行ス
テージ(EX)において、前記デコードされた命令を実
行する命令実行手段(103)と、 他のステージと並列に実行することのできるメモリアク
セスステージ(MA)において、前記命令実行ステージ
(EX)において計算されたアドレスに対して前記メモ
リ手段にリード又はライトを行うメモリアクセス手段
(104)と、 他のステージと並列に実行することのできるライトバッ
クステージ(WB)において、前記メモリアクセスステ
ージ(MA)で前記メモリ手段から得られるオペランド
データ又は前記命令実行ステージ(EX)において処理
されたオペランドデータをレジスタ手段に書き込むライ
トバック手段(105)と、 前記命令フェッチ手段(101)、前記命令デコード手
段(102)、前記命令実行手段(103)、前記メモ
リアクセス手段(104)、及び前記ライトバック手段
(105)が使用するデータをそれぞれ順次保持するも
のであって、命令フェッチステージデータ保持手段、命
令デコードステージデータ保持手段、命令実行ステージ
データ保持手段、メモリアクセスステージデータ保持手
段、及びライトバックステージデータ保持手段から構成
されるパイプラインと、 前記命令フェッチステージデータ保持手段を、命令アド
レスを前記メモリ手段に対して出力するステージである
命令アドレス出力ステージ(IFa)で使用されるデー
タを保持する命令アドレス出力ステージデータ保持手段
と、前記メモリ手段から前記命令アドレスに対応する命
令データを入力するステージである命令データ入力ステ
ージ(IFd)で使用されるデータを保持する命令デー
タ入力ステージデータ保持手段に分割する命令フェッチ
ステージ分割手段(106)と、 前記メモリアクセスステージデータ保持手段を、オペラ
ンドアドレスを前記メモリ手段に対して出力するステー
ジであるオペランドアドレス出力ステージ(Ma)で使
用されるデータを保持するオペランドアドレス出力ステ
ージデータ保持手段と、前記メモリ手段に対して前記オ
ペランドアドレスに対応するオペランドデータをリード
又はライトするステージであるオペランドデータリード
/ライトステージ(Md)で使用されるデータを保持す
るオペランドデータリード/ライトステージデータ保持
手段に分割するメモリアクセスステージ分割手段(10
9)と、 を有することを特徴とする可変長パイプライン制御装
置。 - 【請求項29】 前記命令フェッチステージ分割手段
(106)が前記命令フェッチステージデータ保持手段
を分割していない状態で、プロセッサチップの外部に接
続される外部メモリに対して命令のフェッチが発生した
時点において、前記命令フェッチステージ分割手段(1
06)に対して前記命令フェッチステージデータ保持手
段を分割させる命令フェッチステージ分割制御手段(1
07)を更に有する、 ことを特徴とする請求項28に記載の可変長パイプライ
ン制御装置。 - 【請求項30】 前記命令フェッチステージ分割制御手
段(107)は、前記命令フェッチステージ保持手段が
分割されている状態で、分岐命令の実行によって分岐が
発生し、かつ該分岐に対応する分岐先命令がプロセッサ
チップに内蔵される内部メモリからフェッチされる時点
において、前記命令フェッチステージ分割手段(10
6)に対して前記命令フェッチステージデータ保持手段
の分割を解除させる、 ことを特徴とする請求項29に記載の可変長パイプライ
ン制御装置。 - 【請求項31】 前記メモリアクセスステージ分割手段
(109)が前記メモリアクセスステージデータ保持手
段を分割していない状態で、プロセッサチップの外部に
接続される外部メモリに対して前記オペランドデータの
アクセスが発生した時点において、前記メモリアクセス
ステージ分割手段(109)に対して前記メモリアクセ
スステージデータ保持手段を分割させるメモリアクセス
ステージ分割制御手段(110)を更に有する、 ことを特徴とする請求項28乃至30の何れか1項に記
載の可変長パイプライン制御装置。 - 【請求項32】 前記メモリアクセスステージ分割制御
手段(110)は、前記メモリアクセスステージ保持手
段が分割されている状態で、メモリアクセスを伴わない
命令が実行され、かつ該命令に続く命令が実行するメモ
リアクセスがプロセッサチップに内蔵される内部メモリ
に対するものであった時点において、前記メモリアクセ
スステージ分割手段(109)に対して前記メモリアク
セスステージデータ保持手段の分割を解除させる、 ことを特徴とする請求項31に記載の可変長パイプライ
ン制御装置。 - 【請求項33】 前記命令アドレス出力ステージデータ
保持手段に対して、該手段が保持するデータの出力動作
を任意の命令サイクル数だけウエイトさせる命令アドレ
ス出力ステージウエイト制御手段(108)と、 前記オペランドアドレス出力ステージデータ保持手段に
対して、該手段が保持するデータの出力動作を任意の命
令サイクル数だけウエイトさせるオペランドアドレス出
力ステージウエイト制御手段(111)と、 を更に有することを特徴とする請求項28乃至32の何
れか1項に記載の可変長パイプライン制御装置。 - 【請求項34】 前記パイプラインが保持するデータ
は、プログラムカウンタ値である、 ことを特徴とする請求項28乃至33の何れか1項に記
載の可変長パイプライン制御装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP00025594A JP3461887B2 (ja) | 1994-01-06 | 1994-01-06 | 可変長パイプライン制御装置 |
US08/367,494 US5706459A (en) | 1994-01-06 | 1994-12-30 | Processor having a variable number of stages in a pipeline |
US08/927,065 US5949996A (en) | 1994-01-06 | 1997-09-10 | Processor having a variable number of stages in a pipeline |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP00025594A JP3461887B2 (ja) | 1994-01-06 | 1994-01-06 | 可変長パイプライン制御装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07200291A true JPH07200291A (ja) | 1995-08-04 |
JP3461887B2 JP3461887B2 (ja) | 2003-10-27 |
Family
ID=11468820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP00025594A Expired - Fee Related JP3461887B2 (ja) | 1994-01-06 | 1994-01-06 | 可変長パイプライン制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3461887B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100237642B1 (ko) * | 1996-12-30 | 2000-01-15 | 구자홍 | 파이프라인 정지회로를 구비한 프로세서 |
JP2002073330A (ja) * | 2000-08-28 | 2002-03-12 | Mitsubishi Electric Corp | データ処理装置 |
-
1994
- 1994-01-06 JP JP00025594A patent/JP3461887B2/ja not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100237642B1 (ko) * | 1996-12-30 | 2000-01-15 | 구자홍 | 파이프라인 정지회로를 구비한 프로세서 |
JP2002073330A (ja) * | 2000-08-28 | 2002-03-12 | Mitsubishi Electric Corp | データ処理装置 |
US7694109B2 (en) | 2000-08-28 | 2010-04-06 | Renesas Technology Corp. | Data processing apparatus of high speed process using memory of low speed and low power consumption |
Also Published As
Publication number | Publication date |
---|---|
JP3461887B2 (ja) | 2003-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5706459A (en) | Processor having a variable number of stages in a pipeline | |
US5404552A (en) | Pipeline risc processing unit with improved efficiency when handling data dependency | |
US7793079B2 (en) | Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction | |
JP3842474B2 (ja) | データ処理装置 | |
US20020169942A1 (en) | VLIW processor | |
US6101596A (en) | Information processor for performing processing without register conflicts | |
US6275903B1 (en) | Stack cache miss handling | |
KR100210205B1 (ko) | 스톨캐쉬를 제공하기 위한 장치 및 방법 | |
US20070260857A1 (en) | Electronic Circuit | |
EP1770507A2 (en) | Pipeline processing based on RISC architecture | |
JP3790626B2 (ja) | デュアルワードまたは複数命令をフェッチしかつ発行する方法および装置 | |
US6055628A (en) | Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks | |
US6237086B1 (en) | 1 Method to prevent pipeline stalls in superscalar stack based computing systems | |
US7003649B2 (en) | Control forwarding in a pipeline digital processor | |
JP3461887B2 (ja) | 可変長パイプライン制御装置 | |
US6170050B1 (en) | Length decoder for variable length data | |
US5737562A (en) | CPU pipeline having queuing stage to facilitate branch instructions | |
JP3199035B2 (ja) | プロセッサ及びその実行制御方法 | |
JPH0651984A (ja) | マイクロプロセッサ | |
US20230315446A1 (en) | Arithmetic processing apparatus and method for arithmetic processing | |
JP3102399B2 (ja) | データ処理装置及び方法 | |
JPH07114509A (ja) | メモリアクセス装置 | |
JP3325309B2 (ja) | サブルーチンリターン命令処理装置 | |
JPH06139071A (ja) | 並列計算機 | |
JP4151497B2 (ja) | パイプライン処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20030805 |
|
LAPS | Cancellation because of no payment of annual fees |