(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-01-24
(54)【発明の名称】反復ハイブリッド行列乗算器
(51)【国際特許分類】
G06F 17/16 20060101AFI20250117BHJP
G06G 7/60 20060101ALI20250117BHJP
G06G 7/184 20060101ALI20250117BHJP
G06G 7/16 20060101ALI20250117BHJP
G06G 7/14 20060101ALI20250117BHJP
【FI】
G06F17/16 M
G06G7/60
G06G7/184
G06G7/16
G06G7/14
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024542276
(86)(22)【出願日】2022-01-25
(85)【翻訳文提出日】2024-09-12
(86)【国際出願番号】 IB2022050635
(87)【国際公開番号】W WO2023144577
(87)【国際公開日】2023-08-03
(81)【指定国・地域】
(71)【出願人】
【識別番号】523481115
【氏名又は名称】シンタラ アーゲー
【氏名又は名称原語表記】SYNTHARA AG
【住所又は居所原語表記】Josefstrasse 219 Zurich SWITZERLAND
(74)【代理人】
【識別番号】100134430
【氏名又は名称】加藤 卓士
(72)【発明者】
【氏名】アビナッシュ・グッタ
(72)【発明者】
【氏名】マヌ ヴィジャヤゴパラン・ナイール
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056AA05
5B056BB31
5B056BB71
(57)【要約】
ハイブリッド時分割反復積和演算回路は、積記憶回路と、第1入力値を受け取り、第2入力値を受け取り、第1入力値と第2入力値との積を生成し、その積を積記憶回路に記憶するように動作可能な乗算回路と、積算値を記憶するための積算値記憶回路と、積記憶回路と積算値記憶回路とを電気的に並列接続し、または積記憶回路と積算値記憶回路とを電気的に切り離すように動作可能な、積記憶回路と積算値記憶回路とを接続する積算スイッチとを備える。
【選択図】
図2
【特許請求の範囲】
【請求項1】
積記憶回路と
第1入力値を受け取り、第2入力値を受け取り、前記第1入力値と前記第2入力値との積を生成し、その積を積記憶回路に記憶するように動作可能な乗算回路と、
積算値を記憶する積算値記憶回路と
前記積記憶回路を前記積算値記憶回路に接続するアキュムレーションスイッチであって、前記積記憶回路と前記積算値記憶回路とを電気的に並列接続するように動作し、または前記積記憶回路を前記積算値記憶回路から電気的に切り離すように動作するアキュムレーションスイッチと、
を備えた時分割積和演算回路。
【請求項2】
入力される複数の前記第1入力値のうちの1つを選択するように動作可能な第1マルチプレクサをさらに含み、
前記乗算回路が、複数の第1入力値のうちの選択された1つを受け取り、第2入力値を前記第1マルチプレクサから受け取り、複数の第1入力値のうちの選択された1つと第2入力値との積を生成するように動作可能である、請求項1に記載の時分割積和演算回路。
【請求項3】
入力される複数の前記第2入力値のうちの1つを選択するように動作可能な第2マルチプレクサをさらに含み、
前記乗算回路が、前記第2入力値のうちの選択された1つを前記第2マルチプレクサから受け取り、前記複数の第1入力値のうちの選択された1つと前記第2入力値のうちの選択された1つとの積を生成するように動作可能である、請求項2に記載の時分割積和演算回路。
【請求項4】
前記積記憶回路および前記積算値記憶回路は、電荷を蓄積するアナログ記憶回路であることを特徴とする請求項1~3のいずれか1項に記載の時分割積和演算回路。
【請求項5】
前記積記憶回路と前記積算値記憶回路はキャパシタである請求項4に記載の時分割積和演算回路。
【請求項6】
前記乗算回路がシングルビット乗算回路である請求項1~5のいずれか1項に記載の時分割積和演算回路。
【請求項7】
前記乗算回路は、直列に接続された直列スイッチ回路で構成されている請求項1~6のいずれか1項に記載の時分割積和演算回路。
【請求項8】
前記アキュムレーションスイッチは、前記乗算回路のシリアルスイッチ回路とシリアルに接続されたシリアルスイッチ回路であることを特徴とする請求項7に記載の時分割積和演算回路。
【請求項9】
前記乗算回路は、直列に接続された直列スイッチ回路からなり、
前記乗算回路の直列スイッチ回路および前記アキュムレーションスイッチの直列スイッチ回路の1つ以上が差動スイッチであることを特徴とする請求項7または8に記載の時分割積和演算回路。
【請求項10】
前記アキュムレーションスイッチを操作して前記積記憶回路と前記積算値記憶回路を並列に接続すると、前記積算値記憶回路の積算値と前記積記憶回路の積とが結合され、前記積記憶回路と積算値記憶回路に記憶された合成値が得られる、請求項1~9のいずれか1項に記載の時分割積和演算回路。
【請求項11】
(i)第1入力値と第2入力値を乗算器に供給し、積算スイッチを切り換えて積を積記憶回路に記憶し、
(ii)前記アキュムレーションスイッチを切り換えて、前記積記憶回路と前記積算値記憶回路を電気的に並列接続し、積記憶回路の積と積算値を結合して結合値を提供する、制御回路を含む請求項1~10のいずれか1項に記載の時分割積和演算回路。
【請求項12】
請求項1~11のいずれか1項に記載の時分割積和演算回路と、
前記時分割積和演算回路の積算値を加算する加算器と、
を備えたイブリッド行列乗算器
【請求項13】
前記積算値がアナログ値であり、前記積算値をデジタル値に変換するアナログ/デジタル変換器を含み、前記加算器がデジタル加算器である、請求項12に記載のハイブリッド行列乗算器。
【請求項14】
前記積算値がアナログ値であり、前記加算器がアナログ加算器である、請求項12に記載のハイブリッド行列乗算器。
【請求項15】
a)Nビットを有するマルチビット値を提供するステップと、
b)請求項1から11のいずれか1項に記載の時分割積和演算回路を提供するステップと、
c)マルチビット値の入力ビットを提供し、前記乗算器に第2入力ビットを提供し、前記アキュムレーションスイッチを設定して、前記積記憶回路を前記時分割積和演算回路に接続し、前記積記憶回路を前記積算値記憶回路から切り離すステップと、
d)前記マルチビット値の前記入力ビットに前記第2入力ビットを乗算し、前記積記憶回路にビット積を形成するステップと、
e)前記アキュムレーションスイッチを切り替えて、前記積記憶回路を前記時分割積和演算回路から切り離し、前記積記憶回路を積算値記憶回路に接続し、積記憶回路内の積を蓄積値と結合して積算値記憶回路内に結合値を生成するステップと
f)前記マルチビット値の全ビットがビット順に供給され、前記マルチビット値の各ビットと前記第2入力ビットの積が生成されるまで、上記のc)~e)のステップをN回繰り返すハイブリッド行列乗算方法。
【請求項16】
a)Nビットを有する第1マルチビット値とMビットを有する第2マルチビット値を提供するステップと、
b)請求項1~11のいずれか1項に記載の時分割積和演算回路をM個提供するステップと、
c)前記第1マルチビット値の入力ビットを提供し、第2マルチビット値の第2入力ビットをM個の時分割積和演算回路の各々の乗算器に提供し、前記アキュムレーションスイッチを設定して、前記積記憶回路を前記時分割積和演算回路に接続し、前記積記憶回路をM個の時分割積和演算回路の各々の積算値記憶回路から切り離すステップと、
d)前記第1マルチビット値の入力ビットに第2入力ビットを乗算し、前記M個の時分割積和演算回路のそれぞれと前記積記憶回路に格納されたビット積を形成するステップと、
e)アキュムレーションスイッチを切り替えて、前記積記憶回路を前記時分割積和演算回路から切り離し、前記積記憶回路を前記積算値記憶回路に接続し、前記積記憶回路の積と、積算値とを合成して、前記M個の時分割積和演算回路のそれぞれの積算値記憶回路に合成値を生成するステップと、
f)前記第1マルチビット値の全てのビットがビット順に提供されるまで、前記第1マルチビット値のNビットのそれぞれについてステップc)~e)を繰り返すステップと、
g)前記M個の時分割積和演算回路のそれぞれの積算値をスケーリングするステップと、
h)前記M個の時分割積和演算回路のそれぞれの積算値を加算して積を生成するステップと、
を含むハイブリッド行列乗算方法。
【請求項17】
a)Nビットを有する第1マルチビット値とMビットを有する第2マルチビット値を提供するステップと、
b)請求項1から11のいずれか1項に記載の時分割積和演算回路を提供するステップと、
c)第1マルチビット値の入力ビットを提供し、第2マルチビット値の第2入力ビットを乗算器に提供し、積算スイッチを設定して、積算値記憶回路を時分割積和演算回路に接続し、積算値記憶回路を時分割積和演算回路の積算値記憶回路から切り離すステップと、
d)第1マルチビット値の入力ビットに第2マルチビット値の第2入力ビットを乗算し、積記憶回路に記憶されたビット積を形成するステップと、
e)積算スイッチを切り替えて、積算値記憶回路を時分割積和演算回路から切り離し、積算値記憶回路に接続し、積算値記憶回路の積算値と積算値を合成して、M個の時分割積和演算回路のそれぞれの積算値記憶回路に合成値を生成するステップと、
f)第1マルチビット値の全てのビットがビット順に提供されるまで、第1マルチビット値のNビットのそれぞれについてステップc)~e)を繰り返すステップと、
g)時分割積和演算回路の積算値をスケーリングして、スケーリングされた値を生成するステップと、
h)スケーリングされた値をマルチビット積に加算するステップと、
i)ステップc)~h)を繰り返してマルチビット積を生成するステップと、
を含むハイブリッド行列乗算方法。
【請求項18】
請求項1から11のいずれか1項に記載の時分割積和演算回路と、
積算値を記憶する記憶回路と、
(i)乗算器に第1入力値を供給し、第2入力値を供給し、積算スイッチを設定して、積算値記憶回路を乗算器に接続し、積算値記憶回路から積算値記憶回路を切り離すステップと、
(ii)積算スイッチを切り替えて、積算値記憶回路を時分割積和演算回路から電気的に切り離し、積算値記憶回路を積算値記憶回路に電気的に接続して、積算値記憶回路の積を積算値と結合し、積算値記憶回路および積算値記憶回路に記憶された結合値を提供するステップと、
を繰り返し順次行い、前記積算値をメモリ回路に保存するように動作する制御回路と、
を備えたハイブリッド行列乗算器。
【請求項19】
メモリ回路であって、各メモリ回路は積算値を記憶するためのメモリ回路と、
メモリ回路の積算値を加算する加算器と、を備え、
前記制御回路は、異なる第1入力値を提供し、異なる第2入力値を提供し、各メモリ回路に積算値を格納するように動作する請求項18に記載のハイブリッド行列乗算器。
【請求項20】
第1入力値を受け取り、第2入力値を受け取り、前記第1入力値と前記第2入力値との積を生成するように動作可能な乗算回路と、
積算デジタル値を記憶するように動作可能な積算デジタル記憶回路と、
前記積を受け取り、積を積算デジタル記憶回路に記憶された積算デジタル値と結合し、積算デジタル値を出力するように動作可能なデジタルビット積算器と、
前記積と前記積算デジタル値とを組み合わせる際には、(i)積が1であり、積算デジタル値がゼロである場合、値を積算デジタル記憶回路に格納し、(ii)積が1であり、積算デジタル値がゼロでない場合、同じ積算デジタル値を維持し、または(iii)積がゼロである場合、積算デジタル値を2倍する時分割積和演算回路。
【請求項21】
積を受け取るように動作可能な積記憶回路と、
前記積記憶回路と前記デジタルビット積算器に接続された1ビットアナログデジタルコンバータと、を備え、
前記積記憶回路は、前記積を1ビットアナログ/デジタル変換器に供給し、前記1ビットアナログ/デジタル変換器は、前記積を受け取り、前記積をデジタルビット積に変換し、デジタルビット積を前記デジタルビット積算器に供給する請求項20に記載の時分割積和演算回路。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、行列乗算の処理アーキテクチャ、デバイス、および方法に関し、特にハイブリッド積和演算回路に関する。
【背景技術】
【0002】
行列の乗算は、多くの数学計算において重要な演算である。例えば、線形代数学では、微分方程式のような連立一次方程式を解くために行列の乗算を用いることができる。このような数学的計算は、例えばパターンマッチング、人工知能、解析幾何学、工学、物理学、自然科学、コンピュータサイエンス、コンピュータアニメーション、経済学などに応用されている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
行列の乗算は通常、保存されたプログラムを実行するデジタルコンピュータで行われる。プログラムは実行される演算を記述し、コンピュータ内のハードウェア、例えばデジタル乗算器や加算器が演算を実行する。いくつかの計算機システムでは、特別に設計されたハードウェアが計算速度を高速化することができる。アプリケーションによっては、特にセーフティクリティカルなタスクのように、有用な出力を有用な時間で提供するためにリアルタイム処理が必要なものもある。さらに、携帯機器に搭載されるアプリケーションは、使用できる電力が限られている。このような高速計算システムにもかかわらず、大きな行列と高いデータレートの問題を解くには時間がかかり、必要以上の電力を消費する可能性がある。そのため、より高速かつ低消費電力で行列の乗算を実行できるコンピューティングハードウェアアクセラレータが必要とされている。
【課題を解決するための手段】
【0004】
本開示の実施形態は、特に、積和演算(multiply accumulate operations)を使用して行列乗算を実行するためのハイブリッドのコンピューティングハードウェアアクセラレータを提供することができる。本開示のコンピューティングハードウェアアクセラレータは、アナログ積算値を備えたデジタル2進シングルビット乗算器から構成される。シングルビット乗算器のデータ値はそれぞれデジタルメモリに格納され、シングルビット乗算結果はキャパシタに電荷として格納される。キャパシタの電荷は、値を合計:sum(積算:accumulate)するために結合され、積和演算を提供する。キャパシタの電荷を組み合わせることで、和演算はほぼ瞬時に行われ、導体内の電荷が流れる速度に依存し、外部電力を必要としない。したがって、本開示の実施形態は、非常に高速かつ低電力の積和演算回路を提供することができる。電荷は電子システムにおいてQと表記されるため、本明細書では各シングルビット積和演算回路をqmacと称する。これは、デジタル乗算とアナログ積算を使用するハイブリッド回路である。
【0005】
本開示の実施形態によれば、ハイブリッド積和演算回路は、シングルビット積和演算回路のアレイを備え、各シングルビット積和演算回路は、(i)第1シングルビット値を記憶するための第1記憶素子と、(ii)第2シングルビット値を記憶するための第2記憶素子と、を備える、(iii)積を計算するために第1シングルビット値に第2シングルビット値を乗算するためのビット乗算回路(bit-multiply circuit)と、(iv)アナログ記憶回路であって、ビット乗算回路は、積を表す電荷をアナログ記憶回路に蓄積するように動作可能である、アナログ記憶回路と、を備える。シングルビット積和演算回路のアレイは、各アナログ記憶回路に蓄積された電荷を結合して、積の合計を表す蓄積電荷(accumulated charge)を提供するように動作可能である。アナログ記憶回路はキャパシタであればよい。
【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】
本開示の実施形態によれば、ハイブリッド時分割積和演算回路は、積記憶回路(product storage circuit)と、第1入力値を受信し、第2入力値を受信し、第1入力値と第2入力値との積を生成し、積を積記憶回路に記憶するように動作可能な乗算回路と積算値を記憶する積算値記憶回路(accumulator storage circuit)と、積算値記憶回路と積算値記憶回路を電気的に並列接続し、または積算値記憶回路から積算値記憶回路を電気的に切り離すように動作可能な、積算値記憶回路と積算値記憶回路を接続するアキュムレーションスイッチ(accumulation switch)とを備える。
【0012】
時分割積和演算回路の実施形態は、第1マルチプレクサに入力される複数の第1入力値のうちの1つを選択するように動作可能な第1マルチプレクサを備えてもよく、乗算回路は、第1マルチプレクサから複数の第1入力値のうちの選択された1つを受け取り、第2入力値を受け取り、複数の第1入力値のうちの選択された1つと第2入力値との積を生成するように動作可能でもよい。実施形態では、第2マルチプレクサに入力される複数の第2入力値のうちの1つを選択するように動作可能な第2マルチプレクサを備えてもよく、乗算回路は、第2マルチプレクサから第2入力値のうちの選択された1つを受け取り、複数の第1入力値のうちの選択された1つと第2入力値のうちの選択された1つとの積を生成するように動作可能でもよい。
【0013】
本開示の実施形態によれば、積記憶回路および積算値記憶回路は、電荷を蓄積するアナログ記憶回路である。積記憶回路および積算値記憶回路は、キャパシタであり得る。
【0014】
本開示の実施形態によれば、乗算回路は、2つの2進ビットを乗算するためのシングルビット乗算回路である。乗算回路は、シリアル接続されたシリアルスイッチ回路から構成され得る。アキュムレーションスイッチは、乗算回路のシリアルスイッチ回路とシリアルに接続されたシリアルスイッチ回路であり得る。乗算回路は、シリアル接続されたシリアルスイッチ回路で構成され、前記乗算回路のシリアルスイッチ回路およびアキュムレーションスイッチのシリアルスイッチ回路の1つまたは複数を差動スイッチとすることができる。
【0015】
本開示の実施形態によれば、アキュムレーションスイッチを操作して積記憶回路と積算値記憶回路とを並列に接続すると、積算値記憶回路の積算値と積記憶回路の積とが結合され、積記憶回路と積算値記憶回路とに記憶された結合値が得られる。
【0016】
ハイブリッド時分割行列乗算器の実施形態は、(i)第1入力値と第2入力値とを乗算器に供給し、アキュムレーションスイッチを切り替えて積を積記憶回路に記憶させ、(ii)アキュムレーションスイッチを切り替えて積記憶回路と積算値記憶回路とを電気的に並列接続し、積記憶回路の積と積算値とを結合して、積記憶回路と積算値記憶回路とに記憶された結合値を提供するように順次動作可能な制御回路を備える。
【0017】
本開示の実施形態によれば、ハイブリッド行列乗算器は、複数の時分割積和演算回路と、複数の時分割積和演算回路の積算値を加算するための加算器とを備える。積算値はアナログ値であることができ、いくつかの実施形態では、積算値をデジタル値に変換するためのアナログ/デジタル変換器と、加算器をデジタル加算器とから構成することができる。いくつかの実施形態では、積算値はアナログ値であり、加算器はアナログ加算器である。
【0018】
本開示の実施形態によれば、行列乗算のハイブリッド方法は、以下を含む。
a)Nビットを有するマルチビット値を提供するステップ
b)ハイブリッド時分割反復積和演算回路を提供するステップ
c)マルチビット値の入力ビットを提供し、乗算器に第2入力ビットを提供し、アキュムレーションスイッチを設定して、積算値記憶回路を時分割乗算値記憶回路に接続し、積算値記憶回路を積算値記憶回路から切り離すステップ
d)マルチビット値の入力ビットに第2入力ビットを乗算し、積記憶回路に格納されたビット積を形成するステップ
e)アキュムレーションスイッチを切り替えて、積記憶回路を時分割積和演算回路から切り離し、積記憶回路を積算値記憶回路に接続し、積記憶回路内の積を蓄積値と結合して積算値記憶回路内に結合値を生成するステップ
f)マルチビット値の全ビットがビット順に供給され、マルチビット値と第2入力ビットの積が生成されるまで、ステップc)~e)をN回繰り返す。
【0019】
本開示の実施形態によれば、行列乗算のハイブリッド方法は、以下を含む。
a)Nビットを有する第1マルチビット値とMビットを有する第2マルチビット値を提供するステップ
b)上記のM個の時分割積和演算回路を提供するステップ
c)第1マルチビット値の入力ビットを提供し、第2マルチビット値の異なる第2入力ビットをM個の時分割積和演算回路の各々の乗算器に提供し、アキュムレーションスイッチを設定して、積算回路を時分割積和演算回路に接続し、積算回路をM個の時分割積和演算回路の各々の積算値記憶回路から切り離すステップ
d)マルチビット値の入力ビットに第2入力ビットを乗算し、M個の時分割積和演算回路それぞれと積和演算回路に格納されたビット積を形成するステップ
e)アキュムレーションスイッチを切り替えて、積算値記憶回路を時分割積和演算回路から切り離し、積算値記憶回路に接続し、積算値記憶回路の積算値と積算値を合成して、M個の時分割積和演算回路のそれぞれの積算値記憶回路に合成値を生成するステップ
f)第1マルチビット値の全てのビットがビット順に提供されるまで、第1マルチビット値のNビットのそれぞれについてステップc)~e)を繰り返すステップ
g)M個の時分割積和演算回路のそれぞれの積算値をスケーリングするステップ
h)M個の時分割積和演算回路のそれぞれの積算値を加算して積を生成するステップ
【0020】
本開示の実施形態によれば、行列乗算のハイブリッド方法は、以下を含む。
a)Nビットを有する第1マルチビット値とMビットを有する第2マルチビット値を提供するステップ
b)上記の時分割積和演算回路を提供するステップ
c)第1マルチビット値の入力ビットを提供し、第2マルチビット値の第2入力ビットを乗算器に提供し、アキュムレーションスイッチを設定して、積算値記憶回路を時分割積和演算回路に接続し、積算値記憶回路を時分割積和演算回路の積算値記憶回路から切り離すステップ
d)第1マルチビット値の入力ビットに第2マルチビット値の第2入力ビットを乗算し、積記憶回路に記憶されたビット積を形成するステップ
e)アキュムレーションスイッチを切り替えて、積算値記憶回路を時分割積和演算回路から切り離し、積算値記憶回路に接続し、積算値記憶回路の積算値と積算値を合成して、M個の時分割積和演算回路のそれぞれの積算値記憶回路に合成値を生成するステップ
f)第1マルチビット値の全てのビットがビット順に提供されるまで、第1マルチビット値のNビットのそれぞれについてステップc)~e)を繰り返すステップ
g)時分割積和演算回路の積算値をスケーリングして、スケーリングされた値を生成するステップ
h)スケーリングされた値をマルチビット積に加算するステップ
i)ステップc)~h)を繰り返してマルチビット積を生成するステップ
【0021】
本開示の実施形態によれば、ハイブリッド行列乗算器は、ハイブリッド時分割反復積和演算回路と、積算値を記憶するためのメモリ回路と、以下のステップを順次繰り返し実行させ積算値をメモリ回路に保存する制御回路とを備える。
(i)乗算器に第1入力値を供給し、第2入力値を供給し、アキュムレーションスイッチを設定して、積算値記憶回路を乗算器に接続し、積算値記憶回路から積算値記憶回路を切り離すステップ
(ii)アキュムレーションスイッチを切り替えて、積算値記憶回路を時分割積和演算回路から電気的に切り離し、積算値記憶回路を積算値記憶回路に電気的に接続して、積算値記憶回路の積を積算値と結合し、積算値記憶回路および積算値記憶回路に記憶された結合値を提供するステップ
【0022】
本開示のいくつかの実施形態は、メモリ回路と、積算値を記憶するための各メモリ回路と、メモリ回路内の積算値を加算するための加算器とを備える。制御回路は、異なる第1入力値を提供し、異なる第2入力値を提供し、各メモリ回路に積算値を記憶するように動作可能である。
【0023】
本開示のいくつかの実施形態によれば、時分割積和演算回路は、第1入力値を受け取り、第2入力値を受け取り、第1入力値と第2入力値との積を生成するように動作可能な乗算回路と、積算デジタル値を記憶するように動作可能な積算デジタル記憶回路と、積を受け取り、積を積算デジタル記憶回路に記憶された積算デジタル値と結合し、積算デジタル値を出力するように動作可能なデジタルビット積算器とを備える。積を積算デジタル値と結合するステップは、(i)積が1であり、積算デジタル値がゼロである場合、値を積算デジタル記憶回路に記憶するステップ、(ii)積が1であり、積算デジタル値がゼロでない場合、同じ積算デジタル値を維持するステップ、または(iii)積がゼロである場合、積算デジタル値を2倍するステップを含み得る。本開示のいくつかの実施形態は、積を受け取るように動作可能な積記憶回路と、積記憶回路およびデジタルビット積算器に接続された1ビットアナログ/デジタル変換器とを備える。積記憶回路は、積を1ビットアナログ/デジタル変換器に提供するように動作可能であり、1デジタルビット/デジタル変換器は、積を受け取り、積をデジタルビット積に変換し、デジタルビット積をデジタルビット積算器に提供するように動作可能である。
【0024】
本開示の実施形態は、積和演算を使用して行列乗算を実行する、高速、高効率、低消費電力、小型のハイブリッドハードウェアアクセラレータを提供する。
【図面の簡単な説明】
【0025】
【
図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】本開示の例示的実施形態による、低電力アナログ電圧で制御されるスイッチの概略図である。
【
図15A】本開示の例示的実施形態による、蓄積キャパシタを有する時分割反復積和演算スイッチの概略図である。
【
図15B】本開示の例示的な実施形態による、積ストレージキャパシタとデジタル積算値とを備えた時分割反復積和演算スイッチの概略図である。
【
図15C】本開示の例示的実施形態による、デジタル積算値を備えた時分割反復積和演算スイッチの概略図である。
【
図16】本開示の例示的な実施形態による、コントローラと入力マルチプレクサとを備えた時分割反復積和演算スイッチの概略図である。
【
図17】本開示の例示的実施形態による方法のフローチャートである。
【
図18】本開示の例示的な実施形態による、アナログ加算器を備えた複数の時分割積和演算スイッチの概略図である。
【
図19】本開示の例示的な実施形態による、デジタル加算器を備えた複数の時分割積和演算スイッチの概略図である。
【
図20】本開示の例示的な実施形態による、コントローラと2つの入力マルチプレクサとを備えた時分割反復積和演算スイッチの概略図である。
【
図21】本開示の例示的実施形態による方法のフローチャートである。
【
図22】本開示の例示的な実施形態による、マルチビット乗算用の時分割反復シングルビット積和演算スイッチとデジタルシフト積算器の概略図である。
【
図23】本開示の例示的な実施形態による、アナログ記憶装置とアナログ加算器とを備えたマルチビット乗算用の時分割シングルビット反復積和演算スイッチの概略図である。
【
図24】本開示の例示的実施形態による、デジタル記憶装置とデジタル加算器を備えたマルチビット乗算のための時分割シングルビット積和演算スイッチの概略図である。
【
図25】本開示の例示的実施形態による、2ビット値に対する時分割積和演算を示す表である。
【
図26A】本開示の例示的な実施形態による、4ビット値に対する時分割積和演算を示す表である。
【
図26B】本開示の例示的な実施形態による、4ビット値に対する時分割積和演算を示す表である。
【発明を実施するための形態】
【0026】
本開示の特徴および利点は、同様の参照文字が全体を通して対応する要素を識別する図面と併せて考慮すると、以下に記載する詳細な説明からより明らかになるであろう。図面において、同様の参照番号は、一般に、同一、機能的に類似、および/または構造的に類似の要素を示す。図は必ずしも縮尺通りに描かれていない。
【0027】
本開示の特定の実施形態は、各々がシングルビット値を記憶する2つのデジタルシングルビット2進記憶素子と、2つのシングルビット値を乗算して積を計算する乗算器と、積を電荷(または電圧)として記憶するためのキャパシタなどのアナログ電荷記憶素子とを備えるシングルビットハイブリッド積和演算回路(それぞれをqmacと称し、複数の場合、qmacsと称す)に関する。qmacsの1次元配列は、シングルビットの積の1次元配列(ベクトル)を計算し、合計することができる。qmacsの2次元配列は、2つのマルチビットデジタル乗算子の積を計算することができる(乗算子とは、乗算された積を計算するために別の値と乗算される値のことである)。マルチビット乗算子を計算するためのqmacsの2次元配列のサイズは、N+M-1とすることができる。ここで、Nは2つのデジタル乗算子の一方のビット数であり、Mは2つのデジタル乗算子の他方のビット数である。M個の値を持つ2つの線形ベクトル(数値の1次元配列)に対するベクトル行列の乗算と積算は、M個の2次元配列で計算し、1つの値に積算されることができる。
【0028】
図1Aに示すように、A、B、Cを行列とする計算C=AxBは行列の乗算である。Aをm×nの行列、Bをn×pの行列とすると、Cはm×pの行列である。ここで、C
ij=ΣA
ikB
kjである(k=1~n、i=1~m、j=1~p)。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回の加算を必要とする積和演算である。
【0029】
本開示の実施形態によれば、
図2および
図3に示すように、ハイブリッド積和演算は、qmacs10のアレイによって実行することができ、qmac10は、第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に蓄積される電荷の量を非常に正確に制御するように設計することができる。
【0030】
図3は、ハイブリッド積和演算回路20において4つの積を合計するために並列に接続されたビットキャパシタ16(アナログ記憶回路16)を有する4つのqmacs10を示している。4つの並列に配置されたqmacs10は、4つのシングルビットA値にそれぞれシングルビットB値を乗算する積和演算を提供する。シングルビットのB値は同じでも異なっていてもよい。したがって、
図3は、4つのシングルビットの2進値(例えば、
図1A~
図1Dの数学的図解ではk=4)に対する積和演算を実行するための回路を示す。このように、シングルビット積和演算回路10のアレイは、各アナログ記憶回路16に蓄積された電荷を結合して、qmacs10の積の和を表す蓄積電荷を提供するように、共に動作可能である。
【0031】
並列接続されたビットキャパシタ16上の電荷の合計は、アナログデジタルコンバータ(ADC)30でデジタル値に変換されるか、またはさらなる計算のためのアナログ値として使用されるアナログ積算値出力Oを提供する。並列キャパシタは、並列接続されたキャパシタの静電容量の合計に等しい静電容量を持つため、電圧または電荷の絶対値(出力O)は、キャパシタの数nによってスケーリングされなければならない。キャパシタの電荷は電圧×静電容量に等しいので(Q=CV)、一定の電荷に対して静電容量が増加すれば、電圧はそれに応じて減少する。例えば、全てのキャパシタが1個の値に相当する電荷Qを蓄える場合、その値の合計は4個(
図3の例)になるが、4個のキャパシタは電気的に並列接続されているため、電圧は1個のままである。したがって、電圧出力はキャパシタの数でスケーリングされなければならない(例えば、
図3の図では4倍)。
【0032】
ハイブリッド積和演算回路は、例えばデジタル加算器を使用したデジタル等価回路よりも少ない電力で動作することができる。小ビットキャパシタ16からの正味の電流または電荷リークは非常に小さくすることができ、アナログ記憶回路16および他のアナログ演算は、例えば1ボルト以下(例えば、500mV以下、100mV以下、50mV以下、または10mV以下)であり、従来のデジタル論理に使用される電圧(例えば、5V、3.6V、3.3V、または1.65V)よりも低い、非常に低い電圧で動作することができる。本開示のいくつかの実施形態は、実質的に10mVで動作することができる。
【0033】
図2および
図3の回路は、qmacs10および積和演算アレイにおけるそれらの実装を簡略化して表したものである。前述のように、ビットキャパシタ16への電荷蓄積の正確な制御は、積和演算の精度と正確さを維持するのに役立つ。
図4Aに示されるように、qmac10のより複雑な回路は、ビット乗算器14の出力およびビットキャパシタ16に接続されたスイッチ回路18(図ではSとも指定される)を用いて、qmac10のアレイにおけるqmac10間の電気的接続を制御する。スイッチ回路18がオンのとき、ビットAとBの積を表す電荷Qは、スイッチ回路18の左トランジスタを介してビットキャパシタ16に蓄積される。スイッチ回路18がオフのとき、左トランジスタがオフとなり、スイッチ回路18の中央トランジスタを含むインバータがスイッチ回路18の右トランジスタを含む接続スイッチに正信号を印加し、ビットキャパシタ16を並列接続する。
【0034】
図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である。
【0035】
図4Cは、qmac10の積和演算サイクルを示している。負荷信号AおよびBは、例えばコンピュータまたは他のステートマシンコントローラによって提供される記憶素子12に対応する値を格納するように設定され、ビット乗算器14によって乗算される。同時に、クリア信号がハイ、スイッチ信号がローとなり、ビットキャパシタ16を分離してクリアする。ビットキャパシタ16がクリアされると、クリア信号がローに設定され、スイッチ信号がハイに設定されて、AとBの積を表す電荷Qをビットキャパシタ16に預けることができる。電荷Qがビットキャパシタ16にロードされると、スイッチ信号がローに設定され、ビット乗算器14をビットキャパシタ16から分離し、全てのビットキャパシタ16を並列に接続し、それによってビットキャパシタ16上の電荷Qを合計して積算値出力Oを提供する。出力Oに等しい合計された電荷Qは、適切にスケーリングされ、アナログデジタル変換器30でデジタル値に変換されるか、アナログ値としてさらなる計算に使用される。スイッチ回路18が第1モードから第2モードに切り替わるとき、全体の動作は2サイクルで行うことができる。
【0036】
図5は、
図4Bの抽象的表現を用いてハイブリッド積和演算回路20を形成するqmacs10のアレイを示す。いくつかの実施形態において、単一のクリア回路19は、スイッチ回路18がオフのときに接続されたビットキャパシタ16の全てから電荷をクリアするために使用することができるが、ビットキャパシタ16間に接続されたスイッチ回路18は、ビットキャパシタ16の全てに対する電荷除去を妨害することができる。いくつかの実施形態では、クリア回路19は各qmac10に設けられ、クリア回路19は、スイッチ回路18と同様に、ハイブリッド積和演算回路20において共通に制御される。
【0037】
図6は、バイナリマルチデジット多ビット値に対する完全な乗算を示している。
図6は、4ビットを有する値の場合を示しているが、乗算されるビットの数に対応するqmacs10の数を有するハイブリッド積和演算回路20により、任意の数のビットを使用することができる。各ハイブリッド積和演算回路20のqmacs10の数は、Aのビット数に対応し、ハイブリッド積和演算回路20の数は、同時に行う積和演算の数に対応する。qmacs10の数がAのビット数より少ない場合、または同時に行う積和演算の数がBのビット数より少ない場合、部分的な計算を行い、ステートマシンのような外部のコンピュータまたはコントローラの制御下で生成物を保存し、結合することができる。
【0038】
図6の4ビットの例に示すように、示された積の各列は、値Bの1ビットに値Aのビットを乗算したものである。
図6では、各列の積の相対的な大きさ(場所)を表すために、紙に手書きで書かれた乗算の従来のように、列が互いに対して空間的にシフトされている。各列21の積(乗算値)は、
図5に示すように、各ハイブリッド積和演算回路20において合計され、積算結果(合計出力値O)を形成する。積の各列21は、異なるハイブリッド積和演算回路20で計算され、合計され得る。そして、ハイブリッド積和演算回路20の積算結果(積算出力値O)が合計(加算)され、マルチビット乗算の最終値が得られる。
【0039】
積の各列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)を再ロードすることなく実行することができる。
【0040】
ハイブリッドマルチビット乗算器22を形成するハイブリッド積和演算回路20のアレイは、従来のデジタル回路よりもはるかに少ないサイクルを有する極めて高速な動作を提供する。さらに、出力値Oを合計するための加算ステップ(デジタル的に行われる場合)は、段階的に分割され(例えば、一度に値の組を加算する)、パイプライン化され得るので、動作はさらに高速になり、異なる値に対する積和演算動作は、例えば、コンピュータまたはステートマシンコントローラの制御下で、時間的にオーバーラップされ得る。
【0041】
本開示のいくつかの実施形態では、ハイブリッド積和演算回路20からの出力値Oの加算は、デジタル的に計算される。いくつかの実施形態では、ハイブリッド積和演算回路20からの出力値Oの加算は、アナログ回路を用いて計算される。
図7に示すように、出力値は、例えばレジスタまたは他のメモリに格納されたデジタルビット値を提供するために、アナログ-デジタル変換器30で変換され、デジタルビット値は、例えば互いに対してシフトすることによってスケーリングされ(各シフトは2のべき乗に対応する)、スケーリングされたビット値は、デジタル加算器を使用して合計される。
【0042】
図8に示すように、各ハイブリッド積和演算のアナログ積算結果(qmacs10の列)は電圧(または電荷)であり、アナログ積算の場所に対応する量が(例えば、電圧乗算器VMによって)乗算され、乗算されたアナログ積算は、例えばアナログ加算器を使用して加算され、最終的な積算はアナログデジタル変換器30でデジタル値に変換される。このような実施形態では、全計算を2スイッチサイクル(クリアサイクルまたはロードサイクルを除く)で行うことができ、従来の実施形態と比較して非常に高速な動作を実現する。
図8は、全てのqmac10が個別の記憶素子12を備えた実施形態を示す。
【0043】
アナログ電圧の乗算および加算は、いくつかの実施形態では、加算モードに構成されたオペアンプ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を使用してデジタル値に変換し、適切にスケーリングすることができる。
【0044】
図10は、非反転加算オペアンプ40を示している。オペアンプ40の出力Voは、各電圧V
1~V
Nの和にR’/Rの比を掛けたものに等しく、R
1~R
Nはそれぞれ等しい。電圧値V
1~V
Nは、抵抗で実装された分圧器でスケーリングすることができる。例えば、V
1に接続された抵抗は63:1の比率を持つことができ、V
2に接続された抵抗は31:1の比率を持つことができ、V
3に接続された抵抗は15:1の比率を持つことができるなど、付加された値の場所に対応するように電圧をトップスケールすることができる。オペアンプ40の出力は、(R+R’)/R(例えば64)の比率でスケーリングされ、アナログ/デジタル変換器30を使用してデジタル値に変換することができる。
【0045】
アナログサミングを有する
図7および
図8の実施形態は、より高速な動作を提供することができ、デジタルサミングを有する
図6の実施形態は、より高精度を提供することができる。本開示の実施形態は、図示されたビット数によって限定されない。例えば、ハイブリッド積和演算回路20は、64、128、256、512、1024、2048、4096、8192、または16384個以上のqmacs10を有することができ、同数のハイブリッド積和演算回路20をアレイに採用して、多くのビットによる高速乗算を提供することができる。本開示の実施形態は、従来のコンピュータまたはグラフィックプロセッサに対するハードウェアアクセラレータとして提供することができる。データは、入力および出力に2つ以上のシフトレジスタを有するパイプライン方式でハードウェアアクセラレータに供給することができる。ハイブリッド積和演算回路20のアレイのハードウェア実装は、入力ベクトルのサイズに効率的に対応するサイズでなければならない。ハイブリッド積和演算回路20のアレイがタスクに対して大きすぎる場合、回路の多くが使用されない(例えば、qmacs10の数が大きすぎる)。ハイブリッド積和演算回路20のアレイが小さすぎる場合、ベクトル乗算はより小さなベクトルに分解されなければならない。小さなベクトルが多すぎても、非効率になる。
【0046】
図6に示すように、シングルビット積和演算回路10の2次元乗算アレイは、マルチビット乗算を実行することができる(例えば、
図7および
図8)。ハイブリッド行列積和演算回路24を形成する、
図8および
図9のような複数のアレイを含むハイブリッド多ビット乗算器22は、ベクトル乗算全体を計算することができる。ベクトル積和演算(例えば、
図1Bに示すような)の各マルチビット乗算は、(
図7に示すように、またはアナログ和出力値Oのアナログ-デジタル変換後に)デジタル積を生成することができ、デジタル積は、デジタル加算器を使用してデジタル加算することができる。いくつかの実施形態では、ベクトル乗算積和演算(例えば、
図1B)の各マルチビット乗算は、アナログ積(
図8に示すような出力値O)を生成することができ、アナログ積は、
図1~
図6に示すような同様の回路を使用して加算することができる。アナログ積P(
図8に示す)は、ビット乗算器14と同様の蓄積回路を用いてキャパシタ(例えば、ビットキャパシタ16と同様であるが、より大きな電荷に対してより大きな記憶容量)に蓄積させることができる。
図12に示すように、
図5のものと同様のスイッチおよびクリア回路18、19は、キャパシタに電荷Qを蓄積させることができ、キャパシタを並列に接続することによって電荷を合計し、合計された電荷をアナログデジタル変換器30で変換して、1サイクルでベクトル行列乗算全体を提供することができる。
図11Aはハイブリッド行列積和演算回路24を示し、
図11Bはハイブリッド多ビット乗算器22とベクトル積和演算計算における被乗数を関連付ける。
【0047】
本開示の実施形態は、例えば10mVから1Vの電圧を使用する非常に低電圧の積和演算回路10を提供することができる。従来のANDゲートを使用するビット乗算器14は、アナログ記憶回路16(例えば、1.65~5V)に蓄積される電荷Qを適切に制御できるビット乗算回路を実装するために、例えば、比較的高い電圧で動作する6つの比較的大きなトランジスタを必要とし得る。対照的に、
図13に示すように、本開示のビットマルチプライヤ14は、比較的低い電圧(例えば、1Vを超えず、10mVと低い)および低電力で動作し、例えば、4つの比較的小さなトランジスタのみでアナログ記憶回路16に蓄積される電荷Qを適切に制御することができる直列接続された直列スイッチ回路15を構成することができる。
【0048】
図13に示すように、一連の3つの直列スイッチ回路15とアナログ記憶回路16により、
図4Aおよび
図4Bに示した回路と機能的に同様のqmac10を実現することができる。各シリアルスイッチ回路15は、2つの差動電圧入力(Vおよびバーを有するV、ここでVbarはVの反転値)、2つの電圧入力Inおよびバーを有するIn、ここで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、このように、Aが正である場合、Oは正であり、Aが負である場合、Oは負である。直列の第2直列スイッチ15は入力値Bとその反転値Bbarを持ち、第1直列スイッチ15からの値OをV
REFPの正値とし、V
REFNを反転電圧値(例えば0ボルト)とする。したがって、Oがロー(負)であれば、Bがどのような値であっても、第2シリアルスイッチ回路15からの出力Pはロー(負)となる。Oがハイ(正)であり、Bがハイ(正)であれば、第2シリアルスイッチ回路15からの出力Oはハイ(正)となり、Bがローであれば、第2シリアルスイッチ回路15からの出力Pはロー(負)となる。このように、最初の2つのシリアルスイッチ回路15は、少ない回路と電力でAND機能を実行する。
【0049】
第3シリアルスイッチ回路15は、スイッチ回路18を実装するために使用することができ、入力スイッチ値とその反転(
図4A、
図4Bのスイッチ値に対応)を有し、第2シリアルスイッチ15からの値OをV
REF値として取り込み、共通のV
SUM接続を反転電圧値として取り込む。したがって、スイッチがハイの場合、出力Oはアナログ蓄電回路16を充電する。スイッチがローの場合、アナログ記憶回路16上の電荷Qは、qmacs10のアレイ内の任意の他のアナログ記憶回路16に共通に接続され(例えば、
図3にアナログqmac10アレイ出力として示されるように)、和演算を提供する。
【0050】
図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は含まれていない)。
【0051】
したがって、本開示のいくつかの実施形態によれば、ハイブリッド行列乗算器は、デジタル記憶素子12と、デジタル値を記憶するように動作可能なデジタル記憶素子12の各々と、記憶されたデジタル値を乗算して積を生成するための乗算回路14と、積を記憶するように動作可能なアナログ記憶回路16と、デジタル記憶素子12、乗算回路14、およびアナログ記憶回路16を動作させるための電力を供給するための電力接続(例えば、VREFP、VREFN)とを備える。電源接続は、1V以下、500mV以下、100mV以下、50mV以下、または10mV以下の電圧を有することができる。ビット乗算回路14は、直列接続されたスイッチ15で構成することができる。
【0052】
いくつかの実施形態では、ハイブリッド行列積和演算回路24、ハイブリッドマルチビット乗算器22、またはハイブリッド積和演算回路20のハードウェア実装は、特定のアプリケーションに望まれる計算に正確に一致しなくてもよい。このようなアプリケーションでは、計算を、利用可能なハードウェアによりよく適合するサブ問題に分割し、結果を組み合わせて所望の計算を提供することができる。サブ問題は、ハードウェアが時分割または時分割多重化されるように、時間的に順次実行することができる。値の一部(例えば乗数Bのビット)は、複数のハードウェア演算のために記憶素子12に格納することができ、それによりハードウェアで使用される電力と時間を削減することができる。
【0053】
本開示の実施形態は、非常に高いレートで非常に少ないエネルギーを使用するベクトル積和演算を可能にする。プログラムのn回のループ(例えば、
図1Cおよび
図1Dに示すように、プログラムの実行にそれぞれ複数のマシンコードサイクルが必要)を必要とするのではなく、計算全体が1サイクルで行われる。例えば機械学習アプリケーションにおける多くの大きな行列演算は、行列内に多くのゼロ値を有し、マッチング問題の解を反復するために比較的低いビット精度が要求される。したがって、本開示の実施形態は、そのようなアプリケーションのための効率的な回路を提供する。
【0054】
本開示のいくつかの実施形態では、マルチビットデジタル乗算は、例えば、
図2および
図3に示されるように、ハイブリッド積和演算回路20内の複数のシングルビット積和演算回路10を使用して、単一ステップで実行される。
図6~
図8に示されるように、ハイブリッド積和演算回路20のアレイを使用して、2つのマルチビットデジタル値をシングルステップで乗算することができる。このようなハイブリッドマルチビット乗算器では、各ビット乗算回路14によって記憶されるチャージドが同じであり、並列接続されたアナログ記憶回路16からのアナログ和が、少なくとも任意のアナログデジタル変換器30の誤差内で正しいように、ビット乗算回路14(例えば、直列スイッチ回路15を含む)の動作性能を注意深く一致させることによって、精度が向上する。
【0055】
本開示のいくつかの実施形態では、ビット乗算回路14の動作性能を一致させるのではなく、単一のビット乗算回路14を繰り返し使用して(例えば、単一のビット乗算回路14が経時的に共有されるように経時的に反復して)、積算値記憶回路17にビット積を蓄積し、回路整合を必要としない。繰り返しには時間が必要であるが、シングルビット乗算回路14と積算値記憶回路17は非常に小さくすることができ、例えば、(
図14に示すように)3つのトランジスタと付加的な積算値キャパシタから構成される。したがって、このような回路を集積回路内に何百万個、あるいは何十億個も構築することができ、既存のデジタル乗算器と比較して比較的少ないエネルギー使用で非常に高速な行列乗算を提供することができる。
【0056】
図15Aは、アキュムレーションスイッチ60として機能するスイッチ18によって、積算値記憶回路17(例えば、シングルビット積和演算回路10の積記憶回路16と同じ容量を有するキャパシタ17)と電気的に並列に接続された積記憶回路16(キャパシタ16)を有するシングルビット積和演算回路10を備える単純ハイブリッド反復シングルビット積和演算回路11(iqmac11)を示す。アキュムレーションスイッチ60は、
図16により詳細に示されるように、シングルビット積和演算回路10の差動スイッチ18と同一、実質的に類似、または同一とすることができる。
図16は、反復シングルビット積和演算回路11を形成する積算値記憶回路17が追加された
図14のシングルビット乗算回路14を示す。オプションとして、積算値記憶回路17の出力はオプションのスイッチ18を介してアナログデジタル変換器30に接続することができる。
【0057】
図15Aは、対応する2つのシングルビット記憶素子12に記憶された2つのシングルビット値の乗算を示している。スイッチ18が乗算モード(第1モード)に設定されると、積Pは、前述の
図2および
図14に関して説明したように、積記憶回路16(キャパシタ16)に蓄積される。スイッチ18が積算モード(第2モード)に設定されると、積和記憶回路11に2つのキャパシタ16、17しか存在しないことを除いて、
図3に示す積算和と同様に、積記憶回路16に蓄積された電荷は、積算値記憶回路17に蓄積された電荷と共有(結合)される。記憶素子12にビットを繰り返し供給し、スイッチ18を乗算モードに設定し、記憶素子12のビット積を表す電荷を積和記憶回路16に蓄積し、スイッチ18を蓄積モードに設定してキャパシタ16とキャパシタ17の電荷を結合することにより、複数のビット積を2つのキャパシタに蓄積することができる。
【0058】
図15Bは、アナログデジタル変換器30によって(1またはゼロのデジタルビット積に)その値がデジタル化される積記憶回路16(キャパシタ16)に記憶されたビット積を提供するシングルビット積和演算回路10を含む単純なハイブリッド反復シングルビット積和演算回路11(iqmac11)を示す。いくつかの実施形態では、また
図15Cに示すように、シングルビット積和演算回路10は、実際にデジタル電圧である電圧を生成し、その場合、積記憶回路16および別個のアナログ/デジタル変換器30は必要ない。デジタルビット積算器32は、各デジタルビット積を受信し、積算デジタル記憶回路34(例えば、メモリまたはレジスタ)内の多ビット積算デジタル値と結合する。各組み合わせは、積算デジタル記憶回路34内の積算デジタル値をスケーリングすることを含む。デジタルビット積と積算デジタル値との組み合わせは、以下にさらに説明するように、デジタルビット積が1であり、積算デジタル値がゼロである場合に積算デジタル記憶回路に値を記憶すること、デジタルビット積が1であり、積算デジタル値がゼロでない場合に同じ積算デジタル値を維持すること、または積がゼロである場合に積算デジタル値を2倍スケーリングすることを含むことができる。この組み合わせは、単純なデジタル回路、例えば、デジタルシフト回路36(例えば、2分周回路)を備えたステートマシンで実装することができる。このようなハイブリッド反復シングルビット積和演算回路11は、整合キャパシタ16および17を必要としない。デジタルビットは、デジタルデジデジタルビット積算デジタデジタルビット有する適切なステートマシンのサイズは、例えば、
図15Aのキャパシタ16、17ならびにマルチビットADC30と比較して、比較的小さくすることができる。特に、
図15Bおよび
図15Cのような実施形態では、マルチビットADC30は必要なく、iqmac11の回路サイズを縮小し、動作に必要な時間と電力を低減することができる。
【0059】
図16に示すように、ビット乗算回路14の一方の入力にシングルビットBを印加し、ビット乗算回路14の他方の入力にマルチビット値Aのビット(この例ではA
0~A
3)を連続して印加することにより、シングルビットをマルチビット値で複数ビット乗算することができる。連続したビット印加は、マルチビット値をレジスタ(メモリ)56に格納し、マルチプレクサ50のビット選択値とレジスタ56のマルチビット値Aを提供できる制御回路70の制御下で、レジスタ56から連続ビットを連続的に多重化し、多重化されたビットをビット乗算回路14に印加することにより、低ビットから高ビットへのビット順序で行うことができる。
【0060】
図17に示すように、まずステップ100でiqmac11を提供し、ステップ110で積記憶回路16および積算値記憶回路17をクリアする(例えば、
図4A~4Cに図示したように、クリア回路Cで接地接続することにより、それらの値をゼロに設定する)ことにより、シングルビットBに複数ビット値Aを乗算することができる。制御回路70は、ステップ102でシングルビット値Bを記憶素子12に、マルチビット値Aをレジスタ56に供給し、ステップ115でビットカウント値Nをゼロに設定する。ステップ102とステップ110は任意の順序で行うことができる。ステップ120でマルチプレクサ50によりマルチビット値AのビットNが選択され、ステップ125で制御回路70の制御によりスイッチ18が乗算(第1)モードに設定される。ビット乗算器14は、ステップ130において、マルチビット値AのビットNとビットBとを乗算し、その積を積記憶回路16に記憶する。次にスイッチ18はステップ135で積算(第2)モードに設定され、ステップ140で、積記憶回路16と積算値記憶回路17とを並列に接続することにより、積記憶回路16と積算値記憶回路17の電荷が結合され積記憶回路16と積算値記憶回路17との間で共有される。ステップ145でビットカウントNがテストされ、マルチビット値Aの全てのビットがビットBによって乗算されたか確認する。マルチビット値Aの全てのビットがビットBによって乗算されていない場合、ステップ150においてNが(例えば制御回路70によって)インクリメントされる。マルチビット値Aの全てのビットがビットBによって乗算された場合(テストステップ145)、プロセスは完了し、積に対応する値が積算値記憶回路17に記憶される。オプションとしてスイッチ18の制御の下、ステップ155において、アナログデジタル変換器30は累積された積をデジタル値に変換する。例えば、反復シングルビット積和演算回路11の出力(V
ACC)は、それ自体、例えばシリアルスイッチ回路15を使用して切り替えられ、アナログデジタル回路30に印加され得る。Aビットの全てがBビットと乗算されていない場合、ビットカウントNがインクリメントされ、Aビットの全てが乗算されるまでステップ120からステップ145が繰り返される。その後、新たな乗算を続行することができる。
【0061】
いくつかの実施形態では、反復シングルビット積和演算回路11を、第2マルチビット値Bの各ビットに対して設けることができ、第2マルチビット値Bの各ビットを同時に乗算する。そして、各反復シングルビット積和演算回路11は、
図6の各行または各積に対応する和を積算する。したがって、この例では、4つの反復シングルビット積和演算回路11が、それぞれ、
図6に示される計算の行に対応する値を積算(accumulate)する。
図18は、積のアナログ和を示す図である。
図6の行に対応する)各積は、例えば電圧乗算器を用いてスケーリングされ(行に対応する2のべき乗で乗算され)、その後、例えば
図7~
図9に示されるように加算される。
図19に示すように、各積をアナログデジタル変換器30でデジタル化し、シフト回路でスケーリングし、デジタル加算器54でデジタル加算することができる。一番上の行は2
0=1、つまりゼロ位シフトによりスケーリング(乗算)され、次の行は2
1=2、つまり1位シフトによりスケーリング(乗算)され、次の行は2
2=4、つまり2位シフトによりスケーリング(乗算)され、最後の行は2
3=8、つまり3位シフトによりスケーリング(乗算)される。
【0062】
本開示のいくつかの実施形態によれば、マルチビット値Bの各ビットにiqmac11を反復的に適用することによって、マルチビット値Bにマルチビット値Aを乗算することができ、1つの反復的シングルビット積和演算回路11のみが全積を計算するために使用される。
図20は、
図16のビットBの記憶素子12を制御回路70の制御下にあるマルチプレクサ50に置き換えた有用な回路を示す。制御回路70は、マルチビット値Bをレジスタ56に格納し、マルチプレクサ50でマルチビット値BのビットMを選択し、選択されたビットをiqmac11に適用することができる。マルチビット値BのビットMとマルチビット値Aとの各シングルビット乗算は、
図17のフロー図に関して説明したように反復的に進行する(例えば、ステップ200)。
【0063】
図21に示すように、まずステップ100でiqmac11を提供し、次にステップ105でビットカウンタMをゼロに設定することにより、マルチビット値Bをマルチビット値Aと乗算することができる。次に、ステップ200(
図17)の方法は、マルチビット値Aおよびマルチビット値Bの選択されたビットMについて進行する。マルチビット値Bの全てのビットがマルチビット値Aと乗算されない場合(ステップ160で決定)、積算されたビット積は、ステップ165で、例えば、値が電荷の場合はキャパシタに、値がデジタルの場合はレジスタに格納され(例えば、ステップ155でアナログデジタル変換器30によって変換される)、ステップ170でビットカウント値Mがインクリメントされる。マルチビット値Bの各ビットとマルチビット値Aとの積は、
図6に示されるマルチビット積値の行に対応する。マルチビット値Bの全てのビットにマルチビット値Aが乗算されると、
図7および
図8で説明したように、ステップ175において、マルチビット値Bの各ビットとマルチビット値Aの積の総和を算出する。例えば、結果を合計する前にマルチビット値Bの各ビットの積をスケーリングするように適切な注意が払われたアナログまたはデジタル的な総和算出を行う。
【0064】
図22は、反復シングルビット積和演算回路11を用いて2つの8ビットデジタル値を反復乗算するハイブリッド回路を示す。
図22に示すように、制御回路70はスイッチ18とマルチプレクサ50を制御して、
図20と
図21で説明したようにマルチビット値Aとマルチビット値Bのビットを循環させる。マルチビット値Bとマルチビット値Aの各ビットの積は、デジタル値に変換され、スケーリングされた後、デジタルシフト積算器(digital shift accumulator)52の積算(既存の値に加算)される。
図23に示すように、デジタルシフト積算器52は、デジタル化された積の各ビットをシフトする(
図6の行に対応するデジタル化された積をスケーリングする)ための制御回路70に応答するデマルチプレクサ51と、積算された積を記憶するためのマルチビットレジスタまたはメモリ13と、スケーリングされた積を積算された積に加算し、その和をレジスタに記憶するための加算器54とから構成することができる。シフト(スケール)は、マルチビット値Aとの乗算のために選択されたマルチビット値Bのビットに対応することができる。マルチビット積の全てのビットがマルチビット値Aと乗算され、積が積算された後、デジタルシフト積算器52の積算値は、マルチビット値AとBの積を含む。
【0065】
図24は、積算がアナログ回路で行われることを除いて、
図23と同じ機能を実行する。
図24に示すように、制御回路70はスイッチ18とマルチプレクサ50を制御して、
図20と
図21で説明したようにマルチビット値Aとマルチビット値Bのビットを循環させる。マルチビット値Bのビットとマルチビット値Aの各積は(例えば電圧乗算器を用いて)スケーリングされ、アナログデマルチプレクサ53で選択された別個のアナログ記憶回路16(例えばキャパシタ)に蓄積される。
図6の行に対応する全ての積が格納されると、
図2~
図5と同様の回路を使用して一段階で合計することができる。
【0066】
本開示の実施形態によれば、アレイ乗算は、各マルチビット積について
図22に示されるようなハイブリッド反復シングルビット積和演算回路11を用いて実装することができ、これにより、積値の全てが同時に計算されるが、各積値は反復的に計算される。本開示の実施形態によれば、このようなアレイ乗算器は、高速かつ低消費電力である。
【0067】
反復シングルビット積和演算器11は、シングルビットBと多ビット値Aの1ビットの積を順次計算し、各ビット対の積を順次積記憶回路16に記憶し、順次積を積算して積算値記憶回路17にて記憶する。マルチビット値は2進値であるため、連続する各ビットの積は、先の積の2倍の値を持つ。例えば、シングルビットの値1と多ビットの値111の積は、連続する3つの1ビットを有する。第1ビットの値は1、第2ビットの値は2、第3ビットの値は4であり、数値のビットの位置に対応する。したがって、ビット積の順次積算は、ビットの位値に対応するビットの適切なスケーリングを提供しなければならない。
【0068】
積記憶回路16が積算値記憶回路17と電気的に並列に接続されるたびに、2つの回路の電荷は結合された共有電荷として等しくなる。
図25は、シングルビットの値Bに2ビットの値Aを乗算した場合の電荷の組み合わせと均等化を示している。Bの値がゼロの場合、積は全てゼロとなり、蓄積された電荷も同様にゼロとなる(
図25には示されていない)。数値は2進表記で書かれる。
【0069】
Bが1でAが00に等しい場合、左上の列がそのプロセスを示している。電圧CMは積記憶回路16に蓄積された電荷であり、電圧CAは積算値記憶回路17に蓄積された1つの積値に対応する電荷に対する蓄積電荷である。クリアサイクル0では、積記憶回路16と積算値記憶回路17がクリアされる。サイクル1では、Aのビット0(0)にB(1)が乗算されて0積となり、積記憶回路16に蓄積された後、積算値記憶回路17に蓄積され、いずれも0積の電荷が蓄積される。サイクル2では、Aのビット1(ゼロ)にB(1)が乗算されてゼロ積となり、積記憶回路16に記憶された後、積算値記憶回路17に蓄積され、再びゼロ電荷となる。サイクル3では、アナログデジタル変換器30が積算値記憶回路17に蓄積された電荷(ゼロ電荷)をゼロに変換する。
【0070】
Bが1でAが01の場合、右上の列がそのプロセスを示している。クリアサイクル0では、積記憶回路16と積算値記憶回路17がクリアされる。サイクル1では、乗算モードでAのビット0(1)とB(1)が乗算されて積が1となり、積記憶回路16に1チャージとして蓄積される。積記憶回路16は、積算値記憶回路17のキャパシタと等しいキャパシタンスを持つキャパシタであるため、両者の間の並列接続(アキュムレートモードでスイッチ18によって有効)はキャパシタンスを2倍にし、したがって各キャパシタの電荷とキャパシタの電圧を半分にし、積算値ストレージ回路17が2分の1の相対電荷を保存するようにする。サイクル2では、Aのビット1(ゼロ)にB(1)を乗算してゼロ積とし、乗算モードの積記憶回路16に記憶させた後、蓄積モードの積算値記憶回路17に蓄積する。この組合せにより、積算値記憶回路17の2分の1の電荷と積記憶回路16のゼロの電荷が結合され、各回路の電荷と電圧が2分の1に減少し、積算値記憶回路17の相対的な電荷と電圧は4分の1になる。サイクル3では、電荷は4倍(2ビットの2進デジタル値が記憶できる値の数に等しい)にスケーリングされ、アナログデジタル変換器30は積算値記憶回路17の蓄積電荷を1(4分の1の4倍)に変換し、B=1とA=01(10進表記で1)の積となる。
【0071】
Bが1でAが10の場合、左下の列がそのプロセスを示している。クリアサイクル0では、積記憶回路16と積算値記憶回路17がクリアされる。サイクル1では、Aのビット0(ゼロ)にB(1)が乗算されてゼロ積となり、ゼロ電荷として積記憶回路16に記憶される。サイクル2では、Aのビット1(1)がB(1)と乗算されて1積となり、乗算モードで積和演算回路16に記憶され、積算値モードで積算値記憶回路17に蓄積される。この組み合わせにより、積算値記憶回路17のゼロの電荷と積記憶回路16の1の電荷が組み合わされ、積算値記憶回路17の相対的な電荷と電圧は2分の1になる。サイクル目では、電荷は4倍にスケーリングされ、アナログ/デジタル変換器30は積算値記憶回路17の蓄積電荷をB=1とA=10の積である2(2分の1の4倍)に変換する(10進数表記では2)。
【0072】
Bが1でAが11の場合、右下の列がそのプロセスを示している。クリアサイクル0では、積記憶回路16と積算値記憶回路17がクリアされる。サイクル1では、A(1)のビット0がB(1)と乗算されて1積となり、乗算モードでは1電荷として積和演算回路16に蓄積され、積算値モードでは1/2電荷電圧として積算値記憶回路17に蓄積される。第2サイクルでは、Aのビット1(1)にB(1)を乗算して1積とし、積和演算回路16に蓄積し、積算値記憶回路17に蓄積する。この組み合わせにより、積算値記憶回路17の2分の1の電荷と積記憶回路16の1の電荷が結合され、積算値記憶回路17の相対電荷と電圧は4分の3となる。サイクル目では、電荷は4倍にスケーリングされ、アナログデジタル変換器30は積算値記憶回路17に蓄積された電荷をB=1とA=11の積である3(4分の3の4倍)に変換する(10進数表記では3)。
【0073】
図26Aおよび
図26Bは、4ビットの2進値Aに対する同じプロセスを示している。積記憶回路16の積電圧(電荷)は、Aの値に対応する各列対の左側に示され、積算値記憶回路17の積算電圧(電荷)は、示されたサイクルのAの値に対応する各列対の右側に示されている。A=0000の場合、積と積算電荷は全てゼロとなり、積算値はゼロとなる。
【0074】
A=0001の場合、Bが1であり、Aのビット0が1であるため、積記憶回路16に格納される第1積は1である。第1積は積記憶回路16と積算値記憶回路17で等しく共有されるため、積算値記憶回路17は相対的に1/2の値を記憶する。以後、積は0となり、積算値記憶回路17の電荷は積記憶回路16の電荷と共有されるたびに1/2ずつ減少し、2サイクル目で1/4、3サイクル目で1/8、4サイクル目で1/16に減少する。Aは4ビットなので、蓄積された電荷は16倍され、その結果、積は1/16の16倍、つまり0001(10進数の1)に等しくなる。
【0075】
A=0010の場合、Aのビット0が0であるため、第1積は0となり、第1積算値は0となる。第2積(Aのビット1)は1であり、積電荷は積記憶回路16と積算値記憶回路17の間で等しく共有されるため、対応する蓄積相対電荷は2分の1である。以後、Aのビットがゼロであるため積はゼロとなり、積算値記憶回路17の電荷は積記憶回路16の電荷と共有されるたびに1/2ずつ減少するため、電荷はサイクル3では1/4に、サイクル4では1/8に減少する。蓄積された電荷は16倍され、その結果、積は16の1/8倍、すなわち0010(10進数値2)に等しくなる。
【0076】
A=0011の場合、積記憶回路16と積算値記憶回路17の間で電荷が等しく共有されるため、第1積は1であり、第1積算値は2分の1である。第2積(Aのビット1)は1であり、積記憶回路16の1の電荷が積算値記憶回路17の2分の1の電荷と等しく共有されるため、対応する積算相対電荷は3/4である。その後、積は0となり、積算値記憶回路17の電荷は積記憶回路16の電荷と共有されるたびに2分の1ずつ減少するので、電荷は3サイクル目で3/8、4サイクル目で3/16に減少する。蓄積された電荷は16の係数でスケーリングされ、その結果、16の3/16倍または0011(10進数値3)に等しい積となる。
【0077】
A=0100の場合、第1積はゼロであり、第1積算値はゼロである。A=0100の場合、第1積は0であり、第1積算値は0である。Aのビット1が0であるため、2番目の積算値も同様に0である。第3積(第3サイクルのAのビット2)は1であり、対応する積算相対電荷は、1を記憶する積記憶回路16と0を記憶する積算値記憶回路17との間で電荷が等しく共有されるため、2分の1となる。その後、積は0となり、積記憶回路17の電荷は積記憶回路16の電荷と共有されるたびに1/2ずつ減少し、4サイクル目には1/4に減少する。蓄積された電荷は16の係数でスケーリングされ、その結果、4分の1の16倍または0100(10進数値4)に等しい積となる。
【0078】
A=0101の場合、第1積は1であり、第1積算値は1/2である。これは、電荷が積記憶回路16と積算値記憶回路17で等しく分担されるためであり、相対値は1/2である。第2積(サイクル2)は、Aのビット1が0であるため0となり、積算値は0と1/2の平均値となり、1/4となる。第3積(サイクル3)は、Aのビット2が1であるため1であり、積算値は1/4と1の平均であり、5/8に等しい。第4積(サイクル4)は、Aのビット3が0であるため0となり、積算値は0と5/8の平均となり、5/16に等しくなる。係数16でスケーリングした結果、得られる積は5/16の16倍、つまり0101(10進数5)に等しくなる。
【0079】
A=0110の場合、第1積は0であり、第1積算値は0である。第2積(サイクル2)は、Aのビット1が1であるため1であり、積算値は0と1の平均であり、1/2に等しい。第3積(サイクル3)は、Aのビット2が1なので1となり、積算値は1と1/2の平均となり、3/4となる。第4積(サイクル4)は、Aのビット3が0であるため0となり、積算値は0と3/4の平均となり、3/8と等しくなる。倍率16倍でスケーリングした後の積は、3/8×16、つまり0110(10進数6)に等しい。
【0080】
A=0111の場合、第1積は1であり、第1積算値は1/2である。第2積(サイクル2)は、Aのビット1が1であるため1であり、積算値は1と1/2の平均となり、3/4となる。第3積(サイクル3)は、Aのビット2が1であるため1であり、積算値は1と3/4の平均となり、7/8となる。第4積(サイクル4)は、Aのビット3が0であるため0となり、積算値は0と7/8の平均となり、7/16となる。係数16でスケーリングした後の積は、16の7/16倍、つまり0111(10進数7)に等しい。
【0081】
図26Bは、値1000から値1111の積算結果を示している。
図26Bに示すように、最終的なビット積が1であるため、サイクル3の積算値が1と平均化されて最終的な結果となることを除けば、積は
図26Aに示すものと同じである。
【0082】
図25~
図26Bは、
図16~
図19に示したような、シングルビットBにマルチビット値Aを乗算するビット乗算における電荷の反復蓄積を数学的に示したものである。このプロセスをマルチビット値Bの各ビットについて繰り返すことにより(
図20および21で説明したように)、2つのマルチビット値を高速かつ低消費電力で計算することができる。
【0083】
計算は数学的に要約できる。ビットBとNビットのマルチビット値A(A(i)はマルチビット値Aのビットiであり、最初のビット(LSBの最下位ビット)はi=0の場合A(0)であり、最後のビット(最上位ビットまたはMSB)はA(N-1)であるとすると、累積された積は次のようになる。
【数1】
【0084】
Mビットを有し、最初のビット(最下位ビット)がB(0)であり、最後のビット(最上位ビットまたはMSB)がB(M-1)であるマルチビット値Bと、Nビットを有し、i=0で最初のビット(最下位ビット)がA(0)であり、最後のビット(最上位ビットまたはMSB)がA(N-1)であるマルチビット値Aとが乗算される実施形態では、A×Bの積が積算される。
【数2】
【0085】
B(j)がゼロに等しい場合、iに対する総和を計算する必要はなく、計算の時間とエネルギーを節約できる。
【0086】
本開示の実施形態は、図に図示され、本明細書で説明される特定の例に限定されない。熟練した設計者であれば、説明した動作を実施するためにアナログ回路およびデジタル回路の様々な実装を採用することができ、そのような実装が本開示の実施形態に含まれることを容易に理解するであろう。
【0087】
本開示の実施形態は、ニューラルネットワーク、パターンマッチングコンピュータ、または機械学習コンピュータにおいて使用することができ、低減された電力およびハードウェア要件で効率的かつタイムリーな処理を提供する。このような実施形態は、コンピューティングアクセラレータ、例えば、ニューラルネットワークアクセラレータ、パターンマッチングアクセラレータ、機械学習アクセラレータ、または静的または動的処理ワークロード用に設計された人工知能コンピューティングアクセラレータを構成することができる。
【0088】
実施形態の特定の実施態様を説明してきたが、当業者には、本開示の概念を組み込んだ他の実施態様を使用することができることが今や明らかになるであろう。したがって、本開示は、特定の実施態様に限定されるべきではなく、むしろ、以下の特許請求の範囲の精神および範囲によってのみ限定されるべきである。
【0089】
本明細書を通じて、装置およびシステムが特定の要素を有する、含む、または構成されるものとして記載される場合、またはプロセスおよび方法が特定のステップを有する、含む、または構成されるものとして記載される場合、さらに、開示された要素から本質的に構成される、または構成される開示された技術の装置およびシステムが存在すること、および開示された処理ステップから本質的に構成される、または構成される開示された技術によるプロセスおよび方法が存在することが企図される。
【0090】
開示された技術が動作可能である限り、ステップの順序や特定の動作を実行する順序は重要ではないことを理解すべきである。さらに、状況によっては、2つ以上のステップまたは動作を同時に実施することもできる。本開示は、その特定の実施形態を特に参照して詳細に説明されてきたが、以下の特許請求の範囲の精神および範囲内で、変形および修正が効果的に行われ得ることが理解されるであろう。
【符号の説明】
【0091】
C クリア回路
M 乗算回路/乗算器
O 出力値
P 積
S スイッチ/スイッチ回路
VM 電圧乗算器
10 qmac/シングルビット積和演算回路
11 iqmac/反復シングルビット積和演算回路
12 シングルビット記憶素子
13 マルチビット記憶素子
14 ビット乗算/ビット乗算回路
15、15A、15B シリアルスイッチ回路
16 キャパシタ/アナログ記憶回路/積記憶回路
17 キャパシタ/アナログ記憶回路/積算値記憶回路
18 スイッチ/スイッチ回路
19 クリア/クリア回路
20 ハイブリッド積和演算回路
21 積コラム
22 ハイブリッドマルチビット乗算器
24 ハイブリッドマトリクス積和演算回路
30 アナログデジタルコンバータ
32 デジタルビット積算器
34 積算デジタル記憶回路
36 ステートマシンとデジタルシフト回路
40 オペレーショナルアンプリファイア/オペアンプ
50 マルチプレクサ
51 デジタルデマルチプレクサ
52 デジタルシフト積算器
53 アナログデマルチプレクサ
54 加算器
56 レジスタ/メモリ
60 アキュムレーションスイッチ
70 制御回路
100 qmac提供ステップ
102 A値B値提供ステップ
105 BビットにカウントM=0をセットするステップ
108 BbitM選択ステップ
110 CMとCAクリアステップ
115 Aビット数N=0セットステップ
120 AビットN選択ステップ
125 乗算モードへの切り替えステップ
130 ビットNを乗算し、積を記憶するステップ
135 スイッチをアキュムレートモードにセットするステップ
140 積算ステップ
145 全Aビット積算テストステップ
150 AビットカウントNをインクリメントするステップ
155 アナログデジタル変換ステップ
160 全Bビットの乗算テストステップ
165 ビット積M記憶ステップ
170 BビットをM~M+1カウントセットステップ
175 ビット積Mの総和算出ステップ
200 マルチビット値をシングルビットで乗算するステップ
【国際調査報告】