(57)【特許請求の範囲】
【請求項１】
ロード命令によるロード処理によりメモリからレジスタファイルに浮動小数点データを読み込み、演算命令による演算処理により前記レジスタファイルに格納されている浮動小数点データを読み出して演算し演算結果を前記レジスタファイルに格納し、ストア命令によるストア処理により前記レジスタファイルに格納されている浮動小数点データを読み出して前記メモリに格納する浮動小数点処理装置において、
前記メモリから前記レジスタファイルにＩＥＥＥ規格フォーマットの浮動小数点データである第１フォーマットデータを読み込む際に、第１フォーマットデータをＩＥＥＥ規格フォーマットと異なるフォーマットの倍精度浮動小数点データである第２フォーマットデータに変換して前記レジスタファイルに格納するロード処理を行う第１の論理部と、該第１の論理部で変換され前記レジスタファイルに格納された第２フォーマットデータを読み出して演算を行い、その演算結果を前記レジスタファイルに格納する演算処理部と、前記レジスタファイルに格納された演算結果の第２フォーマットデータを前記メモリに格納する際に、演算結果の第２フォーマットデータを第１フォーマットデータに変換して前記メモリに格納するストア処理を行う第２の論理部とを備えたことを特徴とする浮動小数点処理装置。
【請求項２】
前記第１の論理部は、前記第１フォーマットデータの指数部からその浮動小数点データの整数部を生成する手段を備え、生成された整数部を第２フォーマットデータの一部とすることを特徴とする請求項１記載の浮動小数点処理装置。
【請求項３】
前記第１の論理郡は、命令デコーダによって生成された演算命令の精度情報を第２フォーマットデータの一部とすることを特徴とする請求項１記載の浮動小数点処理装置。
【請求項４】
前記第１の論理部は、前記第１フォーマットデータの指数部を補正する補正手段を備え、該補正手段は、倍精度の浮動小数点データが非正規化数及びゼロである場合、その指数部の値を実際の指数部の値に補正することを特徴とする請求項１、２または３記載の浮動小数点処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、浮動小数点処理装置に係り、特に、ＩＥＥＥ規格等による浮動小数点データの演算処理を高速に行うことを可能にした浮動小数点処理装置に関する。
【０００２】
【従来の技術】
浮動小数点データのフォーマットとして、ＩＥＥＥ規格により定められた浮動小数点データのフォーマットが知られている。
【０００３】
図４はＩＥＥＥ規格により定められた浮動小数点データのフォーマットを示す図、図５はＩＥＥＥ規格により定められた浮動小数点データのデータパターンによる分類を説明する図であり、まず、図４、図５を参照して浮動小数点データのフォーマットと分類とについて説明する。
【０００４】
浮動小数点データには、図４に示すように、３２ビットの単精度フォーマットと６４ビットの倍精度フォーマットとがある。何れのフォーマットによるデータも、符号部Ｓ、指数部ＥＸＰ及び小数部ＦＲＡＣＴＩＯＮよりなる。そして、指数部ＥＸＰの値は、ＥＸＰ＝実際の指数＋biasの値となっており、単精度フォーマットではbias＝＋１２７、倍精度フォーマットではbias＝＋１０２３と定められている。そして、浮動小数点データは、ＩＥＥＥ規格により定められた浮動小数点データである場合、図５に示すように、データパターンにより非数、無限大、正規化数、非正規化数、ゼロに分類される。
【０００５】
非数とは、単精度フォーマットの場合ＥＸＰ＝２５５、倍精度フォーマットの場合ＥＸＰ＝２０４７であるＦＲＡＣＴＩＯＮ≠０の値のことである。無限大とは、単精度フォーマットの場合ＥＸＰ＝２５５、倍精度フォーマットの場合ＥＸＰ＝２０４７であるＦＲＡＣＴＩＯＮ＝０の値のことである。正規化数とは、単精度フォーマットの場合、１≦ＥＸＰ≦２５４、倍精度フォーマットの場合、１≦ＥＸＰ≦２０４６である（−１）S×２EXP-bias×（１．ＦＲＡＣＴＩＯＮ）で表現される値のことである。また、非正規化数とは、単精度フォーマットの場合、倍精度フォーマット場合共に、ＥＸＰ＝０，ＦＲＡＣＴＩＯＮ≠０であって（−１）S×２EXP+1-bias×（０．ＦＲＡＣＴＩＯＮ）で表現される値のことである。非正規化数は、ＥＸＰが実際のＥＸＰより１つ小さいＥＸＰ−１となっている。前述で、正規化数及び非正規化数のＦＲＡＣＴＩＯＮの上位に付加した“１”及び“０”を整数部と呼び、整数部と小数部を合わせて仮数部と呼ぶ。ゼロとは、単精度フォーマットの場合、倍精度フォーマット場合共にＥＸＰ＝０，ＦＲＡＣＴＩＯＮ＝０の値のことである。
【０００６】
図６は従来技術による浮動小数点処理装置の構成を示すブロック図、図７は従来技術により演算のために単精度フォーマットデータを倍精度フォーマットデータに変換した後のデータのフォーマットパターンを説明する図、図８は単精度フォーマットデータが非正規化数であった場合の変換の処理を説明する図であり、以下、図６〜図８を参照して従来技術について説明する。図６において、１は演算処理部、２はメモリ、３は命令デコーダ、４，５，１４，２５，３０，３２は補正回路、６，３３は制御回路、７，１９，２３は正規化シフタ、８，２０，２４は減算器、９，１０，２６，２７，２８，３４，３５は選択回路、１１はレジスタファイル、１２，１３は整数部生成回路、１５は演算器、１６は指数計算回路、１７は符号生成回路、１８は非数無限大処理回路、２１は丸め回路、２２はインクリメンタ、２９は非正規化シフタ、３１は判定回路である。なお、図６において、メモリ２、レジスタファイル１１がそれぞれ２つ示されているが、説明の都合上２つ描いたものであり、２つのメモリ２、レジスタファイル１１は、それぞれ同一のものである。
【０００７】
図６に示す従来技術による浮動小数点処理装置は、メモリ２からレジスタファイル１１へ浮動小数点データを読み込む際に、単精度フォーマットデータを倍精度フォーマットデータに変換してレジスタファイル１１に格納するロード処理を行う図６の上部に示すメモリ２とレジスタファイル１１との間に設けられた論理部と、倍精度フォーマットデータによる２入力演算を行う演算処理部１と、レジスタファイル１１に格納された演算結果のデータをメモリ２に格納する際に、演算結果を単精度フォーマットデータとしてメモリ２に格納する場合に、演算結果の倍精度フォーマットデータを単精度フォーマットデータに変換してメモリ２に格納するストア処理を行う図６の下部に示すレジスタファイル１１とメモリ２との間に設けられた論理部とにより構成される。
【０００８】
図６に示す浮動小数点処理装置は、全ての浮動小数点データが倍精度フォーマットでレジスタファイル１１に格納されており、演算は全て倍精度フォーマットで行われるものとする。最初に、図６に示す浮動小数点処理装置におけるロード命令の処理の具体的な動作を説明する。
【０００９】
まず、メモリ２から浮動小数点データの符号部がデータ線１０３に、指数部がデータ線１０２に、小数部がデータ線１０１に読み出される。命令デコーダ３は、命令のデコードを行っており、この命令がロード命令であり倍精度ロード命令の場合、メモリ２から６４ビットの倍精度フォーマットデータがデータ線１０１，１０２，１０３に読み出される。この場合、制御回路６は、命令が倍精度ロード命令であることにより、データ線１０２，１０３上の指数部データ及び小数部データを、選択回路１０，９により選択させ、データ線１０１上の符号部データと共にレジスタファイル１１に格納する。
【００１０】
一方、命令デコーダ３によりデコードされた命令が単精度ロード命令の場合、メモリ２から３２ビットの単精度フォーマットデータがデータ線１０１，１０２，１０３に読み出される。この３２ビットの単精度データは６４ビットの倍精度フォーマットデータに変換する必要がある。この変換は、データ線１０２上の指数部データに対して、補正回路５によりビットの拡張とbiasの違いとによるbias補正を加え、補正された指数部データをデータ線１０６に出力させ、また、データ線１０１上の小数部データに対して、補正回路４によりビットの拡張を行い、補正された小数部データをデータ線１０５に出力させることにより行われる。そして、メモリ２から読み出された単精度フォーマットデータが非正規化数以外の場合、データ線１０６上の変換後の指数部データ及びデータ線１０５上の変換後の小数部データは、選択回路１０，９により選択されて、データ線１０３上の符号部データと共にレジスタファイル１１に格納される。この変換により倍精度フォーマットデータとされた非正規化数以外の単精度データは、図７に示すようなものとなる。
【００１１】
前述において、メモリ２から読み出された単精度フォーマットデータが非正規化数の場合、これを倍精度フォーマットデータに変換したとき、このデータは、正規化数として表現することができる。このため、単精度データの倍精度フォーマットデータへの変換は、まず、データ線１０５上の補正された小数部データの上位に整数部の値“０”を付加して正規化シフタ７に送り、整数部が“１”となるまで左シフトを行って整数部を除いた小数部データをデータ線１０８に出力させ、一方、データ線１０６上の補正された指数部データに対して、正規化シフタ７からデータ線１０９上に与えられる仮数部の左シフト数を指数部データ１０６から減算器８により減算した減算結果をデータ線１１０に出力させることにより行われる。そして、選択回路１０，９は、制御回路６に制御されてデータ線１１０上の指数部データとデータ線１０８上の小数部データとを選択し、符号部データ１０３と合わせてレジスタファイル１１に格納する。前述した非正規化数の単精度フォーマットデータを倍精度フォーマットデータに変換する様子は、図８に示すようなものとなる。
【００１２】
次に、図６に示す従来技術による浮動小数点処理装置における演算処理部の具体的な処理動作について説明する。なお、以下では、２入力演算命令の処理例について説明する。
【００１３】
まず、前述したロード命令により倍精度フォーマットデータが格納されたレジスタファイル１１から倍精度フォーマットデータの符号部がデータ線１１７，１１８に、指数部がデータ数１１５，１１６に、小数部がデータ線１１３，１１４に読み出される。符号生成回路１７は、データ線１１７，１１８上の２つの符号データを用いて１つの符号を生成しデータ線１２６に出力する。補正回路１４は、非正規化数の演算が行われる場合に、データ線１１５，１１６上の２つの指数部データのそれぞれを実際の指数部の値に補正し、補正した指数部データをデータ線１２１，１２２に出力する。指数計算回路１６は、データ線１２１，１２２上の２つの指数部データを用いて指数計算を行い計算結果をデータ線１２５に出力する。
【００１４】
整数部生成回路１２，１３は、データ線１１５，１１６上の指数部データを用いて整数部を生成しデータ線１１９，１２０に出力する。この場合、ＥＸＰ＝０のとき整数部は“０”となり、ＥＸＰ≠０のとき整数部は“１”となる。演算器１５は、データ線１１９，１２０上の整数部データとデータ線１１３，１１４上の小数部データとを用いて演算を行い、演算結果の整数部をデータ線１２４に、小数部をデータ線１２３に出力し、正規化シフタ１９に送る。
【００１５】
正規化シフタ１９は、データ線１２４に出力される演算結果の整数部データが“０”の場合、整数部が“１”となるまで整数部データ及び小数部データの左シフトを行い、シフトデータの整数部をデータ線１３２に、小数部をデータ線１３１に出力する。一方、減算器２０は、指数計算回路１６からデータ線１２５に出力された指数部データから正規化シフタ１９よりデータ線１３３に出力される仮数部の左シフト数を減算し、その減算結果をデータ線１３４に出力する。ここで、仮数部の左シフトにおいて、整数部が“１”となる前にデータ線１３４上の指数部データが各精度フォーマットの指数部で表現できる最小値よりも小さくなる場合、正規化シフタ１９は、左シフトをデータ線１３４上の指数部データが最小値となるまでとし、整数部を“０”としたまま、このシフトデータの整数部をデータ線１３２に、小数部をデータ線１３１に出力する。このとき、データ線１３４上の指数部データは最小値が出力されている。倍精度フォーマットデータにおける指数部データの最小値は、単精度演算の場合、ＥＸＰmin ＝８９７であり、倍精度演算の場合、ＥＸＰmin ＝１である。また、正規化シフタ１９は、データ線１２４上の演算結果の整数部データが“１”の場合、データ線１３３上の仮数部の左シフト数を“０”として処理する。
【００１６】
丸め回路２１は、データ線１３２上の整数部データ及びデータ線１３１上の小数部データを用いて丸めモードに従い各精度に合わせて仮数部の丸めを行う。インクリメンタ２２は、丸め回路２１で仮数部を丸めた結果、データ線１３７上に仮数部からのキャリーが発生した場合、データ線１３４上の指数部データに＋１を行う。丸め回路２１からデータ線１３６に出力された丸めの結果の整数部データが“０”すなわち非正規化数であって、かつ、単精度演算であった場合、倍精度フォーマットデータにおける正規化数に変換する必要がある。このため、正規化シフタ２３は、整数部が“１”となるまでデータ線１３６上の整数部データ及びデータ線１３５上の小数部データの左シフトを行い、シフトデータの小数部をデータ線１３９に出力する。
【００１７】
減算器２４は、データ線１３８上にインクリメンタ２２より出力された指数部データからデータ線１４１に正規化シフタ２３より出力される仮数部の左シフト数を減算し、その減算結果をデータ線１４２に出力する。なお、正規化シフタ２３は、丸め回路２１からデータ線１３６上に送られる丸めた結果の整数部データが“１”であるか、または、“０”であっても、倍精度演算であった場合、データ線１４１に出力する仮数部の左シフト数を“０”として処理する。そして、正規化シフタ２３からデータ線１４０に出力される整数部データが“０”であった場合、すなわち、最終的な演算結果が非正規化数の場合、補正回路２５は、減算器からデータ線１４２に出力される実際の指数部の値から１を減算してデータ線１４３に出力する。
【００１８】
符号生成回路１７からデータ線１２６に出力された符号データ、補正回路２５からデータ線１４３に出力された指数部データ及び正規化シフタ２３からデータ線１３９に出力された小数部データは、それぞれ、選択回路２８，２７，２６で選択されレジスタファイル１１に格納される。なお、演算の入力データとして非数、無限大が入力された場合、これらのデータは、非数無限大処理回路１８により処理され、選択回路２８，２７，２６でデータ線上の符号データ、データ線１２８上の指数部データ及びデータ線１２７上の小数部データが選択されてレジスタファイル１１に格納される。
【００１９】
次に、図６に示す従来技術による浮動小数点処理装置におけるストア命令の具体的動作について示す。
【００２０】
ストア命令の開始により、まず、前述までの処理により倍精度フォーマットデータによる処理結果が格納されたレジスタファイル１１から倍精度フォーマットデータの符号部がデータ線１４９に、指数部がデータ線１４８に、小数部がデータ線１４７に読み出される。ここで、ストア命令が倍精度ストア命令の場合、制御回路３３は、倍精度フォーマットデータとして読み出されるデータ線１４８上の指数部データ及びデータ線１４７上の小数部データを選択回路３５，３４により選択させ、これらのデータを、データ線１４９上の符号部データと合わせてメモリ２に格納する。
【００２１】
一方、ストア命令が単精度ストア命令の場合、レジスタファイル１１から６４ビットの倍精度フォーマットデータがデータ線１４７，１４８，１４９に読み出されているので、このデータを３２ビットの単精度フォーマットデータに変換する必要がある。この変換は、データ線１４８上の指数部データ１４８がＥＸＰ≧８９７の場合、指数部データに対してbiasの違いによるbias補正ビットの短縮を補正回路３２が行い、補正された指数部データをデータ線１５４に出力し、小数部データに対してビットの短縮を補正回路３０が行い、補正された小数部データをデータ線１５１に出力することにより行われる。
【００２２】
データ線１５４上の指数部データ、データ線１５１上の小数部データは、制御回路３３により制御される選択回路３５，３４により選択され、データ線１４９上の符号部データと合わせてメモリ２に格納される。また、データ線１４８上の指数部データがＥＸＰ≦８９６の場合、単精度フォーマットの指数部で表現することのできない範囲なので、ＥＸＰ＝ＥＸＰmin ＝８９７となるまで仮数部の右シフトを行い非正規化数とする必要がある。このため、判定回路３１は、データ線１４８上の指数部データから仮数部の右シフト数を検出してデータ線１５２に出力し、指数部データとして非正規化数を示す“０”をデータ線１５３に出力する。また、非正規化シフタ２９は、仮数部としてデータ線１４７上の小数部データの上位に整数部の値“１”を付加したデータを受け取り、データ線１５２上の仮数部の右シフト数により仮数部の右シフトを行い、シフトしたデータの小数部をデータ線１５０に出力する。データ線１５３上の指数部データ及びデータ線１５０上の小数部データは、選択回路３５，３４により選択され、符号部データ１４９と合わせてメモリ２に格納される。
【００２３】
前述したような従来技術による浮動小数点処理装置は、倍精度ストア命令の処理を非正規化シフタ２９を通すことなく行うことができるので、単精度ストア命令の処理に比べ少ない処理で行うことができ、倍精度ストア命令の処理に必要な演算サイクル数、すなわち、レイテンシを短く設計することができる。
【００２４】
【発明が解決しようとする課題】
前述した従来技術による浮動小数点処理装置は、単精度非正規化数の正規化や非正規化数の指数部が実際の指数値と異なることにより発生する指数値補正等、非正規化数に対する処理の追加によって論理段数が増加し、論理段数の増加によるディレイが厳しくなり、単精度データの処理の高速化に限界が生じるという問題点を有している。
【００２５】
本発明の目的は、前記従来技術の問題点を解決し、処理の高速化を可能とした浮動小数点処理装置を提供することにある。
【００２６】
【課題を解決するための手段】
本発明によれば前記目的は、ロード命令によるロード処理によりメモリからレジスタファイルに浮動小数点データを読み込み、演算命令による演算処理により前記レジスタファイルに格納されている浮動小数点データを読み出して演算し演算結果を前記レジスタファイルに格納し、ストア命令によるストア処理により前記レジスタファイルに格納されている浮動小数点データを読み出して前記メモリに格納する浮動小数点処理装置において、前記メモリから前記レジスタファイルにＩＥＥＥ規格フォーマットの浮動小数点データである第１フォーマットデータを読み込む際に、第１フォーマットデータをＩＥＥＥ規格フォーマットと異なるフォーマットの倍精度浮動小数点データである第２フォーマットデータに変換して前記レジスタファイルに格納するロード処理を行う第１の論理部と、該第１の論理部で変換され前記レジスタファイルに格納された第２フォーマットデータを読み出して演算を行い、その演算結果を前記レジスタファイルに格納する演算処理部と、前記レジスタファイルに格納された演算結果の第２フォーマットデータを前記メモリに格納する際に、演算結果の第２フォーマットデータを第１フォーマットデータに変換して前記メモリに格納するストア処理を行う第２の論理部とを備えたことにより達成される。
【００２７】
前述の構成を備えることにより、単精度フォーマットデータの非正規化数の整数部を“０”としたまま、単精度フォーマットデータの非正規化数を倍精度フォーマットデータで表現することが可能となり、倍精度フォーマットにおける正規化数に変換する必要がなくすことができ、ロードデータパスの正規化シフタ及び減算器と、演算装置の出力側の正規化シフタ及び減算器とを不要とすることができ、論理段数を削減することができる。また、ストアデータパスにおいて、単精度命令の結果を非正規化シフタを通さずに単精度ストア命令により格納することができる。
【００２８】
また、生成された整数部を対応する浮動小数点データと共に保持手段内に保持することにより、レジスタファイル内に、浮動小数点データの整数部が存在することになり、演算器の直前の整数部生成回路を不要とすることができ、論理段数を削減することができる。
【００２９】
さらに、正規化数と非正規化数の区別をヒドゥン・ビットで行うことができるため、非正規化数の指数部の値を実際の指数部の値から１減算する必要がなくなり演算装置の出力側の補正回路を不要とすることができる
また、前記目的は、前述において、演算命令の精度情報としてのプレシジョン・ビットを前記保持手段内に保持することにより達成される。これにより、ストア命令と浮動小数点データとの組み合わせを即時に判定することができる。
【００３０】
さらに、前記目的は、前述において、単精度あるいは倍精度の浮動小数点データの指数部を補正する補正手段を備え、該補正手段が、倍精度の浮動小数点データが非正規化数及びゼロである場合、その指数部の値を実際の指数部の値に補正することにより達成される。これにより、レジスタファイル内で非正規化数の指数部を実際の指数部の値としておくことができ、演算装置の入力側の補正回路を不要とすることができる。
【００３１】
【発明の実施の形態】
以下、本発明による浮動小数点処理装置の一実施形態を図面により詳細に説明する。
【００３２】
図１は本発明の一実施形態による浮動小数点処理装置の構成を示すブロック図、図２は本発明の一実施形態による単精度フォーマットデータの新倍精度フォーマットデータへの変換後のデータパターンを示す図、図３は単精度フォーマットデータが非正規化数であった場合の変換処理を説明する図である。図１において、３６は h-bit生成回路、３７は選択回路、３８は正規化シフタ、３９は減算器であり、他の符号は図６の場合と同一である。図１に示す本発明の一実施形態による浮動小数点処理装置は、全ての浮動小数点データを新倍精度フォーマットでレジスタファイル１１に格納し、演算を全て新倍精度フォーマットで行うものである。なお、図１において、メモリ２、レジスタファイル１１がそれぞれ２つ示されているが、図６の場合と同様に、説明の都合上２つ描いたものであり、２つのメモリ２、レジスタファイル１１は、それぞれ同一のものである。本発明で使用する新倍精度フォーマットデータは、基本的に、通常の倍精度フォーマットデータに、命令の精度情報と整数部の値であるh-bitをを付加したものである。
【００３３】
図１に示す本発明の一実施形態による浮動小数点処理装置は、図６により説明した従来技術の場合と同様に、メモリ２からレジスタファイル１１へ浮動小数点データを読み込む際に、単精度フォーマットデータを新倍精度フォーマットデータに変換してレジスタファイル１１に格納するロード処理を行う論理部と、新倍精度フォーマットデータによる２入力演算を行う演算処理部１と、レジスタファイル１１に格納された演算結果のデータをメモリ２に格納する際に、演算結果を単精度フォーマットデータとしてメモリ２に格納する場合に、演算結果の新倍精度フォーマットデータを単精度フォーマットデータに変換してメモリ２に格納するストア処理を行う論理部とにより構成される。
【００３４】
最初に、図１に示す本発明の一実施形態による浮動小数点処理装置におけるロード命令の具体的な処理動作について説明する。
【００３５】
まず、メモリ２から浮動小数点データの符号部がデータ線１０３に、指数部がデータ線１０２に、小数部がデータ線１０１に読み出される。 h-bit生成回路３６は、データ線１０２上の指数部データを用いて浮動小数点データの整数部を生成するものであり、整数部の値となるヒドゥン・ビットを生成しデータ線１５８に出力する。このとき、 h-bit生成回路３６は、読み出された浮動小数点データが、単精度フォーマットデータであるか倍精度フォーマットデータであるかにかかわらず、データ線１０２上の指数部ＥＸＰの値がＥＸＰ＝０、すなわち、その小数点データが非正規化数またはゼロのとき“０”を、ＥＸＰ≠０、すなわち、その小数点データが非正規化数またはゼロ以外のとき“１”をデータ線１５８にヒドゥン・ビットとして出力する。
【００３６】
命令デコーダ３は、命令のデコードを行っており、命令の精度情報であるプレシジョン・ビットを生成してデータ線１０４に出力する。プレシジョン・ビットは、命令が単精度ロード命令であれば“１”、倍精度ロード命令であれば“０”としてデータ線１０４に出力される。ここで、命令がロード命令であり倍精度ロード命令の場合、メモリ２から６４ビットの倍精度フォーマットデータが、データ線１０１，１０２，１０３に読み出される。
【００３７】
読み出された倍精度フォーマットデータが非正規化数及びゼロ以外の場合、制御回路３は、データ線１０２上の指数部データ及びデータ線１０１上の小数部データを、選択回路１０，９により選択させデータ線１０３上の符号部データ、データ線１５８上のヒドゥン・ビット及びデータ線１０４上のプレシジョン・ビットと合わせてレジスタファイル１１に格納する。倍精度フォーマットデータが非正規化数及びゼロの場合、補正回路５は、データ線１０２上の指数部を実際の指数部の値に補正し、補正した指数部データをデータ線１０６に出力する。そして、この指数部データ及び小数部データが、選択回路１０，９により選択され、符号部データ、ヒドゥン・ビット及びプレシジョン・ビットと合わせてレジスタファイル１１に格納される。
【００３８】
前述においては、指数部の補正を簡単化するために、浮動小数点データがゼロの場合にも、その指数部についてヒドゥン・ビット正規化数と同じ補正を行っている。
【００３９】
一方、命令がロード命令であり単精度ロード命令の場合、メモリ２から３２ビットの単精度フォーマットデータがデータ線１０１，１０２，１０３に読み出されているので、この３２ビットのデータを６４ビットの新倍精度フォーマットデータに変換する必要がある。この変換は、データ線１０２上の指数部データに対して、補正回路５によりビットの拡張とbiasの違いとによるbias補正を加え、補正された指数部データをデータ線１０６に出力させ、また、データ線１０１上の小数部データに対して、補正回路４によりビットの拡張を行い、補正された小数部データをデータ線１０５に出力させることにより行われる。データ線１０６上の指数部データと、データ線１０５上の小数部データとは、選択回路１０，９により選択されて、データ線１０３上の符号部データ、データ線１５８上のヒドゥン・ビット及びデータ線１０４上のプレシジョン・ビットと合わせてレジスタファイル１１に格納される。
【００４０】
前述したロード処理時の変換処理において、単精度フォーマットデータは、図２に示すような新倍精度フォーマットデータに変換されてレジスタファイル１１に格納される。また、単精度フォーマットデータが非正規化数である場合にも、前述と同様な変換処理が行われ、図３に示すように新倍精度フォーマットデータに変換されてレジスタファイル１１に格納される。
【００４１】
次に、図１に示す本発明の一実施形態による浮動小数点処理装置における演算命令の具体的な出力動作を説明する。
【００４２】
まず、前述のロード処理により新倍精度フォーマットデータが格納されたレジスタファイル１１から新倍精度フォーマットデータの符号部がデータ線１１７，１１８に、指数部がデータ線１１５，１１６に、小数部がデータ線１１３，１１４に、ヒドゥン・ビットがデータ線１５９，１６０に読み出される。符号生成回路１７は、データ線１１７，１１８上の符号部データを用いて符号を生成しデータ線１２６に出力する。指数計算回路１６は、データ線１１５，１１６上の指数部データを用いて指数計算を行い計算結果をデータ線１２５に出力する。また、演算器１５は、データ線１５９，１６０上のヒドゥン・ビットとデータ線１１３，１１４上の小数部データとを用いて演算を行い演算結果の整数部データをデータ線１２４に、小数部データをデータ線１２３に出力する。
【００４３】
前述において、指数計算回路１６や演算器１５は、本発明による新倍精度フォーマットの処理においても、従来技術による旧倍精度フォーマットの場合と同様の論理を持てばよくディレイを悪化させることはない。
【００４４】
データ線１２４に出力された演算結果の整数部データが“０”の場合、正規化シフタ１９は、整数部が“１”となるまで整数部データ及びデータ線１２３上の小数部データの左シフトを行い、シフトデータの整数部をデータ線１３２に、小数部をデータ線１３１に出力する。一方、減算器２０は、データ線１２５上の指数部データから、正規化シフタ１９よりデータ線１３３に出力される仮数部の左シフト数を減算し、その減算結果をデータ線１３４に出力する。前述の仮数部の左シフトにおいて、整数部が“１”となる前にデータ線１３４上の指数部データが各精度フォーマットの指数部で表現できる最小値よりも小さくなる場合、正規化シフタ１９は、左シフトをデータ線１３４上の指数部データが最小値となるまでとし、整数部を“０”としたまま、このシフトデータの整数部をデータ線１３２に、小数部をデータ線１３１に出力する。このとき、データ線１３４上の指数部データは最小値が出力されている。新倍精度フォーマットデータにおける指数部データの最小値は、単精度演算の場合、ＥＸＰmin ＝８９７であり、倍精度演算の場合、ＥＸＰmin ＝１である。また、正規化シフタ１９は、データ線１２４上の演算結果の整数部データが“１”の場合、データ線１３３上の仮数部の左シフト数を“０”として処理する。
【００４５】
丸め回路２１は、データ線１３２上の整数部データ及びデータ線１３１上の小数部データを用いて丸めモードに従い各精度に合わせて仮数部の丸めを行い、丸めた結果の小数部をデータ線１３５に、整数部をヒドゥン・ビットとしてデータ線１３６に出力する。インクリメンタ２２は、丸め回路２１で仮数部を丸めた結果、データ線１３７上に仮数部からのキャリーが発生した場合、データ線１３４上の指数部データに＋１を行いデータ線１３８に出力する。命令デコーダ３は、ロード命令のときと同様に命令のデコードを行っており、データ線１０４上のプレシジョン・ビットとして、命令が単精度演算命令であれば“１”を、倍精度演算命令であれば“０”を出力している。
【００４６】
データ線１２６，１３８，１３５，１３６上の符号データ、指数部データ、小数部データ及びヒドゥン・ビットは、選択回路２８，２７，２６，３７で選択され、データ線１０４上のプレシジョン・ビットと合わせてレジスタファイル１１に格納される。
【００４７】
また、演算の入力データとして、非数、無限大のデータがレジスタファイル１１から読み出されて演算部１に入力された場合、非数、無限大のデータは、非数無限大処理回路１８により処理され、選択回路２８，２７，２６，３７により、データ線１２９，１２８，１２７，１６１上の符号データ、指数部データ、小数部データ及びヒドゥン・ビットが選択されて、データ線１０４上のプレシジョン・ビットと合わせてレジスタファイル１１に格納される。
【００４８】
次に、図１に示す本発明の一実施形態による浮動小数点処理装置におけるストア命令の具体的動作について示す。
【００４９】
ストア命令の開始により、レジスタファイル１１から新倍精度フォーマットデータの符号部がデータ線１４９に、指数部がデータ線１４８に、小数部がデータ線１４７に、ヒドゥン・ビットがデータ線１６３に、プレシジョン・ビットがデータ線１６４に読み出される。
【００５０】
ここで、まず、ストア命令が倍精度ストア命令である場合について説明する。
【００５１】
制御回路３３は、レジスタファイル１１からデータ線１６３上に読み出されたヒドゥン・ビットの値をチェックし、このビットが“１”、すなわち、レジスタファイル１１から読み出されたデータが非正規化数またはゼロ以外のデータである場合、選択回路３５，３４に、データ線１４８、１４７に読み出されている指数部データ及び小数部データを選択させ、データ線１４９上の符号部データと合わせてメモリ２に格納する。
【００５２】
また、制御回路３３は、データ線１６３上に読み出されたヒドゥン・ビットの値、データ線１６４上に読み出されたプレシジョン・ビットの値をチェックし、ヒドゥン・ビットが“０”でプレシジョン・ビットが“０”である場合、すなわち、レジスタファイル１１から読み出されたデータが倍精度命令の結果で非正規化数またはゼロのデータの場合、データ線１５４上の指数部データ及びデータ線１４７上の小数部データを選択回路３５，３４で選択させ、データ線１４９上の符号部データと合わせてメモリ２に格納する。前述において、データ線１５４上の指数部データは、補正回路３２がデータ線１４８により与えられた指数部データから１を減算してデータ線１５４に出力したものである。
【００５３】
さらに、制御回路３３は、データ線１６３上に読み出されたヒドゥン・ビットの値が“０”、データ線１６４上に読み出されたプレシジョン・ビットの値が“１”であり、かつ、データ線１４７上の小数部データの値が、ＦＲＡＣＴＩＯＮ＝０である場合、すなわち、レジスタファイル１１から読み出されたデータが単精度命令の結果でゼロのデータの場合、補正回路３２が指数部を“０”としてデータ線１５４に出力した指数部データ及びデータ線１４７上の小数部データを選択回路３５，３４に選択させ、データ線１４９上の符号部データと合わせてメモリ２に格納する。
【００５４】
また、制御回路３３は、データ線１６３上に読み出されたヒドゥン・ビットの値が“０”、データ線１６４上に読み出されたプレシジョン・ビットの値が“０”であり、かつ、データ線１４７上の小数部データの値が、ＲＡＣＴＩＯＮ≠０である場合、すなわち、レジスタファイル１１から読み出されたデータが単精度命令の結果で非正規化数のデータの場合、データ線１６７上の指数部データ及びデータ線１６５上の小数部データを選択回路３５，３４で選択させ、符号部データ１４９と合わせてメモリ２に格納する。前述において、データ線１６５上の小数部データは、正規化シフタ３８が、データ線１４７上の小数部データの上位に整数部の値“０”を付加し、整数部が“１”となるまで左シフトを行って得られたシフトデータの小数部をデータ線１６５に出力たものであり、データ線１６７上の指数部データは、減算器３９が、データ線１４８上の指数部データから、正規化シフタ３８よりデータ線１６６上に出力した仮数部の左シフト数を減算し減算結果をデータ線１６７に出力したものである。
【００５５】
次に、ストア命令が単精度ストア命令の場合の具体的な処理動作について説明する。
【００５６】
ストア命令が単精度ストア命令の場合、レジスタファイル１１から読み出される６４ビットの新倍精度フォーマットデータを３２ビットの単精度フォーマットデータに変換する必要がある。この変換は、データ線１４８上の指数部データがＥＸＰ≧８９７の場合、指数部データに対してbiasの違いによるbias補正ビットの短縮を補正回路３２が行い、補正された指数部データをデータ線１５４に出力し、データ線１４７上の小数部データに対してビットの短縮を補正回路３０が行い、補正された小数部データをデータ線１５１に出力することにより行われる。制御回路３３により制御される選択回路３５，３４は、データ線１５４，１５１上の指数部データ及び小数部データを選択し、データ線１４９上の符号部データと合わせてメモリ２に格納する。
【００５７】
また、データ線１４８上の指数部データがＥＸＰ≦８９６の場合、単精度フォーマットの指数部で表現することのできない範囲なので、ＥＸＰ＝ＥＸＰmin ＝８９７となるまで仮数部の右シフトを行い非正規化数とする必要がある。このため、判定回路３１は、データ線１４８上の指数部データから仮数部の右シフト数を検出してデータ線１５２に出力し、指数部データとして非正規化数を示す“０”をデータ線１５３に出力する。また、非正規化シフタ２９は、仮数部としてデータ線１４７上の小数部データの上位に整数部の値“１”を付加したデータを受け取り、データ線１５２上の仮数部の右シフト数により仮数部の右シフトを行い、シフトしたデータの小数部をデータ線１５０に出力する。データ線１５３上の指数部データ及びデータ線１５０上の小数部データは、選択回路３５，３４により選択され、符号部データ１４９と合わせてメモリ２に格納される。
【００５８】
前述した本発明一実施形態による浮動小数点処理装置は、倍精度命令による倍精度データの処理結果、すなわち、データ線１６４上のプレシジョン・ビットの値が“０”であるデータを倍精度ストア命令によりメモリ２に格納する場合、または、単精度命令による単精度データの処理結果、すなわち、データ線１６４上のプレシジョン・ビットの値が“１”のデータを単精度ストア命令によりメモリ２に格納する場合の処理を、非正規化シフタ２９または正規化シフタ３８を通すことなく行うことができる。
【００５９】
このため、本発明一実施形態による浮動小数点処理装置は、倍精度命令による処理結果を単精度ストア命令によりメモリ２に格納する場合、または、単精度命令による処理結果を倍精度ストア命令によりメモリ２に格納する場合の処理に比較して、倍精度命令による処理結果を倍精度ストア命令で格納する場合、または、単精度命令による処理結果を単精度ストア命令で格納する場合の処理を短くすることができる。この結果、前述の実施形態によれば、倍精度命令の結果を単精度ストア命令で格納する場合、または、単精度命令の結果を倍精度ストア命令で格納する場合のレイテンシよりも、倍精度命令による処理結果を倍精度ストア命令で格納する場合、または、単精度命令による処理結果を単精度ストア命令で格納する場合のレイテンシを短く設計することができる。また、前述の組み合わせの判定は、データ線１０４上の精度情報とデータ線１６４上のプレシジョン・ビットの組み合わせから制御回路３３で即時に判定することができる。
【００６０】
前述した本発明の一実施形態は、演算処理部１の演算の入力数を２入力であるとしたが、本発明は、これに限るものではなく、演算処理部がさらに多入力であっても適用することができる。
【００６１】
また、本発明は、ヒドゥン・ビット及びプレシジョン・ビットの値を図２に示す値に固定する必要はなく、例えば、ヒドゥン・ビット及びプレシジョン・ビットの値の“０”と“１”とを逆転してもよい。
【００６２】
【発明の効果】
以上説明したように本発明によれば、倍精度フォーマットにおいても単精度フォーマットデータの非正規化数を整数部を“０”としたまま表現することが可能となり、単精度フォーマットデータの非正規化数を倍精度フォーマットにおける正規化数に変換する必要がなくなり、ロードデータパスの正規化シフタ及び減算器を不要として論理段数を削減することができるので、ロードデータパスの処理速度を向上させることができる。また、本発明によれば、演算装置内の出力側に設けられる正規化シフタ及び減算器をも不要として論理段数を削減することができるので、演算装置の処理速度も向上させることができる。
【００６３】
また、本発明によれば、ストアデータパスにおいて、単精度命令の結果を非正規化シフタを通さずに単精度ストア命令により格納することができるので、単精度命令の結果を単精度ストア命令で格納する場合のレイテンシを短縮することができ、単精度命令の結果を倍精度ストア命令で格納する場合のレイテンシの増加を補うことができ、ストア命令の性能低下をデータ側から防止することができる。
【００６４】
さらに、本発明によれば、レジスタファイルに浮動小数点データの整数部が存在するため、演算器の直前の整数部生成回路を不要とすることができ、演算装置の入力側の論理段数を削減することができる。また、本発明によれば、正規化数と非正規化数との区別をヒドゥン・ビットで行うことができるため、非正規化数の指数部の値を実際の指数部の値よりも１減算する必要がなくなり、演算装置の出力側の補正回路が不要となり演算装置の出力側の論理段数も削減することができるので演算装置の処理速度を向上させることができる。
【００６５】
また、本発明によれば、ストア命令と浮動小数点データの種類との組み合わせを即時に判定することができ、これにより、ストア命令の処理の制御側のディレイを軽減することができるので、ストア命令と浮動小数点データの種類の組み合わせによってレイテンシを短縮することができ、ストア命令の性能低下を制御側から防ぐことができる。
【００６６】
また、本発明によれば、レジスタファイル内のデータの非正規化数の指数部が実際の指数部の値となっているため、演算装置の入力側の補正回路を不要とすることができ、これにより論理段数を削減することができるので、演算装置の処理速度を向上させることができる。
【図面の簡単な説明】
【図１】本発明の一実施形態による浮動小数点処理装置の構成を示すブロック図である。
【図２】本発明の一実施形態による単精度フォーマットデータの新倍精度フォーマットデータへの変換後のデータパターンを示す図である。
【図３】単精度フォーマットデータが非正規化数であった場合の変換処理を説明する図である。
【図４】ＩＥＥＥ規格により定められた浮動小数点データのフォーマットを示す図である。
【図５】ＩＥＥＥ規格により定められた浮動小数点データのデータパターンによる分類を説明する図である。
【図６】従来技術による浮動小数点処理装置の構成を示すブロック図である。
【図７】従来技術により単精度データを倍精度フォーマットに変換した後のデータパターンを説明する図である。
【図８】単精度フォーマットデータが非正規化数であった場合の変換の処理を説明する図である。
【符号の説明】
１  演算処理
２  メモリ
３  命令デコーダ
４，５，１４，２５，３０，３２  補正回路
６，３３  制御回路
７，１９，２３，３８  正規化シフタ
８，２０，２４，３９  減算器
９，１０，２６，２７，２８，３４，３５，３７  選択回路
１１  レジスタファイル
１２，１３  整数部生成回路
１５  演算器
１６  指数計算回路
１７  符号生成回路
１８  非数無限大処理回路
２１  丸め回路
２２  インクリメンタ
２９  非正規化シフタ
３１  判定回路
３６  ｈ−ｂｉｔ生成回路
【図１】
0004073513.tif 000002
【図２】
0004073513.tif 000003
【図３】
0004073513.tif 000004
【図４】
0004073513.tif 000005
【図５】
0004073513.tif 000006
【図６】
0004073513.tif 000007
【図７】
0004073513.tif 000008
【図８】
0004073513.tif 000009