(57)【特許請求の範囲】
【請求項１】
相互にバスの競合を起こさない少なくとも２種類の演算命令を有する並列演算プロセッサであって、
一方の種類の命令と他方の種類の命令を格納したプログラム・メモリと、
前記２種類の命令のうちの前記一方の種類の命令を格納する命令キャッシュと、
前記プログラム・メモリから読み出された前記一方の種類の命令と前記他方の種類の命令を選択するデコーダと、
前記命令キャッシュから読み出された前記一方の種類の命令と、前記デコーダにより選択された前記一方の種類の命令を選択するセレクタと、
該セレクタにより選択された前記一方の種類の命令を実行する第１の演算部と、
前記デコーダにより選択された前記他方の種類の命令を実行する第２の演算部とを有し、
前記命令キャッシュから読み出された前記一方の種類の命令を実行する間、前記プログラム・メモリからの前記他方の種類の命令を独立に実行することを特徴とする並列演算プロセッサ。
【請求項２】
請求項１記載の並列演算プロセッサにおいて、前記バスは少なくとも２本あり、前記一方の種類の演算命令は、前記２本のバスのうち片方のみを用いる命令であることを特徴とする並列演算プロセッサ。
【請求項３】
請求項１または２記載の並列演算プロセッサにおいて、前記命令キャッシュに格納される命令は、繰り返して用いるループ・プログラムであることを特徴とする並列演算プロセッサ。
【請求項４】
請求項１ないし３のいずれかに記載の並列演算プロセッサにおいて、前記第１の演算部は乗累算部であることを特徴とする並列演算プロセッサ。
【請求項５】
請求項４記載の並列演算プロセッサにおいて、前記乗累算部は、複数の乗累算器と、前記乗累算器間に挿入した遅延部と、ローカル・データ・メモリとを有し、前記バスからのデータと前記ローカル・データ・メモリからのデータとを演算することを特徴とする並列演算プロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッサの構成に関し、特に、複数の演算器を有し、その複数の演算器を用いて並列の演算を行うことができる並列演算プロセッサに関するものである。
【０００２】
【従来の技術】
従来から、コンピュータ・アーキテクチャにおいて、複数の演算器を有し、その演算器を並列に動作することにより、並列演算することは行われている。このような並列動作する例としては、たとえば、種類の異なる演算器（たとえば乗累算器と算術論理演算器）を有するデジタル信号処理プロセッサ（ＤＳＰ）がある。
【０００３】
このような複数の演算器を有するプロセッサの場合は、並列演算を行うために命令語に複数の演算器に対応したフィールドを設け、このフィールドにより同時に複数の演算器の動作を制御している。
【０００４】
【発明が解決しようとする課題】
このような構成のプロセッサにおいて、並列演算のネックとなるのは、メモリからデータや命令を取り出すためのメモリ・バスである。このメモリ・バスを複数設けることにより、ネックを少なくすることは行われている。しかし、このメモリ・バスを設けることは、データ長（たとえば１６ビット）の導線を設けることであり、チップ上に大きな面積を占めることになり、また外部接続のためのピン等を設ける必要がある。このため、メモリ・バスを増設することは、プロセッサ・チップの面積を増大させ、また、価格を増加することを意味する。
【０００５】
また、命令語に並列動作させるために、複数のフィールドを設けることは、命令語を長くし、命令語メモリの効率を下げることを意味する。
【０００６】
本発明の目的は、メモリ・バスを増設することなく、並列動作することができるプロセッサを提供することである。
【０００７】
また、本発明の目的は、各演算器ごとのフィールドを設けることなく、並列演算を行うことのできるプロセッサを提供することである。
【０００８】
【課題を解決するための手段】
上記目的を達成するために、本発明は、相互にバスの競合を起こさない少なくとも２種類の演算命令を有する並列演算プロセッサであって、一方の種類の命令と他方の種類の命令を格納したプログラム・メモリと、前記２種類の命令のうちの前記一方の種類の命令を格納する命令キャッシュと、前記プログラム・メモリから読み出された前記一方の種類の命令と前記他方の種類の命令を選択するデコーダと、前記命令キャッシュから読み出された前記一方の種類の命令と、前記デコーダにより選択された前記一方の種類の命令を選択するセレクタと、該セレクタにより選択された前記一方の種類の命令を実行する第１の演算部と、前記デコーダにより選択された前記他方の種類の命令を実行する第２の演算部とを有し、前記命令キャッシュから読み出された前記一方の種類の命令を実行する間、前記プログラム・メモリからの前記他方の種類の命令を独立に実行することを特徴とする。
【０００９】
この発明では、命令キャッシュからの命令と、プログラム・メモリからの命令とを全く独立に実行することができるため、１つのプロセッサのなかに、あたかも２つの独立のプロセッサが存在するような処理が可能になる。
【００１０】
また、前記バスは少なくとも２本あり、前記一方の種類の演算命令は、前記２本のバスのうち片方のみを用いる命令であるとすることもできる。
【００１１】
前記命令キャッシュに格納される命令は、繰り返して用いるループ・プログラムであるとすることもできる。
【００１２】
そのうえ、第１の演算部は乗累算部であり、その乗累算部は、複数の乗累算器と、前記乗累算器間に挿入した遅延部と、ローカル・データ・メモリとを有し、前記バスからのデータと前記ローカル・データ・メモリからのデータとを演算することもできる。
【００１３】
乗累算部を有するプロセッサにおいては、フィルタの演算に多く利用されており、並列に動作することのできる機会が多く、命令キャッシュを用いることにより並列に処理できることが多く、本発明を有効に利用できる。
【００１４】
【発明の実施の形態】
本発明の実施形態を、図面を参照して詳細に説明する。
【００１５】
図１は、本発明の並列演算プロセッサの演算部の実施形態の一例を示すブロック図である。図１に示した並列演算プロセッサは、積和を計算することができる乗累算部および算術論理演部を有する信号処理プロセッサ（ＤＳＰ）を示している。
【００１６】
図１において、１０１および１０２はバンク構成のデータ・メモリ１およびデータ・メモリ２であり、それぞれメモリ・バス１  １０３およびメモリバス２１０４に接続されて、データ・メモリ１  １０１およびデータ・メモリ２  １０２とは、独立にアクセスできる構成となっている。１１０は複数の乗累算器を有する乗累算部、１２０は算術論理演算器を有する算術論理演算部である。乗累算部１１０の構成については後で詳しく説明する。算術論理演算部１２０は、通常のプロセッサが有する演算器の機能を備えている。
【００１７】
１３０は乗累算部１１０に対する命令デコーダで、１４０は算術演算部１２０に対する命令デコーダである。１５０は命令語を一時的に格納する命令キャッシュである。１７０は、命令語が格納されており、上記データ・メモリとは独立に読み出すことができるプログラム・メモリである。１６０は、乗累算部用デコーダに入力する命令語を、命令キャッシュ１５０から入力するか、プログラム・メモリ１７０から入力するかを選択するセレクタである。１０５は、命令語が格納されているプログラム・メモリ１７０から読み出された命令語を乗累算部用命令デコーダ１３０、算術論理演算部用命令デコーダ１４０または命令キャッシュ１５０のどれに入力するかを選択するためのデコーダである。
【００１８】
さて、乗累算部１１０の構成および動作を詳しく説明する。
【００１９】
乗累算部１１０は、すくなくても２つ以上の乗累算器１〜ｎの１１５〜１１７を備えている。各乗累算器は、ａとｂの入力に対して、ａｂ＋ｃの積和を計算することができる（ｃは乗累算器中のレジスタに記憶している値である）。ローカル・データ・メモリ１１１は、１０個程度のデータワード分を記憶できる容量を有するローカル・メモリで、各乗累算器の入力の一方に接続されている。また、各乗累算器間には１サイクルの遅延ができる遅延回路１１２〜１１３が挿入されており、ローカルメモリからのデータを遅延している。
【００２０】
乗累算部１１０の動作を説明する。デジタル信号処理でよく利用されているフィルタの場合を例にして説明する。
【００２１】
フィルタに用いられる計算式は、ｙt を出力、ｘt を入力、αを係数とするとき、
【００２２】
【数１】
0003723311.tif 000002
で表される。この計算式を、上述の乗累算部１１０で行うことを説明する。なお、ｋは、正の整数である。
【００２３】
さて、計算式の係数α0 ，α1 ，α2 ，α3 ，α4 ，・・・αk をローカルメモリにまず格納しておく。これは、データ・メモリ１またはデータ・メモリ２からローカルメモリへの転送命令を用意しておき、この転送命令を用いることにより行われる。
【００２４】
入力データであるｘt ，ｘt+1 ，ｘt+2 ，ｘt+3 ，ｘt+4 ，・・・ｘt+k は、データ・メモリ１  １０１からメモリ・バス１  １０３を介して順次読み出され、乗累算部１１０に入力される。乗累算部１１０に入力したデータは、乗累算器１  １１５，乗累算器２  １１６，乗累算器ｎ  １１７に１サイクル遅れて入力される。また、係数α0 ，α1 ，α2 ，α3 ，α4 ，・・・αk は、ローカルメモリ１１１から順次読み出されて、乗累算器１，乗累算器２，・・・乗累算器ｎに、同時に入力される。
【００２５】
このように、入力されるデータを各乗累算器で計算すると、ｔのときからｋサイクル後に、乗累算器１，２，…，ｎには、それぞれｙt ，ｙt-1 ，…，ｙt-n として、
【００２６】
【数２】
0003723311.tif 000003
【００２７】
【数３】
0003723311.tif 000004
【００２８】
【数４】
0003723311.tif 000005
が計算される。なお、ｘt-n ，…，ｘt-2 ，ｘt-1 は、以前に入力したデータが各遅延回路１１２〜１１３に残っていたものである。
【００２９】
このように、ローカル・メモリおよび遅延回路を用意することにより、データの読み出しは、２本用意されているメモリ・バスの一方のみを利用することで、２入力の演算をｎ重の並列で行うことができる。しかも、例えば同じフィルタの演算を繰り返し行うときは、最初にフィルタの演算に用いる係数をローカル・メモリに転送すれば、後はその転送された係数を用いることができるので、ローカル・メモリへの転送は、大したオーバーヘッドにはならない。
【００３０】
さて、命令キャッシュ１５０の動作について説明する。この命令キャッシュ１５０は、セレクタ１６０により切り替えて、プログラム・メモリ１７０に代わって、乗累算部用の命令デコーダ１３０に対して命令を供給できるような構成である。この命令キャッシュには、乗累算部１１０を用いて、データについては１つのデータ・メモリすなわち１つのメモリ・バスのみを用いる演算する命令を格納する。この様な命令は、例えば、前に説明したようなローカル・メモリを用いた演算を行う命令である。
【００３１】
乗累算部１１０が命令キャッシュ１５０からの命令により、メモリ・バスの１つを用いて演算を行っているのに並行して、プログラム・メモリ１７０から他のメモリ・バスを用いて、算術論理演算部で行う演算例えばビット処理やシステム制御処理を行う命令を読み出し、実行することができる。
【００３２】
このように、命令キャッシュ１５０からの命令と、プログラム・メモリ１７０からの命令とを全く独立に実行することができるため、１つのプロセッサのなかに、あたかも２つの独立のプロセッサが存在するような処理が可能になる。
【００３３】
このローカル・メモリに対して格納される命令としては、例えば、乗累算部１１０を用いて上述の計算式を計算するようなループのプログラムの命令がよい。この様な場合、ループのプログラムを制御するためのリピート（繰り返し）命令により、命令キャッシュを用いて繰り返しを行うかを指定することが多い。
【００３４】
図２（ａ）は、そのリピート命令のフォーマットの１例を示している。
【００３５】
リピート命令は、例えば、図２（ａ）で示すように、命令を識別する命令コード、リピートを行う範囲を示すプログラム・メモリのアドレス（Ａｄｄ）、リピート回数（ｃｏｕｎｔ）、命令キャッシュを用いるか否かを示すフラグ（Ｆ）で構成されている。
【００３６】
図２（ｂ）を用いて、どのように図２（ａ）に示したリピート命令と上述の命令キャッシュを用いて、並列に演算を行うかを説明する。プログラム・メモリ１７０から読み出した命令がリピート命令であり、命令キャッシュを用いてリピートを行うフラグが立っているとする。このリピート命令で指定されたリピートの範囲が（Ａ）である。プロセッサの制御部は、引き続き命令語をプログラム・メモリから読み出して実行するが、それとともに、読み出したリピートの範囲（Ａ）の命令語を命令キャッシュ１５０に格納する。そして、リピート範囲（Ａ）のプログラムの読み出しが終了すると、フラグが立っている場合は、そのまま、引き続きプログラム・メモリからの次のアドレスの命令語を読み出して実行する。
【００３７】
一方、命令キャッシュからも、リピート命令で指定された回数から１回少ない回数、繰り返し命令語が読み出されて実行される。この命令キャッシュから読み出されている時間の間、プロセッサは、命令キャッシュからの命令とプログラム・メモリからの命令により、並列に動作している。
【００３８】
したがって、リピート命令のフラグで命令キャッシュを利用して並列動作を行うことを指定した場合は、ループのプログラムの次のプログラムは、ループを行っている時間の間、並列動作していることを意識して作成する必要がある。図２（ｂ）において、プログラム・メモリ内の（Ｂ）と示した部分がその並列動作部分のプログラムに対応している。
【００３９】
なお、上記の例では、リピート命令によりフラグを用いて明示的に命令キャッシュを利用することを指定した。しかし、例えば乗累算部を用いるループの場合に必ず命令キャッシュを利用するときは、リピート範囲の乗累算部を用いる命令語を命令キャッシュに必ず転送することにすると、上記で説明したフラグは必要なくなる。
【００４０】
上記では、乗累算部を有するデジタル信号処理プロセッサ（ＤＳＰ）で説明した。これは、デジタル信号処理プロセッサ（ＤＳＰ）においては、乗累算部１１０の説明で例示したフィルタの演算に多く利用されており、並列に動作することのできる機会が多く、命令キャッシュ１５０を用いることにより並列に処理できることが多くなるからである。
【００４１】
しかし、上述の命令キャッシュの構成は、複数の演算部を有する汎用のプロセッサにも応用できる。この場合、少なくても命令キャッシュを設けた演算部と他の１つの演算部において、互いにバスの競合がない演算が可能であることが必要である。
【００４２】
【発明の効果】
上記の説明のように、本発明は、命令キャッシュからの命令と、プログラム・メモリからの命令とを全く独立に実行することができるため、１つのプロセッサのなかに、あたかも２つの独立のプロセッサが存在するような処理が可能になる。
【００４３】
乗累算部を有するプロセッサにおいては、フィルタの演算に多く利用されており、並列に動作することのできる機会が多く、命令キャッシュを用いることにより並列に処理できることが多く、本発明を有効に利用できる。
【図面の簡単な説明】
【図１】本発明の実施形態を示すブロック図である。
【図２】本発明のプロセッサの動作を説明する図である。
【符号の説明】
１０１，１０２  データ・メモリ
１０３，１０４  メモリ・バス
１０５  デコーダ
１１０  乗累算部
１１１  ローカル・データ・メモリ
１１２，１１３  遅延回路
１１５〜１１７  乗累算器
１２０  算術論理演算部
１３０  乗累算部用命令デコーダ
１４０  算術論理演算用命令デコーダ
１５０  命令キャッシュ
１６０  セレクタ
１７０  プログラム・メモリ
【図１】
0003723311.tif 000006
【図２】
0003723311.tif 000007