(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024110961
(43)【公開日】2024-08-16
(54)【発明の名称】外部磁場プログラミング支援を有する超小型電力推論エンジン
(51)【国際特許分類】
G06N 3/065 20230101AFI20240808BHJP
G06G 7/60 20060101ALI20240808BHJP
G11C 11/16 20060101ALI20240808BHJP
G11C 11/54 20060101ALI20240808BHJP
G06F 12/00 20060101ALI20240808BHJP
【FI】
G06N3/065
G06G7/60
G11C11/16 240
G11C11/54
G11C11/16 230
G06F12/00 560F
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2024076308
(22)【出願日】2024-05-09
(62)【分割の表示】P 2021097563の分割
【原出願日】2021-06-10
(31)【優先権主張番号】17/061,798
(32)【優先日】2020-10-02
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】511242535
【氏名又は名称】サンディスク テクノロジーズ エルエルシー
【住所又は居所原語表記】5080 Spectrum Drive,Suite 1050W,Addison,Texas 75001,United States of America
(74)【代理人】
【識別番号】110000110
【氏名又は名称】弁理士法人 快友国際特許事務所
(72)【発明者】
【氏名】マイケル・グロービズ
(72)【発明者】
【氏名】マイケル・ニコラス アルバート・トラン
(57)【要約】
【課題】MRAMベースのベクトル乗算デバイスを提供する
【解決手段】クロスポイントアレイは、各クロスポイント接合部にMRAMセル及び各ワード線に独立した入力電圧を供給し、各ビット線上で電流を読み取ることが可能な周辺アレイ回路を有する。ベクトル乗算は、入力電圧のベクトルと、MRAMセル状態によって符号化された行列の重み値とのアレイ内乗算として実行される。MRAMセルは、入力電圧と外部磁場との組み合わせを使用して個別にプログラミングすることができる。外部磁場は、1つの極性の書き込み電圧が、セル状態を外部場と整合させるのに十分な異方性を低減するが、書き込み電圧の半分のみが印加される場合には、セルを整合させるには不十分となるように選択される。
【選択図】
図1
【特許請求の範囲】
【請求項1】
装置であって、
1つ以上のビット線に沿って接続された複数の磁気抵抗ランダムアクセスメモリ(MRAM)メモリセルを含むアレイに接続するように構成された制御回路であって、
第1のレベルを上回り、かつ第2のレベルを下回る場強度を有する印加された外部磁場に応じて、前記MRAMメモリセルのうちのプログラミングされる個々のものに、選択的にバイアスすることと、
共有ビット線に沿って接続された第1の複数の前記MRAMメモリセルを、前記第1の複数の前記MRAMメモリセルに印加された対応する第1の複数の入力電圧に応じて、同時に感知することと、を行うように構成された、制御回路を備える、装置。
【請求項2】
前記制御回路が、
前記第1の複数の前記MRAMメモリセルに印加された前記対応する第1の複数の入力電圧に応じて前記共有ビット線内の電流の値を受信し、前記電流からマルチビット出力値を決定するように構成されたアナログ・デジタル変換器を備える、請求項1に記載の装置。
【請求項3】
前記制御回路が制御ダイ上に形成され、前記装置が、
MRAMメモリセルの前記アレイを含むメモリダイであって、前記制御ダイとは別体に形成され、前記制御ダイに接合されている、メモリダイを更に備える、請求項1に記載の装置。
【請求項4】
前記アレイが、
前記MRAMメモリセルと、
複数のビット線と、
複数のワード線と、を備え、前記アレイは、前記MRAMメモリセルの各々が、前記ビット線のうちの対応する1本と前記ワード線のうちの対応する1本との間に接続されているクロスポイントアーキテクチャに従って形成されている、請求項3に記載の装置。
【請求項5】
前記MRAMメモリセルが、20Ωμm2以上の抵抗と面積の積を有するように形成される、請求項4に記載の装置。
【請求項6】
前記アレイが、
複数の導電線を更に備え、前記制御回路が、前記導電線にバイアスをかけて補足磁場を生成するように構成されている、請求項4に記載の装置。
【請求項7】
前記制御回路が、
前記ビット線に接続され、前記ワード線に印加された、対応する第1の複数の入力電圧に応じて前記ビット線の各々内の電流の値を受信して、前記電流の各々からマルチビット出力値を決定するように構成された1つ以上のアナログ・デジタル変換器を備える、請求項4に記載の装置。
【請求項8】
前記制御回路が、
前記1つ以上のアナログ・デジタル変換器に接続され、前記マルチビット出力値を加算するように構成されたデジタル計算回路を更に備える、請求項7に記載の装置。
【請求項9】
前記MRAMメモリセルが、ニューラルネットワークの層の重みを記憶するように構成され、前記制御回路が、
前記ニューラルネットワークの前記層の入力値のベクトルを受信することであって、前記入力値のベクトルが、複数の成分を有する、受信することと、
前記入力値のベクトルの前記成分を電圧レベルのセットに変換することと、
前記入力電圧のセットの各々を、対応する前記ワード線のセットに印加することと、を行うように更に構成されている、請求項8に記載の装置。
【請求項10】
前記ニューラルネットワークの前記層の重みがバイナリ値であり、前記層の前記入力値のベクトルがバイナリ値である、請求項9に記載の装置。
【請求項11】
方法であって、
不揮発性メモリデバイスを第1の外部磁場内に置くことであって、前記メモリデバイスが、不揮発性メモリアレイを含み、前記メモリアレイが、前記メモリアレイの各クロスポイントに磁気抵抗ランダムアクセスメモリ(MRAM)セルを有するクロスポイントアーキテクチャに従って形成されており、前記MRAMメモリセルが各々、平行極性を有する磁場を有する基準層及び自由層を有する、置くことと、
前記不揮発性メモリアレイが前記第1の外部磁場内にある状態で、前記メモリアレイの第1のビット線に沿った1つ以上の選択されたMRAMメモリセルを、
前記第1のビット線に低電圧値をバイアスすること、
前記MRAMメモリセルの各々について、前記メモリアレイの対応するワード線に書き込み選択電圧をバイアスすること、
前記第1ビット線以外の前記メモリアレイのビット線に前記低電圧値よりも高い電圧レベルをバイアスすること、及び
選択されたMRAMメモリセルに対応しないワード線に、前記書き込み選択電圧値よりも低い電圧レベルをバイアスすること、を同時に行うことによって、前記選択されたメモリセルの前記基準層に対して反平行の極性を有する自由層を有するようにプログラミングすることと、を含み、前記書き込み選択電圧が、前記選択されたMRAMメモリセルのの前記自由層が、極性が反転し、前記メモリアレイの選択されていないMRAMメモリセルの前記自由層の前記極性が、極性が反転しないように構成されている、方法。
【請求項12】
前記不揮発性メモリデバイスを前記第1の外部磁場内に置き、前記メモリアレイの前記第1のビット線に沿った前記選択されたMRAMメモリセルをプログラミングする前に、
前記不揮発性メモリデバイスを初期化磁場に置くことによって前記不揮発性メモリデバイスを初期化することを更に含み、前記初期化磁場が、前記基準層及び自由層を整合させて平行極性を有する磁場を有するように構成されている、請求項11に記載の方法。
【請求項13】
不揮発性メモリデバイスであって、
メモリアレイであって、
複数のワード線、
複数のビット線、及び
複数の磁気抵抗ランダムアクセスメモリ(MRAM)セル、を含み、前記メモリアレイが、前記MRAMメモリセルの各々が、前記ビット線のうちの対応する1本と前記ワード線のうちの対応する1本との間に接続されているクロスポイントアーキテクチャを有する、メモリアレイと、
前記メモリアレイに接続された1つ以上の制御回路であって、
第1のレベルを上回り、かつ第2のレベルを下回る場強度を有する印加された外部磁場に応じて、前記MRAMメモリセルのうちの選択されたものをプログラミングするように前記ワード線及びビット線にバイアスをかけること、並びに
前記複数のビット線に印加された電圧パターンに応じて、ビット線の各々のマルチビット値出力を決定すること、を行うように構成された、1つ以上の制御回路と、を備える、不揮発性メモリデバイス。
【請求項14】
前記ワード線及びビット線にバイアスをかけて、印加された外部磁場に応じて前記MRAMメモリセルのうちの選択されたものをプログラミングするために、前記1つ以上の制御回路が、
1つ以上の第1の選択されたワード線に書き込み選択電圧をバイアスすることと、
第1の選択されたビット線に低電圧値をバイアスすることと、
前記第1の選択されたビット線以外の前記メモリアレイのビット線に前記低電圧値よりも高い電圧レベルをバイアスすることと、
前記第1の選択されたワード線以外のワード線に前記書き込み選択電圧値よりも低い電圧レベルをバイアスすることと、を同時に行うように構成されている、請求項13に記載の不揮発性メモリデバイス。
【請求項15】
前記ワード線及びビット線にバイアスをかけて、印加された外部磁場に応じて前記MRAMメモリセルのうちの選択されたものをプログラミングするために、前記1つ以上の制御回路が、前記第1の選択されたビット線に前記低電圧値をバイアスした後に、同時に、
1つ以上の第2の選択されたワード線に前記書き込み選択電圧をバイアスすることと、
第2の選択されたビット線に前記低電圧値をバイアスすることと、
前記第2の選択されたビット線以外の前記メモリアレイのビット線に前記低電圧値よりも高い電圧レベルをバイアスすることと、
前記選択されたワード線以外のワード線に、前記書き込み選択電圧値よりも低い電圧レベルをバイアスすることと、を行うように更に構成されている、請求項14に記載の不揮発性メモリデバイス。
【請求項16】
前記MRAMメモリセルが、ニューラルネットワークの層の重みを記憶するように構成され、前記1つ以上の制御回路が、
前記ニューラルネットワークの前記層のベクトル入力値を受信することと、
前記ベクトル入力値の成分を電圧レベルのセットに変換し、前記電圧レベルのセットを対応する前記ワード線のセットに同時に印加することによって、ニューラルネットワークに対してアレイ内乗算動作を実行することと、を行うように更に構成されている、請求項13に記載の不揮発性メモリデバイス。
【請求項17】
前記1つ以上の制御回路が、
前記アレイ内乗算動作に応じて、前記ビット線の各々における電流値からマルチビット出力値を決定することと、
前記マルチビット出力値を加算することと、を行うように更に構成されている、請求項16に記載の不揮発性メモリデバイス。
【請求項18】
前記MRAMメモリセルが、20Ωμm2以上の抵抗と面積の積を有するように形成されている、請求項13に記載の不揮発性メモリデバイス。
【請求項19】
前記不揮発性メモリデバイスが、
接合されたダイ対であって、
前記メモリアレイを含むメモリダイ、及び
前記メモリダイとは別体に形成され、かつ前記メモリダイに接合され、前記1つ以上の制御回路を含む制御ダイ、を備える、接合されたダイ対を含む、請求項13に記載の不揮発性メモリデバイス。
【請求項20】
前記メモリアレイが、
複数の導電線を更に備え、
前記1つ以上の制御回路が、補足磁場を生成するために前記導電線にバイアスをかけるように更に構成されている、請求項13に記載の不揮発性メモリデバイス。
【発明の詳細な説明】
【背景技術】
【0001】
人工ニューラルネットワークは、人工知能及び機械学習用途での使用が拡大している。人工ニューラルネットワークでは、入力のセットが1つ以上の中間層又は隠れた層を介して伝搬され、出力が生成される。入力と出力とを接続する層は、トレーニング又は学習段階で、入力を出力に変えるための数学的操作のセットを決定し、各出力の確率を計算しながら層の中を移動することで生成される重みのセットで接続されている。重みが確立されると、それらを推論段階で使用して、入力のセットからの出力を決定することができる。このようなニューラルネットワークは、非常に正確な結果を提供するが、極めて計算量が多く、異なる層を接続する重みをメモリから読み出して、それらの重みを処理ユニットの処理ユニットに転送する際のに伴うデータ転送には、かなりの負荷がかかり得る。
【図面の簡単な説明】
【0002】
同様に番号付けされた要素は、異なる図で共通の構成要素を指す。
【0003】
【
図1】ホストに接続されたメモリシステムの一実施形態のブロック図である。
【0004】
【
図2】フロントエンドプロセッサ回路の一実施形態のブロック図である。いくつかの実施形態では、フロントエンドプロセッサ回路は、コントローラの一部である。
【0005】
【
図3】バックエンドプロセッサ回路の一実施形態のブロック図である。いくつかの実施形態では、バックエンドプロセッサ回路は、コントローラの一部である。
【0006】
【
図4】メモリパッケージの一実施形態のブロック図である。
【0007】
【
図5】メモリダイの一実施形態のブロック図である。
【0008】
【
図6A】ウェハ-ウェハ接合を介してメモリ構造に結合された制御回路の一例を示す。
【
図6B】ウェハ-ウェハ接合を介してメモリ構造に結合された制御回路の一例を示す。
【0009】
【
図7】畳み込みニューラルネットワーク(convolutional neural network、CNN)の単純な例を示す。
【0010】
【
図8】人工ニューラルネットワーク内の完全接続層の単純な例を示す。
【0011】
【
図9A】重みのセットを生成するためにニューラルネットワークをトレーニングするためのプロセスの一実施形態を説明するフローチャートである。
【0012】
【
図9B】ニューラルネットワークを使用した推論のためのプロセスの一実施形態を説明するフローチャートである。
【0013】
【
図10】畳み込みニューラルネットワークにおける畳み込み動作の概略図である。
【0014】
【
図11】ニューラルネットワークの完全接続層における行列乗算の使用の概略図である。
【0015】
【
図12A】クロスポイントアーキテクチャを有するメモリアレイの一部分の一実施形態を描いている。
【
図12B】クロスポイントアーキテクチャを有するメモリアレイの一部分の一実施形態を描いている。
【
図12C】クロスポイントアーキテクチャを有するメモリアレイの一部分の一実施形態を描いている。
【0016】
【
図13】アレイの動作に使用されるクロスポイントアレイ及び制御回路の一部の上面図である。
【0017】
【
図14A】プログラム化されるメモリセルの選択のための半選択方式を示す。
【0018】
【
図14B】プログラム化されるメモリセルの選択のための「完全選択」方式を示す。
【0019】
【
図15】MRAMメモリセルの一例、及びMRAMメモリセルの自由層を切り替えるために必要とされる磁場に対する電圧の影響を示す。
【
図16A】MRAMメモリセルの一例、及びMRAMメモリセルの自由層を切り替えるために必要とされる磁場に対する電圧の影響を示す。
【
図16B】MRAMメモリセルの一例、及びMRAMメモリセルの自由層を切り替えるために必要とされる磁場に対する電圧の影響を示す。
【0020】
【
図17】外部磁場によって支援されたMRAMクロスポイントアレイのプログラミングのための実施形態をより詳細に示す。
【
図18】外部磁場によって支援されたMRAMクロスポイントアレイのプログラミングのための実施形態をより詳細に示す。
【
図19A】外部磁場によって支援されたMRAMクロスポイントアレイのプログラミングのための実施形態をより詳細に示す。
【
図19B】外部磁場によって支援されたMRAMクロスポイントアレイのプログラミングのための実施形態をより詳細に示す。
【0021】
【
図20】推論エンジンのためのクロスポイントアーキテクチャを有するMRAMベースのメモリの使用のための実施形態を示すフローチャートである。
【0022】
【
図21】MRAMメモリセル設計の実施形態をより詳細に示す。
【発明を実施するための形態】
【0023】
ニューラルネットワークが推論又はトレーニング動作を実行する際には、大量のデータを各々伴う大量の演算が実行され、特にディープニューラルネットワーク、又はDNNの場合は、完全接続層及び畳み込み層などのネットワーク層が多数存在し、その中を入力が伝搬していく構造になっている。メモリデバイス内及びメモリデバイスからの大量のデータの移動を回避するために、ニューラルネットワークの層の重みは、メモリデバイスの不揮発性メモリアレイに記憶され、層の各々の演算がデバイス上で実行される。ニューラルネットワークの層の入力と重みとのアレイ内乗算を実行するために、重み値は、磁気抵抗ランダムアクセスメモリ(magnetoresistive random access memory、MRAM)セルがワード線とビット線との間の各クロスポイント接合部に位置するクロスポイント構造を有するMRAMセルのアレイに記憶される。MRAMメモリセルは、低抵抗状態及び高抵抗状態の両方に対して高い抵抗値を有するように形成することができる一方で、依然として状態間の大きな相対差を維持することができる。ベクトル乗算は、ニューラルネットワークの層の入力ベクトルに対応する入力電圧のベクトルとMRAMセル状態によって符号化された重み値の行列との間のアレイ内乗算として実行される。低抵抗状態にある場合は、メモリセルがほとんど電流を引き込まないので、複数のワード線及び複数のビット線は、低電力のアレイ内乗算動作において同時に感知することができる。MRAMセルは、入力電圧と外部磁場との組み合わせを使用して個別にプログラミングすることができる。外部磁場は、プログラミング電圧のセットが選択されたメモリセルの状態を外部場と整合させるのに十分なだけ異方性を低減するが、書き込み電圧の半分のみが印加された場合にメモリセルを整合させるには不十分となるように選択される。
【0024】
図1は、ホスト120に接続されたメモリシステム100の一実施形態のブロック図である。メモリシステム100は、本明細書で提案される技術を実装することができ、ニューラルネットワーク入力又は他のデータがホスト120から受信される。実施形態に応じて、入力は、ホスト120から受信することができ、次いでメモリパッケージ104のメモリアレイに事前にプログラミングされた重みに情報を与えるためにメモリパッケージ104に提供され得る。多くの異なるタイプのメモリシステムを、本明細書で提案される技術とともに使用することができる。例示的なメモリシステムは、ソリッドステートドライブ(solid state drive、「SSD」)、メモリカード、及び埋め込みメモリデバイスを含むが、しかしながら、他のタイプのメモリシステムも使用することができる。
【0025】
図1のメモリシステム100は、データを記憶するためのコントローラ102、不揮発性メモリ104、及びローカルメモリ(例えば、DRAM/ReRAM)106を備える。コントローラ102は、フロントエンドプロセッサ(FEP)回路110、及び1つ以上のバックエンドプロセッサ(BEP)回路112を備える。一実施形態では、FEP回路110は、ASIC上に実装される。一実施形態では、各BEP回路112は、別体のASIC上に実装される。他の実施形態では、統合コントローラASICは、フロントエンド機能及びバックエンド機能の両方を組み合わせることができる。BEP回路112及びFEP回路110の各々のASICは、コントローラ102がチップ上のシステム(system on a chip、「SoC」)として製造されるように、同じ半導体上に実装される。FEP回路110及びBEP回路112は両方とも、それら自体のプロセッサを含む。一実施形態では、FEP回路110及びBEP回路112は、FEP回路110がマスターであり、各BEP回路112がスレーブであるマスタースレーブ構成として機能する。例えば、FEP回路110は、メモリ管理(例えば、ガベージコレクション、ウェアレベリングなど)、論理・物理アドレス変換、ホストとの通信、DRAM(ローカル揮発性メモリ)の管理、及びSSD(又は他の不揮発性記憶システム)の全体動作の管理を実行する、フラッシュ翻訳層(flash translation layer、FTL)又はメディア管理層(media management layer、MML)を実装する。BEP回路112は、FEP回路110の要求でメモリパッケージ/ダイ内のメモリ動作を管理する。例えば、BEP回路112は、読み出し、消去、及びプログラミングプロセスを実行することができる。追加的に、BEP回路112は、バッファ管理を実行し、FEP回路110によって要求される特定の電圧レベルを設定し。エラー訂正(error correction、ECC)を実行し、トグルモードインターフェースをメモリパッケージに制御するなどを行うことができる。一実施形態では、各BEP回路112は、それ自体のメモリパッケージのセットに関与する。
【0026】
一実施形態では、不揮発性メモリ104は、複数のメモリパッケージを備える。各メモリパッケージは、1つ以上のメモリダイを含む。したがって、コントローラ102は、1つ以上の不揮発性メモリダイに接続される。一実施形態では、メモリパッケージ104内の各メモリダイは、NANDフラッシュメモリ(二次元NANDフラッシュメモリ及び/又は三次元NANDフラッシュメモリを含む)を利用する。他の実施形態では、メモリパッケージは、抵抗性ランダムアクセスメモリ(ReRAM,MRAM、FeRAM、又はRRAMなど)又は相変化メモリ(phase change memory、PCM)に基づくストレージクラスメモリ(storage class memory、SCM)などの他のタイプのメモリを含むことができる。
【0027】
コントローラ102は、例えば、PCIエクスプレス(PCIe)上のNVMエクスプレス(NVM Express、NVMe)のようなプロトコルを実装するインターフェース130を介してホスト120と通信する。メモリシステム100を用いて機能するために、ホスト120は、ホストプロセッサ122、ホストメモリ124、及びバス128に沿って接続されたPCIeインターフェース126を含む。ホストメモリ124は、ホストの物理メモリであり、DRAM、SRAM、不揮発性メモリ、又は別のタイプのストレージであり得る。ホスト120は、メモリシステム100の外部にあり、メモリシステム100とは別体である。一実施形態では、メモリシステム100はホスト120内に埋め込まれる。
【0028】
図2は、FEP回路110の一実施形態のブロック図である。
図2は、ホスト120と通信するPCIeインターフェース150と、そのPCIeインターフェースと通信するホストプロセッサ152とを示す。ホストプロセッサ152は、実装に好適である、当該技術分野において既知の任意のタイプのプロセッサであり得る。ホストインターフェース152は、ネットワークオンチップ(NOC)154と通信する。NOCは、典型的にはSoC内のコア間の集積回路上の通信サブシステムである。NOCは、同期及び非同期クロックドメインにまたがるか、又はロックされていない非同期論理を使用することができる。NOC技術は、ネットワーキング理論及び方法をオンチップ通信に適用し、従来のバス及びクロスバー相互接続に顕著な改善をもたらす。NOCは、他の設計と比較して、SoCの拡張性、及び複雑なSoCの電力効率を改善する。NOCのワイヤ及びリンクは、多くの信号によって共有される。NOC内の全てのリンクが異なるデータパケット上で同時に動作することができるため、高レベルの同時性が達成される。したがって、統合サブシステムの複雑性が増大し続けると、NOCは、以前の通信アーキテクチャ(例えば、専用のポイントツーポイント信号ワイヤ、共有バス、又はブリッジを有するセグメント化バス)と比較して、向上した性能(スループットなど)及び拡張性をもたらす。NOC154に接続され、NOC154と通信するのは、メモリプロセッサ156、SRAM160、及びDRAMコントローラ162である。DRAMコントローラ162は、DRAM(例えば、DRAM106)を動作及びそれと通信するために使用される。SRAM160は、メモリプロセッサ156によって使用されるローカルRAMメモリである。メモリプロセッサ156は、FEP回路を作動させ、様々なメモリ動作を実行するために使用される。また、NOCと通信するのは、2つのPCIeインターフェース164及び166である。
図2の実施形態では、SSDコントローラは2つのBEP回路112を含む。したがって、2つのPCIeインターフェース164/166が存在する。各PCIeインターフェースは、BEP回路112のうちの1つと通信する。他の実施形態では、2つを超える、又は2つより少ないBEP回路112が存在し得る。したがって、2つを超えるPCIeインターフェースが存在し得る。
【0029】
FEP回路110はまた、フラッシュ翻訳層(FTL)、又はより一般的には、メモリ管理(例えば、ガベージコレクション、ウェアレベリング、負荷バランシングなど)を実行するメディア管理層(MML)158、論理・物理アドレス変換、ホストとの通信、DRAM(ローカル揮発性メモリ)の管理、及びSSD又は他の不揮発性記憶システムの全体動作の管理を含むことができる。メモリエラー及びホストとのインターフェースを扱い得るメモリ管理の一部として、メディア管理層MML158が組み込まれてもよい。具体的には、MMLはFEP回路110内のモジュールであってもよく、メモリ管理の内部に関与してもよい。具体的には、MML158は、ホストからの書き込みをダイのメモリ構造(例えば、下記
図5の326)への書き込みに変換するメモリデバイスファームウェア内のアルゴリズムを含んでいてもよい。MML158は、1)メモリの耐久性が限られている場合があること、2)メモリ構造がページの複数のページにのみ書き込むことができること、及び/又は3)メモリ構造はブロックとして消去されない限り書き込むことができないことを理由に必要とされ得る。MML158は、ホストに可視でないことがあり得るメモリ構造のこれらの潜在的制約を理解する。したがって、MML158は、ホストからの書き込みをメモリ構造内への書き込みに変換しようと試みる。
【0030】
図3は、BEP回路112の一実施形態のブロック図である。
図3は、FEP回路110と通信するためのPCIeインターフェース200を示す(例えば、
図2のPCIeインターフェース164及び166のうちの1つと通信する)。PCIeインターフェース200は、2つのNOC202及び204と通信する。一実施形態では、2つのNOCを、1つの大きなNOCに組み合わせることができる。各NOC(202/204)は、XORエンジン(224/254)及びECCエンジン(226/256)を介して、SRAM(230/260)、バッファ(232/262)、プロセッサ(220/250)、及びデータ経路コントローラ(222/252)に接続される。ECCエンジン226/256は、当該技術分野において既知のように、エラー訂正を実行するために使用される。XORエンジン224/254は、データをXORするために使用され、その結果、データは、プログラミングエラーがある場合に復元され得る様式で組み合わされ、記憶することができる。データ経路コントローラ222は、メモリパッケージと4つのチャネルを介して通信するためのインターフェースモジュールに接続される。したがって、上部NOC202は、メモリパッケージと通信するための4つのチャネルのためのインターフェース228に関連付けられ、下部NOC204は、メモリパッケージと通信するための4つの追加のチャネルのためのインターフェース258と関連付けられる。各インターフェース228/258は、4つのトグルモードインターフェース(TMインターフェース)、4つのバッファ、及び4つのスケジューラを含む。チャネルの各々について、1つのスケジューラ、バッファ、及びTMインターフェースが存在する。プロセッサは、当該技術分野において既知の任意の標準的プロセッサとすることができる。データ経路コントローラ222/252は、プロセッサ、FPGA、マイクロプロセッサ、又は他のタイプのコントローラとすることができる。XORエンジン224/254及びECCエンジン226/256は、ハードウェアアクセラレータとして知られる専用ハードウェア回路である。他の実施形態では、XORエンジン224/254及びECCエンジン226/256は、ソフトウェアで実装されることができる。スケジューラ、バッファ、及びTMインターフェースは、ハードウェア回路である。
【0031】
図4は、メモリバス(データ線及びチップイネーブル線)294に接続された複数のメモリダイ292を含むメモリパッケージ104の一実施形態のブロック図である。メモリバス294は、BEP回路112のTMインターフェースと通信するためのトグルモードインターフェース296に接続する(例えば、
図3を参照)。いくつかの実施形態では、メモリパッケージは、メモリバス及びTMインターフェースに接続された小型コントローラを含むことができる。メモリパッケージは、1つ以上のメモリダイを有することができる。一実施形態では、各メモリパッケージは、8個又は16個のメモリダイを含むが、しかしながら、他の数のメモリダイもまた実装することができる。本明細書に記載される技術は、メモリダイの任意の特定の数に限定されない。
【0032】
図5は、メモリダイ300の一実施形態の機能ブロック図である。
図5に描く構成要素は、電気回路である。一実施形態では、各メモリダイ300は、メモリ構造326、制御回路310、及び読み出し/書き込み回路328を含む。メモリ構造326は、行復号器324を介してワード線によりアドレス指定可能であり、列復号器332を介してビット線によりアドレス指定可能である。読み出し/書き込み回路328は、SB1、SB2、...、SBp(感知回路)を含む複数のセンスブロック350を含み、メモリセルのページが同時に読み出し又はプログラミングされることを可能にする。コマンド及びデータは、線318を介してコントローラとメモリダイ300との間で転送される。一実施形態では、メモリダイ300は、線318に接続する入力及び/又は出力(input and/or output、I/O)ピンのセットを含む。
【0033】
制御回路310は、読み出し/書き込み回路328と協働して、メモリ構造326でメモリ動作(例えば、書き込み、読み出しなど)を実行し、ステートマシン312、オンチップアドレス復号器314、及び電力制御回路316を含む。ステートマシン312は、メモリ動作のダイレベル制御を提供する。一実施形態では、ステートマシン312は、ソフトウェアによってプログラム可能である。他の実施形態では、ステートマシン312は、ソフトウェアを使用せず、ハードウェア(例えば電気回路)内に完全に実装される。別の実施形態では、ステートマシン312は、マイクロコントローラによって置き換えられる。
【0034】
オンチップアドレス復号器314は、コントローラ102によって使用されるアドレスと、復号器324及び332によって使用されるハードウェアアドレスとの間のアドレスインターフェースを提供する。電力制御モジュール316は、メモリ動作中にワード線及びビット線に供給される電力及び電圧を制御する。電力制御モジュール316は、電圧を作成するための電荷ポンプを含んでいてもよい。センスブロックは、ビット線ドライバを含む。
【0035】
本書の目的のために、語句「1つ以上の制御回路」は、不揮発性メモリを制御するために使用されるコントローラ、ステートマシン、マイクロコントローラ及び/若しくは制御回路310、又は他の類似回路を含むことができる。
【0036】
一実施形態では、メモリ構造326は、ウェハなどの単一の基板上に複数のメモリレベルが形成される不揮発性メモリセルの三次元メモリアレイを含む。メモリ構造は、シリコン(又は他のタイプの)基板上に配設された活性領域を有するメモリセルのアレイの1つ以上の物理レベルに、モノリシックに形成される任意のタイプの不揮発性メモリを含んでいてもよい。一例では、不揮発性メモリセルは、例えば米国特許第9,721,662号に記載されているような電荷トラップ材料を有する垂直NANDストリングを含み、その全体が参照により本明細書に組み込まれる。
【0037】
別の実施形態では、メモリ構造326は、不揮発性メモリセルの二次元メモリアレイを備える。一例では、不揮発性メモリセルは、例えば米国特許第9,082,502号に記載されているような浮動ゲートを利用するNANDフラッシュメモリセルであり、その全体が参照により本明細書に組み込まれる。他のタイプのメモリセル(例えば、NOR型フラッシュメモリ)も使用することができる。
【0038】
メモリ構造326に含まれるメモリアレイアーキテクチャ又はメモリセルの正確なタイプは、上記の例に限定されない。多くの異なるタイプのメモリアレイアーキテクチャ又はメモリ技術を使用して、メモリ構造326を形成することができる。本明細書で提案された新たに特許請求される実施形態の目的には、特定の不揮発性メモリ技術は必要とされない。メモリ構造326のメモリセルに好適な技術の他の例として、ReRAMメモリ(抵抗ランダムアクセスメモリ)、磁気抵抗メモリ(例えば、MRAM、スピントランスファートルクMRAM、スピン軌道トルクMRAM)、FeRAM、段階変化メモリ(例えばPCM)などが挙げられる。メモリ構造326のメモリセルアーキテクチャに好適な技術の例として、二次元アレイ、三次元アレイ、クロスポイントアレイ、積層型二次元アレイ、垂直ビット線アレイなどが挙げられる。
【0039】
ReRAMクロスポイントメモリの一例として、X線及びY線(例えば、ワード線及びビット線)によってアクセスされるクロスポイントアレイに配置された可逆抵抗スイッチング素子が挙げられる。別の実施形態では、メモリセルは、導電性ブリッジメモリ素子を含み得る。導電性ブリッジメモリ素子はまた、プログラム可能なメタライゼーションセルと呼ばれ得る。導電性ブリッジメモリ素子は、固体電解質内のイオンの物理的再配置に基づく状態変化素子として使用され得る。場合によっては、導電性ブリッジメモリ素子は、2つの電極間に固体電解質薄膜を有する、2つの固体金属電極を含んでもよく、一方は、比較的不活性であり(例えば、タングステン)、他方は、他の電気化学的に活性である(例えば、銀又は銅)。温度が上昇すると、イオンの移動度も増加し、導電性ブリッジメモリセルのプログラミング閾値が低下する。したがって、導電性ブリッジメモリ素子は、温度に対して広範囲のプログラミング閾値を有し得る。
【0040】
磁気抵抗ランダムアクセスメモリ(MRAM)は、磁気記憶素子によってデータを記憶する。要素は、その各々が強磁性であり、薄い絶縁層によって分離されている層としても知られる2つの強磁性薄膜から形成されている。2つの層のうちの一方は、特定の極性に設定された永久磁石である。他方の層の磁性は、メモリを記憶するために外部場と一致するように変更することができる。メモリデバイスは、このようなメモリセルのグリッドから構築される。プログラミングのための一実施形態では、各メモリセルは、互いに直角に、セルに平行に、セルの1つ上及び1つ下に配置された一対の書き込み線の間にある。電流がそれらを通過すると、誘導磁場が作成される。MRAMベースのメモリの実施形態について、以下でより詳細に論じる。
【0041】
位相変化メモリ(PCM)は、カルコゲナイドガラス特有の挙動を利用する。一実施形態は、単にレーザパルス(又は別の光源からの光パルス)でゲルマニウム原子の調整状態を変化させることによって、非熱位相変化を達成するために、GeTe-Sb2Te3超格子を使用する。したがって、プログラミングの線量はレーザパルスである。メモリセルは、メモリセルが光を受信することをブロックすることによって抑制され得る。他のPCM実施形態では、メモリセルは、電流パルスによってプログラミングされる。本書では「パルス」の使用には四角いパルスを必要としないが、(連続的又は非連続的な)音の振動若しくはバースト、電流、電圧光、又は他の波を含むことに留意されたい。
【0042】
当業者であれば、本明細書に記載される技術は単一の特定のメモリ構造、メモリ構築、又はメモリ構文に限定されず、本明細書に記載され、当業者の1人によって理解されるように、技術の精神及び範囲内で、多くの関連するメモリ構造をカバーすることを、理解するであろう。
【0043】
図5の要素は、メモリセルのメモリ構造326、及び他の要素の全てを含む周辺回路の2つの部分にグループ化することができる。メモリ回路の重要な特性は、メモリ構造326の上に与えられるメモリダイ300の面積を増加させることによって増加させることができる容量である。しかしながら、これにより、周辺回路に利用可能なメモリダイ300の面積が低減される。これは、これらの周辺要素に非常に厳しい制限を課すことになり得る。例えば、センス増幅器回路を利用可能な面積内に適合させる必要性は、センス増幅器設計アーキテクチャに対する著しい制限となり得る。オンダイ制御回路310に関して、面積の可用性を低減することにより、オンチップに実装することができる利用可能な機能性を限定することになり得る。その結果、メモリダイ300の設計における基本的なトレードオフは、メモリ構造326に割く面積の大きさ、及び周辺回路に割く面積の大きさである。
【0044】
メモリ構造326及び周辺回路がしばしば対立する別の面積は、これらの領域を形成することに伴う処理にある。なぜなら、これらの領域は、異なる処理技術、及び単一ダイ上に異なる技術を有するトレードオフを伴うことが多いからである。例えば、メモリ構造326がNANDフラッシュである場合、これはNMOS構造であり、周辺回路は、CMOSベースであることが多い。例えば、センスブロック350内のセンス増幅器回路、電力制御ブロック316の電荷ポンプ、ステートマシン312内の論理素子、及び他の周辺回路は、PMOSデバイスを採用することが多い。CMOSダイを製造するための処理動作は、NMOSフラッシュNANDメモリ又は他のメモリセル技術に関して最適化された処理動作とは多くの態様において異なる。
【0045】
これらの制限を改善するために、以下に記載される実施形態は、
図5の要素を別体に形成されたダイ上に分離することができ、その後、一緒に接合される。より具体的には、メモリ構造326は、1つのダイ上に形成することができ、1つ以上の制御回路を含む周辺回路要素の一部又は全てを、別体のダイ上に形成することができる。例えば、メモリダイは、フラッシュNANDメモリのメモリセルのアレイ、PCMメモリ、ReRAMメモリ、又は他のメモリタイプなどのメモリ素子のみから形成することができる。次いで、復号器及びセンス増幅器などの要素を更に含む周辺回路の一部又は全てを、別体のダイに移動させることができる。これにより、メモリダイの各々は、その技術に従って個別に最適化できるようになる。例えば、NANDメモリダイは、CMOS処理に最適化され得る別体の周辺回路ダイに移動したCMOS素子を気にすることなく、NMOSベースのメモリアレイ構造に最適化することができる。これにより、周辺要素のためのより多くの空間が可能であり、これにより、メモリセルアレイを搭載した同じダイのマージンに限定されていたとしても、従来は組み込むことができなかった追加の機能を組み込むことができるようになった。次いで、2つのダイは、接合されたマルチダイメモリ回路内で一緒に接合することができ、一方のダイ上のアレイは、他方のメモリ回路上の周辺要素に接続されている。以下は、1つのメモリダイ及び1つの周辺回路ダイの接合されたメモリ回路に焦点を合わせるが、他の実施形態では、例えば、2つのメモリダイ及び1つの周辺回路ダイなど、より多くのダイを使用することができる。
【0046】
図6A及び
図6Bは、接合されたダイ対604を提供するためにウェハ-ウェハ結合を使用して実装され得る、
図5の代替的な配置を示す。
図6Aは、メモリダイ610内に形成されたメモリ構造326に結合された周辺回路又は制御ダイ608に形成された、制御回路を含む周辺回路の一例を示す。共通の構成要素は、
図5のように番号付けされる。制御回路310、読み出し/書き込み回路328及び行復号器324(CMOSプロセスによって形成されてもよい)は、制御ダイ608内に位置することが分かり得る。コントローラ102からの機能性などの追加の要素もまた、制御ダイ608内に移動させることができる。制御回路310、読み出し/書き込み回路328、行復号器324、及び列復号器332は、一般的なプロセス(例えば、CMOSプロセス)によって形成されてもよいので、メモリコントローラ102上でより典型的に見られる追加の要素及び機能性は、追加のプロセス工程は、ほとんど必要ない、又は全く必要ない(すなわち、コントローラ102を製造するために使用される同じプロセス工程を、制御回路310、読み出し/書き込み回路328、及び行復号器324を製造するために使用してもよい)。したがって、メモリダイ300などのダイからこのような回路を移動させると、そのようなダイを製造するために必要とされる工程の数を低減することができ、制御ダイ608などのダイにかかる回路を追加することは、任意の追加のプロセス工程を必要としない場合がある。
【0047】
図6Aは、電気経路612を介してメモリダイ610上のメモリ構造326に結合された制御ダイ608上の読み出し/書き込み回路328を示す。例えば、電気経路612は、読み出し/書き込み回路328とメモリ構造326のビット線との間の電気的接続を提供し得る。電気経路は、メモリ構造326のビット線に接続されたメモリダイ610の対応するパッドに接合された制御ダイ608上のパッドを介して制御ダイ608内の読み出し/書き込み回路328から延在してもよい。メモリ構造326の各ビット線は、読み出し/書き込み回路328に接続する一対の接合されたパッドを含む電気経路612内の対応する電気経路を有してもよい。同様に、行復号器回路324は、電気経路614を介してメモリ構造326に結合される。電気経路614の各々は、ワード線、ダミーワード線、又は選択ゲート線に対応し得る。また、制御ダイ608とメモリダイ610との間に追加の電気経路が設けられてもよい。
【0048】
図6Bは、接合されたダイ対604の統合メモリアセンブリの一実施形態の配置に関する更なる詳細を示すブロック図である。メモリダイ610は、メモリセルの平面620又はアレイを含む。メモリダイ610は、追加の平面又はアレイを有してもよい。1つの代表的なビット線(BL)及び代表的なワード線(WL)が、各平面又はアレイ620に描かれている。各平面又はアレイ620当たり数千又は数万のそのようなビット線が存在し得る。一実施形態では、アレイ又は平面は、非破線のワード線及び非破線のビット線の共通のセットを共有する、接続されたメモリセルの群を表す。
【0049】
制御ダイ608は、いくつかのセンス増幅器(SA)350を含む。各センス増幅器350は、1つのビット線に接続されるか、又はいくつかの実施形態では、複数のビット線に接続されてもよい。センス増幅器は、ビット線ドライバを含む。このため、センス増幅器は、それが接続されるビット線に電圧を提供し得る。センス増幅器は、ビット線の状態を感知するように構成されている。一実施形態では、センス増幅器は、ビット線に流れる電流を感知するように構成されている。一実施形態では、センス増幅器は、ビット線上の電圧を感知するように構成されている。
【0050】
制御ダイ608は、いくつかのワード線ドライバ660(1)~660(n)を含む。ワード線ドライバ660は、ワード線に電圧を提供するように構成されている。この例では、アレイ又は平面メモリセル当たり「n」本のワード線が存在する。メモリ動作がプログラム又は読み出しである場合、一実施形態では、選択されたブロック内の1つのワード線がメモリ動作のために選択される。メモリ動作が消去である場合、一実施形態では、選択されたブロック内のワード線の全てが消去のために選択される。ワード線ドライバ660(例えば、電力制御部316の一部)は、メモリダイ610内のワード線に電圧を提供する。
図6Aに関して上述のように、制御ダイ608はまた、ワード線ドライバ660及び/又はビット線ドライバに電圧を提供するために使用され得る、
図6Bで表されていない電荷ポンプ、電圧発生器などを含んでいてもよい。
【0051】
メモリダイ610は、メモリダイ610の第1の主面682上に、いくつかのボンドパッド670a、670bを有する。対応する「n」個のワード線ドライバ660(1)~660(n)から電圧を受け取るために、「n」個のボンドパッド670aが存在し得る。平面620に関連付けられた各ビット線に対して1つのボンドパッド670bが存在し得る。参照番号670は、一般に、主面682上のボンドパッドを参照するために使用される。
【0052】
いくつかの実施形態では、コードワードの各データビット及び各パリティビットは、異なるボンドパッド対670b、674bを介して転送される。コードワードのビットは、ボンドパッド対670b、674bを介して同時に転送されてもよい。これは、例えば、メモリコントローラ102と統合メモリアセンブリ604との間でデータを転送することに対して、非常に効率的なデータ転送を提供する。例えば、メモリコントローラ102と統合メモリアセンブリ604との間のデータバスは、例えば、同時に転送される8ビット、16ビット、又は恐らく32ビットを提供してもよい。しかしながら、メモリコントローラ102と統合メモリアセンブリ604との間のデータバスは、これらの実施例に限定されない。
【0053】
制御ダイ608は、制御ダイ608の第1の主面684上に、いくつかのボンドパッド674a、674bを有する。対応する「n」個のワード線ドライバ660(1)~660(n)からメモリダイ610に電圧を送達するために、「n」個のボンドパッド674aが存在し得る。平面620に関連付けられた各ビット線に対して1つのボンドパッド674bが存在し得る。参照番号674は、一般に、主面682上のボンドパッドを参照するために使用される。ボンドパッド対670a/674a及びボンドパッド対670b/674bが存在し得ることに留意されたい。いくつかの実施形態では、ボンドパッド670及び/又は674は、フリップチップボンドパッドである。
【0054】
一実施形態では、ボンドパッド670のパターンは、ボンドパッド674のパターンと一致する。ボンドパッド670は、ボンドパッド674に接合される(例えば、フリップチップ接合される)。このため、ボンドパッド670、674は、メモリダイ610を制御ダイ608に電気的及び物理的に結合する。
【0055】
また、ボンドパッド670、674は、メモリダイ610と制御ダイ608との間の内部信号転送を可能にする。したがって、メモリダイ610及び制御ダイ608は、ボンドパッドと一緒に接合される。
図6Aは、1つのメモリダイ610に接合された1つの制御ダイ608を描くが、別の実施形態では、1つの制御ダイ608は、複数のメモリダイ610に接合されている。
【0056】
本明細書では、「内部信号転送」は、制御ダイ608とメモリダイ610との間の信号転送を意味する。内部信号転送は、制御ダイ608上の回路がメモリダイ610内のメモリ動作を制御することを可能にする。したがって、ボンドパッド670、674は、メモリ動作信号転送のために使用され得る。本明細書では、「メモリ動作信号転送」は、メモリダイ610内のメモリ動作に関係する任意の信号を指す。メモリ動作信号転送は、電圧を提供すること、電流を提供すること、電圧を受け取ること、電流を受け取ること、電圧を感知すること、及び/又は電流を感知することを含み得るが、これらに限定されない。
【0057】
ボンドパッド670、674は、例えば、銅、アルミニウム、及びこれらの合金から形成されてもよい。ボンドパッド670、674と主面(682、684)との間にライナーが存在してもよい。ライナーは、例えば、チタン/窒化チタンスタックで形成されてもよい。ボンドパッド670、674及びライナーは、蒸着及び/又はめっき技術によって塗布されてもよい。ボンドパッド及びライナーはともに720nmの厚さを有してもよいが、更なる実施形態では、この厚さはより大きくても小さくてもよい。
【0058】
金属相互接続及び/又はビアは、ダイ内の様々な要素をボンドパッド670、674に電気的に接続するために使用してもよい。金属相互接続及び/又はビアによって実装され得るいくつかの導電経路が示されている。例えば、センス増幅器350は、経路664によってボンドパッド674bに電気的に接続してもよい。
図6Aに関して、電気経路612は、経路664、ボンドパッド674b、及びボンドパッド670bに対応し得る。数千のそのようなセンス増幅器、経路、及びボンドパッドが存在し得る。BLは、ボンドパッド670bへの直接接続を必ずしも行わないことに留意されたい。ワード線ドライバ660は、経路662によってボンドパッド674aに電気的に接続され得る。
図6Aを参照すると、電気経路614は、経路662、結合パッド674a、及びボンドパッド670aに対応し得る。経路662は、各ワード線ドライバ660(1)~660(n)に対して別体の導電経路を備えてもよいことに留意されたい。同様に、各ワード線ドライバ660(1)~660(n)に対して別体のボンドパッド674aが存在してもよい。メモリダイ610のブロック2内のワード線は、経路664によってボンドパッド670aに電気的に接続されてもよい。
図6Bでは、ブロック内の対応する「n」本のワード線に対して「n」本の経路664が存在する。各経路664に対して、ボンドパッド670a、674aの別体の対が存在し得る。
【0059】
図5を参照すると、
図6Aのオンダイ制御回路はまた、その論理素子内の追加の機能性を含むことができ、メモリコントローラ102及び一部のCPU機能で典型的に見られるものよりも一般的な機能、また用途に特化した特徴の両方も含み得る。例えば、これらのアクティブ化機能は、積和演算(Multiple and ACcumulation、MAC)動作の加算部分で使用される追加及び閾値判定動作を含むことができるが、S状又は双曲正接機能などのより高度な動作を含むことができる。
【0060】
下記において、
図6Aの制御ダイ608及び
図5の同様の要素に描かれる他の回路の全て又はサブセットと組み合せたステートマシン312及び/又はコントローラ102(又は同等に機能する回路)は、本明細書に記載する機能を実行する1つ以上の制御回路の一部であると見なすことができる。制御回路は、ハードウェアのみ、又はハードウェアとソフトウェア(ファームウェアを含む)との組み合わせを含むことができる。例えば、本明細書に記載する機能を実行するためにファームウェアによってプログラムされたコントローラは、制御回路の一例である。制御回路は、プロセッサ、FGA、ASIC、集積回路、又は他のタイプの回路を含むことができる。
【0061】
ここで、不揮発性メモリデバイスに記憶することができるデータのタイプを考慮すると、以下の説明で対象とするデータのタイプの特定の例は、畳み込みニューラルネットワーク又はCNNなどの人工ニューラルネットワークにおいて使用される重みである。「畳み込みニューラルネットワーク」という名称は、ネットワークが、特殊な種類の線形動作である、畳み込みと呼ばれる数学的動作を採用することを示す。畳み込みネットワークは、それらの層のうちの少なくとも1つに一般的な行列乗算の代わりに畳み込みを使用するニューラルネットワークである。CNNは、いくつかの中間隠れ層を有する入力及び出力層から形成される。CNNの隠れ層は、典型的には、乗算又は他のドット積と「畳み込み」する一連の畳み込み層である。
【0062】
ニューラルネットワーク内の各ニューロンは、前の層内の受容野から来る入力値に特定の関数を適用することによって出力値を算出する。入力値に適用される関数は、重み及びバイアスのベクトルによって決定される。ニューラルネットワークでの学習は、これらのバイアス及び重みに対する反復調整を行うことによって進行する。重み及びバイアスのベクトルは、フィルタと呼ばれ、入力の特定の特徴(例えば、特定の形状)を表す。CNNの際立った特徴は、多くのニューロンが同じフィルタを共有することができることである。
【0063】
図7は、CNNの一例の概略図である。
図7は、画素値のアレイの初期入力画像、続いて、その最後に出力を提供するいくつかの完全接続層の後に続くいくつかの畳み込み層を示す。第1の畳み込み層(Con1)内の各ニューロンは、入力画像のn×n個の画素サブ領域からの入力データとして生じる。ニューロンの学習した重みは、集合的にその畳み込みフィルタと呼ばれ、入力に応じてニューロンの単一値出力を決定する。畳み込み層では、入力領域を画像のx及びy次元に沿ってスライドさせて畳み込み層の値を生成することによって、入力画像にニューロンのフィルタが適用される。実際には、同等の畳み込みは、通常、異なる入力領域へのニューロンの静的に同一のコピーによって実装される。各層の学習した重みを使用して、畳み込み層(Con1~Con N)の各々を介してプロセスを繰り返し、その後、学習した重みを使用して完全接続層(L1~LM)を介して伝搬される。
【0064】
図8は、ニューラルネットワークのいくつかの完全接続層をより詳細に示す。
図8では、人工ニューラルネットワークの3つの層は、円によって表されるノード又は人工ニューロンの相互接続された群、及び1つの人工ニューロンの出力から別の人口ニューロンの入力への接続のセットとして表されている。この実施例は、3つの入力ノード(I
1、I
2、I
3)及び2つの出力ノード(O
1、O
2)を示し、4つの隠れノード又は中間ノード(H
1、H
2、H
3、H
4)の中間層を有する。人工ニューラルネットワークのノード、又は人工ニューロン/シナプスは、ホスト又は他の処理システムの論理素子によって、1つ以上の入力を受信し、それらを合計して出力を生成する数学関数として実装される。通常、各入力は別個に重み付けされ、合計はノードの数学関数を通過してノードの出力を提供する。
【0065】
一般的な人工ニューラルネットワークの実装では、ノード(人工ニューロン/シナプス)間の接続における信号は実数であり、各人工ニューロンの出力は、その入力の合計のいくつかの非線形関数によって算出される。ノード及びそれらの接続は、典型的には、学習プロセスが進行するにつれて調整する重みを有する。この重量は、接続時の信号の強度を増加又は減少させる。ノードは、集合信号がその閾値を横切る場合にのみ信号が送信されるように閾値を有してもよい。典型的には、ノードは層に集約される。異なる層は、それらの入力に対して異なる種類の変換を実行することができる。信号は、可能な限り層を複数回横断した後に、第1の層(入力層)から最後の層(出力層)へと移動する。
図7は、単一の中間層又は隠れ層のみを示しているが、複雑なディープニューラルネットワーク(DNN)は、多くのそのような中間層を有することができる。
【0066】
教師あり人工ニューラルネットワークは、入力を供給し、次いで出力をチェック及び補正することによって「トレーニングされる」。例えば、イヌの品種を認識するようにトレーニングされたニューラルネットワークは、画像のセットを処理し、画像内の犬が特定の品種である確率を計算する。ユーザは、結果を確認し、どちらの確率をネットワークが(特定の閾値を上回るなど)表示すべきかを選択し、提案されたラベルを返すことができる。そのような各数学的操作は、層と見なされ、複雑なニューラルネットワークは、多くの層を有する。多数の中間層又は隠れ層によって提供される深さにより、ニューラルネットワークは、トレーニングされる際に複雑な非線形関係をモデル化することができる。
【0067】
図9Aは、重みのセットを生成するためにニューラルネットワークをトレーニングするためのプロセスの一実施形態を説明するフローチャートである。トレーニングプロセスは、多くの場合、クラウド内で実行され、アクセスされる追加的又はより強力な処理を可能にする。工程901において、画像のセットなどの入力が受信される(例えば、
図7の画像入力)。工程903において、入力は、現在のフィルタ又は重みのセットを使用して、入力を次の層(例えば、
図7のCON1)に接続する層を介して伝搬される。次に、工程905でニューラルネットワークの出力を次の層(例えば、
図7のCON2)で受信するので、1つの層からの出力として受信された値が次の層への入力として機能する。第1の層からの入力は、それらが出力に達するまで中間層又は隠れ層の全てを介してこのように伝搬される。前の段落のイヌの品種例では、入力は、多数のイヌの画像データであり、中間層は現在の重み値を使用して、画像内の犬がある特定の品種である確率を計算し、提案されたイヌの品種ラベルが工程905で返される確率を計算する。次いで、ユーザは、工程907で結果を確認し、ニューラルネットワークが返すべき確率を選択し、現在の重みのセットが十分に正確なラベリングを曲級しているかどうかを判断し、そうであればトレーニングを完了することができる(工程911)。結果が十分に正確ではない場合、ニューラルネットワークは、ユーザが選択した確率に基づいて工程909で重みを調整し、続いて工程903にループバックして、入力データを調整された重みで再び実行する。ニューラルネットワークの重みのセットが決定されると、それらは、決定された重みを使用してニューラルネットワークへのデータ入力から出力結果を生成するプロセスである「推論」に使用することができる。工程911で重みが決定されると、その後、後に使用するために不揮発性メモリに記憶することができ、不揮発性メモリにおけるこれらの重みのストレージについては、以下で更に詳細に論じる。
【0068】
図9Bは、推定された精度を使用して入力データの「意味」を予測するためにニューラルネットワークを使用して教師あり学習の推論段階のプロセスを説明するフローチャートである。その場合に応じて、ニューラルネットワークは、クラウド及びエッジデバイスの(例えば、スマートフォン、自動車プロセス、ハードウェアアクセラレータ)プロセッサの両方によって情報を受信することができる。工程921において、上述した実施例におけるイヌの画像などの入力を受信する。以前に決定された重みが、ニューラルネットワークアプリケーションを実行するデバイス内に存在しない場合は、それらは工程922でロードされる。例えば、ニューラルネットワークを実行するホストプロセッサ上で、重みは、それらが記憶され、ホストデバイス上のRAMにロードされるSSDから読み出され得る。工程923において、入力データは次に、ニューラルネットワークの層を介して伝搬される。工程923は、
図9Bの工程903と同様であるが、ここでは、工程911でトレーニングプロセスの終了時に確立された重みを使用する。中間層を介して入力を伝搬した後、出力は次に工程925で提供される。
【0069】
図10は、入力画像とフィルタとの間の畳み込み動作、又は重みのセットの概略図である。この例では、入力画像は画素値の6×6のアレイであり、フィルタは3×3個の重みのアレイである。畳み込み動作は、入力画像の3×3ブロックを有する3×3フィルタの行列乗算によって実行される。例えば、フィルタを用いた画像の左上の3×3ブロックの乗算の結果として、出力行列の左上値が得られる。次いで、フィルタを画像上の1つの画素によってスライドさせて、出力の次の入力を生成することができ、その結果、出力のための4つの要素の最上行を生成することができる。このことを、フィルタを一度に画素にスライドさせることによって繰り返すことにより、4×4個の出力行列が生成される。層の各々について同様の動作が実行される。実際のCNNでは、データセットのサイズ及び実行される畳み込みの数は、非常に大量のデータを伴う極めて多数のそのような動作が実行されることを意味する。
【0070】
図11は、ニューラルネットワークの完全接続層における行列乗算の使用の概略図である。行列乗算、又はMatMulは、ニューラルネットワークのトレーニング及び推論段階の両方において一般的に使用されるアプローチであり、機械学習のためのカーネル法で使用される。
図11は、
図8と同様であり、入力層と出力層との間に単一の隠れ層のみが示されている。入力データは、入力ノードの数に対応する長さのベクトルとして表される。重みは重み行列で表され、列の数は、隠れ層内の中間ノードの数に対応し、行の数は入力ノードの数に対応する。出力は、入力ベクトルと重み行列との行列乗算によって決定され、出力ベクトルの各要素は、重み行列の列を有する入力データの複数成分ベクトルのドット積である。
【0071】
行列乗算を実行するための一般的な技術は、積和演算器(MAC、又はMACユニット)の使用によるものである。しかしながら、これはいくつかの問題を有する。再び
図9Bを参照すると、推論段階は、行列乗算が工程923での伝搬によって実行される前に、工程922でニューラルネットワークの重みをロードする。しかしながら、伴うデータの量は極めて大きくなり得るため、推論するために積和演算器を使用することは、重みのロードに関連していくつかの問題を有する。これらの問題の1つは、必要とされるビット幅を有する大きいMACアレイを使用しなければならないことに起因する、高いエネルギーの散逸である。別の問題は、MACアレイの制限されたサイズに起因する高いエネルギー散逸であり、論理とメモリとの間のデータ移動が大きくなるとともに、論理演算自体で使用されるよりもはるかに高くなり得るエネルギー散逸をもたらす。
【0072】
これらの制限を回避することを助けるために、積和演算器アレイの使用を、他のメモリ技術と置き換えることができる。例えば、ReRAM,PCM、FeRAM、又はMRAMベースのメモリセルに基づくものなどの、NANDメモリ及びストレージクラスメモリ(SCM)の特性を活用することによって、メモリアレイ内で行列乗算を算出することができる。これにより、ニューラルネットワーク入力は、読み取り命令を介して提供されることができ、ニューラルの重みは、推論のために予めロードされることを可能にする。インメモリコンピューティングの使用により、これは、MACアレイ内で行列乗算を実行する論理の必要性、及びメモリとMACアレイとの間でデータを移動させる必要性を排除することができる。
【0073】
以下は、メモリセル内のニューラルネットワークの層の重みを記憶し、アレイのワード線上の電圧レベルとして層のための入力を適用することにより、メモリセルのアレイ内の入力値と推論演算の重みとの間の乗算を実行することができるメモリDNNで算出するための実施形態を提示する。ビット線上の結果として生じる電流は、重み付きの入力の積に対応し、そのような複数の乗算を同時に実行することができる。このような推論エンジンによって消費される電力を低減するために、以下の説明で、クロスポイント構造を有するアレイ内のMRAMタイプメモリセルに基づく実施形態を提示する。MRAMメモリセルの実施形態は、低抵抗状態であっても高い抵抗値を依然として有する一方で、良好に分離された低高抵抗状態及び高抵抗状態を有し、推論時の電力消費を非常に低くすることができる。DNNの重みを記憶するために、MRAMアレイは、外部磁場の使用を介してプログラミングされて、オンデバイスプログラミング回路を支援する。
【0074】
クロスポイントアーキテクチャを使用することで、行列の重みがアレイ内のメモリセルの抵抗値に符号化される、電圧から電流への変換プロセスによってベクトル乗算が実装される、より小さいフットプリントを有するアレイが可能となる。記載されたMRAMセルは、抵抗が依然として非常に高い、RLRS>10MOhmのような低抵抗状態を有する一方で、低抵抗状態(LRS)と高抵抗状態(HRS)との間に2つ以上の係数を有するメモリウィンドウを有することができる。プログラミング回路に典型的に必要とされるコスト及び電力消費を低減するために、外部磁場プログラミング支援を使用することにより、推論を実行するために必要とされるものよりもはるかに高い電流及び電圧が可能なオンチップ回路を必要とせずにプログラミングを行うことが可能になる。加えて、このプログラミング方法は、各ビットに対する専用選択トランジスタを必要とせずにデバイスの選択を可能にし、各ビットのフットプリントを低減することができる。メモリデバイスが推論のために使用されるとき、メモリデバイスは、顧客に供給される前に、外部磁場を使用して、DNNについて以前に決定された重み値で予めプログラミングすることができる。
【0075】
より具体的には、超小型電力、低コストであり、特殊なオンチッププログラミングを必要としないMRAMベースのベクトル乗算デバイスについて、実施形態を提示する。ベクトル乗算デバイスは、各クロスポイント接合部にMRAMメモリセルを有するクロスポイントアレイと、ワイヤ(すなわち、ワード線)の1つの平面内の各ワイヤに独立した入力電圧を供給し、他方のワイヤプレーン(すなわち、ビット線)内の各ワイヤ上の電流を読み取ることができる周辺アレイ回路と、を含むことができる。入力及び重みのベクトル乗算は、MRAMメモリセル状態によって符号化されたバイナリ又は複数状態のニューラルネットワーク重みによる入力電圧の乗算として実行される。クロスポイントアレイ内のMRAMメモリセルは、入力電圧と外部磁場との組み合わせを使用して個別にプログラミングすることができ、以下の説明は、MRAMメモリセルが磁気異方性(VCMA)MRAMセルの電圧制御を行う実施形態に主に焦点を当てている。VCMAセルを切り替えるのに必要な磁気保磁力(Hc)は、セルに印加される電圧に依存する。1つの極性方向Hcは単調に減少する一方で、他の極性方向Hcは単調に増加する。外部場は、1つの極性の入力電圧が、セル状態を外部場と整合させるのに十分なメモリセルの異方性を低減するが、入力電圧の半分のみが印加される場合には、セルを整合させるには不十分となるように選択される。
【0076】
この配置により、選択デバイス又はトランジスタが使用されないので、メモリセルサイズをより小さくすることができるため、レイアウト効率の改善及びコストの低減を可能にする。また、特別なプログラミング回路が必要とされないため、より小さいトランジスタ及びそれほど複雑ではない回路を、読み出し/書き込み回路などの制御/周辺要素に使用することができる。この構造は、より狭いクロスポイントピッチまで容易に延在し、より低いコスト及びより低い電力を更に可能にする。外部場は、メモリセルのプログラミングを支援するために使用されるため、電流又は電圧のみで書き込み可能ではない非常に高い熱安定性設計を採用することができる。これらの設計の高い熱安定性により、十分な保持率を有するメモリセルのための小さい限界寸法(CD)を可能にし、より小さいCDを使用することが可能になり、これにより、より狭い配線ピッチの使用を可能にする。
【0077】
MRAMベースのメモリセルは、多くの場合、他のメモリセル技術に対して高い同調性を表示する。高抵抗状態値と低抵抗状態値との比に影響を及ぼすことなく、セル抵抗面積(RA)積値を調整することによって、広範囲の低抵抗状態値を達成することができる。例えば、RLRS=10MΩ及びRHRS=30MΩは、20nmnoCDで、RA=3000Ωμm2を有する磁気フィルム及び200%のトンネル磁気抵抗比(TMR)で達成することができる。本明細書に記載されるMRAM構造体はまた、他のメモリ技術と比較して、より良好なデータ保持、より高い許容動作温度、より長い寿命を表示することができ、より優れた読み出し耐性及び状態安定性を提供することができる。
【0078】
MRAMメモリセルは、典型的には、低抵抗状態又は高抵抗状態のいずれかにプログラミングされるバイナリデバイスであり、典型的には、セル当たりの複数の抵抗レベルを有するように動作されないが、代替実施形態では、いくつかのビットを単一の接合部で統合することができる。以下の説明は、ニューラルネットワークのバイナリ値の重み又はマルチビット重み値の個々のビットのいずれかを記憶するバイナリMRAMメモリセルに焦点を当てている。メモリセル当たりの複数レベルの機能により、推論動作における動作当たりのより正確な算出が可能となり、マルチレベルメモリセルに対する同等の精度は、バイナリレベルセルで達成することができるが、各重み値を記憶するためにより多くのメモリセルが必要であり、したがって、複数のMRAMメモリセルとして記憶され得る重みの数を低減し、各重み値に対して使用して、nビットの算出を行う。以下で論じられる実施形態は、各接合部にバイナリMRAMメモリセルを有するクロスポイントアレイに基づく推論エンジンを使用する。
【0079】
図12Aは、斜め視でクロスポイントアーキテクチャを形成するメモリアレイ326の一部分の一実施形態を描く。
図12Aのメモリアレイ326は、
図5におけるメモリアレイ326の実装形態の一例である。ローカルビット線BL
1~BL
5は、第1の方向(すなわち、垂直方向)に配置され、ワード線WL
1~WL
5は第1の方向と直交する第2の方向に配置される。
図12Aは、ワード線WL
1~WL
5及びBL
1~BL
5が両方とも基板に対して水平方向に走る水平クロスポイント構造の一例であり、一方、メモリセルのうちの2つは、1201で示されており、電流が垂直方向に走るように配向されている。メモリセルの追加層を有するメモリアレイでは、ビット線及びワード線の対応する追加層が存在する。
【0080】
図12Aに描くように、メモリアレイ326は、複数のメモリセル1201を含む。メモリセル1201は、ReRAM、MRAM、PCM、又はプログラム可能な抵抗を有する他の材料を使用して実装することができるような書き換え可能メモリセルを含んでいてもよい。以下の説明はMRAMメモリセルに焦点を当てているが、多くの説明をより一般的に適用することができる。第1のメモリレベルのメモリセル内の電流は、矢印I
cellによって示されるように上方に流れることができる。
【0081】
図12B及び
図12Cは、それぞれ、
図12Aのクロスポイント構造の側面図及び上面図を提示する。
図12Bの側面図は、1つの下部ワイヤ、又はワード線、WL
1、及び上部ワイヤ、又はビット線、BL
1~BLnを示す。各上部ワイヤと下部ワイヤとの間のクロスポイントはMRAMメモリセル1201である。
図12Cは、M本の下部ワイヤWL
1~WL
M及びN本の上部ワイヤBL
1~BL
Nのクロスポイント構造を示す上面図である。バイナリの実施形態では、各クロスポイントにおけるMRAMセルは、高及び低の2つの抵抗状態のうちの1つにプログラミングすることができる。MRAMメモリセル設計の実施形態及びそれらのプログラミングのための技術について、以下により詳細に説明する。
【0082】
図12A~
図12Cのアレイ構造は、ニューラルワークの層の行列重みがそれらの電気抵抗としてメモリセルに記憶される推論演算のアレイ内乗算を実行するために使用することができる。ワード線の入力に電圧ベクトルV
i
inを印加することは、MRAMセル抵抗によって符号化されたバイナリ重み値との入力電圧のベクトル乗算に対応するビット線の出力に電流を生成する。重みは、ワード線WL
i及びビット線BL
jのクロスポイントにおけるメモリセルの抵抗率
Ri、jの逆数である、導電率b
i,jとして符号化される。
【数1】
ニューラルネットワークの層の入力が、それぞれのワード線WL
iに印加される電圧V
i
inとして符号化される場合、各ビット線BL
j上の電流は、
【数2】
の積となり、
式中、合計は、i上にある。選択された複数のワード線に対して同時に感知動作を実行することで、クロスポイント構造はそのレイヤーの入力重み積を自動的に算出する。
【0083】
この配置では、ビット線に沿った複数のメモリセルは、対応するワード線上に印加された対応する入力電圧で、感知のために同時に選択されることに留意されたい。電流Ij
outは、これらのメモリセルの全てに対する組み合わされた結果に対応し、このプロセスは、結果として、ビット線に沿った個々のメモリセルの状態が決定される通常の読み出し動作とは異なる。このような推論動作のIj
outは、ビット線に沿った複数のメモリセルの組み合わせ結果であり、個々のメモリセルの寄与は既知ではない。
【0084】
図13は、アレイの3×3区間が示されている、アレイの動作に使用される、クロスポイントアレイ及び制御回路のいくつかの上面図である。各ワード線WL
i及びビット線BL
jのクロスポイントは、MRAMメモリセルM
i、j1301
i、jである。ニューラルネットワークの層の入力IN
iは、デジタル/アナログ変換器(DAC)1311
i内の入力値から、対応する電圧レベルに変換される。層の入力IN
iは、ネットワークの初期入力、又は前の層の出力であり得る。バイナリの実施形態では、1つの入力を高読み出し電圧V
readに変換することができ、0入力は、0V又は接地などの低読み出し電圧に変換することができ、この場合、DAC1311
iは1ビットDACであり得る。ビット線BL
jの各々のアナログ電流I
j
outは、対応するアナログ・デジタル変換器ADC1313
j内のデジタル値に変換されて、マルチビットデジタル出力OUT
jを生成する。出力値OUT
jは、次に、デジタル計算ブロック1315に行くことができ、デジタル計算ブロック1315は、積和演算のための加算などの演算を実行し、出力にアクティブ化機能を適用し、ニューラルネットワークを介して入力を伝搬する一部として実行される、他のそのような演算を実行することができる。
図5及び
図6Aを再び参照すると、DAC1311
i、ADC1313
j、及びデジタル計算ブロック回路1315は、310の制御回路の構成要素とともに、行復号器324、列復号器332、及び読み出し/書き込み回路328の一部と見なすことができる。DAC及び/又はADCは、n>1で2
nレベルで量子化された信号を生成又は出力することができるマルチビットデバイスであり得る。
【0085】
アレイへのデータ(すなわち、重み値)の書き込みを考慮すると、本明細書で提示される実施形態は、MRAMメモリセルの電気プログラミングを支援する外部磁場を使用する。より具体的には、プログラミングは、電気電圧と外部磁場との組み合わせを介して生じる。書き込まれるように選択されたメモリセルの電気的選択は、
図14Aに関連して示されるように、半選択方式を使用して行われる。
【0086】
図14Aは、プログラム化されるメモリセルの選択のための半選択方式を示す。書き込まれることが意図されるビット線に沿ったセルが、下部ワイヤと上部ワイヤとの間のメモリセルにわたって印加される書き込み選択電圧V
wrを有するように、上部(ビット線)及び底部(ワード線)ワイヤに印加される。書き込まれないメモリセルは、電圧降下の半分(V
wr/2)か、電圧降下がない。
図14Aの実施例では、ビット線BL
(N-1)とワード線WL
1及びWL
(M-1)との交点における2つのセルは、選択されたワード線に印加された書き込み電圧V
wr及び選択されたビット線上の0V(又はより一般的には、より低い電圧レベル)を書き込むために選択される。他のワード線とビット線は、1/2V
wr(より一般的には、非選択のメモリセルがプログラミングされないように、選択されたワード線の書き込み電圧V
wrと低電圧レベルとの中間の他の電圧レベル)に設定される。これにより、選択されたメモリセルにわたるV
wrの差、及び非選択のメモリセルにわたるV
wr又は1/2V
wrのいずれかが置かれる。プログラミングは、以下でより詳細に説明されるように、ビット線プロセスによってビット線で行うことができる。
【0087】
図14Aの実施形態では、非選択ワード線及び選択されたビット線に印加されたV
wrと選択されたビット線に印加される0Vの低電圧との間の電圧に設定される。特に、1/2V
wrは、全ての非選択ビット線及びワード線に印加される。しかしながら、他の実施形態は、非選択のワード線のVWRよりも低い別の値と、非選択のビット線に対して0Vを超える別の値とを使用して、異なる値を使用することができる。
図14Bは、プログラミングのためにアレイにバイアスをかけるための代替的な実施形態の一例を示す。
【0088】
図14Bは、プログラミングされるメモリセルの選択のための、「完全選択」方式を示す。ここで使用されるように、完全選択プログラミング方式では、選択されたワード線にV
wrをバイアスし、選択されたビット線に0Vをバイアスする。ただし、非選択のワード線は0Vに設定され、非選択のビット線はV
wrに設定される。このバイアス配置の下で、非選択のメモリセルは安定化され、半選択のメモリセルは、より多くのプログラミングヘッドルームを提供する半選択方式で印加される1/2V
wrではなく、それらの間に電圧が印加されない。より一般的には、非選択のワード線はV
wr未満の別の電圧に設定することができ、非選択のビット線は、0Vより高い別の電圧に設定することができるが、非選択ワード/ビット線のための0V/V
wrの使用は、関与するバイアス回路を単純化するのに役立ち得る。
【0089】
本明細書に主に記載される実施形態では、外部磁場を使用してMRAMセルの電気プログラミングを支援する。MRAMセルは、磁気異方性(VCMA)効果の電圧制御を介してスイッチング場を低減することができるように設計されている。これは、
図15、
図16A、及び
図16Bに関連して示される。
【0090】
図15、
図16A、及び
図16Bは、MRAMメモリセルの一例、及びMRAMメモリセルの自由層を切り替えるために必要とされる磁場(Hc)に対する電圧の影響を示す。より具体的には、
図15は、MRAMメモリセルの構造の実施形態を示す。メモリセルの対応するワード線とビット線との間にメモリセル全体に印加される電圧は、電圧ソースV
app1513と表される。メモリセルは、下部電極1501と、この例では酸化マグネシウム(MgO)1505の分離層又はトンネル層によって分離された一対の磁性層(基準層1503及び自由層1507)と、その後、スペーサ1509によって自由層1507から分離された上部電極1511と、を含む。メモリセルの状態は、2つの層が同じ方向に磁化されている場合には、基準層1503及び自由層1507の磁性の相対的な向きに基づいており、メモリセルは低抵抗状態(LRS)であり、及び、それらが反対の配向を有する場合、メモリセルは、高抵抗状態(HRS)である。基準層1503の配向は固定され、
図15の例では下向きに配向される。自由層1507を、同じ配向又は反対の配向のいずれかにプログラミングすることによって、データがメモリセルに書き込まれる。一般に、MRAMメモリセルのアレイは、それらの自由層の全てが、そのそれらの基準層と同じである磁場配向を有する低抵抗状態に設定することにより、MRAMメモリセルの全てを初期状態又は消去状態に置く。次いで、各メモリセルは、磁場を基準層1503の反対側に反転させることによって、その自由層1507を高抵抗状態にすることによって、メモリセルの各々を選択的にプログラミングする。基準層1503は、自由層1507をプログラミングする際にその配向を維持するように形成される。基準層1503は、合成抗強磁性層及び追加の基準層を含む、より複雑な設計を有することができる。簡潔にするために、図及び説明は、これらの追加の層を省略し、セル内のトンネル磁気抵抗に主に関与する固定された磁気層上のみに焦点を合わせる。
【0091】
図16Aは、印加された電圧V
appのレベルが、
図14Aの半選択された実施形態におけるプログラミングを支援するために使用される外部磁場H
progのレベルに対して、自由層1507によって見られる磁場H
cにどのように影響するかを示す。印加電圧がない場合、自由層1507の磁場H
cは高い(例えば、約2kOe)。例えば、1Vが、MRAMセルの自由層1507側に基準層1503から印加されるとき、H
cは低減される(例えば、約2kOe→~1kOe)。0.5Vのみを印加したセル(すなわち、半選択されたセル)は、H
cが選択されたセル(例えば、約2kOe→~1.5kOe)より小さく低減する。選択されたセルは、外部磁場の支援によって書き込まれ、印加された外部磁場H
progは、選択されたセルの磁性を設定することができるレベルを上回るが、半選択されたセルの状態を反転させるレベルを上回らないように選択される。例えば、上記の値では、H
prog=+/-1.25kOeの外部場であり得、これは、1Vをバイアスした選択されたメモリセルの自由層1507のH
c値その高いが、半選択(0.5Vで)又は非選択のメモリセル(0Vで)のH
c値よりも低い。
【0092】
図16Bは、完全選択実施形態における印加電圧V
appのレベルが、
図14Bの半選択された実施形態におけるプログラミングを支援するために使用される外部磁場H
progのレベルに対して、自由層1507によって見られる磁場H
cにどのように影響するかを示す。選択されたメモリセルは、
図16Aのように1Vでバイアスがかけられるので、外部磁場H
progに応じて再びプログラミングされる。半選択のメモリセルの場合、ワード線又はビット線のうちの1つが選択されるが、他方は、メモリセルにわたって印加される0Vが存在する。半選択のメモリセルが0.5Vを見る
図16Aの実施形態と比較して、これはより良好なマージンを提供する。完全に非選択のメモリセルの場合、ワード線は0Vであり、V
wrにおけるビット線は、-1Vの相対電圧(V
wrが1Vとして取られる)を参照する。
図16A~
図16Bを比較することによって分かるように、完全選択実施形態は、半選択された場合及び完全に選択されていない場合の両方における非選択のメモリセルのプログラミングマージンの改善を提供する。これは、電流を誘導することができる(完全に)非選択の選択されたメモリセル全体に電圧をかけるが、本明細書で提示される実施形態は、低及び高抵抗状態の両方に対して非常に高い抵抗レベルを有することができるので、この電流の大きさは非常に小さく、改善されたプログラミングマージンに対して許容可能なトレードオフであり得る。
【0093】
図17~
図19Bは、外部磁場によってより詳細に支援されたMRAMクロスポイントアレイのプログラミングのための実施形態を示す。メモリセルに重みをプログラミングする前に、アレイ内の全てのメモリセルは、大きな外部磁場H
initを使用して同じ極性に初期化される。これを
図17に示す。
図17の上部の右側に示されるように、相対的に大きな振幅の外部磁場H
initは下向きに配向される(上部電極から下部電極に向かって)。
図17の下部のMRAMメモリセルによって示されるように、外部磁場H
initは、同じ軸に沿って基準層及び自由層を整合させるのに十分であるべきである。この例では、全てのセルは、バイナリ1を表すことができる平行(P)状態に初期化される。
【0094】
初期化後、
図18に示すように、第2の磁場(H
prog)は、H
initと反対の極性で印加される。H
progは、印加されたV
wrの電圧差を有するセルが、バイナリ0を表すことができる高抵抗反平行(AP)状態へとフリップするが、半選択実施形態のように、V
wr/2を有するセルは、完全選択実施形態のように、低抵抗P状態のままであるように選択される。
【0095】
外部磁場H
progが適用された状態で、アレイは、BL
0から始まるビット線を示し、BL
Nに順次進行するビット線を示す、
図19Aの半選択された実施形態のために示されるように、アレイ内の各ビット線を順次プログラミングすることなどによってプログラミングすることができる。
図19Aに表記されているように、初期の平行状態はPとラベル付けされ、メモリセルは、反平行状態にプログラミングされることがAPとラベル付けされる。プログラミングされるビット線は、接地されることによって選択されるが、他の全てのビット線はV
wr/2に設定される。ビット線上のAPにフリップすべきセルは、V
wrをそれぞれのワード線に適用することによって選択され、V
wr/2で全ての他のワード線を設定することによって選択される。例えば、
図19Aの左側では、ビット線BL
1及びワード線WL
2及びWL
M上のメモリセルが書き込まれるように選択され、
図19Aの右側では、ビット線BL
N及びワード線WL
1上のメモリセルが書き込まれるように選択される。外部場H
progがなければ、選択されたメモリセル上のバイアスはプログラミングを誘導するのに十分ではなく、バイアスなしでは、外部磁場H
progはプログラミングを誘導するのに十分ではない。
【0096】
図19Bは、
図19Aと同様であるが、完全選択実施形態のプログラミングシーケンスの実施形態を示す。前述のように、選択されたビット線は再び0Vであり、このビット線に対してプログラミングされる任意のワード線がV
wrに再び設定される。しかしながら、ここで、非選択のワード線は、ここで0Vに設定され、非選択のビット線はV
wrである。このことは、選択されたビット線に沿った選択されたメモリセルを再びバイアスし、それにより、選択されたメモリセルが再びプログラミングされる。しかし、非選択のメモリセルは、
図16Bに関して上述したように、改善されたマージンでバイアスされる。
図19Bは、プログラミングがBL
1~BL
Nから順次進行する実施形態における、ビット線BL
1及びBL
Nについての
図19Aのような同じ選択されたメモリセルを示す。
【0097】
再び
図5及び
図6Aを参照すると、メモリセルの読み出し及び書き込みを含む制御回路は、ステートマシン312などの310の制御回路の構成要素とともに、行復号器324、列復号器332、及び読み出し/書き込み回路328の一部とすることができる。書き込み動作中、行復号器324、及び列復号器332内のドライバ/バイアス回路は、
図19A及び
図19Bに関連して示されるようにワード線及びビット線にバイアスをかけることができるので、MRAMメモリセルは個別に選択される。プログラミングは、外部磁場の第1の値を上回る範囲の外部磁場が選択されたメモリセルの状態を変化させるのに十分高いが、非選択及び半選択のメモリセルにおける状態の変化を誘導するためには高さではない外部磁場の第2の値よりも低い時にプログラミングされるようにバイアスがかけられ、アレイ全体のリセットをもたらす。プログラミングのために外部磁場の使用することにより、MRAMメモリセルを動作させる他の技術に対してより低い電圧を使用することが可能になるか、又は他のメモリセル技術に典型的に使用されるものよりも低い電圧が使用できるようになる。これらのより低い電圧レベルは、より小さいデバイスを使用することができ、電荷ポンプ及びレギュレータなどのより高い電圧を生成及び供給する必要がある回路及び構成要素を回避することができるため、電力使用を改善することができ、レイアウト空間を節約することができる。
【0098】
個々のメモリセルのデータ状態を判定するのではなく、
図12Cに関して説明されるように、推論演算におけるデータの読み取りに関して、行復号器324内のバイアス回路は、選択されたメモリセルの組のワード線に同時に適用される組のV
in値に、ネットワークの層の入力ベクトルを変換する。列復号器332及びセンス増幅器350を含む読み出し/書き込み回路328は、入力ベクトルと対応するビット線に沿って記憶された重み値の積を示すために、マルチビット感知動作として、ワード線の各々に沿った合計I
outを決定する。本明細書に記載されるMRAMメモリセルは、複数のメモリセルを同時に感知する場合であっても、低抵抗(すなわち、平行)状態においても高い抵抗値を有するため、電流値は依然として比較的低くてもよく、推論プロセスは低電力プロセスである。次いで、メモリデバイス上の制御回路は、乗算結果を積和演算動作の一部として加算し、後続の層への入力又はネットワークの出力のいずれかであり得るニューラルネットワークの層の出力を決定することができる。
【0099】
いくつかの代替実施形態において、追加の特徴を組み込むことができる。例えば、
図17に関して説明される初期化プロセスは、電圧支援を用いて実行することができる。上述のように、メモリセルV
app=0にわたって印加されるときに、H
initがHcの値よりも大きい場合、初期化のためにビット線又はワード線に電圧を印加する必要はない。代替的に、全てのワード線に正電圧を印加することができ、ビット線を接地することができ、選択されたアレイの全てのメモリセルに対し、
図16A及び
図16Bに関して示したプロセスと同様に、全てのビットを初期化するために適用される必要がある場の大きさを低減することができる。
【0100】
他の代替実施形態では、不正確な又はプログラミングされたビット下で、追加のプログラミングパスを使用することができる。このような実施形態では、プログラミングエラーは、追加のプログラミングパスによって補正することができる。上述したように、推論エンジンとして実装するため、共有ワード線に沿った複数のメモリセルとが同時に感知される。このような実装では、異なる入力電圧パターンの下でアレイの機能を試験することによって、プログラミングエラーを検出することができる。潜在的エラーは、プログラミング中にPからAPに不注意に反転されたビット(又は「弱ビット」)又はプログラミング中にPからAPへフリップしなかったビット(又は「ハードビット」)であり得る。弱いビットは、誤ったビットを選択する電圧プログラミングシーケンスを適用することによってプログラミングすることができるが、外部磁気プログラミング場は、Hinitと同じ極性に設定される。ハードビットは、より大きい外部磁場、より大きな電圧、又はその両方のいずれかで、制限プログラミングシーケンスを適用することによってプログラミングすることができる。
【0101】
前述の説明では、特定の実施形態に関して提示してきたが、これらはより一般的に適用可能である。例えば、前述の説明は主に、主要スイッチング機構がVCMAであるMRAMメモリセルに関して説明しているが、この技術はまた、スピン転送トルクの実装に適用できる。他の変形例では、各クロスポイント接合部で複数のMRAMメモリセルを積み重ねることによって、セル当たりの複数のビットを採用することができる。マルチビットの実施形態では、各セルは、より高いHc層を最初に書き込み、次により低いHc層を漸進的に書き込むことによって、それらが順次書き込まれ得るように、十分な差を有するHc値を有するべきである。
【0102】
図20は、推論エンジンのためのクロスポイントアーキテクチャを有するMRAMベースのメモリの使用のための実施形態を示すフローチャートである。
図20のフローは、MRAMクロスポイントメモリアレイをプログラミングするための方法の実施形態(工程2001~2009)と、推論のためのメモリアレイの後続の使用(2011~2019)の両方を含む。本明細書では、記載された構造及び技術は、そのような用途において特に有用であり得るため、本明細書では、ニューラルネットワークに関する推論エンジンとの関連で説明されているが、高いデータ保持を有する低電力不揮発性メモリを多くのコンテキストで使用することができるので、より一般的に適用することができる。
【0103】
工程2001では、メモリアレイが既に初期化されていないか、又は以前に書き込まれたデータを消去するために再初期化する必要がある場合、初期化が実行される。
図17に関して説明したように、メモリアレイを有するダイは、自由層1507及び基準層1503の両方を整合させるのに十分な強さの磁場内に置かれる。初期化は、MRAMメモリセル全体に印加される電圧を用いずに実行することができるか(例えば、ワード線及びビット線を接地させるか、又はそれらにバイアスをかけないままに設定することによって)、又は代替実施形態では、電圧は、(ワード線の全てにV
wrをバイアスし、ビット線の全てに0Vをバイアスすることによって)全てのメモリセルに印加して、
図16A及び
図16Bに関して説明される現象を使用して、初期化プロセスを支援することができる。
【0104】
ニューラルネットワークの層の重みなどのデータで個々のメモリセルを選択的に書き込むために、工程2003において、アレイを有するメモリダイは、
図18に示されるように外部磁場H
prog内に置かれ、H
progは、H
initと比較して反対極性及び低い磁場強度を有する。外部磁場H
progでは、工程2005でメモリアレイにバイアスがかけられ、その結果、工程2007でプログラミングされる。バイアスは、
図14Aに示されるようなものとして
図16Aに示される現象を使用することができるか、又は
図14Bの完全選択実施形態に対して示されるようなものとして
図16Bに示される現象を使用し、選択されたメモリセルをプログラミングすることができる。選択されたワード線に電圧V
wr(実施例では1V)を印加し、選択されたビット線に0Vを印加し、非選択ワード線及びビット線を1/2V
wr(半選択実施形態では)、又はそれぞれ0V及びV
wr(完全選択実施形態では)に設定することによって、自由層1507H
cの磁場は、H
prog未満に下げられ、選択されたメモリセルの自由層1507は、高抵抗、反平行状態になるようにフリップされる。プログラミングは、
図19Aに示されるように、ビット線方式でビット線に進むことができる。
【0105】
いくつかの実施形態では、工程2009において、不正確にプログラミングされたメモリセルを修正するために、1つ以上の追加のプログラミングパスを実行することができる。上述のように、これは、ハードビットエラー及びソフトビットエラーの両方を修正するために行うことができる。推論エンジンなどのいくつかの実施形態では、ワード線又は複数のワード線のサブセットの全てが同時に感知される場合、プログラミングされたデータは、入力データパターンの適切なセットを順次適用して、前のプログラミングを検証することによってチェックすることができる。
【0106】
データの初期化及びプログラミングが外部磁場の支援を使用し、これらの磁場の強度は、典型的には非常に大きく(上記の例では約1.25kOeの外部Hprogなど)、これらのプロセスは、典型的には、エンドユーザに提供される前に行われる。例えば、メモリアレイは、出荷前に製造業者によって初期化及びプログラミングすることができ、例えば、新しいデバイス上で一般的に実行される試験プロセスの終了時などに、製造業者によってプログラミングすることができる。代替的に、メモリアレイは、エンドユーザに供給される前に中間当事者によってプログラミングされ得る。例えば、プログラミングされていないメモリアレイ(初期化又は非初期化のいずれか)を元の機器製造業者(OEM)に提供することができ、その後、そのデータ(DNNの重みなど)をプログラミングし、次いで、プログラミングされたアレイを組み込んだ製品をOEMの顧客に供給することができる。これは、例えば、ニューラルネットワークに依拠する自律的車両であって、車両が末端の操作者に提供される前に、それらのニューラルネットワークモデルの重みをアレイにプログラミングする場合である。
【0107】
工程2011~2019は、メモリアレイが推論エンジンとして使用される場合を考える。ディープニューラルネットワークは、多数の層を有することができ、これらの層の各々の重みは、上述のMRAMクロスポイント型の1つ以上のアレイに記憶することができ、各メモリダイは、1つ以上のそのようなアレイを有することができる。DNNの層を介して初期入力を伝搬するために、初期入力ベクトルは、第1の層の重みに適用され、第1の層の出力は、次の層に入力され、その結果、最終出力が達成されるまで、残りの層を介して入力される。このプロセスは、オンダイ制御回路310及び
図5及び
図6Aに関して上述した他の要素を含む1つ以上の制御回路によって、メモリシステムコントローラ102(
図1)によって、又はメモリパッケージ(104)のレベルでの制御回路によって制御することができる。例えば、ダイ上のアレイの積和演算及びダイ内での伝搬などの、推論演算は、メモリダイ上で処理することができ、ダイ間より高いレベルの処理及び転送はメモリコントローラによって監視される。
【0108】
所与の層に関する情報を考慮すると、工程2011において、層の入力が受信される。これは、ネットワーク内の層の位置に応じて、ニューラルネットワークの前の層又は初期入力からの出力であり得る。工程2013では、入力ベクトルは、対応するワード線電圧のセットに変換され、層の重み値を記憶するアレイに印加される。本明細書で主に説明される実施形態では、ネットワークは、重みがアレイのメモリセル内にバイナリ値として記憶され、入力が入力値のバイナリ値ベクトルである、バイナリニューラルネットワークである。
図13に関して上述したように、入力ベクトルIN
iの複数の構成要素は、DAC1311
iによって、対応するワード線WL
iに印加する電圧レベルV
i
inに変換される。結果は、各メモリセルからの電流が、メモリセルM
i,j1301
i,jに記憶されたような入力ベクトルと重みとの間のアレイ内乗算であるので、各メモリセルからの電流は、その重み値と適用された入力の積に相当し、ここで、各ビット線上の電流が、式1及び式2に関して上述したように、ビットに沿ったメモリセルの各々からの電流の合計となる。
【0109】
工程2015は、式2の積に対応し、ADC1313jによってデジタル出力値OUTjに変換されるビット線BLjの各々の現在のIj
outを決定する。次いで、個々の列のこれらの部分的な積をデジタル計算ブロック1315に加算して、工程2017で層の出力を生成することができる。工程2019は、工程2017からの出力の更なる伝搬に対応する。実施形態に応じて、工程2019は、アクティブ化機能を適用すること、追加の値のための推論演算の初期工程を繰り返すこと、層の出力を提供すること、又はこれらのいくつかの組み合わせを含むことができる。次いで、層の出力は、ネットワーク内の層の位置に応じて、ネットワークの後続の層、又はネットワークの最終出力への入力として使用することができる。
【0110】
図21は、MRAMメモリセル設計のための実施形態をより詳細に示す。クロスポイントアレイに置かれるとき、MRAMメモリセルの上部電極及び下部電極は、アレイの上部ワイヤ及び下部ワイヤである。本明細書に示される実施形態では、下部電極はワード線2101であり、上部電子はメモリセルのビット線2111であるが、いくつかの実施形態では、これらを反転させることができる。ワード線2101とビット線2111との間は、基準層2103及び自由層2107であり、これは再びMgOバリア2105を分離している。
図21に示される実施形態では、MgOキャップ2108もまた、自由層2107の上部に形成され、導電性スペーサ2109は、ビット線2111とMgOキャップ2108との間に形成される。基準層2103は、別の導電性スペーサ2102によってワード線2101から分離される。メモリセル構造の両側にはライナー2121及び2123があり、これらは同じ構造の一部であってもよいが、
図21の断面では別体に見える。ライナー2121、2123の両側には、クロスポイント構造の他の空の領域を充填するために使用される充填材料2125、2127の一部が示されている。
【0111】
上述のように、外部磁場プログラミング支援クロスポイント構造において本明細書で使用されるMRAMセル構造では、メモリセルは、低抵反平行状態及び高抵抗反平行状態の両方に対して非常に高い抵抗値を有するように形成することができ、超低電力推論を可能にする。RA、又はワード線とビット線との間の平面内の所与の面積に対する抵抗の量を与える抵抗×面積の積に関して、実施形態によっては、RAは、ワード線2101とビット線2111との間に全厚が約20~30nmであるメモリセルに対して、1MΩ以上のデバイス抵抗を提供するために、数十Ωμm2(20Ωμm2など)、数百Ωμm2、及び更には最大1000Ωμm2以上とすることができる。これは、高抵抗反平行状態と低抵反平行状態との間の抵抗の差に対して100%以上の比で得ることができる(RAP-RP)/RP>1。実施形態によっては、メモリセルのVCMA係数は、少なくとも500Oe/V以上、例えば1kOe/V及びHc値の自由層2107は、4kOe以上のような2kOeを超えることができる。
【0112】
自由層設計2107に関しては、実施形態は、約1~2nm程度の厚さを有するCoFe又はCoFeB合金を含み、Ir層は、MgOバリア2105に近い自由層内に分散することができ、自由層2107は、Ta、W、又はMoをドープすることができる。基準層2103の実施形態は、Ir又はRuスペーサ2102と結合されたCoFeB及びCoPt多層の二重層を含むことができる。MgOキャップ2108は、任意選択ではあるが、自由層2107の異方性を増加させるために使用することができ、ここで、キャップのRAは主バリアの10×RA未満であり得る。導電性スペーサは、とりわけ、Ta、W、Ru、CN、TiN、及びTaNなどの導電性金属であり得る。
【0113】
別の実施形態のセットでは、プログラミングのための磁場支援は、メモリダイ自体上に生成されたエルステッド場の使用を介して補足又は置き換えられ得る。推論エンジンにより一般的なMRAMアレイは、依然としてクロスポイントMRAMアレイとすることができるが、メモリチップは、オンチップで生成された磁場からの支援を用いてセルをプログラミングする機能を有する。MRAMメモリセルに接続されていない、例えば銅などの導電ラインのアレイを、セル間又はセルの上若しくは下の金属層に追加することができ、これは、補助的なエルステッド磁場を生成し、ビットスイッチングを支援するために使用される。ローカルのエルステッド磁場は、外部場に追加され、書き込みのための標的セルを選択する役割を果たし、追加の制御回路をオンチップ制御回路に追加して、エルステッド場を制御することができる。これは、VCMA又はスピントルク伝達スイッチングが可能である必要がないため、より単純なMRAMセル設計とすることができるので、その結果、低いVCMA又はスピントルク伝達特性を有する、高い抵抗差の差を有するセルを採用することができる。
【0114】
第1の組の態様によれば、装置は、1つ以上のビット線に沿って接続された複数の磁気抵抗ランダムアクセスメモリ(MRAM)メモリセルを含むアレイに接続するように構成された制御回路を含む。制御回路は、第1のレベルを上回り、かつ第2のレベルを下回る場強度を有する、印加された外部磁場に応じてプログラミングされるMRAMメモリセルの個々のものに選択的にバイアスをかけ、第1の複数のMRAMメモリセルに印加された対応する第1の複数の入力電圧に応じて、共有ビット線に沿って接続された第1の複数のMRAMメモリセルを同時に感知するように構成される。
【0115】
追加の態様では、方法は、不揮発性メモリデバイスを第1の外部磁場内にメモリアレイ置くことであって、メモリデバイスは、不揮発性メモリアレイを含み、メモリアリは、メモリアレイの各クロスポイントに磁気抵抗ランダムアクセスメモリ(MRAM)セルを有するクロスポイントアーキテクチャに従って形成されており、置くことを含み、MRAMメモリセルは各々、基準層と、平行極性の磁場を有する自由層と、を有する。不揮発性メモリアレイが第1の外部磁場内にある状態で、本方法は、メモリアレイの第1のビット線に沿った1つ以上の選択されたMRAMメモリセルを、第1のビット線に低電圧をバイアスすることと、MRAMメモリセルの各々について、メモリアレイの対応するワード線に書き込み選択電圧をバイアスすることと、第1ビット線以外のメモリアレイのビット線に低電圧値よりも高い電圧レベルでバイアスすることと、選択されたMRAMメモリセルに対応しないワード線に、書き込み選択電圧よりも低い電圧レベルをバイアスすることを同時に行うことによって、選択されたメモリセルの基準層に対して反平行の極性を有する自由層を有するようにプログラミングすることも含み、書き込み選択電圧は、選択されたMRAMメモリセルのの自由層の極性が反転し、メモリアレイの選択されていないMRAMメモリセルの自由層の極性は反転しないように構成されている。
【0116】
別の一組の態様では、不揮発性メモリデバイスは、メモリアレイと、メモリアレイに接続された1つ以上の制御回路と、を含む。メモリアレイは、複数のワード線と、複数のビット線と、複数の磁気抵抗ランダムアクセスメモリ(MRAM)セルと、を含み、メモリアレイは、MRAMメモリセルの各々がビット線のうちの対応する1本とワード線のうちの対応する1本との間に接続される、クロスポイントアーキテクチャを有する。1つ以上の制御回路は、第1のレベルを上回り、かつ第2のレベルを下回る場強度を有する印加された外部磁場に応じて、MRAMメモリセルのうちの選択された1つをプログラミングするようにワード線及びビット線にバイアスをかけることと、複数のビット線に印加された電圧パターンに応じてビット線の各々のマルチビット値出力を決定することと、を行うように構成される。
【0117】
本明細書の目的のために、明細書中の「実施形態」、「一実施形態」、「いくつかの実施形態」又は「別の実施形態」に対する言及は、異なる実施形態又は同一の実施形態について記述するために使用されることがある。
【0118】
本明細書の目的のために、接続とは、直接的な接続又は間接的な接続(例えば、1つ以上の他の部分を介して)であり得る。場合によっては、ある要素が別の要素に接続されるか又は結合されると言及される場合、この要素は、他の要素に直接的に接続されてもよく、又は、介在要素を介して他の要素に間接的に接続されてもよい。ある要素が別の要素に直接的に接続されていると言及される場合、この要素と他の要素との間には介在要素は存在しない。2つのデバイスは、それらが互いの間で電子信号を交換することができるように直接的に又は間接的に接続されている場合、「通信状態」にある。
【0119】
本明細書の目的のために、「基づいて」という用語は、「少なくとも部分的に基づいて」と読むことができる。
【0120】
本明細書の目的のために、追加の文脈がない、「第1の」物体、「第2の」物体、及び「第3の」物体などの数値的な用語の使用は、物体の順序を示唆するものではなく、代わりに、異なる物体を識別するための識別目的で使用されることがある。
【0121】
本明細書の目的のために、物体の「組」という用語は、複数の物体のうちの1つ以上の物体の「組」を指すことがある。
【0122】
前述の詳細な説明は、例示及び説明の目的のために提示されている。前述の詳細な説明は、網羅的であること、又は開示された正確な形態に限定することを意図したものではない。上記の教示に鑑みて多くの修正及び変形が可能である。説明した実施形態は、提案した技術の原理及びその実際の用途を最もよく説明するために選択されたものであり、それによって、当業者が様々な実施形態で、企図される特定の使用法に適するように様々な修正を伴って、この技術を最も良いように利用することを可能にする。本範囲は、本明細書に添付の特許請求の範囲によって定義されることが意図される。