(57)【要約】【課題】除算の商を高速に算出すること。【解決手段】ｍビットのレジスタを備えたプロセッサにより除数の逆数に被除数を乗じて商を導出するデータ処理方法において、上記除数に基づき、正規化係数ｎを導出し（ステップＳ１１）、上記除数に基づき、有効ｎビットの正規化逆数を導出し（ステップＳ１２）、上記被除数及び上記ステップＳ１１で導出した上記正規化係数ｎに基づき、多くとも有効ｍ−ｎビットの正規化被除数を導出し（ステップＳ１３）、上記ステップＳ１３で導出した上記正規化被除数と上記ステップＳ１２で導出した上記正規化逆数とを乗じ、多くとも有効ｍビットの乗算結果を導出し（ステップＳ１４）、上記ステップＳ１１で導出した上記正規化係数ｎに基づき、上記ステップＳ１４で導出した上記乗算結果から商を導出する（ステップＳ１５）。【選択図】図１
2010033275.tif 000002
【特許請求の範囲】
【請求項１】
ｍビットのレジスタを備えたプロセッサにより除数の逆数に被除数を乗じて商を導出するデータ処理方法において、
上記除数に基づき、正規化係数ｎを導出する第１のデータ処理ステップと、
上記除数に基づき、有効ｎビットの正規化逆数を導出する第２のデータ処理ステップと、
上記被除数及び上記第１のデータ処理ステップで導出した上記正規化係数ｎに基づき、多くとも有効ｍ−ｎビットの正規化被除数を導出する第３のデータ処理ステップと、
上記第３のデータ処理ステップで導出した上記正規化被除数と上記第２のデータ処理ステップで導出した上記正規化逆数とを乗じ、多くとも有効ｍビットの乗算結果を導出する第４のデータ処理ステップと、
上記第１のデータ処理ステップで導出した上記正規化係数ｎに基づき、上記第４のデータ処理ステップで導出した上記乗算結果から商を導出する第５のデータ処理ステップと、
を実行することを特徴とするデータ処理方法。
【請求項２】
上記第１のデータ処理ステップは、上記除数に対し該除数が２ｎ以上２ｎ＋１未満となる正規化係数ｎがデータとして格納されたメモリから、上記除数に対するデータを読み出すことにより、上記正規化係数ｎを導出することを特徴とする請求項１に記載のデータ処理方法。
【請求項３】
上記第１のデータ処理ステップは、上記除数に基づいて、上記除数が２ｎ以上２ｎ＋１未満となる正規化係数ｎを演算することによって、上記正規化係数ｎを導出することを特徴とする請求項１に記載のデータ処理方法。
【請求項４】
上記第２のデータ処理ステップは、上記除数に対し該除数の逆数と２２ｎを乗じて得られる有効ｎビットの正規化逆数がデータとして格納されたメモリから、上記除数に対するデータを読み出すことにより、上記正規化逆数を導出することを特徴とする請求項１に記載のデータ処理方法。
【請求項５】
上記第２のデータ処理ステップは、上記除数及び上記第１のデータ処理ステップで導出した上記正規化係数ｎに基づいて、上記除数の逆数と２２ｎとを乗じる演算を行うことによって、上記有効ｎビットの正規化逆数を導出することを特徴とする請求項１に記載のデータ処理方法。
【請求項６】
上記第３のデータ処理ステップは、上記第１のデータ処理ステップで導出した上記正規化係数ｎに基づき、上記被除数に２−ｎを乗じることによって、多くとも有効ｍ−ｎビットの上記正規化被除数を導出することを特徴とする請求項１に記載のデータ処理方法。
【請求項７】
上記第５のデータ処理ステップは、上記第１のデータ処理ステップで導出した上記正規化係数ｎに基づき、上記第４のデータ処理ステップで導出した上記乗算結果に２−ｎを乗じることによって、多くとも有効ｍ−ｎビットの上記商を導出することを特徴とする請求項１に記載のデータ処理方法。
【請求項８】
ｍビットのレジスタを備え、除数の逆数に被除数を乗じて商を導出するデータ処理プロセッサにおいて、
上記除数を入力として、正規化係数ｎ及び有効ｎビットの正規化逆数を出力する第１の拡張ＡＬＵと、
上記被除数と、上記第１の拡張ＡＬＵから出力された上記正規化係数ｎ及び上記正規化逆数とを入力として、商を出力する第２の拡張ＡＬＵと、
の少なくとも一方を備えることを特徴とするデータ処理プロセッサ。
【請求項９】
上記第１の拡張ＡＬＵは、上記除数に対し該除数が２ｎ以上２ｎ＋１未満となる正規化係数ｎがデータとして格納されたメモリを備え、該メモリから上記入力された除数に対するデータを読み出すことによって、上記正規化係数ｎを出力することを特徴とする請求項８に記載のデータ処理プロセッサ。
【請求項１０】
上記第１の拡張ＡＬＵは、上記入力された除数に基づいて、上記除数が２ｎ以上２ｎ＋１未満となる正規化係数ｎを演算することによって、上記正規化係数ｎを導出して出力することを特徴とする請求項８に記載のデータ処理プロセッサ。
【請求項１１】
上記第１の拡張ＡＬＵは、上記除数に対し該除数の逆数と２２ｎを乗じて得られる有効ｎビットの正規化逆数がデータとして格納されたメモリを備え、該メモリから上記入力された除数に対するデータを読み出すことによって、上記正規化逆数を出力することを特徴とする請求項８に記載のデータ処理プロセッサ。
【請求項１２】
上記第１の拡張ＡＬＵは、上記入力された除数及び上記出力する正規化係数ｎに基づいて、上記除数の逆数と２２ｎとを乗じる演算を行うことによって、上記有効ｎビットの正規化逆数を導出して出力することを特徴とする請求項８に記載のデータ処理プロセッサ。
【請求項１３】
上記第２の拡張ＡＬＵは、上記入力された被除数と上記正規化逆数とを乗じ、その乗算結果に対して、上記正規化係数ｎに基づいてさらに２−２ｎを乗じることにより、多くとも有効ｍ−ｎビットの上記商を導出して出力することを特徴とする請求項８に記載のデータ処理プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、除数の逆数を被除数に乗ずることにより商を得るデータ処理方法及びデータ処理プロセッサに関する。
【背景技術】
【０００２】
プロセッサにおける除算処理の高速化手法として、除数の逆数を予め書き込んだメモリを備え、該メモリから除数に対応する逆数を読み出し、その読み出した逆数と被除数とを乗ずることにより除算結果を得る手法が公知である（例えば、特許文献１参照）。
【特許文献１】特開平２−２４２４２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
図１２は、上記特許文献１において除数の逆数と被除数を乗じた結果のデータサイズがプロセッサの１ワード、すなわちプロセッサのレジスタサイズを超える場合の処理フローを示す図である。
【０００４】
ここで、正規化係数が１ワードサイズのレジスタＲ０に、被除数が１ワードサイズのレジスタＲ１に、除数が１ワードサイズのレジスタＲ２に、それぞれ格納されているものとする。まず、レジスタＲ０に格納されている正規化係数に基づいて、レジスタＲ２に格納されている除数の桁シフトを実行することで、メモリアドレスを導出して、１ワードサイズのレジスタＲ３に格納する（ステップＳ１）。次に、そのレジスタＲ３に格納したメモリアドレスをメモリに与え、該メモリからそのメモリアドレスに書き込まれている除数の逆数を読み出して、１ワードサイズのレジスタＲ４に格納する（ステップＳ２）。
【０００５】
ここで、レジスタＲ４に格納した除数の逆数とレジスタＲ１に格納されている被除数の有効ビット数の合計が１ワードのビット数を超える場合には、それら除数の逆数と被除数の乗算結果は１ワードを超えてしまうため、その乗算結果を格納するために少なくとも２ワード分のレジスタが必要になる。一般的なプロセッサにおいて、複数のレジスタに対して乗算結果を格納するためには、それぞれのレジスタに対して乗算を実行する必要がある。したがって、２ワード分のレジスタに対する乗算を実行し、それぞれの乗算結果をレジスタＲ５，Ｒ６に格納する（ステップＳ３，Ｓ４）。一般的にプロセッサによる乗算の実行には複数サイクル要するため、乗算の複数回実行は除算処理の高速化の妨げとなっている。
【０００６】
また、レジスタＲ４に格納した除数の逆数に小数点以下のデータが含まれる場合には、これらレジスタＲ５，Ｒ６に格納した２ワード分の乗算結果の何れか一方にも小数点以下のデータが含まれる。したがって、商として必要なデータ精度が１ワード以内の精度であっても、商を得るためには２ワード分の乗算結果が格納されている２つのレジスタＲ５，Ｒ６に対してデータ操作を実行しなければならない。いま、一方のレジスタＲ６に格納した乗算結果に小数データが含まれるとすると、その乗算結果の小数点以下のデータを桁シフトによって削除して、一時データとして１ワードサイズのレジスタＲ７に格納し（ステップＳ５）、商の上位ビットとなるデータを、他方のレジスタＲ５に格納した乗算結果からこのレジスタＲ７に格納した一時データにコピーすることにより、このレジスタＲ７に格納した一時データを商として出力する。このような複数の演算結果を格納するための複数のレジスタＲ５，Ｒ６に対するデータ操作の実行もまた、除算処理の高速化の妨げとなっている。
【０００７】
本発明は、上記の点に鑑みてなされたもので、除算の商を高速に算出することが可能なデータ処理方法及びデータ処理プロセッサを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明のデータ処理方法の一態様は、ｍビットのレジスタを備えたプロセッサにより除数の逆数に被除数を乗じて商を導出するデータ処理方法において、上記除数に基づき、正規化係数ｎを導出する第１のデータ処理ステップと、上記除数に基づき、有効ｎビットの正規化逆数を導出する第２のデータ処理ステップと、上記被除数及び上記第１のデータ処理ステップで導出した上記正規化係数ｎに基づき、多くとも有効ｍ−ｎビットの正規化被除数を導出する第３のデータ処理ステップと、上記第３のデータ処理ステップで導出した上記正規化被除数と上記第２のデータ処理ステップで導出した上記正規化逆数とを乗じ、多くとも有効ｍビットの乗算結果を導出する第４のデータ処理ステップと、上記第１のデータ処理ステップで導出した上記正規化係数ｎに基づき、上記第４のデータ処理ステップで導出した上記乗算結果から商を導出する第５のデータ処理ステップと、を実行することを特徴とする。
【０００９】
また、本発明のデータ処理プロセッサの一態様は、ｍビットのレジスタを備え、除数の逆数に被除数を乗じて商）を導出するデータ処理プロセッサにおいて、上記除数を入力として、正規化係数ｎ及び有効ｎビットの正規化逆数を出力する第１の拡張ＡＬＵと、上記被除数と、上記第１の拡張ＡＬＵから出力された上記正規化係数ｎ及び上記正規化逆数とを入力として、商を出力する第２の拡張ＡＬＵと、の少なくとも一方を備えることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、除数の逆数のデータの有効ビットと被除数のデータの有効ビットとの合計を、プロセッサが備えるレジスタのビット幅以下に抑えるように、正規化逆数と、正規化被除数と正規化係数と、を導出することにより、除算の商を高速に算出することが可能なデータ処理方法及びデータ処理プロセッサを提供することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明を実施するための最良の形態を図面を参照して説明する。
【００１２】
［第１実施形態］
図１は、本発明の第１実施形態に係るデータ処理方法の処理フローを示す図である。この処理フローをプログラムとしてプロセッサに実行させることにより、商の算出を高速化する。以下の説明では、この処理フローをｍビットのレジスタを備えたプロセッサにて実行することを前提とする。
【００１３】
ここで、被除数が１ワード（ｍビット）のレジスタＲ０に、除数が１ワード（ｍビット）のレジスタＲ１に、それぞれ格納されているものとする。まず、そのｍビットのレジスタＲ１に格納されている除数をアドレスとして図示しないメモリに与え、該メモリに予め格納されている正規化係数ｎを読み出して、ｍビットのレジスタＲ３に格納する（ステップＳ１１）。ここで、正規化係数ｎとは、２ｎ≦除数＜２ｎ＋１を満たす整数であり、メモリに入力するアドレス（入力＝Ｒ１）と出力されるデータ（出力＝Ｒ３）の関係は、図２に示す通りである（ｍ＝３２の場合）。例えば、除数を１０進数の「１，０００」とすれば、２９≦１，０００≦２１０であるので、正規化係数ｎとしては１０進数の「９」が導出される。
【００１４】
なお、図１では、ｍビットのレジスタＲ１に格納されている除数に対応する正規化係数ｎを導出するためにメモリを用いているが、図３に示す処理フローチャート（ｍ＝３２の場合）をプログラム化し、演算によって正規化係数ｎを導出するようにしても構わない。このようにした場合には、メモリの使用量を削減することにより、低コストのシステムを提供することができる。
【００１５】
即ち、図３の処理フローチャートでは、ｍビットのレジスタＲ１に格納されている除数の入力を受けて（ステップＳ１１１）、まず、正規化係数ｎを格納するためのレジスタＲ３に初期値として「３１（＝ｍ−１）」を設定する（ステップＳ１１２）。そして、ｍビットのレジスタＲ１に格納されている除数のＭＳＢが「０」であるかどうかの判定を行う（ステップＳ１１３）。ここで、ＭＳＢが「０」の場合には、ｍビットのレジスタＲ１に格納されている除数を１ビット左シフトし（ステップＳ１１４）、ｍビットのレジスタＲ３に格納する正規化係数ｎを「１」デクリメントした後に（ステップＳ１１５）、上記ステップＳ１１３の除数のＭＳＢ判定処理に戻る。従って、例えばｍビットのレジスタＲ１に格納されている除数が上記「１，０００」である場合には、ｍビットのレジスタＲ３に格納する正規化係数ｎが「３１」から「９」となるまでステップＳ１１３〜ステップＳ１１５のループを繰り返すこととなる。そして、除数のＭＳＢが「０」でなくなったならば（ステップＳ１１３）、ｍビットのレジスタＲ３に格納されている値が、正規化係数ｎの値として出力されることとなる（ステップＳ１１６）。なお、図３の処理フローチャートにおいては、ｍビットのレジスタＲ１に格納されている除数が「０」になるケース（「０」で除算するケース）は予め排除しておかなければならない。
【００１６】
あるいは、上記正規化係数ｎを導出するために、メモリではなく演算回路を備えても構わない。例えば、図２に示すようなプライオリティエンコーダ（ｍ＝３２の例）を回路化し、ｍビットのレジスタＲ１に格納されている除数に対応する正規化係数ｎを演算回路によって導出することも可能である。このようにした場合も、メモリの使用量を抑えつつ、処理の高速化を図ることができる。
【００１７】
図１に戻り説明を続けると、上記のようにして正規化係数ｎを導出してｍビットのレジスタＲ３に格納したならば、次に、上記ｍビットのレジスタＲ１に格納されている除数をアドレスとして図示しないメモリに与え、該メモリに予め格納されている正規化逆数を読み出して、ｍビットのレジスタＲ２に格納する（ステップＳ１２）。ここで、正規化逆数とは、除数の逆数を２２×ｎ倍したｎビットの整数である。
【００１８】
このｍビットのレジスタＲ２に格納する正規化逆数は、次のようにして導出する。  
図４は、除数（Ｒ１）のデータ範囲（２ｎ≦除数（Ｒ１）＜２ｎ＋１）に対する正規化係数ｎ（Ｒ３）と除数の逆数（１／Ｒ１）のデータ範囲をそれぞれ記した表を示す図である。２進数表記では小数が２の負のべき乗で表現され、小数の精度を高めるほど、小数点以下のデータのビット幅が増加する。図４に示す通り、２ｎ≦除数（Ｒ１）＜２ｎ＋１の範囲の除数の逆数（１／Ｒ１）は、少なくともｎ（Ｒ３）ビット以上の小数データにより表現される。一般的に、２進数では小数データとして使用可能なビットサイズが制限されるため、小数のデータ精度を保つためには最も重みのあるビット、即ち小数データの上位ビットから所望するサイズのデータを取り出すことが好ましい。しかし、図４に示す通り、ｎ（Ｒ３）≧１では２ｎ≦除数（Ｒ１）＜２ｎ＋１の範囲の除数の逆数（１／Ｒ１）は、小数データのうち上位ｎ−１ビットは常に「０」である。したがって、小数データのうちｎ−１ビット以上のビットは無効なデータ、ｎビット以下のビットを有効なデータとみなす。この有効な小数データを取り出すために、本実施形態においては、小数データに２２×ｎを乗じ、その乗算結果の整数部を取り出す。この乗算結果の整数部は、有効なデータかつ最も重みのあるデータであり、図５に示す通り、常にｎ（Ｒ３）ビット以下の整数である。本実施例では、このｎビットの整数部を正規化逆数として導出し、レジスタＲ２に格納する。
【００１９】
なお、図１態においては、メモリに除数（Ｒ１）に対応する正規化逆数（Ｒ２）がデータとして格納されていて、ｍビットのレジスタＲ１に格納されている除数から直接的に正規化逆数が導出できるため、正規化係数ｎ（Ｒ３）を入力する必要はない。これに対して、正規化逆数をそのようにメモリに予め格納されるデータとして導出するのではなく、メモリを使用せずに、除数の逆数（１／Ｒ１）である小数データに２２×ｎを乗じる演算を行って整数部を取り出すことにより算出することも可能である。そのような場合には、ｍビットのレジスタＲ３に格納した正規化係数ｎの入力が必要となることは言うまでもない。また、正規化逆数をデータとして格納するメモリは必ずしもＲＯＭとして備える必要はなく、任意のタイミングでプロセッサがメモリのデータを更新するようにしてもよい。
【００２０】
なお、正規化逆数を演算により導出する場合に得られる高速化の効果は、以下の理由により、除数が一定で被除数が異なる除算を複数回実行する場合に限られる。即ち、除算の実行サイクル数ｓと、乗算の実行サイクル数ｔとの関係は、一般的に、ｓ＞ｔである。いま、除数（Ｒ１）が一定のまま商を導出する回数をｘ、その実行サイクル数をｙとすると、被除数（Ｒ０）と除数（Ｒ１）との除算を実行することにより商を導出する処理はｙ＝ｓｘ、除数（Ｒ１）の逆数（１／Ｒ０）を算出するために除算を実行し、さらに被除数（Ｒ０）にその逆数（１／Ｒ０）を乗じることにより商を導出する処理はｙ＝ｔｘ＋ｓと表すことができる。図６に示す通り、商を導出する処理の１回目は、前者の実行サイクル数の方が少ない。しかし、ｓ＞ｔであるので、ｙ＝ｓｘとｙ＝ｔｘ＋ｓの大小関係は、商を導出する処理を複数回（ｘ＞１）実行すれば逆転する。したがって、正規化逆数（Ｒ２）を除算により導出する場合は、正規化逆数（Ｒ２）が一定、即ち除数（Ｒ１）が一定であり被除数（Ｒ０）が異なる除算を複数回実行する場合に高速化の効果が得られる。
【００２１】
ここで、除数（Ｒ１）から導出される正規化逆数（Ｒ２）の具体例を説明する。いま、ｍビットのレジスタＲ１に格納されている除数が１０進数の「１，０００」であるとして正規化逆数（Ｒ２）を導出する場合を例として説明する。
【００２２】
除数である「１，０００」は上述した通り２９≦１，０００＜２１０であるため、正規化係数ｎは「９」と導かれる。この正規化係数ｎに基づいて、除数「１，０００」の逆数である「１／１，０００」を２２×９倍する（小数点を２×９桁、右シフトする）と、以下のような結果となる。
【００２３】
（1／1,000）×２２×９＝0.001（１０進数）×２２×９
＝0.00000000010000011000・・・（２進数）≪18
＝100000110.00・・・（２進数）
＝262.1・・・（１０進数）
この結果の整数「２６２」が除数「１，０００」の正規化逆数（Ｒ２）となる。なお、整数部を取り出す際の小数部に対する処理は、丸め処理、切り捨て処理や切り上げ処理など、任意の処理を施して構わない。図１の例では、図示しないメモリには、このような除数（Ｒ１）＝１，０００に対する正規化逆数（Ｒ２）＝２６２というように、除数（Ｒ１）の値で示されるアドレスに正規化逆数（Ｒ２）の値を予め格納してある。
【００２４】
図１に戻り説明を続けると、上記のようにして正規化逆数を導出してｍビットのレジスタＲ２に格納したならば、次に、上記ステップＳ１１で導出してｍビットのレジスタＲ３に格納した正規化係数ｎに基づいて、上記ｍビットのレジスタＲ０に格納されている被除数を２−ｎ倍（ｎビット右シフト）し、その結果を正規化被除数としてｍビットのレジスタＲ４に格納する（ステップＳ１３）。この処理は、除算で算出される剰余を捨てることを意味し、商を算出する上では演算精度に影響は無い。このとき、正規化被除数の有効ビットはｍ−ｎビットの整数である。
【００２５】
次に、そのｍビットのレジスタＲ４に格納した正規化被除数と上記ステップＳ１２で導出してｍビットのレジスタＲ２に格納した正規化逆数の乗算を実行し、その乗算結果をｍビットのレジスタＲ５に格納する（ステップＳ１４）。このとき、ｍ−ｎビットの正規化被除数（Ｒ４）と、ｎビットの正規化逆数（Ｒ２）の乗算であるため、乗算結果の有効ビット数はｍ（＝ｍ−ｎ＋ｎ）ビットとなる。したがって、乗算結果はプロセッサの１ワード分のレジスタＲ５に収まり、乗算の実行は１回で済む。
【００２６】
そして、上記ステップＳ１１で導出してｍビットのレジスタＲ３に格納した正規化係数ｎに基づいて、このｍビットのレジスタＲ５に格納した乗算結果を２−ｎ倍（ｎビット右シフト）し、その結果を商としてｍビットのレジスタＲ６に格納し、出力する（ステップＳ１５）。この処理は、ｍビットのレジスタＲ５に格納した乗算結果の小数部の切り捨てに相当するが、必要に応じて丸め処理を施しても構わない。上記ステップＳ１４における乗算結果（Ｒ５）はプロセッサの１ワードに収まっているため、この乗算結果から商を取り出すためのビット操作は、ステップＳ１４における１つのレジスタＲ５に対するビット操作だけで済む。
【００２７】
次に具体的な数値の演算例として、ｍビットのレジスタＲ０に格納されている被除数が１０進数の「７７，７７７」、ｍビットのレジスタＲ１に格納されている除数が１０進数の「１，０００」の場合に、商として１０進数の「７７」が算出される過程を、図１の処理フローに沿って説明する。
【００２８】
まず、ステップＳ１１及びステップＳ１２では、ｍビットのレジスタＲ１に格納されている除数「１，０００」をアドレスとしてメモリからデータを読み出し、それぞれ正規化係数ｎ（Ｒ３）として「９（２９≦１，０００＜２１０）」及び正規化逆数（Ｒ２）として「２６２（「１，０００」の逆数「０．００１」に２２×９を乗じた値の整数部）」を得る。ステップＳ１３では、ｍビットのレジスタＲ０に格納されている被除数「７７，７７７」を正規化係数ｎ＝９の値に基づいて右にビットシフトし（「７７，７７７」を２−９倍し）、正規化被除数（Ｒ４）として「１５１」を得る。即ち、１０進数の「７７，７７７」は２進数表記では「１００１０１１１１１１０１０００１」であり、これを右に９ビットシフトすると「１００１０１１１．１１１０１０００１」となる。ここで、正規化被除数（Ｒ４）の有効ビットはｍ−ｎ＝３２−９＝２１ビットの整数であるので、「１００１０１１１」となり、これは１０進数表記で「１５１」である。次に、ステップＳ１４では、この正規化被除数（Ｒ４）「１５１（「１００１０１１１」）」と正規化除数（Ｒ２）「２６２（「１０００００１１０」）」の乗算を実行し、乗算結果（Ｒ５）「３９，５６２（「１００１１０１０１０００１０１０」）」を得る。最後に、ステップＳ１５において、乗算結果（Ｒ５）「３９，５６２」を正規化係数ｎ＝９の値に基づいて右に９ビットシフトし（「３９，５６２」を２−９倍し）、商（Ｒ６）として「７７」を得る。即ち、「１００１１０１０１０００１０１０」を右に９ビットシフトすると「１００１１０１．０１０００１０１０」となって、その整数部「１００１１０１」は１０進数表記で「７７」である。
【００２９】
以上説明したように、本第１実施形態に係るデータ処理方法によれば、除数（Ｒ１）の逆数（１／Ｒ１）を被除数（Ｒ０）に乗ずることにより商（Ｒ６）を得るデータ処理方法において、除数の逆数（１／Ｒ１）のデータの有効ビットと被除数（Ｒ０）のデータの有効ビットの合計を、プロセッサが備えるレジスタのビット幅（上記例ではｍビット）以下に抑えるように、正規化逆数（Ｒ２）及び正規化被除数（Ｒ４）を導出することによって、正規化逆数（Ｒ２）と正規化被除数（Ｒ４）の乗算結果がプロセッサの１ワード（ｍビット）のレジスタＲ５に格納されるため、乗算回数と乗算後のビット操作回数を最小限に抑え、除算の商（Ｒ６）を高速に導出することが可能となる。
【００３０】
［第２実施形態］
上記第１実施形態におけるステップＳ１１〜ステップＳ１２と、ステップＳ１３〜ステップＳ１５とを、それぞれ演算論理回路（ＡＬＵ）としてハードウェア化し、それぞれ拡張ＡＬＵとして備えたデータ処理プロセッサとすることも可能である。
【００３１】
図７は、本発明の第２実施形態に係るデータ処理プロセッサ１０のブロック構成図である。このデータ処理プロセッサ１０は、プロセッサコア１１と、第１及び第２の拡張ＡＬＵ１２，１３を備える。
【００３２】
プロセッサコア１１は、基本的な演算処理装置であり、ＡＬＵ（四則演算、論理演算、ビット操作などを実行）、レジスタ及びメモリ、制御装置等により構成されている。なお、図７においては、必要最小限のｍビットのレジスタ１１１（レジスタＲ０〜Ｒ６）のみを図示し、本実施形態の説明には関連しないＡＬＵなどは図示していない。
【００３３】
第１の拡張ＡＬＵ１２は、プロセッサコア１１のレジスタＲ１にセットされた除数を入力として、上記第１実施形態におけるステップＳ１１〜ステップＳ１２に相当する処理を実行し、プロセッサコア１１のレジスタＲ２及びレジスタＲ３に正規化逆数及び正規化係数をそれぞれ出力する。
【００３４】
図８は、メモリを使用して該第１の拡張ＡＬＵ１２を構成した場合のブロック図であり（ｍ＝３２の場合）、２つのメモリ１２１，１２２と論理和回路１２３とからなる。第１の拡張ＡＬＵ１２の入出力信号のデータサイズはそれぞれプロセッサコア１１が備えるレジスタ１１１のレジスタサイズ（ｍ＝３２ビット）に合わせる。この構成の第１の拡張ＡＬＵ１２では、上記プロセッサコア１１から入力された除数をアドレスとして、メモリ１２１及びメモリ１２２それぞれに与えて、それらのメモリ１２１及び１２２から読み出した正規化係数ｎ及び正規化逆数のデータをプロセッサコア１１に出力する。即ち、メモリ１２１は、上記第１実施形態で説明したようなステップＳ１１におけるメモリに対応するもので、除数に対して２ｎ≦除数＜２ｎ＋１を満たす整数である正規化係数ｎをデータとして格納しているものである。このとき、メモリ１２１から読み出した正規化係数は５ビットのデータであるが、論理和回路１２３によって３２ビットの「０」データとの論理和を実行し、３２ビットのデータとしてからプロセッサコア１１に出力する（ＬＳＢ側５ビットが有効な正規化係数となる）。また、メモリ１２２は、上記第１実施形態で説明したようなステップＳ１２におけるメモリに対応するもので、除数に対して該除数の逆数と２２ｎを乗じて得られる正規化逆数をデータとして格納しているものである。正規化逆数の出力データサイズは３２ビットであるが、図１のステップＳ１２の説明にて示した通り、３２ビットのうち有効なデータはＬＳＢ側ｎビットである。なお、図８においては正規化係数及び正規化逆数が格納されたメモリ１２１及びメモリ１２２を分離して記載しているが、単一のメモリで構成しても構わない。
【００３５】
図９は、メモリを使用せずに上記第１の拡張ＡＬＵ１２を構成した場合のブロック図であり（ｍ＝３２の場合）、論理和回路１２３と、エンコーダ１２４と、除算器１２５と、セレクタ１２６とからなる。この構成の第１の拡張ＡＬＵ１２では、まず、エンコーダ１２４において、上記プロセッサコア１１から入力された除数を図２に示す入出力の関係を満たすようにエンコードし、正規化係数ｎを導出する。このとき、正規化係数は５ビットのデータであるが、論理和回路１２３によって３２ビットの「０」データとの論理和を実行し、３２ビットのデータとしてプロセッサコア１１に出力する（ＬＳＢ側５ビットが有効な正規化係数となる）。また、除算器１２５において、上記プロセッサコア１１から入力された除数の逆数を算出する。その後、セレクタ１２６において、該除算器１２５から出力される除算結果から図１のステップＳ１２と同様にしてｎビットの整数部を取り出し、３２ビットのＬＳＢ側ｎビットにセットしてプロセッサコア１１に出力する。即ち、上記エンコーダ１２４で導出した正規化係数ｎに基づいて、上記除算器１２５にて算出した除数の逆数と２２ｎとを乗じる（除数の逆数を２ｎビット左シフトする）演算を行うものである。なお、正規化係数または正規化逆数の何れか一方のみ、図８に示した構成のように、メモリ１２１又は１２２を使用して導出する構成にしても構わない。
【００３６】
一方、図７に示す第２の拡張ＡＬＵ１３は、プロセッサコア１１のレジスタＲ０にセットされた被除数、レジスタＲ２にセットされた正規化逆数及びレジスタＲ３にセットされた正規化係数を入力として、図１のステップＳ１３〜ステップＳ１５に相当する処理を実行し、プロセッサコア１１のレジスタＲ６に商を出力する。
【００３７】
図１０は、この第２の拡張ＡＬＵ１３の構成を示すブロック図であり（ｍ＝３２の場合）、２つのセレクタ１３１，１３２と乗算器１３３とからなる。第２の拡張ＡＬＵ１３の入出力信号のデータサイズはそれぞれプロセッサコア１１が備えるレジスタ１１１のレジスタサイズ（ｍ＝３２ビット）に合わせる。この構成の第２の拡張ＡＬＵ１３においては、セレクタ１３１では、上記プロセッサコア１１から入力される３２ビットの正規化係数ｎのデータから有効なＬＳＢ側５ビットのデータを選択する。乗算器１３３では、上記プロセッサコア１１から入力される正規化逆数と被除数との乗算を行う（図１のステップＳ１４に相当）。セレクタ１３２では、図１１に示すように（ｎ＝９の場合）、乗算器１３３から出力される乗算結果のＬＳＢ側２ｎビット以上のｎビットのデータを選択する（図１のステップＳ１３及びステップＳ１５に相当）。つまり、乗算結果を２−２ｎ倍（２ｎビット右シフト）する。このセレクタ１３２において選択されたデータは、３２ビットのデータのＬＳＢ側ｎビットにセットされて、商としてプロセッサコア１１に出力される。
【００３８】
なお、データ処理プロセッサ１０は、このような第１及び第２の拡張ＡＬＵ１２，１３は必ずしも両方備える必要はなく、何れか一方のみでも構わない。この場合は、上記第１実施形態に係るデータ処理方法と組み合わせることにより、除算の高速化処理を実現可能であり、必要に応じて、プロセッサコア１１のレジスタ１１１はレジスタＲ４，Ｒ５を備える。
【００３９】
また、第１の拡張ＡＬＵ１２と第２の拡張ＡＬＵ１３をひとつの拡張ＡＬＵとしてまとめることも可能である。この場合、上記プロセッサコア１１から該まとめられた拡張ＡＬＵへの入力は、レジスタＲ０に格納された除数及びレジスタＲ１に格納された被除数であり、該まとめられた拡張ＡＬＵから上記プロセッサコア１１への出力は商のみである。
【００４０】
以上説明したように、本第２実施形態に係るデータ処理プロセッサ１０によれば、除数（Ｒ１）の逆数（１／Ｒ１）を被除数（Ｒ０）に乗ずることにより商（Ｒ６）を得るデータ処理プロセッサにおいて、除数の逆数（１／Ｒ１）のデータの有効ビットと被除数（Ｒ０）のデータの有効ビットの合計を、プロセッサコア１１が備えるレジスタ１１１のビット幅（上記例ではｍビット）以下に抑えるように、除数（Ｒ１）から正規化逆数（Ｒ２）及び正規化係数ｎを演算出力する第１の拡張ＡＬＵ１２と、被除数（Ｒ０）、正規化逆数（Ｒ２）及び正規化係数ｎから商（Ｒ６）を演算する第２の拡張ＡＬＵ１３との少なくとも一方を備えることによって、第１及び第２の拡張ＡＬＵ１２，１３の演算結果がプロセッサコア１１の１ワード（ｍビット）のレジスタ１１１に格納されるため、乗算回数と乗算後のビット操作回数を最小限に抑え、除算の商（Ｒ６）を高速に導出することが可能となる。
【００４１】
以上実施形態に基づいて本発明を説明したが、本発明は上述した実施形態に限定されるものではなく、本発明の要旨の範囲内で種々の変形や応用が可能なことは勿論である。
【００４２】
（付記）
前記の具体的実施形態から、以下のような構成の発明を抽出することができる。
【００４３】
（１）  ｍビットのレジスタを備えたプロセッサにより除数の逆数に被除数を乗じて商を導出するデータ処理方法において、
上記除数に基づき、正規化係数ｎを導出する第１のデータ処理ステップと、
上記除数に基づき、有効ｎビットの正規化逆数を導出する第２のデータ処理ステップと、
上記被除数及び上記第１のデータ処理ステップで導出した上記正規化係数ｎに基づき、多くとも有効ｍ−ｎビットの正規化被除数を導出する第３のデータ処理ステップと、
上記第３のデータ処理ステップで導出した上記正規化被除数と上記第２のデータ処理ステップで導出した上記正規化逆数とを乗じ、多くとも有効ｍビットの乗算結果を導出する第４のデータ処理ステップと、
上記第１のデータ処理ステップで導出した上記正規化係数ｎに基づき、上記第４のデータ処理ステップで導出した上記乗算結果から商を導出する第５のデータ処理ステップと、
を実行することを特徴とするデータ処理方法。
【００４４】
（対応する実施形態）
この（１）に記載のデータ処理方法に関する実施形態は、第１実施形態が対応する。その実施形態において、一例として、ステップＳ１１が上記第１のデータ処理ステップに、ステップＳ１２が上記第２のデータ処理ステップに、ステップＳ１３が上記第３のデータ処理ステップに、ステップＳ１４が上記第４のデータ処理ステップに、ステップＳ１５が上記第５のデータ処理ステップに、それぞれ対応する。
【００４５】
（作用効果）
この（１）に記載のデータ処理方法によれば、除数の逆数のデータの有効ビットと被除数のデータの有効ビットの合計を、プロセッサが備えるレジスタのビット幅以下に抑えるように、正規化逆数及び正規化被除数を導出することによって、正規化逆数と正規化被除数の乗算結果がプロセッサの１ワードのレジスタに格納されるため、乗算回数と乗算後のビット操作回数を最小限に抑え、除算の商を高速に導出することが可能となる。
【００４６】
（２）  上記第１のデータ処理ステップは、上記除数に対し該除数が２ｎ以上２ｎ＋１未満となる正規化係数ｎがデータとして格納されたメモリから、上記除数に対するデータを読み出すことにより、上記正規化係数ｎを導出することを特徴とする（１）に記載のデータ処理方法。
【００４７】
（対応する実施形態）
この（２）に記載のデータ処理方法に関する実施形態は、第１実施形態が対応する。
【００４８】
（作用効果）
この（２）に記載のデータ処理方法によれば、除数をアドレスとしてメモリに与えるだけで正規化係数ｎを導出できるので、除算の高速処理が可能である。
【００４９】
（３）  上記第１のデータ処理ステップは、上記除数に基づいて、上記除数が２ｎ以上２ｎ＋１未満となる正規化係数ｎを演算することによって、上記正規化係数ｎを導出することを特徴とする（１）に記載のデータ処理方法。
【００５０】
（対応する実施形態）
この（３）に記載のデータ処理方法に関する実施形態は、第１実施形態が対応する。
【００５１】
（作用効果）
この（３）に記載のデータ処理方法によれば、専用のメモリを必要としないのでメモリ使用量を抑え、除数が一定で被除数が異なる除算を複数回実行する処理を高速に実行することが可能となる。
【００５２】
（４）  上記第２のデータ処理ステップは、上記除数に対し該除数の逆数と２２ｎを乗じて得られる有効ｎビットの正規化逆数がデータとして格納されたメモリから、上記除数に対するデータを読み出すことにより、上記正規化逆数を導出することを特徴とする（１）に記載のデータ処理方法。
【００５３】
（対応する実施形態）
この（４）に記載のデータ処理方法に関する実施形態は、第１実施形態が対応する。
【００５４】
（作用効果）
この（４）に記載のデータ処理方法によれば、除数をアドレスとしてメモリに与えるだけで正規化逆数を導出できるので、除算の高速処理が可能である。
【００５５】
（５）  上記第２のデータ処理ステップは、上記除数及び上記第１のデータ処理ステップで導出した上記正規化係数ｎに基づいて、上記除数の逆数と２２ｎとを乗じる演算を行うことによって、上記有効ｎビットの正規化逆数を導出することを特徴とする（１）に記載のデータ処理方法。
【００５６】
（対応する実施形態）
この（５）に記載のデータ処理方法に関する実施形態は、第１実施形態が対応する。
【００５７】
（作用効果）
この（５）に記載のデータ処理方法によれば、専用のメモリを必要としないのでメモリ使用量を抑え、除数が一定で被除数が異なる除算を複数回実行する処理を高速に実行することが可能となる。
【００５８】
（６）  上記第３のデータ処理ステップは、上記第１のデータ処理ステップで導出した上記正規化係数ｎに基づき、上記被除数に２−ｎを乗じることによって、多くとも有効ｍ−ｎビットの上記正規化被除数を導出することを特徴とする（１）に記載のデータ処理方法。
【００５９】
（対応する実施形態）
この（６）に記載のデータ処理方法に関する実施形態は、第１実施形態が対応する。
【００６０】
（作用効果）
この（６）に記載のデータ処理方法によれば、被除数から正規化被除数を取り出すため演算が１つのｍビットのレジスタに格納された被除数に２−ｎを乗じるだけ済む、つまり、１つのｍビットのレジスタに対するｎビットの右シフト操作だけで済むので、除算の高速処理が可能となる。
【００６１】
（７）  上記第５のデータ処理ステップは、上記第１のデータ処理ステップで導出した上記正規化係数ｎに基づき、上記第４のデータ処理ステップで導出した上記乗算結果に２−ｎを乗じることによって、多くとも有効ｍ−ｎビットの上記商を導出することを特徴とする（１）に記載のデータ処理方法。
【００６２】
（対応する実施形態）
この（７）に記載のデータ処理方法に関する実施形態は、第１実施形態が対応する。
【００６３】
（作用効果）
この（７）に記載のデータ処理方法によれば、乗算結果から商を取り出すため演算が１つのｍビットのレジスタに格納された乗算結果に２−ｎを乗じるだけ済む、つまり、１つのｍビットのレジスタに対するｎビットの右シフト操作だけで済むので、除算の高速処理が可能となる。
【００６４】
（８）  ｍビットのレジスタを備え、除数の逆数に被除数を乗じて商を導出するデータ処理プロセッサにおいて、
上記除数を入力として、正規化係数ｎ及び有効ｎビットの正規化逆数を出力する第１の拡張ＡＬＵと、
上記被除数と、上記第１の拡張ＡＬＵから出力された上記正規化係数ｎ及び上記正規化逆数とを入力として、商を出力する第２の拡張ＡＬＵと、
の少なくとも一方を備えることを特徴とするデータ処理プロセッサ。
【００６５】
（対応する実施形態）
この（８）に記載のデータ処理プロセッサに関する実施形態は、第２実施形態が対応する。その実施形態において、一例として、データ処理プロセッサ１０が上記データ処理プロセッサに、第１の拡張ＡＬＵ１２が上記第１の拡張ＡＬＵに、第２の拡張ＡＬＵ１３が上記第２の拡張ＡＬＵに、それぞれ対応する。
【００６６】
（作用効果）
この（８）に記載のデータ処理プロセッサによれば、除数の逆数を被除数に乗ずることにより商を得るデータ処理プロセッサにおいて、除数の逆数のデータの有効ビットと被除数のデータの有効ビットの合計を、プロセッサが備えるレジスタのビット幅以下に抑えるように、除数から正規化逆数及び正規化係数ｎを演算出力する第１の拡張ＡＬＵと、被除数、正規化逆数及び正規化係数ｎから商を演算する第２の拡張ＡＬＵと、の少なくとも一方を備えることによって、第１及び第２の拡張ＡＬＵ１２，１３の演算結果がプロセッサの１ワードのレジスタに格納されるため、乗算回数と乗算後のビット操作回数を最小限に抑え、除算の商を高速に導出することが可能となる。
【００６７】
（９）  上記第１の拡張ＡＬＵは、上記除数に対し該除数が２ｎ以上２ｎ＋１未満となる正規化係数ｎがデータとして格納されたメモリを備え、該メモリから上記入力された除数に対するデータを読み出すことによって、上記正規化係数ｎを出力することを特徴とする（８）に記載のデータ処理プロセッサ。
【００６８】
（対応する実施形態）
この（９）に記載のデータ処理プロセッサに関する実施形態は、第２実施形態が対応する。その実施形態において、一例として、メモリ１２１が上記メモリに対応する。
【００６９】
（作用効果）
この（９）に記載のデータ処理プロセッサによれば、除数をアドレスとしてメモリに入力するだけで正規化係数ｎを導出できるので、除算の高速処理が可能である。
【００７０】
（１０）  上記第１の拡張ＡＬＵは、上記入力された除数に基づいて、上記除数が２ｎ以上２ｎ＋１未満となる正規化係数ｎを演算することによって、上記正規化係数ｎを導出して出力することを特徴とする（８）に記載のデータ処理プロセッサ。
【００７１】
（対応する実施形態）
この（１０）に記載のデータ処理プロセッサに関する実施形態は、第２実施形態が対応する。
【００７２】
（作用効果）
この（１０）に記載のデータ処理プロセッサによれば、メモリ使用量を抑え、除数が一定で被除数が異なる除算を複数回実行する処理を高速に実行することが可能となる。
【００７３】
（１１）  上記第１の拡張ＡＬＵは、上記除数に対し該除数の逆数と２２ｎを乗じて得られる有効ｎビットの正規化逆数がデータとして格納されたメモリを備え、該メモリから上記入力された除数に対するデータを読み出すことによって、上記正規化逆数を出力することを特徴とする（８）に記載のデータ処理プロセッサ。
【００７４】
（対応する実施形態）
この（１１）に記載のデータ処理プロセッサに関する実施形態は、第２実施形態が対応する。その実施形態において、一例として、メモリ１２２が上記メモリに対応する。
【００７５】
（作用効果）
この（１１）に記載のデータ処理プロセッサによれば、除数をアドレスとしてメモリに入力するだけで正規化逆数を導出できるので、除算の高速処理が可能である。
【００７６】
（１２）  上記第１の拡張ＡＬＵは、上記入力された除数及び上記出力する正規化係数ｎに基づいて、上記除数の逆数と２２ｎとを乗じる演算を行うことによって、上記有効ｎビットの正規化逆数を導出して出力することを特徴とする（８）に記載のデータ処理プロセッサ。
【００７７】
（対応する実施形態）
この（１２）に記載のデータ処理プロセッサに関する実施形態は、第２実施形態が対応する。
【００７８】
（作用効果）
この（１２）に記載のデータ処理プロセッサによれば、メモリ使用量を抑え、除数が一定で被除数が異なる除算を複数回実行する処理を高速に実行することが可能となる。
【００７９】
（１３）  上記第２の拡張ＡＬＵは、上記入力された被除数と上記正規化逆数とを乗じ、その乗算結果に対して、上記正規化係数ｎに基づいてさらに２−２ｎを乗じることにより、多くとも有効ｍ−ｎビットの上記商を導出して出力することを特徴とする（８）に記載のデータ処理プロセッサ。
【００８０】
（対応する実施形態）
この（１３）に記載のデータ処理プロセッサに関する実施形態は、第２実施形態が対応する。
【００８１】
（作用効果）
この（１３）に記載のデータ処理プロセッサによれば、被除数と正規化逆数と正規化係数ｎとからハードウェアによって高速に商が導出されるので、除算の高速処理が可能である。
【図面の簡単な説明】
【００８２】
【図１】図１は、本発明の第１実施形態に係るデータ処理方法の処理フローを示す図である。
【図２】図２は、入力される除数に対して導出する正規化係数の関係を記した表を示す図である。
【図３】図３は、正規化係数の導出処理を説明するための処理フローチャートを示す図である。
【図４】図４は、除数のデータ範囲に対する正規化係数ｎと除数の逆数のデータ範囲の関係を記した表を示す図である。
【図５】図５は、除数のデータ範囲に対する正規化係数ｎと正規化逆数のデータ範囲の関係を記した表を示す図である。
【図６】図６は、被除数と除数との除算を実行することにより商を導出する処理の実行サイクル数と、除数の逆数を算出するために除算を実行しさらに被除数にその逆数を乗じることにより商を導出する処理の実行サイクル数とを比較して示す図である。
【図７】図７は、本発明の第２実施形態に係るデータ処理プロセッサのブロック構成図である。
【図８】図８は、メモリを使用して構成した第１の拡張ＡＬＵのブロック図である。
【図９】図９は、メモリを使わずに構成した第１の拡張ＡＬＵのブロック図である。
【図１０】図１０は、第２の拡張ＡＬＵのブロック図である。
【図１１】図１１は、第２の拡張ＡＬＵを構成する後段側のセレクタの入出力関係を示す図である。
【図１２】図１２は、従来のデータ処理方法の処理フローを示す図である。
【符号の説明】
【００８３】
１０…データ処理プロセッサ、  １１…プロセッサコア、  １２…第１の拡張ＡＬＵ、  １３…第２の拡張ＡＬＵ、  １１１，Ｒ０〜Ｒ６…レジスタ、  １２１，１２２…メモリ、  １２３…論理和回路、  １２４…エンコーダ、  １２５…除算器、  １２６，１３１，１３２…セレクタ、  １３３…乗算器。
【図１】
2010033275.tif 000003
【図２】
2010033275.tif 000004
【図３】
2010033275.tif 000005
【図４】
2010033275.tif 000006
【図５】
2010033275.tif 000007
【図６】
2010033275.tif 000008
【図７】
2010033275.tif 000009
【図８】
2010033275.tif 000010
【図９】
2010033275.tif 000011
【図１０】
2010033275.tif 000012
【図１１】
2010033275.tif 000013
【図１２】
2010033275.tif 000014