(57)【要約】【課題】１つの演算器のみを用いて２つの命令を並列に、同じクロックサイクルで実行して、データ処理速度を向上させる。【解決手段】あらかじめ、コードＲＡＭ１００にすべての命令セットを実現する主系統命令と、レジスタ部（データ保持手段）１０３とデータＲＡＭ（データ格納手段）１０６との間のデータ転送を実現する副系統命令とを格納しておく。デコード部１０２は、主系統命令及び副系統命令の２つの命令コードを同時に解読し、各構成要素に対して処理の指示を行う。これにより、例えば、主系統命令によって、レジスタ部の所定のレジスタに保持されている２つのデータを加算処理と、レジスタ部とデータＲＡＭとの間のデータ転送処理とを並列処理することが可能となる。【選択図】        図１
2004334306.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータのそれぞれを保持するための複数の保持領域を有するデータ保持手段と、
２つのデータに関する演算を行い、その演算結果データを出力する演算手段と、
各種データ又は前記演算手段からの前記演算結果データを格納するデータ格納手段と、
前記データ保持手段の前記保持領域から読み出されるデータ、前記演算手段からの前記演算結果データ、外部からの入力データのうちのいずれか２つのデータを、選択的に前記演算手段に出力する第１の選択手段とを有し、
前記演算手段からの前記演算結果データと、前記データ格納手段から読み出されたデータとが、同一のクロックサイクルで前記データ保持手段の異なる前記保持領域に保持されるよう構成されている演算処理回路。
【請求項２】
複数のデータのそれぞれを保持するための複数の保持領域を有するデータ保持手段と、
２つのデータに関する演算を行い、その演算結果データを出力する演算手段と、
各種データ又は前記演算手段からの前記演算結果データを格納するデータ格納手段と、
前記データ保持手段の前記保持領域から読み出されるデータ、前記演算手段からの前記演算結果データ、外部からの入力データのうちのいずれか２つのデータを、選択的に前記演算手段に出力する第１の選択手段と、
前記データ保持手段の前記保持領域から読み出されるデータ、及び、前記演算手段からの前記演算結果データのどちらか一方を、選択的に前記データ格納手段に出力する第２の選択手段とを有し、
前記演算手段からの前記演算結果データを前記データ保持手段の前記保持領域に保持する処理と、前記第２の選択手段からの出力データを前記データ格納手段に格納する処理とが、同一のクロックサイクルで行われるよう構成されている演算処理回路。
【請求項３】
前記クロックサイクルごとに行われるべき処理を記述する命令コードを含む命令セットを格納する命令セット格納手段と、
第１の命令セットによって示される第１の命令コードを解読し、前記第１の命令コードに従った処理を行うよう、各手段に対して適切に指示を行う第１の解読手段と、
第２の命令セットによって示される第２の命令コードを解読し、前記第２の命令コードに従った処理を行うよう、各手段に対して適切に指示を行う第２の解読手段とを、
さらに有する請求項１又は２に記載の演算処理回路。
【請求項４】
前記クロックサイクルごとに行われるべき処理を記述する命令コードを含む命令セットを格納する命令セット格納手段と、
第１の命令セットによって示される前記演算手段による演算処理命令を解読し、前記演算処理命令に従った処理を行うよう、各手段に対して適切に指示を行う第１の解読手段と、
第２の命令セットに含まれる前記データ格納手段から前記データ保持手段へのデータ転送命令を解読し、前記データ転送命令に従った処理を行うよう、各手段に対して適切に指示を行う第２の解読手段とを、
さらに有する請求項１に記載の演算処理回路。
【請求項５】
前記クロックサイクルごとに行われるべき処理を記述する命令コードを含む命令セットを格納する命令セット格納手段と、
第１の命令セットによって示される前記演算手段による演算処理命令を解読し、前記演算処理命令に従った処理を行うよう、各手段に対して適切に指示を行う第１の解読手段と、
第２の命令セットによって示される前記データ保持手段から前記データ格納手段へのデータ転送命令を解読し、前記データ転送命令に従った処理を行うよう、各手段に対して適切に指示を行う第２の解読手段とを、
さらに有する請求項２に記載の演算処理回路。
【請求項６】
前記第１の命令セット及び前記第２の命令セットの両方が、１つの前記命令セット格納手段に格納されている請求項３から５のいずれか１つに記載の演算処理回路。
【請求項７】
複数のデータのそれぞれを保持するための複数の保持領域を有するデータ保持手段と、２つのデータに関する演算を行い、その演算結果データを出力する演算手段と、各種データ又は前記演算手段からの前記演算結果データを格納するデータ格納手段とを有する演算処理回路における演算処理方法であって、
前記演算手段の演算処理によって出力される演算出力データを前記データ保持手段の前記保持領域に保持する演算処理ステップと、
前記演算処理ステップの実行と同一のクロックサイクルで、前記データ格納手段から読み出したデータを、前記データ保持手段の前記演算出力データを保持する前記保持領域とは異なる保持領域に保持するデータ転送ステップとを、
有する演算処理方法。
【請求項８】
複数のデータのそれぞれを保持するための複数の保持領域を有するデータ保持手段と、２つのデータに関する演算を行い、その演算結果データを出力する演算手段と、各種データ又は前記演算手段からの前記演算結果データを格納するデータ格納手段とを有する演算処理回路における演算処理方法であって、
前記演算手段の演算処理によって出力される演算結果データを前記データ保持手段の前記保持領域に保持する演算処理ステップと、
前記演算処理ステップの実行と同一のクロックサイクルで、前記データ保持手段の前記保持領域から読み出されるデータ、及び、前記演算手段の演算処理によって出力される前記演算結果データのどちらか一方を、選択的に前記データ格納手段に格納するデータ格納ステップとを、
有する演算処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータなどの演算処理装置に組み込まれ、データ演算処理を行う演算処理回路及び演算処理方法に関する。
【０００２】
【従来の技術】
従来の演算処理回路は、一般的に、命令を逐次処理するように構成されている。図４は、従来の技術における一般的な演算処理回路の一例を示す構成図である。図４において、コードＲＡＭ（命令セット格納手段）２００は、所定の命令コードを格納するメモリであり、フェッチ部２０１から供給されるアドレスに対応した命令コードを出力する。また、フェッチ部２０１は、アドレスを生成して、コードＲＡＭ２００にそのアドレスを供給し、コードＲＡＭ２００から出力された命令コードを受けて、それを保持する。また、デコード部（解読手段）２０２は、フェッチ部２０１が保持している命令コードの解読を行い、解読した命令コードに応じた命令やアドレスなどを、レジスタ部（データ保持手段）２０３、第１のセレクタ２０４、演算器（演算手段）２０５、データＲＡＭ（データ格納手段）２０６、第２のセレクタ２０７に対して出力する。
【０００３】
また、レジスタ部２０３は、Ｎ個のレジスタを持ち、一時的なデータの保持に用いられる。また、第１のセレクタ２０４は、レジスタ部２０３からのＮ個のレジスタ出力、外部入力、及び、データＲＡＭ２０６から出力されるＲＡＭリードデータを受けることが可能なように接続されており、これらのうちから２種類のデータを選択的に受信して出力することが可能な選択器である。また、演算器２０５は、第１のセレクタ２０４から出力される２種類のデータを受けて、これらの２種類のデータを用いて、加算や減算などの各種の演算を行う。なお、演算器２０５は、その演算結果出力が、レジスタ部２０３、第１のセレクタ２０４、第２のセレクタ２０７に供給可能となるように接続されており、さらに、フェッチ部２０１にも供給され、フェッチ部２０１がこの演算結果出力をフィードバックして、生成するアドレスを変更することも可能である。
【０００４】
また、データＲＡＭ２０６は、解析を行うデータを格納するメモリであり、また、第２のセレクタ２０７は、レジスタ部２０３からのＮ個のレジスタ出力と、演算器２０５からの演算結果の出力とを受けることが可能なように接続されており、これらのうちからデータＲＡＭ２０６に書き込むＲＡＭライトデータを選択的に受信して出力する選択器である。
【０００５】
次に、図５を参照しながら、図４に示す一般的な演算処理回路において、データＡ０＋Ａ１＋…＋Ａｎの演算を行う場合の実行ステップについて説明する。図５は、図４に示す従来の一般的な演算処理回路における演算処理の一例を示す図である。なお、図５（Ａ）は、図４に示す一般的な演算処理回路のデータＲＡＭ内に格納されているデータ及びそのアドレスを示す図、図５（Ｂ）は、図４に示す一般的な演算処理回路のコードＲＡＭから出力される命令コードの内容、及び、出力される命令コードに対して便宜的に付されたステップ番号を示す図、図５（Ｃ）は、図５（Ｂ）の各ステップにおける処理によって、レジスタのアドレスＲ０に格納されるＲ０（レジスタ０）の保持値を示す図である。なお、図５（Ｂ）内に記載されているステップ番号は、コードＲＡＭ２００のアドレスでもある。
【０００６】
図５（Ａ）に示すように、データＲＡＭ２０６内には、ｎ個のアドレスｉ（ｉ＝０、１、・・・、ｎ）のそれぞれに対応して、データＡｉが格納されている。また、図５（Ｂ）中のｌｏａｄは、データＲＡＭ２０６からレジスタ部２０３にデータを転送する命令であり、Ｒｋ（ｋ＝０、１、２、・・・）はレジスタ部２０３のアドレス、Ｍｋ（ｋ＝０、１、２、・・・）はデータＲＡＭ２０６のアドレスを示している。すなわち、例えば、『ｌｏａｄ  Ｒ０，Ｍ０』は、データＲＡＭ２０６のアドレスＭ０のデータをレジスタ部２０３のアドレスＲ０に転送する命令である。また、図５（Ｂ）中のａｄｄは、レジスタ部２０３において保持されている２つのレジスタ値の加算を行う命令であり、例えば、『ａｄｄ  Ｒ０，Ｒ１』は、レジスタ部２０３のアドレスＲ０及びＲ１に格納されている各データを加算し、その加算結果をアドレスＲ０に保持する命令である。なお、以下では、Ａｉ、Ｒｋ、Ｍｋや後述のＢｉなどを、それぞれＡ［ｉ］、Ｒ［ｋ］、Ｍ［ｋ］、Ｂ［ｉ］と表記することもある。
【０００７】
まず、ステップ“１”において、『ｌｏａｄ  Ｒ０，Ｍ０』の命令によって、データＲＡＭ２０６のアドレスＭ０からレジスタ部２０３のレジスタＲ０に、データＡ０が転送される。このとき、データＲＡＭ２０６に格納されているデータは、第１のセレクタ２０４、演算器２０５を経由して、レジスタ部２０３に転送される。次に、ステップ“２”において、『ｌｏａｄ  Ｒ１，Ｍ１』の命令によって、データＲＡＭ２０６のアドレスＭ１からレジスタ部２０３のレジスタＲ１に、データＡ１が転送される。次に、ステップ“３”において、『ａｄｄ  Ｒ０，Ｒ１』の命令によって、レジスタ部２０３のレジスタＲ０に保持されているデータＡ０とレジスタＲ１に保持されているデータＡ１とが第１のセレクタ２０４により選択的に読み出されて演算器２０５に供給され、演算器２０５によってデータＡ０とデータＡ１とが加算され、その加算結果がレジスタ部２０３に供給されて、レジスタ部２０３のレジスタＲ０に保持される。
【０００８】
続くステップ“４”〜“２ｎ＋１”では、データＲＡＭ２０６の読み出しアドレスを１つずつずらして、処理が行われる。すなわち、ステップ“ｊ”の場合、偶数ステップでは、『ｌｏａｄ  Ｒ１，Ｍ［ｊ／２］』によって、データＲＡＭ２０６のアドレスＲ［ｊ／２］からレジスタ部２０３のレジスタＲ１に、データＡ［ｊ／２］が転送される。また、奇数ステップでは、『ａｄｄ  Ｒ０，Ｒ１』の命令によって、レジスタ部２０３のレジスタＲ０に保持されている加算結果（Ａ０＋…＋Ａ［（ｊ−３）／２］）とレジスタＲ１に保持されているＡ［（ｊ−１）／２］とが第１のセレクタ２０４により選択的に読み出されて演算器２０５に供給され、演算器２０５によってデータＡ０＋…＋Ａ［（ｊ−３）／２］とデータＡ［（ｊ−１）／２］とが加算され、その加算結果がレジスタ部２０３に供給されて、レジスタ部２０３のレジスタＲ０に再び保持される。この結果、図５（Ｃ）に示すように、奇数ステップにおいて、レジスタ部２０３のアドレスＲ０の値が新たな加算結果で更新されて、ステップ２ｎ＋１において、データＡ０＋Ａ１＋…＋Ａｎが得られる。すなわち、２ｎ＋１回のステップ数で、所望のＡ０＋Ａ１＋…＋Ａｎが得られることになる。
【０００９】
次に、図６を参照しながら、図４に示す一般的な演算処理回路において、Ａ＋Ｂｉ（ｉ＝１〜ｎ）の演算を行い、データＲＡＭ２０６のアドレスＭｉにＡ＋Ｂｉをそれぞれ格納する場合の実行ステップについて説明する。図６は、図４に示す従来の一般的な演算処理回路における演算処理の別の一例を示す図である。なお、図６（Ａ）は、図４に示す一般的な演算処理回路のレジスタ部内に格納されているデータ及びそのアドレスを示す図、図６（Ｂ）は、図４に示す一般的な演算処理回路のコードＲＡＭから出力される命令コードの内容、及び、出力される命令コードに対して便宜的に付されたステップ番号を示す図、図６（Ｃ）は、図６（Ｂ）の各ステップにおける処理によって、データＲＡＭ内に格納されるデータ及びそのアドレスを示す図である。なお、図６（Ｂ）内に記載されているステップ番号は、コードＲＡＭ２００のアドレスでもある。
【００１０】
図６（Ａ）に示すように、レジスタ部２０３内には、アドレスＲ０に対応してデータＡが、ｎ−１個のアドレスｉ（ｉ＝１、２、・・・、ｎ）のそれぞれに対応してデータＢｉが格納されている。また、図６（Ｂ）中のｓｔｏｒｅはレジスタ部２０３からデータＲＡＭ２０６にデータを転送する命令である。すなわち、例えば、『ｓｔｏｒｅ  Ｍ１，Ｒ１』は、レジスタ部２０３のアドレスＲ１のデータをデータ格納部２０６のアドレスＭ１に転送する命令である。
【００１１】
まず、ステップ“１”において、『ａｄｄ  Ｒ１，Ｒ０』の命令によって、レジスタ部２０３のレジスタＲ０に保持されているＡとレジスタＲ１に保持されているＢ１とが、第１のセレクタ２０４により選択的に読み出されて演算器２０５に供給され、演算器２０５によってデータＡとデータＢ１とが加算され、その加算結果がレジスタ部２０３に供給されて、レジスタ部２０３のレジスタＲ１に保持される。次に、ステップ“２”において、『ｓｔｏｒｅ  Ｍ１，Ｒ１』の命令によって、レジスタ部２０３のレジスタＲ１に保持されている加算結果Ａ＋Ｂ１が、データＲＡＭ２０６に転送されて、アドレスＭ１に格納される。
【００１２】
続くステップ“３”〜“２ｎ”では、レジスタ部２０３の読み出しアドレスと、データＲＡＭ２０６の書き込みアドレスを１つずつずらして、処理が行われる。すなわち、ステップ“ｊ”の場合、奇数ステップでは、『ａｄｄ  Ｒ［（ｊ＋１）／２］，Ｒ０』の命令によって、レジスタ部２０３のレジスタＲ０に保持されているＡとレジスタＲｍに保持されているＢ［（ｊ＋１）／２］とが加算され、その加算結果がレジスタ部２０３に供給されて、レジスタ部２０３のレジスタＲｍに保持される。また、偶数ステップでは、『ｓｔｏｒｅ  Ｍ［ｊ／２］，Ｒ［ｊ／２］』の命令によって、レジスタ部２０３のレジスタＲ［ｊ／２］に保持されている加算結果Ａ＋Ｂ［ｊ／２］が、データＲＡＭ２０６のアドレスＭ［ｊ／２］に格納される。この結果、２ｎ回のステップ数で、図６（Ｃ）に示すように、データＲＡＭ２０６のアドレスＭｉ（ｉ＝１〜ｎ）のそれぞれに、Ａ＋Ｂｉが格納されることになる。
【００１３】
以上の手順により、逐次処理を行う演算処理回路では、図５及び図６に示すどちらの演算においても、２ｎ回程度のステップ数が必要となる。一方、近年、処理速度の向上という要求から、複数の命令を並列に処理することができる、様々な並列処理実効手法が提案されている。その中の１つが、下記の特許文献１に開示されている。
【００１４】
下記の特許文献１には、２つの命令にレジスタ従属性がなければ、この２つの命令を並列に、同じクロックサイクルで実行するコンピュータ装置が開示されている。毎ステップにおいて、レジスタ従属性のない命令同士を実行できれば、逐次処理で行った場合に比べて２倍の速度で処理を行うことができ、例えば、図５及び図６を用いて説明した演算では、その演算ステップ数を約半分のステップ数（ｎ回程度のステップ数）にまで減らして、同様の演算を実行することが可能である。
【００１５】
【特許文献１】
特開平６−２８１８５号公報
【００１６】
【発明が解決しようとする課題】
しかしながら、特許文献１に記載の演算処理回路では、並列に演算器を用いる必要のある２つの命令を同じクロックサイクルで実行することから、２つの演算器が必要となり、回路規模が大きくなるという問題がある。
【００１７】
そこで、本発明では、上記の問題に鑑みて、１つの演算器のみを用いて２つの命令を並列に、同じクロックサイクルで実行して、データ処理速度を向上させる演算処理回路及び演算処理方法を提供することを目的とする。特に、他の命令を行う回数に比べて、データＲＡＭからレジスタ部へのデータ転送命令、又は、レジスタ部からデータＲＡＭへのデータ格納命令の回数が多いことに着目して、１つの演算器のみを用いて２つの命令を並列に、同じクロックサイクルで実行して、データ処理速度を向上させる演算処理回路及び演算処理方法を提供することを目的とする。
【００１８】
【課題を解決するための手段】
上記目的を達成するため、本発明の演算処理回路は、複数のデータのそれぞれを保持するための複数の保持領域を有するデータ保持手段と、２つのデータに関する演算を行い、その演算結果データを出力する演算手段と、各種データ又は演算手段からの演算結果データを格納するデータ格納手段と、データ保持手段の保持領域から読み出されるデータ、演算手段からの演算結果データ、外部からの入力データのうちのいずれか２つのデータを、選択的に演算手段に出力する第１の選択手段とを有し、演算手段からの演算結果データと、データ格納手段から読み出されたデータとが、同一のクロックサイクルでデータ保持手段の異なる保持領域に保持されるよう構成されている。
この構成により、演算処理の実行と、データ格納手段からデータ保持手段へのデータ転送とを同時に行うことが可能となる。
【００１９】
また、上記目的を達成するため、本発明の演算処理回路は、複数のデータのそれぞれを保持するための複数の保持領域を有するデータ保持手段と、２つのデータに関する演算を行い、その演算結果データを出力する演算手段と、各種データ又は演算手段からの演算結果データを格納するデータ格納手段と、データ保持手段の保持領域から読み出されるデータ、演算手段からの演算結果データ、外部からの入力データのうちのいずれか２つのデータを、選択的に演算手段に出力する第１の選択手段と、データ保持手段の保持領域から読み出されるデータ、及び、演算手段からの演算結果データのどちらか一方を、選択的にデータ格納手段に出力する第２の選択手段とを有し、演算手段からの演算結果データをデータ保持手段の保持領域に保持する処理と、第２の選択手段からの出力データをデータ格納手段に格納する処理とが、同一のクロックサイクルで行われるよう構成されている。
この構成により、演算処理の実行と、データ保持手段からデータ格納手段へのデータ転送とを同時に行うことが可能となる。
【００２０】
さらに、本発明の演算処理回路は、上記発明に加えて、クロックサイクルごとに行われるべき処理を記述する命令コードを含む命令セットを格納する命令セット格納手段と、第１の命令セットによって示される第１の命令コードを解読し、第１の命令コードに従った処理を行うよう、各手段に対して適切に指示を行う第１の解読手段と、第２の命令セットによって示される第２の命令コードを解読し、第２の命令コードに従った処理を行うよう、各手段に対して適切に指示を行う第２の解読手段とをさらに有している。
この構成により、演算処理命令と、データ格納手段とデータ保持手段との間のデータ転送命令とを同時に解読し、実行することが可能となる。
【００２１】
さらに、本発明の演算処理回路は、上記発明に加えて、クロックサイクルごとに行われるべき処理を記述する命令コードを含む命令セットを格納する命令セット格納手段と、第１の命令セットによって示される演算手段による演算処理命令を解読し、演算処理命令に従った処理を行うよう、各手段に対して適切に指示を行う第１の解読手段と、第２の命令セットに含まれるデータ格納手段からデータ保持手段へのデータ転送命令を解読し、データ転送命令に従った処理を行うよう、各手段に対して適切に指示を行う第２の解読手段とをさらに有している。
この構成により、演算処理の実行と、データ格納手段からデータ保持手段へのデータ転送とを同時に行うことが可能となり、また、各解読手段がそれぞれ、特定の命令を解読することにより、解読手段の回路規模を小さくすることが可能となる。
【００２２】
さらに、本発明の演算処理回路は、上記発明に加えて、クロックサイクルごとに行われるべき処理を記述する命令コードを含む命令セットを格納する命令セット格納手段と、第１の命令セットによって示される演算手段による演算処理命令を解読し、演算処理命令に従った処理を行うよう、各手段に対して適切に指示を行う第１の解読手段と、第２の命令セットによって示されるデータ保持手段からデータ格納手段へのデータ転送命令を解読し、データ転送命令に従った処理を行うよう、各手段に対して適切に指示を行う第２の解読手段とをさらに有している。
この構成により、演算処理の実行と、データ保持手段からデータ格納手段へのデータ転送とを同時に行うことが可能となり、また、各解読手段がそれぞれ、特定の命令を解読することにより、解読手段の回路規模を小さくすることが可能となる。
【００２３】
さらに、本発明の演算処理回路は、上記発明に加えて、第１の命令セット及び第２の命令セットの両方が、１つの命令セット格納手段に格納されている。
この構成により、第１の命令セットと第２の命令セットとを同時に１つの命令セット格納手段から読み出すことが可能となる。
【００２４】
また、上記目的を達成するため、本発明の演算処理方法は、複数のデータのそれぞれを保持するための複数の保持領域を有するデータ保持手段と、２つのデータに関する演算を行い、その演算結果データを出力する演算手段と、各種データ又は演算手段からの演算結果データを格納するデータ格納手段とを有する演算処理回路における演算処理方法であって、演算手段の演算処理によって出力される演算出力データをデータ保持手段の保持領域に保持する演算処理ステップと、演算処理ステップの実行と同一のクロックサイクルで、データ格納手段から読み出したデータを、データ保持手段の演算出力データを保持する保持領域とは異なる保持領域に保持するデータ転送ステップとを有している。
この構成により、演算処理の実行と、データ格納手段からデータ保持手段へのデータ転送とを同時に行うことが可能となる。
【００２５】
また、上記目的を達成するため、本発明の演算処理方法は、複数のデータのそれぞれを保持するための複数の保持領域を有するデータ保持手段と、２つのデータに関する演算を行い、その演算結果データを出力する演算手段と、各種データ又は演算手段からの演算結果データを格納するデータ格納手段とを有する演算処理回路における演算処理方法であって、演算手段の演算処理によって出力される演算結果データをデータ保持手段の保持領域に保持する演算処理ステップと、演算処理ステップの実行と同一のクロックサイクルで、データ保持手段の保持領域から読み出されるデータ、及び、演算手段の演算処理によって出力される演算結果データのどちらか一方を、選択的にデータ格納手段に格納するデータ格納ステップとを有している。
この構成により、演算処理の実行と、データ保持手段からデータ格納手段へのデータ転送とを同時に行うことが可能となる。
【００２６】
【発明の実施の形態】
以下、図面を参照しながら、本発明の演算処理装置及び演算処理方法の第１及び第２の実施の形態について説明する。
【００２７】
＜第１の実施の形態＞
図１は、本発明の第１及び第２の実施の形態に共通の演算処理回路の構成を示すブロック図である。図１において、コードＲＡＭ（命令セット格納手段）１００は、クロックサイクルごとに行われるべき処理を記述する命令コードを含む命令セットを格納するメモリである。このコードＲＡＭ１００は、１ワードによってすべての命令セットを実現する主系統命令（主命令）、及び、レジスタ部（データ保持手段）１０３とデータＲＡＭ（データ格納手段）１０６との間のデータ転送を実現する副系統命令（副命令）の２つの命令コードを格納しており、フェッチ部１０１から供給されるアドレスに対応した命令コードを出力する。また、フェッチ部１０１は、アドレスを生成して、コードＲＡＭ１００にそのアドレスを供給し、コードＲＡＭ１００から出力された命令コード（上記の２つの命令コード）を受けて、それを保持する。また、デコード部（解読手段）１０２は、フェッチ部１０１が保持している２つの命令コードの解読を行い、解読した命令コードに応じた命令やアドレスなどを、レジスタ部１０３、第１のセレクタ１０４、演算器（演算手段）１０５、データＲＡＭ（データ格納手段）１０６、第２のセレクタ１０７に対して出力する。
【００２８】
また、レジスタ部１０３は、Ｎ個のレジスタを持ち、一時的なデータの保持に用いられる。また、第１のセレクタ１０４は、レジスタ部１０３からのＮ個のレジスタ出力、外部入力、及び、演算器１０５が計算した演算結果出力を受けることが可能なよう接続されており、これらのうちから２種類のデータを選択する選択器である。また、演算器１０５は、この２種類のデータを用いて、加算や減算などの各種の演算を行う。なお、演算器１０５は、その演算結果出力が、レジスタ部１０３、第１のセレクタ１０４、第２のセレクタ１０７に供給可能となるよう接続されており、さらに、フェッチ部１０１にも供給され、フェッチ部１０１がこの演算結果出力をフィードバックして、生成するアドレスを変更することも可能である。
【００２９】
また、データＲＡＭ１０６は、解析を行うデータを格納するメモリであり、また、第２のセレクタ１０７は、レジスタ部１０３からのＮ個のレジスタ出力と、演算器１０５が計算した演算結果出力とを受けることが可能なよう構成されており、これらのうちからデータＲＡＭ１０６に書き込むＲＡＭライトデータを選択的に受信して出力する選択器である。
【００３０】
次に、図２を参照しながら、図１に示す演算処理回路において、データＡ０＋Ａ１＋Ａ２＋・・・＋Ａｎの演算を行う場合の実行ステップについて説明する。図２は、本発明の第１の実施の形態における演算処理を示す図である。なお、図２（Ａ）は、本発明の第１の実施の形態におけるデータＲＡＭ内に格納されているデータ及びそのアドレスを示す図、図２（Ｂ）は、本発明の第１の実施の形態におけるコードＲＡＭから出力される主系統命令及び副系統命令の２つの命令コードの内容、及び、出力される２つの命令コードに対して便宜的に付されたステップ番号を示す図、図２（Ｃ）は、図２（Ｂ）の各ステップにおける処理によって、レジスタのアドレスＲ０に格納されるＲ０（レジスタ０）の保持値を示す図である。なお、図２（Ｂ）内に記載されているステップ番号は、コードＲＡＭ１００のアドレスでもある。
【００３１】
図２（Ａ）に示すように、データＲＡＭ１０６内には、ｎ個のアドレスｉ（ｉ＝０、１、・・・、ｎ）のそれぞれに対応して、データＡｉが格納されている。また、図２（Ｂ）中のｌｏａｄは、データＲＡＭ１０６からレジスタ部１０３にデータを転送する命令であり、Ｒｋ（ｋ＝０、１、２、・・・）はレジスタ部１０３のアドレス、Ｍｋ（ｋ＝０、１、２、・・・）はデータＲＡＭ１０６のアドレスを示している。すなわち、例えば、『ｌｏａｄ  Ｒ０，Ｍ０』は、データＲＡＭ１０６のアドレスＭ０のデータをレジスタ部１０３のアドレスＲ０に転送する命令である。また、図２（Ｂ）中のａｄｄは、レジスタ部１０３において保持されている２つのレジスタ値の加算を行う命令であり、例えば、『ａｄｄ  Ｒ０，Ｒ１』は、レジスタ部１０３のアドレスＲ０及びＲ１に格納されている各データを加算し、その加算結果をアドレスＲ０に保持する命令である。なお、以下では、Ａｉ、Ｒｋ、Ｍｋや後述のＢｉなどを、それぞれＡ［ｉ］、Ｒ［ｋ］、Ｍ［ｋ］、Ｂ［ｉ］と表記することもある。
【００３２】
例えば、図２（Ｂ）のステップ“３”で表されているように、コードＲＡＭ１００の主系統命令にレジスタ間の演算命令が、コードＲＡＭ１００の副系統命令にデータＲＡＭ１０６からレジスタ部１０３への転送命令がそれぞれ格納されているような場合には、デコード部１０２でこれら２つの命令コードの解読を行い、第１のセレクタ部１０４で選択した２種類のデータを、演算器１０５を用いて演算し、その演算結果をレジスタ部１０３の所定のレジスタに保持すると同時に、転送すべきデータのアドレスをデコード部１０２からデータＲＡＭ１０６に出力し、データＲＡＭ１０６から出力されたデータを、レジスタ部１０３の所定のレジスタに保持する。
【００３３】
まず、ステップ“１”において、副系統命令の『ｌｏａｄ  Ｒ０，Ｍ０』の命令によって、データＲＡＭ１０６のアドレスＭ０からレジスタ部１０３のレジスタＲ０に、データＡ０が転送される。次に、ステップ“２”において、副系統命令の『ｌｏａｄ  Ｒ１，Ｍ１』の命令によって、データＲＡＭ１０６のアドレスＭ１からレジスタ部１０３のレジスタＲ１にデータＡ１が転送される。次に、ステップ“３”において、主系統命令の『ａｄｄ  Ｒ０，Ｒ１』の命令によって、レジスタ部１０３のレジスタＲ０に保持されているデータＡ０とレジスタＲ１に保持されているデータＡ１とが、第１のセレクタ１０４により選択的に読み出されて演算器１０５に供給され、演算器１０５によってデータＡ０とデータＡ１とが加算され、その加算結果がレジスタ部１０３に供給されて、レジスタ部１０３のレジスタＲ０に保持される。一方、この主系統命令と並列的に、副系統命令の『ｌｏａｄ  Ｒ１，Ｍ２』の命令によって、データＲＡＭ１０６のアドレスＲ２からレジスタ部１０３のレジスタＲ１にデータＡ２が転送される。
【００３４】
続くステップ“４”〜“ｎ＋１”では、ステップ３と同様に、主系統命令と副系統命令との並列処理を実行する。すなわち、ステップ“ｊ”の場合、主系統命令では、『ａｄｄ  Ｒ０，Ｒ１』の命令によって、レジスタ部１０３のレジスタＲ０に保持されている加算結果Ａ０＋…＋Ａ［ｊ−３］とレジスタＲ１に保持されているＡ［ｊ−２］とが、第１のセレクタ１０４により選択的に読み出されて演算器１０５に供給され、演算器１０５によってデータＡ０＋…＋Ａ［ｊ−３］とデータＡ［ｊ−２］とが加算され、その加算結果がレジスタ部１０３に供給されて、レジスタ部１０３のレジスタＲ０に保持される。ただし、レジスタＲ０に保持されている加算結果が、前のステップでレジスタＲ０に書き込もうとしている加算結果である場合には、デコード部１０２が第１のセレクタ１０４に対して、演算器の演算出力結果を選択するよう指示が行われる。また、副系統命令では、『ｌｏａｄ  Ｒ１，Ｍ［ｊ−１］』によって、データＲＡＭ１０６のアドレスＭ［ｊ−１］からレジスタ部１０３のレジスタＲ１にデータＡ［ｊ−１］が転送される。
【００３５】
そして、最終ステップであるステップ“ｎ＋２”において、主系統命令の『ａｄｄ  Ｒ０，Ｒ１』によって、レジスタ部１０３のレジスタＲ０に保持されている加算結果Ａ０＋…＋Ａ［ｎ−１］とステップ“ｎ＋１”でレジスタＲ１に保持されたデータＡｎとが、第１のセレクタ１０４により選択的に読み出されて演算器１０５に供給され、演算器１０５によってデータＡ０＋…＋Ａ［ｎ−１］とデータＡｎとが加算され、その加算結果がレジスタ部１０３に供給されて、レジスタ部１０３のレジスタＲ０に保持される。
【００３６】
上記の処理の結果、逐次処理の演算処理回路では２ｎ＋１回のステップを必要とするデータＲＡＭ１０６に記憶されたデータ同士のｎ回の加算を、１つの演算器のみで、ｎ＋２回のステップで実行することが可能となる。
【００３７】
＜第２の実施の形態＞
次に、図１及び図３を参照しながら、本発明の第２の実施の形態について説明する。なお、本発明の第２の実施の形態では、第１の実施の形態の説明時に使用した図１に示す演算処理回路を用いて、Ａ＋Ｂｉ（ｉ＝１〜ｎ）の演算を行い、データＲＡＭ１０６のアドレスＭｉにＡ＋Ｂｉをそれぞれ格納する場合の実行ステップについて説明する。
【００３８】
図３は、本発明の第２の実施の形態における演算処理を示す図である。なお、図３（Ａ）は、本発明の第２の実施の形態におけるレジスタ部内に格納されているデータ及びそのアドレスを示す図、図３（Ｂ）は、本発明の第２の実施の形態におけるコードＲＡＭから出力される命令コードの内容、及び、出力される命令コードに対して便宜的に付されたステップ番号を示す図、図３（Ｃ）は、図３（Ｂ）の各ステップにおける処理によって、データＲＡＭ内に格納されるデータ及びそのアドレスを示す図である。なお、図３（Ｂ）内に記載されているステップ番号は、コードＲＡＭ１００のアドレスでもある。
【００３９】
図３（Ａ）に示すように、レジスタ部１０３内には、アドレスＲ０に対応してデータＡが、ｎ−１個のアドレスｉ（ｉ＝１、２、・・・、ｎ）のそれぞれに対応してデータＢｉが格納されている。また、図３（Ｂ）中のｓｔｏｒｅはレジスタ部１０３からデータＲＡＭ１０６にデータを転送する命令である。すなわち、例えば、『ｓｔｏｒｅ  Ｍ１，Ｒ１』は、レジスタ部１０３のアドレスＲ１のデータをデータ格納部１０６のアドレスＭ１に転送する命令である。
【００４０】
例えば、図３（Ｂ）のステップ“２”で表されているように、コードＲＡＭ１００の主系統命令にレジスタ間の演算命令が、コードＲＡＭ１００の副系統命令にレジスタ部１０３からデータＲＡＭ１０６への転送命令が格納されているような場合は、第１のセレクタ１０４で選択した２種類のデータを、演算器１０５を用いて演算し、その演算結果をレジスタ部１０３の所定のレジスタに保持すると同時に、書き込みを行うべきデータのアドレスをデコード部１０２から第２のセレクタ１０７に出力し、第２のセレクタ１０７が、書き込みを行うべきデータを保持しているレジスタ部１０３のレジスタを選択的に読み出して、データＲＡＭ１０６の所定のアドレスに格納する。
【００４１】
まず、ステップ“１”において、主系統命令の『ａｄｄ  Ｒ１，Ｒ０』の命令によって、レジスタ部１０３のレジスタＲ０に保持されているＡとレジスタＲ１に保持されているＢ１とが、第１のセレクタ１０４により選択的に読み出されて演算器１０５に供給され、演算器１０５によってデータＡとデータＢ１とが加算され、その加算結果がレジスタ部１０３に供給されて、レジスタ部１０３のレジスタＲ１に保持される。
【００４２】
次に、ステップ“２”において、主系統命令の『ａｄｄ  Ｒ２，Ｒ０』の命令によって、レジスタ部１０３のレジスタＲ０に保持されているデータＡとレジスタＲ２に保持されているデータＢ２とが、第１のセレクタ１０４により選択的に読み出されて演算器１０５に供給され、演算器１０５によってデータＡ＋Ｂ１とデータＢ２とが加算され、その加算結果がレジスタ部１０３に供給されて、レジスタ部１０３のレジスタＲ２に保持される。一方、この主系統命令と並列的に、副系統命令の『ｓｔｏｒｅ  Ｍ１，Ｒ１』の命令によって、レジスタ部１０３のレジスタＲ１に保持されている加算結果Ａ＋Ｂ１が、データＲＡＭ１０６のアドレスＲ２に転送されて、アドレスＭ１に格納される。
【００４３】
続くステップ“３”〜“ｎ”では、ステップ２と同様に、主系統命令と副系統命令との並列処理を実行する。すなわち、ステップ“ｊ”の場合、主系統命令では、『ａｄｄ  Ｒｊ，Ｒ０』の命令によって、レジスタ部１０３のレジスタＲ０に保持されているデータＡとレジスタＲｊに保持されているデータＡｊとが、第１のセレクタ１０４により選択的に読み出されて演算器１０５に供給され、演算器１０５によってデータＡ０とデータＡｊとが加算され、その加算結果がレジスタ部１０３に供給されて、レジスタ部１０３のレジスタＲｊに保持される。また、副系統命令では、『ｓｔｏｒｅ  Ｍ［ｊ−１］，Ｒ［ｊ−１］』によって、レジスタ部１０３のレジスタＲ［ｊ−１］からデータＲＡＭ１０６のアドレスＭ［ｊ−１］に、データＡ＋Ｂ［ｊ−１］が転送される。
【００４４】
そして、最終ステップであるステップ“ｎ＋１”において、副系統命令の『ｓｔｏｒｅ  Ｍｎ，Ｒｎ』によって、レジスタ部１０３のレジスタＲｎに保持されている加算結果Ａ＋Ｂｎが、データＲＡＭ１０６のアドレスＭｎに転送され、格納される。
【００４５】
上記の処理の結果、逐次処理の演算回路では２ｎ回のステップを必要とするレジスタに保持されたデータ間の加算及びその加算結果のデータＲＡＭ１０６への転送を、１つの演算器のみで、ｎ＋１回のステップで実行することが可能となる。
【００４６】
なお、本発明は、上記の第１及び第２の実施の形態に限定されるものではない。すなわち、図１に示す演算処理回路は、本発明を実現する演算処理回路の１つの例に過ぎず、その演算も、図２及び図３に示す演算に限定されるものではない。また、第１の実施の形態では、データＲＡＭ１０６のリードサイクルを１サイクルとしたが、例えば、データＲＡＭ１０６のリードサイクルが２サイクル必要なＲＡＭを用いる場合は、主命令の演算処理を行うサイクルを１つずつずらして同期を取ればよい。また、第１及び第２の実施の形態では、副系統命令の数を１系統としたが、例えば、データＲＡＭ１０６が２つ以上存在する場合には、副系統命令の数を２系統以上に拡張することも可能である。
【００４７】
【発明の効果】
以上、説明したように、本発明によれば、２つの命令の一方を、レジスタ部（データ保持手段）とデータＲＡＭ（データ格納手段）との間のデータ転送に特化させ、レジスタ部とデータＲＡＭとの間のデータ転送と、演算器からの演算結果データのレジスタ部への保持などの処理とを、並列に同じクロックサイクルで実行することができるので、レジスタ部とデータＲＡＭとの間のデータ転送を多く必要とし、このスピードがボトルネックとなるような演算処理を、１つの演算器のみによって、逐次処理を行うときの２倍程度の処理速度を実現することが可能となり、回路規模の削減ができるとともに、コストの削減を実現することも可能となる。
【図面の簡単な説明】
【図１】本発明の第１及び第２の実施の形態に共通の演算処理回路の構成を示すブロック図
【図２】本発明の第１の実施の形態における演算処理を示す図
（Ａ）  本発明の第１の実施の形態におけるデータＲＡＭ内に格納されているデータ及びそのアドレスを示す図
（Ｂ）  本発明の第１の実施の形態におけるコードＲＡＭから出力される主系統命令及び副系統命令の２つの命令コードの内容、及び、出力される２つの命令コードに対して便宜的に付されたステップ番号を示す図
（Ｃ）  図２（Ｂ）の各ステップにおける処理によって、レジスタのアドレスＲ０に格納されるＲ０（レジスタ０）の保持値を示す図
【図３】本発明の第２の実施の形態における演算処理を示す図
（Ａ）  本発明の第２の実施の形態におけるレジスタ部内に格納されているデータ及びそのアドレスを示す図
（Ｂ）  本発明の第２の実施の形態におけるコードＲＡＭから出力される命令コードの内容、及び、出力される命令コードに対して便宜的に付されたステップ番号を示す図
（Ｃ）  図３（Ｂ）の各ステップにおける処理によって、データＲＡＭ内に格納されるデータ及びそのアドレスを示す図
【図４】従来の技術における一般的な演算処理回路の一例を示す構成図
【図５】図４に示す従来の一般的な演算処理回路における演算処理の一例を示す図
（Ａ）  図４に示す一般的な演算処理回路のデータＲＡＭ内に格納されているデータ及びそのアドレスを示す図
（Ｂ）  図４に示す一般的な演算処理回路のコードＲＡＭから出力される命令コードの内容、及び、出力される命令コードに対して便宜的に付されたステップ番号を示す図
（Ｃ）  図５（Ｂ）の各ステップにおける処理によって、レジスタのアドレスＲ０に格納されるＲ０（レジスタ０）の保持値を示す図
【図６】図４に示す従来の一般的な演算処理回路における演算処理の別の一例を示す図
（Ａ）  図４に示す一般的な演算処理回路のレジスタ部内に格納されているデータ及びそのアドレスを示す図
（Ｂ）  図４に示す一般的な演算処理回路のコードＲＡＭから出力される命令コードの内容、及び、出力される命令コードに対して便宜的に付されたステップ番号を示す図
（Ｃ）  図６（Ｂ）の各ステップにおける処理によって、データＲＡＭ内に格納されるデータ及びそのアドレスを示す図
【符号の説明】
１００、２００  コードＲＡＭ（命令セット格納手段）
１０１、２０１  フェッチ部
１０２、２０２  デコード部（解読手段）
１０３、２０３  レジスタ部（データ保持手段）
１０４、２０４  第１のセレクタ
１０５、２０５  演算器（演算手段）
１０６、２０６  データＲＡＭ（データ格納手段）
１０７、２０７  第２のセレクタ
【図１】
2004334306.tif 000003
【図２】
2004334306.tif 000004
【図３】
2004334306.tif 000005
【図４】
2004334306.tif 000006
【図５】
2004334306.tif 000007
【図６】
2004334306.tif 000008