JP2023001953A - 半導体集積回路及び演算システム - Google Patents

半導体集積回路及び演算システム Download PDF

Info

Publication number
JP2023001953A
JP2023001953A JP2021102877A JP2021102877A JP2023001953A JP 2023001953 A JP2023001953 A JP 2023001953A JP 2021102877 A JP2021102877 A JP 2021102877A JP 2021102877 A JP2021102877 A JP 2021102877A JP 2023001953 A JP2023001953 A JP 2023001953A
Authority
JP
Japan
Prior art keywords
input
circuit
bit
weight
semiconductor integrated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021102877A
Other languages
English (en)
Inventor
ラドゥ ベルダン
Berdan Radu
大輔 宮下
Daisuke Miyashita
淳 出口
Atsushi Deguchi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2021102877A priority Critical patent/JP2023001953A/ja
Priority to US17/643,697 priority patent/US20220405057A1/en
Priority to TW111104760A priority patent/TWI843055B/zh
Priority to CN202210161857.6A priority patent/CN115510791A/zh
Publication of JP2023001953A publication Critical patent/JP2023001953A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/36Circuit design at the analogue level
    • G06F30/367Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M1/00Analogue/digital conversion; Digital/analogue conversion
    • H03M1/12Analogue/digital converters
    • H03M1/34Analogue value compared with reference values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4814Non-logic devices, e.g. operational amplifiers
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M1/00Analogue/digital conversion; Digital/analogue conversion
    • H03M1/66Digital/analogue converters
    • H03M1/74Simultaneous conversion
    • H03M1/80Simultaneous conversion using weighted impedances
    • H03M1/802Simultaneous conversion using weighted impedances using capacitors, e.g. neuron-mos transistors, charge coupled devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Analogue/Digital Conversion (AREA)
  • Complex Calculations (AREA)
  • Semiconductor Integrated Circuits (AREA)

Abstract

【課題】一つの実施形態は、積和演算を効率化できる半導体集積回路及び演算システムを提供することを目的とする。【解決手段】一つの実施形態によれば、複数の記憶素子と複数の乗算回路と1以上の容量素子と加算回路とを有する半導体集積回路が提供される。複数の記憶素子は、複数行を構成するように配列される。複数の記憶素子は、それぞれが複数ビットの重みの何れかのビット位置の値を記憶する。複数の乗算回路は、複数行を構成するように配列される。複数の乗算回路は、複数の入力電圧に複数ビットの重みを乗算し、複数の乗算結果を生成する。1以上の容量素子は、複数の乗算結果に応じた電荷を蓄積する。加算回路は、出力電圧を生成する。出力電圧は、1以上の容量素子に蓄積された電荷の合計値に対応する。複数の入力電圧は、それぞれが重みの何れかのビット位置に対応するとともに異なる振幅を有する。【選択図】図2

Description

本実施形態は、半導体集積回路及び演算システムに関する。
半導体集積回路は、入力された複数の値それぞれに重みを乗算した複数の結果を加算する積和演算を実行することがある。このとき、積和演算の効率化が望まれる。
米国特許出願公開第2019/080231号明細書 米国特許出願公開第2020/105337号明細書 特許第5981666号公報 特開2020-30822号公報 特開2020-160887号公報
一つの実施形態は、積和演算を効率化できる半導体集積回路及び演算システムを提供することを目的とする。
一つの実施形態によれば、複数の記憶素子と複数の乗算回路と1以上の容量素子と加算回路とを有する半導体集積回路が提供される。複数の記憶素子は、複数行を構成するように配列される。複数の記憶素子は、それぞれが複数ビットの重みの何れかのビット位置の値を記憶する。複数の乗算回路は、複数行を構成するように配列される。複数の乗算回路は、複数の入力電圧に複数ビットの重みを乗算し、複数の乗算結果を生成する。1以上の容量素子は、複数の乗算結果に応じた電荷を蓄積する。加算回路は、出力電圧を生成する。出力電圧は、1以上の容量素子に蓄積された電荷の合計値に対応する。複数の入力電圧は、それぞれが重みの何れかのビット位置に対応するとともに異なる振幅を有する。
第1の実施形態にかかる半導体集積回路を含む演算システムの構成を示す図。 第1の実施形態にかかる半導体集積回路の構成を示す回路図。 第1の実施形態にかかる半導体集積回路の動作を示す波形図。 第1の実施形態の変形例にかかる半導体集積回路の構成を示す回路図。 第2の実施形態にかかる半導体集積回路の構成を示す回路図。 第2の実施形態にかかる半導体集積回路の動作を示す波形図。 第2の実施形態にかかる半導体集積回路の動作を示す波形図。 第3の実施形態にかかる半導体集積回路の構成を示す回路図。 第4の実施形態における単位セルの概略構成を示す回路図。 第4の実施形態における単位セルの具体的な構成を示す回路図。 第4の実施形態の変形例における単位セルの具体的な構成を示す回路図。 第5の実施形態における入力回路の単位構成を示す回路図。 第5の実施形態における入力回路の構成を示す回路図。 第5の実施形態における入力回路のユースケースを示す回路図。 第5の実施形態における入力回路のユースケースを示す回路図。 第5の実施形態の変形例における入力回路の構成を示す回路図。 第6の実施形態における入力回路の単位構成を示す回路図。 第6の実施形態におけるDA変換回路の構成を示す回路図。 第6の実施形態におけるマッピングテーブルを示す図。 第6の実施形態における入力回路の構成を示す回路図。 第6の実施形態における入力回路の動作を示す波形図。
以下に添付図面を参照して、実施形態にかかる演算システムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
第1の実施形態にかかる演算システムは、例えば、AI(人工知能)アクセラレータなどのニューラルネットワークの処理の一部を実行する用途に用いられ得る。AIアクセラレータは、タスクを学習したり推論を行ったりするために、複数ビットの入力に複数ビットの重みを乗算し、乗算の結果を加算する積和演算を実行する。演算システムでは、この演算を、高速かつ効率的に並行して行うことが要求される。例えば、演算システムは、ニューラルネットワークにおけるある層の複数のニューロンに対して積和演算を並行して行う(並行演算)。並行演算は、複数ビットを含む入力と複数ビットを含む重みとが任意のビット精度で乗算されるような演算を含む。
この並行演算は、メモリ回路と演算回路が一体もしくは物理的に近接して配置されていることを特徴とするインメモリの半導体集積回路によりハードウェア的に実装可能である。インメモリの半導体集積回路では、乗算のために重みが動的でなく固定的に設定される。インメモリ構成には、デジタル方式の構成、アナログ・電流方式の構成、アナログ・電荷方式の構成などがある。
デジタル方式の構成は、メモリ内に配置されたビット単位の論理演算回路で入力ビットに対して重みビットに応じた演算を行うことなどにより、メモリ内で計算を実行する。アナログ・電流方式の構成は、重みがプログラムされた抵抗変化素子のアレイの各行に電圧を印加し、キルヒホッフの法則を利用して電流の加算を行う。
一方、アナログ・電荷方式の構成は、入力の複数ビットと重みの複数ビットとの論理積をビット単位で並行して演算し、複数ビットの演算結果に応じた電圧を容量アレイの複数の容量素子に保持させる。そして、容量アレイにおける複数の容量素子の電荷を順次に読み出してAD変換しデジタル信号を生成しながら、デジタル信号をビットシフトして加算することを繰り返すことで、デジタル信号の加算が行われる。
アナログ・電荷方式の構成は、デジタル方式の構成に比較して、中程度のビット精度で演算する際の演算速度が速い点で優れている。アナログ・電荷方式の構成は、アナログ・電流方式の構成に比較して、素子間のばらつきの影響を小さくしやすい点で優れている。
しかし、アナログ・電荷方式の構成では、信号の加算のために、入力及び重みの少なくとも一方のビット数に比例する回数のビットシフト演算が行われる。そのため、入力及び重みの少なくとも一方のビット数が増加するほど並行演算の効率が低下しやすく、並行演算の処理時間は、入力及び重みの少なくとも一方のビット精度に依存して長時間化しやすい。
そこで、本実施形態では、半導体集積回路において、正の信号振幅を有する複数の入力電圧に正の整数を表す複数ビットの重みを乗算し、複数の乗算結果に応じた電荷に基づき加算結果に対応する出力電圧を生成する。これにより、入力及び重みのいずれのビット精度にも関わらず、並行演算の効率化が可能であり、それによる並行演算の処理時間の定時間化が図られる。
具体的には、半導体集積回路は、入力データの各ビットをDA変換等により複数の入力電圧に変換する。半導体集積回路は、複数の入力電圧に複数ビットの重みを乗算する。半導体集積回路は、複数の乗算結果に基づき、加算結果に対応する出力電圧を生成する。例えば、複数の乗算結果を複数の容量素子に並行して蓄積し、蓄積電圧が平均化されるように複数の容量素子の電荷を一括して再分配し、再分配された電荷に応じた電圧を出力電圧としてもよい。これにより、ビットシフトを行わずに加算結果を得ることができ、入力及び重みのいずれのビット精度にも関わらず、並行演算を効率化でき、並行演算の処理時間を定時間化することができる。
より具体的には、半導体集積回路1を含む演算システム100は、図1に示すように構成され得る。図1は、半導体集積回路1を含む演算システム100の構成を示す図である。演算システム100は、入力回路2、半導体集積回路1、及び出力回路3を有する。演算システム100は、多ビット入力をサポートし、mビットの入力データDin=(dm-1,dm-2,・・・,d,d)を入力回路2で受けることが可能である。mは、任意の1以上の整数である。入力データDinに含まれる各要素は、1つのビットを含むデジタル信号である。以下では、主にm=nである場合を想定して説明するが、m≠nであってもよい。m≠nである場合、入力回路2は、mビットの入力データDinをn個のアナログ電圧に変換するように構成されているものとする。例えば、入力回路2は、DA変換回路を含み、入力ノードの数がm個、出力ノードの数がn個となるようにDA変換回路を構成することが可能である。
演算システム100は、m個のビットdを含む入力データDin=(dm-1,dm-2,・・・,d,d)とn個のビットbを含む重みベクトルW=(bn-1,bn-2,・・・,b,b)とを乗算し、その演算結果に基づく出力データDoutを出力する。nは、任意の1以上の整数である。重みベクトルWのビット数nは、入力データDinのビット数mと均等であってもよい。
すなわち、演算システム100において、入力回路2は、DA変換等により、デジタルドメインの入力データDin=(dm-1,dm-2,・・・,d,d)をアナログドメインの入力ベクトルX=(V,V/2,・・・,V/2n-2,V/2n-1)に変換して半導体集積回路1へ入力する。すなわち、入力ベクトルXは、n個の入力電圧V,V/2,・・・,V/2n-2,V/2n-1を含む。半導体集積回路1には、重みベクトルW=(bn-1,bn-2,・・・,b,b)が予め設定されている。重みベクトルWの各要素は、1つのビットを含むデジタル信号である。重みベクトルWのnビットのパターン「bn-1,bn-2,・・・,b,b」は、正の整数を表す。これ以降の説明では、重みベクトルWを単に重みWとも称する。入力ベクトルXに含まれるn個の入力電圧は、重みWのn個のビットに対応する。入力ベクトルXに含まれる各入力電圧は、重みWの対応するビットの位置に応じた正の信号振幅を有するアナログ信号である。グローバル回路10は、グローバル信号MULT,PRE,SUMを生成して演算回路20へ供給する。
半導体集積回路1は、グローバル信号MULT,PRE,SUMに基づいて、入力ベクトルX=(V,V/2,・・・,V/2n-2,V/2n-1)と重みベクトルW=(bn-1,bn-2,・・・,b,b)との内積を演算し、その演算結果として出力電圧Y=X・W=Vを出力回路3へ入力する。出力電圧Y=Vは、アナログ信号である。出力回路3は、AD変換等により、出力電圧Vを出力データDoutへ変換して出力する。出力データDoutは、1以上のビットを含むデジタル信号である。
半導体集積回路1は、図2に示すように構成され得る。図2は、半導体集積回路1の構成を示す回路図である。
半導体集積回路1は、グローバル回路10及び演算回路20を有する。演算回路20は、複数の入力ノード20a_(n-1),・・・,20a_0でn個の入力電圧V,・・・,V/2n-1を受ける。n個の入力電圧V,・・・,V/2n-1は、入力ベクトルXに含まれる。各入力電圧V,・・・,V/2n-1は、入力ノード20a_(n-1),・・・,20a_0に印加される。グローバル回路10は、グローバル信号MULT,PRE,SUMを生成して演算回路20へ供給する。演算回路20は、グローバル信号MULT,PRE,SUMに応じて演算を行い、演算結果として出力電圧Vを出力ノード20bから出力する。
演算回路20は、図2に示すように、n個の記憶素子21_(n-1)~21_0、複数の乗算回路22_(n-1)~22_0、n個の容量素子23_(n-1)~23_0、加算回路24を有する。図2では、演算回路20の構成として一列分の構成を例示するが、演算回路20は、図2に示す構成を複数列分、有していてもよい。
n個の記憶素子21_(n-1)~21_0は、n個の行(すなわち、第(n-1)行~第0行)を構成するように配列される。n個の記憶素子21_(n-1)~21_0は、nビットの重みWを記憶する。n個の記憶素子21_(n-1)~21_0は、重みWに含まれる各ビットbn-1,・・・,bに対応する。各記憶素子21は、対応する重みWの対応するビット値を記憶するとともに出力する。記憶素子21_(n-1)は、ビットbn-1の値を記憶するとともにビットbn-1の値に応じた電圧を出力する。記憶素子21_0は、ビットbの値を記憶するとともに記憶したビットbの値に応じた電圧を出力する。重みWに含まれるnビットのパターン「bn-1,bn-2,・・・,b,b」は、正の整数を表す。
n個の乗算回路22_(n-1)~22_0は、n個の行(すなわち、第(n-1)行~第0行)を構成するように配列される。n個の乗算回路22_(n-1)~22_0は、n個の中間ノード20c_(n-1)~20c_0を介して、n個の入力ノード20a_(n-1)~20a_0と出力ノード20bとの間で並列に接続される。各乗算回路22は、入力ノード20aに接続された第一端と、中間ノード20cに接続された第二端と、を有する。各乗算回路22は、グローバル信号MULTを受ける第一制御端子と、記憶素子21の出力を受ける第二制御端子と、を有する。
n個の乗算回路22_(n-1)~22_0は、n個の入力電圧にnビットの重みWを等価的に乗算し、n個の乗算結果を生成する。n個の乗算回路22_(n-1)~22_0は、n個の入力電圧に対応するとともに、重みWに含まれるn個のビットに対応する。各乗算回路22は、対応するアナログ信号に、対応する重みWのビットを等価的に乗算し、乗算結果を生成する。乗算回路22_(n-1)は、入力信号Vにビットbn-1の値を等価的に乗算し、乗算結果(V)×bn-1を生成する。乗算回路22_0は、入力信号V/2n-1にビットbの値を等価的に乗算し、乗算結果(V/2n-1)×bを生成する。
各乗算回路22は、入力ノード20aと中間ノード20cとの間に、スイッチSW1とスイッチSW2との直列接続を含む。スイッチSW1は、グローバル信号MULTに応じてオン・オフする。スイッチSW2は、重みWのビット値に応じてオン・オフ状態に維持される。スイッチSW1及びスイッチSW2は、それぞれ、切替素子の一例であり、例えばトランジスタで構成されればよい。図2では、入力ノード20aと中間ノード20cとの間でスイッチSW1が入力ノード20a側に接続されスイッチSW2が中間ノード20c側に接続される構成が例示されているが、スイッチSW1が中間ノード20c側に接続されスイッチSW2が入力ノード20a側に接続される構成であってもよい。
n個の乗算回路22_(n-1)~22_0のスイッチSW1は、それぞれ、グローバル回路10からアクティブレベルのグローバル信号MULTをその制御端子で受けた際に、オンし、入力ノード20aとスイッチSW2の第一端とを電気的に接続する。n個の乗算回路22_(n-1)~22_0のスイッチSW1は、それぞれ、グローバル回路10からノンアクティブレベルのグローバル信号MULTをその制御端子で受けた際に、オフし、入力ノード20aとスイッチSW2の第一端とを電気的に遮断する。
n個の乗算回路22_(n-1)~22_0は、n個の記憶素子21_(n-1)~21_0に対応する。n個の乗算回路22_(n-1)~22_0のスイッチSW2は、それぞれ、対応する記憶素子21から出力される重みWのビット値に応じてオン・オフ状態に維持される。
乗算回路22_(n-1)のスイッチSW2は、記憶素子21_(n-1)から出力される重みWのビットbn-1の値が1である場合、オン状態に維持される。この場合、スイッチSW1がオンすることで、入力ノード20a_(n-1)と中間ノード20c_(n-1)とが電気的に接続される。
乗算回路22_(n-1)のスイッチSW2は、記憶素子21_(n-1)から出力される重みWのビットbn-1の値が0である場合、オフ状態に維持される。この場合、スイッチSW1がオンしても、入力ノード20a_(n-1)と中間ノード20c_(n-1)とは電気的に遮断されたままである。
乗算回路22_0のスイッチSW2は、記憶素子21_0から出力される重みWのビットbの値が1である場合、オン状態に維持される。この場合、スイッチSW1がオンすることで、入力ノード20a_0と中間ノード20c_0とが電気的に接続される。
乗算回路22_0のスイッチSW2は、記憶素子21_0から出力される重みWのビットbの値が0である場合、オフ状態に維持される。この場合、スイッチSW1がオンしても、入力ノード20a_0と中間ノード20c_0とは電気的に遮断されたままである。
n個の容量素子23_(n-1)~23_0は、n個の行(すなわち、第(n-1)行~第0行)を構成するように配列される。n個の容量素子23_(n-1)~23_0は、n個の記憶素子21_(n-1)~21_0に対応するとともに、n個の乗算回路22_(n-1)~22_0に対応する。n個の容量素子23_(n-1)~23_0は、n個の中間ノード20c_(n-1)~20c_0と基準ノード20dとの間で並列に接続される。
各容量素子23は、互いに均等な容量値Cを有し得る。各容量素子23は、中間ノード20cに接続された第一端と基準ノード20dに接続された第二端とを有する。各容量素子23の第一端は、中間ノード20cを介して、対応する乗算回路22に接続される。基準ノード20dには、基準電圧(例えば、演算回路20のグランド電圧)が供給される。基準ノード20dは、n個の容量素子23_(n-1)~23_0について共通化されていてもよい。
各乗算回路22は、重みWのビットの値に応じて入力信号の容量素子23の第一端への供給の有無を変える。これにより、等価的に、n個の乗算回路22_(n-1)~22_0は、n個の入力電圧にnビットの重みWを乗算する。
加算回路24は、n個の乗算回路22_(n-1)~22_0とn個の容量素子23_(n-1)~23_0との間に配される。加算回路24は、n個の容量素子23_(n-1)~23_0に蓄積された電荷を容量比に応じて再分配し、出力電圧Vを生成する。出力電圧Vは、n個の乗算結果が加算された加算結果に対応する。n個の容量素子23_(n-1)~23_0が互いに均等な容量値Cを有するため、出力電圧Vは、n個の乗算結果としてのn個の電圧が平均化された電圧に相当する。出力電圧Vは、その値に容量素子の個数(すなわち、n)を乗ずることで加算結果に変換可能である。
加算回路24は、共通ノード20eと中間ノード20c_(n-1)~20c_0の少なくとも1つのノードとの間にスイッチSW3を有する。図2では、共通ノード20eと中間ノード20c_(n-1)の間にSW3を有する構成を示しており、以降はその場合の動作について説明する。共通ノード20eは、共通電圧VCOMが供給される。共通ノード20eは、n個の容量素子23_(n-1)~23_0について共通化されていてもよい。中間ノード20c_(n-1)は、容量素子23_(n-1)の第一端に接続される。容量素子23_(n-1)は、出力ノード20bから最も遠い位置に配された容量素子である。スイッチSW3は、グローバル回路10からアクティブレベルのグローバル信号PREをその制御端子で受けた際に、オンし、共通電圧VCOMを中間ノード20c_(n-1)に電気的に接続する。スイッチSW3は、グローバル回路10からノンアクティブレベルのグローバル信号PREをその制御端子で受けた際に、オフし、共通電圧VCOMを中間ノード20c_(n-1)から電気的に遮断する。スイッチSW3は、切替素子の一例であり、例えばトランジスタで構成されればよい。
加算回路24は、出力ノード20b及びn個の中間ノード20c_(n-1)~20c_0の間にn個のスイッチSW4_(n-1)~SW4_0を有する。n個の中間ノード20c_(n-1)~20c_0は、それぞれn個の容量素子23_(n-1)~23_0の第一端に接続される。n個のスイッチSW4_(n-1)~SW4_0は、グローバル回路10からアクティブレベルのグローバル信号SUMをその制御端子で受けた際に、オンし、n個の容量素子23_(n-1)~23_0の第一端を出力ノード20bに電気的に接続する。n個のスイッチSW4_(n-1)~SW4_0は、グローバル回路10からノンアクティブレベルのグローバル信号SUMをその制御端子で受けた際に、オフし、n個の容量素子23_(n-1)~23_0の第一端を出力ノード20bから電気的に遮断する。n個のスイッチSW4_(n-1)~SW4_0は、それぞれ、切替素子の一例であり、例えばトランジスタで構成されればよい。
なお、各行において、記憶素子21、乗算回路22、容量素子23及びスイッチSW4を含む構成を単位セルUCと呼ぶことにする。第n-1行目の単位セルUC_(n-1)は、記憶素子21_(n-1)、乗算回路22_(n-1)、容量素子23_(n-1)及びスイッチSW4_(n-1)を含む。第0行目の単位セルUC_0は、記憶素子21_0、乗算回路22_0、容量素子23_0及びスイッチSW4_0を含む。
図2に示す構成により、半導体集積回路1は、多ビット乗算を電荷ベースで実現する。半導体集積回路1は、電荷ベースの演算Y=X・Wを、X及びWのいずれのビット精度にも関わらず次の3つのサイクル(1)~(3)で実現可能である。
(1)重みWのビット値がMSB(最上位ビット)からLSB(最下位ビット)まで分割され、各ビットが記憶素子21に格納される。グローバル信号PRE及びグローバル信号SUMがそれぞれアクティブレベルにされ、グローバル信号MULTがノンアクティブレベルにされる。これにより、各容量素子23_(n-1)~23_0の電荷が共通ノード20eへ排出され、各容量素子23_(n-1)~23_0の蓄積電圧がVCOMにリセットされる。
(2)グローバル信号MULTがアクティブレベルにされ、グローバル信号PRE及びグローバル信号SUMがそれぞれノンアクティブレベルにされる。これにより、n個の単位セルUC_(n-1)~UC_0において、入力電圧に重みWが等価的に乗算され、乗算結果に応じた電荷が容量素子23_(n-1)~23_0の第一端に蓄積される。n個の単位セルUC_(n-1)~UC_0における乗算及び電荷の蓄積は、互いに並行して行われる。この結果、各容量素子23の蓄積電圧がVC,i(i=(n-1)~0)になる。
(3)グローバル信号SUMがアクティブレベルにされ、グローバル信号PRE及びグローバル信号MULTがそれぞれノンアクティブレベルにされる。これにより、n個の容量素子23_(n-1)~23_0の第一端に蓄積された電荷が容量比に応じて再分配される。n個の容量素子23_(n-1)~23_0が互いに均等な容量値Cを有するので、各容量素子23の蓄積電圧は、平均化された電圧となる。
半導体集積回路1は、図3に示すように動作し得る。図3は、半導体集積回路1の動作を示す波形図である。図3(a)は、グローバル信号PREのレベルの時間的な遷移を示す。図3(b)は、グローバル信号SUMのレベルの時間的な遷移を示す。図3(c)は、グローバル信号MULTのレベルの時間的な遷移を示す。図3(d)は、各容量素子23の保持電圧の時間的な変化を示す。
タイミングt1の直前において、グローバル回路10は、グローバル信号PRE、グローバル信号SUM、グローバル信号MULTをそれぞれLレベルに維持する。半導体集積回路1は、共通電圧VCOM=0V(≒グランド電位)に設定する。
例えば、n=3であり、重みW=(b,b,b)=(1,1,1)である場合、半導体集積回路1は、3個の記憶素子21_2,21_1,21_0に、それぞれ、ビット値1,1,1を記憶させる。重みWの複数ビットのパターン「111」は、10進数で「7」に相当する正の整数を表す。3個の記憶素子21_2,21_1,21_0は、いずれも、ビット値1に対応する論理値であるHレベルを出力する。これに応じて、3個の乗算回路22_2,22_1,22_0のスイッチSW2は、いずれも、オン状態に維持される。
入力回路2は、例えばm=3のとき3ビットの入力データDin=(d,d,d)を任意の方法により電圧Vを生成し、この電圧Vを入力ベクトルX=(V,V/2,V/2)に変換して半導体集積回路1へ入力する。3個の入力電圧V,V/2,V/2は、それぞれ重みWに含まれる複数ビットb,b,bに対応する。各入力信号V,V/2,V/2は、対応するビットの位置に応じた正の振幅を有する。
第i行において、入力ノード20a_iに次の数式1に示す入力信号VX,iが印加される。第i行は、重みWのビットbに対応する。iは、行番号を表し、重みWのビット位置も表し、n-1(nは2以上の整数)から0までの値をとり得る。n-1は、重みWの複数ビットにおけるMSBに対応し、0は、LSBに対応する。
Figure 2023001953000002
例えば、n=3である場合、演算回路20において、第2行の入力ノード20a_2に入力電圧Vが印加され、第1行の入力ノード20a_1に入力電圧V/2が印加され、第0行の入力ノード20a_0に入力電圧V/2が印加される。
タイミングt1~t2の期間において、サイクル(1)の動作が行われる。タイミングt1になると、グローバル回路10は、グローバル信号MULTをLレベルに維持したまま、グローバル信号PRE、グローバル信号SUMをそれぞれHレベルへ遷移させて維持する。これにより、3個の容量素子23_2~23_0の第一端に共通電圧VCOM=0Vが印加され、各容量素子23_2~23_0の保持電圧VC,0~VC,2が0Vにリセットされる。すなわち、各容量素子23_2~23_0の蓄積電荷がリセットされる。タイミングt2になると、グローバル回路10は、グローバル信号PRE、グローバル信号SUMをそれぞれLレベルへ遷移させる。これにより、各容量素子23_2~23_0の保持電圧VC,0~VC,2のリセットが完了する。
タイミングt3~t4の期間において、サイクル(2)の動作が行われる。タイミングt3になると、グローバル回路10は、グローバル信号PRE、グローバル信号SUMをそれぞれLレベルに維持したまま、グローバル信号MULTをHレベルへ遷移させて維持する。これにより、乗算回路22_iが入力電圧VX,iと重みWのビット値bとを乗算する。すなわち、第i行において、乗算回路22_iのスイッチSW1がオン状態に維持される。記憶素子21_iに記憶された重みWのビット値b=1である場合、スイッチSW2がオン状態に維持されており、入力電圧VX,iが容量素子23_iの第一端に印加される。記憶素子21_iに記憶された重みWのビット値b=0である場合、スイッチSW2がオフ状態に維持されており、入力電圧VX,iが容量素子23_iの第一端に印加されない。これにより、重みWのビット値b=1である場合、容量素子23_iの保持電圧が0VからVX,iまで徐々に増加し、重みWのビット値b=0である場合、容量素子23_iの保持電圧が0Vのままである。すなわち、乗算回路22_iによる入力電圧VX,iと重みWのビット値bとの乗算結果に応じた電荷Qが容量素子23_iに蓄積される。電荷Qは、数式2で示される。
Figure 2023001953000003
例えば、n=3であり、重みW=(b,b,b)=(1,1,1)である場合、第2行において、重みWのビット値b=1に応じて、入力信号Vが容量素子23_2の第一端に印加され、容量素子23_2の保持電圧VC,2が0VからVまで徐々に増加する。これにより、容量素子23_2に、電荷Q=C×Vが蓄積される。第1行において、重みWのビット値b=1に応じて、入力信号V/2が容量素子23_1の第一端に印加され、容量素子23_1の保持電圧VC,1が0VからV/2まで徐々に増加する。これにより、容量素子23_1に、電荷Q=C×V/2が蓄積される。第0行において、重みWのビット値b=1に応じて、入力信号V/2が容量素子23_0の第一端に印加され、容量素子23_0の保持電圧VC,0が0VからV/2まで徐々に増加する。これにより、容量素子23_0に、電荷Q=C×V/2が蓄積される。
タイミングt4になると、グローバル回路10は、グローバル信号MULTをLレベルへ遷移させる。これにより、各容量素子23_2~23_0への電荷の蓄積が完了し、その保持電圧VC,0~VC,2が維持される。
タイミングt5~t6の期間において、サイクル(3)の動作が行われる。タイミングt5になると、グローバル回路10は、グローバル信号PRE、グローバル信号MULTをそれぞれLレベルに維持したまま、グローバル信号SUMをHレベルへ遷移させて維持する。これにより、加算回路24が、n個の容量素子23_(n-1)~23_0に蓄積された電荷をそれらの容量比に応じて再分配する。n個の容量素子23_(n-1)~23_0の容量値が均等であるので、蓄積電圧が平均化されるようにn個の容量素子23_(n-1)~23_0の電荷が再分配される。これにより、加算回路24は、出力電圧Vを生成して出力ノード20bへ供給する。出力電圧Vは、複数の乗算結果としての複数の電圧VC,0~VC,n-1が平均化された電圧に相当する。出力電圧Vは、容量素子23の個数(すなわち、n)を乗ずることで加算結果に変換可能である。出力電圧Vは、数式3で示される。
Figure 2023001953000004
例えば、n=3であり、重みW=(b,b,b)=(1,1,1)である場合、加算回路24が3個の容量素子23_2~23_0に蓄積された電荷を再分配し出力電圧V=(VC,0+VC,1+VC,2)/3={V+(V/2)+(V/2)}/3を生成する。
図1に示すように、半導体集積回路1は、出力電圧Vを出力回路3へ出力する。出力回路3は、出力電圧Vを出力データDoutへ変換する。例えば、出力回路3で、出力電圧VをAD変換する前あるいは後で、出力電圧Vに容量素子23の個数(例えば、3)を乗じれば、出力回路3の出力は加算結果となる。ただし、加算結果に比例した出力が得られれば十分なことが多いため、容量素子23の個数を乗ずる処理は必ずしも必要ではない。出力回路3は、生成された出力データDoutを出力する。
以上のように、第1の実施形態では、半導体集積回路1において、正の信号振幅を有する複数の入力電圧に正の整数を表す複数ビットの重みを乗算し、複数の乗算結果に応じた電荷を複数の容量素子に並行して蓄積する。その後、蓄積電圧が平均化されるように複数の容量素子の電荷を一括して再分配し、平均化された蓄積電圧を加算結果に対応する出力電圧として生成する。これにより、ビットシフトを行わずに加算結果を得ることができ、入力及び重みのいずれのビット精度にも関わらず、並行演算の処理時間を定時間化することができる。
なお、図4に示すように、第1の実施形態の変形例にかかる演算システム100’の半導体集積回路1’において、演算回路20’は、電荷を加算することで出力電圧を生成するように構成されていてもよい。図4は、第1の実施形態の変形例にかかる半導体集積回路の構成を示す回路図である。例えば、図4に示す演算回路20’は、図2に示す構成で(n-1)個の容量素子23_(n-1)~23_1及び(n-1)個のスイッチSW4_(n-1)~SW4_1が省略されることで得られる。演算回路20’の動作は、基本的に演算回路20の動作と同様であるが、次の点で異なる。図3(d)に示すタイミングt3~t6において、1つの容量素子23_0の波形として示され、その振幅がタイミングt3~t6に示す振幅の合計となる。すなわち、演算回路20’は、複数の乗算結果を1つの容量素子に並行して蓄積することで電荷を一括して加算し、加算された電荷に応じた電圧を出力電圧として出力する。このような構成によっても、ビットシフトを行わずに加算結果を得ることができ、入力及び重みのいずれのビット精度にも関わらず、並行演算の処理時間を定時間化することができる。
(第2の実施形態)
次に、第2の実施形態にかかる演算システム200について説明する。以下では、第1の実施形態と異なる部分を中心に説明する。
第1の実施形態では、重みの複数ビットが正の整数を表す場合の半導体集積回路の構成を例示したが、第2の実施形態では、重みの複数ビットが正又は負の整数を表す場合の半導体集積回路の構成を例示する。
演算システム200は、半導体集積回路1(図2参照)に代えて半導体集積回路201を有する。半導体集積回路201は、図5に示すように構成され得る。半導体集積回路201は、演算回路20(図2参照)に代えて、演算回路220を有する。演算回路220は、n個の記憶素子21_(n-1)~21_0(図2参照)に代えて、n個の記憶素子221_(n-1)~221_0を有する。n個の記憶素子221_(n-1)~221_0は、その格納する重みWの複数ビットが第1の実施形態と異なる。すなわち、重みWのnビットのパターン「bn-1,bn-2,・・・,b,b」は、2の補数表現で正又は負の整数を表す。MSBであるビットbn-1は、符号ビットであり、値が0のときに複数ビットのパターンが正の整数であることを示し、値が1のときに複数ビットのパターンが負の整数であることを示す。nビットのパターン「bn-1,bn-2,・・・,b,b」は、負の整数を表す場合、その絶対値を表すビットパターンに対して各ビットを反転させて1を加えたビットパターンとなっている。
入力回路2から半導体集積回路201へ入力されるn個の入力電圧は、それぞれ重みWのnビットbn-1,bn-2,・・・,b,bに対応する。各入力電圧は、共通電圧VCOMを0Vとした場合、対応するビットの位置に応じた正又は負の信号振幅を有する。入力回路2から第(n-1)行の入力ノード20a_(n-1)で受ける入力信号は、次の数式4に示すようになり、入力回路2から第i行の入力ノード20a_iで受ける入力信号は、次の数式5に示すようになる。数式5において、i=(n-2)~0である。
Figure 2023001953000005
演算回路220は、入力ベクトルX=(VCOM-V,VCOM+V/2,・・・,VCOM+V/2n-2,VCOM+V/2n-1)と重みベクトルW=(bn-1,bn-2,・・・,b,b)との内積Y=X・Wを演算するが、重みWのnビットのパターン「bn-1,bn-2,・・・,b,b」は、負の整数を表し得る。
例えば、パラメータVが正の値を有し、重みWのnビットのパターンが負の整数を表す場合、半導体集積回路201は、図6に示すように動作し得る。図6は、半導体集積回路201の動作を示す波形図である。図6(a)は、グローバル信号PREのレベルの時間的な遷移を示す。図6(b)は、グローバル信号SUMのレベルの時間的な遷移を示す。図6(c)は、グローバル信号MULTのレベルの時間的な遷移を示す。図6(d)は、各容量素子23の保持電圧の時間的な変化を示す。
タイミングt11の直前において、グローバル回路10は、グローバル信号PRE、グローバル信号SUM、グローバル信号MULTをそれぞれLレベルに維持する。半導体集積回路201は、共通電圧VCOMの電位を、半導体集積回路201のグランド電位と電源電位との中間電位に設定する。例えば、半導体集積回路201は、共通電圧VCOM=Vdd/2に設定する。Vddは、電源電位である。共通電圧VCOMは、電位としてはVdd/2であるが、入力ベクトルXの信号振幅に対しては0V(基準値)を示す。入力電圧は、その電位VinがVdd/2より高ければ、正の信号振幅Vin-Vdd/2を有し、その電位VinがVdd/2より低ければ、負の信号振幅Vin-Vdd/2を有することになる。
例えば、n=3であり、重みW=(b,b,b)=(1,1,1)である場合、重みWは、10進数で「-1」に相当する負の整数を表す。
タイミングt11~t12の期間において、共通電圧VCOMがVdd/2であることに応じて、第1の実施形態のサイクル(1)と次の点で異なる動作が行われる。タイミングt11になると、グローバル回路10は、グローバル信号MULTをLレベルに維持したまま、グローバル信号PRE、グローバル信号SUMをそれぞれHレベルへ遷移させて維持する。これにより、各容量素子23_2~23_0の保持電圧VC,0~VC,2がVCOM=Vdd/2(=信号振幅0V)にリセットされる。
タイミングt13~t14の期間において、共通電圧VCOMがVdd/2であることに応じて、第1の実施形態のサイクル(2)と次の点で異なる動作が行われる。タイミングt13になると、グローバル回路10は、グローバル信号PRE、グローバル信号SUMをそれぞれLレベルに維持したまま、グローバル信号MULTをHレベルへ遷移させて維持する。これにより、重みWのビット値b=1である場合、容量素子23_iの保持電圧がVCOM=Vdd/2からVX,iまで徐々に変化する。パラメータVが正の値を有する場合、重みWのMSBbn-1に対応する入力電圧VX,n-1が負の信号振幅を有し、容量素子23_(n-1)の保持電圧がVCOMからVX,n-1まで徐々に減少する。他の入力電圧VX,i(i=(n-2)~0)が正の信号振幅を有する場合、容量素子23_iの保持電圧がVCOMからVX,iまで徐々に増加する。重みWのビット値b=0である場合、容量素子23_iの保持電圧がVCOMのままである。すなわち、第n-1行の容量素子23_(n-1)で蓄積される電荷は、次の数式6に示すようになり、第i行の容量素子23_iで蓄積される電荷は、次の数式7に示すようになる。数式7において、i=(n-2)~0である。
Figure 2023001953000006
例えば、n=3であり、重みW=(b,b,b)=(1,1,1)である場合、第2行において、重みWのビット値b=1に応じて、入力信号VCOM-Vが容量素子23_2の第一端に印加され、容量素子23_2の保持電圧VC,2がVCOMからVCOM-Vまで徐々に減少する。これにより、容量素子23_2に、電荷Q=C×(VCOM-V)が蓄積される。第1行において、重みWのビット値b=1に応じて、入力信号VCOM+V/2が容量素子23_1の第一端に印加され、容量素子23_1の保持電圧VC,1がVCOMからVCOM+V/2まで徐々に増加する。これにより、容量素子23_1に、電荷Q=C×(VCOM+V/2)が蓄積される。第0行において、重みWのビット値b=1に応じて、入力信号VCOM+V/2が容量素子23_0の第一端に印加され、容量素子23_0の保持電圧VC,0がVCOMからVCOM+V/2まで徐々に増加する。これにより、容量素子23_0に、電荷Q=C×(VCOM+V/2)が蓄積される。
タイミングt15~t16の期間において、第1の実施形態のサイクル(3)と同様の動作が行われ、加算回路24は、n個の容量素子23_(n-1)~23_0に蓄積された電荷を蓄積電圧が平均化されるように一括して再分配し、次の数式8に示すような出力電圧Vを生成して出力ノード20bへ供給する。
Figure 2023001953000007
なお、入力ベクトルXの各要素を規定するパラメータVは、-VCOM~+VCOMまでの値をとり得る。パラメータVは、負の値を有することもある。
例えば、パラメータVが負の値を有し、重みWの複数ビットのパターンが負の整数を表す場合、半導体集積回路201は、図7に示すように、次の点で図6と異なる動作を行う。図7は、半導体集積回路201の他の動作を示す波形図である。図7(a)は、グローバル信号PREのレベルの時間的な遷移を示す。図7(b)は、グローバル信号SUMのレベルの時間的な遷移を示す。図7(c)は、グローバル信号MULTのレベルの時間的な遷移を示す。図7(d)は、各容量素子23の保持電圧の時間的な変化を示す。
図7(d)に示すように、タイミングt23~t26の期間における各容量素子23の保持電圧VC,iの波形が、共通電圧VCOMを示す線を対称軸として、タイミングt13~t16の保持電圧VC,iの波形(図6参照)を線対称に移動させたものとなっている。
タイミングt23~t24の期間において、共通電圧VCOMがVdd/2であることに応じて、第1の実施形態のサイクル(2)と次の点で異なる動作が行われる。タイミングt23になると、グローバル回路10は、グローバル信号PRE、グローバル信号SUMをそれぞれLレベルに維持したまま、グローバル信号MULTをHレベルへ遷移させて維持する。これにより、重みWのビット値b=1である場合、容量素子23_iの保持電圧VC,iがVCOMからVX,iまで徐々に変化する。パラメータVが負の値を有する場合、V=-|V|である。重みWのMSBbn-1に対応する入力電圧VX,n-1が正の信号振幅を有し、容量素子23_(n-1)の保持電圧VC,n-1がVCOMからVX,n-1まで徐々に増加する。他の入力電圧VX,i(i=(n-2)~0)が負の信号振幅を有し、容量素子23_iの保持電圧VC,iがVCOMからVX,iまで徐々に減少する。重みWのビット値b=0である場合、容量素子23_iの保持電圧が0Vのままである。
例えば、n=3であり、重みW=(b,b,b)=(1,1,1)である場合、第2行において、重みWのビット値b=1に応じて、入力信号VCOM-Vが容量素子23_2の第一端に転送され、容量素子23_2の保持電圧VC,2がVCOMからVCOM-V=VCOM+|V|まで徐々に増加する。これにより、容量素子23_2に、電荷Q=C×(VCOM+|V|)が蓄積される。第1行において、重みWのビット値b=1に応じて、入力信号VCOM+V/2が容量素子23_1の第一端に転送され、容量素子23_1の保持電圧VC,1がVCOMからVCOM+V/2=VCOM-|V|/2まで徐々に減少する。これにより、容量素子23_1に、電荷Q=C×(VCOM-|V|/2)が蓄積される。第0行において、重みWのビット値b=1に応じて、入力信号VCOM+V/2が容量素子23_0の第一端に転送され、容量素子23_0の保持電圧VC,0がVCOMからVCOM+V/2=VCOM-|V|/2まで徐々に減少する。これにより、容量素子23_0に、電荷Q=C×(VCOM-|V|/2)が蓄積される。
タイミングt25~t26の期間において、第1の実施形態のサイクル(3)と同様の動作が行われ、加算回路24が、n個の容量素子23_(n-1)~23_0に蓄積された電荷を蓄積電圧が平均化されるように一括して再分配し、数式8に示すような出力電圧Vを生成して出力ノード20bへ供給する点は、図6の動作と同様である。
以上のように、第2の実施形態では、半導体集積回路201において、正又は負の信号振幅を有する複数の入力電圧に2の補数表現で正又は負の整数を表す複数ビットの重みを乗算し、複数の乗算結果に応じた電荷を再分配して加算結果に対応する出力電圧を生成する。これによっても、ビットシフトを行わずに加算結果を得ることができ、入力及び重みのいずれのビット精度にも関わらず、並行演算を効率化でき、並行演算の処理時間を定時間化できる。
(第3の実施形態)
次に、第3の実施形態にかかる演算システム300について説明する。以下では、第1の実施形態及び第2の実施形態と異なる部分を中心に説明する。
第1の実施形態では、多ビットの乗算を重みのビットごとに分割する際に、ビットごとの並行演算を実施する場合について定時間化するための構成を例示したが、第3の実施形態では、その構成を、ベクトル及び行列の並行演算について定時間化するための構成へ拡張する。
演算システム300は、半導体集積回路1に代えて半導体集積回路301を有する。半導体集積回路301は、図8に示すように構成され得る。半導体集積回路301は、演算回路20(図2参照)に代えて、演算回路320を有する。演算回路320は、演算回路20がN行×M列に拡張され、複数の演算回路20_(N-1,M-1)~20_(0,0)として配列されている。N,Mは、それぞれ、任意の2以上の整数である。各演算回路20は、回路表記が異なるが、第1の実施形態の演算回路20と同様の構成である。
演算回路320は、複数のワード線WL(N-1,n-1)~WL(0,0)及び複数のビット線BL0~BL(n-1)をさらに有し、複数のワード線WLと複数のビット線BLとの交差する位置に複数の単位セルUC(N-1,M-1,n-1)~UC(0,0,0)が配される。各ワード線WLは、列方向に延びるとともに行方向に配列される。各ビット線BLは、行方向に延びるとともに列方向に配列される。各単位セルUCは、第1の実施形態の単位セルUCと同様である。
なお、演算回路20がN行×M列に拡張されたことに伴い、各入力ノードに入力回路2(図1参照)の一部としてドライバDV1が接続されてもよく、各出力ノードに出力回路3(図1参照)の一部としてドライバDV2が接続されてもよい。これにより、入力ノードから各行の演算回路20へ入力電圧を供給する際のドライブ能力を向上でき、各列の演算回路20から出力ノードへ出力電圧を供給する際のドライブ能力を向上できる。
演算回路320は、数式9に示す入力ベクトルX’と数式10に示す重み行列W’との内積を演算し、その演算結果として、数式11に示す出力ベクトルY’=X’W’に含まれる複数の出力電圧VY,j(J=M-1~0)を出力回路3へ入力する。
Figure 2023001953000008
例えば重みWのビットパターンが正の整数を表す場合、入力ベクトルX’に含まれる各要素ベクトルX(i=N-1~0)は、第1の実施形態における入力ベクトルXと同様であり、n個の入力電圧VX,i,VX,i/2,・・・,VX,i/2n-2,VX,i/2n-1を含む。入力ベクトルX’は、それぞれが正の信号振幅を有するN×n個の入力電圧を含む。重み行列W’に含まれる各要素ベクトルWi,j(i=N-1~0,j=M-1~0)は、第1の実施形態における重みベクトルWと同様であり、n個のビットbn-1,bn-2,・・・,b,bを含む。n個のビットbn-1,bn-2,・・・,b,bがn個の記憶素子21_(n-1)~21_0(図2参照)に記憶されている点も第1の実施形態と同様である。各要素ベクトルWi,jに含まれるnビットのパターンは、正の整数を表す。重み行列W’は、N×n×M個のビットを含む。出力ベクトルY’に含まれる出力電圧VY,j(j=M-1~0)は、第1の実施形態における出力電圧Vと同様であり、M個の出力電圧を含む。
すなわち、各列の演算回路20において、乗算回路22(図2参照)がn個の入力電圧とn個のビットとを乗算して複数の乗算結果を生成し、n個の容量素子23(図2参照)が複数の乗算結果に応じた電荷を蓄積する。その後、各列の演算回路20における加算回路24は、n個の容量素子23に蓄積された電荷を蓄積電圧が平均化されるように一括して再分配して、複数の乗算結果が加算された加算結果に対応する出力電圧Vを生成して列ごとに出力ノードに出力する。各列の出力電圧VY,j(j=N-1~0)は、次の数式12で示される。
Figure 2023001953000009
以上のように、第3の実施形態では、ベクトル及び行列の並行演算について、正の信号振幅を有する複数の入力電圧に正の整数を表す複数ビットの重みを乗算し、複数の乗算結果に応じた電荷を列ごとに再分配して複数列の加算結果に対応する複数の出力電圧を生成する。これによっても、ビットシフトを行わずに加算結果を得ることができ、入力及び重みのいずれのビット精度にも関わらず、並行演算の処理時間を定時間化できる。
なお、図示しないが、演算回路320は、第2の実施形態にかかる演算回路220がN行×M列に拡張され、複数の演算回路220_(N-1,M-1)~220_(0,0)として配列されてもよい。各演算回路220は、基本的に第2の実施形態の演算回路220と同様である。この場合、入力ベクトルX’は、それぞれが正又は負の信号振幅を有するN×n個の入力電圧を含む。また、各要素ベクトルWi,jに含まれるnビットのパターンは、2の補数表現で正又は負の整数を表す。
すなわち、ベクトル及び行列の並行演算について、正又は負の信号振幅を有する複数の入力電圧に2の補数表現で正又は負の整数を表す複数ビットの重みを乗算し、複数の乗算結果に応じた電荷を列ごとに再分配して複数列の加算結果に対応する複数の出力電圧を生成する。これによっても、ビットシフトを行わずに加算結果を得ることができ、入力及び重みのいずれのビット精度にも関わらず、並行演算の処理時間を定時間化できる。
(第4の実施形態)
次に、第4の実施形態にかかる演算システム100について説明する。以下では、第1の実施形態~第3の実施形態と異なる部分を中心に説明する。
第1の実施形態~第3の実施形態では、単位セルUCの具体的な構成について言及していないが、第4の実施形態では、単位セルUCの具体的な構成を例示する。
単位セルUCは、図9に示すように、ワード線WLとビット線BLとが交差する位置に配される。図9は、単位セルUCの概略構成を示す図であり、第i行(i=n-1~0)の単位セルUC_iの概略構成を例示する。
ワード線WLとビット線BLとが交差する位置にラインL11が配され、ラインL11は、ワード線WLに接続される第一端とビット線BLに接続される第二端とを有する。単位セルUC_iにおける乗算回路22_iは、ラインL11に挿入される。乗算回路22_iにおけるスイッチSW1及びスイッチSW2の直列接続は、ラインL11に挿入される。単位セルUC_iにおける容量素子23_iは、ラインL11上の中間ノード20cに接続された第一端と基準ノード20dに接続された第二端とを有する。基準ノード20dには、基準電圧(例えば、グランド電圧)が供給される。容量素子23_iの第一端は、中間ノード20cを介してビット線BLに接続される。ビット線BL上には、中間ノード20cと出力ノード20dとの間にスイッチSW4_iが電気的に接続される。
スイッチSW1は、グローバル回路10からのグローバル信号MULTに応じてオン・オフ状態に制御される。スイッチSW4_iは、グローバル回路10からのグローバル信号SUMに応じてオン・オフ状態に制御される。
単位セルUC_iにおける記憶素子21_iは、スイッチSW2の制御端子に接続された出力ノードを有する。記憶素子21_iは、重みWの1つのビットを記憶し、記憶したビットの値に応じた電圧をスイッチSW2の制御端子へ出力する。スイッチSW2は、記憶素子21_iから出力される電圧に応じてオン・オフ状態に維持される。
記憶素子21_iは、揮発性メモリセル(例えば、SRAMメモリセル)であってもよいし、不揮発性メモリセル(例えば、フラッシュメモリセル、抵抗変化素子を逆極性で2段接続したメモリセルなど)であってもよい。プログラムの容易性及び動作時の低消費電力特性を考慮すると、記憶素子21_iは、図10に示すように、SRAMメモリセルで構成されることが望ましい。図10は、単位セルUC_iの具体的な構成を示す図であり、記憶素子21_iがSRAMメモリセルで構成される場合の単位セルUC_iの構成が例示される。
図10に示す記憶素子21_iは、負荷トランジスタT3、T5、駆動トランジスタT4、T6及び転送トランジスタT1、T2を有する6T型のSRAMセルである。転送トランジスタT1、T2は、それぞれ、NMOSトランジスタで構成され得る。負荷トランジスタT3、T5は、それぞれ、PMOSトランジスタで構成され得る。駆動トランジスタT4、T6は、それぞれ、NMOSトランジスタで構成され得る。負荷トランジスタT3と駆動トランジスタT4とはインバータINV1を構成し、負荷トランジスタT5と駆動トランジスタT6とはインバータINV2を構成する。インバータINV1の出力端子は記憶ノードNtを介してインバータINV2の入力端子に接続され、インバータINV2の出力端子は反転記憶ノードNcを介してインバータINV1の入力端子に接続されている。インバータINV1とインバータINV2は、フリップフロップを構成する。記憶ノードNtは、記憶素子21_iの出力ノードを構成し、スイッチSW2の制御端子に接続される。
記憶素子21_iの記憶ノードNtと重み用ビット線WBLとの間には、転送トランジスタT1が接続されている。フリップフロップの反転記憶ノードNcと重み用反転ビット線WBLBとの間には、転送トランジスタT2が接続されている。転送トランジスタT1、T2はそれぞれ、対応するドライバから重み用ワード線WWL経由でゲートにアクティブレベルの制御信号が供給された際にオンする。
例えば、重み用ビット線WBLがHレベル、重み用反転ビット線WBLBがLレベルに維持された状態で転送トランジスタT1,T2がオンすると、記憶ノードNtにHレベルが保持され、反転記憶ノードNcにLレベルが保持される。すなわち、記憶素子21_iに、ビット値「1」が書き込まれる。インバータINV1とインバータINV2とが相補的に動作するため、転送トランジスタT1,T2がオフされた後も、記憶ノードNtにHレベルが保持され、反転記憶ノードNcにLレベルが保持される。すなわち、記憶素子21_iは、ビット値「1」を保持するとともにビット値「1」に応じたHレベルの電圧をスイッチSW2の制御端子へ出力する。
重み用ビット線WBLがLレベル、重み用反転ビット線WBLBがHレベルに維持された状態で転送トランジスタT1,T2がオンすると、記憶ノードNtにLレベルが保持され、反転記憶ノードNcにHレベルが保持される。すなわち、記憶素子21_iに、ビット値「0」が書き込まれる。インバータINV1とインバータINV2とが相補的に動作するため、転送トランジスタT1,T2がオフされた後も、記憶ノードNtにLレベルが保持され、反転記憶ノードNcにHレベルが保持される。すなわち、記憶素子21_iは、ビット値「0」を保持するとともにビット値「0」に応じたLレベルの電圧をスイッチSW2の制御端子へ出力する。
単位セルUC_iにおいて、スイッチSW1,SW2,SW4_iは、それぞれ、トランジスタT7,T8,T9で構成され得る。トランジスタT7,T8,T9は、それぞれ、NMOSトランジスタで構成され得る。トランジスタT7は、ワード線WLに接続されるソースと、トランジスタT8に接続されるドレインと、グローバル信号MULTを受けるゲートと、を有する。トランジスタT8は、トランジスタT7に接続されるソースと、中間ノード20cを介してビット線BLに接続されるドレインと、記憶素子21_iの記憶ノードNtから出力される電圧を受けるゲートと、を有する。トランジスタT9は、出力ノード20bに接続可能なソースと、スイッチSW3(図2、図5参照)を介して共通電圧VCOMに接続可能なドレインと、グローバル信号SUMを受けるゲートと、を有する。図10に示す単位セルUC_iは、6T型のSRAMセルを9T1C型に拡張したSRAMセルとみなすことができる。9T1C型の単位セルUC_iの構成をSRAMxと呼ぶことにする。
なお、記憶素子21_iが揮発性メモリセル(SRAMメモリセル)である場合、蓄電素子(図示せず)から記憶素子21_iの電源ノードVDDにバックアップ用の電源が供給されてもよい。これにより、半導体集積回路1の電源オフ時でも記憶素子21_iに重みWのビット値が不揮発に記憶され得る。蓄電素子は、例えば2次電池である。
以上のように、第4の実施形態では、単位セルUC_iにおいて、記憶素子21_iを6T型のSRAMセルで構成し、スイッチSW1,SW2,SW4をそれぞれトランジスタで構成することで、単位セルUC_iを9T1C型の構成(SRAMx)で実装することができる。
なお、単位セルUC_iは、図10に示す構成に代えて、図11に示すように構成されてもよい。図11は、第4の実施形態の変形例にかかる単位セルUC_iの具体的な構成を示す図である。この場合、単位セルUC_iにおいて、スイッチSW1,SW2,SW4_iは、それぞれ、トランスファーゲートTG1,TG2,TG3で構成され得る。それに応じて、グローバル回路10は、グローバル信号MULT ̄,SUM ̄をさらに出力する。グローバル信号MULT ̄は、グローバル信号MULTが論理反転された信号である。グローバル信号SUM ̄は、グローバル信号SUMが論理反転された信号である。
トランスファーゲートTG1は、ソース・ドレインがそれぞれ共通接続されたトランジスタT7,T10を含む。トランジスタT7,T10は、それぞれ、NMOSトランジスタ、PMOSトランジスタで構成され得る。トランジスタT10は、ワード線WLに接続されるソースと、トランスファーゲートTG2に接続されるドレインと、グローバル信号MULT ̄を受けるゲートと、を有する。
トランスファーゲートTG2は、ソース・ドレインがそれぞれ共通接続されたトランジスタT8,T11を含む。トランジスタT8,T11は、それぞれ、NMOSトランジスタ、PMOSトランジスタで構成され得る。トランジスタT11は、トランスファーゲートTG1に接続されるソースと、中間ノード20cを介してビット線BLに接続されるドレインと、記憶素子21_iの反転記憶ノードNcから出力される電圧を受けるゲートと、を有する。
トランスファーゲートTG3は、ソース・ドレインがそれぞれ共通接続されたトランジスタT9,T12を含む。トランジスタT9,T12は、それぞれ、NMOSトランジスタ、PMOSトランジスタで構成され得る。トランジスタT12は、出力ノード20bに接続可能なソースと、スイッチSW3(図2、図5参照)を介して共通電圧VCOMに接続可能なドレインと、グローバル信号SUM ̄を受けるゲートと、を有する。
図11に示す単位セルUC_iは、6T型のSRAMセルを12T1C型に拡張したSRAMセルとみなすことができる。図11に示す12T1C型の単位セルUC_iの構成もSRAMxと呼ぶことにする。すなわち、単位セルUC_iにおいて、記憶素子21_iを6T型のSRAMセルで構成し、スイッチSW1,SW2,SW4をそれぞれ2Tのトランスファーゲートで構成することで、単位セルUC_iを12T1C型の構成(SRAMx)で実装することができる。
(第5の実施形態)
次に、第5の実施形態にかかる演算システム100について説明する。以下では、第1の実施形態~第4の実施形態と異なる部分を中心に説明する。
第1の実施形態では、半導体集積回路の入力回路の構成について言及していないが、第5の実施形態では、半導体集積回路の入力回路の具体的な構成を例示する。
図1に示す演算システム100において、入力回路2は、デジタルドメインの入力データDin=(dm-1,dm-2,・・・,d,d)をアナログドメインの入力ベクトルX=(V,V/2,・・・,V/2n-2,V/2n-1)に変換して半導体集積回路1の演算回路20へ入力する。入力回路2の構成として、n個の単位構成30_(n-1)~30_0を用意することが考えられる。
各単位構成30は、図12に示すように構成され得る。図12は、入力回路2における単位構成30を示す図であり、第i行(i=m-1~0)の単位構成30_iを例示する。単位構成30_iは、DA変換回路DA1、ドライバDV1、スイッチSW11及びスイッチSW12を有する。DA変換回路DA1は、入力ノード30a_i及びスイッチSW11の間に電気的に接続される。スイッチSW11は、DA変換回路DA1及び中間ノード30d_iの間に電気的に接続される。ドライバDV1は、中間ノード30d_i及び出力ノード30b_iの間に電気的に接続される。スイッチSW12は、入力ノード30c_i及び中間ノード30d_iの間に電気的に接続される。入力ノード30c_iは、行方向に隣接する(例えば1つ上の)単位構成30_(i+1)の出力ノード30b_(i+1)に接続され得る(図13参照)。
DA変換回路DA1は、デジタル信号Din,iをアナログ信号VX,iに変換する。行制御信号isMSBは、対応する行の重みWのビットbがMSBかどうかを示す。行制御信号isMSBは、対応する行の重みWのビットbがMSBのときにアクティブレベル(例えば、1)に設定され、対応する行の重みWのビットbがMSBでないときにノンアクティブレベル(例えば、0)に設定される。
スイッチSW11は、行制御信号isMSBに応じてオン・オフ状態に制御される。スイッチSW11は、行制御信号isMSBを制御端子で受ける。スイッチSW11は、アクティブレベルの行制御信号isMSBが制御端子に供給された際にオン状態に維持され、ノンアクティブレベルの行制御信号isMSBが制御端子に供給された際にオフ状態に維持される。すなわち、対応する行の重みWのビットbがMSBのときにスイッチSW11がオン状態に維持され、対応する行の重みWのビットbがMSBでないときにスイッチSW11がオフ状態に維持される。
スイッチSW12は、行制御信号isMSBが論理反転された行制御信号isMSB ̄に応じてオン・オフ状態に制御される。スイッチSW12は、行制御信号isMSB ̄を制御端子で受ける。スイッチSW12は、ノンアクティブレベルの行制御信号isMSB ̄が制御端子に供給された際にオフ状態に維持され、アクティブレベルの行制御信号isMSB ̄が制御端子に供給された際にオン状態に維持される。すなわち、対応する行の重みWのビットbがMSBのときにスイッチSW12がオフ状態に維持され、対応する行の重みWのビットbがMSBでないときにスイッチSW12がオン状態に維持される。
ドライバDV1は、可変ゲインGを有する。ドライバDV1は、アクティブレベルの行制御信号isMSBが制御端子に供給された際に可変ゲインG=1に設定され、ノンアクティブレベルの行制御信号isMSBが制御端子に供給された際に可変ゲインG=0.5に設定される。可変ゲインG=1は、ドライバDV1のドライブ能力が第1の能力に対応し、変ゲインG=0,5は、ドライバDV1のドライブ能力が第2の能力に対応する。すなわち、対応する行の重みWのビットbがMSBのときにドライバDV1のドライブ能力が第1の能力に制御され、対応する行の重みWのビットbがMSBでないときにドライバDV1のドライブ能力が第1の能力より低い第2の能力に制御される。
入力回路2は、図13に示すように、n個の単位構成30_(n-1)~30_0をラダー状に接続することで構成され得る。図13は、入力回路2の構成を示す回路図であり、演算回路20における任意の複数行(第(i+3)~i行)に対応した複数の単位構成30_(i+3)~30_iを例示する。
単位構成30_iの入力ノード30c_iは、1つ上の単位構成30_(i+1)の出力ノード30b_(i+1)に接続される。単位構成30_(i+1)の入力ノード30c_(i+1)は、1つ上の単位構成30_(i+2)の出力ノード30b_(i+2)に接続される。単位構成30_(i+2)の入力ノード30c_(i+2)は、1つ上の単位構成30_(i+3)の出力ノード30b_(i+3)に接続される。
単位構成30_iのスイッチSW11,SW12は、それぞれ、行制御信号isMSB,isMSB ̄に応じてオン・オフ状態に制御される。単位構成30_(i+1)のスイッチSW11,SW12は、それぞれ、行制御信号isMSBi+1,isMSBi+1 ̄に応じてオン・オフ状態に制御される。単位構成30_(i+2)のスイッチSW11,SW12は、それぞれ、行制御信号isMSBi+2,isMSBi+2 ̄に応じてオン・オフ状態に制御される。単位構成30_(i+3)のスイッチSW11,SW12は、それぞれ、行制御信号isMSBi+3,isMSBi+3 ̄に応じてオン・オフ状態に制御される。
複数の単位構成30_(i+3)~30_iから半導体集積回路1へ入力される入力信号VX,i+3~VX,iは、重みWのビット精度nに応じて、ドライバDV1によって1又は0.5のゲインでドライブされる。すなわち、重みWの複数ビットnに対応する複数行のうちMSBの行に対応する単位構成30では、ドライバDV1の可変ゲインG=1に設定され、それ以外の行に対応する単位構成30では、ドライバDV1の可変ゲインG=0.5に設定される。
例えば、重みWのビット精度n=2の場合、図13に示す回路の接続構成が図14に示すようになる。図14は、入力回路2のユースケース(n=2の場合)を示す図である。各単位セルUCは、例えば、図10又は図11に示すようなSRAMxである。
図14に示した例では、重みWの2ビットb,bがそれぞれ2つの単位セルUC_(i+3),UC_(i+2)に保持される。これに応じて、MSBに対応する単位構成30_(i+3)のスイッチSW1がオン状態に維持され、他のビットに対応する単位構成30_(i+2)のスイッチSW1がオフ状態に維持される。MSBに対応する単位構成30_(i+3)のスイッチSW2がオフ状態に維持され、他のビットに対応する単位構成30_(i+2)のスイッチSW1がオン状態に維持される。これにより、第(i+2)行のDA変換回路DA1が非活性化され、第(i+3)行のドライバDV1の出力ノードが第(i+2)行のドライバDV1の入力ノードに接続される。第(i+3)行のドライバDV1、第(i+2)行のドライバDV1の可変ゲインGは、それぞれ、1,0.5に設定される。
この構成により、入力データDin,1に応じて第(i+3)行のDA変換回路DA1から出力されるアナログ信号VX,1は、第(i+3)行のドライバDV1経由で入力電圧VX,1として演算回路20の単位セルUC_(i+3)へ伝達される。また、アナログ信号VX,1は、第(i+3)行のドライバDV1及び第(i+2)行のドライバDV1経由で入力電圧VX,1/2として演算回路20の単位セルUC_(i+2)へ伝達される。
また、重みWの2ビットb,bが2つの単位セルUC_(i+1),UC_iに保持される。これに応じて、MSBに対応する単位構成30_(i+1)のスイッチSW1がオン状態に維持され、他のビットに対応する単位構成30_iのスイッチSW1がオフ状態に維持される。MSBに対応する単位構成30_(i+1)のスイッチSW2がオフ状態に維持され、他のビットに対応する単位構成30_iのスイッチSW1がオン状態に維持される。これにより、第i行のDA変換回路DA1が非活性化され、第(i+1)行のドライバDV1の出力ノードが第i行のドライバDV1の入力ノードに接続される。第(i+1)行のドライバDV1、第i行のドライバDV1の可変ゲインGは、それぞれ、1,0.5に設定される。
この構成により、入力データDin,0に応じて第(i+1)行のDA変換回路DA1から出力されるアナログ信号VX,0は、第(i+1)行のドライバDV1経由で入力電圧VX,0として演算回路20の単位セルUC_(i+1)へ伝達される。また、アナログ信号VX,0は、第(i+1)行のドライバDV1及び第i行のドライバDV1経由で入力電圧VX,0/2として演算回路20の単位セルUC_iへ伝達される。
図14に示す接続構成では、入力回路2において、動作するDA変換回路DA1の数を行の数の1/2に低減でき、入力回路2を含む演算システム100の消費電力を低減できる。
例えば、重みWのビット精度n=4の場合、図13に示す回路の接続構成が図15に示すようになる。図15は、入力回路2のユースケース(n=4の場合)を示す図である。各単位セルUCは、例えば、図10又は図11に示すようなSRAMxである。
図15に示した例では、重みWの4ビットb,b,b,bがそれぞれ4つの単位セルUC_(i+3),UC_(i+2),UC_(i+1),UC_iに保持される。これに応じて、MSBに対応する単位構成30_(i+3)のスイッチSW1がオン状態に維持され、他のビットに対応する単位構成30_(i+2)~30_iのスイッチSW1がオフ状態に維持される。MSBに対応する単位構成30_(i+3)のスイッチSW2がオフ状態に維持され、他のビットに対応する単位構成30_(i+2)~30_iのスイッチSW1がオン状態に維持される。これにより、第(i+2)~i行のDA変換回路DA1が非活性化され、第(i+3)行のドライバDV1の出力ノードが第(i+2)行のドライバDV1の入力ノードに接続され、第(i+2)行のドライバDV1の出力ノードが第(i+1)行のドライバDV1の入力ノードに接続され、第(i+1)行のドライバDV1の出力ノードが第i行のドライバDV1の入力ノードに接続される。第(i+3)行のドライバDV1の可変ゲインGは1に設定され、第(i+2)~i行のドライバDV1の可変ゲインGは0.5に設定される。
この構成により、入力データDin,0に応じて第(i+3)行のDA変換回路DA1から出力されるアナログ信号VX,0は、第(i+3)行のドライバDV1経由で入力電圧VX,0として演算回路20の単位セルUC_(i+3)へ伝達される。また、アナログ信号VX,0は、第(i+3)行のドライバDV1及び第(i+2)行のドライバDV1経由で入力電圧VX,0/2として演算回路20の単位セルUC_(i+2)へ伝達される。アナログ信号VX,0は、第(i+3)行のドライバDV1、第(i+2)行のドライバDV1及び第(i+1)行のドライバDV1経由で入力電圧VX,0/2として演算回路20の単位セルUC_(i+1)へ伝達される。アナログ信号VX,0は、第(i+3)行のドライバDV1、第(i+2)行のドライバDV1、第(i+1)行のドライバDV1及び第i行のドライバDV1経由で入力電圧VX,0/2として演算回路20の単位セルUC_iへ伝達される。
図15に示す接続構成では、入力回路2において、動作するDA変換回路DA1の数を行の数の1/4に低減でき、入力回路2を含む演算システム100の消費電力を低減できる。
以上のように、第5の実施形態では、演算システム100において、入力回路2が複数の単位構成30をラダー状に接続して構成される。この構成により、入力回路2において、動作するDA変換回路DA1の数を低減でき、入力回路2を含む演算システム100の消費電力を低減できる。
なお、各単位構成30’では、図16に示すように、ドライバDV1のゲインが固定され、入力ノード30cの電圧が複数のインピーダンス素子で分圧されてドライバDV1に入力されるように構成されてもよい。図16は、第5の実施形態の変形例における入力回路2’の構成を示す回路図である。
各単位構成30’は、ドライバDV1のゲインが1に固定され、複数のインピーダンス素子Z1,Z2をさらに有する。複数のインピーダンス素子Z1,Z2は、互いに等しいインピーダンスを有する。各インピーダンス素子Z1,Z2は、インピーダンスを有する任意の素子を用いることができ、例えば容量素子、抵抗素子、又はトランジスタなどを用いることができる。各インピーダンス素子Z1,Z2は、DA変換回路DA1内の一部の素子(例えば、容量素子CE、図18参照)と共通化されてもよい。この場合、入力回路2’の回路規模を縮小できる。
各単位構成30’において、インピーダンス素子Z1は、スイッチSW2に接続された第一端と中間ノード30dに接続された第二端とを有する。インピーダンス素子Z2は、中間ノード30dに接続された第一端と基準電位(例えば、グランド電位)に接続された第二端とを有する。
例えば、単位構成30’_(i+3)のドライバDV1にアナログ信号VX,i+3が入力され、単位構成30’_(i+2)のスイッチSW12がオン状態に維持される場合、ドライバDV1がアナログ信号VX,i+3を出力する。また、アナログ信号VX,i+3は、単位構成30’_(i+2)の複数のインピーダンス素子Z1,Z2で分圧され、アナログ信号VX,i+3/2が単位構成30’_(i+2)のドライバDV1に入力され、そのドライバDV1がアナログ信号VX,i+3/2を出力する。
このように、図16に示す入力回路2’の構成によっても、図14及び図15に示す接続構成と実質的に同様に動作する接続構成を実現可能であり、入力回路2’を含む演算システム100の消費電力を低減できる。
(第6の実施形態)
次に、第6の実施形態にかかる演算システム200について説明する。以下では、第1の実施形態~第5の実施形態と異なる部分を中心に説明する。
第2の実施形態では、半導体集積回路の入力回路の構成について言及していないが、第6の実施形態では、半導体集積回路の入力回路の具体的な構成を例示する。
第2の実施形態にかかる演算システム200は、半導体集積回路201の演算回路220(図5参照)で保持される重みWの複数ビットが2の補数表現で正又は負の整数を表す場合、入力回路2(図1参照)に代えて入力回路202を有する。入力回路202は、デジタルドメインの入力データDin=(dm-1,dm-2,・・・,d,d)をアナログドメインの入力ベクトルX=(VCOM-V,VCOM+V/2,・・・,VCOM+V/2n-2,VCOM+V/2n-1)に変換して半導体集積回路201の演算回路220へ入力する。入力回路202の構成として、n個の単位構成230_(n-1)~230_0を用意することが考えられる。
各単位構成230は、図17に示すように構成され得る。図17は、入力回路202における単位構成230を示す図であり、第i行(i=n-1~0)の単位構成230_iを例示する。第i行が重みWのMSBに対応する場合、単位構成230_iは入力信号Vcom-Vxを生成して演算回路220へ入力し、第i行が重みWのMSB以外のビットに対応する場合、単位構成230_iは入力信号Vcom+Vx/2n-1-iを生成して演算回路220へ入力する。
単位構成230_iは、単位構成30_i(図12参照)が拡張された構成を有する。単位構成230_iは、重みWの複数ビットが2の補数表現で正又は負の整数を表す場合に対応し、共通電圧VCOMを基準(信号振幅0)とする正又は負の信号振幅を有する入力電圧を生成する。単位構成230_iは、DA変換回路DA1、ドライバDV1、スイッチSW11及びスイッチSW12(図12参照)に代えて、DA変換回路DA201、ドライバDV201、スイッチSW211、スイッチSW212を有する単位構成230_iは、スイッチSW213、スイッチSW214、インピーダンス素子Z201、インピーダンス素子Z202、論理和ゲートOG201及びトランジスタTR201をさらに有する。
DA変換回路DA201は、入力ノード230a_i及びスイッチSW211の間に電気的に接続される。スイッチSW211は、DA変換回路DA201及び中間ノード230d_iの間に電気的に接続される。ドライバDV201は、中間ノード230d_i及び中間ノード230e_iの間に電気的に接続される。スイッチSW212は、入力ノード230c_i及び中間ノード230d_iの間に電気的に接続される。論理和ゲートOG201は、グローバル信号INVと行制御信号isMSBとの論理和を演算し、演算結果をスイッチSW212の制御端子へ供給する。入力ノード230c_iは、行方向に隣接する(例えば1つ上の)単位構成230_(i+1)の中間ノード230e_(i+1)に電気的に接続され得る(図20参照)。
なお、n個の単位構成230_(n-1)~230_0をラダー状に接続して入力回路202を構成する(図20参照)ことで、重みWのビット数nに応じて動作するDA変換回路DA201の個数を1/nに制限でき、入力回路202の低消費電力化が可能である点は、図12に示す単位構成30と同様である。
スイッチSW213は、中間ノード230e_i及び出力ノード230b_iの間に電気的に接続される。インピーダンス素子Z201は、スイッチSW212に接続された第一端と中間ノード230d_iに接続された第二端とを有する。インピーダンス素子Z202は、中間ノード230d_iに接続された第一端と中間ノード230f_iに接続された第二端とを有する。インピーダンス素子Z201,Z202は、それぞれ、インピーダンスを有する任意の素子が採用され得る。図17では、インピーダンス素子Z201,Z202がそれぞれ容量素子である構成が例示されている。このとき、ドライバDV1のゲインが1に固定され、複数のインピーダンス素子Z1,Z2は、互いに等しいインピーダンスを有する。
スイッチSW214は、中間ノード230f_i及び基準ノード230g_iの間に電気的に接続される。基準ノード230g_iは、グローバル信号INVが供給される。トランジスタTR201は、例えばNMOSトランジスタであり、基準ノード230h_iに接続されるソースと、中間ノード230f_iに接続されるドレインと、行制御信号isMSB ̄を受けるゲートと、を有する。行制御信号isMSB ̄は、行制御信号isMSBが論理反転された信号である。これにより、中間ノード230f_iの電位VCBは、第i行が重みWのMSBに対応する場合、グローバル信号INVの値に設定され、第i行が重みWのMSB以外のビットに対応する場合、共通電圧VCOMに設定される。
重みWのビット数がnである場合における各単位構成230のDA変換回路DA201は、図18に示すように構成され得る。図18は、DA変換回路DA201の構成を示す回路図である。
DA変換回路DA201は、標準的な電荷再分配型のDA変換回路であり、m個の容量素子CE(m-1)~CE0、m個のインバータIV(m-1)~IV0、m個の排他的論理和ゲートXG(m-1)~XG0、m個のフリップフロップFF(m-1)~FF0、及びフリップフロップFFeを有する。m個のフリップフロップFF(m-1)~FF0と、m個の排他的論理和ゲートXG(m-1)~XG0と、m個のインバータIV(m-1)~IV0と、m個の容量素子CE(m-1)~CE0とは、それぞれ互いに対応する。m個のインバータIV(m-1)~IV0は、それぞれ、インバータ接続されたNMOSトランジスタ及びPMOSトランジスタを含む。
フリップフロップFFeは、クロックCLKに同期して、行制御信号isMSBを保持する。それとともに、フリップフロップFFeは、行制御信号isMSBを論理和ゲートOG201の入力ノード及びスイッチSW214の制御端子へ出力し、行制御信号isMSB ̄をトランジスタTR201のゲートへ出力する(図17参照)。フリップフロップFFeは、クリア信号CLR ̄がアクティブレベル(例えば、Lレベル)になると、保持される値を初期値(例えば、0)にリセットする。
n個のフリップフロップFF(m-1)~FF0は、それぞれクロックCLKに同期して、入力データDinのmビットdm-1~dの値を保持する。それとともに、各フリップフロップFFは、ビットdの値を、対応する排他的論理和ゲートXGへ出力する。各フリップフロップFFは、クリア信号CLR ̄がアクティブレベル(例えば、Lレベル)になると保持される値を初期値(例えば、0)にリセットする。
m個の排他的論理和ゲートXG(m-1)~XG0は、グローバル信号INVに応じてmビットdm-1~dをビット反転させるか否かを切り替える。各排他的論理和ゲートXGは、対応するフリップフロップFFから受けたビットdとグローバル信号INVとの排他的論理和を演算し、演算結果Bm-1~Bを生成する。これにより、m個の排他的論理和ゲートXG(m-1)~XG0は、グローバル信号INV=0のとき、mビットdm-1~dをそのまま演算結果Bm-1~Bとしてm個のインバータIV(m-1)~IV0へ出力し、グローバル信号INV=1のとき、mビットdm-1~dをビット反転させた演算結果Bm-1~Bをm個のインバータIV(m-1)~IV0へ出力する。
m個のインバータIV(m-1)~IV0は、m個の排他的論理和ゲートXG(m-1)~XG0から出力されたm個のビット値を論理反転させてm個の容量素子CE(m-1)~CE0へ出力する。各インバータIVは、対応する排他的論理和ゲートXGから出力されたビット値を論理反転させて、対応する容量素子CEの第一端へ供給する。
m個の容量素子CE(m-1)~CE0は、バイナリで異なる容量値2(m-1)C~Cを有する。各容量素子CEは、対応するインバータIVに接続された第一端と出力ノードNoutに接続された第二端とを有する。各容量素子Cは、第一端に供給されたビット値に応じた電荷を蓄積する。これに応じて、m個の容量素子CE(m-1)~CE0の第二端の電荷が容量比に応じて再分配され、再分配後の電荷に応じた電圧が出力ノードNoutに現れる。なお、制御のロジックによっては、このとき、図17に示したスイッチSW211がオンされてインピーダンス素子(容量素子)Z201,Z202も電荷の再分配に用いられてもよい。
DA変換回路DA201の動作として、次の第1の動作と第2の動作とが考えられる。
第1の動作では、DA変換回路DA201は、入力データDinをDA変換して変換結果としてVCOM+Vを出力ノードNoutから出力し得る。出力VCOM+Vは、0VとVdd=2VCOMとの間で変化し得る。出力に含まれるパラメータVxは、正又は負の値をとり得る。|Vx|は、0VとVCOMとの間で変化し得る。入力データDinの複数ビットは、MSBが符号ビットである。MSBの値が0のときに正の整数であることを示し、MSBの値が1のときに複数ビットのパターンが負の整数であることを示す。これにより、入力データDinの複数ビットが表す正又は負の整数を、出力VCOM+Vの電圧値に疑似的な「バイナリオフセット」でマッピングすることができる。DA変換回路DA201のビット精度nが4ビットである場合、出力VCOM+Vは、典型的に、VCOM-(8/8)×VCOMとVCOM+(7/8)×VCOMとの間で変化し得る。
第2の動作では、数式4及び数式5で示すように、重みWのMSBに対応する行では、DA変換回路DA201がVCOM-Vを出力し、重みWのMSB以外のビットに対応する行では、DA変換回路DA201がVCOM+V/2n-i-1を出力することが求められる。
第1の動作と第2の動作との両方に対応できるように、図17に示す単位構成230_i、図18に示すDA変換回路DA201では、それぞれ、グローバル回路10(図5参照)からグローバル信号INVが供給される。グローバル信号INV=0のとき、DA変換回路DA201が第1の動作を行い、単位構成230_iは、DA変換回路DA201の第1の動作に応じた動作を行う。グローバル信号INV=1のとき、DA変換回路DA201が第2の動作を行い、単位構成230_iは、DA変換回路DA201の第2の動作に応じた動作を行う。
DA変換回路DA201では、m個の排他的論理和ゲートXG(m-1)~XG0でmビットdm-1~dとグローバル信号INVとの排他的論理和が演算され、m個の容量素子CE(m-1)~CE0で容量比に応じて電荷の再分配が行われる。第1の動作は、次の数式13で示され、第2の動作は次の数式14で示される。
Figure 2023001953000010
数式13,14で示されるように、第2の動作は、第1の動作に対して1LSBの誤差がある。この1LSBの誤差を補正するために、図19に示すようなマッピングテーブルを用いることができる。図19では、グローバル信号INV=0の場合とグローバル信号INV=1の場合とのそれぞれについて、入力データDinの複数ビットと中間ノード230f_iの電位VCBのビットとのセットに対して、DA変換回路DA201の出力VCOM+V又はVCOM-Vがマッピングされている。図19に示すマッピングテーブルにより、グローバル信号INV=0のとき(第1の動作)とグローバル信号INV=1のとき(第2の動作)とで基準(VCOM)を揃えることができ、第2の動作における1LSBの誤差が補正され得る。
入力回路202がn個の単位構成230_(n-1)~230_0をラダー状に接続することで構成され得る点は、第5の実施形態と同様である。任意の第i行について、単位構成230_iの入力ノード230c_iは、1つ上の単位構成230_(i+1)の中間ノード230e_(i+1)に接続される。この接続が繰り返されることで、n個の単位構成230_(n-1)~230_0がラダー状に接続され得る。
例えば、半導体集積回路201の演算回路220(図5参照)で保持される重みWのビット精度がn=3ビットであり、その3ビットが2の補数表現で正又は負の整数を表す場合、入力回路202は、図20に示すように接続され得る。図20は、入力回路202の構成を示す回路図であり、演算回路220(図5参照)で保持される重みWが3ビットで2の補数表現により正又は負の整数を表す場合の構成を例示する。
単位構成230_0の入力ノード230c_0は、1つ上の単位構成230_1の中間ノード230e_1に接続される。単位構成230_1の入力ノード230c_1は、1つ上の単位構成230_2の中間ノード230e_2に接続される。これにより、3個の単位構成230_2~230_0がラダー状に接続され得る。
n個の単位構成230_(n-1)~230_0のラダー状接続では、2つのフェーズで処理が行われ、グローバル信号INVを用いて単位構成230間の1LSBの誤差が補正され得る。
例えば、パラメータVが正の値を有し、半導体集積回路201の演算回路220(図5参照)で保持される重みWのビット精度がn=3ビットであり、その3ビットが2の補数表現で正又は負の整数を表す場合、入力回路202は、図21に示すように動作し得る。図21は、入力回路202の動作を示す波形図であり、図21(a)は、各信号又は各電圧の時間的な遷移を示し、図21(b)は、3個の単位構成230_2~230_0の中間ノード230e_2~230e_0の電圧VDV2~VDV0の時間的な変化を示す。図21では、演算回路220で保持される重みWが3ビットで2の補数表現により正又は負の整数を表す場合の動作を例示する。DA変換回路DA201内の構成もn=3に対応した構成になっているとする(図18参照)。なお、以下では、信号のレベル「0」はLレベルと読み替えることができ、信号のレベル「1」はHレベルと読み替えることができる。
タイミングt31の直前において、各単位構成230のスイッチSW214及びトランジスタTR201が行制御信号isMSB,isMSB ̄の値に応じてオン・オフ制御される。すなわち、中間ノード230fの電圧VCBが行制御信号isMSBの値に応じて設定される。図20に示したように、重みWのMSBに対応する第2行では、行制御信号isMSB2=1,isMSB2 ̄=0であり、スイッチSW214がオンし(点線で示す状態になり)トランジスタTR201がオフするので、電圧VCB2=INV=0に設定される。重みWのMSB以外のビットに対応する第1行では、行制御信号isMSB1=0,isMSB1 ̄=1であり、スイッチSW214がオフしトランジスタTR201がオンするので、電圧VCB1=VCOMに設定される。重みWのLSBに対応する第0行では、行制御信号isMSB0=0,isMSB0 ̄=1であり、スイッチSW214がオフしトランジスタTR201がオンするので、電圧VCB0=VCOMに設定される。このとき、スイッチSW213に対する制御信号O=0に維持されている。従って、スイッチSW213がオフしている。
各単位構成230のスイッチSW211,SW212は、行制御信号isMSB,isMSB ̄の値に応じてオン・オフ制御される。重みWのMSBに対応する第2行では、行制御信号isMSB2=1,isMSB2 ̄=0であり、スイッチSW211がオンし(点線で示す状態になり)スイッチSW212がオフするので、DA変換回路DA201が活性化される。重みWのMSB以外のビットに対応する第1行では、行制御信号isMSB1=0,isMSB1 ̄=1であり、スイッチSW211がオフしスイッチSW212がオンする(点線で示す状態になる)ので、DA変換回路DA201が非活性化され、第2行の中間ノード230e_2がインピーダンス素子Z201の第一端に接続される。重みWのLSBに対応する第0行では、行制御信号isMSB0=0,isMSB0 ̄=1であり、スイッチSW211がオフしスイッチSW212がオンする(点線で示す状態になる)ので、DA変換回路DA201が非活性化され、第1行の中間ノード230e_2がインピーダンス素子Z201の第一端に接続される。これにより、単位構成230_2のDA変換回路DA201→スイッチSW211→ドライバDV201→単位構成230_1のインピーダンス素子Z201→ドライバDV201→単位構成230_0のインピーダンス素子Z201→ドライバDV201のラダー状接続構成が形成される。また、単位構成230_2~230_0において動作するDA変換回路DA201の個数を1個に制限できるので、入力回路202の低消費電力化が可能である。
図21に示すように、タイミングt31~t32の期間において、第1のフェーズの処理が行われる。タイミングt31になると、入力データDin=(d,d,d)が単位構成230_2のDA変換回路DA201に入力され、3ビットd~dがそれぞれ3個のフリップフロップFF2~FF0で保持される。グローバル信号INV=0であるので、3個の排他的論理和ゲートXG2~XG0は、3ビットd~dをそのまま演算結果B~Bとして3個のインバータIV2~IV0へ出力する。3個のインバータIV2~IV0は、演算結果B~Bを論理反転して3個の容量素子CE2~CE0の第一端へ供給する。3個の容量素子CE2~CE0の第一端では、演算結果B~Bの論理反転値に応じた電荷が発生し、それに応じて、第二端では、反対極性の電荷が発生する。第二端で発生した各電荷は、3個の容量素子CE2,CE1,CE0の容量値2C,2C,Cの比率に応じて再分配される。
これにより、単位構成230_2のDA変換回路DA201の出力ノードNoutの電圧が0Vから徐々にVCOM+Vまで増加し、単位構成230_2の中間ノード230e_2の電圧VDV2は0Vから徐々にVCOM+Vまで増加する。これに応じて、単位構成230_1のインピーダンス素子Z201,Z202の分圧により、単位構成230_1の中間ノード230e_1の電圧VDV1は0Vから徐々にVCOM+V/2まで増加する。さらに、単位構成230_0のインピーダンス素子Z201,Z202の分圧により、単位構成230_0の中間ノード230e_0の電圧VDV0は0Vから徐々にVCOM+V/2まで増加する。このとき、制御信号O=0に維持されている。
タイミングt32~t33の期間において、第2のフェーズの処理が行われる。タイミングt32になると、グローバル信号INVが0から1へ遷移するので、電圧VCB2が0から1へ遷移する。これに伴い、1LSBの誤差を補正するため、単位構成230_2のDA変換回路DA201における排他的論理和ゲートXG2~XG0は、3ビットd~dをビット反転させた演算結果B~Bを3個のインバータIV2~IV0へ出力する。また、これにより、単位構成230_2のDA変換回路DA201の出力ノードNoutの電圧がVCOM+Vから徐々にVCOM-Vまで減少し、単位構成230_2の中間ノード230e_2の電圧VDV2はVCOM+Vから徐々にVCOM-Vまで減少する。
一方、グローバル信号INV=1に応じて、単位構成230_1のスイッチSW212、単位構成230_0のスイッチSW212が、それぞれ、オフされる(図20において実線で示す状態になる)。また、単位構成230_1では、電圧VCB1=VCOMのままであるので、中間ノード230e_1の電圧VDV1はVCOM+V/2に維持される。同様に、単位構成230_0では、電圧VCB0=VCOMのままであるので、単位構成230_0の中間ノード230e_0の電圧VDV0はVCOM+V/2に維持される。このとき、制御信号O=0に維持されている。
タイミングt33において、制御信号Oが0から1へ遷移する。各単位構成230_2~230_0において、スイッチSW213がオンし、中間ノード230eの電圧が出力ノード230bへ伝達される。これに応じて、単位構成230_2は入力電圧VCOM-Vを演算回路220へ入力し、単位構成230_1は入力電圧VCOM+V/2を演算回路220へ入力し、単位構成230_0は入力電圧VCOM+V/2を演算回路220へ入力する(図5参照)。
以上のように、第6の実施形態では、演算システム200において、入力回路202が複数の単位構成230をラダー状に接続して構成される。この構成により、入力回路202において、動作するDA変換回路DA201の数を低減でき、入力回路202を含む演算システム200の消費電力を低減できる。
なお、DA変換回路DA201における入力データDinの複数ビットb及びVCBのビットのセットに対する出力電圧のマッピングは、図19に示す例に限定されず、共通電圧VCOMを基準とする任意のマッピングが可能である。
また、入力回路202をn個の単位構成230_(n-1)~230_0のラダー状接続で構成する場合、入力データDinのビット値0に対応する行の単位構成230では、ドライバDV201への電源供給が停止されるとともにスイッチSW213がオフ状態に維持されるように構成されてもよい。これにより、入力回路202の消費電力を低減できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1,201,301 半導体集積回路、2,202 入力回路、3 出力回路、10 グローバル回路、20,220,320 演算回路、100,200 演算システム。

Claims (7)

  1. 複数行を構成するように配列され、それぞれが複数ビットの重みの何れかのビット位置の値を記憶する複数の記憶素子と、
    複数行を構成するように配列され、複数の入力電圧に前記複数ビットの重みを乗算し、複数の乗算結果を生成する複数の乗算回路と、
    前記複数の乗算結果に応じた電荷を蓄積する1以上の容量素子と、
    前記1以上の容量素子に蓄積された電荷の合計値に対応した出力電圧を生成する加算回路と、
    を備え、
    前記複数の入力電圧は、それぞれが前記重みの前記何れかのビット位置に対応するとともに異なる振幅を有する
    半導体集積回路。
  2. 前記重みに含まれる前記複数ビットのパターンは正の整数を表し、
    前記複数の入力電圧のそれぞれは、前記複数ビットの何れかのビットに対応し、隣接するビットに対応する入力電圧の振幅と2のべき乗だけ異なる正の振幅を有する、
    請求項1に記載の半導体集積回路。
  3. 前記重みに含まれる前記複数ビットのパターンは、2の補数表現で正又は負の整数を表し、
    前記複数の入力電圧のそれぞれは、前記複数ビットの何れかのビットに対応し、隣接するビットに対応する入力電圧の振幅と2のべき乗だけ異なる正又は負の振幅を有する
    請求項1に記載の半導体集積回路。
  4. 前記1以上の容量素子はそれぞれ第一端を有し、
    前記複数の乗算回路のそれぞれは、入力ノードと、前記1以上の容量素子のうち何れか1の容量素子と、第1のグローバル信号に応じてオン・オフする第1の切替素子と、前記入力ノードと前記何れか1の容量素子の第一端との間で前記第1の切替素子と直列接続され且つ前記重みのビット値に応じてオン・オフ状態に維持される第2の切替素子と、を備え、
    前記加算回路は、出力ノードと、第3の切替素子と、複数の第4の切替素子と、を備え、前記第3の切替素子は、基準電位を有する共通電圧と前記1以上の容量素子のうちの何れか1の容量素子の第一端との間に設けられ且つ第2のグローバル信号に応じてオン・オフし、前記複数の第4の切替素子は、前記1以上の容量素子それぞれの第一端と前記出力ノードとの間にそれぞれが第3のグローバル信号に応じてオン・オフする、
    請求項1から3のいずれか1項に記載の半導体集積回路。
  5. 前記半導体集積回路は、第1の期間において、複数の前記第1の切替素子をオフ状態に維持し、前記第3の切替素子及び前記複数の第4の切替素子をオン状態に維持し、前記第1の期間より後の第2の期間において、前記複数の第1の切替素子をオン状態に維持し、前記第3の切替素子及び前記複数の第4の切替素子をオフ状態に維持し、前記第2の期間より後の第3の期間において、前記複数の第1の切替素子及び前記第3の切替素子をオフ状態に維持し、前記複数の第4の切替素子をオン状態に維持する
    請求項4に記載の半導体集積回路。
  6. 前記1以上の容量素子は、複数行及び複数列を構成するように配列され、
    前記複数の乗算回路は、複数行及び複数列を構成するように配列され、
    複数の前記加算回路は、前記1以上の容量素子のうち各列の容量素子に蓄積された電荷の合計値に対応した複数の出力電圧を生成する
    請求項1から5のいずれか1項に記載の半導体集積回路。
  7. 複数ビットのデータを複数の電圧に変換する入力回路と、
    前記変換された複数の電圧を前記複数の入力電圧として受ける請求項1から6のいずれか1項に記載の半導体集積回路と、
    を備えた演算システム。
JP2021102877A 2021-06-22 2021-06-22 半導体集積回路及び演算システム Pending JP2023001953A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2021102877A JP2023001953A (ja) 2021-06-22 2021-06-22 半導体集積回路及び演算システム
US17/643,697 US20220405057A1 (en) 2021-06-22 2021-12-10 Semiconductor integrated circuit and arithmetic logic operation system
TW111104760A TWI843055B (zh) 2021-06-22 2022-02-09 半導體積體電路及運算系統
CN202210161857.6A CN115510791A (zh) 2021-06-22 2022-02-22 半导体集成电路及运算系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021102877A JP2023001953A (ja) 2021-06-22 2021-06-22 半導体集積回路及び演算システム

Publications (1)

Publication Number Publication Date
JP2023001953A true JP2023001953A (ja) 2023-01-10

Family

ID=84489252

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021102877A Pending JP2023001953A (ja) 2021-06-22 2021-06-22 半導体集積回路及び演算システム

Country Status (4)

Country Link
US (1) US20220405057A1 (ja)
JP (1) JP2023001953A (ja)
CN (1) CN115510791A (ja)
TW (1) TWI843055B (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1676197B1 (en) * 2003-10-16 2012-01-18 Canon Kabushiki Kaisha Operation circuit and operation control method thereof
CN115995242A (zh) * 2016-03-18 2023-04-21 株式会社半导体能源研究所 半导体装置
JP6876220B2 (ja) * 2016-08-19 2021-05-26 ソニーグループ株式会社 積和演算装置
EP3742351B1 (en) * 2019-05-22 2024-09-04 eMemory Technology Inc. Control circuit for multiply accumulate circuit of neural network system

Also Published As

Publication number Publication date
US20220405057A1 (en) 2022-12-22
TW202301101A (zh) 2023-01-01
CN115510791A (zh) 2022-12-23
TWI843055B (zh) 2024-05-21

Similar Documents

Publication Publication Date Title
US20220100255A1 (en) Unit Element for performing Multiply-Accumulate Operations
US11948659B2 (en) Sub-cell, mac array and bit-width reconfigurable mixed-signal in-memory computing module
CN111722830B (zh) 快闪存储器的非易失性计算方法
El-Slehdar et al. Memristor based N-bits redundant binary adder
US11513797B2 (en) Systems and methods for analog vector by matrix multiplier
CN113364462B (zh) 模拟存算一体多比特精度实现结构
CN113571109B (zh) 存储器电路及其操作方法
CN115210810A (zh) 存储器内计算动态随机存取存储器
CN115080501A (zh) 基于局部电容电荷共享的sram存算一体芯片
US10777253B1 (en) Memory array for processing an N-bit word
US11544037B2 (en) Low area multiply and accumulate unit
TWI843055B (zh) 半導體積體電路及運算系統
CN115910152A (zh) 电荷域存内计算电路以及具有正负数运算功能的存算电路
TWI827119B (zh) 演算系統
CN115629734A (zh) 并行向量乘加器的存内计算装置和电子设备
CN116543808A (zh) 一种基于sram单元的全数字域存内近似计算电路
CN114168107A (zh) 一种存内精度可调的矢量矩阵乘法运算方法及运算器
CN118298872B (zh) 输入权重比特位可配置的存内计算电路及其芯片
TW202331552A (zh) 迭代混合矩陣乘法器
CN115658012B (zh) 向量乘加器的sram模拟存内计算装置和电子设备
CN113114262B (zh) 一种高效直接功能函数映射模数转换电路
US20240223207A1 (en) Multiply-accumulate successive approximation devices and methods
KR20240096766A (ko) 하이브리드 행렬 승수기
Bazzi et al. Reconfigurable Precision SRAM-based Analog In-memory-compute Macro Design
CN118276821A (zh) 乘积累加逐次逼近装置和方法