(57)【要約】  【課題】  回路規模を増加することなく、高速な演算を実現することを目的とする。  【解決手段】  本発明の並列演算方法は、入力ワードを分割して演算する際に、入力加工手段１０１により所定の境界ビットの入力値を演算種類に応じて変換して演算し、出力補正手段１０３により境界ビットの入力値の変換に応じて演算結果を補正することにより、回路規模を増加することなく、高速な演算を実現することができる。【選択図】    図１
2005242722.tif 000002
【特許請求の範囲】
【請求項１】
演算に用いる複数の入力ワードをそれぞれ複数のサブワードに分割して並列演算する並列演算方法であって、
前記サブワードの最下位または最上位ビットになるように境界ビットを設定する工程と、
前記サブワードの内前記境界ビットの値を演算種類に応じてあらかじめ設定された設定値に加工する工程と、
前記加工した境界ビットを含む前記サブワードをパイプラインレジスタに入力する工程と、
前記パイプラインレジスタから出力した加工後の前記サブワードを用いて演算を行う工程と、
加工前の前記境界ビットと前記境界ビット直前のキャリーの値を用いて前記境界ビットでの演算を行う工程と、
前記境界ビットにおいては加工前の前記境界ビットおよび前記境界ビット直前のキャリーを用いた演算結果を出力し、前記境界ビット以外のビットにおいては前記加工後のサブワードを用いた演算結果を出力することにより、前記加工後のサブワードを用いた演算結果の補正を行い前記入力ワードの演算結果を出力する工程と
を有することを特徴とする並列演算方法。
【請求項２】
演算に用いる複数の入力ワードをそれぞれ複数のサブワードに分割して並列演算する並列演算方法であって、
前記サブワードの最下位または最上位ビットになるように境界ビットを設定する工程と、
前記サブワードをパイプラインレジスタに入力する工程と、
前記サブワードの内前記境界ビットの値を演算種類に応じてあらかじめ設定された設定値に加工する工程と、
前記加工後の前記サブワードを用いて演算を行う工程と、
加工前の前記境界ビットと前記境界ビット直前のキャリーの値を用いて前記境界ビットでの演算を行う工程と、
前記境界ビットにおいては加工前の前記境界ビットおよび前記境界ビット直前のキャリーを用いた演算結果を出力し、前記境界ビット以外のビットにおいては前記加工後のサブワードを用いた演算結果を出力することにより、前記加工後のサブワードを用いた演算結果の補正を行い前記入力ワードの演算結果を出力する工程と
を有することを特徴とする並列演算方法。
【請求項３】
前記キャリーとして前記サブワードを用いた演算中の中間値を用い、前記サブワードを用いた演算と並行して前記境界ビットでの演算を行うことを特徴とする請求項１または請求項２いずれかに記載の並列演算方法。
【請求項４】
前記設定値を０とし、前記演算を加算とすることを特徴とする請求項１または請求項２または請求項３いずれかに記載の並列演算方法。
【請求項５】
前記設定値を１とし、前記演算を減算とすることを特徴とする請求項１または請求項２または請求項３いずれかに記載の並列演算方法。
【請求項６】
前記演算は、桁上げ先見加算であることを特徴とする請求項１または請求項２または請求項３または請求項４または請求項５いずれかに記載の並列演算方法。
【請求項７】
演算に用いる複数の入力ワードをそれぞれ複数の境界ビットを最下位または最上位ビットとしてサブワードに分割して並列演算する並列演算装置であって、
前記サブワードの内前記境界ビットの値を演算種類に応じてあらかじめ設定された設定値に加工する入力加工手段と、
前記加工した境界ビットを含む前記サブワードを入力するパイプラインレジスタと、
前記パイプラインレジスタから出力した加工後の前記サブワードを用いて前記演算を行う演算器と、
加工前の前記境界ビットと前記境界ビット直前のキャリーの値を用いて前記境界ビットでの演算を行い、前記境界ビットにおいては加工前の前記境界ビットおよび前記境界ビット直前のキャリーを用いた演算結果を出力し、前記境界ビット以外のビットにおいては前記加工後のサブワードを用いた演算結果を出力することにより、前記加工後のサブワードを用いた演算結果の補正を行い前記入力ワードの演算結果を出力する出力補正手段と
を有することを特徴とする並列演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディジタル演算装置に関し、特に、入力データを分割して並列算術演算する並列演算方法に関する。
【背景技術】
【０００２】
通常、コンピュータは、所定の最大ビット数の数値を加算する加算器を含む算術演算論理装置を備えている。ディジタルシグナルプロセッサ等では、１６ビットおよび３２ビット長ワード用の加算器が見られる。また、それらの加算器は、それよりも小さなワードについても機能する。例えば、３２ビットの加算器を用いて、１６ビットの２つの加算を並列に行う場合がある。
【０００３】
以下、並列加算について、図６，図７，図８を参照しながら例を挙げて説明する。
図６は８ビットの加算器を用いて４ビットの２つの並列加算を行う例を示す図、図７は従来の加算器の構成例を示す図、図８は従来の演算結果を補正する加算器の構成を例示する図である。
【０００４】
図６において、通常の加算として、８ビットの数Ａ［７：０］＝［１１００１１０１］と、数Ｂ［７：０］＝［０１１１０１０１］の加算の計算例を表す。加算結果は［１０１００００１０］となる。和が８ビット（Ｓ［７：０］）と、キャリー（Ｃ［８］）が１ビットで都合９ビットの結果が得られる。今後、ｎビット目の和をＳ［ｎ］、ｎビット目から（ｎ＋１）ビット目に上がるキャリーをＣ［ｎ＋１］と表す。また、本明細書での加算器を用いて減算を行う際には、Ｂ［ｎ］入力は反転データが入り、２の補数系の減算を行うための初期キャリーＣ［０］の入力機構があるものとする。２の補数系の減算方法に関して、この前提は決して特殊なものではない。
【０００５】
ここで、Ａ，Ｂの上位、下位４ビットずつを並列に加算する場合を考える。すなわち、Ａ［７：４］＝［１１００］，Ｂ［７：４］＝［０１１１］の４ビットの加算と、Ａ［３：０］＝［１１０１］，Ｂ［３：０］＝［０１０１］の４ビットの加算を並列に行う。求める結果は図６右にあるように、上位４ビットについては和Ｓ［７：４］＝［００１１］とキャリーＣ［８］＝［１］、下位４ビットについては、和Ｓ［３：０］＝［００１０］とキャリーＣ［４］＝［１］となる。
【０００６】
前記の例でわかるように、並列に加算を行う場合は、上位で行う加算に、下位で行う加算のキャリーが伝播するのを制御する必要がある。
また、今後動画などのマルチメディア処理が必要になると、６４ビット以上の加算器が必要となり、任意のビット位置で分割する必要が出てくる。
【０００７】
従来、並列加算を実現する第１の従来技術の例として、加算器のキャリー伝播部に、セレクタ回路を挿入し、キャリーの伝播を制御する方法がある（例えば、特許文献１参照）。
【０００８】
従来の加算器では、図７にあるように、分割の可能性のあるビット間にセレクタ回路を設け、そのビットで分割するか否かを表す制御信号を用いて、キャリーを上位に伝播するか否か決定することにより、並列加算を実現する方法が用いられている。図７において、並列加算を行わない場合には、通常の加算を行うので、セレクタは下位の部分加算器からのキャリーを出力として選択し、並列加算を行う場合には、セレクタは０の値を出力する。これにより、並列加算を行う場合には、上位の加算にキャリーが伝播しないことになる。
【０００９】
第２の従来例として、演算器の入力データに加工を行い、得られた演算結果を補正する方法が知られている。図８は、第２の従来例の概念図である（例えば、特許文献２参照）。
【特許文献１】特開平７−２１０３６９号公報
【特許文献２】特開２００３−２１６４１５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記第１の従来例に見られるような従来の方法では、キャリー伝播部にセレクタ回路をいれる必要があるため、加算器の段数が増加し、演算速度の低下を招くという問題点があった。
【００１１】
例えば、１６ビットの加算器に対して、任意のビット位置で分割して並列加算を行う場合には、各ビット間にキャリー伝播を制御するセレクタ回路を入れる必要があるため、計１５箇所のキャリー伝播部にセレクタ回路が入り、演算時間がセレクタ回路１５個分だけ長くなる。
【００１２】
また、図８に示される第２の従来例の並列演算回路は、入力データの分割ビットに固定値を入力する加工を行うことで、演算時間がビットを分割する個数分のセレクタの遅延だけ長くなる問題を解決している。
【００１３】
一方、この方法だと分割ビットは加算に用いることが出来ず、例えば４ビットと４ビットで合計８ビットの並列加算を行う場合には、分割ビット１ビットを増やした９ビットの加算器を用いる必要があり、回路規模が増大するという問題点があった。そこで、第２の従来例では、入力加工手段に加えて、分割ビットの演算結果の補正を行う出力加工回路を用いることで、分割ビットも加算に用いることができるようにし、回路増大という問題を解決している。
【００１４】
しかしながら、第２の従来例においても、入力加工手段、出力加工回路が入るビットにおいては、少なくとも２段分の論理ゲートが入り、遅延時間が長くなるという問題点があった。
【００１５】
上記問題点を解決するために、本発明の並列演算装置および並列演算方法は、回路規模を増加することなく、高速な演算を実現することを目的とする。
【課題を解決するための手段】
【００１６】
上記目的を達成するために、本発明の請求項１記載の並列演算方法は、演算に用いる複数の入力ワードをそれぞれ複数のサブワードに分割して並列演算する並列演算方法であって、前記サブワードの最下位または最上位ビットになるように境界ビットを設定する工程と、前記サブワードの内前記境界ビットの値を演算種類に応じてあらかじめ設定された設定値に加工する工程と、前記加工した境界ビットを含む前記サブワードをパイプラインレジスタに入力する工程と、前記パイプラインレジスタから出力した加工後の前記サブワードを用いて演算を行う工程と、加工前の前記境界ビットと前記境界ビット直前のキャリーの値を用いて前記境界ビットでの演算を行う工程と、前記境界ビットにおいては加工前の前記境界ビットおよび前記境界ビット直前のキャリーを用いた演算結果を出力し、前記境界ビット以外のビットにおいては前記加工後のサブワードを用いた演算結果を出力することにより、前記加工後のサブワードを用いた演算結果の補正を行い前記入力ワードの演算結果を出力する工程とを有することを特徴とする。
【００１７】
請求項２記載の並列演算方法は、演算に用いる複数の入力ワードをそれぞれ複数のサブワードに分割して並列演算する並列演算方法であって、前記サブワードの最下位または最上位ビットになるように境界ビットを設定する工程と、前記サブワードをパイプラインレジスタに入力する工程と、前記サブワードの内前記境界ビットの値を演算種類に応じてあらかじめ設定された設定値に加工する工程と、前記加工後の前記サブワードを用いて演算を行う工程と、加工前の前記境界ビットと前記境界ビット直前のキャリーの値を用いて前記境界ビットでの演算を行う工程と、前記境界ビットにおいては加工前の前記境界ビットおよび前記境界ビット直前のキャリーを用いた演算結果を出力し、前記境界ビット以外のビットにおいては前記加工後のサブワードを用いた演算結果を出力することにより、前記加工後のサブワードを用いた演算結果の補正を行い前記入力ワードの演算結果を出力する工程とを有することを特徴とする。
【００１８】
請求項３記載の並列演算方法は、請求項１または請求項２いずれかに記載の並列演算方法において、前記キャリーとして前記サブワードを用いた演算中の中間値を用い、前記サブワードを用いた演算と並行して前記境界ビットでの演算を行うことを特徴とする。
【００１９】
請求項４記載の並列演算方法は、請求項１または請求項２または請求項３いずれかに記載の並列演算方法において、前記設定値を０とし、前記演算を加算とすることを特徴とする。
【００２０】
請求項５記載の並列演算方法は、請求項１または請求項２または請求項３いずれかに記載の並列演算方法において、前記設定値を１とし、前記演算を減算とすることを特徴とする。
【００２１】
請求項６記載の並列演算方法は、請求項１または請求項２または請求項３または請求項４または請求項５いずれかに記載の並列演算方法において、前記演算は、桁上げ先見加算であることを特徴とする。
【００２２】
請求項７記載の並列演算装置は、演算に用いる複数の入力ワードをそれぞれ複数の境界ビットを最下位または最上位ビットとしてサブワードに分割して並列演算する並列演算装置であって、前記サブワードの内前記境界ビットの値を演算種類に応じてあらかじめ設定された設定値に加工する入力加工手段と、前記加工した境界ビットを含む前記サブワードを入力するパイプラインレジスタと、前記パイプラインレジスタから出力した加工後の前記サブワードを用いて前記演算を行う演算器と、加工前の前記境界ビットと前記境界ビット直前のキャリーの値を用いて前記境界ビットでの演算を行い、前記境界ビットにおいては加工前の前記境界ビットおよび前記境界ビット直前のキャリーを用いた演算結果を出力し、前記境界ビット以外のビットにおいては前記加工後のサブワードを用いた演算結果を出力することにより、前記加工後のサブワードを用いた演算結果の補正を行い前記入力ワードの演算結果を出力する出力補正手段とを有することを特徴とする。
【００２３】
このように、本発明によると、回路規模を増加することなく、高速な演算を実現することができる。
【発明の効果】
【００２４】
本発明の並列演算方法は、入力ワードを分割して演算する際に、パイプラインレジスタに入力前のデータに対して、入力加工手段により所定の境界ビットの入力値を演算種類に応じて変換して演算を行い、出力補正手段により境界ビットの入力値の変換に応じて演算結果を補正することにより、回路規模を増加することなく、高速な演算を実現することができる。
【００２５】
また、演算器の途中から、出力補正に必要な信号を引き出して、その信号を用いて出力補正を行うことにより、出力補正を演算と並列に行うことができるので、より高速な演算を行うことができる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の実施の形態について、図面を参照しながら説明する。
（実施の形態１）
以下、図１，図２，図３，図４を用いて、本発明の実施の形態１における並列演算装置について、加算器を例として説明する。
【００２７】
図１は本発明の実施の形態１における並列加算回路構成を表すブロック図、図２は本発明の実施の形態１におけるセレクタの構成図、図３は本発明の実施の形態１における並列演算装置を例示する図である。
【００２８】
実施の形態１における並列加算回路は、図１に示されるように、入力加工手段１０１、演算器１０２、出力補正手段１０３、パイプラインレジスタ１０４、入力ワード１１１、制御信号１１２、演算結果信号１１３、演算結果ワード１１４により構成される。
【００２９】
図１において、２つの入力ワード１１１を演算する場合、入力ワードを分割したサブワードの最下位または最上位ビットになるように特定ビットを境界ビットとして設定し、入力加工手段１０１は、パイプラインレジスタ１０４に入力される２つの入力ワード１１１におけるそれぞれの特定ビットに対し、制御信号１１２に基づいた演算を行い、パイプラインレジスタ１０４の境界ビットの入力に、制御信号１１２に基づき、０または１の固定値を入力することで、入力ワードをサブワードに分割する。また、境界ビットのレジスタは２重化されており、１つのレジスタには、入力加工手段１０１の出力データが入力され、２重化されたもう１つのレジスタには、制御信号１１２に基づいた演算を行う前の境界ビットがデータ入力される。後に詳細に述べるように、境界ビットのレジスタを２重化して、入力加工前のデータを入れておくことにより、並列演算時に出力補正を行うことが可能になる。演算器１０２の入力にはパイプラインレジスタ１０４の出力が用いられる。出力補正手段１０３は、二重化されたパイプラインレジスタ１０４の境界ビットの出力と、演算結果信号１１３の特定ビットを入力として用い、制御信号１１２に基づいた演算を行い、特定ビットの演算結果の補正を行う。
【００３０】
並列加算回路の演算結果ワード１１４として、境界ビットは出力補正手段１０３の出力を用い、それ以外のビットは、演算結果信号１１３を用いることで、並列加算回路の並列演算を実現している。
【００３１】
このように、パイプラインレジスタ１０４と演算器１０２の間に、サブワード分割のための入力加工手段１０１が入らず、パイプラインレジスタ１０４の前に入力加工手段１０１を設けることにより、パイプラインレジスタ１０４と演算器１０２での演算サイクルにおける、入力加工手段１０１分の論理段数増加を無くし、演算時間の高速化を図ることができる。演算サイクルよりも前に入力データの加工を行うことにより、演算サイクルのゲート段数を減らしている。レジスタをはさむトータル段数としては同じであるが、演算サイクルがネックになっている場合、この方法は有効である。
【００３２】
次に、入力加工手段１０１の詳細について、図１、図２を用いて演算器１０２が８ビット加算器である場合を例として説明する。
以下の説明では、８ビット加算器の入力をＡ［７：０］，Ｂ［７：０］とし、加算結果が和Ｓ［７：０］、キャリーＣ［８］で出力されるものとする。なお、一般的に加算結果の和は
Ｓ［ｎ］＝Ａ［ｎ］＾Ｂ［ｎ］＾Ｃ［ｎ］              （式１）
と表される。ここで“＾”は排他的論理和を表す。また、各ビット毎のキャリーは
Ｃ［ｎ＋１］＝Ａ［ｎ］・Ｂ［ｎ］＋Ｂ［ｎ］・Ｃ［ｎ］＋Ｃ［ｎ］・Ａ［ｎ］（式２）
と表される。ここで“・”、“＋”はそれぞれ論理積、論理和を表す。
【００３３】
４ビットずつの並列加算を行う場合には、上述の境界ビットとしてビット３を用いるとすると、Ａ［３］、Ｂ［３］を入力加工手段に入力し、この時、入力加工手段では入力される値に関らず０を出力する。つまり、パイプラインレジスタに入力される値は、Ａ［３］＝Ｂ［３］＝０となる。境界ビットの和は、式１より、Ｓ［３］＝Ａ［３］＾Ｂ［３］＾Ｃ［３］、式２より、Ｃ［４］＝Ａ［３］・Ｂ［３］＋Ｂ［３］・Ｃ［３］＋Ｃ［３］・Ａ［３］と表せる。今、Ａ［３］＝Ｂ［３］＝０であるので、Ｓ［３］＝０＾０＾Ｃ［３］＝Ｃ［３］、Ｃ［４］＝０である。すなわち、ビット４にキャリーが伝播しないので、上位４ビットの加算については、上位４ビットの和がＳ［７：４］で得られ、キャリーがＣ［８］で得られる。下位３ビットの加算については、３ビットの和がＳ［２：０］で得られ、キャリーがＳ［３］（＝Ｃ［３］）で得られる。このように、Ａ，Ｂ両方の入力ワードにおける境界ビットの入力値を０とすることで、境界ビットでの和が０となるので、例え、さらに、直前のビットのキャリーが１であったとしても境界ビットにキャリーが発生せず、下位の加算から上位の加算へのキャリー伝播を防ぎ、境界ビットで下位の加算のキャリー結果を得ることができる。実施例である図２では、セレクタ２０１を用いることにより、入力加工手段１０１で入力データを定数０に変換することを実現している。今回の例では、制御信号１１２の値に応じて入力Ａ［ｎ］（またはＢ［ｎ］）または定数０を選択する回路を用いて、出力信号として０が入力されている信号を選択して、必ず０が出力するようにしている。
【００３４】
また、上位４ビットで減算を行う場合には、入力加工手段の出力として、１を出力すればよい。このようにすると、式２よりＣ［４］＝１であるので、上位４ビットの初期キャリーが１となり、減算を行うことができる。
【００３５】
このように、入力加工手段１０１は、図２に示されるような、演算命令に応じて、入力データと、０、１との選択を行うセレクタを用いることで実現ができる。
なお、今回の例では加算の場合、特定データとして０を、減算の場合、特定データとして１を選ぶ回路で説明したが、入力データが負論理の場合は、特定データを反転すればよい。
【００３６】
なお、図１における入力加工手段は、１ビット分であり、入力を２つのサブワードに分割し、２つの並列計算を行っている。境界ビットを２つ以上設けることにより、３つ以上の並列計算が可能となる。３つのサブワードに分割する際は、２つの境界ビットを設けることで実現することができる。そのためには、サブワードの最上位または最下位ビットを境界ビットとすればよい。
【００３７】
このような入力加工手段を用いることにより、サブワード毎に加算・減算どちらの演算も行うことが可能となる。
ところで、入力データを固定するだけの構成では、ここで説明したように、下位は３ビットの加算になる。すなわち、８ビットの加算器で、４＋３＝７ビットの並列加算しか行えないので、合計８ビットの２並列加算を行うためには、９ビット加算器が必要となり、回路が増大してしまうことになる。
【００３８】
次に、出力補正手段を用いることにより、８ビットの加算器で合計８ビットの並列演算が行えることを示す。すなわち、ビット長を最大に利用し、回路規模の縮小が図れることを示す。ここでは、境界ビットが１ビットのみ、下位側４ビット目の場合について説明を行う。
【００３９】
図６を参照しながら、具体的な出力補正演算方法について説明する。
図６の右側は、８ビットの加算器を用いて４ビット＋４ビットの並列加算を行う例である。上位４ビットで［１１００］と［０１１１］の加算を行い、下位４ビットで［１１０１］と［０１０１］の加算を行う。結果としては、［１１００］＋［０１１１］＝［１００１１］であるので、上位４ビットの和ＳＵ［３：０］＝［００１１］、キャリーＣＵ＝［１］となる。同様にして、［１１０１］＋［０１０１］＝［１００１０］であるので、上位４ビットの和ＳＬ［３：０］＝［００１０］、キャリーＣＬ＝［１］となる。次に、今回の発明により、これらの値が正しく計算されていることを示す。入力加工手段１０１は実施の形態１のように、制御信号１１２により、下位の最上位ビット、本例の場合はビット３の入力をＡ［３］＝Ｂ［３］＝０に変換する（図６右網掛け部分。）。すると、演算器１０２の入力データは［１１０００１０１］＋［０１１１０１０１］となるので、演算結果信号１１３は、和Ｓ［７：０］＝［００１１１０１０］、キャリーＣ［８］＝［１］となる。Ｓ［７：４］＝［００１１］＝ＳＵ［３：０］、Ｃ［８］＝ＣＵとなるので、上位４ビットの加算結果はＳ［７：４］、Ｃ［８］で得られている。これは、Ａ［３］＝Ｂ［３］＝０に変換することにより、式２のｎ＝３の場合を計算すると、Ｃ［４］＝０となるので、上位４ビットの加算に、キャリーが伝播しないようにされているためである。下位４ビットの加算結果に関しては、Ｓ［２：０］＝［０１０］＝ＳＬ［２：０］であるので、下位の３ビットは正確な値が得られているが、Ｓ［３］およびキャリーＣ［４］が得られていない。ここで、式１より本来はＳ［３］＝Ａ［３］＾Ｂ［３］＾Ｃ［３］、の値を出力しなければならないが、入力加工手段１０１によってＡ［３］＝Ｂ［３］＝０の値が入力されているので、Ｓ［３］＝Ａ［３］＾Ｂ［３］＾Ｃ［３］＝０＾０＾Ｃ［３］＝Ｃ［３］の値が出力されている。また、下位の加算結果のキャリーとして、式２よりＣ［４］＝Ａ［３］・Ｂ［３］＋Ｂ［３］・Ｃ［３］＋Ｃ［３］・Ａ［３］の値を出力する必要がある。そこで、出力補正手段１０３において、加工を行う前のＡ［３］，Ｂ［３］、および、Ｓ［３］から出力されているＣ［３］の値を用いて、Ｓ［３］＝Ａ［３］＾Ｂ［３］＾Ｃ［３］および、Ｃ［４］＝Ａ［３］・Ｂ［３］＋Ｂ［３］・Ｃ［３］＋Ｃ［３］・Ａ［３］の値を計算する。これは、図３において、信号３１１にＣ［３］を入力し、制御信号１１２に１を入力することで得られる。これまでをまとめると、境界部分のビット３においては、加工を行う前のデータと、加工を行ったあとの演算結果を用いて、値を再計算する必要があったが、その他のビットにおいては、加工後のデータに関しては、求める値が出力されていることになる。このため、境界ビットにおいては出力補正手段１０３の演算結果を出力し、境界ビット以外のビットにおいては加工後のサブワードを用いた演算結果を出力することにより、演算結果ワード１１４を再計算することができる。
【００４０】
具体的な回路構成について、図３を参照しながら説明する。
図３の出力補正手段１０３において、並列演算する場合は、Ｃ［ｎ］の値が演算結果信号３１１に出力され、補正前の演算結果は正しい値を示さないので、境界ビットについては、入力ワード１１１であるＡ［ｎ］、Ｂ［ｎ］の値を用いて、補正値として、式１，２に基づいて、Ｃ［ｎ＋１］，Ｓ［ｎ］の値を計算し、境界ビットの演算結果としている。また、境界ビットを設けず、並列演算しない場合には、図６左のように、８ビットの加算器を用いて８ビットの加算を行うこととなる。この場合、入力加工手段１０１は、入力データＡ［ｎ］、Ｂ［ｎ］を選択して出力する。このため、演算器１０２には通常の８ビットデータＡ［７：０］、Ｂ［７：０］が入るので、演算結果はＳ［７：０］となる、このため、図３のネット３１１には、Ｓ［３］が入力される。演算結果ワード１１４としては、Ｓ［３］を出力する必要があるので、図３のＳｎ２の入力を１１４にスルーさせる必要がある。これは、制御信号１１２に０を入力することで、Ｓ［ｎ］＝Ｓｎ２＾０＝Ｓｎ２となり、求める結果が得られることになる。
【００４１】
以上は境界ビットが４ビット目のみの場合である。
また、任意のビットでサブワードに区切る場合には、入力加工手段、出力補正手段を全ビットに入れておくことによって実現できる。
【００４２】
Ｃ［ｎ＋１］は式２の通りである。Ｓ［ｎ］について説明すると、境界ビット以外のビットでは（８ビット加算器で、４ビット＋４ビットの分割を行う場合では、ビット７からビット４と、ビット２からビット０）、制御信号１１１の値が０になるので、図３において、Ｓｎ１＝０＾０＝０、Ｓｎ２＝Ｓ［ｎ］となる。よって、
Ｓ［ｎ］＝Ｓｎ１＾Ｓｎ２＝０＾Ｓ［ｎ］＝Ｓ［ｎ］
となり、正しい加算結果が出力される。境界ビットにおいては、制御信号１１２の値が１になるので、Ｓｎ１＝Ａ［ｎ］＾Ｂ［ｎ］、Ｓｎ２＝Ｃ［ｎ］となる。よって、
Ｓ［ｎ］＝Ｓｎ１＾Ｓｎ２＝Ａ［ｎ］＾Ｂ［ｎ］＾Ｃ［ｎ］＝Ｓ［ｎ］
となり、同様に正しい加算結果が出力される。
【００４３】
このように、出力補正回路を用いることにより、加算器のビット長を最大限に利用した並列加算器を構成することが可能になり、回路規模を削減することができる。
以上のように、入力ワードを分割して演算する際に、パイプラインレジスタに入力前のデータに対して、入力加工手段により所定の境界ビットの入力値を演算種類に応じて変換して演算を行い、出力補正手段により境界ビットの入力値の変換に応じて演算結果を補正することにより、回路規模を増加することなく、高速な演算を実現することができる。
（実施の形態２）
以下、図４，図５を用いて、本発明の実施の形態２における並列演算装置について説明する。
【００４４】
図４は本発明における実施の形態２の並列加算回路構成を表すブロック図、図５は本発明における実施の形態２の並列加算を説明する図である。図４に示されるように、入力加工手段１０１、演算器１０２、出力補正手段１０３、演算器内部信号４１１により構成される。
【００４５】
入力加工手段１０１については、実施の形態１と同様である。ただし、実施の形態１ではパイプラインレジスタの前段に入れていたが、ここではパイプラインレジスタの後段に入れてもよい。出力補正手段１０３の入力として、演算の中間値である演算器内部信号４１１を用いる。この演算器内部信号４１１は境界ビット目に上がってくるキャリー信号を用いる。すなわち実施の形態１の演算結果信号１１３は実施の形態１の説明で述べたように、境界ビットでの分割を行う場合キャリー信号になる、これと同論理の信号を、演算器の途中から引き抜くことで、全体のゲート段数を減らしている。図１、図３の演算器構成、出力補正手段を用いると、演算器出力にさらに出力補正手段の論理ゲートが入り、演算速度が劣化する。そこで、図４の構成にすることで、実施の形態１の演算結果信号１１３と同論理の信号を演算器の途中から引き抜き、演算の一部と、出力補正を並列に行うことができるようになり、高速化を図ることができる。
【００４６】
すべての加算方式において、図４のような実施の形態１の演算結果信号１１３と同論理の信号が存在するわけではない。しかし、近年高速加算方法として一般的に使用されている桁上げ先見方式などでは、該当信号が存在する。次に桁上げ先見方式の場合について例を挙げて説明する。
【００４７】
図５を用いて、８ビットの桁上げ先見方式の場合の例を示す。桁上げ先見回路の回路図は、一般的に図５のように、桁上げ生成項および伝播項生成部８０１、桁上げ生成部８０２、和生成部８０３からなり、桁上げ生成部の出力が、８本出力され、和生成部８０３の入力となっている。桁上げ生成部８０２の８本の出力は、ビット１から８のキャリーＣ［８：１］に相当する。和生成部８０４は、このキャリー信号と入力信号との演算を行い、和Ｓ［７：０］を出力する。図４における演算器内部信号４１１として、この桁上げ生成部８０２からの出力であるキャリー信号を用いる。
【００４８】
図４において、演算器中間内部信号４１１に境界ビットの桁上げ生成部８０２の出力を用いると、正しい結果が得られるのは、実施の形態１で示した通りである。なぜならば、実施の形態１の演算結果信号１１３と同論理の信号を、演算器の出力からではなく、演算器の途中から引き出しているからである。これにより、桁上げ先見回路の例では、実施の形態１よりも、和生成部８０３の分だけゲート段数を削減、すなわち高速化を図ることができる。
【００４９】
よって、第２の従来例と比較しても、演算器の高速化を図ることができる。
なお、同様の論理、機能を表す演算器内部信号、出力補正回路であれば、本発明の効果を得るには、図８に示した加算回路に限定されるものではないことは自明である。
【００５０】
以上のように、演算器の途中に現れるキャリー信号と同論理の信号を引き出すことにより、出力補正を、演算器の演算と並列に行うことができるので、実施の形態１において演算器の演算後出力補正を行よりさらに、回路規模を増加することなく、高速な演算を実現することができる。
【産業上の利用可能性】
【００５１】
本発明にかかる並列演算装置および並列演算方法は、回路規模を増加することなく、高速な演算を実現することができ、入力データを分割して並列算術演算等に有用である。
【図面の簡単な説明】
【００５２】
【図１】本発明の実施の形態１における並列加算回路構成を表すブロック図
【図２】本発明の実施の形態１におけるセレクタの構成図
【図３】本発明の実施の形態１における並列演算装置を例示する図
【図４】本発明の実施の形態２における並列加算回路構成を表すブロック図
【図５】本発明における実施の形態２の並列加算を説明する図
【図６】８ビットの加算器を用いて４ビットの２つの並列加算を行う例を示す図
【図７】従来の加算器の構成例を示す図
【図８】従来の演算結果を補正する加算器の構成を例示する図
【符号の説明】
【００５３】
１０１    入力加工手段
１０２    演算器
１０３    出力補正手段
１０４    パイプラインレジスタ
１１１    入力ワード
１１２    制御信号
１１３    演算結果信号
１１４    演算結果ワード
２０１    セレクタ
３１１    演算結果信号
４１１    演算器内部信号
８０１    桁上げ生成項および伝播生成項
８０２    桁上げ生成部
８０３    和生成部
【図１】
2005242722.tif 000003
【図２】
2005242722.tif 000004
【図３】
2005242722.tif 000005
【図４】
2005242722.tif 000006
【図５】
2005242722.tif 000007
【図６】
2005242722.tif 000008
【図７】
2005242722.tif 000009
【図８】
2005242722.tif 000010