(58)【調査した分野】(Int.Cl.,DB名)
前記第1のベクトル入力レジスタは、j番目の列(j=1、M)において前記N個の行電極の各々に接続され、前記第2のベクトル入力レジスタは、k番目の列(kはjに等しくない)において前記N個の行電極の各々に接続される、請求項1のシステム。
前記第1のベクトル入力レジスタは、j=1の列において前記N個の行電極の各々に接続され、前記第2のベクトル入力レジスタは、j=Mの列において前記N個の行電極の各々に接続される、請求項2のシステム。
前記M個の列電極の各々から電圧出力を受け取るための第2のベクトル出力レジスタをさらに備え、該第2のベクトル出力レジスタは、i=1の行において前記M個の列電極の各々に接続される、請求項4のシステム。
前記第1のベクトル入力レジスタは、j=1の列において前記N個の行電極の各々に接続され、前記第2のベクトル入力レジスタは、j=Mの列において前記N個の行電極の各々に接続される、請求項6のドット積エンジン。
前記第1のベクトル出力レジスタは、i=Nの行において前記M個の列電極の各々に接続され、前記第2のベクトル出力レジスタは、i=1の行において前記M個の列電極の各々に接続される、請求項7のドット積エンジン。
前記M個の列電極の各々と前記第1及び前記第2のベクトル出力レジスタとの間に配置されたアナログデジタル変換器、及び、前記N個の行電極の各々と前記第1及び前記第2のベクトル入力レジスタとの間に配置されたデジタルアナログ変換器をさらに備える、請求項7のドット積エンジン。
前記クロスバーアレイがさらに、前記M個の列電極の各々から電圧出力を受け取るための第2のベクトル出力レジスタを備え、前記第1のベクトル出力レジスタは、i=Nの行において前記M個の列電極の各々に接続され、前記第2のベクトル出力レジスタは、i=1の行において前記M個の列電極の各々に接続される、請求項11の方法。
前記M個の列の各々における電圧出力は、前記クロスバーアレイの前記M個の列の各々について、i=1及びi=Nの行において受け取られた電流出力を抵抗デバイスに通すことによって決定される、請求項13の方法。
N×M個のメモリ位置にメムリスタンス値を設定する前記ステップ、N個の電圧入力に入力電圧を設定する前記ステップ、電圧入力を加える前記ステップ、及び、M個の電圧出力における出力電圧を決定する前記ステップが、所定の収束基準が満たされるまで繰り返し実行される、請求項11の方法。
【発明を実施するための形態】
【0004】
多くの計算用途において、高速で効率の良いベクトル−行列処理技術が必要とされている。たとえば、ベクトル−行列処理は、少し例を挙げれば、データ圧縮、デジタルデータ処理、ニューラルネットワーク、暗号化及び最適化で使用される。メムリスティブクロスバーアレイを、ベクトル−行列計算またはドット積計算を実行するために使用することができる。たとえば、該クロスバーアレイのそれぞれの行からの入力電圧信号は、それぞれの列内の抵抗変化型デバイスのコンダクタンスによって重み付けされて、それぞれの列からの電流出力として累算される。理想的には、配線抵抗を無視できる場合には、該クロスバーアレイから流れ出る電流ベクトルIは、おおよそI
T=V
TGであり、ここで、Vは、入力電圧ベクトルであり、Gは、コンダクタンス行列であって、メムリスティブクロスバーアレイ内のそれぞれのメモリスタからの寄与を含んでいる。
【0005】
該クロスバーアレイの交差部すなわちクロスポイントの各々においてメモリスタを使用することによって、各々の交差部においてGの値に対応する抵抗値(またはコンダクタンス)をプログラムすることが可能になり、これは、該クロスバーアレイをドット積エンジン(DPE)として使用することにつながる。しかしながら、実際の回路では、それぞれの交差部にあるメモリスタ内だけではなく、各列または各行に沿ってメモリスタを接続するワイヤ(電線)や線や電極にも抵抗がある。それらのワイヤに起因する抵抗は、各行または各列に沿って信号劣化(たとえば電圧の低下)を引き起こし得る。本明細書及び図面では、該クロスバーアレイの行及び列に沿ってメモリスタを接続するワイヤや線や電極の抵抗によって引き起こされる信号劣化を低減するメモリスタベースのクロスバーアレイを使用するベクトル−行列処理システム及び方法を開示している。
【0006】
本明細書に開示されている原理の種々の例は、クロスバーメモリシステム、並びに、ベクトル−行列計算を実行する際の該システムの使用法に向けられている。メモリスタクロスバーアレイは、行列を実施し(ないし実装し)、及び、たとえば、グラフィックスプロセッシングユニットやこれに類似のアクセラレータに比べて、ベクトル処理の性能を大幅に高めることができる。さらに、メモリスタの低動作エネルギーは、電力消費の大幅な低減をもらしうる。
【0007】
以下の説明では、説明の便宜上、本発明によるシステム及び方法を完全に理解できるようにするために、多くの特定の細部が説明されている。しかしながら、当業者には、それらの特定の細部なくして、本発明による装置、システム、及び方法を実施できることは明らかであろう。本明細書における「1例」もしくはこれに類似の用語は、その例に関連して説明されている特定の特徴、構造、または特性が、説明されているように含まれるが、他の例には含まれなくてもよいことを意味する。
【0008】
図1は、本開示の原理の1例にしたがう、ドット積を求めるためのコンピューティングシステム(100)の図である。コンピューティングシステム(100)を、電子装置において実施することができる(または電子装置に組み込むことができる)。電子装置の例には、いくつかある中でも特に、サーバー、デスクトップコンピューター、ラップトップコンピュータ、携帯情報端末(PDA)、モバイル機器、スマートフォン、ゲーム機、及びタブレットが含まれる。
【0009】
コンピューティングシステム(100)を、独立型のハードウェア、モバイル用途、コンピューティングネットワーク経由、またはそれらの組み合わせを含む任意のデータ処理状況で使用することができる。さらに、コンピューティングシステム(100)を、コンピューティングネットワーク、パブリッククラウドネットワーク、プライベートクラウドネットワーク、ハイブリッドクラウドネットワーク、その他の形態のネットワーク、または、それらの組み合わせにおいて使用することができる。1例では、コンピューティングシステム(100)によって提供される方法は、たとえば、サードパーティーによってネットワークを通じたサービスとして提供される。この例では、該サービスは、いくつかのアプリケーションをホストするSaaS(Software as a Service:サービスとしてのソフトウェア)や、たとえば、とりわけ、オペレーティングシステム、ハードウェア、及び記憶装置を含むコンピューティングプラットフォームをホストするPaaS(Platform as a Service:サービスとしてのプラットフォーム)や、たとえば、とりわけ、サーバー、記憶要素、ネットワーク、及び構成要素(コンポーネント)などの装備をホストするIaaS(Infrastructure as a Service:サービスとしてのインフラストラクチャー)や、APIaaS(API as a Service:クラウド型APIサービス)や、その他の形態のネットワークサービス、またはそれらの組み合わせなどを含むことができる。本発明によるシステムを、1つまたは複数のハードウェアプラットフォームにおいて実施することができ、この場合、該システム内のモジュールを1つのプラットフォームにおいてまたは複数のプラットフォームにわたって実行することができる。それらのモジュールを、種々の形態のクラウド技術及びハイブリッドクラウド技術で動作させることができ、または、クラウドにおいてもしくはクラウド外で実施することができるSaaSとして提供することができる。別の例では、コンピューティングシステム(100)によって提供される方法は、ローカル管理者によって実行される。
【0010】
コンピューティングシステム(100)は、その所望の機能を達成するために、種々のハードウェアコンポーネントを備えている。それらのハードウェアコンポーネントには、いくつかのプロセッサ(101)、いくつかのデータ記憶装置(102)、いくつかの周辺機器アダプタ(103)、及び、いくつかのネットワークアダプタ(104)がありうる。これらのハードウェアコンポーネントを、いくつかのバス及び/又はネットワーク接続を用いて相互接続することができる。1例では、プロセッサ(101)、データ記憶装置(102)、周辺機器アダプタ(103)、及びネットワークアダプタ(104)を、バス(105)を介して通信可能に接続することができる。
【0011】
プロセッサ(101)は、データ記憶装置(102)から実行可能コードを取り出して、該実行可能コードを実行するためのハードウェアアーキテクチャを有することができる。該実行可能コードは、プロセッサ(101)によって実行されると、プロセッサ(101)に、いくつかの(数の)第1の電圧を、メムリスティブクロスバーアレイ内の対応する数の行ラインに加えて、該行ラインといくつかの列ラインとの間の交差部に配置された対応する数のメモリスタの抵抗値を変化させるという機能を少なくとも実施させることができる。ここで、該第1の電圧のそれぞれは、行列内の対応する数の値をそれぞれ表す。該実行可能コードはまた、プロセッサ(101)によって実行されると、プロセッサ(101)に、いくつかの(数の)第2の電圧を、メムリスティブクロスバーアレイ内の対応する数の行ラインに加えるという機能を少なくとも実施させることができる。ここで、該第2の電圧のそれぞれは、対応する数のベクトル値をそれぞれ表す。該実行可能コードはさらに、プロセッサ(101)によって実行されると、プロセッサ(101)に、列ラインからの出力電流を収集する(集める)という機能を少なくとも実施させることができる。ここで、該収集された出力電流はドット積を表す。コンピューティングシステム(100)の機能は、本明細書及び/又は図面に記載されている方法にしたがう。プロセッサ(101)は、コードを実行している間に、いくつかの残りのハードウェアユニットから入力を受けとり、及び、それらのハードウェアウニットに出力を提供することができる。
【0012】
データ記憶装置(102)は、プロセッサ(101)または他の処理装置によって実行される実行可能なプログラムコードなどのデータを格納することができる。説明されるように、データ記憶装置(102)は、プロセッサ(101)が本明細書に記載されている機能を少なくとも実施するために実行するいくつかのアプリケーションを表すコンピュータコードを格納することができる。
【0013】
データ記憶装置(102)は、揮発性メモリ及び不揮発性メモリを含む種々のタイプのメモリ(記憶装置)モジュールを含むことができる。たとえば、今の例のデータ記憶装置(102)は、ランダムアクセスメモリ(RAM)(106)、読取り専用メモリ(ROM)(107)、及びハードディスクドライブ(HDD)メモリ(108)を備えている。他の多くのタイプのメモリを使用することもでき、本明細書では、本開示の原理の特定の用途に適合しうる(1つ以上の)さまざまなタイプのメモリをデータ記憶装置(102)において使用することが考慮されている。いくつかの例では、データ記憶装置(102)内の(2以上の)異なるタイプのメモリを、データ記憶の(2以上の)異なる必要性に対してそれぞれ使用することができる。たとえば、いくつかの例では、プロセッサ(101)は、読取り専用メモリ(ROM)(107)からブートすることができ、ハードディスクドライブ(HDD)メモリ(108)に不揮発性記憶を維持することができ、及び、ランダムアクセスメモリ(RAM)(106)に格納されているプログラムコードを実行することができる。
【0014】
データ記憶装置(102)は、とりわけ、コンピュータ可読媒体、またはコンピュータ可読記憶媒体、または非一時的なコンピュータ可読媒体を含むことができる。たとえば、データ記憶装置(102)を、電子、磁気、光学、電磁、赤外線、もしくは半導体システム/装置/デバイス、または、これらの任意の適切な組み合わせとすることができる(ただし、それらに限定されない)。コンピュータ可読記憶媒体のより具体的な例は、たとえば、いくつかのワイヤ(電線)を有する電気的接続、携帯型コンピュータディスケット(たとえばフロッピーディスク)、ハードディスク、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、消去可能PROM(EPROMまたはフラッシュメモリ)、携帯型コンパクトディスク読取り専用メモリ(CD−ROM)、光学式記憶装置、磁気記憶装置、または、これらの任意の適切な組み合わせを含むことができる。本明細書の文脈において、コンピュータ可読記憶媒体を、命令実行システム/装置/デバイスによってまたはそれらに関連して使用されるコンピュータ使用可能プログラムコードを含むことができもしくは格納することができる任意の有形の媒体とすることができる。別の例では、コンピュータ可読記憶媒体を、命令実行システム/装置/デバイスによってまたはそれらに関連して使用されるプログラムを含むことができもしくは格納することができる任意の非一時的な媒体とすることができる。
【0015】
コンピューティングシステム(100)内のハードウェアアダプタ(103、104)は、プロセッサ(101)が、コンピューティングシステム(100)内外の他の種々のハードウェア要素とインターフェースできるようにする。たとえば、周辺機器アダプタ(103)は、たとえば、表示装置(109)やマウスやキーボードなどの入力/出力装置とのインターフェースを提供することができる。周辺機器アダプタ(103)はまた、外部記憶装置などの他の外部装置、及び、たとえば、サーバー、スイッチ、及びルーターなどのいくつかのネットワーク装置、及び、クライアント装置、及びその他のタイプのコンピューティング装置、及びこれらの任意の組み合わせに対するアクセスを提供することができる。
【0016】
表示装置(109)を、コンピューティングシステム(100)のユーザーがコンピューティングシステム(100)の機能と相互作用(対話など)し、及び該機能を実施できるようにするために設けることができる。周辺機器アダプタ(103)はまた、プロセッサ(101)と、表示装置(109)、プリンター、または他の媒体出力装置との間のインターフェースを生成することができる。ネットワークアダプタ(104)は、たとえばネットワーク内の他のコンピューティング装置とのインターフェースを提供することができ、これによって、コンピューティングシステム(100)と該ネットワーク内に配置された他の装置との間のデータ伝送を可能にする。
【0017】
コンピューティングシステム(100)は、プロセッサ(101)によって実行されると、表示装置(109)に、データ記憶装置(102)に格納されているいくつかのアプリケーションを表す実行可能なプログラムコードに関連付けられているいくつかのグラフィカルユーザーインターフェース(GUI)を表示することができる。これらのGUIは、たとえば、より詳細に後述するように、ユーザーが、コンピューティングシステム(100)と対話して、ダブルバイアスドット積エンジン(DPE)メムリスティブアレイ(110)に関連(もしくはそれと共同)して行列値(行列値は、該行列の(行位置と列位置によって決まる)各成分の値である)及びベクトル値を入力できるようにするインタラクティブな(すなわち対話型の)スクリーンショットを表示することができる。さらに、ユーザーは、表示装置(109)のGUIにおいていくつかのインタラクティブなジェスチャーをする(またはジェスチャー入力をする)ことによって、入力データに基づくドット積の値を得ることができる。表示装置(109)の例には、いくつかある中でも特に、コンピュータの画面、ラップトップコンピュータの画面、モバイル機器の画面、携帯情報端末(PDA)の画面、及びタブレットの画面が含まれる(ダブルバイアスは二重バイアスともいう)。
【0018】
コンピューティングシステム(100)はさらに、ダブルバイアスDPEメムリスティブアレイ(110)を備えることができる。より詳しく後述するように、ダブルバイアスDPEメムリスティブアレイ(110)は、複数の入力の加重和(重み付き和)を計算するためにアレイ内で相互に機能し合ういくつかのメモリスタを含むいくつかの要素を備えている。ダブルバイアスDPEメムリスティブアレイ(110)を、いくつかのアプリケーションで使用することができる。たとえば、ダブルバイアスDPEメムリスティブアレイ(110)をしきい値論理ゲート(TLG)として使用して、行列積(マトリックス積)を計算し、その出力をある閾値と比較することができる。したがって、ダブルバイアスDPEメムリスティブアレイ(110)を、より汎用的な処理装置で実行されるソフトウェアで可能な速さよりも速くいくつかの機能を実行するアクセラレータとして使用することができる。ダブルバイアスDPEメムリスティブアレイ(110)は、コンピューティングシステム(100)の内部にある装置として図示されているが、別の例では、ダブルバイアスDPEメムリスティブアレイ(110)を、コンピューティングシステム(100)に結合された周辺装置とすることができ、または、コンピューティングシステム(100)に結合された周辺装置内に含めることができる。
【0019】
コンピューティングシステム(100)はさらに、本明細書で説明されているシステム及び方法の実施に使用されるいくつかのモジュールを備えている。コンピューティングシステム(100)内の種々のモジュールは、個別に実行されることができる実行可能なプログラムコードを備えている。この例では、それらの種々のモジュールを、別個のコンピュータプログラム製品として格納することができる。別の例では、コンピューティングシステム(100)内のそれらの種々のモジュールを、いくつかのコンピュータプログラム製品内で組み合わせることができ、この場合、それぞれのコンピュータプログラム製品はいくつかの該モジュールを含む。
【0020】
コンピューティングシステム(100)は、プロセッサ(101)によって実行されると、ダブルバイアスDPEメムリスティブアレイ(110)の機能を支援するドット積エンジンモジュール(111)を備えることができる。ドット積エンジンモジュール(111)は、たとえば、ドット積の数学的計算で処理される行列を定める(または指定する)いくつかの入力値を受け取る。ドット積エンジンモジュール(111)は、ダブルバイアスDPEメムリスティブアレイ(110)内のいくつかのメモリスタをプログラムするために、それらの入力値を、それらのメモリスタへのプログラミング信号としてダブルバイアスDPEメムリスティブアレイ(110)に送ることができる。ドット積エンジンモジュール(111)はまた、それらのメモリスタにプログラムされた行列に関連して処理されるベクトル入力を受け取ることができる。ドット積エンジンモジュール(111)はさらに、ドット積を表す値を得て、分析またはさらなる処理のために、該値をコンピューティングシステム(100)または別のコンピューティング装置にデータとして伝送することができる。
【0021】
図2A、
図2B、及び
図2Cは、本開示の原理の1例にしたがう、クロスバーアレイ(200)のクロスポイントすなわち交差部の各々に配置されたメムリスティブデバイス(206)を有するクロスバーアレイ(200)を示している。
図2Aにおいて、第1の層をなすほぼ平行な電極(202)の上に、第2の層をなすほぼ平行な電極(204)が配置されている。簡単にするために、第1の層をなす平行な電極(202)のうちの1つの電極と、第2の層をなす平行な電極(204)のうちの1つの電極が、参照番号で示されている。第2の層をなす電極(204)の向きは、第1の層をなす電極(202)の向きに概ね垂直であるが、それらの2つの層の間の向きの角度をそれとは異なるものとすることができる。それら2つの電極の層は、格子すなわちクロスバーを形成し、第2の層の各電極(204)は、第1の層の電極(202)の上に(第1の層の電極にかぶさるように)配置されて、2つの電極(202、204)間が一番近い位置を表す電極の交差部において、第1の層の電極(202)の各々と近接する。格子の向きが与えられると、第1の層をなす電極(202)を列と表現することができ、第2の層をなす電極(204)を行と表現することができる。
図2Aの個々の電極(202、204)は長方形の断面を有するものとして示されているが、電極の断面を、正方形、円、楕円、またはより複雑な形状の断面とすることもできる。それらの電極(202、204)はまた、多くの異なる幅または直径、及び、多くの異なるアスペクト比または偏心を有することができる。「クロスバー」という用語は、電極の他にも、サブマイクロスケールもしくはマイクロスケールのワイヤ、もしくはこれらより寸法がより大きなワイヤからなる1つまたは複数の層を有するクロスバーを意味することができる。
【0022】
電極の交差部において、抵抗(器)などの電子部品及びその他の電子部品を、2つのオーバーラップしている(部分的に重なり合う)電極(202、204)を相互接続するために製作することができる。電子部品によって接続された電極の交差部を「クロスバー交差部」と呼ぶこともある。
図2B及び
図2Cは、クロスバーアレイ内の2つの隣接する層の電極の列(202)と行(204)を相互接続するクロスバー交差部(210)の2つの異なる図を示している。クロスバー交差部(210)は、2つの電極(202、204)が物理的に接触しているものであってもよく、そうでなくてもよい。
図2Bに示されているように、2つの電極(202、204)は、それらの電極が重なっている位置(重なり位置)において物理的に接触していないが、それらの電極(202、204)間のギャップ(間隙)は、それら2つの電極(202、204)が最も近接している重なり位置においてそれらの電極間にあるメムリスティブ素子(206)によって埋められている。
図2Cは、
図2Bに示されているメムリスティブ素子(206)及びオーバーラップしている電極(202、204)の略図である。メムリスティブ素子(206)は、残りの図面を通じてクロスバー交差部に配置されているメモリスタ及び任意の関連する回路を表すために使用されている。
【0023】
図3は、本開示の原理の1例にしたがう、電圧入力の単一ベクトルを有するメムリスティブドット積エンジン(300)を示している。ドット積エンジン(300)は、N個の行電極(304)及びM個の列電極(306)を含むクロスバーアレイ(302)を備えている。クロスバーアレイ(302)中のクロスバー交差部は、メムリスティブ素子(308)を備えている。ドット積エンジン(300)は、行電極(304)に電圧を加えるためのベクトル入力レジスタまたはベクトル入力(部)(310)、及び、列電極(306)中の電流から生じる出力電圧を受け取るためのベクトル出力レジスタまたはベクトル出力(部)(314)を備えている。ドット積エンジン(300)はまた、列電極(306)中の電流を電圧に変換するためのセンス回路(316)を備えている。本開示の原理の1例では、センス回路(316)は、演算増幅器(オペアンプ)(318)及び抵抗(器)(320)を備えており、該センス回路を、読み取り動作用の仮想接地を表すように配置ないし構成することができる。
【0024】
ドット積エンジン(300)はまた、記憶装置として使用されるクロスバーアレイ(302)に関連する他の周辺回路を備えることができる。たとえば、ベクトル入力(部)(310)は、行電極(304)に接続されたドライバを備えることができる。アドレスデコーダを用いて、行電極(304)を選択して、該選択された行電極(304)に対応するドライバを作動させることができる。選択された行電極(304)用のドライバは、ベクトル−行列乗算またはクロスバーアレイ(302)のメムリスティブ素子(308)内の抵抗値を設定する処理に対応する異なる電圧で、対応する行電極(304)を駆動することができる。同様のドライバ及びデコーダ回路を、列電極(306)用に含めることができる。また、制御回路を用いて、ドット積エンジン(300)の入力における電圧の印加、及び、該エンジン(300)の出力における電圧の読み取りを制御することができる。デジタル−アナログ回路(たとえばデジタルアナログ変換器)及びアナログ−デジタル回路(たとえばアナログデジタル変換器)を、ベクトル入力(部)(310)及びベクトル出力(部)(314)において使用することができる。行電極(304)及び列電極(306)への入力信号をアナログまたはデジタルとすることができる。半導体処理技術を用いて、上記の例のクロスバーアレイ(302)と同じ一体化された構造もしくは半導体ダイ中に、上記の周辺回路を製作することができる。
【0025】
動作時、ドット積エンジン(300)によって、N×Mのクロスバーアレイ(302)の行(304)に沿って一組の電圧V
I(310)を加え、列(306)を流れる電流を集めて(収集して)、出力電圧V
0(314)を測定することによって、ベクトルと行列との乗算(ベクトル行列乗算)を実行することができる。それぞれの列において、すべての入力電圧(310)が対応するメムリスタンス(1/G
ij)で重み付けされ、それらの重み付けされた総計が出力電圧(314)に反映される。オームの法則を用いて、入力電圧(310)と出力電圧(314)の間の関係を、{V
0}
T=−{V
I}
T[G]Rsの形式のベクトル行列乗算によって表すことができ、ここで、G
ijは、クロスバーアレイ(302)のコンダクタンス(抵抗の逆数)によって決定されるN×M行列である。Rsは、センス増幅器(センスアンプ)の抵抗値であり、Tは、M×1及びN×1ベクトル(それぞれ、V
0及びV
I)の転置を表している。負号があるのは、センス増幅器において負帰還オペアンプ(回路)を使用しているためである。上記から、ベクトル処理のために、より具体的には、値{b
i}
Tの第1のベクトルに値[a
ij]の行列を乗じて値{c
j}
Tの第2のベクトルを得るために、ドット積エンジン(300)を使用できるということになる。ここで、i=1、Nであり、j=1、Mである。ベクトル処理を以下のようにより詳しく記述することができる。
【数1】
【0026】
本開示の原理を用いるベクトル処理すなわちベクトル乗算は、一般に、値[a
ij]の行列をクロスバーアレイ(302)にマッピングすること、換言すれば、コンダクタンス値G
ijをアレイ(302)のクロスバー交差部にプログラムする(たとえば書込む)ことから開始する。
図3をさらに参照すると、1例では、コンダクタンス値G
ijの各々は、クロスバー交差部(
図2の210)の各々に順次もしくは連続的に電圧降下を生じさせることによって設定される。たとえば、クロスバーアレイ(302)の2番目の行にV
Row2に等しい電圧を加え、及び、クロスバーアレイ(302)の3番目の列にV
Col3に等しい電圧を加えることによって、コンダクタンス値G
2,3を設定することができる。
図3を参照すると、1例では、電圧入力V
Row2は、j=1の列電極(1番目の列電極)に隣接する2番目の行電極の位置(330)において該2番目の行に加えられる。電圧入力V
Col3は、i=1またはi=Nの位置に隣接する3番目の列電極に加えられる。ある列電極(306)に電圧を加えるときは、その電極用のセンス回路(316)をオフにし(または切り離し)、電圧ドライバをオンにする(または接続する)ことができることに留意されたい。電圧差V
Row2−V
Col3は、一般に、交差部に配置されたメムリスティブ素子(308)の特性に基づいて、生じたコンダクタンス値G
2,3を決定する。このアプローチにしたがう場合は、たとえば、選択されていない全ての列(306)及び行(304)をフローティング(状態)にし、または選択されていない全ての列(306)及び行(304)を接地することを含むいくつかの方式のうちの1つにしたがって、選択されていない列(306)及び行(304)に対処することができる。他の方式は、列(306)を接地すること、または一部の列(306)を接地することを含む。選択されていない全ての列(306)及び行(304)を接地することは、該方式が、選択されていない列(306)及び行(304)を絶縁ないし分離して、選択されている出力列へのスニークパス電流を最小限にするのに役立つという点で有益である。ドット積エンジン(300)の動作は、プログラミングの後に、入力電圧(310)のベクトルを加えて、出力電圧(314)のベクトルを読み取ることに進む。
【0027】
本開示の原理の1例によれば、ドット積エンジン(300)に使用されるメモリスタは、線形の電流−電圧関係を有する。線形の電流−電圧関係は、ベクトル乗算処理においてより高い精度を可能にする。しかしながら、線形性のメモリスタを有するクロスバーアレイ(302)は、特に、クロスバーアレイ(302)のサイズが所定のサイズ(たとえば32×32)よりも大きいときに、アレイ(302)のプログラミング中に大きなスニークパス電流を生じる傾向がある。そのような場合には、選択されたメモリスタを流れる電流は、該メモリスタをプログラムするのには十分ではない場合がある。なぜなら、電流の大部分はスニークパスを流れるからである。あるいは、メモリスタは、スニークパスのために不正確な値にプログラムされる場合がある。このような例において、特に、より大きなアレイが望まれるときに、スニークパス電流を低減するために、非線形性のセレクタまたはトランジスタ(たとえば、ノーマリーオン(normally ON:通常は導通状態)デプレッションモードトランジスタ)などのアクセスデバイスを、メムリスティブ素子(308)内に組み込むかまたはメムリスティブ素子(308)と共に使用することができ、これによって、該アレイ内のスニークパス電流を最小限にすることができる。より具体的には、メムリスティブ素子(308)は、たとえば、メモリスタ、またはメモリスタ及びセレクタ、またはメモリスタ及びトランジスタを含むメムリスティブデバイスを含むものとして広義に解釈されるべきである。
【0028】
図4A及び
図4Bは、本開示の原理の1例にしたがう、クロスバーアレイ(
図3の302)の上側の層の電極(
図3の304)における電圧分布(400)と下側の層の電極(
図3の306)における電圧分布(420)をそれぞれ示している。具体的には、プログラミング動作中に上側の層の行電極(
図3の304)における電圧分布と下側の層の列電極(
図3の306)における電圧分布を示すために、
図3に示されているクロスバーアレイに類似の256×256の行列をなすクロスバーアレイ(
図3の302)が使用される。
図4A及び
図4Bにおいて、入力条件として、入力ベクトル(
図3の310)においてそれぞれの行電極(
図3の304)に0.5Vが加えられ、出力ベクトル(
図3の314)において接地電位が加えられて、センス回路(
図3の316)はオフにされる(または切り離される)。
図4A及び
図4Bに示されているように、電圧分布は上側の表面と下側の表面に生じ、これは信号劣化を引き起こす。たとえば、上側の層の行電極(
図3の304)における電圧分布は、電圧入力ベクトル(
図3の310)の位置において0.50ボルト(402)から開始して、i=256、j=256の位置の近傍において約0.25ボルトに低下する。この低下は、0.50ボルト、0.45ボルト、0.40ボルト、0.35ボルト、及び0.30ボルトを表す曲線(等高線)によって明らかにされているように、上側の表面全体にわたって徐々に起こっている。同様に、下側の層の列電極(
図3の306)については、N番目の行に隣接する加えられた接地電位すなわち0.00ボルト(422)、0.05ボルト、0.10ボルト、0.15ボルト、0.20ボルト、及び0.25ボルトを表す曲線(等高線)によって明らかにされているように、信号は、列電極(
図3の306)の表面全体にわたって徐々に低下している。これらの分布から明らかなように、クロスバーアレイ(
図3の302)のうちの広い領域が、該アレイ(
図3の302)の上側の表面と下側の表面において完全な0.50ボルトのバイアスを受けず、これは、クロスバー交差部(
図2の210)にあるメムリスティブ素子(
図3の308)に意図した電圧降下が生じない可能性があることを意味する。以下の例は、上記の信号劣化(もしくは信号低下)に対処する。
【0029】
図5は、本開示の原理の1例にしたがう、電圧入力のダブルベクトルを有するダブルバイアスメムリスティブドット積エンジン(500)を示している。ドット積エンジン(500)は、N個の行電極(504)及びM個の列電極(506)を含むクロスバーアレイ(502)を備えている。クロスバーアレイ(502)中のクロスバー交差部(
図2の210)はメムリスティブ素子(508)を備えている。ドット積エンジン(500)は、行電極(504)に電圧を加えるための第1のベクトル入力レジスタまたは第1のベクトル入力(部)(510)を備えている。行電極(504)に電圧を加えるための第2のベクトル入力レジスタまたは第2のベクトル入力(部)(512)もドット積エンジン(500)に組み込まれている。ドット積エンジン(500)はさらに、列電極(506)中の電流から生じる出力電圧を受け取るためのベクトル出力レジスタまたはベクトル出力(部)(514)を備えている。ドット積エンジン(500)はまた、列電極(506)中の電流を電圧に変換するためのセンス回路(516)を備えている。本開示の原理の1例では、センス回路(516)は、演算増幅器(オペアンプ)(518)及び抵抗(器)(520)を備えており、該センス回路を、読み取り動作用の仮想接地を表すように配置ないし構成することができる。上記の例と同様に、ドット積エンジン(500)はまた、記憶装置として使用されるクロスバーアレイ(502)に関連する周辺回路を備えることができる。該周辺回路には、たとえば、ドライバ、デコーダ、DAC、ADC、及び制御回路が含まれ、これらの全てを、半導体処理技術を用いて、上記の例のクロスバーアレイ(
図3の302)と同じ一体化された構造もしくは半導体ダイ中に製作することができる。
【0030】
本開示の原理にしたがう1例では、電圧入力の第1の入力ベクトル(510)が、j=1の列電極に隣接する行電極(504)に加えられるかまたは接続され、電圧入力の第2の入力ベクトル(512)が、j=Mの列電極に隣接する行電極(504)に加えられるかまたは接続される。追加の例では、電圧入力の第1及び第2の入力ベクトル(510、512)が、たとえば、j=(1/4)M及びj=(3/4)Mの列などの、クロスバーアレイ(502)の異なる位置に配置される。他の例では、ベクトル入力の3以上の入力ベクトル(510、512)を使用することができる。一般に、それらの電圧入力は行毎に異なる。しかしながら、
図5では、単一のバイアス方式に対するダブルバイアス方式の利点をより明確に示すために、各行(504)に対して同じ電圧が使用されている。さらに、第1の入力ベクトル(510)が電圧入力{V
iI}(i=1、N)を含んでいる場合には、一般に、第2の入力ベクトル(512)は同じ電圧入力を含んでいる。一般に、どの列電極(506)が、それらの入力(たとえば、
図5に示されているj=1及びj=Mの列電極)に隣接しているか、及び、たとえば3つ以上の入力ベクトルを有しているかに関係なく、同じ方法が適用される。
【0031】
動作時、上記と同様に、コンダクタンス値G
ijをアレイ(502)のクロスバー交差部にプログラムする(たとえば書込む)ことによって、値[a
ij]の行列がクロスバーアレイ(502)にマッピングされる。1例では、コンダクタンス値G
ijの各々は、クロスバー交差部(
図2の210)の各々に順次もしくは連続的に電圧降下を生じさせることによって設定される。たとえば、クロスバーアレイ(502)の2番目の行にV
Row2に等しい電圧を加え、及び、クロスバーアレイ(502)の3番目の列にV
Col3に等しい電圧を加えることによって、コンダクタンス値G
2,3を設定することができる。
図5を参照すると、1例では、電圧入力V
Row2は、j=1の列電極に隣接する2番目の行電極の第1の位置(530)、及びj=Mの列電極に隣接する2番目の行電極の第2の位置(532)の2つの位置において2番目の行に加えられる。電圧入力V
Col3は、i=1またはi=Nの位置に隣接する3番目の列電極に加えられる。ある列電極(506)に電圧を加えるときは、その電極用のセンス回路(516)をオフにし(または切り離し)、電圧ドライバをオンにする(または接続する)ことができることに留意されたい。電圧差V
Row2−V
Col3は、一般に、交差部に配置されたメムリスティブ素子(508)の特性に基づいて、生じたコンダクタンス値G
2,3を決定する。このアプローチにしたがう場合は、たとえば、選択されていない全ての列(506)及び行(504)をフローティング(状態)にし、または選択されていない全ての列(506)及び行(504)を接地することを含むいくつかの方式のうちの1つにしたがって、選択されていない列(506)及び行(504)に対処することができる。他の方式は、列(506)を接地すること、または一部の列(506)を接地することを含む。選択されていない全ての列(506)及び行(504)を接地することは、該方式が、選択されていない列(506)及び行(504)を絶縁ないし分離して、選択されている出力列(506)へのスニークパス電流を最小限にするのに役立つという点で有益である。ドット積エンジン(500)の動作は、プログラミングの後に、アレイ(502)のj=1の列電極に隣接する対応する行電極(504)に入力電圧の第1のベクトル(510)を加え、及び、アレイ(502)のj=Mの列電極(506)に隣接する対応する行電極(504)に入力電圧の第2のベクトル(512)を加えて、出力電圧のベクトル(514)を読み取ることに進む。
【0032】
図6A及び
図6Bは、本開示の原理の1例にしたがう、クロスバーアレイ(
図5の502)の上側の層の電極(
図5の504)における電圧分布(600)と下側の層の電極(
図5の506)における電圧分布(620)をそれぞれ示している。具体的には、プログラミング動作中に上側の層の行電極(
図5の504)における電圧分布と下側の層の列電極(
図5の506)における電圧分布を示すために、
図5(及び後述の
図7)に示されているクロスバーアレイに類似の256×256の行列をなすクロスバーアレイ(
図5の502)が使用される。入力条件として、入力ベクトル(
図5の510、512)においてそれぞれの行に0.5Vが加えられ、出力ベクトル(
図5の514)において接地電位が加えられて、センス回路(
図5の516)はオフにされる(または切り離される)。一番上の行電極すなわち1番目の行電極(
図5の504)に隣接する列電極(
図5の506)も接地電位(グランド)にバイアスされる。
図6A及び
図6Bに示されているように、電圧分布は上側の表面と下側の表面に生じ、これは信号劣化を引き起こす。たとえば、上側の層の行電極(
図5の504)における電圧分布は、電圧入力ベクトル(
図5の510、512)の位置において0.50ボルト(602、612)から開始して、i=1、j=128、及び、i=256、j=128の行及び列電極(
図5の504、506)の位置の近傍において約0.40ボルトに低下する。この低下は、0.50ボルト、0.48ボルト、0.46ボルト、0.44ボルト、0.42ボルト、及び0.40ボルトを表す曲線(等高線)によって明らかにされているように、上側の表面全体にわたって徐々に起こっている。同様に、下側の層の列電極(
図5の506)については、1番目とN番目の行に隣接する加えられた接地電位すなわち0.00ボルト(622、624)、0.02ボルト、0.04ボルト、0.06ボルト、0.08ボルト、及び0.10ボルトを表す曲線(等高線)によって明らかにされているように、信号は、列電極(
図5の506)の表面全体にわたって徐々に低下している。
【0033】
これらの分布から明らかなように、ダブルバイアス電圧入力方式は、上記の単一バイアス入力方式に対して少なくとも2つの点に関して精度の向上をもたらす。第1に、信号劣化は、概ね対称的であって、最大の劣化(低下)は、(単一バイアス方式の場合に隅の領域の近くで起こるのとは異なり)上側の表面と下側の表面の両方においてアレイ(
図5の502)の中心(中央)の近くで起こる。第2に、ダブルバイアス方式では、上側及び下側の表面における最大の信号劣化(信号低下)がより小さい。たとえば、ダブルバイアス方式では、上側及び下側の表面の各々における最大の信号劣化(信号低下)は約0.1ボルトであるが、単一バイアス方式では、最大の信号劣化(信号低下)は、約0.25ボルトである。
【0034】
図7A及び
図7Bは、上記の2つの例におけるクロスバーアレイの電圧差を示している。具体的には、
図7Aは、
図4A及び
図4Bにそれぞれ示されている上側(
図4の400)の電圧分布と下側(
図4の420)の電圧分布間の電圧差(700)の曲線(等高線)を示しており、
図7Bは、
図6A及び
図6Bにそれぞれ示されている上側(
図6の600)の電圧分布と下側(
図6の620)の電圧分布間の電圧差(720)の曲線(等高線)を示している。これらの電圧差(これは、プログラミング中のメムリスティブ素子にかかる電圧を表すことができる)の低下の分布から理解されるように、ダブルバイアス方式は、上側の表面と下側の表面間で約0.20ボルト(0.5ボルト−0.3ボルト)の最大低下を生じ、一方、単一バイアス方式は、約0.3ボルト(0.5ボルト−0.2ボルト)の最大低下を生じる。さらに、ダブルバイアス方式では、最大低下は、クロスバーアレイ(
図5の502)の中心部で起こっているが、単一バイアス方式では、最大低下は、ダブルバイアス方式と比べると、クロスバーアレイの比較的広い部分(該アレイの斜め上側の大部分)にわたって起こっている。したがって、ダブルバイアス方式は、平均誤差を改善し、これによって、より密度の高いクロスバーアレイを、データの保存中またはドット積計算の実行中に正確に動作させる能力を高めることが可能である。さらに、誤差は、アレイの表面全体にわたって空間的に対称であるため、誤差をモデル化して、DPE(
図5の500)の出力において補償することができる。
【0035】
図8は、本開示の原理の1例にしたがう、電圧入力のダブルベクトル(810、812)及び出力のダブルベクトル(814、822)を有するダブルバイアスメムリスティブドット積エンジン(800)を示している。ドット積エンジン(800)は、N個の行電極(804)及びM個の列電極(806)を含むクロスバーアレイ(802)を備えている。クロスバーアレイ(802)中のクロスバー交差部はメムリスティブ素子(808)を備えている。ドット積エンジン(800)は、行電極(804)に電圧を加えるための第1のベクトル入力レジスタまたは第1のベクトル入力(部)(810)を備えている。行電極(804)に電圧を加えるための第2のベクトル入力レジスタまたは第2のベクトル入力(部)(812)もドット積エンジン(800)に組み込まれている。ドット積エンジン(800)はさらに、列電極(806)中の電流から生じる出力電圧を受け取るための第1のベクトル出力レジスタまたは第1のベクトル出力(部)(814)及び第2のベクトル出力レジスタまたは第2のベクトル出力(部)(822)を備えている。ドット積エンジン(800)はまた、列電圧(806)中の電流を電圧に変換するためのセンス回路(816)を備えている。本開示の原理の1例では、センス回路(816)は、演算増幅器(オペアンプ)(818)及び抵抗(器)(820)を備えており、該センス回路を、読み取り動作用の仮想接地を表すように配置ないし構成することができる。上記の例と同様に、ドット積エンジン(800)はまた、記憶装置として使用されるクロスバーアレイ(802)に関連する周辺回路を備えることができる。該周辺回路には、たとえば、ドライバ、デコーダ、DAC、ADC、及び制御回路が含まれ、これらの全てを、半導体処理技術を用いて、上記の例のクロスバーアレイ(
図3の302)と同じ一体化された構造もしくは半導体ダイ中に製作することができる。
【0036】
ドット積エンジン(800)の動作は上記の動作に類似している。上記と同様にして、値[a
ij]の行列がクロスバーアレイ(802)にマッピングされる(たとえば、コンダクタンス値G
ijの各々が、クロスバー交差部の各々に順次もしくは連続的に電圧降下を生じさせることによって設定される)。ドット積エンジン(800)の動作は、プログラミングの後に、アレイ(802)のj=1の列電極(806)に隣接する対応する行電極(804)に入力電圧の第1のベクトル(810)を加え、及び、アレイ(802)のj=Mの列電極(806)に隣接する対応する行電極(804)に入力電圧の第2のベクトル(812)を加えることに進む。出力電圧が、第1のベクトル出力レジスタまたは第1のベクトル出力(部)(814)、及び、第2のベクトル出力レジスタまたは第2のベクトル出力(部)(822)において読み取られる。第1の出力ベクトル部(814)と第2の出力ベクトル部(822)において読み取られた電圧を加える(加算する)ことによって、行列乗算の最終結果が得られる。
【0037】
図9には、本開示の原理の1例にしたがう、クロスバーアレイ(
図5の502)を有するダブルバイアスメムリスティブドット積エンジン(
図5の500)を用いるベクトル処理の方法(900)が示されている。いくつかの例によれば、方法(900)は、メムリスティブ記憶デバイスのクロスバーアレイ(
図5の502)を提供するステップ(ブロック902)を含むことができる。たとえば、クロスバーアレイ(
図5の502)は、メモリ素子(記憶素子)のN×M個のグリッド(格子)を形成するためのN個の行電極(
図5の504)及びM個の列電極(
図5の506)を含むことができる。各行電極(
図5の504)と各列電極(
図5の506)の交差部は、メモリ素子を画定し、この場合、メモリ素子は、メムリスティブ記憶デバイス(
図5の508)を含む(またはメムリスティブ記憶デバイスから構成される)。方法(900)はまた、いくつかのベクトル入力レジスタ(
図5の510、512)及びいくつかのベクトル出力レジスタ(
図5の514、
図8の822)を提供するステップ(ブロック904)を含む。たとえば、第1のベクトル入力レジスタ(
図5の510)は、N個の行電極(
図5の504)の各々に第1の電圧入力を供給する。さらに、いくつかの例では、第2のベクトル入力レジスタ(
図5の512)は、N個の行電極(
図5の504)の各々に第2の電圧入力を供給する。さらに、第1のベクトル出力レジスタ(
図5の514)は、M個の列電極(
図5の506)の各々から電圧出力を受け取る。方法(900)はさらに、クロスバーアレイ(
図5の502)内のN×M個のメモリ位置に、N×M行列の行列値に対応するメムリスタンス値を設定するステップ(ブロック906)を含むことができる。たとえば、プログラミング電圧(プログラム用電圧)を、アレイ(
図5の502)内のN×M個のメモリ位置のクロスバー交差部に対応する行電極及び列電極(
図5の504、506)に順次もしくは連続的に加えることができる。方法(900)はさらに、N×1行列の値に対応する入力電圧を設定するステップ(ブロック908)を含むことができる。該入力電圧は、N×M行列の値に乗じられるN×1行列の値を表している。方法(900)はさらに、N個の行電極(
図5の504)の各々の2つの位置に電圧入力を加えるステップ(ブロック910)を含むことができる。たとえば、N×1行列内の第1の値に対応する電圧入力を、クロスバーアレイ(
図5の502)内の第1の行の左端部及び右端部に加えることができる。最後に、方法(900)は、M個の電圧出力(部)(
図5の514)における出力電圧を決定するステップ(ブロック912)を含むことができる。出力電圧の各々は、N×M行列とN×1ベクトルの行と列の乗算(結果)に対応する。いくつかの例では、出力電圧を決定するステップ(ブロック912)は、抵抗器(
図5の520)を備える抵抗回路網による乗算を含むことができる。1例では、電圧出力(
図5の514)を、列電極(
図5の506)を流れる電流が抵抗器(または抵抗素子ないし抵抗デバイス)を流れるようにし、これによって、その電圧をオームの法則を用いて決定することを可能にするセンス回路(
図5の516)を用いて決定することができる。
【0038】
本明細書では、本発明によるシステム及び方法のいくつかの側面が、本開示の原理のいくつかの例にしたがう方法、装置(システム)及びコンピュータプログラム製品のフローチャート及び/又はブロック図を参照して説明されている。該フローチャート及び該ブロック図の各ブロック、並びに、該フローチャート中のブロックと該ブロック図中のブロックとの組み合わせを、コンピュータ使用可能プログラムコードによって実施することができる。該コンピュータ使用可能プログラムコードを、汎用コンピュータのプロセッサ、専用コンピュータ、または他のプログラム可能なデータ処理装置に提供して、該コンピュータ使用可能プログラムコードが、たとえばコンピューティングシステム(
図1の100)のプロセッサ(
図1の101)または他のプログラム可能なデータ処理装置によって実行されたときに、該フローチャート及び/又はブロック図の1つもしくは複数のブロックで指定ないし規定されている機能もしくは動作を実施するようにするマシン(装置)を生成することができる。1例では、該コンピュータ使用可能プログラムコードを、該コンピュータプログラム製品の一部であるコンピュータ可読記憶媒体内に具現化することができる。1例では、該コンピュータ可読記憶媒体は、非一時的なコンピュータ可読媒体である。
【0039】
上記の記述は、開示されている原理のいくつかの例を図示し及び説明するために提示されたものである。この記述は、それらの原理を網羅することも、それらの原理を開示した形態そのものに限定することも意図していない。上記の教示に照らして多くの修正及び変更が可能である。