(57)【特許請求の範囲】
【請求項１】
少なくとも第１と第２の２つの命令スロットを含み、それぞれに命令を格納する命令レジスタと、
前記命令レジスタの前記第１の命令スロットに格納された命令を解読する第１のデコーダと、
前記命令レジスタの前記第２の命令スロットに格納された命令を解読する第２のデコーダと、
前記第１のデコーダによって制御され、少なくとも第１の単位実行手段からなる第１の命令実行手段グループと、
前記第２のデコーダによって制御され、少なくとも第２と第３の単位実行手段からなる第２の命令実行手段グループとを備えた演算処理装置であって、
前記第１のデコーダが出力する制御情報は前記第１の命令実行手段グループおよび前記第２の命令実行手段グループに入力され、
前記第１のデコーダが前記第１の命令スロットにある特定命令を検出すると、
前記第１のデコーダは、前記特定命令を解読するとともに、前記解読結果に基づいて前記制御情報を出力して前記第１の単位実行手段と前記第２の単位実行手段とを同時に制御し、
前記第２の単位実行手段は、前記制御情報に基づき、前記特定命令により定められた命令実行を行う
ことを特徴とする演算処理装置。
【請求項２】
少なくとも第１と第２の２つの命令スロットを含み、それぞれに命令を格納する命令レジスタと、
前記命令レジスタの前記第１の命令スロットに格納された命令を解読する第１のデコーダと、
前記命令レジスタの前記第２の命令スロットに格納された命令を解読する第２のデコーダと、
前記第１のデコーダによって制御され、少なくとも第１の単位実行手段からなる第１の命令実行手段グループと、
前記第２のデコーダによって制御され、少なくとも第２と第３の単位実行手段からなる第２の命令実行手段グループと、
前記第１のデコーダが出力する第１の制御情報と前記第２のデコーダが出力する第２の制御情報とを入力し、前記第１の制御情報もしくは前記第２の制御情報のいずれか１つを選択し、前記第２の単位実行手段に出力するセレクタと
を備えた演算処理装置であって、
前記第１のデコーダが前記第１の命令スロットにある特定命令を検出すると、
前記第１のデコーダは、前記特定命令を解読するとともに、前記解読結果に基づいて前記第１の制御情報を出力して前記第１の単位実行手段と前記第２の単位実行手段とを同時に制御し、
前記セレクタは前記第１の制御情報を選択して前記第２の単位実行手段に出力し、
前記第２の単位実行手段は、前記第１の制御情報に基づき、前記特定命令により定められた命令実行を行う
ことを特徴とする演算処理装置。
【請求項３】
前記第１のデコーダが前記第１の命令スロットにある前記特定命令を解読するとき、
前記第２のデコーダは、前記第２の命令スロットにあって、前記特定命令と並んで配置される命令を解読するとともに、前記解読結果に基づいて前記第３の単位実行手段を制御することを特徴とする請求項１から２のいずれか１項に記載の演算処理装置。
【請求項４】
少なくとも第１と第２の２つの命令スロットを含み、それぞれに命令を格納する命令レジスタと、
前記命令レジスタの前記第１の命令スロットに格納された命令を解読する第１のデコーダと、
前記命令レジスタの前記第２の命令スロットに格納された命令を解読する第２のデコーダと、
前記第１のデコーダによって制御され、少なくとも第１と第２の単位実行手段からなる第１の命令実行手段グループと、
前記第２のデコーダによって制御され、少なくとも第３と第４の単位実行手段からなる第２の命令実行手段グループとを備えた演算処理装置であって、
前記第１のデコーダが出力する第１の制御情報は前記第１の命令実行手段グループおよび前記第２の命令実行手段グループに入力され、
前記第２のデコーダが出力する第２の制御情報は前記第１の命令実行手段グループおよび前記第２の命令実行手段グループに入力され、
前記第１のデコーダが前記第１の命令スロットにある特定命令を検出すると、
前記第１のデコーダは、前記特定命令を解読するとともに、前記解読結果に基づいて前記第１の制御情報を出力して前記第２の単位実行手段と前記第３の単位実行手段とを同時に制御し、
前記第３の単位実行手段は、前記第１の制御情報に基づき、前記特定命令により定められた命令実行を行い、
前記第２のデコーダが前記第２の命令スロットにある前記特定命令を検出すると、
前記第２のデコーダは、前記特定命令を解読するとともに、前記解読結果に基づいて前記第２の制御情報を出力して前記第２の単位実行手段と前記第３の単位実行手段とを同時に制御し、
前記第２の単位実行手段は、前記第２の制御情報に基づき、前記特定命令により定められた命令実行を行う
ことを特徴とする演算処理装置。
【請求項５】
少なくとも第１と第２の２つの命令スロットを含み、それぞれに命令を格納する命令レジスタと、
前記命令レジスタの前記第１の命令スロットに格納された命令を解読する第１のデコーダと、
前記命令レジスタの前記第２の命令スロットに格納された命令を解読する第２のデコーダと、
前記第１のデコーダによって制御され、少なくとも第１と第２の単位実行手段からなる第１の命令実行手段グループと、
前記第２のデコーダによって制御され、少なくとも第３と第４の単位実行手段からなる第２の命令実行手段グループと、
前記第１のデコーダが出力する第１の制御情報と前記第２のデコーダが出力する第２の制御情報とを入力し、前記第１の制御情報もしくは前記第２の制御情報のいずれか１つを選択し、前記第２の単位実行手段に出力する第１のセレクタと、
前記第１のデコーダが出力する第１の制御情報と前記第２のデコーダが出力する第２の制御情報とを入力し、前記第１の制御情報もしくは前記第２の制御情報のいずれか１つを選択し、前記第３の単位実行手段に出力する第２のセレクタとを備えた演算処理装置であって、
前記第１のデコーダが前記第１の命令スロットにある特定命令を検出すると、
前記第１のデコーダは、前記特定命令を解読するとともに、前記解読結果に基づいて前記第１の制御情報を出力して前記第２の単位実行手段と前記第３の単位実行手段とを同時に制御し、
前記第２のセレクタは前記第１の制御情報を選択して前記第３の単位実行手段に出力し、
前記第３の単位実行手段は、前記第１の制御情報に基づき、前記特定命令により定められた命令実行を行い、
前記第２のデコーダが前記第２の命令スロットにある前記特定命令を検出すると、
前記第２のデコーダは、前記特定命令を解読するとともに、前記解読結果に基づいて前記第２の制御情報を出力して前記第２の単位実行手段と前記第３の単位実行手段とを同時に制御し、
前記第１のセレクタは前記第２の制御情報を選択して前記第２の単位実行手段に出力し、
前記第２の単位実行手段は、前記第２の制御情報に基づき、前記特定命令により定められた命令実行を行う
ことを特徴とする演算処理装置。
【請求項６】
前記第１のデコーダが前記第１の命令スロットにある前記特定命令を解読するとき、
前記第２のデコーダは、前記第２の命令スロットにあって、前記特定命令と並んで配置される命令を解読するとともに、前記解読結果に基づいて前記第４の単位実行手段を制御し、
前記第２のデコーダが前記第２の命令スロットにある前記特定命令を解読するとき、
前記第１のデコーダは、前記第１の命令スロットにあって、前記特定命令と並んで配置される命令を解読するとともに、前記解読結果に基づいて前記第１の単位実行手段を制御することを特徴とする請求項４から５のいずれか１項に記載の演算処理装置。
【請求項７】
前記特定命令は、２つのオペランドを共通に用いて、前記オペランドに対する加算操作と減算操作とを行う命令であることを特徴とする請求項１から６のいずれか１項に記載の演算処理装置。
【請求項８】
複数の命令を並列に実行する演算処理装置であって、
前記演算処理装置は、命令を実行する第１の単位実行手段、第２の単位実行手段および第３の単位実行手段を備え、
特定命令以外の複数の命令を並列実行する場合、１つの命令を前記第１の単位実行手段で、他の１つの命令を前記第２の単位実行手段で、並列に実行し、
前記特定命令を含む複数の命令を並列実行する場合、前記特定命令でない１つの命令を前記第３の単位実行手段で、前記特定命令を前記第１の単位実行手段および前記第２の単位実行手段で、並列に実行することを特徴とする演算処理装置。
【請求項９】
前記演算処理装置は、１つ以上の単位実行手段からなる複数の命令実行手段グループを有し、
少なくとも前記第１の単位実行手段と前記第２の単位実行手段とは異なる前記命令実行手段グループに属し、
特定命令以外の複数の命令は、異なる前記命令実行手段グループに属する単位実行手段で並列に実行可能である請求項８記載の演算処理装置。
【請求項１０】
前記演算処理装置は、１つ以上の単位実行手段からなる複数の命令実行手段グループを有し、
前記第１の単位実行手段は、前記第３の単位実行手段とは異なる前記命令実行手段グループに属し、
特定命令以外の複数の命令を並列実行する場合、１つの命令を前記第１の単位実行手段で、他の１つの命令を前記第３の単位実行手段で、並列に実行することを特徴とする請求項８記載の演算処理装置。
【請求項１１】
前記第１の単位実行手段と前記第２の単位実行手段とが異なる前記命令実行手段グループに属することを特徴とする請求項１０記載の演算処理装置。
【請求項１２】
前記演算処理装置は、さらに第１の命令解読手段および第２の命令解読手段を有し、
特定命令以外の複数の命令を並列実行する場合、１つの命令を解読した前記第１の命令解読手段が出力する実行制御信号が前記第１の単位実行手段を制御し、他の１つの命令を解読した前記第２の命令解読手段が出力する実行制御信号が前記第２の単位実行手段を制御し、
前記特定命令を含む複数の命令を並列実行する場合、前記特定命令でない１つの命令を解読した前記第２の命令解読手段が出力する実行制御信号が前記第３の単位実行手段を制御し、前記特定命令を解読した前記第１の命令解読手段が出力する実行制御信号が前記第１の単位実行手段および前記第２の単位実行手段を制御する請求項８から１１いずれか記載の演算処理装置。
【請求項１３】
前記第１の命令解読手段または前記第２の命令解読手段が出力するいずれか一方の実行制御信号を選択して前記第１の単位実行手段へと入力する第１のセレクタと、
前記第１の命令解読手段または前記第２の命令解読手段が出力するいずれか一方の実行制御信号を選択して前記第２の単位実行手段へと入力する第２のセレクタとをさらに備え、
前記第１の単位実行手段および前記第２の単位実行手段は、各々、入力された実行制御信号に基づいて命令実行を行うことを特徴とする請求項１２記載の演算処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は演算処理装置に関し、特にVLIW(Very  Long  Instruction  Word)と言われる長語命令型のマイクロプロセッサに関する。
【０００２】
【従来の技術】
近年、高速処理を目的として、長語命令型により、複数の命令を同時に実行するマイクロプロセッサが開発されている。
【０００３】
長語命令型のマイクロプロセッサの一例としては、各命令スロット毎に各種演算手段、データ転送手段等の複数の命令実行手段のグループを対応させ、実行時には、各命令は、その命令が格納されている命令スロットに対応したグループの中にある命令実行手段を用いて実行する方法がある。このような技術として、例えば特開平５−１１９７９号公報に記載されたものがある。
【０００４】
図１４は上記従来の演算処理装置の概念図を示している。図１４において1401は、２つの命令スロットを持つ長語命令の命令レジスタであり、1402、1403は、それぞれ、命令レジスタ1401の第1命令スロット、第2命令スロットと接続する命令実行手段グループであり、1404、1405はデコードされた命令の出力を、出力x,yから選択するセレクタであり、1408はデータ転送手段であり、1409、1410は算術演算手段であり、1411は乗算手段であり、1412はレジスタファイルである。
【０００５】
以上のように構成された従来の演算処理装置について、以下、その動作を述べる。
【０００６】
まず、１つの長語命令を構成する２つの命令が、命令レジスタ1401の第1命令スロットおよび第2命令スロットに格納される。次に、これらの命令スロットに格納された第1命令および第2命令が、それぞれ、命令実行手段グループ1402、1403に転送され、デコーダ1404、1405でデコードされる。デコーダ1404でデコードされた命令は、データ転送手段1408および算術演算手段1409に転送される。デコーダ1405でデコードされた命令は、算術演算手段1410および乗算手段1411に転送される。データ転送手段1408は、レジスタファイル1412のデータをレジスタ間転送する。算術演算手段1409、1410は、レジスタファイル1412のデータに対し、加算もしくは減算を実行し、結果をレジスタファイル1412に格納する。乗算手段1411は、レジスタファイル1412のデータに対し、乗算を実行し、結果をレジスタファイル1412に格納する。
【０００７】
【発明が解決しようとする課題】
しかしながら上記のような構成では、任意の命令スロットの命令が他の命令スロットに対応した命令実行手段を用いることができなかった。
【０００８】
具体的に、各命令スロットには命令実行手段としてそれぞれ１つずつの算術演算手段を持つ図１４に示されるようなプロセッサを想定して説明する。このプロセッサでは、２つの同じ変数の和と差の両方を計算する命令（加減算命令）、すなわち１つの命令スロットの命令が複数の算術演算手段を用いる命令を定義することができない。これは、一般にＶＬＩＷ方式のプロセッサでは、命令が使うことができる命令実行手段と命令スロットとが１対１に固定されているからである。そしてその結果、２つの同じ変数の和と差を求める際には、加算命令と減算命令の２命令を実行する必要があり、命令数とサイクル数が多くなる、という問題点を有していた。
【０００９】
一方、ＶＬＩＷ方式のプロセッサでは、並列に処理できる命令が存在する場合には複数の命令スロットに命令が入ることとなるが、存在しない場合には命令が入らない命令スロットが存在するため、この命令スロットに対する命令実行手段が遊んでしまうことにもなる。
【００１０】
特に近年のマルチメディア処理においては加減算命令が多用されるため、上記の問題点はこのような処理では極めて顕著になる。
【００１１】
本発明は上記問題点に鑑み、その目的は、少ないハードウエアで複数の操作を含む命令を１つのスロットに定義できる長語命令型の演算処理装置を提供することにある。
【００１２】
【課題を解決するための手段】
上記問題点を解決するために、本発明の演算処理装置は、少なくとも第１と第２の２つの命令スロットを含み、それぞれに命令を格納する命令レジスタと、前記命令レジスタの前記第１の命令スロットに格納された命令を解読する第１のデコーダと、前記命令レジスタの前記第２の命令スロットに格納された命令を解読する第２のデコーダと、前記第１のデコーダによって制御され、少なくとも第１の単位実行手段からなる第１の命令実行手段グループと、前記第２のデコーダによって制御され、少なくとも第２と第３の単位実行手段からなる第２の命令実行手段グループとを備えた演算処理装置であって、前記第１のデコーダが出力する制御情報は前記第１の命令実行手段グループおよび前記第２の命令実行手段グループに入力され、前記第１のデコーダが前記第１の命令スロットにある特定命令を検出すると、前記第１のデコーダは、前記特定命令を解読するとともに、前記解読結果に基づいて前記制御情報を出力して前記第１の単位実行手段と前記第２の単位実行手段とを同時に制御し、前記第２の単位実行手段は、前記制御情報に基づき、前記特定命令により定められた命令実行を行うことを特徴とする演算処理装置。
【００１３】
ここで、前記第１のデコーダが前記第１の命令スロットにある前記特定命令を解読するとき、前記第２のデコーダは、前記第２の命令スロットにあって、前記特定命令と並んで配置される命令を解読するとともに、前記解読結果に基づいて前記第３の単位実行手段を制御するとしてもよい。
【００１４】
また本発明の演算処理装置は、少なくとも第１と第２の２つの命令スロットを含み、それぞれに命令を格納する命令レジスタと、前記命令レジスタの前記第１の命令スロットに格納された命令を解読する第１のデコーダと、前記命令レジスタの前記第２の命令スロットに格納された命令を解読する第２のデコーダと、前記第１のデコーダによって制御され、少なくとも第１と第２の単位実行手段からなる第１の命令実行手段グループと、前記第２のデコーダによって制御され、少なくとも第３と第４の単位実行手段からなる第２の命令実行手段グループとを備えた演算処理装置であって、前記第１のデコーダが出力する第１の制御情報は前記第１の命令実行手段グループおよび前記第２の命令実行手段グループに入力され、前記第２のデコーダが出力する第２の制御情報は前記第１の命令実行手段グループおよび前記第２の命令実行手段グループに入力され、前記第１のデコーダが前記第１の命令スロットにある特定命令を検出すると、前記第１のデコーダは、前記特定命令を解読するとともに、前記解読結果に基づいて前記第１の制御情報を出力して前記第２の単位実行手段と前記第３の単位実行手段とを同時に制御し、前記第３の単位実行手段は、前記第１の制御情報に基づき、前記特定命令により定められた命令実行を行い、前記第２のデコーダが前記第２の命令スロットにある前記特定命令を検出すると、前記第２のデコーダは、前記特定命令を解読するとともに、前記解読結果に基づいて前記第２の制御情報を出力して前記第２の単位実行手段と前記第３の単位実行手段とを同時に制御し、前記第２の単位実行手段は、前記第２の制御情報に基づき、前記特定命令により定められた命令実行を行うことを特徴とする。
【００１５】
ここで、前記第１のデコーダが前記第１の命令スロットにある前記特定命令を解読するとき、前記第２のデコーダは、前記第２の命令スロットにあって、前記特定命令と並んで配置される命令を解読するとともに、前記解読結果に基づいて前記第４の単位実行手段を制御し、前記第２のデコーダが前記第２の命令スロットにある前記特定命令を解読するとき、前記第１のデコーダは、前記第１の命令スロットにあって、前記特定命令と並んで配置される命令を解読するとともに、前記解読結果に基づいて前記第１の単位実行手段を制御するとしてもよい。
【００１６】
また上記の各演算処理装置は、前記特定命令は、２つのオペランドを共通に用いて、前記オペランドに対する加算操作と減算操作とを行う命令であるとしてもよい。
【００１７】
【発明の実施の形態】
以下、本発明の実施の形態について、図を用いて説明する。
【００１８】
図１は本実施の形態の演算処理装置の概念図を示す。図１において101は、２つの命令スロットを持つ長語命令の命令レジスタであり、102、103は、それぞれ、命令レジスタ101の第1命令スロット、第2命令スロットと接続する命令実行手段グループであり、104、105は、それぞれ、命令レジスタ101の第1命令スロットおよび第2命令スロットに割り当てられた命令をデコードするデコーダであり、106、107は出力する命令を、入力a,bの命令から選択するセレクタであり、108はデータ転送手段であり、109、110は算術演算手段であり、111は乗算手段であり、112はレジスタファイルである。
【００１９】
以上のように構成された演算処理装置について、以下、その動作を述べる。
まず、１つの長語命令を構成する２つの命令が、命令レジスタ101の第1命令スロットおよび第2命令スロットに格納される。
【００２０】
命令の種類を、図２に示す。この演算装置においては、図２の６種類の命令が定義されている。図中、Rn,Rmはいずれも、レジスタファイル112の中にある１つのレジスタを表す変数である。ニーモニックの項は、命令スロットに記述される命令の内容を示す。配置スロットの項は、各命令スロットに、当該命令が配置可能かどうかを示し、第1、第2はそれぞれ、第1命令スロット、第2命令スロットを示す。例えば、データ転送命令は、第1命令スロットに配置することはできるが、第2命令スロットに配置することはできない。また、加減算命令を第1命令スロットに格納した場合、第2命令スロットには、乗算命令、無動作命令以外の命令を格納することはできない。同様に、加減算命令を第2命令スロットに格納した場合、第1命令スロットには、データ転送命令、無動作命令以外の命令を格納することはできない。
【００２１】
次に、これらの命令スロットに格納された第1命令および第2命令が、それぞれ、命令実行手段グループ102、103に転送され、図３、図４に従い、デコーダ104、105でデコードされる。
【００２２】
図３および図４において、レジスタ1、レジスタ2は、操作するデータが格納されているレジスタ変数を示す。但し、操作が無動作の時は、レジスタ変数は指定されない。
【００２３】
デコーダ104、105は、入力された命令のニーモニックをデコードし、出力x,yのそれぞれに対して、操作内容と、操作するデータの２つのレジスタ変数を出力する。図３、図４に示すように、転送命令、加算命令、減算命令、乗算命令は、従来の演算処理装置と同じようにデコードされ、デコーダの属する命令実行手段グループ内で転送される。これに対し、加減算命令は、加算と減算の２つの操作にデコードされた後、加算はデコーダの属する命令実行手段グループ内で転送され、減算は、別の命令実行手段グループに転送される。
【００２４】
デコーダ104の出力xからセレクタ106の入力aに転送された操作内容およびレジスタ変数と、デコーダ105の出力xからセレクタ106の入力bに転送された操作内容およびレジスタ変数は、図５に従い、いずれか一方がセレクタ106で選択され、算術演算手段109に転送される。セレクタ106は、入力aまたは入力bに、加算操作または減算操作があれば、それを選択し、出力する。もし、加算、減算のいずれもない場合、無動作を出力する。命令の格納時に、加減算命令を第2命令スロットに格納した場合、第1命令スロットには、データ転送命令、無動作命令以外の命令を格納することはできないという制限があるので、入力aと入力bの両方に、同時に加算操作または減算操作が入力されることはない。
【００２５】
デコーダ105の出力yからセレクタ107の入力bに転送された命令と、デコーダ104の出力yからセレクタ107の入力aに転送された命令は、図６に従い、いずれか一方がセレクタ107で選択され、算術演算手段110に転送される。セレクタ107は、セレクタ106と同様、入力aまたは入力bに、加算操作または減算操作があれば、それを選択し、出力する。もし、加算操作、減算操作のいずれもない場合、無動作を出力する。命令の格納時に、加減算命令を第1命令スロットに格納した場合、第2命令スロットには、乗算命令、無動作命令以外の命令を格納することはできないという制限があるので、入力aと入力bの両方に、同時に加算操作または減算操作が入力されることはない。
【００２６】
デコーダ104の出力yから出力された命令の操作内容およびレジスタ変数は、データ転送手段108に入力される。データ転送手段108は、転送操作が入力された場合、図７に従い、レジスタファイル112にあり、レジスタ変数の示すレジスタ間で、データ転送を実行する。その他の操作が入力されても、動作しない。
【００２７】
セレクタ106、107から出力された命令の操作内容およびレジスタ変数は、それぞれ、算術演算手段109、110に入力される。算術演算手段109、110は、加算操作、もしくは減算操作が入力された場合、それぞれ、図８、図９に従い、レジスタファイル112にあり、レジスタ変数の示すレジスタに対して、加算もしくは減算を実行する。無動作操作が入力されても、動作しない。
【００２８】
デコーダ105の出力yから出力された命令の操作内容およびレジスタ変数は、乗算手段111に入力される。乗算手段111は、乗算操作が入力された場合、図１０に従い、レジスタファイル112にあり、レジスタ変数の示すレジスタに対して、乗算を実行する。その他の操作が入力されても、動作しない。
【００２９】
このように、本実施の形態の演算処理装置は、第1命令スロットもしくは第2命令スロットに加減算命令が格納された時、デコーダによって、加算と減算にデコードし、２つの命令実行手段グループにある算術演算手段を用いて、加算と減算を実行する。
【００３０】
次に、デコーダ104及びデコーダ105について具体的に説明する。
まず、各命令は、図１６に示すように、nop,mov,addなどからなる第1フィールドと、操作するレジスタを指定する第2、第3フィールドから構成されている。
【００３１】
次に、デコーダ104は、図１７に示すように、デコード部1041、1042と制御部1043とマルチプレクサ1044から構成されており、デコード部1041は、命令の第1フィールドを入力し、データ転送命令、加算命令、減算命令、無動作命令に対して、それぞれ転送、加算、減算、無動作の各操作を出力する。デコード部1042は、命令の第1フィールドを入力し、加減算命令に対して、マルチプレクサ1044に加算操作を出力し、出力yに減算操作を出力し、制御部1043に制御信号を送る。マルチプレクサ1044は、デコード部1041でデータ転送命令、加算命令、減算命令、無動作命令のいずれかの命令がデコードされた時は、デコード部1041から出力された操作を出力xに出力し、デコード部1042で加減算命令がデコードされた時は、加算操作を出力xに出力する。制御部1043は、デコード部1042から制御信号が送られない時は、第２、第３フィールドの内容を出力xのそれぞれレジスタ1、レジスタ2に出力し、制御信号が送られる時は、第２、第３フィールドの内容を出力xのそれぞれレジスタ2、レジスタ1に出力するとともに、出力yのそれぞれレジスタ1、レジスタ2にも出力する。
【００３２】
また、デコーダ105は、図１８に示すように、デコード部1051、1052と制御部1053とマルチプレクサ1054から構成されており、デコード部1051は、命令の第１フィールドを入力し、加算命令、減算命令、乗算命令、無動作命令に対して、それぞれ加算、減算、乗算、無動作の各操作を出力する。デコード部1052は、命令の第１フィールドを入力し、加減算命令に対して、出力xに減算操作を出力し、マルチプレクサ1054に加算操作を出力し、制御部1053に制御信号を送る。マルチプレクサ1054は、デコード部1051で加算命令、減算命令、乗算命令、無動作命令のいずれかの命令がデコードされた時は、デコード部1051から出力された操作を出力yに出力し、デコード部1052で加減算命令がデコードされた時は、加算操作を出力yに出力する。制御部1053は、デコード部1052から制御信号が送られない時は、第2、第3フィールドの内容を出力yのそれぞれレジスタ1、レジスタ2に出力し、制御信号が送られる時は、第2、第3フィールドの内容を出力yのそれぞれレジスタ2、レジスタ1に出力するとともに、出力xのそれぞれレジスタ1、レジスタ2にも出力する。
【００３３】
本実施の形態の演算処理装置を用いれば、加減算命令によって、例えば、離散コサイン変換、逆離散コサイン変換等のプログラムを高速に実行することができる。このことを図１１から図１３を用いて説明する。
【００３４】
図１１は４×４の離散コサイン変換のプログラムを示す。a[0]〜a[3]は変換前のデータ、c[0]〜c[3]は変換後のデータを示し、f0〜f2は定数を示す。
【００３５】
あらかじめ、図１２のように、a[0]〜a[3]およびf0、f1-f2、f1+f2、f2の値を、それぞれ、レジスタR0〜R9に格納しておく。
【００３６】
図１３は図１１のプログラムに対応する本実施の形態の演算処理装置の長語命令の命令列を示す。以下、順に説明する。
【００３７】
（長語命令1）
（第1命令スロット：加減算命令）
レジスタR1,R2が保持するa[1],a[2]の値に対して、プログラムの2および3の処理を同時に行ない、b[1],b[2]の値をそれぞれレジスタR2,R1に入れる。
【００３８】
（第2命令スロット：無動作命令）
第1命令と同時に実行できる命令が存在しないので、無動作命令が挿入されている。
【００３９】
（長語命令2）
（第1命令スロット：転送命令）
レジスタR1が保持するb[2]の値をレジスタR8に入れる。
【００４０】
（第2命令スロット：加減算命令）
レジスタR0,R3が保持するa[0],a[3]の値に対して、プログラムの1および4の処理を同時に行ない、b[0],b[3]の値をそれぞれレジスタR3,R0に入れる。
【００４１】
（長語命令3）
（第1命令スロット：転送命令）
レジスタR0が保持するb[3]の値をレジスタR9に入れる。
【００４２】
（第2命令スロット：乗算命令）
レジスタR1の保持するb[2]の値とレジスタR5の保持する(f1-f2)の積をレジスタR1に入れる。
【００４３】
（長語命令4）
（第1命令スロット：加算命令）
レジスタR8の保持するb[2]の値とレジスタR9の保持するb[3]の値の和をレジスタR8に入れる。
【００４４】
（第2命令スロット：乗算命令）
レジスタR0の保持するb[3]の値とレジスタR6の保持する(f1+f2)の積をレジスタR0に入れる。
【００４５】
（長語命令5）
（第1命令スロット：加減算命令）
レジスタR3の保持するb[0]とレジスタR2の保持するb[1]の和と差をそれぞれレジスタR2,R3に入れる。
【００４６】
（第2命令スロット：乗算命令）
レジスタR8の保持する(b[2]+b[3])の値とレジスタR7の保持するf2の積をレジスタR8に入れる。
【００４７】
（長語命令6）
（第1命令スロット：加算命令）
レジスタR1の保持する(b[2]*(f1-f2))の値とレジスタR8の保持する((b[2]+b[3])*f2)の値の和、すなわち、c[2]の値をレジスタR1に入れる。
【００４８】
（第2命令スロット：乗算命令）
レジスタR2の保持する(b[0]+b[1])の値とレジスタR4の保持するf0の積、すなわち、c[0]の値をレジスタR2に入れる。
【００４９】
（長語命令7）
（第1命令スロット：減算命令）
レジスタR0の保持する(b[2]*(f1-f2))の値とレジスタR8の保持する((b[2]+b[3])*f2)の値の差、すなわち、c[3]の値をレジスタR0に入れる。
【００５０】
（第2命令スロット：乗算命令）
レジスタR3の保持する(b[0]-b[1])の値とレジスタR4の保持するf0の積、すなわち、c[1]の値をレジスタR3に入れる。
【００５１】
このように、7個の長語命令で４×４の離散コサイン変換のプログラムを実現することができる。
【００５２】
しかし、図１４に示すような従来の長語命令型の演算処理装置では、加減算命令を定義できないので、図１５に示すように、同じ処理を実行するのに10個の長語命令が必要となる。
【００５３】
なお、加減算命令は、第1命令スロット、第2命令スロットのいずれにも置けるとしているが、どちらか一方にしか置けないとしてもよい。
【００５４】
また、レジスタには１つのデータを保持するとしているが、例えばレジスタを上位と下位の２つのフィールドに分け、それぞれがレジスタの幅の半分の長さの２つのデータを順序付けて保持する、いわゆるSIMD(Single Instruction Multiple Data)形式にしてもよい。この場合、加算命令、減算命令、加減算命令、および乗算命令は、２つのレジスタの保持する各値について、上位のフィールド同士および下位のフィールド同士、それぞれ加算、減算、加減算、乗算を行い、結果をレジスタのもとのフィールドに格納すればよい。加減算命令については、実施の形態に示したものと同じように２つのレジスタがともに書き換えられる。レジスタを３つ以上のフィールドに分けたSIMD形式であってもよいことは言うまでもない。
【００５５】
また、直列に並べられた命令列から、同時に実行できる２つの命令を検出し、それぞれを、第１命令スロット、第２命令スロットに格納した後、各命令を実行する、いわゆるスーパースケーラ型の形式にしてもよい。
【００５６】
【発明の効果】
以上のように本発明の演算処理装置は、少なくとも第１と第２の２つの命令スロットを含み、それぞれに命令を格納する命令レジスタと、前記命令レジスタの前記第１の命令スロットに格納された命令を解読する第１のデコーダと、前記命令レジスタの前記第２の命令スロットに格納された命令を解読する第２のデコーダと、前記第１のデコーダによって制御され、少なくとも第１の単位実行手段からなる第１の命令実行手段グループと、前記第２のデコーダによって制御され、少なくとも第２と第３の単位実行手段からなる第２の命令実行手段グループとを備えた演算処理装置であって、前記第１のデコーダが出力する制御情報は前記第１の命令実行手段グループおよび前記第２の命令実行手段グループに入力され、前記第１のデコーダが前記第１の命令スロットにある特定命令を検出すると、前記第１のデコーダは、前記特定命令を解読するとともに、前記解読結果に基づいて前記制御情報を出力して前記第１の単位実行手段と前記第２の単位実行手段とを同時に制御し、前記第２の単位実行手段は、前記制御情報に基づき、前記特定命令により定められた命令実行を行うことを特徴とする。
【００５７】
これにより、第１の命令スロットにある特定命令を、第１の単位実行手段と、本来第２の命令スロットの命令で使用される第２の単位実行手段とを用いて実行することができ、ハードウェアの増大を抑えることができる。
【００５８】
また本発明の演算処理装置は、少なくとも第１と第２の２つの命令スロットを含み、それぞれに命令を格納する命令レジスタと、前記命令レジスタの前記第１の命令スロットに格納された命令を解読する第１のデコーダと、前記命令レジスタの前記第２の命令スロットに格納された命令を解読する第２のデコーダと、前記第１のデコーダによって制御され、少なくとも第１と第２の単位実行手段からなる第１の命令実行手段グループと、前記第２のデコーダによって制御され、少なくとも第３と第４の単位実行手段からなる第２の命令実行手段グループとを備えた演算処理装置であって、前記第１のデコーダが出力する第１の制御情報は前記第１の命令実行手段グループおよび前記第２の命令実行手段グループに入力され、前記第２のデコーダが出力する第２の制御情報は前記第１の命令実行手段グループおよび前記第２の命令実行手段グループに入力され、前記第１のデコーダが前記第１の命令スロットにある特定命令を検出すると、前記第１のデコーダは、前記特定命令を解読するとともに、前記解読結果に基づいて前記第１の制御情報を出力して前記第２の単位実行手段と前記第３の単位実行手段とを同時に制御し、前記第３の単位実行手段は、前記第１の制御情報に基づき、前記特定命令により定められた命令実行を行い、前記第２のデコーダが前記第２の命令スロットにある前記特定命令を検出すると、前記第２のデコーダは、前記特定命令を解読するとともに、前記解読結果に基づいて前記第２の制御情報を出力して前記第２の単位実行手段と前記第３の単位実行手段とを同時に制御し、前記第２の単位実行手段は、前記第２の制御情報に基づき、前記特定命令により定められた命令実行を行うことを特徴とする。
【００５９】
これにより、特定命令が第１の命令スロットにある場合は、第２の単位実行手段と、本来第２の命令スロットの命令で使用される第３の単位実行手段とを用いて実行することができ、特定命令が第２の命令スロットにある場合は、本来第１の命令スロットの命令で使用される第２の単位実行手段と、第３の単位実行手段とを用いて実行することができる。従って、上記の効果に加えて、特定命令を第１のスロットと第２のスロットとのいずれにも配置できるため命令のスケジューリングの自由度が増して並列度が増加し、性能が向上するという効果を有する。
【図面の簡単な説明】
【図１】本発明の実施の形態の演算処理装置の概念図
【図２】同実施の形態の命令スロットに格納される命令の種類を示す図
【図３】同実施の形態のデコーダ104の動作を示す図
【図４】同実施の形態のデコーダ105の動作を示す図
【図５】同実施の形態のセレクタ106の動作を示す図
【図６】同実施の形態のセレクタ107の動作を示す図
【図７】同実施の形態のデータ転送手段108の動作を示す図
【図８】同実施の形態の算術演算手段109の動作を示す図
【図９】同実施の形態の算術演算手段110の動作を示す図
【図１０】同実施の形態の乗算手段111の動作を示す図
【図１１】同実施の形態の離散コサイン変換のプログラムを示す図
【図１２】同実施の形態のレジスタが格納するプログラム変数を示す図
【図１３】同実施の形態の離散コサイン変換の変換を実現する長語命令の命令列を示す図
【図１４】従来の演算処理装置の概念図
【図１５】同従来の演算処理装置の離散コサイン変換の変換を実現する長語命令の命令列を示す図
【図１６】各命令の構成図
【図１７】デコーダ104のブロック図
【図１８】デコーダ105のブロック図
【符号の説明】
１０１  ２つの命令スロットを持つ長語命令の命令レジスタ
１０２、１０３  命令実行手段グループ
１０４、１０５  命令デコーダ
１０６、１０７  セレクタ
１０８  データ転送手段
１０９、１１０  算術演算手段
１１１  乗算手段
１１２  レジスタファイル
１０４１、１０４２、１０５１、１０５２  デコード部
１０４３、１０５３  制御部
１０４４、１０５４  マルチプレクサ
１４０１  ２つの命令スロットを持つ長語命令の命令レジスタ
１４０２、１４０３  命令実行手段グループ
１４０４、１４０５  命令デコーダ
１４０８  データ転送手段
１４０９、１４１０  算術演算手段
１４１１  乗算手段
１４１２  レジスタファイル
【図１】
0003541669.tif 000002
【図２】
0003541669.tif 000003
【図３】
0003541669.tif 000004
【図４】
0003541669.tif 000005
【図５】
0003541669.tif 000006
【図６】
0003541669.tif 000007
【図７】
0003541669.tif 000008
【図８】
0003541669.tif 000009
【図９】
0003541669.tif 000010
【図１０】
0003541669.tif 000011
【図１１】
0003541669.tif 000012
【図１２】
0003541669.tif 000013
【図１３】
0003541669.tif 000014
【図１４】
0003541669.tif 000015
【図１５】
0003541669.tif 000016
【図１６】
0003541669.tif 000017
【図１７】
0003541669.tif 000018
【図１８】
0003541669.tif 000019