(57)【要約】【課題】  ベクトルレジスタの各要素の書換えを行うことなく、２つのオペランドの演算を容易に行うことが可能なベクトル積和演算回路を提供する。【解決手段】  マスクレジスタ３１〜３３は各オペランド毎にデータの有効／無効を示すマスクビットを格納する。制御回路１１〜１３は演算モードと各オペランドに付随するマスクビットとから選択信号を生成する。機能セレクタ１〜３は各オペランドを入力とし、オペランドデータと予め設定された所定値（“０”または“１”）とのうちのいずれかを制御回路１１〜１３からの選択信号にしたがって選択し、積和演算回路の各回路に出力する。【選択図】      図１
2006338215.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも第１のオペランドと第２のオペランドと第３のオペランドとを入力して、それらの積和を求める積和回路を含むベクトル積和演算回路であって、
外部から指定される演算モードに基いて前記オペランドと予め設定された所定値のデータとのいずれかを選択して前記積和回路に出力する機能セレクタを有することを特徴とするベクトル積和演算回路。
【請求項２】
前記オペランド毎にデータの有効／無効を示すマスクビットを格納するマスクレジスタを含み、
前記機能セレクタは、前記演算モードと前記オペランド各々に付随するマスクビットとに基いて前記オペランドと前記所定値のデータとのいずれかを選択して前記積和回路に出力することを特徴とする請求項１記載のベクトル積和演算回路。
【請求項３】
前記演算モードと前記マスクビットとに基いて前記オペランドと前記所定値のデータとのいずれかを選択させるための選択信号を生成して前記機能セレクタに出力する制御回路を含み、
前記機能セレクタは、前記選択信号にしたがって前記オペランドと前記所定値のデータとのいずれかを選択して前記積和回路に出力することを特徴とする請求項２記載のベクトル積和演算回路。
【請求項４】
前記マスクレジスタと、前記機能セレクタと、前記制御回路とをそれぞれ前記第１のオペランドと第２のオペランドと第３のオペランドとに対応して設けたことを特徴とする請求項３記載のベクトル積和演算回路。
【請求項５】
前記所定値は、２値信号の所定値及びその反転値であることを特徴とする請求項１から請求項４のいずれか記載のベクトル積和演算回路。
【請求項６】
前記積和回路は、前記第１のオペランドと前記第２のオペランドと前記第３のオペランドとをそれぞれ格納する第１〜第３のベクトルレジスタと、前記第１のオペランド及び前記第２のオペランド各々に対応する前記機能セレクタの指数部出力の加算を行う指数部加算回路と、前記第３のオペランドに対応する前記機能セレクタの指数部出力と前記指数部加算回路の出力との減算を行う指数部減算回路と、前記第３のオペランドに対応する前記機能セレクタの仮数部出力な対して前記指数部減算回路の出力であるシフト量にしたがったシフト動作を行うシフト回路と、前記第１のオペランド及び前記第２のオペランド各々に対応する前記機能セレクタの仮数部出力の乗算を行う仮数部乗算回路と、前記仮数部乗算回路の出力と前記シフト回路の出力との加算を行う仮数部加算回路と、前記仮数部加算回路の出力を入力としてＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）からのビット０の数をカウントする０カウンタと、前記０カウンタの出力にしたがって前記仮数部加算回路の出力をシフトして正規化を行う正規化回路と、前記正規化回路の出力を入力として丸め処理を行う丸め回路と、前記０カウンタの出力にしたがって前記指数部加算回路の出力を補正する指数部補正回路とからなる浮動小数点積和演算器であることを特徴とする請求項３から請求項５のいずれか記載のベクトル積和演算回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はベクトルデータ積和演算回路に関し、特にベクトルデータであるオペランドを加算回路、減算回路、乗算回路を用いて積和演算を行う浮動小数点積和演算回路を含むベクトル積和演算回路に関する。
【背景技術】
【０００２】
浮動小数点は、数値を仮数部と指数部とで表現するもので、例えば数値ｎは、仮数部をａ、指数部をｂとすると、ｎ＝ａ・ｒb （ｒは基数）で表される。また、指数部は符号を付して表現されたり、ある特定の数を基準とし、その数に対する大小で表すバイアス表現で表される。
【０００３】
浮動小数点で表現された数値を用いて演算を行う場合、固定小数点で表現された数値を用いて演算を行う場合に比べ、広い範囲（広いダイナミックレンジ）での数の演算が可能である。このため、扱う数値範囲を広く要求される（広いダイナミックレンジが要求される）用途においては、浮動小数点で表現された数値の演算を行う浮動小数点演算回路が用いられている。
【０００４】
例えば、指数部がバイアス表現された２つの数値、ｍ＝ａ・ｒc と、ｎ＝ｂ・ｒd （但し、ｃ＞ｄ）の浮動小数点数値の加算を考えてみる。この場合、加算結果（和）は、ｍ＋ｎ＝（ａ＋ｂc-d ）・ｒc となる。このように、浮動小数点数値の加減算を実行する場合には、第１オペランドの指数部と第２オペランドの指数部との減算を行い、その結果から桁合わせを行うために一方の仮数部をシフトする必要がある（例えば、特許文献１参照）。
【０００５】
上記の浮動小数点の演算を行うベクトル積和演算回路においては、図９に示すように、ベクトルレジスタ２１，２２に格納される第１オペランド（以下、第１ＯＰとする）と第２オペランド（以下、第２ＯＰとする）との積を求め、その結果とベクトルレジスタ２３に格納される第３オペランド（以下、第３ＯＰとする）との和を求める構成がある。
【０００６】
図９において、ベクトル積和演算回路は仮数部乗算回路４と、仮数部加算器５と、指数部加算器６と、指数部減算器７と、シフト回路８と、正規化回路９と、丸め回路１０と、０カウンタ１４と、指数部補正回路１５と、ベクトルレジスタ２１と、ベクトルレジスタ２２と、ベクトルレジスタ２３とから構成されている。
【０００７】
この構成において、第１ＯＰと第２ＯＰとの乗算のみを行う場合、第３ＯＰを格納するベクトルレジスタ２３の各要素を“０”で埋め、「第１ＯＰ＊第２ＯＰ＋“０”」の演算を行う必要がある。
【０００８】
また、第１ＯＰあるいは第２ＯＰと第３ＯＰとの加減算を行う場合には、第１ＯＰと第２ＯＰとのうちの対象でない方のベクトルレジスタ２１，２２の各要素を“１”に書換えて「オペランド＊１の乗算」を行った後に、その乗算結果と第３ＯＰとの加減算を行っている。そのため、上記の積和演算回路を用いて２つのオペランドの乗算、あるいは加減算を行う際に、対象でないオペランドデータを格納するベクトルレジスタ２１〜２３の各要素を書換える必要がある。
【０００９】
【特許文献１】特開平０８−２６３２６９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述した従来のベクトル積和演算回路では、積和演算回路を用いて２オペランドの乗算あるいは加減算を行う際に、積和演算回路への入力となる３オペランドのうち、対象でないオペランドデータを格納するベクトルレジスタの各要素を書換える必要があるため、処理に時間が掛かるという問題がある。
【００１１】
そこで、本発明の目的は上記の問題点を解消し、ベクトルレジスタの各要素の書換えを行うことなく、２つのオペランドの演算を容易に行うことができるベクトル積和演算回路を提供することにある。
【課題を解決するための手段】
【００１２】
本発明によるベクトル積和演算回路は、少なくとも第１のオペランドと第２のオペランドと第３のオペランドとを入力して、それらの積和を求める積和回路を含むベクトル積和演算回路であって、
外部から指定される演算モードに基いて前記オペランドと予め設定された所定値のデータとのいずれかを選択して前記積和回路に出力する機能セレクタを備えている。
【００１３】
すなわち、本発明のベクトル積和演算回路は、各オペランド毎にデータの有効／無効を示すマスクビットを格納するマスクレジスタと、演算モードと各オペランドに付随するマスクビットとから選択信号を生成する制御回路と、各オペランドを入力としかつオペランドデータと予め設定された所定値（“０”または“１”）とのうちのいずれかを選択信号にしたがって選択する機能セレクタとを有している。
【００１４】
本発明のベクトル積和演算回路では、上記のような構成を採用し、演算モードとマスクビットとの組合わせを機能セレクタが持つ各機能に割当てることで、ベクトルレジスタの各要素を書換えることなく、マスクビットと演算モードとの切替えのみで様々な演算を行うことによって、２つのオペランドの演算を容易に行うことが可能となる。
【発明の効果】
【００１５】
本発明は、以下に述べるような構成及び動作とすることで、ベクトルレジスタの各要素の書換えを行うことなく、２つのオペランドの演算を容易に行うことができるという効果が得られる。
【発明を実施するための最良の形態】
【００１６】
次に、本発明の実施例について図面を参照して説明する。図１は本発明の一実施例によるベクトル積和演算回路の構成を示すブロック図である。図１において、本発明の一実施例によるベクトル積和演算回路は機能セレクタ１〜３と、仮数部乗算回路４と、仮数部加算器５と、指数部加算器６と、指数部減算器７と、シフト回路８と、正規化回路９と、丸め回路１０と、制御回路１１〜１３と、０カウンタ１４と、指数部補正回路１５と、ベクトルレジスタ２１〜２３と、マスクレジスタ３１〜マスクレジスタ３３とから構成されている。
【００１７】
ベクトルレジスタ２１は機能セレクタ１と接続され、第１オペランド（以下、第１ＯＰとする）を格納する。ベクトルレジスタ２２は機能セレクタ２と接続され、第２オペランド（以下、第２ＯＰとする）を格納する。ベクトルレジスタ２３は機能セレクタ３と接続され、第３オペランド（以下、第３ＯＰとする）を格納する。
【００１８】
マスクレジスタ３１は制御回路１１と接続され、第１ＯＰの各要素の有効／無効を示すマスクビットを格納する。マスクレジスタ３２は制御回路１２と接続され、第２ＯＰの各要素の有効／無効を示すマスクビットを格納する。マスクレジスタ３３は制御回路１３と接続され、第３ＯＰの各要素の有効／無効を示すマスクビットを格納する。
【００１９】
制御回路１１は機能セレクタ１及びマスクレジスタ３１と接続され、マスクレジスタ３１から供給される第１ＯＰに付随するマスクビットと演算モードとにしたがって選択用の制御信号を生成し、その制御信号を機能セレクタ１へ出力する。すなわち、制御回路１１は機能セレクタ１で“０”が選択される時に制御信号“００”を、機能セレクタ１で“１”が選択される時に制御信号“０１”を、機能セレクタ１で第１ＯＰが選択される時に制御信号“１０”をそれぞれ生成する。
【００２０】
制御回路１２は機能セレクタ２及びマスクレジスタ３２と接続され、マスクレジスタ３２から供給される第２ＯＰに付随するマスクビットと演算モードとにしたがって選択用の制御信号を生成し、その制御信号を機能セレクタ２へ出力する。すなわち、制御回路１２は機能セレクタ２で“０”が選択される時に制御信号“００”を、機能セレクタ２で“１”が選択される時に制御信号“０１”を、機能セレクタ２で第２ＯＰが選択される時に制御信号“１０”をそれぞれ生成する。
【００２１】
制御回路１３は機能セレクタ３及びマスクレジスタ３３と接続され、マスクレジスタ３３から供給される第３ＯＰに付随するマスクビットと演算モードとにしたがって選択用の制御信号を生成し、その制御信号を機能セレクタ３へ出力する。すなわち、制御回路１３は機能セレクタ３で“０”が選択される時に制御信号“０”を、機能セレクタ３で第３ＯＰが選択される時に制御信号“１”をそれぞれ生成する。
【００２２】
機能セレクタ１は制御回路１１とベクトルレジスタ２１と仮数部乗算回路４と指数部加算器６とにそれぞれ接続され、制御回路１１の出力である制御信号にしたがって第１ＯＰ、“０”、“１”の何れかを選択し、その選択結果を仮数部乗算回路４及び指数部加算器６に出力する。
【００２３】
機能セレクタ２は制御回路１２とベクトルレジスタ２２と仮数部乗算回路４と指数部加算器６とにそれぞれ接続され、制御回路１２の出力である制御信号にしたがって第２ＯＰ、“０”、“１”の何れかを選択し、その選択結果を仮数部乗算回路４及び指数部加算器６に出力する。
【００２４】
機能セレクタ３は制御回路１３とベクトルレジスタ２３と指数部減算器７とシフト回路８とにそれぞれ接続され、制御回路１３の出力である制御信号にしたがって第３ＯＰ、“０”、“１”の何れかを選択し、その選択結果を指数部減算器７及びシフト回路８に出力する。
【００２５】
指数部加算器６は機能セレクタ１と機能セレクタ２と指数部減算器７と指数部補正回路１５とにそれぞれ接続され、機能セレクタ１，２の出力である選択結果の指数部の加算を行い、指数部加算結果を指数部減算器７及び指数部補正回路１５に出力する。
【００２６】
指数部減算器７は機能セレクタ３と指数部加算器６とシフト回路８とにそれぞれ接続され、指数部加算器６の出力である指数部加算結果と機能セレクタ３の出力である選択結果の指数部との減算を行い、指数部減算結果をシフト回路８へ出力する。この場合、指数部減算結果は第３ＯＰの仮数部を桁合わせする際のシフト量になる。
【００２７】
シフト回路８は機能セレクタ３と指数部減算器７と仮数部加算器５とにそれぞれ接続され、機能セレクタ３の出力である選択結果の仮数部に対して指数部減算器７の出力であるシフト量にしたがってシフト動作を行い、その結果を仮数部加算器５に出力する。
【００２８】
仮数部乗算回路４は機能セレクタ１と機能セレクタ２と仮数部加算器５とにそれぞれ接続され、機能セレクタ１，２の出力である選択結果の仮数部同士について乗算を行い、乗算結果を仮数部加算器５に出力する。
【００２９】
仮数部加算器５は仮数部乗算回路４とシフト回路８と正規化回路９と０カウンタ１４とにそれぞれ接続され、仮数部乗算回路４の出力である乗算結果とシフト回路８の出力であるシフト結果との加算を行い、その結果を正規化回路９及び０カウンタ１４へ出力する。
【００３０】
０カウンタ１４は仮数部加算器５と正規化回路９と指数部補正回路１５とにそれぞれ接続され、仮数部加算器５の出力を入力としてＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）からのビット０の数をカウントして正規化回路９及び指数部補正回路１５に出力する。
【００３１】
正規化回路９は仮数部加算器５と０カウンタ１４と丸め回路１０とにそれぞれ接続され、０カウンタ１４の出力にしたがって仮数部加算器５の出力をシフトして、その結果を丸め回路１０へ出力する。丸め回路１０は正規化回路９に接続され、正規化回路９の出力を入力として丸め処理を行う。この丸め処理の結果は積和演算結果の仮数部となる。
【００３２】
指数部補正回路１５は指数部加算器６と０カウンタ１４とにそれぞれ接続され、０カウンタ１４の出力にしたがって指数部加算器６の出力を補正する。この補正処理の結果は積和演算結果の指数部となる。
【００３３】
図２は図１に示す制御回路１１の構成を示す回路図である。図２において、制御回路１１は演算モード（“積和演算”、“乗算”、“加減算１”、“加減算２”）の論理積演算を行う論理積回路１１１〜１１４と、論理積回路１１１〜１１３各々の出力の論理和演算を行う論理和回路１１５と、論理和回路１１５の出力とマスクビットとの論理積演算を行う論理積回路１１６と、論理積回路１１４の出力とマスクビットとの論理積演算を行う論理積回路１１７とから構成されている。
【００３４】
図３は図１に示す制御回路１２の構成を示す回路図である。図３において、制御回路１２は演算モードの論理積演算を行う論理積回路１２１〜１２４と、論理積回路１２１〜１２３各々の出力の論理和演算を行う論理和回路１２５と、論理和回路１２５の出力とマスクビットとの論理積演算を行う論理積回路１２６と、論理積回路１２４の出力とマスクビットとの論理積演算を行う論理積回路１２７とから構成されている。
【００３５】
図４は図１に示す制御回路１３の構成を示す回路図である。図４において、制御回路１３は演算モードの論理積演算を行う論理積回路１３１〜１３３と、論理積回路１３１〜１３３各々の出力の論理和演算を行う論理和回路１３４と、論理和回路１３４の出力とマスクビットとの論理積演算を行う論理積回路１３５とから構成されている。
【００３６】
図５は図１に示す機能セレクタ１の構成を示す図である。図５において、機能セレクタ１はセレクタ１ａ，１ｂによって構成されている。機能セレクタ１のセレクタ１ａは制御回路１１からの制御信号にしたがって“０”，“１”，第１ＯＰのいずれかを選択してセレクタ１ｂに出力し、セレクタ１ｂはその選択された信号を指数部選択結果、仮数部選択結果とに分けて出力する。
【００３７】
図６は図１に示す機能セレクタ２の構成を示す図である。図６において、機能セレクタ２はセレクタ２ａ，２ｂによって構成されている。機能セレクタ２のセレクタ２ａは制御回路１２からの制御信号にしたがって“０”，“１”，第２ＯＰのいずれかを選択してセレクタ２ｂに出力し、セレクタ２ｂはその選択された信号を指数部選択結果、仮数部選択結果とに分けて出力する。
【００３８】
図７は図１に示す機能セレクタ３の構成を示す図である。図７において、機能セレクタ３はセレクタ３ａ，３ｂによって構成されている。機能セレクタ３のセレクタ３ａは制御回路１３からの制御信号にしたがって“０”，第１ＯＰのいずれかを選択してセレクタ３ｂに出力し、セレクタ３ｂはその選択された信号を指数部選択結果、仮数部選択結果とに分けて出力する。
【００３９】
図８（ａ）は図１に示す機能セレクタ１の選択結果を示す図であり、図８（ｂ）は図１に示す機能セレクタ２の選択結果を示す図であり、図８（ｃ）は図１に示す機能セレクタ３の選択結果を示す図である。
【００４０】
図８（ａ）において、機能セレクタ１は演算モードが“積和演算”の場合、マスクビットが「０」であれば“０”を、マスクビットが「１」であれば第１ＯＰを選択する。機能セレクタ１は演算モードが“乗算”の場合、マスクビットが「０」であれば“０”を、マスクビットが「１」であれば第１ＯＰを選択する。機能セレクタ１は演算モードが“加減算１”の場合、マスクビットが「０」であれば“０”を、マスクビットが「１」であれば第１ＯＰを選択する。機能セレクタ１は演算モードが“加減算２”の場合、マスクビットが「０」であれば“０”を、マスクビットが「１」であれば“１”を選択する。
【００４１】
図８（ｂ）において、機能セレクタ１は演算モードが“積和演算”の場合、マスクビットが「０」であれば“０”を、マスクビットが「１」であれば第２ＯＰを選択する。機能セレクタ２は演算モードが“乗算”の場合、マスクビットが「０」であれば“０”を、マスクビットが「１」であれば第２ＯＰを選択する。機能セレクタ２は演算モードが“加減算１”の場合、マスクビットが「０」であれば“０”を、マスクビットが「１」であれば“１”を選択する。機能セレクタ２は演算モードが“加減算２”の場合、マスクビットが「０」であれば“０”を、マスクビットが「１」であれば第２ＯＰを選択する。
【００４２】
図８（ｃ）において、機能セレクタ３は演算モードが“積和演算”の場合、マスクビットが「０」であれば“０”を、マスクビットが「１」であれば第３ＯＰを選択する。機能セレクタ３は演算モードが“乗算”の場合、マスクビットが「０」であれば“０”を、マスクビットが「１」であれば“０”を選択する。機能セレクタ３は演算モードが“加減算１”の場合、マスクビットが「０」であれば“０”を、マスクビットが「１」であれば第３ＯＰを選択する。機能セレクタ３は演算モードが“加減算２”の場合、マスクビットが「０」であれば“０”を、マスクビットが「１」であれば第３ＯＰを選択する。
【００４３】
これら図１〜図８を参照して本発明の一実施例によるベクトル積和演算回路の動作について説明する。本実施例によるベクトル積和演算回路は、ベクトルデータに対するマスク付き浮動小数点積和演算、すなわち、
Ｒ＝（Ｍａ［ｉ］＊Ａ［ｉ］）＊（Ｍｂ［ｉ］＊Ｂ［ｉ］）
＋（Ｍｃ［ｉ］＊Ｃ［ｉ］）
という計算を行う。ここで、Ａ［ｉ］は第１ＯＰ、Ｂ［ｉ］は第２ＯＰ、Ｃ［ｉ］は第３ＯＰ、Ｍａ［ｉ］、Ｍｂ［ｉ］、Ｍｃ［ｉ］はそれぞれ各オペランドＯＰに対するマスクビットの値を表す。
【００４４】
マスクビットは各オペランド毎に設けられ、データの有効／無効を示す。ここではマスクビット＝１の時にデータ有効、マスクビット＝０の時にデータ無効、とする。尚、本実施例によるベクトル積和演算回路は、Ａ［ｉ］あるいはＢ［ｉ］を“１”にすることによって２オペランドの加減算器として、またＣ［ｉ］を“０”にすることによって２オペランドの乗算器として動作する。
【００４５】
まず、積和演算を実行する場合の動作について説明する。この場合、制御回路１１〜１３各々へ送出される演算モードは“積和演算”が指定される。“積和演算”を示す信号＝１の際には、他の演算モード“乗算”、“加減算１”、“加減算２”を示す信号はそれぞれ０となり、各モードを示す信号は排他の関係にある。
【００４６】
制御回路１１は、図２に示すように、マスクレジスタ３１から供給されるマスクビットにしたがってマスクビットが「０」ならば“０”を選択する制御信号“００”を、マスクビットが「１」ならば第１ＯＰを選択する制御信号“１０”をそれぞれ機能セレクタ１へ送出する。
【００４７】
制御回路１２は、図３に示すように、マスクレジスタ３２から供給されるマスクビットにしたがってマスクビットが「０」ならば“０”を選択する制御信号“００”を、マスクビットが「１」ならば第２ＯＰを選択する制御信号“１０”を機能セレクタ２へ送出する。
【００４８】
制御回路１３は、図４に示すように、マスクレジスタ３３から供給されるマスクビットにしたがってマスクビットが「０」ならば“０”を選択する制御信号“０”を、マスクビットが「１」ならば第３ＯＰを選択する制御信号“１”を機能セレクタ３へ送出する。
【００４９】
機能セレクタ１は、図５に示すように、制御回路１１の出力である制御信号にしたがって第１ＯＰを選択し、選択結果の指数部を指数部加算器６へ、選択結果の仮数部を仮数部乗算回路４へそれぞれ出力する。
【００５０】
機能セレクタ２は、図６に示すように、制御回路１２の出力である制御信号にしたがって第２ＯＰを選択し、選択結果の指数部を指数部加算器６へ、選択結果の仮数部を仮数部乗算回路４へそれぞれ出力する。
【００５１】
機能セレクタ３は、図７に示すように、制御回路１３の出力である制御信号にしたがって第３ＯＰを選択し、選択結果の指数部を指数部減算器７へ、選択結果の仮数部をシフト回路８へそれぞれ出力する。
【００５２】
機能セレクタ１〜３各々は演算モードとマスクビットとによって、図８に示すようなデータを選択する。機能セレクタ１，２で選択された第１ＯＰ及び第２ＯＰの指数部は指数部加算器６にて加算が行われ、得られた指数部加算結果を指数部減算器７と指数部補正回路１５とに出力する。機能セレクタ３で選択された第３ＯＰの指数部は指数部減算器７にて指数部加算器６の出力との差（第１ＯＰ及び第２ＯＰの指数部の和から第３ＯＰの指数を引いた値）を求め、その結果をシフト回路８へ送出し、シフト回路８では機能セレクタ３で選択された第３ＯＰの仮数部に対してシフト動作を行う。
【００５３】
指数部減算器７の結果の絶対値がシフト回路８で使用するシフトビット数となる。指数部減算器７の結果が負の場合には第３ＯＰの指数の方が大きいので左シフトとなり、指数部減算器７の結果が正の場合には逆に小さいので右シフトとなる。シフトした結果が第１ＯＰ及び第２ＯＰの仮数部乗算結果に対する桁合わせした結果となり、これを仮数部加算器５へ送出する。
【００５４】
第１ＯＰ及び第２ＯＰの仮数部は仮数部乗算回路４に入力され、仮数部乗算回路４にて乗算が行われた結果が仮数部加算器５へ送出される。仮数部加算器５は仮数部乗算回路４の出力である第１ＯＰ及び第２ＯＰの仮数部乗算結果とシフト回路８の出力である第３ＯＰの仮数部の桁合わせ結果とを加算し、その結果を正規化回路９と０カウンタ１４とに送出する。
【００５５】
０カウンタ１４では加算結果のＭＳＢからビット０の数をカウントして正規化のためのシフト数が求められる。このシフト数は正規化回路９へ送出され、正規化回路９にて仮数部の正規化が行われる。また、０カウンタ１４の出力であるシフト数は指数部補正回路１５にも送出され、指数部補正回路１５にて指数部の正規化が行われ、積和演算結果の指数部が得られる。正規化回路９の出力に対しては丸め回路１０にて丸め処理が行われ、積和演算結果の仮数部が得られる。
【００５６】
次に、２オペランドの乗算を実行する場合の動作について説明する。この場合、制御回路１１〜１３へ送出される演算モードには“乗算”が指定される。“乗算”を示す信号＝１の際には、他の演算モード“積和演算”、“加減算１”、“加減算２”を示す信号はそれぞれ０となる。
【００５７】
制御回路１１は、図２に示すように、マスクレジスタ３１から供給されるマスクビットにしたがって、マスクビットが「０」ならば“０”を選択する制御信号“００”を、マスクビットが「１」ならば第１ＯＰを選択する制御信号“１０”をそれぞれ機能セレクタ１へ送出する。
【００５８】
制御回路１２は、図３に示すように、マスクレジスタ３２から供給されるマスクビットにしたがって、マスクビットが「０」ならば“０”を選択する制御信号“００”を、マスクビットが「１」ならば第２ＯＰを選択する制御信号“１０”をそれぞれ機能セレクタ２へ送出する。
【００５９】
制御回路１３は、図４に示すように、マスクレジスタ３３から供給されるマスクビットの値によらず“０”を選択する制御信号“０”を機能セレクタ３へ送出する。これは２オペランドの乗算では必要ない加算項の第３ＯＰを“０”とするためである。
【００６０】
機能セレクタ１は、図５に示すように、制御回路１１の出力である制御信号にしたがって第１ＯＰを選択し、選択結果の指数部を指数部加算器６へ、選択結果の仮数部を仮数部乗算回路４へそれぞれ出力する。
【００６１】
機能セレクタ２は、図６に示すように、制御回路１２の出力である制御信号にしたがって第２ＯＰを選択し、選択結果の指数部を指数部加算器６へ、選択結果の仮数部を仮数部乗算回路４へそれぞれ出力する。
【００６２】
機能セレクタ３は、図７に示すように、制御回路１３の出力である制御信号“０”にしたがって“０”を選択し、選択結果の指数部を指数部減算器７へ、選択結果の仮数部をシフト回路８へそれぞれ出力する。以降、第３ＯＰの値は“０”として扱われ、シフト回路８の出力も“０”となる。
【００６３】
仮数部加算器５は仮数部乗算回路４の出力である第１ＯＰ及び第２ＯＰの仮数部乗算結果と“０”との加算を行うため、仮数部加算器５の出力は第１ＯＰ及び第２ＯＰの仮数部乗算結果に等しい。したがって、最終的な演算結果として得られるのは第１ＯＰ及び第２ＯＰの乗算結果になる。
【００６４】
次に、２オペランドの加減算を実行する場合の動作について説明する。制御回路１１〜１３各々へ送出される演算モードは“加減算”が指定される。この時、「第１ＯＰ＋第３ＯＰ」の加減算の際には“加減算１”が、「第２ＯＰ＋第３ＯＰ」の加減算の際には“加減算２”がそれぞれ指定される。“加減算１”を示す信号＝１の際には他の演算モード“積和演算”、“乗算”、“加減算２”を示す信号はそれぞれ０となり、“加減算２”を示す信号＝１の際には他の演算モード“積和演算”、“乗算”、“加減算１”を示す信号がそれぞれ０となる。
【００６５】
制御回路１１は、図２に示すように、マスクレジスタ３１から供給されるマスクビットにしたがって、マスクビットが「０」ならば“０”を選択する制御信号“００”を、マスクビットが「１」でかつ演算モードが“加減算１”ならば第１ＯＰを選択する制御信号“１０”を、マスクビットが「１」でかつ演算モードが“加減算２”ならば“１”を選択する制御信号“０１”をそれぞれ機能セレクタ１へ送出する。これは「第２ＯＰ＋第３ＯＰ」の加減算の際に、第１ＯＰの値を“１”にすることで、乗算項を、「“１”＊第２ＯＰ（＝第２ＯＰ）」とするためである。
【００６６】
制御回路１２は、図３に示すように、マスクレジスタ３２から供給されるマスクビットにしたがって、マスクビットが「０」ならば“０”を選択する制御信号“００”を、マスクビットが「１」でかつ演算モードが“加減算１”ならば“１”を選択する制御信号“０１”を、マスクビットが「１」でかつ演算モードが“加減算２”ならば第２ＯＰを選択する制御信号“１０”をそれぞれ機能セレクタ２へ送出する。これは「第１ＯＰ＋第３ＯＰ」の加減算の際に、第２ＯＰの値を“１”にすることで、乗算項を、「第１ＯＰ＊“１”（＝第１ＯＰ）」とするためである。
【００６７】
制御回路１３は、図４に示すように、マスクレジスタ３３から供給されるマスクビットにしたがって、マスクビットが「０」ならば“０”を選択する制御信号“０”を、マスクビットが「１」ならば第３ＯＰを選択する制御信号“１”をそれぞれ機能セレクタ３へ送出する。
【００６８】
機能セレクタ１は、図５に示すように、制御回路１１の出力である制御信号にしたがって第１ＯＰあるいは“１”を選択し、選択結果の指数部を指数部加算器６へ、選択結果の仮数部を仮数部乗算回路４へそれぞれ出力する。
【００６９】
機能セレクタ２は、図６に示すように、制御回路１２の出力である制御信号にしたがって第２ＯＰあるいは“１”を選択し、選択結果の指数部を指数部加算器６へ、選択結果の仮数部を仮数部乗算回路４へそれぞれ出力する。
【００７０】
機能セレクタ３は、図７に示すように、制御回路１３の出力である制御信号にしたがって第３ＯＰを選択し、選択結果の指数部を指数部減算器７へ、選択結果の仮数部をシフト回路８へそれぞれ出力する。
【００７１】
仮数部乗算回路４は“１”＊第２ＯＰあるいは第１ＯＰ＊“１”の乗算を行うので、仮数部乗算回路４の出力は第１ＯＰあるいは第２ＯＰの仮数部になる。仮数部加算器５にて桁合わせされた第３ＯＰの仮数部と第１ＯＰあるいは第２ＯＰの仮数部との加算を行う。したがって、最終的な演算結果として得られるのは第１ＯＰ及び第３ＯＰの加減算結果、あるいは第２ＯＰ及び第３ＯＰの加減算結果になる。
【００７２】
尚、演算モードに“加減算１”または“加減算２”を指定し、マスクレジスタ３３を“０”で埋めることで、「第１ＯＰ＊“１”＋“０”」、あるいは「“１”＊第２ＯＰ＋“０”」の演算を実現することができる。また、マスクレジスタ３１，３２を“０”で埋めることで、「“０”＋第３ＯＰ」の演算を実現することができる。
【００７３】
このように、本実施例では、マスクビットと演算モードとの組合わせによって各オペランドデータのバイパス動作を可能にする。以上のように、各オペランドを格納するベクトルレジスタ２１〜２３それぞれにマスクビットを格納するマスクレジスタ３１〜３３を設け、各オペランド毎にマスクビットと演算モードとの組合わせから積和演算回路へ入力するデータを選択することによって、ベクトルレジスタ２１〜２３の各要素を書換えて２オペランドの乗算、あるいは加減算を行う積和演算回路よりも処理時間を短縮することができる。
【００７４】
上述したように、本実施例では、ベクトルデータであるオペランド毎にデータの有効／無効を示すマスクビットを設け、マスクビットと演算モードとの組合わせによってデータを選択する機能セレクタ１〜３を設けることによって、ベクトルレジスタ２１〜２３の各要素を書換えることなく、マスクビットと演算モードとの切替えのみで様々な演算を行うことが可能となるため、積和演算回路で２オペランドの乗算、あるいは加減算を行う際の処理時間を短縮することができる。
【図面の簡単な説明】
【００７５】
【図１】本発明の一実施例によるベクトル積和演算回路の構成を示すブロック図である。
【図２】図１に示す制御回路１１の構成を示す回路図である。
【図３】図１に示す制御回路１２の構成を示す回路図である。
【図４】図１に示す制御回路１３の構成を示す回路図である。
【図５】図１に示す機能セレクタ１の構成を示す図である。
【図６】図１に示す機能セレクタ２の構成を示す図である。
【図７】図１に示す機能セレクタ３の構成を示す図である。
【図８】（ａ）は図１に示す機能セレクタ１の選択結果を示す図、（ｂ）は図１に示す機能セレクタ２の選択結果を示す図、（ｃ）は図１に示す機能セレクタ３の選択結果を示す図である。
【図９】従来例のベクトル積和演算回路の構成を示すブロック図である。
【符号の説明】
【００７６】
１〜３  機能セレクタ
１ａ，１ｂ，２ａ，
２ｂ，３ａ，３ｂ  セレクタ
４  仮数部乗算回路
５  仮数部加算器
６  指数部加算器
７  指数部減算器
８  シフト回路
９  正規化回路
１０  丸め回路
１１〜１２  制御回路
１４  ０カウンタ
１５  指数部補正回路
２１〜２３  ベクトルレジスタ
３１〜３３  マスクレジスタ
１１１〜１１４，
１１６，１１７，
１２１〜１２４，
１２６，１２７，
１３１〜１３３，
１３５  論理積回路
１１５，１２５，
１３４  論理和回路
【図１】
2006338215.tif 000003
【図２】
2006338215.tif 000004
【図３】
2006338215.tif 000005
【図４】
2006338215.tif 000006
【図５】
2006338215.tif 000007
【図６】
2006338215.tif 000008
【図７】
2006338215.tif 000009
【図８】
2006338215.tif 000010
【図９】
2006338215.tif 000011