(57)【特許請求の範囲】
【請求項１】
複数の演算器を有し、少なくとも２つの前記演算器を並列に動作させることのできる並列演算プロセッサにおいて、
前記複数の演算器のうちどの演算器を実行するかを実行するのみの組み合わせで指定するＩＤ部と、
前記ＩＤ部で指定された演算器のみの動作を指示する演算記述部と
を有する命令語からなる命令語体系を実行する演算器を備えたことを特徴とする並列演算プロセッサ。
【請求項２】
請求項１記載の並列演算プロセッサにおいて、前記命令語は固定長であり、前記ＩＤ部および演算記述部は可変長であることを特徴とする並列演算プロセッサ。
【請求項３】
請求項２記載の並列演算プロセッサにおいて、前記演算記述部の長さは、ＩＤ部で指定される演算器の個数が少ないほど長いことを特徴とする並列演算プロセッサ。
【請求項４】
複数の演算器を有し、少なくとも２つの前記演算器を並列に動作させることのできる並列演算プロセッサにおいて、
前記演算器に対して並列動作を実行するのみの組み合わせで指定するＩＤ部と、前記演算器への動作指示を行なう演算記述部とを組み合わせた命令語からなる命令語体系を構成する前記命令語を格納した命令メモリと、
該命令メモリに格納された前記ＩＤ部に対して、前記複数の演算器のうちどの演算器を実行するかを実行するのみの組み合わせで指定するＩＤデコーダと、
前記命令メモリに格納された前記演算記述部に対して、前記ＩＤ部で指定された前記演算器の動作を指示する選択部と、
該選択部により選択された演算記述部をデコードする複数の演算デコーダと、
前記ＩＤデコーダの出力により、前記演算デコーダの出力を選択するするマルチプレクサとを備え、
前記演算器が、前記マルチプレクサの出力を入力して指定された演算動作を行うことを特徴とする並列演算プロセッサ。
【請求項５】
複数の演算器を有し、少なくとも２つの前記演算器を並列に動作させることのできる並列演算プロセッサにおいて、
前記複数の演算器のうちどの演算器を実行するかを実行するのみの組み合わせで指定するＩＤ部と、前記ＩＤ部で指定された演算器のみの動作を指示する演算記述部とを有する命令語からなる命令語体系を実行する演算器と、
前記ＩＤ部をデコードするＩＤデコーダと、
前記ＩＤデコーダの出力により演算記述部を選択する選択部と、
前記選択された演算記述部をデコードする複数の演算デコーダと、
前記ＩＤデコーダの出力により、前記演算デコーダの出力を選択するするマルチプレクサとを備え、
前記演算器が、前記マルチプレクサの出力を入力して指定された演算動作を行うことを特徴とする並列演算プロセッサ。
【請求項６】
請求項４又は５記載の並列演算プロセッサにおいて、前記演算デコーダは、演算動作しない演算器に対しては、動作せず（ＮＯＰ）のコードを出力することを特徴とする並列演算プロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッサの構成に関し、特に、複数の演算器を有し、その複数の演算器を用いて並列の演算を行うことができる並列演算プロセッサに関するものである。
【０００２】
【従来の技術】
従来、複数の演算器を有するプロセッサにおいて、その複数の演算器に対する命令語体系（Instruction Set ）にはいろいろのものが存在している。たとえば、（１）１つの命令語により１つの演算器を制御するような命令語体系もある。（２）１つの命令語のなかに、各演算器を制御するためのフィールドを設け、そのフィールドにより各演算器を制御するようにする。これは、命令語が長くなるのでＶＬＩＷ(very   long  instruction   word) と呼ばれている。
【０００３】
そのＶＬＩＷの例を図１を用いて説明する。このＶＬＩＷのプロセッサ・アーキテクチャは、演算器が３個ある例である。
【０００４】
さて、図１（ａ）に演算器が３個あるＶＬＩＷの命令語の例を示している。この命令語には、プロセッサが有する演算器１、演算器２、演算器３に対応するフィールド１、フィールド２、フィールド３がある。この命令語の各フィールドは、各演算器を並列に動作させるためのコードが格納される。
【０００５】
このＶＬＩＷの命令語がプログラム・メモリ中に格納されている様子を示したのが、図１（ｂ）である。図１（ｂ）において、斜線を引いたフィールド以外には、ＮＯＰ（Ｎｏ  Ｏｐｅｒａｔｉｏｎ：動作せず）を意味するコードが格納されている。演算器を１つのみ動作させる場合は、他の演算器に対応する２つのフィールドには、ＮＯＰが格納されている。並列に演算器１と演算器２とを並列に動作させる場合は、フィールド３がＮＯＰとなる。
【０００６】
【発明が解決しようとする課題】
これらの命令語体系を有するプロセッサでは、いろいろな問題がある。たとえば、１つの命令語で１つの演算器を制御するような命令語体系の場合は、複数ある演算器の並列処理を行うことが難しい。また、ＶＬＩＷにおいては、複数ある演算器を並列に動作することは常にはないので、演算器対応に設けた命令語の各フィールドを常に利用しているわけではない。図１（ｂ）に示したＶＬＩＷの命令語を格納したプログラム・メモリにおいて、ＮＯＰのフィールドが多いことに注目されたい。このため、長い命令語のすべての部分を常に有効利用してはいないので、長い命令語を格納するためのメモリが多く必要であり、メモリ効率が悪い。
【０００７】
本発明のプロセッサのアーキテクチャは、これらの問題を解決したプロセッサであり、本発明の目的は並列演算を行うための新しい命令語体系を有するプロセッサを提供することにある。
【０００８】
【課題を解決するための手段】
上記目的を達成するために、本発明は、複数の演算器を有し、少なくとも２つの前記演算器を並列に動作させることのできる並列演算プロセッサにおいて、前記複数の演算器のうちどの演算器を実行するかを実行するのみの組み合わせで指定するＩＤ部と、前記ＩＤ部で指定された演算器のみの動作を指示する演算記述部とを有する命令語からなる命令語体系を実行する演算器を備えたことを特徴とする。
【０００９】
このように命令語体系を構成することで、命令語を演算器対応のフィールドに分ける必要がなく、短い命令語で並列演算の動作を指定することができる。
【００１０】
また、前記命令語は固定長とし、前記ＩＤ部および演算記述部は可変長とすることができる。命令語が固定長であるので、命令語の読み出しを効率よく行うことができる。
【００１１】
前記演算記述部の長さは、ＩＤ部で指定される演算器の個数が少ないほど長く構成することができる。複数の演算器を組み合わせて使用する演算の種類が、演算器が多くなるにつれて少なくなる場合に、このような命令語体系とすることができる。
【００１２】
また、本発明は、複数の演算器を有し、少なくとも２つの前記演算器を並列に動作させることのできる並列演算プロセッサにおいて、前記演算器に対して並列動作を実行するのみの組み合わせで指定するＩＤ部と、前記演算器への動作指示を行なう演算記述部とを組み合わせた命令語からなる命令語体系を構成する前記命令語を格納した命令メモリと、該命令メモリに格納された前記ＩＤ部に対して、前記複数の演算器のうちどの演算器を実行するかを実行するのみの組み合わせで指定するＩＤデコーダと、前記命令メモリに格納された前記演算記述部に対して、前記ＩＤ部で指定された前記演算器の動作を指示する選択部と、該選択部により選択された演算記述部をデコードする複数の演算デコーダと、前記ＩＤデコーダの出力により、前記演算デコーダの出力を選択するするマルチプレクサとを備え、前記演算器が、前記マルチプレクサの出力を入力して指定された演算動作を行うことを特徴とする。
また、複数の演算器を有し、少なくとも２つの前記演算器を並列に動作させることのできる並列演算プロセッサにおいて、前記複数の演算器のうちどの演算器を実行するかを実行するのみの組み合わせで指定するＩＤ部と、前記ＩＤ部で指定された演算器のみの動作を指示する演算記述部とを有する命令語からなる命令語体系を実行する演算器と、前記ＩＤ部をデコードするＩＤデコーダと、前記ＩＤデコーダの出力により演算記述部を選択する選択部と、前記選択された演算記述部をデコードする複数の演算デコーダと、前記ＩＤデコーダの出力により、前記演算デコーダの出力を選択するするマルチプレクサとを備え、前記演算器が、前記マルチプレクサの出力を入力して指定された演算動作を行うことを特徴とする。
【００１３】
また、前記演算デコーダは、演算動作しない演算器に対しては、動作せず（ＮＯＰ）のコードを出力している。
【００１４】
【発明の実施の形態】
本発明の実施形態を、図面を参照して詳細に説明する。
【００１５】
図２（ａ）に、本発明による命令語体系の例を示す。この例は、並列に動作する演算器１、演算器２および演算器３の３つの演算器を有するプロセッサに対する命令語である。命令語は、クラス１、クラス２およびクラス３に分類される。そして、クラス１は、演算器１、演算器２および演算器３の内１つの演算器に対する命令語である。クラス２は、演算器１と演算器２、演算器２と演算器３、および演算器３と演算器１の各２つの演算器を並列に動作させる命令語である。そして、クラス３は、全ての演算器を並列に動作させる命令語である。このクラス別に分類するために、各命令語の先頭から数ビットは、このクラスを表すＩＤを付与している。
【００１６】
そして、この動作すべき演算器を示すクラス別を表すＩＤおよび各演算器への動作（オペレーション）指示を行う部分（演算記述部）は、可変長である。そして、クラスＩＤと演算記述部との和である命令語の長さは、命令語のメモリからの読み出し単位での固定長である。このように構成することにより、効率的な命令語体系とすることができる。これを以下に、詳しく説明する。
【００１７】
クラスＩＤの長さは、一般的に
クラス１のＩＤ＜クラス２のＩＤ＜クラス３のＩＤ
とする。このため、当然演算記述部の長さの関係は、
クラス１の演算記述部＞クラス２の演算記述部＞クラス３の演算記述部
である。このように命令語を定義できることは、本願発明者において、複数の演算器を並列に動作させる場合に必要な各演算器に与える演算記述部の種類は、並列度が高いほど少ない種類であることを発見したことにある。このため、このように、クラスＩＤと演算記述部との組み合わせにより、各演算器単独で動作する場合は、効率的な命令語体系が構成できる。
【００１８】
この命令語を格納した命令メモリの様子を図２（ｂ）に示す。図１（ｂ）に示したＶＬＩＷの命令メモリと比較すると、短い命令語で効率よく格納することができる。
【００１９】
このように命令語体系を構成することで、命令語を演算器対応のフィールドに分ける必要がなく、短い命令語で効率よく並列演算の動作を指定することができる。
【００２０】
上記の３つの演算器を有するプロセッサの具体的な構成例を、図３および図４を用いて説明する。図３は、このプロセッサの命令語のフォーマットである。図４は、この様な命令語フォーマットを有する場合の命令語デコーダの構成を示すブロック図である。
【００２１】
図３において、このＩＤは４種類の命令語を分類している。それは、
タイプＩ（０）：演算器Ａのみを動作
タイプＩＩ（１０）：演算器Ｂのみを動作
タイプＩＩＩ（１１０）：演算器Ｂおよび演算器Ｃを動作
タイプＩＶ（１１１）：演算器Ａ、演算器Ｂおよび演算器Ｃを動作
である。上記のクラス分けと対応させると、
クラス１：タイプＩおよびタイプＩＩ
クラス２：タイプＩＩＩ
クラス３：タイプＩＶ
となる。この場合、プロセッサの種類等により、演算器Ｃを単独に動作させる必要がないので、そのような命令は用意されていない。また、演算器ＡおよびＢ、演算器ＣおよびＡを並列に動作させる必要がないのでそのような命令は用意されていない。もちろん、そのような命令が必要な場合は、その命令に対するＩＤ、演算記述部を定める必要がある。
【００２２】
さて、上記のような命令語をデコードするプロセッサの命令語デコーダの部分の構成例を図４を用いて詳しく説明する。
【００２３】
命令メモリ３０１から読み出された命令語は、命令語デコーダ３０２でデコードされて、３つの演算器である演算器Ａ３０３、演算器Ｂ３０４、演算器Ｃ３０５に印加され、演算動作を行う。動作しない演算器には、ＮＯＰ（動作せず）を意味するコード（例えば、ａｌｌ  ０：全てゼロ）が印加される。
【００２４】
つぎに、命令デコーダ語３０２の内部構成を説明する。
【００２５】
命令メモリ３０１からの命令において、ＩＤ部分（最大３ビット）は、ＩＤデコーダ３５１に入力する。ＩＤデコーダ３５１においてデコードされた出力は、選択回路３５２および３つのマルチプレクサ３５７、３５８および３５９に入力して、選択するための信号として利用される。
【００２６】
さて、命令語の演算記述部は、ＩＤデコーダ３５１からの出力により選択回路３５２で各タイプ別に選択される。タイプ別に選別された命令語の演算記述部は、タイプ別の演算デコーダ３５３〜３５６にそれぞれ入力されて、各タイプ毎に、演算器Ａ，Ｂ，Ｃを動作させるコードにデコードされる。動作しない演算器に対してはＮＯＰを出力する。出力された各演算器ごとのコードは、ＩＤデコーダ３５１からの信号により、マルチプレクサ３５７〜３５９で各演算器Ａ、ＢおよびＣに入力される。各演算器は、入力されたコードにより指定された動作を行う。
【００２７】
上記の例では、命令語の演算記述部のみを命令デコーダに入力したが、ＩＤ部を含む命令語全体を各演算デコーダに入力してもよい。
【００２８】
上記で説明した構成は、特定の演算器を組み合わせた並列処理を用いることの多い信号処理プロセッサ（ＤＳＰ：デジタル・シグナル・プロセッサ）に適用することが最適であるが、もちろん、汎用の並列演算プロセッサにも適用することができる。
【００２９】
【発明の効果】
上記の説明のように、本発明の命令語構成を用いると、並列演算プロセッサにおいて、命令語を格納している命令メモリを有効に利用できる。
【図面の簡単な説明】
【図１】従来のＶＬＩＷの命令語を説明する図である。
【図２】本発明の命令語体系の構成例を説明する図である。
【図３】本発明の命令語の具体的な例を示す図である。
【図４】図３に示した命令語をデコードするためのブロック図である。
【符号の説明】
３０１  命令メモリ
３０２  命令語デコーダ
３０３  演算器Ａ
３０４  演算器Ｂ
３０５  演算器Ｃ
３５１  ＩＤデコーダ
３５２  選択回路
３５３〜３５６  タイプ別の演算デコーダ
３５７〜３５９  マルチプレクサ
【図１】
0003727434.tif 000002
【図２】
0003727434.tif 000003
【図３】
0003727434.tif 000004
【図４】
0003727434.tif 000005