JP7482636B2 - メモリ装置およびそれを用いたコンピューティング装置 - Google Patents

メモリ装置およびそれを用いたコンピューティング装置 Download PDF

Info

Publication number
JP7482636B2
JP7482636B2 JP2020013512A JP2020013512A JP7482636B2 JP 7482636 B2 JP7482636 B2 JP 7482636B2 JP 2020013512 A JP2020013512 A JP 2020013512A JP 2020013512 A JP2020013512 A JP 2020013512A JP 7482636 B2 JP7482636 B2 JP 7482636B2
Authority
JP
Japan
Prior art keywords
data
input
weight
product
mac
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.)
Active
Application number
JP2020013512A
Other languages
English (en)
Other versions
JP2020129373A5 (ja
JP2020129373A (ja
Inventor
佳▲らむ▼ 金
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2020129373A publication Critical patent/JP2020129373A/ja
Publication of JP2020129373A5 publication Critical patent/JP2020129373A5/ja
Application granted granted Critical
Publication of JP7482636B2 publication Critical patent/JP7482636B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Logic Circuits (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)

Description

本発明は、メモリ装置およびそれを用いたコンピューティング装置に関する。
ニューラルネットワーク(neural network)の基本的なアルゴリズムは、入力マトリックスとコンボリューションフィルタの演算により出力マトリックスを導き出すことである。具体的には、入力マトリックスとコンボリューションフィルタをコンボリューション演算により出力マトリックスを決めることができる。
コンボリューション演算は、数多くの乗算と加算の組み合わせからなっており、最近ニューラルネットワークの爆発的な成長により、高帯域/低遅延のニューラルネットワークエンジンが求められる。これにより、コンボリューションフィルタの大きさが増加し、コンボリューションフィルタに含まれた加重値データの量が幾何級数的に増加している。また、入力マトリックスに含まれた入力データの量も同様に幾何級数的に増加し、出力マトリックスを生成するために非常に多量の乗算と加算が行われることが求められる。
現在のシステムで増加した要求事項を満足させるためには多くの時間が必要とされ、その活用度が低い。したがって、高帯域を維持し、かつ低遅延を満足するニューラルネットワークエンジンの開発が必要である。
本発明が解決しようとする技術的課題は、メモリ装置内でコンボリューション演算が行われ、簡単で効果的な演算を行うメモリ装置およびそれを用いたコンピューティング装置を提供することにある。
本発明が解決しようとする他の技術的課題は、メモリ装置内でコンボリューション演算が行われ、低遅延を満足するメモリ装置およびそれを用いたコンピューティング装置を提供することにある。
本発明が解決しようとするまた他の技術的課題は、入力データと出力データが同時にIn/OutされるMAC(乗累算)演算器を含むメモリ装置、およびそれを用いたコンピューティング装置を提供することにある。
本発明の技術的課題は、以上で言及した技術的課題に制限されず、言及されていないまた他の技術的課題は、以下の記載から当業者に明確に理解されるであろう。
前記技術的課題を達成するための本発明のいくつかの実施形態によるメモリ装置は、加重値データが保存されるメモリセル、メモリセルから加重値データをリードするバッファメモリ、入力データの提供を受ける入出力パッド、およびバッファメモリから加重値データの提供を受け、入出力パッドから入力データの提供を受けて加重値データと入力データのコンボリューション(Convolution)演算を行うMAC演算器を含み、入力データは第1区間の間にMAC演算器に提供され、MAC演算器は第1区間とオーバーラップする第2区間の間に加重値データと入力データのコンボリューション演算を行う。
前記技術的課題を達成するための本発明のいくつかの実施形態によるメモリ装置は、第1および第2加重値ビットを含む加重値データが保存されるバッファメモリ、第1および第2入力ビットを含む入力データを受信する入出力パッド、および第1累算器~第3累算器を含み、加重値データと入力データの提供を受けて加重値データと入力データのコンボリューション(Convolution)演算を行うMAC演算器を含み、MAC演算器が加重値データと入力データのコンボリューション演算を行うことは、第1加重値ビットと第1入力ビットを乗算して第1累算器に提供し、第2加重値ビットと第1入力ビットを乗算して第2累算器に提供し、第1加重値ビットと第2入力ビットを乗算して第2累算器に提供し、第2加重値ビットと第2入力ビットを乗算して第3累算器に提供することを含む。
前記技術的課題を達成するための本発明のいくつかの実施形態によるメモリ装置は、加重値データが保存されるメモリセル、メモリセルから加重値データをリードするバッファメモリ、入力データの提供を受ける入出力パッド、および加重値データと入力データのコンボリューション(Convolution)演算を行うMAC演算器を含み、入力データが入出力パッドに提供される前に、バッファメモリはメモリセルから加重値データをリードし、入力データは第1区間の間に入出力パッドからMAC演算器に提供され、加重値データは第1区間とオーバーラップする第2区間の間にバッファメモリからMAC演算器に提供される。
前記技術的課題を達成するための本発明のいくつかの実施形態によるコンピューティング装置は、MAC演算器を含み、加重値データが保存されるメモリ装置、およびメモリ装置に入力データを提供するプロセッサを含み、MAC演算器は、入力データと加重値データの提供を受け、入力データと加重値データのコンボリューション演算を行い、入力データがMAC演算器に提供される第1区間と、加重値データがMAC演算器に提供される第2区間はオーバーラップする。
その他実施形態の具体的な事項は詳細な説明および図面に含まれている。
コンボリューション演算を説明するための例示的な図である。 いくつかの実施形態によるコンピューティング装置を説明するための例示的なブロック図である。 いくつかの実施形態による不揮発性メモリを説明するための例示的なブロック図である。 いくつかの実施形態によるコンピューティング装置の動作を説明するための例示的な図である。 いくつかの実施形態による加重値データがメモリセルからバッファメモリに提供される動作を説明するための例示的な図である。 いくつかの実施形態による入力データと加重値データがMAC演算器に提供される動作を説明するための例示的な図である。 いくつかの実施形態によるMAC演算器の演算結果が出力データとして提供される動作を説明するための例示的な図である。 いくつかの実施形態によるデータが入力/出力されるタイミングを説明するための例示的な図である。 いくつかの実施形態によるMAC演算器が入力データと加重値データを受信する区間を説明するための例示的な図である。 いくつかの実施形態による入力データと出力データの乗算を説明するための例示的な図である。 いくつかの実施形態による入力データと出力データの乗算を説明するための例示的な図である。 いくつかの実施形態による入力データと出力データの乗算を説明するための例示的な図である。 いくつかの実施形態による不揮発性メモリを説明するための例示的なブロック図である。 いくつかの実施形態によるデータが入力/出力されるタイミングを説明するための例示的な図である。
図1はコンボリューション演算を説明するための例示的な図である。図1を参照すると、出力マトリックス(3,output matrix)は、入力マトリックス(1,input matrix)とコンボリューションフィルタ(2,convolution filterまたはカーネル(kernel))をコンボリューション演算(convolution operation)して生成される。例えば、入力マトリックス1は第1入力データ(X)~第20入力データ(X19)を含み得る。また、例えば、コンボリューションフィルタ2は、第1加重値データ(W)~第4加重値データ(W)を含み得る。また、例えば、出力マトリックス3は、第1出力データ(S)~第12出力データ(S11)を含み得る。本発明のいくつかの実施形態がこのような用語に限定されるものではなく、本発明の技術分野における通常の知識を有する者は以下で説明しようとする内容を明確に理解できるであろう。また、説明の便宜上、図1は入力マトリックス1が4×5のマトリックスを構成し、コンボリューションフィルタ2が2×2のマトリックスを構成し、出力マトリックス3が3×4のマトリックスを構成する場合を説明するが、これは説明の便宜のためのものであり、実施形態はこれに制限されるものではない。入力マトリックス1およびコンボリューションフィルタ2は、さらに多いか少ないデータを含み得、出力マトリックス3は、入力マトリックス1とコンボリューションフィルタ2の構成によって決定され得る。
出力マトリックス3は、入力データI_Dataと加重値データW_Dataの乗算と加算によって決定され得る。すなわち、コンボリューション演算は乗算と加算の組み合わせであり得る。例えば、第1出力データ(S)および第2出力データ(S)は、下記数学式1および数学式2により決定される。
(数学式1)
=X+X+X+X
(数学式2)
=X+X+X+X
数学式1に説明したように、第1出力データ(S)は、第1入力データ(X)と第1加重値データ(W)の積、第2入力データ(X)と第2加重値データ(W)の積、第6入力データ(X)と第3加重値データ(W)の積および第7入力データ(X)と第4加重値データ(W)の積をすべて合計して決定される。同様に、数学式2に説明したように、第2出力データ(S)は、第2入力データ(X)と第1加重値データ(W)の積、第3入力データ(X)と第2加重値データ(W)の積、第7入力データ(X)と第3加重値データ(W)の積および第8入力データ(X)と第4加重値データ(W)の積をすべて合計して決定される。
これと同様に、第1入力データ(X)~第20入力データ(X19)と第1加重値データ(W)~第4加重値データ(W)に対して、乗算および加算を行って、第3出力データ(S)~第12出力データ(S11)を決定する。以下では、出力マトリックス3を生成するコンピューティング装置(Computing Device)1000、すなわち入力データI_Dataと加重値データW_Dataのコンボリューション演算を行うコンピューティング装置1000について説明する。
図2はいくつかの実施形態によるコンピューティング装置を説明するための例示的なブロック図である。図2を参照すると、いくつかの実施形態によるコンピューティング装置1000は、インターフェース(I/F)200、プロセッサ(Processor)300、キャッシュメモリ400(Cache)およびメモリ装置100を含み得る。
いくつかの実施形態によるコンピューティング装置1000は、デスクトップをはじめとするパーソナルコンピュータ、サーバーコンピュータ、ノートブックをはじめとする携帯用コンピュータおよび携帯電話(cellular phone)、スマートフォン(Smart phone)、タブレット(tablet)、MP3、PMP(Portable Multimedia Player)、PDA(Personal Digital Assistant)、デジタルカメラ(digital camera)、デジタルビデオカメラ(digital camcorder)等をはじめとする携帯用装置を含み得る。また、いくつかの実施形態によるコンピューティング装置1000は、ニューラルネットワーク(neural network)基盤の処理装置であり得る。例えば、いくつかの実施形態によるコンピューティング装置1000は、コンボリューションニューラルネットワーク(CNN:convolution neural network)基盤の映像処理(image processing)装置、自動操向装置または走行補助装置などに用いられる。のみならず、いくつかの実施形態によるコンピューティング装置1000は、デジタル信号処理(DSP:Digital Signal Processing)の遂行に用いられる。ただし、本発明の技術的思想は、コンピューティング装置1000が用いられる用途に限定されず、本発明の技術分野における通常の知識を有する者は必要に応じて多様な分野に本発明のいくつかの実施形態によるコンピューティング装置1000を用いることができる。
インターフェース200は、コンピューティング装置1000へのデータの入力または出力に用いられる。例えば、図1で説明した第1入力データ(X)~第20入力データ(X19)は、インターフェース200を介してコンピューティング装置1000に提供されるが、実施形態はこれに限定されるものではない。例えば、第1入力データ(X)~第20入力データ(X19)は、コンピューティング装置1000内に含まれた特定の構成要素によって生成されることもできる。
プロセッサ300は、コンピューティング装置1000を制御するためのプログラムコードを実行する。いくつかの実施形態によるプロセッサ300は、CPU(Central Processing Unit)、GPU(Graphic Processing Unit)、AP(Application Processor)およびMPU(Micro Processor Unit)等を含み得るが、実施形態はこれに制限されるものではない。
キャッシュメモリ400は、データに高速でアクセス(access)できるように未来の要請に備えてデータを一時的に保存できるメモリであり得る。キャッシュメモリ400に保存されたデータは以前行った演算の結果であり得る。キャッシュメモリ400は、スタティックランダムアクセスメモリ(SRAM:Static Random Access Memory)、高速SRAM(Fast-SRAM)、および/またはダイナミックランダムアクセスメモリ(DRAM:Dynamic RAM)等で実現されるが、実施形態はこれに制限されるものではない。また、図1はキャッシュメモリ400がプロセッサ300と分離した場合を図示するが、実施形態はこれに制限されるものではない。例えば、キャッシュメモリ400は、プロセッサ300内部のTCM(Tightly Coupled Memory)であり得る。
メモリ装置100は、不揮発性メモリ(Nonvolatile Memory)10およびメモリコントローラ(Memory Controller)20を含み得る。メモリコントローラ20は、プロセッサ300からの要請に応答して不揮発性メモリ10に保存されたデータをリード(read)またはイレーズ(erase)するか、不揮発性メモリ10にデータをライト(Write)し得る。また、いくつかの実施形態によれば、メモリコントローラ20は、MAC(乗累算)コマンド(MAC CMD)を受信して不揮発性メモリ10がコンボリューション演算を行うように制御することができる。
不揮発性メモリ10は、データを非一時的に保存し得る。例えば、不揮発性メモリ10は、第1加重値データ(W)~第4加重値データ(W)を保存し得る。いくつかの実施形態による不揮発性メモリ10は、メモリコントローラ20の要請に応じてコンボリューション演算を行い得る。
不揮発性メモリ10は、フラッシュメモリ(flash memory)のシングルレベルセル(SLC)またはマルチレベルセル(MLC:Multi Level Cell)であり得るが、実施形態はこれに制限されるものではない。例えば、不揮発性メモリ10は、PCカード(PCMCIA:personal computer memory card international association)、コンパクトフラッシュ(登録商標)カード(CF)、スマートメディアカード(SM,SMC)、メモリスティック、マルチメディアカード(MMC,RS-MMC,MMCmicro)、SDカード(SD,miniSD,microSD,SDHC)、ユニバーサルフラッシュストレージ(UFS)、エンベディッドマルチメディアカード(eMMC)、NANDフラッシュメモリ(NAND Flash Memory)、NORフラッシュメモリ(NOR Flash Memory)、垂直型NANDフラッシュメモリ(Vertical NAND Flash Memory)等を含み得る。
図面に示していないが、メモリコントローラ20および/または不揮発性メモリ10は、PoP(Package on Package)、Ball grid arrays(BGAs)、Chip scale packages(CSPs)、Plastic Leaded Chip Carrier(PLCC)、Plastic Dual In-Line Package(PDIP)、Die in Waffle Pack、Die in Wafer Form、Chip On Board(COB)、Ceramic Dual In-Line Package(CERDIP)、Plastic Metric Quad Flat Pack(MQFP)、Thin Quad Flatpack(TQFP)、Small Outline Integrated Circuit(SOIC)、Shrink Small Outline Package(SSOP)、Thin Small Outline(TSOP)、System In Package(SIP)、Multi Chip Package(MCP)、Wafer-level Fabricated Package(WFP)、Wafer-Level Processed Stack Package(WSP)等のようなパッケージを用いて実装されるが、実施形態はこれに制限されるものではない。不揮発性メモリ10に対する具体的な説明のために、図3を参照する。
図3はいくつかの実施形態による不揮発性メモリを説明するための例示的なブロック図である。図3を参照すると、不揮発性メモリ10は保存領域(Storage Region)10_Sと周辺領域(Peripheral Region)10_Pを含み得る。いくつかの実施形態によれば、保存領域10_Sには複数のメモリセル(Memory Cell)11が配置される。メモリセル11それぞれはデータを保存する。例えば、メモリセル11は、第1加重値データ(W)~第4加重値データ(W)を保存する。説明の便宜上、メモリセル11が配置される保存領域10_S以外の他の領域を周辺領域10_Pと定義する。
いくつかの実施形態によれば、不揮発性メモリ10の周辺領域10_Pにはバッファメモリ(Buffer Memory)12、MAC(乗累算)演算器(13,MAC operator:Multiply and Accumulate operator)、結果出力バッファ(Result Output Buffer)14および入出力パッド15(I/O PAD)が配置される。
バッファメモリ12と入出力パッド15は、それぞれMAC演算器13にデータを提供する。例えば、バッファメモリ12はMAC演算器13に加重値データW_Dataを提供し、入出力パッド15はMAC演算器13に入力データI_Dataを提供し得る。
MAC演算器13は提供された加重値データW_Dataと入力データI_Dataをコンボリューション演算する。MAC演算器13は加重値データW_Dataと入力データI_Dataのコンボリューション演算の結果を、結果出力バッファ14に提供する。結果出力バッファ14に提供されるデータを説明の便宜上結果データR_Dataと定義する。いくつかの実施形態において、結果データR_Dataは、加重値データW_Dataと入力データI_Dataのコンボリューション演算の中間結果データであり得る。例えば、結果データR_Dataは、第1出力データ(S)~第12出力データ(S11)それぞれであり得る。他の例として、結果データR_Dataは、第1加重値データ(W)と第1入力データ(X)の積(W)~第4加重値データ(W)と第20入力データ(X19)の積(W19)それぞれであり得る。しかし、実施形態はこれに制限されず、本発明の技術分野における通常の知識を有する者は、加重値データW_Dataと入力データI_Dataのコンボリューション演算の中間結果を結果データR_Dataと設定することができる。
結果出力バッファ14は、結果データR_Dataを保存する。例えば、第1出力データ(S)~第12出力データ(S11)それぞれが結果出力バッファ14に一時的に保存され得る。第1出力データ(S)~第12出力データ(S11)が結果出力バッファ14にすべて保存されると、結果出力バッファ14は入出力パッド15に第1出力データ(S)~第12出力データ(S11)を提供する。
入出力パッド15は、不揮発性メモリ10の外部から入力データI_Dataを受信する。入出力パッド15は、受信した入力データI_DataをMAC演算器13に提供する。また、入出力パッド15は、結果出力バッファ14に保存されたデータを受信し、これを出力データO_Dataとして不揮発性メモリ10の外部に提供する。いくつかの実施形態において、出力データO_Dataは、加重値データW_Dataと入力データI_Dataのコンボリューション演算に対する中間結果または最終結果データであり得る。例えば、出力データO_Dataは、第1出力データ(S)~第12出力データ(S11)であり得る。他の例として、出力データO_Dataは、第1加重値データ(W)と第1入力データ(X)の積(W)~第4加重値データ(W)と第20入力データ(X19)の積(W19)であり得る。
図4はいくつかの実施形態によるコンピューティング装置の動作を説明するための例示的な図である。図4を参照すると、プロセッサ300は、MAC演算に対する要請を受信する。プロセッサ300は、メモリコントローラ20に入力データI_Dataとともに、MACコマンド(MAC CMD)を提供する。
メモリコントローラ20は、受信したMACコマンド(MAC CMD)に応答して不揮発性メモリ10に加重値データW_Dataに対するリードコマンド(Read CMD)を提供する。不揮発性メモリ10は、加重値データW_Dataに対するリードコマンド(Read CMD)に応答して不揮発性メモリ10の保存領域10_S内に保存された(例えば、メモリセル11に保存された)加重値データW_Dataをリードする(S110)。リードした加重値データW_Dataは、バッファメモリ12に提供される。例示的な説明のために、図5~図7を参照する。
図5はいくつかの実施形態による加重値データがメモリセルからバッファメモリに提供される動作を説明するための例示的な図である。図6はいくつかの実施形態による入力データと加重値データがMAC演算器に提供される動作を説明するための例示的な図である。図7はいくつかの実施形態によるMAC演算器の演算結果が出力データとして提供される動作を説明するための例示的な図である。
図4および図5を参照すると、加重値データW_Dataは、複数のメモリセル11のうち少なくとも一部に保存されている。加重値データW_Dataは、例えば、第1加重値データ(W)~第4加重値データ(W)を含み得る。メモリコントローラ20は、不揮発性メモリ10に加重値データW_Dataのリードコマンド(Read CMD)を提供し、メモリセル11に保存された加重値データW_Dataをバッファメモリ12に提供する。すなわち、メモリコントローラ20の命令に従い、加重値データW_Dataがメモリセル11からバッファメモリ12にラッチ(latch)される。
すなわち、メモリコントローラ20は、MACコマンド(MAC CMD)に応答してまず加重値データW_Dataがメモリセル11からバッファメモリ12にリードされるように制御する。加重値データW_Dataのバッファメモリ12へのリードが完了すると、不揮発性メモリ10はメモリコントローラ20にリード完了応答を提供し得る。
図4および図6を参照すると、メモリコントローラ20はリード完了応答を受信する。メモリコントローラ20にリード完了応答が受信されると、メモリコントローラ20は、不揮発性メモリ10に入力データI_Dataを提供する。例えば、メモリコントローラ20は、入力データI_Dataを入出力パッド15に提供し得る。
MAC演算器13は、入出力パッド15を介して入力データI_Dataの提供を受ける。例えば、MAC演算器13は、第1入力データ(X)~第20入力データ(X19)を入出力パッド15を介して提供される。
MAC演算器13が入力データI_Dataの提供を受ける間、バッファメモリ12にラッチされた加重値データW_DataもMAC演算器13に提供され得る。例えば、MAC演算器13が入出力パッド15を介して第1入力データ(X)~第20入力データ(X19)の提供を受ける間、バッファメモリ12にラッチされた第1加重値データ(W)~第4加重値データ(W)もMAC演算器13に提供され得る。
いくつかの実施形態によれば、加重値データW_Dataがメモリセル11からバッファメモリ12にリードされた後、MAC演算器13は、入力データI_Dataを入出力パッド15を介して提供を受け得る。例えば、MAC演算器13が第1入力データ(X)~第20入力データ(X19)の提供を受ける前に、メモリセル11に保存された第1加重値データ(W)~第4加重値データ(W)はバッファメモリ12にリードされ得る。
図4および図7を参照すると、MAC演算器13は、入力データI_Dataと加重値データW_Dataの提供を受け、入力データI_Dataと加重値データW_Dataのコンボリューション演算を行う(S120)。MAC演算器13は、入力データI_Dataと加重値データW_Dataのコンボリューション演算結果を、結果出力バッファ14に提供する。すなわち、MAC演算器13で生成された結果データR_Dataが結果出力バッファ14に提供され得る。前述したように、結果データR_Dataは、加重値データW_Dataと入力データI_Dataのコンボリューション演算の中間結果データであり得る。例えば、結果データR_Dataは、第1出力データ(S)~第12出力データ(S11)それぞれであり得る。他の例として、結果データR_Dataは、第1加重値データ(W)と第1入力データ(X)の積(W)~第4加重値データ(W)と第20入力データ(X19)の積(W19)それぞれであり得る。いくつかの実施形態によれば、結果出力バッファ14に保存された結果データR_Dataは、入出力パッド15を介して出力データO_Dataとして不揮発性メモリ10の外部に提供され得る。
図8はいくつかの実施形態によるデータが入力/出力されるタイミングを説明するための例示的な図である。
図5~図8を参照して、データが入力/出力されるタイミングについて説明する。
第1区間P1の間にバッファメモリ12に加重値データW_Dataがラッチされ得る。すなわち、不揮発性メモリ10のメモリセル11に保存された加重値データW_Dataは、第1区間P1の間にバッファメモリ12に提供される。すなわち、バッファメモリ12は、第1区間P1の間にメモリセル11から加重値データW_Dataの提供を受け、これを保存する。
第2区間P2の間に、バッファメモリ12はラッチされた加重値データW_DataをMAC演算器13に提供する。すなわち、MAC演算器13は、第2区間P2の間にバッファメモリ12から加重値データW_Dataの提供を受ける。
第3区間P3の間に、入出力パッド15は、入力データI_DataをMAC演算器13に提供する。すなわち、MAC演算器13は、第3区間P3の間に入出力パッド15を介して入力データI_Dataの提供を受ける。いくつかの実施形態によれば、第1区間P1は第3区間P3より先に行い得る。すなわち、MAC演算器13が入力データI_Dataの提供を受ける前に、加重値データW_Dataは、メモリセル11からバッファメモリ12にリードされ得る。
いくつかの実施形態によれば、第2区間P2と第3区間P3はオーバーラップする。すなわち、MAC演算器13は、加重値データW_Dataと入力データI_Dataの提供を同時に受け得る。本明細書における「同時」という用語は、完ぺきな同一時点を意味しない。「同時」という用語は、互いに異なる二つのイベントが同じ区間内で発生することを意味する。すなわち、「同時」という用語は、二つのイベントが順に発生することではなく、二つのイベントが共に並列的に発生することを意味する。例えば、同一区間内で入力データI_Dataと加重値データW_Dataが受信される場合、入力データI_Dataと加重値データW_Dataは「同時」に受信されると見ることができる。他の例としては、入力データI_Dataが提供される区間で、MAC演算が行われる場合、MAC演算は入力データI_Dataが提供されるのと「同時」に行われると見ることができる。本発明の技術分野における通常の知識を有する者は、本明細書で使われた「同時」の意味を明確に理解できるであろう。図9を参照して、MAC演算器13が入力データI_Dataと加重値データW_Dataを受信する区間についてさらに具体的に説明する。
図9はいくつかの実施形態によるMAC演算器が入力データと加重値データを受信する区間を説明するための例示的な図である。説明の便宜上、重複または類似の内容は省略または簡単に説明する。
図8および図9を参照すると、第2区間P2の間に、MAC演算器13はバッファメモリ12から加重値データW_Dataの提供を受ける。いくつかの実施形態によれば、第2区間P2は、第1サブ区間SP1および第2サブ区間SP2を含み得る。
第1サブ区間SP1の間に、バッファメモリ12はMAC演算器13に第1加重値データ(W)を提供する。すなわち、MAC演算器13は第1サブ区間SP1の間にバッファメモリ12から第1加重値データ(W)の提供を受け得る。
第2サブ区間SP2の間に、バッファメモリ12はMAC演算器13に第2加重値データ(W)を提供する。すなわち、MAC演算器13は第2サブ区間SP2の間にバッファメモリ12から第2加重値データ(W)の提供を受ける。いくつかの実施形態によれば、第2サブ区間SP2は、第1サブ区間SP1以後に配置されるが、実施形態はこれに制限されるものではない。
第3区間P3の間に、MAC演算器13は入出力パッド15を介して入力データI_Dataの提供を受ける。いくつかの実施形態によれば、第3区間P3は第3サブ区間SP3および第4サブ区間SP4を含み得る。
第3サブ区間SP3の間に、入出力パッド15はMAC演算器13に第1入力データ(X)を提供する。すなわち、MAC演算器13は第3サブ区間SP3の間に、入出力パッド15を介して第1入力データ(X)の提供を受け得る。
第4サブ区間SP4の間に、入出力パッド15はMAC演算器13に第2入力データ(X)を提供する。すなわち、MAC演算器13は第4サブ区間SP4の間に、入出力パッド15を介して第2入力データ(X)の提供を受ける。いくつかの実施形態によれば、第4サブ区間SP4は、第3サブ区間SP3以後に配置されるが、実施形態はこれに制限されるものではない。
いくつかの実施形態によれば、第1サブ区間SP1と第3サブ区間SP3はオーバーラップする。また、第2サブ区間SP2と第4サブ区間SP4はオーバーラップする。すなわち、いくつかの実施形態によれば、MAC演算器13は、第1加重値データ(W)と第1入力データ(X)を同時に提供を受け得る。また、MAC演算器13は第2加重値データ(W)と第2入力データ(X)の提供を同時に受け得る。
再び図5~図8を参照すると、第4区間P4の間に、MAC演算器13は入力データI_Dataと加重値データW_Dataのコンボリューション演算を行う。いくつかの実施形態によれば、第4区間P4と第2区間P2はオーバーラップする。また、いくつかの実施形態によれば、第4区間P4と第3区間P3はオーバーラップする。すなわち、MAC演算器13は入力データI_Dataと加重値データW_Dataの提供を受けるのと同時に、入力データI_Dataと加重値データW_Dataのコンボリューション演算を行い得る。
図面に示していないが、第4区間P4の間に、MAC演算器13は入力データI_Dataと加重値データW_Dataのコンボリューション演算の中間結果を、結果出力バッファ14に提供する。すなわち、第4区間P4の間に、結果出力バッファ14は結果データR_Dataの提供を受け得る。
第5区間P5の間に、結果出力バッファ14は出力データO_Dataを入出力パッド15を介して不揮発性メモリ10の外部に提供する。前述したように、出力データO_Dataは、例えば、第1出力データ(S)~第12出力データ(S11)、または第1加重値データ(W)と第1入力データ(X)の積(W)~第4加重値データ(W)と第20入力データ(X19)の積(W19)であり得る。
いくつかの実施形態によれば、不揮発性メモリ10は、メモリセル11からバッファメモリ12に加重値データW_Dataをラッチするときから、MAC演算器13の動作が終了するときまでビジー(busy)状態を維持し得る。すなわち、不揮発性メモリ10の内部動作が行われる間、ビジー状態信号(RnBX)は論理ローレベル(0)であり得る。
いくつかの実施形態によれば、入力データI_Dataと加重値データW_Dataのコンボリューション演算は乗算と加算の組み合わせであり得る。例えば、前述した数学式1を参照すると、第1出力データ(S)は、第1入力データ(X)と第1加重値データ(W)の積、第2入力データ(X)と第2加重値データ(W)の積、第6入力データ(X)と第3加重値データ(W)の積および第7入力データ(X)と第4加重値データ(W)の積をすべて合計した結果と同じである。入力データI_Dataと加重値データW_Dataの効果的な乗算過程を説明するために、図10~図12を参照する。
図10~図12はいくつかの実施形態による入力データと加重値データの乗算を説明するための例示的な図である。図10~図12は説明の便宜上、第1入力データ(X)と第1加重値データ(W)の乗算を例にあげて説明するが、実施形態はこれに制限されない。また、説明の便宜上、第1入力データ(X)は、3ビットデータであり、第1加重値データ(W)も3ビットデータであると仮定して説明するが、実施形態はこれに制限されるものではない。図10~図12において、第1加重値データ(W)は、MSB(Most Significant Bit)がwbであり、2番目ビットがwbであり、LSB(Least Significant Bit)がwbであるデータであると定義する。また、第1入力データ(X)は、MSBがxbであり、2番目ビットがxbであり、LSBがxbであるデータであると定義する。
図9~図12を参照すると、MAC演算器13は、第1乗算器(Multiplier)M_1、第1累算器(Accumulator)AC_1、第2累算器AC_2、第3累算器AC_3、第4累算器AC_4および第5累算器AC_5を含み得る。
MAC演算器13は、第1サブ区間SP1の間に第1加重値データ(W)の提供を受け、第3サブ区間SP3の間に第1入力データ(X)の提供を受ける。いくつかの実施形態によれば、第1サブ区間SP1の間に、第1加重値データ(W)のすべてのビットが第1乗算器M_1に同時に提供されてラッチされ得る。すなわち、第1加重値データ(W)は、第1乗算器M_1の被乗数(multiplicand)であり得る。例えば、第1サブ区間SP1の間に、wb、wbおよびwbが第1乗算器M_1に同時に提供されてラッチされる。これに対し、第3サブ区間SP3の間に、第1入力データ(X)は、第1乗算器M_1に順次提供される。すなわち、第1入力データ(X)は、第1乗算器M_1の乗数(multiplier)であり得る。例えば、第3サブ区間SP3の間に、xb、xbおよびxbが順次提供され得る。
先に、第1乗算器M_1にxbが提供される。この時、第1乗算器M_1はwbxb、wbxb、wbxbを演算する。wbxb、wbxb、wbxbの演算は、第1乗算器M_1で並列的に行われる。第1乗算器M_1は、wbxbを第1累算器AC_1に提供し、wbxbを第2累算器AC_2に提供し、wbxbを第3累算器AC_3に提供する。
次に、第1乗算器M_1にxbが提供される。この時、第1乗算器M_1はwbxb、wbxb、wbxbを演算する。wbxb、wbxb、wbxbの演算は第1乗算器M_1で並列的に行われる。第1乗算器M_1はwbxbを第2累算器AC_2に提供し、wbxbを第3累算器AC_3に提供し、wbxbを第4累算器AC_4に提供する。
次に、第1乗算器M_1にxbが提供される。この時、第1乗算器M_1はwbxb、wbxb、wbxbを演算する。wbxb、wbxb、wbxbの演算は、1乗算器M_1で並列的に行われる。第1乗算器M_1はwbxbを第3累算器AC_3に提供し、wbxbを第4累算器AC_4に提供し、wbxbを第5累算器AC_5に提供する。
いくつかの実施形態によれば、第1累算器AC_1~第5累算器AC_5の出力それぞれは、第1加重値データ(W)と第1入力データ(X)の積(W)の各桁に該当するビットであり得る。いくつかの実施形態によれば、第1累算器AC_1の出力は、第1加重値データ(W)と第1入力データ(X)の積(W)のLSBであり、第5累算器AC_5の出力は、第1加重値データ(W)と第1入力データ(X)の積(W)のMSBであり得る。いくつかの実施形態によるMAC演算器13は、簡単で効果的な方法により加重値データW_Dataと入力データI_Dataの乗算を行い得る。
図10~図12は第1乗算器M_1を一つの構成要素として示すが、実施形態はこれに制限されるものではない。本発明の技術分野における通常の知識を有する者は、複数の乗算器を用いて過度な実験なしに本発明の実施形態を実現することができる。
図13はいくつかの実施形態による不揮発性メモリを説明するための例示的なブロック図である。説明の便宜上、重複または類似の内容は省略または簡単に説明する。
図13を参照すると、不揮発性メモリ10は保存領域10_Sにはメモリセル11が配置される。また、不揮発性メモリ10の周辺領域10_Pにはバッファメモリ12、MAC演算器13、結果出力パッド(Result Output PAD)16および入出力パッド15が配置される。すなわち、いくつかの実施形態による不揮発性メモリ10は、図3を用いて説明した不揮発性メモリ10において、結果出力バッファ14の代わりに結果出力パッド16をさらに含む不揮発性メモリ10であり得る。
MAC演算器13は、加重値データW_Dataと入力データI_Dataをコンボリューション演算し、結果データR_Dataを生成する。MAC演算器13で生成された結果データR_Dataは結果出力パッド16に提供される。前述したように、結果データR_Dataは、加重値データW_Dataと入力データI_Dataのコンボリューション演算の中間結果データであり得る。例えば、結果データR_Dataは、第1出力データ(S)~第12出力データ(S11)それぞれであり得る。他の例として、結果データR_Dataは、第1加重値データ(W)と第1入力データ(X)の積(W)~第4加重値データ(W)と第20入力データ(X19)の積(W19)それぞれであり得る。
結果出力パッド16に提供された結果データR_Dataは、出力データO_Dataとして不揮発性メモリ10の外部に提供される。いくつかの実施形態によれば、出力データO_Dataは、結果データR_Dataと同じデータであり得る。
いくつかの実施形態によれば、結果出力パッド16は、入力データI_Dataの提供を受ける入出力パッド15とは別に構成される。したがって、入力データI_Dataが入出力パッド15を介してMAC演算器13に提供される間に、出力データO_Dataが結果出力パッド16を介して不揮発性メモリ10の外部に提供される。例示的説明のために図14を参照する。
図14はいくつかの実施形態によるデータが入力/出力されるタイミングを説明するための例示的な図である。説明の便宜上、重複または類似の内容は省略または簡単に説明する。
図13および図14を参照すると、第1区間P1の間に、バッファメモリ12は加重値データW_Dataをラッチする。すなわち、不揮発性メモリ10のメモリセル11に保存された加重値データW_Dataが第1区間P1の間にバッファメモリ12に提供され得る。
第2区間P2の間に、バッファメモリ12はラッチされた加重値データW_DataをMAC演算器13に提供する。
第3区間P3の間に、入出力パッド15は入力データI_DataをMAC演算器13に提供する。いくつかの実施形態によれば、第2区間P2と第3区間P3はオーバーラップする。すなわち、MAC演算器13は加重値データW_Dataと入力データI_Dataの提供を同時に受け得る。いくつかの実施形態で、第1区間P1は第3区間P3より先に行い得る。
第4区間P4の間に、MAC演算器13は入力データI_Dataと加重値データW_Dataのコンボリューション演算を行う。いくつかの実施形態によれば、第4区間P4と第2区間P2はオーバーラップする。また、いくつかの実施形態によれば、第4区間P4と第3区間P3はオーバーラップする。すなわち、MAC演算器13は入力データI_Dataと加重値データW_Dataの提供を受けるのと同時に、入力データI_Dataと加重値データW_Dataのコンボリューション演算を行い得る。
第5区間P5の間に、MAC演算器13は結果データR_Dataを結果出力パッド16に提供する。結果データR_Dataの提供を受けた結果出力パッド16はこれを出力データO_Dataとして不揮発性メモリ10の外部に提供する。いくつかの実施形態によれば、第5区間P5は第2区間P2と少なくとも一部オーバーラップする。また、第5区間P5は第3区間P3と少なくとも一部オーバーラップする。また、第5区間P5は第4区間P4と少なくとも一部オーバーラップする。すなわち、MAC演算器13は少なくとも一部の区間において、入出力パッド15を介して入力データI_Dataの提供を受けるのと同時に、結果出力パッド16を介して出力データO_Dataを不揮発性メモリ10の外部に提供し得る。例えば、出力データO_Dataは、第1出力データ(S)~第12出力データ(S11)それぞれ、または第1加重値データ(W)と第1入力データ(X)の積(W)~第4加重値データ(W)と第20入力データ(X19)の積(W19)それぞれであり得る。
以上、添付した図面を参照して本発明の実施形態を説明したが、本発明は前記実施形態に限定されるものではなく、互いに異なる多様な形態で製造され、本発明が属する技術分野における通常の知識を有する者は本発明の技術的思想や必須の特徴を変更せず他の具体的な形態で実施できることを理解することができる。したがって、以上で記述した実施形態はすべての面で例示的なものであり、限定的なものではないと理解しなければならない。
10 不揮発性メモリ
11 メモリセル
12 バッファメモリ
13 MAC演算器
14 結果出力バッファ
15 入出力パッド
16 結果出力パッド
20 メモリコントローラ
100 メモリ装置
300 プロセッサ
1000 コンピューティング装置

Claims (18)

  1. 加重値データが保存されるメモリセルと、
    前記メモリセルから前記加重値データをリードするバッファメモリと、
    入力データの提供を受ける入出力パッドと、
    前記バッファメモリから前記加重値データの提供を受け、前記入出力パッドから前記入力データの提供を受け、前記加重値データと前記入力データのコンボリューション演算を行う乗累算(MAC演算器とを含み、
    前記入力データは、前記入力データの第2入力ビットを前記MAC演算器に提供する前に前記入力データの第1入力ビットを前記MAC演算器に提供することによって、第1区間の間に前記MAC演算器に順次提供され、
    前記MAC演算器は、前記入力データの前記第1入力ビットに対する乗算を行ってから前記入力データの前記第2入力ビットを前記MAC演算器に提供することによって、前記第1区間とオーバーラップする第2区間の間に前記加重値データと前記入力データの前記コンボリューション演算を行
    前記加重値データは、第1および第2加重値ビットを含み、
    前記MAC演算器は、第1乗算器および第1累算器~第3累算器を含み、
    前記MAC演算器が前記コンボリューション演算を行うことは、前記第1乗算器が前記加重値データと前記入力データの乗算を行うことを含み、
    前記第1乗算器が前記加重値データと前記入力データの前記乗算を行うことは、前記第1乗算器が、
    前記第1加重値ビットと前記第1入力ビットとの第1の積を計算して該第1の積を前記第1累算器に提供し、
    前記第2加重値ビットと前記第1入力ビットとの第2の積を計算して該第2の積を前記第2累算器に提供し、
    前記第1加重値ビットと前記第2入力ビットとの第3の積を計算して該第3の積を前記第2累算器に提供し、
    前記第2加重値ビットと前記第2入力ビットとの第4の積を計算して該第4の積を前記第3累算器に提供することを含む、
    メモリ装置。
  2. 前記加重値データは、前記第1区間とオーバーラップする第3区間の間に前記MAC演算器に提供される、請求項1に記載のメモリ装置。
  3. 前記MAC演算器に前記入力データが順次提供される前に、前記バッファメモリは前記メモリセルから前記加重値データをリードする、請求項1に記載のメモリ装置。
  4. 記第1および第2入力ビットは、それぞれ第1および第2サブ区間の間に前記MAC演算器に提供され、
    前記第1および第2加重値ビットは、それぞれ第3および第4サブ区間の間に前記MAC演算器に提供され、
    前記第1サブ区間は、前記第3サブ区間とオーバーラップし、前記第2サブ区間は、前記第4サブ区間とオーバーラップする、請求項1に記載のメモリ装置。
  5. 前記第1累算器の出力は、前記加重値データと前記入力データのLSB(Least Significant Bit)である、請求項に記載のメモリ装置。
  6. 前記第2累算器は、前記第2の積と前記第3の積との和を出力する、請求項に記載のメモリ装置。
  7. 前記加重値データと前記入力データのコンボリューション演算結果が保存される、結果出力バッファをさらに含む、請求項1に記載のメモリ装置。
  8. 前記結果出力バッファに保存された前記コンボリューション演算結果は、前記入出力パッドを介して出力される、請求項に記載のメモリ装置。
  9. 前記加重値データと前記入力データのコンボリューション演算結果が出力される、前記入出力パッドと異なる結果出力パッドをさらに含む、請求項1に記載のメモリ装置。
  10. 前記MAC演算器は、前記第2区間とオーバーラップする第4区間の間に、前記コンボリューション演算結果を前記結果出力パッドに提供する、請求項に記載のメモリ装置。
  11. 第1および第2加重値ビットを含む加重値データが保存されるバッファメモリと、
    第1および第2入力ビットを含む入力データを受信する入出力パッドと、
    第1乗算器および第1累算器~第3累算器を含む乗累算(MAC)演算器であり、前記加重値データと前記第1および第2入力ビットの提供を受け、前記加重値データと前記入力データのコンボリューション演算を行うMAC演算器とを含み、
    前記MAC演算器が前記加重値データと前記入力データの前記コンボリューション演算を行うことは、
    前記第1入力ビットを前記第1乗算器に提供し、
    前記第1乗算器を用いて前記第1加重値ビットと前記第1入力ビットとの第1の積を計算して、該第1の積を前記第1累算器に提供し、
    前記第1乗算器を用いて前記第2加重値ビットと前記第1入力ビットとの第2の積を計算して、該第2の積を前記第2累算器に提供し、
    前記第1の積および前記第2の積を計算した後に、前記第2入力ビットを前記第1乗算器に提供し、
    前記第1乗算器を用いて前記第1加重値ビットと前記第2入力ビットとの第3の積を計算して、該第3の積を前記第2累算器に提供し、
    前記第1乗算器を用いて前記第2加重値ビットと前記第2入力ビットとの第4の積を計算して、該第4の積を前記第3累算器に提供し、
    前記第1の積、前記第2の積、前記第3の積、および前記第4の積に基づいて、前記加重値データと前記入力データとの積を生成することを含む、
    メモリ装置。
  12. 前記第1加重値ビットと前記第1入力ビットの乗算と前記第2加重値ビットと前記第1入力ビットの乗算は、並列に行われ、
    前記第1加重値ビットと前記第2入力ビットの乗算と前記第2加重値ビットと前記第2入力ビットの乗算は、並列に行われる、請求項11に記載のメモリ装置。
  13. 前記MAC演算器が前記コンボリューション演算を行うことは、前記MAC演算器が前記加重値データと前記入力データの乗算を行うことを含み、
    前記第1累算器の出力は、前記乗算のLSB(Least Significant Bit)である、請求項11に記載のメモリ装置。
  14. 前記入力データは、第1区間の間に前記MAC演算器に提供され、
    前記MAC演算器は、前記第1区間とオーバーラップする第2区間の間に前記コンボリューション演算を行う、請求項11に記載のメモリ装置。
  15. 前記入力データは、第1区間の間に前記MAC演算器に提供され、
    前記加重値データは、前記第1区間とオーバーラップする第3区間の間に前記MAC演算器に提供される、請求項11に記載のメモリ装置。
  16. 前記加重値データが保存されるメモリセルをさらに含み、
    前記加重値データは、前記メモリセルからリードされて前記バッファメモリに保存される、請求項11に記載のメモリ装置。
  17. 前記MAC演算器が前記入力データの提供を受ける前に、前記メモリセルから前記バッファメモリに前記加重値データがリードされる、請求項16に記載のメモリ装置。
  18. 加重値データが保存されるメモリセルと、
    前記メモリセルから前記加重値データをリードするバッファメモリと、
    入力データの提供を受ける入出力パッドと、
    前記加重値データと前記入力データのコンボリューション演算を行う乗累算(MAC演算器を含み、
    前記入力データが前記入出力パッドに提供される前に、前記バッファメモリは前記メモリセルから前記加重値データをリードし、
    前記入力データは、第1区間の間に前記入出力パッドから前記MAC演算器に提供され、
    前記加重値データは、第1および第2加重値ビットを含み、且つ前記第1区間とオーバーラップする第2区間の間に前記バッファメモリから前記MAC演算器に提供され、
    前記MAC演算器は、第1乗算器および第1累算器~第3累算器を含み、
    前記コンボリューション演算を行うことは、前記入力データの第2入力ビットを前記MAC演算器に提供する前に、前記第1乗算器が前記加重値データと前記入力データの第1入力ビットに対して乗算を行うことを含み、
    前記第1乗算器が前記加重値データと前記入力データの前記乗算を行うことは、前記第1乗算器が、
    前記第1加重値ビットと前記第1入力ビットとの第1の積を計算して該第1の積を前記第1累算器に提供し、
    前記第2加重値ビットと前記第1入力ビットとの第2の積を計算して該第2の積を前記第2累算器に提供し、
    前記第1加重値ビットと前記第2入力ビットとの第3の積を計算して該第3の積を前記第2累算器に提供し、
    前記第2加重値ビットと前記第2入力ビットとの第4の積を計算して該第4の積を前記第3累算器に提供することを含む、
    メモリ装置。
JP2020013512A 2019-02-08 2020-01-30 メモリ装置およびそれを用いたコンピューティング装置 Active JP7482636B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190014683A KR20200097396A (ko) 2019-02-08 2019-02-08 메모리 장치 및 이를 이용한 컴퓨팅 장치
KR10-2019-0014683 2019-02-08

Publications (3)

Publication Number Publication Date
JP2020129373A JP2020129373A (ja) 2020-08-27
JP2020129373A5 JP2020129373A5 (ja) 2023-01-23
JP7482636B2 true JP7482636B2 (ja) 2024-05-14

Family

ID=71946031

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020013512A Active JP7482636B2 (ja) 2019-02-08 2020-01-30 メモリ装置およびそれを用いたコンピューティング装置

Country Status (4)

Country Link
US (1) US11307826B2 (ja)
JP (1) JP7482636B2 (ja)
KR (1) KR20200097396A (ja)
CN (1) CN111553472A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111382094B (zh) * 2018-12-29 2021-11-30 深圳云天励飞技术有限公司 一种数据处理方法及装置
US11347477B2 (en) * 2019-09-27 2022-05-31 Intel Corporation Compute in/near memory (CIM) circuit architecture for unified matrix-matrix and matrix-vector computations
KR20210083428A (ko) 2019-12-26 2021-07-07 삼성전자주식회사 메모리 장치, 및 이를 포함하는 전자 기기
CN113570034B (zh) * 2021-06-18 2022-09-27 北京百度网讯科技有限公司 处理装置、神经网络的处理方法及其装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110239032A1 (en) 2008-12-04 2011-09-29 Canon Kabushiki Kaisha Convolution operation circuit and object recognition apparatus
US20170278559A1 (en) 2016-03-28 2017-09-28 Micron Technology, Inc. Apparatuses and methods for data movement

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3670956A (en) 1968-09-26 1972-06-20 Hughes Aircraft Co Digital binary multiplier employing sum of cross products technique
US5546343A (en) 1990-10-18 1996-08-13 Elliott; Duncan G. Method and apparatus for a single instruction operating multiple processors on a memory chip
JP3765337B2 (ja) 1996-10-25 2006-04-12 株式会社東芝 Macのバンクレジスタ回路
JPH11143786A (ja) 1997-11-13 1999-05-28 Hitachi Ltd ディスクアレイサブシステム用ディスク装置
JP3333779B2 (ja) 2001-12-26 2002-10-15 松下電器産業株式会社 行列演算装置
AU2003221680A1 (en) * 2002-04-09 2003-10-27 The Research Foundation Of State University Of New York Multiplier-based processor-in-memory architectures for image and graphics processing
US7043518B2 (en) 2003-07-31 2006-05-09 Cradle Technologies, Inc. Method and system for performing parallel integer multiply accumulate operations on packed data
US9582465B2 (en) * 2012-11-15 2017-02-28 Elwha Llc Flexible processors and flexible memory
KR102249172B1 (ko) 2014-09-19 2021-05-11 삼성전자주식회사 불 휘발성 메모리 장치
EP3268969B1 (en) * 2015-04-16 2019-06-05 Hewlett-Packard Enterprise Development LP Resistive memory arrays for performing multiply-accumulate operations
KR102634421B1 (ko) 2016-11-21 2024-02-06 에스케이하이닉스 주식회사 페일 비트 카운터 및 이를 포함하는 반도체 메모리 장치
KR101939359B1 (ko) 2017-02-01 2019-01-16 고려대학교 산학협력단 내부 연산 구조를 포함하는 mtj 메모리 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110239032A1 (en) 2008-12-04 2011-09-29 Canon Kabushiki Kaisha Convolution operation circuit and object recognition apparatus
US20170278559A1 (en) 2016-03-28 2017-09-28 Micron Technology, Inc. Apparatuses and methods for data movement

Also Published As

Publication number Publication date
US11307826B2 (en) 2022-04-19
US20200257500A1 (en) 2020-08-13
CN111553472A (zh) 2020-08-18
KR20200097396A (ko) 2020-08-19
JP2020129373A (ja) 2020-08-27

Similar Documents

Publication Publication Date Title
JP7482636B2 (ja) メモリ装置およびそれを用いたコンピューティング装置
CN109213962B (zh) 运算加速器
US11604850B2 (en) In-memory full adder
US20190188237A1 (en) Method and electronic device for convolution calculation in neutral network
US6539368B1 (en) Neural processor, saturation unit, calculation unit and adder circuit
EP4025997A1 (en) Methods for performing processing-in-memory operations on serially allocated data, and related memory devices and systems
CN110597484B (zh) 基于存内计算的多比特全加器、多比特全加运算控制方法
WO2019205617A1 (zh) 一种矩阵乘法的计算方法及装置
WO2010141222A1 (en) Parallel processing and internal processors
CN114341802A (zh) 用于执行存储器内处理操作的方法及相关存储器装置和系统
US11474785B2 (en) Memory device and computing device using the same
CN117312330B (zh) 基于便签式存储的向量数据聚集方法、装置及计算机设备
US10942889B2 (en) Bit string accumulation in memory array periphery
Islam et al. A New Hardware-Efficient VLSI-Architecture of GoogLeNet CNN-Model Based Hardware Accelerator for Edge Computing Applications
WO2022007597A1 (zh) 矩阵运算的方法和加速器
CN116400884A (zh) 乘加器的控制方法、装置、计算机设备和存储介质
CN111931937B (zh) 图像处理模型的梯度更新方法、装置及系统
US11487699B2 (en) Processing of universal number bit strings accumulated in memory array periphery
US10942890B2 (en) Bit string accumulation in memory array periphery
CN112748876A (zh) 存储装置、存储控制器和操作神经处理器的方法
US11941371B2 (en) Bit string accumulation
US20230376273A1 (en) Booth multiplier for compute-in-memory
TW202405701A (zh) 用於人工智慧加速器的可重組態處理元件及其操作方法
CN114490041A (zh) 数组计算方法、装置、设备、介质和计算机程序产品
TW202414200A (zh) 減少硬體加速器中之記憶體庫衝突

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230113

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230113

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240402

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240430

R150 Certificate of patent or registration of utility model

Ref document number: 7482636

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150