(57)【特許請求の範囲】
【請求項１】
２つのバスＢ１およびＢ２と第１演算器および第２演算器とを少なくとも有し、２つのバスＢ１およびＢ２からのデータを演算する並列演算器において、
バスＢ１からのデータＡを入力して遅延し、
次にバスＢ１およびバスＢ２からデータａ、Ｂをそれぞれ入力し、遅延した前記データＡと入力された前記データＢとを前記第１演算器で演算し、入力したデータａおよびＢを前記第２演算器で演算し、
前に入力したデータＡおよびａを遅延し、
次にバスＢ２からデータｂを入力し、遅延した前記データａおよび入力した前記データｂとを用いて前記第１演算器で演算し、遅延した前記データＡと入力した前記データｂとを用いて前記第２演算器で演算する
ことを特徴とする並列演算器。
【請求項２】
２つのバスＢ１およびＢ２と第１演算器および第２演算器とを少なくとも有し、２つのバスＢ１およびＢ２からのデータを演算する並列演算器において、
前記第１演算器および前記第２演算器の一方の入力は、第１および第２のマルチプレクサに接続され、他方の入力はバスＢ２に接続されており、
前記第１マルチプレクサの入力は、バスＢ１、バスＢ１の入力データを遅延する第１遅延素子、および、前記第２マルチプレクサの出力を遅延する第２遅延素子に接続されており、
前記第２マルチプレクサの入力は、バスＢ１および前記第１マルチプレクサの出力を遅延する第３遅延素子に接続されている
ことを特徴とする並列演算器。
【請求項３】
２つのバスＢ１およびＢ２と第１演算器および第２演算器とを少なくとも有し、２つのバスＢ１およびＢ２からのデータを演算する並列演算器において、
前記第１演算器および前記第２演算器の一方の入力は、バスＢ２の入力を格納する第１レジスタの出力に接続されており、
前記第１演算器および前記第２演算器の他方の入力は、それぞれ第２レジスタおよび第３レジスタの出力に接続されており、
前記第２レジスタの入力は、バスＢ１および前記第３レジスタの出力を入力に接続しているマルチプレクサの出力に接続されており、
前記第３レジスタの入力は、バスＢ１および前記第２レジスタの出力を入力に接続しているマルチプレクサの出力に接続されており、
前記レジスタにおいて、遅延動作を行うことを特徴とする並列演算器。
【請求項４】
請求項１ないし３のいずれかに記載の並列演算器において、前記バスＢ１およびＢ２からの入力データは、複素数データ（Ａ＋ａｊ）および（Ｂ＋ｂｊ）を構成しており、前記第１演算器および第２演算器は、複素数の乗算（ＡＢ−ａｂ）＋ｊ（Ａｂ＋ａＢ）を行うことを特徴とする並列演算器。
【請求項５】
請求項１ないし４のいずれかに記載の並列演算器を演算部に適用したことを特徴とするデジタル・シグナル・プロセッサ。
【発明の詳細な説明】
技術分野
本発明は、並列に演算される演算器に関するもので、特に、デジタル・シグナル・プロセッサの演算部に用いられる演算器に関するものである。
背景技術
従来、図１に示すように、２つの演算器６０４および６０５の間に、遅延素子６０３を置く構成の並列演算器が知られている。この構成において、自己相関の計算の場合のように、時間的にみて常に１つのデータが変化していくような計算を、２つの演算器、２つの入力データ・バスで実現することができる（この構成に関して、例えば米国特許明細書第５，４４２，５８０号を参照のこと）。
しかし、上記の構成は、例えば複素数の乗算のような計算を２つの演算器で並列に演算する場合は適用することができない。
すなわち、２つの複素数の乗算は、
【数１】
（Ａ＋ｊａ）（Ｂ＋ｊｂ）＝（ＡＢ−ａｂ）＋ｊ（Ａｂ＋ａＢ）
を計算する。この時、図１に示す構成のように、遅延素子を挿入した構成においては、このような（ＡＢ−ａｂ）および（Ａｂ＋ａＢ）のような演算を２つの演算器を並べて並列に行う場合、データ入力を演算器に対して行うために、入力バスの数を増やすか、または時分割で送る場合はサイクル数を増やす必要がある。
発明の開示
本発明の目的は、上記の例の複素数のような計算においても、２つのバスを用いて、最小のサイクル数で並列に演算ができるような簡単な構成の並列演算器の構成を提供するものである。
上記の目的を達成するために、本発明では、２つのバスＢ１およびＢ２と第１演算器および第２演算器とを少なくとも有し、２つのバスＢ１およびＢ２からのデータを演算する並列演算器において、バスＢ１からのデータＡを入力して遅延し、次にバスＢ１およびバスＢ２からデータａ、Ｂをそれぞれ入力し、遅延した前記データＡと入力された前記データＢとを前記第１演算器で演算し、入力したデータａおよびＢを前記第２演算器で演算し、前に入力したデータＡおよびａを遅延し、次にバスＢ２からデータｂを入力し、遅延した前記データａおよび入力した前記データｂとを用いて前記第１演算器で演算し、遅延した前記データＡと入力した前記データｂとを用いて前記第２演算器で演算することを特徴とする。
また、遅延素子を用いて構成した並列演算器として、第１演算器および第２演算器の一方の入力は、第１および第２のマルチプレクサに接続し、他方の入力はバスＢ２に接続して、第１マルチプレクサの入力は、バスＢ１、バスＢ１の入力データそ遅延する第１遅延素子、および、第２マルチプレクサの出力を遅延する第２遅延素子に接続し、第２マルチプレクサの入力は、バスＢ１および前記第１マルチプレクサの出力を遅延する第３遅延素子に接続することで、構成することができる。
また、レジスタを用いて遅延を実現した並列演算器として、第１演算器および前記第２演算器の一方の入力は、バスＢ２の入力を格納する第１レジスタの出力に接続し、第１演算器およ第２演算器の他方の入力は、それぞれ第２レジスタおよび第３レジスタの出力に接続し、第２レジスタの入力は、バスＢ１および第３レジスタの出力を入力に接続しているマルチプレクサの出力に接続し、第３レジスタの入力は、バスＢ１および前記第２レジスタの出力を入力に接続しているマルチプレクサの出力に接続して、構成することができる。
これらの並列演算器において、バスＢ１およびＢ２からの入力データは、複素数データ（Ａ＋ａｊ）および（Ｂ＋ｂｊ）として、前記第１演算器および第２演算器は、複素数の乗算（ＡＢ−ａｂ）＋ｊ（Ａｂ＋ａＢ）を行うこともできる。
また、デジタル・シグナル・プロセッサの演算部に用いるとパイプラインで順次演算することができ、特に効果が大きい。
【図面の簡単な説明】
図１は従来のデジタル・シグナル・プロセッサの演算部を示す図である。
図２（ａ）および（ｂ）はデジタル・シグナル・プロセッサの構成例のブロック図である。
図３は本発明の第１の実施形態の並列演算器を示すブロック図である。
図４は第１の実施形態の動作例を説明するためにデータの変化を示す図である。
図５は第１の実施形態の動作例を説明する図である。
図６は第１の実施形態の動作例を説明する図である。
図７は第１の実施形態の動作例を説明する図である。
図８は本発明の第２の実施形態の並列演算器を示すブロック図である。
図９は第２の実施形態の動作例を説明するためにデータの変化を示す図である。
発明を実施するための最良の形態
図面を用いて本発明の実施形態を説明する。
図２（ａ）は、本発明が適用されるデジタル・シグナル・プロセッサ（ＤＳＰ）の一般的な構成例の概略図である。
図２（ａ）において、１０１はデータ・バスで、必要に応じて複数のデータを転送できるような構成をとっている。１０２は演算部で、制御部１０３の制御に従って、データ・メモリ１０４等からのデータをデータ・バス１０１を介して入力して、演算結果をまたデータ・バス１０１を介してデータ・メモリ１０４等へ出力している。１０６は制御メモリ（命令メモリ）で、このＤＳＰの動作を規定するプログラムを格納しており、制御部１０３を制御している。
図２（ｂ）は、上記のＤＳＰの演算部１０２を、もう少し詳細に記載したブロック図である。この図１（ｂ）において、１０７は演算器入力部で、データ・バスから演算器１０８へのデータの転送を制御する。演算器１０８は、制御部１０３からの制御により転送されたデータに対して積和等の演算を行うことができる。
出力部１０９は、演算器１０８からの演算結果のデータ・バスへの転送を制御している。
（第１の実施形態）
図３に本発明の第１の実施形態の並列演算器を示す。この実施形態においては、図２におけるデータ・バス１０１は２つのデータを並列に転送できる構成である。図３において、２０１および２０２はデータ・バスＢ１（バス１）、Ｂ２（バス２）から演算器に入力するための配線である。２０３，２０５および２１１は遅延素子で、入力されたデータを１サイクル分遅延することができる。２０４および２０６はマルチプレクサで、複数の入力データから１つを選択して出力できる。そして、２０７および２０８は演算器で、入力端子Ｉ１とＩ２および入力端子Ｉ３とＩ４から入力されたデータを演算し、その演算結果を出力端子Ｏ１およびＯ２から出力する。演算器２０７および２０８はたとえば積和等の演算ができる。
なお、マルチプレクサ２０４および２０６、演算器２０７および２０８には、図示しない制御部からの制御信号が入力され、それぞれを制御している。
上述の並列演算器を、図２に示すデジタル・シグナル・プロセッサに用いる場合は、この遅延素子２０３と２０５と２１１およびマルチプレクサ２０４と２０６で、図２（ｂ）の演算器入力部１０７を形成している。そして、演算器２０７と２０８で図２（ｂ）の演算器１０８を構成している。
この図３に示した本発明の実施形態の演算器の動作を、上記の複素数の乗算を例にして説明する。すなわち、２つの複素数の乗算である。
【数２】
（Ａ＋ｊａ）（Ｂ＋ｊｂ）＝（ＡＢ−ａｂ）＋ｊ（Ａｂ＋ａＢ）
を計算することで、図３に示した本発明の実施形態の動作を説明する。
図４は、データ・バスＢ１およびＢ２から入力するデータおよび演算器２０７および２０８への入力および出力を示している。図５〜図７の３つの図は、各サイクルの図３に示した構成におけるデータの流れを示している。これらの図を用いて、複素数の乗算を例にして本発明の実施形態の動作を説明する。
さて、図４において、サイクル１では、バスＢ１にデータＡを転送し、それを遅延素子２１１に印加する。その様子を示したのが図５である。
サイクル２では、バスＢ１にデータａ、バスＢ２にデータＢを転送する。マルチプレクサ２０６を制御することで、演算器２０８の入力Ｉ３にデータａ、また演算器２０７の入力Ｉ２および演算器２０８の入力Ｉ４には、データＢが印加される。また、マルチプレクサ２０４を制御することにより、演算器２０７の入力Ｉ１には、遅延素子２１１からのデータＡが印加される。その様子を示したのが図６である。そして、データＡは、遅延素子２０３にも印加され、１サイクル遅延される。また、データａは、遅延素子２０５にも印加され、１サイクル遅延される。
サイクル３では、バスＢ２にデータｂを転送する。このデータｂは、演算器２０７の入力Ｉ２および演算器２０８の入力Ｉ４に印加される。また、マルチプレクサ２０４および２０６を制御することで、演算器２０７の入力Ｉ１には、遅延素子２０５からのデータａ、演算器２０８の入力Ｉ３には、遅延素子２０３からのデータＡが印加される。この様子を示したのが図７である。サイクル３においては、演算器２０７および２０８の内部で、前のサイクルまでに入力されているデータを用いて（Ａ・Ｂ）および（ａ・Ｂ）を計算し終わり、内部のアキュムレータに格納される。
また、次のサイクル４では、演算器２０７および２０８の内部で、前のサイクルまでに入力されているデータを用いて（ａ・ｂ）および（Ａ・ｂ）を計算し、前のサイクルまでに計算されてアキュムレータに格納されている演算結果を用いて、Ａ・Ｂ−ａ・ｂおよびＡ・ｂ＋ａ・Ｂを計算する。そして、それぞれ演算器の出力Ｏ１およびＯ２から出力する。
このように、複素数の乗算において、３サイクルで演算に必要なデータの転送を終了し、並列に演算して４サイクル後に演算結果を得ることが可能である。
これらの演算は、パイプラインのように次々にデータをバスから取り込むことで連続的に演算を行い、次々にデータを出力することができる。
また、上記の構成は、演算器が２つの場合を説明したが、演算器を３以上同様の構成で接続してデータを送り、並列に演算することも可能である。
また、本発明の実施形態の構成で、従来の技術で説明した自己相関等の演算も、マルチプレクサを制御することで行うことができる。
（第２の実施形態）
遅延素子２０３，２０５および２１１は、レジスタで構成することが可能である。その構成例を図８，図９を用いて説明する。
図８において、５０２，５０４および５０５は、演算部５２０および５３０に入力するためのレジスタである。これらのレジスタとマルチプレクサ５０１，５０３を用いてパスＢ１およびＢ２からの入力データを演算部５２０および５３０に入力する。
また、演算器５２０および５３０は、乗算器５０６および５１０、レジスタ５０７および５１１、加算器５０８および５１２、レジスタ５０９および５１３により構成されている。このように、各演算部に直列に内部レジスタを２つ有しているため、図３〜図７で説明した演算器とは異なり、２サイクルで乗算と加算を行う。
され、この図８に示した構成の動作を、図９に示したデータが演算されていく様子を示した表を用いて説明する。
この図８で用いているレジスタは、各サイクルの終わりで入力されているデータを格納するように動作する。
サイクル１では、バスＢ１にデータＡが現われたことを示している。サイクル２では、そのデータＡは、レジスタ５０４に格納されている。また、バスＢ１およびＢ２に次のデータａおよびＢが現われる。
サイクル３では、そのデータａは、レジスタ５０５に格納されており、データＢはレジスタ５０２に格納されている。そして、レジスタ５０４に記憶されていたデータＡは、このサイクルでもそのまま保持される。バスＢ２には、データｂが現われている。また、マルチプレクサ５０３を制御することにより、レジスタ５０５の入力端子には、レジスタ５０４に格納されているデータＡが現われている。さらに、マルチプレクサ５０１の制御により、レジスタ５０４の入力端子には、レジスタ５０５に格納されているデータａが現われている。レジスタ５０４とレジスタ５０２からの入力を受け、乗算器５０６はＡ・Ｂを計算する。また、乗算器５１０は、レジスタ５０５とレジスタ５０２からの入力でａ・Ｂを計算する。
サイクル４では、データｂは、レジスタ５０２に格納されている。また、レジスタ５０４に格納されていたデータＡは、レジスタ５０５に格納されている。さらに、レジスタ５０５に格納されていたデータａは、レジスタ５０４に格納されている。サイクル３で演算された２つの乗算結果は、レジスタ５０７およびレジスタ５１１に格納されている。そして、レジスタ５０４とレジスタ５０２からの入力を受け、乗算器５０６はａ・ｂを計算する。また、乗算器５１０は、レジスタ５０５とレジスタ５０２からの入力でＡ・ｂを計算する。
サイクル５では、レジスタ５０７およびレジスタ５１１に格納されていた乗算結果Ａ・Ｂおよびａ・Ｂはレジスタ５０９および５１３に格納されている。また、サイクル４で計算された乗算結果ａ・ｂおよびＡ・ｂは、レジスタ５０７および５１１に格納されている。レジスタ５０７とレジスタ５０９の内容およびレジスタ５１１とレジスタ５１３の内容が演算されて、ＡＢ−ａｂおよびａＢ＋Ａｂ得られ、サイクル６でレジスタ５０９および５１３に格納されている。
データは、バスＢ１およびバスＢ２に次々に現われ、それがレジスタに順次格納されていく間に演算される（パイプライン演算）。
それは、図９の表に示されている通りである。
上記の例では、デジタル・シグナル・プロセッサの構成として説明したが、汎用のプロセッサや、特定の演算を行う演算器にも本発明の構成を適用することができる。
産業上の利用可能性
上記のように、本発明によれば、簡単な構成で、２つのバスを用いて２つの演算器へ順次データの転送を行うことができ、２つの演算器は並列に演算ができる。そのため、早く演算ができる。また、パイプラインのように、次々にデータを転送して演算するのに適した構成である。
【図１】
0003759173.tif 000002
【図２Ａ】
0003759173.tif 000003
【図２Ｂ】
0003759173.tif 000004
【図３】
0003759173.tif 000005
【図４】
0003759173.tif 000006
【図５】
0003759173.tif 000007
【図６】
0003759173.tif 000008
【図７】
0003759173.tif 000009
【図８】
0003759173.tif 000010
【図９】
0003759173.tif 000011