(57)【特許請求の範囲】
【請求項１】
データ記憶手段と、算術論理演算手段とを有する演算装置において、仮命令セットアーキテクチャに基づいて作成されたプログラム中の分岐する距離を分析して、分岐の命令コードのサイズが小さくなるように再定義した新命令セットアーキテクチャにより再作成したプログラムの動的ステップ数から前記算術論理演算手段の演算能力を判定し、前記新命令セットアーキテクチャに基づく命令コードをデコードする手段を備え、該手段の出力により制御されることを特徴とする演算装置。
【請求項２】
データ記憶手段と、算術論理演算手段とを有する演算装置において、仮命令セットアーキテクチャに基づいて作成されたプログラム中の即値データのサイズを分析して、即値の命令コードのサイズが小さくなるように再定義した新命令セットアーキテクチャにより再作成したプログラムの動的ステップ数から前記算術論理演算手段の演算能力を判定し、前記新命令セットアーキテクチャに基づく命令コードをデコードする手段を備え、該手段の出力により制御されることを特徴とする演算装置。
【請求項３】
データ記憶手段と、算術論理演算手段とを有する演算装置において、仮命令セットアーキテクチャに基づいて作成されたプログラム中のレジスタの利用頻度を分析して、命令コードのレジスタ指定のサイズが小さくなるように再定義した新命令セットアーキテクチャにより再作成したプログラムの動的ステップ数から前記算術論理演算手段の演算能力を判定し、前記新命令セットアーキテクチャに基づく命令コードをデコードする手段を備え、該手段の出力により制御されることを特徴とする演算装置。
【請求項４】
仮命令セットアーキテクチャに基づいて作成されたプログラム中の分岐する距離を分析するステップと、分岐の命令コードのサイズが小さくなるように新命令セットアーキテクチャを再定義するステップと、該新命令セットアーキテクチャにより変更される前記プログラムの動的ステップ数から算術論理演算手段の演算能力を判定するステップと、前記新命令セットアーキテクチャに基づく命令コードのデコーダを設計するステップと、再定義された前記新命令セットアーキテクチャに基づく命令コードで前記プログラムを再作成するステップとにより、設計された前記デコーダで再作成された前記プログラムによる処理を行うことを特徴とする演算装置設計方法。
【請求項５】
仮命令セットアーキテクチャに基づいて作成されたプログラム中の即値データのサイズを分析するステップと、即値の命令コードのサイズが小さくなるように新命令セットアーキテクチャを再定義するステップと、該新命令セットアーキテクチャにより変更される前記プログラムの動的ステップ数から前記算術論理演算手段の演算能力を判定するステップと、前記新命令セットアーキテクチャに基づく命令コードのデコーダを設計するステップと、再定義された前記新命令セットアーキテクチャに基づく命令コードで前記プログラムを再作成するステップとにより、設計された前記デコーダで再作成された前記プログラムによる処理を行うことを特徴とする演算装置設計方法。
【請求項６】
仮命令セットアーキテクチャに基づいて作成されたプログラム中のレジスタの利用頻度を分析するステップと、命令コードのレジスタ指定のサイズが小さくなるように新命令セットアーキテクチャを再定義するステップと、該新命令セットアーキテクチャにより変更される前記プログラムの動的ステップ数から算術論理演算手段の演算能力を判定するステップと、前記新命令セットアーキテクチャに基づく命令コードのデコーダを設計するステップと、再定義された前記新命令セットアーキテクチャに基づく命令コードで前記プログラムを再作成するステップとにより、設計された前記デコーダで再作成された前記プログラムによる処理を行うことを特徴とする演算装置設計方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムを構成する一連の命令を実行することによって所定の演算処理を行う演算方法および演算装置に関し、例えば、ＣＰＵとメモリとを内蔵する１チップ型のマイクロコンピュータ（信号処理を効率よく実施するためのマイクロコンピュータであるディジタル信号処理プロセッサを含む）に適用して有効なメモリの利用容量を削減する演算装置および演算装置設計方法に関するものである。
【０００２】
【従来の技術】
１チップ型のマイクロコンピュータ（演算装置）は算術論理演算手段であるＣＰＵ（中央処理装置）を中心に所要の周辺機器が１個の半導体基板に含まれていて、その動作プログラムを保有するデータ記憶手段である命令メモリ（ＲＯＭ：リードオンリメモリ）および動作を行うためのデータメモリ（ＲＡＭ：ランダムアクセスメモリ）を内蔵する。
【０００３】
図６は１チップ型のマイクロコンピュータの概要配置を示す構成図である。図６において、１は命令を解釈して実行する部分であるＣＰＵ、２は、ＣＰＵ１に供給する命令を格納して、ＲＯＭ（読み出し専用の半導体メモリ）から構成されることが多い命令メモリ、３は、ＣＰＵ１が演算の途中で利用するデータを格納し、ＲＡＭ（読み書き可能な半導体メモリ）から構成されることが多いデータメモリ、４はＡ／Ｄ変換，Ｄ／Ａ変換，タイマーなどから構成される周辺回路である。
【０００４】
このようなマイクロコンピュータでは、命令メモリ２に記憶された命令がＣＰＵ１に直接読み込まれるようになっている。このため、プログラムサイズが大きくなると、命令メモリ２の記憶容量を増やす必要がある。その結果、１チップ型のマイクロコンピュータにおける命令メモリ２の占有面積の増大、さらにはコストの増大を招くことになる。
【０００５】
前記問題点の解決策として、特開平６−３４８４９０号公報に記載の技術は、プログラムデータを圧縮して記憶しておき、圧縮したプログラムデータを伸張部にて伸張する方式がある。以下に、特開平６−３４８４９０号公報に記載の技術について、その概要説明を行う。
【０００６】
図７は命令メモリ圧縮機能付きのマイクロコンピュータの構成を示すブロック図である。図７において、１１は圧縮された状態の命令を保存する命令メモリ、１２は圧縮された命令をデコードする伸張部、１３は伸張部１２で伸張した命令を保持する命令レジスタ、１４は命令レジスタ１３のデータをデコードする命令デコーダ、１５は命令デコーダ１４の出力により後述する演算部を制御する信号を出力する制御部、１６は加算，減算，比較，論理演算等を行う演算部、１７は命令メモリ１１のアドレスを示すプログラムカウンタ（ＰＣ）である。
【０００７】
以下に、図７に示すマイクロコンピュータの動作を示す。プログラムカウンタ１７が命令メモリ１１のアクセスアドレスを発し、命令メモリ１１にアクセスを行う。該当アドレスの命令が伸張部１２に供給され、命令の伸張を行う。伸張された命令コードは一旦命令レジスタ１３に保持する。
【０００８】
次に、命令レジスタ１３の命令コードを命令デコーダ１４がデコードを行う。そのデコード結果に基づいて、制御部１５は演算部１６に供給する制御信号およびプログラムカウンタ１７に供給する制御信号を変化させる。
【０００９】
演算部１６は制御部１５からの信号に基づいて演算を行い、制御部１５はプログラムカウンタ１７を変化させる。
【００１０】
【発明が解決しようとする課題】
しかしながら、このような特開平６−３４８４９０号公報記載の技術は、一旦フェッチしたプログラムデータを伸張することによって命令コードを再現し、得られた命令コードをデコードする構成である。
【００１１】
このことから、一旦フェッチしたプログラムの命令コードをデコードして圧縮していない状態に戻すステップがあるため、圧縮を伸張する回路と伸張した命令コードをデコードする回路の２種類の回路が必要となる。このため、プロセッサ部での回路規模が増大し、さらにはコストの増大を招くことになる。また回路規模の増大は消費電力の増大にもつながる。
【００１２】
また、圧縮された命令に対し、伸張およびデコードの２段構成で命令解読を行うために論理段数が増加し、これがＣＰＵの動作速度を決めるクリティカルパスとなり、ＣＰＵの動作速度を遅くさせるおそれがある。ＣＰＵの動作速度が低下すると、単位時間当りの処理能力が低下して演算能力が低下するという問題があった。
【００１３】
本発明は、前記従来技術の問題を解決するものであり、プログラムの命令コードのサイズが小さくなるように別の命令セットアーキテクチャを再定義し、そのデコーダを設計することで記憶装置の利用容量を削減し、なおかつマイクロコンピュータの論理回路部の縮小によりチップ面積を削減し、それによって、動作速度を高速にできる演算回路および演算回路設計方法を提供することを目的とする。
【００１４】
【課題を解決するための手段】
この目的を達成するために、本発明に係る演算装置および演算装置設計方法は、データ記憶手段と、算術論理演算手段とを有する演算装置において、仮命令セットアーキテクチャに基づいて作成されたプログラム中の分岐の距離，即値データのサイズ，レジスタの利用頻度を分析して、各命令コードやレジスタ指定のサイズが小さくなるように再定義した新命令セットアーキテクチャにより再作成したプログラムの動的ステップ数から算術論理演算手段の演算能力を判定し、新命令セットアーキテクチャに基づく命令コードをデコードする手段を備えるように構成したものである。
【００１６】
前記構成によれば、仮命令セットアーキテクチャに基づくプログラム中の分岐の距離，即値データのサイズ，レジスタの利用頻度を分析し、各命令コードやレジスタ指定のサイズを小さくする新命令セットアーキテクチャを再定義し、その命令コードのデコーダを設計して、かつ再定義した新命令セットアーキテクチャに基づく命令コードでプログラムを再作成することにより、命令コードを格納する命令メモリを縮小できその面積を削減し、さらに命令コードを直接デコードするので圧縮や伸張を行う論理回路等を削除することができる。
【００１８】
【発明の実施の形態】
以下、図面を参照して本発明の一実施の形態を詳細に説明する。
図１は本発明の一実施の形態における１チップ型のマイクロコンピュータ（演算装置）の構成を示すブロック図である。ここで、従来例を示す図７で説明した構成要件と対応するものには同一の符号を付すことにする。図１において、１１は命令メモリ、１５は制御部、１６は演算部、１７はプログラムカウンタ、２０は再定義された命令コードのサイズを小さくする新命令セットアーキテクチャに基づき設計された命令デコーダである。
【００１９】
前記のように構成されるマイクロコンピュータは、既存の仮命令セットアーキテクチャに基づきプログラムを作成する。次に、完成したプログラムに対し、プログラムの命令コードのサイズが小さくなるような新命令セットアーキテクチャを再度定義する。その新命令セットアーキテクチャに基づく命令コードを実行するマイクロコンピュータの命令デコーダ２０を設計し、かつその命令コードで前記プログラムを再作成し、命令メモリ１１に格納するというものである。
【００２０】
これは、装置に組み込んで用いられるマイクロコンピュータで、命令メモリ(ＲＯＭ)上に格納された再修正する頻度が少ないプログラムを実行する１チップ型のマイクロコンピュータ固有の性質を利用したものである。
【００２１】
命令コードのサイズが小さくなるように再定義された新命令セットアーキテクチャにより命令メモリの利用容量を削減することができるため、チップ面積を下げることができ、コストを下げることが可能となる。
【００２２】
また、命令デコーダ２０を再設計し、従来例で示した命令を伸張する回路と伸張した命令コードをデコードする回路との構成ではなく、命令コードを直接デコードするため論理回路を縮小することが可能となる。その結果、マイクロコンピュータを構築するためのチップ面積を削減でき、その分コストを下げることが可能となる。また、回路規模の縮小は低消費電力化につながり、高速動作の１チップ型のマイクロコンピュータの設計が可能となる。
【００２３】
次に、図２は本実施の形態における１チップ型のマイクロコンピュータの開発過程を示すフローチャートである。
【００２４】
まず、アプリケーション毎に異なるソースプログラムが作成される（Ｓ１）。このソースプログラムは、実行ファイル作成ツールにおいて用いられる、コンパイラの場合はコンピュータの命令セットアーキテクチャには依存しない高級言語プログラムであり、アセンブラの場合は仮命令セットアーキテクチャのアセンブラ言語で記述されたプログラムである。
【００２５】
ソースプログラムから仮命令セットアーキテクチャに基づいた実行ファイル作成ツールにより仮実行ファイルを作成する（Ｓ２）。実行ファイル作成ツールは、コンパイラ，アセンブラ，リンカなどの総称として用いている。
【００２６】
プログラム分析ツールにより、作成された仮実行ファイルのプログラムデータに対し、プログラム中の分岐距離の分析，即値データの大きさ分析，レジスタの利用頻度の分析などを行い、新定義命令セットアーキテクチャを出力する（Ｓ３）。
【００２７】
出力される新定義命令セットアーキテクチャに従って、プログラム修正ツールにより仮実行ファイルのプログラムを修正し、新しい命令コードでのプログラムを再作成し出力する（Ｓ４）。
【００２８】
新定義命令セットアーキテクチャの命令デコーダを、ＨＤＬ(Hardware Description Language)記述により作成する(Ｓ５)。
【００２９】
新定義命令セットアーキテクチャデコーダのＨＤＬ記述を基に、論理合成ツールにより、デコーダ部論理回路を設計する（Ｓ６）。
【００３０】
Ｓ４の処理から得られた新しい命令コードでのプログラムが格納された命令メモリと、Ｓ６の処理から得られた新定義命令セットアーキテクチャのデコーダ部論理回路により設計された命令デコーダとを備えた新たなマイクロコンピュータが設計される（Ｓ７）。
【００３１】
ここで、Ｓ１〜Ｓ３の処理までは仮命令セットアーキテクチャに対する処理である。新定義命令セットアーキテクチャはプログラム分析ツールの出力が得られるＳ３の処理後からとなる。
【００３２】
なお、Ｓ５〜Ｓ６の処理の説明では、いったんＨＤＬ記述を出力する処理を踏んだが、仮命令セットアーキテクチャを基に直接デコーダ部論理回路を設計する手順でもよい。
【００３３】
さらに、図２に示すＳ３の処理のプログラム分析ツールのアルゴリズムを説明する。図３は本実施の形態におけるプログラム分析ツールのアルゴリズムを示したフローチャートである。また、図４は本実施の形態における仮命令セットアーキテクチャに基づいた仮実行ファイルが用いる命令コードの例を示すものである。本実施の形態では３２ビット固定長アーキテクチャを仮命令セットアーキテクチャとする。この仮命令セットアーキテクチャは、即値型命令，分岐型命令，レジスタ型命令の３つのビット割り当てのモードがある。３つのビット割り当てモードは命令操作コードにより決定する。
【００３４】
１つ目は即値型命令コードである。６ビットの命令操作コードと、それぞれ５ビットのｒｓ１（演算命令のソースオペランドレジスタ）コードとｒｄ（デスティネーションレジスタ）コード、および１６ビットの即値データの合計３２ビットからなる。メモリからデータを読み出すロード命令（ｌｄ），メモリへデータを書き込むストア命令（ｓｔ）などが含まれる。命令操作コードで、即値型命令であることと、該当命令がロード命令であるかストア命令であるかという命令種別とを示す。ｒｓ１コードとｒｄコードはそれぞれレジスタ名を示すコードである。本実施の形態では、３２本の汎用レジスタを持つためそれぞれ５ビットが必要である。
【００３５】
２つ目は分岐型命令コードである。６ビットの命令操作コードと２６ビットのプログラムカウンタ（ＰＣ）に加算されるオフセット値からなる。命令操作コードで、分岐型命令であることと、該当命令が分岐命令であるか関数呼び出し命令（ｃａｌｌ）であるかなどという命令種別を示す。
【００３６】
３つ目はレジスタ型命令である。６ビットの命令操作コードとｒｓ１（演算命令のソースオペランドレジスタ）コードとｒｓ２（演算命令のソースオペランドレジスタ）コードとｒｄ（デスティネーションレジスタ）コードからなる。命令操作コードで、レジスタ型命令であることと、該当命令が加算命令であるか減算命令であるかといった命令種別を示す。ｒｓ１，ｒｓ２，ｒｄコードはそれぞれレジスタ名を示すコードである。本実施の形態では、３２本の汎用レジスタを持つためそれぞれ５ビットが必要となる。
【００３７】
また、図５はプログラム分析ツールにより決定された新定義命令セットアーキテクチャに基づいた命令コードの例を示すものである。図４の３２ビット固定長アーキテクチャをベースにした２４ビット固定長アーキテクチャである。この新定義命令セットアーキテクチャも仮命令セットアーキテクチャと同様に、即値型命令，分岐型命令，レジスタ型命令の３つのビット割り当てのモードがある。３つのビット割り当てモードは命令操作コードにより決定する。
【００３８】
１つ目は即値型命令コードである。６ビットの命令操作コードと、それぞれ４ビットのｒｓ１（演算命令のソースオペランドレジスタ）コードとｒｄ（デスティネーションレジスタ）コード、および１０ビットの即値データの合計２４ビットからなる。メモリからデータを読み出すロード命令（ｌｄ），メモリへデータを書き込むストア命令（ｓｔ）などが含まれる。命令操作コードで、即値型命令であることと、該当命令がロード命令であるかストア命令であるかという命令種別を示す。ｒｓ１コードとｒｄコードはそれぞれレジスタ名を示すコードである。本実施の形態では、１６本の汎用レジスタを持つためそれぞれ４ビットが必要である。
【００３９】
ここで、レジスタ数が仮命令セットアーキテクチャの３２本から１６本に減少しているのはプログラム分析ツールにより用いる組み込みプログラム内で利用するレジスタが１６本でもステップ数の増加が少ないと分析したためである。また、即値データのサイズが１６ビットで示されるサイズから１０ビットで示されるサイズに変化したのもプログラム分析ツールがステップ数の増加が少ないと判断したためである。
【００４０】
２つ目は分岐型命令コードである。６ビットの命令操作コードと１８ビットのプログラムカウンタに加算されるオフセット値からなる。命令操作コードで、分岐型命令であることと、該当命令が分岐命令であるか関数呼び出し命令（ｃａｌｌ）であるかなどという命令種別を示す。
【００４１】
３つ目はレジスタ型命令コードである。６ビットの命令操作コードとそれぞれ４ビットのｒｓ１（演算命令のソースオペランドレジスタ）とｒｓ２（演算命令のソースオペランドレジスタ）コードとｒｄ（デスティネーションレジスタ）コードからなる。命令操作コードで、レジスタ型命令であることと、該当命令が加算命令であるか減算命令であるかといった命令種別を示す。ｒｓ１，ｒｓ２，ｒｄコードはそれぞれレジスタ名を示すコードである。新定義命令セットアーキテクチャでは、１６本の汎用レジスタを持つためそれぞれ４ビットが必要となる。
【００４２】
図３に示すプログラム分析ツールのアルゴリズムを説明する。図２に示すＳ３の処理で、プログラム中の分岐距離の分析，即値データの大きさ分析，レジスタの利用頻度分析などを行うものである。
【００４３】
スタート段階では仮命令セットアーキテクチャに基づいた仮実行ファイルのプログラムである（Ｓ１０）。
【００４４】
まず、仮命令セットアーキテクチャの各命令コードのビット長を、図４に示す即値型命令コードでは即値データのフィールドを１６ビットから１５ビットにする。分岐型命令コードでは、ＰＣに加算されるオフセットを２６ビットから２５ビットにする。レジスタ型命令コードでは、もともとビットのフィールドに余裕があったため、最後のビット割り当てのなかった部分を１ビット減少させる（Ｓ１１）。
【００４５】
次に、プログラム中の分岐型命令コードの分岐によるステップ数の増加を調べる（Ｓ１２）。
【００４６】
以下に例を挙げてＳ１２の処理を説明する。なお、ここでｊｕｍｐ  ＴＴＴと記述するとＴＴＴへの無条件相対分岐を示す。
【００４７】
0003586689.tif 000002
前記のプログラム１の場合、ＡＡＡで示される箇所からＴＴＴの場所への分岐距離は２０００行（２の１１乗以下）である。この場合、分岐距離は１１ビットで表現できる。このため、分岐型命令コードでのＰＣに加算するオフセット値のフィールドが２５ビットになってもステップ数の増加はない。
【００４８】
一方、６０００００００行（２の２５乗以上を含む）の相対分岐で、分岐型命令コードでのオフセットのフィールドが２５ビットの場合は次のように扱う。
【００４９】
0003586689.tif 000003
前記プログラム２に示したように３０００００００行（２の２５乗以下）の分岐と３０００００００行の分岐に分割する。その結果、ステップ数は「ＴＴＴ    ｊｕｍｐ  ＴＴＴ１」の１ステップ増加する。
【００５０】
次に、プログラム中の即値型命令コードの即値データによるステップ数の増加を調べる（Ｓ１３）。
【００５１】
以下に例を挙げてＳ１３の処理を説明する。なおここで、
「ｌｄ    ｒ２，ｎｒ  ，５００」は、ｎｒと５００を加算した結果が示すアドレスのメモリからのデータをｒ２（レジスタ名）に格納する命令である。ｎｒは読み出すと常に０を出力し、いくら書き込んでも０のまま値が変化しないレジスタである。
【００５２】
0003586689.tif 000004
前記のプログラム３の例では即値データのサイズは５００（２の９乗以下）であり、９ビットで表現できるデータである。このため、即値データのフィールドが１５ビットになってもステップ数の増加がない。
【００５３】
一方、即値データが１５ビットより大きい場合は次のように動作する。ｎｒと
４００００（２の１５乗では表現できない数字）を加算した結果のデータをｒ２に格納する場合は次のようにプログラムを修正する。
【００５４】
0003586689.tif 000005
「ａｄｄ    ｒ２，ｎｒ  ，２００００」は２００００と０（ｎｒ）を加算してｒ２に入れることを示す。「ｌｄ    ｒ２，ｒ２，２００００」はｒ２と２００００を加算して、その加算結果が示すアドレスのデータをｒ２に格納する命令のことである。前記プログラム４の２ステップの演算により「ｌｄ    ｒ２，ｎｒ  ，４００００」と同様の処理が実現できる。
【００５５】
前記に示したように２ステップの演算となるため、プログラムのステップ数は１ステップ増加する。
【００５６】
次に、レジスタ数の減少によるステップの増加を調べる（Ｓ１４）。
【００５７】
図３に示す本実施の形態の第１回目の処理ループで、３２ビットの命令ビット長から３１ビットの命令ビット長へ減少させる処理ではレジスタ数を減少させる効果はないが、レジスタ数を減少させることで命令ビット長を減少させ、ステップ数を増加させることが可能である。
【００５８】
つまり、３２個のレジスタを持ったアーキテクチャのプロセッサでは、あるサブルーチン内での変数の数が１５個以内であるときには残りの１７個のレジスタは利用されていない。そのため、プログラムの命令中でオペランドを指示するのに必要なビットが無駄になっている。オペランドを指示するレジスタ数を１６個までに限定すれば、ソースオペランドレジスタ（ｒｓ１）で必要な５ビットが４ビットになり、デスティネーションレジスタ（ｒｄ）で必要な５ビットが４ビットになる。これにより、即値型命令コードでは２ビットが無駄なビットになり、レジスタ型命令では３ビット分のビット長を減少させることができる（図５参照）。
【００５９】
また、１６個以上レジスタを利用するモジュールにおいても、命令中でレジスタの復帰退避を頻繁に行うことで、その処理を行うことは可能である。
【００６０】
次に、Ｓ１２，Ｓ１３，Ｓ１４の処理によるプログラムのステップ数の増加の合計を計算する（Ｓ１５）。
【００６１】
ここで、計算するステップ数は動的なステップ数（プログラム実行に必要としたステップ数）と静的なステップ数（プログラムサイズ）の２つである。静的なステップ数に対しては、命令ビット長を乗し、そのプログラムに必要なビット数を計算する。
【００６２】
次に、Ｓ１５の処理で求めた動的なステップ数の計算結果が、ＣＰＵの演算能力を越えていないかを判断する（Ｓ１６）。
【００６３】
リアルタイムアプリケーションでは、ＣＰＵの演算能力は高ければ高いほどよいというわけではなく、リアルタイムに処理できる範囲ならば演算能力は低くてもよい。そこで、ここでは動的なステップ数が増加してもリアルタイムで処理できる範囲内かの判断を行う。リアルタイムで処理できない場合は、今回の処理ループのＳ１１からＳ１５までの処理を無効として終了する。また、リアルタイムで処理できる範囲内であれば次の処理に進む。
【００６４】
次に、Ｓ１５の処理で求めた今回の処理ループの命令ビット長のプログラムに必要なビット数と前回の処理ループで求めた命令ビット長のプログラムに必要なビット数との比較を行う（Ｓ１７）。
【００６５】
ここで、命令ビット長のビット数が減少していた場合はＳ１１から再度処理を行う。減少していない場合はＳ１１からＳ１７までの今回の処理ループを無効として終了する。
【００６６】
以上、本実施の形態について説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲内において種々変更可能である。
【００６７】
例えば、ＲＯＭやＲＡＭを１チップ型のマイクロコンピュータ外部に配置するようにしてもよい。またＲＯＭとしては、マスクＲＯＭ（アプリケーション固有のプログラムを製造時に書き込む），ＥＰＲＯＭ（紫外線により消去可能で電気的に書き込み可能），ＥＥＰＲＯＭ（電気的に消去，書き込み可能）が考えられる。
【００６８】
また、前記実施の形態では固定命令ビット長の命令セットアーキテクチャを対象に説明を行ったが、任意の可変命令ビット長をもつアーキテクチャに対しても適用が可能である。
【００６９】
また、分岐距離に着目した命令ビット長圧縮，即値データのサイズに着目した命令ビット長圧縮，利用するレジスタ数に着目した命令ビット長圧縮について説明を行ったが可変命令ビット長のアーキテクチャでは、それぞれ単体での適用も可能である。
【００７０】
本発明は、少なくとも、プログラムを構成する一連の命令コードを順次デコードして実行することによって所定の演算処理を行うことを条件にマイクロコンピュータに適用することができる。
【００７１】
【発明の効果】
以上説明したように、本発明によれば、命令コードのサイズが小さくなるような命令セットアーキテクチャの再定義により命令メモリの利用容量を削減することができ、なおかつ命令コードを直接デコードするためマイクロコンピュータの論理回路部を縮小でき、チップ面積を削減することで、その分コストを下げることが可能となり、また、回路規模の縮小は低消費電力化につながり、高速動作の１チップ型のマイクロコンピュータの設計ができるという効果を奏する。
【図面の簡単な説明】
【図１】本発明の一実施の形態における１チップ型のマイクロコンピュータ（演算装置）の構成を示すブロック図である。
【図２】本実施の形態における１チップ型のマイクロコンピュータの開発過程を示すフローチャートである。
【図３】本実施の形態におけるプログラム分析ツールのアルゴリズムを示したフローチャートである。
【図４】本実施の形態における仮命令セットアーキテクチャに基づいた仮実行ファイルが用いる命令コードの例を示すものである。
【図５】本実施の形態におけるプログラム分析ツールにより決定された新定義命令セットアーキテクチャに基づいた命令コードの例を示すものである。
【図６】従来の１チップ型のマイクロコンピュータの概要配置を示す構成図である。
【図７】従来の命令メモリ圧縮機能付きのマイクロコンピュータの構成を示すブロック図である。
【符号の説明】
１…ＣＰＵ、  ２，１１…命令メモリ、  ３…データメモリ、  ４…周辺回路、  １２…伸張部、  １３…命令レジスタ、  １４，２０…命令デコーダ、  １５…制御部、  １６…演算部、  １７…プログラムカウンタ（ＰＣ）。
【図１】
0003586689.tif 000006
【図２】
0003586689.tif 000007
【図３】
0003586689.tif 000008
【図４】
0003586689.tif 000009
【図５】
0003586689.tif 000010
【図６】
0003586689.tif 000011
【図７】
0003586689.tif 000012