JP2010033275A - データ処理方法及びデータ処理プロセッサ - Google Patents

データ処理方法及びデータ処理プロセッサ Download PDF

Info

Publication number
JP2010033275A
JP2010033275A JP2008193881A JP2008193881A JP2010033275A JP 2010033275 A JP2010033275 A JP 2010033275A JP 2008193881 A JP2008193881 A JP 2008193881A JP 2008193881 A JP2008193881 A JP 2008193881A JP 2010033275 A JP2010033275 A JP 2010033275A
Authority
JP
Japan
Prior art keywords
divisor
data processing
data
derived
reciprocal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2008193881A
Other languages
English (en)
Inventor
Koki Hasebe
弘毅 長谷部
Masaru Ito
大 伊藤
Toru Matsuzawa
亨 松沢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Olympus Corp
Original Assignee
Olympus Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Olympus Corp filed Critical Olympus Corp
Priority to JP2008193881A priority Critical patent/JP2010033275A/ja
Publication of JP2010033275A publication Critical patent/JP2010033275A/ja
Withdrawn legal-status Critical Current

Links

Images

Abstract

【課題】除算の商を高速に算出すること。
【解決手段】mビットのレジスタを備えたプロセッサにより除数の逆数に被除数を乗じて商を導出するデータ処理方法において、上記除数に基づき、正規化係数nを導出し(ステップS11)、上記除数に基づき、有効nビットの正規化逆数を導出し(ステップS12)、上記被除数及び上記ステップS11で導出した上記正規化係数nに基づき、多くとも有効m−nビットの正規化被除数を導出し(ステップS13)、上記ステップS13で導出した上記正規化被除数と上記ステップS12で導出した上記正規化逆数とを乗じ、多くとも有効mビットの乗算結果を導出し(ステップS14)、上記ステップS11で導出した上記正規化係数nに基づき、上記ステップS14で導出した上記乗算結果から商を導出する(ステップS15)。
【選択図】図1

Description

本発明は、除数の逆数を被除数に乗ずることにより商を得るデータ処理方法及びデータ処理プロセッサに関する。
プロセッサにおける除算処理の高速化手法として、除数の逆数を予め書き込んだメモリを備え、該メモリから除数に対応する逆数を読み出し、その読み出した逆数と被除数とを乗ずることにより除算結果を得る手法が公知である(例えば、特許文献1参照)。
特開平2−242426号公報
図12は、上記特許文献1において除数の逆数と被除数を乗じた結果のデータサイズがプロセッサの1ワード、すなわちプロセッサのレジスタサイズを超える場合の処理フローを示す図である。
ここで、正規化係数が1ワードサイズのレジスタR0に、被除数が1ワードサイズのレジスタR1に、除数が1ワードサイズのレジスタR2に、それぞれ格納されているものとする。まず、レジスタR0に格納されている正規化係数に基づいて、レジスタR2に格納されている除数の桁シフトを実行することで、メモリアドレスを導出して、1ワードサイズのレジスタR3に格納する(ステップS1)。次に、そのレジスタR3に格納したメモリアドレスをメモリに与え、該メモリからそのメモリアドレスに書き込まれている除数の逆数を読み出して、1ワードサイズのレジスタR4に格納する(ステップS2)。
ここで、レジスタR4に格納した除数の逆数とレジスタR1に格納されている被除数の有効ビット数の合計が1ワードのビット数を超える場合には、それら除数の逆数と被除数の乗算結果は1ワードを超えてしまうため、その乗算結果を格納するために少なくとも2ワード分のレジスタが必要になる。一般的なプロセッサにおいて、複数のレジスタに対して乗算結果を格納するためには、それぞれのレジスタに対して乗算を実行する必要がある。したがって、2ワード分のレジスタに対する乗算を実行し、それぞれの乗算結果をレジスタR5,R6に格納する(ステップS3,S4)。一般的にプロセッサによる乗算の実行には複数サイクル要するため、乗算の複数回実行は除算処理の高速化の妨げとなっている。
また、レジスタR4に格納した除数の逆数に小数点以下のデータが含まれる場合には、これらレジスタR5,R6に格納した2ワード分の乗算結果の何れか一方にも小数点以下のデータが含まれる。したがって、商として必要なデータ精度が1ワード以内の精度であっても、商を得るためには2ワード分の乗算結果が格納されている2つのレジスタR5,R6に対してデータ操作を実行しなければならない。いま、一方のレジスタR6に格納した乗算結果に小数データが含まれるとすると、その乗算結果の小数点以下のデータを桁シフトによって削除して、一時データとして1ワードサイズのレジスタR7に格納し(ステップS5)、商の上位ビットとなるデータを、他方のレジスタR5に格納した乗算結果からこのレジスタR7に格納した一時データにコピーすることにより、このレジスタR7に格納した一時データを商として出力する。このような複数の演算結果を格納するための複数のレジスタR5,R6に対するデータ操作の実行もまた、除算処理の高速化の妨げとなっている。
本発明は、上記の点に鑑みてなされたもので、除算の商を高速に算出することが可能なデータ処理方法及びデータ処理プロセッサを提供することを目的とする。
本発明のデータ処理方法の一態様は、mビットのレジスタを備えたプロセッサにより除数の逆数に被除数を乗じて商を導出するデータ処理方法において、上記除数に基づき、正規化係数nを導出する第1のデータ処理ステップと、上記除数に基づき、有効nビットの正規化逆数を導出する第2のデータ処理ステップと、上記被除数及び上記第1のデータ処理ステップで導出した上記正規化係数nに基づき、多くとも有効m−nビットの正規化被除数を導出する第3のデータ処理ステップと、上記第3のデータ処理ステップで導出した上記正規化被除数と上記第2のデータ処理ステップで導出した上記正規化逆数とを乗じ、多くとも有効mビットの乗算結果を導出する第4のデータ処理ステップと、上記第1のデータ処理ステップで導出した上記正規化係数nに基づき、上記第4のデータ処理ステップで導出した上記乗算結果から商を導出する第5のデータ処理ステップと、を実行することを特徴とする。
また、本発明のデータ処理プロセッサの一態様は、mビットのレジスタを備え、除数の逆数に被除数を乗じて商)を導出するデータ処理プロセッサにおいて、上記除数を入力として、正規化係数n及び有効nビットの正規化逆数を出力する第1の拡張ALUと、上記被除数と、上記第1の拡張ALUから出力された上記正規化係数n及び上記正規化逆数とを入力として、商を出力する第2の拡張ALUと、の少なくとも一方を備えることを特徴とする。
本発明によれば、除数の逆数のデータの有効ビットと被除数のデータの有効ビットとの合計を、プロセッサが備えるレジスタのビット幅以下に抑えるように、正規化逆数と、正規化被除数と正規化係数と、を導出することにより、除算の商を高速に算出することが可能なデータ処理方法及びデータ処理プロセッサを提供することができる。
以下、本発明を実施するための最良の形態を図面を参照して説明する。
[第1実施形態]
図1は、本発明の第1実施形態に係るデータ処理方法の処理フローを示す図である。この処理フローをプログラムとしてプロセッサに実行させることにより、商の算出を高速化する。以下の説明では、この処理フローをmビットのレジスタを備えたプロセッサにて実行することを前提とする。
ここで、被除数が1ワード(mビット)のレジスタR0に、除数が1ワード(mビット)のレジスタR1に、それぞれ格納されているものとする。まず、そのmビットのレジスタR1に格納されている除数をアドレスとして図示しないメモリに与え、該メモリに予め格納されている正規化係数nを読み出して、mビットのレジスタR3に格納する(ステップS11)。ここで、正規化係数nとは、2≦除数<2n+1を満たす整数であり、メモリに入力するアドレス(入力=R1)と出力されるデータ(出力=R3)の関係は、図2に示す通りである(m=32の場合)。例えば、除数を10進数の「1,000」とすれば、2≦1,000≦210であるので、正規化係数nとしては10進数の「9」が導出される。
なお、図1では、mビットのレジスタR1に格納されている除数に対応する正規化係数nを導出するためにメモリを用いているが、図3に示す処理フローチャート(m=32の場合)をプログラム化し、演算によって正規化係数nを導出するようにしても構わない。このようにした場合には、メモリの使用量を削減することにより、低コストのシステムを提供することができる。
即ち、図3の処理フローチャートでは、mビットのレジスタR1に格納されている除数の入力を受けて(ステップS111)、まず、正規化係数nを格納するためのレジスタR3に初期値として「31(=m−1)」を設定する(ステップS112)。そして、mビットのレジスタR1に格納されている除数のMSBが「0」であるかどうかの判定を行う(ステップS113)。ここで、MSBが「0」の場合には、mビットのレジスタR1に格納されている除数を1ビット左シフトし(ステップS114)、mビットのレジスタR3に格納する正規化係数nを「1」デクリメントした後に(ステップS115)、上記ステップS113の除数のMSB判定処理に戻る。従って、例えばmビットのレジスタR1に格納されている除数が上記「1,000」である場合には、mビットのレジスタR3に格納する正規化係数nが「31」から「9」となるまでステップS113〜ステップS115のループを繰り返すこととなる。そして、除数のMSBが「0」でなくなったならば(ステップS113)、mビットのレジスタR3に格納されている値が、正規化係数nの値として出力されることとなる(ステップS116)。なお、図3の処理フローチャートにおいては、mビットのレジスタR1に格納されている除数が「0」になるケース(「0」で除算するケース)は予め排除しておかなければならない。
あるいは、上記正規化係数nを導出するために、メモリではなく演算回路を備えても構わない。例えば、図2に示すようなプライオリティエンコーダ(m=32の例)を回路化し、mビットのレジスタR1に格納されている除数に対応する正規化係数nを演算回路によって導出することも可能である。このようにした場合も、メモリの使用量を抑えつつ、処理の高速化を図ることができる。
図1に戻り説明を続けると、上記のようにして正規化係数nを導出してmビットのレジスタR3に格納したならば、次に、上記mビットのレジスタR1に格納されている除数をアドレスとして図示しないメモリに与え、該メモリに予め格納されている正規化逆数を読み出して、mビットのレジスタR2に格納する(ステップS12)。ここで、正規化逆数とは、除数の逆数を22×n倍したnビットの整数である。
このmビットのレジスタR2に格納する正規化逆数は、次のようにして導出する。
図4は、除数(R1)のデータ範囲(2≦除数(R1)<2n+1)に対する正規化係数n(R3)と除数の逆数(1/R1)のデータ範囲をそれぞれ記した表を示す図である。2進数表記では小数が2の負のべき乗で表現され、小数の精度を高めるほど、小数点以下のデータのビット幅が増加する。図4に示す通り、2≦除数(R1)<2n+1の範囲の除数の逆数(1/R1)は、少なくともn(R3)ビット以上の小数データにより表現される。一般的に、2進数では小数データとして使用可能なビットサイズが制限されるため、小数のデータ精度を保つためには最も重みのあるビット、即ち小数データの上位ビットから所望するサイズのデータを取り出すことが好ましい。しかし、図4に示す通り、n(R3)≧1では2≦除数(R1)<2n+1の範囲の除数の逆数(1/R1)は、小数データのうち上位n−1ビットは常に「0」である。したがって、小数データのうちn−1ビット以上のビットは無効なデータ、nビット以下のビットを有効なデータとみなす。この有効な小数データを取り出すために、本実施形態においては、小数データに22×nを乗じ、その乗算結果の整数部を取り出す。この乗算結果の整数部は、有効なデータかつ最も重みのあるデータであり、図5に示す通り、常にn(R3)ビット以下の整数である。本実施例では、このnビットの整数部を正規化逆数として導出し、レジスタR2に格納する。
なお、図1態においては、メモリに除数(R1)に対応する正規化逆数(R2)がデータとして格納されていて、mビットのレジスタR1に格納されている除数から直接的に正規化逆数が導出できるため、正規化係数n(R3)を入力する必要はない。これに対して、正規化逆数をそのようにメモリに予め格納されるデータとして導出するのではなく、メモリを使用せずに、除数の逆数(1/R1)である小数データに22×nを乗じる演算を行って整数部を取り出すことにより算出することも可能である。そのような場合には、mビットのレジスタR3に格納した正規化係数nの入力が必要となることは言うまでもない。また、正規化逆数をデータとして格納するメモリは必ずしもROMとして備える必要はなく、任意のタイミングでプロセッサがメモリのデータを更新するようにしてもよい。
なお、正規化逆数を演算により導出する場合に得られる高速化の効果は、以下の理由により、除数が一定で被除数が異なる除算を複数回実行する場合に限られる。即ち、除算の実行サイクル数sと、乗算の実行サイクル数tとの関係は、一般的に、s>tである。いま、除数(R1)が一定のまま商を導出する回数をx、その実行サイクル数をyとすると、被除数(R0)と除数(R1)との除算を実行することにより商を導出する処理はy=sx、除数(R1)の逆数(1/R0)を算出するために除算を実行し、さらに被除数(R0)にその逆数(1/R0)を乗じることにより商を導出する処理はy=tx+sと表すことができる。図6に示す通り、商を導出する処理の1回目は、前者の実行サイクル数の方が少ない。しかし、s>tであるので、y=sxとy=tx+sの大小関係は、商を導出する処理を複数回(x>1)実行すれば逆転する。したがって、正規化逆数(R2)を除算により導出する場合は、正規化逆数(R2)が一定、即ち除数(R1)が一定であり被除数(R0)が異なる除算を複数回実行する場合に高速化の効果が得られる。
ここで、除数(R1)から導出される正規化逆数(R2)の具体例を説明する。いま、mビットのレジスタR1に格納されている除数が10進数の「1,000」であるとして正規化逆数(R2)を導出する場合を例として説明する。
除数である「1,000」は上述した通り2≦1,000<210であるため、正規化係数nは「9」と導かれる。この正規化係数nに基づいて、除数「1,000」の逆数である「1/1,000」を22×9倍する(小数点を2×9桁、右シフトする)と、以下のような結果となる。
(1/1,000)×22×9=0.001(10進数)×22×9
=0.00000000010000011000・・・(2進数)≪18
=100000110.00・・・(2進数)
=262.1・・・(10進数)
この結果の整数「262」が除数「1,000」の正規化逆数(R2)となる。なお、整数部を取り出す際の小数部に対する処理は、丸め処理、切り捨て処理や切り上げ処理など、任意の処理を施して構わない。図1の例では、図示しないメモリには、このような除数(R1)=1,000に対する正規化逆数(R2)=262というように、除数(R1)の値で示されるアドレスに正規化逆数(R2)の値を予め格納してある。
図1に戻り説明を続けると、上記のようにして正規化逆数を導出してmビットのレジスタR2に格納したならば、次に、上記ステップS11で導出してmビットのレジスタR3に格納した正規化係数nに基づいて、上記mビットのレジスタR0に格納されている被除数を2−n倍(nビット右シフト)し、その結果を正規化被除数としてmビットのレジスタR4に格納する(ステップS13)。この処理は、除算で算出される剰余を捨てることを意味し、商を算出する上では演算精度に影響は無い。このとき、正規化被除数の有効ビットはm−nビットの整数である。
次に、そのmビットのレジスタR4に格納した正規化被除数と上記ステップS12で導出してmビットのレジスタR2に格納した正規化逆数の乗算を実行し、その乗算結果をmビットのレジスタR5に格納する(ステップS14)。このとき、m−nビットの正規化被除数(R4)と、nビットの正規化逆数(R2)の乗算であるため、乗算結果の有効ビット数はm(=m−n+n)ビットとなる。したがって、乗算結果はプロセッサの1ワード分のレジスタR5に収まり、乗算の実行は1回で済む。
そして、上記ステップS11で導出してmビットのレジスタR3に格納した正規化係数nに基づいて、このmビットのレジスタR5に格納した乗算結果を2−n倍(nビット右シフト)し、その結果を商としてmビットのレジスタR6に格納し、出力する(ステップS15)。この処理は、mビットのレジスタR5に格納した乗算結果の小数部の切り捨てに相当するが、必要に応じて丸め処理を施しても構わない。上記ステップS14における乗算結果(R5)はプロセッサの1ワードに収まっているため、この乗算結果から商を取り出すためのビット操作は、ステップS14における1つのレジスタR5に対するビット操作だけで済む。
次に具体的な数値の演算例として、mビットのレジスタR0に格納されている被除数が10進数の「77,777」、mビットのレジスタR1に格納されている除数が10進数の「1,000」の場合に、商として10進数の「77」が算出される過程を、図1の処理フローに沿って説明する。
まず、ステップS11及びステップS12では、mビットのレジスタR1に格納されている除数「1,000」をアドレスとしてメモリからデータを読み出し、それぞれ正規化係数n(R3)として「9(2≦1,000<210)」及び正規化逆数(R2)として「262(「1,000」の逆数「0.001」に22×9を乗じた値の整数部)」を得る。ステップS13では、mビットのレジスタR0に格納されている被除数「77,777」を正規化係数n=9の値に基づいて右にビットシフトし(「77,777」を2−9倍し)、正規化被除数(R4)として「151」を得る。即ち、10進数の「77,777」は2進数表記では「10010111111010001」であり、これを右に9ビットシフトすると「10010111.111010001」となる。ここで、正規化被除数(R4)の有効ビットはm−n=32−9=21ビットの整数であるので、「10010111」となり、これは10進数表記で「151」である。次に、ステップS14では、この正規化被除数(R4)「151(「10010111」)」と正規化除数(R2)「262(「100000110」)」の乗算を実行し、乗算結果(R5)「39,562(「1001101010001010」)」を得る。最後に、ステップS15において、乗算結果(R5)「39,562」を正規化係数n=9の値に基づいて右に9ビットシフトし(「39,562」を2−9倍し)、商(R6)として「77」を得る。即ち、「1001101010001010」を右に9ビットシフトすると「1001101.010001010」となって、その整数部「1001101」は10進数表記で「77」である。
以上説明したように、本第1実施形態に係るデータ処理方法によれば、除数(R1)の逆数(1/R1)を被除数(R0)に乗ずることにより商(R6)を得るデータ処理方法において、除数の逆数(1/R1)のデータの有効ビットと被除数(R0)のデータの有効ビットの合計を、プロセッサが備えるレジスタのビット幅(上記例ではmビット)以下に抑えるように、正規化逆数(R2)及び正規化被除数(R4)を導出することによって、正規化逆数(R2)と正規化被除数(R4)の乗算結果がプロセッサの1ワード(mビット)のレジスタR5に格納されるため、乗算回数と乗算後のビット操作回数を最小限に抑え、除算の商(R6)を高速に導出することが可能となる。
[第2実施形態]
上記第1実施形態におけるステップS11〜ステップS12と、ステップS13〜ステップS15とを、それぞれ演算論理回路(ALU)としてハードウェア化し、それぞれ拡張ALUとして備えたデータ処理プロセッサとすることも可能である。
図7は、本発明の第2実施形態に係るデータ処理プロセッサ10のブロック構成図である。このデータ処理プロセッサ10は、プロセッサコア11と、第1及び第2の拡張ALU12,13を備える。
プロセッサコア11は、基本的な演算処理装置であり、ALU(四則演算、論理演算、ビット操作などを実行)、レジスタ及びメモリ、制御装置等により構成されている。なお、図7においては、必要最小限のmビットのレジスタ111(レジスタR0〜R6)のみを図示し、本実施形態の説明には関連しないALUなどは図示していない。
第1の拡張ALU12は、プロセッサコア11のレジスタR1にセットされた除数を入力として、上記第1実施形態におけるステップS11〜ステップS12に相当する処理を実行し、プロセッサコア11のレジスタR2及びレジスタR3に正規化逆数及び正規化係数をそれぞれ出力する。
図8は、メモリを使用して該第1の拡張ALU12を構成した場合のブロック図であり(m=32の場合)、2つのメモリ121,122と論理和回路123とからなる。第1の拡張ALU12の入出力信号のデータサイズはそれぞれプロセッサコア11が備えるレジスタ111のレジスタサイズ(m=32ビット)に合わせる。この構成の第1の拡張ALU12では、上記プロセッサコア11から入力された除数をアドレスとして、メモリ121及びメモリ122それぞれに与えて、それらのメモリ121及び122から読み出した正規化係数n及び正規化逆数のデータをプロセッサコア11に出力する。即ち、メモリ121は、上記第1実施形態で説明したようなステップS11におけるメモリに対応するもので、除数に対して2≦除数<2n+1を満たす整数である正規化係数nをデータとして格納しているものである。このとき、メモリ121から読み出した正規化係数は5ビットのデータであるが、論理和回路123によって32ビットの「0」データとの論理和を実行し、32ビットのデータとしてからプロセッサコア11に出力する(LSB側5ビットが有効な正規化係数となる)。また、メモリ122は、上記第1実施形態で説明したようなステップS12におけるメモリに対応するもので、除数に対して該除数の逆数と22nを乗じて得られる正規化逆数をデータとして格納しているものである。正規化逆数の出力データサイズは32ビットであるが、図1のステップS12の説明にて示した通り、32ビットのうち有効なデータはLSB側nビットである。なお、図8においては正規化係数及び正規化逆数が格納されたメモリ121及びメモリ122を分離して記載しているが、単一のメモリで構成しても構わない。
図9は、メモリを使用せずに上記第1の拡張ALU12を構成した場合のブロック図であり(m=32の場合)、論理和回路123と、エンコーダ124と、除算器125と、セレクタ126とからなる。この構成の第1の拡張ALU12では、まず、エンコーダ124において、上記プロセッサコア11から入力された除数を図2に示す入出力の関係を満たすようにエンコードし、正規化係数nを導出する。このとき、正規化係数は5ビットのデータであるが、論理和回路123によって32ビットの「0」データとの論理和を実行し、32ビットのデータとしてプロセッサコア11に出力する(LSB側5ビットが有効な正規化係数となる)。また、除算器125において、上記プロセッサコア11から入力された除数の逆数を算出する。その後、セレクタ126において、該除算器125から出力される除算結果から図1のステップS12と同様にしてnビットの整数部を取り出し、32ビットのLSB側nビットにセットしてプロセッサコア11に出力する。即ち、上記エンコーダ124で導出した正規化係数nに基づいて、上記除算器125にて算出した除数の逆数と22nとを乗じる(除数の逆数を2nビット左シフトする)演算を行うものである。なお、正規化係数または正規化逆数の何れか一方のみ、図8に示した構成のように、メモリ121又は122を使用して導出する構成にしても構わない。
一方、図7に示す第2の拡張ALU13は、プロセッサコア11のレジスタR0にセットされた被除数、レジスタR2にセットされた正規化逆数及びレジスタR3にセットされた正規化係数を入力として、図1のステップS13〜ステップS15に相当する処理を実行し、プロセッサコア11のレジスタR6に商を出力する。
図10は、この第2の拡張ALU13の構成を示すブロック図であり(m=32の場合)、2つのセレクタ131,132と乗算器133とからなる。第2の拡張ALU13の入出力信号のデータサイズはそれぞれプロセッサコア11が備えるレジスタ111のレジスタサイズ(m=32ビット)に合わせる。この構成の第2の拡張ALU13においては、セレクタ131では、上記プロセッサコア11から入力される32ビットの正規化係数nのデータから有効なLSB側5ビットのデータを選択する。乗算器133では、上記プロセッサコア11から入力される正規化逆数と被除数との乗算を行う(図1のステップS14に相当)。セレクタ132では、図11に示すように(n=9の場合)、乗算器133から出力される乗算結果のLSB側2nビット以上のnビットのデータを選択する(図1のステップS13及びステップS15に相当)。つまり、乗算結果を2−2n倍(2nビット右シフト)する。このセレクタ132において選択されたデータは、32ビットのデータのLSB側nビットにセットされて、商としてプロセッサコア11に出力される。
なお、データ処理プロセッサ10は、このような第1及び第2の拡張ALU12,13は必ずしも両方備える必要はなく、何れか一方のみでも構わない。この場合は、上記第1実施形態に係るデータ処理方法と組み合わせることにより、除算の高速化処理を実現可能であり、必要に応じて、プロセッサコア11のレジスタ111はレジスタR4,R5を備える。
また、第1の拡張ALU12と第2の拡張ALU13をひとつの拡張ALUとしてまとめることも可能である。この場合、上記プロセッサコア11から該まとめられた拡張ALUへの入力は、レジスタR0に格納された除数及びレジスタR1に格納された被除数であり、該まとめられた拡張ALUから上記プロセッサコア11への出力は商のみである。
以上説明したように、本第2実施形態に係るデータ処理プロセッサ10によれば、除数(R1)の逆数(1/R1)を被除数(R0)に乗ずることにより商(R6)を得るデータ処理プロセッサにおいて、除数の逆数(1/R1)のデータの有効ビットと被除数(R0)のデータの有効ビットの合計を、プロセッサコア11が備えるレジスタ111のビット幅(上記例ではmビット)以下に抑えるように、除数(R1)から正規化逆数(R2)及び正規化係数nを演算出力する第1の拡張ALU12と、被除数(R0)、正規化逆数(R2)及び正規化係数nから商(R6)を演算する第2の拡張ALU13との少なくとも一方を備えることによって、第1及び第2の拡張ALU12,13の演算結果がプロセッサコア11の1ワード(mビット)のレジスタ111に格納されるため、乗算回数と乗算後のビット操作回数を最小限に抑え、除算の商(R6)を高速に導出することが可能となる。
以上実施形態に基づいて本発明を説明したが、本発明は上述した実施形態に限定されるものではなく、本発明の要旨の範囲内で種々の変形や応用が可能なことは勿論である。
(付記)
前記の具体的実施形態から、以下のような構成の発明を抽出することができる。
(1) mビットのレジスタを備えたプロセッサにより除数の逆数に被除数を乗じて商を導出するデータ処理方法において、
上記除数に基づき、正規化係数nを導出する第1のデータ処理ステップと、
上記除数に基づき、有効nビットの正規化逆数を導出する第2のデータ処理ステップと、
上記被除数及び上記第1のデータ処理ステップで導出した上記正規化係数nに基づき、多くとも有効m−nビットの正規化被除数を導出する第3のデータ処理ステップと、
上記第3のデータ処理ステップで導出した上記正規化被除数と上記第2のデータ処理ステップで導出した上記正規化逆数とを乗じ、多くとも有効mビットの乗算結果を導出する第4のデータ処理ステップと、
上記第1のデータ処理ステップで導出した上記正規化係数nに基づき、上記第4のデータ処理ステップで導出した上記乗算結果から商を導出する第5のデータ処理ステップと、
を実行することを特徴とするデータ処理方法。
(対応する実施形態)
この(1)に記載のデータ処理方法に関する実施形態は、第1実施形態が対応する。その実施形態において、一例として、ステップS11が上記第1のデータ処理ステップに、ステップS12が上記第2のデータ処理ステップに、ステップS13が上記第3のデータ処理ステップに、ステップS14が上記第4のデータ処理ステップに、ステップS15が上記第5のデータ処理ステップに、それぞれ対応する。
(作用効果)
この(1)に記載のデータ処理方法によれば、除数の逆数のデータの有効ビットと被除数のデータの有効ビットの合計を、プロセッサが備えるレジスタのビット幅以下に抑えるように、正規化逆数及び正規化被除数を導出することによって、正規化逆数と正規化被除数の乗算結果がプロセッサの1ワードのレジスタに格納されるため、乗算回数と乗算後のビット操作回数を最小限に抑え、除算の商を高速に導出することが可能となる。
(2) 上記第1のデータ処理ステップは、上記除数に対し該除数が2以上2n+1未満となる正規化係数nがデータとして格納されたメモリから、上記除数に対するデータを読み出すことにより、上記正規化係数nを導出することを特徴とする(1)に記載のデータ処理方法。
(対応する実施形態)
この(2)に記載のデータ処理方法に関する実施形態は、第1実施形態が対応する。
(作用効果)
この(2)に記載のデータ処理方法によれば、除数をアドレスとしてメモリに与えるだけで正規化係数nを導出できるので、除算の高速処理が可能である。
(3) 上記第1のデータ処理ステップは、上記除数に基づいて、上記除数が2以上2n+1未満となる正規化係数nを演算することによって、上記正規化係数nを導出することを特徴とする(1)に記載のデータ処理方法。
(対応する実施形態)
この(3)に記載のデータ処理方法に関する実施形態は、第1実施形態が対応する。
(作用効果)
この(3)に記載のデータ処理方法によれば、専用のメモリを必要としないのでメモリ使用量を抑え、除数が一定で被除数が異なる除算を複数回実行する処理を高速に実行することが可能となる。
(4) 上記第2のデータ処理ステップは、上記除数に対し該除数の逆数と22nを乗じて得られる有効nビットの正規化逆数がデータとして格納されたメモリから、上記除数に対するデータを読み出すことにより、上記正規化逆数を導出することを特徴とする(1)に記載のデータ処理方法。
(対応する実施形態)
この(4)に記載のデータ処理方法に関する実施形態は、第1実施形態が対応する。
(作用効果)
この(4)に記載のデータ処理方法によれば、除数をアドレスとしてメモリに与えるだけで正規化逆数を導出できるので、除算の高速処理が可能である。
(5) 上記第2のデータ処理ステップは、上記除数及び上記第1のデータ処理ステップで導出した上記正規化係数nに基づいて、上記除数の逆数と22nとを乗じる演算を行うことによって、上記有効nビットの正規化逆数を導出することを特徴とする(1)に記載のデータ処理方法。
(対応する実施形態)
この(5)に記載のデータ処理方法に関する実施形態は、第1実施形態が対応する。
(作用効果)
この(5)に記載のデータ処理方法によれば、専用のメモリを必要としないのでメモリ使用量を抑え、除数が一定で被除数が異なる除算を複数回実行する処理を高速に実行することが可能となる。
(6) 上記第3のデータ処理ステップは、上記第1のデータ処理ステップで導出した上記正規化係数nに基づき、上記被除数に2−nを乗じることによって、多くとも有効m−nビットの上記正規化被除数を導出することを特徴とする(1)に記載のデータ処理方法。
(対応する実施形態)
この(6)に記載のデータ処理方法に関する実施形態は、第1実施形態が対応する。
(作用効果)
この(6)に記載のデータ処理方法によれば、被除数から正規化被除数を取り出すため演算が1つのmビットのレジスタに格納された被除数に2−nを乗じるだけ済む、つまり、1つのmビットのレジスタに対するnビットの右シフト操作だけで済むので、除算の高速処理が可能となる。
(7) 上記第5のデータ処理ステップは、上記第1のデータ処理ステップで導出した上記正規化係数nに基づき、上記第4のデータ処理ステップで導出した上記乗算結果に2−nを乗じることによって、多くとも有効m−nビットの上記商を導出することを特徴とする(1)に記載のデータ処理方法。
(対応する実施形態)
この(7)に記載のデータ処理方法に関する実施形態は、第1実施形態が対応する。
(作用効果)
この(7)に記載のデータ処理方法によれば、乗算結果から商を取り出すため演算が1つのmビットのレジスタに格納された乗算結果に2−nを乗じるだけ済む、つまり、1つのmビットのレジスタに対するnビットの右シフト操作だけで済むので、除算の高速処理が可能となる。
(8) mビットのレジスタを備え、除数の逆数に被除数を乗じて商を導出するデータ処理プロセッサにおいて、
上記除数を入力として、正規化係数n及び有効nビットの正規化逆数を出力する第1の拡張ALUと、
上記被除数と、上記第1の拡張ALUから出力された上記正規化係数n及び上記正規化逆数とを入力として、商を出力する第2の拡張ALUと、
の少なくとも一方を備えることを特徴とするデータ処理プロセッサ。
(対応する実施形態)
この(8)に記載のデータ処理プロセッサに関する実施形態は、第2実施形態が対応する。その実施形態において、一例として、データ処理プロセッサ10が上記データ処理プロセッサに、第1の拡張ALU12が上記第1の拡張ALUに、第2の拡張ALU13が上記第2の拡張ALUに、それぞれ対応する。
(作用効果)
この(8)に記載のデータ処理プロセッサによれば、除数の逆数を被除数に乗ずることにより商を得るデータ処理プロセッサにおいて、除数の逆数のデータの有効ビットと被除数のデータの有効ビットの合計を、プロセッサが備えるレジスタのビット幅以下に抑えるように、除数から正規化逆数及び正規化係数nを演算出力する第1の拡張ALUと、被除数、正規化逆数及び正規化係数nから商を演算する第2の拡張ALUと、の少なくとも一方を備えることによって、第1及び第2の拡張ALU12,13の演算結果がプロセッサの1ワードのレジスタに格納されるため、乗算回数と乗算後のビット操作回数を最小限に抑え、除算の商を高速に導出することが可能となる。
(9) 上記第1の拡張ALUは、上記除数に対し該除数が2以上2n+1未満となる正規化係数nがデータとして格納されたメモリを備え、該メモリから上記入力された除数に対するデータを読み出すことによって、上記正規化係数nを出力することを特徴とする(8)に記載のデータ処理プロセッサ。
(対応する実施形態)
この(9)に記載のデータ処理プロセッサに関する実施形態は、第2実施形態が対応する。その実施形態において、一例として、メモリ121が上記メモリに対応する。
(作用効果)
この(9)に記載のデータ処理プロセッサによれば、除数をアドレスとしてメモリに入力するだけで正規化係数nを導出できるので、除算の高速処理が可能である。
(10) 上記第1の拡張ALUは、上記入力された除数に基づいて、上記除数が2以上2n+1未満となる正規化係数nを演算することによって、上記正規化係数nを導出して出力することを特徴とする(8)に記載のデータ処理プロセッサ。
(対応する実施形態)
この(10)に記載のデータ処理プロセッサに関する実施形態は、第2実施形態が対応する。
(作用効果)
この(10)に記載のデータ処理プロセッサによれば、メモリ使用量を抑え、除数が一定で被除数が異なる除算を複数回実行する処理を高速に実行することが可能となる。
(11) 上記第1の拡張ALUは、上記除数に対し該除数の逆数と22nを乗じて得られる有効nビットの正規化逆数がデータとして格納されたメモリを備え、該メモリから上記入力された除数に対するデータを読み出すことによって、上記正規化逆数を出力することを特徴とする(8)に記載のデータ処理プロセッサ。
(対応する実施形態)
この(11)に記載のデータ処理プロセッサに関する実施形態は、第2実施形態が対応する。その実施形態において、一例として、メモリ122が上記メモリに対応する。
(作用効果)
この(11)に記載のデータ処理プロセッサによれば、除数をアドレスとしてメモリに入力するだけで正規化逆数を導出できるので、除算の高速処理が可能である。
(12) 上記第1の拡張ALUは、上記入力された除数及び上記出力する正規化係数nに基づいて、上記除数の逆数と22nとを乗じる演算を行うことによって、上記有効nビットの正規化逆数を導出して出力することを特徴とする(8)に記載のデータ処理プロセッサ。
(対応する実施形態)
この(12)に記載のデータ処理プロセッサに関する実施形態は、第2実施形態が対応する。
(作用効果)
この(12)に記載のデータ処理プロセッサによれば、メモリ使用量を抑え、除数が一定で被除数が異なる除算を複数回実行する処理を高速に実行することが可能となる。
(13) 上記第2の拡張ALUは、上記入力された被除数と上記正規化逆数とを乗じ、その乗算結果に対して、上記正規化係数nに基づいてさらに2−2nを乗じることにより、多くとも有効m−nビットの上記商を導出して出力することを特徴とする(8)に記載のデータ処理プロセッサ。
(対応する実施形態)
この(13)に記載のデータ処理プロセッサに関する実施形態は、第2実施形態が対応する。
(作用効果)
この(13)に記載のデータ処理プロセッサによれば、被除数と正規化逆数と正規化係数nとからハードウェアによって高速に商が導出されるので、除算の高速処理が可能である。
図1は、本発明の第1実施形態に係るデータ処理方法の処理フローを示す図である。 図2は、入力される除数に対して導出する正規化係数の関係を記した表を示す図である。 図3は、正規化係数の導出処理を説明するための処理フローチャートを示す図である。 図4は、除数のデータ範囲に対する正規化係数nと除数の逆数のデータ範囲の関係を記した表を示す図である。 図5は、除数のデータ範囲に対する正規化係数nと正規化逆数のデータ範囲の関係を記した表を示す図である。 図6は、被除数と除数との除算を実行することにより商を導出する処理の実行サイクル数と、除数の逆数を算出するために除算を実行しさらに被除数にその逆数を乗じることにより商を導出する処理の実行サイクル数とを比較して示す図である。 図7は、本発明の第2実施形態に係るデータ処理プロセッサのブロック構成図である。 図8は、メモリを使用して構成した第1の拡張ALUのブロック図である。 図9は、メモリを使わずに構成した第1の拡張ALUのブロック図である。 図10は、第2の拡張ALUのブロック図である。 図11は、第2の拡張ALUを構成する後段側のセレクタの入出力関係を示す図である。 図12は、従来のデータ処理方法の処理フローを示す図である。
符号の説明
10…データ処理プロセッサ、 11…プロセッサコア、 12…第1の拡張ALU、 13…第2の拡張ALU、 111,R0〜R6…レジスタ、 121,122…メモリ、 123…論理和回路、 124…エンコーダ、 125…除算器、 126,131,132…セレクタ、 133…乗算器。

Claims (13)

  1. mビットのレジスタを備えたプロセッサにより除数の逆数に被除数を乗じて商を導出するデータ処理方法において、
    上記除数に基づき、正規化係数nを導出する第1のデータ処理ステップと、
    上記除数に基づき、有効nビットの正規化逆数を導出する第2のデータ処理ステップと、
    上記被除数及び上記第1のデータ処理ステップで導出した上記正規化係数nに基づき、多くとも有効m−nビットの正規化被除数を導出する第3のデータ処理ステップと、
    上記第3のデータ処理ステップで導出した上記正規化被除数と上記第2のデータ処理ステップで導出した上記正規化逆数とを乗じ、多くとも有効mビットの乗算結果を導出する第4のデータ処理ステップと、
    上記第1のデータ処理ステップで導出した上記正規化係数nに基づき、上記第4のデータ処理ステップで導出した上記乗算結果から商を導出する第5のデータ処理ステップと、
    を実行することを特徴とするデータ処理方法。
  2. 上記第1のデータ処理ステップは、上記除数に対し該除数が2以上2n+1未満となる正規化係数nがデータとして格納されたメモリから、上記除数に対するデータを読み出すことにより、上記正規化係数nを導出することを特徴とする請求項1に記載のデータ処理方法。
  3. 上記第1のデータ処理ステップは、上記除数に基づいて、上記除数が2以上2n+1未満となる正規化係数nを演算することによって、上記正規化係数nを導出することを特徴とする請求項1に記載のデータ処理方法。
  4. 上記第2のデータ処理ステップは、上記除数に対し該除数の逆数と22nを乗じて得られる有効nビットの正規化逆数がデータとして格納されたメモリから、上記除数に対するデータを読み出すことにより、上記正規化逆数を導出することを特徴とする請求項1に記載のデータ処理方法。
  5. 上記第2のデータ処理ステップは、上記除数及び上記第1のデータ処理ステップで導出した上記正規化係数nに基づいて、上記除数の逆数と22nとを乗じる演算を行うことによって、上記有効nビットの正規化逆数を導出することを特徴とする請求項1に記載のデータ処理方法。
  6. 上記第3のデータ処理ステップは、上記第1のデータ処理ステップで導出した上記正規化係数nに基づき、上記被除数に2−nを乗じることによって、多くとも有効m−nビットの上記正規化被除数を導出することを特徴とする請求項1に記載のデータ処理方法。
  7. 上記第5のデータ処理ステップは、上記第1のデータ処理ステップで導出した上記正規化係数nに基づき、上記第4のデータ処理ステップで導出した上記乗算結果に2−nを乗じることによって、多くとも有効m−nビットの上記商を導出することを特徴とする請求項1に記載のデータ処理方法。
  8. mビットのレジスタを備え、除数の逆数に被除数を乗じて商を導出するデータ処理プロセッサにおいて、
    上記除数を入力として、正規化係数n及び有効nビットの正規化逆数を出力する第1の拡張ALUと、
    上記被除数と、上記第1の拡張ALUから出力された上記正規化係数n及び上記正規化逆数とを入力として、商を出力する第2の拡張ALUと、
    の少なくとも一方を備えることを特徴とするデータ処理プロセッサ。
  9. 上記第1の拡張ALUは、上記除数に対し該除数が2以上2n+1未満となる正規化係数nがデータとして格納されたメモリを備え、該メモリから上記入力された除数に対するデータを読み出すことによって、上記正規化係数nを出力することを特徴とする請求項8に記載のデータ処理プロセッサ。
  10. 上記第1の拡張ALUは、上記入力された除数に基づいて、上記除数が2以上2n+1未満となる正規化係数nを演算することによって、上記正規化係数nを導出して出力することを特徴とする請求項8に記載のデータ処理プロセッサ。
  11. 上記第1の拡張ALUは、上記除数に対し該除数の逆数と22nを乗じて得られる有効nビットの正規化逆数がデータとして格納されたメモリを備え、該メモリから上記入力された除数に対するデータを読み出すことによって、上記正規化逆数を出力することを特徴とする請求項8に記載のデータ処理プロセッサ。
  12. 上記第1の拡張ALUは、上記入力された除数及び上記出力する正規化係数nに基づいて、上記除数の逆数と22nとを乗じる演算を行うことによって、上記有効nビットの正規化逆数を導出して出力することを特徴とする請求項8に記載のデータ処理プロセッサ。
  13. 上記第2の拡張ALUは、上記入力された被除数と上記正規化逆数とを乗じ、その乗算結果に対して、上記正規化係数nに基づいてさらに2−2nを乗じることにより、多くとも有効m−nビットの上記商を導出して出力することを特徴とする請求項8に記載のデータ処理プロセッサ。
JP2008193881A 2008-07-28 2008-07-28 データ処理方法及びデータ処理プロセッサ Withdrawn JP2010033275A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008193881A JP2010033275A (ja) 2008-07-28 2008-07-28 データ処理方法及びデータ処理プロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008193881A JP2010033275A (ja) 2008-07-28 2008-07-28 データ処理方法及びデータ処理プロセッサ

Publications (1)

Publication Number Publication Date
JP2010033275A true JP2010033275A (ja) 2010-02-12

Family

ID=41737683

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008193881A Withdrawn JP2010033275A (ja) 2008-07-28 2008-07-28 データ処理方法及びデータ処理プロセッサ

Country Status (1)

Country Link
JP (1) JP2010033275A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020160704A (ja) * 2019-03-26 2020-10-01 日本電産株式会社 整数除算装置およびモータ制御装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020160704A (ja) * 2019-03-26 2020-10-01 日本電産株式会社 整数除算装置およびモータ制御装置
JP7036075B2 (ja) 2019-03-26 2022-03-15 日本電産株式会社 整数除算装置およびモータ制御装置

Similar Documents

Publication Publication Date Title
TWI608410B (zh) 標準格式中間結果
JP6853777B2 (ja) プログラム可能な有効度データを使用するデータ処理装置および方法
US9703531B2 (en) Multiplication of first and second operands using redundant representation
JP5307202B2 (ja) 精度制御反復算術論理演算ユニット
US8229993B2 (en) Method for performing decimal division
WO2016171847A1 (en) High performance division and root computation unit
JP3418460B2 (ja) 倍精度除算回路および方法
US9720646B2 (en) Redundant representation of numeric value using overlap bits
US20170139676A1 (en) Lane position information for processing of vector
US20080208945A1 (en) Method to compute an approximation to the reciprocal of the square root of a floating point number in ieee format
WO2013109532A1 (en) Algebraic processor
US6941334B2 (en) Higher precision divide and square root approximations
US9928031B2 (en) Overlap propagation operation
US8868633B2 (en) Method and circuitry for square root determination
CN110858137A (zh) 除以整数常数的浮点除法
JP2502836B2 (ja) 除算回路の前処理装置
GB2549153B (en) Apparatus and method for supporting a conversion instruction
JP2010033275A (ja) データ処理方法及びデータ処理プロセッサ
Jaiswal et al. Taylor series based architecture for quadruple precision floating point division
US10353671B2 (en) Circuitry and method for performing division
US20030037088A1 (en) Speed of execution of a conditional subtract instruction and increasing the range of operands over which the instruction would be performed correctly
US20080307032A1 (en) Divider Circuit
US20130132452A1 (en) Method and Apparatus for Fast Computation of Integral and Fractional Parts of a High Precision Floating Point Multiplication Using Integer Arithmetic
JP2007072857A (ja) 演算処理装置および情報処理装置
JP2508286B2 (ja) 平方根演算装置

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20111004