(57)【要約】【課題】ルックアップテーブルを利用して加速化されたコンピューティングの方法及びシステムを提供する。【解決手段】本発明は、ルックアップテーブルから２つの浮動小数点被演算子の積の仮数部を検索するか、又はルックアップテーブルから２つの浮動小数点被演算子の積を検索する。これにより、浮動小数点乗算が加速され、ルックアップテーブルから浮動小数点ベクトルの内積を検索することができる。本発明によるシステムは、アクセラレーターとして、３次元メモリーアセンブリーに実装され、近似値、乗算ルックアップテーブルの対称性、及び０（ゼロ）省略を使用して特性を向上させる。【選択図】図３
2019121398.tif 000002
【特許請求の範囲】
【請求項１】
第１浮動小数点数と第２浮動小数点数との積を計算する方法であって、
前記第１浮動小数点数の因数である第１因数、及び前記第２浮動小数点数の因数である第２因数からアドレスを生成するステップと、
前記アドレスにより識別されるルックアップテーブルの位置から前記第１因数と前記第２因数との積を検索するステップと、を有することを特徴とする方法。
【請求項２】
前記第１因数は前記第１浮動小数点数の仮数部（ｆｒａｃｔｉｏｎ  ｐｏｒｔｉｏｎ）であり、前記第２因数は前記第２浮動小数点数の仮数部であることを特徴とする請求項１に記載の方法。
【請求項３】
前記第１浮動小数点数及び前記２浮動小数点数は同一の表現であり、
前記第１浮動小数点数の指数と前記第２浮動小数点数の指数との合計から、左シフト数（ｌｅｆｔ−ｓｈｉｆｔ  ｎｕｍｂｅｒ）を差し引いて、前記第１浮動小数点数と前記第２浮動小数点数との積の指数を計算するステップをさらに含み、
前記左シフト数は、前記第１因数に先行する１を付与することにより生成される第１の数と、前記第２因数に先行する１を付与することにより生成される第２の数との２ｎビットの積における先行する０（ゼロ）のカウントと同一であり、
前記ｎは前記第１因数のビット長に１を加えた数であることを特徴とする請求項２に記載の方法。
【請求項４】
前記左シフト数を、デジタルロジック回路で決定するステップをさらに含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記アドレスにより識別される前記ルックアップテーブルの位置から、前記左シフト数を検索するステップをさらに含むことを特徴とする請求項３に記載の方法。
【請求項６】
前記アドレスを生成するステップは、
前記第１因数の一部と前記第２因数の一部とを連結させるステップを含むことを特徴とする請求項２に記載の方法。
【請求項７】
前記第１因数の一部と前記第２因数の一部とを連結させるステップは、
前記第１因数の一部及び前記第２因数の一部のそれぞれの値に従って順次に、前記第１因数の一部と前記第２因数の一部とを連結させるステップを含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記第１因数の一部は全体の第１因数であり、前記第２因数の一部は全体の第２因数であることを特徴とする請求項６に記載の方法。
【請求項９】
前記第１因数の一部は、
前記第１因数の全体よりも小さく、前記第１因数の最上位ビットを含む前記第１因数のビットの隣接部分集合であり、
前記第２因数の一部は、
前記第２因数の全体よりも小さく、前記第２因数の最上位ビットを含む前記第２因数のビットの隣接部分集合であることを特徴とする請求項６に記載の方法。
【請求項１０】
前記第１因数は前記第１浮動小数点数の全体であり、前記第２因数は前記第２浮動小数点数の全体であることを特徴とする請求項１に記載の方法。
【請求項１１】
前記ルックアップテーブルを生成するステップをさらに含み、
前記ルックアップテーブルを生成するステップは、
前記ルックアップテーブルの成分を計算するステップと、
メモリーに前記成分を格納するステップと、を含むことを特徴とする請求項１に記載の方法。
【請求項１２】
第１浮動小数点数と第２浮動小数点数との積を計算するシステムであって、
処理回路と、
メモリーと、を含み、
前記処理回路は、
前記第１浮動小数点数の第１因数、及び前記第２浮動小数点数の第２因数からアドレスを生成し、
前記アドレスにより識別されるルックアップテーブルの位置から、前記第１因数と前記第２因数との積を検索し、
前記ルックアップテーブルは、前記メモリーに格納されることを特徴とするシステム。
【請求項１３】
前記システムは、
２つ以上のメモリーチップのスタック（ｓｔａｃｋ）、及び前記処理回路を有するロジックチップを含む３次元メモリーアセンブリー（ｍｅｍｏｒｙ  ａｓｓｅｍｂｌｙ）を備えることを特徴とする請求項１２に記載のシステム。
【請求項１４】
前記第１因数は前記第１浮動小数点数の仮数部であり、前記第２因数は前記第２浮動小数点数の仮数部であることを特徴とする請求項１２に記載のシステム。
【請求項１５】
前記アドレスは、前記処理回路により、
前記第１因数の一部と前記第２因数の一部とを連結させて生成されることを特徴とする請求項１４に記載のシステム。
【請求項１６】
前記第１因数の一部及び前記第２因数の一部は、前記処理回路により、
前記第１因数の一部及び前記第２因数の一部のそれぞれの値に従って順次に連結されること特徴とする請求項１５に記載のシステム。
【請求項１７】
前記第１因数の一部は前記第１因数の全体であり、前記第２因数の一部は前記第２因数の全体であることを特徴とする請求項１５に記載のシステム。
【請求項１８】
前記第１因数の一部は、
前記第１因数の全体よりも小さく、前記第１因数の最上位ビットを含む前記第１因数のビットの隣接部分集合であり、
前記第２因数の一部は、
前記第２因数の全体よりも小さく、前記第２因数の最上位ビットを含む前記第２因数のビットの隣接部分集合であることを特徴とする請求項１５に記載のシステム。
【請求項１９】
前記第１因数は前記第１浮動小数点数の全体であり、前記第２因数は前記第２浮動小数点数の全体であることを特徴とする請求項１２に記載のシステム。
【請求項２０】
第１浮動小数点ベクトルと第２浮動小数点ベクトルとの内積を計算する方法であって、
前記第１浮動小数点ベクトルの第１成分、前記第１浮動小数点ベクトルの第２成分、前記第２浮動小数点ベクトルの第１成分、及び第２浮動小数点ベクトルの第２成分からアドレスを生成するステップと、
前記アドレスにより識別されるルックアップテーブルの位置から、前記内積を検索するステップと、を有することを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューティングに関し、より詳しくは、１つ以上のルックアップテーブル（ｌｏｏｋｕｐ  ｔａｂｌｅ）を利用して加速化されたコンピューティングのための方法及びシステムに関する。
【背景技術】
【０００２】
ニューラルネットワークシステム（ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ  ｓｙｓｔｅｍ）を含む人工知能システムに使用される多様な動作（ｏｐｅｒａｔｉｏｎ）は、乗算及び行列乗算のような動作を使用し、それぞれの乗算により消費される時間、又は行列乗算により消費される時間は、システム全体の性能に相当な影響を及ぼす。
【０００３】
従って、乗算又は行列乗算のような計算を効果的に遂行するための方法及びシステムに対する要求が提起される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第７９０８４６４号明細書
【特許文献２】米国特許第９１５８５４０号明細書
【特許文献３】米国特許出願公開第２０１６／０１７０８４９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、ルックアップテーブルを利用して加速化されたコンピューティングのための方法及びシステムを提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するためになされた本発明の一態様による方法は、第１浮動小数点数と第２浮動小数点数との積を計算する方法であって、前記第１浮動小数点数の因数（ｆａｃｔｏｒ）である第１因数、及び前記第２浮動小数点数の因数である第２因数からアドレスを生成するステップと、前記アドレスにより識別されるルックアップテーブルの位置から前記第１因数と前記第２因数との積を検索するステップと、を有することを特徴とする。
【０００７】
前記第１因数は前記第１浮動小数点数の仮数部（ｆｒａｃｔｉｏｎ  ｐｏｒｔｉｏｎ）であり、前記第２因数は前記第２浮動小数点数の仮数部であり得る。
前記第１浮動小数点数及び前記２浮動小数点数は同一の表現であり、前記第１浮動小数点数の指数と前記第２浮動小数点数の指数との合計から、左シフト数（ｌｅｆｔ−ｓｈｉｆｔ  ｎｕｍｂｅｒ）を差し引いて、前記第１浮動小数点数と前記第２浮動小数点数との積の指数を計算するステップをさらに含み、前記左シフト数は、前記第１因数に先行する１を付与することにより生成される第１の数と、前記第２因数に先行する１を付与することにより生成される第２の数との２ｎビットの積における先行する０（ゼロ）のカウントと同一であり、前記ｎは前記第１因数のビット長に１を加えた数であり得る。
【０００８】
前記方法は、前記左シフト数をデジタルロジック回路で決定するステップをさらに含み得る。
前記方法は、前記アドレスにより識別される前記ルックアップテーブルの位置から、前記左シフト数を検索するステップを含み得る。
前記アドレスを生成するステップは、前記第１因数の一部と前記第２因数の一部とを連結させるステップを含み得る。
前記第１因数の一部と前記第２因数の一部とを連結させるステップは、前記第１因数の一部及び前記第２因数の一部のそれぞれの値に従って順次に、前記第１因数の一部と前記第２因数の一部とを連結させるステップを含み得る。
前記第１因数の一部は全体の第１因数であり、前記第２因数の一部は全体の第２因数であり得る。
前記第１因数の一部は、前記第１因数の全体よりも小さく、前記第１因数の最上位ビットを含む前記第１因数のビットの隣接部分集合であり、前記第２因数の一部は、前記第２因数の全体よりも小さく、前記第２因数の最上位ビットを含む前記第２因数のビットの隣接部分集合であり得る。
前記第１因数は前記第１浮動小数点数の全体であり、前記第２因数は前記第２浮動小数点数の全体であり得る。
前記方法は、前記ルックアップテーブルを生成するステップをさらに含み、前記ルックアップテーブルを生成するステップは、前記ルックアップテーブルの成分を計算するステップと、メモリーに前記成分を格納するステップと、を含み得る。
【０００９】
上記目的を達成するためになされた本発明の一態様によるシステムは、第１浮動小数点数と第２浮動小数点数との積を計算するシステムであって、処理回路と、メモリーと、を含み、前記処理回路は、前記第１浮動小数点数の第１因数、及び前記第２浮動小数点数の第２因数からアドレスを生成し、前記アドレスにより識別されるルックアップテーブルの位置から、前記第１因数と前記第２因数との積を検索し、前記ルックアップテーブルは前記メモリーに格納されることを特徴とする。
【００１０】
前記システムは、２つ以上のメモリーチップのスタック（ｓｔａｃｋ）、及び前記処理回路を有するロジックチップを含む３次元メモリーアセンブリー（ｍｅｍｏｒｙ  ａｓｓｅｍｂｌｙ）を備え得る。
前記第１因数は前記第１浮動小数点数の仮数部であり、前記第２因数は前記第２浮動小数点数の仮数部である。
【００１１】
前記アドレスは、前記処理回路により、前記第１因数の一部と前記第２因数の一部とを連結させて生成され得る。
前記第１因数の一部及び前記第２因数の一部は、前記処理回路により、前記第１因数の一部及び前記第２因数の一部のそれぞれの値に従って順次に、連結され得る。
前記第１因数の一部は前記第１因数の全体であり、前記第２因数の一部は前記第２因数の全体であり得る。
前記第１因数の一部は、前記第１因数の全体よりも小さく、前記第１因数の最上位ビットを含む前記第１因数のビットの隣接部分集合であり、前記第２因数の一部は、前記第２因数の全体よりも小さく、前記第２因数の最上位ビットを含む前記第２因数のビットの隣接部分集合であり得る。
前記第１因数は前記第１浮動小数点数の全体であり、前記第２因数は前記第２浮動小数点数の全体であり得る。
【００１２】
上記目的を達成するためになされた本発明の他の態様による方法は、第１浮動小数点ベクトルと第２浮動小数点ベクトルとの内積を計算する方法であって、前記第１浮動小数点ベクトルの第１成分、前記第１浮動小数点ベクトルの第２成分、前記第２浮動小数点ベクトルの第１成分、及び前記第２浮動小数点ベクトルの第２成分からアドレスを生成するステップと、前記アドレスにより識別されるルックアップテーブルの位置から、前記内積を検索するステップと、を有することを特徴とする。
【００１３】
前記第１浮動小数点ベクトルの第１成分、前記第１浮動小数点ベクトルの第２成分、前記第２浮動小数点ベクトルの第１成分、及び前記第２浮動小数点ベクトルの第２成分のそれぞれは、８ビット浮動小数点数であり得る。
【００１４】
本発明の一実施形態による方法は、第１浮動小数点行列と第２浮動小数点行列との畳み込み（ｃｏｎｖｏｌｕｔｉｏｎ）を計算する方法であって、行列畳み込み動作の結果を含むルックアップテーブルを生成するステップと、第１行列の成分、及び第２行列の成分からアドレスを生成するステップと、前記アドレスにより識別されるルックアップテーブルの位置から、前記第１浮動小数点行列と前記第２浮動小数点行列とのコンボリューションを検索するステップと、を含み得る。
【発明の効果】
【００１５】
本発明によれば、ルックアップテーブルから２つの浮動小数点被演算子の積の仮数部を検索するか、又はルックアップテーブルから２つの浮動小数点の被演算子の積を検索することにより、浮動小数点の乗算を加速することができる。また、ルックアップテーブルから浮動小数点ベクトルの内積を検索することができる。本発明によるシステムは、アクセラレーターとして、３次元メモリーアセンブリー（ｍｅｍｏｒｙ  ａｓｓｅｍｂｌｙ）に実装され、近似値、乗算ルックアップテーブルの対称性、及び０（ゼロ）省略を使用して性能を向上させることができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施形態による浮動小数点乗算の一例を示すブロック図である。
【図２】本発明の一実施形態によるルックアップテーブルを示す図である。
【図３】本発明の一実施形態による浮動小数点乗算の他の例を示すブロック図である。
【図４】本発明の一実施形態によるスケーラブルアクセラレーターアーキテクチャ（ｓｃａｌａｂｌｅ  ａｃｃｅｌｅｒａｔｏｒ  ａｒｃｈｉｔｅｃｔｕｒｅ）を示す図である。
【発明を実施するための形態】
【００１７】
図面に関連して、以下に記載する詳細な説明は、本発明により提供されるルックアップテーブルを利用したコンピューティングアクセラレーターの例示的な実施形態を説明するものであって、本発明を構成又は利用する唯一の形態を示すものではない。以下の説明は、図示された実施形態に関連した本発明の特徴を記載する。しかしながら、同一又は同等の機能及び構造が、本発明の技術範囲内に含まれる他の実施形態によって具現される。本明細書で、特に指定しない限り、同一の符号は、同一の要素又は特徴を示す。
【００１８】
図１は、本発明の一実施形態による浮動小数点乗算の一例を示すブロック図である。
【００１９】
図１を参照すると、２つの浮動小数点数（又は「被演算子」）の乗算は幾つかのステップを含む。それぞれの浮動小数点数は、符号ビット、指数（符号付き整数である）、及び仮数を含む。例えば、ＩＥＥＥ標準７５４浮動小数点表現において、浮動小数点は３２ビットで表現され、この中で、１ビットは符号ビットであり、８ビットは指数（符号付き（２の補数）整数で表現される）であり、２３ビットは浮動小数点数の仮数（ｆｒａｃｔｉｏｎ）（又は「仮数部」）である。仮数は、暗黙の先行する１を有する符号無しの数である。左側に付与された先行する１を有する（即ち、明示的に付与された暗黙の先行する１を有する）仮数からなるビットのシーケンス（ｓｅｑｕｅｎｃｅ）を、本明細書では、「拡張された仮数（ａｕｇｍｅｎｔｅｄ  ｆｒａｃｔｉｏｎ）と称する。
【００２０】
このような表現において、浮動小数点数は、仮数部の左側に先行する１ビットを付与し、先行する１の右側に小数点（即ち、２進小数点）を配置し、指数と同じビット位置の桁数だけ左側に数（数字）をシフト（ｓｈｉｆｔ）し（即ち、小数点を右側にシフトし）（又は、指数が負数であれば、指数の値の反転値と同じビット位置の桁数だけ右側に数をシフトし（即ち、小数点を左側にシフトし））、その後、浮動小数点表現の符号ビットが１であれば、固定小数点数の結果の符号を変更することによって生成される固定小数点表現の数（数字）で表される。
【００２１】
図１に示すように、２つの浮動小数点被演算子を掛ける（乗算する）ために、２つの浮動小数点数の符号ビットは、ＸＯＲ（ｅｘｃｌｕｓｉｖｅ  ｏｒ）回路１１０に結合され、２つの浮動小数点数の指数は加えられ（即ち、符号付き加算を利用するか、又は図１に示すように、適切なバイアスとともに符号無しの加算を利用して）、２つの浮動小数点数の仮数は乗算器（ｍｕｌｔｉｐｌｉｅｒ）１２０によって掛けられる。仮数を掛ける前に、暗黙の先行する１は２つの浮動小数点数の仮数の左側に付与されて、２つの浮動小数点数のそれぞれの仮数に対応する拡張された仮数を生成する。
【００２２】
拡張された仮数の積、及び指数の合計は、その後、正規化回路１３０により正規化されて、２つの浮動小数点数の積の仮数及び指数を生成する。拡張された仮数の積が０（ゼロ）ではない場合、正規化は、（ｉ）拡張された仮数の２ｎビットの符号無し整数（ｎは、拡張された仮数のそれぞれのビット幅）として、積を生成するステップと、拡張された仮数の積から先行する０（ゼロ）を切り捨てるステップと、切り捨てた後に残っているビットの個数が、ｎとなるように拡張された仮数の積から最下位ビットの桁数を切り捨てるステップと、先行する１を除去して（２つの浮動小数点被演算子の）浮動小数点積の仮数を生成するステップと、を含む。浮動小数点積の仮数は、２つの浮動小数点被演算子の仮数の「正規化された積」（又は、同等に、２つの浮動小数点演算子の拡張された仮数の「正規化された積」）と称する。以後、指数は必要であれば、拡張された仮数の積から任意の先行する０（ゼロ）の切り捨てを補償するように、「左側にシフトされた数」を減算することにより、調節される。左側にシフトされた数は、拡張された仮数の積において先行する０の個数と等しい。このような先行する０（ゼロ）の数（又は、「先行する０（ゼロ）カウント」）は、それぞれの場合において１又は０（ゼロ）のうちのいずれかひとつである。拡張された仮数の積が０（ゼロ）である場合、正規化は、浮動小数点積の仮数を０（ゼロ）に設定するステップと、被演算子の指数の合計と同じになるように浮動小数点積の指数を設定するステップと、を含む。
【００２３】
２つの浮動小数点被演算子の浮動小数点積の仮数を生成するための、２つの浮動小数点被演算子の仮数の処理は、ルックアップテーブルにより遂行される。
【００２４】
図２は、本発明の一実施形態によるルックアップテーブルを示す図である。図２は、第１被演算子Ａの値に対応する行及び第２被演算子Ｂの値に対応する列におけるセルで、積Ａ×Ｂを含むルックアップテーブル２１０を示す。例えば、２２３＝８，３８８，６０８個の可能な値を有する２３ビット仮数部の浮動小数点表現のために、８，３８８，６０８×８，３８８，６０８ルックアップテーブルが使用され、それぞれの行は、第１浮動小数点被演算子の仮数の８，３８８，６０８個の可能な値の中の一つに対応し、それぞれの列は、第２浮動小数点被演算子の仮数の８，３８８，６０８個の可能な値の中の一つに対応する。このようなテーブルは、それぞれのセルに、（ｉ）セルのある行に対応する仮数の値と、（ｉｉ）セルのある列に対応する仮数の値との、正規化された積を格納することにより生成される。
【００２５】
動作（ｏｐｅｒａｔｉｏｎ）において、２つの浮動小数点被演算子の積の仮数は、「検索（ｌｏｏｋｅｄ  ｕｐ、ルックアップ）」され、即ち、（ｉ）第１浮動小数点数の仮数、及び（ｉｉ）第２浮動小数点数の仮数からアドレスを生成することにより、テーブルから読み出され、アドレスは、２つの浮動小数点被演算子の積の仮数を含むセルのアドレスである。例えば、テーブルは、メモリーを有する処理回路のメモリーに（又は、等価的に、処理回路に連結されたメモリーに）１次元アレイとして格納され、テーブルの１番目の８，３８８，６０８個の成分（ｅｌｅｍｅｎｔ）は、テーブルの１番目の行であり、テーブルの次の８，３８８，６０８個の成分は、テーブルの２番目の行である、等々となる。テーブルに格納されるそれぞれの仮数が、１つのアドレスを占有する（例えば、メモリーが３２ビット幅を有し、仮数は２３ビット幅を有し、残りの９ビットが使用されないか、又は他の目的に使用される）場合、アドレスは、（２つの仮数のうちのいずれかひとつの２倍のビットを有する符号無し整数である）アドレスを生成するように、第１浮動小数点数の仮数のビットと第２浮動小数点数の仮数のビットとを連結させることにより、簡単に生成される。
【００２６】
また、このようなアプローチは、異なる長さの仮数を有する異なる浮動小数点表現において、浮動小数点数を掛けるために使用される。この場合、テーブルは、正方形の代わりに長方形である。例えば、第１浮動小数点数が、２３ビットの仮数を有する単精度（ｓｉｎｇｌｅ−ｐｒｅｃｉｓｉｏｎ）（３２ビット）浮動小数点数であり、第２浮動小数点数が、５２ビットの仮数を有する倍精度（ｄｏｕｂｌｅ−ｐｒｅｃｉｓｉｏｎ）（６４ビット）浮動小数点数である場合、テーブルは８，３８８，６０８個の行と２５２個の列を有する。
【００２７】
一実施形態において、テーブルのサイズは、（乗算の交換法則を利用する）それぞれの検索のために、例えば、より大きなもの（即ち、アドレスの上位ビット）を１番目に、そしてより小さなものを（即ち、アドレスの下位ビット）２番目に、それぞれの値により順次に２つの仮数を連結させることにより、大略２倍ほど減る。この場合、ルックアップテーブルの一部（ルックアップテーブルが２次元データ構造として正方形で描かれる場合、ルックアップテーブルの三角形の領域に対応する）は使用されず、他の使用のために利用可能である。又は、適合したメモリー回路が使用されると、メモリーのこれらの部分は、実装されない（即ち、それらが存在しない）。他の実施形態において、テーブルは同一ではない（例えば、単調増加するか、又は単調減少する）長さの行の集合として格納され、所望の仮数に対応するセルのアドレスは、これによって計算される。
【００２８】
図３は、本発明の一実施形態による浮動小数点乗算の他の例を示すブロック図である。
【００２９】
図３を参照すると、半精度（ｈａｌｆ−ｐｒｅｃｉｓｉｏｎ）（１６ビット）（１０ビットの仮数を有する）浮動小数点表現が被演算子の全てに使用されると、ルックアップテーブルのサイズは、それぞれのセルが１０ビットの仮数を格納する１０２４×１０２４である。
【００３０】
一実施形態において、性能の向上は、例えば、２つの浮動小数点被演算子のうちのいずれかひとつが０（ゼロ）である時、２つの浮動小数点被演算子の任意のペアをバイパスユニット（ｂｙｐａｓｓ  ｕｎｉｔ）にシャント（ｓｈｕｎｔ）するように、いずれかひとつの被演算子が０（ゼロ）である乗算を遂行しないことによって達成される。
【００３１】
他の実施形態において、性能の向上は、近似値を使用することにより達成される。これは、例えば、第１浮動小数点被演算子の仮数及び第２浮動小数点被演算子の仮数の長さを減らし（ｔｒｕｎｃａｔｅ）、減った仮数からアドレスを生成することによって達成される。このようなアドレスは、対応するより小さなテーブルでセルを識別する。それぞれの仮数の減らしは、仮数の一部のみを使用することを含み、この仮数の一部は、仮数のビットの適切な部分集合からなり、この部分集合は、仮数の最上位ビットを含む隣接部分集合（ｃｏｎｔｉｇｕｏｕｓ  ｓｕｂｓｅｔ）である。
【００３２】
一実施形態において、２つの浮動小数点被演算子の仮数の積を決定するためだけに、ルックアップテーブルを使用する代わりに、ルックアップテーブルは、２つの浮動小数点被演算子の浮動小数点積を検索するのに使用される。例えば、半精度（１６ｂｉｔ）浮動小数点表現が被演算子の全てに使用されると、２１６×２１６（即ち、６５，５３６×６５，５３６）のルックアップテーブルが使用され、このようなルックアップテーブルのそれぞれのセルは、（ｉ）セルが存在する行に対応する浮動小数点数、及び（ｉｉ）セルが存在する列に対応する浮動小数点数の１６ビットの積を含む。
【００３３】
ここで、使用される浮動小数点数の「因数（ｆａｃｔｏｒ）」は、（ｉ）浮動小数点数の仮数部、又は（ｉｉ）全体の浮動小数点数のうちのいずれかひとつを意味し、第１浮動小数点数の因数と第２浮動小数点数の因数との積が、ルックアップテーブルで検索される実施形態は、（ｉ）２つの浮動小数点被演算子の積が、ルックアップテーブルで２つの浮動小数点被演算子の仮数部の積を検索することにより計算される実施形態、又は（ｉｉ）２つの浮動小数点被演算子の積が、ルックアップテーブルから２つの浮動小数点被演算子の積を検索することにより計算される実施形態のうちのいずれかひとつである。
【００３４】
２つの浮動小数点被演算子の積が、ルックアップテーブルで２つの浮動小数点被演算子の仮数部の積を検索することにより計算される実施形態において、左シフト数はルックアップテーブル、例えば、仮数部の積を検索するのに使用されるものと並列であるルックアップテーブルか、又は（それぞれのセルが仮数部の積の幅よりも大きなビット幅を有し、１つ以上の超過ビットが左シフト数を格納するのに使用される）同一のルックアップテーブルを使用して、獲得される。他の実施形態において、左シフト数は、適合したロジック回路、例えば、ｎが第１浮動小数点数及び第２浮動小数点数のそれぞれの仮数部の長さである場合、２ｎ個の入力と左シフト数を出力するための１つ以上の出力とを有する回路によって計算される。
【００３５】
一実施形態において、内積又は行列コンボリューションのような他の動作が、ルックアップテーブルを使用して遂行される。例えば、２つの２×１ベクトルの内積は、それぞれのベクトルのそれぞれの成分がクォーター精度（ｑｕａｒｔｅｒ−ｐｒｅｃｉｓｉｏｎ）（８ビット）の浮動小数点表現で示されると、２３２（約４０億）個のセル（２１６個の行及び２１６個の列）を有するルックアップテーブルから単一の検索を使用して計算（コンピューティング）される。このような実施形態において、４個の成分（２つの２成分ベクトルのそれぞれからの２つの成分）は、内積を含むルックアップテーブルセルの３２ビットアドレスを生成するように連結される。ここで使用されるように、「行列」という用語はベクトルを含む（即ち、ベクトルは１×ｎ又はｎ×１行列と見なされる）。
【００３６】
図４は、本発明の一実施形態によるスケーラブルアクセラレーターアーキテクチャ（ｓｃａｌａｂｌｅ  ａｃｃｅｌｅｒａｔｏｒ  ａｒｃｈｉｔｅｃｔｕｒｅ）を示す図である。
【００３７】
図４を参照すると、本発明の一実施形態において、本発明のシステムを適用したアクセラレーターは、カード上に具現される。カードの構成要素は、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）又はＤＲＡＭ（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）インターフェースに基づくアクセラレーターカード、ＤＭＡ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）エンジン、流れの制御を有するインターフェースコントローラー、及び電力コントローラーを含む。
【００３８】
ＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）４０５は、フロントエンドホスト（ｆｒｏｎｔ−ｅｎｄ  ｈｏｓｔ）で作動し、例えば、ＧＰＵ（ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、又は（他のカードにある）ＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）との異機種結合（ｈｅｔｅｒｏｇｅｎｅｏｕｓ  ｉｎｔｅｇｒａｔｉｏｎ）を提供する。システムスケーリング（Ｓｙｓｔｅｍ  ｓｃａｌｉｎｇ）は、図４に示すように、ＣＰＵ４０５（又はＧＰＵ、ＦＰＧＡ、又はＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ））の背後で、多数のメモリースタック（ｍｅｍｏｒｙ  ｓｔａｃｋ）４１０とともに達成される。中央スケジューラ（ｃｅｎｔｒａｌ  ｓｃｈｅｄｕｌｅｒ）は、多数のメモリースタック４１０の間に作業を分配し、結果を収集し、最終結果を計算（コンピューティング）する。
【００３９】
それぞれのメモリースタック４１０は、フロントエンドコントローラー（ｆｒｏｎｔ−ｅｎｄ  ｃｏｎｔｒｏｌｌｅｒ）４１５、ロジックチップ４２０（例えば、ＨＢＭ（ｈｉｇｈ−ｂａｎｄｗｉｄｔｈ  ｍｅｍｏｒｙ）ロジックダイ（ｌｏｇｉｃ  ｄｉｅ））を含む３次元メモリーアセンブリー（ｍｅｍｏｒｙ  ａｓｓｅｍｂｌｙ）、及びメモリーチップのスタック４２５を含む。累積及び他の機能が、ＣＰＵ４０５との共同作業で、ロジックチップ上に実装される。ロジックチップ４２０は、コントローラー命令語をデコーディング（ｄｅｃｏｄｉｎｇ）し、内部のマイクロ動作を発して検索（ルックアップ）に基づく計算を開始する。キャッシュメモリー及びキャッシュコントローラーは、サブシステムとして（又は、ロジックチップ４２０上で）、例えば、ロジックダイ上のＳＲＡＭ（ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）に実装される。キャッシュメモリーは、ＳＲＡＭ又はエンベデッド（ｅｍｂｅｄｄｅｄ）ＤＲＡＭである。
【００４０】
メモリーインターフェースは、決定論的タイミング仕様を有する１ステップのプロトコルの同期的ＨＢＭインターフェースである。これは、同期又は（ロジックチップ４２０とメモリーチップのスタック４２５との間の）２ステップのトランザクション（ｔｒａｎｓａｃｔｉｏｎ）インターフェースのうちの何れかひとつを使用する。他の実施形態において、メモリーインターフェースは、新たなトランザクションピンのための物理階層（ＰＨＹ）修正をともなうトランザクション命令語を使用するために、２ステップのプロトコルとは非同期的である。
【００４１】
ライブラリ（ｌｉｂｒａｒｙ）ＡＰＩ（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）は、ホストプロセッサー（例えば、ＣＰＵ４０５）により認識される命令語集合を使用して修正されるアプリケーションフレームワーク（ａｐｐｌｉｃａｔｉｏｎ  ｆｒａｍｅｗｏｒｋｓ）を含む。このＡＰＩは、ＣＰＵ４０５がアクセラレーターカード又はカードを使用可能にするために利用される。ＡＰＩの機能の実行は、命令語集合アーキテクチャー（ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ａｒｃｈｉｔｅｃｔｕｒｅ、ＩＳＡ）を利用するロジックチップ４２０でスケジューリングされる。
【００４２】
制御順序（ｃｏｎｔｒｏｌ  ｆｌｏｗ）は、以下のように進行される。プログラムは、遂行される計算の特定の特性（ｎａｔｕｒｅ）として登録する。以後、プログラムは特定されたアドレス範囲において既にコンピューティング（計算）されたテーブルをローディングする。この順序は、実行時間（ｒｕｎ  ｔｉｍｅ）中に、被演算子に基づく検索を可能にし、例外処理もルックアップテーブルに含まれる。浮動小数点の例外は、例えば、無効動作、０（ゼロ）で割ること、アンダーフロー（ｕｎｄｅｒｆｌｏｗ）、オーバーフロー（ｏｖｅｒｆｌｏｗ）、及び不正確（ｉｎｅｘａｃｔ）を含む。ルックアップテーブルは、テーブルそのものをプログラムする中で、例外が処理されるようにする。特に、ソフトウェア制御アルゴリズムは、プログラムされる時に、ルックアップテーブルに追加される（ｐｏｐｕｌａｔｅｄ）このような不正確な値を追加することを防止する。ルックアップテーブルは、多くの費用がかかる結果をコンピューティングするのに使用される。メモリースタック４１０のロジックチップ４２０は、異なるそれぞれの動作を加速するようにプログラムされる。例えば、図４のシステムにおいて、（図示された２つのロジックチップ４２０のうちの）第１のロジックチップ４２０は、浮動小数点乗算を遂行するようにプログラムされる（そして、適合したルックアップテーブルが、第１のロジックチップ４２０に関連するメモリーチップのスタック４２５に格納される）。そして、（図示された２つのロジックチップ４２０のうちの）第２のロジックチップ４２０は、内積を計算するようにプログラムされる（そして、適合したルックアップテーブルが、第２のロジックチップ４２０に関連するメモリーチップのスタック４２５に格納される）。アプリケーションフレームワークは、以後、上述のアクセラレーターにより生成される結果を直接利用する。
【００４３】
本明細書で使用される、ビットのシーケンスによって表現される数の「一部」（例えば、浮動小数点数、又は浮動小数点数の仮数部、又は整数）は、ビットの全体シーケンス、又はビットのシーケンスの適切な隣接部分集合のうちのいずれかひとつである。本明細書で使用される２つの浮動小数点被演算子のそれぞれの２つの仮数部の「積」は、（それぞれの２つの被演算子と同一の浮動小数点表現で）２つの被演算子の浮動小数点乗算から生じる浮動小数点数の仮数部である。２つの被演算子が、異なる浮動小数点表現（例えば、同一でない長さを有する浮動小数点表現）であれば、２つの仮数部の「積」は（２つの被演算子の浮動小数点表現のうちの）より短い仮数部を有する浮動小数点の表現で表示される浮動小数点積の仮数である。
【００４４】
被演算子のうちの１つと同じ精度（ｐｒｅｃｉｓｉｏｎ）を有する浮動小数点数で表現される２つの浮動小数点数の積は、正規化が一部０（ゼロ）ではないビットの切り捨てをもたらすので、近似値であることが一般的に理解される。このように、２つの浮動小数点被演算子の「積」は、（ｉ）正確な積（例えば、切り捨てが、０（ゼロ）ビットのみの切り捨てをもたらす場合）、又は（ｉｉ）２つの浮動小数点数の近似積のうちのいずれかひとつである。
【００４５】
「処理回路」という用語は、本明細書でデータ又はデジタル信号を処理するのに使用されるハードウェア、ファームウェア、及びソフトウェアの任意の組み合わせを意味するものとして使用される。処理回路のハードウェアは、例えば、ＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、汎用又は専用ＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、ＤＳＰ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、及びＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）のようなプログラマブルロジックデバイスを含む。ここで使用される処理回路において、それぞれの機能は該当機能を遂行するように構成された、即ち、ハードワイヤード（ｈａｒｄ−ｗｉｒｅｄ）されたハードウェア、又はＣＰＵのように非一時的記憶媒体に格納される命令語を実行するように構成された、より汎用的なハードウェアのうちのいずれかひとつによって遂行される。処理回路は、単一のＰＣＢ（ｐｒｉｎｔｅｄ  ｃｉｒｃｕｉｔ  ｂｏａｒｄ）上に製作されるか、又はいくつかの相互に連結されたＰＣＢ上に分散される。処理回路は、他の処理回路を含み、例えば、処理回路はＰＣＢ上で相互に連結された２つの処理回路、ＦＰＧＡ及びＣＰＵを含む。
【００４６】
「第１」、「第２」、「第３」などの用語が、多様な成分、構成要素、領域、レイヤー、及び／又はセクションを説明するために本明細書で使用されるが、このような成分、構成要素、領域、レイヤー、及び／又はセクションは、これらの用語に制限されない。これらの用語は、単純に１つの成分、構成要素、領域、レイヤー、又はセクションを他の成分、構成要素、領域、レイヤー、又はセクションと区別するのに使用される。従って、本明細書に記載された第１成分、構成要素、領域、レイヤー、又はセクションは、本発明の思想及び技術範囲を逸脱せずに、第２成分、構成要素、領域、レイヤー、又はセクションと称される。
【００４７】
「〜（すぐ）下に」、「より下に」、「より低い」、「〜の下に」、「〜より上に」、「〜より上の」などのように、空間的に相対的な用語は、図面に示すように、１つの成分又は特徴と他の成分又は特徴との関係を説明するように、説明の便宜上、本明細書で使用される。このような空間的に相対的な用語は、図面に示された方向に加えて、使用時又は動作時のデバイスの他の方向を含む。例えば、図面のデバイスが裏返されると、他の成分又は特徴の「〜下に」又は「〜より下に」又は「〜の下に」と説明される成分は、他の成分又は特徴の「〜の上に」に向く。従って、「〜の下に」及び「〜下に」の例示的な用語は、上及び下の方向の全てを含む。デバイスは、別に向けることができ（例えば、９０°又は他の方向に回転）、本明細書で使用される空間的に相対的な記載は、これによって解釈される。加えて、レイヤーが２つのレイヤーの「間に」あると称される時、これは、ただ２つのレイヤーの間にレイヤーがあるか、又は１つ以上の挟まれたレイヤーが存在する。
【００４８】
本明細書で使用される用語は、単純に特定の実施形態を説明する目的のためのものであり、本発明を制限しない。本明細書で使用される「実質的に」、「大略」という用語及び類似の用語は、程度に対する用語ではなく、近似に対する用語として使用されるものであり、当業者によって認識される測定されたり計算されたりした値に内在された偏差を説明するものである。本明細書で使用される、「主要（ｍａｊｏｒ）構成要素」という用語は、構成又は製品の任意の他の単一構成要素の量よりも多い量の構成、重合体、又は製品に存在する構成要素を称する。一方、「基本（ｐｒｉｍａｒｙ）構成要素」という用語は、構成、重合体、又は製品の重さ又は量が、少なくとも５０％をなす構成要素を称する。本明細書で使用される「主要部（分）」という用語は、複数の物品に適用される際、物品の少なくとも折半を意味する。
【００４９】
本明細書で使用される、単数の形式「ａ」及び「ａｎ」は、文脈上で特に明確に示さない限り、複数の形式を含む。「含む（ｃｏｍｐｒｉｓｅ）」及び／又は「含んでいる（ｃｏｍｐｒｉｓｉｎｇ）」という用語は、詳細な説明に使用される際、記述された特徴、整数、ステップ、動作、成分、及び／又は構成要素の存在を具体化するが、１つ以上の他の特徴、整数、ステップ、動作、成分、構成要素、及び／又はこのグループの存在又は追加を除外するものではない。本明細書で使用される「及び／又は」という用語は、１つ以上の関連する、列挙された物品の任意の全ての組み合わせを含む。「少なくとも１つ」のような表現は、成分のリストに先行する際、成分の全体のリストを修正するが、リストの個々の成分を修正しない。さらに、「できる」の使用は、本発明の実施形態を説明する際、「本発明の１つ以上の実施形態」を称する。なお、「例示的な」という用語は、例示又は図示を称する。本明細書で使用される「使用する（ｕｓｅ）」、「使用している（ｕｓｉｎｇ）」、及び「使用される（ｕｓｅｄ）」という用語は、それぞれ「利用する（ｕｔｉｌｉｚｅ）」、「利用している（ｕｔｉｌｉｚｉｎｇ）」、「利用される（ｕｔｉｌｉｚｅｄ）」という用語と同意語として使用される。
【００５０】
成分又はレイヤーが、他の成分又はレイヤー「上に」、「に連結される」、「に結合される」、「に隣接した」と称される時、これは、直接的に他の成分又はレイヤー「上に」、「に連結される」、「に結合される」、「に隣接した」ものであるか、又は１つ以上の挟まれた成分又はレイヤーが存在する。一方、成分又はレイヤーが他の成分又はレイヤー「上に直接」、「に直接連結される」、「に直接結合される」、「に直接隣接した」と称される時、挟まれた成分又はレイヤーは存在しない。
【００５１】
本明細書に列挙された数値範囲は、列挙された範囲内に含まれる同一の数値精度の全てのサブ範囲を含む。例えば、「１．０から１０．０」の範囲は、列挙された最小値１．０と列挙された最大値１０．０との間の（及び含む）全てのサブ範囲を含む。即ち、例えば、２．４から７．７のように、最小値は１．０以上を有し、最大値は１０．０以下を有する。本明細書において列挙される任意の最大数値制限は、その中に含まれる全てのより低い数値制限を含み、列挙される最小数値制限は、その中に含まれる、全てのより高い数値制限を含む。
【００５２】
以上、ルックアップテーブルを利用したコンピューティングアクセラレーターの例示的な実施形態を、図面を参照しながら具体的に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様な修正及び変更が可能であることは当業者には自明である。従って、本発明の思想に従って構成されたルックアップテーブルを使用するコンピューティングアクセラレーターは、本明細書で具体的に説明されたものとは別に実施され得る。
【産業上の利用可能性】
【００５３】
本発明は、ルックアップテーブルによりコンピューティングパワーが必要な高速情報処理システムに有用である。
【符号の説明】
【００５４】
１１０    ＸＯＲ回路
１２０    乗算器
１３０    正規化回路（正規化器）
２１０    ルックアップテーブル
４０５    ＣＰＵ
４１０    メモリースタック
４１５    フロントエンドコントローラー
４２０    ロジックチップ
４２５    スタック
【図１】
2019121398.tif 000003
【図２】
2019121398.tif 000004
【図３】
2019121398.tif 000005
【図４】
2019121398.tif 000006