(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-15
(54)【発明の名称】ハイブリッド行列乗算器
(51)【国際特許分類】
G06G 7/16 20060101AFI20241108BHJP
G06G 7/60 20060101ALI20241108BHJP
G06G 7/184 20060101ALI20241108BHJP
G06G 7/14 20060101ALI20241108BHJP
G06F 17/16 20060101ALI20241108BHJP
【FI】
G06G7/16
G06G7/60
G06G7/184
G06G7/14
G06F17/16 M
【審査請求】有
【予備審査請求】有
(21)【出願番号】P 2024526822
(86)(22)【出願日】2021-11-25
(85)【翻訳文提出日】2024-06-25
(86)【国際出願番号】 IB2021060992
(87)【国際公開番号】W WO2023084299
(87)【国際公開日】2023-05-19
(32)【優先日】2021-11-10
(33)【優先権主張国・地域又は機関】EP
(81)【指定国・地域】
(71)【出願人】
【識別番号】523481115
【氏名又は名称】シンタラ アーゲー
【氏名又は名称原語表記】SYNTHARA AG
【住所又は居所原語表記】Josefstrasse 219 Zurich SWITZERLAND
(74)【代理人】
【識別番号】100134430
【氏名又は名称】加藤 卓士
(72)【発明者】
【氏名】アビナッシュ・グッタ
(72)【発明者】
【氏名】マヌ ヴィジャヤゴパラン・ナイール
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056AA05
5B056BB71
(57)【要約】
シングルビット積和演算回路のアレイであって、シングルビット積和演算回路は、それぞれ、
(i)第1シングルビット値を記憶するための第1記憶素子と、
(ii)第2シングルビット値を記憶するための第2記憶素子と、
(iii)積を計算するために第1シングルビット値に第2シングルビット値を乗算するためのビット乗算回路と、
(iv)アナログストレージ回路と、
を備え、
ビット乗算回路は、積を表す電荷をアナログストレージ回路に蓄えるように動作可能であり、
シングルビット積和演算回路のアレイは、アナログストレージ回路に蓄えられた電荷を結合して、積の合計を表す積算電荷を提供するように動作可能であるハイブリッド積和演算回路。
【特許請求の範囲】
【請求項1】
シングルビット積和演算回路のアレイであって、シングルビット積和演算回路は、それぞれ、
(i)第1シングルビット値を記憶するための第1記憶素子と、
(ii)第2シングルビット値を記憶するための第2記憶素子と、
(iii)積を計算するために第1シングルビット値に第2シングルビット値を乗算するためのビット乗算回路と、
(iv)アナログストレージ回路と、
を備え、
前記ビット乗算回路は、積を表す電荷をアナログストレージ回路に蓄えるように動作可能であり、
前記シングルビット積和演算回路のアレイは、前記アナログストレージ回路に蓄えられた電荷を結合して、積の合計を表す積算電荷を提供するように動作可能であるハイブリッド積和演算回路。
【請求項2】
前記アナログストレージ回路がキャパシタである請求項1に記載のハイブリッド積和演算回路。
【請求項3】
前記ビット乗算回路および前記アナログストレージ回路に接続されたスイッチ回路であって、前記ビット乗算回路から前記アナログストレージ回路に電荷を転送する第1モードと、前記ビット乗算回路を前記アナログストレージ回路から分離し、前記アレイ内の複数の前記アナログストレージ回路を互いに接続して前記積算電荷を提供する第2モードとで、動作可能なスイッチ回路を含む請求項1に記載のハイブリッド積和演算回路。
【請求項4】
前記アレイの複数の前記アナログストレージ回路に接続され、前記アレイの複数の前記アナログストレージ回路から電荷を除去するように動作可能なクリア回路を含む請求項1に記載のハイブリッド積和演算回路。
【請求項5】
前記シングルビット積和演算回路のそれぞれが、前記アナログストレージ回路に接続され、前記アナログストレージ回路から電荷を除去するように動作可能なクリア回路を備えた請求項4に記載のハイブリッド積和演算回路。
【請求項6】
前記ビット乗算回路が機能ANDゲートである請求項1に記載のハイブリッド積和演算回路。
【請求項7】
前記アレイ内の前記アナログストレージ回路に蓄えられた電荷をデジタル蓄積値に変換するアナログ-デジタル変換器を含む請求項1記載のハイブリッド積和演算回路。
【請求項8】
シフト回路またはシフト電気接続を含み、前記デジタル蓄積値に2の累乗を乗算する請求項7に記載のハイブリッド積和演算回路。
【請求項9】
前記アレイ内の前記アナログストレージ回路に蓄えられた電荷を2のべき乗で乗算する電圧乗算器を含む請求項1記載のハイブリッド積和演算回路。
【請求項10】
第1値を記憶する第1記憶素子と、
第2値を記憶する第2記憶素子と、
第1値に第2値を乗算して積を計算する乗算回路と、
アナログストレージ回路と、を備えたハイブリッド積和演算回路。
【請求項11】
前記第1値および前記第2値は、バイナリのシングルビットデジタル値であり、
積を表す前記アナログストレージ回路に電荷を蓄えるように動作可能であるハイブリッド積和演算回路。
【請求項12】
請求項7に記載のハイブリッド積和演算回路のアレイと、
デジタル積算値を加算してデジタル行列値を生成するように動作可能なデジタル加算器と、
を備えたハイブリッド行列乗算器。
【請求項13】
前記デジタル加算器がパイプライン化されている請求項12に記載のハイブリッド行列乗算器。
【請求項14】
請求項1に記載のハイブリッド積和演算回路のアレイと、
累積電荷を加算してアナログ行列値を生成するように動作可能なアナログ加算器と、
を備えたハイブリッド行列乗算器。
【請求項15】
前記アナログストレージ回路に接続され、オペアンプ入力の加算器として構成され前記アナログ行列値を提供するように動作可能なオペアンプを含む請求項14に記載のハイブリッド行列乗算器。
【請求項16】
前記オペアンプは、前記オペアンプ入力を2のべき乗で乗算または除算するように構成された請求項15に記載のハイブリッド行列乗算器。
【請求項17】
アナログ行列値を変換してデジタル行列値を生成するアナログデジタル変換器を備えた請求項14記載のハイブリッド行列乗算器。
【請求項18】
前記ビット乗算回路は、直列に接続されたスイッチで構成される請求項1記載のハイブリッド積和演算回路。
【請求項19】
デジタル値を記憶するように動作可能である複数のデジタル記憶素子と、
記憶された前記デジタル値を乗算して積を生成する乗算回路と、
前記積を記憶するアナログストレージ回路と、
前記デジタル記憶素子、前記乗算回路、およびアナログストレージ回路を動作させるための電力を供給するための電源接続であって、1V以下の電圧(例えば、500mV以下、100mV以下、50mV以下、または10mV以下)を有する電源接続と、
を備えた請求項1に記載のハイブリッド積和演算回路。
【請求項20】
前記乗算回路は、直列に接続されたスイッチで構成される請求項19に記載のハイブリッド積和演算回路。
ハイブリッド行列乗算器
ハイブリッド積和演算回路は、シングルビット積和演算回路のアレイを含む。各シングルビット積和演算回路は、第1のシングルビット値を記憶するための第1の記憶素子と、第2のシングルビット値を記憶するための第2の記憶素子と、積を計算するために第1のシングルビット値に第2のシングルビット値を乗算するための乗算回路と、アナログストレージ回路とを有する。乗算回路は、積を表す電荷をアナログストレージ回路に蓄えるように動作可能である。アナログストレージ回路は、各アナログストレージ回路に蓄えられた電荷を結合して、積の和を代表する累積電荷を提供するように動作可能である。ハイブリッド行列乗算器は、ハイブリッド積和演算回路のアレイと、累積値を加算して行列値を生成するように動作可能な加算器とを含む。マトリックス値と加算器はデジタルまたはアナログである。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、行列乗算の処理アーキテクチャ、デバイス、および方法に関し、特にハイブリッド積和演算回路に関する。
【背景技術】
【0002】
行列の乗算は、多くの数学計算において重要な演算である。例えば、線形代数学では、行列の乗算を用いることにより微分方程式のような連立一次方程式を解くことができる。このような計算方法は、例えばパターンマッチング、人工知能、解析幾何学、工学、物理学、自然科学、コンピュータサイエンス、コンピュータアニメーション、経済学などに応用されている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
行列の乗算は通常、保存されたプログラムを実行するデジタルコンピュータで行われる。プログラムは実行される演算を記述し、コンピュータ内のハードウェア、例えばデジタル乗算器や加算器が演算を実行する。いくつかの計算機システムでは、特別に設計されたハードウェアが計算速度を高速化することができる。アプリケーションによっては、特にセーフティクリティカルなタスクのように、有用な出力を有用な時間で提供するためにリアルタイム処理が必要なものもある。さらに、携帯機器に搭載されるアプリケーションは、使用できる電力が限られている。このような高速計算システムにもかかわらず、大きな行列と高いデータレートの問題を解くには時間がかかり、必要以上の電力を消費する可能性がある。そのため、より高速かつ低消費電力で行列の乗算を実行できるコンピューティングハードウェアアクセラレータが必要とされている。
【課題を解決するための手段】
【0004】
本開示の実施形態は、特に、積和演算を使用して行列乗算を実行するためのハイブリッドコンピューティングハードウェアアクセラレータを提供することができる。本開示のコンピューティングハードウェアアクセラレータは、アナログ積和演算器を備えたデジタルバイナリシングルビット乗算器から構成される。シングルビット乗算器のデータ値はそれぞれデジタルメモリに格納され、シングルビット乗算結果はキャパシタに電荷として格納される。コンデンサの電荷は、値を合計(累積)するために結合され、積和演算を提供する。コンデンサの電荷を組み合わせることで、演算はほぼ瞬時に行われ、導体内の電荷が流れる速度に依存し、外部電力を必要としない。したがって、本開示の実施形態は、非常に高速かつ低電力の積和演算回路を提供することができる。電荷は電子システムにおいてQと表記されるため、本明細書では各シングルビット積和演算回路をqmacと呼び、デジタル乗算とアナログ積算を使用するハイブリッド回路である。
【0005】
本開示の実施形態によれば、ハイブリッド積和演算回路は、シングルビット積和演算回路のアレイを備え、各シングルビット積和演算回路は、(i)第1のシングルビット値を記憶するための第1の記憶素子と、(ii)第2のシングルビット値を記憶するための第2の記憶素子と、を備える、(iii)積を計算するために第1のシングルビット値に第2のシングルビット値を乗算するためのビット乗算回路と、(iv)アナログストレージ回路であって、ビット乗算回路は、積を代表する電荷をアナログストレージ回路に蓄えるように動作可能である、アナログストレージ回路と、を備える。シングルビット積和演算回路のアレイは、各アナログストレージ回路に蓄えられた電荷を結合して、積の合計を代表する累積電荷を提供するように動作可能である。アナログストレージ回路はキャパシタとすることができる。
【0006】
いくつかの実施形態によれば、ハイブリッド積和演算回路は、ビット乗算回路からアナログストレージ回路に電荷を転送するために第1のモードで動作可能であり、ビット乗算回路をアナログストレージ回路から分離し、蓄えられた電荷を提供するためにアレイのアナログストレージ回路を一緒に接続するために第2のモードで動作可能である、ビット乗算回路およびアナログストレージ回路に接続されたスイッチ回路を備える。いくつかの実施形態は、アレイのアナログストレージ回路から電荷を除去するように動作可能な、アレイのアナログストレージ回路に接続されたクリア回路を備える。いくつかの実施形態では、ビット乗算回路は機能ANDゲートであるか、またはANDゲートの機能を実行する。
【0007】
本開示のいくつかの実施形態において、ハイブリッド積和演算回路は、アレイ内のアナログストレージ回路に蓄えられた電荷をデジタル累積値に変換するアナログ/デジタル変換器を備える。いくつかの実施形態は、デジタル累積値に2の累乗を乗算するシフト回路またはシフト電気接続を備える。いくつかの実施形態は、デジタル累積値を加算してデジタル行列値を生成するように動作可能なデジタル加算器を備える。デジタル加算器はパイプライン接続可能である。
【0008】
いくつかの実施形態では、並列接続されたqmacs10のアナログ回路16の出力を変換するアナログ/デジタル変換器は存在せず、ハイブリッド積和演算回路のアレイの出力の加算は、蓄えられた電荷を加算してアナログ行列値を生成するように動作可能なアナログ加算器によって実行される。いくつかの実施形態は、蓄えられた電荷を2のべき乗で乗算するために、アレイ内のアナログストレージ回路に接続された電圧乗算器から構成される。このような加算および乗算は、アナログ行列値を提供するように動作可能なアナログストレージ回路に接続されたオペアンプ入力を有する加算器として構成されたオペアンプによって実行することができる。オペアンプのオペアンプ入力は、オペアンプ入力を2のべき乗で乗算または除算するように構成することができる。一部の実施形態は、アナログ行列値を変換してデジタル行列値を生成するアナログ/デジタル変換器を備え、オペアンプの出力がデジタル化される。
【0009】
いくつかの実施形態では、ビット乗算回路は、直列に接続された複数のスイッチ(例えば、MOSトランジスタの対からなる直列スイッチ回路)と、正の制御信号によって制御される第1MOSトランジスタと、同じ制御信号の反転(負)バージョンによって制御される第2MOSトランジスタとから構成される。直列に接続されたスイッチの1つはウェイト値によって制御され、もう1つはウェイト値と入力値の行列乗算を表す入力値によって制御される。
【0010】
本開示の実施形態によれば、ハイブリッド行列乗算器は、デジタル記憶素子と、デジタル値を記憶するように動作可能なデジタル記憶素子の各々と、記憶されたデジタル値を乗算して積を生成するための乗算回路と、積を記憶するように動作可能なアナログストレージ回路とを備える。電圧接続は、デジタル記憶素子、乗算回路、およびアナログストレージ回路を動作させるための電力を供給することができる。いくつかの実施形態では、電源接続は、デジタル記憶素子、乗算回路、およびアナログストレージ回路を動作させるための電力を供給し、1V以下の電圧(例えば、500mV以下、100mV以下、50mV以下、または10mV以下)を有する。乗算回路は、一対のMOSトランジスタからなる直列接続されたスイッチで構成することができる。
【発明の効果】
【0011】
本開示の実施形態は、積和演算を使用して行列乗算を実行する、高速、高効率、低消費電力、小型のハイブリッドハードウェアアクセラレータを提供する。
【図面の簡単な説明】
【0012】
【
図1A】本開示の実施形態を理解する上で有用な行列乗算演算を数学的に示している。
【
図1B】本開示の実施形態を理解する上で有用な行列乗算演算を数学的に示している。
【
図1C】本開示の実施形態を理解する上で有用な簡略化されたコンピュータプログラムによる行列乗算演算を示す。
【
図1D】本開示の実施形態を理解する上で有用な簡略化されたコンピュータプログラムによる行列乗算演算を示す。
【
図2】本開示の例示的実施形態によるシングルビット積和演算回路の機能回路図である。
【
図3】本開示の例示的実施形態による、
図2に示したシングルビット積和演算回路の1次元アレイの回路図である。
【
図4A】本開示の例示的実施形態による、スイッチ回路およびクリア回路を備えたシングルビット積和演算回路の機能回路図である。
【
図4B】本開示の例示的実施形態による
図4Aの機能概略図の抽象図である。
【
図4C】本開示の例示的実施形態による、
図4Aのシングルビット積和演算回路を動作させるためのタイミング図である。
【
図5】本開示の例示的実施形態による、
図4Aに示すシングルビット積和演算回路の1次元アレイの概略図である。
【
図6】本開示の実施形態を理解する上で有用な乗算積算値による乗算演算をグラフ化したものである。
【
図7】本開示の例示的実施形態による、デジタル合計回路を備えたシングルビット積和演算回路の2次元アレイの概略図である。
【
図8】本開示の例示的実施形態によるアナログ和算回路を備えたシングルビット積和演算回路の2次元アレイの概略図である。
【
図9】本開示の例示的実施形態によるアナログ和算回路の回路図である。
【
図10】本開示の例示的実施形態によるアナログ和算回路の回路図である。
【
図11A】本開示の例示的実施形態によるベクトル行列ハイブリッド積和演算回路の回路図である。
【
図11B】
図11Aのベクトル行列ハイブリッド積和演算回路における行列値を示す図である。
【
図12】本開示の例示的実施形態による、
図8に示すようなアナログ合計回路を備えたシングルビット積和演算回路の2次元アレイからなるベクトル行列ハイブリッド積和演算回路の回路図である。
【
図13】本開示の例示的実施形態による低消費電力シングルビット乗算を示す、アナログ電圧で制御されるカスケード接続されたスイッチの概略図である。
【
図14】本開示の例示的実施形態による、低電力アナログ電圧で制御されるスイッチの概略図である。
【発明を実施するための形態】
【0013】
本開示の特定の実施形態は、各々がシングルビット値を記憶する2つのデジタルシングルビットバイナリ記憶素子と、2つのシングルビット値を乗算して積を計算する乗算器と、積を電荷(または電圧)として保持するためのコンデンサなどのアナログ電荷記憶素子とを備える複数のシングルビットハイブリッド積和演算回路(それぞれをqmacと称す)に関する。qmacsの1次元配列は、シングルビットの積の1次元配列(ベクトル)を計算し、合計することができる。qmacsの2次元配列は、2つのマルチビットデジタル乗算子の積を計算することができる。マルチプリカンドとは、乗算された積を計算するために別の値と乗算される値のことである。マルチビット乗算を計算するためのqmacsの2次元配列のサイズはNxM-1とすることができ、Nは2つのデジタル乗算の一方のビット数、Mは2つのデジタル乗算の他方のビット数である。M個の値を持つ2つの線形ベクトル(数値の1次元配列)に対するベクトル行列の乗算と累積は、M個の2次元配列で計算し、1つの値として累積することができる。
【0014】
図1Aに示すように、A、B、Cを行列とする計算C=AxBは行列の乗算である。Aをm×n行列、Bをn×p行列とすると、Cはm×p行列であり、k=1~n、i=1~m、j=1~pのとき、C
i,j=ΣA
i,k・B
k,jとなる。k=1~Nのとき、AとBの積の和演算は積和(mac)演算である。したがって、行列の乗算は、サイズkの一連の(i×j)積和演算であり、各積和演算は行列Cの1つの値を提供する。
図1Bは、CとBが線形(例えば1次元またはベクトル)行列である場合に、p=1である計算C=AxBを示す。
図1Cは、
図1Aの行列計算を示す簡略化されたソフトウェアプログラムであり、
図1Dは、
図1Bの行列計算を示す簡略化されたソフトウェアプログラムである。k=0から(n-1)までのループは、n回の乗算とn回の加算を必要とする積和演算である。
【0015】
本開示の実施形態によれば、
図2および
図3に示すように、ハイブリッド積和演算は、qmacs10のアレイによって実行することができ、各qmacs10は、第1ビットAを記憶するための第1デジタルシングルビットバイナリ記憶素子12と、第2ビットBを記憶するための第2デジタルシングルビットバイナリ記憶素子12と、乗算子AおよびBを乗算し、ビットキャパシタ16(アナログストレージ回路16)に電荷として記憶される積を生成するためのビット乗算器14(ビット乗算回路14)と、を備える。いくつかの実施形態では、記憶素子12は、
図2の挿入図に示すように、SRAMセル、DRAMセル、フリップフロップ(例えば、Dフリップフロップ)、または入力と出力とが接続された一対の反転器である。いくつかの実施形態では、ビット乗算器14は、AおよびBの両方が正(例えば、1)である場合にのみ正の値(例えば、1)を提供するANDゲートであり、したがって乗算を提供する。ANDゲートは、
図2に示すように、ソースがA用記憶素子12に接続され、ゲートがB用記憶素子12に接続され(またはその逆)、乗算子AとBの積が1の値のときにビットキャパシタ16に蓄えられた電荷Qを供給するトランジスタとして実装することができる。AまたはBの値が異なるqmacs10に対して同じである場合、定数用の記憶素子12は、複数のqmacs10によって共有され得る(例えば、単一の記憶素子12は、後述する
図7に示されるように、複数のqmacs10に入力値を提供し得る)。アナログ回路設計およびデジタル回路設計の知識を有する者には理解されるように、
図2および
図3は簡略化された設計であり、非常に低い電圧および電力で動作することができる後述の
図13および
図14に示されるものなど、はるかに複雑な設計が本開示の実施形態として含まれる。例えば、qmac10によって使用される電力を低減し、回路速度を増加させるために、ビットコンデンサ16に蓄えられる電荷量を非常に小さくすることができる。ビットコンデンサ16を非常に小さくすることで、集積回路におけるビットコンデンサ16の面積を低減することができる。したがって、いくつかの実施形態では、ビット乗算器14は、積和演算動作の正確さと精度を維持するために、ビットコンデンサ16に電荷を蓄えるための電流を時間にわたって非常に正確に制御する。したがって、ビット乗算器14は、例えば注意深く較正されたタイミング信号および電圧に応答して、ビットキャパシタ16に蓄えられる電荷の量を非常に正確に制御するように設計することができる。
【0016】
図3は、ハイブリッド積和演算回路20において4つの積を合計するために並列に接続されたビットキャパシタ16(アナログストレージ回路16)を有する4つのqmacs10を示している。4つの並列qmacs10は、4つのシングルビットA値にそれぞれシングルビットB値を乗算する積和演算を提供する。シングルビットのB値は同じでも異なっていてもよい。したがって、
図3は、4つのシングルビットのバイナリ値(例えば、
図1A~1Dの数学的図解ではk=4)に対する積和演算を実行するための回路を示す。このように、シングルビット積和演算回路10のアレイは、各アナログストレージ回路16に蓄えられる電荷を結合して、qmacs10の積の和を代表する累積電荷を提供するように、共に動作可能である。
【0017】
並列接続されたビットコンデンサ16上の電荷の合計は、アナログデジタルコンバータ(ADC)30でデジタル値に変換されるか、またはさらなる計算のためのアナログ値として使用されるアナログ累積値出力Oを提供する。並列コンデンサは、並列接続されたコンデンサの静電容量の合計に等しい静電容量を持つため、電圧または電荷の絶対値(出力O)は、コンデンサの数nによってスケーリングされなければならない。コンデンサの電荷は電圧×静電容量に等しいので(Q=CV)、一定の電荷に対して静電容量が増加すれば、電圧はそれに応じて減少する。例えば、全てのコンデンサが1個の値に相当する電荷Qを蓄える場合、その値の合計は4個(
図3の例)になるが、4個のコンデンサは電気的に並列接続されているため、電圧は1個分のままである。したがって、電圧出力はコンデンサの数でスケーリングされなければならない(例えば、
図3の図では4倍)。
【0018】
ハイブリッド積和演算回路は、例えばデジタル加算器を使用したデジタル等価回路よりも少ない電力で動作させることができる。小さなビットキャパシタ16からの正味の電流または電荷リークは非常に小さくすることができ、アナログストレージ回路16および他のアナログ演算は、例えば1ボルト以下(例えば、500mV以下、100mV以下、50mV以下、または10mV以下)であり、従来のデジタルロジック回路に使用される電圧(例えば、5V、3.6V、3.3V、または1.65V)よりも低い、非常に低い電圧で動作することができる。本開示のいくつかの実施形態は、実質的に10mVで動作することができる。
【0019】
図2および
図3の回路は、qmacs10および複数の積和演算回路のアレイにおけるそれらの実装を簡略化して表したものである。前述のように、ビットキャパシタ16に蓄えられる電荷の正確な制御は、積和演算の精度と正確さを維持するのに役立つ。
図4Aに示されるように、qmac10のより複雑な回路は、ビット乗算器14の出力およびビットコンデンサ16に接続されたスイッチ回路18(図ではSとも指定される)を用いて、qmac10のアレイにおけるqmac10間の電気的接続を制御する。スイッチ回路18がオンのとき、ビットAとBの積を表す電荷Qは、スイッチ回路18の左トランジスタを介してビットキャパシタ16に蓄えられる。スイッチ回路18がオフのとき、左トランジスタがオフとなり、スイッチ回路18の中央トランジスタからなるインバータがスイッチ回路18の右トランジスタからなる接続スイッチに正信号を印加し、ビットコンデンサ16を並列接続する。
【0020】
図4Aに示されるスイッチ回路18は簡略化された回路であり、スイッチ機能を提供するためにより複雑な回路を実装することができ、そのような複雑な回路も本開示に含まれる。ここで、第1のモードでは、スイッチ回路18はオンであり、ビット乗算器14による乗算の積は、各qmac10内のビットキャパシタ16に電荷を転送するために個別に印加される。第2のモードでは、スイッチ回路18はオフであり、ビットキャパシタ16は並列に接続され、各qmac10のビットキャパシタ16上の電荷Qはビット乗算器14から分離され、累積値出力Oを提供するために合計される。
図4Bは、
図4Aのシングルビット積和演算回路10を抽象化したものであり、AおよびBはシングルビットデジタル記憶素子12、Mはビット乗算器14、Sはスイッチ回路18、Cはクリア回路19である。
【0021】
図4Cは、qmac10の積和演算サイクルを示している。負荷信号Aおよび負荷信号Bは、例えばコンピュータまたは他のステートマシンコントローラによって提供される記憶素子12に対応する値を格納するように設定され、ビット乗算器14によって乗算される。同時に、クリア信号がハイ、スイッチ信号がローとなり、ビットコンデンサ16を分離してクリアする。ビットコンデンサ16がクリアされると、クリア信号がローに設定され、スイッチ信号がハイに設定されて、AとBの積を表す電荷Qをビットコンデンサ16に預けることができる。電荷Qがビットコンデンサ16にロードされると、スイッチ信号がローに設定され、ビット乗算器14をビットコンデンサ16から分離し、全てのビットコンデンサ16を並列に接続し、それによってビットコンデンサ16上の電荷Qを合計してOutput Valid(出力値)Oを提供する。出力値Oに等しい、合計された電荷Qは、適切にスケーリングされ、アナログデジタル変換器30でデジタル値に変換されるか、アナログ値としてさらなる計算に使用される。スイッチ回路18が第1モードと第2モードとの間で切り替わるとき、全体の動作は2サイクルで行われることになる。
【0022】
図5は、
図4Bの抽象的表現を用いてハイブリッド積和演算回路20を形成するqmacs10のアレイを示す。いくつかの実施形態において、単一のクリア回路19は、スイッチ回路18がオフのときに接続されたビットキャパシタ16の全てから電荷をクリアするために使用することができるが、ビットキャパシタ16間に接続されたスイッチ回路18は、ビットキャパシタ16の全てに対する電荷除去を妨害することができる。いくつかの実施形態では、クリア回路19は各qmac10に設けられ、クリア回路19は、スイッチ回路18と同様に、ハイブリッド積和演算回路20において共通に制御される。
【0023】
図6は、2バイナリ、マルチデジット、マルチビットの値に対する完全な乗算を示している。
図6は、4ビットを有する値の場合を示しているが、乗算されるビットの数に対応するqmacs10の数を有するハイブリッド積和演算回路20に対しては、任意の数のビットを使用することができる。各ハイブリッド積和演算回路20のqmacs10の数はAのビット数に対応し、ハイブリッド積和演算回路20の数は同時に行う積和演算の数に対応する。qmacs10の数がAのビット数より少ない場合、または同時に行う積和演算計算の数がBのビット数より少ない場合、部分的な計算を行い、ステートマシンのような外部のコンピュータまたはコントローラの制御下で生成物を保存し、結合することができる。
【0024】
図6の4ビットの例に示すように、示された積の各列は、値Bのシングルビットに値Aのビットを乗算したものである。
図6では、各列の積の相対的な大きさ(場所)を表すために、紙に手書きで書かれた乗算の従来のように、列が互いに対して空間的にシフトされている。各列21の積(乗算値)は、
図5に示すように、各ハイブリッド積和演算回路20において合計され、累積結果(合計出力値O)を形成する。積の各列21は、異なるハイブリッド積和演算回路20で計算され、合計され得る。そして、ハイブリッド積和演算回路20の積算結果(積算出力値O)が合計(加算)され、マルチビット乗算の最終値が得られる。
【0025】
積の各列21の乗算および累積は、qmacs10の1次元アレイによって実行することができる。
図7に示すように、qmacs10の各列は、共通のB記憶素子12を共有するハイブリッド積和演算回路20を形成する。各ハイブリッド積和演算回路20のqmacs10のアレイ(この例では、
図6に図示された乗算に対応する)は、出力値Oとして積の列21を計算し合計する。各ハイブリッド積和演算回路20の出力値Oは加算することができる。積の各列21は異なる位取り値(相対的な大きさ)を有するので、積の各列21の値は、加算される前に、それらの位取り値、例えば、2、4、8、16、32、または64で乗算するために1~6位で乗算するようにスケーリングされなければならない。複数の乗算演算は、例えば、ビット値が複数の入力値の乗算に共通する重みを表す場合、ビットが変化しないビット値(B記憶素子12)を再ロードすることなく実行することができる。
【0026】
ハイブリッドマルチビット乗算器22を形成するハイブリッド積和演算回路20のアレイは、従来のデジタル回路よりもはるかに少ないサイクルを有する極めて高速な動作を提供する。さらに、出力値Oを合計するための加算ステップ(デジタル的に行われる場合)は、段階的に分割され(例えば、一度に値の組を加算する)、パイプライン化され得るので、動作はさらに高速になり、異なる値に対する積和演算動作は、例えば、コンピュータまたはステートマシンコントローラの制御下で、時間的にオーバーラップされ得る。
【0027】
本開示のいくつかの実施形態では、ハイブリッド積和演算回路20からの出力値Oの加算は、デジタル的に計算される。いくつかの実施形態では、ハイブリッド積和演算回路20からの出力値Oの加算は、アナログ回路を用いて計算される。
図7に示すように、出力値は、例えばレジスタまたは他のメモリに格納されたデジタルビット値を提供するために、アナログ-デジタル変換器30で変換され、デジタルビット値は、例えば互いに対してシフトすることによってスケーリングされ(各シフトは2のべき乗に対応する)、スケーリングされたビット値は、デジタル加算器を使用して合計される。
【0028】
図8に示す例では、各ハイブリッド積和演算のアナログ積算結果(qmacs10の列)は電圧(または電荷)であり、アナログ積算の場所に対応する量が(例えば、電圧乗算器VMによって)乗算され、乗算されたアナログ積算は、例えばアナログ加算器を使用して加算され、最終的な積算はアナログデジタル変換器30でデジタル値に変換される。このような実施形態では、全計算を2スイッチサイクル(クリアサイクルまたはロードサイクルを除く)で行うことができ、従来の実施形態と比較して非常に高速な動作を実現します。
図8は、各qmac10に個別の記憶素子12を備えた実施形態を示す。
【0029】
アナログ電圧の乗算および加算は、いくつかの実施形態では、加算モードに構成されたオペアンプ(オペアンプ)40を使用して実施することができる。
図9は、反転和算(加算)オペアンプ40を示している。オペアンプ40の出力Voは、各電圧V
1~V
Nの和にR’/R
nの比を掛けたものに等しく、nは特定の列であり、Nは加算される製品の列21の数(例えば、
図7の例では7)である。各電圧はqmacs10の列の出力Oに対応する。例えば、R1は、R’/R
1=1/64、R’/R
2=1/32、R’/R
3=1/16、R’/R
4=1/8、R’/R
5=1/4、R’/R
6=1/1、R’/R
7=1となるように、加算される最低位値に対応することができる。オペアンプ40の反転出力は、アナログデジタル変換器30を用いてデジタル値に変換し、適切にスケーリングすることができる。
【0030】
図10は、非反転和(加算)オペアンプ40を示している。オペアンプ40の出力Voは、各電圧V
1~V
Nの和に、R
1~R
Nがそれぞれ等しいR’/Rの比を掛けたものに等しい。電圧値V1~VNは、抵抗で実装された分圧器でスケーリングすることができる。例えば、V1に接続された抵抗器は63:1の比を有することができ、V2に接続された抵抗器は31:1の比を有することができ、V3に接続された抵抗器は15:1の比を有することができ、そして、付加された値の場所に対応するように電圧をトップスケールすることができる。オペアンプ40の出力は、(R+R’)/R(例えば64)の比率でスケーリングされ、アナログ/デジタル変換器30を使用してデジタル値に変換することができる。
【0031】
アナログサミングを有する
図7および
図8の実施形態は、より高速な動作を提供することができ、デジタルサミングを有する
図6の実施形態は、より高精度を提供することができる。本開示の実施形態は、図示されたビット数によって限定されない。例えば、ハイブリッド積和演算回路20は、64、128、256、512、1024、2048、4096、8192、または16384個以上のqmacs10を有することができ、同数のハイブリッド積和演算回路20をアレイに採用して、多くのビットによる高速乗算を提供することができる。本開示の実施形態は、従来のコンピュータまたはグラフィックプロセッサに対するハードウェアアクセラレータとして提供することができる。データは、入力および出力に2つ以上のシフトレジスタを有するパイプライン方式でハードウェアアクセラレータに供給することができる。ハイブリッド積和演算回路20のアレイのハードウェア実装は、入力ベクトルのサイズに効率的に対応するサイズでなければならない。ハイブリッド積和演算回路20のアレイがタスクに対して大きすぎる場合、回路の多くが使用されない(例えば、qmacs10の数が大きすぎる)。ハイブリッド積和演算回路20のアレイが小さすぎる場合、ベクトル乗算はより小さいベクトルに分解されなければならない。
【0032】
図6に示すように、シングルビット積和演算回路10の2次元乗算アレイは、マルチビット乗算を実行することができる(例えば、
図7および
図8に示すように)。ハイブリッド行列積和演算回路24を形成する、
図8および
図9のような複数のアレイからなるハイブリッドマルチビット乗算器22は、ベクトル乗算全体を計算することができる。ベクトル積和演算(例えば、
図1Bに示すような)の各マルチビット乗算は、(
図7に示すように、またはアナログ和出力値Oのアナログ-デジタル変換後に)デジタル積を生成することができ、デジタル積は、デジタル加算器を使用してデジタル加算することができる。いくつかの実施形態では、ベクトル積和演算(例えば、
図1Bに示すような)の各マルチビット乗算は、アナログ積(
図8に示すような出力値O)を生成することができ、アナログ積は、
図1~
図6に示すような同様の回路を使用して加算することができる。ビット乗算器14と同様の回路を用いてキャパシタ(例えば、ビットキャパシタ16と同様であるが、より大きな電荷に対してより大きな記憶容量を有するもの)にアナログ積P(
図8に示す)を蓄えることができる。
図12に示すように、
図5のものと同様のスイッチおよびクリア回路18、19は、キャパシタに電荷Qを蓄えることができ、キャパシタを並列に接続することによって電荷を合計し、合計された電荷をアナログデジタル変換器30で変換して、1サイクルでベクトル行列乗算全体を提供することができる。
図11Aはハイブリッド行列積和演算回路24を示し、
図11Bはハイブリッドマルチビット乗算器22とベクトル積和演算計算における被乗数を関連付ける。
【0033】
本開示の実施形態は、例えば10mVから1Vの電圧を使用する非常に低電圧の積和演算回路10を提供することができる。従来のANDゲートを使用するビット乗算器14は、アナログストレージ回路16(例えば、1.65~5V)に蓄えられる電荷Qを適切に制御できるビット乗算回路を実装するために、例えば、比較的高い電圧で動作する6つの比較的大きなトランジスタを必要とし得る。対照的に、
図13に示すように、本開示のビットマルチプライヤ14は、比較的低い電圧(例えば、1Vを超えず、10mVと低い)および低電力で動作し、例えば、4つの比較的小さなトランジスタのみでアナログストレージ回路16に蓄えられる電荷Qを適切に制御することができる直列接続された直列スイッチ回路15を構成することができる。
【0034】
図13に示すように、一連の3つの直列スイッチ回路15とアナログストレージ回路16により、
図4Aおよび
図4Bに示した回路と機能的に同様のqmac10を実現することができる。各シリアルスイッチ回路15は、2つの差動電圧入力VおよびVbar(ここでVbarはVの反転値)、2つの電圧入力InおよびInbar(ここでInbarはInの反転値)、および出力Oを有する。したがって、
図13および
図14の信号A、B、およびスイッチ(以下でさらに詳細に説明する)の各々は、差動信号である。第1の直列スイッチ回路15は、2つの電圧入力として基準電圧V
REFP(例えば、V
REF、10mVのような高い値または正の値)およびその反転値V
REFN(例えば、0mVのような低い値または負の値)を有し、2つの入力値として値A(例えば、重み値)およびその反転値Abarを有する。シリアルスイッチ回路15Aの
図13の挿入図に示すように、Aがハイ(例えば正または10mV)であり、Abarが結果的にロー(例えば0mV)である場合、出力Oは、非破線接続で示されるように、V
REFである。直列スイッチ回路15Bは、
図13の挿入図に示すように、Aがロー(例えば、負または0mV)であり、Abarが結果的にハイ(例えば、10mV)である場合、出力Oは、非破線によって示されるように、V
REFNである。
【0035】
したがって、Aが正である場合、Oは正であり、Aが負である場合、Oは負である。直列の第2直列スイッチ15は、入力値Bとその反転値Bbarを有し、第1直列スイッチ15からの値OをVREFP正値とし、VREFNを反転電圧値(例えば、0ボルト)とする。したがって、Oがロー(負)であれば、Bがどのような値であっても、第2のシリアルスイッチ回路15からの出力Pはロー(負)となる。Oがハイ(正)であり、Bがハイ(正)であれば、第2のシリアルスイッチ回路15からの出力Oはハイ(正)となり、Bがローであれば、第2のシリアルスイッチ回路15からの出力Pはロー(負)となる。このように、最初の2つのシリアルスイッチ回路15は、少ない回路と電力でAND機能を実行する。
【0036】
第3のシリアルスイッチ回路15は、スイッチ回路18を実装するために使用することができ、入力スイッチ値とその反転(
図4A、4Bのスイッチ値に対応)、V
REF値として第2のシリアルスイッチ15からの値Oを取り、反転電圧値として共通のV
SUM接続を有する。したがって、スイッチがハイの場合、出力Oはアナログ蓄電回路16を充電する。スイッチがローの場合、アナログストレージ回路16上の電荷Qは、qmacs10のアレイ内の他のアナログストレージ回路16に共通に接続され(例えば、
図3にアナログqmac10アレイ出力として示されるように)、和演算を提供する。
【0037】
図14は、3つの直列接続された直列スイッチ回路15からなる低電圧qmac10のいくつかの実施形態を示している。各スイッチ回路15は、個別の差動入力と共通出力を有する一対の単純MOS(金属酸化膜半導体)トランジスタから構成される。単純なMOSトランジスタの対の一方は正の制御信号によって制御され、他方は同じ制御信号の反転(負)バージョン、例えば任意のシングルビット記憶素子12の正負出力(例えば、
図2に関して図示および説明したようなDフリップフロップまたはインバータの対)によって制御される。回路の機能は、
図13に関して上述した通りである。このような一連の直列スイッチ回路15は、はるかに低い電圧(例えば、1パーセントまたは1パーセント未満、例えば0.624パーセント、または1.65ボルトの代わりに10mV)で動作し、したがってはるかに少ない電力を必要とする、より少ない、より単純なトランジスタを必要とすることができる。アナログストレージ回路16の組み合わされた(付加された)電圧は、以下のようにすることができる:
V
SUM=((n*V
REFP)(N-n)*V
REFN))/N.
ここでV
REFN=0ボルト:
V
SUM=(n*V
REFP)/N、
ここで、nはコンデンサの数、Nは一列に接続されたqmacs10の数である。V
SUMは上記のようにスケーリングまたは変換される(
図14には明確な回路19は含まれていない)。
【0038】
したがって、本開示のいくつかの実施形態によれば、ハイブリッド行列乗算器は、デジタル記憶素子12と、デジタル値を記憶するように動作可能なデジタル記憶素子12の各々と、記憶されたデジタル値を乗算して積を生成するための乗算回路14と、積を記憶するように動作可能なアナログストレージ回路16と、デジタル記憶素子12、乗算回路14、およびアナログストレージ回路16を動作させるために電力を供給するための電力接続(例えば、VREFPおよびVREFN)とを備える。電源接続は、1V以下、500mV以下、100mV以下、50mV以下、または10mV以下の電圧を有することができる。ビット乗算回路14は、直列接続されたスイッチ15で構成することができる。
【0039】
いくつかの実施形態では、ハイブリッド行列積和演算回路24、ハイブリッドマルチビット乗算器22、またはハイブリッド積和演算回路20のハードウェア実装は、特定のアプリケーションに望まれる計算に正確に一致しない。このようなアプリケーションでは、計算を、利用可能なハードウェアによりよく適合するサブ問題に分割し、結果を組み合わせて所望の計算を提供することができる。サブ問題は、ハードウェアが時分割または時分割多重化されるように、時間的に順次実行することができる。値の一部(例えば乗数Bのビット)は、複数のハードウェア演算のために記憶素子12に格納することができ、それによりハードウェアで使用される電力と時間を削減することができる。
【0040】
本開示の実施形態は、非常に高いレートで非常に少ないエネルギーを使用するベクトル積和演算計算を可能にする。プログラムのn回のループ(例えば、
図1Cおよび
図1Dに示すように、プログラムの実行にそれぞれ複数のマシンコードサイクルが必要)を必要とするのではなく、計算全体が1サイクルで行われる。例えば機械学習アプリケーションにおける多くの大きな行列演算は、行列内に多くのゼロ値を有し、マッチング問題の解を反復するために比較的低いビット精度が要求される。したがって、本開示の実施形態は、そのようなアプリケーションのための効率的な回路を提供する。
【0041】
本開示の実施形態は、図示され、本明細書で説明される特定の例に限定されない。熟練した設計者であれば、説明した動作を実施するためにアナログ回路およびデジタル回路の様々な実装を採用することができ、そのような実装が本開示の実施形態に含まれることを容易に理解するであろう。
【0042】
本開示の実施形態は、ニューラルネットワーク、パターンマッチングコンピュータ、または機械学習コンピュータにおいて使用することができ、低減された電力およびハードウェア要件で効率的かつタイムリーな処理を提供する。このような実施形態は、コンピューティングアクセラレータ、例えば、ニューラルネットワークアクセラレータ、パターンマッチングアクセラレータ、機械学習アクセラレータ、または静的または動的処理ワークロード用に設計された人工知能コンピューティングアクセラレータを構成することができる。
【0043】
実施形態の特定の実施態様を説明してきたが、当業者には、本開示の概念を組み込んだ他の実施態様を使用することができることが今や明らかになるであろう。したがって、本開示は、特定の実施態様に限定されるべきではなく、むしろ、以下の特許請求の範囲の精神および範囲によってのみ限定されるべきである。
【0044】
本明細書を通じて、装置およびシステムが特定の要素を有する、含む、または構成されるものとして記載される場合、またはプロセスおよび方法が特定のステップを有する、含む、または構成されるものとして記載される場合、さらに、開示された要素から本質的に構成される、または構成される開示された技術の装置およびシステムが存在すること、および開示された処理ステップから本質的に構成される、または構成される開示された技術によるプロセスおよび方法が存在することが企図される。
【0045】
開示された技術が動作可能である限り、ステップの順序や特定の動作を実行する順序は重要ではないことを理解すべきである。さらに、状況によっては、2つ以上のステップまたは動作を同時に実施することもできる。本開示は、その特定の実施形態を特に参照して詳細に説明されてきたが、以下の特許請求の範囲の精神および範囲内で、変形および修正が効果的に行われ得ることが理解されるであろう。
【符号の説明】
【0046】
C クリアサーキット
M 乗算回路/乗算器
O 出力値
S スイッチ/スイッチ回路
VM 電圧乗算器
10 qmac/シングルビット積和演算回路
12 シングルビット記憶素子
14 ビット乗算器/ビット乗算回路
15、15A、15B シリアルスイッチ回路
16 キャパシタ/アナログストレージ回路
18 スイッチ回路
19 リアサーキット
20 ハイブリッド積和演算回路
21 積の列
22 ハイブリッドマルチビット乗算器
24 ハイブリッドマトリクス積和演算回路
30 アナログデジタルコンバータ
40 オペアンプ
【国際調査報告】