(57)【要約】【課題】出力値の精度の低下を抑制可能な出力値生成回路、プロセッサ、出力値生成方法、及びプログラムを提供する。【解決手段】出力値生成回路１０は、入力値Ｄ１を変換して得られる出力値を浮動小数点表現した場合の仮数部Ｄ１１と指数部Ｄ１２とを生成し、仮数部Ｄ１１と指数部Ｄ１２とをそれぞれ個別に出力する出力部（逆数出力部１１）を有する。【選択図】図１
2019175225.tif 000002
【特許請求の範囲】
【請求項１】
入力値を変換して得られる出力値を浮動小数点表現した場合の仮数部と指数部とを生成し、前記仮数部と前記指数部とをそれぞれ個別に出力する出力部を有する、
出力値生成回路。
【請求項２】
前記入力値と前記出力値との関係が所定の関数となる、
請求項１に記載の出力値生成回路。
【請求項３】
前記出力値が前記入力値の逆数である、
請求項１に記載の出力値生成回路。
【請求項４】
前記出力部は、前記入力値に基づいて決定されるアドレスに対応する値として前記仮数部を生成する、
請求項１〜３のいずれか１項に記載の出力値生成回路。
【請求項５】
前記出力部は、前記入力値に基づいて決定されるアドレスに対応する値として前記指数部を生成する、
請求項１〜３のいずれか１項に記載の出力値生成回路。
【請求項６】
前記入力値をシフト演算して求めた中間演算値に基づいて前記アドレスが決定され、
前記中間演算値を求めるために前記入力値をシフトさせた桁数と、前記中間演算値を浮動小数点表現した場合の指数とに基づいて前記指数部が決定される、
請求項５に記載の出力値生成回路。
【請求項７】
前記指数部と前記仮数部との両方を用いた演算処理を行う演算部を更に備える、
請求項１〜６のいずれかに記載の出力値生成回路。
【請求項８】
請求項１〜７のいずれかに記載の出力値生成回路を含むプロセッサであって、
前記入力値が入力されると、前記出力値生成回路に前記仮数部と前記指数部とをそれぞれ個別に出力する処理を実行させる、
プロセッサ。
【請求項９】
入力値を変換して得られる出力値を浮動小数点表現した場合の仮数部と指数部とを生成し、前記仮数部と前記指数部とをそれぞれ個別に出力する、
出力値生成方法。
【請求項１０】
コンピュータシステムに、
入力値を変換して得られる出力値を浮動小数点表現した場合の仮数部と指数部とを生成し、前記仮数部と前記指数部とをそれぞれ個別に出力する出力処理を、実行させるための、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、出力値生成回路、プロセッサ、出力値生成方法、及びプログラムに関する。より詳細には、本開示は、入力値を変換した出力値を生成する出力値生成回路、プロセッサ、出力値生成方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、整数が入力されると、整数の逆数をテーブルから読み出して出力するテーブル読み出し回路があった（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１−２６３８１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示されたテーブル読み出し回路では、出力が固定小数点の数であるため、入力の整数値が大きくなるにつれて出力値の精度が低下するという問題があった。
【０００５】
本開示の目的は、出力値の精度の低下を抑制可能な出力値生成回路、プロセッサ、出力値生成方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
本開示の一態様の出力値生成回路は出力部を有する。前記出力部は、入力値を変換して得られる出力値を浮動小数点表現した場合の仮数部と指数部とを生成し、前記仮数部と前記指数部とをそれぞれ個別に出力する。
【０００７】
本開示の一態様のプロセッサは前記出力値生成回路を含む。前記プロセッサは、前記入力値が入力されると、前記出力値生成回路に前記仮数部と前記指数部とをそれぞれ個別に出力する処理を実行させる。
【０００８】
本開示の一態様の出力値生成方法は、入力値を変換して得られる出力値を浮動小数点表現した場合の仮数部と指数部とを生成し、前記仮数部と前記指数部とをそれぞれ個別に出力する。
【０００９】
本開示の一態様のプログラムは、コンピュータシステムに出力処理を実行させるためのプログラムである。前記出力処理では、入力値を変換して得られる出力値を浮動小数点表現した場合の仮数部と指数部とを生成し、前記仮数部と前記指数部とをそれぞれ個別に出力する。
【発明の効果】
【００１０】
本開示によれば、出力値の精度の低下を抑制可能な出力値生成回路、プロセッサ、出力値生成方法、及びプログラムを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本開示の出力値生成回路を含むプロセッサのブロック図である。
【図２】図２は、同上の出力値生成回路のブロック図である。
【図３】図３Ａ〜図３Ｃは、同上の出力値生成回路によるアドレス生成処理の説明図である。
【図４】図４は、同上の出力値生成回路の動作を示すフローチャートである。
【発明を実施するための形態】
【００１２】
（実施形態）
（１）概要
本実施形態の出力値生成回路１０は、図１に示すように、出力部（逆数出力部１１）を有する。出力部（逆数出力部１１）は、図２に示すように、入力値Ｄ１を変換して得られる出力値を浮動小数点表現した場合の仮数部Ｄ１１と指数部Ｄ１２とを生成し、仮数部Ｄ１１と指数部Ｄ１２とをそれぞれ個別に出力する。
【００１３】
本実施形態のプロセッサ１は出力値生成回路１０を含む。プロセッサ１は、入力値Ｄ１が入力されると、出力値生成回路１０に仮数部Ｄ１１と指数部Ｄ１２とをそれぞれ個別に出力する処理を実行させる。
【００１４】
ここにおいて、入力値Ｄ１を変換して出力値を得るとは、例えば入力値Ｄ１と出力値との対応関係を表す関数に基づいて入力値Ｄ１を出力値に変換することを言う。入力値Ｄ１と出力値との対応関係を表す関数は、例えば入力値の逆数を出力する関数、入力値の平方根を出力する関数、入力値の平方根の逆数を出力する関数、三角関数、逆三角関数等がある。また、出力値は、所定の関数を用いて入力値を変換した値と完全に同一である必要はなく、所定の関数を用いて入力値を変換した値を、許容される誤差（例えば、−０．１％以上かつ０．１％以下の誤差）の範囲で近似した近似値であってもよい。
【００１５】
本実施形態の出力値生成回路１０及びプロセッサ１では、浮動小数点演算器を用いることなく、入力値を変換して得られる出力値を浮動小数点表現した場合の仮数部Ｄ１１と指数部Ｄ１２とをそれぞれ個別に出力できる。出力値生成回路１０は、出力値を浮動小数点表現した場合の仮数部Ｄ１１と指数部Ｄ１２とをそれぞれ個別に出力するので、仮数部Ｄ１１の桁数に応じた精度の出力を得ることができ、出力値の精度の低下を抑制可能である、という利点がある。
【００１６】
（２）詳細
本実施形態の出力値生成回路１０は、例えば、カメラが撮影したデジタル画像を画像処理する際の演算処理に用いられる。例えば、自動車に搭載されたカメラのデジタル画像から人や車線などの物体を検出する画像処理を行う場合、デジタル画像からエッジパターン・色調等の特徴量を検出するために、デジタル画像に微分フィルタ等のフィルタ処理を施す場合がある。フィルタ処理では、デジタル画像の各画素の画素値を所定の値で除算する演算を行う場合があり、このような除算演算に本実施形態の出力値生成回路１０は用いられる。すなわち、ある数（被除数）を除数で割る除算演算を行う場合、出力値生成回路１０は、被除数を除数で割る除算演算をそのまま行うのではなく、除数の逆数を求め、除数の逆数を被除数に乗算することで、被除数を除数で割った値を求めている。これにより、デジタル画像の各画素の画素値を同じ値（除数）で割る演算処理を行う場合、出力値生成回路１０は、まず除数の逆数を求め、この逆数を各画素の画素値に乗算することで、各画素の画素値を除数で割った値を求めることができる。したがって、各画素の画素値を除数で割った値を求める場合に、除数の逆数を求める演算は１回だけ行えばよく、演算処理の処理コストを低減可能である。
【００１７】
以下、本実施形態の出力値生成回路１０及び出力値生成回路１０を含むプロセッサ１について説明する。
【００１８】
（２．１）構成
図１に示すように、プロセッサ１は、出力値生成回路１０と、制御回路２０と、インターフェイス（Ｉ／Ｆ）３０とを備える。
【００１９】
インターフェイス（Ｉ／Ｆ）３０は、出力値生成回路１０及び制御回路２０と、メモリ２等との間でバス３を介してデータを授受する。
【００２０】
メモリ２は、プロセッサ１が実行するプログラム（例えば画像処理のためのプログラム）を記憶する。メモリ２には、入力値Ｄ１から生成される中間演算値（例えば０から２５５までの整数）Ｄ１０の逆数を浮動小数点演算した場合の仮数部Ｄ１１と指数Ｄ１２１とが記憶されている（図２参照）。具体的には、メモリ２は、入力値Ｄ１から生成される中間演算値Ｄ１０に基づいて決定されるアドレスに仮数部Ｄ１１のデータを格納した仮数テーブルと、中間演算値Ｄ１０に基づいて決定されるアドレスに指数Ｄ１２１のデータを格納した指数テーブルとを記憶する。
【００２１】
制御回路２０は、インターフェイス３０を介してメモリ２から演算命令を取得し、演算命令に従って出力値生成回路１０の処理を制御する。
【００２２】
出力値生成回路１０は、入力値を変換して得られる出力値を浮動小数点表現した場合の仮数部と指数部とを生成し、仮数部と指数部とをそれぞれ個別に出力する。ここで、入力値Ｄ１と出力値との関数が所定の関数となる。本実施形態では、所定の関数が入力値Ｄ１の逆数を出力する関数であり、出力値は入力値Ｄ１の逆数となる。
【００２３】
出力値生成回路１０は、逆数出力部１１と、演算部１２とを備える。
【００２４】
逆数出力部１１は、入力値Ｄ１の逆数である出力値を浮動小数点表現した場合の仮数部Ｄ１１と指数部Ｄ１２とを生成し、仮数部Ｄ１１と指数部Ｄ１２とをそれぞれ個別に出力する。逆数出力部１１は、図２に示すように、アドレス生成部１１０と、第１出力部１１１と、第２出力部１１２と、指数部演算部１１３とを備える。
【００２５】
アドレス生成部１１０は、入力値Ｄ１に基づいて指数テーブル及び仮数テーブルをそれぞれ参照するアドレスを決定する。アドレス生成部１１０は、入力値Ｄ１に基づいて生成される中間演算値Ｄ１０の逆数の仮数部Ｄ１１が記憶されている仮数テーブルのアドレスを生成する。また、アドレス生成部１１０は、入力値Ｄ１に基づいて生成される中間演算値Ｄ１０の逆数の指数Ｄ１２１が記憶されている仮数テーブルのアドレスを生成する。
【００２６】
ここで、アドレス生成部１１０によるアドレス生成処理を図３Ａ〜図３Ｃを参照して説明する。図３Ａに示すように、逆数出力部１１に例えば１６ビットの入力値Ｄ１が入力される場合、アドレス生成部１１０は、入力値Ｄ１の最上位ビットから連続する「０」の個数Ｎ１をカウントする。図３Ａの例では、入力値Ｄ１の最上位ビットから「０」が４つ連続している。アドレス生成部１１０は、最上位ビットから「０」が連続する個数Ｎ１（例えば４つ）をカウントする。アドレス生成部１１０は、入力値Ｄ１をＮ１ビットだけ左シフトして「０」を消去し（図３Ｂ参照）、上位８ビットのデータである中間演算値Ｄ１０を求める（図３Ｃ参照）。換言すれば、アドレス生成部１１０は、入力値Ｄ１をＮ１ビットだけ左シフトして「０」を消去した後、８ビットの中間演算値Ｄ１０を生成するためにＮ２ビットだけ右シフトしている。アドレス生成部１１０は、中間演算値Ｄ１０を指数テーブル及び仮数テーブルをそれぞれ参照するアドレスとして決定し、アドレスのデータ（中間演算値Ｄ１０の値）を第１出力部１１１及び第２出力部１１２にそれぞれ出力する。アドレス生成部１１０は１６ビットの入力値Ｄ１から８ビットの中間演算値Ｄ１０を生成し、この中間演算値Ｄ１０を指数テーブル及び仮数テーブルをそれぞれ参照するアドレスとしている。よって、指数テーブル及び仮数テーブルに記憶する仮数部Ｄ１１及び指数Ｄ１２１のデータ量を削減できる。なお、本実施形態では入力値Ｄ１が１６ビットの正の整数であるが、入力値Ｄ１は８ビットでも３２ビットでもよく、入力値Ｄ１及び中間演算値Ｄ１０のビット数は演算処理の内容に応じて適宜変更可能である。また、本実施形態では中間演算値Ｄ１０が８ビットの正の整数であるが、中間演算値Ｄ１０は８ビットの整数に限定されず、入力値Ｄ１よりもビット数が少ない整数値であればよい。
【００２７】
第１出力部１１１は、アドレス生成部１１０が生成したアドレスを用いて、メモリ２の仮数テーブルにアクセスすることで、中間生成値Ｄ１０の逆数の仮数部Ｄ１１を取得（生成）し、生成した仮数部Ｄ１１をスタックメモリに記憶させる。第１出力部１１１（逆数出力部１１）は、入力値Ｄ１に基づいて決定されるアドレスに対応する値として仮数部Ｄ１１を生成する。
【００２８】
第２出力部１１２は、アドレス生成部１１０が生成したアドレスを用いて、メモリ２の指数テーブルにアクセスすることで、中間生成値Ｄ１０の逆数の指数Ｄ１２１を取得（生成）し、生成した指数Ｄ１２１を指数部演算部１１３に出力する。
【００２９】
指数部演算部１１３には、第２出力部１１２から指数Ｄ１２１が入力される。また、指数部演算部１１３には、アドレス生成部１１０から、入力値Ｄ１及び中間演算値Ｄ１０のビット数のデータと、個数Ｎ１のデータとが入力される。指数部演算部１１３は、入力値Ｄ１及び中間演算値Ｄ１０のビット数のデータと、個数Ｎ１のデータとに基づいて、中間演算値Ｄ１０の右シフト数Ｎ２を計算する。指数部演算部１１３は、入力値Ｄ１のビット数から、個数Ｎ１と、中間演算値Ｄ１０のビット数とを差し引くことによって、右シフト数Ｎ２を計算により求める。そして、指数部演算部１１３は、第２出力部１１２から入力された指数Ｄ１２１から、右シフト数Ｎ２を差し引くことによって、入力値Ｄ１の逆数（１／Ｄ１）を浮動小数点表現した場合の指数部Ｄ１２を求め、指数部Ｄ１２をスタックメモリに記憶させる。つまり、第２出力部１１２及び指数部演算部１１３（逆数出力部１１）は、入力値Ｄ１に基づいて決定されるアドレスに対応する値として指数部Ｄ１２を生成する。さらに言えば、本実施形態では、アドレス生成部１１０が入力値Ｄ１をシフト演算して求めた中間演算値Ｄ１０に基づいてアドレスを決定している。そして、中間演算値Ｄ１０の右シフト数Ｎ２と、中間演算値Ｄ１０を浮動小数点表現した場合の指数Ｄ１２１とに基づいて指数部Ｄ１２が決定されている。
【００３０】
ここで、入力値Ｄ１は、中間演算値Ｄ１０と、中間演算値Ｄ１０の右シフト数Ｎ２とを用いると下記の式［数１］のように表される。また、入力値Ｄ１の逆数は、仮数部Ｄ１１、指数Ｄ１２１、及び指数部Ｄ１２を用いると下記の式［数２］のように表される。
【００３１】
【数１】
2019175225.tif 000003
【００３２】
【数２】
2019175225.tif 000004
【００３３】
次に、演算部１２について説明する。演算部１２は、スタックメモリから読み込んだ仮数部Ｄ１１及び指数部Ｄ１２と、メモリ２からインターフェイス３０を介して入力される被除数Ｄ２とを用いて、被除数Ｄ２を除数である入力値Ｄ１で割った値Ｄ４を求める演算処理を行う。つまり、出力値生成回路１０は、仮数部Ｄ１１と指数部Ｄ１２との両方を用いた演算処理を行う演算部１２を更に備える。
【００３４】
演算部１２は乗算部１３とシフト演算部１４とを備える。
【００３５】
乗算部１３は、スタックメモリから読み込んだ仮数部Ｄ１１と被除数Ｄ２とを乗算して得た乗算結果Ｄ３をシフト演算部１４に出力する。
【００３６】
シフト演算部１４は、スタックメモリから読み込んだ指数部Ｄ１２に応じた桁数だけ、乗算部１３から出力される乗算結果Ｄ３をシフトすることで、被除数Ｄ２を除数である入力値Ｄ１で割った値Ｄ４を求める。そして、シフト演算部１４は、演算結果の値Ｄ４を、インターフェイス３０を介してメモリ２等に出力する。ここで、値Ｄ４は、被除数Ｄ２、仮数部Ｄ１１、及び指数部Ｄ１２を用いると下記の式［数３］で表される。
【００３７】
【数３】
2019175225.tif 000005
【００３８】
（２．２）動作
プロセッサ１が、メモリ２に記憶されたプログラムに従って、被除数Ｄ２を除数である入力値Ｄ１で割る除算命令を実行する場合の処理を図４に基づいて説明する。ここでは、複数の被除数Ｄ２を同じ値（入力値Ｄ１）で割る除算命令を実行する場合の処理について説明する。
【００３９】
プロセッサ１の制御回路２０が、プロセッサ１に実装された除算命令を実行すると、出力値生成回路１０に以下に説明するステップＳ１〜Ｓ６までの処理を実行させる。
【００４０】
まず、逆数出力部１１のアドレス生成部１１０が、入力値Ｄ１の最上位ビットから連続する「０」の個数Ｎ１をカウントする（Ｓ１）。
【００４１】
アドレス生成部１１０は、入力値Ｄ１をＮ１ビットだけ左シフトして０を消去した後、Ｎ２ビットだけ右シフトして、８ビットの中間演算値Ｄ１０を生成する。そして、アドレス生成部１１０は、中間演算値Ｄ１０に基づいて仮数テーブル及び指数テーブルにアクセスするためのアドレスを生成する（Ｓ２）。アドレス生成部１１０は、中間演算値Ｄ１０の値そのものを仮数テーブルにアクセスするためのアドレスとして第１出力部１１１に出力し、中間演算値Ｄ１０の値そのものを指数テーブルにアクセスするためのアドレスとして第２出力部１１２に出力する。なお、本実施形態では、仮数テーブルにアクセスするためのアドレスと、指数テーブルにアクセスするためのアドレスとが同じであるが、仮数テーブルにアクセスするためのアドレスと、指数テーブルにアクセスするためのアドレスとが異なっていてもよい。
【００４２】
第１出力部１１１は、アドレス生成部１１０からアドレスが入力されると、このアドレスを用いて仮数テーブルにアクセスし、中間演算値Ｄ１０を浮動小数点表現した場合の仮数部Ｄ１１を生成する。また、第２出力部１１２は、アドレス生成部１１０からアドレスが入力されると、このアドレスを用いて指数テーブルにアクセスし、中間演算値Ｄ１０を浮動小数点表現した場合の指数Ｄ１２１を生成する（Ｓ３）。
【００４３】
第１出力部１１１は、生成した仮数部Ｄ１１をスタックメモリに出力する。第２出力部１１２は、生成した指数Ｄ１２１を指数部演算部１１３に出力する。指数部演算部１１３は、アドレス生成部１１０が出力した個数Ｎ１に基づいて右シフト数Ｎ２を求め、第２出力部１１２が出力した指数Ｄ１２１から右シフト数Ｎ２を減算して指数部Ｄ１２を求める。つまり、中間演算値Ｄ１０を求めるために入力値Ｄ１をシフトさせた桁数である右シフト数Ｎ２と、中間演算値Ｄ１０を浮動小数点表現した場合の指数Ｄ１２１とに基づいて、入力値Ｄ１の逆数を浮動小数点表現した場合の指数部Ｄ１２が決定される。そして、指数部演算部１１３は、指数Ｄ１２１と右シフト数Ｎ２とに基づいて決定した指数部Ｄ１２をスタックメモリに出力する。これにより、逆数出力部１１が、仮数部Ｄ１１と指数部Ｄ１２とをそれぞれ個別に出力する（Ｓ４）。
【００４４】
そして、演算部１２が、スタックメモリに記憶された仮数部Ｄ１１と指数部Ｄ１２とを用いて、複数の被除数Ｄ２を同じ値（入力値Ｄ１）で割った値を求めるステップＳ５，Ｓ６の処理を繰り返し実行する。
【００４５】
ステップＳ５では、乗算部１３が、仮数部Ｄ１１と被除数Ｄ２とを乗算する。そして、ステップＳ６では、シフト演算部１４が、乗算部１３の乗算結果Ｄ３を、指数部Ｄ１２に基づいてシフト演算することで、被除数Ｄ２を除数である入力値Ｄ１で割った値Ｄ４を求める。
【００４６】
複数の被除数Ｄ２のそれぞれにステップＳ５，Ｓ６の処理を実行すると、プロセッサ１は、複数の被除数Ｄ２を入力値Ｄで割った値を求める除算処理を終了する。
【００４７】
このように、本実施形態のプロセッサ１では、被除数Ｄ２を除数である入力値Ｄ１で割る除算演算を行うために、除数である入力値Ｄ１の逆数を浮動小数点表現した場合の仮数部Ｄ１１と指数部Ｄ１２とを求めている。プロセッサ１の逆数出力部１１は、入力値Ｄ１の逆数（出力値）を浮動小数点表現した場合の仮数部Ｄ１１と指数部Ｄ１２とを求めて、それぞれ個別に出力する。したがって、仮数部Ｄ１１の桁数に応じた精度の出力を得ることができるので、出力値の精度の低下を抑制可能であり、また浮動小数点演算器を備えていなくても後段の演算処理（例えば除算処理）を行うことができる。そして、プロセッサ１は、この仮数部Ｄ１１及び指数部Ｄ１２を用いて被除数Ｄ２を入力値Ｄ１で割った値を求めている。したがって、入力値Ｄ１の逆数を浮動小数点表現した場合の仮数部Ｄ１１及び指数部Ｄ１２を求めてスタックメモリ等に記憶させておけば、この仮数部Ｄ１１と指数部Ｄ１２を用いて複数回の除算演算を行うことができる。よって、複数の被除数Ｄ２を同じ入力値Ｄ１で割る複数回の除算演算を行う場合に演算処理の処理コストを低減することができる。
【００４８】
（３）変形例
上記実施形態は、本開示の様々な実施形態の一つに過ぎない。上記実施形態は、本開示の目的を達成できれば、設計等に応じて種々の変更が可能である。また、出力値生成回路１０と同様の機能は、出力値生成方法、コンピュータプログラム、又はプログラムを記録した非一時的な記録媒体等で具現化されてもよい。一態様に係る出力値生成方法は、入力値Ｄ１を変換して得られる出力値を浮動小数点表現した場合の仮数部Ｄ１１と指数部Ｄ１２とを生成し、仮数部Ｄ１１と指数部Ｄ１２とをそれぞれ個別に出力する。一態様に係る（コンピュータ）プログラムは、コンピュータシステムに、出力処理を、実行させるためのプログラムである。出力処理は、入力値Ｄ１を変換して得られる出力値を浮動小数点表現した場合の仮数部Ｄ１１と指数部Ｄ１２とを生成し、仮数部Ｄ１１と指数部Ｄ１２とをそれぞれ個別に出力する処理である。ここにおいて、プログラムとは、例えば、除算処理等の算術処理をプロセッサ１に実行させるためにプロセッサ１に実装された命令又は命令セットを含む。また、一態様に係るプロセッサは、上記のプログラムが実装されたプロセッサであって、上記の出力値生成回路１０を含む。プロセッサは、入力値Ｄ１が入力されると、出力値生成回路１０に仮数部Ｄ１１と指数部Ｄ１２とをそれぞれ個別に出力する処理を実行させる。
【００４９】
以下、上記の実施形態の変形例を列挙する。以下に説明する変形例は、適宜組み合わせて適用可能である。
【００５０】
本開示における出力値生成回路１０又は出力値生成方法の実行主体は、コンピュータシステムを含んでいる。コンピュータシステムは、ハードウェアとしてのプロセッサ及びメモリを主構成とする。コンピュータシステムのメモリに記録されたプログラムをプロセッサが実行することによって、本開示における装置、システム又は方法の実行主体としての機能が実現される。プログラムは、コンピュータシステムのメモリに予め記録されていてもよいが、電気通信回線を通じて提供されてもよいし、コンピュータシステムで読み取り可能な非一時的な記録媒体に記録されて提供されてもよい。コンピュータシステムで読み取り可能な非一時的な記録媒体は、メモリカード、光学ディスク、ハードディスクドライブ等である。コンピュータシステムのプロセッサは、半導体集積回路（ＩＣ）又は大規模集積回路（ＬＳＩ）を含む１乃至複数の電子回路で構成される。複数の電子回路は、１つのチップに集約されていてもよいし、複数のチップに分散して設けられていてもよい。複数のチップは、１つの装置に集約されていてもよいし、複数の装置に分散して設けられていてもよい。
【００５１】
上記の実施形態では、出力値生成回路１０が、入力値Ｄ１の逆数である出力値を浮動小数点表現した場合の仮数部Ｄ１１と指数部Ｄ１２とをそれぞれ出力する出力部（逆数出力部１１）を備えているが、出力部は入力値Ｄ１の逆数を出力するものに限定されない。入力値Ｄ１と出力値との関係が所定の関数となればよく、例えば、入力値Ｄ１の平方根を出力する関数、入力値Ｄ１の平方根の逆数を出力する関数、三角関数、逆三角関数等の関数でもよい。
【００５２】
上記の実施形態では、出力値生成回路１０が、逆数出力部１１から出力される仮数部Ｄ１１及び指数部Ｄ１２を用いて所定の演算処理を行う演算部１２を備えているが、演算部１２が逆数出力部１１の外部にあってもよい。この場合、逆数出力部１１から出力される仮数部Ｄ１１及び指数部Ｄ１２はスタックメモリ等に記憶され、演算部１２は、スタックメモリ等から仮数部Ｄ１１及び指数部Ｄ１２を読み出して後段の演算処理を行う。
【００５３】
上記の実施形態では、メモリ２に仮数テーブル及び指数テーブルが記憶されているが、プロセッサ１の内部メモリに仮数テーブル及び指数テーブルが記憶されていてもよい。
【００５４】
また、出力値生成回路１０は、入力値Ｄ１に基づいて決定されるアドレスを用いて仮数テーブルから仮数部を生成し、指数テーブルから指数部を生成しているが、仮数テーブル及び指数テーブルを備えることは必須ではない。つまり、入力値Ｄ１に基づいて決定されるアドレスと仮数部とが対応づけてメモリ２又は内部メモリに記憶されていればよく、指数テーブルは必須ではない。同様に、入力値Ｄ１に基づいて決定されるアドレスと指数部とが対応づけてメモリ２又は内部メモリに記憶されていればよく、指数テーブルは必須ではない。
【００５５】
また、第２出力部１１２は、中間演算値Ｄ１０を浮動小数点表現した場合の指数部を指数テーブルから取得しているが、演算によって指数部を求めてもよい。
【００５６】
また、出力値生成回路１０は、入力値Ｄ１をシフト演算して求めた中間演算値Ｄ１０に基づいて決定されるアドレスに対応付けて仮数部及び指数部を記憶しており、入力値Ｄ１の個数に比べてメモリ２に記憶する仮数部及び指数部の個数を削減している。これによって、メモリ２のメモリ容量を削減することが可能であるが、中間演算値Ｄ１０を生成することは必須ではない。つまり、メモリ２又は内部メモリに、入力値Ｄ１をアドレスとしてそのアドレスに、入力値Ｄ１を浮動小数点表現した場合の仮数部のデータを格納した仮数テーブルを記憶してもよい。同様に、メモリ２又は内部メモリに、入力値Ｄ１をアドレスとしてそのアドレスに、入力値Ｄ１を浮動小数点表現した場合の指数部のデータを格納した指数テーブルを記憶してもよい。この場合、アドレス生成部１１０は不要であり、第１出力部１１１は、入力値Ｄ１をアドレスとして仮数テーブルから仮数部を取得し、第２出力部１１２は、入力値Ｄ１をアドレスとして指数テーブルから指数部を取得すればよい。
【００５７】
（まとめ）
以上説明したように、第１の態様の出力値生成回路（１０）は出力部（１１）を有する。出力部（１１）は、入力値（Ｄ１）を変換して得られる出力値を浮動小数点表現した場合の仮数部（Ｄ１１）と指数部（Ｄ１２）とを生成し、仮数部（Ｄ１１）と指数部（Ｄ１２）とをそれぞれ個別に出力する。
【００５８】
この態様によれば、仮数部（Ｄ１１）と指数部（Ｄ１２）とをそれぞれ個別に出力するので、出力値の精度の低下を抑制可能であり、浮動小数点演算器を持たない回路又はプロセッサでも後段の処理を行うことができる、という利点がある。
【００５９】
第２の態様の出力値生成回路（１０）では、第１の態様において、入力値（Ｄ１）と出力値との関係が所定の関数となる。
【００６０】
この態様によれば、出力値の精度の低下を抑制可能である。
【００６１】
第３の態様の出力値生成回路（１０）では、第１の態様において、出力値が入力値（Ｄ１）の逆数である。
【００６２】
この態様によれば、出力値の精度の低下を抑制可能である。
【００６３】
第４の態様の出力値生成回路（１０）では、第１〜第３の態様において、出力部（１１）は、入力値（Ｄ１）に基づいて決定されるアドレスに対応する値として仮数部（Ｄ１１）を生成する。
【００６４】
この態様によれば、仮数部（Ｄ１１）をその都度演算する必要がなく、演算処理のコストを低減可能である。
【００６５】
第５の態様の出力値生成回路（１０）では、第１〜第３の態様において、出力部（１１）は、入力値（Ｄ１）に基づいて決定されるアドレスに対応する値として指数部（Ｄ１２）を生成する。
【００６６】
この態様によれば、指数部（Ｄ１２）をその都度演算する必要がなく、演算処理のコストを低減可能である。
【００６７】
第６の態様の出力値生成回路（１０）では、第５の態様において、入力値（Ｄ１）をシフト演算して求めた中間演算値（Ｄ１０）に基づいてアドレスが決定される。出力値生成回路（１０）では、中間演算値（Ｄ１０）を求めるために入力値（Ｄ１）をシフトさせた桁数（Ｎ２）と、中間演算値（Ｄ１０）を浮動小数点表現した場合の指数（Ｄ１２１）とに基づいて指数部（Ｄ１２）が決定される。
【００６８】
この態様によれば、入力値（Ｄ１）そのものをアドレスとする場合に比べて、記憶しておく指数（Ｄ１２１）の数を減らすことができ、指数（Ｄ１２１）を記憶するために必要なメモリの記憶容量を低減できる。
【００６９】
第７の態様の出力値生成回路（１０）は、第１〜第６の態様において、指数部（Ｄ１２）と仮数部（Ｄ１１）との両方を用いた演算処理を行う演算部（１２）を更に備える。
【００７０】
この態様によれば、出力値の精度の低下を抑制可能である。
【００７１】
第８の態様のプロセッサ（１）は、第１〜第７のいずれかの態様の出力値生成回路（１０）を含む。プロセッサ（１）は、入力値（Ｄ１）が入力されると、出力値生成回路（１０）に仮数部（Ｄ１１）と指数部（Ｄ１２）とをそれぞれ個別に出力する処理を実行させる。
【００７２】
この態様によれば、出力値の精度の低下を抑制可能であり、浮動小数点演算器を持たない回路又はプロセッサでも後段の処理を行うことができる、という利点がある。
【００７３】
第９の態様の出力値生成方法では、入力値（Ｄ１）を変換して得られる出力値を浮動小数点表現した場合の仮数部（Ｄ１１）と指数部（Ｄ１２）とを生成し、仮数部（Ｄ１１）と指数部（Ｄ１２）とをそれぞれ個別に出力する。
【００７４】
この態様によれば、出力値の精度の低下を抑制可能であり、浮動小数点演算器を持たない回路又はプロセッサでも後段の処理を行うことができる、という利点がある。
【００７５】
第１０の態様のプログラムは、コンピュータシステムに出力処理を実行させるためのプログラムである。出力処理では、入力値（Ｄ１）を変換して得られる出力値を浮動小数点表現した場合の仮数部（Ｄ１１）と指数部（Ｄ１２）とを生成し、仮数部（Ｄ１１）と指数部（Ｄ１２）とをそれぞれ個別に出力する。
【００７６】
この態様によれば、出力値の精度の低下を抑制可能であり、浮動小数点演算器を持たない回路又はプロセッサでも後段の処理を行うことができる、という利点がある。
【００７７】
上記態様に限らず、上記の実施形態に係る出力値生成回路（１０）の種々の構成（変形例を含む）は、出力値生成方法、出力値生成回路（１０）を含むプロセッサ、（コンピュータ）プログラム、又はプログラムを記録した非一時的な記録媒体等で具現化可能である。
【００７８】
第２〜第７の態様に係る構成については、出力値生成回路（１０）に必須の構成ではなく、適宜省略可能である。
【符号の説明】
【００７９】
１  プロセッサ
１０  出力値生成回路
１１  逆数出力部（出力部）
１２  演算部
Ｄ１  入力値
Ｄ１０  中間演算値
Ｄ１１  仮数部
Ｄ１２  指数部
【図１】
2019175225.tif 000006
【図２】
2019175225.tif 000007
【図３】
2019175225.tif 000008
【図４】
2019175225.tif 000009