(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024013205
(43)【公開日】2024-01-31
(54)【発明の名称】インメモリコンピューティングのためのメモリ装置及びその動作方法
(51)【国際特許分類】
G06F 12/00 20060101AFI20240124BHJP
G11C 11/54 20060101ALI20240124BHJP
G11C 11/419 20060101ALI20240124BHJP
G06F 17/10 20060101ALI20240124BHJP
G06N 3/063 20230101ALI20240124BHJP
【FI】
G06F12/00 560F
G11C11/54
G11C11/419
G06F17/10 S
G06N3/063
【審査請求】未請求
【請求項の数】33
【出願形態】OL
(21)【出願番号】P 2023100436
(22)【出願日】2023-06-20
(31)【優先権主張番号】10-2022-0088942
(32)【優先日】2022-07-19
(33)【優先権主張国・地域又は機関】KR
(31)【優先権主張番号】10-2022-0143480
(32)【優先日】2022-11-01
(33)【優先権主張国・地域又は機関】KR
(71)【出願人】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】李 宰赫
(72)【発明者】
【氏名】尹 石柱
(72)【発明者】
【氏名】昌 東眞
(72)【発明者】
【氏名】明 成▲みん▼
(72)【発明者】
【氏名】尹 大健
【テーマコード(参考)】
5B015
5B056
5B160
【Fターム(参考)】
5B015HH01
5B015KA32
5B015PP08
5B056AA02
5B056BB71
5B056FF01
5B056FF02
5B160MM20
(57)【要約】
【課題】一実施形態に係るメモリ装置は、メモリセル及びスイッチング素子を有する乗算器セルを用いて乗算演算を行う。
【解決手段】メモリセルは、互いに反対方向に接続される一対のインバータ、一対のインバータの一端に接続される第1トランジスタ、一対のインバータの他端に接続される第2トランジスタを有し、加重値が設定されることができる。スイッチング素子は、メモリセルの出力端に接続され、入力値に応答してスイッチングを行うことによって入力値と加重値との間の乗算結果に対応する信号を出力することができる。
【選択図】
図3A
【特許請求の範囲】
【請求項1】
メモリ装置であって、
一対のインバータ、前記一対のインバータの第1端に接続される第1トランジスタ、前記一対のインバータの第2端に接続される第2トランジスタを有し、値が格納されるメモリセルと、
前記メモリセルの出力端に接続され、入力値に応答してスイッチングを行うことで前記入力値と前記格納された値との間の乗算結果に対応する信号を出力するスイッチング素子と、
を有する乗算器セルを含み、
前記一対のインバータは、それぞれ入力及び出力を含む第1インバータ及び第2インバータを含み、
前記第1インバータの入力は、前記一対のインバータの前記第1端で前記第2インバータの出力に連結され、
前記第1インバータの出力は、前記一対のインバータの前記第2端で前記第2インバータの入力に連結される、メモリ装置。
【請求項2】
前記スイッチング素子は、
供給電圧と前記メモリセルの出力端との間に接続され、
前記入力値として1の論理値を受信する場合にターンオフされ、
前記入力値として0の論理値を受信する場合にターンオンされる、請求項1に記載のメモリ装置。
【請求項3】
前記スイッチング素子は、前記入力値をゲート端子で受信可能なプルアップトランジスタから構成される、請求項1に記載のメモリ装置。
【請求項4】
前記第1トランジスタ及び前記第2トランジスタはそれぞれNMOSトランジスタであり、
前記プルアップトランジスタはPMOSトランジスタである、請求項3に記載のメモリ装置。
【請求項5】
前記メモリ装置は、第1動作及び第2動作のうち1つの動作を選択し、前記選択された動作を行い、
前記第1動作は、一連の乗算演算のうち一部の乗算演算でワードラインを介して供給電圧よりも低い電圧が印加されることに応答して、前記プルアップトランジスタの出力端の電圧を供給電圧に駆動すること、前記メモリ装置に供給される入力によって乗算結果を毎回出力することを含み、
前記第2動作は、乗算演算ごとにプリチャージフェーズで前記プルアップトランジスタの出力端の電圧を供給電圧に駆動すること、評価フェーズで乗算演算を行うことを含む、請求項3に記載のメモリ装置。
【請求項6】
前記メモリ装置は、前記メモリ装置の動作周波数又は漏洩のうち少なくとも1つに基づいて、前記第1動作又は前記第2動作のいずれか1つの動作を選択する、請求項5に記載のメモリ装置。
【請求項7】
前記メモリ装置は、前記乗算器セルの出力端に接続され、前記乗算器セルで出力された信号をインバースした値を加算する加算器をさらに含む、請求項1に記載のメモリ装置。
【請求項8】
前記メモリ装置は、前記乗算器セルのメモリセルにアクセスしてメモリセルの加重値に対する読み出し動作又は書き込み動作のうち少なくとも1つのためのグローバルビットライン及びスイッチをさらに含む、請求項1に記載のメモリ装置。
【請求項9】
前記乗算器セルは、同じプルアップトランジスタに接続された複数のメモリセルを含む、請求項1に記載のメモリ装置。
【請求項10】
前記メモリ装置は、前記複数のメモリセルのうち、ターゲット乗算演算に使用されるメモリセルを選択する入力/ワードラインドライバをさらに含む、請求項9に記載のメモリ装置。
【請求項11】
前記入力/ワードラインドライバは、入力信号から前記乗算器セルに提供される入力値及び前記ターゲット乗算演算に使用される前記メモリセルを指定する信号をデコードするデコーディング回路を含む、請求項10に記載のメモリ装置。
【請求項12】
前記メモリ装置は、
1つの乗算器セルに含まれたメモリセルのうち、ターゲット演算に対応する値を格納するメモリセルに接続されたワードラインを活性化し、
前記活性化したワードラインの前記メモリセルとは異なるメモリセルに接続されたワードラインを不活性化する、請求項9に記載のメモリ装置。
【請求項13】
前記メモリ装置は、
複数の演算のうち第1演算については、前記複数のメモリセルのうち第1メモリセルを選択して前記同じプルアップトランジスタを介して乗算結果に対応する信号を出力し、
複数の演算のうち第2演算については、前記複数のメモリセルのうち第2メモリセルを選択して前記同じプルアップトランジスタを介して乗算結果に対応する信号を出力する、請求項9に記載のメモリ装置。
【請求項14】
前記メモリ装置は、
前記乗算器セルを含む複数の乗算器セルを含み、
前記複数の乗算器セルのそれぞれで他の乗算器セルと並列的に乗算演算を行い、
前記複数の乗算器セルのうち、同じカラムラインに接続されている乗算器セルの出力を同じ加算器で合算する、請求項1に記載のメモリ装置。
【請求項15】
前記乗算器セルは、
一対のローカルビットラインに接続され、
前記乗算器セルに含まれた複数のメモリセルのうち第1メモリセルは、第1ローカルビットラインに接続され、
前記複数のメモリセルのうち第2メモリセルは、第2ローカルビットラインに接続される、請求項1に記載のメモリ装置。
【請求項16】
前記第1ローカルビットラインに接続された前記第1メモリセルは、ニューラルネットワークの加重値に対応する値を有し、
前記第2ローカルビットラインに接続された前記第2メモリセルは、加重値をインバースした値を有する、請求項15に記載のメモリ装置。
【請求項17】
前記メモリ装置は、前記乗算器セルの乗算結果を合算する加算器の出力を格納し、合算結果を累積する累積器をさらに含む、請求項1に記載のメモリ装置。
【請求項18】
前記累積器から出力される最終の乗算結果を格納する出力レジスタをさらに含む、請求項17に記載のメモリ装置。
【請求項19】
前記メモリ装置は、単一ビット、又はマルチビットのうち最後のビットに対応する入力信号を受信した場合、該当の入力信号に対する累積器演算の結果を前記出力レジスタに格納する、請求項18に記載のメモリ装置。
【請求項20】
前記乗算器セル、入力/ワードラインドライバ、読み出し/書き込み回路、加算器、累積器、及び出力レジスタを制御するメモリコントローラをさらに含む、請求項1に記載のメモリ装置。
【請求項21】
前記メモリ装置は、予め決定された周期が経過した場合、又は、各乗算器セル内で他のメモリセルを使用した乗算演算を行う場合のうち少なくとも1つに応答して、プルアップトランジスタの出力端に対してプリチャージのための動作を行う、請求項1-20のうち何れか1項に記載のメモリ装置。
【請求項22】
メモリ装置の動作方法であって、
互いに対して反対方向に互いに接続される2つのインバータ及び前記2つのインバータの両端に接続される2つのトランジスタを有するメモリセルがワードラインを介して入力値を受信するステップと、
前記メモリセルの出力端に接続されたプルアップトランジスタが前記入力値をゲート端子で受信するステップと、
前記プルアップトランジスタの出力端で前記入力値と前記メモリセルに格納された加重値との間の乗算結果に対応する信号を出力するステップと、
を含む、動作方法。
【請求項23】
ゲートを有し、出力ラインに接続されたプルアップトランジスタと、
第1端及び第2端を有するよう、互いに反対方向に個別段で互いに接続されている一対のインバータ及びゲートを有し、前記一対のインバータの前記第1端及び前記出力ラインに接続されたセルトランジスタを含むメモリセルと、
を含み、
前記プルアップトランジスタのゲート及び前記セルトランジスタのゲートに同じ論理値を有する入力が印加され、前記メモリセルに格納されたバイナリ値と前記入力のバイナリ値との乗算結果に対応する論理値を前記出力ラインで出力する、メモリ装置。
【請求項24】
前記乗算結果に対応する論理値はNAND結果である、請求項23に記載のメモリ装置。
【請求項25】
前記プルアップトランジスタはPMOSトランジスタであり、
前記セルトランジスタはNMOSトランジスタである、請求項23に記載のメモリ装置。
【請求項26】
前記乗算結果は、クロックサイクルごとに出力される、請求項23に記載のメモリ装置。
【請求項27】
前記乗算結果は、2つのクロックサイクルごとだけに出力される、請求項23に記載のメモリ装置。
【請求項28】
前記セルトランジスタは、第1セルトランジスタであり、
前記メモリセルはゲートを有し、前記一対のインバータの前記第2端に接続された第2セルトランジスタをさらに含み、
前記第2セルトランジスタのゲートに前記同じ論理値を有する入力が印加される、請求項23に記載のメモリ装置。
【請求項29】
前記出力ラインは第1出力ラインであり、
第2出力ラインをさらに含む、請求項23に記載のメモリ装置。
【請求項30】
前記セルトランジスタは第1セルトランジスタであり、
前記メモリセルは、ゲートを有し、前記一対のインバータの他端及び前記第2出力ラインに接続された第2セルトランジスタをさらに含む、請求項29に記載のメモリ装置。
【請求項31】
前記プルアップトランジスタは第1プルアップトランジスタであり、
前記メモリ装置は、前記第2出力ラインに接続された第2プルアップトランジスタをさらに含む、請求項30に記載のメモリ装置。
【請求項32】
前記メモリセルは、前記第1出力ライン及び前記第2出力ラインに接続された様々なメモリセルのうちの1つである、請求項31に記載のメモリ装置。
【請求項33】
前記メモリセルは、前記出力ラインに接続された様々なメモリセルのうちの1つである、請求項23-32のうち何れか1項に記載のメモリ装置。
【発明の詳細な説明】
【技術分野】
【0001】
以下の開示は、インメモリコンピューティングのためのメモリ装置に関する。
【背景技術】
【0002】
MAC(multiply and accumulate)演算(operation)とも知られているベクトルマトリックス乗算演算は、様々な分野でアプリケーションの性能を左右する。例えば、多重レイヤを含むニューラルネットワークのマシーンラーニング及び認証動作においてMAC演算を実行することができる。入力信号は、入力ベクトルを形成すると見なされ、イメージ、バイトストリーム、又は、例えば、ニューラルネットワークによって処理されるその他のデータセットに対するデータであってもよい。入力信号に、例えば、ニューラルネットワークの入力層のウェイトが乗算されて累積したMAC演算の結果から出力ベクトルが求められ、この出力ベクトルは、ニューラルネットワークの次のレイヤに対する入力ベクトルに提供されることができる。このようなMAC演算は複数のレイヤに対して反復するため、ニューラルネットワーク処理性能は主にMAC演算の性能によって決定される。MAC演算がインメモリコンピューティングを介して実現されることができる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
一実施形態に係るメモリ装置は、共有されたメモリセルを介して乗算演算を行う乗算器セルを有することにある。
【課題を解決するための手段】
【0004】
一実施形態に係るメモリ装置は、一対のインバータ、前記一対のインバータの第1端に接続される第1トランジスタ、前記一対のインバータの第2端に接続される第2トランジスタを有し、値が格納されるメモリセルと、前記メモリセルの出力端に接続され、入力値に応答してスイッチングを行うことで前記入力値と前記格納された値との間の乗算結果に対応する信号を出力するスイッチング素子とを有する乗算器セルを含み、前記一対のインバータは、それぞれ入力及び出力を含む第1インバータ及び第2インバータを含み、前記第1インバータの入力は、前記一対のインバータの前記第1端で前記第2インバータの出力に連結され、前記第1インバータの出力は、前記一対のインバータの前記第2端で前記第2インバータの入力に連結されることができる。
【0005】
前記スイッチング素子は、供給電圧と前記メモリセルの出力端との間に接続され、前記入力値として1の論理値を受信する場合にターンオフされ、前記入力値として0の論理値を受信する場合にターンオンされることができる。
【0006】
前記スイッチング素子は、前記入力値をゲート端子で受信可能なプルアップトランジスタから構成されることができる。
【0007】
前記第1トランジスタ及び前記第2トランジスタはそれぞれNMOSトランジスタであり、前記プルアップトランジスタはPMOSトランジスタであってもよい。
【0008】
前記メモリ装置は、第1動作及び第2動作のうち1つの動作を選択し、前記選択された動作を行い、前記第1動作は、一連の乗算演算のうち一部の乗算演算でワードラインを介して供給電圧よりも低い電圧が印加されることに応答して、前記プルアップトランジスタの出力端の電圧を供給電圧に駆動すること、前記メモリ装置に供給される入力によって乗算結果を毎回出力することを含み、前記第2動作は、乗算演算ごとにプリチャージフェーズで前記プルアップトランジスタの出力端の電圧を供給電圧に駆動すること、評価フェーズで乗算演算を行うことを含むことができる。
【0009】
前記メモリ装置は、前記メモリ装置の動作周波数又は漏洩のうち少なくとも1つに基づいて、前記第1動作又は前記第2動作のいずれか1つの動作を選択することができる。
【0010】
前記メモリ装置は、前記乗算器セルの出力端に接続され、前記乗算器セルで出力された信号をインバースした値を加算する加算器をさらに含むことができる。
【0011】
前記メモリ装置は、前記乗算器セルのメモリセルにアクセスしてメモリセルの加重値に対する読み出し動作又は書き込み動作のうち少なくとも1つのためのグローバルビットライン及びスイッチをさらに含むことができる。
【0012】
前記乗算器セルは、同じプルアップトランジスタに接続されたメモリセルを含むことができる。
【0013】
前記メモリ装置は、前記複数のメモリセルのうち、ターゲット乗算演算に使用されるメモリセルを選択する入力/ワードラインドライバをさらに含むことができる。
【0014】
前記入力ーワードラインドライバば、入力信号から前記乗算器セルに提供される入力値及び前記ターゲット乗算演算に使用される前記メモリセルを指定する信号をデコードするデコーディング回路を含むことができる。
【0015】
前記メモリ装置は、1つの乗算器セルに含まれたメモリセルのうち、ターゲット演算に対応する値を格納するメモリセルに接続されたワードラインを活性化し、前記活性化したワードラインの前記メモリセルとは異なるメモリセルに接続されたワードラインを不活性化することができる。
【0016】
前記メモリ装置は、複数の演算のうち第1演算については、前記複数のメモリセルのうち第1メモリセルを選択して前記同じプルアップトランジスタを介して乗算結果に対応する信号を出力し、複数の演算のうち第2演算については、前記複数のメモリセルのうち第2メモリセルを選択して前記同じプルアップトランジスタを介して乗算結果に対応する信号を出力することができる。
【0017】
前記メモリ装置は、前記乗算器セルを含む複数の乗算器セルを含み、前記複数の乗算器セルのそれぞれで他の乗算器セルと並列的に乗算演算を行い、前記複数の乗算器セルのうち、同じカラムラインに接続されている乗算器セルの出力を同じ加算器で合算することができる。
【0018】
前記乗算器セルは、一対のローカルビットラインに接続され、前記乗算器セルに含まれた複数のメモリセルのうち第1メモリセルは、第1ローカルビットラインに接続され、前記複数のメモリセルのうち第2メモリセルは、第2ローカルビットラインに接続されることができる。
【0019】
前記第1ローカルビットラインに接続された前記第1メモリセルは、ニューラルネットワークの加重値に対応する値を有し、前記第2ローカルビットラインに接続された前記第2メモリセルは、加重値をインバースした値を有することができる。
【0020】
前記メモリ装置は、前記乗算器セルの乗算結果を合算する加算器の出力を格納し、合算結果を累積する累積器をさらに含むことができる。
【0021】
前記累積器から出力される最終の乗算結果を格納する出力レジスタをさらに含むことができる。
【0022】
前記メモリ装置は、単一ビット、又はマルチビットのうち最後のビットに対応する入力信号を受信した場合、該当の入力信号に対する累積器演算の結果を前記出力レジスタに格納することができる。
【0023】
前記乗算器セル、入力/ワードラインドライバ、読み出し/書き込み回路、加算器、累積器、及び出力レジスタを制御するメモリコントローラをさらに含むことができる。
【0024】
前記メモリ装置は、予め決定された周期が経過した場合、又は、各乗算器セル内で他のメモリセルを使用した乗算演算を行う場合のうち少なくとも1つに応答して、プルアップトランジスタの出力端に対してプリチャージのための動作を行うことができる。
【0025】
一実施形態に係るメモリ装置の動作方法は、互いに対して反対方向に互いに接続される2個のインバータ及び前記2個のインバータの両端に接続される2個のトランジスタを有するメモリセルがワードラインを介して入力値を受信するステップと、前記メモリセルの出力端に接続されたプルアップトランジスタが前記入力値をゲート端子で受信するステップと、前記プルアップトランジスタの出力端で前記入力値と前記メモリセルに格納された加重値との間の乗算結果に対応する信号を出力するステップとを含むことができる。
【0026】
一実施形態に係るメモリ装置は、ゲートを有し、出力ラインに接続されたプルアップトランジスタと、第1端及び第2端を有するよう、互いに反対方向に個別段で互いに接続されている一対のインバータ及びゲートを有し、前記一対のインバータの前記第1端及び前記出力ラインに接続されたセルトランジスタを含むメモリセルとを含み、前記プルアップトランジスタのゲート及び前記セルトランジスタのゲートに同じ論理値を有する入力が印加され、前記メモリセルに格納されたバイナリ値と前記入力のバイナリ乗算結果に対応する論理値を前記出力ラインで出力することができる。
【0027】
前記バイナリ乗算結果に対応する論理値はNAND結果であってもよい。
【0028】
前記プルアップトランジスタはPMOSトランジスタであり、前記セルトランジスタはNMOSトランジスタであってもよい。
【0029】
前記乗算結果は、クロックサイクルごとに出力されることができる。
【0030】
前記乗算結果は、2つのクロックサイクルごとだけに出力されることができる。
【0031】
前記セルトランジスタは、第1セルトランジスタであり、前記メモリセルはゲートを有し、前記一対のインバータの前記第2端に接続された第2セルトランジスタをさらに含み、前記第2セルトランジスタのゲートに前記同じ論理値を有する入力が印加されることができる。
【0032】
前記出力ラインは第1出力ラインであり、第2出力ラインをさらに含むことができる。
【0033】
前記セルトランジスタは第1セルトランジスタであり、前記メモリセルは、ゲートを有し、前記一対のインバータの他端及び前記第2出力ラインに接続された第2セルトランジスタをさらに含むことができる。
【0034】
前記プルアップトランジスタは第1プルアップトランジスタであり、前記メモリ装置は、前記第2出力ラインに接続された第2プルアップトランジスタをさらに含むことができる。
【0035】
前記メモリセルは、前記第1出力ライン及び前記第2出力ラインに接続された様々なメモリセルのうちの1つであってもよい。
【0036】
前記メモリセルは、前記出力ラインに接続された様々なメモリセルのうちの1つであってもよい。
【発明の効果】
【0037】
一実施形態に係るメモリ装置によると、乗算器セルが共有されたメモリセルを介して乗算演算を行うことで、より改善された面積効率を有することができる。
【図面の簡単な説明】
【0038】
【
図1】一実施形態に係るニューラルネットワークの乗算累積演算(MAC operation、multiply and accumulate operation)のインメモリコンピューティングシステムの実現を例示する。
【
図2】一実施形態に係るインメモリコンピューティングシステムでメモリ装置の例示的な構造を示す。
【
図3A】一実施形態に係るメモリ装置で例示的な乗算器セルの構造を示す。
【
図3B】一実施形態に係るメモリ装置で例示的な乗算器セルの構造を示す。
【
図3C】一実施形態に係るメモリ装置で例示的な乗算器セルの構造を示す。
【
図3D】一実施形態に係るメモリ装置で例示的な乗算器セルの構造を示す。
【
図3E】一実施形態に係るメモリ装置で例示的な乗算器セルの構造を示す。
【
図3F】一実施形態に係るメモリ装置で例示的な乗算器セルの構造を示す。
【
図4】一実施形態に係る乗算器セルの動作を例示する。
【
図5】一実施形態に係る乗算器セルがアレイ構造に配置されたメモリ装置を示す。
【
図6A】一実施形態に係る乗算器セル内に複数のメモリセルがプルアップトランジスタを共有する例示的な構造を示す。
【
図6B】一実施形態に係る乗算器セル内に複数のメモリセルがプルアップトランジスタを共有する例示的な構造を示す。
【
図7】
図6Aに示された乗算器セルがアレイ構造に配置されたメモリ装置を示す。
【
図8】一実施形態に係る乗算器セルが一対のローカルビットラインを介して乗算結果を出力する例示を示す。
【
図9】
図8に示された乗算器セルがアレイ構造に配置されたメモリ装置を示す。
【
図10】一実施形態に係る乗算器セルの動作方法を示すフローチャートである。
【
図11】一実施形態に係るメモリ装置の動作方法を示すフローチャートである。
【
図12】一実施形態に係る乗算器セルの実現を例示する。
【発明を実施するための形態】
【0039】
実施形態に対する特定な構造的又は機能的な説明は単なる例示のための目的として開示されたものとして、様々な形態に変更される。したがって、実施形態は特定な開示形態に限定されるものではなく、本明細書の範囲は技術的な思想に含まれる変更、均等物ないし代替物を含む。
【0040】
第1又は第2などの用語を複数の構成要素を説明するために用いることがあるが、このような用語は1つの構成要素を他の構成要素から区別する目的としてのみ解釈されなければならない。例えば、第1構成要素は第2構成要素と命名することができ、同様に第2構成要素は第1構成要素にも命名することができる。
【0041】
いずれかの構成要素が他の構成要素に「連結」されているか「接続」されていると言及されたときには、その他の構成要素に直接的に連結されているか又は接続されているが、中間に他の構成要素が存在し得るものと理解されなければならない。
【0042】
本明細書で用いられる用語は、単に特定の実施形態を説明するために使用されたものであり、本発明を限定しようとする意図はない。単数の表現は、文脈上、明白に異なる意味をもたない限り複数の表現を含む。本明細書において、「含む」又は「有する」等の用語は明細書上に記載した特徴、数字、ステップ、動作、構成要素、部品又はこれらを組み合わせたものが存在することを示すものであって、1つ又はそれ以上の他の特徴や数字、ステップ、動作、構成要素、部品、又はこれを組み合わせたものなどの存在又は付加の可能性を予め排除しないものとして理解しなければならない。
【0043】
異なるように定義さがれない限り、技術的であるか又は科学的な用語を含むここで用いる全ての用語は、本実施形態が属する技術分野で通常の知識を有する者によって一般的に理解されるものと同じ意味を有する。一般的に用いられる予め定義された用語は、関連技術の文脈上で有する意味と一致する意味を有するものと解釈すべきであって、本明細書で明白に定義しない限り、理想的又は過度に形式的な意味として解釈されることはない。
【0044】
本明細書において、「A又はB」、「A及びBのうち少なくとも1つ」、「A又はBのうち少なくとも1つ」、「A、B、又はC」、「A、B、及びCのうち少なくとも1つ」、「A、B、又はCのうち少なくとも1つ」のような各フレーズは、そのフレーズのうち該当するフレーズと共に記載されている項目のいずれか1つ又は全て可能な組み合わせを含むことができる。
【0045】
以下、実施形態を添付の図面を参照して詳細に説明する。各図面に提示される同一な参照符号は同一な部材を示す。
【0046】
図1は、一実施形態に係るニューラルネットワークの乗算累積演算(MAC operation、multiply and accumulate operation)のインメモリコンピューティングシステムの実現を例示する。
【0047】
フォンノイマン型アーキテクチャを使用するコンピューティング装置では、演算部(例えば、メインプロセッサ)とメモリ部との間の頻繁なデータ移動による性能及び電力限界が発生する。インメモリコンピューティング(In-memory computing;IMC)は、データが格納されたメモリ内部で直接的にデータに関する算出演算(例えば、MAC演算)を行うためのコンピュータアーキテクチャーとして、プロセッサ120とIMCメモリ装置110との間のデータ移動が減少し、電力効率が増加する。一実施形態に係るインメモリコンピューティングシステム100のプロセッサ120が演算されなければならないデータをIMCメモリ装置110に入力し、IMCメモリ装置110がデータに関して自体に演算を行うことができる。プロセッサ120は、IMCメモリ装置110から演算の結果を読み込むことができる。したがって、演算過程の間のデータ送信が最小化され得る。
【0048】
例えば、インメモリコンピューティングシステム100は、様々な演算のうち人工知能(artificial intelligence;AI)アルゴリズムにおいて頻繁に使用される乗算累積(multiplication and accumulation;MAC)演算(又は積和演算)を行ってもよい。
図1に示すように、ニューラルネットワークでレイヤ演算190は、入力ノードの入力値のそれぞれに加重値を乗算した結果を合算するMAC演算を含んでもよい。MAC演算は、例示的に下記の数式(1)のように表現されることができる。
【0049】
【0050】
前述した数式(1)において、Otはt番目のノードへの出力、Imはm番目の入力、Wt、mはt番目のノードに入力されるm番目の入力に対して適用される加重値を示す。ここで、Otはノードの出力又はノード値として、入力Imと加重値Wt、mの加重和として算出される。ここで、mは0以上M-1以下の整数、tは0以上T-1以下の整数、M、Tは整数である。Mは、演算の対象となる現在レイヤの1つのノードに接続された以前レイヤのノードの個数であり、Tは現在レイヤのノードの個数である。一実施形態に係るインメモリコンピューティングシステム100のメモリ装置IMC110は、1つのオペランド(operand)として、応対するIMCメモリ装置110に入力される入力データ、及び、他のオペランド(例えば、加重値データ)としてIMCメモリ装置110に格納されたデータに対して、前述したMAC演算を行うことができる。IMCメモリ装置110は、抵抗性メモリ装置、メモリアレイ、又は、インメモリコンピューティング装置のように示してもよい。
【0051】
IMC装置は、アナログIMC装置及びデジタルIMC装置に区分される。アナログIMC装置は、MAC演算を電流、電荷、又は、時間ドメインを含むアナログドメインで行う。例示的に、デジタルIMC装置は、論理回路を用いてMAC演算を行ってもよい。デジタルIMC装置は、先端工程で容易に実現可能であり、優れた性能を示す。一実施形態に係るメモリ装置110は、複数のトランジスタ(例えば、6個のトランジスタ)を含んでもよく、ビットを格納するためのSRAM(Static Random Access Memory)ユニットを有してもよい。6個のトランジスタから構成されたSRAMを6T SRAMとして示す。SRAMユニットは0又は1の論理値にデータを格納するため、ドメインの変換過程が要求されない。例示的に、メモリ装置110は、プルアップトランジスタとメモリセル(例えば、SRAMセル)が結合された乗算セルを含んでもよい。乗算セルがいずれか1つのプルアップトランジスタに接続される複数のメモリセルを含むことにより、メモリ装置110のメモリアレイは、少ない個数のトランジスタとして実現できる。したがって、メモリ装置110は、乗算セルを介して面積の効率及び電力の効率の改善されたハードウェアを有することができる。但し、メモリ装置110がMAC演算のために使用されるものに限定されず、メモリ装置110は、メモリの格納及び乗算演算を含むアルゴリズムを駆動するために使用され得る。一実施形態に係るメモリ装置110が外部データの移動なしにメモリ内で直接演算を行うコンピューティングの構造を下記で説明する。
【0052】
図2は、一実施形態に係るインメモリコンピューティングシステムでメモリ装置の例示的な構造を示す。
【0053】
一実施形態に係るメモリ装置200(例えば、
図1のメモリ装置110)は、乗算器セル210、入力/ワードラインドライバ220、加算器230、出力部240、読み出し/書き込み回路280、及びメモリコントローラ290を含む。デジタルインメモリコンピューティングシステム及び/又は回路では、全てのデータがブール値(Boolean value)に表現されて演算が行われるため、入力値、加重値、及び出力値は全てバイナリフォーマット(binary format)を有してもよい。
図2を参照して説明される構成要素は、デジタル論理回路基盤で実現されることができる。
【0054】
入力/ワードラインドライバ220は、演算を行う入力データを乗算器セル210に伝達することができる。入力/ワードラインドライバ220は、各乗算器セル210のメモリセル及びプルアップトランジスタに印加されるプルアップ信号及びワードライン信号を生成することができる。プルアップ信号及びワードライン信号は、入力データの入力値に基づいて決定される信号として、
図6Aを参照して以下で説明する。入力データは、マルチビット(multi bit)又はシングルビット(single bit)からなる入力値を有するデジタルデータであってもよい。入力/ワードラインドライバ220は、外部モジュール(例えば、
図1のプロセッサ110)から入力データを受信する。例示的に、入力値がマルチビットである場合、入力/ワードラインドライバ220は、マルチビット値をビット桁(bit position)ごとに順に乗算器セル210に伝達されることができる。参考として、
図2に示された例示において、入力/ワードラインドライバ220が4ビットの入力値をLSB(least significant bit)からMSB(most significant bit)まで順次受信してもよい。メモリ装置200がニューラルネットワーク演算のために動作する場合、入力/ワードラインドライバ220は、ワードラインWL
0、WL
1~WL
M-1にレイヤのM個のノードで受信された入力値を印加することができる。例えば、m番目のノードにおける入力値がWL
mに印加されてもよく、WL
mに印加される入力値は、マルチビットであるかシングルビットであってもよい。ここで、mは0以上M-1以下の整数、Mは1以上の整数であってもよい。WL
mに印加される入力値がマルチビットである場合、上述したように順にビット桁ごとのビット値が乗算器セル210に伝達されることができる。入力/ワードラインドライバ220は、前述したノードから受信されたM個の入力値を個別的にM個の乗算器セルに伝達することができる。後述するが、M個の乗算器セルのそれぞれは、他の乗算器セルに対して並列的に乗算演算を行うため、各出力ライン(例えば、カラムライン)ごとにM個の乗算演算が並列的に行われることができる。
【0055】
参考として、加重値がマルチビットである場合、加重値を表現するためのビット数だけの出力ラインがグルーピングされ得る。グルーピングされた出力ラインを出力ライングループに示す。例えば、加重値がXビットである場合にX個の出力ラインがグルーピングされ、グルーピングされたX個の出力ラインが入力値とXビットの加重値との間の乗算合算結果を出力する。ここで、Xは2以上の整数であってもよい。例示的に、一つのグループにグルーピングされたX個の出力ラインのうち第1出力ラインは、加重値のLSB(least significant bit)に対応する加重値ビット値と入力ビット値との間の乗算結果を出力し得る。同様に、第x出力ラインは、LSBからx-1番目のビット桁の加重値ビット値と入力ビット値との間の乗算結果を出力し得る。ここで、xは2以上、X以下の整数であってもよい。この場合、累積器回路241が同じ出力ライングループの出力ラインに対応するビット桁のビットシフトを該当出力ラインで出力された合算結果に適用し、ビットシフトの適用された値を累積することによって最終のMAC演算結果を出力できる。
【0056】
また、乗算器セル210が複数のメモリセルを含んでいる場合、入力/ワードラインドライバ220は、受信された入力データに対して適用される加重値を格納するメモリセルを選択することができる。入力/ワードラインドライバ220は、デコーディングユニット(例えば、デコーディング回路)を用いて入力データに適用する加重値を格納するメモリセルを指示する値を抽出できる。乗算器セル210が複数のメモリセルを含む構造の動作については、
図6Aを参照して以下で説明する。
【0057】
乗算器セル210は、伝達された入力値とメモリセルに格納された加重値の乗算演算を行ってもよい。一実施形態に係る乗算器セル210は、メモリセル、プルアップトランジスタ、ワードラインWL、及びプルアップラインPUが接続された構造を介して、乗算結果に対応する信号を出力することができる。例えば、
図3A~
図3Fを参照して以下で説明するように、乗算器セル210は、入力されたビット値と加重値との間の論理演算NAND結果値を出力することができる。乗算結果は、論理積ANDの結果値であるため、NAND結果値をインバースした値(即ち、反転した値)に対応する。後述するが、乗算器セル210で出力された結果はインバースされて合算され得る。
【0058】
加算器230は、乗算器セル210の出力端に接続される入力を有する。乗算器セル210の出力端は出力ラインに対応する。1つの出力ラインに乗算器セル210の出力端が接続されてもよい。加算器230は、乗算器セル210で出力された信号をインバースした値を加算する。加算器230は、同じ出力ラインに接続された複数の乗算器セル210の乗算結果を合算する。加算器230は、全加算器(full adder)、半加算器(half adder)、及び/又はフリップ・フロップ(flip-flop)に実現され、加算器回路(adder tree circuit)のように実現され得る。また、上述したように、乗算器セル210の出力結果がNAND結果値であるため、加算器230は、各乗算器セル210の出力結果をインバースするインバート機能又はインバーター(論理的否定(logical negation))を含んで実現されてもよい。加算器230は、各乗算器セル210によって出力されたインバースされた値(結果)を合算する。加算器230は、様々な乗算結果を合算した結果を累積器回路241に伝達する。加算器230は、各出力ラインごとに配置されてもよい。出力ラインがT個である場合、T個の加算器が個別的に配置されてもよい。T個の加算器からT個の合算された乗算結果値が累積器回路241に伝達されることができる。
【0059】
出力部240は、累積器回路241及び出力レジスタ242を含む。累積器回路241は、結果を結合して最終MAC演算結果を出力し得る。
【0060】
累積器回路241(例えば、累積器)は、乗算器セル210の乗算結果を合算する加算器の出力を格納し、合算結果を累積する。例えば、入力/ワードラインドライバ220がマルチビットからなった(例えば、メモリ装置200にストリーミングされた)入力データを受信した場合、入力/ワードラインドライバ220は、各乗算器セル210にビット桁ごとのビット値を順に伝達する。したがって、各乗算器セル210も該当するビット桁の乗算結果値を出力することができる。加算器230は、該当するビット桁の乗算結果値を合算した結果を累積器回路241に伝達する。累積器回路241は、該当するビット桁の合算結果をビットシフトしてもよい。累積器回路241は、次のビット桁の合算結果がビットシフトされた合算結果を結合することで、乗算結果がビット桁に応じて累積した結果を取得できる。後述するが、入力/ワードラインドライバ220がシングルビットからなる入力データを受信した場合にビットシフトが必要でないため、累積器回路241は、加算器230の合算結果を出力レジスタ242に直ちに伝達することもできる。
【0061】
出力レジスタ242は、累積器回路241から出力される最終の乗算結果(例えば、乗算累積の結果)を格納する。参考として、出力レジスタ242に格納された最終の乗算累積結果(例えば、MAC結果)は、プロセッサにより判読され、他の演算のために使用されてもよい。例えば、メモリ装置200が一回にニューラルネットワークの一部のレイヤに対応するMAC演算のみを行う場合、出力レジスタ242に格納されたMAC結果は、次のレイヤの演算のために入力/ワードラインドライバ220に伝達されてもよい。メモリ装置200の入力/ワードラインドライバ220は、次のレイヤに対応する加重値セットの設定されたメモリセルを選択して乗算演算を行うことができる。
【0062】
加重値セットは、いずれか1つのMAC演算で入力に乗算される加重値のセットを示す。すなわち、加重値セット及び入力は、MAC演算のオペランド(operand)であってもよい。例示的に、加重値セットは、ニューラルネットワークにおいていずれか1つのレイヤと他のレイヤのノード間の接続加重値のセットであってもよい。但し、加重値セットがニューラルネットワークのノード間の接続加重値であるものに限定されず、様々なタスクごとに異なる加重値セットが使用されてもよい。さらに、メモリ装置200のアプリケーションは、特定タイプの入力又は格納されたデータに限定されない。例えば、メモリ装置200は、第1作業のためのMAC演算で第1加重値セットが要求される場合、乗算器セル210に含まれている複数のメモリセルのうち、第1加重値セットに属する加重値が格納されたメモリセルを選択してもよい。同様に、メモリ装置200は、第2作業のためのMAC演算で第2加重値セットが要求される場合、第2加重値セットに属する加重値が設定されたメモリセルを選択してもよい。
【0063】
読み出し/書き込み回路280は、乗算器セル210に含まれたメモリセルのデータを読み出して書き込むことができる。メモリセルのデータは、例えば、MAC演算で入力値に乗算される加重値を含んでもよい。読み出し/書き込み回路280は、グローバルビットライン(
図2に示されたGBL、GBLB)を介して乗算器セル210のメモリセルにアクセスできる。乗算器セル210が複数のメモリセルを含んでいる場合、読み出し/書き込み回路280は、複数のワードラインのうち活性化したワードラインに接続されているメモリセルにアクセスできる。読み出し/書き込み回路280は、アクセスしたメモリセルに加重値を設定(格納)したり、設定(格納)された加重値を読み込むことができる。グローバルビットラインGBL、GBLBを通したアクセスは、
図5を参照して以下で説明する。
【0064】
メモリコントローラ290は、乗算器セル210、入力/ワードラインドライバ220、読み出し/書き込み回路280、加算器230、累積器回路241、及び出力レジスタ242を制御できる。
【0065】
メモリ装置200は、ニューラルネットワーク装置、インメモリコンピューティング回路、積和演算器(MAC、multiplier and accumulator)回路及び/又は装置に実現できる。メモリ装置200は、インメモリコンピューティングのための面積効率的なSRAM乗算セルを含んでもよい。メモリ装置200は、ワードラインを介して入力値を受信し、6T SRAMメモリセルに格納された加重値と入力値との間の乗算結果に対応する信号(例えば、NAND結果信号)をビットラインを介して出力する。メモリ装置200は、より少ない数のトランジスタでコントロール及び乗算器の役割を行うことができる。
【0066】
図3A~
図3Fは、一実施形態に係るメモリ装置で例示的な乗算器セルの構造を示す。
【0067】
一実施形態に係る乗算器セル310は、入力値とメモリセル311に以前に設定/格納された加重値との間の乗算演算を行うことができる。乗算器セル310のそれぞれは、メモリセル311及びスイッチング素子319(例えば、プルアップトランジスタ)を含んでもよい。各乗算器セル310は2個のローカルビットラインに接続され、2個のローカルビットラインのうち少なくともいずれか1つのビットラインに1つのスイッチング素子319が配置されてもよい。例えば、各乗算器セル310は、2つのローカルビットラインのうち1つのローカルビットラインでは1つのスイッチング素子319までのみを含むことができる。
図3A~
図3Eに示された例示では、第1ローカルビットラインLBLBに単一スイッチング素子319が配置され、第2ローカルビットラインLBLにはスイッチング素子319が配置されない。後述する
図8において、2個のローカルビットラインLBL、LBLBにそれぞれ1つずつスイッチング素子319が配置されている例示が示されている。
【0068】
一実施形態によれば、メモリセル311は、設定/格納された加重値を有してもよい。メモリセル311は、加重値に基づいた信号を入力値に応答して、出力ラインに選択的に提供することができる。例えば、メモリセル311は、ワードラインを介して第1論理値(例えば、0の論理値又はLの論理値)を受信する場合、出力ラインから分離され得る。メモリセル311がワードラインを介して第2論理値(例えば、1の論理値又はHの論理値)を受信する場合、出力ラインで加重値に基づいた信号(例えば、設定/格納された加重値の論理値がインバースされた値QBを示す信号)を出力ラインに提供することができる。
【0069】
メモリセル311は、2個のインバータINV1、INV2及びセルトランジスタ(例えば、第1トランジスタTR1)を含んでもよい。セルトランジスタは、ゲートを有し、一対のインバータINV1、INV2の一端及び出力ラインに接続されてもよい。2個のトランジスタ(例えば、セルトランジスタ)は、2つのインバータINV1、INV2の両端に接続されてもよい。例えば、一対のインバータINV1、INV2は、互いに反対方向に接続されてもよい。メモリ装置は、出力ラインに接続されたメモリセルを複数含んでもよい。
【0070】
インバータINV1、INV2は、個別端でペアリングされることができる。第1トランジスタTR1(例えば、第1セルトランジスタ)が一対のインバータINV1、INV2の一端に接続されてもよい。第2トランジスタTR2(例えば、第2セルトランジスタ)が一対のインバータINV1、INV2の他端に接続されてもよい。前述したメモリセル311は、2つのインバータINV1、INV2、第1トランジスタTR1、及び第2トランジスタTR2を含む6個のトランジスタから構成されてもよい。メモリセル311は、6個のトランジスタで具現されたSRAMである。一対のインバータINV1、INV2の一端には加重値がインバースされた値QBが設定されてもよい。メモリセル311で一対のインバータINV1、INV2の他端に加重値が設定されてもよい。第1トランジスタTR1及び第2トランジスタTR2のゲート端子は、ワードラインWLmに接続されてもよい。第1トランジスタTR1の一端は第1ローカルビットラインLBLBに接続され、第1トランジスタTR1の他端は一対のインバータINV1、INV2に接続されてもよい。第2トランジスタTR2の一端は第2ローカルビットラインLBLに接続され、第2トランジスタTR2の他端は一対のインバータINV1、INV2に接続されてもよい。セルトランジスタ(例えば、第1トランジスタTR1及び第2トランジスタTR2)はそれぞれNMOSトランジスタであってもよい。プルアップトランジスタのゲート、第1セルトランジスタのゲート、及び第2セルトランジスタのゲートに同じ論理値を有する入力が印加される。第1セルトランジスタは第1出力ライン(例えば、第1ローカルビットラインLBLB)に接続され、第2セルトランジスタは第2出力ライン(例えば、第2ローカルビットラインLBL))に接続されてもよい。
【0071】
スイッチング素子319は、メモリセル311の出力端Noutに接続されてもよい。スイッチング素子319は、入力値に応答してスイッチングを行うことで入力値と加重値との間の乗算結果に対応する信号を出力できる。スイッチング素子319は、供給電圧VDDとメモリセル311の出力端Noutとの間に接続されてもよい。スイッチング素子319は、入力値として1の論理値を受信する場合にターンオフされる。スイッチング素子319は、入力値として0の論理値を受信する場合にターンオンされる。例示的に、スイッチング素子319は、入力値をゲート端子で受信可能なプルアップトランジスタから構成されてもよい。本明細書では、スイッチング素子319がプルアップトランジスタである例示について主に説明する。
【0072】
プルアップトランジスタは、ゲートを有し出力ラインに接続されることができる。また、
図3A~
図3Eにおいて、プルアップトランジスタ319のゲート端子がプルアップラインに接続されるが、プルアップラインがワードラインWL
Mに接続されてもよい。但し、これに限定されることなく、
図6Aを参照して以下で後述するように、プルアップラインは、ワードラインWL
mとは別に入力/ワードラインドライバに接続され、入力/ワードラインドライバがプルアップラインに入力値を印加してもよい。プルアップトランジスタは、入力値と加重値との間の乗算結果に対応する信号を出力できる。プルアップトランジスタの一端は供給電圧V
DDに接続され、他端がメモリセル311の出力端N
outに接続されてもよい。メモリセル311の出力端N
outは、ローカルビットラインバーに接続され、
図3A~
図3Eでは、第1ローカルビットラインLBLBで乗算結果に対応する信号が出力される。プルアップトランジスタは、PMOSトランジスタであってもよい。
【0073】
一実施形態に係るメモリ装置(例えば、乗算器セル310)は、プルアップトランジスタのゲート及びセルトランジスタのゲートに同じ論理値を有する入力が印加され、メモリセル311に設定/格納されたバイナリ加重値と入力のバイナリ乗算結果に対応する論理値を出力ラインとして出力してもよい。バイナリ乗算結果に対応する論理値は、NAND論理出力として決定されてもよい。例えば、乗算器セル310は、
図3Aに示された真理値表のように動作してもよい。プルアップラインPUは、ワードラインWL
mと同じ信号(例えば、入力値)を受信してもよい。メモリセル311内のノードQには加重値に対応する信号が示される。乗算器セルは、ワードラインWL
mを介して入力値を受信し、ノードQに格納された加重値と入力値との間の乗算に対応する結果(例えば、NAND結果)を第1ローカルビットラインLBLBに出力してもよい。LBLはローカルビットライン、LBLBはローカルビットラインバー(local bit line bar)を示す。真理値表に示されているように、乗算器セル310の演算はNAND演算であってもよい。以下において、
図3B~
図3Eは、それぞれ
図3Aの論理テーブルで命題(行)ごとの乗算器セル310の回路状態を示す。
【0074】
図3B及び
図3Cは、プルアップラインPUとワードラインWL
mを介して受信された入力値が0であるケース390b,390cの乗算器セル310を個別的に図示する。プルアップトランジスタは、第1ローカルビットラインLBLBに供給電圧V
DDを提供する。供給電圧V
DDは論理値1を示す。接地電圧(例えば、0V)は論理値0を示す。ワードラインWL
mを介して受信された0の入力値により、第1トランジスタTR1が開放(open)される。第1トランジスタTR1が開放されることでメモリセル311のノードQBが第1ローカルビットラインLBLBから分離されてもよい。したがって、プルアップラインPUとワードラインWL
mを介して受信された入力値が0であれば、乗算器セル310の出力はノードQ、QBに設定された加重値と関わりがない。乗算器セル310は、ノードQに設定(格納)された加重値が0であるか1であるかに関わらず、出力端N
outに論理値1を出力することができる。
【0075】
図3D及び
図3Eは、プルアップラインPUとワードラインWL
mを介して受信された入力値が1である個別的なケース390d,390eの乗算器セル310を示す。プルアップラインPUを介して受信された1の入力値によりプルアップトランジスタが開放される。プルアップトランジスタが開放されることによって供給電圧V
DDが第1ローカルビットラインLBLBから分離される。したがって、プルアップラインPUを介して受信された入力値が1であれば、乗算器セル310の出力は、供給電圧V
DDに関わりなく、ノードQ、QBに設定された加重値に依存する。乗算器セル310は、第1ローカルビットラインLBLBでノードQBに対応する値を出力することができる。
図3Eを参照すると、プルアップラインPUとワードラインWL
mの入力値が1であり、ノードQの加重値が1である場合、第1ローカルビットラインLBLBでノードQBの論理値0に対応する接地電圧(例えば、0V)が示される。
図3Dを参照すると、プルアップラインPUとワードラインWL
mの入力値が1であり、ノードQの加重値が0である場合(390d)、乗算器セル310が第1ローカルビットラインLBLBの電圧を最大V
DD-V
THまで駆動することができる。V
DD-V
THの状態が完全な論理値1に対応しないものの、1の論理値に実質的に同等なものとして処理される。参考として、ほとんどの動作時に第1ローカルビットラインLBLBは、供給電圧V
DDでプリチャージされてもよい。第1ローカルビットラインLBLBが供給電圧V
DDでプリチャージされた状態でワードラインWL
mがオンされため、第1ローカルビットラインLBLBが供給電圧V
DD又は供給電圧V
DDに近接した電圧に保持される。したがって、その後に接続されるデジタル論理回路(digital logic circuit)(例えば、加算器)は正しく論理値1として認識し、正常動作することができる。
【0076】
但し、
図3Dに示すように、動作する乗算器セル310では、
図3Fに示すように、第1トランジスタTR1及びプルアップトランジスタの寄生容量380fによって、一種のブートストラップ(bootstrapping)回路が形成される可能性がある。乗算器セル310が
図3Dに示す動作を繰り返す場合、電力漏洩が発生し得る。電力漏洩が発生する場合には下記の
図4に示すように動作される。
【0077】
参考として、第2ローカルビットラインLBLと第1ローカルビットラインLBLBでは、互いにインバース関係の信号が示されてもよい。本明細書において、プルアップラインPUと活性化するワードラインWLmに同じ論理値が印加される例示を主に説明する。
【0078】
図4は、一実施形態に係る乗算器セルの動作を例示する。
【0079】
一実施形態に係るメモリ装置(例えば、
図2のメモリ装置200)は、第1動作410及び第2動作420のいずれか1つの動作を選択して行う。選択された動作により、乗算結果はクロックサイクルごとに、又は、2つのクロックサイクルごとに出力されてもよい。
図4は、メモリ装置のいずれか1つの乗算器セルで動作ごとのタイミング図を示す。メモリ装置は、第1動作410及び第2動作420を選択及び/又は組み合わせて行ってもよい。但し、これに限定されることなく、メモリ装置は、第1動作410及び第2動作420のうち1つのみを実行するように設計されてもよい。第1動作410では、クロックサイクルごとに乗算が行われ、第2動作420では、2つのクロックサイクルごとに乗算が行われる。タイミング図において、M1は最初の乗算演算、M2は2番目の乗算演算を示し、M3~M8も3番目~8番目の乗算演算をそれぞれ示す。参考として、
図4に示された例示として、初期状態(Init.)では常にワードラインWLを介して入力値を受信せず、デフォルト(default)である0であることから、ローカルビットラインLBLBはプルアップトランジスタにより給電圧V
DDに駆動されてもよい。この状態で下記の動作を行うことができる。
【0080】
第1動作410は、供給される入力により毎回(毎クロック/CLKサイクル)に乗算結果を出力する動作を示す。第1動作410は、一連の乗算演算のうち一部の乗算演算で、ワードラインWLを介して供給電圧よりも十分に低い電圧(例えば、0V)が印加されることに応答して、プルアップトランジスタの出力端の電圧を供給電圧に駆動する動作を含む。言い換えれば、出力端の電圧が供給電圧に初期化されてもよい。メモリ装置の乗算器セルは、ワードラインWLを介してクロックサイクルごとに演算しようとする入力信号(例えば、入力値)を受信することができる。乗算器セルは、ノードQに格納された加重値と入力値との間の乗算結果を出力することができる。
【0081】
例えば、M1状態で、ワードラインWLを介して受信された入力値が1であり、ノードQの加重値が0である場合、乗算器セルは、ローカルビットラインLBLBで供給電圧VDDを保持することができる。漏洩電流(Leakage current)がない場合(又は、漏洩電流が閾値以下である場合)、ローカルビットラインLBLBの電圧が低下せず、供給電圧VDDに保持されるためである。M2状態でワードラインWLの入力値が0であるため、ローカルビットラインLBLBは供給電圧VDDに向かって駆動が行われる。M1状態でわずかの漏洩電流が発生するとしても、M2状態における駆動により、ローカルビットラインLBLBの電圧が復元されることができる。M3状態で再び入力が1になると、M1状態と同様に、乗算器セルは、ローカルビットラインLBLBの供給電圧VDDを保持することができる。したがって、漏洩が大きくない限り、実質的に乗算器セルは、出力端を介してローカルビットラインLBLBに全ての入力ビット値及び加重値ビット値に対する乗算結果を論理値に対応する電圧(例えば、0あるいはVDD)に正しく出力することができる。
【0082】
参考として、メモリ装置は、予め決定された周期が経過した場合、又は、各乗算器セル内で他のメモリセルを使用した乗算演算を行う場合のうち少なくとも1つに応答して、プルアップトランジスタの出力端に対してプリチャージのための動作を行ってもよい。動作時間が経過する間にワードラインWLを介して、そしてプルアップラインを介して0の入力値を受信せず、ローカルビットラインLBLBにおいて供給電圧に駆動されなければ、ローカルビットラインLBLBの電圧がVDD-VTHまで徐々に減少する。メモリ装置は、乗算器の出力端の電圧を供給電圧に保持されるよう、周期的に初期化動作(例えば、ワードラインWLに0の電圧を印加する動作)を行うことができる。
【0083】
第2動作420は、乗算演算ごとにプリチャージフェーズ(pre-charge phase)Pでプルアップトランジスタの出力端の電圧を供給電圧に駆動(第1動作410ではクロックサイクルごとものとは異なって)し、評価フェーズ(evaluation phase)Eで乗算演算を行う動作を示す。例えば、第2動作420では、第1クロックサイクルがプリチャージフェーズPのために使用され、次のクロックサイクルが評価フェーズEのために使用されてもよい。評価フェーズEにおける動作は第1動作と同一であってもよい。メモリ装置は、プリチャージフェーズに該当するクロックサイクルで常にワードラインWLの電圧を0に強制してもよい。言い換えれば、メモリ装置は、乗算器セルの出力端が接続されたローカルビットラインLBLBの電圧を供給電圧VDDに駆動することができる。その後、メモリ装置は、評価フェーズEで、入力値をワードラインWLに伝達して演算を行う。回路の構造及びレイアウト上で大きい漏洩電流が発生する構造、又は、閾値よりも遅い周波数のクロックサイクルを使用する回路では第2動作420が使用され得る。
【0084】
メモリ装置は、状況に合わせて有利な方式で選択的に動作オプションを決定して使用することができる。例えば、メモリ装置は、メモリ装置の動作周波数又は漏洩のうち少なくとも1つに基づいてメモリ装置の第1動作410又は第2動作420を選択してもよい。メモリ装置は、動作周波数が閾値周波数よりも低い場合に第2動作420を行い、動作周波数が閾値周波数以上である場合に第1動作410を行ってもよい。メモリ装置は、漏洩が閾値よりも大きい場合に第2動作420を行い、漏洩が閾値以下である場合に第1動作410を行ってもよい。メモリ装置は、前述した動作周波数又は漏洩電流を監視する回路をさらに含んでもよく、メモリ装置のメモリコントローラ、入力/ワードラインドライバ、又は、外部プロセッサがいずれかの動作モードが効果的であるかを決定できる。
【0085】
図5は、一実施形態に係る乗算器セルがアレイ構造に配置されたメモリ装置を示す。
【0086】
一実施形態に係るメモリ装置(例えば、
図2のメモリ装置200)は、
図3Aを参照して前述した乗算器セル510が数個配置されているメモリアレイを含んでもよい。複数のワードラインWL
0~WL
M-1及び出力ラインに沿って複数の乗算器セル510が配列される。入力/ワードラインドライバ520は、複数のワードラインW
L0~WL
M-1に入力値を伝達することができる。乗算器セル510のグループ/列の出力ラインごとに加算器530が配置されている。
図5に示されたメモリアレイを有するメモリ装置をSRAM IMCマクロ回路に示してもよい。上述したように、入力値は、ワードラインWL
0~WL
M-1を介して各乗算器セル510に伝達される。乗算器セル510は、メモリセルに格納された加重値と入力値との間の乗算結果をローカルビットラインLBLBに出力することができる。様々なローカルビットラインは加算器530に接続されている。加算器530は乗算結果を合算し、合算された結果を、例えば、出力部540で累積器に伝達することができる。出力部540の累積器は、各ビット桁ごとに合算された結果をビットシフトに基づいて結合することで、最終のMAC演算結果を出力することができる。
【0087】
また、メモリ装置は、乗算器セル510のメモリセルにアクセスしてメモリセルの加重値に対する読み出し動作又は書き込み動作のうち少なくとも1つのためのグローバルビットラインGBL、GBLB及びスイッチSWをさらに含んでもよい。グローバルビットラインGBL、GBLBは、スイッチSWを経由して乗算器セル510の第1トランジスタ及び第2トランジスタに接続される。GBLBは(クロスバー構成で)グローバルビットラインバー(global bit line bar)を示す。グローバルビットラインGBL、GBLBは、読み出し/書き込み回路580に接続される。例えば、メモリ装置は、読み出し動作又は書き込み動作の対象となるメモリセルの両端に位置しているスイッチSWをターンオンすることができる。メモリ装置は、該当メモリセルに接続されるワードラインを活性化することで、該当スイッチオンされたメモリセルにアクセスできる。メモリ装置は、読み出し/書き込み回路580を介して該当メモリセルに記録された加重値を読み出したり、該当メモリセルの加重値を変更及び/又は設定してもよい。
【0088】
下記の
図6Aでは、1つの乗算器セル510内で複数のメモリセルがいずれかのプルアップトランジスタを共有するように接続され、面積効率(チップ面積の単位当たり演算/格納)が改善される構造を説明している。
【0089】
図6A及び
図6Bは、一実施形態に係る乗算器セル内に複数のメモリセルがプルアップトランジスタを共有する例示的な構造を示す。
【0090】
一実施形態に係る乗算器セル610は、複数のメモリセル611が同じ乗算回路を共有(例えば、同じ乗算器セル610にビットを格納)する構造により実現されることができる。例えば、乗算器セル610のうち少なくとも1つの乗算器セル610は、乗算器セル610のようなプルアップトランジスタ619に接続された複数のメモリセル611を含んでもよい。プルアップトランジスタ619は、複数のメモリセル611の出力端に同じノード及び同じローカルビットラインに接続されてもよい。
図6Aは、入力/ワードラインドライバ620がm番目の入力を乗算器セル610内のメモリセル611のうちi番目のメモリセル611に印加する例示を示す。iは0以上N-1以下の整数であってもよい。
【0091】
入力/ワードラインドライバ620は、乗算器セル610の複数のメモリセルのうち、ターゲット乗算演算に使用される乗算器セル610のメモリセル611を選択することができる。入力/ワードラインドライバ620はデコーディング回路を含む。デコーディング回路は、入力信号から乗算器セル610に提供される入力値及び乗算器セル610に含まれている複数のメモリセル611のうち、ターゲット乗算演算に使用されるメモリセル611を指定/選択する信号をデコードする。例えば、
図6Aにおいて、ターゲット乗算演算に使用されるメモリセル611を指定する信号は、i番目のメモリセル611を指示してもよい(入力/ワードラインドライバ620に入力される信号i参照)。メモリ装置は、いずれかの乗算器セル610に含まれている複数のメモリセル611のうち、ターゲット演算に対応する加重値を有するメモリセル611に接続されたワードラインを活性化し、残りのメモリセル611に接続されたワードラインを不活性化してもよい。乗算器セル610内では一回の乗算演算について1つのメモリセル611のみが活性化し、残りは全て不活性化してもよい。プルアップラインPU
mには常に入力信号が印加され、ワードラインのうち活性化されたワードラインにのみ入力信号が一時的に印加される。入力/ワードラインドライバ620は、プルアップラインPU
mと活性化されたワードラインWL
m、iには同じ論理値を印加し得る。
【0092】
例示的に、入力/ワードラインドライバ620は、m番目のプルアップラインPUm及びm番目の入力に対する乗算器セル610内でi番目のワードラインWLm、iにm番目の入力値INmを印加してもよい。残りのワードラインWLm、kは不活性化されてもよい。タイミング図に示すように、m番目の乗算器セル610は、i番目のワードラインを介して受信された入力値とi番目のメモリセル611の加重値との間の乗算結果Pm、iをローカルビットラインで共有されたプルアップトランジスタ619を介して出力することができる。言い換えれば、乗算器セル610は、m番目の入力値INm及びi番目の加重値Qm、i間の乗算結果Pm、iを出力することができる。
【0093】
図6Aにおいて、i番目のワードラインWL
m、i及びm番目のプルアップラインPU
mに入力値が印加され、i番目の加重値Q
m、iが1又は0である例示を示している。i番目の加重値Q
m、iが1である例示で、入力値IN
mが1であるサイクル601で、
図3Eに示すように乗算結果P
m、iは0を示し、入力値IN
mが0であるサイクル602で、
図3Cに示すように乗算結果P
m、iは1を示す。i番目の加重値Q
m、iが0である例示で、
図3B及び
図3Dに示すように、全てのサイクル601,602で乗算結果P
m、iが1に示される。
【0094】
参考として、
図3Aの真理値表は、いずれか1つのワードラインに接続されているメモリセルとプルアップトランジスタに同じ入力値が印加されていると仮定する。
図6Aにおいて、不活性化された残りのワードラインWL
m、kとプルアップトランジスタに印加される信号の論理値が互いに独立して異なるため、残りのワードラインWL
m、kに接続されたメモリセルについては
図3Aの真理値表が適用されない。例示的に、不活性化された残りのワードラインWL
m、kに接続されたメモリセルでは、第1トランジスタ及び第2トランジスタが(例えば、スイッチSWによって)ターンオフされるため、該当メモリセルの加重値が設定されているノードが出力端から分離される。不活性化された残りのワードラインWL
m、kに接続されたメモリセルに設定された加重値は出力端に関係なくなり、残りのワードラインWL
m、kに接続されたメモリセルは出力形成から排除される。したがって、
図6Aに示された構造で乗算器セルは、活性化したi番目のワードラインWL
m、iに接続されたメモリセル及びプルアップトランジスタ619による乗算結果に対応する信号のみを出力端で出力することができる。いずれか1つの乗算器セル610内で同じプルアップトランジスタ619を共有しているメモリセル611の個数が増加するほど、面積効率が改善されることができる。
【0095】
一実施形態によれば、メモリ装置は複数の演算を順に行い、各演算に対応するメモリセルを選択的に活性化してもよい。すなわち、乗算器セルでメモリセルは、個別的に該当する演算に対して順に活性化してもよい。いずれか1つの出力ラインにM個の乗算器セルが配置され、各乗算器セルがN個のメモリセルを含んでいる場合、メモリセルの総数は、M×N個である。各演算ごとにM個の乗算器セルのそれぞれで1つのメモリセルが選択されるため、メモリ装置は、M×N個のメモリセルのうちM個のメモリセルを選択してもよい。メモリ装置は、複数の演算のうち第1演算について(M個の乗算器セルのそれぞれに対して)複数のメモリセルのうち第1メモリセルを選択し、同じプルアップトランジスタ619を介して乗算結果に対応する信号を出力することができる。メモリ装置は、複数の演算のうち第2演算については複数のメモリセルのうち第2メモリセルを選択し、同じプルアップトランジスタ619を介して乗算結果に対応する信号を出力することができる。
【0096】
例示的に、
図6Bを参照すると、メモリ装置は、巨大なニューラルネットワーク690bの演算を複数の演算に分けて実行してもよい。各演算に対応するニューラルネットワークの加重値が乗算器セルで複数のメモリセルに分配されて設定されてもよい(そして、様々な乗算器セルについても同様)。メモリ装置は、ニューラルネットワーク演算のうち第1演算を行う場合、各乗算器セル610ごとに第1演算のための第1加重値が設定/格納された第1メモリセル611bを活性化する。関わっている乗算器セル610に対して、各乗算器セル610内の残りのメモリセルは不活性化される。第1演算を行った後ニューラルネットワーク演算のうち第2演算を行う場合、メモリ装置は、各乗算器セル610ごとに第2演算のための第2加重値を格納している第2メモリセル612bを活性化する。第1メモリセル611bを含んでいる残りのメモリセルは不活性化される。
図6Bは簡明な説明のために、ニューラルネットワーク690bの中でも任意のいずれか1つのノードに対応する第1演算及びそのノードに接続された後続ノードに対応する第2演算が、同じ乗算器セル610内の異なるメモリセル611b,612bを用いて実行する例示について説明する。この例示で、第1演算は、該当ノードに伝播する複数の入力値INのうちいずれか1つの入力値IN
mに第1加重値Q
m、iを乗算する演算であり、第2演算は、後続ノードに伝播する複数の入力値IN’の中でもいずれか1つの入力値IN’
mに第2加重値Q
m、jを乗算する演算である。但し、これに限定されることなく、同じ乗算器セル内のメモリセルは、同じ作業(例えば、同じニューラルネットワーク演算)内の他の部分の演算のための加重値を有したり、互いに異なる作業(例えば、同じ顔認識及びオブジェクト認識)のための加重値を有してもよい。以下、
図7を参照して、メモリセルを選択的に使用するためのアレイ構造について説明する。
【0097】
図7は、
図6Aに示された乗算器セルがアレイ構造に配置されているメモリ装置を示す。
【0098】
一実施形態に係るメモリ装置は、乗算器セル710を含む複数の乗算器セルを含んでもよい。例えば、乗算器セルはアレイ構造に配置されてもよい。複数の乗算器セルは、複数の出力ライン及び複数のワードラインに沿って配置されてもよい。
図7に示すように、入力/ワードラインドライバ720は、乗算器セル710に含まれた複数のメモリセルのうちターゲット作業に対応する加重値Q
m、iが設定されたいずれか1つのメモリセル(例えば、iに対応するメモリセル)を選択してもよい。入力/ワードラインドライバ720は、複数の乗算器セルに対して個別的にターゲット作業に対応する加重値Q
m、iが設定されたメモリセルに入力値IN
mを伝達することができる。したがって、メモリ装置は、複数のサイクルで様々な作業を行う場合、各サイクルで要求される加重値Q
m、iを各乗算器セル内のメモリセルに予め設定することができる。メモリ装置は、ターゲット作業が変更された場合、変更された作業に対応する加重値をメモリ装置の外部でロードする必要がなく、予め設定されたメモリセルのうちターゲット作業に対応する加重値Q
m、iが設定されたメモリセルを選択して乗算演算を行うことができる。
【0099】
同じワードラインに接続されている乗算器セルは同じ入力値INmを受信してもよい。複数の乗算器セルのそれぞれで他の乗算器セルのそれぞれと並列的に乗算演算を行うことができる。メモリ装置は、複数の乗算器セルのうち同じカラムライン(例えば、同じ出力ライン)に接続された乗算器セルの出力を同じ加算器730で合算できる。いずれか1つの乗算器セルと他の乗算器セルは互いに並列的に乗算結果を出力してもよい。いずれか1つの乗算器セル710内では1つのメモリセルに基づいた乗算演算が行われる。言い換えれば、各乗算器セル710がN個のメモリセルを含んでいる場合、入力/ワードラインドライバ720は、サイクルごとにN個のメモリセルのうち1つのメモリセルを選択することができる。出力ラインに接続されたM個の乗算器セルでM個の乗算演算が並列的に行われてもよい。出力ラインがT個である場合、メモリ装置のメモリアレイにおいて、M×T個の乗算演算が並列的に行われてもよい。同じ出力ラインに接続されたM個の乗算演算による結果は合算されるため、出力部740はT個の累積した出力値を生成することができる。
【0100】
図7に示されたメモリ装置では、各個別的な乗算器セル710内に含まれたメモリセルの個数が増加するほど、いずれか1つの乗算器セルによる1つの乗算演算のために要求されるトランジスタの個数は減少する。例えば、乗算器セル710が4個のメモリセルを含んでいる場合、1つの乗算演算は7.25個のトランジスタによって実現されるものと解釈される。各メモリセルが6個のトランジスタを含み、プルアップのための1つのトランジスタ、グローバルビットラインのための2つのスイッチそれぞれが2つのトランジスタを含んでいるため、(6×4+5)=29個のトランジスタを4個のメモリセルが共有されるためである。乗算器セル710が8個のメモリセルを含んでいる場合、1つの乗算演算は6.625個のトランジスタによって実現されると解釈される。同様に、(6×8+5)=53個のトランジスタを8個のメモリセルが共有されるためである。乗算器セル710が16個のメモリセルを含んでいる場合、1つの乗算演算は6.3125個のトランジスタによって実現されるものと解釈される。同様に、(6×16+5)=101個のトランジスタを16個のメモリセルが共有されるためである。ワードラインに沿ってアレイされて配置される複数の乗算器セルが1つの入力/ワードラインドライバ720によって駆動するため、面積オーバーヘッド(overhead)も減少し得る。一実施形態に係るメモリ装置では、他のIMCメモリ装置に比べて大きい面積低減の効果を示している。
【0101】
図7の右側に示すように、レイアウト790で1つのプルアップラインPUと複数のワードラインWL
0、0~WL
0、N-1のパターンが繰り返し示されている。
【0102】
図8は、一実施形態に係る乗算器セル810が一対のローカルビットラインを介して乗算結果を出力する例示を示す。
【0103】
一実施形態に係る乗算器セル810は、一対のローカルビットラインに接続されてもよい。乗算器セル810は(乗算器セル810の複数のメモリセルの中から選択された)第1メモリセル811に基づいた乗算結果を第1ローカルビットライン850Rに出力し、第2メモリセル812に基づいた乗算結果を第2ローカルビットライン850Lに出力してもよい。
図8において、第1メモリセル811は加重値Q
m、iが設定/格納されたメモリセル、第2メモリセル812は加重値Q
m、jが設定/格納されたメモリセルに例示される。参考として、
図3Aにおいて、第1ローカルビットライン850Rが出力端として示されているが、
図8では、第1ローカルビットライン850R及び第2ローカルビットライン850Lの両方で乗算結果が出力されてもよい。ここで、第1ローカルビットライン850Rでは乗算演算に対応するその結果として、
図1~
図7を参照して説明したものと同様に、入力値IN
m及び加重値Q
m、i間のNAND結果が出力されることができる。一方、第2ローカルビットライン850Lでは、乗算演算に対応するその結果として、加重値Q
m、jをインバースした値と入力値IN
mとの間のNAND結果が出力されることができる。メモリ装置は、第1メモリセル811には演算される加重値に対応する値を設定/格納し、第2メモリセル812には演算される加重値をインバースした値を設定/格納することができる。
【0104】
メモリ装置は、第1ローカルビットライン850R(例えば、第1出力ライン)への乗算結果を出力するための第1プルアップトランジスタ819-Rと共に、第2ローカルビットライン850L(例えば、第2出力ライン)への乗算結果を出力するための第2プルアップトランジスタ819-Lを含んでもよい。したがって、第1ローカルビットライン850Rに接続されている第1メモリセル811は加重値に対応する値を有することができる。第2ローカルビットライン850Lに接続されている第2メモリセル812は加重値をインバースした値を有する。メモリ装置は、第1出力ライン及び第2出力ラインに接続されたメモリセルを複数含んでもよい。
【0105】
第1メモリセル811の第1ローカルビットライン850Rを介して出力される乗算結果は、第2メモリセル812の第2ローカルビットライン850Lを介して出力される乗算結果と加算器で合算される。言い換えれば、同じ乗算器セルであっても、互いに異なるローカルビットラインに接続されたメモリセルの乗算結果が加算器で合算されてもよい。
図8に示された構造は、2つのカラムラインが1つの乗算器セル810に併合されたものと解釈されることができる。
図8に示された乗算器セル810(乗算器セル810を介して点線で示された)は、N個のメモリセルを含んでもよい。第1ローカルビットライン850Rに接続されたN/2個のメモリセルのうち第1メモリセル811(例えば、i番目のメモリセル)、第2ローカルビットライン850Lに接続されたN/2個のメモリセルのうち第2メモリセル812(例えば、j番目のメモリセル)でそれぞれ乗算演算が行われる。ここで、Nは、2の倍数である整数であってもよい。各メモリセルには、第1ワードラインRWL及び第2ワードラインLWLが1つずつ接続されてもよい。入力/ワードラインドライバ820は、第1ワードラインRWL
m、0~RWL
m、N-1のうちいずれか1つのワードラインRWL
m、iを活性化し、残りのワードラインRWL
m、kを不活性化してもよい。入力/ワードラインドライバ820は、第2ワードラインLWL
m、0~LWL
m、N-1のうちいずれか1つのワードラインLWL
m、jを活性化し、残りのワードラインLWL
m、pを不活性化してもよい。i、j、k、pはそれぞれ0以上の整数であり、iはkとは異なり、pはjと異なる。
【0106】
参考として、メモリ装置は、乗算器セル810内で偶数番目のインデックス/位置の加重値のいずれか1つの加重値を有するメモリセルに基づいた乗算演算を第1ローカルビットライン850Rに、奇数番目のインデックス/位置の加重値のいずれか1つの加重値を有するメモリセルに基づいた乗算演算を第2ローカルビットライン850Lに出力してもよい。但し、加重値の設定方式を前述に限定されることはない。例示的に、本明細書では対称的な構造のために、いずれかの乗算器セル810内で第1ローカルビットライン850Rに接続されているメモリセルの個数と第2ローカルビットライン850Lに接続されているメモリセルの個数が同一である例示について説明したが、必ずこれに限定されることはない。設計に応じて、各ローカルビットラインに接続されているメモリセルの個数が異なってもよい。
【0107】
一実施形態に係るメモリ装置は、いずれか1つの乗算器セル810内で同じ入力値IN
mに対して一回に第1加重値Q
m、i及び第2加重値Q
m、jに対する乗算を同時に行うことができる。入力/ワードラインドライバ820は、一回にプルアップラインPU
m、第2ワードラインLWL
m、j、第1ワードラインRWL
m、iに入力値IN
mの論理値を印加してもよい。入力/ワードラインドライバ820は、残りのワードラインには全て0の論理値を印加してもよい。第1ローカルビットライン850Rと第2ローカルビットライン850Lのそれぞれで第1乗算結果RPと第2乗算結果LPが同時に出力されてもよい。
図8に示された構造は対称的な構造であることから、レイアウト(layout)の側面で有利である。
【0108】
図9は、
図8に示された乗算器セルがアレイ構造に配置されたメモリ装置を示す。
【0109】
図7に示されたアレイ構造において、
図9に示された乗算器セル910が配置されてもよい。各乗算器セル910当たり2つのワードラインRWL、LWLが要求される。また、各乗算器セル910は、2つのローカルビットラインLBL及びLBLBを介して乗算結果を同時に2つ出力してもよい。例示的に、
図9に示す第1ローカルビットライン950RはLBLB、第2ローカルビットライン950LはLBLに対応する。入力/ワードラインドライバ920は各乗算器セル910ごとに第1ローカルビットライン950Rに対応する第1メモリセル、第2ローカルビットライン950Lに対応する第2メモリセルを選択し、個別に並列的な乗算演算を実行させることができる。参考として、メモリ装置が任意のサイクルにおいて、いずれか1つのメモリセルを利用した乗算結果が第1ローカルビットライン950Rに出力するとしても、該当メモリセルの乗算結果を常に第1ローカルビットライン950Rに出力するものと固定することはない。メモリ装置は、他のサイクルで該当メモリセルを利用した乗算結果を第2ローカルビットライン950Lに出力するよう動作してもよい。この場合、メモリ装置は、該当メモリセルに反転された加重値を設定/格納することができる。
【0110】
ローカルビットラインの乗算結果は、個別的に加算器930に伝達されることができる。例えば、
図9に示された例示において、乗算器セル910の第1メモリセル及び第2メモリセルが第1ローカルビットライン950Rにマッピングされ、第3メモリセル及び第4メモリセルが第2ローカルビットライン950Lにマッピングされていると仮定する。メモリ装置は、第1メモリセルに基づいた乗算結果を第3メモリセル又は第4メモリセルに基づいた乗算結果と加算器930で合算することができる。同様に、メモリ装置は、第2メモリセルに基づいた乗算結果を第3メモリセル又は第4メモリセルに基づいた乗算結果と加算器930で合算することができる。
図8を参照して上述したように、同じ乗算器セル910内に配置されたメモリセルであっても、互いに異なるローカルビットライン(例えば、奇数/偶数)に対応するメモリセルに基づいた乗算結果は並列的に行われてもよく、さらに、加算器930で合算されてもよい。出力部940は、各出力ラインに接続されている加算器930の出力を累積して最終の乗算結果を出力することができる。
【0111】
図10は、一実施形態に係る乗算器セルの動作方法を示すフローチャートである。
【0112】
まず、ステップS1010において、メモリ装置は、入力値を乗算器セルに伝達する。例えば、メモリセルがワードラインを介して入力値を受信してもよい。上述したように、メモリセルは互いに反対方向に(ペアリングされた端)接続されている2つのインバータ及び2つのインバータの両端(例えば、ペアリングされた端)に接続されている2つのトランジスタを有してもよい。メモリセルの出力端に接続されたプルアップトランジスタが入力値をゲート端子で受信してもよい。
【0113】
そして、ステップS1020において、メモリ装置の乗算器セルが乗算結果に対応する信号を出力する。例えば、メモリ装置は、プルアップトランジスタの出力端で入力値とメモリセルに格納された加重値との間の乗算結果に対応する信号を出力することができる。
図3Aを参照して前述した真理値表により、プルアップトランジスタ及びメモリセルの出力端で乗算結果に対応する信号(例えば、NAND結果)が出力されることができる。
【0114】
図11は、一実施形態に係るメモリ装置の動作方法を示すフローチャートである。
【0115】
まず、ステップS1101において、メモリ装置は、メモリアレイのデータを管理する。例えば、メモリ装置は、読み出し/書き込み回路を用いて、メモリアレイの各メモリセルに加重値(又は、MAC演算のようなIMC演算のためのオペランドとしてサービングする任意のデータ)を設定/格納してもよい。メモリ装置の外部プロセッサがメモリ装置に使用しようとするデータ及び加重値が設定されるメモリセルのアドレスを指示してもよい。
【0116】
そして、ステップS1102において、メモリ装置は、MAC演算を開示するか否かを決定する。例えば、メモリ装置は、MAC演算の対象又はオペランドとなる入力値を受信する場合、MAC演算を開始することができる。
【0117】
次に、ステップS1010において、メモリ装置は、入力値を乗算器セルに伝達する。例えば、ステップS1111において、メモリ装置は、入力信号及び加重値セットアドレスを入力/ワードラインドライバに伝達する。外部プロセッサがメモリ装置に前述した入力信号及び加重値セットアドレス(例えば、乗算器セル内に含まれたメモリセルのうち、i番目のメモリセルを指示する信号)を伝達する。ステップS1112において、入力/ワードラインドライバが制御信号を生成する。例えば、入力/ワードラインドライバは、入力信号及び加重値セットアドレスをデコーディングし、プルアップラインPUm及びワードラインWLm、iに入力値と同じ論理値を印加してもよい。入力/ワードラインドライバは、残りのワードラインについては0の論理値を印加する。
【0118】
そして、ステップS1120において、メモリ装置は、乗算器セル内で選択されたメモリセルの乗算結果に対応する信号を出力する。例えば、各乗算器セルは、入力値INmと選択されたメモリセルの加重値Qm、iとの間の乗算結果に対応する信号(例えば、NANDの結果値)をローカルビットラインに出力することができる。同じ出力ラインに接続された複数の乗算器セルの出力は、当該出力ラインの加算器に伝達することができる。
【0119】
ステップS1130において、加算器が各乗算結果の和演算を行う。上述したように、加算器はNAND結果を受信するため、NAND結果をインバースした値を合算する。加算器は、合算された乗算結果値を累積器に伝達する。
【0120】
ステップS1140において、累積器が和演算の結果を累積する。後述するが、累積器は入力値がマルチビットである場合、該当するビット桁によるビットシフトを行い、次のビット桁に対する乗算結果を累積する。
【0121】
ステップS1150において、メモリ装置は、乗算演算が行われた入力値が最後のビットであるか否かを判断する。例えば、メモリ装置は、最後のビットに対する演算を行う場合、累積器の出力を出力レジスタに伝達することができる。入力値がシングルビットである場合には累積する必要がないため、累積器は、乗算結果を出力レジスタにバイパスしてもよい。現在の入力ビット値が最後のビットでない場合、メモリ装置は次のビット桁の入力ビット値に対する演算を同一に行われてもよい。メモリ装置は、加算器で乗算結果が出力されると、累積器を介して以前に格納された累積結果をビットシフトした後、現在の乗算結果と合算してその結果を再び累積器に格納することにより累積することができる。
【0122】
ステップS1160において、メモリ装置は累積した結果を出力レジスタに格納する。例えば、メモリ装置は、単一ビット、又はマルチビットのうち最後のビットに対応する入力信号を受信した場合、該当入力信号に対する累積器演算の結果を出力レジスタに格納してもよい。
【0123】
ステップS1170において、メモリ装置は累積器を初期化し、MAC演算が完了した場合には、ステップS1180でプロセスを終了する。
【0124】
一実施形態に係るメモリ装置において、10個又は12個のトランジスタで128Kbのクロスバーアレイ構造を実現する比較の実施形態に比べて、乗算機能を実現するためのトランジスタ、全体トランジスタの要求数が30%以上に改善及び/又は減少されることができる。
【0125】
図12は、一実施形態に係る乗算器セルの実現を例示する。
【0126】
一実施形態によれば、電子装置1200は、HD(High Density)IMCIN-Memory Computing)マクロ1210、CPU1220、RAM1230、論理ブロック1240、及びHE(High Efficiency)IMCマクロ1250を含む。
【0127】
HD IMCマクロ1210は、
図1~
図11を参照して前述した乗算器セルが配列されたメモリマクロユニット(memory macro unit)を示す。HD IMCマクロ1210は、高いメモリ密度(memory density)及びメモリ容量(High memory capacity)を有する。HD IMCマクロ1210は、前述した乗算器セルがクロスバー状に配置された構造を有する。乗算器セルに複数のメモリセルが集積されるため、メモリマクロユニットの製造に必要なトランジスタ数が減少し得る。
【0128】
CPU1220は、HS(High Speed)IMCマクロ1221を含む。HS IMCマクロ1221は、高い処理量及び駆動速度を有し、レジスタファイルタイプのセル構造を示す。
【0129】
RAM1230は、システムメモリで使用するためのメモリを含む。
【0130】
論理ブロック1240は、様々な論理演算に使用される論理回路を含む。
【0131】
HE(High Efficiency)IMCマクロ1250は、高いエネルギー効率及び低い供給電圧動作(supply voltage operation)を有する。
【0132】
一実施形態に係る電子装置1200は、例示的にAIアルゴリズム(例えば、顔認識)のための専用ハードウェア加速器として実現されてもよい。
【0133】
本明細書で説明した実施形態は、ニューラルネットワークに入力される入力データと加重値データのようなニューラルネットワークデータを駆動するものと説明したが、メモリ装置の実施形態がこのようなアプリケーションに限定されることはない。本明細書で説明したIMCメモリ装置の特徴は、任意のタイプの格納されているデータ又は入力データと共に使用されてもよい。
【0134】
以上で説明された実施形態は、ハードウェア構成要素、ソフトウェア構成要素、又はハードウェア構成要素及びソフトウェア構成要素の組み合せで具現される。例えば、本実施形態で説明した装置及び構成要素は、例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ(digital signal processor)、マイクロコンピュータ、FPA(field programmable array)、PLU(programmable logic unit)、マイクロプロセッサー、又は命令(instruction)を実行して応答する異なる装置のように、1つ以上の汎用コンピュータ又は特殊目的コンピュータを用いて具現される。処理装置は、オペレーティングシステム(OS)及びオペレーティングシステム上で実行される1つ以上のソフトウェアアプリケーションを実行する。また、処理装置は、ソフトウェアの実行に応答してデータをアクセス、格納、操作、処理、及び生成する。理解の便宜のために、処理装置は1つが使用されるものとして説明する場合もあるが、当技術分野で通常の知識を有する者は、処理装置が複数の処理要素(processing element)及び/又は複数類型の処理要素を含むことが把握する。例えば、処理装置は、複数のプロセッサ又は1つのプロセッサ及び1つのコントローラを含む。また、並列プロセッサ(parallel processor)のような、他の処理構成も可能である。
【0135】
ソフトウェアは、コンピュータプログラム、コード、命令、又はそのうちの一つ以上の組合せを含み、希望の通りに動作するよう処理装置を構成したり、独立的又は結合的に処理装置を命令することができる。ソフトウェア及び/又はデータは、処理装置によって解釈されたり処理装置に命令又はデータを提供するために、いずれかの類型の機械、構成要素、物理的装置、仮想装置、コンピュータ格納媒体又は装置、又は送信される信号波に永久的又は一時的に具体化することができる。ソフトウェアはネットワークに連結されたコンピュータシステム上に分散され、分散した方法で格納されたり実行され得る。ソフトウェア及びデータは一つ以上のコンピュータで読出し可能な記録媒体に格納され得る。
【0136】
本実施形態による方法は、様々なコンピュータ手段を介して実施されるプログラム命令の形態で具現され、コンピュータ読み取り可能な記録媒体に記録される。記録媒体は、プログラム命令、データファイル、データ構造などを単独又は組み合せて含む。記録媒体及びプログラム命令は、本発明の目的のために特別に設計して構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知のものであり使用可能なものであってもよい。コンピュータ読み取り可能な記録媒体の例として、ハードディスク、フロッピー(登録商標)ディスク及び磁気テープのような磁気媒体、CD-ROM、DVDのような光記録媒体、フロプティカルディスクのような磁気-光媒体、及びROM、RAM、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置を含む。プログラム命令の例としては、コンパイラによって生成されるような機械語コードだけでなく、インタプリタなどを用いてコンピュータによって実行される高級言語コードを含む。
【0137】
上記で説明したハードウェア装置は、本発明に示す動作を実行するために1つ以上のソフトウェアモジュールとして作動するように構成してもよく、その逆も同様である。
【0138】
上述したように実施形態をたとえ限定された図面によって説明したが、当技術分野で通常の知識を有する者であれば、上記の説明に基づいて様々な技術的な修正及び変形を適用することができる。例えば、説明された技術が説明された方法と異なる順に実行され、及び/又は説明されたシステム、構造、装置、回路などの構成要素が説明された方法とは異なる形態に結合又は組み合わせられてもよく、他の構成要素又は均等物によって置き換え又は置換されたとしても適切な結果を達成することができる。
【0139】
したがって、他の具現、他の実施形態及び特許請求の範囲と均等なものも後述する特許請求範囲の範囲に属する。