(57)【要約】  浮動小数点数の丸め処理に伴うキャリーアウトの発生を迅速に決定し、演算の高速化を図る。この課題を解決するため、ＬＺ予測器（１３０）は、絶対値加算器（１２０）による絶対値加算の演算結果から左シフト量を求め、左シフタ（１４０）および予測部（１６０）へ出力する。左シフタ（１４０）は、左シフト量だけ絶対値加算結果を左シフトし、正規化を行なう。予測部（１６０）は、領域１および領域２を構成する４ビット単位の各ブロックが、正規化後に丸め処理領域内に含まれるか否かを予測し、丸め処理領域内に含まれるビットすべてが１であるか否かを示す予測結果を出力する。ＣＯ検出部（１７０）は、予測部（１６０）による予測結果と左シフタ（１４０）による正規化結果の一部のビットとを用いて、丸め処理部（１５０）における丸め処理時のキャリーアウトの発生を検出し、キャリーアウトが発生する場合には１を出力する。
2008096446.tif 000002
【特許請求の範囲】
【請求項１】
演算結果の丸め処理の際に、前記演算結果に対して１を増分することにより、キャリーアウトが発生するか否かを出力する演算処理装置において、
前記演算を行なう演算手段と、
前記演算結果に対するシフト量を算出するシフト量算出手段と、
前記シフト量を用いて、前記演算結果に対する正規化処理を行なう正規化処理手段と、
前記シフト量を用いて、前記演算結果を所定のシフト量以上シフトした場合に、シフト結果の所定の領域が全て１であることについて、前記正規化処理と並行して予測を行なう予測手段と、
前記正規化処理手段による正規化処理結果と、前記予測手段による予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段とを有することを特徴とする演算処理装置。
【請求項２】
前記検出手段は、前記シフト量に応じて、前記正規化処理結果又は前記予測結果の何れか一方若しくは両方を用いて前記検出を行なうことを特徴とする請求項１記載の演算処理装置。
【請求項３】
浮動小数点演算結果の丸め処理の際に、前記浮動小数点演算結果に対して１を増分することにより、キャリーアウトが発生するか否かを出力する演算処理装置において、
前記演算を行なう演算手段と、
前記演算手段による浮動小数点演算結果に対するシフト量を算出するシフト量算出手段と、
演算結果を所定のシフト量の範囲でシフトして、演算結果を正規化する正規化手段と、
前記シフト量を用いて、所定シフト量以上のシフトが行なわれた浮動小数点演算結果の所定の領域が全て１であることについて、前記正規化処理と並行して予測を行なう予測手段と、
前記正規化処理手段による正規化処理結果と、前記予測手段による予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段とを有することを特徴とする演算処理装置。
【請求項４】
前記正規化処理手段は、それぞれ異なったシフト量範囲で前記演算結果をシフトする複数のシフト手段を備えることを特徴とする請求項３記載の演算処理装置。
【請求項５】
前記複数のシフト手段はそれぞれ、前記シフト量のビット位置に対応してｎの階乗ビット幅分（ｎは正の整数）のシフトを行なうシフト手段であることを特徴とする請求項４記載の演算処理装置。
【請求項６】
前記浮動小数点演算結果の所定の領域は、前記浮動小数点演算結果の上位ｎビットから、最上位ａビットを除いた第１の領域（ｎ，ａは正の整数）と、前記浮動小数点演算結果の下位ｍビットで、且つ前記所定のシフト量範囲のシフト処理により前記第１の領域にシフトされる可能性がある第２の領域（ｍは正の整数）とであることを特徴とする請求項３乃至５のいずれかに記載の演算処理装置。
【請求項７】
浮動小数点演算結果の丸め処理の際に、前記浮動小数点演算結果の仮数部に対して１を増分することにより、キャリーアウトが発生するか否かを出力する演算処理装置において、
前記浮動小数点演算を行なう演算手段と、
前記演算手段による浮動小数点演算結果に対するシフト量を算出するシフト量算出手段と、
複数のシフト手段を有し、前記シフト量を用いて、前記複数のシフト手段を用いて段階的にシフトを行なうことにより、前記浮動小数点演算結果に対する正規化処理を行なう正規化処理手段と、
前記シフト量を用いて、前記正規化処理のうち、所定シフト量以上のシフトによって前記仮数部に留まる第１の領域と前記所定シフト量以上のシフトによって前記仮数部にシフトされる第２の領域それぞれについて、前記シフト後の結果が全て１であることについて予測を行なう予測手段と、
前記正規化処理手段による前記正規化処理結果のうち前記所定シフト量未満のシフトによって前記仮数部に留まる第３の領域と、前記正規化処理手段による前記正規化処理結果のうち前記所定シフト量未満のシフトによって前記仮数部にシフトされる第４の領域と、前記予測手段による予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段とを有することを特徴とする演算処理装置。
【請求項８】
前記複数のシフト手段はそれぞれ、前記シフト量のビット位置に対応してｎの階乗ビット幅（ｎは正の整数）のシフトを行なうシフト手段であることを特徴とする請求項７記載の演算処理装置。
【請求項９】
前記第１の領域は、前記浮動小数点演算結果の上位ｎビットから、最上位ａビットを除いた領域であり、
前記第２の領域は、前記浮動小数点演算結果の下位ｍビットで、且つ前記所定のシフト量範囲のシフト処理により前記第１の領域にシフトされる可能性がある領域であり、
前記第３の領域は前記浮動小数点演算結果の前記最上位ａビットの領域であり、
前記第４の領域は前記第１の領域における最下位ｂビットの領域（ａ，ｂ，ｍ，ｎはそれぞれ正の整数）であることを特徴とする請求項７又は８記載の演算処理装置。
【請求項１０】
前記予測手段は、
前記第１の領域又は前記第２の領域を前記所定シフト量により分割したデータを入力するとともに、前記入力したデータが全て１であることについて検出を行なう複数の第１の論理積手段と、
前記複数の第１の論理積手段それぞれの出力について、前記分割されたデータのそれぞれに対応したシフト量を用いてマスクを行なう複数のマスク手段と、
前記複数のマスク手段の出力について、論理積演算を行なう第２の論理積手段とを有することを特徴とする請求項６乃至９のいずれかに記載の演算処理装置。
【請求項１１】
前記演算処理装置はさらに、
前記浮動小数点演算結果の指数部について増分を行なう増分手段を有し、
前記検出手段が前記第１乃至第４の領域が全て１であることについて検出した場合には、前記増分手段により前記演算結果の指数部に１を増分した結果を、前記丸め処理後の前記浮動小数点演算結果の指数部として出力することを特徴とする請求項７乃至９のいずれかに記載の演算処理装置。
【請求項１２】
演算を行なう演算手段と、
前記演算結果に対するシフト量を算出するシフト量算出手段と、
前記シフト量を用いて、前記演算結果に対する正規化処理を行なう正規化処理手段と、
前記シフト量を用いて、前記正規化処理手段による正規化処理後の演算結果における所定の領域が全て１であることについて、前記正規化処理と並行して予測を行なう予測手段と、
前記正規化処理手段による正規化処理結果と、前記予測手段による予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段と、
前記演算結果の丸めを行なう丸め手段とを有する演算処理手段と、
前記丸め手段の出力を格納する記憶手段とを備えたことを特徴とする情報処理装置。
【請求項１３】
演算結果の丸め処理の際に、前記演算結果に対して１を増分することにより、キャリーアウトが発生するか否かを出力する演算方法において、
前記演算を行なうステップと、
前記演算結果に対するシフト量を算出するステップと、
前記シフト量を用いて、前記演算結果に対する正規化処理を行なうステップと、
前記シフト量を用いて、前記正規化処理を行なうステップによる正規化処理後の演算結果における所定の領域が全て１であることについて、前記正規化処理と並行して予測を行なうステップと、
前記正規化処理結果と、前記予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なうステップとを有することを特徴とする演算方法。
【請求項１４】
浮動小数点演算結果の丸め処理の際に、前記浮動小数点演算結果に対して１を増分することにより、キャリーアウトが発生するか否かを出力する演算方法において、
前記演算を行なうステップと、
前記浮動小数点演算結果に対するシフト量を算出するステップと、
前記シフト量を用いて、段階的にシフトを行なうことにより、前記演算結果に対する正規化処理を行なうステップと、
前記シフト量を用いて、前記正規化処理を行なうステップのうち、所定シフト量以上のシフトを行なうシフトの結果、浮動小数点演算結果の所定の領域が全て１であることについて、前記正規化処理と並行して予測を行なうステップと、
前記正規化処理結果と、前記予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なうステップとを有することを特徴とする演算方法。
【請求項１５】
浮動小数点演算結果の丸め処理の際に、前記浮動小数点演算結果の仮数部に対して１を増分することにより、キャリーアウトが発生するか否かを出力する演算方法において、
前記浮動小数点演算を行なうステップと、
前記演算手段による浮動小数点演算結果に対するシフト量を算出するステップと、
前記シフト量を用いて、段階的にシフトを行なうことにより、前記浮動小数点演算結果に対する正規化処理を行なうステップと、
前記シフト量を用いて、前記正規化処理のうち、所定シフト量以上のシフトによって前記仮数部に留まる第１の領域と前記所定シフト量以上のシフトによって前記仮数部にシフトされる第２の領域それぞれについて、前記シフト後の結果が全て１であることについて予測を行なうステップと、
前記正規化処理結果のうち前記所定シフト量未満のシフトによって前記仮数部に留まる第３の領域と、前記正規化処理結果のうち前記所定シフト量未満のシフトによって前記仮数部にシフトされる第４の領域と、前記予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段とを有することを特徴とする演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算結果の丸め処理の際に、演算結果に対して１を増分することにより、キャリーアウトが発生するか否かを出力する演算処理装置、情報処理装置、および演算方法に関し、特に、浮動小数点数の丸め処理に伴うキャリーアウトの発生を迅速に決定し、演算の高速化を図ることができる演算処理装置、情報処理装置、および演算方法に関する。
【背景技術】
【０００２】
従来、浮動小数点数の加減算や積和演算などにおいては、演算対象のオペランドの仮数部の桁合わせが行なわれるとともに、演算結果についても正規化や丸め処理が行なわれる。具体的には、２つのオペランドＯＰ１、ＯＰ２の一方を例えば右シフトして両者の桁合わせが行なわれ、演算後、演算結果の先頭に連続するリーディングゼロ（Leading  Zero）を消去するための左シフトが行なわれる。そして、左シフトされて正規化された演算結果が例えばＩＥＥＥ（Institute  of  Electrical  and  Electronics  Engineers）７５４などの規格に即した桁数に丸め処理される。【０００３】
このとき、左シフトによる正規化は、リーディングゼロを消去するために行なわれるが、演算結果が求められた後にシフト量を決定するのでは処理遅延が大きくなるため、近年では例えば特許文献１に記載されたように、加算器などによる演算と並行してシフト量を予測しておき、演算結果が求められるとすぐに正規化することが可能となっている。【０００４】
図１３は、上記のような左シフト量の予測を行なう演算処理装置の仮数部に対する処理部の構成を示すブロック図である。同図に示す演算処理装置は、右シフタ１０、絶対値加算器２０、リーディングゼロ予測器（以下「ＬＺ予測器」という）３０、左シフタ４０、および丸め処理部５０を有している。【０００５】
右シフタ１０は、オペランドＯＰ１が入力されると、オペランドＯＰ１の桁がオペランドＯＰ２の桁と合うようにオペランドＯＰ１を右シフトする。なお、右シフタ１０は、図示しない指数部に対する処理部からシフト量を取得する。【０００６】
絶対値加算器２０は、右シフタ１０によって右シフトされたオペランドＯＰ１とオペランドＯＰ２とを絶対値加算する。ＬＺ予測器３０は、絶対値加算器２０による絶対値加算の演算結果において先頭に連続するリーディングゼロの桁数を予測し、予測により得られた桁数を左シフト量として左シフタ４０へ出力する。【０００７】
左シフタ４０は、ＬＺ予測器３０から出力された左シフト量だけ絶対値加算結果を左シフトし、リーディングゼロを消去して演算結果の先頭のビットを１とする正規化を行なう。すなわち、例えば図１４に示すように、１２５ビットの演算結果の先頭に０が連続している場合、左シフタ４０は、演算結果のビット列を左シフトして１が先頭となるようにする。【０００８】
丸め処理部５０は、正規化された演算結果を例えばＩＥＥＥ７５４などの規格に合った桁数にして処理結果を出力する。このとき、丸め処理部５０は、例えば仮数部が２３ビットに規定されている単精度の浮動小数点フォーマットの場合には、演算結果の２４ビット目以降に応じて仮数部の２３ビットの部分に１を加算する（インクリメントする）か否かを判定し、必要に応じて１を加算する。これにより、十進法における四捨五入と同様の処理が二進法の浮動小数点数に対しても行なわれたことになる。【０００９】
【特許文献１】特開平１０−４００７８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
ところで、丸め処理の際にインクリメント演算が行なわれると、仮数部のビットがすべて１である場合には、キャリーアウト（Carry-Out）が発生して、指数部に１が加算されることになる。すなわち、図１３に示した丸め処理部５０において、処理結果の仮数部に１が加算される際、この仮数部のビットがすべて１であれば桁上げが発生してキャリーアウトとなり、図示しない指数部の演算結果に１を加算する必要が生じる。【００１１】
このため、丸め処理部５０による丸め処理が完了するまでは、指数部の演算結果を取得することができず、演算の高速化に一定の限界があるという問題がある。特に、上述したＩＥＥＥ７５４においては、単精度の浮動小数点フォーマットでは仮数部が２３ビットであり、倍精度の浮動小数点フォーマットでは仮数部が５２ビットであるため、丸め処理部５０においては、これらの仮数部のビット幅で１が加算され、この結果が求められないと指数部の演算結果が取得されない。具体的には、丸め処理部５０におけるインクリメント演算によってキャリーアウトが発生する条件は、上述の２３ビットまたは５２ビットがすべて１であることなので、２３ビットまたは５２ビットに対する論理積（ＡＮＤ）演算による遅延が正規化の後に生じる。【００１２】
さらに、例えば浮動小数点フォーマットのデータに対して所定ビット幅で誤り訂正用のパリティビットを算出する場合などには、最終的な指数部の演算結果の取得が遅延すれば、指数部に対するパリティビットのみならず、指数部と仮数部にまたがる部分に対するパリティビットの算出が遅延し、全体的な処理遅延がますます増大する。このような問題は、図１３に示した加減算用の演算処理装置のみではなく、積和演算用の演算処理装置など正規化と丸め処理が行なわれる演算処理装置においては同様に発生する。【００１３】
本発明はかかる点に鑑みてなされたものであり、浮動小数点数の丸め処理に伴うキャリーアウトの発生を迅速に決定し、演算の高速化を図ることができる演算処理装置、情報処理装置、および演算方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記課題を解決するために、本発明は、演算結果の丸め処理の際に、前記演算結果に対して１を増分することにより、キャリーアウトが発生するか否かを出力する演算処理装置において、前記演算を行なう演算手段と、前記演算結果に対するシフト量を算出するシフト量算出手段と、前記シフト量を用いて、前記演算結果に対する正規化処理を行なう正規化処理手段と、前記シフト量を用いて、前記演算結果を所定のシフト量以上シフトした場合に、シフト結果の所定の領域が全て１であることについて、前記正規化処理と並行して予測を行なう予測手段と、前記正規化処理手段による正規化処理結果と、前記予測手段による予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段とを有することを特徴とする。【００１５】
また、本発明は、上記発明において、前記検出手段は、前記シフト量に応じて、前記正規化処理結果又は前記予測結果の何れか一方若しくは両方を用いて前記検出を行なうことを特徴とする。【００１６】
また、本発明は、浮動小数点演算結果の丸め処理の際に、前記浮動小数点演算結果に対して１を増分することにより、キャリーアウトが発生するか否かを出力する演算処理装置において、前記演算を行なう演算手段と、前記演算手段による浮動小数点演算結果に対するシフト量を算出するシフト量算出手段と、演算結果を所定のシフト量の範囲でシフトして、演算結果を正規化する正規化手段と、前記シフト量を用いて、所定シフト量以上のシフトが行なわれた浮動小数点演算結果の所定の領域が全て１であることについて、前記正規化処理と並行して予測を行なう予測手段と、前記正規化処理手段による正規化処理結果と、前記予測手段による予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段とを有することを特徴とする。【００１７】
また、本発明は、上記発明において、前記正規化処理手段は、それぞれ異なったシフト量範囲で前記演算結果をシフトする複数のシフト手段を備えることを特徴とする。【００１８】
また、本発明は、上記発明において、前記複数のシフト手段はそれぞれ、前記シフト量のビット位置に対応してｎの階乗ビット幅分（ｎは正の整数）のシフトを行なうシフト手段であることを特徴とする。【００１９】
また、本発明は、上記発明において、前記浮動小数点演算結果の所定の領域は、前記浮動小数点演算結果の上位ｎビットから、最上位ａビットを除いた第１の領域（ｎ，ａは正の整数）と、前記浮動小数点演算結果の下位ｍビットで、且つ前記所定のシフト量範囲のシフト処理により前記第１の領域にシフトされる可能性がある第２の領域（ｍは正の整数）とであることを特徴とする。【００２０】
また、本発明は、浮動小数点演算結果の丸め処理の際に、前記浮動小数点演算結果の仮数部に対して１を増分することにより、キャリーアウトが発生するか否かを出力する演算処理装置において、前記浮動小数点演算を行なう演算手段と、前記演算手段による浮動小数点演算結果に対するシフト量を算出するシフト量算出手段と、複数のシフト手段を有し、前記シフト量を用いて、前記複数のシフト手段を用いて段階的にシフトを行なうことにより、前記浮動小数点演算結果に対する正規化処理を行なう正規化処理手段と、前記シフト量を用いて、前記正規化処理のうち、所定シフト量以上のシフトによって前記仮数部に留まる第１の領域と前記所定シフト量以上のシフトによって前記仮数部にシフトされる第２の領域それぞれについて、前記シフト後の結果が全て１であることについて予測を行なう予測手段と、前記正規化処理手段による前記正規化処理結果のうち前記所定シフト量未満のシフトによって前記仮数部に留まる第３の領域と、前記正規化処理手段による前記正規化処理結果のうち前記所定シフト量未満のシフトによって前記仮数部にシフトされる第４の領域と、前記予測手段による予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段とを有することを特徴とする。【００２１】
また、本発明は、上記発明において、前記複数のシフト手段はそれぞれ、前記シフト量のビット位置に対応してｎの階乗ビット幅（ｎは正の整数）のシフトを行なうシフト手段であることを特徴とする。【００２２】
また、本発明は、上記発明において、前記第１の領域は、前記浮動小数点演算結果の上位ｎビットから、最上位ａビットを除いた領域であり、前記第２の領域は、前記浮動小数点演算結果の下位ｍビットで、且つ前記所定のシフト量範囲のシフト処理により前記第１の領域にシフトされる可能性がある領域であり、前記第３の領域は前記浮動小数点演算結果の前記最上位ａビットの領域であり、前記第４の領域は前記第１の領域における最下位ｂビットの領域（ａ，ｂ，ｍ，ｎはそれぞれ正の整数）であることを特徴とする。【００２３】
また、本発明は、上記発明において、前記予測手段は、前記第１の領域又は前記第２の領域を前記所定シフト量により分割したデータを入力するとともに、前記入力したデータが全て１であることについて検出を行なう複数の第１の論理積手段と、前記複数の第１の論理積手段それぞれの出力について、前記分割されたデータのそれぞれに対応したシフト量を用いてマスクを行なう複数のマスク手段と、前記複数のマスク手段の出力について、論理積演算を行なう第２の論理積手段とを有することを特徴とする。【００２４】
また、本発明は、上記発明において、前記演算処理装置はさらに、前記浮動小数点演算結果の指数部について増分を行なう増分手段を有し、前記検出手段が前記第１乃至第４の領域が全て１であることについて検出した場合には、前記増分手段により前記演算結果の指数部に１を増分した結果を、前記丸め処理後の前記浮動小数点演算結果の指数部として出力することを特徴とする。【００２５】
また、本発明は、演算を行なう演算手段と、前記演算結果に対するシフト量を算出するシフト量算出手段と、前記シフト量を用いて、前記演算結果に対する正規化処理を行なう正規化処理手段と、前記シフト量を用いて、前記正規化処理手段による正規化処理後の演算結果における所定の領域が全て１であることについて、前記正規化処理と並行して予測を行なう予測手段と、前記正規化処理手段による正規化処理結果と、前記予測手段による予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段と、前記演算結果の丸めを行なう丸め手段とを有する演算処理手段と、前記丸め手段の出力を格納する記憶手段とを備えたことを特徴とする。【００２６】
また、本発明は、演算結果の丸め処理の際に、前記演算結果に対して１を増分することにより、キャリーアウトが発生するか否かを出力する演算方法において、前記演算を行なうステップと、前記演算結果に対するシフト量を算出するステップと、前記シフト量を用いて、前記演算結果に対する正規化処理を行なうステップと、前記シフト量を用いて、前記正規化処理を行なうステップによる正規化処理後の演算結果における所定の領域が全て１であることについて、前記正規化処理と並行して予測を行なうステップと、前記正規化処理結果と、前記予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なうステップとを有することを特徴とする。【００２７】
また、本発明は、浮動小数点演算結果の丸め処理の際に、前記浮動小数点演算結果に対して１を増分することにより、キャリーアウトが発生するか否かを出力する演算方法において、前記演算を行なうステップと、前記浮動小数点演算結果に対するシフト量を算出するステップと、前記シフト量を用いて、段階的にシフトを行なうことにより、前記演算結果に対する正規化処理を行なうステップと、前記シフト量を用いて、前記正規化処理を行なうステップのうち、所定シフト量以上のシフトを行なうシフトの結果、浮動小数点演算結果の所定の領域が全て１であることについて、前記正規化処理と並行して予測を行なうステップと、前記正規化処理結果と、前記予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なうステップとを有することを特徴とする。【００２８】
また、本発明は、浮動小数点演算結果の丸め処理の際に、前記浮動小数点演算結果の仮数部に対して１を増分することにより、キャリーアウトが発生するか否かを出力する演算方法において、前記浮動小数点演算を行なうステップと、前記演算手段による浮動小数点演算結果に対するシフト量を算出するステップと、前記シフト量を用いて、段階的にシフトを行なうことにより、前記浮動小数点演算結果に対する正規化処理を行なうステップと、前記シフト量を用いて、前記正規化処理のうち、所定シフト量以上のシフトによって前記仮数部に留まる第１の領域と前記所定シフト量以上のシフトによって前記仮数部にシフトされる第２の領域それぞれについて、前記シフト後の結果が全て１であることについて予測を行なうステップと、前記正規化処理結果のうち前記所定シフト量未満のシフトによって前記仮数部に留まる第３の領域と、前記正規化処理結果のうち前記所定シフト量未満のシフトによって前記仮数部にシフトされる第４の領域と、前記予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段とを有することを特徴とする。
【発明の効果】
【００２９】
本発明によれば、演算を行ない、演算結果に対するシフト量を算出し、シフト量を用いて、演算結果に対する正規化処理を行ない、シフト量を用いて、演算結果を所定のシフト量以上シフトした場合に、シフト結果の所定の領域が全て１であることについて、正規化処理と並行して予測を行ない、正規化処理結果と、予測結果とを入力し、キャリーアウトが発生することについての検出を行なう。このため、正規化処理の結果が出力されるのを待機することなく、正規化処理と並行してキャリーアウトの発生を検出することができ、丸め処理に伴うキャリーアウトの発生を迅速に決定し、演算の高速化を図ることができる。【００３０】
また、本発明によれば、シフト量に応じて、正規化処理結果又は予測結果の何れか一方若しくは両方を用いて検出を行なうため、正規化処理結果を用いる場合には、より正確にキャリーアウトの発生を検出することができ、予測結果を用いる場合には、より迅速にキャリーアウトの発生を検出することができる。【００３１】
また、本発明によれば、演算を行ない、浮動小数点演算結果に対するシフト量を算出し、演算結果を所定のシフト量の範囲でシフトして、演算結果を正規化し、シフト量を用いて、所定シフト量以上のシフトが行なわれた浮動小数点演算結果の所定の領域が全て１であることについて、正規化処理と並行して予測を行ない、正規化処理結果と、予測結果とを入力し、キャリーアウトが発生することについての検出を行なう。このため、正規化処理の結果が出力されるのを待機することなく、正規化処理と並行してキャリーアウトの発生を検出することができ、浮動小数点数の丸め処理に伴うキャリーアウトの発生を迅速に決定し、演算の高速化を図ることができる。【００３２】
また、本発明によれば、それぞれ異なったシフト量範囲で演算結果をシフトする複数のシフタを備えるため、段階的に演算結果をシフトすることができ、シフト後の大まかなビット位置が早い段階で決定される。【００３３】
また、本発明によれば、シフト量のビット位置に対応してｎの階乗ビット幅分（ｎは正の整数）のシフトを行なうため、段階的なシフトの組み合わせにより、シフト量のビットで表現され得るすべてのシフトを実現することができる。【００３４】
また、本発明によれば、浮動小数点演算結果の所定の領域は、浮動小数点演算結果の上位ｎビットから、最上位ａビットを除いた第１の領域（ｎ，ａは正の整数）と、浮動小数点演算結果の下位ｍビットで、且つ所定のシフト量範囲のシフト処理により第１の領域にシフトされる可能性がある第２の領域（ｍは正の整数）とである。このため、ａビットに対応する細密なシフト量以外の大まかなシフト量について、浮動小数点演算結果の各ビットがシフトされる範囲を特定し、シフト処理後に所定の範囲に含まれるビットがすべて１であるか否かを予測することができる。【００３５】
また、本発明によれば、浮動小数点演算を行い、浮動小数点演算結果に対するシフト量を算出し、複数のシフタを有し、シフト量を用いて、複数のシフタを用いて段階的にシフトを行なうことにより、浮動小数点演算結果に対する正規化処理を行ない、シフト量を用いて、正規化処理のうち、所定シフト量以上のシフトによって仮数部に留まる第１の領域と所定シフト量以上のシフトによって仮数部にシフトされる第２の領域それぞれについて、シフト後の結果が全て１であることについて予測を行ない、正規化処理結果のうち所定シフト量未満のシフトによって仮数部に留まる第３の領域と、正規化処理結果のうち所定シフト量未満のシフトによって仮数部にシフトされる第４の領域と、予測結果とを入力し、キャリーアウトが発生することについての検出を行なう。このため、正規化処理によって仮数部に含まれると予測される第１の領域および第２の領域がすべて１であるか否かの予測結果と、実際の正規化処理後に仮数部に含まれる第３の領域および第４の領域とからキャリーアウト発生の有無を検出することができ、第１の領域および第２の領域に関する予測を正規化処理と並行して行なうことにより、正規化処理後に少ない処理量でキャリーアウトの発生を検出することができる。【００３６】
また、本発明によれば、第１の領域は、浮動小数点演算結果の上位ｎビットから、最上位ａビットを除いた領域であり、第２の領域は、浮動小数点演算結果の下位ｍビットで、且つ所定のシフト量範囲のシフト処理により第１の領域にシフトされる可能性がある領域であり、第３の領域は浮動小数点演算結果の最上位ａビットの領域であり、第４の領域は第１の領域における最下位ｂビットの領域（ａ，ｂ，ｍ，ｎはそれぞれ正の整数）である。このため、第１の領域および第２の領域を大きくし、第３の領域および第４の領域を小さくすることにより、第１の領域および第２の領域に関する予測結果と第３の領域および第４の領域とを用いた正規化処理後に実行されるキャリーアウトの検出の処理量を小さくすることができる。【００３７】
また、本発明によれば、第１の領域又は第２の領域を所定シフト量により分割したデータを入力するとともに、入力したデータが全て１であることについて検出を行ない、それぞれの検出の出力について、分割されたデータのそれぞれに対応したシフト量を用いてマスクを行ない、この出力について、論理積演算を行なう。このため、正規化処理後も所定の範囲に含まれることがないデータをマスクしつつ、必要なデータについてすべて１であるか否かを判定し、第１の領域および第２の領域に関する正確な予測を実行することができる。【００３８】
また、本発明によれば、浮動小数点演算結果の指数部について増分を行ない、第１乃至第４の領域が全て１であることについて検出した場合には、演算結果の指数部に１を増分した結果を、丸め処理後の浮動小数点演算結果の指数部として出力する。このため、仮数部の演算で生じたキャリーアウトを指数部に反映することができ、例えばＩＥＥＥ７５４などの規格に合った浮動小数点数の正確な演算結果を得ることができる。【００３９】
また、本発明によれば、演算を行ない、演算結果に対するシフト量を算出し、シフト量を用いて、演算結果に対する正規化処理を行ない、シフト量を用いて、正規化処理後の演算結果における所定の領域が全て１であることについて、正規化処理と並行して予測を行ない、正規化処理結果と、予測結果とを入力し、キャリーアウトが発生することについての検出を行ない、演算結果の丸めを行ない、この出力を格納する。このため、正規化処理の結果が出力されるのを待機することなく、正規化処理と並行してキャリーアウトの発生を検出することができるとともに、例えば情報処理装置などにおいて、演算結果の丸め処理を行い、処理結果を記憶して利用することができる。
【図面の簡単な説明】
【００４０】
【図１】図１は、実施の形態１に係る演算処理装置の要部構成を示すブロック図である。
【図２】図２は、実施の形態１に係るビット位置の領域を示す図である。
【図３】図３は、実施の形態１に係る左シフタの内部構成を示すブロック図である。
【図４】図４は、実施の形態１に係る予測部の内部構成を示すブロック図である。
【図５】図５は、実施の形態１に係るシフト量分類部の回路構成例を示す図である。
【図６】図６は、実施の形態１に係るマスク生成部の回路構成例を示す図である。
【図７】図７は、実施の形態１に係るブロック判定部の回路構成例を示す図である。
【図８】図８は、実施の形態１に係る他のマスク生成部の回路構成例を示す図である。
【図９】図９は、実施の形態１に係るＣＯ検出部の内部構成を示す図である。
【図１０】図１０は、実施の形態１に係るキャリーアウト有無の予測を示すフロー図である。
【図１１】図１１は、浮動小数点フォーマットを示す図である。
【図１２】図１２は、実施の形態２に係るビット位置の領域を示す図である。
【図１３】図１３は、演算処理装置における浮動小数点数の仮数部に対する処理部の構成を示すブロック図である。
【図１４】図１４は、左シフトによる正規化の例を示す図である。
【符号の説明】
【００４１】
１１０  右シフタ
１２０  絶対値加算器
１３０  ＬＺ予測器
１４０  左シフタ
１４１  第１左シフタ
１４２  第２左シフタ
１４３  第３左シフタ
１５０  丸め処理部
１６０  予測部
１６１、１６４  シフト量分類部
１６１ａ、１６１ｄ  ＡＮＤゲート
１６１ｂ、１６１ｅ  バッファ
１６１ｃ、１６１ｆ  ＯＲゲート
１６２、１６５  マスク生成部
１６３、１６６  ブロック判定部
１６３ａ、１６３ｂ  ＮＡＮＤゲート
１６３ｃ  ＡＮＤゲート
１６７  ＡＮＤゲート
１７０  ＣＯ検出部
１７１  ＡＮＤゲート
【発明を実施するための最良の形態】
【００４２】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。なお、以下においては、左シフトによって正規化を行なう場合について説明するが、本発明は、右シフトの場合にも応用することができる。【００４３】
（実施の形態１）
図１は、本発明の実施の形態１に係る演算処理装置の要部構成を示すブロック図である。同図においては、浮動小数点数の仮数部に対する処理部を示している。図１に示す演算処理装置は、右シフタ１１０、絶対値加算器１２０、ＬＺ（Leading  Zero）予測器１３０、左シフタ１４０、丸め処理部１５０、予測部１６０、およびキャリーアウト検出部（以下「ＣＯ検出部」という）１７０を有している。【００４４】
右シフタ１１０は、オペランドＯＰ１が入力されると、オペランドＯＰ１の桁がオペランドＯＰ２の桁と合うようにオペランドＯＰ１を右シフトする。なお、右シフタ１０は、図示しない指数部に対する処理部からシフト量を取得する。すなわち、右シフタ１０は、オペランドＯＰ１とオペランドＯＰ２の指数部を一致させるのに必要なシフト量を取得し、取得されたシフト量だけオペランドＯＰ１を右シフトする。これにより、オペランドＯＰ１とオペランドＯＰ２の加減算が可能となる。【００４５】
絶対値加算器１２０は、右シフタ１１０によって右シフトされたオペランドＯＰ１とオペランドＯＰ２とを絶対値加算する。本実施の形態においては、絶対値加算器１２０による加算結果のビット数は６４ビットであるものとし、加算結果のビット列を「Ｄ（ｘ：ｙ）」で表す。ただし、ｘは先頭のビット位置であり、ｙは末尾のビット位置である。したがって、例えば絶対値加算器１２０の加算結果全体は「Ｄ（６３：０）」と表記することができる。【００４６】
ＬＺ予測器１３０は、絶対値加算器１２０による絶対値加算の演算結果において先頭に連続するリーディングゼロの桁数を予測し、予測により得られた桁数を左シフト量として左シフタ１４０および予測部１６０へ出力する。本実施の形態においては、発生し得る左シフト量は６０ビット以内であるものとし、左シフト量を示すビット列を「ＳＡ（ｘ：ｙ）」で表す。ただし、ｘは先頭のビット位置であり、ｙは末尾のビット位置である。したがって、最大の左シフト量が６０ビットであることから、左シフト量は６ビットのビット列で表現することができ（なぜなら、２5＜６０＜２6）、「ＳＡ（５：０）」がＬＺ予測器１３０から左シフタ１４０および予測部１６０へ出力される。【００４７】
左シフタ１４０は、ＬＺ予測器１３０から出力された左シフト量だけ絶対値加算結果を左シフトし、リーディングゼロを消去して演算結果の先頭のビットを１とする正規化を行なう。本実施の形態においては、左シフタ１４０による正規化後のビット列を「Ｒ（ｘ：ｙ）」で表す。ただし、ｘは先頭のビット位置であり、ｙは末尾のビット位置である。したがって、丸め処理部１５０における丸め処理の対象となる丸め処理領域を正規化後のビット列の先頭から３２ビットとすれば、このビット列は「Ｒ（６３：３２）」と表すことができる。【００４８】
ここで、本実施の形態におけるビット位置は、図２に示すようになっている。すなわち、絶対値加算器１２０による加算結果のＤ（６３：０）を基準とすると、左シフタ１４０による正規化後の丸め処理領域はＲ（６３：３２）と表される。また、本実施の形態においては、丸め処理時にキャリーアウトが発生するか否かを予測するために、領域１〜４を設定する。具体的には、領域１は、加算結果Ｄ（６３：０）の上位３２ビットから最上位４ビットを除いたＤ（５９：３２）であり、領域２は、加算結果Ｄ（６３：０）の下位３２ビットＤ（３１：０）と２８ビットのパディング領域とを結合した領域である。パディング領域とは、左シフタ１４０による正規化によって、丸め処理領域Ｒ（６３：３２）内にシフトされる可能性がある領域であり、すべてのビットが０からなっている。【００４９】
また、領域３は、正規化後の丸め処理領域Ｒ（６３：３２）の上位４ビットＲ（６３：６０）であり、領域４は、正規化後の丸め処理領域Ｒ（６３：３２）の下位３ビットＲ（３４：３２）である。本実施の形態においては、ＬＺ予測器１３０から出力される左シフト量ＳＡ（５：０）のうちＳＡ（５：２）によって４ビット単位でのシフト量が表されている。このため、４ビット以上のシフト量については、ＳＡ（５：２）から把握することができ、領域３および領域４は、４ビット未満のシフト量に対応する領域とすれば良いが、領域１のビット数を４の倍数（２８ビット）とするために領域３を４ビットとしている。【００５０】
このような領域は、キャリーアウト発生の有無の予測に用いられる。すなわち、領域１は、正規化後も丸め処理領域Ｒ（６３：３２）に留まるか否かが判定され、領域２は、正規化後に丸め処理領域Ｒ（６３：３２）にシフトされるか否かが判定される。これらの領域１および領域２のうち丸め処理領域Ｒ（６３：３２）に入るビットがすべて１、かつ領域３および領域４のビットがすべて１であれば、丸め処理領域Ｒ（６３：３２）のビットがすべて１となるため、丸め処理時のインクリメント演算によってキャリーアウトが発生することになる。【００５１】
ところで、左シフタ１４０は、例えば図３に示すように多段構成となっており、加算結果Ｄ（６３：０）を１６ビット単位でシフトする第１左シフタ１４１、加算結果Ｄ（６３：０）を４ビット単位でシフトする第２左シフタ１４２、および加算結果Ｄ（６３：０）を１ビット単位でシフトする第３左シフタ１４３を有している。【００５２】
第１左シフタ１４１は、ＬＺ予測器１３０から出力される左シフト量の上位２ビットＳＡ（５：４）に応じて、０ビット、１６ビット、３２ビット、または４８ビットのシフトを行なう。具体的には、第１左シフタ１４１は、ＳＡ（５：４）が（０，０）の場合に０ビットのシフトを行ない、（０，１）の場合に１６ビットのシフトを行ない、（１，０）の場合に３２ビットのシフトを行ない、（１，１）の場合に４８ビットのシフトを行なう。つまり、第１左シフタ１４１は、１６（＝４2）ビット幅で左シフトを行なう。【００５３】
第２左シフタ１４２は、左シフト量の中央の２ビットＳＡ（３：２）に応じて、０ビット、４ビット、８ビット、または１２ビットのシフトを行なう。具体的には、第２左シフタ１４２は、ＳＡ（３：２）が（０，０）の場合に０ビットのシフトを行ない、（０，１）の場合に４ビットのシフトを行ない、（１，０）の場合に８ビットのシフトを行ない、（１，１）の場合に１２ビットのシフトを行なう。つまり、第２左シフタ１４２は、４（＝４1）ビット幅で左シフトを行なう。【００５４】
第３左シフタ１４３は、左シフト量の下位２ビットＳＡ（１：０）に応じて、０ビット、１ビット、２ビット、または３ビットのシフトを行なう。具体的には、第３左シフタ１４３は、ＳＡ（１：０）が（０，０）の場合に０ビットのシフトを行ない、（０，１）の場合に１ビットのシフトを行ない、（１，０）の場合に２ビットのシフトを行ない、（１，１）の場合に３ビットのシフトを行なう。つまり、第３左シフタ１４３は、１（＝４0）ビット幅で左シフトを行なう。【００５５】
左シフタ１４０は、上記のような第１〜３左シフタ１４１〜１４３によるシフトの組み合わせによって、加算結果Ｄ（６３：０）を最大で６０ビットシフトし正規化結果Ｒ（６３：０）を出力する。なお、本実施の形態においては、第１〜３左シフタ１４１〜１４３がそれぞれ４の階乗ビット幅で左シフトするものとしたが、４以外の整数の階乗ビット幅で左シフトしても良い。【００５６】
丸め処理部１５０は、正規化結果Ｒ（６３：０）を例えばＩＥＥＥ７５４などの規格に合った桁数に丸め処理して処理結果を出力する。本実施の形態においては、丸め処理部１５０は、３２ビットの丸め処理領域Ｒ（６３：３２）に対して丸め処理を行ない、浮動小数点数の仮数部に相当する処理結果を出力する。【００５７】
予測部１６０は、領域１および領域２を構成する４ビット単位の各ブロックが、左シフタ１４０による正規化後に丸め処理領域Ｒ（６３：３２）内に含まれるか否かを予測し、丸め処理領域Ｒ（６３：３２）内に含まれるビットすべてが１であるか否かを示す予測結果を出力する。予測部１６０については、後に詳述する。【００５８】
ＣＯ検出部１７０は、予測部１６０による予測結果と左シフタ１４０による正規化結果Ｒ（６３：０）の一部のビットとを用いて、丸め処理部１５０における丸め処理時のキャリーアウトの発生を検出し、キャリーアウトが発生する場合には、図示しない指数部に対する処理部へキャリーアウトとして１を出力する。ＣＯ検出部１７０については、後に詳述する。【００５９】
次に、図４から図８を参照して予測部１６０の内部構成および動作を説明する。図４は、予測部１６０の内部構成を示すブロック図である。同図に示す予測部１６０は、シフト量分類部１６１、マスク生成部１６２、およびブロック判定部１６３からなる領域１予測部と、シフト量分類部１６４、マスク生成部１６５、およびブロック判定部１６６からなる領域２予測部と、ＡＮＤゲート１６７とを有している。【００６０】
シフト量分類部１６１は、ＬＺ予測器１３０から出力される左シフト量ＳＡ（５：０）の上位４ビットを用いて、第１左シフタ１４１および第２左シフタ１４２におけるシフト量の指定を分類する。すなわち、シフト量分類部１６１は、ＳＡ（５：４）から第１左シフタ１４１における１６ビット、３２ビット、および４８ビットの左シフトの有無を求めると同時に、ＳＡ（３：２）から第２左シフタ１４２における４ビット、８ビット、および１２ビットの左シフトの有無を求める。【００６１】
具体的には、シフト量分類部１６１は、例えば図５に示すような回路構成を有している。すなわち、シフト量分類部１６１は、ＡＮＤゲート１６１ａ、バッファ１６１ｂ、ＯＲゲート１６１ｃ、ＡＮＤゲート１６１ｄ、バッファ１６１ｅ、およびＯＲゲート１６１ｆを有している。【００６２】
ＡＮＤゲート１６１ａは、ＳＡ（５：０）の上位２ビット（すなわちＳＡ（５）およびＳＡ（４））を入力とし、この２入力がいずれも１である場合に１を出力し、その他の場合に０を出力する。換言すれば、ＡＮＤゲート１６１ａは、第１左シフタ１４１が４８ビットのシフトを行なうか否かを示すビットＳ４８を出力する。【００６３】
バッファ１６１ｂは、ＳＡ（５：０）の最上位ビット（すなわちＳＡ（５））を入力とし、この入力が１である場合に１を出力し、０である場合に０を出力する。換言すれば、バッファ１６１ｂは、第１左シフタ１４１が３２ビット以上のシフトを行なうか否かを示すビットＳ３２を出力する。【００６４】
ＯＲゲート１６１ｃは、ＳＡ（５：０）の上位２ビットを入力とし、この２入力がいずれも０である場合に０を出力し、その他の場合に１を出力する。換言すれば、ＯＲゲート１６１ｃは、第１左シフタ１４１が１６ビット以上のシフトを行なうか否かを示すビットＳ１６を出力する。【００６５】
同様に、ＡＮＤゲート１６１ｄは、ＳＡ（５：０）の中央の２ビット（すなわちＳＡ（３）およびＳＡ（２））を入力とし、この２入力がいずれも１である場合に１を出力し、その他の場合に０を出力する。換言すれば、ＡＮＤゲート１６１ｄは、第２左シフタ１４２が１２ビットのシフトを行なうか否かを示すビットＳ１２を出力する。【００６６】
バッファ１６１ｅは、ＳＡ（５：０）のＳＡ（３）を入力とし、この入力が１である場合に１を出力し、０である場合に０を出力する。換言すれば、バッファ１６１ｅは、第２左シフタ１４２が８ビット以上のシフトを行なうか否かを示すビットＳ８を出力する。【００６７】
ＯＲゲート１６１ｆは、ＳＡ（５：０）の中央の２ビットを入力とし、この２入力がいずれも０である場合に０を出力し、その他の場合に１を出力する。換言すれば、ＯＲゲート１６１ｆは、第２左シフタ１４２が４ビット以上のシフトを行なうか否かを示すビットＳ４を出力する。【００６８】
なお、これらのビットＳ４８、Ｓ３２、Ｓ１６、Ｓ１２、Ｓ８、およびＳ４は、いずれも真である場合に１となり、偽である場合に０となっている。このような回路構成により、シフト量分類部１６１は、ＳＡ（５：０）によって第１左シフタ１４１および第２左シフタ１４２におけるシフト量がどのような条件を満たすか分類している。【００６９】
図４に戻って、マスク生成部１６２は、領域１を構成する４ビットずつのブロックそれぞれが、左シフタ１４０による左シフト後に丸め処理領域Ｒ（６３：３２）内に留まるか否かを判定する。そして、マスク生成部１６２は、左シフト後に丸め処理領域Ｒ（６３：３２）内に留まるブロックに対しては１となり、左シフト後に丸め処理領域Ｒ（６３：３２）内に留まらないブロックに対しては０となるマスクを生成する。【００７０】
具体的には、マスク生成部１６２は、例えば図６に示すような回路を含んでいる。ここでは、領域１はＤ（５９：３２）の２８ビットから構成されているため、４ビットずつのブロックが７個含まれており、上位のブロックから順にブロック６、ブロック５、・・・、ブロック０とする。【００７１】
例えば、ブロック６については、左シフト量が４ビット以下であれば、左シフト後も丸め処理領域Ｒ（６３：３２）に留まることになるため、第１左シフタ１４１および第２左シフタ１４２によるシフト量が０ビットであれば、第３左シフタ１４３におけるシフト量に関わらず丸め処理領域Ｒ（６３：３２）に留まることになる。つまり、第１左シフタ１４１におけるシフト量が１６ビット以上ではなく、かつ第２左シフタ１４２におけるシフト量が４ビット以上ではなければ、ブロック６は左シフト後も丸め処理領域Ｒ（６３：３２）に留まる。このことをシフト量分類部１６１から出力されるビットＳ４８、Ｓ３２、Ｓ１６、Ｓ１２、Ｓ８、およびＳ４によって表現すれば、Ｓ１６およびＳ４がいずれも０（すなわち偽）である場合に、ブロック６に対するマスクｍ６として１を出力する図示した回路が得られる。【００７２】
同様に、ブロック５については、第１左シフタ１４１におけるシフト量が１６ビット以上ではなく、かつ第２左シフタ１４２におけるシフト量が８ビット以上でなければ、最大でもシフト量が７ビットであり、丸め処理領域Ｒ（６３：３２）に留まる。したがって、ブロック５に対するマスクｍ５は、Ｓ１６およびＳ８の反転がいずれも１である場合（すなわち、Ｓ１６およびＳ８がいずれも０である場合）に１となる。【００７３】
ブロック４については、第１左シフタ１４１におけるシフト量が１６ビット以上ではなく、かつ第２左シフタ１４２におけるシフト量が１２ビット以上でなければ、最大でもシフト量が１１ビットであり、丸め処理領域Ｒ（６３：３２）に留まる。したがって、ブロック４に対するマスクｍ４は、Ｓ１６およびＳ１２の反転がいずれも１である場合（すなわち、Ｓ１６およびＳ１２がいずれも０である場合）に１となる。【００７４】
ブロック３については、第１左シフタ１４１におけるシフト量が１６ビット以上でなければ、最大でもシフト量が１５ビットであり、丸め処理領域Ｒ（６３：３２）に留まる。したがって、ブロック３に対するマスクｍ３は、Ｓ１６の反転が１である場合（すなわち、Ｓ１６が０である場合）に１となる。【００７５】
ブロック２については、第１左シフタ１４１におけるシフト量が１６ビット以上ではないか、または第１左シフタ１４１におけるシフト量が１６ビットかつ第２左シフタ１４２におけるシフト量が４ビット以上でなければ、最大でもシフト量が１９ビットであり、丸め処理領域Ｒ（６３：３２）に留まる。したがって、ブロック２に対するマスクｍ２は、Ｓ１６が０であるか、またはＳ１６が１であってかつＳ３２およびＳ４の反転がいずれも１である場合（すなわち、Ｓ３２およびＳ４がいずれも０である場合）に１となる。【００７６】
ブロック１については、第１左シフタ１４１におけるシフト量が１６ビット以上ではないか、または第１左シフタ１４１におけるシフト量が１６ビットかつ第２左シフタ１４２におけるシフト量が８ビット以上でなければ、最大でもシフト量が２３ビットであり、丸め処理領域Ｒ（６３：３２）に留まる。したがって、ブロック１に対するマスクｍ１は、Ｓ１６が０であるか、またはＳ１６が１であってかつＳ３２およびＳ８の反転がいずれも１である場合（すなわち、Ｓ３２およびＳ８がいずれも０である場合）に１となる。【００７７】
ブロック０については、第１左シフタ１４１におけるシフト量が１６ビット以上ではないか、または第１左シフタ１４１におけるシフト量が１６ビットかつ第２左シフタ１４２におけるシフト量が１２ビット以上でなければ、最大でもシフト量が２７ビットであり、丸め処理領域Ｒ（６３：３２）に留まる。したがって、ブロック０に対するマスクｍ０は、Ｓ１６が０であるか、またはＳ１６が１であってかつＳ３２およびＳ１２の反転がいずれも１である場合（すなわち、Ｓ３２およびＳ１２がいずれも０である場合）に１となる。【００７８】
以上のような論理回路によって、マスク生成部１６２は、ブロック６〜０が左シフト後に丸め処理領域Ｒ（６３：３２）に留まる場合には１、留まらない場合には０となるマスクｍ６〜０をビットＳ４８、Ｓ３２、Ｓ１６、Ｓ１２、Ｓ８、およびＳ４から生成する。【００７９】
再度図４に戻って、ブロック判定部１６３は、領域１を構成する各ブロックと各ブロックに対して生成されたマスクｍ６〜０とを用いて、それぞれのブロックを構成する４ビットがすべて１であるか否かを判定する。【００８０】
具体的には、ブロック判定部１６３は、例えば図７に示すような回路構成を有している。すなわち、ブロック判定部１６３は、ＮＡＮＤゲート１６３ａ、ＮＡＮＤゲート１６３ｂ、およびＡＮＤゲート１６３ｃを有している。【００８１】
ＮＡＮＤゲート１６３ａは、各ブロックを構成する４ビットを入力とし、これらの４入力がすべて１である場合に０を出力し、その他の場合に１を出力する。したがって、ＮＡＮＤゲート１６３ａは、各ブロックの４ビットに１ビットでも０があれば１を出力することになる。【００８２】
ＮＡＮＤゲート１６３ｂは、ＮＡＮＤゲート１６３ａの出力と各ブロックに対するマスクｍ６〜０とを入力とし、この２入力がいずれも１である場合に０を出力し、その他の場合に１を出力する。したがって、ＮＡＮＤゲート１６３ｂは、マスクｍ６〜０が０であり、左シフト後に丸め処理領域Ｒ（６３：３２）に留まらないブロック６〜０に関しては、必ず１を出力する。また、ＮＡＮＤゲート１６３ｂは、マスクｍ６〜０が１であり、左シフト後に丸め処理領域Ｒ（６３：３２）に留まるブロック６〜０に関しては、このブロック６〜０を構成する４ビットに１ビットでも０があれば０を出力し、４ビットがすべて１であれば１を出力する。【００８３】
ＡＮＤゲート１６３ｃは、すべてのＮＡＮＤゲート１６３ｂの出力を入力とし、すべての入力が１の場合に判定ビットとして１を出力し、入力に１つでも０がある場合に判定ビットとして０を出力する。すなわち、ＡＮＤゲート１６３ｃは、各ブロック６〜０に対応するＮＡＮＤゲート１６３ｂのうち１つでも０を出力するものがあれば、判定ビットとして０を出力する。これは、マスクｍ６〜０が１であり、かつ４ビット中に１ビットでも０があるブロックがある場合に、判定ビットとして０を出力することを意味している。したがって、ＡＮＤゲート１６３ｃから出力される判定ビットが０であれば、領域１を構成するビットのうち左シフト後も丸め処理領域Ｒ（６３：３２）に留まるビットに０が含まれることになる。反対に、ＡＮＤゲート１６３ｃから出力される判定ビットが１であれば、領域１を構成するビットのうち左シフト後も丸め処理領域Ｒ（６３：３２）に留まるビットはすべて１であることになる。【００８４】
以上のシフト量分類部１６１、マスク生成部１６２、およびブロック判定部１６３からなる領域１予測部によって、領域１のＤ（５９：３２）のうち左シフタ１４０による左シフト後に確実に丸め処理領域Ｒ（６３：３２）に留まるビットがすべて１であるか否かの予測が行なわれることになる。また、領域１と同様に領域２についても領域２予測部による予測が行なわれる。【００８５】
すなわち、シフト量分類部１６４は、シフト量分類部１６１と同様に、ＬＺ予測器１３０から出力される左シフト量ＳＡ（５：０）の上位４ビットを用いて、第１左シフタ１４１および第２左シフタ１４２におけるシフト量の指定を分類する。シフト量分類部１６４は、シフト量分類部１６１と同一の構成（図５参照）を有するため、説明を省略する。なお、図４においては、シフト量分類部１６１とシフト量分類部１６４を別々に設ける構成としたが、領域１予測部および領域２予測部で１つのシフト量分類部を共有しても良い。【００８６】
マスク生成部１６５は、領域２を構成する４ビットずつのブロックそれぞれが、左シフタ１４０による左シフト後に丸め処理領域Ｒ（６３：３２）内にシフトされるか否かを判定する。そして、マスク生成部１６５は、左シフト後に丸め処理領域Ｒ（６３：３２）内へシフトされるブロックに対しては１となり、左シフト後にも丸め処理領域Ｒ（６３：３２）内へシフトされないブロックに対しては０となるマスクを生成する。【００８７】
具体的には、マスク生成部１６５は、例えば図８に示すような回路を含んでいる。ここでは、領域２はＤ（３１：０）と２８ビットのパディング領域とを合わせた６０ビットから構成されているため、４ビットずつのブロックが１５個含まれており、上位のブロックから順にブロック１４、ブロック１３、・・・、ブロック０とする。なお、パディング領域に対応するブロック６〜０は、すべてのビットが０であり同一のブロックである。【００８８】
例えば、ブロック１４については、左シフト量が４ビット以上３２ビット以下であれば、左シフト後に丸め処理領域Ｒ（６３：３２）にシフトされることになるため、第３左シフタ１４３による最大３ビットの左シフトを考慮して、第１左シフタ１４１および第２左シフタ１４２による左シフト量を４ビット以上２８ビット以下にすれば良い。すなわち、第１左シフタ１４１におけるシフト量が０ビットであり、かつ第２左シフタ１４２におけるシフト量が４ビット、８ビット、または１２ビットであるか、第１左シフタ１４１におけるシフト量が１６ビットであり、かつ第２左シフタ１４２におけるシフト量が０ビット、４ビット、８ビット、または１２ビットであれば、ブロック１４は左シフト後も丸め処理領域Ｒ（６３：３２）に留まる。このことをシフト量分類部１６４から出力されるビットＳ４８、Ｓ３２、Ｓ１６、Ｓ１２、Ｓ８、およびＳ４によって表現すれば、Ｓ４およびＳ１６の少なくとも一方が１（すなわち真）であり、かつＳ３２が０（すなわち偽）である場合に、ブロック１４に対するマスクＭ１４として１を出力する図示した回路が得られる。【００８９】
同様に、ブロック１３については、左シフト量が８ビット以上３６ビット以下であれば丸め処理領域Ｒ（６３：３２）に留まるため、第１左シフタ１４１および第２左シフタ１４２による左シフト量が８ビット以上３２ビット以下のときにマスクＭ１３が１になれば良い。このマスクＭ１３は、図８に示す回路によって生成される。【００９０】
以下、ブロック１２〜７も同様に、第３左シフタ１４３による最大３ビットの左シフトを考慮すれば、第１左シフタ１４１および第２左シフタ１４２による左シフトによって領域１のＤ（５９：３２）にシフトされる左シフト量のときに１となるマスクＭ１２〜７を生成すれば良い。また、ブロック６〜０は、すべてのビットが０のパディング領域に対応しており、ブロック６が３２ビットを超えて左シフトされれば、丸め処理領域Ｒ（６３：３２）には必ずパディング領域由来の０が含まれることになる。したがって、第１左シフタ１４１および第２左シフタ１４２によってブロック６が３６ビット以上左シフトされる場合に１となるマスクＭ６が生成されれば、マスクＭ６が１であるときには丸め処理領域Ｒ（６３：３２）に０が含まれることが判明する。このため、ブロック５〜０に対するマスクは不要となるとともに、後述するブロック判定部１６６においては、ブロック１４〜７の判定結果とブロック６に対するマスクＭ６とに基づいた判定を行なえば良いことになる。【００９１】
以上のような論理回路によって、マスク生成部１６５は、ブロック１４〜０が左シフト後に丸め処理領域Ｒ（６３：３２）にシフトされる場合には１、シフトされない場合には０となるマスクＭ１４〜６をビットＳ４８、Ｓ３２、Ｓ１６、Ｓ１２、Ｓ８、およびＳ４から生成する。【００９２】
ブロック判定部１６６は、ブロック判定部１６３と同様に、領域２を構成する各ブロックと各ブロックに対して生成されたマスクＭ１４〜０とを用いて、それぞれのブロックを構成する４ビットがすべて１であるか否かを判定する。ブロック判定部１６６は、ブロック判定部１６３と同一の構成（図７参照）を有するため、説明を省略する。【００９３】
ＡＮＤゲート１６７は、ブロック判定部１６３の出力およびブロック判定部１６６の出力を入力とし、この２入力がいずれも１である場合に１を予測結果として出力し、その他の場合に０を予測結果として出力する。すなわち、ＡＮＤゲート１６７は、領域１および領域２のビットがすべて１である場合に予測結果として１を出力する。【００９４】
なお、以上の予測部１６０による動作は、絶対値加算器１２０およびＬＺ予測器１３０からの出力が得られれば実行可能であるため、左シフタ１４０による左シフトと並行して実行される。そして、予測部１６０により、左シフト後の丸め処理領域Ｒ（６３：３２）の上位４ビット（すなわち領域３）および下位３ビット（すなわち領域４）以外については、すべてのビットが１であるか否かが予測されたことになる。【００９５】
次に、図９を参照してＣＯ検出部１７０の内部構成および動作を説明する。図９に示すように、ＣＯ検出部１７０は、左シフタ１４０から出力される正規化結果Ｒ（６３：０）に含まれる領域３のＲ（６３：６０）、領域４のＲ（３４：３２）、および予測部１６０による予測結果のビットを入力とするＡＮＤゲート１７１から構成されている。【００９６】
本実施の形態においては、領域３は４ビット、領域４は３ビット、予測結果は１ビットであるため、ＡＮＤゲート１７１は、８入力のＡＮＤゲートである。そして、ＡＮＤゲート１７１は、８入力がすべて１である場合に１を出力する。【００９７】
ところで、上述したように予測部１６０は、丸め処理領域Ｒ（６３：３２）の領域３および領域４以外のビットがすべて１である場合に予測結果として１を出力するため、この予測結果と領域３および領域４とを入力することにより、ＡＮＤゲート１７１は、丸め処理領域Ｒ（６３：３２）を構成するビットがすべて１である場合に１を出力することになる。すなわち、左シフタ１４０による左シフト後に得られる丸め処理領域Ｒ（６３：３２）がすべて１であり、丸め処理部１５０における丸め処理時のインクリメント演算によってキャリーアウトが発生する場合に１を出力する。【００９８】
したがって、ＣＯ検出部１７０は、左シフタ１４０による左シフト後の丸め処理領域Ｒ（６３：３２）の３２入力のＡＮＤ演算によって得られるのと同様の結果を、８入力のＡＮＤ演算によって取得し、キャリーアウトを検出する。結果として、浮動小数点数の丸め処理に伴うキャリーアウトの発生を迅速に決定し、演算の高速化を図ることができる。検出されたキャリーアウトは、図示しない指数部に対する処理部へ出力され、指数部がキャリーアウト分の１だけ増分されることになる。【００９９】
次いで、上述したキャリーアウト検出の動作を図１０に示すフロー図を参照しながらまとめておく。ここでは、主に予測部１６０およびＣＯ検出部１７０の動作に着目して説明する。【０１００】
まず、右シフタ１１０の右シフトによって桁合わせされたオペランドＯＰ１およびオペランドＯＰ２が絶対値加算器１２０およびＬＺ予測器１３０へ入力され、ＬＺ予測器１３０によって、絶対値加算器１２０による演算結果のリーディングゼロが予測され、シフト量が予測される（ステップＳ１０１）。予測されたシフト量ＳＡ（５：０）は、左シフタ１４０および予測部１６０へ出力される。【０１０１】
同時に、絶対値加算器１２０によって絶対値加算が行なわれ（ステップＳ１０２）、演算結果Ｄ（６３：０）が左シフタ１４０および予測部１６０へ出力される。【０１０２】
シフト量ＳＡ（５：０）が予測部１６０へ入力されると、シフト量分類部１６１およびシフト量分類部１６４によってシフト量ＳＡ（５：０）の上位４ビットが用いられ、４ビット単位でのシフト量の分類を示すビットＳ４８、Ｓ３２、Ｓ１６、Ｓ１２、Ｓ８、およびＳ４が求められる（ステップＳ１０３、図５参照）。【０１０３】
そして、マスク生成部１６２およびマスク生成部１６５によって、ビットＳ４８、Ｓ３２、Ｓ１６、Ｓ１２、Ｓ８、およびＳ４が用いられ、領域１および領域２を構成する４ビット単位のブロックごとのマスクが生成される（ステップＳ１０４、図６および図８参照）。このマスクは、領域１および領域２を構成するブロックのうち、左シフタ１４０による左シフト後に丸め処理領域Ｒ（６３：３２）に含まれるブロックに対しては１となり、丸め処理領域Ｒ（６３：３２）に含まれないブロックに対しては０となる。【０１０４】
領域１および領域２を構成するすべてのブロックに対するマスクが生成されると、ブロック判定部１６３およびブロック判定部１６６によって、各ブロックに含まれる４ビットがすべて１であるか否か判定される。また、この判定結果に各ブロックに対するマスクが適用され、領域１および領域２それぞれを構成するブロックのうち左シフト後に丸め処理領域Ｒ（６３：３２）に含まれるブロックのビットすべてが１である場合に、ブロック判定部１６３およびブロック判定部１６６によって判定ビットとして１が出力される（ステップＳ１０５、図７参照）。【０１０５】
ブロック判定部１６３およびブロック判定部１６６から出力される判定ビットは、ＡＮＤゲート１６７へ入力され、領域１および領域２の双方についての判定ビットが１である場合に、予測部１６０における予測結果として１が出力される。予測結果が１であるということは、領域１および領域２由来の丸め処理領域Ｒ（６３：３２）に含まれるビットがすべて１であることを示している。この予測結果は、予測部１６０からＣＯ検出部１７０へ出力され、ＣＯ検出部１７０によって取得される（ステップＳ１０６）。【０１０６】
これらの領域１および領域２に対する予測と並行して、左シフタ１４０では、絶対値加算器１２０の演算結果Ｄ（６３：０）に対する左シフトが実行され、正規化結果Ｒ（６３：０）が得られる（ステップＳ１０７）。正規化結果Ｒ（６３：０）の上位４ビットは領域３であり、丸め処理領域Ｒ（６３：３２）の下位３ビットは領域４である。左シフタ１４０による正規化結果Ｒ（６３：０）は、ＣＯ検出部１７０へ入力され、ＣＯ検出部１７０によって、領域３、領域４、および予測結果のビットがすべて１であるか否かが判定される（ステップＳ１０８）。【０１０７】
具体的には、領域３および領域４の７ビットと予測部１６０による予測結果の１ビットとがＣＯ検出部１７０内のＡＮＤゲート１７１へ入力され、入力された８ビットがすべて１であれば１が出力され、１つでも０があれば０が出力される（図９参照）。このとき、ＡＮＤゲート１７１に入力される８ビットがすべて１である場合は（ステップＳ１０８Ｙｅｓ）、丸め処理領域Ｒ（６３：３２）を構成するビットがすべて１であることになり、キャリーアウトが検出され（ステップＳ１０９）、ＡＮＤゲート１７１から出力される１がキャリーアウトとなる。一方、ＡＮＤゲート１７１に入力される８ビットに１ビットでも０がある場合は（ステップＳ１０８Ｎｏ）、丸め処理領域Ｒ（６３：３２）を構成するビットに０が含まれることになり、キャリーアウトが検出されない（ステップＳ１１０）。【０１０８】
以上のように、本実施の形態によれば、絶対値加算の演算結果を構成する４ビット単位のブロックのうち正規化シフト後に仮数部に含まれると予測されるブロックについては、正規化のためのシフト量が得られた時点ですべてのビットが１であるか否か判定しておき、実際の正規化シフト後には、仮数部に対応する上位４ビットおよび下位３ビットとブロックの予測結果とから丸め処理におけるインクリメント演算でキャリーアウトが発生するか否かを判定する。このため、正規化シフトの後に仮数部を構成するすべてのビットの論理積演算を行なうことなく、段数が少ない論理積演算でキャリーアウト発生の有無を検出することができ、浮動小数点数の丸め処理に伴うキャリーアウトの発生を迅速に決定し、演算の高速化を図ることができる。【０１０９】
（実施の形態２）
本発明の実施の形態２の特徴は、ＩＥＥＥ７５４における倍精度の浮動小数点数に対して本発明を適用する点である。【０１１０】
ＩＥＥＥ７５４においては、図１１に示すように単精度の浮動小数点フォーマットと倍精度の浮動小数点フォーマットが規定されている。すなわち、図１１上段に示すように、単精度の浮動小数点フォーマットにおいては、仮数部が２３ビットであるのに対し、図１１下段に示すように、倍精度の浮動小数点フォーマットにおいては、仮数部が５２ビットである。したがって、正規化シフトによって得られる正規化結果から仮数部がすべて１であるか否かを判定するには、従来、５２ビットの膨大なＡＮＤ演算を行なう必要があった。【０１１１】
一方、本発明においては、図１２に示すように領域１〜４を設定し、領域１および領域２の仮数部へシフトされるブロックについては、正規化シフトのシフト量が予測された時点ですべて１であるか否かを判定しておき、領域３および領域４の８ビットと予測結果の１ビットとのＡＮＤ演算により、５２ビットの仮数部がすべて１であるか否かを判定することができる。【０１１２】
本実施の形態に係る演算処理装置の要部構成は、図１に示す演算処理装置と同様であるため、その説明を省略する。ただし、本実施の形態においては図１２に示すように、絶対値加算器１２０の演算結果Ｄ（１２４：０）が１２５ビットであるため、左シフタ１４０は、１２８ビット程度の左シフトを行なう。このため、ＬＺ予測器１３０が予測するシフト量も７ビットで表現され、左シフタ１４０は、シフト量の最上位ビットに応じて０ビットまたは６４ビットシフトする第１左シフタと、シフト量の上位から２番目および３番目のビットに応じて０ビット、１６ビット、３２ビット、または４８ビットシフトする第２左シフタと、シフト量の上位から４番目および５番目のビットに応じて０ビット、４ビット、８ビット、または１２ビットシフトする第３左シフタと、シフト量の下位２ビットに応じて０ビット、１ビット、２ビット、または３ビットシフトする第４左シフタとを有している。なお、以下では、第１左シフタによる０ビットまたは６４ビットのシフトが実行された後の動作について考える。【０１１３】
また、ＬＺ予測器１３０によるリーディングゼロの予測は、最大で１ビットの誤差が生じることがあるため、左シフタ１４０は、第４左シフタの後段に先頭の１ビットを確実に１とする１ビットシフタを備えている。この１ビットシフタは、第４左シフタによる左シフトの結果を参照し、先頭の１ビットが１であれば第４左シフタの出力をそのまま出力し、先頭の１ビットが０であれば第４左シフタの出力をさらに１ビット左シフトして出力する。【０１１４】
ここで、再度図１２を参照して、本実施の形態における領域の設定について説明する。本実施の形態においては、絶対値加算器１２０による加算結果のＤ（１２４：０）を基準とすると、左シフタ１４０による正規化後の丸め処理領域は、５２ビットの仮数部に先頭の１を加えたＲ（１２４：７２）の５３ビットで表される。また、領域１は、加算結果Ｄ（１２４：０）の上位５３ビットから最上位４ビットを除いたＤ（１２０：７２）であり、領域２は、加算結果Ｄ（１２４：０）の領域１に連続するＤ（７１：１２）である。本実施の形態においては、実施の形態１と異なり、パディング領域は不要である。【０１１５】
また、領域３は、正規化後の丸め処理領域Ｒ（１２４：７２）の上位４ビットＲ（１２４：１２１）であり、領域４は、正規化後の丸め処理領域Ｒ（１２４：７２）の下位４ビットＲ（７５：７２）である。本実施の形態においては、ＬＺ予測器１３０による１ビットの予測誤差を考慮するため、領域３および領域４を４ビットとし、ＬＺ予測器１３０の予測誤差のため左シフト１４０の１ビットシフタが追加で１ビット左シフトする場合にも対応している。この結果、領域１のビット数が４９ビットで４の倍数ではなくなるが、領域３を大きくすればするほど、最終的なＣＯ検出部１７０におけるＡＮＤ演算の演算量が多くなるため、本実施の形態においては、領域１のビット数を４９ビットのままとする。【０１１６】
これらの領域は、実施の形態１と同様に、キャリーアウト発生の有無の予測に用いられる。すなわち、領域１は、正規化後も丸め処理領域Ｒ（１２４：７２）に留まるか否かが判定され、領域２は、正規化後に丸め処理領域Ｒ（１２４：７２）にシフトされるか否かが判定される。これらの領域１および領域２のうち丸め処理領域Ｒ（１２４：７２）に入るビットがすべて１、かつ領域３および領域４のビットがすべて１であれば、丸め処理領域Ｒ（１２４：７２）のビットがすべて１となるため、丸め処理時のインクリメント演算によってキャリーアウトが発生することになる。【０１１７】
すなわち、本実施の形態においても実施の形態１と同様に、予測部１６０は、領域１および領域２を構成する４ビット単位の各ブロックが、左シフタ１４０による正規化後に丸め処理領域Ｒ（１２４：７２）内に含まれるか否かを予測し、丸め処理領域Ｒ（１２４：７２）内に含まれるビットすべてが１であるか否かを示す予測結果を出力する。なお、本実施の形態に係る予測部１６０の内部構成は、実施の形態１の予測部１６０（図４参照）と同様であるため、その説明を省略する。【０１１８】
ただし、本実施の形態においては、領域１が４９ビットであるため、４ビット単位のブロック１２個と１ビットのブロック１個との合計１３個のブロックに対してマスク生成部１６２によってマスクが生成され、ブロック判定部１６３による判定が行なわれる。【０１１９】
また、本実施の形態においては、領域１が４９ビットであるため、領域２を構成する各ブロックが４ビット単位でシフトされる場合に、領域１の先頭の１ビットにも領域２からシフトされたビットが含まれる可能性がある。このため、ブロック判定部１６６は、領域２を構成するブロックについては、ブロックを構成する４ビットとブロック直前の１ビットとがすべて１であるか否かを判定する。すなわち、本実施の形態におけるブロック判定部１６６においては、図７に示したＮＡＮＤゲート１６３ａが５入力のＮＡＮＤゲートに代えられている。このとき、領域２の最上位のブロックについては、直前の１ビットが領域１に含まれており、別途ブロック判定部１６３において判定されているため、領域２の最上位のブロックのみについては、実施の形態１と同様に４入力のＮＡＮＤゲートを用いても良い。【０１２０】
このような予測部１６０によって、実施の形態１と同様に、領域１および領域２のビットがすべて１である場合に予測結果として１が出力される。この予測部１６０による動作は、絶対値加算器１２０およびＬＺ予測器１３０からの出力が得られれば実行可能であるため、左シフタ１４０による左シフトと並行して実行される。そして、予測部１６０により、左シフト後の丸め処理領域Ｒ（１２４：７２）の上位４ビット（すなわち領域３）および下位４ビット（すなわち領域４）以外については、すべてのビットが１であるか否かが予測されたことになる。【０１２１】
そして、実施の形態１と同様に、ＣＯ検出部１７０によって、左シフタ１４０による左シフト後に得られた領域３の４ビットおよび領域４の４ビットと予測部１６０による予測結果の１ビットとがすべて１である場合には、キャリーアウトの発生が検出され、１が出力される。換言すれば、ＣＯ検出部１７０は、左シフタ１４０による左シフト後の丸め処理領域Ｒ（１２４：７２）の５３入力のＡＮＤ演算によって得られるのと同様の結果を、９入力のＡＮＤ演算によって取得し、キャリーアウトを検出する。【０１２２】
以上のように、本実施の形態によれば、絶対値加算の演算結果を構成する４ビット単位のブロックのうち正規化シフト後に仮数部に含まれると予測されるブロックについては、正規化のためのシフト量が得られた時点ですべてのビットが１であるか否か判定しておき、実際の正規化シフト後には、仮数部に対応する上位４ビットおよび下位４ビットとブロックの予測結果とから丸め処理におけるインクリメント演算でキャリーアウトが発生するか否かを判定する。このため、正規化シフトの後に仮数部を構成するすべてのビットの論理積演算を行なうことなく、段数が少ない論理積演算でキャリーアウト発生の有無を検出することができ、ＩＥＥＥ７５４における倍精度の浮動小数点数に対しても、浮動小数点数の丸め処理に伴うキャリーアウトの発生を迅速に決定し、演算の高速化を図ることができる。【０１２３】
なお、上記各実施の形態においては、４ビット単位の左シフトに関して、領域１および領域２が左シフト後も丸め処理領域に含まれるか否かを予測するものとしたが、この予測は４ビット単位に限定されない。すなわち、正規化シフトのシフト量を示すビット列の一部から複数ビット単位のシフト量が明確になる場合には、このビット単位で領域１および領域２を構成する各ブロックに対する予測をすれば良い。この場合には、シフト量の単位となるビット数に応じて領域３および領域４の大きさも適宜変更すれば良い。【０１２４】
要するに、本発明においては、演算結果の正規化シフトによって丸め処理領域に含まれる可能性がある領域を領域１および領域２とし、これらの領域については正規化シフトのシフト量から丸め処理領域に含まれるか否かを予測するとともに、すべてのビットが１であるか否かを正規化シフトと同時に判定しておく。そして、丸め処理領域の先頭および末尾の数ビットをそれぞれ領域３および領域４とし、これらの領域については正規化シフト後にすべてのビットが１であるか否かを判定する。これらの判定を総合することにより、正規化シフト後には、領域３および領域４に対応する数ビット程度の論理積演算により、丸め処理においてキャリーアウトが発生するか否かを予測することができる。【０１２５】
また、上記各実施の形態においては、丸め処理部１５０による処理結果を例えばメモリなどの記憶手段に格納し、情報処理装置などにおける情報処理に使用することができる。
【産業上の利用可能性】
【０１２６】
本発明は、浮動小数点数の丸め処理に伴うキャリーアウトの発生を迅速に決定し、演算の高速化を図る場合に適用することができる。
【図１】
2008096446.tif 000003
【図２】
2008096446.tif 000004
【図３】
2008096446.tif 000005
【図４】
2008096446.tif 000006
【図５】
2008096446.tif 000007
【図６】
2008096446.tif 000008
【図７】
2008096446.tif 000009
【図８】
2008096446.tif 000010
【図９】
2008096446.tif 000011
【図１０】
2008096446.tif 000012
【図１１】
2008096446.tif 000013
【図１２】
2008096446.tif 000014
【図１３】
2008096446.tif 000015
【図１４】
2008096446.tif 000016
【国際調査報告】
2008096446.tif 000017
2008096446.tif 000018