(57)【特許請求の範囲】
【請求項１】
単一の命令コード内に含まれる複数個の副命令を有する命令やデータを格納するメモリへ接続され前記命令をデコードする命令デコード手段と、前記命令デコード手段へ接続され前記命令デコード手段から出力されるデコード結果に従って前記命令の実行を制御するデータを格納する制御レジスタと複数個のレジスタおよび前記命令に基づく算術演算を行う演算回路を有する複数個の命令実行手段と、前記複数個の命令実行手段間に設けられ、異なるパイプライン間でデータの転送を行うデータ転送経路と、前記データ転送経路を経由して前記データの転送動作を制御する前記命令デコード手段内に組込まれた制御手段と、前記データ転送経路の一部に設けられ、前記制御手段からの制御信号に従って前記データ転送経路を介したデータ転送の可否を選択する選択手段とを備え、前記複数個のレジスタを経由することなく、前記複数個の命令実行手段間で直接にデータ転送を実行し、前記命令実行手段は２つの命令実行手段を備え、前記選択手段は３ステートバッファおよびセレクタから構成され、前記制御手段は、先行副命令のデスティネーションレジスタ指定フィールドの値と、他のパイプラインで実行される前記副命令のソースレジスタ指定フィールドの値とを比較する比較手段を有し、前記比較手段の比較結果に基づいて前記選択手段を制御し、先行副命令のデスティネーションレジスタ指定フィールドと、他のパイプラインで実行される前記副命令のソースレジスタ指定フィールドのオペランドサイズに対応した比較手段を有し、前記比較手段の比較結果に基づいて前記選択手段を制御し、データ転送経路および前記データ転送経路に接続され所定データを選択するセレクタを経由したデータを、命令実行手段に接続されたソースバスへドライブさせることを特徴とするデータ処理装置。
【請求項２】
単一の命令コード内に含まれる複数個の副命令を有する命令やデータを格納するメモリへ接続され前記命令をデコードする命令デコード手段と、前記命令デコード手段へ接続され前記命令デコード手段から出力されるデコード結果に従って前記命令の実行を制御するデータを格納する制御レジスタと複数個のレジスタおよび前記命令に基づく算術演算を行う演算回路を有する複数個の命令実行手段と、前記複数個の命令実行手段間に設けられ、異なるパイプライン間でデータの転送を行うデータ転送経路と、前記データ転送経路を経由して前記データの転送動作を制御する前記命令デコード手段内に組込まれた制御手段と、前記データ転送経路の一部に設けられ、前記制御手段からの制御信号に従って前記データ転送経路を介したデータ転送の可否を選択する選択手段とを備え、前記複数個のレジスタを経由することなく、前記複数個の命令実行手段間で直接にデータ転送を実行し、前記選択手段は３ステートバッファおよびセレクタからなり、前記制御手段は、先行副命令のデスティネーションレジスタ指定フィールドの値と、複数のパイプラインで実行される副命令のソースレジスタ指定フィールドの値とを比較する比較手段を有し、前記比較手段の比較結果に基づいて前記選択手段を制御し、先行副命令のデスティネーションレジスタ指定フィールドと、複数のパイプラインで実行される副命令のソースレジスタ指定フィールドのオペランドサイズに対応した比較手段を有し、前記比較手段の比較結果に基づいて前記選択手段を制御し、データ転送経路および前記データ転送経路に接続され所定データを選択するセレクタを経由したデータを、複数の命令実行手段に接続されたソースバスへドライブさせることを特徴とするデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、単一命令内に含まれる複数個の副命令をそれぞれ独立に実行するための命令実行パイプラインを備え、データ干渉が発生した場合でも効率良く動作可能なデータ処理装置であるマイクロプロセッサに関するものである。
【０００２】
【従来の技術】
データ処理装置としてのマイクロプロセッサ内の複数の実行ユニットにおいて実行する副命令を複数個含んだ単一命令をＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）と呼び、このようなＶＬＩＷアーキテクチャに基づいた単一命令を実行可能なマイクロプロセッサを、ＶＬＩＷマイクロプロセッサと呼ぶ。
【０００３】
このＶＬＩＷマイクロプロセッサは、実行ユニットとしての複数の演算装置で実行される副命令からなる単一命令を実行することで、複数の演算装置を同時に制御する。これにより、マイクロプロセッサ内で命令コードを生成した時点で、確実にそれぞれの演算装置で実行される副命令を単一命令に組み込むことが可能である。これにより、各演算装置の利用効率を向上させることが可能となり、また副命令を実行するための演算装置を特定するデコード回路が不要であり、その結果、命令のデコード処理を高速に実行可能であるという利点を有する。
【０００４】
従来のＶＬＩＷマイクロプロセッサの一例としては、１９９６年１０月２２〜２３日に開催されたマイクロプロセッサ・フォーラム（Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ｆｏｒｕｍ）で発表されたＭＭＡマイクロプロセッサがある。
図３４は、ＭＭＡのＶＬＩＷアーキテクチャ命令を実行する従来のマイクロプロセッサのコアの概略図であり、図において、９００はＭＭＡのマイクロプロセッサコア、９０１はＭＭＡのＶＬＩＷ命令を実行する一つの実行ユニット、９０２はＭＭＡのＶＬＩＷ命令を実行する他の実行ユニット、９０４はデータＲＡＭである。このように、ＭＭＡのマイクロプロセッサでは、一つのＶＬＩＷ単一命令内に格納されている２つのサブ命令を２つの実行ユニット９０１、９０２で同時に実行可能な機能を有している。
【０００５】
実行ユニット９０１は、乗算器９１０と、アキュムレータ９１１と、シフタ９１２と、ＡＬＵ９１３より構成されている。また、実行ユニット９０２は、ＡＬＵ９１４と、ロード／ストアユニット９１５より構成されている。９２０、９２１は、実行ユニット９０１内に含まれる演算器のためのソースデータバスであり、これらのソースデータバス９２０，９２１を通じて演算のために必要なデータが汎用レジスタ９０３より読み出される。また、９３０，９３１は、実行ユニット９０２内に含まれる演算器等のためのソースデータバスであり、これらのソースデータバス９３０，９３１を介して演算のために必要なデータが汎用レジスタ９０３より読み出される。
【０００６】
９２５は、実行ユニット９０１内に含まれる演算結果を汎用レジスタ９０３に書き戻すためのライトバックバスである。９３２、９３３は、実行ユニット９０２内に含まれる演算結果等を汎用レジスタ９０３内に書き戻すためのライトバックバスである。９２２、９２３は、乗算器９１０とアキュムレータ９１１間を結ぶバスであり、この経路を用いることにより、ペナルティなしに累積加算が可能である。９４０は、ロード／ストアユニット９１５とデータＲＡＭ９０４を結ぶ双方向バスであり、オペランドデータのロード／ストアの制御に使用される。
【０００７】
図３５は、図３４に示したＭＭＡマイクロプロセッサコア９００内に含まれる実行ユニット９０１の一部の回路をパイプライン的に配置したブロック図であり、図において、９０３は汎用レジスタ、９１３はＡＬＵ、９１０ａ、９１０ｂは乗算を行なうための部品であり、それぞれワレス（Ｗａｌｌａｃｅ）のツリー回路とＣＰＡである。
【０００８】
実行ユニット９０１において、乗算はパイプラインの２ステージで実行することが可能である。９２１は、汎用レジスタ９０３からソースデータを読み出すソースデータバス、９２５は、汎用レジスタ９０３内に演算結果を書き戻すためのライトバックバス、９７０、９７１、９７２は、ソースデータバス９２１にデータをドライブする３ステートバッファである。９８０は、ＡＬＵ９１３の演算結果をソースデータバス９２１に出力するためのバイパス経路、９８１は、乗算結果をソースデータバス９２１に出力するためのバイパス経路である。
【０００９】
図３５に示すように、実行ユニット９０１内での１つの命令の実行は、Ｆ、Ｄ、Ｒ、Ｅ、Ｍ、Ｗの６ステージが必要とされ、これらの各ステージはパイプラインで実行される。このように、１命令を６段のパイプラインで実行するために、データパス用レジスタ（ＤＲ）９５０、９５１、９５２，９５３，９５４，９５５、９５６等が組込まれている。
【００１０】
９６０は命令デコーダである。制御信号もパイプライン的に生成されており、制御パス用レジスタ（ＣＲ）９６１、９６２、９６３、９６４が組込まれている。制御パス用レジスタ９６２の出力信号は、データパス用レジスタ９５０のライトイネーブル信号である。制御パス用レジスタ９６３の出力信号は、３ステートバッファ９７１、９７２のイネーブル信号である。制御パス用レジスタ９６４の出力信号は、３ステートバッファ９７０のイネーブル信号である。
【００１１】
図３６は、図３５に示した実行ユニット９０１がサポートしているバイパス処理のタイミングをパイプラインに基づいて説明した図であり、このパイプラインでは、１命令を６段のパイプラインで実行する。図において、１０００、１００１、１００２は、実行ユニット９０１で実行される連続した３命令のパイプラインを示す。
【００１２】
図３５で説明したように、ＡＬＵ９１３及び乗算器の結果がバイパス経路９８０、９８１へ出力されるのはＭステージである。Ｍステージで出力されたバイパスデータは、Ｒステージにおいてソースデータバス９２１へ出力される。このようにパイプライン１０００で実行される命令コードのデスティネーション指定フィールドとパイプライン１００２で実行される命令コードのソース指定フィールドが同じ場合は、パイプライン１０００のＭステージからパイプライン１００２のＲステージへのデータのバイパス処理が実行される。このバイパス処理が実行される命令の組合せは、ＡＬＵ演算命令間、乗算命令間、そしてＡＬＵ演算命令−乗算命令間である。
【００１３】
図３７は、図３４に示した実行ユニット９０１と実行ユニット９０２との間でデータ干渉が発生した場合のパイプラインを説明する図であり、図において、１０１０、１０１１、１０１２は、実行ユニット９０１で実行される命令のパイプライン、１０２０、１０２１、１０２２は、実行ユニット９０２で実行される命令のパイプラインである。
【００１４】
パイプライン１０１０で実行される命令コードのデスティネーション指定フィールドとパイプライン１０２２で実行される命令コードのソース指定フィールドが同じ場合は、図３７内の斜線部分に示すように、パイプライン１０１０の実行結果がＷステージで汎用レジスタ９０３内に書き込まれた後に、パイプライン１０２２のＲステージでそのデータが汎用レジスタ９０３から読み出される。
【００１５】
この場合、２ステージ間パイプライン１０２２のＲステージの実行を、パイプライン１０１０のＷステージが完了するまで停止させる必要がある。パイプライン１０１２もパイプライン１０２２に同期してステージが進行していく。
【００１６】
【発明が解決しようとする課題】
複数の実行パイプラインを内蔵する従来のＶＬＩＷアーキテクチャのマイクロプロセッサは、以上のように構成されているので、異なるパイプラインで各々実行される命令コード間でデータ干渉が発生した場合、データの整合性を保証するため数クロックの間パイプラインの動作を停止する必要があり、結果としてマイクロプロセッサの命令処理動作の速度が低下するという課題があった。
この発明は上記のような課題を解決するためになされたもので、複数のパイプラインを備えるＶＬＩＷアーキテクチャのデータ処理装置（マイクロプロセッサ）において、異なるパイプライン間に専用のバイパス経路を設けて、命令処理を高速で実行可能なＶＬＩＷアーキテクチャのデータ処理装置を得ることを目的とする。
【００１７】
【課題を解決するための手段】
請求項１記載の発明に係るデータ処理装置は、単一の命令コード内に含まれる複数個の副命令を有する命令やデータを格納するメモリへ接続され前記命令をデコードする命令デコード手段と、前記命令デコード手段へ接続され前記命令デコード手段から出力されるデコード結果に従って前記命令の実行を制御するデータを格納する制御レジスタと複数個のレジスタおよび前記命令に基づく算術演算を行う演算回路を有する複数個の命令実行手段と、前記複数個の命令実行手段間に設けられ、異なるパイプライン間でデータの転送を行うデータ転送経路と、前記データ転送経路を経由して前記データの転送動作を制御する前記命令デコード手段内に組込まれた制御手段と、前記データ転送経路の一部に設けられ、前記制御手段からの制御信号に従って前記データ転送経路を介したデータ転送の可否を選択する選択手段とを備え、前記複数個のレジスタを経由することなく、前記複数個の命令実行手段間で直接にデータ転送を実行し、前記命令実行手段は２つの命令実行手段を備え、前記選択手段は３ステートバッファおよびセレクタから構成され、前記制御手段は、先行副命令のデスティネーションレジスタ指定フィールドの値と、他のパイプラインで実行される前記副命令のソースレジスタ指定フィールドの値とを比較する比較手段を有し、前記比較手段の比較結果に基づいて前記選択手段を制御し、先行副命令のデスティネーションレジスタ指定フィールドと、他のパイプラインで実行される前記副命令のソースレジスタ指定フィールドのオペランドサイズに対応した比較手段を有し、前記比較手段の比較結果に基づいて前記選択手段を制御し、データ転送経路および前記データ転送経路に接続され所定データを選択するセレクタを経由したデータを、命令実行手段に接続されたソースバスへドライブさせるものである。
【００１８】
請求項２記載の発明に係るデータ処理装置は、単一の命令コード内に含まれる複数個の副命令を有する命令やデータを格納するメモリへ接続され前記命令をデコードする命令デコード手段と、前記命令デコード手段へ接続され前記命令デコード手段から出力されるデコード結果に従って前記命令の実行を制御するデータを格納する制御レジスタと複数個のレジスタおよび前記命令に基づく算術演算を行う演算回路を有する複数個の命令実行手段と、前記複数個の命令実行手段間に設けられ、異なるパイプライン間でデータの転送を行うデータ転送経路と、前記データ転送経路を経由して前記データの転送動作を制御する前記命令デコード手段内に組込まれた制御手段と、前記データ転送経路の一部に設けられ、前記制御手段からの制御信号に従って前記データ転送経路を介したデータ転送の可否を選択する選択手段とを備え、前記複数個のレジスタを経由することなく、前記複数個の命令実行手段間で直接にデータ転送を実行し、前記選択手段は３ステートバッファおよびセレクタからなり、前記制御手段は、先行副命令のデスティネーションレジスタ指定フィールドの値と、複数のパイプラインで実行される副命令のソースレジスタ指定フィールドの値とを比較する比較手段を有し、前記比較手段の比較結果に基づいて前記選択手段を制御し、先行副命令のデスティネーションレジスタ指定フィールドと、複数のパイプラインで実行される副命令のソースレジスタ指定フィールドのオペランドサイズに対応した比較手段を有し、前記比較手段の比較結果に基づいて前記選択手段を制御し、データ転送経路および前記データ転送経路に接続され所定データを選択するセレクタを経由したデータを、複数の命令実行手段に接続されたソースバスへドライブさせるものである。
【００１９】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
参考例１．
ＶＬＩＷマイクロプロセッサの基本構成
この発明のデータ処理装置であるＶＬＩＷアーキテクチャに基づくＶＬＩＷマイクロプロセッサ（以下、ＶＬＩＷアーキテクチャのマイクロプロセッサあるいはＶＬＩＷマイクロプロセッサという）は、少なくとも２つ以上の命令実行パイプラインを備えるものであり、ここでは先ず、後述する各実施の形態のＶＬＩＷマイクロプロセッサの構成に関して説明する。
【００２０】
ハードウエア構成
図１は、この発明のＶＬＩＷマイクロプロセッサの基本的な全体構成を示すブロック図であり、図において、マイクロプロセッサ（データ処理装置）１は、命令デコードユニット（命令デコード手段）２、メモリアクセスユニット（命令実行手段）３、整数演算ユニット（命令実行手段）４、汎用レジスタ５、命令ＲＡＭ６、データＲＡＭ７から構成されている。
【００２１】
また、後述する各実施の形態で詳細に説明するが、この発明のＶＬＩＷマイクロプロセッサ１は、クロスバイパス処理において各演算ユニット間でのデータの転送を行うバイパス経路（データ転送経路）２１〜２５、４０、４１およびクロスバイパス処理の動作を制御するバイパス処理制御回路（制御手段）２８、バイパス処理制御回路２８の制御のもとでバイパス経路２１〜２３でのデータの転送を選択する３ステートバッファ（選択手段）２９〜３１およびセレクタ等が設けられており、バイパス処理制御回路２８はそれぞれＭＵデコーダ８、ＩＵデコーダ９内に設けられている。
【００２２】
命令デコードユニット２は、命令ＲＡＭ６から６４ビット幅のＩＤバスを通じて送られる命令コードをＭＵデコーダ８、ＩＵデコーダ９を用いてデコードする。命令デコードユニット２は、ＭＵデコーダ８のデコード結果とプロセッサ状態語（ＰＳＷ）１０よりメモリアクセスユニット３への制御信号１１を生成し、また、ＩＵデコーダ９のデコード結果とプロセッサ状態語１０の値に基づいて整数演算ユニット４への制御信号１２を生成する。
【００２３】
メモリアクセスユニット３は、ＰＣ制御部１３、メモリ制御部１４、ＡＬＵ１５、シフタ１６から構成されている。ＰＣ制御部１３は、有効なジャンプ演算や分岐演算を含まない命令では、実行した命令のＰＣ値に８を加えて次に実行する命令のＰＣ値を計算し、ジャンプ演算や分岐演算の実行では、実行した命令のＰＣ値に分岐変位を加算したり、演算で指定されたアドレッシングモードに従う計算をしてジャンプ先命令のＰＣ値を計算する。
【００２４】
メモリ制御部１４は、ＰＣ制御部１３で計算されたＰＣ値をもとにＩＡバスを用いて命令ＲＡＭ６を起動する。また、命令実行に必要なデータをデータメモリのアドレスを転送するＯＡバス、データを転送するＯＤバスを通じてデータＲＡＭ７にアクセスし、汎用レジスタ５にデータ転送する。
メモリアクセスユニット３内のＡＬＵ１５およびシフタ１６では、汎用レジスタ５から３２ビット幅のＳ１バス、Ｓ２バス、Ｓ６バスを通じて転送された最大３ワードのデータを用いて算術論理演算もしくはシフト演算を行い、演算結果はＷ１バスを介して汎用レジスタ５へ転送される。
【００２５】
汎用レジスタ５から読み出された３２ビット長のデータは、最大４ワードのデータとしてＳ１、Ｓ２、Ｓ６、Ｓ５のバスを介してメモリアクセスユニット３へ転送される。これにより、汎用レジスタ５からデータＲＡＭ７への２ワードストア命令の実行が実現される。
【００２６】
２ワードストア命令では、２つのオペランドを使用しメモリアドレスを計算し、データＲＡＭ７に２ワードデータを転送する。また、メモリアクセスユニット３は、Ｗ１，Ｗ３Ｅ，Ｗ３Ｏバスを通じて、メモリアクセスユニット３内での演算結果およびデータＲＡＭ７から転送された２ワードのロードデータを、汎用レジスタ５に転送する。
【００２７】
整数演算ユニット４は、乗算器１７、アキュムレータ１８、ＡＬＵ１９、シフタ２０から構成されている。乗算器１７、ＡＬＵ１９、シフタ２０では、汎用レジスタ５から３２ビット幅のＳ３，Ｓ４，Ｓ５バスを通じて転送された最大３ワードのデータを用いて、算術論理演算もしくはシフト演算を行い、演算結果をＷ２，Ｗ３Ｅ，Ｗ３Ｏバスを通じて汎用レジスタ５へ転送する。
【００２８】
また、アキュムレータ１８は、乗算の結果を累積加算または累積減算して保持する。汎用レジスタ５は、最大６種類のレジスタ値を同時に読み出すことが可能で、読み出されたデータは、それぞれＳ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５、Ｓ６バスに接続されている。また、汎用レジスタ５は、Ｗ１、Ｗ２、Ｗ３Ｅ、Ｗ３Ｏバスに接続され、最大４種類のレジスタ値を同時に書き込むことが可能である。
【００２９】
命令ＲＡＭ６は、３２ビット幅のＩＡバスと６４ビット幅のＩＤバスに接続されている。ＩＡバスで転送されるアドレスに対応する６４ビット長の命令データが命令ＲＡＭ６から読み出される。データＲＡＭ７は、３２ビット幅のＯＡバスと６４ビット幅のＯＤバスに接続されている。ＯＡバスで転送されるアドレスに対応する６４ビット長のデータが、データＲＡＭ７へ書き込まれ、またデータＲＡＭ７から読み出される。
【００３０】
命令セットとレジスタ
図２は、図１に示したＶＬＩＷマイクロプロセッサで用いられる命令フォーマットを示す説明図であり、図において、１０１は１つの命令で２つの演算を指示する２副命令のフォーマット、１０２は１つの命令で１つの演算を指示する１演算命令のフォーマットである。
【００３１】
２副命令のフォーマット１０１にはフィールド１０３とフィールド１０４からなるフォーマットフィールド、２つの演算フィールド１０６、１０７及び各演算フィールドに１つずつ付属する実行条件フィールド１０５がある。１演算命令のフォーマット１０２にはフィールド１０３とフィールド１０４からなるフォーマットフィールド、フィールド１０８とフィールド１０９とフィールド１１０とからなる演算フィールド及びこの演算フィールドに付属する実行条件フィールド１０５がある。
【００３２】
図３は、図２に示したフィールド１０３と１０４からなるフォーマットフィールド（ＦＭ）の詳細を示す説明図であり、図において、ＦＭ＝００の場合、この命令は２演算命令であり、演算フィールド１０６で指示されたoperation_0 の演算と演算フィールド１０７で指示されたoperation_1 の演算が、デコード直後のクロックサイクルで並列に実行される。
【００３３】
フォーマットフィールドの値がＦＭ＝０１の場合、この命令は２演算命令であり、演算フィールド１０６で指示されたoperation_0 の演算がデコード直後のクロックサイクルに実行され、演算フィールド１０７で指示されたoperation_1 の演算がoperation_0 の演算に対して１クロックサイクル遅れて実行される。
【００３４】
フォーマットフィールドの値がＦＭ＝１０の場合、この命令は２演算命令であり、演算フィールド１０７で指示されたoperation_1 の演算がデコード直後のクロックサイクルに実行され、演算フィールド１０６で指示されたoperation_0 の演算がoperation_1 の演算に対して１クロックサイクル遅れて実行される。
【００３５】
ＦＭ＝１１の場合、この命令は１演算命令であり、フィールド１０８、１０９、１１０からなる演算フィールドで指示された１つの演算がデコード直後のクロックサイクルで実行される。
【００３６】
図４は、図２に示した実行条件フィールド（ＣＣ）１０５の詳細を示す説明図であり、図において、実行条件フィールド１０５は後述するマイクロプロセッサ１の状態フラグＦ０及びＦ１の値に依存して演算フィールド１０６、１０７でそれぞれ示されたoperation_0 の演算やoperation_1 の演算及び演算フィールド１０８、１０９、１１０で示された演算が有効であるか無効であるかを定める。
【００３７】
演算が有効であるとは、演算結果がレジスタ、メモリ、フラグに反映され、その演算により定義された動作結果が残ることを意味し、演算が無効であるとは演算結果がレジスタ、メモリ、フラグに反映されず、定められた演算の種類には関わらずその演算により無効演算（NOP:no operation）と同じ結果がレジスタやフラグに残ることを意味する。
【００３８】
実行条件フィールド１０５の値ＣＣ＝０００のとき、演算はフラグＦ０、Ｆ１の値に関わらず常に有効である。ＣＣ＝００１のとき、演算はＦ１の値には関係なくＦ０＝真のときのみ有効である。ＣＣ＝０１０のとき、演算はＦ１の値には関わらずＦ０＝偽のときのみ有効である。ＣＣ＝０１１のとき、演算はＦ０の値には関係なくＦ１＝真のときのみ有効である。ＣＣ＝１００のとき、演算はＦ０の値には関係なくＦ１＝偽のときのみ有効である。ＣＣ＝１０１のとき、演算はＦ０＝真かつＦ１＝真のときのみ有効である。ＣＣ＝１１０のとき、演算はＦ０＝真かつＦ１＝偽のときのみ有効である。ＣＣ＝１１１のときの演算結果は未定義であり、この値が命令で用いられることはない。
【００３９】
図５は、２８ビット長で表現される短型の演算フィールド１０６、１０７と５４ビット長で表現される長型の演算フィールド（図２に示した演算フィールド１０８、１０９、１１０で構成される）の詳細を示す説明図であり、図において１１１、１１２、１１３、１１４、１１５、１１６、１１７で示される７つのフォーマットは短型の演算フィールド、１１８、１１９で示される２つのフォーマットは長型の演算フィールドである。
【００４０】
フォーマット１１１は、演算内容を指定するフィールド１２０、レジスタの番号を指定する２つのフィールド１２１、１２２、レジスタ番号または６ビット長の即値を指定するフィールド１２３、フィールド１２３がレジスタ番号を示すか即値を示すかを指定するフィールド１２４から構成される。このフォーマット１１１は、レジスタ間接アドレッシングのメモリアクセス演算に使用される。
【００４１】
フォーマット１１２は、演算内容を指定するフィールド１２０、レジスタの番号を指定する２つのフィールド１２１、１２２、レジスタ番号または６ビット長の即値を指定するフィールド１２３、フィールド１２３がレジスタ番号を示すか即値を示すかを指定するフィールド１２５から構成される。このフォーマット１１２は算術演算、論理演算、シフト演算、ビット演算に使用される。
【００４２】
フォーマット１１３は、演算内容を指定するフィールド１２０、レジスタの番号を指定するフィールド１２６から構成される。このフォーマット１１３はレジスタ指定によるジャンプ、分岐命令に使用される。
【００４３】
フォーマット１１４は、演算内容を指定するフィールド１２０、１８ビット長のディスプレイスメント（ｄｉｓｐｌａｃｅｍｅｎｔ）のフィールド１２７から構成される。このフォーマット１１４は、ジャンプ、分岐命令に使用される。
【００４４】
フォーマット１１５は、演算内容を指定するフィールド１２０、レジスタの番号を指定するフィールド１２１、レジスタ番号または１２ビット長の即値を指定するフィールド１２８、フィールド１２８がレジスタ番号を示すか即値を示すかを指定するフィールド１２９、フィールド１２１がゼロ判定による条件ジャンプおよび条件分岐を行うか否かを指定するフィールド１３０から構成される。このフォーマット１１５は、条件ジャンプ、条件分岐命令に使用される。
【００４５】
フォーマット１１６は、演算内容を指定するフィールド１２０、レジスタの番号を指定するフィールド１２１、レジスタ番号または１２ビット長の即値を指定するフィールド１２８、フィールド１２８がレジスタ番号を示すか即値を示すかを指定するフィールド１２９から構成される。このフォーマット１１６は、条件ジャンプ、条件分岐命令、リピート命令に使用される。
【００４６】
フォーマット１１７は、演算内容を指定するフィールド１２０、レジスタ番号または１２ビット長の即値を指定するフィールド１２８、フィールド１２８がレジスタ番号を示すか即値を示すかを指定するフィールド１２９、ディレイド命令のディレイ値を指定するフィールド１３１から構成される。このフォーマット１１７は、ディレイドジャンプ、ディレイド分岐命令に使用される。
【００４７】
フォーマット１１８は、演算内容を指定するフィールド１２０、レジスタの番号を指定する２つのフィールド１２１、１２２、３２ビット長の即値を指定するフィールド１３２から構成される。このフォーマット１１８は、複雑な算術演算、大きな即値を用いる算術演算、大きなディスプレースメント付きレジスタ間接アドレッシングのメモリアクセス演算や大きな分岐変位の分岐演算、絶対番地へのジャンプ演算などに用いられる。
【００４８】
フォーマット１１９は、演算内容を指定するフィールド１２０、レジスタの番号を指定する２つのフィールド１２１、１２２、３２ビット長の即値を指定するフィールド１３２、フィールド１３２がゼロ判定による条件ジャンプおよび条件分岐を行うか否かを指定するフィールド１３３から構成される。このフォーマット１１９は、大きな分岐変位をもつ条件ジャンプ、条件分岐命令に使用される。
【００４９】
図６は、図１に示したマイクロプロセッサのレジスタ構成を示す説明図であり、図において、マイクロプロセッサは、６４本の３２ビット長の汎用レジスタ５、１２本の制御レジスタ１５０、および２本のアキュムレータ１８を備えている。
【００５０】
汎用レジスタ５内のレジスタ（Ｒ０）１４０から読み出されたデータ値は、常に０で、汎用レジスタ５内のレジスタ（Ｒ０）１４０への書き込みは無視される。
【００５１】
汎用レジスタ５内のレジスタ（Ｒ６３）は、スタックポインタ（ＳＰＵ、ＳＰＩ）であり、図７で後述するように、プロセッサ状態語（ＰＳＷ）１０のＳＭフィールドの値に依存してユーザスタックポインタ（ＳＰＵ）１４１または割り込みスタックポインタ（ＳＰＩ）１４２が動作する。
【００５２】
制御レジスタ１５０には、プログラムカウンタ１５１、プロセッサ状態語１０や各種の専用レジスタが含まれている。フォーマット１１２を用いた演算では、６４本の汎用レジスタ５の各レジスタを、上位１６ビットと下位１６ビットに分けてそれぞれ別々にアクセスできる。また、２本のアキュムレータ１８の各々は、上位３２ビットと下位３２ビットを別々にアクセスできる。
【００５３】
図７は、プロセッサ状態語（ＰＳＷ）１０内のフィールドの詳細な構造を示す説明図であり、図において、プロセッサ状態語１０の上位１６ビットフィールド１７０は、スタックポインタを切り替えるＳＭフィールド１７１、ソフトウェアデバッガトラップ（ＳＤＢＴ）の検出を示すＥＡフィールド１７２、ＳＤＢＴの許可を指定するＤＢフィールド１７３、割り込み許可を指定するＩＥフィールド１７４、リピート動作の許可を指定するＲＰフィールド１７５、モジュロアドレシングの許可を指定するＭＤフィールド１７６を備えている。
【００５４】
下位１６ビットフィールドは、フラグフィールド１８０である。フラグフィールド１８０は、８個のフラグフィールドを備えており、その中のＦ０フラグ１８１とＦ１フラグ１８２は演算の有効／無効を制御する。各フラグの値は、比較演算や算術演算の結果に依存して変化する他、フラグ初期化演算で初期化したり、フラグ値書き込み演算において、任意の値をフラグフィールド１８０内に書き込むことにより変化する。また、フラグ値読み出し演算を実行することで、フラグフィールド１８０内の値を読み出すこともできる。
【００５５】
以下に、図１に示したＶＬＩＷマイクロプロセッサ１で用いられる命令一覧を示す。
【００５６】
0003578883.tif 000002
【００５７】
0003578883.tif 000003
【００５８】
0003578883.tif 000004
【００５９】
0003578883.tif 000005
【００６０】
0003578883.tif 000006
【００６１】
0003578883.tif 000007
【００６２】
0003578883.tif 000008
【００６３】
0003578883.tif 000009
【００６４】
0003578883.tif 000010
【００６５】
0003578883.tif 000011
【００６６】
0003578883.tif 000012
【００６７】
0003578883.tif 000013
【００６８】
パイプライン動作
図８は、図１に示したＶＬＩＷマイクロプロセッサの並列２命令実行時（ＦＭ＝００）のパイプライン動作を示す説明図である。パイプラインは、命令フェッチ（Ｆ）ステージ１９１、デコード／アドレス演算（Ｄ／Ａ）ステージ１９２、実行／メモリアクセス（Ｅ／Ｍ）ステージ１９３、ライトバック（Ｗ）ステージ１９４から構成される。
【００６９】
並列２命令実行時には、メモリアクセスユニット３で実行されるパイプライン１９０と整数演算ユニット４で実行されるパイプライン１９５(斜線の部分)が並列に実行される。
【００７０】
図９は、一つの命令実行でなされる各処理を４段のパイプラインに割当てた場合の説明図である。まず、Ｆステージで命令フェッチが実行され、Ｄ／Ａステージでその命令のデコードが実行される。そして、同じくＤ／Ａステージの前半から汎用レジスタ５に対する読み出し動作が開始され、後半でアドレス計算がなされる。Ｅ／Ｍステージでは、演算及びメモリアクセスが実行される。そして、Ｗステージの後半で、汎用レジスタ５への書き込みが実行される。これが１命令を実行する際のパイプライン的な処理の概要である。
【００７１】
また図９において、パイプラインの下に示しているように、４つのステージの前半（Ｉ１、Ｄ１、Ｅ１、Ｗ１）と後半（Ｉ２、Ｄ２、Ｅ２、Ｗ２）で行なわれる処理は、それぞれクロックのハイ（Ｈｉｇｈ）とロウ（Ｌｏｗ）に同期して行なわれている。Ｆステージの前半と後半での処理を、それぞれＩ１，Ｉ２期間中の処理と呼ぶ。また、Ｄステージの前半と後半の処理をそれぞれＤ１，Ｄ２期間中の処理と呼ぶ。また、Ｅステージの前半と後半の処理をそれぞれＥ１，Ｅ２期間中の処理と呼ぶ。また、Ｗステージの前半と後半の処理をそれぞれＷ１，Ｗ２期間中の処理と呼ぶ。
【００７２】
マイクロプロセッサの詳細なブロック図
図１０〜図１３は、図１に示したＶＬＩＷマイクロプロセッサ１のメモリアクセスユニット３と整数演算ユニット４を中心とした詳細な構成を示すブロック図であり、図において、命令デコードユニット２、メモリアクセスユニット３、整数演算ユニット４、汎用レジスタ５、命令ＲＡＭ６、データＲＡＭ７から構成されている。
【００７３】
メモリアクセスユニット３は、図１と同様に、ＡＬＵ１５、シフタ１６を備えている。またメモリアクセスユニット３は、ＡＬＵ１５、シフタ１６の他にメモリ制御、ＰＣ制御、演算制御等を行なうための各種演算器やレジスタ等が含まれている。２９０は、命令フェッチ処理の実行の際に、命令ＲＡＭ６へのアドレスを保持するための命令アドレスレジスタである。
【００７４】
３００はメモリへのストア処理を行なう際に、ストアデータの整値を行なうための制御部、３３０はメモリからのロードデータの符合拡張を行なうための符合拡張部、３１０はロードとストア命令実行時のポストインクリメント／デクリメントアドレッシングを行なうためのインクリメンタ、３２０はロード／ストア及び分岐命令等を実行する際にアドレス計算を行なうための加算器、５０は、ＡＬＵ１５、シフタ１６の結果を保持するレジスタである。
【００７５】
またＣＲ０〜ＣＲ１１は、図６で示した制御レジスタ１５０、３４は、制御レジスタ１５０内のプログラムカウンタ（ＰＣ）ＣＲ０をインクリメントするためのインクリメンタ、３５はリピート命令やディレイド分岐命令を実行する際に、リピートカウントレジスタＣＲ６の値やリピートエンドアドレスレジスタＣＲ８の値を計算するための加算器である。
【００７６】
３６は、リピートカウントレジスタＣＲ６の値をデクリメントするためのデクリメンタ、３７は命令アドレスレジスタ２９０の値をインクリメントするためのインクリメンタ、４００は命令ブレークアドレスレジスタＣＲ１１の値とプログラムカウンタＣＲ０との値を比較し、同じ値であれば一致信号を出力する３２ビット比較器である。４１０は、リピートカウントレジスタＣＲ６の値が０以上であれば有効となる信号を出力する３２ビット比較器、４２はリピートエンドアドレスレジスタＣＲ８の値と命令アドレスレジスタ２９０の値を比較し、同じ値であれば一致信号を出力する３２ビットの比較器である。
【００７７】
４３は、モジュロエンドアドレスレジスタＣＲ１０の値とインクリメンタ３１０の値が同じであれば一致信号を出力する３２ビット比較器、４４は、D1S6BUS バスの値が０であれば有効となる信号を出力するための３２ビット比較器である。
【００７８】
また整数演算ユニット４は、図１に示す乗算器１７としての１７ａ〜１７ｄ、ＡＬＵ１９、シフタ２０、および図１には図示しなかった飽和演算をするための演算器２１３を備えている。また、Ａ０、Ａ１は積和演算等を行なう際の累積加算等を行なうためのアキュムレータであり、図１では１８に対応する構成要素である。
【００７９】
５５は、ＡＬＵ１９、シフタ２０、飽和演算器の結果を保持するレジスタである。また、図１に示したＳ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５、Ｓ６バスは、図１０〜図１３では、D1S1BUS 、D1S2BUS 、D1S3BUS 、D1S4BUS 、D1S5BUS 、D1S6BUS に対応する。
D1S1BUS のＤ１は、図９に示すＤ１期間中にバスがドライブされることを示している。これらのバスの参照文字の先頭がＤ１であるバスをＤ１同期バス群と呼ばれる。
【００８０】
また、図１上のＷ１、Ｗ２、Ｗ３Ｅ、Ｗ３Ｏバスは、図１０〜図１３ではW1W1BUS 、W1W2BUS 、W1W3EBUS、W1W3OBUSとなっている。参照文字W1W1BUS の先頭の文字であるＷ１は、図９に示すＷ１期間中にバスがドライブされることを意味する。これら先頭にＷ１の付いているバスは、Ｗ１同期バス群と呼ばれる。また、D2S1BUS 、D2S2BUS 、D2S3BUS 、D2S4BUS 、D2S5MBUS、D2S5IBUS、D2S6BUS の各バスでは、Ｄ１同期バス群上のデータを、ラッチを介して半クロック遅らせて、Ｄ２の期間中にバスがドライブされる。そのタイミングを変更するラッチは４０ａ、４０ｂである。
【００８１】
また４１ａ、４１ｂ、４１ｃは、命令デコーダ部より出力された即値データである。これらの即値データは、バスドライバ４２ａ、４２ｂ、４２ｃ、４２ｄを介して、Ｄ１，Ｄ２同期バス群に出力される。
【００８２】
またE2D1BUS 、E2D3BUS 、E2D4BUS の各バスは、制御レジスタの値や演算器の値を保持するレジスタの値をＥ２期間中に出力するバスである。また５１は、E2D1BUS バス上のデータをW1W1BUS バスに出力するためのライトバックレジスタである。５３は、ロードデータの値をW1W3EBUS, W1W3OBUSバス上に出力するためのレジスタである。
【００８３】
５４は、演算結果保持レジスタ５５の値をW1W2BUS バス上に出力するためのライトバックレジスタである。また、６０は命令デコードユニット内のＰＳＷレジスタの値をE2D1BUS バスに読み出すための経路である。６１はE1CRBUS の値を命令デコードユニット２内のＰＳＷレジスタ内に書き込むための経路である。６２は、ＡＬＵ１５から命令デコードユニット２に出力されるフラグの伝搬経路である。
【００８４】
６３は、ＡＬＵ１９から命令デコードユニットに出力されるフラグの伝搬経路である。６４は、飽和演算器２１３から命令デコードユニット２へ出力されるフラグの伝搬経路である。
【００８５】
２０１は、ロードデータバスM2ODBUS バスの値を符合拡張するための符合拡張部である。２００は、ロードデータバスM2ODBUS バスの値を符合拡張部２０１に取り込むための伝搬経路である。２０２は、符合拡張部２０１の値をＤ２同期バス群に出力するための経路である。また、２１１は、ライトバックレジスタ５５内の値が出力されたバスW1W3EBUS、W1W3OBUSバスの値を取り込むレジスタである。２１０は、バスW1W3EBUS, W1W3OBUSの値をレジスタ２１１に取り込むための経路である。
【００８６】
２１２は、レジスタ２１１の値をＤ２同期バス群に出力するための経路である。２２５は、符合拡張部３３０の値をＤ２同期バス群に出力するための経路である。２２６は、ライトバックレジスタ５３の値をＤ１同期バス群に出力するための経路である。２２１は、ライトバックレジスタ５４の値をＤ１同期バス群に出力するためのバイパス経路（データ転送経路）である。また、５００、５０１、５０２、５０３、５０４は、ダブルワードのデータの内、どちらかのワードデータを選択するためのセレクタ（選択手段）である。
【００８７】
以下に、この発明の参考例１のＶＬＩＷマイクロプロセッサにおけるクロスバイパス処理を説明する。
【００８８】
図９のパイプラインに示されたように、汎用レジスタ５からのデータの読み出しはＤ１ステージ期間中に実行される。この場合、汎用レジスタ５への書き込み動作はＷ２ステージ期間中に実行される。このことから、例えば先行する命令の書き込み先（ディスティネーション）レジスタから、直後に実行される命令がデータの読み出し動作を実行したい場合、バイパス経路（データ転送経路）で先行命令の実行結果をパイプラインの前段に渡してやる必要がある。このデータの関係をデータ干渉と呼んでおり、汎用レジスタ５からのデータの読み出し、汎用レジスタ５へのデータの書き込みのタイミングにより、連続する３命令間にデータ干渉が発生することがわかる。
【００８９】
このデータ干渉の発生を回避するためのバイパス経路をクロスバイパス（データ転送経路）と呼び、図１に示したこの発明のＶＬＩＷマイクロプロセッサにおけるバイパス経路２１〜２５、４０、４１に対応するものである。
この参考例１のＶＬＩＷマイクロプロセッサ１では、クロスバイパス２１をメモリアクセスユニット３および整数演算ユニット４間に設け、クロスバイパス２１の途中に３ステートバッファ３０を設けている。この３ステートバッファ３０は、ＩＵデコーダ９内のバイパス処理制御回路２８の制御で動作する。即ち、クロスバイパス２１を介して、メモリアクセスユニット３および整数演算ユニット４との間のデータの転送をＩＵデコーダ９内に設けられたバイパス処理制御回路２８で制御することで、メモリアクセスユニット３および整数演算ユニット４で実行される各命令の実行時に発生するデータ干渉を回避させ、マイクロプロセッサ１のパイプライン動作の効率を向上させるものである。
【００９０】
次に動作について説明する。
図１４は、この参考例１のＶＬＩＷマイクロプロセッサで実行される命令コード間のデータ干渉を示す説明図であり、図において、６００ａ、６００ｂ、６００ｃはそれぞれメモリアクセスユニットで実行されるＷステージ、Ｅ／Ｍステージ、Ｄステージで実行される命令コードを示す。また、６０１ａ、６０１ｂ、６０１ｃはそれぞれ整数演算ユニット４で実行されるＷステージ、Ｅ／Ｍステージ、Ｄステージの命令コードを示す。
【００９１】
また、各命令コードの４つのフィールドは、先頭からオペコードとディスティネーションレジスタ指定フィールドと、２つのソースレジスタ指定フィールドを示している。各フィールドに書かれた記号の先頭の２文字は、それぞれのステージとそれぞれの演算ユニットでの実行を示している。すなわち、ＷＭはＷステージのメモリアクセスユニットでの実行であることを示している。
【００９２】
図１４に示すように、連続する３命令間のデータ干渉は、メモリアクセスユニット３で実行される命令コード６００ａ、６００ｂ、６００ｃと、整数演算ユニット４で実行される命令コード６０１ａ、６０１ｂ、６０１ｃとの間においても発生する。この参考例１では、図１４内の矢印で示しているように、メモリアクセスユニット３で実行される命令と、整数演算ユニット４で実行される命令間で発生するデータ干渉を、バイパス経路としてのクロスバイパス２１を介して、データをダイレクトに目的とする整数演算ユニット４へ転送することで、解消するものである。
【００９３】
図１４では、Ｄステージのメモリアクセスユニット３で実行される命令コードのソースレジスタ指定フィールドｄｍｒｂ、ｄｍｒｃと、Ｗステージ、Ｅステージの整数演算ユニット４で実行される命令コードのディスティネーション指定フィールドｗｉｒａ、ｅｉｒａ間でデータ干渉が発生することを示している。
【００９４】
また、Ｄステージの整数演算ユニット４のソースレジスタ指定フィールドｄｉｒｂと、Ｅ／Ｍステージのメモリアクセスユニット３で実行されるディスティネーション指定フィールドｅｍｒａ間で、データ干渉が発生することを示している。
【００９５】
図１５は、クロスバイパス経路２１でのデータ転送を制御するための経路選択信号を生成する制御回路２８−１の構成を示すブロック図であり、図において、７０１はソースレジスタ指定フィールドｄｍｒｂ［０：５］を保持するレジスタ、７０２はディスティネーションレジスタ指定フィールドｗｉｒａ［０：５］を保持するレジスタ、７０３はオペコードＤＭｏｐｃを保持するレジスタ、７０４はオペコードＷＩｏｐｃを保持するレジスタである。
【００９６】
７０５はレジスタ７０１のソースレジスタ指定フィールドとレジスタ７０２のディスティネーション指定フィールドとを比較し、各レジスタ値が等しければ一致信号を出力する比較器、７０６はレジスタ７０３のオペコードをデコードし、メモリアクセスユニット３のＤステージで実行されている命令が何であるかを特定する信号を生成するデコード回路、７０７はレジスタ７０４のオペコードをデコードし、整数演算ユニット４のＷステージで実行されている命令が何であるかを特定する信号を生成するデコード回路、７０８は、比較器７０５からの一致信号とデコード回路７０６、７０７からの命令特定信号を基に、たとえば、比較器７０５、デコード回路７０６、７０７から出力される信号値が一致した場合、バイパス経路選択信号を生成する組合せ回路である。
【００９７】
この制御回路２８−１は、バイパス経路選択信号を生成し、それぞれのクロスバイパス２１〜２３毎に設けられている３ステートバッファ２９、３０へ送られる。３ステートバッファ３０はこのバイパス経路選択信号を入力し、メモリアクセスユニット３、整数演算ユニット４間に接続されているクロスバイパスを導通させる。
【００９８】
図１６は、図１５に示した経路選択信号を生成する制御回路２８−１を備えたバイパス処理制御回路２８を示すブロック図であり、図において、２８−１は、メモリアクセスユニット３、整数演算ユニット４で実行される副命令のコードから所定のデータを入力してバイパス経路選択信号を生成し出力する制御回路であり、その構成は図１５に示したものである。２８−２は、メモリアクセスユニット３、整数演算ユニット４で実行される副命令のコードから所定のデータを入力してフラグ経路選択信号を生成し出力する制御回路であり、その構成は図１５に示したものである。２８−３は、メモリアクセスユニット３、整数演算ユニット４で実行される副命令のコードから所定のデータを入力してセレクタ制御信号を生成し出力するセレクタ制御回路である。既に記載したように、このバイパス処理制御回路２８は、ＭＵデコーダ８、ＩＵデコーダ９内にそれぞれ組み込まれている。
【００９９】
以上のように、この参考例１によれば、図１４に示すようなデータ干渉の発生が予測される演算ユニット間にクロスバイパスを設け、クロスバイパスを介して各演算ユニット間のデータ転送を図１５および図１６に示す構成の制御回路および３ステートバッファにより制御するように構成したので、例えば、データ干渉が発生した場合であっても、演算ユニット間でクロスバイパスを介してダイレクトにデータの受け渡しを行うことができ、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しながら命令を効率良く実行することができる。
【０１００】
参考例２．
図１７は、この発明の参考例２によるＶＬＩＷマイクロプロセッサにおけるロード副命令実行のタイミングを示す。なお、参考例２のＶＬＩＷマイクロプロセッサの構成は、参考例１のものと同じなのでここでは説明を省略する。
【０１０１】
この参考例２では、ロード副命令に関する異なるパイプライン間で専用のバイパス経路（データ転送経路）を設けることで、データ干渉を回避させ、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しつつ命令を効率良く実行するものである。
【０１０２】
次に動作について説明する。
ロード副命令はメモリアクセスユニット３でのみ実行される。メモリアクセスユニット３で実行されるロード副命令によりフェッチされたデータは、クロスバイパス経路を介して整数演算ユニット４にクロスバイパスされる。
【０１０３】
ロード副命令のタイミングは、図１７に示すパイプラインのように、Ｄ１で命令のデコードを行ない、Ｄ２でデータメモリ計算のためのアドレス計算を行なう。Ｍステージでデータメモリのアクセスを行なう。Ｗ２でロードしてきたデータを汎用レジスタ５に書き込む。Ｍ２でロードデータのクロスバイパスを行なう。
【０１０４】
図１８は、ロードデータのクロスバイパスの行なわれるタイミングを示すタイミング図であり、図中の白で示すパイプラインが、メモリアクセスユニット３で実行されているパイプラインである。斜線部分のパイプラインは、整数演算ユニット４で実行されているパイプラインである。
【０１０５】
８００は、メモリアクセスユニット３で実行されたロード副命令(ld2w r10, r2, r3)のパイプラインである。ロード副命令は、図１７のパイプライン図で説明したようなタイミングで各種処理が実行される。８０１は、ロード副令からクロスバイパス経由でデータをもらう、整数演算ユニット４で実行される加算命令(add r21, r10, r5)のパイプラインである。パイプライン８００のＭ２からパイプライン８０１のＤ２へ、汎用レジスタＲ１０へ書き込まれるロードデータがクロスバイパスされている。
【０１０６】
図１０〜図１３に示すマイクロプロセッサ１の詳細な構成を示すブロック図で、図１８で説明したロードデータのクロスバイパス処理の説明を行なう。
図１０〜図１３において、ロードデータのクロスバイパスを行なう経路は、経路２００→符合拡張部２０１→経路２０２である。
【０１０７】
パイプライン８００のＭステージでメモリアクセスユニット３はメモリアクセス処理を開始する。Ｍ１からデータメモリアクセス用のアドレスをアドレスバスM1OABUS に出力する。それに対して、データＲＡＭ７はロードデータをＭ２期間中にバスM2ODBUS に出力する。ロードデータバスM2ODBUS 上のデータは、経路２００を通って符合拡張部２０１に入力される。符合拡張部２０１のデータは、クロスバイパス経路２０２を通って整数演算ユニット４のＤ２同期バス群に出力される。この出力タイミングは、バイパス処理制御回路２８が、３ステートバッファ３０を制御して行い、図１８のパイプライン８０１のＤステージのタイミングに相当する。ゆえに、パイプライン８００のＭステージからパイプライン８０１のＤステージへのバイパス処理が実行されたことになる。
【０１０８】
このバイパス処理制御回路２８は、ロード副命令のデスティネーションレジスタ指定フィールドの値と、他のパイプラインで実行される前記ロード副命令のソースレジスタ指定フィールドの値とを比較し、比較結果に基づいてクロスバイパス経路を導通させる。
【０１０９】
以上のように、この参考例２によれば、図１８に示すように、ロード副命令のパイプライン間でデータ干渉の発生が予測される演算ユニット間にクロスバイパス経路を設け、クロスバイパス経路を介して各演算ユニット間のデータ転送を図１５および図１６に示す構成の制御回路および３ステートバッファにより制御するように構成したので、例えば、ロード命令のパイプライン間でデータ干渉が発生した場合であっても、演算ユニット間でクロスバイパス経路を介してダイレクトにデータの受け渡しを行うことができ、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しつつ命令を効率良く実行することができる。
【０１１０】
参考例３．
図１９は、この発明の参考例３によるＶＬＩＷマイクロプロセッサにおける乗算命令実行のタイミングを示す。なお、参考例３のＶＬＩＷマイクロプロセッサの構成は、参考例１のものと同じなのでここではその説明を省略する。
【０１１１】
この参考例３では、乗算副命令に関する異なるパイプライン間で専用のバイパス経路（データ転送経路）を設けることで、データ干渉を回避させ、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しつつ命令を効率良く実行するものである。
【０１１２】
次に動作について説明する。
乗算副命令は整数演算ユニット４でのみ実行される。バイパス処理制御回路２８が３ステートバッファ２９を制御し、これにより整数演算ユニット４で実行される乗算副命令により生成された演算結果は、バイパス処理制御回路２８の制御のもとで動作する３ステートバッファ２９により、クロスバイパス経路２２を介してメモリアクセスユニット３へクロスバイパスされる。
【０１１３】
乗算副命令のタイミングは、図１９に示すように、まずＤ１で命令のデコードを行なう。そして、それと並行してＤ１，Ｄ２期間中に、汎用レジスタ５から乗算器１７の入力ラッチまでソースデータの読み出しを行なう。そして、Ｅ１，Ｅ２期間中に乗算を行なう。そしてその乗算結果をＷ１期間中にライトバックバスに出力し、Ｗ２期間中に汎用レジスタ５に書き込みを行なう。
【０１１４】
乗算結果のクロスバイパス処理はＷ２期間中に行なわれる。すなわち乗算演算は処理に多くの時間を必要とし、乗算結果が生成されるのはＷ１であるため、Ｅ２期間中のバイパス処理は不可能であり、Ｗ２期間中にクロスバイパスを行なっている。
【０１１５】
クロスバイパスの動作タイミングは、バイパス処理制御回路２８の制御のもとで動作する３ステートバッファ２９の制御のもとに実行され、クロスバイパス２２を通じてデータが転送される。
【０１１６】
図２０は、乗算結果のクロスバイパスの行なわれるタイミングを示すタイミング図であり、図において、白の部分がメモリアクセスユニット３で実行されているパイプラインであり、斜線部分が整数演算ユニット４で実行されているパイプラインである。
【０１１７】
８０２は、整数演算ユニット４で実行された乗算副命令(mul2hr10, r2, r3)のパイプラインである。乗算副命令は、図１９に示すパイプライン図で説明したタイミングで各種処理が実行される。８０３は、乗算副命令からクロスバイパス経路２２を経由してデータを受け取るメモリアクセスユニット３で実行される加算命令(add r20, r10, r4)のパイプラインである。
【０１１８】
パイプライン８０２のＷ２からパイプライン８０３のＤ２へ乗算結果がクロスバイパスされている。このように、Ｗ２期間中にバイパス処理を行なうために、それを最高速でバイパスしたとしても、２命令後にしかクロスバイパスすることができない。
【０１１９】
次に、図１０〜図１３に示すＶＬＩＷマイクロプロセッサの詳細な構成を示すブロック図を用いて、図２０で説明した乗算結果のクロスバイパス処理の説明を行なう。
【０１２０】
図１０〜図１３において、乗算結果のクロスバイパスを行なう経路は、クロスバイパス２１→レジスタ２１１→経路２１２である。パイプライン８０２のＥステージで行なった乗算結果はレジスタ５７に保持される。レジスタ５７内に格納された結果は、E2D3BUS, E2D4BUSを通してＷ１期間中にライトバックレジスタ５６に取り込まれる。
【０１２１】
そして、同じＷ１期間中にライトバックレジスタ５６の値は、W1W3EBUS, W1W3OBUSバスに出力され、Ｗ２期間中に汎用レジスタ５に書き込まれる。乗算結果は、汎用レジスタ５に書き込まれるのと同じタイミングで、レジスタ２１１内に取り込まれる。レジスタ２１１の値は、クロスバイパス２１２を通してメモリアクセスユニット３のＤ２同期バス群に出力される。この出力タイミングは、図２０に示したパイプライン８０３のＤステージのタイミングに相当する。
【０１２２】
ゆえに、パイプライン８０２のＷステージからパイプライン８０３のＤステージへのバイパス処理が実行されたことになる。
【０１２３】
以上のように、この参考例３によれば、乗算副命令のパイプライン間でデータ干渉の発生が予測される演算ユニット間にクロスバイパス経路を設け、クロスバイパス経路を介して各演算ユニット間のデータ転送を図１５および図１６に示す構成の制御回路および３ステートバッファにより制御するように構成したので、例えば、乗算副命令のパイプライン間でデータ干渉が発生した場合であっても、演算ユニット間でクロスバイパス経路を介してダイレクトにデータの受け渡しを行うことができ、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しつつ命令を効率良く実行することができる。
【０１２４】
参考例４．
図２１は、参考例４のＶＬＩＷマイクロプロセッサにおけるＡＬＵ演算副命令（または、ＡＬＵ算術副命令ともいう）の実行を示すタイミング図である。なお、参考例４のＶＬＩＷマイクロプロセッサの構成は、参考例１に示したものと同じなので、ここでは説明を省略する。
【０１２５】
参考例４では、ＡＬＵ算術副命令に関する異なるパイプライン間で専用のバイパス経路を設けることで、データ干渉を回避させ、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しつつ命令を効率良く実行するものである。
【０１２６】
次に動作について説明する。
ＡＬＵ演算命令は、メモリアクセスユニット３および整数演算ユニット４双方のＡＬＵ１５，１９で実行される。この参考例４では、整数演算ユニット４で実行されるＡＬＵ演算命令により生成された演算結果を、メモリアクセスユニット３にクロスバイパスする場合について説明する。なお、メモリアクセスユニット３で実行されるＡＬＵ演算命令により生成された演算結果を、整数演算ユニット４にクロスバイパスする場合も同様の動作で行われるので、ここでは説明を省略する。
【０１２７】
ＡＬＵ演算副命令のパイプラインのタイミングは、図に示すように、まずＤ１でＡＬＵ演算副命令のデコードを行なう。そして、それと並行してＤ１，Ｄ２期間中に、汎用レジスタ５からＡＬＵ１９の入力ラッチまでソースデータの読み出しを行なう。そして、Ｅ１，Ｅ２期間中にＡＬＵ演算を行なう。その後、演算結果は、Ｗ１期間中にライトバックバスに出力し、Ｗ２期間中に汎用レジスタ５に書き込みを行なう。演算結果のクロスバイパス処理はＷ２期間中に行なわれる。
【０１２８】
図２２は、ＡＬＵ演算副命令の演算結果のクロスバイパスが行なわれるタイミングを示す。図中の白の部分はメモリアクセスユニット３で実行されているパイプラインを示し、斜線部分は整数演算ユニット４で実行されているパイプラインを示す。
【０１２９】
８０４は、整数演算ユニット４で実行されたＡＬＵ演算副命令(add r10, r2, r3) のパイプラインである。ＡＬＵ演算副命令は、図２１に示したパイプラインで説明したようなタイミングで各種処理が実行される。８０５は、ＡＬＵ演算副命令からクロスバイパス経由でデータをもらう、メモリアクセスユニット３で実行される加算命令(add r20, r10, r4)のパイプラインである。
【０１３０】
パイプライン８０４のＷ２からパイプライン８０５のＤ２へＡＬＵ演算副命令の演算結果がクロスバイパスされている。このように、Ｗ２期間中にバイパス処理を行なうために、たとえ最高速でバイパスしたとしても、２命令の実行後にしか演算結果をクロスバイパスすることができない。
【０１３１】
次に、図１０〜図１３に示したマイクロプロセッサの詳細な構成を示すブロック図で、図２２で説明した乗算結果のクロスバイパス処理の説明を行なう。
【０１３２】
図１０〜図１３において、そのロードデータのクロスバイパスを行なう経路は、経路２２１である。パイプライン８０４のＥステージで行なったＡＬＵ演算副命令の演算結果はレジスタ５５内に保持される。レジスタ５５の結果は、Ｗ１期間中にライトバックレジスタ５４に取り込まれる。
【０１３３】
そして、同じＷ１期間中にライトバックレジスタ５４の値は、W1W2BUS バスに出力され、Ｗ２期間中に汎用レジスタ５に書き込まれる。ＡＬＵ演算副命令の演算結果は、W1W2BUS バスに出力されるのと同じタイミングで経路２２１を通してD1S5BUS に出力される。
【０１３４】
D1S5BUS は、メモリアクセスユニット３と整数演算ユニット４で共通のバスであるので、D1S5BUS 上のデータはメモリアクセスユニット３で使用可能である。この出力タイミングは、図２２のパイプライン８０４のＷステージのタイミングに相当する。ゆえに、パイプライン８０４のＷステージからパイプライン８０５のＤステージへのバイパス処理が実行される。
【０１３５】
以上のように、この参考例４によれば、図２２に示すように、ＡＬＵ演算副命令のパイプライン間でデータ干渉の発生が予測される演算ユニット間にクロスバイパス経路（データ転送経路）を設け、クロスバイパス経路を介して各演算ユニット間のデータ転送を図１５および図１６に示す構成のバイパス処理制御回路および３ステートバッファにより制御するように構成したので、例えば、ＡＬＵ演算副命令のパイプライン間でデータ干渉が発生した場合であっても、演算ユニット間でクロスバイパス経路を介してダイレクトにデータの受け渡しを行うことができ、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しつつ命令を効率良く実行することができる。
【０１３６】
参考例５．
図２３は、参考例５のＶＬＩＷマイクロプロセッサにおけるフラグ操作命令を実行する回路を示すブロック図であり、このフラグ操作命令を実行する回路７１０〜７１３、７３２、７３３は、図１および図１０〜図１３に示す命令デコードユニット２内のプロセッサ状態語１０内に含まれている。その他の構成は参考例１のものと同じなので、ここでは説明を省略する。
【０１３７】
図において、７１０，７１２は、それぞれプロセッサ状態フラグレジスタの下位８ビットのマスターとスレーブのレジスタである。図７で示したプロセッサ状態語（ＰＳＷ）で既に説明したように、この下位８ビットにはＦ０からＦ７のフラグが保持されている。図１に示すＶＬＩＷマイクロプロセッサでは、これらＦ０からＦ７のフラグに対してフラグ操作命令が実行される。フラグ操作命令には、フラグ間のＡＮＤ処理を行なうＡＮＤＦＧと、ＯＲ処理を行なうＯＲＦＧと、排他的論理和処理を行なうＸＯＲＦＧと、フラグの反転を行なうＮＯＴＦＧ命令を実行することが可能である。
【０１３８】
７１１はレジスタ７１２にフラグの値を書き込むためのフラグ選択用のセレクタ（選択手段）、７４０はフラグ操作命令で生成したフラグ値以外のフラグ値をレジスタ７１２に書き込むためのバイパス経路（データ転送経路）、７４１、７４２は、後で述べるフラグ操作命令の実行結果をレジスタ７１２に書き込むためのバイパス経路（データ転送経路）であり図１に示したバイパス経路４０、４１に対応する。７１３はレジスタ７１２の値を取り込みＷ２期間中に出力するレジスタである。
【０１３９】
７１４、７１５、７１６、７１７は、８ビットあるレジスタ７１３の値の内１ビットを選択するための８−ｔｏ−１のセレクタ（選択手段）、７１８、７１９、７２０、７２１は、それぞれセレクタ７１４、７１５、７１６、７１７の値を取り込みＥ１期間中に出力するレジスタである。
【０１４０】
７２２、７２３、７２４、７２５は、レジスタ７１８、７１９、７２０、７２１の値か、バイパス経路（データ転送経路）７５１、７５２、７５３の値を選択して出力するセレクタ（選択手段）、７２６、７２７、７２８、７２９は、セレクタ７２２、７２３、７２４、７２５の出力を取り込みＥ２期間中に出力するレジスタである。
【０１４１】
７３０、７３１は、前述したフラグ操作命令を実行する組合せ回路であり、組合せ回路７３０は、機能的にはメモリアクセスユニット３内に位置し、レジスタ７２６、７２７の２ビットの値からフラグ操作命令を実行する。組合せ回路７３１は、機能的には整数演算ユニット４内に位置し、レジスタ７２８、７２９の２ビットの値からフラグ操作命令を実行する。フラグ操作の組合せ回路７３０、７３１の出力は、それぞれバイパス経路７４１、７４２とセレクタ７１１を通過してレジスタ７１２に書き込まれる。
【０１４２】
７３２、７３３はそれぞれフラグ操作命令を実行する組合せ回路７３０、７３１の出力結果を取り込みＷ１期間中に出力するためのレジスタ、７５１、７５２、７５３はバイパス経路である。７５１は、フラグ操作命令で生成したフラグ値以外のフラグ値をバイパスするための経路である。７５２はメモリアクセスユニット３で実行されたフラグ操作命令の結果をバイパスするための経路である。７５３は整数演算ユニット４で実行されたフラグ操作命令をバイパスするための経路である。
【０１４３】
この参考例５では、フラグ操作命令の実行において異なる演算ユニットのパイプライン間で専用のクロスバイパス経路を設け、フラグの受け渡しを行うことで、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しながらフラグ操作副命令を効率良く実行するものである。
【０１４４】
次に動作について説明する。
図２４は、ＶＬＩＷマイクロプロセッサ１におけるパイプラインにおけるフラグ操作命令実行を示すタイミング図である。
【０１４５】
図２４において、フラグ操作命令の実行では、まずＤ１でフラグ操作命令のデコードを行なう。そして、Ｄ２期間中に、プロセッサ状態フラグレジスタ７１０、７１２からフラグ操作命令実行ユニットの入力ラッチまでソースデータの読み出しを行なう。そして、Ｅ２期間中にフラグ操作命令を実行する。そしてこの演算結果をＷ１期間中にプロセッサ状態フラグレジスタ７１０、７１２内に書き込む。演算結果のクロスバイパス処理はＷ１期間中に行なわれる。このようなフラグ操作命令は、メモリアクセスユニット３および整数演算ユニット４の双方の演算ユニットで実行される。
【０１４６】
図２５は、フラグ操作命令の結果のクロスバイパスの実行を示すタイミング図である。図中の白い部分はメモリアクセスユニット３で実行されているパイプライン、斜線部分は整数演算ユニット４で実行されているパイプラインである。
【０１４７】
８０６は、メモリアクセスユニット３で実行されたフラグ操作命令(andfg f0, f2, f3)のパイプラインである。８０７は、整数演算ユニット４で実行されたフラグ操作命令(andfg f1, f4, f5)のパイプラインである。フラグ操作命令は、図２４のパイプライン図で説明したようなタイミングで各種処理が実行される。
【０１４８】
８０８は、フラグ操作命令からクロスバイパス経由でフラグ値をもらう、メモリアクセスユニット３で実行されるフラグ操作命令(orfg f6, f1, f5) のパイプラインである。８０９は、フラグ操作命令からクロスバイパス経由でフラグ値をもらう、整数演算ユニット４で実行されるフラグ操作命令(xorfg f7, f0, f3)のパイプラインである。
【０１４９】
パイプライン８０６のＷ１からパイプライン８０９のＥ１と、パイプライン８０７のＷ１からパイプライン８０８のＥ１へフラグ操作命令の結果がクロスバイパスされている。このように、フラグ操作命令のクロスバイパスでは、双方の演算ユニットで実行したフラグ操作命令の結果を他方のユニットにそれぞれ同時にバイパスできる。
【０１５０】
次に、フラグ操作命令間のクロスバイパス処理について図２３を用いて説明する。図２３でそのフラグ操作命令間のクロスバイパスを行なう経路は、経路７５２、７５３である。すなわちメモリアクセスユニット３で実行されたフラグ操作命令の実行結果を整数演算ユニット４にバイパスするバイパス経路が７５２である。
【０１５１】
また、整数演算ユニット４で実行されたフラグ操作命令の実行結果をメモリアクセスユニット３にバイパスする経路が７５３である。これは、図１のバイパス経路４１に相当する。パイプライン８０６のＥステージで実行されたフラグ操作命令の結果はレジスタ７３２内に保持される。そして、Ｗ１期間中にクロスバイパス経路７５２とセレクタ７２４、７２５を経由してレジスタ７２８あるいは７２９内に取り込まれる。この取り込まれるタイミングは、パイプライン８０９のＥステージに相当する。
【０１５２】
また、パイプライン８０７のＥステージで実行されたフラグ操作命令の結果はレジスタ７３３内に保持される。そして、Ｗ１期間中に経路７５３とセレクタ７２２、７２３を経由してレジスタ７２６あるいは７２７内に取り込まれる。この取り込まれるタイングは、パイプライン８０８のＥステージに相当する。
【０１５３】
以上のように、この参考例５によれば、フラグ操作命令の実行において異なる演算ユニットのパイプライン間で専用のクロスバイパス経路を設け、フラグの受け渡しを行うことで、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しつつ命令を効率良く実行することができる。
【０１５４】
参考例６．
参考例６のＶＬＩＷマイクロプロセッサは、メモリアクセスユニット３内のＡＬＵ１５および整数演算ユニット４内のＡＬＵ１９での演算結果のフラグ値のバイパス処理に関するものである。参考例６のＶＬＩＷマイクロプロセッサの構成は、参考例５のものと同様なのでここではその説明を省略する。
【０１５５】
次に動作について説明する。
参考例５で説明したフラグ操作命令間のバイパス処理と同様に、ＡＬＵ１５、１９等で実行された演算結果のフラグ値をフラグ操作命令へバイパスする処理について説明する。
【０１５６】
ＡＬＵ演算のフラグ値のクロスバイパス処理のタイミングは、参考例５の説明で用いた図２４、図２５のタイミング図と同様である。
【０１５７】
参考例６におけるＡＬＵ演算結果のフラグ値のクロスバイパス処理を図１０〜図１３及び図２３を用いて説明する。
【０１５８】
図１０〜図１３のブロック図で示されるように、メモリアクセスユニット３内のＡＬＵ１５でのフラグ操作命令の演算はＥ１，Ｅ２期間中に実行される。この演算により生成されたフラグは、バイパス経路（データ転送経路）６２を経由して命令デコードユニット２へ出力される。また、同様に整数演算ユニット４内のＡＬＵ１９や飽和演算器２１３では、フラグ操作命令の演算がＥ１、Ｅ２期間中に実行される。この演算により生成されたフラグは、それぞれ経路６３、６４を経由して命令デコードユニット２へ出力される。
【０１５９】
図２３に示したフラグ操作命令を実行する回路のブロック図では、ＡＬＵ１５、１９から出力されたフラグ値をバイパス経路７５１およびセレクタ７２２〜７２５を経由してレジスタ７２６、７２７、７２８、７２９内に取り込む。その後の動作は、参考例５と同様である。
【０１６０】
以上のように、この参考例６によれば、各演算ユニット内のＡＬＵで実行されるフラグ副操作命令の実行結果を専用のクロスバイパス経路を設け、命令デコーダへのフラグの受け渡しを行うことで、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しつつ命令を効率良く実行することができる。
【０１６１】
実施の形態１．
図２６は、実施の形態１のＶＬＩＷマイクロプロセッサにおいてロードデータをクロスバイパスする詳細経路を示すブロック回路であり、図において、２０１は、ロードデータの符合拡張を行なう符合拡張部、２００は、オペランドデータバスM2ODBUS と符合拡張部２０１を接続する経路、７６１、７６２、７６３は、符合拡張部２０１の出力の上位ワードと下位ワードのいずれかを選択するセレクタ（選択手段）である。これらのセレクタ７６１、７６２、７６３は、バイパス処理制御回路２８から出力されるセレクタ制御信号により制御される。なお、実施の形態１のＶＬＩＷマイクロプロセッサのその他の構成は参考例１のものと同じなのでここでは説明を省略する。
【０１６２】
７５５、７５６、７５７は、セレクタ７６１、７６２、７６３の出力を、Ｄ１同期バス群に出力するための３ステートバッファ（選択手段）である。３ステートバッファ７５５、７５６、７５７はバイパス経路選択信号が有効である時に、バスD2S3BUS, D2S4BUS, D2S5IBUSにロードデータを出力する。図１０〜図１３に示すセレクタ５０３は、これらダブルワードデータをワードデータとして出力するためのセレクタに相当する。図１０〜図１３に示すセレクタ５００、５０１、５０２、５０４もこれと同様な機能を有するセレクタである。
【０１６３】
図２７は、図２６に示すバイパス経路を制御する制御回路を示すブロック図であり、図において、７７１はソースレジスタ指定フィールドdirb[0:5] を保持するレジスタである。７２２はディスティネーションレジスタ指定フィールドemra[0:5] を保持するレジスタである。７７３はオペコードEMopc を保持するレジスタである。７７４はオペコードDIopc を保持するレジスタである。７８０は、レジスタ７７１のソースレジスタ指定フィールドとレジスタ７７２のディスティネーション指定フィールドを比較し、各レジスタ値が等しければ一致信号を出力する比較器（比較手段）である。７８１は、レジスタ７７１のソースレジスタ指定フィールドの上位５ビットとレジスタ７７２のデスティネーション指定フィールドの上位５ビットとを比較し、両者の値が等しければ一致信号を出力する比較器（比較手段）、７７５は、レジスタ７７３のオペコードをデコードし、メモリアクセスユニット３のＥステージで実行されている命令が何であるかを特定する信号を生成するデコード回路である。
【０１６４】
７７６は、レジスタ７７４のオペコードをデコードし、整数演算ユニット４のＤステージで実行されている命令が何であるかを特定する信号を生成するデコード回路、７８２は、比較器７８０からの一致信号と、デコード回路７７５、７７６からの命令特定信号と、レジスタ７７２の最下位ビットからバイパス経路選択信号を生成する組合せ回路である。
【０１６５】
７８３は、比較器７８１からの一致信号と、デコード回路７７５、７７６からの命令特定信号と、レジスタ７７１の最下位ビットからセレクタ制御信号を生成する組合せ回路である。
【０１６６】
図２７に示す構成のバイパス制御回路２８−３が、ダブルワードサイズのデータをワードサイズのバスに出力するクロスバイパス経路（データ転送経路）の動作を制御する。
【０１６７】
この実施の形態１では、異なるオペランドサイズ命令の実行の為のクロスバイパス経路を設けることで、ダブルワードデータ（６４ビット）からワードデータ（３２ビット）バスへのバイパス処理を行い、例えば、異なる演算ユニットで実行されるダブルワードデータを扱う先行命令のデスティネーションレジスタ指定フィールドと、両方のユニットで実行されるワードデータを扱う後続命令のソースレジスタ指定フィールドが一致し異なるユニット間でデータ干渉が発生した場合、ダブルワードデータの上位と下位のワードデータを選択するセレクタとクロスバイパス経路によりデータの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうものである。
【０１６８】
次に動作について説明する。
以下では、ロード命令が実行される場合について説明する。
図２８に異なるオペランドサイズ間の異なるパイプへのクロスバイパス処理のタイミングを示す。図中の白い部分はメモリアクセスユニット３で実行されているパイプライン、斜線部分のパイプラインは整数演算ユニット４で実行されているパイプラインである。
【０１６９】
８１１は、メモリアクセスユニット３で実行されたダブルワードデータをロードする命令(ld2w r10, r2, r3)のパイプラインである。ロード命令の実行タイミングは図１７に示すメモリアクセスユニット３のパイプラインの様に実行される。
【０１７０】
ロードされたダブルワードデータは、汎用レジスタ５内のレジスタＲ１０、Ｒ１１内に取り込まれる。８１２は、そのロード命令実行ユニットからクロスバイパス経由でロードデータをもらう、整数演算ユニット４で実行される加算命令(add r21, r11, r5)のパイプラインである。
【０１７１】
クロスバイパスのタイミング(図中の矢印)は、図１８に示すロード命令のクロスバイパスの動作と同じタイミングである。すなわち、パイプライン８１１のＭ２からパイプライン８１２のＤ２へクロスバイパスがなされている。但し、バイパス処理で受渡しされているデータは、ロードしたダブルワードデータの下位ワードデータである。すなわちロード命令によりレジスタＲ１１内に取り込まれるデータがクロスバイパスされて、加算命令のソースデータとして使用される。
【０１７２】
以上のように、この実施の形態１によれば、異なるオペランドサイズ間でのデータの受け渡しの為のクロスバイパス経路を設けることで、ダブルワードデータ（６４ビット）からワードデータ（３２ビット）バスへのバイパス処理を行い、例えば、上記説明したように、異なる演算ユニット間で実行されるダブルワードデータを扱う先行命令のデスティネーションレジスタ指定フィールドと、両方のユニットで実行されるワードデータを扱う後続命令のソースレジスタ指定フィールドが一致し異なるユニット間でデータ干渉が発生した場合、ダブルワードデータの上位と下位のワードデータを選択するセレクタとクロスバイパス経路によりデータの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうことができる。
【０１７３】
参考例７．
図２９は、参考例７によるＶＬＩＷマイクロプロセッサにおける複数のパイプラインへのバイパス処理を発生させる命令コード間のデータの干渉を示す説明図である。参考例７のＶＬＩＷマイクロプロセッサの構成は、参考例１および実施の形態１のものと同じなので、ここでは説明を省略する。
【０１７４】
ここで、複数のパイプラインへのバイパス処理とは自身のパイプラインと異なるパイプラインへのバイパス処理であることを示す。図において、６００ａ、６００ｂ、６００ｃはそれぞれメモリアクセスユニット３内のＷステージ、Ｅ／Ｍステージ、Ｄステージで実行される命令コードを示す。
【０１７５】
６０１ａ、６０１ｂ、６０１ｃはそれぞれ整数演算ユニット４で実行されるＷステージ、Ｅ／Ｍステージ、Ｄステージの命令コードを示している。各命令コードの４つのフィールドは先頭からオペコードとディスティネーションレジスタ指定フィールドと、２つのソースレジスタ指定フィールドを示している。各フィールドに記載の記号の先頭の２文字は、それぞれのステージとそれぞれの演算ユニットでの実行を示している。すなわち、ＷＭはＷステージのメモリアクセスユニット３での実行であることを示している。
【０１７６】
この参考例７では、両方の演算ユニット、即ちメモリアクセスユニット３および整数演算ユニット４で実行される先行命令のデスティネーションレジスタ指定フィールドと、双方の演算ユニットで実行される後続命令のソースレジスタ指定フィールドが一致し、複数のユニット間でデータ干渉が発生した場合、マルチバイパス経路によりデータの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうものである。
【０１７７】
次に動作について説明する。
図２９に示すように、Ｅステージのメモリアクセスユニット３で実行される命令コードのデスティネーションレジスタ指定フィールドemraと、２つのソースレジスタ指定フィールドdmrb, dirbが等しい為に、データ干渉が発生することを示している。また、Ｗステージの整数演算ユニット４で実行される命令コードのデスティネーションレジスタ指定フィールドwiraと、２つのソースレジスタ指定フィールドdmrc, dircが等しいために、データ干渉が発生することを示している。
【０１７８】
このようなデータ干渉を回避する為のバイパス処理をマルチバイパスと呼ぶ。マルチバイパス処理では、一つのデータを異なるバイパス経路（データ転送経路）で複数のパイプラインへバイパス処理する。
【０１７９】
以上のように、この参考例７によれば、メモリアクセスユニットおよび整数演算ユニットで実行される先行命令のデスティネーションレジスタ指定フィールドと、双方の演算ユニットで実行される後続命令のソースレジスタ指定フィールドが一致し、複数のユニット間でデータ干渉が発生した場合、マルチバイパス経路によりデータの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうことができる。
【０１８０】
参考例８．
図３０は、この発明の参考例８によるＶＬＩＷマイクロプロセッサにおけるロードデータの複数のパイプラインへのクロスバイパス処理を示すタイミングを示す図であり、図において、白い部分はメモリアクセスユニット３で実行されているパイプライン、斜線部分は整数演算ユニット４で実行されているパイプラインである。参考例８のＶＬＩＷマイクロプロセッサの構成は、参考例１および２のものと同じものなのでここではその説明を省略する。
【０１８１】
８２０は、メモリアクセスユニット３で実行されたロード命令 (ldw r10, r2, r3)のパイプラインであり、ロード命令の実行を示すタイミングは図１７に示すタイミングと同じである。８２１は、そのメモリアクセスユニット３からバイパス経由でロードデータをもらい、メモリアクセスユニット３で実行される加算命令(add r20, r10, r4)のパイプラインである。
【０１８２】
８２２は、同じくメモリアクセスユニット３からクロスバイパス経由でロードデータをもらう、整数演算ユニット４で実行される加算命令(add r21, r10, r5)のパイプラインである。図中の矢印で示すように、パイプライン８２０のＭ２からパイプライン８２１のＤ２とパイプライン８２２のＤ２へ同時に同じデータがバイパス処理される。そして、パイプライン８２１、８２２では、そのバイパスされたデータを用いて後続ステージの処理が実行される。
【０１８３】
この参考例８では、メモリアクセスユニット３で実行される先行のロード命令のデスティネーションレジスタ指定フィールドと、メモリアクセスユニット３および整数演算ユニット４の双方のユニットでその直後に実行される命令のソースレジスタ指定フィールドが一致し、複数のユニット間でデータ干渉が発生した場合、マルチバイパス経路を経由してデータの受け渡しを実施し、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうものである。
【０１８４】
次に動作について説明する。
図１０〜図１３に示すＶＬＩＷマイクロプロセッサの詳細な構成を示すブロック図を用いて、図３０に示したロードデータの複数のパイプラインへのバイパス処理の説明を行なう。
【０１８５】
図１０〜図１３でそのロードデータのマルチバイパスを行なう経路は、符合拡張部３３０→バイパス経路（データ転送経路）２２５と、バイパス経路（データ転送経路）２００→符合拡張部２０１→バイパス経路（データ転送経路）２０２である。
また、パイプライン８２０のロード命令処理では、Ｍステージでメモリアクセス処理を開始する。Ｍ１からデータメモリアクセス用のアドレスをアドレスバスM1OABUS に出力する。それに対して、データメモリはロードデータをＭ２期間中にバスM2ODBUSに出力する。ロードデータバスM2ODBUS上のデータは、経路２００等を通って、符合拡張部２０１、３３０内に入力される。
【０１８６】
符合拡張部２０１、３３０の出力は、クロスバイパス経路２０２とバイパス経路２２５を通過して、それぞれメモリアクセスユニット３のＤ２同期バス群と整数演算ユニット４のＤ２同期バス群に出力される。この出力タイミングは、図３０に示したパイプライン８２１、８２２のＤ２のタイミングに相当する。ゆえに、パイプライン８２０のＭ２からパイプライン８２１、８２２のＤ２へのマルチバイパス処理が実行されたことになる。
【０１８７】
以上のように、この参考例８によれば、メモリアクセスユニットで実行される先行のロード命令のデスティネーションレジスタ指定フィールドと、メモリアクセスユニットおよび整数演算ユニットの双方のユニットでその直後に実行される命令のソースレジスタ指定フィールドが一致し、複数のユニット間でデータ干渉が発生した場合、マルチバイパス経路を経由してデータの受け渡しを実施し、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうことができる。
【０１８８】
参考例９．
図３１は、参考例９によるＶＬＩＷマイクロプロセッサにおける乗算結果のマルチバイパスの実行を示すタイミング図であり、この参考例９のＶＬＩＷマイクロプロセッサでは、複数のパイプラインへの乗算結果のマルチバイパス処理を行う。参考例９のＶＬＩＷマイクロプロセッサの構成は参考例１および３のものと同じなのでここではその説明を省略する。
【０１８９】
図３１において、白い部分はメモリアクセスユニット３で実行されているパイプライン、斜線部分は整数演算ユニット４で実行されているパイプラインである。
【０１９０】
８２３は、整数演算ユニット４で実行された乗算副命令(mul2hr10, r2, r3)のパイプラインである。乗算副命令は、図１９に示したパイプラインのタイミングで各種処理が実行される。８２４は、乗算副命令からクロスバイパス経由でデータを受け、メモリアクセスユニット３で実行される加算命令(add r20, r10, r4)のパイプラインである。
【０１９１】
８２５は、同じく乗算副命令からバイパス経由でデータを受け、整数演算ユニットで４実行される加算副命令(add r21, r10, r5)のパイプラインである。パイプライン８２３のＷ２からパイプライン８２４のＤ２へ乗算結果がクロスバイパスされている。
【０１９２】
また、パイプライン８２３のＷ１からパイプライン８２５のＤ１へ乗算結果がバイパスされている。このように、乗算結果のマルチバイパス処理の場合、異なるタイミングで同一データのバイパス処理が実行されている。また、乗算副命令の実行に時間が必要とされるので、たとえ最高速でバイパスした場合であっても、２命令後にしかマルチバイパスすることができない。
【０１９３】
この参考例９では、整数演算ユニット４で実行される先行する乗算副命令のデスティネーションレジスタ指定フィールドと、メモリアクセスユニット３および整数演算ユニット４の双方のユニットで２クロック後に実行される命令のソースレジスタ指定フィールドが一致し、複数のユニット間でデータ干渉が発生した場合、マルチバイパス経路によりデータの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうものである。
【０１９４】
次に動作について説明する。
図１０〜図１３に示すこの発明のＶＬＩＷマイクロプロセッサの詳細な構成を示すブロック図で、図３１に示す乗算結果のマルチバイパス処理の説明を行なう。図１０〜図１３において、この参考例９での乗算結果のクロスバイパスを行なう経路は、レジスタ５５→マルチバイパス経路（データ転送経路）２２７と、マルチバイパス経路（データ転送経路）２１０→レジスタ２１１→マルチバイパス経路（データ転送経路）２１２である。
【０１９５】
パイプライン８２３のＥステージで行なった乗算結果は、レジスタ５７に保持される。レジスタ５７の結果は、E2D3BUS, E2D4BUSを通してＷ１期間中にライトバックレジスタ５６に取り込まれる。ライトバックレジスタ５６の結果は、同じＷ１期間中にW1W3EBUS, W1W3OBUSバスに出力されると共に、マルチバイパス経路２２７を通過して整数演算ユニット４内のＤ１同期バス群に出力される。このＤ１同期バス群への出力タイミングは、図３１のパイプライン８２５のＤ１のタイミングに相当する。
【０１９６】
また、W1W3EBUS, W1W3OBUSバスの値は、Ｗ２期間中に汎用レジスタ５内に書き込まれ場合と同じタイミングで、レジスタ２１１に取り込まれる。レジスタ２１１の値は、クロスバイパス経路２１２を通してメモリアクセスユニット３のＤ２同期バス群に出力される。この出力タイミングは、図３１のパイプライン８２３のＤ２のタイミングに相当する。このようにパイプライン８２３のＷ１、Ｗ２からパイプライン８２４、８２５のＤ１、Ｄ２へそれぞれ異なるタイミングで、同じ乗算結果のマルチバイパス処理が実行される。
【０１９７】
以上のように、この参考例９によれば、整数演算ユニットで実行される先行する乗算命令のデスティネーションレジスタ指定フィールドと、メモリアクセスユニットおよび整数演算ユニットの双方のユニットで２クロック後に実行される命令のソースレジスタ指定フィールドが一致し、複数のユニット間でデータ干渉が発生した場合、マルチバイパス経路によりデータの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうことができる。
【０１９８】
参考例１０．
図３２は、参考例１０によるＶＬＩＷマイクロプロセッサにおけるフラグ演算結果のマルチバイパス処理の実行を示すタイミング図であり、この参考例９のＶＬＩＷマイクロプロセッサでは、複数のパイプラインへのフラグ演算結果を、マルチバイパス経路（データ転送経路）を介してマルチバイパス処理を行う。なお、参考例１０のＶＬＩＷマイクロプロセッサの構成は参考例１および５のものと同じなのでここではその説明を省略する。
【０１９９】
図３２において、白い部分はメモリアクセスユニット３で実行されているパイプライン、斜線部分は整数演算ユニット４で実行されているパイプラインである。
【０２００】
８２６は、メモリアクセスユニット３で実行されたフラグ操作命令(andfg f0, f1, f2)のパイプラインである。８２７は、メモリアクセスユニット３で実行されたフラグ操作命令(orfg f4, f0, f6) のパイプラインである。８２８は整数演算ユニット４で実行されたフラグ操作命令(orfg f5,f0, f7)のパイプラインである。
【０２０１】
この参考例１０では、メモリアクセスユニット３および整数演算ユニット４の双方のユニットで実行される先行するフラグ操作副命令のデスティネーションフラグ指定フィールドと、双方のユニットでその直後に実行されるフラグ操作命令のソースフラグ指定フィールドが一致し、複数のユニット間でフラグ値の干渉が発生した場合、マルチバイパス経路によりフラグの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうものである。
【０２０２】
次に動作について説明する。
この参考例１０におけるＶＬＩＷマイクロプロセッサでのフラグ操作命令は、図２４のパイプライン図で説明したものと同様なタイミングで各種処理が実行される。パイプライン８２７、８２８は、パイプライン８２６のフラグ操作命令からクロスバイパス経由でフラグ値をもらう。パイプライン８２６のＷ１から、パイプライン８２７のＥ１とパイプライン８２８のＥ１へフラグ操作命令の結果がマルチバイパス処理されている。
【０２０３】
次に、フラグ操作命令間のマルチバイパス処理について、図２３に示すフラグ操作回路を示すブロック図を用いて説明する。
図２３に示すフラグ操作回路において、フラグ操作命令間のマルチバイパスを行なうマルチバイパス経路は、マルチバイパス経路７５２及び７５３である。すなわち、メモリアクセスユニット３で実行されたフラグ操作命令の結果は、マルチバイパス経路７５２を経由して双方のユニットにマルチバイパスを行う。また、整数演算ユニット４で実行されたフラグ操作命令の実行結果は、マルチバイパス経路７５３を経由して双方のユニットへマルチバイパスされる。
【０２０４】
パイプライン８２６のＥステージで実行されたフラグ操作命令の結果は、レジスタ７３３内に保持される。そして、Ｗ１期間中にマルチバイパス経路７５３とセレクタ７２２、７２４を経由してレジスタ７２２、７２４内に取り込まれる。この取り込まれるタイミングは、パイプライン８２７、８２８のＥステージに相当する。
【０２０５】
以上のように、この参考例１０によれば、メモリアクセスユニットおよび整数演算ユニットの双方のユニットで実行される先行するフラグ操作副命令のデスティネーションフラグ指定フィールドと、双方のユニットでその直後に実行されるフラグ操作副命令のソースフラグ指定フィールドが一致し、複数のユニット間でフラグ値の干渉が発生した場合、マルチバイパス経路によりフラグの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうことができる。
【０２０６】
実施の形態２．
図３３は、実施の形態２によるＶＬＩＷマイクロプロセッサにおける複数のパイプラインへの異なるオペランドサイズのバイパス処理を示すタイミング図であり、図において、白い部分はメモリアクセスユニット３で実行されているパイプライン、斜線部分は整数演算ユニット４で実行されているパイプライン、８３１は、メモリアクセスユニット３で実行されたダブルワードデータをロードする命令(ld2w r10, r2, r3)のパイプラインである。ロード命令の実行タイミングは図１７に示すパイプラインと同様である。なお、実施の形態２のＶＬＩＷマイクロプロセッサの構成は参考例１のものと同じなのでここではその説明を省略する。
【０２０７】
この実施の形態２では、メモリアクセスユニット３および整数演算ユニット４の両方のユニットで実行されるダブルワードデータを扱う先行命令のデスティネーションレジスタ指定フィールドと、双方のユニットで実行されるワードデータを扱う後続命令のソースレジスタ指定フィールドが一致し、複数のユニット間でデータ干渉が発生した場合、ダブルワードデータの上位と下位のワードデータを選択するセレクタとマルチバイパス経路によりデータの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうものである。
【０２０８】
次に動作について説明する。
ロードされたダブルワードデータは、汎用レジスタ５内のレジスタＲ１０、Ｒ１１内に取り込まれる。８３２は、メモリアクセスユニット３で実行される加算命令(add r20, r10, r4)のパイプラインである。この加算命令は、ロード命令のフェッチで得られたダブルワードデータの上位ワードをバイパス経路を経由して受け取る。
【０２０９】
８３３は、整数演算ユニット４で実行される加算命令(add r21, r11, r5)のパイプラインである。この加算命令は、ロード命令のフェッチで得られたダブルワードデータの下位ワードをバイパス経路を経由して受けとる。
【０２１０】
図中の矢印で示すように、パイプライン８３１のＭ２からパイプライン８３２、８３３のＤ２へ、ダブルワードデータの異なるワードデータがマルチバイパス処理されている。
【０２１１】
以上のように、この実施の形態２によれば、メモリアクセスユニットおよび整数演算ユニットの両方のユニットで実行されるダブルワードデータを扱う先行命令のデスティネーションレジスタ指定フィールドと、双方のユニットで実行されるワードデータを扱う後続命令のソースレジスタ指定フィールドが一致し、複数のユニット間でデータ干渉が発生した場合、ダブルワードデータの上位と下位のワードデータを選択するセレクタとマルチバイパス経路によりデータの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうことができる。
【０２１２】
【発明の効果】
請求項１記載の発明によれば、２つの命令実行手段で実行されるダブルワードデータを扱う先行副命令のデスティネーションレジスタ指定フィールドと、両方の命令実行手段で実行されるワードデータを扱う後続の副命令のソースレジスタ指定フィールドが一致し、異なる命令実行手段間でデータ干渉が発生した場合、ダブルワードデータの上位と下位のワードデータを選択する選択手段とクロスバイパス経路を介してデータの受け渡しを行なうように構成したので、パイプライン停止というペナルティなしにデータの整合性を保ち命令を実行できる効果がある。
【０２１３】
請求項２記載の発明によれば、両方の命令実行手段で実行されるダブルワードデータを扱う先行副命令のデスティネーションレジスタ指定フィールドと、双方の命令実行手段で実行されるワードデータを扱う後続の副命令のソースレジスタ指定フィールドが一致し、複数の命令実行手段間でデータ干渉が発生した場合、ダブルワードデータの上位と下位のワードデータを選択するセレクタとデータ転送経路によりデータの受け渡しを行なうように構成したので、パイプライン停止というペナルティなしにデータの整合性を保ち、命令を実行できる効果がある。
【図面の簡単な説明】
【図１】この発明におけるＶＬＩＷマイクロプロセッサの基本構成を示すブロック図である。
【図２】図１に示したこの発明におけるＶＬＩＷマイクロプロセッサで用いられる命令フォーマットを示す説明図である。
【図３】図１に示したこの発明におけるＶＬＩＷマイクロプロセッサで用いられる命令フォーマットを示す説明図である。
【図４】図１に示したこの発明におけるＶＬＩＷマイクロプロセッサで用いられる命令フォーマットを示す説明図である。
【図５】図１に示したこの発明におけるＶＬＩＷマイクロプロセッサで用いられる命令フォーマットを示す説明図である。
【図６】図１に示したこの発明におけるＶＬＩＷマイクロプロセッサのレジスタの構成を示す説明図である。
【図７】図１に示したこの発明におけるＶＬＩＷマイクロプロセッサのレジスタの構成を示す説明図である。
【図８】図１に示したこの発明におけるＶＬＩＷマイクロプロセッサのパイプライン動作を示す説明図である。
【図９】図１に示したこの発明におけるＶＬＩＷマイクロプロセッサのパイプライン動作を示す説明図である。
【図１０】図１に示したこの発明におけるＶＬＩＷマイクロプロセッサの実行ユニットを中心とした詳細な構成を示すブロック図であり、図１０〜図１３で一つのブロック図を示す。
【図１１】図１０の右側に連続した部分のブロック図である。
【図１２】図１１の右側に連続した部分のブロック図である。
【図１３】図１２の右側に連続した部分のブロック図である。
【図１４】複数の実行ユニットで実行される命令コード間のデータ干渉を示す説明図である。
【図１５】クロスバイパス経路を選択する制御信号を生成し出力する制御回路のブロック図である。
【図１６】図１に示すデコーダ内に組み込まれ、また図１５および図２７に示す制御回路を含むバイパス処理制御回路の構成を示すブロック図である。
【図１７】メモリアクセスユニットでのみ実行されるロード命令の実行タイミングを示すパイプラインの説明図である。
【図１８】ロードデータのクロスバイパスのタイミングをパイプラインで示した説明図である。
【図１９】整数演算ユニットでのみ実行される乗算副命令の実行タイミングのパイプラインを示した説明図である。
【図２０】乗算副命令の実行結果をクロスバイパスするタイミングのパイプラインを示す説明図である。
【図２１】双方の演算ユニットで実行されるＡＬＵ命令の実行タイミングのパイプラインを示す説明図である。
【図２２】ＡＬＵ演算結果のクロスバイパスのタイミングのパイプラインを示す説明図である。
【図２３】フラグ操作副命令をクロスバイパス処理を実行するための制御回路のブロック図である。
【図２４】フラグ操作副命令の実行タイミングのパイプラインを示した説明図である。
【図２５】フラグ操作副命令のクロスバイパスのタイミングのパイプラインを示す説明図である。
【図２６】ロードデータをバイパスするバイパス経路の詳細な構成を示すブロック図である。
【図２７】異なるオペランドサイズ間のバイパス処理を行うためのバイパス制御回路を示すブロック図である。
【図２８】異なるオペランドサイズ間の異なるパイプラインへのバイパス処理を示すタイミング図である。
【図２９】一つのパイプラインで実行される命令コードと複数のパイプラインで実行される命令コード間のデータ干渉を示す説明図である。
【図３０】ロードデータのマルチバイパス処理を示すタイミング図である。
【図３１】乗算結果のマルチバイパス処理を示すタイミング図である。
【図３２】フラグ操作副命令の実行結果のマルチバイパス処理を示すタイミング図である。
【図３３】異なるオペランドサイズ間の複数のパイプラインへのバイパス処理を示すタイミング図である。
【図３４】従来のＶＬＩＷマイクロプロセッサの構成を示すブロック図である。
【図３５】従来のＶＬＩＷマイクロプロセッサに内蔵される一つの実行ユニットの詳細な構成を示すブロック図である。
【図３６】図３５に示す実行ユニットで実行されるバイパス処理を示すタイミング図である。
【図３７】図３４に示す従来のＶＬＩＷマイクロプロセッサ内の異なる実行ユニットで実行される命令間で、データ干渉が発生した際のパイプライン処理を示す説明図である。
【符号の説明】
２  命令デコードユニット（命令デコード手段）、３  メモリアクセスユニット（命令実行手段）、４  整数演算ユニット（命令実行手段）、２１，２２，２３，２４，２５，４０，４１，２００，２０２，２１０，２１２，２２１，２２５，２２７，７４０，７４１，７４２，７５１，７５２，７５３  バイパス経路（データ転送経路）、２８  バイパス処理制御回路（制御手段）、２９，３０，３１，７５５，７５６，７５７  ３ステートバッファ（選択手段）、５００，５０１，５０２，５０３，５０４，７１１，７１４，７１５，７１６，７１７，７２２，７２３，７２４，７２５，７６１，７６２，７６３  セレクタ（選択手段）。
【図１】
0003578883.tif 000014
【図２】
0003578883.tif 000015
【図３】
0003578883.tif 000016
【図４】
0003578883.tif 000017
【図５】
0003578883.tif 000018
【図６】
0003578883.tif 000019
【図７】
0003578883.tif 000020
【図８】
0003578883.tif 000021
【図９】
0003578883.tif 000022
【図１０】
0003578883.tif 000023
【図１１】
0003578883.tif 000024
【図１２】
0003578883.tif 000025
【図１３】
0003578883.tif 000026
【図１４】
0003578883.tif 000027
【図１５】
0003578883.tif 000028
【図１６】
0003578883.tif 000029
【図１７】
0003578883.tif 000030
【図１８】
0003578883.tif 000031
【図１９】
0003578883.tif 000032
【図２０】
0003578883.tif 000033
【図２１】
0003578883.tif 000034
【図２２】
0003578883.tif 000035
【図２３】
0003578883.tif 000036
【図２４】
0003578883.tif 000037
【図２５】
0003578883.tif 000038
【図２６】
0003578883.tif 000039
【図２７】
0003578883.tif 000040
【図２８】
0003578883.tif 000041
【図２９】
0003578883.tif 000042
【図３０】
0003578883.tif 000043
【図３１】
0003578883.tif 000044
【図３２】
0003578883.tif 000045
【図３３】
0003578883.tif 000046
【図３４】
0003578883.tif 000047
【図３５】
0003578883.tif 000048
【図３６】
0003578883.tif 000049
【図３７】
0003578883.tif 000050