(57)【特許請求の範囲】
【請求項１】
複数のパイプラインステージを並列にパイプライン処理するデータ処理装置であって、
レジスタ長より短いデータを記憶部から読み出す第１処理と当該データをレジスタ長にゼロ拡張又は符号拡張してレジスタに格納する第２処理とを指示する拡張付きロード命令に対して、第１処理が実行されるパイプラインストリームと異なるパイプラインストリームを挿入し、第２処理におけるゼロ拡張又は符号拡張を実行することを特徴とするデータ処理装置。
【請求項２】
請求項１記載のデータ処理装置は、さらに
記憶部のデータ読み出しが実行されるパイプラインステージから、当該データを使用する後続命令の演算実行がなされるパイプラインステージに当該データをバイパスするバイパス手段と、
所定の条件に応じて前記バイパス手段によるバイパスを禁止する禁止手段と
を備えることを特徴とするデータ処理装置。
【請求項３】
請求項２記載の禁止手段は、データ処理装置の動作クロック周波数、供給される電源電圧、およびロード命令の種類の少なくとも１つに応じて前記バイパス手段によるバイパスを禁止する
ことを特徴とするデータ処理装置。
【請求項４】
請求項１乃至３記載の何れかのデータ処理装置は、
前記拡張付きロード命令を、前記第１処理を指示するロード命令と前記第２処理を指示する拡張命令とに変換する変換手段を備え、
第２処理におけるゼロ拡張又は符号拡張を、第１処理とは異なるパイプラインストリームで実行する
ことを特徴とするデータ処理装置。
【請求項５】
請求項１乃至４記載の何れかのデータ処理装置は、
前記第１処理における読み出しが実行されるパイプラインステージ以外のステージにおいて前記第２処理におけるゼロ拡張又は符号拡張を行う拡張器を備え、第２処理におけるゼロ拡張又は符号拡張を、第１処理における読み出しが実行されるパイプラインステージとは異なるパイプラインステージで実行する
ことを特徴とするデータ処理装置。
【請求項６】
少なくとも命令実行ステージとメモリアクセスステージとライトバックステージとを含む複数のパイプラインステージからなるパイプライン処理を行うデータ処理装置であって、
レジスタ長より短いデータを記憶部から読み出し当該データをゼロ拡張又は符号拡張してレジスタに格納する拡張付きロード命令を、レジスタ長より短いデータをメモリから読み出してレジスタの下位に格納するロード命令と、当該ロード命令に従ってロードされたデータをゼロ拡張又は符号拡張することを指示する拡張命令とに変換する変換手段と、
前記ロード命令を解読した場合、メモリアクセスステージにおいて記憶部からのデータ読み出しのみを行って、ライトバックステージにおいて当該データをレジスタの下位に格納する制御を行い、前記拡張命令を解読した場合、何れかのパイプラインステージにおいて当該レジスタデータをゼロ拡張又は符号拡張する制御を行う命令解読手段と
を備えることを特徴とするデータ処理装置。
【請求項７】
請求項６記載の変換手段は、前記拡張付きロード命令のうち符号拡張付きロード命令のみを、前記ロード命令と、当該ロード命令に従ってロードされたデータをレジスタ長に符号拡張する符号拡張命令とに変換する
ことを特徴とするデータ処理装置。
【請求項８】
請求項７記載のデータ処理装置は、
命令実行ステージ又はメモリアクセスステージにおいてレジスタ長より短いデータを符号拡張する符号拡張器を備える
ことを特徴とするデータ処理装置。
【請求項９】
請求項８記載のデータ処理装置は、
メモリアクセスステージ又はライトバックステージにおいてレジスタ長より短いデータをレジスタ長にゼロ拡張するゼロ拡張器を備え、
前記命令解読手段は、前記ゼロ拡張命令を解読した場合、当該命令のメモリアクセスステージにおいて記憶装置からのデータ読み出しを行い、さらに前記ゼロ拡張器によりゼロ拡張する制御を行い、前記符号拡張命令を解読した場合、当該命令で指定されたデータを前記符号拡張器により符号拡張する制御を行う
ことを特徴とするデータ処理装置。
【請求項１０】
請求項９記載のデータ処理装置は、さらに
先行する命令のメモリアクセスステージにおいて読み出されたデータを、当該データを使用する後続命令の命令実行ステージへバイパスする第１バイパス手段と、
先行する命令のライトバックステージにおいてレジスタに書き込むべきデータを、当該データを使用する後続命令の命令実行ステージへバイパスする第２バイパス手段とを備え、
前記命令解読手段は、
前記先行する命令が前記ゼロ拡張付きロード命令以外のロード命令である場合には第１バイパス手段を起動し、前記先行する命令が前記ゼロ拡張付きロード命令である場合には第２バイパス手段を起動するバイパス制御手段を備える
ことを特徴とするデータ処理装置。
【請求項１１】
請求項１０記載のデータ処理装置は、さらに
所定の条件に応じて第１バイパス手段によるバイパスを禁止する禁止手段を備え、
前記バイパス制御手段は、さらに、第１のバイパス手段が禁止されている場合には、第１のバイパス手段の代わりに第２のバイパス手段を起動する
ことを特徴とするデータ処理装置。
【請求項１２】
請求項１１記載の禁止手段は、前記データ処理装置の動作クロックの周波数と供給される電源電圧との少なくとも一方に応じて前記第１のバイパス手段を禁止する
ことを特徴とするデータ処理装置。
【請求項１３】
少なくとも命令実行ステージとメモリアクセスステージとライトバックステージとを含む複数のパイプラインステージからなるパイプライン処理を行うデータ処理装置であって、
ライトバックステージにおいてレジスタ長より短いデータをレジスタ長にゼロ拡張又は符号拡張する拡張器と、
レジスタ長より短いデータを記憶部から読み出し当該データをレジスタ長にゼロ拡張又は符号拡張してレジスタに格納する単一の拡張付きロード命令を解読した場合に、メモリアクセスステージにおいて記憶部からのデータ読み出しのみを行って、ライトバックステージにおいて当該データをレジスタ長にゼロ拡張又は符号拡張を行ってレジスタに格納する制御を行う命令解読手段と
を備えることを特徴とするデータ処理装置。
【請求項１４】
請求項１３記載のデータ処理装置は、さらに
先行する命令のメモリアクセスステージにおいて読み出されたデータを、当該データを使用する後続命令の命令実行ステージへバイパスする第１バイパス手段と、
先行する命令のライトバックステージにおいてゼロ拡張又は符号拡張されたデータを、当該データを使用する後続命令の命令実行ステージへバイパスする第２バイパス手段とを備え、
前記命令解読手段は、
前記先行する命令が前記拡張付きロード命令以外のロード命令である場合には、第１バイパス手段を起動し、前記先行する命令が前記拡張付きロード命令である場合には、第２バイパス手段を起動するバイパス制御手段を備える
ことを特徴とするデータ処理装置。
【請求項１５】
請求項１４記載のデータ処理装置は、さらに
所定の条件に応じて第１バイパス手段によるバイパスを禁止する禁止手段を備え、
前記バイパス制御手段は、さらに、第１バイパス手段が禁止されている場合には、第１バイパス手段の代わりに第２バイパス手段を起動する
ことを特徴とするデータ処理装置。
【請求項１６】
請求項１５記載の禁止手段は、前記データ処理装置の動作クロックの周波数と電源電圧値との少なくとも一方に応じて前記第１バイパス手段によるバイパスを禁止する
ことを特徴とするデータ処理装置。
【請求項１７】
命令をフェッチする第１ステージと、命令解読およびレジスタ読出しを行う第２ステージと、命令実行およびオペランドアドレスの算出を行う第３ステージと、メモリをアクセスする第４ステージと、レジスタへの書き込みを行う第５ステージとを有するパイプライン処理を行うデータ処理装置であって、
第１ステージにおいて命令フェッチ処理を行う第１処理部と、
第２ステージにおいて命令解読及びレジスタ読み出し処理を行う第２処理部と、
第２処理部で処理されたデータを第３ステージに受け渡すＡラッチと、
Ａラッチのデータに演算を施す演算器と、Ａラッチのデータを符号拡張する符号拡張回路と、演算結果と符号拡張結果との何れかを選択する第３セレクタとを有し、第３ステージにおいて命令実行およびオペランドアドレス算出を処理する第３処理部と、
第３セレクタ出力を第４ステージへ受け渡すＢラッチと、
Ｂラッチ出力をアドレスとして前記メモリをアクセスするアクセス手段と、Ｂラッチ出力とアクセス手段にアクセスされたメモリデータとの何れかを選択する第４セレクタとを有し、第４ステージにおいてメモリ読み出しを行う第４処理部と、
第４セレクタ出力を第５ステージへ受け渡すＣラッチと、
Ｃラッチ出力をゼロ拡張するゼロ拡張回路と、Ｃラッチ出力又はゼロ拡張結果をレジスタに書き込む書き込み手段とを有し、第５ステージでレジスタ書き込みを行う第５処理部と、
前記第４セレクタ出力を前記Ａラッチにバイパスする第１バイパス手段と、
前記ゼロ拡張回路の出力を前記Ａラッチにバイパスする第２バイパス手段と
所定の条件に応じて前記第１バイパス手段を禁止する禁止手段と
を備えることを特徴とするデータ処理装置。
【請求項１８】
請求項１７の禁止手段は、データ処理装置の動作クロック周波数と電源電圧値との一方に応じて第１バイパス手段を禁止する
ことを特徴とするデータ処理装置。
【請求項１９】
請求項１７又は１８記載のデータ処理装置は、さらに
レジスタ長より短いデータをメモリから読み出して当該データをレジスタ長に符号拡張してレジスタに格納する符号拡張付きロード命令を、レジスタ長より短いデータをメモリから読み出してレジスタに格納するロード命令と、当該データをレジスタ長に符号拡張する拡張命令とに変換する変換手段
を備えることを特徴とするデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリ中の命令に従ってデータをパイプライン処理するデータ処理装置に関し、特に、レジスタ長より短いデータを拡張する命令を処理するデータ処理装置に関する。
【０００２】
【従来の技術】
近年の電子技術の発展により、マイクロコンピュータをはじめデータ処理装置が普及し、あらゆる分野で用いられている。
従来のデータ処理装置は、命令の種類が豊富なことを特徴とするＣＩＳＣ（Ｃｏｍｐｌｅｘ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）タイプと、命令の種類を限定して高速さを特徴とするＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）タイプとに大別できる。例えば、ＴＲＯＮやＭＣ６８０４０などは前者であり、ＳＰＡＲＣやＭＩＰＳなどは後者である。これらはいずれもパイプライン構造をとり命令の見かけ上の実行時間の短縮を図っている。パイプラインとは、命令の処理を少なくとも読出し、解読、実行のステージに分け、これらを並列に実行するものである。
【０００３】
図７は従来のデータ処理装置としてのマイクロコンピュータのブロック図を示す。このデータ処理装置は、命令フェッチステージ（以下、ＩＦステージ）、解読およびレジスタ読出しステージ（以下、ＤＥＣステージ）、演算およびオペランドアドレス計算ステージ（以下、ＥＸステージ）、メモリアクセスステージ（以下、ＭＥＭステージ）、レジスタ書戻しステージ（以下、ＷＢステージ）の５つのステージからなる５段パイプライン構造を成している。
【０００４】
図６において、５は機械語プログラムを格納するＲＯＭ、６はＲＯＭ５から取り出した機械語命令（以下、命令と略す）を格納するＩラッチ、７はＩラッチ６に保持された命令を解読しマイクロコンピュータ４の各部を制御する命令解読器、８はオペランドまたはオペランドを指定するためのアドレスを格納するレジスタファイル、２６はＩラッチ６の内容の一部とレジスタファイル８の出力との２入力から１つを選択するＤセレクタ、１３はＤセレクタ２６の出力を格納するＤ１ラッチ、１４はレジスタファイル８の出力を格納するＤ２ラッチ、１５はＤ１ラッチ１３およびＤ２ラッチ１４の内容を用いて算術論理演算を行う演算器、１８は演算器１５の出力を格納するＥラッチ、１９はＥラッチ１８の値をアドレス入力としてデータが読み出されるＲＡＭ、２０はＥラッチ１８の値とＲＡＭ１９の出力との２入力から１つを選択するＭセレクタ、２７はＭセレクタ２０の出力の下位８ビット又は下位１６ビットを３２ビットにゼロ拡張または符号拡張する拡張器、２１は拡張器２７の出力を格納するＭラッチである。ＲＯＭ５とＩラッチ６と命令解読器７とを除く全ての構成要素の入出力は３２ビット幅を有する。
【０００５】
以上のように構成された従来のデータ処理装置は、８ビットまたは１６ビットのデータをロードして３２ビットにゼロ拡張または符号拡張してレジスタに格納するアセンブリ言語プログラム中の指示に対して、それぞれ単一の機械語命令が割当てられている。当該命令は、命令解読器７で解読され、ＭＥＭステージにおいて次のように実行される。すなわち、当該命令で指定された８ビットまたは１６ビットデータがＲＡＭ１９からを読み出され、さらに拡張器２７により３２ビット長にゼロ拡張又は符号拡張され、レジスタファイル８にその結果が格納される。
【０００６】
【発明が解決しようとする課題】
ところで、パイプライン構造をとるデータ処理装置においては、パイプラインの各ステージの処理時間がほぼ均等でかつできるだけ短いことが要求されている。しかしながら、上記した従来のデータ処理装置では、ＭＥＭステージの処理時間が、ＲＡＭ１９のアクセス時間と、Ｍセレクタ２０の遅延時間と、拡張器２７の遅延時間と、Ｍラッチ２１のセットアップ時間と、それらの間の配線伝搬遅延時間とからなり、他のステージより処理時間が長くなっている。その結果、動作クロック周波数の上限が、ＭＥＭステージの処理時間によって低く抑えられているという問題があり、性能の向上を図ることが困難である。また、ＭＥＭステージでの処理時間を他のステージの処理時間とほぼ均等にするためには、極めてアクセス時間の短い高速ＲＡＭ１９の実装が要求され、結果としてコストや消費電力が増大するという問題点を有している。
【０００７】
本発明はかかる点に鑑み、パイプライン構造を有し動作クロック周波数の上限を向上させたデータ処理装置を提供することを目的とする。
【０００８】
【課題を解決するための手段】
上記課題を解決するため本発明のデータ処理装置は、複数のパイプラインステージを並列にパイプライン処理するデータ処理装置であって、レジスタ長より短いデータを記憶部から読み出す第１処理と当該データをレジスタ長にゼロ拡張又は符号拡張してレジスタに格納する第２処理とを指示する拡張付きロード命令に対して、第１処理が実行されるパイプラインストリームと異なるパイプラインストリームを挿入し、第２処理におけるゼロ拡張又は符号拡張を実行する構成となっている。
【０００９】
さらに、前記データ処理装置は、記憶部のデータ読み出しが実行されるパイプラインステージから、当該データを使用する後続命令の演算実行がなされるパイプラインステージに当該データをバイパスするバイパス手段と、所定の条件に応じて前記バイパス手段によるバイパスを禁止する禁止手段とを備えてもよい。
ここで、前記禁止手段は、データ処理装置の動作クロック周波数、供給される電源電圧、およびロード命令の種類の少なくとも１つに応じて前記バイパス手段によるバイパスを禁止するようにしてもよい。
【００１０】
また、前記データ処理装置は、前記拡張付きロード命令を、前記第１処理を指示するロード命令と前記第２処理を指示する拡張命令とに変換する変換手段を備え、第２処理におけるゼロ拡張又は符号拡張を、第１処理とは異なるパイプラインストリームで実行するように構成してもよい。
さらに、前記データ処理装置は、前記第１処理における読み出しが実行されるパイプラインステージ以外のステージにおいて前記第２処理におけるゼロ拡張又は符号拡張を行う拡張器を備え、第２処理におけるゼロ拡張又は符号拡張を、第１処理における読み出しが実行されるパイプラインステージとは異なるパイプラインステージで実行するように構成してもよい。
【００１１】
また、本発明のデータ処理装置は、少なくとも命令実行ステージとメモリアクセスステージとライトバックステージとを含む複数のパイプラインステージからなるパイプライン処理を行うデータ処理装置であって、レジスタ長より短いデータを記憶部から読み出し当該データをゼロ拡張又は符号拡張してレジスタに格納する拡張付きロード命令を、レジスタ長より短いデータをメモリから読み出してレジスタの下位に格納するロード命令と、当該ロード命令に従ってロードされたデータをゼロ拡張又は符号拡張することを指示する拡張命令とに変換する変換手段と、前記ロード命令を解読した場合、メモリアクセスステージにおいて記憶部からのデータ読み出しのみを行って、ライトバックステージにおいて当該データをレジスタの下位に格納する制御を行い、前記拡張命令を解読した場合、何れかのパイプラインステージにおいて当該レジスタデータをゼロ拡張又は符号拡張する制御を行う命令解読手段とを備える。
【００１２】
また、前記変換手段は、前記拡張付きロード命令のうち符号拡張付きロード命令のみを、前記ロード命令と、当該ロード命令に従ってロードされたデータをレジスタ長に符号拡張する符号拡張命令とに変換するようにしてもよい。
さらに、前記データ処理装置は、命令実行ステージ又はメモリアクセスステージにおいてレジスタ長より短いデータを符号拡張する符号拡張器を備えてもよい。
【００１３】
また、前記データ処理装置は、メモリアクセスステージ又はライトバックステージにおいてレジスタ長より短いデータをレジスタ長にゼロ拡張するゼロ拡張器を備え、前記命令解読手段は、前記ゼロ拡張命令を解読した場合、当該命令のメモリアクセスステージにおいて記憶装置からのデータ読み出しを行い、さらに前記ゼロ拡張器によりゼロ拡張する制御を行い、前記符号拡張命令を解読した場合、当該命令で指定されたデータを前記符号拡張器により符号拡張する制御を行ってもよい。
【００１４】
ここで、前記データ処理装置は、さらに先行する命令のメモリアクセスステージにおいて読み出されたデータを、当該データを使用する後続命令の命令実行ステージへバイパスする第１バイパス手段と、先行する命令のライトバックステージにおいてレジスタに書き込むべきデータを、当該データを使用する後続命令の命令実行ステージへバイパスする第２バイパス手段とを備え、前記命令解読手段は、前記先行する命令が前記ゼロ拡張付きロード命令以外のロード命令である場合には第１バイパス手段を起動し、前記先行する命令が前記ゼロ拡張付きロード命令である場合には第２バイパス手段を起動するバイパス制御手段を備えてもよい。
【００１５】
また、前記データ処理装置は、さらに所定の条件に応じて第１バイパス手段によるバイパスを禁止する禁止手段を備え、前記バイパス制御手段は、さらに、第１のバイパス手段が禁止されている場合には、第１のバイパス手段の代わりに第２のバイパス手段を起動するようにしてもよい。
さらに、前記禁止手段は、前記データ処理装置の動作クロックの周波数と供給される電源電圧との少なくとも一方に応じて前記第１のバイパス手段を禁止するようにしてもよい。
【００１６】
また、本発明のデータ処理装置は、少なくとも命令実行ステージとメモリアクセスステージとライトバックステージとを含む複数のパイプラインステージからなるパイプライン処理を行うデータ処理装置であって、ライトバックステージにおいてレジスタ長より短いデータをレジスタ長にゼロ拡張又は符号拡張する拡張器と、レジスタ長より短いデータを記憶部から読み出し当該データをレジスタ長にゼロ拡張又は符号拡張してレジスタに格納する単一の拡張付きロード命令を解読した場合に、メモリアクセスステージにおいて記憶部からのデータ読み出しのみを行って、ライトバックステージにおいて当該データをレジスタ長にゼロ拡張又は符号拡張を行ってレジスタに格納する制御を行う命令解読手段とを備える。
【００１７】
【発明の実施の形態】
以下、本発明の実施の形態について、図１から図６を用いて説明する。
図１は、データ処理装置の概略構成図を示す。データ処理装置２は、アセンブリ言語プログラム１を入力し機械語プログラムに変換するアセンブラ３と、機械語プログラムに基づいて動作するマイクロコンピュータ４とから構成されている。
【００１８】
アセンブラ３は、本発明では通常のアセンブラ次の変換機能が追加されている。すなわち、拡張付きロード命令をロード命令と、拡張命令との２命令に変換する機能が追加されている。ここで、拡張付きロード命令は、レジスタ長より短いデータをメモリから読み出して当該データをレジスタ長にゼロ拡張又は符号拡張してレジスタに書き込む命令である。ロード命令は、レジスタ長より短いデータをメモリから読み出してレジスタに書き込む命令である。拡張命令は、当該レジスタデータを読み出してゼロ拡張又は符号拡張してレジスタに書き戻す命令であり、ゼロ拡張命令と符号拡張命令とがある。
【００１９】
マイクロコンピュータ４は、命令フェッチステージ（以下、ＩＦステージ）、解読およびレジスタ読出しステージ（以下、ＤＥＣステージ）、演算およびオペランドアドレス計算ステージ（以下、ＥＸステージ）、メモリアクセスステージ（以下、ＭＥＭステージ）、レジスタ書戻しステージ（以下、ＷＢステージ）の５つのステージからなる５段パイプライン構造をもつ。
【００２０】
図２は、マイクロコンピュータ４の構成を示すブロック図である。
同図において、５は機械語プログラムを格納するＲＯＭ、６はＲＯＭ５から取り出した機械語命令（以下、命令と略す）を格納するＩラッチである。
７はＩラッチ６に保持された命令を解読しマイクロコンピュータ４の各部を制御する命令解読器である。
【００２１】
８はオペランドデータまたはオペランドを指定するためのアドレスを格納するレジスタファイルである。レジスタファイル８は、主にオペランドデータを格納するデータレジスタ９と、主にアドレスを格納するアドレスレジスタ１０とから構成され、それぞれ４本ずつのレジスタＤ０からＤ３とＡ０からＡ３とからなる。レジスタ長は３２ビットであるものとする。
【００２２】
１１はＩラッチ６の内容の一部とレジスタファイル８の出力と他２つとの４入力から１つを選択するＤ１セレクタ、
１２はレジスタファイル８の出力と他２つとの３入力から１つを選択するＤ２セレクタである。
１３、１４はＤ１セレクタ１１、Ｄ２セレクタ１２の出力をそれぞれ格納するＤ１ラッチ、Ｄ２ラッチである。
【００２３】
１５はＤ１ラッチ１３およびＤ２ラッチ１４の内容を用いて算術論理演算を行う演算器である。１６はＤ１ラッチ１３の出力の最下位から８ビット目もしくは１６ビット目の値をそれぞれ上位側の２４ビットおよび１６ビットにコピー（以下、それぞれ下位８ビットおよび下位１６ビットの３２ビットへの符号拡張と称する）する符号拡張器であり、EXステージにおいて動作する。
【００２４】
１７は演算器１５の出力と符号拡張器１６の出力との２入力から１つを選択するＥセレクタである。
１８はＥセレクタ１７の出力を格納するＥラッチである。
１９はＥラッチ１８の値をアドレス入力としてデータを読出すＲＡＭである。
２０はＥラッチ１８の値とＲＡＭ１９の出力との２入力から１つを選択するＭセレクタである。
【００２５】
２１はＭセレクタ２０の出力を格納するＭラッチである。
２２はＭラッチ２１の出力の上位２４ビットもしくは１６ビットに０を挿入（以下、それぞれ下位８ビットおよび下位１６ビットの３２ビットへのゼロ拡張と称する）するゼロ拡張器であり、ＷＢステージにおいて動作する。
２３はＭセレクタ２０の出力をＤ１セレクタ１１とＤ２セレクタ１２とに接続するＭＥバイパスである。
【００２６】
２４はゼロ拡張器２２の出力をＤ１セレクタ１１とＤ２セレクタ１２とに接続するＷＥバイパスである。
２５はフリップフロップであり、ＭＥバイパス使用禁止フラグを保持する。このフラグは、動作クロック周波数が所定周波数を越える場合にセットされ、所定周波数以下である場合にリセットされる。
【００２７】
上記マイクロコンピュータ４の構成のうちＩラッチ６およびレジスタファイル８、Ｄ１ラッチ１３およびＤ２ラッチ１４、Ｅラッチ１８、Ｍラッチ２１は、それぞれステージ間で処理結果を受け渡すパイプラインレジスタとして設けられている。また、ＲＯＭ５とＩラッチ６と命令解読器７とＭＥバイパス使用禁止フラグ２５を除く全ての構成要素の入出力は３２ビット幅を有するものとする。
【００２８】
上記ＭＥバイパス２３及びＷＥバイパス２４は、先行する命令のＭＥＭステージおよびＷＢステージと、後続する命令のＥＸステージとの間でパイプラインステージの一部をパスするバイパス機能を実現するため設けられている。バイパス機能（フォワーディングあるいはショートサーキットともいう）は公知技術であり、先行する命令の処理結果を後続する命令が使用する場合（データ依存関係がある場合）に発生するパイプラインロックを低減する技術である。
【００２９】
ＭＥバイパス２３は、先行する命令のＭＥＭステージの実行結果を、セレクタ１１、１２を介してＤ１ラッチ１３、Ｄ２ラッチ１４に供給することによって、当該実行結果を用いる後続命令のＥＸステージに伝送する。これにより２サイクル分のインタロックが解消される。ＷＥバイパス２４は、先行する命令のＷＢステージのデータを、Ｄ１ラッチ１３、Ｄ２ラッチ１４に供給することによって、当該データを用いる後続命令のＥＸステージに伝送する。これにより１サイクル分のインタロックが解消される。
【００３０】
命令解読器７は、マイクロコンピュータ４の各部の制御に加えてバイパス機能を禁止する機能を有する。バイパス機能について命令解読器７は、先行する命令がレジスタファイル８のレジスタへの書込みを伴う命令であるとき、後続の命令で同じレジスタの読み出しを行うか否か（データ依存関係があるか否か）を検知して、当該レジスタを読出す後続命令が解読されるときに、先行命令のＭＥＭステージまたはＷＢステージの終了を待って後続命令のＥＸステージを開始するとともに、Ｄ１セレクタ１１およびＤ２セレクタ１２に対してＭＥバイパス２３またはＷＥバイパス２４を選択するように制御を行う。ただし、先行命令が３２ビットデータをロードする命令でかつＭＥバイパス使用禁止フラグ２５がセットされている場合はＭＥバイパスを選択しない。さらに、命令解読器７は、ＭＥバイパス使用禁止フラグ２５がクリアされているときは、データ依存関係を検知した場合にＭＥバイパスを使用するが、セットされているときは、データ依存関係を検知した場合に通常通りにインタロックを発生させ、ＭＥバイパスを使用しない。バイパス禁止により、バイパスによる遅延時間（Ｄ１セレクタ１１又はＤ２セレクタ１２の遅延時間と配線遅延時間）の分だけＭＥＭステージの処理時間が短くなり、クロック周波数の上限が高くなる。
【００３１】
以上のように構成された本実施の形態によるデータ処理装置について、以下その動作を説明する。
図３は、アセンブリ言語プログラム１とアセンブラ３による変換後の機械語プログラムの一例を示す。機械語プログラムは本来０と１のビット列であるが、意味を表すためにアセンブリ言語プログラムと同じニモニック表記してある。矢印は両者の対応関係を表している。アセンブリ言語プログラム中の指示１から指示４は一対一にそのまま機械語プログラムの命令１から命令４に変換されるが、指示５は命令５−１と命令５−２とに、指示６は命令６−１と命令６−２とに変換される。指示１から指示６および命令１から命令６−２の内容は以下の通りである。
（ａ）アセンブリ言語プログラム
指示１：  ＭＯＶ    ＠（Ａ０），Ｄ０
（Ａ０レジスタの値が示す番地にある３２ビットデータをＤ０レジスタにロードする指示）
指示２：  ＡＤＤ    ＃１，Ｄ０
（Ｄ０レジスタの値に１を加算して結果をＤ０レジスタに格納する指示）
指示３：  ＭＯＶＢＵ    ＠（４，Ａ０），Ｄ１
（Ａ０レジスタの値に４バイトの偏位を加えた番地にある８ビットデータをロードして３２ビットにゼロ拡張した結果をＤ１レジスタに格納する指示）
指示４：  ＳＵＢ    ＃１，Ｄ０
（Ｄ０レジスタの値から１を減算して結果をＤ０レジスタに格納する指示）
指示５：  ＭＯＶＢ    ＠（８，Ａ０），Ｄ２
（Ａ０レジスタの値に８バイトの偏位を加えた番地にある８ビットデータをロードして３２ビットに符号拡張した結果をＤ２レジスタに格納する指示）
指示６：  ＭＯＶＨ    ＠（１２，Ａ０），Ｄ３
（Ａ０レジスタの値に１２バイトの偏位を加えた番地にある１６ビットデータをロードして３２ビットに符号拡張した結果をＤ３レジスタに格納する指示）
（ｂ）機械語プログラム（ニモニック表記）
命令１    ：  ＭＯＶ    ＠（Ａ０），Ｄ０
（指示１と同じ内容の命令）
命令２    ：  ＡＤＤ    ＃１，Ｄ０
（指示２と同じ内容の命令）
命令３    ：  ＭＯＶＢＵ    ＠（４，Ａ０），Ｄ１
（指示３と同じ内容の命令）
命令４    ：  ＳＵＢ    ＃１，Ｄ０
（指示４と同じ内容の命令）
命令５−１：  ＭＯＶＢＵ    ＠（８，Ａ０），Ｄ２
（Ａ０レジスタの値に８バイトの偏位を加えた番地にある８ビットデータをロードして３２ビットにゼロ拡張した結果をＤ２レジスタに格納する命令）
命令５−２：  ＥＸＴＢ    Ｄ２
（Ｄ２レジスタの値の下位８ビットを３２ビットに符号拡張した結果をＤ２レジスタに格納する命令）
命令６−１：  ＭＯＶＨ    ＠（１２，Ａ０），Ｄ３
（Ａ０レジスタの値に１２バイトの偏位を加えた番地にある１６ビットデータをロードして３２ビットにゼロ拡張した結果をＤ３レジスタに格納する命令）
命令６−２：  ＥＸＴＨ    Ｄ３
（Ｄ３レジスタの値の下位１６ビットを３２ビットに符号拡張した結果をＤ３レジスタに格納する命令）
このように、アセンブリ言語プログラム１における、８ビットまたは１６ビットのデータをロードして符号拡張する指示は、ロードしてゼロ拡張する命令と符号拡張する命令とに変換される。
【００３２】
図４は、図３の例示プログラムに基づくＲＡＭ１９の内容説明図を示し、ｘ’１０００番地からｘ’１００３番地にデータｘ’１２３４５６７８が、ｘ’１００４番地にデータｘ’ＦＦが、ｘ’１００８番地にデータｘ’ＥＥが、ｘ’１００Ｃ番地からｘ’１００Ｄ番地にデータｘ’ＤＣＢＡが格納されている。ここで、番地はバイト（８ビット）毎に付与され、データは最下位バイトのアドレスでアクセスされるものとする。ｘ’は十六進数を表す。
【００３３】
次に、ＭＥバイパス使用禁止フラグ２５がクリアされている場合の動作を説明する。
図５は、マイクロコンピュータ４の動作タイミング図を示すものである。同図は、図３の機械語プログラムの実行する場合の動作をパイプラインのＩＦステージ、ＤＥＣステージ、ＥＸステージ、ＭＥＭステージ、ＷＢステージで処理される命令をマシンサイクルと呼ばれるタイミング毎に示している。例えば、同図の命令１は、タイミングｔ１からｔ５までを順次パイプラインステージを経て処理される。このような命令の流れを、一般にパイプラインストリームと呼ぶ。以下、時間が経過する順にタイミング毎にその動作を説明する。なお、タイミングｔ１からタイミングｔ９までを図５（ａ）に、タイミングｔ１０からタイミングｔ１７までを図５（ｂ）に示す。また、Ａ０レジスタには初期値ｘ’００００１０００が格納されているものとする。
（タイミングｔ１）
ＩＦステージ：命令１〔ＭＯＶ    ＠（Ａ０），Ｄ０〕
命令１がＲＯＭ５から読出され、Ｉラッチ６に格納される。
（タイミングｔ２）
ＤＥＣステージ：命令１〔ＭＯＶ    ＠（Ａ０），Ｄ０〕
Ｉラッチ６に格納された命令１が命令解読器７で解読され、アドレスレジスタ１０からＡ０レジスタが読出されＤ２セレクタ１２を経由してＤ２ラッチ１４にｘ’００００１０００が格納される。
【００３４】
ＩＦステージ：命令２〔ＡＤＤ    ＃１，Ｄ０〕
命令２がＲＯＭ５から読出され、Ｉラッチ６に格納される。
（タイミングｔ３）
ＥＸステージ：命令１〔ＭＯＶ    ＠（Ａ０），Ｄ０〕
Ｄ２ラッチ１４に格納された値が演算器１５ではそのまま転送され、Ｅセレクタ１７を経由してＥラッチ１８にｘ’００００１０００が格納される。
【００３５】
ＤＥＣステージ：命令２〔ＡＤＤ    ＃１，Ｄ０〕
Ｉラッチ６に格納された命令２が命令解読器７で解読され、Ｉラッチ６に格納された命令２の即値ｘ’０００００００１がＤ１セレクタ１１を経由してＤ１ラッチ１３に格納される。一方、データレジスタ９からＤ０レジスタが読出されＤ２セレクタ１２を経由してＤ２ラッチ１４に格納されるがＤ０レジスタは未定義のためＤ２ラッチ１４の値は不定である。
【００３６】
ＩＦステージ：命令３〔ＭＯＶＢＵ    ＠（４，Ａ０），Ｄ１〕
命令３がＲＯＭ５から読出され、Ｉラッチ６に格納される。
（タイミングｔ４）
ＭＥＭステージ：命令１〔ＭＯＶ    ＠（Ａ０），Ｄ０〕
Ｅラッチ１８に格納された値によりＲＡＭ１９のｘ’１０００番地から３２ビットデータが読出され、Ｍセレクタ２０を経由してＭラッチ２１にｘ’１２３４５６７８が格納される。
【００３７】
ＥＸステージ：ロック
ＤＥＣステージ：ロック
命令解読器７はＤ２セレクタ１２に対してＭＥバイパス２３を選択するよう制御し、Ｍセレクタ２０の出力するｘ’１２３４５６７８がＤ２ラッチ１４に上書きされる。
ＩＦステージ：ロック
（タイミングｔ５）
ＷＢステージ：命令１〔ＭＯＶ    ＠（Ａ０），Ｄ０〕
Ｍラッチ２１に格納された値がゼロ拡張器２２ではそのまま転送され、データレジスタ９のＤ０レジスタにｘ’１２３４５６７８が格納される。
【００３８】
ＭＥＭステージ：なし
ＥＸステージ：命令２〔ＡＤＤ    ＃１，Ｄ０〕
Ｄ１ラッチ１３に格納されたｘ’０００００００１とＤ２ラッチ１４に格納されたｘ’１２３４５６７８が演算器１５で加算され、Ｅセレクタ１７を経由してＥラッチ１８にｘ’１２３４５６７９が格納される。
【００３９】
ＤＥＣステージ：命令３〔ＭＯＶＢＵ    ＠（４，Ａ０），Ｄ１〕
Ｉラッチ６に格納された命令３が命令解読器７で解読され、Ｉラッチ６に格納された命令３の偏位ｘ’０００００００４がＤ１セレクタ１１を経由してＤ１ラッチ１３に格納される。一方、アドレスレジスタ１０からＡ０レジスタが読出されＤ２セレクタ１２を経由してＤ２ラッチ１４にｘ’００００１０００が格納される。
【００４０】
ＩＦステージ：命令４〔ＳＵＢ    ＃１，Ｄ０〕
命令４がＲＯＭ５から読出され、Ｉラッチ６に格納される。
（タイミングｔ６）
ＷＢステージ：なし
ＭＥＭステージ：命令２〔ＡＤＤ    ＃１，Ｄ０〕
Ｍセレクタ２０はＥラッチ１８に格納された値を選択し、Ｍラッチ２１にｘ’１２３４５６７９が格納される。
【００４１】
ＥＸステージ：命令３〔ＭＯＶＢＵ    ＠（４，Ａ０），Ｄ１〕
Ｄ１ラッチ１３に格納されたｘ’０００００００４とＤ２ラッチ１４に格納されたｘ’００００１０００が演算器１５で加算され、Ｅセレクタ１７を経由してＥラッチ１８にｘ’００００１００４が格納される。
ＤＥＣステージ：命令４〔ＳＵＢ    ＃１，Ｄ０〕
Ｉラッチ６に格納された命令４が命令解読器７で解読され、Ｉラッチ６に格納された命令４の即値ｘ’０００００００１がＤ１セレクタ１１を経由してＤ１ラッチ１３に格納される。また、命令解読器７はＤ２セレクタ１２に対してＭＥバイパス２３を選択するよう制御し、Ｍセレクタ２０の出力するｘ’１２３４５６７９がＤ２ラッチ１４に格納される。
【００４２】
ＩＦステージ：命令５−１〔ＭＯＶＢＵ    ＠（８，Ａ０），Ｄ２〕
命令５−１がＲＯＭ５から読出され、Ｉラッチ６に格納される。
（タイミングｔ７）
ＷＢステージ：命令２〔ＡＤＤ    ＃１，Ｄ０〕
Ｍラッチ２１に格納された値がゼロ拡張器２２ではそのまま転送され、データレジスタ９のＤ０レジスタにｘ’１２３４５６７９が格納される。
【００４３】
ＭＥＭステージ：命令３〔ＭＯＶＢＵ    ＠（４，Ａ０），Ｄ１〕
Ｅラッチ１８に格納された値によりＲＡＭ１９のｘ’１００４番地から８ビットデータが読出され、Ｍセレクタ２０を経由してＭラッチ２１にｘ’．．．．．．ＦＦ（．は不定）が格納される。
ＥＸステージ：命令４〔ＳＵＢ    ＃１，Ｄ０〕
演算器１５においてＤ２ラッチ１４に格納されたｘ’１２３４５６７９からＤ１ラッチ１３に格納されたｘ’０００００００１が減算され、Ｅセレクタ１７を経由してＥラッチ１８にｘ’１２３４５６７８が格納される。
【００４４】
ＤＥＣステージ：命令５−１〔ＭＯＶＢＵ    ＠（８，Ａ０），Ｄ２〕
Ｉラッチ６に格納された命令５−１が命令解読器７で解読され、Ｉラッチ６に格納された命令５−１の偏位ｘ’０００００００８がＤ１セレクタ１１を経由してＤ１ラッチ１３に格納される。一方、アドレスレジスタ１０からＡ０レジスタが読出されＤ２セレクタ１２を経由してＤ２ラッチ１４にｘ’００００１０００が格納される。
【００４５】
ＩＦステージ：命令５−２〔ＥＸＴＢ    Ｄ２〕
命令５−２がＲＯＭ５から読出され、Ｉラッチ６に格納される。
（タイミングｔ８）
ＷＢステージ：命令３〔ＭＯＶＢＵ    ＠（４，Ａ０），Ｄ１〕
Ｍラッチ２１に格納された値の下位８ビットがゼロ拡張器２２で３２ビットにゼロ拡張され、データレジスタ９のＤ１レジスタにｘ’００００００ＦＦが格納される。
【００４６】
ＭＥＭステージ：命令４〔ＳＵＢ    ＃１，Ｄ０〕
Ｍセレクタ２０はＥラッチ１８に格納された値を選択し、Ｍラッチ２１にｘ’１２３４５６７８が格納される。
ＥＸステージ：命令５−１〔ＭＯＶＢＵ    ＠（８，Ａ０），Ｄ２〕
Ｄ１ラッチ１３に格納されたｘ’０００００００８とＤ２ラッチ１４に格納されたｘ’００００１０００が演算器１５で加算され、Ｅセレクタ１７を経由してＥラッチ１８にｘ’００００１００８が格納される。
【００４７】
ＤＥＣステージ：命令５−２〔ＥＸＴＢ    Ｄ２〕
Ｉラッチ６に格納された命令５−２が命令解読器７で解読され、データレジスタ９からＤ２レジスタが読出されＤ１セレクタ１１を経由してＤ１ラッチ１３に格納されるがＤ２レジスタは未定義のためＤ１ラッチ１３の値は不定である。命令解読器７は、命令５−１のＷＢステージが終了するまで、即ち次のタイミングｔ９とタイミングｔ１０でのＩＦ，ＤＥＣ，ＥＸステージでのパイプラインのフローを停止する。
【００４８】
ＩＦステージ：命令６−１〔ＭＯＶＨ    ＠（１２，Ａ０），Ｄ３〕
命令６−１がＲＯＭ５から読出され、Ｉラッチ６に格納される。
（タイミングｔ９）
ＷＢステージ：命令４〔ＳＵＢ    ＃１，Ｄ０〕
Ｍラッチ２１に格納された値がゼロ拡張器２２ではそのまま転送され、データレジスタ９のＤ０レジスタにｘ’１２３４５６７８が格納される。
【００４９】
ＭＥＭステージ：命令５−１〔ＭＯＶＢＵ    ＠（８，Ａ０），Ｄ２〕
Ｅラッチ１８に格納された値によりＲＡＭ１９のｘ’１００８番地から８ビットデータが読出され、Ｍセレクタ２０を経由してＭラッチ２１にｘ’．．．．．．ＥＥ（．は不定）が格納される。
ＥＸステージ：ロック
ＤＥＣステージ：ロック
ＩＦステージ：ロック
（タイミングｔ１０）
ＷＢステージ：命令５−１〔ＭＯＶＢＵ    ＠（８，Ａ０），Ｄ２〕
Ｍラッチ２１に格納された値の下位８ビットがゼロ拡張器２２で３２ビットにゼロ拡張され、データレジスタ９のＤ２レジスタにｘ’００００００ＥＥが格納される。
【００５０】
ＭＥＭステージ：なし
ＥＸステージ：ロック
ＤＥＣステージ：ロック
命令解読器７はＤ１セレクタ１１に対してＷＥバイパス２４を選択するよう制御し、ゼロ拡張器２２の出力するｘ’００００００ＥＥがＤ１ラッチ１３に上書きされる。
【００５１】
ＩＦステージ：ロック
（タイミングｔ１１）
ＷＢステージ：なし
ＭＥＭステージ：なし
ＥＸステージ：命令５−２〔ＥＸＴＢ    Ｄ２〕
Ｄ１ラッチ１３に格納された値の下位８ビットが符号拡張器１６で３２ビットに符号拡張され、Ｅセレクタ１７を経由してＥラッチ１８にｘ’ＦＦＦＦＦＦＥＥが格納される。
【００５２】
ＤＥＣステージ：命令６−１〔ＭＯＶＨ    ＠（１２，Ａ０），Ｄ３〕
Ｉラッチ６に格納された命令６−１が命令解読器７で解読され、Ｉラッチ６に格納された命令６−１の偏位ｘ’０００００００ＣがＤ１セレクタ１１を経由してＤ１ラッチ１３に格納される。一方、アドレスレジスタ１０からＡ０レジスタが読出されＤ２セレクタ１２を経由してＤ２ラッチ１４にｘ’００００１０００が格納される。
【００５３】
ＩＦステージ：命令６−２〔ＥＸＴＨ    Ｄ３〕
命令６−２がＲＯＭ５から読出され、Ｉラッチ６に格納される。
（タイミングｔ１２）
ＷＢステージ：なし
ＭＥＭステージ：命令５−２〔ＥＸＴＢ    Ｄ２〕
Ｍセレクタ２０はＥラッチ１８に格納された値を選択し、Ｍラッチ２１にｘ’ＦＦＦＦＦＦＥＥが格納される。
【００５４】
ＥＸステージ：命令６−１〔ＭＯＶＨ    ＠（１２，Ａ０），Ｄ３〕
Ｄ１ラッチ１３に格納されたｘ’０００００００ＣとＤ２ラッチ１４に格納されたｘ’００００１０００が演算器１５で加算され、Ｅセレクタ１７を経由してＥラッチ１８にｘ’００００１００Ｃが格納される。
ＤＥＣステージ：命令６−２〔ＥＸＴＨ    Ｄ３〕
Ｉラッチ６に格納された命令６−２が命令解読器７で解読され、データレジスタ９からＤ３レジスタが読出されＤ１セレクタ１１を経由してＤ１ラッチ１３に格納されるがＤ３レジスタは未定義のためＤ１ラッチ１３の値は不定である。命令解読器７は、命令６−１のＷＢステージが終了するまで、即ち次のタイミングｔ１３とタイミングｔ１４でのＩＦ，ＤＥＣ，ＥＸステージでのパイプラインのフローを停止する。
（タイミングｔ１３）
ＷＢステージ：命令５−２〔ＥＸＴＢ    Ｄ２〕
Ｍラッチ２１に格納された値がゼロ拡張器２２ではそのまま転送され、データレジスタ９のＤ２レジスタにｘ’ＦＦＦＦＦＦＥＥが格納される。
【００５５】
ＭＥＭステージ：命令６−１〔ＭＯＶＨ    ＠（１２，Ａ０），Ｄ３〕
Ｅラッチ１８に格納された値によりＲＡＭ１９のｘ’１００Ｃ番地から１６ビットデータが読出され、Ｍセレクタ２０を経由してＭラッチ２１にｘ’．．．．ＤＣＢＡ（．は不定）が格納される。
ＥＸステージ：ロック
ＤＥＣステージ：ロック
ＩＦステージ：ロック
（タイミングｔ１４）
ＷＢステージ：命令６−１〔ＭＯＶＨ    ＠（１２，Ａ０），Ｄ３〕
Ｍラッチ２１に格納された値の下位１６ビットがゼロ拡張器２２で３２ビットにゼロ拡張され、データレジスタ９のＤ３レジスタにｘ’００００ＤＣＢＡが格納される。
【００５６】
ＭＥＭステージ：なし
ＥＸステージ：ロック
ＤＥＣステージ：ロック
命令解読器７はＤ１セレクタ１１に対してＷＥバイパス２４を選択するよう制御し、ゼロ拡張器２２の出力するｘ’００００ＤＣＢＡがＤ１ラッチ１３に上書きされる。
【００５７】
ＩＦステージ：ロック
（タイミングｔ１５）
ＷＢステージ：なし
ＭＥＭステージ：なし
ＥＸステージ：命令６−２〔ＥＸＴＨ    Ｄ３〕
Ｄ１ラッチ１３に格納された値の下位１６ビットが符号拡張器１６で３２ビットに符号拡張され、Ｅセレクタ１７を経由してＥラッチ１８にｘ’ＦＦＦＦＤＣＢＡが格納される。
（タイミングｔ１６）
ＷＢステージ：なし
ＭＥＭステージ：命令６−２〔ＥＸＴＨ    Ｄ３〕
Ｍセレクタ２０はＥラッチ１８に格納された値を選択し、Ｍラッチ２１にｘ’ＦＦＦＦＤＣＢＡが格納される。
（タイミングｔ１７）
ＷＢステージ：命令６−２〔ＥＸＴＨ    Ｄ３〕
Ｍラッチ２１に格納された値がゼロ拡張器２２ではそのまま転送され、データレジスタ９のＤ３レジスタにｘ’ＦＦＦＦＤＣＢＡが格納される。
【００５８】
次に、ＭＥバイパス使用禁止フラグ２５がセットされている場合を示す。動作タイミング図を図６に示すが、図５のタイミングｔ５が図６のタイミングｔ５１とタイミングｔ５２とに代わる点を以外は両者は同一であるため、ＭＥバイパス使用禁止フラグ２５がクリアされている場合と異なる部分のみを記す。
（タイミングｔ４）
ＤＥＣステージ：ロック
ＭＥバイパス２３の選択はしない。
（タイミングｔ５１）
ＷＢステージ：命令１〔ＭＯＶ    ＠（Ａ０），Ｄ０〕
Ｍラッチ２１に格納された値がゼロ拡張器２２ではそのまま転送され、データレジスタ９のＤ０レジスタにｘ’１２３４５６７８が格納される。
【００５９】
ＭＥＭステージ：なし
ＥＸステージ：ロック
ＤＥＣステージ：ロック
命令解読器７はＤ２セレクタ１２に対してＷＥバイパス２４を選択するよう制御し、ゼロ拡張器２２の出力するｘ’１２３４５６７８がＤ２ラッチ１４に上書きされる。
【００６０】
ＩＦステージ：ロック
（タイミングｔ５２）
ＷＢステージ：なし
ＭＥＭステージ：なし
ＥＸステージ：命令２〔ＡＤＤ    ＃１，Ｄ０〕
Ｄ１ラッチ１３に格納されたｘ’０００００００１とＤ２ラッチ１４に格納されたｘ’１２３４５６７８が演算器１５で加算され、Ｅセレクタ１７を経由してＥラッチ１８にｘ’１２３４５６７９が格納される。
【００６１】
ＤＥＣステージ：命令３〔ＭＯＶＢＵ    ＠（４，Ａ０），Ｄ１〕
Ｉラッチ６に格納された命令３が命令解読器７で解読され、Ｉラッチ６に格納された命令３の偏位ｘ’０００００００４がＤ１セレクタ１１を経由してＤ１ラッチ１３に格納される。一方、アドレスレジスタ１０からＡ０レジスタが読出されＤ２セレクタ１２を経由してＤ２ラッチ１４にｘ’００００１０００が格納される。
【００６２】
ＩＦステージ：命令４〔ＳＵＢ    ＃１，Ｄ０〕
命令４がＲＯＭ５から読出され、Ｉラッチ６に格納される。
以上のように本実施の形態によれば、ゼロ拡張器２２における拡張をＲＡＭ１９をアクセスするＭＥＭステージとは異なるＷＢステージで行っている。ＷＢステージは他にレジスタファイル８への格納を行っているのみでゼロ拡張器２２の処理が加わっても他のステージと比べて処理時間が短く、さらにゼロ拡張器２２が遅延時間が比較的小さいゼロ拡張だけに限定されるためにＷＢステージの処理時間の増加を抑えることができる。その上、ＲＡＭ１９から読出したデータを後続の命令で使う場合でも、レジスタファイル８に格納された該データをＤＥＣステージにおいて読出すのではなく、Ｄ１セレクタ１１およびＤ２セレクタ１２によりＭＥＭステージまたはＷＢステージの結果からＭＥバイパス２３またはＷＥバイパス２４を経由して直接に該データを得るため、８ビットまたは１６ビットデータの読出し後の使用については１マシンサイクル、最も頻度の高い３２ビットデータの読出し後の使用については１または２マシンサイクルのパイプラインの待ち時間を短縮できる。さらに、ＭＥバイパス使用禁止フラグ２５をセットすることによりＤ１セレクタ１１およびＤ２セレクタ１２の遅延時間をＭＥＭステージに挿入されないように指定することが可能で、ＭＥＭステージの処理時間を短縮し動作周波数の上限をさらに高めることができる。
【００６３】
なお、本実施の形態では、ＷＢステージにゼロ拡張器２２を配しているが、これを削除して符号拡張器１６を符号拡張とともにゼロ拡張可能な拡張器に代え、アセンブラ３においてゼロ拡張を伴うロード命令（例えば図３の命令３）をロード命令とゼロ拡張命令（例えば図３の命令５−２や命令６−２に相当するＥＸＴＢＵ命令やＥＸＴＨＵ命令）とに分けて変換するようにしてもよい。このロード命令では拡張を行わず、レジスタの上位には無効な値を書き込むか書き換えないようにすればよい。これにより従来の技術に比べ、ＲＡＭ１９のアクセスと該拡張器における拡張とを単一命令において直列に動作させる必要がなくなる。
【００６４】
また、本実施の形態では、ＷＢステージにゼロ拡張器２２を配しているが、これを従来と同様にＭＥＭステージのＭセレクタ２０の後に配置するだけでもよい。これにより従来の技術に比べ、単一命令において直列に動作させる必要があるのはＲＡＭ１９のアクセスと遅延時間が比較的小さいゼロ拡張器２２だけに限定される。
【００６５】
また、本実施の形態では、ＥＸステージに符号拡張器１６を配しているが、これを削除してゼロ拡張器２２をゼロ拡張とともに符号拡張可能な拡張器に代え、アセンブラ３における拡張を伴うロード命令の２命令へ分割する変換を符号拡張およびゼロ拡張ともに行わないようにしてもよい。これにより従来の技術に比べ、該拡張器における拡張をＲＡＭ１９のアクセスとは別で他のステージと比べて処理量が少ないＷＢステージにおいて行うことができる。
【００６６】
また、本実施の形態では、ＭＥバイパス２３およびＷＥバイパス２４を設けＤ１セレクタ１１およびＤ２セレクタ１２においてそれらを選択するようにしているが、これらの機能を削除して、ＲＡＭ１９から読出され場合により拡張されたデータは必ずレジスタファイル８に書き込まれた後、ＤＥＣステージにおいてレジスタファイル８から読出すようにしてもよい。これにより、上記記載の実施の形態に比べてパイプラインの待ち時間は増加するものの、従来の技術に比べると、ゼロ拡張器２２における拡張をＲＡＭ１９のアクセスとは別で他のステージと比べて処理量が少ないＷＢステージにおいて行い、さらに該拡張が遅延時間が比較的小さいゼロ拡張だけに限定されるためにＷＢステージの処理時間の増加を抑えることができる。
【００６７】
また本実施の形態では、ＭＥバイパス使用禁止フラグ２５を設けこの内容によりＤ１セレクタ１１およびＤ２セレクタ１２におけるＭＥバイパス２３の選択を制御しているが、これらの機能を削除して、ＲＡＭ１９から読出された３２ビットデータの読出し後の使用については、常にＭＥバイパス２３を選択するように固定するかもしくは常に選択しないように固定するようにしてもよい。
【００６８】
さらにＭＥバイパス使用禁止フラグ２５は、上記実施の形態では、動作クロックの周波数に応じて設定されているが、供給される電源電圧に応じて設定するようにしてもよい。例えば、電源電圧が５Ｖの場合と３．３Ｖの場合とでは、前者の方が回路全般の遅延時間が小さいのでより高速動作が可能になる。そこで、本データ処理装置が組み込まれる装置において、定電圧モード、低消費電力モードなどを有する場合にモードに応じてＭＥバイパス使用禁止フラグ２５を設定すればよい。
【００６９】
また、本実施の形態では、アセンブラ３により拡張付きロード命令を、拡張なしロード命令とゼロ拡張命令又は符号拡張命令とに変換しているが、この変換機能をマイクロコンピュータ４の内部に設けてもよい。その場合、Ｉラッチ６又は命令解読器７の直前に、あるいは命令解読器７の内部に当該変換機能をもつ変換器を備える構成とすればよい。また、コンパイラに当該変換機能を持たせてもよい。
【００７０】
なお、上記実施の形態では、レジスタファイル８などのビット幅を３２ビットとし、８ビットや１６ビットのデータをＲＡＭ１９から読出して拡張しているが、レジスタファイル８などのビット幅を１６ビットとし、８ビットのデータをＲＡＭ１９から読出して拡張する場合や、レジスタファイル８などのビット幅を６４ビットとし、８ビットや１６ビットや３２ビットのデータをＲＡＭ１９から読出して拡張する場合も全く同様に構成すればよい。
【００７１】
【発明の効果】
以上説明してきたように本発明に係るデータ処理装置は、レジスタ長より短いデータを記憶部から読み出す第１処理と当該データをレジスタ長にゼロ拡張又は符号拡張してレジスタに格納する第２処理とを指示する拡張付きロード命令に対して、第１処理が実行されるパイプラインストリームと異なるパイプラインストリームを挿入し、第２処理におけるゼロ拡張又は符号拡張を実行する構成を備える。この構成によれば、最も処理時間が長かった記憶部の読み出しを行うパイプラインステージ又はパイプラインストリームとは異なるパイプラインステージ又はパイプラインストリームにおいて拡張処理を行うので、パイプラインの各ステージの処理時間の均等化を図り、かつできるだけ短くすることができ、その結果、動作周波数の上限を高め性能が向上することができ、もしくは同一の動作周波数ならばメモリアクセス時間を長くすることができる分だけコストを低減できるという効果が得られる。
【００７２】
前記データ処理装置は、さらに記憶部のデータ読み出しが実行されるパイプラインステージから、当該データを使用する後続命令の演算実行がなされるパイプラインステージに当該データをバイパスするバイパス手段と、所定の条件に応じて前記バイパス手段によるバイパスを禁止する禁止手段とを備える。この構成によれば、バイパスによる遅延時間の分だけさらに記憶部を読み出すパイプラインステージの処理時間を短縮できる。
【００７３】
また、前記禁止手段が、データ処理装置の動作クロック周波数、供給される電源電圧、およびロード命令の種類の少なくとも１つに応じて前記バイパス手段によるバイパスを禁止する構成によれば、周波数の上限を向上させ、あるいは低電圧でも動作させることができる。
また、データ処理装置が、前記拡張付きロード命令を、前記第１処理を指示するロード命令と前記第２処理を指示する拡張命令とに変換する変換手段を備える構成によれば、第２処理におけるゼロ拡張又は符号拡張を、第１処理とは異なるパイプラインストリームで実行するので、第１処理の記憶部のデータ読み出しを実行するパイプラインステージの処理時間を短縮することができる。
【００７４】
また、データ処理装置が、前記第１処理における読み出しが実行されるパイプラインステージ以外のステージにおいて前記第２処理におけるゼロ拡張又は符号拡張を行う拡張器を備える構成によれば、第２処理におけるゼロ拡張又は符号拡張を、第１処理における読み出しが実行されるパイプラインステージとは異なるパイプラインステージで実行するので、第１処理の読み出しを実行するプラインステージの処理時間を短縮することができる。
【００７５】
さらに、本発明のデータ処理装置は、レジスタ長より短いデータを記憶部から読み出し当該データをゼロ拡張又は符号拡張してレジスタに格納する拡張付きロード命令を、レジスタ長より短いデータをメモリから読み出してレジスタの下位に格納するロード命令と、当該ロード命令に従ってロードされたデータをゼロ拡張又は符号拡張することを指示する拡張命令とに変換する変換手段と、前記ロード命令を解読した場合、メモリアクセスステージにおいて記憶部からのデータ読み出しのみを行って、ライトバックステージにおいて当該データをレジスタの下位に格納する制御を行い、前記拡張命令を解読した場合、何れかのパイプラインステージにおいて当該レジスタデータをゼロ拡張又は符号拡張する制御を行う命令解読手段とを備える。この構成によれば、最も処理時間が長かったメモリアアクセステージでは拡張処理を行わないで、拡張処理を他の処理時間の短いステージにて行うので、パイプラインの各ステージの処理時間が均等でかつできるだけ短くすることができ、その結果、動作周波数の上限を高め性能が向上するかもしくは同一の動作周波数ならばメモリアクセス時間を長くすることができる分だけコストや消費電力を低減できるという効果が得られる。
【００７６】
また、データ処理装置が、命令実行ステージ又はメモリアクセスステージにおいてレジスタ長より短いデータを符号拡張する符号拡張器を備える構成によれば、拡張付きロード命令のうち、符号付き拡張命令のみを変換すればよく、変換後のロード命令による記憶部のデータ読み出しを実行するパイプラインステージの処理時間を短縮することができる。また、ゼロ拡張器より遅延時間が大きい符号拡張器について、５段程度のパイプライン処理においては処理時間の均等化を図る好適なステージで符号拡張を実行させることができ、クロック周波数の上限を向上させることができる。
【００７７】
また、前記データ処理装置が、メモリアクセスステージ又はライトバックステージにおいてレジスタ長より短いデータをレジスタ長にゼロ拡張するゼロ拡張器を備え、前記命令解読手段は、前記ゼロ拡張命令を解読した場合、当該命令のメモリアクセスステージにおいて記憶装置からのデータ読み出しを行い、さらに前記ゼロ拡張器によりゼロ拡張する制御を行い、前記符号拡張命令を解読した場合、当該命令で指定されたデータを前記符号拡張器により符号拡張する制御を行う構成によれば、符号拡張に比べてゼロ拡張の処理時間が短いので、ゼロ拡張付きロード命令を変換する必要しないて単一の命令として実行でき、しかも記憶部のデータ読み出しを実行するパイプラインステージの処理時間を短縮することができる。
【００７８】
さらに、前記データ処理装置が、さらに先行する命令のメモリアクセスステージにおいて読み出されたデータを、当該データを使用する後続命令の命令実行ステージへバイパスする第１バイパス手段と、先行する命令のライトバックステージにおいてレジスタに書き込むべきデータを、当該データを使用する後続命令の命令実行ステージへバイパスする第２バイパス手段とを備え、前記命令解読手段が、前記先行する命令が前記ゼロ拡張付きロード命令以外のロード命令である場合には第１バイパス手段を起動し、前記先行する命令が前記ゼロ拡張付きロード命令である場合には第２バイパス手段を起動するバイパス制御手段を備える構成によれば、ロード命令の種類に応じてバイパスを有効に使い分けることができる。
【００７９】
また、データ処理装置が、さらに第１バイパス手段によるバイパスを禁止する禁止手段を備え、前記バイパス制御手段は、さらに、第１バイパス手段が禁止されている場合には、第１のバイパス手段の代わりに第２バイパス手段を起動する。この構成によれば、第１バイパスの禁止によりクロック周波数の向上を図るだけでなく、第１バイパスの禁止により生じるペナルティ（インターロック）を、第２バイパス機能を代替えするので、１ステージ分に抑えることができる。
【００８０】
さらに、禁止手段が、前記データ処理装置の動作クロックの周波数と供給される電源電圧との少なくとも一方に応じて前記第１のバイパス手段を禁止する構成によれば、第１バイパスによる遅延時間分だけさらに第４ステージの処理時間が短縮できるので、さらに動作クロック周波数の上限を向上させ、あるいは低電圧でも動作させることができる。
【００８１】
また、本発明のデータ処理装置は、ライトバックステージにおいてレジスタ長より短いデータをレジスタ長にゼロ拡張又は符号拡張する拡張器と、レジスタ長より短いデータを記憶部から読み出し当該データをレジスタ長にゼロ拡張又は符号拡張してレジスタに格納する単一の拡張付きロード命令を解読した場合に、メモリアクセスステージにおいて記憶部からのデータ読み出しのみを行って、ライトバックステージにおいて当該データをレジスタ長にゼロ拡張又は符号拡張を行ってレジスタに格納する制御を行う命令解読手段とを備えている。この構成によれば、前記プログラム中にゼロ拡張又は符号拡張付きロード命令が使用されている場合であっても、メモリアクセスステージの処理時間が短くなる分動作クロックの上限を向上させることができる
また、前記データ処理装置が、さらに  先行する命令のメモリアクセスステージにおいて読み出されたデータを、当該データを使用する後続命令の命令実行ステージへバイパスする第１バイパス手段と、先行する命令のライトバックステージにおいてゼロ拡張又は符号拡張されたデータを、当該データを使用する後続命令の命令実行ステージへバイパスする第２バイパス手段とを備え、前記命令解読手段は、前記先行する命令が前記拡張付きロード命令以外のロード命令である場合には、第１バイパス手段を起動し、前記先行する命令が前記拡張付きロード命令である場合には、第２バイパス手段を起動するバイパス制御手段を備える構成によれば、ロード命令の種類に応じてバイパスを有効に使い分けることができる。
【００８２】
さらに前記データ処理装置が、さらに第１バイパス手段によるバイパスを禁止する禁止手段を備え、前記バイパス制御手段は、さらに、第１のバイパス手段が禁止されている場合には、第１のバイパス手段の代わりに第２のバイパス手段を起動する構成によれば、第１バイパスの禁止によりクロック周波数の向上を図るだけでなく、第１バイパスの禁止により生じるペナルティ（インターロック）を、第２バイパス機能を代替えすることにより１ステージ分に抑えることができる。
【００８３】
また、前記禁止手段が、前記データ処理装置の動作クロックの周波数と供給電圧値の少なくとも一方に応じて前記第１のバイパス手段によるバイパスを禁止する構成によれば、動作クロックの周波数と供給電圧値に応じて好適な性能を発揮することができる。
また、本発明のデータ処理装置は、第１ステージにおいて命令フェッチ処理を行う第１処理部と、第２ステージにおいて命令解読及びレジスタ読み出し処理を行う第２処理部と、第２処理部で処理されたデータを第３ステージに受け渡すＡラッチと、Ａラッチのデータに演算を施す演算器と、Ａラッチのデータを符号拡張する符号拡張回路と、演算結果と符号拡張結果との何れかを選択する第３セレクタとを有し、第３ステージにおいて命令実行およびオペランドアドレス算出を処理する第３処理部と、第３セレクタ出力を第４ステージへ受け渡すＢラッチと、Ｂラッチ出力をアドレスとして前記メモリをアクセスするアクセス手段と、Ｂラッチ出力とアクセス手段にアクセスされたメモリデータとの何れかを選択する第４セレクタとを有し、第４ステージにおいてメモリ読み出しを行う第４処理部と、第４セレクタ出力を第５ステージへ受け渡すＣラッチと、Ｃラッチ出力をゼロ拡張するゼロ拡張回路と、Ｃラッチ出力又はゼロ拡張結果をレジスタに書き込む書き込み手段とを有し、第５ステージでレジスタ書き込みを行う第５処理部と、前記第４セレクタ出力を前記Ａラッチにバイパスする第１バイパス手段と、前記ゼロ拡張回路の出力を前記Ａラッチにバイパスする第２バイパス手段と所定の条件に応じて前記バイパス手段を禁止する禁止手段とを備える。この構成によれば、第４ステージでは拡張を実行しないので、最も処理時間が長かった第４ステージの処理時間を短縮することができる。さらに、第１バイパスの禁止により第４ステージの処理時間をバイパスの遅延時間だけさらに短縮することができる。また第１バイパスを禁止した場合に第２バイパスを代替えすれば、バイパス機能を有効利用することができる。
【００８４】
さらに、前記禁止手段が、データ処理装置の動作クロック周波数と電源電圧値との一方に応じて第１バイパス手段を禁止する構成によれば、周波数の上限を向上させ、あるいは低電圧でも動作させることができる。
また、前記データ処理装置が、さらに前記ロード命令及び前記拡張命令の指示内容を併せ持つ単一の拡張付きロード命令を、前記ロード命令と前記拡張命令とに変換する変換手段を備える構成によれば、第３ステージにおいて符号拡張を実行するので、最も処理時間が長かった第４ステージの処理時間を短縮することができる。
【図面の簡単な説明】
【図１】本発明の一実施の形態におけるデータ処理装置の概略構成図である。
【図２】同実施の形態によるマイクロコンピュータ４のブロック図である。
【図３】同実施の形態によるプログラム例を示す。
【図４】プログラム例に基づくＲＡＭ１９の内容説明図である。
【図５】例示プログラムに基づくマイクロコンピュータ４の動作タイミング図である。
【図６】図３の例示プログラムに基づくマイクロコンピュータ４の動作タイミング図である。
【図７】従来のデータ処理装置としてのマイクロコンピュータのブロック図である。
【符号の説明】
１  アセンブリ言語プログラム
２  データ処理装置
３  アセンブラ
４  マイクロコンピュータ
５  ＲＯＭ
６  Ｉラッチ
７  命令解読器
８  レジスタファイル
９  データレジスタ
１０  アドレスレジスタ
１１  Ｄ１セレクタ
１２  Ｄ２セレクタ
１３  Ｄ１ラッチ
１４  Ｄ２ラッチ
１５  演算器
１６  符号拡張器
１７  Ｅセレクタ
１８  Ｅラッチ
１９  ＲＡＭ
２０  Ｍセレクタ
２１  Ｍラッチ
２２  ゼロ拡張器
２３  ＭＥバイパス
２４  ＷＥバイパス
２５  ＭＥバイパス使用禁止フラグ
【図１】
0003546980.tif 000002
【図２】
0003546980.tif 000003
【図３】
0003546980.tif 000004
【図４】
0003546980.tif 000005
【図５】
0003546980.tif 000006
【図６】
0003546980.tif 000007
【図７】
0003546980.tif 000008