(57)【要約】      （修正有）【課題】制御装置内のモデル計算ユニット内での算術演算を実行するＦＭＡ（（浮動小数点乗加算演算）、（融合乗加算演算））ユニットを提供する。【解決手段】入力変数として、２個の被乗数と１個の被加数とがそれぞれ浮動小数点数値の形態により処理可能であり、出力変数として、計算結果が浮動小数点数値の形態により提供され、ＦＭＡユニットは、乗算と、後に続く加算と、を実行するように構成され、被乗数に対応する入力のビット分解能は、被加数に対応する入力のビット分解能よりも低く、且つ出力変数のビット分解能よりも低い。【選択図】図３
2014229318.tif 000002
【特許請求の範囲】
【請求項１】
制御装置内のモデル計算ユニット内での算術演算を実行するＦＭＡユニットにおいて、入力変数として、２個の被乗数と１個の被加数とがそれぞれ浮動小数点数値の形態により処理可能であり、出力変数として、計算結果が浮動小数点数値の形態により提供され、
前記ＦＭＡユニットは、前記２個の被乗数に対応する入力と、前記１個の被加数に対応する入力と、を有し、前記被乗数の乗算と、後に続く、前記乗算の計算結果と前記被加数との加算と、を実行するよう構成され、前記被乗数に対応する前記入力のビット分解能は、前記被加数に対応する前記入力のビット分解能よりも低く、及び、前記出力変数のビット分解能よりも低い、ＦＭＡユニット。
【請求項２】
前記被乗数は、仮数の第１のビット分解能と、指数の第１のビット分解能と、を有し、前記被加数及び前記出力変数は、仮数の第２のビット分解能と、指数の第２のビット分解能と、を有し、前記仮数の第２のビット分解能は、前記仮数の第１のビット分解能の少なくとも２倍に相当する、請求項１に記載のＦＭＡユニット。
【請求項３】
前記ＦＭＡユニットは、
−前記被乗数の指数を、当該指数の積形成のために加算し、対応する指数中間結果（ＥＧ）を提供するように構成された指数加算ブロックと、
−前記被乗数の仮数値（Ｍａ、Ｍｂ）を乗算し、仮数乗算結果（ＭＧ）を獲得するように構成された乗算ブロックと、
−前記指数中間結果（ＥＧ）と前記被加数の指数（ＥＣ）との間の差分を定め、指数結果（ＥＥ）を提供するように構成された指数評価ブロックと、
−前記指数中間結果（ＥＧ）と前記被加数の指数（ＥＣ）との間の前記定められた差分に従って、前記仮数乗算結果（ＭＧ）又は前記被加数の仮数（ＭＣ）に右シフト演算を行い、続いて、仮数結果を獲得するために、前記仮数乗算結果（ＭＧ）及び前記被加数の仮数（ＭＣ）を加算するように構成された加算ブロックと、を備え、
前記仮数結果（ＭＥ）と前記指数結果（ＥＥ）とは、前記出力変数を示し、
前記乗算ブロックの前記入力の前記ビット分解能は、前記加算ブロックの前記入力の前記ビット分解能よりも低い、請求項２に記載のＦＭＡユニット。
【請求項４】
前記指数評価ブロックは、前記指数中間結果（ＥＧ）と、前記被加数の指数（ＥＣ）と、のうちのより大きな指数の値として、前記指数結果（ＥＥ）を提供するように構成され、前記加算ブロックは、前記指数中間結果（ＥＧ）と前記被加数の指数（ＥＣ）との間の前記定められた差分に従って、前記仮数乗算結果（ＭＧ）又は前記被加数の仮数（Ｍｃ）の値であって、対応付けられたその指数がより小さい指数である前記値に、右シフト演算を行うように構成される、請求項３に記載のＦＭＡユニット。
【請求項５】
前記指数結果（ＥＥ）及び前記仮数結果（ＭＥ）を正規化するために、正規化ブロックが設けられる、請求項３又は４に記載のＦＭＡユニット。
【請求項６】
ハードウェアで実装されたアルゴリズムを計算するためにロジックユニットを有する演算コアを備えた、前記制御装置のためのモデル計算ユニットであって、加算演算及び／又は乗算演算を実行するために、請求項１〜５のいずれか１項に記載のＦＭＡユニットが設けられる、モデル計算ユニット。
【請求項７】
前記演算コアは、ベイズ回帰を計算するように構成される、請求項６に記載のモデル計算ユニット。
【請求項８】
−ソフトウェアにより制御される主演算ユニットと、
−請求項６に記載のモデル計算ユニットと、
を備えた、制御装置。
【請求項９】
データに基づく関数モデルのハイパーパラメータ及びサンプルポイントデータを格納するためにメモリが設けられ、前記ハイパーパラメータ及び前記サンプルポイントデータは、より小さいビット分解能で提供される、請求項８に記載の制御装置。
【請求項１０】
前記関数モデルはガウス過程モデルである、請求項９に記載の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置内のハードウェアで実現されたユニット、特に、ＦＭＡ（Ｆｌｏａｔｉｎｇ  Ｐｏｉｎｔ  Ｍｕｌｔｉｐｌｙ  ａｎｄ  Ａｄｄ  Ｏｐｅｒａｔｉｏｎ（浮動小数点乗加算演算）、Ｆｕｓｅｄ  Ｍｕｌｔｉｐｌｙ  Ａｄｄ  Ｏｐｅｒａｔｉｏｎ（融合乗加算演算））ユニットに関する。
【背景技術】
【０００２】
従来技術として、主演算ユニットと、データに基づく関数モデルを計算するための別体のモデル計算ユニットと、を備えた制御装置が公知である。例えば、特許文献１は、１つ以上のループ計算において乗算、加算、指数関数を純粋にハードウェア上で計算するよう構成されたモデル計算ユニットとして追加的な論理回路を備えた制御装置を示している。これにより、ガウス過程モデル（Ｇａｕｓｓ−Ｐｒｏｚｅｓｓｍｏｄｅｌｌ）の計算のために特に必要なベイズ回帰（Ｂａｙｅｓ−Ｒｅｇｒｅｓｓｉｏｎ）法を、ハードウェアユニット内でサポートすることが可能である。
【０００３】
モデル計算ユニットは、パラメータ及びサンプルポイント又は訓練データ（Ｔｒａｉｎｉｎｇｓｄａｔｅｎ）に基づいて、データに基づく関数モデルを計算するための数学的プロセスを実行するよう全体で設計されている。特に、モデル計算ユニットは、２つの演算ループにおいて指数関数をハードウェア上で効率良く計算するよう構成されているため、ソフトウェアにより駆動される主演算ユニット内で行われるよりも速い計算速度で、ガウス過程モデルを計算することが可能となる。ロジックユニット内での計算を加速させるために、加算演算及び乗算演算のハードウェア実現を特に効率の良い形で提供する共有のＭＡＫ（Ｍｕｌｔｉｐｌｉｋａｔｉｏｎｓａｋｋｕｍｕｌａｔｏｒ、乗算累算器）ユニット内又はＦＭＡユニット内で、乗算プロセスと加算プロセスとを組み合わせることが可能である。
【０００４】
例えば、特許文献２には、入力側及び出力側での３２ビットの分解のためのこのようなＦＭＡユニットが記載されている。特許文献３もこのようなＦＭＡユニットを示しているが、ここでは精度が改善されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】独国特許出願公開第１０２０１００２８２６６号明細書
【特許文献２】米国特許第７０８０１１１号明細書
【特許文献３】米国特許第７３４６６４２号明細書
【発明の概要】
【課題を解決するための手段】
【０００６】
本発明に基づいて、請求項１に記載の制御装置内のモデル計算ユニット内で算術演算を実行するＦＭＡユニット、並びに、同等の独立請求項に記載のモデル計算ユニット及び制御装置が構想される。
【０００７】
本発明の更なる別の有利な構成は、従属請求項に示される。
【図面の簡単な説明】
【０００８】
【図１】モデル計算ユニットを備えた制御装置の概略図を示す。
【図２】モデル計算ユニットの演算コアの概略図を示す。
【図３】図１のモデル計算ユニット内のＦＭＡ計算の概略図を示す。
【発明を実施するための形態】
【０００９】
第１の観点によれば、制御装置内のモデル計算ユニット内での算術演算を実行するＦＭＡユニットであって、入力変数として、２個の被乗数と１個の被加数とがそれぞれ浮動小数点数値の形態により処理可能であり、出力変数として、計算結果が浮動小数点数値の形態により、仮数結果及び指数結果に対応して提供され、ＦＭＡユニットは、乗算と、後に続く加算と、を実行するように構成され、被乗数に対応する入力のビット分解能（Ｂｉｔａｕｆｌｏｅｓｕｎｇ）は、被加数に対応する入力のビット分解能よりも低く、及び、出力変数のビット分解能よりも低い、上記ＦＭＡユニットが設けられる。
【００１０】
上記のＦＭＡユニットは、２個の被乗数の乗算と、当該乗算の結果と１個の被加数との加算と、を実行する。上記のＦＭＡユニットは、被乗数が、被加数及びＦＭＡユニット内での計算結果よりも低い精度で提供されて計算されるという点で、公知のＦＭＡユニットとは異なっている。さらに、精度が損なわれることなく、乗算の中間結果が提示される。個々のビット分解能の選択の際には重み付け（Ａｂｗａｅｇｕｎｇ）を行う必要があり、その際には、１つ以上の演算ループを有するモデル計算ユニット内でＦＭＡユニットを使用する際は、和形成を繰り返し累積的に行う必要があり、及びその際に十分な精度に達しなければならないことが考慮される。特に、累算された値が非常に小さく、即ち値が０に近い際又は被加数が非常に大きい際の数値的な問題に基づいて、十分なビット分解能が提供される必要がある。
【００１１】
その一方で、被乗数及び被加数のビット分解能として非常に大きい値が選択される場合には、アルゴリズムのハードウェア実現に基づいて、更に多くのロジック（Ｌｏｇｉｋ）部が必要となり、従って、一体化された構造形態においてＦＭＡユニットを実現するために必要な面積が明らかに拡大され、これに加えて、ハードウェアの性能も下がる。
【００１２】
上記のＦＭＡユニットは、精度が下げられた、ＦＭＡユニットの乗算部を利用することを提案する。即ち、被乗数を、後続の和形成のビット分解能よりも小さいビット分解能で予め設定し、計算することが可能である。このことによって、必要なチップ面積が著しく節約される。なぜならば、乗算部は、ＦＭＡユニットの中で最も大きな面積を必要とする構成要素だからである。特に、半分又は半分より少ない乗算についての、被乗数のビット分解能又は被乗数の仮数値のビット分解能が、出力値のビット分解能及び被加数のビット分解能又は被加数の仮数値のビット分解能に対応する場合には、加算を実行しうるために、従来では必要であったような、ビット分解能が下げられた値への乗算結果の内部変換がもはや必要ではない。
【００１３】
むしろ、精度を下げないように、乗算の中間結果のビット分解能を選択することが可能である。例えば、指数部（以下、単に指数とも言う。）が８ビットで仮数部（以下、単に仮数とも言う。）が２３ビットの３２ビットの浮動小数点形式の精度（Ｓｉｎｇｌｅ−Ｐｒｅｃｉｓｉｏｎ、単精度）で被乗数を提供することが可能である。２４ビット×２４ビットの整数乗算が適用可能であり、これにより、４８ビットの小数部の精度（ｆｒａｋｔｉｏｎａｌｅ  Ｇｅｎａｕｉｇｋｅｉｔ）がもたらされる。さらに、被乗数のビット分解能が下げられることによって、入力変数として提供すべきデータ量が削減されうる。なぜならば、例えば６４ビット分解能での最終結果が望まれる際には、上記２個の被乗数を３２ビット分解能で提供すればよいからである。
【００１４】
さらに、ＦＭＡユニットは、
−被乗数の指数を、当該指数の積形成のために加算し、対応する指数中間結果を提供するように構成された指数加算ブロックと、
−被乗数の仮数値を乗算し、仮数乗算結果を獲得するように構成された乗算ブロックと、
−指数中間結果ＥＧと被加数の指数との間の差分を定め、指数結果を提供するように構成された指数評価ブロックと、
−指数中間結果ＥＧと被加数の指数との間の定められた差分に従って、仮数乗算結果又は被加数の仮数に右シフト演算を行い、続いて、仮数結果を獲得するために、仮数乗算結果及び被加数の仮数を加算するよう構成された加算ブロックと、
を備えることが可能であり、
仮数結果と指数結果とは、出力変数を示し、
指数加算ブロックの入力のビット分解能は、指数評価ブロック及び加算ブロックの入力のビット分解能よりも低い。
【００１５】
一実施形態によれば、被乗数は、仮数の第１のビット分解能と、指数の第１のビット分解能と、を有し、被加数及び出力変数は、仮数の第２のビット分解能と、指数の第２のビット分解能と、を有してもよく、仮数の第２のビット分解能は、仮数の第１のビット分解能の少なくとも２倍に相当する。被加数及び出力変数の仮数のビット分解能は、被乗数の仮数のビット分解能の少なくとも２倍であってよい。
【００１６】
指数評価ブロックは、指数中間結果ＥＧと被加数の指数とのうちのより大きな指数の値として指数結果を提供するよう構成され、加算ブロックは、指数中間結果ＥＧと被加数の指数との間の定められた差分に従って、対応付けられたその指数がより小さい指数である仮数乗算結果又は被加数の仮数に、右シフト演算を行うように構成される。
【００１７】
特に、指数結果及び仮数結果を正規化し、適切な浮動小数点表示にして提供するために正規化ブロックを設けることが可能である。
【００１８】
一の観点によれば、ハードウェアで実装されたアルゴリズムを計算するためにロジックユニットを有する演算コアを備えた、制御装置のためのモデル計算ユニットであって、加算演算及び／又は乗算演算を実行するＦＭＡユニットが設けられた、上記モデル計算ユニットが構想される。
【００１９】
特に、ロジックユニットは、ベイズ回帰を計算するよう構成されうる。
【００２０】
一の観点によれば、
−ソフトウェアにより制御される主演算ユニットと、
−上記のモデル計算ユニットと、
を備えた、制御装置が設けられる。
【００２１】
一実施形態によれば、ハイパーパラメータ及びサンプルポイントデータを格納するためにメモリが設けられ、ハイパーパラメータ及びサンプルポイントデータは、より小さいビット分解能で提供される。
【００２２】
以下では、好適な実施形態が添付の図面を用いてより詳細に解説される。
【００２３】
以下の明細書の記載で利用される浮動小数点形式はＩＥＥＥ７５４規格に基づいている。
【００２４】
図１は、組み込まれた制御装置１のハードウェア構造の概略図を示しており、この制御装置１内には、主演算ユニット２と、データに基づく関数モデルをハードウェア上で計算するモデル計算ユニット３と、が一体になった形で設けられている。主演算ユニット２とモデル計算ユニット３とは、内部の通信接続４を介して、例えばシステムバスを介して、互いに通信接続されている。さらに、制御装置１は、内部の通信接続４を介して相互接続された内部のメモリ５及びＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ、直接メモリアクセス）ユニット６を備えてもよい。
【００２５】
基本的に、モデル計算ユニット３はハードワイヤードされており、これに対応して、ソフトウェア・コード（Ｓｏｆｔｗａｒｅｃｏｄｅ）を実行するよう構成されていない。この理由から、モデル計算ユニット３内にプロセッサを設けることも必要ではない。この理由から、リソースが最適化されたこのようなモデル計算ユニット３の実現、又は、一体化された設計での面積が最適化された構造が可能となる。モデル計算ユニット３は、予め設定されたアルゴリズムの計算をハードウェアで実現する演算コア３１を有する。これについて演算コア３１は、論理回路４３と、指数関数をハードウェア上で計算する指数関数ユニット４１と、組み合わされた乗算演算と加算演算とをハードウェア上で計算するＦＭＡユニット４２と、を備える。
【００２６】
非パラメータ的な、データに基づく関数モデルの利用は、ベイズ回帰方法に基づいている。ベイズ回帰の基礎は、例えば、Ｃ．Ｅ．Ｒａｓｍｕｓｓｅｎらによる「Ｇａｕｓｓｉａｎ  Ｐｒｏｃｅｓｓｅｓ  ｆｏｒ  Ｍａｃｈｉｎｅ  Ｌｅａｒｎｉｎｇ」（ＭＩＴ  Ｐｒｅｓｓ、２００６年）に記載されている。ベイズ回帰は、データに基づく方法であって、モデルに基づいている。モデルの作成のためは、訓練データの測定点、及び、出力変数の対応する出力データが必要である。訓練データに完全に又は部分的に対応し又は訓練データから生成されるサンプルポイントデータを利用して、このモデルは作成される。さらに、抽象的なハイパーパラメータ（Ｈｙｐｅｒｐａｒａｍｅｔｅｒ）が決定され、このハイパーパラメータは、モデル関数の空間をパラメータ化し、後のモデル予測への、訓練データの個々の測定点の影響に効果的に重み付けする。
【００２７】
計算の開始に際して、主演算ユニット２は、ＤＭＡユニット６に対して、計算すべき関数モデルに該当する設定データを、モデル計算ユニット３内へと伝送し、設定データを用いて実行する計算を開始するよう命令する。設定データは、ガウス過程モデルのハイパーパラメータ及びサンプルポイントデータを含み、ハイパーパラメータ及びサンプルポイントデータは、好適に、モデル計算ユニット３に割り当てられたメモリ５のアドレス範囲を指すアドレスポインタによって示される。
【００２８】
モデル計算ユニット３内での計算は、モデル計算ユニット３内の、以下の疑似Ｃコード（Ｐｓｅｕｄｏ−Ｃ−Ｃｏｄｅ）により実現されたハードウェア構造において行われ、このハードウェア構造は上記の計算命令に対応している。疑似Ｃコードから、計算が内側のループと外側のループとで行われ、その部分結果が累算されることが分かる。
【００２９】
2014229318.tif 000003
【００３０】
ハードウェア実現の際には、ａ＋ｂ×ｃという形態の演算が、特に効率良いやり方でＦＭＡユニットを用いて可能である。このようなＦＭＡユニットは、少数のクロック周期内に対応する計算を実行しうるために、ハードウェアで実現される。状況によっては、上記計算は、１クロック周期内に行われうる。上記計算は、添付の疑似Ｃコードで示すように、ハードウェアで実現される。
【００３１】
上記のアルゴリズムの計算は、図２で詳細に示される演算コア３１内の後続のユニットによって実行されうる。これについて、演算コア３１は、論理回路４３（ロジックユニット４３）、指数関数ユニット４１、及び、入力変数への組み合わされた乗算演算と加算演算とを浮動小数点形式で提供するＦＭＡユニット４２を備える。
【００３２】
先に疑似Ｃコードで示した計算過程は、アルゴリズムをハードウェアとして実現する適切な論理回路４３によって制御される。論理回路４３は、対応する配線とフロー制御を提示する。
【００３３】
図３は、ＦＭＡユニット４２内での計算を概略的に示している。ＦＭＡユニット４２には、ａ×ｂ＋ｃの計算のための入力変数ａ、ｂ、ｃ、即ち、被乗数ａ、ｂと、被加数ｃと、が提供される。入力変数ａ、ｂ、ｃは、浮動小数点形式により提供される。特に、被乗数ａ、ｂに対応する入力が第１のビット分解能で提供され、被加数ｃに対応する入力、及び、出力が第２のビット分解能で提供される。第１のビット分解能は、第２のビット分解能よりも小さい。一例では、第１のビット分解能は３２ビットであり、第２のビット分解能は６４ビットである。
【００３４】
ＦＭＡユニット４２は、入力変数（被乗数）ａ、ｂの指数Ｅａ、Ｅｂを当該指数の積形成のために加算して、対応する指数中間結果ＥＧを指数評価ブロック５２に提供するために、指数加算ブロック５１を含む。さらに、被乗数ａ、ｂの仮数値Ｍａ、Ｍｂが乗算ブロック５３内で乗算され、対応する仮数乗算結果ＭＧが、加算ブロック５４に提供される。
【００３５】
指数評価ブロック５２にはさらに、被加数ｃの指数Ｅｃが供給される。指数加算ブロック５１の指数中間結果ＥＧは、被加数ｃの指数Ｅｃに調整される。このために、被加数の指数Ｅｃと、指数中間結果ＥＧと、の差分が計算されて、加算ブロック５４に伝えられる。指数値Ｅｃ、ＥＧのうちの大きい方の指数値が、指数結果ＥＥとして、後に配置された正規化ブロック５５へと転送される
【００３６】
加算ブロック５４にはさらに、被加数ｃの仮数Ｍｃが供給される。加算ブロック５４に供給された仮数Ｍｃ、ＭＧのうちの１つに対して、上記定められた差分に対応する数のビットの分だけ右シフトが行われる。特に、仮数の値、即ち、被加数ｃの仮数Ｍｃ又は仮数乗算結果ＭＧの値であって、対応するその指数がより低い方の値が、右シフト演算によって上げられる。続いて、即ち右シフト演算の後で、存在する仮数値Ｍｃ、ＭＧの（符号に従った）加算又は減算が行われて、仮数結果ＭＥが獲得される。仮数結果ＭＥは、後に配置された正規化ブロック５５へと転送される。
【００３７】
その後で、仮数結果ＭＥと指数結果ＥＥとから形成された結果が、正規化ブロック５５によって正規化されて、最終結果が形成される。好適に、最終結果の仮数値は、例えば［１．０；２．０］の間の値に正規化される。正規化は、計算の終了時にのみ必要であり、乗算の後では必要ではないことが分かる。これにより、後続の加算のビット分解能よりも小さいビット分解能での乗算を構想することによって、有利なやり方で、モデル計算のために利用されうる。
【００３８】
実行された乗算は、仮数乗算結果ＭＧを獲得するために、２４ビット×２４ビットの仮数値（２３ビットの仮数＋隠しビット（Ｈｉｄｄｅｎ−Ｂｉｔ））を利用し、４８ビットの結果が得られる。乗算は、例えば、乗算器アレイ（Ｍｕｌｔｉｐｌｉｚｉｅｒ−Ａｒｒａｙ）、桁上げ保存加算器（Ｃａｒｒｙ−Ｓａｖｅ−Ａｄｄｉｅｒｅｒ）、又は、高基数乗算器（ｈｏｅｈｅｒｅｒ  Ｒａｄｉｘ−Ｍｕｌｔｉｐｌｉｚｉｅｒｅｒ）を用いて実行することが可能である。被加数ｃは、被乗数ａ又はｂよりもビット分解能が高いため、仮数乗算結果ＭＧを、３２ビット値へと、即ち、２４ビットの仮数値と８ビットの指数値とを有する値へと正規化する必要はない。被加数ｃが６４ビット分解能である場合には、仮数値のビット分解能は５３ビットである。従って、仮数値の４８ビットの結果を利用し、加算の前に５３ビットに拡張することが可能である。最も簡単な拡張は、最下位の５ビットを０で充填することである。
【００３９】
さらに、指数中間結果ＥＧと被加数ｃの指数ＥＣとを調整することで、事前調整も同様に可能であり、従って、上記の拡張は、より低い指数値が対応付けられた仮数値の右シフト演算を含みうる。これにより、例えば加算器の精度の改善のような様々な利点が実現されうる。なぜならば、乗算結果が２４ビットに丸められないからである。
【００４０】
さらに、２４ビット×２４ビットの乗算器のみ必要であるため、ＦＭＡユニット４２を一体化した構造形態において必要な面積を小さく抑えることが可能である。最終結果のビット分解能と比べて、乗算のための入力変数のビット分解能が低いことによって、ハードウェア計算の高い性能が実現されうる。
【図１】
2014229318.tif 000004
【図２】
2014229318.tif 000005
【図３】
2014229318.tif 000006