IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ウィンボンド エレクトロニクス コーポレーションの特許一覧

<>
  • 特開-半導体装置 図1
  • 特開-半導体装置 図2
  • 特開-半導体装置 図3
  • 特開-半導体装置 図4
  • 特開-半導体装置 図5
  • 特開-半導体装置 図6
  • 特開-半導体装置 図7
  • 特開-半導体装置 図8
  • 特開-半導体装置 図9
  • 特開-半導体装置 図10
  • 特開-半導体装置 図11
  • 特開-半導体装置 図12
  • 特開-半導体装置 図13
  • 特開-半導体装置 図14
  • 特開-半導体装置 図15
  • 特開-半導体装置 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024151454
(43)【公開日】2024-10-25
(54)【発明の名称】半導体装置
(51)【国際特許分類】
   G06F 12/00 20060101AFI20241018BHJP
   G11C 11/54 20060101ALI20241018BHJP
   G06N 3/065 20230101ALI20241018BHJP
   G06G 7/60 20060101ALI20241018BHJP
   G06F 12/06 20060101ALI20241018BHJP
【FI】
G06F12/00 560F
G11C11/54
G06N3/065
G06G7/60
G06F12/06 525C
【審査請求】有
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2023064783
(22)【出願日】2023-04-12
(71)【出願人】
【識別番号】511062254
【氏名又は名称】ウィンボンド エレクトロニクス コーポレーション
(74)【代理人】
【識別番号】100098497
【弁理士】
【氏名又は名称】片寄 恭三
(72)【発明者】
【氏名】矢野 勝
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160CA18
5B160CB03
5B160MM20
(57)【要約】
【課題】 AI学習等の演算能力や処理効率を向上させることができる半導体装置を提供する。
【解決手段】 本発明のフラッシュメモリ100は、NAND型またはNOR型のメモリセルアレイ110と、演算処理部190とを含む。演算処理部190は、ビット線電流検出部200と、検出した電流に対応する電圧を保持する電圧保持部210と、電圧保持部210で保持された電圧を加算する加算部220と、加算部220の加算結果をA/D変換するA/D変換部230とを含む。演算処理部190は、メモリセルアレイの読出し時にビット線を流れる電流の行方向および/または列方向の総和を算出することを可能にする。
【選択図】 図2
【特許請求の範囲】
【請求項1】
NOR型またはNAND型のメモリセルアレイを含む半導体装置における演算方法であって、
前記メモリセルアレイの複数行の読出しにおいて、各行の読出し時にビット線に流れる列方向の電流の総和を算出する、演算方法。
【請求項2】
演算方法はさらに、複数のビット線の列方向の電流の総和の行方向の総和を算出する、請求項1に記載の演算方法。
【請求項3】
演算方法は、複数行×複数列のメモリセルに記憶されたデータに対応する行列方向の電流の総和を算出する、請求項2に記載の演算方法。
【請求項4】
演算方法は、列方向の電流の総和または行列方向の電流の総和をA/D変換して複数ビットのデータを生成することを含む、請求項1に記載の演算方法。
【請求項5】
演算方法はさらに、前記複数ビットのデータを前記メモリセルアレイのメモリセルに書込むことを含む、請求項4に記載の演算方法。
【請求項6】
前記メモリセルアレイは、第1および第2のメモリプレーンを含み、
第1のメモリプレーンの読出しにおいてビット線に流れる行列方向の電流の総和を算出し、前記複数ビットのデータを第2のメモリプレーンに書込む、請求項5に記載の演算方法。
【請求項7】
演算方法は、第1のグループのビット線を流れる列方向の第1の電流の総和と、第2のグループのビット線に流れる列方向の第2の電流の総和とを算出し、第1の電流の総和と第2の電流の総和の差分を算出する、請求項1に記載の演算方法。
【請求項8】
第1の電流の総和は、正の係数を表し、第2の電流は、負の係数を表す、請求項7に記載の演算方法。
【請求項9】
複数の行線、複数のビット線および複数のメモリセルを含むNOR型またはNAND型のメモリセルアレイと、
前記メモリセルアレイの読出しを行う読出し手段と、
前記メモリセルアレイの書込みを行う書込み手段と、
前記読出し手段によって複数行の読出しが行われるとき、各行の読出し時にビット線に流れる列方向の電流の総和を算出する演算手段と、
を含む半導体装置。
【請求項10】
前記演算手段はさらに、複数のビット線の列方向の電流の総和の行方向の総和を算出する、請求項9に記載の半導体装置。
【請求項11】
前記演算手段は、複数行×複数列のメモリセルに記憶されたデータに対応する行列方向の電流の総和を算出する、請求項10に記載の半導体装置。
【請求項12】
前記演算手段は、列方向の電流の総和または行列方向の電流の総和をA/D変換して複数ビットのデータを生成するA/D変換手段を含む、請求項9に記載の半導体装置。
【請求項13】
前記書込み手段は、前記複数ビットのデータを前記メモリセルアレイのメモリセルに書込む、請求項12に記載の半導体装置。
【請求項14】
前記メモリセルアレイは、第1および第2のメモリプレーンを含み、
前記演算手段は、第1のメモリプレーンの読出しにおいてビット線に流れる行列方向の電流の総和を算出し、前記書込み手段は、前記複数ビットのデータを第2のメモリプレーンに書込む、請求項13に記載の半導体装置。
【請求項15】
前記演算手段は、第1のグループのビット線を流れる列方向の第1の電流の総和と、第2のグループのビット線に流れる列方向の第2の電流の総和とを算出し、第1の電流の総和と第2の電流の総和の差分を算出する、請求項10に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、NOR型またはNAND型のメモリセルアレイを含む半導体装置に関し、特にニューロモルフィックデバイスとして利用可能な半導体装置に関する。
【背景技術】
【0002】
シナプスおよびニューロンを構造的にシミュレートするAI(人工知能)ハードウエアとして可変抵抗素子を用いたクロスバーアレイが実用化されつつある(例えば、特許文献1)。クロスバーアレイは、行ラインと列ラインとの交差部に可変抵抗素子を含み、可変抵抗素子は、電圧または電流を加えることで異なる抵抗値(コンダクタンス)を記憶する。可変抵抗素子に所望の抵抗値を書込むことで、例えば、行ラインに印加された入力信号が可変抵抗素子の抵抗値によって重み付けされ、列ラインから出力される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第6818116号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
図1は、従来の学習機能を備えたシナプスアレイ装置の構成を示すブロック図である。シナプスアレイ装置10は、学習用データを格納するフラッシュメモリ20と、クロスバーアレイ30と、コントローラ40とを含む。コントローラ40は、フラッシュメモリ20から学習用データを読出し、読み出した学習用データをクロスバーアレイ30に書込み、可変抵抗素子の抵抗を変調させ、データの学習を行う。また、コントローラ40は、クロスバーアレイ30で学習したデータを読出し、読み出したデータをフラッシュメモリ20に書き込む。
【0005】
従来のシナプスアレイ装置10では、フラッシュメモリ20がデータ演算機能を搭載していないため、AI学習等に必要な行列の演算を行うことができない。それ故、データ転送効率が低く、結果としてAIの学習処理に時間がかかってしまうという課題がある。
【0006】
本発明は、このような従来の課題を解決し、AI学習等の演算能力や処理効率を向上させることができる半導体装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明に係る半導体装置の演算方法は、NOR型またはNAND型のメモリセルアレイを含むものであって、前記メモリセルアレイの複数行の読出しにおいて、各行の読出し時にビット線に流れる列方向の電流の総和を算出する。
【0008】
ある態様では、演算方法はさらに、複数のビット線の列方向の電流の総和の行方向の総和を算出する。ある態様では、演算方法は、複数行×複数列のメモリセルに記憶されたデータに対応する行列方向の電流の総和を算出する。ある態様では、演算方法は、列方向の電流の総和または行列方向の電流の総和をA/D変換して複数ビットのデータを生成することを含む。ある態様では、演算方法はさらに、前記複数ビットのデータを前記メモリセルアレイのメモリセルに書込むことを含む。ある態様では、前記メモリセルアレイは、第1および第2のメモリプレーンを含み、第1のメモリプレーンの読出しにおいてビット線に流れる行列方向の電流の総和を算出し、前記複数ビットのデータを第2のメモリプレーンに書込む。ある態様では、演算方法は、第1のグループのビット線を流れる列方向の第1の電流の総和と、第2のグループのビット線に流れる列方向の第2の電流の総和とを算出し、第1の電流の総和と第2の電流の総和の差分を算出する。ある態様では、第1の電流の総和は、正の係数を表し、第2の電流は、負の係数を表す。
【0009】
本発明に係る半導体装置は、複数の行線、複数のビット線および複数のメモリセルを含むNOR型またはNAND型のメモリセルアレイと、前記メモリセルアレイの読出しを行う読出し手段と、前記メモリセルアレイの書込みを行う書込み手段と、前記読出し手段によって複数行の読出しが行われるとき、各行の読出し時にビット線に流れる列方向の電流の総和を算出する演算手段とを含む。
【0010】
ある態様では、前記演算手段はさらに、複数のビット線の列方向の電流の総和の行方向の総和を算出する。ある態様では、前記演算手段は、複数行×複数列のメモリセルに記憶されたデータに対応する行列方向の電流の総和を算出する。ある態様では、前記演算手段は、列方向の電流の総和または行列方向の電流の総和をA/D変換して複数ビットのデータを生成するA/D変換手段を含む。ある態様では、前記書込み手段は、前記複数ビットのデータを前記メモリセルアレイのメモリセルに書込む。ある態様では、前記メモリセルアレイは、第1および第2のメモリプレーンを含み、前記演算手段は、第1のメモリプレーンの読出しにおいてビット線に流れる行列方向の電流の総和を算出し、前記書込み手段は、前記複数ビットのデータを第2のメモリプレーンに書込む。ある態様では、前記演算手段は、第1のグループのビット線を流れる列方向の第1の電流の総和と、第2のグループのビット線に流れる列方向の第2の電流の総和とを算出し、第1の電流の総和と第2の電流の総和の差分を算出する。
【発明の効果】
【0011】
本発明によれば、NOR型またはNAND型のメモリセルアレイを有する半導体装置において、ビット線に流れる電流の総和を算出する演算機能を設けたことにより、AI学習等の演算能力や処理効率を向上させることができる。これにより、ニューロモルフィックデバイスに適した半導体装置を提供することができる。
【図面の簡単な説明】
【0012】
図1】従来のシナプスアレイ装置の構成を示すブロック図である。
図2】本発明の実施例に係るNAND型フラッシュメモリの構成を示すブロック図である。
図3】メモリセルアレイのブロックの構成を示す図である。
図4】ページバッファ/センス回路の構成例を示す図である。
図5】本実施例のフラッシュメモリの演算処理部の構成を示すブロック図である。
図6図5に示す演算処理部の機能的な構成を示す図である。
図7】本実施例の行列演算のフローを示す図である。
図8】本実施例の行列演算を説明する模式図である。
図9】本実施例の行方向の演算のフローを示す図である。
図10】本実施例の行方向の演算を説明する模式図である。
図11】本実施例の列方向の演算のフローを示す図である。
図12】本実施例の列方向の演算を説明する模式図である。
図13】本実施例の行列演算結果の書込みを説明する図である。
図14】本実施例のプレーン間の読み書き動作例を示す図である。
図15】本実施例のフラッシュメモリをオードエンコーダに適用した例を示す図である。
図16】本発明の他の実施例に係る演算処理部の構成を示すブロック図である。
【発明を実施するための形態】
【0013】
本発明に係る半導体装置は、NOR型またはNAND型のメモリセルアレイを含むフラッシュメモリに関する。ある態様では、フラッシュメモリは、ビット線に流れる電流を検出する機能を含み、複数行の読出しにおいて、複数ビット線上の列方向の複数のメモリセルのデータの応じた電流の総和を演算することを可能にする。また、ある態様では、フラッシュメモリは、複数のメモリプレーンを含み、あるメモリプレーンから読み出したデータの行列演算結果を他のメモリプレーンに書込むことを可能にする。フラッシュメモリは、メモリセルアレイから読み出されたデータの行列演算を行うことで、学習機能を備えたAIメモリまたはニューロモルフィックデバイスとして機能することができる。以下の説明では、行列演算機能を備えたNAND型フラッシュメモリを例示する。
【実施例0014】
次に、本発明の実施例について図面を参照して説明する。図2は、本実施例に係るNAND型フラッシュメモリの構成を示す図であり、フラッシュメモリ100は、複数のメモリセルが行列状に配列されたNAND型のメモリアレイ110と、外部入出力端子に接続され、かつ読出しデータを外部に出力したりあるいは外部から入力されるデータを取り込む入出力回路120と、プログラムすべきデータの誤り訂正符号の生成や当該誤り訂正符号に基づき読み出されたデータの誤り検出訂正を行うECC回路130と、入出力回路120を介してアドレスデータを受け取るアドレスレジスタ140と、入出力回路120を介して受け取った命令(コマンド)や制御端子に印加された制御信号に基づき各部を制御するコントローラ150と、アドレスレジスタ140から行アドレス情報Axのデコード結果に基づきブロックの選択やワード線の選択等を行うワード線選択回路160と、メモリセルアレイ110の選択ページから読み出されたデータを保持したり、選択ページへプログラムするデータを保持するページバッファ/センス回路170と、アドレスレジスタ140から列アドレス情報Ayのデコード結果に基づき列の選択等を行う列選択回路180と、メモリセルアレイ110の行方向および/または列方向の演算処理を行う演算処理部190とを含む。なお、ここには図示しないがフラッシュメモリ100は、データの読出し、プログラム(書き込み)および消去等のために必要な電圧(プログラム電圧Vpgm、パス電圧Vpass、読出し電圧Vread、消去電圧Vers等を生成する内部電圧発生回路を含む。また、NAND型フラッシュメモリ100は、NOR型フラッシュメモリとの動作の互換性を図るためSPIを搭載するものであってもよい。
【0015】
ある態様では、メモリセルアレイ110は、特に限定されないが、2つのメモリプレーンP0、P1を含む。メモリプレーンP0、P1は、例えば、それぞれ分離されたPウエル内に形成される。例えば、メモリプレーンP0は、1024個の偶数番号のブロック(BLK0、2、・・・、2044、2046)を含み、メモリプレーンP1は、1024個の奇数番号のブロック(BLK1、3、・・・、2045、2047)を含む。
【0016】
1つのブロックには、図3に示すように、複数のNANDストリングが形成される。1つのNANDストリングは、複数のメモリセルと(この例では、64個のメモリセル)、ビット線側選択トランジスタと、ソース線側選択トランジスタとを含む。NANDストリングは、基板表面に2次元アレイ状に形成されてもよいし、基板上に3次元アレイ状に形成されてもよい。また、メモリセルは、1ビットを記憶するSLCタイプでもよいし、多ビットを記憶するタイプであってもよい。
【0017】
ワード線選択駆動回路160は、行アドレスAxに基づきプレーンP0のブロックおよび/またはプレーンP1のブロックを選択し、さらに選択したブロックのワード線を選択する。ここで留意すべきは、ワード線選択駆動回路160は、プレーンP0とプレーンP1を同時に動作させる場合には、プレーンP0とプレーンP1のブロックをそれぞれ個別に選択し、つまり、プレーンP0に関するアドレスに基づきプレーンP0のブロックを選択し、プレーンP1に関するアドレスに基づきプレーンP1のブロックを選択する。さらにワード線選択駆動回路160は、プレーンP0とプレーンP1を同時に動作させる場合には、プレーンP0の動作に応じた選択信号SGS/SGDをビット線側選択トランジスタ/ソース線側選択トランジスタに出力し、プレーンP1の動作に応じた選択信号SGS/SGDをビット線側選択トランジスタ/ソース線側選択トランジスタに出力する。
【0018】
ECC回路130は、プログラムすべきデータまたは読み出されたデータの誤り検出および訂正を行う。ECCの演算は、例えば、ハミングコードやリード・ソロモンなどの公知の手法によって行われ、入力されたkビットまたはkバイトの入力データDiをp=k+qに変換する。「q」は、データの誤り検出訂正に必要な誤り訂正符号またはパリティビットである。
【0019】
メモリプレーンP0、P1には、ページバッファ/センス回路170、列選択回路180および演算処理部190がそれぞれ用意される。図4は、1つのページバッファ/センス回路とこれに接続されるビット線選択回路を示している。ページバッファ/センス回路170_0は、ビット線上に読み出されたデータを感知したり、あるいはプログラムすべきデータに応じた電圧をセットするセンス回路172_0と、感知したデータを保持したりプログラムすべきデータを保持するラッチ回路174_0と、ビット線選択回路176_0とを含む。
【0020】
センス回路172_0は、電圧供給ノードV1とセンスノードSNSとの間に接続されプリチャージ用トランジスタBLPRE、ノードTOBLにクランプ電圧を生成するトランジスタBLCLAMP、ノードTOBLとビット線選択回路176_0のノードBLSとの間に接続されたトランジスタBLCNを含む。センスノードSNSは、図示しない電荷転送用トランジスタを介してラッチ回路174_0に接続される。
【0021】
ビット線選択回路176_0は、偶数ビット線BLeを選択するためのトランジスタBLSe、奇数ビット線BLoを選択するためのトランジスタBLSo、仮想電源VIRPWRを偶数ビット線BLeに接続するためのトランジスタYBLe、仮想電源VIRPWRを奇数ビット線BLoに接続するためのトランジスタYBLoを含んで構成される。
【0022】
ある態様では、ページバッファ170は、1ページ分のデータを保持可能な第1のラッチL1と、第1のラッチL1との間でデータ転送が可能な第2のラッチL2とを含む。ページバッファ/センス回路170のラッチL2は、内部バスを介して入出力バッファ110、ECC回路130等に接続される。また、ある態様では、ラッチL1、L2は、それぞれ1/2ページ単位でデータを保持する第1のキャッシュC0と第2のキャッシュC1とを含み、第1のキャッシュC0は、第2のキャッシュC1から独立してデータを転送できるように構成される。
【0023】
各メモリプレーンの読出し動作では、ビット線に或る正の電圧を印加し、選択ワード線に或る読み出し電圧(例えば0V)を印加し、非選択ワード線に読み出しパス電圧Vpassを印加し、選択信号SGD/SGSによりビット線側選択トランジスタおよびソース線側選択トランジスタをオンし、共通ソース線に0Vを印加する。プログラム動作では、選択ワード線に高電圧のプログラム電圧Vpgを印加し、非選択ワード線に中間電位を印加し、ビット線側選択トランジスタをオンさせ、ソース線側選択トランジスタをオフさせ、プログラムデータに応じた電圧をビット線に印加する。消去動作では、ブロック内の選択ワード線に0Vを印加し、Pウエルに消去電圧Versを印加し、ブロック単位でデータを消去する。
【0024】
演算処理部190は、メモリセルアレイ110から読み出されたデータの行列演算をする機能を有する。より具体的には、メモリセルアレイ110の複数行の読出しにおいて、各行(ページ)の読出し時にビット線に流れる電流を検出し、検出した電流の総和を算出したり、算出した電流の総和をA/D変換する。A/D変換されたデータは、再びメモリセルアレイに書込まれる。
【0025】
演算処理部190は、図5に示すように、ビット線電流検出部200、電圧保持部210、加算部220、およびA/D変換部230を含んで構成される。選択ページの読出し時、選択メモリセルにデータ「1」が記憶されている場合、選択メモリセルがオンし、ビット線BLにプリチャージされていた電荷はNANDストリングを介してソース線SLに放電される。他方、選択メモリセルにデータ「0」が記憶されている場合、選択メモリセルがオフし、ビット線BLにプリチャージされていた電荷はソース線SLにほとんど放電されない。ビット線電流検出部200は、読出し時のビット線BLからソース線SLに流れる電流を検出する。ビット線電流検出部200は、その構成を特に限定するものではないが、例えば、ビット線にシャント抵抗を直列に接続し、シャント抵抗の電圧降下を検出するものや、シャント抵抗とオペアンプとを組み合わせた電流センスアンプであってもよい。
【0026】
図6は、ページバッファ/センス回路170と演算処理部190との接続関係を示す図である。ビット線電流検出部200_0~200_qは、ページバッファ/センス回路170_0~170_qの各々に接続され、ビット線選択回路によって選択された偶数ビット線BLeまたは奇数ビット線BLoに流れる電流をそれぞれ検出する。ビット線電流検出部200_0~200_qの検出結果は、それぞれ電圧保持部210_0~210_qによって保持される。電圧保持部210は、その構成を特に限定するものではないが、例えば、ダイオードまたはスイッチとコンデンサとを用いてコンデンサに電荷を充電させる充電回路と、コンデンサに充電した電荷を放電させるリセット回路とを含んで構成される。
【0027】
電圧保持部210は、複数ページの読出しが行われる場合、ページ毎にコンデンサを充電し、ページ単位で充電した電圧を加算部220に提供するようにしてもよいし(この場合、ページ単位でコンデンサがリセットされる)、あるいは、複数ページの電圧をコンデンサに充電し、複数ページの読出し後に充電した電圧を加算部220に提供するようにしてもよい(この場合、複数ページの読出し後にコンデンサがリセットされる)。例えば、8ページの読出しが連続的に行われる場合、電圧保持部210は、1ページの読出しが終了する毎にコンデンサに充電した電圧を加算部220に出力してもよいし、あるいは、8ページの読出しが終了したときに8ページ分の読出しでコンデンサに充電された電圧を加算部220に出力するようにしてもよい。
【0028】
加算部220は、ビット線の列方向の電圧を加算する列加算部220_0~200_qと、複数のビット線の行方向の電圧を加算する行加算部222とを含む。加算部222は、特にその構成を限定されないが、例えば、複数の入力電圧を加算するオペアンプを用いて構成される。図6に示すように、列加算部220_0~220_qは、電圧保持部210_0~210_qに接続され、電圧保持部210_0~210qで保持された電圧を入力し、これらの入力電圧を加算する。行加算部222は、列加算部220_0~220_qから出力された電圧を入力し、これらの入力電圧を加算する。
【0029】
A/D変換部230は、加算部220から出力されたアナログ電圧を入力し、このアナログ電圧を予め決められた複数ビットのデジタルデータに変換する。A/D変換部230によって変換されたデジタルデータは、再び、メモリセルアレイの選択されたブロック内の選択ページに書込まれる(プログラムされる)。
【0030】
コントローラ150は、例えば、ROM/RAMを含むマイクロコントローラ、あるいはステートマシンによって構成される。本実施例では、コントローラ150は、例えば、新規なコマンドによって読出し動作時や書込み時における演算処理部190を制御する。ある態様では、メモリプレーンP0またはP1の読出し時にビット線を流れる電流を検出し、検出した電流の行列演算を行い、行列演算されたアナログデータをA/D変換部230によるデジタルデータに変換し、変換されたデジタルデータを別のメモリプレーンP1またはP0に書込む制御を行う。
【0031】
次に、本実施例のフラッシュメモリ100の行列演算について説明する。図7は、行列演算の一例を示すフロー、図8は、図7に示す行列演算を説明するための模式図である。ここでの行列演算は、例えば、メモリプレーンP0の選択ブロック内のk番目のページからn番目のページ(複数のページ)の連続読出しが行われるときに実施される。
【0032】
コントローラ150は、ホスト側のシステムから行列演算のためのコマンド、アドレスを受け取ると、当該コマンドに従い複数ページの連続読出しを開始させる。メモリプレーンP0のk番目のページ(行)の読出しが行われると(S100)、選択ページの選択メモリセルに記憶されたデータに応じて各ビット線にプリチャージされた電流がソース線に流れる。選択メモリセルがオンすれば、当該ビット線の電荷がソース線に放電され、選択メモリセルがオフであれば、当該ビット線の電荷はほとんど変化しない。ビット線電流検出部200は、ビット線BL0、BL1、・・・、BLmを流れる電流iBL0、iBL1、・・・、iBLmを検出する(S110)。図8を参照すると、ワード線WLkの選択時に、ビット線BL0~BLmの各々に流れる電流iBL0_k~iBLm_kが検出され、この検出結果が電圧保持部210に保持される(S120)。
【0033】
k番目のページからn番目のページまでの連続読出しの間、それぞれの読出し時においてビット線BL0~BLmを流れる電流が検出され、それらの電流に応じた電圧が電圧保持部210に保持される。図8を参照すると、ワード線WLk+1の選択時に、ビット線BL0~BLmの各々に流れる電流iBL0_k+1~iBLm_k+1が検出され、以後同様の検出が行われ、ワード線WLnの選択時に、ビット線BL0~BLmの各々に流れる電流iBL0_n~iBLm_nが検出される。
【0034】
次に、列加算部220_0~220_qは、各ビット線BL0~BLmの電流の総和ΣiBL0~ΣiBLmを算出する(S140)。電圧保持部210が、kページからnページまでのビット線の電流の総和を保持している場合には、列加算部220_0~220_qは、電圧保持部210に保持された電圧と等しい電圧を算出することになる。他方、電圧保持部210が各ページの読出し時のビット線の電流を保持する場合には、列加算部220_0~220_qは、各ページの読出し毎に電圧保持部210によって保持した電圧を順次加算する。
【0035】
次に、行加算部222は、列加算部220_0~220_qによって加算された電圧を入力し、これらの入力電圧を加算する(S140)。こうして、kページからnページまでの読出し時にビット線を流れる電流に対応する電圧の総和が算出される。その後、電圧の総和は、A/D変換部230によって複数ビットのデジタルデータに変換され、メモリプレーンP1の選択ブロックの選択ページに書込まれる。この書込みについては後述する。
【0036】
ある態様では、コントローラ150は、新規なコマンドに応じて、演算処理部190による行方向の演算を可能にする。図9は、行方向の演算の一例を示すフロー、図10は、図9に示す行方向の演算を説明するための模式図である。
【0037】
コントローラ150は、ホスト側のシステムから行方向の演算のためのコマンド、アドレスを受け取ると、当該コマンドに従いk番目のページの読出しを開始させる。メモリプレーンP0のk番目のページ(行)の読出しが行われると(S200)、図10に示すように、ビット線BL0~BLmからソース線には、選択メモリセルのデータに応じた電流が流れ、この電流iBL0、iBL1、・・・、iBLmがビット線電流検出部200によって検出される(S210)。
【0038】
電圧保持部210は、ビット線電流検出部210によって検出されたビット線の電流に応じた電圧を保持し(S220)、次いで、行加算部222は、mビット分の行方向の電流iBL0_k+iBL1_k、・・・iBLm_kの総和を算出する(230)。
【0039】
別な態様では、コントローラ150は、新規なコマンドに応じて、演算処理部190による列方向の演算を可能にする。図11は、列方向の演算の一例を示すフロー、図12は、図11に示す列方向の演算を説明するための模式図である。
【0040】
コントローラ150は、ホスト側のシステムから行列演算のためのコマンド、アドレスを受け取ると、当該コマンドに従い複数ページの連続読出しを開始させる。メモリプレーンP0のk番目のページ(行)の読出しが行われると(S300)、例えば、ビット線BL2に流れる電流iBL2_kがビット線電流検出部210によって検出され(S310)、検出した電流iBL2に対応する電圧が電圧保持部220によって保持される(S320)。
【0041】
k番目のページからn番目のページまでの連続読出しの間、それぞれの読出し時においてビット線BL2を流れる電流が検出され、それらの電流に応じた電圧が電圧保持部210に保持される(S330)。次いで、列加算部220_2は、列方向の電流iBL2_k~iBL2_nの総和に対応する電圧を算出する(S340)。
【0042】
上記実施例では、ビット線電流検出部200_0~200_qによって各ビット線に流れる電流をそれぞれ検出するようにしたが、これは一例であり、複数のビット線に流れる電流の総和を検出するようにしてもよい。この場合、複数のビット線を1ユニット(単位)とし、ビット線電流検出部200は、各ユニットの複数のビット線に流れる電流の総和を検出する。例えば、1ユニットが16本のビット線から構成される場合、ビット線電流検出部200は、16本のビット線に流れる電流の総和を検出する。例えば、ビット線電流検出部200は、16本のビット線に接続されたシャント抵抗を流れる電流の総和を検出し、この検出された電圧が電圧保持部210に提供される。同一行で読み出された複数のビット線に流れる電流の総和を検出することは、先の実施例で説明した行方向の電流のビット線に流れる電流の加算処理(図9図10)と等価である。
【0043】
また、別の態様では、ユニット単位の複数のビット線をソース線に共通に接続し、ビット線電流検出部200は、ユニット単位の共通ソース線に流れる電流をビット線電流検出部200によって検出するようにしてもよい。つまり、ユニット単位の共通ソース線には、ユニット単位の複数のビット線に流れる電流の総和が流れ、この電流の総和がビット線電流検出部200によって検出される。
【0044】
さらに別の態様では、NOR型フラッシュメモリのように、センス回路の電圧供給部からビット線に読出し電圧を印加し、ソース線の電圧または電流をセンスする構成である場合、ビット線電流検出部200は、電流供給部から複数のビット線(ユニット単位)に供給される電流を検出するようにしてもよい。電圧供給部からユニットを構成する複数のビット線の各々に読出し電圧が供給され、ビット線からソース線に向けてメモリセルに記憶されたデータに応じた電流が流れる。電圧供給部からユニットを構成する複数のビット線に供給される電流は、各ビット線からソース線に流れる電流の総和に等しい。
【0045】
このように、ビット線電流検出部200によってユニットを構成する複数のビット線に流れる電流の総和を検出することにより、ビット線電流検出部200、電圧保持部210および加算部220の回路数を減少させ、回路に必要なスペースを削減することができる。
【0046】
次に、行列演算の結果を他のブロックに書込む例について説明する。コントローラ150は、ある態様では、メモリプレーンP0の読出し時に得られた行列演算の結果をメモリプレーンP1に書込むが、これは一例であり、同一のメモリプレーン内に演算結果を書込むことも可能である。
【0047】
図13(A)は、ブロックAのワード線WL0~WL16のページ読出しを行ったときの行列演算の結果を示し、図13(B)は、その演算結果をブロックBのワード線WL0の選択ページに書込む例を示している。行列演算は、16行×m列のメモリセルに記憶されたデータを反映したデータである。仮に、メモリセルが2値データを記憶し、A/D変換部230が行列演算の結果をmビットのデジタルデータに変換するならば、16行×m列のメモリセルのデータが1/16に圧縮されることになる。つまり、行列演算の結果をどの程度に圧縮するかによってA/D変換部230の分解能(ビット数)が決定される。
【0048】
上記の例は、行列演算の結果を圧縮して書込む例を示したが、例えば、図9図10に示す行方向の演算結果を圧縮して他のブロックに書込むことも可能であるし、図11図12に示す列方向の演算結果を圧縮して他のブロックに書込むことも可能である。その場合にも、A/D変換部230によって圧縮する割合が決定される。
【0049】
図14は、メモリプレーン間における行列演算果の書込みの例を模式的に示している。先ず、メモリプレーンP0のブロックBLK0の読出しにおいて行列演算が行われ、その演算結果を圧縮したデータがメモリプレーンP1のブロックBLK1に書込まれる(矢印Aで示す)。この処理によって、メモリプレーンP1のブロックBLK1には、メモリプレーンP0の読出しで行われた行列演算の結果が蓄積されていく。
【0050】
メモリプレーンP1のブロックBLK1にデータが蓄積された所で、ブロックBLK1の読出しにおいて行列演算が行われ、その演算結果を圧縮したデータがメモリプレーンP0のブロックBLK0に書込まれる(矢印Bで示す)。メモリプレーンP0、P1間で読出しと書込みを交互に繰り替えることで、複数のメモリセルに格納されたデータの行列演算をフラッシュメモリにおいて実現することができる。また、フラッシュメモリから演算処理を外部に読出し出力したり、あるいは外部から演算処理結果を入力して書込むことなく、フラッシュメモリの内部処理において行列演算とその結果の書込みを行うことができるため、行列演算の処理を効率化し、処理時間の短縮を図ることができる。
【0051】
本実施例のような行列演算機能を備えたフラッシュメモリは、抵抗変化型メモリを有するクロスバーアレイと同様に、ニューロモルフィックデバイスに適用することが可能である。
【0052】
図15にニューラルネットワークを利用したオートエンコーダの一例を示す。オートエンコーダは、入力と出力との間に、複数のエンコーダのレイヤと複数のデコーダのレイヤとを含み、エンコーダおよびデコーダの重み付けまたは符号は学習よって調整される。フラッシュメモリ100は、入力と出力との間で、エンコーダおよびデコーダの各レイヤの処理を行う。
【0053】
フラッシュメモリ100の各メモリセルは、AI学習のための重み付けまたは符号を格納し、例えば、i番目のレイヤから読み出したデータを行列演算処理し、その結果を次のi+1番目のレイヤに書込み、i+1番目のレイヤから読み出したデータを行列演算処理し、その結果を次のi+2番目のレイヤに書込むような処理を順次繰り返す。
【0054】
例えば、i番目のレイヤのノードd1、d3、d3、d4、d5は、読み出されるときの各ページに対応し、i+1番目のレイヤのノードe1は、ノードd1、d2、d3、d4、d5の読出し時のビット線を流れる電流id1_WL1、id2_WL2、id3_WL3、id4_WL4、id5_WL5の総和をA/D変換したデータに対応する。ノードe2は、ノードd1、d2、d3、d4、d5の読出し時のビット線を流れる電流id1_WL6、id2_WL7、id3_WL8、id4_WL9、id5_WL10の総和をA/D変換したデータに対応する。ここで留意すべきは、ノードe1にデータを書込むときに読み出されるノードd1~d5のページと、ノードe2にデータを書込むときに読み出されるノードd1~d5のページとは異なるものである。A/D変換されたデータは、WL電圧に化けて次の隠されたレイヤi+2に移行され、読出しは、隠されたレイヤ中のノード数分だけ繰り返される。
【0055】
こうして、フラッシュメモリ100は、行列演算処理によって特徴を圧縮した学習データを保持し、外部のコントローラは、フラッシュメモリ100の学習データを用いて種々の処理(例えば、画像処理、予測処理、自然言語処理など)を実施することができる。
【0056】
このように本実施例によれば、行列演算機能を備えたフラッシュメモリを構成することで、フラッシュメモリをAI学習機能を有するニューロモルフィックチップとして利用することが可能となる。
【0057】
次に、本発明の別の実施例について説明する。AI学習における行列演算では、重み付け係数または符号は、正の方向または負の方向に増減される。つまり、シナプスの結合強度が強まるとき、重み係数が正の方向に増加し、結合強度が低下するとき、重み係数は負の方向に減少する。
【0058】
本実施例では、重み係数の増減を実現するため、mビットの半分のメモリセルが正のデータを格納し、残りの半分のメモリセルが負のデータを格納するものとする。例えば、偶数ビット線に接続されたメモリセルのデータを正の重み係数に割り当て、奇数ビット線に接続されたメモリセルのデータを負の係数に割り当てる。シナプス間の結合強度が強いとき、偶数ビット線のメモリセルによって表されるデータが大きくなり、結合強度が低くなるとき、奇数ビット線のメモリセルで表されるデータが大きくなる。
【0059】
図16は、本実施例の演算処理部の構成を示すブロック図である。本実施例の演算処理部190Aは、ビット線電流検出部200、電圧保持部210、正加算部300、負加算部310、差分算出部320、A/D変換部230を含む。このうち、ビット線電流検出部200、電圧保持部210、A/D変換部230は、先の実施例と同様に構成されるので、説明を省略する。
【0060】
正加算部300は、正の重み付け係数が割り当てられたビット線、例えば、偶数ビット線を流れる電流の総和を加算し、負加算部310は、負の重み付け係数が割り当てられたビット線、例えば、奇数ビット線を流れる電流の総和を加算する。差分算出部320は、正加算部300の加算結果と、負加算部310の加算結果とを比較し、その差分を算出し、この差分をA/D変換部230に提供する。A/D変換部230は、差分を複数ビットのデータに変換する。
【0061】
ここで留意すべきは、差分算出部320は、正加算部300と負加算部310のいずれが大きいかを識別する。コントローラ150は、正加算部300の加算結果が負加算部310の加算結果よりも大きい場合には、A/D変換したデータを正の重み付け係数が割り当てられたメモリセルに書込むように制御し、負加算部310の加算結果が正加算部300の加算結果よりも大きい場合には、A/D変換したデータを負の重み付け係数が割り当てられたメモリセルに書込むように制御する。
【0062】
このように本実施例によれば、正の重み係数が割り当てられたビット線を流れる電流の総和と負の重み係数が割り当てられたビット線を流れる電流の総和との差分を算出するようにしたので、AI学習における重み係数の増減による変調を容易に行うことができる。
【0063】
上記実施例では、NAND型のフラッシュメモリを例示したが、本発明は、NOR型のフラッシュメモリであってもよい。NOR型のフラッシュメモリは、NAND型フラッシュメモリのように1ページ分のデータをセンスする回路を搭載していないが、例えば、演算処理部を備えたセンス回路とビット線との間の接続を順次切り替えて、複数のビット線に流れる電流をそれぞれ検出することが可能である。
【0064】
本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0065】
100:フラッシュメモリ 110:メモリセルアレイ
120:アドレスバッファ 130:入出力回路
140:ECC回路 150:コントローラ
160:ワード線選択回路 170:ページバッファ/センス回路
180:列選択回路 190:演算処理部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
【手続補正書】
【提出日】2024-06-14
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
NOR型またはNAND型のメモリセルアレイを含む半導体装置における演算方法であって、
前記メモリセルアレイの第1のメモリプレーンの1つまたは複数行の読出しにおいて、読出し時にビット線に流れる列方向の電流の総和を算出し、
算出した結果を前記メモリセルアレイの第2のメモリプレーンに書込む、演算方法。
【請求項2】
前記メモリセルアレイの第2のメモリプレーンの1つまたは複数行の読出しにおいて、読出し時にビット線に流れる列方向の電流の総和を算出し、
算出した結果を前記メモリセルアレイの第1のメモリプレーンに書込む、請求項1に記載の演算方法。
【請求項3】
演算方法はさらに、複数のビット線の列方向の電流の総和の行方向の総和を算出する、請求項1または2に記載の演算方法。
【請求項4】
演算方法は、列方向の電流の総和または行列方向の電流の総和をA/D変換して複数ビットのデータを生成することを含む、請求項1または2に記載の演算方法。
【請求項5】
演算方法はさらに、前記複数ビットのデータを前記メモリセルアレイのメモリセルに書込むことを含む、請求項4に記載の演算方法。
【請求項6】
第1のメモリプレーンの第1のブロックの複数のページから読み出されたデータの行列演算結果を第2のメモリプレーンの第2のブロックの選択ページに書き込む、請求項1に記載の演算方法。
【請求項7】
演算方法は、第1のグループのビット線を流れる列方向の第1の電流の総和と、第2のグループのビット線に流れる列方向の第2の電流の総和とを算出し、第1の電流の総和と第2の電流の総和の差分を算出する、請求項1に記載の演算方法。
【請求項8】
第1の電流の総和は、正の重み係数に割り当てられた電流を表し、第2の電流は、負の重み係数に割り当てられた電流を表す、請求項7に記載の演算方法。
【請求項9】
複数の行線、複数のビット線および複数のメモリセルを含むNOR型またはNAND型のメモリセルアレイであって、当該メモリセルアレイは第1および第2のメモリプレーンを含む、前記メモリセルアレイと、
前記メモリセルアレイの読出しを行う読出し手段と、
前記メモリセルアレイの書込みを行う書込み手段と、
前記読出し手段によって1つまたは複数行の読出しが行われるとき、読出し時にビット線に流れる列方向の電流の総和を算出する演算手段とを含み
前記演算手段は、第1のメモリプレーンの読出しにおいてビット線に流れる行列方向の電流の総和を算出し、前記書込み手段は、算出された行列演算結果を第2のメモリプレーンに書込む、半導体装置。
【請求項10】
前記演算手段は、第2のメモリプレーンの読出しにおいてビット線に流れる行列方向の電流の総和を算出し、前記書込み手段は、算出された行列演算結果を第1のメモリプレーンに書込む、請求項9に記載の半導体装置。
【請求項11】
前記演算手段はさらに、複数のビット線の列方向の電流の総和の行方向の総和を算出する、請求項9に記載の半導体装置。
【請求項12】
前記演算手段は、列方向の電流の総和または行列方向の電流の総和をA/D変換して複数ビットのデータを生成するA/D変換手段を含む、請求項9または10に記載の半導体装置。
【請求項13】
前記書込み手段は、前記複数ビットのデータを前記メモリセルアレイのメモリセルに書込む、請求項12に記載の半導体装置。
【請求項14】
前記書き込み手段は、第1のメモリプレーンの第1のブロックの複数のページから読み出されたデータの行列演算結果を第2のメモリプレーンの第2のブロックの選択ページに書き込む、請求項9に記載の半導体装置。
【請求項15】
前記演算手段は、第1のグループのビット線を流れる列方向の第1の電流の総和と、第2のグループのビット線に流れる列方向の第2の電流の総和とを算出し、第1の電流の総和と第2の電流の総和の差分を算出する、請求項に記載の半導体装置。