(57)【要約】【課題】カスタマイズ性を備えたマイクロプロセッサを提供する。【解決手段】マクロ命令メモリ部２１１と機能メモリ部２１２と入力オペランドメモリ部２１３と出力オペランドメモリ部２１４を備え、かつマクロ命令デコーダ部２３１と機能デコーダ部２３２と入力アドレス制御部２３３と出力アドレス制御部２３４とアドレス選択部２３５を備え、入力レジスタを入力データとして利用して複数の演算を行なう演算部２７には、機能制御信号により動作が制御される複数の個別演算部２７２〜２７ｎを備え、かつ与えられたマクロ命令をもとに複数の個別演算部の演算結果から命令に適合する演算結果を選択すると演算選択部２７１を備えるようにした。【選択図】      図２
2004246609.tif 000002
【特許請求の範囲】
【請求項１】
命令カウンタ部と、一時記憶部と、入力レジスタ部と、演算部とを有するマイクロプロセッサであって、前記命令カウンタ部（２２）の出力であるカウンタ信号（２Ｓ１）をアドレスとして命令を読み込み、その命令をデコードし、デコードの結果により、前記一時記憶部（２８）のデータを入力として前記入力レジスタ部（２５）に取り込み、前記演算部（２７）ではこのデータを基に命令を実行し、再び前記一時記憶部（２８）に演算結果（２Ｓ７）を書き戻し、命令で指示された演算を前記演算部（２７）で実行し演算結果を取得するマイクロプロセッサにおいて、
カウンタ信号（２Ｓ１）をアドレスとする、マクロ命令部データを格納するマクロ命令メモリ部（２１１）と、機能部データを格納する機能メモリ部（２１２）と、入力オペランド部データを格納する入力オペランドメモリ部（２１３）と、出力オペランド部データを格納する出力オペランドメモリ部（２１４）を備え、
かつ前記マクロ命令メモリ部（２１１）のデータを解釈して、マクロ命令（２Ｓ２）を生成するマクロ命令デコーダ部（２３１）と、前記機能メモリ部（２１２）のデータを解釈して、機能制御信号（２Ｓ２１）を生成する機能デコーダ部（２３２）と、前記カウンタ信号と前記入力オペランドメモリ部（２１３）のデータを解釈して、入力アドレス（２Ｓ３１）と書き込み信号（２Ｓ４）を生成する入力アドレス制御部（２３３）と、前記カウンタ信号と前記命令と前記出力オペランドメモリ部（２１４）のデータを解釈して出力アドレス（２Ｓ３２）と、前記一時記憶部（２８）への書き込み時には出力アドレスを、前記一時記憶部（２８）への読み込み時には入力アドレスを示すアドレス選択信号（２Ｓ３３）を生成する出力アドレス制御部（２３４）と、アドレス選択信号（２Ｓ３３）により入出力アドレスを選択し、前記一時記憶部（２８）へのアドレス（２Ｓ３）を生成するアドレス選択部（２３５）と、を備え、入力レジスタを入力データとして利用して複数の演算を行なう前記演算部（２７）には、機能制御信号により動作が制御される複数の個別演算部１（２７２）〜個別演算部ｎ─１（２７ｎ）とを備え、かつ与えられたマクロ命令をもとに複数の個別演算部の演算結果から命令に適合する演算結果を選択すると演算選択部（２７１）を備えることを特徴とするマイクロプロセッサ。
【請求項２】
演算部として、並列に動作可能な複数（ｍ）の演算部である演算ａ部（７７ａ）、演算ｂ部（７７ｂ）〜演算ｍ部（７７ｍ）を備え、これら各演算部へ入力する入力レジスタａ部（７５ａ）、入力レジスタｂ部（７５ｂ）〜入力レジスタｍ部（７５ｍ）を各演算部に対して備え、演算部（２７）の各演算結果である演算結果ａ（７Ｓ７ａ）、演算結果ｂ（７Ｓ７ｂ）〜演算結果ｍ（７Ｓ７ｍ）を各演算部から出力することを特徴とする請求項１記載のマイクロプロセッサ。
【請求項３】
マクロ命令部（１１）、機能部（１２）、入力オペランド部（１３）、出力オペランド部（１４）の４つの独立したデータ構造であって、かつ、前記マクロ命令部には、命令カウンタが０〜ｎ─１に対応する「命令カウンタ０マクロ命令部」（１１１）〜「命令カウンタｎ─１マクロ命令部」（１１ｎ）を、前記機能部には、命令カウンタが０〜ｎ─１に対応する「命令カウンタ０機能部」（１２１）〜「命令カウンタｎ─１機能部」（１２ｎ）を、前記入力オペランド部には、命令カウンタが０〜ｎ─１に対応する「命令カウンタ０入力オペランド部」（１３１）〜「命令カウンタｎ─１入力オペランド部」（１３ｎ）を、前記出力オペランド部には、命令カウンタが０〜ｎ─１に対応する「命令カウンタ０出力オペランド部」（１４１）〜「命令カウンタｎ─１出力オペランド部」（１４ｎ）をそれぞれ備えるデータ構造の命令を解釈し実行することを特徴とする請求項１記載のマイクロプロセッサ。
【請求項４】
前記マクロ命令部が複数の演算部の情報を扱えるように、「命令カウンタ０マクロ命令部」から「命令カウンタｎ─１マクロ命令部」のそれぞれに、「命令カウンタ０演算器１マクロ命令部」（６１１１）〜「命令カウンタ０演算器ｍマクロ命令部」（６１１ｍ）から、「命令カウンタｎ─１演算器１マクロ命令部」（６１ｎ１）〜「命令カウンタｎ─１演算器ｍマクロ命令部」（６１ｎｍ）を備え、前記機能部が複数の演算部の情報を扱えるように、「命令カウンタ０機能部」から「命令カウンタｎ─１機能部」のそれぞれに、「命令カウンタ０演算器１機能部」（６２１１）〜「命令カウンタ０演算器ｍ機能部」（６２１ｍ）から、「命令カウンタｎ─１演算器１機能部」（６２ｎ１）〜「命令カウンタｎ─１演算器ｍ機能部」（６２ｎｍ）を備え、前記入力オペランド部が複数の演算部の情報を扱えるように、「命令カウンタ０入力オペランド部」から「命令カウンタｎ─１入力オペランド部」のそれぞれに、「命令カウンタ０演算器１入力オペランド部」（６３１１）〜「命令カウンタ０演算器ｍ入力オペランド部」（６３１ｍ）から、「命令カウンタｎ─１演算器１入力オペランド部」（６３ｎ１）〜「命令カウンタｎ─１演算器ｍ入力オペランド部」（６３ｎｍ）を備え、前記出力オペランド部が複数の演算部の情報を扱えるように、「命令カウンタ０出力オペランド部」から「命令カウンタｎ─１出力オペランド部」のそれぞれに、「命令カウンタ０演算器１出力オペランド部」（６４１１）〜「命令カウンタ０演算器ｍ出力オペランド部」（６４１ｍ）から、「命令カウンタｎ─１演算器１出力オペランド部」（６４ｎ１）〜「命令カウンタｎ─１演算器ｍ出力オペランド部」（６４ｎｍ）をそれぞれ備えるデータ構造の命令を解釈し実行することを特徴とする請求項２記載のマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はマイクロプロセッサ、特に演算部の再構成を可能にするマイクロプロセッサに関するものである。
【０００２】
【従来の技術】
演算部の再構成を可能にするマイクロプロセッサに関しては、従来より種々の開示がなされている。その１つに特許文献１記載のものがある。
【０００３】
【特許文献１】
特開２００１−２０２２４３号公報
【０００４】
上記特許文献１記載の発明は、上位互換性を維持しつつ、汎用レジスタの数を増加させることができるデータ処理装置を提供するもので、そのためにレジスタを指定するレジスタ指定情報を２つの部分に分割し、分割されたこれらの２つの部分を命令コードの基本単位上の別々の基本単位に配置することで一方の命令コードを省略可能とし、省略可能な命令コードを省略すると制御部は所定レジスタ指定情報を暗黙的に想定してレジスタ選択動作を行うので、暗黙的に指定可能な汎用レジスタのみを使用していれば、省略可能の命令コードを省略できるから命令コードを増加させることがない。したがってＭ命令コードを増加させないことよって処理速度を低下させることがない、というものである。
しかしながら特許文献１記載のＣＰＵの発明は、アルゴリズムが同じでも、他の分野への適応するのに同じプログラムを用いることができないという問題点については関心外であり、何の記載もない。
【０００５】
本発明はこの点に着目してなされたものである。
まず、従来の技術の代表例として、一般のマイクロプロセッサで利用される命令のデータ構造を図８に示す。
命令（８１）は命令カウンタが０〜ｎ─１のときの各命令の１次元のデータとして表現できる。この図ではジャンプや関数コール等の命令カウンタの値が不連続になるような命令は、説明の簡単化のため省略している。しかし、この場合も飛び先の命令では命令カウンタの値は単調に増加する。
図８では命令カウンタの状態で実行する命令が、命令カウンタが０のとき実行される命令である「命令カウンタ０命令」（８１１）、命令カウンタが１のとき実行される命令である「命令カウンタ１命令」（８１２）、命令カウンタが２のとき実行される命令である命令カウンタ２命令（８１３）〜命令カウンタがｎ─１のとき実行される命令である「命令カウンタｎ─１命令」（８１ｎ）と順に並んでいる。
【０００６】
この各命令がどのようにエンコードされているかを図９に示す。
「命令カウンタｎ─１命令」（９１）は、オペコード（９１ａ）、オペランド１（９１ｂ）、オペランド２（９１ｃ）の３つのフィールドで構成される。
オペコード（９１ａ）は命令の種類を、オペランド１（９１ｂ）は命令の入力先、オペランド２（９１ｃ）は命令の出力先をそれぞれ示す。オペランドにはレジスタやメモリが利用される。
【０００７】
図１０は、図９の命令を実行するマイクロプロセッサの構造を、命令を解釈するデコーダと命令を実行する演算部に焦点を絞って示すものである。
命令メモリ部（４１）には図９で示した命令が格納されている。内部にメモリを持たない場合は、この命令メモリ部はマイクロプロセッサ外のメモリにおかれる。
命令カウンタ部（４２）はカウントアップして、命令メモリのアドレスとなる命令カウンタ信号（４Ｓ１）を生成する。命令カウンタ信号がｘ（０≦ｘ≦ｎ─１）の命令が読み出され、デコーダ部（４３）に転送される。
デコーダ部（４３）ではエンコードされていた命令が、図９のオペコード（９１ａ）、オペランド１（９１ｂ）、オペランド２（９１ｃ）にデコードされる。これにより命令の解釈が完了する。デコーダ部（４３）でオペコードは命令（４Ｓ２）に解釈され演算部（４７）の動作を決定する。
また、オペランド１、オペランド２は演算部（４７）の入出力データを制御するデータとなる。この一部は入出力制御部（４４）に送られ、入力１レジスタ部（４５）、入力２レジスタ部（４６）にデータを書き込む書き込み信号（４Ｓ４）を生成する。他の部分は一時記憶部（４８）の読み書き時のアドレス（４Ｓ３）を生成する。
一時記憶部（４８）は入出力バス（４９）により、入力１レジスタ部（４５）、入力２レジスタ部（４６）、演算部（４７）と接続され、データバスを形成する。この入出力バス（４９）は外部と接続され、外部メモリから命令を命令メモリに読み込んだり、一時記憶部（４８）のデータをその他のプロセッサが読み書きするために利用される。
入力１レジスタ部（４５）のデータは入力データ１（４Ｓ５）として、また入力２レジスタ部（４６）のデータは入力データ２（４Ｓ６）として、演算部（４７）に入力され、演算部（４７）は命令を実行して、演算結果（４Ｓ７）を得る。
【０００８】
次に、複数の演算器が並列に動作するＶＬＩＷ型のマイクロプロセッサで利用される命令（今後ＶＬＩＷ命令と記述し、個々の演算器に対しては命令と記述する。）のデータ構造を図１１に示す。
ＶＬＩＷ型のマイクロプロセッサは演算器のスケジュールを静的、つまりコンパイル時に行なう。複数の演算器が並列に動作するマイクロプロセッサとしてはスーパースケーラ型のマイクロプロセッサがあるが、この場合演算器のスケジュールは動的、つまり実行時に行なう。そのため、命令としては図９に示したものと同じものが基本的に用いられる。
ＶＬＩＷ命令（５１）は命令カウンタが０〜ｎ─１のときの各ＶＬＩＷ命令の１次元のデータとして表現できる。
図１１ではジャンプや関数コール等の命令カウンタの値が不連続になるようなＶＬＩＷ命令は、説明の簡単化のため省略している。しかし、この場合も飛び先のＶＬＩＷ命令では命令カウンタの値は単調に増加する。
図１１では命令カウンタの状態で実行するＶＬＩＷ命令が、命令カウンタが０のとき実行されるＶＬＩＷ命令である命令カウンタ０ＶＬＩＷ命令（５１１）、命令カウンタが１のとき実行されるＶＬＩＷ命令である命令カウンタ１ＶＬＩＷ命令（５１２）〜命令カウンタがｎ─１のとき実行される命令である命令カウンタｎ─１命令（５１ｎ）と順に並んでいる。これは図６と同じである。ここで、命令カウンタ０ＶＬＩＷ命令は演算器毎の命令である、「命令カウンタ０演算器１命令」（５１１１）〜「命令カウンタ０演算器ｍ命令」（５１１ｍ）で構成される。
同様に、「命令カウンタ１ＶＬＩＷ命令」は、「命令カウンタ１演算器１命令」（５１２１）〜「命令カウンタ１演算器ｍ命令」（５１２ｍ）で、「命令カウンタｎ─１ＶＬＩＷ命令」は、「命令カウンタｎ─１演算器１命令」（５１ｎ１）〜「命令カウンタｎ─１演算器ｍ命令」（５１ｎｍ）でそれぞれ構成される。そのため、一つの命令長が非常に長くなりＶｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄと呼ばれる。
【０００９】
【発明が解決しようとする課題】
マイクロプロセッサは特定用途向であったハードウェアを命令という概念を用い汎用化した。従来のマイクロプロセッサを用いてあるアプリケーションに対応するにはこの汎用的な命令を用いてプログラムを作成する。
しかしながら、命令が汎用的であるため、アプリケーション毎にプログラムの変更や最悪の場合には作成が必要となり、負荷の高い作業が要求される。
とくに、組み込み機器のように、リソースが限られている場合はいっそう問題となる。例えば、制御の分野で比例制御を行なう場合、これは前回（ｘ（ｔ─１））と今回（ｘ（ｔ））の値の差に定数を掛ける事に相当し、（式１）で計算される。
（ｘ（ｔ）─ｘ（ｔ─１））×Ｋ        …  （式１）
また、移動平均のように前回と今回の値を加えたものに定数を掛ける場合、（式２）で計算される。
（ｘ（ｔ）＋ｘ（ｔ─１））×Ｋ        …  （式２）
この２つの式はｘ（ｔ）とｘ（ｔ─１）の差をとるか、和をとるかの違いでしかないが、一般的には、以下のように異なる命令を用いた機械語のプログラムとなる。
（式１）のプログラム：
ＳＵＢ  ｙ、（ｔ）、ｘ（ｔ─１）
ＭＵＬ  ｙ、Ｋ
（式２）のプログラム：
ＡＤＤ  ｙ、（ｔ）、ｘ（ｔ─１）
ＭＵＬ  ｙ、Ｋ
このようなことは、信号処理の分野ではよくみられることであり、アルゴリズムが同じでも、他の分野への適応するのに同じプログラムを用いることができないという問題がある。
また、マイクロプロセッサでは一つの命令の中に、その命令を実行するためのハードウェアの制御情報をすべて含む。これは命令が内部ハードウェアの動作を反映したものだからである。
従来のマイクロプロセッサでハードウェア的に対応する場合、命令の変更や追加は内部ハードウェアの変更や追加を意味し、ハードウェアの再設計が必要になるという問題を持つ。新規にマイクロプロセッサを作成する場合には、さらに大きな問題となる。さらに、上記問題に関連して、マイクロプロセッサのハードウェアを変更する場合には、コンパイラ等の開発環境も変更する必要があるという問題もあわせて持つ。特に、コンパイラを新規に作成する場合には、プロセッサの設計と同等の負荷を生じることになる。
複数の演算器を持つＶＬＩＷ型のマイクロプロセッサの場合、個々の演算器の機能は、例えば４つの演算器を持つ場合にはＡＬＵ、ＦＰＵ、ロードユニット、ストアユニットのように固定されている。この場合、コンパイラは出来る限り演算器が遊ばないように命令のスケジューリングを行なうが、各演算器の機能が固定されているために演算器の利用効率が減少するという問題を持つ。
【００１０】
したがってこの発明の目的は、以上述べた問題点を解消し、カスタマイズ性を備えたマイクロプロセッサを提供することを第一の目的とする。ここで、本発明では同じオペコードを用いながらアプリケーション毎に動作を変更させることをカスタマイズとしている。
上記例を用いて説明すると、（式１）と（式２）を、ｘ（ｔ）とｘ（ｔ─１）にあるオペレーションを施し、Ｋという定数を掛けることと、マクロ的にとらえると（式３）の様に一つで表現できる。
ｆ（ｘ（ｔ）、ｘ（ｔ─１））×Ｋ        …  （式３）
（式３）においてこの式の形がオペコードに相当する。
ｆ（）に作用し、オペコードの機能をアプリケーションに適応するような仕組みを備えることで、カスタマイズ性の提供につながる。
この仕組みは命令を命令カウンタ毎に定義するのではなく、オペコード、オペランドといった従来は一つの命令にエンコードされていたハードウェア情報を分割することを基本とする。
従来オペコードとして命令を規定していた部分を、動作をマクロ的に定義するマクロ命令部と、その詳細な機能を決定する機能部に分割し、同じマクロ命令を用いながらアプリケーション毎に演算部の動作を切り替えを可能とする。
これらの特徴によりアプリケーション毎に最適な演算部を同じマイクロプロセッサで再構成し、ハードウェアレベルでも高いカスタマイズ性を備えたマイクロプロセッサを提供する。
同時に、変更部分が機能部に集中するために、コンパイラ等のソフトウェアを、簡単な変更で利用可能とすること、及び複数の演算部を備える場合にも、演算部の利用効率をあげることを目的とする。
【００１１】
【課題を解決するための手段】
上記問題を解決するため、請求項１記載のマイクロプロセッサは、命令カウンタ部と、一時記憶部と、入力レジスタ部と、演算部とを有するマイクロプロセッサであって、前記命令カウンタ部（２２）の出力であるカウンタ信号（２Ｓ１）をアドレスとして命令を読み込み、その命令をデコードし、デコードの結果により、前記一時記憶部（２８）のデータを入力として前記入力レジスタ部（２５）に取り込み、前記演算部（２７）ではこのデータを基に命令を実行し、再び前記一時記憶部（２８）に演算結果（２Ｓ７）を書き戻し、命令で指示された演算を前記演算部（２７）で実行し演算結果を取得するマイクロプロセッサにおいて、カウンタ信号（２Ｓ１）をアドレスとする、マクロ命令部データを格納するマクロ命令メモリ部（２１１）と、機能部データを格納する機能メモリ部（２１２）と、入力オペランド部データを格納する入力オペランドメモリ部（２１３）と、出力オペランド部データを格納する出力オペランドメモリ部（２１４）を備え、かつ前記マクロ命令メモリ部（２１１）のデータを解釈して、マクロ命令（２Ｓ２）を生成するマクロ命令デコーダ部（２３１）と、前記機能メモリ部（２１２）のデータを解釈して、機能制御信号（２Ｓ２１）を生成する機能デコーダ部（２３２）と、前記カウンタ信号と前記入力オペランドメモリ部（２１３）のデータを解釈して、入力アドレス（２Ｓ３１）と書き込み信号（２Ｓ４）を生成する入力アドレス制御部（２３３）と、前記カウンタ信号と前記命令と前記出力オペランドメモリ部（２１４）のデータを解釈して出力アドレス（２Ｓ３２）と、前記一時記憶部（２８）への書き込み時には出力アドレスを、前記一時記憶部（２８）への読み込み時には入力アドレスを示すアドレス選択信号（２Ｓ３３）を生成する出力アドレス制御部（２３４）と、アドレス選択信号（２Ｓ３３）により入出力アドレスを選択し、前記一時記憶部（２８）へのアドレス（２Ｓ３）を生成するアドレス選択部（２３５）と、を備え、入力レジスタを入力データとして利用して複数の演算を行なう前記演算部（２７）には、機能制御信号により動作が制御される複数の個別演算部１（２７２）〜個別演算部ｎ─１（２７ｎ）とを備え、かつ与えられたマクロ命令をもとに複数の個別演算部の演算結果から命令に適合する演算結果を選択すると演算選択部（２７１）を備えることを特徴とする。
請求項１記載のマイクロプロセッサによれば、従来は一つの命令にエンコードされていたハードウェア情報を個々の命令の単位とし、特に、従来のオペコードを、命令をマクロ的に定義するマクロ命令部分と、その機能を決定する機能部分に分割することにより、同じマクロ命令を用いながら機能部分を変更することにより、アプリケーション毎に演算部の動作を切り替えることができるという効果を持つ。
主に機能部分の変更でカスタマイズを行なうことができるため、コンパイラ等のソフトウェアの変更を最小にすることができるという効果も持つ。
さらに、従来と同等にエンコードを行なえるためメモリ部の容量を抑えることができると共に、命令に関するメモリ部がそれぞれ独立しているため、必要なメモリ部のみの変更を容易に行なえるという効果をあわせて持つ。
【００１２】
請求項２記載の発明は、請求項１記載のマイクロプロセッサにおいて、演算部として、並列に動作可能な複数（ｍ）の演算部である演算ａ部（７７ａ）、演算ｂ部（７７ｂ）〜演算ｍ部（７７ｍ）を備え、これら各演算部へ入力する入力レジスタａ部（７５ａ）、入力レジスタｂ部（７５ｂ）〜入力レジスタｍ部（７５ｍ）を各演算部に対して備え、演算部（２７）の各演算結果である演算結果ａ（７Ｓ７ａ）、演算結果ｂ（７Ｓ７ｂ）〜演算結果ｍ（７Ｓ７ｍ）を各演算部から出力することを特徴とする。
請求項２記載のマイクロプロセッサによれば、演算部を複数同時に実行できる並列型のマイクロプロセッサにも適用できるという効果を持つ。
さらに、柔軟性と高速性を兼ね備えたマイクロプロセッサを提供できるという効果もあわせて持つ。
【００１３】
また、請求項３記載の発明は、請求項１記載のマイクロプロセッサにおいて、マクロ命令部（１１）、機能部（１２）、入力オペランド部（１３）、出力オペランド部（１４）の４つの独立したデータ構造であって、かつ、前記マクロ命令部には、命令カウンタが０〜ｎ─１に対応する「命令カウンタ０マクロ命令部」（１１１）〜「命令カウンタｎ─１マクロ命令部」（１１ｎ）を、前記機能部には、命令カウンタが０〜ｎ─１に対応する「命令カウンタ０機能部」（１２１）〜「命令カウンタｎ─１機能部」（１２ｎ）を、前記入力オペランド部には、命令カウンタが０〜ｎ─１に対応する「命令カウンタ０入力オペランド部」（１３１）〜「命令カウンタｎ─１入力オペランド部」（１３ｎ）を、前記出力オペランド部には、命令カウンタが０〜ｎ─１に対応する「命令カウンタ０出力オペランド部」（１４１）〜「命令カウンタｎ─１出力オペランド部」（１４ｎ）をそれぞれ備えるデータ構造の命令を解釈し実行することを特徴とする。
請求項３記載のマイクロプロセッサによれば、従来は一つの命令にエンコードされていたハードウェア情報を命令の単位とし、さらに、オペコードを、命令をマクロ的に定義する部分と、その動作を決定する機能部分とに分割する。
これにより、同じオペコードを用いながら機能部分を変更することによりアプリケーション毎に演算部の動作を切り替えることができるという効果を持つ。
主に機能部分の変更でカスタマイズを行なうことができるため、コンパイラ等のソフトウェアの変更を最小にすることができるという効果も持つ。
さらに、従来と同等にエンコードを行なえるためコード効率を落すことなく、さらに必要部分のみの変更が容易に行なえるという効果をあわせて持つ。
【００１４】
さらに、請求項４記載の発明は、請求項２記載のマイクロプロセッサにおいて、前記マクロ命令部が複数の演算部の情報を扱えるように、「命令カウンタ０マクロ命令部」から「命令カウンタｎ─１マクロ命令部」のそれぞれに、「命令カウンタ０演算器１マクロ命令部」（６１１１）〜「命令カウンタ０演算器ｍマクロ命令部」（６１１ｍ）から、「命令カウンタｎ─１演算器１マクロ命令部」（６１ｎ１）〜「命令カウンタｎ─１演算器ｍマクロ命令部」（６１ｎｍ）を備え、前記機能部が複数の演算部の情報を扱えるように、「命令カウンタ０機能部」から「命令カウンタｎ─１機能部」のそれぞれに、「命令カウンタ０演算器１機能部」（６２１１）〜「命令カウンタ０演算器ｍ機能部」（６２１ｍ）から、「命令カウンタｎ─１演算器１機能部」（６２ｎ１）〜「命令カウンタｎ─１演算器ｍ機能部」（６２ｎｍ）を備え、前記入力オペランド部が複数の演算部の情報を扱えるように、「命令カウンタ０入力オペランド部」から「命令カウンタｎ─１入力オペランド部」のそれぞれに、「命令カウンタ０演算器１入力オペランド部」（６３１１）〜「命令カウンタ０演算器ｍ入力オペランド部」（６３１ｍ）から、「命令カウンタｎ─１演算器１入力オペランド部」（６３ｎ１）〜「命令カウンタｎ─１演算器ｍ入力オペランド部」（６３ｎｍ）を備え、前記出力オペランド部が複数の演算部の情報を扱えるように、「命令カウンタ０出力オペランド部」から「命令カウンタｎ─１出力オペランド部」のそれぞれに、「命令カウンタ０演算器１出力オペランド部」（６４１１）〜「命令カウンタ０演算器ｍ出力オペランド部」（６４１ｍ）から、「命令カウンタｎ─１演算器１出力オペランド部」（６４ｎ１）〜「命令カウンタｎ─１演算器ｍ出力オペランド部」（６４ｎｍ）を備えることを特徴とする。
請求項４記載のマイクロプロセッサによれば、請求項１記載のマイクロプロセッサの効果を、演算部を複数同時に実行できる並列型のマイクロプロセッサにも適用できるという効果を持つ。
さらに、演算部のカスタマイズを行なえるため、演算部の利用効率をあげることができるという効果もあわせて持つ。
【００１５】
【発明の実施の形態】
この発明の第１の実施の形態のマイクロプロセッサについて、図１を用いて説明する。
従来のマイクロプロセッサは従来例の図９で説明したようにオペコード、オペランド等を要素として一つのデータにエンコードしていた。これを、本発明のマイクロプロセッサの命令は、マクロ命令部（１１）、機能部（１２）、入力オペランド部（１３）、出力オペランド部（１４）を４つに分割して独立したデータ構造で命令を構成する。
マクロ命令部（１１）は演算処理をマクロ的に規定するために利用する。
機能部（１２）はマクロ命令部（１１）により規定されたマクロ命令の詳細な機能を決定するために利用する。
入力オペランド部（１３）は入力データの読み込み元の指定であり、出力オペランド部（１４）は演算結果の書出し先の指定である。
各部分が命令カウンタが０〜ｎ─１のときの１次元のデータとして表現される。この説明でもジャンプや関数コール等の命令カウンタの値が不連続になるような命令は、説明の簡単化のため省略している。
図１は命令カウンタの状態で実行する命令が、マクロ命令部（１１）は、命令カウンタが０のとき実行される命令である「命令カウンタ０命令部」（１１１）〜命令カウンタがｎ─１のとき実行される「命令である命令カウンタｎ─１命令部」（１１ｎ）と順に並んでいる。
機能部（１２）は、命令カウンタが０のとき実行される命令である「命令カウンタ０機能部」（１２１）〜命令カウンタがｎ─１のとき実行される命令である「命令カウンタｎ─１機能部」（１２ｎ）と順に並んでいる。
入力オペランド部（１３）は命令カウンタが０のとき実行される命令である「命令カウンタ０入力オペランド部」（１３１）〜命令カウンタがｎ─１のとき実行される命令である「命令カウンタｎ─１入力オペランド部」（１３ｎ）と順に並んでいる。
出力オペランド部（１４）は命令カウンタが０のとき実行される命令である「命令カウンタ０出力オペランド部」（１４１）〜命令カウンタがｎ─１のとき実行される命令である「命令カウンタｎ─１出力オペランド部」（１４ｎ）と順に並んでいる。
【００１６】
図２は、図１で示されたデータ構造の命令を用いて動作するマイクロプロセッサの構成を示すブロック図である。
入出力バス（２９）は内部リソースだけではなく、外部とも接続されメモリや演算の入出力データの受け渡しに利用される。
マクロ命令メモリ部（２１１）、機能メモリ部（２１２）、入力オペランドメモリ部（２１３）、出力オペランドメモリ部（２１４）は入出力バス（２９）と接続され、外部の他のプロセッサから単純なメモリとしてマップされる。
このメモリに、図１のマクロ命令部（１１）、機能部（１２）、入力オペランド部（１３）、出力オペランド部（１４）のデータがそれぞれ書き込まれる。
マイクロプロセッサの命令の実行順序は、命令カウンタ部（２２）の出力である命令カウンタ信号（２Ｓ１）を元に決定される。
また、各メモリ部（２１１）〜（２１４）はこの命令カウンタ信号（２Ｓ１）をアドレスとして利用してデータのアドレッシングを行なう。命令カウンタ信号（２Ｓ１）が０の時、各メモリ部（２１１）〜（２１４）の０番地がデータとして出力される。
マクロ命令メモリ部（２１１）の出力は、マクロ命令デコーダ部（２３１）に入力され、解釈（デコード）されマクロ命令（２Ｓ２）を生成する。
機能メモリ部（２１２）の出力は、機能デコーダ部（２３２）に入力され、解釈され機能制御信号（２Ｓ２１）を生成する。
入力オペランドメモリ部（２１３）の出力は、入力アドレス制御部（２３３）にカウンタ信号と一緒に入力され、解釈されて、入力時に一時記憶部（２８）の入力アドレス（２Ｓ３１）と、入力レジスタ部（２５）へのデータの書込を制御する書き込み信号（２Ｓ４）を生成する。
出力オペランドメモリ部（２１４）の出力は、出力アドレス制御部（２３４）に、カウンタ信号および命令と一緒に入力され、出力時に一時記憶部（２８）の出力アドレス（２Ｓ３２）と、アドレス選択部（２３５）の選択信号となるアドレス選択信号（２Ｓ３３）を生成する。
アドレス選択部（２３５）の入力は入力アドレスと出力アドレスであり、アドレス選択信号（２Ｓ３３）でどちらを使うかを切り替え、実際に一時記憶部（２８）で利用されるアドレスを出力する。
演算部（２７）にはさらに、同時に動作し他と異なる演算を行なう、個別演算部１（２７２）、個別演算部２（２７３）〜個別演算部ｎ─１（２７ｎ）がある。
個別演算部１〜ｎ─１の演算結果は演算選択部（２７１）に入力され、演算結果（２Ｓ７）の決定にマクロ命令を利用する。
この決定された演算結果は一時記憶部に入力され記憶される。
最終的な演算結果として利用される以外にも、次回以降の演算の入力としても利用することができる。
【００１７】
次に、演算部（２７）の動作について説明する。
演算部（２７）は一時記憶部（２８）のデータを入力レジスタ部（２５）にまずフェッチする。フェッチには書き込み信号（２Ｓ４）が用いられる。入力レジスタ部（２５）の出力は各個別演算部１〜ｎ─１に、入力データ（２Ｓ５）として同じデータが与えられる。個別演算部１〜ｎ─１は機能制御信号を利用して、異なる演算を行なうようにカスタマイズを行なう。同じデータを用いて個別演算部１〜ｎ─１で演算を行なうと、ｎ─１個の演算結果を取得することができる。この演算結果は演算選択部（２７１）に入力される。演算選択部（２７１）は命令を利用して、ｎ−１個から目的とする演算結果を取得する。
【００１８】
図３は図２の演算部の構成を示すブロック図であり、図４は各演算器に対する機能制御信号のマッピングである。
図３および図４を用いて、本発明の第１の実施の形態に係る演算部の演算の手順を説明する。
演算部（３７、図２の２７に相当）を演算器１（３７２）と演算器２（３７３）と演算器３（３７４）と演算器４（３７５）と演算器５（３７６）とで構成する。
機能制御信号（３Ｓ２１、図２の２Ｓ２１に相当）は、演算器１機能制御信号（３Ｓ２１１）が演算器１（３７２）に、演算器２機能制御信号（３Ｓ２１２）が演算器２（３７３）に、演算器３機能制御信号（３Ｓ２１３）が演算器３（３７４）に、演算器４機能制御信号（３Ｓ２１４）が演算器４（３７５）に、演算器５機能制御信号（３Ｓ２１５）が演算器５（３７５）に、それぞれ接続されている。
演算器１（３７２）と演算器３（３７４）は入力の絶対値の演算を行なう演算器である。
演算器１機能制御信号（３Ｓ２１１）は、演算器１（３７２）に作用して演算を行なうかどうかを制御する。
演算器１（３７２）の中間結果１（３Ｓ７１）は、演算を行なう場合には入力１レジスタ部（３５１）の絶対値となり、行なわない場合には入力１レジスタ部（３５１）の値となる。
演算器３機能制御信号（３Ｓ２１３）は、演算器３（３７４）に作用して演算を行なうかどうかを制御する。
演算器３（３７４）の中間結果３（３Ｓ７３）は、演算を行なう場合には入力３レジスタ部（３５３）の絶対値となり、行なわない場合には入力３レジスタ部（３５３）の値となる。
演算器２（３７３）と演算器４（３７５）と演算器５（３７５）は入力の加算もしくは乗算を行なう演算器である。
演算器２機能制御信号（３Ｓ２１２）は、演算器２（３７３）に作用して加算と乗算のどちらを行なうかを制御する。
演算器２（３７３）の中間結果２（３Ｓ７２）は、加算の場合には入力２レジスタ部（３５２）と中間結果１（３Ｓ７１）を加算した値となり、乗算の場合には入力２レジスタ部（３５２）と中間結果１（３Ｓ７１）を乗算した値となる。演算器４機能制御信号（３Ｓ２１４）は、演算器４（３７５）に作用して加算と乗算のどちらを行なうかを制御する。
演算器４（３７５）の中間結果４（３Ｓ７４）は、加算の場合には入力４レジスタ部（３５４）と中間結果３（３Ｓ７３）を加算した値となり、乗算の場合には入力４レジスタ部（３５４）と中間結果３（３Ｓ７３）を乗算した値となる。演算器５機能制御信号（３Ｓ２１５）は、演算器５（３７５）に作用して加算と乗算のどちらを行なうかを制御する。
演算器５（３７５）の中間結果５（３Ｓ７５）は、加算の場合には中間結果２（３Ｓ７２）と中間結果４（３Ｓ７４）を加算した値となり、乗算の場合には中間結果２（３Ｓ７２）と中間結果４（３Ｓ７４）を乗算した値となる。
これら中間結果１〜５は演算選択部（３７１）にすべて入力され、マクロ命令（３Ｓ２）を選択信号として利用することで、マクロ命令に相当する演算結果（３７）を取得できる。
【００１９】
次に、図３における演算器１（３７２）〜演算器５（３７６）を利用して行なう演算と命令との関係を説明する。以下、入力をｘ１〜ｘ４、中間結果をｙ１〜ｙ５、演算結果をｙで表す。また、演算器１、３の演算をｆ（）で、演算器２、４、５の演算をｇ（）で表す。
図５はこのマッピングを示す。
図において、命令として「命令０」の「演算無し」を除くと５つに分類される。しかし、機能制御信号１〜５を０、０、０、０、０とした場合、求める演算結果はｘ１となる。このように、機能制御信号を図５の組み合わせで働かせた場合には、
ｘ１、｜ｘ１｜、ｘ２＋ｘ１、ｘ２＋｜ｘ１｜、ｘ２×ｘ１、ｘ２×｜ｘ１｜、
ｘ３、｜ｘ３｜、ｘ４＋ｘ２、ｘ４＋｜ｘ２｜、ｘ４×ｘ２、ｘ４×｜ｘ２｜、
（ｘ２＋ｘ１）＋（ｘ４＋ｘ２）、（ｘ２＋ｘ１）＋（ｘ４＋｜ｘ２｜）、
（ｘ２＋ｘ１）＋（ｘ４×ｘ２）、（ｘ２＋ｘ１）＋（ｘ４×｜ｘ２｜）、
（ｘ２＋｜ｘ１｜）＋（ｘ４＋ｘ２）、
（ｘ２＋｜ｘ１｜）＋（ｘ４＋｜ｘ２｜）、
（ｘ２＋｜ｘ１｜）＋（ｘ４×ｘ２）、
（ｘ２＋｜ｘ１｜）＋（ｘ４×｜ｘ２｜）、
（ｘ２×ｘ１）＋（ｘ４＋ｘ２）、（ｘ２×ｘ１）＋（ｘ４＋｜ｘ２｜）、
（ｘ２×ｘ１）＋（ｘ４×ｘ２）、（ｘ２×ｘ１）＋（ｘ４×｜ｘ２｜）、
（ｘ２×｜ｘ１｜）＋（ｘ４＋ｘ２）、
（ｘ２×｜ｘ１｜）＋（ｘ４＋｜ｘ２｜）、
（ｘ２×｜ｘ１｜）＋（ｘ４×ｘ２）、
（ｘ２×｜ｘ１｜）＋（ｘ４×｜ｘ２｜）、
（ｘ２＋ｘ１）×（ｘ４＋ｘ２）、（ｘ２＋ｘ１）×（ｘ４＋｜ｘ２｜）、
（ｘ２＋ｘ１）×（ｘ４×ｘ２）、（ｘ２＋ｘ１）×（ｘ４×｜ｘ２｜）、
（ｘ２＋｜ｘ１｜）×（ｘ４＋ｘ２）、
（ｘ２＋｜ｘ１｜）×（ｘ４＋｜ｘ２｜）、
（ｘ２＋｜ｘ１｜）×（ｘ４×ｘ２）、
（ｘ２＋｜ｘ１｜）×（ｘ４×｜ｘ２｜）、
（ｘ２×ｘ１）×（ｘ４＋ｘ２）、（ｘ２×ｘ１）×（ｘ４＋｜ｘ２｜）、
（ｘ２×ｘ１）×（ｘ４×ｘ２）、（ｘ２×ｘ１）×（ｘ４×｜ｘ２｜）、
（ｘ２×｜ｘ１｜）×（ｘ４＋ｘ２）、
（ｘ２×｜ｘ１｜）×（ｘ４＋｜ｘ２｜）、
（ｘ２×｜ｘ１｜）×（ｘ４×ｘ２）、
（ｘ２×｜ｘ１｜）×（ｘ４×｜ｘ２｜）
の４４通りの演算を実行できる。
このことは、同じマクロ命令を利用しながら、機能制御信号を操作することにより、命令の働きを変更できることを意味する。つまり、あるアプリケーションに最適な機能制御信号を決定し、アプリケーション毎にこの最適な機能制御信号を用意しておくことで、同じマクロ命令でも動作はアプリケーション毎にカスタマイズされた、マイクロプロセッサとすることができるのである。
【００２０】
図６は本発明の第２の実施の形態の命令のデータ構造図である。
図６の例は、演算部を複数持ち、複数の演算結果を並列に演算する、マイクロプロセッサで利用される命令のデータ構造である。
マクロ命令部（６１）は、命令カウンタが０に対応する「命令カウンタ０マクロ命令部」（６１１）から、命令カウンタがｎ─１に対応する「命令カウンタｎ─１マクロ命令部」（６１ｎ）と順に並んでいる。
機能部（６２）は、命令カウンタが０に対応する「命令カウンタ０機能部」（６２１）から、命令カウンタがｎ─１に対応する「命令カウンタｎ─１機能部」（６２ｎ）と順に並んでいる。
入力オペランド部（６３）は、命令カウンタが０に対応する「命令カウンタ０入力オペランド部」（３１）から、命令カウンタがｎ─１に対応する「命令カウンタｎ─１入力オペランド部」（６３ｎ）と順に並んでいる。
出力オペランド部（６４）は、命令カウンタが０に対応する「命令カウンタ０出力オペランド部」（６４１）から、命令カウンタがｎ─１に対応する「命令カウンタｎ─１出力オペランド部」（６４ｎ）と順に並んでいる。
これは図１で説明した命令のデータ構造と同じであるが、本例では複数の演算部（７７ａ）〜（７７ｍ）の情報がさらにエンコードされる。
「命令カウンタ０命令部」（６１１）には、「命令カウンタ０演算器１命令部」（６１１１）〜「命令カウンタ０演算器ｍ命令部」（６１１ｍ）があり、「命令カウンタｎ─１命令部」（６１ｎ）には「命令カウンタ０演算器ｍ命令部」（６１ｎ１）〜「命令カウンタｎ─１演算器ｍ命令部」（６１ｎｍ）がある。
「命令カウンタ０機能部」（６２１）には、「命令カウンタ０演算器１機能部」（６２１１）〜「命令カウンタ０演算器ｍ機能部」（６２１ｍ）があり、「命令カウンタｎ─１機能部」（６２ｎ）には、「命令カウンタ０演算器ｍ機能部」（６２ｎ１）〜「命令カウンタｎ─１演算器ｍ機能部」（６２ｎｍ）がある。
「命令カウンタ０入力オペランド部」（６３１）には、「命令カウンタ０演算器１入力オペランド部」（６３１１）〜「命令カウンタ０演算器ｍ入力オペランド部」（６３１ｍ）があり、「命令カウンタｎ─１入力オペランド部」（６３ｎ）には、「命令カウンタ０演算器ｍ入力オペランド部」（６３ｎ１）〜「命令カウンタｎ─１演算器ｍ入力オペランド部」（６３ｎｍ）がある。
「命令カウンタ０出力オペランド部」（６４１）には、「命令カウンタ０演算器１出力オペランド部」（６４１１）〜「命令カウンタ０演算器ｍ出力オペランド部」（６４１ｍ）があり、「命令カウンタｎ出力オペランド部」（６４ｎ）には、「命令カウンタ０演算器ｍ出力オペランド部」（６４ｎ１）〜「命令カウンタｎ─１演算器ｍ出力オペランド部」（６４ｎｍ）がある。
【００２１】
この発明の第２の実施の形態のマイクロプロセッサについて、図７を用いて説明する。
第２の実施の形態は演算部を複数（７７ａ）〜（７７ｍ）持ち、複数の演算結果を並列に演算するマイクロプロセッサの構造である。同時並列に動作する演算ａ部（７７ａ）、演算ｂ部（７７ｂ）〜演算ｍ部（７７ｎ）がありそれぞれ異なる入力データが与えられ、異なる演算結果を得ることができる。
入力データａ（７Ｓ５ａ）は入力レジスタａ部（７５ａ）の出力で、演算ａ部（７７ａ）に接続されている。この入力データを利用して演算ａ部（７７ａ）は演算を行ない、演算結果ａ（７Ｓ７ａ）を生成する。
同様に、入力データｂ（７Ｓ５ｂ）は入力レジスタｂ部（７５ｂ）の出力で、演算ｂ部（７７ｂ）に接続されている。この入力データを利用して演算ｂ部（７７ｂ）は演算を行ない、演算結果ｂ（７Ｓ７ｂ）を生成する。
入力データｍ（７Ｓ５ｍ）は入力レジスタｍ部（７５ｍ）の出力で、演算ｍ部（７７ｍ）に接続されている。この入力データを利用して演算ｃ部（７７ｍ）は演算を行ない、演算結果ｍ（７Ｓ７ｍ）を生成する。
【００２２】
【発明の効果】
請求項１記載のマイクロプロセッサによれば、命令カウンタ部と、一時記憶部と、入力レジスタ部と、演算部とを有するマイクロプロセッサであって、前記命令カウンタ部（２２）の出力であるカウンタ信号（２Ｓ１）をアドレスとして命令を読み込み、その命令をデコードし、デコードの結果により、前記一時記憶部（２８）のデータを入力として前記入力レジスタ部（２５）に取り込み、前記演算部（２７）ではこのデータを基に命令を実行し、再び前記一時記憶部（２８）に演算結果（２Ｓ７）を書き戻し、命令で指示された演算を前記演算部（２７）で実行し演算結果を取得するマイクロプロセッサにおいて、カウンタ信号（２Ｓ１）をアドレスとする、マクロ命令部データを格納するマクロ命令メモリ部（２１１）と、機能部データを格納する機能メモリ部（２１２）と、入力オペランド部データを格納する入力オペランドメモリ部（２１３）と、出力オペランド部データを格納する出力オペランドメモリ部（２１４）を備え、かつ前記マクロ命令メモリ部（２１１）のデータを解釈して、マクロ命令（２Ｓ２）を生成するマクロ命令デコーダ部（２３１）と、前記機能メモリ部（２１２）のデータを解釈して、機能制御信号（２Ｓ２１）を生成する機能デコーダ部（２３２）と、前記カウンタ信号と前記入力オペランドメモリ部（２１３）のデータを解釈して、入力アドレス（２Ｓ３１）と書き込み信号（２Ｓ４）を生成する入力アドレス制御部（２３３）と、前記カウンタ信号と前記命令と前記出力オペランドメモリ部（２１４）のデータを解釈して出力アドレス（２Ｓ３２）と、前記一時記憶部（２８）への書き込み時には出力アドレスを、前記一時記憶部（２８）への読み込み時には入力アドレスを示すアドレス選択信号（２Ｓ３３）を生成する出力アドレス制御部（２３４）と、アドレス選択信号（２Ｓ３３）により入出力アドレスを選択し、前記一時記憶部（２８）へのアドレス（２Ｓ３）を生成するアドレス選択部（２３５）と、を備え、入力レジスタを入力データとして利用して複数の演算を行なう前記演算部（２７）には、機能制御信号により動作が制御される複数の個別演算部１（２７２）〜個別演算部ｎ─１（２７ｎ）とを備え、かつ与えられたマクロ命令をもとに複数の個別演算部の演算結果から命令に適合する演算結果を選択すると演算選択部（２７１）を備えることを特徴とするので、従来は一つの命令にエンコードされていたハードウェア情報を個々の命令の単位とし、特に、従来のオペコードを、命令をマクロ的に定義するマクロ命令部分と、その機能を決定する機能部分に分割することにより、同じマクロ命令を用いながら機能部分を変更することにより、アプリケーション毎に演算部の動作を切り替えることができるという効果を持つ。
また、機能部分の変更でカスタマイズを行なうことができるため、コンパイラ等のソフトウェアの変更を最小にすることができるという効果も持つ。
さらに、従来と同等にエンコードを行なえるためメモリ部の容量を抑えることができると共に、命令に関するメモリ部がそれぞれ独立しているため、必要なメモリ部のみの変更を容易に行なえるという効果をあわせて持つ。
【００２３】
請求項２記載の発明によれば、請求項１記載のマイクロプロセッサにおいて、演算部として、並列に動作可能な複数（ｍ）の演算部である演算ａ部（７７ａ）、演算ｂ部（７７ｂ）〜演算ｍ部（７７ｍ）を備え、これら各演算部へ入力する入力レジスタａ部（７５ａ）、入力レジスタｂ部（７５ｂ）〜入力レジスタｍ部（７５ｍ）を各演算部に対して備え、演算部（２７）の各演算結果である演算結果ａ（７Ｓ７ａ）、演算結果ｂ（７Ｓ７ｂ）〜演算結果ｍ（７Ｓ７ｍ）を各演算部から出力することを特徴とするので、演算部を複数同時に実行できる並列型のマイクロプロセッサにも適用できるという効果を持つ。
さらに、柔軟性と高速性を兼ね備えたマイクロプロセッサを提供できるという効果もあわせて持つ。
【００２４】
また、請求項３記載の発明によれば、請求項１記載のマイクロプロセッサにおいて、マクロ命令部（１１）、機能部（１２）、入力オペランド部（１３）、出力オペランド部（１４）の４つの独立したデータ構造であって、かつ、前記マクロ命令部には、命令カウンタが０〜ｎ─１に対応する「命令カウンタ０マクロ命令部」（１１１）〜「命令カウンタｎ─１マクロ命令部」（１１ｎ）を、前記機能部には、命令カウンタが０〜ｎ─１に対応する「命令カウンタ０機能部」（１２１）〜「命令カウンタｎ─１機能部」（１２ｎ）を、前記入力オペランド部には、命令カウンタが０〜ｎ─１に対応する「命令カウンタ０入力オペランド部」（１３１）〜「命令カウンタｎ─１入力オペランド部」（１３ｎ）を、前記出力オペランド部には、命令カウンタが０〜ｎ─１に対応する「命令カウンタ０出力オペランド部」（１４１）〜「命令カウンタｎ─１出力オペランド部」（１４ｎ）をそれぞれ備えるデータ構造の命令を解釈し実行することを特徴とするので、従来は一つの命令にエンコードされていたハードウェア情報を命令の単位とし、さらに、オペコードを、命令をマクロ的に定義する部分と、その動作を決定する機能部分とに分割する。
これにより、同じオペコードを用いながら機能部分を変更することによりアプリケーション毎に演算部の動作を切り替えることができるという効果を持つ。
主に機能部分の変更でカスタマイズを行なうことができるため、コンパイラ等のソフトウェアの変更を最小にすることができるという効果も持つ。
さらに、従来と同等にエンコードを行なえるためコード効率を落すことなく、さらに必要部分のみの変更が容易に行なえるという効果をあわせて持つ。
【００２５】
さらに、請求項４記載の発明によれば、請求項２記載のマイクロプロセッサにおいて、前記マクロ命令部が複数の演算部の情報を扱えるように、「命令カウンタ０マクロ命令部」から「命令カウンタｎ─１マクロ命令部」のそれぞれに、「命令カウンタ０演算器１マクロ命令部」（６１１１）〜「命令カウンタ０演算器ｍマクロ命令部」（６１１ｍ）から、「命令カウンタｎ─１演算器１マクロ命令部」（６１ｎ１）〜「命令カウンタｎ─１演算器ｍマクロ命令部」（６１ｎｍ）を備え、前記機能部が複数の演算部の情報を扱えるように、「命令カウンタ０機能部」から「命令カウンタｎ─１機能部」のそれぞれに、「命令カウンタ０演算器１機能部」（６２１１）〜「命令カウンタ０演算器ｍ機能部」（６２１ｍ）から、「命令カウンタｎ─１演算器１機能部」（６２ｎ１）〜「命令カウンタｎ─１演算器ｍ機能部」（６２ｎｍ）を備え、前記入力オペランド部が複数の演算部の情報を扱えるように、「命令カウンタ０入力オペランド部」から「命令カウンタｎ─１入力オペランド部」のそれぞれに、「命令カウンタ０演算器１入力オペランド部」（６３１１）〜「命令カウンタ０演算器ｍ入力オペランド部」（６３１ｍ）から、「命令カウンタｎ─１演算器１入力オペランド部」（６３ｎ１）〜「命令カウンタｎ─１演算器ｍ入力オペランド部」（６３ｎｍ）を備え、前記出力オペランド部が複数の演算部の情報を扱えるように、「命令カウンタ０出力オペランド部」から「命令カウンタｎ─１出力オペランド部」のそれぞれに、「命令カウンタ０演算器１出力オペランド部」（６４１１）〜「命令カウンタ０演算器ｍ出力オペランド部」（６４１ｍ）から、「命令カウンタｎ─１演算器１出力オペランド部」（６４ｎ１）〜「命令カウンタｎ─１演算器ｍ出力オペランド部」（６４ｎｍ）を備えることを特徴とするので、請求項１記載のマイクロプロセッサの効果を、演算部を複数同時に実行できる並列型のマイクロプロセッサにも適用できるという効果を持つ。
さらに、演算部のカスタマイズを行なえるため、演算部の利用効率をあげることができるという効果もあわせて持つ。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態の命令のデータ構造図である。
【図２】本発明の第１の実施の形態の構成を示すブロック図である。
【図３】図２の演算部の構成を示すブロック図である。
【図４】本発明の第１の実施の形態の機能制御信号のマッピング図である。
【図５】本発明の第１の実施の形態の命令のマッピング図である。
【図６】本発明の第２の実施の形態の命令のデータ構造図である。
【図７】本発明の第２の実施の形態でのブロック図である。
【図８】従来の実施の形態での命令のデータ構造図である。
【図９】従来の実施の形態での命令のエンコード図である。
【図１０】従来の実施の形態の構成を示すブロック図である。
【図１１】従来の実施の形態での命令のデータ構造図である。
【符号の説明】
１１：マクロ命令部
１１１：命令カウンタ０マクロ命令部
１１ｎ：命令カウンタｎ─１マクロ命令部
１２：機能部
１２１：命令カウンタ０機能部
１２ｎ：命令カウンタｎ─１機能部
１３：入力オペランド部
１３１：命令カウンタ０入力オペランド部
１３ｎ：命令カウンタｎ─１入力オペランド部
１４：出力オペランド部
１４１：命令カウンタ０出力オペランド部
１４ｎ：命令カウンタｎ─１出力オペランド部
２１１：マクロ命令メモリ部
２１２：機能メモリ部
２１３：入力オペランドメモリ部
２１４：出力オペランドメモリ部
２２：命令カウンタ部
２３１：マクロ命令デコーダ部
２３２：機能デコーダ部
２３３：入力アドレス制御部
２３４：出力アドレス制御部
２５：入力レジスタ部
２７：演算部
２７１：演算選択部
２７２：個別演算部１
２７３：個別演算部２
２７ｎ：個別演算部ｎ─１
２８：一時記憶部
２９：入出力バス
２Ｓ１：命令カウンタ信号
２Ｓ２：マクロ命令
２Ｓ２１：機能制御信号
２Ｓ３：アドレス
２Ｓ３１：入力アドレス
２Ｓ３２：出力アドレス
２Ｓ３３：アドレス選択信号
２Ｓ４：書き込み信号
２Ｓ５：入力データ
２Ｓ７：演算結果
３５１：入力１レジスタ部
３５２：入力２レジスタ部
３５３：入力３レジスタ部
３５４：入力４レジスタ部
３７：演算部
３７１：演算選択部
３７２：演算器１
３７３：演算器２
３７４：演算器３
３７５：演算器４
３７６：演算器５
３Ｓ２：マクロ命令
３Ｓ２１：機能制御信号
３Ｓ２１１：演算器１機能制御信号
３Ｓ２１２：演算器２機能制御信号
３Ｓ２１３：演算器３機能制御信号
３Ｓ２１４：演算器４機能制御信号
３Ｓ２１５：演算器５機能制御信号
３Ｓ７：演算結果
３Ｓ７１：中間結果１（ｙ１）
３Ｓ７２：中間結果２（ｙ２）
３Ｓ７３：中間結果３（ｙ３）
３Ｓ７４：中間結果４（ｙ４）
３Ｓ７５：中間結果５（ｙ５）
６１：マクロ命令部
６１１：命令カウンタ０マクロ命令部
６１１１：命令カウンタ０演算器１マクロ命令部
６１１ｍ：命令カウンタ０演算器ｍマクロ命令部
６１ｎ：命令カウンタｎ─１マクロ命令部
６１ｎ１：命令カウンタｎ─１演算器１マクロ命令部
６１ｎｍ：命令カウンタｎ─１演算器ｍマクロ命令部
６２：機能部
６２１：命令カウンタ０機能部
６２１１：命令カウンタ０演算器１機能部
６２１ｍ：命令カウンタ０演算器ｍ機能部
６２ｎ：命令カウンタｎ─１機能部
６２ｎ１：命令カウンタｎ─１演算器１機能部
６２ｎｍ：命令カウンタｎ─１演算器ｍ機能部
６３：入力オペランド部
６３１：命令カウンタ０入力オペランド部
６３１１：命令カウンタ０演算器１入力オペランド部
６３１ｍ：命令カウンタ０演算器ｍ入力オペランド部
６３ｎ：命令カウンタｎ─１入力オペランド部
６３ｎ１：命令カウンタｎ─１演算器１入力オペランド部
６３ｎｍ：命令カウンタｎ─１演算器ｍ入力オペランド部
６４：出力オペランド部
６４１：命令カウンタ０出力オペランド部
６４１１：命令カウンタ０演算器１出力オペランド部
６４１ｍ：命令カウンタ０演算器ｍ出力オペランド部
６４ｎ：命令カウンタｎ─１出力オペランド部
６４ｎ１：命令カウンタｎ─１演算器１出力オペランド部
６４ｎｍ：命令カウンタｎ─１演算器ｍ出力オペランド部
７５ａ：入力レジスタａ部
７５ｂ：入力レジスタｂ部
７５ｍ：入力レジスタｍ部
７７ａ：演算ａ部
７７ｂ：演算ｂ部
７７ｍ：演算ｍ部
７Ｓ５ａ：入力データａ
７Ｓ５ｂ：入力データｂ
７Ｓ５ｍ：入力データｍ
７Ｓ７ａ：演算結果ａ
７Ｓ７ｂ：演算結果ｂ
７Ｓ７ｍ：演算結果ｍ
８１：命令
８１１：命令カウンタ０命令
８１２：命令カウンタ１命令
８１３：命令カウンタ２命令
８１ｎ：命令カウンタｎ─１命令
９１：命令カウンタｘ命令
９１ａ：オペコード
９１ｂ：オペランド１
９１ｃ：オペランド２
【図１】
2004246609.tif 000003
【図２】
2004246609.tif 000004
【図３】
2004246609.tif 000005
【図４】
2004246609.tif 000006
【図５】
2004246609.tif 000007
【図６】
2004246609.tif 000008
【図７】
2004246609.tif 000009
【図８】
2004246609.tif 000010
【図９】
2004246609.tif 000011
【図１０】
2004246609.tif 000012
【図１１】
2004246609.tif 000013