(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024150395
(43)【公開日】2024-10-23
(54)【発明の名称】多重精度乗累算演算のための集積回路、システム、及び方法
(51)【国際特許分類】
G06F 17/16 20060101AFI20241016BHJP
G06N 3/0495 20230101ALI20241016BHJP
G06N 3/06 20060101ALI20241016BHJP
G06F 7/485 20060101ALI20241016BHJP
G06F 7/487 20060101ALI20241016BHJP
【FI】
G06F17/16 M
G06N3/0495
G06N3/06
G06F7/485
G06F7/487
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024012015
(22)【出願日】2024-01-30
(31)【優先権主張番号】18/298,315
(32)【優先日】2023-04-10
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】520043615
【氏名又は名称】EDGECORTIX株式会社
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】チェルラパリ アヌディープ
(72)【発明者】
【氏名】ネズ ニコライ
(72)【発明者】
【氏名】ネバド ビルチェス アントニオ トーマス
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB37
5B056BB71
5B056BB72
5B056CC01
5B056FF01
5B056FF02
(57)【要約】 (修正有)
【課題】多重精度乗累算演算のための集積回路、システム及び方法を提供する。
【解決手段】集積回路において、多重精度乗累算演算は、整数モードでは、第1データ幅整数値に対して計算を実行して第3データ幅整数値を生成するように動作し、浮動小数点モードでは、第2データ幅浮動小数点値に対して計算を実行して第3データ幅浮動小数点値を生成する乗累算(MAC)ユニットエリアによって実行され、第2データ幅は、第1データ幅の2倍であり、第3データ幅は、第2データ幅よりも大きい。MACユニットエリアは、整数モードで2つの整数値を乗算するか又は浮動小数点モードで2つの浮動小数点値の各々から抽出された仮数値を乗算する第1乗算器と、整数モードにおいて2つの整数値を乗算するか又は浮動小数点モードにおいて第2乗算器を使用することを控える第2乗算器と、有する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
整数モードにおいて、第1データ幅整数値に対して計算を実行して第3データ幅整数値を生成するように動作するように構成されているとともに、浮動小数点モードにおいて、第2データ幅浮動小数点値に対して計算を実行して第3データ幅浮動小数点値を生成するように動作するように構成された乗累算(MAC)ユニット、ここで、前記第2データ幅浮動小数点値の第2データ幅は、前記第1データ幅整数値の第1データ幅の2倍であり、前記第3データ幅整数値及び前記第3データ幅浮動小数点値の第3データ幅は、前記第2データ幅よりも大きく、前記MACユニットは、第1乗算器、指数加算器、比較器、減算器、及びシフタを有し、
前記MACユニットは、前記整数モードにおいて、前記第1乗算器を用いて複数の整数値の中の2つの整数値を乗算して中間整数値を生成することを含む計算を実行するように構成されており、前記複数の整数値の中の各整数値は、前記第1データ幅を有し、
前記MACユニットは、前記浮動小数点モードにおいて、以下:
複数の浮動小数点値の各々から指数値及び仮数値を抽出すること、前記複数の浮動小数点値の中の各浮動小数点値は、前記第2データ幅を有する、
前記第1乗算器を用いて、前記複数の浮動小数点値の中の2つの浮動小数点値の各々から抽出された仮数値を乗算して第1仮数積値を生成すること、
前記指数加算器を用いて、前記複数の浮動小数点値の中の前記2つの浮動小数点値の各々から抽出された指数値を加算して指数総和値を生成すること、
前記比較器を用いて、前記MACユニットから生成された複数の指数総和値の中の最大指数値を決定すること、
前記減算器を用いて、前記最大指数値から前記指数総和値を減算して差分値を生成すること、及び
前記シフタを用いて、前記差分値に基づいて前記第1仮数積値をシフトして中間仮数値を生成すること
を含む計算を実行するように更に構成されている;
前記MACユニット内に含まれる2つ又はそれよりも多くの乗算器に接続された累算加算器、前記累算加算器は、
前記MACユニットの中間仮数値を累算して前記浮動小数点モードにおける累算仮数値を生成すること、及び
前記MACユニットの中間整数値を累算して前記整数モードにおける累算整数値を生成すること
を行うように構成されている;及び
前記累算加算器に接続された正規化累算加算器、前記正規化累算加算器は、
前記累算仮数値を前記最大指数値で正規化して前記浮動小数点モードにおける第3データ幅浮動小数点値を生成すること、及び
前記整数モードにおいて正規化することなく第3データ幅整数値を生成すること
を行うように構成されている、
を備える、集積回路。
【請求項2】
前記MACユニットと通信するメモリを更に備え;
前記整数モードにおける前記計算は、前記メモリから前記複数の整数値を読み出すことを更に含み;
前記浮動小数点モードにおける前記計算は、前記メモリから前記複数の浮動小数点値を読み出すことを更に含む、請求項1に記載の集積回路。
【請求項3】
前記MACユニットと通信するコントローラを更に備え、前記コントローラは、前記整数モードにおいて、第1データ幅整数値に対してニューラルネットワーク推論を実行するように動作するように構成されているとともに、前記浮動小数点モードにおいて、第2データ幅浮動小数点値に対してニューラルネットワーク推論を実行するように動作するように構成されている、請求項1に記載の集積回路。
【請求項4】
前記メモリと通信する整数活性化パイプラインを更に備え、前記整数活性化パイプラインは、前記第3データ幅整数値を活性化して、活性化された第1データ幅整数値を生成するように構成されている、請求項2に記載の集積回路。
【請求項5】
前記メモリと通信する浮動小数点活性化パイプラインを更に備え、前記浮動小数点活性化パイプラインは、前記第3データ幅浮動小数点値を活性化して、活性化された第2データ幅浮動小数点値を生成するように構成されている、請求項2に記載の集積回路。
【請求項6】
前記MACユニットは、第2乗算器を更に有し、
前記MACユニットは、前記整数モードにおいて、前記第2乗算器を用いて前記複数の整数値の中の2つの整数値を乗算して中間整数値を生成するように更に構成されており、
前記MACユニットは、前記浮動小数点モードにおいて前記第2乗算器を使用することを控えるように更に構成されている、請求項1に記載の集積回路。
【請求項7】
前記MACユニットは、前記第1乗算器及び前記第2乗算器のペアの複数のインスタンスを含み、前記複数のインスタンスの中の各第1乗算器は、前記指数加算器のインスタンス、前記比較器のインスタンス、前記減算器のインスタンス、及び前記シフタのインスタンスとグループ化され、
前記MACユニットは、各第1乗算器について前記浮動小数点モードにおいて前記計算を実行するように更に構成されている、請求項6に記載の集積回路。
【請求項8】
シストリックアレイであって、
前記MACユニットの複数のインスタンス、ここで、前記MACユニットの各インスタンスは、前記浮動小数点モードにおいて、前記比較器を用いて、前記シストリックアレイの前記MACユニットの前記複数のインスタンスから生成された前記複数の指数総和値の中の前記最大指数値を決定することを実行するように更に構成されている、及び
複数の累算加算器、各累算加算器は、MACユニットの前記複数のインスタンス内に含まれる乗算器及び先行する累算加算器の任意の組み合わせのうちの2つ又はそれよりも多くに接続される、
を有する、シストリックアレイを更に備え、
前記複数の累算加算器は、
前記MACユニットの前記複数のインスタンスの前記中間仮数値を累算して前記浮動小数点モードにおける前記累算仮数値を生成すること、及び
前記MACユニットの前記複数のインスタンスの前記中間整数値を累算して前記整数モードにおける前記累算整数値を生成すること
を行うように集合的に構成されており、
前記複数の累算加算器は、前記正規化累算加算器を含む、請求項1から7のいずれか一項に記載の集積回路。
【請求項9】
整数モードにおいて、第1データ幅整数値に対して計算を実行して第3データ幅整数値を生成するように動作するように構成されているとともに、浮動小数点モードにおいて、第2データ幅浮動小数点値に対して計算を実行して第3データ幅浮動小数点値を生成するように動作するように構成された乗累算(MAC)ユニット、ここで、前記第2データ幅浮動小数点値の第2データ幅は、前記第1データ幅整数値の第1データ幅の2倍であり、前記第3データ幅整数値及び前記第3データ幅浮動小数点値の第3データ幅は、前記第2データ幅よりも大きく、前記MACユニットは、
複数の第2データ幅浮動小数点値の各々から指数値及び仮数値を抽出するように構成された抽出器、前記抽出器は、複数の第1データ幅整数値の中の少なくとも2つの第1データ幅整数値を通過させるように更に構成されている、
前記抽出器に接続された第1乗算器、前記第1乗算器は、複数の浮動小数点値の中の2つの浮動小数点値の各々から抽出された仮数値を乗算して第1仮数積値を生成するように構成されており、前記第1乗算器は、前記複数の第1データ幅整数値の中の前記少なくとも2つの第1データ幅整数値のうちの2つを乗算して第1整数積値を生成するように更に構成されている、
前記抽出器に接続された指数加算器、前記指数加算器は、前記複数の浮動小数点値の中の前記2つの浮動小数点値の各々から抽出された指数値を加算して指数総和値を生成するように構成されている、
前記指数加算器に接続された比較器、前記比較器は、前記MACユニットから生成された複数の指数総和値の中の最大指数値を決定するように構成されている、
前記指数加算器及び前記比較器に接続された減算器、前記減算器は、前記最大指数値から前記指数総和値を減算して差分値を生成するように構成されている、及び
前記減算器及び前記第1乗算器に接続されたシフタ、前記シフタは、前記差分値に基づいて前記第1仮数積値をシフトして中間仮数値を生成するように構成されており、前記シフタは、前記第1整数積値を中間整数値として通過させるように更に構成されている
を有する;
前記MACユニットの中間仮数値を累算して累算仮数値を生成するように構成された累算加算器、前記累算加算器は、前記MACユニットの中間整数値を累算して累算整数値を生成するように更に構成されている;及び
前記累算加算器に接続された正規化累算加算器、前記正規化累算加算器は、前記累算仮数値を前記最大指数値で正規化して第3データ幅浮動小数点値を生成するように構成されており、前記正規化累算加算器は、正規化することなく第3データ幅整数値を生成するように更に構成されている、
を備える、集積回路。
【請求項10】
前記MACユニットと通信するメモリを更に備え;
前記MACユニットは、前記メモリから前記複数の第2データ幅浮動小数点値を読み出すように構成されており、前記MACユニットは、前記メモリから前記複数の第1データ幅整数値を読み出すように更に構成されている、請求項9に記載の集積回路。
【請求項11】
前記MACユニットと通信するコントローラを更に備え、前記コントローラは、前記整数モードにおいて、第1データ幅整数値に対してニューラルネットワーク推論を実行するように動作するように構成されているとともに、前記浮動小数点モードにおいて、第2データ幅浮動小数点値に対してニューラルネットワーク推論を実行するように動作するように構成されている、請求項9に記載の集積回路。
【請求項12】
前記メモリと通信する整数活性化パイプラインを更に備え、前記整数活性化パイプラインは、第3データ幅整数値に対して活性化を実行して、第1データ幅整数値を生成するように構成されている、請求項10に記載の集積回路。
【請求項13】
前記メモリと通信する浮動小数点活性化パイプラインを更に備え、前記浮動小数点活性化パイプラインは、第3データ幅浮動小数点値に対して活性化を実行して、第2データ幅浮動小数点値を生成するように構成されている、請求項10に記載の集積回路。
【請求項14】
前記MACユニットは、第2乗算器を更に有し、前記第2乗算器は、前記複数の第1データ幅整数値の中の2つの第1データ幅整数値を乗算して第2整数積値を生成するように構成されている、請求項9から13のいずれか一項に記載の集積回路。
【請求項15】
シストリックアレイであって、
前記MACユニットの複数のインスタンス、ここで、前記MACユニットの各インスタンスの前記比較器は、前記シストリックアレイの前記MACユニットの前記複数のインスタンスから生成された前記複数の指数総和値の中の前記最大指数値を決定するように構成されている、及び
複数の累算加算器、各累算加算器は、前記MACユニットの前記複数のインスタンス内に含まれる乗算器及び先行する累算加算器の任意の組み合わせのうちの2つ又はそれよりも多くに接続され、前記複数の累算加算器は、前記MACユニットの前記複数のインスタンスの前記中間仮数値を累算して前記累算仮数値を生成するように集合的に構成されており、前記複数の累算加算器は、前記MACユニットの前記複数のインスタンスの前記中間整数値を累算して前記累算整数値を生成するように集合的に更に構成されている、
を有する、シストリックアレイを更に備え、
前記複数の累算加算器は、前記正規化累算加算器を含む、請求項9から13のいずれか一項に記載の集積回路。
【請求項16】
整数モードにおいて、第1データ幅整数値に対して計算を実行して第3データ幅整数値を生成するように動作するように構成されているとともに、浮動小数点モードにおいて、第2データ幅浮動小数点値に対して計算を実行して第3データ幅浮動小数点値を生成するように動作するように構成された複数の乗算器グループ、ここで、前記第2データ幅浮動小数点値の第2データ幅は、前記第1データ幅整数値の第1データ幅の2倍であり、前記第3データ幅整数値及び前記第3データ幅浮動小数点値の第3データ幅は、前記第2データ幅よりも大きく、各乗算器グループは、
複数の第2データ幅浮動小数点値の各々から指数値及び仮数値を抽出するように構成された抽出器、前記抽出器は、複数の第1データ幅整数値の中の少なくとも2つの第1デAータ幅整数値を通過させるように更に構成されている、
前記抽出器に接続されたグループ乗算器、前記グループ乗算器は、複数の浮動小数点値の中の2つの浮動小数点値の各々から抽出された仮数値を乗算して第1仮数積値を生成するように構成されており、前記グループ乗算器は、前記複数の第1データ幅整数値の中の前記少なくとも2つの第1データ幅整数値のうちの2つを乗算して第1整数積値を生成するように更に構成されている、
前記抽出器に接続された指数加算器、前記指数加算器は、前記複数の浮動小数点値の中の前記2つの浮動小数点値の各々から抽出された指数値を加算して指数総和値を生成するように構成されている、
前記指数加算器に接続された比較器、前記比較器は、前記複数の乗算器グループから生成された複数の指数総和値の中の最大指数値を決定するように構成されている、
前記指数加算器及び前記比較器に接続された減算器、前記減算器は、前記最大指数値から前記指数総和値を減算して差分値を生成するように構成されている、及び
前記減算器及び前記グループ乗算器に接続されたシフタ、前記シフタは、前記差分値に基づいて前記第1仮数積値をシフトして中間仮数値を生成するように構成されており、前記シフタは、前記第1整数積値を中間整数値として通過させるように更に構成されている、
を有する;
複数の専用乗算器、各専用乗算器は、前記複数の第1データ幅整数値の中の2つの第1データ幅整数値を乗算して第2整数積値を生成するように構成されている;
前記複数の乗算器グループの中の共有乗算器及び前記複数の専用乗算器の中の専用乗算器に接続された累算加算器、前記累算加算器は、前記複数の乗算器グループの前記中間仮数値を累算して累算仮数値を生成するように構成されており、前記累算加算器は、前記複数の乗算器グループ及び前記複数の専用乗算器の前記中間整数値を累算して累算整数値を生成するように更に構成されている;及び
前記累算仮数値を前記最大指数値で正規化して第3データ幅浮動小数点値を生成するように構成された正規化累算加算器、前記正規化累算加算器は、正規化することなく第3データ幅整数値を生成するように更に構成されている、
を備える、集積回路。
【請求項17】
前記複数の乗算器グループの中の各乗算器グループ及び前記複数の専用乗算器の中の各専用乗算器と通信するメモリを更に備え;
各乗算器グループは、前記メモリから前記複数の第2データ幅浮動小数点値を読み出すように構成されており、各乗算器グループは、前記メモリから前記複数の第1データ幅整数値を読み出すように更に構成されている、請求項16に記載の集積回路。
【請求項18】
前記複数の乗算器グループと通信するコントローラを更に備え、前記コントローラは、前記整数モードにおいて、第1データ幅整数値に対してニューラルネットワーク推論を実行するように動作するように構成されているとともに、前記浮動小数点モードにおいて、第2データ幅浮動小数点値に対してニューラルネットワーク推論を実行するように動作するように構成されている、請求項16に記載の集積回路。
【請求項19】
前記メモリと通信する浮動小数点活性化パイプラインを更に備え、前記浮動小数点活性化パイプラインは、第3データ幅浮動小数点値に対して活性化を実行して第2データ幅浮動小数点値を生成するように構成されている、請求項17に記載の集積回路。
【請求項20】
シストリックアレイであって、
前記複数の乗算器グループ、
前記複数の専用乗算器、及び
複数の累算加算器、各累算加算器は、前記複数の乗算器グループの中の共有乗算器、前記複数の専用乗算器の中の専用乗算器、及び先行する累算加算器の任意の組み合わせのうちの2つ又はそれよりも多くに接続され、前記複数の累算加算器は、前記複数の乗算器グループの前記中間仮数値を累算して前記累算仮数値を生成するように集合的に構成されており、前記複数の累算加算器は、前記複数の乗算器グループ及び前記複数の専用乗算器の前記中間整数値を累算して前記累算整数値を生成するように集合的に更に構成されている、
を有する、シストリックアレイを更に備え、
前記複数の累算加算器は、前記正規化累算加算器を含む、請求項16から19のいずれか一項に記載の集積回路。
【発明の詳細な説明】
【背景技術】
【0001】
多くのニューラルネットワークアクセラレータが、INT8等の整数フォーマットを使用してニューラルネットワーク推論を実行するように構成されている。多くのニューラルネットワークモデルが、FP32及びBF16等の浮動小数点フォーマットのために設計されている。整数フォーマットのために構成されたアクセラレータを使用して浮動小数点フォーマットのために設計されたニューラルネットワークモデルの推論を実行するために、浮動小数点値は、整数値に量子化される。
【図面の簡単な説明】
【0002】
添付の図とともに読まれると、本開示の態様が以下の詳細な説明から最も良好に理解される。産業における標準的な慣行に従って、様々な特徴は縮尺どおりに描かれていないことに留意されたい。実際には、様々な特徴の寸法は、論述の明確さのために、任意に増加又は減少し得る。
【0003】
【
図1】本発明の少なくとも1つの実施形態に係る多重精度乗累算演算のためのシステムの図である。
【0004】
【
図2】本発明の少なくとも1つの実施形態に係る多重精度乗累算演算のための集積回路の一部分の図である。
【0005】
【
図3】本発明の少なくとも1つの実施形態に係る多重精度乗累算演算のための乗累算(MAC)ユニットの図である。
【0006】
【
図4】本発明の少なくとも1つの実施形態に係る、浮動小数点モードにおいて乗累算演算を実行するMACユニットの概略図である。
【0007】
【
図5】本発明の少なくとも1つの実施形態に係る、整数モードにおいて乗累算演算を実行するMACユニットの概略図である。
【0008】
【
図6】本発明の少なくとも1つの実施形態に係る、多重精度乗累算演算及び活性化のための動作フローの図である。
【0009】
【
図7】本発明の少なくとも1つの実施形態に係る、乗累算計算を実行する動作フローの図である。
【0010】
【
図8】本発明の少なくとも1つの実施形態に係る、浮動小数点値の乗累算計算のための指数を計算する動作フローの図である。
【発明を実施するための形態】
【0011】
以下の開示は、提供される主題の異なる特徴を実装するために多くの異なる実施形態又は例を提供する。コンポーネント、値、動作、材料、配置等の具体的な例が、本開示を簡略化にするために以下で説明される。当然ながら、これらは単なる例であり、限定を意図するものではない。他のコンポーネント、値、動作、材料、配置等が企図される。加えて、本開示は、様々な例において参照番号及び/又は文字を繰り返し得る。この繰り返しは、簡潔性及び明確さを目的としており、それ自体が、論述される様々な実施形態及び/又は構成の間の関係を規定するものではない。
【0012】
ネイティブFP32フォーマットの代わりにINT8フォーマットを使用するための量子化等の、幾つかのニューラルネットワークの量子化は、ニューラルネットワークの推論を実行するときに正確性及び他の重要なパラメータの大幅な損失をもたらす。
【0013】
浮動小数点フォーマットを使用してニューラルネットワーク推論を実行することは、整数フォーマットを使用することに優る改善された正確性を有する。多くのニューラルネットワークモデルは浮動小数点フォーマットのために設計されているので、浮動小数点フォーマットを使用してニューラルネットワーク推論を実行することは、そのようなニューラルネットワークモデルを整数フォーマットに量子化するための計算リソース使用量を削減する。
【0014】
本明細書において説明される集積回路の少なくとも幾つかの実施形態は、整数フォーマットとともに浮動小数点フォーマットをサポートする。少なくとも幾つかの実施形態では、本明細書において説明される集積回路は、Brain-Float16(BF16)フォーマットをサポートし、これは、FP32の帯域幅の半分しか要求しないが、FP32の完全な値範囲をカバーし、これは、FP32と同様の正確性を可能にする。BF16のデータ幅は、INT8のビット幅の2倍である。しかしながら、BF16の仮数(mantissa)、又は仮数部(significand)は、8ビットであり、これは、INT8のビット幅に一致する。これは、BF16の全ての1つの入力について、INT8の2つの入力が存在することを意味し、テラ演算毎秒(terra-operations-per-second:TOPS)の量は、BF16からINT8までで2倍だけスケーリングすることになる。
【0015】
図1は、本発明の少なくとも1つの実施形態に係る多重精度乗累算演算のためのシステムである。システムは、集積回路100及びホストコンピュータ102を備える。
【0016】
集積回路100は、MACユニットエリア110、整数活性化パイプライン112、浮動小数点活性化パイプライン114、メモリ116、及びコントローラ118を備える。少なくとも幾つかの実施形態では、集積回路100は、専用回路を含む特定用途向け集積回路(ASIC)である。少なくとも幾つかの実施形態では、集積回路は、フィールドプログラマブルゲートアレイ(FPGA)である。
【0017】
MACユニットエリア110は、メモリ116及びコントローラ118と通信する。少なくとも幾つかの実施形態では、MACユニットエリア110は、ドット積関数を実行する。少なくとも幾つかの実施形態では、MACユニットエリア110は、複数の乗算器及び加算器を備える。少なくとも幾つかの実施形態では、MACユニットエリア110は、複数のMACユニット及び複数の累算加算器を備える。少なくとも幾つかの実施形態では、MACユニットエリア110は、複数の乗算器グループ、専用乗算器、及び累算加算器を備える。少なくとも幾つかの実施形態では、MACユニットエリア110は、整数モードにおいて、第1データ幅整数値に対して計算を実行して第3データ幅整数値を生成するように動作するように構成されているとともに、浮動小数点モードにおいて、第2データ幅浮動小数点値に対して計算を実行して第3データ幅浮動小数点値を生成するように動作するように構成されており、第2データ幅は、第1データ幅の2倍であり、第3データ幅は、第2データ幅よりも大きい。少なくとも幾つかの実施形態では、MACユニットエリアは、
図2のシストリックアレイ211等のシストリックアレイであり、これは、以降で説明される。少なくとも幾つかの実施形態では、MACユニットエリアは、
図3のMACユニット320及び
図2の正規化加算器232等の単一のMACユニット及び正規化加算器であり、これは、以降で説明される。
【0018】
整数活性化パイプライン112は、メモリ116及びコントローラ118と通信する。少なくとも幾つかの実施形態では、整数活性化パイプライン112は、シストリックアレイの出力ドット積に対して更なる演算を実行するように構成されている。少なくとも幾つかの実施形態では、整数活性化パイプライン112は、第3データ幅整数値を活性化して、活性化された第1データ幅整数値を生成するように構成されている。少なくとも幾つかの実施形態では、整数活性化パイプライン112は、活性化関数に加えて、バイアス加算、残差加算、残差乗算、量子化、再量子化、及び所与のニューラルネットワークの推論のために要求され得る他の演算を実行するように構成されている。少なくとも幾つかの実施形態では、整数活性化パイプライン112は、活性化関数の近似のための少なくとも1つのルックアップテーブル(LUT)を備える。少なくとも幾つかの実施形態では、各LUTは、Mの深さを有し、LUTストアにおける各ロケーションは、第2データ幅浮動小数点値である。
【0019】
浮動小数点活性化パイプライン114は、メモリ116及びコントローラ118と通信する。少なくとも幾つかの実施形態では、浮動小数点活性化パイプライン114は、第3データ幅浮動小数点値を活性化して、活性化された第2データ幅浮動小数点値を生成するように構成されている。少なくとも幾つかの実施形態では、浮動小数点活性化パイプライン114は、活性化関数に加えて、バイアス加算、残差加算、残差乗算、及び所与のニューラルネットワークの推論のために要求され得る他の演算を実行するように構成されている。少なくとも幾つかの実施形態では、浮動小数点活性化パイプライン114は、第1データ幅整数フォーマット及び第2データ幅浮動小数点フォーマットの間の変換を実行する。少なくとも幾つかの実施形態では、浮動小数点活性化パイプライン114は、活性化関数の近似のための少なくとも1つのルックアップテーブル(LUT)を備える。少なくとも幾つかの実施形態では、各LUTは、Mの深さを有し、LUTストアにおける各ロケーションは、第2データ幅浮動小数点値である。
【0020】
少なくとも幾つかの実施形態では、メモリ116は、値を記憶し、記憶された値を送信するように構成されている。少なくとも幾つかの実施形態では、メモリ116は、ランダムアクセスメモリ(Random Access Memory:RAM)、組み込みシステムブロック(Embedded System Block:ESB)、連想メモリ(Content Addressable Memory:CAM)等のような揮発性データストレージの1つ又は複数のバンク又はブロックを備える。少なくとも幾つかの実施形態では、メモリ116は、集積回路100全体を通して分散している。少なくとも幾つかの実施形態では、メモリ116は、インターコネクト又はデータバス等の1つ又は複数のデータパスを介してMACユニットエリア110の各MACユニットと通信する。少なくとも幾つかの実施形態では、メモリ116は、MACユニットエリア110、整数活性化パイプライン112、及び浮動小数点活性化パイプライン114に対してデータパスを通してデータ値を送信及び受信するように構成されている。
【0021】
コントローラ118は、ホストコンピュータ102、MACユニットエリア110、整数活性化パイプライン112、及び浮動小数点活性化パイプライン114と通信する。少なくとも幾つかの実施形態では、コントローラ118は、ニューラルネットワーク推論を実行する命令を含むプログラム等の、ホストコンピュータ102からのプログラムを受信するように構成された回路を備える。少なくとも幾つかの実施形態では、コントローラ118は、MACユニットエリア110、整数活性化パイプライン112、及び浮動小数点活性化パイプライン114の1つ又は複数のシーケンサにプログラムを送信するように構成された回路を備える。少なくとも幾つかの実施形態では、コントローラ118は、整数モードにおいて、第1データ幅整数値に対してニューラルネットワーク推論を実行するように動作するように構成されているとともに、浮動小数点モードにおいて、第2データ幅浮動小数点値に対してニューラルネットワーク推論を実行するように動作するように構成されている。
【0022】
少なくとも幾つかの実施形態では、ホストコンピュータ102は、パーソナルコンピュータ、サーバ、クラウドコンピューティングリソースの一部分、又は、集積回路100にプログラム命令を送信し、結果データを記憶することが可能である他のものである。少なくとも幾つかの実施形態では、ホストコンピュータ102は、ノートブックコンピュータ、タブレットコンピュータ、スマートフォン、スマートウォッチ、モノのインターネット(Internet of Things:IoT)デバイス等である。ホストコンピュータ102は、制御パス及びデータパスを通して集積回路100と通信する。少なくとも幾つかの実施形態では、ホストコンピュータ102は、プログラム、入力データ、及び結果データを記憶するように構成されたダイナミックランダムアクセスメモリ(Dynamic Random Access Memory:DRAM)等の外部メモリを備える。
【0023】
図2は、本発明の少なくとも1つの実施形態に係る多重精度乗累算演算のための集積回路の一部分の図である。この一部分は、シストリックアレイ211及びメモリ216を備える。
【0024】
シストリックアレイ211は、MACユニット220A、MACユニット220B、MACユニット220C、及びMACユニット220D等の複数の乗累算(MAC)ユニット、及び累算加算器230及び正規化累算加算器232等の複数の累算加算器を備える。
【0025】
メモリ216は、複数のMACユニットの中の各MACユニットと通信する。少なくとも幾つかの実施形態では、各MACユニットは、整数モードにおいて計算を実行するように構成されているとともに、浮動小数点モードにおいて計算を実行するように更に構成されている。少なくとも幾つかの実施形態では、各MACユニットは、メモリ216から第2データ幅浮動小数点値を読み出すように構成されており、各MACユニットは、メモリ216から第1データ幅整数値を読み出すように更に構成されている。少なくとも幾つかの実施形態では、複数のMACユニットの中の各MACユニットは、第1乗算器、指数加算器、比較器、減算器、及びシフタを備える。少なくとも幾つかの実施形態では、各MACユニットは、第2乗算器を更に備える。少なくとも幾つかの実施形態では、各MACユニットは、複数の累算加算器の中の少なくとも1つの累算加算器を更に備える。少なくとも幾つかの実施形態では、各MACユニットは、第1乗算器及び第2乗算器のペアの複数のインスタンスを含み、複数のインスタンスの中の各第1乗算器は、指数加算器のインスタンス、比較器のインスタンス、減算器のインスタンス、及びシフタのインスタンスとグループ化される。
【0026】
メモリ216は、複数の累算加算器の中の少なくとも幾つかの累算加算器と通信する。少なくとも幾つかの実施形態では、各累算加算器は、複数のMACユニット内に含まれる乗算器及び先行する累算加算器の任意の組み合わせのうちの2つ又はそれよりも多くに接続される。例えば、累算加算器230は、MACユニット220A及びMACユニット220Bに接続され、正規化累算加算器232は、MACユニット220C、MACユニット220D、及び、正規化累算加算器232の視点から先行する累算加算器である累算加算器230に接続される。
【0027】
少なくとも幾つかの実施形態では、複数の累算加算器は、複数のMACユニットの中間仮数値を累算して、累算仮数値を生成するように集合的に構成されており、複数の累算加算器は、複数のMACユニットの中間整数値を累算して、累算整数値を生成するように集合的に更に構成されている。例えば、累算加算器230及び正規化累算加算器232は、MACユニット220A、MACユニット220B、MACユニット220C、及びMACユニット220Dの中間仮数値又は中間整数値を累算して、累算仮数値又は累算整数値を生成するように集合的に構成されており、当該累算仮数値又は累算整数値は、メモリ216上に記憶される。少なくとも幾つかの実施形態では、各累算加算器は、浮動小数点加算及び整数加算を実行するように構成されており、ここで、浮動小数点加算は、最大指数に基づいて中間仮数値をシフトすることを含む。少なくとも幾つかの実施形態では、複数の累算加算器は、累算仮数値を最大指数値で正規化して、第3データ幅浮動小数点値を生成するように更に構成された正規化累算加算器を備え、正規化累算加算器は、正規化することなく第3データ幅整数値を生成するように更に構成されている。例えば、正規化累算加算器232は、累算仮数値を指数値で正規化して、第3データ幅浮動小数点値を生成し、その後、メモリ216に第3データ幅浮動小数点値を記憶するか、又は、正規化することなく累算整数値から第3データ幅整数値を生成し、その後、メモリ216に第3データ幅整数値を記憶するように更に構成されている。
【0028】
前述の例では、MACユニット220A、MACユニット220B、MACユニット220C、及びMACユニット220Dが複数のMACユニットであり、累算加算器230及び正規化累算加算器232が複数の累算加算器である。このようにして、シストリックアレイ211は、複数のMACユニット及び複数の累算加算器の複数のインスタンスを有するものとして考えることができ、各インスタンスは、整数モードにおいて、第1データ幅整数値に対して計算を実行して第3データ幅整数値を生成するように動作するように構成されているとともに、浮動小数点モードにおいて、第2データ幅浮動小数点値に対して計算を実行して第3データ幅浮動小数点値を生成するように動作するように構成されている。少なくとも幾つかの実施形態では、複数のMACユニット及び複数の累算加算器の各インスタンスは、MACユニット220A、MACユニット220B、MACユニット220C、MACユニット220D、累算加算器230、及び正規化累算加算器232におけるようなシストリックアレイ211の1列であるか、又は加算器が鉛直に接続されるのか又は水平に接続されるのかに依存するシストリックアレイ211の1列である。
【0029】
図3は、本発明の少なくとも1つの実施形態に係る多重精度乗累算演算のための乗累算(MAC)ユニット320である。MACユニット320は、乗算器グループ321、専用乗算器324A、及び累算加算器330を備える。乗算器グループ321は、抽出器323、グループ乗算器324B、指数加算器326、比較器327、減算器328、及びシフタ329を備える。少なくとも幾つかの実施形態では、メモリは、複数の乗算器グループの中の各乗算器グループ及び複数の乗算器の中の各専用乗算器と通信する。少なくとも幾つかの実施形態では、MACユニット320は、集積回路のシストリックアレイ内に含まれる。少なくとも幾つかの実施形態では、MACユニット320は、任意のシストリックアレイの外部の集積回路内に含まれる。少なくとも幾つかの実施形態では、MACユニットエリア320は、整数モードにおいて、第1データ幅整数値に対して計算を実行して第3データ幅整数値を生成するように動作するように構成されているとともに、浮動小数点モードにおいて、第2データ幅浮動小数点値に対して計算を実行して第3データ幅浮動小数点値を生成するように動作するように構成されており、第2データ幅は、第1データ幅の2倍であり、第3データ幅は、第2データ幅よりも大きい。
【0030】
抽出器323は、指数加算器326及びグループ乗算器324Bに接続される。少なくとも幾つかの実施形態では、抽出器323は、複数の第2データ幅浮動小数点値の各々から指数値及び仮数値を抽出するように構成されており、抽出器323は、複数の第1データ幅整数値の中の少なくとも2つの第1データ幅整数値を通過させるように更に構成されている。少なくとも幾つかの実施形態では、抽出器323は、入力活性化値340から活性化指数値342及び活性化仮数値344を抽出し、入力重み値341から重み指数値343及び重み仮数値345を抽出するように構成されており、ここで、入力活性化値340及び入力重み値341は、第2データ幅浮動小数点値である。少なくとも幾つかの実施形態では、抽出器323は、メモリから入力活性化値340及び入力重み値341を受信するように構成されている。少なくとも幾つかの実施形態では、各乗算器グループは、メモリから複数の第2データ幅浮動小数点値を読み出すように構成されており、各乗算器グループは、メモリから複数の第1データ幅整数値を読み出すように更に構成されている。少なくとも幾つかの実施形態では、抽出器323は、活性化指数値342及び重み指数値343を指数加算器326に送信するように構成されているとともに、活性化仮数値344及び重み仮数値345をグループ乗算器324Bに送信するように構成されている。少なくとも幾つかの実施形態では、抽出器323は、入力活性化値340及び入力重み値341をグループ乗算器324Bに通過させるように構成されており、ここで、入力活性化値340及び入力重み値341は、第1データ幅整数値である。
【0031】
グループ乗算器324Bは、抽出器323及びシフタ329に接続される。少なくとも幾つかの実施形態では、グループ乗算器324Bは、複数の浮動小数点値の中の2つの浮動小数点値の各々から抽出された仮数値を乗算して第1仮数積値を生成するように構成されており、グループ乗算器324Bは、複数の第1データ幅整数値の中の少なくとも2つの第1データ幅整数値のうちの2つを乗算して第1整数積値を生成するように更に構成されている。少なくとも幾つかの実施形態では、グループ乗算器324Bは、活性化仮数値344及び重み仮数値345を乗算して仮数積値346を生成するように構成されており、ここで、入力活性化値340及び入力重み値341は、第2データ幅浮動小数点値である。少なくとも幾つかの実施形態では、グループ乗算器324Bは、入力活性化値340及び入力重み値341を乗算して整数積値を生成するように構成されており、ここで、入力活性化値340及び入力重み値341は、第1データ幅整数値である。少なくとも幾つかの実施形態では、グループ乗算器324Bは、抽出器323から活性化仮数値344及び重み仮数値345を受信するように構成されているとともに、仮数積値346をシフタ329に送信するように構成されている。少なくとも幾つかの実施形態では、グループ乗算器324Bは、抽出器323から入力活性化値340及び入力重み値341を受信するように構成されているとともに、整数積値をシフタ329に送信するように構成されている。
【0032】
指数加算器326は、抽出器323、比較器327、及び減算器328に接続される。少なくとも幾つかの実施形態では、指数加算器326は、複数の浮動小数点値の中の2つの浮動小数点値の各々から抽出された指数値を加算して指数総和値を生成するように構成されている。少なくとも幾つかの実施形態では、指数加算器326は、活性化指数値342及び重み指数値343を加算して指数総和値347を生成するように構成されており、ここで、入力活性化値340及び入力重み値341は、第2データ幅浮動小数点値である。少なくとも幾つかの実施形態では、指数加算器326は、抽出器323から活性化指数値342及び重み指数値343を受信するように構成されているとともに、指数総和値347を比較器327及び減算器328に送信するように構成されている。少なくとも幾つかの実施形態では、指数加算器326は、入力活性化値340及び入力重み値341が第1データ幅整数値である場合、休止状態である。
【0033】
比較器327は、指数加算器326及び減算器328に接続される。少なくとも幾つかの実施形態では、比較器327は、シストリックアレイの複数の乗算器グループから生成された複数の指数総和値の中の最大指数値を決定するように構成されている。少なくとも幾つかの実施形態では、比較器327は、シストリックアレイの複数のMACユニットから生成された複数の指数総和値の中の最大指数値を決定するように構成されている。少なくとも幾つかの実施形態では、比較器327は、シストリックアレイのMACユニット320を含む複数のMACユニットから生成された、指数総和値347を含む複数の指数総和値の中から最大指数値348を決定するように構成されている。少なくとも幾つかの実施形態では、比較器327は、複数の比較器と通信し、各比較器は、シストリックアレイの複数のMACユニットの中の対応するMACユニット内に含まれる。少なくとも幾つかの実施形態では、比較器327は、シストリックアレイの複数のMACユニットの中の各MACユニット内に含まれる指数加算器及び減算器と通信する。少なくとも幾つかの実施形態では、比較器327は、計算の以前の反復の結果得られる第3データ幅浮動小数点値の指数値を含む複数の指数値の中の最大指数値を決定するように構成されている。少なくとも幾つかの実施形態では、比較器327は、指数加算器326から指数総和値347を受信するように構成されているとともに、最大指数値348を減算器328に送信するように構成されている。少なくとも幾つかの実施形態では、比較器327は、最大指数値348を中間指数値354として別の比較器、別のMACユニット、又は累算加算器に送信するように構成されている。少なくとも幾つかの実施形態では、比較器327は、入力活性化値340及び入力重み値341が第1データ幅整数値である場合、休止状態である。
【0034】
減算器328は、指数加算器326、比較器327、及びシフタ329に接続される。少なくとも幾つかの実施形態では、減算器328は、最大指数値から指数総和値を減算して差分を生成するように構成されている。少なくとも幾つかの実施形態では、減算器328は、最大指数値348から指数総和値347を減算して指数差分値349を生成するように構成されている。少なくとも幾つかの実施形態では、減算器328は、指数加算器326から指数総和値347を、及び比較器327から最大指数値348を受信するように構成されているとともに、指数差分値349をシフタ329に送信するように構成されている。少なくとも幾つかの実施形態では、減算器328は、入力活性化値340及び入力重み値341が第1データ幅整数値である場合、休止状態である。
【0035】
シフタ329は、減算器328、グループ乗算器324B、及び累算加算器330に接続される。少なくとも幾つかの実施形態では、シフタ329は、差分に基づいて第1仮数積値をシフトして中間仮数値を生成するように構成されており、シフタ329は、第1整数積値を中間整数値として通過させるように更に構成されている。少なくとも幾つかの実施形態では、シフタ329は、指数差分349に基づいて仮数積値346をシフトしてシフト済み仮数値350を生成するように構成されており、ここで、入力活性化値340及び入力重み値341は、第2データ幅浮動小数点値である。少なくとも幾つかの実施形態では、シフタ329は、第1整数積値を中間整数値として通過させるように構成されており、ここで、入力活性化値340及び入力重み値341は、第1データ幅整数値である。少なくとも幾つかの実施形態では、シフタ329は、グループ乗算器324Bから仮数積値346を、及び減算器328から指数差分値349を受信するように構成されているとともに、シフト済み仮数値350を累算加算器330に送信するように構成されている。少なくとも幾つかの実施形態では、シフタ329は、グループ乗算器324Bから第1整数積値を受信するように構成されているとともに、第1整数積値を累算加算器330に送信するように構成されている。少なくとも幾つかの実施形態では、シフタ329は、正確性の向上のためにより大きいビット幅を有する。少なくとも幾つかの実施形態では、シフタ329は、より小さいビット幅を有し、これは、より長いビット幅と比較して正確性が低下するが、要求されるハードウェアリソースが少なくなる。このようにして、シフタ329のビット幅は、正確性及びハードウェアリソース消費の間のトレードオフを表す。
【0036】
専用乗算器324Aは、累算加算器330に接続される。少なくとも幾つかの実施形態では、専用乗算器324Aは、複数の第1データ幅整数値の中の2つの第1データ幅整数値を乗算して第2整数積値を生成するように構成されている。少なくとも幾つかの実施形態では、専用乗算器324Aは、第2入力活性値及び第2入力重み値を乗算して第2整数積値を生成するように構成されており、ここで、入力活性化値340及び入力重み値341は、第1データ幅整数値である。少なくとも幾つかの実施形態では、専用乗算器324Aは、メモリから第2入力活性値及び第2入力重み値を受信するように構成されている。少なくとも幾つかの実施形態では、専用乗算器324Aは、第2整数積値を累算加算器330に送信するように構成されている。少なくとも幾つかの実施形態では、専用乗算器324Aは、入力活性化値340及び入力重み値341が第2データ幅浮動小数点値である場合、休止状態である。
【0037】
累算加算器330は、シフタ329及び専用乗算器324Aに接続される。少なくとも幾つかの実施形態では、累算加算器330は、第1整数積値を第2整数積値に加算して中間整数値を生成するように構成されている。少なくとも幾つかの実施形態では、累算加算器330は、第1整数積値を第2整数積値に加算して中間整数値を生成するように構成されており、ここで、入力活性化値340及び入力重み値341は、第1データ幅整数値である。少なくとも幾つかの実施形態では、累算加算器330は、シフト済み仮数値350をMACユニット320の別の乗算器グループからの別のシフト済み仮数値に加算して中間仮数値352を生成するように構成されており、ここで、入力活性化値340及び入力重み値341は、第2データ幅浮動小数点値である。少なくとも幾つかの実施形態では、累算加算器330は、シフタ329から第1整数積値を、及び専用乗算器324Aから第2整数積値を受信するように構成されており、累算加算器330は、中間整数値を後続の累算加算器に送信するように構成されている。少なくとも幾つかの実施形態では、累算加算器330は、シフタ329からシフト済み仮数値350を、及びMACユニット320の当該別の乗算器グループから当該別のシフト済み仮数値を受信するように構成されており、累算加算器330は、中間仮数値352を後続の累算加算器に送信するように構成されている。少なくとも幾つかの実施形態では、累算加算器330は、複数の累算加算器のうちの1つであり、各累算加算器は、複数の乗算器グループの中の共有乗算器、複数の専用乗算器の中の専用乗算器、及び先行する累算加算器の任意の組み合わせのうちの2つ又はそれよりも多くに接続され、複数の累算加算器は、複数の乗算器グループの中間仮数値を累算して累算仮数値を生成するように集合的に構成されており、複数の累算加算器は、複数の乗算器グループ及び複数の専用乗算器の中間整数値を累算して累算整数値を生成するように集合的に更に構成されている。少なくとも幾つかの実施形態では、累算加算器330は、正確性の向上のためにより大きいビット幅を有する。少なくとも幾つかの実施形態では、累算加算器330は、より小さいビット幅を有し、これは、より長いビット幅と比較して正確性が低下するが、要求されるハードウェアリソースが少なくなる。このようにして、累算加算器330のビット幅は、正確性及びハードウェアリソース消費の間のトレードオフを表す。
【0038】
図4は、本発明の少なくとも1つの実施形態に係る、浮動小数点モードにおいて乗累算演算を実行するMACユニット420の概略図である。MACユニット420は、グループ乗算器424Aを含む乗算器グループ421A、専用乗算器424B、グループ乗算器424Cを含む乗算器グループ421B、専用乗算器424D、及び累算加算器430を備える。乗算器グループ421A及び421B、グループ乗算器424A及び424C、専用乗算器424B及び424D、及び累算加算器430は、別段示される場合を除き、それぞれ、
図3の乗算器グループ321、グループ乗算器324B、専用乗算器324A、及び累算加算器330と構造及び機能において実質的に同様である。
【0039】
浮動小数点モードでは、MACユニット420は、活性化0仮数444A、活性化0指数442A、重み0仮数445A、重み0指数443A、活性化1仮数444B、活性化1指数442B、重み1仮数445B、及び重み1指数443Bを含む複数の浮動小数点値を受信する。浮動小数点モードでは、MACユニット420は、活性化0仮数444A、活性化0指数442A、重み0仮数445A、及び重み0指数443Aを乗算器グループ421Aに向け、活性化1仮数444B、活性化1指数442B、重み1仮数445B、及び重み1指数443Bを乗算器グループ421Bに向ける。浮動小数点モードでは、専用乗算器424B及び専用乗算器424Dは、休止状態である。少なくとも幾つかの実施形態では、MACユニット420は、浮動小数点モードにおいて専用乗算器424B及び専用乗算器424Dを使用することを控えるように更に構成されている。浮動小数点モードでは、乗算器グループ421A及び乗算器グループ421Bは各々、シフト済み仮数値を累算加算器430に送信する。浮動小数点モードでは、累算加算器は、シフト済み仮数値を加算して中間仮数値452を生成する。
【0040】
図5は、本発明の少なくとも1つの実施形態に係る、整数モードにおいて乗累算演算を実行するMACユニット520の概略図である。MACユニット520は、グループ乗算器524Aを含む乗算器グループ521A、専用乗算器524B、グループ乗算器524Cを含む乗算器グループ521B、専用乗算器524D、及び累算加算器530を備える。乗算器グループ521A及び521B、グループ乗算器524A及び524C、専用乗算器524B及び524D、及び累算加算器530は、別段示される場合を除き、それぞれ、
図3の乗算器グループ321、グループ乗算器324B、専用乗算器324A、及び累算加算器330と構造及び機能において実質的に同様である。
【0041】
整数モードでは、MACユニット520は、活性化0整数544A、重み0整数545A、活性化1整数544B、重み1整数545B、活性化2整数544C、重み2整数545C、活性化3整数544D、及び重み3整数545Dを含む複数の整数値を受信する。整数モードでは、MACユニット420は、活性化0整数544A及び重み0整数545Aを乗算器グループ521Aに向け、活性化1整数544B及び重み1整数545Bを専用乗算器524Bに向け、活性化2整数544C及び重み2整数545Cを乗算器グループ521Bに向け、活性化3整数544D及び重み3整数545Dを専用乗算器524Dに向ける。整数モードでは、乗算器グループ521A及び乗算器グループ521Bは、それぞれ、グループ乗算器524A及びグループ乗算器524Cを除き休止状態である。整数モードでは、乗算器グループ521A、専用乗算器524B、乗算器グループ521B、及び専用乗算器524Dは各々、整数積値を累算加算器530に送信する。整数モードでは、累算加算器は、整数積値を加算して中間整数値556を生成する。
【0042】
図6は、本発明の少なくとも1つの実施形態に係る、多重精度乗累算演算及び活性化のための動作フローである。動作フローは、多重精度乗累算演算及び活性化の方法を提供する。少なくとも幾つかの実施形態では、方法は、
図1のコントローラ118等の集積回路のコントローラによって実行される。
【0043】
S660において、コントローラは、メモリを読み出す。少なくとも幾つかの実施形態では、コントローラは、整数モードにおいてメモリから複数の整数値を読み出す。少なくとも幾つかの実施形態では、コントローラは、浮動小数点モードにおいてメモリから複数の浮動小数点値を読み出す。少なくとも幾つかの実施形態では、コントローラは、複数のMACユニットに、整数モードにおいてメモリから複数の整数値を、及び浮動小数点モードにおいて複数の浮動小数点値を集合的に読み出させる。
【0044】
S661において、コントローラは、計算を実行する。少なくとも幾つかの実施形態では、コントローラは、メモリから読み出された値に対して計算を実行する。少なくとも幾つかの実施形態では、コントローラは、複数のMACユニットに、メモリから読み出された値から中間値を計算させる。少なくとも幾つかの実施形態では、コントローラは、各MACユニットに、整数モードにおいて、第2乗算器を用いて複数の整数値の中の2つの整数値を乗算させて中間整数値を生成させる。少なくとも幾つかの実施形態では、コントローラは、以降で説明される
図7の動作を実行する。
【0045】
S662において、コントローラは、中間値を累算する。少なくとも幾つかの実施形態では、コントローラは、中間値を累算して累算値を生成する。少なくとも幾つかの実施形態では、コントローラは、複数の累算加算器に、複数のMACユニットの中間仮数値を累算させて浮動小数点モードにおける累算仮数値を生成させる。少なくとも幾つかの実施形態では、コントローラは、複数の累算加算器に、複数のMACユニットの中間整数値を累算して整数モードにおける累算整数値を生成させる。各MACユニットが累算加算器を含む少なくとも幾つかの実施形態では、各MACユニットは、整数モードにおいて、グループ乗算器及び専用乗算器から生成された中間値を加算するように更に構成されている。
【0046】
S664において、コントローラは、累算値が仮数値であるか否かを決定する。少なくとも幾つかの実施形態では、浮動小数点モードは、累算値が仮数値である場合に示される。少なくとも幾つかの実施形態では、整数モードは、累算値が整数値である場合に示される。累算値が仮数値である場合、動作フローは、S665における正規化に進む。累算値が仮数値ではない場合、動作フローは、S666における以前の累算値への加算に進む。
【0047】
S665において、コントローラは、累算仮数値を最大指数値で正規化する。少なくとも幾つかの実施形態では、コントローラは、正規化累算加算器に、累算仮数値を最大指数値で正規化させる。少なくとも幾つかの実施形態では、正規化累算加算器は、累算仮数値を最大指数値で正規化して浮動小数点モードにおける第3データ幅浮動小数点値を生成する。少なくとも幾つかの実施形態では、コントローラは、累算仮数値が負である場合、累算仮数値を2の補数に置き換える。少なくとも幾つかの実施形態では、コントローラは、先頭の1を検出し、累算仮数値を左にシフトする。少なくとも幾つかの実施形態では、コントローラは、最大指数値、複数のMACユニットにおけるMACユニットの数、及び各MACユニットにおける乗算器の数に基づいて、浮動小数点値の指数値を計算する。少なくとも幾つかの実施形態では、コントローラは、
【数1】
に従って指数値を計算し、ここで、Eは、浮動小数点値の指数であり、E
Lは、最大指数値であり、Mは、複数のMACユニットにおけるMACユニットの数であり、Sは、各MACユニットにおける乗算器の数であり、S
Lは、左シフト量である。少なくとも幾つかの実施形態では、コントローラは、累算値が正であるか又は負であるかと一致した符号を連結する。少なくとも幾つかの実施形態では、コントローラは、正規化累算加算器に、整数モードにおいて正規化することなく第3データ幅整数値を生成させる。
【0048】
S666において、コントローラは、浮動小数点値を、以前の反復からの以前記憶された浮動小数点値に加算する。少なくとも幾つかの実施形態では、コントローラは、正規化累算加算器に、以前の反復のS665において正規化された浮動小数点値を、この反復のS665において正規化された浮動小数点値に加算させる。少なくとも幾つかの実施形態では、コントローラは、正規化累算加算器に、以前の反復のS665において生成された累算整数値を、この反復のS665において生成された累算整数値に加算させる。少なくとも幾つかの実施形態では、計算された指数値が255よりも大きいか又はゼロよりも小さい場合、コントローラは、累算仮数値をゼロに設定し、指数値を255又はゼロにクリッピングする。少なくとも幾つかの実施形態では、結果として得られる値は、メモリに記憶される。
【0049】
S668において、コントローラは、全ての反復が完了したか否かを決定する。少なくとも幾つかの実施形態では、コントローラは、所定の数の反復を完了するようにプログラミングされる。全ての反復が完了していないとコントローラが決定した場合、動作フローは、S660におけるメモリ読み出しに戻る。全ての反復が完了したとコントローラが決定した場合、動作フローは、S669における累算値活性化に進む。
【0050】
S669において、コントローラは、累算値を活性化する。少なくとも幾つかの実施形態では、コントローラは、S666においてメモリに記憶された結果として得られる値を活性化する。少なくとも幾つかの実施形態では、コントローラは、整数活性化パイプラインに、第3データ幅整数値を活性化させて、活性化された第1データ幅整数値を生成させる。少なくとも幾つかの実施形態では、コントローラは、浮動小数点活性化パイプラインに、第3データ幅浮動小数点値を活性化させて、活性化された第2データ幅浮動小数点値を生成させる。少なくとも幾つかの実施形態では、活性化関数は、Sigmoid、GELU、SiLU、RELU等を含む。少なくとも幾つかの実施形態では、コントローラは、入力に基づいて値を近似する近似関数を使用して活性化関数を実行する。少なくとも幾つかの実施形態では、近似関数は、直接近似、線形近似、又は2次又は3次への多項式近似である。少なくとも幾つかの実施形態では、近似関数は、区分線形近似である。少なくとも幾つかの実施形態では、Y=MX+Cの区分線形近似が使用され、ここで、Mは、線の傾きであり、Cは、オフセットであり、Xは、入力値であり、Yは、活性化された値である。少なくとも幾つかの実施形態では、近似関数は、傾きについての1つのLUT及びオフセットについての1つのLUT等の少なくとも1つのルックアップテーブル(LUT)に基づいている。少なくとも幾つかの実施形態では、傾き値及びオフセット値がテーブルから返されると、傾きは、入力値によって乗算され、オフセット値に加算される。
【0051】
図7は、本発明の少なくとも1つの実施形態に係る、乗累算計算を実行する動作フローである。動作フローは、
図6のS661において実行される計算等の乗累算計算を実行する方法を提供する。少なくとも幾つかの実施形態では、方法は、
図3のMACユニット320等のシストリックアレイのMACユニットによって実行される。
【0052】
S770において、MACユニットは、入力値が浮動小数点値であるか否かを決定する。少なくとも幾つかの実施形態では、MACユニットは、浮動小数点モードを適用すべきか又は整数モードを適用すべきかを決定する。入力値が浮動小数点値であるとMACユニットが決定した場合、動作フローは、S772における抽出に進む。入力値が浮動小数点値ではないとMACユニットが決定した場合、動作フローは、S777における整数乗算に進む。
【0053】
S772において、MACユニットは、各入力浮動小数点値から仮数及び指数を抽出する。少なくとも幾つかの実施形態では、MACユニットは、抽出器に、複数の浮動小数点値の各々から指数値及び仮数値を抽出させ、複数の浮動小数点値の中の各浮動小数点値は、第2データ幅を有する。少なくとも幾つかの実施形態では、MACユニットは、抽出器に、第2データ幅浮動小数点値を構成する値の連結から仮数及び指数を分割する。少なくとも幾つかの実施形態では、MACユニットは、抽出器に、仮数としてのビット6~0を、指数としてのビット14~8から分割させる。少なくとも幾つかの実施形態では、MACユニットは、抽出器に、仮数におけるビット6~0を2の補数に置き換えさせる。
【0054】
S774において、MACユニットは、指数値を計算する。少なくとも幾つかの実施形態では、MACユニットは、指数総和値を計算し、指数総和値を他の指数総和値と比較し、差分値であって、当該差分値から仮数積値をシフトする差分値を決定する。少なくとも幾つかの実施形態では、MACユニットは、以降で説明される
図8の動作フローを実行する。
【0055】
S776において、MACユニットは、仮数値を乗算する。少なくとも幾つかの実施形態では、MACユニットは、グループ乗算器等の乗算器に、複数の浮動小数点値の中の2つの浮動小数点値の各々から抽出された仮数値を乗算させて第1仮数積値を生成させる。少なくとも幾つかの実施形態では、MACユニットは、各乗算器グループのグループ乗算器に、仮数値を乗算させて仮数積値を生成させる。
【0056】
S777において、MACユニットは、整数値を乗算する。少なくとも幾つかの実施形態では、MACユニットは、グループ乗算器、専用乗算器等の乗算器、又はこれらの任意の組み合わせに、複数の整数値の中の2つの整数値を乗算させて中間整数値を生成させ、複数の整数値の中の各整数値は、第1データ幅を有する。少なくとも幾つかの実施形態では、MACユニットは、各乗算器グループのグループ乗算器及び各専用乗算器に、整数値を乗算させて中間整数値を生成させる。
【0057】
S778において、MACユニットは、仮数積値をシフトする。少なくとも幾つかの実施形態では、MACユニットは、シフタに、差分値に基づいて第1仮数積値をシフトさせて中間仮数値を生成させる。少なくとも幾つかの実施形態では、MACユニットは、各乗算器グループのシフタに、仮数積値をシフトさせて中間仮数値を生成させる。
【0058】
図8は、本発明の少なくとも1つの実施形態に係る、浮動小数点値の乗累算計算のための指数を計算する動作フローである。動作フローは、
図7のS774において実行される計算等の浮動小数点値の乗累算計算のために指数を計算する方法を提供する。少なくとも幾つかの実施形態では、方法は、
図3のMACユニット320等のシストリックアレイのMACユニットによって実行される。
【0059】
S880において、MACユニットは、指数値を加算する。少なくとも幾つかの実施形態では、MACユニットは、指数加算器に、複数の浮動小数点値の中の2つの浮動小数点値の各々から抽出された指数値を加算させて指数総和値を生成させる。少なくとも幾つかの実施形態では、MACユニットは、各乗算器グループの指数加算器に、指数値を加算させて指数総和値を生成させる。
【0060】
S884において、MACユニットは、最大指数値を決定する。少なくとも幾つかの実施形態では、MACユニットは、比較器に、シストリックアレイの複数のMACユニットから生成された複数の指数総和値の中の最大指数値を決定させる。少なくとも幾つかの実施形態では、MACユニットは、比較器に、計算の以前の反復の結果得られる第3データ幅浮動小数点値の指数値を含む複数の指数値の中の最大指数値を決定させる。
【0061】
S888において、MACユニットは、最大指数値から指数総和値を減算する。少なくとも幾つかの実施形態では、MACユニットは、減算器に、最大指数値から指数総和値を減算させて差分値を生成させる。少なくとも幾つかの実施形態では、MACユニットは、各乗算器グループの減算器に、最大指数値から指数値を減算させて差分値を生成させる。
【0062】
少なくとも幾つかの実施形態は、そのブロックが(1)動作が実行されるプロセスの段階又は(2)動作を実行することを担うコントローラのセクションを表すフローチャート及びブロック図を参照して説明されている。少なくとも幾つかの実施形態では、特定の段階及びセクションは、専用回路、コンピュータ可読媒体上に記憶されたコンピュータ可読命令を供給されたプログラマブル回路、及び/又はコンピュータ可読媒体上に記憶されたコンピュータ可読命令を供給されたプロセッサによって実装される。少なくとも幾つかの実施形態では、専用回路は、デジタル及び/又はアナログハードウェア回路を含み、集積回路(IC)及び/又はディスクリート回路を含む。少なくとも幾つかの実施形態では、プログラマブル回路は、論理AND、OR、XOR、NAND、NOR、及び他の論理演算、フリップフロップ、レジスタ、メモリ要素等を含む再構成可能ハードウェア回路、例えば、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ(PLA)等を含む。
【0063】
少なくとも幾つかの実施形態では、コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を維持及び記憶することが可能である有形デバイスを含む。幾つかの実施形態では、コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、又は前述したものの任意の適した組み合わせを含むが、これらに限定されるものではない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは次のもの:ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROM又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピディスク、機械的にエンコードされたデバイス、例えば、パンチカード又は命令が記録された溝内の隆起構造、及び前述したものの任意の適した組み合わせを含む。コンピュータ可読記憶媒体は、本明細書において使用される場合、電波又は他の自由伝播する電磁波、導波路又は他の送信媒体を通って伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、又はワイヤを通って送信される電気信号等の一時的信号それ自体であると解釈されるべきではない。
【0064】
少なくとも幾つかの実施形態では、本明細書において説明されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、又はネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク及び/又はワイヤレスネットワークを介して外部コンピュータ又は外部記憶デバイスにダウンロード可能である。少なくとも幾つかの実施形態では、ネットワークは、銅伝送ケーブル、光送信ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバを含む。少なくとも幾つかの実施形態では、各コンピューティング/処理デバイス内のネットワークアダプタカード又はネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
【0065】
少なくとも幾つかの実施形態では、上記で説明された動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は1つ又は複数のプログラミング言語の任意の組み合わせにおいて記述されたソースコード又はオブジェクトコードのいずれかであり、当該1つ又は複数のプログラミング言語は、Smalltalk(登録商標)、C++等のようなオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語等の従来の手続き型プログラミング言語を含む。少なくとも幾つかの実施形態では、コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行されるか、スタンドアロンソフトウェアパッケージとして部分的にユーザのコンピュータ上で実行されるか、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で実行されるか、又は完全にリモートコンピュータ又はサーバ上で実行される。少なくとも幾つかの実施形態では、後者のシナリオにおいて、リモートコンピュータは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されるか、又は接続は、(例えば、インターネットサービスプロバイダを使用してインターネットを通して)外部コンピュータに対して行われる。少なくとも幾つかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)又はプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによって、コンピュータ可読プログラム命令を実行する。
【0066】
本発明の実施形態が説明されたが、特許請求されたいずれの主題の技術的範囲も、上記で説明された実施形態に限定されない。当業者であれば、上記で説明された実施形態に対する様々な改変及び改善が可能であることを理解するであろう。当業者であれば、特許請求の範囲の範囲から、そのような改変又は改善が加えられた実施形態が、本発明の技術的範囲内に含まれることも理解するであろう。
【0067】
特許請求の範囲、実施形態、又は図において示されている装置、システム、プログラム、及び方法によって実行される各プロセスの動作、手順、段階、及びステージは、その順序が「に先立ち」又は「前に」等によって示されていない限り、及び、以前のプロセスからの出力が後のプロセスにおいて使用されない限り、任意の順序において実行されることが可能である。特許請求の範囲、実施形態、又は図において、プロセスフローが「まず」又は「次に」等の文言を使用して説明される場合でも、そのような説明は、必ずしもプロセスが説明された順序において実行されなければならないことを意味するわけではない。
【0068】
少なくとも幾つかの実施形態では、多重精度乗累算演算は、整数モードにおいて、第1データ幅整数値に対して計算を実行して第3データ幅整数値を生成するように動作するように構成されているとともに、浮動小数点モードにおいて、第2データ幅浮動小数点値に対して計算を実行して第3データ幅浮動小数点値を生成するように動作するように構成された乗累算(MAC)ユニットによって実行され、第2データ幅は、第1データ幅の2倍であり、第3データ幅は、第2データ幅よりも大きい。
【0069】
前述は、当業者が本開示の態様をより良好に理解するように、幾つかの実施形態の特徴を概略している。当業者であれば、本開示が、本明細書において導入された実施形態と同じ目的を実行する、及び/又は同じ利点を達成するための他のプロセス及び構造を設計又は修正するための基礎として容易に使用可能であることを理解すべきである。当業者はまた、そのような均等な構成が本開示の趣旨及び範囲から逸脱しないこと、及び、本明細書における様々な変更、置換、及び改変が本開示の趣旨及び範囲から逸脱することなく可能であることを認識すべきである。
【手続補正書】
【提出日】2024-08-27
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
整数モードにおいて、第1データ幅整数値に対して計算を実行して第3データ幅整数値を生成するように動作するように構成されているとともに、浮動小数点モードにおいて、第2データ幅浮動小数点値に対して計算を実行して第3データ幅浮動小数点値を生成するように動作するように構成された乗累算(MAC)ユニット、ここで、前記第2データ幅浮動小数点値の第2データ幅は、前記第1データ幅整数値の第1データ幅の2倍であり、前記第3データ幅整数値及び前記第3データ幅浮動小数点値の第3データ幅は、前記第2データ幅よりも大きく、前記MACユニットは、第1乗算器、指数加算器、比較器、減算器、及びシフタを有し、
前記MACユニットは、前記整数モードにおいて、前記第1乗算器を用いて複数の整数値の中の2つの整数値を乗算して中間整数値を生成することを含む計算を実行するように構成されており、前記複数の整数値の中の各整数値は、前記第1データ幅を有し、
前記MACユニットは、前記浮動小数点モードにおいて、以下:
複数の浮動小数点値の各々から指数値及び仮数値を抽出すること、前記複数の浮動小数点値の中の各浮動小数点値は、前記第2データ幅を有する、
前記第1乗算器を用いて、前記複数の浮動小数点値の中の2つの浮動小数点値の各々から抽出された仮数値を乗算して第1仮数積値を生成すること、
前記指数加算器を用いて、前記複数の浮動小数点値の中の前記2つの浮動小数点値の各々から抽出された指数値を加算して指数総和値を生成すること、
前記比較器を用いて、前記MACユニットから生成された複数の指数総和値の中の最大指数値を決定すること、
前記減算器を用いて、前記最大指数値から前記指数総和値を減算して差分値を生成すること、及び
前記シフタを用いて、前記差分値に基づいて前記第1仮数積値をシフトして中間仮数値を生成すること
を含む計算を実行するように更に構成されている;
前記MACユニット内に含まれる2つ又はそれよりも多くの乗算器に接続された累算加算器、前記累算加算器は、
前記MACユニットの中間仮数値を累算して前記浮動小数点モードにおける累算仮数値を生成すること、及び
前記MACユニットの中間整数値を累算して前記整数モードにおける累算整数値を生成すること
を行うように構成されている;及び
前記累算加算器に接続された正規化累算加算器、前記正規化累算加算器は、
前記累算仮数値を前記最大指数値で正規化して前記浮動小数点モードにおける第3データ幅浮動小数点値を生成すること、及び
前記整数モードにおいて正規化することなく第3データ幅整数値を生成すること
を行うように構成されている、
を備える、集積回路。
【請求項2】
前記MACユニットと通信するメモリを更に備え;
前記整数モードにおける前記計算は、前記メモリから前記複数の整数値を読み出すことを更に含み;
前記浮動小数点モードにおける前記計算は、前記メモリから前記複数の浮動小数点値を読み出すことを更に含む、請求項1に記載の集積回路。
【請求項3】
前記MACユニットと通信するコントローラを更に備え、前記コントローラは、前記整数モードにおいて、第1データ幅整数値に対してニューラルネットワーク推論を実行するように動作するように構成されているとともに、前記浮動小数点モードにおいて、第2データ幅浮動小数点値に対してニューラルネットワーク推論を実行するように動作するように構成されている、請求項1に記載の集積回路。
【請求項4】
前記メモリと通信する整数活性化パイプラインを更に備え、前記整数活性化パイプラインは、前記第3データ幅整数値を活性化して、活性化された第1データ幅整数値を生成するように構成されている、請求項2に記載の集積回路。
【請求項5】
前記メモリと通信する浮動小数点活性化パイプラインを更に備え、前記浮動小数点活性化パイプラインは、前記第3データ幅浮動小数点値を活性化して、活性化された第2データ幅浮動小数点値を生成するように構成されている、請求項2に記載の集積回路。
【請求項6】
前記MACユニットは、第2乗算器を更に有し、
前記MACユニットは、前記整数モードにおいて、前記第2乗算器を用いて前記複数の整数値の中の2つの整数値を乗算して中間整数値を生成するように更に構成されており、
前記MACユニットは、前記浮動小数点モードにおいて前記第2乗算器を使用することを控えるように更に構成されている、請求項1に記載の集積回路。
【請求項7】
前記MACユニットは、前記第1乗算器及び前記第2乗算器のペアの複数のインスタンスを含み、前記複数のインスタンスの中の各第1乗算器は、前記指数加算器のインスタンス、前記比較器のインスタンス、前記減算器のインスタンス、及び前記シフタのインスタンスとグループ化され、
前記MACユニットは、各第1乗算器について前記浮動小数点モードにおいて前記計算を実行するように更に構成されている、請求項6に記載の集積回路。
【請求項8】
シストリックアレイであって、
前記MACユニットの複数のインスタンス、ここで、前記MACユニットの各インスタンスは、前記浮動小数点モードにおいて、前記比較器を用いて、前記シストリックアレイの前記MACユニットの前記複数のインスタンスから生成された前記複数の指数総和値の中の前記最大指数値を決定することを実行するように更に構成されている、及び
複数の累算加算器、各累算加算器は、MACユニットの前記複数のインスタンス内に含まれる乗算器及び先行する累算加算器の任意の組み合わせのうちの2つ又はそれよりも多くに接続される、
を有する、シストリックアレイを更に備え、
前記複数の累算加算器は、
前記MACユニットの前記複数のインスタンスの前記中間仮数値を累算して前記浮動小数点モードにおける前記累算仮数値を生成すること、及び
前記MACユニットの前記複数のインスタンスの前記中間整数値を累算して前記整数モードにおける前記累算整数値を生成すること
を行うように集合的に構成されており、
前記複数の累算加算器は、前記正規化累算加算器を含む、請求項1から7のいずれか一項に記載の集積回路。
【請求項9】
整数モードにおいて、第1データ幅整数値に対して計算を実行して第3データ幅整数値を生成するように動作するように構成されているとともに、浮動小数点モードにおいて、第2データ幅浮動小数点値に対して計算を実行して第3データ幅浮動小数点値を生成するように動作するように構成された乗累算(MAC)ユニット、ここで、前記第2データ幅浮動小数点値の第2データ幅は、前記第1データ幅整数値の第1データ幅の2倍であり、前記第3データ幅整数値及び前記第3データ幅浮動小数点値の第3データ幅は、前記第2データ幅よりも大きく、前記MACユニットは、
複数の第2データ幅浮動小数点値の各々から指数値及び仮数値を抽出するように構成された抽出器、前記抽出器は、複数の第1データ幅整数値の中の少なくとも2つの第1データ幅整数値を通過させるように更に構成されている、
前記抽出器に接続された第1乗算器、前記第1乗算器は、複数の浮動小数点値の中の2つの浮動小数点値の各々から抽出された仮数値を乗算して第1仮数積値を生成するように構成されており、前記第1乗算器は、前記複数の第1データ幅整数値の中の前記少なくとも2つの第1データ幅整数値のうちの2つを乗算して第1整数積値を生成するように更に構成されている、
前記抽出器に接続された指数加算器、前記指数加算器は、前記複数の浮動小数点値の中の前記2つの浮動小数点値の各々から抽出された指数値を加算して指数総和値を生成するように構成されている、
前記指数加算器に接続された比較器、前記比較器は、前記MACユニットから生成された複数の指数総和値の中の最大指数値を決定するように構成されている、
前記指数加算器及び前記比較器に接続された減算器、前記減算器は、前記最大指数値から前記指数総和値を減算して差分値を生成するように構成されている、及び
前記減算器及び前記第1乗算器に接続されたシフタ、前記シフタは、前記差分値に基づいて前記第1仮数積値をシフトして中間仮数値を生成するように構成されており、前記シフタは、前記第1整数積値を中間整数値として通過させるように更に構成されている
を有する;
前記MACユニットの中間仮数値を累算して累算仮数値を生成するように構成された累算加算器、前記累算加算器は、前記MACユニットの中間整数値を累算して累算整数値を生成するように更に構成されている;及び
前記累算加算器に接続された正規化累算加算器、前記正規化累算加算器は、前記累算仮数値を前記最大指数値で正規化して第3データ幅浮動小数点値を生成するように構成されており、前記正規化累算加算器は、正規化することなく第3データ幅整数値を生成するように更に構成されている、
を備える、集積回路。
【請求項10】
前記MACユニットと通信するメモリを更に備え;
前記MACユニットは、前記メモリから前記複数の第2データ幅浮動小数点値を読み出すように構成されており、前記MACユニットは、前記メモリから前記複数の第1データ幅整数値を読み出すように更に構成されている、請求項9に記載の集積回路。
【請求項11】
前記MACユニットと通信するコントローラを更に備え、前記コントローラは、前記整数モードにおいて、第1データ幅整数値に対してニューラルネットワーク推論を実行するように動作するように構成されているとともに、前記浮動小数点モードにおいて、第2データ幅浮動小数点値に対してニューラルネットワーク推論を実行するように動作するように構成されている、請求項9に記載の集積回路。
【請求項12】
前記メモリと通信する整数活性化パイプラインを更に備え、前記整数活性化パイプラインは、第3データ幅整数値に対して活性化を実行して、第1データ幅整数値を生成するように構成されている、請求項10に記載の集積回路。
【請求項13】
前記メモリと通信する浮動小数点活性化パイプラインを更に備え、前記浮動小数点活性化パイプラインは、第3データ幅浮動小数点値に対して活性化を実行して、第2データ幅浮動小数点値を生成するように構成されている、請求項10に記載の集積回路。
【請求項14】
前記MACユニットは、第2乗算器を更に有し、前記第2乗算器は、前記複数の第1データ幅整数値の中の2つの第1データ幅整数値を乗算して第2整数積値を生成するように構成されている、請求項9から13のいずれか一項に記載の集積回路。
【請求項15】
シストリックアレイであって、
前記MACユニットの複数のインスタンス、ここで、前記MACユニットの各インスタンスの前記比較器は、前記シストリックアレイの前記MACユニットの前記複数のインスタンスから生成された前記複数の指数総和値の中の前記最大指数値を決定するように構成されている、及び
複数の累算加算器、各累算加算器は、前記MACユニットの前記複数のインスタンス内に含まれる乗算器及び先行する累算加算器の任意の組み合わせのうちの2つ又はそれよりも多くに接続され、前記複数の累算加算器は、前記MACユニットの前記複数のインスタンスの前記中間仮数値を累算して前記累算仮数値を生成するように集合的に構成されており、前記複数の累算加算器は、前記MACユニットの前記複数のインスタンスの前記中間整数値を累算して前記累算整数値を生成するように集合的に更に構成されている、
を有する、シストリックアレイを更に備え、
前記複数の累算加算器は、前記正規化累算加算器を含む、請求項9から13のいずれか一項に記載の集積回路。
【請求項16】
整数モードにおいて、第1データ幅整数値に対して計算を実行して第3データ幅整数値を生成するように動作するように構成されているとともに、浮動小数点モードにおいて、第2データ幅浮動小数点値に対して計算を実行して第3データ幅浮動小数点値を生成するように動作するように構成された複数の乗算器グループ、ここで、前記第2データ幅浮動小数点値の第2データ幅は、前記第1データ幅整数値の第1データ幅の2倍であり、前記第3データ幅整数値及び前記第3データ幅浮動小数点値の第3データ幅は、前記第2データ幅よりも大きく、各乗算器グループは、
複数の第2データ幅浮動小数点値の各々から指数値及び仮数値を抽出するように構成された抽出器、前記抽出器は、複数の第1データ幅整数値の中の少なくとも2つの第1データ幅整数値を通過させるように更に構成されている、
前記抽出器に接続された共有乗算器、前記共有乗算器は、複数の浮動小数点値の中の2つの浮動小数点値の各々から抽出された仮数値を乗算して第1仮数積値を生成するように構成されており、前記共有乗算器は、前記複数の第1データ幅整数値の中の前記少なくとも2つの第1データ幅整数値のうちの2つを乗算して第1整数積値を生成するように更に構成されている、
前記抽出器に接続された指数加算器、前記指数加算器は、前記複数の浮動小数点値の中の前記2つの浮動小数点値の各々から抽出された指数値を加算して指数総和値を生成するように構成されている、
前記指数加算器に接続された比較器、前記比較器は、前記複数の乗算器グループから生成された複数の指数総和値の中の最大指数値を決定するように構成されている、
前記指数加算器及び前記比較器に接続された減算器、前記減算器は、前記最大指数値から前記指数総和値を減算して差分値を生成するように構成されている、及び
前記減算器及び前記共有乗算器に接続されたシフタ、前記シフタは、前記差分値に基づいて前記第1仮数積値をシフトして中間仮数値を生成するように構成されており、前記シフタは、前記第1整数積値を中間整数値として通過させるように更に構成されている、
を有する;
複数の専用乗算器、各専用乗算器は、前記複数の第1データ幅整数値の中の2つの第1データ幅整数値を乗算して第2整数積値を生成するように構成されている;
前記複数の乗算器グループの中の共有乗算器及び前記複数の専用乗算器の中の専用乗算器に接続された累算加算器、前記累算加算器は、前記複数の乗算器グループの前記中間仮数値を累算して累算仮数値を生成するように構成されており、前記累算加算器は、前記複数の乗算器グループ及び前記複数の専用乗算器の前記中間整数値を累算して累算整数値を生成するように更に構成されている;及び
前記累算仮数値を前記最大指数値で正規化して第3データ幅浮動小数点値を生成するように構成された正規化累算加算器、前記正規化累算加算器は、正規化することなく第3データ幅整数値を生成するように更に構成されている、
を備える、集積回路。
【請求項17】
前記複数の乗算器グループの中の各乗算器グループ及び前記複数の専用乗算器の中の各専用乗算器と通信するメモリを更に備え;
各乗算器グループは、前記メモリから前記複数の第2データ幅浮動小数点値を読み出すように構成されており、各乗算器グループは、前記メモリから前記複数の第1データ幅整数値を読み出すように更に構成されている、請求項16に記載の集積回路。
【請求項18】
前記複数の乗算器グループと通信するコントローラを更に備え、前記コントローラは、前記整数モードにおいて、第1データ幅整数値に対してニューラルネットワーク推論を実行するように動作するように構成されているとともに、前記浮動小数点モードにおいて、第2データ幅浮動小数点値に対してニューラルネットワーク推論を実行するように動作するように構成されている、請求項16に記載の集積回路。
【請求項19】
前記メモリと通信する浮動小数点活性化パイプラインを更に備え、前記浮動小数点活性化パイプラインは、第3データ幅浮動小数点値に対して活性化を実行して第2データ幅浮動小数点値を生成するように構成されている、請求項17に記載の集積回路。
【請求項20】
シストリックアレイであって、
前記複数の乗算器グループ、
前記複数の専用乗算器、及び
複数の累算加算器、各累算加算器は、前記複数の乗算器グループの中の共有乗算器、前記複数の専用乗算器の中の専用乗算器、及び先行する累算加算器の任意の組み合わせのうちの2つ又はそれよりも多くに接続され、前記複数の累算加算器は、前記複数の乗算器グループの前記中間仮数値を累算して前記累算仮数値を生成するように集合的に構成されており、前記複数の累算加算器は、前記複数の乗算器グループ及び前記複数の専用乗算器の前記中間整数値を累算して前記累算整数値を生成するように集合的に更に構成されている、
を有する、シストリックアレイを更に備え、
前記複数の累算加算器は、前記正規化累算加算器を含む、請求項16から19のいずれか一項に記載の集積回路。
【外国語明細書】