JP3568737B2 - 条件実行命令を備えるマイクロプロセッサ - Google Patents
条件実行命令を備えるマイクロプロセッサ Download PDFInfo
- Publication number
- JP3568737B2 JP3568737B2 JP12452697A JP12452697A JP3568737B2 JP 3568737 B2 JP3568737 B2 JP 3568737B2 JP 12452697 A JP12452697 A JP 12452697A JP 12452697 A JP12452697 A JP 12452697A JP 3568737 B2 JP3568737 B2 JP 3568737B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- execution
- pipeline
- circuit
- register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Advance Control (AREA)
Description
【発明の属する技術分野】
この発明は、命令の一部で指定される実行条件フィールドを用いて、マイクロプロセッサの命令の実行を制御する機能を備えた条件実行命令を備えるマイクロプロセッサに関するものである。
【0002】
【従来の技術】
マイクロプロセッサの性能向上のための一手法として、分岐のペナルティを減少させるために、条件実行や、投機実行などの手法が検討されている。条件実行を行う従来のARMマイクロプロセッサでは、条件実行の判定に用いるためのフラグが、ネガティブフラグ(N)、ゼロフラグ(Z)、キャリーフラグ(C)、オーバーフローフラグ(V)という特定の命令でのみ設定される専用フラグを使用している。
【0003】
また従来では、マイクロプロセッサの性能向上のための一手法として、一命令の実行を複数ステージに分割しパイプライン的に連続して実行する手法がある。
【0004】
図28は、従来のMMAマイクロプロセッサのプロセッサコアの構成を示すブロック図であり、図において、900は、MMAマイクロプロセッサのプロセッサコア、901はMMAのマイクロプロセッサ内の1つの実行ユニットである。902は、MMAマイクロプロセッサの命令を実行する他の実行ユニット、904はデータRAMである。このように、従来のMMAマイクロプロセッサでは一つの命令中の2つのサブ命令を2つの実行ユニット901,902で同時に実行可能である。
【0005】
実行ユニット901は、乗算器910、アキュムレータ911、シフタ912およびALU913から構成されている。また、実行ユニット902は、ALU914、ロード/ストアユニット915から構成されている。
920,921は、実行ユニット901に含まれる演算器のためのソースデータバスである。このソースデータバス920,921を介して演算のために必要なデータが汎用レジスタより読み出される。また、930,931は、実行ユニット902内に含まれる演算器等のためのソースデータバスである。演算のために必要なデータが汎用レジスタ903より読み出される。
【0006】
925は、実行ユニット901内の乗算器910やALU913等の演算結果を汎用レジスタ903へ書き戻すためのライトバックバスである。932,933は、実行ユニット902内のALU914等の演算結果等を汎用レジスタ903へ書き戻すためのライトバックレジスタである。922,923は、乗算器910とアキュムレータ911との間を結ぶ内部バスであり、この内部バスを介して、ペナルティなしに累積加算を実行することが可能である。940は、ロード/ストアユニット915とデータRAM904を結ぶ双方向バスであり、オペランドデータのロード/ストアの制御に使用される。
【0007】
図29は、図28に示した従来のMMAマイクロプロセッサ内に組み込まれている実行ユニット901の一部の回路をパイプライン的に配置したブロック図である。903は汎用レジスタである。913はALUである。910a,910bは乗算を行うための部品であり、それぞれワレスの(Wallace)ツリー回路とCPAである。乗算は2ステージで実行することが可能である。921は、汎用レジスタからソースデータを読み出すバスである。925は、汎用レジスタに演算結果を書き戻すためのライトバックレジスタである。970,971,972は、ソースデータバスにデータをドライブする3ステートバッファである。980は、ALU913の演算結果をソースデータバスに出力するためのバイパス経路である。981は、乗算結果をソースデータバスに出力するためのバイパス経路である。
【0008】
図28に示すように、実行ユニット901での1つの命令の実行は、F,D,R,E,M,Wの6ステージを必要とし、これらのステージはパイプライン的に実行される。1命令を6段のパイプラインで実行するために、データバス用のレジスタ(DR)950,951,952,953,954,955,956等が組込まれている。960は命令デコーダである。制御信号もパイプライン的に生成され、制御パス用のレジスタ(CR)961,962,963,964が組込まれている。
【0009】
制御パス用のレジスタ962から出力される出力信号は、レジスタ950のライトイネーブル信号である。制御パス用レジスタ963の出力信号は、3ステートバッファ971,972のイネーブル信号である。制御パス用レジスタ964の出力信号は、3ステートバッファ970のイネーブル信号である。
【0010】
図30は、図28に示す従来のMMAマイクロプロセッサで実行される命令のパイプライン図であり、図において、白の部分は実行ユニット901で実行されているサブ命令のパイプラインを示しており、斜線部分は実行ユニット902で実行されているサブ命令のパイプラインを示している。1000は、実行ユニット901で実行されるサブ命令のパイプラインである。1001は、実行ユニット902で実行されるサブ命令のパイプラインであり、パイプライン1000と同時に実行される。1002は、パイプライン1000,1001のサブ命令とデータ干渉が発生しない場合において、後続命令が実行ユニット901で実行されるサブ命令のパイプラインである。1003は、パイプライン1000,1001のサブ命令の実行とデータ干渉が発生しない場合、実行ユニット902で実行される後続命令としてのサブ命令のパイプラインである。
【0011】
【発明が解決しようとする課題】
従来のMMAマイクロプロセッサは以上のように構成されているので、先行命令と後続命令との間にデータ干渉が発生しない場合は、パイプラインが乱れることなく1クロック遅れで後続命令を実行することが可能である。1005は、実行ユニット902で実行されるサブ命令のパイプラインであり、パイプライン1000のサブ命令との間でデータ干渉が発生する場合を示している。1004は、実行ユニット901で実行されるサブ命令のパイプラインであり、パイプライン1005と同時に実行される。
【0012】
上記したように、異なる複数の実行ユニット901,902間で先行命令と後続命令との間にデータ干渉が発生した場合、これらの実行ユニット901,902を直接に接続する専用のバイパス経路等が組み込まれていない場合は、先行命令が汎用レジスタ903内に処理結果を書き込むまでは、後続命令は汎用レジスタ903の読み出しを待つ必要がある。
【0013】
上記した従来例の場合では、パイプライン1002,1003に比較して、パイプライン1004,1005では3クロックのペナルティが発生する。MMAマイクロプロセッサのように複数段のパイプライン実行を行うマイクロプロセッサでは、データ干渉を回避するため上記したパイプラインの一時停止が頻繁に発生するという課題があった。
【0014】
この発明は上記のような課題を解決するためになされたもので、先行命令と現在実行する命令のパイプライン間にデータ干渉が発生し、そのデータ干渉を回避するためパイプラインの停止を行う場合、そのパイプラインの停止を誘因した原因となる命令が、条件実行判定で不実行となった場合、そのパイプラインの停止動作をキャンセルし、パイプラインのペナルティを削減することが可能な条件実行命令を備えるマイクロプロセッサを得ることを目的とする。
【0015】
【課題を解決するための手段】
請求項1記載の発明に係る条件実行命令を備えるマイクロプロセッサは、命令やデータを格納する命令RAMやデータRAM等からなるメモリと、前記メモリへ接続され命令をデコードする命令デコーダと、命令の実行を制御する情報を格納する制御レジスタと、データを格納する複数個のレジスタと、算術演算等を実行する演算ユニットと、前記命令デコーダに接続され前記命令デコーダから出力された出力に従い前記命令を実行する命令実行ユニットと、前記プログラム内の先行命令の動作に基づいて現命令の実行を一時的に停止する実行停止回路と、前記先行命令の実行を行うか否かの判定を行う条件実行判定回路と、前記条件実行判定回路が前記先行命令を実行しないと判定した場合、前記先行命令の動作を開始する信号を無効とする処理を行う条件実行制御回路とを備えるものである。
【0016】
請求項2記載の発明に係る条件実行命令を備えるマイクロプロセッサは、実行停止回路は、先行命令がメモリをアクセスし、そのアクセス完了を示すメモリアクセス完了信号が前記メモリから送信されるまでに複数クロック必要とする場合、前記先行命令のメモリアクセスが完了するまで現命令の実行を停止し、前記メモリから送信される前記アクセス完了信号に基づいて条件実行判定回路の動作は制御され、前記条件実行判定回路は、前記先行命令内の実行条件フィールドと制御レジスタ内の汎用フラグの値に基づいて前記先行命令の実行を行うか否かの判定を行い、前記条件実行判定回路が前記先行命令を実行しないと判定した場合に、条件実行制御回路は、前記先行命令の前記メモリへのアクセス処理を開始するアクセス開始信号を無効とするものである。
【0017】
請求項3記載の発明に係る条件実行命令を備えるマイクロプロセッサは、先行命令の処理結果を汎用レジスタへ書き込む以前に現命令が処理結果を汎用レジスタから読み出す場合、先行命令のデスティネーションレジスタ指定フィールドと現命令のソースレジスタ指定フィールドが一致することを判定するデータ干渉判定回路と、先行命令の処理結果を汎用レジスタを経由することなく現命令を実行する命令実行ユニットに転送するバイパス経路とをさらに備え、実行停止回路がバイパス経路を介して先行命令の処理結果が転送可能になるまで、現命令の実行を停止し、条件実行判定回路が先行命令内の実行条件フィールドの値および制御レジスタから得られる汎用フラグの値により先行命令の実行を行うか否かの判定を行い、データ干渉判定回路から送信される制御信号に基づいて実行停止回路とバイパス経路の動作が制御され、条件実行判定回路が先行命令を実行しないと判定した場合、条件実行制御回路が実行停止回路から送信される現命令の動作を停止する制御信号および先行命令の処理結果を現命令を実行する命令実行ユニットへ転送するためのバイパス経路の動作を制御する制御信号を無効とするように制御し、ロード命令のアドレス計算用データが同じ命令実行ユニットで実行される先行命令の結果データと干渉を発生し、かつその先行命令が条件実行判定で不実行となった場合に、その条件実行キャンセル信号でパイプラインインターロック信号とバイパス経路選択信号をキャンセルして、パイプラインのペナルティを削除するものである。
【0018】
請求項4記載の発明に係る条件実行命令を備えるマイクロプロセッサは、先行命令の処理結果を汎用レジスタへ書き込む以前に、現命令が処理結果を汎用レジスタから読み出す場合、先行命令のデスティネーションレジスタ指定フィールドと現命令のソースレジスタ指定フィールドとが一致することを判定するデータ干渉判定回路とをさらに備え、実行停止回路が先行命令の処理結果が汎用レジスタへ書き込み完了されるまで現命令の実行を停止させ、条件実行判定回路が先行命令内の実行条件フィールドの値および制御レジスタから得られる汎用フラグの値により先行命令の実行を行うか否かの判定を行い、データ干渉判定回路から送信される制御信号により実行停止回路の動作が制御され、条件実行判定回路で先行命令を実行しないと判定した場合、条件実行制御回路は実行停止回路から送信される現命令の動作の停止を制御する制御信号を無効とするように制御し、異なる命令実行ユニット間でデータ干渉が発生し、かつその先行命令が条件実行判定で不実行となった場合に、その条件実行キャンセル信号でパイプラインインターロック信号をキャンセルして、パイプラインのペナルティを削除するものである。
【0019】
請求項5記載の発明に係る条件実行命令を備えるマイクロプロセッサは、先行命令の処理結果を汎用レジスタへ書き込む以前に、異なる命令実行ユニットで実行される現命令が処理結果を汎用レジスタから読み出す場合、先行命令のデスティネーションレジスタ指定フィールドと現命令のソースレジスタ指定フィールドとが一致することを判定するデータ干渉判定回路と、先行命令の処理結果を汎用レジスタを経由することなく現命令を実行する異なる命令実行ユニットへ転送するバイパス経路とをさらに備え、実行停止回路がバイパス経路を介して先行命令の処理結果を転送可能な時まで現命令の実行を停止し、条件実行判定回路が先行命令内の実行条件フィールドおよび制御レジスタから得られる汎用フラグの値により先行命令の実行を行うか否かの判定を行い、データ干渉判定回路から送信される制御信号に基づいて実行停止回路およびバイパス経路の動作が制御され、条件実行判定回路が先行命令を実行しないと判定した場合、条件実行制御回路は、実行停止回路から送信される現命令の実行停止を指示する制御信号と、現命令の実行を行う異なる命令実行ユニットへ先行命令の処理結果を転送するためのバイパス経路の動作を制御する制御信号を無効とするように制御し、メモリアクセス部で実行されるロード命令のロードデータが、整数演算部で実行される乗算命令のソースデータと干渉を起こし、かつその先行ロード命令が条件実行判定で不実行となった場合に、その条件実行キャンセル信号でパイプラインインターロック信号とバイパス経路選択信号とをキャンセルして、パイプラインのペナルティを削除するものである。
【0020】
請求項6記載の発明に係る条件実行命令を備えるマイクロプロセッサは、先行命令の処理結果を制御レジスタ内の汎用フラグへ書き込む以前に、現命令が処理結果を制御レジスタ内の汎用フラグから読み出す場合、先行命令のデスティネーションフラグ指定フィールドと現命令のソースフラグ指定フィールドとが一致することを判定するフラグ干渉判定回路とをさらに備え、実行停止回路が先行命令の処理結果が制御レジスタ内の汎用フラグへの書き込み動作が完了するまで現命令の実行を停止させ、条件実行判定回路が先行命令内の実行条件フィールドの値と制御レジスタ内の汎用フラグの値とにより先行命令の実行を行うか否かの判定を行い、フラグ干渉判定回路から送信された制御信号に基づいて実行停止回路の動作が制御され、条件実行判定回路が先行命令を実行しないと判定した場合、条件実行制御回路は実行停止回路から送信された現命令の実行を停止する制御信号を無効とするように制御し、あるフラグを用いる命令の先行命令がそのフラグを更新し、かつその先行命令が条件実行判定で不実行となった場合に、その条件実行キャンセル信号でパイプラインインターロック信号をキャンセルすることでパイプラインのペナルティを削除するものである。
【0021】
請求項7記載の発明に係る条件実行命令を備えるマイクロプロセッサは、先行命令の処理結果を制御レジスタ内の汎用フラグへ書き込む以前に、現命令が制御レジスタ内の汎用フラグを用いて条件実行判定を行う場合、先行命令のデスティネーションフラグ指定フィールドと現命令のソースフラグ指定フィールドとが一致することを判定するフラグ干渉判定回路とをさらに備え、実行停止回路が先行命令の処理結果が制御レジスタ内の汎用フラグへ書き込み完了されるまで現命令の実行を停止させ、条件実行判定回路が先行命令内の実行条件フィールドと制御レジスタから得られる汎用フラグの値により先行命令の実行を行うか否かの判定を行い、フラグ干渉判定回路から送信される制御信号に基づいて実行停止回路の動作が制御され、条件実行判定回路が先行命令を実行しないと判定した場合、条件実行制御回路が実行停止回路から送信される現命令の実行停止を指示する制御信号を無効とするように制御し、条件実行判定を伴う命令の先行命令が条件実行フラグを更新し、かつその先行命令が条件実行判定で不実行となった場合に、その条件実行キャンセル信号でパイプラインインターロック信号をキャンセルしてパイプラインのペナルティを削除するものである。
【0022】
請求項8記載の発明に係る条件実行命令を備えるマイクロプロセッサは、先行命令が制御レジスタ内のモードフラグを更新する場合、先行命令が制御レジスタ内のモードフラグを更新する命令であることを検知するモードフラグ判定回路とをさらに備え、実行停止回路は、先行命令が制御レジスタ内のモードフラグの値を更新完了するまで現命令の動作を停止させ、条件実行判定回路が、先行命令内の実行条件フィールドと制御レジスタから得られる汎用フラグの値により先行命令の実行を行うか否かの判定を行い、条件実行判定回路から送信される制御信号に基づいて実行停止回路の動作が制御され、条件実行判定回路で先行命令を実行しないと判定した場合、条件実行制御回路は実行停止回路から送信される現命令の動作の停止を指示する制御信号を無効とするように制御し、モードフラグを更新する命令が条件実行判定で不実行となった場合に、その条件実行キャンセル信号で後続命令のパイプラインインターロック信号をキャンセルすることでパイプラインのペナルティを削除するものである。
【0023】
請求項9記載の発明に係る条件実行命令を備えるマイクロプロセッサは、先行命令が含んでいる少なくとも1つ以上の副命令である先行副命令を実行するため、演算回路及び演算回路と汎用レジスタとの間のデータ読み出し及び書き込み経路等が同時に使用される場合、先行副命令の組み合わせによりデータ読み出し及び書き込み経路の同時使用が行われるか否かを検知する同時使用判定回路と、先行副命令の実行でデータ読み出し及び書き込み経路の同時使用を回避するため先行副命令のいずれかの動作を停止する衝突回避回路とをさらに備え、実行停止回路は、先行副命令の動作が停止される期間と同一期間だけ現命令の動作を停止し、条件実行判定回路が先行命令内の実行条件フィールドと制御レジスタ内の汎用フラグの値により先行副命令の実行を行うか否かの判定を行い、条件実行判定回路から送信される制御信号に基づいて衝突回避回路と実行停止回路の動作が制御され、条件実行判定回路が先行副命令を実行しないと判定し、データ読み出し及び書き込み経路の同時使用が発生しない場合に、条件実行制御回路は、衝突回避回路から送信される先行副命令の実行を指示する制御信号と、実行停止回路から送信される現命令の実行を停止する制御信号を無効とするように制御して、あるリソースコンフリクトによりパイプラインインターロックが発生し、かつそのリソースコンフリクトを発生させるサブ命令のいずれかが条件実行判定で不実行となった場合に、その条件実行キャンセル信号でパイプラインストール信号をキャンセルしてパイプラインのペナルティを削除するものである。
【0024】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
【0025】
以下で説明する条件実行命令を備えるマイクロプロセッサの各実施の形態を説明する前に、この発明のマイクロプロセッサに共通の基本構成に関してまず説明する。
【0026】
マイクロプロセッサのハードウエア構成
図1は、この発明の条件実行命令を備えるマイクロプロセッサの全体構成を示すブロック図であり、マイクロプロセッサ1は、命令デコードユニット(命令デコーダ)2、メモリアクセスユニット(命令実行ユニット)3、整数演算ユニット(命令実行ユニット)4、汎用レジスタ5、命令RAM(メモリ)6、データRAM(メモリ)7から構成されている。
【0027】
命令デコードユニット2は、命令RAM6から64ビット幅のIDバスを通じて送られる命令コードをMUデコーダ8、IUデコーダ9を用いてデコードする。MUデコーダ8のデコード結果とプロセッサ状態語(PSW)10よりメモリアクセスユニット3への制御信号11を生成し、また、IUデコーダ9のデコード結果とプロセッサ状態語10より整数演算ユニット4への制御信号12を生成する。メモリアクセスユニット3は、PC制御部13、メモリ制御部14、ALU15、シフタ16から構成される。PC制御部13は、有効なジャンプ演算や分岐演算を含まない命令では、例えば実行した命令のPC値に8を加えて次に実行する命令のPC値を計算し、ジャンプ演算や分岐演算では実行した命令のPC値に分岐変位を加算し、また演算で指定されたアドレッシングモードに従う計算をしてジャンプ先命令のPC値を計算する。
【0028】
メモリ制御部14は、PC制御部13で計算されたPC値をもとにIAバスを用いて命令RAM6を起動する。また、命令実行に必要なデータをデータメモリのアドレスを転送するOAバス、データを転送するODバスを通じてデータRAM7にアクセスし、汎用レジスタ5にデータ転送する。ALU15およびシフタ16では、汎用レジスタ5から32ビット幅のS1バス、S2バス、S6バスを通じて転送された最大3ワードのデータを用いて算術論理演算もしくはシフト演算を行い、演算結果をW1バスを用いて汎用レジスタ5に転送する。
【0029】
S1、S2、S6、S5バスを通じて、汎用レジスタ5から読み出された最大4ワードの32ビット長のデータが、メモリアクセスユニット3へ転送される。これにより、汎用レジスタ5からデータRAM7へ2ワードストア命令を実現している。2ワードストア命令では、2つのオペランドを使用し、メモリアドレスを計算し、データRAM7へ2ワードデータを転送する。また、メモリアクセスユニット3は、W1、W3E、W3Oバスを通じて、メモリアクセスユニット3内での演算結果およびデータRAM7から転送された2ワードのロードデータを、汎用レジスタ5へ転送する。
【0030】
整数演算ユニット4は、乗算器17、アキュムレータ18、ALU19、シフタ20から構成される。乗算器17、ALU19、シフタ20では、汎用レジスタ5から32ビット幅のS3、S4、S5バスを通じて転送された最大3ワードのデータを用いて算術論理演算もしくはシフト演算を行い、演算結果をW2,W3E、W3Oバスを用いて汎用レジスタ5に転送する。また、アキュムレータ18は、乗算の結果を累積加算または累積減算してその演算結果を保持する。
【0031】
汎用レジスタ5は、最大6種類のレジスタ値を同時に読み出すことが可能で、読み出されたデータは、それぞれS1、S2、S3、S4、S5、S6バスに出力される。また、汎用レジスタ5は、W1、W2、W3E、W3Oバスに接続され、最大4種類のレジスタ値を同時に書き込むことが可能である。命令RAM6は、32ビット幅のIAバスと64ビット幅のIDバスに接続されており、IAバスの示すアドレスに対応する64ビット長の命令データを読み出す。データRAM7は、32ビット幅のOAバスと64ビット幅のODバスに接続されており、OAバスの示すアドレスに対応する、64ビット長のデータを読み書きする。
【0032】
命令セットとレジスタ
図2は、図1に示したマイクロプロセッサ1で用いられる命令フォーマットを示す説明図である。マイクロプロセッサ1の命令フォーマットには、1つの命令で2つの演算を指示する2副命令のフォーマット101と1つの命令で1つの演算を指示する1演算命令のフォーマット102がある。2演算命令のフォーマット101にはフィールド103とフィールド104からなるフォーマットフィールド、2つの演算フィールド106、107及び各演算フィールドに1つずつ付属する実行条件フィールド105がある。1演算命令のフォーマットにはフィールド103とフィールド104からなるフォーマットフィールド、フィールド108とフィールド109とフィールド110とからなる演算フィールド及びこの演算フィールドに付属する実行条件フィールド105がある。
【0033】
図3は、図2に示した命令フォーマット内のフォーマットフィールド103,104の詳細を示す説明図であり、図において、FM=00の場合、この命令は2演算命令であり、演算フィールド106で指示されたoperation_0の演算と演算フィールド107で指示されたoperation_1の演算がデコード直後のクロックサイクルで並列に実行される。フォーマットフィールドの値FM=01の場合、この命令は2演算命令であり、演算フィールド106で指示されたoperation_0の演算がデコード直後のクロックサイクルに実行され、演算フィールド107で指示されたoperation_1の演算がoperation_0の演算に対して1クロックサイクル遅れて実行される。
【0034】
FM=10の場合、この命令は2演算命令であり、演算フィールド107で指示されたoperation_1の演算がデコード直後のクロックサイクルに実行され、演算フィールド106で指示されたoperation_0の演算がoperation_1の演算に対して1クロックサイクル遅れて実行される。FM=11の場合、この命令は1演算命令であり、108と109と110からなる演算フィールドで指示された1つの演算がデコード直後のクロックサイクルで実行される。
【0035】
図4は、図2に示した実行条件フィールド(CC)105の詳細を示す説明図である。実行条件フィールド105は、後述するマイクロプロセッサ1の状態フラグF0及びF1の値に依存して演算フィールド106、107でそれぞれ示されたoperation_0の演算やoperation_1の演算及び演算フィールド108と109と110で示された演算が有効であるか無効であるかを定める。演算が有効であるときは、演算結果がレジスタ、メモリ、フラグに反映され、その演算により定義された動作結果が残ることを意味し、演算が無効であるときは、演算結果がレジスタ、メモリ、フラグに反映されず、定められた演算の種類には関わらずその演算により無効演算(NOP:no operation)と同じ結果がレジスタやフラグに残ることを意味する。
【0036】
実行条件フィールド105の値CC=000のとき、演算はフラグF0、F1の値に関わらず常に有効である。CC=001のとき、演算はF1の値には関わらずF0=真のときのみ有効である。CC=010のとき、演算はF1の値には関わらずF0=偽のときのみ有効である。CC=011のとき、演算はF0の値には関わらずF1=真のときのみ有効である。CC=100のとき、演算はF0の値には関わらずF1=偽のときのみ有効である。CC=101のとき、演算はF0=真かつF1=真のときのみ有効である。CC=110のとき、演算はF0=真かつF1=偽のときのみ有効である。CC=111のときの動作は未定義であり、この値が命令で用いられることはない。
【0037】
図5は、28ビット長で表現される短型の演算フィールド106、107と54ビット長で表現される長型の演算フィールド(図2に示した演算フィールド108、109、110で構成される)の詳細を示す説明図である。短型の演算フィールドには、7つのフォーマット111、112、113、114、115、116、117があり、長型の演算フィールドには1つのフォーマット118がある。
【0038】
フォーマット111は、演算内容を指定するフィールド120、レジスタの番号を指定する2つのフィールド121、122、レジスタ番号または6ビット長の即値を指定するフィールド123、フィールド123がレジスタ番号を示すか即値を示すかを指定するフィールド124から構成される。このフォーマット111はレジスタ間接アドレッシングのメモリアクセス演算に使用される。
【0039】
フォーマット112は、演算内容を指定するフィールド120、レジスタの番号を指定する2つのフィールド121、122、レジスタ番号または6ビット長の即値を指定するフィールド123、フィールド123がレジスタ番号を示すか即値を示すかを指定するフィールド125から構成される。このフォーマット112は算術演算、論理演算、シフト演算、ビット演算に使用される。
【0040】
フォーマット113は、演算内容を指定するフィールド120、レジスタの番号を指定するフィールド126から構成される。このフォーマット113は、レジスタ指定によるジャンプ、分岐命令に使用される。フォーマット114は、演算内容を指定するフィールド120、18ビット長のディスプレイスメントのフィールド127から構成される。このフォーマット114は、ジャンプ、分岐命令に使用される。
【0041】
フォーマット115は、演算内容を指定するフィールド120、レジスタの番号を指定するフィールド121、レジスタ番号または12ビット長の即値を指定するフィールド128、フィールド128がレジスタ番号を示すか即値を示すかを指定するフィールド129、フィールド121がゼロ判定による条件ジャンプおよび条件分岐を行うか否かを指定するフィールド130から構成される。このフォーマット115は、条件ジャンプ、条件分岐命令に使用される。
【0042】
フォーマット116は、演算内容を指定するフィールド120、レジスタの番号を指定するフィールド121、レジスタ番号または12ビット長の即値を指定するフィールド128、フィールド128がレジスタ番号を示すか即値を示すかを指定するフィールド129から構成される。このフォーマット116は、条件ジャンプ、条件分岐命令、リピート命令に使用される。
【0043】
フォーマット117は、演算内容を指定するフィールド120、レジスタ番号または12ビット長の即値を指定するフィールド128、フィールド128がレジスタ番号を示すか即値を示すかを指定するフィールド129、ディレイド命令のディレイ値を指定するフィールド131から構成される。このフォーマット117は、ディレイドジャンプ、ディレイド分岐命令に使用される。
【0044】
フォーマット118は、演算内容を指定するフィールド120、レジスタの番号を指定する2つのフィールド121、122、32ビット長の即値を指定するフィールド132から構成される。このフォーマット118の演算には、複雑な算術演算、大きな即値を用いる算術演算、大きなディスプレースメント付きレジスタ間接アドレッシングのメモリアクセス演算や大きな分岐変位の分岐演算、絶対番地へのジャンプ演算などがある。
【0045】
フォーマット119は、演算内容を指定するフィールド120、レジスタの番号を指定する2つのフィールド121、122、32ビット長の即値を指定するフィールド132、フィールド132がゼロ判定による条件ジャンプおよび条件分岐を行うか否かを指定するフィールド133から構成される。このフォーマット119は、大きな分岐変位をもつ条件ジャンプ、条件分岐命令に使用される。
【0046】
図6は、図1に示したマイクロプロセッサ1のレジスタの構成を示す説明図である。マイクロプロセッサ1には、64本の32ビット長の汎用レジスタ5、12本の制御レジスタ150、および2本のアキュムレータ18がある。汎用レジスタ(R0)140は、読み出した場合常に0で書き込みは無視される。汎用レジスタ(R63)はスタックポインタであり、プロセッサ状態語(PSW)10のSMフィールドの値に依存してユーザスタックポインタ(SPU)141または割り込みスタックポインタ(SPI)142が動作する。制御レジスタ150には、プログラムカウンタ151、プロセッサ状態語10や各種の専用レジスタが含まれる。フォーマット112の演算では、64本の汎用レジスタ5のそれぞれを上位16ビットと下位16ビットに分けて別々にアクセスできる。また、2本のアキュムレータ18はそれぞれ上位32ビットと下位32ビットを別々にアクセスできる。
【0047】
図7は、プロセッサ状態語10の詳細を示す説明図である。プロセッサ状態語(PSW)10の上位16ビット170にはスタックポインタを切り替えるSMフィールド171、ソフトウェアデバッガトラップ(SDBT)の検出を示すEAフィールド172、SDBTの許可を指定するDBフィールド173、割り込み許可を指定するEIフィールド174、リピート動作の許可を指定するRPフィールド175、モジュロアドレシングの許可を指定するMDフィールド176がある。
【0048】
下位16ビットは、フラグフィールド180である。フラグフィールド180には8個のフラグがあり、その中のF0フラグ181とF1フラグ182は演算の有効無効を制御する。各フラグの値は、比較演算や算術演算の結果に依存して変化するほか、フラグ初期化演算で初期化したり、フラグ値書き込み演算で任意の値をフラグフィールド180に書き込むことで変化する。また、フラグ値読み出し演算でフラグフィールド180の値を読み出すこともできる。
【0049】
以下に、図1に示したこの発明のマイクロプロセッサ1で用いられる命令一覧を示す。
【0050】
【0051】
【0052】
【0053】
【0054】
【0055】
【0056】
【0057】
【0058】
【0059】
【0060】
【0061】
【0062】
マイクロプロセッサ1におけるパイプライン動作
図8は、図1に示したこの発明のマイクロプロセッサ1の並列2命令実行時(FM=00)のパイプライン動作を示す説明図である。パイプラインは、命令フェッチ(IF)ステージ191、デコード/アドレス演算(D/A)ステージ192、実行/メモリアクセス(EorM)ステージ193、ライトバック(W)ステージ194から構成される。
【0063】
並列2命令実行時には、メモリアクセスユニット3での実行190と整数演算ユニット4での実行195(斜線の部分)が並列に行われる。図9は、一つの命令実行でなされる各処理を4段のパイプライン図に割当てた場合を示す説明図である。まず、IFステージで命令フェッチが実行され、D/Aステージでその命令のデコードが実行される。そして、同じくD/Aステージの前半から汎用レジスタの読み出しが開始されて、後半でアドレス計算がなされる。EorMステージでは、演算及びメモリアクセスが実行される。そして、Wステージの後半で汎用レジスタの書き込みが実行される。これが1命令を実行する際のパイプライン的な処理の概要である。
【0064】
また、図9においてパイプラインの下に示しているように、4つのステージの前半と後半で行われる処理は、それぞれクロックのHighとLowに同期して行われている。IFステージの前半と後半の処理をそれぞれI1、I2期間中の処理と呼ぶ。また、Dステージの前半と後半の処理をそれぞれD1、D2期間中の処理と呼ぶ。また、Eステージの前半と後半の処理をそれぞれE1、E2期間中の処理と呼ぶ。また、Wステージの前半と後半の処理をそれぞれW1、W2期間中の処理と呼ぶ。
【0065】
マイクロプロセッサ1の詳細なブロック図
図10〜図13は、図1に示したマイクロプロセッサ1のメモリアクセスユニットと整数演算ユニットを中心とした詳細な構成を示すブロック図であり、図において、マイクロプロセッサ1は、命令デコードユニット2、メモリアクセスユニット3、整数演算ユニット4、汎用レジスタ5、命令RAM6、データRAM7から構成されている。
【0066】
メモリアクセスユニット3は、図1に示したマイクロプロセッサ内のALU15、シフタ16を備えている。220は、D2同期バス群の値を取り込むレジスタであり、格納した値をシフタ16へ出力する。221は、D2同期バス群の値を取り込むレジスタであり、格納した値をALU15へ出力する。また、その他メモリ制御、PC制御、演算制御等を行うための各種演算器やレジスタ等がメモリアクセスユニット3内に含まれている。29は、命令フェッチ処理の際に、命令RAM6へ送信するアドレスを保持するための命令アドレスレジスタである。30は、メモリへのストア処理を行う際に、ストアデータの整値を行うための制御部である。33は、メモリからのロードデータの符号拡張を行うための制御部である。31は、ロードとストア命令実行時のポストインクリメント/デクリメントアドレッシングを行うためのインクリメンタである。32は、ロード/ストア命令及び分岐命令等を実行する際にアドレス計算を行うための加算器である。50は、ALU、シフタの結果を保持するレジスタである。
【0067】
またCR0〜CR11は、図6で示した制御レジスタ150に相当する。34は、プログラムカウンタCR0をインクリメントするためのインクリメンタである。35は、リピート命令やディレイド分岐命令を実行する際に、リピートカウントレジスタCR6の値やリピートエンドアドレスレジスタCR8の値を計算するための加算器である。36は、リピートカウントレジスタの値をデクリメントするためのデクリメンタである。37は、命令アドレスレジスタの値をインクリメントするためのインクリメンタである。40は、命令ブレークアドレスレジスタCR11の値とプログラムカウンタCR0の値とを比較し、両者が同じ値であれば一致信号を出力する32ビット比較器である。
【0068】
41は、リピートカウントレジスタCR6の値が0以上であれば有効となる信号を出力する32ビット比較器である。42は、リピートエンドアドレスレジスタCR8の値と命令アドレスレジスタ29の値を比較し、同じ値であれば一致信号を出力する32ビットの比較器である。43は、モジュロエンドアドレスレジスタCR10の値とインクリメンタ31の値が同じであれば一致信号を出力する32ビット比較器である。44は、D1S6BUSバスの値が0であれば有効となる信号を出力するための32ビット比較器である。
【0069】
また整数演算ユニット4内には、図1に示すマイクロプロセッサ1内の乗算器17(図13では、17a〜17dに相当する)、ALU19、シフタ20がある。その他の演算器として、飽和演算をするための演算器21がある。222は、D2同期バス群の値を取り込むレジスタであり、格納した値はALU20へ出力される。223は、D2同期バス群の値を取り込むレジスタであり、格納した値をシフタ19及び飽和演算器21へ出力する。224は、D2同期バス群の値を取り込むレジスタであり、格納した値を乗算器17へ出力する。
【0070】
また、A0、A1は、積和演算等を行う際の累積加算等を行うためのアキュムレータである。55は、ALU,シフタ,飽和演算器の結果を保持するレジスタである。
【0071】
また、図1に示したS1、S2、S3、S4、S5、S6バスは、図10〜図13ではD1S1BUS、D1S2BUS、D1S3BUS、D1S4BUS、D1S5BUS、D1S6BUSに相当する。参照記号D1S1BUS内のD1とは、図9に示すD1期間中にバスがドライブされることを意味する。これら先頭にD1の付いているバスをD1同期バス群と呼ぶ。
【0072】
また、図1に示したW1、W2、W3E、W3Oバスは、図10〜図13ではW1W1BUS、W1W2BUS、W1W3EBUS、W1W3OBUSに相当する。参照記号W1W1BUS内のW1とは、図9に示すW1期間中にバスがドライブされることを示している。これら先頭にW1の付いているバスは同様にW1同期バス群と呼ぶ。
【0073】
またD2S1BUS、D2S2BUS、D2S3BUS、D2S4BUS、D2S5MBUS、D2S5IBUS、D2S6BUSは、D1同期バス群のデータをラッチを介して半クロック遅延させ、D2の期間中にこれらのデータをドライブする。そのタイミングを変更するラッチは、40a、40bである。
【0074】
また41a、41b、41cは、命令デコーダ部より出力された即値データである。これらは、バスドライバ42a、42b、42c、42dを介して、D1、D2同期バス群に出力される。また、E2D1BUS、E2D3BUS、E2D4BUSは、制御レジスタの値や演算器の値を保持するレジスタの値をE2期間中に出力するバスである。
【0075】
また51は、E2D1BUS上のデータをW1W1BUSに出力するためのライトバックレジスタである。53は、ロードデータの値をW1W3EBUS、W1W3OBUSへ出力するためのレジスタである。54は、演算結果保持レジスタ55の値をW1W2BUSへ出力するためのライトバックレジスタである。また60は、命令デコードユニット2内のPSWレジスタの値をE2D1BUSに読み出すための経路である。61は、E1CRBUSの値を命令デコードユニット2内のPSWレジスタに書き込むための経路である。62は、ALU15でキャリーフラグを用いる演算を実行する時にキャリーフラグの伝播する経路である。
【0076】
63は、ALU15から命令デコードユニット2へ出力されるフラグの伝搬経路である。64は、ALU20から命令デコードユニットに出力されるフラグの伝搬経路である。65は、ALU20でキャリーフラグを用いる演算を実行する時にキャリーフラグの伝播する経路である。66は、飽和演算器21から命令デコードユニットに出力されるフラグの伝搬経路である。
【0077】
200〜211は、バイパス処理を行うための回路及び経路である。即ち、200は、ロードデータバスM2ODBUSの値を符号拡張するための制御部である。201は、ライトバックレジスタ56の値が出力されたバスW1W3EBUS、W1W3OBUSの値を取り込むレジスタである。202は、レジスタ50の値をメモリアクセス部のD2同期バス群へ出力するための経路である。203、はライトバックレジスタ51の値をD1同期バス群へ出力するための経路である。204は、レジスタ57の値をD1同期バス群へ出力するための経路である。205は、レジスタ201の値をメモリアクセス部のD2同期バス群へ出力するための経路である。206は、符号拡張部33の値をメモリアクセス部のD2同期バス群へ出力するための経路である。207は、レジスタ53の値をメモリアクセス部のD2同期バス群へ出力するための経路である。208は、符号拡張部200の値を整数演算部のD2同期バス群へ出力するための経路である。209は、ライトバックレジスタ54の値をD1同期バス群へ出力するための経路である。
【0078】
210は、レジスタ55の値を整数演算部のD2同期バス群に出力するための経路である。211は、ライトバックレジスタ56の値をD1同期バス群に出力するための経路である。
【0079】
データ干渉発生時にデータの整合性を保証する処理
図9に示したパイプライン図で説明したように、汎用レジスタ5からのデータの読み出しはD1期間中に実行される。そして、汎用レジスタ5へのデータの書き込みはW2期間中に実行される。このことから、先行する命令の書き込み先(ディスティネーション)レジスタから、直後の命令がデータの読み出しを行いたい場合、バイパス処理やパイプラインインターロック処理等でデータの整合性を保証してやる必要がある。このような処理が必要なデータの関係をデータ干渉と呼んでいる。
【0080】
図14は、命令コード間のパイプラインでのデータの干渉を示す説明図であり、図において、600a、600b、600cはそれぞれメモリアクセスユニット3で実行されるWステージ、EorMステージ、Dステージで実行されるサブ命令コードを示す。また、601a、601b、601cは、それぞれ整数演算ユニット4で実行されるWステージ、EorMステージ、Dステージのサブ命令コードを示している。
【0081】
各サブ命令コードの5つのフィールドは、先頭からオペコードと、条件実行フィールドと、ディスティネーションレジスタ指定フィールドと、2つのソースレジスタ指定フィールドを示している。各フィールドに書いている記号の先頭の2文字は、それぞれのステージとそれぞれの演算ユニットでの実行を示している。すなわち、参照記号WMは、Wステージのメモリアクセスユニットでの実行であることを示している。
【0082】
図14に示す各パイプライン内の点線の矢印610,611は、バイパス処理によりデータの整合性を保証するデータ干渉の例を示している。矢印610のように同一メモリアクセスユニット3内でのデータ干渉は比較的バイパス経路を設け易い。そのためデータ干渉発生時のデータの整合性の保証は、ほとんどがバイパス処理により実行されている。また矢印611のように、異なるメモリアクセスユニット3,4間のデータ干渉でも、性能に影響が出る場合は、専用のバイパス経路を設けてデータの整合性を保証している。
【0083】
バイパス経路でデータの整合性を保証する場合は、パイプラインを停止する必要がなくペナルティなしで処理を実行することができる。それに対して、実線の矢印612,613,614,615は、パイプラインインターロック処理によりデータの整合性を保証するデータ干渉の例を示している。矢印612では、同一メモリアクセスユニット内でもタイミング的に間に合わない処理の場合に、必要なデータが生成されるまでパイプラインのインターロック処理が必要となる。矢印また613のように、異なるメモリアクセスユニット3,4間では、ほとんどがバイパス処理不可能であるため、干渉しているデータが汎用レジスタ5内に書き込まれる迄、パイプラインのインターロック処理が必要となる。
【0084】
また矢印614,615のように、Eステージのサブ命令コード600b、601bが、条件実行フラグを更新する命令である場合で、かつ、その直後のDステージのサブ命令コードの条件実行フィールドが、条件実行判定が必要である場合に、そのフラグの値が更新されるまでパイプラインをインターロックさせる必要がある。このように、パイプラインインターロック処理では、干渉しているデータの整合性を保証するためにパイプラインを停止する必要があり、そのためペナルティが発生する。
【0085】
この発明のマイクロプロセッサ1では、このパイプラインインターロックにより発生するペナルティを特定条件下で削除する機能を有するものであり、以降では、上記処理をパイプラインインターロックキャンセル処理と呼ぶ。
【0086】
図15は、命令デコードユニット2内に組み込まれているパイプラインインターロックキャンセル処理を制御する制御回路(図1,図10〜図13では煩雑さを避けるため図示せず)を示すブロック図であり、図において、700は命令RAM6から命令データバスI2IDBUSを介して送信される命令コードとフィードバック経路から送信される命令コードのいずれかを選択するセレクタである。セレクタ700の動作は、セレクタ制御回路721により制御される。このセレクタ700の出力は、パイプラインのIステージ内のI2期間のタイミングであり、プリデコード用の命令コードとしてプリデコード回路710へ出力される。
【0087】
また、701〜706は、命令コードを保持するレジスタである。701,702は、Dステージの命令コードを保持するレジスタである。703,704は、Eステージの命令コードを保持するレジスタである。705は、Wステージの命令コードを保持するレジスタである。また706は、フィードバック経路用のレジスタであり、レジスタ701の値を取り込んでセレクタ700へ出力する。これらのレジスタ701〜706は、命令コードライト信号生成回路(実行停止回路)720より出力されるライトイネーブル信号により制御される。またレジスタ701〜705の出力は、各種デコーダ710,712,714〜719へ出力される。
【0088】
710は、プリデコード用の命令コードをデコードし汎用レジスタ(GPR)リード信号を生成するデコーダ回路である。711は、デコーダ710の結果を保持するD1同期のラッチである。すなわち汎用レジスタ(GPR)5からの読み出しは、D1期間より開始する。712は、レジスタ702の出力をデコードし、データRAMアクセスの制御信号を生成するデコーダ回路である。713は、デコーダ712の結果を保持するM1同期のラッチ(M1L)である。すなわちデータRAM7に対するアクセスは、M1より開始される。
【0089】
717は、レジスタ701の出力をデコードし、D1同期のデータバス制御信号を生成するデコーダ回路である。714は、レジスタ702の出力をデコードし、D2同期のデータバス制御信号を生成するデコーダ回路である。715はレジスタ703の出力をデコードし、E1同期のデータバス制御信号を生成するデコーダ回路である。716は、レジスタ705の出力をデコードし、汎用レジスタ(GPR)5のライト信号を生成するデコーダ回路である。汎用レジスタ(GPR)5へのライトは、W1同期のライト信号によりW2期間中に実行される。
【0090】
718は、バイパス処理を実行するためのデコーダ回路(衝突回避回路)である。719は、パイプラインインターロック処理を実行するためのデコーダ回路(データ干渉判定回路)である。また722は、PSWからの条件実行フラグとレジスタ702内の条件実行フィールドから条件実行を制御する条件実行制御回路である。条件実行制御回路722からキャンセル信号が各種デコーダ回路に出力されて条件実行の可否を制御している。
【0091】
図16は、パイプラインインターロック制御回路図を示すブロック図であり、図15に示すデコーダ回路719に相当するものである。図において、800〜803は、パイプラインインターロックが必要か否か検知する制御ブロックである。この制御ブロック800は、メモリアクセスユニット3のパイプラインのEステージでのデスティネーションレジスタ指定フィールド810とDステージのソースレジスタ指定フィールド811とを比較器814で比較し、その比較結果とオペコード812,813との値からパイプラインインターロックを判定する回路815より構成されている。
【0092】
802は、メモリアクセスユニット3のパイプラインのDステージでの条件実行フィールド816が、0以上であることを比較器819で比較し、その比較結果とオペコード817,818との値からパイプラインインターロックを判定する回路820より構成されている。
【0093】
803は、メモリアクセスユニット3のパイプラインのDステージでのオペコード821とデスティネーションレジスタ指定フィールド822との値から、パイプラインフラッシュを判定する判定回路823より構成されている。
【0094】
801は、異なる命令コードが入力する800,802,803と同様な回路構成を有する制御ブロックであり、このような制御ブロックがパイプラインインターロック制御回路部には多数存在する。各制御ブロック800〜803からの出力信号は、AND回路830〜833へ出力され、制御信号850がHighレベルである時にキャンセルされる。AND回路830〜833からの出力は、タイミング調整回路835〜838へ出力され、これによりパイプラインインターロック制御用の必要なタイミングの信号851〜854が生成される。パイプラインインターロック制御信号851〜854は、OR回路839へ入力され、ラッチを介して信号855として出力される。
【0095】
図17は、図15に示す条件実行制御回路722を示すブロック図であり、図において、860,861は、メモリアクセス部及び整数演算部それぞれの3ビットの条件実行フィールドをデコードするデコード回路である。862,863は、プロセッサ状態ワード(PSW)から得られる条件実行フラグ880とデコーダ860,861のデコード結果とから条件実行命令を実行するか否かを判定する条件実行判定回路である。
【0096】
条件実行判定回路862,863の出力は、OR回路864,865に出力され、パイプラインインターロック信号881とOR処理された後に出力される。さらにそれらの信号は、866〜871のE1,E2,W1同期のラッチで必要なタイミングに加工され、キャンセル信号として出力される。884a,884b,884c,885a,885b,885cは、ラッチ886〜871の更新処理を制御するライトイネーブル信号である。
【0097】
図18は、パイパス制御回路図を示すブロック図であり、図15に示すデコーダ回路718に相当するものである。図において、890,891はバイパス処理が必要か否か検知する制御ブロックである。制御ブロック890では、メモリアクセスユニット3のDステージのソースレジスタ指定フィールド892と整数演算ユニット4のWステージのデスティネーションレジスタ指定フィールド893とを比較器896で比較し、その結果とオペコード894,895との値からバイパス処理が必要か否かを判定する回路897より構成されている。891は、異なる命令コードを入力するバイパス制御回路890と同様な回路構成を有する制御ブロックであり、このような制御ブロックがバイパス制御回路部には複数個存在する。各制御ブロック890,891からの出力は、OR回路898,899へ出力され、そこで制御信号900とOR処理されてバイパス経路選択信号として出力される。
【0098】
パイプラインインターロックキャンセル処理
次に、この発明のマイクロプロセッサ1でのパイプラインインターロックキャンセル処理に係わる各実施の形態について説明する。この発明のマイクロプロセッサ1におけるパイプラインインターロックキャンセル処理では、パイプラインインターロックを発生させる命令コードが、条件実行判定により不実行となった場合に、そのパイプラインインターロック処理をキャンセルし、パイプラインのペナルティを削減するものである。
【0099】
実施の形態1.
図19は、この発明の実施の形態1によるマイクロプロセッサ1のメモリアクセス時のパイプラインインターロックキャンセル処理を示すタイミング図であり、図において、白の部分はメモリアクセスユニット3で実行されているパイプライン、斜線部分は、整数演算ユニット4で実行されているパイプラインを示す。
【0100】
901は、メモリアクセスユニット3で実行されるロード命令のパイプラインである。902はパイプライン901の後続のパイプラインである。903は条件実行判定で不実行となるロード命令のパイプラインである。904はパイプライン903の後続のパイプラインである。
【0101】
実施の形態1のマイクロプロセッサ1では、ロード命令のパイプライン901では、D1で汎用レジスタ(GPR)5からデータの読み出しを開始し、読み出したデータを用いてD2でデータRAM7に対するアドレス計算を行う。そしてMステージからデータRAMリクエスト信号を出力する。そのリクエストに対するデータの読み出しが2クロック後である場合、そのデータが到達する2クロックの間、パイプライン901のMステージはインターロックされる。そして後続のパイプライン902のDステージもパイプラインが停止されてペナルティが発生する。
【0102】
不実行となるロード命令のパイプライン903では、Dステージで条件実行判定を行い、D2から条件実行キャンセル信号を出力する。そしてそのキャンセル信号によりデータRAMリクエスト信号をキャンセルし、Mステージ以降のパイプラインをキャンセルする。これにより実施の形態1のマイクロプロセッサでは、Mステージでのパイプラインインターロックが発生しないため、後続パイプライン904もペナルティなしに実行することが可能となる。
【0103】
次に動作について説明する。
以下では、図10〜図13に示すこの発明のマイクロプロセッサ1のブロック図および図15に示す命令デコードユニット2内に組み込まれている制御回路のブロック図、および図19に示すメモリアクセス時のパイプラインインターロックキャンセル処理を示すタイミング図を用いて、メモリアクセス時のパイプラインインターロックキャンセル処理について説明する。
【0104】
図19に示すパイプラインのロード命令が、図10〜図13に示す命令RAM6からI2IDBUSを介して読み出され、図15に示すセレクタ700を介して各制御回路に転送され読み出された命令が転送される。デコーダ回路710では、アドレス計算用のソースデータの読み出しを行うための汎用レジスタ(GPR)5への読み出し信号の生成を行う。そして図12に示す加算器32では、D1S1BUS、D1S2BUSへ読み出されたソースデータを加算し、アドレスの計算を行う。そして生成されたアドレスは、オペランドアドレスバスM1OABUSへ出力される。
【0105】
データRAMリクエスト信号は、図15のレジスタ702の命令コードをデコード回路712でデコードし、ラッチ713を介してMステージより出力される。そしてデータRAMより読み出されたデータは、図10〜図13に示すオペランドデータバスM2ODBUS経由で符号拡張部33を介してロードデータレジスタ53に取り込まれる。そしてレジスタ53の値は、ライトバックバスW1W3EBUS,W1W3OBUSを介して汎用レジスタ(GPR)5に書き込まれる。
【0106】
汎用レジスタ(GPR)5への書き込み信号であるGPRライト信号は、図15に示すレジスタ705の値をデコーダ回路716でデコードして生成する。データRAMアクセスでパイプラインインターロックが発生した場合は、図15に示す命令コードライト信号生成回路(実行停止回路)720で命令コードの更新を制御するように信号を生成し、レジスタ701〜705の更新をインターロック期間中停止する。このロード命令が条件実行判定で不実行である場合は、図15に示す条件実行制御回路722から条件実行キャンセル信号723がデコーダ回路712,716に出力されて、データRAMリクエスト信号及び汎用レジスタライト信号がキャンセルされる。
【0107】
以上のように、この実施の形態1によれば、ロード命令が条件実行判定で不実行となった場合に、ロードしたデータを汎用レジスタ(GPR)5へ書き込む処理のみをキャンセルするのではなく、データRAMアクセス処理の動作からキャンセルするので、先行命令と現在実行する命令のパイプライン間にデータ干渉が発生した場合におけるパイプラインの停止動作をキャンセルするのでパイプラインのペナルティを削減することができる。
【0108】
実施の形態2.
図20は、この発明の実施の形態2によるマイクロプロセッサ1のアドレス計算データのパイプラインインターロックキャンセル処理を示すタイミング図であり、図において、白の部分はメモリアクセスユニット3で実行されているパイプライン、斜線部分は、整数演算ユニット4で実行されているパイプラインを示す。
【0109】
905は、メモリアクセスユニット3で実行される加算命令のパイプラインである。906は、パイプライン905の後続のロード命令のパイプラインである。907は、条件実行判定で不実行となる加算命令のパイプラインである。908は、パイプライン907の後続のロード命令のパイプラインである。
【0110】
この実施の形態2のマイクロプロセッサ1では、パイプライン905の加算命令の書き込みレジスタr10から、パイプライン906のロード命令のアドレス計算用のデータ読み出しが発生した場合、そのデータ干渉をパイプライン906のDステージで検知し、パイプラインインターロック信号を生成する。パイプラインインターロック信号が生成されると、パイプライン906のD/Aステージを1クロック停止するためのセレクタ信号を生成する。そしてパイプライン905のEステージで加算されたデータを、パイプライン906にバイパスするための制御信号を生成し、バイパス処理を実行する。このようなアドレス計算用データのデータ干渉が発生した場合、パイプラインインターロックのためのペナルティが1クロック発生する。
【0111】
不実行となる加算命令のパイプライン907では、Dステージで条件実行判定を行い、D2から条件実行キャンセル信号を出力する。そのキャンセル信号により、パイプライン908のDステージで検知するパイプラインインターロック信号をキャンセルする。これにより、実施の形態2のマイクロプロセッサ1では、パイプライン908のアドレス計算用データのためのパイプラインインターロックが発生しないため、後続パイプライン908をペナルティなしに実行することができる。
【0112】
次に動作について説明する。
以下では、図10〜図13に示すこの発明のマイクロプロセッサ1のブロック図および図15に示す命令デコードユニット2内に組み込まれている制御回路のブロック図、および図20に示すアドレス計算データのパイプラインインターロックキャンセル処理を示すタイミング図を用いて、アドレス計算データのパイプラインインターロックキャンセル処理について説明する。
【0113】
図20に示すパイプライン906のロード命令が、図10〜図13に示す命令RAM6からI2IDBUSを介して読み出されると、図15に示すセレクタ700を介して各制御回路に転送される。デコーダ回路(データ干渉判定回路)719では、セレクタ700からのロード命令の命令コードと、Dステージの命令コードを保持するレジスタ701の出力とを比較し、パイプラインインターロックが発生していることを検知する。パイプラインインターロック信号731,735を生成し、セレクタ制御回路721と命令コードライト信号生成回路720とデコーダ回路718へ出力する。
【0114】
命令コードライト信号生成回路720からはライト信号が出力され、レジスタ701の値をフィードバックレジスタ706に取り込む。そしてセレクタ制御回路721では、フィードバックレジスタ706の値を選択するようにセレクタ700を制御して、そのロード命令のコードを各制御回路に出力する。この処理により、図20に示すパイプライン906のD/Aステージが1クロックインターロックされることになる。デコーダ回路718では、デコーダ回路719からのパイプラインインターロック信号735を受けてバイパス経路選択信号を生成し、図10〜図13に示すバイパス経路203を経由してALU15で加算した結果データを取り込んだライトバックレジスタ51の値を、D1同期バス群に出力する。
【0115】
次に、そのバイパスされたデータを用いて、図20に示すパイプライン906のロード命令は、図10〜図13に示すアドレス計算用の加算器32でデータRAMアクセス用のアドレスを計算し、以降のステージの処理を実行する。図20に示すパイプライン907の加算命令のように、条件実行判定で不実行となった場合、図15に示す条件実行制御回路722から条件実行キャンセル信号723がデコーダ回路719へ出力され、パイプラインインターロック信号をキャンセルする。
【0116】
以上のように、この実施の形態2によれば、ロード命令のアドレス計算用データが同じ整数演算ユニット4で実行される先行命令の結果データと干渉を起こしており、かつその先行命令が条件実行判定で不実行となった場合に、その条件実行キャンセル信号でパイプラインインターロック信号とバイパス経路選択信号をキャンセルするので、パイプラインのペナルティを削除することができる。
【0117】
実施の形態3.
図21および図22は、この発明の実施の形態3によるマイクロプロセッサ1の異なる実行ユニット間でのパイプラインインターロックキャンセル処理を示すタイミング図であり、図において、白の部分はメモリアクセスユニット3で実行されているパイプライン、斜線部分は、整数演算ユニット4で実行されているパイプラインを示す。この実施の形態3の説明では、先ず図21に示す異なる実行ユニット間のパイプラインインターロックキャンセル処理の例を説明し、次に図22に示す異なる実行ユニット間でのパイプラインインターロックキャンセル処理の例を説明する。
【0118】
図21において、911は、整数演算ユニット4で実行される加算命令のパイプラインである。912は、パイプライン911の後続のメモリアクセスユニット3で実行されるロード命令のパイプラインである。913は、条件実行判定で不実行となる整数演算ユニット4で実行される加算命令のパイプラインである。914は、パイプライン913の後続のメモリアクセスユニット3で実行されるロード命令のパイプラインである。
【0119】
実施の形態3のマイクロプロセッサ1では、パイプライン911の加算命令の書き込みレジスタr10からパイプライン912のロード命令のアドレス計算用のデータ読み出しが発生した場合、そのデータ干渉をパイプライン912のDステージで検知し、パイプラインインターロック信号を生成する。パイプラインインターロック信号は、パイプライン911のWステージが完了しデータr10が汎用レジスタ(GPR)5内に書き込まれてから、パイプライン912のD/Aステージでの汎用レジスタ(GPR)5からの読み出しが実行できるまでの2クロック分生成される。そして、パイプラインインターロック信号は、パイプライン912のD/Aステージを2クロック停止するためのセレクタ信号を生成する。このようなアドレス計算用データのデータ干渉が発生した場合、パイプラインインターロックのためのペナルティが2クロック発生する。
【0120】
不実行となる加算命令のパイプライン913では、Dステージで条件実行判定を行い、D2から条件実行キャンセル信号を出力する。そしてそのキャンセル信号により、パイプライン914のDステージで検知するパイプラインインターロック信号をキャンセルする。これにより、実施の形態3のマイクロプロセッサ1では、パイプライン914のアドレス計算用データのためのパイプラインインターロックが発生しないために、後続パイプライン914をペナルティなしに実行することが可能となる。
【0121】
次に動作について説明する。
以下では、図10〜図13に示すこの発明のマイクロプロセッサ1のブロック図および図15に示す命令デコードユニット2内に組み込まれている制御回路のブロック図、および図21に示す異なる実行ユニット間でのパイプラインインターロックキャンセル処理を示すタイミング図を用いて、異なる実行ユニット間でのパイプラインインターロックキャンセル処理について説明する。
【0122】
図21に示すパイプライン912のロード命令が、図10〜図13に示す命令RAM6からI2IDBUSを介して読み出されると、読み出されたロード命令は、図15に示すセレクタ700を介して各制御回路に転送される。デコーダ回路(データ干渉判定回路)719では、セレクタ700からのロード命令の命令コードと、Dステージの命令コードとを保持するレジスタ702の出力とを比較し、パイプラインインターロックが発生していることを検知する。そして、パイプラインインターロック信号731を生成し、セレクタ制御回路721と命令コードライト信号生成回路720に出力する。命令コードライト信号生成回路720からはライト信号が出力され、レジスタ701の値をフィードバックレジスタ706に取り込む。
【0123】
そしてセレクタ制御回路721は、フィードバックレジスタ706の値を選択するようにセレクタ700を制御して、そのロード命令のコードを各制御回路に出力する。この処理により、図21に示すのパイプライン912のD/Aステージが2クロックインターロックされることになる。
【0124】
図10〜図13に示す整数演算ユニット4内の加算器20で実行された図21に示すパイプライン911の加算処理結果が、レジスタ55及びライトバックレジスタ54を介して汎用レジスタ(GPR)5内にW2期間中に書き込まれてから、図21に示すパイプライン912のロード命令では汎用レジスタ(GPR)5からのデータのリード動作を開始し、アドレス加算器32でデータRAMアクセス用のアドレスを生成する。
【0125】
以上のように、図21に示す異なる実行ユニット間のパイプラインインターロックキャンセル処理を実行するマイクロプロセッサ1によれば、パイプライン913の加算命令のように、条件実行判定で不実行となった場合、図15に示す条件実行制御回路722から条件実行キャンセル信号723がデコーダ回路719に出力され、パイプラインインターロック信号をキャンセルする。
【0126】
次に、図22に示す異なる実行ユニット間のパイプラインインターロックキャンセル処理のタイミング図、図10〜図13に示すこの発明のマイクロプロセッサ1のブロック図、および図15に示す命令デコードユニット2内に組み込まれている制御回路のブロック図を用いて、図21に示す異なる実行ユニット間でのパイプラインインターロックキャンセル処理の他の例に関して説明する。
【0127】
図22において、915は整数演算ユニット4で実行される加算命令のパイプライン、916はパイプライン915の1クロック後のメモリアクセス部で実行されるロード命令のパイプラインである。917は、条件実行判定で不実行となる整数演算ユニット4で実行される加算命令のパイプラインである。918は、パイプライン917の1クロック後のメモリアクセス部で実行されるロード命令のパイプラインである。
【0128】
この実施の形態3のマイクロプロセッサ1では前記した機能に加え、さらに以下の機能を備える。即ち、実施の形態3のマイクロプロセッサ1では、パイプライン915の加算命令の書き込みレジスタr10からパイプライン916のロード命令のアドレス計算用のデータ読み出しが発生した場合、そのデータ干渉をパイプライン916のDステージで検知し、パイプラインインターロック信号を生成する。パイプラインインターロック信号は、パイプライン915のWステージが完了しデータr10がGPRに書き込まれてから、パイプライン916のD/Aステージでの汎用レジスタ(GPR)5からのデータの読み出しが実行できるまでの1クロック分生成される。そしてパイプラインインターロック信号は、パイプライン916のD/Aステージを1クロック停止するためのセレクタ信号を生成する。このようなアドレス計算用データのデータ干渉が発生した場合、パイプラインインターロックのためのペナルティが1クロック発生する。
【0129】
不実行となる加算命令のパイプライン917では、Dステージで条件実行判定を行い、D2から条件実行キャンセル信号を出力する。そしてそのキャンセル信号により、パイプライン918のDステージで検知するパイプラインインターロック信号をキャンセルする。これにより、実施の形態3のマイクロプロセッサ1は、パイプライン918のアドレス計算用データのためのパイプラインインターロックが発生しないため、後続パイプライン918をペナルティなしに実行することができるものである。
【0130】
次に動作について説明する。
以下では、異なる実行ユニット間のパイプラインインターロックキャンセル処理の他の例について説明する。図22に示すパイプライン916のロード命令が、図10〜図13に示す命令RAM6からI2IDBUSを介して読み出されると、図15に示すセレクタ700を介して各制御回路に転送される。
【0131】
図15に示すデコーダ回路719では、セレクタ700から送信されたロード命令の命令コードと、Eステージの命令コードを保持するレジスタ704の出力とを比較し、パイプラインインターロックが発生していることを検知する。そしてパイプラインインターロック信号731を生成し、セレクタ制御回路721と命令コードライト信号生成回路720に出力する。
【0132】
命令コードライト信号生成回路720はライト信号を出力し、レジスタ701の値をフィードバックレジスタ706内に取り込む。そしてセレクタ制御回路721では、フィードバックレジスタ706の値を選択するようにセレクタ700を制御して、そのロード命令のコードを各制御回路に出力する。この処理により、図22に示すパイプライン916のD/Aステージが1クロックインターロックされることになる。
【0133】
図10〜図13に示す整数演算ユニット4内の加算器20で実行された図22に示すパイプライン915の加算処理結果が、レジスタ55及びライトバックレジスタ54を介して汎用レジスタ(GPR)5内へW2期間中に書き込まれた後、図22に示すパイプライン916のロード命令では、汎用レジスタ(GPR)5に対するデータのリード動作を開始し、アドレス加算器32でデータRAMアクセス用のアドレスを生成する。
【0134】
図22に示すパイプライン917の加算命令のように、条件実行判定で不実行となった場合、図15に示す条件実行制御回路722から条件実行キャンセル信号723がデコーダ回路(データ干渉判定回路)719へ出力され、パイプラインインターロック信号をキャンセルする。
【0135】
以上のように、この実施の形態3によれば、異なる命令実行ユニット間でデータ干渉を起こしており、かつその先行命令が条件実行判定で不実行となった場合に、その条件実行キャンセル信号でパイプラインインターロック信号をキャンセルするので、パイプラインのペナルティを削除することができる。
【0136】
実施の形態4.
図23は、この発明の実施の形態4によるマイクロプロセッサ1の乗算データのパイプラインインターロックキャンセル処理を示すタイミング図であり、図において、白の部分はメモリアクセスユニット3で実行されているパイプライン、斜線部分は、整数演算ユニット4で実行されているパイプラインを示す。
【0137】
921は、メモリアクセスユニット3で実行されるロード命令のパイプラインである。922は、パイプライン921の後続の整数演算ユニット4で実行される乗算命令のパイプラインである。923は、条件実行判定で不実行となるメモリアクセスユニット3で実行されるロード命令のパイプラインである。924は、パイプライン923の後続の整数演算ユニット4で実行される乗算命令のパイプラインである。
【0138】
実施の形態4のマイクロプロセッサ1では、図23に示すパイプライン921のロード命令の書き込みレジスタr20からパイプライン922の乗算命令のソースデータ読み出しが発生した場合、そのデータ干渉をパイプライン922のDステージで検知し、パイプラインインターロック信号を生成する。パイプラインインターロック信号が生成されると、パイプライン922のDステージを1クロック停止するためのセレクタ信号を生成する。そして、パイプライン921のMステージでロードしたデータをパイプライン922にバイパスするための制御信号を生成しバイパス処理を実行する。
【0139】
上記のように、乗算データのデータ干渉が発生した場合、パイプラインインターロックのためのペナルティが1クロック発生する。不実行となる加算命令のパイプライン923では、Dステージで条件実行判定を行い、D2から条件実行キャンセル信号を出力する。そしてそのキャンセル信号により、パイプライン924のDステージで検知するパイプラインインターロック信号をキャンセルする。これにより、実施の形態4のマイクロプロセッサ1では、パイプライン924の乗算データのためのパイプラインインターロックが発生しないので、後続パイプライン924をペナルティなしに実行することができるものである。
【0140】
次に動作について説明する。
以下では、図10〜図13に示すこの発明のマイクロプロセッサ1のブロック図および図15に示す命令デコードユニット2内に組み込まれている制御回路のブロック図、および図23に示す乗算データのパイプラインインターロックキャンセル処理を示すタイミング図を用いて、乗算データのパイプラインインターロックキャンセル処理について説明する。
【0141】
図23に示すパイプライン922の乗算命令が、図10〜図13に示す命令RAM6からI2IDBUSを介して読み出されると、読み出された命令は、図15に示すセレクタ700を介して各制御回路に転送される。図15に示すデコーダ回路(データ干渉判定回路)719では、セレクタ700からの乗算命令の命令コードと、Dステージの命令コードを保持するレジスタ702の出力とを比較し、パイプラインインターロックが発生していることを検知する。そして、パイプラインインターロック信号731,735を生成し、セレクタ制御回路721と命令コードライト信号生成回路720とデコーダ回路718へ出力する。
【0142】
命令コードライト信号生成回路720からはライト信号が出力され、レジスタ701の値をフィードバックレジスタ706に取り込む。そしてセレクタ制御回路721では、フィードバックレジスタ706の値を選択するようにセレクタ700を制御して、その乗算命令のコードを各制御回路に出力する。この処理により、図23に示すのパイプライン922のDステージが1クロックインターロックされることになる。
【0143】
図15に示すデコーダ回路718では、デコーダ回路719からのパイプラインインターロック信号735を受け、バイパス経路選択信号をさらに1クロック余分に生成し、図10〜図13に示すバイパス経路208を経由して、オペランドデータバスM2ODBUSの値を符号拡張部200で処理した値を整数演算ユニット4のD2同期バス群へ出力する。そして、図23に示すパイプライン922の乗算命令は、そのバイパスされたデータを、図10〜図13に示す乗算器17の入力ラッチ22内4に取り込み、乗算処理を実行し、それ以降のステージを継続する。
【0144】
図23に示すのパイプライン923のロード命令のように条件実行判定で不実行となった場合、図15に示す条件実行制御回路722から条件実行キャンセル信号723がデ、コーダ回路719に出力され、パイプラインインターロック信号をキャンセルする。
【0145】
以上のように、この実施の形態4によれば、メモリアクセスユニット3で実行されるロード命令のロードデータが、整数演算ユニット4で実行される乗算命令のソースデータとデータ干渉を起こしており、かつその先行ロード命令が条件実行判定で不実行となった場合に、その条件実行キャンセル信号でパイプラインインターロック信号とバイパス経路選択信号をキャンセルするので、パイプラインのペナルティを削除することができる。
【0146】
実施の形態5.
図24は、この発明の実施の形態5によるマイクロプロセッサ1のキャリーフラグのパイプラインインターロックキャンセル処理を示すタイミング図であり、図において、白の部分はメモリアクセスユニット3で実行されているパイプライン、斜線部分は、整数演算ユニット4で実行されているパイプラインを示す。
【0147】
925は、メモリアクセスユニット3で実行される加算命令のパイプラインである。926は、パイプライン925の後続のキャリーフラグを用いる加算命令のパイプラインである。927は、条件実行判定で不実行となるメモリアクセスユニット3で実行される加算命令のパイプラインである。928は、パイプライン927の後続のキャリーフラグを用いる加算命令のパイプラインである。
【0148】
実施の形態5のマイクロプロセッサ1では、パイプライン925の加算命令がキャリーフラグを更新し、パイプライン926の命令がその更新されたキャリーフラグを用いて加算処理を行う場合、そのキャリーフラグの干渉をパイプライン926のDステージで検知し、パイプラインインターロック信号を生成する。パイプラインインターロック信号が生成されると、パイプライン926のDステージを1クロック停止するためのセレクタ信号を生成する。そして、キャリーセレクト信号を生成して、パイプライン925のW1で更新されたキャリーフラグをパイプライン926に転送する。
【0149】
このようなキャリーフラグの干渉が発生した場合、パイプラインインターロックのためのペナルティが1クロック発生する。不実行となる加算命令のパイプライン927では、Dステージで条件実行判定を行い、D2から条件実行キャンセル信号を出力する。そしてそのキャンセル信号により、パイプライン928のDステージで検知するパイプラインインターロック信号をキャンセルする。これにより、実施の形態5のマイクロプロセッサ1は、パイプライン928のキャリーフラグのためのパイプラインインターロックが発生しないために、後続パイプライン928をペナルティなしに実行することができるものである。
【0150】
次に動作について説明する。
以下では、図10〜図13に示すこの発明のマイクロプロセッサ1のブロック図および図15に示す命令デコードユニット2内に組み込まれている制御回路のブロック図、および図24に示すキャリーフラグのパイプラインインターロックキャンセル処理を示すタイミング図を用いて、キャリーフラグのパイプラインインターロックキャンセル処理について説明する。
【0151】
図24に示すパイプライン926のキャリーフラグを用いる加算命令が、図10〜図13に示す命令RAM6からI2IDBUSを介して読み出されると、図15に示すセレクタ700を介して各制御回路に転送される。図15に示すデコーダ回路(フラグ干渉判定回路)719では、セレクタ700からのその加算命令の命令コードと、Dステージの命令コードを保持するレジスタ702の出力を比較し、パイプラインインターロックが発生していることを検知する。そしてパイプラインインターロック信号731を生成し、セレクタ制御回路721と命令コードライト信号生成回路720に出力する。
【0152】
命令コードライト信号生成回路720からはライト信号が出力され、レジスタ701の値をフィードバックレジスタ706内に取り込む。そしてセレクタ制御回路721は、フィードバックレジスタ706の値を選択するようにセレクタ700を制御して、その乗算命令のコードを各制御回路に出力する。この処理により、図24に示すパイプライン926のDステージが1クロックインターロックされることになる。
【0153】
図15に示すデコーダ714では、2クロック間キャリーフラグを用いる加算命令のコードを保持しているレジスタ702の値をデコードし、キャリーセレクト信号を2クロック間生成する。その信号により、図10〜図13に示すフラグ経路62から更新されたキャリーフラグの値がALU15内へ入力され、そのフラグ値を用いた加算命令を実行する。
【0154】
図24に示すパイプライン927の加算命令のように、条件実行判定で不実行となった場合、図15に示す条件実行制御回路722から条件実行キャンセル信号723がデコーダ回路719へ出力され、パイプラインインターロック信号をキャンセルする。
【0155】
以上のように、この実施の形態5によれば、あるフラグを用いる命令の先行命令がそのフラグを更新し、かつその先行命令が条件実行判定で不実行となった場合に、その条件実行キャンセル信号でパイプラインインターロック信号をキャンセルするので、パイプラインのペナルティを削除することができる。
【0156】
実施の形態6.
図25は、この発明の実施の形態6によるマイクロプロセッサ1の条件実行フラグのパイプラインインターロックキャンセル処理を示すタイミング図であり、図において、白の部分はメモリアクセスユニット3で実行されているパイプライン、斜線部分は、整数演算ユニット4で実行されているパイプラインを示す。
【0157】
931は、メモリアクセスユニット3で実行される比較命令のパイプラインである。932は、パイプライン931の後続の条件実行判定を伴う加算命令のパイプラインである。933は、条件実行判定で不実行となるメモリアクセスユニット3で実行される比較命令のパイプラインである。934は、パイプライン933の後続の条件実行判定を伴う加算命令のパイプラインである。
【0158】
実施の形態6のマイクロプロセッサ1では、パイプライン931の比較命令が条件実行フラグを更新し、パイプライン932の命令がその更新された条件実行フラグを用いて条件実行判定を伴う場合、その条件実行フラグの干渉をパイプライン932のDステージで検知し、パイプラインインターロック信号を生成する。パイプラインインターロック信号が生成されると、パイプライン932のDステージを1クロック停止するためのセレクタ信号を生成する。そして条件実行判定期間中信号を生成して、パイプライン931のW1で更新された条件実行フラグをパイプライン932で条件実行の判定に用いる。このような条件実行フラグの干渉が発生した場合、パイプラインインターロックのためのペナルティが1クロック発生する。
【0159】
不実行となる比較命令のパイプライン933では、Dステージで条件実行判定を行い、D2から条件実行キャンセル信号を出力する。そして、そのキャンセル信号により、パイプライン934のDステージで検知するパイプラインインターロック信号をキャンセルする。これにより、実施の形態6のマイクロプロセッサ1では、パイプライン934の条件実行フラグのためのパイプラインインターロックが発生しないために、後続パイプライン934をペナルティなしに実行することができるものである。
【0160】
次に動作について説明する。
以下では、図10〜図13に示すこの発明のマイクロプロセッサ1のブロック図および図15に示す命令デコードユニット2内に組み込まれている制御回路のブロック図、および図25に示す条件実行フラグのパイプラインインターロックキャンセル処理を示すタイミング図を用いて、条件実行フラグのパイプラインインターロックキャンセル処理について説明する。
【0161】
図25に示すパイプライン932の条件実行判定を伴う加算命令が、図10〜図13に示す命令RAM6からI2IDBUSを介して読み出されると、図15に示すセレクタ700を介して各制御回路に転送される。デコーダ回路(フラグ干渉判定回路)719は、セレクタ700からその加算命令の命令コードと、Dステージの命令コードを保持するレジスタ702の出力とを比較し、パイプラインインターロックが発生していることを検知する。そして、パイプラインインターロック信号731を生成し、セレクタ制御回路721と命令コードライト信号生成回路720へ出力する。命令コードライト信号生成回路720からレジスタ701へライト信号が出力され、レジスタ701の値をフィードバックレジスタ706内へ取り込む。そして、セレクタ制御回路721は、フィードバックレジスタ706の値を選択するようにセレクタ700を制御して、その乗算命令のコードを各制御回路に出力する。この処理により、図25に示すパイプライン932のDステージが1クロックインターロックされることになる。
【0162】
図25に示すパイプライン933の比較命令のように、条件実行判定で不実行となった場合、図15に示す条件実行制御回路722から条件実行キャンセル信号723がデコーダ回路719へ出力され、パイプラインインターロック信号をキャンセルする。
【0163】
以上のように、この実施の形態6によれば、条件実行判定を伴う命令の先行命令が条件実行フラグを更新し、かつその先行命令が条件実行判定で不実行となった場合に、その条件実行キャンセル信号によりパイプラインインターロック信号をキャンセルするので、パイプラインのペナルティを削除することができる。
【0164】
実施の形態7.
図26は、この発明の実施の形態7によるマイクロプロセッサ1のモードフラグ更新時のパイプラインインターロックキャンセル処理を示すタイミング図であり、図において、白の部分はメモリアクセスユニット3で実行されているパイプライン、斜線部分は、整数演算ユニット4で実行されているパイプラインを示す。
【0165】
935は、メモリアクセスユニット3で実行される制御レジスタデータ転送命令のパイプラインである。936は、パイプライン935の後続命令のパイプラインである。937は、条件実行判定で不実行となるメモリアクセスユニット3で実行される制御レジスタデータ転送命令のパイプラインである。938は、パイプライン937の後続命令のパイプラインである。
【0166】
実施の形態7のマイクロプロセッサ1では、パイプライン935の制御レジスタデータ転送命令がモードフラグを更新した場合、そのモードフラグの更新をパイプライン925のDステージで検知し、パイプラインインターロック信号を生成する。パイプラインインターロック信号が生成されると、パイプライン935のE2で更新されたモードフラグの値で後続命令を実行できるまで、後続命令が2クロック間インターロックされる。このようなモードフラグの更新が発生した場合、パイプラインインターロックのためのペナルティが2クロック発生する。
【0167】
不実行となる制御レジスタデータ転送命令のパイプライン937では、Dステージで条件実行判定を行い、D2から条件実行キャンセル信号を出力する。そして、そのキャンセル信号によりパイプラインインターロック信号をキャンセルする。これにより、実施の形態7のマイクロプロセッサ1は、後続パイプライン938をペナルティなしに実行することができるものである。
【0168】
次に動作について説明する。
以下では、図10〜図13に示すこの発明のマイクロプロセッサ1のブロック図および図15に示す命令デコードユニット2内に組み込まれている制御回路のブロック図、および図26に示すモードフラグ更新時のパイプラインインターロックキャンセル処理を示すタイミング図を用いて、モードフラグ更新時のパイプラインインターロックキャンセル処理について説明する。
【0169】
図26に示すパイプライン935のモードフラグを更新する制御レジスタデータ転送命令が、図10〜図13に示す命令RAM6からI2IDBUSを介して読み出されると、読み出された命令は、図15に示すセレクタ700を介して各制御回路に転送される。デコーダ回路(モードフラグ判定回路)719では、セレクタ700からのその制御レジスタデータ転送命令の命令コードからパイプラインインターロック信号を生成する。そしてそのパイプラインインターロック信号734を生成し、デコーダ回路717に出力する。デコーダ回路717では、図10〜図13に示す命令アドレスレジスタ29を更新する制御信号が生成されている。その更新制御信号をパイプラインインターロック信号でキャンセルすることにより、命令アドレスレジスタの更新を停止する。これにより、図26に示す後続のパイプライン936のIFステージを停止することが可能である。
【0170】
図26に示すパイプライン937の制御レジスタデータ転送命令のように条件実行判定で不実行となった場合、図15に示す条件実行制御回路722から条件実行キャンセル信号723がデコーダ回路719へ出力され、パイプラインインターロック信号をキャンセルする。
【0171】
以上のように、この実施の形態7によれば、モードフラグを更新する命令が条件実行判定で不実行となった場合に、その条件実行キャンセル信号で後続命令のパイプラインインターロック信号をキャンセルするので、パイプラインのペナルティを削除することができる。
【0172】
実施の形態8.
図27は、この発明の実施の形態8によるマイクロプロセッサ1のリソースコンフリクト発生時のパイプラインインターロックキャンセル処理を示すタイミング図であり、図において、白の部分はメモリアクセスユニット3で実行されているパイプライン、斜線部分は、整数演算ユニット4で実行されているパイプラインを示す。
【0173】
941は、メモリアクセスユニット3で実行されるロード命令のパイプラインである。942は、パイプライン941と同時に整数演算ユニット4で実行される乗算命令のパイプラインである。943は、パイプライン941,942の後続命令のパイプラインである。944は、条件実行判定で不実行となるメモリアクセスユニット3で実行されるロード命令のパイプラインである。945は、パイプライン944と同時に整数演算ユニット4で実行される乗算命令のパイプラインである。946は、パイプライン944,945の後続命令のパイプラインである。948は、条件実行判定で不実行となる整数演算ユニット4で実行される乗算命令のパイプラインである。947は、パイプライン948と同時に実行されるメモリアクセスユニット3で実行されるロード命令のパイプラインである。949は、パイプライン947,948の後続命令のパイプラインである。
【0174】
実施の形態8のマイクロプロセッサ1では、図27に示すパイプライン941,942のように、メモリアクセスユニット3でのロード命令と整数演算ユニット4での乗算命令が同時に実行される場合、Wステージでの汎用レジスタ(GPR)5へのデータの書き込み時に、同じライトバックバスを用いるためにリソースコンフリクト(リソース衝突)が発生する。
【0175】
このリソースコンフリクトを回避するため、パイプライン942のWステージを1クロックストールし、パイプライン941の結果を汎用レジスタ(GPR)5へ書き込んだ1クロック後に、パイプライン942の結果を汎用レジスタ(GPR)5へ書き込む。このパイプラインストール信号は、パイプライン941,942のDステージで生成し、後続命令のパイプライン943のIFステージをストールする。そしてGRPライト信号を2クロック間生成し、パイプライン941の結果を書き込むアドレスAとパイプライン942の結果を書き込むアドレスBを連続して出力する。このように、リソースコンフリクトが発生した場合、パイプラインストールのためのペナルティが1クロック発生する。
【0176】
不実行となるロード命令のパイプライン944では、Dステージで条件実行判定を行い、D2から条件実行キャンセル信号を出力する。そしてこの条件実行キャンセル信号により、パイプラインストール信号をキャンセルする。そしてパイプライン945の結果をGPRに書き込むためのアドレスBをGPRライト信号と共に出力する。これによりパイプライン945の後続パイプライン946をペナルティなしに実行することが可能である。
【0177】
不実行となる乗算命令のパイプライン948では、Dステージで条件実行判定を行い、D2から条件実行キャンセル信号を出力する。そしてこの条件実行キャンセル信号により、パイプラインストール信号をキャンセルする。そしてパイプライン947の結果を汎用レジスタ(GPR)5へ書き込むためのアドレスAをGPRライト信号と共に出力する。これにより、実施の形態8のマイクロプロセッサ1は、パイプライン947の後続パイプライン949をペナルティなしに実行することができるものである。
【0178】
次に動作について説明する。
以下では、図10〜図13に示すこの発明のマイクロプロセッサ1のブロック図および図15に示す命令デコードユニット2内に組み込まれている制御回路のブロック図、および図27に示すリソースコンフリクト発生時のパイプラインインターロックキャンセル処理を示すタイミング図を用いて、リソースコンフリクト発生時のパイプラインインターロックキャンセル処理について説明する。
【0179】
図24に示すパイプライン941,942のロード命令と乗算命令が、図10〜図13に示す命令RAM6からI2IDBUSを介して読み出されると、読み出された命令は、図15に示すセレクタ700を介して各制御回路に転送される。
【0180】
図15に示すデコーダ回路(同時使用判定回路)719は、セレクタ700からのその命令コードからリソースコンフリクトによるパイプラインインターロックが発生していることを検知する。そして、パイプラインインターロック信号730,732,735を生成し、命令コードライト信号生成回路720とデコーダ回路(衝突回避回路)718とデコーダ回路(衝突回避回路)716へ出力する。
【0181】
命令コードライト信号生成回路720からレジスタ705へ送信されるライト信号によりレジスタ705の更新動作を制御し、Wステージの命令コードを2クロック間保持する。そしてデコーダ回路716では、そのWステージの命令コードをデコードして、最初にメモリアクセスユニット3へのGPRライト信号を出力し、次に整数演算ユニット4へのGPRライト信号を出力する。
【0182】
また、デコーダ回路717は、図10〜図13に示す命令アドレスレジスタ29の更新制御信号を加工し、命令アドレスレジスタ29の値を更新しないように処理する。これにより、パイプライン943のIFステージをストールし、それ以降のステージを継続する。
【0183】
図27に示すパイプライン944のロード命令のように、条件実行判定で不実行となった場合、図15に示す条件実行制御回路722から条件実行キャンセル信号723がデコーダ回路719に出力され、パイプラインストール信号をキャンセルする。そして、図15に示すデコーダ回路(衝突回避回路)716では、整数演算ユニット4の結果を書き込むためのGPRライト信号を出力する。また図27に示すパイプライン948の乗算命令のように、条件実行判定で不実行となった場合、図15に示す条件実行制御回路722から条件実行キャンセル信号723が、デコーダ回路719へ出力され、パイプラインストール信号をキャンセルする。そしてデコーダ回路716では、メモリアクセスユニット3での実行結果を書き込むためのGPRライト信号を出力する。
【0184】
以上のように、実施の形態8によれば、あるリソースコンフリクトによりパイプラインインターロックが発生し、かつそのリソースコンフリクトを発生させるサブ命令のいずれかが条件実行判定で不実行となった場合に、その条件実行キャンセル信号でパイプラインストール信号をキャンセルするので、パイプラインのペナルティを削除することができる。
【0185】
【発明の効果】
以上のように、請求項1記載の発明によれば、実行停止回路がプログラム内の先行命令の動作に基づいて現命令の実行を一時的に停止し、条件実行判定回路が先行命令の実行を行うか否かの判定を行い、条件実行判定回路が先行命令を実行しないと判定した時に条件実行制御回路が先行命令の動作を開始する信号を無効とする処理を行い、パイプラインの停止を誘因した原因となる命令が条件実行判定で不実行となった場合、そのパイプラインの停止動作をキャンセルするように構成したので、パイプラインのペナルティを削減できる効果がある。
【0186】
請求項2記載の発明によれば、条件実行判定回路の判定によりロード命令が条件実行判定で不実行となった場合に、ロードしたデータをGPRに書き込む処理のみをキャンセルするのではなく、条件実行制御回路がデータRAMアクセス処理からキャンセルするように構成したので、パイプラインのペナルティを削除できる効果がある。
【0187】
請求項3記載の発明によれば、ロード命令のアドレス計算用データが同じ命令実行ユニットで実行される先行命令の結果データと干渉を起こし、かつ先行命令が条件実行判定回路の条件実行判定で不実行となった場合に、条件実行制御回路がその条件実行キャンセル信号でパイプラインインターロック信号とバイパス経路選択信号をキャンセルするように構成したので、パイプラインのペナルティを削除できる効果がある。
【0188】
請求項4記載の発明によれば、異なる命令実行ユニット間でデータ干渉が発生し、かつその先行命令が条件実行判定回路の条件実行判定で不実行となった場合に、条件実行制御回路がその条件実行キャンセル信号でパイプラインインターロック信号をキャンセルするように構成したので、パイプラインのペナルティを削除できる効果がある。
【0189】
請求項5記載の発明によれば、メモリアクセス部で実行されるロード命令のロードデータが、整数演算部で実行される乗算命令のソースデータと干渉を起こし、かつその先行ロード命令が条件実行判定回路の条件実行判定で不実行となった場合に、条件実行制御回路がその条件実行キャンセル信号でパイプラインインターロック信号とバイパス経路選択信号をキャンセルするように構成したので、パイプラインのペナルティを削除できる効果がある。
【0190】
請求項6記載の発明によれば、あるフラグを用いる命令の先行命令がそのフラグを更新し、かつその先行命令が条件実行判定回路の条件実行判定で不実行となった場合に、条件実行制御回路が条件実行キャンセル信号でパイプラインインターロック信号をキャンセルするように構成したので、パイプラインのペナルティを削除できる効果がある。
【0191】
請求項7記載の発明によれば、条件実行判定を伴う命令の先行命令が条件実行フラグを更新し、かつその先行命令が条件実行判定回路の条件実行判定で不実行となった場合に、条件実行制御回路がその条件実行キャンセル信号でパイプラインインターロック信号をキャンセルするように構成したので、パイプラインのペナルティを削除できる効果がある。
【0192】
請求項8記載の発明によれば、モードフラグを更新する命令が条件実行判定回路の条件実行判定で不実行となった場合に、条件実行制御回路がその条件実行キャンセル信号で後続命令のパイプラインインターロック信号をキャンセルするように構成したので、パイプラインのペナルティを削除できる効果がある。
【0193】
請求項9記載の発明によれば、あるリソースコンフリクトによりパイプラインインターロックが発生し、かつそのリソースコンフリクトを発生させるサブ命令のいずれかが条件実行判定回路の条件実行判定で不実行となった場合に、条件実行制御回路が条件実行キャンセル信号でパイプラインストール信号をキャンセルするように構成したので、パイプラインのペナルティを削除できる効果がある。
【図面の簡単な説明】
【図1】この発明における条件実行命令を備えるマイクロプロセッサの基本構成を示すブロック図である。
【図2】図1に示したこの発明における条件実行命令を備えるマイクロプロセッサで用いられる命令フォーマットを示す説明図である。
【図3】図1に示したこの発明における条件実行命令を備えるマイクロプロセッサで用いられる命令フォーマットを示す説明図である。
【図4】図1に示したこの発明における条件実行命令を備えるマイクロプロセッサで用いられる命令フォーマットを示す説明図である。
【図5】図1に示したこの発明における条件実行命令を備えるマイクロプロセッサで用いられる命令フォーマットを示す説明図である。
【図6】図1に示したこの発明における条件実行命令を備えるマイクロプロセッサのレジスタの構成を示す説明図である。
【図7】図1に示したこの発明における条件実行命令を備えるマイクロプロセッサのレジスタの構成を示す説明図である。
【図8】図1に示したこの発明における条件実行命令を備えるマイクロプロセッサのパイプライン動作を示す説明図である。
【図9】図1に示したこの発明における条件実行命令を備えるマイクロプロセッサのパイプライン動作を示す説明図である。
【図10】図1に示したこの発明における条件実行命令を備えるマイクロプロセッサの実行ユニットを中心とした詳細な構成を示すブロック図であり、図10〜図13で一つのブロック図を示す。
【図11】図10の右側に連続した部分のブロック図である。
【図12】図11の右側に連続した部分のブロック図である。
【図13】図12の右側に連続した部分のブロック図である。
【図14】命令コード間のパイプラインでのデータの干渉を示す説明図である。
【図15】命令デコードユニット内に組み込まれているパイプラインインターロックキャンセル処理を制御する制御回路を示すブロック図である。
【図16】パイプラインインターロック制御回路図を示すブロック図である。
【図17】図15に示す条件実行制御回路を示すブロック図である。
【図18】パイパス制御回路を示すブロック図である。
【図19】この発明の実施の形態1による条件実行命令を備えるマイクロプロセッサのメモリアクセス時のパイプラインインターロックキャンセル処理を示すタイミング図である。
【図20】この発明の実施の形態2による条件実行命令を備えるマイクロプロセッサのアドレス計算データのパイプラインインターロックキャンセル処理を示すタイミング図である。
【図21】この発明の実施の形態3による条件実行命令を備えるマイクロプロセッサの異なる実行ユニット間でのパイプラインインターロックキャンセル処理を示すタイミング図である。
【図22】この発明の実施の形態3による条件実行命令を備えるマイクロプロセッサの異なる実行ユニット間でのパイプラインインターロックキャンセル処理を示すタイミング図である。
【図23】この発明の実施の形態4による条件実行命令を備えるマイクロプロセッサの乗算データのパイプラインインターロックキャンセル処理を示すタイミング図である。
【図24】この発明の実施の形態5による条件実行命令を備えるマイクロプロセッサのキャリーフラグのパイプラインインターロックキャンセル処理を示すタイミング図である。
【図25】この発明の実施の形態6による条件実行命令を備えるマイクロプロセッサの条件実行フラグのパイプラインインターロックキャンセル処理を示すタイミング図である。
【図26】この発明の実施の形態7による条件実行命令を備えるマイクロプロセッサのモードフラグ更新時のパイプラインインターロックキャンセル処理を示すタイミング図である。
【図27】この発明の実施の形態8による条件実行命令を備えるマイクロプロセッサのリソースコンフリクト発生時のパイプラインインターロックキャンセル処理を示すタイミング図である。
【図28】従来のMMAマイクロプロセッサのプロセッサコアの構成を示すブロック図である。
【図29】図28に示した従来のMMAマイクロプロセッサ内に組み込まれている実行ユニットの一部の回路をパイプライン的に配置したブロック図である。
【図30】図28に示す従来のMMAマイクロプロセッサで実行される命令のパイプライン図である。
【符号の説明】
2 命令デコードユニット(命令デコーダ)、3 メモリアクセスユニット(命令実行ユニット)、4 整数演算ユニット(命令実行ユニット)、5 汎用レジスタ、6 命令RAM(メモリ)、7 データRAM(メモリ)、716,718 デコーダ回路(衝突回避回路)、719 デコーダ回路(データ干渉判定回路、フラグ干渉判定回路、モードフラグ判定回路、同時使用判定回路)、720 命令コードライト信号生成回路(実行停止回路)、722 条件実行制御回路、862,863 条件実行判定回路。
Claims (9)
- 命令やデータを格納する命令RAMやデータRAM等からなるメモリと、前記メモリへ接続され命令をデコードする命令デコーダと、命令の実行を制御する情報を格納する制御レジスタと、データを格納する複数個のレジスタと、算術演算等を実行する演算ユニットと、前記命令デコーダに接続され前記命令デコーダから出力された出力に従い前記命令を実行する命令実行ユニットと、前記プログラム内の先行命令の動作に基づいて現命令の実行を一時的に停止する実行停止回路と、前記先行命令の実行を行うか否かの判定を行う条件実行判定回路と、前記条件実行判定回路が前記先行命令を実行しないと判定した場合、前記先行命令の動作を開始する信号を無効とする処理を行う条件実行制御回路とを備えることを特徴とする条件実行命令を備えるマイクロプロセッサ。
- 実行停止回路は、先行命令がメモリをアクセスし、そのアクセス完了を示すメモリアクセス完了信号が前記メモリから送信されるまでに複数クロック必要とする場合、前記先行命令のメモリアクセスが完了するまで現命令の実行を停止し、前記メモリから送信される前記アクセス完了信号に基づいて条件実行判定回路の動作は制御され、前記条件実行判定回路は、前記先行命令内の実行条件フィールドと制御レジスタ内の汎用フラグの値に基づいて前記先行命令の実行を行うか否かの判定を行い、前記条件実行判定回路が前記先行命令を実行しないと判定した場合に、条件実行制御回路は、前記先行命令の前記メモリへのアクセス処理を開始するアクセス開始信号を無効とすることを特徴とする請求項1記載の条件実行命令を備えるマイクロプロセッサ。
- 先行命令の処理結果を汎用レジスタへ書き込む以前に、現命令が前記処理結果を前記汎用レジスタから読み出す場合、前記先行命令のデスティネーションレジスタ指定フィールドと前記現命令のソースレジスタ指定フィールドが一致することを判定するデータ干渉判定回路と、前記先行命令の処理結果を前記汎用レジスタを経由することなく前記現命令を実行する命令実行ユニットに転送するバイパス経路とをさらに備え、実行停止回路は、前記バイパス経路を介して前記先行命令の処理結果が転送可能になるまで、前記現命令の実行を停止し、条件実行判定回路は、前記先行命令内の実行条件フィールドの値および制御レジスタから得られる汎用フラグの値により前記先行命令の実行を行うか否かの判定を行い、前記データ干渉判定回路から送信される制御信号に基づいて前記実行停止回路と前記バイパス経路の動作が制御され、前記条件実行判定回路が、前記先行命令を実行しないと判定した場合、条件実行制御回路は、前記実行停止回路から送信される前記現命令の動作を停止する制御信号および前記先行命令の処理結果を前記現命令を実行する命令実行ユニットへ転送するための前記バイパス経路の動作を制御する制御信号を無効とすることを特徴とする請求項1記載の条件実行命令を備えるマイクロプロセッサ。
- 先行命令の処理結果を汎用レジスタへ書き込む以前に、現命令が前記処理結果を前記汎用レジスタから読み出す場合、前記先行命令のデスティネーションレジスタ指定フィールドと前記現命令のソースレジスタ指定フィールドとが一致することを判定するデータ干渉判定回路とをさらに備え、実行停止回路は、前記先行命令の処理結果が前記汎用レジスタへ書き込み完了されるまで前記現命令の実行を停止させ、条件実行判定回路は、前記先行命令内の実行条件フィールドの値および制御レジスタから得られる汎用フラグの値により前記先行命令の実行を行うか否かの判定を行い、前記データ干渉判定回路から送信される制御信号により前記実行停止回路の動作が制御され、前記条件実行判定回路で前記先行命令を実行しないと判定した場合、条件実行制御回路は、前記実行停止回路から送信される前記現命令の動作の停止を制御する制御信号を無効とすることを特徴とする請求項1記載の条件実行命令を備えるマイクロプロセッサ。
- 先行命令の処理結果を汎用レジスタへ書き込む以前に、異なる命令実行ユニットで実行される現命令が前記処理結果を前記汎用レジスタから読み出す場合、前記先行命令のデスティネーションレジスタ指定フィールドと前記現命令のソースレジスタ指定フィールドとが一致することを判定するデータ干渉判定回路と、前記先行命令の処理結果を前記汎用レジスタを経由することなく前記現命令を実行する前記異なる命令実行ユニットへ転送するバイパス経路とをさらに備え、実行停止回路は、前記バイパス経路を介して前記先行命令の処理結果を転送可能な時まで前記現命令の実行を停止し、条件実行判定回路は、前記先行命令内の実行条件フィールドおよび制御レジスタから得られる汎用フラグの値により前記先行命令の実行を行うか否かの判定を行い、前記データ干渉判定回路から送信される制御信号に基づいて前記実行停止回路および前記バイパス経路の動作が制御され、前記条件実行判定回路が前記先行命令を実行しないと判定した場合、条件実行制御回路は、前記実行停止回路から送信される前記現命令の実行停止を指示する制御信号と、前記現命令の実行を行う前記異なる命令実行ユニットへ前記先行命令の処理結果を転送するための前記バイパス経路の動作を制御する制御信号を無効とすることを特徴とする請求項1記載の条件実行命令を備えるマイクロプロセッサ。
- 先行命令の処理結果を制御レジスタ内の汎用フラグへ書き込む以前に、現命令が前記処理結果を前記制御レジスタ内の前記汎用フラグから読み出す場合、前記先行命令のデスティネーションフラグ指定フィールドと前記現命令のソースフラグ指定フィールドとが一致することを判定するフラグ干渉判定回路とをさらに備え、実行停止回路は前記先行命令の処理結果が前記制御レジスタ内の前記汎用フラグへの書き込み動作が完了するまで前記現命令の実行を停止させ、条件実行判定回路は、前記先行命令内の実行条件フィールドの値と前記制御レジスタ内の前記汎用フラグの値とにより前記先行命令の実行を行うか否かの判定を行い、前記フラグ干渉判定回路から送信された制御信号に基づいて前記実行停止回路の動作が制御され、前記条件実行判定回路が前記先行命令を実行しないと判定した場合、条件実行制御回路は、前記実行停止回路から送信された前記現命令の実行を停止する制御信号を無効とすることを特徴とする請求項1記載の条件実行命令を備えるマイクロプロセッサ。
- 先行命令の処理結果を制御レジスタ内の汎用フラグへ書き込む以前に、現命令が前記制御レジスタ内の汎用フラグを用いて条件実行判定を行う場合、前記先行命令のデスティネーションフラグ指定フィールドと前記現命令のソースフラグ指定フィールドとが一致することを判定するフラグ干渉判定回路とをさらに備え、実行停止回路は前記先行命令の前記処理結果が前記制御レジスタ内の前記汎用フラグへ書き込み完了されるまで前記現命令の実行を停止させ、条件実行判定回路は、前記先行命令内の実行条件フィールドと前記制御レジスタから得られる前記汎用フラグの値により前記先行命令の実行を行うか否かの判定を行い、前記フラグ干渉判定回路から送信される制御信号に基づいて前記実行停止回路の動作が制御され、前記条件実行判定回路が前記先行命令を実行しないと判定した場合、条件実行制御回路は、前記実行停止回路から送信される前記現命令の実行停止を指示する制御信号を無効とすることを特徴とする請求項1記載の条件実行命令を備えるマイクロプロセッサ。
- 先行命令が制御レジスタ内のモードフラグを更新する場合、前記先行命令が前記制御レジスタ内の前記モードフラグを更新する命令であることを検知するモードフラグ判定回路をさらに備え、実行停止回路は、前記先行命令が前記制御レジスタ内の前記モードフラグの値を更新完了するまで現命令の動作を停止させ、条件実行判定回路は、前記先行命令内の実行条件フィールドと前記制御レジスタから得られる汎用フラグの値により前記先行命令の実行を行うか否かの判定を行い、前記条件実行判定回路から送信される制御信号に基づいて前記実行停止回路の動作が制御され、前記条件実行判定回路で前記先行命令を実行しないと判定した場合、前記条件実行制御回路は、前記実行停止回路から送信される前記現命令の動作の停止を指示する制御信号を無効とすることを特徴とする請求項1記載の条件実行命令を備えるマイクロプロセッサ。
- 先行命令が含んでいる少なくとも1つ以上の副命令である先行副命令を実行するため、演算回路及び前記演算回路と汎用レジスタとの間のデータ読み出し及び書き込み経路等が同時に使用される場合、前記先行副命令の組み合わせにより前記データ読み出し及び書き込み経路の同時使用が行われるか否かを検知する同時使用判定回路と、前記先行副命令の実行で前記データ読み出し及び書き込み経路の同時使用を回避するため前記先行副命令のいずれかの動作を停止する衝突回避回路とをさらに備え、実行停止回路は、前記先行副命令の動作が停止される期間と同一期間だけ前記現命令の動作を停止し、条件実行判定回路は、前記先行命令内の実行条件フィールドと制御レジスタ内の汎用フラグの値により前記先行副命令の実行を行うか否かの判定を行い、前記条件実行判定回路から送信される制御信号に基づいて前記衝突回避回路と前記実行停止回路の動作が制御され、前記条件実行判定回路が前記先行副命令を実行しないと判定し、前記データ読み出し及び書き込み経路の同時使用が発生しない場合に、条件実行制御回路は、前記衝突回避回路から送信される前記先行副命令の実行を指示する制御信号と、前記実行停止回路から送信される前記現命令の実行を停止する制御信号を無効とすることを特徴とする先行副命令記載の条件実行命令を備えるマイクロプロセッサ。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP12452697A JP3568737B2 (ja) | 1997-05-14 | 1997-05-14 | 条件実行命令を備えるマイクロプロセッサ |
| US08/942,295 US6016543A (en) | 1997-05-14 | 1997-10-01 | Microprocessor for controlling the conditional execution of instructions |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP12452697A JP3568737B2 (ja) | 1997-05-14 | 1997-05-14 | 条件実行命令を備えるマイクロプロセッサ |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH10320197A JPH10320197A (ja) | 1998-12-04 |
| JP3568737B2 true JP3568737B2 (ja) | 2004-09-22 |
Family
ID=14887672
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP12452697A Expired - Fee Related JP3568737B2 (ja) | 1997-05-14 | 1997-05-14 | 条件実行命令を備えるマイクロプロセッサ |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3568737B2 (ja) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7366876B1 (en) | 2000-10-31 | 2008-04-29 | Analog Devices, Inc. | Efficient emulation instruction dispatch based on instruction width |
-
1997
- 1997-05-14 JP JP12452697A patent/JP3568737B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JPH10320197A (ja) | 1998-12-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6560697B2 (en) | Data processor having repeat instruction processing using executed instruction number counter | |
| US6016543A (en) | Microprocessor for controlling the conditional execution of instructions | |
| EP0789297B1 (en) | Data processor loading data and performing multiply-add operation in parallel | |
| JP3881763B2 (ja) | データ処理装置 | |
| EP0996057B1 (en) | Data processor with an instruction unit having a cache and a ROM | |
| JP2507638B2 (ja) | デ―タ処理装置 | |
| JP3543181B2 (ja) | データ処理装置 | |
| JP2000020326A (ja) | プロセッサにおけるレジスタ内容の継承装置 | |
| JP3400458B2 (ja) | 情報処理装置 | |
| JP3578883B2 (ja) | データ処理装置 | |
| JPH01214932A (ja) | データ処理装置 | |
| JP3789583B2 (ja) | データ処理装置 | |
| US6055628A (en) | Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks | |
| JPH07120284B2 (ja) | データ処理装置 | |
| JPH06266556A (ja) | データ処理装置 | |
| JP3841967B2 (ja) | マイクロプロセッサ | |
| JP3568737B2 (ja) | 条件実行命令を備えるマイクロプロセッサ | |
| JP4243271B2 (ja) | データ処理装置およびデータ処理方法 | |
| JP3640855B2 (ja) | プロセッサ | |
| EP1050805B1 (en) | Transfer of guard values in a computer system | |
| JP3547585B2 (ja) | 条件実行命令を有するマイクロプロセッサ | |
| JPH0769825B2 (ja) | 並列処理装置 | |
| EP0573071A2 (en) | A microprocessor | |
| JP3461887B2 (ja) | 可変長パイプライン制御装置 | |
| JP3493110B2 (ja) | 高速分岐処理装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040219 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040309 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040407 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040518 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040616 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080625 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080625 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090625 Year of fee payment: 5 |
|
| LAPS | Cancellation because of no payment of annual fees |