JP2023088730A - 演算システム - Google Patents
演算システム Download PDFInfo
- Publication number
- JP2023088730A JP2023088730A JP2021203643A JP2021203643A JP2023088730A JP 2023088730 A JP2023088730 A JP 2023088730A JP 2021203643 A JP2021203643 A JP 2021203643A JP 2021203643 A JP2021203643 A JP 2021203643A JP 2023088730 A JP2023088730 A JP 2023088730A
- Authority
- JP
- Japan
- Prior art keywords
- circuit
- register
- address
- signals
- signal
- 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
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 15
- 238000012545 processing Methods 0.000 claims abstract description 74
- 230000015654 memory Effects 0.000 claims description 51
- 239000000284 extract Substances 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 39
- 230000004044 response Effects 0.000 description 34
- 102100040862 Dual specificity protein kinase CLK1 Human genes 0.000 description 22
- 238000001514 detection method Methods 0.000 description 14
- 238000012546 transfer Methods 0.000 description 14
- 230000000630 rising effect Effects 0.000 description 10
- 230000008859 change Effects 0.000 description 9
- 238000006243 chemical reaction Methods 0.000 description 8
- 210000002569 neuron Anatomy 0.000 description 8
- 230000007704 transition Effects 0.000 description 8
- 238000013528 artificial neural network Methods 0.000 description 7
- 102100022002 CD59 glycoprotein Human genes 0.000 description 4
- 102100040844 Dual specificity protein kinase CLK2 Human genes 0.000 description 4
- 101000897400 Homo sapiens CD59 glycoprotein Proteins 0.000 description 4
- 101000749294 Homo sapiens Dual specificity protein kinase CLK1 Proteins 0.000 description 4
- 101000749291 Homo sapiens Dual specificity protein kinase CLK2 Proteins 0.000 description 4
- 101100004403 Arabidopsis thaliana BIG5 gene Proteins 0.000 description 2
- 101100191136 Arabidopsis thaliana PCMP-A2 gene Proteins 0.000 description 2
- 101100421135 Caenorhabditis elegans sel-5 gene Proteins 0.000 description 2
- 101100422768 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SUL2 gene Proteins 0.000 description 2
- 101100048260 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) UBX2 gene Proteins 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000000034 method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 101100382854 Arabidopsis thaliana CCD7 gene Proteins 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Logic Circuits (AREA)
- Apparatus For Radiation Diagnosis (AREA)
Abstract
【課題】一つの実施形態は、複数の信号が効率的に利用可能である演算システムを提供することを目的とする。【解決手段】一つの実施形態によれば、複数の乗算素子と複数の加算素子と第1処理回路と第2処理回路とを有する演算システムが提供される。複数の乗算素子は、複数行及び複数列を構成するように配列される。複数の乗算素子は、複数の第1信号に重みを乗算して複数の計算結果を生成する。複数の加算素子は、複数列ごとに複数の計算結果のうちの各列の計算結果の和を計算して複数の第2信号を生成する。処理回路は、加算素子が生成した複数の第2信号を受ける。第1処理回路は、複数の第2信号のうちの一部の第2信号に対応する値を抽出する。第2処理回路は、複数の第2信号に対応する複数のアドレス回路を含む。第2処理回路は、複数のアドレス回路のうち一部の第2信号に対応するアドレス回路を選択的にイネーブルする。【選択図】図6
Description
本実施形態は、演算システムに関する。
演算システムでは、所定の演算を行い、演算結果として複数の信号が生成されることがある。演算システムでは、生成された複数の信号が効率的に利用可能であることが望まれる。
一つの実施形態は、複数の信号が効率的に利用可能である演算システムを提供することを目的とする。
一つの実施形態によれば、複数の乗算素子と複数の加算素子と第1処理回路と第2処理回路とを有する演算システムが提供される。複数の乗算素子は、複数行及び複数列を構成するように配列される。複数の乗算素子は、複数の第1信号に重みを乗算して複数の計算結果を生成する。複数の加算素子は、複数列ごとに複数の計算結果のうちの各列の計算結果の和を計算して複数の第2信号を生成する。処理回路は、加算素子が生成した複数の第2信号を受ける。第1処理回路は、複数の第2信号のうちの一部の第2信号に対応する値を抽出する。第2処理回路は、複数の第2信号に対応する複数のアドレス回路を含む。第2処理回路は、複数のアドレス回路のうち一部の第2信号に対応するアドレス回路を選択的にイネーブルする。
以下に添付図面を参照して、実施形態にかかる演算システムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
第1の実施形態にかかる演算システム1は、例えば、ニューラルネットワークの処理の一部を実行する回路を含む。ニューラルネットワークは、図1に示すように、入力層Xと出力層Yとの間に複数の中間層Hを有する。図1は、演算システム1がその一部の処理を実行するニューラルネットワークの概略構成を示す図である。図1では、簡略化のため、中間層Hを1層で示している。図1に示すように出力層Yの各ニューロンには中間層Hの複数のニューロン(図1では全てのニューロン)からの信号が入力されて処理が行われる。各ニューロンにおける処理はそれぞれ並行して処理される。この一連の処理で行われる具体的な演算は、例えばベクトルと行列の積となる。また、ニューラルネットワークでは、ある層の複数のニューロンで計算された値のうち、上位K個の値を見つけるための演算を行うことがある。
第1の実施形態にかかる演算システム1は、例えば、ニューラルネットワークの処理の一部を実行する回路を含む。ニューラルネットワークは、図1に示すように、入力層Xと出力層Yとの間に複数の中間層Hを有する。図1は、演算システム1がその一部の処理を実行するニューラルネットワークの概略構成を示す図である。図1では、簡略化のため、中間層Hを1層で示している。図1に示すように出力層Yの各ニューロンには中間層Hの複数のニューロン(図1では全てのニューロン)からの信号が入力されて処理が行われる。各ニューロンにおける処理はそれぞれ並行して処理される。この一連の処理で行われる具体的な演算は、例えばベクトルと行列の積となる。また、ニューラルネットワークでは、ある層の複数のニューロンで計算された値のうち、上位K個の値を見つけるための演算を行うことがある。
図2は、本実施形態にかかる演算システム1の具体的な構成を示す図である。本実施形態にかかる演算システム1は、ニューラルネットワークにおけるある層の複数のニューロンの計算を並行して行い、計算された値からある上位K個の値を見つける処理を行い、さらに、上位K個の値のアドレスを見つける処理を行う。ニューラルネットワークにおけるある層の複数のニューロンの計算は、図2に示すような複数の乗算素子のクロスバーアレイ構成で実現可能であり、ニューロンデータの活性化が物理的な信号で演算可能である。
図2に示す演算システム1は、複数のワードラインWLj~WLj+3、複数のビットラインBLi~BLi+3、メモリ配列MA、処理回路2、アドレス解決回路3を有する。
メモリ配列MAは、複数のメモリM(j,i)~M(j+3,i+3)を有する。メモリ配列MAでは、複数のメモリM(j,i)~M(j+3,i+3)が、複数のワードラインWLj~WLj+3と複数のビットラインBLi~BLi+3とが交差する位置に行列状に配される(i,jは1以上の整数)。なお、図2はj行からj+3行、i列からi+3列(4行×4列)を示したものであるが、これに限定されず、任意の行数及び列数を有し得る。処理回路2は、複数のビットラインBLi~BLi+3の各一端に接続される。アドレス解決回路3は、複数のビットラインBLi~BLi+3と反対側で処理回路2に接続される。
各メモリM(j,i)~M(j+3,i+3)は、その一端がワードラインWLに接続され、その他端がビットラインBLに接続される。各メモリM(j,i)~M(j+3,i+3)は、例えば抵抗変化型メモリであり、その抵抗状態が重みWj,i~Wj+3,i+3に応じた抵抗値に設定され得る。各メモリM(j,i)~M(j+3,i+3)の抵抗値は、例えば、1/Wj,i~1/Wj+3,i+3に設定され得る。各メモリM(j,i)~M(j+3,i+3)は、受けた信号に重みWj,i~Wj+3,i+3を乗算して乗算結果の信号を生成する乗算素子として機能する。各メモリM(j,i)~M(j+3,i+3)は、ワードラインWLの電圧Xが一端に印加され、ワードラインWLの電圧X及び設定された重みWに応じて、乗算結果として電流をビットラインBLに流す。各列のメモリMの電流は、ビットラインBL上で加算され加算結果の電流Yとなる。すなわち、各ビットラインBLi~BLi+3は、列方向に並ぶ複数のメモリMからの信号を加算する加算素子として機能する。
例えば、図2に点線の矢印で示すように、j行のワードラインWLjの電圧XjがメモリM(j,i)の一端に印加され、メモリM(j,i)の他端からi行のビットラインBLiに電流Xj×Wj,iが流される。j+3行のワードラインWLj+3の電圧Xj+3がメモリM(j+3,i)の一端に印加され、メモリM(j+3,i)の他端からi行のビットラインBLiに電流Xj+3×Wj+3,iが流される。電流Xj×Wj,i~Xj+3×Wj+3,iがビットラインBLi上で加算されて加算結果としての電流Yi(=Xj×Wj,i+Xj+1×Wj+1,i+Xj+2×Wj+2,i+Xj+3×Wj+3,i)となる。
あるいは、図示しないが、j行のワードラインWLjの電圧XjがメモリM(j,i+3)の一端に印加され、メモリM(j,i+3)の他端からi+3行のビットラインBLi+3に電流Xj×Wj,i+3が流される。j+3行のワードラインWLj+3の電圧Xj+3がメモリM(j+3,i+3)の一端に印加され、メモリM(j+3,i+3)の他端からi+3行のビットラインBLi+3に電流Xj+3×Wj+3,i+3が流される。電流Xj×Wj,i+3~Xj+3×Wj+3,i+3がビットラインBLi+3上で加算されて加算結果としての電流Yi+3(=Xj×Wj,i+3+Xj+1×Wj+1,i+3+Xj+2×Wj+2,i+3+Xj+3×Wj+3,i+3)となる。
処理回路2は、ビットラインBLi~BLi+3を介して電流Yi~Yi+3が供給される。電流Yi~Yi+3は、処理回路2への入力ノードに蓄積される電圧Vi~Vi+3に対応している。各電圧Vi~Vi+3は、列ごとの積和演算結果を示すアナログ信号である。処理回路2において、アナログ信号(電圧V)は、列ごとに、処理回路2でデジタル信号へAD変換される。処理回路2は、複数列のデジタル信号のうち上位K個の値のデジタル信号を抽出し、複数の上位フラグ値を生成する。複数の上位フラグ値は、複数列のデジタル信号に対応する。各上位フラグ値は、上位K個の値のデジタル信号であるか否かを示す。
アドレス解決回路3は、複数列に対応する複数のアドレス回路を含む。各アドレス回路は、アドレス信号を出力可能に構成されている。アドレス信号は、対応する列のアドレスを示す。アドレス解決回路3は、複数の上位フラグ値を処理回路2から取得する。アドレス解決回路3は、複数の上位フラグ値に応じて、複数のアドレス回路のうち上位K個のデジタル信号に対応するアドレス回路を選択的にイネーブルする。アドレス解決回路3は、それぞれがイネーブルされたK個のアドレス回路から順次にアドレス信号を出力させる。
これにより、上位K個のデジタル信号について、Kサイクルの処理でアドレス解決でき、列数のサイクルの処理でアドレス解決する場合に比べて、効率的にアドレス解決を行うことができる。
次に、処理回路2の構成について図3を用いて説明する。図3は、処理回路2の構成を示す回路図である。
処理回路2は、複数のビットラインBLから受けた複数列の乗算結果に対応する信号に対して、複数のSAR型AD変換処理を並行して行いながら、それらの上位K個の信号の探索を行う。処理回路2は、複数のローカル回路21-i,21-(i+1)、グローバル回路22、及びコントローラ23を有する。グローバル回路22は、グローバルSAR用DAC221及びパラレルカウンタ222を有する。
図3では、図示の簡略化のため、第i列のローカル回路21-i、第i+1列のローカル回路21-(i+1)を例示しているが、処理回路2は、乗算素子Mの配列の列数に応じて、任意の数のローカル回路が設けられ得る。
各列のローカル回路21は、コンパレータ211及びロジック回路212を有する。ロジック回路212は、ANDゲート213、フリップフロップ214、及びANDゲート215を有する。各列のローカル回路21は、共通の構成を有している。
コンパレータ211は、入力された信号Vi,Vi+1と、グローバルSAR用DAC221により供給されたグローバル参照信号VDACとを比較する。コンパレータ211は、クロックCLK1に応じて、比較結果として、2値(L/Hまたは0/1)化されたローカル信号yi,yi+1を出力する。コンパレータ211は、ロジック回路212からディスエーブル信号DISABLEi,DISABLEi+1を受ける。コンパレータ211は、ディスエーブル信号DISABLEi,DISABLEi+1に応じて、ディスエーブルする。
ANDゲート213は、ローカル信号yi,yi+1を論理反転させた信号とグローバル信号TOP_Kとの論理積を演算し、演算結果をフリップフロップ214へ出力する。ANDゲート215は、上位フラグMAXi,MAXi+1とクロックCLK2との論理積を演算し、演算結果をクロック信号としてフリップフロップ214へ出力する。フリップフロップ214は、ANDゲート213の演算結果をデータ入力端子Dで受け、ANDゲート215の演算結果をクロック入力端子で受ける。
フリップフロップ214は、処理回路2に入力される複数列の信号Vのうち対応する列の信号Vi,Vi+1が最大レベルの信号であるか否かを示す上位フラグMAXi,MAXi+1を反転出力端子nQから出力する。フリップフロップ214は、ラッチ回路であってもよい。フリップフロップ214は、対応する列の信号Vi,Vi+1が最大レベルの信号でない場合にコンパレータ211をディスエーブルするためのディスエーブル信号DISABLEi,DISABLEi+1を非反転出力端子Qから出力する。ディスエーブル信号DISABLEi,DISABLEi+1は、処理回路2による逐次比較(SAR)動作中に複数のコンパレータ211で消費される電力を制限する(power gating)ために用いられ得る。
フリップフロップ214は、ANDゲート215から出力されるクロック信号に同期して動作する。ANDゲート215は、上位フラグMAXi,MAXi+1がLレベルであるときに、ディスエーブル信号DISABLEi,DISABLEi+1の状態を変化させないようにクロックCLK2を制限する(clock gating)ために設けられている。すなわち、コンパレータ211がディスエーブルされた列のフリップフロップ214は、上位フラグMAXがLレベルになっていることで、クロック入力端子で受けるクロック信号がLレベル固定となることに応じて、ディスエーブル信号DISABLEをHレベルに維持し、上位フラグMAXをLレベルに維持する。
各列のコンパレータ211の反転入力端子(-)は、グローバルSAR用DAC221により並行して駆動され、SARアルゴリズムに従って最上位ビット(MSB)から最下位ビット(LSB)まで信号Vがシーケンシャルに処理される。グローバルSAR用DAC221は、グローバルSARレジスタ221a及びグローバルDAC221bを有する。グローバルSARレジスタ221aは、複数段のレジスタを有するシフトレジスタであり、入力された値及び各段の値をクロックCLK1に同期してシフトさせる。グローバルSARレジスタ221aは、その起動時に、最上段のレジスタに初期値として“1”を格納するように構成されている。グローバルDAC221bは、シフトレジスタの各段の値を受けてDA変換し、変還後のアナログ電圧をグローバル参照信号VDACとして出力する。
なお、コントローラ23は、各列に個別に設けられるローカルコントローラであってもよく、各列に共通に設けられるグローバルコントローラであってもよい。図3では、コントローラ23がグローバルコントローラとして例示されている。コントローラ23は、タイミング、リセット、状態遷移に関する処理を制御する。例えば、コントローラ23は、クロックCLK1を生成して各列のコンパレータ211及びグローバルSARレジスタ221aへ供給する。コントローラ23は、クロックCLK2を生成して各列のANDゲート215へ供給する。クロックCLK2は、クロックCLK1が論理的に反転されたクロックである。
グローバルSARレジスタ221aにおけるSAR遷移を決める入力は、パラレルカウンタ222により駆動される。
パラレルカウンタ222は、DA変換のサイクルごとに、各列のコンパレータ211から出力されたローカル信号yi,yi+1のうちいくつの出力がHレベル(又は1)であるかをカウントし、カウント値に応じてグローバル信号TOP_Kを各列のANDゲート213及びグローバルSARレジスタ221aへ出力する。グローバルSARレジスタ221aは、グローバル信号TOP_Kが供給されると、初段のレジスタにグローバル信号TOP_Kの値を格納するとともに各段のレジスタに保持された値をシフトさせる。
上位K個の値を探索する場合、パラレルカウンタ222は、カウント値がK以上であれば、グローバル信号TOP_K=Hレベル(又は1)を出力し、カウント値がK未満であれば、グローバル信号TOP_K=Lレベル(又は0)を出力する。パラレルカウンタ222の具体的な構成は、デジタル回路で実装されてもよいし、アナログ回路で実装されてもよい。
例えば、処理回路2は、図4に示すように動作する。図4は、処理回路2の動作を示す波形図である。図4の上図は、縦軸が電圧の大きさを表し、横軸が時間を表す。図4の下図は、縦軸が各信号のレベル(例えば、Hレベル又はLレベル)を表し、横軸が時間を表す。図4の上図と図4の下図とは、横軸が同じ時間を表す。図4では、第0列~第7列の信号V0~V7を受けた処理回路2が、4ビットの精度でAD変換を行いながら上位K=4個の値を探索する動作について例示される。
タイミングt1において、グローバルSAR用DAC221は、グローバル参照電圧VDAC=VREF/2に設定する。各列(第0列~第7列)のコンパレータ211は、信号V0~V7とグローバル参照電圧VDAC=VREF/2とを比較し、比較結果としてローカル信号(y0,y1,y2,y3,y4,y5,y6,y7)=(0,1,0,1,0,1,1,1)を出力する。
タイミングt2において、パラレルカウンタ222は、値が1であるローカル信号の数をカウントし、カウント値=4がK=4以上であることに応じて、グローバル信号TOP_KをLレベル(又は0)からHレベル(又は1)へ遷移させる。
タイミングt3において、第0,2,4列(i=0,2,4)のロジック回路212は、ローカル信号yi=0でグローバル信号TOP_K=1であり信号Viが上位K個のうちの一つとなる可能性がないことに応じて、上位フラグMAXiをH(又は1)からL(又は0)に変更し、ディスエーブル信号DISABLEiをL(又は0)からH(又は1)に変更する。これにより、第0,2,4列のコンパレータ211は、信号Viの波形において点線で示すように、ディスエーブル信号DISABLEi=H(又は1)を受けて動作がディスエーブルされ、コンパレータ211による電力消費が停止(power gating)される。
一方、第1,3,5~7列(i=1,3,5~7)のロジック回路212は、ローカル信号yi=1でグローバル信号TOP_K=1であり信号Viが上位K個のうちの一つとなる可能性があることに応じて、上位フラグをMAXi=H(又は1)に維持し、ディスエーブル信号をDISABLEi=L(又は0)に維持する。
タイミングt4において、グローバルSAR用DAC221は、グローバル参照電圧VDAC=3VREF/4に設定する。第1,3,5,6列(i=1,3,5,6)のコンパレータ211から出力されるローカル信号yi=0であり、タイミングt5において、グローバル信号TOP_K=0となる。このことは、K個未満の信号がグローバル参照信号VDACより高いことを意味している。この場合、複数の信号V1,V3,V5~V7のうちどの信号が上位K個の信号であるか判断できないので、判断が保留される。
タイミングt6において、グローバルSAR用DAC221は、グローバル参照電圧VDAC=5VREF/8に設定する。第3,6列(i=3,6)のコンパレータ211から出力されるローカル信号yi=1であるが、第1,5列(i=1,5)のコンパレータ211から出力されるローカル信号yi=0であり、グローバル信号TOP_K=0に維持される。このことは、依然として、K個未満の信号がグローバル参照信号VDACより高いことを意味している。この場合も、引き続き、判断が保留される。
タイミングt7において、グローバルSAR用DAC221は、グローバル参照電圧VDAC=9VREF/16に設定する。この時点でディスエーブルされていない各列(第1,3,5~7列)のコンパレータ211は、信号V1,V3,V5~V7とグローバル参照電圧VDAC=9/16VREFとを比較し、比較結果としてローカル信号(y1,y3,y5,y6,y7)=(1,1,0,1,1)を出力する。
タイミングt8において、パラレルカウンタ222は、値が1であるローカル信号の数をカウントし、カウント値=4がK=4以上であることに応じて、グローバル信号TOP_KをLレベル(又は0)からHレベル(又は1)へ遷移させる。
タイミングt9において、第5列(i=5)のロジック回路212は、ローカル信号yi=0でグローバル信号TOP_K=1であり信号Viが上位K個のうちの一つとなる可能性がないことに応じて、上位フラグMAXiをH(又は1)からL(又は0)に変更し、ディスエーブル信号DISABLEiをL(又は0)からH(又は1)に変更する。これにより、第5列のコンパレータ211は、信号Viの波形において点線で示すように、ディスエーブル信号DISABLEi=H(又は1)を受けて動作がディスエーブルされ、コンパレータ211による電力消費が停止(power gating)される。
一方、第1,3,6,7列(i=1,3,6,7)のロジック回路212は、ローカル信号yi=1でグローバル信号TOP_K=1であり信号Viが上位K個のうちの一つとなる可能性があることに応じて、上位フラグをMAXi=H(又は1)に維持し、ディスエーブル信号をDISABLEi=L(又は0)に維持する。
変換の精度に応じたビット数をBとするとき、B=4サイクル後のタイミングt10において、処理回路2は、上位K個の値を探索した結果として、上位フラグ(MAX0,MAX1,MAX2,MAX3,MAX4,MAX5,MAX6,MAX7)=(0,1,0,1,0,0,1,1)をアドレス解決回路3へ出力する。この例では、探索した結果として、第0列~第7列の信号V0~V7のうち、第1,3,6,7列の信号V1,V3,V6,V7が上位K個の値として探索されたことが示されている。
図5に示すアドレス解決回路3は、上位フラグ(MAX0,MAX1,MAX2,MAX3,MAX4,MAX5,MAX6,MAX7)=(0,1,0,1,0,0,1,1)を処理回路2から受け、クロックCLKを外部(例えば、図示しないコントローラ)から受ける。図5は、アドレス解決回路3の入出力信号を示す図である。図5では、列の数が8である場合が例示される。アドレス解決回路3は、上位フラグMAXを論理反転させて、反転上位フラグ(MAX0 ̄,MAX1 ̄,MAX2 ̄,MAX3 ̄,MAX4 ̄,MAX5 ̄,MAX6 ̄,MAX7 ̄)=(1,0,1,0,1,1,0,0)を生成してもよい。アドレス解決回路3は、上位フラグMAX、反転上位フラグMAX ̄、クロックCLKを用いて、上位フラグMAX0~MAX7に対応する信号のアドレス解決を行い、その結果として上位K個のアドレス信号をアドレスバスaddr<0:7>へ順次に出力し得る。
アドレス解決回路3は、図6に示すように構成され得る。図6は、アドレス解決回路3の概略構成を示す回路図である。図6は、複数のメモリM(j,i)~M(j+3,i+3)の配列における第iからi+3列(列の数が4)に対応した構成を例示しているが、これに限定されず、メモリMの配列に応じて任意の列数に対応した構成を有し得る。
アドレス解決回路3は、図6に示すように、複数のアドレス回路31-i~31-(i+3)に加えて、シフトレジスタ33、出力回路34、転送検知回路35、グローバル回路36を含む。
複数のアドレス回路31-i~31-(i+3)のそれぞれは、メモリ配列MAの複数列(第i~(i+3)列)に対応する。シフトレジスタ33は、複数のレジスタ回路32-i~32-(i+3)を含む。複数のレジスタ回路32-i~32-(i+3)は、入力ノード33a及び出力ノード33b間に直列に接続される。各レジスタ回路32は、レジスタ321を含む。レジスタ321は、フリップフロップで構成され得る。複数のレジスタ回路32-i~32-(i+3)のそれぞれは、複数のアドレス回路31-i~31-(i+3)に対応する。
グローバル回路36は、外部からクロックCLKを受け、クロックCLKに応じてクロックCLK_TOPK、イネーブル信号TOPK_EN、パルスTOPK_STARTを生成する。グローバル回路36は、クロックCLKに同期して、イネーブル信号TOPK_ENをアクティブレベルにして出力回路34へ供給する。出力回路34は、イネーブル信号TOPK_ENがアクティブレベルであることに応じて活性化され、アドレスバスaddr<0:7>上の信号をアドレス信号addrとして出力可能な状態になる。
グローバル回路36は、イネーブル信号TOPK_ENがアクティブレベルになることに応じて、パルスTOPK_STARTをシフトレジスタ33の先頭のレジスタ回路32-iへ供給する。グローバル回路36は、クロックCLKを論理反転させてクロックCLK_TOPKを生成し、クロックCLK_TOPKを各レジスタ回路32のレジスタ321へ供給する。
シフトレジスタ33は、複数列の上位フラグMAXiに応じて、再構成可能である。アドレス解決回路3は、複数のレジスタ回路32-i~32-(i+3)のうち、上位K個の上位フラグ値に対応するレジスタ回路32で入力ノード32a及び出力ノード32b間にレジスタ321を接続する。アドレス解決回路3は、残りのレジスタ回路32で入力ノード32a及び出力ノード32b間でレジスタ321をバイパスする。これにより、アドレス解決回路3は、シフトレジスタ33を再構成する。
再構成されたシフトレジスタ33は、単独で供給されるパルスTOPK_STARTが入力される。シフトレジスタ33は、パルスTOPK_STARTを、上位K個の上位フラグ値に対応するレジスタ321間で順次にシフトさせて伝送させる。これに応じて、複数のアドレス回路31-i~31-(i+3)のうち上位K個の上位フラグ値に対応するアドレス回路31が選択的に順次にイネーブルされる。これにより、上位K個の上位フラグ値に対応するアドレス回路31からアドレス信号が順次にアドレスバスaddr<0:7>に出力される。すなわち、上位K個の信号に対応するK個のアドレス信号が、Kサイクルでアドレス解決されるようにシフトレジスタ33を再構成できるので、アドレス解決回路3を上位の個数「K」に対してスケーラブルに構成できる。
レジスタ回路32は、上位フラグMAXi~MAXi+3及び反転上位フラグMAXi ̄~MAXi+3 ̄に応じて第1の接続状態と第2の接続状態とを切り替え可能である。第1の接続状態は、入力ノード32a及び出力ノード32b間にレジスタ321が接続された状態である。第2の接続状態は、入力ノード32a及び出力ノード32b間でレジスタ321がバイパスされた状態である。
転送検知回路35は、最終のレジスタ回路32-(i+3)からパルスTOPK_STARTを受けると、シフトレジスタ33におけるパルスTOPK_STARTの転送が完了したことを示すパルスTOPK_nSTOPを生成してグローバル回路36へ供給する。転送検知回路35は、フリップフロップで構成され得る。グローバル回路36は、パルスTOPK_nSTOPを受けると、イネーブル信号TOPK_ENをノンアクティブレベルにして出力回路34へ供給する。出力回路34は、イネーブル信号TOPK_ENをノンアクティブレベルであることに応じて非活性化され、アドレスバスaddr<0:7>上の信号を出力しない状態になる。
複数のアドレス回路31-i~31-(i+3)のそれぞれは、固定的にアドレス信号を保持可能であり、ハードワイアード回路を用いて構成されてもよい。各アドレス回路31は、記憶回路311及びイネーブル回路312を有する。
記憶回路311は、アドレス信号を記憶する。記憶回路311は、アドレス信号を固定的に記憶してもよい。
イネーブル回路312は、上位フラグ値MAXi~MAXi+3と対応するレジスタ回路32の接続状態とに応じて、記憶回路311をイネーブル又はディスエーブルできる。記憶回路311がイネーブルされると、アドレス信号が記憶回路311からアドレスバスaddr<0:7>に出力される状態になる。記憶回路311がディスエーブルされると、アドレス信号が記憶回路311からアドレスバスaddr<0:7>に出力されない状態になる。
例えば、8ビットのアドレスを記憶する場合、第i列の記憶回路311は、図7及び図8に示すように、ハードワイアード回路311aを含んでもよい。図7は、第i列に対応するアドレス回路31及びレジスタ回路32の構成を示す回路図である。アドレス解決回路3は複数列(図6の場合、第i~i+3列)に対応する構成を含むが、図7は、その1列分の単位構成を示しているとみることもできる。図8は、記憶回路311の構成を示す回路図である。図8に示すハードワイアード回路311aは、複数のトライステートインバータIV0~IV7、複数のラインB0~B7、複数のラインnB0~nB7、共通ラインE、共通ラインnEを有する。
複数のラインnB0~nB7と複数のトライステートインバータIV0~IV7と複数のラインB0~B7とは、それぞれ互いに対応する。ラインnB0、トライステートインバータIV0、ラインB0がアドレスのLSBに対応し、ラインnB7、トライステートインバータIV7、ラインB7がアドレスのMSBに対応する。共通ラインE及び共通ラインnEは、それぞれ、複数のトライステートインバータIV0~IV7により共有される。複数のラインB0~B7のそれぞれは、アドレスバスに含まれる複数のアドレス線addr<0>~addr<7>に対応する。
各ラインnB0~nB7は、ハードワイアード接続され、アドレス信号に応じた固定電位に接続される。図8の例では、記憶回路311がアドレス00000011b(10進表記では「3」)を固定的に記憶する場合が例示される。記憶回路311のハードワイアード回路311aにおいて、ラインnB0~nB1がグランド電位に固定的に接続され、ラインnB2~nB7が電源電位Vddに固定的に接続される。グランド電位がLレベル又はレベル「0」に対応し、電源電位VddがHレベル又はレベル「1」に対応する。各ラインnB0~nB7には、(nB0,nB1,nB2,nB3,nB4,nB5,nB6,nB7)=(0,0,1,1,1,1,1,1)のレベルが設定されている。各ラインB0~B7は、対応するトライステートインバータIVを介して対応するラインnBに接続される。
各トライステートインバータIV0~IV7は、図9に示すように構成され得る。図9は、トライステートインバータIVの構成を示す回路図である。
トライステートインバータIVは、NMOSトランジスタNM1、NMOSトランジスタNM2、PMOSトランジスタPM1、PMOSトランジスタPM2を有する。NMOSトランジスタNM1及びPMOSトランジスタPM1は、インバータ接続され、共通の入力ノードN1と共通の出力ノードN2とを有する。NMOSトランジスタNM2及びPMOSトランジスタPM2は、インバータ接続を活性化・非活性化するためのスイッチとしてインバータ接続の出力ノードN2に挿入されている。
NMOSトランジスタNM1は、グランド電位及びNMOSトランジスタNM2の間に接続される。NMOSトランジスタNM2は、NMOSトランジスタNM1及びPMOSトランジスタPM2の間に接続される。PMOSトランジスタPM2は、NMOSトランジスタNM2及びPMOSトランジスタPM1の間に接続される。PMOSトランジスタPM1は、PMOSトランジスタPM2及び電源電位Vddの間に接続される。
NMOSトランジスタNM1は、ソースがグランド電位に接続され、ドレインがNMOSトランジスタNM2に接続され、ゲートが入力ノードN1を介してラインnBに接続される。
NMOSトランジスタNM2は、ソースがNMOSトランジスタNM1に接続され、ドレインが出力ノードN2を介してラインBに接続され、ゲートがラインEに接続される。
PMOSトランジスタPM1は、ソースが電源電位に接続され、ドレインがPMOSトランジスタPM2に接続され、ゲートが入力ノードN1を介してラインnBに接続される。
PMOSトランジスタPM2は、ソースがPMOSトランジスタPM1に接続され、ドレインが出力ノードN2を介してラインBに接続され、ゲートがラインnEに接続される。
各トライステートインバータIV0~IV7は、共通ラインEのレベルがアクティブレベル(例えば、Hレベル)に設定され、共通ラインnEがアクティブレベル(例えば、Lレベル)に設定された際に、活性化され、インバータとして動作する。図8に示す例では、共通ラインE,nEがそれぞれアクティブレベルに設定された場合、ラインB0~B7は、それぞれ、(B0,B1,B2,B3,B4,B5,B6,B7)=(1,1,0,0,0,0,0,0)のレベルをアドレス信号として、対応するアドレス線addrへ出力する。この例では、B0がLSBに対応し、B7がMSBに対応するので、アドレス値としては、2進表記で「00000011」であり、10進表記で「3」である。
各トライステートインバータIV0~IV7は、共通ラインEのレベルがノンアクティブレベル(例えば、Lレベル)に設定され、共通ラインnEがノンアクティブレベル(例えば、Hレベル)に設定された際に、非活性化され、インバータとしての動作を停止する。図8に示す例では、共通ラインE,nEがそれぞれノンアクティブレベルに設定された場合、ラインB0~B7は、それぞれ、(B0,B1,B2,B3,B4,B5,B6,B7)=(HiZ,HiZ,HiZ,HiZ,HiZ,HiZ,HiZ,HiZ)のレベルになり、アドレス信号を出力しない。「HiZ」は、ハイインピーダンスを表す。
図7に戻って、第i列のイネーブル回路312は、NANDゲート312a及びインバータ312bを有する。NANDゲート312aは、処理回路2の第i列のローカル回路21-iに接続された入力ノード312a1と第i列のレジスタ回路32-iに接続された入力ノード312a2とノード312cに接続された出力ノード312a3とを有する。インバータ312bは、ノード312cに接続された入力ノード312b1とラインEに接続された出力ノード312b2とを有する。ノード312cは、NANDゲート312a及びインバータ312bに接続されるとともにラインnEに接続される。
第i列のレジスタ回路32は、レジスタ321に加えて、信号ラインL1、バイパスラインL2、スイッチ322、スイッチ323、スイッチ324、スイッチ325を含む。レジスタ321-iは、フリップフロップで構成され得る。スイッチ322、スイッチ323、スイッチ324は、切替素子の一例であり、例えばトランジスタで構成される。
信号ラインL1及びバイパスラインL2は、入力ノード32a及び出力ノード32bの間で互いに並列に接続される。信号ラインL1は、入力ノード32aに接続される第1端と出力ノード32bに接続される第2端とを有する。バイパスラインL2は、入力ノード32aに接続される第1端と出力ノード32bに接続される第2端とを有する。
スイッチ322は、信号ラインL1上に配され、上位フラグMAXiに応じてオン・オフする。スイッチ322は、上位フラグMAXiがアクティブレベル(Hレベル又はレベル「1」)の際にオンすることで信号ラインL1の一部を活性化する。スイッチ322は、上位フラグMAXiがノンアクティブレベル(Lレベル又はレベル「0」)の際にオフすることで信号ラインL1の一部を非活性化する。スイッチ322は、入力ノード32aに接続される第1端とレジスタ321-iのデータ入力ノードDに接続された第2端とを有する。
スイッチ323は、信号ラインL1上に配され、上位フラグMAXiに応じてオン・オフする。スイッチ322は、上位フラグMAXiがアクティブレベル(Hレベル又はレベル「1」)の際にオンすることで信号ラインL1の一部を活性化する。スイッチ322は、上位フラグMAXiがノンアクティブレベル(Lレベル又はレベル「0」)の際にオフすることで信号ラインL1の一部を非活性化する。スイッチ323は、レジスタ321-iの出力ノードQに接続された第1端と出力ノード32bに接続される第2端とを有する。
スイッチ324は、バイパスラインL2上に配され、反転上位フラグMAXi ̄に応じてオン・オフする。反転上位フラグMAXi ̄は、上位フラグMAXiが論理反転されて得られる。スイッチ324は、反転上位フラグMAXi ̄がアクティブレベル(Hレベル又はレベル「1」)の際にオンすることでバイパスラインL2を活性化する。スイッチ324は、反転上位フラグMAXi ̄がノンアクティブレベル(Lレベル又はレベル「0」)の際にオフすることでバイパスラインL2を非活性化する。スイッチ324は、入力ノード32aに接続される第1端と出力ノード32bに接続される第2端とを有する。
スイッチ325は、信号ラインL1及びグランド電位の間に設定され、反転上位フラグMAXi ̄に応じてオン・オフする。スイッチ325は、反転上位フラグMAXi ̄がアクティブレベル(Hレベル又はレベル「1」)の際にオンすることで信号ラインL1をグランド電位(又は、Lレベル)に設定する。スイッチ325は、反転上位フラグMAXi ̄がノンアクティブレベル(Lレベル又はレベル「0」)の際にオフすることで信号ラインL1の電位設定を解除する。
例えば、アドレス解決回路3は、図10に示すように動作する。図10は、アドレス解決回路3の動作を示す波形図である。図10では、処理回路2が図4に示すように動作する場合に対応する。図10では、列の数が8(第0列~第7列)であり、アドレス解決回路3が処理回路2から上位フラグ(MAX0,MAX1,MAX2,MAX3,MAX4,MAX5,MAX6,MAX7)=(0,1,0,1,0,0,1,1)を受けた場合の動作を例示する。
タイミングt11において、グローバル回路36(図6参照)は、クロックCLKに同期して、イネーブル信号TOPK_ENをノンアクティブレベル(例えば、Lレベル)からアクティブレベル(例えば、Hレベル)へ遷移させ出力回路34へ供給する。出力回路34は、アドレスバスaddr<0:7>上の信号を出力可能な状態になる。
グローバル回路36は、クロックCLKに同期して、クロックCLKの1周期のパルス幅で単独のパルスTOPK_STARTを生成しシフトレジスタ33の先頭のレジスタ回路32-0へ供給する。
このとき、図11(a)に示すように、上位フラグ(MAX0,MAX1,MAX2,MAX3,MAX4,MAX5,MAX6,MAX7)=(0,1,0,1,0,0,1,1)に応じて、シフトレジスタ33が再構成される。
上位フラグMAX0=0、反転上位フラグMAX0 ̄=1に応じて、レジスタ回路32-0は、入力ノード32a及び出力ノード32b間でレジスタ321がバイパスされた第2の接続状態に切り替えられる。
上位フラグMAX1=1、反転上位フラグMAX1 ̄=0に応じて、レジスタ回路32-1は、入力ノード32a及び出力ノード32b間にレジスタ321が接続された第1の接続状態に切り替えられる。
上位フラグMAX2=0、反転上位フラグMAX2 ̄=1に応じて、レジスタ回路32-2は、入力ノード32a及び出力ノード32b間でレジスタ321がバイパスされた第2の接続状態に切り替えられる。
上位フラグMAX3=1、反転上位フラグMAX3 ̄=0に応じて、レジスタ回路32-3は、入力ノード32a及び出力ノード32b間にレジスタ321が接続された第1の接続状態に切り替えられる。
上位フラグMAX4=0、反転上位フラグMAX4 ̄=1に応じて、レジスタ回路32-4は、入力ノード32a及び出力ノード32b間でレジスタ321がバイパスされた第2の接続状態に切り替えられる。
上位フラグMAX5=0、反転上位フラグMAX5 ̄=1に応じて、レジスタ回路32-5は、入力ノード32a及び出力ノード32b間でレジスタ321がバイパスされた第2の接続状態に切り替えられる。
上位フラグMAX6=1、反転上位フラグMAX6 ̄=0に応じて、レジスタ回路32-6は、入力ノード32a及び出力ノード32b間にレジスタ321が接続された第1の接続状態に切り替えられる。
上位フラグMAX7=1、反転上位フラグMAX7 ̄=0に応じて、レジスタ回路32-7は、入力ノード32a及び出力ノード32b間にレジスタ321が接続された第1の接続状態に切り替えられる。
図11(a)の例では、アドレス解決回路3は、上位フラグMAX=1に対応するレジスタ回路32-1,32-3,32-6,32-7で入力ノード及び出力ノード間にレジスタ321を接続する。またアドレス解決回路3は、上位フラグMAX=0に対応するレジスタ回路32-0,32-2,32-4,32-5でレジスタ321をバイパスして入力ノード32a及び出力ノード32b間を接続する。これにより、シフトレジスタ33では、入力ノード33a及び出力ノード33b間にレジスタ321-1,32-3,32-6,32-7が選択的に接続された構成に、再構成される。レジスタ321-1,32-3,32-6,32-7は、処理回路2で特定された上位K個の信号に対応する。
図10に示すタイミングt12において、クロックCLK_TOPKの立ち上がりエッジに応じて、再構成されたシフトレジスタ33における先頭のレジスタ321-1でパルスTOPK_STARTが保持され、レジスタ321-1の出力が0から1になる。これに応じて、図11(b)に示すように、セレクト信号SEL1が0から1になり、アドレス回路31-1のイネーブル回路312が共通ラインEをアクティブレベル(例えば、Hレベル)にし共通ラインnEをアクティブレベル(例えば、Lレベル)にする。これにより、アドレス回路31-1の記憶回路311が活性化される。記憶回路311は、上位フラグMAX1に対応する信号のアドレス値をアドレスバスaddr<0:7>へ出力する。ラインB0~B7は、それぞれ、(B0,B1,B2,B3,B4,B5,B6,B7)=(1,0,0,0,0,0,0,0)の値をアドレス信号として、対応するアドレス線addrへ出力する。この例では、B0がLSBに対応し、B7がMSBに対応するので、アドレス値としては、2進表記で「00000001」であり、10進表記で「1」である。
図10に示すタイミングt13において、クロックCLK_TOPKの立ち上がりエッジに応じて、パルスTOPK_STARTが、再構成されたシフトレジスタ33における先頭のレジスタ321-1から2番目のレジスタ321-4にシフトされ、レジスタ321-1の出力が1から0になるとともにレジスタ321-3の出力が0から1になる。
これに応じて、図11(c)に示すように、セレクト信号SEL1が1から0になり、アドレス回路31-1のイネーブル回路312が共通ラインEをノンアクティブレベル(例えば、Lレベル)にし共通ラインnEをノンアクティブレベル(例えば、Hレベル)にする。これにより、アドレス回路31-1の記憶回路311が非活性化される。
それとともに、セレクト信号SEL3が0から1になり、アドレス回路31-3のイネーブル回路312が共通ラインEをアクティブレベル(例えば、Hレベル)にし共通ラインnEをアクティブレベル(例えば、Lレベル)にする。これにより、アドレス回路31-3の記憶回路311が活性化される。記憶回路311は、上位フラグMAX3に対応する信号のアドレス値をアドレスバスaddr<0:7>へ出力する。ラインB0~B7は、それぞれ、(B0,B1,B2,B3,B4,B5,B6,B7)=(1,1,0,0,0,0,0,0)のレベルをアドレス信号として、対応するアドレス線addrへ出力する。この例では、B0がLSBに対応し、B7がMSBに対応するので、アドレス値としては、2進表記で「00000011」であり、10進表記で「3」である。
図10に示すタイミングt14において、クロックCLK_TOPKの立ち上がりエッジに応じて、パルスTOPK_STARTが、再構成されたシフトレジスタ33における2番目のレジスタ321-4から3番目のレジスタ321-6にシフトされ、レジスタ321-3の出力が1から0になるとともにレジスタ321-6の出力が0から1になる。
これに応じて、図12(a)に示すように、セレクト信号SEL3が1から0になり、アドレス回路31-3のイネーブル回路312が共通ラインEをノンアクティブレベル(例えば、Lレベル)にし共通ラインnEをノンアクティブレベル(例えば、Hレベル)にする。これにより、アドレス回路31-3の記憶回路311が非活性化される。
それとともに、セレクト信号SEL6が0から1になり、アドレス回路31-6のイネーブル回路312が共通ラインEをアクティブレベル(例えば、Hレベル)にし共通ラインnEをアクティブレベル(例えば、Lレベル)にする。これにより、アドレス回路31-6の記憶回路311が活性化される。記憶回路311は、上位フラグMAX6に対応する信号のアドレス値をアドレスバスaddr<0:7>へ出力する。ラインB0~B7は、それぞれ、(B0,B1,B2,B3,B4,B5,B6,B7)=(0,1,1,0,0,0,0,0)のレベルをアドレス信号として、対応するアドレス線addrへ出力する。この例では、B0がLSBに対応し、B7がMSBに対応するので、アドレス値としては、2進表記で「00000110」であり、10進表記で「6」である。
図10に示すタイミングt15において、クロックCLK_TOPKの立ち上がりエッジに応じて、パルスTOPK_STARTが、再構成されたシフトレジスタ33における3番目のレジスタ321-6から最終のレジスタ321-7にシフトされ、レジスタ321-6の出力が1から0になるとともにレジスタ321-7の出力が0から1になる。
これに応じて、図12(b)に示すように、セレクト信号SEL6が1から0になり、アドレス回路31-6のイネーブル回路312が共通ラインEをノンアクティブレベル(例えば、Lレベル)にし共通ラインnEをノンアクティブレベル(例えば、Hレベル)にする。これにより、アドレス回路31-6の記憶回路311が非活性化される。
それとともに、セレクト信号SEL7が0から1になり、アドレス回路31-7のイネーブル回路312が共通ラインEをアクティブレベル(例えば、Hレベル)にし共通ラインnEをアクティブレベル(例えば、Lレベル)にする。これにより、アドレス回路31-7の記憶回路311が活性化される。記憶回路311は、上位フラグMAX7に対応する信号のアドレス値をアドレスバスaddr<0:7>へ出力する。ラインB0~B7は、それぞれ、(B0,B1,B2,B3,B4,B5,B6,B7)=(1,1,1,0,0,0,0,0)のレベルをアドレス信号として、対応するアドレス線addrへ出力する。この例では、B0がLSBに対応し、B7がMSBに対応するので、アドレス値としては、2進表記で「00000111」であり、10進表記で「7」である。
図10に示すタイミングt16において、クロックCLK_TOPKの立ち上がりエッジに応じて、パルスTOPK_STARTが、シフトレジスタ33の最終のレジスタ321-7から転送検知回路35へ転送され、レジスタ321-7の出力が1から0になるとともに転送検知回路35の出力が0から1になる。
これに応じて、セレクト信号SEL7が1から0になり、アドレス回路31-7のイネーブル回路312が共通ラインEをノンアクティブレベル(例えば、Lレベル)にし共通ラインnEをノンアクティブレベル(例えば、Hレベル)にする。これにより、アドレス回路31-7の記憶回路311が非活性化される。それとともに、転送検知回路35は、1になった出力をパルスTOPK_nSTOPとしてグローバル回路36へ供給する。
パルスTOPK_nSTOPに応じて、タイミングt17において、グローバル回路36は、クロックCLKに同期して、イネーブル信号TOPK_ENをアクティブレベル(例えば、Hレベル)からノンアクティブレベル(例えば、Lレベル)へ遷移させて出力回路34へ供給する。出力回路34は、アドレスバスaddr<0:7>上の信号を出力しない状態になる。これにより、アドレス解決回路3からアドレスバスaddr<0:7>へのアドレス信号の出力が完了する。
タイミングt18において、転送検知回路35の出力が1から0になり、転送検知回路35からグローバル回路36への通知が完了する。
演算システム1におけるアドレス解決は、次の(1)~(3)のシーケンスで行われる。
(1)複数行及び複数列を構成する複数のメモリ素子の配列において、各行に入力されたワードライン電圧と各メモリ素子の重みとの積が列ごとのビットライン電流として加算される積和演算が行われる。処理回路2は、複数列の積和演算結果の信号を処理するとともに、複数列に対応する複数の上位フラグMAXを生成する。処理回路2は、複数列の積和演算結果のうち上位K個の積和演算結果に対応する上位フラグをMAX=1とし、残りの上位フラグをMAX=0とする。複数列の上位フラグMAXは、処理回路2からアドレス解決回路3へ供給される。
(2)アドレス解決回路3は、複数列の上位フラグに応じて、複数列の積和演算結果のうち上位K個の積和演算結果の信号に対してアドレス解決を行う。すなわち、アドレス解決回路3は、複数列に対応しそれぞれがレジスタを含む複数のレジスタ回路のうち上位フラグMAX=1に対応するレジスタ回路でレジスタを入出力ノード間に接続し上位フラグMAX=0に対応するレジスタ回路でレジスタを入出力ノード間でバイパスさせる。これにより、アドレス解決回路3は、複数のレジスタ回路のレジスタのうち上位フラグMAX=1に対応するK個のレジスタ321を選択的にシフトレジスタ33の入出力ノード間に接続し、シフトレジスタ33をKビットのシフトレジスタとして再構成する。
(3)アドレス解決回路3は、再構成されたシフトレジスタ33におけるK段のレジスタ321に1ビットのパルスを順次に伝搬させ、それに応じて、複数列に対応する複数のアドレス回路のうち上位K個に対応するK個のアドレス回路を順次に選択的にイネーブルする。イネーブルされたアドレス回路では、例えばハードワイアード接続で記憶されたアドレス信号がアドレスバスへ出力される。これにより、上位K個の積和演算結果に対応するアドレス値が順次に出力され、Kサイクルでのアドレス解決が実現される。
以上のように、第1の実施形態では、演算システム1のアドレス解決回路3において、複数のアドレス回路31をメモリ配列MAの複数列に対応して設け、複数列の上位フラグに応じて、複数列の積和演算結果のうち上位K個の積和演算結果に対応したアドレス回路31を選択的に順次にイネーブルしてアドレス値を出力させる。これにより、(列数以下の)Kサイクルの動作で上位K個の信号に対するアドレス解決を行うことができ、上位K個の信号に対するアドレス解決を効率的に行うことができる。これにより、メモリ配列MAの複数列から出力される複数の信号のうち上位K個を利用したい場合等に、複数の信号が効率的に利用可能である。
例えば、上位K個の信号に対するアドレス解決をリニアサーチで行う場合、複数列の各列を順次に選択する。選択された列の上位フラグ値を確認し、上位フラグMAX=1であればアドレス値を出力させ、上位フラグMAX=0であればアドレス値を出力させない処理を、複数列の各列について順次に行う。このため、列数のサイクルの動作でアドレス解決を行うことになる。
それに対して、第1の実施形態では、列数以下のKサイクルの動作で上位K個の信号に対するアドレス解決を行うことができ、上位K個の信号に対するアドレス解決をより効率的に行うことができる。
また、第1の実施形態では、演算システム1のアドレス解決回路3において、複数のアドレス回路31のそれぞれがハードワイアード構成でアドレス値を記憶し、シフトレジスタ33が複数列の上位フラグに応じてK個のレジスタが選択的に用いられるように再構成される。これにより、上位K個の信号に対応するK個のアドレス信号がKサイクルでアドレス解決されるようにシフトレジスタ33を再構成できるので、アドレス解決回路3を上位の個数「K」に対してスケーラブルに構成できる。したがって、アドレス解決回路3の回路設計を容易化でき、アドレス解決回路3の面積を低減できる。
(第2の実施形態)
次に、第2の実施形態にかかる演算システム401について説明する。以下では、第1の実施形態と異なる部分を中心に説明する。
次に、第2の実施形態にかかる演算システム401について説明する。以下では、第1の実施形態と異なる部分を中心に説明する。
第1の実施形態では、上位K個の信号に対するアドレス解決のための構成及び動作が例示されるが、第2の実施形態では、下位K個の信号に対するアドレス解決のための構成及び動作が例示される。
演算システム401は、処理回路2及びアドレス解決回路3(図2参照)に代えて、処理回路402及びアドレス解決回路403を有する。処理回路402は、図13に示すように、下位K個の値を探索するように構成される。処理回路402は、SAR型AD変換処理を行いながら下位K個の値を探索する回路である。図13は、第2の実施形態における処理回路402の構成を示す回路図である。
各列のローカル回路421-i,421-(i+1)は、コンパレータ211(図3参照)の2つの入力端子が入れ替えられたコンパレータ4211を有する。コンパレータ4211は、信号Vi,Vi+1を反転入力端子(-)で受け、グローバル参照信号VDACを非反転入力端子(+)で受ける。
グローバル回路422において、パラレルカウンタ4222は、DA変換のサイクルごとに、各列のコンパレータ4211から出力されたローカル信号yi,yi+1のうちいくつの出力がHレベル(又は1)であるかをカウントし、カウント値に応じてグローバル信号BOT_Kを各列のANDゲート213及びグローバルSARレジスタ4221aへ出力する。下位K個の値を探索する場合、パラレルカウンタ4222は、カウント値がK以上であれば、グローバル信号BOT_K=Hレベル(又は1)を出力し、カウント値がK未満であれば、グローバル信号BOT_K=Lレベル(又は0)を出力する。グローバルSARレジスタ4221aは、グローバル信号BOT_Kが供給されると、グローバル信号BOT_Kの値を論理反転させた値を初段のレジスタに格納するとともに各段のレジスタに保持された値をシフトさせる。
この構成により、処理回路402は、図14に示すように、SAR型AD変換処理を行いながら下位K個の値を探索する。図14は、第2の実施形態における処理回路402の動作を示す波形図である。図14の上図は、縦軸が電圧の大きさを表し、横軸が時間を表す。図14の下図は、縦軸が各信号のレベル(例えば、Hレベル又はLレベル)を表し、横軸が時間を表す。図14の上図と図14の下図とは、横軸が同じ時間を表す。図14では、K=4の場合を例示している。
各列のコンパレータ4211は、信号Viを反転入力端子(-)で受け、グローバル参照電圧VDACを非反転入力端子(+)で受けるので、信号Viがグローバル参照電圧VDACより低ければローカル信号yi=1を出力し、信号Viがグローバル参照電圧VDACより高ければローカル信号yi=0を出力する。
例えば、タイミングt31において、グローバルSAR用DAC4221は、グローバル参照電圧VDAC=VREF/2に設定する。各列のコンパレータ4211は、信号V0~V7と参照電圧VDAC=VREF/2とを比較し、比較結果としてローカル信号(y0,y1,y2,y3,y4,y5,y6,y7)=(1,0,1,0,1,0,0,0)を出力する。これに応じて、パラレルカウンタ4222は、値が1であるローカル信号yiの数をカウントし、カウント値=3がK=4未満であることに応じて、タイミングt32において、グローバル信号BOT_KがLレベル(又は0)になり、グローバル信号の反転信号BOT_K ̄はHレベル(又は1)になる。図14では、反転信号BOT_K ̄のレベルが示されている。このことは、K個未満の信号がグローバル参照信号VDACより低いことを意味している。
タイミングt33において、グローバルSAR用DAC4221は、グローバル参照電圧VDAC=3VREF/4に設定する。各列のコンパレータ4211は、信号V0~V7と参照電圧VDAC=3VREF/4とを比較し、比較結果としてローカル信号(y0,y1,y2,y3,y4,y5,y6,y7)=(1,1,1,1,1,1,1,0)を出力する。パラレルカウンタ4222は、値が1であるローカル信号yiの数をカウントし、カウント値=7がK=4以上であることに応じて、タイミングt34において、グローバル信号BOT_KがHレベル(又は1)になり、グローバル信号の反転信号BOT_K ̄はLレベル(又は0)になる。この場合、複数の信号V0~V6のうちどの信号が下位K個の信号であるか判断できないので、判断が保留される。
タイミングt35において、第0~6列(i=0~6)のローカル回路421では、コンパレータ4211から出力されるローカル信号yi=1でグローバル信号BOT_K=1であり、フリップフロップ214が、その出力をもとの状態に維持する。すなわち、第0~6列のフリップフロップ214は、下位フラグをMINi=H(又は1)に維持し、ディスエーブル信号をDISABLEi=L(又は0)に維持する。一方、第7列(i=7)のローカル回路421では、コンパレータ4211から出力されるローカル信号yi=0でグローバル信号BOT_K=1であり、フリップフロップ214が、その出力をもとの状態から変更する。すなわち、第7列のフリップフロップ214は、下位フラグをMINi=H(又は1)からMINi=L(又は0)に変更し、ディスエーブル信号をDISABLEi=L(又は0)からDISABLEi=H(又は1)に変更する。
これにより、タイミングt35以降において、第7列(i=7)のコンパレータ4211は、ディスエーブル信号DISABLEi=H(又は1)を受けて動作がディスエーブルされ、図14にViの波形において点線で示すように、コンパレータ4211による電力消費が停止(power gating)される。
タイミングt36において、グローバルSAR用DAC4221は、グローバル参照電圧VDAC=5VREF/8に設定する。この時点でディスエーブルされていない各列(第0~6列)のコンパレータ4211は、信号V0~V6とグローバル参照電圧VDAC=5VREF/8とを比較し、比較結果としてローカル信号(y0,y1,y2,y3,y4,y5,y6)=(1,1,1,0,1,1,0)を出力する。その後、パラレルカウンタ4222は、値が1であるローカル信号の数をカウントし、カウント値=5がK=4以上であることに応じて、グローバル信号BOT_KをHレベル(又は1)に維持し、グローバル信号の反転信号BOT_K ̄をLレベル(又は0)に維持する。
タイミングt37において、第0~2,4,5列(i=0~2,4,5)のローカル回路421では、コンパレータ4211から出力されるローカル信号yi=1でグローバル信号BOT_K=1であり、フリップフロップ214が、その出力をもとの状態に維持する。すなわち、第0~2,4,5列のフリップフロップ214は、下位フラグをMINi=H(又は1)に維持し、ディスエーブル信号をDISABLEi=L(又は0)に維持する。一方、第3,6列(i=3,6)のローカル回路421では、コンパレータ4211から出力されるローカル信号yi=0でグローバル信号BOT_K=1であり、フリップフロップ214が、その出力をもとの状態から変更する。すなわち、第3,6列のフリップフロップ214は、下位フラグをMINi=H(又は1)からMINi=L(又は0)に変更し、ディスエーブル信号をDISABLEi=L(又は0)からDISABLEi=H(又は1)に変更する。
これにより、タイミングt37以降において、第3,6列(i=3,6)のコンパレータ4211は、ディスエーブル信号DISABLEi=H(又は1)を受けて動作がディスエーブルされ、図14にViの波形において点線で示すように、コンパレータ4211による電力消費が停止(power gating)される。
タイミングt38において、グローバルSAR用DAC4221は、グローバル参照電圧VDAC=9VREF/16に設定する。この時点でディスエーブルされていない各列(第0~2,4,5列)のコンパレータ4211は、信号V0~V2,V4,V5とグローバル参照電圧VDAC=9VREF/16とを比較し、比較結果としてローカル信号(y0,y1,y2,y4,y5)=(1,0,1,1,1)を出力する。その後、パラレルカウンタ4222は、値が1であるローカル信号の数をカウントし、カウント値=4がK=4以上であることに応じて、グローバル信号BOT_KをHレベル(又は1)に維持し、グローバル信号の反転信号BOT_K ̄をLレベル(又は0)に維持する。
タイミングt39において、第0,2,4,5列(i=0,2,4,5)のローカル回路421では、コンパレータ4211から出力されるローカル信号yi=1でグローバル信号BOT_K=1であり、フリップフロップ214が、その出力をもとの状態に維持する。すなわち、第0,2,4,5列のフリップフロップ214は、下位フラグをMINi=H(又は1)に維持し、ディスエーブル信号をDISABLEi=L(又は0)に維持する。一方、第1列(i=1)のローカル回路421では、コンパレータ4211から出力されるローカル信号yi=0でグローバル信号BOT_K=1であり、フリップフロップ214が、その出力をもとの状態から変更する。すなわち、第1列のフリップフロップ214は、下位フラグをMINi=H(又は1)からMINi=L(又は0)に変更し、ディスエーブル信号をDISABLEi=L(又は0)からDISABLEi=H(又は1)に変更する。
これにより、タイミングt39以降において、第1列(i=1)のコンパレータ4211は、ディスエーブル信号DISABLEi=H(又は1)を受けて動作がディスエーブルされ、図14にViの波形において点線で示すように、コンパレータ4211による電力消費が停止(power gating)される。
変換の精度に応じたビット数をBとするとき、B=4サイクル後のタイミングt33において、処理回路402は、下位K個の値探索の結果として、下位フラグ(MIN0,MIN1,MIN2,MIN3,MIN4,MIN5,MIN6,MIN7)=(1,0,1,0,1,1,0,0)を出力する。この例では、下位K個の値探索の結果は、第0列~第7列の信号V0~V7のうち、第0,2,4,5列の信号V0,V2,V4,V5が下位K個の値として探索されたことを示している。
図15に示すアドレス解決回路403は、下位フラグ(MIN0,MIN1,MIN2,MIN3,MIN4,MIN5,MIN6,MIN7)=(1,0,1,0,1,1,0,0)を処理回路402から受け、クロックCLKを外部(例えば、図13のコントローラ23)から受ける。図15は、アドレス解決回路403の入出力信号を示す図である。図15では、列の数が8である場合が例示される。アドレス解決回路403は、下位フラグを論理反転させて、反転下位フラグ(MIN0 ̄,MIN1 ̄,MIN2 ̄,MIN3 ̄,MIN4 ̄,MIN5 ̄,MIN6 ̄,MIN7 ̄)=(0,1,0,1,0,0,1,1)を生成してもよい。アドレス解決回路3は、下位フラグMIN、反転下位フラグMIN ̄、クロックCLKを用いて、下位フラグMIN0~MIN7に対応する信号のアドレス解決を行い、その結果として下位K個のアドレス信号をアドレスバスaddr<0:7>へ順次に出力し得る。
アドレス解決回路403は、図16に示すように構成され得る。図16は、アドレス解決回路403の概略構成を示す回路図である。
アドレス解決回路403は、図16に示すように、グローバル回路36(図6参照)に代えて、グローバル回路436を有する。グローバル回路436は、外部からクロックCLKを受け、クロックCLKに応じてクロックCLK_BOTK、イネーブル信号BOTK_EN、パルスBOTK_STARTを生成する。グローバル回路436は、イネーブル信号BOTK_ENを出力回路34へ供給し、パルスBOTK_STARTをシフトレジスタ33の先頭のレジスタ321へ供給し、クロックCLK_BOTKをシフトレジスタ33の各レジスタ321へ供給する。
シフトレジスタ33は、複数列の下位フラグに応じて、再構成可能である。アドレス解決回路403は、複数のレジスタ回路32-i~32-(i+3)のうち、下位K個の下位フラグ値に対応するレジスタ回路32で入力ノード32a及び出力ノード32b間にレジスタ321を接続する。アドレス解決回路403は、残りのレジスタ回路32で入力ノード32a及び出力ノード32b間でレジスタ321をバイパスする。これにより、アドレス解決回路403は、シフトレジスタ33を再構成する。
再構成されたシフトレジスタ33は、単独で供給されるパルスBOTK_STARTが入力される。シフトレジスタ33は、パルスBOTK_STARTを、下位K個の下位フラグ値に対応するレジスタ321間で順次にシフトさせて伝送させる。これに応じて、複数のアドレス回路31-i~31-(i+3)のうち下位K個の下位フラグ値に対応するアドレス回路31が選択的に順次にイネーブルされる。これにより、下位K個の下位フラグ値に対応するアドレス回路31からアドレス信号が順次にアドレスバスaddr<0:7>に出力される。すなわち、下位K個の信号に対応するK個のアドレス信号が、Kサイクルでアドレス解決されるようにシフトレジスタ33を再構成できるので、アドレス解決回路3を下位の個数「K」に対してスケーラブルに構成できる。
例えば、アドレス解決回路403は、図17に示すように動作する。図17は、アドレス解決回路403の動作を示す波形図である。図17では、処理回路402が図14に示すように動作する場合に対応する。図17では、列の数が8(第0列~第7列)であり、アドレス解決回路3が処理回路2から下位フラグ(MIN0,MIN1,MIN2,MIN3,MIN4,MIN5,MIN6,MIN7)=(1,0,1,0,1,1,0,0)を受けた場合の動作を例示する。
タイミングt41において、グローバル回路436(図16参照)は、クロックCLKに同期して、イネーブル信号BOTK_ENをノンアクティブレベル(例えば、Lレベル)からアクティブレベル(例えば、Hレベル)へ遷移させ出力回路34へ供給する。出力回路34は、アドレスバスaddr<0:7>上の信号を出力可能な状態になる。
グローバル回路436は、クロックCLKに同期して、クロックCLKの1周期のパルス幅で単独のパルスBOTK_STARTを生成しシフトレジスタ33の先頭のレジスタ回路32-0へ供給する。
このとき、下位フラグ(MIN0,MIN1,MIN2,MIN3,MIN4,MIN5,MIN6,MIN7)=(1,0,1,0,1,1,0,0)に応じて、シフトレジスタ33が再構成される。例えば、アドレス解決回路403は、下位フラグMIN=1に対応するレジスタ回路32-0,32-2,32-4,32-5(図11(a)参照)で入力ノード及び出力ノード間にレジスタ321を接続する。またアドレス解決回路403は、下位フラグMIN=0に対応するレジスタ回路32-1,32-3,32-6,32-7でレジスタ321をバイパスして入力ノード32a及び出力ノード間32bを接続する。これにより、シフトレジスタ33では、入力ノード33a及び出力ノード33b間にレジスタ321-0,32-2,32-4,32-5が選択的に接続された構成に、再構成される。レジスタ321-0,32-2,32-4,32-5は、処理回路402で特定された下位K個の信号に対応する。
タイミングt42において、クロックCLK_BOTKの立ち上がりエッジに応じて、再構成されたシフトレジスタ33における先頭のレジスタ321-0でパルスBOTK_STARTが保持され、レジスタ321-1の出力が0から1になる。これに応じて、セレクト信号SEL0が0から1になり、アドレス回路31-0のイネーブル回路312が共通ラインEをアクティブレベル(例えば、Hレベル)にし共通ラインnEをアクティブレベル(例えば、Lレベル)にする。これにより、アドレス回路31-0の記憶回路311が活性化される。記憶回路311は、下位フラグMIN0に対応する信号のアドレス値をアドレスバスaddr<0:7>へ出力する。ラインB0~B7は、それぞれ、(B0,B1,B2,B3,B4,B5,B6,B7)=(0,0,0,0,0,0,0,0)のレベルをアドレス信号として、対応するアドレス線addrへ出力する。この例では、B0がLSBに対応し、B7がMSBに対応するので、アドレス値としては、2進表記で「00000000」であり、10進表記で「0」である。
タイミングt43において、クロックCLK_BOTKの立ち上がりエッジに応じて、パルスBOTK_STARTが、再構成されたシフトレジスタ33における先頭のレジスタ321-0から2番目のレジスタ321-2にシフトされ、レジスタ321-0の出力が1から0になるとともにレジスタ321-2の出力が0から1になる。
これに応じて、セレクト信号SEL0が1から0になり、アドレス回路31-0のイネーブル回路312が共通ラインEをノンアクティブレベル(例えば、Lレベル)にし共通ラインnEをノンアクティブレベル(例えば、Hレベル)にする。これにより、アドレス回路31-0の記憶回路311が非活性化される。
それとともに、セレクト信号SEL2が0から1になり、アドレス回路31-2のイネーブル回路312が共通ラインEをアクティブレベル(例えば、Hレベル)にし共通ラインnEをアクティブレベル(例えば、Lレベル)にする。これにより、アドレス回路31-2の記憶回路311が活性化される。記憶回路311は、下位フラグMIN2に対応する信号のアドレス値をアドレスバスaddr<0:7>へ出力する。ラインB0~B7は、それぞれ、(B0,B1,B2,B3,B4,B5,B6,B7)=(0,1,0,0,0,0,0,0)のレベルをアドレス信号として、対応するアドレス線addrへ出力する。この例では、B0がLSBに対応し、B7がMSBに対応するので、アドレス値としては、2進表記で「00000010」であり、10進表記で「2」である。
タイミングt44において、クロックCLK_BOTKの立ち上がりエッジに応じて、パルスBOTK_STARTが、再構成されたシフトレジスタ33における2番目のレジスタ321-2から3番目のレジスタ321-4にシフトされ、レジスタ321-2の出力が1から0になるとともにレジスタ321-4の出力が0から1になる。
これに応じて、セレクト信号SEL2が1から0になり、アドレス回路31-2のイネーブル回路312が共通ラインEをノンアクティブレベル(例えば、Lレベル)にし共通ラインnEをノンアクティブレベル(例えば、Hレベル)にする。これにより、アドレス回路31-2の記憶回路311が非活性化される。
それとともに、セレクト信号SEL4が0から1になり、アドレス回路31-4のイネーブル回路312が共通ラインEをアクティブレベル(例えば、Hレベル)にし共通ラインnEをアクティブレベル(例えば、Lレベル)にする。これにより、アドレス回路31-4の記憶回路311が活性化される。記憶回路311は、下位フラグMIN4に対応する値のアドレス値をアドレスバスaddr<0:7>へ出力する。ラインB0~B7は、それぞれ、(B0,B1,B2,B3,B4,B5,B6,B7)=(0,0,1,0,0,0,0,0)のレベルをアドレス信号として、対応するアドレス線addrへ出力する。この例では、B0がLSBに対応し、B7がMSBに対応するので、アドレス値としては、2進表記で「00000100」であり、10進表記で「4」である。
タイミングt45において、クロックCLK_BOTKの立ち上がりエッジに応じて、パルスBOTK_STARTが、再構成されたシフトレジスタ33における3番目のレジスタ321-4から最終のレジスタ321-5にシフトされ、レジスタ321-4の出力が1から0になるとともにレジスタ321-5の出力が0から1になる。
これに応じて、セレクト信号SEL4が1から0になり、アドレス回路31-5のイネーブル回路312が共通ラインEをノンアクティブレベル(例えば、Lレベル)にし共通ラインnEをノンアクティブレベル(例えば、Hレベル)にする。これにより、アドレス回路31-5の記憶回路311が非活性化される。
それとともに、セレクト信号SEL5が0から1になり、アドレス回路31-5のイネーブル回路312が共通ラインEをアクティブレベル(例えば、Hレベル)にし共通ラインnEをアクティブレベル(例えば、Lレベル)にする。これにより、アドレス回路31-5の記憶回路311が活性化される。記憶回路311は、下位フラグMIN5に対応する値のアドレス値をアドレスバスaddr<0:7>へ出力する。ラインB0~B7は、それぞれ、(B0,B1,B2,B3,B4,B5,B6,B7)=(1,0,1,0,0,0,0,0)のレベルをアドレス信号として、対応するアドレス線addrへ出力する。この例では、B0がLSBに対応し、B7がMSBに対応するので、アドレス値としては、2進表記で「00000101」であり、10進表記で「5」である。
タイミングt46において、クロックCLK_BOTKの立ち上がりエッジに応じて、パルスBOTK_STARTが、シフトレジスタ33の最終のレジスタ321-5から転送検知回路35へ転送され、レジスタ321-5の出力が1から0になるとともに転送検知回路35の出力が0から1になる。
これに応じて、セレクト信号SEL5が1から0になり、アドレス回路31-5のイネーブル回路312が共通ラインEをノンアクティブレベル(例えば、Lレベル)にし共通ラインnEをノンアクティブレベル(例えば、Hレベル)にする。これにより、アドレス回路31-5の記憶回路311が非活性化される。それとともに、転送検知回路35は、1になった出力をパルスBOTK_nSTOPとしてグローバル回路36へ供給する。
パルスBOTK_nSTOPに応じて、タイミングt47において、グローバル回路436は、クロックCLKに同期して、イネーブル信号BOTK_ENをアクティブレベル(例えば、Hレベル)からノンアクティブレベル(例えば、Lレベル)へ遷移させて出力回路34へ供給する。出力回路34は、アドレスバスaddr<0:7>上の信号を出力しない状態になる。これにより、アドレス解決回路403からアドレスバスaddr<0:7>へのアドレス信号の出力が完了する。
タイミングt48において、転送検知回路35の出力が1から0になり、転送検知回路35からグローバル回路436への通知が完了する。
以上のように、第2の実施形態では、列数以下のKサイクルの動作で下位K個の信号に対するアドレス解決を行うことができ、下位K個の信号に対するアドレス解決をより効率的に行うことができる。これにより、メモリ配列MAの複数列から出力される複数の信号のうち下位K個を利用したい場合等に、複数の信号が効率的に利用可能である。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 演算システム、2,402 処理回路、3,403 アドレス解決回路、21,421 ローカル回路、22,36,422,436 グローバル回路、31 アドレス回路、32 レジスタ回路、33 シフトレジスタ、34 出力回路、35 転送検知回路。
Claims (7)
- 複数行及び複数列を構成するように配列され、複数の第1信号に重みを乗算して複数の計算結果を生成する複数の乗算素子と、
前記複数列ごとに前記複数の計算結果のうちの各列の計算結果の和を計算して複数の第2信号を生成する複数の加算素子と、
前記加算素子が生成した前記複数の第2信号を受け、前記複数の第2信号のうちの一部の第2信号に対応する値を抽出する第1処理回路と、
前記複数の第2信号に対応する複数のアドレス回路を含み、前記複数のアドレス回路のうち前記一部の第2信号に対応するアドレス回路を選択的にイネーブルする第2処理回路と、
を備えた演算システム。 - 前記第2処理回路は、
前記複数のアドレス回路に対応する複数のレジスタ回路を含み再構成可能なシフトレジスタをさらに有する
請求項1に記載の演算システム。 - 前記第1処理回路は、
Kを2以上の整数とするとき、前記複数の第2信号ごとにそれぞれが前記複数の第2信号のうち上位K個のレベルの第2信号であるか否かを示す複数の上位フラグ値を生成し、
前記複数のレジスタ回路のそれぞれは、入力ノード、出力ノード、及びレジスタを含み、
前記第2処理回路は、前記複数のレジスタ回路のうち前記上位K個のレベルの第2信号であることを示す上位フラグ値に対応するレジスタ回路で入力ノード及び出力ノード間にレジスタを接続すると共に残りのレジスタ回路でレジスタをバイパスして入力ノード及び出力ノード間を接続することにより、前記シフトレジスタを再構成する
請求項2に記載の演算システム。 - 前記レジスタ回路は、
オンして前記レジスタを前記入力ノード及び前記出力ノード間に接続する第1の切替素子と、
オンして前記レジスタを前記入力ノード及び前記出力ノードの間でバイパスさせる第2の切替素子と、
をさらに含み、
前記アドレス回路は、
アドレスの値が格納され、イネーブル端子を有する記憶回路と、
前記上位フラグ値を受ける第1の入力ノードと前記レジスタの前記出力ノードに接続された第2の入力ノードと前記記憶回路の前記イネーブル端子に接続された出力ノードとを有するイネーブル回路と、
を有する
請求項3に記載の演算システム。 - 前記第1処理回路は、
Kを2以上の整数とするとき、前記複数の第2信号ごとにそれぞれが前記複数の第2信号のうち下位K個のレベルの第2信号であるか否かを示す複数の下位フラグ値を生成し、
前記複数のレジスタ回路のそれぞれは、入力ノード、出力ノード、及びレジスタを含み、
前記第2処理回路は、前記複数のレジスタ回路のうち前記下位K個のレベルの第2信号であることを示す下位フラグ値に対応するレジスタ回路で入力ノード及び出力ノード間にレジスタを接続すると共に残りのレジスタ回路でレジスタをバイパスして入力ノード及び出力ノード間を接続することにより、前記シフトレジスタを再構成する
請求項2に記載の演算システム。 - 前記レジスタ回路は、
オンして前記レジスタを前記入力ノード及び前記出力ノード間に接続する第1の切替素子と、
オンして前記レジスタを前記入力ノード及び前記出力ノードの間でバイパスさせる第2の切替素子と、
をさらに含み、
前記アドレス回路は、
アドレスの値が格納され、イネーブル端子を有する記憶回路と、
前記下位フラグ値を受ける第1の入力ノードと前記レジスタの前記出力ノードに接続された第2の入力ノードと前記記憶回路の前記イネーブル端子に接続された出力ノードとを有するイネーブル回路と、
を有する
請求項5に記載の演算システム。 - 前記記憶回路は、それぞれが固定電位に接続された複数のラインを含む
請求項4又は請求項6に記載の演算システム。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021203643A JP2023088730A (ja) | 2021-12-15 | 2021-12-15 | 演算システム |
US17/840,691 US20230185529A1 (en) | 2021-12-15 | 2022-06-15 | Calculation system |
TW111124673A TWI827119B (zh) | 2021-12-15 | 2022-07-01 | 演算系統 |
CN202210904294.5A CN116263745A (zh) | 2021-12-15 | 2022-07-29 | 运算系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021203643A JP2023088730A (ja) | 2021-12-15 | 2021-12-15 | 演算システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023088730A true JP2023088730A (ja) | 2023-06-27 |
Family
ID=86695550
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021203643A Pending JP2023088730A (ja) | 2021-12-15 | 2021-12-15 | 演算システム |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230185529A1 (ja) |
JP (1) | JP2023088730A (ja) |
CN (1) | CN116263745A (ja) |
TW (1) | TWI827119B (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022049312A (ja) * | 2020-09-16 | 2022-03-29 | キオクシア株式会社 | 演算システム |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10068652B2 (en) * | 2014-09-03 | 2018-09-04 | Micron Technology, Inc. | Apparatuses and methods for determining population count |
US11507642B2 (en) * | 2019-05-02 | 2022-11-22 | Silicon Storage Technology, Inc. | Configurable input blocks and output blocks and physical layout for analog neural memory in deep learning artificial neural network |
US11355184B2 (en) * | 2020-03-05 | 2022-06-07 | Silicon Storage Technology, Inc. | Analog neural memory array in artificial neural network with substantially constant array source impedance with adaptive weight mapping and distributed power |
-
2021
- 2021-12-15 JP JP2021203643A patent/JP2023088730A/ja active Pending
-
2022
- 2022-06-15 US US17/840,691 patent/US20230185529A1/en active Pending
- 2022-07-01 TW TW111124673A patent/TWI827119B/zh active
- 2022-07-29 CN CN202210904294.5A patent/CN116263745A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
TWI827119B (zh) | 2023-12-21 |
TW202326405A (zh) | 2023-07-01 |
US20230185529A1 (en) | 2023-06-15 |
CN116263745A (zh) | 2023-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11948659B2 (en) | Sub-cell, mac array and bit-width reconfigurable mixed-signal in-memory computing module | |
JP4427188B2 (ja) | 多値論理回路構成 | |
US20120140540A1 (en) | Charge sharing in a tcam array | |
CN111816234B (zh) | 一种基于sram位线同或的电压累加存内计算电路 | |
Hung et al. | Challenges and trends of nonvolatile in-memory-computation circuits for AI edge devices | |
US20220276835A1 (en) | Sub-cell, Mac array and Bit-width Reconfigurable Mixed-signal In-memory Computing Module | |
Hung et al. | 8-b precision 8-Mb ReRAM compute-in-memory macro using direct-current-free time-domain readout scheme for AI edge devices | |
TWI827119B (zh) | 演算系統 | |
US20160112060A1 (en) | Analog-to-digital conversion with micro-coded sequencer | |
KR102470924B1 (ko) | 인메모리 컴퓨팅 및 하이브리드 계산/저장 메모리 아키텍처를 위한 sram 기반 셀 | |
US7173557B2 (en) | Analog/digital converter | |
US11018687B1 (en) | Power-efficient compute-in-memory analog-to-digital converters | |
JP5800422B2 (ja) | 連想メモリ | |
CN117271436B (zh) | 基于sram的电流镜互补存内计算宏电路、及芯片 | |
US6611222B1 (en) | Low-complexity high-speed analog-to-digital converters | |
CN110518911B (zh) | 一种一步1.5位逐次逼近型模数转换器 | |
US11823035B2 (en) | Power-efficient compute-in-memory pooling | |
Zhang et al. | CP-SRAM: charge-pulsation SRAM marco for ultra-high energy-efficiency computing-in-memory | |
US20220083846A1 (en) | Computation system | |
Roy et al. | Constraints analysis for minimization of multiple inputs logic programming | |
US20220405057A1 (en) | Semiconductor integrated circuit and arithmetic logic operation system | |
TWI843055B (zh) | 半導體積體電路及運算系統 | |
JP3339566B2 (ja) | サーモメトリック−バイナリコード変換方法および回路、それに使用されるエンコーダ素子回路 | |
CN113160860B (zh) | 计算系统、计算器件和计算方法 | |
US20230385620A1 (en) | Spike neural network circuit |