(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-02
(45)【発行日】2024-05-14
(54)【発明の名称】メモリ装置およびそれを用いたコンピューティング装置
(51)【国際特許分類】
G06F 17/10 20060101AFI20240507BHJP
G06F 17/16 20060101ALI20240507BHJP
G06N 3/063 20230101ALI20240507BHJP
【FI】
G06F17/10 A
G06F17/16 B
G06N3/063
(21)【出願番号】P 2020013512
(22)【出願日】2020-01-30
【審査請求日】2023-01-13
(31)【優先権主張番号】10-2019-0014683
(32)【優先日】2019-02-08
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】金 佳▲らむ▼
【審査官】坂東 博司
(56)【参考文献】
【文献】米国特許出願公開第2017/0278559(US,A1)
【文献】米国特許出願公開第2011/0239032(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/10
G06F 17/16
G06N 3/063
(57)【特許請求の範囲】
【請求項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)である、請求項
1に記載のメモリ装置。
【請求項6】
前記第2累算器は、
前記第2の積と前記第3の積との和を出力する、請求項
1に記載のメモリ装置。
【請求項7】
前記加重値データと前記入力データのコンボリューション演算結果が保存される、結果出力バッファをさらに含む、請求項1に記載のメモリ装置。
【請求項8】
前記結果出力バッファに保存された前記コンボリューション演算結果は、前記入出力パッドを介して出力される、請求項
7に記載のメモリ装置。
【請求項9】
前記加重値データと前記入力データのコンボリューション演算結果が出力される、前記入出力パッドと異なる結果出力パッドをさらに含む、請求項1に記載のメモリ装置。
【請求項10】
前記MAC演算器は、前記第2区間とオーバーラップする第4区間の間に、前記コンボリューション演算結果を前記結果出力パッドに提供する、請求項
9に記載のメモリ装置。
【請求項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累算器に提供することを含む、
メモリ装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリ装置およびそれを用いたコンピューティング装置に関する。
【背景技術】
【0002】
ニューラルネットワーク(neural network)の基本的なアルゴリズムは、入力マトリックスとコンボリューションフィルタの演算により出力マトリックスを導き出すことである。具体的には、入力マトリックスとコンボリューションフィルタをコンボリューション演算により出力マトリックスを決めることができる。
【0003】
コンボリューション演算は、数多くの乗算と加算の組み合わせからなっており、最近ニューラルネットワークの爆発的な成長により、高帯域/低遅延のニューラルネットワークエンジンが求められる。これにより、コンボリューションフィルタの大きさが増加し、コンボリューションフィルタに含まれた加重値データの量が幾何級数的に増加している。また、入力マトリックスに含まれた入力データの量も同様に幾何級数的に増加し、出力マトリックスを生成するために非常に多量の乗算と加算が行われることが求められる。
【0004】
現在のシステムで増加した要求事項を満足させるためには多くの時間が必要とされ、その活用度が低い。したがって、高帯域を維持し、かつ低遅延を満足するニューラルネットワークエンジンの開発が必要である。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明が解決しようとする技術的課題は、メモリ装置内でコンボリューション演算が行われ、簡単で効果的な演算を行うメモリ装置およびそれを用いたコンピューティング装置を提供することにある。
【0006】
本発明が解決しようとする他の技術的課題は、メモリ装置内でコンボリューション演算が行われ、低遅延を満足するメモリ装置およびそれを用いたコンピューティング装置を提供することにある。
【0007】
本発明が解決しようとするまた他の技術的課題は、入力データと出力データが同時にIn/OutされるMAC(乗累算)演算器を含むメモリ装置、およびそれを用いたコンピューティング装置を提供することにある。
【0008】
本発明の技術的課題は、以上で言及した技術的課題に制限されず、言及されていないまた他の技術的課題は、以下の記載から当業者に明確に理解されるであろう。
【課題を解決するための手段】
【0009】
前記技術的課題を達成するための本発明のいくつかの実施形態によるメモリ装置は、加重値データが保存されるメモリセル、メモリセルから加重値データをリードするバッファメモリ、入力データの提供を受ける入出力パッド、およびバッファメモリから加重値データの提供を受け、入出力パッドから入力データの提供を受けて加重値データと入力データのコンボリューション(Convolution)演算を行うMAC演算器を含み、入力データは第1区間の間にMAC演算器に提供され、MAC演算器は第1区間とオーバーラップする第2区間の間に加重値データと入力データのコンボリューション演算を行う。
【0010】
前記技術的課題を達成するための本発明のいくつかの実施形態によるメモリ装置は、第1および第2加重値ビットを含む加重値データが保存されるバッファメモリ、第1および第2入力ビットを含む入力データを受信する入出力パッド、および第1累算器~第3累算器を含み、加重値データと入力データの提供を受けて加重値データと入力データのコンボリューション(Convolution)演算を行うMAC演算器を含み、MAC演算器が加重値データと入力データのコンボリューション演算を行うことは、第1加重値ビットと第1入力ビットを乗算して第1累算器に提供し、第2加重値ビットと第1入力ビットを乗算して第2累算器に提供し、第1加重値ビットと第2入力ビットを乗算して第2累算器に提供し、第2加重値ビットと第2入力ビットを乗算して第3累算器に提供することを含む。
【0011】
前記技術的課題を達成するための本発明のいくつかの実施形態によるメモリ装置は、加重値データが保存されるメモリセル、メモリセルから加重値データをリードするバッファメモリ、入力データの提供を受ける入出力パッド、および加重値データと入力データのコンボリューション(Convolution)演算を行うMAC演算器を含み、入力データが入出力パッドに提供される前に、バッファメモリはメモリセルから加重値データをリードし、入力データは第1区間の間に入出力パッドからMAC演算器に提供され、加重値データは第1区間とオーバーラップする第2区間の間にバッファメモリからMAC演算器に提供される。
【0012】
前記技術的課題を達成するための本発明のいくつかの実施形態によるコンピューティング装置は、MAC演算器を含み、加重値データが保存されるメモリ装置、およびメモリ装置に入力データを提供するプロセッサを含み、MAC演算器は、入力データと加重値データの提供を受け、入力データと加重値データのコンボリューション演算を行い、入力データがMAC演算器に提供される第1区間と、加重値データがMAC演算器に提供される第2区間はオーバーラップする。
【0013】
その他実施形態の具体的な事項は詳細な説明および図面に含まれている。
【図面の簡単な説明】
【0014】
【
図1】コンボリューション演算を説明するための例示的な図である。
【
図2】いくつかの実施形態によるコンピューティング装置を説明するための例示的なブロック図である。
【
図3】いくつかの実施形態による不揮発性メモリを説明するための例示的なブロック図である。
【
図4】いくつかの実施形態によるコンピューティング装置の動作を説明するための例示的な図である。
【
図5】いくつかの実施形態による加重値データがメモリセルからバッファメモリに提供される動作を説明するための例示的な図である。
【
図6】いくつかの実施形態による入力データと加重値データがMAC演算器に提供される動作を説明するための例示的な図である。
【
図7】いくつかの実施形態によるMAC演算器の演算結果が出力データとして提供される動作を説明するための例示的な図である。
【
図8】いくつかの実施形態によるデータが入力/出力されるタイミングを説明するための例示的な図である。
【
図9】いくつかの実施形態によるMAC演算器が入力データと加重値データを受信する区間を説明するための例示的な図である。
【
図10】いくつかの実施形態による入力データと出力データの乗算を説明するための例示的な図である。
【
図11】いくつかの実施形態による入力データと出力データの乗算を説明するための例示的な図である。
【
図12】いくつかの実施形態による入力データと出力データの乗算を説明するための例示的な図である。
【
図13】いくつかの実施形態による不揮発性メモリを説明するための例示的なブロック図である。
【
図14】いくつかの実施形態によるデータが入力/出力されるタイミングを説明するための例示的な図である。
【発明を実施するための形態】
【0015】
図1はコンボリューション演算を説明するための例示的な図である。
図1を参照すると、出力マトリックス(3,output matrix)は、入力マトリックス(1,input matrix)とコンボリューションフィルタ(2,convolution filterまたはカーネル(kernel))をコンボリューション演算(convolution operation)して生成される。例えば、入力マトリックス1は第1入力データ(X
0)~第20入力データ(X
19)を含み得る。また、例えば、コンボリューションフィルタ2は、第1加重値データ(W
0)~第4加重値データ(W
3)を含み得る。また、例えば、出力マトリックス3は、第1出力データ(S
0)~第12出力データ(S
11)を含み得る。本発明のいくつかの実施形態がこのような用語に限定されるものではなく、本発明の技術分野における通常の知識を有する者は以下で説明しようとする内容を明確に理解できるであろう。また、説明の便宜上、
図1は入力マトリックス1が4×5のマトリックスを構成し、コンボリューションフィルタ2が2×2のマトリックスを構成し、出力マトリックス3が3×4のマトリックスを構成する場合を説明するが、これは説明の便宜のためのものであり、実施形態はこれに制限されるものではない。入力マトリックス1およびコンボリューションフィルタ2は、さらに多いか少ないデータを含み得、出力マトリックス3は、入力マトリックス1とコンボリューションフィルタ2の構成によって決定され得る。
【0016】
出力マトリックス3は、入力データI_Dataと加重値データW_Dataの乗算と加算によって決定され得る。すなわち、コンボリューション演算は乗算と加算の組み合わせであり得る。例えば、第1出力データ(S0)および第2出力データ(S1)は、下記数学式1および数学式2により決定される。
(数学式1)
S0=X0W0+X1W1+X5W2+X6W3
(数学式2)
S1=X1W0+X2W1+X6W2+X7W3
数学式1に説明したように、第1出力データ(S0)は、第1入力データ(X0)と第1加重値データ(W0)の積、第2入力データ(X1)と第2加重値データ(W1)の積、第6入力データ(X5)と第3加重値データ(W2)の積および第7入力データ(X6)と第4加重値データ(W3)の積をすべて合計して決定される。同様に、数学式2に説明したように、第2出力データ(S1)は、第2入力データ(X1)と第1加重値データ(W0)の積、第3入力データ(X2)と第2加重値データ(W1)の積、第7入力データ(X6)と第3加重値データ(W2)の積および第8入力データ(X7)と第4加重値データ(W3)の積をすべて合計して決定される。
【0017】
これと同様に、第1入力データ(X0)~第20入力データ(X19)と第1加重値データ(W0)~第4加重値データ(W3)に対して、乗算および加算を行って、第3出力データ(S2)~第12出力データ(S11)を決定する。以下では、出力マトリックス3を生成するコンピューティング装置(Computing Device)1000、すなわち入力データI_Dataと加重値データW_Dataのコンボリューション演算を行うコンピューティング装置1000について説明する。
【0018】
図2はいくつかの実施形態によるコンピューティング装置を説明するための例示的なブロック図である。
図2を参照すると、いくつかの実施形態によるコンピューティング装置1000は、インターフェース(I/F)200、プロセッサ(Processor)300、キャッシュメモリ400(Cache)およびメモリ装置100を含み得る。
【0019】
いくつかの実施形態によるコンピューティング装置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を用いることができる。
【0020】
インターフェース200は、コンピューティング装置1000へのデータの入力または出力に用いられる。例えば、
図1で説明した第1入力データ(X
0)~第20入力データ(X
19)は、インターフェース200を介してコンピューティング装置1000に提供されるが、実施形態はこれに限定されるものではない。例えば、第1入力データ(X
0)~第20入力データ(X
19)は、コンピューティング装置1000内に含まれた特定の構成要素によって生成されることもできる。
【0021】
プロセッサ300は、コンピューティング装置1000を制御するためのプログラムコードを実行する。いくつかの実施形態によるプロセッサ300は、CPU(Central Processing Unit)、GPU(Graphic Processing Unit)、AP(Application Processor)およびMPU(Micro Processor Unit)等を含み得るが、実施形態はこれに制限されるものではない。
【0022】
キャッシュメモリ400は、データに高速でアクセス(access)できるように未来の要請に備えてデータを一時的に保存できるメモリであり得る。キャッシュメモリ400に保存されたデータは以前行った演算の結果であり得る。キャッシュメモリ400は、スタティックランダムアクセスメモリ(SRAM:Static Random Access Memory)、高速SRAM(Fast-SRAM)、および/またはダイナミックランダムアクセスメモリ(DRAM:Dynamic RAM)等で実現されるが、実施形態はこれに制限されるものではない。また、
図1はキャッシュメモリ400がプロセッサ300と分離した場合を図示するが、実施形態はこれに制限されるものではない。例えば、キャッシュメモリ400は、プロセッサ300内部のTCM(Tightly Coupled Memory)であり得る。
【0023】
メモリ装置100は、不揮発性メモリ(Nonvolatile Memory)10およびメモリコントローラ(Memory Controller)20を含み得る。メモリコントローラ20は、プロセッサ300からの要請に応答して不揮発性メモリ10に保存されたデータをリード(read)またはイレーズ(erase)するか、不揮発性メモリ10にデータをライト(Write)し得る。また、いくつかの実施形態によれば、メモリコントローラ20は、MAC(乗累算)コマンド(MAC CMD)を受信して不揮発性メモリ10がコンボリューション演算を行うように制御することができる。
【0024】
不揮発性メモリ10は、データを非一時的に保存し得る。例えば、不揮発性メモリ10は、第1加重値データ(W0)~第4加重値データ(W3)を保存し得る。いくつかの実施形態による不揮発性メモリ10は、メモリコントローラ20の要請に応じてコンボリューション演算を行い得る。
【0025】
不揮発性メモリ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)等を含み得る。
【0026】
図面に示していないが、メモリコントローラ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を参照する。
【0027】
図3はいくつかの実施形態による不揮発性メモリを説明するための例示的なブロック図である。
図3を参照すると、不揮発性メモリ10は保存領域(Storage Region)10_Sと周辺領域(Peripheral Region)10_Pを含み得る。いくつかの実施形態によれば、保存領域10_Sには複数のメモリセル(Memory Cell)11が配置される。メモリセル11それぞれはデータを保存する。例えば、メモリセル11は、第1加重値データ(W
0)~第4加重値データ(W
3)を保存する。説明の便宜上、メモリセル11が配置される保存領域10_S以外の他の領域を周辺領域10_Pと定義する。
【0028】
いくつかの実施形態によれば、不揮発性メモリ10の周辺領域10_Pにはバッファメモリ(Buffer Memory)12、MAC(乗累算)演算器(13,MAC operator:Multiply and Accumulate operator)、結果出力バッファ(Result Output Buffer)14および入出力パッド15(I/O PAD)が配置される。
【0029】
バッファメモリ12と入出力パッド15は、それぞれMAC演算器13にデータを提供する。例えば、バッファメモリ12はMAC演算器13に加重値データW_Dataを提供し、入出力パッド15はMAC演算器13に入力データI_Dataを提供し得る。
【0030】
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出力データ(S0)~第12出力データ(S11)それぞれであり得る。他の例として、結果データR_Dataは、第1加重値データ(W0)と第1入力データ(X0)の積(W0X0)~第4加重値データ(W3)と第20入力データ(X19)の積(W3X19)それぞれであり得る。しかし、実施形態はこれに制限されず、本発明の技術分野における通常の知識を有する者は、加重値データW_Dataと入力データI_Dataのコンボリューション演算の中間結果を結果データR_Dataと設定することができる。
【0031】
結果出力バッファ14は、結果データR_Dataを保存する。例えば、第1出力データ(S0)~第12出力データ(S11)それぞれが結果出力バッファ14に一時的に保存され得る。第1出力データ(S0)~第12出力データ(S11)が結果出力バッファ14にすべて保存されると、結果出力バッファ14は入出力パッド15に第1出力データ(S0)~第12出力データ(S11)を提供する。
【0032】
入出力パッド15は、不揮発性メモリ10の外部から入力データI_Dataを受信する。入出力パッド15は、受信した入力データI_DataをMAC演算器13に提供する。また、入出力パッド15は、結果出力バッファ14に保存されたデータを受信し、これを出力データO_Dataとして不揮発性メモリ10の外部に提供する。いくつかの実施形態において、出力データO_Dataは、加重値データW_Dataと入力データI_Dataのコンボリューション演算に対する中間結果または最終結果データであり得る。例えば、出力データO_Dataは、第1出力データ(S0)~第12出力データ(S11)であり得る。他の例として、出力データO_Dataは、第1加重値データ(W0)と第1入力データ(X0)の積(W0X0)~第4加重値データ(W3)と第20入力データ(X19)の積(W3X19)であり得る。
【0033】
図4はいくつかの実施形態によるコンピューティング装置の動作を説明するための例示的な図である。
図4を参照すると、プロセッサ300は、MAC演算に対する要請を受信する。プロセッサ300は、メモリコントローラ20に入力データI_Dataとともに、MACコマンド(MAC CMD)を提供する。
【0034】
メモリコントローラ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を参照する。
【0035】
図5はいくつかの実施形態による加重値データがメモリセルからバッファメモリに提供される動作を説明するための例示的な図である。
図6はいくつかの実施形態による入力データと加重値データがMAC演算器に提供される動作を説明するための例示的な図である。
図7はいくつかの実施形態によるMAC演算器の演算結果が出力データとして提供される動作を説明するための例示的な図である。
【0036】
図4および
図5を参照すると、加重値データW_Dataは、複数のメモリセル11のうち少なくとも一部に保存されている。加重値データW_Dataは、例えば、第1加重値データ(W
0)~第4加重値データ(W
3)を含み得る。メモリコントローラ20は、不揮発性メモリ10に加重値データW_Dataのリードコマンド(Read CMD)を提供し、メモリセル11に保存された加重値データW_Dataをバッファメモリ12に提供する。すなわち、メモリコントローラ20の命令に従い、加重値データW_Dataがメモリセル11からバッファメモリ12にラッチ(latch)される。
【0037】
すなわち、メモリコントローラ20は、MACコマンド(MAC CMD)に応答してまず加重値データW_Dataがメモリセル11からバッファメモリ12にリードされるように制御する。加重値データW_Dataのバッファメモリ12へのリードが完了すると、不揮発性メモリ10はメモリコントローラ20にリード完了応答を提供し得る。
【0038】
図4および
図6を参照すると、メモリコントローラ20はリード完了応答を受信する。メモリコントローラ20にリード完了応答が受信されると、メモリコントローラ20は、不揮発性メモリ10に入力データI_Dataを提供する。例えば、メモリコントローラ20は、入力データI_Dataを入出力パッド15に提供し得る。
【0039】
MAC演算器13は、入出力パッド15を介して入力データI_Dataの提供を受ける。例えば、MAC演算器13は、第1入力データ(X0)~第20入力データ(X19)を入出力パッド15を介して提供される。
【0040】
MAC演算器13が入力データI_Dataの提供を受ける間、バッファメモリ12にラッチされた加重値データW_DataもMAC演算器13に提供され得る。例えば、MAC演算器13が入出力パッド15を介して第1入力データ(X0)~第20入力データ(X19)の提供を受ける間、バッファメモリ12にラッチされた第1加重値データ(W0)~第4加重値データ(W3)もMAC演算器13に提供され得る。
【0041】
いくつかの実施形態によれば、加重値データW_Dataがメモリセル11からバッファメモリ12にリードされた後、MAC演算器13は、入力データI_Dataを入出力パッド15を介して提供を受け得る。例えば、MAC演算器13が第1入力データ(X0)~第20入力データ(X19)の提供を受ける前に、メモリセル11に保存された第1加重値データ(W0)~第4加重値データ(W3)はバッファメモリ12にリードされ得る。
【0042】
図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
0)~第12出力データ(S
11)それぞれであり得る。他の例として、結果データR_Dataは、第1加重値データ(W
0)と第1入力データ(X
0)の積(W
0X
0)~第4加重値データ(W
3)と第20入力データ(X
19)の積(W
3X
19)それぞれであり得る。いくつかの実施形態によれば、結果出力バッファ14に保存された結果データR_Dataは、入出力パッド15を介して出力データO_Dataとして不揮発性メモリ10の外部に提供され得る。
【0043】
図8はいくつかの実施形態によるデータが入力/出力されるタイミングを説明するための例示的な図である。
【0044】
図5~
図8を参照して、データが入力/出力されるタイミングについて説明する。
【0045】
第1区間P1の間にバッファメモリ12に加重値データW_Dataがラッチされ得る。すなわち、不揮発性メモリ10のメモリセル11に保存された加重値データW_Dataは、第1区間P1の間にバッファメモリ12に提供される。すなわち、バッファメモリ12は、第1区間P1の間にメモリセル11から加重値データW_Dataの提供を受け、これを保存する。
【0046】
第2区間P2の間に、バッファメモリ12はラッチされた加重値データW_DataをMAC演算器13に提供する。すなわち、MAC演算器13は、第2区間P2の間にバッファメモリ12から加重値データW_Dataの提供を受ける。
【0047】
第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にリードされ得る。
【0048】
いくつかの実施形態によれば、第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を受信する区間についてさらに具体的に説明する。
【0049】
図9はいくつかの実施形態によるMAC演算器が入力データと加重値データを受信する区間を説明するための例示的な図である。説明の便宜上、重複または類似の内容は省略または簡単に説明する。
【0050】
図8および
図9を参照すると、第2区間P2の間に、MAC演算器13はバッファメモリ12から加重値データW_Dataの提供を受ける。いくつかの実施形態によれば、第2区間P2は、第1サブ区間SP1および第2サブ区間SP2を含み得る。
【0051】
第1サブ区間SP1の間に、バッファメモリ12はMAC演算器13に第1加重値データ(W0)を提供する。すなわち、MAC演算器13は第1サブ区間SP1の間にバッファメモリ12から第1加重値データ(W0)の提供を受け得る。
【0052】
第2サブ区間SP2の間に、バッファメモリ12はMAC演算器13に第2加重値データ(W1)を提供する。すなわち、MAC演算器13は第2サブ区間SP2の間にバッファメモリ12から第2加重値データ(W1)の提供を受ける。いくつかの実施形態によれば、第2サブ区間SP2は、第1サブ区間SP1以後に配置されるが、実施形態はこれに制限されるものではない。
【0053】
第3区間P3の間に、MAC演算器13は入出力パッド15を介して入力データI_Dataの提供を受ける。いくつかの実施形態によれば、第3区間P3は第3サブ区間SP3および第4サブ区間SP4を含み得る。
【0054】
第3サブ区間SP3の間に、入出力パッド15はMAC演算器13に第1入力データ(X0)を提供する。すなわち、MAC演算器13は第3サブ区間SP3の間に、入出力パッド15を介して第1入力データ(X0)の提供を受け得る。
【0055】
第4サブ区間SP4の間に、入出力パッド15はMAC演算器13に第2入力データ(X1)を提供する。すなわち、MAC演算器13は第4サブ区間SP4の間に、入出力パッド15を介して第2入力データ(X1)の提供を受ける。いくつかの実施形態によれば、第4サブ区間SP4は、第3サブ区間SP3以後に配置されるが、実施形態はこれに制限されるものではない。
【0056】
いくつかの実施形態によれば、第1サブ区間SP1と第3サブ区間SP3はオーバーラップする。また、第2サブ区間SP2と第4サブ区間SP4はオーバーラップする。すなわち、いくつかの実施形態によれば、MAC演算器13は、第1加重値データ(W0)と第1入力データ(X0)を同時に提供を受け得る。また、MAC演算器13は第2加重値データ(W1)と第2入力データ(X1)の提供を同時に受け得る。
【0057】
再び
図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のコンボリューション演算を行い得る。
【0058】
図面に示していないが、第4区間P4の間に、MAC演算器13は入力データI_Dataと加重値データW_Dataのコンボリューション演算の中間結果を、結果出力バッファ14に提供する。すなわち、第4区間P4の間に、結果出力バッファ14は結果データR_Dataの提供を受け得る。
【0059】
第5区間P5の間に、結果出力バッファ14は出力データO_Dataを入出力パッド15を介して不揮発性メモリ10の外部に提供する。前述したように、出力データO_Dataは、例えば、第1出力データ(S0)~第12出力データ(S11)、または第1加重値データ(W0)と第1入力データ(X0)の積(W0X0)~第4加重値データ(W3)と第20入力データ(X19)の積(W3X19)であり得る。
【0060】
いくつかの実施形態によれば、不揮発性メモリ10は、メモリセル11からバッファメモリ12に加重値データW_Dataをラッチするときから、MAC演算器13の動作が終了するときまでビジー(busy)状態を維持し得る。すなわち、不揮発性メモリ10の内部動作が行われる間、ビジー状態信号(RnBX)は論理ローレベル(0)であり得る。
【0061】
いくつかの実施形態によれば、入力データI_Dataと加重値データW_Dataのコンボリューション演算は乗算と加算の組み合わせであり得る。例えば、前述した数学式1を参照すると、第1出力データ(S
0)は、第1入力データ(X
0)と第1加重値データ(W
0)の積、第2入力データ(X
1)と第2加重値データ(W
1)の積、第6入力データ(X
5)と第3加重値データ(W
2)の積および第7入力データ(X
6)と第4加重値データ(W
3)の積をすべて合計した結果と同じである。入力データI_Dataと加重値データW_Dataの効果的な乗算過程を説明するために、
図10~
図12を参照する。
【0062】
図10~
図12はいくつかの実施形態による入力データと加重値データの乗算を説明するための例示的な図である。
図10~
図12は説明の便宜上、第1入力データ(X
0)と第1加重値データ(W
0)の乗算を例にあげて説明するが、実施形態はこれに制限されない。また、説明の便宜上、第1入力データ(X
0)は、3ビットデータであり、第1加重値データ(W
0)も3ビットデータであると仮定して説明するが、実施形態はこれに制限されるものではない。
図10~
図12において、第1加重値データ(W
0)は、MSB(Most Significant Bit)がwb
2であり、2番目ビットがwb
1であり、LSB(Least Significant Bit)がwb
0であるデータであると定義する。また、第1入力データ(X
0)は、MSBがxb
2であり、2番目ビットがxb
1であり、LSBがxb
0であるデータであると定義する。
【0063】
図9~
図12を参照すると、MAC演算器13は、第1乗算器(Multiplier)M_1、第1累算器(Accumulator)AC_1、第2累算器AC_2、第3累算器AC_3、第4累算器AC_4および第5累算器AC_5を含み得る。
【0064】
MAC演算器13は、第1サブ区間SP1の間に第1加重値データ(W0)の提供を受け、第3サブ区間SP3の間に第1入力データ(X0)の提供を受ける。いくつかの実施形態によれば、第1サブ区間SP1の間に、第1加重値データ(W0)のすべてのビットが第1乗算器M_1に同時に提供されてラッチされ得る。すなわち、第1加重値データ(W0)は、第1乗算器M_1の被乗数(multiplicand)であり得る。例えば、第1サブ区間SP1の間に、wb2、wb1およびwb0が第1乗算器M_1に同時に提供されてラッチされる。これに対し、第3サブ区間SP3の間に、第1入力データ(X0)は、第1乗算器M_1に順次提供される。すなわち、第1入力データ(X0)は、第1乗算器M_1の乗数(multiplier)であり得る。例えば、第3サブ区間SP3の間に、xb2、xb1およびxb0が順次提供され得る。
【0065】
先に、第1乗算器M_1にxb0が提供される。この時、第1乗算器M_1はwb0xb0、wb1xb0、wb2xb0を演算する。wb0xb0、wb1xb0、wb2xb0の演算は、第1乗算器M_1で並列的に行われる。第1乗算器M_1は、wb0xb0を第1累算器AC_1に提供し、wb1xb0を第2累算器AC_2に提供し、wb2xb0を第3累算器AC_3に提供する。
【0066】
次に、第1乗算器M_1にxb1が提供される。この時、第1乗算器M_1はwb0xb1、wb1xb1、wb2xb1を演算する。wb0xb1、wb1xb1、wb2xb1の演算は第1乗算器M_1で並列的に行われる。第1乗算器M_1はwb0xb1を第2累算器AC_2に提供し、wb1xb1を第3累算器AC_3に提供し、wb2xb1を第4累算器AC_4に提供する。
【0067】
次に、第1乗算器M_1にxb2が提供される。この時、第1乗算器M_1はwb0xb2、wb1xb2、wb2xb2を演算する。wb0xb2、wb1xb2、wb2xb2の演算は、1乗算器M_1で並列的に行われる。第1乗算器M_1はwb0xb2を第3累算器AC_3に提供し、wb1xb2を第4累算器AC_4に提供し、wb2xb2を第5累算器AC_5に提供する。
【0068】
いくつかの実施形態によれば、第1累算器AC_1~第5累算器AC_5の出力それぞれは、第1加重値データ(W0)と第1入力データ(X0)の積(W0X0)の各桁に該当するビットであり得る。いくつかの実施形態によれば、第1累算器AC_1の出力は、第1加重値データ(W0)と第1入力データ(X0)の積(W0X0)のLSBであり、第5累算器AC_5の出力は、第1加重値データ(W0)と第1入力データ(X0)の積(W0X0)のMSBであり得る。いくつかの実施形態によるMAC演算器13は、簡単で効果的な方法により加重値データW_Dataと入力データI_Dataの乗算を行い得る。
【0069】
図10~
図12は第1乗算器M_1を一つの構成要素として示すが、実施形態はこれに制限されるものではない。本発明の技術分野における通常の知識を有する者は、複数の乗算器を用いて過度な実験なしに本発明の実施形態を実現することができる。
【0070】
図13はいくつかの実施形態による不揮発性メモリを説明するための例示的なブロック図である。説明の便宜上、重複または類似の内容は省略または簡単に説明する。
【0071】
図13を参照すると、不揮発性メモリ10は保存領域10_Sにはメモリセル11が配置される。また、不揮発性メモリ10の周辺領域10_Pにはバッファメモリ12、MAC演算器13、結果出力パッド(Result Output PAD)16および入出力パッド15が配置される。すなわち、いくつかの実施形態による不揮発性メモリ10は、
図3を用いて説明した不揮発性メモリ10において、結果出力バッファ14の代わりに結果出力パッド16をさらに含む不揮発性メモリ10であり得る。
【0072】
MAC演算器13は、加重値データW_Dataと入力データI_Dataをコンボリューション演算し、結果データR_Dataを生成する。MAC演算器13で生成された結果データR_Dataは結果出力パッド16に提供される。前述したように、結果データR_Dataは、加重値データW_Dataと入力データI_Dataのコンボリューション演算の中間結果データであり得る。例えば、結果データR_Dataは、第1出力データ(S0)~第12出力データ(S11)それぞれであり得る。他の例として、結果データR_Dataは、第1加重値データ(W0)と第1入力データ(X0)の積(W0X0)~第4加重値データ(W3)と第20入力データ(X19)の積(W3X19)それぞれであり得る。
【0073】
結果出力パッド16に提供された結果データR_Dataは、出力データO_Dataとして不揮発性メモリ10の外部に提供される。いくつかの実施形態によれば、出力データO_Dataは、結果データR_Dataと同じデータであり得る。
【0074】
いくつかの実施形態によれば、結果出力パッド16は、入力データI_Dataの提供を受ける入出力パッド15とは別に構成される。したがって、入力データI_Dataが入出力パッド15を介してMAC演算器13に提供される間に、出力データO_Dataが結果出力パッド16を介して不揮発性メモリ10の外部に提供される。例示的説明のために
図14を参照する。
【0075】
図14はいくつかの実施形態によるデータが入力/出力されるタイミングを説明するための例示的な図である。説明の便宜上、重複または類似の内容は省略または簡単に説明する。
【0076】
図13および
図14を参照すると、第1区間P1の間に、バッファメモリ12は加重値データW_Dataをラッチする。すなわち、不揮発性メモリ10のメモリセル11に保存された加重値データW_Dataが第1区間P1の間にバッファメモリ12に提供され得る。
【0077】
第2区間P2の間に、バッファメモリ12はラッチされた加重値データW_DataをMAC演算器13に提供する。
【0078】
第3区間P3の間に、入出力パッド15は入力データI_DataをMAC演算器13に提供する。いくつかの実施形態によれば、第2区間P2と第3区間P3はオーバーラップする。すなわち、MAC演算器13は加重値データW_Dataと入力データI_Dataの提供を同時に受け得る。いくつかの実施形態で、第1区間P1は第3区間P3より先に行い得る。
【0079】
第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のコンボリューション演算を行い得る。
【0080】
第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出力データ(S0)~第12出力データ(S11)それぞれ、または第1加重値データ(W0)と第1入力データ(X0)の積(W0X0)~第4加重値データ(W3)と第20入力データ(X19)の積(W3X19)それぞれであり得る。
【0081】
以上、添付した図面を参照して本発明の実施形態を説明したが、本発明は前記実施形態に限定されるものではなく、互いに異なる多様な形態で製造され、本発明が属する技術分野における通常の知識を有する者は本発明の技術的思想や必須の特徴を変更せず他の具体的な形態で実施できることを理解することができる。したがって、以上で記述した実施形態はすべての面で例示的なものであり、限定的なものではないと理解しなければならない。
【符号の説明】
【0082】
10 不揮発性メモリ
11 メモリセル
12 バッファメモリ
13 MAC演算器
14 結果出力バッファ
15 入出力パッド
16 結果出力パッド
20 メモリコントローラ
100 メモリ装置
300 プロセッサ
1000 コンピューティング装置