(57)【要約】【課題】パイプライン処理に関わる回路の命令移行時の動作遷移確率を低減することができ、それらの回路の消費電力について全消費電力に対する割合を低くして、全消費電力を低減化することができるマイクロプロセッサを提供する。【解決手段】オペレーションコードの多重化とオペランドの反転処理により、ＲＯＭ５００からの命令移行時に、その移行前後で、命令デコーダ４００内でパイプライン処理の際に生成されるオペレーションコード相互、およびオペランド相互のビット遷移率を低くして、命令デコーダ４００内のパイプライン処理に関わる回路の動作遷移確率の低減を可能にする。【選択図】　　図５
2004127139.tif 000002
【特許請求の範囲】
【請求項１】
メモリに格納されたオペレーションコードとオペランドからなる命令プログラムに対して、パイプライン処理により、前記オペレーションコードと前記オペランドをフェッチして解読し、その解読結果に基づいて前記命令プログラムを実行するマイクロプロセッサであって、前記命令プログラムを構成する各命令に対応して、同一の動作を実行する複数のオペレーションコードを有することを特徴とするマイクロプロセッサ。
【請求項２】
前記オペランドが反転データかどうかの認識信号として、前記オペレーションコードおよび前記オペランドの他に付加ビットを有することを特徴とする請求項１記載のマイクロプロセッサ。
【請求項３】
前記付加ビットによって前記オペランドが反転データであることを示された場合、前記パイプライン処理を実行する命令デコーダ以外では、前記オペランドをさらに反転し反転前の状態に戻して処理することを特徴とする請求項２記載のマイクロプロセッサ。
【請求項４】
前記オペランドが反転データかどうかを認識可能な認識信号を、前記オペレーションコードの一部に有することを特徴とする請求項１記載のマイクロプロセッサ。
【請求項５】
前記命令プログラムに従った前記オペレーションコードの移行時に、先行のオペレーションコードと次のオペレーションコードとの間のビット遷移確率が高い場合、前記同一の動作を実行する複数のオペレーションコードの中から遷移確率が低減するような最適なオペレーションコードを選択する手段を備えたことを特徴とする請求項１記載のマイクロプロセッサ。
【請求項６】
前記オペレーションコードと前記オペランドとの間のビット遷移確率が高い場合、前記付加ビットの状態に基づいて前記オペランドを反転する手段を備えた請求項２記載のマイクロプロセッサ。
【請求項７】
前記オペレーションコードと前記オペランドとの間のビット遷移確率が高い場合、前記同一の動作を実行する複数のオペレーションコードの中から遷移確率が低減するような最適なオペレーションコードを選択する手段を備えた請求項１記載のマイクロプロセッサ。
【請求項８】
コンパイラなどによって生成されたＲＯＭコードデータを、オペレーションコード−オペレーションコード間、オペレーションコード−オペランド間、およびオペランド内の遷移確率が最少となるような複数の前記オペレーションコードの選択およびオペランド反転によってコード置換し、その置換コードをＲＯＭに再配置するよう構成したことを特徴とする請求項１から４のいずれかに記載のマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＲＯＭ等のメモリ上の命令プログラムに対し、パイプライン処理によりフェッチ、解読および実行するマイクロプロセッサに関するものである。
【０００２】
【従来の技術】
一般的に、マイクロプロセッサは、ＲＯＭなどのメモリからの命令に対するフェッチ、解読、実行という常に動作しているパイプライン処理を行っている。このマイクロプロセッサにおいて、命令フェッチ、解読、実行という常に動作しているパイプライン処理に関わる回路の動作遷移確率は大きく、これらパイプライン処理は電力消費の大きな処理機能の一つとなっている。
【０００３】
このようなマイクロプロセッサ（例えば、特許文献１を参照）においては、実行プログラムのマシンコードの組み合わせを工夫して処理の煩雑化を改善し電力消費を軽減するようにプログラミングを行っているが、このように工夫してプログラミングを行っているつもりでも、逆にプログラム実行の際の処理サイクルが増加したり、プログラム効率が悪化して、結果的に消費電力の低減化が充分に得られていない場合がある。
【０００４】
以上のような従来のマイクロプロセッサについて、以下に説明する。
図１は従来のマイクロプロセッサとして一般的なマイクロプロセッサの概略構成を示すブロック図である。図１において、１００はＣＰＵであり、ＲＯＭ５００などの外部回路とはバスを介して接続される。ＣＰＵ１００は、命令デコーダ４００と、データパス３００と、バスインターフェイス２００から構成され、外部回路に対してあるいはＣＰＵ内部でのデータのやり取りは、バスインターフェイス２００を介して行う。
【０００５】
次に、上記のように構成されたマイクロプロセッサについて、その一般的な動作を以下に説明する。
まず、ＲＯＭ５００から入力されたデータは、バスインターフェイス２００を経由して、命令デコーダ４００内のインストラクションフェッチバッファ４０１に取り込まれ、その後、例えば８ビット構成のオペレーションコードとオペランドに分割される。
【０００６】
インストラクションフェッチバッファ４０１から出力されたオペレーションコードは、インストラクションレジスタ４０２に入力された後、オペレーションコード変換回路４０３に解読され、マイクロコードとしてバスインターフェイス２００、データパス３００、命令デコーダ４００の各構成ブロックへ供給され、各構成ブロックは、入力されたマイクロコードに従った処理動作を実行する。
【０００７】
また、インストラクションフェッチバッファ４０１から出力されたオペランドは、インストラクションフェッチバッファ４０１から出力されマイクロコードに従って、データパス３００あるいはデータレジスタ６００やアドレスレジスタ７００などへ伝達される。
【０００８】
以上のような従来のマイクロプロセッサで実行される命令マップについて以下に説明する。
図２は従来のマイクロプロセッサで実行される命令マップである。なお、ここでは例として、数命令のみをマップ上に配置している。また、図３および図６は実行プログラム例である。
【０００９】
図３（ａ）の９００、９０１は図２の命令マップ上に記載の命令およびマシンコードであり、図３（ｂ）の９０３、９０４、９０５は図３（ａ）の９００および９０１を用いたプログラム例を示す。また、図６（ａ）の９１０、９１１は図２の命令マップ上に記載の命令およびマシンコードである。図６（ｂ）の９１２、９１３、９１４、９１５は図６（ａ）の９１０および９１１を用いたプロクラム例を示す。なお、命令フォーマットは８ビットのオペレーションコードと８ビット×ｎのオペランドで構成されるものとする。
【００１０】
図３（ｂ）の９０３、９０４、９０５の各マシンコードは、図１のＲＯＭ５００から順にインストラクションフェッチバッファ４０１に入力し、すべてオペレーションコードとして、インストラクションレジスタ４０２を経由し、オペレーションコード変換回路４０３に入力されパイプライン処理される。
【００１１】
９０３から９０４にかけて、インストラクションフェッチバッファ４０１およびインストラクションレジスタ４０２は、オペレーションコードが‘１１１０１０００’から‘１１１０１０１１’に変わることにより、８ビットのうち２ビットが‘０’から‘１’に遷移する。一方、９０４から９０５にかけては、‘１１１０１０１１’から‘０００００１１０’に変化することにより、‘０’から‘１’あるいは‘１’から‘０’に合計６ビットが遷移することになる。
【００１２】
また、図６（ｂ）に示すプログラム例では、９１２から９１３にかけて、オペレーションコードは‘１０００００１０’から‘１０００００００’に変化することにより、１ビットのみが遷移する。一方、９１３から９１４では、オペレーションコード‘１０００００００’とオペランド‘１１１１１１１１’の間で、７ビットの遷移が発生する。
【００１３】
【特許文献１】
特開平１１−８５３３６号公報
【００１４】
【発明が解決しようとする課題】
しかしながら上記のような従来のマイクロプロセッサにおいては、ＲＯＭデータのフェッチからデコードまでのパイプライン処理は常に動作する処理であり、また、ＲＯＭデータの移行時には、その移行に従ってパイプライン処理におけるオペレーションコードは常に変化するため、この処理に関わる回路は、最も動作遷移確率が高くなる。
【００１５】
これによって、パイプライン処理に関わる回路は、動作状態の変化すなわちビット遷移による電圧レベルのＨ／Ｌ変化が頻繁に起こるため、その回路での電力消費は、全消費電力に占める割合が大きくなり、全体の消費電力量を増大させてしまうという問題点を有していた。
【００１６】
本発明は、上記従来の問題点を解決するもので、パイプライン処理に関わる回路の命令移行時の動作遷移確率を低減することができ、それらの回路の消費電力について全消費電力に対する割合を低くして、全消費電力を低減化することができるマイクロプロセッサを提供する。
【００１７】
【課題を解決するための手段】
上記の課題を解決するために本発明のマイクロプロセッサは、命令プログラムの各命令に対応し、全く同じ処理動作を行う複数のオペレーションコードを有することを特徴とする。
【００１８】
以上により、プログラム開発においてオペレーションコードの変化によるビット遷移確率が高くならないように、複数のオペレーションコードから最適なコードを選択することができるため、従来電力消費の大きかったパイプライン制御回路において動作遷移確率を低減し、プロセッサの低消費電力化を実現することができる。
【００１９】
また、本発明のマイクロプロセッサは、オペレーションコードとオペランド間の遷移確率を低減するため、オペランドを反転させても反転しない場合と同様の動作が実現できるように、反転認識用として付加ビットを、オペレーションコードおよびオペランドに保持させることを特徴とする。
【００２０】
また、本発明のマイクロプロセッサは、反転したオペランドに対して、命令デコーダ以外では、付加ビットによって元に戻したデータとして扱う構造としたことを特徴とする。
【００２１】
以上により、先行のオペレーションコードと次サイクルのオペレーションコード間での遷移だけでなく、オペレーションコードとオペランド間あるいは先行オペランドと次サイクルのオペランド間での遷移確率を低減し、プロセッサのさらなる低消費電力化を実現する。
【００２２】
また、本発明のマイクロプロセッサは、オペレーションコード内の１ビットを使用してオペランドの反転認識信号として扱うことを特徴とする。
以上により、反転信号１ビット分の拡張を避けることができる。
【００２３】
また、本発明のマイクロプロセッサは、オペレーションコードの選択をオペランドデータの‘１’の個数をもとにオペレーションコードとオペランド間の遷移確率が低減されるように行うことを特徴とする。
【００２４】
以上により、オペレーションコードとオペレーションコード間の遷移確率のみならず、オペレーションコードとオペランド間の遷移確率の低減を実現することができる。
【００２５】
また、本発明のマイクロプロセッサは、コンパイラやアセンブラによってＲＯＭコード化されたデータに対して、先行サイクルのオペレーションコードと現行サイクルのオペレーションコードとを比較し、遷移ビット数が少なくなるように、あるいはオペレーションコードとオペランドの遷移が少なくなるように、複数種類あるオペレーションコードの中から最適なコードを選択してコード置換し、その置換コードをＲＯＭに再配置することを特徴とする。
【００２６】
また、本発明のマイクロプロセッサは、コンパイラやアセンブラによってＲＯＭコード化されたデータに対して、オペレーションコードとオペランドの遷移が少なくなるようにオペランドデータを反転し、同時にオペランドデータの反転状態を示す反転認識信号をオペレーションコード内に発生するかあるいはオペレーションコードおよびオペランドに付加して発生してコード置換し、その置換コードをＲＯＭに再配置することを特徴とする。
【００２７】
以上により、オペレーションコードおよびオペランドのビット遷移を考慮せずに、プログラム開発することができる。
【００２８】
【発明の実施の形態】
本発明の請求項１に記載のマイクロプロセッサは、メモリに格納されたオペレーションコードとオペランドからなる命令プログラムに対して、パイプライン処理により、前記オペレーションコードと前記オペランドをフェッチして解読し、その解読結果に基づいて前記命令プログラムを実行するマイクロプロセッサであって、前記命令プログラムを構成する各命令に対応して、同一の動作を実行する複数のオペレーションコードを有する構成とする。
【００２９】
請求項２に記載のマイクロプロセッサは、請求項１記載のマイクロプロセッサであって、前記オペランドが反転データかどうかの認識信号として、前記オペレーションコードおよび前記オペランドの他に付加ビットを有する構成とする。
【００３０】
請求項３に記載のマイクロプロセッサは、請求項２記載の前記付加ビットによって前記オペランドが反転データであることを示された場合、前記パイプライン処理を実行する命令デコーダ以外では、前記オペランドをさらに反転し反転前の状態に戻して処理する構成とする。
【００３１】
請求項４に記載のマイクロプロセッサは、請求項１記載のマイクロプロセッサであって、前記オペランドが反転データかどうかを認識可能な認識信号を、前記オペレーションコードの一部に有する構成とする。
【００３２】
請求項５に記載のマイクロプロセッサは、請求項１記載の前記命令プログラムに従った前記オペレーションコードの移行時に、先行のオペレーションコードと次のオペレーションコードとの間のビット遷移確率が高い場合、前記同一の動作を実行する複数のオペレーションコードの中から遷移確率が低減するような最適なオペレーションコードを選択する手段を備えた構成とする。
【００３３】
請求項６に記載のマイクロプロセッサは、請求項２記載の前記オペレーションコードと前記オペランドとの間のビット遷移確率が高い場合、前記付加ビットの状態に基づいて前記オペランドを反転する手段を備えた構成とする。
【００３４】
請求項７に記載のマイクロプロセッサは、請求項１記載の前記オペレーションコードと前記オペランドとの間のビット遷移確率が高い場合、前記同一の動作を実行する複数のオペレーションコードの中から遷移確率が低減するような最適なオペレーションコードを選択する手段を備えた構成とする。
【００３５】
請求項８に記載のマイクロプロセッサは、請求項１から４のいずれかに記載のマイクロプロセッサであって、コンパイラなどによって生成されたＲＯＭコードデータを、オペレーションコード−オペレーションコード間、オペレーションコード−オペランド間、およびオペランド内の遷移確率が最少となるような複数の前記オペレーションコードの選択およびオペランド反転によってコード置換し、その置換コードをＲＯＭに再配置するよう構成する。
【００３６】
これらの構成によると、オペレーションコードの多重化とオペランドの反転処理により、メモリからの命令移行時に、その移行前後で、パイプライン処理の際に生成されるオペレーションコード相互、およびオペランド相互のビット遷移率を低くして、パイプライン処理に関わる回路の動作遷移確率の低減を可能にする。
【００３７】
以下、本発明の実施の形態を示すマイクロプロセッサについて、図面を参照しながら具体的に説明する。
（実施の形態１）
本発明の実施の形態１のマイクロプロセッサを説明する。
【００３８】
なお、本実施の形態１のマイクロプロセッサの構成は、図１で示される従来のマイクロプロセッサの場合のブロック図と同じである。図３は本実施の形態１のマイクロプロセッサに対するプログラム例の従来例との比較説明図である。図４は本実施の形態１のマイクロプロセッサによる命令マップの説明図であり、図２と同様に数命令のみをマップ上に配置している。
【００３９】
図３（ａ）の９００、９０１、９０２は、図４の命令マップ上に記載の命令およびマシンコードである。図３（ｃ）の９０６、９０７、９０８は、図３（ａ）の９００および９０２を用いたプログラム例を示す。
【００４０】
本実施の形態１のマイクロプロセッサは、命令フェッチから解読にいたる動作および命令フォーマットについては従来の技術と同じであり、ここでは異なる点について説明する。
【００４１】
図４においてはひとつの命令に対して２つのオペレーションコードを割り付けている。図３（ｃ）のプログラム例に示す９０６、９０７、９０８の各マシンコードは、図１のＲＯＭ５００から順にインストラクションフェッチバッファ４０１に入力し、すべてオペレーションコードとしてインストラクションレジスタ４０２を経由し、オペレーションコード変換回路４０３に入力されることにより、パイプライン処理される。
【００４２】
本実施の形態１のマイクロプロセッサは、図３（ａ）に示す２つのオペレーションコードを、ＲＯＭ５００からの命令移行時に、その前後でオペレーションコード相互間でのビット遷移確率が低くなるように使い分けることによって、パイプライン処理に関わる回路の動作遷移確率を低減し、それらの回路での消費電力を削減することを特徴としている。
【００４３】
図３（ｃ）の９０６から９０７にかけて、インストラクションフェッチバッファ４０１およびインストラクションレジスタ４０２は、オペレーションコードが‘１１１０１０００’から‘１１１０１０１１’に変わることにより、８ビットのうち２ビットが‘０’から‘１’に遷移する。また、９０７から９０８にかけては、‘１１１０１０１１’から‘１１１１１００１’に変化することにより、‘０’から‘１’あるいは‘１’から‘０’に合計２ビットが遷移することになる。
【００４４】
ここで、「ＰＯＰ　Ａ０」の命令は、図３（ａ）の９０１と９０２のように、オペレーションコードとして‘０００００１１０’だけでなく‘１１１１１００１’も有している。前者を選択した場合に遷移するビットは、図３（ｂ）のプログラム例に示す９０４から９０５のように６ビットであるが、後者を選択することによって、遷移するビットは、図３（ｃ）のプログラム例に示す９０７から９０８のように２ビットとなり、マシンコードのビット遷移確率が低くなって、パイプライン制御回路の動作遷移確率を低減することができる。
【００４５】
以上のように本実施の形態によれば、ひとつの命令に対して同一動作を行う複数のオペレーションコードをもつため、オペレーションコードの変化による動作遷移確率を低減するように最適なオペレーションコードを選択することが可能となり、低消費電力化を実現することができる。
（実施の形態２）
本発明の実施の形態２のマイクロプロセッサを説明する。
【００４６】
図５は本実施の形態２のマイクロプロセッサの構成を示すブロック図である。図５において、ＲＯＭ５００からＣＰＵ１００に入力されるＲＯＭデータは９ビットからなり、それらは８ビットのオペレーションコードと１ビットの付加ビット、あるいはオペランド８ビット分と１ビットの付加ビットで構成される。付加ビットはデータの反転認識用の信号ビットであり、付加ビットが‘０’のときは残りの８ビットのデータは反転していないものと認識し、‘１’のときは８ビットデータがすべて反転しているものとする。
【００４７】
付加ビットはオペレーションコードおよびオペランドとともにパイプライン処理（９ビット）される。また、オペランドは、命令デコーダ４００以外では、反転データの場合には付加ビットが‘１’の時にさらに反転され、反転していない状態のデータとして、セレクタ８００を経由してデータパス３００あるいはデータレジスタ６００、アドレスレジスタ７００へ出力される。
【００４８】
実施の形態２のマイクロプロセッサは、オペランドの反転データが使用可能であるため、オペレーションコード−オペレーションコード間の遷移確率の低減のみならず、オペレーションコード−オペランド間、あるいはオペランド−オペランド間のビット遷移確率も低減できることを特徴としている。
【００４９】
以上のように構成されたマイクロプロセッサについて、図６を用いて以下に説明する。
図６は本実施の形態２のマイクロプロセッサに対するプログラム例の従来例との比較説明図である。図６（ａ）の９１０、９１１は、図２の命令マップ上に記載の命令およびマシンコードである。実施の形態２による図６（ｃ）の９１６、９１７、９１８、９１９は、図６（ａ）の９１０および９１１を用いたプログラム例を示す。
【００５０】
従来の技術で説明した図６（ｂ）のプログラム例では、９１３から９１４への状態変化において７ビットの遷移が発生するのに対し、実施の形態２による図６（ｃ）のプログラム例では、９１８におけるオペランドデータは９１４に示す本来の‘１１１１１１１１’を反転して‘００００００００’とし、反転認識情報として付加ビットが‘１’となる。よって図６（ｃ）のプログラム例では、９１７から９１８への状態変化においては、付加ビットを含めた９ビットのうち２ビットのみの遷移にとどまることになる。
【００５１】
また、９１８のオペランド‘００００００００’は、パイプライン処理により解読する必要がないため、インストラクションフェッチバッファ４０１から出力され、さらにインバータにより反転されて‘１１１１１１１１’に戻された信号とともにセレクタ８００に入力され、付加ビットが‘１’であるため、インバータにより元に戻された‘１１１１１１１１’側が、セレクタ８００を経てデータレジスタ６００に格納される。
【００５２】
以上のように本実施の形態によれば、オペランドの反転およびその反転認識信号の付加ビットによって、パイプライン処理のさらなる低消費電力化を実現することができる。
（実施の形態３）
本発明の実施の形態３のマイクロプロセッサを説明する。
【００５３】
図７は本実施の形態３のマイクロプロセッサの概略構成を示すブロック図である。図７において、ＲＯＭ５００からＣＰＵ１００に入力されるデータは従来の技術と同様に８ビットからなり、オペレーションコードはコード内の１ビットをオペランドの反転認識信号に割り付ける。反転認識信号が‘０’のときはその後に続くオペランドデータは反転していないものとし、‘１’のときはオペランドのすべてが反転しているものとする。
【００５４】
反転認識信号はオペレーションコードとともにパイプライン処理される。また、オペランドは、命令デコーダ４００以外では、反転データの場合には、反転認識信号が‘１’の時にさらに反転され反転しない状態のデータとして、セレクタ８００を経由してデータパス３００あるいはデータレジスタ６００、アドレスレジスタ７００へ出力される。
【００５５】
実施の形態２においては、オペレーションコードおよびオペランドに対して、その８ビットごとに反転認識信号として１ビットづつ付加するのに対し、本実施の形態３のマイクロプロセッサでは、反転認識信号をオペランドの８ビットに含むため、１ビット分のビット拡張の必要がなくなる。
【００５６】
本実施の形態３のマイクロプロセッサは、実施の形態２と同様にオペランドの反転データが使用可能であるため、オペレーションコード−オペランド間の遷移確率を付加ビットなしで低減できることを特徴としている。
【００５７】
以上のように構成されたマイクロプロセッサについて、図８を用いて以下に説明する。
図８は本実施の形態３のマイクロプロセッサに対するプログラム例の説明図である。図８（ａ）の９２０、９２１は実施の形態３による命令およびマシンコードの一例である。図８（ｂ）の９２２、９２３、９２４、９２５、図８（ｃ）の９２６、９２７、９２８、９２９は、図８（ａ）の９２０および９２１を用いた本実施の形態３のプログラム例を示す。
【００５８】
９２０、９２１における（ｘ）は、オペレーションコードに続くオペランドが反転データであれば１、非反転であれば０となり、オペレーションコードの一部としてパイプライン処理される１ビットの反転認識信号である。すなわち、９２０、９２１のマシンコードは、７ビットと反転認識信号１ビットの合計８ビットのオペレーションコードと、オペランド８ビットから構成される。
【００５９】
図８（ｂ）のプログラム例のように、仮に反転認識信号を使用せずｘ＝０とした場合では、９２３から９２４への状態変化において、７ビットの遷移が発生するのに対し、図８（ｃ）のプログラム例のように、反転認識信号を使用する場合には、９２７のオペレーションコード内に反転認識信号‘１’を有し、続く９２８のオペランドデータは、本来の‘１１１１１１１１’を反転し‘００００００００’とすることができる。よって、図８（ｃ）のプログラム例のように、９２７から９２８への状態変化においては、２ビットのみの遷移にとどまることになる。
【００６０】
また、９２８のオペランド‘００００００００’は、パイプライン処理により解読する必要がないため、インストラクションフェッチバッファ４０１から出力され、さらにインバータにより反転されて‘１１１１１１１１’に戻された信号とともにセレクタ８００に入力され、反転認識信号が‘１’であるため、インバータにより元に戻された‘１１１１１１１１’側が、セレクタ８００を経てデータレジスタ６００に格納される。
【００６１】
以上のように本実施の形態によれば、反転認識信号用にビット拡張する必要がなく、オペランドの反転によってパイプライン処理のさらなる低消費電力化を実現することができる。
（実施の形態４）
本発明の実施の形態４のマイクロプロセッサを説明する。
【００６２】
本実施の形態４によるマイクロプロセッサの構成は、従来の技術および実施の形態１の場合のブロック図と全く同一であり、命令マップも図４に記載の実施の形態１の命令マップと同様である。
【００６３】
実施の形態４によるマイクロプロセッサが実施の形態１と異なる点は、オペレーションコードとオペランドの遷移確率が大きい場合には、複数のオペレーションコードの中から遷移確率が最も低減できる最適なオペレーションコードを選択できる機能を有する点であり、オペレーションコード−オペレーションコード間の遷移確率の低減のみならず、オペレーションコード−オペランド間の遷移確率も低減することを特徴としている。
【００６４】
以上のようなマイクロプロセッサについて、図２、図４、図９を用いて以下に説明する。
図９は本実施の形態４のマイクロプロセッサに対するプログラム例の従来例との比較説明図である。図９（ａ）の９３０、９３１は図４の命令マップ上に記載の命令およびマシンコードである。図９（ｂ）の９３２、９３３、９３４、９３５は、図９（ａ）の９３０を用いた従来の技術によるプログラム例を示す。図９（ｃ）の９３６、９３７、９３８、９３９は、図９（ａ）の９３０および９３１を用いた実施の形態４のプログラム例を示す。
【００６５】
図２の従来の技術による命令マップに従って図９（ｂ）のプログラム例を構成すると、マシンコードは９３２から９３３までは７ビット遷移、９３３から９３４までは５ビット遷移、９３４から９３５までは６ビット遷移となってしまう。これに対し、本実施の形態４では、オペレーションコードと次に続くオペランドデータとの間のビット遷移数が５個以上の場合、その遷移数を低減できるような適切なオペレーションコードを選択することにより、図９（ｃ）のプログラム例のように、９３６のオペレーションコードは‘１０００００００’ではなく‘０１１１１１１１’となり、９３８も同様に‘０１１１１０１０’となることにより、９３６から９３７までは１ビット遷移、９３７から９３８までは３ビット遷移、９３８から９３９までは２ビット遷移となって、オペレーションコード−オペランド間のビット遷移確率の低減が可能となる。
【００６６】
以上のように本実施の形態によれば、ひとつの命令に対して同一動作を行う複数のオペレーションコードを持ち、かつオペランドのデータをもとにオペレーションコード−オペランド間の遷移確率を低減するような適切なオペレーションコードを選択することによって、パイプライン処理のさらなる低消費電力化を実現することができる。
（実施の形態５）
本発明の実施の形態５のマイクロプロセッサを説明する。
【００６７】
図１０は本実施の形態５のマイクロプロセッサにおけるＲＯＭデータ生成の処理手順を示すフローチャートである。通常、ＲＯＭ５００のデータは、図１０に示すように、プログラム開発（ステップＳ１００）によって作成されるソースデータから、Ｃコンパイラやアセンブラによって発生（ステップＳ１０１）されたデータファイルをもとに、ＲＯＭコード化（ステップＳ１０２）された後、レイアウトパターンとして生成されＲＯＭ配置（ステップＳ１０４）される。
【００６８】
図１０に示す本実施の形態５のＲＯＭ５００のデータ生成フローに従えば、実施の形態１から実施の形態４における複数種類のオペレーションコードを持つ構成、オペランドデータの反転および反転情報による低消費電力化という特徴を最大限活かすために、一旦ＲＯＭコード化されたデータを最適化するためのＲＯＭコード置換（ステップＳ１０３）を行うことができる。
【００６９】
例えば、実施の形態１に従いオペレーションコードが８ビットで構成される場合、図３（ｂ）に示すプログラム例の９０４から９０５のように、オペレーションコードの遷移ビット数が５ビット以上であれば、他のオペレーションコードの中で遷移ビット数が最少になる適切なオペレーションコードを選択し、図３（ｃ）に示すプログラム例の９０８のように、ＲＯＭコードを置換する。
【００７０】
また、実施の形態２に従い、図６（ｂ）に示すプログラム例の９１３から９１４のように、オペレーションコードとオペランド間での遷移ビット数が５ビット以上であれば、オペランドデータを反転すると同時に反転情報として付加ビットを発生し、ＲＯＭコードの置換及び再生成を行う。
【００７１】
また、実施の形態３に従えば、オペレーションコードは、予め７ビットで構成され、オペランドの反転によってオペレーションコードとオペランド間のビット遷移が低減できる場合、図８（ｂ）に示すプログラム例のように、オペランドデータを反転すると同時に反転認識信号をオペレーションコード内に発生し、ＲＯＭコードの置換及び再生成を行う。
【００７２】
実施の形態４に従えば、図６（ｂ）に示すプログラム例のように、オペレーションコードとオペランド間での遷移ビット数が５ビット以上であれば、実施の形態１のように複数のオペレーションコードの中からオペランドとの遷移ビット数が最少になる適切なオペレーションコードを選択し、ＲＯＭコードを置換する。
【００７３】
実施の形態５によるＲＯＭコードデータ生成方法においては、一旦生成されたＲＯＭコードに対してパイプラインの遷移確率を低減するよう最適なオペレーションコードを選択し、オペランドを反転すると同時に反転情報を発生し置換することを特徴としている。
【００７４】
以上のように、本実施の形態によれば、プログラム開発者は生成コードを考慮せずプログラム開発が可能となり、かつ実施の形態１から実施の形態４が有する特徴を最大限活かすことが可能となる。
【００７５】
【発明の効果】
以上のように本発明によれば、オペレーションコードの多重化とオペランドの反転処理により、メモリからの命令移行時に、その移行前後で、パイプライン処理の際に生成されるオペレーションコード相互、およびオペランド相互のビット遷移率を低くして、パイプライン処理に関わる回路の動作遷移確率の低減を可能にすることができる。
【００７６】
そのため、パイプライン処理に関わる回路の命令移行時の動作遷移確率を低減することができ、それらの回路の消費電力について全消費電力に対する割合を低くして、全消費電力を低減化することができる。
【図面の簡単な説明】
【図１】従来のマイクロプロセッサの一般的な概略構成を示すブロック図
【図２】同従来例のマイクロプロセッサによる命令マップの説明図
【図３】本発明の実施の形態１のマイクロプロセッサに対するプログラム例の従来例との比較説明図
【図４】本発明の実施の形態１、２および４のマイクロプロセッサによる命令マップの説明図
【図５】本発明の実施の形態２のマイクロプロセッサの概略構成を示すブロック図
【図６】本発明の実施の形態２のマイクロプロセッサに対するプログラム例の従来例との比較説明図
【図７】本発明の実施の形態３のマイクロプロセッサの概略構成を示すブロック図
【図８】本発明の実施の形態３のマイクロプロセッサに対するプログラム例の説明図
【図９】本発明の実施の形態４のマイクロプロセッサに対するプログラム例の従来例との比較説明図
【図１０】本発明の実施の形態５のマイクロプロセッサにおけるＲＯＭコード生成処理の手順を示すフローチャート
【符号の説明】
１００　　ＣＰＵ
２００　　バスインターフェイス
３００　　データパス
４００　　命令デコーダ
４０１　　インストラクションフェッチバッファ
４０２　　インストラクションレジスタ
４０３　　オペレーションコード変換回路
５００　　ＲＯＭ
６００　　データレジスタ
７００　　アドレスレジスタ
８００　　セレクタ
９００〜９０８、９１０〜９３９　　命令及びマシンコード
【図１】
2004127139.tif 000003
【図２】
2004127139.tif 000004
【図３】
2004127139.tif 000005
【図４】
2004127139.tif 000006
【図５】
2004127139.tif 000007
【図６】
2004127139.tif 000008
【図７】
2004127139.tif 000009
【図８】
2004127139.tif 000010
【図９】
2004127139.tif 000011
【図１０】
2004127139.tif 000012