(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-07-25
(54)【発明の名称】ビットオーダバイナリ加重乗算器/積算器
(51)【国際特許分類】
G06F 17/16 20060101AFI20220715BHJP
G06G 7/16 20060101ALI20220715BHJP
G06G 7/184 20060101ALI20220715BHJP
【FI】
G06F17/16 M
G06G7/16 510
G06G7/184
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021565733
(86)(22)【出願日】2020-04-22
(85)【翻訳文提出日】2022-01-04
(86)【国際出願番号】 US2020029326
(87)【国際公開番号】W WO2020226898
(87)【国際公開日】2020-11-12
(32)【優先日】2019-05-09
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390040660
【氏名又は名称】アプライド マテリアルズ インコーポレイテッド
【氏名又は名称原語表記】APPLIED MATERIALS,INCORPORATED
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林特許業務法人
(72)【発明者】
【氏名】イェン, シェ-ファ
(72)【発明者】
【氏名】グオ, フランク ツェン-ウェン
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056AA04
5B056BB71
5B056FF01
(57)【要約】
ベクトル行列乗算を実行するための様々な構成がここでは提供される。バイナリ符号化された値を含むデジタル入力ベクトルが、複数の1ビットデジタル/アナログ変換器(DAC)を使用して、複数のアナログ信号に変換されうる。アナログベクトル行列乗算器を使用して、ベクトル行列乗算演算が、複数のアナログ信号の各ビットオーダに対して、重み行列を用いて実行されうる。実行されたベクトル行列乗算演算ごとに、アナログベクトル行列乗算器の出力のビットオーダ標識が格納されうる。順次実行されたベクトル行列乗算演算のビットオーダ加重合算が実行されうる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ベクトル行列乗算を実行する方法であって、
複数の1ビットデジタル/アナログ変換器(DAC:digital to analog converter)を使用して、複数のバイナリ符号化された値を含むデジタル入力ベクトルを、複数のアナログ信号に変換することと、
アナログベクトル行列乗算器を使用して、前記複数のアナログ信号の各ビットオーダに対して、重み行列を用いるベクトル行列乗算演算を順次実行することと、
順次実行されたベクトル行列乗算演算ごとに、前記アナログベクトル行列乗算器の出力のビットオーダ標識を格納することと、
合算回路を用いて、前記順次実行されたベクトル行列乗算演算のビットオーダ加重合算を実行することと
を含む、ベクトル行列乗算を実行する方法。
【請求項2】
各ビットオーダに対して、前記重み行列を用いて前記ベクトル行列乗算演算を順次実行するためのクロックサイクルの数が、前記入力ベクトルの前記バイナリ符号化された値のビットオーダの数に等しい、請求項1に記載のベクトル行列乗算を実行する方法。
【請求項3】
前記ビットオーダ加重合算が、アナログ回路を使用して実行される、請求項1に記載のベクトル行列乗算を実行する方法。
【請求項4】
前記ビットオーダ加重合算が、前記合算回路によって蓄えられた電荷量に基づいて実行される、請求項3に記載のベクトル行列乗算を実行する方法。
【請求項5】
前記ビットオーダ加重合算が、1クロックサイクル内に実行される、請求項1に記載のベクトル行列乗算を実行する方法。
【請求項6】
ベクトル行列乗算回路であって、
複数のデジタル入力であって、各デジタル入力が入力ベクトルのバイナリ符号化された入力値を受け取る、複数のデジタル入力と、
複数の1ビットデジタル/アナログ変換器(DAC:digital to analog converter)であって、
各1ビットDACが、前記複数のデジタル入力の対応するデジタル入力に接続されており、
各1ビットDACが、前記対応するデジタル入力に対するバイナリ符号化されたアナログ信号を出力する、
複数の1ビットデジタル/アナログ変換器と、
一回に、単一のビットオーダに対してバイナリ符号化ベクトル乗算演算を実行するアナログベクトル行列乗算回路であって、前記複数の1ビットDACの各1ビットDACから、前記バイナリ符号化されたアナログ信号を受信するアナログベクトル行列乗算回路と、
合算回路であって、前記アナログベクトル行列乗算回路からの出力を順次受信し、前記アナログベクトル行列乗算回路から受信した各出力に対して、当該出力のビットオーダに従って重み付けし、前記アナログベクトル行列乗算回路からの、重み付けした前記受信した出力を合算する合算回路と、
を備える、ベクトル行列乗算回路。
【請求項7】
前記アナログベクトル行列乗算回路が、ベクトル乗算出力を示す複数の電流を出力する、請求項6に記載のベクトル行列乗算回路。
【請求項8】
前記アナログベクトル行列乗算回路が、前記アナログベクトル行列乗算回路からの出力に所定の重み付けを適用する複数の重み付け要素を含む、請求項6に記載のベクトル行列乗算回路。
【請求項9】
前記合算回路が、アナログ的要素を使用して、前記アナログベクトル行列乗算回路からのバイナリ符号化された前記受信した出力を合算する、請求項6に記載のベクトル行列乗算回路。
【請求項10】
前記合算回路が、並列に配置された複数のキャパシタを含む、請求項9に記載のベクトル行列乗算回路。
【請求項11】
前記複数のキャパシタの各キャパシタが、或るビットオーダの重み付けに対応する静電容量を有する、請求項10に記載のベクトル行列乗算回路。
【請求項12】
ベクトル行列乗算を実行する装置であって、
複数のバイナリ符号化された値を含む入力ベクトルを、複数のアナログ信号に変換する複数の1ビットデジタル/アナログ変換器(DAC:digital to analog converter)と、
前記複数のアナログ信号の各ビットオーダに対して、ベクトル行列乗算演算を順次実行する手段と、
順次実行されたベクトル行列乗算演算ごとに、前記ベクトル行列乗算演算の出力のビットオーダ標識を格納する手段と、
ビットオーダ加重積算を実行して、ビットオーダごとの前記順次実行されたベクトル行列乗算演算の総和を示す総和出力を生成する手段と、
を備える、ベクトル行列乗算を実行する装置。
【請求項13】
各ビットオーダに対して、前記ベクトル行列乗算演算を順次実行するためのクロックサイクルの数が、前記入力ベクトルの前記バイナリ符号化された値のビットオーダの数に等しい、請求項12に記載のベクトル行列乗算を実行する装置。
【請求項14】
前記ビットオーダ加重積算が、アナログ回路を使用して実行される、請求項13に記載のベクトル行列乗算を実行する装置。
【請求項15】
前記ビットオーダ加重積算が、合算回路によって蓄えられた電荷量に基づいて実行される、請求項14に記載のベクトル行列乗算を実行する装置。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
本出願は、2019年5月9日に出願された米国特許出願第16/408,059号の優先権の利益を主張し、その内容は、全ての目的のためにその全体が参照により本明細書に組み込まれる。
【背景技術】
【0002】
ベクトル行列乗算演算は、ベクトルと行列との積の和として定義することができる。具体的には、数式1が、積を合算するベクトル行列乗算演算を定義するために使用されうる。
【0003】
数式(1)において、Xiは、(バイナリビットを用いて電子環境において表すことが可能な)値で構成される入力ベクトルであり、Wijは、行列重み値を表す。Yは、積ベクトルを合算して得られる出力ベクトルである。本関数は、様々な信号処理、画像処理、及び、人工知能の用途(例えばニューラルネットワークの使用時)において適用される。
【0004】
本数式は、デジタル的に実行されると、処理資源及び/又は処理エネルギーを大量に消費する可能性がある。従来のアナログ的要素、又はデジタルとアナログとのハイブリッド要素は、比較的多数のクロックサイクル、及び/又は実装するための比較的大きな空間領域を必要としうる。
【発明の概要】
【0005】
ベクトル行列乗算を実行するための様々な構成がここでは提供される。バイナリ符号化された値を含むデジタル入力ベクトルが、複数の1ビットデジタル/アナログ変換器(DAC:digital to analog converter)を使用して、複数のアナログ信号に変換されうる。アナログベクトル行列乗算器を使用して、ベクトル行列乗算演算が、複数のアナログ信号の各ビットオーダに対して、重み行列を用いて実行されうる。実行されたベクトル行列乗算演算ごとに、アナログベクトル行列乗算器の出力のビットオーダ標識が格納されうる。ビットオーダごとに順次実行されたベクトル行列乗算演算のビットオーダ加重合算(bit-order weighted summation)が実行されうる。
【0006】
そのような構成は、1つ以上の以下の特徴を含みうる。即ち、各ビットオーダについて、重み行列を用いてベクトル行列乗算演算を順次実行するためのクロックサイクルの数は、入力ベクトルのバイナリ符号化された値のビットオーダの数と等しいとすることができる。ビットオーダ加重合算が、アナログ回路を使用して実行されうる。ビットオーダ加重合算が、合算回路によって蓄えられた電荷量に基づいて実行されうる。ビットオーダ加重合算が、1クロックサイクル内に実行されうる。ビットオーダ加重合算が、合算回路によって蓄えられた累積した総電荷量に基づきうる。電圧が出力され得、ここで、電圧の大きさが合算値を示す。
【0007】
様々な実施形態の性質及び利点のさらなる理解が、以下の図面を参照することによって実現されうる。添付の図面において、同様の構成要素又は特徴には、同じ参照符号が付せられうる。更に、同じ種類の様々な構成要素は、参照符号の後にダッシュを付けること、及び類似の構成要素同士を区別する第2の符号によって区別されうる。本明細書において第1の参照符号のみが使用される場合、明細書の記載は、第2の参照符号に関わりなく、同じ第1の参照符号を有する類似の構成要素のうちの任意の1つに適用されうる。
【図面の簡単な説明】
【0008】
【
図1】ベクトル乗算がアナログ要素を用いてビットオーダバイナリ値に対して実行されるベクトル行列乗算回路の一実施形態を示す。
【
図2】アナログベクトル行列乗算器の一実施形態を示す。
【
図4】ベクトル行列乗算演算を実行する方法の一実施形態を示す。
【発明を実施するための形態】
【0009】
本明細書で詳述する実施形態は、従来のアナログ的な実施形態と比べて、乗算器/積算器(MAC:multiplier accumulator)の動作が、より短時間(例えば、より少数のクロックサイクル)の間に実行されることを可能とし、デジタル入力信号を復号することを必要としない。それどころか、バイナリ符号化された(すなわち「ビットオーダとされた(bit-ordered)」値の形態により、入力ベクトルを受信することができる。このような値は、典型的に、LSBからMSBへと、又はMSBからLSBへと配置され(例えば、値14を表す「1110」)、アナログ領域で乗算し、その後、アナログ領域又はデジタル領域で合算することが可能である。本明細書で詳述される構成は、バイナリ符号化された値のアナログ変換に対して直接的に実行され、入力ベクトルを一連のパルス(例えば、14の値を表すための14個のパルス)に変換する必要がない。これにより、従来のアナログ構成よりもかなり迅速に計算を行うことが可能である。より具体的には、ベクトル行列乗算を実行するための演算サイクル数を、
倍減らすことが可能である。この数式では、分母に示される追加の2サイクルが、実現によって変わりうる。例えば、本明細書で詳述する実施形態は、従来のアナログMAC設計と比べて25.6倍速度を上げられる8ビットの入力ベクトルのためのベクトル行列乗算を実行することが可能である。
【0010】
さらに、本明細書で詳述する構成は、従来のアナログMAC設計に対してかなりの空間を節約することができる。1ビットデジタル/アナログ変換器(DAC)を使用することによって、並行して受信されたバイナリ値を変換するマルチビットDACが使用される場合よりも、必要とされる面積が小さくなりうる。具体的には、複数の1ビットDACが、バイナリ符号化された入力ベクトルを、バイナリ符号化されたアナログ電圧値へと並行して変換するために使用されうる。例えば、4ビットの入力ベクトルの場合、4クロックサイクルが、1ビットDACからバイナリ符号化されたアナログ電圧値を出力するために必要となりうる(LSBのための1サイクル、第2のLSBのための1サイクル、第2のMSBのための1サイクル、MSBのための1サイクル)。1ビットDACの数は、入力ベクトル(数式1のXi)の数に依存しうる。
【0011】
行列乗算演算は、一回に、入力ベクトルの値の各ビットオーダ(bit-order)に対して順次実行されうる。各1ビットDACによる並行する出力が、ベクトル行列乗算回路の重み付け要素に入力されうる。ベクトル行列乗算器回路は、様々な重み付け要素を有することができ、この様々な重み付け要素は数式1のWij行列に対応し、当該Wij行列とXiとが掛け合わされる。ベクトル行列乗算回路は、入力ベクトルの各ビットオーダについて乗算演算を実行しうる。したがって、入力ベクトルが4ビット長の値を含む場合には、ベクトル行列乗算回路は、時間領域において4個のビットオーダのそれぞれのために、乗算演算を順次実行することができる。ベクトル行列乗算器回路からの出力は、合算回路に出力される連続的な信号(例えば、乗算結果を示す電流又は何らかの電気特性を有している)でありうる。
【0012】
合算回路は、行列乗算演算が実行された後で、ビットオーダ加重合算を実行するよう機能しうる。合算回路は、アナログ領域又はデジタル領域のいずれかで機能しうる。合算回路は、ベクトル行列乗算回路から信号を受信して、各行列乗算演算の標識を、適切なビットオーダのために重み付けがされるように格納し、合算を実行して出力値Yを決定することができる。
【0013】
図1は、バイナリ符号化された入力に対して、アナログ要素を用いてベクトル乗算を実行する回路100の一実施形態を示す。回路100は、1ビットDAC114と、アナログベクトル行列乗算器122と、合算要素132と、を含みうる。回路100は、3つのセクションに分けられていると理解することができる。セクション110は、バイナリ符号化されたデジタル信号(入力ベクトル)を受け取って、バイナリ符号化されたデジタル信号を、バイナリ符号化されたアナログ信号に変換する。セクション120は、バイナリ符号化されたアナログ信号を受け取って、バイナリ符号化されたアナログ信号と所定の行列(例えば、重み行列)との間の乗算を示すバイナリ符号化された積を出力する。セクション130は、バイナリ符号化された積を合算し、かつバイナリ符号化された信号のビットオーダ加重を考慮に入れるために、ビットオーダ加重合算を実行する。したがって、バイナリ符号化された入力信号の各ビットの正確なビットオーダが、総和が正確に決定されうるように維持される。セクション130は、セクション120による積の出力を効率的に合算するために、アナログ要素を使用しうる。セクション130は、デジタル領域においても機能しうる。
【0014】
具体的には、セクション110において、複数のデジタル入力信号112が並行して受信されうる。デジタル入力信号112は、バイナリ符号化された値であり、デジタル入力信号112の各デジタル入力信号は、数式1のベクトルXiの値を表しうる。入力信号112のバイナリビットが、電圧レベル(例えば、1についてハイ(high)、ゼロについてロー(low))、パルス(例えば、1について1パルス、ゼロについてパルスなし)、又は時間(例えば、1について第1の期間のパルス、ゼロについて第2の期間のパルス)によって表されうる。図に示すように、4個のデジタル入力信号(112-1、112-2、112-3、及び112-4)が並行して受信される。これらの入力信号のそれぞれが、入力ベクトルの別々の値を受け取る。他の実施形態において、より少数又はより多数のデジタル入力信号が受信されうる。デジタル入力信号112のそれぞれがバイナリ符号化されうる。従って、回路のデジタル部分のクロックサイクルごとに、特定のビットオーダのための1ビットが、デジタル入力信号112として受信される。例えば、4ビットのバイナリ値が各デジタル入力信号を介して入力されている場合には、4クロックサイクルが、並行してバイナリ値を受信してアナログ領域に変換するために必要となりうる。デジタル入力信号112は、各値のビットオーダが、最下位ビット(LSB:least significant bit)から最上位ビット(MSB:most significant bit)へと並ぶように、MSBからLSBへと並ぶように、又は任意の所定のパターンに並ぶように、バイナリ符号化されうる。
【0015】
デジタル入力112は、1ビットDAC114に入力されうる。ここでは、図に示すように、4個の1ビットDAC114(114-1、114-2、114-3、114-4)が存在する。他の実施形態において、より少数又はより多数の1ビットDAC114が存在しうる。単一の1ビットDACが、各バイナリ符号化デジタル入力信号112のために存在しうる。1ビットDAC114のそれぞれが、受信したデジタル値を示すアナログ信号を出力することができる。したがって、バイナリ符号化されたアナログ信号116(116-1、116-2、116-3、116-4)は、デジタル入力信号112のアナログ変換を表わしうる。
【0016】
セクション120では、アナログベクトル行列乗算器122が、バイナリ符号化されたアナログ信号116を受信する。アナログベクトル行列乗算器122は、入力値の各ビットオーダに対して、乗算演算を順次実行する(例えば、LSBのために第1のクロックサイクル、第2のLSBのために第2のクロックサイクル、第2のMSBのために第3のクロックサイクル…など)。したがって、受信されたバイナリ符号化されたアナログ信号116の各ビットオーダに対して、別個の乗算演算が行われる。アナログベクトル行列乗算器122の可能な実施形態に関するさらなる詳細は、
図2に関連して提供される。バイナリ符号化乗算結果信号124が、合算要素132に出力されうる。
【0017】
合算要素132は、ビットオーダ加重合算機能を実行するとして理解されうる。合算要素132は、アナログベクトル行列乗算器122によって現在評価されているビットのビットオーダを正確に考慮に入れ、そのビットオーダが考慮されるように出力を格納して、合算機能を実行する。本明細書で詳述するように、ビットオーダの重み付けは合算要素132によって実行され、従って、入力値が、ベクトル行列乗算回路によって評価されるときに、バイナリ符号化された状態のままであることが可能となる。
【0018】
合算回路の可能なアナログ的実施形態において、電荷の蓄積及び再分配が、受動的なビットオーダ加重合算を実行するために使用されうる。バイナリ符号化された信号が、アナログベクトル行列乗算器122から受信されると、合算要素132は、部分和を積算するために、電荷蓄積を使用することができる。全てのビットオーダ(例えば、4ビットの値を有する入力ベクトルについて4個のビットオーダ)が、アナログベクトル行列乗算器122によって乗算され、合算要素132が、例えば電荷の蓄積を使用するなどして部分和を格納してしまうと、電荷を再分配することができ、最終的な総和の値を表す電圧が出力されうる。合算要素132のアナログ的実装の可能な実施形態に関するさらなる詳細が、
図3において提示される。
【0019】
図2は、アナログに変換されている入力ベクトルの1つのビットオーダを評価するアナログベクトル行列乗算器の一実施形態200を示す。アナログベクトル行列乗算器201は、
図1のアナログベクトル行列乗算器122の一実施形態でありうる。しかしながら、実施形態200は一例にすぎないと理解されたい。
図2では、バイナリベクトル入力X
iが、W
ijと掛け合わされる。アナログベクトル行列乗算器201は、複数の重み付け要素(202、204、206、208、210、212、214、及び216)を含みうる。各重み付け要素が、1ビットDACから、バイナリ符号化されたアナログ信号116のうちの1つのバイナリ符号化アナログ信号を受け取りうる。本例では、重み付け要素は、自身が受信したバイナリ符号化されたアナログ信号の電圧、及び、この特定の重み付け要素の重み値に基づいて、電流を出力することができる。例えば、各重み付け要素は、様々なコンダクタンスを用いて実現されうる。重み付け要素のコンダクタンスを変えることにより、入力電圧に依存して出力される電流の量が変えられうる。例えば、電圧が1Vであり、重み付けブロックのコンダクタンスが8μSである場合に、8μAの出力が得られる。この値はさらに、当該値のビットオーダに基づいて重み付けされうる。したがって、最下位ビットについては乗数が1であり、第2のLSBについては乗数が2…などとなる。幾つかの実施形態において、各重み付け要素によって用いられる重みが、製造時に予め決定され、固定される。他の実施形態において、各重み付け要素の重みは、製造後に設定可能であってよく、実施形態200の使用中に再設定可能であってよい。
【0020】
各重み付け要素(202、204、206、208、210、212、214、及び216)の出力は、電流といった電気特性でありうる。同じ電流出力に接続された重み付け要素から出力される電流が、一緒に合算されうる。したがって、電流出力220は、重み付け要素202、204、206、及び208によって出力された電流の総和を含むことができ、電流出力222は、重み付け要素210、212、214、及び216によって出力された電流の総和を含むことができる。
【0021】
入力ベクトルの各値の1ビットが、1回に評価される(ビットオーダは、アナログベクトル行列乗算器201によっては考慮されない)。例えば、4個の4ビット値を有する入力ベクトルの場合、最初に各値のMSBが評価され、続いて各値の第2のMSBが評価され、続いて第2のLSBが評価され、最後に各値のLSBが評価される(したがって、1ビットDACによって出力されるバイナリ符号化されたデータの4クロックサイクルに相当する)。他の実施形態において、評価は、LSBからMSBへと、又は所定の任意の順序で進行しうる。(本書の後半で詳述するように、アナログベクトル行列乗算器201の出力は、合算回路によって重み付けがされ、当該ベクトル行列乗算器によって乗算演算が実行されているビットのビットオーダが考慮に入れられる。)
【0022】
重み付け要素の列の数は任意であり、入力ベクトルが掛けられている重み行列に基づきうる。したがって、実施形態200では2個の列が存在するが、他の要素において、より少数又はより多数の列が存在してよい。重み付け要素の行の数は、入力ベクトル内にある値の数に対応しうる。例えば、数式2は、アナログベクトル行列乗算器201によって出力される電流を表しうる。
【0023】
本例を続けると、電流出力(例えば、電流出力220、222)を一緒に接続して、バイナリ符号化乗算結果信号124を生成することができる。合算要素132が、各ビットオーダに適切に重み付けをし、格納し、次いで合算し、最終的な正確な総和を取得する。
【0024】
図3は、アナログ合算回路の一実施形態300を示している。種々の異なる種類の回路が、電圧、電流、電荷又は何らかの他の電気特性の形態でありうる信号を蓄積して再分配するために使用されうると理解されたい。アナログ合算回路の重要な観点は、アナログベクトル行列乗算器201の出力に対して、適切なビット加重を適用したことである。例えば、入力ベクトルの第2のLSBに対応する出力がアナログベクトル行列乗算器201によって出力されたときには、アナログ合算回路は、LSBの2倍、かつ第3のLSBの半分のビット加重を適用する。実施形態300は、
図1の合算要素132を表しうる。入力301は、アナログベクトル行列乗算器からのバイナリ符号化乗算結果信号124を表す。入力301が、センス増幅器310に供給される。センス増幅器310は、当該センス増幅器310によって入力301で受信した電流に基づいて、電圧を出力する。具体的には、実施形態300は、受動的な電荷共有及び再分配を使用しうる。このような構成は、電力消費を減らして、出力値に対する熱雑音の影響を低減するのを助けうる。
【0025】
実施形態300は、キャパシタスイッチアレイ302を含む。キャパシタは、ビットオーダ加重することができ、即ち、各キャパシタの静電容量は、或る特定のビットオーダのために重み付けされた電荷量を受動的に蓄えるよう選択されうる。一例として、1個の4ビット値を出力するために、4個のキャパシタが存在する。キャパシタ316-1は、LSBに対応する電荷を蓄えるために使用されうる。したがって、キャパシタ316-1は、C(但し、Cは単位値)の静電容量を有しうる。キャパシタ316-2は、第2のLSBに対応する電荷を蓄えるために使用されうる。したがって、キャパシタ316-2は、2C(これは、Cの重みの2倍であり、したがって、バイナリビットオーダにおける第2のLSBに対応している)の静電容量を有しうる。キャパシタ316-3は、第2のMSBに対応する電荷を蓄えるために使用されうる。したがって、キャパシタ316-3は、4Cの静電容量を有しうる。キャパシタ316-4は、MSBに対応する電荷を蓄えるために使用されうる。したがって、キャパシタ316-4は、8Cの静電容量を有しうる。各キャパシタは、ビットオーダに対応した静電容量であって、アナログベクトル行列乗算器の出力を示す電荷を蓄えるために自身がそのために使用される静電容量を有する。静電容量は、数式3に従って計算することが可能であり、但し、Cは単位値であり、Nは入力ベクトルの値におけるビット数である。
【0026】
デジタル的でありうるスイッチ制御ロジック部330であって、セクション110と同じクロックと接続されたスイッチ制御ロジック部330が、スイッチ312、314-1、314-2、314-3、314-4、及び314-5を開くか又は閉じるかを制御することが可能である。簡単にするために、
図3では、スイッチ制御ロジック部330と、スイッチ312及び314と、の間の通信は図示されていない。スイッチ制御ロジック部330は、専用の論理回路であってよく、又は、処理システムの一部として組み込まれてよい。スイッチ制御ロジック部330は、スイッチ312が開いている間は、初めのうちはスイッチ314-1、314-2、314-3、314-4、及び314-5を閉じうる。スイッチ314-5はリセットとして機能することができ、キャパシタ316-1、316-2、316-3、及び316-4内に存在する電荷を、接地320へと放電させる。
【0027】
次いで、スイッチ制御ロジック部330は、アナログベクトル行列乗算器122によって評価されている現在のビットオーダと関連付けられた静電容量を有するキャパシタが、バイナリ符号化乗算結果信号124に接続されるように、スイッチを制御することができる。スイッチ制御ロジック部330は、スイッチ312を閉じて、スイッチ314-2、314-3、314-4、及び314-5を開くことができる。したがって、スイッチ314-1のみが閉じられた状態のままであることができ、したがって、キャパシタ316-1がセンス増幅器310の出力に接続される。このクロックサイクルの間に、アナログベクトル行列乗算器122は、LSBに対応するバイナリ符号化乗算結果信号を出力しうる。次のクロックサイクルの間、スイッチ制御ロジック部330は、スイッチ312を閉じた状態に保って、スイッチ314-1を開き、スイッチ314-2を閉じることができる。このクロックサイクルの間、アナログベクトル行列乗算器122は、第2のLSBに対応するバイナリ符号化乗算結果信号を出力しうる。キャパシタ316-2が、キャパシタ316-1の2倍の静電容量を有するおかげで、適切なビット加重が、蓄えられた電荷量において受動的に適用される。次のクロックサイクルの間、スイッチ制御ロジック部330は、スイッチ312を閉じた状態に保って、スイッチ314-2を開き、スイッチ314-3を閉じることができる。このクロックサイクルの間、アナログベクトル行列乗算器122は、第2のMSBに対応するバイナリ符号化乗算結果信号を出力しうる。キャパシタ316-3が、キャパシタ316-2の2倍の静電容量を有することにより、適切なビット加重が、蓄えられた電荷量において受動的に適用される。次のクロックサイクルの間、スイッチ制御ロジック部330は、スイッチ312を閉じた状態に保って、スイッチ314-3を開き、スイッチ314-4を閉じることができる。このクロックサイクルの間、アナログベクトル行列乗算器122は、MSBに対応するバイナリ符号化乗算結果信号を出力しうる。キャパシタ316-4が、キャパシタ316-3の2倍の静電容量を有するおかげで、蓄えられた電荷の量によって、適切なビット加重が受動的に適用される。この段階において、スイッチドキャパシタ-スイッチアレイ302は、バイナリ符号化乗算結果を電荷として、ビットオーダ加重されたキャパシタ内に別々に蓄える。
【0028】
この時点では、キャパシタ316-1、216-2、316-3、及び316-4のそれぞれが、そのキャパシタの特定のビットオーダに対応した電荷量(Q)を蓄える。或る特定のキャパシタで蓄えられる電荷量は、所与のビットオーダNについて、数式4により定められうる。
【0029】
したがって、電荷量は、キャパシタの静電容量であって、センス増幅器310により出力された電圧が乗じられる静電容量に等しい。式3に関連して詳述したように、静電容量は、ビットオーダが大きくなるごとに
倍増大する。
【0030】
次のクロックサイクルの間、スイッチ制御ロジック部330は、スイッチ312を開いて、スイッチ314-5を開いたままにし、スイッチ314-1、314-2、314-3、及び314-4を閉じることができる。本ステップは、電荷再分配ステップとして理解されうる。各キャパシタが、自身のビットオーダに対応する電荷量を蓄えるため、電荷再分配段階の間に、各個別キャパシタ内の電荷が、キャパシタ316-1、316-2、316-3、及び316-4の間で分配され、最終的な総和を示す。再分配が一旦行われてしまうと、総和が、キャパシタ316のトッププレートでの電圧値として表され、総和出力134を介して出力される。数式5は、各キャパシタ内に蓄積された電荷に基づき総和出力134を介して出力される電圧値を表す。
【0031】
数式5では、各キャパシタの電荷が、そのキャパシタが関連付けられたビットオーダに基づき適切に重み付けられた量を、アナログベクトル行列乗算の最終的な加重和を表す総和出力134としてのVOutに対して提供する。
【0032】
トータルで、入力ベクトルが4ビット値を含む場合、有効な総和出力134が出力されるまで合算プロセスは6クロックサイクルかかりうる。より一般的に言えば、合算プロセスは、当該値の各ビットについて、リセットクロックサイクル、再分配クロックサイクル、及びクロックサイクルを必要としうる。
【0033】
図3は、4個のキャパシタを示しているが、本実施形態は例示を目的としているにすぎないと理解されたい。キャパシタの数は、入力ベクトルの値のための様々なビット数に対応するために増減されうる。代替的な実施形態において、差分合算回路が、合算出力134からコモンモード干渉が除去されうるように実現されうる。さらに、他の実施形態が、電荷を蓄えて積算して、合算出力134を決定するために、代替的な受動アナログ要素を使用しうる。さらに別の実施形態において、合算回路が、デジタル回路を用いて実現されうる。
【0034】
様々な方法が、
図1~
図3で詳述したシステム及び回路を使用して実行されうる。
図4は、ベクトル行列乗算演算を実行する方法400の一実施形態を示している。方法400は、
図1~
図3の回路を使用して、又はそのような回路の代替的なバージョンによって実行されうる。すなわち、
図2及び
図3といった回路の具体例は、
図1の回路及び
図4の方法をいかにして実現できるかについての例であると理解されたい。幾つかの実施形態において、デジタル合算回路が使用されうる。
【0035】
ブロック410において、バイナリ符号化された信号の或るビットオーダが、バイナリ符号化されたアナログ信号に変換されうる。本機能を実行するために、複数の1ビットDACが並行して使用されうる。従って、各DACは、デジタル信号を、所定のビットオーダのためのアナログ信号に、並行して変換することができる。各DACは、入力ベクトルの或る特定のビットオーダを示すバイナリ符号化されたデジタル信号を受信しうる。各ベクトルがNビットを有しうる。したがって、1ビットDACが、バイナリ符号化されたデジタル信号をアナログ信号に変換するためには、Nクロックサイクルかかりうる。例えば、バイナリ符号化されたデジタル信号が「10011」である場合に、1ビットDACによって出力される当該バイナリ符号化された値(右端の桁がLSBであると仮定すると、値19を表す)のために、5クロックサイクル要しうる。各1ビットDACによって出力されたアナログ電圧は、各1ビットDACに供給される電源電圧に依存しうる。
【0036】
ブロック420では、受信したバイナリ符号化されたアナログ信号のビットオーダに対して、ベクトル行列乗算が順次実行される。ブロック420は、1ビットDACから受信された入力ベクトルの特定のビットオーダに対して実行されうる。すなわち、ブロック420は最初に、入力ベクトルの値の各LSBについて実行されうる(その後、ブロック420の次の反復中に、第2のLSBが評価されうる)。典型的に、評価される第1のビットは、入力ベクトルの値のMSB又はLSBのいずれかとなろう。ベクトル行列乗算が、
図2の実施形態200と同様の回路によって実行されうる。アナログ的な乗算回路の他の実施形態も可能であると理解されたい。ベクトル行列乗算器は、重み付け要素であって、アナログ入力値と重みとの積を示す重み付けされた電流量をそれぞれが生じさせる重み付け要素を含みうる。このような電流、又は何らかの他の電気特性が、合算回路に出力されうる。
【0037】
ブロック430において、ブロック420でベクトル行列乗算器が乗算関数を実行した所与のビットオーダについて、ベクトル行列乗算器の出力(電流又は電圧の形態でありうる)が、適切なビットオーダ加重により格納されうる。受信された信号の標識が、アナログベクトル行列乗算器によって評価されたビットのビットオーダに従って重み付けされて、格納される。例えば、アナログベクトル行列乗算器による評価が、LSBからMSBへと実行される場合に、各後続のビットには、合算回路によって格納されるときに、先行するビットと比べて2倍の重みが与えうる。単なる例として、センス増幅器が、アナログベクトル行列乗算器から受け取った電流を、電圧に変換することができる。合算回路の幾つかの例において、上記電圧が、ブロック420が実行されたビットオーダに対応する静電容量を有する特定のキャパシタを充電するために使用されうる。従って、例えば、LSBが評価されるときには、アナログ行列乗算器の出力が、Cの静電容量を有するキャパシタを充電するために使用され、第2のLSBが評価されるときには、アナログ行列乗算器の出力が、2Cの容量を有するキャパシタを充電するために利用されうる…などである。
【0038】
ブロック435で、追加のビットオーダがまだ評価されていない場合には、方法400はブロック410に戻って、入力ベクトルの次のビットオーダのために実行することができる。したがって、各ビットオーダが、アナログベクトル行列乗算器によって順次評価され、対応する出力が、そのビットオーダに対応する重み付けが設けられた合算回路によって、順次格納される。ブロック420において、乗算演算が全てのビットオーダに対して実行され、ブロック430で結果が格納された場合には、方法400はブロック440に進むことができる。したがって、入力ベクトルの各値が4ビットを有する場合には、ブロック420及び430が4回行われ、すなわち、値の各ビットについて1回実行される。
【0039】
ブロック440において、例えば積算を行うことで総和を決定することができる。幾つかの実施形態において、総和が、アナログ領域において決定される。ブロック430で格納された、ビットオーダ加重された様々な値が、まとめて合算されうる。単なる例として、スイッチキャパシタアレイが使用される場合には、キャパシタの電荷が、キャパシタ間で再分配されうるが、このことは総電荷を積算する役割を果たし、或る特定のビットオーダに対応する各キャパシタの静電容量の値によって、ビット加重が行われる。このことを行うために、スイッチキャパシタアレイを分離するためにスイッチを開いて、キャパシタに直接的に接続された全てのスイッチ(例えば、
図3の314-1、314-2、314-3、及び314-4)を閉じることができる。各キャパシタの電荷は、キャパシタの電界間で再分配することができる。しかしながら、総電荷量は一定のままであり、キャパシタ間での静電容量の差に因り、適切なビットオーダ加重が行われる。他の実施形態において、キャパシタアレイを使用するのではなく、他の形態のアナログ又はデジタル回路が、各乗算結果の適切なビットオーダを用いて、最終的な総和を決定するために使用されうる。
【0040】
3ブロック450において、総和の標識が出力される。幾つかの実施形態において、総和の標識が、電圧の大きさといったアナログ的な電気特性として出力される。例えば、
図3のようなキャパシタパシタアレイのトッププレートでの電圧が、ベクトル行列乗算の総和を表すことが可能である。この電圧は測定することができ、場合によっては、数値を決定するために使用することができる。例えば、ADCといった別個の回路が、この出力電圧を使用して、当該電圧をデジタル領域に再変換することができる。
【0041】
上述の方法、システム、及びデバイスは例である。様々な構成が、必要に応じて、省略され、置換され、又は様々な手続き又は構成要素を追加することができる。例えば、代替的な構成において、方法は、記載されたものとは異なる順序で実行されてよく、及び/又は、様々な段階が追加され、省略され、及び/又は組み合わされてよい。また、特定の構成に関して記載された特徴は、様々な他の構成において組み合わせられうる。構成の様々な態様及び構成要素が、同じようなやり方で組み合わせられうる。また、技術は発展し、したがって、構成要素の多くが例であり、本開示又は特許請求の範囲を限定しない。
【0042】
具体的な詳細が、例示的な構成(実装を含む)の完全な理解をもたらすために明細書の記載において与えられている。しかしながら、これらの特定の詳細が無くとも構成は実施されうる。例えば、周知の回路、プロセス、アルゴリズム、構造、及び技術が、構成を曖昧にするのを避けるため不要な詳細なしで示されている。この記載は、例示的な構成を提供するにすぎず、特許請求の範囲、適用可能性、又は構成を限定しない。むしろ、構成についての先の記載は、当業者に、記載された技術を実現することを可能とする説明を提供する。本開示の思想又は範囲から逸脱することなく、構成要素の機能及び構成に様々な変更を加えることができる。
【0043】
また、構成は、フロー図又はブロック図として示されたプロセスとして記載されうる。それぞれが、連続的なプロセスとして動作を説明することができるが、動作の多くが、並行して、又は同時に実行されうる。また、動作の順序を入れ替えてもよい。プロセスは、図に含まれていない追加のステップを有しうる。
【0044】
幾つかの例示的な構成を説明してきたが、本開示の思想から逸脱することなく、様々な修正、代替的な構成、及び均等物が使用されうる。例えば、上記の構成要素は、より大きなシステムの要素であってよく、他の規則が、本発明の出願に対して優先され、又はさもなければ、本発明の出願を修正しうる。また、上記の構成要素が考慮される前、考慮されている間、又は考慮された後に、幾つかのステップが実行されうる。
【国際調査報告】