(57)【特許請求の範囲】
【請求項１】
ベクトル処理のためのダブルバイアスメムリスティブドット積システムであって、
Ｎ個の行電極、Ｍ個の列電極、及びＮ×Ｍ個のメモリ素子を備えるクロスバーアレイであって、前記メモリ素子は、前記クロスバーアレイの前記Ｎ個の行電極と前記Ｍ個の列電極の間の交差部に配置され、前記メモリ素子の各々は、メムリスティブ記憶デバイスを含む、クロスバーアレイと、
前記Ｎ個の行電極の各々に第１の電圧入力を供給するための第１のベクトル入力レジスタと、
前記Ｎ個の行電極の各々に第２の電圧入力を供給するための第２のベクトル入力レジスタと、
前記Ｍ個の列電極の各々から電圧出力を受け取るためのベクトル出力レジスタ
を備えるシステム。
【請求項２】
前記第１のベクトル入力レジスタは、ｊ番目の列（ｊ＝１、Ｍ）において前記Ｎ個の行電極の各々に接続され、前記第２のベクトル入力レジスタは、ｋ番目の列（ｋはｊに等しくない）において前記Ｎ個の行電極の各々に接続される、請求項１のシステム。
【請求項３】
前記第１のベクトル入力レジスタは、ｊ＝１の列において前記Ｎ個の行電極の各々に接続され、前記第２のベクトル入力レジスタは、ｊ＝Ｍの列において前記Ｎ個の行電極の各々に接続される、請求項２のシステム。
【請求項４】
前記ベクトル出力レジスタは、ｉ＝Ｎの行において前記Ｍ個の列電極の各々に接続される、請求項２のシステム。
【請求項５】
前記Ｍ個の列電極の各々から電圧出力を受け取るための第２のベクトル出力レジスタをさらに備え、該第２のベクトル出力レジスタは、ｉ＝１の行において前記Ｍ個の列電極の各々に接続される、請求項４のシステム。
【請求項６】
ベクトル処理のためのダブルバイアスドット積エンジンであって、
Ｎ×Ｍ行列に含まれている値に対応するＮ×Ｍ個のメモリ素子を備えるクロスバーアレイであって、前記メモリ素子は、Ｎ個の行電極とＭ個の列電極の間の交差部に配置され、前記メモリ素子の各々は、メムリスティブ記憶デバイスを含む、クロスバーアレイと、
Ｎ個の電圧入力を含む第１のベクトル入力レジスタであって、該電圧入力の各々は、Ｎ個の値を有するベクトルに含まれている値に対応し、前記Ｎ個の行電極の各々に第１の電圧入力を供給するために前記クロスバーアレイに接続されることからなる、第１のベクトル入力レジスタと、
Ｎ個の電圧入力を含む第２のベクトル入力レジスタであって、該電圧入力の各々は、Ｎ個の値を有するベクトルに含まれている値に対応し、前記Ｎ個の行電極の各々に第２の電圧入力を供給するために前記クロスバーアレイに接続されることからなる、第２のベクトル入力レジスタと、
前記Ｍ個の列電極の各々から電圧出力を受け取るための第１のベクトル出力レジスタ
を備えるドット積エンジン。
【請求項７】
前記Ｍ個の列電極の各々から電圧出力を受け取るための第２のベクトル出力レジスタ
をさらに備える、請求項６のドット積エンジン。
【請求項８】
前記第１のベクトル入力レジスタは、ｊ＝１の列において前記Ｎ個の行電極の各々に接続され、前記第２のベクトル入力レジスタは、ｊ＝Ｍの列において前記Ｎ個の行電極の各々に接続される、請求項６のドット積エンジン。
【請求項９】
前記第１のベクトル出力レジスタは、ｉ＝Ｎの行において前記Ｍ個の列電極の各々に接続され、前記第２のベクトル出力レジスタは、ｉ＝１の行において前記Ｍ個の列電極の各々に接続される、請求項７のドット積エンジン。
【請求項１０】
前記Ｍ個の列電極の各々と前記第１及び前記第２のベクトル出力レジスタとの間に配置されたアナログデジタル変換器、及び、前記Ｎ個の行電極の各々と前記第１及び前記第２のベクトル入力レジスタとの間に配置されたデジタルアナログ変換器をさらに備える、請求項７のドット積エンジン。
【請求項１１】
クロスバーアレイを用いるベクトル処理のための方法であって、
Ｎ×Ｍ個のメモリ素子を含むクロスバーアレイと、第１のベクトル入力レジスタと、第２のベクトル入力レジスタと、第１のベクトル出力レジスタとを提供するステップであって、前記メモリ素子は、Ｎ個の行電極とＭ個の列電極の間の交差部に配置され、前記メモリ素子の各々は、メムリスティブ記憶デバイスを含み、前記第１のベクトル入力レジスタは、前記Ｎ個の行電極の各々に第１の電圧入力を供給し、前記第２のベクトル入力レジスタは、前記Ｎ個の行電極の各々に第２の電圧入力を供給し、前記第１のベクトル出力レジスタは、前記Ｍ個の列電極の各々から電圧出力を受け取ることからなる、ステップと、
前記クロスバーアレイ内のＮ×Ｍ個のメモリ位置にメムリスタンス値を設定するステップであって、該メムリスタンス値はＮ×Ｍ行列の行列値に対応することからなる、ステップと、
Ｎ×１行列の値に対応する入力電圧を設定するステップと、
前記Ｎ個の行電極の各々の２つの位置に電圧入力を加えるステップと、
前記Ｍ個の電圧出力における出力電圧を決定するステップであって、該出力電圧の各々は、前記Ｎ×Ｍ行列と前記Ｎ×１ベクトルとの行と列の乗算に対応することからなる、ステップ
を含む方法。
【請求項１２】
前記Ｎ個の行電極の各々について、入力電圧が、ｊ＝１及びｊ＝Ｍの列に加えられる、請求項１１の方法。
【請求項１３】
前記クロスバーアレイがさらに、前記Ｍ個の列電極の各々から電圧出力を受け取るための第２のベクトル出力レジスタを備え、前記第１のベクトル出力レジスタは、ｉ＝Ｎの行において前記Ｍ個の列電極の各々に接続され、前記第２のベクトル出力レジスタは、ｉ＝１の行において前記Ｍ個の列電極の各々に接続される、請求項１１の方法。
【請求項１４】
前記Ｍ個の列の各々における電圧出力は、前記クロスバーアレイの前記Ｍ個の列の各々について、ｉ＝１及びｉ＝Ｎの行において受け取られた電流出力を抵抗デバイスに通すことによって決定される、請求項１３の方法。
【請求項１５】
Ｎ×Ｍ個のメモリ位置にメムリスタンス値を設定する前記ステップ、Ｎ個の電圧入力に入力電圧を設定する前記ステップ、電圧入力を加える前記ステップ、及び、Ｍ個の電圧出力における出力電圧を決定する前記ステップが、所定の収束基準が満たされるまで繰り返し実行される、請求項１１の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
メモリスタと呼ばれる抵抗変化型メモリ素子（resistive memoryelement）は、該メモリスタに電圧または電流を加えることによって異なる抵抗状態にプログラムすることができるデバイスである。メモリスタの状態をプログラミングした後に、該メモリスタの状態を読み取ることができる。メモリスタの状態は、該デバイスを不揮発性とみなすのに十分な長さの一定期間にわたって安定である。いくつかのメモリスタをクロスバーアレイ内に含めることができ、該クロスバーアレイ内では、いくつかの列ラインといくつかの行ラインが交差部で交差しており、該メモリスタは、該交差部で該列ライン及び該行ラインに結合している。
【先行技術文献】
【特許文献】
【０００２】
【特許文献１】（補充可能性あり）
【図面の簡単な説明】
【０００３】
添付の図面は、本明細書に開示されている原理の種々の例を示すものであって、本開示の一部である。図示の例は、いくつかの例に過ぎず、特許請求の範囲を限定するものではない。
【図１】本明細書に開示されている原理の１例にしたがう、ドット積を求めるためのコンピューティングシステムの図である。
【図２Ａ】本明細書に開示されている原理の１例にしたがう、クロスバーアレイのクロスポイントすなわち交差部の各々に配置されたメムリスティブデバイスを有する該クロスバーアレイの図である。
【図２Ｂ】本明細書に開示されている原理の１例にしたがう、クロスバーアレイのクロスポイントすなわち交差部の各々に配置されたメムリスティブデバイスを有する該クロスバーアレイの図である。
【図２Ｃ】本明細書に開示されている原理の１例にしたがう、クロスバーアレイのクロスポイントすなわち交差部の各々に配置されたメムリスティブデバイスを有する該クロスバーアレイの図である。
【図３】本明細書に開示されている原理の１例にしたがうメムリスティブドット積エンジンの図である。
【図４Ａ】本明細書に開示されている原理の１例にしたがう、図３に示されているクロスバーアレイの上面で測定された電圧値のグラフである。
【図４Ｂ】本明細書に開示されている原理の１例にしたがう、図３に示されているクロスバーアレイの下面で測定された電圧値のグラフである。
【図５】本明細書に開示されている原理の別の例にしたがうダブルバイアスメムリスティブドット積エンジンの図である。
【図６Ａ】本明細書に開示されている原理の１例にしたがう、図５に示されているクロスバーアレイの上面で測定された電圧値を示す。
【図６Ｂ】本明細書に開示されている原理の１例にしたがう、図５に示されているクロスバーアレイの下面で測定された電圧値を示す。
【図７Ａ】本明細書に開示されている原理の例にしたがう、図３及び図５に示されているクロスバーアレイの上面で測定された電圧値の差のグラフである。
【図７Ｂ】本明細書に開示されている原理の例にしたがう、図３及び図５に示されているクロスバーアレイの下面で測定された電圧値の差のグラフである。
【図８】本明細書に開示されている原理の別の例にしたがうダブルバイアスメムリスティブドット積エンジンの図である。
【図９】本明細書に開示されている原理の１例にしたがう、クロスバーアレイを有するダブルバイアスメムリスティブドット積エンジンを用いるベクトル処理の方法を示すフローチャートである。
【発明を実施するための形態】
【０００４】
多くの計算用途において、高速で効率の良いベクトル−行列処理技術が必要とされている。たとえば、ベクトル−行列処理は、少し例を挙げれば、データ圧縮、デジタルデータ処理、ニューラルネットワーク、暗号化及び最適化で使用される。メムリスティブクロスバーアレイを、ベクトル−行列計算またはドット積計算を実行するために使用することができる。たとえば、該クロスバーアレイのそれぞれの行からの入力電圧信号は、それぞれの列内の抵抗変化型デバイスのコンダクタンスによって重み付けされて、それぞれの列からの電流出力として累算される。理想的には、配線抵抗を無視できる場合には、該クロスバーアレイから流れ出る電流ベクトルＩは、おおよそＩＴ＝ＶＴＧであり、ここで、Ｖは、入力電圧ベクトルであり、Ｇは、コンダクタンス行列であって、メムリスティブクロスバーアレイ内のそれぞれのメモリスタからの寄与を含んでいる。
【０００５】
該クロスバーアレイの交差部すなわちクロスポイントの各々においてメモリスタを使用することによって、各々の交差部においてＧの値に対応する抵抗値（またはコンダクタンス）をプログラムすることが可能になり、これは、該クロスバーアレイをドット積エンジン（ＤＰＥ）として使用することにつながる。しかしながら、実際の回路では、それぞれの交差部にあるメモリスタ内だけではなく、各列または各行に沿ってメモリスタを接続するワイヤ（電線）や線や電極にも抵抗がある。それらのワイヤに起因する抵抗は、各行または各列に沿って信号劣化（たとえば電圧の低下）を引き起こし得る。本明細書及び図面では、該クロスバーアレイの行及び列に沿ってメモリスタを接続するワイヤや線や電極の抵抗によって引き起こされる信号劣化を低減するメモリスタベースのクロスバーアレイを使用するベクトル−行列処理システム及び方法を開示している。
【０００６】
本明細書に開示されている原理の種々の例は、クロスバーメモリシステム、並びに、ベクトル−行列計算を実行する際の該システムの使用法に向けられている。メモリスタクロスバーアレイは、行列を実施し（ないし実装し）、及び、たとえば、グラフィックスプロセッシングユニットやこれに類似のアクセラレータに比べて、ベクトル処理の性能を大幅に高めることができる。さらに、メモリスタの低動作エネルギーは、電力消費の大幅な低減をもらしうる。
【０００７】
以下の説明では、説明の便宜上、本発明によるシステム及び方法を完全に理解できるようにするために、多くの特定の細部が説明されている。しかしながら、当業者には、それらの特定の細部なくして、本発明による装置、システム、及び方法を実施できることは明らかであろう。本明細書における「１例」もしくはこれに類似の用語は、その例に関連して説明されている特定の特徴、構造、または特性が、説明されているように含まれるが、他の例には含まれなくてもよいことを意味する。
【０００８】
図１は、本開示の原理の１例にしたがう、ドット積を求めるためのコンピューティングシステム（１００）の図である。コンピューティングシステム（１００）を、電子装置において実施することができる（または電子装置に組み込むことができる）。電子装置の例には、いくつかある中でも特に、サーバー、デスクトップコンピューター、ラップトップコンピュータ、携帯情報端末（ＰＤＡ）、モバイル機器、スマートフォン、ゲーム機、及びタブレットが含まれる。
【０００９】
コンピューティングシステム（１００）を、独立型のハードウェア、モバイル用途、コンピューティングネットワーク経由、またはそれらの組み合わせを含む任意のデータ処理状況で使用することができる。さらに、コンピューティングシステム（１００）を、コンピューティングネットワーク、パブリッククラウドネットワーク、プライベートクラウドネットワーク、ハイブリッドクラウドネットワーク、その他の形態のネットワーク、または、それらの組み合わせにおいて使用することができる。１例では、コンピューティングシステム（１００）によって提供される方法は、たとえば、サードパーティーによってネットワークを通じたサービスとして提供される。この例では、該サービスは、いくつかのアプリケーションをホストするＳａａＳ（Software as a Service：サービスとしてのソフトウェア）や、たとえば、とりわけ、オペレーティングシステム、ハードウェア、及び記憶装置を含むコンピューティングプラットフォームをホストするＰａａＳ（Platform as a Service：サービスとしてのプラットフォーム）や、たとえば、とりわけ、サーバー、記憶要素、ネットワーク、及び構成要素（コンポーネント）などの装備をホストするＩａａＳ（Infrastructure as a Service：サービスとしてのインフラストラクチャー）や、ＡＰＩａａＳ（API as a Service：クラウド型ＡＰＩサービス）や、その他の形態のネットワークサービス、またはそれらの組み合わせなどを含むことができる。本発明によるシステムを、１つまたは複数のハードウェアプラットフォームにおいて実施することができ、この場合、該システム内のモジュールを１つのプラットフォームにおいてまたは複数のプラットフォームにわたって実行することができる。それらのモジュールを、種々の形態のクラウド技術及びハイブリッドクラウド技術で動作させることができ、または、クラウドにおいてもしくはクラウド外で実施することができるＳａａＳとして提供することができる。別の例では、コンピューティングシステム（１００）によって提供される方法は、ローカル管理者によって実行される。
【００１０】
コンピューティングシステム（１００）は、その所望の機能を達成するために、種々のハードウェアコンポーネントを備えている。それらのハードウェアコンポーネントには、いくつかのプロセッサ（１０１）、いくつかのデータ記憶装置（１０２）、いくつかの周辺機器アダプタ（１０３）、及び、いくつかのネットワークアダプタ（１０４）がありうる。これらのハードウェアコンポーネントを、いくつかのバス及び／又はネットワーク接続を用いて相互接続することができる。１例では、プロセッサ（１０１）、データ記憶装置（１０２）、周辺機器アダプタ（１０３）、及びネットワークアダプタ（１０４）を、バス（１０５）を介して通信可能に接続することができる。
【００１１】
プロセッサ（１０１）は、データ記憶装置（１０２）から実行可能コードを取り出して、該実行可能コードを実行するためのハードウェアアーキテクチャを有することができる。該実行可能コードは、プロセッサ（１０１）によって実行されると、プロセッサ（１０１）に、いくつかの（数の）第１の電圧を、メムリスティブクロスバーアレイ内の対応する数の行ラインに加えて、該行ラインといくつかの列ラインとの間の交差部に配置された対応する数のメモリスタの抵抗値を変化させるという機能を少なくとも実施させることができる。ここで、該第１の電圧のそれぞれは、行列内の対応する数の値をそれぞれ表す。該実行可能コードはまた、プロセッサ（１０１）によって実行されると、プロセッサ（１０１）に、いくつかの（数の）第２の電圧を、メムリスティブクロスバーアレイ内の対応する数の行ラインに加えるという機能を少なくとも実施させることができる。ここで、該第２の電圧のそれぞれは、対応する数のベクトル値をそれぞれ表す。該実行可能コードはさらに、プロセッサ（１０１）によって実行されると、プロセッサ（１０１）に、列ラインからの出力電流を収集する（集める）という機能を少なくとも実施させることができる。ここで、該収集された出力電流はドット積を表す。コンピューティングシステム（１００）の機能は、本明細書及び／又は図面に記載されている方法にしたがう。プロセッサ（１０１）は、コードを実行している間に、いくつかの残りのハードウェアユニットから入力を受けとり、及び、それらのハードウェアウニットに出力を提供することができる。
【００１２】
データ記憶装置（１０２）は、プロセッサ（１０１）または他の処理装置によって実行される実行可能なプログラムコードなどのデータを格納することができる。説明されるように、データ記憶装置（１０２）は、プロセッサ（１０１）が本明細書に記載されている機能を少なくとも実施するために実行するいくつかのアプリケーションを表すコンピュータコードを格納することができる。
【００１３】
データ記憶装置（１０２）は、揮発性メモリ及び不揮発性メモリを含む種々のタイプのメモリ（記憶装置）モジュールを含むことができる。たとえば、今の例のデータ記憶装置（１０２）は、ランダムアクセスメモリ（ＲＡＭ）（１０６）、読取り専用メモリ（ＲＯＭ）（１０７）、及びハードディスクドライブ（ＨＤＤ）メモリ（１０８）を備えている。他の多くのタイプのメモリを使用することもでき、本明細書では、本開示の原理の特定の用途に適合しうる（１つ以上の）さまざまなタイプのメモリをデータ記憶装置（１０２）において使用することが考慮されている。いくつかの例では、データ記憶装置（１０２）内の（２以上の）異なるタイプのメモリを、データ記憶の（２以上の）異なる必要性に対してそれぞれ使用することができる。たとえば、いくつかの例では、プロセッサ（１０１）は、読取り専用メモリ（ＲＯＭ）（１０７）からブートすることができ、ハードディスクドライブ（ＨＤＤ）メモリ（１０８）に不揮発性記憶を維持することができ、及び、ランダムアクセスメモリ（ＲＡＭ）（１０６）に格納されているプログラムコードを実行することができる。
【００１４】
データ記憶装置（１０２）は、とりわけ、コンピュータ可読媒体、またはコンピュータ可読記憶媒体、または非一時的なコンピュータ可読媒体を含むことができる。たとえば、データ記憶装置（１０２）を、電子、磁気、光学、電磁、赤外線、もしくは半導体システム／装置／デバイス、または、これらの任意の適切な組み合わせとすることができる（ただし、それらに限定されない）。コンピュータ可読記憶媒体のより具体的な例は、たとえば、いくつかのワイヤ（電線）を有する電気的接続、携帯型コンピュータディスケット（たとえばフロッピーディスク）、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭまたはフラッシュメモリ）、携帯型コンパクトディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、光学式記憶装置、磁気記憶装置、または、これらの任意の適切な組み合わせを含むことができる。本明細書の文脈において、コンピュータ可読記憶媒体を、命令実行システム／装置／デバイスによってまたはそれらに関連して使用されるコンピュータ使用可能プログラムコードを含むことができもしくは格納することができる任意の有形の媒体とすることができる。別の例では、コンピュータ可読記憶媒体を、命令実行システム／装置／デバイスによってまたはそれらに関連して使用されるプログラムを含むことができもしくは格納することができる任意の非一時的な媒体とすることができる。
【００１５】
コンピューティングシステム（１００）内のハードウェアアダプタ（１０３、１０４）は、プロセッサ（１０１）が、コンピューティングシステム（１００）内外の他の種々のハードウェア要素とインターフェースできるようにする。たとえば、周辺機器アダプタ（１０３）は、たとえば、表示装置（１０９）やマウスやキーボードなどの入力／出力装置とのインターフェースを提供することができる。周辺機器アダプタ（１０３）はまた、外部記憶装置などの他の外部装置、及び、たとえば、サーバー、スイッチ、及びルーターなどのいくつかのネットワーク装置、及び、クライアント装置、及びその他のタイプのコンピューティング装置、及びこれらの任意の組み合わせに対するアクセスを提供することができる。
【００１６】
表示装置（１０９）を、コンピューティングシステム（１００）のユーザーがコンピューティングシステム（１００）の機能と相互作用（対話など）し、及び該機能を実施できるようにするために設けることができる。周辺機器アダプタ（１０３）はまた、プロセッサ（１０１）と、表示装置（１０９）、プリンター、または他の媒体出力装置との間のインターフェースを生成することができる。ネットワークアダプタ（１０４）は、たとえばネットワーク内の他のコンピューティング装置とのインターフェースを提供することができ、これによって、コンピューティングシステム（１００）と該ネットワーク内に配置された他の装置との間のデータ伝送を可能にする。
【００１７】
コンピューティングシステム（１００）は、プロセッサ（１０１）によって実行されると、表示装置（１０９）に、データ記憶装置（１０２）に格納されているいくつかのアプリケーションを表す実行可能なプログラムコードに関連付けられているいくつかのグラフィカルユーザーインターフェース（ＧＵＩ）を表示することができる。これらのＧＵＩは、たとえば、より詳細に後述するように、ユーザーが、コンピューティングシステム（１００）と対話して、ダブルバイアスドット積エンジン（ＤＰＥ）メムリスティブアレイ（１１０）に関連（もしくはそれと共同）して行列値（行列値は、該行列の（行位置と列位置によって決まる）各成分の値である）及びベクトル値を入力できるようにするインタラクティブな（すなわち対話型の）スクリーンショットを表示することができる。さらに、ユーザーは、表示装置（１０９）のＧＵＩにおいていくつかのインタラクティブなジェスチャーをする（またはジェスチャー入力をする）ことによって、入力データに基づくドット積の値を得ることができる。表示装置（１０９）の例には、いくつかある中でも特に、コンピュータの画面、ラップトップコンピュータの画面、モバイル機器の画面、携帯情報端末（ＰＤＡ）の画面、及びタブレットの画面が含まれる（ダブルバイアスは二重バイアスともいう）。
【００１８】
コンピューティングシステム（１００）はさらに、ダブルバイアスＤＰＥメムリスティブアレイ（１１０）を備えることができる。より詳しく後述するように、ダブルバイアスＤＰＥメムリスティブアレイ（１１０）は、複数の入力の加重和（重み付き和）を計算するためにアレイ内で相互に機能し合ういくつかのメモリスタを含むいくつかの要素を備えている。ダブルバイアスＤＰＥメムリスティブアレイ（１１０）を、いくつかのアプリケーションで使用することができる。たとえば、ダブルバイアスＤＰＥメムリスティブアレイ（１１０）をしきい値論理ゲート（ＴＬＧ）として使用して、行列積（マトリックス積）を計算し、その出力をある閾値と比較することができる。したがって、ダブルバイアスＤＰＥメムリスティブアレイ（１１０）を、より汎用的な処理装置で実行されるソフトウェアで可能な速さよりも速くいくつかの機能を実行するアクセラレータとして使用することができる。ダブルバイアスＤＰＥメムリスティブアレイ（１１０）は、コンピューティングシステム（１００）の内部にある装置として図示されているが、別の例では、ダブルバイアスＤＰＥメムリスティブアレイ（１１０）を、コンピューティングシステム（１００）に結合された周辺装置とすることができ、または、コンピューティングシステム（１００）に結合された周辺装置内に含めることができる。
【００１９】
コンピューティングシステム（１００）はさらに、本明細書で説明されているシステム及び方法の実施に使用されるいくつかのモジュールを備えている。コンピューティングシステム（１００）内の種々のモジュールは、個別に実行されることができる実行可能なプログラムコードを備えている。この例では、それらの種々のモジュールを、別個のコンピュータプログラム製品として格納することができる。別の例では、コンピューティングシステム（１００）内のそれらの種々のモジュールを、いくつかのコンピュータプログラム製品内で組み合わせることができ、この場合、それぞれのコンピュータプログラム製品はいくつかの該モジュールを含む。
【００２０】
コンピューティングシステム（１００）は、プロセッサ（１０１）によって実行されると、ダブルバイアスＤＰＥメムリスティブアレイ（１１０）の機能を支援するドット積エンジンモジュール（１１１）を備えることができる。ドット積エンジンモジュール（１１１）は、たとえば、ドット積の数学的計算で処理される行列を定める（または指定する）いくつかの入力値を受け取る。ドット積エンジンモジュール（１１１）は、ダブルバイアスＤＰＥメムリスティブアレイ（１１０）内のいくつかのメモリスタをプログラムするために、それらの入力値を、それらのメモリスタへのプログラミング信号としてダブルバイアスＤＰＥメムリスティブアレイ（１１０）に送ることができる。ドット積エンジンモジュール（１１１）はまた、それらのメモリスタにプログラムされた行列に関連して処理されるベクトル入力を受け取ることができる。ドット積エンジンモジュール（１１１）はさらに、ドット積を表す値を得て、分析またはさらなる処理のために、該値をコンピューティングシステム（１００）または別のコンピューティング装置にデータとして伝送することができる。
【００２１】
図２Ａ、図２Ｂ、及び図２Ｃは、本開示の原理の１例にしたがう、クロスバーアレイ（２００）のクロスポイントすなわち交差部の各々に配置されたメムリスティブデバイス（２０６）を有するクロスバーアレイ（２００）を示している。図２Ａにおいて、第１の層をなすほぼ平行な電極（２０２）の上に、第２の層をなすほぼ平行な電極（２０４）が配置されている。簡単にするために、第１の層をなす平行な電極（２０２）のうちの１つの電極と、第２の層をなす平行な電極（２０４）のうちの１つの電極が、参照番号で示されている。第２の層をなす電極（２０４）の向きは、第１の層をなす電極（２０２）の向きに概ね垂直であるが、それらの２つの層の間の向きの角度をそれとは異なるものとすることができる。それら２つの電極の層は、格子すなわちクロスバーを形成し、第２の層の各電極（２０４）は、第１の層の電極（２０２）の上に（第１の層の電極にかぶさるように）配置されて、２つの電極（２０２、２０４）間が一番近い位置を表す電極の交差部において、第１の層の電極（２０２）の各々と近接する。格子の向きが与えられると、第１の層をなす電極（２０２）を列と表現することができ、第２の層をなす電極（２０４）を行と表現することができる。図２Ａの個々の電極（２０２、２０４）は長方形の断面を有するものとして示されているが、電極の断面を、正方形、円、楕円、またはより複雑な形状の断面とすることもできる。それらの電極（２０２、２０４）はまた、多くの異なる幅または直径、及び、多くの異なるアスペクト比または偏心を有することができる。「クロスバー」という用語は、電極の他にも、サブマイクロスケールもしくはマイクロスケールのワイヤ、もしくはこれらより寸法がより大きなワイヤからなる１つまたは複数の層を有するクロスバーを意味することができる。
【００２２】
電極の交差部において、抵抗（器）などの電子部品及びその他の電子部品を、２つのオーバーラップしている（部分的に重なり合う）電極（２０２、２０４）を相互接続するために製作することができる。電子部品によって接続された電極の交差部を「クロスバー交差部」と呼ぶこともある。図２Ｂ及び図２Ｃは、クロスバーアレイ内の２つの隣接する層の電極の列（２０２）と行（２０４）を相互接続するクロスバー交差部（２１０）の２つの異なる図を示している。クロスバー交差部（２１０）は、２つの電極（２０２、２０４）が物理的に接触しているものであってもよく、そうでなくてもよい。図２Ｂに示されているように、２つの電極（２０２、２０４）は、それらの電極が重なっている位置（重なり位置）において物理的に接触していないが、それらの電極（２０２、２０４）間のギャップ（間隙）は、それら２つの電極（２０２、２０４）が最も近接している重なり位置においてそれらの電極間にあるメムリスティブ素子（２０６）によって埋められている。図２Ｃは、図２Ｂに示されているメムリスティブ素子（２０６）及びオーバーラップしている電極（２０２、２０４）の略図である。メムリスティブ素子（２０６）は、残りの図面を通じてクロスバー交差部に配置されているメモリスタ及び任意の関連する回路を表すために使用されている。
【００２３】
図３は、本開示の原理の１例にしたがう、電圧入力の単一ベクトルを有するメムリスティブドット積エンジン（３００）を示している。ドット積エンジン（３００）は、Ｎ個の行電極（３０４）及びＭ個の列電極（３０６）を含むクロスバーアレイ（３０２）を備えている。クロスバーアレイ（３０２）中のクロスバー交差部は、メムリスティブ素子（３０８）を備えている。ドット積エンジン（３００）は、行電極（３０４）に電圧を加えるためのベクトル入力レジスタまたはベクトル入力（部）（３１０）、及び、列電極（３０６）中の電流から生じる出力電圧を受け取るためのベクトル出力レジスタまたはベクトル出力（部）（３１４）を備えている。ドット積エンジン（３００）はまた、列電極（３０６）中の電流を電圧に変換するためのセンス回路（３１６）を備えている。本開示の原理の１例では、センス回路（３１６）は、演算増幅器（オペアンプ）（３１８）及び抵抗（器）（３２０）を備えており、該センス回路を、読み取り動作用の仮想接地を表すように配置ないし構成することができる。
【００２４】
ドット積エンジン（３００）はまた、記憶装置として使用されるクロスバーアレイ（３０２）に関連する他の周辺回路を備えることができる。たとえば、ベクトル入力（部）（３１０）は、行電極（３０４）に接続されたドライバを備えることができる。アドレスデコーダを用いて、行電極（３０４）を選択して、該選択された行電極（３０４）に対応するドライバを作動させることができる。選択された行電極（３０４）用のドライバは、ベクトル−行列乗算またはクロスバーアレイ（３０２）のメムリスティブ素子（３０８）内の抵抗値を設定する処理に対応する異なる電圧で、対応する行電極（３０４）を駆動することができる。同様のドライバ及びデコーダ回路を、列電極（３０６）用に含めることができる。また、制御回路を用いて、ドット積エンジン（３００）の入力における電圧の印加、及び、該エンジン（３００）の出力における電圧の読み取りを制御することができる。デジタル−アナログ回路（たとえばデジタルアナログ変換器）及びアナログ−デジタル回路（たとえばアナログデジタル変換器）を、ベクトル入力（部）（３１０）及びベクトル出力（部）（３１４）において使用することができる。行電極（３０４）及び列電極（３０６）への入力信号をアナログまたはデジタルとすることができる。半導体処理技術を用いて、上記の例のクロスバーアレイ（３０２）と同じ一体化された構造もしくは半導体ダイ中に、上記の周辺回路を製作することができる。
【００２５】
動作時、ドット積エンジン（３００）によって、Ｎ×Ｍのクロスバーアレイ（３０２）の行（３０４）に沿って一組の電圧ＶＩ（３１０）を加え、列（３０６）を流れる電流を集めて（収集して）、出力電圧Ｖ０（３１４）を測定することによって、ベクトルと行列との乗算（ベクトル行列乗算）を実行することができる。それぞれの列において、すべての入力電圧（３１０）が対応するメムリスタンス（１／Ｇij）で重み付けされ、それらの重み付けされた総計が出力電圧（３１４）に反映される。オームの法則を用いて、入力電圧（３１０）と出力電圧（３１４）の間の関係を、｛Ｖ０｝Ｔ＝−｛ＶＩ｝Ｔ［Ｇ］Ｒsの形式のベクトル行列乗算によって表すことができ、ここで、Ｇijは、クロスバーアレイ（３０２）のコンダクタンス（抵抗の逆数）によって決定されるＮ×Ｍ行列である。Ｒsは、センス増幅器（センスアンプ）の抵抗値であり、Ｔは、Ｍ×１及びＮ×１ベクトル（それぞれ、Ｖ０及びＶＩ）の転置を表している。負号があるのは、センス増幅器において負帰還オペアンプ（回路）を使用しているためである。上記から、ベクトル処理のために、より具体的には、値｛ｂi｝Ｔの第１のベクトルに値［ａij］の行列を乗じて値｛ｃj｝Ｔの第２のベクトルを得るために、ドット積エンジン（３００）を使用できるということになる。ここで、ｉ＝１、Ｎであり、ｊ＝１、Ｍである。ベクトル処理を以下のようにより詳しく記述することができる。
【数１】
0006281024.tif 000002
【００２６】
本開示の原理を用いるベクトル処理すなわちベクトル乗算は、一般に、値［ａij］の行列をクロスバーアレイ（３０２）にマッピングすること、換言すれば、コンダクタンス値Ｇijをアレイ（３０２）のクロスバー交差部にプログラムする（たとえば書込む）ことから開始する。図３をさらに参照すると、１例では、コンダクタンス値Ｇijの各々は、クロスバー交差部（図２の２１０）の各々に順次もしくは連続的に電圧降下を生じさせることによって設定される。たとえば、クロスバーアレイ（３０２）の２番目の行にＶRow2に等しい電圧を加え、及び、クロスバーアレイ（３０２）の３番目の列にＶCol3に等しい電圧を加えることによって、コンダクタンス値Ｇ2,3を設定することができる。図３を参照すると、１例では、電圧入力ＶRow2は、ｊ＝１の列電極（１番目の列電極）に隣接する２番目の行電極の位置（３３０）において該２番目の行に加えられる。電圧入力ＶCol3は、ｉ＝１またはｉ＝Ｎの位置に隣接する３番目の列電極に加えられる。ある列電極（３０６）に電圧を加えるときは、その電極用のセンス回路（３１６）をオフにし（または切り離し）、電圧ドライバをオンにする（または接続する）ことができることに留意されたい。電圧差ＶRow2−ＶCol3は、一般に、交差部に配置されたメムリスティブ素子（３０８）の特性に基づいて、生じたコンダクタンス値Ｇ2,3を決定する。このアプローチにしたがう場合は、たとえば、選択されていない全ての列（３０６）及び行（３０４）をフローティング（状態）にし、または選択されていない全ての列（３０６）及び行（３０４）を接地することを含むいくつかの方式のうちの１つにしたがって、選択されていない列（３０６）及び行（３０４）に対処することができる。他の方式は、列（３０６）を接地すること、または一部の列（３０６）を接地することを含む。選択されていない全ての列（３０６）及び行（３０４）を接地することは、該方式が、選択されていない列（３０６）及び行（３０４）を絶縁ないし分離して、選択されている出力列へのスニークパス電流を最小限にするのに役立つという点で有益である。ドット積エンジン（３００）の動作は、プログラミングの後に、入力電圧（３１０）のベクトルを加えて、出力電圧（３１４）のベクトルを読み取ることに進む。
【００２７】
本開示の原理の１例によれば、ドット積エンジン（３００）に使用されるメモリスタは、線形の電流−電圧関係を有する。線形の電流−電圧関係は、ベクトル乗算処理においてより高い精度を可能にする。しかしながら、線形性のメモリスタを有するクロスバーアレイ（３０２）は、特に、クロスバーアレイ（３０２）のサイズが所定のサイズ（たとえば３２×３２）よりも大きいときに、アレイ（３０２）のプログラミング中に大きなスニークパス電流を生じる傾向がある。そのような場合には、選択されたメモリスタを流れる電流は、該メモリスタをプログラムするのには十分ではない場合がある。なぜなら、電流の大部分はスニークパスを流れるからである。あるいは、メモリスタは、スニークパスのために不正確な値にプログラムされる場合がある。このような例において、特に、より大きなアレイが望まれるときに、スニークパス電流を低減するために、非線形性のセレクタまたはトランジスタ（たとえば、ノーマリーオン（normally ON：通常は導通状態）デプレッションモードトランジスタ）などのアクセスデバイスを、メムリスティブ素子（３０８）内に組み込むかまたはメムリスティブ素子（３０８）と共に使用することができ、これによって、該アレイ内のスニークパス電流を最小限にすることができる。より具体的には、メムリスティブ素子（３０８）は、たとえば、メモリスタ、またはメモリスタ及びセレクタ、またはメモリスタ及びトランジスタを含むメムリスティブデバイスを含むものとして広義に解釈されるべきである。
【００２８】
図４Ａ及び図４Ｂは、本開示の原理の１例にしたがう、クロスバーアレイ（図３の３０２）の上側の層の電極（図３の３０４）における電圧分布（４００）と下側の層の電極（図３の３０６）における電圧分布（４２０）をそれぞれ示している。具体的には、プログラミング動作中に上側の層の行電極（図３の３０４）における電圧分布と下側の層の列電極（図３の３０６）における電圧分布を示すために、図３に示されているクロスバーアレイに類似の２５６×２５６の行列をなすクロスバーアレイ（図３の３０２）が使用される。図４Ａ及び図４Ｂにおいて、入力条件として、入力ベクトル（図３の３１０）においてそれぞれの行電極（図３の３０４）に０．５Ｖが加えられ、出力ベクトル（図３の３１４）において接地電位が加えられて、センス回路（図３の３１６）はオフにされる（または切り離される）。図４Ａ及び図４Ｂに示されているように、電圧分布は上側の表面と下側の表面に生じ、これは信号劣化を引き起こす。たとえば、上側の層の行電極（図３の３０４）における電圧分布は、電圧入力ベクトル（図３の３１０）の位置において０．５０ボルト（４０２）から開始して、ｉ＝２５６、ｊ＝２５６の位置の近傍において約０．２５ボルトに低下する。この低下は、０．５０ボルト、０．４５ボルト、０．４０ボルト、０．３５ボルト、及び０．３０ボルトを表す曲線（等高線）によって明らかにされているように、上側の表面全体にわたって徐々に起こっている。同様に、下側の層の列電極（図３の３０６）については、Ｎ番目の行に隣接する加えられた接地電位すなわち０．００ボルト（４２２）、０．０５ボルト、０．１０ボルト、０．１５ボルト、０．２０ボルト、及び０．２５ボルトを表す曲線（等高線）によって明らかにされているように、信号は、列電極（図３の３０６）の表面全体にわたって徐々に低下している。これらの分布から明らかなように、クロスバーアレイ（図３の３０２）のうちの広い領域が、該アレイ（図３の３０２）の上側の表面と下側の表面において完全な０．５０ボルトのバイアスを受けず、これは、クロスバー交差部（図２の２１０）にあるメムリスティブ素子（図３の３０８）に意図した電圧降下が生じない可能性があることを意味する。以下の例は、上記の信号劣化（もしくは信号低下）に対処する。
【００２９】
図５は、本開示の原理の１例にしたがう、電圧入力のダブルベクトルを有するダブルバイアスメムリスティブドット積エンジン（５００）を示している。ドット積エンジン（５００）は、Ｎ個の行電極（５０４）及びＭ個の列電極（５０６）を含むクロスバーアレイ（５０２）を備えている。クロスバーアレイ（５０２）中のクロスバー交差部（図２の２１０）はメムリスティブ素子（５０８）を備えている。ドット積エンジン（５００）は、行電極（５０４）に電圧を加えるための第１のベクトル入力レジスタまたは第１のベクトル入力（部）（５１０）を備えている。行電極（５０４）に電圧を加えるための第２のベクトル入力レジスタまたは第２のベクトル入力（部）（５１２）もドット積エンジン（５００）に組み込まれている。ドット積エンジン（５００）はさらに、列電極（５０６）中の電流から生じる出力電圧を受け取るためのベクトル出力レジスタまたはベクトル出力（部）（５１４）を備えている。ドット積エンジン（５００）はまた、列電極（５０６）中の電流を電圧に変換するためのセンス回路（５１６）を備えている。本開示の原理の１例では、センス回路（５１６）は、演算増幅器（オペアンプ）（５１８）及び抵抗（器）（５２０）を備えており、該センス回路を、読み取り動作用の仮想接地を表すように配置ないし構成することができる。上記の例と同様に、ドット積エンジン（５００）はまた、記憶装置として使用されるクロスバーアレイ（５０２）に関連する周辺回路を備えることができる。該周辺回路には、たとえば、ドライバ、デコーダ、ＤＡＣ、ＡＤＣ、及び制御回路が含まれ、これらの全てを、半導体処理技術を用いて、上記の例のクロスバーアレイ（図３の３０２）と同じ一体化された構造もしくは半導体ダイ中に製作することができる。
【００３０】
本開示の原理にしたがう１例では、電圧入力の第１の入力ベクトル（５１０）が、ｊ＝１の列電極に隣接する行電極（５０４）に加えられるかまたは接続され、電圧入力の第２の入力ベクトル（５１２）が、ｊ＝Ｍの列電極に隣接する行電極（５０４）に加えられるかまたは接続される。追加の例では、電圧入力の第１及び第２の入力ベクトル（５１０、５１２）が、たとえば、ｊ＝（１／４）Ｍ及びｊ＝（３／４）Ｍの列などの、クロスバーアレイ（５０２）の異なる位置に配置される。他の例では、ベクトル入力の３以上の入力ベクトル（５１０、５１２）を使用することができる。一般に、それらの電圧入力は行毎に異なる。しかしながら、図５では、単一のバイアス方式に対するダブルバイアス方式の利点をより明確に示すために、各行（５０４）に対して同じ電圧が使用されている。さらに、第１の入力ベクトル（５１０）が電圧入力｛ＶiI｝（ｉ＝１、Ｎ）を含んでいる場合には、一般に、第２の入力ベクトル（５１２）は同じ電圧入力を含んでいる。一般に、どの列電極（５０６）が、それらの入力（たとえば、図５に示されているｊ＝１及びｊ＝Ｍの列電極）に隣接しているか、及び、たとえば３つ以上の入力ベクトルを有しているかに関係なく、同じ方法が適用される。
【００３１】
動作時、上記と同様に、コンダクタンス値Ｇijをアレイ（５０２）のクロスバー交差部にプログラムする（たとえば書込む）ことによって、値［ａij］の行列がクロスバーアレイ（５０２）にマッピングされる。１例では、コンダクタンス値Ｇijの各々は、クロスバー交差部（図２の２１０）の各々に順次もしくは連続的に電圧降下を生じさせることによって設定される。たとえば、クロスバーアレイ（５０２）の２番目の行にＶRow2に等しい電圧を加え、及び、クロスバーアレイ（５０２）の３番目の列にＶCol3に等しい電圧を加えることによって、コンダクタンス値Ｇ2,3を設定することができる。図５を参照すると、１例では、電圧入力ＶRow2は、ｊ＝１の列電極に隣接する２番目の行電極の第１の位置（５３０）、及びｊ＝Ｍの列電極に隣接する２番目の行電極の第２の位置（５３２）の２つの位置において２番目の行に加えられる。電圧入力ＶCol3は、ｉ＝１またはｉ＝Ｎの位置に隣接する３番目の列電極に加えられる。ある列電極（５０６）に電圧を加えるときは、その電極用のセンス回路（５１６）をオフにし（または切り離し）、電圧ドライバをオンにする（または接続する）ことができることに留意されたい。電圧差ＶRow2−ＶCol3は、一般に、交差部に配置されたメムリスティブ素子（５０８）の特性に基づいて、生じたコンダクタンス値Ｇ2,3を決定する。このアプローチにしたがう場合は、たとえば、選択されていない全ての列（５０６）及び行（５０４）をフローティング（状態）にし、または選択されていない全ての列（５０６）及び行（５０４）を接地することを含むいくつかの方式のうちの１つにしたがって、選択されていない列（５０６）及び行（５０４）に対処することができる。他の方式は、列（５０６）を接地すること、または一部の列（５０６）を接地することを含む。選択されていない全ての列（５０６）及び行（５０４）を接地することは、該方式が、選択されていない列（５０６）及び行（５０４）を絶縁ないし分離して、選択されている出力列（５０６）へのスニークパス電流を最小限にするのに役立つという点で有益である。ドット積エンジン（５００）の動作は、プログラミングの後に、アレイ（５０２）のｊ＝１の列電極に隣接する対応する行電極（５０４）に入力電圧の第１のベクトル（５１０）を加え、及び、アレイ（５０２）のｊ＝Ｍの列電極（５０６）に隣接する対応する行電極（５０４）に入力電圧の第２のベクトル（５１２）を加えて、出力電圧のベクトル（５１４）を読み取ることに進む。
【００３２】
図６Ａ及び図６Ｂは、本開示の原理の１例にしたがう、クロスバーアレイ（図５の５０２）の上側の層の電極（図５の５０４）における電圧分布（６００）と下側の層の電極（図５の５０６）における電圧分布（６２０）をそれぞれ示している。具体的には、プログラミング動作中に上側の層の行電極（図５の５０４）における電圧分布と下側の層の列電極（図５の５０６）における電圧分布を示すために、図５（及び後述の図７）に示されているクロスバーアレイに類似の２５６×２５６の行列をなすクロスバーアレイ（図５の５０２）が使用される。入力条件として、入力ベクトル（図５の５１０、５１２）においてそれぞれの行に０．５Ｖが加えられ、出力ベクトル（図５の５１４）において接地電位が加えられて、センス回路（図５の５１６）はオフにされる（または切り離される）。一番上の行電極すなわち１番目の行電極（図５の５０４）に隣接する列電極（図５の５０６）も接地電位（グランド）にバイアスされる。図６Ａ及び図６Ｂに示されているように、電圧分布は上側の表面と下側の表面に生じ、これは信号劣化を引き起こす。たとえば、上側の層の行電極（図５の５０４）における電圧分布は、電圧入力ベクトル（図５の５１０、５１２）の位置において０．５０ボルト（６０２、６１２）から開始して、ｉ＝１、ｊ＝１２８、及び、ｉ＝２５６、ｊ＝１２８の行及び列電極（図５の５０４、５０６）の位置の近傍において約０．４０ボルトに低下する。この低下は、０．５０ボルト、０．４８ボルト、０．４６ボルト、０．４４ボルト、０．４２ボルト、及び０．４０ボルトを表す曲線（等高線）によって明らかにされているように、上側の表面全体にわたって徐々に起こっている。同様に、下側の層の列電極（図５の５０６）については、１番目とＮ番目の行に隣接する加えられた接地電位すなわち０．００ボルト（６２２、６２４）、０．０２ボルト、０．０４ボルト、０．０６ボルト、０．０８ボルト、及び０．１０ボルトを表す曲線（等高線）によって明らかにされているように、信号は、列電極（図５の５０６）の表面全体にわたって徐々に低下している。
【００３３】
これらの分布から明らかなように、ダブルバイアス電圧入力方式は、上記の単一バイアス入力方式に対して少なくとも２つの点に関して精度の向上をもたらす。第１に、信号劣化は、概ね対称的であって、最大の劣化（低下）は、（単一バイアス方式の場合に隅の領域の近くで起こるのとは異なり）上側の表面と下側の表面の両方においてアレイ（図５の５０２）の中心（中央）の近くで起こる。第２に、ダブルバイアス方式では、上側及び下側の表面における最大の信号劣化（信号低下）がより小さい。たとえば、ダブルバイアス方式では、上側及び下側の表面の各々における最大の信号劣化（信号低下）は約０．１ボルトであるが、単一バイアス方式では、最大の信号劣化（信号低下）は、約０．２５ボルトである。
【００３４】
図７Ａ及び図７Ｂは、上記の２つの例におけるクロスバーアレイの電圧差を示している。具体的には、図７Ａは、図４Ａ及び図４Ｂにそれぞれ示されている上側（図４の４００）の電圧分布と下側（図４の４２０）の電圧分布間の電圧差（７００）の曲線（等高線）を示しており、図７Ｂは、図６Ａ及び図６Ｂにそれぞれ示されている上側（図６の６００）の電圧分布と下側（図６の６２０）の電圧分布間の電圧差（７２０）の曲線（等高線）を示している。これらの電圧差（これは、プログラミング中のメムリスティブ素子にかかる電圧を表すことができる）の低下の分布から理解されるように、ダブルバイアス方式は、上側の表面と下側の表面間で約０．２０ボルト（０．５ボルト−０．３ボルト）の最大低下を生じ、一方、単一バイアス方式は、約０．３ボルト（０．５ボルト−０．２ボルト）の最大低下を生じる。さらに、ダブルバイアス方式では、最大低下は、クロスバーアレイ（図５の５０２）の中心部で起こっているが、単一バイアス方式では、最大低下は、ダブルバイアス方式と比べると、クロスバーアレイの比較的広い部分（該アレイの斜め上側の大部分）にわたって起こっている。したがって、ダブルバイアス方式は、平均誤差を改善し、これによって、より密度の高いクロスバーアレイを、データの保存中またはドット積計算の実行中に正確に動作させる能力を高めることが可能である。さらに、誤差は、アレイの表面全体にわたって空間的に対称であるため、誤差をモデル化して、ＤＰＥ（図５の５００）の出力において補償することができる。
【００３５】
図８は、本開示の原理の１例にしたがう、電圧入力のダブルベクトル（８１０、８１２）及び出力のダブルベクトル（８１４、８２２）を有するダブルバイアスメムリスティブドット積エンジン（８００）を示している。ドット積エンジン（８００）は、Ｎ個の行電極（８０４）及びＭ個の列電極（８０６）を含むクロスバーアレイ（８０２）を備えている。クロスバーアレイ（８０２）中のクロスバー交差部はメムリスティブ素子（８０８）を備えている。ドット積エンジン（８００）は、行電極（８０４）に電圧を加えるための第１のベクトル入力レジスタまたは第１のベクトル入力（部）（８１０）を備えている。行電極（８０４）に電圧を加えるための第２のベクトル入力レジスタまたは第２のベクトル入力（部）（８１２）もドット積エンジン（８００）に組み込まれている。ドット積エンジン（８００）はさらに、列電極（８０６）中の電流から生じる出力電圧を受け取るための第１のベクトル出力レジスタまたは第１のベクトル出力（部）（８１４）及び第２のベクトル出力レジスタまたは第２のベクトル出力（部）（８２２）を備えている。ドット積エンジン（８００）はまた、列電圧（８０６）中の電流を電圧に変換するためのセンス回路（８１６）を備えている。本開示の原理の１例では、センス回路（８１６）は、演算増幅器（オペアンプ）（８１８）及び抵抗（器）（８２０）を備えており、該センス回路を、読み取り動作用の仮想接地を表すように配置ないし構成することができる。上記の例と同様に、ドット積エンジン（８００）はまた、記憶装置として使用されるクロスバーアレイ（８０２）に関連する周辺回路を備えることができる。該周辺回路には、たとえば、ドライバ、デコーダ、ＤＡＣ、ＡＤＣ、及び制御回路が含まれ、これらの全てを、半導体処理技術を用いて、上記の例のクロスバーアレイ（図３の３０２）と同じ一体化された構造もしくは半導体ダイ中に製作することができる。
【００３６】
ドット積エンジン（８００）の動作は上記の動作に類似している。上記と同様にして、値［ａij］の行列がクロスバーアレイ（８０２）にマッピングされる（たとえば、コンダクタンス値Ｇijの各々が、クロスバー交差部の各々に順次もしくは連続的に電圧降下を生じさせることによって設定される）。ドット積エンジン（８００）の動作は、プログラミングの後に、アレイ（８０２）のｊ＝１の列電極（８０６）に隣接する対応する行電極（８０４）に入力電圧の第１のベクトル（８１０）を加え、及び、アレイ（８０２）のｊ＝Ｍの列電極（８０６）に隣接する対応する行電極（８０４）に入力電圧の第２のベクトル（８１２）を加えることに進む。出力電圧が、第１のベクトル出力レジスタまたは第１のベクトル出力（部）（８１４）、及び、第２のベクトル出力レジスタまたは第２のベクトル出力（部）（８２２）において読み取られる。第１の出力ベクトル部（８１４）と第２の出力ベクトル部（８２２）において読み取られた電圧を加える（加算する）ことによって、行列乗算の最終結果が得られる。
【００３７】
図９には、本開示の原理の１例にしたがう、クロスバーアレイ（図５の５０２）を有するダブルバイアスメムリスティブドット積エンジン（図５の５００）を用いるベクトル処理の方法（９００）が示されている。いくつかの例によれば、方法（９００）は、メムリスティブ記憶デバイスのクロスバーアレイ（図５の５０２）を提供するステップ（ブロック９０２）を含むことができる。たとえば、クロスバーアレイ（図５の５０２）は、メモリ素子（記憶素子）のＮ×Ｍ個のグリッド（格子）を形成するためのＮ個の行電極（図５の５０４）及びＭ個の列電極（図５の５０６）を含むことができる。各行電極（図５の５０４）と各列電極（図５の５０６）の交差部は、メモリ素子を画定し、この場合、メモリ素子は、メムリスティブ記憶デバイス（図５の５０８）を含む（またはメムリスティブ記憶デバイスから構成される）。方法（９００）はまた、いくつかのベクトル入力レジスタ（図５の５１０、５１２）及びいくつかのベクトル出力レジスタ（図５の５１４、図８の８２２）を提供するステップ（ブロック９０４）を含む。たとえば、第１のベクトル入力レジスタ（図５の５１０）は、Ｎ個の行電極（図５の５０４）の各々に第１の電圧入力を供給する。さらに、いくつかの例では、第２のベクトル入力レジスタ（図５の５１２）は、Ｎ個の行電極（図５の５０４）の各々に第２の電圧入力を供給する。さらに、第１のベクトル出力レジスタ（図５の５１４）は、Ｍ個の列電極（図５の５０６）の各々から電圧出力を受け取る。方法（９００）はさらに、クロスバーアレイ（図５の５０２）内のＮ×Ｍ個のメモリ位置に、Ｎ×Ｍ行列の行列値に対応するメムリスタンス値を設定するステップ（ブロック９０６）を含むことができる。たとえば、プログラミング電圧（プログラム用電圧）を、アレイ（図５の５０２）内のＮ×Ｍ個のメモリ位置のクロスバー交差部に対応する行電極及び列電極（図５の５０４、５０６）に順次もしくは連続的に加えることができる。方法（９００）はさらに、Ｎ×１行列の値に対応する入力電圧を設定するステップ（ブロック９０８）を含むことができる。該入力電圧は、Ｎ×Ｍ行列の値に乗じられるＮ×１行列の値を表している。方法（９００）はさらに、Ｎ個の行電極（図５の５０４）の各々の２つの位置に電圧入力を加えるステップ（ブロック９１０）を含むことができる。たとえば、Ｎ×１行列内の第１の値に対応する電圧入力を、クロスバーアレイ（図５の５０２）内の第１の行の左端部及び右端部に加えることができる。最後に、方法（９００）は、Ｍ個の電圧出力（部）（図５の５１４）における出力電圧を決定するステップ（ブロック９１２）を含むことができる。出力電圧の各々は、Ｎ×Ｍ行列とＮ×１ベクトルの行と列の乗算（結果）に対応する。いくつかの例では、出力電圧を決定するステップ（ブロック９１２）は、抵抗器（図５の５２０）を備える抵抗回路網による乗算を含むことができる。１例では、電圧出力（図５の５１４）を、列電極（図５の５０６）を流れる電流が抵抗器（または抵抗素子ないし抵抗デバイス）を流れるようにし、これによって、その電圧をオームの法則を用いて決定することを可能にするセンス回路（図５の５１６）を用いて決定することが���きる。
【００３８】
本明細書では、本発明によるシステム及び方法のいくつかの側面が、本開示の原理のいくつかの例にしたがう方法、装置（システム）及びコンピュータプログラム製品のフローチャート及び／又はブロック図を参照して説明されている。該フローチャート及び該ブロック図の各ブロック、並びに、該フローチャート中のブロックと該ブロック図中のブロックとの組み合わせを、コンピュータ使用可能プログラムコードによって実施することができる。該コンピュータ使用可能プログラムコードを、汎用コンピュータのプロセッサ、専用コンピュータ、または他のプログラム可能なデータ処理装置に提供して、該コンピュータ使用可能プログラムコードが、たとえばコンピューティングシステム（図１の１００）のプロセッサ（図１の１０１）または他のプログラム可能なデータ処理装置によって実行されたときに、該フローチャート及び／又はブロック図の１つもしくは複数のブロックで指定ないし規定されている機能もしくは動作を実施するようにするマシン（装置）を生成することができる。１例では、該コンピュータ使用可能プログラムコードを、該コンピュータプログラム製品の一部であるコンピュータ可読記憶媒体内に具現化することができる。１例では、該コンピュータ可読記憶媒体は、非一時的なコンピュータ可読媒体である。
【００３９】
上記の記述は、開示されている原理のいくつかの例を図示し及び説明するために提示されたものである。この記述は、それらの原理を網羅することも、それらの原理を開示した形態そのものに限定することも意図していない。上記の教示に照らして多くの修正及び変更が可能である。
【図１】
0006281024.tif 000003
【図２Ａ】
0006281024.tif 000004
【図２Ｂ】
0006281024.tif 000005
【図２Ｃ】
0006281024.tif 000006
【図３】
0006281024.tif 000007
【図４Ａ】
0006281024.tif 000008
【図４Ｂ】
0006281024.tif 000009
【図５】
0006281024.tif 000010
【図６Ａ】
0006281024.tif 000011
【図６Ｂ】
0006281024.tif 000012
【図７Ａ】
0006281024.tif 000013
【図７Ｂ】
0006281024.tif 000014
【図８】
0006281024.tif 000015
【図９】
0006281024.tif 000016