(57)【要約】効率的な回路構成で丸め処理のオーバヘッド低減でき、固定小数点演算器を用いた情報処理装置の数値演算精度を効率的に向上することのできるデータ処理装置である。  このデータ処理装置は、右ビットシフト演算機能を有するシフタ（１０）と、２つの入力データの加算に、最下位ビットに１ビットデータを加算するキャリーイン機能を有するＡＬＵ（５０）とを含んで構成されたプロセッサと、プロセッサを単一命令で制御する制御ユニット（２００）とで構成されるデータ処理装置であって、シフタ（１０）は、シフト演算結果のデータを出力すると同時に、右ビットシフトの場合に切り捨てられるビットについて丸め評価をしてシフト演算結果の最下位ビットに“１”加算が必要か否かを示す１ビットデータを出力する丸め評価回路（１１０）を有し、ＡＬＵ（５０）は、２入力データの内の一方をシフタ（１０）の出力データとし、キャリーイン機能で用いるデータをシフタの丸め評価回路（１１０）が出力する１ビットデータとする。
2005024625.tif 000002
【特許請求の範囲】
【請求項１】
右ビットシフト演算機能を有するシフタと、２つの入力データの加算に、最下位ビットに１ビットデータを加算するキャリーイン機能を有するＡＬＵとを含んで構成されたプロセッサと、
前記プロセッサを単一命令で制御する制御ユニットとで構成されるデータ処理装置であって、
上記シフタは、シフト演算結果のデータを出力すると同時に、右ビットシフトの場合に切り捨てられるビットについて丸め評価をしてシフト演算結果の最下位ビットに“１”加算が必要か否かを示す１ビットデータを出力する丸め評価手段を有し、
上記ＡＬＵは、２入力データの内の一方を上記シフタの出力データとし、上記キャリーイン機能で用いるデータを上記シフタの丸め評価手段が出力する１ビットデータとすることを特徴とするデータ処理装置。
【請求項２】
上記シフタにおける右シフト演算及び上記ＡＬＵにおけるキャリーイン機能の加算は、２の補数形式のデータに対応した演算であることを特徴とする請求項１記載のデータ処理装置。
【請求項３】
丸めモード選択手段を有し、上記丸め評価手段は、該丸めモード選択手段で選択可能な複数の丸めモードの個々に対応した丸め評価を行うことを特徴とする請求項１または２記載のデータ処理装置。
【請求項４】
上記プロセッサは複数からなり、上記丸めモード選択手段は、上記複数のプロセッサの個々に設けられたデータ記憶手段によって丸めモードを選択することを特徴とする請求項１乃至３の何れか１項に記載のデータ処理装置。
【請求項５】
上記丸め評価は、上記右ビットシフトで切り捨てられるビットの論理和であることを特徴とする請求項１乃至４の何れか１項に記載のデータ処理装置。
【請求項６】
上記丸め評価は、上記右ビットシフトで切り捨てられるビットの論理和と、シフト演算データの符号との論理積であることを特徴とする請求項２乃至４の何れか１項に記載のデータ処理装置。
【請求項７】
上記丸め評価は、上記右ビットシフトで切り捨てられるビットの内の最上位ビットを除くビットとシフト演算結果の最下位ビットとの論理和と、上記右ビットシフトで切り捨てられるビットの内の最上位ビットとの論理積であることを特徴とする請求項１乃至４の何れか１項に記載のデータ処理装置。
【請求項８】
１つの半導体基板に構成されたことを特徴とする請求項１乃至７の何れか１項に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】  本発明は、データ処理装置に関し、特にプロセッサエレメントにおける固定小数点演算器で、効率的なハードウェア構成により丸め演算を実現する技術に関する。
【背景技術】  動画圧縮を含めた画像処理は、比較的単純な計算アルゴリズムの反復であり、同一命令に対するデータ並列性が大きい。そのため、画像処理の高速化には、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ  ｓｔｒｅａｍ）型並列計算手法が適する。
動画圧縮規格としては、ＭＰＥＧ（ＩＳＯ／ＩＥＣ１４４９６−２（ＭＰＥＧ４），ＩＳＯ／ＩＥＣ１３８１８−２（ＭＰＥＧ２），ＩＳＯ／ＩＥＣ１１１７２−２（ＭＰＥＧ１））が知られている。この動画圧縮規格によれば、デジタル化された画像をブロック分割して各ブロック毎に動きベクトルを検出し、ＤＴＣ（離散コサイン変換）、及び量子化を施し、ハフマン符号化して画像データを圧縮する。
ＳＩＭＤ型並列計算アーキテクチャをＭＰＥＧ動画圧縮に適用すると、複数のプロセッサを上記画像ブロックの計算単位とすることがきる。すなわち、動きベクトル検出では、検出範囲のシフトブロックを複数プロセッサのローカルメモリに配置し、制御系から圧縮対象のブロックを全プロセッサにブロードキャストしてフレーム差を並列演算することで、プロセッサ数倍の高速化が期待できる。また、圧縮対象のブロック画像あるいは検出した動きベクトル位置とのブロック単位のフレーム差データを複数プロセッサのローカルメモリに配置し、ＤＣＴ（あるいはＩＤＣＴ）あるいは量子化（あるいは逆量子化）の計算を並列演算することで、プロセッサ数倍の高速化が期待できる。
【発明の開示】
本発明者らの検討によれば、上記した技術では、固定小数点形式のデータについて、乗算によって変更されるビット数の調整あるいは加減算で整数部の有効桁数を調整するための小数点位置の変更は、プロセッサ内のシフタで行われる。このとき、乗算結果を所定のデータ幅に縮小するためにＬＳＢ側のビットを削除あるいはシフタによる右ビットシフトする場合には、演算精度の劣化を避けるためにデータのＬＳＢに対して丸め処理が必要である。
丸め処理には、浮動小数点形式の規格であるＩＥＥＥ７５４において、演算の途中結果を仮数部の所定ビットに丸めて出力するために定められた方法がある。本規格によれば、最近値丸め、−∞方向丸め、＋∞方向丸め、及び０方向丸めの４種の方法があり、アプリケーションは必要な精度に応じて何れかの丸め方法（以下丸めモードと記載する）を選択可能とされる。
上記した技術では、ハード的には単に切り捨てのために、データは−∞方向の丸めとなる。その他の最近値丸め、＋∞方向丸め、あるいは０方向丸めを用いるためには、プログラムの記述によってソフト的に行う必要がある。すなわち、プログラムの記述によって、所望の丸め方法に応じて切り捨てるビットを調べその状態について判断し丸める最下位ビットに１を加算するように動作させる。
しかしながら、プログラムによる上記丸め処理の実現では、切り捨てるビットを評価するためのシフト演算と、その状態を判断するためのＡＬＵ（算術論理演算ユニット）によるコンディションコードの取得処理が必要となる。
そのため、ハード的に無策な−∞方向の場合には、例えばパイプライン処理によって見かけ上の１データを１ステップで処理可能とされる演算であっても、その他の最近値丸め、＋∞方向丸め、あるいは０方向丸めを用いる場合には丸めのための処理ステップが必要となり、速度性能が劣化する。特に、ＳＩＭＤ型並列演算器構成では、１つのプログラムに対して複数の演算データが同時に存在するため、データ状態に応じた処理ステップの分岐による高速化は困難であり、全ケースの処理ステップ時間が必要となる。
本発明の目的は、効率的な回路構成で丸め処理のオーバヘッド低減でき、固定小数点演算器を用いた情報処理装置の数値演算精度を効率的に向上することのできるデータ処理装置を提供することにある。
本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
すなわち、本発明のデータ処理装置は、以下のような特徴を有するものである。
（１）右ビットシフト演算機能を有するシフタと、２つの入力データの加算に、最下位ビットに１ビットデータを加算するキャリーイン機能を有するＡＬＵとを含んで構成されたプロセッサと、前記プロセッサを単一命令で制御する制御ユニットとで構成されるデータ処理装置であって、上記シフタは、シフト演算結果のデータを出力すると同時に、右ビットシフトの場合に切り捨てられるビットについて丸め評価をしてシフト演算結果の最下位ビットに“１”加算が必要か否かを示す１ビットデータを出力する丸め評価手段を有し、上記ＡＬＵは、２入力データの内の一方を上記シフタの出力データとし、上記キャリーイン機能で用いるデータを上記シフタの丸め評価手段が出力する１ビットデータとするものである。
これにより、異なる小数点位置のデータを加算する場合、整数桁を保証するために、整数桁の少ないデータを右シフトして桁合わせをしてから加算する。上記のように構成したことによって、先ずシフタにおいて桁合わせのための右シフトと同時に丸め処理のための１加算の要否が１ビットデータとして出力でき、次にＡＬＵにおいて桁合わせされた２つのデータの加算と同時にこの検出された１ビットデータを加算できるので、右シフトするデータについての丸め処理に要する時間を解消することができる。
また、丸めのための１加算は、従来技術のＡＬＵにおけるキャリーイン付き加算機能とすることができるので、シフタへの丸め評価と該結果としての１ビットデータ出力の回路を追加するだけですむ。
（２）上記シフタにおける右シフト演算及び上記ＡＬＵにおけるキャリーイン機能の加算は、２の補数形式のデータに対応した演算である。
これにより、上記シフタ及びＡＬＵの演算を従来技術である２の補数形式の演算とすることで、符号付き演算に対して、上記同様の構成で丸め処理を実現することができる。例えば、上記シフタ及びＡＬＵの演算を制御系からの制御信号に呼応して符号無し演算または符号付き演算の何れかに選択可能とすれば、符号無しデータ及び符号付きデータが混在するような利用目的であっても、上記同様の効果の丸め処理が可能となる。
（３）丸めモード選択手段を有し、上記丸め評価手段は、該丸めモード選択手段
で選択可能な複数の丸めモードの個々に対応した丸め評価を行うものである。
これにより、上記丸め評価回路を、複数の丸めモードに対応させることで、上記同様の構成で所望の丸めモードの丸め処理を実現することができる。例えば、上記丸め評価回路の動作における丸めモードを制御系からの制御信号に呼応して選択可能とすれば、異なる丸めモードを動的に変更して用いるような利用目的に対して、上記同様の効果の丸め処理が可能となる。
（４）上記プロセッサは複数からなり、上記丸めモード選択手段は、上記複数のプロセッサの個々に設けられたデータ記憶手段によって丸めモードを選択するものである。
これにより、上記丸めモードを選択する手段を、プロセッサ毎に設けたレジスタなどの記憶手段とすることで、制御系から複数のプロセッサに対する制御信号の本数を低減できる効果がある。
（５）上記丸め評価は、上記右ビットシフトで切り捨てられるビットの論理和である。
これにより、上記丸め評価の動作を、上記シフタにおける右ビットシフトで切り捨てられるビットの論理和とすることで、符号無しデータあるいは２の補数形式の符号付きデータに対して＋∞方向丸め（切り上げ）を実現することができる。また、符号付き絶対値形式のデータに対して、符号の∞方向丸めを実現することができる。
（６）上記丸め評価は、上記右ビットシフトで切り捨てられるビットの論理和と、シフト演算データの符号との論理積である。
これにより、上記丸め評価の動作を、上記シフタにおける右ビットシフトで切り捨てられるビットの論理和と、シフト演算データの符号との論理積とすることで、２の補数形式の符号付きデータに対して０方向丸めを実現することができる。また、符号付き絶対値形式のデータに対して、−∞方向丸めを実現することができる。
（７）上記丸め評価は、上記右ビットシフトで切り捨てられるビットの内の最上位ビットを除くビットとシフト演算結果の最下位ビットとの論理和と、上記右ビットシフトで切り捨てられるビットの内の最上位ビットとの論理積である。
これにより、上記丸め評価の動作を、上記シフタにおけるシフトで切り捨てられるビットの内の最上位ビットを除くビットとシフト演算結果の最下位ビットとの論理和と、上記右シフトで切り捨てられるビットの内の最上位ビットとの論理積とすることで、符号無しデータ、２の補数形式の符号付きデータあるいは符号付き絶対値形式のデータに対して、最近値丸めを実現することができる。
（８）１つの半導体基板に構成されたものである。
上記データ処理装置によれば、さらに、従来の技術同様に切り捨てを実現するためには、上記丸めモード選択手段によって、上記丸め評価回路から上記ＡＬＵへの１ビットデータ出力を常にネゲートする状態を設ければよい。このとき、２の補数形式の符号付きデータに対して−∞方向丸めとして動作する。また、符号無しデータあるいは符号付き絶対値形式のデータに対して０方向丸め（切り捨て）として動作する。
上記のごとく丸め評価回路を設けたことによるシフタの端子追加は、モード指定の信号とＡＬＵへの１ビットデータ出力信号だけですむ。また、シフタに追加する丸め評価回路が、複数の丸めモードに対応させたとしても、切り捨てるビットの論理和を共通にすることができるので回路規模は少なくてすむ。
以上のように、効率的な回路構成で丸め処理のオーバヘッド低減を達成する。
【図面の簡単な説明】  図１は、本発明の一実施の形態である丸め処理を実現する回路構成を示すブロック図である。
図２は、図１のシフタの詳細な回路構成を示すブロック図である。
図３は、図２の丸め評価回路における動作の真理値表を示す図である。
図４は、図１の回路構成を含んだＳＩＭＤ型の並列ＤＳＰの構成を示す図である。
図５は、図２，図３のシフタにシフトビット数を指定する記憶手段を追加する構成を示す図である。
図６は、図４のデータ演算実行部の別の構成を示す図である。
図７は、図６のシフタの詳細な回路構成を示すブロック図である。
図８は、図７の丸め評価回路における動作の真理値表を示す図である。
図９は、従来のデータ処理装置に本発明の丸め処理を適用した構成を示す図である。
【発明を実施するための最良の形態】  以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部材には同一の符号を付し、その繰り返しの説明は省略する。
図１は、本発明の一実施の形態である丸め処理を実現する回路構成を示すブロック図である。
図１において、ｎはデータ信号のビット数を表し、例えば３２ビットとすることができる。
シフタ１０は、シフタ入力ラインを介して、汎用レジスタファイル２０または外部から択一的に伝達されたｎビットデータについて、シフト演算し、結果をｎビットのシフタ出力ラッチ３０に出力する。同時に、丸め評価結果を１ビットのラッチｒ４０に出力する。
ここで、シフタ入力ラインでのデータの選択は、図示しないが、例えば、外部から与えられる制御信号などで為される。
シフタ１０におけるシフト演算は、左右ｍ（＜ｎ）ビットシフトの算術・論値シフト機能を有し、図示しないが、例えば、外部から与えられる制御信号などで指定された演算が為される。
算術シフトと論理シフトの相違は、算術シフトが入力データを２の補数形式の２進数としたシフトであって、シフト演算による符号（ＭＳＢビット）が変更されない点である。すなわち、右シフトの場合、算術シフトでは出力データの上位シフトビット数には符号ビット（入力のＭＳＢビット）が詰められ、論理シフトでは０が詰められる。
左シフトの場合、出力データの下位シフトビット数には算術及び論理シフト共に０が詰められるが、算術シフトでは入力データの上位のシフトビット数＋１ビットが同じでない入力データに対してオーバフロー処理が為され、入力データの符号に等しい最大値（３２ビットの場合、正の最大値はＨ’７ｆｆｆｆｆｆｆ、負の最大値はＨ’８０００００００、ただしＨ’は１６進数を表すための接頭詞）が出力される。
さらに、シフタ１０は丸め評価機能を有し、右シフトで右にあふれるビットを上記右シフト演算結果の出力データに丸めるために１加算が必要な場合にはラッチｒ４０に１を出力し、それ以外の場合にはラッチｒ４０に０を出力する。
ＡＬＵ５０は、ＡＬＵ入力▲１▼ラインを介して、シフタ出力ラッチ３０、汎用レジスタファイル２０または外部から択一的に伝達された第１のｎビットデータまたは定数“０”と、ＡＬＵ入力▲２▼ラインを介して、累積加算レジスタΣＲ６０または汎用レジスタファイル２０から択一的に伝達された第２のｎビットデータまたは定数“０”と、セレクタ９０により１ビットのラッチｒ４０またはラッチＣＯ７０から選択された１ビットデータとについて、算術論理演算し、結果をｎビットのＡＬＵ出力ラッチ８０及び累積加算レジスタΣＲ６０に出力する。
同時に、最上位ビットからの桁上がり（キャリーアウト）を１ビットのラッチＣＯ７０に出力する。ここで、ＡＬＵ入力▲１▼ライン及びＡＬＵ入力▲２▼ラインでのデータの選択、定数０の選択、及び１ビットデータの選択は、図示しないが、例えば、外部から与えられる制御信号などで為される。
ＡＬＵ５０における算術・論理演算は、算術演算としての加減算、及び論理演算機能を有し、図示しないが、例えば、外部から与えられる制御信号などで指定された演算が為される。算術演算は、上記第１のデータと第２のデータを２の補数形式の２進数とした符号付き加減算、または上記第１のデータと第２のデータを符号無し２進数とした符号無し加減算であり、さらに、これら２つの加減算において、最下位ビット（ＬＳＢ）に１ビットデータを同時に加算するキャリーイン機能が選択可能である。
論理演算は、特に制限されないが、上記第１のデータと第２のデータの各対応するビットについての、論理和、論理積、排他的論理和、論理和反転、論理積反転、または排他的論理和反転である。
累積加算レジスタΣＲ６０は、図示しないが、例えば、外部から与えられる制御信号などに呼応してＡＬＵ５０が出力するｎビットデータが書き込まれる。
汎用レジスタファイル２０は、特に制限されないが、ｎビット×複数ワードのレジスタ群について１入力２出力で構成され、図示しないが、例えば、外部から与えられる制御信号などで指定されたレジスタへの書き込みと読み出しが為される。
すなわち、上記制御信号に呼応して、ＲＦ書込ラインを介して、シフタ出力ラッチ３０あるいはＡＬＵ出力ラッチ８０から択一的に伝達されたｎビットデータが、制御信号に含まれる汎用レジスタアドレス１（ＲＦＡ１）で指定されたレジスタに書き込まれる。
また、汎用レジスタファイル２０の２つの出力の内、一方は、上記制御信号に含まれる汎用レジスタアドレス０（ＲＦＡ０）で指定されたレジスタのデータが出力され、シフタ入力ライン及びＡＬＵ入力▲１▼ラインに伝達される。他方は、上記汎用レジスタアドレス１（ＲＦＡ１）で指定されたレジスタのデータが出力され、ＡＬＵ入力▲２▼ライン及び外部に伝達される。なお、汎用レジスタアドレス１（ＲＦＡ１）で指定されたレジスタについて、上記書き込みが為される場合、上記出力データは書き込み前のデータとなる。
次に、上記図１の回路構成例による丸め処理を用いた動作について、以下例題で説明する。
まず、例題として、汎用レジスタファイル２０に格納された固定小数点位置が異なる３つの２の補数形式の２進数Ａ，Ｂ，Ｃを加算し、汎用レジスタファイル２０に格納する場合の動作を説明する。
ここでは、説明を簡単するため、データ幅ｎ＝３２ビットとし、データの固定小数点位置を、データ名（整数ビット数．小数ビット数）、で表すとき、上記３つのデータの固定小数点位置をＡ（１０．２２）、Ｂ（１．３１）、Ｃ（１５．１７）とし、加算結果Ｘの固定小数点位置をＸ（１６．１６）とする。
［処理ステップ１］
汎用レジスタファイル２０に対して、Ａ（１０．２２）が格納されているアドレスをＲＦＡ０で指定してＡ（１０．２２）を出力させる。
同時に、シフタ入力ラインに対して、汎用レジスタファイル２０を選択し、シフタにＡ（１０．２２）を伝達する。
同時に、シフタ１０に対して、右６ビット算術シフト演算を指定する。
以上による制御で、処理ステップ１では、Ａ（１０．２２）を右６ビット算術シフトしたデータがシフタ出力ラッチ３０に出力され、同時に切り捨てられる６ビットについての丸め評価結果がラッチｒ４０に出力される。
［処理ステップ２］
汎用レジスタファイル２０に対して、Ｂ（１．３１）が格納されているアドレスをＲＦＡ０で指定してＢ（１．３１）を出力させる。
同時に、シフタ入力ラインに対して、汎用レジスタファイル２０を選択し、シフタにＢ（１．３１）を伝達する。
同時に、シフタ１０に対して、右１５ビット算術シフト演算を指定する。
同時に、ＡＬＵ入力▲１▼ラインに対して、シフタ出力ラッチ３０を選択し、ＡＬＵ５０の第１のデータとして処理ステップ１でのＡのシフト結果を伝達する。
同時に、ＡＬＵ入力▲２▼ラインに対して、定数０を選択し、ＡＬＵ５０の第２のデータを０とする。
同時に、ＡＬＵ５０に対して、キャリーインをラッチｒ４０とするキャリーイン機能付き符号付き加算演算を指定する。
同時に、累積加算レジスタΣＲ６０に対して、書き込みを指定する。
以上による制御で、処理ステップ２では、Ｂ（１．３１）を右１５ビット算術シフトしたデータがシフタ出力ラッチ３０に出力され、同時に切り捨てられる１５ビットについての丸め評価結果がラッチｒ４０に出力される。また、ＡＬＵ５０によって、Ａ（１０．２２）をＡ（１６．１６）に桁合わせする際のＬＳＢ側６ビットに対する丸め処理がされ、累積加算レジスタΣＲ６０に出力される。
［処理ステップ３］
汎用レジスタファイル２０に対して、Ｃ（１５．１７）が格納されているアドレスをＲＦＡ０で指定してＣ（１５．１７）を出力させる。
同時に、シフタ入力ラインに対して、汎用レジスタファイル２０を選択し、シフタ１０にＣ（１５．１７）を伝達する。
同時に、シフタ１０に対して、右１ビット算術シフト演算を指定する。
同時に、ＡＬＵ入力▲１▼ラインに対して、シフタ出力ラッチ３０を選択し、ＡＬＵ５０の第１のデータとして処理ステップ２でのＢのシフト結果を伝達する。
同時に、ＡＬＵ入力▲２▼ラインに対して、累積加算レジスタΣＲ０を選択し、ＡＬＵ５０の第２のデータとして処理ステップ２でのＡの丸め処理結果を伝達する。
同時に、ＡＬＵ５０に対して、キャリーインをラッチｒ４０とするキャリーイン機能付き符号付き加算演算を指定する。
同時に、累積加算レジスタΣＲ６０に対して、書き込みを指定する。
以上による制御で、処理ステップ３では、Ｃ（１５．１７）を右１ビット算術シフトしたデータがシフタ出力ラッチ３０に出力され、同時に切り捨てられる１ビットについての丸め評価結果がラッチｒ４０に出力される。また、ＡＬＵ５０によって、Ｂ（１．３１）をＢ（１６．１６）に桁合わせする際のＬＳＢ側１５ビットに対する丸め処理と、処理ステップ２で桁合わせされたＡ（１６．１６）への加算が同時にされ、累積加算レジスタΣＲ６０に出力される。
［処理ステップ４］
ＡＬＵ入力▲１▼ラインに対して、シフタ出力ラッチ３０を選択し、ＡＬＵ５０の第１のデータとして処理ステップ３でのＣのシフト結果を伝達する。
同時に、ＡＬＵ入力▲２▼ラインに対して、累積加算レジスタΣＲ６０を選択し、ＡＬＵ５０の第２のデータとして処理ステップ３でのＡとＢの丸め・加算結果を伝達する。
同時に、ＡＬＵ５０に対して、キャリーインをラッチｒ４０とするキャリーイン機能付き符号付き加算演算を指定する。
以上による制御で、処理ステップ４では、ＡＬＵ５０によって、Ｃ（１５．１７）をＢ（１６．１６）に桁合わせする際のＬＳＢ側１ビットに対する丸め処理と、処理ステップ２で桁合わせされたＡ（１６．１６）とＢ（１６．１６）の加算結果への加算が同時にされ、ＡＬＵ出力ラッチ８０に出力される。
［処理ステップ５］
ＲＦ書込ラインに対して、ＡＬＵ出力ラッチ８０を選択する。
汎用レジスタファイル２０に対して、Ｘ（１６．１６）を格納するアドレスをＲＦＡ１で指定して、書き込みを指定する。
以上による制御で、処理ステップ５では、Ａ、Ｂ及びＣについて（１６．１６）に丸め処理を施して桁合わせした加算結果が汎用レジスタファイル２０に出力され、目的とされるＸ（１６．１６）を得る。
以上、説明したように、固定小数点位置が異なる複数データの加算について、データ数に等しい処理ステップとパイプラインのための２ステップのオーバヘッドで処理することができ、桁合わせで発生する切り捨てビットに対する丸め処理のための処理ステップを解消することができる。
次に、図１のシフタ１０の詳細な回路構成について説明する。
図２は、図１のシフタの詳細な回路構成を示すブロック図である。
図２において、バレルシフタ１００は、シフタ入力ラインのｎビットデータについて、制御信号に従ってシフト演算してｎビット出力する。
制御信号の内、算術シフト／論理シフト選択信号は、特に制限されないが、バレルシフタ１００に対して０が算術シフト、１が論理シフトを指示する。
シフトビット数は、特に制限されないが、±ｎを２の補数形式でエンコードした値（ｍとする）の信号で、正が左シフトビット数、負が右シフトビット数を指示する。
丸めモード選択信号は、丸め評価回路１１０に対して丸めモードを指示する信号で、特に制限されないが、２ビットとされ、Ｂ’００が−∞方向丸め、Ｂ’０１が＋∞方向丸め、Ｂ’１０が０方向丸め、Ｂ’１１が最近値丸めを指示する。（ただしＢ’は２進数を表すための接頭詞）
ここで、−∞方向丸めとは、真値（入力データが表す値）より大きくない最近値（出力データの固定小数点位置で表現可能な値の内で、条件を満たした最も近い値）に丸める方式の丸めモードである。
＋∞方向丸めとは、真値より大きくない最近値に丸める方式の丸めモードである。
０方向丸めとは、真値の絶対値より大きくない最近値に丸める方式の丸めモードである。
最近値丸めとは、無条件に最近値に丸める方式の丸めモードである。ただし、２つの最近値が真値から等距離にある場合、ＬＳＢが“０”となる最近値に丸める。
丸め評価回路１１０は、上記シフトビット数ｍの指示が右シフトビット数（ｍ＜０）である場合、入力データの下位の｜ｍ｜ビット（すなわち切り捨てられるビット）を、上記シフト結果（バレルシフタ１００の出力）に丸めるために１加算が必要か否かを、上記丸めモード選択信号で指示された丸めモードで評価し、１加算が必要な場合は１、不要な場合は０を示す１ビットを出力する。
図３には、上記図２の丸め評価回路１１０における動作の真理値表が示される。
図３に示す真理値表に基づき、評価結果としての１ビット出力信号Ｒを、丸めモード毎の論理式で表記すれば以下になる。
▲１▼−∞方向丸め：Ｒ＝０
▲２▼＋∞方向丸め：Ｒ＝（切り捨てられるビットの論理和）
＝（入力データの第｜ｍ｜−１ビット  〜  第０ビットの論理和）
▲３▼０方向丸め：Ｒ＝（入力データが負）∩（切り捨てられるビットの論理和）
＝（入力データのＭＳＢ）∩（入力データの第｜ｍ｜−１ビット  〜  第０ビットの論理和）
▲４▼最近値丸め：Ｒ＝（切り捨てられるデータの内の最上位ビット）
∩  ｛（（切り捨てられるデータの内の最上位を除くビット）∪（出力データのＬＳＢとなるビット）｝
＝（入力データの第｜ｍ｜−１ビット）∩｛（第｜ｍ｜−２ビット〜第０ビットの論理和）∪（入力データの第｜ｍ｜ビット）｝
ここで、上記論理式において、「∪」は論理和、「∩」は論理積を意味する。また、「第ｉビット」は入力データのＬＳＢを０、ＭＳＢをｎ−１として各ビットに０からｎ−１まで連続する整数で番号付けたときに番号ｉとなる位置のビットを示す。
以上、図２〜３で説明したように、シフタ１０に丸め機能を設けたことによりシフタブロックに追加される端子は、丸めモード選択信号と評価結果としての１ビット出力信号だけですみ、これにより、例えば、半導体基板上に回路をブロック分割して実装する場合のブロック間配線を最小限にすることができる。さらに、丸めモードの複数に対応したとしても、上記論理式における（第｜ｍ｜−２ビット〜第０ビットの論理和）などの論理の共通化ができるので、実装面積の増大を抑えることができるという効果がある。
次に、図１の回路構成を含んで構成されるプロセッサの複数と、これらのプロセッサを制御する１つの制御ユニットとで構成されるＳＩＭＤ型の並列ＤＳＰの構成について説明する。
図４は、図１の回路構成を含んだＳＩＭＤ型の並列ＤＳＰの構成を示す図であり、例えば半導体基板上に構成される。
図４において、制御ユニット２００は、特に制限されないが、プログラムメモリ２１０を含んだプログラム実行制御部２２０と、データメモリ２３０を含んだデータ制御部２４０とを含んで構成される。
これらのプログラムメモリ２１０及びデータメモリ２３０には、外部からのデータの入出力が可能であり、外部から設定された計算手順（計算アルゴリズム）に従った情報処理が可能である。
プロセッサアレイ２５０は、同一構成のプロセッサ２６０の複数で構成され、全プロセッサ２６０は、命令バス、ブロードキャストデータバス、及びトライステートバッファを介した共通データバスで制御ユニット２００に接続される。
また、各プロセッサ２６０には、各プロセッサ２６０に対応して設けられたトライステートバッファの制御と共通のプロセッサ選択信号が入力され、制御ユニット２００によって常に唯一のプロセッサ２６０が選択される。
プロセッサ２６０は、プロセッサ制御部２７０とデータ演算実行部２８０を含んで構成される。
データ演算実行部２８０は、例えば、図１記載の回路構成とすることができる。
プロセッサ制御部２７０は、制御ユニット２００から命令バスを介して与えられる命令に基づき、データ演算実行部を制御する。
制御ユニット２００内のプログラム実行制御部２２０が処理ステップに同期して出力する命令は、例えば、ＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）方式とされ、各部の動作が水平に制御される。すなわち、制御ユニット２００が出力する各ステップの命令には各部に対応したフィールドが設けられ、１ステップで複数の機能ブロックを水平に制御することができる。
上記命令の内、プロセッサ２６０に対する命令（プロセッサ命令フィールド）は、命令バスを介して全プロセッサ２６０に伝達される。すなわち、制御ユニット２００は、全プロセッサ２６０を同一の命令で制御する。
プロセッサ２６０に伝達された上記プロセッサ命令フィールドは、プロセッサ２６０内のプロセッサ制御部２７０に伝達される。
プロセッサ制御部２７０は、上記伝達されたプロセッサ命令フィールドの内、プロセッサ制御部２７０に対する命令（プロセッサ制御部命令フィールド）に従って動作し、データ演算実行部２８０に対する命令（データ演算実行部命令フィールド）をデータ演算実行部２８０に伝達する。
このとき、プロセッサ制御部２７０は、プロセッサ制御部命令フィールド内の命令でアドレスマスク実行指示がある場合には、データ演算実行部命令フィールドの内の全ての書き込み命令をプロセッサ選択信号のネゲートでマスクして、データ演算実行部２８０に伝達する。これによって、プロセッサ２６０の１つを選択して動作させることが可能であり、例えば、データ演算実行部２８０内の汎用レジスタファイル２０に対して、各プロセッサ固有のデータを設定することができる。
また、プロセッサ制御部２７０には、データ演算実行部２８０よりコンディションコード信号（ＣＣ）が入力される。プロセッサ制御部２７０は、プロセッサ制御部命令フィールド内の命令でグループマスク実行指示がある場合には、データ演算実行部命令フィールドの内の全ての書き込み命令を、指定されたコンディションコード信号でマスクして、データ演算実行部２８０に伝達する。
このコンディションコード信号は、特に制限されないが、データ演算実行部２８０の演算状態を示す信号であり、図１におけるＡＬＵ５０からラッチＣＯ７０を介して出力される桁上がり（キャリーアウト）信号であり、さらに、図１の図示しないが、上記桁上がり信号と同様にＡＬＵ５０からラッチ８０を介して出力される符号（データのＭＳＢ）信号、零（演算結果が０であるときアサートされる）信号、及びオーバフロー（ＭＳＢの桁上がり信号とＭＳＢ−１ビットの桁上がり信号の排他的論理和）信号である。
これによって、プロセッサ２６０の内部状態に応じた動作が可能であり、例えば演算結果が負であったプロセッサ２６０のみグループマスクして、このデータを０からの減算で符号反転することにより絶対値をとるといった条件実行が可能である。
プロセッサ２６０内のデータ演算実行部２８０に伝達されるデータ演算実行部命令フィールドには、シフタ１０に対するシフタ命令フィールド、ＡＬＵ５０に対するＡＬＵ命令フィールド及び汎用レジスタファイル２０に対する汎用レジスタファイル命令フィールドがあり、図１記載の回路構成の各機能ブロックを制御して、上記処理ステップ１〜５に例示した丸め処理を実現することができる。
ここで、図２に記載したシフタ内の丸め評価回路に対する丸めモード選択信号は、上記プロセッサ制御部２７０に設けられた丸めモード選択レジスタＲＭＲ２９０によって制御される。この丸めモード選択レジスタＲＭＲ２９０には、上記プロセッサ制御部命令フィールド内の命令でＲＭＲ書き込み指示がある場合に、ブロードキャストデータバスのデータが書き込まれる。
このとき、特に制限されないが、図２〜３記載の丸めモード選択信号は２ビットのため丸めモード選択レジスタＲＭＲ２９０は２ビット構成とされ、ブロードキャストデータバスから入力するｎ（例えば３２）ビットデータの下位２ビットが書き込まれる。
丸めモードは各処理ステップ毎に変更する用途が少ないため、命令バスに丸めモード選択のためのフィールドを設ける必要がなく、上記丸めモード選択レジスタＲＭＲ２９０によるレジスタ設定とすることができ、これによって、命令バス幅の増大を低減する効果を得る。
上記プロセッサ２６０の演算結果の外部への取り出しは、上記プロセッサ選択信号で所望のプロセッサ２６０を選択することによって、該プロセッサ２６０のトライステートバッファ３００がドライブ状態となりデータ共通データバスを介して制御ユニットに出力されることで為される。
以上説明したように、図４記載のＳＩＭＤ型並列ＤＳＰの半導体装置において、１つの制御系から出力される単一の命令とデータについて複数のプロセッサ２６０が内に持つ固有データとの演算を並列に処理していくことによって、加減算を基本とする並列アルゴリズムを適切な丸め処理による演算で高速に処理することが可能となる。
以上説明した実施の形態では、本発明の丸め処理に焦点を絞って説明したが、利用目的に応じて、種々変更可能であることは言うまでもない。
例えば、上記したＳＩＭＤ型並列ＤＳＰの各プロセッサにおいて、シフト演算のシフトビット数を指定する記憶手段を追加することによって、各プロセッサ固有のデータとすることができる。
図５には、上記図２〜３で説明した本発明によるシフタに、上記シフトビット数を指定する記憶手段を追加する場合の実施例が示される。
図５において、上記記憶手段としてシフトビットレジスタＳＢＲ４００は、図２記載のシフタにおけるシフトビット数を表現するのに必要なビット数（例えばｎ＝３２とするとき６ビット）で構成され、上記データ演算実行部命令フィールド内に追加した書き込み指示に呼応してデータが設定される。
シフトビットレジスタＳＢＲ４００に書き込むデータは、特に制限されないがＡＬＵ５０の出力データがオーバフロー処理回路４１０を介して伝達されたデータである。オーバフロー処理回路４１０は、ＡＬＵ５０の出力であるｎビットデータを２の補数形式の２進整数として入力し、シフトビットレジスタＳＢＲ４００の構成ビット数の２の補数形式の２進整数に上位ビットを丸めて出力する。
すなわち、シフトビットレジスタＳＢＲ４００の構成ビット数を６ビットとしたとき、ＡＬＵ５０の出力が−３１〜３１の場合はその値を出力するが、ＡＬＵ５０の出力が３２以上の場合（正のオーバフロー）には３１を出力し、ＡＬＵ５０の出力が−３２以下の場合（負のオーバフロー）には−３１を出力する。
また、シフタ１０へのシフトビット数の出力は、上記データ演算実行部命令フィールド内の命令と、上記シフトビットレジスタＳＢＲ４００とから、セレクタ４２０によって選択される。このセレクタ４２０の制御は、特に制限されないが、例えば、上記データ演算実行部命令フィールド内の命令で指定されたシフトビット数が負の最大値（シフトビット数が６ビットの場合は−３２）であるとき、ＳＢＲ出力を選択し、その他の場合は上記データ演算実行部命令フィールド内の命令で指定されるシフトビット数を選択するように、データのコンペア回路４３０で為され、コンペア回路３０の出力の「０」、「１」により切替が行われる。
上記説明した実施の形態について、画像処理やニューラルネットワークなどの並列アルゴリズムを高速処理するためには、上記プロセッサに、積和演算を高速処理するための乗算器、及びプロセッサ固有のデータをより多く分散配置させるためのローカルメモリを設ければよい。
図６には、図４におけるプロセッサ内のデータ演算実行部の別の回路構成例として、図１に記載した回路構成に乗算器及びローカルメモリＬＭを追加した回路構成が示される。
図６において、乗算器５００は、乗算器入力▲１▼ラインを介して、シフタ出力ラッチ３０、汎用レジスタファイル２０または外部から択一的に伝達される第１のｎビットデータと、乗算器入力▲２▼ラインを介して、汎用レジスタファイル２０またはローカルメモリＬＭ５１０の出力ラッチ５２０から択一的に伝達された第２のｎビットデータとについて、乗算し、結果の２ｎビット（ｎが３２のとき６４ビット）データを乗算器出力ラッチ５３０に伝達する。ここで、乗算器入力▲１▼ライン及び乗算器入力▲２▼ラインでのデータの選択は、図示しないが、例えば、外部から与えられる制御信号などで為される。
乗算器出力ラッチ５３０の出力は、シフタ入力ラインに伝達される。
ローカルメモリＬＭ５１０は、ｎビット×複数ワードのＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で構成され、図示しないが、例えば、外部から与えられる制御信号などに呼応して、シフタ出力ラッチ３０、ＡＬＵ出力ラッチ８０または外部から択一的に伝達されたｎビットデータについて、ＬＭアドレス制御部５４０内のローカルメモリポインタレジスタＬＭＰＲ５５０から伝達されるアドレスに書き込む。または、該アドレスに格納されているデータを後段のローカルメモリ出力ラッチ５２０に読み出す。
ローカルメモリ出力ラッチ５２０の出力は、乗算器入力▲２▼ライン、シフタ入力ライン及びＡＬＵ入力▲２▼ラインに伝達される。
ＬＭアドレス制御部５４０は、ローカルメモリＬＭ５１０の書き込み／読み出しアドレス出力するローカルメモリポインタレジスタＬＭＰＲ５５０を含み、図示しないが、例えば、外部から与えられる制御信号などに従って、ローカルメモリポインタレジスタＬＭＰＲ５５０のインクリメント、ディクリメント、あるいはＡＬＵ出力ラッチ８０から伝達されたデータの書き込みを行う。
ローカルメモリポインタレジスタＬＭＰＲ５５０の出力は、ローカルメモリＬＭ５１０へのアドレスの他に、ＲＦ書込ラインに伝達され汎用レジスタファイル２０への退避や、ＡＬＵ５０による演算が可能となる。
上記、乗算器５００、ローカルメモリＬＭ５１０、及びＬＭアドレス制御部５４０の追加により、図１に記載した機能ブロックの変更点は、乗算器５００の出力データ幅に対応して、シフタ６００の入力データ幅が増加したことである。
シフタ入力ラインのデータ幅の２ｎビットについて、上記制御信号で選択されたデータが汎用レジスタファイル２０、外部またはローカルメモリ出力ラッチ５２０のｎビットデータの場合には、シフタ入力ラインのＭＳＢ側ｎビットに伝達され、このとき、シフタ入力ラインのＬＳＢ側のｎビットは０となる。
図７には、図６のシフタの詳細な回路構成を示すブロック図が示される。
図７において、バレルシフタ６１０は、２ｎビットの入力データのＭＳＢを基準として、図２に記載のバレルシフタ１００と同様のシフト演算を行い、ｎビット出力する。図２で説明したバレルシフタ１００との相違点は、左シフトにおいて、オーバフローが発生しない場合、ＬＳＢ側シフトビット数の出力が、図２では０であるのに対して、図７のバレルシフタ６１０では入力データの下位ｎビットデータの内の上位ビットとした点である。
図８には、図７に記載の丸め評価回路における動作の真理値表が示される。図７の上記説明したバレルシフタ６１０は、入力の２ｎビットデータについてＭＳＢを基準にしてシフトしてｎビットを出力するため、左ビット（０ビットシフトを含む）でも切り捨てビットが発生する。これに対応して、図７における丸め評価回路６２０は、図２における丸め評価回路１１０の動作に対して、シフト演算のシフト方向によらず（すなわち常に）、２ｎビット入力データの内の切り捨てビットを評価する点が異なる。
以上により、画像処理あるいはニューラルネットワークなどの並列アルゴリズムを、１つの制御系と複数のプロセッサで構成されるＳＩＭＤ型並列ＤＳＰで高速に処理する情報処理装置に、比較的小規模の回路追加で処理ステップの増加なく丸め処理機能を組み込むことができ、このことが、固定小数点演算器を用いた情報処理装置の数値演算精度を効率的に向上するという本発明の目的を達成する。
図９には、従来のデータ処理装置に本発明の丸め処理を適用した構成が示される。
図９において、データ処理装置を構成するプロセッサは、演算ユニット１１、ローカルメモリユニット１２、及びトライステートバッファ１３とを含む。
演算ユニット１１は、本実施の形態の丸めモード選択レジスタＲＭＲ２９０を含むプロセッサ制御回路１１０１、ラッチ回路１１０２，１１０５，１１０７，１１１２，１１１４、汎用レジスタファイル１１０３、乗算来１１０４、本実施の形態のＣＯレジスタ７０を含むコンディションコードレジスタ（ＣＣＲ）１１０６、累積レジスタ１１０８、本実施の形態のＡＬＵ（算術論理演算ユニット）５０及びセレクタ９０、ＳＢＲ（シフトビットレジスタ）１１１０、本実施の形態のシフタ１０及びタッチｒ４０、差分絶対値演算器１１１３を含む。
ローカルメモリユニット１２は、ローカルメモリ（ＬＭ０，ＬＭ１）１２０２，１２０４、ローカルメモリ１２０２のアドレス信号を生成するためのアドレス演算回路１２０１、ローカルメモリ１２０４のアドレス信号を生成するためのアドレス演算回路１２０３、セレクタ１２０５，１２０６，１２０７，１２０８，１２０９を含む。
また、図９に示すデータ処理装置の動作は、シフタ１０、ラッチｒ４０、ＡＬＵ（算術論理演算ユニット）５０、及びセレクタ９０は、本実施の形態で説明した動作をし、その他の動作については、特願２００３−２３０７６号に示されるデータ処理装置の動作と同様である。
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
本願発明によって開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下の通りである。
シフタに丸め評価機能を設けたことによりシフタブロックに追加される端子は、丸めモード選択信号と評価結果としての１ビット出力信号だけですみ、効率的な回路構成で丸め処理のオーバヘッド低減できるので、固定小数点演算器を用いた情報処理装置の数値演算精度が効率的に向上する。
【産業上の利用可能性】  １個プロセッサ、すなわち一般的なＤＳＰに適用することができ、ＳＩＭＤ型並列ＤＳＰをはじめとするＤＳＰを搭載した半導体装置に応用することができる。
また、浮動小数点演算を処理するための回路構成に応用することができる。
さらには、ＳＨマイコンに代表されるＣＰＵの演算実行部（Ｅｘｅｃｕｔｉｏｎ  Ｕｎｉｔ）に適用することもできる。
その他、丸め処理が必要なデジタル信号処理装置全般にも適用することもできる。
【図１】
2005024625.tif 000003
【図２】
2005024625.tif 000004
【図３】
2005024625.tif 000005
【図４】
2005024625.tif 000006
【図５】
2005024625.tif 000007
【図６】
2005024625.tif 000008
【図７】
2005024625.tif 000009
【図８】
2005024625.tif 000010
【図９】
2005024625.tif 000011
【国際調査報告】
2005024625.tif 000012
2005024625.tif 000013