(57)【要約】【課題】通常の積和演算装置を改良することで、積の累加算処理を簡単に実現でき、回路構成を複雑化することなく、消費電力の増加を最小限に抑制できる演算装置を提供する。【解決手段】乗加算器１００を用いて、入力データＡ、ＢとＣに対して、積和演算を行い、Ａ×Ｂ＋Ｃの演算結果Ｄ１を出力し、二回目以降の処理において、選択器１５０によって乗加算器１００の演算結果Ｄ１を選択し、レジスタ１６６に保持する。乗加算器１００において、新しく入力されるデータＡとＢの積を算出し、この積とレジスタ１６６の保持データとを加算し、この乗加算処理を所定の演算回数だけ繰り返して行うことにより、簡単なハードウェア構成により、積和演算結果に対して、累加算処理を実現できる。【選択図】　　図２
2004046518.tif 000002
【特許請求の範囲】
【請求項１】
第１と第２の入力データを乗算し、当該乗算結果を加算データと加算する乗加算手段と、
第３の入力データ、または上記乗加算手段の演算結果の何れかを選択し、選択されたデータを上記加算データとして上記乗加算手段に出力する選択手段と
を有する演算装置。
【請求項２】
上記第３の入力データの小数点位置を、上記乗加算手段の演算結果に応じて調整する小数点位置調整手段
を有する請求項１記載の演算装置。
【請求項３】
上記小数点位置調整手段は、上記第３の入力データを所定のビット数だけ左にシフトするシフト手段からなる
請求項２記載の演算装置。
【請求項４】
上記第１、第２の入力データを保持する第１と第２のデータ保持手段と、
上記選択手段の出力データを保持する第３のデータ保持手段と
を有する請求項１記載の演算装置。
【請求項５】
上記乗加算手段の演算結果に対して、丸め処理を行う丸め処理手段
を有する請求項１記載の演算装置。
【請求項６】
上記乗加算手段の演算結果の小数点位置を調整する小数点位置調整手段
を有する請求項１記載の演算装置。
【請求項７】
上記小数点位置調整手段は、上記乗加算手段の演算結果を所定のビット数だけ右にシフトするシフト手段からなる
請求項６記載の演算装置。
【請求項８】
第１と第２の入力データを乗算し、当該乗算結果を加算データと加算する乗加算手段と、
第３の入力データ、または上記乗加算手段の演算結果の何れかを選択する選択手段と、
上記選択手段によって選択されたデータを保持するデータ保持手段と
を有し、
一回目の乗加算処理において、上記選択手段によって上記第３の入力データが選択され、上記乗加算手段によって、上記第１と第２の入力データの積と、上記第３の入力データとの加算処理が行われ、二回目以降の乗加算処理において、上記選択手段によって、前回の乗加算処理の結果が選択されて上記データ保持手段によって保持され、上記乗加算手段によって、上記第１と第２の入力データの積と、上記保持手段によって保持された前回の乗加算処理結果との加算処理が行われる
演算装置。
【請求項９】
上記乗加算手段は、所定の処理回数に達するまで上記乗加算処理を繰り返す
請求項８記載の演算装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、演算装置、特に加算入力部にシフタを有し、入力部にレジスタが備えられ、積和演算の結果を加算入力にフィードバックすることで積和演算結果の累加算が行える積和演算装置に関するものである。
【０００２】
【従来の技術】
積和演算装置は、三つの入力データのうち、二つのデータを乗算し、その積ともう一つのデータとの和を演算するものである。このため、一般的な積和演算装置は、乗算器と加算器によって構成される。
【０００３】
図６は、一般的な積和演算装置の一構成例を示している。図示のように、この積和演算装置は、乗算器１０と加算器２０によって構成されている。
乗算器１０に、データＡとデータＢが入力される。乗算器１０は、データＡとデータＢの積を求め、加算器２０に出力する。
加算器２０には、乗算器の乗算結果のほか、データＣが入力される。加算器２０は、乗算器の乗算結果とデータＣとの和を求める。
このように構成された積和演算装置により、三つの入力データＡ，ＢとＣに対して、Ａ×Ｂ＋Ｃのような積和演算を実現できる。
【０００４】
図７は、従来の積和演算装置の他の構成例を示している。図示のように、この積和演算装置は、図６に示す積和演算装置に較べて、右シフタ３０、丸めビット発生器４０及び選択器５０が追加されたものである。
【０００５】
この例の積和演算装置において、右シフタ３０は、加算器２０の加算結果に対して、外部から入力されるシフトビット数データＳＦＢに従って右へシフトする。
丸めビット発生器４０は、シフトビット数データＳＦＢ及び丸めモードデータＲＤＭに応じて、丸め処理のために所定の丸めビットを生成し、選択器５０に入力する。
選択器５０は、入力データＣまたは丸めビット発生器４０によって生成された丸めビットの何れかを選択し、選択したデータを加算器２０に出力する。
【０００６】
本例の積和演算装置は、例えば、固定小数点のオペランドに対して積和演算を行うために用いられる。オペランドとして外部から提供されたデータＡ、ＢとＣは、すべて同じ小数点位置を持つものであっても、乗算器１０によって算出したデータＡとデータＢの積Ａ×Ｂの小数点位置がデータＣの小数点位置と異なることがある。即ち、データＡとＢの積を、そのままデータＣと加算することはできない。このため、従来では、加算データＣを積和演算装置に入力する前に、図示しないシフタなどを用いて、データを所定のビット数だけシフトすることで、小数点の位置をデータＡとＢの積の小数点位置と一致するように、調整を行う。
【０００７】
図７に示す積和演算装置において、右シフタ３０は、加算器２０の演算結果、即ち、入力されるデータＡ，ＢとＣの積和演算の結果を所定のビット数だけ右へシフトする。これは、積和演算によって変化した小数点の位置をもとに戻すためである。
なお、図示の丸めビット発生器４０は、丸めモードデータＲＤＭ及びシフトビット数データＳＦＢに従って、丸めビットを生成し、これを選択器５０によって選択されると、加算器２０において、乗算器１０の乗算結果に加算される。これによって、指定された丸めモードで乗算結果に対して、丸め処理が行われる。
【０００８】
【発明が解決しようとする課題】
ところで、上述した従来の積和演算装置を用いて、積和演算の結果を累加算するため、積和演算の結果をレジスタなど一旦保持して、次の乗算演算が終わったあと、その乗算結果とレジスタに保持されている前回までの累加算の結果をさらに別の加算器を用いて演算し、演算結果レジスタに保持して次回の乗算演算の結果に累積加算するという処理が必要であった。
上述した累加算の処理は、積和演算装置を組み込んだＬＳＩの中の動作として、積和演算のために最終的に通過するゲートの段数の増加を意味する。ＬＳＩとして、消費電力を増加させる結果を招いてしまうという不利益がある。
【０００９】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、通常の積和演算装置を改良することで、積の累加算処理を簡単に実現でき、回路構成を複雑化することなく、消費電力の増加を最小限に抑制できる演算装置を提供することにある。
【００１０】
【課題を解決するための手段】
上記目的を達成するため、本発明の演算装置は、第１と第２の入力データを乗算し、当該乗算結果を加算データと加算する乗加算手段と、第３の入力データ、または上記乗加算手段の演算結果の何れかを選択し、選択されたデータを上記加算データとして上記乗加算手段に出力する選択手段とを有する。
【００１１】
また、本発明では、好適には、上記第３の入力データの小数点位置を、上記乗加算手段の演算結果に応じて調整する小数点位置調整手段を有し、好ましくは、上記小数点位置調整手段は、上記第３の入力データを所定のビット数だけ左にシフトするシフト手段からなる。
【００１２】
また、本発明では、好適には、上記第１、第２の入力データを保持する第１と第２のデータ保持手段と、上記選択手段の出力データを保持する第３のデータ保持手段とを有する。
【００１３】
また、本発明では、好適には、上記乗加算手段の演算結果に対して、丸め処理を行う丸め処理手段を有する。
【００１４】
また、本発明では、好適には、上記乗加算手段の演算結果の小数点位置を調整する小数点位置調整手段を有し、好ましくは、上記小数点位置調整手段は、上記乗加算手段の演算結果を所定のビット数だけ右にシフトするシフト手段からなる。
【００１５】
また、本発明の演算装置は、第１と第２の入力データを乗算し、当該乗算結果を加算データと加算する乗加算手段と、第３の入力データ、または上記乗加算手段の演算結果の何れかを選択する選択手段と、上記選択手段によって選択されたデータを保持するデータ保持手段とを有し、一回目の乗加算処理において、上記選択手段によって上記第３の入力データが選択され、上記乗加算手段によって、上記第１と第２の入力データの積と、上記第３の入力データとの加算処理が行われ、二回目以降の乗加算処理において、上記選択手段によって、前回の乗加算処理の結果が選択されて上記データ保持手段によって保持され、上記乗加算手段によって、上記第１と第２の入力データの積と、上記保持手段によって保持された前回の乗加算処理結果との加算処理が行われる。
【００１６】
さらに、本発明では、好適には、上記乗加算手段は、所定の処理回数に達するまで上記乗加算処理を繰り返す。
【００１７】
本発明によれば、乗加算手段によって入力される第１と第２のデータの積が算出され、さらに、この積と加算データとの加算処理が行われる。選択手段によって、一回目の乗加算処理において第３の入力データが選択され、２回目以降の乗加算処理において、乗加算手段の演算結果が選択される。これにより、一回目の処理で第１、第２及び第３の入力データの積和演算が行われ、その結果がデータ保持手段によって保持され、さらに、二回目以降の処理において、新しく入力される第１と第２の入力データの積が算出され、この積と前回の乗加算処理の結果が加算される。この乗加算処理が所定の回数を繰り返すことによって、乗加算のの演算結果の累加算処理が実現される。
【００１８】
【発明の実施の形態】
第１実施形態
図１は本発明に係る演算装置の第１の実施形態を示す構成図である。
図示のように、本実施形態の演算装置は、乗加算器１００、加算器１１０、右シフタ１２０、丸めビット発生器１３０、及び左シフタ１４０によって構成されている。
【００１９】
乗加算器１００は、入力されるデータＡとＢの積を求め、この積と左シフタ１４０から出力されるデータＣ１との加算を行う。即ち、乗加算器１００は、入力される三つのオペランドＡ，Ｂ，Ｃ１に対して、Ａ×Ｂ＋Ｃ１の乗加算演算を行う。乗加算器１００の演算結果Ｄ１が加算器１１０に出力される。
【００２０】
加算器１１０は、乗加算器１００の演算結果Ｄ１と丸めビット発生器１３０によって発生した丸めビットＲ１とを加算し、加算結果Ｄ２を出力する。
右シフタ１２０は、加算器１１０の加算結果Ｄ２を、シフトビット数データＳＦＢ２によって指定されたビット数だけ右にシフトし、その結果データＤ３を出力する。
【００２１】
丸めビット発生器１３０は、シフトビット数データＳＦＢ２及び丸めモードデータＲＤＭに応じて、丸め処理のための丸めビットＲ１を発生し、加算器１１０に出力する。なお、ここで、丸めモードとして、例えば、切り上げ、切り下げ、四捨五入などのモードを選択可能である。それぞれのモードに応じて、丸めビット発生器１３０は、所定の丸めビットＲ１を生成する。加算器１１０において、乗加算器１００からの乗加算結果Ｄ１と丸めビットＲ１とを加算した結果、所望の丸めモードで処理した結果Ｄ２が得られる。
【００２２】
左シフタ１４０は、入力データＣをシフトビット数データＳＦＢ１によって指定されたビット数だけ左シフトし、加算データＣ１を出力する。
ここで、例えば、入力データＡ，ＢとＣの小数点位置がすべて一致すると仮定する。乗加算器１００において、データＡとＢの乗算の結果、その積の小数点位置が変化し、加算データＣの小数点位置と一致しなくなる。このため、左シフタ１４０は、データＡとＢの加算結果の少数点位置に合わせて、加算データＣをシフトビット数データＳＦＢ１によって指定されたビット数だけ左にシフトすることにより、シフト後のデータＣ１の小数点位置がデータＡとＢの積の少数点位置と同じくなり、データＡ，Ｂの積とデータＣ１の加算処理を行うことができる。
【００２３】
なお、入力データＡ，ＢとＣの小数点位置がそれぞれ異なる場合でも、左シフタ１４０は、入力データＡとＢの小数点位置に基づき、シフトビット数データＳＦＢ１に応じて、データＣの小数点位置を適宜調整することができる。例えば、一例として、データＡ、ＢとＣの小数部のビット数をそれぞれ１０ビット、８ビット及び６ビットとすると、データＡとＢの積の小数点部のビット数が１８ビットとなる。このため、データＣの小数点位置をデータＡとＢの積の小数点位置に合わせるために、即ち、データＣの小数点部を１８ビットにするために、データＣのシフトビット数が１８−６＝１２ビットとなる。シフトビット数データＳＦＢ１によって、このデータ１２を左シフタ１４０に指示すれば、左シフタ１４０により、データＣを左に１２ビット分をシフトし、得られたデータＣ１の小数点部は１８ビットとなるので、データＣ１とデータＡとＢの積を加算することができる。
【００２４】
上述した構成を有する本実施形態の演算装置は、入力データＡ，ＢとＣに対して、積和演算を行う。即ち、演算装置の出力データＤ３は、Ａ×Ｂ＋Ｃの演算結果を示している。
【００２５】
以下、本実施形態の演算装置の全体の動作について説明する。
まず、乗加算器１００において、入力データＡとＢの積Ａ×Ｂが算出される。そして、算出した積に左シフタ１４０からのデータＣ１との加算が行われ、演算結果Ｄ１が出力される。
【００２６】
加算器１１０において、乗加算器１００の出力データＤ１と丸めビット発生器１３０によって生成した丸めビットＲ１との加算が行われ、加算データＤ２が出力される。丸めビット発生器１３０では、シフトビット数データＳＦＢ２及び丸めモードデータＲＤＭに応じて、丸めビットＲ１が生成されているので、加算器１１０での加算処理の結果、乗加算器１００の出力データＤ１に対して、所定の丸め演算処理結果Ｄ２が得られる。
【００２７】
次に、右シフタ１２０において、加算器１１０の出力データＤ２に対して、シフトビット数データＳＦＢ２によって指定されたビット数だけ右にシフトし、その結果、データＤ３が得られる。
【００２８】
右シフタ１２０は、乗加算器１００におけるデータＡとＢの乗算演算による小数点位置の変化を補うために設けられている。即ち、固定小数点の乗算データＡとＢが乗算した結果、積Ａ×Ｂの小数点位置が拡張される。また、加算データＣが加算処理の前に、左シフタ１４０により、データＡとＢの積の小数点位置に合わせて、左シフトにより小数点の位置が調整される。乗加算処理によって得られたデータＤ２の小数点位置をもとに戻すために、データＤ２に対して、所定のビット数だけ右へシフトすれば、小数点の位置を調整できる。
【００２９】
以下、具体的なデータ例を用いて、本実施形態の演算装置における乗加算処理について説明する。
図２は、入力データＡ、ＢとＣの数値例を示している。
図２に示すように、ここで、乗加算器１００のオペランドとして、入力データＡ，ＢとＣは、それぞれ２００．４３７５，２２０．８７５０及び１２８．００００である。図２において、データＡ、ＢとＣの２進数がそれぞれ示されている。
【００３０】
図示のように、データＡ、ＢとＣの整数部は、それぞれ８ビットであり、小数部は、それぞれ４ビットである。このため、乗加算器１００における乗算の結果、データＡとＢの積Ａ×Ｂの小数部は、８ビットに拡張される。
加算データＣの小数部が４ビットであるため、データＡとＢの積の小数部のビット数に合わせるため、左シフタ１４０によって、データＣが左に４ビットだけシフトされる。これによって得られたデータＣ１の小数部は、８ビットを持ち、データＡとＢの積の小数部と同じビット数を有する。
【００３１】
乗加算器１００において、データＡとＢの積に、さらに加算データＣ１を加算した結果、データＤ１が得られる。そして、加算器１１０において、丸めビットＲ１との加算の結果、データＤ２が得られる。なお、図２において、丸めビットＲ１及びそれを用いた丸め処理については省略されている。
【００３２】
図２に示すように、上述した演算によって得られたデータＤ２は、整数部が１６ビット、小数部が８ビット、合計２４ビットの２進データとして出力される。なお、乗加算演算の結果、入力データＡ、ＢとＣと同じように、小数部４ビットの結果が必要な場合、右シフタ１２０によって、データＤ２に対して、４ビットだけ右にシフトすることによって、小数部４ビットの演算結果Ｄ３が得られる。この場合、データＤ２の小数部８ビットのうち、下位の４ビットが切り捨てられる。図２に示すように、この切り捨て処理によって、演算誤差が生じる。
【００３３】
以上説明したように、本実施形態の演算装置によれば、乗加算器１００を用いて、入力データＡ、ＢとＣに対して、積和演算を行い、Ａ×Ｂ＋Ｃの演算結果Ｄ１を出力する。また、加算データＣの小数点位置をデータＡとＢの積Ａ×Ｂの小数定位置に合わせるため、左シフタ１４０によって、データＣを所定のビット数だけ左にシフトし、シフト後のデータＣ１が乗加算器１００に入力される。乗加算器１００の演算結果が加算器１１０において、丸めビットＲ１と加算し、さらに、右シフタ１３０によって所定のビット数だけ右にシフトすることで、小数部が所望のビット数を有する乗加算結果Ｄ３が得られる。
このように、積和演算と丸め処理及び最終の右シフトの処理までが一つのパスで実現でき、処理の高速化を実現できる。
【００３４】
第２実施形態
図３は本発明に係る演算装置の第２の実施形態を示す構成図である。
図３に示すように、本実施形態の演算装置は、乗加算器１００、加算器１１０、右シフタ１２０、丸めビット発生器１３０、左シフタ１４０、選択器１５０、及びレジスタ１６２、１６４、１６６によって構成されている。
【００３５】
図示のように、本実施形態の演算装置において、乗加算器１００の入力側にレジスタ１６２、１６４、１６６が設けられ、さらに、加算データＣ１または乗加算器１００の演算結果Ｄ１を選択する選択器１５０が設けられている。これによって、本実施形態の演算装置により、積和演算のほか、当該積和演算の結果に対して累加算を行うことも可能となる。
【００３６】
図３において、図１に示す本発明の第１の実施形態の演算装置と同じ構成部分について同じ符号で表記する。以下、本実施形態の演算装置の各構成部分について説明する。
【００３７】
レジスタ１６２、１６４及び１６６は、それぞれ入力データＡ、Ｂ及び選択器１５０の出力データＣ２を保持して、乗加算器１００に供給する。
選択器１５０は、乗加算器１００の演算結果Ｄ１または左シフタ１４０によってシフトしたデータＣ１の何れかを選択し、選択したデータＣ２をレジスタ１６６に出力する。
【００３８】
乗加算器１００は、レジスタ１６２と１６４から入力されるデータＡとＢの積を求め、さらにこの積にレジスタ１６６から出力されるデータＣ２を加算する。即ち、乗加算器１００は、入力される三つのオペランドＡ，Ｂ，Ｃ２に対して、Ａ×Ｂ＋Ｃ２の積和演算を行う。乗加算器１００の演算結果Ｄ１が加算器１１０に出力される。
【００３９】
加算器１１０は、乗加算器１００の演算結果Ｄ１と丸めビット発生器１３０によって発生した丸めビットＲ１とを加算し、加算結果Ｄ２を出力する。
右シフタ１２０は、加算器１１０の加算結果Ｄ２を、シフトビット数データＳＦＢ２によって指定されたビット数だけ右にシフトし、その結果データＤ３を出力する。
【００４０】
丸めビット発生器１３０は、シフトビット数データＳＦＢ２及び丸めモードデータＲＤＭに応じて、丸め処理のための丸めビットＲ１を発生し、加算器１１０に出力する。なお、ここで、丸めモードとして、例えば、切り上げ、切り下げ、四捨五入などのモードを選択可能である。それぞれのモードに応じて、丸めビット発生器１３０は、所定の丸めビットＲ１を生成する。加算器１１０において、乗加算器１００からの乗加算結果Ｄ１と丸めビットＲ１とを加算した結果、所望の丸めモードで処理した結果Ｄ２が得られる。
【００４１】
左シフタ１４０は、入力データＣをシフトビット数データＳＦＢ１によって指定されたビット数だけ左シフトし、加算データＣ１を出力する。
左シフタ１４０によって、加算データＣをシフトビット数データＳＦＢ１によって指定されたビット数だけ左にシフトする。これによって、シフト後のデータＣ１の小数点位置がデータＡとＢの積の小数点位置と同じくなり、データＡ，Ｂの積とデータＣ１の加算処理を行うことができる。
【００４２】
選択器１５０は、選択データＳＥＬに従って、左シフタ１４０によってシフトしたデータＣ１、または乗加算器１００の演算結果Ｄ１の何れかを選択し、レジスタ１６６に出力する。
【００４３】
上述した本実施形態の演算装置のおいて、選択器１５０により、左シフタ１４０によってシフトした加算データＣ１を選択した場合、乗加算器１００により、入力データＡとＢの積に、加算データＣ１が加算される。即ち、この場合、入力される三つのオペランドＡ、ＢとＣに対して、積和演算が行われる。即ち、Ｄ１＝Ａ×Ｂ＋Ｃ１である。
そして、積和演算の結果Ｄ１が選択器１５０によって選択され、レジスタ１６６によって保持され、レジスタ１６２及び１６４によって保持された次の乗算データとともに、乗加算器１００に入力される。
【００４４】
ここで、本実施形態の演算装置に入力されるオペランドが、入力順に従って、Ａ０　，Ｂ０　，Ｃ０　、Ａ１　，Ｂ１　、Ａ２　，Ｂ２　，…とすると、本実施形態により、次式に示す演算が行われ、最終的に演算結果ＤＳＵＭ　が得られる。
【００４５】
【数１】
ＤＳＵＭ　＝Ａ０　×Ｂ０　＋Ｃ０　＋Ａ１　×Ｂ１　＋Ａ２　×Ｂ２　＋…
…（１）
【００４６】
即ち、本実施形態の演算装置によって、最初の入力データの積和演算の結果に、次々に入力されるオペランドの乗算結果が累加算される。
このように、本実施形態の演算装置に、選択器１５０を設けて、最初の演算処理において加算データＣを選択し、積和演算を実施し、そしてこの積和演算の結果を選択し、レジスタ１６６によって保持し、次に入力されるデータＡとＢの積に前回の積和演算の結果を累加算する。これによって、式（１）に示す累加算処理を簡単な演算回路によって実現できる。
【００４７】
図４は、本実施形態の演算装置における累加算処理を示すフローチャートである。以下、図３及び図４を参照しつつ、本実施形態の演算装置の動作について説明する。
【００４８】
ステップＳ１：まず、選択器１５０によって、入力される加算データＣが選択され、レジスタ１６６により保持される。そして、レジスタ１６６の保持データが乗加算器１００に出力される。
ステップＳ２：乗加算器１００において、レジスタから入力される乗算データＡとＢの積が算出され、この積と加算データＣとの加算処理が行われる。これによって、入力データＡ、ＢとＣの積和演算が実施される。
【００４９】
ステップＳ３：乗加算器１００から出力される積和演算の結果Ｄ１が選択器１５０によって選択され、選択されたデータがレジスタ１６６によって保持される。
【００５０】
ステップＳ４：乗加算器１００において、次に入力される乗算データＡとＢの積が算出され、この積とレジスタ１６６から入力される前回の積和演算の結果との加算が行われる。
【００５１】
ステップＳ５：所望の累加算の演算回数に達したか否かについて判断し、当該判断の結果、所定の演算回数に達したとき演算処理を終了し、ステップＳ６に示すように、累加算の結果を丸め処理し、さらに小数部を所望のビット数になるように、右シフト処理が行われ、累加算の演算結果が出力される。
一方、累加算処理が所望の回数に達していない場合、ステップＳ３の処理に戻り、乗加算器１００の演算結果を次回の入力データの乗算結果に累加算される。
【００５２】
以上説明したように、本実施形態によれば、最初の入力データに対して積和演算が行われ、その演算結果に対して、所望の演算回数だけ新しく入力されるデータの積に対して累加算処理が行われるので、式（１）に示す演算処理を実現できる。
このように、本実施形態の演算装置において、選択器１５０及びレジスタ１６２、１６４、１６６を設けることによって、乗加算器１００における積和演算の結果を保持し、次の入力データの乗算結果に、前回の積和演算の結果を累加算する処理をハードウェアによって簡単に実現でき、回路規模の増加を必要最小限に抑えながら、所望の累加算処理を実現できる。
【００５３】
第３実施形態
図５は本発明に係る演算装置の第３の実施形態を示す構成図である。
本実施形態は、累加算処理を行う本発明の演算装置の具体的な回路例を示している。また、図５において、入力データＡ、ＢとＣ、さらに、その他の演算結果のビット数を示している。
【００５４】
図５に示すように、本実施形態の演算装置は、乗加算器１００、加算器１１０、右シフタ１２０、丸めビット発生器１３０、左シフタ１４０、選択器１５０、レジスタ１６２、１６４、１６６、ビット拡張器１７０及び飽和処理器１８０によって構成されている。
なお、図５において、図３に示す第２の実施形態の演算装置と同じ構成部分には、同じ符号を付して表記されている。
【００５５】
以下、本実施形態の演算装置の各構成部分について説明する。
レジスタ１６２、１６４及び１６６は、それぞれ入力データＡ、Ｂ及び選択器１５０の出力データＣ２を保持して、乗加算器１００に供給する。
図５に示すように、データＡ、ＢとＣは、それぞれ１６ビットのデータである。
選択器１５０は、乗加算器１００の演算結果Ｄ１または左シフタ１４０によってシフトしたデータＣ１の何れかを選択し、選択したデータＣ２をレジスタ１６６に出力する。
【００５６】
乗加算器１００は、レジスタ１６２と１６４から入力されるデータＡとＢの積を求め、さらにこの積にレジスタ１６６から出力されるデータＣ２を加算する。即ち、乗加算器１００は、入力される三つのオペランドＡ，Ｂ，Ｃ２に対して、Ａ×Ｂ＋Ｃ２の積和演算を行う。乗加算器１００の演算結果Ｄ１が加算器１１０に出力される。
入力データＡ、ＢとＣは、それぞれ１６ビットの幅を持つので、通常の乗加算処理の結果、乗加算器１００の出力データＤ１は、３２ビットの幅を持つ。しかし、本実施形態の演算装置において、累加算機能を有し、入力データに対して累加算処理を行った結果、ビット幅がさらに増える。演算結果のオーバーフローを防止するために、乗加算器１００は、さらに８ビット分の情報を余分に持つことで、合計４０ビットのデータが乗加算の結果として出力される。
【００５７】
加算器１１０は、乗加算器１００の演算結果Ｄ１と丸めビット発生器１３０によって発生した丸めビットＲ１とを加算し、加算結果Ｄ２を出力する。
右シフタ１２０は、加算器１１０の加算結果Ｄ２を、シフトビット数データＳＦＢ２によって指定されたビット数だけ右にシフトし、その結果データＤ３を出力する。
【００５８】
加算器１１０において、丸め処理において桁溢れが生じるおそれがあるので、加算器１１０の出力にさらにキャリーを加えて、４１ビットの情報を持つことになる。そして、加算器１１０の加算結果Ｄ２に対して、右シフタ１２０によるシフトの結果、１６ビットのデータＤ３が得られ、これをを演算結果として飽和処理器１８０に出力される。
【００５９】
丸めビット発生器１３０は、シフトビット数データＳＦＢ２及び丸めモードデータＲＤＭに応じて、丸め処理のための丸めビットＲ１を発生し、加算器１１０に出力する。なお、ここで、丸めモードとして、例えば、切り上げ、切り下げ、四捨五入などのモードを選択可能である。それぞれのモードに応じて、丸めビット発生器１３０は、所定の丸めビットＲ１を生成する。加算器１１０において、乗加算器１００からの乗加算結果Ｄ１と丸めビットＲ１とを加算した結果、所望の丸めモードで処理した結果Ｄ２が得られる。
【００６０】
左シフタ１４０は、入力データＣをシフトビット数データＳＦＢ１によって指定されたビット数だけ左シフトし、加算データＣ１を出力する。
左シフタ１４０によって、加算データＣをシフトビット数データＳＦＢ１によって指定されたビット数だけ左にシフトする。これによって、シフト後のデータＣ１の小数点位置がデータＡとＢの積の小数点位置と同じくなり、データＡ，Ｂの積とデータＣ１の加算処理を行うことができる。
【００６１】
選択器１５０は、選択データＳＥＬに従って、左シフタ１４０によってシフトしたデータＣ１、または乗加算器１００の演算結果Ｄ１の何れかを選択し、レジスタ１６６に出力する。
【００６２】
ビット拡張器１７０は、入力される加算データＣを４０ビット幅のデータに拡張する。上述したように、加算データＣは１６ビットのデータ幅を持つ。一方、乗加算器１００において、処理結果のオーバーフローを防止するために、４０ビットのデータＤ１を演算結果として出力される。このため、１６ビットしか情報を持たない加算データＣを４０ビットに拡張する必要がある。ビット拡張器１７０は、データＣのビット幅を１６から４０に拡張する。
【００６３】
飽和処理器１８０は、右シフタ１２０によってシフトしたデータＤ３に対して、飽和処理を行う。右シフタ１２０によって、丸め処理したデータＤ２を所定のビット数だけ右にシフトし、１６ビットのデータＤ３が得られる。しかし、このシフト処理によって得られたデータＤ３は１６ビットを超えてしまうことがあるので、飽和処理器１８０によって、データＤ３に対して飽和処理を行い、例えば、シフト処理の結果、オーバーフローが発生した場合、最大値を出力するように１６ビットの幅を持つデータＤ４を出力する。
【００６４】
次に、本実施形態の演算装置の動作について説明する。
まず、選択器１５０によって、ビット拡張され、さらに小数点の位置調整が行われた加算データＣ２が選択され、レジスタ１６６によって選択されたデータが保持される。また、レジスタ１６２と１６４によって、入力データＡとＢがそれぞれ保持される。
【００６５】
乗加算器１００において、レジスタ１６２、１６４から入力されるデータＡとＢの積が算出され、この積とレジスタ１６６から入力される加算データＣ２とが加算される。これによって積和演算の結果Ｄ１が乗加算器１００から出力される。データＤ１が選択器１５０によって選択され、さらにレジスタ１６６によって保持される。
【００６６】
レジスタ１６２と１６４によって、次の乗算データＡとＢがそれぞれ保持される。そして、乗加算器１００において、新しく入力される乗算データＡとＢの積が算出され、この積とレジスタ１６６によって保持された前回の積和演算の結果が加算される。これによって、乗加算器１００から、累加算の結果としてデータＤ１が出力される。
【００６７】
上述した累加算処理が、予め指定された演算回数に達するまで繰り返して行われる。その結果、複数の入力データに対して、最初の積和演算の結果に次回の乗算データの積が順次累加算される。
【００６８】
乗加算器１００における累加算処理が所定の演算回数に達したら、その演算結果Ｄ１が加算器１１０に出力され、ここで丸めビット発生器１３０によって発生された丸めビットＲ１と加算され、丸め処理が行われる。丸め処理の結果、データＤ２が得られ、右シフタ１２０に入力される。右シフタ１２０において、丸め処理の結果に対して所定のビット数だけビットにシフトが行われ、さらに、シフトの結果に対して飽和処理器１８０によって飽和処理が行われる。この結果、所望のビット数の演算データＤ４が得られる。
【００６９】
上述したように、本実施形態によれば、最初の入力データに対して積和演算が行われ、その演算結果に対して、所望の演算回数だけ新しく入力されるデータの積に対して累加算処理が行われる。これによって、ハードウェアによって累加算処理を容易に実現でき、回路規模の増加を必要最小限に抑えながら、所望の累加算処理を高速に実現できる。
【００７０】
【発明の効果】
以上説明したように、本発明の演算装置によれば、通常の積和演算装置に選択器及びレジスタを追加し、前回の積和演算の結果を選択して保持し、次回の入力データの乗算結果に前回の積和演算の結果を累加算し、そして、この処理を所望の回数だけ繰り返して行うことによって、所望の累加算処理を実現できる。
本発明によれば、累加算処理をハードウェアによって簡単に実現することができ、回路構成を複雑化することなく、消費電力の増加を最小限に抑制できる演算装置を実現できる利点がある。
【図面の簡単な説明】
【図１】本発明に係る演算装置の第１の実施形態を示す構成図である。
【図２】第１の実施形態の演算装置における演算データの具体例を示す図である。
【図３】本発明に係る演算装置の第２の実施形態を示す構成図である。
【図４】第２の実施形態の演算装置の動作を示すフローチャートである。
【図５】本発明に係る演算装置の第３の実施形態を示す構成図である。
【図６】従来の演算装置の一例を示す構成図である。
【図７】従来の演算装置の他の例を示す構成図である。
【符号の説明】
１０…乗算器、２０…加算器、３０…右シフタ、４０…丸めビット発生器、
１００…乗加算器、１１０…加算器、１２０…右シフタ、１３０…丸めビット発生器、１４０…左シフタ、１５０…選択器、１６２，１６４，１６６…レジスタ、１７０…ビット拡張器、１８０…飽和処理器。
【図１】
2004046518.tif 000003
【図２】
2004046518.tif 000004
【図３】
2004046518.tif 000005
【図４】
2004046518.tif 000006
【図５】
2004046518.tif 000007
【図６】
2004046518.tif 000008
【図７】
2004046518.tif 000009