| 【発明の名称】 |
並列演算回路 |
| 【発明者】 |
【氏名】農添 三資 【住所又は居所】大阪府門真市大字門真1006番地 松下電器産業株式会社内
|
| 【要約】 |
【課題】高速な並列加算回路を提供する。
【解決手段】加算器102の入力側に、加算器102における並列演算の境界ビットへの入力を制御信号111に基づき決定することにより、当該境界ビットよりも下位の演算結果から当該境界ビットよりも上位の演算結果へのキャリー伝播を制御する入力加工回路101を設けることにより、加算器自体の速度を劣化させることなく、任意のビットで分割した並列加算を可能にする。 |
【特許請求の範囲】
【請求項1】 並列演算を行う加算器と、前記加算器の入力側に設けられた入力加工回路とを備え、前記入力加工回路が、前記加算器における並列演算の境界ビットへの入力を制御信号に基づき決定することにより、当該境界ビットよりも下位の演算結果から当該境界ビットよりも上位の演算結果へのキャリー伝播を制御することを特徴とする並列演算回路。 【請求項2】 前記制御信号が演算の種類を表す演算情報を含み、前記加算器における並列演算の境界ビットへの入力が前記演算情報に応じて決定される、請求項1記載の並列演算回路。 【請求項3】 前記加算器からの出力と、前記加算器への入力と、前記制御信号とを入力する出力加工回路をさらに備え、前記出力加工回路が、前記制御信号に基づき、前記加算器における並列演算の境界ビットからの出力に対し出力加工を行う、請求項1または2に記載の並列演算回路。
|
【発明の詳細な説明】【0001】 【発明の属する技術分野】本発明は、ディジタル演算装置に関し、特に算術演算装置に関する。 【0002】 【従来の技術】コンピュータは通常、所定の最大ビット数の数値を加算する加算器を含む算術演算論理装置を備えている。ディジタルシグナルプロセッサ等では、16ビットおよび32ビット長ワード用の加算器が見られる。それらの加算器はまた、それよりも小さなワードについても機能する。例えば、32ビットの加算器を用いて、16ビットの2つの加算を並列に行う場合がある。 【0003】ここで、並列加算について、図5および図6を参照しながら例を挙げて説明する。図5および図6の例では、8ビットの加算器を用いて、4ビットの2つの並列加算を行う。 【0004】図5は、8ビット数A[7:0]=[11001101]と、B[7:0]=[01110101]の加算の計算式を表す。加算結果は[101000010]となる。和が8ビット(S[7:0])と、キャリー(C[7])が1ビットで都合9ビットの結果が得られる。なお、nビット目の和をS[n]、nビット目から(n+1)ビット目に上がるキャリーをC[n]と表す。また、本明細書では、加算器を用いて減算を行う際には、Bn入力は反転データが入り、2の補数系の減算を行うための初期キャリーC[−1]の入力機構があるものとする。2の補数系の減算方法に関して、この前提は決して特殊なものではない。 【0005】ここで、A,Bの上位、下位4ビットずつを並列に加算する場合を考える。すなわち、A[7:4]=[1100],B[7:4]=[0111]の4ビットの加算と、A[3:0]=[1101],B[3:0]=[0101]の4ビットの加算を並列に行う。求める結果は、図6に示すように、上位4ビットについては和S[7:4]=[0011]とキャリーC[7]=[1]、下位4ビットについては、和S[3:0]=[0010]とキャリーC[3]=[1]である。 【0006】前記の例でわかるように、並列に加算を行う場合は、上位で行う加算に、下位で行う加算のキャリーが伝播するのを制御する必要がある。 【0007】また、今後動画などのマルチメディア処理が必要になると、64ビット以上の加算器が必要となり、任意のビット位置で分割する必要が出てくる。 【0008】従来、並列加算を実現する方法として、特開平7−210369号公報に開示されているように、加算器のキャリー伝播部に、セレクタ回路を挿入し、キャリーの伝播を制御することが知られていた。 【0009】図9に、従来の並列加算回路の概念図を示す。従来例では、図9にあるように、分割の可能性のあるビット間にセレクタ回路を設け、そのビットで分割するか否かを表す制御信号を用いて、キャリーを上位に伝播するかしないかを決定することにより、並列加算を実現する方法が知られている。図9において、並列加算を行わない場合には、通常の加算を行なうので、セレクタは下位の部分加算器からのキャリーを出力として選択し、並列加算を行なう場合には、セレクタは0の値を出力する。これにより、並列加算を行う場合には、上位の加算にキャリーが伝播しないことになる。 【0010】 【発明が解決しようとする課題】しかしながら、上記従来の方法では、キャリー伝播部にセレクタ回路を入れる必要があるため、加算器の段数が増加し、演算速度の低下を招くという問題があった。 【0011】例えば、16ビットの加算器に対して、任意のビット位置で分割して並列加算を行う場合には、各ビットの間にキャリー伝播を制御するセレクタ回路を入れる必要があるため、計15箇所のキャリー伝播部にセレクタ回路が入り、加算時間がセレクタ回路15個分だけ長くなる。 【0012】本発明は、前記従来の問題点を解決するもので、任意のビット位置で分割する場合に、従来の方法に比べて演算速度を低下させることなく、並列に演算することが可能な回路を提供する。 【0013】 【課題を解決するための手段】上記の目的を達成するために、本発明にかかる並列演算回路は、並列演算を行う加算器と、前記加算器の入力側に設けられた入力加工回路とを備え、前記入力加工回路が、前記加算器における並列演算の境界ビットへの入力を制御信号に基づき決定することにより、当該境界ビットよりも下位の演算結果から当該境界ビットよりも上位の演算結果へのキャリー伝播を制御することを特徴とする。 【0014】この構成によれば、例えば境界ビットからその上位ビットへのキャリーが“1”にならないように前記境界ビットへの入力を予め加工することにより、並列演算が可能となる。また、入力加工回路の一定段数しか段数増加がないため、前述した従来の並列演算回路とは異なり、演算速度が低下しない並列演算回路を提供することが可能となる。 【0015】前記並列演算回路は、前記制御信号が演算の種類を表す演算情報を含み、前記加算器における並列演算の境界ビットへの入力が前記演算情報に応じて決定されることが好ましい。 【0016】前記並列演算回路は、前記加算器からの出力と、前記加算器への入力と、前記制御信号とを入力する出力加工回路をさらに備え、前記出力加工回路が、前記制御信号に基づき、前記加算器における並列演算の境界ビットからの出力に対し出力加工を行うことが好ましい。 【0017】 【発明の実施の形態】以下、本発明の実施形態について、図面を参照しながら説明する。 【0018】(実施の形態1)図1は、本発明の一実施形態にかかる並列加算回路の構成を表すブロック図である。図1に示すように、本実施形態にかかる並列加算回路は、入力加工回路101および加算器102を備えている。入力加工回路101は、セレクタ201を有し、このセレクタ201に制御信号111が入力される。 【0019】入力加工回路101は、入力される2つのデータAn,Bnに対し、制御信号111に基づいた演算を行い、加算器102へ出力する。 【0020】加算器102は、入力加工回路101の2つの出力データの加算を行い、加算結果112を出力する。 【0021】ここで、入力加工回路101の詳細について、加算器102が8ビットの場合の具体例を用いて説明する。8ビット加算器102の入力をA[7:0],B[7:0]とし、加算結果112が和S[7:0]、キャリーC[7]で出力されるものとする。なお、一般的に加算結果の和Sは S[n]=A[n]^B[n]^C[n−1] ・・・(式1) と表される。ここで“^”は排他的論理和を表す。また、キャリーはC[n]=A[n]・B[n]+B[n]・C[n−1]+C[n−1]・A[n] ・・・(式2) と表される。ここで“・”、“+”はそれぞれ論理積、論理和を表す。 【0022】図1において、加算器102がnビットであるとすると、2つの並列加算を行う場合、合計(n−1)ビットまでの並列加算が可能となる。加算器102が8ビットであれば合計7ビットまでの並列加算が可能であるので、4ビット+3ビット、2ビット+5ビット、3ビット+3ビットなどの並列加算が可能である。 【0023】4ビット+3ビットの並列加算を行う場合について、図7を参照しながら説明する。図7は、4ビットの加算[1100]+[0110]と、3ビットの加算[101]+[101]とを並列に行う場合を表している。この場合、下位3ビット(ビット2からビット0)で3ビットの加算を行い、上位4ビット(ビット7からビット4)で4ビットの加算を行う。この時、ビット3の入力には、加数、被加数ともに0を入力する(図7において破線で囲んだ部分)。この場合、式1より、S[3]=A[3]^B[3]^C[2] と表せる。今、A[3]=B[3]=0であるので、S[3]=0^0^C[2]=C[2] である。すなわち、上位4ビットの加算については、和4ビットがS[7:4]で得られ、キャリーがC[7]で得られる。 【0024】下位3ビットの加算については、和3ビットがS[2:0]で得られ、キャリーがS[3](=C[2])で得られる。このように境界ビットの入力に0を入力することで、下位の加算から上位の加算へのキャリー伝播を防ぎ、境界ビットで下位の加算のキャリー結果を得ることができる。図1では、セレクタ201を用いることにより、入力データを定数0に変換する構成を実現している。すなわち、図1の例では、制御信号111の値に応じて入力An(またはBn)か定数0を選択する回路をセレクタ201として用いればよい。 【0025】図1における入力加工回路101は、1ビット分であり、加算を分割する可能性のあるビットに同回路を入れておく必要がある。8ビットの加算器において任意のビットで加算を分割するためには、8−1=7セットのセレクタ回路が必要となる。 【0026】なお、今回の例ではセレクタ回路を用いて入力加工回路を実現しているが、本発明はこれに限定されず、同等の機能を有する回路であれば並列加算が実現可能である。 【0027】(実施の形態2)次に、本発明の他の実施形態について、図2および図8を参照しながら説明する。本実施形態にかかる並列加算回路は、入力加工回路101および加算機102を有する点で、実施の形態1と同様である。ただし、本実施形態にかかる並列加算回路は、入力加工回路101の内部構成が、実施の形態1と異なっている。図2は、本実施形態で用いる入力加工回路101の詳細構成図である。 【0028】2の補数系で減算を行う場合、引く数の2の補数を取り、引かれる数との加算を行う。例えば[1100]−[0110]の計算を行うには、引く数[0110]の2の補数を取り、引かれる数[1100]と足し合わせる。2の補数を取る際には、全ビットを反転し、最下位ビットに1を加える必要がある。この例では、引く数[0110]の2の補数が[1001]+[0001]であるので、[1100]+[1001]+[0001]の加算を行うことにより、減算結果が得られる。ビット反転は、通常加算器の入力に入るまでになされるので、今回最下位ビットに1を加える装置を加える必要がある。 【0029】図8を用いて、上位で[1100]−[0110]、下位で[101]−[101]の減算を行う場合を考える。実施の形態1と同様に、ビット7からビット4までに上位データを入力し、ビット2からビット0に下位データを入力する。ここで引く数はビット反転されているものとする。この場合、ビット4、すなわち上位の最下位ビットに初期キャリーC[3]として1を入れる必要がある(2の補数変換のため)。これに関しては、A[3]=B[3]=1を入力すれば、式2より、C[3]=A[3]・B[3]+B[3]・C[2]+C[2]・A[3]であるので、C[2]の値にかかわらず、C[3]=1となり、上位ビットに初期キャリー1が入力され、上位4ビットでは、[1100]+[1001]+[0001](=C[3])の加算が行われるので、所望の減算が実行可能となる。 【0030】図2は、図1の入力加工回路101を減算も可能になるように変更したものである。制御信号111の値に応じて、該当ビットで分割しない場合は入力An(またはBn)を選択し、該当ビットで分割しかつ上位で加算を行う場合は定数0を選択し、上位で減算を行う場合は1を選択するセレクタ201を用いて実現している。 【0031】(実施の形態3)本発明のさらに他の実施形態について、図3〜図5を参照しながら以下に説明する。 【0032】前記実施の形態1および2の並列加算回路では、並列加算を行うと、加算器のビット長を最大限使用することができない。つまり、8ビット加算器を用いた場合では、3ビット+4ビットなどの並列加算を行うことはできたが、4ビット+4ビット、3ビット+5ビットのように、合計8ビットになるような並列加算を行うことはできない。本実施形態では、実施の形態1,2で示した回路構成に出力加工回路を加えることで、加算器のビット長を最大限に利用可能にする。 【0033】図3に示すように、本実施形態にかかる並列加算回路は、実施の形態1,2の回路における加算器102の加算結果112を第1の入力とし、入力加工回路101の2つの入力An,Bnを第2、第3の入力とし、制御信号111を第4の入力とし、加算結果SnとキャリーCnを出力する。 【0034】ここで、図6を参照しながら、具体的な演算方法について説明する。図6は、8ビットの加算器を用いて4ビット+4ビットの並列加算を行う例である。上位4ビットで[1100]と[0111]の加算を行い、下位4ビットで[1101]と[0101]の加算を行う。入力加工回路101は実施の形態1と同じく、制御信号111により、下位の最上位ビット(本例の場合はビット3)の入力を、A[3]=B[3]=0に変換する(図6において破線で囲んだ部分)。すると、加算器102の入力データは[11000101]+[01110101]となるので、加算結果112は、和S[7:0]=[00111010]、キャリーC[7]=[1]となる。上位4ビットの加算結果はS[7:4]、C[7]で得られている。 【0035】下位4ビットの加算結果に関しては、S[2:0]の3ビットは正確な値が得られているが、S[3]およびキャリーが得られていない。ここで、式1より本来はS[3]=A[3]^B[3]^C[2] の値を出力しなければならないが、入力加工回路101によってA[3]=B[3]=0の値が入力されているので、S[3]=C[2]の値が出力されている。また、下位の加算結果のキャリーとして、式2よりC[3]=A[3]・B[3]+B[3]・C[2]+C[2]・A[3] の値を出力する必要がある。そこで、出力加工回路103において、A[3],B[3]の値を用いてS[3]、C[3]の値を計算する。 【0036】出力加工回路103の具体的な回路構成について、図4を参照しながら説明する。図4の出力加工回路103においては、分割するビットについてはC[n−1]の値が出力されているので、A[n]、B[n]の値を用い、式1,式2に基づいて、C[n],S[n]の値を計算する。また、そのビットで分割を行わない場合には、加算器102の加算結果112をそのまま通過させなければならないので、制御信号111によって、A[n]、B[n]の値を0にする。 【0037】Cnは式2の通りである。Snについて説明すると、分割を行なわないビットでは(8ビット加算器で、4ビット+4ビットの分割を行なう場合では、ビット7からビット4と、ビット2からビット0)、制御信号111の値が0になるので、図4において、Sn1=0^0=0、Sn2=S[n] となる。よって、Sn=Sn1^Sn2=0^S[n]=S[n] となり、正しい加算結果が出力される。分割を行なうビットにおいては、制御信号111の値が1になるので、Sn2=An^Bn、Sn1=C[n−1] となる。よって、Sn=Sn1^Sn2=C[n−1]^An^Bn=S[n] となり、同様に正しい加算結果が出力される。 【0038】なお、本発明の並列加算回路は、図4に示した具体例に限定されるものではなく、同様の機能を有する回路であれば他の任意の回路構成を採用し得る。また、本発明の考え方に従えば、2つに分割して並列加算するだけでなく、3つ以上に分割して並列加算することも可能である。 【0039】 【発明の効果】以上のように本発明によれば、入力加工回路、出力加工回路を用いることにより、加算器そのものの速度を劣化させることになく、並列加算が可能となる。演算速度としては、任意のビットで分割して並列加算する場合でも、入力加工回路、出力加工回路の一定段数しか段数増加がないため、従来回路と比較して高速化を実現することができる。
|
| 【出願人】 |
【識別番号】000005821 【氏名又は名称】松下電器産業株式会社 【住所又は居所】大阪府門真市大字門真1006番地
|
| 【出願日】 |
平成14年1月17日(2002.1.17) |
| 【代理人】 |
【識別番号】110000040 【氏名又は名称】特許業務法人池内・佐藤アンドパートナーズ
|
| 【公開番号】 |
特開2003−216415(P2003−216415A) |
| 【公開日】 |
平成15年7月31日(2003.7.31) |
| 【出願番号】 |
特願2002−9050(P2002−9050) |
|