(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-03
(45)【発行日】2023-04-11
(54)【発明の名称】メモリデバイス及びその動作方法
(51)【国際特許分類】
G06F 17/10 20060101AFI20230404BHJP
【FI】
G06F17/10 S
(21)【出願番号】P 2021138238
(22)【出願日】2021-08-26
【審査請求日】2021-08-26
(32)【優先日】2020-09-08
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-07-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】599129074
【氏名又は名称】旺宏電子股▲ふん▼有限公司
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ハン-ウェン フ
(72)【発明者】
【氏名】ユン-チュン リー
(72)【発明者】
【氏名】ボ-ロン リン
(72)【発明者】
【氏名】フアイ-ム ワン
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2019-139300(JP,A)
【文献】国際公開第2020/046495(WO,A1)
【文献】特表2021-536623(JP,A)
【文献】米国特許出願公開第2020/0034686(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/10
(57)【特許請求の範囲】
【請求項1】
複数の重みを格納する複数のメモリセルを含むメモリアレイ
であって、前記複数のメモリセルは、複数のメモリセル電流を生成する、メモリアレイと、
前記メモリアレイに結合され、複数の入力データ及び前記複数の重みに対してビット単位の乗算を行って複数の乗算結果を生成する乗算回
路と、
前記乗算回路に結合され、前記複数の乗算結果に対してデジタル累算を行うデジタル累算回路と、
前記メモリアレイに結合され、
第2のMAC演算結果を生成するために前記複数のメモリセル電流に対してアナログ累算を行って第1のMAC演算結果を生成するアナログ累算回路と、
前記デジタル累算回路及び前記アナログ累算回路に結合され、前記アナログ累算を行うのか、前記デジタル累算を行うのか、ハイブリッド累算を行うのかを決定する決定ユニットと
を含むメモリデバイスであって、
前記ハイブリッド累算を行う際に、前記デジタル累算回路をトリガするかどうかが前記第1のMAC演算結果に基づいて
おり、
前記決定ユニットが前記アナログ累算を行うことを決定する場合、前記第1のMAC演算結果は、MAC演算結果として使用され、
前記決定ユニットが前記デジタル累算を行うことを決定する場合、前記第2のMAC演算結果は、前記MAC演算結果として使用され、
前記決定ユニットが前記ハイブリッド累算を行うことを決定する場合、前記第1のMAC演算結果は、前記デジタル累算回路がトリガされる前に、前記MAC演算結果として使用され、前記第2のMAC演算結果は、前記デジタル累算回路がトリガされた後に、前記MAC演算結果として使用される、メモリデバイス。
【請求項2】
前記アナログ累算を行う際に、前記決定ユニットが前記アナログ累算回路を有効にするが、前記デジタル累算回路を無効にし、
前記デジタル累算を行う際に、前記決定ユニットが前記デジタル累算回路を有効にするが、前記アナログ累算回路を無効にし、
前記ハイブリッド累算を行う際に、前記決定ユニットが前記アナログ累算回路及び前記デジタル累算回路を両方とも有効にする、請求項1に記載のメモリデバイス。
【請求項3】
前記メモリデバイスがさらに、
前記アナログ累算回路及び前記デジタル累算回路に結合され、前記第1のMAC演算結果とトリガ基準値とを比較して、前記デジタル累算回路にトリガ信号を出力し、前記デジタル累算を行う前記デジタル累算回路をトリガするコンパレータを含む、請求項1又は2に記載のメモリデバイス。
【請求項4】
前記アナログ累算回路が前記メモリアレイに結合されたアナログデジタル変換器を含み、前記複数のメモリセルからの前記複数のメモリセル電流が、足し合わされ、前記アナログデジタル変換器に入力されて、前記第1のMAC演算結果に変換される、請求項1から3のいずれか一項に記載のメモリデバイス。
【請求項5】
前記デジタル累算回路が、計数ユニットを含み、前記計数ユニットは、前記乗算回路に結合され、前記複数の乗算結果に対してビット単位の計数を行い、
前記第2のMAC演算結果を生成する、請求項1から4のいずれか一項に記載のメモリデバイス。
【請求項6】
前記メモリデバイスがさらに、
前記乗算回路及び前記計数ユニットに結合され、前記乗算回路からの前記複数の乗算結果に対してグルーピング演算を行い、複数のグルーピング結果を生成し、前記複数のグルーピング結果を前記計数ユニットに送るグルーピング回路を含
み、
前記グルーピング演算は、多数決関数方式の演算である、請求項5に記載のメモリデバイス。
【請求項7】
前記複数の入力データのそれぞれ又は前記複数の重みのそれぞれの複数のビットが複数のビットベクトルに分割され、
前記複数のビットベクトルの各ビットが2進フォーマットから単進符号に変換され、
前記単進符号で表された前記複数のビットベクトルの前記各ビットが、複数回複製されてunFDP(展開ドット積)フォーマットになり、
前記乗算回路が、前記unFDPフォーマットで表された前記複数の入力データ及び前記複数の重みに対して乗算演算を行って前記複数の乗算結果を生成する、請求項1から6のいずれか一項に記載のメモリデバイス。
【請求項8】
前記複数の乗算結果に対してグルーピング演算を行う際に、前記複数の乗算結果に対してそれぞれグルーピング演算を行って複数のグルーピング結果を生成するグルーピング回路を含む、請求項7に記載のメモリデバイス。
【請求項9】
ビット単位の計数を行う際に、前記複数の乗算結果に対してそれぞれグルーピング演算を行うことにより生成された複数のグルーピング結果にそれぞれ異なる累算重みが割り当てられて、第2のMAC演算結果が生成される、請求項7に記載のメモリデバイス。
【請求項10】
前記グルーピング回路が、複数の多数決ユニットを含む多数決回路である、請求項6に記載のメモリデバイス。
【請求項11】
メモリデバイスの動作方法であって、前記動作方法は、
前記メモリデバイスのメモリアレイの複数のメモリセルに複数の重みを格納する段階
であって、前記複数のメモリセルは、複数のメモリセル電流を生成する、格納する段階と、
複数の入力データ及び前記複数の重みに対してビット単位の乗算を行って複数の乗算結果を生成する段
階と、
アナログ累算を行うのか、デジタル累算を行うのか、ハイブリッド累算を行うのかを決定する段階であって、
前記アナログ累算を行う際には、前記複数のメモリセル電流に対して前記アナログ累算を行って
、MAC演算結果として第1のMAC演算結果を生成し
前記デジタル累算を行う際には、前記複数の乗算結果に対して前記デジタル累算を行って
、前記MAC演算結果として第2のMAC演算結果を生成し、
前記ハイブリッド累算を行う際には、前記デジタル累算をトリガするかどうかを前記第1のMAC演算結果に基づいて決定
し、
前記第1のMAC演算結果は、前記デジタル累算がトリガされる前に、前記MAC演算結果として使用され、前記第2のMAC演算結果は、前記デジタル累算がトリガされた後に、前記MAC演算結果として使用される、
決定する段階と
を含むメモリデバイスの動作方法。
【請求項12】
前記動作方法がさらに、
前記複数のメモリセルからの前記複数のメモリセル電流を足し合わせ、アナログデジタル変換を行って前記第1のMAC演算結果にする段階を含む、請求項11に記載のメモリデバイスの動作方法。
【請求項13】
前記第1のMAC演算結果がトリガ基準値と比較され、前記デジタル累算をトリガするかどうかが決定される、請求項11又は12に記載のメモリデバイスの動作方法。
【請求項14】
前記複数の入力データのそれぞれ又は前記複数の重みのそれぞれの複数のビットが複数のビットベクトルに分割され、
前記複数のビットベクトルの各ビットが2進フォーマットから単進符号に変換され、
前記単進符号で表された前記複数のビットベクトルの前記各ビットが、複数回複製されてunFDP(展開ドット積)フォーマットになり、
前記unFDPフォーマットで表された前記複数の入力データ及び前記複数の重みに対して複数の乗算演算が行われ、前記複数の乗算結果が生成される、請求項11から13のいずれか一項に記載のメモリデバイスの動作方法。
【請求項15】
ビット単位の計数を行う際に、前記複数の乗算結果に対してそれぞれグルーピング演算を行うことにより生成された複数のグルーピング結果にそれぞれ異なる累算重みが割り当てられて、前記第2のMAC演算結果が生成される、請求項14に記載のメモリデバイスの動作方法。
【請求項16】
前記複数の乗算結果に対してグルーピング演算を行う段階が、前記複数の乗算結果に対して多数決演算を行うことで実現さ
れ、前記グルーピング演算は、多数決関数方式の演算である、請求項14又は15に記載のメモリデバイスの動作方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概してインメモリコンピューティングのメモリデバイス及びその動作方法に関する。
【背景技術】
【0002】
最近、多くの分野の非常に効果的なソリューションとして、人工知能(「AI」)が台頭している。AIの重要な問題とは、AIが、積和演算(MAC)を行うための大量の入力データ(例えば、入力特徴マップ)及び重みで構成されていることである。
【0003】
しかしながら、現在のAI構造は通常、IO(入力/出力)のボトルネック及び非効率的なMAC演算フローに直面する。
【0004】
高い精度を実現するためには、マルチビットの入力及びマルチビットの重みを有するMAC演算を行うことになるであろう。しかし、IOのボトルネックは悪化し、効率は低下する。
【0005】
インメモリコンピューティング(「IMC」)は、IMCがプロセス中心のアーキテクチャにおける算術論理演算ユニット(ALU)の複雑さを低減し、メモリ内のMAC演算の大量並列処理を提供できるので、MAC演算を加速させることができる。
【0006】
不揮発性IMC(NVMベースのIMC)の利点は、不揮発性記憶装置、データ移動の削減によるものである。
【0007】
「コンピューティングインメモリチップ及びメモリセルアレイ構造」と題する米国特許出願公開第20210151106号は、コンピューティングインメモリチップ及びメモリセルアレイ構造において、その中にあるメモリセルアレイが、アレイ内に配置された複数のメモリセルサブアレイを含むことを開示している。各メモリセルサブアレイは、アレイ内に配置された複数のスイッチユニット及び複数のメモリセルを有し、各列の全メモリセルの第1端子がソース線に接続されており、全メモリセルの第2端子がビット線に接続されており、各行の全メモリセルの第3端子がスイッチユニットを介してワード線に接続されており、これに対応してメモリセルの複数の行が複数のスイッチユニットに接続されており、複数のスイッチユニットの制御端子がメモリセルサブアレイのローカルワード線に接続されており、メモリセルサブアレイをアクティブにするかどうかがローカルワード線を制御することで制御される。
【0008】
IMCを実行する際に、演算速度及び演算精度が両方とも満たされているならば、IMC性能は改良されることになる。
【発明の概要】
【0009】
1つの実施形態によれば、メモリデバイスが提供される。本メモリデバイスは、複数の重みを格納する複数のメモリセルを含むメモリアレイと、メモリアレイに結合され、複数の入力データ及び複数の重みに対してビット単位の乗算を行って複数の乗算結果を生成する乗算回路であって、ビット単位の乗算を行う際に、複数のメモリセルが複数のメモリセル電流を生成する、乗算回路と、乗算回路に結合され、複数の乗算結果に対してデジタル累算を行うデジタル累算回路と、メモリアレイに結合され、複数のメモリセル電流に対してアナログ累算を行って第1のMAC演算結果を生成するアナログ累算回路と、デジタル累算回路及びアナログ累算回路に結合され、アナログ累算を行うのか、デジタル累算を行うのか、ハイブリッド累算を行うのかを決定する決定ユニットとを含む。ハイブリッド累算を行う際に、デジタル累算回路をトリガするかどうかが第1のMAC演算結果に基づいている。
【0010】
別の実施形態によれば、メモリデバイスの動作方法が提供される。本動作方法は、メモリデバイスのメモリアレイの複数のメモリセルに複数の重みを格納する段階と、複数の入力データ及び複数の重みに対してビット単位の乗算を行って複数の乗算結果を生成する段階と、複数の入力データ及び複数の重みに対してビット単位の乗算を行って複数の乗算結果を生成する段階であって、ビット単位の乗算では、複数のメモリセルが複数のメモリセル電流を生成する、生成する段階と、アナログ累算を行うのか、デジタル累算を行うのか、ハイブリッド累算を行うのかを決定する段階であって、アナログ累算を行う際には、複数のメモリセル電流に対してアナログ累算を行って第1のMAC演算結果を生成し、デジタル累算を行う際には、複数の乗算結果に対してデジタル累算を行って第2のMAC演算結果を生成し、ハイブリッド累算を行う際には、第1のMAC演算結果に基づいてデジタル累算をトリガするかどうかを決定する、決定する段階とを含む。
【図面の簡単な説明】
【0011】
【
図1】本願の1つの実施形態によるIMC(In-Memory-Computing:インメモリコンピューティング)メモリデバイスの機能ブロック図を示している。
【0012】
【
図2】本願の1つの実施形態によるデータマッピングを示している。
【0013】
【
図3A】本願の1つの実施形態によるデータマッピングの実行可能な例を示している。
【
図3B】本願の1つの実施形態によるデータマッピングの実行可能な例を示している。
【
図3C】本願の1つの実施形態によるデータマッピングの実行可能な例を示している。
【0014】
【
図4】本願の1つの実施形態による乗算演算の一例を示している。
【0015】
【
図5A】本願の1つの実施形態によるグルーピング演算(多数決演算)及び計数を示している。
【
図5B】本願の1つの実施形態によるグルーピング演算(多数決演算)及び計数を示している。
【0016】
【
図6】本願の1つの実施形態によるMAC演算フローを示している。
【0017】
【
図7A】本願の1つの実施形態における固定メモリページのプログラミングを示している。
【
図7B】本願の1つの実施形態における読み出し電圧調整のフローチャートを示している。
【0018】
【
図8】本願の1つの実施形態によるMAC演算フローを示している。
【0019】
以下の詳細な説明では、説明を目的として、開示される実施形態の十分な理解を提供するために、多数の具体的な詳細が記載されている。しかしながら、こうした具体的な詳細がなくても、1つ又は複数の実施形態が実施され得ることは明らかであろう。他の例では、図面を簡略にするために、よく知られている構造及びデバイスが概略的に示されている。
【発明を実施するための形態】
【0020】
本開示の専門用語は、本開示の技術分野の一般的定義に基づいている。本開示で1つ又はいくつかの用語が記載されるか説明される場合、その用語の定義は本開示の記載又は説明に基づいている。開示される実施形態のそれぞれは、1つ又は複数の技術的特徴を持っている。実行可能な実装において、当業者であれば、本開示の任意の実施形態の一部又は全部の技術的特徴を選択的に実装するか、あるいは本開示の実施形態の一部又は全部の技術的特徴を選択的に組み合わせるであろう。
【0021】
図1は、本願の1つの実施形態によるIMC(In-Memory-Computing:インメモリコンピューティング)メモリデバイス100の機能ブロック図を示している。IMCメモリデバイス100は、メモリアレイ110と、乗算回路120と、入力/出力回路130と、デジタル累算回路135と、アナログ累算回路160と、決定ユニット170と、コンパレータ163とを含む。デジタル累算回路135は、グルーピング回路140と計数ユニット150とを含む。アナログ累算回路160は、アナログデジタル変換器(ADC)161を含む。メモリアレイ110、乗算回路120、アナログ累算回路160、及びアナログデジタル変換器161はアナログ方式であり、デジタル累算回路135、グルーピング回路140、及び計数ユニット150はデジタル方式である。
【0022】
メモリアレイ110は、複数のメモリセル111を含む。本願の1つの実施形態では、メモリセル111は、限定されないが、例えば不揮発性メモリセルである。MAC演算では、メモリセル111は重みを格納するのに用いられる。
【0023】
乗算回路120は、メモリアレイ110に結合される。乗算回路120は、複数の単ビット乗算ユニット121を含む。それぞれの単ビット乗算ユニット121は、入力ラッチ121Aと、センスアンプ(SA)121Bと、出力ラッチ121Cと、共通データラッチ(CDL)121Dとを含む。入力ラッチ121Aは、メモリアレイ110に結合される。センスアンプ121Bは、入力ラッチ121Aに結合される。出力ラッチ121Cは、センスアンプ121Bに結合される。共通データラッチ121Dは、出力ラッチ121Cに結合される。
【0024】
入力/出力回路130は、乗算回路120、グルーピング回路140、及び計数ユニット150に結合される。入力/出力回路130は、入力データを受信し、メモリデバイス100が生成するデータを出力するためのものである。
【0025】
デジタル累算回路135は、デジタル累算を行うためのものであり、詳細については以下の通りである。
【0026】
アナログ累算回路160は、アナログ累算を行うためのものであり、詳細については以下の通りである。
【0027】
決定ユニット170は、メモリデバイス100がアナログ累算を行うのか、デジタル累算を行うのか、ハイブリッド累算を行うのかを決定するためのものである。決定ユニット170は、イネーブル信号EN1及びEN2をそれぞれアナログ累算回路160及びデジタル累算回路135に出力し、アナログ累算回路160を有効にするのか、デジタル累算回路135を有効にするのかを決定する。
【0028】
アナログ累算とは、アナログ累算回路160が有効になっているが、デジタル累算回路135が無効になっていることを指す。デジタル累算とは、デジタル累算回路135が有効になっているが、アナログ累算回路160が無効になっていることを指す。ハイブリッド累算とは、アナログ累算回路160及びデジタル累算回路135が両方とも有効になっていることを指す。
【0029】
ADC161は、メモリアレイ110のメモリセル111に結合される。各メモリセル111からのセル電流が足し合わされてADC161に入力され、第1のMAC演算結果OUT1に変換される。
【0030】
コンパレータ163は、第1のMAC演算結果OUT1とトリガ基準値とを比較するために、ADC161に結合される。ハイブリッド累算を行う際に、第1のMAC演算結果OUT1がトリガ基準値より低い場合、コンパレータ163はトリガ信号TSをデジタル累算回路135に出力せず、第1のMAC演算結果OUT1がトリガ基準値より高い場合、コンパレータ163はトリガ信号TSをデジタル累算回路135に出力して、デジタル累算を行うためにデジタル累算回路135をトリガする。アナログ累算を行う場合、コンパレータ163からのトリガ信号TSは、デジタル累算回路135によって無視されることになる。
【0031】
本願の1つの実施形態では、アナログ累算は、無用なデータを迅速に選別してMAC演算速度を向上させるのに用いられてよく、デジタル累算は、未選別データを累算してMAC演算精度を高めることができ、ハイブリッド累算は、低解像度の量子化を用いて受けた変動の影響を排除し、無用なデータの累算を回避して解像度を維持することができる。すなわち、ハイブリッド累算は、アナログ累算及びデジタル累算の利点と欠点のバランスをとっている。
【0032】
グルーピング回路140は、乗算回路120に結合される。グルーピング回路140は、複数のグルーピングユニット141を含む。グルーピングユニット141は、単ビット乗算ユニット121からの複数の乗算結果に対してグルーピング演算を行い、複数のグルーピング結果を生成する。本願の1つの実行可能な実施形態では、多数決方式(例えば、多数決関数方式)によってグルーピング方式が実装されてよく、グルーピング回路140は、多数決関数方式に基づいて多数決グルーピング回路により実装されてよく、グルーピングユニット141は、分散型多数決グルーピングユニットにより実装されてよいが、これによって本願を限定することは意図されていない。このグルーピング方式は、他の同様な方式で実装されてもよい。本願の1つの実施形態では、グルーピング回路140は任意的である。
【0033】
計数ユニット150は、グルーピング回路140又は乗算回路120に結合される。本願の1つの実施形態では、計数ユニット150は(メモリデバイス100がグルーピング回路140を含まない場合)、乗算回路からの乗算結果に対してビット単位の計数又はビット単位の累算を行い、第2のMAC演算結果OUT2を生成するためのものである。あるいは、計数ユニット150は(メモリデバイス100がグルーピング回路140を含む場合)、グルーピング回路140からのグルーピング結果(すなわち、多数決結果)に対してビット単位の計数又はビット単位の累算を行い、第2のMAC演算結果OUT2を生成するためのものである。本願の1つの実施形態では、計数ユニット150は、既知の計数回路(限定されないが、例えば、リップルカウンタ)によって実装される。本願において、「計数」及び「累算」という用語は交換可能であり、カウンタ及び累算器は実質的に同じ意味である。
【0034】
換言すれば、メモリデバイス100がアナログ累算を行うと決定ユニット170が決定した場合、第1のMAC演算結果OUT1がMAC演算結果として用いられる。メモリデバイス100がデジタル累算を行うと決定ユニット170が決定した場合、第2のMAC演算結果OUT2がMAC演算結果として用いられる。メモリデバイス100がハイブリッド累算を行うと決定ユニット170が決定した場合、第1のMAC演算結果OUT1がMAC演算結果として用いられた後に、デジタル累算回路135がトリガ信号TSでトリガされ、デジタル累算回路135がトリガ信号TSでトリガされた後に、第2のMAC演算結果OUT2がMAC演算結果として用いられる。
【0035】
ここで、本願の1つの実施形態によるデータマッピングを示している
図2を参照する。
図2に示すように、それぞれの入力データ及びそれぞれの重みは、8ビット精度のN次元(Nは正の整数)を有するが、本願はこれに限定されない。
【0036】
入力データのデータマッピングが一例として説明されるが、本願はこれに限定されない。以下の説明は、重みのデータマッピングにも好適である。
【0037】
入力データ(又は重み)が2進8ビットフォーマットで表される場合、入力データ(又は重み)は、最上位ビット(MSB)ベクトル及び最下位ビット(LSB)ベクトルを含む。8ビットの入力データ(又は重み)のMSBベクトルはビットB7~B4を含み、8ビットの入力データ(又は重み)のLSBベクトルはビットB3~B0を含む。
【0038】
入力データのMSBベクトル及びLSBベクトルの各ビットは、単進符号(バリューフォーマット)で表される。例えば、入力データのMSBベクトルのビットB7はB70~B77として表されてよく、入力データのMSBベクトルのビットB6はB60~B63として表されてよく、入力データのMSBベクトルのビットB5はB50~B51として表されてよく、入力データのMSBベクトルのビットB4はB4として表されてよい。
【0039】
次に、単進符号(バリューフォーマット)で表される、入力データのMSBベクトルの各ビット及び入力データのLSBベクトルの各ビットはそれぞれ、複数回複製されて、展開ドット積(unFDP)フォーマットになる。例えば、入力データのMSBベクトルのそれぞれが(24-1)回複製され、同様に、入力データのLSBベクトルのそれぞれが(24-1)回複製される。そうすることで、入力データがunFDPフォーマットで表される。同様に、重みもunFDPフォーマットで表される。
【0040】
入力データ(unFDPフォーマット)及び重み(unFDPフォーマット)に対して乗算演算が行われ、複数の乗算結果が生成される。
【0041】
理解のために、データマッピングの1つの例が説明されるが、本願はこれに限定されない。
【0042】
ここで、本願の1つの実施形態による1次元データマッピングの1つの実行可能な例を示している
図3Aを参照する。
図3Aに示すように、入力データは(IN
1,IN
2)=(2,1)であり、重みは(We
1,We
2)=(1,2)である。入力データのMSB及びLSBは2進フォーマットで表されるので、IN
1=10であり、IN
2=01である。同様に、重みのMSB及びLSBは2進フォーマットで表されるので、We
1=01であり、We
2=10である。
【0043】
次に、入力データのMSB及びLSB、並びに重みのMSB及びLSBはエンコードされて、単進符号(バリューフォーマット)になる。例えば、入力データのMSBはエンコードされて「110」になり、入力データのLSBはエンコードされて「001」になる。同様に、重みのMSBはエンコードされて「001」になり、重みのLSBはエンコードされて「110」になる。
【0044】
次に、入力データのMSB(110、エンコードされて単進符号になっている)の各ビットと、入力データのLSB(001、エンコードされて単進符号になっている)の各ビットとが、複数回複製されて、unFDPフォーマットで表される。例えば、入力データのMSB(110、バリューフォーマットで表されている)の各ビットは3回複製されるので、入力データのMSBのunFDPフォーマットは、111111000である。同様に、入力データのLSB(001、バリューフォーマットで表されている)の各ビットは3回複製されるので、入力データのLSBのunFDPフォーマットは、000000111である。
【0045】
入力データ(unFDPフォーマットで表されている)及び重みに対して乗算演算が行われ、MAC演算結果が生成される。MAC演算結果は、1×0=0,1×0=0,1×1=1,1×0=0,1×0=0,1×1=1,0×0=0,0×0=0,0×1=0,0×1=0,0×1=0,0×0=0,0×1=0,0×1=0,0×0=0,1×1=1,1×1=1,1×0=0である。各値が足し合わされて、0+0+1+0+0+1+0+0+0+0+0+0+0+0+0+1+1+0=4になる。
【0046】
上記の説明から、入力データが「i」ビットであり、重みが「j」ビットである場合(「i」及び「j」は両方とも正の整数)、MAC(又は乗算)演算に用いられるメモリセル総数は、(2i-1)×(2j-1)になる。
【0047】
ここで、本願の1つの実施形態によるデータマッピングの別の実行可能な例を示している
図3Bを参照する。
図3Bに示すように、入力データは(IN
1)=(2)であり、重みは(We
1)=(1)である。入力データ及び重みは、4ビットになっている。
【0048】
入力データは2進フォーマットで表されるので、IN1=0010である。同様に、重みは2進フォーマットで表されるので、We1=0001である。
【0049】
入力データ及び重みはエンコードされて、単進符号(バリューフォーマット)になる。例えば、入力データの最上位ビット「0」がエンコードされて「00000000」になり、入力データの最下位ビット「0」がエンコードされて「0」になるといった具合である。同様に、重みの最上位ビット「0」がエンコードされて「00000000」になり、重みの最下位ビット「1」がエンコードされて「1」になる。
【0050】
次に、入力データ(エンコードされて単進符号になっている)の各ビットは複数回複製されて、unFDPフォーマットで表される。例えば、入力データ(エンコードされて単進符号になっている)の最上位ビット301Aが15回複製されてビット303Aになり、入力データ(エンコードされて単進符号になっている)の最下位ビット301Bが15回複製されてビット303Bになる。
【0051】
重み302(エンコードされて単進符号になっている)は15回複製されて、unFDPフォーマットで表される。
【0052】
入力データ(unFDPフォーマットで表されている)及び重み(unFDPフォーマットで表されている)に対して乗算演算が行われ、MAC演算結果が生成される。詳細に言うと、入力データのビット303Aが重み302と掛け合わされ、入力データのビット303Bが重み302と掛け合わされるといった具合である。各乗算値を加算して、MAC演算結果(「2」)が生成される。
【0053】
ここで、本願の1つの実施形態によるデータマッピングの別の実行可能な例を示している
図3Cを参照する。
図3Cに示すように、入力データは(IN
1)=(1)であり、重みは(We
1)=(5)である。入力データ及び重みは、4ビットになっている。
【0054】
入力データは2進フォーマットで表されるので、IN1=0001である。同様に、重みは2進フォーマットで表されるので、We1=0101である。
【0055】
次に、入力データ及び重みがエンコードされて、単進符号(バリューフォーマット)になる。
【0056】
次に、入力データ(エンコードされて単進符号になっている)の各ビットは複数回複製されて、unFDPフォーマットで表される。
図3Cでは、入力データの各ビット及び重みの各ビットが複製されると、ビット「0」が追加される。例えば、入力データ(エンコードされて単進符号になっている)の最上位ビット311Aは15回複製され、ビット「0」が追加されてビット313Aが形成され、入力データ(エンコードされて単進符号になっている)の最下位ビット311Bが15回複製され、ビット「0」が追加されてビット313Bが形成される。そうすることで、入力がunFDPフォーマットで表される。
【0057】
同様に、重み312(エンコードされて単進符号になっている)は15回複製され、ビット「0」がさらに追加されてそれぞれの重み314になる。そうすることで、重みはunFDPフォーマットで表される。
【0058】
入力データ(unFDPフォーマットで表されている)と重み(unFDPフォーマットで表されている)とに対して乗算演算が行われ、MAC演算結果が生成される。詳細に言うと、入力データのビット313Aが重み314と掛け合わされ、入力データのビット313Bが重み314と掛け合わされるといった具合である。各乗算値を加算して、MAC演算結果(「5」)が生成される。
【0059】
従来技術では、8ビットの入力データ及び8ビットの重みに対するMAC演算において、直接的MAC演算が用いられる場合、直接的MAC演算に用いられるメモリセル総数は、255×255×512=33,292,822個になる。
【0060】
これに対して、本願の1つの実施形態では、8ビットの入力データ及び8ビットの重みに対するMAC演算において、直接的MAC演算に用いられるメモリセル総数は、15×15×512×2=115,200×2=230,400個になる。したがって、本願の1つの実施形態によるMAC演算に用いられるメモリセル数は、従来技術に用いられるメモリセル数の約0.7%である。
【0061】
本願の1つの実施形態では、unFDPベースのデータマッピングを用いることで、MAC演算に用いられるメモリセル数が削減されるので、演算コストも削減される。さらに、ECC(エラー訂正符号)コストも削減され、フェイルビット効果の公差が改善される。
【0062】
再度、
図1を参照する。本願の1つの実施形態では、乗算演算において、重み(相互コンダクタンス)はメモリアレイ110のメモリセル111に格納され、入力データ(電圧)は格納され、入力/出力回路130によって読み出され、共通データラッチ121Dに送信される。共通データラッチ121Dは、入力データを入力ラッチ121Aに出力する。
【0063】
本願の1つの実施形態の乗算演算を説明するために、ここで、本願の1つの実施形態の乗算演算の1つの例を示している
図4を参照する。
図4は、選択されたビット線の読み出し機能をメモリデバイスがサポートする場合に用いられる。
図4では、入力ラッチ121Aがラッチ(第1ラッチ)405と、ビット線スイッチ410とを含む。
【0064】
図4に示すように、重みは、
図2に示されるような単進符号(バリューフォーマット)で表される。したがって、重みの最上位ビットが8つのメモリセル111に格納され、重みの2番目の最上位ビットが4つのメモリセル111に格納され、重みの3番目の最上位ビットが2つのメモリセル111に格納され、重みの最下位ビットが1つのメモリセル111に格納される。
【0065】
同様に、入力データは(
図2に示されるような)単進符号(バリューフォーマット)で表される。したがって、入力データの最上位ビットが8つの共通データラッチ121Dに格納され、入力データの2番目の最上位ビットが4つの共通データラッチ121Dに格納され、入力データの3番目の最上位ビットが2つの共通データラッチ121Dに格納され、入力データの最下位ビットが1つの共通データラッチ121Dに格納される。入力データは、共通データラッチ121Dからラッチ405に送られる。
【0066】
図4には、複数のビット線スイッチ410が、メモリセル111とセンスアンプ121Bとの間に結合される。ビット線スイッチ410は、ラッチ405の出力で制御される。例えば、ラッチ405がビット「1」を出力すると、ビット線スイッチ410が入り、ラッチ405がビット「0」を出力すると、ビット線スイッチ410が切断される。
【0067】
さらに、メモリセル111に格納された重みがビット1であり、且つビット線スイッチ410が入っている(すなわち、入力データがビット1である)場合、SA121Bは、メモリセル電流を検知して乗算結果「1」を生成する。メモリセル111に格納された重みがビット0であり、且つビット線スイッチ410が入っている(すなわち、入力データがビット1である)場合、SA121Bはメモリセル電流を検知しない。メモリセル111に格納された重みがビット1であり、且つビット線スイッチ410が切断されている(すなわち、入力データがビット0である)場合、SA121Bはメモリセル電流を検知しない(その結果、乗算結果「0」を生成する)。メモリセル111に格納された重みがビット0であり、且つビット線スイッチ410が切断されている(すなわち、入力データがビット0である)場合、SA121Bはメモリセル電流を検知しない。
【0068】
すなわち、
図4に示すレイアウトにおいて、入力データがビット1であり、且つ重みがビット1である場合、SA121Bはメモリセル電流を検知する(その結果、乗算結果「1」を生成する)。他の状況では、SA121Bはメモリセル電流を検知しない(その結果、乗算結果「0」を生成する)。
【0069】
メモリセル111からのメモリセル電流IMCは、足し合わされてADC161に入力される。
【0070】
入力データと、重みと、デジタル乗算結果と、アナログメモリセル電流IMCとの間の関係は、以下の表の通りである。
【表1】
【0071】
上記の表では、HVT及びLVTはそれぞれ、高閾値メモリセル及び低閾値メモリセルを指しており、IHVT及びILVTはそれぞれ、入力データが論理1の場合、高閾値メモリセル(重みは0(HVT))及び低閾値メモリセル(重みは+1(LVT))により生成されるアナログメモリセル電流IMCを指している。
【0072】
本願の1つの実施形態では、乗算演算において、選択されたビット線の読み出し(SBL-読み出し)コマンドは、単ビット表現による変動の影響を低減するのに再利用されてよい。
【0073】
ここで、
図5Aを参照する。この図は、本願の1つの実施形態によるグルーピング演算(多数決演算)及びビット単位の計数を示している。
図5Aに示すように、「GM1」は入力データの1番目のMSBベクトルに重みを掛け合わせるビット単位の乗算による第1の乗算結果を指し、「GM2」は入力データの2番目のMSBベクトルに重みを掛け合わせるビット単位の乗算による第2の乗算結果を指し、「GM3」は入力データの3番目のMSBベクトルに重みを掛け合わせるビット単位の乗算による第3の乗算結果を指し、「GL」は入力データのLSBベクトルに重みを掛け合わせるビット単位の乗算による第4の乗算結果を指す。グルーピング演算(多数決演算)の後に、第1の乗算結果「GM1」に対して行われたグルーピングの結果が第1のグルーピング結果CB1(その累算重みは2
2)であり、第2の乗算結果「GM2」に対して行われたグルーピングの結果が第2のグルーピング結果CB2(その累算重みは2
2)であり、第3の乗算結果「GM3」に対して行われたグルーピングの結果が第3のグルーピング結果CB3(その累算重みは2
2)であり、第4の乗算結果「GL」に対する直接計数結果が第4のグルーピング結果CB4(その累算重みは2
0)である。
【0074】
図5Bは、
図3Cの1つの累算例を示している。
図3C及び
図5Bを参照されたい。
図5Bに示すように、入力データ(
図3C)のビット313Bが重み314と掛け合わされる。入力データ(
図3C)のビット313Bと重み314とを掛け合わせて生成された乗算結果の最初の4つのビット(「0000」)が、第1の乗算結果「GM1」としてグルーピングされる。同様に、入力データ(
図3C)のビット313Bを重み314と掛け合わせて生成された乗算結果の5番目~8番目のビット(「0000」)が、第2の乗算結果「GM2」としてグルーピングされる。入力データ(
図3C)のビット313Bを重み314と掛け合わせて生成された乗算結果の9番目~12番目のビット(「1111」)が、第3の乗算結果「GM3」としてグルーピングされる。入力データ(
図3C)のビット313Bを重み314と掛け合わせて生成された乗算結果の13番目~16番目のビット(「0010」)が、直接的にカウントされる。
【0075】
グルーピング演算(多数決演算)の後に、第1のグルーピング結果CB1は「0」(その累算重みは2
2)になり、第2のグルーピング結果CB2は「0」(その累算重みは2
2)になり、第3のグルーピング結果CB3は「1」(その累算重みは2
2)になる。計数の際には、それぞれの累算重みと掛け合わされたそれぞれのグルーピング結果CB1~CB4を累算することで、MAC結果が生成される。例えば、
図5Bに示すように、MAC結果(第2のMAC演算結果OUT2)は、CB1×2
2+CB2×2
2+CB3×2
2+CB4×2
0=0×2
2+0×2
2+1×2
2+1×2
0=0000 0000 0000 0000 0000 0000 0000 0101=5である。
【0076】
本願の1つの実施形態では、グルーピング規則(例えば、多数決規則)は以下の通りである。
【表2】
【0077】
上記の表において、ケースAでは、このグループが正しいビットを有している(「1111」はエラービットがないことを意味している)ため、多数決結果は1である。同様に、上記の表において、ケースEでは、このグループは正しいビットを有している(「0000」はエラービットがないことを意味している)ため、多数決結果は0である。
【0078】
ケースBでは、このグループがエラービットを1つ有している(「1110」の中でビット「0」はエラーである)ため、多数決関数によって、グループ「1110」は「1」であると決定される。ケースDでは、このグループがエラービットを1つ有している(「1000」の中でビット「1」はエラーである)ため、多数決関数によって、グループ「1000」は「0」であると決定される。
【0079】
ケースCでは、このグループがエラービットを2つ有している(「1100」の中でビット「00」又はビット「11」はエラーである)ため、多数決関数によって、グループ「1100」は「1」又は「0」であると決定される。
【0080】
こうして、本願の1つの実施形態では、グルーピング(多数決)関数によってエラービットが低減される。
【0081】
グルーピング回路140からの多数決結果は、ビット単位の計数を行うために、計数ユニット150に入力される。
【0082】
計数の際には、MSBベクトルの乗算結果に対する計数結果と、LSBベクトルの乗算結果に対する計数結果とが加算される、すなわち累算される。
図5Aに示すように、2つの累算器が用いられる。第1累算器には、大きい累算重み(例えば、2
2)が割り当てられる。第1累算器は、(1)乗算結果GM1に対してグルーピング演算(多数決演算)を行ったことによるグルーピング結果(多数決結果)(1つのビットを有する)と、(2)乗算結果GM2に対してグルーピング演算(多数決演算)を行ったことによるグルーピング結果(多数決結果)(1つのビットを有する)と、(3)乗算結果GM3に対してグルーピング演算(多数決演算)を行ったことによるグルーピング結果(多数決結果)(1つのビットを有する)とを累算する。第1累算器による累算結果には、大きい累算重み(例えば、2
2)が割り当てられる。第2累算器には、小さい累算重み(例えば、2
0)が割り当てられる。第2累算器は、乗算結果GL(複数のビットを有する)を直接的に累算する。2つの累算器による2つの累算結果は加算され、MAC演算結果が出力される。例えば、限定されないが、(1)乗算結果GM1に対してグルーピング(多数決)演算を行ったことによるグルーピング結果(多数決結果)(1つのビットを有する)が「1」(1つのビット)であり、(2)乗算結果GM2に対してグルーピング(多数決)演算を行ったことによるグルーピング結果(多数決結果)(1つのビットを有する)が「0」(1つのビット)であり、(3)乗算結果GM3に対してグルーピング(多数決)演算を行ったことによるグルーピング結果(多数決結果)(1つのビットを有する)が「1」(1つのビット)である。第1累算器による累算結果は、重み付けの後に、2(=1+0+1)×2
2=8になる。乗算結果GLは4(3つのビットを有する)である。MAC演算結果は、8+4=12である。
【0083】
上記のことから、本願の1つの実施形態では、計数又は累算において、入力データはunFDPフォーマットになっており、CDLに格納されるデータはMSBベクトル及びLSBベクトルにグルーピングされる。グルーピング(多数決)関数によって、MSBベクトル及びLSBベクトルに含まれるエラービットが低減する。
【0084】
さらに、本願の1つの実施形態では、従来型の累算器(従来型のカウンタ)を用いても、計数及び累算の時間コストが削減される。これは、デジタル計数コマンド(エラービット計数)が本願の1つの実施形態に適用され、異なるベクトル(MSBベクトル及びLSBベクトル)に異なる累算重みが割り当てられるからである。1つの実行可能な例では、累算演算の時間コストが約40%に削減される。
【0085】
図6は、本願の1つの実施形態におけるMAC演算フローを示している。
図6において、DMACとは第1デジタル累算(多数決演算は行われない、すなわちメモリデバイス100はグルーピング回路140を含まない)を指し、mDMACとは第2デジタル累算(多数決演算が行われる、すなわちメモリデバイス100はグルーピング回路140を含む)を指し、AMACとはアナログ累算を指し、HMACとはハイブリッド累算を指す。
【0086】
本願の1つの実施形態における第1デジタル累算のMAC演算フローでは、入力データがメモリデバイスに送信される。ビット線の設定とワード線の設定とが同時に行われる。ビット線を設定した後に、センシングが行われる。次に、デジタル累算が行われる。デジタル累算の結果が返される。上記の各段階は、全ての入力データが処理されるまで繰り返される。
【0087】
本願の1つの実施形態における第2デジタル累算のMAC演算フローでは、多数決演算がさらに、デジタル累算速度を加速させ得る。
【0088】
本願の1つの実施形態におけるアナログ累算のMAC演算フローでは、データセンシング期間にADC変換と比較演算とが完了し、これによってさらに、アナログ累算速度が加速され得る。
【0089】
本願の1つの実施形態におけるハイブリッド累算のMAC演算フローでは、アナログ累算及びデジタル累算の両方が実行されるので、ハイブリッド累算の演算速度はアナログ累算より遅いが、デジタル累算より速い。しかしながら、ハイブリッド累算の精度はデジタル累算とほぼ等しいが、アナログ累算より高い。
【0090】
図6を見ると、本願の実施形態におけるMAC演算には2種類の副演算がある。1つ目の副演算は入力データを重みと掛け合わせる乗算であり、この乗算は、選択したビット線読み出しコマンドに基づいている。2つ目の副演算は累算(データ計数)、特にフェイルビット計数である。本願の他の実行可能な実施形態では、計数又は累算演算を加速するために、より多くの計数ユニットが用いられてもよい。
【0091】
デジタル累算の演算期間は、計数ユニット150がビット単位の累算を行うので、主に計数ユニット150の累算速度に依存する。ADC161の量子化精度は、主にメモリセルのばらつき公差に依存する。したがって、デジタル累算は、アナログ累算と比較すると精度は高いが累算速度は遅い。
【0092】
さらに、本願の1つの実施形態では、読み出し電圧も調整される。
図7Aは、本願の1つの実施形態における固定メモリページのプログラミングを示している。
図7Bは、本願の1つの実施形態における読み出し電圧調整のフローチャートを示している。
【0093】
図7Aに示すように、段階710では、既知の入力データが固定メモリページにプログラミングされる。ここで、既知の入力データのビットレートが、ビット「0」の75%であり、ビット「1」の25%である。
【0094】
図7Bに示すように、段階720では、固定メモリページが読み出され、ADCが有効になる。段階730では、ADCからの出力値(すなわち、第1のMAC演算結果OUT1)が基準テスト値(例えば、限定されないが、ADCが8ビットADCの場合、基準テスト値は127である)に近いかどうかが判定される。段階730の判定が「いいえ」である場合、本フローは段階740へ進む。段階730の判定が「はい」である場合、本フローは段階750へ進む。
【0095】
段階740では、ADCからの出力値が基準テスト値より小さい場合、読み出し電圧を増やし、ADCからの出力値が基準テスト値より大きい場合、読み出し電圧を減らす。段階740の後に、本フローは段階720に戻る。
【0096】
段階750では、現在の読み出し電圧が、次の読み出し操作のために記録される。
【0097】
読み出し電圧は、ADCからの出力値とビット1の読み出しとに影響を与えることがある。本願の1つの実施形態では、動作条件(例えば、限定されないが、プログラミングサイクル、温度、又は読み出しディスターブ)に基づいて、読み出し電圧は高い精度及び高い信頼性を保つために周期的に較正されてよい。
【0098】
図8は、本願の1つの実施形態によるMAC演算フローを示している。段階810では、メモリデバイスのメモリアレイの複数のメモリセルに複数の重みが格納される。段階820では、複数の入力データ及び重みに対してビット単位の乗算が行われ、複数の乗算結果が生成される。ビット単位の乗算では、これらのメモリセルが複数のメモリセル電流を生成する。段階830では、アナログ累算を行うのか、デジタル累算を行うのか、ハイブリッド累算を行うのかが決定される。段階840では、アナログ累算を行う際に、メモリセル電流に対してアナログ累算が行われ、第1のMAC演算結果が生成される。段階850では、デジタル累算を行う際に、乗算結果に対してデジタル累算が行われ、第2のMAC演算結果が生成される。段階860では、ハイブリッド累算を行う際に、デジタル累算をトリガするかどうかが第1のMAC演算結果に基づいている。
【0099】
本願の1つの実施形態が、NAND型フラッシュメモリ、又は記憶保持や温度の変動に敏感なメモリデバイス(例えば、限定されないが、NOR型フラッシュメモリ、相変化メモリ、磁気RAM、又は抵抗変化型RAM)に適用される。
【0100】
本願の1つの実施形態が、3D構造メモリデバイス及び2D構造メモリデバイス、例えば、限定されないが、2D/3DのNAND型フラッシュメモリ、2D/3DのNOR型フラッシュメモリ、2D/3Dの相変化メモリ、2D/3Dの磁気RAM、又は2D/3Dの抵抗変化型RAMに適用される。
【0101】
本願のこの実施形態では、入力データ及び/又は重みがMSBベクトル及びLSBベクトル(すなわち、2つのベクトル)に分割されるが、本願はこれに限定されない。本願の他の実行可能な実施形態では、入力データ及び/又は重みがより多くのベクトルに分割されるが、それでも、本願の趣旨及び範囲に含まれる。
【0102】
本願の実施形態は、多数決グルーピング方式だけでなく、累算を加速する他のグルーピング方式にも適用される。
【0103】
本願の実施形態は、AI方式(例えば限定されないが、顔識別)である。
【0104】
本願の1つの実施形態では、ADC161は、電流モードADC、電圧モードADC、又はハイブリッドモードADCにより実装されてもよい。
【0105】
本願の1つの実施形態が、シリアルMAC演算又はパラレルMAC演算に適用されてもよい。
【0106】
開示された実施形態に対して様々な修正及び変形を施せることが、当業者には明らかであろう。本明細書及び各実施例は例示的としかみなされず、本開示の真の範囲は、以下の特許請求の範囲及びそれらの均等物によって示されることが意図されている。